--- linux-3.5.0.orig/dropped.txt +++ linux-3.5.0/dropped.txt @@ -0,0 +1,13 @@ +This is the list of patches which have been dropped from Q after the +3.5-rc2 rebase: + +UBUNTU: SAUCE: dell-laptop: rfkill blacklist Dell XPS 13z, 15 + - Rfkill code was removed in v3.5-rc1, this SAUCE patch no longer applies + commit a6c2390cd6d2083d27a2359658e08f2d3df375ac + Author: Matthew Garrett + Date: Fri Jun 1 12:46:56 2012 -0400 + + dell-laptop: Remove rfkill code + +UBUNTU: SAUCE: (no-up) swap: Add notify_swap_entry_free callback for compcache + - We no longer carry the ubuntu/compcache driver, drop this no-up SAUCE patch --- linux-3.5.0.orig/Makefile +++ linux-3.5.0/Makefile @@ -1,7 +1,7 @@ VERSION = 3 PATCHLEVEL = 5 -SUBLEVEL = 0 -EXTRAVERSION = +SUBLEVEL = 7 +EXTRAVERSION = .7 NAME = Saber-toothed Squirrel # *DOCUMENTATION* @@ -349,14 +349,23 @@ 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 LINUXINCLUDE when you must reference the include/ directory. # Needed to be compatible with the O= option -LINUXINCLUDE := -I$(srctree)/arch/$(hdr-arch)/include \ +LINUXINCLUDE := $(UBUNTUINCLUDE) -I$(srctree)/arch/$(hdr-arch)/include \ -Iarch/$(hdr-arch)/include/generated -Iinclude \ $(if $(KBUILD_SRC), -I$(srctree)/include) \ -include $(srctree)/include/linux/kconfig.h +# 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 \ @@ -504,7 +513,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/ @@ -896,6 +905,7 @@ $(error Headers not exportable for the $(SRCARCH) architecture)) $(Q)$(MAKE) $(hdr-inst)=include $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= PHONY += headers_check_all headers_check_all: headers_install_all @@ -905,6 +915,7 @@ headers_check: headers_install $(Q)$(MAKE) $(hdr-inst)=include HDRCHECK=1 $(Q)$(MAKE) $(hdr-inst)=arch/$(hdr-arch)/include/asm $(hdr-dst) HDRCHECK=1 + $(Q)$(MAKE) $(hdr-inst)=ubuntu/include dst=include oldheaders= HDRCHECK=1 # --------------------------------------------------------------------------- # Modules @@ -1003,11 +1014,14 @@ clean: rm-files := $(CLEAN_FILES) clean-dirs := $(addprefix _clean_, . $(vmlinux-alldirs) Documentation samples) -PHONY += $(clean-dirs) clean archclean +PHONY += $(clean-dirs) clean archclean vmlinuxclean $(clean-dirs): $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@) -clean: archclean +vmlinuxclean: + $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean + +clean: archclean vmlinuxclean # mrproper - Delete all generated files, including .config # @@ -1234,7 +1248,6 @@ endif # KBUILD_EXTMOD clean: $(clean-dirs) - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/link-vmlinux.sh clean $(call cmd,rmdirs) $(call cmd,rmfiles) @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ --- linux-3.5.0.orig/MAINTAINERS +++ linux-3.5.0/MAINTAINERS @@ -2663,7 +2663,7 @@ F: drivers/net/ethernet/i825xx/eexpress.* ETHERNET BRIDGE -M: Stephen Hemminger +M: Stephen Hemminger L: bridge@lists.linux-foundation.org L: netdev@vger.kernel.org W: http://www.linuxfoundation.org/en/Net:Bridge @@ -4385,7 +4385,7 @@ MARVELL GIGABIT ETHERNET DRIVERS (skge/sky2) M: Mirko Lindner -M: Stephen Hemminger +M: Stephen Hemminger L: netdev@vger.kernel.org S: Maintained F: drivers/net/ethernet/marvell/sk* @@ -4630,7 +4630,7 @@ F: drivers/infiniband/hw/nes/ NETEM NETWORK EMULATOR -M: Stephen Hemminger +M: Stephen Hemminger L: netem@lists.linux-foundation.org S: Maintained F: net/sched/sch_netem.c @@ -5066,6 +5066,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 @@ -5635,7 +5642,7 @@ F: drivers/block/brd.c RANDOM NUMBER DRIVER -M: Matt Mackall +M: Theodore Ts'o" S: Maintained F: drivers/char/random.c --- linux-3.5.0.orig/debian/control +++ linux-3.5.0/debian/control @@ -0,0 +1,852 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.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.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.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.5.0 + This package provides the various documents in the 3.5.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-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-27 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +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-3.5.0-27 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-27 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-27 on + 32 bit x86. + + +Package: linux-image-3.5.0-27-generic +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 | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 32 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 32 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-image-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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-image-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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-image-3.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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-image-3.5.0-27-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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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: kernel-image-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: kernel-image +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: Linux kernel binary image for the Debian installer + This package contains the kernel image for the Debian installer + boot images. It does _not_ provide a usable kernel for your full + Debian system. + +Package: nic-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: nic-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di, virtio-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Network interface support + +Package: nic-shared-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: nic-shared-modules +Depends: kernel-image-3.5.0-27-generic-di, crypto-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: nic shared modules + This package contains modules which support nic modules + +Package: serial-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: serial-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Serial port support + +Package: ppp-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: ppp-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di, serial-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PPP (serial port) networking support + +Package: pata-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: pata-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PATA support modules + +Package: firewire-core-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: firewire-core-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Firewire (IEEE-1394) Support + +Package: scsi-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: scsi-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: SCSI storage support + +Package: plip-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: plip-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di, parport-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PLIP (parallel port) networking support + +Package: floppy-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: floppy-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Floppy driver support + +Package: fat-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: fat-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: FAT filesystem support + This includes Windows FAT and VFAT support. + +Package: nfs-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: nfs-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: NFS filesystem drivers + Includes the NFS client driver, and supporting modules. + +Package: md-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: md-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Multi-device support (raid, device-mapper, lvm) + +Package: multipath-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: multipath-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: DM-Multipath support + This package contains modules for device-mapper multipath support. + +Package: usb-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: usb-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Core USB support + +Package: pcmcia-storage-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: pcmcia-storage-modules +Depends: kernel-image-3.5.0-27-generic-di, scsi-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PCMCIA storage support + +Package: fb-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: fb-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Framebuffer modules + +Package: input-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: input-modules +Depends: kernel-image-3.5.0-27-generic-di, usb-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Support for various input methods + +Package: mouse-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: mouse-modules +Depends: kernel-image-3.5.0-27-generic-di, input-modules-3.5.0-27-generic-di, usb-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: Mouse support + This package contains mouse drivers for the Linux kernel. + +Package: irda-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: irda-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Support for Infrared protocols + +Package: parport-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: parport-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Parallel port support + +Package: nic-pcmcia-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: nic-pcmcia-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di, nic-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PCMCIA network interface support + +Package: pcmcia-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: pcmcia-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: PCMCIA Modules + +Package: nic-usb-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: nic-usb-modules +Depends: kernel-image-3.5.0-27-generic-di, nic-shared-modules-3.5.0-27-generic-di, usb-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: USB network interface support + +Package: sata-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: sata-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: SATA storage support + +Package: crypto-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: crypto-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: crypto modules + This package contains crypto modules. + +Package: squashfs-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: squashfs-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: squashfs modules + This package contains squashfs modules. + +Package: speakup-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: speakup-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: speakup modules + This package contains speakup modules. + +Package: virtio-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: virtio-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: VirtIO Modules + Includes modules for VirtIO (virtual machine, generally kvm guests) + +Package: fs-core-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: fs-core-modules, jfs-modules, reiserfs-modules, xfs-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Base filesystem modules + This includes jfs, reiserfs and xfs. + +Package: fs-secondary-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: fs-secondary-modules, ntfs-modules, hfs-modules +Depends: kernel-image-3.5.0-27-generic-di, fat-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Extra filesystem modules + This includes support for Windows NTFS and MacOS HFS/HFSPlus + +Package: storage-core-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: storage-core-modules, loop-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +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: block-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: block-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di, parport-modules-3.5.0-27-generic-di, virtio-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Block storage devices + This package contains the block storage devices, including DAC960 and + paraide. + +Package: message-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: message-modules +Depends: kernel-image-3.5.0-27-generic-di, storage-core-modules-3.5.0-27-generic-di, scsi-modules-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: Fusion and i2o storage modules + This package containes the fusion and i2o storage modules. + +Package: vlan-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: vlan-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: extra +Description: vlan modules + This package contains vlan (8021.Q) modules. + +Package: ipmi-modules-3.5.0-27-generic-di +XC-Package-Type: udeb +Provides: ipmi-modules +Depends: kernel-image-3.5.0-27-generic-di +Architecture: i386 +XB-Kernel-Version: 3.5.0-27-generic +Section: debian-installer +Priority: standard +Description: ipmi modules --- linux-3.5.0.orig/debian/copyright +++ linux-3.5.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.5.0.orig/debian/compat +++ linux-3.5.0/debian/compat @@ -0,0 +1 @@ +5 --- linux-3.5.0.orig/debian/rules +++ linux-3.5.0/debian/rules @@ -0,0 +1,238 @@ +#!/usr/bin/make -f +# +# $(DEBIAN)/rules for Ubuntu linux +# +# Use this however you want, just give credit where credit is due. +# +# Copyright (c) 2007 Ben Collins +# + +DEBIAN=$(shell awk -F= '($$1 == "DEBIAN") { print $$2 }' $$new; \ + done + flavours="$(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 + cp $(DEBIAN)/control.stub $(DEBIAN)/control + +.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 + + cp $(DEBIAN)/control.stub debian/control.stub + cd $(builddir) && kernel-wedge gen-control > $(CURDIR)/debian/control --- linux-3.5.0.orig/debian/changelog +++ linux-3.5.0/debian/changelog @@ -0,0 +1,12146 @@ +linux (3.5.0-27.46) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1159991 + + [ Steve Conklin ] + + * Start New Release + + [ Upstream Kernel Changes ] + + * crypto: user - fix info leaks in report API + - LP: #1156790, #1156795, #1156799 + - CVE-2013-2546 + * brcmsmac: fix mismatch in number of custom regulatory rules + - LP: #1156769 + + [ Xiangliang Yu ] + + * SAUCE: PCI: define macro for marvell vendor ID + - LP: #1159863 + * SAUCE: PCI: fix system hang issue of Marvell SATA host controller + - LP: #1159863 + + -- Steve Conklin Mon, 25 Mar 2013 14:32:06 -0500 + +linux (3.5.0-27.45) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 15:26:20 -0500 + +linux (3.5.0-27.44) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 10:26:04 -0500 + +linux (3.5.0-27.43) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1156821 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS_PRECLAIM + - LP: #1105230 + + [ Brad Figg ] + + * Start new release + + [ Kamal Mostafa ] + + * SAUCE: alx: use github.com/qca/alx repo + - LP: #1154238 + + [ Luis Henriques ] + + * [Config] CONFIG_NFS_V4_1=y + - LP: #1111416 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #1154238 + + [ Upstream Kernel Changes ] + + * Revert "drm: Add EDID_QUIRK_FORCE_REDUCED_BLANKING for ASUS VW222S" + - LP: #1144961 + * genirq: Avoid deadlock in spurious handling + - LP: #1144961 + * KVM: s390: Handle hosts not supporting s390-virtio. + - LP: #1144961 + * v4l: Reset subdev v4l2_dev field to NULL if registration fails + - LP: #1144961 + * powerpc/eeh: Fix crash when adding a device in a slot with DDW + - LP: #1144961 + * pcmcia/vrc4171: Add missing spinlock init + - LP: #1144961 + * USB: DWC3: Generate interrupt on each TRB as default option + - LP: #1144961 + * usb: dwc3: gadget: fix skip LINK_TRB on ISOC + - LP: #1144961 + * usb: dwc3: gadget: req->queued must be forced to false in cleanup + - LP: #1144961 + * Purge existing TLB entries in set_pte_at and ptep_set_wrprotect + - LP: #1144961 + * ARM: PXA3xx: program the CSMSADRCFG register + - LP: #1144961 + * ab8500-chargalg: Only root should have write permission on sysfs file + - LP: #1144961 + * USB: option: add and update Alcatel modems + - LP: #1144961 + * uprobes/powerpc: Add dependency on single step emulation + - LP: #1144961 + * drivers/video: fsl-diu-fb: fix pixel formats for 24 and 16 bpp + - LP: #1144961 + * s390/kvm: Fix store status for ACRS/FPRS + - LP: #1144961 + * staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors + - LP: #1144961 + * ALSA: usb-audio: fix Roland A-PRO support + - LP: #1144961 + * x86-32, mm: Rip out x86_32 NUMA remapping code + - LP: #1144961 + * x86-32, mm: Remove reference to resume_map_numa_kva() + - LP: #1144961 + * x86-32, mm: Remove reference to alloc_remap() + - LP: #1144961 + * ALSA: hda - Release assigned pin/cvt at error path of hdmi_pcm_open() + - LP: #1144961 + * ab8500_btemp: Demote initcall sequence + - LP: #1144961 + * Driver core: treat unregistered bus_types as having no devices + - LP: #1144961 + * ALSA: aloop: Fix Oops while PM resume + - LP: #1144961 + * ASoC: wm2200: correct IN2L and IN3L digital mute + - LP: #1144961 + * tty: set_termios/set_termiox should not return -EINTR + - LP: #1144961 + * ARM: i.MX25: clk: parent per5_clk to AHB clock + - LP: #1144961 + * hrtimer: Prevent hrtimer_enqueue_reprogram race + - LP: #1144961 + * staging: comedi: check s->async for poll(), read() and write() + - LP: #1144961 + * ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1144961 + * timeconst.pl: Eliminate Perl warning + - LP: #1144961 + * p54usb: corrected USB ID for T-Com Sinus 154 data II + - LP: #1144961 + * rtlwifi: rtl8192cu: Fix NULL dereference BUG when using new_id + - LP: #1144961 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1144961 + * USB: storage: properly handle the endian issues of idProduct + - LP: #1144961 + * ALSA: rme32.c irq enabling after spin_lock_irq + - LP: #1144961 + * ALSA: ali5451: remove irq enabling in pointer callback + - LP: #1144961 + * ARM: 7643/1: sched: correct update_sched_clock() + - LP: #1144961 + * ALSA: hda - Workaround for silent output on Sony Vaio VGC-LN51JGB with + ALC889 + - LP: #1144961 + * x86: Hyper-V: register clocksource only if its advertised + - LP: #1144961 + * USB: option: add Yota / Megafon M100-1 4g modem + - LP: #1144961 + * USB: serial: fix null-pointer dereferences on disconnect + - LP: #1144961 + * idr: idr_for_each_entry() macro + - LP: #1144961 + * pps: Add pps_lookup_dev() function + - LP: #1144961 + * pps: Use pps_lookup_dev to reduce ldisc coupling + - LP: #1144961 + * pps: Fix a use-after free bug when unregistering a source. + - LP: #1144961 + * USB: option: add Huawei "ACM" devices using protocol = vendor + - LP: #1144961 + * ARM: samsung: fix assembly syntax for new gas + - LP: #1144961 + * USB: ehci-omap: Don't free gpios that we didn't request + - LP: #1144961 + * USB: ehci-omap: Fix autoloading of module + - LP: #1144961 + * USB: usb-storage: unusual_devs update for Super TOP SATA bridge + - LP: #1144961 + * perf tools: Fix build with bison 2.3 and older. + - LP: #1144961 + * serial: imx: Fix recursive locking bug + - LP: #1144961 + * posix-cpu-timers: Fix nanosleep task_struct leak + - LP: #1144961 + * drivercore: Fix ordering between deferred_probe and exiting initcalls + - LP: #1144961 + * NFSv4.1: Don't decode skipped layoutgets + - LP: #1144961 + * umount oops when remove blocklayoutdriver first + - LP: #1144961 + * HID: wiimote: fix nunchuck button parser + - LP: #1144961 + * cgroup: fix exit() vs rmdir() race + - LP: #1144961 + * cpuset: fix cpuset_print_task_mems_allowed() vs rename() race + - LP: #1144961 + * rtlwifi: usb: allocate URB control message setup_packet and data buffer + separately + - LP: #1144961 + * b43: Increase number of RX DMA slots + - LP: #1144961 + * futex: Revert "futex: Mark get_robust_list as deprecated" + - LP: #1144961 + * NLM: Ensure that we resend all pending blocking locks after a reclaim + - LP: #1144961 + * ALSA: hda - hdmi: ELD shouldn't be valid after unplug + - LP: #1144961 + * xen: close evtchn port if binding to irq fails + - LP: #1144961 + * xen: Send spinlock IPI to all waiters + - LP: #1011792, #1144961 + * ALSA: usb: Fix Processing Unit Descriptor parsers + - LP: #1144961 + * inotify: remove broken mask checks causing unmount to be EINVAL + - LP: #1144961 + * fs/block_dev.c: page cache wrongly left invalidated after + revalidate_disk() + - LP: #1144961 + * ocfs2: unlock super lock if lockres refresh failed + - LP: #1144961 + * drivers/video/backlight/adp88?0_bl.c: fix resume + - LP: #1144961 + * powerpc/kexec: Disable hard IRQ before kexec + - LP: #1144961 + * mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may + safely schedule + - LP: #1144961 + * mm: mmu_notifier: make the mmu_notifier srcu static + - LP: #1144961 + * mmu_notifier_unregister NULL Pointer deref and multiple ->release() + callouts + - LP: #1144961 + * mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to + discard all pages + - LP: #1144961 + * tmpfs: fix use-after-free of mempolicy object + - LP: #1144961 + * dca: check against empty dca_domains list before unregister provider + - LP: #1144961 + * ext4: return ENOMEM if sb_getblk() fails + - LP: #1144961 + * ext4: check bh in ext4_read_block_bitmap() + - LP: #1144961 + * quota: autoload the quota_v2 module for QFMT_VFS_V1 quota format + - LP: #1144961 + * ext4: fix possible use-after-free with AIO + - LP: #1144961 + * drm/i915: Fix CAGF for HSW + - LP: #1144961 + * ext4: fix race in ext4_mb_add_n_trim() + - LP: #1144961 + * UBIFS: fix use of freed ubifs_orphan objects + - LP: #1144961 + * UBIFS: fix double free of ubifs_orphan objects + - LP: #1144961 + * drm/radeon/dce6: fix display powergating + - LP: #1144961 + * vgacon/vt: clear buffer attributes when we load a 512 character font + (v2) + - LP: #1144961 + * fbcon: don't lose the console font across generic->chip driver switch + - LP: #1144961 + * drm/usb: bind driver to correct device + - LP: #1144961 + * drm/udl: make usage as a console safer + - LP: #1144961 + * drm/udl: disable fb_defio by default + - LP: #1144961 + * fb: rework locking to fix lock ordering on takeover + - LP: #1144961 + * fb: Yet another band-aid for fixing lockdep mess + - LP: #1144961 + * ext4: fix xattr block allocation/release with bigalloc + - LP: #1144961 + * target: Fix lookup of dynamic NodeACLs during cached demo-mode + operation + - LP: #1144961 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1144961 + * ftrace: Call ftrace cleanup module notifier after all other notifiers + - LP: #1144961 + * drm: don't add inferred modes for monitors that don't support them + - LP: #1144961 + * drm/i915: disable shared panel fitter for pipe + - LP: #1144961 + * drm: Fill depth/bits_per_pixel for C8 format + - LP: #1144961 + * drm: Use C8 instead of RGB332 when determining the format from + depth/bpp + - LP: #1144961 + * drm/i915: add missing \n to UTS_RELEASE in the error_state + - LP: #1144961 + * drm/i915: Set i9xx sdvo clock limits according to specifications + - LP: #1144961 + * drm/i915: inverted brightness quirk for Acer Aspire 4736Z + - LP: #1144961 + * intel/iommu: force writebuffer-flush quirk on Gen 4 Chipsets + - LP: #1144961 + * drm/radeon: remove overzealous warning in hdmi handling + - LP: #1144961 + * x86, efi: Make "noefi" really disable EFI runtime serivces + - LP: #1144961 + * posix-timer: Don't call idr_find() with out-of-range ID + - LP: #1144961 + * ext4: fix free clusters calculation in bigalloc filesystem + - LP: #1144961 + * fs: Fix possible use-after-free with AIO + - LP: #1144961 + * mmc: sdhci-esdhc-imx: fix host version read + - LP: #1144961 + * b43: Fix lockdep splat on module unload + - LP: #1144961 + * ocfs2: fix possible use-after-free with AIO + - LP: #1144961 + * x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS. + - LP: #1144961 + * igb: Remove artificial restriction on RQDPC stat reading + - LP: #1144961 + * ptrace/x86: Introduce set_task_blockstep() helper + - LP: #1144961 + * ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic + - LP: #1144961 + * sunvdc: Fix off-by-one in generic_request(). + - LP: #1144961 + * sparc64: Fix gfp_flags setting in tsb_grow(). + - LP: #1144961 + * bridge: set priority of STP packets + - LP: #1144961 + * xen-netback: correctly return errors from netbk_count_requests() + - LP: #1144961 + * xen-netback: cancel the credit timer when taking the vif down + - LP: #1144961 + * net: fix a compile error when SOCK_REFCNT_DEBUG is enabled + - LP: #1144961 + * ipv4: fix a bug in ping_err(). + - LP: #1144961 + * ipv6: use a stronger hash for tcp + - LP: #1144961 + * ARM: 7635/1: versatile: fix the PCI IRQ regression + - LP: #1144961 + * staging: vt6656: Fix URB submitted while active warning. + - LP: #1144961 + * vlan: adjust vlan_set_encap_proto() for its callers + - LP: #1144961 + * gpio/ich: Add missing spinlock init + - LP: #1144961 + * staging: comedi: ni_labpc: set up command4 register *after* command3 + - LP: #1144961 + * staging: comedi: ni_labpc: correct differential channel sequence for AI + commands + - LP: #1144961 + * tty: Prevent deadlock in n_gsm driver + - LP: #1144961 + * Linux 3.5.7.7 + - LP: #1144961 + * i915_hsw: don't send DP "idle" pattern before "normal" on HSW PORT_A + - LP: #1138700 + * mfd: rtsx: Optimize card detect flow + - LP: #1148892 + * mfd: rtsx: Fix issue that booting OS with SD card inserted + - LP: #1148892 + * drm/radeon: add new AMD ACPI header and update relevant code (v2) + - LP: #1110219 + * drm/radeon: add a license header to radeon_apci.c + - LP: #1110219 + * drm/radeon: track whether the GPU controls the backlight (v2) + - LP: #1110219 + * drm/radeon: rework legacy backlight control + - LP: #1110219 + * drm/radeon: add backlight control for atom devices (v2) + - LP: #1110219 + * drm/radeon: refactor radeon_atif_call + - LP: #1110219 + * drm/radeon: implement radeon_atif_verify_interface + - LP: #1110219 + * drm/radeon: implement wrapper for GET_SYSTEM_PARAMS + - LP: #1110219 + * drm/radeon: implement handler for ACPI event + - LP: #1110219 + * drm/radeon: re-organize the acpi notifier callback + - LP: #1110219 + * ACPI video: allow events handlers to veto the keypress + - LP: #1110219 + * drm/radeon: block the keypress on ATIF events + - LP: #1110219 + * keys: fix race with concurrent install_user_keyrings() + - LP: #1152788 + - CVE-2013-1792 + * mfd: rtsx: Add clock divider hook + - LP: #1153618 + * mfd: rtsx: Implement driving adjustment to device-dependent callbacks + - LP: #1153618 + * mfd: rtsx: Support RTS5227 + - LP: #1153618 + * mmc: rtsx: remove driving adjustment + - LP: #1153618 + * x86/apic: Remove noisy zero-mask warning from + default_send_IPI_mask_logical() + - LP: #1100202 + * signal: always clear sa_restorer on execve + - LP: #1153813 + - CVE-2013-0914 + + -- Steve Conklin Mon, 18 Mar 2013 13:39:54 -0500 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.40) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1133429 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094 + + [ Ian Campbell ] + + * SAUCE: xen/netback: shutdown the ring if it contains garbage. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: netback: correct netbk_tx_err to handle wrap around. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: xen/netback: don't leak pages on failure in + xen_netbk_tx_check_gop. + - LP: #1117331 + - CVE-2013-0217 + * SAUCE: xen/netback: free already allocated memory on failure in + xen_netbk_get_requests + - LP: #1117331 + - CVE-2013-0217 + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + * SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access + failure once + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * Revert "USB: Handle warm reset failure on empty port." + - LP: #1131944 + * xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS + guests. + - LP: #1102374 + - CVE-2013-0190 + * virtio-blk: Don't free ida when disk is in use + - LP: #1119885 + * ioat: Fix DMA memory sync direction correct flag + - LP: #1119885 + * PCI: pciehp: Use per-slot workqueues to avoid deadlock + - LP: #1119885 + * PCI/AER: pci_get_domain_bus_and_slot() call missing required + pci_dev_put() + - LP: #1119885 + * xen/grant-table: correctly initialize grant table version 1 + - LP: #1119885 + * serial:ifx6x60:Delete SPI timer when shut down port + - LP: #1119885 + * tty: 8250_dw: Fix inverted arguments to serial_out in IRQ handler + - LP: #1119885 + * drm/i915: Invalidate the relocation presumed_offsets along the slow + path + - LP: #1119885 + * ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone + - LP: #1119885 + * staging: vt6656: Fix inconsistent structure packing + - LP: #1119885 + * 8250/16?50: Add support for Broadcom TruManage redirected serial port + - LP: #1119885 + * KVM: PPC: Emulate dcbf + - LP: #1119885 + * staging: wlan-ng: Fix clamping of returned SSID length + - LP: #1119885 + * USB: option: blacklist network interface on ONDA MT8205 4G LTE + - LP: #1119885 + * USB: option: add TP-LINK HSUPA Modem MA180 + - LP: #1119885 + * ALSA: hda - Fix mute led for another HP machine + - LP: #1096789, #1119885 + * usb: dwc3: gadget: fix ep->maxburst for ep0 + - LP: #1119885 + * ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled + - LP: #1119885 + * ACPI / processor: Get power info before updating the C-states + - LP: #1119885 + * ARM: DMA: Fix struct page iterator in dma_cache_maint() to work with + sparsemem + - LP: #1119885 + * evm: checking if removexattr is not a NULL + - LP: #1119885 + * ALSA: hda - Add Conexant CX20755/20756/20757 codec IDs + - LP: #1119885 + * ftrace: Be first to run code modification on modules + - LP: #1119885 + * i2c: mxs: Fix type of error code + - LP: #1119885 + * USB: UHCI: fix IRQ race during initialization + - LP: #1119885 + * async: fix __lowest_in_progress() + - LP: #1119885 + * fs/cifs/cifs_dfs_ref.c: fix potential memory leakage + - LP: #1119885 + * ARM: at91: rm9200: remake the BGA as default version + - LP: #1119885 + * Bluetooth: Fix sending HCI commands after reset + - LP: #1119885 + * Bluetooth: Fix incorrect strncpy() in hidp_setup_hid() + - LP: #1119885 + * ath9k_htc: Fix memory leak + - LP: #1119885 + * ath9k: do not link receive buffers during flush + - LP: #1119885 + * ath9k: add a better fix for the rx tasklet vs rx flush race + - LP: #1119885 + * ath9k: fix rx flush handling + - LP: #1119885 + * brcmsmac: increase timer reference count for new timers only + - LP: #1119885 + * ath9k: remove sc->rx.rxbuflock to fix a deadlock + - LP: #1119885 + * ath9k: disable the tasklet before taking the PCU lock + - LP: #1119885 + * ASoC: wm2200: correct mixer values and text + - LP: #1119885 + * mac80211: fix FT roaming + - LP: #1119885 + * mac80211: synchronize scan off/on-channel and PS states + - LP: #1119885 + * efi, x86: Pass a proper identity mapping in efi_call_phys_prelog + - LP: #1119885 + * iwlegacy: fix IBSS cleanup + - LP: #1119885 + * ath9k_hw: fix calibration issues on chainmask that don't include chain + 0 + - LP: #1119885 + * ath9k_hw: fix chain swap setting when setting rx chainmask to 5 + - LP: #1119885 + * mwifiex: fix typo in PCIe adapter NULL check + - LP: #1119885 + * drm/i915: Disable AsyncFlip performance optimisations + - LP: #1119885 + * drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for scanline + waits + - LP: #1119885 + * iommu/intel: disable DMAR for g4x integrated gfx + - LP: #1119885 + * drm/i915: dump UTS_RELEASE into the error_state + - LP: #1119885 + * ALSA: hda - Add a fixup for Packard-Bell desktop with ALC880 + - LP: #1119885 + * drm/radeon: fix cursor corruption on DCE6 and newer + - LP: #1119885 + * radeon_display: Use pointer return error codes + - LP: #1119885 + * drm/radeon: fix error path in kpage allocation + - LP: #1119885 + * drm/radeon: fix a rare case of double kfree + - LP: #1119885 + * x86/msr: Add capabilities check + - LP: #1119885 + * x86, efi: Set runtime_version to the EFI spec revision + - LP: #1119885 + * can: c_can: fix invalid error codes + - LP: #1119885 + * can: ti_hecc: fix invalid error codes + - LP: #1119885 + * can: pch_can: fix invalid error codes + - LP: #1119885 + * ALSA: usb-audio: fix invalid length check for RME and other UAC 2 + devices + - LP: #1119885 + * smp: Fix SMP function call empty cpu mask race + - LP: #1119885 + * IOMMU, AMD Family15h Model10-1Fh erratum 746 Workaround + - LP: #1119885 + * xfs: Fix possible use-after-free with AIO + - LP: #1119885 + * powerpc/book3e: Disable interrupt after preempt_schedule_irq + - LP: #1119885 + * ALSA: hda - Fix non-snoop page handling + - LP: #1119885 + * EDAC: Test correct variable in ->store function + - LP: #1119885 + * NFS: Fix error reporting in nfs_xdev_mount + - LP: #1119885 + * NFS: Don't silently fail setattr() requests on mountpoints + - LP: #1119885 + * NFSv4.1: Handle NFS4ERR_DELAY when resetting the NFSv4.1 session + - LP: #1119885 + * drivers/firmware/dmi_scan.c: check dmi version when get system uuid + - LP: #1119885 + * drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists + - LP: #1119885 + * ahci: Add support for Enmotus Bobcat device. + - LP: #1119885 + * ahci: Fix lack of command retry after a success error handler. + - LP: #1119885 + * x86/Sandy Bridge: mark arrays in __init functions as __initconst + - LP: #1119885 + * x86/Sandy Bridge: Sandy Bridge workaround depends on CONFIG_PCI + - LP: #1119885 + * drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled + - LP: #1119885 + * ahci: Add identifiers for ASM106x devices + - LP: #1119885 + * module: fix symbol waiting when module fails before init + - LP: #1119885 + * module: wait when loading a module which is currently initializing. + - LP: #1119885 + * module: add new state MODULE_STATE_UNFORMED. + - LP: #1119885 + * module: put modules in list much earlier. + - LP: #1119885 + * module: fix missing module_mutex unlock + - LP: #1119885 + * intel_idle: Don't register CPU notifier if we are not running. + - LP: #1119885 + * xfs: fix periodic log flushing + - LP: #1119885 + * gspca_kinect: add Kinect for Windows USB id + - LP: #1119885 + * ARM: 7628/1: head.S: map one extra section for the ATAG/DTB area + - LP: #1119885 + * Linux 3.5.7.5 + - LP: #1119885 + * net: fix infinite loop in __skb_recv_datagram() + - LP: #1129184 + - CVE-2013-0290 + * vhost: fix length for cross region descriptor + - LP: #1130951 + - CVE-2013-0311 + * xhci: Fix isoc TD encoding. + - LP: #1131944 + * xhci: Fix TD size for isochronous URBs. + - LP: #1131944 + * drivers: xhci: fix incorrect bit test + - LP: #1131944 + * USB: XHCI: fix memory leak of URB-private data + - LP: #1131944 + * usb: Prevent dead ports when xhci is not enabled + - LP: #1131944 + * usb: Using correct way to clear usb3.0 device's remote wakeup feature. + - LP: #1131944 + * sched/rt: Use root_domain of rt_rq not current processor + - LP: #1131944 + * USB: EHCI: fix timer bug affecting port resume + - LP: #1131944 + * regulator: max8998: fix incorrect min_uV value for ldo10 + - LP: #1131944 + * drm/radeon: fix MC blackout on evergreen+ + - LP: #1131944 + * drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN + - LP: #1131944 + * rtlwifi: Fix the usage of the wrong variable in usb.c + - LP: #1131944 + * e1000e: enable ECC on I217/I218 to catch packet buffer memory errors + - LP: #1131944 + * drm/radeon: add quirk for RV100 board + - LP: #1131944 + * USB: qcserial: add Telit Gobi QDL device + - LP: #1131944 + * USB: option: add support for Telit LE920 + - LP: #1131944 + * drm/radeon: fix backend map setup on 1 RB sumo boards + - LP: #1131944 + * drm/radeon: protect against div by 0 in backend setup + - LP: #1131944 + * mwifiex: fix incomplete scan in case of IE parsing error + - LP: #1131944 + * USB: EHCI: fix bug in scheduling periodic split transfers + - LP: #1131944 + * x86-64: Replace left over sti/cli in ia32 audit exit code + - LP: #1131944 + * drm/radeon/evergreen+: wait for the MC to settle after MC blackout + - LP: #1131944 + * Bluetooth: Fix handling of unexpected SMP PDUs + - LP: #1131944 + * drm/radeon: Calling object_unrefer() when creating fb failure + - LP: #1131944 + * drm/radeon: prevent crash in the ring space allocation + - LP: #1131944 + * target: Fix divide by zero bug in fabric_max_sectors for unconfigured + devices + - LP: #1131944 + * digsig: Fix memory leakage in digsig_verify_rsa() + - LP: #1131944 + * can: c_can: Set reserved bit in IFx_MASK2 to 1 on write + - LP: #1131944 + * USB: ftdi_sio: add PID/VID entries for ELV WS 300 PC II + - LP: #1131944 + * USB: option: add Changhong CH690 + - LP: #1131944 + * USB: ftdi_sio: add Zolix FTDI PID + - LP: #1131944 + * USB: storage: Define a new macro for USB storage match rules + - LP: #1131944 + * USB: storage: optimize to match the Huawei USB storage devices and + support new switch command + - LP: #1131944 + * rtlwifi: Fix scheduling while atomic bug + - LP: #1131944 + * nilfs2: fix fix very long mount time issue + - LP: #1131944 + * mm/hugetlb: set PTE as huge in hugetlb_change_protection and + remove_migration_pte + - LP: #1131944 + * drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq + handler + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: fix the missing operation on enable + - LP: #1131944 + * virtio_console: Don't access uninitialized data. + - LP: #1131944 + * HID: usbhid: quirk for Formosa IR receiver + - LP: #1131944 + * kernel/resource.c: fix stack overflow in __reserve_region_with_split() + - LP: #1131944 + * net: prevent setting ttl=0 via IP_TTL + - LP: #1131944 + * ipv6: fix the noflags test in addrconf_get_prefix_route + - LP: #1131944 + * MAINTAINERS: Stephen Hemminger email change + - LP: #1131944 + * ipv6: fix header length calculation in ip6_append_data() + - LP: #1131944 + * macvlan: fix macvlan_get_size() + - LP: #1131944 + * net: calxedaxgmac: throw away overrun frames + - LP: #1131944 + * net/mlx4_en: Fix bridged vSwitch configuration for non SRIOV mode + - LP: #1131944 + * net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware + defaults + - LP: #1131944 + * isdn/gigaset: fix zero size border case in debug dump + - LP: #1131944 + * netxen: fix off by one bug in netxen_release_tx_buffer() + - LP: #1131944 + * r8169: remove the obsolete and incorrect AMD workaround + - LP: #1131944 + * net: loopback: fix a dst refcounting issue + - LP: #1131944 + * pktgen: correctly handle failures when adding a device + - LP: #1131944 + * ipv6: do not create neighbor entries for local delivery + - LP: #1131944 + * via-rhine: Fix bugs in NAPI support. + - LP: #1131944 + * packet: fix leakage of tx_ring memory + - LP: #1131944 + * atm/iphase: rename fregt_t -> ffreg_t + - LP: #1131944 + * sctp: refactor sctp_outq_teardown to insure proper re-initalization + - LP: #1131944 + * net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree + - LP: #1131944 + * net: sctp: sctp_endpoint_free: zero out secret key data + - LP: #1131944 + * tcp: frto should not set snd_cwnd to 0 + - LP: #1131944 + * tcp: fix for zero packets_in_flight was too broad + - LP: #1131944 + * tg3: Avoid null pointer dereference in tg3_interrupt in netconsole mode + - LP: #1131944 + * tg3: Fix crc errors on jumbo frame receive + - LP: #1131944 + * s390/timer: avoid overflow when programming clock comparator + - LP: #1131944 + * x86: Do not leak kernel page mapping locations + - LP: #1131944 + * x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server + systems + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: restore ST variant functionality + - LP: #1131944 + * mm: don't overwrite mm->def_flags in do_mlockall() + - LP: #1131944 + * x86/mm: Check if PUD is large when validating a kernel address + - LP: #1131944 + * PCI/PM: Clean up PME state when removing a device + - LP: #1131944 + * efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot + parameter + - LP: #1131944 + * mm: fix pageblock bitmap allocation + - LP: #1131944 + * Linux 3.5.7.6 + - LP: #1131944 + + -- Brad Figg Tue, 26 Feb 2013 08:44:21 -0800 + +linux (3.5.0-25.39) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1132885 + + [ Upstream Kernel Changes ] + + * sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + + -- Brad Figg Mon, 25 Feb 2013 09:04:12 -0800 + +linux (3.5.0-25.38) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1129472 + + [ Upstream Kernel Changes ] + + * ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() + - LP: #1119885, #1129192 + - CVE-2013-0871 + * ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL + - LP: #1119885, #1129192 + - CVE-2013-0871 + * wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED + task + - LP: #1119885, #1129192 + - CVE-2013-0871 + + -- Luis Henriques Mon, 18 Feb 2013 21:57:04 +0000 + +linux (3.5.0-24.37) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1117492 + + [ Tim Gardner ] + + * [Config] CONFIG_ALX=m for x86 only + - LP: #927782 + + -- Luis Henriques Wed, 06 Feb 2013 17:29:44 +0000 + +linux (3.5.0-24.36) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1116501 + + [ Adam Lee ] + + * [Config] Enable RTSX_PCI modules + - LP: #1057089 + + [ Andy Whitcroft ] + + * [Config] enable various HVC consoles + - LP: #1102206 + + [ Brad Figg ] + + * Revert "SAUCE: samsung-laptop: disable in UEFI mode" + - LP: #1111689 + + [ Herton Ronaldo Krzesinski ] + + * [Config] updateconfigs for 3.5.7.3 stable update + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + - LP: #927782 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #927782 + + [ Seth Forshee ] + + * SAUCE: samsung-laptop: Add quirk for broken acpi_video backlight on + N250P + - LP: #1086921 + + [ Stefan Bader ] + + * (config) Move 9p modules into generic package + - LP: #1107658 + + [ Tim Gardner ] + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + - LP: #927782 + * [Config] Add alx to d-i nic-modules + - LP: #927782 + + [ Upstream Kernel Changes ] + + * Revert "8139cp: revert "set ring address before enabling receiver"" + - LP: #1102417 + * Revert "ath9k_hw: Update AR9003 high_power tx gain table" + - LP: #1102417 + * Revert "drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13" + - LP: #1102417 + * Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat + codecs" + - LP: #1106966, #886975 + * be2net: don't call vid_config() when there's no vlan config + - LP: #1083088 + * be2net: cleanup be_vid_config() + - LP: #1083088 + * be2net: do not modify PCI MaxReadReq size + - LP: #1083088 + * be2net: fix reporting number of actual rx queues + - LP: #1083088 + * be2net: do not use SCRATCHPAD register + - LP: #1083088 + * be2net: Fix driver load for VFs for Lancer + - LP: #1083088 + * be2net: Explicitly clear the reserved field in the Tx Descriptor + - LP: #1083088 + * be2net: Regression bug wherein VFs creation broken for multiple cards. + - LP: #1083088 + * be2net: Fix to trim skb for padded vlan packets to workaround an ASIC + Bug + - LP: #1083088 + * be2net: Fix Endian + - LP: #1083088 + * be2net: Fix error while toggling autoneg of pause parameters + - LP: #1083088 + * be2net : Fix die temperature stat for Lancer + - LP: #1083088 + * be2net: Fix initialization sequence for Lancer + - LP: #1083088 + * be2net: Activate new FW after FW download for Lancer + - LP: #1083088 + * be2net: Fix cleanup path when EQ creation fails + - LP: #1083088 + * be2net: Enable RSS UDP hashing for Lancer and Skyhawk + - LP: #1083088 + * be2net: dont pull too much data in skb linear part + - LP: #1083088 + * be2net: Fix VF driver load for Lancer + - LP: #1083088 + * be2net: Ignore physical link async event for Lancer + - LP: #1083088 + * be2net: Fix to parse RSS hash from Receive completions correctly. + - LP: #1083088 + * netpoll: revert 6bdb7fe3104 and fix be_poll() instead + - LP: #1083088 + * be2net: create RSS rings even in multi-channel configs + - LP: #1083088 + * be2net: fix max VFs reported by HW + - LP: #1083088 + * be2net: fix FW default for VF tx-rate + - LP: #1083088 + * be2net: fixup malloc/free of adapter->pmac_id + - LP: #1083088 + * be2net: fix wrong handling of be_setup() failure in be_probe() + - LP: #1083088 + * be2net: cleanup code related to be_link_status_query() + - LP: #1083088 + * be2net: fix vfs enumeration + - LP: #1083088 + * be2net: Remove code that stops further access to BE NIC based on UE + bits + - LP: #1083088 + * mtip32xx: Add support for new devices + - LP: #1099913 + * mtip32xx: Handle NCQ commands during the security locked state + - LP: #1099913 + * mtip32xx: Increase timeout for standby command + - LP: #1099913 + * mtip32xx: Proper reporting of write protect status on big-endian + - LP: #1099913 + * mtip32xx: Change printk to pr_xxxx + - LP: #1099913 + * mtip32xx: Remove dead code + - LP: #1099913 + * mtip32xx: fix user_buffer check in exec_drive_command + - LP: #1099913 + * mtip32xx:Added appropriate timeout value for secure erase + - LP: #1099913 + * mtip32xx: fix potential crash on SEC_ERASE_UNIT + - LP: #1099913 + * mtip32xx: Fix to make lba address correct in big-endian systems + - LP: #1099913 + * mtip32xx: Fix incorrect mask used for erase mode + - LP: #1099913 + * mtip32xx: fix shift larger than type warning + - LP: #1099913 + * mtip32xx: fix potential NULL pointer dereference in + mtip_timeout_function() + - LP: #1099913 + * mtip32xx: Fix padding issue + - LP: #1099913 + * KVM: PPC: e500: fix allocation size error on g2h_tlb1_map + - LP: #1102417 + * s390/kvm: dont announce RRBM support + - LP: #1102417 + * cgroup: cgroup_subsys->fork() should be called after the task is added + to css_set + - LP: #1102417 + * freezer: add missing mb's to freezer_count() and freezer_should_skip() + - LP: #1102417 + * ath9k_hw: Enable hw PLL power save for AR9462 + - LP: #1102417 + * usb: gadget: tcm_usb_gadget: NULL terminate the FS descriptor list + - LP: #1102417 + * usb: gadget: network: fix bind() error path + - LP: #1102417 + * usb: gadget: midi: free hs descriptors + - LP: #1102417 + * usb: gadget: phonet: free requests in pn_bind()'s error path + - LP: #1102417 + * usb: gadget: uvc: fix error path in uvc_function_bind() + - LP: #1102417 + * x86: hpet: Fix masking of MSI interrupts + - LP: #1102417 + * usb: musb: cppi_dma: export cppi_interrupt() + - LP: #1102417 + * iscsi-target: Fix bug in handling of ExpStatSN ACK during u32 + wrap-around + - LP: #1102417 + * iscsi-target: Always send a response before terminating iSCSI + connection + - LP: #1102417 + * SUNRPC: Fix validity issues with rpc_pipefs sb->s_fs_info + - LP: #1102417 + * ext4: fix memory leak in ext4_xattr_set_acl()'s error path + - LP: #1102417 + * ARM: mm: use pteval_t to represent page protection values + - LP: #1102417 + * perf test: fix a build error on builtin-test + - LP: #1102417 + * USB: fix endpoint-disabling for failed config changes + - LP: #1102417 + * genirq: Always force thread affinity + - LP: #1102417 + * xhci: Fix conditional check in bandwidth calculation. + - LP: #1102417 + * xHCI: Fix TD Size calculation on 1.0 hosts. + - LP: #1102417 + * xhci: fix null-pointer dereference when destroying half-built segment + rings + - LP: #1102417 + * xhci: Extend Fresco Logic MSI quirk. + - LP: #1102417 + * usb: host: xhci: Stricter conditional for Z1 system models for + Compliance Mode Patch + - LP: #1102417 + * Staging: bcm: Add two products and remove an existing product. + - LP: #1102417 + * rcu: Fix batch-limit size problem + - LP: #1102417 + * ext4: init pagevec in ext4_da_block_invalidatepages + - LP: #1102417 + * powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build + - LP: #1102417 + * ftrace: Clear bits properly in reset_iter_read() + - LP: #1102417 + * cdc-acm: implement TIOCSSERIAL to avoid blocking close(2) + - LP: #1102417 + * ACPI / battery: Correct battery capacity values on Thinkpads + - LP: #1102417 + * cgroup: remove incorrect dget/dput() pair in cgroup_create_dir() + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [04ca, 2003] + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [0b05, 17b5] + - LP: #1102417 + * regulator: wm831x: Set the new rather than old value for DVS VSEL + - LP: #1102417 + * drm: fix documentation for drm_crtc_set_mode() + - LP: #1102417 + * mfd: Only unregister platform devices allocated by the mfd core + - LP: #1102417 + * NFS: Add sequence_priviliged_ops for nfs4_proc_sequence() + - LP: #1102417 + * drm/i915: make the panel fitter work on pipes B and C on IVB + - LP: #1102417 + * USB: add new zte 3g-dongle's pid to option.c + - LP: #1102417 + * ACPI / PM: Add Sony Vaio VPCEB1S1E to nonvs blacklist. + - LP: #1102417 + * mfd: wm8994: Add support for WM1811 rev E + - LP: #1102417 + * 8139cp: set ring address after enabling C+ mode + - LP: #1102417 + * USB: OHCI: workaround for hardware bug: retired TDs not added to the + Done Queue + - LP: #1102417 + * USB: option: blacklist network interface on Huawei E173 + - LP: #1102417 + * USB: cp210x: add Virtenio Preon32 device id + - LP: #1102417 + * usb: ftdi_sio: fixup BeagleBone A5+ quirk + - LP: #1102417 + * USB: ftdi_sio: Add support for Newport AGILIS motor drivers + - LP: #1102417 + * qla2xxx: Look up LUN for abort requests + - LP: #1102417 + * iscsit: use GFP_ATOMIC under spin lock + - LP: #1102417 + * ASoC: wm8994: Use the same DCS codes for all WM1811 variants + - LP: #1102417 + * sata_promise: fix hardreset lockdep error + - LP: #1102417 + * xhci: Add Lynx Point LP to list of Intel switchable hosts + - LP: #1102417 + * USB: mark uas driver as BROKEN + - LP: #1102417 + * can: Do not call dev_put if restart timer is running upon close + - LP: #1102417 + * mlx4_core: Fix potential deadlock in mlx4_eq_int() + - LP: #1102417 + * xfs: fix stray dquot unlock when reclaiming dquots + - LP: #1102417 + * KVM: Fix user memslot overlap check + - LP: #1102417 + * ext4: fix possible use after free with metadata csum + - LP: #1102417 + * prevent stack buffer overflow in host_reset + - LP: #1102417 + * mvsas: fix undefined bit shift + - LP: #1102417 + * qla2xxx: Test and clear FCPORT_UPDATE_NEEDED atomically. + - LP: #1102417 + * ACPI: do acpisleep dmi check when CONFIG_ACPI_SLEEP is set + - LP: #1102417 + * ACPI / PNP: Do not crash due to stale pointer use during system resume + - LP: #1102417 + * ring-buffer: Fix NULL pointer if rb_set_head_page() fails + - LP: #1102417 + * firewire: net: Fix handling of fragmented multicast/broadcast packets. + - LP: #1102417 + * HID: Add Apple wireless keyboard 2011 ANSI to special driver list + - LP: #1102417 + * libata: set dma_mode to 0xff in reset + - LP: #1102417 + * s390/cio: fix pgid reserved check + - LP: #1102417 + * Bluetooth: Add missing lock nesting notation + - LP: #1102417 + * Bluetooth: cancel power_on work when unregistering the device + - LP: #1102417 + * Input: wacom - fix touch support for Bamboo Fun CTH-461 + - LP: #1102417 + * ALSA: usb-audio: Avoid autopm calls after disconnection + - LP: #1102417 + * ALSA: usb-audio: Fix missing autopm for MIDI input + - LP: #1102417 + * ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 + - LP: #1102417 + * mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL + - LP: #1102417 + * Revert: "rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe + fails" + - LP: #1102417 + * x86,AMD: Power driver support for AMD's family 16h processors + - LP: #1102417 + * target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping + - LP: #1102417 + * drm/i915: Close race between processing unpin task and queueing the + flip + - LP: #1102417 + * cgroup_rm_file: don't delete the uncreated files + - LP: #1102417 + * pnpacpi: fix incorrect TEST_ALPHA() test + - LP: #1102417 + * drm/radeon: stop page faults from hanging the system (v2) + - LP: #1102417 + * drm/radeon/dce32+: use fractional fb dividers for high clocks + - LP: #1102417 + * drm/radeon: fix eDP clk and lane setup for scaled modes + - LP: #1102417 + * regmap: debugfs: Avoid overflows for very small reads + - LP: #1102417 + * b43legacy: Fix firmware loading when driver is built into the kernel + - LP: #1102417 + * ath9k: ar9003: fix OTP register offsets for AR9340 + - LP: #1102417 + * bcma: mips: fix clearing device IRQ + - LP: #1102417 + * ath9k_hw: Fix signal strength / channel noise reporting + - LP: #1102417 + * ath5k: fix tx path skb leaks + - LP: #1102417 + * b43: fix tx path skb leaks + - LP: #1102417 + * drm/i915: drop buggy write to FDI_RX_CHICKEN register + - LP: #1102417 + * drm/i915: disable cpt phase pointer fdi rx workaround + - LP: #1102417 + * iwlwifi: silently ignore fw flaws in Tx path + - LP: #1102417 + * iwlwifi: don't handle masked interrupt + - LP: #1102417 + * mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls + - LP: #1102417 + * nfs: don't extend writes to cover entire page if pagecache is invalid + - LP: #1102417 + * solos-pci: fix double-free of TX skb in DMA mode + - LP: #1102417 + * ALSA: hda - Add stereo-dmic fixup for Acer Aspire One 522 + - LP: #1102417 + * nfs: don't zero out the rest of the page if we hit the EOF on a DIO + READ + - LP: #1102417 + * drm/radeon: fix amd afusion gpu setup aka sumo v2 + - LP: #1102417 + * NFS: avoid NULL dereference in nfs_destroy_server + - LP: #1102417 + * sbp-target: fix error path in sbp_make_tpg() + - LP: #1102417 + * target/tcm_fc: fix the lockdep warning due to inconsistent lock state + - LP: #1102417 + * MIPS: Fix poweroff failure when HOTPLUG_CPU configured. + - LP: #1102417 + * fix Null pointer dereference on disk error + - LP: #1102417 + * NFS: Fix calls to drop_nlink() + - LP: #1102417 + * Input: walkera0701 - fix crash on startup + - LP: #1102417 + * SUNRPC: continue run over clients list on PipeFS event instead of break + - LP: #1102417 + * proc: pid/status: show all supplementary groups + - LP: #1102417 + * CRIS: fix I/O macros + - LP: #1102417 + * virtio: force vring descriptors to be allocated from lowmem + - LP: #1102417 + * nfs: fix wrong object type in lockowner_slab + - LP: #1102417 + * jffs2: hold erase_completion_lock on exit + - LP: #1102417 + * nfsd: fix v4 reply caching + - LP: #1102417 + * mtd cs553x_nand: Initialise ecc.strength before nand_scan() + - LP: #1102417 + * kbuild: Do not remove vmlinux when cleaning external module + - LP: #1102417 + * ASoC: sigmadsp: Fix endianness conversion issue + - LP: #1102417 + * nfsd: avoid permission checks on EXCLUSIVE_CREATE replay + - LP: #1102417 + * x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops + - LP: #1102417 + * mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems + - LP: #1102417 + * ALSA: hda - Fix pin configuration of HP Pavilion dv7 + - LP: #1102417 + * ALSA: hda - Always turn on pins for HDMI/DP + - LP: #1102417 + * OMAP: board-files: fix i2c_bus for tfp410 + - LP: #1102417 + * i2400m: add Intel 6150 device IDs + - LP: #1102417 + * ALSA: hda - Fix the wrong pincaps set in ALC861VD dallas/hp fixup + - LP: #1102417 + * nfsd4: fix oops on unusual readlike compound + - LP: #1102417 + * qmi_wwan/cdc_ether: add Dell Wireless 5800 (Novatel E362) USB IDs + - LP: #1102417 + * ARM: missing ->mmap_sem around find_vma() in swp_emulate.c + - LP: #1102417 + * ARM: 7607/1: realview: fix private peripheral memory base for EB rev. B + boards + - LP: #1102417 + * cifs: don't compare uniqueids in cifs_prime_dcache unless server inode + numbers are in use + - LP: #1102417 + * intel-iommu: Free old page tables before creating superpage + - LP: #1102417 + * vfs: d_obtain_alias() needs to use "/" as default name. + - LP: #1102417 + * mm: fix calculation of dirtyable memory + - LP: #1102417 + * SGI-XP: handle non-fatal traps + - LP: #1102417 + * dm persistent data: rename node to btree_node + - LP: #1102417 + * dm ioctl: prevent unsafe change to dm_ioctl data_size + - LP: #1102417 + * sis900: fix sis900_set_mode call parameters. + - LP: #1102417 + * ne2000: add the right platform device + - LP: #1102417 + * irda: sir_dev: Fix copy/paste typo + - LP: #1102417 + * ipv4: ip_check_defrag must not modify skb before unsharing + - LP: #1102417 + * inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state + - LP: #1102417 + * inet_diag: validate byte code to prevent oops in inet_diag_bc_run() + - LP: #1102417 + * inet_diag: avoid unsafe and nonsensical prefix matches in + inet_diag_bc_run() + - LP: #1102417 + * inet_diag: validate port comparison byte code to prevent unsafe reads + - LP: #1102417 + * usb/ipheth: Add iPhone 5 support + - LP: #1102417 + * bonding: fix race condition in bonding_store_slaves_active + - LP: #1102417 + * sctp: fix memory leak in sctp_datamsg_from_user() when copy from user + space fails + - LP: #1102417 + * sctp: fix -ENOMEM result with invalid user space pointer in sendto() + syscall + - LP: #1102417 + * udf: fix memory leak while allocating blocks during write + - LP: #1102417 + * udf: don't increment lenExtents while writing to a hole + - LP: #1102417 + * staging: vt6656: [BUG] out of bound array reference in RFbSetPower. + - LP: #1102417 + * staging: vt6656: 64 bit fixes: use u32 for QWORD definition. + - LP: #1102417 + * staging: vt6656: 64 bit fixes : correct all type sizes + - LP: #1102417 + * staging: vt6656: 64 bit fixes: fix long warning messages. + - LP: #1102417 + * staging: vt6656: 64bit fixes: key.c/h change unsigned long to u32 + - LP: #1102417 + * staging: vt6656: 64bit fixes: vCommandTimerWait change calculation of + timer. + - LP: #1102417 + * drm/i915: Flush outstanding unpin tasks before pageflipping + - LP: #1094173, #1102417 + * ext4: fix extent tree corruption caused by hole punch + - LP: #1102417 + * ext4: check dioread_nolock on remount + - LP: #1102417 + * drm/i915: fix flags in dma buf exporting + - LP: #1102417 + * jbd2: fix assertion failure in jbd2_journal_flush() + - LP: #1102417 + * drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list + - LP: #1102417 + * hwmon: (lm73} Detect and report i2c bus errors + - LP: #1102417 + * ext4: do not try to write superblock on ro remount w/o journal + - LP: #1102417 + * PCI: Work around Stratus ftServer broken PCIe hierarchy (fix DMI check) + - LP: #1102417 + * PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz + - LP: #1102417 + * mm: Fix PageHead when !CONFIG_PAGEFLAGS_EXTENDED + - LP: #1102417 + * tmpfs mempolicy: fix /proc/mounts corrupting memory + - LP: #1102417 + * epoll: prevent missed events on EPOLL_CTL_MOD + - LP: #1102417 + * drm/i915: add some barriers when changing DIPs + - LP: #1102417 + * drm/i915: make sure we write all the DIP data bytes + - LP: #1102417 + * RDMA/nes: Fix for terminate timer crash + - LP: #1102417 + * RDMA/nes: Fix for crash when registering zero length MR for CQ + - LP: #1102417 + * sparc: huge_ptep_set_* functions need to call set_huge_pte_at() + - LP: #1102417 + * batman-adv: fix random jitter calculation + - LP: #1102417 + * inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and + dccp_v4/6_request_recv_sock + - LP: #1102417 + * net: sched: integer overflow fix + - LP: #1102417 + * tcp: fix MSG_SENDPAGE_NOTLAST logic + - LP: #1102417 + * tcp: implement RFC 5961 3.2 + - LP: #1102417 + * tcp: implement RFC 5961 4.2 + - LP: #1102417 + * tcp: refine SYN handling in tcp_validate_incoming + - LP: #1102417 + * tcp: tcp_replace_ts_recent() should not be called from + tcp_validate_incoming() + - LP: #1102417 + * tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation + - LP: #1102417 + * ACPI : do not use Lid and Sleep button for S5 wakeup + - LP: #1102417 + * aoe: do not call bdi_init after blk_alloc_queue + - LP: #1102417 + * Input: sentelic - only report position of first finger as ST + coordinates + - LP: #1102417 + * Input: gpio_keys - defer probing if GPIO probing is deferred + - LP: #1102417 + * cifs: adjust sequence number downward after signing NT_CANCEL request + - LP: #1102417 + * rtlwifi: fix incorrect use of usb_alloc_coherent with usb_control_msg + - LP: #1102417 + * p54usb: add USB ID for T-Com Sinus 154 data II + - LP: #1102417 + * ath9k_hw: Fix RX gain initvals for AR9485 + - LP: #1102417 + * p54usb: add USBIDs for two more p54usb devices + - LP: #1102417 + * powerpc/vdso: Remove redundant locking in update_vsyscall_tz() + - LP: #1102417 + * powerpc: Add missing NULL terminator to avoid boot panic on PPC40x + - LP: #1102417 + * drm/radeon: add connector table for Mac G4 Silver + - LP: #1102417 + * drm/radeon: Properly handle DDC probe for DP bridges + - LP: #1102417 + * drm/nouveau: fix init with agpgart-uninorth + - LP: #1102417 + * video: mxsfb: fix crash when unblanking the display + - LP: #1102417 + * nfs: fix null checking in nfs_get_option_str() + - LP: #1102417 + * SUNRPC: Ensure that we free the rpc_task after cleanups are done + - LP: #1102417 + * NFS: Ensure that we free the rpc_task after read and write cleanups are + done + - LP: #1102417 + * ACPI / scan: Do not use dummy HID for system bus ACPI nodes + - LP: #1102417 + * mm: limit mmu_gather batching to fix soft lockups on !CONFIG_PREEMPT + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: correct handling of CR_24H bitfield + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct + rtc_time + - LP: #1102417 + * printk: fix incorrect length from print_time() when seconds > 99999 + - LP: #1102417 + * PM: Move disabling/enabling runtime PM to late suspend/early resume + - LP: #1102417 + * signals: sys_ssetmask() uses uninitialized newmask + - LP: #1102417 + * ext4: release buffer in failed path in dx_probe() + - LP: #1102417 + * ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) + - LP: #1096789, #1102417 + * drm/prime: drop reference on imported dma-buf come from gem + - LP: #1102417 + * i915: ensure that VGA plane is disabled + - LP: #1102417 + * mvsas: Fix oops when ata commond timeout. + - LP: #1102417 + * staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC + - LP: #1102417 + * iscsi-target: Fix CmdSN comparison (use cmd->cmd_sn instead of + cmd->stat_sn) + - LP: #1102417 + * Linux 3.5.7.3 + - LP: #1102417 + * usb: gadget: dummy: fix enumeration with g_multi + - LP: #1106966 + * usb: musb: core: print new line in the driver banner again + - LP: #1106966 + * ASoC: pcm: allow backend hardware to be freed in pause state + - LP: #1106966 + * ASoC: wm2200: Fix setting dai format in wm2200_set_fmt + - LP: #1106966 + * mac80211: fix ibss scanning + - LP: #1106966 + * mac80211: use del_timer_sync for final sta cleanup timer deletion + - LP: #1106966 + * mac80211: fix dtim_period in hidden SSID AP association + - LP: #1106966 + * xhci: Handle HS bulk/ctrl endpoints that don't NAK. + - LP: #1106966 + * USB: Handle auto-transition from hot to warm reset. + - LP: #1106966 + * USB: Ignore xHCI Reset Device status. + - LP: #1106966 + * USB: Allow USB 3.0 ports to be disabled. + - LP: #1106966 + * USB: Increase reset timeout. + - LP: #1106966 + * USB: Ignore port state until reset completes. + - LP: #1106966 + * USB: Handle warm reset failure on empty port. + - LP: #1106966 + * xhci: Avoid "dead ports", add roothub port polling. + - LP: #1106966 + * ASoC: wm2200: Remove DSP B and left justified AIF modes + - LP: #1106966 + * ASoC: wm5100: Remove DSP B and left justified formats + - LP: #1106966 + * mwifiex: check wait_event_interruptible return value + - LP: #1106966 + * ASoC: wm2000: Fix sense of speech clarity enable + - LP: #1106966 + * drm/i915; Only increment the user-pin-count after successfully pinning + the bo + - LP: #1106966 + * samsung-laptop: Add quirk for broken acpi_video backlight on N250P + - LP: #1086921, #1106966 + * sony-laptop: fix SNC buffer calls when SN06 returns Integers + - LP: #1106966 + * staging: r8712u: Add new device ID + - LP: #1106966 + * b43: Fix firmware loading when driver is built into the kernel + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_init() + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_add() + - LP: #1106966 + * staging: comedi: fix minimum AO period for NI 625x and NI 628x + - LP: #1106966 + * staging: comedi: prevent auto-unconfig of manually configured devices + - LP: #1106966 + * staging: comedi: comedi_test: fix race when cancelling command + - LP: #1106966 + * regulator: max8997: Use uV in voltage_map_desc + - LP: #1106966 + * regulator: max8998: Convert to regulator_list_voltage_linear() + - LP: #1106966 + * regulator: max8998: Convert to set_voltage_sel and + regulator_map_voltage_linear + - LP: #1106966 + * regulator: max8998: Use uV in voltage_map_desc + - LP: #1106966 + * ALSA: pxa27x: fix ac97 cold reset + - LP: #1106966 + * ALSA: pxa27x: fix ac97 warm reset + - LP: #1106966 + * SUNRPC: Ensure we release the socket write lock if the rpc_task exits + early + - LP: #1106966 + * target: use correct sense code for LUN communication failure + - LP: #1106966 + * regulator: max8998: Ensure enough delay time for + max8998_set_voltage_buck_time_sel + - LP: #1106966 + * tcm_fc: Do not indicate retry capability to initiators + - LP: #1106966 + * tcm_fc: Do not report target role when target is not defined + - LP: #1106966 + * target: Fix use-after-free in LUN RESET handling + - LP: #1106966 + * target: Release se_cmd when LUN lookup fails for TMR + - LP: #1106966 + * sh: Fix FDPIC binary loader + - LP: #1106966 + * USB: option: Add new MEDIATEK PID support + - LP: #1106966 + * USB: option: blacklist network interface on ZTE MF880 + - LP: #1106966 + * USB: option: add Telekom Speedstick LTE II + - LP: #1106966 + * USB: option: add Nexpring NP10T terminal id + - LP: #1106966 + * Add CDC-ACM support for the CX93010-2x UCMxx USB Modem + - LP: #1106966 + * USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i" + - LP: #1106966 + * USB: hub: handle claim of enabled remote wakeup after reset + - LP: #1106966 + * mm: compaction: fix echo 1 > compact_memory return error issue + - LP: #1106966 + * mm: use aligned zone start for pfn_to_bitidx calculation + - LP: #1106966 + * mm: bootmem: fix free_all_bootmem_core() with odd bitmap alignment + - LP: #1106966 + * audit: create explicit AUDIT_SECCOMP event type + - LP: #1106966 + * USB: Add device quirk for Microsoft VX700 webcam + - LP: #1106966 + * drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards + - LP: #1106966 + * drm/nv17-50: restore fence buffer on resume + - LP: #1106966 + * usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added + - LP: #1106966 + * udldrmfb: Fix EDID not working with monitors with EDID extension blocks + - LP: #1106966 + * udldrmfb: udl_get_edid: usb_control_msg buffer must not be on the stack + - LP: #1106966 + * udldrmfb: udl_get_edid: drop unneeded i-- + - LP: #1106966 + * s390/time: fix sched_clock() overflow + - LP: #1106966 + * rt2800usb: Add support for 2001:3c1e (D-Link DWA-125 rev B1) USB Wi-Fi + adapter + - LP: #1085351, #1106966 + * drm/radeon: fix NULL pointer dereference in UMS mode + - LP: #1106966 + * drm/radeon: fix a bogus kfree + - LP: #1106966 + * ALSA: usb - fix race in creation of M-Audio Fast track pro driver + - LP: #1095315, #1106966 + * x86/Sandy Bridge: reserve pages when integrated graphics is present + - LP: #1106966 + * USB: io_ti: Fix NULL dereference in chase_port() + - LP: #1106966 + * intel-iommu: Prevent devices with RMRRs from being placed into SI + Domain + - LP: #1106966 + * igb: release already assigned MSI-X interrupts if setup fails + - LP: #1106966 + * usb: chipidea: Allow disabling streaming not only in udc mode + - LP: #1106966 + * sd: Reshuffle init_sd to avoid crash + - LP: #1106966 + * Linux 3.5.7.4 + - LP: #1106966 + * HID: Add suport for the brightness control keys on HP keyboards + - LP: #1007575 + * efi: Make 'efi_enabled' a function to query EFI facilities + - LP: #1111689 + * samsung-laptop: Disable on EFI hardware + - LP: #1111689 + * inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #1110605 + * fsnotify: introduce fsnotify_get_group() + - LP: #1110605 + * fsnotify: use reference counting for groups + - LP: #1110605 + * fsnotify: take groups mark_lock before mark lock + - LP: #1110605 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1110605 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1110605 + * audit: clean up refcounting in audit-tree + - LP: #1110605 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1110605 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1110605 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1110605 + * fsnotify: change locking order + - LP: #1110605 + * drivers/mfd: Add realtek pcie card reader driver + - LP: #1057089 + * mfd: rtsx: Add output voltage switch hook + - LP: #1057089 + * mfd: rtsx: Fix oops when rtsx_pci_sdmmc is not probed + - LP: #1057089 + * mmc: Add realtek pcie sdmmc host driver + - LP: #1057089 + * mmc: rtsx: Remove a duplicate command in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Configure SD_CFG2 register in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Explicitely include slab.h in rtsx_pci_sdmmc.c + - LP: #1057089 + * mmc: rtsx: Call MFD hook to switch output voltage + - LP: #1057089 + * drivers/memstick: Add realtek pcie memstick host driver + - LP: #1057089 + + -- Luis Henriques Wed, 06 Feb 2013 10:41:09 +0000 + +linux (3.5.0-23.35) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1103932 + + [ Upstream Kernel Changes ] + + * Revert "fsnotify: change locking order" + - LP: #1101666 + * Revert "fsnotify: dont put marks on temporary list when clearing marks + by group" + - LP: #1101666 + * Revert "fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark()" + - LP: #1101666 + * Revert "fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1101666 + * Revert "fsnotify: use a mutex instead of a spinlock to protect a groups + mark list" + - LP: #1101666 + * Revert "fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed" + - LP: #1101666 + * Revert "fsnotify: take groups mark_lock before mark lock" + - LP: #1101666 + * Revert "fsnotify: use reference counting for groups" + - LP: #1101666 + * Revert "fsnotify: introduce fsnotify_get_group()" + - LP: #1101666 + * radeon/kms: force rn50 chip to always report connected on analog output + - LP: #1103320 + + -- Luis Henriques Thu, 24 Jan 2013 11:06:25 +0000 + +linux (3.5.0-22.34) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1097343 + + [ Chris J Arges ] + + * Revert "SAUCE: fsnotify: dont put marks on temporary list when clearing + marks by group" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce locked versions of + fsnotify_add_mark() and fsnotify_remove_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use a mutex instead of a spinlock to protect a + groups mark list" + - LP: #1096137 + * Revert "SAUCE: fanotify: add an extra flag to mark_remove_from_mask + that indicates wheather a mark should be destroyed" + - LP: #1096137 + * Revert "SAUCE: fsnotify: take groups mark_lock before mark lock" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use reference counting for groups" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce fsnotify_get_group()" + - LP: #1096137 + + [ Upstream Kernel Changes ] + + * fsnotify: introduce fsnotify_get_group() + - LP: #1096137 + * fsnotify: use reference counting for groups + - LP: #1096137 + * fsnotify: take groups mark_lock before mark lock + - LP: #1096137 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1096137 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1096137 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1096137 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1096137 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1096137 + * fsnotify: change locking order + - LP: #1096137 + + -- Luis Henriques Tue, 08 Jan 2013 17:54:01 +0000 + +linux (3.5.0-22.33) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1095349 + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Colin Ian King ] + + * SAUCE: samsung-laptop: disable in UEFI mode + - LP: #1040557 + + [ Kees Cook ] + + * SAUCE: exec: do not leave bprm->interp on stack + - LP: #1068888 + - CVE-2012-4530 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Lino Sanfilippo ] + + * 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 + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * Revert "Staging: Android alarm: IOCTL command encoding fix" + - LP: #1091251 + * Revert "sched, autogroup: Stop going ahead if autogroup is disabled" + - LP: #1091251 + * Revert "serial: omap: fix software flow control" + - LP: #1091251 + * drm/i915: EBUSY status handling added to i915_gem_fault(). + - LP: #1087302 + * MISC: hpilo, remove pci_disable_device + - LP: #1087860 + * asix: Adds support for Lenovo 10/100 USB dongle. + - LP: #1087480 + * hpsa: gen8plus Smart Array IDs + - LP: #1089623 + * KVM: x86: invalid opcode oops on SET_SREGS with OSXSAVE bit set + (CVE-2012-4461) + - LP: #1089604 + - CVE-2012-4461 + * gpio-timberdale: fix a potential wrapping issue + - LP: #1091251 + * cfg80211: fix antenna gain handling + - LP: #1091251 + * drm/i915: fix overlay on i830M + - LP: #1091251 + * drm/i915: clear the entire sdvo infoframe buffer + - LP: #1091251 + * mac80211: use blacklist for duplicate IE check + - LP: #1091251 + * mac80211: Only process mesh config header on frames that RA_MATCH + - LP: #1091251 + * mac80211: don't inspect Sequence Control field on control frames + - LP: #1091251 + * gpiolib: Don't return -EPROBE_DEFER to sysfs, or for invalid gpios + - LP: #1091251 + * qla2xxx: Update target lookup session tables when a target session + changes + - LP: #1091251 + * mac80211: fix SSID copy on IBSS JOIN + - LP: #1091251 + * wireless: drop invalid mesh address extension frames + - LP: #1091251 + * mac80211: check management frame header length + - LP: #1091251 + * mac80211: verify that skb data is present + - LP: #1091251 + * mac80211: make sure data is accessible in EAPOL check + - LP: #1091251 + * target: Fix double-free of se_cmd in target_complete_tmr_failure + - LP: #1091251 + * ext4: fix unjournaled inode bitmap modification + - LP: #1091251 + * ath9k: fix stale pointers potentially causing access to free'd skbs + - LP: #1091251 + * floppy: don't call alloc_ordered_workqueue inside the alloc_disk loop + - LP: #1091251 + * floppy: do put_disk on current dr if blk_init_queue fails + - LP: #1091251 + * floppy: properly handle failure on add_disk loop + - LP: #1091251 + * ALSA: PCM: Fix some races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Use rwsem for disconnect protection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection in mixer_quirks.c + - LP: #1091251 + * ALSA: Add a reference counter to card instance + - LP: #1091251 + * ALSA: Avoid endless sleep after disconnect + - LP: #1091251 + * xen/gntdev: don't leak memory from IOCTL_GNTDEV_MAP_GRANT_REF + - LP: #1091251 + * rt2800: validate step value for temperature compensation + - LP: #1091251 + * ath9k: Test for TID only in BlockAcks while checking tx status + - LP: #1091251 + * md/raid1: Fix assembling of arrays containing Replacements. + - LP: #1091251 + * Input: tsc40 - remove wrong announcement of pressure support + - LP: #1091251 + * HID: microsoft: fix invalid rdesc for 3k kbd + - LP: #1091251 + * xen/mmu: Use Xen specific TLB flush instead of the generic one. + - LP: #1091251 + * NFS: Wait for session recovery to finish before returning + - LP: #1091251 + * NFSv4.1: We must release the sequence id when we fail to get a session + slot + - LP: #1091251 + * NFSv4: nfs4_locku_done must release the sequence id + - LP: #1091251 + * NFS: fix bug in legacy DNS resolver. + - LP: #1091251 + * nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd + timeouts + - LP: #1091251 + * nfs: Show original device name verbatim in /proc/*/mount{s,info} + - LP: #1091251 + * target: Don't return success from module_init() if setup fails + - LP: #1091251 + * target: Avoid integer overflow in se_dev_align_max_sectors() + - LP: #1091251 + * iscsi-target: Fix missed wakeup race in TX thread + - LP: #1091251 + * target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path + - LP: #1091251 + * DRM/Radeon: Fix Load Detection on legacy primary DAC. + - LP: #1091251 + * ixgbe: PTP get_ts_info missing software support + - LP: #1091251 + * drm/udl: fix stride issues scanning out stride != width*bpp + - LP: #1091251 + * crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent + data corruption + - LP: #1091251 + * module: fix out-by-one error in kallsyms + - LP: #1091251 + * cifs: fix potential buffer overrun in cifs.idmap handling code + - LP: #1091251 + * ptp: update adjfreq callback description + - LP: #1091251 + * ALSA: hda: Cirrus: Fix coefficient index for beep configuration + - LP: #1091251 + * ALSA: HDA: Fix digital microphone on CS420x + - LP: #1091251 + * ALSA: hda - Force to reset IEC958 status bits for AD codecs + - LP: #1091251, #359361 + * hwmon: (w83627ehf) Force initial bank selection + - LP: #1091251 + * drm: restore open_count if drm_setup fails + - LP: #1091251 + * ALSA: hda - Fix empty DAC filling in patch_via.c + - LP: #1091251 + * ALSA: hda - Fix invalid connections in VT1802 codec + - LP: #1091251 + * xen/events: fix RCU warning, or Call idle notifier after irq_enter() + - LP: #1091251 + * mmc: sdhci: fix NULL dereference in sdhci_request() tuning + - LP: #1091251 + * ALSA: hda - Improve HP depop when system enter to S3 + - LP: #1091251 + * ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) + - LP: #1091251 + * ALSA: Fix card refcount unbalance + - LP: #1091251 + * drm/radeon/cayman: add some missing regs to the VM reg checker + - LP: #1091251 + * drm/radeon/si: add some missing regs to the VM reg checker + - LP: #1091251 + * xfs: fix buffer shudown reference count mismatch + - LP: #1091251 + * xfs: fix reading of wrapped log data + - LP: #1091251 + * virtio: Don't access index after unregister. + - LP: #1091251 + * fanotify: fix missing break + - LP: #1091251 + * mm: bugfix: set current->reclaim_state to NULL while returning from + kswapd() + - LP: #1091251 + * drm/vmwgfx: Fix hibernation device reset + - LP: #1091251 + * drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR + memory + - LP: #1091251 + * UBIFS: introduce categorized lprops counter + - LP: #1091251 + * UBIFS: fix mounting problems after power cuts + - LP: #1091251 + * USB: usb_wwan: fix bulk-urb allocation + - LP: #1091251 + * ARM: dt: tegra: fix length of pad control and mux registers + - LP: #1091251 + * futex: Handle futex_pi OWNER_DIED take over correctly + - LP: #1091251 + * mac80211: sync acccess to tx_filtered/ps_tx_buf queues + - LP: #1091251 + * iwlwifi: handle DMA mapping failures + - LP: #1091251 + * ASoC: wm8978: pll incorrectly configured when codec is master + - LP: #1091251 + * ASoC: cs42l52: fix the return value of cs42l52_set_fmt() + - LP: #1091251 + * Bluetooth: Fix having bogus entries in mgmt_read_index_list reply + - LP: #1091251 + * mac80211: don't send null data packet when not associated + - LP: #1091251 + * ASoC: dapm: Use card_list during DAPM shutdown + - LP: #1091251 + * ASoC: core: Double control update err for snd_soc_put_volsw_sx + - LP: #1091251 + * mac80211: call skb_dequeue/ieee80211_free_txskb instead of + __skb_queue_purge + - LP: #1091251 + * ALSA: hda - Add a missing quirk entry for iMac 9,1 + - LP: #1091251 + * s390/signal: set correct address space control + - LP: #1091251 + * wireless: allow 40 MHz on world roaming channels 12/13 + - LP: #1091251 + * drm/i915/sdvo: clean up connectors on intel_sdvo_init() failures + - LP: #1091251 + * s390/gup: add missing TASK_SIZE check to get_user_pages_fast() + - LP: #1091251 + * USB: option: add Novatel E362 and Dell Wireless 5800 USB IDs + - LP: #1091251 + * USB: option: add Alcatel X220/X500D USB IDs + - LP: #1091251 + * i2c-mux-pinctrl: Fix probe error path + - LP: #1091251 + * ALSA: usb-audio: Fix mutex deadlock at disconnection + - LP: #1091251 + * drm/radeon: fix logic error in atombios_encoders.c + - LP: #1091251 + * ttm: Clear the ttm page allocated from high memory zone correctly + - LP: #1091251 + * ARM: imx: ehci: fix host power mask bit + - LP: #1091251 + * memcg: oom: fix totalpages calculation for memory.swappiness==0 + - LP: #1091251 + * memcg: fix hotplugged memory zone oops + - LP: #1091251 + * tmpfs: fix shmem_getpage_gfp() VM_BUG_ON + - LP: #1091251 + * tmpfs: change final i_blocks BUG to WARNING + - LP: #1091251 + * mtd: ofpart: Fix incorrect NULL check in parse_ofoldpart_partitions() + - LP: #1091251 + * mtd: slram: invalid checking of absolute end address + - LP: #1091251 + * jffs2: Fix lock acquisition order bug in jffs2_write_begin + - LP: #1091251 + * isci: copy fis 0x34 response into proper buffer + - LP: #1091251 + * mac80211: deinitialize ibss-internals after emptiness check + - LP: #1091251 + * iwlwifi: fix monitor mode FCS flag + - LP: #1091251 + * fix virtual aliasing issue in get_shared_area() + - LP: #1091251 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1091251 + * mwifiex: fix system hang issue in cmd timeout error case + - LP: #1091251 + * mwifiex: report error to MMC core if we cannot suspend + - LP: #1091251 + * xfs: drop buffer io reference when a bad bio is built + - LP: #1091251 + * m68k: fix sigset_t accessor functions + - LP: #1091251 + * ALSA: ua101, usx2y: fix broken MIDI output + - LP: #1091251 + * sparc64: not any error from do_sigaltstack() should fail rt_sigreturn() + - LP: #1091251 + * reiserfs: Fix lock ordering during remount + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_on() with write lock + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_write() with write lock + - LP: #1091251 + * reiserfs: Move quota calls out of write lock + - LP: #1091251 + * md: Reassigned the parameters if read_seqretry returned true in func + md_is_badblock. + - LP: #1091251 + * md: Avoid write invalid address if read_seqretry returned true. + - LP: #1091251 + * drm/radeon/dce4+: don't use radeon_crtc for vblank callback + - LP: #1091251 + * drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2) + - LP: #1091251 + * drm/radeon: properly track the crtc not_enabled case + evergreen_mc_stop() + - LP: #1091251 + * radeon: add AGPMode 1 quirk for RV250 + - LP: #1091251 + * x86, efi: Fix processor-specific memcpy() build error + - LP: #1091251 + * x86-32: Fix invalid stack address while in softirq + - LP: #1091251 + * x86-32: Export kernel_stack_pointer() for modules + - LP: #1091251 + * x86, microcode, AMD: Add support for family 16h processors + - LP: #1091251 + * ALSA: hda - Add new codec ALC283 ALC290 support + - LP: #1091251 + * ALSA: hda - Add support for Realtek ALC292 + - LP: #1081466, #1091251 + * selinux: fix sel_netnode_insert() suspicious rcu dereference + - LP: #1091251 + * drm/radeon: add new SI pci id + - LP: #1091251 + * md/raid10: close race that lose writes lost when replacement completes. + - LP: #1091251 + * md/raid10: decrement correct pending counter when writing to + replacement. + - LP: #1091251 + * fix user-triggerable panic on parisc + - LP: #1091251 + * dm: fix deadlock with request based dm and queue request_fn recursion + - LP: #1091251 + * block: Don't access request after it might be freed + - LP: #1091251 + * PM / QoS: fix wrong error-checking condition + - LP: #1091251 + * i7300_edac: Fix error flag testing + - LP: #1091251 + * iwlwifi: fix the basic CCK rates calculation + - LP: #1091251 + * Dove: Attempt to fix PMU/RTC interrupts + - LP: #1091251 + * Dove: Fix irq_to_pmu() + - LP: #1091251 + * ARM: Kirkwood: Update PCI-E fixup + - LP: #1091251 + * jbd: Fix lock ordering bug in journal_unmap_buffer() + - LP: #1091251 + * can: peak_usb: fix hwtstamp assignment + - LP: #1091251 + * can: bcm: initialize ifindex for timeouts without previous frame + reception + - LP: #1091251 + * writeback: put unused inodes to LRU after writeback completion + - LP: #1091251 + * futex: avoid wake_futex() for a PI futex_q + - LP: #1091251 + * mm/vmemmap: fix wrong use of virt_to_page + - LP: #1091251 + * mm: vmscan: fix endless loop in kswapd balancing + - LP: #1091251 + * mm: soft offline: split thp at the beginning of soft_offline_page() + - LP: #1091251 + * x86, fpu: Avoid FPU lazy restore after suspend + - LP: #1091251 + * workqueue: exit rescuer_thread() as TASK_RUNNING + - LP: #1091251 + * Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts" + - LP: #1091251 + * mmc: sh-mmcif: avoid oops on spurious interrupts (second try) + - LP: #1091251 + * tmpfs: fix shared mempolicy leak + - LP: #1091251 + * HID: microsoft: do not use compound literal - fix build + - LP: #1091251 + * ACPI video: Ignore errors after _DOD evaluation. + - LP: #1091251 + * SUNRPC: Fix a UDP transport regression + - LP: #1091251 + * SUNRPC: Set alloc_slot for backchannel tcp ops + - LP: #1091251 + * sparc64: fix ptrace interaction with force_successful_syscall_return() + - LP: #1091251 + * sparc64: Like x86 we should check current->mm during perf backtrace + generation. + - LP: #1091251 + * sparc64: Fix bit twiddling in sparc_pmu_enable_event(). + - LP: #1091251 + * sparc64: do not clobber personality flags in sys_sparc64_personality() + - LP: #1091251 + * sparc64: Be less verbose during vmemmap population. + - LP: #1091251 + * netlink: add reference of module in netlink_dump_start + - LP: #1091251 + * infiniband: pass rdma_cm module to netlink_dump_start + - LP: #1091251 + * net: remove skb recycling + - LP: #1091251 + * net: Fix skb_under_panic oops in neigh_resolve_output + - LP: #1091251 + * skge: Add DMA mask quirk for Marvell 88E8001 on ASUS P5NSLI motherboard + - LP: #1091251 + * vlan: don't deliver frames for unknown vlans to protocols + - LP: #1091251 + * RDS: fix rds-ping spinlock recursion + - LP: #1091251 + * tcp: resets are misrouted + - LP: #1091251 + * ipv6: addrconf: fix /proc/net/if_inet6 + - LP: #1091251 + * drm/i915: Use cpu relocations if the object is in the GTT but not + mappable + - LP: #1091251 + * floppy: destroy floppy workqueue before cleaning up the queue + - LP: #1091251 + * drm/nouveau: silence modesetting spam on pre-gf8 chipsets + - LP: #1091251 + * drm/nouveau: fix suspend/resume when in headless mode + - LP: #1091251 + * drm/nouveau: headless mode by default if pci class != vga display + - LP: #1091251 + * sky2: Fix for interrupt handler + - LP: #1091251 + * batman-adv: Fix broadcast packet CRC calculation + - LP: #1091251 + * drm/radeon: fix typo in evergreen_mc_resume() + - LP: #1091251 + * GFS2: Test bufdata with buffer locked and gfs2_log_lock held + - LP: #1091251 + * USB: mos7840: remove unused variable + - LP: #1091251 + * sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() + - LP: #1091251 + * netlink: use kfree_rcu() in netlink_release() + - LP: #1091251 + * tcp: fix FIONREAD/SIOCINQ + - LP: #1091251 + * ipv6: Set default hoplimit as zero. + - LP: #1091251 + * net: usb: Fix memory leak on Tx data path + - LP: #1091251 + * drivers/net/ethernet/nxp/lpc_eth.c: Call mdiobus_unregister before + mdiobus_free + - LP: #1091251 + * l2tp: fix oops in l2tp_eth_create() error path + - LP: #1091251 + * tcp-repair: Handle zero-length data put in rcv queue + - LP: #1091251 + * net: inet_diag -- Return error code if protocol handler is missed + - LP: #1091251 + * af-packet: fix oops when socket is not present + - LP: #1091251 + * ipv6: send unsolicited neighbour advertisements to all-nodes + - LP: #1091251 + * r8169: allow multicast packets on sub-8168f chipset. + - LP: #1091251 + * r8169: Fix WoL on RTL8168d/8111d. + - LP: #1091251 + * r8169: use unlimited DMA burst for TX + - LP: #1091251 + * netfilter: Mark SYN/ACK packets as invalid from original direction + - LP: #1091251 + * netfilter: Validate the sequence number of dataless ACK packets as well + - LP: #1091251 + * netfilter: nf_nat: don't check for port change on ICMP tuples + - LP: #1091251 + * ipv4: avoid undefined behavior in do_ip_setsockopt() + - LP: #1091251 + * ipv6: setsockopt(IPIPPROTO_IPV6, IPV6_MINHOPCOUNT) forgot to set return + value + - LP: #1091251 + * net: correct check in dev_addr_del() + - LP: #1091251 + * net-rps: Fix brokeness causing OOO packets + - LP: #1091251 + * tcp: fix retransmission in repair mode + - LP: #1091251 + * GFS2: Don't call file_accessed() with a shared glock + - LP: #1091251 + * get_dvb_firmware: fix download site for tda10046 firmware + - LP: #1091251 + * ixgbe: add support for X540-AT1 + - LP: #1091251 + * fimc-lite: Don't use mutex_lock_interruptible() in device release() + - LP: #1091251 + * NFC: pn533: Fix use after free + - LP: #1091251 + * NFC: pn533: Fix mem leak in pn533_in_dep_link_up + - LP: #1091251 + * HID: add quirk for Freescale i.MX28 ROM recovery + - LP: #1091251 + * NFC: Fix nfc_llcp_local chained list insertion + - LP: #1091251 + * bas_gigaset: fix pre_reset handling + - LP: #1091251 + * watchdog: using u64 in get_sample_period() + - LP: #1091251 + * sata_svw: check DMA start bit before reset + - LP: #1091251 + * bnx2x: remove redundant warning log + - LP: #1091251 + * x86, amd: Disable way access filter on Piledriver CPUs + - LP: #1091251 + * telephony: ijx: buffer overflow in ixj_write_cid() + - LP: #1091251 + * i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard + - LP: #1091251 + * drm/i915: Add no-lvds quirk for Supermicro X7SPA-H + - LP: #1091251 + * ACPI: missing break + - LP: #1091251 + * 8139cp: revert "set ring address before enabling receiver" + - LP: #1091251 + * ASoC: dmaengine: Correct Makefile when sound is built as module + - LP: #1091251 + * i82975x_edac: Fix dimm label initialization + - LP: #1091251 + * drm/i915: do not ignore eDP bpc settings from vbt + - LP: #1091251 + * drm/i915: do not default to 18 bpp for eDP if missing from VBT + - LP: #1091251 + * Input: matrix-keymap - provide proper module license + - LP: #1091251 + * Linux 3.5.7.2 + - LP: #1091251 + * exec: use -ELOOP for max recursion depth + - LP: #1068888 + - CVE-2012-4530 + * ALSA: hda - bug fix for invalid connection list of Haswell HDMI codec + pins + - LP: #1095242 + + -- Brad Figg Wed, 02 Jan 2013 12:24:40 -0800 + +linux (3.5.0-21.32) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1088979 + * SAUCE: i915_hsw: move i915_hsw_enabled symbol to intel_ips + - LP: #1087622 + + -- Luis Henriques Tue, 11 Dec 2012 16:55:32 +0000 + +linux (3.5.0-20.31) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1086759 + + [ Ben Widawsky ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_WAIT_TIMEOUT + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_CONTEXT_[CREATE,DESTROY] + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: add register read IOCTL + - LP: #1085245 + * SAUCE: i915_hsw: Include #define i915_execbuffer2_[set,get]_context_id + - LP: #1085245 + + [ Chris Wilson ] + + * SAUCE: i915_hsw: Include #define I915_GEM_PARAM_HAS_SEMAPHORES + - LP: #1085245 + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_SECURE_BATCHES + - LP: #1085245 + + [ Daniel Vetter ] + + * SAUCE: i915_hsw: drm/i915: call intel_enable_gtt + - LP: #1085245 + * SAUCE: i915_hsw: drm: add helper to sort panels to the head of the + connector list + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link bw helpers + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract drm_dp_max_lane_count helper + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_channel_eq_ok + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract helpers to compute new training values + from sink request + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_clock_recovery_ok + - LP: #1085245 + + [ Dave Airlie ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_PRIME_VMAP_FLUSH + - LP: #1085245 + + [ Leann Ogasawara ] + + * SAUCE: i915_hsw: Provide an ubuntu/i915 driver for Haswell graphics + - LP: #1085245 + * SAUCE: i915_hsw: Revert "drm: Make the .mode_fixup() operations mode + argument a const pointer" for ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Rename ubuntu/i915 driver i915_hsw + - LP: #1085245 + * SAUCE: i915_hsw: Only support Haswell with ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_WAIT + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link train delay functions from radeon + - LP: #1085245 + * SAUCE: i915_hsw: drm/dp: Update DPCD defines + - LP: #1085245 + * SAUCE: i915_hsw: Update intel_ips.h file location + - LP: #1085245 + * SAUCE: i915_hsw: Provide updated drm_mm.h and drm_mm.c for ubuntu/i915 + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Stop using AGP layer for GEN6+ + - LP: #1085245 + * SAUCE: i915_hsw: Add i915_hsw_gpu_*() calls for ubuntu/i915 + - LP: #1085245 + * i915_hsw: [Config] Enable CONFIG_DRM_I915_HSW=m + - LP: #1085245 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: fix hsw_fdi_link_train "retry" code + - LP: #1085245 + * SAUCE: drm/i915: reject modes the LPT FDI receiver can't handle + - LP: #1085245 + * SAUCE: drm/i915: add support for mPHY destination on intel_sbi_{read, + write} + - LP: #1085245 + * SAUCE: drm/i915: add lpt_init_pch_refclk + - LP: #1085245 + * SAUCE: drm/i915: set the LPT FDI RX polarity reversal bit when needed + - LP: #1085245 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + + [ Upstream Kernel Changes ] + + * Revert "cgroup: Drop task_lock(parent) on cgroup_fork()" + - LP: #1084539 + * Revert "cgroup: Remove task_lock() from cgroup_post_fork()" + - LP: #1084539 + * Revert "x86/mm: Fix the size calculation of mapping tables" + - LP: #1084539 + * Revert "SUNRPC: Ensure we close the socket on EPIPE errors too..." + - LP: #1084539 + * Revert "ath9k_hw: Updated AR9003 tx gain table for 5GHz" + - LP: #1084539 + * Revert "sched: Add missing call to calc_load_exit_idle()" + - LP: #1084539 + * net: fix secpath kmemleak + - LP: #1065434 + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * e1000e: add device IDs for i218 + - LP: #1081796 + * bonding: Bonding driver does not consider the gso_max_size/gso_max_segs + setting of slave devices. + - LP: #1078184 + * mm/hotplug: correctly add new zone to all other nodes' zone lists + - LP: #1079860 + - CVE-2012-5517 + * xen: enable platform-pci only in a Xen guest + - LP: #1081054 + * udf: fix retun value on error path in udf_load_logicalvol + - LP: #1084539 + * usb: gadget: at91_udc: fix dt support + - LP: #1084539 + * netfilter: nf_nat_sip: fix incorrect handling of EBUSY for RTCP + expectation + - LP: #1084539 + * netfilter: nf_nat_sip: fix via header translation with multiple + parameters + - LP: #1084539 + * netfilter: nf_ct_expect: fix possible access to uninitialized timer + - LP: #1084539 + * netfilter: xt_limit: have r->cost != 0 case work + - LP: #1084539 + * netfilter: nf_conntrack: fix racy timer handling with reliable events + - LP: #1084539 + * netfilter: nfnetlink_log: fix NLA_PUT macro removal bug + - LP: #1084539 + * MIPS: ath79: Fix CPU/DDR frequency calculation for SRIF PLLs + - LP: #1084539 + * jbd: Fix assertion failure in commit code due to lacking transaction + credits + - LP: #1084539 + * nfsd4: fix nfs4 stateid leak + - LP: #1084539 + * NFSD: pass null terminated buf to kstrtouint() + - LP: #1084539 + * mfd: 88pm860x: Move _IO resources out of ioport_ioresource + - LP: #1084539 + * target: support zero allocation length in INQUIRY + - LP: #1084539 + * target: fix truncation of mode data, support zero allocation length + - LP: #1084539 + * target: fix return code in target_core_init_configfs error path + - LP: #1084539 + * powerpc/eeh: Lock module while handling EEH event + - LP: #1084539 + * SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT + - LP: #1084539 + * ext4: remove erroneous ext4_superblock_csum_set() in update_backups() + - LP: #1084539 + * block: remove the duplicated setting for congestion_threshold + - LP: #1084539 + * block: lift the initial queue bypass mode on blk_register_queue() + instead of blk_init_allocated_queue() + - LP: #1084539 + * block: fix request_queue->flags initialization + - LP: #1084539 + * viafb: don't touch clock state on OLPC XO-1.5 + - LP: #1084539 + * qla2xxx: Fix endianness of task management response code + - LP: #1084539 + * iscsi-target: Correctly set 0xffffffff field within ISCSI_OP_REJECT PDU + - LP: #1084539 + * drm/i915: use adjusted_mode instead of mode for checking the 6bpc force + flag + - LP: #1084539 + * kbuild: Do not package /boot and /lib in make tar-pkg + - LP: #1084539 + * module: taint kernel when lve module is loaded + - LP: #1084539 + * mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver + - LP: #1084539 + * nfsd4: don't pin clientids to pseudoflavors + - LP: #1084539 + * lockd: use rpc client's cl_nodename for id encoding + - LP: #1084539 + * pnfsblock: fix partial page buffer wirte + - LP: #1084539 + * pnfsblock: fix non-aligned DIO read + - LP: #1084539 + * pnfsblock: fix non-aligned DIO write + - LP: #1084539 + * target/file: Re-enable optional fd_buffered_io=1 operation + - LP: #1084539 + * iscsi-target: Add explicit set of cache_dynamic_acls=1 for TPG + demo-mode + - LP: #1084539 + * iscsit: remove incorrect unlock in iscsit_build_sendtargets_resp + - LP: #1084539 + * iscsi-target: Bump defaults for nopin_timeout + nopin_response_timeout + values + - LP: #1084539 + * drivers/dma/dmaengine.c: lower the priority of 'failed to get' dma + channel message + - LP: #1084539 + * ath9k: use ieee80211_free_txskb + - LP: #1084539 + * ALSA: hda - Fix hang caused by race during suspend. + - LP: #1084539 + * ACPI: EC: Make the GPE storm threshold a module parameter + - LP: #1084539 + * ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop + - LP: #1084539 + * mmc: sdhci-s3c: fix the wrong number of max bus clocks + - LP: #1084539 + * mac80211: use ieee80211_free_txskb to fix possible skb leaks + - LP: #1084539 + * ARM: OMAP: counter: add locking to read_persistent_clock + - LP: #1084539 + * ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels + - LP: #1084539 + * scsi_debug: Fix off-by-one bug when unmapping region + - LP: #1084539 + * storvsc: Account for in-transit packets in the RESET path + - LP: #1084539 + * firewire: cdev: fix user memory corruption (i386 userland on amd64 + kernel) + - LP: #1084539 + * timers: Fix endless looping between cascade() and internal_add_timer() + - LP: #1084539 + * timekeeping: Cast raw_interval to u64 to avoid shift overflow + - LP: #1084539 + * video/udlfb: fix line counting in fb_write + - LP: #1084539 + * tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking + - LP: #1084539 + * ALSA: hda - Add missing hda_gen_spec to struct via_spec + - LP: #1084539 + * ALSA: hda - Fix memory leaks at error path in patch_cirrus.c + - LP: #1084539 + * autofs4 - fix reset pending flag on mount fail + - LP: #1084539 + * pktgen: fix crash when generating IPv6 packets + - LP: #1084539 + * md/raid10: use correct limit variable + - LP: #1084539 + * mips,kgdb: fix recursive page fault with CONFIG_KPROBES + - LP: #1084539 + * kdb,vt_console: Fix missed data due to pager overruns + - LP: #1084539 + * xen/bootup: allow read_tscp call for Xen PV guests. + - LP: #1084539 + * xen/bootup: allow {read|write}_cr8 pvops call. + - LP: #1084539 + * libceph: eliminate connection state "DEAD" + - LP: #1084539 + * libceph: kill bad_proto ceph connection op + - LP: #1084539 + * libceph: rename socket callbacks + - LP: #1084539 + * libceph: rename kvec_reset and kvec_add functions + - LP: #1084539 + * libceph: embed ceph messenger structure in ceph_client + - LP: #1084539 + * libceph: start separating connection flags from state + - LP: #1084539 + * libceph: start tracking connection socket state + - LP: #1084539 + * libceph: provide osd number when creating osd + - LP: #1084539 + * libceph: set CLOSED state bit in con_init + - LP: #1084539 + * libceph: embed ceph connection structure in mon_client + - LP: #1084539 + * libceph: drop connection refcounting for mon_client + - LP: #1084539 + * libceph: init monitor connection when opening + - LP: #1084539 + * libceph: fully initialize connection in con_init() + - LP: #1084539 + * libceph: tweak ceph_alloc_msg() + - LP: #1084539 + * libceph: have messages point to their connection + - LP: #1084539 + * libceph: have messages take a connection reference + - LP: #1084539 + * libceph: make ceph_con_revoke() a msg operation + - LP: #1084539 + * libceph: make ceph_con_revoke_message() a msg op + - LP: #1084539 + * libceph: fix overflow in __decode_pool_names() + - LP: #1084539 + * libceph: fix overflow in osdmap_decode() + - LP: #1084539 + * libceph: fix overflow in osdmap_apply_incremental() + - LP: #1084539 + * libceph: transition socket state prior to actual connect + - LP: #1084539 + * libceph: fix NULL dereference in reset_connection() + - LP: #1084539 + * libceph: use con get/put methods + - LP: #1084539 + * libceph: drop ceph_con_get/put helpers and nref member + - LP: #1084539 + * libceph: encapsulate out message data setup + - LP: #1084539 + * libceph: encapsulate advancing msg page + - LP: #1084539 + * libceph: don't mark footer complete before it is + - LP: #1084539 + * libceph: move init_bio_*() functions up + - LP: #1084539 + * libceph: move init of bio_iter + - LP: #1084539 + * libceph: don't use bio_iter as a flag + - LP: #1084539 + * libceph: SOCK_CLOSED is a flag, not a state + - LP: #1084539 + * libceph: don't change socket state on sock event + - LP: #1084539 + * libceph: just set SOCK_CLOSED when state changes + - LP: #1084539 + * libceph: don't touch con state in con_close_socket() + - LP: #1084539 + * libceph: clear CONNECTING in ceph_con_close() + - LP: #1084539 + * libceph: clear NEGOTIATING when done + - LP: #1084539 + * libceph: define and use an explicit CONNECTED state + - LP: #1084539 + * libceph: separate banner and connect writes + - LP: #1084539 + * libceph: distinguish two phases of connect sequence + - LP: #1084539 + * libceph: small changes to messenger.c + - LP: #1084539 + * libceph: add some fine ASCII art + - LP: #1084539 + * libceph: set peer name on con_open, not init + - LP: #1084539 + * libceph: initialize mon_client con only once + - LP: #1084539 + * libceph: allow sock transition from CONNECTING to CLOSED + - LP: #1084539 + * libceph: initialize msgpool message types + - LP: #1084539 + * libceph: prevent the race of incoming work during teardown + - LP: #1084539 + * libceph: report socket read/write error message + - LP: #1084539 + * libceph: fix mutex coverage for ceph_con_close + - LP: #1084539 + * libceph: resubmit linger ops when pg mapping changes + - LP: #1084539 + * libceph: (re)initialize bio_iter on start of message receive + - LP: #1084539 + * libceph: protect ceph_con_open() with mutex + - LP: #1084539 + * libceph: reset connection retry on successfully negotiation + - LP: #1084539 + * libceph: fix fault locking; close socket on lossy fault + - LP: #1084539 + * libceph: move msgr clear_standby under con mutex protection + - LP: #1084539 + * libceph: move ceph_con_send() closed check under the con mutex + - LP: #1084539 + * libceph: drop gratuitous socket close calls in con_work + - LP: #1084539 + * libceph: close socket directly from ceph_con_close() + - LP: #1084539 + * libceph: drop unnecessary CLOSED check in socket state change callback + - LP: #1084539 + * libceph: replace connection state bits with states + - LP: #1084539 + * libceph: clean up con flags + - LP: #1084539 + * libceph: clear all flags on con_close + - LP: #1084539 + * libceph: fix handling of immediate socket connect failure + - LP: #1084539 + * libceph: revoke mon_client messages on session restart + - LP: #1084539 + * libceph: verify state after retaking con lock after dispatch + - LP: #1084539 + * libceph: avoid dropping con mutex before fault + - LP: #1084539 + * libceph: change ceph_con_in_msg_alloc convention to be less weird + - LP: #1084539 + * libceph: recheck con state after allocating incoming message + - LP: #1084539 + * libceph: fix crypto key null deref, memory leak + - LP: #1084539 + * libceph: delay debugfs initialization until we learn global_id + - LP: #1084539 + * libceph: avoid truncation due to racing banners + - LP: #1084539 + * libceph: only kunmap kmapped pages + - LP: #1084539 + * rbd: reset BACKOFF if unable to re-queue + - LP: #1084539 + * libceph: avoid NULL kref_put when osd reset races with alloc_msg + - LP: #1084539 + * ceph: fix dentry reference leak in encode_fh() + - LP: #1084539 + * ceph: Fix oops when handling mdsmap that decreases max_mds + - LP: #1084539 + * libceph: check for invalid mapping + - LP: #1084539 + * ceph: avoid 32-bit page index overflow + - LP: #1084539 + * ASoC: wm2200: Use rev A register patches on rev B + - LP: #1084539 + * ASoC: wm2200: Fix non-inverted OUT2 mute control + - LP: #1084539 + * drm/i915: remove useless BUG_ON which caused a regression in 3.5. + - LP: #1084539 + * USB: Enable LPM after a failed probe. + - LP: #1084539 + * usb: Don't enable LPM if the exit latency is zero. + - LP: #1084539 + * usb: Send Set SEL before enabling parent U1/U2 timeout. + - LP: #1084539 + * ASoC: fsi: don't reschedule DMA from an atomic context + - LP: #1084539 + * drm/i915: Set guardband clipping workaround bit in the right register. + - LP: #1084539 + * pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops + - LP: #1084539 + * hwmon: (coretemp) Add support for Atom CE4110/4150/4170 + - LP: #1084539 + * ALSA: hda - Fix registration race of VGA switcheroo + - LP: #1084539 + * usb: dwc3: gadget: fix 'endpoint always busy' bug + - LP: #1084539 + * usb: musb: am35xx: drop spurious unplugging a device + - LP: #1084539 + * drm/radeon: Don't destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy(). + - LP: #1084539 + * ALSA: hda - Always check array bounds in alc_get_line_out_pfx + - LP: #1084539 + * NLM: nlm_lookup_file() may return NLMv4-specific error codes + - LP: #1084539 + * x86: Exclude E820_RESERVED regions and memory holes above 4 GB from + direct mapping. + - LP: #1084539 + * SUNRPC: Prevent kernel stack corruption on long values of flush + - LP: #1084539 + * USB: cdc-acm: fix pipe type of write endpoint + - LP: #1084539 + * usb: acm: fix the computation of the number of data bits + - LP: #1084539 + * usb: host: xhci: New system added for Compliance Mode Patch on + SN65LVPE502CP + - LP: #1084539 + * USB: option: blacklist net interface on ZTE devices + - LP: #1084539 + * USB: option: add more ZTE devices + - LP: #1084539 + * ext4: race-condition protection for + ext4_convert_unwritten_extents_endio + - LP: #1084539 + * ext4: fix metadata checksum calculation for the superblock + - LP: #1084539 + * nohz: Fix idle ticks in cpu summary line of /proc/stat + - LP: #1084539 + * ring-buffer: Check for uninitialized cpu buffer before resizing + - LP: #1084539 + * Bluetooth: SMP: Fix setting unknown auth_req bits + - LP: #1084539 + * oprofile, x86: Fix wrapping bug in op_x86_get_ctrl() + - LP: #1084539 + * cfg80211/mac80211: avoid state mishmash on deauth + - LP: #1084539 + * mac80211: check if key has TKIP type before updating IV + - LP: #1084539 + * mac80211: use ieee80211_free_txskb in a few more places + - LP: #1084539 + * bcma: fix unregistration of cores + - LP: #1084539 + * net/wireless: ipw2200: Fix panic occurring in + ipw_handle_promiscuous_tx() + - LP: #1084539 + * iwlwifi: fix 6000 series channel switch command + - LP: #1084539 + * cgroup: notify_on_release may not be triggered in some cases + - LP: #1084539 + * dt: Document: correct tegra20/30 pinctrl slew-rate name + - LP: #1084539 + * pinctrl: tegra: set low power mode bank width to 2 + - LP: #1084539 + * pinctrl: tegra: correct bank for pingroup and drv pingroup + - LP: #1084539 + * s390: fix linker script for 31 bit builds + - LP: #1084539 + * pinctrl: remove mutex lock in groups show + - LP: #1084539 + * xen/x86: don't corrupt %eip when returning from a signal handler + - LP: #1084539 + * ALSA: hda - Fix silent headphone output from Toshiba P200 + - LP: #1084539 + * ext4: Checksum the block bitmap properly with bigalloc enabled + - LP: #1084539 + * ARM: 7559/1: smp: switch away from the idmap before updating + init_mm.mm_count + - LP: #1084539 + * usb hub: send clear_tt_buffer_complete events when canceling TT clear + work + - LP: #1084539 + * staging: comedi: amplc_pc236: fix invalid register access during detach + - LP: #1084539 + * Staging: android: binder: Fix memory leak on thread/process exit + - LP: #1084539 + * Staging: android: binder: Allow using highmem for binder buffers + - LP: #1084539 + * ext4: Avoid underflow in ext4_trim_fs() + - LP: #1084539 + * cpufreq / powernow-k8: Remove usage of smp_processor_id() in + preemptible code + - LP: #1084539 + * extcon: Unregister compat class at module unload to fix oops + - LP: #1084539 + * extcon: unregister compat link on cleanup + - LP: #1084539 + * pinctrl: fix missing unlock on error in pinctrl_groups_show() + - LP: #1084539 + * arch/tile: avoid generating .eh_frame information in modules + - LP: #1084539 + * drm/radeon: add some new SI PCI ids + - LP: #1084539 + * drm/radeon: add error output if VM CS fails on cayman + - LP: #1084539 + * xhci: endianness xhci_calculate_intel_u2_timeout + - LP: #1084539 + * xhci: fix integer overflow + - LP: #1084539 + * dmaengine: imx-dma: fix missing unlock on error in imxdma_xfer_desc() + - LP: #1084539 + * x86-64: Fix page table accounting + - LP: #1084539 + * dmaengine: sirf: fix a typo in dma_prep_interleaved + - LP: #1084539 + * dmaengine: sirf: fix a typo in moving running dma_desc to active queue + - LP: #1084539 + * amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] + - LP: #1084539 + * SUNRPC: Clear the connect flag when socket state is TCP_CLOSE_WAIT + - LP: #1084539 + * SUNRPC: Prevent races in xs_abort_connection() + - LP: #1084539 + * SUNRPC: Get rid of the xs_error_report socket callback + - LP: #1084539 + * iommu/tegra: smmu: Fix deadly typo + - LP: #1084539 + * ARM: at91/tc: fix typo in the DT document + - LP: #1084539 + * ARM: at91: at91sam9g10: fix SOC type detection + - LP: #1084539 + * ARM: at91/i2c: change id to let i2c-gpio work + - LP: #1084539 + * b43: Fix oops on unload when firmware not found + - LP: #1084539 + * USB: serial: Fix memory leak in sierra_release() + - LP: #1084539 + * x86, mm: Trim memory in memblock to be page aligned + - LP: #1084539 + * x86, mm: Use memblock memory loop instead of e820_RAM + - LP: #1084539 + * usb-storage: add unusual_devs entry for Casio EX-N1 digital camera + - LP: #1084539 + * Drivers: hv: Cleanup error handling in vmbus_open() + - LP: #1084539 + * sysfs: sysfs_pathname/sysfs_add_one: Use strlcat() instead of strcat() + - LP: #1084539 + * vhost: fix mergeable bufs on BE hosts + - LP: #1084539 + * USB: metro-usb: fix io after disconnect + - LP: #1084539 + * USB: whiteheat: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix io after disconnect + - LP: #1084539 + * USB: opticon: fix DMA from stack + - LP: #1084539 + * USB: opticon: fix memory leak in error path + - LP: #1084539 + * USB: mct_u232: fix broken close + - LP: #1084539 + * USB: sierra: fix memory leak in attach error path + - LP: #1084539 + * USB: sierra: fix memory leak in probe error path + - LP: #1084539 + * USB: mos7840: fix urb leak at release + - LP: #1084539 + * USB: mos7840: fix port-device leak in error path + - LP: #1084539 + * USB: mos7840: remove NULL-urb submission + - LP: #1084539 + * USB: mos7840: remove invalid disconnect handling + - LP: #1084539 + * ehci: fix Lucid nohandoff pci quirk to be more generic with BIOS + versions + - LP: #1084539 + * ehci: Add yet-another Lucid nohandoff pci quirk + - LP: #1084539 + * xhci: Fix potential NULL ptr deref in command cancellation. + - LP: #1084539 + * freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD + - LP: #1084539 + * mm: fix XFS oops due to dirty pages without buffers on s390 + - LP: #1084539 + * genalloc: stop crashing the system when destroying a pool + - LP: #1084539 + * drivers/rtc/rtc-imxdi.c: add missing spin lock initialization + - LP: #1084539 + * gen_init_cpio: avoid stack overflow when expanding + - LP: #1084539 + * fs/compat_ioctl.c: VIDEO_SET_SPU_PALETTE missing error check + - LP: #1084539 + * qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan + - LP: #1084539 + * efi: Defer freeing boot services memory until after ACPI init + - LP: #1084539 + * x86: efi: Turn off efi_enabled after setup on mixed fw/kernel + - LP: #1082059, #1084539 + * target: Re-add explict zeroing of INQUIRY bounce buffer memory + - LP: #1084539 + * ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and + CONFIG_VFPv3 set + - LP: #1084539 + * libceph: drop declaration of ceph_con_get() + - LP: #1084539 + * x86, mm: Find_early_table_space based on ranges that are actually being + mapped + - LP: #1084539 + * x86, mm: Undo incorrect revert in arch/x86/mm/init.c + - LP: #1084539 + * Linux 3.5.7.1 + - LP: #1084539 + * ALSA: hda - Cirrus: Correctly clear line_out_pins when moving to + speaker + - LP: #1076840 + * Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] + - LP: #898826 + * i915_hsw: drm/i915: Reserve ioctl numbers for set/get_caching + - LP: #1085245 + * i915_hsw: drm: Export drm_probe_ddc() + - LP: #1085245 + * i915_hsw: drm: remove the raw_edid field from struct drm_display_info + - LP: #1085245 + * i915_hsw: drm/i915: fix hsw uncached pte + - LP: #1085245 + * i915_hsw: drm/fb-helper: delay hotplug handling when partially bound + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_crtc_helper_set_config + - LP: #1085245 + * i915_hsw: drm/fb-helper: don't clobber output routing in setup_crtcs + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_helper_connector_dpms directly + - LP: #1085245 + * i915_hsw: drm/edid: Fix potential memory leak in edid_load() + - LP: #1085245 + + -- Luis Henriques Wed, 05 Dec 2012 11:53:06 +0000 + +linux (3.5.0-19.30) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1078041 + + [ Andy Whitcroft ] + + * [Config] update Vcs-git: to point to quantal + - LP: #1069204 + + [ Joseph Salisbury ] + + * SAUCE: ALSA: hda - add quirk for Thinkpad T430 + - LP: #1060372 + + [ Tim Gardner ] + + * [Config] CONFIG_USB_OTG=n for all but armel/armhf + - LP: #1047527 + * [Config] remove ndiswrapper from Provides: + - LP: #1076395 + * [Config] ONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + + [ Upstream Kernel Changes ] + + * kernel/sys.c: fix stack memory content leak via UNAME26 + - LP: #1065622, #1060521 + - CVE-2012-0957 + * use clamp_t in UNAME26 fix + - LP: #1065622, #1060521 + - CVE-2012-0957 + * net: fix divide by zero in tcp algorithm illinois + - LP: #1077091 + - CVE-2012-4565 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Add a load_firmware callback to struct hci_dev + - LP: #1065400 + * SAUCE: Bluetooth: Implement broadcom patchram firmware loader + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Luis Henriques Tue, 13 Nov 2012 15:49:15 +0000 + +linux (3.5.0-18.29) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1068224 + + [ Andy Whitcroft ] + + * [packaging] do not fail secure copy on older kernels + * SAUCE: efivarfs: efivarfs_file_read ensure we free data in error paths + - LP: #1063061 + * SAUCE: efivars: efivarfs_create() ensure we drop our reference on inode + on error + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() fix inode reference counts + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we free our temporary + name + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we clean up correctly on + error + - LP: #1063061 + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + + [ Jeremy Kerr ] + + * SAUCE: efi: Handle deletions and size changes in efivarfs_write_file + - LP: #1063061 + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad list additional contributors + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix lost sync upon palm contact + - LP: #1048258 + * SAUCE: input: Cypress PS/2 Trackpad fix taps turning into hardware + clicks + - LP: #1064086 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: fix crash when accessing /proc/mounts + concurrently" + - LP: #1066176 + * Revert "SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec" + - LP: #1066176 + + [ Lee, Chun-Yi ] + + * SAUCE: efi: add efivars kobject to efi sysfs folder + - LP: #1063061 + + [ Matt Fleming ] + + * SAUCE: efivarfs: Add documentation for the EFI variable filesystem + - LP: #1063061 + + [ Matthew Garrett ] + + * SAUCE: efi: Add support for a UEFI variable filesystem + - LP: #1063061 + + [ Sarveshwar Bandi ] + + * SAUCE: bridge: Pull ip header into skb->data before looking into ip + header. + - LP: #1065150 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: correctly order the ring init sequence" + - LP: #1066176 + * vfs: dcache: fix deadlock in tree traversal + - LP: #1063761 + * dm mpath: only retry ioctl when no paths if queue_if_no_path set + - LP: #1063761 + * dm: handle requests beyond end of device instead of using BUG_ON + - LP: #1063761 + * dm table: clear add_random unless all devices have it set + - LP: #1063761 + * dm verity: fix overflow check + - LP: #1063761 + * usb: gadget: make g_printer enumerate again + - LP: #1063761 + * usb: gadget: initialize the strings in tcm_usb_gadget properly + - LP: #1063761 + * USB: option: blacklist QMI interface on ZTE MF683 + - LP: #1063761 + * USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support + - LP: #1063761 + * USB: qcaux: add Pantech vendor class match + - LP: #1063761 + * usb: host: xhci: Fix Null pointer dereferencing with 71c731a for + non-x86 systems + - LP: #1063761 + * USB: serial: fix up bug with missing {} + - LP: #1063761 + * staging: speakup_soft: Fix reading of init string + - LP: #1063761 + * tty: keyboard.c: Remove locking from vt_get_leds. + - LP: #1063761 + * staging: r8712u: Do not queue cloned skb + - LP: #1063761 + * staging: comedi: s626: don't dereference insn->data + - LP: #1063761 + * staging: comedi: jr3_pci: fix iomem dereference + - LP: #1063761 + * staging: comedi: don't dereference user memory for INSN_INTTRIG + - LP: #1063761 + * staging: comedi: fix memory leak for saved channel list + - LP: #1063761 + * Remove BUG_ON from n_tty_read() + - LP: #1063761 + * TTY: ttyprintk, don't touch behind tty->write_buf + - LP: #1063761 + * serial: omap: fix software flow control + - LP: #1063761 + * serial: pl011: handle corruption at high clock speeds + - LP: #1063761 + * serial: set correct baud_base for EXSYS EX-41092 Dual 16950 + - LP: #1063761 + * tools/hv: Fix file handle leak + - LP: #1063761 + * tools/hv: Fix exit() error code + - LP: #1063761 + * tools/hv: Check for read/write errors + - LP: #1063761 + * b43legacy: Fix crash on unload when firmware not available + - LP: #1063761 + * firmware: Add missing attributes to EFI variable attribute print out + from sysfs + - LP: #1063761 + * xhci: Intel Panther Point BEI quirk. + - LP: #1063761 + * xHCI: add cmd_ring_state + - LP: #1063761 + * xHCI: add aborting command ring function + - LP: #1063761 + * xHCI: cancel command after command timeout + - LP: #1063761 + * xHCI: handle command after aborting the command ring + - LP: #1063761 + * Increase XHCI suspend timeout to 16ms + - LP: #1063761 + * HID: keep dev_rdesc unmodified and use it for comparisons + - LP: #1049623, #1063761 + * ath9k: Disable ASPM only for AR9285 + - LP: #1063761 + * xen/pciback: Restore the PCI config space after an FLR. + - LP: #1063761 + * coredump: prevent double-free on an error path in core dumper + - LP: #1063761 + * n_gsm.c: Implement 3GPP27.010 DLC start-up procedure in MUX + - LP: #1063761 + * n_gsm: uplink SKBs accumulate on list + - LP: #1063761 + * n_gsm: added interlocking for gsm_data_lock for certain code paths + - LP: #1063761 + * n_gsm: memory leak in uplink error path + - LP: #1063761 + * UBI: fix autoresize handling in R/O mode + - LP: #1063761 + * UBI: erase free PEB with bitflip in EC header + - LP: #1063761 + * Yama: handle 32-bit userspace prctl + - LP: #1063761 + * SCSI: ibmvscsi: Fix host config length field overflow + - LP: #1063761 + * SCSI: hpsa: Use LUN reset instead of target reset + - LP: #1063761 + * can: mscan-mpc5xxx: fix return value check in mpc512x_can_get_clock() + - LP: #1063761 + * remoteproc: select VIRTIO to avoid build breakage + - LP: #1063761 + * remoteproc: fix a potential NULL-dereference on cleanup + - LP: #1063761 + * IPoIB: Fix use-after-free of multicast object + - LP: #1063761 + * IB/srp: Fix use-after-free in srp_reset_req() + - LP: #1063761 + * IB/srp: Avoid having aborted requests hang + - LP: #1063761 + * isci: fix isci_pci_probe() generates warning on efi failure path + - LP: #1063761 + * x86/alternatives: Fix p6 nops on non-modular kernels + - LP: #1063761 + * SCSI: scsi_remove_target: fix softlockup regression on hot remove + - LP: #1063761 + * SCSI: scsi_dh_alua: Enable STPG for unavailable ports + - LP: #1063761 + * Linux 3.5.6 + - LP: #1063761 + * au0828: fix case where STREAMOFF being called on stopped stream causes + BUG() + - LP: #1062917 + * ALSA: hda - do not detect jack on internal speakers for Realtek + - LP: #1064621 + * HID: Remove QUANTA from special drivers list + - LP: #1064921 + * drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 + - LP: #1064924 + * Revert dyndbg: fix for SOH in logging messages + - LP: #1066176 + * mn10300: only add -mmem-funcs to KBUILD_CFLAGS if gcc supports it + - LP: #1066176 + * kbuild: make: fix if_changed when command contains backslashes + - LP: #1066176 + * kbuild: Fix gcc -x syntax + - LP: #1066176 + * slab: fix the DEADLOCK issue on l3 alien lock + - LP: #1066176 + * intel-iommu: Default to non-coherent for domains unattached to iommus + - LP: #1066176 + * ARM: 7548/1: include linux/sched.h in syscall.h + - LP: #1066176 + * em28xx: Make all em28xx extensions to be initialized asynchronously + - LP: #1066176 + * media: rc: ite-cir: Initialise ite_dev::rdev earlier + - LP: #1066176 + * media: gspca_pac7302: add support for device 1ae7:2001 Speedlink Snappy + Microphone SL-6825-SBK + - LP: #1066176 + * ACPI: run _OSC after ACPI_FULL_INITIALIZATION + - LP: #1066176 + * PCI: acpiphp: check whether _ADR evaluation succeeded + - LP: #1066176 + * mfd: max8925: Move _IO resources out of ioport_ioresource + - LP: #1066176 + * lib/gcd.c: prevent possible div by 0 + - LP: #1066176 + * kernel/sys.c: call disable_nonboot_cpus() in kernel_restart() + - LP: #1066176 + * drivers/scsi/atp870u.c: fix bad use of udelay + - LP: #1066176 + * lguest: fix occasional crash in example launcher. + - LP: #1066176 + * powerpc/eeh: Fix crash on converting OF node to edev + - LP: #1066176 + * ixgbe: fix PTP ethtool timestamping function + - LP: #1066176 + * rapidio/rionet: fix multicast packet transmit logic + - LP: #1066176 + * PM / Sleep: use resume event when call dpm_resume_early + - LP: #1066176 + * workqueue: add missing smp_wmb() in process_one_work() + - LP: #1066176 + * jbd2: don't write superblock when if its empty + - LP: #1066176 + * localmodconfig: Fix localyesconfig to set to 'y' not 'm' + - LP: #1066176 + * bnx2x: fix rx checksum validation for IPv6 + - LP: #1066176 + * tcp: fix regression in urgent data handling + - LP: #1066176 + * xfrm: Workaround incompatibility of ESN and async crypto + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL #2 + - LP: #1066176 + * xfrm: fix a read lock imbalance in make_blackhole + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_auth() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_state() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_policy() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_tmpl() + - LP: #1066176 + * xfrm_user: don't copy esn replay window twice for new states + - LP: #1066176 + * net: ethernet: davinci_cpdma: decrease the desc count when cleaning up + the remaining packets + - LP: #1066176 + * ixp4xx_hss: fix build failure due to missing linux/module.h inclusion + - LP: #1066176 + * netxen: check for root bus in netxen_mask_aer_correctable + - LP: #1066176 + * net-sched: sch_cbq: avoid infinite loop + - LP: #1066176 + * pkt_sched: fix virtual-start-time update in QFQ + - LP: #1066176 + * sierra_net: Endianess bug fix. + - LP: #1066176 + * 8021q: fix mac_len recomputation in vlan_untag() + - LP: #1066176 + * batman-adv: make batadv_test_bit() return 0 or 1 only + - LP: #1066176 + * ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt + - LP: #1066176 + * ipv6: del unreachable route when an addr is deleted on lo + - LP: #1066176 + * ipv6: fix return value check in fib6_add() + - LP: #1066176 + * tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero + - LP: #1066176 + * sctp: Don't charge for data in sndbuf again when transmitting packet + - LP: #1066176 + * pppoe: drop PPPOX_ZOMBIEs in pppoe_release + - LP: #1066176 + * net: small bug on rxhash calculation + - LP: #1066176 + * net: guard tcp_set_keepalive() to tcp sockets + - LP: #1066176 + * ipv4: raw: fix icmp_filter() + - LP: #1066176 + * ipv6: raw: fix icmpv6_filter() + - LP: #1066176 + * ipv6: mip6: fix mip6_mh_filter() + - LP: #1066176 + * l2tp: fix a typo in l2tp_eth_dev_recv() + - LP: #1066176 + * netrom: copy_datagram_iovec can fail + - LP: #1066176 + * net: do not disable sg for packets requiring no checksum + - LP: #1066176 + * aoe: assert AoE packets marked as requiring no checksum + - LP: #1066176 + * drm/savage: re-add busmaster enable, regression fix + - LP: #1066176 + * SCSI: zfcp: Adapt to new FC_PORTSPEED semantics + - LP: #1066176 + * SCSI: zfcp: Make trace record tags unique + - LP: #1066176 + * SCSI: zfcp: Bounds checking for deferred error trace + - LP: #1066176 + * SCSI: zfcp: Do not wakeup while suspended + - LP: #1066176 + * SCSI: zfcp: remove invalid reference to list iterator variable + - LP: #1066176 + * SCSI: zfcp: restore refcount check on port_remove + - LP: #1066176 + * SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device + - LP: #1066176 + * PCI: Check P2P bridge for invalid secondary/subordinate range + - LP: #1066176 + * ext4: ignore last group w/o enough space when resizing instead of + BUG'ing + - LP: #1066176 + * ext4: don't copy non-existent gdt blocks when resizing + - LP: #1066176 + * ext4: avoid duplicate writes of the backup bg descriptor blocks + - LP: #1066176 + * ext4: fix potential deadlock in ext4_nonda_switch() + - LP: #1066176 + * ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1066176 + * ext4: move_extent code cleanup + - LP: #1066176 + * ext4: online defrag is not supported for journaled files + - LP: #1066176 + * ext4: always set i_op in ext4_mknod() + - LP: #1066176 + * ext4: fix fdatasync() for files with only i_size changes + - LP: #1066176 + * xfrm_user: ensure user supplied esn replay window is valid + - LP: #1066176 + * ASoC: wm_hubs: Ensure volume updates are handled during class W startup + - LP: #1066176 + * ASoC: wm9712: Fix name of Capture Switch + - LP: #1066176 + * kpageflags: fix wrong KPF_THP on non-huge compound pages + - LP: #1066176 + * hugetlb: do not use vma_hugecache_offset() for vma_prio_tree_foreach + - LP: #1066176 + * mm: fix invalidate_complete_page2() lock ordering + - LP: #1066176 + * mm: thp: fix pmd_present for split_huge_page and PROT_NONE with THP + - LP: #1066176 + * MIPS: ath79: use correct fractional dividers for {CPU,DDR}_PLL on + AR934x + - LP: #1066176 + * drm/i915: prevent possible pin leak on error path + - LP: #1066176 + * ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310 + - LP: #1066176 + * ALSA: aloop - add locking to timer access + - LP: #1066176 + * ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690, #1066176 + * ALSA: hda - limit internal mic boost for Asus X202E + - LP: #1052460, #1066176 + * ALSA: usb - disable broken hw volume for Tenx TP6911 + - LP: #1066176, #559939 + * ALSA: USB: Support for (original) Xbox Communicator + - LP: #1066176 + * drm/nvc0/fence: restore pre-suspend fence buffer context on resume + - LP: #1066176 + * drm: Destroy the planes prior to destroying the associated CRTC + - LP: #1066176 + * drm/radeon: only adjust default clocks on NI GPUs + - LP: #1066176 + * drm/radeon: Add MSI quirk for gateway RS690 + - LP: #1066176 + * drm/radeon: force MSIs on RS690 asics + - LP: #1066176 + * drm/i915: Flush the pending flips on the CRTC before modification + - LP: #1066176 + * drm/i915: call drm_handle_vblank before finish_page_flip + - LP: #1066176 + * drm/i915: Fix GT_MODE default value + - LP: #1066176 + * ia64: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * h8300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * parisc: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * xtensa: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * frv: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * mn10300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m68k: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * alpha: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * cris: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m32r: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * score: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * rcu: Fix day-one dyntick-idle stall-warning bug + - LP: #1066176 + * revert "mm: mempolicy: Let vma_merge and vma_split handle + vma->vm_policy linkages" + - LP: #1066176 + * mempolicy: remove mempolicy sharing + - LP: #1066176 + * mempolicy: fix a race in shared_policy_replace() + - LP: #1066176 + * mempolicy: fix refcount leak in mpol_set_shared_policy() + - LP: #1066176 + * mempolicy: fix a memory corruption by refcount imbalance in + alloc_pages_vma() + - LP: #1066176 + * efi: Build EFI stub with EFI-appropriate options + - LP: #1066176 + * efi: initialize efi.runtime_version to make + query_variable_info/update_capsule workable + - LP: #1066176 + * CPU hotplug, cpusets, suspend: Don't modify cpusets during + suspend/resume + - LP: #1066176 + * mtd: mtdpart: break it as soon as we parse out the partitions + - LP: #1066176 + * mtd: autcpu12-nvram: Fix compile breakage + - LP: #1066176 + * mtd: nandsim: bugfix: fail if overridesize is too big + - LP: #1066176 + * mtd: nand: Use the mirror BBT descriptor when reading its version + - LP: #1066176 + * mtd: omap2: fix omap_nand_remove segfault + - LP: #1066176 + * mtd: omap2: fix module loading + - LP: #1066176 + * mmc: omap_hsmmc: Pass on the suspend failure to the PM core + - LP: #1066176 + * mmc: sh-mmcif: avoid oops on spurious interrupts + - LP: #1066176 + * JFFS2: fix unmount regression + - LP: #1066176 + * JFFS2: don't fail on bitflips in OOB + - LP: #1066176 + * cifs: reinstate the forcegid option + - LP: #1066176 + * Convert properly UTF-8 to UTF-16 + - LP: #1066176 + * Linux 3.5.7 + - LP: #1066176 + + -- Luis Henriques Thu, 18 Oct 2012 17:43:41 +0100 + +linux (3.5.0-17.28) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] we already have a valid src_pkg_name + * [packaging] allow us to select which builds have uefi signed versions + + [ James M Leddy ] + + * SAUCE: input: fix weird issue of synaptics psmouse sync lost after + resume + - LP: #717970 + + [ Paolo Pisati ] + + * SAUCE: omap3 clocks .dev_id = NULL + - LP: #1061599 + * [Config] omap: disable USB_[EHCI|OHCI]_HCD_PLATFORM + - LP: #1061599 + * [Config] omap: enforce USB_[EHCI|OHCI]_HCD_PLATFORM=n + - LP: #1061599 + + [ Stefan Bader ] + + * SAUCE: net/ipv4: Always flush route cache on unregister batch call + - LP: #1021471 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn + - LP: #1030233 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Remove rules for matching Broadcom vendor specific + IDs + - LP: #1030233 + + -- Leann Ogasawara Tue, 09 Oct 2012 11:23:41 -0700 + +linux (3.5.0-17.27) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] add custom upload for the kernel binary package + + -- Andy Whitcroft Thu, 04 Oct 2012 22:14:01 +0100 + +linux (3.5.0-17.26) quantal-proposed; urgency=low + + [ David Henningsson ] + + * SAUCE: ALSA: hda - fix indices on boost volume on Conexant + - LP: #1059523 + + [ Leann Ogasawara ] + + * [Config] Build in CONFIG_X86_PCC_CPUFREQ=y + - LP: #1061126 + + [ Rob Herring ] + + * Revert "SAUCE: ahci_platform: add custom hard reset for Calxeda ahci + ctrlr" + - LP: #1059432 + * Revert "SAUCE: net: calxedaxgmac: add write barriers around setting + owner bit" + - LP: #1059432 + * Revert "SAUCE: ARM: highbank: use writel_relaxed variant for pwr + requests" + - LP: #1059432 + * Revert "SAUCE: force DMA buffers to non-bufferable on highbank" + - LP: #1059432 + * Revert "SAUCE: input: add a key driver for highbank" + - LP: #1059432 + * [Config] Align highbank config with amd64-generic and add new configs + - LP: #1059432 + * SAUCE: net: calxedaxgmac: enable operate on 2nd frame mode + - LP: #1059432 + * SAUCE: net: calxedaxgmac: remove explicit rx dma buffer polling + - LP: #1059432 + * SAUCE: net: calxedaxgmac: use relaxed i/o accessors in rx and tx paths + - LP: #1059432 + * SAUCE: net: calxedaxgmac: drop some unnecessary register writes + - LP: #1059432 + * SAUCE: net: calxedaxgmac: rework transmit ring handling + - LP: #1059432 + * SAUCE: ARM: highbank: retry wfi on reset request + - LP: #1059432 + + [ Tim Gardner ] + + * [Config] TIDSPBRIDGE=m + - LP: #1058022 + * rebase to v3.5.5 + + [ Upstream Kernel Changes ] + + * common: DMA-mapping: add DMA_ATTR_NO_KERNEL_MAPPING attribute + - LP: #1059432 + * common: DMA-mapping: add DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: dma-mapping: add support for DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: add coherent dma ops + - LP: #1059432 + * ARM: add coherent iommu dma ops + - LP: #1059432 + * ARM: highbank: add coherent DMA setup + - LP: #1059432 + * sata: add platform driver for Calxeda AHCI controller + - LP: #1059432 + * xhci: Rate-limit XHCI_TRUST_TX_LENGTH quirk warning. + - LP: #1039478 + * agp/intel-gtt: remove dead code + - LP: #1011440 + * drm/i915: stop using dev->agp->base + - LP: #1011440 + * agp/intel-gtt: don't require the agp bridge on setup + - LP: #1011440 + * drm/i915 + agp/intel-gtt: prep work for direct setup + - LP: #1011440 + * agp/intel-gtt: move gart base addres setup + - LP: #1011440 + * drm/i915: don't use dev->agp + - LP: #1011440 + * drm/i915: disable drm agp support for !gen3 with kms enabled + - LP: #1011440 + * agp/intel-agp: remove snb+ host bridge pciids + - LP: #1011440 + * rebase to v3.5.5 + - LP: #1000424 + + -- Leann Ogasawara Wed, 03 Oct 2012 11:11:18 -0700 + +linux (3.5.0-16.25) quantal-proposed; urgency=low + + [ git@status.e4ward.com ] + + * SAUCE: input: Cypress PS/2 Trackpad fix multi-source, double-click + - LP: #1055788 + + [ Tim Gardner ] + + * [Config] revert '[Config] enable CONFIG_X86_X32=y' + - LP: #1041883 + + [ Upstream Kernel Changes ] + + * vmwgfx: corruption in vmw_event_fence_action_create() + * drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs + - LP: #1058088 + * drm/nv50-/gpio: initialise to vbios defaults during init + - LP: #1058088 + * igb: A fix to VF TX rate limit + - LP: #1058188 + * igb: Add switch case for supported hardware to igb_ptp_remove. + - LP: #1058188 + * igb: Support the get_ts_info ethtool method. + - LP: #1058188 + * igb: Streamline RSS queue and queue pairing assignment logic. + - LP: #1058188 + * igb: Update firmware info output + - LP: #1058188 + * igb: Version bump + - LP: #1058188 + * igb: reset PHY in the link_up process to recover PHY setting after + power down. + - LP: #1058188 + * igb: Fix for failure to init on some 82576 devices. + - LP: #1058188 + * igb: correct hardware type (i210/i211) check in igb_loopback_test() + - LP: #1058188 + * igb: don't break user visible strings over multiple lines in + igb_ethtool.c + - LP: #1058188 + * igb: add delay to allow igb loopback test to succeed on 8086:10c9 + - LP: #1058188 + * igb: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058188 + * igb: Fix register defines for all non-82575 hardware + - LP: #1058188 + * e1000e: use more informative logging macros when netdev not yet + registered + - LP: #1058219 + * e1000e: Cleanup code logic in e1000_check_for_serdes_link_82571() + - LP: #1058219 + * e1000e: Program the correct register for ITR when using MSI-X. + - LP: #1058219 + * e1000e: advertise transmit time stamping + - LP: #1058219 + * e1000e: 82571 Tx Data Corruption during Tx hang recovery + - LP: #1058219 + * e1000e: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058219 + * e1000: Combining Bitwise OR in one expression. + - LP: #1058221 + * e1000: advertise transmit time stamping + - LP: #1058221 + * e1000: Small packets may get corrupted during padding by HW + - LP: #1058221 + * sched: Fix migration thread runtime bogosity + - LP: #1057593 + * ACER: Add support for accelerometer sensor + - LP: #1055433 + * ACER: Fix Smatch double-free issue + - LP: #1055433 + + [ Wen-chien Jesse Sung ] + + * SAUCE: HID: ntrig: change default value of logical/physical + width/height to 1 + - LP: #1044248 + + -- Leann Ogasawara Fri, 28 Sep 2012 14:07:41 -0700 + +linux (3.5.0-16.24) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ata_piix: add a disable_driver option + - LP: #994870 + + [ Christian König ] + + * (pre-stable) drm/radeon: make 64bit fences more robust v3 (3.5 stable) + - LP: #1029582 + + [ David Henningsson ] + + * SAUCE: ALSA: hda - use both input paths on Conexant auto parser + - LP: #1037642 + * SAUCE: ALSA: hda - fix control names for multiple speaker out on + IDT/STAC + - LP: #1046734 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: ALSA: hda/via - don't report presence on HPs with no presence + support + - LP: #1052499 + * SAUCE: ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1053019 + * SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690 + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix disabling tap-to-click + - LP: #1048816 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_AST + - LP: #1053290 + + [ Stefan Bader ] + + * [Config] Disable the Cirrus QEMU drm driver + - LP: #1038055 + + [ Upstream Kernel Changes ] + + * Revert "KVM: VMX: Fix KVM_SET_SREGS with big real mode segments" + - LP: #1045027 + * x86, efi: Handover Protocol + * drm/i915: HDMI - Clear Audio Enable bit for Hot Plug + - LP: #1056729 + * UBUNTU SAUCE: apparmor: fix IRQ stack overflow + - LP: #1056078 + * drm/nouveau: fix booting with plymouth + dumb support + - LP: #1043518 + * ALSA: hda - Add DeviceID for Haswell HDA + - LP: #1057698 + * ALSA: hda - add Haswell HDMI codec id + - LP: #1057698 + * ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCH + - LP: #1057698 + * ALSA: hda_intel: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1011438, #1057698 + + [ Wang Xingchao ] + + * SAUCE: ALSA: hda - Add another pci id for Haswell board + - LP: #1057698 + + [ Wen-chien Jesse Sung ] + + * SAUCE: drm/i915: Explicitly disable RC6 for certain models + - LP: #1002170, #1008867 + + -- Leann Ogasawara Thu, 27 Sep 2012 13:55:52 -0700 + +linux (3.5.0-15.23) quantal; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: don't forget the PCH backlight registers" + - LP: #1053269, #1055231, #1055665 + * Revert "drm/i915: fix up PCH backlight #define mixup" + - LP: #1053269, #1055665 + * Revert "drm/i915: allow pipe A for lvds on gen4" + - LP: #1053269, #1055665 + * Revert "drm/i915: properly enable the blc controller on the right pipe" + - LP: #1053269, #1055665 + * Revert "drm/i915: clear up backlight #define confusion on gen4+" + - LP: #1053269, #1055665 + * Revert "drm/i915: pnv has a backlight polarity control bit, too" + - LP: #1053269, #1055665 + + -- Leann Ogasawara Mon, 24 Sep 2012 12:33:26 -0700 + +linux (3.5.0-15.22) quantal; urgency=low + + * fix regressions introduced by the last batch of i915 patches. + + [ Upstream Kernel Changes ] + + * drm/i915: fix up PCH backlight #define mixup + - LP: #954661 + * drm/i915: don't forget the PCH backlight registers + - LP: #954661 + + -- Tim Gardner Wed, 19 Sep 2012 13:32:19 -0600 + +linux (3.5.0-15.21) quantal; urgency=low + + [ Tim Gardner ] + + * ubuntu: AUFS -- update to 18e455787597579fe144cdb2f18aa6a0a32c46a4 + * [Config] Enable aufs + - LP: #908784 + + [ Upstream Kernel Changes ] + + * eCryptfs: check for eCryptfs cipher support at mount + - LP: #338914 + * drm/i915: pnv has a backlight polarity control bit, too + - LP: #954661 + * drm/i915: clear up backlight #define confusion on gen4+ + - LP: #954661 + * drm/i915: properly enable the blc controller on the right pipe + - LP: #954661 + * drm/i915: allow pipe A for lvds on gen4 + - LP: #954661 + + -- Tim Gardner Tue, 18 Sep 2012 08:37:51 -0400 + +linux (3.5.0-15.20) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.4 + * SAUCE: CONFIG_HID_BATTERY_STRENGTH=y + - LP: #1003090 + + [ Upstream Kernel Changes ] + + * eCryptfs: Copy up attributes of the lower target inode after rename + - LP: #561129 + * eCryptfs: Write out all dirty pages just before releasing the lower + file + - LP: #1047261 + * eCryptfs: Call lower ->flush() from ecryptfs_flush() + - LP: #1047261 + * af_netlink: force credentials passing [CVE-2012-3520] + - LP: #1052097 + - CVE-2012-3520 + * drm/i915: clarify IBX dp workaround + - LP: #1011440 + * drm/i915: Implement w/a for sporadic read failures on waking from rc6 + - LP: #1011440 + * drm/i915: support Haswell force waking + - LP: #1011440 + * drm/i915: add RPS configuration for Haswell + - LP: #1011440 + * drm/i915: enable RC6 by default on Haswell + - LP: #1011440 + * drm/i915: introduce haswell_init_clock_gating + - LP: #1011440 + * drm/i915: enable RC6 workaround on Haswell + - LP: #1011440 + * drm/i915: re-initialize DDI buffer translations after resume + - LP: #1011440 + * drm/i915: fix PIPE_DDI_PORT_MASK + - LP: #1011440 + * drm/i915: try to train DP even harder + - LP: #1011440 + * drm/i915: add more Haswell PCI IDs + - LP: #1011440 + * rebase to v3.5.4 + - LP: #1038651 + + -- Leann Ogasawara Mon, 17 Sep 2012 13:41:39 -0700 + +linux (3.5.0-14.19) quantal; urgency=low + + [ Tim Gardner ] + + * [Config] Fix debug FTBS on non-x86 + + -- Tim Gardner Fri, 14 Sep 2012 13:06:02 -0600 + +linux (3.5.0-14.18) quantal; urgency=low + + [ Tim Gardner ] + + * SAUCE: Add 'used' to the video_cards structure attributes + - LP: #1049650 + + -- Tim Gardner Fri, 14 Sep 2012 10:58:40 -0400 + +linux (3.5.0-14.17) quantal; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Intel xhci: Only switch the switchable ports + - LP: #1034814 + + -- Leann Ogasawara Wed, 12 Sep 2012 08:34:21 -0700 + +linux (3.5.0-14.16) quantal-proposed; urgency=low + + [ Bernhard Froemel ] + + * SAUCE: apple-gmux: Fix index read functions + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad move PSMOUSE_CYPRESS enum + - LP: #1041594 + + [ Seth Forshee ] + + * SAUCE: Input: synaptics - Adjust threshold for treating position values + as negative + - LP: #1046512 + + [ Upstream Kernel Changes ] + + * mei: check for error codes that mei_flow_ctrl_creds retuns + * mei: make mei_write_message more readable + * mei: mei_irq_thread_write_handler check for overflow + * mei: group wd_interface_reg with watchdog variables within struct + mei_device + * mei: don't query HCSR for host buffer depth + * mei: revamp host buffer interface function + * mei: mei_device can be const for mei register access functions + * mei: remove write only wariable wd_due_counter + * mei: mei_wd_host_init: update the comment + * mei: introduce mei_data2slots wrapper + * mei: streamline the _mei_irq_thread_close/ioctol functions + * mei: mei_irq_thread_write_handler - line break fix + * mei: use module_pci_driver + * mei: fix device stall after wd is stopped + + -- Leann Ogasawara Mon, 10 Sep 2012 13:05:18 -0700 + +linux (3.5.0-14.15) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fs: d_revalidate methods may be passed a NULL nameidata + - LP: #1038075 + + [ Dave Airlie ] + + * SAUCE: drm/vmwgfx: add MODULE_DEVICE_TABLE so vmwgfx loads at boot + - LP: #1039157 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEVPTS_MULTIPLE_INSTANCES for highbank + - LP: #1038259 + + [ Tim Gardner ] + + * SAUCE: wlcore: Declare MODULE_FIRMWARE usage + - LP: #1042918 + + [ Upstream Kernel Changes ] + + * asus-nb-wmi: add some video toggle keys + - LP: #1022427 + * [media] uvcvideo: Fix frame drop in bulk video stream + * [media] uvcvideo: Fix alternate setting selection + * Input: wacom - add support to Cintiq 22HD + - LP: #1043733 + * ALSA: HDA: Create phantom jacks for fixed inputs and outputs + * ALSA: HDA: Support single 3-pin jack without VREF on the actual pin + - LP: #1018262 + * ALSA: hda - give 3-pin jack the name "Headphone Mic Jack" + * ALSA: hda - Do not set GPIOs for speakers on IDT if there are no + speakers + - LP: #1040077 + * ALSA: hda - Fix pop noise in headphones on S3 for Asus X55A, X55V + - LP: #1034779 + * ALSA: hda - Always call standard unsolicited event for Realtek codecs + - LP: #1021192 + * ALSA: hda - Add the inverted digital mic workaround to Realtek codecs + * ALSA: hda - Add inverted mic quirks for Asus U41SV, Acer 1810TZ and + AOD260 + - LP: #1006089, #996611, #997227 + * ALSA: hda - don't create dysfunctional mixer controls for ca0132 + - LP: #1038651 + * ALSA: hda - Don't send invalid volume knob command on IDT 92hd75bxx + + -- Leann Ogasawara Thu, 06 Sep 2012 10:06:28 -0700 + +linux (3.5.0-13.14) quantal; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + [ Upstream Kernel Changes ] + + * [media] uvcvideo: Reset the bytesused field when recycling an erroneous + buffer + - LP: #1042809 + + -- Tim Gardner Tue, 28 Aug 2012 08:43:55 -0400 + +linux (3.5.0-13.13) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.3 + * [Config] Add smsc{79}5xx to nic-usb-modules + - LP: #1041397 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.3 + + -- Leann Ogasawara Mon, 27 Aug 2012 11:29:08 -0700 + +linux (3.5.0-12.12) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * [Config] Fix typo on control.stub.in + + [ Ricardo Salveti de Araujo ] + + * [Config] installing omapdrm specific headers for external drivers + - LP: #1038846 + + [ Seth Forshee ] + + * SAUCE: apple-gmux: Fix port address calculation in gmux_pio_write32() + + [ Stefan Bader ] + + * SAUCE: (no-up) x86/mm: Fix 64bit size of mapping tables + - LP: #1022561 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove sb16 files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * net: Allow driver to limit number of GSO segments per skb + - LP: #1037456 + - CVE-2012-3412 + * sfc: Fix maximum number of TSO segments and minimum TX queue size + - LP: #1037456 + - CVE-2012-3412 + * tcp: Apply device TSO segment limit earlier + - LP: #1037456 + - CVE-2012-3412 + * cfg80211: add channel flag to prohibit OFDM operation + * brcmsmac: use channel flags to restrict OFDM + * gmux: Add generic write32 function + * apple_gmux: Add support for newer hardware + * apple_gmux: Fix ACPI video unregister + * apple-gmux: Fix kconfig dependencies + * vga_switcheroo: Don't require handler init callback + * vga_switcheroo: Remove assumptions about registration/unregistration + ordering + * apple-gmux: Add display mux support + * mei: add mei_quirk_probe function + - LP: #1041164 + * mutex: Place lock in contended state after fastpath_lock failure + - LP: #1041114 + + -- Leann Ogasawara Fri, 24 Aug 2012 07:13:00 -0700 + +linux (3.5.0-11.11) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_X86_X32=y + + [ Cypress Semiconductor Corporation ] + + * SAUCE: input: Cypress PS/2 Trackpad mouse driver + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad link driver into psmouse-base + - LP: #978807 + + [ Dann Frazier ] + + * [Config] compile the rtc-pl031 driver as static on the highbank kernel + flavour + - LP: #1035110 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEBUG_HIGHBANK_UART for highbank + - LP: #1034781 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad code style cleanup + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad eliminate dead code + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad fix no-config stubs + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad set default debug_level=0 + - LP: #978807 + * SAUCE: [Config] add MOUSE_PS2_CYPRESS=y + - LP: #978807 + + [ Kees Cook ] + + * SAUCE: Yama: access task_struct->comm directly + * SAUCE: Yama: add link restrictions + * SAUCE: security: unconditionally chain to Yama LSM + + [ Seth Forshee ] + + * SAUCE: (drop after 3.6) irq_remap: disable IRQ remapping if any IOAPIC + lacks an IOMMU + - LP: #1034459 + + [ Stefan Bader ] + + * (config) Enable getabis to use local package copies + + [ Tim Gardner ] + + * rebase to v3.5.2 + + [ Upstream Kernel Changes ] + + * rds: set correct msg_namelen + - LP: #1031112 + - CVE-2012-2340 + * rebase to v3.5.2 + - LP: #1027789 + - LP: #1001251 + + -- Leann Ogasawara Thu, 16 Aug 2012 08:52:09 -0700 + +linux (3.5.0-10.10) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5.1 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_AFS_FSCACHE=y + - LP: #728977 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove emi62 files duplicated in linux-firmware + * SAUCE: firmware: Remove tehuti files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * overlayfs: copy up i_uid/i_gid from the underlying inode + - LP: #944386 + * hwmon: (applesmc) Shorten minimum wait time + - LP: #1034449 + * hwmon: (applesmc) Decode and act on read/write status codes + - LP: #1034449 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.1 + - LP: #1026953 + - LP: #1025377 + + -- Leann Ogasawara Sun, 12 Aug 2012 13:16:43 -0700 + +linux (3.5.0-9.9) quantal-proposed; urgency=low + + [ Daniel P. Berrange ] + + * SAUCE: (drop after 3.6) Forbid invocation of kexec_load() outside + initial PID namespace + - LP: #1034125 + + [ Douglas Bagnall ] + + * SAUCE: Unlock the rc_dev lock when the raw device is missing + - LP: #1015836 + + [ Ike Panhc ] + + * [Config] Enable EDAC/CLK for highbank + - LP: #1008345 + + [ Leann Ogasawara ] + + * Revert "ubuntu: AUFS -- reenable" + + [ Rob Herring ] + + * SAUCE: net: calxedaxgmac: add write barriers around setting owner bit + - LP: #1008345 + * SAUCE: ARM smp_twd: add back "arm,smp-twd" compatible property + - LP: #1008345 + * SAUCE: ARM: highbank: add soft power and reset key event handling + - LP: #1008345 + * SAUCE: ARM: highbank: use writel_relaxed variant for pwr requests + - LP: #1008345 + * SAUCE: ahci: un-staticize ahci_dev_classify + - LP: #1008345 + * SAUCE: ahci_platform: add custom hard reset for Calxeda ahci ctrlr + - LP: #1008345 + + [ Upstream Kernel Changes ] + + * rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb. + - LP: #871904 + * Avoid sysfs oops when an rc_dev's raw device is absent + - LP: #1015836 + * eCryptfs: Copy up POSIX ACL and read-only flags from lower mount + * clk: add DT clock binding support + - LP: #1008345 + * clk: add DT fixed-clock binding support + - LP: #1008345 + * clk: add highbank clock support + * edac: add support for Calxeda highbank memory controller + - LP: #1008345 + * edac: add support for Calxeda highbank L2 cache ecc + - LP: #1008345 + * net: calxedaxgmac: enable rx cut-thru mode + - LP: #1008345 + * net: calxedaxgmac: fix hang on rx refill + - LP: #1008345 + * eCryptfs: Revert to a writethrough cache model + - LP: #1034012 + * eCryptfs: Initialize empty lower files when opening them + - LP: #911507 + * eCryptfs: Unlink lower inode when ecryptfs_create() fails + - LP: #872905 + + -- Leann Ogasawara Wed, 08 Aug 2012 08:39:42 -0700 + +linux (3.5.0-8.8) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * 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 -- fix undefined __devcgroup_inode_permission + * 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 + * ubuntu: AUFS -- adapt to the new changelog handling + * ubuntu: AUFS -- sort out the relative header paths + * ubuntu: AUFS -- update to d266b0c5d0693d6383976ee54b9e2c0fa9a3f5b0 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 4a5e660ed7f5c1d0467c81c535d0fedcfe62d15f + * ubuntu: AUFS -- reenable + + [ Chris Van Hoof ] + + * [Config] Add cifs support to the nfs-modules list + - LP: #1031398 + + [ Ilan Peer ] + + * (pre-stable) iwlwifi: Check BSS ctx active before call mac80211 + - LP: #1021086 + + [ John Johansen ] + + * SAUCE: Update aufs for build failure caused by apparmor backport + + [ Tim Gardner ] + + * SAUCE: firmware: Remove ess files duplicated in linux-firmware + * SAUCE: firmware: Remove kaweth files duplicated in linux-firmware + * SAUCE: firmware: Remove obsolete Chelsio cxgb3 firmware + * SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: firmware: Remove edgeport files duplicated in linux-firmware + * SAUCE: firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware + * SAUCE: firmware: Remove adaptec files duplicated in linux-firmware + * SAUCE: firmware: Remove advansys files duplicated in linux-firmware + * SAUCE: firmware: Remove ambassador files duplicated in linux-firmware + * SAUCE: firmware: Remove av7110 files duplicated in linux-firmware + * SAUCE: cpia2: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove cpia2 files duplicated in linux-firmware + * SAUCE: firmware: Remove korg files duplicated in linux-firmware + * SAUCE: firmware: Remove matrox files duplicated in linux-firmware + * SAUCE: firmware: Remove r128 files duplicated in linux-firmware + * SAUCE: firmware: Remove radeon files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * intel_idle: initial IVB support + * KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT + Dirty bit + * KVM: VMX: Use EPT Access bit in response to memory notifiers + * KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit + in EPTP + * KVM: VMX: Add parameter to control A/D bits support, default is on + * KVM: VMX: Add EPT A/D bits definitions + * KVM: VMX: Implement PCID/INVPCID for guests with EPT + * xhci: Export Latency Tolerance Messaging capabilities. + * USB: Fix LPM disable/enable during device reset. + * usb: convert port_owners type from void * to struct dev_state * + * USB: Disable LPM while the device is unconfigured. + * USB: Fix LPM disable count mismatch on driver unbind. + * USB: Enable Latency Tolerance Messaging (LTM). + * drm/i915: enable parity error interrupts + * drm/i915: Dynamic Parity Detection handling + * drm/i915: l3 parity sysfs interface + * drm/i915: remap l3 on hw init + * drm/i915: initialize the parity work only once + * drm/i915: ivybridge_handle_parity_error should be static + + -- Leann Ogasawara Fri, 03 Aug 2012 13:33:27 -0700 + +linux (3.5.0-7.7) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_X86_POWERNOW_K6=m + * [Config] CONFIG_X86_POWERNOW_K7=m + * [Config] CONFIG_X86_LONGHAUL=m + * [Config] CONFIG_X86_LONGRUN=m + * [Config] CONFIG_X86_GX_SUSPMOD=m + * [Config] CONFIG_X86_CPUFREQ_NFORCE2=m + * SAUCE: rds_ib_send() -- prevent local pings triggering BUG_ON() + - LP: #1016299 + - CVE-2012-2372 + * [Config] enable CONFIG_VFAT_FS=y for EFI systems + * [Config] CONFIG_USB_G_MULTI=n on highbank + * [Config] annotate: CONFIG_USB_INVENTRA_DMA OMAP2 specific + * [Config] CONFIG_WAN_ROUTER disable for arm + * add support for generating binary device trees and install them in + /lib/firmware + - LP: #1030600 + * [Config] add dtb_file configuration for highbank + - LP: #1030600 + + [ Tim Gardner ] + + * SAUCE: ene_ub6250: Use macros for firmware names + * SAUCE: s2255drv: Add MODULE_FIRMWARE statement + * SAUCE: xc5000: Add MODULE_FIRMWARE statements + * SAUCE: firmware: remove computone driver firmware and documentation + * SAUCE: lgs8gxx: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove obsolete Myricom firmware + * SAUCE: staging rtl8192e: Declare MODULE_FIRMWARE usage + * SAUCE: tlg2300: Declare MODULE_FIRMWARE usage + * SAUCE: ueagle-atm: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxfast: Declare MODULE_FIRMWARE usage + * SAUCE: usbdux: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxsigma: Declare MODULE_FIRMWARE usage + * SAUCE: cx25840: Declare MODULE_FIRMWARE usage + * SAUCE: cx18: Declare MODULE_FIRMWARE usage + * SAUCE: ivtv: Declare MODULE_FIRMWARE usage + * SAUCE: cx231xx: Declare MODULE_FIRMWARE usage + * SAUCE: cx23885: Declare MODULE_FIRMWARE usage + * SAUCE: pvrusb2: Declare MODULE_FIRMWARE usage + * SAUCE: vxge: Declare MODULE_FIRMWARE usage + + [ Upstream Kernel Changes ] + + * mac80211: fix crash with single-queue drivers + - LP: #1022351 + + -- Leann Ogasawara Mon, 30 Jul 2012 11:11:05 -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.5.0.orig/debian/control.stub +++ linux-3.5.0/debian/control.stub @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.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.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.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.5.0 + This package provides the various documents in the 3.5.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-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-27 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +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-3.5.0-27 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-27 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-27 on + 32 bit x86. + + +Package: linux-image-3.5.0-27-generic +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 | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 32 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 32 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-image-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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-image-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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-image-3.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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-image-3.5.0-27-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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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. --- linux-3.5.0.orig/debian/debian.env +++ linux-3.5.0/debian/debian.env @@ -0,0 +1 @@ +DEBIAN=debian.master --- linux-3.5.0.orig/debian/tools/x86_energy_perf_policy +++ linux-3.5.0/debian/tools/x86_energy_perf_policy @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +x86_energy_perf_policy="x86_energy_perf_policy_$version" + +if ! which "$x86_energy_perf_policy" > /dev/null; then + echo "$x86_energy_perf_policy not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$x86_energy_perf_policy" "$@" --- linux-3.5.0.orig/debian/tools/turbostat +++ linux-3.5.0/debian/tools/turbostat @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +turbostat="turbostat_$version" + +if ! which "$turbostat" > /dev/null; then + echo "$turbostat not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$turbostat" "$@" --- linux-3.5.0.orig/debian/tools/perf +++ linux-3.5.0/debian/tools/perf @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# Removing flavour from version i.e. generic or server. +flavour_abi=${full_version#*-} +flavour=${flavour_abi#*-} +version=${full_version%-$flavour} +perf="perf_$version" + +if ! which "$perf" > /dev/null; then + echo "$perf not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$perf" "$@" --- linux-3.5.0.orig/debian/tools/generic +++ linux-3.5.0/debian/tools/generic @@ -0,0 +1,16 @@ +#!/bin/bash +full_version=`uname -r` + +# 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 + echo "$this not found" >&2 + echo "You may need to install linux-tools-$version" >&2 + exit 2 +fi + +exec "$this" "$@" --- linux-3.5.0.orig/debian/source/format +++ linux-3.5.0/debian/source/format @@ -0,0 +1 @@ +1.0 --- linux-3.5.0.orig/debian/stamps/keep-dir +++ linux-3.5.0/debian/stamps/keep-dir @@ -0,0 +1 @@ +Place holder --- linux-3.5.0.orig/debian/commit-templates/upstream-patch +++ linux-3.5.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.5.0.orig/debian/commit-templates/bumpabi +++ linux-3.5.0/debian/commit-templates/bumpabi @@ -0,0 +1,3 @@ +UBUNTU: Bump ABI + +Ignore: yes --- linux-3.5.0.orig/debian/commit-templates/external-driver +++ linux-3.5.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.5.0.orig/debian/commit-templates/config-updates +++ linux-3.5.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.5.0.orig/debian/commit-templates/newrelease +++ linux-3.5.0/debian/commit-templates/newrelease @@ -0,0 +1,3 @@ +UBUNTU: Start new release + +Ignore: yes --- linux-3.5.0.orig/debian/commit-templates/sauce-patch +++ linux-3.5.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.5.0.orig/debian/commit-templates/missing-modules +++ linux-3.5.0/debian/commit-templates/missing-modules @@ -0,0 +1,3 @@ +UBUNTU: build/modules: Add modules that have intentionally gone missing + +Ignore: yes --- linux-3.5.0.orig/debian/scripts/module-check +++ linux-3.5.0/debian/scripts/module-check @@ -0,0 +1,120 @@ +#!/usr/bin/perl -w + +$flavour = shift; +$prev_abidir = shift; +$abidir = shift; +$skipmodule = shift; + +print "II: Checking modules for $flavour..."; + +if (-f "$prev_abidir/ignore.modules" + or -f "$prev_abidir/$flavour.ignore.modules") { + print "explicitly ignoring modules\n"; + exit(0); +} + +if (not -f "$abidir/$flavour.modules" or not -f + "$prev_abidir/$flavour.modules") { + print "previous or current modules file missing!\n"; + print " $abidir/$flavour.modules\n"; + print " $prev_abidir/$flavour.modules\n"; + if (defined($skipmodule)) { + exit(0); + } else { + exit(1); + } +} + +print "\n"; + +my %modules; +my %modules_ignore; +my $missing = 0; +my $new = 0; +my $errors = 0; + +# See if we have any ignores +if (-f "$prev_abidir/../modules.ignore") { + my $ignore = 0; + open(IGNORE, "< $prev_abidir/../modules.ignore") or + die "Could not open $prev_abidir/../modules.ignore"; + print " reading modules to ignore..."; + while () { + chomp; + next if /\s*#/; + $modules_ignore{$_} = 1; + $ignore++; + } + close(IGNORE); + print "read $ignore modules.\n"; +} + +# Read new modules first +print " reading new modules..."; +$new_count = 0; +open(NEW, "< $abidir/$flavour.modules") or + die "Could not open $abidir/$flavour.modules"; +while () { + chomp; + $modules{$_} = 1; + $new_count++; +} +close(NEW); +print "read $new_count modules.\n"; + +# Now the old modules, checking for missing ones +print " reading old modules..."; +$old_count = 0; +open(OLD, "< $prev_abidir/$flavour.modules") or + die "Could not open $prev_abidir/$flavour.modules"; +while () { + chomp; + if (not defined($modules{$_})) { + print "\n" if not $missing; + $missing++; + if (not defined($modules_ignore{$_})) { + print " MISS: $_\n"; + $errors++; + } else { + print " MISS: $_ (ignored)\n"; + } + } else { + $modules{$_}++; + } + $old_count++; +} +close(OLD); +# Check for new modules +foreach $mod (keys(%modules)) { + if ($modules{$mod} < 2) { + print "\n" if not $missing and not $new; + print " NEW : $mod\n"; + $new++; + } +} +if ($new or $missing) { + print " read $old_count modules : new($new) missing($missing)\n"; +} else { + print "read $old_count modules.\n"; +} + + +# Let's see where we stand... +if ($errors) { + if (defined($skipmodule)) { + print "WW: Explicitly asked to ignore failures (probably not good)\n"; + } else { + print "EE: Missing modules (start begging for mercy)\n"; + exit 1 + } +} + +if ($new) { + print "II: New modules (you've been busy, wipe the poop off your nose)\n"; +} else { + print "II: No new modules (hope you're happy, slacker)\n"; +} + +print "II: Done\n"; + +exit(0); --- linux-3.5.0.orig/debian/scripts/config-check +++ linux-3.5.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 ?? $a[1]>\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.5.0.orig/debian/scripts/abi-check +++ linux-3.5.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.5.0.orig/debian/scripts/sub-flavour +++ linux-3.5.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.5.0.orig/debian/scripts/control-create +++ linux-3.5.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.5.0.orig/debian/scripts/link-headers +++ linux-3.5.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.5.0.orig/debian/scripts/module-inclusion +++ linux-3.5.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.5.0.orig/debian/scripts/misc/get-firmware +++ linux-3.5.0/debian/scripts/misc/get-firmware @@ -0,0 +1,45 @@ +#!/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 + +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 [ ! -f $OFW/$f ] + then + echo $f + elif ! cmp $f $OFW/$f > /dev/null + then + echo $f + fi +done) |\ +while read f +do + mkdir -p $CDIR/firmware/`dirname $f` + cp -v $f $CDIR/firmware/`dirname $f` +done --- linux-3.5.0.orig/debian/scripts/misc/insert-mainline-changes +++ linux-3.5.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.5.0.orig/debian/scripts/misc/git-ubuntu-log +++ linux-3.5.0/debian/scripts/misc/git-ubuntu-log @@ -0,0 +1,232 @@ +#!/usr/bin/perl -w + +use strict; +use Text::Wrap; + +my $kernel_auth = "Upstream Kernel Changes"; + +my (%map, @reverts); +my $pstate = 1; +my $no_kern_log = 0; +my $print_shas = 0; +my $first_print = 1; + +while (@ARGV) { + my $opt = $ARGV[0]; + shift; + if ($opt eq "--no-kern-log") { + $no_kern_log = 1; + } elsif ($opt eq "--print-shas") { + $print_shas = 1; + } else { + print STDERR "Unknown options: $opt\n"; + exit(1); + } +} + +sub check_reverts($) { + my ($entry) = @_; + my ($check); + + foreach $check (reverse @reverts) { + my $desc = "Revert \"" . $entry->{'desc'} . "\""; + if ($check->{'desc'} eq $desc) { + @reverts = grep($_->{'desc'} ne $desc, @reverts); + return 1; + } + } + + return 0; +} + +sub add_entry($) { + my ($entry) = @_; + my $key = $entry->{'author'}; + + # store description in array, in email->{desc list} map + if (exists $map{$key}) { + # grab ref + my $obj = $map{$key}; + + # add desc to array + push(@$obj, $entry); + } else { + # create new array, containing 1 item + my @arr = ($entry); + + # store ref to array + $map{$key} = \@arr; + } +} + +sub shortlog_entry($$$$$) { + my ($name, $desc, $bug, $cve, $commit) = @_; + my $entry; + + $desc =~ s#/pub/scm/linux/kernel/git/#/.../#g; + $desc =~ s#\[PATCH\] ##g; + + $desc =~ s#^\s*##g; + $desc =~ s# *UBUNTU: ##g; + + $entry->{'desc'} = $desc; + if ($bug ne '') { + $entry->{'bugno'} = $bug; + } + $entry->{'cve'} = $cve; + $entry->{'commit'} = $commit; + $entry->{'author'} = $name; + + if ($desc =~ /^Revert "/) { + push(@reverts, $entry); + return; + } + + return if check_reverts($entry); + + add_entry($entry); +} + +# sort comparison function +sub by_name($$) { + my ($a, $b) = @_; + + uc($a) cmp uc($b); +} + +sub shortlog_output { + my ($obj, $key, $entry); + + foreach $key (sort by_name keys %map) { + next if $key eq $kernel_auth and $no_kern_log; + + print "\n" unless $first_print; + $first_print = 0; + + # output author + printf " [ %s ]\n\n", $key; + + # output author's 1-line summaries + $obj = $map{$key}; + foreach $entry (reverse @$obj) { + print wrap(" * ", " ", $entry->{'desc'}) . "\n"; + # For non upstream changes, add other info. + if ($key ne $kernel_auth) { + if ($print_shas) { + print " - GIT-SHA " . $entry->{'commit'} . + "\n"; + } + } + if (defined($entry->{'bugno'})) { + print " - LP: #" . $entry->{'bugno'} . "\n"; + } + if (defined($entry->{'cve'})) { + print " - " . $entry->{'cve'} . "\n"; + } + } + } +} + +sub changelog_input { + my ($author, $desc, $commit, $entry, $cve); + + while () { + # get commit + if ($pstate == 1) { + next unless /^commit (.*)/; + + $commit = $1; + + $pstate++; + } + + # get author and email + elsif ($pstate == 2) { + my ($email); + + next unless /^[Aa]uthor:?\s*(.*?)\s*<(.*)>/; + + $author = $1; + $email = $2; + $desc = undef; + $cve = undef; + + # cset author fixups + if (!$author) { + $author = $email; + } + $pstate++; + } + + # skip to blank line + elsif ($pstate == 3) { + next unless /^\s*$/; + $pstate++; + } + + # skip to non-blank line + elsif ($pstate == 4) { + next unless /^\s*?(.*)/; + my $ignore = 0; + my $do_ignore = 0; + my $bug = undef; + my %bugz = (); + my $k; + + # skip lines that are obviously not + # a 1-line cset description + next if /^\s*From: /; + + chomp; + $desc = $1; + + if ($desc =~ /^ *(Revert "|)UBUNTU:/) { + $do_ignore = 1; + } else { + $do_ignore = 0; + $author = $kernel_auth; + $ignore = 1 if $desc =~ /Merge /; + } + while () { + $ignore = 1 if ($do_ignore && /^ *Ignore: yes/i); + if (/^ *Bug: *(#|)([0-9#,\s]*)\s*$/i) { + foreach $k (split('(,|\s)\s*(#|)', $2)) { + $bugz{$k} = 1 if (($k ne '') and ($k =~ /[0-9]+/)); + } + } + elsif (/^ *BugLink: *http.*:\/\/.*\/([0-9]+)/i) { + $bugz{$1} = 1; + } + elsif (/^ *(CVE-.*)/) { + $cve = $1 + } + last if /^commit /; + } + + $bug = join(", #", sort keys(%bugz)); + if (!$ignore) { + &shortlog_entry($author, $desc, $bug, + $cve, $commit, 0); + } + + $pstate = 1; + if ($_ && /^commit (.*)/) { + $commit = $1; + $pstate++; + } + } + + else { + die "invalid parse state $pstate"; + } + } + + foreach $entry (@reverts) { + add_entry($entry); + } +} + +&changelog_input; +&shortlog_output; + +exit(0); --- linux-3.5.0.orig/debian/scripts/misc/getabis +++ linux-3.5.0/debian/scripts/misc/getabis @@ -0,0 +1,133 @@ +#!/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 | awk -F. '{print $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 + + # Take local copy if it is there... + if [ -f $HOME/$filename ]; then + echo -n "Locally!..." + cp $HOME/$filename . + fi + + 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" | awk ' + ($1 == "[") { + printf("%s", $3); + for (n=4; n<=NF; n++) { + printf(" %s", $n); + } + print "" + }' | sort -u >$abidir/$arch/$sub.compiler + version=`cat $abidir/$arch/$sub.compiler` + echo -n "$version..." + ) + rm -rf tmp $filenames + echo "done." + else + echo "FAILED." + fi + cd $origdir + done +} + +# MAIN + +# Setup abi directory +mkdir -p $abidir +echo $abi > $abidir/abiname + +# NOTE: The flavours are hardcoded, because they may have changed from the +# current build. + +__package_prefixes="linux-image" + +. $DEBIAN/etc/getabis + +compilers=`cat $abidir/*/*.compiler | sort -u | wc -l` +if [ "$compilers" != 1 ]; then + echo "WARNING: inconsistant compiler versions detected" 1>&2 +fi + +sort < $fwinfo | uniq > fwinfo.tmp +mv fwinfo.tmp $fwinfo + +rmdir $tmpdir --- linux-3.5.0.orig/debian/scripts/misc/insert-ubuntu-changes +++ linux-3.5.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.5.0.orig/debian/scripts/misc/splitconfig.pl +++ linux-3.5.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.5.0.orig/debian/scripts/misc/retag +++ linux-3.5.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.5.0.orig/debian/scripts/misc/insert-changes.pl +++ linux-3.5.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.5.0.orig/debian/scripts/misc/kernelconfig +++ linux-3.5.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) 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.5.0.orig/debian/docs/README.inclusion-list +++ linux-3.5.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.5.0.orig/debian/control-scripts/postinst +++ linux-3.5.0/debian/control-scripts/postinst @@ -0,0 +1,1095 @@ +#! /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'}; + + 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.5.0.orig/debian/control-scripts/headers-postinst +++ linux-3.5.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.5.0.orig/debian/control-scripts/prerm +++ linux-3.5.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.5.0.orig/debian/control-scripts/postrm +++ linux-3.5.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.5.0.orig/debian/control-scripts/preinst +++ linux-3.5.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.5.0.orig/debian/tests/README +++ linux-3.5.0/debian/tests/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.5.0.orig/debian/tests/check-aliases +++ linux-3.5.0/debian/tests/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.5.0.orig/debian/rules.d/2-binary-arch.mk +++ linux-3.5.0/debian/rules.d/2-binary-arch.mk @@ -0,0 +1,515 @@ +# 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 + +$(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-%: dtb_target = $(notdir $(dtb_file_$*)) +$(stampdir)/stamp-build-%: $(stampdir)/stamp-prepare-% + @echo Debug: $@ + $(build_cd) $(kmake) $(build_O) $(conc_level) $(build_image) modules $(dtb_target) + if [ "$(build_arch)" = "x86_64" ] || [ "$(build_arch)" = "i386" ] ; then \ + $(build_cd) readelf -s `find . -name setup.elf` | grep video_card; \ + fi + @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-%: basepkg = $(hdrs_pkg_name) +install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$* +install-%: target_flavour = $* +install-%: dtb_file=$(dtb_file_$*) +install-%: dtb_target=$(notdir $(dtb_file_$*)) +install-%: checks-% + @echo Debug: $@ + dh_testdir + dh_testroot + dh_clean -k -p$(bin_pkg_name)-$* + dh_clean -k -p$(hdrs_pkg_name)-$* + dh_clean -k -p$(dbg_pkg_name)-$* + + # 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-$*/$(kernel_file) \ + $(pkgdir)/boot/$(install_file)-$(abi_release)-$* +else + install -d $(pkgdir)/boot + gzip -c9v $(builddir)/build-$*/$(kernel_file) > \ + $(pkgdir)/boot/$(install_file)-$(abi_release)-$* + chmod 600 $(pkgdir)/boot/$(install_file)-$(abi_release)-$* +endif + +ifeq ($(arch),amd64) +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/$(install_file)-$(abi_release)-$*" bs=1 skip=514 count=6 2>/dev/null | od -s | awk '($$1 == 0 && $$2 == 25672 && $$3 == 21362 && $$4 >= 523) { print "GOOD" }'`; \ + if [ "$$handoff" = "GOOD" ]; then \ + cp -p $(pkgdir)/boot/$(install_file)-$(abi_release)-$* \ + $(signed)/$(release)-$(revision)/$(install_file)-$(abi_release)-$*.efi; \ + fi +endif +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_target)" ]; then \ + install -d $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree; \ + install -m644 $(builddir)/build-$*/$(dtb_file) \ + $(pkgdir)/lib/firmware/$(abi_release)-$*/device-tree/$(dtb_target); \ + 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 \ + INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$(pkgdir)/ \ + INSTALL_FW_PATH=$(pkgdir)/lib/firmware/$(abi_release)-$* + + # + # 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; \ + fi + +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/$(install_file)/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 + # 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/$(install_file)/g' \ + -e 's/=L/$(loader)/g' -e 's@=B@$(build_arch)@g' \ + debian/control-scripts/$$script > $(pkgdir_ex)/DEBIAN/$$script; \ + chmod 755 $(pkgdir_ex)/DEBIAN/$$script; \ + done; \ + fi + + # 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/$(install_file)/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 \ + 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; \ + 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" + # powerpc seems to need some .o files for external module linking. Add them in. +ifeq ($(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)" "$(basepkg)" "$*" + # 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/$(install_file)/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 + + # + # 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)-$*/_ + +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) $(conc_level) 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-%: 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 + + 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 + + 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 +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_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 + @echo Debug: $@ +ifeq ($(do_tools),true) + cd $(builddirpa)/tools/perf && \ + make HAVE_CPLUS_DEMANGLE=1 CROSS_COMPILE=$(CROSS_COMPILE) + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + 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); \ + cd $(builddirpa)/tools/hv && make CROSS_COMPILE=$(CROSS_COMPILE) CFLAGS=-I../../include; \ + fi +endif + @touch $@ + +install-perarch: toolspkgdir = $(CURDIR)/debian/$(tools_pkg_name) +install-perarch: $(stampdir)/stamp-build-perarch + @echo Debug: $@ + # Add the tools. +ifeq ($(do_tools),true) + install -d $(toolspkgdir)/usr/bin + install -s -m755 $(builddirpa)/tools/perf/perf \ + $(toolspkgdir)/usr/bin/perf_$(abi_release) + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -s -m755 $(builddirpa)/tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy \ + $(toolspkgdir)/usr/bin/x86_energy_perf_policy_$(abi_release); \ + install -s -m755 $(builddirpa)/tools/power/x86/turbostat/turbostat \ + $(toolspkgdir)/usr/bin/turbostat_$(abi_release); \ + install -d $(toolspkgdir)/usr/sbin; \ + install -s -m755 $(builddirpa)/tools/hv/hv_kvp_daemon \ + $(toolspkgdir)/usr/sbin/hv_kvp_daemon_$(abi_release); \ + fi +endif + +binary-perarch: toolspkg = $(tools_pkg_name) +binary-perarch: install-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) + 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 + +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 ($(arch),amd64) +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 +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.5.0.orig/debian/rules.d/1-maintainer.mk +++ linux-3.5.0/debian/rules.d/1-maintainer.mk @@ -0,0 +1,120 @@ +# 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 "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)" + +prev_release="$(release)-$(prev_revision)" +printchanges: + @baseCommit=$$(git log --pretty=format:'%H %s' | \ + awk '/UBUNTU: '".*Ubuntu-$(prev_release)"'$$/ { print $$1; exit }'); \ + git log "$$baseCommit"..HEAD | \ + perl -w -f $(DROOT)/scripts/misc/git-ubuntu-log $(ubuntu_log_opts) + +insertchanges: + @perl -w -f $(DROOT)/scripts/misc/insert-changes.pl $(DROOT) $(DEBIAN) + +diffupstream: + @git diff-tree -p refs/remotes/linux-2.6/master..HEAD $(shell ls | grep -vE '^(ubuntu|$(DEBIAN)|\.git.*)') + +startnewrelease: + dh_testdir + @nextminor=$(shell expr `echo $(revision) | awk -F. '{print $$2}'` + 1); \ + now="$(shell date -R)"; \ + echo "Creating new changelog set for $(abi_release).$$nextminor..."; \ + echo -e "$(src_pkg_name) ($(abi_release).$$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.5.0.orig/debian/rules.d/0-common-vars.mk +++ linux-3.5.0/debian/rules.d/0-common-vars.mk @@ -0,0 +1,232 @@ +# +# 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 +series := oneiric +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)) + +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= + +# +# This is a way to support some external variables. A good example is +# a local setup for ccache and distcc See LOCAL_ENV_CC and +# LOCAL_ENV_DISTCC_HOSTS in the definition of kmake. +# For example: +# LOCAL_ENV_CC="ccache distcc" +# LOCAL_ENV_DISTCC_HOSTS="localhost 10.0.2.5 10.0.2.221" +# +-include $(CURDIR)/../.$(series)-env + +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 -e 's/\..*//')$(abi_suffix) +prev_abinum := $(shell echo $(prev_revision) | sed -e 's/\..*//')$(abi_suffix) +abi_release := $(release)-$(abinum) + +uploadnum := $(shell echo $(revision) | sed -e 's/.*\.//') +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=armel' +# 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 -aarmel' 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) +# +# 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 + +# 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= +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) --- linux-3.5.0.orig/debian/rules.d/3-binary-indep.mk +++ linux-3.5.0/debian/rules.d/3-binary-indep.mk @@ -0,0 +1,156 @@ +build-indep: + @echo Debug: $@ + +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 + dh_clean -k -p$(docpkg) + + 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; \ + mv $(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 + +indep_hdrpkg = $(hdrs_pkg_name) +indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg) +install-headers: + @echo Debug: $@ +ifeq ($(do_flavour_header_package),true) + dh_testdir + dh_testroot + dh_clean -k -p$(indep_hdrpkg) + + 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 drivers/media/dvb/dvb-core/*.h $(indep_hdrdir)/drivers/media/dvb/dvb-core + cp -a drivers/media/video/*.h $(indep_hdrdir)/drivers/media/video + cp -a drivers/media/dvb/frontends/*.h $(indep_hdrdir)/drivers/media/dvb/frontends + cp -a drivers/staging/omapdrm/omap_dr*.h $(indep_hdrdir)/drivers/staging/omapdrm + 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 + +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) + dh_testdir + dh_testroot + dh_clean -k -p$(srcpkg) + + 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: install-source $(stampdir)/stamp-build-perarch + @echo Debug: $@ +ifeq ($(do_tools),true) + dh_testdir + dh_testroot + dh_clean -k -p$(toolspkg) + + install -d $(toolsbin) + install -d $(toolsman)/man1 + + install -m755 debian/tools/perf $(toolsbin)/perf + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + install -m755 debian/tools/x86_energy_perf_policy $(toolsbin)/x86_energy_perf_policy; \ + install -m755 debian/tools/turbostat $(toolsbin)/turbostat; \ + install -d $(toolssbin) ; \ + install -m755 debian/tools/generic $(toolssbin)/hv_kvp_daemon; \ + fi + + 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/ + + cd $(builddir)/tools/tools/perf && make man + install -m644 $(builddir)/tools/tools/perf/Documentation/*.1 \ + $(toolsman)/man1 + if [ "$(arch)" = "amd64" ] || [ "$(arch)" = "i386" ]; then \ + 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 -m644 $(CURDIR)/tools/hv/*.8 $(toolsman)/man8; \ + fi +endif + +install-indep: install-tools + @echo Debug: $@ + +# This is just to make it easy to call manually. Normally done in +# binary-indep target during builds. +binary-headers: install-headers + @echo Debug: $@ + dh_testdir + dh_testroot + 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_testdir + dh_testroot + + 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.5.0.orig/debian/rules.d/4-checks.mk +++ linux-3.5.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.5.0.orig/debian/rules.d/5-udebs.mk +++ linux-3.5.0/debian/rules.d/5-udebs.mk @@ -0,0 +1,44 @@ +# 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} | awk '{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 --- linux-3.5.0.orig/init/Kconfig +++ linux-3.5.0/init/Kconfig @@ -79,6 +79,13 @@ Maximum of each of the number of arguments and environment variables passed to init from the kernel command line. +config INIT_PASS_ALL_PARAMS + bool "Pass all (known and unknown) kernel parameters to init" + default n + help + Pass all kernel command line parameters to init, this includes + those consumed by kernel modules. This is useful for upstart + based systems. If in doubt say N. config CROSS_COMPILE string "Cross-compiler tool prefix" @@ -214,6 +221,15 @@ but you may wish to use a different default here to make a minimal system more usable with less configuration. +config VERSION_SIGNATURE + string "Arbitrary version signature" + help + This string will be created in a file, /proc/version_signature. It + is useful in determining arbitrary data about your kernel. For instance, + if you have several kernels of the same version, but need to keep track + of a revision of the same kernel, but not affect it's ability to load + compatible modules, this is the easiest way to do that. + config SWAP bool "Support for paging of anonymous memory (swap)" depends on MMU && BLOCK --- linux-3.5.0.orig/init/version.c +++ linux-3.5.0/init/version.c @@ -40,7 +40,11 @@ /* FIXED STRINGS! Don't touch! */ const char linux_banner[] = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" - LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n"; + LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION +#ifdef CONFIG_VERSION_SIGNATURE + " (" CONFIG_VERSION_SIGNATURE ")" +#endif + "\n"; const char linux_proc_banner[] = "%s version %s" --- linux-3.5.0.orig/init/main.c +++ linux-3.5.0/init/main.c @@ -112,6 +112,11 @@ */ #define MAX_INIT_ARGS CONFIG_INIT_ENV_ARG_LIMIT #define MAX_INIT_ENVS CONFIG_INIT_ENV_ARG_LIMIT +#ifdef CONFIG_INIT_PASS_ALL_PARAMS +#define INIT_PASS_FUNCTION pass_all_bootoptions +#else +#define INIT_PASS_FUNCTION pass_unknown_bootoptions +#endif extern void time_init(void); /* Default late time init is NULL. archs can override this later. */ @@ -199,7 +204,7 @@ static int __init quiet_kernel(char *str) { - console_loglevel = 4; + console_loglevel = 2; return 0; } @@ -226,7 +231,7 @@ early_param("loglevel", loglevel); /* Change NUL term back to "=", to make "param" the whole string. */ -static int __init repair_env_string(char *param, char *val, const char *unused) +static int __init repair_env_string(char *param, char *val, const char *unused, int known) { if (val) { /* param=val or param="val"? */ @@ -243,19 +248,20 @@ } /* - * Unknown boot options get handed to init, unless they look like - * unused parameters (modprobe will find them in /proc/cmdline). + * Select boot options to hand to init. If all is set hand off them all + * otherwise only hand off unused ones which do not apply to modules + * (modprobe will find them in /proc/cmdline). */ -static int __init unknown_bootoption(char *param, char *val, const char *unused) +static int __init pass_bootoption(char *param, char *val, const char *unused, int all) { - repair_env_string(param, val, unused); + repair_env_string(param, val, unused, all); /* Handle obsolete-style parameters */ - if (obsolete_checksetup(param)) + if (obsolete_checksetup(param) && !all) return 0; /* Unused module parameter. */ - if (strchr(param, '.') && (!val || strchr(param, '.') < val)) + if (!all && strchr(param, '.') && (!val || strchr(param, '.') < val)) return 0; if (panic_later) @@ -286,6 +292,16 @@ } return 0; } +static int __init pass_unknown_bootoptions(char *param, char *val, const char *unused, int known) +{ + if (known) + return 0; + return pass_bootoption(param, val, unused, 0); +} +static int __init pass_all_bootoptions(char *param, char *val, const char *unused, int known) +{ + return pass_bootoption(param, val, unused, 1); +} static int __init init_setup(char *str) { @@ -385,10 +401,13 @@ } /* Check for early params. */ -static int __init do_early_param(char *param, char *val, const char *unused) +static int __init do_early_param(char *param, char *val, const char *unused, int known) { const struct obs_kernel_param *p; + if (known) + return 0; + for (p = __setup_start; p < __setup_end; p++) { if ((p->early && parameq(param, p->str)) || (strcmp(param, "console") == 0 && @@ -508,7 +527,7 @@ parse_early_param(); parse_args("Booting kernel", static_command_line, __start___param, __stop___param - __start___param, - -1, -1, &unknown_bootoption); + -1, -1, &INIT_PASS_FUNCTION); jump_label_init(); @@ -602,7 +621,7 @@ pidmap_init(); anon_vma_init(); #ifdef CONFIG_X86 - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) efi_enter_virtual_mode(); #endif thread_info_cache_init(); @@ -630,6 +649,9 @@ acpi_early_init(); /* before LAPIC and SMP init */ sfi_init_late(); + if (efi_enabled(EFI_RUNTIME_SERVICES)) + efi_free_boot_services(); + ftrace_init(); /* Do the rest non-__init'ed, we're now alive */ @@ -871,6 +893,12 @@ (void) sys_dup(0); (void) sys_dup(0); /* + * We need to ensure that the filesystem is ready by this point, wait for + * async_populate_rootfs to complete. + */ + populate_rootfs_wait(); + + /* * check if there is an early userspace init. If yes, let it do all * the work */ --- linux-3.5.0.orig/init/initramfs.c +++ linux-3.5.0/init/initramfs.c @@ -18,6 +18,8 @@ #include #include #include +#include +#include static __initdata char *message; static void __init error(char *x) @@ -579,7 +581,15 @@ } #endif -static int __init populate_rootfs(void) +LIST_HEAD(populate_rootfs_domain); + +void populate_rootfs_wait(void) +{ + async_synchronize_full_domain(&populate_rootfs_domain); +} +EXPORT_SYMBOL(populate_rootfs_wait); + +static void __init async_populate_rootfs(void *data, async_cookie_t cookie) { char *err = unpack_to_rootfs(__initramfs_start, __initramfs_size); if (err) @@ -592,7 +602,7 @@ initrd_end - initrd_start); if (!err) { free_initrd(); - return 0; + return; } else { clean_rootfs(); unpack_to_rootfs(__initramfs_start, __initramfs_size); @@ -616,6 +626,27 @@ free_initrd(); #endif } + return; +} + +static int __initdata rootfs_populated; + +static int __init populate_rootfs_early(void) +{ + if (num_online_cpus() > 1) { + rootfs_populated = 1; + async_schedule_domain(async_populate_rootfs, NULL, + &populate_rootfs_domain); + } + return 0; +} +static int __init populate_rootfs(void) +{ + if (!rootfs_populated) + async_schedule_domain(async_populate_rootfs, NULL, + &populate_rootfs_domain); return 0; } + +earlyrootfs_initcall(populate_rootfs_early); rootfs_initcall(populate_rootfs); --- linux-3.5.0.orig/init/noinitramfs.c +++ linux-3.5.0/init/noinitramfs.c @@ -22,6 +22,8 @@ #include #include +LIST_HEAD(populate_rootfs_domain); + /* * Create a simple rootfs that is similar to the default initramfs */ --- linux-3.5.0.orig/virt/kvm/kvm_main.c +++ linux-3.5.0/virt/kvm/kvm_main.c @@ -689,8 +689,7 @@ int r; gfn_t base_gfn; unsigned long npages; - unsigned long i; - struct kvm_memory_slot *memslot; + struct kvm_memory_slot *memslot, *slot; struct kvm_memory_slot old, new; struct kvm_memslots *slots, *old_memslots; @@ -737,13 +736,11 @@ /* Check for overlaps */ r = -EEXIST; - for (i = 0; i < KVM_MEMORY_SLOTS; ++i) { - struct kvm_memory_slot *s = &kvm->memslots->memslots[i]; - - if (s == memslot || !s->npages) + kvm_for_each_memslot(slot, kvm->memslots) { + if (slot->id >= KVM_MEMORY_SLOTS || slot == memslot) continue; - if (!((base_gfn + npages <= s->base_gfn) || - (base_gfn >= s->base_gfn + s->npages))) + if (!((base_gfn + npages <= slot->base_gfn) || + (base_gfn >= slot->base_gfn + slot->npages))) goto out_free; } --- linux-3.5.0.orig/tools/lguest/lguest.c +++ linux-3.5.0/tools/lguest/lguest.c @@ -1299,6 +1299,7 @@ dev->feature_len = 0; dev->num_vq = 0; dev->running = false; + dev->next = NULL; /* * Append to device list. Prepending to a single-linked list is --- linux-3.5.0.orig/tools/power/cpupower/Makefile +++ linux-3.5.0/tools/power/cpupower/Makefile @@ -111,7 +111,7 @@ export CROSS CC AR STRIP RANLIB CFLAGS LDFLAGS LIB_OBJS # check if compiler option is supported -cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} +cc-supports = ${shell if $(CC) ${1} -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;} # use '-Os' optimization if available, else use -O2 OPTIMIZATION := $(call cc-supports,-Os,-O2) --- linux-3.5.0.orig/tools/perf/Makefile +++ linux-3.5.0/tools/perf/Makefile @@ -62,7 +62,7 @@ ARCH := x86 IS_X86_64 := 0 ifeq (, $(findstring m32,$(EXTRA_CFLAGS))) - IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -xc - | tail -n 1) + IS_X86_64 := $(shell echo __x86_64__ | ${CC} -E -x c - | tail -n 1) endif ifeq (${IS_X86_64}, 1) RAW_ARCH := x86_64 @@ -225,13 +225,13 @@ $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/parse-events-flex.h $(PARSER_DEBUG_FLEX) -t util/parse-events.l > $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c: util/parse-events.y - $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c + $(QUIET_BISON)$(BISON) -v util/parse-events.y -d $(PARSER_DEBUG_BISON) -o $(OUTPUT)util/parse-events-bison.c -p parse_events_ $(OUTPUT)util/pmu-flex.c: util/pmu.l $(QUIET_FLEX)$(FLEX) --header-file=$(OUTPUT)util/pmu-flex.h -t util/pmu.l > $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c: util/pmu.y - $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c + $(QUIET_BISON)$(BISON) -v util/pmu.y -d -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_ $(OUTPUT)util/parse-events.o: $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c $(OUTPUT)util/pmu.o: $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c --- linux-3.5.0.orig/tools/perf/builtin-test.c +++ linux-3.5.0/tools/perf/builtin-test.c @@ -604,19 +604,13 @@ #undef nsyscalls } -static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t **maskp, - size_t *sizep) +static int sched__get_first_possible_cpu(pid_t pid, cpu_set_t *maskp) { - cpu_set_t *mask; - size_t size; int i, cpu = -1, nrcpus = 1024; realloc: - mask = CPU_ALLOC(nrcpus); - size = CPU_ALLOC_SIZE(nrcpus); - CPU_ZERO_S(size, mask); + CPU_ZERO(maskp); - if (sched_getaffinity(pid, size, mask) == -1) { - CPU_FREE(mask); + if (sched_getaffinity(pid, sizeof(*maskp), maskp) == -1) { if (errno == EINVAL && nrcpus < (1024 << 8)) { nrcpus = nrcpus << 2; goto realloc; @@ -626,19 +620,14 @@ } for (i = 0; i < nrcpus; i++) { - if (CPU_ISSET_S(i, size, mask)) { - if (cpu == -1) { + if (CPU_ISSET(i, maskp)) { + if (cpu == -1) cpu = i; - *maskp = mask; - *sizep = size; - } else - CPU_CLR_S(i, size, mask); + else + CPU_CLR(i, maskp); } } - if (cpu == -1) - CPU_FREE(mask); - return cpu; } @@ -653,8 +642,8 @@ .freq = 10, .mmap_pages = 256, }; - cpu_set_t *cpu_mask = NULL; - size_t cpu_mask_size = 0; + cpu_set_t cpu_mask; + size_t cpu_mask_size = sizeof(cpu_mask); struct perf_evlist *evlist = perf_evlist__new(NULL, NULL); struct perf_evsel *evsel; struct perf_sample sample; @@ -718,8 +707,7 @@ evsel->attr.sample_type |= PERF_SAMPLE_TIME; perf_evlist__config_attrs(evlist, &opts); - err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask, - &cpu_mask_size); + err = sched__get_first_possible_cpu(evlist->workload.pid, &cpu_mask); if (err < 0) { pr_debug("sched__get_first_possible_cpu: %s\n", strerror(errno)); goto out_delete_evlist; @@ -730,9 +718,9 @@ /* * So that we can check perf_sample.cpu on all the samples. */ - if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, cpu_mask) < 0) { + if (sched_setaffinity(evlist->workload.pid, cpu_mask_size, &cpu_mask) < 0) { pr_debug("sched_setaffinity: %s\n", strerror(errno)); - goto out_free_cpu_mask; + goto out_delete_evlist; } /* @@ -925,8 +913,6 @@ } out_err: perf_evlist__munmap(evlist); -out_free_cpu_mask: - CPU_FREE(cpu_mask); out_delete_evlist: perf_evlist__delete(evlist); out: --- linux-3.5.0.orig/tools/perf/util/parse-events.y +++ linux-3.5.0/tools/perf/util/parse-events.y @@ -1,5 +1,4 @@ -%name-prefix "parse_events_" %parse-param {struct list_head *list_all} %parse-param {int *idx} --- linux-3.5.0.orig/tools/perf/util/pmu.y +++ linux-3.5.0/tools/perf/util/pmu.y @@ -1,5 +1,4 @@ -%name-prefix "perf_pmu_" %parse-param {struct list_head *format} %parse-param {char *name} --- linux-3.5.0.orig/tools/hv/Makefile +++ linux-3.5.0/tools/hv/Makefile @@ -0,0 +1,7 @@ +hv_kvp_daemon: hv_kvp_daemon.c + +clean: + rm -f hv_kvp_daemon + +install: + install hv_kvp_daemon /usr/sbin/ --- linux-3.5.0.orig/tools/hv/hv_kvp_daemon.8 +++ linux-3.5.0/tools/hv/hv_kvp_daemon.8 @@ -0,0 +1,26 @@ +.\" This page Copyright (C) 2012 Andy Whitcroft +.\" Distributed under the GPL v2 or later. +.TH HV_KVP_DAEMON 8 +.SH NAME +hv_kvp_daemon \- Hyper-V Key Value Pair daemon +.SH SYNOPSIS +.ft B +.B hv_kvp_daemon +.br +.SH DESCRIPTION +\fBhv_kvp_daemon\fP +is the userspace component of the Hyper-V key value pair functionality, +communicating via a netlink socket with the kernel HV-KVP driver. +This pairing allows the Hyper-V host to pass configuration information +(such as IP addresses) to the guest and allows the host to obtain guest +version information. + +.SH FILES +.ta +.nf +/var/opt/hyperv/.kvp_pool_* +.fi + +.SH AUTHORS +.nf +Written by K. Y. Srinivasan --- linux-3.5.0.orig/tools/hv/hv_kvp_daemon.c +++ linux-3.5.0/tools/hv/hv_kvp_daemon.c @@ -106,7 +106,7 @@ if (fcntl(kvp_file_info[pool].fd, F_SETLKW, &fl) == -1) { syslog(LOG_ERR, "Failed to acquire the lock pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } } @@ -118,7 +118,7 @@ if (fcntl(kvp_file_info[pool].fd, F_SETLK, &fl) == -1) { perror("fcntl"); syslog(LOG_ERR, "Failed to release the lock pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } } @@ -137,14 +137,19 @@ if (!filep) { kvp_release_lock(pool); syslog(LOG_ERR, "Failed to open file, pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } bytes_written = fwrite(kvp_file_info[pool].records, sizeof(struct kvp_record), kvp_file_info[pool].num_records, filep); - fflush(filep); + if (ferror(filep) || fclose(filep)) { + kvp_release_lock(pool); + syslog(LOG_ERR, "Failed to write file, pool: %d", pool); + exit(EXIT_FAILURE); + } + kvp_release_lock(pool); } @@ -163,14 +168,19 @@ if (!filep) { kvp_release_lock(pool); syslog(LOG_ERR, "Failed to open file, pool: %d", pool); - exit(-1); + exit(EXIT_FAILURE); } - while (!feof(filep)) { + for (;;) { readp = &record[records_read]; records_read += fread(readp, sizeof(struct kvp_record), ENTRIES_PER_BLOCK * num_blocks, filep); + if (ferror(filep)) { + syslog(LOG_ERR, "Failed to read file, pool: %d", pool); + exit(EXIT_FAILURE); + } + if (!feof(filep)) { /* * We have more data to read. @@ -180,7 +190,7 @@ if (record == NULL) { syslog(LOG_ERR, "malloc failed"); - exit(-1); + exit(EXIT_FAILURE); } continue; } @@ -191,6 +201,7 @@ kvp_file_info[pool].records = record; kvp_file_info[pool].num_records = records_read; + fclose(filep); kvp_release_lock(pool); } static int kvp_file_init(void) @@ -208,7 +219,7 @@ if (access("/var/opt/hyperv", F_OK)) { if (mkdir("/var/opt/hyperv", S_IRUSR | S_IWUSR | S_IROTH)) { syslog(LOG_ERR, " Failed to create /var/opt/hyperv"); - exit(-1); + exit(EXIT_FAILURE); } } @@ -232,12 +243,18 @@ fclose(filep); return 1; } - while (!feof(filep)) { + for (;;) { readp = &record[records_read]; records_read += fread(readp, sizeof(struct kvp_record), ENTRIES_PER_BLOCK, filep); + if (ferror(filep)) { + syslog(LOG_ERR, "Failed to read file, pool: %d", + i); + exit(EXIT_FAILURE); + } + if (!feof(filep)) { /* * We have more data to read. @@ -657,13 +674,13 @@ if (kvp_file_init()) { syslog(LOG_ERR, "Failed to initialize the pools"); - exit(-1); + exit(EXIT_FAILURE); } fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR); if (fd < 0) { syslog(LOG_ERR, "netlink socket creation failed; error:%d", fd); - exit(-1); + exit(EXIT_FAILURE); } addr.nl_family = AF_NETLINK; addr.nl_pad = 0; @@ -675,7 +692,7 @@ if (error < 0) { syslog(LOG_ERR, "bind failed; error:%d", error); close(fd); - exit(-1); + exit(EXIT_FAILURE); } sock_opt = addr.nl_groups; setsockopt(fd, 270, 1, &sock_opt, sizeof(sock_opt)); @@ -695,7 +712,7 @@ if (len < 0) { syslog(LOG_ERR, "netlink_send failed; error:%d", len); close(fd); - exit(-1); + exit(EXIT_FAILURE); } pfd.fd = fd; @@ -710,13 +727,19 @@ len = recvfrom(fd, kvp_recv_buffer, sizeof(kvp_recv_buffer), 0, addr_p, &addr_l); - if (len < 0 || addr.nl_pid) { + if (len < 0) { syslog(LOG_ERR, "recvfrom failed; pid:%u error:%d %s", addr.nl_pid, errno, strerror(errno)); close(fd); return -1; } + if (addr.nl_pid) { + syslog(LOG_WARNING, "Received packet from untrusted pid:%u", + addr.nl_pid); + continue; + } + incoming_msg = (struct nlmsghdr *)kvp_recv_buffer; incoming_cn_msg = (struct cn_msg *)NLMSG_DATA(incoming_msg); hv_msg = (struct hv_kvp_msg *)incoming_cn_msg->data; @@ -863,7 +886,7 @@ len = netlink_send(fd, incoming_cn_msg); if (len < 0) { syslog(LOG_ERR, "net_link send failed; error:%d", len); - exit(-1); + exit(EXIT_FAILURE); } } --- linux-3.5.0.orig/fs/eventpoll.c +++ linux-3.5.0/fs/eventpoll.c @@ -1285,7 +1285,7 @@ * otherwise we might miss an event that happens between the * f_op->poll() call and the new event set registering. */ - epi->event.events = event->events; + epi->event.events = event->events; /* need barrier below */ pt._key = event->events; epi->event.data = event->data; /* protected by mtx */ if (epi->event.events & EPOLLWAKEUP) { @@ -1296,6 +1296,26 @@ } /* + * The following barrier has two effects: + * + * 1) Flush epi changes above to other CPUs. This ensures + * we do not miss events from ep_poll_callback if an + * event occurs immediately after we call f_op->poll(). + * We need this because we did not take ep->lock while + * changing epi above (but ep_poll_callback does take + * ep->lock). + * + * 2) We also need to ensure we do not miss _past_ events + * when calling f_op->poll(). This barrier also + * pairs with the barrier in wq_has_sleeper (see + * comments for wq_has_sleeper). + * + * This barrier will now guarantee ep_poll_callback or f_op->poll + * (or both) will notice the readiness of an item. + */ + smp_mb(); + + /* * Get current event bits. We can safely use the file* here because * its usage count has been increased by the caller of this function. */ --- linux-3.5.0.orig/fs/Kconfig +++ linux-3.5.0/fs/Kconfig @@ -67,6 +67,7 @@ source "fs/autofs4/Kconfig" source "fs/fuse/Kconfig" +source "fs/overlayfs/Kconfig" config CUSE tristate "Character device in Userspace support" --- linux-3.5.0.orig/fs/namespace.c +++ linux-3.5.0/fs/namespace.c @@ -50,6 +50,7 @@ * tree or hash is modified or when a vfsmount structure is modified. */ DEFINE_BRLOCK(vfsmount_lock); +EXPORT_SYMBOL(vfsmount_lock); static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry) { @@ -1327,6 +1328,24 @@ release_mounts(&umount_list); } +struct vfsmount *clone_private_mount(struct path *path) +{ + struct mount *old_mnt = real_mount(path->mnt); + struct mount *new_mnt; + + if (IS_MNT_UNBINDABLE(old_mnt)) + return ERR_PTR(-EINVAL); + + down_read(&namespace_sem); + new_mnt = clone_mnt(old_mnt, path->dentry, CL_PRIVATE); + up_read(&namespace_sem); + if (!new_mnt) + return ERR_PTR(-ENOMEM); + + return &new_mnt->mnt; +} +EXPORT_SYMBOL_GPL(clone_private_mount); + int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, struct vfsmount *root) { @@ -1341,6 +1360,7 @@ } return 0; } +EXPORT_SYMBOL(iterate_mounts); static void cleanup_group_ids(struct mount *mnt, struct mount *end) { --- linux-3.5.0.orig/fs/open.c +++ linux-3.5.0/fs/open.c @@ -33,6 +33,9 @@ #include "internal.h" +#define CREATE_TRACE_POINTS +#include + int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, struct file *filp) { @@ -60,6 +63,7 @@ mutex_unlock(&dentry->d_inode->i_mutex); return ret; } +EXPORT_SYMBOL(do_truncate); static long do_sys_truncate(const char __user *pathname, loff_t length) { @@ -667,24 +671,24 @@ return 0; } -static struct file *do_dentry_open(struct dentry *dentry, struct vfsmount *mnt, - struct file *f, - int (*open)(struct inode *, struct file *), - const struct cred *cred) +static struct file *do_dentry_open(struct path *path, struct file *f, + int (*open)(struct inode *, struct file *), + const struct cred *cred) { static const struct file_operations empty_fops = {}; struct inode *inode; int error; + path_get(path); f->f_mode = OPEN_FMODE(f->f_flags) | FMODE_LSEEK | FMODE_PREAD | FMODE_PWRITE; if (unlikely(f->f_flags & O_PATH)) f->f_mode = FMODE_PATH; - inode = dentry->d_inode; + inode = path->dentry->d_inode; if (f->f_mode & FMODE_WRITE) { - error = __get_file_write_access(inode, mnt); + error = __get_file_write_access(inode, path->mnt); if (error) goto cleanup_file; if (!special_file(inode->i_mode)) @@ -692,8 +696,7 @@ } f->f_mapping = inode->i_mapping; - f->f_path.dentry = dentry; - f->f_path.mnt = mnt; + f->f_path = *path; f->f_pos = 0; file_sb_list_add(f, inode->i_sb); @@ -740,24 +743,22 @@ * here, so just reset the state. */ file_reset_write(f); - mnt_drop_write(mnt); + mnt_drop_write(path->mnt); } } file_sb_list_del(f); f->f_path.dentry = NULL; f->f_path.mnt = NULL; cleanup_file: - dput(dentry); - mntput(mnt); + path_put(path); return ERR_PTR(error); } -static struct file *__dentry_open(struct dentry *dentry, struct vfsmount *mnt, - struct file *f, +static struct file *__dentry_open(struct path *path, struct file *f, int (*open)(struct inode *, struct file *), const struct cred *cred) { - struct file *res = do_dentry_open(dentry, mnt, f, open, cred); + struct file *res = do_dentry_open(path, f, open, cred); if (!IS_ERR(res)) { int error = open_check_o_direct(f); if (error) { @@ -792,14 +793,14 @@ struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)) { + struct path path = { .dentry = dentry, .mnt = nd->path.mnt }; const struct cred *cred = current_cred(); if (IS_ERR(nd->intent.open.file)) goto out; if (IS_ERR(dentry)) goto out_err; - nd->intent.open.file = __dentry_open(dget(dentry), mntget(nd->path.mnt), - nd->intent.open.file, + nd->intent.open.file = __dentry_open(&path, nd->intent.open.file, open, cred); out: return nd->intent.open.file; @@ -830,10 +831,17 @@ nd->intent.open.file = NULL; } else { struct file *res; + struct inode *inode = nd->path.dentry->d_inode; + + if (inode->i_op->open) { + res = inode->i_op->open(nd->path.dentry, filp, cred); + if (!IS_ERR(res)) { + nd->intent.open.file = NULL; + } + return res; + } - path_get(&nd->path); - res = do_dentry_open(nd->path.dentry, nd->path.mnt, - filp, NULL, cred); + res = do_dentry_open(&nd->path, filp, NULL, cred); if (!IS_ERR(res)) { int error; @@ -860,27 +868,48 @@ struct file *dentry_open(struct dentry *dentry, struct vfsmount *mnt, int flags, const struct cred *cred) { - int error; struct file *f; + struct file *ret; + struct path path = { .dentry = dentry, .mnt = mnt }; validate_creds(cred); /* We must always pass in a valid mount pointer. */ BUG_ON(!mnt); - error = -ENFILE; + ret = ERR_PTR(-ENFILE); f = get_empty_filp(); - if (f == NULL) { - dput(dentry); - mntput(mnt); - return ERR_PTR(error); + if (f != NULL) { + f->f_flags = flags; + ret = vfs_open(&path, f, cred); } + path_put(&path); - f->f_flags = flags; - return __dentry_open(dentry, mnt, f, NULL, cred); + return ret; } EXPORT_SYMBOL(dentry_open); +/** + * vfs_open - open the file at the given path + * @path: path to open + * @filp: newly allocated file with f_flag initialized + * @cred: credentials to use + * + * Open the file. If successful, the returned file will have acquired + * an additional reference for path. + */ +struct file *vfs_open(struct path *path, struct file *filp, + const struct cred *cred) +{ + struct inode *inode = path->dentry->d_inode; + + if (inode->i_op->open) + return inode->i_op->open(path->dentry, filp, cred); + else + return __dentry_open(path, filp, NULL, cred); +} +EXPORT_SYMBOL(vfs_open); + static void __put_unused_fd(struct files_struct *files, unsigned int fd) { struct fdtable *fdt = files_fdtable(files); @@ -930,9 +959,10 @@ int lookup_flags = 0; int acc_mode; - if (!(flags & O_CREAT)) - mode = 0; - op->mode = mode; + if (flags & O_CREAT) + op->mode = (mode & S_IALLUGO) | S_IFREG; + else + op->mode = 0; /* Must never be set by userspace */ flags &= ~FMODE_NONOTIFY; @@ -1035,6 +1065,7 @@ } else { fsnotify_open(f); fd_install(fd, f); + trace_do_sys_open(tmp, flags, mode); } } putname(tmp); --- linux-3.5.0.orig/fs/binfmt_misc.c +++ linux-3.5.0/fs/binfmt_misc.c @@ -117,10 +117,6 @@ if (!enabled) goto _ret; - retval = -ENOEXEC; - if (bprm->recursion_depth > BINPRM_MAX_RECURSION) - goto _ret; - /* to keep locking time low, we copy the interpreter string */ read_lock(&entries_lock); fmt = check_file(bprm); @@ -176,7 +172,10 @@ goto _error; bprm->argc ++; - bprm->interp = iname; /* for binfmt_script */ + /* Update interp in case binfmt_script needs it. */ + retval = bprm_change_interp(iname, bprm); + if (retval < 0) + goto _error; interp_file = open_exec (iname); retval = PTR_ERR (interp_file); @@ -197,9 +196,7 @@ if (retval < 0) goto _error; - bprm->recursion_depth++; - - retval = search_binary_handler (bprm, regs); + retval = search_binary_handler(bprm, regs); if (retval < 0) goto _error; --- linux-3.5.0.orig/fs/dcache.c +++ linux-3.5.0/fs/dcache.c @@ -389,7 +389,7 @@ * Inform try_to_ascend() that we are no longer attached to the * dentry tree */ - dentry->d_flags |= DCACHE_DISCONNECTED; + dentry->d_flags |= DCACHE_DENTRY_KILLED; if (parent) spin_unlock(&parent->d_lock); dentry_iput(dentry); @@ -1046,7 +1046,7 @@ * or deletion */ if (new != old->d_parent || - (old->d_flags & DCACHE_DISCONNECTED) || + (old->d_flags & DCACHE_DENTRY_KILLED) || (!locked && read_seqretry(&rename_lock, seq))) { spin_unlock(&new->d_lock); new = NULL; @@ -1132,6 +1132,8 @@ return 1; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -1234,6 +1236,8 @@ rename_retry: if (found) return found; + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; @@ -1576,7 +1580,7 @@ */ struct dentry *d_obtain_alias(struct inode *inode) { - static const struct qstr anonstring = { .name = "" }; + static const struct qstr anonstring = QSTR_INIT("/", 1); struct dentry *tmp; struct dentry *res; @@ -3031,6 +3035,8 @@ return; rename_retry: + if (locked) + goto again; locked = 1; write_seqlock(&rename_lock); goto again; --- linux-3.5.0.orig/fs/namei.c +++ linux-3.5.0/fs/namei.c @@ -315,6 +315,36 @@ } /** + * inode_only_permission - check access rights to a given inode only + * @inode: inode to check permissions on + * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC, ...) + * + * Uses to check read/write/execute permissions on an inode directly, we do + * not check filesystem permissions. + */ +int inode_only_permission(struct inode *inode, int mask) +{ + int retval; + + /* + * Nobody gets write access to an immutable file. + */ + if (unlikely(mask & MAY_WRITE) && IS_IMMUTABLE(inode)) + return -EACCES; + + retval = do_inode_permission(inode, mask); + if (retval) + return retval; + + retval = devcgroup_inode_permission(inode, mask); + if (retval) + return retval; + + return security_inode_permission(inode, mask); +} +EXPORT_SYMBOL(inode_only_permission); + +/** * inode_permission - check for access rights to a given inode * @inode: inode to check permission on * @mask: right to check for (%MAY_READ, %MAY_WRITE, %MAY_EXEC, ...) @@ -328,8 +358,6 @@ */ int inode_permission(struct inode *inode, int mask) { - int retval; - if (unlikely(mask & MAY_WRITE)) { umode_t mode = inode->i_mode; @@ -339,23 +367,9 @@ if (IS_RDONLY(inode) && (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) return -EROFS; - - /* - * Nobody gets write access to an immutable file. - */ - if (IS_IMMUTABLE(inode)) - return -EACCES; } - retval = do_inode_permission(inode, mask); - if (retval) - return retval; - - retval = devcgroup_inode_permission(inode, mask); - if (retval) - return retval; - - return security_inode_permission(inode, mask); + return inode_only_permission(inode, mask); } /** @@ -1864,10 +1878,11 @@ * needs parent already locked. Doesn't follow mounts. * SMP-safe. */ -static struct dentry *lookup_hash(struct nameidata *nd) +struct dentry *lookup_hash(struct nameidata *nd) { return __lookup_hash(&nd->last, nd->path.dentry, nd); } +EXPORT_SYMBOL(lookup_hash); /** * lookup_one_len - filesystem helper to lookup single pathname component --- linux-3.5.0.orig/fs/Makefile +++ linux-3.5.0/fs/Makefile @@ -106,6 +106,7 @@ obj-$(CONFIG_AUTOFS4_FS) += autofs4/ obj-$(CONFIG_ADFS_FS) += adfs/ obj-$(CONFIG_FUSE_FS) += fuse/ +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs/ obj-$(CONFIG_UDF_FS) += udf/ obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/ obj-$(CONFIG_OMFS_FS) += omfs/ --- linux-3.5.0.orig/fs/file_table.c +++ linux-3.5.0/fs/file_table.c @@ -35,6 +35,7 @@ }; DEFINE_LGLOCK(files_lglock); +EXPORT_SYMBOL(files_lglock); /* SLAB cache for file structures */ static struct kmem_cache *filp_cachep __read_mostly; @@ -441,6 +442,8 @@ } } +EXPORT_SYMBOL(file_sb_list_del); + #ifdef CONFIG_SMP /* --- linux-3.5.0.orig/fs/inode.c +++ linux-3.5.0/fs/inode.c @@ -56,6 +56,7 @@ static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock); __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_sb_list_lock); +EXPORT_SYMBOL(inode_sb_list_lock); /* * Empty aops. Can be used for the cases where the user does not @@ -408,6 +409,19 @@ spin_unlock(&inode->i_sb->s_inode_lru_lock); } +/* + * Add inode to LRU if needed (inode is unused and clean). + * + * Needs inode->i_lock held. + */ +void inode_add_lru(struct inode *inode) +{ + if (!(inode->i_state & (I_DIRTY | I_SYNC | I_FREEING | I_WILL_FREE)) && + !atomic_read(&inode->i_count) && inode->i_sb->s_flags & MS_ACTIVE) + inode_lru_list_add(inode); +} + + static void inode_lru_list_del(struct inode *inode) { spin_lock(&inode->i_sb->s_inode_lru_lock); @@ -1390,8 +1404,7 @@ if (!drop && (sb->s_flags & MS_ACTIVE)) { inode->i_state |= I_REFERENCED; - if (!(inode->i_state & (I_DIRTY|I_SYNC))) - inode_lru_list_add(inode); + inode_add_lru(inode); spin_unlock(&inode->i_lock); return; } @@ -1491,7 +1504,7 @@ * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ -static int update_time(struct inode *inode, struct timespec *time, int flags) +int update_time(struct inode *inode, struct timespec *time, int flags) { if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); @@ -1507,6 +1520,7 @@ mark_inode_dirty_sync(inode); return 0; } +EXPORT_SYMBOL(update_time); /** * touch_atime - update the access time @@ -1883,3 +1897,7 @@ wake_up_bit(&inode->i_state, __I_DIO_WAKEUP); } EXPORT_SYMBOL(inode_dio_done); + +#define CREATE_TRACE_POINTS +#include + --- linux-3.5.0.orig/fs/compat.c +++ linux-3.5.0/fs/compat.c @@ -1155,11 +1155,14 @@ struct file *file; int fput_needed; ssize_t ret; + loff_t pos; file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_readv(file, vec, vlen, &file->f_pos); + pos = file->f_pos; + ret = compat_readv(file, vec, vlen, &pos); + file->f_pos = pos; fput_light(file, fput_needed); return ret; } @@ -1221,11 +1224,14 @@ struct file *file; int fput_needed; ssize_t ret; + loff_t pos; file = fget_light(fd, &fput_needed); if (!file) return -EBADF; - ret = compat_writev(file, vec, vlen, &file->f_pos); + pos = file->f_pos; + ret = compat_writev(file, vec, vlen, &pos); + file->f_pos = pos; fput_light(file, fput_needed); return ret; } --- linux-3.5.0.orig/fs/locks.c +++ linux-3.5.0/fs/locks.c @@ -308,7 +308,7 @@ return 0; } -static int assign_type(struct file_lock *fl, int type) +static int assign_type(struct file_lock *fl, long type) { switch (type) { case F_RDLCK: @@ -445,7 +445,7 @@ /* * Initialize a lease, use the default lock manager operations */ -static int lease_init(struct file *filp, int type, struct file_lock *fl) +static int lease_init(struct file *filp, long type, struct file_lock *fl) { if (assign_type(fl, type) != 0) return -EINVAL; @@ -463,7 +463,7 @@ } /* Allocate a file_lock initialised to this type of lease */ -static struct file_lock *lease_alloc(struct file *filp, int type) +static struct file_lock *lease_alloc(struct file *filp, long type) { struct file_lock *fl = locks_alloc_lock(); int error = -ENOMEM; --- linux-3.5.0.orig/fs/stat.c +++ linux-3.5.0/fs/stat.c @@ -58,7 +58,7 @@ int vfs_fstat(unsigned int fd, struct kstat *stat) { int fput_needed; - struct file *f = fget_light(fd, &fput_needed); + struct file *f = fget_raw_light(fd, &fput_needed); int error = -EBADF; if (f) { --- linux-3.5.0.orig/fs/exec.c +++ linux-3.5.0/fs/exec.c @@ -56,6 +56,8 @@ #include #include +#include + #include #include #include @@ -781,6 +783,8 @@ fsnotify_open(file); + trace_open_exec(name); + err = deny_write_access(file); if (err) goto exit; @@ -1020,7 +1024,7 @@ unsigned long set, i; j++; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; fdt = files_fdtable(files); if (i >= fdt->max_fds) break; @@ -1110,7 +1114,8 @@ bprm->mm = NULL; /* We're using it now */ set_fs(USER_DS); - current->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD); + current->flags &= + ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD | PF_NOFREEZE); flush_thread(); current->personality &= ~bprm->per_clear; @@ -1201,9 +1206,24 @@ mutex_unlock(¤t->signal->cred_guard_mutex); abort_creds(bprm->cred); } + /* If a binfmt changed the interp, free it. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); kfree(bprm); } +int bprm_change_interp(char *interp, struct linux_binprm *bprm) +{ + /* If a binfmt changed the interp, free it first. */ + if (bprm->interp != bprm->filename) + kfree(bprm->interp); + bprm->interp = kstrdup(interp, GFP_KERNEL); + if (!bprm->interp) + return -ENOMEM; + return 0; +} +EXPORT_SYMBOL(bprm_change_interp); + /* * install the new credentials for this executable */ @@ -1382,6 +1402,10 @@ struct linux_binfmt *fmt; pid_t old_pid, old_vpid; + /* This allows 4 levels of binfmt rewrites before failing hard. */ + if (depth > 5) + return -ELOOP; + retval = security_bprm_check(bprm); if (retval) return retval; @@ -1406,12 +1430,8 @@ if (!try_module_get(fmt->module)) continue; read_unlock(&binfmt_lock); + bprm->recursion_depth = depth + 1; retval = fn(bprm, regs); - /* - * Restore the depth counter to its starting value - * in this call, so we don't have to rely on every - * load_binary function to restore it on return. - */ bprm->recursion_depth = depth; if (retval >= 0) { if (depth == 0) { --- linux-3.5.0.orig/fs/splice.c +++ linux-3.5.0/fs/splice.c @@ -696,8 +696,10 @@ return -EINVAL; more = (sd->flags & SPLICE_F_MORE) ? MSG_MORE : 0; - if (sd->len < sd->total_len) + + if (sd->len < sd->total_len && pipe->nrbufs > 1) more |= MSG_SENDPAGE_NOTLAST; + return file->f_op->sendpage(file, buf->page, buf->offset, sd->len, &pos, more); } @@ -1090,8 +1092,8 @@ /* * Attempt to initiate a splice from pipe to file. */ -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, - loff_t *ppos, size_t len, unsigned int flags) +long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) { ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); @@ -1114,13 +1116,14 @@ return splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL(do_splice_from); /* * Attempt to initiate a splice from a file to a pipe. */ -static long do_splice_to(struct file *in, loff_t *ppos, - struct pipe_inode_info *pipe, size_t len, - unsigned int flags) +long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -1140,6 +1143,7 @@ return splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes @@ -1305,6 +1309,7 @@ return ret; } +EXPORT_SYMBOL(do_splice_direct); static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe, struct pipe_inode_info *opipe, --- linux-3.5.0.orig/fs/compat_ioctl.c +++ linux-3.5.0/fs/compat_ioctl.c @@ -210,6 +210,8 @@ err = get_user(palp, &up->palette); err |= get_user(length, &up->length); + if (err) + return -EFAULT; up_native = compat_alloc_user_space(sizeof(struct video_spu_palette)); err = put_user(compat_ptr(palp), &up_native->palette); --- linux-3.5.0.orig/fs/binfmt_elf.c +++ linux-3.5.0/fs/binfmt_elf.c @@ -1696,30 +1696,19 @@ return 0; info->psinfo = kmalloc(sizeof(*info->psinfo), GFP_KERNEL); if (!info->psinfo) - goto notes_free; + return 0; info->prstatus = kmalloc(sizeof(*info->prstatus), GFP_KERNEL); if (!info->prstatus) - goto psinfo_free; + return 0; info->fpu = kmalloc(sizeof(*info->fpu), GFP_KERNEL); if (!info->fpu) - goto prstatus_free; + return 0; #ifdef ELF_CORE_COPY_XFPREGS info->xfpu = kmalloc(sizeof(*info->xfpu), GFP_KERNEL); if (!info->xfpu) - goto fpu_free; + return 0; #endif return 1; -#ifdef ELF_CORE_COPY_XFPREGS - fpu_free: - kfree(info->fpu); -#endif - prstatus_free: - kfree(info->prstatus); - psinfo_free: - kfree(info->psinfo); - notes_free: - kfree(info->notes); - return 0; } static int fill_note_info(struct elfhdr *elf, int phdrs, --- linux-3.5.0.orig/fs/buffer.c +++ linux-3.5.0/fs/buffer.c @@ -914,7 +914,7 @@ /* * Initialise the state of a blockdev page's buffers. */ -static void +static sector_t init_page_buffers(struct page *page, struct block_device *bdev, sector_t block, int size) { @@ -936,33 +936,41 @@ block++; bh = bh->b_this_page; } while (bh != head); + + /* + * Caller needs to validate requested block against end of device. + */ + return end_block; } /* * Create the page-cache page that contains the requested block. * - * This is user purely for blockdev mappings. + * This is used purely for blockdev mappings. */ -static struct page * +static int grow_dev_page(struct block_device *bdev, sector_t block, - pgoff_t index, int size) + pgoff_t index, int size, int sizebits) { struct inode *inode = bdev->bd_inode; struct page *page; struct buffer_head *bh; + sector_t end_block; + int ret = 0; /* Will call free_more_memory() */ page = find_or_create_page(inode->i_mapping, index, (mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS)|__GFP_MOVABLE); if (!page) - return NULL; + return ret; BUG_ON(!PageLocked(page)); if (page_has_buffers(page)) { bh = page_buffers(page); if (bh->b_size == size) { - init_page_buffers(page, bdev, block, size); - return page; + end_block = init_page_buffers(page, bdev, + index << sizebits, size); + goto done; } if (!try_to_free_buffers(page)) goto failed; @@ -982,14 +990,14 @@ */ spin_lock(&inode->i_mapping->private_lock); link_dev_buffers(page, bh); - init_page_buffers(page, bdev, block, size); + end_block = init_page_buffers(page, bdev, index << sizebits, size); spin_unlock(&inode->i_mapping->private_lock); - return page; - +done: + ret = (block < end_block) ? 1 : -ENXIO; failed: unlock_page(page); page_cache_release(page); - return NULL; + return ret; } /* @@ -999,7 +1007,6 @@ static int grow_buffers(struct block_device *bdev, sector_t block, int size) { - struct page *page; pgoff_t index; int sizebits; @@ -1023,22 +1030,14 @@ bdevname(bdev, b)); return -EIO; } - block = index << sizebits; + /* Create a page with the proper size buffers.. */ - page = grow_dev_page(bdev, block, index, size); - if (!page) - return 0; - unlock_page(page); - page_cache_release(page); - return 1; + return grow_dev_page(bdev, block, index, size, sizebits); } static struct buffer_head * __getblk_slow(struct block_device *bdev, sector_t block, int size) { - int ret; - struct buffer_head *bh; - /* Size must be multiple of hard sectorsize */ if (unlikely(size & (bdev_logical_block_size(bdev)-1) || (size < 512 || size > PAGE_SIZE))) { @@ -1051,21 +1050,20 @@ return NULL; } -retry: - bh = __find_get_block(bdev, block, size); - if (bh) - return bh; + for (;;) { + struct buffer_head *bh; + int ret; - ret = grow_buffers(bdev, block, size); - if (ret == 0) { - free_more_memory(); - goto retry; - } else if (ret > 0) { bh = __find_get_block(bdev, block, size); if (bh) return bh; + + ret = grow_buffers(bdev, block, size); + if (ret < 0) + return NULL; + if (ret == 0) + free_more_memory(); } - return NULL; } /* @@ -1321,10 +1319,6 @@ * which corresponds to the passed block_device, block and size. The * returned buffer has its reference count incremented. * - * __getblk() cannot fail - it just keeps trying. If you pass it an - * illegal block number, __getblk() will happily return a buffer_head - * which represents the non-existent block. Very weird. - * * __getblk() will lock up the machine if grow_dev_page's try_to_free_buffers() * attempt is failing. FIXME, perhaps? */ --- linux-3.5.0.orig/fs/binfmt_script.c +++ linux-3.5.0/fs/binfmt_script.c @@ -22,15 +22,13 @@ char interp[BINPRM_BUF_SIZE]; int retval; - if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') || - (bprm->recursion_depth > BINPRM_MAX_RECURSION)) + if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!')) return -ENOEXEC; /* * This section does the #! interpretation. * Sorta complicated, but hopefully it will work. -TYT */ - bprm->recursion_depth++; allow_write_access(bprm->file); fput(bprm->file); bprm->file = NULL; @@ -82,7 +80,9 @@ retval = copy_strings_kernel(1, &i_name, bprm); if (retval) return retval; bprm->argc++; - bprm->interp = interp; + retval = bprm_change_interp(interp, bprm); + if (retval < 0) + return retval; /* * OK, now restart the process with the interpreter's dentry. --- linux-3.5.0.orig/fs/block_dev.c +++ linux-3.5.0/fs/block_dev.c @@ -1047,6 +1047,7 @@ mutex_lock(&bdev->bd_mutex); check_disk_size_change(disk, bdev); + bdev->bd_invalidated = 0; mutex_unlock(&bdev->bd_mutex); bdput(bdev); return ret; --- linux-3.5.0.orig/fs/binfmt_em86.c +++ linux-3.5.0/fs/binfmt_em86.c @@ -42,7 +42,6 @@ return -ENOEXEC; } - bprm->recursion_depth++; /* Well, the bang-shell is implicit... */ allow_write_access(bprm->file); fput(bprm->file); bprm->file = NULL; --- linux-3.5.0.orig/fs/fs-writeback.c +++ linux-3.5.0/fs/fs-writeback.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "internal.h" /* @@ -68,6 +69,7 @@ { return test_bit(BDI_writeback_running, &bdi->state); } +EXPORT_SYMBOL(writeback_in_progress); static inline struct backing_dev_info *inode_to_bdi(struct inode *inode) { @@ -232,6 +234,8 @@ static void inode_sync_complete(struct inode *inode) { inode->i_state &= ~I_SYNC; + /* If inode is clean an unused, put it into LRU now... */ + inode_add_lru(inode); /* Waiters must see I_SYNC cleared before being woken up */ smp_mb(); wake_up_bit(&inode->i_state, __I_SYNC); @@ -1171,6 +1175,8 @@ if ((inode->i_state & flags) == flags) return; + trace_dirty_inode(inode, current); + if (unlikely(block_dump)) block_dump___mark_inode_dirty(inode); --- linux-3.5.0.orig/fs/direct-io.c +++ linux-3.5.0/fs/direct-io.c @@ -261,9 +261,9 @@ dio->end_io(dio->iocb, offset, transferred, dio->private, ret, is_async); } else { + inode_dio_done(dio->inode); if (is_async) aio_complete(dio->iocb, ret, 0); - inode_dio_done(dio->inode); } return ret; --- linux-3.5.0.orig/fs/select.c +++ linux-3.5.0/fs/select.c @@ -345,8 +345,8 @@ struct fdtable *fdt; /* handle last in-complete long-word first */ - set = ~(~0UL << (n & (__NFDBITS-1))); - n /= __NFDBITS; + set = ~(~0UL << (n & (BITS_PER_LONG-1))); + n /= BITS_PER_LONG; fdt = files_fdtable(current->files); open_fds = fdt->open_fds + n; max = 0; @@ -373,7 +373,7 @@ max++; set >>= 1; } while (set); - max += n * __NFDBITS; + max += n * BITS_PER_LONG; } return max; @@ -435,11 +435,11 @@ in = *inp++; out = *outp++; ex = *exp++; all_bits = in | out | ex; if (all_bits == 0) { - i += __NFDBITS; + i += BITS_PER_LONG; continue; } - for (j = 0; j < __NFDBITS; ++j, ++i, bit <<= 1) { + for (j = 0; j < BITS_PER_LONG; ++j, ++i, bit <<= 1) { int fput_needed; if (i >= n) break; --- linux-3.5.0.orig/fs/internal.h +++ linux-3.5.0/fs/internal.h @@ -106,6 +106,7 @@ * inode.c */ extern spinlock_t inode_sb_list_lock; +extern void inode_add_lru(struct inode *inode); /* * fs-writeback.c --- linux-3.5.0.orig/fs/ecryptfs/ecryptfs_kernel.h +++ linux-3.5.0/fs/ecryptfs/ecryptfs_kernel.h @@ -568,6 +568,8 @@ struct inode *ecryptfs_get_inode(struct inode *lower_inode, struct super_block *sb); void ecryptfs_i_size_init(const char *page_virt, struct inode *inode); +int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, + struct inode *ecryptfs_inode); int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, size_t *decrypted_name_size, struct dentry *ecryptfs_dentry, --- linux-3.5.0.orig/fs/ecryptfs/inode.c +++ linux-3.5.0/fs/ecryptfs/inode.c @@ -143,6 +143,31 @@ return 0; } +static int ecryptfs_do_unlink(struct inode *dir, struct dentry *dentry, + struct inode *inode) +{ + struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); + struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); + struct dentry *lower_dir_dentry; + int rc; + + dget(lower_dentry); + lower_dir_dentry = lock_parent(lower_dentry); + rc = vfs_unlink(lower_dir_inode, lower_dentry); + if (rc) { + printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); + goto out_unlock; + } + fsstack_copy_attr_times(dir, lower_dir_inode); + set_nlink(inode, ecryptfs_inode_to_lower(inode)->i_nlink); + inode->i_ctime = dir->i_ctime; + d_drop(dentry); +out_unlock: + unlock_dir(lower_dir_dentry); + dput(lower_dentry); + return rc; +} + /** * ecryptfs_do_create * @directory_inode: inode of the new file's dentry's parent in ecryptfs @@ -182,8 +207,10 @@ } inode = __ecryptfs_get_inode(lower_dentry->d_inode, directory_inode->i_sb); - if (IS_ERR(inode)) + if (IS_ERR(inode)) { + vfs_unlink(lower_dir_dentry->d_inode, lower_dentry); goto out_lock; + } fsstack_copy_attr_times(directory_inode, lower_dir_dentry->d_inode); fsstack_copy_inode_size(directory_inode, lower_dir_dentry->d_inode); out_lock: @@ -200,8 +227,8 @@ * * Returns zero on success */ -static int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, - struct inode *ecryptfs_inode) +int ecryptfs_initialize_file(struct dentry *ecryptfs_dentry, + struct inode *ecryptfs_inode) { struct ecryptfs_crypt_stat *crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; @@ -265,7 +292,9 @@ * that this on disk file is prepared to be an ecryptfs file */ rc = ecryptfs_initialize_file(ecryptfs_dentry, ecryptfs_inode); if (rc) { - drop_nlink(ecryptfs_inode); + ecryptfs_do_unlink(directory_inode, ecryptfs_dentry, + ecryptfs_inode); + make_bad_inode(ecryptfs_inode); unlock_new_inode(ecryptfs_inode); iput(ecryptfs_inode); goto out; @@ -477,27 +506,7 @@ static int ecryptfs_unlink(struct inode *dir, struct dentry *dentry) { - int rc = 0; - struct dentry *lower_dentry = ecryptfs_dentry_to_lower(dentry); - struct inode *lower_dir_inode = ecryptfs_inode_to_lower(dir); - struct dentry *lower_dir_dentry; - - dget(lower_dentry); - lower_dir_dentry = lock_parent(lower_dentry); - rc = vfs_unlink(lower_dir_inode, lower_dentry); - if (rc) { - printk(KERN_ERR "Error in vfs_unlink; rc = [%d]\n", rc); - goto out_unlock; - } - fsstack_copy_attr_times(dir, lower_dir_inode); - set_nlink(dentry->d_inode, - ecryptfs_inode_to_lower(dentry->d_inode)->i_nlink); - dentry->d_inode->i_ctime = dir->i_ctime; - d_drop(dentry); -out_unlock: - unlock_dir(lower_dir_dentry); - dput(lower_dentry); - return rc; + return ecryptfs_do_unlink(dir, dentry, dentry->d_inode); } static int ecryptfs_symlink(struct inode *dir, struct dentry *dentry, @@ -621,6 +630,7 @@ struct dentry *lower_old_dir_dentry; struct dentry *lower_new_dir_dentry; struct dentry *trap = NULL; + struct inode *target_inode; lower_old_dentry = ecryptfs_dentry_to_lower(old_dentry); lower_new_dentry = ecryptfs_dentry_to_lower(new_dentry); @@ -628,6 +638,7 @@ dget(lower_new_dentry); lower_old_dir_dentry = dget_parent(lower_old_dentry); lower_new_dir_dentry = dget_parent(lower_new_dentry); + target_inode = new_dentry->d_inode; trap = lock_rename(lower_old_dir_dentry, lower_new_dir_dentry); /* source should not be ancestor of target */ if (trap == lower_old_dentry) { @@ -643,6 +654,9 @@ lower_new_dir_dentry->d_inode, lower_new_dentry); if (rc) goto out_lock; + if (target_inode) + fsstack_copy_attr_all(target_inode, + ecryptfs_inode_to_lower(target_inode)); fsstack_copy_attr_all(new_dir, lower_new_dir_dentry->d_inode); if (new_dir != old_dir) fsstack_copy_attr_all(old_dir, lower_old_dir_dentry->d_inode); @@ -972,12 +986,6 @@ goto out; } - if (S_ISREG(inode->i_mode)) { - rc = filemap_write_and_wait(inode->i_mapping); - if (rc) - goto out; - fsstack_copy_attr_all(inode, lower_inode); - } memcpy(&lower_ia, ia, sizeof(lower_ia)); if (ia->ia_valid & ATTR_FILE) lower_ia.ia_file = ecryptfs_file_to_lower(ia->ia_file); --- linux-3.5.0.orig/fs/ecryptfs/main.c +++ linux-3.5.0/fs/ecryptfs/main.c @@ -162,6 +162,7 @@ inode_info = ecryptfs_inode_to_private(inode); if (atomic_dec_and_mutex_lock(&inode_info->lower_file_count, &inode_info->lower_file_mutex)) { + filemap_write_and_wait(inode->i_mapping); fput(inode_info->lower_file); inode_info->lower_file = NULL; mutex_unlock(&inode_info->lower_file_mutex); @@ -279,6 +280,7 @@ char *fnek_src; char *cipher_key_bytes_src; char *fn_cipher_key_bytes_src; + u8 cipher_code; *check_ruid = 0; @@ -420,6 +422,18 @@ && !fn_cipher_key_bytes_set) mount_crypt_stat->global_default_fn_cipher_key_bytes = mount_crypt_stat->global_default_cipher_key_size; + + cipher_code = ecryptfs_code_for_cipher_string( + mount_crypt_stat->global_default_cipher_name, + mount_crypt_stat->global_default_cipher_key_size); + if (!cipher_code) { + ecryptfs_printk(KERN_ERR, + "eCryptfs doesn't support cipher: %s", + mount_crypt_stat->global_default_cipher_name); + rc = -EINVAL; + goto out; + } + mutex_lock(&key_tfm_list_mutex); if (!ecryptfs_tfm_exists(mount_crypt_stat->global_default_cipher_name, NULL)) { @@ -505,7 +519,6 @@ goto out; } - s->s_flags = flags; rc = bdi_setup_and_register(&sbi->bdi, "ecryptfs", BDI_CAP_MAP_COPY); if (rc) goto out1; @@ -541,9 +554,25 @@ } ecryptfs_set_superblock_lower(s, path.dentry->d_sb); + + /** + * Set the POSIX ACL flag based on whether they're enabled in the lower + * mount. Force a read-only eCryptfs mount if the lower mount is ro. + * Allow a ro eCryptfs mount even when the lower mount is rw. + */ + s->s_flags = flags & ~MS_POSIXACL; + s->s_flags |= path.dentry->d_sb->s_flags & (MS_RDONLY | MS_POSIXACL); + s->s_maxbytes = path.dentry->d_sb->s_maxbytes; s->s_blocksize = path.dentry->d_sb->s_blocksize; s->s_magic = ECRYPTFS_SUPER_MAGIC; + s->s_stack_depth = path.dentry->d_sb->s_stack_depth + 1; + + rc = -EINVAL; + if (s->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { + printk(KERN_ERR "eCryptfs: maximum fs stacking depth exceeded\n"); + goto out_free; + } inode = ecryptfs_get_inode(path.dentry->d_inode, s); rc = PTR_ERR(inode); --- linux-3.5.0.orig/fs/ecryptfs/file.c +++ linux-3.5.0/fs/ecryptfs/file.c @@ -138,29 +138,50 @@ return rc; } -static void ecryptfs_vma_close(struct vm_area_struct *vma) -{ - filemap_write_and_wait(vma->vm_file->f_mapping); -} - -static const struct vm_operations_struct ecryptfs_file_vm_ops = { - .close = ecryptfs_vma_close, - .fault = filemap_fault, -}; +struct kmem_cache *ecryptfs_file_info_cache; -static int ecryptfs_file_mmap(struct file *file, struct vm_area_struct *vma) +static int read_or_initialize_metadata(struct dentry *dentry) { + struct inode *inode = dentry->d_inode; + struct ecryptfs_mount_crypt_stat *mount_crypt_stat; + struct ecryptfs_crypt_stat *crypt_stat; int rc; - rc = generic_file_mmap(file, vma); + crypt_stat = &ecryptfs_inode_to_private(inode)->crypt_stat; + mount_crypt_stat = &ecryptfs_superblock_to_private( + inode->i_sb)->mount_crypt_stat; + mutex_lock(&crypt_stat->cs_mutex); + + if (crypt_stat->flags & ECRYPTFS_POLICY_APPLIED && + crypt_stat->flags & ECRYPTFS_KEY_VALID) { + rc = 0; + goto out; + } + + rc = ecryptfs_read_metadata(dentry); if (!rc) - vma->vm_ops = &ecryptfs_file_vm_ops; + goto out; + + if (mount_crypt_stat->flags & ECRYPTFS_PLAINTEXT_PASSTHROUGH_ENABLED) { + crypt_stat->flags &= ~(ECRYPTFS_I_SIZE_INITIALIZED + | ECRYPTFS_ENCRYPTED); + rc = 0; + goto out; + } + + if (!(mount_crypt_stat->flags & ECRYPTFS_XATTR_METADATA_ENABLED) && + !i_size_read(ecryptfs_inode_to_lower(inode))) { + rc = ecryptfs_initialize_file(dentry, inode); + if (!rc) + goto out; + } + rc = -EIO; +out: + mutex_unlock(&crypt_stat->cs_mutex); return rc; } -struct kmem_cache *ecryptfs_file_info_cache; - /** * ecryptfs_open * @inode: inode speciying file to open @@ -236,32 +257,9 @@ rc = 0; goto out; } - mutex_lock(&crypt_stat->cs_mutex); - if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED) - || !(crypt_stat->flags & ECRYPTFS_KEY_VALID)) { - rc = ecryptfs_read_metadata(ecryptfs_dentry); - if (rc) { - ecryptfs_printk(KERN_DEBUG, - "Valid headers not found\n"); - if (!(mount_crypt_stat->flags - & ECRYPTFS_PLAINTEXT_PASSTHROUGH_ENABLED)) { - rc = -EIO; - printk(KERN_WARNING "Either the lower file " - "is not in a valid eCryptfs format, " - "or the key could not be retrieved. " - "Plaintext passthrough mode is not " - "enabled; returning -EIO\n"); - mutex_unlock(&crypt_stat->cs_mutex); - goto out_put; - } - rc = 0; - crypt_stat->flags &= ~(ECRYPTFS_I_SIZE_INITIALIZED - | ECRYPTFS_ENCRYPTED); - mutex_unlock(&crypt_stat->cs_mutex); - goto out; - } - } - mutex_unlock(&crypt_stat->cs_mutex); + rc = read_or_initialize_metadata(ecryptfs_dentry); + if (rc) + goto out_put; ecryptfs_printk(KERN_DEBUG, "inode w/ addr = [0x%p], i_ino = " "[0x%.16lx] size: [0x%.16llx]\n", inode, inode->i_ino, (unsigned long long)i_size_read(inode)); @@ -277,8 +275,14 @@ static int ecryptfs_flush(struct file *file, fl_owner_t td) { - return file->f_mode & FMODE_WRITE - ? filemap_write_and_wait(file->f_mapping) : 0; + struct file *lower_file = ecryptfs_file_to_lower(file); + + if (lower_file->f_op && lower_file->f_op->flush) { + filemap_write_and_wait(file->f_mapping); + return lower_file->f_op->flush(lower_file, td); + } + + return 0; } static int ecryptfs_release(struct inode *inode, struct file *file) @@ -292,15 +296,7 @@ static int ecryptfs_fsync(struct file *file, loff_t start, loff_t end, int datasync) { - int rc = 0; - - rc = generic_file_fsync(file, start, end, datasync); - if (rc) - goto out; - rc = vfs_fsync_range(ecryptfs_file_to_lower(file), start, end, - datasync); -out: - return rc; + return vfs_fsync(ecryptfs_file_to_lower(file), datasync); } static int ecryptfs_fasync(int fd, struct file *file, int flag) @@ -369,7 +365,7 @@ #ifdef CONFIG_COMPAT .compat_ioctl = ecryptfs_compat_ioctl, #endif - .mmap = ecryptfs_file_mmap, + .mmap = generic_file_mmap, .open = ecryptfs_open, .flush = ecryptfs_flush, .release = ecryptfs_release, --- linux-3.5.0.orig/fs/ecryptfs/mmap.c +++ linux-3.5.0/fs/ecryptfs/mmap.c @@ -66,18 +66,6 @@ { int rc; - /* - * Refuse to write the page out if we are called from reclaim context - * since our writepage() path may potentially allocate memory when - * calling into the lower fs vfs_write() which may in turn invoke - * us again. - */ - if (current->flags & PF_MEMALLOC) { - redirty_page_for_writepage(wbc, page); - rc = 0; - goto out; - } - rc = ecryptfs_encrypt_page(page); if (rc) { ecryptfs_printk(KERN_WARNING, "Error encrypting " @@ -498,7 +486,6 @@ struct ecryptfs_crypt_stat *crypt_stat = &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; int rc; - int need_unlock_page = 1; ecryptfs_printk(KERN_DEBUG, "Calling fill_zeros_to_end_of_page" "(page w/ index = [0x%.16lx], to = [%d])\n", index, to); @@ -519,26 +506,26 @@ "zeros in page with index = [0x%.16lx]\n", index); goto out; } - set_page_dirty(page); - unlock_page(page); - need_unlock_page = 0; + rc = ecryptfs_encrypt_page(page); + if (rc) { + ecryptfs_printk(KERN_WARNING, "Error encrypting page (upper " + "index [0x%.16lx])\n", index); + goto out; + } if (pos + copied > i_size_read(ecryptfs_inode)) { i_size_write(ecryptfs_inode, pos + copied); ecryptfs_printk(KERN_DEBUG, "Expanded file size to " "[0x%.16llx]\n", (unsigned long long)i_size_read(ecryptfs_inode)); - balance_dirty_pages_ratelimited(mapping); - rc = ecryptfs_write_inode_size_to_metadata(ecryptfs_inode); - if (rc) { - printk(KERN_ERR "Error writing inode size to metadata; " - "rc = [%d]\n", rc); - goto out; - } } - rc = copied; + rc = ecryptfs_write_inode_size_to_metadata(ecryptfs_inode); + if (rc) + printk(KERN_ERR "Error writing inode size to metadata; " + "rc = [%d]\n", rc); + else + rc = copied; out: - if (need_unlock_page) - unlock_page(page); + unlock_page(page); page_cache_release(page); return rc; } --- linux-3.5.0.orig/fs/notify/mark.c +++ linux-3.5.0/fs/notify/mark.c @@ -109,23 +109,27 @@ void fsnotify_put_mark(struct fsnotify_mark *mark) { - if (atomic_dec_and_test(&mark->refcnt)) + if (atomic_dec_and_test(&mark->refcnt)) { + if (mark->group) + fsnotify_put_group(mark->group); mark->free_mark(mark); + } } +EXPORT_SYMBOL(fsnotify_put_mark); /* * Any time a mark is getting freed we end up here. * The caller had better be holding a reference to this mark so we don't actually * do the final put under the mark->lock */ -void fsnotify_destroy_mark(struct fsnotify_mark *mark) +void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group) { - struct fsnotify_group *group; struct inode *inode = NULL; - spin_lock(&mark->lock); + BUG_ON(!mutex_is_locked(&group->mark_mutex)); - group = mark->group; + spin_lock(&mark->lock); /* something else already called this function on this mark */ if (!(mark->flags & FSNOTIFY_MARK_FLAG_ALIVE)) { @@ -135,8 +139,6 @@ mark->flags &= ~FSNOTIFY_MARK_FLAG_ALIVE; - spin_lock(&group->mark_lock); - if (mark->flags & FSNOTIFY_MARK_FLAG_INODE) { inode = mark->i.inode; fsnotify_destroy_inode_mark(mark); @@ -147,13 +149,22 @@ list_del_init(&mark->g_list); - spin_unlock(&group->mark_lock); spin_unlock(&mark->lock); + if (inode && (mark->flags & FSNOTIFY_MARK_FLAG_OBJECT_PINNED)) + iput(inode); + /* release lock temporarily */ + mutex_unlock(&group->mark_mutex); + spin_lock(&destroy_lock); list_add(&mark->destroy_list, &destroy_list); spin_unlock(&destroy_lock); wake_up(&destroy_waitq); + /* + * We don't necessarily have a ref on mark from caller so the above destroy + * may have actually freed it, unless this group provides a 'freeing_mark' + * function which must be holding a reference. + */ /* * Some groups like to know that marks are being freed. This is a @@ -175,22 +186,19 @@ * is just a lazy update (and could be a perf win...) */ - if (inode && (mark->flags & FSNOTIFY_MARK_FLAG_OBJECT_PINNED)) - iput(inode); + atomic_dec(&group->num_marks); - /* - * We don't necessarily have a ref on mark from caller so the above iput - * may have already destroyed it. Don't touch from now on. - */ + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); +} - /* - * it's possible that this group tried to destroy itself, but this - * this mark was simultaneously being freed by inode. If that's the - * case, we finish freeing the group here. - */ - if (unlikely(atomic_dec_and_test(&group->num_marks))) - fsnotify_final_destroy_group(group); +void fsnotify_destroy_mark(struct fsnotify_mark *mark, + struct fsnotify_group *group) +{ + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); + fsnotify_destroy_mark_locked(mark, group); + mutex_unlock(&group->mark_mutex); } +EXPORT_SYMBOL(fsnotify_destroy_mark); void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask) { @@ -214,26 +222,26 @@ * These marks may be used for the fsnotify backend to determine which * event types should be delivered to which group. */ -int fsnotify_add_mark(struct fsnotify_mark *mark, - struct fsnotify_group *group, struct inode *inode, - struct vfsmount *mnt, int allow_dups) +int fsnotify_add_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group, struct inode *inode, + struct vfsmount *mnt, int allow_dups) { int ret = 0; BUG_ON(inode && mnt); BUG_ON(!inode && !mnt); + BUG_ON(!mutex_is_locked(&group->mark_mutex)); /* * LOCKING ORDER!!!! + * group->mark_mutex * mark->lock - * group->mark_lock * inode->i_lock */ spin_lock(&mark->lock); - spin_lock(&group->mark_lock); - mark->flags |= FSNOTIFY_MARK_FLAG_ALIVE; + fsnotify_get_group(group); mark->group = group; list_add(&mark->g_list, &group->marks_list); atomic_inc(&group->num_marks); @@ -251,11 +259,8 @@ BUG(); } - spin_unlock(&group->mark_lock); - /* this will pin the object if appropriate */ fsnotify_set_mark_mask_locked(mark, mark->mask); - spin_unlock(&mark->lock); if (inode) @@ -265,10 +270,10 @@ err: mark->flags &= ~FSNOTIFY_MARK_FLAG_ALIVE; list_del_init(&mark->g_list); + fsnotify_put_group(group); mark->group = NULL; atomic_dec(&group->num_marks); - spin_unlock(&group->mark_lock); spin_unlock(&mark->lock); spin_lock(&destroy_lock); @@ -278,6 +283,17 @@ return ret; } +EXPORT_SYMBOL(fsnotify_add_mark); + +int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, + struct inode *inode, struct vfsmount *mnt, int allow_dups) +{ + int ret; + mutex_lock(&group->mark_mutex); + ret = fsnotify_add_mark_locked(mark, group, inode, mnt, allow_dups); + mutex_unlock(&group->mark_mutex); + return ret; +} /* * clear any marks in a group in which mark->flags & flags is true @@ -286,22 +302,16 @@ unsigned int flags) { struct fsnotify_mark *lmark, *mark; - LIST_HEAD(free_list); - spin_lock(&group->mark_lock); + mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING); list_for_each_entry_safe(mark, lmark, &group->marks_list, g_list) { if (mark->flags & flags) { - list_add(&mark->free_g_list, &free_list); - list_del_init(&mark->g_list); fsnotify_get_mark(mark); + fsnotify_destroy_mark_locked(mark, group); + fsnotify_put_mark(mark); } } - spin_unlock(&group->mark_lock); - - list_for_each_entry_safe(mark, lmark, &free_list, free_g_list) { - fsnotify_destroy_mark(mark); - fsnotify_put_mark(mark); - } + mutex_unlock(&group->mark_mutex); } /* @@ -317,6 +327,8 @@ assert_spin_locked(&old->lock); new->i.inode = old->i.inode; new->m.mnt = old->m.mnt; + if (old->group) + fsnotify_get_group(old->group); new->group = old->group; new->mask = old->mask; new->free_mark = old->free_mark; @@ -333,6 +345,7 @@ atomic_set(&mark->refcnt, 1); mark->free_mark = free_mark; } +EXPORT_SYMBOL(fsnotify_init_mark); static int fsnotify_mark_destroy(void *ignored) { --- linux-3.5.0.orig/fs/notify/vfsmount_mark.c +++ linux-3.5.0/fs/notify/vfsmount_mark.c @@ -46,8 +46,16 @@ spin_unlock(&mnt->mnt_root->d_lock); list_for_each_entry_safe(mark, lmark, &free_list, m.free_m_list) { - fsnotify_destroy_mark(mark); + struct fsnotify_group *group; + + spin_lock(&mark->lock); + fsnotify_get_group(mark->group); + group = mark->group; + spin_unlock(&mark->lock); + + fsnotify_destroy_mark(mark, group); fsnotify_put_mark(mark); + fsnotify_put_group(group); } } @@ -88,8 +96,8 @@ { struct vfsmount *mnt = mark->m.mnt; + BUG_ON(!mutex_is_locked(&mark->group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&mark->group->mark_lock); spin_lock(&mnt->mnt_root->d_lock); @@ -151,8 +159,8 @@ mark->flags |= FSNOTIFY_MARK_FLAG_VFSMOUNT; + BUG_ON(!mutex_is_locked(&group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&group->mark_lock); spin_lock(&mnt->mnt_root->d_lock); --- linux-3.5.0.orig/fs/notify/group.c +++ linux-3.5.0/fs/notify/group.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include "fsnotify.h" @@ -33,9 +34,6 @@ */ void fsnotify_final_destroy_group(struct fsnotify_group *group) { - /* clear the notification queue of all events */ - fsnotify_flush_notify(group); - if (group->ops->free_group_priv) group->ops->free_group_priv(group); @@ -43,23 +41,30 @@ } /* - * Trying to get rid of a group. We need to first get rid of any outstanding - * allocations and then free the group. Remember that fsnotify_clear_marks_by_group - * could miss marks that are being freed by inode and those marks could still - * hold a reference to this group (via group->num_marks) If we get into that - * situtation, the fsnotify_final_destroy_group will get called when that final - * mark is freed. + * Trying to get rid of a group. Remove all marks, flush all events and release + * the group reference. + * Note that another thread calling fsnotify_clear_marks_by_group() may still + * hold a ref to the group. */ -static void fsnotify_destroy_group(struct fsnotify_group *group) +void fsnotify_destroy_group(struct fsnotify_group *group) { /* clear all inode marks for this group */ fsnotify_clear_marks_by_group(group); synchronize_srcu(&fsnotify_mark_srcu); - /* past the point of no return, matches the initial value of 1 */ - if (atomic_dec_and_test(&group->num_marks)) - fsnotify_final_destroy_group(group); + /* clear the notification queue of all events */ + fsnotify_flush_notify(group); + + fsnotify_put_group(group); +} + +/* + * Get reference to a group. + */ +void fsnotify_get_group(struct fsnotify_group *group) +{ + atomic_inc(&group->refcnt); } /* @@ -68,8 +73,9 @@ void fsnotify_put_group(struct fsnotify_group *group) { if (atomic_dec_and_test(&group->refcnt)) - fsnotify_destroy_group(group); + fsnotify_final_destroy_group(group); } +EXPORT_SYMBOL(fsnotify_put_group); /* * Create a new fsnotify_group and hold a reference for the group returned. @@ -84,21 +90,18 @@ /* set to 0 when there a no external references to this group */ atomic_set(&group->refcnt, 1); - /* - * hits 0 when there are no external references AND no marks for - * this group - */ - atomic_set(&group->num_marks, 1); + atomic_set(&group->num_marks, 0); mutex_init(&group->notification_mutex); INIT_LIST_HEAD(&group->notification_list); init_waitqueue_head(&group->notification_waitq); group->max_events = UINT_MAX; - spin_lock_init(&group->mark_lock); + mutex_init(&group->mark_mutex); INIT_LIST_HEAD(&group->marks_list); group->ops = ops; return group; } +EXPORT_SYMBOL(fsnotify_alloc_group); --- linux-3.5.0.orig/fs/notify/inode_mark.c +++ linux-3.5.0/fs/notify/inode_mark.c @@ -63,8 +63,8 @@ { struct inode *inode = mark->i.inode; + BUG_ON(!mutex_is_locked(&mark->group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&mark->group->mark_lock); spin_lock(&inode->i_lock); @@ -99,8 +99,16 @@ spin_unlock(&inode->i_lock); list_for_each_entry_safe(mark, lmark, &free_list, i.free_i_list) { - fsnotify_destroy_mark(mark); + struct fsnotify_group *group; + + spin_lock(&mark->lock); + fsnotify_get_group(mark->group); + group = mark->group; + spin_unlock(&mark->lock); + + fsnotify_destroy_mark(mark, group); fsnotify_put_mark(mark); + fsnotify_put_group(group); } } @@ -191,8 +199,8 @@ mark->flags |= FSNOTIFY_MARK_FLAG_INODE; + BUG_ON(!mutex_is_locked(&group->mark_mutex)); assert_spin_locked(&mark->lock); - assert_spin_locked(&group->mark_lock); spin_lock(&inode->i_lock); --- linux-3.5.0.orig/fs/notify/dnotify/dnotify.c +++ linux-3.5.0/fs/notify/dnotify/dnotify.c @@ -201,7 +201,7 @@ /* nothing else could have found us thanks to the dnotify_mark_mutex */ if (dn_mark->dn == NULL) - fsnotify_destroy_mark(fsn_mark); + fsnotify_destroy_mark(fsn_mark, dnotify_group); mutex_unlock(&dnotify_mark_mutex); @@ -385,7 +385,7 @@ spin_unlock(&fsn_mark->lock); if (destroy) - fsnotify_destroy_mark(fsn_mark); + fsnotify_destroy_mark(fsn_mark, dnotify_group); mutex_unlock(&dnotify_mark_mutex); fsnotify_put_mark(fsn_mark); --- linux-3.5.0.orig/fs/notify/inotify/inotify_user.c +++ linux-3.5.0/fs/notify/inotify/inotify_user.c @@ -293,10 +293,8 @@ pr_debug("%s: group=%p\n", __func__, group); - fsnotify_clear_marks_by_group(group); - /* free this group, matching get was inotify_init->fsnotify_obtain_group */ - fsnotify_put_group(group); + fsnotify_destroy_group(group); return 0; } @@ -533,6 +531,7 @@ fsn_event_priv = &event_priv->fsnotify_event_priv_data; + fsnotify_get_group(group); fsn_event_priv->group = group; event_priv->wd = i_mark->wd; @@ -579,8 +578,6 @@ /* don't allow invalid bits: we don't want flags set */ mask = inotify_arg_to_mask(arg); - if (unlikely(!(mask & IN_ALL_EVENTS))) - return -EINVAL; fsn_mark = fsnotify_find_inode_mark(group, inode); if (!fsn_mark) @@ -632,8 +629,6 @@ /* don't allow invalid bits: we don't want flags set */ mask = inotify_arg_to_mask(arg); - if (unlikely(!(mask & IN_ALL_EVENTS))) - return -EINVAL; tmp_i_mark = kmem_cache_alloc(inotify_inode_mark_cachep, GFP_KERNEL); if (unlikely(!tmp_i_mark)) @@ -712,7 +707,7 @@ if (atomic_inc_return(&group->inotify_data.user->inotify_devs) > inotify_max_user_instances) { - fsnotify_put_group(group); + fsnotify_destroy_group(group); return ERR_PTR(-EMFILE); } @@ -741,7 +736,7 @@ ret = anon_inode_getfd("inotify", &inotify_fops, group, O_RDONLY | flags); if (ret < 0) - fsnotify_put_group(group); + fsnotify_destroy_group(group); return ret; } @@ -817,7 +812,7 @@ ret = 0; - fsnotify_destroy_mark(&i_mark->fsn_mark); + fsnotify_destroy_mark(&i_mark->fsn_mark, group); /* match ref taken by inotify_idr_find */ fsnotify_put_mark(&i_mark->fsn_mark); --- linux-3.5.0.orig/fs/notify/inotify/inotify_fsnotify.c +++ linux-3.5.0/fs/notify/inotify/inotify_fsnotify.c @@ -118,6 +118,7 @@ fsn_event_priv = &event_priv->fsnotify_event_priv_data; + fsnotify_get_group(group); fsn_event_priv->group = group; event_priv->wd = wd; @@ -131,7 +132,7 @@ } if (inode_mark->mask & IN_ONESHOT) - fsnotify_destroy_mark(inode_mark); + fsnotify_destroy_mark(inode_mark, group); return ret; } @@ -210,6 +211,7 @@ event_priv = container_of(fsn_event_priv, struct inotify_event_private_data, fsnotify_event_priv_data); + fsnotify_put_group(fsn_event_priv->group); kmem_cache_free(event_priv_cachep, event_priv); } --- linux-3.5.0.orig/fs/notify/fanotify/fanotify_user.c +++ linux-3.5.0/fs/notify/fanotify/fanotify_user.c @@ -419,7 +419,7 @@ wake_up(&group->fanotify_data.access_waitq); #endif /* matches the fanotify_init->fsnotify_alloc_group */ - fsnotify_put_group(group); + fsnotify_destroy_group(group); return 0; } @@ -515,7 +515,8 @@ static __u32 fanotify_mark_remove_from_mask(struct fsnotify_mark *fsn_mark, __u32 mask, - unsigned int flags) + unsigned int flags, + int *destroy) { __u32 oldmask; @@ -529,8 +530,7 @@ } spin_unlock(&fsn_mark->lock); - if (!(oldmask & ~mask)) - fsnotify_destroy_mark(fsn_mark); + *destroy = !(oldmask & ~mask); return mask & oldmask; } @@ -541,12 +541,17 @@ { struct fsnotify_mark *fsn_mark = NULL; __u32 removed; + int destroy_mark; fsn_mark = fsnotify_find_vfsmount_mark(group, mnt); if (!fsn_mark) return -ENOENT; - removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags); + removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags, + &destroy_mark); + if (destroy_mark) + fsnotify_destroy_mark(fsn_mark, group); + fsnotify_put_mark(fsn_mark); if (removed & real_mount(mnt)->mnt_fsnotify_mask) fsnotify_recalc_vfsmount_mask(mnt); @@ -560,12 +565,16 @@ { struct fsnotify_mark *fsn_mark = NULL; __u32 removed; + int destroy_mark; fsn_mark = fsnotify_find_inode_mark(group, inode); if (!fsn_mark) return -ENOENT; - removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags); + removed = fanotify_mark_remove_from_mask(fsn_mark, mask, flags, + &destroy_mark); + if (destroy_mark) + fsnotify_destroy_mark(fsn_mark, group); /* matches the fsnotify_find_inode_mark() */ fsnotify_put_mark(fsn_mark); if (removed & inode->i_fsnotify_mask) @@ -732,13 +741,13 @@ break; default: fd = -EINVAL; - goto out_put_group; + goto out_destroy_group; } if (flags & FAN_UNLIMITED_QUEUE) { fd = -EPERM; if (!capable(CAP_SYS_ADMIN)) - goto out_put_group; + goto out_destroy_group; group->max_events = UINT_MAX; } else { group->max_events = FANOTIFY_DEFAULT_MAX_EVENTS; @@ -747,7 +756,7 @@ if (flags & FAN_UNLIMITED_MARKS) { fd = -EPERM; if (!capable(CAP_SYS_ADMIN)) - goto out_put_group; + goto out_destroy_group; group->fanotify_data.max_marks = UINT_MAX; } else { group->fanotify_data.max_marks = FANOTIFY_DEFAULT_MAX_MARKS; @@ -755,12 +764,12 @@ fd = anon_inode_getfd("[fanotify]", &fanotify_fops, group, f_flags); if (fd < 0) - goto out_put_group; + goto out_destroy_group; return fd; -out_put_group: - fsnotify_put_group(group); +out_destroy_group: + fsnotify_destroy_group(group); return fd; } --- linux-3.5.0.orig/fs/notify/fanotify/fanotify.c +++ linux-3.5.0/fs/notify/fanotify/fanotify.c @@ -21,6 +21,7 @@ if ((old->path.mnt == new->path.mnt) && (old->path.dentry == new->path.dentry)) return true; + break; case (FSNOTIFY_EVENT_NONE): return true; default: --- linux-3.5.0.orig/fs/jbd2/transaction.c +++ linux-3.5.0/fs/jbd2/transaction.c @@ -209,7 +209,8 @@ if (!new_transaction) goto alloc_transaction; write_lock(&journal->j_state_lock); - if (!journal->j_running_transaction) { + if (!journal->j_running_transaction && + !journal->j_barrier_count) { jbd2_get_transaction(journal, new_transaction); new_transaction = NULL; } --- linux-3.5.0.orig/fs/jbd2/journal.c +++ linux-3.5.0/fs/jbd2/journal.c @@ -1354,6 +1354,11 @@ BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); read_lock(&journal->j_state_lock); + /* Is it already empty? */ + if (sb->s_start == 0) { + read_unlock(&journal->j_state_lock); + return; + } jbd_debug(1, "JBD2: Marking journal as empty (seq %d)\n", journal->j_tail_sequence); @@ -1377,7 +1382,7 @@ * Update a journal's errno. Write updated superblock to disk waiting for IO * to complete. */ -static void jbd2_journal_update_sb_errno(journal_t *journal) +void jbd2_journal_update_sb_errno(journal_t *journal) { journal_superblock_t *sb = journal->j_superblock; @@ -1390,6 +1395,7 @@ jbd2_write_superblock(journal, WRITE_SYNC); } +EXPORT_SYMBOL(jbd2_journal_update_sb_errno); /* * Read the superblock for a given journal, performing initial --- linux-3.5.0.orig/fs/hfs/sysdep.c +++ linux-3.5.0/fs/hfs/sysdep.c @@ -18,7 +18,7 @@ struct inode *inode; int diff; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; --- linux-3.5.0.orig/fs/gfs2/super.c +++ linux-3.5.0/fs/gfs2/super.c @@ -800,7 +800,8 @@ return; } need_unlock = 1; - } + } else if (WARN_ON_ONCE(ip->i_gl->gl_state != LM_ST_EXCLUSIVE)) + return; if (current->journal_info == NULL) { ret = gfs2_trans_begin(sdp, RES_DINODE, 0); --- linux-3.5.0.orig/fs/gfs2/file.c +++ linux-3.5.0/fs/gfs2/file.c @@ -492,15 +492,13 @@ struct gfs2_holder i_gh; int error; - gfs2_holder_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, &i_gh); - error = gfs2_glock_nq(&i_gh); - if (error == 0) { - file_accessed(file); - gfs2_glock_dq(&i_gh); - } - gfs2_holder_uninit(&i_gh); + error = gfs2_glock_nq_init(ip->i_gl, LM_ST_SHARED, LM_FLAG_ANY, + &i_gh); if (error) return error; + /* grab lock to update inode */ + gfs2_glock_dq_uninit(&i_gh); + file_accessed(file); } vma->vm_ops = &gfs2_vm_ops; vma->vm_flags |= VM_CAN_NONLINEAR; --- linux-3.5.0.orig/fs/gfs2/trans.c +++ linux-3.5.0/fs/gfs2/trans.c @@ -151,14 +151,22 @@ struct gfs2_sbd *sdp = gl->gl_sbd; struct gfs2_bufdata *bd; + lock_buffer(bh); + gfs2_log_lock(sdp); bd = bh->b_private; if (bd) gfs2_assert(sdp, bd->bd_gl == gl); else { + gfs2_log_unlock(sdp); + unlock_buffer(bh); gfs2_attach_bufdata(gl, bh, meta); bd = bh->b_private; + lock_buffer(bh); + gfs2_log_lock(sdp); } lops_add(sdp, bd); + gfs2_log_unlock(sdp); + unlock_buffer(bh); } void gfs2_trans_add_revoke(struct gfs2_sbd *sdp, struct gfs2_bufdata *bd) --- linux-3.5.0.orig/fs/gfs2/export.c +++ linux-3.5.0/fs/gfs2/export.c @@ -161,6 +161,8 @@ case GFS2_SMALL_FH_SIZE: case GFS2_LARGE_FH_SIZE: case GFS2_OLD_FH_SIZE: + if (fh_len < GFS2_SMALL_FH_SIZE) + return NULL; this.no_formal_ino = ((u64)be32_to_cpu(fh[0])) << 32; this.no_formal_ino |= be32_to_cpu(fh[1]); this.no_addr = ((u64)be32_to_cpu(fh[2])) << 32; @@ -180,6 +182,8 @@ switch (fh_type) { case GFS2_LARGE_FH_SIZE: case GFS2_OLD_FH_SIZE: + if (fh_len < GFS2_LARGE_FH_SIZE) + return NULL; parent.no_formal_ino = ((u64)be32_to_cpu(fh[4])) << 32; parent.no_formal_ino |= be32_to_cpu(fh[5]); parent.no_addr = ((u64)be32_to_cpu(fh[6])) << 32; --- linux-3.5.0.orig/fs/gfs2/lops.c +++ linux-3.5.0/fs/gfs2/lops.c @@ -393,12 +393,10 @@ struct gfs2_meta_header *mh; struct gfs2_trans *tr; - lock_buffer(bd->bd_bh); - gfs2_log_lock(sdp); tr = current->journal_info; tr->tr_touched = 1; if (!list_empty(&bd->bd_list)) - goto out; + return; set_bit(GLF_LFLUSH, &bd->bd_gl->gl_flags); set_bit(GLF_DIRTY, &bd->bd_gl->gl_flags); gfs2_meta_check(sdp, bd->bd_bh); @@ -409,9 +407,6 @@ sdp->sd_log_num_buf++; list_add(&bd->bd_list, &sdp->sd_log_le_buf); tr->tr_num_buf_new++; -out: - gfs2_log_unlock(sdp); - unlock_buffer(bd->bd_bh); } static void gfs2_check_magic(struct buffer_head *bh) @@ -772,12 +767,10 @@ struct address_space *mapping = bd->bd_bh->b_page->mapping; struct gfs2_inode *ip = GFS2_I(mapping->host); - lock_buffer(bd->bd_bh); - gfs2_log_lock(sdp); if (tr) tr->tr_touched = 1; if (!list_empty(&bd->bd_list)) - goto out; + return; set_bit(GLF_LFLUSH, &bd->bd_gl->gl_flags); set_bit(GLF_DIRTY, &bd->bd_gl->gl_flags); if (gfs2_is_jdata(ip)) { @@ -788,9 +781,6 @@ } else { list_add_tail(&bd->bd_list, &sdp->sd_log_le_ordered); } -out: - gfs2_log_unlock(sdp); - unlock_buffer(bd->bd_bh); } /** --- linux-3.5.0.orig/fs/btrfs/async-thread.c +++ linux-3.5.0/fs/btrfs/async-thread.c @@ -206,10 +206,17 @@ work->ordered_func(work); - /* now take the lock again and call the freeing code */ + /* now take the lock again and drop our item from the list */ spin_lock(&workers->order_lock); list_del(&work->order_list); + spin_unlock(&workers->order_lock); + + /* + * we don't want to call the ordered free functions + * with the lock held though + */ work->ordered_free(work); + spin_lock(&workers->order_lock); } spin_unlock(&workers->order_lock); --- linux-3.5.0.orig/fs/btrfs/extent_io.c +++ linux-3.5.0/fs/btrfs/extent_io.c @@ -2329,23 +2329,10 @@ if (uptodate && tree->ops && tree->ops->readpage_end_io_hook) { ret = tree->ops->readpage_end_io_hook(page, start, end, state, mirror); - if (ret) { - /* no IO indicated but software detected errors - * in the block, either checksum errors or - * issues with the contents */ - struct btrfs_root *root = - BTRFS_I(page->mapping->host)->root; - struct btrfs_device *device; - + if (ret) uptodate = 0; - device = btrfs_find_device_for_logical( - root, start, mirror); - if (device) - btrfs_dev_stat_inc_and_print(device, - BTRFS_DEV_STAT_CORRUPTION_ERRS); - } else { + else clean_io_failure(start, page); - } } if (!uptodate && tree->ops && tree->ops->readpage_io_failed_hook) { --- linux-3.5.0.orig/fs/btrfs/volumes.h +++ linux-3.5.0/fs/btrfs/volumes.h @@ -288,8 +288,6 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset); int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, u64 *start, u64 *max_avail); -struct btrfs_device *btrfs_find_device_for_logical(struct btrfs_root *root, - u64 logical, int mirror_num); void btrfs_dev_stat_print_on_error(struct btrfs_device *device); void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); int btrfs_get_dev_stats(struct btrfs_root *root, --- linux-3.5.0.orig/fs/btrfs/volumes.c +++ linux-3.5.0/fs/btrfs/volumes.c @@ -4602,28 +4602,6 @@ return ret; } -struct btrfs_device *btrfs_find_device_for_logical(struct btrfs_root *root, - u64 logical, int mirror_num) -{ - struct btrfs_mapping_tree *map_tree = &root->fs_info->mapping_tree; - int ret; - u64 map_length = 0; - struct btrfs_bio *bbio = NULL; - struct btrfs_device *device; - - BUG_ON(mirror_num == 0); - ret = btrfs_map_block(map_tree, WRITE, logical, &map_length, &bbio, - mirror_num); - if (ret) { - BUG_ON(bbio != NULL); - return NULL; - } - BUG_ON(mirror_num != bbio->mirror_num); - device = bbio->stripes[mirror_num - 1].dev; - kfree(bbio); - return device; -} - int btrfs_read_chunk_tree(struct btrfs_root *root) { struct btrfs_path *path; --- linux-3.5.0.orig/fs/ncpfs/dir.c +++ linux-3.5.0/fs/ncpfs/dir.c @@ -302,7 +302,7 @@ if (dentry == dentry->d_sb->s_root) return 1; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; parent = dget_parent(dentry); --- linux-3.5.0.orig/fs/fuse/dev.c +++ linux-3.5.0/fs/fuse/dev.c @@ -1576,6 +1576,7 @@ req->pages[req->num_pages] = page; req->num_pages++; + offset = 0; num -= this_num; total_len += this_num; index++; --- linux-3.5.0.orig/fs/fuse/file.c +++ linux-3.5.0/fs/fuse/file.c @@ -1700,7 +1700,7 @@ size_t n; u32 max = FUSE_MAX_PAGES_PER_REQ << PAGE_SHIFT; - for (n = 0; n < count; n++) { + for (n = 0; n < count; n++, iov++) { if (iov->iov_len > (size_t) max) return -ENOMEM; max -= iov->iov_len; --- linux-3.5.0.orig/fs/exofs/ore.c +++ linux-3.5.0/fs/exofs/ore.c @@ -837,11 +837,11 @@ bio->bi_rw |= REQ_WRITE; } - osd_req_write(or, _ios_obj(ios, dev), per_dev->offset, - bio, per_dev->length); + osd_req_write(or, _ios_obj(ios, cur_comp), + per_dev->offset, bio, per_dev->length); ORE_DBGMSG("write(0x%llx) offset=0x%llx " "length=0x%llx dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), _LLU(per_dev->offset), _LLU(per_dev->length), dev); } else if (ios->kern_buff) { @@ -853,20 +853,20 @@ (ios->si.unit_off + ios->length > ios->layout->stripe_unit)); - ret = osd_req_write_kern(or, _ios_obj(ios, per_dev->dev), + ret = osd_req_write_kern(or, _ios_obj(ios, cur_comp), per_dev->offset, ios->kern_buff, ios->length); if (unlikely(ret)) goto out; ORE_DBGMSG2("write_kern(0x%llx) offset=0x%llx " "length=0x%llx dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), _LLU(per_dev->offset), _LLU(ios->length), per_dev->dev); } else { - osd_req_set_attributes(or, _ios_obj(ios, dev)); + osd_req_set_attributes(or, _ios_obj(ios, cur_comp)); ORE_DBGMSG2("obj(0x%llx) set_attributes=%d dev=%d\n", - _LLU(_ios_obj(ios, dev)->id), + _LLU(_ios_obj(ios, cur_comp)->id), ios->out_attr_len, dev); } --- linux-3.5.0.orig/fs/sysfs/dir.c +++ linux-3.5.0/fs/sysfs/dir.c @@ -308,7 +308,7 @@ struct sysfs_dirent *sd; int is_dir; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; sd = dentry->d_fsdata; @@ -478,20 +478,18 @@ /** * sysfs_pathname - return full path to sysfs dirent * @sd: sysfs_dirent whose path we want - * @path: caller allocated buffer + * @path: caller allocated buffer of size PATH_MAX * * Gives the name "/" to the sysfs_root entry; any path returned * is relative to wherever sysfs is mounted. - * - * XXX: does no error checking on @path size */ static char *sysfs_pathname(struct sysfs_dirent *sd, char *path) { if (sd->s_parent) { sysfs_pathname(sd->s_parent, path); - strcat(path, "/"); + strlcat(path, "/", PATH_MAX); } - strcat(path, sd->s_name); + strlcat(path, sd->s_name, PATH_MAX); return path; } @@ -524,9 +522,11 @@ char *path = kzalloc(PATH_MAX, GFP_KERNEL); WARN(1, KERN_WARNING "sysfs: cannot create duplicate filename '%s'\n", - (path == NULL) ? sd->s_name : - strcat(strcat(sysfs_pathname(acxt->parent_sd, path), "/"), - sd->s_name)); + (path == NULL) ? sd->s_name + : (sysfs_pathname(acxt->parent_sd, path), + strlcat(path, "/", PATH_MAX), + strlcat(path, sd->s_name, PATH_MAX), + path)); kfree(path); } --- linux-3.5.0.orig/fs/ceph/mds_client.c +++ linux-3.5.0/fs/ceph/mds_client.c @@ -394,11 +394,7 @@ s->s_seq = 0; mutex_init(&s->s_mutex); - ceph_con_init(mdsc->fsc->client->msgr, &s->s_con); - s->s_con.private = s; - s->s_con.ops = &mds_con_ops; - s->s_con.peer_name.type = CEPH_ENTITY_TYPE_MDS; - s->s_con.peer_name.num = cpu_to_le64(mds); + ceph_con_init(&s->s_con, s, &mds_con_ops, &mdsc->fsc->client->msgr); spin_lock_init(&s->s_gen_ttl_lock); s->s_cap_gen = 0; @@ -440,7 +436,8 @@ mdsc->sessions[mds] = s; atomic_inc(&s->s_ref); /* one ref to sessions[], one to caller */ - ceph_con_open(&s->s_con, ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); + ceph_con_open(&s->s_con, CEPH_ENTITY_TYPE_MDS, mds, + ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); return s; @@ -2532,6 +2529,7 @@ session->s_seq = 0; ceph_con_open(&session->s_con, + CEPH_ENTITY_TYPE_MDS, mds, ceph_mdsmap_get_addr(mdsc->mdsmap, mds)); /* replay unsafe requests */ @@ -2636,7 +2634,8 @@ ceph_mdsmap_is_laggy(newmap, i) ? " (laggy)" : "", session_state_name(s->s_state)); - if (memcmp(ceph_mdsmap_get_addr(oldmap, i), + if (i >= newmap->m_max_mds || + memcmp(ceph_mdsmap_get_addr(oldmap, i), ceph_mdsmap_get_addr(newmap, i), sizeof(struct ceph_entity_addr))) { if (s->s_state == CEPH_MDS_SESSION_OPENING) { --- linux-3.5.0.orig/fs/ceph/export.c +++ linux-3.5.0/fs/ceph/export.c @@ -90,6 +90,8 @@ *max_len = handle_length; type = 255; } + if (dentry) + dput(dentry); return type; } @@ -99,7 +101,7 @@ * FIXME: we should try harder by querying the mds for the ino. */ static struct dentry *__fh_to_dentry(struct super_block *sb, - struct ceph_nfs_fh *fh) + struct ceph_nfs_fh *fh, int fh_len) { struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc; struct inode *inode; @@ -107,6 +109,9 @@ struct ceph_vino vino; int err; + if (fh_len < sizeof(*fh) / 4) + return ERR_PTR(-ESTALE); + dout("__fh_to_dentry %llx\n", fh->ino); vino.ino = fh->ino; vino.snap = CEPH_NOSNAP; @@ -150,7 +155,7 @@ * convert connectable fh to dentry */ static struct dentry *__cfh_to_dentry(struct super_block *sb, - struct ceph_nfs_confh *cfh) + struct ceph_nfs_confh *cfh, int fh_len) { struct ceph_mds_client *mdsc = ceph_sb_to_client(sb)->mdsc; struct inode *inode; @@ -158,6 +163,9 @@ struct ceph_vino vino; int err; + if (fh_len < sizeof(*cfh) / 4) + return ERR_PTR(-ESTALE); + dout("__cfh_to_dentry %llx (%llx/%x)\n", cfh->ino, cfh->parent_ino, cfh->parent_name_hash); @@ -207,9 +215,11 @@ int fh_len, int fh_type) { if (fh_type == 1) - return __fh_to_dentry(sb, (struct ceph_nfs_fh *)fid->raw); + return __fh_to_dentry(sb, (struct ceph_nfs_fh *)fid->raw, + fh_len); else - return __cfh_to_dentry(sb, (struct ceph_nfs_confh *)fid->raw); + return __cfh_to_dentry(sb, (struct ceph_nfs_confh *)fid->raw, + fh_len); } /* @@ -230,6 +240,8 @@ if (fh_type == 1) return ERR_PTR(-ESTALE); + if (fh_len < sizeof(*cfh) / 4) + return ERR_PTR(-ESTALE); pr_debug("fh_to_parent %llx/%d\n", cfh->parent_ino, cfh->parent_name_hash); --- linux-3.5.0.orig/fs/ceph/debugfs.c +++ linux-3.5.0/fs/ceph/debugfs.c @@ -201,6 +201,7 @@ int err = -ENOMEM; dout("ceph_fs_debugfs_init\n"); + BUG_ON(!fsc->client->debugfs_dir); fsc->debugfs_congestion_kb = debugfs_create_file("writeback_congestion_kb", 0600, --- linux-3.5.0.orig/fs/ceph/addr.c +++ linux-3.5.0/fs/ceph/addr.c @@ -205,7 +205,7 @@ dout("readpage inode %p file %p page %p index %lu\n", inode, filp, page, page->index); err = ceph_osdc_readpages(osdc, ceph_vino(inode), &ci->i_layout, - page->index << PAGE_CACHE_SHIFT, &len, + (u64) page_offset(page), &len, ci->i_truncate_seq, ci->i_truncate_size, &page, 1, 0); if (err == -ENOENT) @@ -286,7 +286,7 @@ int nr_pages = 0; int ret; - off = page->index << PAGE_CACHE_SHIFT; + off = (u64) page_offset(page); /* count pages */ next_index = page->index; @@ -426,7 +426,7 @@ struct ceph_inode_info *ci; struct ceph_fs_client *fsc; struct ceph_osd_client *osdc; - loff_t page_off = page->index << PAGE_CACHE_SHIFT; + loff_t page_off = page_offset(page); int len = PAGE_CACHE_SIZE; loff_t i_size; int err = 0; @@ -817,8 +817,7 @@ /* ok */ if (locked_pages == 0) { /* prepare async write request */ - offset = (unsigned long long)page->index - << PAGE_CACHE_SHIFT; + offset = (u64) page_offset(page); len = wsize; req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, @@ -1180,7 +1179,7 @@ struct inode *inode = vma->vm_file->f_dentry->d_inode; struct page *page = vmf->page; struct ceph_mds_client *mdsc = ceph_inode_to_client(inode)->mdsc; - loff_t off = page->index << PAGE_CACHE_SHIFT; + loff_t off = page_offset(page); loff_t size, len; int ret; --- linux-3.5.0.orig/fs/coda/dir.c +++ linux-3.5.0/fs/coda/dir.c @@ -541,7 +541,7 @@ struct inode *inode; struct coda_inode_info *cii; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = de->d_inode; --- linux-3.5.0.orig/fs/jbd/transaction.c +++ linux-3.5.0/fs/jbd/transaction.c @@ -1843,15 +1843,16 @@ * We're outside-transaction here. Either or both of j_running_transaction * and j_committing_transaction may be NULL. */ -static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh) +static int journal_unmap_buffer(journal_t *journal, struct buffer_head *bh, + int partial_page) { transaction_t *transaction; struct journal_head *jh; int may_free = 1; - int ret; BUFFER_TRACE(bh, "entry"); +retry: /* * It is safe to proceed here without the j_list_lock because the * buffers cannot be stolen by try_to_free_buffers as long as we are @@ -1879,10 +1880,18 @@ * clear the buffer dirty bit at latest at the moment when the * transaction marking the buffer as freed in the filesystem * structures is committed because from that moment on the - * buffer can be reallocated and used by a different page. + * block can be reallocated and used by a different page. * Since the block hasn't been freed yet but the inode has * already been added to orphan list, it is safe for us to add * the buffer to BJ_Forget list of the newest transaction. + * + * Also we have to clear buffer_mapped flag of a truncated buffer + * because the buffer_head may be attached to the page straddling + * i_size (can happen only when blocksize < pagesize) and thus the + * buffer_head can be reused when the file is extended again. So we end + * up keeping around invalidated buffers attached to transactions' + * BJ_Forget list just to stop checkpointing code from cleaning up + * the transaction this buffer was modified in. */ transaction = jh->b_transaction; if (transaction == NULL) { @@ -1909,13 +1918,9 @@ * committed, the buffer won't be needed any * longer. */ JBUFFER_TRACE(jh, "checkpointed: add to BJ_Forget"); - ret = __dispose_buffer(jh, + may_free = __dispose_buffer(jh, journal->j_running_transaction); - journal_put_journal_head(jh); - spin_unlock(&journal->j_list_lock); - jbd_unlock_bh_state(bh); - spin_unlock(&journal->j_state_lock); - return ret; + goto zap_buffer; } else { /* There is no currently-running transaction. So the * orphan record which we wrote for this file must have @@ -1923,13 +1928,9 @@ * the committing transaction, if it exists. */ if (journal->j_committing_transaction) { JBUFFER_TRACE(jh, "give to committing trans"); - ret = __dispose_buffer(jh, + may_free = __dispose_buffer(jh, journal->j_committing_transaction); - journal_put_journal_head(jh); - spin_unlock(&journal->j_list_lock); - jbd_unlock_bh_state(bh); - spin_unlock(&journal->j_state_lock); - return ret; + goto zap_buffer; } else { /* The orphan record's transaction has * committed. We can cleanse this buffer */ @@ -1950,10 +1951,26 @@ } /* * The buffer is committing, we simply cannot touch - * it. So we just set j_next_transaction to the - * running transaction (if there is one) and mark - * buffer as freed so that commit code knows it should - * clear dirty bits when it is done with the buffer. + * it. If the page is straddling i_size we have to wait + * for commit and try again. + */ + if (partial_page) { + tid_t tid = journal->j_committing_transaction->t_tid; + + journal_put_journal_head(jh); + spin_unlock(&journal->j_list_lock); + jbd_unlock_bh_state(bh); + spin_unlock(&journal->j_state_lock); + unlock_buffer(bh); + log_wait_commit(journal, tid); + lock_buffer(bh); + goto retry; + } + /* + * OK, buffer won't be reachable after truncate. We just set + * j_next_transaction to the running transaction (if there is + * one) and mark buffer as freed so that commit code knows it + * should clear dirty bits when it is done with the buffer. */ set_buffer_freed(bh); if (journal->j_running_transaction && buffer_jbddirty(bh)) @@ -1976,6 +1993,14 @@ } zap_buffer: + /* + * This is tricky. Although the buffer is truncated, it may be reused + * if blocksize < pagesize and it is attached to the page straddling + * EOF. Since the buffer might have been added to BJ_Forget list of the + * running transaction, journal_get_write_access() won't clear + * b_modified and credit accounting gets confused. So clear b_modified + * here. */ + jh->b_modified = 0; journal_put_journal_head(jh); zap_buffer_no_jh: spin_unlock(&journal->j_list_lock); @@ -2024,7 +2049,8 @@ if (offset <= curr_off) { /* This block is wholly outside the truncation point */ lock_buffer(bh); - may_free &= journal_unmap_buffer(journal, bh); + may_free &= journal_unmap_buffer(journal, bh, + offset > 0); unlock_buffer(bh); } curr_off = next_off; --- linux-3.5.0.orig/fs/jbd/commit.c +++ linux-3.5.0/fs/jbd/commit.c @@ -86,7 +86,12 @@ static void release_data_buffer(struct buffer_head *bh) { if (buffer_freed(bh)) { + WARN_ON_ONCE(buffer_dirty(bh)); clear_buffer_freed(bh); + clear_buffer_mapped(bh); + clear_buffer_new(bh); + clear_buffer_req(bh); + bh->b_bdev = NULL; release_buffer_page(bh); } else put_bh(bh); @@ -866,17 +871,35 @@ * there's no point in keeping a checkpoint record for * it. */ - /* A buffer which has been freed while still being - * journaled by a previous transaction may end up still - * being dirty here, but we want to avoid writing back - * that buffer in the future after the "add to orphan" - * operation been committed, That's not only a performance - * gain, it also stops aliasing problems if the buffer is - * left behind for writeback and gets reallocated for another - * use in a different page. */ - if (buffer_freed(bh) && !jh->b_next_transaction) { - clear_buffer_freed(bh); - clear_buffer_jbddirty(bh); + /* + * A buffer which has been freed while still being journaled by + * a previous transaction. + */ + if (buffer_freed(bh)) { + /* + * If the running transaction is the one containing + * "add to orphan" operation (b_next_transaction != + * NULL), we have to wait for that transaction to + * commit before we can really get rid of the buffer. + * So just clear b_modified to not confuse transaction + * credit accounting and refile the buffer to + * BJ_Forget of the running transaction. If the just + * committed transaction contains "add to orphan" + * operation, we can completely invalidate the buffer + * now. We are rather throughout in that since the + * buffer may be still accessible when blocksize < + * pagesize and it is attached to the last partial + * page. + */ + jh->b_modified = 0; + if (!jh->b_next_transaction) { + clear_buffer_freed(bh); + clear_buffer_jbddirty(bh); + clear_buffer_mapped(bh); + clear_buffer_new(bh); + clear_buffer_req(bh); + bh->b_bdev = NULL; + } } if (buffer_jbddirty(bh)) { --- linux-3.5.0.orig/fs/jbd/journal.c +++ linux-3.5.0/fs/jbd/journal.c @@ -1113,6 +1113,11 @@ BUG_ON(!mutex_is_locked(&journal->j_checkpoint_mutex)); spin_lock(&journal->j_state_lock); + /* Is it already empty? */ + if (sb->s_start == 0) { + spin_unlock(&journal->j_state_lock); + return; + } jbd_debug(1, "JBD: Marking journal as empty (seq %d)\n", journal->j_tail_sequence); --- linux-3.5.0.orig/fs/ocfs2/dlmglue.c +++ linux-3.5.0/fs/ocfs2/dlmglue.c @@ -2545,6 +2545,7 @@ * everything is up to the caller :) */ status = ocfs2_should_refresh_lock_res(lockres); if (status < 0) { + ocfs2_cluster_unlock(osb, lockres, level); mlog_errno(status); goto bail; } @@ -2553,8 +2554,10 @@ ocfs2_complete_lock_res_refresh(lockres, status); - if (status < 0) + if (status < 0) { + ocfs2_cluster_unlock(osb, lockres, level); mlog_errno(status); + } ocfs2_track_lock_refresh(lockres); } bail: --- linux-3.5.0.orig/fs/ocfs2/aops.c +++ linux-3.5.0/fs/ocfs2/aops.c @@ -593,9 +593,9 @@ level = ocfs2_iocb_rw_locked_level(iocb); ocfs2_rw_unlock(inode, level); + inode_dio_done(inode); if (is_async) aio_complete(iocb, ret, 0); - inode_dio_done(inode); } /* --- linux-3.5.0.orig/fs/nfsd/nfsctl.c +++ linux-3.5.0/fs/nfsd/nfsctl.c @@ -673,9 +673,7 @@ err = svc_addsock(nfsd_serv, fd, buf, SIMPLE_TRANSACTION_LIMIT); if (err < 0) { - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); return err; } @@ -744,9 +742,7 @@ svc_xprt_put(xprt); } out_err: - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); return err; } --- linux-3.5.0.orig/fs/nfsd/nfsd.h +++ linux-3.5.0/fs/nfsd/nfsd.h @@ -73,6 +73,17 @@ int nfsd_get_nrthreads(int n, int *); int nfsd_set_nrthreads(int n, int *); +static inline void nfsd_destroy(struct net *net) +{ + int destroy = (nfsd_serv->sv_nrthreads == 1); + + if (destroy) + svc_shutdown_net(nfsd_serv, net); + svc_destroy(nfsd_serv); + if (destroy) + nfsd_serv = NULL; +} + #if defined(CONFIG_NFSD_V2_ACL) || defined(CONFIG_NFSD_V3_ACL) #ifdef CONFIG_NFSD_V2_ACL extern struct svc_version nfsd_acl_version2; --- linux-3.5.0.orig/fs/nfsd/nfs4proc.c +++ linux-3.5.0/fs/nfsd/nfs4proc.c @@ -194,6 +194,7 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open *open) { struct svc_fh *resfh; + int accmode; __be32 status; resfh = kmalloc(sizeof(struct svc_fh), GFP_KERNEL); @@ -253,9 +254,10 @@ /* set reply cache */ fh_copy_shallow(&open->op_openowner->oo_owner.so_replay.rp_openfh, &resfh->fh_handle); - if (!open->op_created) - status = do_open_permission(rqstp, resfh, open, - NFSD_MAY_NOP); + accmode = NFSD_MAY_NOP; + if (open->op_created) + accmode |= NFSD_MAY_OWNER_OVERRIDE; + status = do_open_permission(rqstp, resfh, open, accmode); set_change_info(&open->op_cinfo, current_fh); fh_dup2(current_fh, resfh); out: --- linux-3.5.0.orig/fs/nfsd/nfs4xdr.c +++ linux-3.5.0/fs/nfsd/nfs4xdr.c @@ -2259,7 +2259,7 @@ if (bmval0 & FATTR4_WORD0_CASE_INSENSITIVE) { if ((buflen -= 4) < 0) goto out_resource; - WRITE32(1); + WRITE32(0); } if (bmval0 & FATTR4_WORD0_CASE_PRESERVING) { if ((buflen -= 4) < 0) @@ -2946,11 +2946,16 @@ len = maxcount; v = 0; while (len > 0) { - pn = resp->rqstp->rq_resused++; + pn = resp->rqstp->rq_resused; + if (!resp->rqstp->rq_respages[pn]) { /* ran out of pages */ + maxcount -= len; + break; + } resp->rqstp->rq_vec[v].iov_base = page_address(resp->rqstp->rq_respages[pn]); resp->rqstp->rq_vec[v].iov_len = len < PAGE_SIZE ? len : PAGE_SIZE; + resp->rqstp->rq_resused++; v++; len -= PAGE_SIZE; } @@ -2996,6 +3001,8 @@ return nfserr; if (resp->xbuf->page_len) return nfserr_resource; + if (!resp->rqstp->rq_respages[resp->rqstp->rq_resused]) + return nfserr_resource; page = page_address(resp->rqstp->rq_respages[resp->rqstp->rq_resused++]); @@ -3045,6 +3052,8 @@ return nfserr; if (resp->xbuf->page_len) return nfserr_resource; + if (!resp->rqstp->rq_respages[resp->rqstp->rq_resused]) + return nfserr_resource; RESERVE_SPACE(NFS4_VERIFIER_SIZE); savep = p; --- linux-3.5.0.orig/fs/nfsd/nfs4idmap.c +++ linux-3.5.0/fs/nfsd/nfs4idmap.c @@ -598,7 +598,7 @@ /* Just to make sure it's null-terminated: */ memcpy(buf, name, namelen); buf[namelen] = '\0'; - ret = kstrtouint(name, 10, id); + ret = kstrtouint(buf, 10, id); return ret == 0; } --- linux-3.5.0.orig/fs/nfsd/vfs.c +++ linux-3.5.0/fs/nfsd/vfs.c @@ -1477,13 +1477,19 @@ case NFS3_CREATE_EXCLUSIVE: if ( dchild->d_inode->i_mtime.tv_sec == v_mtime && dchild->d_inode->i_atime.tv_sec == v_atime - && dchild->d_inode->i_size == 0 ) + && dchild->d_inode->i_size == 0 ) { + if (created) + *created = 1; break; + } case NFS4_CREATE_EXCLUSIVE4_1: if ( dchild->d_inode->i_mtime.tv_sec == v_mtime && dchild->d_inode->i_atime.tv_sec == v_atime - && dchild->d_inode->i_size == 0 ) + && dchild->d_inode->i_size == 0 ) { + if (created) + *created = 1; goto set_attr; + } /* fallthru */ case NFS3_CREATE_GUARDED: err = nfserr_exist; --- linux-3.5.0.orig/fs/nfsd/nfs4callback.c +++ linux-3.5.0/fs/nfsd/nfs4callback.c @@ -651,12 +651,12 @@ if (clp->cl_minorversion == 0) { if (!clp->cl_cred.cr_principal && - (clp->cl_flavor >= RPC_AUTH_GSS_KRB5)) + (clp->cl_cred.cr_flavor >= RPC_AUTH_GSS_KRB5)) return -EINVAL; args.client_name = clp->cl_cred.cr_principal; args.prognumber = conn->cb_prog, args.protocol = XPRT_TRANSPORT_TCP; - args.authflavor = clp->cl_flavor; + args.authflavor = clp->cl_cred.cr_flavor; clp->cl_cb_ident = conn->cb_ident; } else { if (!conn->cb_xprt) --- linux-3.5.0.orig/fs/nfsd/nfs4state.c +++ linux-3.5.0/fs/nfsd/nfs4state.c @@ -1215,10 +1215,26 @@ return true; } -static int +/* + * RFC 3530 language requires clid_inuse be returned when the + * "principal" associated with a requests differs from that previously + * used. We use uid, gid's, and gss principal string as our best + * approximation. We also don't want to allow non-gss use of a client + * established using gss: in theory cr_principal should catch that + * change, but in practice cr_principal can be null even in the gss case + * since gssd doesn't always pass down a principal string. + */ +static bool is_gss_cred(struct svc_cred *cr) +{ + /* Is cr_flavor one of the gss "pseudoflavors"?: */ + return (cr->cr_flavor > RPC_AUTH_MAXFLAVOR); +} + + +static bool same_creds(struct svc_cred *cr1, struct svc_cred *cr2) { - if ((cr1->cr_flavor != cr2->cr_flavor) + if ((is_gss_cred(cr1) != is_gss_cred(cr2)) || (cr1->cr_uid != cr2->cr_uid) || (cr1->cr_gid != cr2->cr_gid) || !groups_equal(cr1->cr_group_info, cr2->cr_group_info)) @@ -1227,7 +1243,7 @@ return true; if (!cr1->cr_principal || !cr2->cr_principal) return false; - return 0 == strcmp(cr1->cr_principal, cr1->cr_principal); + return 0 == strcmp(cr1->cr_principal, cr2->cr_principal); } static void gen_clid(struct nfs4_client *clp) @@ -2315,7 +2331,7 @@ if (openowner_slab == NULL) goto out_nomem; lockowner_slab = kmem_cache_create("nfsd4_lockowners", - sizeof(struct nfs4_openowner), 0, 0, NULL); + sizeof(struct nfs4_lockowner), 0, 0, NULL); if (lockowner_slab == NULL) goto out_nomem; file_slab = kmem_cache_create("nfsd4_files", @@ -3748,6 +3764,7 @@ memcpy(&close->cl_stateid, &stp->st_stid.sc_stateid, sizeof(stateid_t)); nfsd4_close_open_stateid(stp); + release_last_closed_stateid(oo); oo->oo_last_closed_stid = stp; /* place unused nfs4_stateowners on so_close_lru list to be --- linux-3.5.0.orig/fs/nfsd/state.h +++ linux-3.5.0/fs/nfsd/state.h @@ -231,7 +231,6 @@ nfs4_verifier cl_verifier; /* generated by client */ time_t cl_time; /* time of last lease renewal */ struct sockaddr_storage cl_addr; /* client ipaddress */ - u32 cl_flavor; /* setclientid pseudoflavor */ struct svc_cred cl_cred; /* setclientid principal */ clientid_t cl_clientid; /* generated by server */ nfs4_verifier cl_confirm; /* generated by server */ --- linux-3.5.0.orig/fs/nfsd/nfssvc.c +++ linux-3.5.0/fs/nfsd/nfssvc.c @@ -254,8 +254,6 @@ static void nfsd_last_thread(struct svc_serv *serv, struct net *net) { - /* When last nfsd thread exits we need to do some clean-up */ - nfsd_serv = NULL; nfsd_shutdown(); svc_rpcb_cleanup(serv, net); @@ -332,6 +330,7 @@ int nfsd_create_serv(void) { int error; + struct net *net = current->nsproxy->net_ns; WARN_ON(!mutex_is_locked(&nfsd_mutex)); if (nfsd_serv) { @@ -346,7 +345,7 @@ if (nfsd_serv == NULL) return -ENOMEM; - error = svc_bind(nfsd_serv, current->nsproxy->net_ns); + error = svc_bind(nfsd_serv, net); if (error < 0) { svc_destroy(nfsd_serv); return error; @@ -427,11 +426,7 @@ if (err) break; } - - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); - + nfsd_destroy(net); return err; } @@ -478,9 +473,7 @@ if (error < 0 && !nfsd_up_before) nfsd_shutdown(); out_destroy: - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); /* Release server */ + nfsd_destroy(net); /* Release server */ out: mutex_unlock(&nfsd_mutex); return error; @@ -563,12 +556,13 @@ nfsdstats.th_cnt --; out: - if (rqstp->rq_server->sv_nrthreads == 1) - svc_shutdown_net(rqstp->rq_server, &init_net); + rqstp->rq_server = NULL; /* Release the thread */ svc_exit_thread(rqstp); + nfsd_destroy(&init_net); + /* Release module */ mutex_unlock(&nfsd_mutex); module_put_and_exit(0); @@ -656,7 +650,7 @@ } /* Store reply in cache. */ - nfsd_cache_update(rqstp, proc->pc_cachetype, statp + 1); + nfsd_cache_update(rqstp, rqstp->rq_cachetype, statp + 1); return 1; } @@ -682,9 +676,7 @@ mutex_lock(&nfsd_mutex); /* this function really, really should have been called svc_put() */ - if (nfsd_serv->sv_nrthreads == 1) - svc_shutdown_net(nfsd_serv, net); - svc_destroy(nfsd_serv); + nfsd_destroy(net); mutex_unlock(&nfsd_mutex); return ret; } --- linux-3.5.0.orig/fs/afs/dir.c +++ linux-3.5.0/fs/afs/dir.c @@ -607,7 +607,7 @@ void *dir_version; int ret; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; vnode = AFS_FS_I(dentry->d_inode); --- linux-3.5.0.orig/fs/autofs4/root.c +++ linux-3.5.0/fs/autofs4/root.c @@ -392,10 +392,12 @@ ino->flags |= AUTOFS_INF_PENDING; spin_unlock(&sbi->fs_lock); status = autofs4_mount_wait(dentry); - if (status) - return ERR_PTR(status); spin_lock(&sbi->fs_lock); ino->flags &= ~AUTOFS_INF_PENDING; + if (status) { + spin_unlock(&sbi->fs_lock); + return ERR_PTR(status); + } } done: if (!(ino->flags & AUTOFS_INF_EXPIRING)) { --- linux-3.5.0.orig/fs/overlayfs/Kconfig +++ linux-3.5.0/fs/overlayfs/Kconfig @@ -0,0 +1,4 @@ +config OVERLAYFS_FS + tristate "Overlay filesystem support" + help + Add support for overlay filesystem. --- linux-3.5.0.orig/fs/overlayfs/super.c +++ linux-3.5.0/fs/overlayfs/super.c @@ -0,0 +1,665 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +MODULE_AUTHOR("Miklos Szeredi "); +MODULE_DESCRIPTION("Overlay filesystem"); +MODULE_LICENSE("GPL"); + +struct ovl_config { + char *lowerdir; + char *upperdir; +}; + +/* private information held for overlayfs's superblock */ +struct ovl_fs { + struct vfsmount *upper_mnt; + struct vfsmount *lower_mnt; + /* pathnames of lower and upper dirs, for show_options */ + struct ovl_config config; +}; + +/* private information held for every overlayfs dentry */ +struct ovl_entry { + /* + * Keep "double reference" on upper dentries, so that + * d_delete() doesn't think it's OK to reset d_inode to NULL. + */ + struct dentry *__upperdentry; + struct dentry *lowerdentry; + union { + struct { + u64 version; + bool opaque; + }; + struct rcu_head rcu; + }; +}; + +const char *ovl_whiteout_xattr = "trusted.overlay.whiteout"; +const char *ovl_opaque_xattr = "trusted.overlay.opaque"; + + +enum ovl_path_type ovl_path_type(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + if (oe->__upperdentry) { + if (oe->lowerdentry && S_ISDIR(dentry->d_inode->i_mode)) + return OVL_PATH_MERGE; + else + return OVL_PATH_UPPER; + } else { + return OVL_PATH_LOWER; + } +} + +static struct dentry *ovl_upperdentry_dereference(struct ovl_entry *oe) +{ + struct dentry *upperdentry = ACCESS_ONCE(oe->__upperdentry); + smp_read_barrier_depends(); + return upperdentry; +} + +void ovl_path_upper(struct dentry *dentry, struct path *path) +{ + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + struct ovl_entry *oe = dentry->d_fsdata; + + path->mnt = ofs->upper_mnt; + path->dentry = ovl_upperdentry_dereference(oe); +} + +void ovl_path_lower(struct dentry *dentry, struct path *path) +{ + struct ovl_fs *ofs = dentry->d_sb->s_fs_info; + struct ovl_entry *oe = dentry->d_fsdata; + + path->mnt = ofs->lower_mnt; + path->dentry = oe->lowerdentry; +} + +enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path) +{ + + enum ovl_path_type type = ovl_path_type(dentry); + + if (type == OVL_PATH_LOWER) + ovl_path_lower(dentry, path); + else + ovl_path_upper(dentry, path); + + return type; +} + +struct dentry *ovl_dentry_upper(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + return ovl_upperdentry_dereference(oe); +} + +struct dentry *ovl_dentry_lower(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + return oe->lowerdentry; +} + +struct dentry *ovl_dentry_real(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + struct dentry *realdentry; + + realdentry = ovl_upperdentry_dereference(oe); + if (!realdentry) + realdentry = oe->lowerdentry; + + return realdentry; +} + +struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper) +{ + struct dentry *realdentry; + + realdentry = ovl_upperdentry_dereference(oe); + if (realdentry) { + *is_upper = true; + } else { + realdentry = oe->lowerdentry; + *is_upper = false; + } + return realdentry; +} + +bool ovl_dentry_is_opaque(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + return oe->opaque; +} + +void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque) +{ + struct ovl_entry *oe = dentry->d_fsdata; + oe->opaque = opaque; +} + +void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&upperdentry->d_parent->d_inode->i_mutex)); + WARN_ON(oe->__upperdentry); + BUG_ON(!upperdentry->d_inode); + smp_wmb(); + oe->__upperdentry = dget(upperdentry); +} + +void ovl_dentry_version_inc(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex)); + oe->version++; +} + +u64 ovl_dentry_version_get(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + WARN_ON(!mutex_is_locked(&dentry->d_inode->i_mutex)); + return oe->version; +} + +bool ovl_is_whiteout(struct dentry *dentry) +{ + int res; + char val; + + if (!dentry) + return false; + if (!dentry->d_inode) + return false; + if (!S_ISLNK(dentry->d_inode->i_mode)) + return false; + + res = vfs_getxattr(dentry, ovl_whiteout_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} + +static bool ovl_is_opaquedir(struct dentry *dentry) +{ + int res; + char val; + + if (!S_ISDIR(dentry->d_inode->i_mode)) + return false; + + res = vfs_getxattr(dentry, ovl_opaque_xattr, &val, 1); + if (res == 1 && val == 'y') + return true; + + return false; +} + +static void ovl_entry_free(struct rcu_head *head) +{ + struct ovl_entry *oe = container_of(head, struct ovl_entry, rcu); + kfree(oe); +} + +static void ovl_dentry_release(struct dentry *dentry) +{ + struct ovl_entry *oe = dentry->d_fsdata; + + if (oe) { + dput(oe->__upperdentry); + dput(oe->__upperdentry); + dput(oe->lowerdentry); + call_rcu(&oe->rcu, ovl_entry_free); + } +} + +const struct dentry_operations ovl_dentry_operations = { + .d_release = ovl_dentry_release, +}; + +static struct ovl_entry *ovl_alloc_entry(void) +{ + return kzalloc(sizeof(struct ovl_entry), GFP_KERNEL); +} + +static inline struct dentry *ovl_lookup_real(struct dentry *dir, + struct qstr *name) +{ + struct dentry *dentry; + + mutex_lock(&dir->d_inode->i_mutex); + dentry = lookup_one_len(name->name, dir, name->len); + mutex_unlock(&dir->d_inode->i_mutex); + + if (IS_ERR(dentry)) { + if (PTR_ERR(dentry) == -ENOENT) + dentry = NULL; + } else if (!dentry->d_inode) { + dput(dentry); + dentry = NULL; + } + return dentry; +} + +static int ovl_do_lookup(struct dentry *dentry) +{ + struct ovl_entry *oe; + struct dentry *upperdir; + struct dentry *lowerdir; + struct dentry *upperdentry = NULL; + struct dentry *lowerdentry = NULL; + struct inode *inode = NULL; + int err; + + err = -ENOMEM; + oe = ovl_alloc_entry(); + if (!oe) + goto out; + + upperdir = ovl_dentry_upper(dentry->d_parent); + lowerdir = ovl_dentry_lower(dentry->d_parent); + + if (upperdir) { + upperdentry = ovl_lookup_real(upperdir, &dentry->d_name); + err = PTR_ERR(upperdentry); + if (IS_ERR(upperdentry)) + goto out_put_dir; + + if (lowerdir && upperdentry && + (S_ISLNK(upperdentry->d_inode->i_mode) || + S_ISDIR(upperdentry->d_inode->i_mode))) { + const struct cred *old_cred; + struct cred *override_cred; + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_dput_upper; + + /* CAP_SYS_ADMIN needed for getxattr */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + + if (ovl_is_opaquedir(upperdentry)) { + oe->opaque = true; + } else if (ovl_is_whiteout(upperdentry)) { + dput(upperdentry); + upperdentry = NULL; + oe->opaque = true; + } + revert_creds(old_cred); + put_cred(override_cred); + } + } + if (lowerdir && !oe->opaque) { + lowerdentry = ovl_lookup_real(lowerdir, &dentry->d_name); + err = PTR_ERR(lowerdentry); + if (IS_ERR(lowerdentry)) + goto out_dput_upper; + } + + if (lowerdentry && upperdentry && + (!S_ISDIR(upperdentry->d_inode->i_mode) || + !S_ISDIR(lowerdentry->d_inode->i_mode))) { + dput(lowerdentry); + lowerdentry = NULL; + oe->opaque = true; + } + + if (lowerdentry || upperdentry) { + struct dentry *realdentry; + + realdentry = upperdentry ? upperdentry : lowerdentry; + err = -ENOMEM; + inode = ovl_new_inode(dentry->d_sb, realdentry->d_inode->i_mode, + oe); + if (!inode) + goto out_dput; + ovl_copyattr(realdentry->d_inode, inode); + } + + if (upperdentry) + oe->__upperdentry = dget(upperdentry); + + if (lowerdentry) + oe->lowerdentry = lowerdentry; + + dentry->d_fsdata = oe; + dentry->d_op = &ovl_dentry_operations; + d_add(dentry, inode); + + return 0; + +out_dput: + dput(lowerdentry); +out_dput_upper: + dput(upperdentry); +out_put_dir: + kfree(oe); +out: + return err; +} + +struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd) +{ + int err = ovl_do_lookup(dentry); + + if (err) + return ERR_PTR(err); + + return NULL; +} + +struct file *ovl_path_open(struct path *path, int flags) +{ + path_get(path); + return dentry_open(path->dentry, path->mnt, flags, current_cred()); +} + +static void ovl_put_super(struct super_block *sb) +{ + struct ovl_fs *ufs = sb->s_fs_info; + + if (!(sb->s_flags & MS_RDONLY)) + mnt_drop_write(ufs->upper_mnt); + + mntput(ufs->upper_mnt); + mntput(ufs->lower_mnt); + + kfree(ufs->config.lowerdir); + kfree(ufs->config.upperdir); + kfree(ufs); +} + +static int ovl_remount_fs(struct super_block *sb, int *flagsp, char *data) +{ + int flags = *flagsp; + struct ovl_fs *ufs = sb->s_fs_info; + + /* When remounting rw or ro, we need to adjust the write access to the + * upper fs. + */ + if (((flags ^ sb->s_flags) & MS_RDONLY) == 0) + /* No change to readonly status */ + return 0; + + if (flags & MS_RDONLY) { + mnt_drop_write(ufs->upper_mnt); + return 0; + } else + return mnt_want_write(ufs->upper_mnt); +} + +/** + * ovl_statfs + * @sb: The overlayfs super block + * @buf: The struct kstatfs to fill in with stats + * + * Get the filesystem statistics. As writes always target the upper layer + * filesystem pass the statfs to the same filesystem. + */ +static int ovl_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + struct dentry *root_dentry = dentry->d_sb->s_root; + struct path path; + ovl_path_upper(root_dentry, &path); + + if (!path.dentry->d_sb->s_op->statfs) + return -ENOSYS; + return path.dentry->d_sb->s_op->statfs(path.dentry, buf); +} + +/** + * ovl_show_options + * + * Prints the mount options for a given superblock. + * Returns zero; does not fail. + */ +static int ovl_show_options(struct seq_file *m, struct dentry *dentry) +{ + struct super_block *sb = dentry->d_sb; + struct ovl_fs *ufs = sb->s_fs_info; + + seq_printf(m, ",lowerdir=%s", ufs->config.lowerdir); + seq_printf(m, ",upperdir=%s", ufs->config.upperdir); + return 0; +} + +static const struct super_operations ovl_super_operations = { + .put_super = ovl_put_super, + .remount_fs = ovl_remount_fs, + .statfs = ovl_statfs, + .show_options = ovl_show_options, +}; + +enum { + Opt_lowerdir, + Opt_upperdir, + Opt_err, +}; + +static const match_table_t ovl_tokens = { + {Opt_lowerdir, "lowerdir=%s"}, + {Opt_upperdir, "upperdir=%s"}, + {Opt_err, NULL} +}; + +static int ovl_parse_opt(char *opt, struct ovl_config *config) +{ + char *p; + + config->upperdir = NULL; + config->lowerdir = NULL; + + while ((p = strsep(&opt, ",")) != NULL) { + int token; + substring_t args[MAX_OPT_ARGS]; + + if (!*p) + continue; + + token = match_token(p, ovl_tokens, args); + switch (token) { + case Opt_upperdir: + kfree(config->upperdir); + config->upperdir = match_strdup(&args[0]); + if (!config->upperdir) + return -ENOMEM; + break; + + case Opt_lowerdir: + kfree(config->lowerdir); + config->lowerdir = match_strdup(&args[0]); + if (!config->lowerdir) + return -ENOMEM; + break; + + default: + return -EINVAL; + } + } + return 0; +} + +static int ovl_fill_super(struct super_block *sb, void *data, int silent) +{ + struct path lowerpath; + struct path upperpath; + struct inode *root_inode; + struct dentry *root_dentry; + struct ovl_entry *oe; + struct ovl_fs *ufs; + int err; + + err = -ENOMEM; + ufs = kmalloc(sizeof(struct ovl_fs), GFP_KERNEL); + if (!ufs) + goto out; + + err = ovl_parse_opt((char *) data, &ufs->config); + if (err) + goto out_free_ufs; + + err = -EINVAL; + if (!ufs->config.upperdir || !ufs->config.lowerdir) { + printk(KERN_ERR "overlayfs: missing upperdir or lowerdir\n"); + goto out_free_config; + } + + oe = ovl_alloc_entry(); + if (oe == NULL) + goto out_free_config; + + err = kern_path(ufs->config.upperdir, LOOKUP_FOLLOW, &upperpath); + if (err) + goto out_free_oe; + + err = kern_path(ufs->config.lowerdir, LOOKUP_FOLLOW, &lowerpath); + if (err) + goto out_put_upperpath; + + err = -ENOTDIR; + if (!S_ISDIR(upperpath.dentry->d_inode->i_mode) || + !S_ISDIR(lowerpath.dentry->d_inode->i_mode)) + goto out_put_lowerpath; + + sb->s_stack_depth = max(upperpath.mnt->mnt_sb->s_stack_depth, + lowerpath.mnt->mnt_sb->s_stack_depth) + 1; + + err = -EINVAL; + if (sb->s_stack_depth > FILESYSTEM_MAX_STACK_DEPTH) { + printk(KERN_ERR "overlayfs: maximum fs stacking depth exceeded\n"); + goto out_put_lowerpath; + } + + + ufs->upper_mnt = clone_private_mount(&upperpath); + err = PTR_ERR(ufs->upper_mnt); + if (IS_ERR(ufs->upper_mnt)) { + printk(KERN_ERR "overlayfs: failed to clone upperpath\n"); + goto out_put_lowerpath; + } + + ufs->lower_mnt = clone_private_mount(&lowerpath); + err = PTR_ERR(ufs->lower_mnt); + if (IS_ERR(ufs->lower_mnt)) { + printk(KERN_ERR "overlayfs: failed to clone lowerpath\n"); + goto out_put_upper_mnt; + } + + /* + * Make lower_mnt R/O. That way fchmod/fchown on lower file + * will fail instead of modifying lower fs. + */ + ufs->lower_mnt->mnt_flags |= MNT_READONLY; + + /* If the upper fs is r/o, we mark overlayfs r/o too */ + if (ufs->upper_mnt->mnt_sb->s_flags & MS_RDONLY) + sb->s_flags |= MS_RDONLY; + + if (!(sb->s_flags & MS_RDONLY)) { + err = mnt_want_write(ufs->upper_mnt); + if (err) + goto out_put_lower_mnt; + } + + err = -ENOMEM; + root_inode = ovl_new_inode(sb, S_IFDIR, oe); + if (!root_inode) + goto out_drop_write; + + root_dentry = d_make_root(root_inode); + if (!root_dentry) + goto out_drop_write; + + mntput(upperpath.mnt); + mntput(lowerpath.mnt); + + oe->__upperdentry = dget(upperpath.dentry); + oe->lowerdentry = lowerpath.dentry; + + root_dentry->d_fsdata = oe; + root_dentry->d_op = &ovl_dentry_operations; + + sb->s_op = &ovl_super_operations; + sb->s_root = root_dentry; + sb->s_fs_info = ufs; + + return 0; + +out_drop_write: + if (!(sb->s_flags & MS_RDONLY)) + mnt_drop_write(ufs->upper_mnt); +out_put_lower_mnt: + mntput(ufs->lower_mnt); +out_put_upper_mnt: + mntput(ufs->upper_mnt); +out_put_lowerpath: + path_put(&lowerpath); +out_put_upperpath: + path_put(&upperpath); +out_free_oe: + kfree(oe); +out_free_config: + kfree(ufs->config.lowerdir); + kfree(ufs->config.upperdir); +out_free_ufs: + kfree(ufs); +out: + return err; +} + +static struct dentry *ovl_mount(struct file_system_type *fs_type, int flags, + const char *dev_name, void *raw_data) +{ + return mount_nodev(fs_type, flags, raw_data, ovl_fill_super); +} + +static struct file_system_type ovl_fs_type = { + .owner = THIS_MODULE, + .name = "overlayfs", + .mount = ovl_mount, + .kill_sb = kill_anon_super, +}; + +static int __init ovl_init(void) +{ + return register_filesystem(&ovl_fs_type); +} + +static void __exit ovl_exit(void) +{ + unregister_filesystem(&ovl_fs_type); +} + +module_init(ovl_init); +module_exit(ovl_exit); --- linux-3.5.0.orig/fs/overlayfs/Makefile +++ linux-3.5.0/fs/overlayfs/Makefile @@ -0,0 +1,7 @@ +# +# Makefile for the overlay filesystem. +# + +obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o + +overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o --- linux-3.5.0.orig/fs/overlayfs/inode.c +++ linux-3.5.0/fs/overlayfs/inode.c @@ -0,0 +1,375 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include "overlayfs.h" + +int ovl_setattr(struct dentry *dentry, struct iattr *attr) +{ + struct dentry *upperdentry; + int err; + + if ((attr->ia_valid & ATTR_SIZE) && !ovl_dentry_upper(dentry)) + err = ovl_copy_up_truncate(dentry, attr->ia_size); + else + err = ovl_copy_up(dentry); + if (err) + return err; + + upperdentry = ovl_dentry_upper(dentry); + + if (attr->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) + attr->ia_valid &= ~ATTR_MODE; + + mutex_lock(&upperdentry->d_inode->i_mutex); + err = notify_change(upperdentry, attr); + mutex_unlock(&upperdentry->d_inode->i_mutex); + + return err; +} + +static int ovl_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + struct path realpath; + + ovl_path_real(dentry, &realpath); + return vfs_getattr(realpath.mnt, realpath.dentry, stat); +} + +int ovl_permission(struct inode *inode, int mask) +{ + struct ovl_entry *oe; + struct dentry *alias = NULL; + struct inode *realinode; + struct dentry *realdentry; + bool is_upper; + int err; + + if (S_ISDIR(inode->i_mode)) { + oe = inode->i_private; + } else if (mask & MAY_NOT_BLOCK) { + return -ECHILD; + } else { + /* + * For non-directories find an alias and get the info + * from there. + */ + spin_lock(&inode->i_lock); + if (WARN_ON(list_empty(&inode->i_dentry))) { + spin_unlock(&inode->i_lock); + return -ENOENT; + } + alias = list_entry(inode->i_dentry.next, + struct dentry, d_alias); + dget(alias); + spin_unlock(&inode->i_lock); + oe = alias->d_fsdata; + } + + realdentry = ovl_entry_real(oe, &is_upper); + + /* Careful in RCU walk mode */ + realinode = ACCESS_ONCE(realdentry->d_inode); + if (!realinode) { + WARN_ON(!(mask & MAY_NOT_BLOCK)); + err = -ENOENT; + goto out_dput; + } + + if (mask & MAY_WRITE) { + umode_t mode = realinode->i_mode; + + /* + * Writes will always be redirected to upper layer, so + * ignore lower layer being read-only. + * + * If the overlay itself is read-only then proceed + * with the permission check, don't return EROFS. + * This will only happen if this is the lower layer of + * another overlayfs. + * + * If upper fs becomes read-only after the overlay was + * constructed return EROFS to prevent modification of + * upper layer. + */ + err = -EROFS; + if (is_upper && !IS_RDONLY(inode) && IS_RDONLY(realinode) && + (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode))) + goto out_dput; + } + + err = inode_only_permission(realinode, mask); +out_dput: + dput(alias); + return err; +} + + +struct ovl_link_data { + struct dentry *realdentry; + void *cookie; +}; + +static void *ovl_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + void *ret; + struct dentry *realdentry; + struct inode *realinode; + + realdentry = ovl_dentry_real(dentry); + realinode = realdentry->d_inode; + + if (WARN_ON(!realinode->i_op->follow_link)) + return ERR_PTR(-EPERM); + + ret = realinode->i_op->follow_link(realdentry, nd); + if (IS_ERR(ret)) + return ret; + + if (realinode->i_op->put_link) { + struct ovl_link_data *data; + + data = kmalloc(sizeof(struct ovl_link_data), GFP_KERNEL); + if (!data) { + realinode->i_op->put_link(realdentry, nd, ret); + return ERR_PTR(-ENOMEM); + } + data->realdentry = realdentry; + data->cookie = ret; + + return data; + } else { + return NULL; + } +} + +static void ovl_put_link(struct dentry *dentry, struct nameidata *nd, void *c) +{ + struct inode *realinode; + struct ovl_link_data *data = c; + + if (!data) + return; + + realinode = data->realdentry->d_inode; + realinode->i_op->put_link(data->realdentry, nd, data->cookie); + kfree(data); +} + +static int ovl_readlink(struct dentry *dentry, char __user *buf, int bufsiz) +{ + struct path realpath; + struct inode *realinode; + + ovl_path_real(dentry, &realpath); + realinode = realpath.dentry->d_inode; + + if (!realinode->i_op->readlink) + return -EINVAL; + + touch_atime(&realpath); + + return realinode->i_op->readlink(realpath.dentry, buf, bufsiz); +} + + +static bool ovl_is_private_xattr(const char *name) +{ + return strncmp(name, "trusted.overlay.", 14) == 0; +} + +int ovl_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + struct dentry *upperdentry; + + if (ovl_is_private_xattr(name)) + return -EPERM; + + err = ovl_copy_up(dentry); + if (err) + return err; + + upperdentry = ovl_dentry_upper(dentry); + return vfs_setxattr(upperdentry, name, value, size, flags); +} + +ssize_t ovl_getxattr(struct dentry *dentry, const char *name, + void *value, size_t size) +{ + if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE && + ovl_is_private_xattr(name)) + return -ENODATA; + + return vfs_getxattr(ovl_dentry_real(dentry), name, value, size); +} + +ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size) +{ + ssize_t res; + int off; + + res = vfs_listxattr(ovl_dentry_real(dentry), list, size); + if (res <= 0 || size == 0) + return res; + + if (ovl_path_type(dentry->d_parent) != OVL_PATH_MERGE) + return res; + + /* filter out private xattrs */ + for (off = 0; off < res;) { + char *s = list + off; + size_t slen = strlen(s) + 1; + + BUG_ON(off + slen > res); + + if (ovl_is_private_xattr(s)) { + res -= slen; + memmove(s, s + slen, res - off); + } else { + off += slen; + } + } + + return res; +} + +int ovl_removexattr(struct dentry *dentry, const char *name) +{ + int err; + struct path realpath; + enum ovl_path_type type; + + if (ovl_path_type(dentry->d_parent) == OVL_PATH_MERGE && + ovl_is_private_xattr(name)) + return -ENODATA; + + type = ovl_path_real(dentry, &realpath); + if (type == OVL_PATH_LOWER) { + err = vfs_getxattr(realpath.dentry, name, NULL, 0); + if (err < 0) + return err; + + err = ovl_copy_up(dentry); + if (err) + return err; + + ovl_path_upper(dentry, &realpath); + } + + return vfs_removexattr(realpath.dentry, name); +} + +static bool ovl_open_need_copy_up(int flags, enum ovl_path_type type, + struct dentry *realdentry) +{ + if (type != OVL_PATH_LOWER) + return false; + + if (special_file(realdentry->d_inode->i_mode)) + return false; + + if (!(OPEN_FMODE(flags) & FMODE_WRITE) && !(flags & O_TRUNC)) + return false; + + return true; +} + +static struct file *ovl_open(struct dentry *dentry, struct file *file, + const struct cred *cred) +{ + int err; + struct path realpath; + enum ovl_path_type type; + + type = ovl_path_real(dentry, &realpath); + if (ovl_open_need_copy_up(file->f_flags, type, realpath.dentry)) { + if (file->f_flags & O_TRUNC) + err = ovl_copy_up_truncate(dentry, 0); + else + err = ovl_copy_up(dentry); + if (err) + return ERR_PTR(err); + + ovl_path_upper(dentry, &realpath); + } + + return vfs_open(&realpath, file, cred); +} + +static const struct inode_operations ovl_file_inode_operations = { + .setattr = ovl_setattr, + .permission = ovl_permission, + .getattr = ovl_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, + .open = ovl_open, +}; + +static const struct inode_operations ovl_symlink_inode_operations = { + .setattr = ovl_setattr, + .follow_link = ovl_follow_link, + .put_link = ovl_put_link, + .readlink = ovl_readlink, + .getattr = ovl_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, +}; + +struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, + struct ovl_entry *oe) +{ + struct inode *inode; + + inode = new_inode(sb); + if (!inode) + return NULL; + + mode &= S_IFMT; + + inode->i_ino = get_next_ino(); + inode->i_mode = mode; + inode->i_flags |= S_NOATIME | S_NOCMTIME; + + switch (mode) { + case S_IFDIR: + inode->i_private = oe; + inode->i_op = &ovl_dir_inode_operations; + inode->i_fop = &ovl_dir_operations; + break; + + case S_IFLNK: + inode->i_op = &ovl_symlink_inode_operations; + break; + + case S_IFREG: + case S_IFSOCK: + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + inode->i_op = &ovl_file_inode_operations; + break; + + default: + WARN(1, "illegal file type: %i\n", mode); + iput(inode); + inode = NULL; + } + + return inode; + +} --- linux-3.5.0.orig/fs/overlayfs/dir.c +++ linux-3.5.0/fs/overlayfs/dir.c @@ -0,0 +1,604 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include "overlayfs.h" + +static const char *ovl_whiteout_symlink = "(overlay-whiteout)"; + +static int ovl_whiteout(struct dentry *upperdir, struct dentry *dentry) +{ + int err; + struct dentry *newdentry; + const struct cred *old_cred; + struct cred *override_cred; + + /* FIXME: recheck lower dentry to see if whiteout is really needed */ + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out; + + /* + * CAP_SYS_ADMIN for setxattr + * CAP_DAC_OVERRIDE for symlink creation + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + override_cred->fsuid = 0; + override_cred->fsgid = 0; + old_cred = override_creds(override_cred); + + newdentry = lookup_one_len(dentry->d_name.name, upperdir, + dentry->d_name.len); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_put_cred; + + /* Just been removed within the same locked region */ + WARN_ON(newdentry->d_inode); + + err = vfs_symlink(upperdir->d_inode, newdentry, ovl_whiteout_symlink); + if (err) + goto out_dput; + + ovl_dentry_version_inc(dentry->d_parent); + + err = vfs_setxattr(newdentry, ovl_whiteout_xattr, "y", 1, 0); + if (err) + vfs_unlink(upperdir->d_inode, newdentry); + +out_dput: + dput(newdentry); +out_put_cred: + revert_creds(old_cred); + put_cred(override_cred); +out: + if (err) { + /* + * There's no way to recover from failure to whiteout. + * What should we do? Log a big fat error and... ? + */ + printk(KERN_ERR "overlayfs: ERROR - failed to whiteout '%s'\n", + dentry->d_name.name); + } + + return err; +} + +static struct dentry *ovl_lookup_create(struct dentry *upperdir, + struct dentry *template) +{ + int err; + struct dentry *newdentry; + struct qstr *name = &template->d_name; + + newdentry = lookup_one_len(name->name, upperdir, name->len); + if (IS_ERR(newdentry)) + return newdentry; + + if (newdentry->d_inode) { + const struct cred *old_cred; + struct cred *override_cred; + + /* No need to check whiteout if lower parent is non-existent */ + err = -EEXIST; + if (!ovl_dentry_lower(template->d_parent)) + goto out_dput; + + if (!S_ISLNK(newdentry->d_inode->i_mode)) + goto out_dput; + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_dput; + + /* + * CAP_SYS_ADMIN for getxattr + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + old_cred = override_creds(override_cred); + + err = -EEXIST; + if (ovl_is_whiteout(newdentry)) + err = vfs_unlink(upperdir->d_inode, newdentry); + + revert_creds(old_cred); + put_cred(override_cred); + if (err) + goto out_dput; + + dput(newdentry); + newdentry = lookup_one_len(name->name, upperdir, name->len); + if (IS_ERR(newdentry)) { + ovl_whiteout(upperdir, template); + return newdentry; + } + + /* + * Whiteout just been successfully removed, parent + * i_mutex is still held, there's no way the lookup + * could return positive. + */ + WARN_ON(newdentry->d_inode); + } + + return newdentry; + +out_dput: + dput(newdentry); + return ERR_PTR(err); +} + +struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, + struct kstat *stat, const char *link) +{ + int err; + struct dentry *newdentry; + struct inode *dir = upperdir->d_inode; + + newdentry = ovl_lookup_create(upperdir, dentry); + if (IS_ERR(newdentry)) + goto out; + + switch (stat->mode & S_IFMT) { + case S_IFREG: + err = vfs_create(dir, newdentry, stat->mode, NULL); + break; + + case S_IFDIR: + err = vfs_mkdir(dir, newdentry, stat->mode); + break; + + case S_IFCHR: + case S_IFBLK: + case S_IFIFO: + case S_IFSOCK: + err = vfs_mknod(dir, newdentry, stat->mode, stat->rdev); + break; + + case S_IFLNK: + err = vfs_symlink(dir, newdentry, link); + break; + + default: + err = -EPERM; + } + if (err) { + if (ovl_dentry_is_opaque(dentry)) + ovl_whiteout(upperdir, dentry); + dput(newdentry); + newdentry = ERR_PTR(err); + } else if (WARN_ON(!newdentry->d_inode)) { + /* + * Not quite sure if non-instantiated dentry is legal or not. + * VFS doesn't seem to care so check and warn here. + */ + dput(newdentry); + newdentry = ERR_PTR(-ENOENT); + } + +out: + return newdentry; + +} + +static int ovl_set_opaque(struct dentry *upperdentry) +{ + int err; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* CAP_SYS_ADMIN for setxattr of "trusted" namespace */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + err = vfs_setxattr(upperdentry, ovl_opaque_xattr, "y", 1, 0); + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +static int ovl_remove_opaque(struct dentry *upperdentry) +{ + int err; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* CAP_SYS_ADMIN for removexattr of "trusted" namespace */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + old_cred = override_creds(override_cred); + err = vfs_removexattr(upperdentry, ovl_opaque_xattr); + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +static int ovl_dir_getattr(struct vfsmount *mnt, struct dentry *dentry, + struct kstat *stat) +{ + int err; + enum ovl_path_type type; + struct path realpath; + + type = ovl_path_real(dentry, &realpath); + err = vfs_getattr(realpath.mnt, realpath.dentry, stat); + if (err) + return err; + + stat->dev = dentry->d_sb->s_dev; + stat->ino = dentry->d_inode->i_ino; + + /* + * It's probably not worth it to count subdirs to get the + * correct link count. nlink=1 seems to pacify 'find' and + * other utilities. + */ + if (type == OVL_PATH_MERGE) + stat->nlink = 1; + + return 0; +} + +static int ovl_create_object(struct dentry *dentry, int mode, dev_t rdev, + const char *link) +{ + int err; + struct dentry *newdentry; + struct dentry *upperdir; + struct inode *inode; + struct kstat stat = { + .mode = mode, + .rdev = rdev, + }; + + err = -ENOMEM; + inode = ovl_new_inode(dentry->d_sb, mode, dentry->d_fsdata); + if (!inode) + goto out; + + err = ovl_copy_up(dentry->d_parent); + if (err) + goto out_iput; + + upperdir = ovl_dentry_upper(dentry->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + + newdentry = ovl_upper_create(upperdir, dentry, &stat, link); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + + ovl_dentry_version_inc(dentry->d_parent); + if (ovl_dentry_is_opaque(dentry) && S_ISDIR(mode)) { + err = ovl_set_opaque(newdentry); + if (err) { + vfs_rmdir(upperdir->d_inode, newdentry); + ovl_whiteout(upperdir, dentry); + goto out_dput; + } + } + ovl_dentry_update(dentry, newdentry); + ovl_copyattr(newdentry->d_inode, inode); + d_instantiate(dentry, inode); + inode = NULL; + newdentry = NULL; + err = 0; + +out_dput: + dput(newdentry); +out_unlock: + mutex_unlock(&upperdir->d_inode->i_mutex); +out_iput: + iput(inode); +out: + return err; +} + +static int ovl_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd) +{ + return ovl_create_object(dentry, (mode & 07777) | S_IFREG, 0, NULL); +} + +static int ovl_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + return ovl_create_object(dentry, (mode & 07777) | S_IFDIR, 0, NULL); +} + +static int ovl_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t rdev) +{ + return ovl_create_object(dentry, mode, rdev, NULL); +} + +static int ovl_symlink(struct inode *dir, struct dentry *dentry, + const char *link) +{ + return ovl_create_object(dentry, S_IFLNK, 0, link); +} + +static int ovl_do_remove(struct dentry *dentry, bool is_dir) +{ + int err; + enum ovl_path_type type; + struct path realpath; + struct dentry *upperdir; + + err = ovl_copy_up(dentry->d_parent); + if (err) + return err; + + upperdir = ovl_dentry_upper(dentry->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + type = ovl_path_real(dentry, &realpath); + if (type != OVL_PATH_LOWER) { + err = -ESTALE; + if (realpath.dentry->d_parent != upperdir) + goto out_d_drop; + + /* FIXME: create whiteout up front and rename to target */ + + if (is_dir) + err = vfs_rmdir(upperdir->d_inode, realpath.dentry); + else + err = vfs_unlink(upperdir->d_inode, realpath.dentry); + if (err) + goto out_d_drop; + + ovl_dentry_version_inc(dentry->d_parent); + } + + if (type != OVL_PATH_UPPER || ovl_dentry_is_opaque(dentry)) + err = ovl_whiteout(upperdir, dentry); + + /* + * Keeping this dentry hashed would mean having to release + * upperpath/lowerpath, which could only be done if we are the + * sole user of this dentry. Too tricky... Just unhash for + * now. + */ +out_d_drop: + d_drop(dentry); + mutex_unlock(&upperdir->d_inode->i_mutex); + + return err; +} + +static int ovl_unlink(struct inode *dir, struct dentry *dentry) +{ + return ovl_do_remove(dentry, false); +} + + +static int ovl_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err; + enum ovl_path_type type; + + type = ovl_path_type(dentry); + if (type != OVL_PATH_UPPER) { + err = ovl_check_empty_and_clear(dentry, type); + if (err) + return err; + } + + return ovl_do_remove(dentry, true); +} + +static int ovl_link(struct dentry *old, struct inode *newdir, + struct dentry *new) +{ + int err; + struct dentry *olddentry; + struct dentry *newdentry; + struct dentry *upperdir; + struct inode *newinode; + + err = ovl_copy_up(old); + if (err) + goto out; + + err = ovl_copy_up(new->d_parent); + if (err) + goto out; + + upperdir = ovl_dentry_upper(new->d_parent); + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + newdentry = ovl_lookup_create(upperdir, new); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + + olddentry = ovl_dentry_upper(old); + err = vfs_link(olddentry, upperdir->d_inode, newdentry); + if (!err) { + if (WARN_ON(!newdentry->d_inode)) { + dput(newdentry); + err = -ENOENT; + goto out_unlock; + } + newinode = ovl_new_inode(old->d_sb, newdentry->d_inode->i_mode, + new->d_fsdata); + if (!newinode) + goto link_fail; + ovl_copyattr(upperdir->d_inode, newinode); + + ovl_dentry_version_inc(new->d_parent); + ovl_dentry_update(new, newdentry); + + d_instantiate(new, newinode); + } else { +link_fail: + if (ovl_dentry_is_opaque(new)) + ovl_whiteout(upperdir, new); + dput(newdentry); + } +out_unlock: + mutex_unlock(&upperdir->d_inode->i_mutex); +out: + return err; + +} + +static int ovl_rename(struct inode *olddir, struct dentry *old, + struct inode *newdir, struct dentry *new) +{ + int err; + enum ovl_path_type old_type; + enum ovl_path_type new_type; + struct dentry *old_upperdir; + struct dentry *new_upperdir; + struct dentry *olddentry; + struct dentry *newdentry; + struct dentry *trap; + bool old_opaque; + bool new_opaque; + bool new_create = false; + bool is_dir = S_ISDIR(old->d_inode->i_mode); + + /* Don't copy up directory trees */ + old_type = ovl_path_type(old); + if (old_type != OVL_PATH_UPPER && is_dir) + return -EXDEV; + + if (new->d_inode) { + new_type = ovl_path_type(new); + + if (new_type == OVL_PATH_LOWER && old_type == OVL_PATH_LOWER) { + if (ovl_dentry_lower(old)->d_inode == + ovl_dentry_lower(new)->d_inode) + return 0; + } + if (new_type != OVL_PATH_LOWER && old_type != OVL_PATH_LOWER) { + if (ovl_dentry_upper(old)->d_inode == + ovl_dentry_upper(new)->d_inode) + return 0; + } + + if (new_type != OVL_PATH_UPPER && + S_ISDIR(new->d_inode->i_mode)) { + err = ovl_check_empty_and_clear(new, new_type); + if (err) + return err; + } + } else { + new_type = OVL_PATH_UPPER; + } + + err = ovl_copy_up(old); + if (err) + return err; + + err = ovl_copy_up(new->d_parent); + if (err) + return err; + + old_upperdir = ovl_dentry_upper(old->d_parent); + new_upperdir = ovl_dentry_upper(new->d_parent); + + trap = lock_rename(new_upperdir, old_upperdir); + + olddentry = ovl_dentry_upper(old); + newdentry = ovl_dentry_upper(new); + if (newdentry) { + dget(newdentry); + } else { + new_create = true; + newdentry = ovl_lookup_create(new_upperdir, new); + err = PTR_ERR(newdentry); + if (IS_ERR(newdentry)) + goto out_unlock; + } + + err = -ESTALE; + if (olddentry->d_parent != old_upperdir) + goto out_dput; + if (newdentry->d_parent != new_upperdir) + goto out_dput; + if (olddentry == trap) + goto out_dput; + if (newdentry == trap) + goto out_dput; + + old_opaque = ovl_dentry_is_opaque(old); + new_opaque = ovl_dentry_is_opaque(new) || new_type != OVL_PATH_UPPER; + + if (is_dir && !old_opaque && new_opaque) { + err = ovl_set_opaque(olddentry); + if (err) + goto out_dput; + } + + err = vfs_rename(old_upperdir->d_inode, olddentry, + new_upperdir->d_inode, newdentry); + + if (err) { + if (new_create && ovl_dentry_is_opaque(new)) + ovl_whiteout(new_upperdir, new); + if (is_dir && !old_opaque && new_opaque) + ovl_remove_opaque(olddentry); + goto out_dput; + } + + if (old_type != OVL_PATH_UPPER || old_opaque) + err = ovl_whiteout(old_upperdir, old); + if (is_dir && old_opaque && !new_opaque) + ovl_remove_opaque(olddentry); + + if (old_opaque != new_opaque) + ovl_dentry_set_opaque(old, new_opaque); + + ovl_dentry_version_inc(old->d_parent); + ovl_dentry_version_inc(new->d_parent); + +out_dput: + dput(newdentry); +out_unlock: + unlock_rename(new_upperdir, old_upperdir); + return err; +} + +const struct inode_operations ovl_dir_inode_operations = { + .lookup = ovl_lookup, + .mkdir = ovl_mkdir, + .symlink = ovl_symlink, + .unlink = ovl_unlink, + .rmdir = ovl_rmdir, + .rename = ovl_rename, + .link = ovl_link, + .setattr = ovl_setattr, + .create = ovl_create, + .mknod = ovl_mknod, + .permission = ovl_permission, + .getattr = ovl_dir_getattr, + .setxattr = ovl_setxattr, + .getxattr = ovl_getxattr, + .listxattr = ovl_listxattr, + .removexattr = ovl_removexattr, +}; --- linux-3.5.0.orig/fs/overlayfs/readdir.c +++ linux-3.5.0/fs/overlayfs/readdir.c @@ -0,0 +1,566 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +struct ovl_cache_entry { + const char *name; + unsigned int len; + unsigned int type; + u64 ino; + bool is_whiteout; + struct list_head l_node; + struct rb_node node; +}; + +struct ovl_readdir_data { + struct rb_root *root; + struct list_head *list; + struct list_head *middle; + struct dentry *dir; + int count; + int err; +}; + +struct ovl_dir_file { + bool is_real; + bool is_cached; + struct list_head cursor; + u64 cache_version; + struct list_head cache; + struct file *realfile; +}; + +static struct ovl_cache_entry *ovl_cache_entry_from_node(struct rb_node *n) +{ + return container_of(n, struct ovl_cache_entry, node); +} + +static struct ovl_cache_entry *ovl_cache_entry_find(struct rb_root *root, + const char *name, int len) +{ + struct rb_node *node = root->rb_node; + int cmp; + + while (node) { + struct ovl_cache_entry *p = ovl_cache_entry_from_node(node); + + cmp = strncmp(name, p->name, len); + if (cmp > 0) + node = p->node.rb_right; + else if (cmp < 0 || len < p->len) + node = p->node.rb_left; + else + return p; + } + + return NULL; +} + +static struct ovl_cache_entry *ovl_cache_entry_new(const char *name, int len, + u64 ino, unsigned int d_type) +{ + struct ovl_cache_entry *p; + + p = kmalloc(sizeof(*p) + len + 1, GFP_KERNEL); + if (p) { + char *name_copy = (char *) (p + 1); + memcpy(name_copy, name, len); + name_copy[len] = '\0'; + p->name = name_copy; + p->len = len; + p->type = d_type; + p->ino = ino; + p->is_whiteout = false; + } + + return p; +} + +static int ovl_cache_entry_add_rb(struct ovl_readdir_data *rdd, + const char *name, int len, u64 ino, + unsigned int d_type) +{ + struct rb_node **newp = &rdd->root->rb_node; + struct rb_node *parent = NULL; + struct ovl_cache_entry *p; + + while (*newp) { + int cmp; + struct ovl_cache_entry *tmp; + + parent = *newp; + tmp = ovl_cache_entry_from_node(*newp); + cmp = strncmp(name, tmp->name, len); + if (cmp > 0) + newp = &tmp->node.rb_right; + else if (cmp < 0 || len < tmp->len) + newp = &tmp->node.rb_left; + else + return 0; + } + + p = ovl_cache_entry_new(name, len, ino, d_type); + if (p == NULL) + return -ENOMEM; + + list_add_tail(&p->l_node, rdd->list); + rb_link_node(&p->node, parent, newp); + rb_insert_color(&p->node, rdd->root); + + return 0; +} + +static int ovl_fill_lower(void *buf, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct ovl_readdir_data *rdd = buf; + struct ovl_cache_entry *p; + + rdd->count++; + p = ovl_cache_entry_find(rdd->root, name, namelen); + if (p) { + list_move_tail(&p->l_node, rdd->middle); + } else { + p = ovl_cache_entry_new(name, namelen, ino, d_type); + if (p == NULL) + rdd->err = -ENOMEM; + else + list_add_tail(&p->l_node, rdd->middle); + } + + return rdd->err; +} + +static void ovl_cache_free(struct list_head *list) +{ + struct ovl_cache_entry *p; + struct ovl_cache_entry *n; + + list_for_each_entry_safe(p, n, list, l_node) + kfree(p); + + INIT_LIST_HEAD(list); +} + +static int ovl_fill_upper(void *buf, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct ovl_readdir_data *rdd = buf; + + rdd->count++; + return ovl_cache_entry_add_rb(rdd, name, namelen, ino, d_type); +} + +static inline int ovl_dir_read(struct path *realpath, + struct ovl_readdir_data *rdd, filldir_t filler) +{ + struct file *realfile; + int err; + + realfile = ovl_path_open(realpath, O_RDONLY | O_DIRECTORY); + if (IS_ERR(realfile)) + return PTR_ERR(realfile); + + do { + rdd->count = 0; + rdd->err = 0; + err = vfs_readdir(realfile, filler, rdd); + if (err >= 0) + err = rdd->err; + } while (!err && rdd->count); + fput(realfile); + + return 0; +} + +static void ovl_dir_reset(struct file *file) +{ + struct ovl_dir_file *od = file->private_data; + enum ovl_path_type type = ovl_path_type(file->f_path.dentry); + + if (ovl_dentry_version_get(file->f_path.dentry) != od->cache_version) { + list_del_init(&od->cursor); + ovl_cache_free(&od->cache); + od->is_cached = false; + } + WARN_ON(!od->is_real && type != OVL_PATH_MERGE); + if (od->is_real && type == OVL_PATH_MERGE) { + fput(od->realfile); + od->realfile = NULL; + od->is_real = false; + } +} + +static int ovl_dir_mark_whiteouts(struct ovl_readdir_data *rdd) +{ + struct ovl_cache_entry *p; + struct dentry *dentry; + const struct cred *old_cred; + struct cred *override_cred; + + override_cred = prepare_creds(); + if (!override_cred) { + ovl_cache_free(rdd->list); + return -ENOMEM; + } + + /* + * CAP_SYS_ADMIN for getxattr + * CAP_DAC_OVERRIDE for lookup + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + old_cred = override_creds(override_cred); + + mutex_lock(&rdd->dir->d_inode->i_mutex); + list_for_each_entry(p, rdd->list, l_node) { + if (p->type != DT_LNK) + continue; + + dentry = lookup_one_len(p->name, rdd->dir, p->len); + if (IS_ERR(dentry)) + continue; + + p->is_whiteout = ovl_is_whiteout(dentry); + dput(dentry); + } + mutex_unlock(&rdd->dir->d_inode->i_mutex); + + revert_creds(old_cred); + put_cred(override_cred); + + return 0; +} + +static inline int ovl_dir_read_merged(struct path *upperpath, + struct path *lowerpath, + struct ovl_readdir_data *rdd) +{ + int err; + struct rb_root root = RB_ROOT; + struct list_head middle; + + rdd->root = &root; + if (upperpath->dentry) { + rdd->dir = upperpath->dentry; + err = ovl_dir_read(upperpath, rdd, ovl_fill_upper); + if (err) + goto out; + + err = ovl_dir_mark_whiteouts(rdd); + if (err) + goto out; + } + /* + * Insert lowerpath entries before upperpath ones, this allows + * offsets to be reasonably constant + */ + list_add(&middle, rdd->list); + rdd->middle = &middle; + err = ovl_dir_read(lowerpath, rdd, ovl_fill_lower); + list_del(&middle); +out: + rdd->root = NULL; + + return err; +} + +static void ovl_seek_cursor(struct ovl_dir_file *od, loff_t pos) +{ + struct list_head *l; + loff_t off; + + l = od->cache.next; + for (off = 0; off < pos; off++) { + if (l == &od->cache) + break; + l = l->next; + } + list_move_tail(&od->cursor, l); +} + +static int ovl_readdir(struct file *file, void *buf, filldir_t filler) +{ + struct ovl_dir_file *od = file->private_data; + int res; + + if (!file->f_pos) + ovl_dir_reset(file); + + if (od->is_real) { + res = vfs_readdir(od->realfile, filler, buf); + file->f_pos = od->realfile->f_pos; + + return res; + } + + if (!od->is_cached) { + struct path lowerpath; + struct path upperpath; + struct ovl_readdir_data rdd = { .list = &od->cache }; + + ovl_path_lower(file->f_path.dentry, &lowerpath); + ovl_path_upper(file->f_path.dentry, &upperpath); + + res = ovl_dir_read_merged(&upperpath, &lowerpath, &rdd); + if (res) { + ovl_cache_free(rdd.list); + return res; + } + + od->cache_version = ovl_dentry_version_get(file->f_path.dentry); + od->is_cached = true; + + ovl_seek_cursor(od, file->f_pos); + } + + while (od->cursor.next != &od->cache) { + int over; + loff_t off; + struct ovl_cache_entry *p; + + p = list_entry(od->cursor.next, struct ovl_cache_entry, l_node); + off = file->f_pos; + if (!p->is_whiteout) { + over = filler(buf, p->name, p->len, off, p->ino, + p->type); + if (over) + break; + } + file->f_pos++; + list_move(&od->cursor, &p->l_node); + } + + return 0; +} + +static loff_t ovl_dir_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t res; + struct ovl_dir_file *od = file->private_data; + + mutex_lock(&file->f_dentry->d_inode->i_mutex); + if (!file->f_pos) + ovl_dir_reset(file); + + if (od->is_real) { + res = vfs_llseek(od->realfile, offset, origin); + file->f_pos = od->realfile->f_pos; + } else { + res = -EINVAL; + + switch (origin) { + case SEEK_CUR: + offset += file->f_pos; + break; + case SEEK_SET: + break; + default: + goto out_unlock; + } + if (offset < 0) + goto out_unlock; + + if (offset != file->f_pos) { + file->f_pos = offset; + if (od->is_cached) + ovl_seek_cursor(od, offset); + } + res = offset; + } +out_unlock: + mutex_unlock(&file->f_dentry->d_inode->i_mutex); + + return res; +} + +static int ovl_dir_fsync(struct file *file, loff_t start, loff_t end, + int datasync) +{ + struct ovl_dir_file *od = file->private_data; + + /* May need to reopen directory if it got copied up */ + if (!od->realfile) { + struct path upperpath; + + ovl_path_upper(file->f_path.dentry, &upperpath); + od->realfile = ovl_path_open(&upperpath, O_RDONLY); + if (IS_ERR(od->realfile)) + return PTR_ERR(od->realfile); + } + + return vfs_fsync_range(od->realfile, start, end, datasync); +} + +static int ovl_dir_release(struct inode *inode, struct file *file) +{ + struct ovl_dir_file *od = file->private_data; + + list_del(&od->cursor); + ovl_cache_free(&od->cache); + if (od->realfile) + fput(od->realfile); + kfree(od); + + return 0; +} + +static int ovl_dir_open(struct inode *inode, struct file *file) +{ + struct path realpath; + struct file *realfile; + struct ovl_dir_file *od; + enum ovl_path_type type; + + od = kzalloc(sizeof(struct ovl_dir_file), GFP_KERNEL); + if (!od) + return -ENOMEM; + + type = ovl_path_real(file->f_path.dentry, &realpath); + realfile = ovl_path_open(&realpath, file->f_flags); + if (IS_ERR(realfile)) { + kfree(od); + return PTR_ERR(realfile); + } + INIT_LIST_HEAD(&od->cache); + INIT_LIST_HEAD(&od->cursor); + od->is_cached = false; + od->realfile = realfile; + od->is_real = (type != OVL_PATH_MERGE); + file->private_data = od; + + return 0; +} + +const struct file_operations ovl_dir_operations = { + .read = generic_read_dir, + .open = ovl_dir_open, + .readdir = ovl_readdir, + .llseek = ovl_dir_llseek, + .fsync = ovl_dir_fsync, + .release = ovl_dir_release, +}; + +static int ovl_check_empty_dir(struct dentry *dentry, struct list_head *list) +{ + int err; + struct path lowerpath; + struct path upperpath; + struct ovl_cache_entry *p; + struct ovl_readdir_data rdd = { .list = list }; + + ovl_path_upper(dentry, &upperpath); + ovl_path_lower(dentry, &lowerpath); + + err = ovl_dir_read_merged(&upperpath, &lowerpath, &rdd); + if (err) + return err; + + err = 0; + + list_for_each_entry(p, list, l_node) { + if (p->is_whiteout) + continue; + + if (p->name[0] == '.') { + if (p->len == 1) + continue; + if (p->len == 2 && p->name[1] == '.') + continue; + } + err = -ENOTEMPTY; + break; + } + + return err; +} + +static int ovl_remove_whiteouts(struct dentry *dir, struct list_head *list) +{ + struct path upperpath; + struct dentry *upperdir; + struct ovl_cache_entry *p; + const struct cred *old_cred; + struct cred *override_cred; + int err; + + ovl_path_upper(dir, &upperpath); + upperdir = upperpath.dentry; + + override_cred = prepare_creds(); + if (!override_cred) + return -ENOMEM; + + /* + * CAP_DAC_OVERRIDE for lookup and unlink + * CAP_SYS_ADMIN for setxattr of "trusted" namespace + * CAP_FOWNER for unlink in sticky directory + */ + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + old_cred = override_creds(override_cred); + + err = vfs_setxattr(upperdir, ovl_opaque_xattr, "y", 1, 0); + if (err) + goto out_revert_creds; + + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + list_for_each_entry(p, list, l_node) { + struct dentry *dentry; + int ret; + + if (!p->is_whiteout) + continue; + + dentry = lookup_one_len(p->name, upperdir, p->len); + if (IS_ERR(dentry)) { + printk(KERN_WARNING + "overlayfs: failed to lookup whiteout %.*s: %li\n", + p->len, p->name, PTR_ERR(dentry)); + continue; + } + ret = vfs_unlink(upperdir->d_inode, dentry); + dput(dentry); + if (ret) + printk(KERN_WARNING + "overlayfs: failed to unlink whiteout %.*s: %i\n", + p->len, p->name, ret); + } + mutex_unlock(&upperdir->d_inode->i_mutex); + +out_revert_creds: + revert_creds(old_cred); + put_cred(override_cred); + + return err; +} + +int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type) +{ + int err; + LIST_HEAD(list); + + err = ovl_check_empty_dir(dentry, &list); + if (!err && type == OVL_PATH_MERGE) + err = ovl_remove_whiteouts(dentry, &list); + + ovl_cache_free(&list); + + return err; +} --- linux-3.5.0.orig/fs/overlayfs/overlayfs.h +++ linux-3.5.0/fs/overlayfs/overlayfs.h @@ -0,0 +1,70 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +struct ovl_entry; + +enum ovl_path_type { + OVL_PATH_UPPER, + OVL_PATH_MERGE, + OVL_PATH_LOWER, +}; + +extern const char *ovl_opaque_xattr; +extern const char *ovl_whiteout_xattr; +extern const struct dentry_operations ovl_dentry_operations; + +enum ovl_path_type ovl_path_type(struct dentry *dentry); +u64 ovl_dentry_version_get(struct dentry *dentry); +void ovl_dentry_version_inc(struct dentry *dentry); +void ovl_path_upper(struct dentry *dentry, struct path *path); +void ovl_path_lower(struct dentry *dentry, struct path *path); +enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path); +struct dentry *ovl_dentry_upper(struct dentry *dentry); +struct dentry *ovl_dentry_lower(struct dentry *dentry); +struct dentry *ovl_dentry_real(struct dentry *dentry); +struct dentry *ovl_entry_real(struct ovl_entry *oe, bool *is_upper); +bool ovl_dentry_is_opaque(struct dentry *dentry); +void ovl_dentry_set_opaque(struct dentry *dentry, bool opaque); +bool ovl_is_whiteout(struct dentry *dentry); +void ovl_dentry_update(struct dentry *dentry, struct dentry *upperdentry); +struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd); +struct file *ovl_path_open(struct path *path, int flags); + +struct dentry *ovl_upper_create(struct dentry *upperdir, struct dentry *dentry, + struct kstat *stat, const char *link); + +/* readdir.c */ +extern const struct file_operations ovl_dir_operations; +int ovl_check_empty_and_clear(struct dentry *dentry, enum ovl_path_type type); + +/* inode.c */ +int ovl_setattr(struct dentry *dentry, struct iattr *attr); +int ovl_permission(struct inode *inode, int mask); +int ovl_setxattr(struct dentry *dentry, const char *name, + const void *value, size_t size, int flags); +ssize_t ovl_getxattr(struct dentry *dentry, const char *name, + void *value, size_t size); +ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size); +int ovl_removexattr(struct dentry *dentry, const char *name); + +struct inode *ovl_new_inode(struct super_block *sb, umode_t mode, + struct ovl_entry *oe); +static inline void ovl_copyattr(struct inode *from, struct inode *to) +{ + to->i_uid = from->i_uid; + to->i_gid = from->i_gid; +} + +/* dir.c */ +extern const struct inode_operations ovl_dir_inode_operations; + +/* copy_up.c */ +int ovl_copy_up(struct dentry *dentry); +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size); --- linux-3.5.0.orig/fs/overlayfs/copy_up.c +++ linux-3.5.0/fs/overlayfs/copy_up.c @@ -0,0 +1,385 @@ +/* + * + * Copyright (C) 2011 Novell Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "overlayfs.h" + +#define OVL_COPY_UP_CHUNK_SIZE (1 << 20) + +static int ovl_copy_up_xattr(struct dentry *old, struct dentry *new) +{ + ssize_t list_size, size; + char *buf, *name, *value; + int error; + + if (!old->d_inode->i_op->getxattr || + !new->d_inode->i_op->getxattr) + return 0; + + list_size = vfs_listxattr(old, NULL, 0); + if (list_size <= 0) { + if (list_size == -EOPNOTSUPP) + return 0; + return list_size; + } + + buf = kzalloc(list_size, GFP_KERNEL); + if (!buf) + return -ENOMEM; + + error = -ENOMEM; + value = kmalloc(XATTR_SIZE_MAX, GFP_KERNEL); + if (!value) + goto out; + + list_size = vfs_listxattr(old, buf, list_size); + if (list_size <= 0) { + error = list_size; + goto out_free_value; + } + + for (name = buf; name < (buf + list_size); name += strlen(name) + 1) { + size = vfs_getxattr(old, name, value, XATTR_SIZE_MAX); + if (size <= 0) { + error = size; + goto out_free_value; + } + error = vfs_setxattr(new, name, value, size, 0); + if (error) + goto out_free_value; + } + +out_free_value: + kfree(value); +out: + kfree(buf); + return error; +} + +static int ovl_copy_up_data(struct path *old, struct path *new, loff_t len) +{ + struct file *old_file; + struct file *new_file; + int error = 0; + + if (len == 0) + return 0; + + old_file = ovl_path_open(old, O_RDONLY); + if (IS_ERR(old_file)) + return PTR_ERR(old_file); + + new_file = ovl_path_open(new, O_WRONLY); + if (IS_ERR(new_file)) { + error = PTR_ERR(new_file); + goto out_fput; + } + + /* FIXME: copy up sparse files efficiently */ + while (len) { + loff_t offset = new_file->f_pos; + size_t this_len = OVL_COPY_UP_CHUNK_SIZE; + long bytes; + + if (len < this_len) + this_len = len; + + if (signal_pending_state(TASK_KILLABLE, current)) { + error = -EINTR; + break; + } + + bytes = do_splice_direct(old_file, &offset, new_file, this_len, + SPLICE_F_MOVE); + if (bytes <= 0) { + error = bytes; + break; + } + + len -= bytes; + } + + fput(new_file); +out_fput: + fput(old_file); + return error; +} + +static char *ovl_read_symlink(struct dentry *realdentry) +{ + int res; + char *buf; + struct inode *inode = realdentry->d_inode; + mm_segment_t old_fs; + + res = -EINVAL; + if (!inode->i_op->readlink) + goto err; + + res = -ENOMEM; + buf = (char *) __get_free_page(GFP_KERNEL); + if (!buf) + goto err; + + old_fs = get_fs(); + set_fs(get_ds()); + /* The cast to a user pointer is valid due to the set_fs() */ + res = inode->i_op->readlink(realdentry, + (char __user *)buf, PAGE_SIZE - 1); + set_fs(old_fs); + if (res < 0) { + free_page((unsigned long) buf); + goto err; + } + buf[res] = '\0'; + + return buf; + +err: + return ERR_PTR(res); +} + +static int ovl_set_timestamps(struct dentry *upperdentry, struct kstat *stat) +{ + struct iattr attr = { + .ia_valid = + ATTR_ATIME | ATTR_MTIME | ATTR_ATIME_SET | ATTR_MTIME_SET, + .ia_atime = stat->atime, + .ia_mtime = stat->mtime, + }; + + return notify_change(upperdentry, &attr); +} + +static int ovl_set_mode(struct dentry *upperdentry, umode_t mode) +{ + struct iattr attr = { + .ia_valid = ATTR_MODE, + .ia_mode = mode, + }; + + return notify_change(upperdentry, &attr); +} + +static int ovl_copy_up_locked(struct dentry *upperdir, struct dentry *dentry, + struct path *lowerpath, struct kstat *stat, + const char *link) +{ + int err; + struct path newpath; + umode_t mode = stat->mode; + + /* Can't properly set mode on creation because of the umask */ + stat->mode &= S_IFMT; + + ovl_path_upper(dentry, &newpath); + WARN_ON(newpath.dentry); + newpath.dentry = ovl_upper_create(upperdir, dentry, stat, link); + if (IS_ERR(newpath.dentry)) + return PTR_ERR(newpath.dentry); + + if (S_ISREG(stat->mode)) { + err = ovl_copy_up_data(lowerpath, &newpath, stat->size); + if (err) + goto err_remove; + } + + err = ovl_copy_up_xattr(lowerpath->dentry, newpath.dentry); + if (err) + goto err_remove; + + mutex_lock(&newpath.dentry->d_inode->i_mutex); + if (!S_ISLNK(stat->mode)) + err = ovl_set_mode(newpath.dentry, mode); + if (!err) + err = ovl_set_timestamps(newpath.dentry, stat); + mutex_unlock(&newpath.dentry->d_inode->i_mutex); + if (err) + goto err_remove; + + ovl_dentry_update(dentry, newpath.dentry); + + /* + * Easiest way to get rid of the lower dentry reference is to + * drop this dentry. This is neither needed nor possible for + * directories. + */ + if (!S_ISDIR(stat->mode)) + d_drop(dentry); + + return 0; + +err_remove: + if (S_ISDIR(stat->mode)) + vfs_rmdir(upperdir->d_inode, newpath.dentry); + else + vfs_unlink(upperdir->d_inode, newpath.dentry); + + dput(newpath.dentry); + + return err; +} + +/* + * Copy up a single dentry + * + * Directory renames only allowed on "pure upper" (already created on + * upper filesystem, never copied up). Directories which are on lower or + * are merged may not be renamed. For these -EXDEV is returned and + * userspace has to deal with it. This means, when copying up a + * directory we can rely on it and ancestors being stable. + * + * Non-directory renames start with copy up of source if necessary. The + * actual rename will only proceed once the copy up was successful. Copy + * up uses upper parent i_mutex for exclusion. Since rename can change + * d_parent it is possible that the copy up will lock the old parent. At + * that point the file will have already been copied up anyway. + */ +static int ovl_copy_up_one(struct dentry *parent, struct dentry *dentry, + struct path *lowerpath, struct kstat *stat) +{ + int err; + struct kstat pstat; + struct path parentpath; + struct dentry *upperdir; + const struct cred *old_cred; + struct cred *override_cred; + char *link = NULL; + + ovl_path_upper(parent, &parentpath); + upperdir = parentpath.dentry; + + err = vfs_getattr(parentpath.mnt, parentpath.dentry, &pstat); + if (err) + return err; + + if (S_ISLNK(stat->mode)) { + link = ovl_read_symlink(lowerpath->dentry); + if (IS_ERR(link)) + return PTR_ERR(link); + } + + err = -ENOMEM; + override_cred = prepare_creds(); + if (!override_cred) + goto out_free_link; + + override_cred->fsuid = stat->uid; + override_cred->fsgid = stat->gid; + /* + * CAP_SYS_ADMIN for copying up extended attributes + * CAP_DAC_OVERRIDE for create + * CAP_FOWNER for chmod, timestamp update + * CAP_FSETID for chmod + * CAP_MKNOD for mknod + */ + cap_raise(override_cred->cap_effective, CAP_SYS_ADMIN); + cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE); + cap_raise(override_cred->cap_effective, CAP_FOWNER); + cap_raise(override_cred->cap_effective, CAP_FSETID); + cap_raise(override_cred->cap_effective, CAP_MKNOD); + old_cred = override_creds(override_cred); + + mutex_lock_nested(&upperdir->d_inode->i_mutex, I_MUTEX_PARENT); + if (ovl_path_type(dentry) != OVL_PATH_LOWER) { + err = 0; + } else { + err = ovl_copy_up_locked(upperdir, dentry, lowerpath, + stat, link); + if (!err) { + /* Restore timestamps on parent (best effort) */ + ovl_set_timestamps(upperdir, &pstat); + } + } + + mutex_unlock(&upperdir->d_inode->i_mutex); + + revert_creds(old_cred); + put_cred(override_cred); + +out_free_link: + if (link) + free_page((unsigned long) link); + + return err; +} + +int ovl_copy_up(struct dentry *dentry) +{ + int err; + + err = 0; + while (!err) { + struct dentry *next; + struct dentry *parent; + struct path lowerpath; + struct kstat stat; + enum ovl_path_type type = ovl_path_type(dentry); + + if (type != OVL_PATH_LOWER) + break; + + next = dget(dentry); + /* find the topmost dentry not yet copied up */ + for (;;) { + parent = dget_parent(next); + + type = ovl_path_type(parent); + if (type != OVL_PATH_LOWER) + break; + + dput(next); + next = parent; + } + + ovl_path_lower(next, &lowerpath); + err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat); + if (!err) + err = ovl_copy_up_one(parent, next, &lowerpath, &stat); + + dput(parent); + dput(next); + } + + return err; +} + +/* Optimize by not copying up the file first and truncating later */ +int ovl_copy_up_truncate(struct dentry *dentry, loff_t size) +{ + int err; + struct kstat stat; + struct path lowerpath; + struct dentry *parent = dget_parent(dentry); + + err = ovl_copy_up(parent); + if (err) + goto out_dput_parent; + + ovl_path_lower(dentry, &lowerpath); + err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat); + if (err) + goto out_dput_parent; + + if (size < stat.size) + stat.size = size; + + err = ovl_copy_up_one(parent, dentry, &lowerpath, &stat); + +out_dput_parent: + dput(parent); + return err; +} --- linux-3.5.0.orig/fs/ubifs/lpt.c +++ linux-3.5.0/fs/ubifs/lpt.c @@ -1749,7 +1749,10 @@ return 0; out_err: - ubifs_lpt_free(c, 0); + if (wr) + ubifs_lpt_free(c, 1); + if (rd) + ubifs_lpt_free(c, 0); return err; } --- linux-3.5.0.orig/fs/ubifs/debug.h +++ linux-3.5.0/fs/ubifs/debug.h @@ -162,7 +162,7 @@ #define ubifs_dbg_msg(type, fmt, ...) \ pr_debug("UBIFS DBG " type ": " fmt "\n", ##__VA_ARGS__) -#define DBG_KEY_BUF_LEN 32 +#define DBG_KEY_BUF_LEN 48 #define ubifs_dbg_msg_key(type, key, fmt, ...) do { \ char __tmp_key_buf[DBG_KEY_BUF_LEN]; \ pr_debug("UBIFS DBG " type ": " fmt "%s\n", ##__VA_ARGS__, \ --- linux-3.5.0.orig/fs/ubifs/ubifs.h +++ linux-3.5.0/fs/ubifs/ubifs.h @@ -905,6 +905,8 @@ * @dnext: next orphan to delete * @inum: inode number * @new: %1 => added since the last commit, otherwise %0 + * @cmt: %1 => commit pending, otherwise %0 + * @del: %1 => delete pending, otherwise %0 */ struct ubifs_orphan { struct rb_node rb; @@ -913,7 +915,9 @@ struct ubifs_orphan *cnext; struct ubifs_orphan *dnext; ino_t inum; - int new; + unsigned new:1; + unsigned cmt:1; + unsigned del:1; }; /** @@ -1184,6 +1188,8 @@ * @freeable_list: list of freeable non-index LEBs (free + dirty == @leb_size) * @frdi_idx_list: list of freeable index LEBs (free + dirty == @leb_size) * @freeable_cnt: number of freeable LEBs in @freeable_list + * @in_a_category_cnt: count of lprops which are in a certain category, which + * basically meants that they were loaded from the flash * * @ltab_lnum: LEB number of LPT's own lprops table * @ltab_offs: offset of LPT's own lprops table @@ -1413,6 +1419,7 @@ struct list_head freeable_list; struct list_head frdi_idx_list; int freeable_cnt; + int in_a_category_cnt; int ltab_lnum; int ltab_offs; --- linux-3.5.0.orig/fs/ubifs/find.c +++ linux-3.5.0/fs/ubifs/find.c @@ -681,8 +681,16 @@ if (!lprops) { lprops = ubifs_fast_find_freeable(c); if (!lprops) { - ubifs_assert(c->freeable_cnt == 0); - if (c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) { + /* + * The first condition means the following: go scan the + * LPT if there are uncategorized lprops, which means + * there may be freeable LEBs there (UBIFS does not + * store the information about freeable LEBs in the + * master node). + */ + if (c->in_a_category_cnt != c->main_lebs || + c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) { + ubifs_assert(c->freeable_cnt == 0); lprops = scan_for_leb_for_idx(c); if (IS_ERR(lprops)) { err = PTR_ERR(lprops); --- linux-3.5.0.orig/fs/ubifs/lprops.c +++ linux-3.5.0/fs/ubifs/lprops.c @@ -300,8 +300,11 @@ default: ubifs_assert(0); } + lprops->flags &= ~LPROPS_CAT_MASK; lprops->flags |= cat; + c->in_a_category_cnt += 1; + ubifs_assert(c->in_a_category_cnt <= c->main_lebs); } /** @@ -334,6 +337,9 @@ default: ubifs_assert(0); } + + c->in_a_category_cnt -= 1; + ubifs_assert(c->in_a_category_cnt >= 0); } /** --- linux-3.5.0.orig/fs/ubifs/orphan.c +++ linux-3.5.0/fs/ubifs/orphan.c @@ -126,13 +126,14 @@ else if (inum > o->inum) p = p->rb_right; else { - if (o->dnext) { + if (o->del) { spin_unlock(&c->orphan_lock); dbg_gen("deleted twice ino %lu", (unsigned long)inum); return; } - if (o->cnext) { + if (o->cmt) { + o->del = 1; o->dnext = c->orph_dnext; c->orph_dnext = o; spin_unlock(&c->orphan_lock); @@ -172,7 +173,9 @@ last = &c->orph_cnext; list_for_each_entry(orphan, &c->orph_new, new_list) { ubifs_assert(orphan->new); + ubifs_assert(!orphan->cmt); orphan->new = 0; + orphan->cmt = 1; *last = orphan; last = &orphan->cnext; } @@ -299,7 +302,9 @@ cnext = c->orph_cnext; for (i = 0; i < cnt; i++) { orphan = cnext; + ubifs_assert(orphan->cmt); orph->inos[i] = cpu_to_le64(orphan->inum); + orphan->cmt = 0; cnext = orphan->cnext; orphan->cnext = NULL; } @@ -378,6 +383,7 @@ list_for_each_entry(orphan, &c->orph_list, list) { if (orphan->new) continue; + orphan->cmt = 1; *last = orphan; last = &orphan->cnext; cnt += 1; @@ -442,6 +448,7 @@ orphan = dnext; dnext = orphan->dnext; ubifs_assert(!orphan->new); + ubifs_assert(orphan->del); rb_erase(&orphan->rb, &c->orph_tree); list_del(&orphan->list); c->tot_orphans -= 1; @@ -531,6 +538,7 @@ rb_link_node(&orphan->rb, parent, p); rb_insert_color(&orphan->rb, &c->orph_tree); list_add_tail(&orphan->list, &c->orph_list); + orphan->del = 1; orphan->dnext = c->orph_dnext; c->orph_dnext = orphan; dbg_mnt("ino %lu, new %d, tot %d", (unsigned long)inum, --- linux-3.5.0.orig/fs/cifs/cifsacl.c +++ linux-3.5.0/fs/cifs/cifsacl.c @@ -225,6 +225,13 @@ } static void +cifs_copy_sid(struct cifs_sid *dst, const struct cifs_sid *src) +{ + memcpy(dst, src, sizeof(*dst)); + dst->num_subauth = min_t(u8, src->num_subauth, NUM_SUBAUTHS); +} + +static void id_rb_insert(struct rb_root *root, struct cifs_sid *sidptr, struct cifs_sid_id **psidid, char *typestr) { @@ -248,7 +255,7 @@ } } - memcpy(&(*psidid)->sid, sidptr, sizeof(struct cifs_sid)); + cifs_copy_sid(&(*psidid)->sid, sidptr); (*psidid)->time = jiffies - (SID_MAP_RETRY + 1); (*psidid)->refcount = 0; @@ -354,7 +361,7 @@ * any fields of the node after a reference is put . */ if (test_bit(SID_ID_MAPPED, &psidid->state)) { - memcpy(ssid, &psidid->sid, sizeof(struct cifs_sid)); + cifs_copy_sid(ssid, &psidid->sid); psidid->time = jiffies; /* update ts for accessing */ goto id_sid_out; } @@ -370,14 +377,14 @@ if (IS_ERR(sidkey)) { rc = -EINVAL; cFYI(1, "%s: Can't map and id to a SID", __func__); + } else if (sidkey->datalen < sizeof(struct cifs_sid)) { + rc = -EIO; + cFYI(1, "%s: Downcall contained malformed key " + "(datalen=%hu)", __func__, sidkey->datalen); } else { lsid = (struct cifs_sid *)sidkey->payload.data; - memcpy(&psidid->sid, lsid, - sidkey->datalen < sizeof(struct cifs_sid) ? - sidkey->datalen : sizeof(struct cifs_sid)); - memcpy(ssid, &psidid->sid, - sidkey->datalen < sizeof(struct cifs_sid) ? - sidkey->datalen : sizeof(struct cifs_sid)); + cifs_copy_sid(&psidid->sid, lsid); + cifs_copy_sid(ssid, &psidid->sid); set_bit(SID_ID_MAPPED, &psidid->state); key_put(sidkey); kfree(psidid->sidstr); @@ -396,7 +403,7 @@ return rc; } if (test_bit(SID_ID_MAPPED, &psidid->state)) - memcpy(ssid, &psidid->sid, sizeof(struct cifs_sid)); + cifs_copy_sid(ssid, &psidid->sid); else rc = -EINVAL; } @@ -675,8 +682,6 @@ static void copy_sec_desc(const struct cifs_ntsd *pntsd, struct cifs_ntsd *pnntsd, __u32 sidsoffset) { - int i; - struct cifs_sid *owner_sid_ptr, *group_sid_ptr; struct cifs_sid *nowner_sid_ptr, *ngroup_sid_ptr; @@ -692,26 +697,14 @@ owner_sid_ptr = (struct cifs_sid *)((char *)pntsd + le32_to_cpu(pntsd->osidoffset)); nowner_sid_ptr = (struct cifs_sid *)((char *)pnntsd + sidsoffset); - - nowner_sid_ptr->revision = owner_sid_ptr->revision; - nowner_sid_ptr->num_subauth = owner_sid_ptr->num_subauth; - for (i = 0; i < 6; i++) - nowner_sid_ptr->authority[i] = owner_sid_ptr->authority[i]; - for (i = 0; i < 5; i++) - nowner_sid_ptr->sub_auth[i] = owner_sid_ptr->sub_auth[i]; + cifs_copy_sid(nowner_sid_ptr, owner_sid_ptr); /* copy group sid */ group_sid_ptr = (struct cifs_sid *)((char *)pntsd + le32_to_cpu(pntsd->gsidoffset)); ngroup_sid_ptr = (struct cifs_sid *)((char *)pnntsd + sidsoffset + sizeof(struct cifs_sid)); - - ngroup_sid_ptr->revision = group_sid_ptr->revision; - ngroup_sid_ptr->num_subauth = group_sid_ptr->num_subauth; - for (i = 0; i < 6; i++) - ngroup_sid_ptr->authority[i] = group_sid_ptr->authority[i]; - for (i = 0; i < 5; i++) - ngroup_sid_ptr->sub_auth[i] = group_sid_ptr->sub_auth[i]; + cifs_copy_sid(ngroup_sid_ptr, group_sid_ptr); return; } @@ -1120,8 +1113,7 @@ kfree(nowner_sid_ptr); return rc; } - memcpy(owner_sid_ptr, nowner_sid_ptr, - sizeof(struct cifs_sid)); + cifs_copy_sid(owner_sid_ptr, nowner_sid_ptr); kfree(nowner_sid_ptr); *aclflag = CIFS_ACL_OWNER; } @@ -1139,8 +1131,7 @@ kfree(ngroup_sid_ptr); return rc; } - memcpy(group_sid_ptr, ngroup_sid_ptr, - sizeof(struct cifs_sid)); + cifs_copy_sid(group_sid_ptr, ngroup_sid_ptr); kfree(ngroup_sid_ptr); *aclflag = CIFS_ACL_GROUP; } --- linux-3.5.0.orig/fs/cifs/cifs_unicode.c +++ linux-3.5.0/fs/cifs/cifs_unicode.c @@ -203,6 +203,27 @@ int i; wchar_t wchar_to; /* needed to quiet sparse */ + /* special case for utf8 to handle no plane0 chars */ + if (!strcmp(codepage->charset, "utf8")) { + /* + * convert utf8 -> utf16, we assume we have enough space + * as caller should have assumed conversion does not overflow + * in destination len is length in wchar_t units (16bits) + */ + i = utf8s_to_utf16s(from, len, UTF16_LITTLE_ENDIAN, + (wchar_t *) to, len); + + /* if success terminate and exit */ + if (i >= 0) + goto success; + /* + * if fails fall back to UCS encoding as this + * function should not return negative values + * currently can fail only if source contains + * invalid encoded characters + */ + } + for (i = 0; len && *from; i++, from += charlen, len -= charlen) { charlen = codepage->char2uni(from, len, &wchar_to); if (charlen < 1) { @@ -215,6 +236,7 @@ put_unaligned_le16(wchar_to, &to[i]); } +success: put_unaligned_le16(0, &to[i]); return i; } @@ -328,6 +350,6 @@ } ctoUTF16_out: - return i; + return j; } --- linux-3.5.0.orig/fs/cifs/cifsglob.h +++ linux-3.5.0/fs/cifs/cifsglob.h @@ -657,13 +657,13 @@ * Take a reference on the file private data. Must be called with * cifs_file_list_lock held. */ -static inline -struct cifsFileInfo *cifsFileInfo_get(struct cifsFileInfo *cifs_file) +static inline void +cifsFileInfo_get_locked(struct cifsFileInfo *cifs_file) { ++cifs_file->count; - return cifs_file; } +struct cifsFileInfo *cifsFileInfo_get(struct cifsFileInfo *cifs_file); void cifsFileInfo_put(struct cifsFileInfo *cifs_file); /* --- linux-3.5.0.orig/fs/cifs/file.c +++ linux-3.5.0/fs/cifs/file.c @@ -284,6 +284,15 @@ static void cifs_del_lock_waiters(struct cifsLockInfo *lock); +struct cifsFileInfo * +cifsFileInfo_get(struct cifsFileInfo *cifs_file) +{ + spin_lock(&cifs_file_list_lock); + cifsFileInfo_get_locked(cifs_file); + spin_unlock(&cifs_file_list_lock); + return cifs_file; +} + /* * Release a reference on the file private data. This may involve closing * the filehandle out on the server. Must be called without holding @@ -1563,7 +1572,7 @@ if (!open_file->invalidHandle) { /* found a good file */ /* lock it so it will not be closed on us */ - cifsFileInfo_get(open_file); + cifsFileInfo_get_locked(open_file); spin_unlock(&cifs_file_list_lock); return open_file; } /* else might as well continue, and look for @@ -1615,7 +1624,7 @@ if (OPEN_FMODE(open_file->f_flags) & FMODE_WRITE) { if (!open_file->invalidHandle) { /* found a good writable file */ - cifsFileInfo_get(open_file); + cifsFileInfo_get_locked(open_file); spin_unlock(&cifs_file_list_lock); return open_file; } else { @@ -1632,7 +1641,7 @@ if (inv_file) { any_available = false; - cifsFileInfo_get(inv_file); + cifsFileInfo_get_locked(inv_file); } spin_unlock(&cifs_file_list_lock); @@ -3082,8 +3091,6 @@ break; } - spin_lock(&cifs_file_list_lock); - spin_unlock(&cifs_file_list_lock); rdata->cfile = cifsFileInfo_get(open_file); rdata->mapping = mapping; rdata->offset = offset; --- linux-3.5.0.orig/fs/cifs/readdir.c +++ linux-3.5.0/fs/cifs/readdir.c @@ -76,6 +76,7 @@ struct dentry *dentry, *alias; struct inode *inode; struct super_block *sb = parent->d_inode->i_sb; + struct cifs_sb_info *cifs_sb = CIFS_SB(sb); cFYI(1, "For %s", name->name); @@ -87,10 +88,20 @@ dentry = d_lookup(parent, name); if (dentry) { inode = dentry->d_inode; - /* update inode in place if i_ino didn't change */ - if (inode && CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { - cifs_fattr_to_inode(inode, fattr); - return dentry; + if (inode) { + /* + * If we're generating inode numbers, then we don't + * want to clobber the existing one with the one that + * the readdir code created. + */ + if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)) + fattr->cf_uniqueid = CIFS_I(inode)->uniqueid; + + /* update inode in place if i_ino didn't change */ + if (CIFS_I(inode)->uniqueid == fattr->cf_uniqueid) { + cifs_fattr_to_inode(inode, fattr); + return dentry; + } } d_drop(dentry); dput(dentry); --- linux-3.5.0.orig/fs/cifs/connect.c +++ linux-3.5.0/fs/cifs/connect.c @@ -70,6 +70,7 @@ /* Mount options that take no arguments */ Opt_user_xattr, Opt_nouser_xattr, Opt_forceuid, Opt_noforceuid, + Opt_forcegid, Opt_noforcegid, Opt_noblocksend, Opt_noautotune, Opt_hard, Opt_soft, Opt_perm, Opt_noperm, Opt_mapchars, Opt_nomapchars, Opt_sfu, @@ -121,6 +122,8 @@ { Opt_nouser_xattr, "nouser_xattr" }, { Opt_forceuid, "forceuid" }, { Opt_noforceuid, "noforceuid" }, + { Opt_forcegid, "forcegid" }, + { Opt_noforcegid, "noforcegid" }, { Opt_noblocksend, "noblocksend" }, { Opt_noautotune, "noautotune" }, { Opt_hard, "hard" }, @@ -238,8 +241,8 @@ enum { Opt_sec_krb5, Opt_sec_krb5i, Opt_sec_krb5p, Opt_sec_ntlmsspi, Opt_sec_ntlmssp, - Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2i, - Opt_sec_nontlm, Opt_sec_lanman, + Opt_ntlm, Opt_sec_ntlmi, Opt_sec_ntlmv2, + Opt_sec_ntlmv2i, Opt_sec_lanman, Opt_sec_none, Opt_sec_err @@ -253,8 +256,9 @@ { Opt_sec_ntlmssp, "ntlmssp" }, { Opt_ntlm, "ntlm" }, { Opt_sec_ntlmi, "ntlmi" }, + { Opt_sec_ntlmv2, "nontlm" }, + { Opt_sec_ntlmv2, "ntlmv2" }, { Opt_sec_ntlmv2i, "ntlmv2i" }, - { Opt_sec_nontlm, "nontlm" }, { Opt_sec_lanman, "lanman" }, { Opt_sec_none, "none" }, @@ -1167,7 +1171,7 @@ case Opt_sec_ntlmi: vol->secFlg |= CIFSSEC_MAY_NTLM | CIFSSEC_MUST_SIGN; break; - case Opt_sec_nontlm: + case Opt_sec_ntlmv2: vol->secFlg |= CIFSSEC_MAY_NTLMV2; break; case Opt_sec_ntlmv2i: @@ -1344,6 +1348,12 @@ case Opt_noforceuid: override_uid = 0; break; + case Opt_forcegid: + override_gid = 1; + break; + case Opt_noforcegid: + override_gid = 0; + break; case Opt_noblocksend: vol->noblocksnd = 1; break; --- linux-3.5.0.orig/fs/cifs/smb1ops.c +++ linux-3.5.0/fs/cifs/smb1ops.c @@ -51,6 +51,13 @@ mutex_unlock(&server->srv_mutex); return rc; } + + /* + * The response to this call was already factored into the sequence + * number when the call went out, so we must adjust it back downward + * after signing here. + */ + --server->sequence_number; rc = smb_send(server, in_buf, be32_to_cpu(in_buf->smb_buf_length)); mutex_unlock(&server->srv_mutex); --- linux-3.5.0.orig/fs/cifs/cifs_dfs_ref.c +++ linux-3.5.0/fs/cifs/cifs_dfs_ref.c @@ -226,6 +226,8 @@ compose_mount_options_err: kfree(mountdata); mountdata = ERR_PTR(rc); + kfree(*devname); + *devname = NULL; goto compose_mount_options_out; } --- linux-3.5.0.orig/fs/nilfs2/super.c +++ linux-3.5.0/fs/nilfs2/super.c @@ -948,6 +948,8 @@ struct nilfs_root *root; int ret; + mutex_lock(&nilfs->ns_snapshot_mount_mutex); + down_read(&nilfs->ns_segctor_sem); ret = nilfs_cpfile_is_snapshot(nilfs->ns_cpfile, cno); up_read(&nilfs->ns_segctor_sem); @@ -972,6 +974,7 @@ ret = nilfs_get_root_dentry(s, root, root_dentry); nilfs_put_root(root); out: + mutex_unlock(&nilfs->ns_snapshot_mount_mutex); return ret; } --- linux-3.5.0.orig/fs/nilfs2/ioctl.c +++ linux-3.5.0/fs/nilfs2/ioctl.c @@ -182,7 +182,7 @@ if (copy_from_user(&cpmode, argp, sizeof(cpmode))) goto out; - down_read(&inode->i_sb->s_umount); + mutex_lock(&nilfs->ns_snapshot_mount_mutex); nilfs_transaction_begin(inode->i_sb, &ti, 0); ret = nilfs_cpfile_change_cpmode( @@ -192,7 +192,7 @@ else nilfs_transaction_commit(inode->i_sb); /* never fails */ - up_read(&inode->i_sb->s_umount); + mutex_unlock(&nilfs->ns_snapshot_mount_mutex); out: mnt_drop_write_file(filp); return ret; @@ -666,8 +666,11 @@ if (ret < 0) printk(KERN_ERR "NILFS: GC failed during preparation: " "cannot read source blocks: err=%d\n", ret); - else + else { + if (nilfs_sb_need_update(nilfs)) + set_nilfs_discontinued(nilfs); ret = nilfs_clean_segments(inode->i_sb, argv, kbufs); + } nilfs_remove_all_gcinodes(nilfs); clear_nilfs_gc_running(nilfs); --- linux-3.5.0.orig/fs/nilfs2/the_nilfs.h +++ linux-3.5.0/fs/nilfs2/the_nilfs.h @@ -47,6 +47,7 @@ * @ns_flags: flags * @ns_bdev: block device * @ns_sem: semaphore for shared states + * @ns_snapshot_mount_mutex: mutex to protect snapshot mounts * @ns_sbh: buffer heads of on-disk super blocks * @ns_sbp: pointers to super block data * @ns_sbwtime: previous write time of super block @@ -99,6 +100,7 @@ struct block_device *ns_bdev; struct rw_semaphore ns_sem; + struct mutex ns_snapshot_mount_mutex; /* * used for --- linux-3.5.0.orig/fs/nilfs2/the_nilfs.c +++ linux-3.5.0/fs/nilfs2/the_nilfs.c @@ -76,6 +76,7 @@ nilfs->ns_bdev = bdev; atomic_set(&nilfs->ns_ndirtyblks, 0); init_rwsem(&nilfs->ns_sem); + mutex_init(&nilfs->ns_snapshot_mount_mutex); INIT_LIST_HEAD(&nilfs->ns_dirty_files); INIT_LIST_HEAD(&nilfs->ns_gc_inodes); spin_lock_init(&nilfs->ns_inode_lock); --- linux-3.5.0.orig/fs/proc/proc_sysctl.c +++ linux-3.5.0/fs/proc/proc_sysctl.c @@ -462,9 +462,6 @@ err = ERR_PTR(-ENOMEM); inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p); - if (h) - sysctl_head_finish(h); - if (!inode) goto out; @@ -473,6 +470,8 @@ d_add(dentry, inode); out: + if (h) + sysctl_head_finish(h); sysctl_head_finish(head); return err; } @@ -796,7 +795,7 @@ static int proc_sys_revalidate(struct dentry *dentry, struct nameidata *nd) { - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; return !PROC_I(dentry->d_inode)->sysctl->unregistering; } --- linux-3.5.0.orig/fs/proc/version_signature.c +++ linux-3.5.0/fs/proc/version_signature.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include + +static int version_signature_proc_show(struct seq_file *m, void *v) +{ + seq_printf(m, "%s\n", CONFIG_VERSION_SIGNATURE); + return 0; +} + +static int version_signature_proc_open(struct inode *inode, struct file *file) +{ + return single_open(file, version_signature_proc_show, NULL); +} + +static const struct file_operations version_signature_proc_fops = { + .open = version_signature_proc_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int __init proc_version_signature_init(void) +{ + proc_create("version_signature", 0, NULL, &version_signature_proc_fops); + return 0; +} +module_init(proc_version_signature_init); --- linux-3.5.0.orig/fs/proc/page.c +++ linux-3.5.0/fs/proc/page.c @@ -115,7 +115,13 @@ u |= 1 << KPF_COMPOUND_TAIL; if (PageHuge(page)) u |= 1 << KPF_HUGE; - else if (PageTransCompound(page)) + /* + * PageTransCompound can be true for non-huge compound pages (slab + * pages or pages allocated by drivers with __GFP_COMP) because it + * just checks PG_head/PG_tail, so we need to check PageLRU to make + * sure a given page is a thp, not a non-huge compound page. + */ + else if (PageTransCompound(page) && PageLRU(compound_trans_head(page))) u |= 1 << KPF_THP; /* --- linux-3.5.0.orig/fs/proc/Makefile +++ linux-3.5.0/fs/proc/Makefile @@ -28,3 +28,4 @@ proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o proc-$(CONFIG_PRINTK) += kmsg.o proc-$(CONFIG_PROC_PAGE_MONITOR) += page.o +proc-y += version_signature.o --- linux-3.5.0.orig/fs/proc/stat.c +++ linux-3.5.0/fs/proc/stat.c @@ -45,10 +45,13 @@ static u64 get_idle_time(int cpu) { - u64 idle, idle_time = get_cpu_idle_time_us(cpu, NULL); + u64 idle, idle_time = -1ULL; + + if (cpu_online(cpu)) + idle_time = get_cpu_idle_time_us(cpu, NULL); if (idle_time == -1ULL) - /* !NO_HZ so we can rely on cpustat.idle */ + /* !NO_HZ or cpu offline so we can rely on cpustat.idle */ idle = kcpustat_cpu(cpu).cpustat[CPUTIME_IDLE]; else idle = usecs_to_cputime64(idle_time); @@ -58,10 +61,13 @@ static u64 get_iowait_time(int cpu) { - u64 iowait, iowait_time = get_cpu_iowait_time_us(cpu, NULL); + u64 iowait, iowait_time = -1ULL; + + if (cpu_online(cpu)) + iowait_time = get_cpu_iowait_time_us(cpu, NULL); if (iowait_time == -1ULL) - /* !NO_HZ so we can rely on cpustat.iowait */ + /* !NO_HZ or cpu offline so we can rely on cpustat.iowait */ iowait = kcpustat_cpu(cpu).cpustat[CPUTIME_IOWAIT]; else iowait = usecs_to_cputime64(iowait_time); --- linux-3.5.0.orig/fs/proc/array.c +++ linux-3.5.0/fs/proc/array.c @@ -212,7 +212,7 @@ group_info = cred->group_info; task_unlock(p); - for (g = 0; g < min(group_info->ngroups, NGROUPS_SMALL); g++) + for (g = 0; g < group_info->ngroups; g++) seq_printf(m, "%d ", from_kgid_munged(user_ns, GROUP_AT(group_info, g))); put_cred(cred); --- linux-3.5.0.orig/fs/ext4/resize.c +++ linux-3.5.0/fs/ext4/resize.c @@ -200,8 +200,11 @@ * be a partial of a flex group. * * @sb: super block of fs to which the groups belongs + * + * Returns 0 on a successful allocation of the metadata blocks in the + * block group. */ -static void ext4_alloc_group_tables(struct super_block *sb, +static int ext4_alloc_group_tables(struct super_block *sb, struct ext4_new_flex_group_data *flex_gd, int flexbg_size) { @@ -226,6 +229,8 @@ (last_group & ~(flexbg_size - 1)))); next_group: group = group_data[0].group; + if (src_group >= group_data[0].group + flex_gd->count) + return -ENOSPC; start_blk = ext4_group_first_block_no(sb, src_group); last_blk = start_blk + group_data[src_group - group].blocks_count; @@ -235,7 +240,6 @@ start_blk += overhead; - BUG_ON(src_group >= group_data[0].group + flex_gd->count); /* We collect contiguous blocks as much as possible. */ src_group++; for (; src_group <= last_group; src_group++) @@ -300,6 +304,7 @@ group_data[i].free_blocks_count); } } + return 0; } static struct buffer_head *bclean(handle_t *handle, struct super_block *sb, @@ -310,7 +315,7 @@ bh = sb_getblk(sb, blk); if (!bh) - return ERR_PTR(-EIO); + return ERR_PTR(-ENOMEM); if ((err = ext4_journal_get_write_access(handle, bh))) { brelse(bh); bh = ERR_PTR(err); @@ -387,7 +392,7 @@ bh = sb_getblk(sb, flex_gd->groups[group].block_bitmap); if (!bh) - return -EIO; + return -ENOMEM; err = ext4_journal_get_write_access(handle, bh); if (err) @@ -451,6 +456,9 @@ gdblocks = ext4_bg_num_gdb(sb, group); start = ext4_group_first_block_no(sb, group); + if (!ext4_bg_has_super(sb, group)) + goto handle_itb; + /* Copy all of the GDT blocks into the backup in this group */ for (j = 0, block = start + 1; j < gdblocks; j++, block++) { struct buffer_head *gdb; @@ -462,7 +470,7 @@ gdb = sb_getblk(sb, block); if (!gdb) { - err = -EIO; + err = -ENOMEM; goto out; } @@ -493,6 +501,7 @@ goto out; } +handle_itb: /* Initialize group tables of the grop @group */ if (!(bg_flags[i] & EXT4_BG_INODE_ZEROED)) goto handle_bb; @@ -970,8 +979,6 @@ goto exit_err; } - ext4_superblock_csum_set(sb, (struct ext4_super_block *)data); - while ((group = ext4_list_backups(sb, &three, &five, &seven)) < last) { struct buffer_head *bh; @@ -984,7 +991,7 @@ bh = sb_getblk(sb, group * bpg + blk_off); if (!bh) { - err = -EIO; + err = -ENOMEM; break; } ext4_debug("update metadata backup %#04lx\n", @@ -1112,8 +1119,7 @@ bh = ext4_get_bitmap(sb, group_data->block_bitmap); if (!bh) return -EIO; - ext4_block_bitmap_csum_set(sb, group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, group, gdp, bh); brelse(bh); return 0; @@ -1197,7 +1203,7 @@ struct ext4_new_group_data *group_data = flex_gd->groups; struct ext4_sb_info *sbi = EXT4_SB(sb); struct ext4_super_block *es = sbi->s_es; - int i; + int i, ret; BUG_ON(flex_gd->count == 0 || group_data == NULL); /* @@ -1272,6 +1278,11 @@ &sbi->s_flex_groups[flex_group].free_inodes); } + /* + * Update the fs overhead information + */ + ext4_calculate_overhead(sb); + if (test_opt(sb, DEBUG)) printk(KERN_DEBUG "EXT4-fs: added group %u:" "%llu blocks(%llu free %llu reserved)\n", flex_gd->count, @@ -1344,13 +1355,15 @@ err = err2; if (!err) { - int i; + int gdb_num = group / EXT4_DESC_PER_BLOCK(sb); + int gdb_num_end = ((group + flex_gd->count - 1) / + EXT4_DESC_PER_BLOCK(sb)); + update_backups(sb, sbi->s_sbh->b_blocknr, (char *)es, sizeof(struct ext4_super_block)); - for (i = 0; i < flex_gd->count; i++, group++) { + for (; gdb_num <= gdb_num_end; gdb_num++) { struct buffer_head *gdb_bh; - int gdb_num; - gdb_num = group / EXT4_BLOCKS_PER_GROUP(sb); + gdb_bh = sbi->s_group_desc[gdb_num]; update_backups(sb, gdb_bh->b_blocknr, gdb_bh->b_data, gdb_bh->b_size); @@ -1724,7 +1737,8 @@ */ while (ext4_setup_next_flex_gd(sb, flex_gd, n_blocks_count, flexbg_size)) { - ext4_alloc_group_tables(sb, flex_gd, flexbg_size); + if (ext4_alloc_group_tables(sb, flex_gd, flexbg_size) != 0) + break; err = ext4_flex_group_add(sb, resize_inode, flex_gd); if (unlikely(err)) break; --- linux-3.5.0.orig/fs/ext4/super.c +++ linux-3.5.0/fs/ext4/super.c @@ -144,9 +144,10 @@ return es->s_checksum == ext4_superblock_csum(sb, es); } -void ext4_superblock_csum_set(struct super_block *sb, - struct ext4_super_block *es) +void ext4_superblock_csum_set(struct super_block *sb) { + struct ext4_super_block *es = EXT4_SB(sb)->s_es; + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) return; @@ -976,6 +977,7 @@ ei->i_reserved_meta_blocks = 0; ei->i_allocated_meta_blocks = 0; ei->i_da_metadata_calc_len = 0; + ei->i_da_metadata_calc_last_lblock = 0; spin_lock_init(&(ei->i_block_reservation_lock)); #ifdef CONFIG_QUOTA ei->i_reserved_quota = 0; @@ -1654,9 +1656,7 @@ unsigned int *journal_ioprio, int is_remount) { -#ifdef CONFIG_QUOTA struct ext4_sb_info *sbi = EXT4_SB(sb); -#endif char *p; substring_t args[MAX_OPT_ARGS]; int token; @@ -1705,6 +1705,16 @@ } } #endif + if (test_opt(sb, DIOREAD_NOLOCK)) { + int blocksize = + BLOCK_SIZE << le32_to_cpu(sbi->s_es->s_log_block_size); + + if (blocksize < PAGE_CACHE_SIZE) { + ext4_msg(sb, KERN_ERR, "can't mount with " + "dioread_nolock if block size != PAGE_SIZE"); + return 0; + } + } return 1; } @@ -1747,7 +1757,7 @@ static const char *token2str(int token) { - static const struct match_token *t; + const struct match_token *t; for (t = tokens; t->token != Opt_err; t++) if (t->token == token && !strchr(t->pattern, '=')) @@ -3085,6 +3095,118 @@ return ret; } +/* + * Note: calculating the overhead so we can be compatible with + * historical BSD practice is quite difficult in the face of + * clusters/bigalloc. This is because multiple metadata blocks from + * different block group can end up in the same allocation cluster. + * Calculating the exact overhead in the face of clustered allocation + * requires either O(all block bitmaps) in memory or O(number of block + * groups**2) in time. We will still calculate the superblock for + * older file systems --- and if we come across with a bigalloc file + * system with zero in s_overhead_clusters the estimate will be close to + * correct especially for very large cluster sizes --- but for newer + * file systems, it's better to calculate this figure once at mkfs + * time, and store it in the superblock. If the superblock value is + * present (even for non-bigalloc file systems), we will use it. + */ +static int count_overhead(struct super_block *sb, ext4_group_t grp, + char *buf) +{ + struct ext4_sb_info *sbi = EXT4_SB(sb); + struct ext4_group_desc *gdp; + ext4_fsblk_t first_block, last_block, b; + ext4_group_t i, ngroups = ext4_get_groups_count(sb); + int s, j, count = 0; + + if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_BIGALLOC)) + return (ext4_bg_has_super(sb, grp) + ext4_bg_num_gdb(sb, grp) + + sbi->s_itb_per_group + 2); + + first_block = le32_to_cpu(sbi->s_es->s_first_data_block) + + (grp * EXT4_BLOCKS_PER_GROUP(sb)); + last_block = first_block + EXT4_BLOCKS_PER_GROUP(sb) - 1; + for (i = 0; i < ngroups; i++) { + gdp = ext4_get_group_desc(sb, i, NULL); + b = ext4_block_bitmap(sb, gdp); + if (b >= first_block && b <= last_block) { + ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); + count++; + } + b = ext4_inode_bitmap(sb, gdp); + if (b >= first_block && b <= last_block) { + ext4_set_bit(EXT4_B2C(sbi, b - first_block), buf); + count++; + } + b = ext4_inode_table(sb, gdp); + if (b >= first_block && b + sbi->s_itb_per_group <= last_block) + for (j = 0; j < sbi->s_itb_per_group; j++, b++) { + int c = EXT4_B2C(sbi, b - first_block); + ext4_set_bit(c, buf); + count++; + } + if (i != grp) + continue; + s = 0; + if (ext4_bg_has_super(sb, grp)) { + ext4_set_bit(s++, buf); + count++; + } + for (j = ext4_bg_num_gdb(sb, grp); j > 0; j--) { + ext4_set_bit(EXT4_B2C(sbi, s++), buf); + count++; + } + } + if (!count) + return 0; + return EXT4_CLUSTERS_PER_GROUP(sb) - + ext4_count_free(buf, EXT4_CLUSTERS_PER_GROUP(sb) / 8); +} + +/* + * Compute the overhead and stash it in sbi->s_overhead + */ +int ext4_calculate_overhead(struct super_block *sb) +{ + struct ext4_sb_info *sbi = EXT4_SB(sb); + struct ext4_super_block *es = sbi->s_es; + ext4_group_t i, ngroups = ext4_get_groups_count(sb); + ext4_fsblk_t overhead = 0; + char *buf = (char *) get_zeroed_page(GFP_KERNEL); + + memset(buf, 0, PAGE_SIZE); + if (!buf) + return -ENOMEM; + + /* + * Compute the overhead (FS structures). This is constant + * for a given filesystem unless the number of block groups + * changes so we cache the previous value until it does. + */ + + /* + * All of the blocks before first_data_block are overhead + */ + overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block)); + + /* + * Add the overhead found in each block group + */ + for (i = 0; i < ngroups; i++) { + int blks; + + blks = count_overhead(sb, i, buf); + overhead += blks; + if (blks) + memset(buf, 0, PAGE_SIZE); + cond_resched(); + } + sbi->s_overhead = overhead; + smp_wmb(); + free_page((unsigned long) buf); + return 0; +} + static int ext4_fill_super(struct super_block *sb, void *data, int silent) { char *orig_data = kstrdup(data, GFP_KERNEL); @@ -3296,15 +3418,6 @@ clear_opt(sb, DELALLOC); } - blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); - if (test_opt(sb, DIOREAD_NOLOCK)) { - if (blocksize < PAGE_SIZE) { - ext4_msg(sb, KERN_ERR, "can't mount with " - "dioread_nolock if block size != PAGE_SIZE"); - goto failed_mount; - } - } - sb->s_flags = (sb->s_flags & ~MS_POSIXACL) | (test_opt(sb, POSIX_ACL) ? MS_POSIXACL : 0); @@ -3346,6 +3459,7 @@ if (!ext4_feature_set_ok(sb, (sb->s_flags & MS_RDONLY))) goto failed_mount; + blocksize = BLOCK_SIZE << le32_to_cpu(es->s_log_block_size); if (blocksize < EXT4_MIN_BLOCK_SIZE || blocksize > EXT4_MAX_BLOCK_SIZE) { ext4_msg(sb, KERN_ERR, @@ -3735,6 +3849,18 @@ no_journal: /* + * Get the # of file system overhead blocks from the + * superblock if present. + */ + if (es->s_overhead_clusters) + sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters); + else { + ret = ext4_calculate_overhead(sb); + if (ret) + goto failed_mount_wq; + } + + /* * The maximum number of concurrent works can be high and * concurrency isn't really necessary. Limit it to 1. */ @@ -4205,7 +4331,7 @@ &EXT4_SB(sb)->s_freeinodes_counter)); sb->s_dirt = 0; BUFFER_TRACE(sbh, "marking dirty"); - ext4_superblock_csum_set(sb, es); + ext4_superblock_csum_set(sb); mark_buffer_dirty(sbh); if (sync) { error = sync_dirty_buffer(sbh); @@ -4286,6 +4412,7 @@ ext4_commit_super(sb, 1); jbd2_journal_clear_err(journal); + jbd2_journal_update_sb_errno(journal); } } @@ -4559,7 +4686,7 @@ } ext4_setup_system_zone(sb); - if (sbi->s_journal == NULL) + if (sbi->s_journal == NULL && !(old_sb_flags & MS_RDONLY)) ext4_commit_super(sb, 1); #ifdef CONFIG_QUOTA @@ -4600,67 +4727,21 @@ return err; } -/* - * Note: calculating the overhead so we can be compatible with - * historical BSD practice is quite difficult in the face of - * clusters/bigalloc. This is because multiple metadata blocks from - * different block group can end up in the same allocation cluster. - * Calculating the exact overhead in the face of clustered allocation - * requires either O(all block bitmaps) in memory or O(number of block - * groups**2) in time. We will still calculate the superblock for - * older file systems --- and if we come across with a bigalloc file - * system with zero in s_overhead_clusters the estimate will be close to - * correct especially for very large cluster sizes --- but for newer - * file systems, it's better to calculate this figure once at mkfs - * time, and store it in the superblock. If the superblock value is - * present (even for non-bigalloc file systems), we will use it. - */ static int ext4_statfs(struct dentry *dentry, struct kstatfs *buf) { struct super_block *sb = dentry->d_sb; struct ext4_sb_info *sbi = EXT4_SB(sb); struct ext4_super_block *es = sbi->s_es; - struct ext4_group_desc *gdp; + ext4_fsblk_t overhead = 0; u64 fsid; s64 bfree; - if (test_opt(sb, MINIX_DF)) { - sbi->s_overhead_last = 0; - } else if (es->s_overhead_clusters) { - sbi->s_overhead_last = le32_to_cpu(es->s_overhead_clusters); - } else if (sbi->s_blocks_last != ext4_blocks_count(es)) { - ext4_group_t i, ngroups = ext4_get_groups_count(sb); - ext4_fsblk_t overhead = 0; - - /* - * Compute the overhead (FS structures). This is constant - * for a given filesystem unless the number of block groups - * changes so we cache the previous value until it does. - */ - - /* - * All of the blocks before first_data_block are - * overhead - */ - overhead = EXT4_B2C(sbi, le32_to_cpu(es->s_first_data_block)); - - /* - * Add the overhead found in each block group - */ - for (i = 0; i < ngroups; i++) { - gdp = ext4_get_group_desc(sb, i, NULL); - overhead += ext4_num_overhead_clusters(sb, i, gdp); - cond_resched(); - } - sbi->s_overhead_last = overhead; - smp_wmb(); - sbi->s_blocks_last = ext4_blocks_count(es); - } + if (!test_opt(sb, MINIX_DF)) + overhead = sbi->s_overhead; buf->f_type = EXT4_SUPER_MAGIC; buf->f_bsize = sb->s_blocksize; - buf->f_blocks = (ext4_blocks_count(es) - - EXT4_C2B(sbi, sbi->s_overhead_last)); + buf->f_blocks = ext4_blocks_count(es) - EXT4_C2B(sbi, sbi->s_overhead); bfree = percpu_counter_sum_positive(&sbi->s_freeclusters_counter) - percpu_counter_sum_positive(&sbi->s_dirtyclusters_counter); /* prevent underflow in case that few free space is available */ --- linux-3.5.0.orig/fs/ext4/mmp.c +++ linux-3.5.0/fs/ext4/mmp.c @@ -74,6 +74,8 @@ * is not blocked in the elevator. */ if (!*bh) *bh = sb_getblk(sb, mmp_block); + if (!*bh) + return -ENOMEM; if (*bh) { get_bh(*bh); lock_buffer(*bh); --- linux-3.5.0.orig/fs/ext4/ialloc.c +++ linux-3.5.0/fs/ext4/ialloc.c @@ -717,6 +717,10 @@ "inode=%lu", ino + 1); continue; } + BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); + err = ext4_journal_get_write_access(handle, inode_bitmap_bh); + if (err) + goto fail; ext4_lock_group(sb, group); ret2 = ext4_test_and_set_bit(ino, inode_bitmap_bh->b_data); ext4_unlock_group(sb, group); @@ -730,6 +734,11 @@ goto out; got: + BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); + err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); + if (err) + goto fail; + /* We may have to initialize the block bitmap if it isn't already */ if (ext4_has_group_desc_csum(sb) && gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)) { @@ -745,7 +754,6 @@ BUFFER_TRACE(block_bitmap_bh, "dirty block bitmap"); err = ext4_handle_dirty_metadata(handle, NULL, block_bitmap_bh); - brelse(block_bitmap_bh); /* recheck and clear flag under lock if we still need to */ ext4_lock_group(sb, group); @@ -754,22 +762,16 @@ ext4_free_group_clusters_set(sb, gdp, ext4_free_clusters_after_init(sb, group, gdp)); ext4_block_bitmap_csum_set(sb, group, gdp, - block_bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / - 8); + block_bitmap_bh); ext4_group_desc_csum_set(sb, group, gdp); } ext4_unlock_group(sb, group); + brelse(block_bitmap_bh); if (err) goto fail; } - BUFFER_TRACE(inode_bitmap_bh, "get_write_access"); - err = ext4_journal_get_write_access(handle, inode_bitmap_bh); - if (err) - goto fail; - BUFFER_TRACE(group_desc_bh, "get_write_access"); err = ext4_journal_get_write_access(handle, group_desc_bh); if (err) @@ -817,11 +819,6 @@ } ext4_unlock_group(sb, group); - BUFFER_TRACE(inode_bitmap_bh, "call ext4_handle_dirty_metadata"); - err = ext4_handle_dirty_metadata(handle, NULL, inode_bitmap_bh); - if (err) - goto fail; - BUFFER_TRACE(group_desc_bh, "call ext4_handle_dirty_metadata"); err = ext4_handle_dirty_metadata(handle, NULL, group_desc_bh); if (err) @@ -1054,7 +1051,8 @@ if (!bitmap_bh) continue; - x = ext4_count_free(bitmap_bh, EXT4_INODES_PER_GROUP(sb) / 8); + x = ext4_count_free(bitmap_bh->b_data, + EXT4_INODES_PER_GROUP(sb) / 8); printk(KERN_DEBUG "group %lu: stored = %d, counted = %lu\n", (unsigned long) i, ext4_free_inodes_count(sb, gdp), x); bitmap_count += x; --- linux-3.5.0.orig/fs/ext4/ext4.h +++ linux-3.5.0/fs/ext4/ext4.h @@ -1161,8 +1161,7 @@ unsigned long s_desc_per_block; /* Number of group descriptors per block */ ext4_group_t s_groups_count; /* Number of groups in the fs */ ext4_group_t s_blockfile_groups;/* Groups acceptable for non-extent files */ - unsigned long s_overhead_last; /* Last calculated overhead */ - unsigned long s_blocks_last; /* Last seen block count */ + unsigned long s_overhead; /* # of fs overhead clusters */ unsigned int s_cluster_ratio; /* Number of blocks per cluster */ unsigned int s_cluster_bits; /* log2 of s_cluster_ratio */ loff_t s_bitmap_maxbytes; /* max bytes for bitmap files */ @@ -1852,7 +1851,7 @@ # define NORET_AND noreturn, /* bitmap.c */ -extern unsigned int ext4_count_free(struct buffer_head *, unsigned); +extern unsigned int ext4_count_free(char *bitmap, unsigned numchars); void ext4_inode_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz); @@ -1861,10 +1860,10 @@ struct buffer_head *bh, int sz); void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz); + struct buffer_head *bh); int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz); + struct buffer_head *bh); /* balloc.c */ extern void ext4_validate_block_bitmap(struct super_block *sb, @@ -2037,10 +2036,10 @@ extern int ext4_resize_fs(struct super_block *sb, ext4_fsblk_t n_blocks_count); /* super.c */ +extern int ext4_calculate_overhead(struct super_block *sb); extern int ext4_superblock_csum_verify(struct super_block *sb, struct ext4_super_block *es); -extern void ext4_superblock_csum_set(struct super_block *sb, - struct ext4_super_block *es); +extern void ext4_superblock_csum_set(struct super_block *sb); extern void *ext4_kvmalloc(size_t size, gfp_t flags); extern void *ext4_kvzalloc(size_t size, gfp_t flags); extern void ext4_kvfree(void *ptr); @@ -2323,9 +2322,7 @@ static inline void ext4_mark_super_dirty(struct super_block *sb) { - struct ext4_super_block *es = EXT4_SB(sb)->s_es; - - ext4_superblock_csum_set(sb, es); + ext4_superblock_csum_set(sb); if (EXT4_SB(sb)->s_journal == NULL) sb->s_dirt =1; } --- linux-3.5.0.orig/fs/ext4/mballoc.c +++ linux-3.5.0/fs/ext4/mballoc.c @@ -2798,8 +2798,7 @@ } len = ext4_free_group_clusters(sb, gdp) - ac->ac_b_ex.fe_len; ext4_free_group_clusters_set(sb, gdp, len); - ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, ac->ac_b_ex.fe_group, gdp, bitmap_bh); ext4_group_desc_csum_set(sb, ac->ac_b_ex.fe_group, gdp); ext4_unlock_group(sb, ac->ac_b_ex.fe_group); @@ -4124,7 +4123,7 @@ /* The max size of hash table is PREALLOC_TB_SIZE */ order = PREALLOC_TB_SIZE - 1; /* Add the prealloc space to lg */ - rcu_read_lock(); + spin_lock(&lg->lg_prealloc_lock); list_for_each_entry_rcu(tmp_pa, &lg->lg_prealloc_list[order], pa_inode_list) { spin_lock(&tmp_pa->pa_lock); @@ -4148,12 +4147,12 @@ if (!added) list_add_tail_rcu(&pa->pa_inode_list, &lg->lg_prealloc_list[order]); - rcu_read_unlock(); + spin_unlock(&lg->lg_prealloc_lock); /* Now trim the list to be not more than 8 elements */ if (lg_prealloc_count > 8) { ext4_mb_discard_lg_preallocations(sb, lg, - order, lg_prealloc_count); + order, lg_prealloc_count); return; } return ; @@ -4659,8 +4658,7 @@ ret = ext4_free_group_clusters(sb, gdp) + count_clusters; ext4_free_group_clusters_set(sb, gdp, ret); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bitmap_bh); ext4_group_desc_csum_set(sb, block_group, gdp); ext4_unlock_group(sb, block_group); percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters); @@ -4805,8 +4803,7 @@ mb_free_blocks(NULL, &e4b, bit, count); blk_free_count = blocks_freed + ext4_free_group_clusters(sb, desc); ext4_free_group_clusters_set(sb, desc, blk_free_count); - ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, desc, bitmap_bh); ext4_group_desc_csum_set(sb, block_group, desc); ext4_unlock_group(sb, block_group); percpu_counter_add(&sbi->s_freeclusters_counter, @@ -4986,8 +4983,9 @@ end = start + (range->len >> sb->s_blocksize_bits) - 1; minlen = range->minlen >> sb->s_blocksize_bits; - if (unlikely(minlen > EXT4_CLUSTERS_PER_GROUP(sb)) || - unlikely(start >= max_blks)) + if (minlen > EXT4_CLUSTERS_PER_GROUP(sb) || + start >= max_blks || + range->len < sb->s_blocksize) return -EINVAL; if (end >= max_blks) end = max_blks - 1; --- linux-3.5.0.orig/fs/ext4/namei.c +++ linux-3.5.0/fs/ext4/namei.c @@ -706,7 +706,7 @@ ext4_warning(dir->i_sb, "Node failed checksum"); brelse(bh); *err = ERR_BAD_DX_DIR; - goto fail; + goto fail2; } set_buffer_verified(bh); @@ -2149,9 +2149,7 @@ err = PTR_ERR(inode); if (!IS_ERR(inode)) { init_special_inode(inode, inode->i_mode, rdev); -#ifdef CONFIG_EXT4_FS_XATTR inode->i_op = &ext4_special_inode_operations; -#endif err = ext4_add_nondir(handle, dentry, inode); } ext4_journal_stop(handle); @@ -2918,8 +2916,15 @@ PARENT_INO(dir_bh->b_data, new_dir->i_sb->s_blocksize) = cpu_to_le32(new_dir->i_ino); BUFFER_TRACE(dir_bh, "call ext4_handle_dirty_metadata"); - retval = ext4_handle_dirty_dirent_node(handle, old_inode, - dir_bh); + if (is_dx(old_inode)) { + retval = ext4_handle_dirty_dx_node(handle, + old_inode, + dir_bh); + } else { + retval = ext4_handle_dirty_dirent_node(handle, + old_inode, + dir_bh); + } if (retval) { ext4_std_error(old_dir->i_sb, retval); goto end_rename; --- linux-3.5.0.orig/fs/ext4/acl.c +++ linux-3.5.0/fs/ext4/acl.c @@ -410,8 +410,10 @@ retry: handle = ext4_journal_start(inode, EXT4_DATA_TRANS_BLOCKS(inode->i_sb)); - if (IS_ERR(handle)) - return PTR_ERR(handle); + if (IS_ERR(handle)) { + error = PTR_ERR(handle); + goto release_and_out; + } error = ext4_set_acl(handle, inode, type, acl); ext4_journal_stop(handle); if (error == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) --- linux-3.5.0.orig/fs/ext4/inode.c +++ linux-3.5.0/fs/ext4/inode.c @@ -346,6 +346,15 @@ used = ei->i_reserved_data_blocks; } + if (unlikely(ei->i_allocated_meta_blocks > ei->i_reserved_meta_blocks)) { + ext4_msg(inode->i_sb, KERN_NOTICE, "%s: ino %lu, allocated %d " + "with only %d reserved metadata blocks\n", __func__, + inode->i_ino, ei->i_allocated_meta_blocks, + ei->i_reserved_meta_blocks); + WARN_ON(1); + ei->i_allocated_meta_blocks = ei->i_reserved_meta_blocks; + } + /* Update per-inode reservations */ ei->i_reserved_data_blocks -= used; ei->i_reserved_meta_blocks -= ei->i_allocated_meta_blocks; @@ -721,7 +730,7 @@ bh = sb_getblk(inode->i_sb, map.m_pblk); if (!bh) { - *errp = -EIO; + *errp = -ENOMEM; return NULL; } if (map.m_flags & EXT4_MAP_NEW) { @@ -1171,6 +1180,17 @@ struct ext4_inode_info *ei = EXT4_I(inode); unsigned int md_needed; int ret; + ext4_lblk_t save_last_lblock; + int save_len; + + /* + * We will charge metadata quota at writeout time; this saves + * us from metadata over-estimation, though we may go over by + * a small amount in the end. Here we just reserve for data. + */ + ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1)); + if (ret) + return ret; /* * recalculate the amount of metadata blocks to reserve @@ -1179,32 +1199,31 @@ */ repeat: spin_lock(&ei->i_block_reservation_lock); + /* + * ext4_calc_metadata_amount() has side effects, which we have + * to be prepared undo if we fail to claim space. + */ + save_len = ei->i_da_metadata_calc_len; + save_last_lblock = ei->i_da_metadata_calc_last_lblock; md_needed = EXT4_NUM_B2C(sbi, ext4_calc_metadata_amount(inode, lblock)); trace_ext4_da_reserve_space(inode, md_needed); - spin_unlock(&ei->i_block_reservation_lock); /* - * We will charge metadata quota at writeout time; this saves - * us from metadata over-estimation, though we may go over by - * a small amount in the end. Here we just reserve for data. - */ - ret = dquot_reserve_block(inode, EXT4_C2B(sbi, 1)); - if (ret) - return ret; - /* * We do still charge estimated metadata to the sb though; * we cannot afford to run out of free blocks. */ if (ext4_claim_free_clusters(sbi, md_needed + 1, 0)) { - dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); + ei->i_da_metadata_calc_len = save_len; + ei->i_da_metadata_calc_last_lblock = save_last_lblock; + spin_unlock(&ei->i_block_reservation_lock); if (ext4_should_retry_alloc(inode->i_sb, &retries)) { yield(); goto repeat; } + dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1)); return -ENOSPC; } - spin_lock(&ei->i_block_reservation_lock); ei->i_reserved_data_blocks++; ei->i_reserved_meta_blocks += md_needed; spin_unlock(&ei->i_block_reservation_lock); @@ -1472,6 +1491,8 @@ index = mpd->first_page; end = mpd->next_page - 1; + + pagevec_init(&pvec, 0); while (index <= end) { nr_pages = pagevec_lookup(&pvec, mapping, index, PAGEVEC_SIZE); if (nr_pages == 0) @@ -2434,6 +2455,16 @@ free_blocks = EXT4_C2B(sbi, percpu_counter_read_positive(&sbi->s_freeclusters_counter)); dirty_blocks = percpu_counter_read_positive(&sbi->s_dirtyclusters_counter); + /* + * Start pushing delalloc when 1/2 of free blocks are dirty. + */ + if (dirty_blocks && (free_blocks < 2 * dirty_blocks) && + !writeback_in_progress(sb->s_bdi) && + down_read_trylock(&sb->s_umount)) { + writeback_inodes_sb(sb, WB_REASON_FS_FREE_SPACE); + up_read(&sb->s_umount); + } + if (2 * free_blocks < 3 * dirty_blocks || free_blocks < (dirty_blocks + EXT4_FREECLUSTERS_WATERMARK)) { /* @@ -2442,13 +2473,6 @@ */ return 1; } - /* - * Even if we don't switch but are nearing capacity, - * start pushing delalloc when 1/2 of free blocks are dirty. - */ - if (free_blocks < 2 * dirty_blocks) - writeback_inodes_sb_if_idle(sb, WB_REASON_FS_FREE_SPACE); - return 0; } @@ -2843,9 +2867,9 @@ if (!(io_end->flag & EXT4_IO_END_UNWRITTEN)) { ext4_free_io_end(io_end); out: + inode_dio_done(inode); if (is_async) aio_complete(iocb, ret, 0); - inode_dio_done(inode); return; } @@ -3504,11 +3528,8 @@ iloc->offset = (inode_offset % inodes_per_block) * EXT4_INODE_SIZE(sb); bh = sb_getblk(sb, block); - if (!bh) { - EXT4_ERROR_INODE_BLOCK(inode, block, - "unable to read itable block"); - return -EIO; - } + if (!bh) + return -ENOMEM; if (!buffer_uptodate(bh)) { lock_buffer(bh); @@ -3966,6 +3987,7 @@ struct ext4_inode_info *ei = EXT4_I(inode); struct buffer_head *bh = iloc->bh; int err = 0, rc, block; + int need_datasync = 0; uid_t i_uid; gid_t i_gid; @@ -4016,7 +4038,10 @@ raw_inode->i_file_acl_high = cpu_to_le16(ei->i_file_acl >> 32); raw_inode->i_file_acl_lo = cpu_to_le32(ei->i_file_acl); - ext4_isize_set(raw_inode, ei->i_disksize); + if (ei->i_disksize != ext4_isize(raw_inode)) { + ext4_isize_set(raw_inode, ei->i_disksize); + need_datasync = 1; + } if (ei->i_disksize > 0x7fffffffULL) { struct super_block *sb = inode->i_sb; if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, @@ -4069,7 +4094,7 @@ err = rc; ext4_clear_inode_state(inode, EXT4_STATE_NEW); - ext4_update_inode_fsync_trans(handle, inode, 0); + ext4_update_inode_fsync_trans(handle, inode, need_datasync); out_brelse: brelse(bh); ext4_std_error(inode->i_sb, err); --- linux-3.5.0.orig/fs/ext4/page-io.c +++ linux-3.5.0/fs/ext4/page-io.c @@ -106,15 +106,13 @@ "(inode %lu, offset %llu, size %zd, error %d)", inode->i_ino, offset, size, ret); } - - if (io->iocb) - aio_complete(io->iocb, io->result, 0); - - if (io->flag & EXT4_IO_END_DIRECT) - inode_dio_done(inode); /* Wake up anyone waiting on unwritten extent conversion */ if (atomic_dec_and_test(&EXT4_I(inode)->i_aiodio_unwritten)) wake_up_all(ext4_ioend_wq(io->inode)); + if (io->flag & EXT4_IO_END_DIRECT) + inode_dio_done(inode); + if (io->iocb) + aio_complete(io->iocb, io->result, 0); return ret; } --- linux-3.5.0.orig/fs/ext4/bitmap.c +++ linux-3.5.0/fs/ext4/bitmap.c @@ -11,24 +11,18 @@ #include #include "ext4.h" -#ifdef EXT4FS_DEBUG - static const int nibblemap[] = {4, 3, 3, 2, 3, 2, 2, 1, 3, 2, 2, 1, 2, 1, 1, 0}; -unsigned int ext4_count_free(struct buffer_head *map, unsigned int numchars) +unsigned int ext4_count_free(char *bitmap, unsigned int numchars) { unsigned int i, sum = 0; - if (!map) - return 0; for (i = 0; i < numchars; i++) - sum += nibblemap[map->b_data[i] & 0xf] + - nibblemap[(map->b_data[i] >> 4) & 0xf]; + sum += nibblemap[bitmap[i] & 0xf] + + nibblemap[(bitmap[i] >> 4) & 0xf]; return sum; } -#endif /* EXT4FS_DEBUG */ - int ext4_inode_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, struct buffer_head *bh, int sz) @@ -71,11 +65,12 @@ int ext4_block_bitmap_csum_verify(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz) + struct buffer_head *bh) { __u32 hi; __u32 provided, calculated; struct ext4_sb_info *sbi = EXT4_SB(sb); + int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; if (!EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_METADATA_CSUM)) @@ -92,14 +87,14 @@ if (provided == calculated) return 1; - ext4_error(sb, "Bad block bitmap checksum: block_group = %u", group); return 0; } void ext4_block_bitmap_csum_set(struct super_block *sb, ext4_group_t group, struct ext4_group_desc *gdp, - struct buffer_head *bh, int sz) + struct buffer_head *bh) { + int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8; __u32 csum; struct ext4_sb_info *sbi = EXT4_SB(sb); --- linux-3.5.0.orig/fs/ext4/xattr.c +++ linux-3.5.0/fs/ext4/xattr.c @@ -127,19 +127,16 @@ struct ext4_xattr_header *hdr) { struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); - struct ext4_inode_info *ei = EXT4_I(inode); __u32 csum, old; old = hdr->h_checksum; hdr->h_checksum = 0; - if (le32_to_cpu(hdr->h_refcount) != 1) { - block_nr = cpu_to_le64(block_nr); - csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&block_nr, - sizeof(block_nr)); - } else - csum = ei->i_csum_seed; + block_nr = cpu_to_le64(block_nr); + csum = ext4_chksum(sbi, sbi->s_csum_seed, (__u8 *)&block_nr, + sizeof(block_nr)); csum = ext4_chksum(sbi, csum, (__u8 *)hdr, EXT4_BLOCK_SIZE(inode->i_sb)); + hdr->h_checksum = old; return cpu_to_le32(csum); } @@ -557,7 +554,7 @@ error = ext4_handle_dirty_xattr_block(handle, inode, bh); if (IS_SYNC(inode)) ext4_handle_sync(handle); - dquot_free_block(inode, 1); + dquot_free_block(inode, EXT4_C2B(EXT4_SB(inode->i_sb), 1)); ea_bdebug(bh, "refcount now=%d; releasing", le32_to_cpu(BHDR(bh)->h_refcount)); } @@ -846,7 +843,8 @@ else { /* The old block is released after updating the inode. */ - error = dquot_alloc_block(inode, 1); + error = dquot_alloc_block(inode, + EXT4_C2B(EXT4_SB(sb), 1)); if (error) goto cleanup; error = ext4_journal_get_write_access(handle, @@ -901,16 +899,17 @@ new_bh = sb_getblk(sb, block); if (!new_bh) { + error = -ENOMEM; getblk_failed: ext4_free_blocks(handle, inode, NULL, block, 1, EXT4_FREE_BLOCKS_METADATA); - error = -EIO; goto cleanup; } lock_buffer(new_bh); error = ext4_journal_get_create_access(handle, new_bh); if (error) { unlock_buffer(new_bh); + error = -EIO; goto getblk_failed; } memcpy(new_bh->b_data, s->base, new_bh->b_size); @@ -942,7 +941,7 @@ return error; cleanup_dquot: - dquot_free_block(inode, 1); + dquot_free_block(inode, EXT4_C2B(EXT4_SB(sb), 1)); goto cleanup; bad_block: --- linux-3.5.0.orig/fs/ext4/indirect.c +++ linux-3.5.0/fs/ext4/indirect.c @@ -145,6 +145,7 @@ struct super_block *sb = inode->i_sb; Indirect *p = chain; struct buffer_head *bh; + int ret = -EIO; *err = 0; /* i_data is not going away, no lock needed */ @@ -153,8 +154,10 @@ goto no_block; while (--depth) { bh = sb_getblk(sb, le32_to_cpu(p->key)); - if (unlikely(!bh)) + if (unlikely(!bh)) { + ret = -ENOMEM; goto failure; + } if (!bh_uptodate_or_lock(bh)) { if (bh_submit_read(bh) < 0) { @@ -176,7 +179,7 @@ return NULL; failure: - *err = -EIO; + *err = ret; no_block: return p; } @@ -470,7 +473,7 @@ */ bh = sb_getblk(inode->i_sb, new_blocks[n-1]); if (unlikely(!bh)) { - err = -EIO; + err = -ENOMEM; goto failed; } --- linux-3.5.0.orig/fs/ext4/extents.c +++ linux-3.5.0/fs/ext4/extents.c @@ -52,6 +52,9 @@ #define EXT4_EXT_MARK_UNINIT1 0x2 /* mark first half uninitialized */ #define EXT4_EXT_MARK_UNINIT2 0x4 /* mark second half uninitialized */ +#define EXT4_EXT_DATA_VALID1 0x8 /* first half contains valid data */ +#define EXT4_EXT_DATA_VALID2 0x10 /* second half contains valid data */ + static __le32 ext4_extent_block_csum(struct inode *inode, struct ext4_extent_header *eh) { @@ -717,6 +720,7 @@ struct ext4_extent_header *eh; struct buffer_head *bh; short int depth, i, ppos = 0, alloc = 0; + int ret; eh = ext_inode_hdr(inode); depth = ext_depth(inode); @@ -744,12 +748,15 @@ path[ppos].p_ext = NULL; bh = sb_getblk(inode->i_sb, path[ppos].p_block); - if (unlikely(!bh)) + if (unlikely(!bh)) { + ret = -ENOMEM; goto err; + } if (!bh_uptodate_or_lock(bh)) { trace_ext4_ext_load_extent(inode, block, path[ppos].p_block); - if (bh_submit_read(bh) < 0) { + ret = bh_submit_read(bh); + if (ret < 0) { put_bh(bh); goto err; } @@ -760,13 +767,15 @@ put_bh(bh); EXT4_ERROR_INODE(inode, "ppos %d > depth %d", ppos, depth); + ret = -EIO; goto err; } path[ppos].p_bh = bh; path[ppos].p_hdr = eh; i--; - if (ext4_ext_check_block(inode, eh, i, bh)) + ret = ext4_ext_check_block(inode, eh, i, bh); + if (ret < 0) goto err; } @@ -788,7 +797,7 @@ ext4_ext_drop_refs(path); if (alloc) kfree(path); - return ERR_PTR(-EIO); + return ERR_PTR(ret); } /* @@ -943,7 +952,7 @@ } bh = sb_getblk(inode->i_sb, newblock); if (!bh) { - err = -EIO; + err = -ENOMEM; goto cleanup; } lock_buffer(bh); @@ -1016,7 +1025,7 @@ newblock = ablocks[--a]; bh = sb_getblk(inode->i_sb, newblock); if (!bh) { - err = -EIO; + err = -ENOMEM; goto cleanup; } lock_buffer(bh); @@ -1128,11 +1137,8 @@ return err; bh = sb_getblk(inode->i_sb, newblock); - if (!bh) { - err = -EIO; - ext4_std_error(inode->i_sb, err); - return err; - } + if (!bh) + return -ENOMEM; lock_buffer(bh); err = ext4_journal_get_create_access(handle, bh); @@ -2174,13 +2180,14 @@ * removes index from the index block. */ static int ext4_ext_rm_idx(handle_t *handle, struct inode *inode, - struct ext4_ext_path *path) + struct ext4_ext_path *path, int depth) { int err; ext4_fsblk_t leaf; /* free index block */ - path--; + depth--; + path = path + depth; leaf = ext4_idx_pblock(path->p_idx); if (unlikely(path->p_hdr->eh_entries == 0)) { EXT4_ERROR_INODE(inode, "path->p_hdr->eh_entries == 0"); @@ -2205,6 +2212,19 @@ ext4_free_blocks(handle, inode, NULL, leaf, 1, EXT4_FREE_BLOCKS_METADATA | EXT4_FREE_BLOCKS_FORGET); + + while (--depth >= 0) { + if (path->p_idx != EXT_FIRST_INDEX(path->p_hdr)) + break; + path--; + err = ext4_ext_get_access(handle, inode, path); + if (err) + break; + path->p_idx->ei_block = (path+1)->p_idx->ei_block; + err = ext4_ext_dirty(handle, inode, path); + if (err) + break; + } return err; } @@ -2538,7 +2558,7 @@ /* if this leaf is free, then we should * remove it from index block above */ if (err == 0 && eh->eh_entries == 0 && path[depth].p_bh != NULL) - err = ext4_ext_rm_idx(handle, inode, path + depth); + err = ext4_ext_rm_idx(handle, inode, path, depth); out: return err; @@ -2570,10 +2590,10 @@ { struct super_block *sb = inode->i_sb; int depth = ext_depth(inode); - struct ext4_ext_path *path; + struct ext4_ext_path *path = NULL; ext4_fsblk_t partial_cluster = 0; handle_t *handle; - int i, err; + int i = 0, err; ext_debug("truncate since %u to %u\n", start, end); @@ -2606,8 +2626,12 @@ } depth = ext_depth(inode); ex = path[depth].p_ext; - if (!ex) + if (!ex) { + ext4_ext_drop_refs(path); + kfree(path); + path = NULL; goto cont; + } ee_block = le32_to_cpu(ex->ee_block); @@ -2637,8 +2661,6 @@ if (err < 0) goto out; } - ext4_ext_drop_refs(path); - kfree(path); } cont: @@ -2647,19 +2669,28 @@ * after i_size and walking into the tree depth-wise. */ depth = ext_depth(inode); - path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), GFP_NOFS); - if (path == NULL) { - ext4_journal_stop(handle); - return -ENOMEM; - } - path[0].p_depth = depth; - path[0].p_hdr = ext_inode_hdr(inode); + if (path) { + int k = i = depth; + while (--k > 0) + path[k].p_block = + le16_to_cpu(path[k].p_hdr->eh_entries)+1; + } else { + path = kzalloc(sizeof(struct ext4_ext_path) * (depth + 1), + GFP_NOFS); + if (path == NULL) { + ext4_journal_stop(handle); + return -ENOMEM; + } + path[0].p_depth = depth; + path[0].p_hdr = ext_inode_hdr(inode); + i = 0; - if (ext4_ext_check(inode, path[0].p_hdr, depth)) { - err = -EIO; - goto out; + if (ext4_ext_check(inode, path[0].p_hdr, depth)) { + err = -EIO; + goto out; + } } - i = err = 0; + err = 0; while (i >= 0 && err == 0) { if (i == depth) { @@ -2728,7 +2759,7 @@ /* index is empty, remove it; * handle must be already prepared by the * truncatei_leaf() */ - err = ext4_ext_rm_idx(handle, inode, path + i); + err = ext4_ext_rm_idx(handle, inode, path, i); } /* root level has p_bh == NULL, brelse() eats this */ brelse(path[i].p_bh); @@ -2773,8 +2804,10 @@ out: ext4_ext_drop_refs(path); kfree(path); - if (err == -EAGAIN) + if (err == -EAGAIN) { + path = NULL; goto again; + } ext4_journal_stop(handle); return err; @@ -2883,6 +2916,9 @@ unsigned int ee_len, depth; int err = 0; + BUG_ON((split_flag & (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)) == + (EXT4_EXT_DATA_VALID1 | EXT4_EXT_DATA_VALID2)); + ext_debug("ext4_split_extents_at: inode %lu, logical" "block %llu\n", inode->i_ino, (unsigned long long)split); @@ -2941,7 +2977,14 @@ err = ext4_ext_insert_extent(handle, inode, path, &newex, flags); if (err == -ENOSPC && (EXT4_EXT_MAY_ZEROOUT & split_flag)) { - err = ext4_ext_zeroout(inode, &orig_ex); + if (split_flag & (EXT4_EXT_DATA_VALID1|EXT4_EXT_DATA_VALID2)) { + if (split_flag & EXT4_EXT_DATA_VALID1) + err = ext4_ext_zeroout(inode, ex2); + else + err = ext4_ext_zeroout(inode, ex); + } else + err = ext4_ext_zeroout(inode, &orig_ex); + if (err) goto fix_extent_len; /* update the extent length and mark as initialized */ @@ -2994,12 +3037,13 @@ uninitialized = ext4_ext_is_uninitialized(ex); if (map->m_lblk + map->m_len < ee_block + ee_len) { - split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT ? - EXT4_EXT_MAY_ZEROOUT : 0; + split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT; flags1 = flags | EXT4_GET_BLOCKS_PRE_IO; if (uninitialized) split_flag1 |= EXT4_EXT_MARK_UNINIT1 | EXT4_EXT_MARK_UNINIT2; + if (split_flag & EXT4_EXT_DATA_VALID2) + split_flag1 |= EXT4_EXT_DATA_VALID1; err = ext4_split_extent_at(handle, inode, path, map->m_lblk + map->m_len, split_flag1, flags1); if (err) @@ -3012,8 +3056,8 @@ return PTR_ERR(path); if (map->m_lblk >= ee_block) { - split_flag1 = split_flag & EXT4_EXT_MAY_ZEROOUT ? - EXT4_EXT_MAY_ZEROOUT : 0; + split_flag1 = split_flag & (EXT4_EXT_MAY_ZEROOUT | + EXT4_EXT_DATA_VALID2); if (uninitialized) split_flag1 |= EXT4_EXT_MARK_UNINIT1; if (split_flag & EXT4_EXT_MARK_UNINIT2) @@ -3291,26 +3335,47 @@ split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; split_flag |= EXT4_EXT_MARK_UNINIT2; - + if (flags & EXT4_GET_BLOCKS_CONVERT) + split_flag |= EXT4_EXT_DATA_VALID2; flags |= EXT4_GET_BLOCKS_PRE_IO; return ext4_split_extent(handle, inode, path, map, split_flag, flags); } static int ext4_convert_unwritten_extents_endio(handle_t *handle, - struct inode *inode, - struct ext4_ext_path *path) + struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path) { struct ext4_extent *ex; + ext4_lblk_t ee_block; + unsigned int ee_len; int depth; int err = 0; depth = ext_depth(inode); ex = path[depth].p_ext; + ee_block = le32_to_cpu(ex->ee_block); + ee_len = ext4_ext_get_actual_len(ex); ext_debug("ext4_convert_unwritten_extents_endio: inode %lu, logical" "block %llu, max_blocks %u\n", inode->i_ino, - (unsigned long long)le32_to_cpu(ex->ee_block), - ext4_ext_get_actual_len(ex)); + (unsigned long long)ee_block, ee_len); + + /* If extent is larger than requested then split is required */ + if (ee_block != map->m_lblk || ee_len > map->m_len) { + err = ext4_split_unwritten_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT); + if (err < 0) + goto out; + ext4_ext_drop_refs(path); + path = ext4_ext_find_extent(inode, map->m_lblk, path); + if (IS_ERR(path)) { + err = PTR_ERR(path); + goto out; + } + depth = ext_depth(inode); + ex = path[depth].p_ext; + } err = ext4_ext_get_access(handle, inode, path + depth); if (err) @@ -3618,7 +3683,7 @@ } /* IO end_io complete, convert the filled extent to written */ if ((flags & EXT4_GET_BLOCKS_CONVERT)) { - ret = ext4_convert_unwritten_extents_endio(handle, inode, + ret = ext4_convert_unwritten_extents_endio(handle, inode, map, path); if (ret >= 0) { ext4_update_inode_fsync_trans(handle, inode, 1); --- linux-3.5.0.orig/fs/ext4/ext4_jbd2.c +++ linux-3.5.0/fs/ext4/ext4_jbd2.c @@ -145,15 +145,13 @@ int err = 0; if (ext4_handle_valid(handle)) { - ext4_superblock_csum_set(sb, - (struct ext4_super_block *)bh->b_data); + ext4_superblock_csum_set(sb); err = jbd2_journal_dirty_metadata(handle, bh); if (err) ext4_journal_abort_handle(where, line, __func__, bh, handle, err); } else if (now) { - ext4_superblock_csum_set(sb, - (struct ext4_super_block *)bh->b_data); + ext4_superblock_csum_set(sb); mark_buffer_dirty(bh); } else sb->s_dirt = 1; --- linux-3.5.0.orig/fs/ext4/balloc.c +++ linux-3.5.0/fs/ext4/balloc.c @@ -174,8 +174,7 @@ ext4_free_inodes_set(sb, gdp, 0); ext4_itable_unused_set(sb, gdp, 0); memset(bh->b_data, 0xff, sb->s_blocksize); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bh); return; } memset(bh->b_data, 0, sb->s_blocksize); @@ -212,8 +211,7 @@ */ ext4_mark_bitmap_end(num_clusters_in_group(sb, block_group), sb->s_blocksize * 8, bh->b_data); - ext4_block_bitmap_csum_set(sb, block_group, gdp, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8); + ext4_block_bitmap_csum_set(sb, block_group, gdp, bh); ext4_group_desc_csum_set(sb, block_group, gdp); } @@ -280,14 +278,18 @@ return desc; } -static int ext4_valid_block_bitmap(struct super_block *sb, - struct ext4_group_desc *desc, - unsigned int block_group, - struct buffer_head *bh) +/* + * Return the block number which was discovered to be invalid, or 0 if + * the block bitmap is valid. + */ +static ext4_fsblk_t ext4_valid_block_bitmap(struct super_block *sb, + struct ext4_group_desc *desc, + unsigned int block_group, + struct buffer_head *bh) { ext4_grpblk_t offset; ext4_grpblk_t next_zero_bit; - ext4_fsblk_t bitmap_blk; + ext4_fsblk_t blk; ext4_fsblk_t group_first_block; if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG)) { @@ -297,37 +299,33 @@ * or it has to also read the block group where the bitmaps * are located to verify they are set. */ - return 1; + return 0; } group_first_block = ext4_group_first_block_no(sb, block_group); /* check whether block bitmap block number is set */ - bitmap_blk = ext4_block_bitmap(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_block_bitmap(sb, desc); + offset = blk - group_first_block; if (!ext4_test_bit(offset, bh->b_data)) /* bad block bitmap */ - goto err_out; + return blk; /* check whether the inode bitmap block number is set */ - bitmap_blk = ext4_inode_bitmap(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_inode_bitmap(sb, desc); + offset = blk - group_first_block; if (!ext4_test_bit(offset, bh->b_data)) /* bad block bitmap */ - goto err_out; + return blk; /* check whether the inode table block number is set */ - bitmap_blk = ext4_inode_table(sb, desc); - offset = bitmap_blk - group_first_block; + blk = ext4_inode_table(sb, desc); + offset = blk - group_first_block; next_zero_bit = ext4_find_next_zero_bit(bh->b_data, offset + EXT4_SB(sb)->s_itb_per_group, offset); - if (next_zero_bit >= offset + EXT4_SB(sb)->s_itb_per_group) - /* good bitmap for inode tables */ - return 1; - -err_out: - ext4_error(sb, "Invalid block bitmap - block_group = %d, block = %llu", - block_group, bitmap_blk); + if (next_zero_bit < offset + EXT4_SB(sb)->s_itb_per_group) + /* bad bitmap for inode tables */ + return blk; return 0; } @@ -336,19 +334,31 @@ unsigned int block_group, struct buffer_head *bh) { + ext4_fsblk_t blk; + if (buffer_verified(bh)) return; ext4_lock_group(sb, block_group); - if (ext4_valid_block_bitmap(sb, desc, block_group, bh) && - ext4_block_bitmap_csum_verify(sb, block_group, desc, bh, - EXT4_BLOCKS_PER_GROUP(sb) / 8)) - set_buffer_verified(bh); + blk = ext4_valid_block_bitmap(sb, desc, block_group, bh); + if (unlikely(blk != 0)) { + ext4_unlock_group(sb, block_group); + ext4_error(sb, "bg %u: block %llu: invalid block bitmap", + block_group, blk); + return; + } + if (unlikely(!ext4_block_bitmap_csum_verify(sb, block_group, + desc, bh))) { + ext4_unlock_group(sb, block_group); + ext4_error(sb, "bg %u: bad block bitmap checksum", block_group); + return; + } + set_buffer_verified(bh); ext4_unlock_group(sb, block_group); } /** - * ext4_read_block_bitmap() + * ext4_read_block_bitmap_nowait() * @sb: super block * @block_group: given block group * @@ -447,6 +457,8 @@ struct buffer_head *bh; bh = ext4_read_block_bitmap_nowait(sb, block_group); + if (!bh) + return NULL; if (ext4_wait_block_bitmap(sb, block_group, bh)) { put_bh(bh); return NULL; @@ -472,11 +484,16 @@ free_clusters = percpu_counter_read_positive(fcc); dirty_clusters = percpu_counter_read_positive(dcc); - root_clusters = EXT4_B2C(sbi, ext4_r_blocks_count(sbi->s_es)); + + /* + * r_blocks_count should always be multiple of the cluster ratio so + * we are safe to do a plane bit shift only. + */ + root_clusters = ext4_r_blocks_count(sbi->s_es) >> sbi->s_cluster_bits; if (free_clusters - (nclusters + root_clusters + dirty_clusters) < EXT4_FREECLUSTERS_WATERMARK) { - free_clusters = EXT4_C2B(sbi, percpu_counter_sum_positive(fcc)); + free_clusters = percpu_counter_sum_positive(fcc); dirty_clusters = percpu_counter_sum_positive(dcc); } /* Check whether we have space after accounting for current @@ -609,7 +626,8 @@ if (bitmap_bh == NULL) continue; - x = ext4_count_free(bitmap_bh, sb->s_blocksize); + x = ext4_count_free(bitmap_bh->b_data, + EXT4_BLOCKS_PER_GROUP(sb) / 8); printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n", i, ext4_free_group_clusters(sb, gdp), x); bitmap_count += x; --- linux-3.5.0.orig/fs/ext4/move_extent.c +++ linux-3.5.0/fs/ext4/move_extent.c @@ -141,55 +141,21 @@ } /** - * mext_check_null_inode - NULL check for two inodes - * - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. - */ -static int -mext_check_null_inode(struct inode *inode1, struct inode *inode2, - const char *function, unsigned int line) -{ - int ret = 0; - - if (inode1 == NULL) { - __ext4_error(inode2->i_sb, function, line, - "Both inodes should not be NULL: " - "inode1 NULL inode2 %lu", inode2->i_ino); - ret = -EIO; - } else if (inode2 == NULL) { - __ext4_error(inode1->i_sb, function, line, - "Both inodes should not be NULL: " - "inode1 %lu inode2 NULL", inode1->i_ino); - ret = -EIO; - } - return ret; -} - -/** * double_down_write_data_sem - Acquire two inodes' write lock of i_data_sem * - * @orig_inode: original inode structure - * @donor_inode: donor inode structure - * Acquire write lock of i_data_sem of the two inodes (orig and donor) by - * i_ino order. + * Acquire write lock of i_data_sem of the two inodes */ static void -double_down_write_data_sem(struct inode *orig_inode, struct inode *donor_inode) +double_down_write_data_sem(struct inode *first, struct inode *second) { - struct inode *first = orig_inode, *second = donor_inode; + if (first < second) { + down_write(&EXT4_I(first)->i_data_sem); + down_write_nested(&EXT4_I(second)->i_data_sem, SINGLE_DEPTH_NESTING); + } else { + down_write(&EXT4_I(second)->i_data_sem); + down_write_nested(&EXT4_I(first)->i_data_sem, SINGLE_DEPTH_NESTING); - /* - * Use the inode number to provide the stable locking order instead - * of its address, because the C language doesn't guarantee you can - * compare pointers that don't come from the same array. - */ - if (donor_inode->i_ino < orig_inode->i_ino) { - first = donor_inode; - second = orig_inode; } - - down_write(&EXT4_I(first)->i_data_sem); - down_write_nested(&EXT4_I(second)->i_data_sem, SINGLE_DEPTH_NESTING); } /** @@ -969,14 +935,6 @@ return -EINVAL; } - /* Files should be in the same ext4 FS */ - if (orig_inode->i_sb != donor_inode->i_sb) { - ext4_debug("ext4 move extent: The argument files " - "should be in same FS [ino:orig %lu, donor %lu]\n", - orig_inode->i_ino, donor_inode->i_ino); - return -EINVAL; - } - /* Ext4 move extent supports only extent based file */ if (!(ext4_test_inode_flag(orig_inode, EXT4_INODE_EXTENTS))) { ext4_debug("ext4 move extent: orig file is not extents " @@ -1072,35 +1030,19 @@ * @inode1: the inode structure * @inode2: the inode structure * - * Lock two inodes' i_mutex by i_ino order. - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. + * Lock two inodes' i_mutex */ -static int +static void mext_inode_double_lock(struct inode *inode1, struct inode *inode2) { - int ret = 0; - - BUG_ON(inode1 == NULL && inode2 == NULL); - - ret = mext_check_null_inode(inode1, inode2, __func__, __LINE__); - if (ret < 0) - goto out; - - if (inode1 == inode2) { - mutex_lock(&inode1->i_mutex); - goto out; - } - - if (inode1->i_ino < inode2->i_ino) { + BUG_ON(inode1 == inode2); + if (inode1 < inode2) { mutex_lock_nested(&inode1->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode2->i_mutex, I_MUTEX_CHILD); } else { mutex_lock_nested(&inode2->i_mutex, I_MUTEX_PARENT); mutex_lock_nested(&inode1->i_mutex, I_MUTEX_CHILD); } - -out: - return ret; } /** @@ -1109,28 +1051,13 @@ * @inode1: the inode that is released first * @inode2: the inode that is released second * - * If inode1 or inode2 is NULL, return -EIO. Otherwise, return 0. */ -static int +static void mext_inode_double_unlock(struct inode *inode1, struct inode *inode2) { - int ret = 0; - - BUG_ON(inode1 == NULL && inode2 == NULL); - - ret = mext_check_null_inode(inode1, inode2, __func__, __LINE__); - if (ret < 0) - goto out; - - if (inode1) - mutex_unlock(&inode1->i_mutex); - - if (inode2 && inode2 != inode1) - mutex_unlock(&inode2->i_mutex); - -out: - return ret; + mutex_unlock(&inode1->i_mutex); + mutex_unlock(&inode2->i_mutex); } /** @@ -1187,16 +1114,23 @@ ext4_lblk_t block_end, seq_start, add_blocks, file_end, seq_blocks = 0; ext4_lblk_t rest_blocks; pgoff_t orig_page_offset = 0, seq_end_page; - int ret1, ret2, depth, last_extent = 0; + int ret, depth, last_extent = 0; int blocks_per_page = PAGE_CACHE_SIZE >> orig_inode->i_blkbits; int data_offset_in_page; int block_len_in_page; int uninit; - /* orig and donor should be different file */ - if (orig_inode->i_ino == donor_inode->i_ino) { + if (orig_inode->i_sb != donor_inode->i_sb) { + ext4_debug("ext4 move extent: The argument files " + "should be in same FS [ino:orig %lu, donor %lu]\n", + orig_inode->i_ino, donor_inode->i_ino); + return -EINVAL; + } + + /* orig and donor should be different inodes */ + if (orig_inode == donor_inode) { ext4_debug("ext4 move extent: The argument files should not " - "be same file [ino:orig %lu, donor %lu]\n", + "be same inode [ino:orig %lu, donor %lu]\n", orig_inode->i_ino, donor_inode->i_ino); return -EINVAL; } @@ -1208,18 +1142,21 @@ orig_inode->i_ino, donor_inode->i_ino); return -EINVAL; } - + /* TODO: This is non obvious task to swap blocks for inodes with full + jornaling enabled */ + if (ext4_should_journal_data(orig_inode) || + ext4_should_journal_data(donor_inode)) { + return -EINVAL; + } /* Protect orig and donor inodes against a truncate */ - ret1 = mext_inode_double_lock(orig_inode, donor_inode); - if (ret1 < 0) - return ret1; + mext_inode_double_lock(orig_inode, donor_inode); /* Protect extent tree against block allocations via delalloc */ double_down_write_data_sem(orig_inode, donor_inode); /* Check the filesystem environment whether move_extent can be done */ - ret1 = mext_check_arguments(orig_inode, donor_inode, orig_start, + ret = mext_check_arguments(orig_inode, donor_inode, orig_start, donor_start, &len); - if (ret1) + if (ret) goto out; file_end = (i_size_read(orig_inode) - 1) >> orig_inode->i_blkbits; @@ -1227,13 +1164,13 @@ if (file_end < block_end) len -= block_end - file_end; - ret1 = get_ext_path(orig_inode, block_start, &orig_path); - if (ret1) + ret = get_ext_path(orig_inode, block_start, &orig_path); + if (ret) goto out; /* Get path structure to check the hole */ - ret1 = get_ext_path(orig_inode, block_start, &holecheck_path); - if (ret1) + ret = get_ext_path(orig_inode, block_start, &holecheck_path); + if (ret) goto out; depth = ext_depth(orig_inode); @@ -1252,13 +1189,13 @@ last_extent = mext_next_extent(orig_inode, holecheck_path, &ext_cur); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; goto out; } last_extent = mext_next_extent(orig_inode, orig_path, &ext_dummy); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; goto out; } seq_start = le32_to_cpu(ext_cur->ee_block); @@ -1272,7 +1209,7 @@ if (le32_to_cpu(ext_cur->ee_block) > block_end) { ext4_debug("ext4 move extent: The specified range of file " "may be the hole\n"); - ret1 = -EINVAL; + ret = -EINVAL; goto out; } @@ -1292,7 +1229,7 @@ last_extent = mext_next_extent(orig_inode, holecheck_path, &ext_cur); if (last_extent < 0) { - ret1 = last_extent; + ret = last_extent; break; } add_blocks = ext4_ext_get_actual_len(ext_cur); @@ -1349,18 +1286,18 @@ orig_page_offset, data_offset_in_page, block_len_in_page, uninit, - &ret1); + &ret); /* Count how many blocks we have exchanged */ *moved_len += block_len_in_page; - if (ret1 < 0) + if (ret < 0) break; if (*moved_len > len) { EXT4_ERROR_INODE(orig_inode, "We replaced blocks too much! " "sum of replaced: %llu requested: %llu", *moved_len, len); - ret1 = -EIO; + ret = -EIO; break; } @@ -1374,22 +1311,22 @@ } double_down_write_data_sem(orig_inode, donor_inode); - if (ret1 < 0) + if (ret < 0) break; /* Decrease buffer counter */ if (holecheck_path) ext4_ext_drop_refs(holecheck_path); - ret1 = get_ext_path(orig_inode, seq_start, &holecheck_path); - if (ret1) + ret = get_ext_path(orig_inode, seq_start, &holecheck_path); + if (ret) break; depth = holecheck_path->p_depth; /* Decrease buffer counter */ if (orig_path) ext4_ext_drop_refs(orig_path); - ret1 = get_ext_path(orig_inode, seq_start, &orig_path); - if (ret1) + ret = get_ext_path(orig_inode, seq_start, &orig_path); + if (ret) break; ext_cur = holecheck_path[depth].p_ext; @@ -1412,12 +1349,7 @@ kfree(holecheck_path); } double_up_write_data_sem(orig_inode, donor_inode); - ret2 = mext_inode_double_unlock(orig_inode, donor_inode); + mext_inode_double_unlock(orig_inode, donor_inode); - if (ret1) - return ret1; - else if (ret2) - return ret2; - - return 0; + return ret; } --- linux-3.5.0.orig/fs/xfs/xfs_aops.c +++ linux-3.5.0/fs/xfs/xfs_aops.c @@ -86,11 +86,11 @@ } if (ioend->io_iocb) { + inode_dio_done(ioend->io_inode); if (ioend->io_isasync) { aio_complete(ioend->io_iocb, ioend->io_error ? ioend->io_error : ioend->io_result, 0); } - inode_dio_done(ioend->io_inode); } mempool_free(ioend, xfs_ioend_pool); --- linux-3.5.0.orig/fs/xfs/xfs_sync.c +++ linux-3.5.0/fs/xfs/xfs_sync.c @@ -391,7 +391,7 @@ * cancel_delayed_work_sync on this work queue before tearing down * the ail and the log in xfs_log_unmount. */ - if (!(mp->m_super->s_flags & MS_ACTIVE) && + if ((mp->m_super->s_flags & MS_ACTIVE) && !(mp->m_flags & XFS_MOUNT_RDONLY)) { /* dgc: errors ignored here */ if (mp->m_super->s_frozen == SB_UNFROZEN && --- linux-3.5.0.orig/fs/xfs/xfs_buf_item.c +++ linux-3.5.0/fs/xfs/xfs_buf_item.c @@ -459,7 +459,25 @@ } xfs_buf_relse(bp); } else if (freed && remove) { + /* + * There are currently two references to the buffer - the active + * LRU reference and the buf log item. What we are about to do + * here - simulate a failed IO completion - requires 3 + * references. + * + * The LRU reference is removed by the xfs_buf_stale() call. The + * buf item reference is removed by the xfs_buf_iodone() + * callback that is run by xfs_buf_do_callbacks() during ioend + * processing (via the bp->b_iodone callback), and then finally + * the ioend processing will drop the IO reference if the buffer + * is marked XBF_ASYNC. + * + * Hence we need to take an additional reference here so that IO + * completion processing doesn't free the buffer prematurely. + */ xfs_buf_lock(bp); + xfs_buf_hold(bp); + bp->b_flags |= XBF_ASYNC; xfs_buf_ioerror(bp, EIO); XFS_BUF_UNDONE(bp); xfs_buf_stale(bp); --- linux-3.5.0.orig/fs/xfs/xfs_buf.c +++ linux-3.5.0/fs/xfs/xfs_buf.c @@ -1135,9 +1135,14 @@ { xfs_buf_t *bp = (xfs_buf_t *)bio->bi_private; - xfs_buf_ioerror(bp, -error); + /* + * don't overwrite existing errors - otherwise we can lose errors on + * buffers that require multiple bios to complete. + */ + if (!bp->b_error) + xfs_buf_ioerror(bp, -error); - if (!error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ)) + if (!bp->b_error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ)) invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp)); _xfs_buf_ioend(bp, 1); @@ -1213,6 +1218,11 @@ if (size) goto next_chunk; } else { + /* + * This is guaranteed not to be the last io reference count + * because the caller (xfs_buf_iorequest) holds a count itself. + */ + atomic_dec(&bp->b_io_remaining); xfs_buf_ioerror(bp, EIO); bio_put(bio); } --- linux-3.5.0.orig/fs/xfs/xfs_export.c +++ linux-3.5.0/fs/xfs/xfs_export.c @@ -189,6 +189,9 @@ struct xfs_fid64 *fid64 = (struct xfs_fid64 *)fid; struct inode *inode = NULL; + if (fh_len < xfs_fileid_length(fileid_type)) + return NULL; + switch (fileid_type) { case FILEID_INO32_GEN_PARENT: inode = xfs_nfs_get_inode(sb, fid->i32.parent_ino, --- linux-3.5.0.orig/fs/xfs/xfs_log_recover.c +++ linux-3.5.0/fs/xfs/xfs_log_recover.c @@ -3533,7 +3533,7 @@ * - order is important. */ error = xlog_bread_offset(log, 0, - bblks - split_bblks, hbp, + bblks - split_bblks, dbp, offset + BBTOB(split_bblks)); if (error) goto bread_err2; --- linux-3.5.0.orig/fs/xfs/xfs_qm.c +++ linux-3.5.0/fs/xfs/xfs_qm.c @@ -1453,7 +1453,7 @@ int error; if (!xfs_dqlock_nowait(dqp)) - goto out_busy; + goto out_move_tail; /* * This dquot has acquired a reference in the meantime remove it from @@ -1476,7 +1476,7 @@ * getting flushed to disk, we don't want to reclaim it. */ if (!xfs_dqflock_nowait(dqp)) - goto out_busy; + goto out_unlock_move_tail; if (XFS_DQ_IS_DIRTY(dqp)) { struct xfs_buf *bp = NULL; @@ -1487,7 +1487,7 @@ if (error) { xfs_warn(mp, "%s: dquot %p flush failed", __func__, dqp); - goto out_busy; + goto out_unlock_move_tail; } xfs_buf_delwri_queue(bp, buffer_list); @@ -1496,7 +1496,7 @@ * Give the dquot another try on the freelist, as the * flushing will take some time. */ - goto out_busy; + goto out_unlock_move_tail; } xfs_dqfunlock(dqp); @@ -1515,14 +1515,13 @@ XFS_STATS_INC(xs_qm_dqreclaims); return; -out_busy: - xfs_dqunlock(dqp); - /* * Move the dquot to the tail of the list so that we don't spin on it. */ +out_unlock_move_tail: + xfs_dqunlock(dqp); +out_move_tail: list_move_tail(&dqp->q_lru, &qi->qi_lru_list); - trace_xfs_dqreclaim_busy(dqp); XFS_STATS_INC(xs_qm_dqreclaim_misses); } --- linux-3.5.0.orig/fs/reiserfs/super.c +++ linux-3.5.0/fs/reiserfs/super.c @@ -293,7 +293,9 @@ retval = remove_save_link_only(s, &save_link_key, 0); continue; } + reiserfs_write_unlock(s); dquot_initialize(inode); + reiserfs_write_lock(s); if (truncate && S_ISDIR(inode->i_mode)) { /* We got a truncate request for a dir which is impossible. @@ -1325,7 +1327,7 @@ kfree(qf_names[i]); #endif err = -EINVAL; - goto out_err; + goto out_unlock; } #ifdef CONFIG_QUOTA handle_quota_files(s, qf_names, &qfmt); @@ -1369,7 +1371,7 @@ if (blocks) { err = reiserfs_resize(s, blocks); if (err != 0) - goto out_err; + goto out_unlock; } if (*mount_flags & MS_RDONLY) { @@ -1379,9 +1381,15 @@ /* it is read-only already */ goto out_ok; + /* + * Drop write lock. Quota will retake it when needed and lock + * ordering requires calling dquot_suspend() without it. + */ + reiserfs_write_unlock(s); err = dquot_suspend(s, -1); if (err < 0) goto out_err; + reiserfs_write_lock(s); /* try to remount file system with read-only permissions */ if (sb_umount_state(rs) == REISERFS_VALID_FS @@ -1391,7 +1399,7 @@ err = journal_begin(&th, s, 10); if (err) - goto out_err; + goto out_unlock; /* Mounting a rw partition read-only. */ reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s), 1); @@ -1406,7 +1414,7 @@ if (reiserfs_is_journal_aborted(journal)) { err = journal->j_errno; - goto out_err; + goto out_unlock; } handle_data_mode(s, mount_options); @@ -1415,7 +1423,7 @@ s->s_flags &= ~MS_RDONLY; /* now it is safe to call journal_begin */ err = journal_begin(&th, s, 10); if (err) - goto out_err; + goto out_unlock; /* Mount a partition which is read-only, read-write */ reiserfs_prepare_for_journal(s, SB_BUFFER_WITH_SB(s), 1); @@ -1432,10 +1440,16 @@ SB_JOURNAL(s)->j_must_wait = 1; err = journal_end(&th, s, 10); if (err) - goto out_err; + goto out_unlock; if (!(*mount_flags & MS_RDONLY)) { + /* + * Drop write lock. Quota will retake it when needed and lock + * ordering requires calling dquot_resume() without it. + */ + reiserfs_write_unlock(s); dquot_resume(s, -1); + reiserfs_write_lock(s); finish_unfinished(s); reiserfs_xattr_init(s, *mount_flags); } @@ -1445,9 +1459,10 @@ reiserfs_write_unlock(s); return 0; +out_unlock: + reiserfs_write_unlock(s); out_err: kfree(new_opts); - reiserfs_write_unlock(s); return err; } @@ -2085,13 +2100,15 @@ REISERFS_QUOTA_TRANS_BLOCKS(dquot->dq_sb)); if (ret) goto out; + reiserfs_write_unlock(dquot->dq_sb); ret = dquot_commit(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_TRANS_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -2107,13 +2124,15 @@ REISERFS_QUOTA_INIT_BLOCKS(dquot->dq_sb)); if (ret) goto out; + reiserfs_write_unlock(dquot->dq_sb); ret = dquot_acquire(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_INIT_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(dquot->dq_sb); return ret; } @@ -2127,19 +2146,21 @@ ret = journal_begin(&th, dquot->dq_sb, REISERFS_QUOTA_DEL_BLOCKS(dquot->dq_sb)); + reiserfs_write_unlock(dquot->dq_sb); if (ret) { /* Release dquot anyway to avoid endless cycle in dqput() */ dquot_release(dquot); goto out; } ret = dquot_release(dquot); + reiserfs_write_lock(dquot->dq_sb); err = journal_end(&th, dquot->dq_sb, REISERFS_QUOTA_DEL_BLOCKS(dquot->dq_sb)); if (!ret && err) ret = err; - out: reiserfs_write_unlock(dquot->dq_sb); +out: return ret; } @@ -2164,11 +2185,13 @@ ret = journal_begin(&th, sb, 2); if (ret) goto out; + reiserfs_write_unlock(sb); ret = dquot_commit_info(sb, type); + reiserfs_write_lock(sb); err = journal_end(&th, sb, 2); if (!ret && err) ret = err; - out: +out: reiserfs_write_unlock(sb); return ret; } @@ -2193,8 +2216,11 @@ struct reiserfs_transaction_handle th; int opt = type == USRQUOTA ? REISERFS_USRQUOTA : REISERFS_GRPQUOTA; - if (!(REISERFS_SB(sb)->s_mount_opt & (1 << opt))) - return -EINVAL; + reiserfs_write_lock(sb); + if (!(REISERFS_SB(sb)->s_mount_opt & (1 << opt))) { + err = -EINVAL; + goto out; + } /* Quotafile not on the same filesystem? */ if (path->dentry->d_sb != sb) { @@ -2236,8 +2262,10 @@ if (err) goto out; } - err = dquot_quota_on(sb, type, format_id, path); + reiserfs_write_unlock(sb); + return dquot_quota_on(sb, type, format_id, path); out: + reiserfs_write_unlock(sb); return err; } @@ -2310,7 +2338,9 @@ tocopy = sb->s_blocksize - offset < towrite ? sb->s_blocksize - offset : towrite; tmp_bh.b_state = 0; + reiserfs_write_lock(sb); err = reiserfs_get_block(inode, blk, &tmp_bh, GET_BLOCK_CREATE); + reiserfs_write_unlock(sb); if (err) goto out; if (offset || tocopy != sb->s_blocksize) @@ -2326,10 +2356,12 @@ flush_dcache_page(bh->b_page); set_buffer_uptodate(bh); unlock_buffer(bh); + reiserfs_write_lock(sb); reiserfs_prepare_for_journal(sb, bh, 1); journal_mark_dirty(current->journal_info, sb, bh); if (!journal_quota) reiserfs_add_ordered_list(inode, bh); + reiserfs_write_unlock(sb); brelse(bh); offset = 0; towrite -= tocopy; --- linux-3.5.0.orig/fs/reiserfs/inode.c +++ linux-3.5.0/fs/reiserfs/inode.c @@ -1573,8 +1573,10 @@ reiserfs_warning(sb, "reiserfs-13077", "nfsd/reiserfs, fhtype=%d, len=%d - odd", fh_type, fh_len); - fh_type = 5; + fh_type = fh_len; } + if (fh_len < 2) + return NULL; return reiserfs_get_dentry(sb, fid->raw[0], fid->raw[1], (fh_type == 3 || fh_type >= 5) ? fid->raw[2] : 0); @@ -1583,6 +1585,8 @@ struct dentry *reiserfs_fh_to_parent(struct super_block *sb, struct fid *fid, int fh_len, int fh_type) { + if (fh_type > fh_len) + fh_type = fh_len; if (fh_type < 4) return NULL; @@ -1778,8 +1782,9 @@ BUG_ON(!th->t_trans_id); - dquot_initialize(inode); + reiserfs_write_unlock(inode->i_sb); err = dquot_alloc_inode(inode); + reiserfs_write_lock(inode->i_sb); if (err) goto out_end_trans; if (!dir->i_nlink) { @@ -1975,8 +1980,10 @@ out_end_trans: journal_end(th, th->t_super, th->t_blocks_allocated); + reiserfs_write_unlock(inode->i_sb); /* Drop can be outside and it needs more credits so it's better to have it outside */ dquot_drop(inode); + reiserfs_write_lock(inode->i_sb); inode->i_flags |= S_NOQUOTA; make_bad_inode(inode); @@ -3099,10 +3106,9 @@ /* must be turned off for recursive notify_change calls */ ia_valid = attr->ia_valid &= ~(ATTR_KILL_SUID|ATTR_KILL_SGID); - depth = reiserfs_write_lock_once(inode->i_sb); if (is_quota_modification(inode, attr)) dquot_initialize(inode); - + depth = reiserfs_write_lock_once(inode->i_sb); if (attr->ia_valid & ATTR_SIZE) { /* version 2 items will be caught by the s_maxbytes check ** done for us in vmtruncate @@ -3166,7 +3172,9 @@ error = journal_begin(&th, inode->i_sb, jbegin_count); if (error) goto out; + reiserfs_write_unlock_once(inode->i_sb, depth); error = dquot_transfer(inode, attr); + depth = reiserfs_write_lock_once(inode->i_sb); if (error) { journal_end(&th, inode->i_sb, jbegin_count); goto out; --- linux-3.5.0.orig/fs/reiserfs/stree.c +++ linux-3.5.0/fs/reiserfs/stree.c @@ -1968,7 +1968,9 @@ key2type(&(key->on_disk_key))); #endif + reiserfs_write_unlock(inode->i_sb); retval = dquot_alloc_space_nodirty(inode, pasted_size); + reiserfs_write_lock(inode->i_sb); if (retval) { pathrelse(search_path); return retval; @@ -2061,9 +2063,11 @@ "reiserquota insert_item(): allocating %u id=%u type=%c", quota_bytes, inode->i_uid, head2type(ih)); #endif + reiserfs_write_unlock(inode->i_sb); /* We can't dirty inode here. It would be immediately written but * appropriate stat item isn't inserted yet... */ retval = dquot_alloc_space_nodirty(inode, quota_bytes); + reiserfs_write_lock(inode->i_sb); if (retval) { pathrelse(path); return retval; --- linux-3.5.0.orig/fs/isofs/export.c +++ linux-3.5.0/fs/isofs/export.c @@ -174,7 +174,7 @@ { struct isofs_fid *ifid = (struct isofs_fid *)fid; - if (fh_type != 2) + if (fh_len < 2 || fh_type != 2) return NULL; return isofs_export_iget(sb, --- linux-3.5.0.orig/fs/9p/vfs_dentry.c +++ linux-3.5.0/fs/9p/vfs_dentry.c @@ -106,7 +106,7 @@ struct inode *inode; struct v9fs_inode *v9inode; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; --- linux-3.5.0.orig/fs/nfs/dns_resolve.c +++ linux-3.5.0/fs/nfs/dns_resolve.c @@ -214,7 +214,7 @@ { char buf1[NFS_DNS_HOSTNAME_MAXLEN+1]; struct nfs_dns_ent key, *item; - unsigned long ttl; + unsigned int ttl; ssize_t len; int ret = -EINVAL; @@ -237,7 +237,8 @@ key.namelen = len; memset(&key.h, 0, sizeof(key.h)); - ttl = get_expiry(&buf); + if (get_uint(&buf, &ttl) < 0) + goto out; if (ttl == 0) goto out; key.h.expiry_time = ttl + seconds_since_boot(); --- linux-3.5.0.orig/fs/nfs/namespace.c +++ linux-3.5.0/fs/nfs/namespace.c @@ -32,6 +32,7 @@ * @dentry - pointer to dentry * @buffer - result buffer * @buflen - length of buffer + * @flags - options (see below) * * Helper function for constructing the server pathname * by arbitrary hashed dentry. @@ -39,8 +40,14 @@ * This is mainly for use in figuring out the path on the * server side when automounting on top of an existing partition * and in generating /proc/mounts and friends. + * + * Supported flags: + * NFS_PATH_CANONICAL: ensure there is exactly one slash after + * the original device (export) name + * (if unset, the original name is returned verbatim) */ -char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen) +char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen, + unsigned flags) { char *end; int namelen; @@ -73,7 +80,7 @@ rcu_read_unlock(); goto rename_retry; } - if (*end != '/') { + if ((flags & NFS_PATH_CANONICAL) && *end != '/') { if (--buflen < 0) { spin_unlock(&dentry->d_lock); rcu_read_unlock(); @@ -90,9 +97,11 @@ return end; } namelen = strlen(base); - /* Strip off excess slashes in base string */ - while (namelen > 0 && base[namelen - 1] == '/') - namelen--; + if (flags & NFS_PATH_CANONICAL) { + /* Strip off excess slashes in base string */ + while (namelen > 0 && base[namelen - 1] == '/') + namelen--; + } buflen -= namelen; if (buflen < 0) { spin_unlock(&dentry->d_lock); @@ -166,11 +175,31 @@ return mnt; } +static int +nfs_namespace_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) +{ + if (NFS_FH(dentry->d_inode)->size != 0) + return nfs_getattr(mnt, dentry, stat); + generic_fillattr(dentry->d_inode, stat); + return 0; +} + +static int +nfs_namespace_setattr(struct dentry *dentry, struct iattr *attr) +{ + if (NFS_FH(dentry->d_inode)->size != 0) + return nfs_setattr(dentry, attr); + return -EACCES; +} + const struct inode_operations nfs_mountpoint_inode_operations = { .getattr = nfs_getattr, + .setattr = nfs_setattr, }; const struct inode_operations nfs_referral_inode_operations = { + .getattr = nfs_namespace_getattr, + .setattr = nfs_namespace_setattr, }; static void nfs_expire_automounts(struct work_struct *work) --- linux-3.5.0.orig/fs/nfs/mount_clnt.c +++ linux-3.5.0/fs/nfs/mount_clnt.c @@ -181,7 +181,7 @@ else msg.rpc_proc = &mnt_clnt->cl_procinfo[MOUNTPROC_MNT]; - status = rpc_call_sync(mnt_clnt, &msg, 0); + status = rpc_call_sync(mnt_clnt, &msg, RPC_TASK_SOFT|RPC_TASK_TIMEOUT); rpc_shutdown_client(mnt_clnt); if (status < 0) --- linux-3.5.0.orig/fs/nfs/nfs3proc.c +++ linux-3.5.0/fs/nfs/nfs3proc.c @@ -69,7 +69,7 @@ nfs_fattr_init(info->fattr); status = rpc_call_sync(client, &msg, 0); dprintk("%s: reply fsinfo: %d\n", __func__, status); - if (!(info->fattr->valid & NFS_ATTR_FATTR)) { + if (status == 0 && !(info->fattr->valid & NFS_ATTR_FATTR)) { msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR]; msg.rpc_resp = info->fattr; status = rpc_call_sync(client, &msg, 0); @@ -643,7 +643,7 @@ u64 cookie, struct page **pages, unsigned int count, int plus) { struct inode *dir = dentry->d_inode; - __be32 *verf = NFS_COOKIEVERF(dir); + __be32 *verf = NFS_I(dir)->cookieverf; struct nfs3_readdirargs arg = { .fh = NFS_FH(dir), .cookie = cookie, --- linux-3.5.0.orig/fs/nfs/pnfs.h +++ linux-3.5.0/fs/nfs/pnfs.h @@ -171,7 +171,7 @@ struct pnfs_devicelist *devlist); extern int nfs4_proc_getdeviceinfo(struct nfs_server *server, struct pnfs_device *dev); -extern int nfs4_proc_layoutget(struct nfs4_layoutget *lgp); +extern int nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags); extern int nfs4_proc_layoutreturn(struct nfs4_layoutreturn *lrp); /* pnfs.c */ --- linux-3.5.0.orig/fs/nfs/super.c +++ linux-3.5.0/fs/nfs/super.c @@ -822,7 +822,7 @@ int err = 0; if (!page) return -ENOMEM; - devname = nfs_path(&dummy, root, page, PAGE_SIZE); + devname = nfs_path(&dummy, root, page, PAGE_SIZE, 0); if (IS_ERR(devname)) err = PTR_ERR(devname); else @@ -1148,7 +1148,7 @@ { kfree(*option); *option = match_strdup(args); - return !option; + return !*option; } static int nfs_get_option_ul(substring_t args[], unsigned long *option) @@ -1918,6 +1918,7 @@ memcpy(sap, &data->addr, sizeof(data->addr)); args->nfs_server.addrlen = sizeof(data->addr); + args->nfs_server.port = ntohs(data->addr.sin_port); if (!nfs_verify_server_address(sap)) goto out_no_address; @@ -2540,7 +2541,6 @@ struct nfs_clone_mount *data = mount_info->cloned; struct nfs_server *server; struct dentry *mntroot = ERR_PTR(-ENOMEM); - int error; dprintk("--> nfs_xdev_mount_common()\n"); @@ -2548,19 +2548,15 @@ /* create a new volume representation */ server = nfs_clone_server(NFS_SB(data->sb), data->fh, data->fattr, data->authflavor); - if (IS_ERR(server)) { - error = PTR_ERR(server); - goto out_err; - } + if (IS_ERR(server)) + mntroot = ERR_CAST(server); + else + mntroot = nfs_fs_mount_common(fs_type, server, flags, + dev_name, mount_info); - mntroot = nfs_fs_mount_common(fs_type, server, flags, dev_name, mount_info); - dprintk("<-- nfs_xdev_mount_common() = 0\n"); -out: + dprintk("<-- nfs_xdev_mount_common() = %ld\n", + IS_ERR(mntroot) ? PTR_ERR(mntroot) : 0L); return mntroot; - -out_err: - dprintk("<-- nfs_xdev_mount_common() = %d [error]\n", error); - goto out; } /* @@ -2651,6 +2647,7 @@ return -EFAULT; if (!nfs_verify_server_address(sap)) goto out_no_address; + args->nfs_server.port = ntohs(((struct sockaddr_in *)sap)->sin_port); if (data->auth_flavourlen) { if (data->auth_flavourlen > 1) @@ -2961,4 +2958,6 @@ return res; } +MODULE_ALIAS("nfs4"); + #endif /* CONFIG_NFS_V4 */ --- linux-3.5.0.orig/fs/nfs/read.c +++ linux-3.5.0/fs/nfs/read.c @@ -91,12 +91,16 @@ put_nfs_open_context(rdata->args.context); if (rdata->pages.pagevec != rdata->pages.page_array) kfree(rdata->pages.pagevec); - if (rdata != &read_header->rpc_data) - kfree(rdata); - else + if (rdata == &read_header->rpc_data) { rdata->header = NULL; + rdata = NULL; + } if (atomic_dec_and_test(&hdr->refcnt)) hdr->completion_ops->completion(hdr); + /* Note: we only free the rpc_task after callbacks are done. + * See the comment in rpc_free_task() for why + */ + kfree(rdata); } static --- linux-3.5.0.orig/fs/nfs/nfs4namespace.c +++ linux-3.5.0/fs/nfs/nfs4namespace.c @@ -81,7 +81,8 @@ static char *nfs4_path(struct dentry *dentry, char *buffer, ssize_t buflen) { char *limit; - char *path = nfs_path(&limit, dentry, buffer, buflen); + char *path = nfs_path(&limit, dentry, buffer, buflen, + NFS_PATH_CANONICAL); if (!IS_ERR(path)) { char *path_component = nfs_path_component(path, limit); if (path_component) --- linux-3.5.0.orig/fs/nfs/nfs4proc.c +++ linux-3.5.0/fs/nfs/nfs4proc.c @@ -329,8 +329,7 @@ dprintk("%s ERROR: %d Reset session\n", __func__, errorcode); nfs4_schedule_session_recovery(clp->cl_session, errorcode); - exception->retry = 1; - break; + goto wait_on_recovery; #endif /* defined(CONFIG_NFS_V4_1) */ case -NFS4ERR_FILE_OPEN: if (exception->timeout > HZ) { @@ -1497,9 +1496,11 @@ data->timestamp = jiffies; if (nfs4_setup_sequence(data->o_arg.server, &data->o_arg.seq_args, - &data->o_res.seq_res, task)) - return; - rpc_call_start(task); + &data->o_res.seq_res, + task) != 0) + nfs_release_seqid(data->o_arg.seqid); + else + rpc_call_start(task); return; unlock_no_action: rcu_read_unlock(); @@ -2139,9 +2140,10 @@ if (nfs4_setup_sequence(NFS_SERVER(calldata->inode), &calldata->arg.seq_args, &calldata->res.seq_res, - task)) - goto out; - rpc_call_start(task); + task) != 0) + nfs_release_seqid(calldata->arg.seqid); + else + rpc_call_start(task); out: dprintk("%s: done!\n", __func__); } @@ -3189,11 +3191,11 @@ dentry->d_parent->d_name.name, dentry->d_name.name, (unsigned long long)cookie); - nfs4_setup_readdir(cookie, NFS_COOKIEVERF(dir), dentry, &args); + nfs4_setup_readdir(cookie, NFS_I(dir)->cookieverf, dentry, &args); res.pgbase = args.pgbase; status = nfs4_call_sync(NFS_SERVER(dir)->client, NFS_SERVER(dir), &msg, &args.seq_args, &res.seq_res, 0); if (status >= 0) { - memcpy(NFS_COOKIEVERF(dir), res.verifier.data, NFS4_VERIFIER_SIZE); + memcpy(NFS_I(dir)->cookieverf, res.verifier.data, NFS4_VERIFIER_SIZE); status += args.pgbase; } @@ -4340,6 +4342,7 @@ if (nfs4_async_handle_error(task, calldata->server, NULL) == -EAGAIN) rpc_restart_call_prepare(task); } + nfs_release_seqid(calldata->arg.seqid); } static void nfs4_locku_prepare(struct rpc_task *task, void *data) @@ -4356,9 +4359,11 @@ calldata->timestamp = jiffies; if (nfs4_setup_sequence(calldata->server, &calldata->arg.seq_args, - &calldata->res.seq_res, task)) - return; - rpc_call_start(task); + &calldata->res.seq_res, + task) != 0) + nfs_release_seqid(calldata->arg.seqid); + else + rpc_call_start(task); } static const struct rpc_call_ops nfs4_locku_ops = { @@ -4503,7 +4508,7 @@ /* Do we need to do an open_to_lock_owner? */ if (!(data->arg.lock_seqid->sequence->flags & NFS_SEQID_CONFIRMED)) { if (nfs_wait_on_sequence(data->arg.open_seqid, task) != 0) - return; + goto out_release_lock_seqid; data->arg.open_stateid = &state->stateid; data->arg.new_lock_owner = 1; data->res.open_seqid = data->arg.open_seqid; @@ -4512,10 +4517,15 @@ data->timestamp = jiffies; if (nfs4_setup_sequence(data->server, &data->arg.seq_args, - &data->res.seq_res, task)) + &data->res.seq_res, + task) == 0) { + rpc_call_start(task); return; - rpc_call_start(task); - dprintk("%s: done!, ret = %d\n", __func__, data->rpc_status); + } + nfs_release_seqid(data->arg.open_seqid); +out_release_lock_seqid: + nfs_release_seqid(data->arg.lock_seqid); + dprintk("%s: done!, ret = %d\n", __func__, task->tk_status); } static void nfs4_recover_lock_prepare(struct rpc_task *task, void *calldata) @@ -5927,13 +5937,26 @@ rpc_call_start(task); } +static void nfs41_sequence_prepare_privileged(struct rpc_task *task, void *data) +{ + rpc_task_set_priority(task, RPC_PRIORITY_PRIVILEGED); + nfs41_sequence_prepare(task, data); +} + static const struct rpc_call_ops nfs41_sequence_ops = { .rpc_call_done = nfs41_sequence_call_done, .rpc_call_prepare = nfs41_sequence_prepare, .rpc_release = nfs41_sequence_release, }; -static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp, struct rpc_cred *cred) +static const struct rpc_call_ops nfs41_sequence_privileged_ops = { + .rpc_call_done = nfs41_sequence_call_done, + .rpc_call_prepare = nfs41_sequence_prepare_privileged, + .rpc_release = nfs41_sequence_release, +}; + +static struct rpc_task *_nfs41_proc_sequence(struct nfs_client *clp, struct rpc_cred *cred, + const struct rpc_call_ops *seq_ops) { struct nfs4_sequence_data *calldata; struct rpc_message msg = { @@ -5943,7 +5966,7 @@ struct rpc_task_setup task_setup_data = { .rpc_client = clp->cl_rpcclient, .rpc_message = &msg, - .callback_ops = &nfs41_sequence_ops, + .callback_ops = seq_ops, .flags = RPC_TASK_ASYNC | RPC_TASK_SOFT, }; @@ -5970,7 +5993,7 @@ if ((renew_flags & NFS4_RENEW_TIMEOUT) == 0) return 0; - task = _nfs41_proc_sequence(clp, cred); + task = _nfs41_proc_sequence(clp, cred, &nfs41_sequence_ops); if (IS_ERR(task)) ret = PTR_ERR(task); else @@ -5984,7 +6007,7 @@ struct rpc_task *task; int ret; - task = _nfs41_proc_sequence(clp, cred); + task = _nfs41_proc_sequence(clp, cred, &nfs41_sequence_privileged_ops); if (IS_ERR(task)) { ret = PTR_ERR(task); goto out; @@ -6164,11 +6187,58 @@ dprintk("<-- %s\n", __func__); } +static size_t max_response_pages(struct nfs_server *server) +{ + u32 max_resp_sz = server->nfs_client->cl_session->fc_attrs.max_resp_sz; + return nfs_page_array_len(0, max_resp_sz); +} + +static void nfs4_free_pages(struct page **pages, size_t size) +{ + int i; + + if (!pages) + return; + + for (i = 0; i < size; i++) { + if (!pages[i]) + break; + __free_page(pages[i]); + } + kfree(pages); +} + +static struct page **nfs4_alloc_pages(size_t size, gfp_t gfp_flags) +{ + struct page **pages; + int i; + + pages = kcalloc(size, sizeof(struct page *), gfp_flags); + if (!pages) { + dprintk("%s: can't alloc array of %zu pages\n", __func__, size); + return NULL; + } + + for (i = 0; i < size; i++) { + pages[i] = alloc_page(gfp_flags); + if (!pages[i]) { + dprintk("%s: failed to allocate page\n", __func__); + nfs4_free_pages(pages, size); + return NULL; + } + } + + return pages; +} + static void nfs4_layoutget_release(void *calldata) { struct nfs4_layoutget *lgp = calldata; + struct nfs_server *server = NFS_SERVER(lgp->args.inode); + size_t max_pages = max_response_pages(server); dprintk("--> %s\n", __func__); + nfs4_free_pages(lgp->args.layout.pages, max_pages); put_nfs_open_context(lgp->args.ctx); kfree(calldata); dprintk("<-- %s\n", __func__); @@ -6180,9 +6250,10 @@ .rpc_release = nfs4_layoutget_release, }; -int nfs4_proc_layoutget(struct nfs4_layoutget *lgp) +int nfs4_proc_layoutget(struct nfs4_layoutget *lgp, gfp_t gfp_flags) { struct nfs_server *server = NFS_SERVER(lgp->args.inode); + size_t max_pages = max_response_pages(server); struct rpc_task *task; struct rpc_message msg = { .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_LAYOUTGET], @@ -6200,6 +6271,13 @@ dprintk("--> %s\n", __func__); + lgp->args.layout.pages = nfs4_alloc_pages(max_pages, gfp_flags); + if (!lgp->args.layout.pages) { + nfs4_layoutget_release(lgp); + return -ENOMEM; + } + lgp->args.layout.pglen = max_pages * PAGE_SIZE; + lgp->res.layoutp = &lgp->args.layout; lgp->res.seq_res.sr_slot = NULL; nfs41_init_sequence(&lgp->args.seq_args, &lgp->res.seq_res, 0); @@ -6209,7 +6287,8 @@ status = nfs4_wait_for_completion_rpc_task(task); if (status == 0) status = task->tk_status; - if (status == 0) + /* if layoutp->len is 0, nfs4_layoutget_prepare called rpc_exit */ + if (status == 0 && lgp->res.layoutp->len) status = pnfs_layout_process(lgp); rpc_put_task(task); dprintk("<-- %s status=%d\n", __func__, status); @@ -6245,12 +6324,8 @@ return; } spin_lock(&lo->plh_inode->i_lock); - if (task->tk_status == 0) { - if (lrp->res.lrs_present) { - pnfs_set_layout_stateid(lo, &lrp->res.stateid, true); - } else - BUG_ON(!list_empty(&lo->plh_segs)); - } + if (task->tk_status == 0 && lrp->res.lrs_present) + pnfs_set_layout_stateid(lo, &lrp->res.stateid, true); lo->plh_block_lgets--; spin_unlock(&lo->plh_inode->i_lock); dprintk("<-- %s\n", __func__); --- linux-3.5.0.orig/fs/nfs/pnfs.c +++ linux-3.5.0/fs/nfs/pnfs.c @@ -583,9 +583,6 @@ struct nfs_server *server = NFS_SERVER(ino); struct nfs4_layoutget *lgp; struct pnfs_layout_segment *lseg = NULL; - struct page **pages = NULL; - int i; - u32 max_resp_sz, max_pages; dprintk("--> %s\n", __func__); @@ -594,20 +591,6 @@ if (lgp == NULL) return NULL; - /* allocate pages for xdr post processing */ - max_resp_sz = server->nfs_client->cl_session->fc_attrs.max_resp_sz; - max_pages = nfs_page_array_len(0, max_resp_sz); - - pages = kcalloc(max_pages, sizeof(struct page *), gfp_flags); - if (!pages) - goto out_err_free; - - for (i = 0; i < max_pages; i++) { - pages[i] = alloc_page(gfp_flags); - if (!pages[i]) - goto out_err_free; - } - lgp->args.minlength = PAGE_CACHE_SIZE; if (lgp->args.minlength > range->length) lgp->args.minlength = range->length; @@ -616,39 +599,19 @@ lgp->args.type = server->pnfs_curr_ld->id; lgp->args.inode = ino; lgp->args.ctx = get_nfs_open_context(ctx); - lgp->args.layout.pages = pages; - lgp->args.layout.pglen = max_pages * PAGE_SIZE; lgp->lsegpp = &lseg; lgp->gfp_flags = gfp_flags; /* Synchronously retrieve layout information from server and * store in lseg. */ - nfs4_proc_layoutget(lgp); + nfs4_proc_layoutget(lgp, gfp_flags); if (!lseg) { /* remember that LAYOUTGET failed and suspend trying */ set_bit(lo_fail_bit(range->iomode), &lo->plh_flags); } - /* free xdr pages */ - for (i = 0; i < max_pages; i++) - __free_page(pages[i]); - kfree(pages); - return lseg; - -out_err_free: - /* free any allocated xdr pages, lgp as it's not used */ - if (pages) { - for (i = 0; i < max_pages; i++) { - if (!pages[i]) - break; - __free_page(pages[i]); - } - kfree(pages); - } - kfree(lgp); - return NULL; } /* Initiates a LAYOUTRETURN(FILE) */ --- linux-3.5.0.orig/fs/nfs/nfs4xdr.c +++ linux-3.5.0/fs/nfs/nfs4xdr.c @@ -6262,7 +6262,8 @@ status = decode_open(xdr, res); if (status) goto out; - if (decode_getfh(xdr, &res->fh) != 0) + status = decode_getfh(xdr, &res->fh); + if (status) goto out; decode_getfattr(xdr, res->f_attr, res->server); out: --- linux-3.5.0.orig/fs/nfs/inode.c +++ linux-3.5.0/fs/nfs/inode.c @@ -152,7 +152,7 @@ nfsi->attrtimeo = NFS_MINATTRTIMEO(inode); nfsi->attrtimeo_timestamp = jiffies; - memset(NFS_COOKIEVERF(inode), 0, sizeof(NFS_COOKIEVERF(inode))); + memset(NFS_I(inode)->cookieverf, 0, sizeof(NFS_I(inode)->cookieverf)); if (S_ISREG(mode) || S_ISDIR(mode) || S_ISLNK(mode)) nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ACCESS|NFS_INO_INVALID_ACL|NFS_INO_REVAL_PAGECACHE; else --- linux-3.5.0.orig/fs/nfs/dir.c +++ linux-3.5.0/fs/nfs/dir.c @@ -1123,7 +1123,7 @@ struct nfs_fattr *fattr = NULL; int error; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; parent = dget_parent(dentry); @@ -1242,11 +1242,14 @@ } +/* Ensure that we revalidate inode->i_nlink */ static void nfs_drop_nlink(struct inode *inode) { spin_lock(&inode->i_lock); - if (inode->i_nlink > 0) - drop_nlink(inode); + /* drop the inode if we're reasonably sure this is the last link */ + if (inode->i_nlink == 1) + clear_nlink(inode); + NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATTR; spin_unlock(&inode->i_lock); } @@ -1261,8 +1264,8 @@ NFS_I(inode)->cache_validity |= NFS_INO_INVALID_DATA; if (dentry->d_flags & DCACHE_NFSFS_RENAMED) { - drop_nlink(inode); nfs_complete_unlink(dentry, inode); + nfs_drop_nlink(inode); } iput(inode); } @@ -1526,7 +1529,7 @@ struct inode *dir; int openflags, ret = 0; - if (nd->flags & LOOKUP_RCU) + if (nd && nd->flags & LOOKUP_RCU) return -ECHILD; inode = dentry->d_inode; @@ -1780,10 +1783,8 @@ if (inode != NULL) { nfs_inode_return_delegation(inode); error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); - /* The VFS may want to delete this inode */ if (error == 0) nfs_drop_nlink(inode); - nfs_mark_for_revalidate(inode); } else error = NFS_PROTO(dir)->remove(dir, &dentry->d_name); if (error == -ENOENT) --- linux-3.5.0.orig/fs/nfs/file.c +++ linux-3.5.0/fs/nfs/file.c @@ -459,8 +459,11 @@ dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page); - /* Only do I/O if gfp is a superset of GFP_KERNEL */ - if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL) { + /* Only do I/O if gfp is a superset of GFP_KERNEL, and we're not + * doing this memory reclaim for a fs-related allocation. + */ + if (mapping && (gfp & GFP_KERNEL) == GFP_KERNEL && + !(current->flags & PF_FSTRANS)) { int how = FLUSH_SYNC; /* Don't let kswapd deadlock waiting for OOM RPC calls */ --- linux-3.5.0.orig/fs/nfs/write.c +++ linux-3.5.0/fs/nfs/write.c @@ -124,12 +124,16 @@ put_nfs_open_context(wdata->args.context); if (wdata->pages.pagevec != wdata->pages.page_array) kfree(wdata->pages.pagevec); - if (wdata != &write_header->rpc_data) - kfree(wdata); - else + if (wdata == &write_header->rpc_data) { wdata->header = NULL; + wdata = NULL; + } if (atomic_dec_and_test(&hdr->refcnt)) hdr->completion_ops->completion(hdr); + /* Note: we only free the rpc_task after callbacks are done. + * See the comment in rpc_free_task() for why + */ + kfree(wdata); } static void nfs_context_set_write_error(struct nfs_open_context *ctx, int error) @@ -855,7 +859,7 @@ { if (nfs_have_delegated_attributes(inode)) goto out; - if (NFS_I(inode)->cache_validity & NFS_INO_REVAL_PAGECACHE) + if (NFS_I(inode)->cache_validity & (NFS_INO_INVALID_DATA|NFS_INO_REVAL_PAGECACHE)) return false; out: return PageUptodate(page) != 0; @@ -1806,19 +1810,19 @@ nfs_wdata_mempool = mempool_create_slab_pool(MIN_POOL_WRITE, nfs_wdata_cachep); if (nfs_wdata_mempool == NULL) - return -ENOMEM; + goto out_destroy_write_cache; nfs_cdata_cachep = kmem_cache_create("nfs_commit_data", sizeof(struct nfs_commit_data), 0, SLAB_HWCACHE_ALIGN, NULL); if (nfs_cdata_cachep == NULL) - return -ENOMEM; + goto out_destroy_write_mempool; nfs_commit_mempool = mempool_create_slab_pool(MIN_POOL_COMMIT, nfs_wdata_cachep); if (nfs_commit_mempool == NULL) - return -ENOMEM; + goto out_destroy_commit_cache; /* * NFS congestion size, scale with available memory. @@ -1841,11 +1845,20 @@ nfs_congestion_kb = 256*1024; return 0; + +out_destroy_commit_cache: + kmem_cache_destroy(nfs_cdata_cachep); +out_destroy_write_mempool: + mempool_destroy(nfs_wdata_mempool); +out_destroy_write_cache: + kmem_cache_destroy(nfs_wdata_cachep); + return -ENOMEM; } void nfs_destroy_writepagecache(void) { mempool_destroy(nfs_commit_mempool); + kmem_cache_destroy(nfs_cdata_cachep); mempool_destroy(nfs_wdata_mempool); kmem_cache_destroy(nfs_wdata_cachep); } --- linux-3.5.0.orig/fs/nfs/direct.c +++ linux-3.5.0/fs/nfs/direct.c @@ -247,14 +247,6 @@ struct nfs_page *req = nfs_list_entry(hdr->pages.next); struct page *page = req->wb_page; - if (test_bit(NFS_IOHDR_EOF, &hdr->flags)) { - if (bytes > hdr->good_bytes) - zero_user(page, 0, PAGE_SIZE); - else if (hdr->good_bytes - bytes < PAGE_SIZE) - zero_user_segment(page, - hdr->good_bytes & ~PAGE_MASK, - PAGE_SIZE); - } if (!PageCompound(page)) { if (test_bit(NFS_IOHDR_ERROR, &hdr->flags)) { if (bytes < hdr->good_bytes) --- linux-3.5.0.orig/fs/nfs/client.c +++ linux-3.5.0/fs/nfs/client.c @@ -689,8 +689,7 @@ */ static void nfs_destroy_server(struct nfs_server *server) { - if (!(server->flags & NFS_MOUNT_LOCAL_FLOCK) || - !(server->flags & NFS_MOUNT_LOCAL_FCNTL)) + if (server->nlm_host) nlmclnt_done(server->nlm_host); } --- linux-3.5.0.orig/fs/nfs/nfs4state.c +++ linux-3.5.0/fs/nfs/nfs4state.c @@ -1767,8 +1767,18 @@ nfs4_begin_drain_session(clp); cred = nfs4_get_exchange_id_cred(clp); status = nfs4_proc_destroy_session(clp->cl_session, cred); - if (status && status != -NFS4ERR_BADSESSION && - status != -NFS4ERR_DEADSESSION) { + switch (status) { + case 0: + case -NFS4ERR_BADSESSION: + case -NFS4ERR_DEADSESSION: + break; + case -NFS4ERR_BACK_CHAN_BUSY: + case -NFS4ERR_DELAY: + set_bit(NFS4CLNT_SESSION_RESET, &clp->cl_state); + status = 0; + ssleep(1); + goto out; + default: status = nfs4_recovery_handle_error(clp, status); goto out; } --- linux-3.5.0.orig/fs/nfs/idmap.c +++ linux-3.5.0/fs/nfs/idmap.c @@ -63,6 +63,12 @@ struct mutex idmap_mutex; }; +struct idmap_legacy_upcalldata { + struct rpc_pipe_msg pipe_msg; + struct idmap_msg idmap_msg; + struct idmap *idmap; +}; + /** * nfs_fattr_init_names - initialise the nfs_fattr owner_name/group_name fields * @fattr: fully initialised struct nfs_fattr @@ -205,12 +211,18 @@ if (ret < 0) goto failed_put_key; + ret = register_key_type(&key_type_id_resolver_legacy); + if (ret < 0) + goto failed_reg_legacy; + set_bit(KEY_FLAG_ROOT_CAN_CLEAR, &keyring->flags); cred->thread_keyring = keyring; cred->jit_keyring = KEY_REQKEY_DEFL_THREAD_KEYRING; id_resolver_cache = cred; return 0; +failed_reg_legacy: + unregister_key_type(&key_type_id_resolver); failed_put_key: key_put(keyring); failed_put_cred: @@ -222,6 +234,7 @@ { key_revoke(id_resolver_cache->thread_keyring); unregister_key_type(&key_type_id_resolver); + unregister_key_type(&key_type_id_resolver_legacy); put_cred(id_resolver_cache); } @@ -319,6 +332,7 @@ ret = nfs_idmap_request_key(&key_type_id_resolver_legacy, name, namelen, type, data, data_size, idmap); + idmap->idmap_key_cons = NULL; mutex_unlock(&idmap->idmap_mutex); } return ret; @@ -376,16 +390,18 @@ static int nfs_idmap_legacy_upcall(struct key_construction *, const char *, void *); static ssize_t idmap_pipe_downcall(struct file *, const char __user *, size_t); +static void idmap_release_pipe(struct inode *); static void idmap_pipe_destroy_msg(struct rpc_pipe_msg *); static const struct rpc_pipe_ops idmap_upcall_ops = { .upcall = rpc_pipe_generic_upcall, .downcall = idmap_pipe_downcall, + .release_pipe = idmap_release_pipe, .destroy_msg = idmap_pipe_destroy_msg, }; static struct key_type key_type_id_resolver_legacy = { - .name = "id_resolver", + .name = "id_legacy", .instantiate = user_instantiate, .match = user_match, .revoke = user_revoke, @@ -612,7 +628,8 @@ nfs_idmap_quit_keyring(); } -static int nfs_idmap_prepare_message(char *desc, struct idmap_msg *im, +static int nfs_idmap_prepare_message(char *desc, struct idmap *idmap, + struct idmap_msg *im, struct rpc_pipe_msg *msg) { substring_t substr; @@ -655,6 +672,7 @@ const char *op, void *aux) { + struct idmap_legacy_upcalldata *data; struct rpc_pipe_msg *msg; struct idmap_msg *im; struct idmap *idmap = (struct idmap *)aux; @@ -662,33 +680,33 @@ int ret = -ENOMEM; /* msg and im are freed in idmap_pipe_destroy_msg */ - msg = kmalloc(sizeof(*msg), GFP_KERNEL); - if (!msg) - goto out0; - - im = kmalloc(sizeof(*im), GFP_KERNEL); - if (!im) + data = kmalloc(sizeof(*data), GFP_KERNEL); + if (!data) goto out1; - ret = nfs_idmap_prepare_message(key->description, im, msg); + msg = &data->pipe_msg; + im = &data->idmap_msg; + data->idmap = idmap; + + ret = nfs_idmap_prepare_message(key->description, idmap, im, msg); if (ret < 0) goto out2; + BUG_ON(idmap->idmap_key_cons != NULL); idmap->idmap_key_cons = cons; ret = rpc_queue_upcall(idmap->idmap_pipe, msg); if (ret < 0) - goto out2; + goto out3; return ret; +out3: + idmap->idmap_key_cons = NULL; out2: - kfree(im); + kfree(data); out1: - kfree(msg); -out0: - key_revoke(cons->key); - key_revoke(cons->authkey); + complete_request_key(cons, ret); return ret; } @@ -722,11 +740,18 @@ { struct rpc_inode *rpci = RPC_I(filp->f_path.dentry->d_inode); struct idmap *idmap = (struct idmap *)rpci->private; - struct key_construction *cons = idmap->idmap_key_cons; + struct key_construction *cons; struct idmap_msg im; size_t namelen_in; int ret; + /* If instantiation is successful, anyone waiting for key construction + * will have been woken up and someone else may now have used + * idmap_key_cons - so after this point we may no longer touch it. + */ + cons = ACCESS_ONCE(idmap->idmap_key_cons); + idmap->idmap_key_cons = NULL; + if (mlen != sizeof(im)) { ret = -ENOSPC; goto out; @@ -738,9 +763,8 @@ } if (!(im.im_status & IDMAP_STATUS_SUCCESS)) { - ret = mlen; - complete_request_key(idmap->idmap_key_cons, -ENOKEY); - goto out_incomplete; + ret = -ENOKEY; + goto out; } namelen_in = strnlen(im.im_name, IDMAP_NAMESZ); @@ -756,17 +780,33 @@ } out: - complete_request_key(idmap->idmap_key_cons, ret); -out_incomplete: + complete_request_key(cons, ret); return ret; } static void idmap_pipe_destroy_msg(struct rpc_pipe_msg *msg) { + struct idmap_legacy_upcalldata *data = container_of(msg, + struct idmap_legacy_upcalldata, + pipe_msg); + struct idmap *idmap = data->idmap; + struct key_construction *cons; + if (msg->errno) { + cons = ACCESS_ONCE(idmap->idmap_key_cons); + idmap->idmap_key_cons = NULL; + complete_request_key(cons, msg->errno); + } /* Free memory allocated in nfs_idmap_legacy_upcall() */ - kfree(msg->data); - kfree(msg); + kfree(data); +} + +static void +idmap_release_pipe(struct inode *inode) +{ + struct rpc_inode *rpci = RPC_I(inode); + struct idmap *idmap = (struct idmap *)rpci->private; + idmap->idmap_key_cons = NULL; } int nfs_map_name_to_uid(const struct nfs_server *server, const char *name, size_t namelen, __u32 *uid) --- linux-3.5.0.orig/fs/nfs/internal.h +++ linux-3.5.0/fs/nfs/internal.h @@ -273,8 +273,9 @@ extern void nfs_sb_deactive(struct super_block *sb); /* namespace.c */ +#define NFS_PATH_CANONICAL 1 extern char *nfs_path(char **p, struct dentry *dentry, - char *buffer, ssize_t buflen); + char *buffer, ssize_t buflen, unsigned flags); extern struct vfsmount *nfs_d_automount(struct path *path); struct vfsmount *nfs_submount(struct nfs_server *, struct dentry *, struct nfs_fh *, struct nfs_fattr *); @@ -400,7 +401,7 @@ char *buffer, ssize_t buflen) { char *dummy; - return nfs_path(&dummy, dentry, buffer, buflen); + return nfs_path(&dummy, dentry, buffer, buflen, NFS_PATH_CANONICAL); } /* --- linux-3.5.0.orig/fs/nfs/blocklayout/blocklayout.c +++ linux-3.5.0/fs/nfs/blocklayout/blocklayout.c @@ -162,25 +162,39 @@ return bio; } -static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw, +static struct bio *do_add_page_to_bio(struct bio *bio, int npg, int rw, sector_t isect, struct page *page, struct pnfs_block_extent *be, void (*end_io)(struct bio *, int err), - struct parallel_io *par) + struct parallel_io *par, + unsigned int offset, int len) { + isect = isect + (offset >> SECTOR_SHIFT); + dprintk("%s: npg %d rw %d isect %llu offset %u len %d\n", __func__, + npg, rw, (unsigned long long)isect, offset, len); retry: if (!bio) { bio = bl_alloc_init_bio(npg, isect, be, end_io, par); if (!bio) return ERR_PTR(-ENOMEM); } - if (bio_add_page(bio, page, PAGE_CACHE_SIZE, 0) < PAGE_CACHE_SIZE) { + if (bio_add_page(bio, page, len, offset) < len) { bio = bl_submit_bio(rw, bio); goto retry; } return bio; } +static struct bio *bl_add_page_to_bio(struct bio *bio, int npg, int rw, + sector_t isect, struct page *page, + struct pnfs_block_extent *be, + void (*end_io)(struct bio *, int err), + struct parallel_io *par) +{ + return do_add_page_to_bio(bio, npg, rw, isect, page, be, + end_io, par, 0, PAGE_CACHE_SIZE); +} + /* This is basically copied from mpage_end_io_read */ static void bl_end_io_read(struct bio *bio, int err) { @@ -238,8 +252,11 @@ sector_t isect, extent_length = 0; struct parallel_io *par; loff_t f_offset = rdata->args.offset; + size_t bytes_left = rdata->args.count; + unsigned int pg_offset, pg_len; struct page **pages = rdata->args.pages; int pg_index = rdata->args.pgbase >> PAGE_CACHE_SHIFT; + const bool is_dio = (header->dreq != NULL); dprintk("%s enter nr_pages %u offset %lld count %u\n", __func__, rdata->pages.npages, f_offset, (unsigned int)rdata->args.count); @@ -273,36 +290,53 @@ extent_length = min(extent_length, cow_length); } } + + if (is_dio) { + pg_offset = f_offset & ~PAGE_CACHE_MASK; + if (pg_offset + bytes_left > PAGE_CACHE_SIZE) + pg_len = PAGE_CACHE_SIZE - pg_offset; + else + pg_len = bytes_left; + + f_offset += pg_len; + bytes_left -= pg_len; + isect += (pg_offset >> SECTOR_SHIFT); + } else { + pg_offset = 0; + pg_len = PAGE_CACHE_SIZE; + } + hole = is_hole(be, isect); if (hole && !cow_read) { bio = bl_submit_bio(READ, bio); /* Fill hole w/ zeroes w/o accessing device */ dprintk("%s Zeroing page for hole\n", __func__); - zero_user_segment(pages[i], 0, PAGE_CACHE_SIZE); + zero_user_segment(pages[i], pg_offset, pg_len); print_page(pages[i]); SetPageUptodate(pages[i]); } else { struct pnfs_block_extent *be_read; be_read = (hole && cow_read) ? cow_read : be; - bio = bl_add_page_to_bio(bio, rdata->pages.npages - i, + bio = do_add_page_to_bio(bio, rdata->pages.npages - i, READ, isect, pages[i], be_read, - bl_end_io_read, par); + bl_end_io_read, par, + pg_offset, pg_len); if (IS_ERR(bio)) { header->pnfs_error = PTR_ERR(bio); bio = NULL; goto out; } } - isect += PAGE_CACHE_SECTORS; + isect += (pg_len >> SECTOR_SHIFT); extent_length -= PAGE_CACHE_SECTORS; } if ((isect << SECTOR_SHIFT) >= header->inode->i_size) { rdata->res.eof = 1; - rdata->res.count = header->inode->i_size - f_offset; + rdata->res.count = header->inode->i_size - rdata->args.offset; } else { - rdata->res.count = (isect << SECTOR_SHIFT) - f_offset; + rdata->res.count = (isect << SECTOR_SHIFT) - rdata->args.offset; } out: bl_put_extent(be); @@ -450,6 +484,106 @@ return; } +static void +bl_read_single_end_io(struct bio *bio, int error) +{ + struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; + struct page *page = bvec->bv_page; + + /* Only one page in bvec */ + unlock_page(page); +} + +static int +bl_do_readpage_sync(struct page *page, struct pnfs_block_extent *be, + unsigned int offset, unsigned int len) +{ + struct bio *bio; + struct page *shadow_page; + sector_t isect; + char *kaddr, *kshadow_addr; + int ret = 0; + + dprintk("%s: offset %u len %u\n", __func__, offset, len); + + shadow_page = alloc_page(GFP_NOFS | __GFP_HIGHMEM); + if (shadow_page == NULL) + return -ENOMEM; + + bio = bio_alloc(GFP_NOIO, 1); + if (bio == NULL) + return -ENOMEM; + + isect = (page->index << PAGE_CACHE_SECTOR_SHIFT) + + (offset / SECTOR_SIZE); + + bio->bi_sector = isect - be->be_f_offset + be->be_v_offset; + bio->bi_bdev = be->be_mdev; + bio->bi_end_io = bl_read_single_end_io; + + lock_page(shadow_page); + if (bio_add_page(bio, shadow_page, + SECTOR_SIZE, round_down(offset, SECTOR_SIZE)) == 0) { + unlock_page(shadow_page); + bio_put(bio); + return -EIO; + } + + submit_bio(READ, bio); + wait_on_page_locked(shadow_page); + if (unlikely(!test_bit(BIO_UPTODATE, &bio->bi_flags))) { + ret = -EIO; + } else { + kaddr = kmap_atomic(page); + kshadow_addr = kmap_atomic(shadow_page); + memcpy(kaddr + offset, kshadow_addr + offset, len); + kunmap_atomic(kshadow_addr); + kunmap_atomic(kaddr); + } + __free_page(shadow_page); + bio_put(bio); + + return ret; +} + +static int +bl_read_partial_page_sync(struct page *page, struct pnfs_block_extent *be, + unsigned int dirty_offset, unsigned int dirty_len, + bool full_page) +{ + int ret = 0; + unsigned int start, end; + + if (full_page) { + start = 0; + end = PAGE_CACHE_SIZE; + } else { + start = round_down(dirty_offset, SECTOR_SIZE); + end = round_up(dirty_offset + dirty_len, SECTOR_SIZE); + } + + dprintk("%s: offset %u len %d\n", __func__, dirty_offset, dirty_len); + if (!be) { + zero_user_segments(page, start, dirty_offset, + dirty_offset + dirty_len, end); + if (start == 0 && end == PAGE_CACHE_SIZE && + trylock_page(page)) { + SetPageUptodate(page); + unlock_page(page); + } + return ret; + } + + if (start != dirty_offset) + ret = bl_do_readpage_sync(page, be, start, dirty_offset - start); + + if (!ret && (dirty_offset + dirty_len < end)) + ret = bl_do_readpage_sync(page, be, dirty_offset + dirty_len, + end - dirty_offset - dirty_len); + + return ret; +} + /* Given an unmapped page, zero it or read in page for COW, page is locked * by caller. */ @@ -483,7 +617,6 @@ SetPageUptodate(page); cleanup: - bl_put_extent(cow_read); if (bh) free_buffer_head(bh); if (ret) { @@ -552,9 +685,10 @@ struct bio *bio = NULL; struct pnfs_block_extent *be = NULL, *cow_read = NULL; sector_t isect, last_isect = 0, extent_length = 0; - struct parallel_io *par; + struct parallel_io *par = NULL; loff_t offset = wdata->args.offset; size_t count = wdata->args.count; + unsigned int pg_offset, pg_len, saved_len; struct page **pages = wdata->args.pages; struct page *page; pgoff_t index; @@ -563,6 +697,13 @@ NFS_SERVER(header->inode)->pnfs_blksize >> PAGE_CACHE_SHIFT; dprintk("%s enter, %Zu@%lld\n", __func__, count, offset); + + if (header->dreq != NULL && + (!IS_ALIGNED(offset, NFS_SERVER(header->inode)->pnfs_blksize) || + !IS_ALIGNED(count, NFS_SERVER(header->inode)->pnfs_blksize))) { + dprintk("pnfsblock nonblock aligned DIO writes. Resend MDS\n"); + goto out_mds; + } /* At this point, wdata->pages is a (sequential) list of nfs_pages. * We want to write each, and if there is an error set pnfs_error * to have it redone using nfs. @@ -659,10 +800,11 @@ if (!extent_length) { /* We've used up the previous extent */ bl_put_extent(be); + bl_put_extent(cow_read); bio = bl_submit_bio(WRITE, bio); /* Get the next one */ be = bl_find_get_extent(BLK_LSEG2EXT(header->lseg), - isect, NULL); + isect, &cow_read); if (!be || !is_writable(be, isect)) { header->pnfs_error = -EINVAL; goto out; @@ -679,7 +821,26 @@ extent_length = be->be_length - (isect - be->be_f_offset); } - if (be->be_state == PNFS_BLOCK_INVALID_DATA) { + + dprintk("%s offset %lld count %Zu\n", __func__, offset, count); + pg_offset = offset & ~PAGE_CACHE_MASK; + if (pg_offset + count > PAGE_CACHE_SIZE) + pg_len = PAGE_CACHE_SIZE - pg_offset; + else + pg_len = count; + + saved_len = pg_len; + if (be->be_state == PNFS_BLOCK_INVALID_DATA && + !bl_is_sector_init(be->be_inval, isect)) { + ret = bl_read_partial_page_sync(pages[i], cow_read, + pg_offset, pg_len, true); + if (ret) { + dprintk("%s bl_read_partial_page_sync fail %d\n", + __func__, ret); + header->pnfs_error = ret; + goto out; + } + ret = bl_mark_sectors_init(be->be_inval, isect, PAGE_CACHE_SECTORS); if (unlikely(ret)) { @@ -688,15 +849,35 @@ header->pnfs_error = ret; goto out; } + + /* Expand to full page write */ + pg_offset = 0; + pg_len = PAGE_CACHE_SIZE; + } else if ((pg_offset & (SECTOR_SIZE - 1)) || + (pg_len & (SECTOR_SIZE - 1))){ + /* ahh, nasty case. We have to do sync full sector + * read-modify-write cycles. + */ + unsigned int saved_offset = pg_offset; + ret = bl_read_partial_page_sync(pages[i], be, pg_offset, + pg_len, false); + pg_offset = round_down(pg_offset, SECTOR_SIZE); + pg_len = round_up(saved_offset + pg_len, SECTOR_SIZE) + - pg_offset; } - bio = bl_add_page_to_bio(bio, wdata->pages.npages - i, WRITE, + + + bio = do_add_page_to_bio(bio, wdata->pages.npages - i, WRITE, isect, pages[i], be, - bl_end_io_write, par); + bl_end_io_write, par, + pg_offset, pg_len); if (IS_ERR(bio)) { header->pnfs_error = PTR_ERR(bio); bio = NULL; goto out; } + offset += saved_len; + count -= saved_len; isect += PAGE_CACHE_SECTORS; last_isect = isect; extent_length -= PAGE_CACHE_SECTORS; @@ -714,17 +895,16 @@ } write_done: - wdata->res.count = (last_isect << SECTOR_SHIFT) - (offset); - if (count < wdata->res.count) { - wdata->res.count = count; - } + wdata->res.count = wdata->args.count; out: bl_put_extent(be); + bl_put_extent(cow_read); bl_submit_bio(WRITE, bio); put_parallel(par); return PNFS_ATTEMPTED; out_mds: bl_put_extent(be); + bl_put_extent(cow_read); kfree(par); return PNFS_NOT_ATTEMPTED; } @@ -996,21 +1176,71 @@ return 0; } +static bool +is_aligned_req(struct nfs_page *req, unsigned int alignment) +{ + return IS_ALIGNED(req->wb_offset, alignment) && + IS_ALIGNED(req->wb_bytes, alignment); +} + +static void +bl_pg_init_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, SECTOR_SIZE)) + nfs_pageio_reset_read_mds(pgio); + else + pnfs_generic_pg_init_read(pgio, req); +} + +static bool +bl_pg_test_read(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, + struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, SECTOR_SIZE)) + return false; + + return pnfs_generic_pg_test(pgio, prev, req); +} + +void +bl_pg_init_write(struct nfs_pageio_descriptor *pgio, struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, PAGE_CACHE_SIZE)) + nfs_pageio_reset_write_mds(pgio); + else + pnfs_generic_pg_init_write(pgio, req); +} + +static bool +bl_pg_test_write(struct nfs_pageio_descriptor *pgio, struct nfs_page *prev, + struct nfs_page *req) +{ + if (pgio->pg_dreq != NULL && + !is_aligned_req(req, PAGE_CACHE_SIZE)) + return false; + + return pnfs_generic_pg_test(pgio, prev, req); +} + static const struct nfs_pageio_ops bl_pg_read_ops = { - .pg_init = pnfs_generic_pg_init_read, - .pg_test = pnfs_generic_pg_test, + .pg_init = bl_pg_init_read, + .pg_test = bl_pg_test_read, .pg_doio = pnfs_generic_pg_readpages, }; static const struct nfs_pageio_ops bl_pg_write_ops = { - .pg_init = pnfs_generic_pg_init_write, - .pg_test = pnfs_generic_pg_test, + .pg_init = bl_pg_init_write, + .pg_test = bl_pg_test_write, .pg_doio = pnfs_generic_pg_writepages, }; static struct pnfs_layoutdriver_type blocklayout_type = { .id = LAYOUT_BLOCK_VOLUME, .name = "LAYOUT_BLOCK_VOLUME", + .owner = THIS_MODULE, .read_pagelist = bl_read_pagelist, .write_pagelist = bl_write_pagelist, .alloc_layout_hdr = bl_alloc_layout_hdr, --- linux-3.5.0.orig/fs/nfs/blocklayout/blocklayout.h +++ linux-3.5.0/fs/nfs/blocklayout/blocklayout.h @@ -41,6 +41,7 @@ #define PAGE_CACHE_SECTORS (PAGE_CACHE_SIZE >> SECTOR_SHIFT) #define PAGE_CACHE_SECTOR_SHIFT (PAGE_CACHE_SHIFT - SECTOR_SHIFT) +#define SECTOR_SIZE (1 << SECTOR_SHIFT) struct block_mount_id { spinlock_t bm_lock; /* protects list */ --- linux-3.5.0.orig/fs/nfs/objlayout/objio_osd.c +++ linux-3.5.0/fs/nfs/objlayout/objio_osd.c @@ -591,6 +591,7 @@ .flags = PNFS_LAYOUTRET_ON_SETATTR | PNFS_LAYOUTRET_ON_ERROR, + .owner = THIS_MODULE, .alloc_layout_hdr = objlayout_alloc_layout_hdr, .free_layout_hdr = objlayout_free_layout_hdr, --- linux-3.5.0.orig/fs/jffs2/nodemgmt.c +++ linux-3.5.0/fs/jffs2/nodemgmt.c @@ -417,14 +417,16 @@ spin_unlock(&c->erase_completion_lock); ret = jffs2_prealloc_raw_node_refs(c, jeb, 1); - if (ret) - return ret; + /* Just lock it again and continue. Nothing much can change because we hold c->alloc_sem anyway. In fact, it's not entirely clear why we hold c->erase_completion_lock in the majority of this function... but that's a question for another (more caffeine-rich) day. */ spin_lock(&c->erase_completion_lock); + if (ret) + return ret; + waste = jeb->free_size; jffs2_link_node_ref(c, jeb, (jeb->offset + c->sector_size - waste) | REF_OBSOLETE, --- linux-3.5.0.orig/fs/jffs2/super.c +++ linux-3.5.0/fs/jffs2/super.c @@ -100,6 +100,10 @@ { struct jffs2_sb_info *c = JFFS2_SB_INFO(sb); +#ifdef CONFIG_JFFS2_FS_WRITEBUFFER + cancel_delayed_work_sync(&c->wbuf_dwork); +#endif + mutex_lock(&c->alloc_sem); jffs2_flush_wbuf_pad(c); mutex_unlock(&c->alloc_sem); --- linux-3.5.0.orig/fs/jffs2/file.c +++ linux-3.5.0/fs/jffs2/file.c @@ -138,33 +138,39 @@ struct page *pg; struct inode *inode = mapping->host; struct jffs2_inode_info *f = JFFS2_INODE_INFO(inode); + struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); + struct jffs2_raw_inode ri; + uint32_t alloc_len = 0; pgoff_t index = pos >> PAGE_CACHE_SHIFT; uint32_t pageofs = index << PAGE_CACHE_SHIFT; int ret = 0; + jffs2_dbg(1, "%s()\n", __func__); + + if (pageofs > inode->i_size) { + ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, + ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); + if (ret) + return ret; + } + + mutex_lock(&f->sem); pg = grab_cache_page_write_begin(mapping, index, flags); - if (!pg) + if (!pg) { + if (alloc_len) + jffs2_complete_reservation(c); + mutex_unlock(&f->sem); return -ENOMEM; + } *pagep = pg; - jffs2_dbg(1, "%s()\n", __func__); - - if (pageofs > inode->i_size) { + if (alloc_len) { /* Make new hole frag from old EOF to new page */ - struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); - struct jffs2_raw_inode ri; struct jffs2_full_dnode *fn; - uint32_t alloc_len; jffs2_dbg(1, "Writing new hole frag 0x%x-0x%x between current EOF and new page\n", (unsigned int)inode->i_size, pageofs); - ret = jffs2_reserve_space(c, sizeof(ri), &alloc_len, - ALLOC_NORMAL, JFFS2_SUMMARY_INODE_SIZE); - if (ret) - goto out_page; - - mutex_lock(&f->sem); memset(&ri, 0, sizeof(ri)); ri.magic = cpu_to_je16(JFFS2_MAGIC_BITMASK); @@ -191,7 +197,6 @@ if (IS_ERR(fn)) { ret = PTR_ERR(fn); jffs2_complete_reservation(c); - mutex_unlock(&f->sem); goto out_page; } ret = jffs2_add_full_dnode_to_inode(c, f, fn); @@ -206,12 +211,10 @@ jffs2_mark_node_obsolete(c, fn->raw); jffs2_free_full_dnode(fn); jffs2_complete_reservation(c); - mutex_unlock(&f->sem); goto out_page; } jffs2_complete_reservation(c); inode->i_size = pageofs; - mutex_unlock(&f->sem); } /* @@ -220,18 +223,18 @@ * case of a short-copy. */ if (!PageUptodate(pg)) { - mutex_lock(&f->sem); ret = jffs2_do_readpage_nolock(inode, pg); - mutex_unlock(&f->sem); if (ret) goto out_page; } + mutex_unlock(&f->sem); jffs2_dbg(1, "end write_begin(). pg->flags %lx\n", pg->flags); return ret; out_page: unlock_page(pg); page_cache_release(pg); + mutex_unlock(&f->sem); return ret; } --- linux-3.5.0.orig/fs/jffs2/wbuf.c +++ linux-3.5.0/fs/jffs2/wbuf.c @@ -1044,10 +1044,10 @@ ops.datbuf = NULL; ret = mtd_read_oob(c->mtd, jeb->offset, &ops); - if (ret || ops.oobretlen != ops.ooblen) { + if ((ret && !mtd_is_bitflip(ret)) || ops.oobretlen != ops.ooblen) { pr_err("cannot read OOB for EB at %08x, requested %zd bytes, read %zd bytes, error %d\n", jeb->offset, ops.ooblen, ops.oobretlen, ret); - if (!ret) + if (!ret || mtd_is_bitflip(ret)) ret = -EIO; return ret; } @@ -1086,10 +1086,10 @@ ops.datbuf = NULL; ret = mtd_read_oob(c->mtd, jeb->offset, &ops); - if (ret || ops.oobretlen != ops.ooblen) { + if ((ret && !mtd_is_bitflip(ret)) || ops.oobretlen != ops.ooblen) { pr_err("cannot read OOB for EB at %08x, requested %zd bytes, read %zd bytes, error %d\n", jeb->offset, ops.ooblen, ops.oobretlen, ret); - if (!ret) + if (!ret || mtd_is_bitflip(ret)) ret = -EIO; return ret; } --- linux-3.5.0.orig/fs/udf/super.c +++ linux-3.5.0/fs/udf/super.c @@ -1283,10 +1283,11 @@ BUG_ON(ident != TAG_IDENT_LVD); lvd = (struct logicalVolDesc *)bh->b_data; table_len = le32_to_cpu(lvd->mapTableLength); - if (sizeof(*lvd) + table_len > sb->s_blocksize) { + if (table_len > sb->s_blocksize - sizeof(*lvd)) { udf_err(sb, "error loading logical volume descriptor: " "Partition table too long (%u > %lu)\n", table_len, sb->s_blocksize - sizeof(*lvd)); + ret = 1; goto out_bh; } @@ -1331,8 +1332,10 @@ UDF_ID_SPARABLE, strlen(UDF_ID_SPARABLE))) { if (udf_load_sparable_map(sb, map, - (struct sparablePartitionMap *)gpm) < 0) + (struct sparablePartitionMap *)gpm) < 0) { + ret = 1; goto out_bh; + } } else if (!strncmp(upm2->partIdent.ident, UDF_ID_METADATA, strlen(UDF_ID_METADATA))) { --- linux-3.5.0.orig/fs/udf/inode.c +++ linux-3.5.0/fs/udf/inode.c @@ -574,6 +574,7 @@ struct udf_inode_info *iinfo = UDF_I(inode); int goal = 0, pgoal = iinfo->i_location.logicalBlockNum; int lastblock = 0; + bool isBeyondEOF; *err = 0; *new = 0; @@ -653,7 +654,7 @@ /* Are we beyond EOF? */ if (etype == -1) { int ret; - + isBeyondEOF = 1; if (count) { if (c) laarr[0] = laarr[1]; @@ -696,6 +697,7 @@ endnum = c + 1; lastblock = 1; } else { + isBeyondEOF = 0; endnum = startnum = ((count > 2) ? 2 : count); /* if the current extent is in position 0, @@ -738,10 +740,13 @@ goal, err); if (!newblocknum) { brelse(prev_epos.bh); + brelse(cur_epos.bh); + brelse(next_epos.bh); *err = -ENOSPC; return 0; } - iinfo->i_lenExtents += inode->i_sb->s_blocksize; + if (isBeyondEOF) + iinfo->i_lenExtents += inode->i_sb->s_blocksize; } /* if the extent the requsted block is located in contains multiple @@ -768,6 +773,8 @@ udf_update_extents(inode, laarr, startnum, endnum, &prev_epos); brelse(prev_epos.bh); + brelse(cur_epos.bh); + brelse(next_epos.bh); newblock = udf_get_pblock(inode->i_sb, newblocknum, iinfo->i_location.partitionReferenceNum, 0); --- linux-3.5.0.orig/fs/udf/file.c +++ linux-3.5.0/fs/udf/file.c @@ -39,20 +39,24 @@ #include "udf_i.h" #include "udf_sb.h" -static int udf_adinicb_readpage(struct file *file, struct page *page) +static void __udf_adinicb_readpage(struct page *page) { struct inode *inode = page->mapping->host; char *kaddr; struct udf_inode_info *iinfo = UDF_I(inode); - BUG_ON(!PageLocked(page)); - kaddr = kmap(page); - memset(kaddr, 0, PAGE_CACHE_SIZE); memcpy(kaddr, iinfo->i_ext.i_data + iinfo->i_lenEAttr, inode->i_size); + memset(kaddr + inode->i_size, 0, PAGE_CACHE_SIZE - inode->i_size); flush_dcache_page(page); SetPageUptodate(page); kunmap(page); +} + +static int udf_adinicb_readpage(struct file *file, struct page *page) +{ + BUG_ON(!PageLocked(page)); + __udf_adinicb_readpage(page); unlock_page(page); return 0; @@ -77,6 +81,25 @@ return 0; } +static int udf_adinicb_write_begin(struct file *file, + struct address_space *mapping, loff_t pos, + unsigned len, unsigned flags, struct page **pagep, + void **fsdata) +{ + struct page *page; + + if (WARN_ON_ONCE(pos >= PAGE_CACHE_SIZE)) + return -EIO; + page = grab_cache_page_write_begin(mapping, 0, flags); + if (!page) + return -ENOMEM; + *pagep = page; + + if (!PageUptodate(page) && len != PAGE_CACHE_SIZE) + __udf_adinicb_readpage(page); + return 0; +} + static int udf_adinicb_write_end(struct file *file, struct address_space *mapping, loff_t pos, unsigned len, unsigned copied, @@ -98,8 +121,8 @@ const struct address_space_operations udf_adinicb_aops = { .readpage = udf_adinicb_readpage, .writepage = udf_adinicb_writepage, - .write_begin = simple_write_begin, - .write_end = udf_adinicb_write_end, + .write_begin = udf_adinicb_write_begin, + .write_end = udf_adinicb_write_end, }; static ssize_t udf_file_aio_write(struct kiocb *iocb, const struct iovec *iov, --- linux-3.5.0.orig/fs/ext3/inode.c +++ linux-3.5.0/fs/ext3/inode.c @@ -3072,6 +3072,8 @@ struct ext3_inode_info *ei = EXT3_I(inode); struct buffer_head *bh = iloc->bh; int err = 0, rc, block; + int need_datasync = 0; + __le32 disksize; uid_t i_uid; gid_t i_gid; @@ -3113,7 +3115,11 @@ raw_inode->i_gid_high = 0; } raw_inode->i_links_count = cpu_to_le16(inode->i_nlink); - raw_inode->i_size = cpu_to_le32(ei->i_disksize); + disksize = cpu_to_le32(ei->i_disksize); + if (disksize != raw_inode->i_size) { + need_datasync = 1; + raw_inode->i_size = disksize; + } raw_inode->i_atime = cpu_to_le32(inode->i_atime.tv_sec); raw_inode->i_ctime = cpu_to_le32(inode->i_ctime.tv_sec); raw_inode->i_mtime = cpu_to_le32(inode->i_mtime.tv_sec); @@ -3129,8 +3135,11 @@ if (!S_ISREG(inode->i_mode)) { raw_inode->i_dir_acl = cpu_to_le32(ei->i_dir_acl); } else { - raw_inode->i_size_high = - cpu_to_le32(ei->i_disksize >> 32); + disksize = cpu_to_le32(ei->i_disksize >> 32); + if (disksize != raw_inode->i_size_high) { + raw_inode->i_size_high = disksize; + need_datasync = 1; + } if (ei->i_disksize > 0x7fffffffULL) { struct super_block *sb = inode->i_sb; if (!EXT3_HAS_RO_COMPAT_FEATURE(sb, @@ -3183,6 +3192,8 @@ ext3_clear_inode_state(inode, EXT3_STATE_NEW); atomic_set(&ei->i_sync_tid, handle->h_transaction->t_tid); + if (need_datasync) + atomic_set(&ei->i_datasync_tid, handle->h_transaction->t_tid); out_brelse: brelse (bh); ext3_std_error(inode->i_sb, err); --- linux-3.5.0.orig/fs/lockd/mon.c +++ linux-3.5.0/fs/lockd/mon.c @@ -40,6 +40,7 @@ u32 proc; char *mon_name; + char *nodename; }; struct nsm_res { @@ -94,6 +95,7 @@ .vers = 3, .proc = NLMPROC_NSM_NOTIFY, .mon_name = nsm->sm_mon_name, + .nodename = utsname()->nodename, }; struct rpc_message msg = { .rpc_argp = &args, @@ -430,7 +432,7 @@ { __be32 *p; - encode_nsm_string(xdr, utsname()->nodename); + encode_nsm_string(xdr, argp->nodename); p = xdr_reserve_space(xdr, 4 + 4 + 4); *p++ = cpu_to_be32(argp->prog); *p++ = cpu_to_be32(argp->vers); --- linux-3.5.0.orig/fs/lockd/svcproc.c +++ linux-3.5.0/fs/lockd/svcproc.c @@ -67,7 +67,8 @@ /* Obtain file pointer. Not used by FREE_ALL call. */ if (filp != NULL) { - if ((error = nlm_lookup_file(rqstp, &file, &lock->fh)) != 0) + error = cast_status(nlm_lookup_file(rqstp, &file, &lock->fh)); + if (error != 0) goto no_locks; *filp = file; --- linux-3.5.0.orig/fs/lockd/clntxdr.c +++ linux-3.5.0/fs/lockd/clntxdr.c @@ -223,7 +223,7 @@ { __be32 *p; - BUG_ON(be32_to_cpu(stat) > NLM_LCK_DENIED_GRACE_PERIOD); + WARN_ON_ONCE(be32_to_cpu(stat) > NLM_LCK_DENIED_GRACE_PERIOD); p = xdr_reserve_space(xdr, 4); *p = stat; } --- linux-3.5.0.orig/fs/lockd/clntproc.c +++ linux-3.5.0/fs/lockd/clntproc.c @@ -551,6 +551,9 @@ status = nlmclnt_block(block, req, NLMCLNT_POLL_TIMEOUT); if (status < 0) break; + /* Resend the blocking lock request after a server reboot */ + if (resp->status == nlm_lck_denied_grace_period) + continue; if (resp->status != nlm_lck_blocked) break; } --- linux-3.5.0.orig/lib/gcd.c +++ linux-3.5.0/lib/gcd.c @@ -9,6 +9,9 @@ if (a < b) swap(a, b); + + if (!b) + return a; while ((r = a % b) != 0) { a = b; b = r; --- linux-3.5.0.orig/lib/digsig.c +++ linux-3.5.0/lib/digsig.c @@ -162,10 +162,14 @@ memset(out1, 0, head); memcpy(out1 + head, p, l); + kfree(p); + err = pkcs_1_v1_5_decode_emsa(out1, len, mblen, out2, &len); + if (err) + goto err; - if (!err && len == hlen) - err = memcmp(out2, h, hlen); + if (len != hlen || memcmp(out2, h, hlen)) + err = -EINVAL; err: mpi_free(in); --- linux-3.5.0.orig/lib/genalloc.c +++ linux-3.5.0/lib/genalloc.c @@ -176,7 +176,7 @@ struct gen_pool_chunk *chunk; int nbits = size >> pool->min_alloc_order; int nbytes = sizeof(struct gen_pool_chunk) + - (nbits + BITS_PER_BYTE - 1) / BITS_PER_BYTE; + BITS_TO_LONGS(nbits) * sizeof(long); chunk = kmalloc_node(nbytes, GFP_KERNEL | __GFP_ZERO, nid); if (unlikely(chunk == NULL)) --- linux-3.5.0.orig/lib/vsprintf.c +++ linux-3.5.0/lib/vsprintf.c @@ -1030,7 +1030,8 @@ * %pK cannot be used in IRQ context because its test * for CAP_SYSLOG would be meaningless. */ - if (in_irq() || in_serving_softirq() || in_nmi()) { + if (kptr_restrict && (in_irq() || in_serving_softirq() || + in_nmi())) { if (spec.field_width == -1) spec.field_width = default_width; return string(buf, end, "pK-error", spec); --- linux-3.5.0.orig/lib/dynamic_debug.c +++ linux-3.5.0/lib/dynamic_debug.c @@ -900,7 +900,7 @@ * passes them to load_module(). This callback gets unknown params, * processes dyndbg params, rejects others. */ -int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *module) +int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *module, int all) { vpr_info("module: %s %s=\"%s\"\n", module, param, val); return ddebug_dyndbg_param_cb(param, val, module, -ENOENT); --- linux-3.5.0.orig/lib/bug.c +++ linux-3.5.0/lib/bug.c @@ -55,6 +55,7 @@ } #ifdef CONFIG_MODULES +/* Updates are protected by module mutex */ static LIST_HEAD(module_bug_list); static const struct bug_entry *module_find_bug(unsigned long bugaddr) --- linux-3.5.0.orig/net/socket.c +++ linux-3.5.0/net/socket.c @@ -522,6 +522,9 @@ if (rcu_dereference_protected(sock->wq, 1)->fasync_list) printk(KERN_ERR "sock_release: fasync list not empty!\n"); + if (test_bit(SOCK_EXTERNALLY_ALLOCATED, &sock->flags)) + return; + this_cpu_sub(sockets_in_use, 1); if (!sock->file) { iput(SOCK_INODE(sock)); @@ -2602,7 +2605,7 @@ err = sock_do_ioctl(net, sock, cmd, (unsigned long)&ktv); set_fs(old_fs); if (!err) - err = compat_put_timeval(up, &ktv); + err = compat_put_timeval(&ktv, up); return err; } @@ -2618,7 +2621,7 @@ err = sock_do_ioctl(net, sock, cmd, (unsigned long)&kts); set_fs(old_fs); if (!err) - err = compat_put_timespec(up, &kts); + err = compat_put_timespec(&kts, up); return err; } @@ -2655,6 +2658,7 @@ if (copy_from_user(&ifc32, uifc32, sizeof(struct compat_ifconf))) return -EFAULT; + memset(&ifc, 0, sizeof(ifc)); if (ifc32.ifcbuf == 0) { ifc32.ifc_len = 0; ifc.ifc_len = 0; --- linux-3.5.0.orig/net/compat.c +++ linux-3.5.0/net/compat.c @@ -221,6 +221,8 @@ { struct compat_cmsghdr __user *cm = (struct compat_cmsghdr __user *) kmsg->msg_control; struct compat_cmsghdr cmhdr; + struct compat_timeval ctv; + struct compat_timespec cts[3]; int cmlen; if (cm == NULL || kmsg->msg_controllen < sizeof(*cm)) { @@ -229,8 +231,6 @@ } if (!COMPAT_USE_64BIT_TIME) { - struct compat_timeval ctv; - struct compat_timespec cts[3]; if (level == SOL_SOCKET && type == SCM_TIMESTAMP) { struct timeval *tv = (struct timeval *)data; ctv.tv_sec = tv->tv_sec; --- linux-3.5.0.orig/net/netfilter/nf_conntrack_core.c +++ linux-3.5.0/net/netfilter/nf_conntrack_core.c @@ -249,12 +249,15 @@ { struct nf_conn *ct = (void *)ul_conntrack; struct net *net = nf_ct_net(ct); + struct nf_conntrack_ecache *ecache = nf_ct_ecache_find(ct); + + BUG_ON(ecache == NULL); if (nf_conntrack_event(IPCT_DESTROY, ct) < 0) { /* bad luck, let's retry again */ - ct->timeout.expires = jiffies + + ecache->timeout.expires = jiffies + (random32() % net->ct.sysctl_events_retry_timeout); - add_timer(&ct->timeout); + add_timer(&ecache->timeout); return; } /* we've got the event delivered, now it's dying */ @@ -268,6 +271,9 @@ void nf_ct_insert_dying_list(struct nf_conn *ct) { struct net *net = nf_ct_net(ct); + struct nf_conntrack_ecache *ecache = nf_ct_ecache_find(ct); + + BUG_ON(ecache == NULL); /* add this conntrack to the dying list */ spin_lock_bh(&nf_conntrack_lock); @@ -275,10 +281,10 @@ &net->ct.dying); spin_unlock_bh(&nf_conntrack_lock); /* set a new timer to retry event delivery */ - setup_timer(&ct->timeout, death_by_event, (unsigned long)ct); - ct->timeout.expires = jiffies + + setup_timer(&ecache->timeout, death_by_event, (unsigned long)ct); + ecache->timeout.expires = jiffies + (random32() % net->ct.sysctl_events_retry_timeout); - add_timer(&ct->timeout); + add_timer(&ecache->timeout); } EXPORT_SYMBOL_GPL(nf_ct_insert_dying_list); --- linux-3.5.0.orig/net/netfilter/nfnetlink_log.c +++ linux-3.5.0/net/netfilter/nfnetlink_log.c @@ -476,7 +476,7 @@ } if (indev && skb_mac_header_was_set(skb)) { - if (nla_put_be32(inst->skb, NFULA_HWTYPE, htons(skb->dev->type)) || + if (nla_put_be16(inst->skb, NFULA_HWTYPE, htons(skb->dev->type)) || nla_put_be16(inst->skb, NFULA_HWLEN, htons(skb->dev->hard_header_len)) || nla_put(inst->skb, NFULA_HWHEADER, skb->dev->hard_header_len, --- linux-3.5.0.orig/net/netfilter/nf_conntrack_proto_tcp.c +++ linux-3.5.0/net/netfilter/nf_conntrack_proto_tcp.c @@ -158,21 +158,18 @@ * sCL -> sSS */ /* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2 */ -/*synack*/ { sIV, sIV, sIG, sIG, sIG, sIG, sIG, sIG, sIG, sSR }, +/*synack*/ { sIV, sIV, sSR, sIV, sIV, sIV, sIV, sIV, sIV, sSR }, /* * sNO -> sIV Too late and no reason to do anything * sSS -> sIV Client can't send SYN and then SYN/ACK * sS2 -> sSR SYN/ACK sent to SYN2 in simultaneous open - * sSR -> sIG - * sES -> sIG Error: SYNs in window outside the SYN_SENT state - * are errors. Receiver will reply with RST - * and close the connection. - * Or we are not in sync and hold a dead connection. - * sFW -> sIG - * sCW -> sIG - * sLA -> sIG - * sTW -> sIG - * sCL -> sIG + * sSR -> sSR Late retransmitted SYN/ACK in simultaneous open + * sES -> sIV Invalid SYN/ACK packets sent by the client + * sFW -> sIV + * sCW -> sIV + * sLA -> sIV + * sTW -> sIV + * sCL -> sIV */ /* sNO, sSS, sSR, sES, sFW, sCW, sLA, sTW, sCL, sS2 */ /*fin*/ { sIV, sIV, sFW, sFW, sLA, sLA, sLA, sTW, sCL, sIV }, @@ -627,15 +624,9 @@ ack = sack = receiver->td_end; } - if (seq == end - && (!tcph->rst - || (seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT))) + if (tcph->rst && seq == 0 && state->state == TCP_CONNTRACK_SYN_SENT) /* - * Packets contains no data: we assume it is valid - * and check the ack value only. - * However RST segments are always validated by their - * SEQ number, except when seq == 0 (reset sent answering - * SYN. + * RST sent answering SYN. */ seq = end = sender->td_end; --- linux-3.5.0.orig/net/netfilter/xt_limit.c +++ linux-3.5.0/net/netfilter/xt_limit.c @@ -117,11 +117,11 @@ /* For SMP, we only want to use one set of state. */ r->master = priv; + /* User avg in seconds * XT_LIMIT_SCALE: convert to jiffies * + 128. */ + priv->prev = jiffies; + priv->credit = user2credits(r->avg * r->burst); /* Credits full. */ if (r->cost == 0) { - /* User avg in seconds * XT_LIMIT_SCALE: convert to jiffies * - 128. */ - priv->prev = jiffies; - priv->credit = user2credits(r->avg * r->burst); /* Credits full. */ r->credit_cap = priv->credit; /* Credits full. */ r->cost = user2credits(r->avg); } --- linux-3.5.0.orig/net/netfilter/nf_conntrack_expect.c +++ linux-3.5.0/net/netfilter/nf_conntrack_expect.c @@ -361,23 +361,6 @@ } } -static inline int refresh_timer(struct nf_conntrack_expect *i) -{ - struct nf_conn_help *master_help = nfct_help(i->master); - const struct nf_conntrack_expect_policy *p; - - if (!del_timer(&i->timeout)) - return 0; - - p = &rcu_dereference_protected( - master_help->helper, - lockdep_is_held(&nf_conntrack_lock) - )->expect_policy[i->class]; - i->timeout.expires = jiffies + p->timeout * HZ; - add_timer(&i->timeout); - return 1; -} - static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect) { const struct nf_conntrack_expect_policy *p; @@ -386,7 +369,7 @@ struct nf_conn_help *master_help = nfct_help(master); struct nf_conntrack_helper *helper; struct net *net = nf_ct_exp_net(expect); - struct hlist_node *n; + struct hlist_node *n, *next; unsigned int h; int ret = 1; @@ -395,12 +378,12 @@ goto out; } h = nf_ct_expect_dst_hash(&expect->tuple); - hlist_for_each_entry(i, n, &net->ct.expect_hash[h], hnode) { + hlist_for_each_entry_safe(i, n, next, &net->ct.expect_hash[h], hnode) { if (expect_matches(i, expect)) { - /* Refresh timer: if it's dying, ignore.. */ - if (refresh_timer(i)) { - ret = 0; - goto out; + if (del_timer(&i->timeout)) { + nf_ct_unlink_expect(i); + nf_ct_expect_put(i); + break; } } else if (expect_clash(i, expect)) { ret = -EBUSY; --- linux-3.5.0.orig/net/netfilter/ipvs/ip_vs_ctl.c +++ linux-3.5.0/net/netfilter/ipvs/ip_vs_ctl.c @@ -2759,6 +2759,7 @@ { struct ip_vs_timeout_user t; + memset(&t, 0, sizeof(t)); __ip_vs_get_timeouts(net, &t); if (copy_to_user(user, &t, sizeof(t)) != 0) ret = -EFAULT; --- linux-3.5.0.orig/net/packet/af_packet.c +++ linux-3.5.0/net/packet/af_packet.c @@ -1280,6 +1280,14 @@ spin_unlock(&f->lock); } +bool match_fanout_group(struct packet_type *ptype, struct sock * sk) +{ + if (ptype->af_packet_priv == (void*)((struct packet_sock *)sk)->fanout) + return true; + + return false; +} + static int fanout_add(struct sock *sk, u16 id, u16 type_flags) { struct packet_sock *po = pkt_sk(sk); @@ -1332,6 +1340,7 @@ match->prot_hook.dev = po->prot_hook.dev; match->prot_hook.func = packet_rcv_fanout; match->prot_hook.af_packet_priv = match; + match->prot_hook.id_match = match_fanout_group; dev_add_pack(&match->prot_hook); list_add(&match->list, &fanout_list); } @@ -1943,7 +1952,6 @@ if (likely(po->tx_ring.pg_vec)) { ph = skb_shinfo(skb)->destructor_arg; - BUG_ON(__packet_get_status(po, ph) != TP_STATUS_SENDING); BUG_ON(atomic_read(&po->tx_ring.pending) == 0); atomic_dec(&po->tx_ring.pending); __packet_set_status(po, ph, TP_STATUS_AVAILABLE); @@ -2442,13 +2450,15 @@ packet_flush_mclist(sk); - memset(&req_u, 0, sizeof(req_u)); - - if (po->rx_ring.pg_vec) + if (po->rx_ring.pg_vec) { + memset(&req_u, 0, sizeof(req_u)); packet_set_ring(sk, &req_u, 1, 0); + } - if (po->tx_ring.pg_vec) + if (po->tx_ring.pg_vec) { + memset(&req_u, 0, sizeof(req_u)); packet_set_ring(sk, &req_u, 1, 1); + } fanout_release(sk); --- linux-3.5.0.orig/net/bluetooth/smp.c +++ linux-3.5.0/net/bluetooth/smp.c @@ -31,6 +31,8 @@ #define SMP_TIMEOUT msecs_to_jiffies(30000) +#define AUTH_REQ_MASK 0x07 + static inline void swap128(u8 src[16], u8 dst[16]) { int i; @@ -229,7 +231,7 @@ req->max_key_size = SMP_MAX_ENC_KEY_SIZE; req->init_key_dist = 0; req->resp_key_dist = dist_keys; - req->auth_req = authreq; + req->auth_req = (authreq & AUTH_REQ_MASK); return; } @@ -238,7 +240,7 @@ rsp->max_key_size = SMP_MAX_ENC_KEY_SIZE; rsp->init_key_dist = 0; rsp->resp_key_dist = req->resp_key_dist & dist_keys; - rsp->auth_req = authreq; + rsp->auth_req = (authreq & AUTH_REQ_MASK); } static u8 check_enc_key_size(struct l2cap_conn *conn, __u8 max_key_size) @@ -266,10 +268,10 @@ mgmt_auth_failed(conn->hcon->hdev, conn->dst, hcon->type, hcon->dst_type, reason); - if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) { - cancel_delayed_work_sync(&conn->security_timer); + cancel_delayed_work_sync(&conn->security_timer); + + if (test_and_clear_bit(HCI_CONN_LE_SMP_PEND, &conn->hcon->flags)) smp_chan_destroy(conn); - } } #define JUST_WORKS 0x00 @@ -756,9 +758,9 @@ return 0; } -int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level) +int smp_conn_security(struct hci_conn *hcon, __u8 sec_level) { - struct hci_conn *hcon = conn->hcon; + struct l2cap_conn *conn = hcon->l2cap_data; struct smp_chan *smp = conn->smp_chan; __u8 authreq; @@ -853,6 +855,19 @@ skb_pull(skb, sizeof(code)); + /* + * The SMP context must be initialized for all other PDUs except + * pairing and security requests. If we get any other PDU when + * not initialized simply disconnect (done if this function + * returns an error). + */ + if (code != SMP_CMD_PAIRING_REQ && code != SMP_CMD_SECURITY_REQ && + !conn->smp_chan) { + BT_ERR("Unexpected SMP command 0x%02x. Disconnecting.", code); + kfree_skb(skb); + return -ENOTSUPP; + } + switch (code) { case SMP_CMD_PAIRING_REQ: reason = smp_cmd_pairing_req(conn, skb); --- linux-3.5.0.orig/net/bluetooth/hci_event.c +++ linux-3.5.0/net/bluetooth/hci_event.c @@ -1375,6 +1375,9 @@ return false; e = hci_inquiry_cache_lookup_resolve(hdev, BDADDR_ANY, NAME_NEEDED); + if (!e) + return false; + if (hci_resolve_name(hdev, e) == 0) { e->name_state = NAME_PENDING; return true; @@ -1403,12 +1406,20 @@ return; e = hci_inquiry_cache_lookup_resolve(hdev, bdaddr, NAME_PENDING); - if (e) { + /* If the device was not found in a list of found devices names of which + * are pending. there is no need to continue resolving a next name as it + * will be done upon receiving another Remote Name Request Complete + * Event */ + if (!e) + return; + + list_del(&e->list); + if (name) { e->name_state = NAME_KNOWN; - list_del(&e->list); - if (name) - mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, - e->data.rssi, name, name_len); + mgmt_remote_name(hdev, bdaddr, ACL_LINK, 0x00, + e->data.rssi, name, name_len); + } else { + e->name_state = NAME_NOT_KNOWN; } if (hci_resolve_next_name(hdev)) @@ -1772,7 +1783,12 @@ if (conn->type == ACL_LINK) { conn->state = BT_CONFIG; hci_conn_hold(conn); - conn->disc_timeout = HCI_DISCONN_TIMEOUT; + + if (!conn->out && !hci_conn_ssp_enabled(conn) && + !hci_find_link_key(hdev, &ev->bdaddr)) + conn->disc_timeout = HCI_PAIRING_TIMEOUT; + else + conn->disc_timeout = HCI_DISCONN_TIMEOUT; } else conn->state = BT_CONNECTED; @@ -2377,7 +2393,7 @@ if (ev->opcode != HCI_OP_NOP) del_timer(&hdev->cmd_timer); - if (ev->ncmd) { + if (ev->ncmd && !test_bit(HCI_RESET, &hdev->flags)) { atomic_set(&hdev->cmd_cnt, 1); if (!skb_queue_empty(&hdev->cmd_q)) queue_work(hdev->workqueue, &hdev->cmd_work); --- linux-3.5.0.orig/net/bluetooth/hci_sock.c +++ linux-3.5.0/net/bluetooth/hci_sock.c @@ -706,6 +706,7 @@ *addr_len = sizeof(*haddr); haddr->hci_family = AF_BLUETOOTH; haddr->hci_dev = hdev->id; + haddr->hci_channel= 0; release_sock(sk); return 0; @@ -1016,6 +1017,7 @@ { struct hci_filter *f = &hci_pi(sk)->filter; + memset(&uf, 0, sizeof(uf)); uf.type_mask = f->type_mask; uf.opcode = f->opcode; uf.event_mask[0] = *((u32 *) f->event_mask + 0); --- linux-3.5.0.orig/net/bluetooth/hci_core.c +++ linux-3.5.0/net/bluetooth/hci_core.c @@ -744,6 +744,8 @@ done: hci_req_unlock(hdev); hci_dev_put(hdev); + if (!ret && hdev->load_firmware) + hdev->load_firmware(hdev); return ret; } @@ -753,6 +755,8 @@ cancel_work_sync(&hdev->le_scan); + cancel_delayed_work(&hdev->power_off); + hci_req_cancel(hdev, ENODEV); hci_req_lock(hdev); @@ -1798,6 +1802,8 @@ for (i = 0; i < NUM_REASSEMBLY; i++) kfree_skb(hdev->reassembly[i]); + cancel_work_sync(&hdev->power_on); + if (!test_bit(HCI_INIT, &hdev->flags) && !test_bit(HCI_SETUP, &hdev->dev_flags)) { hci_dev_lock(hdev); --- linux-3.5.0.orig/net/bluetooth/l2cap_sock.c +++ linux-3.5.0/net/bluetooth/l2cap_sock.c @@ -246,6 +246,7 @@ BT_DBG("sock %p, sk %p", sock, sk); + memset(la, 0, sizeof(struct sockaddr_l2)); addr->sa_family = AF_BLUETOOTH; *len = sizeof(struct sockaddr_l2); @@ -595,7 +596,7 @@ break; } - if (smp_conn_security(conn, sec.level)) + if (smp_conn_security(conn->hcon, sec.level)) break; sk->sk_state = BT_CONFIG; chan->state = BT_CONFIG; --- linux-3.5.0.orig/net/bluetooth/l2cap_core.c +++ linux-3.5.0/net/bluetooth/l2cap_core.c @@ -1163,6 +1163,7 @@ sk = chan->sk; hci_conn_hold(conn->hcon); + conn->hcon->disc_timeout = HCI_DISCONN_TIMEOUT; bacpy(&bt_sk(sk)->src, conn->src); bacpy(&bt_sk(sk)->dst, conn->dst); @@ -1183,14 +1184,15 @@ static void l2cap_conn_ready(struct l2cap_conn *conn) { struct l2cap_chan *chan; + struct hci_conn *hcon = conn->hcon; BT_DBG("conn %p", conn); - if (!conn->hcon->out && conn->hcon->type == LE_LINK) + if (!hcon->out && hcon->type == LE_LINK) l2cap_le_conn_ready(conn); - if (conn->hcon->out && conn->hcon->type == LE_LINK) - smp_conn_security(conn, conn->hcon->pending_sec_level); + if (hcon->out && hcon->type == LE_LINK) + smp_conn_security(hcon, hcon->pending_sec_level); mutex_lock(&conn->chan_lock); @@ -1198,8 +1200,8 @@ l2cap_chan_lock(chan); - if (conn->hcon->type == LE_LINK) { - if (smp_conn_security(conn, chan->sec_level)) + if (hcon->type == LE_LINK) { + if (smp_conn_security(hcon, chan->sec_level)) l2cap_chan_ready(chan); } else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) { --- linux-3.5.0.orig/net/bluetooth/mgmt.c +++ linux-3.5.0/net/bluetooth/mgmt.c @@ -323,7 +323,7 @@ struct hci_dev *d; size_t rp_len; u16 count; - int i, err; + int err; BT_DBG("sock %p", sk); @@ -341,17 +341,18 @@ return -ENOMEM; } - rp->num_controllers = cpu_to_le16(count); - - i = 0; + count = 0; list_for_each_entry(d, &hci_dev_list, list) { if (test_bit(HCI_SETUP, &d->dev_flags)) continue; - rp->index[i++] = cpu_to_le16(d->id); + rp->index[count++] = cpu_to_le16(d->id); BT_DBG("Added hci%u", d->id); } + rp->num_controllers = cpu_to_le16(count); + rp_len = sizeof(*rp) + (2 * count); + read_unlock(&hci_dev_list_lock); err = cmd_complete(sk, MGMT_INDEX_NONE, MGMT_OP_READ_INDEX_LIST, 0, rp, @@ -2879,6 +2880,22 @@ if (scan) hci_send_cmd(hdev, HCI_OP_WRITE_SCAN_ENABLE, 1, &scan); + if (test_bit(HCI_SSP_ENABLED, &hdev->dev_flags)) { + u8 ssp = 1; + + hci_send_cmd(hdev, HCI_OP_WRITE_SSP_MODE, 1, &ssp); + } + + if (test_bit(HCI_LE_ENABLED, &hdev->dev_flags)) { + struct hci_cp_write_le_host_supported cp; + + cp.le = 1; + cp.simul = !!(hdev->features[6] & LMP_SIMUL_LE_BR); + + hci_send_cmd(hdev, HCI_OP_WRITE_LE_HOST_SUPPORTED, + sizeof(cp), &cp); + } + update_class(hdev); update_name(hdev, hdev->dev_name); update_eir(hdev); --- linux-3.5.0.orig/net/bluetooth/hci_conn.c +++ linux-3.5.0/net/bluetooth/hci_conn.c @@ -42,6 +42,7 @@ #include #include +#include static void hci_le_connect(struct hci_conn *conn) { @@ -627,6 +628,9 @@ { BT_DBG("conn %p", conn); + if (conn->type == LE_LINK) + return smp_conn_security(conn, sec_level); + /* For sdp we don't need the link key. */ if (sec_level == BT_SECURITY_SDP) return 1; --- linux-3.5.0.orig/net/bluetooth/hidp/core.c +++ linux-3.5.0/net/bluetooth/hidp/core.c @@ -949,7 +949,7 @@ hid->version = req->version; hid->country = req->country; - strncpy(hid->name, req->name, 128); + strncpy(hid->name, req->name, sizeof(req->name) - 1); strncpy(hid->phys, batostr(&bt_sk(session->ctrl_sock->sk)->src), 64); strncpy(hid->uniq, batostr(&bt_sk(session->ctrl_sock->sk)->dst), 64); --- linux-3.5.0.orig/net/bluetooth/rfcomm/sock.c +++ linux-3.5.0/net/bluetooth/rfcomm/sock.c @@ -486,7 +486,7 @@ long timeo; int err = 0; - lock_sock(sk); + lock_sock_nested(sk, SINGLE_DEPTH_NESTING); if (sk->sk_type != SOCK_STREAM) { err = -EINVAL; @@ -523,7 +523,7 @@ release_sock(sk); timeo = schedule_timeout(timeo); - lock_sock(sk); + lock_sock_nested(sk, SINGLE_DEPTH_NESTING); } __set_current_state(TASK_RUNNING); remove_wait_queue(sk_sleep(sk), &wait); @@ -547,6 +547,7 @@ BT_DBG("sock %p, sk %p", sock, sk); + memset(sa, 0, sizeof(*sa)); sa->rc_family = AF_BLUETOOTH; sa->rc_channel = rfcomm_pi(sk)->channel; if (peer) @@ -841,6 +842,7 @@ } sec.level = rfcomm_pi(sk)->sec_level; + sec.key_size = 0; len = min_t(unsigned int, len, sizeof(sec)); if (copy_to_user(optval, (char *) &sec, len)) --- linux-3.5.0.orig/net/bluetooth/rfcomm/tty.c +++ linux-3.5.0/net/bluetooth/rfcomm/tty.c @@ -461,7 +461,7 @@ size = sizeof(*dl) + dev_num * sizeof(*di); - dl = kmalloc(size, GFP_KERNEL); + dl = kzalloc(size, GFP_KERNEL); if (!dl) return -ENOMEM; --- linux-3.5.0.orig/net/sctp/socket.c +++ linux-3.5.0/net/sctp/socket.c @@ -1908,8 +1908,8 @@ /* Break the message into multiple chunks of maximum size. */ datamsg = sctp_datamsg_from_user(asoc, sinfo, msg, msg_len); - if (!datamsg) { - err = -ENOMEM; + if (IS_ERR(datamsg)) { + err = PTR_ERR(datamsg); goto out_free; } @@ -3375,7 +3375,7 @@ ret = sctp_auth_set_key(sctp_sk(sk)->ep, asoc, authkey); out: - kfree(authkey); + kzfree(authkey); return ret; } --- linux-3.5.0.orig/net/sctp/outqueue.c +++ linux-3.5.0/net/sctp/outqueue.c @@ -223,7 +223,7 @@ /* Free the outqueue structure and any related pending chunks. */ -void sctp_outq_teardown(struct sctp_outq *q) +static void __sctp_outq_teardown(struct sctp_outq *q) { struct sctp_transport *transport; struct list_head *lchunk, *temp; @@ -276,8 +276,6 @@ sctp_chunk_free(chunk); } - q->error = 0; - /* Throw away any leftover control chunks. */ list_for_each_entry_safe(chunk, tmp, &q->control_chunk_list, list) { list_del_init(&chunk->list); @@ -285,11 +283,17 @@ } } +void sctp_outq_teardown(struct sctp_outq *q) +{ + __sctp_outq_teardown(q); + sctp_outq_init(q->asoc, q); +} + /* Free the outqueue structure and any related pending chunks. */ void sctp_outq_free(struct sctp_outq *q) { /* Throw away leftover chunks. */ - sctp_outq_teardown(q); + __sctp_outq_teardown(q); /* If we were kmalloc()'d, free the memory. */ if (q->malloced) --- linux-3.5.0.orig/net/sctp/sm_sideeffect.c +++ linux-3.5.0/net/sctp/sm_sideeffect.c @@ -1609,8 +1609,9 @@ asoc->outqueue.outstanding_bytes; sackh.num_gap_ack_blocks = 0; sackh.num_dup_tsns = 0; + chunk->subh.sack_hdr = &sackh; sctp_add_cmd_sf(commands, SCTP_CMD_PROCESS_SACK, - SCTP_SACKH(&sackh)); + SCTP_CHUNK(chunk)); break; case SCTP_CMD_DISCARD_PACKET: --- linux-3.5.0.orig/net/sctp/endpointola.c +++ linux-3.5.0/net/sctp/endpointola.c @@ -248,6 +248,8 @@ /* Final destructor for endpoint. */ static void sctp_endpoint_destroy(struct sctp_endpoint *ep) { + int i; + SCTP_ASSERT(ep->base.dead, "Endpoint is not dead", return); /* Free up the HMAC transform. */ @@ -270,6 +272,9 @@ sctp_inq_free(&ep->base.inqueue); sctp_bind_addr_free(&ep->base.bind_addr); + for (i = 0; i < SCTP_HOW_MANY_SECRETS; ++i) + memset(&ep->secret_key[i], 0, SCTP_SECRET_SIZE); + /* Remove and free the port */ if (sctp_sk(ep->base.sk)->bind_hash) sctp_put_port(ep->base.sk); --- linux-3.5.0.orig/net/sctp/chunk.c +++ linux-3.5.0/net/sctp/chunk.c @@ -183,7 +183,7 @@ msg = sctp_datamsg_new(GFP_KERNEL); if (!msg) - return NULL; + return ERR_PTR(-ENOMEM); /* Note: Calculate this outside of the loop, so that all fragments * have the same expiration. @@ -280,11 +280,14 @@ chunk = sctp_make_datafrag_empty(asoc, sinfo, len, frag, 0); - if (!chunk) + if (!chunk) { + err = -ENOMEM; goto errout; + } + err = sctp_user_addto_chunk(chunk, offset, len, msgh->msg_iov); if (err < 0) - goto errout; + goto errout_chunk_free; offset += len; @@ -315,8 +318,10 @@ chunk = sctp_make_datafrag_empty(asoc, sinfo, over, frag, 0); - if (!chunk) + if (!chunk) { + err = -ENOMEM; goto errout; + } err = sctp_user_addto_chunk(chunk, offset, over,msgh->msg_iov); @@ -324,7 +329,7 @@ __skb_pull(chunk->skb, (__u8 *)chunk->chunk_hdr - (__u8 *)chunk->skb->data); if (err < 0) - goto errout; + goto errout_chunk_free; sctp_datamsg_assign(msg, chunk); list_add_tail(&chunk->frag_list, &msg->chunks); @@ -332,6 +337,9 @@ return msg; +errout_chunk_free: + sctp_chunk_free(chunk); + errout: list_for_each_safe(pos, temp, &msg->chunks) { list_del_init(pos); @@ -339,7 +347,7 @@ sctp_chunk_free(chunk); } sctp_datamsg_put(msg); - return NULL; + return ERR_PTR(err); } /* Check whether this message has expired. */ --- linux-3.5.0.orig/net/sctp/output.c +++ linux-3.5.0/net/sctp/output.c @@ -339,6 +339,25 @@ return retval; } +static void sctp_packet_release_owner(struct sk_buff *skb) +{ + sk_free(skb->sk); +} + +static void sctp_packet_set_owner_w(struct sk_buff *skb, struct sock *sk) +{ + skb_orphan(skb); + skb->sk = sk; + skb->destructor = sctp_packet_release_owner; + + /* + * The data chunks have already been accounted for in sctp_sendmsg(), + * therefore only reserve a single byte to keep socket around until + * the packet has been transmitted. + */ + atomic_inc(&sk->sk_wmem_alloc); +} + /* All packets are sent to the network through this function from * sctp_outq_tail(). * @@ -380,7 +399,7 @@ /* Set the owning socket so that we know where to get the * destination IP address. */ - skb_set_owner_w(nskb, sk); + sctp_packet_set_owner_w(nskb, sk); if (!sctp_transport_dst_check(tp)) { sctp_transport_route(tp, NULL, sctp_sk(sk)); --- linux-3.5.0.orig/net/8021q/vlan_core.c +++ linux-3.5.0/net/8021q/vlan_core.c @@ -5,7 +5,7 @@ #include #include "vlan.h" -bool vlan_do_receive(struct sk_buff **skbp, bool last_handler) +bool vlan_do_receive(struct sk_buff **skbp) { struct sk_buff *skb = *skbp; u16 vlan_id = skb->vlan_tci & VLAN_VID_MASK; @@ -13,14 +13,8 @@ struct vlan_pcpu_stats *rx_stats; vlan_dev = vlan_find_dev(skb->dev, vlan_id); - if (!vlan_dev) { - /* Only the last call to vlan_do_receive() should change - * pkt_type to PACKET_OTHERHOST - */ - if (vlan_id && last_handler) - skb->pkt_type = PACKET_OTHERHOST; + if (!vlan_dev) return false; - } skb = *skbp = skb_share_check(skb, GFP_ATOMIC); if (unlikely(!skb)) @@ -105,7 +99,6 @@ return NULL; memmove(skb->data - ETH_HLEN, skb->data - VLAN_ETH_HLEN, 2 * ETH_ALEN); skb->mac_header += VLAN_HLEN; - skb_reset_mac_len(skb); return skb; } @@ -139,6 +132,8 @@ skb_reset_network_header(skb); skb_reset_transport_header(skb); + skb_reset_mac_len(skb); + return skb; err_free: --- linux-3.5.0.orig/net/llc/af_llc.c +++ linux-3.5.0/net/llc/af_llc.c @@ -969,14 +969,13 @@ struct sockaddr_llc sllc; struct sock *sk = sock->sk; struct llc_sock *llc = llc_sk(sk); - int rc = 0; + int rc = -EBADF; memset(&sllc, 0, sizeof(sllc)); lock_sock(sk); if (sock_flag(sk, SOCK_ZAPPED)) goto out; *uaddrlen = sizeof(sllc); - memset(uaddr, 0, *uaddrlen); if (peer) { rc = -ENOTCONN; if (sk->sk_state != TCP_ESTABLISHED) --- linux-3.5.0.orig/net/openvswitch/vport-internal_dev.c +++ linux-3.5.0/net/openvswitch/vport-internal_dev.c @@ -24,6 +24,9 @@ #include #include +#include +#include + #include "datapath.h" #include "vport-internal_dev.h" #include "vport-netdev.h" @@ -209,6 +212,11 @@ int len; len = skb->len; + + skb_dst_drop(skb); + nf_reset(skb); + secpath_reset(skb); + skb->dev = netdev; skb->pkt_type = PACKET_HOST; skb->protocol = eth_type_trans(skb, netdev); --- linux-3.5.0.orig/net/bridge/br_stp_bpdu.c +++ linux-3.5.0/net/bridge/br_stp_bpdu.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -40,6 +41,7 @@ skb->dev = p->dev; skb->protocol = htons(ETH_P_802_2); + skb->priority = TC_PRIO_CONTROL; skb_reserve(skb, LLC_RESERVE); memcpy(__skb_put(skb, length), data, length); --- linux-3.5.0.orig/net/bridge/br_netfilter.c +++ linux-3.5.0/net/bridge/br_netfilter.c @@ -256,6 +256,9 @@ struct net_device *dev = skb->dev; u32 len; + if (!pskb_may_pull(skb, sizeof(struct iphdr))) + goto inhdr_error; + iph = ip_hdr(skb); opt = &(IPCB(skb)->opt); --- linux-3.5.0.orig/net/mac80211/ibss.c +++ linux-3.5.0/net/mac80211/ibss.c @@ -665,8 +665,8 @@ printk(KERN_DEBUG "%s: No active IBSS STAs - trying to scan for other " "IBSS networks with same SSID (merge)\n", sdata->name); - ieee80211_request_internal_scan(sdata, - ifibss->ssid, ifibss->ssid_len, NULL); + ieee80211_request_ibss_scan(sdata, ifibss->ssid, ifibss->ssid_len, + NULL); } static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata) @@ -773,9 +773,8 @@ printk(KERN_DEBUG "%s: Trigger new scan to find an IBSS to " "join\n", sdata->name); - ieee80211_request_internal_scan(sdata, - ifibss->ssid, ifibss->ssid_len, - ifibss->fixed_channel ? ifibss->channel : NULL); + ieee80211_request_ibss_scan(sdata, ifibss->ssid, + ifibss->ssid_len, chan); } else { int interval = IEEE80211_SCAN_INTERVAL; @@ -1111,7 +1110,7 @@ sdata->u.ibss.state = IEEE80211_IBSS_MLME_SEARCH; sdata->u.ibss.ibss_join_req = jiffies; - memcpy(sdata->u.ibss.ssid, params->ssid, IEEE80211_MAX_SSID_LEN); + memcpy(sdata->u.ibss.ssid, params->ssid, params->ssid_len); sdata->u.ibss.ssid_len = params->ssid_len; mutex_unlock(&sdata->u.ibss.mtx); @@ -1154,10 +1153,6 @@ mutex_lock(&sdata->u.ibss.mtx); - sdata->u.ibss.state = IEEE80211_IBSS_MLME_SEARCH; - memset(sdata->u.ibss.bssid, 0, ETH_ALEN); - sdata->u.ibss.ssid_len = 0; - active_ibss = ieee80211_sta_active_ibss(sdata); if (!active_ibss && !is_zero_ether_addr(ifibss->bssid)) { @@ -1178,6 +1173,10 @@ } } + ifibss->state = IEEE80211_IBSS_MLME_SEARCH; + memset(ifibss->bssid, 0, ETH_ALEN); + ifibss->ssid_len = 0; + sta_info_flush(sdata->local, sdata); spin_lock_bh(&ifibss->incomplete_lock); --- linux-3.5.0.orig/net/mac80211/wpa.c +++ linux-3.5.0/net/mac80211/wpa.c @@ -106,7 +106,8 @@ if (status->flag & RX_FLAG_MMIC_ERROR) goto mic_fail; - if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key) + if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key && + rx->key->conf.cipher == WLAN_CIPHER_SUITE_TKIP) goto update_iv; return RX_CONTINUE; --- linux-3.5.0.orig/net/mac80211/scan.c +++ linux-3.5.0/net/mac80211/scan.c @@ -112,19 +112,6 @@ bss->valid_data |= IEEE80211_BSS_VALID_ERP; } - if (elems->tim && (!elems->parse_error || - !(bss->valid_data & IEEE80211_BSS_VALID_DTIM))) { - struct ieee80211_tim_ie *tim_ie = - (struct ieee80211_tim_ie *)elems->tim; - bss->dtim_period = tim_ie->dtim_period; - if (!elems->parse_error) - bss->valid_data |= IEEE80211_BSS_VALID_DTIM; - } - - /* If the beacon had no TIM IE, or it was invalid, use 1 */ - if (beacon && !bss->dtim_period) - bss->dtim_period = 1; - /* replace old supported rates if we get new values */ if (!elems->parse_error || !(bss->valid_data & IEEE80211_BSS_VALID_RATES)) { @@ -315,7 +302,7 @@ if (!was_hw_scan) { ieee80211_configure_filter(local); drv_sw_scan_complete(local); - ieee80211_offchannel_return(local, true); + ieee80211_offchannel_return(local); } ieee80211_recalc_idle(local); @@ -360,7 +347,7 @@ local->next_scan_state = SCAN_DECISION; local->scan_channel_idx = 0; - ieee80211_offchannel_stop_vifs(local, true); + ieee80211_offchannel_stop_vifs(local); ieee80211_configure_filter(local); @@ -679,12 +666,8 @@ local->scan_channel = NULL; ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_CHANNEL); - /* - * Re-enable vifs and beaconing. Leave PS - * in off-channel state..will put that back - * on-channel at the end of scanning. - */ - ieee80211_offchannel_return(local, false); + /* disable PS */ + ieee80211_offchannel_return(local); *next_delay = HZ / 5; /* afterwards, resume scan & go to next channel */ @@ -694,8 +677,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local, unsigned long *next_delay) { - /* PS already is in off-channel mode */ - ieee80211_offchannel_stop_vifs(local, false); + ieee80211_offchannel_stop_vifs(local); if (local->ops->flush) { drv_flush(local, false); @@ -817,9 +799,9 @@ return res; } -int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, - const u8 *ssid, u8 ssid_len, - struct ieee80211_channel *chan) +int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, + const u8 *ssid, u8 ssid_len, + struct ieee80211_channel *chan) { struct ieee80211_local *local = sdata->local; int ret = -EBUSY; @@ -833,22 +815,36 @@ /* fill internal scan request */ if (!chan) { - int i, nchan = 0; + int i, max_n; + int n_ch = 0; for (band = 0; band < IEEE80211_NUM_BANDS; band++) { if (!local->hw.wiphy->bands[band]) continue; - for (i = 0; - i < local->hw.wiphy->bands[band]->n_channels; - i++) { - local->int_scan_req->channels[nchan] = + + max_n = local->hw.wiphy->bands[band]->n_channels; + for (i = 0; i < max_n; i++) { + struct ieee80211_channel *tmp_ch = &local->hw.wiphy->bands[band]->channels[i]; - nchan++; + + if (tmp_ch->flags & (IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_DISABLED)) + continue; + + local->int_scan_req->channels[n_ch] = tmp_ch; + n_ch++; } } - local->int_scan_req->n_channels = nchan; + if (WARN_ON_ONCE(n_ch == 0)) + goto unlock; + + local->int_scan_req->n_channels = n_ch; } else { + if (WARN_ON_ONCE(chan->flags & (IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_DISABLED))) + goto unlock; + local->int_scan_req->channels[0] = chan; local->int_scan_req->n_channels = 1; } --- linux-3.5.0.orig/net/mac80211/cfg.c +++ linux-3.5.0/net/mac80211/cfg.c @@ -151,7 +151,17 @@ sta = sta_info_get(sdata, mac_addr); else sta = sta_info_get_bss(sdata, mac_addr); - if (!sta) { + /* + * The ASSOC test makes sure the driver is ready to + * receive the key. When wpa_supplicant has roamed + * using FT, it attempts to set the key before + * association has completed, this rejects that attempt + * so it will set the key again after assocation. + * + * TODO: accept the key if we have a station entry and + * add it to the device after the station. + */ + if (!sta || !test_sta_flag(sta, WLAN_STA_ASSOC)) { ieee80211_key_free(sdata->local, key); err = -ENOENT; goto out_unlock; --- linux-3.5.0.orig/net/mac80211/util.c +++ linux-3.5.0/net/mac80211/util.c @@ -268,6 +268,10 @@ void ieee80211_propagate_queue_wake(struct ieee80211_local *local, int queue) { struct ieee80211_sub_if_data *sdata; + int n_acs = IEEE80211_NUM_ACS; + + if (local->hw.queues < IEEE80211_NUM_ACS) + n_acs = 1; list_for_each_entry_rcu(sdata, &local->interfaces, list) { int ac; @@ -279,7 +283,7 @@ local->queue_stop_reasons[sdata->vif.cab_queue] != 0) continue; - for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { + for (ac = 0; ac < n_acs; ac++) { int ac_queue = sdata->vif.hw_queue[ac]; if (ac_queue == queue || @@ -341,6 +345,7 @@ { struct ieee80211_local *local = hw_to_local(hw); struct ieee80211_sub_if_data *sdata; + int n_acs = IEEE80211_NUM_ACS; trace_stop_queue(local, queue, reason); @@ -352,11 +357,14 @@ __set_bit(reason, &local->queue_stop_reasons[queue]); + if (local->hw.queues < IEEE80211_NUM_ACS) + n_acs = 1; + rcu_read_lock(); list_for_each_entry_rcu(sdata, &local->interfaces, list) { int ac; - for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { + for (ac = 0; ac < n_acs; ac++) { if (sdata->vif.hw_queue[ac] == queue || sdata->vif.cab_queue == queue) netif_stop_subqueue(sdata->dev, ac); @@ -392,7 +400,7 @@ int queue = info->hw_queue; if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); return; } @@ -417,7 +425,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } @@ -620,13 +628,39 @@ break; } - if (id != WLAN_EID_VENDOR_SPECIFIC && - id != WLAN_EID_QUIET && - test_bit(id, seen_elems)) { - elems->parse_error = true; - left -= elen; - pos += elen; - continue; + switch (id) { + case WLAN_EID_SSID: + case WLAN_EID_SUPP_RATES: + case WLAN_EID_FH_PARAMS: + case WLAN_EID_DS_PARAMS: + case WLAN_EID_CF_PARAMS: + case WLAN_EID_TIM: + case WLAN_EID_IBSS_PARAMS: + case WLAN_EID_CHALLENGE: + case WLAN_EID_RSN: + case WLAN_EID_ERP_INFO: + case WLAN_EID_EXT_SUPP_RATES: + case WLAN_EID_HT_CAPABILITY: + case WLAN_EID_HT_OPERATION: + case WLAN_EID_MESH_ID: + case WLAN_EID_MESH_CONFIG: + case WLAN_EID_PEER_MGMT: + case WLAN_EID_PREQ: + case WLAN_EID_PREP: + case WLAN_EID_PERR: + case WLAN_EID_RANN: + case WLAN_EID_CHANNEL_SWITCH: + case WLAN_EID_EXT_CHANSWITCH_ANN: + case WLAN_EID_COUNTRY: + case WLAN_EID_PWR_CONSTRAINT: + case WLAN_EID_TIMEOUT_INTERVAL: + if (test_bit(id, seen_elems)) { + elems->parse_error = true; + left -= elen; + pos += elen; + continue; + } + break; } if (calc_crc && id < 64 && (filter & (1ULL << id))) @@ -1366,6 +1400,8 @@ list_for_each_entry(sdata, &local->interfaces, list) { if (sdata->vif.type != NL80211_IFTYPE_STATION) continue; + if (!sdata->u.mgd.associated) + continue; ieee80211_send_nullfunc(local, sdata, 0); } --- linux-3.5.0.orig/net/mac80211/mesh.c +++ linux-3.5.0/net/mac80211/mesh.c @@ -621,6 +621,7 @@ del_timer_sync(&sdata->u.mesh.housekeeping_timer); del_timer_sync(&sdata->u.mesh.mesh_path_root_timer); + del_timer_sync(&sdata->u.mesh.mesh_path_timer); /* * If the timer fired while we waited for it, it will have * requeued the work. Now the work will be running again --- linux-3.5.0.orig/net/mac80211/sta_info.c +++ linux-3.5.0/net/mac80211/sta_info.c @@ -591,7 +591,7 @@ */ if (!skb) break; - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } /* @@ -622,7 +622,7 @@ printk(KERN_DEBUG "Buffered frame expired (STA %pM)\n", sta->sta.addr); #endif - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } /* @@ -738,8 +738,8 @@ for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { local->total_ps_buffered -= skb_queue_len(&sta->ps_tx_buf[ac]); - __skb_queue_purge(&sta->ps_tx_buf[ac]); - __skb_queue_purge(&sta->tx_filtered[ac]); + ieee80211_purge_tx_queue(&local->hw, &sta->ps_tx_buf[ac]); + ieee80211_purge_tx_queue(&local->hw, &sta->tx_filtered[ac]); } #ifdef CONFIG_MAC80211_MESH @@ -774,7 +774,7 @@ tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]); if (!tid_tx) continue; - __skb_queue_purge(&tid_tx->pending); + ieee80211_purge_tx_queue(&local->hw, &tid_tx->pending); kfree(tid_tx); } @@ -844,7 +844,7 @@ void sta_info_stop(struct ieee80211_local *local) { - del_timer(&local->sta_cleanup); + del_timer_sync(&local->sta_cleanup); sta_info_flush(local, NULL); } @@ -959,6 +959,7 @@ struct ieee80211_local *local = sdata->local; struct sk_buff_head pending; int filtered = 0, buffered = 0, ac; + unsigned long flags; clear_sta_flag(sta, WLAN_STA_SP); @@ -974,12 +975,16 @@ for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { int count = skb_queue_len(&pending), tmp; + spin_lock_irqsave(&sta->tx_filtered[ac].lock, flags); skb_queue_splice_tail_init(&sta->tx_filtered[ac], &pending); + spin_unlock_irqrestore(&sta->tx_filtered[ac].lock, flags); tmp = skb_queue_len(&pending); filtered += tmp - count; count = tmp; + spin_lock_irqsave(&sta->ps_tx_buf[ac].lock, flags); skb_queue_splice_tail_init(&sta->ps_tx_buf[ac], &pending); + spin_unlock_irqrestore(&sta->ps_tx_buf[ac].lock, flags); tmp = skb_queue_len(&pending); buffered += tmp - count; } --- linux-3.5.0.orig/net/mac80211/work.c +++ linux-3.5.0/net/mac80211/work.c @@ -150,7 +150,7 @@ } if (!started && !local->tmp_channel) { - ieee80211_offchannel_stop_vifs(local, true); + ieee80211_offchannel_stop_vifs(local); local->tmp_channel = wk->chan; local->tmp_channel_type = wk->chan_type; @@ -222,7 +222,7 @@ local->tmp_channel = NULL; ieee80211_hw_config(local, 0); - ieee80211_offchannel_return(local, true); + ieee80211_offchannel_return(local); /* give connection some time to breathe */ run_again(local, jiffies + HZ/2); --- linux-3.5.0.orig/net/mac80211/rx.c +++ linux-3.5.0/net/mac80211/rx.c @@ -514,6 +514,11 @@ if (ieee80211_is_action(hdr->frame_control)) { u8 category; + + /* make sure category field is present */ + if (rx->skb->len < IEEE80211_MIN_ACTION_SIZE) + return RX_DROP_MONITOR; + mgmt = (struct ieee80211_mgmt *)hdr; category = mgmt->u.action.category; if (category != WLAN_CATEGORY_MESH_ACTION && @@ -869,14 +874,16 @@ */ if (rx->sta && rx->sdata->vif.type == NL80211_IFTYPE_STATION && ieee80211_is_data_present(hdr->frame_control)) { - u16 ethertype; - u8 *payload; + unsigned int hdrlen; + __be16 ethertype; - payload = rx->skb->data + - ieee80211_hdrlen(hdr->frame_control); - ethertype = (payload[6] << 8) | payload[7]; - if (cpu_to_be16(ethertype) == - rx->sdata->control_port_protocol) + hdrlen = ieee80211_hdrlen(hdr->frame_control); + + if (rx->skb->len < hdrlen + 8) + return RX_DROP_MONITOR; + + skb_copy_bits(rx->skb, hdrlen + 6, ðertype, 2); + if (ethertype == rx->sdata->control_port_protocol) return RX_CONTINUE; } @@ -1465,11 +1472,14 @@ hdr = (struct ieee80211_hdr *)rx->skb->data; fc = hdr->frame_control; + + if (ieee80211_is_ctl(fc)) + return RX_CONTINUE; + sc = le16_to_cpu(hdr->seq_ctrl); frag = sc & IEEE80211_SCTL_FRAG; if (likely((!ieee80211_has_morefrags(fc) && frag == 0) || - (rx->skb)->len < 24 || is_multicast_ether_addr(hdr->addr1))) { /* not fragmented */ goto out; @@ -1892,6 +1902,20 @@ hdr = (struct ieee80211_hdr *) skb->data; hdrlen = ieee80211_hdrlen(hdr->frame_control); + + /* make sure fixed part of mesh header is there, also checks skb len */ + if (!pskb_may_pull(rx->skb, hdrlen + 6)) + return RX_DROP_MONITOR; + + mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); + + /* make sure full mesh header is there, also checks skb len */ + if (!pskb_may_pull(rx->skb, + hdrlen + ieee80211_get_mesh_hdrlen(mesh_hdr))) + return RX_DROP_MONITOR; + + /* reload pointers */ + hdr = (struct ieee80211_hdr *) skb->data; mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); /* frame is in RMC, don't forward */ @@ -1900,7 +1924,8 @@ mesh_rmc_check(hdr->addr3, mesh_hdr, rx->sdata)) return RX_DROP_MONITOR; - if (!ieee80211_is_data(hdr->frame_control)) + if (!ieee80211_is_data(hdr->frame_control) || + !(status->rx_flags & IEEE80211_RX_RA_MATCH)) return RX_CONTINUE; if (!mesh_hdr->ttl) @@ -1914,9 +1939,12 @@ if (is_multicast_ether_addr(hdr->addr1)) { mpp_addr = hdr->addr3; proxied_addr = mesh_hdr->eaddr1; - } else { + } else if (mesh_hdr->flags & MESH_FLAGS_AE_A5_A6) { + /* has_a4 already checked in ieee80211_rx_mesh_check */ mpp_addr = hdr->addr4; proxied_addr = mesh_hdr->eaddr2; + } else { + return RX_DROP_MONITOR; } rcu_read_lock(); @@ -1944,9 +1972,6 @@ } skb_set_queue_mapping(skb, q); - if (!(status->rx_flags & IEEE80211_RX_RA_MATCH)) - goto out; - if (!--mesh_hdr->ttl) { IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_ttl); return RX_DROP_MONITOR; @@ -2357,6 +2382,10 @@ } break; case WLAN_CATEGORY_SELF_PROTECTED: + if (len < (IEEE80211_MIN_ACTION_SIZE + + sizeof(mgmt->u.action.u.self_prot.action_code))) + break; + switch (mgmt->u.action.u.self_prot.action_code) { case WLAN_SP_MESH_PEERING_OPEN: case WLAN_SP_MESH_PEERING_CLOSE: @@ -2375,6 +2404,10 @@ } break; case WLAN_CATEGORY_MESH_ACTION: + if (len < (IEEE80211_MIN_ACTION_SIZE + + sizeof(mgmt->u.action.u.mesh_action.action_code))) + break; + if (!ieee80211_vif_is_mesh(&sdata->vif)) break; if (mesh_action_is_path_sel(mgmt) && @@ -2921,10 +2954,15 @@ test_bit(SCAN_SW_SCANNING, &local->scanning))) status->rx_flags |= IEEE80211_RX_IN_SCAN; - if (ieee80211_is_mgmt(fc)) - err = skb_linearize(skb); - else + if (ieee80211_is_mgmt(fc)) { + /* drop frame if too short for header */ + if (skb->len < ieee80211_hdrlen(fc)) + err = -ENOBUFS; + else + err = skb_linearize(skb); + } else { err = !pskb_may_pull(skb, ieee80211_hdrlen(fc)); + } if (err) { dev_kfree_skb(skb); --- linux-3.5.0.orig/net/mac80211/status.c +++ linux-3.5.0/net/mac80211/status.c @@ -34,7 +34,7 @@ skb_queue_len(&local->skb_queue_unreliable); while (tmp > IEEE80211_IRQSAFE_QUEUE_LIMIT && (skb = skb_dequeue(&local->skb_queue_unreliable))) { - dev_kfree_skb_irq(skb); + ieee80211_free_txskb(hw, skb); tmp--; I802_DEBUG_INC(local->tx_status_drop); } @@ -162,7 +162,7 @@ skb_queue_len(&sta->tx_filtered[ac]), !!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies); #endif - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); } static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid) @@ -435,7 +435,11 @@ IEEE80211_BAR_CTRL_TID_INFO_MASK) >> IEEE80211_BAR_CTRL_TID_INFO_SHIFT; - ieee80211_set_bar_pending(sta, tid, ssn); + if (local->hw.flags & + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL) + ieee80211_stop_tx_ba_session(&sta->sta, tid); + else + ieee80211_set_bar_pending(sta, tid, ssn); } } @@ -666,3 +670,12 @@ dev_kfree_skb_any(skb); } EXPORT_SYMBOL(ieee80211_free_txskb); + +void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, + struct sk_buff_head *skbs) +{ + struct sk_buff *skb; + + while ((skb = __skb_dequeue(skbs))) + ieee80211_free_txskb(hw, skb); +} --- linux-3.5.0.orig/net/mac80211/tx.c +++ linux-3.5.0/net/mac80211/tx.c @@ -358,7 +358,7 @@ total += skb_queue_len(&sta->ps_tx_buf[ac]); if (skb) { purged++; - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); break; } } @@ -478,7 +478,7 @@ net_dbg_ratelimited("%s: STA %pM TX buffer for AC %d full - dropping oldest frame\n", tx->sdata->name, sta->sta.addr, ac); #endif - dev_kfree_skb(old); + ieee80211_free_txskb(&local->hw, old); } else tx->local->total_ps_buffered++; @@ -1112,7 +1112,7 @@ spin_unlock(&tx->sta->lock); if (purge_skb) - dev_kfree_skb(purge_skb); + ieee80211_free_txskb(&tx->local->hw, purge_skb); } /* reset session timer */ @@ -1223,7 +1223,7 @@ #ifdef CONFIG_MAC80211_VERBOSE_DEBUG if (WARN_ON_ONCE(q >= local->hw.queues)) { __skb_unlink(skb, skbs); - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } #endif @@ -1368,9 +1368,9 @@ if (unlikely(res == TX_DROP)) { I802_DEBUG_INC(tx->local->tx_handlers_drop); if (tx->skb) - dev_kfree_skb(tx->skb); + ieee80211_free_txskb(&tx->local->hw, tx->skb); else - __skb_queue_purge(&tx->skbs); + ieee80211_purge_tx_queue(&tx->local->hw, &tx->skbs); return -1; } else if (unlikely(res == TX_QUEUED)) { I802_DEBUG_INC(tx->local->tx_handlers_queued); @@ -1405,7 +1405,7 @@ res_prepare = ieee80211_tx_prepare(sdata, &tx, skb); if (unlikely(res_prepare == TX_DROP)) { - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); goto out; } else if (unlikely(res_prepare == TX_QUEUED)) { goto out; @@ -1478,7 +1478,7 @@ headroom = max_t(int, 0, headroom); if (ieee80211_skb_resize(sdata, skb, headroom, may_encrypt)) { - dev_kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); rcu_read_unlock(); return; } @@ -2075,8 +2075,10 @@ head_need += IEEE80211_ENCRYPT_HEADROOM; head_need += local->tx_headroom; head_need = max_t(int, 0, head_need); - if (ieee80211_skb_resize(sdata, skb, head_need, true)) - goto fail; + if (ieee80211_skb_resize(sdata, skb, head_need, true)) { + ieee80211_free_txskb(&local->hw, skb); + return NETDEV_TX_OK; + } } if (encaps_data) { @@ -2145,10 +2147,13 @@ */ void ieee80211_clear_tx_pending(struct ieee80211_local *local) { + struct sk_buff *skb; int i; - for (i = 0; i < local->hw.queues; i++) - skb_queue_purge(&local->pending[i]); + for (i = 0; i < local->hw.queues; i++) { + while ((skb = skb_dequeue(&local->pending[i])) != NULL) + ieee80211_free_txskb(&local->hw, skb); + } } /* @@ -2211,7 +2216,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (WARN_ON(!info->control.vif)) { - kfree_skb(skb); + ieee80211_free_txskb(&local->hw, skb); continue; } @@ -2733,7 +2738,7 @@ void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb, int tid) { - int ac = ieee802_1d_to_ac[tid]; + int ac = ieee802_1d_to_ac[tid & 7]; skb_set_mac_header(skb, 0); skb_set_network_header(skb, 0); --- linux-3.5.0.orig/net/mac80211/mlme.c +++ linux-3.5.0/net/mac80211/mlme.c @@ -994,12 +994,8 @@ if (beaconint_us > latency) { local->ps_sdata = NULL; } else { - struct ieee80211_bss *bss; int maxslp = 1; - u8 dtimper; - - bss = (void *)found->u.mgd.associated->priv; - dtimper = bss->dtim_period; + u8 dtimper = found->u.mgd.dtim_period; /* If the TIM IE is invalid, pretend the value is 1 */ if (!dtimper) @@ -1305,10 +1301,17 @@ ieee80211_led_assoc(local, 1); - if (local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) - bss_conf->dtim_period = bss->dtim_period; - else + if (local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { + /* + * If the AP is buggy we may get here with no DTIM period + * known, so assume it's 1 which is the only safe assumption + * in that case, although if the TIM IE is broken powersave + * probably just won't work at all. + */ + bss_conf->dtim_period = sdata->u.mgd.dtim_period ?: 1; + } else { bss_conf->dtim_period = 0; + } bss_conf->assoc = 1; @@ -1441,6 +1444,8 @@ del_timer_sync(&sdata->u.mgd.bcn_mon_timer); del_timer_sync(&sdata->u.mgd.timer); del_timer_sync(&sdata->u.mgd.chswitch_timer); + + sdata->vif.bss_conf.dtim_period = 0; } void ieee80211_sta_rx_notify(struct ieee80211_sub_if_data *sdata, @@ -1805,7 +1810,8 @@ if (status_code != WLAN_STATUS_SUCCESS) { printk(KERN_DEBUG "%s: %pM denied authentication (status %d)\n", sdata->name, mgmt->sa, status_code); - goto out; + ieee80211_destroy_auth_data(sdata, false); + return RX_MGMT_CFG80211_RX_AUTH; } switch (ifmgd->auth_data->algorithm) { @@ -1827,7 +1833,6 @@ } printk(KERN_DEBUG "%s: authenticated\n", sdata->name); - out: ifmgd->auth_data->done = true; ifmgd->auth_data->timeout = jiffies + IEEE80211_AUTH_WAIT_ASSOC; run_again(ifmgd, ifmgd->auth_data->timeout); @@ -2205,11 +2210,18 @@ struct ieee80211_channel *channel; bool need_ps = false; - if (sdata->u.mgd.associated && - ether_addr_equal(mgmt->bssid, sdata->u.mgd.associated->bssid)) { - bss = (void *)sdata->u.mgd.associated->priv; + if ((sdata->u.mgd.associated && + ether_addr_equal(mgmt->bssid, sdata->u.mgd.associated->bssid)) || + (sdata->u.mgd.assoc_data && + ether_addr_equal(mgmt->bssid, + sdata->u.mgd.assoc_data->bss->bssid))) { /* not previously set so we may need to recalc */ - need_ps = !bss->dtim_period; + need_ps = sdata->u.mgd.associated && !sdata->u.mgd.dtim_period; + + if (elems->tim && !elems->parse_error) { + struct ieee80211_tim_ie *tim_ie = elems->tim; + sdata->u.mgd.dtim_period = tim_ie->dtim_period; + } } if (elems->ds_params && elems->ds_params_len == 1) @@ -3270,6 +3282,8 @@ goto out_unlock; err_clear: + memset(ifmgd->bssid, 0, ETH_ALEN); + ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID); ifmgd->auth_data = NULL; err_free: kfree(auth_data); @@ -3411,20 +3425,39 @@ /* kick off associate process */ ifmgd->assoc_data = assoc_data; + ifmgd->dtim_period = 0; err = ieee80211_prep_connection(sdata, req->bss, true); if (err) goto err_clear; - if (!bss->dtim_period && - sdata->local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { - /* - * Wait up to one beacon interval ... - * should this be more if we miss one? - */ - printk(KERN_DEBUG "%s: waiting for beacon from %pM\n", - sdata->name, ifmgd->bssid); - assoc_data->timeout = TU_TO_EXP_TIME(req->bss->beacon_interval); + if (sdata->local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD) { + const u8 *beacon_ies = req->bss->beacon_ies; + size_t beacon_ies_len = req->bss->len_beacon_ies; + + if (!beacon_ies_len) { + /* + * Wait up to one beacon interval ... + * should this be more if we miss one? + */ + printk(KERN_DEBUG "%s: waiting for beacon from %pM\n", + sdata->name, ifmgd->bssid); + assoc_data->timeout = + TU_TO_EXP_TIME(req->bss->beacon_interval); + } else { + const u8 *tim_ie = cfg80211_find_ie(WLAN_EID_TIM, + beacon_ies, + beacon_ies_len); + if (tim_ie && tim_ie[1] >= + sizeof(struct ieee80211_tim_ie)) { + const struct ieee80211_tim_ie *tim; + tim = (void *)(tim_ie + 2); + ifmgd->dtim_period = tim->dtim_period; + } + assoc_data->have_beacon = true; + assoc_data->sent_assoc = false; + assoc_data->timeout = jiffies; + } } else { assoc_data->have_beacon = true; assoc_data->sent_assoc = false; @@ -3449,6 +3482,8 @@ err = 0; goto out; err_clear: + memset(ifmgd->bssid, 0, ETH_ALEN); + ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_BSSID); ifmgd->assoc_data = NULL; err_free: kfree(assoc_data); @@ -3463,6 +3498,7 @@ { struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; u8 frame_buf[DEAUTH_DISASSOC_LEN]; + bool tx = !req->local_state_change; mutex_lock(&ifmgd->mtx); @@ -3479,11 +3515,11 @@ if (ifmgd->associated && ether_addr_equal(ifmgd->associated->bssid, req->bssid)) ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, - req->reason_code, true, frame_buf); + req->reason_code, tx, frame_buf); else ieee80211_send_deauth_disassoc(sdata, req->bssid, IEEE80211_STYPE_DEAUTH, - req->reason_code, true, + req->reason_code, tx, frame_buf); mutex_unlock(&ifmgd->mtx); --- linux-3.5.0.orig/net/mac80211/iface.c +++ linux-3.5.0/net/mac80211/iface.c @@ -711,7 +711,7 @@ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); if (info->control.vif == &sdata->vif) { __skb_unlink(skb, &local->pending[i]); - dev_kfree_skb_irq(skb); + ieee80211_free_txskb(&local->hw, skb); } } } --- linux-3.5.0.orig/net/mac80211/ieee80211_i.h +++ linux-3.5.0/net/mac80211/ieee80211_i.h @@ -81,8 +81,6 @@ size_t ssid_len; u8 ssid[IEEE80211_MAX_SSID_LEN]; - u8 dtim_period; - bool wmm_used; bool uapsd_supported; @@ -129,7 +127,6 @@ /** * enum ieee80211_valid_data_flags - BSS valid data flags - * @IEEE80211_BSS_VALID_DTIM: DTIM data was gathered from non-corrupt IE * @IEEE80211_BSS_VALID_WMM: WMM/UAPSD data was gathered from non-corrupt IE * @IEEE80211_BSS_VALID_RATES: Supported rates were gathered from non-corrupt IE * @IEEE80211_BSS_VALID_ERP: ERP flag was gathered from non-corrupt IE @@ -140,7 +137,6 @@ * beacon/probe response. */ enum ieee80211_bss_valid_data_flags { - IEEE80211_BSS_VALID_DTIM = BIT(0), IEEE80211_BSS_VALID_WMM = BIT(1), IEEE80211_BSS_VALID_RATES = BIT(2), IEEE80211_BSS_VALID_ERP = BIT(3) @@ -444,6 +440,7 @@ unsigned long timers_running; /* used for quiesce/restart */ bool powersave; /* powersave requested for this iface */ bool broken_ap; /* AP is broken -- turn off powersave */ + u8 dtim_period; enum ieee80211_smps_mode req_smps, /* requested smps mode */ ap_smps, /* smps mode AP thinks we're in */ driver_smps_mode; /* smps mode request */ @@ -1257,9 +1254,9 @@ /* scan/BSS handling */ void ieee80211_scan_work(struct work_struct *work); -int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata, - const u8 *ssid, u8 ssid_len, - struct ieee80211_channel *chan); +int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata, + const u8 *ssid, u8 ssid_len, + struct ieee80211_channel *chan); int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata, struct cfg80211_scan_request *req); void ieee80211_scan_cancel(struct ieee80211_local *local); @@ -1286,10 +1283,8 @@ void ieee80211_sched_scan_stopped_work(struct work_struct *work); /* off-channel helpers */ -void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, - bool offchannel_ps_enable); -void ieee80211_offchannel_return(struct ieee80211_local *local, - bool offchannel_ps_disable); +void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local); +void ieee80211_offchannel_return(struct ieee80211_local *local); void ieee80211_hw_roc_setup(struct ieee80211_local *local); /* interface handling */ @@ -1319,6 +1314,8 @@ struct net_device *dev); netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev); +void ieee80211_purge_tx_queue(struct ieee80211_hw *hw, + struct sk_buff_head *skbs); /* HT */ void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata, --- linux-3.5.0.orig/net/mac80211/offchannel.c +++ linux-3.5.0/net/mac80211/offchannel.c @@ -103,8 +103,7 @@ ieee80211_sta_reset_conn_monitor(sdata); } -void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local, - bool offchannel_ps_enable) +void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local) { struct ieee80211_sub_if_data *sdata; @@ -129,8 +128,7 @@ if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { netif_tx_stop_all_queues(sdata->dev); - if (offchannel_ps_enable && - (sdata->vif.type == NL80211_IFTYPE_STATION) && + if (sdata->vif.type == NL80211_IFTYPE_STATION && sdata->u.mgd.associated) ieee80211_offchannel_ps_enable(sdata, true); } @@ -138,8 +136,7 @@ mutex_unlock(&local->iflist_mtx); } -void ieee80211_offchannel_return(struct ieee80211_local *local, - bool offchannel_ps_disable) +void ieee80211_offchannel_return(struct ieee80211_local *local) { struct ieee80211_sub_if_data *sdata; @@ -152,11 +149,9 @@ continue; /* Tell AP we're back */ - if (offchannel_ps_disable && - sdata->vif.type == NL80211_IFTYPE_STATION) { - if (sdata->u.mgd.associated) - ieee80211_offchannel_ps_disable(sdata); - } + if (sdata->vif.type == NL80211_IFTYPE_STATION && + sdata->u.mgd.associated) + ieee80211_offchannel_ps_disable(sdata); if (sdata->vif.type != NL80211_IFTYPE_MONITOR) { /* --- linux-3.5.0.orig/net/ceph/crypto.h +++ linux-3.5.0/net/ceph/crypto.h @@ -16,7 +16,8 @@ static inline void ceph_crypto_key_destroy(struct ceph_crypto_key *key) { - kfree(key->key); + if (key) + kfree(key->key); } extern int ceph_crypto_key_clone(struct ceph_crypto_key *dst, --- linux-3.5.0.orig/net/ceph/osdmap.c +++ linux-3.5.0/net/ceph/osdmap.c @@ -488,15 +488,16 @@ ceph_decode_32_safe(p, end, pool, bad); ceph_decode_32_safe(p, end, len, bad); dout(" pool %d len %d\n", pool, len); + ceph_decode_need(p, end, len, bad); pi = __lookup_pg_pool(&map->pg_pools, pool); if (pi) { + char *name = kstrndup(*p, len, GFP_NOFS); + + if (!name) + return -ENOMEM; kfree(pi->name); - pi->name = kmalloc(len + 1, GFP_NOFS); - if (pi->name) { - memcpy(pi->name, *p, len); - pi->name[len] = '\0'; - dout(" name is %s\n", pi->name); - } + pi->name = name; + dout(" name is %s\n", pi->name); } *p += len; } @@ -666,6 +667,9 @@ ceph_decode_need(p, end, sizeof(u32) + sizeof(u64), bad); ceph_decode_copy(p, &pgid, sizeof(pgid)); n = ceph_decode_32(p); + err = -EINVAL; + if (n > (UINT_MAX - sizeof(*pg)) / sizeof(u32)) + goto bad; ceph_decode_need(p, end, n * sizeof(u32), bad); err = -ENOMEM; pg = kmalloc(sizeof(*pg) + n*sizeof(u32), GFP_NOFS); @@ -889,6 +893,10 @@ (void) __remove_pg_mapping(&map->pg_temp, pgid); /* insert */ + if (pglen > (UINT_MAX - sizeof(*pg)) / sizeof(u32)) { + err = -EINVAL; + goto bad; + } pg = kmalloc(sizeof(*pg) + sizeof(u32)*pglen, GFP_NOFS); if (!pg) { err = -ENOMEM; @@ -937,7 +945,7 @@ * for now, we write only a single su, until we can * pass a stride back to the caller. */ -void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, +int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, u64 off, u64 *plen, u64 *ono, u64 *oxoff, u64 *oxlen) @@ -951,11 +959,17 @@ dout("mapping %llu~%llu osize %u fl_su %u\n", off, *plen, osize, su); + if (su == 0 || sc == 0) + goto invalid; su_per_object = osize / su; + if (su_per_object == 0) + goto invalid; dout("osize %u / su %u = su_per_object %u\n", osize, su, su_per_object); - BUG_ON((su & ~PAGE_MASK) != 0); + if ((su & ~PAGE_MASK) != 0) + goto invalid; + /* bl = *off / su; */ t = off; do_div(t, su); @@ -983,6 +997,14 @@ *plen = *oxlen; dout(" obj extent %llu~%llu\n", *oxoff, *oxlen); + return 0; + +invalid: + dout(" invalid layout\n"); + *ono = 0; + *oxoff = 0; + *oxlen = 0; + return -EINVAL; } EXPORT_SYMBOL(ceph_calc_file_object_mapping); --- linux-3.5.0.orig/net/ceph/messenger.c +++ linux-3.5.0/net/ceph/messenger.c @@ -29,6 +29,74 @@ * the sender. */ +/* + * We track the state of the socket on a given connection using + * values defined below. The transition to a new socket state is + * handled by a function which verifies we aren't coming from an + * unexpected state. + * + * -------- + * | NEW* | transient initial state + * -------- + * | con_sock_state_init() + * v + * ---------- + * | CLOSED | initialized, but no socket (and no + * ---------- TCP connection) + * ^ \ + * | \ con_sock_state_connecting() + * | ---------------------- + * | \ + * + con_sock_state_closed() \ + * |+--------------------------- \ + * | \ \ \ + * | ----------- \ \ + * | | CLOSING | socket event; \ \ + * | ----------- await close \ \ + * | ^ \ | + * | | \ | + * | + con_sock_state_closing() \ | + * | / \ | | + * | / --------------- | | + * | / \ v v + * | / -------------- + * | / -----------------| CONNECTING | socket created, TCP + * | | / -------------- connect initiated + * | | | con_sock_state_connected() + * | | v + * ------------- + * | CONNECTED | TCP connection established + * ------------- + * + * State values for ceph_connection->sock_state; NEW is assumed to be 0. + */ + +#define CON_SOCK_STATE_NEW 0 /* -> CLOSED */ +#define CON_SOCK_STATE_CLOSED 1 /* -> CONNECTING */ +#define CON_SOCK_STATE_CONNECTING 2 /* -> CONNECTED or -> CLOSING */ +#define CON_SOCK_STATE_CONNECTED 3 /* -> CLOSING or -> CLOSED */ +#define CON_SOCK_STATE_CLOSING 4 /* -> CLOSED */ + +/* + * connection states + */ +#define CON_STATE_CLOSED 1 /* -> PREOPEN */ +#define CON_STATE_PREOPEN 2 /* -> CONNECTING, CLOSED */ +#define CON_STATE_CONNECTING 3 /* -> NEGOTIATING, CLOSED */ +#define CON_STATE_NEGOTIATING 4 /* -> OPEN, CLOSED */ +#define CON_STATE_OPEN 5 /* -> STANDBY, CLOSED */ +#define CON_STATE_STANDBY 6 /* -> PREOPEN, CLOSED */ + +/* + * ceph_connection flag bits + */ +#define CON_FLAG_LOSSYTX 0 /* we can close channel or drop + * messages on errors */ +#define CON_FLAG_KEEPALIVE_PENDING 1 /* we need to send a keepalive */ +#define CON_FLAG_WRITE_PENDING 2 /* we have data ready to send */ +#define CON_FLAG_SOCK_CLOSED 3 /* socket state changed to closed */ +#define CON_FLAG_BACKOFF 4 /* need to retry queuing delayed work */ + /* static tag bytes (protocol control messages) */ static char tag_msg = CEPH_MSGR_TAG_MSG; static char tag_ack = CEPH_MSGR_TAG_ACK; @@ -147,72 +215,130 @@ } EXPORT_SYMBOL(ceph_msgr_flush); +/* Connection socket state transition functions */ + +static void con_sock_state_init(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSED); + if (WARN_ON(old_state != CON_SOCK_STATE_NEW)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSED); +} + +static void con_sock_state_connecting(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CONNECTING); + if (WARN_ON(old_state != CON_SOCK_STATE_CLOSED)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CONNECTING); +} + +static void con_sock_state_connected(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CONNECTED); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTING)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CONNECTED); +} + +static void con_sock_state_closing(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSING); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTING && + old_state != CON_SOCK_STATE_CONNECTED && + old_state != CON_SOCK_STATE_CLOSING)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSING); +} + +static void con_sock_state_closed(struct ceph_connection *con) +{ + int old_state; + + old_state = atomic_xchg(&con->sock_state, CON_SOCK_STATE_CLOSED); + if (WARN_ON(old_state != CON_SOCK_STATE_CONNECTED && + old_state != CON_SOCK_STATE_CLOSING && + old_state != CON_SOCK_STATE_CONNECTING && + old_state != CON_SOCK_STATE_CLOSED)) + printk("%s: unexpected old state %d\n", __func__, old_state); + dout("%s con %p sock %d -> %d\n", __func__, con, old_state, + CON_SOCK_STATE_CLOSED); +} /* * socket callback functions */ /* data available on socket, or listen socket received a connect */ -static void ceph_data_ready(struct sock *sk, int count_unused) +static void ceph_sock_data_ready(struct sock *sk, int count_unused) { struct ceph_connection *con = sk->sk_user_data; + if (atomic_read(&con->msgr->stopping)) { + return; + } if (sk->sk_state != TCP_CLOSE_WAIT) { - dout("ceph_data_ready on %p state = %lu, queueing work\n", + dout("%s on %p state = %lu, queueing work\n", __func__, con, con->state); queue_con(con); } } /* socket has buffer space for writing */ -static void ceph_write_space(struct sock *sk) +static void ceph_sock_write_space(struct sock *sk) { struct ceph_connection *con = sk->sk_user_data; /* only queue to workqueue if there is data we want to write, * and there is sufficient space in the socket buffer to accept - * more data. clear SOCK_NOSPACE so that ceph_write_space() + * more data. clear SOCK_NOSPACE so that ceph_sock_write_space() * doesn't get called again until try_write() fills the socket * buffer. See net/ipv4/tcp_input.c:tcp_check_space() * and net/core/stream.c:sk_stream_write_space(). */ - if (test_bit(WRITE_PENDING, &con->state)) { + if (test_bit(CON_FLAG_WRITE_PENDING, &con->flags)) { if (sk_stream_wspace(sk) >= sk_stream_min_wspace(sk)) { - dout("ceph_write_space %p queueing write work\n", con); + dout("%s %p queueing write work\n", __func__, con); clear_bit(SOCK_NOSPACE, &sk->sk_socket->flags); queue_con(con); } } else { - dout("ceph_write_space %p nothing to write\n", con); + dout("%s %p nothing to write\n", __func__, con); } } /* socket's state has changed */ -static void ceph_state_change(struct sock *sk) +static void ceph_sock_state_change(struct sock *sk) { struct ceph_connection *con = sk->sk_user_data; - dout("ceph_state_change %p state = %lu sk_state = %u\n", + dout("%s %p state = %lu sk_state = %u\n", __func__, con, con->state, sk->sk_state); - if (test_bit(CLOSED, &con->state)) - return; - switch (sk->sk_state) { case TCP_CLOSE: - dout("ceph_state_change TCP_CLOSE\n"); + dout("%s TCP_CLOSE\n", __func__); case TCP_CLOSE_WAIT: - dout("ceph_state_change TCP_CLOSE_WAIT\n"); - if (test_and_set_bit(SOCK_CLOSED, &con->state) == 0) { - if (test_bit(CONNECTING, &con->state)) - con->error_msg = "connection failed"; - else - con->error_msg = "socket closed"; - queue_con(con); - } + dout("%s TCP_CLOSE_WAIT\n", __func__); + con_sock_state_closing(con); + set_bit(CON_FLAG_SOCK_CLOSED, &con->flags); + queue_con(con); break; case TCP_ESTABLISHED: - dout("ceph_state_change TCP_ESTABLISHED\n"); + dout("%s TCP_ESTABLISHED\n", __func__); + con_sock_state_connected(con); queue_con(con); break; default: /* Everything else is uninteresting */ @@ -228,9 +354,9 @@ { struct sock *sk = sock->sk; sk->sk_user_data = con; - sk->sk_data_ready = ceph_data_ready; - sk->sk_write_space = ceph_write_space; - sk->sk_state_change = ceph_state_change; + sk->sk_data_ready = ceph_sock_data_ready; + sk->sk_write_space = ceph_sock_write_space; + sk->sk_state_change = ceph_sock_state_change; } @@ -262,6 +388,7 @@ dout("connect %s\n", ceph_pr_addr(&con->peer_addr.in_addr)); + con_sock_state_connecting(con); ret = sock->ops->connect(sock, (struct sockaddr *)paddr, sizeof(*paddr), O_NONBLOCK); if (ret == -EINPROGRESS) { @@ -277,7 +404,6 @@ return ret; } con->sock = sock; - return 0; } @@ -333,16 +459,24 @@ */ static int con_close_socket(struct ceph_connection *con) { - int rc; + int rc = 0; dout("con_close_socket on %p sock %p\n", con, con->sock); - if (!con->sock) - return 0; - set_bit(SOCK_CLOSED, &con->state); - rc = con->sock->ops->shutdown(con->sock, SHUT_RDWR); - sock_release(con->sock); - con->sock = NULL; - clear_bit(SOCK_CLOSED, &con->state); + if (con->sock) { + rc = con->sock->ops->shutdown(con->sock, SHUT_RDWR); + sock_release(con->sock); + con->sock = NULL; + } + + /* + * Forcibly clear the SOCK_CLOSED flag. It gets set + * independent of the connection mutex, and we could have + * received a socket close event before we had the chance to + * shut the socket down. + */ + clear_bit(CON_FLAG_SOCK_CLOSED, &con->flags); + + con_sock_state_closed(con); return rc; } @@ -353,6 +487,10 @@ static void ceph_msg_remove(struct ceph_msg *msg) { list_del_init(&msg->list_head); + BUG_ON(msg->con == NULL); + msg->con->ops->put(msg->con); + msg->con = NULL; + ceph_msg_put(msg); } static void ceph_msg_remove_list(struct list_head *head) @@ -372,8 +510,11 @@ ceph_msg_remove_list(&con->out_sent); if (con->in_msg) { + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; ceph_msg_put(con->in_msg); con->in_msg = NULL; + con->ops->put(con); } con->connect_seq = 0; @@ -391,32 +532,44 @@ */ void ceph_con_close(struct ceph_connection *con) { + mutex_lock(&con->mutex); dout("con_close %p peer %s\n", con, ceph_pr_addr(&con->peer_addr.in_addr)); - set_bit(CLOSED, &con->state); /* in case there's queued work */ - clear_bit(STANDBY, &con->state); /* avoid connect_seq bump */ - clear_bit(LOSSYTX, &con->state); /* so we retry next connect */ - clear_bit(KEEPALIVE_PENDING, &con->state); - clear_bit(WRITE_PENDING, &con->state); - mutex_lock(&con->mutex); + con->state = CON_STATE_CLOSED; + + clear_bit(CON_FLAG_LOSSYTX, &con->flags); /* so we retry next connect */ + clear_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); + clear_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags); + clear_bit(CON_FLAG_BACKOFF, &con->flags); + reset_connection(con); con->peer_global_seq = 0; cancel_delayed_work(&con->work); + con_close_socket(con); mutex_unlock(&con->mutex); - queue_con(con); } EXPORT_SYMBOL(ceph_con_close); /* * Reopen a closed connection, with a new peer address. */ -void ceph_con_open(struct ceph_connection *con, struct ceph_entity_addr *addr) +void ceph_con_open(struct ceph_connection *con, + __u8 entity_type, __u64 entity_num, + struct ceph_entity_addr *addr) { + mutex_lock(&con->mutex); dout("con_open %p %s\n", con, ceph_pr_addr(&addr->in_addr)); - set_bit(OPENING, &con->state); - clear_bit(CLOSED, &con->state); + + BUG_ON(con->state != CON_STATE_CLOSED); + con->state = CON_STATE_PREOPEN; + + con->peer_name.type = (__u8) entity_type; + con->peer_name.num = cpu_to_le64(entity_num); + memcpy(&con->peer_addr, addr, sizeof(*addr)); con->delay = 0; /* reset backoff memory */ + mutex_unlock(&con->mutex); queue_con(con); } EXPORT_SYMBOL(ceph_con_open); @@ -430,42 +583,26 @@ } /* - * generic get/put - */ -struct ceph_connection *ceph_con_get(struct ceph_connection *con) -{ - int nref = __atomic_add_unless(&con->nref, 1, 0); - - dout("con_get %p nref = %d -> %d\n", con, nref, nref + 1); - - return nref ? con : NULL; -} - -void ceph_con_put(struct ceph_connection *con) -{ - int nref = atomic_dec_return(&con->nref); - - BUG_ON(nref < 0); - if (nref == 0) { - BUG_ON(con->sock); - kfree(con); - } - dout("con_put %p nref = %d -> %d\n", con, nref + 1, nref); -} - -/* * initialize a new connection. */ -void ceph_con_init(struct ceph_messenger *msgr, struct ceph_connection *con) +void ceph_con_init(struct ceph_connection *con, void *private, + const struct ceph_connection_operations *ops, + struct ceph_messenger *msgr) { dout("con_init %p\n", con); memset(con, 0, sizeof(*con)); - atomic_set(&con->nref, 1); + con->private = private; + con->ops = ops; con->msgr = msgr; + + con_sock_state_init(con); + mutex_init(&con->mutex); INIT_LIST_HEAD(&con->out_queue); INIT_LIST_HEAD(&con->out_sent); INIT_DELAYED_WORK(&con->work, con_work); + + con->state = CON_STATE_CLOSED; } EXPORT_SYMBOL(ceph_con_init); @@ -486,14 +623,14 @@ return ret; } -static void ceph_con_out_kvec_reset(struct ceph_connection *con) +static void con_out_kvec_reset(struct ceph_connection *con) { con->out_kvec_left = 0; con->out_kvec_bytes = 0; con->out_kvec_cur = &con->out_kvec[0]; } -static void ceph_con_out_kvec_add(struct ceph_connection *con, +static void con_out_kvec_add(struct ceph_connection *con, size_t size, void *data) { int index; @@ -507,6 +644,53 @@ con->out_kvec_bytes += size; } +#ifdef CONFIG_BLOCK +static void init_bio_iter(struct bio *bio, struct bio **iter, int *seg) +{ + if (!bio) { + *iter = NULL; + *seg = 0; + return; + } + *iter = bio; + *seg = bio->bi_idx; +} + +static void iter_bio_next(struct bio **bio_iter, int *seg) +{ + if (*bio_iter == NULL) + return; + + BUG_ON(*seg >= (*bio_iter)->bi_vcnt); + + (*seg)++; + if (*seg == (*bio_iter)->bi_vcnt) + init_bio_iter((*bio_iter)->bi_next, bio_iter, seg); +} +#endif + +static void prepare_write_message_data(struct ceph_connection *con) +{ + struct ceph_msg *msg = con->out_msg; + + BUG_ON(!msg); + BUG_ON(!msg->hdr.data_len); + + /* initialize page iterator */ + con->out_msg_pos.page = 0; + if (msg->pages) + con->out_msg_pos.page_pos = msg->page_alignment; + else + con->out_msg_pos.page_pos = 0; +#ifdef CONFIG_BLOCK + if (msg->bio) + init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg); +#endif + con->out_msg_pos.data_pos = 0; + con->out_msg_pos.did_page_crc = false; + con->out_more = 1; /* data + footer will follow */ +} + /* * Prepare footer for currently outgoing message, and finish things * off. Assumes out_kvec* are already valid.. we just add on to the end. @@ -516,6 +700,8 @@ struct ceph_msg *m = con->out_msg; int v = con->out_kvec_left; + m->footer.flags |= CEPH_MSG_FOOTER_COMPLETE; + dout("prepare_write_message_footer %p\n", con); con->out_kvec_is_msg = true; con->out_kvec[v].iov_base = &m->footer; @@ -534,7 +720,7 @@ struct ceph_msg *m; u32 crc; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); con->out_kvec_is_msg = true; con->out_msg_done = false; @@ -542,14 +728,16 @@ * TCP packet that's a good thing. */ if (con->in_seq > con->in_seq_acked) { con->in_seq_acked = con->in_seq; - ceph_con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); + con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); con->out_temp_ack = cpu_to_le64(con->in_seq_acked); - ceph_con_out_kvec_add(con, sizeof (con->out_temp_ack), + con_out_kvec_add(con, sizeof (con->out_temp_ack), &con->out_temp_ack); } + BUG_ON(list_empty(&con->out_queue)); m = list_first_entry(&con->out_queue, struct ceph_msg, list_head); con->out_msg = m; + BUG_ON(m->con != con); /* put message on sent list */ ceph_msg_get(m); @@ -563,10 +751,6 @@ m->hdr.seq = cpu_to_le64(++con->out_seq); m->needs_out_seq = false; } -#ifdef CONFIG_BLOCK - else - m->bio_iter = NULL; -#endif dout("prepare_write_message %p seq %lld type %d len %d+%d+%d %d pgs\n", m, con->out_seq, le16_to_cpu(m->hdr.type), @@ -576,18 +760,18 @@ BUG_ON(le32_to_cpu(m->hdr.front_len) != m->front.iov_len); /* tag + hdr + front + middle */ - ceph_con_out_kvec_add(con, sizeof (tag_msg), &tag_msg); - ceph_con_out_kvec_add(con, sizeof (m->hdr), &m->hdr); - ceph_con_out_kvec_add(con, m->front.iov_len, m->front.iov_base); + con_out_kvec_add(con, sizeof (tag_msg), &tag_msg); + con_out_kvec_add(con, sizeof (m->hdr), &m->hdr); + con_out_kvec_add(con, m->front.iov_len, m->front.iov_base); if (m->middle) - ceph_con_out_kvec_add(con, m->middle->vec.iov_len, + con_out_kvec_add(con, m->middle->vec.iov_len, m->middle->vec.iov_base); /* fill in crc (except data pages), footer */ crc = crc32c(0, &m->hdr, offsetof(struct ceph_msg_header, crc)); con->out_msg->hdr.crc = cpu_to_le32(crc); - con->out_msg->footer.flags = CEPH_MSG_FOOTER_COMPLETE; + con->out_msg->footer.flags = 0; crc = crc32c(0, m->front.iov_base, m->front.iov_len); con->out_msg->footer.front_crc = cpu_to_le32(crc); @@ -597,28 +781,19 @@ con->out_msg->footer.middle_crc = cpu_to_le32(crc); } else con->out_msg->footer.middle_crc = 0; - con->out_msg->footer.data_crc = 0; - dout("prepare_write_message front_crc %u data_crc %u\n", + dout("%s front_crc %u middle_crc %u\n", __func__, le32_to_cpu(con->out_msg->footer.front_crc), le32_to_cpu(con->out_msg->footer.middle_crc)); /* is there a data payload? */ - if (le32_to_cpu(m->hdr.data_len) > 0) { - /* initialize page iterator */ - con->out_msg_pos.page = 0; - if (m->pages) - con->out_msg_pos.page_pos = m->page_alignment; - else - con->out_msg_pos.page_pos = 0; - con->out_msg_pos.data_pos = 0; - con->out_msg_pos.did_page_crc = false; - con->out_more = 1; /* data + footer will follow */ - } else { + con->out_msg->footer.data_crc = 0; + if (m->hdr.data_len) + prepare_write_message_data(con); + else /* no, queue up footer too and be done */ prepare_write_message_footer(con); - } - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -630,16 +805,16 @@ con->in_seq_acked, con->in_seq); con->in_seq_acked = con->in_seq; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); - ceph_con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); + con_out_kvec_add(con, sizeof (tag_ack), &tag_ack); con->out_temp_ack = cpu_to_le64(con->in_seq_acked); - ceph_con_out_kvec_add(con, sizeof (con->out_temp_ack), + con_out_kvec_add(con, sizeof (con->out_temp_ack), &con->out_temp_ack); con->out_more = 1; /* more will follow.. eventually.. */ - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -648,9 +823,9 @@ static void prepare_write_keepalive(struct ceph_connection *con) { dout("prepare_write_keepalive %p\n", con); - ceph_con_out_kvec_reset(con); - ceph_con_out_kvec_add(con, sizeof (tag_keepalive), &tag_keepalive); - set_bit(WRITE_PENDING, &con->state); + con_out_kvec_reset(con); + con_out_kvec_add(con, sizeof (tag_keepalive), &tag_keepalive); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } /* @@ -665,27 +840,21 @@ if (!con->ops->get_authorizer) { con->out_connect.authorizer_protocol = CEPH_AUTH_UNKNOWN; con->out_connect.authorizer_len = 0; - return NULL; } /* Can't hold the mutex while getting authorizer */ - mutex_unlock(&con->mutex); - auth = con->ops->get_authorizer(con, auth_proto, con->auth_retry); - mutex_lock(&con->mutex); if (IS_ERR(auth)) return auth; - if (test_bit(CLOSED, &con->state) || test_bit(OPENING, &con->state)) + if (con->state != CON_STATE_NEGOTIATING) return ERR_PTR(-EAGAIN); con->auth_reply_buf = auth->authorizer_reply_buf; con->auth_reply_buf_len = auth->authorizer_reply_buf_len; - - return auth; } @@ -694,12 +863,12 @@ */ static void prepare_write_banner(struct ceph_connection *con) { - ceph_con_out_kvec_add(con, strlen(CEPH_BANNER), CEPH_BANNER); - ceph_con_out_kvec_add(con, sizeof (con->msgr->my_enc_addr), + con_out_kvec_add(con, strlen(CEPH_BANNER), CEPH_BANNER); + con_out_kvec_add(con, sizeof (con->msgr->my_enc_addr), &con->msgr->my_enc_addr); con->out_more = 0; - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); } static int prepare_write_connect(struct ceph_connection *con) @@ -742,14 +911,14 @@ con->out_connect.authorizer_len = auth ? cpu_to_le32(auth->authorizer_buf_len) : 0; - ceph_con_out_kvec_add(con, sizeof (con->out_connect), + con_out_kvec_add(con, sizeof (con->out_connect), &con->out_connect); if (auth && auth->authorizer_buf_len) - ceph_con_out_kvec_add(con, auth->authorizer_buf_len, + con_out_kvec_add(con, auth->authorizer_buf_len, auth->authorizer_buf); con->out_more = 0; - set_bit(WRITE_PENDING, &con->state); + set_bit(CON_FLAG_WRITE_PENDING, &con->flags); return 0; } @@ -797,30 +966,34 @@ return ret; /* done! */ } -#ifdef CONFIG_BLOCK -static void init_bio_iter(struct bio *bio, struct bio **iter, int *seg) +static void out_msg_pos_next(struct ceph_connection *con, struct page *page, + size_t len, size_t sent, bool in_trail) { - if (!bio) { - *iter = NULL; - *seg = 0; - return; - } - *iter = bio; - *seg = bio->bi_idx; -} + struct ceph_msg *msg = con->out_msg; -static void iter_bio_next(struct bio **bio_iter, int *seg) -{ - if (*bio_iter == NULL) - return; + BUG_ON(!msg); + BUG_ON(!sent); - BUG_ON(*seg >= (*bio_iter)->bi_vcnt); + con->out_msg_pos.data_pos += sent; + con->out_msg_pos.page_pos += sent; + if (sent < len) + return; - (*seg)++; - if (*seg == (*bio_iter)->bi_vcnt) - init_bio_iter((*bio_iter)->bi_next, bio_iter, seg); -} + BUG_ON(sent != len); + con->out_msg_pos.page_pos = 0; + con->out_msg_pos.page++; + con->out_msg_pos.did_page_crc = false; + if (in_trail) + list_move_tail(&page->lru, + &msg->trail->head); + else if (msg->pagelist) + list_move_tail(&page->lru, + &msg->pagelist->head); +#ifdef CONFIG_BLOCK + else if (msg->bio) + iter_bio_next(&msg->bio_iter, &msg->bio_seg); #endif +} /* * Write as much message data payload as we can. If we finish, queue @@ -837,41 +1010,36 @@ bool do_datacrc = !con->msgr->nocrc; int ret; int total_max_write; - int in_trail = 0; - size_t trail_len = (msg->trail ? msg->trail->length : 0); + bool in_trail = false; + const size_t trail_len = (msg->trail ? msg->trail->length : 0); + const size_t trail_off = data_len - trail_len; dout("write_partial_msg_pages %p msg %p page %d/%d offset %d\n", - con, con->out_msg, con->out_msg_pos.page, con->out_msg->nr_pages, + con, msg, con->out_msg_pos.page, msg->nr_pages, con->out_msg_pos.page_pos); -#ifdef CONFIG_BLOCK - if (msg->bio && !msg->bio_iter) - init_bio_iter(msg->bio, &msg->bio_iter, &msg->bio_seg); -#endif - + /* + * Iterate through each page that contains data to be + * written, and send as much as possible for each. + * + * If we are calculating the data crc (the default), we will + * need to map the page. If we have no pages, they have + * been revoked, so use the zero page. + */ while (data_len > con->out_msg_pos.data_pos) { struct page *page = NULL; int max_write = PAGE_SIZE; int bio_offset = 0; - total_max_write = data_len - trail_len - - con->out_msg_pos.data_pos; - - /* - * if we are calculating the data crc (the default), we need - * to map the page. if our pages[] has been revoked, use the - * zero page. - */ - - /* have we reached the trail part of the data? */ - if (con->out_msg_pos.data_pos >= data_len - trail_len) { - in_trail = 1; + in_trail = in_trail || con->out_msg_pos.data_pos >= trail_off; + if (!in_trail) + total_max_write = trail_off - con->out_msg_pos.data_pos; + if (in_trail) { total_max_write = data_len - con->out_msg_pos.data_pos; page = list_first_entry(&msg->trail->head, struct page, lru); - max_write = PAGE_SIZE; } else if (msg->pages) { page = msg->pages[con->out_msg_pos.page]; } else if (msg->pagelist) { @@ -894,52 +1062,32 @@ if (do_datacrc && !con->out_msg_pos.did_page_crc) { void *base; - u32 crc; - u32 tmpcrc = le32_to_cpu(con->out_msg->footer.data_crc); + u32 crc = le32_to_cpu(msg->footer.data_crc); char *kaddr; kaddr = kmap(page); BUG_ON(kaddr == NULL); base = kaddr + con->out_msg_pos.page_pos + bio_offset; - crc = crc32c(tmpcrc, base, len); - con->out_msg->footer.data_crc = cpu_to_le32(crc); + crc = crc32c(crc, base, len); + kunmap(page); + msg->footer.data_crc = cpu_to_le32(crc); con->out_msg_pos.did_page_crc = true; } ret = ceph_tcp_sendpage(con->sock, page, con->out_msg_pos.page_pos + bio_offset, len, 1); - - if (do_datacrc) - kunmap(page); - if (ret <= 0) goto out; - con->out_msg_pos.data_pos += ret; - con->out_msg_pos.page_pos += ret; - if (ret == len) { - con->out_msg_pos.page_pos = 0; - con->out_msg_pos.page++; - con->out_msg_pos.did_page_crc = false; - if (in_trail) - list_move_tail(&page->lru, - &msg->trail->head); - else if (msg->pagelist) - list_move_tail(&page->lru, - &msg->pagelist->head); -#ifdef CONFIG_BLOCK - else if (msg->bio) - iter_bio_next(&msg->bio_iter, &msg->bio_seg); -#endif - } + out_msg_pos_next(con, page, len, (size_t) ret, in_trail); } dout("write_partial_msg_pages %p msg %p done\n", con, msg); /* prepare and queue up footer, too */ if (!do_datacrc) - con->out_msg->footer.flags |= CEPH_MSG_FOOTER_NOCRC; - ceph_con_out_kvec_reset(con); + msg->footer.flags |= CEPH_MSG_FOOTER_NOCRC; + con_out_kvec_reset(con); prepare_write_message_footer(con); ret = 1; out: @@ -1351,20 +1499,14 @@ ceph_pr_addr(&con->msgr->inst.addr.in_addr)); } - set_bit(NEGOTIATING, &con->state); - prepare_read_connect(con); return 0; } static void fail_protocol(struct ceph_connection *con) { reset_connection(con); - set_bit(CLOSED, &con->state); /* in case there's queued work */ - - mutex_unlock(&con->mutex); - if (con->ops->bad_proto) - con->ops->bad_proto(con); - mutex_lock(&con->mutex); + BUG_ON(con->state != CON_STATE_NEGOTIATING); + con->state = CON_STATE_CLOSED; } static int process_connect(struct ceph_connection *con) @@ -1407,7 +1549,7 @@ return -1; } con->auth_retry = 1; - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1428,7 +1570,7 @@ ENTITY_NAME(con->peer_name), ceph_pr_addr(&con->peer_addr.in_addr)); reset_connection(con); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1440,8 +1582,7 @@ if (con->ops->peer_reset) con->ops->peer_reset(con); mutex_lock(&con->mutex); - if (test_bit(CLOSED, &con->state) || - test_bit(OPENING, &con->state)) + if (con->state != CON_STATE_NEGOTIATING) return -EAGAIN; break; @@ -1454,7 +1595,7 @@ le32_to_cpu(con->out_connect.connect_seq), le32_to_cpu(con->in_reply.connect_seq)); con->connect_seq = le32_to_cpu(con->in_reply.connect_seq); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1471,7 +1612,7 @@ le32_to_cpu(con->in_reply.global_seq)); get_global_seq(con->msgr, le32_to_cpu(con->in_reply.global_seq)); - ceph_con_out_kvec_reset(con); + con_out_kvec_reset(con); ret = prepare_write_connect(con); if (ret < 0) return ret; @@ -1489,7 +1630,10 @@ fail_protocol(con); return -1; } - clear_bit(CONNECTING, &con->state); + + BUG_ON(con->state != CON_STATE_NEGOTIATING); + con->state = CON_STATE_OPEN; + con->peer_global_seq = le32_to_cpu(con->in_reply.global_seq); con->connect_seq++; con->peer_features = server_feat; @@ -1501,7 +1645,9 @@ le32_to_cpu(con->in_reply.connect_seq)); if (con->in_reply.flags & CEPH_MSG_CONNECT_LOSSY) - set_bit(LOSSYTX, &con->state); + set_bit(CON_FLAG_LOSSYTX, &con->flags); + + con->delay = 0; /* reset backoff memory */ prepare_read_tag(con); break; @@ -1587,10 +1733,7 @@ return 1; } -static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con, - struct ceph_msg_header *hdr, - int *skip); - +static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip); static int read_partial_message_pages(struct ceph_connection *con, struct page **pages, @@ -1633,9 +1776,6 @@ void *p; int ret, left; - if (IS_ERR(bv)) - return PTR_ERR(bv); - left = min((int)(data_len - con->in_msg_pos.data_pos), (int)(bv->bv_len - con->in_msg_pos.page_pos)); @@ -1672,7 +1812,6 @@ int ret; unsigned int front_len, middle_len, data_len; bool do_datacrc = !con->msgr->nocrc; - int skip; u64 seq; u32 crc; @@ -1723,10 +1862,13 @@ /* allocate message? */ if (!con->in_msg) { + int skip = 0; + dout("got hdr type %d front %d data %d\n", con->in_hdr.type, con->in_hdr.front_len, con->in_hdr.data_len); - skip = 0; - con->in_msg = ceph_alloc_msg(con, &con->in_hdr, &skip); + ret = ceph_con_in_msg_alloc(con, &skip); + if (ret < 0) + return ret; if (skip) { /* skip this message */ dout("alloc_msg said skip message\n"); @@ -1737,11 +1879,9 @@ con->in_seq++; return 0; } - if (!con->in_msg) { - con->error_msg = - "error allocating memory for incoming message"; - return -ENOMEM; - } + + BUG_ON(!con->in_msg); + BUG_ON(con->in_msg->con != con); m = con->in_msg; m->front.iov_len = 0; /* haven't read it yet */ if (m->middle) @@ -1753,6 +1893,11 @@ else con->in_msg_pos.page_pos = 0; con->in_msg_pos.data_pos = 0; + +#ifdef CONFIG_BLOCK + if (m->bio) + init_bio_iter(m->bio, &m->bio_iter, &m->bio_seg); +#endif } /* front */ @@ -1769,10 +1914,6 @@ if (ret <= 0) return ret; } -#ifdef CONFIG_BLOCK - if (m->bio && !m->bio_iter) - init_bio_iter(m->bio, &m->bio_iter, &m->bio_seg); -#endif /* (page) data */ while (con->in_msg_pos.data_pos < data_len) { @@ -1783,7 +1924,7 @@ return ret; #ifdef CONFIG_BLOCK } else if (m->bio) { - + BUG_ON(!m->bio_iter); ret = read_partial_message_bio(con, &m->bio_iter, &m->bio_seg, data_len, do_datacrc); @@ -1837,8 +1978,11 @@ { struct ceph_msg *msg; + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; msg = con->in_msg; con->in_msg = NULL; + con->ops->put(con); /* if first message, set peer_name */ if (con->peer_name.type == 0) @@ -1858,7 +2002,6 @@ con->ops->dispatch(con, msg); mutex_lock(&con->mutex); - prepare_read_tag(con); } @@ -1870,22 +2013,19 @@ { int ret = 1; - dout("try_write start %p state %lu nref %d\n", con, con->state, - atomic_read(&con->nref)); + dout("try_write start %p state %lu\n", con, con->state); more: dout("try_write out_kvec_bytes %d\n", con->out_kvec_bytes); /* open the socket first? */ - if (con->sock == NULL) { - ceph_con_out_kvec_reset(con); + if (con->state == CON_STATE_PREOPEN) { + BUG_ON(con->sock); + con->state = CON_STATE_CONNECTING; + + con_out_kvec_reset(con); prepare_write_banner(con); - ret = prepare_write_connect(con); - if (ret < 0) - goto out; prepare_read_banner(con); - set_bit(CONNECTING, &con->state); - clear_bit(NEGOTIATING, &con->state); BUG_ON(con->in_msg); con->in_tag = CEPH_MSGR_TAG_READY; @@ -1932,7 +2072,7 @@ } do_next: - if (!test_bit(CONNECTING, &con->state)) { + if (con->state == CON_STATE_OPEN) { /* is anything else pending? */ if (!list_empty(&con->out_queue)) { prepare_write_message(con); @@ -1942,14 +2082,15 @@ prepare_write_ack(con); goto more; } - if (test_and_clear_bit(KEEPALIVE_PENDING, &con->state)) { + if (test_and_clear_bit(CON_FLAG_KEEPALIVE_PENDING, + &con->flags)) { prepare_write_keepalive(con); goto more; } } /* Nothing to do! */ - clear_bit(WRITE_PENDING, &con->state); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); dout("try_write nothing else to write.\n"); ret = 0; out: @@ -1966,38 +2107,46 @@ { int ret = -1; - if (!con->sock) - return 0; - - if (test_bit(STANDBY, &con->state)) +more: + dout("try_read start on %p state %lu\n", con, con->state); + if (con->state != CON_STATE_CONNECTING && + con->state != CON_STATE_NEGOTIATING && + con->state != CON_STATE_OPEN) return 0; - dout("try_read start on %p\n", con); + BUG_ON(!con->sock); -more: dout("try_read tag %d in_base_pos %d\n", (int)con->in_tag, con->in_base_pos); - /* - * process_connect and process_message drop and re-take - * con->mutex. make sure we handle a racing close or reopen. - */ - if (test_bit(CLOSED, &con->state) || - test_bit(OPENING, &con->state)) { - ret = -EAGAIN; + if (con->state == CON_STATE_CONNECTING) { + dout("try_read connecting\n"); + ret = read_partial_banner(con); + if (ret <= 0) + goto out; + ret = process_banner(con); + if (ret < 0) + goto out; + + BUG_ON(con->state != CON_STATE_CONNECTING); + con->state = CON_STATE_NEGOTIATING; + + /* + * Received banner is good, exchange connection info. + * Do not reset out_kvec, as sending our banner raced + * with receiving peer banner after connect completed. + */ + ret = prepare_write_connect(con); + if (ret < 0) + goto out; + prepare_read_connect(con); + + /* Send connection info before awaiting response */ goto out; } - if (test_bit(CONNECTING, &con->state)) { - if (!test_bit(NEGOTIATING, &con->state)) { - dout("try_read connecting\n"); - ret = read_partial_banner(con); - if (ret <= 0) - goto out; - ret = process_banner(con); - if (ret < 0) - goto out; - } + if (con->state == CON_STATE_NEGOTIATING) { + dout("try_read negotiating\n"); ret = read_partial_connect(con); if (ret <= 0) goto out; @@ -2007,6 +2156,8 @@ goto more; } + BUG_ON(con->state != CON_STATE_OPEN); + if (con->in_base_pos < 0) { /* * skipping + discarding content. @@ -2040,7 +2191,8 @@ prepare_read_ack(con); break; case CEPH_MSGR_TAG_CLOSE: - set_bit(CLOSED, &con->state); /* fixme */ + con_close_socket(con); + con->state = CON_STATE_CLOSED; goto out; default: goto bad_tag; @@ -2063,6 +2215,8 @@ if (con->in_tag == CEPH_MSGR_TAG_READY) goto more; process_message(con); + if (con->state == CON_STATE_OPEN) + prepare_read_tag(con); goto more; } if (con->in_tag == CEPH_MSGR_TAG_ACK) { @@ -2091,12 +2245,6 @@ */ static void queue_con(struct ceph_connection *con) { - if (test_bit(DEAD, &con->state)) { - dout("queue_con %p ignoring: DEAD\n", - con); - return; - } - if (!con->ops->get(con)) { dout("queue_con %p ref count 0\n", con); return; @@ -2121,7 +2269,26 @@ mutex_lock(&con->mutex); restart: - if (test_and_clear_bit(BACKOFF, &con->state)) { + if (test_and_clear_bit(CON_FLAG_SOCK_CLOSED, &con->flags)) { + switch (con->state) { + case CON_STATE_CONNECTING: + con->error_msg = "connection failed"; + break; + case CON_STATE_NEGOTIATING: + con->error_msg = "negotiation failed"; + break; + case CON_STATE_OPEN: + con->error_msg = "socket closed"; + break; + default: + dout("unrecognized con state %d\n", (int)con->state); + con->error_msg = "unrecognized con state"; + BUG(); + } + goto fault; + } + + if (test_and_clear_bit(CON_FLAG_BACKOFF, &con->flags)) { dout("con_work %p backing off\n", con); if (queue_delayed_work(ceph_msgr_wq, &con->work, round_jiffies_relative(con->delay))) { @@ -2129,41 +2296,42 @@ mutex_unlock(&con->mutex); return; } else { - con->ops->put(con); dout("con_work %p FAILED to back off %lu\n", con, con->delay); + set_bit(CON_FLAG_BACKOFF, &con->flags); } + goto done; } - if (test_bit(STANDBY, &con->state)) { + if (con->state == CON_STATE_STANDBY) { dout("con_work %p STANDBY\n", con); goto done; } - if (test_bit(CLOSED, &con->state)) { /* e.g. if we are replaced */ - dout("con_work CLOSED\n"); - con_close_socket(con); + if (con->state == CON_STATE_CLOSED) { + dout("con_work %p CLOSED\n", con); + BUG_ON(con->sock); goto done; } - if (test_and_clear_bit(OPENING, &con->state)) { - /* reopen w/ new peer */ + if (con->state == CON_STATE_PREOPEN) { dout("con_work OPENING\n"); - con_close_socket(con); + BUG_ON(con->sock); } - if (test_and_clear_bit(SOCK_CLOSED, &con->state)) - goto fault; - ret = try_read(con); if (ret == -EAGAIN) goto restart; - if (ret < 0) + if (ret < 0) { + con->error_msg = "socket error on read"; goto fault; + } ret = try_write(con); if (ret == -EAGAIN) goto restart; - if (ret < 0) + if (ret < 0) { + con->error_msg = "socket error on write"; goto fault; + } done: mutex_unlock(&con->mutex); @@ -2172,7 +2340,6 @@ return; fault: - mutex_unlock(&con->mutex); ceph_fault(con); /* error/fault path */ goto done_unlocked; } @@ -2183,26 +2350,31 @@ * exponential backoff */ static void ceph_fault(struct ceph_connection *con) + __releases(con->mutex) { pr_err("%s%lld %s %s\n", ENTITY_NAME(con->peer_name), ceph_pr_addr(&con->peer_addr.in_addr), con->error_msg); dout("fault %p state %lu to peer %s\n", con, con->state, ceph_pr_addr(&con->peer_addr.in_addr)); - if (test_bit(LOSSYTX, &con->state)) { - dout("fault on LOSSYTX channel\n"); - goto out; - } - - mutex_lock(&con->mutex); - if (test_bit(CLOSED, &con->state)) - goto out_unlock; + BUG_ON(con->state != CON_STATE_CONNECTING && + con->state != CON_STATE_NEGOTIATING && + con->state != CON_STATE_OPEN); con_close_socket(con); + if (test_bit(CON_FLAG_LOSSYTX, &con->flags)) { + dout("fault on LOSSYTX channel, marking CLOSED\n"); + con->state = CON_STATE_CLOSED; + goto out_unlock; + } + if (con->in_msg) { + BUG_ON(con->in_msg->con != con); + con->in_msg->con = NULL; ceph_msg_put(con->in_msg); con->in_msg = NULL; + con->ops->put(con); } /* Requeue anything that hasn't been acked */ @@ -2211,12 +2383,13 @@ /* If there are no messages queued or keepalive pending, place * the connection in a STANDBY state */ if (list_empty(&con->out_queue) && - !test_bit(KEEPALIVE_PENDING, &con->state)) { + !test_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags)) { dout("fault %p setting STANDBY clearing WRITE_PENDING\n", con); - clear_bit(WRITE_PENDING, &con->state); - set_bit(STANDBY, &con->state); + clear_bit(CON_FLAG_WRITE_PENDING, &con->flags); + con->state = CON_STATE_STANDBY; } else { /* retry after a delay. */ + con->state = CON_STATE_PREOPEN; if (con->delay == 0) con->delay = BASE_DELAY_INTERVAL; else if (con->delay < MAX_DELAY_INTERVAL) @@ -2237,13 +2410,12 @@ * that when con_work restarts we schedule the * delay then. */ - set_bit(BACKOFF, &con->state); + set_bit(CON_FLAG_BACKOFF, &con->flags); } } out_unlock: mutex_unlock(&con->mutex); -out: /* * in case we faulted due to authentication, invalidate our * current tickets so that we can get new ones. @@ -2260,18 +2432,14 @@ /* - * create a new messenger instance + * initialize a new messenger instance */ -struct ceph_messenger *ceph_messenger_create(struct ceph_entity_addr *myaddr, - u32 supported_features, - u32 required_features) +void ceph_messenger_init(struct ceph_messenger *msgr, + struct ceph_entity_addr *myaddr, + u32 supported_features, + u32 required_features, + bool nocrc) { - struct ceph_messenger *msgr; - - msgr = kzalloc(sizeof(*msgr), GFP_KERNEL); - if (msgr == NULL) - return ERR_PTR(-ENOMEM); - msgr->supported_features = supported_features; msgr->required_features = required_features; @@ -2284,30 +2452,23 @@ msgr->inst.addr.type = 0; get_random_bytes(&msgr->inst.addr.nonce, sizeof(msgr->inst.addr.nonce)); encode_my_addr(msgr); + msgr->nocrc = nocrc; - dout("messenger_create %p\n", msgr); - return msgr; -} -EXPORT_SYMBOL(ceph_messenger_create); + atomic_set(&msgr->stopping, 0); -void ceph_messenger_destroy(struct ceph_messenger *msgr) -{ - dout("destroy %p\n", msgr); - kfree(msgr); - dout("destroyed messenger %p\n", msgr); + dout("%s %p\n", __func__, msgr); } -EXPORT_SYMBOL(ceph_messenger_destroy); +EXPORT_SYMBOL(ceph_messenger_init); static void clear_standby(struct ceph_connection *con) { /* come back from STANDBY? */ - if (test_and_clear_bit(STANDBY, &con->state)) { - mutex_lock(&con->mutex); + if (con->state == CON_STATE_STANDBY) { dout("clear_standby %p and ++connect_seq\n", con); + con->state = CON_STATE_PREOPEN; con->connect_seq++; - WARN_ON(test_bit(WRITE_PENDING, &con->state)); - WARN_ON(test_bit(KEEPALIVE_PENDING, &con->state)); - mutex_unlock(&con->mutex); + WARN_ON(test_bit(CON_FLAG_WRITE_PENDING, &con->flags)); + WARN_ON(test_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags)); } } @@ -2316,21 +2477,24 @@ */ void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg) { - if (test_bit(CLOSED, &con->state)) { - dout("con_send %p closed, dropping %p\n", con, msg); - ceph_msg_put(msg); - return; - } - /* set src+dst */ msg->hdr.src = con->msgr->inst.name; - BUG_ON(msg->front.iov_len != le32_to_cpu(msg->hdr.front_len)); - msg->needs_out_seq = true; - /* queue */ mutex_lock(&con->mutex); + + if (con->state == CON_STATE_CLOSED) { + dout("con_send %p closed, dropping %p\n", con, msg); + ceph_msg_put(msg); + mutex_unlock(&con->mutex); + return; + } + + BUG_ON(msg->con != NULL); + msg->con = con->ops->get(con); + BUG_ON(msg->con == NULL); + BUG_ON(!list_empty(&msg->list_head)); list_add_tail(&msg->list_head, &con->out_queue); dout("----- %p to %s%lld %d=%s len %d+%d+%d -----\n", msg, @@ -2339,12 +2503,13 @@ le32_to_cpu(msg->hdr.front_len), le32_to_cpu(msg->hdr.middle_len), le32_to_cpu(msg->hdr.data_len)); + + clear_standby(con); mutex_unlock(&con->mutex); /* if there wasn't anything waiting to send before, queue * new work */ - clear_standby(con); - if (test_and_set_bit(WRITE_PENDING, &con->state) == 0) + if (test_and_set_bit(CON_FLAG_WRITE_PENDING, &con->flags) == 0) queue_con(con); } EXPORT_SYMBOL(ceph_con_send); @@ -2352,24 +2517,34 @@ /* * Revoke a message that was previously queued for send */ -void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg) +void ceph_msg_revoke(struct ceph_msg *msg) { + struct ceph_connection *con = msg->con; + + if (!con) + return; /* Message not in our possession */ + mutex_lock(&con->mutex); if (!list_empty(&msg->list_head)) { - dout("con_revoke %p msg %p - was on queue\n", con, msg); + dout("%s %p msg %p - was on queue\n", __func__, con, msg); list_del_init(&msg->list_head); - ceph_msg_put(msg); + BUG_ON(msg->con == NULL); + msg->con->ops->put(msg->con); + msg->con = NULL; msg->hdr.seq = 0; + + ceph_msg_put(msg); } if (con->out_msg == msg) { - dout("con_revoke %p msg %p - was sending\n", con, msg); + dout("%s %p msg %p - was sending\n", __func__, con, msg); con->out_msg = NULL; if (con->out_kvec_is_msg) { con->out_skip = con->out_kvec_bytes; con->out_kvec_is_msg = false; } - ceph_msg_put(msg); msg->hdr.seq = 0; + + ceph_msg_put(msg); } mutex_unlock(&con->mutex); } @@ -2377,17 +2552,27 @@ /* * Revoke a message that we may be reading data into */ -void ceph_con_revoke_message(struct ceph_connection *con, struct ceph_msg *msg) +void ceph_msg_revoke_incoming(struct ceph_msg *msg) { + struct ceph_connection *con; + + BUG_ON(msg == NULL); + if (!msg->con) { + dout("%s msg %p null con\n", __func__, msg); + + return; /* Message not in our possession */ + } + + con = msg->con; mutex_lock(&con->mutex); - if (con->in_msg && con->in_msg == msg) { + if (con->in_msg == msg) { unsigned int front_len = le32_to_cpu(con->in_hdr.front_len); unsigned int middle_len = le32_to_cpu(con->in_hdr.middle_len); unsigned int data_len = le32_to_cpu(con->in_hdr.data_len); /* skip rest of message */ - dout("con_revoke_pages %p msg %p revoked\n", con, msg); - con->in_base_pos = con->in_base_pos - + dout("%s %p msg %p revoked\n", __func__, con, msg); + con->in_base_pos = con->in_base_pos - sizeof(struct ceph_msg_header) - front_len - middle_len - @@ -2398,8 +2583,8 @@ con->in_tag = CEPH_MSGR_TAG_READY; con->in_seq++; } else { - dout("con_revoke_pages %p msg %p pages %p no-op\n", - con, con->in_msg, msg); + dout("%s %p in_msg %p msg %p no-op\n", + __func__, con, con->in_msg, msg); } mutex_unlock(&con->mutex); } @@ -2410,9 +2595,11 @@ void ceph_con_keepalive(struct ceph_connection *con) { dout("con_keepalive %p\n", con); + mutex_lock(&con->mutex); clear_standby(con); - if (test_and_set_bit(KEEPALIVE_PENDING, &con->state) == 0 && - test_and_set_bit(WRITE_PENDING, &con->state) == 0) + mutex_unlock(&con->mutex); + if (test_and_set_bit(CON_FLAG_KEEPALIVE_PENDING, &con->flags) == 0 && + test_and_set_bit(CON_FLAG_WRITE_PENDING, &con->flags) == 0) queue_con(con); } EXPORT_SYMBOL(ceph_con_keepalive); @@ -2431,6 +2618,8 @@ if (m == NULL) goto out; kref_init(&m->kref); + + m->con = NULL; INIT_LIST_HEAD(&m->list_head); m->hdr.tid = 0; @@ -2526,46 +2715,78 @@ } /* - * Generic message allocator, for incoming messages. + * Allocate a message for receiving an incoming message on a + * connection, and save the result in con->in_msg. Uses the + * connection's private alloc_msg op if available. + * + * Returns 0 on success, or a negative error code. + * + * On success, if we set *skip = 1: + * - the next message should be skipped and ignored. + * - con->in_msg == NULL + * or if we set *skip = 0: + * - con->in_msg is non-null. + * On error (ENOMEM, EAGAIN, ...), + * - con->in_msg == NULL */ -static struct ceph_msg *ceph_alloc_msg(struct ceph_connection *con, - struct ceph_msg_header *hdr, - int *skip) +static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip) { + struct ceph_msg_header *hdr = &con->in_hdr; int type = le16_to_cpu(hdr->type); int front_len = le32_to_cpu(hdr->front_len); int middle_len = le32_to_cpu(hdr->middle_len); - struct ceph_msg *msg = NULL; - int ret; + int ret = 0; + + BUG_ON(con->in_msg != NULL); if (con->ops->alloc_msg) { + struct ceph_msg *msg; + mutex_unlock(&con->mutex); msg = con->ops->alloc_msg(con, hdr, skip); mutex_lock(&con->mutex); - if (!msg || *skip) - return NULL; + if (con->state != CON_STATE_OPEN) { + if (msg) + ceph_msg_put(msg); + return -EAGAIN; + } + con->in_msg = msg; + if (con->in_msg) { + con->in_msg->con = con->ops->get(con); + BUG_ON(con->in_msg->con == NULL); + } + if (*skip) { + con->in_msg = NULL; + return 0; + } + if (!con->in_msg) { + con->error_msg = + "error allocating memory for incoming message"; + return -ENOMEM; + } } - if (!msg) { - *skip = 0; - msg = ceph_msg_new(type, front_len, GFP_NOFS, false); - if (!msg) { + if (!con->in_msg) { + con->in_msg = ceph_msg_new(type, front_len, GFP_NOFS, false); + if (!con->in_msg) { pr_err("unable to allocate msg type %d len %d\n", type, front_len); - return NULL; + return -ENOMEM; } - msg->page_alignment = le16_to_cpu(hdr->data_off); + con->in_msg->con = con->ops->get(con); + BUG_ON(con->in_msg->con == NULL); + con->in_msg->page_alignment = le16_to_cpu(hdr->data_off); } - memcpy(&msg->hdr, &con->in_hdr, sizeof(con->in_hdr)); + memcpy(&con->in_msg->hdr, &con->in_hdr, sizeof(con->in_hdr)); - if (middle_len && !msg->middle) { - ret = ceph_alloc_middle(con, msg); + if (middle_len && !con->in_msg->middle) { + ret = ceph_alloc_middle(con, con->in_msg); if (ret < 0) { - ceph_msg_put(msg); - return NULL; + ceph_msg_put(con->in_msg); + con->in_msg = NULL; } } - return msg; + return ret; } --- linux-3.5.0.orig/net/ceph/ceph_common.c +++ linux-3.5.0/net/ceph/ceph_common.c @@ -83,7 +83,6 @@ return -1; } } else { - pr_info("client%lld fsid %pU\n", ceph_client_id(client), fsid); memcpy(&client->fsid, fsid, sizeof(*fsid)); } return 0; @@ -468,19 +467,15 @@ /* msgr */ if (ceph_test_opt(client, MYIP)) myaddr = &client->options->my_addr; - client->msgr = ceph_messenger_create(myaddr, - client->supported_features, - client->required_features); - if (IS_ERR(client->msgr)) { - err = PTR_ERR(client->msgr); - goto fail; - } - client->msgr->nocrc = ceph_test_opt(client, NOCRC); + ceph_messenger_init(&client->msgr, myaddr, + client->supported_features, + client->required_features, + ceph_test_opt(client, NOCRC)); /* subsystems */ err = ceph_monc_init(&client->monc, client); if (err < 0) - goto fail_msgr; + goto fail; err = ceph_osdc_init(&client->osdc, client); if (err < 0) goto fail_monc; @@ -489,8 +484,6 @@ fail_monc: ceph_monc_stop(&client->monc); -fail_msgr: - ceph_messenger_destroy(client->msgr); fail: kfree(client); return ERR_PTR(err); @@ -501,6 +494,8 @@ { dout("destroy_client %p\n", client); + atomic_set(&client->msgr.stopping, 1); + /* unmount */ ceph_osdc_stop(&client->osdc); @@ -508,8 +503,6 @@ ceph_debugfs_client_cleanup(client); - ceph_messenger_destroy(client->msgr); - ceph_destroy_options(client->options); kfree(client); --- linux-3.5.0.orig/net/ceph/osd_client.c +++ linux-3.5.0/net/ceph/osd_client.c @@ -52,7 +52,7 @@ op == CEPH_OSD_OP_WRITE); } -void ceph_calc_raw_layout(struct ceph_osd_client *osdc, +int ceph_calc_raw_layout(struct ceph_osd_client *osdc, struct ceph_file_layout *layout, u64 snapid, u64 off, u64 *plen, u64 *bno, @@ -62,12 +62,15 @@ struct ceph_osd_request_head *reqhead = req->r_request->front.iov_base; u64 orig_len = *plen; u64 objoff, objlen; /* extent in object */ + int r; reqhead->snapid = cpu_to_le64(snapid); /* object extent? */ - ceph_calc_file_object_mapping(layout, off, plen, bno, - &objoff, &objlen); + r = ceph_calc_file_object_mapping(layout, off, plen, bno, + &objoff, &objlen); + if (r < 0) + return r; if (*plen < orig_len) dout(" skipping last %llu, final file extent %llu~%llu\n", orig_len - *plen, off, *plen); @@ -83,7 +86,7 @@ dout("calc_layout bno=%llx %llu~%llu (%d pages)\n", *bno, objoff, objlen, req->r_num_pages); - + return 0; } EXPORT_SYMBOL(ceph_calc_raw_layout); @@ -112,20 +115,25 @@ * * fill osd op in request message. */ -static void calc_layout(struct ceph_osd_client *osdc, - struct ceph_vino vino, - struct ceph_file_layout *layout, - u64 off, u64 *plen, - struct ceph_osd_request *req, - struct ceph_osd_req_op *op) +static int calc_layout(struct ceph_osd_client *osdc, + struct ceph_vino vino, + struct ceph_file_layout *layout, + u64 off, u64 *plen, + struct ceph_osd_request *req, + struct ceph_osd_req_op *op) { u64 bno; + int r; - ceph_calc_raw_layout(osdc, layout, vino.snap, off, - plen, &bno, req, op); + r = ceph_calc_raw_layout(osdc, layout, vino.snap, off, + plen, &bno, req, op); + if (r < 0) + return r; snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, bno); req->r_oid_len = strlen(req->r_oid); + + return r; } /* @@ -140,10 +148,9 @@ if (req->r_request) ceph_msg_put(req->r_request); if (req->r_con_filling_msg) { - dout("release_request revoking pages %p from con %p\n", + dout("%s revoking pages %p from con %p\n", __func__, req->r_pages, req->r_con_filling_msg); - ceph_con_revoke_message(req->r_con_filling_msg, - req->r_reply); + ceph_msg_revoke_incoming(req->r_reply); req->r_con_filling_msg->ops->put(req->r_con_filling_msg); } if (req->r_reply) @@ -243,6 +250,7 @@ } ceph_pagelist_init(req->r_trail); } + /* create request message; allow space for oid */ msg_size += MAX_OBJ_NAME_SIZE; if (snapc) @@ -256,7 +264,6 @@ return NULL; } - msg->hdr.type = cpu_to_le16(CEPH_MSG_OSD_OP); memset(msg->front.iov_base, 0, msg->front.iov_len); req->r_request = msg; @@ -624,7 +631,7 @@ /* * Track open sessions with osds. */ -static struct ceph_osd *create_osd(struct ceph_osd_client *osdc) +static struct ceph_osd *create_osd(struct ceph_osd_client *osdc, int onum) { struct ceph_osd *osd; @@ -634,15 +641,13 @@ atomic_set(&osd->o_ref, 1); osd->o_osdc = osdc; + osd->o_osd = onum; INIT_LIST_HEAD(&osd->o_requests); INIT_LIST_HEAD(&osd->o_linger_requests); INIT_LIST_HEAD(&osd->o_osd_lru); osd->o_incarnation = 1; - ceph_con_init(osdc->client->msgr, &osd->o_con); - osd->o_con.private = osd; - osd->o_con.ops = &osd_con_ops; - osd->o_con.peer_name.type = CEPH_ENTITY_TYPE_OSD; + ceph_con_init(&osd->o_con, osd, &osd_con_ops, &osdc->client->msgr); INIT_LIST_HEAD(&osd->o_keepalive_item); return osd; @@ -752,7 +757,8 @@ ret = -EAGAIN; } else { ceph_con_close(&osd->o_con); - ceph_con_open(&osd->o_con, &osdc->osdmap->osd_addr[osd->o_osd]); + ceph_con_open(&osd->o_con, CEPH_ENTITY_TYPE_OSD, osd->o_osd, + &osdc->osdmap->osd_addr[osd->o_osd]); osd->o_incarnation++; } return ret; @@ -853,7 +859,7 @@ if (req->r_osd) { /* make sure the original request isn't in flight. */ - ceph_con_revoke(&req->r_osd->o_con, req->r_request); + ceph_msg_revoke(req->r_request); list_del_init(&req->r_osd_item); if (list_empty(&req->r_osd->o_requests) && @@ -880,7 +886,7 @@ static void __cancel_request(struct ceph_osd_request *req) { if (req->r_sent && req->r_osd) { - ceph_con_revoke(&req->r_osd->o_con, req->r_request); + ceph_msg_revoke(req->r_request); req->r_sent = 0; } } @@ -890,7 +896,9 @@ { dout("__register_linger_request %p\n", req); list_add_tail(&req->r_linger_item, &osdc->req_linger); - list_add_tail(&req->r_linger_osd, &req->r_osd->o_linger_requests); + if (req->r_osd) + list_add_tail(&req->r_linger_osd, + &req->r_osd->o_linger_requests); } static void __unregister_linger_request(struct ceph_osd_client *osdc, @@ -998,18 +1006,18 @@ req->r_osd = __lookup_osd(osdc, o); if (!req->r_osd && o >= 0) { err = -ENOMEM; - req->r_osd = create_osd(osdc); + req->r_osd = create_osd(osdc, o); if (!req->r_osd) { list_move(&req->r_req_lru_item, &osdc->req_notarget); goto out; } dout("map_request osd %p is osd%d\n", req->r_osd, o); - req->r_osd->o_osd = o; - req->r_osd->o_con.peer_name.num = cpu_to_le64(o); __insert_osd(osdc, req->r_osd); - ceph_con_open(&req->r_osd->o_con, &osdc->osdmap->osd_addr[o]); + ceph_con_open(&req->r_osd->o_con, + CEPH_ENTITY_TYPE_OSD, o, + &osdc->osdmap->osd_addr[o]); } if (req->r_osd) { @@ -1304,8 +1312,9 @@ dout("kick_requests %s\n", force_resend ? " (force resend)" : ""); mutex_lock(&osdc->request_mutex); - for (p = rb_first(&osdc->requests); p; p = rb_next(p)) { + for (p = rb_first(&osdc->requests); p; ) { req = rb_entry(p, struct ceph_osd_request, r_node); + p = rb_next(p); err = __map_request(osdc, req, force_resend); if (err < 0) continue; /* error */ @@ -1313,10 +1322,23 @@ dout("%p tid %llu maps to no osd\n", req, req->r_tid); needmap++; /* request a newer map */ } else if (err > 0) { - dout("%p tid %llu requeued on osd%d\n", req, req->r_tid, - req->r_osd ? req->r_osd->o_osd : -1); - if (!req->r_linger) + if (!req->r_linger) { + dout("%p tid %llu requeued on osd%d\n", req, + req->r_tid, + req->r_osd ? req->r_osd->o_osd : -1); req->r_flags |= CEPH_OSD_FLAG_RETRY; + } + } + if (req->r_linger && list_empty(&req->r_linger_item)) { + /* + * register as a linger so that we will + * re-submit below and get a new tid + */ + dout("%p tid %llu restart on osd%d\n", + req, req->r_tid, + req->r_osd ? req->r_osd->o_osd : -1); + __register_linger_request(osdc, req); + __unregister_request(osdc, req); } } @@ -1391,7 +1413,7 @@ epoch, maplen); newmap = osdmap_apply_incremental(&p, next, osdc->osdmap, - osdc->client->msgr); + &osdc->client->msgr); if (IS_ERR(newmap)) { err = PTR_ERR(newmap); goto bad; @@ -1839,11 +1861,12 @@ if (!osdc->req_mempool) goto out; - err = ceph_msgpool_init(&osdc->msgpool_op, OSD_OP_FRONT_LEN, 10, true, + err = ceph_msgpool_init(&osdc->msgpool_op, CEPH_MSG_OSD_OP, + OSD_OP_FRONT_LEN, 10, true, "osd_op"); if (err < 0) goto out_mempool; - err = ceph_msgpool_init(&osdc->msgpool_op_reply, + err = ceph_msgpool_init(&osdc->msgpool_op_reply, CEPH_MSG_OSD_OPREPLY, OSD_OPREPLY_FRONT_LEN, 10, true, "osd_op_reply"); if (err < 0) @@ -2025,9 +2048,9 @@ } if (req->r_con_filling_msg) { - dout("get_reply revoking msg %p from old con %p\n", + dout("%s revoking msg %p from old con %p\n", __func__, req->r_reply, req->r_con_filling_msg); - ceph_con_revoke_message(req->r_con_filling_msg, req->r_reply); + ceph_msg_revoke_incoming(req->r_reply); req->r_con_filling_msg->ops->put(req->r_con_filling_msg); req->r_con_filling_msg = NULL; } @@ -2080,6 +2103,7 @@ int type = le16_to_cpu(hdr->type); int front = le32_to_cpu(hdr->front_len); + *skip = 0; switch (type) { case CEPH_MSG_OSD_MAP: case CEPH_MSG_WATCH_NOTIFY: --- linux-3.5.0.orig/net/ceph/msgpool.c +++ linux-3.5.0/net/ceph/msgpool.c @@ -12,7 +12,7 @@ struct ceph_msgpool *pool = arg; struct ceph_msg *msg; - msg = ceph_msg_new(0, pool->front_len, gfp_mask, true); + msg = ceph_msg_new(pool->type, pool->front_len, gfp_mask, true); if (!msg) { dout("msgpool_alloc %s failed\n", pool->name); } else { @@ -32,10 +32,11 @@ ceph_msg_put(msg); } -int ceph_msgpool_init(struct ceph_msgpool *pool, +int ceph_msgpool_init(struct ceph_msgpool *pool, int type, int front_len, int size, bool blocking, const char *name) { dout("msgpool %s init\n", name); + pool->type = type; pool->front_len = front_len; pool->pool = mempool_create(size, msgpool_alloc, msgpool_free, pool); if (!pool->pool) @@ -61,7 +62,7 @@ WARN_ON(1); /* try to alloc a fresh message */ - return ceph_msg_new(0, front_len, GFP_NOFS, false); + return ceph_msg_new(pool->type, front_len, GFP_NOFS, false); } msg = mempool_alloc(pool->pool, GFP_NOFS); --- linux-3.5.0.orig/net/ceph/debugfs.c +++ linux-3.5.0/net/ceph/debugfs.c @@ -189,6 +189,9 @@ snprintf(name, sizeof(name), "%pU.client%lld", &client->fsid, client->monc.auth->global_id); + dout("ceph_debugfs_client_init %p %s\n", client, name); + + BUG_ON(client->debugfs_dir); client->debugfs_dir = debugfs_create_dir(name, ceph_debugfs_dir); if (!client->debugfs_dir) goto out; @@ -234,6 +237,7 @@ void ceph_debugfs_client_cleanup(struct ceph_client *client) { + dout("ceph_debugfs_client_cleanup %p\n", client); debugfs_remove(client->debugfs_osdmap); debugfs_remove(client->debugfs_monmap); debugfs_remove(client->osdc.debugfs_file); --- linux-3.5.0.orig/net/ceph/mon_client.c +++ linux-3.5.0/net/ceph/mon_client.c @@ -106,9 +106,9 @@ monc->pending_auth = 1; monc->m_auth->front.iov_len = len; monc->m_auth->hdr.front_len = cpu_to_le32(len); - ceph_con_revoke(monc->con, monc->m_auth); + ceph_msg_revoke(monc->m_auth); ceph_msg_get(monc->m_auth); /* keep our ref */ - ceph_con_send(monc->con, monc->m_auth); + ceph_con_send(&monc->con, monc->m_auth); } /* @@ -117,8 +117,11 @@ static void __close_session(struct ceph_mon_client *monc) { dout("__close_session closing mon%d\n", monc->cur_mon); - ceph_con_revoke(monc->con, monc->m_auth); - ceph_con_close(monc->con); + ceph_msg_revoke(monc->m_auth); + ceph_msg_revoke_incoming(monc->m_auth_reply); + ceph_msg_revoke(monc->m_subscribe); + ceph_msg_revoke_incoming(monc->m_subscribe_ack); + ceph_con_close(&monc->con); monc->cur_mon = -1; monc->pending_auth = 0; ceph_auth_reset(monc->auth); @@ -142,9 +145,8 @@ monc->want_next_osdmap = !!monc->want_next_osdmap; dout("open_session mon%d opening\n", monc->cur_mon); - monc->con->peer_name.type = CEPH_ENTITY_TYPE_MON; - monc->con->peer_name.num = cpu_to_le64(monc->cur_mon); - ceph_con_open(monc->con, + ceph_con_open(&monc->con, + CEPH_ENTITY_TYPE_MON, monc->cur_mon, &monc->monmap->mon_inst[monc->cur_mon].addr); /* initiatiate authentication handshake */ @@ -226,8 +228,8 @@ msg->front.iov_len = p - msg->front.iov_base; msg->hdr.front_len = cpu_to_le32(msg->front.iov_len); - ceph_con_revoke(monc->con, msg); - ceph_con_send(monc->con, ceph_msg_get(msg)); + ceph_msg_revoke(msg); + ceph_con_send(&monc->con, ceph_msg_get(msg)); monc->sub_sent = jiffies | 1; /* never 0 */ } @@ -247,7 +249,7 @@ if (monc->hunting) { pr_info("mon%d %s session established\n", monc->cur_mon, - ceph_pr_addr(&monc->con->peer_addr.in_addr)); + ceph_pr_addr(&monc->con.peer_addr.in_addr)); monc->hunting = false; } dout("handle_subscribe_ack after %d seconds\n", seconds); @@ -309,6 +311,17 @@ EXPORT_SYMBOL(ceph_monc_open_session); /* + * We require the fsid and global_id in order to initialize our + * debugfs dir. + */ +static bool have_debugfs_info(struct ceph_mon_client *monc) +{ + dout("have_debugfs_info fsid %d globalid %lld\n", + (int)monc->client->have_fsid, monc->auth->global_id); + return monc->client->have_fsid && monc->auth->global_id > 0; +} + +/* * The monitor responds with mount ack indicate mount success. The * included client ticket allows the client to talk to MDSs and OSDs. */ @@ -318,9 +331,12 @@ struct ceph_client *client = monc->client; struct ceph_monmap *monmap = NULL, *old = monc->monmap; void *p, *end; + int had_debugfs_info, init_debugfs = 0; mutex_lock(&monc->mutex); + had_debugfs_info = have_debugfs_info(monc); + dout("handle_monmap\n"); p = msg->front.iov_base; end = p + msg->front.iov_len; @@ -342,12 +358,22 @@ if (!client->have_fsid) { client->have_fsid = true; + if (!had_debugfs_info && have_debugfs_info(monc)) { + pr_info("client%lld fsid %pU\n", + ceph_client_id(monc->client), + &monc->client->fsid); + init_debugfs = 1; + } mutex_unlock(&monc->mutex); - /* - * do debugfs initialization without mutex to avoid - * creating a locking dependency - */ - ceph_debugfs_client_init(client); + + if (init_debugfs) { + /* + * do debugfs initialization without mutex to avoid + * creating a locking dependency + */ + ceph_debugfs_client_init(monc->client); + } + goto out_unlocked; } out: @@ -439,6 +465,7 @@ m = NULL; } else { dout("get_generic_reply %lld got %p\n", tid, req->reply); + *skip = 0; m = ceph_msg_get(req->reply); /* * we don't need to track the connection reading into @@ -461,7 +488,7 @@ req->request->hdr.tid = cpu_to_le64(req->tid); __insert_generic_request(monc, req); monc->num_generic_requests++; - ceph_con_send(monc->con, ceph_msg_get(req->request)); + ceph_con_send(&monc->con, ceph_msg_get(req->request)); mutex_unlock(&monc->mutex); err = wait_for_completion_interruptible(&req->completion); @@ -684,8 +711,9 @@ for (p = rb_first(&monc->generic_request_tree); p; p = rb_next(p)) { req = rb_entry(p, struct ceph_mon_generic_request, node); - ceph_con_revoke(monc->con, req->request); - ceph_con_send(monc->con, ceph_msg_get(req->request)); + ceph_msg_revoke(req->request); + ceph_msg_revoke_incoming(req->reply); + ceph_con_send(&monc->con, ceph_msg_get(req->request)); } } @@ -705,7 +733,7 @@ __close_session(monc); __open_session(monc); /* continue hunting */ } else { - ceph_con_keepalive(monc->con); + ceph_con_keepalive(&monc->con); __validate_auth(monc); @@ -760,19 +788,12 @@ goto out; /* connection */ - monc->con = kmalloc(sizeof(*monc->con), GFP_KERNEL); - if (!monc->con) - goto out_monmap; - ceph_con_init(monc->client->msgr, monc->con); - monc->con->private = monc; - monc->con->ops = &mon_con_ops; - /* authentication */ monc->auth = ceph_auth_init(cl->options->name, cl->options->key); if (IS_ERR(monc->auth)) { err = PTR_ERR(monc->auth); - goto out_con; + goto out_monmap; } monc->auth->want_keys = CEPH_ENTITY_TYPE_AUTH | CEPH_ENTITY_TYPE_MON | @@ -801,6 +822,9 @@ if (!monc->m_auth) goto out_auth_reply; + ceph_con_init(&monc->con, monc, &mon_con_ops, + &monc->client->msgr); + monc->cur_mon = -1; monc->hunting = true; monc->sub_renew_after = jiffies; @@ -824,8 +848,6 @@ ceph_msg_put(monc->m_subscribe_ack); out_auth: ceph_auth_destroy(monc->auth); -out_con: - monc->con->ops->put(monc->con); out_monmap: kfree(monc->monmap); out: @@ -841,10 +863,6 @@ mutex_lock(&monc->mutex); __close_session(monc); - monc->con->private = NULL; - monc->con->ops->put(monc->con); - monc->con = NULL; - mutex_unlock(&monc->mutex); /* @@ -871,8 +889,10 @@ { int ret; int was_auth = 0; + int had_debugfs_info, init_debugfs = 0; mutex_lock(&monc->mutex); + had_debugfs_info = have_debugfs_info(monc); if (monc->auth->ops) was_auth = monc->auth->ops->is_authenticated(monc->auth); monc->pending_auth = 0; @@ -888,14 +908,29 @@ } else if (!was_auth && monc->auth->ops->is_authenticated(monc->auth)) { dout("authenticated, starting session\n"); - monc->client->msgr->inst.name.type = CEPH_ENTITY_TYPE_CLIENT; - monc->client->msgr->inst.name.num = + monc->client->msgr.inst.name.type = CEPH_ENTITY_TYPE_CLIENT; + monc->client->msgr.inst.name.num = cpu_to_le64(monc->auth->global_id); __send_subscribe(monc); __resend_generic_request(monc); } + + if (!had_debugfs_info && have_debugfs_info(monc)) { + pr_info("client%lld fsid %pU\n", + ceph_client_id(monc->client), + &monc->client->fsid); + init_debugfs = 1; + } mutex_unlock(&monc->mutex); + + if (init_debugfs) { + /* + * do debugfs initialization without mutex to avoid + * creating a locking dependency + */ + ceph_debugfs_client_init(monc->client); + } } static int __validate_auth(struct ceph_mon_client *monc) @@ -1000,6 +1035,8 @@ case CEPH_MSG_MDS_MAP: case CEPH_MSG_OSD_MAP: m = ceph_msg_new(type, front_len, GFP_NOFS, false); + if (!m) + return NULL; /* ENOMEM--return skip == 0 */ break; } @@ -1029,7 +1066,7 @@ if (!monc->hunting) pr_info("mon%d %s session lost, " "hunting for new mon\n", monc->cur_mon, - ceph_pr_addr(&monc->con->peer_addr.in_addr)); + ceph_pr_addr(&monc->con.peer_addr.in_addr)); __close_session(monc); if (!monc->hunting) { @@ -1044,9 +1081,23 @@ mutex_unlock(&monc->mutex); } +/* + * We can ignore refcounting on the connection struct, as all references + * will come from the messenger workqueue, which is drained prior to + * mon_client destruction. + */ +static struct ceph_connection *con_get(struct ceph_connection *con) +{ + return con; +} + +static void con_put(struct ceph_connection *con) +{ +} + static const struct ceph_connection_operations mon_con_ops = { - .get = ceph_con_get, - .put = ceph_con_put, + .get = con_get, + .put = con_put, .dispatch = dispatch, .fault = mon_fault, .alloc_msg = mon_alloc_msg, --- linux-3.5.0.orig/net/ceph/crypto.c +++ linux-3.5.0/net/ceph/crypto.c @@ -466,6 +466,7 @@ struct ceph_crypto_key *ckey = key->payload.data; ceph_crypto_key_destroy(ckey); + kfree(ckey); } struct key_type key_type_ceph = { --- linux-3.5.0.orig/net/rds/ib_send.c +++ linux-3.5.0/net/rds/ib_send.c @@ -544,7 +544,7 @@ int flow_controlled = 0; int nr_sig = 0; - BUG_ON(off % RDS_FRAG_SIZE); + BUG_ON(!conn->c_loopback && off % RDS_FRAG_SIZE); BUG_ON(hdr_off != 0 && hdr_off != sizeof(struct rds_header)); /* Do not send cong updates to IB loopback */ --- linux-3.5.0.orig/net/rds/recv.c +++ linux-3.5.0/net/rds/recv.c @@ -410,6 +410,8 @@ rdsdebug("size %zu flags 0x%x timeo %ld\n", size, msg_flags, timeo); + msg->msg_namelen = 0; + if (msg_flags & MSG_OOB) goto out; @@ -485,6 +487,7 @@ sin->sin_port = inc->i_hdr.h_sport; sin->sin_addr.s_addr = inc->i_saddr; memset(sin->sin_zero, 0, sizeof(sin->sin_zero)); + msg->msg_namelen = sizeof(*sin); } break; } --- linux-3.5.0.orig/net/rds/send.c +++ linux-3.5.0/net/rds/send.c @@ -1122,7 +1122,7 @@ rds_stats_inc(s_send_pong); if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags)) - rds_send_xmit(conn); + queue_delayed_work(rds_wq, &conn->c_send_w, 0); rds_message_put(rm); return 0; --- linux-3.5.0.orig/net/ipv6/ip6_output.c +++ linux-3.5.0/net/ipv6/ip6_output.c @@ -1293,10 +1293,10 @@ cork->length = 0; sk->sk_sndmsg_page = NULL; sk->sk_sndmsg_off = 0; - exthdrlen = (opt ? opt->opt_flen : 0) - rt->rt6i_nfheader_len; + exthdrlen = (opt ? opt->opt_flen : 0); length += exthdrlen; transhdrlen += exthdrlen; - dst_exthdrlen = rt->dst.header_len; + dst_exthdrlen = rt->dst.header_len - rt->rt6i_nfheader_len; } else { rt = (struct rt6_info *)cork->dst; fl6 = &inet->cork.fl.u.ip6; --- linux-3.5.0.orig/net/ipv6/ip6_fib.c +++ linux-3.5.0/net/ipv6/ip6_fib.c @@ -818,6 +818,10 @@ offsetof(struct rt6_info, rt6i_src), allow_create, replace_required); + if (IS_ERR(sn)) { + err = PTR_ERR(sn); + sn = NULL; + } if (!sn) { /* If it is failed, discard just allocated root, and then (in st_failure) stale node --- linux-3.5.0.orig/net/ipv6/addrconf.c +++ linux-3.5.0/net/ipv6/addrconf.c @@ -493,8 +493,7 @@ struct net_device *dev; struct inet6_dev *idev; - rcu_read_lock(); - for_each_netdev_rcu(net, dev) { + for_each_netdev(net, dev) { idev = __in6_dev_get(dev); if (idev) { int changed = (!idev->cnf.forwarding) ^ (!newf); @@ -503,7 +502,6 @@ dev_forward_change(idev); } } - rcu_read_unlock(); } static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int newf) @@ -795,10 +793,16 @@ struct in6_addr prefix; struct rt6_info *rt; struct net *net = dev_net(ifp->idev->dev); + struct flowi6 fl6 = {}; + ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len); - rt = rt6_lookup(net, &prefix, NULL, ifp->idev->dev->ifindex, 1); + fl6.flowi6_oif = ifp->idev->dev->ifindex; + fl6.daddr = prefix; + rt = (struct rt6_info *)ip6_route_lookup(net, &fl6, + RT6_LOOKUP_F_IFACE); - if (rt && addrconf_is_prefix_route(rt)) { + if (rt != net->ipv6.ip6_null_entry && + addrconf_is_prefix_route(rt)) { if (onlink == 0) { ip6_del_rt(rt); rt = NULL; @@ -1737,7 +1741,7 @@ continue; if ((rt->rt6i_flags & flags) != flags) continue; - if ((noflags != 0) && ((rt->rt6i_flags & flags) != 0)) + if ((rt->rt6i_flags & noflags) != 0) continue; dst_hold(&rt->dst); break; @@ -3089,14 +3093,15 @@ struct hlist_node *n; hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; /* sync with offset */ if (p < state->offset) { p++; continue; } state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } /* prepare for next bucket */ @@ -3114,18 +3119,20 @@ struct hlist_node *n = &ifa->addr_lst; hlist_for_each_entry_continue_rcu_bh(ifa, n, addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } while (++state->bucket < IN6_ADDR_HSIZE) { state->offset = 0; hlist_for_each_entry_rcu_bh(ifa, n, &inet6_addr_lst[state->bucket], addr_lst) { + if (!net_eq(dev_net(ifa->idev->dev), net)) + continue; state->offset++; - if (net_eq(dev_net(ifa->idev->dev), net)) - return ifa; + return ifa; } } @@ -4360,6 +4367,84 @@ return ret; } +#ifdef CONFIG_IPV6_PRIVACY +static void dev_tempaddr_change(struct inet6_dev *idev) +{ + if (!idev || !idev->dev) + return; + + if (!idev->cnf.disable_ipv6) { + /* If ipv6 is enabled, try to bring down and back up the + * interface to get new temporary addresses created + */ + addrconf_notify(NULL, NETDEV_DOWN, idev->dev); + addrconf_notify(NULL, NETDEV_UP, idev->dev); + } +} + +static void addrconf_tempaddr_change(struct net *net, __s32 newf) +{ + struct net_device *dev; + struct inet6_dev *idev; + + rcu_read_lock(); + for_each_netdev_rcu(net, dev) { + idev = __in6_dev_get(dev); + if (idev) { + int changed = (!idev->cnf.use_tempaddr) ^ (!newf); + idev->cnf.use_tempaddr = newf; + if (changed) + dev_tempaddr_change(idev); + } + } + rcu_read_unlock(); +} + +static int addrconf_use_tempaddr(struct ctl_table *table, int *p, int old) +{ + struct net *net; + + net = (struct net *)table->extra2; + + if (p == &net->ipv6.devconf_dflt->use_tempaddr) + return 0; + + if (!rtnl_trylock()) { + /* Restore the original values before restarting */ + *p = old; + return restart_syscall(); + } + + if (p == &net->ipv6.devconf_all->use_tempaddr) { + __s32 newf = net->ipv6.devconf_all->use_tempaddr; + net->ipv6.devconf_dflt->use_tempaddr = newf; + addrconf_tempaddr_change(net, newf); + } else if ((!*p) ^ (!old)) + dev_tempaddr_change((struct inet6_dev *)table->extra1); + + rtnl_unlock(); + return 0; +} + +static +int addrconf_sysctl_tempaddr(ctl_table *ctl, int write, + void __user *buffer, size_t *lenp, loff_t *ppos) +{ + int *valp = ctl->data; + int val = *valp; + loff_t pos = *ppos; + int ret; + + ret = proc_dointvec(ctl, write, buffer, lenp, ppos); + + if (write) + ret = addrconf_use_tempaddr(ctl, valp, val); + if (ret) + *ppos = pos; + return ret; +} +#endif + static struct addrconf_sysctl_table { struct ctl_table_header *sysctl_header; @@ -4450,7 +4535,7 @@ .data = &ipv6_devconf.use_tempaddr, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = addrconf_sysctl_tempaddr, }, { .procname = "temp_valid_lft", --- linux-3.5.0.orig/net/ipv6/ipv6_sockglue.c +++ linux-3.5.0/net/ipv6/ipv6_sockglue.c @@ -827,6 +827,7 @@ if (val < 0 || val > 255) goto e_inval; np->min_hopcount = val; + retv = 0; break; case IPV6_DONTFRAG: np->dontfrag = valbool; --- linux-3.5.0.orig/net/ipv6/mip6.c +++ linux-3.5.0/net/ipv6/mip6.c @@ -86,28 +86,30 @@ static int mip6_mh_filter(struct sock *sk, struct sk_buff *skb) { - struct ip6_mh *mh; + struct ip6_mh _hdr; + const struct ip6_mh *mh; - if (!pskb_may_pull(skb, (skb_transport_offset(skb)) + 8) || - !pskb_may_pull(skb, (skb_transport_offset(skb) + - ((skb_transport_header(skb)[1] + 1) << 3)))) + mh = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (!mh) return -1; - mh = (struct ip6_mh *)skb_transport_header(skb); + if (((mh->ip6mh_hdrlen + 1) << 3) > skb->len) + return -1; if (mh->ip6mh_hdrlen < mip6_mh_len(mh->ip6mh_type)) { LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH message too short: %d vs >=%d\n", mh->ip6mh_hdrlen, mip6_mh_len(mh->ip6mh_type)); - mip6_param_prob(skb, 0, ((&mh->ip6mh_hdrlen) - - skb_network_header(skb))); + mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_hdrlen) + + skb_network_header_len(skb)); return -1; } if (mh->ip6mh_proto != IPPROTO_NONE) { LIMIT_NETDEBUG(KERN_DEBUG "mip6: MH invalid payload proto = %d\n", mh->ip6mh_proto); - mip6_param_prob(skb, 0, ((&mh->ip6mh_proto) - - skb_network_header(skb))); + mip6_param_prob(skb, 0, offsetof(struct ip6_mh, ip6mh_proto) + + skb_network_header_len(skb)); return -1; } --- linux-3.5.0.orig/net/ipv6/ndisc.c +++ linux-3.5.0/net/ipv6/ndisc.c @@ -580,7 +580,7 @@ { struct inet6_dev *idev; struct inet6_ifaddr *ifa; - struct in6_addr mcaddr; + struct in6_addr mcaddr = IN6ADDR_LINKLOCAL_ALLNODES_INIT; idev = in6_dev_get(dev); if (!idev) @@ -588,7 +588,6 @@ read_lock_bh(&idev->lock); list_for_each_entry(ifa, &idev->addr_list, if_list) { - addrconf_addr_solict_mult(&ifa->addr, &mcaddr); ndisc_send_na(dev, NULL, &mcaddr, &ifa->addr, /*router=*/ !!idev->cnf.forwarding, /*solicited=*/ false, /*override=*/ true, --- linux-3.5.0.orig/net/ipv6/route.c +++ linux-3.5.0/net/ipv6/route.c @@ -205,7 +205,7 @@ }; static const u32 ip6_template_metrics[RTAX_MAX] = { - [RTAX_HOPLIMIT - 1] = 255, + [RTAX_HOPLIMIT - 1] = 0, }; static struct rt6_info ip6_null_entry_template = { @@ -846,7 +846,8 @@ dst_hold(&rt->dst); read_unlock_bh(&table->tb6_lock); - if (!dst_get_neighbour_noref_raw(&rt->dst) && !(rt->rt6i_flags & RTF_NONEXTHOP)) + if (!dst_get_neighbour_noref_raw(&rt->dst) && + !(rt->rt6i_flags & (RTF_NONEXTHOP | RTF_LOCAL))) nrt = rt6_alloc_cow(rt, &fl6->daddr, &fl6->saddr); else if (!(rt->dst.flags & DST_HOST)) nrt = rt6_alloc_clone(rt, &fl6->daddr); @@ -1135,7 +1136,7 @@ rt->rt6i_dst.addr = fl6->daddr; rt->rt6i_dst.plen = 128; rt->rt6i_idev = idev; - dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 255); + dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 0); spin_lock_bh(&icmp6_dst_lock); rt->dst.next = icmp6_dst_gc_list; @@ -1485,17 +1486,18 @@ struct fib6_table *table; struct net *net = dev_net(rt->dst.dev); - if (rt == net->ipv6.ip6_null_entry) - return -ENOENT; + if (rt == net->ipv6.ip6_null_entry) { + err = -ENOENT; + goto out; + } table = rt->rt6i_table; write_lock_bh(&table->tb6_lock); - err = fib6_del(rt, info); - dst_release(&rt->dst); - write_unlock_bh(&table->tb6_lock); +out: + dst_release(&rt->dst); return err; } --- linux-3.5.0.orig/net/ipv6/raw.c +++ linux-3.5.0/net/ipv6/raw.c @@ -107,21 +107,20 @@ * 0 - deliver * 1 - block */ -static __inline__ int icmpv6_filter(struct sock *sk, struct sk_buff *skb) +static int icmpv6_filter(const struct sock *sk, const struct sk_buff *skb) { - struct icmp6hdr *icmph; - struct raw6_sock *rp = raw6_sk(sk); + struct icmp6hdr *_hdr; + const struct icmp6hdr *hdr; - if (pskb_may_pull(skb, sizeof(struct icmp6hdr))) { - __u32 *data = &rp->filter.data[0]; - int bit_nr; + hdr = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (hdr) { + const __u32 *data = &raw6_sk(sk)->filter.data[0]; + unsigned int type = hdr->icmp6_type; - icmph = (struct icmp6hdr *) skb->data; - bit_nr = icmph->icmp6_type; - - return (data[bit_nr >> 5] & (1 << (bit_nr & 31))) != 0; + return (data[type >> 5] & (1U << (type & 31))) != 0; } - return 0; + return 1; } #if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE) --- linux-3.5.0.orig/net/ipv6/tcp_ipv6.c +++ linux-3.5.0/net/ipv6/tcp_ipv6.c @@ -896,7 +896,8 @@ __tcp_v6_send_check(buff, &fl6.saddr, &fl6.daddr); fl6.flowi6_proto = IPPROTO_TCP; - fl6.flowi6_oif = inet6_iif(skb); + if (ipv6_addr_type(&fl6.daddr) & IPV6_ADDR_LINKLOCAL) + fl6.flowi6_oif = inet6_iif(skb); fl6.fl6_dport = t1->dest; fl6.fl6_sport = t1->source; security_skb_classify_flow(skb, flowi6_to_flowi(&fl6)); @@ -1412,7 +1413,8 @@ #endif if (__inet_inherit_port(sk, newsk) < 0) { - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + tcp_done(newsk); goto out; } __inet6_hash(newsk, NULL); --- linux-3.5.0.orig/net/ipv4/inet_diag.c +++ linux-3.5.0/net/ipv4/inet_diag.c @@ -44,6 +44,10 @@ u16 dport; u16 family; u16 userlocks; +#if IS_ENABLED(CONFIG_IPV6) + struct in6_addr saddr_storage; /* for IPv4-mapped-IPv6 addresses */ + struct in6_addr daddr_storage; /* for IPv4-mapped-IPv6 addresses */ +#endif }; #define INET_DIAG_PUT(skb, attrtype, attrlen) \ @@ -419,25 +423,31 @@ break; } - if (cond->prefix_len == 0) - break; - if (op->code == INET_DIAG_BC_S_COND) addr = entry->saddr; else addr = entry->daddr; + if (cond->family != AF_UNSPEC && + cond->family != entry->family) { + if (entry->family == AF_INET6 && + cond->family == AF_INET) { + if (addr[0] == 0 && addr[1] == 0 && + addr[2] == htonl(0xffff) && + bitstring_match(addr + 3, + cond->addr, + cond->prefix_len)) + break; + } + yes = 0; + break; + } + + if (cond->prefix_len == 0) + break; if (bitstring_match(addr, cond->addr, cond->prefix_len)) break; - if (entry->family == AF_INET6 && - cond->family == AF_INET) { - if (addr[0] == 0 && addr[1] == 0 && - addr[2] == htonl(0xffff) && - bitstring_match(addr + 3, cond->addr, - cond->prefix_len)) - break; - } yes = 0; break; } @@ -500,6 +510,55 @@ return 0; } +/* Validate an inet_diag_hostcond. */ +static bool valid_hostcond(const struct inet_diag_bc_op *op, int len, + int *min_len) +{ + int addr_len; + struct inet_diag_hostcond *cond; + + /* Check hostcond space. */ + *min_len += sizeof(struct inet_diag_hostcond); + if (len < *min_len) + return false; + cond = (struct inet_diag_hostcond *)(op + 1); + + /* Check address family and address length. */ + switch (cond->family) { + case AF_UNSPEC: + addr_len = 0; + break; + case AF_INET: + addr_len = sizeof(struct in_addr); + break; + case AF_INET6: + addr_len = sizeof(struct in6_addr); + break; + default: + return false; + } + *min_len += addr_len; + if (len < *min_len) + return false; + + /* Check prefix length (in bits) vs address length (in bytes). */ + if (cond->prefix_len > 8 * addr_len) + return false; + + return true; +} + +/* Validate a port comparison operator. */ +static inline bool valid_port_comparison(const struct inet_diag_bc_op *op, + int len, int *min_len) +{ + /* Port comparisons put the port in a follow-on inet_diag_bc_op. */ + *min_len += sizeof(struct inet_diag_bc_op); + if (len < *min_len) + return false; + return true; +} + static int inet_diag_bc_audit(const void *bytecode, int bytecode_len) { const void *bc = bytecode; @@ -507,29 +566,39 @@ while (len > 0) { const struct inet_diag_bc_op *op = bc; + int min_len = sizeof(struct inet_diag_bc_op); //printk("BC: %d %d %d {%d} / %d\n", op->code, op->yes, op->no, op[1].no, len); switch (op->code) { - case INET_DIAG_BC_AUTO: case INET_DIAG_BC_S_COND: case INET_DIAG_BC_D_COND: + if (!valid_hostcond(bc, len, &min_len)) + return -EINVAL; + break; case INET_DIAG_BC_S_GE: case INET_DIAG_BC_S_LE: case INET_DIAG_BC_D_GE: case INET_DIAG_BC_D_LE: - case INET_DIAG_BC_JMP: - if (op->no < 4 || op->no > len + 4 || op->no & 3) - return -EINVAL; - if (op->no < len && - !valid_cc(bytecode, bytecode_len, len - op->no)) + if (!valid_port_comparison(bc, len, &min_len)) return -EINVAL; break; + case INET_DIAG_BC_AUTO: + case INET_DIAG_BC_JMP: case INET_DIAG_BC_NOP: break; default: return -EINVAL; } - if (op->yes < 4 || op->yes > len + 4 || op->yes & 3) + + if (op->code != INET_DIAG_BC_NOP) { + if (op->no < min_len || op->no > len + 4 || op->no & 3) + return -EINVAL; + if (op->no < len && + !valid_cc(bytecode, bytecode_len, len - op->no)) + return -EINVAL; + } + + if (op->yes < min_len || op->yes > len + 4 || op->yes & 3) return -EINVAL; bc += op->yes; len -= op->yes; @@ -586,6 +655,36 @@ cb->nlh->nlmsg_seq, NLM_F_MULTI, cb->nlh); } +/* Get the IPv4, IPv6, or IPv4-mapped-IPv6 local and remote addresses + * from a request_sock. For IPv4-mapped-IPv6 we must map IPv4 to IPv6. + */ +static inline void inet_diag_req_addrs(const struct sock *sk, + const struct request_sock *req, + struct inet_diag_entry *entry) +{ + struct inet_request_sock *ireq = inet_rsk(req); + +#if IS_ENABLED(CONFIG_IPV6) + if (sk->sk_family == AF_INET6) { + if (req->rsk_ops->family == AF_INET6) { + entry->saddr = inet6_rsk(req)->loc_addr.s6_addr32; + entry->daddr = inet6_rsk(req)->rmt_addr.s6_addr32; + } else if (req->rsk_ops->family == AF_INET) { + ipv6_addr_set_v4mapped(ireq->loc_addr, + &entry->saddr_storage); + ipv6_addr_set_v4mapped(ireq->rmt_addr, + &entry->daddr_storage); + entry->saddr = entry->saddr_storage.s6_addr32; + entry->daddr = entry->daddr_storage.s6_addr32; + } + } else +#endif + { + entry->saddr = &ireq->loc_addr; + entry->daddr = &ireq->rmt_addr; + } +} + static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk, struct request_sock *req, u32 pid, u32 seq, const struct nlmsghdr *unlh) @@ -624,8 +723,10 @@ r->idiag_inode = 0; #if IS_ENABLED(CONFIG_IPV6) if (r->idiag_family == AF_INET6) { - *(struct in6_addr *)r->id.idiag_src = inet6_rsk(req)->loc_addr; - *(struct in6_addr *)r->id.idiag_dst = inet6_rsk(req)->rmt_addr; + struct inet_diag_entry entry; + inet_diag_req_addrs(sk, req, &entry); + memcpy(r->id.idiag_src, entry.saddr, sizeof(struct in6_addr)); + memcpy(r->id.idiag_dst, entry.daddr, sizeof(struct in6_addr)); } #endif nlh->nlmsg_len = skb_tail_pointer(skb) - b; @@ -683,18 +784,7 @@ continue; if (bc) { - entry.saddr = -#if IS_ENABLED(CONFIG_IPV6) - (entry.family == AF_INET6) ? - inet6_rsk(req)->loc_addr.s6_addr32 : -#endif - &ireq->loc_addr; - entry.daddr = -#if IS_ENABLED(CONFIG_IPV6) - (entry.family == AF_INET6) ? - inet6_rsk(req)->rmt_addr.s6_addr32 : -#endif - &ireq->rmt_addr; + inet_diag_req_addrs(sk, req, &entry); entry.dport = ntohs(ireq->rmt_port); if (!inet_diag_bc_run(bc, &entry)) @@ -875,13 +965,16 @@ struct inet_diag_req_v2 *r, struct nlattr *bc) { const struct inet_diag_handler *handler; + int err = 0; handler = inet_diag_lock_handler(r->sdiag_protocol); if (!IS_ERR(handler)) handler->dump(skb, cb, r, bc); + else + err = PTR_ERR(handler); inet_diag_unlock_handler(handler); - return skb->len; + return err ? : skb->len; } static int inet_diag_dump(struct sk_buff *skb, struct netlink_callback *cb) --- linux-3.5.0.orig/net/ipv4/ip_sockglue.c +++ linux-3.5.0/net/ipv4/ip_sockglue.c @@ -456,19 +456,28 @@ struct inet_sock *inet = inet_sk(sk); int val = 0, err; - if (((1<= sizeof(int)) { if (get_user(val, (int __user *) optval)) return -EFAULT; @@ -580,7 +589,7 @@ case IP_TTL: if (optlen < 1) goto e_inval; - if (val != -1 && (val < 0 || val > 255)) + if (val != -1 && (val < 1 || val > 255)) goto e_inval; inet->uc_ttl = val; break; --- linux-3.5.0.orig/net/ipv4/af_inet.c +++ linux-3.5.0/net/ipv4/af_inet.c @@ -227,8 +227,12 @@ u32 inet_ehash_secret __read_mostly; EXPORT_SYMBOL(inet_ehash_secret); +u32 ipv6_hash_secret __read_mostly; +EXPORT_SYMBOL(ipv6_hash_secret); + /* - * inet_ehash_secret must be set exactly once + * inet_ehash_secret must be set exactly once, and to a non nul value + * ipv6_hash_secret must be set exactly once. */ void build_ehash_secret(void) { @@ -238,7 +242,8 @@ get_random_bytes(&rnd, sizeof(rnd)); } while (rnd == 0); - cmpxchg(&inet_ehash_secret, 0, rnd); + if (cmpxchg(&inet_ehash_secret, 0, rnd) == 0) + get_random_bytes(&ipv6_hash_secret, sizeof(ipv6_hash_secret)); } EXPORT_SYMBOL(build_ehash_secret); --- linux-3.5.0.orig/net/ipv4/ipmr.c +++ linux-3.5.0/net/ipv4/ipmr.c @@ -124,6 +124,8 @@ static struct kmem_cache *mrt_cachep __read_mostly; static struct mr_table *ipmr_new_table(struct net *net, u32 id); +static void ipmr_free_table(struct mr_table *mrt); + static int ip_mr_forward(struct net *net, struct mr_table *mrt, struct sk_buff *skb, struct mfc_cache *cache, int local); @@ -131,6 +133,7 @@ struct sk_buff *pkt, vifi_t vifi, int assert); static int __ipmr_fill_mroute(struct mr_table *mrt, struct sk_buff *skb, struct mfc_cache *c, struct rtmsg *rtm); +static void mroute_clean_tables(struct mr_table *mrt); static void ipmr_expire_process(unsigned long arg); #ifdef CONFIG_IP_MROUTE_MULTIPLE_TABLES @@ -271,7 +274,7 @@ list_for_each_entry_safe(mrt, next, &net->ipv4.mr_tables, list) { list_del(&mrt->list); - kfree(mrt); + ipmr_free_table(mrt); } fib_rules_unregister(net->ipv4.mr_rules_ops); } @@ -299,7 +302,7 @@ static void __net_exit ipmr_rules_exit(struct net *net) { - kfree(net->ipv4.mrt); + ipmr_free_table(net->ipv4.mrt); } #endif @@ -336,6 +339,13 @@ return mrt; } +static void ipmr_free_table(struct mr_table *mrt) +{ + del_timer_sync(&mrt->ipmr_expire_timer); + mroute_clean_tables(mrt); + kfree(mrt); +} + /* Service routines creating virtual interfaces: DVMRP tunnels and PIMREG */ static void ipmr_del_tunnel(struct net_device *dev, struct vifctl *v) --- linux-3.5.0.orig/net/ipv4/inet_connection_sock.c +++ linux-3.5.0/net/ipv4/inet_connection_sock.c @@ -673,6 +673,22 @@ } EXPORT_SYMBOL(inet_csk_destroy_sock); +/* This function allows to force a closure of a socket after the call to + * tcp/dccp_create_openreq_child(). + */ +void inet_csk_prepare_forced_close(struct sock *sk) +{ + /* sk_clone_lock locked the socket and set refcnt to 2 */ + bh_unlock_sock(sk); + sock_put(sk); + + /* The below has to be done to allow calling inet_csk_destroy_sock */ + sock_set_flag(sk, SOCK_DEAD); + percpu_counter_inc(sk->sk_prot->orphan_count); + inet_sk(sk)->inet_num = 0; +} +EXPORT_SYMBOL(inet_csk_prepare_forced_close); + int inet_csk_listen_start(struct sock *sk, const int nr_table_entries) { struct inet_sock *inet = inet_sk(sk); --- linux-3.5.0.orig/net/ipv4/proc.c +++ linux-3.5.0/net/ipv4/proc.c @@ -232,7 +232,6 @@ SNMP_MIB_ITEM("TCPDSACKOfoSent", LINUX_MIB_TCPDSACKOFOSENT), SNMP_MIB_ITEM("TCPDSACKRecv", LINUX_MIB_TCPDSACKRECV), SNMP_MIB_ITEM("TCPDSACKOfoRecv", LINUX_MIB_TCPDSACKOFORECV), - SNMP_MIB_ITEM("TCPAbortOnSyn", LINUX_MIB_TCPABORTONSYN), SNMP_MIB_ITEM("TCPAbortOnData", LINUX_MIB_TCPABORTONDATA), SNMP_MIB_ITEM("TCPAbortOnClose", LINUX_MIB_TCPABORTONCLOSE), SNMP_MIB_ITEM("TCPAbortOnMemory", LINUX_MIB_TCPABORTONMEMORY), @@ -258,6 +257,8 @@ SNMP_MIB_ITEM("TCPReqQFullDrop", LINUX_MIB_TCPREQQFULLDROP), SNMP_MIB_ITEM("TCPRetransFail", LINUX_MIB_TCPRETRANSFAIL), SNMP_MIB_ITEM("TCPRcvCoalesce", LINUX_MIB_TCPRCVCOALESCE), + SNMP_MIB_ITEM("TCPChallengeACK", LINUX_MIB_TCPCHALLENGEACK), + SNMP_MIB_ITEM("TCPSYNChallenge", LINUX_MIB_TCPSYNCHALLENGE), SNMP_MIB_SENTINEL }; --- linux-3.5.0.orig/net/ipv4/sysctl_net_ipv4.c +++ linux-3.5.0/net/ipv4/sysctl_net_ipv4.c @@ -591,6 +591,13 @@ .mode = 0644, .proc_handler = proc_dointvec }, + { + .procname = "tcp_challenge_ack_limit", + .data = &sysctl_tcp_challenge_ack_limit, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec + }, #ifdef CONFIG_NET_DMA { .procname = "tcp_dma_copybreak", --- linux-3.5.0.orig/net/ipv4/tcp_ipv4.c +++ linux-3.5.0/net/ipv4/tcp_ipv4.c @@ -691,10 +691,11 @@ arg.csumoffset = offsetof(struct tcphdr, check) / 2; arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0; /* When socket is gone, all binding information is lost. - * routing might fail in this case. using iif for oif to - * make sure we can deliver it + * routing might fail in this case. No choice here, if we choose to force + * input interface, we will misroute in case of asymmetric route. */ - arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb); + if (sk) + arg.bound_dev_if = sk->sk_bound_dev_if; net = dev_net(skb_dst(skb)->dev); arg.tos = ip_hdr(skb)->tos; @@ -1538,10 +1539,8 @@ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); return NULL; put_and_exit: - tcp_clear_xmit_timers(newsk); - tcp_cleanup_congestion_control(newsk); - bh_unlock_sock(newsk); - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + tcp_done(newsk); goto exit; } EXPORT_SYMBOL(tcp_v4_syn_recv_sock); --- linux-3.5.0.orig/net/ipv4/ip_fragment.c +++ linux-3.5.0/net/ipv4/ip_fragment.c @@ -698,28 +698,27 @@ struct sk_buff *ip_check_defrag(struct sk_buff *skb, u32 user) { - const struct iphdr *iph; + struct iphdr iph; u32 len; if (skb->protocol != htons(ETH_P_IP)) return skb; - if (!pskb_may_pull(skb, sizeof(struct iphdr))) + if (!skb_copy_bits(skb, 0, &iph, sizeof(iph))) return skb; - iph = ip_hdr(skb); - if (iph->ihl < 5 || iph->version != 4) + if (iph.ihl < 5 || iph.version != 4) return skb; - if (!pskb_may_pull(skb, iph->ihl*4)) - return skb; - iph = ip_hdr(skb); - len = ntohs(iph->tot_len); - if (skb->len < len || len < (iph->ihl * 4)) + + len = ntohs(iph.tot_len); + if (skb->len < len || len < (iph.ihl * 4)) return skb; - if (ip_is_fragment(ip_hdr(skb))) { + if (ip_is_fragment(&iph)) { skb = skb_share_check(skb, GFP_ATOMIC); if (skb) { + if (!pskb_may_pull(skb, iph.ihl*4)) + return skb; if (pskb_trim_rcsum(skb, len)) return skb; memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); --- linux-3.5.0.orig/net/ipv4/tcp_input.c +++ linux-3.5.0/net/ipv4/tcp_input.c @@ -88,6 +88,9 @@ int sysctl_tcp_adv_win_scale __read_mostly = 1; EXPORT_SYMBOL(sysctl_tcp_adv_win_scale); +/* rfc5961 challenge ack rate limiting */ +int sysctl_tcp_challenge_ack_limit = 100; + int sysctl_tcp_stdurg __read_mostly; int sysctl_tcp_rfc1337 __read_mostly; int sysctl_tcp_max_orphans __read_mostly = NR_FILE; @@ -3107,13 +3110,14 @@ * tcp_xmit_retransmit_queue(). */ static void tcp_fastretrans_alert(struct sock *sk, int pkts_acked, - int newly_acked_sacked, bool is_dupack, + int prior_sacked, bool is_dupack, int flag) { struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); int do_lost = is_dupack || ((flag & FLAG_DATA_SACKED) && (tcp_fackets_out(tp) > tp->reordering)); + int newly_acked_sacked = 0; int fast_rexmit = 0; if (WARN_ON(!tp->packets_out && tp->sacked_out)) @@ -3173,6 +3177,7 @@ tcp_add_reno_sack(sk); } else do_lost = tcp_try_undo_partial(sk, pkts_acked); + newly_acked_sacked = pkts_acked + tp->sacked_out - prior_sacked; break; case TCP_CA_Loss: if (flag & FLAG_DATA_ACKED) @@ -3194,6 +3199,7 @@ if (is_dupack) tcp_add_reno_sack(sk); } + newly_acked_sacked = pkts_acked + tp->sacked_out - prior_sacked; if (icsk->icsk_ca_state <= TCP_CA_Disorder) tcp_try_undo_dsack(sk); @@ -3709,6 +3715,11 @@ } } else { if (!(flag & FLAG_DATA_ACKED) && (tp->frto_counter == 1)) { + if (!tcp_packets_in_flight(tp)) { + tcp_enter_frto_loss(sk, 2, flag); + return true; + } + /* Prevent sending of new data. */ tp->snd_cwnd = min(tp->snd_cwnd, tcp_packets_in_flight(tp)); @@ -3757,6 +3768,24 @@ return false; } +/* RFC 5961 7 [ACK Throttling] */ +static void tcp_send_challenge_ack(struct sock *sk) +{ + /* unprotected vars, we dont care of overwrites */ + static u32 challenge_timestamp; + static unsigned int challenge_count; + u32 now = jiffies / HZ; + + if (now != challenge_timestamp) { + challenge_timestamp = now; + challenge_count = 0; + } + if (++challenge_count <= sysctl_tcp_challenge_ack_limit) { + NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPCHALLENGEACK); + tcp_send_ack(sk); + } +} + /* This routine deals with incoming acks, but not outgoing ones. */ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag) { @@ -3771,14 +3800,19 @@ int prior_packets; int prior_sacked = tp->sacked_out; int pkts_acked = 0; - int newly_acked_sacked = 0; bool frto_cwnd = false; /* If the ack is older than previous acks * then we can probably ignore it. */ - if (before(ack, prior_snd_una)) + if (before(ack, prior_snd_una)) { + /* RFC 5961 5.2 [Blind Data Injection Attack].[Mitigation] */ + if (before(ack, prior_snd_una - tp->max_window)) { + tcp_send_challenge_ack(sk); + return -1; + } goto old_ack; + } /* If the ack includes data we haven't sent yet, discard * this segment (RFC793 Section 3.9). @@ -3847,8 +3881,6 @@ flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una); pkts_acked = prior_packets - tp->packets_out; - newly_acked_sacked = (prior_packets - prior_sacked) - - (tp->packets_out - tp->sacked_out); if (tp->frto_counter) frto_cwnd = tcp_process_frto(sk, flag); @@ -3862,7 +3894,7 @@ tcp_may_raise_cwnd(sk, flag)) tcp_cong_avoid(sk, ack, prior_in_flight); is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP)); - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, is_dupack, flag); } else { if ((flag & FLAG_DATA_ACKED) && !frto_cwnd) @@ -3877,7 +3909,7 @@ no_queue: /* If data was DSACKed, see if we can undo a cwnd reduction. */ if (flag & FLAG_DSACKING_ACK) - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, is_dupack, flag); /* If this ack opens up a zero window, clear backoff. It was * being used to time the probes, and is probably far higher than @@ -3897,8 +3929,7 @@ */ if (TCP_SKB_CB(skb)->sacked) { flag |= tcp_sacktag_write_queue(sk, skb, prior_snd_una); - newly_acked_sacked = tp->sacked_out - prior_sacked; - tcp_fastretrans_alert(sk, pkts_acked, newly_acked_sacked, + tcp_fastretrans_alert(sk, pkts_acked, prior_sacked, is_dupack, flag); } @@ -4714,6 +4745,9 @@ struct tcphdr *th; bool fragstolen; + if (size == 0) + return 0; + if (tcp_try_rmem_schedule(sk, size + sizeof(*th))) goto err; @@ -4819,7 +4853,7 @@ if (eaten > 0) kfree_skb_partial(skb, fragstolen); - else if (!sock_flag(sk, SOCK_DEAD)) + if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); return; } @@ -5429,8 +5463,8 @@ /* Does PAWS and seqno based validation of an incoming segment, flags will * play significant role here. */ -static int tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, - const struct tcphdr *th, int syn_inerr) +static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, + const struct tcphdr *th, int syn_inerr) { const u8 *hash_location; struct tcp_sock *tp = tcp_sk(sk); @@ -5455,38 +5489,48 @@ * an acknowledgment should be sent in reply (unless the RST * bit is set, if so drop the segment and return)". */ - if (!th->rst) + if (!th->rst) { + if (th->syn) + goto syn_challenge; tcp_send_dupack(sk, skb); + } goto discard; } /* Step 2: check RST bit */ if (th->rst) { - tcp_reset(sk); + /* RFC 5961 3.2 : + * If sequence number exactly matches RCV.NXT, then + * RESET the connection + * else + * Send a challenge ACK + */ + if (TCP_SKB_CB(skb)->seq == tp->rcv_nxt) + tcp_reset(sk); + else + tcp_send_challenge_ack(sk); goto discard; } - /* ts_recent update must be made after we are sure that the packet - * is in window. - */ - tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); - /* step 3: check security and precedence [ignored] */ - /* step 4: Check for a SYN in window. */ - if (th->syn && !before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) { + /* step 4: Check for a SYN + * RFC 5691 4.2 : Send a challenge ack + */ + if (th->syn) { +syn_challenge: if (syn_inerr) TCP_INC_STATS_BH(sock_net(sk), TCP_MIB_INERRS); - NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPABORTONSYN); - tcp_reset(sk); - return -1; + NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPSYNCHALLENGE); + tcp_send_challenge_ack(sk); + goto discard; } - return 1; + return true; discard: __kfree_skb(skb); - return 0; + return false; } /* @@ -5516,7 +5560,6 @@ const struct tcphdr *th, unsigned int len) { struct tcp_sock *tp = tcp_sk(sk); - int res; /* * Header prediction. @@ -5602,7 +5645,9 @@ if (tp->copied_seq == tp->rcv_nxt && len - tcp_header_len <= tp->ucopy.len) { #ifdef CONFIG_NET_DMA - if (tcp_dma_try_early_copy(sk, skb, tcp_header_len)) { + if (tp->ucopy.task == current && + sock_owned_by_user(sk) && + tcp_dma_try_early_copy(sk, skb, tcp_header_len)) { copied_early = 1; eaten = 1; } @@ -5679,8 +5724,7 @@ #endif if (eaten) kfree_skb_partial(skb, fragstolen); - else - sk->sk_data_ready(sk, 0); + sk->sk_data_ready(sk, 0); return 0; } } @@ -5693,14 +5737,18 @@ * Standard slow path. */ - res = tcp_validate_incoming(sk, skb, th, 1); - if (res <= 0) - return -res; + if (!tcp_validate_incoming(sk, skb, th, 1)) + return 0; step5: if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH) < 0) goto discard; + /* ts_recent update must be made after we are sure that the packet + * is in window. + */ + tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); + tcp_rcv_rtt_measure_ts(sk, skb); /* Process urgent data. */ @@ -6013,7 +6061,6 @@ struct tcp_sock *tp = tcp_sk(sk); struct inet_connection_sock *icsk = inet_csk(sk); int queued = 0; - int res; tp->rx_opt.saw_tstamp = 0; @@ -6068,9 +6115,8 @@ return 0; } - res = tcp_validate_incoming(sk, skb, th, 0); - if (res <= 0) - return -res; + if (!tcp_validate_incoming(sk, skb, th, 0)) + return 0; /* step 5: check the ACK field */ if (th->ack) { @@ -6181,6 +6227,11 @@ } else goto discard; + /* ts_recent update must be made after we are sure that the packet + * is in window. + */ + tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq); + /* step 6: check the URG bit */ tcp_urg(sk, skb, th); --- linux-3.5.0.orig/net/ipv4/tcp_output.c +++ linux-3.5.0/net/ipv4/tcp_output.c @@ -1334,21 +1334,21 @@ * when we would be allowed to send the split-due-to-Nagle skb fully. */ static unsigned int tcp_mss_split_point(const struct sock *sk, const struct sk_buff *skb, - unsigned int mss_now, unsigned int cwnd) + unsigned int mss_now, unsigned int max_segs) { const struct tcp_sock *tp = tcp_sk(sk); - u32 needed, window, cwnd_len; + u32 needed, window, max_len; window = tcp_wnd_end(tp) - TCP_SKB_CB(skb)->seq; - cwnd_len = mss_now * cwnd; + max_len = mss_now * max_segs; - if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk))) - return cwnd_len; + if (likely(max_len <= window && skb != tcp_write_queue_tail(sk))) + return max_len; needed = min(skb->len, window); - if (cwnd_len <= needed) - return cwnd_len; + if (max_len <= needed) + return max_len; return needed - needed % mss_now; } @@ -1577,7 +1577,8 @@ limit = min(send_win, cong_win); /* If a full-sized TSO skb can be sent, do it. */ - if (limit >= sk->sk_gso_max_size) + if (limit >= min_t(unsigned int, sk->sk_gso_max_size, + sk->sk_gso_max_segs * tp->mss_cache)) goto send_now; /* Middle in queue won't get any more data, full sendable already? */ @@ -1783,6 +1784,9 @@ tso_segs = tcp_init_tso_segs(sk, skb, mss_now); BUG_ON(!tso_segs); + if (unlikely(tp->repair) && tp->repair_queue == TCP_SEND_QUEUE) + goto repair; /* Skip network transmission */ + cwnd_quota = tcp_cwnd_test(tp, skb); if (!cwnd_quota) break; @@ -1803,7 +1807,9 @@ limit = mss_now; if (tso_segs > 1 && !tcp_urg_mode(tp)) limit = tcp_mss_split_point(sk, skb, mss_now, - cwnd_quota); + min_t(unsigned int, + cwnd_quota, + sk->sk_gso_max_segs)); if (skb->len > limit && unlikely(tso_fragment(sk, skb, limit, mss_now, gfp))) @@ -1814,6 +1820,7 @@ if (unlikely(tcp_transmit_skb(sk, skb, 1, gfp))) break; +repair: /* Advance the send_head. This one is sent out. * This call will increment packets_out. */ --- linux-3.5.0.orig/net/ipv4/tcp.c +++ linux-3.5.0/net/ipv4/tcp.c @@ -546,14 +546,12 @@ !tp->urg_data || before(tp->urg_seq, tp->copied_seq) || !before(tp->urg_seq, tp->rcv_nxt)) { - struct sk_buff *skb; answ = tp->rcv_nxt - tp->copied_seq; - /* Subtract 1, if FIN is in queue. */ - skb = skb_peek_tail(&sk->sk_receive_queue); - if (answ && skb) - answ -= tcp_hdr(skb)->fin; + /* Subtract 1, if FIN was received */ + if (answ && sock_flag(sk, SOCK_DONE)) + answ--; } else answ = tp->urg_seq - tp->copied_seq; release_sock(sk); @@ -805,7 +803,9 @@ old_size_goal + mss_now > xmit_size_goal)) { xmit_size_goal = old_size_goal; } else { - tp->xmit_size_goal_segs = xmit_size_goal / mss_now; + tp->xmit_size_goal_segs = + min_t(u16, xmit_size_goal / mss_now, + sk->sk_gso_max_segs); xmit_size_goal = tp->xmit_size_goal_segs * mss_now; } } @@ -1180,7 +1180,7 @@ wait_for_sndbuf: set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); wait_for_memory: - if (copied && likely(!tp->repair)) + if (copied) tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH); if ((err = sk_stream_wait_memory(sk, &timeo)) != 0) @@ -1191,7 +1191,7 @@ } out: - if (copied && likely(!tp->repair)) + if (copied) tcp_push(sk, flags, mss_now, tp->nonagle); release_sock(sk); return copied; @@ -1704,8 +1704,14 @@ } #ifdef CONFIG_NET_DMA - if (tp->ucopy.dma_chan) - dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + if (tp->ucopy.dma_chan) { + if (tp->rcv_wnd == 0 && + !skb_queue_empty(&sk->sk_async_wait_queue)) { + tcp_service_net_dma(sk, true); + tcp_cleanup_rbuf(sk, copied); + } else + dma_async_memcpy_issue_pending(tp->ucopy.dma_chan); + } #endif if (copied >= target) { /* Do not sleep, just process backlog. */ @@ -2625,7 +2631,10 @@ /* Cap the max timeout in ms TCP will retry/retrans * before giving up and aborting (ETIMEDOUT) a connection. */ - icsk->icsk_user_timeout = msecs_to_jiffies(val); + if (val < 0) + err = -EINVAL; + else + icsk->icsk_user_timeout = msecs_to_jiffies(val); break; default: err = -ENOPROTOOPT; --- linux-3.5.0.orig/net/ipv4/raw.c +++ linux-3.5.0/net/ipv4/raw.c @@ -131,18 +131,20 @@ * 0 - deliver * 1 - block */ -static __inline__ int icmp_filter(struct sock *sk, struct sk_buff *skb) +static int icmp_filter(const struct sock *sk, const struct sk_buff *skb) { - int type; + struct icmphdr _hdr; + const struct icmphdr *hdr; - if (!pskb_may_pull(skb, sizeof(struct icmphdr))) + hdr = skb_header_pointer(skb, skb_transport_offset(skb), + sizeof(_hdr), &_hdr); + if (!hdr) return 1; - type = icmp_hdr(skb)->type; - if (type < 32) { + if (hdr->type < 32) { __u32 data = raw_sk(sk)->filter.data; - return ((1 << type) & data) != 0; + return ((1U << hdr->type) & data) != 0; } /* Do not block unknown ICMP types */ --- linux-3.5.0.orig/net/ipv4/ping.c +++ linux-3.5.0/net/ipv4/ping.c @@ -328,8 +328,8 @@ struct iphdr *iph = (struct iphdr *)skb->data; struct icmphdr *icmph = (struct icmphdr *)(skb->data+(iph->ihl<<2)); struct inet_sock *inet_sock; - int type = icmph->type; - int code = icmph->code; + int type = icmp_hdr(skb)->type; + int code = icmp_hdr(skb)->code; struct net *net = dev_net(skb->dev); struct sock *sk; int harderr; --- linux-3.5.0.orig/net/ipv4/fib_frontend.c +++ linux-3.5.0/net/ipv4/fib_frontend.c @@ -998,6 +998,14 @@ fib_disable_ip(dev, 2, -1); return NOTIFY_DONE; } + if (event == NETDEV_UNREGISTER_BATCH) { + /* The batch unregister is only called on the first + * device in the list of devices being unregistered. + * Therefore we should not pass dev_net(dev) in here. + */ + rt_cache_flush_batch(NULL); + return NOTIFY_DONE; + } if (!in_dev) return NOTIFY_DONE; @@ -1020,13 +1028,6 @@ case NETDEV_CHANGE: rt_cache_flush(dev_net(dev), 0); break; - case NETDEV_UNREGISTER_BATCH: - /* The batch unregister is only called on the first - * device in the list of devices being unregistered. - * Therefore we should not pass dev_net(dev) in here. - */ - rt_cache_flush_batch(NULL); - break; } return NOTIFY_DONE; } --- linux-3.5.0.orig/net/ipv4/tcp_cong.c +++ linux-3.5.0/net/ipv4/tcp_cong.c @@ -291,7 +291,8 @@ left = tp->snd_cwnd - in_flight; if (sk_can_gso(sk) && left * sysctl_tcp_tso_win_divisor < tp->snd_cwnd && - left * tp->mss_cache < sk->sk_gso_max_size) + left * tp->mss_cache < sk->sk_gso_max_size && + left < sk->sk_gso_max_segs) return true; return left <= tcp_max_tso_deferred_mss(tp); } --- linux-3.5.0.orig/net/ipv4/tcp_illinois.c +++ linux-3.5.0/net/ipv4/tcp_illinois.c @@ -313,11 +313,13 @@ .tcpv_rttcnt = ca->cnt_rtt, .tcpv_minrtt = ca->base_rtt, }; - u64 t = ca->sum_rtt; - do_div(t, ca->cnt_rtt); - info.tcpv_rtt = t; + if (info.tcpv_rttcnt > 0) { + u64 t = ca->sum_rtt; + do_div(t, info.tcpv_rttcnt); + info.tcpv_rtt = t; + } nla_put(skb, INET_DIAG_VEGASINFO, sizeof(info), &info); } } --- linux-3.5.0.orig/net/ipv4/netfilter/nf_nat_sip.c +++ linux-3.5.0/net/ipv4/netfilter/nf_nat_sip.c @@ -148,7 +148,7 @@ if (ct_sip_parse_header_uri(ct, *dptr, NULL, *datalen, hdr, NULL, &matchoff, &matchlen, &addr, &port) > 0) { - unsigned int matchend, poff, plen, buflen, n; + unsigned int olen, matchend, poff, plen, buflen, n; char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")]; /* We're only interested in headers related to this @@ -163,11 +163,12 @@ goto next; } + olen = *datalen; if (!map_addr(skb, dataoff, dptr, datalen, matchoff, matchlen, &addr, port)) return NF_DROP; - matchend = matchoff + matchlen; + matchend = matchoff + matchlen + *datalen - olen; /* The maddr= parameter (RFC 2361) specifies where to send * the reply. */ @@ -501,7 +502,10 @@ ret = nf_ct_expect_related(rtcp_exp); if (ret == 0) break; - else if (ret != -EBUSY) { + else if (ret == -EBUSY) { + nf_ct_unexpect_related(rtp_exp); + continue; + } else if (ret < 0) { nf_ct_unexpect_related(rtp_exp); port = 0; break; --- linux-3.5.0.orig/net/ipv4/netfilter/nf_nat_standalone.c +++ linux-3.5.0/net/ipv4/netfilter/nf_nat_standalone.c @@ -194,7 +194,8 @@ if ((ct->tuplehash[dir].tuple.src.u3.ip != ct->tuplehash[!dir].tuple.dst.u3.ip) || - (ct->tuplehash[dir].tuple.src.u.all != + (ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP && + ct->tuplehash[dir].tuple.src.u.all != ct->tuplehash[!dir].tuple.dst.u.all) ) return ip_xfrm_me_harder(skb) == 0 ? ret : NF_DROP; @@ -230,7 +231,8 @@ ret = NF_DROP; } #ifdef CONFIG_XFRM - else if (ct->tuplehash[dir].tuple.dst.u.all != + else if (ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP && + ct->tuplehash[dir].tuple.dst.u.all != ct->tuplehash[!dir].tuple.src.u.all) if (ip_xfrm_me_harder(skb)) ret = NF_DROP; --- linux-3.5.0.orig/net/wanrouter/wanmain.c +++ linux-3.5.0/net/wanrouter/wanmain.c @@ -602,36 +602,31 @@ * successfully, add it to the interface list. */ - if (dev->name == NULL) { - err = -EINVAL; - } else { - - #ifdef WANDEBUG - printk(KERN_INFO "%s: registering interface %s...\n", - wanrouter_modname, dev->name); - #endif - - err = register_netdev(dev); - if (!err) { - struct net_device *slave = NULL; - unsigned long smp_flags=0; - - lock_adapter_irq(&wandev->lock, &smp_flags); - - if (wandev->dev == NULL) { - wandev->dev = dev; - } else { - for (slave=wandev->dev; - DEV_TO_SLAVE(slave); - slave = DEV_TO_SLAVE(slave)) - DEV_TO_SLAVE(slave) = dev; - } - ++wandev->ndev; - - unlock_adapter_irq(&wandev->lock, &smp_flags); - err = 0; /* done !!! */ - goto out; +#ifdef WANDEBUG + printk(KERN_INFO "%s: registering interface %s...\n", + wanrouter_modname, dev->name); +#endif + + err = register_netdev(dev); + if (!err) { + struct net_device *slave = NULL; + unsigned long smp_flags=0; + + lock_adapter_irq(&wandev->lock, &smp_flags); + + if (wandev->dev == NULL) { + wandev->dev = dev; + } else { + for (slave=wandev->dev; + DEV_TO_SLAVE(slave); + slave = DEV_TO_SLAVE(slave)) + DEV_TO_SLAVE(slave) = dev; } + ++wandev->ndev; + + unlock_adapter_irq(&wandev->lock, &smp_flags); + err = 0; /* done !!! */ + goto out; } if (wandev->del_if) wandev->del_if(wandev, dev); --- linux-3.5.0.orig/net/batman-adv/bat_iv_ogm.c +++ linux-3.5.0/net/batman-adv/bat_iv_ogm.c @@ -117,7 +117,7 @@ { return jiffies + msecs_to_jiffies( atomic_read(&bat_priv->orig_interval) - - JITTER + (random32() % 2*JITTER)); + JITTER + (random32() % (2*JITTER))); } /* when do we schedule a ogm packet to be sent */ --- linux-3.5.0.orig/net/batman-adv/routing.c +++ linux-3.5.0/net/batman-adv/routing.c @@ -1081,8 +1081,14 @@ spin_unlock_bh(&orig_node->bcast_seqno_lock); + /* keep skb linear for crc calculation */ + if (skb_linearize(skb) < 0) + goto out; + + bcast_packet = (struct bcast_packet *)skb->data; + /* check whether this has been sent by another originator before */ - if (bla_check_bcast_duplist(bat_priv, bcast_packet, hdr_size)) + if (bla_check_bcast_duplist(bat_priv, bcast_packet, skb->len)) goto out; /* rebroadcast packet */ --- linux-3.5.0.orig/net/batman-adv/bridge_loop_avoidance.c +++ linux-3.5.0/net/batman-adv/bridge_loop_avoidance.c @@ -1172,8 +1172,8 @@ /** * @bat_priv: the bat priv with all the soft interface information - * @bcast_packet: originator mac address - * @hdr_size: maximum length of the frame + * @bcast_packet: encapsulated broadcast frame plus batman header + * @bcast_packet_len: length of encapsulated broadcast frame plus batman header * * check if it is on our broadcast list. Another gateway might * have sent the same packet because it is connected to the same backbone, @@ -1188,14 +1188,14 @@ int bla_check_bcast_duplist(struct bat_priv *bat_priv, struct bcast_packet *bcast_packet, - int hdr_size) + int bcast_packet_len) { int i, length, curr; uint8_t *content; uint16_t crc; struct bcast_duplist_entry *entry; - length = hdr_size - sizeof(*bcast_packet); + length = bcast_packet_len - sizeof(*bcast_packet); content = (uint8_t *)bcast_packet; content += sizeof(*bcast_packet); --- linux-3.5.0.orig/net/batman-adv/bitarray.h +++ linux-3.5.0/net/batman-adv/bitarray.h @@ -22,8 +22,9 @@ #ifndef _NET_BATMAN_ADV_BITARRAY_H_ #define _NET_BATMAN_ADV_BITARRAY_H_ -/* returns true if the corresponding bit in the given seq_bits indicates true - * and curr_seqno is within range of last_seqno */ +/* Returns 1 if the corresponding bit in the given seq_bits indicates true + * and curr_seqno is within range of last_seqno. Otherwise returns 0. + */ static inline int bat_test_bit(const unsigned long *seq_bits, uint32_t last_seqno, uint32_t curr_seqno) { @@ -33,7 +34,7 @@ if (diff < 0 || diff >= TQ_LOCAL_WINDOW_SIZE) return 0; else - return test_bit(diff, seq_bits); + return test_bit(diff, seq_bits) != 0; } /* turn corresponding bit on, so we can remember that we got the packet */ --- linux-3.5.0.orig/net/sched/sch_qfq.c +++ linux-3.5.0/net/sched/sch_qfq.c @@ -831,7 +831,10 @@ if (mask) { struct qfq_group *next = qfq_ffs(q, mask); if (qfq_gt(roundedF, next->F)) { - cl->S = next->F; + if (qfq_gt(limit, next->F)) + cl->S = next->F; + else /* preserve timestamp correctness */ + cl->S = limit; return; } } --- linux-3.5.0.orig/net/sched/act_gact.c +++ linux-3.5.0/net/sched/act_gact.c @@ -67,6 +67,9 @@ struct tcf_common *pc; int ret = 0; int err; +#ifdef CONFIG_GACT_PROB + struct tc_gact_p *p_parm = NULL; +#endif if (nla == NULL) return -EINVAL; @@ -82,6 +85,12 @@ #ifndef CONFIG_GACT_PROB if (tb[TCA_GACT_PROB] != NULL) return -EOPNOTSUPP; +#else + if (tb[TCA_GACT_PROB]) { + p_parm = nla_data(tb[TCA_GACT_PROB]); + if (p_parm->ptype >= MAX_RAND) + return -EINVAL; + } #endif pc = tcf_hash_check(parm->index, a, bind, &gact_hash_info); @@ -103,8 +112,7 @@ spin_lock_bh(&gact->tcf_lock); gact->tcf_action = parm->action; #ifdef CONFIG_GACT_PROB - if (tb[TCA_GACT_PROB] != NULL) { - struct tc_gact_p *p_parm = nla_data(tb[TCA_GACT_PROB]); + if (p_parm) { gact->tcfg_paction = p_parm->paction; gact->tcfg_pval = p_parm->pval; gact->tcfg_ptype = p_parm->ptype; @@ -133,7 +141,7 @@ spin_lock(&gact->tcf_lock); #ifdef CONFIG_GACT_PROB - if (gact->tcfg_ptype && gact_rand[gact->tcfg_ptype] != NULL) + if (gact->tcfg_ptype) action = gact_rand[gact->tcfg_ptype](gact); else action = gact->tcf_action; --- linux-3.5.0.orig/net/sched/sch_htb.c +++ linux-3.5.0/net/sched/sch_htb.c @@ -874,7 +874,7 @@ q->now = psched_get_time(); start_at = jiffies; - next_event = q->now + 5 * PSCHED_TICKS_PER_SEC; + next_event = q->now + 5LLU * PSCHED_TICKS_PER_SEC; for (level = 0; level < TC_HTB_MAXDEPTH; level++) { /* common case optimization - skip event handler quickly */ --- linux-3.5.0.orig/net/sched/sch_cbq.c +++ linux-3.5.0/net/sched/sch_cbq.c @@ -250,10 +250,11 @@ else if ((cl = defmap[res.classid & TC_PRIO_MAX]) == NULL) cl = defmap[TC_PRIO_BESTEFFORT]; - if (cl == NULL || cl->level >= head->level) + if (cl == NULL) goto fallback; } - + if (cl->level >= head->level) + goto fallback; #ifdef CONFIG_NET_CLS_ACT switch (result) { case TC_ACT_QUEUED: --- linux-3.5.0.orig/net/wireless/core.c +++ linux-3.5.0/net/wireless/core.c @@ -548,8 +548,7 @@ for (i = 0; i < sband->n_channels; i++) { sband->channels[i].orig_flags = sband->channels[i].flags; - sband->channels[i].orig_mag = - sband->channels[i].max_antenna_gain; + sband->channels[i].orig_mag = INT_MAX; sband->channels[i].orig_mpwr = sband->channels[i].max_power; sband->channels[i].band = band; @@ -974,6 +973,11 @@ */ synchronize_rcu(); INIT_LIST_HEAD(&wdev->list); + /* + * Ensure that all events have been processed and + * freed. + */ + cfg80211_process_wdev_events(wdev); break; case NETDEV_PRE_UP: if (!(wdev->wiphy->interface_modes & BIT(wdev->iftype))) --- linux-3.5.0.orig/net/wireless/core.h +++ linux-3.5.0/net/wireless/core.h @@ -426,6 +426,7 @@ struct net_device *dev, enum nl80211_iftype ntype, u32 *flags, struct vif_params *params); void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev); +void cfg80211_process_wdev_events(struct wireless_dev *wdev); int cfg80211_can_change_interface(struct cfg80211_registered_device *rdev, struct wireless_dev *wdev, --- linux-3.5.0.orig/net/wireless/util.c +++ linux-3.5.0/net/wireless/util.c @@ -290,23 +290,21 @@ } EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); -static int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) { int ae = meshhdr->flags & MESH_FLAGS_AE; - /* 7.1.3.5a.2 */ + /* 802.11-2012, 8.2.4.7.3 */ switch (ae) { + default: case 0: return 6; case MESH_FLAGS_AE_A4: return 12; case MESH_FLAGS_AE_A5_A6: return 18; - case (MESH_FLAGS_AE_A4 | MESH_FLAGS_AE_A5_A6): - return 24; - default: - return 6; } } +EXPORT_SYMBOL(ieee80211_get_mesh_hdrlen); int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype) @@ -354,6 +352,8 @@ /* make sure meshdr->flags is on the linear part */ if (!pskb_may_pull(skb, hdrlen + 1)) return -1; + if (meshdr->flags & MESH_FLAGS_AE_A4) + return -1; if (meshdr->flags & MESH_FLAGS_AE_A5_A6) { skb_copy_bits(skb, hdrlen + offsetof(struct ieee80211s_hdr, eaddr1), @@ -378,6 +378,8 @@ /* make sure meshdr->flags is on the linear part */ if (!pskb_may_pull(skb, hdrlen + 1)) return -1; + if (meshdr->flags & MESH_FLAGS_AE_A5_A6) + return -1; if (meshdr->flags & MESH_FLAGS_AE_A4) skb_copy_bits(skb, hdrlen + offsetof(struct ieee80211s_hdr, eaddr1), @@ -716,7 +718,7 @@ wdev->connect_keys = NULL; } -static void cfg80211_process_wdev_events(struct wireless_dev *wdev) +void cfg80211_process_wdev_events(struct wireless_dev *wdev) { struct cfg80211_event *ev; unsigned long flags; --- linux-3.5.0.orig/net/wireless/reg.c +++ linux-3.5.0/net/wireless/reg.c @@ -134,9 +134,8 @@ .reg_rules = { /* IEEE 802.11b/g, channels 1..11 */ REG_RULE(2412-10, 2462+10, 40, 6, 20, 0), - /* IEEE 802.11b/g, channels 12..13. No HT40 - * channel fits here. */ - REG_RULE(2467-10, 2472+10, 20, 6, 20, + /* IEEE 802.11b/g, channels 12..13. */ + REG_RULE(2467-10, 2472+10, 40, 6, 20, NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS), /* IEEE 802.11 channel 14 - Only JP enables @@ -340,6 +339,9 @@ struct reg_regdb_search_request *request; const struct ieee80211_regdomain *curdom, *regdom; int i, r; + bool set_reg = false; + + mutex_lock(&cfg80211_mutex); mutex_lock(®_regdb_search_mutex); while (!list_empty(®_regdb_search_list)) { @@ -355,9 +357,7 @@ r = reg_copy_regd(®dom, curdom); if (r) break; - mutex_lock(&cfg80211_mutex); - set_regdom(regdom); - mutex_unlock(&cfg80211_mutex); + set_reg = true; break; } } @@ -365,6 +365,11 @@ kfree(request); } mutex_unlock(®_regdb_search_mutex); + + if (set_reg) + set_regdom(regdom); + + mutex_unlock(&cfg80211_mutex); } static DECLARE_WORK(reg_regdb_work, reg_regdb_search); @@ -670,6 +675,8 @@ channel_flags |= IEEE80211_CHAN_NO_IBSS; if (rd_flags & NL80211_RRF_DFS) channel_flags |= IEEE80211_CHAN_RADAR; + if (rd_flags & NL80211_RRF_NO_OFDM) + channel_flags |= IEEE80211_CHAN_NO_OFDM; return channel_flags; } @@ -891,7 +898,21 @@ chan->max_antenna_gain = min(chan->orig_mag, (int) MBI_TO_DBI(power_rule->max_antenna_gain)); chan->max_reg_power = (int) MBM_TO_DBM(power_rule->max_eirp); - chan->max_power = min(chan->max_power, chan->max_reg_power); + if (chan->orig_mpwr) { + /* + * Devices that have their own custom regulatory domain + * but also use WIPHY_FLAG_STRICT_REGULATORY will follow the + * passed country IE power settings. + */ + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE && + wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY && + wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY) + chan->max_power = chan->max_reg_power; + else + chan->max_power = min(chan->orig_mpwr, + chan->max_reg_power); + } else + chan->max_power = chan->max_reg_power; } static void handle_band(struct wiphy *wiphy, --- linux-3.5.0.orig/net/wireless/mlme.c +++ linux-3.5.0/net/wireless/mlme.c @@ -441,20 +441,14 @@ .reason_code = reason, .ie = ie, .ie_len = ie_len, + .local_state_change = local_state_change, }; ASSERT_WDEV_LOCK(wdev); - if (local_state_change) { - if (wdev->current_bss && - ether_addr_equal(wdev->current_bss->pub.bssid, bssid)) { - cfg80211_unhold_bss(wdev->current_bss); - cfg80211_put_bss(&wdev->current_bss->pub); - wdev->current_bss = NULL; - } - + if (local_state_change && (!wdev->current_bss || + !ether_addr_equal(wdev->current_bss->pub.bssid, bssid))) return 0; - } return rdev->ops->deauth(&rdev->wiphy, dev, &req); } --- linux-3.5.0.orig/net/l2tp/l2tp_core.c +++ linux-3.5.0/net/l2tp/l2tp_core.c @@ -1346,11 +1346,10 @@ /* Remove from tunnel list */ spin_lock_bh(&pn->l2tp_tunnel_list_lock); list_del_rcu(&tunnel->list); + kfree_rcu(tunnel, rcu); spin_unlock_bh(&pn->l2tp_tunnel_list_lock); - synchronize_rcu(); atomic_dec(&l2tp_tunnel_count); - kfree(tunnel); } /* Create a socket for the tunnel, if one isn't set up by --- linux-3.5.0.orig/net/l2tp/l2tp_ip6.c +++ linux-3.5.0/net/l2tp/l2tp_ip6.c @@ -410,6 +410,7 @@ lsa->l2tp_family = AF_INET6; lsa->l2tp_flowinfo = 0; lsa->l2tp_scope_id = 0; + lsa->l2tp_unused = 0; if (peer) { if (!lsk->peer_conn_id) return -ENOTCONN; --- linux-3.5.0.orig/net/l2tp/l2tp_eth.c +++ linux-3.5.0/net/l2tp/l2tp_eth.c @@ -148,7 +148,7 @@ print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, skb->data, length); } - if (!pskb_may_pull(skb, sizeof(ETH_HLEN))) + if (!pskb_may_pull(skb, ETH_HLEN)) goto error; secpath_reset(skb); @@ -285,6 +285,7 @@ out_del_dev: free_netdev(dev); + spriv->dev = NULL; out_del_session: l2tp_session_delete(session); out: --- linux-3.5.0.orig/net/l2tp/l2tp_core.h +++ linux-3.5.0/net/l2tp/l2tp_core.h @@ -163,6 +163,7 @@ struct l2tp_tunnel { int magic; /* Should be L2TP_TUNNEL_MAGIC */ + struct rcu_head rcu; rwlock_t hlist_lock; /* protect session_hlist */ struct hlist_head session_hlist[L2TP_HASH_SIZE]; /* hashed list of sessions, --- linux-3.5.0.orig/net/sunrpc/xprt.c +++ linux-3.5.0/net/sunrpc/xprt.c @@ -969,11 +969,11 @@ return false; } -static void xprt_alloc_slot(struct rpc_task *task) +void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task) { - struct rpc_xprt *xprt = task->tk_xprt; struct rpc_rqst *req; + spin_lock(&xprt->reserve_lock); if (!list_empty(&xprt->free)) { req = list_entry(xprt->free.next, struct rpc_rqst, rq_list); list_del(&req->rq_list); @@ -994,12 +994,29 @@ default: task->tk_status = -EAGAIN; } + spin_unlock(&xprt->reserve_lock); return; out_init_req: task->tk_status = 0; task->tk_rqstp = req; xprt_request_init(task, xprt); + spin_unlock(&xprt->reserve_lock); +} +EXPORT_SYMBOL_GPL(xprt_alloc_slot); + +void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task) +{ + /* Note: grabbing the xprt_lock_write() ensures that we throttle + * new slot allocation if the transport is congested (i.e. when + * reconnecting a stream transport or when out of socket write + * buffer space). + */ + if (xprt_lock_write(xprt, task)) { + xprt_alloc_slot(xprt, task); + xprt_release_write(xprt, task); + } } +EXPORT_SYMBOL_GPL(xprt_lock_and_alloc_slot); static void xprt_free_slot(struct rpc_xprt *xprt, struct rpc_rqst *req) { @@ -1083,20 +1100,9 @@ if (task->tk_rqstp != NULL) return; - /* Note: grabbing the xprt_lock_write() here is not strictly needed, - * but ensures that we throttle new slot allocation if the transport - * is congested (e.g. if reconnecting or if we're out of socket - * write buffer space). - */ task->tk_timeout = 0; task->tk_status = -EAGAIN; - if (!xprt_lock_write(xprt, task)) - return; - - spin_lock(&xprt->reserve_lock); - xprt_alloc_slot(task); - spin_unlock(&xprt->reserve_lock); - xprt_release_write(xprt, task); + xprt->ops->alloc_slot(xprt, task); } static inline __be32 xprt_alloc_xid(struct rpc_xprt *xprt) @@ -1133,10 +1139,18 @@ void xprt_release(struct rpc_task *task) { struct rpc_xprt *xprt; - struct rpc_rqst *req; + struct rpc_rqst *req = task->tk_rqstp; - if (!(req = task->tk_rqstp)) + if (req == NULL) { + if (task->tk_client) { + rcu_read_lock(); + xprt = rcu_dereference(task->tk_client->cl_xprt); + if (xprt->snd_task == task) + xprt_release_write(xprt, task); + rcu_read_unlock(); + } return; + } xprt = req->rq_xprt; if (task->tk_ops->rpc_count_stats != NULL) --- linux-3.5.0.orig/net/sunrpc/svc_xprt.c +++ linux-3.5.0/net/sunrpc/svc_xprt.c @@ -316,7 +316,6 @@ */ void svc_xprt_enqueue(struct svc_xprt *xprt) { - struct svc_serv *serv = xprt->xpt_server; struct svc_pool *pool; struct svc_rqst *rqstp; int cpu; @@ -362,8 +361,6 @@ rqstp, rqstp->rq_xprt); rqstp->rq_xprt = xprt; svc_xprt_get(xprt); - rqstp->rq_reserved = serv->sv_max_mesg; - atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); pool->sp_stats.threads_woken++; wake_up(&rqstp->rq_wait); } else { @@ -640,8 +637,6 @@ if (xprt) { rqstp->rq_xprt = xprt; svc_xprt_get(xprt); - rqstp->rq_reserved = serv->sv_max_mesg; - atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); /* As there is a shortage of threads and this request * had to be queued, don't allow the thread to wait so @@ -738,6 +733,8 @@ else len = xprt->xpt_ops->xpo_recvfrom(rqstp); dprintk("svc: got len=%d\n", len); + rqstp->rq_reserved = serv->sv_max_mesg; + atomic_add(rqstp->rq_reserved, &xprt->xpt_reserved); } svc_xprt_received(xprt); @@ -794,7 +791,8 @@ /* Grab mutex to serialize outgoing data. */ mutex_lock(&xprt->xpt_mutex); - if (test_bit(XPT_DEAD, &xprt->xpt_flags)) + if (test_bit(XPT_DEAD, &xprt->xpt_flags) + || test_bit(XPT_CLOSE, &xprt->xpt_flags)) len = -ENOTCONN; else len = xprt->xpt_ops->xpo_sendto(rqstp); --- linux-3.5.0.orig/net/sunrpc/cache.c +++ linux-3.5.0/net/sunrpc/cache.c @@ -1406,11 +1406,11 @@ size_t count, loff_t *ppos, struct cache_detail *cd) { - char tbuf[20]; + char tbuf[22]; unsigned long p = *ppos; size_t len; - sprintf(tbuf, "%lu\n", convert_to_wallclock(cd->flush_time)); + snprintf(tbuf, sizeof(tbuf), "%lu\n", convert_to_wallclock(cd->flush_time)); len = strlen(tbuf); if (p >= len) return 0; --- linux-3.5.0.orig/net/sunrpc/rpc_pipe.c +++ linux-3.5.0/net/sunrpc/rpc_pipe.c @@ -1152,14 +1152,19 @@ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id); mutex_lock(&sn->pipefs_sb_lock); + if (sn->pipefs_sb != sb) { + mutex_unlock(&sn->pipefs_sb_lock); + goto out; + } sn->pipefs_sb = NULL; mutex_unlock(&sn->pipefs_sb_lock); - put_net(net); dprintk("RPC: sending pipefs UMOUNT notification for net %p%s\n", net, NET_NAME(net)); blocking_notifier_call_chain(&rpc_pipefs_notifier_list, RPC_PIPEFS_UMOUNT, sb); + put_net(net); +out: kill_litter_super(sb); } --- linux-3.5.0.orig/net/sunrpc/rpcb_clnt.c +++ linux-3.5.0/net/sunrpc/rpcb_clnt.c @@ -251,7 +251,7 @@ if (IS_ERR(clnt)) { dprintk("RPC: failed to create AF_LOCAL rpcbind " "client (errno %ld).\n", PTR_ERR(clnt)); - result = -PTR_ERR(clnt); + result = PTR_ERR(clnt); goto out; } @@ -298,7 +298,7 @@ if (IS_ERR(clnt)) { dprintk("RPC: failed to create local rpcbind " "client (errno %ld).\n", PTR_ERR(clnt)); - result = -PTR_ERR(clnt); + result = PTR_ERR(clnt); goto out; } --- linux-3.5.0.orig/net/sunrpc/xprtsock.c +++ linux-3.5.0/net/sunrpc/xprtsock.c @@ -254,7 +254,6 @@ void (*old_data_ready)(struct sock *, int); void (*old_state_change)(struct sock *); void (*old_write_space)(struct sock *); - void (*old_error_report)(struct sock *); }; /* @@ -737,10 +736,10 @@ dprintk("RPC: sendmsg returned unrecognized error %d\n", -status); case -ECONNRESET: - case -EPIPE: xs_tcp_shutdown(xprt); case -ECONNREFUSED: case -ENOTCONN: + case -EPIPE: clear_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags); } @@ -781,7 +780,6 @@ transport->old_data_ready = sk->sk_data_ready; transport->old_state_change = sk->sk_state_change; transport->old_write_space = sk->sk_write_space; - transport->old_error_report = sk->sk_error_report; } static void xs_restore_old_callbacks(struct sock_xprt *transport, struct sock *sk) @@ -789,7 +787,6 @@ sk->sk_data_ready = transport->old_data_ready; sk->sk_state_change = transport->old_state_change; sk->sk_write_space = transport->old_write_space; - sk->sk_error_report = transport->old_error_report; } static void xs_reset_transport(struct sock_xprt *transport) @@ -1028,6 +1025,16 @@ read_unlock_bh(&sk->sk_callback_lock); } +/* + * Helper function to force a TCP close if the server is sending + * junk and/or it has put us in CLOSE_WAIT + */ +static void xs_tcp_force_close(struct rpc_xprt *xprt) +{ + set_bit(XPRT_CONNECTION_CLOSE, &xprt->state); + xprt_force_disconnect(xprt); +} + static inline void xs_tcp_read_fraghdr(struct rpc_xprt *xprt, struct xdr_skb_reader *desc) { struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); @@ -1054,7 +1061,7 @@ /* Sanity check of the record length */ if (unlikely(transport->tcp_reclen < 8)) { dprintk("RPC: invalid TCP record fragment length\n"); - xprt_force_disconnect(xprt); + xs_tcp_force_close(xprt); return; } dprintk("RPC: reading TCP record fragment of length %d\n", @@ -1135,7 +1142,7 @@ break; default: dprintk("RPC: invalid request message type\n"); - xprt_force_disconnect(&transport->xprt); + xs_tcp_force_close(&transport->xprt); } xs_tcp_check_fraghdr(transport); } @@ -1455,12 +1462,19 @@ xprt_clear_connecting(xprt); } -static void xs_sock_mark_closed(struct rpc_xprt *xprt) +static void xs_sock_reset_connection_flags(struct rpc_xprt *xprt) { smp_mb__before_clear_bit(); + clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); + clear_bit(XPRT_CONNECTION_CLOSE, &xprt->state); clear_bit(XPRT_CLOSE_WAIT, &xprt->state); clear_bit(XPRT_CLOSING, &xprt->state); smp_mb__after_clear_bit(); +} + +static void xs_sock_mark_closed(struct rpc_xprt *xprt) +{ + xs_sock_reset_connection_flags(xprt); /* Mark transport as closed and wake up all pending tasks */ xprt_disconnect_done(xprt); } @@ -1515,8 +1529,9 @@ break; case TCP_CLOSE_WAIT: /* The server initiated a shutdown of the socket */ - xprt_force_disconnect(xprt); xprt->connect_cookie++; + clear_bit(XPRT_CONNECTED, &xprt->state); + xs_tcp_force_close(xprt); case TCP_CLOSING: /* * If the server closed down the connection, make sure that @@ -1540,25 +1555,6 @@ read_unlock_bh(&sk->sk_callback_lock); } -/** - * xs_error_report - callback mainly for catching socket errors - * @sk: socket - */ -static void xs_error_report(struct sock *sk) -{ - struct rpc_xprt *xprt; - - read_lock_bh(&sk->sk_callback_lock); - if (!(xprt = xprt_from_sock(sk))) - goto out; - dprintk("RPC: %s client %p...\n" - "RPC: error %d\n", - __func__, xprt, sk->sk_err); - xprt_wake_pending_tasks(xprt, -EAGAIN); -out: - read_unlock_bh(&sk->sk_callback_lock); -} - static void xs_write_space(struct sock *sk) { struct socket *sock; @@ -1858,7 +1854,6 @@ sk->sk_user_data = xprt; sk->sk_data_ready = xs_local_data_ready; sk->sk_write_space = xs_udp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_allocation = GFP_ATOMIC; xprt_clear_connected(xprt); @@ -1895,6 +1890,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); status = __sock_create(xprt->xprt_net, AF_LOCAL, SOCK_STREAM, 0, &sock, 1); @@ -1928,6 +1925,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } static void xs_udp_finish_connecting(struct rpc_xprt *xprt, struct socket *sock) @@ -1944,7 +1942,6 @@ sk->sk_user_data = xprt; sk->sk_data_ready = xs_udp_data_ready; sk->sk_write_space = xs_udp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_no_check = UDP_CSUM_NORCV; sk->sk_allocation = GFP_ATOMIC; @@ -1970,6 +1967,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + /* Start by resetting any existing state */ xs_reset_transport(transport); sock = xs_create_sock(xprt, transport, @@ -1988,6 +1987,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } /* @@ -2009,10 +2009,8 @@ any.sa_family = AF_UNSPEC; result = kernel_connect(transport->sock, &any, sizeof(any), 0); if (!result) - xs_sock_mark_closed(&transport->xprt); - else - dprintk("RPC: AF_UNSPEC connect return code %d\n", - result); + xs_sock_reset_connection_flags(&transport->xprt); + dprintk("RPC: AF_UNSPEC connect return code %d\n", result); } static void xs_tcp_reuse_connection(struct sock_xprt *transport) @@ -2057,7 +2055,6 @@ sk->sk_data_ready = xs_tcp_data_ready; sk->sk_state_change = xs_tcp_state_change; sk->sk_write_space = xs_tcp_write_space; - sk->sk_error_report = xs_error_report; sk->sk_allocation = GFP_ATOMIC; /* socket options */ @@ -2113,6 +2110,8 @@ if (xprt->shutdown) goto out; + current->flags |= PF_FSTRANS; + if (!sock) { clear_bit(XPRT_CONNECTION_ABORT, &xprt->state); sock = xs_create_sock(xprt, transport, @@ -2151,8 +2150,7 @@ /* We're probably in TIME_WAIT. Get rid of existing socket, * and retry */ - set_bit(XPRT_CONNECTION_CLOSE, &xprt->state); - xprt_force_disconnect(xprt); + xs_tcp_force_close(xprt); break; case -ECONNREFUSED: case -ECONNRESET: @@ -2162,6 +2160,7 @@ case -EINPROGRESS: case -EALREADY: xprt_clear_connecting(xprt); + current->flags &= ~PF_FSTRANS; return; case -EINVAL: /* Happens, for instance, if the user specified a link @@ -2174,6 +2173,7 @@ out: xprt_clear_connecting(xprt); xprt_wake_pending_tasks(xprt, status); + current->flags &= ~PF_FSTRANS; } /** @@ -2423,6 +2423,7 @@ static struct rpc_xprt_ops xs_local_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xs_tcp_release_xprt, + .alloc_slot = xprt_alloc_slot, .rpcbind = xs_local_rpcbind, .set_port = xs_local_set_port, .connect = xs_connect, @@ -2439,6 +2440,7 @@ .set_buffer_size = xs_udp_set_buffer_size, .reserve_xprt = xprt_reserve_xprt_cong, .release_xprt = xprt_release_xprt_cong, + .alloc_slot = xprt_alloc_slot, .rpcbind = rpcb_getport_async, .set_port = xs_set_port, .connect = xs_connect, @@ -2456,6 +2458,7 @@ static struct rpc_xprt_ops xs_tcp_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xs_tcp_release_xprt, + .alloc_slot = xprt_lock_and_alloc_slot, .rpcbind = rpcb_getport_async, .set_port = xs_set_port, .connect = xs_connect, @@ -2475,6 +2478,7 @@ static struct rpc_xprt_ops bc_tcp_ops = { .reserve_xprt = xprt_reserve_xprt, .release_xprt = xprt_release_xprt, + .alloc_slot = xprt_alloc_slot, .rpcbind = xs_local_rpcbind, .buf_alloc = bc_malloc, .buf_free = bc_free, --- linux-3.5.0.orig/net/sunrpc/sched.c +++ linux-3.5.0/net/sunrpc/sched.c @@ -790,7 +790,9 @@ static void rpc_async_schedule(struct work_struct *work) { + current->flags |= PF_FSTRANS; __rpc_execute(container_of(work, struct rpc_task, u.tk_work)); + current->flags &= ~PF_FSTRANS; } /** @@ -913,16 +915,35 @@ return task; } +/* + * rpc_free_task - release rpc task and perform cleanups + * + * Note that we free up the rpc_task _after_ rpc_release_calldata() + * in order to work around a workqueue dependency issue. + * + * Tejun Heo states: + * "Workqueue currently considers two work items to be the same if they're + * on the same address and won't execute them concurrently - ie. it + * makes a work item which is queued again while being executed wait + * for the previous execution to complete. + * + * If a work function frees the work item, and then waits for an event + * which should be performed by another work item and *that* work item + * recycles the freed work item, it can create a false dependency loop. + * There really is no reliable way to detect this short of verifying + * every memory free." + * + */ static void rpc_free_task(struct rpc_task *task) { - const struct rpc_call_ops *tk_ops = task->tk_ops; - void *calldata = task->tk_calldata; + unsigned short tk_flags = task->tk_flags; + + rpc_release_calldata(task->tk_ops, task->tk_calldata); - if (task->tk_flags & RPC_TASK_DYNAMIC) { + if (tk_flags & RPC_TASK_DYNAMIC) { dprintk("RPC: %5u freeing task\n", task->tk_pid); mempool_free(task, rpc_task_mempool); } - rpc_release_calldata(tk_ops, calldata); } static void rpc_async_release(struct work_struct *work) @@ -932,8 +953,7 @@ static void rpc_release_resources_task(struct rpc_task *task) { - if (task->tk_rqstp) - xprt_release(task); + xprt_release(task); if (task->tk_msg.rpc_cred) { put_rpccred(task->tk_msg.rpc_cred); task->tk_msg.rpc_cred = NULL; --- linux-3.5.0.orig/net/sunrpc/svcsock.c +++ linux-3.5.0/net/sunrpc/svcsock.c @@ -1129,9 +1129,9 @@ if (len >= 0) svsk->sk_tcplen += len; if (len != want) { + svc_tcp_save_pages(svsk, rqstp); if (len < 0 && len != -EAGAIN) goto err_other; - svc_tcp_save_pages(svsk, rqstp); dprintk("svc: incomplete TCP record (%d of %d)\n", svsk->sk_tcplen, svsk->sk_reclen); goto err_noclose; --- linux-3.5.0.orig/net/sunrpc/clnt.c +++ linux-3.5.0/net/sunrpc/clnt.c @@ -234,7 +234,7 @@ spin_lock(&sn->rpc_client_lock); list_for_each_entry(clnt, &sn->all_clients, cl_clients) { if (clnt->cl_program->pipe_dir_name == NULL) - break; + continue; if (rpc_clnt_skip_event(clnt, event)) continue; if (atomic_inc_not_zero(&clnt->cl_count) == 0) @@ -1844,12 +1844,13 @@ return; } if (RPC_IS_SOFT(task)) { - if (clnt->cl_chatty) + if (clnt->cl_chatty) { rcu_read_lock(); printk(KERN_NOTICE "%s: server %s not responding, timed out\n", clnt->cl_protname, rcu_dereference(clnt->cl_xprt)->servername); rcu_read_unlock(); + } if (task->tk_flags & RPC_TASK_TIMEOUT) rpc_exit(task, -ETIMEDOUT); else --- linux-3.5.0.orig/net/sunrpc/xprtrdma/transport.c +++ linux-3.5.0/net/sunrpc/xprtrdma/transport.c @@ -200,6 +200,7 @@ int rc = 0; if (!xprt->shutdown) { + current->flags |= PF_FSTRANS; xprt_clear_connected(xprt); dprintk("RPC: %s: %sconnect\n", __func__, @@ -212,10 +213,10 @@ out: xprt_wake_pending_tasks(xprt, rc); - out_clear: dprintk("RPC: %s: exit\n", __func__); xprt_clear_connecting(xprt); + current->flags &= ~PF_FSTRANS; } /* @@ -712,6 +713,7 @@ static struct rpc_xprt_ops xprt_rdma_procs = { .reserve_xprt = xprt_rdma_reserve_xprt, .release_xprt = xprt_release_xprt_cong, /* sunrpc/xprt.c */ + .alloc_slot = xprt_alloc_slot, .release_request = xprt_release_rqst_cong, /* ditto */ .set_retrans_timeout = xprt_set_retrans_timeout_def, /* ditto */ .rpcbind = rpcb_getport_async, /* sunrpc/rpcb_clnt.c */ --- linux-3.5.0.orig/net/netlink/af_netlink.c +++ linux-3.5.0/net/netlink/af_netlink.c @@ -136,6 +136,8 @@ static DEFINE_RWLOCK(nl_table_lock); static atomic_t nl_table_users = ATOMIC_INIT(0); +#define nl_deref_protected(X) rcu_dereference_protected(X, lockdep_is_held(&nl_table_lock)); + static ATOMIC_NOTIFIER_HEAD(netlink_chain); static inline u32 netlink_group_mask(u32 group) @@ -167,6 +169,8 @@ if (nlk->cb) { if (nlk->cb->done) nlk->cb->done(nlk->cb); + + module_put(nlk->cb->module); netlink_destroy_callback(nlk->cb); } @@ -341,6 +345,11 @@ struct hlist_node *node; unsigned long mask; unsigned int i; + struct listeners *listeners; + + listeners = nl_deref_protected(tbl->listeners); + if (!listeners) + return; for (i = 0; i < NLGRPLONGS(tbl->groups); i++) { mask = 0; @@ -348,7 +357,7 @@ if (i < NLGRPLONGS(nlk_sk(sk)->ngroups)) mask |= nlk_sk(sk)->groups[i]; } - tbl->listeners->masks[i] = mask; + listeners->masks[i] = mask; } /* this function is only called with the netlink table "grabbed", which * makes sure updates are visible before bind or setsockopt return. */ @@ -529,7 +538,11 @@ if (netlink_is_kernel(sk)) { BUG_ON(nl_table[sk->sk_protocol].registered == 0); if (--nl_table[sk->sk_protocol].registered == 0) { - kfree(nl_table[sk->sk_protocol].listeners); + struct listeners *old; + + old = nl_deref_protected(nl_table[sk->sk_protocol].listeners); + RCU_INIT_POINTER(nl_table[sk->sk_protocol].listeners, NULL); + kfree_rcu(old, rcu); nl_table[sk->sk_protocol].module = NULL; nl_table[sk->sk_protocol].registered = 0; } @@ -962,7 +975,7 @@ rcu_read_lock(); listeners = rcu_dereference(nl_table[sk->sk_protocol].listeners); - if (group - 1 < nl_table[sk->sk_protocol].groups) + if (listeners && group - 1 < nl_table[sk->sk_protocol].groups) res = test_bit(group - 1, listeners->masks); rcu_read_unlock(); @@ -1344,7 +1357,7 @@ if (NULL == siocb->scm) siocb->scm = &scm; - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, true); if (err < 0) return err; @@ -1355,7 +1368,8 @@ dst_pid = addr->nl_pid; dst_group = ffs(addr->nl_groups); err = -EPERM; - if (dst_group && !netlink_capable(sock, NL_NONROOT_SEND)) + if ((dst_group || dst_pid) && + !netlink_capable(sock, NL_NONROOT_SEND)) goto out; } else { dst_pid = nlk->dst_pid; @@ -1594,7 +1608,7 @@ new = kzalloc(sizeof(*new) + NLGRPSZ(groups), GFP_ATOMIC); if (!new) return -ENOMEM; - old = rcu_dereference_protected(tbl->listeners, 1); + old = nl_deref_protected(tbl->listeners); memcpy(new->masks, old->masks, NLGRPSZ(tbl->groups)); rcu_assign_pointer(tbl->listeners, new); @@ -1736,6 +1750,7 @@ nlk->cb = NULL; mutex_unlock(nlk->cb_mutex); + module_put(cb->module); netlink_consume_callback(cb); return 0; @@ -1745,9 +1760,9 @@ return err; } -int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, - const struct nlmsghdr *nlh, - struct netlink_dump_control *control) +int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control) { struct netlink_callback *cb; struct sock *sk; @@ -1762,6 +1777,7 @@ cb->done = control->done; cb->nlh = nlh; cb->data = control->data; + cb->module = control->module; cb->min_dump_alloc = control->min_dump_alloc; atomic_inc(&skb->users); cb->skb = skb; @@ -1772,19 +1788,28 @@ return -ECONNREFUSED; } nlk = nlk_sk(sk); - /* A dump is in progress... */ + mutex_lock(nlk->cb_mutex); + /* A dump is in progress... */ if (nlk->cb) { mutex_unlock(nlk->cb_mutex); netlink_destroy_callback(cb); - sock_put(sk); - return -EBUSY; + ret = -EBUSY; + goto out; } + /* add reference of module which cb->dump belongs to */ + if (!try_module_get(cb->module)) { + mutex_unlock(nlk->cb_mutex); + netlink_destroy_callback(cb); + ret = -EPROTONOSUPPORT; + goto out; + } + nlk->cb = cb; mutex_unlock(nlk->cb_mutex); ret = netlink_dump(sk); - +out: sock_put(sk); if (ret) @@ -1795,7 +1820,7 @@ */ return -EINTR; } -EXPORT_SYMBOL(netlink_dump_start); +EXPORT_SYMBOL(__netlink_dump_start); void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err) { @@ -2124,6 +2149,7 @@ rcu_assign_pointer(nl_table[NETLINK_USERSOCK].listeners, listeners); nl_table[NETLINK_USERSOCK].module = THIS_MODULE; nl_table[NETLINK_USERSOCK].registered = 1; + nl_table[NETLINK_USERSOCK].nl_nonroot = NL_NONROOT_SEND; netlink_table_ungrab(); } --- linux-3.5.0.orig/net/nfc/llcp/llcp.c +++ linux-3.5.0/net/nfc/llcp/llcp.c @@ -990,7 +990,7 @@ local->remote_lto = LLCP_DEFAULT_LTO; local->remote_rw = LLCP_DEFAULT_RW; - list_add(&llcp_devices, &local->list); + list_add(&local->list, &llcp_devices); return 0; --- linux-3.5.0.orig/net/can/bcm.c +++ linux-3.5.0/net/can/bcm.c @@ -1084,6 +1084,9 @@ op->sk = sk; op->ifindex = ifindex; + /* ifindex for timeout events w/o previous frame reception */ + op->rx_ifindex = ifindex; + /* initialize uninitialized (kzalloc) structure */ hrtimer_init(&op->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); op->timer.function = bcm_rx_timeout_handler; --- linux-3.5.0.orig/net/core/rtnetlink.c +++ linux-3.5.0/net/core/rtnetlink.c @@ -674,6 +674,12 @@ } } +static unsigned int rtnl_dev_get_flags(const struct net_device *dev) +{ + return (dev->flags & ~(IFF_PROMISC | IFF_ALLMULTI)) | + (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI)); +} + static unsigned int rtnl_dev_combine_flags(const struct net_device *dev, const struct ifinfomsg *ifm) { @@ -682,7 +688,7 @@ /* bugwards compatibility: ifi_change == 0 is treated as ~0 */ if (ifm->ifi_change) flags = (flags & ifm->ifi_change) | - (dev->flags & ~ifm->ifi_change); + (rtnl_dev_get_flags(dev) & ~ifm->ifi_change); return flags; } @@ -1378,6 +1384,7 @@ goto errout; send_addr_notify = 1; modified = 1; + add_device_randomness(dev->dev_addr, dev->addr_len); } if (tb[IFLA_MTU]) { --- linux-3.5.0.orig/net/core/sock_diag.c +++ linux-3.5.0/net/core/sock_diag.c @@ -126,6 +126,9 @@ if (nlmsg_len(nlh) < sizeof(*req)) return -EINVAL; + if (req->sdiag_family >= AF_MAX) + return -EINVAL; + hndl = sock_diag_lock_handler(req->sdiag_family); if (hndl == NULL) err = -ENOENT; --- linux-3.5.0.orig/net/core/dev.c +++ linux-3.5.0/net/core/dev.c @@ -1055,6 +1055,8 @@ */ int dev_set_alias(struct net_device *dev, const char *alias, size_t len) { + char *new_ifalias; + ASSERT_RTNL(); if (len >= IFALIASZ) @@ -1068,9 +1070,10 @@ return 0; } - dev->ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); - if (!dev->ifalias) + new_ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); + if (!new_ifalias) return -ENOMEM; + dev->ifalias = new_ifalias; strlcpy(dev->ifalias, alias, len+1); return len; @@ -1172,6 +1175,7 @@ net_dmaengine_get(); dev_set_rx_mode(dev); dev_activate(dev); + add_device_randomness(dev->dev_addr, dev->addr_len); } return ret; @@ -1636,6 +1640,19 @@ return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); } +static inline bool skb_loop_sk(struct packet_type *ptype, struct sk_buff *skb) +{ + if (!ptype->af_packet_priv || !skb->sk) + return false; + + if (ptype->id_match) + return ptype->id_match(ptype, skb->sk); + else if ((struct sock *)ptype->af_packet_priv == skb->sk) + return true; + + return false; +} + /* * Support routine. Sends outgoing frames to any network * taps currently in use. @@ -1653,8 +1670,7 @@ * they originated from - MvS (miquels@drinkel.ow.org) */ if ((ptype->dev == dev || !ptype->dev) && - (ptype->af_packet_priv == NULL || - (struct sock *)ptype->af_packet_priv != skb->sk)) { + (!skb_loop_sk(ptype, skb))) { if (pt_prev) { deliver_skb(skb2, pt_prev, skb->dev); pt_prev = ptype; @@ -2103,7 +2119,8 @@ static netdev_features_t harmonize_features(struct sk_buff *skb, __be16 protocol, netdev_features_t features) { - if (!can_checksum_protocol(features, protocol)) { + if (skb->ip_summed != CHECKSUM_NONE && + !can_checksum_protocol(features, protocol)) { features &= ~NETIF_F_ALL_CSUM; features &= ~NETIF_F_SG; } else if (illegal_highdma(skb->dev, skb)) { @@ -2118,6 +2135,9 @@ __be16 protocol = skb->protocol; netdev_features_t features = skb->dev->features; + if (skb_shinfo(skb)->gso_segs > skb->dev->gso_max_segs) + features &= ~NETIF_F_GSO_MASK; + if (protocol == htons(ETH_P_8021Q)) { struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data; protocol = veh->h_vlan_encapsulated_proto; @@ -2596,15 +2616,16 @@ if (!skb_flow_dissect(skb, &keys)) return; - if (keys.ports) { - if ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]) - swap(keys.port16[0], keys.port16[1]); + if (keys.ports) skb->l4_rxhash = 1; - } /* get a consistent hash (same value on both flow directions) */ - if ((__force u32)keys.dst < (__force u32)keys.src) + if (((__force u32)keys.dst < (__force u32)keys.src) || + (((__force u32)keys.dst == (__force u32)keys.src) && + ((__force u16)keys.port16[1] < (__force u16)keys.port16[0]))) { swap(keys.dst, keys.src); + swap(keys.port16[0], keys.port16[1]); + } hash = jhash_3words((__force u32)keys.dst, (__force u32)keys.src, @@ -2740,8 +2761,10 @@ if (unlikely(tcpu != next_cpu) && (tcpu == RPS_NO_CPU || !cpu_online(tcpu) || ((int)(per_cpu(softnet_data, tcpu).input_queue_head - - rflow->last_qtail)) >= 0)) + rflow->last_qtail)) >= 0)) { + tcpu = next_cpu; rflow = set_rps_cpu(dev, skb, rflow, next_cpu); + } if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) { *rflowp = rflow; @@ -3185,18 +3208,18 @@ ncls: #endif - rx_handler = rcu_dereference(skb->dev->rx_handler); if (vlan_tx_tag_present(skb)) { if (pt_prev) { ret = deliver_skb(skb, pt_prev, orig_dev); pt_prev = NULL; } - if (vlan_do_receive(&skb, !rx_handler)) + if (vlan_do_receive(&skb)) goto another_round; else if (unlikely(!skb)) goto out; } + rx_handler = rcu_dereference(skb->dev->rx_handler); if (rx_handler) { if (pt_prev) { ret = deliver_skb(skb, pt_prev, orig_dev); @@ -3216,6 +3239,9 @@ } } + if (vlan_tx_nonzero_tag_present(skb)) + skb->pkt_type = PACKET_OTHERHOST; + /* deliver only exact match when indicated */ null_or_dev = deliver_exact ? skb->dev : NULL; @@ -4767,6 +4793,7 @@ err = ops->ndo_set_mac_address(dev, sa); if (!err) call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); + add_device_randomness(dev->dev_addr, dev->addr_len); return err; } EXPORT_SYMBOL(dev_set_mac_address); @@ -5545,6 +5572,7 @@ dev_init_scheduler(dev); dev_hold(dev); list_netdevice(dev); + add_device_randomness(dev->dev_addr, dev->addr_len); /* Notify protocols, that a new device appeared. */ ret = call_netdevice_notifiers(NETDEV_REGISTER, dev); @@ -5908,6 +5936,7 @@ dev_net_set(dev, &init_net); dev->gso_max_size = GSO_MAX_SIZE; + dev->gso_max_segs = GSO_MAX_SEGS; INIT_LIST_HEAD(&dev->napi_list); INIT_LIST_HEAD(&dev->unreg_list); --- linux-3.5.0.orig/net/core/sock.c +++ linux-3.5.0/net/core/sock.c @@ -636,7 +636,8 @@ case SO_KEEPALIVE: #ifdef CONFIG_INET - if (sk->sk_protocol == IPPROTO_TCP) + if (sk->sk_protocol == IPPROTO_TCP && + sk->sk_type == SOCK_STREAM) tcp_set_keepalive(sk, valbool); #endif sock_valbool_flag(sk, SOCK_KEEPOPEN, valbool); @@ -1403,6 +1404,7 @@ } else { sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM; sk->sk_gso_max_size = dst->dev->gso_max_size; + sk->sk_gso_max_segs = dst->dev->gso_max_segs; } } } --- linux-3.5.0.orig/net/core/dev_addr_lists.c +++ linux-3.5.0/net/core/dev_addr_lists.c @@ -317,7 +317,8 @@ */ ha = list_first_entry(&dev->dev_addrs.list, struct netdev_hw_addr, list); - if (ha->addr == dev->dev_addr && ha->refcount == 1) + if (!memcmp(ha->addr, addr, dev->addr_len) && + ha->type == addr_type && ha->refcount == 1) return -ENOENT; err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len, --- linux-3.5.0.orig/net/core/neighbour.c +++ linux-3.5.0/net/core/neighbour.c @@ -1286,8 +1286,6 @@ if (!dst) goto discard; - __skb_pull(skb, skb_network_offset(skb)); - if (!neigh_event_send(neigh, skb)) { int err; struct net_device *dev = neigh->dev; @@ -1297,6 +1295,7 @@ neigh_hh_init(neigh, dst); do { + __skb_pull(skb, skb_network_offset(skb)); seq = read_seqbegin(&neigh->ha_lock); err = dev_hard_header(skb, dev, ntohs(skb->protocol), neigh->ha, NULL, skb->len); @@ -1327,9 +1326,8 @@ unsigned int seq; int err; - __skb_pull(skb, skb_network_offset(skb)); - do { + __skb_pull(skb, skb_network_offset(skb)); seq = read_seqbegin(&neigh->ha_lock); err = dev_hard_header(skb, dev, ntohs(skb->protocol), neigh->ha, NULL, skb->len); --- linux-3.5.0.orig/net/core/datagram.c +++ linux-3.5.0/net/core/datagram.c @@ -187,7 +187,7 @@ skb_queue_walk(queue, skb) { *peeked = skb->peeked; if (flags & MSG_PEEK) { - if (*off >= skb->len) { + if (*off >= skb->len && skb->len) { *off -= skb->len; continue; } --- linux-3.5.0.orig/net/core/pktgen.c +++ linux-3.5.0/net/core/pktgen.c @@ -1797,10 +1797,13 @@ return -EFAULT; i += len; mutex_lock(&pktgen_thread_lock); - pktgen_add_device(t, f); + ret = pktgen_add_device(t, f); mutex_unlock(&pktgen_thread_lock); - ret = count; - sprintf(pg_result, "OK: add_device=%s", f); + if (!ret) { + ret = count; + sprintf(pg_result, "OK: add_device=%s", f); + } else + sprintf(pg_result, "ERROR: can not add device %s", f); goto out; } @@ -2927,7 +2930,7 @@ sizeof(struct ipv6hdr) - sizeof(struct udphdr) - pkt_dev->pkt_overhead; - if (datalen < sizeof(struct pktgen_hdr)) { + if (datalen < 0 || datalen < sizeof(struct pktgen_hdr)) { datalen = sizeof(struct pktgen_hdr); net_info_ratelimited("increased datalen to %d\n", datalen); } --- linux-3.5.0.orig/net/core/skbuff.c +++ linux-3.5.0/net/core/skbuff.c @@ -572,53 +572,6 @@ } EXPORT_SYMBOL(consume_skb); -/** - * skb_recycle - clean up an skb for reuse - * @skb: buffer - * - * Recycles the skb to be reused as a receive buffer. This - * function does any necessary reference count dropping, and - * cleans up the skbuff as if it just came from __alloc_skb(). - */ -void skb_recycle(struct sk_buff *skb) -{ - struct skb_shared_info *shinfo; - - skb_release_head_state(skb); - - shinfo = skb_shinfo(skb); - memset(shinfo, 0, offsetof(struct skb_shared_info, dataref)); - atomic_set(&shinfo->dataref, 1); - - memset(skb, 0, offsetof(struct sk_buff, tail)); - skb->data = skb->head + NET_SKB_PAD; - skb_reset_tail_pointer(skb); -} -EXPORT_SYMBOL(skb_recycle); - -/** - * skb_recycle_check - check if skb can be reused for receive - * @skb: buffer - * @skb_size: minimum receive buffer size - * - * Checks that the skb passed in is not shared or cloned, and - * that it is linear and its head portion at least as large as - * skb_size so that it can be recycled as a receive buffer. - * If these conditions are met, this function does any necessary - * reference count dropping and cleans up the skbuff as if it - * just came from __alloc_skb(). - */ -bool skb_recycle_check(struct sk_buff *skb, int skb_size) -{ - if (!skb_is_recycleable(skb, skb_size)) - return false; - - skb_recycle(skb); - - return true; -} -EXPORT_SYMBOL(skb_recycle_check); - static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) { new->tstamp = old->tstamp; @@ -3350,10 +3303,12 @@ void kfree_skb_partial(struct sk_buff *skb, bool head_stolen) { - if (head_stolen) + if (head_stolen) { + skb_release_head_state(skb); kmem_cache_free(skbuff_head_cache, skb); - else + } else { __kfree_skb(skb); + } } EXPORT_SYMBOL(kfree_skb_partial); --- linux-3.5.0.orig/net/atm/common.c +++ linux-3.5.0/net/atm/common.c @@ -812,6 +812,7 @@ if (!vcc->dev || !test_bit(ATM_VF_ADDR, &vcc->flags)) return -ENOTCONN; + memset(&pvc, 0, sizeof(pvc)); pvc.sap_family = AF_ATMPVC; pvc.sap_addr.itf = vcc->dev->number; pvc.sap_addr.vpi = vcc->vpi; --- linux-3.5.0.orig/net/atm/pvc.c +++ linux-3.5.0/net/atm/pvc.c @@ -95,6 +95,7 @@ return -ENOTCONN; *sockaddr_len = sizeof(struct sockaddr_atmpvc); addr = (struct sockaddr_atmpvc *)sockaddr; + memset(addr, 0, sizeof(*addr)); addr->sap_family = AF_ATMPVC; addr->sap_addr.itf = vcc->dev->number; addr->sap_addr.vpi = vcc->vpi; --- linux-3.5.0.orig/net/netrom/af_netrom.c +++ linux-3.5.0/net/netrom/af_netrom.c @@ -1169,7 +1169,12 @@ msg->msg_flags |= MSG_TRUNC; } - skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); + er = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); + if (er < 0) { + skb_free_datagram(sk, skb); + release_sock(sk); + return er; + } if (sax != NULL) { sax->sax25_family = AF_NETROM; --- linux-3.5.0.orig/net/unix/af_unix.c +++ linux-3.5.0/net/unix/af_unix.c @@ -1448,7 +1448,7 @@ if (NULL == siocb->scm) siocb->scm = &tmp_scm; wait_for_unix_gc(); - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, false); if (err < 0) return err; @@ -1617,7 +1617,7 @@ if (NULL == siocb->scm) siocb->scm = &tmp_scm; wait_for_unix_gc(); - err = scm_send(sock, msg, siocb->scm); + err = scm_send(sock, msg, siocb->scm, false); if (err < 0) return err; --- linux-3.5.0.orig/net/dccp/ipv6.c +++ linux-3.5.0/net/dccp/ipv6.c @@ -612,7 +612,8 @@ newinet->inet_rcv_saddr = LOOPBACK4_IPV6; if (__inet_inherit_port(sk, newsk) < 0) { - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + dccp_done(newsk); goto out; } __inet6_hash(newsk, NULL); --- linux-3.5.0.orig/net/dccp/ipv4.c +++ linux-3.5.0/net/dccp/ipv4.c @@ -435,8 +435,8 @@ NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_LISTENDROPS); return NULL; put_and_exit: - bh_unlock_sock(newsk); - sock_put(newsk); + inet_csk_prepare_forced_close(newsk); + dccp_done(newsk); goto exit; } --- linux-3.5.0.orig/net/dccp/ccid.h +++ linux-3.5.0/net/dccp/ccid.h @@ -246,7 +246,7 @@ u32 __user *optval, int __user *optlen) { int rc = -ENOPROTOOPT; - if (ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL) + if (ccid != NULL && ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL) rc = ccid->ccid_ops->ccid_hc_rx_getsockopt(sk, optname, len, optval, optlen); return rc; @@ -257,7 +257,7 @@ u32 __user *optval, int __user *optlen) { int rc = -ENOPROTOOPT; - if (ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL) + if (ccid != NULL && ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL) rc = ccid->ccid_ops->ccid_hc_tx_getsockopt(sk, optname, len, optval, optlen); return rc; --- linux-3.5.0.orig/net/dccp/ccids/ccid3.c +++ linux-3.5.0/net/dccp/ccids/ccid3.c @@ -531,6 +531,7 @@ case DCCP_SOCKOPT_CCID_TX_INFO: if (len < sizeof(tfrc)) return -EINVAL; + memset(&tfrc, 0, sizeof(tfrc)); tfrc.tfrctx_x = hc->tx_x; tfrc.tfrctx_x_recv = hc->tx_x_recv; tfrc.tfrctx_x_calc = hc->tx_x_calc; --- linux-3.5.0.orig/net/xfrm/xfrm_policy.c +++ linux-3.5.0/net/xfrm/xfrm_policy.c @@ -1763,7 +1763,7 @@ if (!afinfo) { dst_release(dst_orig); - ret = ERR_PTR(-EINVAL); + return ERR_PTR(-EINVAL); } else { ret = afinfo->blackhole_route(net, dst_orig); } --- linux-3.5.0.orig/net/xfrm/xfrm_user.c +++ linux-3.5.0/net/xfrm/xfrm_user.c @@ -123,9 +123,21 @@ struct nlattr **attrs) { struct nlattr *rt = attrs[XFRMA_REPLAY_ESN_VAL]; + struct xfrm_replay_state_esn *rs; - if ((p->flags & XFRM_STATE_ESN) && !rt) - return -EINVAL; + if (p->flags & XFRM_STATE_ESN) { + if (!rt) + return -EINVAL; + + rs = nla_data(rt); + + if (rs->bmp_len > XFRMA_REPLAY_ESN_MAX / sizeof(rs->bmp[0]) / 8) + return -EINVAL; + + if (nla_len(rt) < xfrm_replay_state_esn_len(rs) && + nla_len(rt) != sizeof(*rs)) + return -EINVAL; + } if (!rt) return 0; @@ -370,14 +382,15 @@ struct nlattr *rp) { struct xfrm_replay_state_esn *up; + int ulen; if (!replay_esn || !rp) return 0; up = nla_data(rp); + ulen = xfrm_replay_state_esn_len(up); - if (xfrm_replay_state_esn_len(replay_esn) != - xfrm_replay_state_esn_len(up)) + if (nla_len(rp) < ulen || xfrm_replay_state_esn_len(replay_esn) != ulen) return -EINVAL; return 0; @@ -388,22 +401,28 @@ struct nlattr *rta) { struct xfrm_replay_state_esn *p, *pp, *up; + int klen, ulen; if (!rta) return 0; up = nla_data(rta); + klen = xfrm_replay_state_esn_len(up); + ulen = nla_len(rta) >= klen ? klen : sizeof(*up); - p = kmemdup(up, xfrm_replay_state_esn_len(up), GFP_KERNEL); + p = kzalloc(klen, GFP_KERNEL); if (!p) return -ENOMEM; - pp = kmemdup(up, xfrm_replay_state_esn_len(up), GFP_KERNEL); + pp = kzalloc(klen, GFP_KERNEL); if (!pp) { kfree(p); return -ENOMEM; } + memcpy(p, up, ulen); + memcpy(pp, up, ulen); + *replay_esn = p; *preplay_esn = pp; @@ -442,10 +461,11 @@ * somehow made shareable and move it to xfrm_state.c - JHS * */ -static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs) +static void xfrm_update_ae_params(struct xfrm_state *x, struct nlattr **attrs, + int update_esn) { struct nlattr *rp = attrs[XFRMA_REPLAY_VAL]; - struct nlattr *re = attrs[XFRMA_REPLAY_ESN_VAL]; + struct nlattr *re = update_esn ? attrs[XFRMA_REPLAY_ESN_VAL] : NULL; struct nlattr *lt = attrs[XFRMA_LTIME_VAL]; struct nlattr *et = attrs[XFRMA_ETIMER_THRESH]; struct nlattr *rt = attrs[XFRMA_REPLAY_THRESH]; @@ -555,7 +575,7 @@ goto error; /* override default values from above */ - xfrm_update_ae_params(x, attrs); + xfrm_update_ae_params(x, attrs, 0); return x; @@ -689,6 +709,7 @@ static void copy_to_user_state(struct xfrm_state *x, struct xfrm_usersa_info *p) { + memset(p, 0, sizeof(*p)); memcpy(&p->id, &x->id, sizeof(p->id)); memcpy(&p->sel, &x->sel, sizeof(p->sel)); memcpy(&p->lft, &x->lft, sizeof(p->lft)); @@ -742,7 +763,7 @@ return -EMSGSIZE; algo = nla_data(nla); - strcpy(algo->alg_name, auth->alg_name); + strncpy(algo->alg_name, auth->alg_name, sizeof(algo->alg_name)); memcpy(algo->alg_key, auth->alg_key, (auth->alg_key_len + 7) / 8); algo->alg_key_len = auth->alg_key_len; @@ -872,6 +893,7 @@ { struct xfrm_dump_info info; struct sk_buff *skb; + int err; skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); if (!skb) @@ -882,9 +904,10 @@ info.nlmsg_seq = seq; info.nlmsg_flags = 0; - if (dump_one_state(x, 0, &info)) { + err = dump_one_state(x, 0, &info); + if (err) { kfree_skb(skb); - return NULL; + return ERR_PTR(err); } return skb; @@ -1309,6 +1332,7 @@ static void copy_to_user_policy(struct xfrm_policy *xp, struct xfrm_userpolicy_info *p, int dir) { + memset(p, 0, sizeof(*p)); memcpy(&p->sel, &xp->selector, sizeof(p->sel)); memcpy(&p->lft, &xp->lft, sizeof(p->lft)); memcpy(&p->curlft, &xp->curlft, sizeof(p->curlft)); @@ -1413,6 +1437,7 @@ struct xfrm_user_tmpl *up = &vec[i]; struct xfrm_tmpl *kp = &xp->xfrm_vec[i]; + memset(up, 0, sizeof(*up)); memcpy(&up->id, &kp->id, sizeof(up->id)); up->family = kp->encap_family; memcpy(&up->saddr, &kp->saddr, sizeof(up->saddr)); @@ -1541,6 +1566,7 @@ { struct xfrm_dump_info info; struct sk_buff *skb; + int err; skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!skb) @@ -1551,9 +1577,10 @@ info.nlmsg_seq = seq; info.nlmsg_flags = 0; - if (dump_one_policy(xp, dir, 0, &info) < 0) { + err = dump_one_policy(xp, dir, 0, &info); + if (err) { kfree_skb(skb); - return NULL; + return ERR_PTR(err); } return skb; @@ -1812,7 +1839,7 @@ goto out; spin_lock_bh(&x->lock); - xfrm_update_ae_params(x, attrs); + xfrm_update_ae_params(x, attrs, 1); spin_unlock_bh(&x->lock); c.event = nlh->nlmsg_type; --- linux-3.5.0.orig/net/xfrm/xfrm_replay.c +++ linux-3.5.0/net/xfrm/xfrm_replay.c @@ -420,6 +420,18 @@ return -EINVAL; } +static int xfrm_replay_recheck_esn(struct xfrm_state *x, + struct sk_buff *skb, __be32 net_seq) +{ + if (unlikely(XFRM_SKB_CB(skb)->seq.input.hi != + htonl(xfrm_replay_seqhi(x, net_seq)))) { + x->stats.replay_window++; + return -EINVAL; + } + + return xfrm_replay_check_esn(x, skb, net_seq); +} + static void xfrm_replay_advance_esn(struct xfrm_state *x, __be32 net_seq) { unsigned int bitnr, nr, i; @@ -479,6 +491,7 @@ static struct xfrm_replay xfrm_replay_legacy = { .advance = xfrm_replay_advance, .check = xfrm_replay_check, + .recheck = xfrm_replay_check, .notify = xfrm_replay_notify, .overflow = xfrm_replay_overflow, }; @@ -486,6 +499,7 @@ static struct xfrm_replay xfrm_replay_bmp = { .advance = xfrm_replay_advance_bmp, .check = xfrm_replay_check_bmp, + .recheck = xfrm_replay_check_bmp, .notify = xfrm_replay_notify_bmp, .overflow = xfrm_replay_overflow_bmp, }; @@ -493,6 +507,7 @@ static struct xfrm_replay xfrm_replay_esn = { .advance = xfrm_replay_advance_esn, .check = xfrm_replay_check_esn, + .recheck = xfrm_replay_recheck_esn, .notify = xfrm_replay_notify_bmp, .overflow = xfrm_replay_overflow_esn, }; --- linux-3.5.0.orig/net/xfrm/xfrm_input.c +++ linux-3.5.0/net/xfrm/xfrm_input.c @@ -212,7 +212,7 @@ /* only the first xfrm gets the encap type */ encap_type = 0; - if (async && x->repl->check(x, skb, seq)) { + if (async && x->repl->recheck(x, skb, seq)) { XFRM_INC_STATS(net, LINUX_MIB_XFRMINSTATESEQERROR); goto drop_unlock; } --- linux-3.5.0.orig/drivers/mmc/host/omap_hsmmc.c +++ linux-3.5.0/drivers/mmc/host/omap_hsmmc.c @@ -1850,7 +1850,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); @@ -2102,8 +2102,7 @@ if (ret) { host->suspended = 0; if (host->pdata->resume) { - ret = host->pdata->resume(dev, host->slot_id); - if (ret) + if (host->pdata->resume(dev, host->slot_id)) dev_dbg(dev, "Unmask interrupt failed\n"); } goto err; --- linux-3.5.0.orig/drivers/mmc/host/Kconfig +++ linux-3.5.0/drivers/mmc/host/Kconfig @@ -612,3 +612,10 @@ Note: These controllers only support SDIO cards and do not support MMC or SD memory cards. + +config MMC_REALTEK_PCI + tristate "Realtek PCI-E SD/MMC Card Interface Driver" + depends on MFD_RTSX_PCI + help + Say Y here to include driver code to support SD/MMC card interface + of Realtek PCI-E card reader --- linux-3.5.0.orig/drivers/mmc/host/sdhci-esdhc-imx.c +++ linux-3.5.0/drivers/mmc/host/sdhci-esdhc-imx.c @@ -237,15 +237,18 @@ static u16 esdhc_readw_le(struct sdhci_host *host, int reg) { + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); + struct pltfm_imx_data *imx_data = pltfm_host->priv; + if (unlikely(reg == SDHCI_HOST_VERSION)) { - u16 val = readw(host->ioaddr + (reg ^ 2)); - /* - * uSDHC supports SDHCI v3.0, but it's encoded as value - * 0x3 in host controller version register, which violates - * SDHCI_SPEC_300 definition. Work it around here. - */ - if ((val & SDHCI_SPEC_VER_MASK) == 3) - return --val; + reg ^= 2; + if (is_imx6q_usdhc(imx_data)) { + /* + * The usdhc register returns a wrong host version. + * Correct it here. + */ + return SDHCI_SPEC_300; + } } return readw(host->ioaddr + reg); --- linux-3.5.0.orig/drivers/mmc/host/sdhci-pci.c +++ linux-3.5.0/drivers/mmc/host/sdhci-pci.c @@ -157,6 +157,7 @@ static const struct sdhci_pci_fixes sdhci_cafe = { .quirks = SDHCI_QUIRK_NO_SIMULT_VDD_AND_POWER | SDHCI_QUIRK_NO_BUSY_IRQ | + SDHCI_QUIRK_BROKEN_CARD_DETECTION | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL, }; --- linux-3.5.0.orig/drivers/mmc/host/Makefile +++ linux-3.5.0/drivers/mmc/host/Makefile @@ -45,6 +45,8 @@ obj-$(CONFIG_MMC_VUB300) += vub300.o obj-$(CONFIG_MMC_USHC) += ushc.o +obj-$(CONFIG_MMC_REALTEK_PCI) += rtsx_pci_sdmmc.o + obj-$(CONFIG_MMC_SDHCI_PLTFM) += sdhci-pltfm.o obj-$(CONFIG_MMC_SDHCI_CNS3XXX) += sdhci-cns3xxx.o obj-$(CONFIG_MMC_SDHCI_ESDHC_IMX) += sdhci-esdhc-imx.o --- linux-3.5.0.orig/drivers/mmc/host/atmel-mci.c +++ linux-3.5.0/drivers/mmc/host/atmel-mci.c @@ -81,6 +81,7 @@ bool has_bad_data_ordering; bool need_reset_after_xfer; bool need_blksz_mul_4; + bool need_notbusy_for_read_ops; }; struct atmel_mci_dma { @@ -1619,7 +1620,8 @@ __func__); atmci_set_completed(host, EVENT_XFER_COMPLETE); - if (host->data->flags & MMC_DATA_WRITE) { + if (host->caps.need_notbusy_for_read_ops || + (host->data->flags & MMC_DATA_WRITE)) { atmci_writel(host, ATMCI_IER, ATMCI_NOTBUSY); state = STATE_WAITING_NOTBUSY; } else if (host->mrq->stop) { @@ -2212,6 +2214,7 @@ host->caps.has_bad_data_ordering = 1; host->caps.need_reset_after_xfer = 1; host->caps.need_blksz_mul_4 = 1; + host->caps.need_notbusy_for_read_ops = 0; /* keep only major version number */ switch (version & 0xf00) { @@ -2232,6 +2235,7 @@ case 0x200: host->caps.has_rwproof = 1; host->caps.need_blksz_mul_4 = 0; + host->caps.need_notbusy_for_read_ops = 1; case 0x100: host->caps.has_bad_data_ordering = 0; host->caps.need_reset_after_xfer = 0; --- linux-3.5.0.orig/drivers/mmc/host/mxs-mmc.c +++ linux-3.5.0/drivers/mmc/host/mxs-mmc.c @@ -278,11 +278,11 @@ writel(stat & MXS_MMC_IRQ_BITS, host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_CLR); + spin_unlock(&host->lock); + if ((stat & BM_SSP_CTRL1_SDIO_IRQ) && (stat & BM_SSP_CTRL1_SDIO_IRQ_EN)) mmc_signal_sdio_irq(host->mmc); - spin_unlock(&host->lock); - if (stat & BM_SSP_CTRL1_RESP_TIMEOUT_IRQ) cmd->error = -ETIMEDOUT; else if (stat & BM_SSP_CTRL1_RESP_ERR_IRQ) @@ -637,11 +637,6 @@ host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET); writel(BM_SSP_CTRL1_SDIO_IRQ_EN, host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_SET); - - if (readl(host->base + HW_SSP_STATUS(host)) & - BM_SSP_STATUS_SDIO_IRQ) - mmc_signal_sdio_irq(host->mmc); - } else { writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK, host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR); @@ -650,6 +645,11 @@ } spin_unlock_irqrestore(&host->lock, flags); + + if (enable && readl(host->base + HW_SSP_STATUS(host)) & + BM_SSP_STATUS_SDIO_IRQ) + mmc_signal_sdio_irq(host->mmc); + } static const struct mmc_host_ops mxs_mmc_ops = { --- linux-3.5.0.orig/drivers/mmc/host/sdhci-s3c.c +++ linux-3.5.0/drivers/mmc/host/sdhci-s3c.c @@ -656,7 +656,7 @@ pm_runtime_disable(&pdev->dev); - for (ptr = 0; ptr < 3; ptr++) { + for (ptr = 0; ptr < MAX_BUS_CLK; ptr++) { if (sc->clk_bus[ptr]) { clk_disable(sc->clk_bus[ptr]); clk_put(sc->clk_bus[ptr]); --- linux-3.5.0.orig/drivers/mmc/host/sh_mmcif.c +++ linux-3.5.0/drivers/mmc/host/sh_mmcif.c @@ -1066,7 +1066,6 @@ { struct sh_mmcif_host *host = dev_id; struct mmc_request *mrq = host->mrq; - struct mmc_data *data = mrq->data; cancel_delayed_work_sync(&host->timeout_work); @@ -1114,13 +1113,14 @@ case MMCIF_WAIT_FOR_READ_END: case MMCIF_WAIT_FOR_WRITE_END: if (host->sd_error) - data->error = sh_mmcif_error_manage(host); + mrq->data->error = sh_mmcif_error_manage(host); break; default: BUG(); } if (host->wait_for != MMCIF_WAIT_FOR_STOP) { + struct mmc_data *data = mrq->data; if (!mrq->cmd->error && data && !data->error) data->bytes_xfered = data->blocks * data->blksz; --- linux-3.5.0.orig/drivers/mmc/host/rtsx_pci_sdmmc.c +++ linux-3.5.0/drivers/mmc/host/rtsx_pci_sdmmc.c @@ -0,0 +1,1339 @@ +/* Realtek PCI-Express SD/MMC Card Interface driver + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* SD Tuning Data Structure + * Record continuous timing phase path + */ +struct timing_phase_path { + int start; + int end; + int mid; + int len; +}; + +struct realtek_pci_sdmmc { + struct platform_device *pdev; + struct rtsx_pcr *pcr; + struct mmc_host *mmc; + struct mmc_request *mrq; + + struct mutex host_mutex; + + u8 ssc_depth; + unsigned int clock; + bool vpclk; + bool double_clk; + bool eject; + bool initial_mode; + bool ddr_mode; +}; + +static inline struct device *sdmmc_dev(struct realtek_pci_sdmmc *host) +{ + return &(host->pdev->dev); +} + +static inline void sd_clear_error(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, CARD_STOP, + SD_STOP | SD_CLR_ERR, SD_STOP | SD_CLR_ERR); +} + +#ifdef DEBUG +static void sd_print_debug_regs(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + u16 i; + u8 *ptr; + + /* Print SD host internal registers */ + rtsx_pci_init_cmd(pcr); + for (i = 0xFDA0; i <= 0xFDAE; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + for (i = 0xFD52; i <= 0xFD69; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + rtsx_pci_send_cmd(pcr, 100); + + ptr = rtsx_pci_get_cmd_data(pcr); + for (i = 0xFDA0; i <= 0xFDAE; i++) + dev_dbg(sdmmc_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); + for (i = 0xFD52; i <= 0xFD69; i++) + dev_dbg(sdmmc_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); +} +#else +#define sd_print_debug_regs(host) +#endif /* DEBUG */ + +static int sd_read_data(struct realtek_pci_sdmmc *host, u8 *cmd, u16 byte_cnt, + u8 *buf, int buf_len, int timeout) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 trans_mode; + + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD%d\n", __func__, cmd[0] - 0x40); + + if (!buf) + buf_len = 0; + + if ((cmd[0] & 0x3F) == MMC_SEND_TUNING_BLOCK) + trans_mode = SD_TM_AUTO_TUNING; + else + trans_mode = SD_TM_NORMAL_READ; + + rtsx_pci_init_cmd(pcr); + + for (i = 0; i < 5; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD0 + i, 0xFF, cmd[i]); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, (u8)byte_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, + 0xFF, (u8)(byte_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, 0xFF, 1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, 0xFF, 0); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, + SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_6); + if (trans_mode != SD_TM_AUTO_TUNING) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + CARD_DATA_SOURCE, 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, + 0xFF, trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd fail (err = %d)\n", err); + return err; + } + + if (buf && buf_len) { + err = rtsx_pci_read_ppbuf(pcr, buf, buf_len); + if (err < 0) { + dev_dbg(sdmmc_dev(host), + "rtsx_pci_read_ppbuf fail (err = %d)\n", err); + return err; + } + } + + return 0; +} + +static int sd_write_data(struct realtek_pci_sdmmc *host, u8 *cmd, u16 byte_cnt, + u8 *buf, int buf_len, int timeout) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 trans_mode; + + if (!buf) + buf_len = 0; + + if (buf && buf_len) { + err = rtsx_pci_write_ppbuf(pcr, buf, buf_len); + if (err < 0) { + dev_dbg(sdmmc_dev(host), + "rtsx_pci_write_ppbuf fail (err = %d)\n", err); + return err; + } + } + + trans_mode = cmd ? SD_TM_AUTO_WRITE_2 : SD_TM_AUTO_WRITE_3; + rtsx_pci_init_cmd(pcr); + + if (cmd) { + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d\n", __func__, + cmd[0] - 0x40); + + for (i = 0; i < 5; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_CMD0 + i, 0xFF, cmd[i]); + } + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, (u8)byte_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, + 0xFF, (u8)(byte_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, 0xFF, 1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, 0xFF, 0); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, + SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_6); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, + trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd fail (err = %d)\n", err); + return err; + } + + return 0; +} + +static void sd_send_cmd_get_rsp(struct realtek_pci_sdmmc *host, + struct mmc_command *cmd) +{ + struct rtsx_pcr *pcr = host->pcr; + u8 cmd_idx = (u8)cmd->opcode; + u32 arg = cmd->arg; + int err = 0; + int timeout = 100; + int i; + u8 *ptr; + int stat_idx = 0; + u8 rsp_type; + int rsp_len = 5; + + dev_dbg(sdmmc_dev(host), "%s: SD/MMC CMD %d, arg = 0x%08x\n", + __func__, cmd_idx, arg); + + /* Response type: + * R0 + * R1, R5, R6, R7 + * R1b + * R2 + * R3, R4 + */ + switch (mmc_resp_type(cmd)) { + case MMC_RSP_NONE: + rsp_type = SD_RSP_TYPE_R0; + rsp_len = 0; + break; + case MMC_RSP_R1: + rsp_type = SD_RSP_TYPE_R1; + break; + case MMC_RSP_R1B: + rsp_type = SD_RSP_TYPE_R1b; + break; + case MMC_RSP_R2: + rsp_type = SD_RSP_TYPE_R2; + rsp_len = 16; + break; + case MMC_RSP_R3: + rsp_type = SD_RSP_TYPE_R3; + break; + default: + dev_dbg(sdmmc_dev(host), "cmd->flag is not valid\n"); + err = -EINVAL; + goto out; + } + + if (rsp_type == SD_RSP_TYPE_R1b) + timeout = 3000; + + if (cmd->opcode == SD_SWITCH_VOLTAGE) { + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + 0xFF, SD_CLK_TOGGLE_EN); + if (err < 0) + goto out; + } + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD0, 0xFF, 0x40 | cmd_idx); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD1, 0xFF, (u8)(arg >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD2, 0xFF, (u8)(arg >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD3, 0xFF, (u8)(arg >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CMD4, 0xFF, (u8)arg); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, rsp_type); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, + 0xFF, SD_TM_CMD_RSP | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END | SD_STAT_IDLE, + SD_TRANSFER_END | SD_STAT_IDLE); + + if (rsp_type == SD_RSP_TYPE_R2) { + /* Read data from ping-pong buffer */ + for (i = PPBUF_BASE2; i < PPBUF_BASE2 + 16; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); + stat_idx = 16; + } else if (rsp_type != SD_RSP_TYPE_R0) { + /* Read data from SD_CMDx registers */ + for (i = SD_CMD0; i <= SD_CMD4; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, (u16)i, 0, 0); + stat_idx = 5; + } + + rtsx_pci_add_cmd(pcr, READ_REG_CMD, SD_STAT1, 0, 0); + + err = rtsx_pci_send_cmd(pcr, timeout); + if (err < 0) { + sd_print_debug_regs(host); + sd_clear_error(host); + dev_dbg(sdmmc_dev(host), + "rtsx_pci_send_cmd error (err = %d)\n", err); + goto out; + } + + if (rsp_type == SD_RSP_TYPE_R0) { + err = 0; + goto out; + } + + /* Eliminate returned value of CHECK_REG_CMD */ + ptr = rtsx_pci_get_cmd_data(pcr) + 1; + + /* Check (Start,Transmission) bit of Response */ + if ((ptr[0] & 0xC0) != 0) { + err = -EILSEQ; + dev_dbg(sdmmc_dev(host), "Invalid response bit\n"); + goto out; + } + + /* Check CRC7 */ + if (!(rsp_type & SD_NO_CHECK_CRC7)) { + if (ptr[stat_idx] & SD_CRC7_ERR) { + err = -EILSEQ; + dev_dbg(sdmmc_dev(host), "CRC7 error\n"); + goto out; + } + } + + if (rsp_type == SD_RSP_TYPE_R2) { + 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", + i, cmd->resp[i]); + } + } else { + cmd->resp[0] = get_unaligned_be32(ptr + 1); + dev_dbg(sdmmc_dev(host), "cmd->resp[0] = 0x%08x\n", + cmd->resp[0]); + } + +out: + cmd->error = err; +} + +static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq) +{ + struct rtsx_pcr *pcr = host->pcr; + struct mmc_host *mmc = host->mmc; + struct mmc_card *card = mmc->card; + struct mmc_data *data = mrq->data; + int uhs = mmc_sd_card_uhs(card); + int read = (data->flags & MMC_DATA_READ) ? 1 : 0; + u8 cfg2, trans_mode; + int err; + size_t data_len = data->blksz * data->blocks; + + if (read) { + cfg2 = SD_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_CHECK_CRC7 | SD_RSP_LEN_0; + trans_mode = SD_TM_AUTO_READ_3; + } else { + cfg2 = SD_NO_CALCULATE_CRC7 | SD_CHECK_CRC16 | + SD_NO_WAIT_BUSY_END | SD_NO_CHECK_CRC7 | SD_RSP_LEN_0; + trans_mode = SD_TM_AUTO_WRITE_3; + } + + if (!uhs) + cfg2 |= SD_NO_CHECK_WAIT_CRC_TO; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_L, 0xFF, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BYTE_CNT_H, 0xFF, 0x02); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_L, + 0xFF, (u8)data->blocks); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_BLOCK_CNT_H, + 0xFF, (u8)(data->blocks >> 8)); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + DMA_DONE_INT, DMA_DONE_INT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, + 0xFF, (u8)(data_len >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, + 0xFF, (u8)(data_len >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, + 0xFF, (u8)(data_len >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)data_len); + if (read) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, + DMA_DIR_FROM_CARD | DMA_EN | DMA_512); + } else { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, + DMA_DIR_TO_CARD | DMA_EN | DMA_512); + } + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, RING_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG2, 0xFF, cfg2); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_TRANSFER, 0xFF, + trans_mode | SD_TRANSFER_START); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, SD_TRANSFER, + SD_TRANSFER_END, SD_TRANSFER_END); + + rtsx_pci_send_cmd_no_wait(pcr); + + err = rtsx_pci_transfer_data(pcr, data->sg, data->sg_len, read, 10000); + if (err < 0) { + sd_clear_error(host); + return err; + } + + return 0; +} + +static inline void sd_enable_initial_mode(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, SD_CLK_DIVIDE_128); +} + +static inline void sd_disable_initial_mode(struct realtek_pci_sdmmc *host) +{ + rtsx_pci_write_register(host->pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, SD_CLK_DIVIDE_0); +} + +static void sd_normal_rw(struct realtek_pci_sdmmc *host, + struct mmc_request *mrq) +{ + struct mmc_command *cmd = mrq->cmd; + struct mmc_data *data = mrq->data; + u8 _cmd[5], *buf; + + _cmd[0] = 0x40 | (u8)cmd->opcode; + put_unaligned_be32(cmd->arg, (u32 *)(&_cmd[1])); + + buf = kzalloc(data->blksz, GFP_NOIO); + if (!buf) { + cmd->error = -ENOMEM; + return; + } + + if (data->flags & MMC_DATA_READ) { + if (host->initial_mode) + sd_disable_initial_mode(host); + + cmd->error = sd_read_data(host, _cmd, (u16)data->blksz, buf, + data->blksz, 200); + + if (host->initial_mode) + sd_enable_initial_mode(host); + + sg_copy_from_buffer(data->sg, data->sg_len, buf, data->blksz); + } else { + sg_copy_to_buffer(data->sg, data->sg_len, buf, data->blksz); + + cmd->error = sd_write_data(host, _cmd, (u16)data->blksz, buf, + data->blksz, 200); + } + + kfree(buf); +} + +static int sd_change_phase(struct realtek_pci_sdmmc *host, u8 sample_point) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + dev_dbg(sdmmc_dev(host), "%s: sample_point = %d\n", + __func__, sample_point); + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, CHANGE_CLK); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPRX_CTL, 0x1F, sample_point); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, PHASE_NOT_RESET, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, PHASE_NOT_RESET); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CHANGE_CLK, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, SD_ASYNC_FIFO_NOT_RST, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static u8 sd_search_final_phase(struct realtek_pci_sdmmc *host, u32 phase_map) +{ + struct timing_phase_path path[MAX_PHASE + 1]; + int i, j, cont_path_cnt; + int new_block, max_len, final_path_idx; + u8 final_phase = 0xFF; + + /* Parse phase_map, take it as a bit-ring */ + cont_path_cnt = 0; + new_block = 1; + j = 0; + for (i = 0; i < MAX_PHASE + 1; i++) { + if (phase_map & (1 << i)) { + if (new_block) { + new_block = 0; + j = cont_path_cnt++; + path[j].start = i; + path[j].end = i; + } else { + path[j].end = i; + } + } else { + new_block = 1; + if (cont_path_cnt) { + /* Calculate path length and middle point */ + int idx = cont_path_cnt - 1; + path[idx].len = + path[idx].end - path[idx].start + 1; + path[idx].mid = + path[idx].start + path[idx].len / 2; + } + } + } + + if (cont_path_cnt == 0) { + dev_dbg(sdmmc_dev(host), "No continuous phase path\n"); + goto finish; + } else { + /* Calculate last continuous path length and middle point */ + int idx = cont_path_cnt - 1; + path[idx].len = path[idx].end - path[idx].start + 1; + path[idx].mid = path[idx].start + path[idx].len / 2; + } + + /* Connect the first and last continuous paths if they are adjacent */ + if (!path[0].start && (path[cont_path_cnt - 1].end == MAX_PHASE)) { + /* Using negative index */ + path[0].start = path[cont_path_cnt - 1].start - MAX_PHASE - 1; + path[0].len += path[cont_path_cnt - 1].len; + path[0].mid = path[0].start + path[0].len / 2; + /* Convert negative middle point index to positive one */ + if (path[0].mid < 0) + path[0].mid += MAX_PHASE + 1; + cont_path_cnt--; + } + + /* Choose the longest continuous phase path */ + max_len = 0; + final_phase = 0; + final_path_idx = 0; + for (i = 0; i < cont_path_cnt; i++) { + if (path[i].len > max_len) { + max_len = path[i].len; + final_phase = (u8)path[i].mid; + final_path_idx = i; + } + + dev_dbg(sdmmc_dev(host), "path[%d].start = %d\n", + i, path[i].start); + dev_dbg(sdmmc_dev(host), "path[%d].end = %d\n", + i, path[i].end); + dev_dbg(sdmmc_dev(host), "path[%d].len = %d\n", + i, path[i].len); + dev_dbg(sdmmc_dev(host), "path[%d].mid = %d\n", + i, path[i].mid); + } + +finish: + dev_dbg(sdmmc_dev(host), "Final chosen phase: %d\n", final_phase); + return final_phase; +} + +static void sd_wait_data_idle(struct realtek_pci_sdmmc *host) +{ + int err, i; + u8 val = 0; + + for (i = 0; i < 100; i++) { + err = rtsx_pci_read_register(host->pcr, SD_DATA_STATE, &val); + if (val & SD_DATA_IDLE) + return; + + udelay(100); + } +} + +static int sd_tuning_rx_cmd(struct realtek_pci_sdmmc *host, + u8 opcode, u8 sample_point) +{ + int err; + u8 cmd[5] = {0}; + + err = sd_change_phase(host, sample_point); + if (err < 0) + return err; + + cmd[0] = 0x40 | opcode; + err = sd_read_data(host, cmd, 0x40, NULL, 0, 100); + if (err < 0) { + /* Wait till SD DATA IDLE */ + sd_wait_data_idle(host); + sd_clear_error(host); + return err; + } + + return 0; +} + +static int sd_tuning_phase(struct realtek_pci_sdmmc *host, + u8 opcode, u32 *phase_map) +{ + int err, i; + u32 raw_phase_map = 0; + + for (i = MAX_PHASE; i >= 0; i--) { + err = sd_tuning_rx_cmd(host, opcode, (u8)i); + if (err == 0) + raw_phase_map |= 1 << i; + } + + if (phase_map) + *phase_map = raw_phase_map; + + return 0; +} + +static int sd_tuning_rx(struct realtek_pci_sdmmc *host, u8 opcode) +{ + int err, i; + u32 raw_phase_map[RX_TUNING_CNT] = {0}, phase_map; + u8 final_phase; + + for (i = 0; i < RX_TUNING_CNT; i++) { + err = sd_tuning_phase(host, opcode, &(raw_phase_map[i])); + if (err < 0) + return err; + + if (raw_phase_map[i] == 0) + break; + } + + phase_map = 0xFFFFFFFF; + for (i = 0; i < RX_TUNING_CNT; i++) { + dev_dbg(sdmmc_dev(host), "RX raw_phase_map[%d] = 0x%08x\n", + i, raw_phase_map[i]); + phase_map &= raw_phase_map[i]; + } + dev_dbg(sdmmc_dev(host), "RX phase_map = 0x%08x\n", phase_map); + + if (phase_map) { + final_phase = sd_search_final_phase(host, phase_map); + if (final_phase == 0xFF) + return -EINVAL; + + err = sd_change_phase(host, final_phase); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static void sdmmc_request(struct mmc_host *mmc, struct mmc_request *mrq) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + struct mmc_command *cmd = mrq->cmd; + struct mmc_data *data = mrq->data; + unsigned int data_size = 0; + int err; + + if (host->eject) { + cmd->error = -ENOMEDIUM; + goto finish; + } + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) { + cmd->error = err; + goto finish; + } + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + rtsx_pci_switch_clock(pcr, host->clock, host->ssc_depth, + host->initial_mode, host->double_clk, host->vpclk); + rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, SD_MOD_SEL); + rtsx_pci_write_register(pcr, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_SD); + + mutex_lock(&host->host_mutex); + host->mrq = mrq; + mutex_unlock(&host->host_mutex); + + if (mrq->data) + data_size = data->blocks * data->blksz; + + if (!data_size || mmc_op_multi(cmd->opcode) || + (cmd->opcode == MMC_READ_SINGLE_BLOCK) || + (cmd->opcode == MMC_WRITE_BLOCK)) { + sd_send_cmd_get_rsp(host, cmd); + + if (!cmd->error && data_size) { + sd_rw_multi(host, mrq); + + if (mmc_op_multi(cmd->opcode) && mrq->stop) + sd_send_cmd_get_rsp(host, mrq->stop); + } + } else { + sd_normal_rw(host, mrq); + } + + if (mrq->data) { + if (cmd->error || data->error) + data->bytes_xfered = 0; + else + data->bytes_xfered = data->blocks * data->blksz; + } + + mutex_unlock(&pcr->pcr_mutex); + +finish: + if (cmd->error) + dev_dbg(sdmmc_dev(host), "cmd->error = %d\n", cmd->error); + + mutex_lock(&host->host_mutex); + host->mrq = NULL; + mutex_unlock(&host->host_mutex); + + mmc_request_done(mmc, mrq); +} + +static int sd_set_bus_width(struct realtek_pci_sdmmc *host, + unsigned char bus_width) +{ + int err = 0; + u8 width[] = { + [MMC_BUS_WIDTH_1] = SD_BUS_WIDTH_1BIT, + [MMC_BUS_WIDTH_4] = SD_BUS_WIDTH_4BIT, + [MMC_BUS_WIDTH_8] = SD_BUS_WIDTH_8BIT, + }; + + if (bus_width <= MMC_BUS_WIDTH_8) + err = rtsx_pci_write_register(host->pcr, SD_CFG1, + 0x03, width[bus_width]); + + return err; +} + +static int sd_power_on(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, SD_MOD_SEL); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_SD); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, + SD_CLK_EN, SD_CLK_EN); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_pull_ctl_enable(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + err = rtsx_pci_card_power_on(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + err = rtsx_pci_write_register(pcr, CARD_OE, SD_OUTPUT_EN, SD_OUTPUT_EN); + if (err < 0) + return err; + + return 0; +} + +static int sd_power_off(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, SD_CLK_EN, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_OE, SD_OUTPUT_EN, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_power_off(pcr, RTSX_SD_CARD); + if (err < 0) + return err; + + return rtsx_pci_card_pull_ctl_disable(pcr, RTSX_SD_CARD); +} + +static int sd_set_power_mode(struct realtek_pci_sdmmc *host, + unsigned char power_mode) +{ + int err; + + if (power_mode == MMC_POWER_OFF) + err = sd_power_off(host); + else + err = sd_power_on(host); + + return err; +} + +static int sd_set_timing(struct realtek_pci_sdmmc *host, + unsigned char timing, bool *ddr_mode) +{ + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + + *ddr_mode = false; + + rtsx_pci_init_cmd(pcr); + + switch (timing) { + case MMC_TIMING_UHS_SDR104: + case MMC_TIMING_UHS_SDR50: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C | SD_ASYNC_FIFO_NOT_RST, + SD_30_MODE | SD_ASYNC_FIFO_NOT_RST); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_VAR_CLK0 | SD30_FIX_CLK | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + break; + + case MMC_TIMING_UHS_DDR50: + *ddr_mode = true; + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C | SD_ASYNC_FIFO_NOT_RST, + SD_DDR_MODE | SD_ASYNC_FIFO_NOT_RST); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_VAR_CLK0 | SD30_FIX_CLK | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, + DDR_VAR_TX_CMD_DAT, DDR_VAR_TX_CMD_DAT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + DDR_VAR_RX_DAT | DDR_VAR_RX_CMD, + DDR_VAR_RX_DAT | DDR_VAR_RX_CMD); + break; + + case MMC_TIMING_MMC_HS: + case MMC_TIMING_SD_HS: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_CFG1, + 0x0C, SD_20_MODE); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_FIX_CLK | SD30_VAR_CLK0 | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_PUSH_POINT_CTL, + SD20_TX_SEL_MASK, SD20_TX_14_AHEAD); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + SD20_RX_SEL_MASK, SD20_RX_14_DELAY); + break; + + default: + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_CFG1, 0x0C, SD_20_MODE); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_SOURCE, 0xFF, + CRC_FIX_CLK | SD30_VAR_CLK0 | SAMPLE_VAR_CLK1); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, CLK_LOW_FREQ, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD_PUSH_POINT_CTL, 0xFF, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_SAMPLE_POINT_CTL, + SD20_RX_SEL_MASK, SD20_RX_POS_EDGE); + break; + } + + err = rtsx_pci_send_cmd(pcr, 100); + + return err; +} + +static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + + if (host->eject) + return; + + if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD)) + return; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + sd_set_bus_width(host, ios->bus_width); + sd_set_power_mode(host, ios->power_mode); + sd_set_timing(host, ios->timing, &host->ddr_mode); + + host->vpclk = false; + host->double_clk = true; + + switch (ios->timing) { + case MMC_TIMING_UHS_SDR104: + case MMC_TIMING_UHS_SDR50: + host->ssc_depth = RTSX_SSC_DEPTH_2M; + host->vpclk = true; + host->double_clk = false; + break; + case MMC_TIMING_UHS_DDR50: + case MMC_TIMING_UHS_SDR25: + host->ssc_depth = RTSX_SSC_DEPTH_1M; + break; + default: + host->ssc_depth = RTSX_SSC_DEPTH_500K; + break; + } + + host->initial_mode = (ios->clock <= 1000000) ? true : false; + + host->clock = ios->clock; + rtsx_pci_switch_clock(pcr, ios->clock, host->ssc_depth, + host->initial_mode, host->double_clk, host->vpclk); + + mutex_unlock(&pcr->pcr_mutex); +} + +static int sdmmc_get_ro(struct mmc_host *mmc) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int ro = 0; + u32 val; + + if (host->eject) + return -ENOMEDIUM; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + /* Check SD mechanical write-protect switch */ + val = rtsx_pci_readl(pcr, RTSX_BIPR); + dev_dbg(sdmmc_dev(host), "%s: RTSX_BIPR = 0x%08x\n", __func__, val); + if (val & SD_WRITE_PROTECT) + ro = 1; + + mutex_unlock(&pcr->pcr_mutex); + + return ro; +} + +static int sdmmc_get_cd(struct mmc_host *mmc) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int cd = 0; + u32 val; + + if (host->eject) + return -ENOMEDIUM; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + /* Check SD card detect */ + val = rtsx_pci_card_exist(pcr); + dev_dbg(sdmmc_dev(host), "%s: RTSX_BIPR = 0x%08x\n", __func__, val); + if (val & SD_EXIST) + cd = 1; + + mutex_unlock(&pcr->pcr_mutex); + + return cd; +} + +static int sd_wait_voltage_stable_1(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + u8 stat; + + /* Reference to Signal Voltage Switch Sequence in SD spec. + * Wait for a period of time so that the card can drive SD_CMD and + * SD_DAT[3:0] to low after sending back CMD11 response. + */ + mdelay(1); + + /* SD_CMD, SD_DAT[3:0] should be driven to low by card; + * If either one of SD_CMD,SD_DAT[3:0] is not low, + * abort the voltage switch sequence; + */ + err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); + if (err < 0) + return err; + + if (stat & (SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS)) + return -EINVAL; + + /* Stop toggle SD clock */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + 0xFF, SD_CLK_FORCE_STOP); + if (err < 0) + return err; + + return 0; +} + +static int sd_wait_voltage_stable_2(struct realtek_pci_sdmmc *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + u8 stat, mask, val; + + /* Wait 1.8V output of voltage regulator in card stable */ + msleep(50); + + /* Toggle SD clock again */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, 0xFF, SD_CLK_TOGGLE_EN); + if (err < 0) + return err; + + /* Wait for a period of time so that the card can drive + * SD_DAT[3:0] to high at 1.8V + */ + msleep(20); + + /* SD_CMD, SD_DAT[3:0] should be pulled high by host */ + err = rtsx_pci_read_register(pcr, SD_BUS_STAT, &stat); + if (err < 0) + return err; + + mask = SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS; + val = SD_CMD_STATUS | SD_DAT3_STATUS | SD_DAT2_STATUS | + SD_DAT1_STATUS | SD_DAT0_STATUS; + if ((stat & mask) != val) { + dev_dbg(sdmmc_dev(host), + "%s: SD_BUS_STAT = 0x%x\n", __func__, stat); + rtsx_pci_write_register(pcr, SD_BUS_STAT, + SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0); + rtsx_pci_write_register(pcr, CARD_CLK_EN, 0xFF, 0); + return -EINVAL; + } + + return 0; +} + +static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + u8 voltage; + + dev_dbg(sdmmc_dev(host), "%s: signal_voltage = %d\n", + __func__, ios->signal_voltage); + + if (host->eject) + return -ENOMEDIUM; + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) + return err; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + if (ios->signal_voltage == MMC_SIGNAL_VOLTAGE_330) + voltage = OUTPUT_3V3; + else + voltage = OUTPUT_1V8; + + if (voltage == OUTPUT_1V8) { + err = sd_wait_voltage_stable_1(host); + if (err < 0) + goto out; + } + + err = rtsx_pci_switch_output_voltage(pcr, voltage); + if (err < 0) + goto out; + + if (voltage == OUTPUT_1V8) { + err = sd_wait_voltage_stable_2(host); + if (err < 0) + goto out; + } + + /* Stop toggle SD clock in idle */ + err = rtsx_pci_write_register(pcr, SD_BUS_STAT, + SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0); + +out: + mutex_unlock(&pcr->pcr_mutex); + + return err; +} + +static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode) +{ + struct realtek_pci_sdmmc *host = mmc_priv(mmc); + struct rtsx_pcr *pcr = host->pcr; + int err = 0; + + if (host->eject) + return -ENOMEDIUM; + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_SD_CARD); + if (err) + return err; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + if (!host->ddr_mode) + err = sd_tuning_rx(host, MMC_SEND_TUNING_BLOCK); + + mutex_unlock(&pcr->pcr_mutex); + + return err; +} + +static const struct mmc_host_ops realtek_pci_sdmmc_ops = { + .request = sdmmc_request, + .set_ios = sdmmc_set_ios, + .get_ro = sdmmc_get_ro, + .get_cd = sdmmc_get_cd, + .start_signal_voltage_switch = sdmmc_switch_voltage, + .execute_tuning = sdmmc_execute_tuning, +}; + +#ifdef CONFIG_PM +static int rtsx_pci_sdmmc_suspend(struct platform_device *pdev, + pm_message_t state) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->mmc; + int err; + + dev_dbg(sdmmc_dev(host), "--> %s\n", __func__); + + err = mmc_suspend_host(mmc); + if (err) + return err; + + return 0; +} + +static int rtsx_pci_sdmmc_resume(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct mmc_host *mmc = host->mmc; + + dev_dbg(sdmmc_dev(host), "--> %s\n", __func__); + + return mmc_resume_host(mmc); +} +#else /* CONFIG_PM */ +#define rtsx_pci_sdmmc_suspend NULL +#define rtsx_pci_sdmmc_resume NULL +#endif /* CONFIG_PM */ + +static void init_extra_caps(struct realtek_pci_sdmmc *host) +{ + struct mmc_host *mmc = host->mmc; + struct rtsx_pcr *pcr = host->pcr; + + dev_dbg(sdmmc_dev(host), "pcr->extra_caps = 0x%x\n", pcr->extra_caps); + + if (pcr->extra_caps & EXTRA_CAPS_SD_SDR50) + mmc->caps |= MMC_CAP_UHS_SDR50; + if (pcr->extra_caps & EXTRA_CAPS_SD_SDR104) + mmc->caps |= MMC_CAP_UHS_SDR104; + if (pcr->extra_caps & EXTRA_CAPS_SD_DDR50) + mmc->caps |= MMC_CAP_UHS_DDR50; + if (pcr->extra_caps & EXTRA_CAPS_MMC_HSDDR) + mmc->caps |= MMC_CAP_1_8V_DDR; + if (pcr->extra_caps & EXTRA_CAPS_MMC_8BIT) + mmc->caps |= MMC_CAP_8_BIT_DATA; +} + +static void realtek_init_host(struct realtek_pci_sdmmc *host) +{ + struct mmc_host *mmc = host->mmc; + + mmc->f_min = 250000; + mmc->f_max = 208000000; + mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195; + mmc->caps = MMC_CAP_4_BIT_DATA | MMC_CAP_SD_HIGHSPEED | + MMC_CAP_MMC_HIGHSPEED | MMC_CAP_BUS_WIDTH_TEST | + MMC_CAP_UHS_SDR12 | MMC_CAP_UHS_SDR25 | MMC_CAP_MAX_CURRENT_800; + mmc->ops = &realtek_pci_sdmmc_ops; + + init_extra_caps(host); + + mmc->max_segs = 256; + mmc->max_seg_size = 65536; + mmc->max_blk_size = 512; + mmc->max_blk_count = 65535; + mmc->max_req_size = 524288; +} + +static void rtsx_pci_sdmmc_card_event(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + + mmc_detect_change(host->mmc, 0); +} + +static int rtsx_pci_sdmmc_drv_probe(struct platform_device *pdev) +{ + struct mmc_host *mmc; + struct realtek_pci_sdmmc *host; + struct rtsx_pcr *pcr; + struct pcr_handle *handle = pdev->dev.platform_data; + + if (!handle) + return -ENXIO; + + pcr = handle->pcr; + if (!pcr) + return -ENXIO; + + dev_dbg(&(pdev->dev), ": Realtek PCI-E SDMMC controller found\n"); + + mmc = mmc_alloc_host(sizeof(*host), &pdev->dev); + if (!mmc) + return -ENOMEM; + + host = mmc_priv(mmc); + host->pcr = pcr; + host->mmc = mmc; + host->pdev = pdev; + platform_set_drvdata(pdev, host); + pcr->slots[RTSX_SD_CARD].p_dev = pdev; + pcr->slots[RTSX_SD_CARD].card_event = rtsx_pci_sdmmc_card_event; + + mutex_init(&host->host_mutex); + + realtek_init_host(host); + + mmc_add_host(mmc); + + return 0; +} + +static int rtsx_pci_sdmmc_drv_remove(struct platform_device *pdev) +{ + struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev); + struct rtsx_pcr *pcr; + struct mmc_host *mmc; + + if (!host) + return 0; + + pcr = host->pcr; + pcr->slots[RTSX_SD_CARD].p_dev = NULL; + pcr->slots[RTSX_SD_CARD].card_event = NULL; + mmc = host->mmc; + host->eject = true; + + mutex_lock(&host->host_mutex); + if (host->mrq) { + dev_dbg(&(pdev->dev), + "%s: Controller removed during transfer\n", + mmc_hostname(mmc)); + + rtsx_pci_complete_unfinished_transfer(pcr); + + host->mrq->cmd->error = -ENOMEDIUM; + if (host->mrq->stop) + host->mrq->stop->error = -ENOMEDIUM; + mmc_request_done(mmc, host->mrq); + } + mutex_unlock(&host->host_mutex); + + mmc_remove_host(mmc); + mmc_free_host(mmc); + + platform_set_drvdata(pdev, NULL); + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E SDMMC controller has been removed\n"); + + return 0; +} + +static struct platform_device_id rtsx_pci_sdmmc_ids[] = { + { + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, { + /* sentinel */ + } +}; +MODULE_DEVICE_TABLE(platform, rtsx_pci_sdmmc_ids); + +static struct platform_driver rtsx_pci_sdmmc_driver = { + .probe = rtsx_pci_sdmmc_drv_probe, + .remove = rtsx_pci_sdmmc_drv_remove, + .id_table = rtsx_pci_sdmmc_ids, + .suspend = rtsx_pci_sdmmc_suspend, + .resume = rtsx_pci_sdmmc_resume, + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, +}; +module_platform_driver(rtsx_pci_sdmmc_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E SD/MMC Card Host Driver"); --- linux-3.5.0.orig/drivers/mmc/host/sdhci.c +++ linux-3.5.0/drivers/mmc/host/sdhci.c @@ -27,6 +27,7 @@ #include #include +#include #include "sdhci.h" @@ -1245,6 +1246,7 @@ struct sdhci_host *host; bool present; unsigned long flags; + u32 tuning_opcode; host = mmc_priv(mmc); @@ -1292,12 +1294,19 @@ */ if ((host->flags & SDHCI_NEEDS_RETUNING) && !(present_state & (SDHCI_DOING_WRITE | SDHCI_DOING_READ))) { - spin_unlock_irqrestore(&host->lock, flags); - sdhci_execute_tuning(mmc, mrq->cmd->opcode); - spin_lock_irqsave(&host->lock, flags); + if (mmc->card) { + /* eMMC uses cmd21 but sd and sdio use cmd19 */ + tuning_opcode = + mmc->card->type == MMC_TYPE_MMC ? + MMC_SEND_TUNING_BLOCK_HS200 : + MMC_SEND_TUNING_BLOCK; + spin_unlock_irqrestore(&host->lock, flags); + sdhci_execute_tuning(mmc, tuning_opcode); + spin_lock_irqsave(&host->lock, flags); - /* Restore original mmc_request structure */ - host->mrq = mrq; + /* Restore original mmc_request structure */ + host->mrq = mrq; + } } if (mrq->sbc && !(host->flags & SDHCI_AUTO_CMD23)) --- linux-3.5.0.orig/drivers/mmc/host/sdhci-esdhc.h +++ linux-3.5.0/drivers/mmc/host/sdhci-esdhc.h @@ -48,14 +48,14 @@ int div = 1; u32 temp; + if (clock == 0) + goto out; + temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL); temp &= ~(ESDHC_CLOCK_IPGEN | ESDHC_CLOCK_HCKEN | ESDHC_CLOCK_PEREN | ESDHC_CLOCK_MASK); sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); - if (clock == 0) - goto out; - while (host->max_clk / pre_div / 16 > clock && pre_div < 256) pre_div *= 2; --- linux-3.5.0.orig/drivers/mmc/card/block.c +++ linux-3.5.0/drivers/mmc/card/block.c @@ -1429,7 +1429,8 @@ /* complete ongoing async transfer before issuing discard */ if (card->host->areq) mmc_blk_issue_rw_rq(mq, NULL); - if (req->cmd_flags & REQ_SECURE) + if (req->cmd_flags & REQ_SECURE && + !(card->quirks & MMC_QUIRK_SEC_ERASE_TRIM_BROKEN)) ret = mmc_blk_issue_secdiscard_rq(mq, req); else ret = mmc_blk_issue_discard_rq(mq, req); @@ -1734,6 +1735,7 @@ #define CID_MANFID_SANDISK 0x2 #define CID_MANFID_TOSHIBA 0x11 #define CID_MANFID_MICRON 0x13 +#define CID_MANFID_SAMSUNG 0x15 static const struct mmc_fixup blk_fixups[] = { @@ -1770,6 +1772,28 @@ MMC_FIXUP(CID_NAME_ANY, CID_MANFID_MICRON, 0x200, add_quirk_mmc, MMC_QUIRK_LONG_READ_TIME), + /* + * On these Samsung MoviNAND parts, performing secure erase or + * secure trim can result in unrecoverable corruption due to a + * firmware bug. + */ + MMC_FIXUP("M8G2FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MAG4FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MBG8FA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("MCGAFA", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VAL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("KYL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + MMC_FIXUP("VZL00M", CID_MANFID_SAMSUNG, CID_OEMID_ANY, add_quirk_mmc, + MMC_QUIRK_SEC_ERASE_TRIM_BROKEN), + END_FIXUP }; --- linux-3.5.0.orig/drivers/mmc/core/host.c +++ linux-3.5.0/drivers/mmc/core/host.c @@ -430,3 +430,4 @@ } EXPORT_SYMBOL(mmc_free_host); + --- linux-3.5.0.orig/drivers/remoteproc/Kconfig +++ linux-3.5.0/drivers/remoteproc/Kconfig @@ -5,6 +5,7 @@ tristate depends on EXPERIMENTAL select FW_CONFIG + select VIRTIO config OMAP_REMOTEPROC tristate "OMAP remoteproc support" --- linux-3.5.0.orig/drivers/remoteproc/remoteproc_core.c +++ linux-3.5.0/drivers/remoteproc/remoteproc_core.c @@ -643,17 +643,10 @@ dev_dbg(dev, "carveout rsc: da %x, pa %x, len %x, flags %x\n", rsc->da, rsc->pa, rsc->len, rsc->flags); - mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); - if (!mapping) { - dev_err(dev, "kzalloc mapping failed\n"); - return -ENOMEM; - } - carveout = kzalloc(sizeof(*carveout), GFP_KERNEL); if (!carveout) { dev_err(dev, "kzalloc carveout failed\n"); - ret = -ENOMEM; - goto free_mapping; + return -ENOMEM; } va = dma_alloc_coherent(dev, rsc->len, &dma, GFP_KERNEL); @@ -683,11 +676,18 @@ * physical address in this case. */ if (rproc->domain) { + mapping = kzalloc(sizeof(*mapping), GFP_KERNEL); + if (!mapping) { + dev_err(dev, "kzalloc mapping failed\n"); + ret = -ENOMEM; + goto dma_free; + } + ret = iommu_map(rproc->domain, rsc->da, dma, rsc->len, rsc->flags); if (ret) { dev_err(dev, "iommu_map failed: %d\n", ret); - goto dma_free; + goto free_mapping; } /* @@ -728,12 +728,12 @@ return 0; +free_mapping: + kfree(mapping); dma_free: dma_free_coherent(dev, rsc->len, va, dma); free_carv: kfree(carveout); -free_mapping: - kfree(mapping); return ret; } --- linux-3.5.0.orig/drivers/usb/host/ohci-at91.c +++ linux-3.5.0/drivers/usb/host/ohci-at91.c @@ -467,7 +467,8 @@ /* From the GPIO notifying the over-current situation, find * out the corresponding port */ at91_for_each_port(port) { - if (gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { + if (gpio_is_valid(pdata->overcurrent_pin[port]) && + gpio_to_irq(pdata->overcurrent_pin[port]) == irq) { gpio = pdata->overcurrent_pin[port]; break; } @@ -570,6 +571,16 @@ if (pdata) { at91_for_each_port(i) { + /* + * do not configure PIO if not in relation with + * real USB port on board + */ + if (i >= pdata->ports) { + pdata->vbus_pin[i] = -EINVAL; + pdata->overcurrent_pin[i] = -EINVAL; + break; + } + if (!gpio_is_valid(pdata->vbus_pin[i])) continue; gpio = pdata->vbus_pin[i]; --- linux-3.5.0.orig/drivers/usb/host/ehci-hub.c +++ linux-3.5.0/drivers/usb/host/ehci-hub.c @@ -613,7 +613,11 @@ status = STS_PCD; } } - /* FIXME autosuspend idle root hubs */ + + /* If a resume is in progress, make sure it can finish */ + if (ehci->resuming_ports) + mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(25)); + spin_unlock_irqrestore (&ehci->lock, flags); return status ? retval : 0; } --- linux-3.5.0.orig/drivers/usb/host/uhci-hcd.c +++ linux-3.5.0/drivers/usb/host/uhci-hcd.c @@ -447,6 +447,10 @@ return IRQ_NONE; uhci_writew(uhci, status, USBSTS); /* Clear it */ + spin_lock(&uhci->lock); + if (unlikely(!uhci->is_initialized)) /* not yet configured */ + goto done; + if (status & ~(USBSTS_USBINT | USBSTS_ERROR | USBSTS_RD)) { if (status & USBSTS_HSE) dev_err(uhci_dev(uhci), "host system error, " @@ -455,7 +459,6 @@ dev_err(uhci_dev(uhci), "host controller process " "error, something bad happened!\n"); if (status & USBSTS_HCH) { - spin_lock(&uhci->lock); if (uhci->rh_state >= UHCI_RH_RUNNING) { dev_err(uhci_dev(uhci), "host controller halted, " @@ -473,15 +476,15 @@ * pending unlinks */ mod_timer(&hcd->rh_timer, jiffies); } - spin_unlock(&uhci->lock); } } - if (status & USBSTS_RD) + if (status & USBSTS_RD) { + spin_unlock(&uhci->lock); usb_hcd_poll_rh_status(hcd); - else { - spin_lock(&uhci->lock); + } else { uhci_scan_schedule(uhci); + done: spin_unlock(&uhci->lock); } @@ -662,9 +665,9 @@ */ mb(); + spin_lock_irq(&uhci->lock); configure_hc(uhci); uhci->is_initialized = 1; - spin_lock_irq(&uhci->lock); start_rh(uhci); spin_unlock_irq(&uhci->lock); return 0; --- linux-3.5.0.orig/drivers/usb/host/ehci-omap.c +++ linux-3.5.0/drivers/usb/host/ehci-omap.c @@ -43,7 +43,6 @@ #include #include #include -#include /* EHCI Register Set */ #define EHCI_INSNREG04 (0xA0) @@ -56,15 +55,6 @@ #define EHCI_INSNREG05_ULPI_EXTREGADD_SHIFT 8 #define EHCI_INSNREG05_ULPI_WRDATA_SHIFT 0 -/* Errata i693 */ -static struct clk *utmi_p1_fck; -static struct clk *utmi_p2_fck; -static struct clk *xclk60mhsp1_ck; -static struct clk *xclk60mhsp2_ck; -static struct clk *usbhost_p1_fck; -static struct clk *usbhost_p2_fck; -static struct clk *init_60m_fclk; - /*-------------------------------------------------------------------------*/ static const struct hc_driver ehci_omap_hc_driver; @@ -80,41 +70,6 @@ return __raw_readl(base + reg); } -/* Erratum i693 workaround sequence */ -static void omap_ehci_erratum_i693(struct ehci_hcd *ehci) -{ - int ret = 0; - - /* Switch to the internal 60 MHz clock */ - ret = clk_set_parent(utmi_p1_fck, init_60m_fclk); - if (ret != 0) - ehci_err(ehci, "init_60m_fclk set parent" - "failed error:%d\n", ret); - - ret = clk_set_parent(utmi_p2_fck, init_60m_fclk); - if (ret != 0) - ehci_err(ehci, "init_60m_fclk set parent" - "failed error:%d\n", ret); - - clk_enable(usbhost_p1_fck); - clk_enable(usbhost_p2_fck); - - /* Wait 1ms and switch back to the external clock */ - mdelay(1); - ret = clk_set_parent(utmi_p1_fck, xclk60mhsp1_ck); - if (ret != 0) - ehci_err(ehci, "xclk60mhsp1_ck set parent" - "failed error:%d\n", ret); - - ret = clk_set_parent(utmi_p2_fck, xclk60mhsp2_ck); - if (ret != 0) - ehci_err(ehci, "xclk60mhsp2_ck set parent" - "failed error:%d\n", ret); - - clk_disable(usbhost_p1_fck); - clk_disable(usbhost_p2_fck); -} - static void omap_ehci_soft_phy_reset(struct platform_device *pdev, u8 port) { struct usb_hcd *hcd = dev_get_drvdata(&pdev->dev); @@ -145,50 +100,6 @@ } } -static int omap_ehci_hub_control( - struct usb_hcd *hcd, - u16 typeReq, - u16 wValue, - u16 wIndex, - char *buf, - u16 wLength -) -{ - struct ehci_hcd *ehci = hcd_to_ehci(hcd); - u32 __iomem *status_reg = &ehci->regs->port_status[ - (wIndex & 0xff) - 1]; - u32 temp; - unsigned long flags; - int retval = 0; - - spin_lock_irqsave(&ehci->lock, flags); - - if (typeReq == SetPortFeature && wValue == USB_PORT_FEAT_SUSPEND) { - temp = ehci_readl(ehci, status_reg); - if ((temp & PORT_PE) == 0 || (temp & PORT_RESET) != 0) { - retval = -EPIPE; - goto done; - } - - temp &= ~PORT_WKCONN_E; - temp |= PORT_WKDISC_E | PORT_WKOC_E; - ehci_writel(ehci, temp | PORT_SUSPEND, status_reg); - - omap_ehci_erratum_i693(ehci); - - set_bit((wIndex & 0xff) - 1, &ehci->suspended_ports); - goto done; - } - - spin_unlock_irqrestore(&ehci->lock, flags); - - /* Handle the hub control events here */ - return ehci_hub_control(hcd, typeReq, wValue, wIndex, buf, wLength); -done: - spin_unlock_irqrestore(&ehci->lock, flags); - return retval; -} - static void disable_put_regulator( struct ehci_hcd_omap_platform_data *pdata) { @@ -351,76 +262,8 @@ /* root ports should always stay powered */ ehci_port_power(omap_ehci, 1); - /* get clocks */ - utmi_p1_fck = clk_get(dev, "utmi_p1_gfclk"); - if (IS_ERR(utmi_p1_fck)) { - ret = PTR_ERR(utmi_p1_fck); - dev_err(dev, "utmi_p1_gfclk failed error:%d\n", ret); - goto err_add_hcd; - } - - xclk60mhsp1_ck = clk_get(dev, "xclk60mhsp1_ck"); - if (IS_ERR(xclk60mhsp1_ck)) { - ret = PTR_ERR(xclk60mhsp1_ck); - dev_err(dev, "xclk60mhsp1_ck failed error:%d\n", ret); - goto err_utmi_p1_fck; - } - - utmi_p2_fck = clk_get(dev, "utmi_p2_gfclk"); - if (IS_ERR(utmi_p2_fck)) { - ret = PTR_ERR(utmi_p2_fck); - dev_err(dev, "utmi_p2_gfclk failed error:%d\n", ret); - goto err_xclk60mhsp1_ck; - } - - xclk60mhsp2_ck = clk_get(dev, "xclk60mhsp2_ck"); - if (IS_ERR(xclk60mhsp2_ck)) { - ret = PTR_ERR(xclk60mhsp2_ck); - dev_err(dev, "xclk60mhsp2_ck failed error:%d\n", ret); - goto err_utmi_p2_fck; - } - - usbhost_p1_fck = clk_get(dev, "usb_host_hs_utmi_p1_clk"); - if (IS_ERR(usbhost_p1_fck)) { - ret = PTR_ERR(usbhost_p1_fck); - dev_err(dev, "usbhost_p1_fck failed error:%d\n", ret); - goto err_xclk60mhsp2_ck; - } - - usbhost_p2_fck = clk_get(dev, "usb_host_hs_utmi_p2_clk"); - if (IS_ERR(usbhost_p2_fck)) { - ret = PTR_ERR(usbhost_p2_fck); - dev_err(dev, "usbhost_p2_fck failed error:%d\n", ret); - goto err_usbhost_p1_fck; - } - - init_60m_fclk = clk_get(dev, "init_60m_fclk"); - if (IS_ERR(init_60m_fclk)) { - ret = PTR_ERR(init_60m_fclk); - dev_err(dev, "init_60m_fclk failed error:%d\n", ret); - goto err_usbhost_p2_fck; - } - return 0; -err_usbhost_p2_fck: - clk_put(usbhost_p2_fck); - -err_usbhost_p1_fck: - clk_put(usbhost_p1_fck); - -err_xclk60mhsp2_ck: - clk_put(xclk60mhsp2_ck); - -err_utmi_p2_fck: - clk_put(utmi_p2_fck); - -err_xclk60mhsp1_ck: - clk_put(xclk60mhsp1_ck); - -err_utmi_p1_fck: - clk_put(utmi_p1_fck); - err_add_hcd: disable_put_regulator(pdata); pm_runtime_put_sync(dev); @@ -443,31 +286,14 @@ { struct device *dev = &pdev->dev; struct usb_hcd *hcd = dev_get_drvdata(dev); - struct ehci_hcd_omap_platform_data *pdata = dev->platform_data; usb_remove_hcd(hcd); disable_put_regulator(dev->platform_data); iounmap(hcd->regs); usb_put_hcd(hcd); - - clk_put(utmi_p1_fck); - clk_put(utmi_p2_fck); - clk_put(xclk60mhsp1_ck); - clk_put(xclk60mhsp2_ck); - clk_put(usbhost_p1_fck); - clk_put(usbhost_p2_fck); - clk_put(init_60m_fclk); - pm_runtime_put_sync(dev); pm_runtime_disable(dev); - if (pdata->phy_reset) { - if (gpio_is_valid(pdata->reset_gpio_port[0])) - gpio_free(pdata->reset_gpio_port[0]); - - if (gpio_is_valid(pdata->reset_gpio_port[1])) - gpio_free(pdata->reset_gpio_port[1]); - } return 0; } @@ -528,14 +354,14 @@ * root hub support */ .hub_status_data = ehci_hub_status_data, - .hub_control = omap_ehci_hub_control, + .hub_control = ehci_hub_control, .bus_suspend = ehci_bus_suspend, .bus_resume = ehci_bus_resume, .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete, }; -MODULE_ALIAS("platform:omap-ehci"); +MODULE_ALIAS("platform:ehci-omap"); MODULE_AUTHOR("Texas Instruments, Inc."); MODULE_AUTHOR("Felipe Balbi "); --- linux-3.5.0.orig/drivers/usb/host/xhci-hub.c +++ linux-3.5.0/drivers/usb/host/xhci-hub.c @@ -493,11 +493,48 @@ * when this bit is set. */ pls |= USB_PORT_STAT_CONNECTION; + } else { + /* + * If CAS bit isn't set but the Port is already at + * Compliance Mode, fake a connection so the USB core + * notices the Compliance state and resets the port. + * This resolves an issue generated by the SN65LVPE502CP + * 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) + pls |= USB_PORT_STAT_CONNECTION; } + /* update status field */ *status |= pls; } +/* + * Function for Compliance Mode Quirk. + * + * This Function verifies if all xhc USB3 ports have entered U0, if so, + * the compliance mode timer is deleted. A port won't enter + * compliance mode if it has previously entered U0. + */ +void xhci_del_comp_mod_timer(struct xhci_hcd *xhci, u32 status, u16 wIndex) +{ + u32 all_ports_seen_u0 = ((1 << xhci->num_usb3_ports)-1); + bool port_in_u0 = ((status & PORT_PLS_MASK) == XDEV_U0); + + if (!(xhci->quirks & XHCI_COMP_MODE_QUIRK)) + return; + + if ((xhci->port_status_u0 != all_ports_seen_u0) && port_in_u0) { + xhci->port_status_u0 |= 1 << wIndex; + if (xhci->port_status_u0 == all_ports_seen_u0) { + del_timer_sync(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "All USB3 ports have entered U0 already!\n"); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Deleted.\n"); + } + } +} + int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex, char *buf, u16 wLength) { @@ -544,12 +581,18 @@ if (hcd->speed != HCD_USB3) goto error; + /* Set the U1 and U2 exit latencies. */ memcpy(buf, &usb_bos_descriptor, USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE); temp = xhci_readl(xhci, &xhci->cap_regs->hcs_params3); buf[12] = HCS_U1_LATENCY(temp); put_unaligned_le16(HCS_U2_LATENCY(temp), &buf[13]); + /* Indicate whether the host has LTM support. */ + temp = xhci_readl(xhci, &xhci->cap_regs->hcc_params); + if (HCC_LTC(temp)) + buf[8] |= USB_LTM_SUPPORT; + spin_unlock_irqrestore(&xhci->lock, flags); return USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE; case GetPortStatus: @@ -645,6 +688,11 @@ /* Update Port Link State for super speed ports*/ if (hcd->speed == HCD_USB3) { xhci_hub_report_link_state(&status, temp); + /* + * Verify if all USB3 Ports Have entered U0 already. + * Delete Compliance Mode Timer if so. + */ + xhci_del_comp_mod_timer(xhci, temp, wIndex); } if (bus_state->port_c_suspend & (1 << wIndex)) status |= 1 << USB_PORT_FEAT_C_SUSPEND; @@ -714,12 +762,39 @@ break; case USB_PORT_FEAT_LINK_STATE: temp = xhci_readl(xhci, port_array[wIndex]); + + /* Disable port */ + if (link_state == USB_SS_PORT_LS_SS_DISABLED) { + xhci_dbg(xhci, "Disable port %d\n", wIndex); + temp = xhci_port_state_to_neutral(temp); + /* + * Clear all change bits, so that we get a new + * connection event. + */ + temp |= PORT_CSC | PORT_PEC | PORT_WRC | + PORT_OCC | PORT_RC | PORT_PLC | + PORT_CEC; + xhci_writel(xhci, temp | PORT_PE, + port_array[wIndex]); + temp = xhci_readl(xhci, port_array[wIndex]); + break; + } + + /* Put link in RxDetect (enable port) */ + if (link_state == USB_SS_PORT_LS_RX_DETECT) { + xhci_dbg(xhci, "Enable port %d\n", wIndex); + xhci_set_link_state(xhci, port_array, wIndex, + link_state); + temp = xhci_readl(xhci, port_array[wIndex]); + break; + } + /* Software should not attempt to set - * port link state above '5' (Rx.Detect) and the port + * port link state above '3' (U3) and the port * must be enabled. */ if ((temp & PORT_PE) == 0 || - (link_state > USB_SS_PORT_LS_RX_DETECT)) { + (link_state > USB_SS_PORT_LS_U3)) { xhci_warn(xhci, "Cannot set link state.\n"); goto error; } @@ -890,6 +965,7 @@ int max_ports; __le32 __iomem **port_array; struct xhci_bus_state *bus_state; + bool reset_change = false; max_ports = xhci_get_ports(hcd, &port_array); bus_state = &xhci->bus_state[hcd_index(hcd)]; @@ -921,6 +997,12 @@ buf[(i + 1) / 8] |= 1 << (i + 1) % 8; status = 1; } + if ((temp & PORT_RC)) + reset_change = true; + } + if (!status && !reset_change) { + xhci_dbg(xhci, "%s: stopping port polling.\n", __func__); + clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); } spin_unlock_irqrestore(&xhci->lock, flags); return status ? retval : 0; --- linux-3.5.0.orig/drivers/usb/host/ehci-pci.c +++ linux-3.5.0/drivers/usb/host/ehci-pci.c @@ -362,7 +362,8 @@ pdev->vendor == PCI_VENDOR_ID_INTEL && (pdev->device == 0x1E26 || pdev->device == 0x8C2D || - pdev->device == 0x8C26); + pdev->device == 0x8C26 || + pdev->device == 0x9C26); } static void ehci_enable_xhci_companion(void) --- linux-3.5.0.orig/drivers/usb/host/xhci-mem.c +++ linux-3.5.0/drivers/usb/host/xhci-mem.c @@ -205,7 +205,12 @@ next = xhci_segment_alloc(xhci, cycle_state, flags); if (!next) { - xhci_free_segments_for_ring(xhci, *first); + prev = *first; + while (prev) { + next = prev->next; + xhci_segment_free(xhci, prev); + prev = next; + } return -ENOMEM; } xhci_link_segments(xhci, prev, next, type); @@ -258,7 +263,7 @@ return ring; fail: - xhci_ring_free(xhci, ring); + kfree(ring); return NULL; } @@ -1245,6 +1250,8 @@ static unsigned int xhci_parse_microframe_interval(struct usb_device *udev, struct usb_host_endpoint *ep) { + if (ep->desc.bInterval == 0) + return 0; return xhci_microframes_to_exponent(udev, ep, ep->desc.bInterval, 0, 15); } @@ -1772,6 +1779,7 @@ { struct pci_dev *pdev = to_pci_dev(xhci_to_hcd(xhci)->self.controller); struct dev_info *dev_info, *next; + struct xhci_cd *cur_cd, *next_cd; unsigned long flags; int size; int i, j, num_ports; @@ -1795,6 +1803,11 @@ xhci_ring_free(xhci, xhci->cmd_ring); xhci->cmd_ring = NULL; xhci_dbg(xhci, "Freed command ring\n"); + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + } for (i = 1; i < MAX_HC_SLOTS; ++i) xhci_free_virt_device(xhci, i); @@ -2340,6 +2353,7 @@ xhci->cmd_ring = xhci_ring_alloc(xhci, 1, 1, TYPE_COMMAND, flags); if (!xhci->cmd_ring) goto fail; + INIT_LIST_HEAD(&xhci->cancel_cmd_list); xhci_dbg(xhci, "Allocated command ring at %p\n", xhci->cmd_ring); xhci_dbg(xhci, "First segment DMA is 0x%llx\n", (unsigned long long)xhci->cmd_ring->first_seg->dma); --- linux-3.5.0.orig/drivers/usb/host/xhci.c +++ linux-3.5.0/drivers/usb/host/xhci.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "xhci.h" @@ -51,7 +52,7 @@ * handshake done). There are two failure modes: "usec" have passed (major * hardware flakeout), or the register reads as all-ones (hardware removed). */ -static int handshake(struct xhci_hcd *xhci, void __iomem *ptr, +int handshake(struct xhci_hcd *xhci, void __iomem *ptr, u32 mask, u32 done, int usec) { u32 result; @@ -104,9 +105,10 @@ ret = handshake(xhci, &xhci->op_regs->status, STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC); - if (!ret) + if (!ret) { xhci->xhc_state |= XHCI_STATE_HALTED; - else + xhci->cmd_ring_state = CMD_RING_STATE_STOPPED; + } else xhci_warn(xhci, "Host not halted after %u microseconds.\n", XHCI_MAX_HALT_USEC); return ret; @@ -166,7 +168,7 @@ xhci_writel(xhci, command, &xhci->op_regs->command); ret = handshake(xhci, &xhci->op_regs->command, - CMD_RESET, 0, 250 * 1000); + CMD_RESET, 0, 10 * 1000 * 1000); if (ret) return ret; @@ -175,7 +177,8 @@ * xHCI cannot write to any doorbells or operational registers other * than status until the "Controller Not Ready" flag is cleared. */ - ret = handshake(xhci, &xhci->op_regs->status, STS_CNR, 0, 250 * 1000); + ret = handshake(xhci, &xhci->op_regs->status, + STS_CNR, 0, 10 * 1000 * 1000); for (i = 0; i < 2; ++i) { xhci->bus_state[i].port_c_suspend = 0; @@ -397,6 +400,98 @@ #endif +static void compliance_mode_recovery(unsigned long arg) +{ + struct xhci_hcd *xhci; + struct usb_hcd *hcd; + u32 temp; + int i; + + xhci = (struct xhci_hcd *)arg; + + for (i = 0; i < xhci->num_usb3_ports; i++) { + temp = xhci_readl(xhci, xhci->usb3_ports[i]); + if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) { + /* + * Compliance Mode Detected. Letting USB Core + * handle the Warm Reset + */ + xhci_dbg(xhci, "Compliance Mode Detected->Port %d!\n", + i + 1); + xhci_dbg(xhci, "Attempting Recovery routine!\n"); + hcd = xhci->shared_hcd; + + if (hcd->state == HC_STATE_SUSPENDED) + usb_hcd_resume_root_hub(hcd); + + usb_hcd_poll_rh_status(hcd); + } + } + + if (xhci->port_status_u0 != ((1 << xhci->num_usb3_ports)-1)) + mod_timer(&xhci->comp_mode_recovery_timer, + jiffies + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS)); +} + +/* + * Quirk to work around issue generated by the SN65LVPE502CP USB3.0 re-driver + * that causes ports behind that hardware to enter compliance mode sometimes. + * The quirk creates a timer that polls every 2 seconds the link state of + * each host controller's port and recovers it by issuing a Warm reset + * if Compliance mode is detected, otherwise the port will become "dead" (no + * device connections or disconnections will be detected anymore). Becasue no + * status event is generated when entering compliance mode (per xhci spec), + * this quirk is needed on systems that have the failing hardware installed. + */ +static void compliance_mode_recovery_timer_init(struct xhci_hcd *xhci) +{ + xhci->port_status_u0 = 0; + init_timer(&xhci->comp_mode_recovery_timer); + + xhci->comp_mode_recovery_timer.data = (unsigned long) xhci; + xhci->comp_mode_recovery_timer.function = compliance_mode_recovery; + xhci->comp_mode_recovery_timer.expires = jiffies + + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS); + + set_timer_slack(&xhci->comp_mode_recovery_timer, + msecs_to_jiffies(COMP_MODE_RCVRY_MSECS)); + add_timer(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Initialized.\n"); +} + +/* + * This function identifies the systems that have installed the SN65LVPE502CP + * USB3.0 re-driver and that need the Compliance Mode Quirk. + * Systems: + * Vendor: Hewlett-Packard -> System Models: Z420, Z620 and Z820 + */ +static bool compliance_mode_recovery_timer_quirk_check(void) +{ + const char *dmi_product_name, *dmi_sys_vendor; + + dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME); + dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR); + if (!dmi_product_name || !dmi_sys_vendor) + return false; + + if (!(strstr(dmi_sys_vendor, "Hewlett-Packard"))) + return false; + + if (strstr(dmi_product_name, "Z420") || + strstr(dmi_product_name, "Z620") || + strstr(dmi_product_name, "Z820") || + strstr(dmi_product_name, "Z1 Workstation")) + return true; + + return false; +} + +static int xhci_all_ports_seen_u0(struct xhci_hcd *xhci) +{ + return (xhci->port_status_u0 == ((1 << xhci->num_usb3_ports)-1)); +} + + /* * Initialize memory for HCD and xHC (one-time init). * @@ -420,6 +515,12 @@ retval = xhci_mem_init(xhci, GFP_KERNEL); xhci_dbg(xhci, "Finished xhci_init\n"); + /* Initializing Compliance Mode Recovery Data If Needed */ + if (compliance_mode_recovery_timer_quirk_check()) { + xhci->quirks |= XHCI_COMP_MODE_QUIRK; + compliance_mode_recovery_timer_init(xhci); + } + return retval; } @@ -484,6 +585,7 @@ return -ENODEV; } xhci->shared_hcd->state = HC_STATE_RUNNING; + xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; if (xhci->quirks & XHCI_NEC_HOST) xhci_ring_cmd_db(xhci); @@ -628,6 +730,11 @@ del_timer_sync(&xhci->event_ring_timer); #endif + /* Deleting Compliance Mode Recovery Timer */ + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && + (!(xhci_all_ports_seen_u0(xhci)))) + del_timer_sync(&xhci->comp_mode_recovery_timer); + if (xhci->quirks & XHCI_AMD_PLL_FIX) usb_amd_dev_put(); @@ -658,6 +765,9 @@ { struct xhci_hcd *xhci = hcd_to_xhci(hcd); + if (xhci->quirks & XHCI_SPURIOUS_REBOOT) + usb_disable_xhci_ports(to_pci_dev(hcd->self.controller)); + spin_lock_irq(&xhci->lock); xhci_halt(xhci); spin_unlock_irq(&xhci->lock); @@ -770,6 +880,11 @@ struct usb_hcd *hcd = xhci_to_hcd(xhci); u32 command; + /* 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); + del_timer_sync(&hcd->rh_timer); + spin_lock_irq(&xhci->lock); clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); clear_bit(HCD_FLAG_HW_ACCESSIBLE, &xhci->shared_hcd->flags); @@ -781,7 +896,7 @@ command &= ~CMD_RUN; xhci_writel(xhci, command, &xhci->op_regs->command); if (handshake(xhci, &xhci->op_regs->status, - STS_HALT, STS_HALT, 100*100)) { + STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC)) { xhci_warn(xhci, "WARN: xHC CMD_RUN timeout\n"); spin_unlock_irq(&xhci->lock); return -ETIMEDOUT; @@ -802,6 +917,16 @@ } spin_unlock_irq(&xhci->lock); + /* + * Deleting Compliance Mode Recovery Timer because the xHCI Host + * is about to be suspended. + */ + if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && + (!(xhci_all_ports_seen_u0(xhci)))) { + del_timer_sync(&xhci->comp_mode_recovery_timer); + xhci_dbg(xhci, "Compliance Mode Recovery Timer Deleted!\n"); + } + /* step 5: remove core well power */ /* synchronize irq when using MSI-X */ xhci_msix_sync_irqs(xhci); @@ -934,6 +1059,21 @@ usb_hcd_resume_root_hub(hcd); usb_hcd_resume_root_hub(xhci->shared_hcd); } + + /* + * If system is subject to the Quirk, Compliance Mode Timer needs to + * be re-initialized Always after a system resume. Ports are subject + * to suffer the Compliance Mode issue again. It doesn't matter if + * ports have entered previously to U0 before system's suspension. + */ + if (xhci->quirks & XHCI_COMP_MODE_QUIRK) + compliance_mode_recovery_timer_init(xhci); + + /* Re-enable port polling. */ + xhci_dbg(xhci, "%s: starting port polling.\n", __func__); + set_bit(HCD_FLAG_POLL_RH, &hcd->flags); + usb_hcd_poll_rh_status(hcd); + return retval; } #endif /* CONFIG_PM */ @@ -2123,7 +2263,7 @@ static bool xhci_is_sync_in_ep(unsigned int ep_type) { - return (ep_type == ISOC_IN_EP || ep_type != INT_IN_EP); + return (ep_type == ISOC_IN_EP || ep_type == INT_IN_EP); } static unsigned int xhci_get_ss_bw_consumed(struct xhci_bw_info *ep_bw) @@ -2396,6 +2536,7 @@ struct completion *cmd_completion; u32 *cmd_status; struct xhci_virt_device *virt_dev; + union xhci_trb *cmd_trb; spin_lock_irqsave(&xhci->lock, flags); virt_dev = xhci->devs[udev->slot_id]; @@ -2441,6 +2582,7 @@ } init_completion(cmd_completion); + cmd_trb = xhci->cmd_ring->dequeue; if (!ctx_change) ret = xhci_queue_configure_endpoint(xhci, in_ctx->dma, udev->slot_id, must_succeed); @@ -2462,14 +2604,17 @@ /* Wait for the configure endpoint command to complete */ timeleft = wait_for_completion_interruptible_timeout( cmd_completion, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for %s command\n", timeleft == 0 ? "Timeout" : "Signal", ctx_change == 0 ? "configure endpoint" : "evaluate context"); - /* FIXME cancel the configure endpoint command */ + /* cancel the configure endpoint command */ + ret = xhci_cancel_cmd(xhci, command, cmd_trb); + if (ret < 0) + return ret; return -ETIME; } @@ -3418,8 +3563,10 @@ unsigned long flags; int timeleft; int ret; + union xhci_trb *cmd_trb; spin_lock_irqsave(&xhci->lock, flags); + cmd_trb = xhci->cmd_ring->dequeue; ret = xhci_queue_slot_control(xhci, TRB_ENABLE_SLOT, 0); if (ret) { spin_unlock_irqrestore(&xhci->lock, flags); @@ -3431,12 +3578,12 @@ /* XXX: how much time for xHC slot assignment? */ timeleft = wait_for_completion_interruptible_timeout(&xhci->addr_dev, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for a slot\n", timeleft == 0 ? "Timeout" : "Signal"); - /* FIXME cancel the enable slot request */ - return 0; + /* cancel the enable slot request */ + return xhci_cancel_cmd(xhci, NULL, cmd_trb); } if (!xhci->slot_id) { @@ -3497,6 +3644,7 @@ struct xhci_slot_ctx *slot_ctx; struct xhci_input_control_ctx *ctrl_ctx; u64 temp_64; + union xhci_trb *cmd_trb; if (!udev->slot_id) { xhci_dbg(xhci, "Bad Slot ID %d\n", udev->slot_id); @@ -3535,6 +3683,7 @@ xhci_dbg_ctx(xhci, virt_dev->in_ctx, 2); spin_lock_irqsave(&xhci->lock, flags); + cmd_trb = xhci->cmd_ring->dequeue; ret = xhci_queue_address_device(xhci, virt_dev->in_ctx->dma, udev->slot_id); if (ret) { @@ -3547,7 +3696,7 @@ /* ctrl tx can take up to 5 sec; XXX: need more time for xHC? */ timeleft = wait_for_completion_interruptible_timeout(&xhci->addr_dev, - USB_CTRL_SET_TIMEOUT); + XHCI_CMD_DEFAULT_TIMEOUT); /* FIXME: From section 4.3.4: "Software shall be responsible for timing * the SetAddress() "recovery interval" required by USB and aborting the * command on a timeout. @@ -3555,7 +3704,10 @@ if (timeleft <= 0) { xhci_warn(xhci, "%s while waiting for address device command\n", timeleft == 0 ? "Timeout" : "Signal"); - /* FIXME cancel the address device command */ + /* cancel the address device command */ + ret = xhci_cancel_cmd(xhci, NULL, cmd_trb); + if (ret < 0) + return ret; return -ETIME; } @@ -3878,7 +4030,7 @@ static unsigned long long xhci_service_interval_to_ns( struct usb_endpoint_descriptor *desc) { - return (1 << (desc->bInterval - 1)) * 125 * 1000; + return (1ULL << (desc->bInterval - 1)) * 125 * 1000; } static u16 xhci_get_timeout_no_hub_lpm(struct usb_device *udev, @@ -3999,7 +4151,7 @@ (xhci_service_interval_to_ns(desc) > timeout_ns)) timeout_ns = xhci_service_interval_to_ns(desc); - u2_del_ns = udev->bos->ss_cap->bU2DevExitLat * 1000; + u2_del_ns = le16_to_cpu(udev->bos->ss_cap->bU2DevExitLat) * 1000ULL; if (u2_del_ns > timeout_ns) timeout_ns = u2_del_ns; --- linux-3.5.0.orig/drivers/usb/host/pci-quirks.h +++ linux-3.5.0/drivers/usb/host/pci-quirks.h @@ -10,10 +10,12 @@ void usb_amd_quirk_pll_enable(void); bool usb_is_intel_switchable_xhci(struct pci_dev *pdev); void usb_enable_xhci_ports(struct pci_dev *xhci_pdev); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); #else static inline void usb_amd_quirk_pll_disable(void) {} static inline void usb_amd_quirk_pll_enable(void) {} static inline void usb_amd_dev_put(void) {} +static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {} #endif /* CONFIG_PCI */ #endif /* __LINUX_USB_PCI_QUIRKS_H */ --- linux-3.5.0.orig/drivers/usb/host/xhci-pci.c +++ linux-3.5.0/drivers/usb/host/xhci-pci.c @@ -29,6 +29,7 @@ /* Device for a quirk */ #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000 +#define PCI_DEVICE_ID_FRESCO_LOGIC_FL1400 0x1400 #define PCI_VENDOR_ID_ETRON 0x1b6f #define PCI_DEVICE_ID_ASROCK_P67 0x7023 @@ -58,8 +59,10 @@ /* Look for vendor-specific quirks */ if (pdev->vendor == PCI_VENDOR_ID_FRESCO_LOGIC && - pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK) { - if (pdev->revision == 0x0) { + (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK || + pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_FL1400)) { + if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK && + pdev->revision == 0x0) { xhci->quirks |= XHCI_RESET_EP_QUIRK; xhci_dbg(xhci, "QUIRK: Fresco Logic xHC needs configure" " endpoint cmd after reset endpoint\n"); @@ -94,11 +97,22 @@ xhci->quirks |= XHCI_EP_LIMIT_QUIRK; xhci->limit_active_eps = 64; xhci->quirks |= XHCI_SW_BW_CHECKING; + /* + * PPT desktop boards DH77EB and DH77DF will power back on after + * a few seconds of being shutdown. The fix for this is to + * switch the ports from xHCI to EHCI on shutdown. We can't use + * DMI information to find those particular boards (since each + * vendor will change the board name), so we have to key off all + * PPT chipsets. + */ + xhci->quirks |= XHCI_SPURIOUS_REBOOT; + xhci->quirks |= XHCI_AVOID_BEI; } if (pdev->vendor == PCI_VENDOR_ID_ETRON && pdev->device == PCI_DEVICE_ID_ASROCK_P67) { xhci->quirks |= XHCI_RESET_ON_RESUME; xhci_dbg(xhci, "QUIRK: Resetting on resume\n"); + xhci->quirks |= XHCI_TRUST_TX_LENGTH; } if (pdev->vendor == PCI_VENDOR_ID_VIA) xhci->quirks |= XHCI_RESET_ON_RESUME; --- linux-3.5.0.orig/drivers/usb/host/pci-quirks.c +++ linux-3.5.0/drivers/usb/host/pci-quirks.c @@ -75,7 +75,9 @@ #define NB_PIF0_PWRDOWN_1 0x01100013 #define USB_INTEL_XUSB2PR 0xD0 +#define USB_INTEL_USB2PRM 0xD4 #define USB_INTEL_USB3_PSSEN 0xD8 +#define USB_INTEL_USB3PRM 0xDC static struct amd_chipset_info { struct pci_dev *nb_dev; @@ -543,7 +545,14 @@ /* Pegatron Lucid (Ordissimo AIRIS) */ .matches = { DMI_MATCH(DMI_BOARD_NAME, "M11JB"), - DMI_MATCH(DMI_BIOS_VERSION, "Lucid-GE-133"), + DMI_MATCH(DMI_BIOS_VERSION, "Lucid-"), + }, + }, + { + /* Pegatron Lucid (Ordissimo) */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Ordissimo"), + DMI_MATCH(DMI_BIOS_VERSION, "Lucid-"), }, }, { } @@ -714,6 +723,7 @@ } #define PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI 0x8C31 +#define PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI 0x9C31 bool usb_is_intel_ppt_switchable_xhci(struct pci_dev *pdev) { @@ -727,7 +737,8 @@ { return pdev->class == PCI_CLASS_SERIAL_USB_XHCI && pdev->vendor == PCI_VENDOR_ID_INTEL && - pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI; + (pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_XHCI || + pdev->device == PCI_DEVICE_ID_INTEL_LYNX_POINT_LP_XHCI); } bool usb_is_intel_switchable_xhci(struct pci_dev *pdev) @@ -769,13 +780,22 @@ "defaulting to EHCI.\n"); dev_warn(&xhci_pdev->dev, "USB 3.0 devices will work at USB 2.0 speeds.\n"); + usb_disable_xhci_ports(xhci_pdev); return; } - ports_available = 0xffffffff; + /* Read USB3PRM, the USB 3.0 Port Routing Mask Register + * Indicate the ports that can be changed from OS. + */ + pci_read_config_dword(xhci_pdev, USB_INTEL_USB3PRM, + &ports_available); + + dev_dbg(&xhci_pdev->dev, "Configurable ports to enable SuperSpeed: 0x%x\n", + ports_available); + /* Write USB3_PSSEN, the USB 3.0 Port SuperSpeed Enable - * Register, to turn on SuperSpeed terminations for all - * available ports. + * Register, to turn on SuperSpeed terminations for the + * switchable ports. */ pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, cpu_to_le32(ports_available)); @@ -785,7 +805,16 @@ dev_dbg(&xhci_pdev->dev, "USB 3.0 ports that are now enabled " "under xHCI: 0x%x\n", ports_available); - ports_available = 0xffffffff; + /* Read XUSB2PRM, xHCI USB 2.0 Port Routing Mask Register + * Indicate the USB 2.0 ports to be controlled by the xHCI host. + */ + + pci_read_config_dword(xhci_pdev, USB_INTEL_USB2PRM, + &ports_available); + + dev_dbg(&xhci_pdev->dev, "Configurable USB 2.0 ports to hand over to xCHI: 0x%x\n", + ports_available); + /* Write XUSB2PR, the xHC USB 2.0 Port Routing Register, to * switch the USB 2.0 power and data lines over to the xHCI * host. @@ -800,6 +829,13 @@ } EXPORT_SYMBOL_GPL(usb_enable_xhci_ports); +void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) +{ + pci_write_config_dword(xhci_pdev, USB_INTEL_USB3_PSSEN, 0x0); + pci_write_config_dword(xhci_pdev, USB_INTEL_XUSB2PR, 0x0); +} +EXPORT_SYMBOL_GPL(usb_disable_xhci_ports); + /** * PCI Quirks for xHCI. * @@ -815,12 +851,12 @@ void __iomem *op_reg_base; u32 val; int timeout; + int len = pci_resource_len(pdev, 0); if (!mmio_resource_enabled(pdev, 0)) return; - base = ioremap_nocache(pci_resource_start(pdev, 0), - pci_resource_len(pdev, 0)); + base = ioremap_nocache(pci_resource_start(pdev, 0), len); if (base == NULL) return; @@ -830,9 +866,17 @@ */ ext_cap_offset = xhci_find_next_cap_offset(base, XHCI_HCC_PARAMS_OFFSET); do { + if ((ext_cap_offset + sizeof(val)) > len) { + /* We're reading garbage from the controller */ + dev_warn(&pdev->dev, + "xHCI controller failing to respond"); + return; + } + if (!ext_cap_offset) /* We've reached the end of the extended capabilities */ goto hc_init; + val = readl(base + ext_cap_offset); if (XHCI_EXT_CAPS_ID(val) == XHCI_EXT_CAPS_LEGACY) break; @@ -863,9 +907,10 @@ /* Disable any BIOS SMIs and clear all SMI events*/ writel(val, base + ext_cap_offset + XHCI_LEGACY_CONTROL_OFFSET); +hc_init: if (usb_is_intel_switchable_xhci(pdev)) usb_enable_xhci_ports(pdev); -hc_init: + op_reg_base = base + XHCI_HC_LENGTH(readl(base)); /* Wait for the host controller to be ready before writing any --- linux-3.5.0.orig/drivers/usb/host/ohci-q.c +++ linux-3.5.0/drivers/usb/host/ohci-q.c @@ -1128,6 +1128,25 @@ while (td) { struct td *td_next = td->next_dl_td; + struct ed *ed = td->ed; + + /* + * Some OHCI controllers (NVIDIA for sure, maybe others) + * occasionally forget to add TDs to the done queue. Since + * TDs for a given endpoint are always processed in order, + * if we find a TD on the donelist then all of its + * predecessors must be finished as well. + */ + for (;;) { + struct td *td2; + + td2 = list_first_entry(&ed->td_list, struct td, + td_list); + if (td2 == td) + break; + takeback_td(ohci, td2); + } + takeback_td(ohci, td); td = td_next; } --- linux-3.5.0.orig/drivers/usb/host/xhci.h +++ linux-3.5.0/drivers/usb/host/xhci.h @@ -1256,6 +1256,16 @@ union xhci_trb *last_trb; }; +/* xHCI command default timeout value */ +#define XHCI_CMD_DEFAULT_TIMEOUT (5 * HZ) + +/* command descriptor */ +struct xhci_cd { + struct list_head cancel_cmd_list; + struct xhci_command *command; + union xhci_trb *cmd_trb; +}; + struct xhci_dequeue_state { struct xhci_segment *new_deq_seg; union xhci_trb *new_deq_ptr; @@ -1421,6 +1431,11 @@ /* data structures */ struct xhci_device_context_array *dcbaa; struct xhci_ring *cmd_ring; + unsigned int cmd_ring_state; +#define CMD_RING_STATE_RUNNING (1 << 0) +#define CMD_RING_STATE_ABORTED (1 << 1) +#define CMD_RING_STATE_STOPPED (1 << 2) + struct list_head cancel_cmd_list; unsigned int cmd_ring_reserved_trbs; struct xhci_ring *event_ring; struct xhci_erst erst; @@ -1494,6 +1509,9 @@ #define XHCI_TRUST_TX_LENGTH (1 << 10) #define XHCI_LPM_SUPPORT (1 << 11) #define XHCI_INTEL_HOST (1 << 12) +#define XHCI_SPURIOUS_REBOOT (1 << 13) +#define XHCI_COMP_MODE_QUIRK (1 << 14) +#define XHCI_AVOID_BEI (1 << 15) unsigned int num_active_eps; unsigned int limit_active_eps; /* There are two roothubs to keep track of bus suspend info for */ @@ -1510,6 +1528,11 @@ unsigned sw_lpm_support:1; /* support xHCI 1.0 spec USB2 hardware LPM */ unsigned hw_lpm_support:1; + /* Compliance Mode Recovery Data */ + struct timer_list comp_mode_recovery_timer; + u32 port_status_u0; +/* Compliance Mode Timer Triggered every 2 seconds */ +#define COMP_MODE_RCVRY_MSECS 2000 }; /* convert between an HCD pointer and the corresponding EHCI_HCD */ @@ -1537,6 +1560,8 @@ dev_err(xhci_to_hcd(xhci)->self.controller , fmt , ## args) #define xhci_warn(xhci, fmt, args...) \ dev_warn(xhci_to_hcd(xhci)->self.controller , fmt , ## args) +#define xhci_warn_ratelimited(xhci, fmt, args...) \ + dev_warn_ratelimited(xhci_to_hcd(xhci)->self.controller , fmt , ## args) /* TODO: copied from ehci.h - can be refactored? */ /* xHCI spec says all registers are little endian */ @@ -1695,6 +1720,8 @@ /* xHCI host controller glue */ typedef void (*xhci_get_quirks_t)(struct device *, struct xhci_hcd *); +int handshake(struct xhci_hcd *xhci, void __iomem *ptr, + u32 mask, u32 done, int usec); void xhci_quiesce(struct xhci_hcd *xhci); int xhci_halt(struct xhci_hcd *xhci); int xhci_reset(struct xhci_hcd *xhci); @@ -1785,6 +1812,8 @@ unsigned int slot_id, unsigned int ep_index, struct xhci_dequeue_state *deq_state); void xhci_stop_endpoint_command_watchdog(unsigned long arg); +int xhci_cancel_cmd(struct xhci_hcd *xhci, struct xhci_command *command, + union xhci_trb *cmd_trb); void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id, unsigned int ep_index, unsigned int stream_id); --- linux-3.5.0.orig/drivers/usb/host/xhci-plat.c +++ linux-3.5.0/drivers/usb/host/xhci-plat.c @@ -118,7 +118,7 @@ goto put_hcd; } - hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len); + hcd->regs = ioremap_nocache(hcd->rsrc_start, hcd->rsrc_len); if (!hcd->regs) { dev_dbg(&pdev->dev, "error mapping memory\n"); ret = -EFAULT; --- linux-3.5.0.orig/drivers/usb/host/ehci-sched.c +++ linux-3.5.0/drivers/usb/host/ehci-sched.c @@ -236,7 +236,7 @@ } static const unsigned char -max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 30, 0 }; +max_tt_usecs[] = { 125, 125, 125, 125, 125, 125, 125, 25 }; /* carryover low/fullspeed bandwidth that crosses uframe boundries */ static inline void carryover_tt_bandwidth(unsigned short tt_usecs[8]) --- linux-3.5.0.orig/drivers/usb/host/xhci-ring.c +++ linux-3.5.0/drivers/usb/host/xhci-ring.c @@ -145,29 +145,37 @@ */ static void inc_deq(struct xhci_hcd *xhci, struct xhci_ring *ring) { - union xhci_trb *next; unsigned long long addr; ring->deq_updates++; - /* If this is not event ring, there is one more usable TRB */ + /* + * If this is not event ring, and the dequeue pointer + * is not on a link TRB, there is one more usable TRB + */ if (ring->type != TYPE_EVENT && !last_trb(xhci, ring, ring->deq_seg, ring->dequeue)) ring->num_trbs_free++; - next = ++(ring->dequeue); - /* Update the dequeue pointer further if that was a link TRB or we're at - * the end of an event ring segment (which doesn't have link TRBS) - */ - while (last_trb(xhci, ring, ring->deq_seg, next)) { - if (ring->type == TYPE_EVENT && last_trb_on_last_seg(xhci, - ring, ring->deq_seg, next)) { - ring->cycle_state = (ring->cycle_state ? 0 : 1); - } - ring->deq_seg = ring->deq_seg->next; - ring->dequeue = ring->deq_seg->trbs; - next = ring->dequeue; - } + do { + /* + * Update the dequeue pointer further if that was a link TRB or + * we're at the end of an event ring segment (which doesn't have + * link TRBS) + */ + if (last_trb(xhci, ring, ring->deq_seg, ring->dequeue)) { + if (ring->type == TYPE_EVENT && + last_trb_on_last_seg(xhci, ring, + ring->deq_seg, ring->dequeue)) { + ring->cycle_state = (ring->cycle_state ? 0 : 1); + } + ring->deq_seg = ring->deq_seg->next; + ring->dequeue = ring->deq_seg->trbs; + } else { + ring->dequeue++; + } + } while (last_trb(xhci, ring, ring->deq_seg, ring->dequeue)); + addr = (unsigned long long) xhci_trb_virt_to_dma(ring->deq_seg, ring->dequeue); } @@ -272,12 +280,123 @@ /* Ring the host controller doorbell after placing a command on the ring */ void xhci_ring_cmd_db(struct xhci_hcd *xhci) { + if (!(xhci->cmd_ring_state & CMD_RING_STATE_RUNNING)) + return; + xhci_dbg(xhci, "// Ding dong!\n"); xhci_writel(xhci, DB_VALUE_HOST, &xhci->dba->doorbell[0]); /* Flush PCI posted writes */ xhci_readl(xhci, &xhci->dba->doorbell[0]); } +static int xhci_abort_cmd_ring(struct xhci_hcd *xhci) +{ + u64 temp_64; + int ret; + + xhci_dbg(xhci, "Abort command ring\n"); + + if (!(xhci->cmd_ring_state & CMD_RING_STATE_RUNNING)) { + xhci_dbg(xhci, "The command ring isn't running, " + "Have the command ring been stopped?\n"); + return 0; + } + + temp_64 = xhci_read_64(xhci, &xhci->op_regs->cmd_ring); + if (!(temp_64 & CMD_RING_RUNNING)) { + xhci_dbg(xhci, "Command ring had been stopped\n"); + return 0; + } + xhci->cmd_ring_state = CMD_RING_STATE_ABORTED; + xhci_write_64(xhci, temp_64 | CMD_RING_ABORT, + &xhci->op_regs->cmd_ring); + + /* Section 4.6.1.2 of xHCI 1.0 spec says software should + * time the completion od all xHCI commands, including + * the Command Abort operation. If software doesn't see + * CRR negated in a timely manner (e.g. longer than 5 + * seconds), then it should assume that the there are + * larger problems with the xHC and assert HCRST. + */ + ret = handshake(xhci, &xhci->op_regs->cmd_ring, + CMD_RING_RUNNING, 0, 5 * 1000 * 1000); + if (ret < 0) { + xhci_err(xhci, "Stopped the command ring failed, " + "maybe the host is dead\n"); + xhci->xhc_state |= XHCI_STATE_DYING; + xhci_quiesce(xhci); + xhci_halt(xhci); + return -ESHUTDOWN; + } + + return 0; +} + +static int xhci_queue_cd(struct xhci_hcd *xhci, + struct xhci_command *command, + union xhci_trb *cmd_trb) +{ + struct xhci_cd *cd; + cd = kzalloc(sizeof(struct xhci_cd), GFP_ATOMIC); + if (!cd) + return -ENOMEM; + INIT_LIST_HEAD(&cd->cancel_cmd_list); + + cd->command = command; + cd->cmd_trb = cmd_trb; + list_add_tail(&cd->cancel_cmd_list, &xhci->cancel_cmd_list); + + return 0; +} + +/* + * Cancel the command which has issue. + * + * Some commands may hang due to waiting for acknowledgement from + * usb device. It is outside of the xHC's ability to control and + * will cause the command ring is blocked. When it occurs software + * should intervene to recover the command ring. + * See Section 4.6.1.1 and 4.6.1.2 + */ +int xhci_cancel_cmd(struct xhci_hcd *xhci, struct xhci_command *command, + union xhci_trb *cmd_trb) +{ + int retval = 0; + unsigned long flags; + + spin_lock_irqsave(&xhci->lock, flags); + + if (xhci->xhc_state & XHCI_STATE_DYING) { + xhci_warn(xhci, "Abort the command ring," + " but the xHCI is dead.\n"); + retval = -ESHUTDOWN; + goto fail; + } + + /* queue the cmd desriptor to cancel_cmd_list */ + retval = xhci_queue_cd(xhci, command, cmd_trb); + if (retval) { + xhci_warn(xhci, "Queuing command descriptor failed.\n"); + goto fail; + } + + /* abort command ring */ + retval = xhci_abort_cmd_ring(xhci); + if (retval) { + xhci_err(xhci, "Abort command ring failed\n"); + if (unlikely(retval == -ESHUTDOWN)) { + spin_unlock_irqrestore(&xhci->lock, flags); + usb_hc_died(xhci_to_hcd(xhci)->primary_hcd); + xhci_dbg(xhci, "xHCI host controller is dead.\n"); + return retval; + } + } + +fail: + spin_unlock_irqrestore(&xhci->lock, flags); + return retval; +} + void xhci_ring_ep_doorbell(struct xhci_hcd *xhci, unsigned int slot_id, unsigned int ep_index, @@ -1051,6 +1170,20 @@ } } +/* Complete the command and detele it from the devcie's command queue. + */ +static void xhci_complete_cmd_in_cmd_wait_list(struct xhci_hcd *xhci, + struct xhci_command *command, u32 status) +{ + command->status = status; + list_del(&command->cmd_list); + if (command->completion) + complete(command->completion); + else + xhci_free_command(xhci, command); +} + + /* Check to see if a command in the device's command queue matches this one. * Signal the completion or free the command, and return 1. Return 0 if the * completed command isn't at the head of the command list. @@ -1069,15 +1202,155 @@ if (xhci->cmd_ring->dequeue != command->command_trb) return 0; - command->status = GET_COMP_CODE(le32_to_cpu(event->status)); - list_del(&command->cmd_list); - if (command->completion) - complete(command->completion); - else - xhci_free_command(xhci, command); + xhci_complete_cmd_in_cmd_wait_list(xhci, command, + GET_COMP_CODE(le32_to_cpu(event->status))); return 1; } +/* + * Finding the command trb need to be cancelled and modifying it to + * NO OP command. And if the command is in device's command wait + * list, finishing and freeing it. + * + * If we can't find the command trb, we think it had already been + * executed. + */ +static void xhci_cmd_to_noop(struct xhci_hcd *xhci, struct xhci_cd *cur_cd) +{ + struct xhci_segment *cur_seg; + union xhci_trb *cmd_trb; + u32 cycle_state; + + if (xhci->cmd_ring->dequeue == xhci->cmd_ring->enqueue) + return; + + /* find the current segment of command ring */ + cur_seg = find_trb_seg(xhci->cmd_ring->first_seg, + xhci->cmd_ring->dequeue, &cycle_state); + + if (!cur_seg) { + xhci_warn(xhci, "Command ring mismatch, dequeue = %p %llx (dma)\n", + xhci->cmd_ring->dequeue, + (unsigned long long) + xhci_trb_virt_to_dma(xhci->cmd_ring->deq_seg, + xhci->cmd_ring->dequeue)); + xhci_debug_ring(xhci, xhci->cmd_ring); + xhci_dbg_ring_ptrs(xhci, xhci->cmd_ring); + return; + } + + /* find the command trb matched by cd from command ring */ + for (cmd_trb = xhci->cmd_ring->dequeue; + cmd_trb != xhci->cmd_ring->enqueue; + next_trb(xhci, xhci->cmd_ring, &cur_seg, &cmd_trb)) { + /* If the trb is link trb, continue */ + if (TRB_TYPE_LINK_LE32(cmd_trb->generic.field[3])) + continue; + + if (cur_cd->cmd_trb == cmd_trb) { + + /* If the command in device's command list, we should + * finish it and free the command structure. + */ + if (cur_cd->command) + xhci_complete_cmd_in_cmd_wait_list(xhci, + cur_cd->command, COMP_CMD_STOP); + + /* get cycle state from the origin command trb */ + cycle_state = le32_to_cpu(cmd_trb->generic.field[3]) + & TRB_CYCLE; + + /* modify the command trb to NO OP command */ + cmd_trb->generic.field[0] = 0; + cmd_trb->generic.field[1] = 0; + cmd_trb->generic.field[2] = 0; + cmd_trb->generic.field[3] = cpu_to_le32( + TRB_TYPE(TRB_CMD_NOOP) | cycle_state); + break; + } + } +} + +static void xhci_cancel_cmd_in_cd_list(struct xhci_hcd *xhci) +{ + struct xhci_cd *cur_cd, *next_cd; + + if (list_empty(&xhci->cancel_cmd_list)) + return; + + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + xhci_cmd_to_noop(xhci, cur_cd); + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + } +} + +/* + * traversing the cancel_cmd_list. If the command descriptor according + * to cmd_trb is found, the function free it and return 1, otherwise + * return 0. + */ +static int xhci_search_cmd_trb_in_cd_list(struct xhci_hcd *xhci, + union xhci_trb *cmd_trb) +{ + struct xhci_cd *cur_cd, *next_cd; + + if (list_empty(&xhci->cancel_cmd_list)) + return 0; + + list_for_each_entry_safe(cur_cd, next_cd, + &xhci->cancel_cmd_list, cancel_cmd_list) { + if (cur_cd->cmd_trb == cmd_trb) { + if (cur_cd->command) + xhci_complete_cmd_in_cmd_wait_list(xhci, + cur_cd->command, COMP_CMD_STOP); + list_del(&cur_cd->cancel_cmd_list); + kfree(cur_cd); + return 1; + } + } + + return 0; +} + +/* + * If the cmd_trb_comp_code is COMP_CMD_ABORT, we just check whether the + * trb pointed by the command ring dequeue pointer is the trb we want to + * cancel or not. And if the cmd_trb_comp_code is COMP_CMD_STOP, we will + * traverse the cancel_cmd_list to trun the all of the commands according + * to command descriptor to NO-OP trb. + */ +static int handle_stopped_cmd_ring(struct xhci_hcd *xhci, + int cmd_trb_comp_code) +{ + int cur_trb_is_good = 0; + + /* Searching the cmd trb pointed by the command ring dequeue + * pointer in command descriptor list. If it is found, free it. + */ + cur_trb_is_good = xhci_search_cmd_trb_in_cd_list(xhci, + xhci->cmd_ring->dequeue); + + if (cmd_trb_comp_code == COMP_CMD_ABORT) + xhci->cmd_ring_state = CMD_RING_STATE_STOPPED; + else if (cmd_trb_comp_code == COMP_CMD_STOP) { + /* traversing the cancel_cmd_list and canceling + * the command according to command descriptor + */ + xhci_cancel_cmd_in_cd_list(xhci); + + xhci->cmd_ring_state = CMD_RING_STATE_RUNNING; + /* + * ring command ring doorbell again to restart the + * command ring + */ + if (xhci->cmd_ring->dequeue != xhci->cmd_ring->enqueue) + xhci_ring_cmd_db(xhci); + } + return cur_trb_is_good; +} + static void handle_cmd_completion(struct xhci_hcd *xhci, struct xhci_event_cmd *event) { @@ -1103,6 +1376,22 @@ xhci->error_bitmask |= 1 << 5; return; } + + if ((GET_COMP_CODE(le32_to_cpu(event->status)) == COMP_CMD_ABORT) || + (GET_COMP_CODE(le32_to_cpu(event->status)) == COMP_CMD_STOP)) { + /* If the return value is 0, we think the trb pointed by + * command ring dequeue pointer is a good trb. The good + * trb means we don't want to cancel the trb, but it have + * been stopped by host. So we should handle it normally. + * Otherwise, driver should invoke inc_deq() and return. + */ + if (handle_stopped_cmd_ring(xhci, + GET_COMP_CODE(le32_to_cpu(event->status)))) { + inc_deq(xhci, xhci->cmd_ring); + return; + } + } + switch (le32_to_cpu(xhci->cmd_ring->dequeue->generic.field[3]) & TRB_TYPE_BITMASK) { case TRB_TYPE(TRB_ENABLE_SLOT): @@ -1409,7 +1698,7 @@ faked_port_index + 1); if (slot_id && xhci->devs[slot_id]) xhci_ring_device(xhci, slot_id); - if (bus_state->port_remote_wakeup && (1 << faked_port_index)) { + if (bus_state->port_remote_wakeup & (1 << faked_port_index)) { bus_state->port_remote_wakeup &= ~(1 << faked_port_index); xhci_test_and_clear_bit(xhci, port_array, @@ -1436,6 +1725,15 @@ if (bogus_port_status) return; + /* + * xHCI port-status-change events occur when the "or" of all the + * status-change bits in the portsc register changes from 0 to 1. + * New status changes won't cause an event if any other change + * bits are still set. When an event occurs, switch over to + * polling to avoid losing status changes. + */ + xhci_dbg(xhci, "%s: starting port polling.\n", __func__); + set_bit(HCD_FLAG_POLL_RH, &hcd->flags); spin_unlock(&xhci->lock); /* Pass this up to the core */ usb_hcd_poll_rh_status(hcd); @@ -2073,8 +2371,8 @@ if (xhci->quirks & XHCI_TRUST_TX_LENGTH) trb_comp_code = COMP_SHORT_TX; else - xhci_warn(xhci, "WARN Successful completion on short TX: " - "needs XHCI_TRUST_TX_LENGTH quirk?\n"); + xhci_warn_ratelimited(xhci, + "WARN Successful completion on short TX: needs XHCI_TRUST_TX_LENGTH quirk?\n"); case COMP_SHORT_TX: break; case COMP_STOP: @@ -2289,6 +2587,8 @@ (trb_comp_code != COMP_STALL && trb_comp_code != COMP_BABBLE)) xhci_urb_free_priv(xhci, urb_priv); + else + kfree(urb_priv); usb_hcd_unlink_urb_from_ep(bus_to_hcd(urb->dev->bus), urb); if ((urb->actual_length != urb->transfer_buffer_length && @@ -2780,11 +3080,11 @@ } /* - * For xHCI 1.0 host controllers, TD size is the number of packets remaining in - * the TD (*not* including this TRB). + * For xHCI 1.0 host controllers, TD size is the number of max packet sized + * packets remaining in the TD (*not* including this TRB). * * Total TD packet count = total_packet_count = - * roundup(TD size in bytes / wMaxPacketSize) + * DIV_ROUND_UP(TD size in bytes / wMaxPacketSize) * * Packets transferred up to and including this TRB = packets_transferred = * rounddown(total bytes transferred including this TRB / wMaxPacketSize) @@ -2792,24 +3092,27 @@ * TD size = total_packet_count - packets_transferred * * It must fit in bits 21:17, so it can't be bigger than 31. + * The last TRB in a TD must have the TD size set to zero. */ - static u32 xhci_v1_0_td_remainder(int running_total, int trb_buff_len, - unsigned int total_packet_count, struct urb *urb) + unsigned int total_packet_count, struct urb *urb, + unsigned int num_trbs_left) { int packets_transferred; /* One TRB with a zero-length data packet. */ - if (running_total == 0 && trb_buff_len == 0) + if (num_trbs_left == 0 || (running_total == 0 && trb_buff_len == 0)) return 0; /* All the TRB queueing functions don't count the current TRB in * running_total. */ packets_transferred = (running_total + trb_buff_len) / - usb_endpoint_maxp(&urb->ep->desc); + GET_MAX_PACKET(usb_endpoint_maxp(&urb->ep->desc)); - return xhci_td_remainder(total_packet_count - packets_transferred); + if ((total_packet_count - packets_transferred) > 31) + return 31 << 17; + return (total_packet_count - packets_transferred) << 17; } static int queue_bulk_sg_tx(struct xhci_hcd *xhci, gfp_t mem_flags, @@ -2836,7 +3139,7 @@ num_trbs = count_sg_trbs_needed(xhci, urb); num_sgs = urb->num_mapped_sgs; - total_packet_count = roundup(urb->transfer_buffer_length, + total_packet_count = DIV_ROUND_UP(urb->transfer_buffer_length, usb_endpoint_maxp(&urb->ep->desc)); trb_buff_len = prepare_transfer(xhci, xhci->devs[slot_id], @@ -2919,7 +3222,8 @@ running_total); } else { remainder = xhci_v1_0_td_remainder(running_total, - trb_buff_len, total_packet_count, urb); + trb_buff_len, total_packet_count, urb, + num_trbs - 1); } length_field = TRB_LEN(trb_buff_len) | remainder | @@ -3027,7 +3331,7 @@ start_cycle = ep_ring->cycle_state; running_total = 0; - total_packet_count = roundup(urb->transfer_buffer_length, + total_packet_count = DIV_ROUND_UP(urb->transfer_buffer_length, usb_endpoint_maxp(&urb->ep->desc)); /* How much data is in the first TRB? */ addr = (u64) urb->transfer_dma; @@ -3073,7 +3377,8 @@ running_total); } else { remainder = xhci_v1_0_td_remainder(running_total, - trb_buff_len, total_packet_count, urb); + trb_buff_len, total_packet_count, urb, + num_trbs - 1); } length_field = TRB_LEN(trb_buff_len) | remainder | @@ -3336,8 +3641,9 @@ addr = start_addr + urb->iso_frame_desc[i].offset; td_len = urb->iso_frame_desc[i].length; td_remain_len = td_len; - total_packet_count = roundup(td_len, - usb_endpoint_maxp(&urb->ep->desc)); + total_packet_count = DIV_ROUND_UP(td_len, + GET_MAX_PACKET( + usb_endpoint_maxp(&urb->ep->desc))); /* A zero-length transfer still involves at least one packet. */ if (total_packet_count == 0) total_packet_count++; @@ -3359,9 +3665,11 @@ td = urb_priv->td[i]; for (j = 0; j < trbs_per_td; j++) { u32 remainder = 0; - field = TRB_TBC(burst_count) | TRB_TLBPC(residue); + field = 0; if (first_trb) { + field = TRB_TBC(burst_count) | + TRB_TLBPC(residue); /* Queue the isoc TRB */ field |= TRB_TYPE(TRB_ISOC); /* Assume URB_ISO_ASAP is set */ @@ -3392,7 +3700,9 @@ } else { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; - if (xhci->hci_version == 0x100) { + if (xhci->hci_version == 0x100 && + !(xhci->quirks & + XHCI_AVOID_BEI)) { /* Set BEI bit except for the last td */ if (i < num_tds - 1) field |= TRB_BEI; @@ -3413,7 +3723,8 @@ } else { remainder = xhci_v1_0_td_remainder( running_total, trb_buff_len, - total_packet_count, urb); + total_packet_count, urb, + (trbs_per_td - j - 1)); } length_field = TRB_LEN(trb_buff_len) | remainder | --- linux-3.5.0.orig/drivers/usb/host/ehci-q.c +++ linux-3.5.0/drivers/usb/host/ehci-q.c @@ -128,9 +128,17 @@ else { qtd = list_entry (qh->qtd_list.next, struct ehci_qtd, qtd_list); - /* first qtd may already be partially processed */ - if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) + /* + * first qtd may already be partially processed. + * If we come here during unlink, the QH overlay region + * might have reference to the just unlinked qtd. The + * qtd is updated in qh_completions(). Update the QH + * overlay here. + */ + if (cpu_to_hc32(ehci, qtd->qtd_dma) == qh->hw->hw_current) { + qh->hw->hw_qtd_next = qtd->hw_next; qtd = NULL; + } } if (qtd) --- linux-3.5.0.orig/drivers/usb/chipidea/host.c +++ linux-3.5.0/drivers/usb/chipidea/host.c @@ -128,6 +128,9 @@ else ci->hcd = hcd; + if (ci->udc_driver->flags & CI13XXX_DISABLE_STREAMING) + hw_write(ci, OP_USBMODE, USBMODE_CI_SDIS, USBMODE_CI_SDIS); + return ret; } --- linux-3.5.0.orig/drivers/usb/chipidea/udc.c +++ linux-3.5.0/drivers/usb/chipidea/udc.c @@ -77,8 +77,7 @@ } /** - * hw_device_state: enables/disables interrupts & starts/stops device (execute - * without interruption) + * hw_device_state: enables/disables interrupts (execute without interruption) * @dma: 0 => disable, !0 => enable and set dma engine * * This function returns an error code @@ -92,7 +91,6 @@ USBi_UI|USBi_UEI|USBi_PCI|USBi_URI|USBi_SLI); hw_write(udc, OP_USBCMD, USBCMD_RS, USBCMD_RS); } else { - hw_write(udc, OP_USBCMD, USBCMD_RS, 0); hw_write(udc, OP_USBINTR, ~0, 0); } return 0; @@ -773,10 +771,7 @@ { struct ci13xxx_req *mReq, *mReqTemp; struct ci13xxx_ep *mEpTemp = mEp; - int uninitialized_var(retval); - - if (list_empty(&mEp->qh.queue)) - return -EINVAL; + int retval = 0; list_for_each_entry_safe(mReq, mReqTemp, &mEp->qh.queue, queue) { @@ -1419,6 +1414,21 @@ return -ENOTSUPP; } +/* Change Data+ pullup status + * this func is used by usb_gadget_connect/disconnet + */ +static int ci13xxx_pullup(struct usb_gadget *_gadget, int is_on) +{ + struct ci13xxx *ci = container_of(_gadget, struct ci13xxx, gadget); + + if (is_on) + hw_write(ci, OP_USBCMD, USBCMD_RS, USBCMD_RS); + else + hw_write(ci, OP_USBCMD, USBCMD_RS, 0); + + return 0; +} + static int ci13xxx_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver); static int ci13xxx_stop(struct usb_gadget *gadget, @@ -1431,6 +1441,7 @@ static const struct usb_gadget_ops usb_gadget_ops = { .vbus_session = ci13xxx_vbus_session, .wakeup = ci13xxx_wakeup, + .pullup = ci13xxx_pullup, .vbus_draw = ci13xxx_vbus_draw, .udc_start = ci13xxx_start, .udc_stop = ci13xxx_stop, @@ -1454,7 +1465,12 @@ mEp->ep.name = mEp->name; mEp->ep.ops = &usb_ep_ops; - mEp->ep.maxpacket = CTRL_PAYLOAD_MAX; + /* + * for ep0: maxP defined in desc, for other + * eps, maxP is set by epautoconfig() called + * by gadget layer + */ + mEp->ep.maxpacket = (unsigned short)~0; INIT_LIST_HEAD(&mEp->qh.queue); mEp->qh.ptr = dma_pool_alloc(udc->qh_pool, GFP_KERNEL, @@ -1474,6 +1490,7 @@ else udc->ep0in = mEp; + mEp->ep.maxpacket = CTRL_PAYLOAD_MAX; continue; } @@ -1483,6 +1500,17 @@ return retval; } +static void destroy_eps(struct ci13xxx *udc) +{ + int i; + + for (i = 0; i < udc->hw_ep_max; i++) { + struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i]; + + dma_pool_free(udc->qh_pool, mEp->qh.ptr, mEp->qh.dma); + } +} + /** * ci13xxx_start: register a gadget driver * @gadget: our gadget @@ -1692,7 +1720,7 @@ if (udc->udc_driver->flags & CI13XXX_REQUIRE_TRANSCEIVER) { if (udc->transceiver == NULL) { retval = -ENODEV; - goto free_pools; + goto destroy_eps; } } @@ -1730,7 +1758,7 @@ remove_trans: if (udc->transceiver) { - otg_set_peripheral(udc->transceiver->otg, &udc->gadget); + otg_set_peripheral(udc->transceiver->otg, NULL); usb_put_transceiver(udc->transceiver); } @@ -1742,6 +1770,8 @@ put_transceiver: if (udc->transceiver) usb_put_transceiver(udc->transceiver); +destroy_eps: + destroy_eps(udc); free_pools: dma_pool_destroy(udc->td_pool); free_qh_pool: @@ -1756,18 +1786,12 @@ */ static void udc_stop(struct ci13xxx *udc) { - int i; - if (udc == NULL) return; usb_del_gadget_udc(&udc->gadget); - for (i = 0; i < udc->hw_ep_max; i++) { - struct ci13xxx_ep *mEp = &udc->ci13xxx_ep[i]; - - dma_pool_free(udc->qh_pool, mEp->qh.ptr, mEp->qh.dma); - } + destroy_eps(udc); dma_pool_destroy(udc->td_pool); dma_pool_destroy(udc->qh_pool); --- linux-3.5.0.orig/drivers/usb/class/cdc-acm.c +++ linux-3.5.0/drivers/usb/class/cdc-acm.c @@ -788,6 +788,10 @@ tmp.flags = ASYNC_LOW_LATENCY; tmp.xmit_fifo_size = acm->writesize; tmp.baud_base = le32_to_cpu(acm->line.dwDTERate); + tmp.close_delay = acm->port.close_delay / 10; + tmp.closing_wait = acm->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : + acm->port.closing_wait / 10; if (copy_to_user(info, &tmp, sizeof(tmp))) return -EFAULT; @@ -795,6 +799,37 @@ return 0; } +static int set_serial_info(struct acm *acm, + struct serial_struct __user *newinfo) +{ + struct serial_struct new_serial; + unsigned int closing_wait, close_delay; + int retval = 0; + + if (copy_from_user(&new_serial, newinfo, sizeof(new_serial))) + return -EFAULT; + + close_delay = new_serial.close_delay * 10; + closing_wait = new_serial.closing_wait == ASYNC_CLOSING_WAIT_NONE ? + ASYNC_CLOSING_WAIT_NONE : new_serial.closing_wait * 10; + + mutex_lock(&acm->port.mutex); + + if (!capable(CAP_SYS_ADMIN)) { + if ((close_delay != acm->port.close_delay) || + (closing_wait != acm->port.closing_wait)) + retval = -EPERM; + else + retval = -EOPNOTSUPP; + } else { + acm->port.close_delay = close_delay; + acm->port.closing_wait = closing_wait; + } + + mutex_unlock(&acm->port.mutex); + return retval; +} + static int acm_tty_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg) { @@ -805,6 +840,9 @@ case TIOCGSERIAL: /* gets serial port data */ rv = get_serial_info(acm, (struct serial_struct __user *) arg); break; + case TIOCSSERIAL: + rv = set_serial_info(acm, (struct serial_struct __user *) arg); + break; } return rv; @@ -818,10 +856,6 @@ 2500000, 3000000, 3500000, 4000000 }; -static const __u8 acm_tty_size[] = { - 5, 6, 7, 8 -}; - static void acm_tty_set_termios(struct tty_struct *tty, struct ktermios *termios_old) { @@ -835,7 +869,21 @@ newline.bParityType = termios->c_cflag & PARENB ? (termios->c_cflag & PARODD ? 1 : 2) + (termios->c_cflag & CMSPAR ? 2 : 0) : 0; - newline.bDataBits = acm_tty_size[(termios->c_cflag & CSIZE) >> 4]; + switch (termios->c_cflag & CSIZE) { + case CS5: + newline.bDataBits = 5; + break; + case CS6: + newline.bDataBits = 6; + break; + case CS7: + newline.bDataBits = 7; + break; + case CS8: + default: + newline.bDataBits = 8; + break; + } /* FIXME: Needs to clear unsupported bits in the termios */ acm->clocal = ((termios->c_cflag & CLOCAL) != 0); @@ -1104,7 +1152,8 @@ } - if (data_interface->cur_altsetting->desc.bNumEndpoints < 2) + if (data_interface->cur_altsetting->desc.bNumEndpoints < 2 || + control_interface->cur_altsetting->desc.bNumEndpoints == 0) return -EINVAL; epctrl = &control_interface->cur_altsetting->endpoint[0].desc; @@ -1233,7 +1282,7 @@ if (usb_endpoint_xfer_int(epwrite)) usb_fill_int_urb(snd->urb, usb_dev, - usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress), + usb_sndintpipe(usb_dev, epwrite->bEndpointAddress), NULL, acm->writesize, acm_write_bulk, snd, epwrite->bInterval); else usb_fill_bulk_urb(snd->urb, usb_dev, @@ -1550,6 +1599,12 @@ Maybe we should define a new quirk for this. */ }, + { USB_DEVICE(0x0572, 0x1340), /* Conexant CX93010-2x UCMxx */ + .driver_info = NO_UNION_NORMAL, + }, + { USB_DEVICE(0x05f9, 0x4002), /* PSC Scanning, Magellan 800i */ + .driver_info = NO_UNION_NORMAL, + }, { USB_DEVICE(0x1bbb, 0x0003), /* Alcatel OT-I650 */ .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ }, --- linux-3.5.0.orig/drivers/usb/class/cdc-wdm.c +++ linux-3.5.0/drivers/usb/class/cdc-wdm.c @@ -134,12 +134,14 @@ /* return intfdata if we own the interface, else look up intf in the list */ static struct wdm_device *wdm_find_device(struct usb_interface *intf) { - struct wdm_device *desc = NULL; + struct wdm_device *desc; spin_lock(&wdm_device_list_lock); list_for_each_entry(desc, &wdm_device_list, device_list) if (desc->intf == intf) - break; + goto found; + desc = NULL; +found: spin_unlock(&wdm_device_list_lock); return desc; @@ -147,12 +149,14 @@ static struct wdm_device *wdm_find_device_by_minor(int minor) { - struct wdm_device *desc = NULL; + struct wdm_device *desc; spin_lock(&wdm_device_list_lock); list_for_each_entry(desc, &wdm_device_list, device_list) if (desc->intf->minor == minor) - break; + goto found; + desc = NULL; +found: spin_unlock(&wdm_device_list_lock); return desc; --- linux-3.5.0.orig/drivers/usb/gadget/tcm_usb_gadget.h +++ linux-3.5.0/drivers/usb/gadget/tcm_usb_gadget.h @@ -16,12 +16,14 @@ #define UASP_SS_EP_COMP_LOG_STREAMS 4 #define UASP_SS_EP_COMP_NUM_STREAMS (1 << UASP_SS_EP_COMP_LOG_STREAMS) -#define USB_G_STR_MANUFACTOR 1 -#define USB_G_STR_PRODUCT 2 -#define USB_G_STR_SERIAL 3 -#define USB_G_STR_CONFIG 4 -#define USB_G_STR_INT_UAS 5 -#define USB_G_STR_INT_BBB 6 +enum { + USB_G_STR_MANUFACTOR, + USB_G_STR_PRODUCT, + USB_G_STR_SERIAL, + USB_G_STR_CONFIG, + USB_G_STR_INT_UAS, + USB_G_STR_INT_BBB, +}; #define USB_G_ALT_INT_BBB 0 #define USB_G_ALT_INT_UAS 1 --- linux-3.5.0.orig/drivers/usb/gadget/f_subset.c +++ linux-3.5.0/drivers/usb/gadget/f_subset.c @@ -370,9 +370,9 @@ usb_free_descriptors(f->hs_descriptors); /* we might as well release our claims on endpoints */ - if (geth->port.out_ep->desc) + if (geth->port.out_ep) geth->port.out_ep->driver_data = NULL; - if (geth->port.in_ep->desc) + if (geth->port.in_ep) geth->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_ecm.c +++ linux-3.5.0/drivers/usb/gadget/f_ecm.c @@ -808,9 +808,9 @@ /* we might as well release our claims on endpoints */ if (ecm->notify) ecm->notify->driver_data = NULL; - if (ecm->port.out_ep->desc) + if (ecm->port.out_ep) ecm->port.out_ep->driver_data = NULL; - if (ecm->port.in_ep->desc) + if (ecm->port.in_ep) ecm->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_midi.c +++ linux-3.5.0/drivers/usb/gadget/f_midi.c @@ -416,6 +416,7 @@ midi->id = NULL; usb_free_descriptors(f->descriptors); + usb_free_descriptors(f->hs_descriptors); kfree(midi); } --- linux-3.5.0.orig/drivers/usb/gadget/f_rndis.c +++ linux-3.5.0/drivers/usb/gadget/f_rndis.c @@ -803,9 +803,9 @@ /* we might as well release our claims on endpoints */ if (rndis->notify) rndis->notify->driver_data = NULL; - if (rndis->port.out_ep->desc) + if (rndis->port.out_ep) rndis->port.out_ep->driver_data = NULL; - if (rndis->port.in_ep->desc) + if (rndis->port.in_ep) rndis->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/f_eem.c +++ linux-3.5.0/drivers/usb/gadget/f_eem.c @@ -319,10 +319,9 @@ if (f->hs_descriptors) usb_free_descriptors(f->hs_descriptors); - /* we might as well release our claims on endpoints */ - if (eem->port.out_ep->desc) + if (eem->port.out_ep) eem->port.out_ep->driver_data = NULL; - if (eem->port.in_ep->desc) + if (eem->port.in_ep) eem->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/printer.c +++ linux-3.5.0/drivers/usb/gadget/printer.c @@ -141,18 +141,14 @@ * descriptors are built on demand. */ -#define STRING_MANUFACTURER 1 -#define STRING_PRODUCT 2 -#define STRING_SERIALNUM 3 +#define STRING_MANUFACTURER 0 +#define STRING_PRODUCT 1 +#define STRING_SERIALNUM 2 /* holds our biggest descriptor */ #define USB_DESC_BUFSIZE 256 #define USB_BUFSIZE 8192 -/* This device advertises one configuration. */ -#define DEV_CONFIG_VALUE 1 -#define PRINTER_INTERFACE 0 - static struct usb_device_descriptor device_desc = { .bLength = sizeof device_desc, .bDescriptorType = USB_DT_DEVICE, @@ -162,16 +158,12 @@ .bDeviceProtocol = 0, .idVendor = cpu_to_le16(PRINTER_VENDOR_NUM), .idProduct = cpu_to_le16(PRINTER_PRODUCT_NUM), - .iManufacturer = STRING_MANUFACTURER, - .iProduct = STRING_PRODUCT, - .iSerialNumber = STRING_SERIALNUM, .bNumConfigurations = 1 }; static struct usb_interface_descriptor intf_desc = { .bLength = sizeof intf_desc, .bDescriptorType = USB_DT_INTERFACE, - .bInterfaceNumber = PRINTER_INTERFACE, .bNumEndpoints = 2, .bInterfaceClass = USB_CLASS_PRINTER, .bInterfaceSubClass = 1, /* Printer Sub-Class */ @@ -260,9 +252,9 @@ /* static strings, in UTF-8 */ static struct usb_string strings [] = { - { STRING_MANUFACTURER, manufacturer, }, - { STRING_PRODUCT, product_desc, }, - { STRING_SERIALNUM, serial_num, }, + [STRING_MANUFACTURER].s = manufacturer, + [STRING_PRODUCT].s = product_desc, + [STRING_SERIALNUM].s = serial_num, { } /* end of list */ }; @@ -871,25 +863,13 @@ int result = 0; /* Free the current interface */ - switch (dev->interface) { - case PRINTER_INTERFACE: - printer_reset_interface(dev); - break; - } + printer_reset_interface(dev); - switch (number) { - case PRINTER_INTERFACE: - result = set_printer_interface(dev); - if (result) { - printer_reset_interface(dev); - } else { - dev->interface = PRINTER_INTERFACE; - } - break; - default: - result = -EINVAL; - /* FALL THROUGH */ - } + result = set_printer_interface(dev); + if (result) + printer_reset_interface(dev); + else + dev->interface = number; if (!result) INFO(dev, "Using interface %x\n", number); @@ -972,7 +952,7 @@ switch (ctrl->bRequest) { case 0: /* Get the IEEE-1284 PNP String */ /* Only one printer interface is supported. */ - if ((wIndex>>8) != PRINTER_INTERFACE) + if ((wIndex>>8) != dev->interface) break; value = (pnp_string[0]<<8)|pnp_string[1]; @@ -983,7 +963,7 @@ case 1: /* Get Port Status */ /* Only one printer interface is supported. */ - if (wIndex != PRINTER_INTERFACE) + if (wIndex != dev->interface) break; *(u8 *)req->buf = dev->printer_status; @@ -992,7 +972,7 @@ case 2: /* Soft Reset */ /* Only one printer interface is supported. */ - if (wIndex != PRINTER_INTERFACE) + if (wIndex != dev->interface) break; printer_soft_reset(dev); @@ -1020,6 +1000,37 @@ static int __init printer_func_bind(struct usb_configuration *c, struct usb_function *f) { + struct printer_dev *dev = container_of(f, struct printer_dev, function); + struct usb_composite_dev *cdev = c->cdev; + struct usb_ep *in_ep, *out_ep; + int id; + + id = usb_interface_id(c, f); + if (id < 0) + return id; + intf_desc.bInterfaceNumber = id; + + /* all we really need is bulk IN/OUT */ + in_ep = usb_ep_autoconfig(cdev->gadget, &fs_ep_in_desc); + if (!in_ep) { +autoconf_fail: + dev_err(&cdev->gadget->dev, "can't autoconfigure on %s\n", + cdev->gadget->name); + return -ENODEV; + } + in_ep->driver_data = in_ep; /* claim */ + + out_ep = usb_ep_autoconfig(cdev->gadget, &fs_ep_out_desc); + if (!out_ep) + goto autoconf_fail; + out_ep->driver_data = out_ep; /* claim */ + + /* assumes that all endpoints are dual-speed */ + hs_ep_in_desc.bEndpointAddress = fs_ep_in_desc.bEndpointAddress; + hs_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress; + + dev->in_ep = in_ep; + dev->out_ep = out_ep; return 0; } @@ -1035,7 +1046,8 @@ int ret = -ENOTSUPP; if (!alt) - ret = set_interface(dev, PRINTER_INTERFACE); + ret = set_interface(dev, intf); + return ret; } @@ -1107,13 +1119,14 @@ { struct usb_gadget *gadget = c->cdev->gadget; struct printer_dev *dev; - struct usb_ep *in_ep, *out_ep; int status = -ENOMEM; int gcnum; size_t len; u32 i; struct usb_request *req; + usb_ep_autoconfig_reset(gadget); + dev = &usb_printer_gadget; dev->function.name = shortname; @@ -1125,6 +1138,10 @@ dev->function.set_alt = printer_func_set_alt; dev->function.disable = printer_func_disable; + status = usb_add_function(c, &dev->function); + if (status) + return status; + /* Setup the sysfs files for the printer gadget. */ dev->pdev = device_create(usb_gadget_class, NULL, g_printer_devno, NULL, "g_printer"); @@ -1169,26 +1186,6 @@ pnp_string[0] = (len >> 8) & 0xFF; pnp_string[1] = len & 0xFF; - /* all we really need is bulk IN/OUT */ - usb_ep_autoconfig_reset(gadget); - in_ep = usb_ep_autoconfig(gadget, &fs_ep_in_desc); - if (!in_ep) { -autoconf_fail: - dev_err(&gadget->dev, "can't autoconfigure on %s\n", - gadget->name); - return -ENODEV; - } - in_ep->driver_data = in_ep; /* claim */ - - out_ep = usb_ep_autoconfig(gadget, &fs_ep_out_desc); - if (!out_ep) - goto autoconf_fail; - out_ep->driver_data = out_ep; /* claim */ - - /* assumes that all endpoints are dual-speed */ - hs_ep_in_desc.bEndpointAddress = fs_ep_in_desc.bEndpointAddress; - hs_ep_out_desc.bEndpointAddress = fs_ep_out_desc.bEndpointAddress; - usb_gadget_set_selfpowered(gadget); if (gadget->is_otg) { @@ -1215,9 +1212,6 @@ dev->current_rx_bytes = 0; dev->current_rx_buf = NULL; - dev->in_ep = in_ep; - dev->out_ep = out_ep; - for (i = 0; i < QLEN; i++) { req = printer_req_alloc(dev->in_ep, USB_BUFSIZE, GFP_KERNEL); if (!req) { @@ -1250,8 +1244,6 @@ dev->gadget = gadget; INFO(dev, "%s, version: " DRIVER_VERSION "\n", driver_desc); - INFO(dev, "using %s, OUT %s IN %s\n", gadget->name, out_ep->name, - in_ep->name); return 0; fail: @@ -1266,7 +1258,17 @@ static int __init printer_bind(struct usb_composite_dev *cdev) { - return usb_add_config(cdev, &printer_cfg_driver, printer_bind_config); + int ret; + + ret = usb_string_ids_tab(cdev, strings); + if (ret < 0) + return ret; + device_desc.iManufacturer = strings[STRING_MANUFACTURER].id; + device_desc.iProduct = strings[STRING_PRODUCT].id; + device_desc.iSerialNumber = strings[STRING_SERIALNUM].id; + + ret = usb_add_config(cdev, &printer_cfg_driver, printer_bind_config); + return ret; } static struct usb_composite_driver printer_driver = { --- linux-3.5.0.orig/drivers/usb/gadget/tcm_usb_gadget.c +++ linux-3.5.0/drivers/usb/gadget/tcm_usb_gadget.c @@ -1983,7 +1983,6 @@ .bInterfaceClass = USB_CLASS_MASS_STORAGE, .bInterfaceSubClass = USB_SC_SCSI, .bInterfaceProtocol = USB_PR_BULK, - .iInterface = USB_G_STR_INT_UAS, }; static struct usb_interface_descriptor uasp_intf_desc = { @@ -1994,7 +1993,6 @@ .bInterfaceClass = USB_CLASS_MASS_STORAGE, .bInterfaceSubClass = USB_SC_SCSI, .bInterfaceProtocol = USB_PR_UAS, - .iInterface = USB_G_STR_INT_BBB, }; static struct usb_endpoint_descriptor uasp_bi_desc = { @@ -2163,6 +2161,7 @@ (struct usb_descriptor_header *) &uasp_status_pipe_desc, (struct usb_descriptor_header *) &uasp_fs_cmd_desc, (struct usb_descriptor_header *) &uasp_cmd_pipe_desc, + NULL, }; static struct usb_descriptor_header *uasp_hs_function_desc[] = { @@ -2215,20 +2214,16 @@ .bDeviceClass = USB_CLASS_PER_INTERFACE, .idVendor = cpu_to_le16(UAS_VENDOR_ID), .idProduct = cpu_to_le16(UAS_PRODUCT_ID), - .iManufacturer = USB_G_STR_MANUFACTOR, - .iProduct = USB_G_STR_PRODUCT, - .iSerialNumber = USB_G_STR_SERIAL, - .bNumConfigurations = 1, }; static struct usb_string usbg_us_strings[] = { - { USB_G_STR_MANUFACTOR, "Target Manufactor"}, - { USB_G_STR_PRODUCT, "Target Product"}, - { USB_G_STR_SERIAL, "000000000001"}, - { USB_G_STR_CONFIG, "default config"}, - { USB_G_STR_INT_UAS, "USB Attached SCSI"}, - { USB_G_STR_INT_BBB, "Bulk Only Transport"}, + [USB_G_STR_MANUFACTOR].s = "Target Manufactor", + [USB_G_STR_PRODUCT].s = "Target Product", + [USB_G_STR_SERIAL].s = "000000000001", + [USB_G_STR_CONFIG].s = "default config", + [USB_G_STR_INT_UAS].s = "USB Attached SCSI", + [USB_G_STR_INT_BBB].s = "Bulk Only Transport", { }, }; @@ -2250,7 +2245,6 @@ static struct usb_configuration usbg_config_driver = { .label = "Linux Target", .bConfigurationValue = 1, - .iConfiguration = USB_G_STR_CONFIG, .bmAttributes = USB_CONFIG_ATT_SELFPOWER, }; @@ -2423,6 +2417,9 @@ fu->function.disable = usbg_disable; fu->tpg = the_only_tpg_I_currently_have; + bot_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_BBB].id; + uasp_intf_desc.iInterface = usbg_us_strings[USB_G_STR_INT_UAS].id; + ret = usb_add_function(c, &fu->function); if (ret) goto err; @@ -2437,6 +2434,17 @@ { int ret; + ret = usb_string_ids_tab(cdev, usbg_us_strings); + if (ret) + return ret; + + usbg_device_desc.iManufacturer = + usbg_us_strings[USB_G_STR_MANUFACTOR].id; + usbg_device_desc.iProduct = usbg_us_strings[USB_G_STR_PRODUCT].id; + usbg_device_desc.iSerialNumber = usbg_us_strings[USB_G_STR_SERIAL].id; + usbg_config_driver.iConfiguration = + usbg_us_strings[USB_G_STR_CONFIG].id; + ret = usb_add_config(cdev, &usbg_config_driver, usbg_cfg_bind); return 0; --- linux-3.5.0.orig/drivers/usb/gadget/at91_udc.c +++ linux-3.5.0/drivers/usb/gadget/at91_udc.c @@ -475,8 +475,7 @@ unsigned long flags; if (!_ep || !ep - || !desc || ep->ep.desc - || _ep->name == ep0name + || !desc || _ep->name == ep0name || desc->bDescriptorType != USB_DT_ENDPOINT || (maxpacket = usb_endpoint_maxp(desc)) == 0 || maxpacket > ep->maxpacket) { @@ -530,7 +529,6 @@ tmp |= AT91_UDP_EPEDS; __raw_writel(tmp, ep->creg); - ep->ep.desc = desc; ep->ep.maxpacket = maxpacket; /* @@ -1634,7 +1632,6 @@ udc = container_of(gadget, struct at91_udc, gadget); udc->driver = driver; udc->gadget.dev.driver = &driver->driver; - dev_set_drvdata(&udc->gadget.dev, &driver->driver); udc->enabled = 1; udc->selfpowered = 1; @@ -1655,7 +1652,6 @@ spin_unlock_irqrestore(&udc->lock, flags); udc->gadget.dev.driver = NULL; - dev_set_drvdata(&udc->gadget.dev, NULL); udc->driver = NULL; DBG("unbound from %s\n", driver->driver.name); @@ -1702,7 +1698,7 @@ int retval; struct resource *res; - if (!dev->platform_data) { + if (!dev->platform_data && !pdev->dev.of_node) { /* small (so we copy it) but critical! */ DBG("missing platform_data\n"); return -ENODEV; --- linux-3.5.0.orig/drivers/usb/gadget/f_phonet.c +++ linux-3.5.0/drivers/usb/gadget/f_phonet.c @@ -531,7 +531,7 @@ req = usb_ep_alloc_request(fp->out_ep, GFP_KERNEL); if (!req) - goto err; + goto err_req; req->complete = pn_rx_complete; fp->out_reqv[i] = req; @@ -540,14 +540,18 @@ /* Outgoing USB requests */ fp->in_req = usb_ep_alloc_request(fp->in_ep, GFP_KERNEL); if (!fp->in_req) - goto err; + goto err_req; INFO(cdev, "USB CDC Phonet function\n"); INFO(cdev, "using %s, OUT %s, IN %s\n", cdev->gadget->name, fp->out_ep->name, fp->in_ep->name); return 0; +err_req: + for (i = 0; i < phonet_rxq_size && fp->out_reqv[i]; i++) + usb_ep_free_request(fp->out_ep, fp->out_reqv[i]); err: + if (fp->out_ep) fp->out_ep->driver_data = NULL; if (fp->in_ep) --- linux-3.5.0.orig/drivers/usb/gadget/u_ether.c +++ linux-3.5.0/drivers/usb/gadget/u_ether.c @@ -669,6 +669,8 @@ spin_lock_irqsave(&dev->lock, flags); if (dev->port_usb) { struct gether *link = dev->port_usb; + const struct usb_endpoint_descriptor *in; + const struct usb_endpoint_descriptor *out; if (link->close) link->close(link); @@ -682,10 +684,14 @@ * their own pace; the network stack can handle old packets. * For the moment we leave this here, since it works. */ + in = link->in_ep->desc; + out = link->out_ep->desc; usb_ep_disable(link->in_ep); usb_ep_disable(link->out_ep); if (netif_carrier_ok(net)) { DBG(dev, "host still using in/out endpoints\n"); + link->in_ep->desc = in; + link->out_ep->desc = out; usb_ep_enable(link->in_ep); usb_ep_enable(link->out_ep); } @@ -798,12 +804,6 @@ SET_ETHTOOL_OPS(net, &ops); - /* two kinds of host-initiated state changes: - * - iff DATA transfer is active, carrier is "on" - * - tx queueing enabled if open *and* carrier is "on" - */ - netif_carrier_off(net); - dev->gadget = g; SET_NETDEV_DEV(net, &g->dev); SET_NETDEV_DEVTYPE(net, &gadget_type); @@ -817,6 +817,12 @@ INFO(dev, "HOST MAC %pM\n", dev->host_mac); the_dev = dev; + + /* two kinds of host-initiated state changes: + * - iff DATA transfer is active, carrier is "on" + * - tx queueing enabled if open *and* carrier is "on" + */ + netif_carrier_off(net); } return status; --- linux-3.5.0.orig/drivers/usb/gadget/f_uvc.c +++ linux-3.5.0/drivers/usb/gadget/f_uvc.c @@ -335,7 +335,6 @@ return -ENOMEM; video->parent = &cdev->gadget->dev; - video->minor = -1; video->fops = &uvc_v4l2_fops; video->release = video_device_release; strncpy(video->name, cdev->gadget->name, sizeof(video->name)); @@ -462,23 +461,12 @@ INFO(cdev, "uvc_function_unbind\n"); - if (uvc->vdev) { - if (uvc->vdev->minor == -1) - video_device_release(uvc->vdev); - else - video_unregister_device(uvc->vdev); - uvc->vdev = NULL; - } - - if (uvc->control_ep) - uvc->control_ep->driver_data = NULL; - if (uvc->video.ep) - uvc->video.ep->driver_data = NULL; + video_unregister_device(uvc->vdev); + uvc->control_ep->driver_data = NULL; + uvc->video.ep->driver_data = NULL; - if (uvc->control_req) { - usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); - kfree(uvc->control_buf); - } + usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); + kfree(uvc->control_buf); kfree(f->descriptors); kfree(f->hs_descriptors); @@ -563,7 +551,22 @@ return 0; error: - uvc_function_unbind(c, f); + if (uvc->vdev) + video_device_release(uvc->vdev); + + if (uvc->control_ep) + uvc->control_ep->driver_data = NULL; + if (uvc->video.ep) + uvc->video.ep->driver_data = NULL; + + if (uvc->control_req) { + usb_ep_free_request(cdev->gadget->ep0, uvc->control_req); + kfree(uvc->control_buf); + } + + kfree(f->descriptors); + kfree(f->hs_descriptors); + kfree(f->ss_descriptors); return ret; } --- linux-3.5.0.orig/drivers/usb/gadget/f_ncm.c +++ linux-3.5.0/drivers/usb/gadget/f_ncm.c @@ -1259,9 +1259,9 @@ /* we might as well release our claims on endpoints */ if (ncm->notify) ncm->notify->driver_data = NULL; - if (ncm->port.out_ep->desc) + if (ncm->port.out_ep) ncm->port.out_ep->driver_data = NULL; - if (ncm->port.in_ep->desc) + if (ncm->port.in_ep) ncm->port.in_ep->driver_data = NULL; ERROR(cdev, "%s: can't bind, err %d\n", f->name, status); --- linux-3.5.0.orig/drivers/usb/gadget/dummy_hcd.c +++ linux-3.5.0/drivers/usb/gadget/dummy_hcd.c @@ -126,10 +126,7 @@ static const char *const ep_name[] = { ep0name, /* everyone has ep0 */ - /* act like a net2280: high speed, six configurable endpoints */ - "ep-a", "ep-b", "ep-c", "ep-d", "ep-e", "ep-f", - - /* or like pxa250: fifteen fixed function endpoints */ + /* act like a pxa250: fifteen fixed function endpoints */ "ep1in-bulk", "ep2out-bulk", "ep3in-iso", "ep4out-iso", "ep5in-int", "ep6in-bulk", "ep7out-bulk", "ep8in-iso", "ep9out-iso", "ep10in-int", "ep11in-bulk", "ep12out-bulk", "ep13in-iso", "ep14out-iso", @@ -137,6 +134,10 @@ /* or like sa1100: two fixed function endpoints */ "ep1out-bulk", "ep2in-bulk", + + /* and now some generic EPs so we have enough in multi config */ + "ep3out", "ep4in", "ep5out", "ep6out", "ep7in", "ep8out", "ep9in", + "ep10out", "ep11out", "ep12in", "ep13out", "ep14in", "ep15out", }; #define DUMMY_ENDPOINTS ARRAY_SIZE(ep_name) @@ -1916,6 +1917,27 @@ return retval; } +/* usb 3.0 root hub device descriptor */ +struct { + struct usb_bos_descriptor bos; + struct usb_ss_cap_descriptor ss_cap; +} __packed usb3_bos_desc = { + + .bos = { + .bLength = USB_DT_BOS_SIZE, + .bDescriptorType = USB_DT_BOS, + .wTotalLength = cpu_to_le16(sizeof(usb3_bos_desc)), + .bNumDeviceCaps = 1, + }, + .ss_cap = { + .bLength = USB_DT_USB_SS_CAP_SIZE, + .bDescriptorType = USB_DT_DEVICE_CAPABILITY, + .bDevCapabilityType = USB_SS_CAP_TYPE, + .wSpeedSupported = cpu_to_le16(USB_5GBPS_OPERATION), + .bFunctionalitySupport = ilog2(USB_5GBPS_OPERATION), + }, +}; + static inline void ss_hub_descriptor(struct usb_hub_descriptor *desc) { @@ -2006,6 +2028,18 @@ else hub_descriptor((struct usb_hub_descriptor *) buf); break; + + case DeviceRequest | USB_REQ_GET_DESCRIPTOR: + if (hcd->speed != HCD_USB3) + goto error; + + if ((wValue >> 8) != USB_DT_BOS) + goto error; + + memcpy(buf, &usb3_bos_desc, sizeof(usb3_bos_desc)); + retval = sizeof(usb3_bos_desc); + break; + case GetHubStatus: *(__le32 *) buf = cpu_to_le32(0); break; @@ -2503,10 +2537,8 @@ hs_hcd->has_tt = 1; retval = usb_add_hcd(hs_hcd, 0, 0); - if (retval != 0) { - usb_put_hcd(hs_hcd); - return retval; - } + if (retval) + goto put_usb2_hcd; if (mod_data.is_super_speed) { ss_hcd = usb_create_shared_hcd(&dummy_hcd, &pdev->dev, @@ -2525,6 +2557,8 @@ put_usb3_hcd: usb_put_hcd(ss_hcd); dealloc_usb2_hcd: + usb_remove_hcd(hs_hcd); +put_usb2_hcd: usb_put_hcd(hs_hcd); the_controller.hs_hcd = the_controller.ss_hcd = NULL; return retval; --- linux-3.5.0.orig/drivers/usb/dwc3/core.c +++ linux-3.5.0/drivers/usb/dwc3/core.c @@ -429,16 +429,21 @@ dev_err(dev, "missing IRQ\n"); return -ENODEV; } - dwc->xhci_resources[1] = *res; + dwc->xhci_resources[1].start = res->start; + dwc->xhci_resources[1].end = res->end; + dwc->xhci_resources[1].flags = res->flags; + dwc->xhci_resources[1].name = res->name; res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { dev_err(dev, "missing memory resource\n"); return -ENODEV; } - dwc->xhci_resources[0] = *res; + dwc->xhci_resources[0].start = res->start; dwc->xhci_resources[0].end = dwc->xhci_resources[0].start + DWC3_XHCI_REGS_END; + dwc->xhci_resources[0].flags = res->flags; + dwc->xhci_resources[0].name = res->name; /* * Request memory region but exclude xHCI regs, --- linux-3.5.0.orig/drivers/usb/dwc3/gadget.c +++ linux-3.5.0/drivers/usb/dwc3/gadget.c @@ -231,6 +231,7 @@ if (((dep->busy_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) dep->busy_slot++; + req->queued = false; } list_del(&req->list); req->trb = NULL; @@ -238,8 +239,11 @@ if (req->request.status == -EINPROGRESS) req->request.status = status; - usb_gadget_unmap_request(&dwc->gadget, &req->request, - req->direction); + if (dwc->ep0_bounced && dep->number == 0) + dwc->ep0_bounced = false; + else + usb_gadget_unmap_request(&dwc->gadget, &req->request, + req->direction); dev_dbg(dwc->dev, "request %p from %s completed %d/%d ===> %d\n", req, dep->name, req->request.actual, @@ -707,21 +711,18 @@ struct dwc3 *dwc = dep->dwc; struct dwc3_trb *trb; - unsigned int cur_slot; - dev_vdbg(dwc->dev, "%s: req %p dma %08llx length %d%s%s\n", dep->name, req, (unsigned long long) dma, length, last ? " last" : "", chain ? " chain" : ""); - trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; - cur_slot = dep->free_slot; - dep->free_slot++; - /* Skip the LINK-TRB on ISOC */ - if (((cur_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && + if (((dep->free_slot & DWC3_TRB_MASK) == DWC3_TRB_NUM - 1) && usb_endpoint_xfer_isoc(dep->endpoint.desc)) - return; + dep->free_slot++; + + trb = &dep->trb_pool[dep->free_slot & DWC3_TRB_MASK]; + dep->free_slot++; if (!req->trb) { dwc3_gadget_move_request_queued(req); @@ -741,8 +742,7 @@ case USB_ENDPOINT_XFER_ISOC: trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST; - /* IOC every DWC3_TRB_NUM / 4 so we can refill */ - if (!(cur_slot % (DWC3_TRB_NUM / 4))) + if (!req->request.no_interrupt) trb->ctrl |= DWC3_TRB_CTRL_IOC; break; @@ -1505,6 +1505,7 @@ if (epnum == 0 || epnum == 1) { dep->endpoint.maxpacket = 512; + dep->endpoint.maxburst = 1; dep->endpoint.ops = &dwc3_gadget_ep0_ops; if (!epnum) dwc->gadget.ep0 = &dep->endpoint; @@ -1829,6 +1830,7 @@ ret = dwc3_send_gadget_ep_cmd(dwc, dep->number, cmd, ¶ms); WARN_ON_ONCE(ret); dep->res_trans_idx = 0; + dep->flags &= ~DWC3_EP_BUSY; } } --- linux-3.5.0.orig/drivers/usb/dwc3/ep0.c +++ linux-3.5.0/drivers/usb/dwc3/ep0.c @@ -702,7 +702,6 @@ transferred = min_t(u32, ur->length, transfer_size - length); memcpy(ur->buf, dwc->ep0_bounce, transferred); - dwc->ep0_bounced = false; } else { transferred = ur->length - length; } --- linux-3.5.0.orig/drivers/usb/serial/mos7840.c +++ linux-3.5.0/drivers/usb/serial/mos7840.c @@ -219,12 +219,10 @@ int port_num; /*Actual port number in the device(1,2,etc) */ struct urb *write_urb; /* write URB for this port */ struct urb *read_urb; /* read URB for this port */ - struct urb *int_urb; __u8 shadowLCR; /* last LCR value received */ __u8 shadowMCR; /* last MCR value received */ char open; char open_ports; - char zombie; wait_queue_head_t wait_chase; /* for handling sleeping while waiting for chase to finish */ wait_queue_head_t delta_msr_wait; /* for handling sleeping while waiting for msr change to happen */ int delta_msr_cond; @@ -494,7 +492,6 @@ unsigned char *data; struct moschip_port *mos7840_port; __u8 regval = 0x0; - int result = 0; int status = urb->status; mos7840_port = urb->context; @@ -513,7 +510,7 @@ default: dbg("%s - nonzero urb status received: %d", __func__, status); - goto exit; + return; } dbg("%s urb buffer size is %d", __func__, urb->actual_length); @@ -526,17 +523,6 @@ mos7840_handle_new_msr(mos7840_port, regval); else if (mos7840_port->MsrLsr == 1) mos7840_handle_new_lsr(mos7840_port, regval); - -exit: - spin_lock(&mos7840_port->pool_lock); - if (!mos7840_port->zombie) - result = usb_submit_urb(mos7840_port->int_urb, GFP_ATOMIC); - spin_unlock(&mos7840_port->pool_lock); - if (result) { - dev_err(&urb->dev->dev, - "%s - Error %d submitting interrupt urb\n", - __func__, result); - } } static int mos7840_get_reg(struct moschip_port *mcs, __u16 Wval, __u16 reg, @@ -705,14 +691,7 @@ wreg = MODEM_STATUS_REGISTER; break; } - spin_lock(&mos7840_port->pool_lock); - if (!mos7840_port->zombie) { - rv = mos7840_get_reg(mos7840_port, wval, wreg, &Data); - } else { - spin_unlock(&mos7840_port->pool_lock); - return; - } - spin_unlock(&mos7840_port->pool_lock); + rv = mos7840_get_reg(mos7840_port, wval, wreg, &Data); } } } @@ -1232,9 +1211,12 @@ return 0; spin_lock_irqsave(&mos7840_port->pool_lock, flags); - for (i = 0; i < NUM_URBS; ++i) - if (mos7840_port->busy[i]) - chars += URB_TRANSFER_BUFFER_SIZE; + for (i = 0; i < NUM_URBS; ++i) { + if (mos7840_port->busy[i]) { + struct urb *urb = mos7840_port->write_urb_pool[i]; + chars += urb->transfer_buffer_length; + } + } spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); dbg("%s - returns %d", __func__, chars); return chars; @@ -2682,7 +2664,6 @@ kfree(mos7840_port->ctrl_buf); usb_free_urb(mos7840_port->control_urb); kfree(mos7840_port); - serial->port[i] = NULL; } return status; } @@ -2695,7 +2676,6 @@ static void mos7840_disconnect(struct usb_serial *serial) { int i; - unsigned long flags; struct moschip_port *mos7840_port; if (!serial) { @@ -2712,9 +2692,6 @@ mos7840_port = mos7840_get_port_private(serial->port[i]); dbg ("mos7840_port %d = %p", i, mos7840_port); if (mos7840_port) { - spin_lock_irqsave(&mos7840_port->pool_lock, flags); - mos7840_port->zombie = 1; - spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); usb_kill_urb(mos7840_port->control_urb); } } @@ -2752,6 +2729,7 @@ del_timer_sync(&mos7840_port->led_timer1); del_timer_sync(&mos7840_port->led_timer2); } + usb_free_urb(mos7840_port->control_urb); kfree(mos7840_port->ctrl_buf); kfree(mos7840_port->dr); kfree(mos7840_port); --- linux-3.5.0.orig/drivers/usb/serial/io_ti.c +++ linux-3.5.0/drivers/usb/serial/io_ti.c @@ -543,6 +543,9 @@ wait_queue_t wait; unsigned long flags; + if (!tty) + return; + if (!timeout) timeout = (HZ * EDGE_CLOSING_WAIT)/100; --- linux-3.5.0.orig/drivers/usb/serial/qcserial.c +++ linux-3.5.0/drivers/usb/serial/qcserial.c @@ -55,6 +55,7 @@ {DEVICE_G1K(0x05c6, 0x9221)}, /* Generic Gobi QDL device */ {DEVICE_G1K(0x05c6, 0x9231)}, /* Generic Gobi QDL device */ {DEVICE_G1K(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */ + {DEVICE_G1K(0x1bc7, 0x900e)}, /* Telit Gobi QDL device */ /* Gobi 2000 devices */ {USB_DEVICE(0x1410, 0xa010)}, /* Novatel Gobi 2000 QDL device */ --- linux-3.5.0.orig/drivers/usb/serial/usb-serial.c +++ linux-3.5.0/drivers/usb/serial/usb-serial.c @@ -688,10 +688,20 @@ static void serial_dtr_rts(struct tty_port *port, int on) { struct usb_serial_port *p = container_of(port, struct usb_serial_port, port); - struct usb_serial_driver *drv = p->serial->type; + struct usb_serial *serial = p->serial; + struct usb_serial_driver *drv = serial->type; - if (drv->dtr_rts) + if (!drv->dtr_rts) + return; + /* + * Work-around bug in the tty-layer which can result in dtr_rts + * being called after a disconnect (and tty_unregister_device + * has returned). Remove once bug has been squashed. + */ + mutex_lock(&serial->disc_mutex); + if (!serial->disconnected) drv->dtr_rts(p, on); + mutex_unlock(&serial->disc_mutex); } static const struct tty_port_operations serial_port_ops = { @@ -1426,9 +1436,10 @@ /* we only set the reset_resume field if the serial_driver has one */ for (sd = serial_drivers; *sd; ++sd) { - if ((*sd)->reset_resume) + if ((*sd)->reset_resume) { udriver->reset_resume = usb_serial_reset_resume; break; + } } rc = usb_register(udriver); --- linux-3.5.0.orig/drivers/usb/serial/whiteheat.c +++ linux-3.5.0/drivers/usb/serial/whiteheat.c @@ -405,6 +405,7 @@ "%s: please contact support@connecttech.com\n", serial->type->description); kfree(result); + kfree(command); return -ENODEV; no_command_private: --- linux-3.5.0.orig/drivers/usb/serial/sierra.c +++ linux-3.5.0/drivers/usb/serial/sierra.c @@ -162,7 +162,6 @@ { int result = 0; struct usb_device *udev; - struct sierra_intf_private *data; u8 ifnum; udev = serial->dev; @@ -189,11 +188,6 @@ return -ENODEV; } - data = serial->private = kzalloc(sizeof(struct sierra_intf_private), GFP_KERNEL); - if (!data) - return -ENOMEM; - spin_lock_init(&data->susp_lock); - return result; } @@ -872,29 +866,32 @@ static void sierra_dtr_rts(struct usb_serial_port *port, int on) { - struct usb_serial *serial = port->serial; struct sierra_port_private *portdata; portdata = usb_get_serial_port_data(port); portdata->rts_state = on; portdata->dtr_state = on; - if (serial->dev) { - mutex_lock(&serial->disc_mutex); - if (!serial->disconnected) - sierra_send_setup(port); - mutex_unlock(&serial->disc_mutex); - } + sierra_send_setup(port); } static int sierra_startup(struct usb_serial *serial) { struct usb_serial_port *port; + struct sierra_intf_private *intfdata; struct sierra_port_private *portdata; struct sierra_iface_info *himemoryp = NULL; int i; u8 ifnum; + intfdata = kzalloc(sizeof(*intfdata), GFP_KERNEL); + if (!intfdata) + return -ENOMEM; + + spin_lock_init(&intfdata->susp_lock); + + usb_set_serial_data(serial, intfdata); + /* Set Device mode to D0 */ sierra_set_power_state(serial->dev, 0x0000); @@ -910,7 +907,7 @@ dev_dbg(&port->dev, "%s: kmalloc for " "sierra_port_private (%d) failed!\n", __func__, i); - return -ENOMEM; + goto err; } spin_lock_init(&portdata->lock); init_usb_anchor(&portdata->active); @@ -947,6 +944,14 @@ } return 0; +err: + for (--i; i >= 0; --i) { + portdata = usb_get_serial_port_data(serial->port[i]); + kfree(portdata); + } + kfree(intfdata); + + return -ENOMEM; } static void sierra_release(struct usb_serial *serial) @@ -964,6 +969,7 @@ continue; kfree(portdata); } + kfree(serial->private); } #ifdef CONFIG_PM --- linux-3.5.0.orig/drivers/usb/serial/mct_u232.c +++ linux-3.5.0/drivers/usb/serial/mct_u232.c @@ -502,29 +502,27 @@ unsigned int control_state; struct mct_u232_private *priv = usb_get_serial_port_data(port); - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* drop DTR and RTS */ - spin_lock_irq(&priv->lock); - if (on) - priv->control_state |= TIOCM_DTR | TIOCM_RTS; - else - priv->control_state &= ~(TIOCM_DTR | TIOCM_RTS); - control_state = priv->control_state; - spin_unlock_irq(&priv->lock); - mct_u232_set_modem_ctrl(port->serial, control_state); - } - mutex_unlock(&port->serial->disc_mutex); + spin_lock_irq(&priv->lock); + if (on) + priv->control_state |= TIOCM_DTR | TIOCM_RTS; + else + priv->control_state &= ~(TIOCM_DTR | TIOCM_RTS); + control_state = priv->control_state; + spin_unlock_irq(&priv->lock); + + mct_u232_set_modem_ctrl(port, control_state); } static void mct_u232_close(struct usb_serial_port *port) { - if (port->serial->dev) { - /* shutdown our urbs */ - usb_kill_urb(port->write_urb); - usb_kill_urb(port->read_urb); - usb_kill_urb(port->interrupt_in_urb); - } + /* + * Must kill the read urb as it is actually an interrupt urb, which + * generic close thus fails to kill. + */ + usb_kill_urb(port->read_urb); + usb_kill_urb(port->interrupt_in_urb); + + usb_serial_generic_close(port); } /* mct_u232_close */ --- linux-3.5.0.orig/drivers/usb/serial/option.c +++ linux-3.5.0/drivers/usb/serial/option.c @@ -80,85 +80,10 @@ #define OPTION_PRODUCT_GTM380_MODEM 0x7201 #define HUAWEI_VENDOR_ID 0x12D1 -#define HUAWEI_PRODUCT_E600 0x1001 -#define HUAWEI_PRODUCT_E220 0x1003 -#define HUAWEI_PRODUCT_E220BIS 0x1004 -#define HUAWEI_PRODUCT_E1401 0x1401 -#define HUAWEI_PRODUCT_E1402 0x1402 -#define HUAWEI_PRODUCT_E1403 0x1403 -#define HUAWEI_PRODUCT_E1404 0x1404 -#define HUAWEI_PRODUCT_E1405 0x1405 -#define HUAWEI_PRODUCT_E1406 0x1406 -#define HUAWEI_PRODUCT_E1407 0x1407 -#define HUAWEI_PRODUCT_E1408 0x1408 -#define HUAWEI_PRODUCT_E1409 0x1409 -#define HUAWEI_PRODUCT_E140A 0x140A -#define HUAWEI_PRODUCT_E140B 0x140B -#define HUAWEI_PRODUCT_E140C 0x140C -#define HUAWEI_PRODUCT_E140D 0x140D -#define HUAWEI_PRODUCT_E140E 0x140E -#define HUAWEI_PRODUCT_E140F 0x140F -#define HUAWEI_PRODUCT_E1410 0x1410 -#define HUAWEI_PRODUCT_E1411 0x1411 -#define HUAWEI_PRODUCT_E1412 0x1412 -#define HUAWEI_PRODUCT_E1413 0x1413 -#define HUAWEI_PRODUCT_E1414 0x1414 -#define HUAWEI_PRODUCT_E1415 0x1415 -#define HUAWEI_PRODUCT_E1416 0x1416 -#define HUAWEI_PRODUCT_E1417 0x1417 -#define HUAWEI_PRODUCT_E1418 0x1418 -#define HUAWEI_PRODUCT_E1419 0x1419 -#define HUAWEI_PRODUCT_E141A 0x141A -#define HUAWEI_PRODUCT_E141B 0x141B -#define HUAWEI_PRODUCT_E141C 0x141C -#define HUAWEI_PRODUCT_E141D 0x141D -#define HUAWEI_PRODUCT_E141E 0x141E -#define HUAWEI_PRODUCT_E141F 0x141F -#define HUAWEI_PRODUCT_E1420 0x1420 -#define HUAWEI_PRODUCT_E1421 0x1421 -#define HUAWEI_PRODUCT_E1422 0x1422 -#define HUAWEI_PRODUCT_E1423 0x1423 -#define HUAWEI_PRODUCT_E1424 0x1424 -#define HUAWEI_PRODUCT_E1425 0x1425 -#define HUAWEI_PRODUCT_E1426 0x1426 -#define HUAWEI_PRODUCT_E1427 0x1427 -#define HUAWEI_PRODUCT_E1428 0x1428 -#define HUAWEI_PRODUCT_E1429 0x1429 -#define HUAWEI_PRODUCT_E142A 0x142A -#define HUAWEI_PRODUCT_E142B 0x142B -#define HUAWEI_PRODUCT_E142C 0x142C -#define HUAWEI_PRODUCT_E142D 0x142D -#define HUAWEI_PRODUCT_E142E 0x142E -#define HUAWEI_PRODUCT_E142F 0x142F -#define HUAWEI_PRODUCT_E1430 0x1430 -#define HUAWEI_PRODUCT_E1431 0x1431 -#define HUAWEI_PRODUCT_E1432 0x1432 -#define HUAWEI_PRODUCT_E1433 0x1433 -#define HUAWEI_PRODUCT_E1434 0x1434 -#define HUAWEI_PRODUCT_E1435 0x1435 -#define HUAWEI_PRODUCT_E1436 0x1436 -#define HUAWEI_PRODUCT_E1437 0x1437 -#define HUAWEI_PRODUCT_E1438 0x1438 -#define HUAWEI_PRODUCT_E1439 0x1439 -#define HUAWEI_PRODUCT_E143A 0x143A -#define HUAWEI_PRODUCT_E143B 0x143B -#define HUAWEI_PRODUCT_E143C 0x143C -#define HUAWEI_PRODUCT_E143D 0x143D -#define HUAWEI_PRODUCT_E143E 0x143E -#define HUAWEI_PRODUCT_E143F 0x143F +#define HUAWEI_PRODUCT_E173 0x140C #define HUAWEI_PRODUCT_K4505 0x1464 #define HUAWEI_PRODUCT_K3765 0x1465 -#define HUAWEI_PRODUCT_E14AC 0x14AC -#define HUAWEI_PRODUCT_K3806 0x14AE #define HUAWEI_PRODUCT_K4605 0x14C6 -#define HUAWEI_PRODUCT_K5005 0x14C8 -#define HUAWEI_PRODUCT_K3770 0x14C9 -#define HUAWEI_PRODUCT_K3771 0x14CA -#define HUAWEI_PRODUCT_K4510 0x14CB -#define HUAWEI_PRODUCT_K4511 0x14CC -#define HUAWEI_PRODUCT_ETS1220 0x1803 -#define HUAWEI_PRODUCT_E353 0x1506 -#define HUAWEI_PRODUCT_E173S 0x1C05 #define QUANTA_VENDOR_ID 0x0408 #define QUANTA_PRODUCT_Q101 0xEA02 @@ -233,6 +158,7 @@ #define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0x8001 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0x9000 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0x9001 +#define NOVATELWIRELESS_PRODUCT_E362 0x9010 #define NOVATELWIRELESS_PRODUCT_G1 0xA001 #define NOVATELWIRELESS_PRODUCT_G1_M 0xA002 #define NOVATELWIRELESS_PRODUCT_G2 0xA010 @@ -268,6 +194,9 @@ #define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181 #define DELL_PRODUCT_5730_MINICARD_VZW 0x8182 +#define DELL_PRODUCT_5800_MINICARD_VZW 0x8195 /* Novatel E362 */ +#define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */ + #define KYOCERA_VENDOR_ID 0x0c88 #define KYOCERA_PRODUCT_KPC650 0x17da #define KYOCERA_PRODUCT_KPC680 0x180a @@ -313,6 +242,7 @@ #define TELIT_PRODUCT_CC864_DUAL 0x1005 #define TELIT_PRODUCT_CC864_SINGLE 0x1006 #define TELIT_PRODUCT_DE910_DUAL 0x1010 +#define TELIT_PRODUCT_LE920 0x1200 /* ZTE PRODUCTS */ #define ZTE_VENDOR_ID 0x19d2 @@ -358,6 +288,8 @@ /* ALCATEL PRODUCTS */ #define ALCATEL_VENDOR_ID 0x1bbb #define ALCATEL_PRODUCT_X060S_X200 0x0000 +#define ALCATEL_PRODUCT_X220_X500D 0x0017 +#define ALCATEL_PRODUCT_L100V 0x011e #define PIRELLI_VENDOR_ID 0x1266 #define PIRELLI_PRODUCT_C100_1 0x1002 @@ -499,9 +431,12 @@ #define MEDIATEK_VENDOR_ID 0x0e8d #define MEDIATEK_PRODUCT_DC_1COM 0x00a0 #define MEDIATEK_PRODUCT_DC_4COM 0x00a5 +#define MEDIATEK_PRODUCT_DC_4COM2 0x00a7 #define MEDIATEK_PRODUCT_DC_5COM 0x00a4 #define MEDIATEK_PRODUCT_7208_1COM 0x7101 #define MEDIATEK_PRODUCT_7208_2COM 0x7102 +#define MEDIATEK_PRODUCT_7103_2COM 0x7103 +#define MEDIATEK_PRODUCT_7106_2COM 0x7106 #define MEDIATEK_PRODUCT_FP_1COM 0x0003 #define MEDIATEK_PRODUCT_FP_2COM 0x0023 #define MEDIATEK_PRODUCT_FPDC_1COM 0x0043 @@ -511,6 +446,18 @@ #define CELLIENT_VENDOR_ID 0x2692 #define CELLIENT_PRODUCT_MEN200 0x9005 +/* Hyundai Petatel Inc. products */ +#define PETATEL_VENDOR_ID 0x1ff4 +#define PETATEL_PRODUCT_NP10T 0x600e + +/* TP-LINK Incorporated products */ +#define TPLINK_VENDOR_ID 0x2357 +#define TPLINK_PRODUCT_MA180 0x0201 + +/* Changhong products */ +#define CHANGHONG_VENDOR_ID 0x2077 +#define CHANGHONG_PRODUCT_CH690 0x7001 + /* some devices interfaces need special handling due to a number of reasons */ enum option_blacklist_reason { OPTION_BLACKLIST_NONE = 0, @@ -532,6 +479,7 @@ static const struct option_blacklist_info alcatel_x200_blacklist = { .sendsetup = BIT(0) | BIT(1), + .reserved = BIT(4), }; static const struct option_blacklist_info zte_0037_blacklist = { @@ -579,11 +527,24 @@ .reserved = BIT(5), }; +static const struct option_blacklist_info net_intf6_blacklist = { + .reserved = BIT(6), +}; + static const struct option_blacklist_info zte_mf626_blacklist = { .sendsetup = BIT(0) | BIT(1), .reserved = BIT(4), }; +static const struct option_blacklist_info zte_1255_blacklist = { + .reserved = BIT(3) | BIT(4), +}; + +static const struct option_blacklist_info telit_le920_blacklist = { + .sendsetup = BIT(0), + .reserved = BIT(1) | BIT(5), +}; + static const struct usb_device_id option_ids[] = { { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, @@ -615,104 +576,131 @@ { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLX) }, { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GKE) }, { USB_DEVICE(QUANTA_VENDOR_ID, QUANTA_PRODUCT_GLE) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1402, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1404, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1407, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E140F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E141F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1420, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1421, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1422, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1423, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1424, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1425, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1426, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1427, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1428, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1429, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E142F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1430, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1431, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1432, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1433, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1434, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1435, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1436, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1437, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1438, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1439, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143A, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143B, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143C, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143D, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143E, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E143F, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E173S, 0xff, 0xff, 0xff) }, + { USB_DEVICE(QUANTA_VENDOR_ID, 0xea42), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x1c05, USB_CLASS_COMM, 0x02, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x1c23, USB_CLASS_COMM, 0x02, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E173, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t) &net_intf1_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x1441, USB_CLASS_COMM, 0x02, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0x1442, USB_CLASS_COMM, 0x02, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4505, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3765, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ETS1220, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E14AC, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3806, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t) &huawei_cdc12_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4605, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K5005, 0xff, 0x01, 0x33) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3770, 0xff, 0x02, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K3771, 0xff, 0x02, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4510, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x31) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_K4511, 0xff, 0x01, 0x32) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x01) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x02) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x03) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x10) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x12) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x01, 0x13) }, - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x01) }, /* E398 3G Modem */ - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x02) }, /* E398 3G PC UI Interface */ - { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E353, 0xff, 0x02, 0x03) }, /* E398 3G Application Interface */ + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0xff, 0xff) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x02) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x03) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x04) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x05) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x06) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x0F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x10) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x12) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x13) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x14) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x15) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x17) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x18) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x19) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x1C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x31) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x32) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x33) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x34) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x35) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x36) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x3F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x48) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x49) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x4C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x61) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x62) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x63) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x64) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x65) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x66) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x6F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x78) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x79) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x01, 0x7C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x01) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x02) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x03) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x04) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x05) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x06) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x0F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x10) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x12) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x13) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x14) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x15) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x17) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x18) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x19) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x1C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x31) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x32) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x33) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x34) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x35) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x36) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x3F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x48) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x49) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x4C) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x61) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x62) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x63) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x64) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x65) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x66) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6D) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6E) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x6F) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x78) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x79) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7A) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7B) }, + { USB_VENDOR_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 0xff, 0x02, 0x7C) }, + + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V740) }, @@ -754,6 +742,7 @@ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) }, /* 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(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, @@ -776,6 +765,8 @@ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ + { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_MINICARD_VZW, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_V2_MINICARD_VZW, 0xff, 0xff, 0xff) }, { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */ { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) }, @@ -810,6 +801,8 @@ { 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_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 */ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0002, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, @@ -910,14 +903,24 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0113, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0117, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0118, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0121, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0118, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0121, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0122, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0123, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0124, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0125, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0126, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0123, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0124, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0125, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0126, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0128, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0135, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0136, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0137, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0139, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0142, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0143, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0144, 0xff, 0xff, 0xff) }, @@ -927,8 +930,10 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0159, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0162, 0xff, 0xff, 0xff) }, @@ -936,11 +941,38 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0165, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0167, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0189, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0191, 0xff, 0xff, 0xff), /* ZTE EuFi890 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0196, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0197, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0199, 0xff, 0xff, 0xff), /* ZTE MF820S */ + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0200, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0201, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0254, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0257, 0xff, 0xff, 0xff), /* ZTE MF821 */ + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0265, 0xff, 0xff, 0xff), /* ONDA MT8205 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0284, 0xff, 0xff, 0xff), /* ZTE MF880 */ + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0317, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0326, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0330, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0395, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0414, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0417, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1008, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1018, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1021, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1057, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1058, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1059, 0xff, 0xff, 0xff) }, @@ -1056,18 +1088,24 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1169, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1170, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1244, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1245, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1245, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1246, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1247, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1247, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1248, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1249, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1250, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1251, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1252, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1252, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1253, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1254, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1255, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1256, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1254, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1255, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&zte_1255_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1256, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1257, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1258, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1259, 0xff, 0xff, 0xff) }, @@ -1112,8 +1150,20 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1298, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1299, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1300, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1301, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1302, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1303, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1333, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1401, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1402, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1424, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1425, 0xff, 0xff, 0xff), + .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, 0x2002, 0xff, 0xff, 0xff), .driver_info = (kernel_ulong_t)&zte_k3765_z_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x2003, 0xff, 0xff, 0xff) }, @@ -1125,15 +1175,21 @@ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0070, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0094, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0130, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0133, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0141, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0147, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0152, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0168, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0170, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0178, 0xff, 0xff, 0xff) }, + { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0176, 0xff, 0xff, 0xff), + .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, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, @@ -1145,6 +1201,10 @@ .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_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(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) }, { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) }, { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */ @@ -1162,6 +1222,16 @@ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200), .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x0052), + .driver_info = (kernel_ulong_t)&net_intf6_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x00b6), + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, + { USB_DEVICE(ALCATEL_VENDOR_ID, 0x00b7), + .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(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), @@ -1266,7 +1336,15 @@ { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FP_2COM, 0x0a, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_1COM, 0x0a, 0x00, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_FPDC_2COM, 0x0a, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7103_2COM, 0xff, 0x00, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_7106_2COM, 0x02, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x02, 0x01) }, + { USB_DEVICE_AND_INTERFACE_INFO(MEDIATEK_VENDOR_ID, MEDIATEK_PRODUCT_DC_4COM2, 0xff, 0x00, 0x00) }, { USB_DEVICE(CELLIENT_VENDOR_ID, CELLIENT_PRODUCT_MEN200) }, + { USB_DEVICE(PETATEL_VENDOR_ID, PETATEL_PRODUCT_NP10T) }, + { USB_DEVICE(TPLINK_VENDOR_ID, TPLINK_PRODUCT_MA180), + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, + { USB_DEVICE(CHANGHONG_VENDOR_ID, CHANGHONG_PRODUCT_CH690) }, { } /* Terminating entry */ }; MODULE_DEVICE_TABLE(usb, option_ids); --- linux-3.5.0.orig/drivers/usb/serial/quatech2.c +++ linux-3.5.0/drivers/usb/serial/quatech2.c @@ -434,6 +434,12 @@ port_priv->urb_in_use = false; spin_unlock_irqrestore(&port_priv->urb_lock, flags); + mutex_lock(&port->serial->disc_mutex); + if (port->serial->disconnected) { + mutex_unlock(&port->serial->disc_mutex); + return; + } + /* flush the port transmit buffer */ i = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0), @@ -465,6 +471,7 @@ dev_err(&port->dev, "%s - close port failed %i\n", __func__, i); + mutex_unlock(&port->serial->disc_mutex); } static void qt2_disconnect(struct usb_serial *serial) @@ -829,6 +836,7 @@ if (status != 0) { dev_err(&serial->dev->dev, "%s - submit read urb failed %i\n", __func__, status); + usb_free_urb(serial_priv->read_urb); return status; } @@ -968,19 +976,17 @@ struct usb_device *dev = port->serial->dev; struct qt2_port_private *port_priv = usb_get_serial_port_data(port); - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* Disable flow control */ - if (!on && qt2_setregister(dev, port_priv->device_port, + /* Disable flow control */ + if (!on) { + if (qt2_setregister(dev, port_priv->device_port, UART_MCR, 0) < 0) dev_warn(&port->dev, "error from flowcontrol urb\n"); - /* drop RTS and DTR */ - if (on) - update_mctrl(port_priv, TIOCM_DTR | TIOCM_RTS, 0); - else - update_mctrl(port_priv, 0, TIOCM_DTR | TIOCM_RTS); } - mutex_unlock(&port->serial->disc_mutex); + /* drop RTS and DTR */ + if (on) + update_mctrl(port_priv, TIOCM_DTR | TIOCM_RTS, 0); + else + update_mctrl(port_priv, 0, TIOCM_DTR | TIOCM_RTS); } static void qt2_update_msr(struct usb_serial_port *port, unsigned char *ch) --- linux-3.5.0.orig/drivers/usb/serial/ftdi_sio_ids.h +++ linux-3.5.0/drivers/usb/serial/ftdi_sio_ids.h @@ -75,6 +75,9 @@ #define FTDI_OPENDCC_GATEWAY_PID 0xBFDB #define FTDI_OPENDCC_GBM_PID 0xBFDC +/* NZR SEM 16+ USB (http://www.nzr.de) */ +#define FTDI_NZR_SEM_USB_PID 0xC1E0 /* NZR SEM-LOG16+ */ + /* * RR-CirKits LocoBuffer USB (http://www.rr-cirkits.com) */ @@ -144,6 +147,11 @@ #define XSENS_CONVERTER_6_PID 0xD38E #define XSENS_CONVERTER_7_PID 0xD38F +/** + * Zolix (www.zolix.com.cb) product ids + */ +#define FTDI_OMNI1509 0xD491 /* Omni1509 embedded USB-serial */ + /* * NDI (www.ndigital.com) product ids */ @@ -201,7 +209,7 @@ /* * ELV USB devices submitted by Christian Abt of ELV (www.elv.de). - * All of these devices use FTDI's vendor ID (0x0403). + * Almost all of these devices use FTDI's vendor ID (0x0403). * Further IDs taken from ELV Windows .inf file. * * The previously included PID for the UO 100 module was incorrect. @@ -209,6 +217,8 @@ * * Armin Laeuger originally sent the PID for the UM 100 module. */ +#define FTDI_ELV_VID 0x1B1F /* ELV AG */ +#define FTDI_ELV_WS300_PID 0xC006 /* eQ3 WS 300 PC II */ #define FTDI_ELV_USR_PID 0xE000 /* ELV Universal-Sound-Recorder */ #define FTDI_ELV_MSM1_PID 0xE001 /* ELV Mini-Sound-Modul */ #define FTDI_ELV_KL100_PID 0xE002 /* ELV Kfz-Leistungsmesser KL 100 */ @@ -514,6 +524,11 @@ */ #define FTDI_TAVIR_STK500_PID 0xFA33 /* STK500 AVR programmer */ +/* + * TIAO product ids (FTDI_VID) + * http://www.tiaowiki.com/w/Main_Page + */ +#define FTDI_TIAO_UMPA_PID 0x8a98 /* TIAO/DIYGADGET USB Multi-Protocol Adapter */ /********************************/ @@ -539,7 +554,10 @@ /* * Microchip Technology, Inc. * - * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are also used by: + * MICROCHIP_VID (0x04D8) and MICROCHIP_USB_BOARD_PID (0x000A) are + * used by single function CDC ACM class based firmware demo + * applications. The VID/PID has also been used in firmware + * emulating FTDI serial chips by: * Hornby Elite - Digital Command Control Console * http://www.hornby.com/hornby-dcc/controllers/ */ @@ -741,6 +759,12 @@ #define TTI_VID 0x103E /* Vendor Id */ #define TTI_QL355P_PID 0x03E8 /* TTi QL355P power supply */ +/* + * Newport Cooperation (www.newport.com) + */ +#define NEWPORT_VID 0x104D +#define NEWPORT_AGILIS_PID 0x3000 + /* Interbiometrics USB I/O Board */ /* Developed for Interbiometrics by Rudolf Gugler */ #define INTERBIOMETRICS_VID 0x1209 @@ -791,8 +815,34 @@ * Physik Instrumente * http://www.physikinstrumente.com/en/products/ */ +/* These two devices use the VID of FTDI */ +#define PI_C865_PID 0xe0a0 /* PI C-865 Piezomotor Controller */ +#define PI_C857_PID 0xe0a1 /* PI Encoder Trigger Box */ + #define PI_VID 0x1a72 /* Vendor ID */ -#define PI_E861_PID 0x1008 /* E-861 piezo controller USB connection */ +#define PI_C866_PID 0x1000 /* PI C-866 Piezomotor Controller */ +#define PI_C663_PID 0x1001 /* PI C-663 Mercury-Step */ +#define PI_C725_PID 0x1002 /* PI C-725 Piezomotor Controller */ +#define PI_E517_PID 0x1005 /* PI E-517 Digital Piezo Controller Operation Module */ +#define PI_C863_PID 0x1007 /* PI C-863 */ +#define PI_E861_PID 0x1008 /* PI E-861 Piezomotor Controller */ +#define PI_C867_PID 0x1009 /* PI C-867 Piezomotor Controller */ +#define PI_E609_PID 0x100D /* PI E-609 Digital Piezo Controller */ +#define PI_E709_PID 0x100E /* PI E-709 Digital Piezo Controller */ +#define PI_100F_PID 0x100F /* PI Digital Piezo Controller */ +#define PI_1011_PID 0x1011 /* PI Digital Piezo Controller */ +#define PI_1012_PID 0x1012 /* PI Motion Controller */ +#define PI_1013_PID 0x1013 /* PI Motion Controller */ +#define PI_1014_PID 0x1014 /* PI Device */ +#define PI_1015_PID 0x1015 /* PI Device */ +#define PI_1016_PID 0x1016 /* PI Digital Servo Module */ + +/* + * Kondo Kagaku Co.Ltd. + * http://www.kondo-robot.com/EN + */ +#define KONDO_VID 0x165c +#define KONDO_USB_SERIAL_PID 0x0002 /* * Bayer Ascensia Contour blood glucose meter USB-converter cable. @@ -1216,3 +1266,9 @@ * ATI command output: Cinterion MC55i */ #define FTDI_CINTERION_MC55I_PID 0xA951 + +/* + * Product: Comet Caller ID decoder + * Manufacturer: Crucible Technologies + */ +#define FTDI_CT_COMET_PID 0x8e08 --- linux-3.5.0.orig/drivers/usb/serial/usb_wwan.c +++ linux-3.5.0/drivers/usb/serial/usb_wwan.c @@ -41,7 +41,6 @@ void usb_wwan_dtr_rts(struct usb_serial_port *port, int on) { - struct usb_serial *serial = port->serial; struct usb_wwan_port_private *portdata; struct usb_wwan_intf_private *intfdata; @@ -51,12 +50,11 @@ return; portdata = usb_get_serial_port_data(port); - mutex_lock(&serial->disc_mutex); + /* FIXME: locking */ portdata->rts_state = on; portdata->dtr_state = on; - if (serial->dev) - intfdata->send_setup(port); - mutex_unlock(&serial->disc_mutex); + + intfdata->send_setup(port); } EXPORT_SYMBOL(usb_wwan_dtr_rts); @@ -453,9 +451,6 @@ { struct urb *urb; - if (endpoint == -1) - return NULL; /* endpoint not needed */ - urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */ if (urb == NULL) { dbg("%s: alloc for endpoint %d failed.", __func__, endpoint); @@ -483,6 +478,9 @@ /* Do indat endpoints first */ for (j = 0; j < N_IN_URB; ++j) { + if (!port->bulk_in_size) + break; + portdata->in_urbs[j] = usb_wwan_setup_urb(serial, port-> bulk_in_endpointAddress, @@ -496,6 +494,9 @@ /* outdat endpoints */ for (j = 0; j < N_OUT_URB; ++j) { + if (!port->bulk_out_size) + break; + portdata->out_urbs[j] = usb_wwan_setup_urb(serial, port-> bulk_out_endpointAddress, @@ -529,6 +530,9 @@ init_usb_anchor(&portdata->delayed); for (j = 0; j < N_IN_URB; j++) { + if (!port->bulk_in_size) + break; + buffer = (u8 *) __get_free_page(GFP_KERNEL); if (!buffer) goto bail_out_error; @@ -536,6 +540,9 @@ } for (j = 0; j < N_OUT_URB; j++) { + if (!port->bulk_out_size) + break; + buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL); if (!buffer) goto bail_out_error2; --- linux-3.5.0.orig/drivers/usb/serial/qcaux.c +++ linux-3.5.0/drivers/usb/serial/qcaux.c @@ -36,8 +36,6 @@ #define UTSTARCOM_PRODUCT_UM175_V1 0x3712 #define UTSTARCOM_PRODUCT_UM175_V2 0x3714 #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715 -#define PANTECH_PRODUCT_UML190_VZW 0x3716 -#define PANTECH_PRODUCT_UML290_VZW 0x3718 /* CMOTECH devices */ #define CMOTECH_VENDOR_ID 0x16d8 @@ -68,11 +66,9 @@ { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) }, { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xff, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xfe, 0xff) }, - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfd, 0xff) }, /* NMEA */ - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfe, 0xff) }, /* WMC */ - { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, /* DIAG */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfd, 0xff) }, /* NMEA */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xfe, 0xff) }, /* WMC */ + { USB_VENDOR_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, 0xff, 0xff, 0xff) }, /* DIAG */ { }, }; MODULE_DEVICE_TABLE(usb, id_table); --- linux-3.5.0.orig/drivers/usb/serial/cp210x.c +++ linux-3.5.0/drivers/usb/serial/cp210x.c @@ -120,6 +120,7 @@ { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */ { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */ { USB_DEVICE(0x10C4, 0x85EB) }, /* AC-Services CIS-IBUS */ + { 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, 0xEA60) }, /* Silicon Labs factory default */ --- linux-3.5.0.orig/drivers/usb/serial/metro-usb.c +++ linux-3.5.0/drivers/usb/serial/metro-usb.c @@ -188,16 +188,13 @@ { dev_dbg(&port->dev, "%s\n", __func__); - if (port->serial->dev) { - /* Shutdown any interrupt in urbs. */ - if (port->interrupt_in_urb) { - usb_unlink_urb(port->interrupt_in_urb); - usb_kill_urb(port->interrupt_in_urb); - } + usb_unlink_urb(port->interrupt_in_urb); + usb_kill_urb(port->interrupt_in_urb); - /* Send deactivate cmd to device */ + mutex_lock(&port->serial->disc_mutex); + if (!port->serial->disconnected) metrousb_send_unidirectional_cmd(UNI_CMD_CLOSE, port); - } + mutex_unlock(&port->serial->disc_mutex); } static int metrousb_open(struct tty_struct *tty, struct usb_serial_port *port) --- linux-3.5.0.orig/drivers/usb/serial/ssu100.c +++ linux-3.5.0/drivers/usb/serial/ssu100.c @@ -505,19 +505,16 @@ { struct usb_device *dev = port->serial->dev; - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* Disable flow control */ - if (!on && - ssu100_setregister(dev, 0, UART_MCR, 0) < 0) + /* Disable flow control */ + if (!on) { + if (ssu100_setregister(dev, 0, UART_MCR, 0) < 0) dev_err(&port->dev, "error from flowcontrol urb\n"); - /* drop RTS and DTR */ - if (on) - set_mctrl(dev, TIOCM_DTR | TIOCM_RTS); - else - clear_mctrl(dev, TIOCM_DTR | TIOCM_RTS); } - mutex_unlock(&port->serial->disc_mutex); + /* drop RTS and DTR */ + if (on) + set_mctrl(dev, TIOCM_DTR | TIOCM_RTS); + else + clear_mctrl(dev, TIOCM_DTR | TIOCM_RTS); } static void ssu100_update_msr(struct usb_serial_port *port, u8 msr) --- linux-3.5.0.orig/drivers/usb/serial/ftdi_sio.c +++ linux-3.5.0/drivers/usb/serial/ftdi_sio.c @@ -197,6 +197,7 @@ { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_THROTTLE_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GATEWAY_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_GBM_PID) }, + { USB_DEVICE(NEWPORT_VID, NEWPORT_AGILIS_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) }, { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) }, { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) }, @@ -584,9 +585,12 @@ { USB_DEVICE(FTDI_VID, FTDI_IBS_PEDO_PID) }, { USB_DEVICE(FTDI_VID, FTDI_IBS_PROD_PID) }, { USB_DEVICE(FTDI_VID, FTDI_TAVIR_STK500_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_TIAO_UMPA_PID), + .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, /* * ELV devices: */ + { USB_DEVICE(FTDI_ELV_VID, FTDI_ELV_WS300_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_USR_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_MSM1_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ELV_KL100_PID) }, @@ -673,6 +677,7 @@ { 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(FTDI_VID, FTDI_OMNI1509) }, { USB_DEVICE(MOBILITY_VID, MOBILITY_USB_SERIAL_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ACTIVE_ROBOTS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_MHAM_KW_PID) }, @@ -704,6 +709,7 @@ { USB_DEVICE(FTDI_VID, FTDI_PCDJ_DAC2_PID) }, { USB_DEVICE(FTDI_VID, FTDI_RRCIRKITS_LOCOBUFFER_PID) }, { USB_DEVICE(FTDI_VID, FTDI_ASK_RDR400_PID) }, + { USB_DEVICE(FTDI_VID, FTDI_NZR_SEM_USB_PID) }, { USB_DEVICE(ICOM_VID, ICOM_ID_1_PID) }, { USB_DEVICE(ICOM_VID, ICOM_OPC_U_UC_PID) }, { USB_DEVICE(ICOM_VID, ICOM_ID_RP2C1_PID) }, @@ -804,13 +810,33 @@ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(ADI_VID, ADI_GNICEPLUS_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, - { USB_DEVICE(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID) }, + { USB_DEVICE_AND_INTERFACE_INFO(MICROCHIP_VID, MICROCHIP_USB_BOARD_PID, + USB_CLASS_VENDOR_SPEC, + USB_SUBCLASS_VENDOR_SPEC, 0x00) }, { USB_DEVICE(JETI_VID, JETI_SPC1201_PID) }, { USB_DEVICE(MARVELL_VID, MARVELL_SHEEVAPLUG_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(LARSENBRUSGAARD_VID, LB_ALTITRACK_PID) }, { USB_DEVICE(GN_OTOMETRICS_VID, AURICAL_USB_PID) }, + { USB_DEVICE(FTDI_VID, PI_C865_PID) }, + { USB_DEVICE(FTDI_VID, PI_C857_PID) }, + { USB_DEVICE(PI_VID, PI_C866_PID) }, + { USB_DEVICE(PI_VID, PI_C663_PID) }, + { USB_DEVICE(PI_VID, PI_C725_PID) }, + { USB_DEVICE(PI_VID, PI_E517_PID) }, + { USB_DEVICE(PI_VID, PI_C863_PID) }, { USB_DEVICE(PI_VID, PI_E861_PID) }, + { USB_DEVICE(PI_VID, PI_C867_PID) }, + { USB_DEVICE(PI_VID, PI_E609_PID) }, + { USB_DEVICE(PI_VID, PI_E709_PID) }, + { USB_DEVICE(PI_VID, PI_100F_PID) }, + { USB_DEVICE(PI_VID, PI_1011_PID) }, + { USB_DEVICE(PI_VID, PI_1012_PID) }, + { USB_DEVICE(PI_VID, PI_1013_PID) }, + { USB_DEVICE(PI_VID, PI_1014_PID) }, + { USB_DEVICE(PI_VID, PI_1015_PID) }, + { USB_DEVICE(PI_VID, PI_1016_PID) }, + { USB_DEVICE(KONDO_VID, KONDO_USB_SERIAL_PID) }, { USB_DEVICE(BAYER_VID, BAYER_CONTOUR_CABLE_PID) }, { USB_DEVICE(FTDI_VID, MARVELL_OPENRD_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, @@ -857,6 +883,8 @@ { USB_DEVICE(FTDI_VID, FTDI_DISTORTEC_JTAG_LOCK_PICK_PID), .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, { USB_DEVICE(FTDI_VID, FTDI_LUMEL_PD12_PID) }, + /* Crucible Devices */ + { USB_DEVICE(FTDI_VID, FTDI_CT_COMET_PID) }, { }, /* Optional parameter entry */ { } /* Terminating entry */ }; @@ -1764,7 +1792,7 @@ struct usb_device *udev = serial->dev; if ((udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems")) || - (udev->product && !strcmp(udev->product, "BeagleBone/XDS100"))) + (udev->product && !strcmp(udev->product, "BeagleBone/XDS100V2"))) return ftdi_jtag_probe(serial); return 0; @@ -1862,24 +1890,22 @@ { struct ftdi_private *priv = usb_get_serial_port_data(port); - mutex_lock(&port->serial->disc_mutex); - if (!port->serial->disconnected) { - /* Disable flow control */ - if (!on && usb_control_msg(port->serial->dev, + /* Disable flow control */ + if (!on) { + if (usb_control_msg(port->serial->dev, usb_sndctrlpipe(port->serial->dev, 0), FTDI_SIO_SET_FLOW_CTRL_REQUEST, FTDI_SIO_SET_FLOW_CTRL_REQUEST_TYPE, 0, priv->interface, NULL, 0, WDR_TIMEOUT) < 0) { - dev_err(&port->dev, "error from flowcontrol urb\n"); + dev_err(&port->dev, "error from flowcontrol urb\n"); } - /* drop RTS and DTR */ - if (on) - set_mctrl(port, TIOCM_DTR | TIOCM_RTS); - else - clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); } - mutex_unlock(&port->serial->disc_mutex); + /* drop RTS and DTR */ + if (on) + set_mctrl(port, TIOCM_DTR | TIOCM_RTS); + else + clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); } /* --- linux-3.5.0.orig/drivers/usb/serial/opticon.c +++ linux-3.5.0/drivers/usb/serial/opticon.c @@ -158,7 +158,11 @@ { struct usb_serial *serial = port->serial; int retval; - u8 buffer[2]; + u8 *buffer; + + buffer = kzalloc(1, GFP_KERNEL); + if (!buffer) + return -ENOMEM; buffer[0] = val; /* Send the message to the vendor control endpoint @@ -167,6 +171,7 @@ requesttype, USB_DIR_OUT|USB_TYPE_VENDOR|USB_RECIP_INTERFACE, 0, 0, buffer, 1, 0); + kfree(buffer); return retval; } @@ -284,7 +289,7 @@ if (!dr) { dev_err(&port->dev, "out of memory\n"); count = -ENOMEM; - goto error; + goto error_no_dr; } dr->bRequestType = USB_TYPE_VENDOR | USB_RECIP_INTERFACE | USB_DIR_OUT; @@ -314,6 +319,8 @@ return count; error: + kfree(dr); +error_no_dr: usb_free_urb(urb); error_no_urb: kfree(buffer); --- linux-3.5.0.orig/drivers/usb/early/ehci-dbgp.c +++ linux-3.5.0/drivers/usb/early/ehci-dbgp.c @@ -450,7 +450,7 @@ writel(FLAG_CF, &ehci_regs->configured_flag); /* Wait until the controller is no longer halted */ - loop = 10; + loop = 1000; do { status = readl(&ehci_regs->status); if (!(status & STS_HALT)) --- linux-3.5.0.orig/drivers/usb/core/hub.c +++ linux-3.5.0/drivers/usb/core/hub.c @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -81,7 +83,7 @@ u8 indicator[USB_MAXCHILDREN]; struct delayed_work leds; struct delayed_work init_work; - void **port_owners; + struct dev_state **port_owners; }; static inline int hub_is_superspeed(struct usb_device *hdev) @@ -728,13 +730,16 @@ int limit = 100; spin_lock_irqsave (&hub->tt.lock, flags); - while (--limit && !list_empty (&hub->tt.clear_list)) { + while (!list_empty(&hub->tt.clear_list)) { struct list_head *next; struct usb_tt_clear *clear; struct usb_device *hdev = hub->hdev; const struct hc_driver *drv; int status; + if (!hub->quiescing && --limit < 0) + break; + next = hub->tt.clear_list.next; clear = list_entry (next, struct usb_tt_clear, clear_list); list_del (&clear->clear_list); @@ -862,6 +867,60 @@ return ret; } +static int hub_set_port_link_state(struct usb_hub *hub, int port1, + unsigned int link_status) +{ + return set_port_feature(hub->hdev, + port1 | (link_status << 3), + USB_PORT_FEAT_LINK_STATE); +} + +/* + * If USB 3.0 ports are placed into the Disabled state, they will no longer + * detect any device connects or disconnects. This is generally not what the + * USB core wants, since it expects a disabled port to produce a port status + * change event when a new device connects. + * + * Instead, set the link state to Disabled, wait for the link to settle into + * that state, clear any change bits, and then put the port into the RxDetect + * state. + */ +static int hub_usb3_port_disable(struct usb_hub *hub, int port1) +{ + int ret; + int total_time; + u16 portchange, portstatus; + + if (!hub_is_superspeed(hub->hdev)) + return -EINVAL; + + ret = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_SS_DISABLED); + if (ret) { + dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n", + port1, ret); + return ret; + } + + /* Wait for the link to enter the disabled state. */ + for (total_time = 0; ; total_time += HUB_DEBOUNCE_STEP) { + ret = hub_port_status(hub, port1, &portstatus, &portchange); + if (ret < 0) + return ret; + + if ((portstatus & USB_PORT_STAT_LINK_STATE) == + USB_SS_PORT_LS_SS_DISABLED) + break; + if (total_time >= HUB_DEBOUNCE_TIMEOUT) + break; + msleep(HUB_DEBOUNCE_STEP); + } + if (total_time >= HUB_DEBOUNCE_TIMEOUT) + dev_warn(hub->intfdev, "Could not disable port %d after %d ms\n", + port1, total_time); + + return hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_RX_DETECT); +} + static int hub_port_disable(struct usb_hub *hub, int port1, int set_state) { struct usb_device *hdev = hub->hdev; @@ -870,8 +929,13 @@ if (hdev->children[port1-1] && set_state) usb_set_device_state(hdev->children[port1-1], USB_STATE_NOTATTACHED); - if (!hub->error && !hub_is_superspeed(hub->hdev)) - ret = clear_port_feature(hdev, port1, USB_PORT_FEAT_ENABLE); + if (!hub->error) { + if (hub_is_superspeed(hub->hdev)) + ret = hub_usb3_port_disable(hub, port1); + else + ret = clear_port_feature(hdev, port1, + USB_PORT_FEAT_ENABLE); + } if (ret) dev_err(hub->intfdev, "cannot disable port %d (err = %d)\n", port1, ret); @@ -1199,7 +1263,7 @@ if (hub->has_indicators) cancel_delayed_work_sync(&hub->leds); if (hub->tt.hub) - cancel_work_sync(&hub->tt.clear_work); + flush_work_sync(&hub->tt.clear_work); } /* caller has locked the hub device */ @@ -1271,7 +1335,8 @@ hdev->children = kzalloc(hdev->maxchild * sizeof(struct usb_device *), GFP_KERNEL); - hub->port_owners = kzalloc(hdev->maxchild * sizeof(void *), GFP_KERNEL); + hub->port_owners = kzalloc(hdev->maxchild * sizeof(struct dev_state *), + GFP_KERNEL); if (!hdev->children || !hub->port_owners) { ret = -ENOMEM; goto fail; @@ -1649,7 +1714,7 @@ * to one of these "claimed" ports, the program will "own" the device. */ static int find_port_owner(struct usb_device *hdev, unsigned port1, - void ***ppowner) + struct dev_state ***ppowner) { if (hdev->state == USB_STATE_NOTATTACHED) return -ENODEV; @@ -1664,10 +1729,11 @@ } /* In the following three functions, the caller must hold hdev's lock */ -int usb_hub_claim_port(struct usb_device *hdev, unsigned port1, void *owner) +int usb_hub_claim_port(struct usb_device *hdev, unsigned port1, + struct dev_state *owner) { int rc; - void **powner; + struct dev_state **powner; rc = find_port_owner(hdev, port1, &powner); if (rc) @@ -1678,10 +1744,11 @@ return rc; } -int usb_hub_release_port(struct usb_device *hdev, unsigned port1, void *owner) +int usb_hub_release_port(struct usb_device *hdev, unsigned port1, + struct dev_state *owner) { int rc; - void **powner; + struct dev_state **powner; rc = find_port_owner(hdev, port1, &powner); if (rc) @@ -1692,10 +1759,10 @@ return rc; } -void usb_hub_release_all_ports(struct usb_device *hdev, void *owner) +void usb_hub_release_all_ports(struct usb_device *hdev, struct dev_state *owner) { int n; - void **powner; + struct dev_state **powner; n = find_port_owner(hdev, 1, &powner); if (n == 0) { @@ -2173,6 +2240,14 @@ /* Tell the world! */ announce_device(udev); + if (udev->serial) + add_device_randomness(udev->serial, strlen(udev->serial)); + if (udev->product) + add_device_randomness(udev->product, strlen(udev->product)); + if (udev->manufacturer) + add_device_randomness(udev->manufacturer, + strlen(udev->manufacturer)); + device_enable_async_suspend(&udev->dev); /* @@ -2218,6 +2293,10 @@ */ int usb_deauthorize_device(struct usb_device *usb_dev) { + char *product = NULL; + char *manufacturer = NULL; + char *serial = NULL; + usb_lock_device(usb_dev); if (usb_dev->authorized == 0) goto out_unauthorized; @@ -2225,11 +2304,12 @@ usb_dev->authorized = 0; usb_set_configuration(usb_dev, -1); - kfree(usb_dev->product); + product = usb_dev->product; + manufacturer = usb_dev->manufacturer; + serial = usb_dev->serial; + 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); @@ -2237,6 +2317,12 @@ out_unauthorized: usb_unlock_device(usb_dev); + if (product || manufacturer || serial) { + synchronize_rcu(); + kfree(product); + kfree(manufacturer); + kfree(serial); + } return 0; } @@ -2244,6 +2330,9 @@ int usb_authorize_device(struct usb_device *usb_dev) { int result = 0, c; + char *product = NULL; + char *manufacturer = NULL; + char *serial = NULL; usb_lock_device(usb_dev); if (usb_dev->authorized == 1) @@ -2262,11 +2351,12 @@ goto error_device_descriptor; } - kfree(usb_dev->product); + product = usb_dev->product; + manufacturer = usb_dev->manufacturer; + serial = usb_dev->serial; + usb_dev->product = NULL; - kfree(usb_dev->manufacturer); usb_dev->manufacturer = NULL; - kfree(usb_dev->serial); usb_dev->serial = NULL; usb_dev->authorized = 1; @@ -2294,6 +2384,12 @@ error_autoresume: out_authorized: usb_unlock_device(usb_dev); // complements locktree + if (product || manufacturer || serial) { + synchronize_rcu(); + kfree(product); + kfree(manufacturer); + kfree(serial); + } return result; } @@ -2319,7 +2415,7 @@ #define HUB_SHORT_RESET_TIME 10 #define HUB_BH_RESET_TIME 50 #define HUB_LONG_RESET_TIME 200 -#define HUB_RESET_TIMEOUT 500 +#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); @@ -2354,6 +2450,10 @@ if (ret < 0) return ret; + /* The port state is unknown until the reset completes. */ + if ((portstatus & USB_PORT_STAT_RESET)) + goto delay; + /* * Some buggy devices require a warm reset to be issued even * when the port appears not to be connected. @@ -2399,11 +2499,7 @@ if ((portchange & USB_PORT_STAT_C_CONNECTION)) return -ENOTCONN; - /* if we`ve finished resetting, then break out of - * the loop - */ - if (!(portstatus & USB_PORT_STAT_RESET) && - (portstatus & USB_PORT_STAT_ENABLE)) { + if ((portstatus & USB_PORT_STAT_ENABLE)) { if (hub_is_wusb(hub)) udev->speed = USB_SPEED_WIRELESS; else if (hub_is_superspeed(hub->hdev)) @@ -2417,10 +2513,10 @@ return 0; } } else { - if (portchange & USB_PORT_STAT_C_BH_RESET) - return 0; + return 0; } +delay: /* switch to the long delay after two short delay failures */ if (delay_time >= 2 * HUB_SHORT_RESET_TIME) delay = HUB_LONG_RESET_TIME; @@ -2444,14 +2540,11 @@ msleep(10 + 40); update_devnum(udev, 0); hcd = bus_to_hcd(udev->bus); - if (hcd->driver->reset_device) { - *status = hcd->driver->reset_device(hcd, udev); - if (*status < 0) { - dev_err(&udev->dev, "Cannot reset " - "HCD device state\n"); - break; - } - } + /* 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: @@ -2459,16 +2552,16 @@ clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_RESET); /* FIXME need disconnect() for NOTATTACHED device */ - if (warm) { + if (hub_is_superspeed(hub->hdev)) { clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_BH_PORT_RESET); clear_port_feature(hub->hdev, port1, USB_PORT_FEAT_C_PORT_LINK_STATE); - } else { + } + if (!warm) usb_set_device_state(udev, *status ? USB_STATE_NOTATTACHED : USB_STATE_DEFAULT); - } break; } } @@ -2611,7 +2704,75 @@ return status; } +static bool usb_device_supports_ltm(struct usb_device *udev) +{ + if (udev->speed != USB_SPEED_SUPER || !udev->bos || !udev->bos->ss_cap) + return false; + return udev->bos->ss_cap->bmAttributes & USB_LTM_SUPPORT; +} + +int usb_disable_ltm(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + /* Check if the roothub and device supports LTM. */ + if (!usb_device_supports_ltm(hcd->self.root_hub) || + !usb_device_supports_ltm(udev)) + return 0; + + /* Clear Feature LTM Enable can only be sent if the device is + * configured. + */ + if (!udev->actconfig) + return 0; + + return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, + USB_DEVICE_LTM_ENABLE, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} +EXPORT_SYMBOL_GPL(usb_disable_ltm); + +void usb_enable_ltm(struct usb_device *udev) +{ + struct usb_hcd *hcd = bus_to_hcd(udev->bus); + + /* Check if the roothub and device supports LTM. */ + if (!usb_device_supports_ltm(hcd->self.root_hub) || + !usb_device_supports_ltm(udev)) + return; + + /* Set Feature LTM Enable can only be sent if the device is + * configured. + */ + if (!udev->actconfig) + return; + + usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_SET_FEATURE, USB_RECIP_DEVICE, + USB_DEVICE_LTM_ENABLE, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} +EXPORT_SYMBOL_GPL(usb_enable_ltm); + #ifdef CONFIG_USB_SUSPEND +/* + * usb_disable_function_remotewakeup - disable usb3.0 + * device's function remote wakeup + * @udev: target device + * + * Assume there's only one function on the USB 3.0 + * device and disable remote wake for the first + * interface. FIXME if the interface association + * descriptor shows there's more than one function. + */ +static int usb_disable_function_remotewakeup(struct usb_device *udev) +{ + return usb_control_msg(udev, usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_INTERFACE, + USB_INTRF_FUNC_SUSPEND, 0, NULL, 0, + USB_CTRL_SET_TIMEOUT); +} /* * usb_port_suspend - suspend a usb device's upstream port @@ -2706,6 +2867,11 @@ if (udev->usb2_hw_lpm_enabled == 1) usb_set_usb2_hardware_lpm(udev, 0); + if (usb_disable_ltm(udev)) { + dev_err(&udev->dev, "%s Failed to disable LTM before suspend\n.", + __func__); + return -ENOMEM; + } if (usb_unlocked_disable_lpm(udev)) { dev_err(&udev->dev, "%s Failed to disable LPM before suspend\n.", __func__); @@ -2724,18 +2890,26 @@ dev_dbg(hub->intfdev, "can't suspend port %d, status %d\n", port1, status); /* paranoia: "should not happen" */ - if (udev->do_remote_wakeup) - (void) usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, - USB_DEVICE_REMOTE_WAKEUP, 0, - NULL, 0, - USB_CTRL_SET_TIMEOUT); + if (udev->do_remote_wakeup) { + if (!hub_is_superspeed(hub->hdev)) { + (void) usb_control_msg(udev, + usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, + USB_RECIP_DEVICE, + USB_DEVICE_REMOTE_WAKEUP, 0, + NULL, 0, + USB_CTRL_SET_TIMEOUT); + } else + (void) usb_disable_function_remotewakeup(udev); + + } /* Try to enable USB2 hardware LPM again */ if (udev->usb2_hw_lpm_capable == 1) usb_set_usb2_hardware_lpm(udev, 1); - /* Try to enable USB3 LPM again */ + /* Try to enable USB3 LTM and LPM again */ + usb_enable_ltm(udev); usb_unlocked_enable_lpm(udev); /* System sleep transitions should never fail */ @@ -2767,7 +2941,7 @@ static int finish_port_resume(struct usb_device *udev) { int status = 0; - u16 devstatus; + u16 devstatus = 0; /* caller owns the udev device lock */ dev_dbg(&udev->dev, "%s\n", @@ -2812,21 +2986,37 @@ if (status) { dev_dbg(&udev->dev, "gone after usb resume? status %d\n", status); - } else if (udev->actconfig) { - le16_to_cpus(&devstatus); - if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) { - status = usb_control_msg(udev, - usb_sndctrlpipe(udev, 0), - USB_REQ_CLEAR_FEATURE, + /* + * There are a few quirky devices which violate the standard + * by claiming to have remote wakeup enabled after a reset, + * which crash if the feature is cleared, hence check for + * udev->reset_resume + */ + } else if (udev->actconfig && !udev->reset_resume) { + if (!hub_is_superspeed(udev->parent)) { + le16_to_cpus(&devstatus); + if (devstatus & (1 << USB_DEVICE_REMOTE_WAKEUP)) + status = usb_control_msg(udev, + usb_sndctrlpipe(udev, 0), + USB_REQ_CLEAR_FEATURE, USB_RECIP_DEVICE, - USB_DEVICE_REMOTE_WAKEUP, 0, - NULL, 0, - USB_CTRL_SET_TIMEOUT); - if (status) - dev_dbg(&udev->dev, - "disable remote wakeup, status %d\n", - status); + USB_DEVICE_REMOTE_WAKEUP, 0, + NULL, 0, + USB_CTRL_SET_TIMEOUT); + } else { + status = usb_get_status(udev, USB_RECIP_INTERFACE, 0, + &devstatus); + le16_to_cpus(&devstatus); + if (!status && devstatus & (USB_INTRF_STAT_FUNC_RW_CAP + | USB_INTRF_STAT_FUNC_RW)) + status = + usb_disable_function_remotewakeup(udev); } + + if (status) + dev_dbg(&udev->dev, + "disable remote wakeup, status %d\n", + status); status = 0; } return status; @@ -2936,7 +3126,8 @@ if (udev->usb2_hw_lpm_capable == 1) usb_set_usb2_hardware_lpm(udev, 1); - /* Try to enable USB3 LPM */ + /* Try to enable USB3 LTM and LPM */ + usb_enable_ltm(udev); usb_unlocked_enable_lpm(udev); } @@ -3190,16 +3381,6 @@ if (enable) { /* - * First, let the device know about the exit latencies - * associated with the link state we're about to enable. - */ - ret = usb_req_set_sel(udev, state); - if (ret < 0) { - dev_warn(&udev->dev, "Set SEL for device-initiated " - "%s failed.\n", usb3_lpm_names[state]); - return -EBUSY; - } - /* * Now send the control transfer to enable device-initiated LPM * for either U1 or U2. */ @@ -3284,7 +3465,28 @@ static void usb_enable_link_state(struct usb_hcd *hcd, struct usb_device *udev, enum usb3_link_state state) { - int timeout; + int timeout, ret; + __u8 u1_mel = udev->bos->ss_cap->bU1devExitLat; + __le16 u2_mel = udev->bos->ss_cap->bU2DevExitLat; + + /* If the device says it doesn't have *any* exit latency to come out of + * U1 or U2, it's probably lying. Assume it doesn't implement that link + * state. + */ + if ((state == USB3_LPM_U1 && u1_mel == 0) || + (state == USB3_LPM_U2 && u2_mel == 0)) + return; + + /* + * First, let the device know about the exit latencies + * associated with the link state we're about to enable. + */ + ret = usb_req_set_sel(udev, state); + if (ret < 0) { + dev_warn(&udev->dev, "Set SEL for device-initiated %s failed.\n", + usb3_lpm_names[state]); + return; + } /* We allow the host controller to set the U1/U2 timeout internally * first, so that it can change its schedule to account for the @@ -3489,6 +3691,15 @@ void usb_unlocked_enable_lpm(struct usb_device *udev) { } EXPORT_SYMBOL_GPL(usb_unlocked_enable_lpm); + +int usb_disable_ltm(struct usb_device *udev) +{ + return 0; +} +EXPORT_SYMBOL_GPL(usb_disable_ltm); + +void usb_enable_ltm(struct usb_device *udev) { } +EXPORT_SYMBOL_GPL(usb_enable_ltm); #endif @@ -4672,6 +4883,23 @@ } parent_hub = hdev_to_hub(parent_hdev); + /* 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 + * them up again. + */ + ret = usb_unlocked_disable_lpm(udev); + if (ret) { + dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__); + goto re_enumerate; + } + ret = usb_disable_ltm(udev); + if (ret) { + dev_err(&udev->dev, "%s Failed to disable LTM\n.", + __func__); + goto re_enumerate; + } + set_bit(port1, parent_hub->busy_bits); for (i = 0; i < SET_CONFIG_TRIES; ++i) { @@ -4699,22 +4927,11 @@ goto done; mutex_lock(hcd->bandwidth_mutex); - /* Disable LPM 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 them up again. - */ - ret = usb_disable_lpm(udev); - if (ret) { - dev_err(&udev->dev, "%s Failed to disable LPM\n.", __func__); - mutex_unlock(hcd->bandwidth_mutex); - goto done; - } ret = usb_hcd_alloc_bandwidth(udev, udev->actconfig, NULL, NULL); if (ret < 0) { dev_warn(&udev->dev, "Busted HC? Not enough HCD resources for " "old configuration.\n"); - usb_enable_lpm(udev); mutex_unlock(hcd->bandwidth_mutex); goto re_enumerate; } @@ -4726,7 +4943,6 @@ dev_err(&udev->dev, "can't restore configuration #%d (error=%d)\n", udev->actconfig->desc.bConfigurationValue, ret); - usb_enable_lpm(udev); mutex_unlock(hcd->bandwidth_mutex); goto re_enumerate; } @@ -4765,17 +4981,18 @@ desc->bInterfaceNumber, desc->bAlternateSetting, ret); - usb_unlocked_enable_lpm(udev); goto re_enumerate; } } - /* Now that the alt settings are re-installed, enable LPM. */ - usb_unlocked_enable_lpm(udev); done: + /* Now that the alt settings are re-installed, enable LTM and LPM. */ + usb_unlocked_enable_lpm(udev); + usb_enable_ltm(udev); return 0; re_enumerate: + /* LPM state doesn't matter when we're about to destroy the device. */ hub_port_logical_disconnect(parent_hub, port1); return -ENODEV; } --- linux-3.5.0.orig/drivers/usb/core/driver.c +++ linux-3.5.0/drivers/usb/core/driver.c @@ -371,6 +371,10 @@ intf->condition = USB_INTERFACE_UNBOUND; usb_cancel_queued_reset(intf); + /* If the LPM disable succeeded, balance the ref counts. */ + if (!lpm_disable_error) + usb_unlocked_enable_lpm(udev); + /* Unbound interfaces are always runtime-PM-disabled and -suspended */ if (driver->supports_autosuspend) pm_runtime_disable(dev); --- linux-3.5.0.orig/drivers/usb/core/hcd.c +++ linux-3.5.0/drivers/usb/core/hcd.c @@ -1011,10 +1011,7 @@ if (retval) { dev_err (parent_dev, "can't register root hub for %s, %d\n", dev_name(&usb_dev->dev), retval); - } - mutex_unlock(&usb_bus_list_lock); - - if (retval == 0) { + } else { spin_lock_irq (&hcd_root_hub_lock); hcd->rh_registered = 1; spin_unlock_irq (&hcd_root_hub_lock); @@ -1023,6 +1020,7 @@ if (HCD_DEAD(hcd)) usb_hc_died (hcd); /* This time clean up */ } + mutex_unlock(&usb_bus_list_lock); return retval; } --- linux-3.5.0.orig/drivers/usb/core/usb.c +++ linux-3.5.0/drivers/usb/core/usb.c @@ -396,6 +396,7 @@ dev->dev.dma_mask = bus->controller->dma_mask; set_dev_node(&dev->dev, dev_to_node(bus->controller)); dev->state = USB_STATE_ATTACHED; + dev->lpm_disable_count = 1; atomic_set(&dev->urbnum, 0); INIT_LIST_HEAD(&dev->ep0.urb_list); --- linux-3.5.0.orig/drivers/usb/core/message.c +++ linux-3.5.0/drivers/usb/core/message.c @@ -1174,6 +1174,8 @@ put_device(&dev->actconfig->interface[i]->dev); dev->actconfig->interface[i] = NULL; } + usb_unlocked_disable_lpm(dev); + usb_disable_ltm(dev); dev->actconfig = NULL; if (dev->state == USB_STATE_CONFIGURED) usb_set_device_state(dev, USB_STATE_ADDRESS); @@ -1791,42 +1793,22 @@ * installed, so that the xHCI driver can recalculate the U1/U2 * timeouts. */ - if (usb_disable_lpm(dev)) { + if (dev->actconfig && usb_disable_lpm(dev)) { dev_err(&dev->dev, "%s Failed to disable LPM\n.", __func__); mutex_unlock(hcd->bandwidth_mutex); return -ENOMEM; } ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL); if (ret < 0) { - usb_enable_lpm(dev); - mutex_unlock(hcd->bandwidth_mutex); - usb_autosuspend_device(dev); - goto free_interfaces; - } - - ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), - USB_REQ_SET_CONFIGURATION, 0, configuration, 0, - NULL, 0, USB_CTRL_SET_TIMEOUT); - if (ret < 0) { - /* All the old state is gone, so what else can we do? - * The device is probably useless now anyway. - */ - cp = NULL; - } - - dev->actconfig = cp; - if (!cp) { - usb_set_device_state(dev, USB_STATE_ADDRESS); - usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); - usb_enable_lpm(dev); + if (dev->actconfig) + usb_enable_lpm(dev); mutex_unlock(hcd->bandwidth_mutex); usb_autosuspend_device(dev); goto free_interfaces; } - mutex_unlock(hcd->bandwidth_mutex); - usb_set_device_state(dev, USB_STATE_CONFIGURED); - /* Initialize the new interface structures and the + /* + * Initialize the new interface structures and the * hc/hcd/usbcore interface/endpoint state. */ for (i = 0; i < nintf; ++i) { @@ -1870,12 +1852,43 @@ } kfree(new_interfaces); + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), + USB_REQ_SET_CONFIGURATION, 0, configuration, 0, + NULL, 0, USB_CTRL_SET_TIMEOUT); + if (ret < 0 && cp) { + /* + * All the old state is gone, so what else can we do? + * The device is probably useless now anyway. + */ + usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL); + for (i = 0; i < nintf; ++i) { + usb_disable_interface(dev, cp->interface[i], true); + put_device(&cp->interface[i]->dev); + cp->interface[i] = NULL; + } + cp = NULL; + } + + dev->actconfig = cp; + mutex_unlock(hcd->bandwidth_mutex); + + if (!cp) { + usb_set_device_state(dev, USB_STATE_ADDRESS); + + /* Leave LPM disabled while the device is unconfigured. */ + usb_autosuspend_device(dev); + return ret; + } + usb_set_device_state(dev, USB_STATE_CONFIGURED); + if (cp->string == NULL && !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS)) cp->string = usb_cache_string(dev, cp->desc.iConfiguration); /* Now that the interfaces are installed, re-enable LPM. */ usb_unlocked_enable_lpm(dev); + /* Enable LTM if it was turned off by usb_disable_device. */ + usb_enable_ltm(dev); /* Now that all the interfaces are set up, register them * to trigger binding of drivers to interfaces. probe() --- linux-3.5.0.orig/drivers/usb/core/devio.c +++ linux-3.5.0/drivers/usb/core/devio.c @@ -1604,10 +1604,14 @@ void __user *addr = as->userurb; unsigned int i; - if (as->userbuffer && urb->actual_length) - if (copy_to_user(as->userbuffer, urb->transfer_buffer, - urb->actual_length)) + if (as->userbuffer && urb->actual_length) { + if (urb->number_of_packets > 0) /* Isochronous */ + i = urb->transfer_buffer_length; + else /* Non-Isoc */ + i = urb->actual_length; + if (copy_to_user(as->userbuffer, urb->transfer_buffer, i)) return -EFAULT; + } if (put_user(as->status, &userurb->status)) return -EFAULT; if (put_user(urb->actual_length, &userurb->actual_length)) --- linux-3.5.0.orig/drivers/usb/core/quirks.c +++ linux-3.5.0/drivers/usb/core/quirks.c @@ -38,6 +38,9 @@ /* Creative SB Audigy 2 NX */ { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Microsoft LifeCam-VX700 v2.0 */ + { USB_DEVICE(0x045e, 0x0770), .driver_info = USB_QUIRK_RESET_RESUME }, + /* Logitech Webcam C200 */ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME }, @@ -96,6 +99,10 @@ { USB_DEVICE(0x04b4, 0x0526), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Microchip Joss Optical infrared touchboard device */ + { USB_DEVICE(0x04d8, 0x000c), .driver_info = + USB_QUIRK_CONFIG_INTF_STRINGS }, + /* Samsung Android phone modem - ID conflict with SPH-I500 */ { USB_DEVICE(0x04e8, 0x6601), .driver_info = USB_QUIRK_CONFIG_INTF_STRINGS }, --- linux-3.5.0.orig/drivers/usb/core/usb.h +++ linux-3.5.0/drivers/usb/core/usb.h @@ -1,5 +1,7 @@ #include +struct dev_state; + /* Functions local to drivers/usb/core/ */ extern int usb_create_sysfs_dev_files(struct usb_device *dev); @@ -41,10 +43,11 @@ extern void usb_rebind_intf(struct usb_interface *intf); extern int usb_hub_claim_port(struct usb_device *hdev, unsigned port, - void *owner); + struct dev_state *owner); extern int usb_hub_release_port(struct usb_device *hdev, unsigned port, - void *owner); -extern void usb_hub_release_all_ports(struct usb_device *hdev, void *owner); + struct dev_state *owner); +extern void usb_hub_release_all_ports(struct usb_device *hdev, + struct dev_state *owner); extern bool usb_device_is_owned(struct usb_device *udev); extern int usb_hub_init(void); --- linux-3.5.0.orig/drivers/usb/core/sysfs.c +++ linux-3.5.0/drivers/usb/core/sysfs.c @@ -85,9 +85,9 @@ int retval; \ \ udev = to_usb_device(dev); \ - usb_lock_device(udev); \ - retval = sprintf(buf, "%s\n", udev->name); \ - usb_unlock_device(udev); \ + rcu_read_lock(); \ + retval = sprintf(buf, "%s\n", rcu_dereference(udev->name)); \ + rcu_read_unlock(); \ return retval; \ } \ static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL); --- linux-3.5.0.orig/drivers/usb/core/devices.c +++ linux-3.5.0/drivers/usb/core/devices.c @@ -624,7 +624,7 @@ /* print devices for all busses */ list_for_each_entry(bus, &usb_bus_list, bus_list) { /* recurse through all children of the root hub */ - if (!bus->root_hub) + if (!bus_to_hcd(bus)->rh_registered) continue; usb_lock_device(bus->root_hub); ret = usb_device_dump(&buf, &nbytes, &skip_bytes, ppos, --- linux-3.5.0.orig/drivers/usb/atm/ueagle-atm.c +++ linux-3.5.0/drivers/usb/atm/ueagle-atm.c @@ -307,6 +307,34 @@ #define FW_GET_BYTE(p) (*((__u8 *) (p))) #define FW_DIR "ueagle-atm/" +#define EAGLE_FIRMWARE FW_DIR "eagle.fw" +#define ADI930_FIRMWARE FW_DIR "adi930.fw" +#define EAGLE_I_FIRMWARE FW_DIR "eagleI.fw" +#define EAGLE_II_FIRMWARE FW_DIR "eagleII.fw" +#define EAGLE_III_FIRMWARE FW_DIR "eagleIII.fw" +#define EAGLE_IV_FIRMWARE FW_DIR "eagleIV.fw" + +#define DSP4I_FIRMWARE FW_DIR "DSP4i.bin" +#define DSP4P_FIRMWARE FW_DIR "DSP4p.bin" +#define DSP9I_FIRMWARE FW_DIR "DSP9i.bin" +#define DSP9P_FIRMWARE FW_DIR "DSP9p.bin" +#define DSPEI_FIRMWARE FW_DIR "DSPei.bin" +#define DSPEP_FIRMWARE FW_DIR "DSPep.bin" +#define FPGA930_FIRMWARE FW_DIR "930-fpga.bin" + +#define CMV4P_FIRMWARE FW_DIR "CMV4p.bin" +#define CMV4PV2_FIRMWARE FW_DIR "CMV4p.bin.v2" +#define CMV4I_FIRMWARE FW_DIR "CMV4i.bin" +#define CMV4IV2_FIRMWARE FW_DIR "CMV4i.bin.v2" +#define CMV9P_FIRMWARE FW_DIR "CMV9p.bin" +#define CMV9PV2_FIRMWARE FW_DIR "CMV9p.bin.v2" +#define CMV9I_FIRMWARE FW_DIR "CMV9i.bin" +#define CMV9IV2_FIRMWARE FW_DIR "CMV9i.bin.v2" +#define CMVEP_FIRMWARE FW_DIR "CMVep.bin" +#define CMVEPV2_FIRMWARE FW_DIR "CMVep.bin.v2" +#define CMVEI_FIRMWARE FW_DIR "CMVei.bin" +#define CMVEIV2_FIRMWARE FW_DIR "CMVei.bin.v2" + #define UEA_FW_NAME_MAX 30 #define NB_MODEM 4 @@ -694,26 +722,26 @@ static int uea_load_firmware(struct usb_device *usb, unsigned int ver) { int ret; - char *fw_name = FW_DIR "eagle.fw"; + char *fw_name = EAGLE_FIRMWARE; uea_enters(usb); uea_info(usb, "pre-firmware device, uploading firmware\n"); switch (ver) { case ADI930: - fw_name = FW_DIR "adi930.fw"; + fw_name = ADI930_FIRMWARE; break; case EAGLE_I: - fw_name = FW_DIR "eagleI.fw"; + fw_name = EAGLE_I_FIRMWARE; break; case EAGLE_II: - fw_name = FW_DIR "eagleII.fw"; + fw_name = EAGLE_II_FIRMWARE; break; case EAGLE_III: - fw_name = FW_DIR "eagleIII.fw"; + fw_name = EAGLE_III_FIRMWARE; break; case EAGLE_IV: - fw_name = FW_DIR "eagleIV.fw"; + fw_name = EAGLE_IV_FIRMWARE; break; } @@ -869,19 +897,19 @@ if (UEA_CHIP_VERSION(sc) == EAGLE_IV) { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSP4i.bin"; + dsp_name = DSP4I_FIRMWARE; else - dsp_name = FW_DIR "DSP4p.bin"; + dsp_name = DSP4P_FIRMWARE; } else if (UEA_CHIP_VERSION(sc) == ADI930) { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSP9i.bin"; + dsp_name = DSP9I_FIRMWARE; else - dsp_name = FW_DIR "DSP9p.bin"; + dsp_name = DSP9P_FIRMWARE; } else { if (IS_ISDN(sc)) - dsp_name = FW_DIR "DSPei.bin"; + dsp_name = DSPEI_FIRMWARE; else - dsp_name = FW_DIR "DSPep.bin"; + dsp_name = DSPEP_FIRMWARE; } ret = request_firmware(&sc->dsp_firm, dsp_name, &sc->usb_dev->dev); @@ -1925,7 +1953,7 @@ int ret, size, u, ln; const u8 *pfw; u8 value; - char *fw_name = FW_DIR "930-fpga.bin"; + char *fw_name = FPGA930_FIRMWARE; uea_enters(INS_TO_USBDEV(sc)); @@ -2753,3 +2781,28 @@ MODULE_AUTHOR("Damien Bergamini/Matthieu Castet/Stanislaw W. Gruszka"); MODULE_DESCRIPTION("ADI 930/Eagle USB ADSL Modem driver"); MODULE_LICENSE("Dual BSD/GPL"); +MODULE_FIRMWARE(EAGLE_FIRMWARE); +MODULE_FIRMWARE(ADI930_FIRMWARE); +MODULE_FIRMWARE(EAGLE_I_FIRMWARE); +MODULE_FIRMWARE(EAGLE_II_FIRMWARE); +MODULE_FIRMWARE(EAGLE_III_FIRMWARE); +MODULE_FIRMWARE(EAGLE_IV_FIRMWARE); +MODULE_FIRMWARE(DSP4I_FIRMWARE); +MODULE_FIRMWARE(DSP4P_FIRMWARE); +MODULE_FIRMWARE(DSP9I_FIRMWARE); +MODULE_FIRMWARE(DSP9P_FIRMWARE); +MODULE_FIRMWARE(DSPEI_FIRMWARE); +MODULE_FIRMWARE(DSPEP_FIRMWARE); +MODULE_FIRMWARE(FPGA930_FIRMWARE); +MODULE_FIRMWARE(CMV4P_FIRMWARE); +MODULE_FIRMWARE(CMV4PV2_FIRMWARE); +MODULE_FIRMWARE(CMV4I_FIRMWARE); +MODULE_FIRMWARE(CMV4IV2_FIRMWARE); +MODULE_FIRMWARE(CMV9P_FIRMWARE); +MODULE_FIRMWARE(CMV9PV2_FIRMWARE); +MODULE_FIRMWARE(CMV9I_FIRMWARE); +MODULE_FIRMWARE(CMV9IV2_FIRMWARE); +MODULE_FIRMWARE(CMVEP_FIRMWARE); +MODULE_FIRMWARE(CMVEPV2_FIRMWARE); +MODULE_FIRMWARE(CMVEI_FIRMWARE); +MODULE_FIRMWARE(CMVEIV2_FIRMWARE); --- linux-3.5.0.orig/drivers/usb/misc/emi62.c +++ linux-3.5.0/drivers/usb/misc/emi62.c @@ -232,7 +232,7 @@ return err; } -static const struct usb_device_id id_table[] __devinitconst = { +static const struct usb_device_id id_table[] = { { USB_DEVICE(EMI62_VENDOR_ID, EMI62_PRODUCT_ID) }, { } /* Terminating entry */ }; --- linux-3.5.0.orig/drivers/usb/musb/cppi_dma.c +++ linux-3.5.0/drivers/usb/musb/cppi_dma.c @@ -1314,6 +1314,7 @@ return IRQ_HANDLED; } +EXPORT_SYMBOL_GPL(cppi_interrupt); /* Instantiate a software object representing a DMA controller. */ struct dma_controller *__init --- linux-3.5.0.orig/drivers/usb/musb/musb_core.c +++ linux-3.5.0/drivers/usb/musb/musb_core.c @@ -2402,10 +2402,7 @@ if (usb_disabled()) return 0; - pr_info("%s: version " MUSB_VERSION ", " - "?dma?" - ", " - "otg (peripheral+host)", + pr_info("%s: version " MUSB_VERSION ", ?dma?, otg (peripheral+host)\n", musb_driver_name); return platform_driver_register(&musb_driver); } --- linux-3.5.0.orig/drivers/usb/musb/am35x.c +++ linux-3.5.0/drivers/usb/musb/am35x.c @@ -311,6 +311,12 @@ ret = IRQ_HANDLED; } + /* Drop spurious RX and TX if device is disconnected */ + if (musb->int_usb & MUSB_INTR_DISCONNECT) { + musb->int_tx = 0; + musb->int_rx = 0; + } + if (musb->int_tx || musb->int_rx || musb->int_usb) ret |= musb_interrupt(musb); --- linux-3.5.0.orig/drivers/usb/storage/usual-tables.c +++ linux-3.5.0/drivers/usb/storage/usual-tables.c @@ -46,6 +46,20 @@ { USB_INTERFACE_INFO(USB_CLASS_MASS_STORAGE, useProto, useTrans), \ .driver_info = ((useType)<<24) } +/* Define the device is matched with Vendor ID and interface descriptors */ +#define UNUSUAL_VENDOR_INTF(id_vendor, cl, sc, pr, \ + vendorName, productName, useProtocol, useTransport, \ + initFunction, flags) \ +{ \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (id_vendor), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr), \ + .driver_info = (flags) \ +} + struct usb_device_id usb_storage_usb_ids[] = { # include "unusual_devs.h" { } /* Terminating entry */ @@ -57,6 +71,7 @@ #undef UNUSUAL_DEV #undef COMPLIANT_DEV #undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF /* --- linux-3.5.0.orig/drivers/usb/storage/Kconfig +++ linux-3.5.0/drivers/usb/storage/Kconfig @@ -203,7 +203,7 @@ config USB_UAS tristate "USB Attached SCSI" - depends on USB && SCSI + depends on USB && SCSI && BROKEN help The USB Attached SCSI protocol is supported by some USB storage devices. It permits higher performance by supporting --- linux-3.5.0.orig/drivers/usb/storage/uas.c +++ linux-3.5.0/drivers/usb/storage/uas.c @@ -58,9 +58,6 @@ SUBMIT_DATA_OUT_URB = (1 << 5), ALLOC_CMD_URB = (1 << 6), SUBMIT_CMD_URB = (1 << 7), - COMPLETED_DATA_IN = (1 << 8), - COMPLETED_DATA_OUT = (1 << 9), - DATA_COMPLETES_CMD = (1 << 10), }; /* Overrides scsi_pointer */ @@ -114,7 +111,6 @@ { struct sense_iu *sense_iu = urb->transfer_buffer; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; if (urb->actual_length > 16) { unsigned len = be16_to_cpup(&sense_iu->len); @@ -132,15 +128,13 @@ } cmnd->result = sense_iu->status; - if (!(cmdinfo->state & DATA_COMPLETES_CMD)) - cmnd->scsi_done(cmnd); + cmnd->scsi_done(cmnd); } static void uas_sense_old(struct urb *urb, struct scsi_cmnd *cmnd) { struct sense_iu_old *sense_iu = urb->transfer_buffer; struct scsi_device *sdev = cmnd->device; - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; if (urb->actual_length > 8) { unsigned len = be16_to_cpup(&sense_iu->len) - 2; @@ -158,8 +152,7 @@ } cmnd->result = sense_iu->status; - if (!(cmdinfo->state & DATA_COMPLETES_CMD)) - cmnd->scsi_done(cmnd); + cmnd->scsi_done(cmnd); } static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd, @@ -184,7 +177,6 @@ struct Scsi_Host *shost = urb->context; struct uas_dev_info *devinfo = (void *)shost->hostdata[0]; struct scsi_cmnd *cmnd; - struct uas_cmd_info *cmdinfo; u16 tag; int ret; @@ -210,32 +202,12 @@ dev_err(&urb->dev->dev, "failed submit status urb\n"); return; } - cmdinfo = (void *)&cmnd->SCp; switch (iu->iu_id) { case IU_ID_STATUS: if (devinfo->cmnd == cmnd) devinfo->cmnd = NULL; - if (!(cmdinfo->state & COMPLETED_DATA_IN) && - cmdinfo->data_in_urb) { - if (devinfo->use_streams) { - cmdinfo->state |= DATA_COMPLETES_CMD; - usb_unlink_urb(cmdinfo->data_in_urb); - } else { - usb_free_urb(cmdinfo->data_in_urb); - } - } - if (!(cmdinfo->state & COMPLETED_DATA_OUT) && - cmdinfo->data_out_urb) { - if (devinfo->use_streams) { - cmdinfo->state |= DATA_COMPLETES_CMD; - usb_unlink_urb(cmdinfo->data_in_urb); - } else { - usb_free_urb(cmdinfo->data_out_urb); - } - } - if (urb->actual_length < 16) devinfo->uas_sense_old = 1; if (devinfo->uas_sense_old) @@ -264,59 +236,27 @@ dev_err(&urb->dev->dev, "failed submit status urb\n"); } -static void uas_data_out_cmplt(struct urb *urb) -{ - struct scsi_cmnd *cmnd = urb->context; - struct scsi_data_buffer *sdb = scsi_out(cmnd); - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; - - cmdinfo->state |= COMPLETED_DATA_OUT; - - sdb->resid = sdb->length - urb->actual_length; - usb_free_urb(urb); - - if (cmdinfo->state & DATA_COMPLETES_CMD) - cmnd->scsi_done(cmnd); -} - -static void uas_data_in_cmplt(struct urb *urb) +static void uas_data_cmplt(struct urb *urb) { - struct scsi_cmnd *cmnd = urb->context; - struct scsi_data_buffer *sdb = scsi_in(cmnd); - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; - - cmdinfo->state |= COMPLETED_DATA_IN; - + struct scsi_data_buffer *sdb = urb->context; sdb->resid = sdb->length - urb->actual_length; usb_free_urb(urb); - - if (cmdinfo->state & DATA_COMPLETES_CMD) - cmnd->scsi_done(cmnd); } static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp, - unsigned int pipe, struct scsi_cmnd *cmnd, - enum dma_data_direction dir) + unsigned int pipe, u16 stream_id, + struct scsi_data_buffer *sdb, + enum dma_data_direction dir) { - struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp; struct usb_device *udev = devinfo->udev; struct urb *urb = usb_alloc_urb(0, gfp); - struct scsi_data_buffer *sdb; - usb_complete_t complete_fn; - u16 stream_id = cmdinfo->stream; if (!urb) goto out; - if (dir == DMA_FROM_DEVICE) { - sdb = scsi_in(cmnd); - complete_fn = uas_data_in_cmplt; - } else { - sdb = scsi_out(cmnd); - complete_fn = uas_data_out_cmplt; - } - usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length, - complete_fn, cmnd); - urb->stream_id = stream_id; + usb_fill_bulk_urb(urb, udev, pipe, NULL, sdb->length, uas_data_cmplt, + sdb); + if (devinfo->use_streams) + urb->stream_id = stream_id; urb->num_sgs = udev->bus->sg_tablesize ? sdb->table.nents : 0; urb->sg = sdb->table.sgl; out: @@ -418,8 +358,8 @@ if (cmdinfo->state & ALLOC_DATA_IN_URB) { cmdinfo->data_in_urb = uas_alloc_data_urb(devinfo, gfp, - devinfo->data_in_pipe, cmnd, - DMA_FROM_DEVICE); + devinfo->data_in_pipe, cmdinfo->stream, + scsi_in(cmnd), DMA_FROM_DEVICE); if (!cmdinfo->data_in_urb) return SCSI_MLQUEUE_DEVICE_BUSY; cmdinfo->state &= ~ALLOC_DATA_IN_URB; @@ -436,8 +376,8 @@ if (cmdinfo->state & ALLOC_DATA_OUT_URB) { cmdinfo->data_out_urb = uas_alloc_data_urb(devinfo, gfp, - devinfo->data_out_pipe, cmnd, - DMA_TO_DEVICE); + devinfo->data_out_pipe, cmdinfo->stream, + scsi_out(cmnd), DMA_TO_DEVICE); if (!cmdinfo->data_out_urb) return SCSI_MLQUEUE_DEVICE_BUSY; cmdinfo->state &= ~ALLOC_DATA_OUT_URB; --- linux-3.5.0.orig/drivers/usb/storage/initializers.h +++ linux-3.5.0/drivers/usb/storage/initializers.h @@ -46,5 +46,5 @@ * flash reader */ int usb_stor_ucr61s2b_init(struct us_data *us); -/* This places the HUAWEI E220 devices in multi-port mode */ -int usb_stor_huawei_e220_init(struct us_data *us); +/* This places the HUAWEI usb dongles in multi-port mode */ +int usb_stor_huawei_init(struct us_data *us); --- linux-3.5.0.orig/drivers/usb/storage/usb.c +++ linux-3.5.0/drivers/usb/storage/usb.c @@ -120,6 +120,17 @@ .useTransport = use_transport, \ } +#define UNUSUAL_VENDOR_INTF(idVendor, cl, sc, pr, \ + vendor_name, product_name, use_protocol, use_transport, \ + init_function, Flags) \ +{ \ + .vendorName = vendor_name, \ + .productName = product_name, \ + .useProtocol = use_protocol, \ + .useTransport = use_transport, \ + .initFunction = init_function, \ +} + static struct us_unusual_dev us_unusual_dev_list[] = { # include "unusual_devs.h" { } /* Terminating entry */ @@ -131,6 +142,7 @@ #undef UNUSUAL_DEV #undef COMPLIANT_DEV #undef USUAL_DEV +#undef UNUSUAL_VENDOR_INTF #ifdef CONFIG_LOCKDEP --- linux-3.5.0.orig/drivers/usb/storage/ene_ub6250.c +++ linux-3.5.0/drivers/usb/storage/ene_ub6250.c @@ -29,9 +29,21 @@ #include "protocol.h" #include "debug.h" +#define SD_INIT1_FIRMWARE "ene-ub6250/sd_init1.bin" +#define SD_INIT2_FIRMWARE "ene-ub6250/sd_init2.bin" +#define SD_RW_FIRMWARE "ene-ub6250/sd_rdwr.bin" +#define MS_INIT_FIRMWARE "ene-ub6250/ms_init.bin" +#define MSP_RW_FIRMWARE "ene-ub6250/msp_rdwr.bin" +#define MS_RW_FIRMWARE "ene-ub6250/ms_rdwr.bin" + MODULE_DESCRIPTION("Driver for ENE UB6250 reader"); MODULE_LICENSE("GPL"); - +MODULE_FIRMWARE(SD_INIT1_FIRMWARE); +MODULE_FIRMWARE(SD_INIT2_FIRMWARE); +MODULE_FIRMWARE(SD_RW_FIRMWARE); +MODULE_FIRMWARE(MS_INIT_FIRMWARE); +MODULE_FIRMWARE(MSP_RW_FIRMWARE); +MODULE_FIRMWARE(MS_RW_FIRMWARE); /* * The table of devices @@ -1883,28 +1895,28 @@ /* For SD */ case SD_INIT1_PATTERN: US_DEBUGP("SD_INIT1_PATTERN\n"); - fw_name = "ene-ub6250/sd_init1.bin"; + fw_name = SD_INIT1_FIRMWARE; break; case SD_INIT2_PATTERN: US_DEBUGP("SD_INIT2_PATTERN\n"); - fw_name = "ene-ub6250/sd_init2.bin"; + fw_name = SD_INIT2_FIRMWARE; break; case SD_RW_PATTERN: US_DEBUGP("SD_RDWR_PATTERN\n"); - fw_name = "ene-ub6250/sd_rdwr.bin"; + fw_name = SD_RW_FIRMWARE; break; /* For MS */ case MS_INIT_PATTERN: US_DEBUGP("MS_INIT_PATTERN\n"); - fw_name = "ene-ub6250/ms_init.bin"; + fw_name = MS_INIT_FIRMWARE; break; case MSP_RW_PATTERN: US_DEBUGP("MSP_RW_PATTERN\n"); - fw_name = "ene-ub6250/msp_rdwr.bin"; + fw_name = MSP_RW_FIRMWARE; break; case MS_RW_PATTERN: US_DEBUGP("MS_RW_PATTERN\n"); - fw_name = "ene-ub6250/ms_rdwr.bin"; + fw_name = MS_RW_FIRMWARE; break; default: US_DEBUGP("----------- Unknown PATTERN ----------\n"); --- linux-3.5.0.orig/drivers/usb/storage/initializers.c +++ linux-3.5.0/drivers/usb/storage/initializers.c @@ -92,8 +92,8 @@ return 0; } -/* This places the HUAWEI E220 devices in multi-port mode */ -int usb_stor_huawei_e220_init(struct us_data *us) +/* This places the HUAWEI usb dongles in multi-port mode */ +static int usb_stor_huawei_feature_init(struct us_data *us) { int result; @@ -104,3 +104,75 @@ US_DEBUGP("Huawei mode set result is %d\n", result); return 0; } + +/* + * It will send a scsi switch command called rewind' to huawei dongle. + * When the dongle receives this command at the first time, + * it will reboot immediately. After rebooted, it will ignore this command. + * So it is unnecessary to read its response. + */ +static int usb_stor_huawei_scsi_init(struct us_data *us) +{ + int result = 0; + int act_len = 0; + struct bulk_cb_wrap *bcbw = (struct bulk_cb_wrap *) us->iobuf; + char rewind_cmd[] = {0x11, 0x06, 0x20, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + + bcbw->Signature = cpu_to_le32(US_BULK_CB_SIGN); + bcbw->Tag = 0; + bcbw->DataTransferLength = 0; + bcbw->Flags = bcbw->Lun = 0; + bcbw->Length = sizeof(rewind_cmd); + memset(bcbw->CDB, 0, sizeof(bcbw->CDB)); + memcpy(bcbw->CDB, rewind_cmd, sizeof(rewind_cmd)); + + result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe, bcbw, + US_BULK_CB_WRAP_LEN, &act_len); + US_DEBUGP("transfer actual length=%d, result=%d\n", act_len, result); + return result; +} + +/* + * It tries to find the supported Huawei USB dongles. + * In Huawei, they assign the following product IDs + * for all of their mobile broadband dongles, + * including the new dongles in the future. + * So if the product ID is not included in this list, + * it means it is not Huawei's mobile broadband dongles. + */ +static int usb_stor_huawei_dongles_pid(struct us_data *us) +{ + struct usb_interface_descriptor *idesc; + int idProduct; + + idesc = &us->pusb_intf->cur_altsetting->desc; + idProduct = le16_to_cpu(us->pusb_dev->descriptor.idProduct); + /* The first port is CDROM, + * means the dongle in the single port mode, + * and a switch command is required to be sent. */ + if (idesc && idesc->bInterfaceNumber == 0) { + if ((idProduct == 0x1001) + || (idProduct == 0x1003) + || (idProduct == 0x1004) + || (idProduct >= 0x1401 && idProduct <= 0x1500) + || (idProduct >= 0x1505 && idProduct <= 0x1600) + || (idProduct >= 0x1c02 && idProduct <= 0x2202)) { + return 1; + } + } + return 0; +} + +int usb_stor_huawei_init(struct us_data *us) +{ + int result = 0; + + if (usb_stor_huawei_dongles_pid(us)) { + if (le16_to_cpu(us->pusb_dev->descriptor.idProduct) >= 0x1446) + result = usb_stor_huawei_scsi_init(us); + else + result = usb_stor_huawei_feature_init(us); + } + return result; +} --- linux-3.5.0.orig/drivers/usb/storage/unusual_devs.h +++ linux-3.5.0/drivers/usb/storage/unusual_devs.h @@ -1004,6 +1004,12 @@ USB_SC_8070, USB_PR_CB, NULL, US_FL_NEED_OVERRIDE | US_FL_FIX_INQUIRY ), +/* Submitted by Oleksandr Chumachenko */ +UNUSUAL_DEV( 0x07cf, 0x1167, 0x0100, 0x0100, + "Casio", + "EX-N1 DigitalCamera", + USB_SC_8070, USB_PR_DEVICE, NULL, 0), + /* Submitted by Hartmut Wahl */ UNUSUAL_DEV( 0x0839, 0x000a, 0x0001, 0x0001, "Samsung", @@ -1163,6 +1169,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 @@ -1509,335 +1522,10 @@ /* Reported by fangxiaozhi * This brings the HUAWEI data card devices into multi-port mode */ -UNUSUAL_DEV( 0x12d1, 0x1001, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1003, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1004, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1401, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1402, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1403, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1404, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1405, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1406, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1407, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1408, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1409, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140A, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140B, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140C, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140D, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140E, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x140F, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1410, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1411, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1412, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1413, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1414, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1415, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1416, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1417, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1418, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1419, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141A, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141B, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141C, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141D, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141E, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x141F, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1420, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1421, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1422, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1423, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1424, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1425, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1426, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1427, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1428, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1429, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142A, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142B, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142C, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142D, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142E, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x142F, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1430, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1431, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1432, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1433, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1434, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1435, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1436, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1437, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1438, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x1439, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143A, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143B, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143C, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143D, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143E, 0x0000, 0x0000, - "HUAWEI MOBILE", - "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, - 0), -UNUSUAL_DEV( 0x12d1, 0x143F, 0x0000, 0x0000, +UNUSUAL_VENDOR_INTF(0x12d1, 0x08, 0x06, 0x50, "HUAWEI MOBILE", "Mass Storage", - USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_e220_init, + USB_SC_DEVICE, USB_PR_DEVICE, usb_stor_huawei_init, 0), /* Reported by Vilius Bilinkevicius chip; if (chip == NULL) --- linux-3.5.0.orig/drivers/gpio/gpio-ich.c +++ linux-3.5.0/drivers/gpio/gpio-ich.c @@ -328,6 +328,7 @@ return -ENODEV; } + spin_lock_init(&ichx_priv.lock); res_base = platform_get_resource(pdev, IORESOURCE_IO, ICH_RES_GPIO); if (!res_base || !res_base->start || !res_base->end) return -ENODEV; --- linux-3.5.0.orig/drivers/gpio/gpio-timberdale.c +++ linux-3.5.0/drivers/gpio/gpio-timberdale.c @@ -116,7 +116,7 @@ unsigned long flags; spin_lock_irqsave(&tgpio->lock, flags); - tgpio->last_ier &= ~(1 << offset); + tgpio->last_ier &= ~(1UL << offset); iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); spin_unlock_irqrestore(&tgpio->lock, flags); } @@ -128,7 +128,7 @@ unsigned long flags; spin_lock_irqsave(&tgpio->lock, flags); - tgpio->last_ier |= 1 << offset; + tgpio->last_ier |= 1UL << offset; iowrite32(tgpio->last_ier, tgpio->membase + TGPIO_IER); spin_unlock_irqrestore(&tgpio->lock, flags); } --- linux-3.5.0.orig/drivers/isdn/gigaset/bas-gigaset.c +++ linux-3.5.0/drivers/isdn/gigaset/bas-gigaset.c @@ -617,7 +617,13 @@ if (rc == 0) /* success, resubmit interrupt read URB */ rc = usb_submit_urb(urb, GFP_ATOMIC); - if (rc != 0 && rc != -ENODEV) { + + switch (rc) { + case 0: /* success */ + case -ENODEV: /* device gone */ + case -EINVAL: /* URB already resubmitted, or terminal badness */ + break; + default: /* failure: try to recover by resetting the device */ dev_err(cs->dev, "clear halt failed: %s\n", get_usb_rcmsg(rc)); rc = usb_lock_device_for_reset(ucs->udev, ucs->interface); if (rc == 0) { @@ -2442,7 +2448,9 @@ } /* gigaset_suspend - * This function is called before the USB connection is suspended. + * This function is called before the USB connection is suspended + * or before the USB device is reset. + * In the latter case, message == PMSG_ON. */ static int gigaset_suspend(struct usb_interface *intf, pm_message_t message) { @@ -2498,7 +2506,12 @@ del_timer_sync(&ucs->timer_atrdy); del_timer_sync(&ucs->timer_cmd_in); del_timer_sync(&ucs->timer_int_in); - cancel_work_sync(&ucs->int_in_wq); + + /* don't try to cancel int_in_wq from within reset as it + * might be the one requesting the reset + */ + if (message.event != PM_EVENT_ON) + cancel_work_sync(&ucs->int_in_wq); gig_dbg(DEBUG_SUSPEND, "suspend complete"); return 0; --- linux-3.5.0.orig/drivers/isdn/gigaset/capi.c +++ linux-3.5.0/drivers/isdn/gigaset/capi.c @@ -248,6 +248,8 @@ CAPIMSG_APPID(data), CAPIMSG_MSGID(data), l, CAPIMSG_CONTROL(data)); l -= 12; + if (l <= 0) + return; dbgline = kmalloc(3 * l, GFP_ATOMIC); if (!dbgline) return; --- linux-3.5.0.orig/drivers/isdn/mISDN/layer2.c +++ linux-3.5.0/drivers/isdn/mISDN/layer2.c @@ -2222,7 +2222,7 @@ InitWin(l2); l2->l2m.fsm = &l2fsm; if (test_bit(FLG_LAPB, &l2->flag) || - test_bit(FLG_PTP, &l2->flag) || + test_bit(FLG_FIXED_TEI, &l2->flag) || test_bit(FLG_LAPD_NET, &l2->flag)) l2->l2m.state = ST_L2_4; else --- linux-3.5.0.orig/drivers/isdn/mISDN/hwchannel.c +++ linux-3.5.0/drivers/isdn/mISDN/hwchannel.c @@ -148,17 +148,16 @@ ch->next_minlen = ch->init_minlen; ch->maxlen = ch->init_maxlen; ch->next_maxlen = ch->init_maxlen; + skb_queue_purge(&ch->rqueue); + ch->rcount = 0; } EXPORT_SYMBOL(mISDN_clear_bchannel); -int +void mISDN_freebchannel(struct bchannel *ch) { + cancel_work_sync(&ch->workq); mISDN_clear_bchannel(ch); - skb_queue_purge(&ch->rqueue); - ch->rcount = 0; - flush_work_sync(&ch->workq); - return 0; } EXPORT_SYMBOL(mISDN_freebchannel); --- linux-3.5.0.orig/drivers/isdn/isdnloop/isdnloop.c +++ linux-3.5.0/drivers/isdn/isdnloop/isdnloop.c @@ -16,7 +16,6 @@ #include #include "isdnloop.h" -static char *revision = "$Revision: 1.11.6.7 $"; static char *isdnloop_id = "loop0"; MODULE_DESCRIPTION("ISDN4Linux: Pseudo Driver that simulates an ISDN card"); @@ -1494,17 +1493,6 @@ static int __init isdnloop_init(void) { - char *p; - char rev[10]; - - if ((p = strchr(revision, ':'))) { - strcpy(rev, p + 1); - p = strchr(rev, '$'); - *p = 0; - } else - strcpy(rev, " ??? "); - printk(KERN_NOTICE "isdnloop-ISDN-driver Rev%s\n", rev); - if (isdnloop_id) return (isdnloop_addcard(isdnloop_id)); --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/avmfritz.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/avmfritz.c @@ -449,7 +449,8 @@ { struct fritzcard *fc = bch->hw; struct hdlc_hw *hdlc; - int count, fs, cnt = 0, idx, fillempty = 0; + int count, fs, cnt = 0, idx; + bool fillempty = false; u8 *p; u32 *ptr, val, addr; @@ -462,7 +463,7 @@ return; count = fs; p = bch->fill; - fillempty = 1; + fillempty = true; } else { count = bch->tx_skb->len - bch->tx_idx; if (count <= 0) @@ -477,7 +478,7 @@ hdlc->ctrl.sr.cmd |= HDLC_CMD_XME; } ptr = (u32 *)p; - if (fillempty) { + if (!fillempty) { pr_debug("%s.B%d: %d/%d/%d", fc->name, bch->nr, count, bch->tx_idx, bch->tx_skb->len); bch->tx_idx += count; @@ -856,8 +857,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&fc->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); modehdlc(bch, ISDN_P_NONE); spin_unlock_irqrestore(&fc->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/netjet.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/netjet.c @@ -812,8 +812,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&card->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); mode_tiger(bc, ISDN_P_NONE); spin_unlock_irqrestore(&card->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/w6692.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/w6692.c @@ -1054,8 +1054,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(&card->lock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); w6692_mode(bc, ISDN_P_NONE); spin_unlock_irqrestore(&card->lock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/mISDNisar.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/mISDNisar.c @@ -1588,8 +1588,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(ich->is->hwlock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); modeisar(ich, ISDN_P_NONE); spin_unlock_irqrestore(ich->is->hwlock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/isdn/hardware/mISDN/mISDNipac.c +++ linux-3.5.0/drivers/isdn/hardware/mISDN/mISDNipac.c @@ -1406,8 +1406,9 @@ switch (cmd) { case CLOSE_CHANNEL: test_and_clear_bit(FLG_OPEN, &bch->Flags); + cancel_work_sync(&bch->workq); spin_lock_irqsave(hx->ip->hwlock, flags); - mISDN_freebchannel(bch); + mISDN_clear_bchannel(bch); hscx_mode(hx, ISDN_P_NONE); spin_unlock_irqrestore(hx->ip->hwlock, flags); ch->protocol = ISDN_P_NONE; --- linux-3.5.0.orig/drivers/xen/platform-pci.c +++ linux-3.5.0/drivers/xen/platform-pci.c @@ -109,6 +109,9 @@ long mmio_addr, mmio_len; unsigned int max_nr_gframes; + if (!xen_domain()) + return -ENODEV; + i = pci_enable_device(pdev); if (i) return i; --- linux-3.5.0.orig/drivers/xen/swiotlb-xen.c +++ linux-3.5.0/drivers/xen/swiotlb-xen.c @@ -232,7 +232,7 @@ return ret; if (hwdev && hwdev->coherent_dma_mask) - dma_mask = hwdev->coherent_dma_mask; + dma_mask = dma_alloc_coherent_mask(hwdev, flags); phys = virt_to_phys(ret); dev_addr = xen_phys_to_bus(phys); --- linux-3.5.0.orig/drivers/xen/grant-table.c +++ linux-3.5.0/drivers/xen/grant-table.c @@ -54,10 +54,6 @@ /* External tools reserve first few grant table entries. */ #define NR_RESERVED_ENTRIES 8 #define GNTTAB_LIST_END 0xffffffff -#define GREFS_PER_GRANT_FRAME \ -(grant_table_version == 1 ? \ -(PAGE_SIZE / sizeof(struct grant_entry_v1)) : \ -(PAGE_SIZE / sizeof(union grant_entry_v2))) static grant_ref_t **gnttab_list; static unsigned int nr_grant_frames; @@ -152,6 +148,7 @@ static grant_status_t *grstatus; static int grant_table_version; +static int grefs_per_grant_frame; static struct gnttab_free_callback *gnttab_free_callback_list; @@ -766,12 +763,14 @@ unsigned int new_nr_grant_frames, extra_entries, i; unsigned int nr_glist_frames, new_nr_glist_frames; + BUG_ON(grefs_per_grant_frame == 0); + new_nr_grant_frames = nr_grant_frames + more_frames; - extra_entries = more_frames * GREFS_PER_GRANT_FRAME; + extra_entries = more_frames * grefs_per_grant_frame; - nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + nr_glist_frames = (nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; new_nr_glist_frames = - (new_nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + (new_nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; for (i = nr_glist_frames; i < new_nr_glist_frames; i++) { gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_ATOMIC); if (!gnttab_list[i]) @@ -779,12 +778,12 @@ } - for (i = GREFS_PER_GRANT_FRAME * nr_grant_frames; - i < GREFS_PER_GRANT_FRAME * new_nr_grant_frames - 1; i++) + for (i = grefs_per_grant_frame * nr_grant_frames; + i < grefs_per_grant_frame * new_nr_grant_frames - 1; i++) gnttab_entry(i) = i + 1; gnttab_entry(i) = gnttab_free_head; - gnttab_free_head = GREFS_PER_GRANT_FRAME * nr_grant_frames; + gnttab_free_head = grefs_per_grant_frame * nr_grant_frames; gnttab_free_count += extra_entries; nr_grant_frames = new_nr_grant_frames; @@ -870,7 +869,8 @@ EXPORT_SYMBOL_GPL(gnttab_map_refs); int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, - struct page **pages, unsigned int count, bool clear_pte) + struct gnttab_map_grant_ref *kmap_ops, + struct page **pages, unsigned int count) { int i, ret; bool lazy = false; @@ -888,7 +888,8 @@ } for (i = 0; i < count; i++) { - ret = m2p_remove_override(pages[i], clear_pte); + ret = m2p_remove_override(pages[i], kmap_ops ? + &kmap_ops[i] : NULL); if (ret) return ret; } @@ -902,7 +903,8 @@ static unsigned nr_status_frames(unsigned nr_grant_frames) { - return (nr_grant_frames * GREFS_PER_GRANT_FRAME + SPP - 1) / SPP; + BUG_ON(grefs_per_grant_frame == 0); + return (nr_grant_frames * grefs_per_grant_frame + SPP - 1) / SPP; } static int gnttab_map_frames_v1(unsigned long *frames, unsigned int nr_gframes) @@ -1060,6 +1062,7 @@ rc = HYPERVISOR_grant_table_op(GNTTABOP_set_version, &gsv, 1); if (rc == 0 && gsv.version == 2) { grant_table_version = 2; + grefs_per_grant_frame = PAGE_SIZE / sizeof(union grant_entry_v2); gnttab_interface = &gnttab_v2_ops; } else if (grant_table_version == 2) { /* @@ -1072,17 +1075,17 @@ panic("we need grant tables version 2, but only version 1 is available"); } else { grant_table_version = 1; + grefs_per_grant_frame = PAGE_SIZE / sizeof(struct grant_entry_v1); gnttab_interface = &gnttab_v1_ops; } printk(KERN_INFO "Grant tables using version %d layout.\n", grant_table_version); } -int gnttab_resume(void) +static int gnttab_setup(void) { unsigned int max_nr_gframes; - gnttab_request_version(); max_nr_gframes = gnttab_max_grant_frames(); if (max_nr_gframes < nr_grant_frames) return -ENOSYS; @@ -1105,6 +1108,12 @@ return 0; } +int gnttab_resume(void) +{ + gnttab_request_version(); + return gnttab_setup(); +} + int gnttab_suspend(void) { gnttab_interface->unmap_frames(); @@ -1116,9 +1125,10 @@ int rc; unsigned int cur, extra; + BUG_ON(grefs_per_grant_frame == 0); cur = nr_grant_frames; - extra = ((req_entries + (GREFS_PER_GRANT_FRAME-1)) / - GREFS_PER_GRANT_FRAME); + extra = ((req_entries + (grefs_per_grant_frame-1)) / + grefs_per_grant_frame); if (cur + extra > gnttab_max_grant_frames()) return -ENOSPC; @@ -1136,21 +1146,23 @@ unsigned int nr_init_grefs; int ret; + gnttab_request_version(); nr_grant_frames = 1; boot_max_nr_grant_frames = __max_nr_grant_frames(); /* Determine the maximum number of frames required for the * grant reference free list on the current hypervisor. */ + BUG_ON(grefs_per_grant_frame == 0); max_nr_glist_frames = (boot_max_nr_grant_frames * - GREFS_PER_GRANT_FRAME / RPP); + grefs_per_grant_frame / RPP); gnttab_list = kmalloc(max_nr_glist_frames * sizeof(grant_ref_t *), GFP_KERNEL); if (gnttab_list == NULL) return -ENOMEM; - nr_glist_frames = (nr_grant_frames * GREFS_PER_GRANT_FRAME + RPP - 1) / RPP; + nr_glist_frames = (nr_grant_frames * grefs_per_grant_frame + RPP - 1) / RPP; for (i = 0; i < nr_glist_frames; i++) { gnttab_list[i] = (grant_ref_t *)__get_free_page(GFP_KERNEL); if (gnttab_list[i] == NULL) { @@ -1159,12 +1171,12 @@ } } - if (gnttab_resume() < 0) { + if (gnttab_setup() < 0) { ret = -ENODEV; goto ini_nomem; } - nr_init_grefs = nr_grant_frames * GREFS_PER_GRANT_FRAME; + nr_init_grefs = nr_grant_frames * grefs_per_grant_frame; for (i = NR_RESERVED_ENTRIES; i < nr_init_grefs - 1; i++) gnttab_entry(i) = i + 1; --- linux-3.5.0.orig/drivers/xen/evtchn.c +++ linux-3.5.0/drivers/xen/evtchn.c @@ -269,6 +269,14 @@ u->name, (void *)(unsigned long)port); if (rc >= 0) rc = evtchn_make_refcounted(port); + else { + /* bind failed, should close the port now */ + struct evtchn_close close; + close.port = port; + if (HYPERVISOR_event_channel_op(EVTCHNOP_close, &close) != 0) + BUG(); + set_port_user(port, NULL); + } return rc; } @@ -277,6 +285,8 @@ { int irq = irq_from_evtchn(port); + BUG_ON(irq < 0); + unbind_from_irqhandler(irq, (void *)(unsigned long)port); set_port_user(port, NULL); --- linux-3.5.0.orig/drivers/xen/events.c +++ linux-3.5.0/drivers/xen/events.c @@ -1374,8 +1374,8 @@ { struct pt_regs *old_regs = set_irq_regs(regs); - exit_idle(); irq_enter(); + exit_idle(); __xen_evtchn_do_upcall(); --- linux-3.5.0.orig/drivers/xen/gntdev.c +++ linux-3.5.0/drivers/xen/gntdev.c @@ -105,6 +105,21 @@ #endif } +static void gntdev_free_map(struct grant_map *map) +{ + if (map == NULL) + return; + + if (map->pages) + free_xenballooned_pages(map->count, map->pages); + kfree(map->pages); + kfree(map->grants); + kfree(map->map_ops); + kfree(map->unmap_ops); + kfree(map->kmap_ops); + kfree(map); +} + static struct grant_map *gntdev_alloc_map(struct gntdev_priv *priv, int count) { struct grant_map *add; @@ -142,12 +157,7 @@ return add; err: - kfree(add->pages); - kfree(add->grants); - kfree(add->map_ops); - kfree(add->unmap_ops); - kfree(add->kmap_ops); - kfree(add); + gntdev_free_map(add); return NULL; } @@ -198,17 +208,9 @@ evtchn_put(map->notify.event); } - if (map->pages) { - if (!use_ptemod) - unmap_grant_pages(map, 0, map->count); - - free_xenballooned_pages(map->count, map->pages); - } - kfree(map->pages); - kfree(map->grants); - kfree(map->map_ops); - kfree(map->unmap_ops); - kfree(map); + if (map->pages && !use_ptemod) + unmap_grant_pages(map, 0, map->count); + gntdev_free_map(map); } /* ------------------------------------------------------------------ */ @@ -314,8 +316,9 @@ } } - err = gnttab_unmap_refs(map->unmap_ops + offset, map->pages + offset, - pages, true); + err = gnttab_unmap_refs(map->unmap_ops + offset, + use_ptemod ? map->kmap_ops + offset : NULL, map->pages + offset, + pages); if (err) return err; --- linux-3.5.0.orig/drivers/xen/xen-pciback/pciback_ops.c +++ linux-3.5.0/drivers/xen/xen-pciback/pciback_ops.c @@ -135,7 +135,6 @@ struct pci_dev *dev, struct xen_pci_op *op) { struct xen_pcibk_dev_data *dev_data; - int otherend = pdev->xdev->otherend_id; int status; if (unlikely(verbose_request)) @@ -144,8 +143,9 @@ status = pci_enable_msi(dev); if (status) { - printk(KERN_ERR "error enable msi for guest %x status %x\n", - otherend, status); + pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI for guest %u: err %d\n", + pci_name(dev), pdev->xdev->otherend_id, + status); op->value = 0; return XEN_PCI_ERR_op_failed; } @@ -223,10 +223,10 @@ pci_name(dev), i, op->msix_entries[i].vector); } - } else { - printk(KERN_WARNING DRV_NAME ": %s: failed to enable MSI-X: err %d!\n", - pci_name(dev), result); - } + } else + pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI-X for guest %u: err %d!\n", + pci_name(dev), pdev->xdev->otherend_id, + result); kfree(entries); op->value = result; --- linux-3.5.0.orig/drivers/xen/xen-pciback/pci_stub.c +++ linux-3.5.0/drivers/xen/xen-pciback/pci_stub.c @@ -353,16 +353,17 @@ if (err) goto config_release; - dev_dbg(&dev->dev, "reseting (FLR, D3, etc) the device\n"); - __pci_reset_function_locked(dev); - /* We need the device active to save the state. */ dev_dbg(&dev->dev, "save state of device\n"); pci_save_state(dev); dev_data->pci_saved_state = pci_store_saved_state(dev); if (!dev_data->pci_saved_state) dev_err(&dev->dev, "Could not store PCI conf saved state!\n"); - + else { + dev_dbg(&dev->dev, "reseting (FLR, D3, etc) the device\n"); + __pci_reset_function_locked(dev); + pci_restore_state(dev); + } /* Now disable the device (this also ensures some private device * data is setup before we export) */ --- linux-3.5.0.orig/drivers/ata/Kconfig +++ linux-3.5.0/drivers/ata/Kconfig @@ -214,6 +214,15 @@ help This option enables the taskfile dumping and NCQ debugging. +config SATA_HIGHBANK + tristate "Calxeda Highbank SATA support" + depends on ARCH_HIGHBANK + help + This option enables support for the Calxeda Highbank SoC's + onboard SATA. + + If unsure, say N. + config SATA_MV tristate "Marvell SATA support" help --- linux-3.5.0.orig/drivers/ata/ahci_platform.c +++ linux-3.5.0/drivers/ata/ahci_platform.c @@ -279,7 +279,6 @@ #endif static const struct of_device_id ahci_of_match[] = { - { .compatible = "calxeda,hb-ahci", }, { .compatible = "snps,spear-ahci", }, {}, }; --- linux-3.5.0.orig/drivers/ata/libata-scsi.c +++ linux-3.5.0/drivers/ata/libata-scsi.c @@ -309,7 +309,8 @@ struct ata_port *ap = ata_shost_to_port(sdev->host); struct ata_device *atadev = ata_scsi_find_dev(ap, sdev); - if (ap->ops->sw_activity_show && (ap->flags & ATA_FLAG_SW_ACTIVITY)) + if (atadev && ap->ops->sw_activity_show && + (ap->flags & ATA_FLAG_SW_ACTIVITY)) return ap->ops->sw_activity_show(atadev, buf); return -EINVAL; } @@ -324,7 +325,8 @@ enum sw_activity val; int rc; - if (ap->ops->sw_activity_store && (ap->flags & ATA_FLAG_SW_ACTIVITY)) { + if (atadev && ap->ops->sw_activity_store && + (ap->flags & ATA_FLAG_SW_ACTIVITY)) { val = simple_strtoul(buf, NULL, 0); switch (val) { case OFF: case BLINK_ON: case BLINK_OFF: --- linux-3.5.0.orig/drivers/ata/ata_piix.c +++ linux-3.5.0/drivers/ata/ata_piix.c @@ -1719,10 +1719,16 @@ ata_pci_remove_one(pdev); } +static bool disable_driver = 0; static int __init piix_init(void) { int rc; + if (disable_driver) { + printk(KERN_WARNING "ata_piix: driver disabled completely\n"); + return 0; + } + DPRINTK("pci_register_driver\n"); rc = pci_register_driver(&piix_pci_driver); if (rc) @@ -1739,5 +1745,6 @@ pci_unregister_driver(&piix_pci_driver); } +module_param(disable_driver, bool, 0); module_init(piix_init); module_exit(piix_exit); --- linux-3.5.0.orig/drivers/ata/libahci.c +++ linux-3.5.0/drivers/ata/libahci.c @@ -1139,7 +1139,7 @@ } } -static unsigned int ahci_dev_classify(struct ata_port *ap) +unsigned int ahci_dev_classify(struct ata_port *ap) { void __iomem *port_mmio = ahci_port_base(ap); struct ata_taskfile tf; @@ -1153,6 +1153,7 @@ return ata_dev_classify(&tf); } +EXPORT_SYMBOL_GPL(ahci_dev_classify); void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts) --- linux-3.5.0.orig/drivers/ata/ahci.h +++ linux-3.5.0/drivers/ata/ahci.h @@ -320,6 +320,7 @@ extern struct ata_port_operations ahci_ops; extern struct ata_port_operations ahci_pmp_retry_srst_ops; +unsigned int ahci_dev_classify(struct ata_port *ap); void ahci_fill_cmd_slot(struct ahci_port_priv *pp, unsigned int tag, u32 opts); void ahci_save_initial_config(struct device *dev, --- linux-3.5.0.orig/drivers/ata/ahci.c +++ linux-3.5.0/drivers/ata/ahci.c @@ -53,6 +53,7 @@ enum { AHCI_PCI_BAR_STA2X11 = 0, + AHCI_PCI_BAR_ENMOTUS = 2, AHCI_PCI_BAR_STANDARD = 5, }; @@ -396,6 +397,8 @@ .driver_data = board_ahci_yes_fbs }, /* 88se9125 */ { PCI_DEVICE(0x1b4b, 0x917a), .driver_data = board_ahci_yes_fbs }, /* 88se9172 */ + { PCI_DEVICE(0x1b4b, 0x9192), + .driver_data = board_ahci_yes_fbs }, /* 88se9172 on some Gigabyte */ { PCI_DEVICE(0x1b4b, 0x91a3), .driver_data = board_ahci_yes_fbs }, @@ -403,7 +406,13 @@ { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci }, /* PDC42819 */ /* Asmedia */ - { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0601), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0602), board_ahci }, /* ASM1060 */ + { PCI_VDEVICE(ASMEDIA, 0x0611), board_ahci }, /* ASM1061 */ + { PCI_VDEVICE(ASMEDIA, 0x0612), board_ahci }, /* ASM1062 */ + + /* Enmotus */ + { PCI_DEVICE(0x1c44, 0x8000), board_ahci }, /* Generic, PCI class code for AHCI */ { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, @@ -1077,9 +1086,11 @@ dev_info(&pdev->dev, "PDC42819 can only drive SATA devices with this driver\n"); - /* The Connext uses non-standard BAR */ + /* Both Connext and Enmotus devices use non-standard BARs */ if (pdev->vendor == PCI_VENDOR_ID_STMICRO && pdev->device == 0xCC06) ahci_pci_bar = AHCI_PCI_BAR_STA2X11; + else if (pdev->vendor == 0x1c44 && pdev->device == 0x8000) + ahci_pci_bar = AHCI_PCI_BAR_ENMOTUS; /* acquire resources */ rc = pcim_enable_device(pdev); --- linux-3.5.0.orig/drivers/ata/Makefile +++ linux-3.5.0/drivers/ata/Makefile @@ -9,6 +9,7 @@ obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o obj-$(CONFIG_SATA_SIL24) += sata_sil24.o obj-$(CONFIG_SATA_DWC) += sata_dwc_460ex.o +obj-$(CONFIG_SATA_HIGHBANK) += sata_highbank.o libahci.o # SFF w/ custom DMA obj-$(CONFIG_PDC_ADMA) += pdc_adma.o --- linux-3.5.0.orig/drivers/ata/libata-core.c +++ linux-3.5.0/drivers/ata/libata-core.c @@ -2536,6 +2536,7 @@ * bus as we may be talking too fast. */ dev->pio_mode = XFER_PIO_0; + dev->dma_mode = 0xff; /* If the controller has a pio mode setup function * then use it to set the chipset to rights. Don't @@ -4126,6 +4127,7 @@ /* Devices which aren't very happy with higher link speeds */ { "WD My Book", NULL, ATA_HORKAGE_1_5_GBPS, }, + { "Seagate FreeAgent GoFlex", NULL, ATA_HORKAGE_1_5_GBPS, }, /* * Devices which choke on SETXFER. Applies only if both the --- linux-3.5.0.orig/drivers/ata/sata_highbank.c +++ linux-3.5.0/drivers/ata/sata_highbank.c @@ -0,0 +1,450 @@ +/* + * Calxeda Highbank AHCI SATA platform driver + * Copyright 2012 Calxeda, Inc. + * + * based on the AHCI SATA platform driver by Jeff Garzik and Anton Vorontsov + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ahci.h" + +#define CPHY_MAP(dev, addr) ((((dev) & 0x1f) << 7) | (((addr) >> 9) & 0x7f)) +#define CPHY_ADDR(addr) (((addr) & 0x1ff) << 2) +#define SERDES_CR_CTL 0x80a0 +#define SERDES_CR_ADDR 0x80a1 +#define SERDES_CR_DATA 0x80a2 +#define CR_BUSY 0x0001 +#define CR_START 0x0001 +#define CR_WR_RDN 0x0002 +#define CPHY_RX_INPUT_STS 0x2002 +#define CPHY_SATA_OVERRIDE 0x4000 +#define CPHY_OVERRIDE 0x2005 +#define SPHY_LANE 0x100 +#define SPHY_HALF_RATE 0x0001 +#define CPHY_SATA_DPLL_MODE 0x0700 +#define CPHY_SATA_DPLL_SHIFT 8 +#define CPHY_SATA_DPLL_RESET (1 << 11) +#define CPHY_PHY_COUNT 6 +#define CPHY_LANE_COUNT 4 +#define CPHY_PORT_COUNT (CPHY_PHY_COUNT * CPHY_LANE_COUNT) + +static DEFINE_SPINLOCK(cphy_lock); +/* Each of the 6 phys can have up to 4 sata ports attached to i. Map 0-based + * sata ports to their phys and then to their lanes within the phys + */ +struct phy_lane_info { + void __iomem *phy_base; + u8 lane_mapping; + u8 phy_devs; +}; +static struct phy_lane_info port_data[CPHY_PORT_COUNT]; + +static u32 __combo_phy_reg_read(u8 sata_port, u32 addr) +{ + u32 data; + u8 dev = port_data[sata_port].phy_devs; + spin_lock(&cphy_lock); + writel(CPHY_MAP(dev, addr), port_data[sata_port].phy_base + 0x800); + data = readl(port_data[sata_port].phy_base + CPHY_ADDR(addr)); + spin_unlock(&cphy_lock); + return data; +} + +static void __combo_phy_reg_write(u8 sata_port, u32 addr, u32 data) +{ + u8 dev = port_data[sata_port].phy_devs; + spin_lock(&cphy_lock); + writel(CPHY_MAP(dev, addr), port_data[sata_port].phy_base + 0x800); + writel(data, port_data[sata_port].phy_base + CPHY_ADDR(addr)); + spin_unlock(&cphy_lock); +} + +static void combo_phy_wait_for_ready(u8 sata_port) +{ + while (__combo_phy_reg_read(sata_port, SERDES_CR_CTL) & CR_BUSY) + udelay(5); +} + +static u32 combo_phy_read(u8 sata_port, u32 addr) +{ + combo_phy_wait_for_ready(sata_port); + __combo_phy_reg_write(sata_port, SERDES_CR_ADDR, addr); + __combo_phy_reg_write(sata_port, SERDES_CR_CTL, CR_START); + combo_phy_wait_for_ready(sata_port); + return __combo_phy_reg_read(sata_port, SERDES_CR_DATA); +} + +static void combo_phy_write(u8 sata_port, u32 addr, u32 data) +{ + combo_phy_wait_for_ready(sata_port); + __combo_phy_reg_write(sata_port, SERDES_CR_ADDR, addr); + __combo_phy_reg_write(sata_port, SERDES_CR_DATA, data); + __combo_phy_reg_write(sata_port, SERDES_CR_CTL, CR_WR_RDN | CR_START); +} + +static void highbank_cphy_disable_overrides(u8 sata_port) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp; + if (unlikely(port_data[sata_port].phy_base == NULL)) + return; + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + lane * SPHY_LANE); + tmp &= ~CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); +} + +static void cphy_override_rx_mode(u8 sata_port, u32 val) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp; + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + lane * SPHY_LANE); + tmp &= ~CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp |= CPHY_SATA_OVERRIDE; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp &= ~CPHY_SATA_DPLL_MODE; + tmp |= val << CPHY_SATA_DPLL_SHIFT; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp |= CPHY_SATA_DPLL_RESET; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + tmp &= ~CPHY_SATA_DPLL_RESET; + combo_phy_write(sata_port, CPHY_OVERRIDE + lane * SPHY_LANE, tmp); + + msleep(15); +} + +static void highbank_cphy_override_lane(u8 sata_port) +{ + u8 lane = port_data[sata_port].lane_mapping; + u32 tmp, k = 0; + + if (unlikely(port_data[sata_port].phy_base == NULL)) + return; + do { + tmp = combo_phy_read(sata_port, CPHY_RX_INPUT_STS + + lane * SPHY_LANE); + } while ((tmp & SPHY_HALF_RATE) && (k++ < 1000)); + cphy_override_rx_mode(sata_port, 3); +} + +static int highbank_initialize_phys(struct device *dev, void __iomem *addr) +{ + struct device_node *sata_node = dev->of_node; + int phy_count = 0, phy, port = 0; + void __iomem *cphy_base[CPHY_PHY_COUNT]; + struct device_node *phy_nodes[CPHY_PHY_COUNT]; + memset(port_data, 0, sizeof(struct phy_lane_info) * CPHY_PORT_COUNT); + memset(phy_nodes, 0, sizeof(struct device_node*) * CPHY_PHY_COUNT); + + do { + u32 tmp; + struct of_phandle_args phy_data; + if (of_parse_phandle_with_args(sata_node, + "calxeda,port-phys", "#phy-cells", + port, &phy_data)) + break; + for (phy = 0; phy < phy_count; phy++) { + if (phy_nodes[phy] == phy_data.np) + break; + } + if (phy_nodes[phy] == NULL) { + phy_nodes[phy] = phy_data.np; + cphy_base[phy] = of_iomap(phy_nodes[phy], 0); + if (cphy_base[phy] == NULL) { + return 0; + } + phy_count += 1; + } + port_data[port].lane_mapping = phy_data.args[0]; + of_property_read_u32(phy_nodes[phy], "phydev", &tmp); + port_data[port].phy_devs = tmp; + port_data[port].phy_base = cphy_base[phy]; + of_node_put(phy_data.np); + port += 1; + } while (port < CPHY_PORT_COUNT); + return 0; +} + +static int ahci_highbank_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; + u8 *d2h_fis = pp->rx_fis + RX_FIS_D2H_REG; + struct ata_taskfile tf; + bool online; + u32 sstatus; + int rc; + int retry = 10; + + ahci_stop_engine(ap); + + /* clear D2H reception area to properly wait for D2H FIS */ + ata_tf_init(link->device, &tf); + tf.command = 0x80; + ata_tf_to_fis(&tf, 0, 0, d2h_fis); + + do { + highbank_cphy_disable_overrides(link->ap->port_no); + rc = sata_link_hardreset(link, timing, deadline, &online, NULL); + highbank_cphy_override_lane(link->ap->port_no); + + /* If the status is 1, we are connected, but the link did not + * come up. So retry resetting the link again. + */ + if (sata_scr_read(link, SCR_STATUS, &sstatus)) + break; + if (!(sstatus & 0x3)) + break; + } while (!online && retry--); + + ahci_start_engine(ap); + + if (online) + *class = ahci_dev_classify(ap); + + return rc; +} + +static struct ata_port_operations ahci_highbank_ops = { + .inherits = &ahci_ops, + .hardreset = ahci_highbank_hardreset, +}; + +static const struct ata_port_info ahci_highbank_port_info = { + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_highbank_ops, +}; + +static struct scsi_host_template ahci_highbank_platform_sht = { + AHCI_SHT("highbank-ahci"), +}; + +static const struct of_device_id ahci_of_match[] = { + { .compatible = "calxeda,hb-ahci" }, + {}, +}; +MODULE_DEVICE_TABLE(of, ahci_of_match); + +static int __init ahci_highbank_probe(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ahci_host_priv *hpriv; + struct ata_host *host; + struct resource *mem; + int irq; + int n_ports; + int i; + int rc; + struct ata_port_info pi = ahci_highbank_port_info; + const struct ata_port_info *ppi[] = { &pi, NULL }; + + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!mem) { + dev_err(dev, "no mmio space\n"); + return -EINVAL; + } + + irq = platform_get_irq(pdev, 0); + if (irq <= 0) { + dev_err(dev, "no irq\n"); + return -EINVAL; + } + + hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL); + if (!hpriv) { + dev_err(dev, "can't alloc ahci_host_priv\n"); + return -ENOMEM; + } + + hpriv->flags |= (unsigned long)pi.private_data; + + hpriv->mmio = devm_ioremap(dev, mem->start, resource_size(mem)); + if (!hpriv->mmio) { + dev_err(dev, "can't map %pR\n", mem); + return -ENOMEM; + } + + rc = highbank_initialize_phys(dev, hpriv->mmio); + if (rc) + return rc; + + + ahci_save_initial_config(dev, hpriv, 0, 0); + + /* prepare host */ + if (hpriv->cap & HOST_CAP_NCQ) + pi.flags |= ATA_FLAG_NCQ; + + if (hpriv->cap & HOST_CAP_PMP) + pi.flags |= ATA_FLAG_PMP; + + ahci_set_em_messages(hpriv, &pi); + + /* CAP.NP sometimes indicate the index of the last enabled + * port, at other times, that of the last possible port, so + * determining the maximum port number requires looking at + * both CAP.NP and port_map. + */ + 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 err0; + } + + host->private_data = hpriv; + + if (!(hpriv->cap & HOST_CAP_SSS) || ahci_ignore_sss) + host->flags |= ATA_HOST_PARALLEL_SCAN; + + if (pi.flags & ATA_FLAG_EM) + ahci_reset_em(host); + + 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, "port 0x%x", 0x100 + ap->port_no * 0x80); + + /* set enclosure management message type */ + if (ap->flags & ATA_FLAG_EM) + ap->em_message_type = hpriv->em_msg_type; + + /* disabled/not-implemented port */ + if (!(hpriv->port_map & (1 << i))) + ap->ops = &ata_dummy_port_ops; + } + + rc = ahci_reset_controller(host); + if (rc) + goto err0; + + ahci_init_controller(host); + ahci_print_info(host, "platform"); + + rc = ata_host_activate(host, irq, ahci_interrupt, 0, + &ahci_highbank_platform_sht); + if (rc) + goto err0; + + return 0; +err0: + return rc; +} + +static int __devexit ahci_highbank_remove(struct platform_device *pdev) +{ + struct device *dev = &pdev->dev; + struct ata_host *host = dev_get_drvdata(dev); + + ata_host_detach(host); + + return 0; +} + +#ifdef CONFIG_PM +static int ahci_highbank_suspend(struct device *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"); + return -EIO; + } + + /* + * AHCI spec rev1.1 section 8.3.3: + * Software must disable interrupts prior to requesting a + * transition of the HBA to D3 state. + */ + ctl = readl(mmio + HOST_CTL); + ctl &= ~HOST_IRQ_EN; + writel(ctl, mmio + HOST_CTL); + readl(mmio + HOST_CTL); /* flush */ + + rc = ata_host_suspend(host, PMSG_SUSPEND); + if (rc) + return rc; + + return 0; +} + +static int ahci_highbank_resume(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; +} +#endif + +SIMPLE_DEV_PM_OPS(ahci_highbank_pm_ops, + ahci_highbank_suspend, ahci_highbank_resume); + +static struct platform_driver ahci_highbank_driver = { + .remove = __devexit_p(ahci_highbank_remove), + .driver = { + .name = "highbank-ahci", + .owner = THIS_MODULE, + .of_match_table = ahci_of_match, + .pm = &ahci_highbank_pm_ops, + }, + .probe = ahci_highbank_probe, +}; + +module_platform_driver(ahci_highbank_driver); + +MODULE_DESCRIPTION("Calxeda Highbank AHCI SATA platform driver"); +MODULE_AUTHOR("Mark Langsdorf "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("sata:highbank"); --- linux-3.5.0.orig/drivers/ata/libata-eh.c +++ linux-3.5.0/drivers/ata/libata-eh.c @@ -2057,7 +2057,7 @@ */ static inline int ata_eh_worth_retry(struct ata_queued_cmd *qc) { - if (qc->flags & AC_ERR_MEDIA) + if (qc->err_mask & AC_ERR_MEDIA) return 0; /* don't retry media errors */ if (qc->flags & ATA_QCFLAG_IO) return 1; /* otherwise retry anything from fs stack */ @@ -2618,6 +2618,7 @@ * bus as we may be talking too fast. */ dev->pio_mode = XFER_PIO_0; + dev->dma_mode = 0xff; /* If the controller has a pio mode setup function * then use it to set the chipset to rights. Don't --- linux-3.5.0.orig/drivers/ata/sata_promise.c +++ linux-3.5.0/drivers/ata/sata_promise.c @@ -147,6 +147,10 @@ dma_addr_t pkt_dma; }; +struct pdc_host_priv { + spinlock_t hard_reset_lock; +}; + static int pdc_sata_scr_read(struct ata_link *link, unsigned int sc_reg, u32 *val); static int pdc_sata_scr_write(struct ata_link *link, unsigned int sc_reg, u32 val); static int pdc_ata_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); @@ -801,9 +805,10 @@ void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; void __iomem *pcictl_b1_mmio = host_mmio + PDC_PCI_CTL + 1; unsigned int ata_no = pdc_ata_port_to_ata_no(ap); + struct pdc_host_priv *hpriv = ap->host->private_data; u8 tmp; - spin_lock(&ap->host->lock); + spin_lock(&hpriv->hard_reset_lock); tmp = readb(pcictl_b1_mmio); tmp &= ~(0x10 << ata_no); @@ -814,7 +819,7 @@ writeb(tmp, pcictl_b1_mmio); readb(pcictl_b1_mmio); /* flush */ - spin_unlock(&ap->host->lock); + spin_unlock(&hpriv->hard_reset_lock); } static int pdc_sata_hardreset(struct ata_link *link, unsigned int *class, @@ -1182,6 +1187,7 @@ const struct ata_port_info *pi = &pdc_port_info[ent->driver_data]; const struct ata_port_info *ppi[PDC_MAX_PORTS]; struct ata_host *host; + struct pdc_host_priv *hpriv; void __iomem *host_mmio; int n_ports, i, rc; int is_sataii_tx4; @@ -1218,6 +1224,11 @@ dev_err(&pdev->dev, "failed to allocate host\n"); return -ENOMEM; } + hpriv = devm_kzalloc(&pdev->dev, sizeof *hpriv, GFP_KERNEL); + if (!hpriv) + return -ENOMEM; + spin_lock_init(&hpriv->hard_reset_lock); + host->private_data = hpriv; host->iomap = pcim_iomap_table(pdev); is_sataii_tx4 = pdc_is_sataii_tx4(pi->flags); --- linux-3.5.0.orig/drivers/ata/sata_svw.c +++ linux-3.5.0/drivers/ata/sata_svw.c @@ -142,6 +142,39 @@ return 0; } +static int k2_sata_softreset(struct ata_link *link, + unsigned int *class, unsigned long deadline) +{ + u8 dmactl; + void __iomem *mmio = link->ap->ioaddr.bmdma_addr; + + dmactl = readb(mmio + ATA_DMA_CMD); + + /* Clear the start bit */ + if (dmactl & ATA_DMA_START) { + dmactl &= ~ATA_DMA_START; + writeb(dmactl, mmio + ATA_DMA_CMD); + } + + return ata_sff_softreset(link, class, deadline); +} + +static int k2_sata_hardreset(struct ata_link *link, + unsigned int *class, unsigned long deadline) +{ + u8 dmactl; + void __iomem *mmio = link->ap->ioaddr.bmdma_addr; + + dmactl = readb(mmio + ATA_DMA_CMD); + + /* Clear the start bit */ + if (dmactl & ATA_DMA_START) { + dmactl &= ~ATA_DMA_START; + writeb(dmactl, mmio + ATA_DMA_CMD); + } + + return sata_sff_hardreset(link, class, deadline); +} static void k2_sata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf) { @@ -346,6 +379,8 @@ static struct ata_port_operations k2_sata_ops = { .inherits = &ata_bmdma_port_ops, + .softreset = k2_sata_softreset, + .hardreset = k2_sata_hardreset, .sff_tf_load = k2_sata_tf_load, .sff_tf_read = k2_sata_tf_read, .sff_check_status = k2_stat_check_status, --- linux-3.5.0.orig/drivers/bluetooth/ath3k.c +++ linux-3.5.0/drivers/bluetooth/ath3k.c @@ -67,6 +67,7 @@ { 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) }, @@ -79,12 +80,14 @@ { USB_DEVICE(0x13d3, 0x3362) }, { USB_DEVICE(0x0CF3, 0xE004) }, { USB_DEVICE(0x0930, 0x0219) }, + { USB_DEVICE(0x0489, 0xe057) }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xE02C) }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C) }, + { USB_DEVICE(0x0489, 0xE036) }, { } /* Terminating entry */ }; @@ -104,9 +107,11 @@ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU22 with sflash firmware */ { USB_DEVICE(0x0489, 0xE03C), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xE036), .driver_info = BTUSB_ATH3012 }, { } /* Terminating entry */ }; --- linux-3.5.0.orig/drivers/bluetooth/btusb.c +++ linux-3.5.0/drivers/bluetooth/btusb.c @@ -31,6 +31,8 @@ #include #include +#include +#include #include #include @@ -55,11 +57,15 @@ #define BTUSB_BROKEN_ISOC 0x20 #define BTUSB_WRONG_SCO_MTU 0x40 #define BTUSB_ATH3012 0x80 +#define BTUSB_BCM_PATCHRAM 0x100 static struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, + /* Apple-specific (Broadcom) devices */ + { USB_VENDOR_AND_INTERFACE_INFO(0x05ac, 0xff, 0x01, 0x01) }, + /* Broadcom SoftSailing reporting vendor specific */ { USB_DEVICE(0x0a5c, 0x21e1) }, @@ -101,15 +107,21 @@ { USB_DEVICE(0x0c10, 0x0000) }, /* Broadcom BCM20702A0 */ + { USB_DEVICE(0x0b05, 0x17b5) }, + { USB_DEVICE(0x04ca, 0x2003) }, { USB_DEVICE(0x0489, 0xe042) }, - { USB_DEVICE(0x0a5c, 0x21e3) }, - { USB_DEVICE(0x0a5c, 0x21e6) }, - { USB_DEVICE(0x0a5c, 0x21e8) }, - { USB_DEVICE(0x0a5c, 0x21f3) }, - { 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 }, + + /* Broadcom BCM43142A0 */ + { USB_DEVICE(0x04ca, 0x2007), .driver_info = BTUSB_BCM_PATCHRAM }, /* Foxconn - Hon Hai */ - { USB_DEVICE(0x0489, 0xe033) }, + { 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 }, { } /* Terminating entry */ }; @@ -129,6 +141,7 @@ { 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 }, @@ -141,12 +154,14 @@ { USB_DEVICE(0x13d3, 0x3362), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0cf3, 0xe004), .driver_info = BTUSB_ATH3012 }, { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe057), .driver_info = BTUSB_ATH3012 }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE }, /* Atheros AR5BBU12 with sflash firmware */ { USB_DEVICE(0x0489, 0xe03c), .driver_info = BTUSB_ATH3012 }, + { USB_DEVICE(0x0489, 0xe036), .driver_info = BTUSB_ATH3012 }, /* Broadcom BCM2035 */ { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_WRONG_SCO_MTU }, @@ -208,12 +223,14 @@ #define BTUSB_ISOC_RUNNING 2 #define BTUSB_SUSPENDING 3 #define BTUSB_DID_ISO_RESUME 4 +#define BTUSB_FIRMWARE_DONE 5 struct btusb_data { struct hci_dev *hdev; struct usb_device *udev; struct usb_interface *intf; struct usb_interface *isoc; + const struct usb_device_id *id; spinlock_t lock; @@ -918,6 +935,70 @@ usb_autopm_put_interface(data->intf); } +#define PATCHRAM_TIMEOUT 1000 +#define PATCHRAM_NAME_LEN 20 + +static void btusb_load_firmware(struct hci_dev *hdev) +{ + struct btusb_data *data = hci_get_drvdata(hdev); + struct usb_device *udev = data->udev; + const struct usb_device_id *id = data->id; + size_t pos = 0; + int err = 0; + char filename[PATCHRAM_NAME_LEN]; + const struct firmware *fw; + + unsigned char reset_cmd[] = { 0x03, 0x0c, 0x00 }; + unsigned char download_cmd[] = { 0x2e, 0xfc, 0x00 }; + + if (!(id->driver_info & BTUSB_BCM_PATCHRAM)) + return; + if (test_and_set_bit(BTUSB_FIRMWARE_DONE, &data->flags)) + return; + + 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; + } + + if (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + reset_cmd, sizeof(reset_cmd), PATCHRAM_TIMEOUT) < 0) { + err = -1; + goto out; + } + msleep(300); + + if (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + download_cmd, sizeof(download_cmd), PATCHRAM_TIMEOUT) < 0) { + err = -1; + goto out; + } + msleep(300); + + while (pos < fw->size) { + size_t len; + len = fw->data[pos + 2] + 3; + if ((pos + len > fw->size) || + (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, + USB_TYPE_CLASS, 0, 0, (void *)fw->data + pos, len, + PATCHRAM_TIMEOUT) < 0)) { + err = -1; + goto out; + } + pos += len; + } + + err = (usb_control_msg(udev, usb_sndctrlpipe(udev, 0), 0, USB_TYPE_CLASS, 0, 0, + reset_cmd, sizeof(reset_cmd), PATCHRAM_TIMEOUT) < 0); +out: + if (err) + BT_INFO("fail to load firmware, may not work correctly"); + release_firmware(fw); +} + static int btusb_probe(struct usb_interface *intf, const struct usb_device_id *id) { @@ -1005,6 +1086,8 @@ init_usb_anchor(&data->isoc_anchor); init_usb_anchor(&data->deferred); + data->id = id; + hdev = hci_alloc_dev(); if (!hdev) { kfree(data); @@ -1023,6 +1106,7 @@ hdev->flush = btusb_flush; hdev->send = btusb_send_frame; hdev->notify = btusb_notify; + hdev->load_firmware = btusb_load_firmware; /* Interface numbers are hardcoded in the specification */ data->isoc = usb_ifnum_to_if(data->udev, 1); --- linux-3.5.0.orig/drivers/power/ab8500_btemp.c +++ linux-3.5.0/drivers/power/ab8500_btemp.c @@ -1119,7 +1119,7 @@ platform_driver_unregister(&ab8500_btemp_driver); } -subsys_initcall_sync(ab8500_btemp_init); +device_initcall(ab8500_btemp_init); module_exit(ab8500_btemp_exit); MODULE_LICENSE("GPL v2"); --- linux-3.5.0.orig/drivers/power/abx500_chargalg.c +++ linux-3.5.0/drivers/power/abx500_chargalg.c @@ -1698,7 +1698,7 @@ static struct attribute abx500_chargalg_en_charger = \ { .name = "chargalg", - .mode = S_IWUGO, + .mode = S_IWUSR, }; static struct attribute *abx500_chargalg_chg[] = { --- linux-3.5.0.orig/drivers/pps/pps.c +++ linux-3.5.0/drivers/pps/pps.c @@ -247,12 +247,15 @@ struct pps_device *pps = container_of(inode->i_cdev, struct pps_device, cdev); file->private_data = pps; - + kobject_get(&pps->dev->kobj); return 0; } static int pps_cdev_release(struct inode *inode, struct file *file) { + struct pps_device *pps = container_of(inode->i_cdev, + struct pps_device, cdev); + kobject_put(&pps->dev->kobj); return 0; } @@ -274,8 +277,10 @@ { struct pps_device *pps = dev_get_drvdata(dev); - /* release id here to protect others from using it while it's - * still in use */ + cdev_del(&pps->cdev); + + /* Now we can release the ID for re-use */ + pr_debug("deallocating pps%d\n", pps->id); mutex_lock(&pps_idr_lock); idr_remove(&pps_idr, pps->id); mutex_unlock(&pps_idr_lock); @@ -330,6 +335,7 @@ if (IS_ERR(pps->dev)) goto del_cdev; + /* Override the release function with our own */ pps->dev->release = pps_device_destruct; pr_debug("source %s got cdev (%d:%d)\n", pps->info.name, @@ -350,11 +356,44 @@ void pps_unregister_cdev(struct pps_device *pps) { + pr_debug("unregistering pps%d\n", pps->id); + pps->lookup_cookie = NULL; device_destroy(pps_class, pps->dev->devt); - cdev_del(&pps->cdev); } /* + * Look up a pps device by magic cookie. + * The cookie is usually a pointer to some enclosing device, but this + * code doesn't care; you should never be dereferencing it. + * + * This is a bit of a kludge that is currently used only by the PPS + * serial line discipline. It may need to be tweaked when a second user + * is found. + * + * There is no function interface for setting the lookup_cookie field. + * It's initialized to NULL when the pps device is created, and if a + * client wants to use it, just fill it in afterward. + * + * The cookie is automatically set to NULL in pps_unregister_source() + * so that it will not be used again, even if the pps device cannot + * be removed from the idr due to pending references holding the minor + * number in use. + */ +struct pps_device *pps_lookup_dev(void const *cookie) +{ + struct pps_device *pps; + unsigned id; + + rcu_read_lock(); + idr_for_each_entry(&pps_idr, pps, id) + if (cookie == pps->lookup_cookie) + break; + rcu_read_unlock(); + return pps; +} +EXPORT_SYMBOL(pps_lookup_dev); + +/* * Module stuff */ --- linux-3.5.0.orig/drivers/pps/clients/pps-ldisc.c +++ linux-3.5.0/drivers/pps/clients/pps-ldisc.c @@ -31,7 +31,7 @@ static void pps_tty_dcd_change(struct tty_struct *tty, unsigned int status, struct pps_event_time *ts) { - struct pps_device *pps = (struct pps_device *)tty->disc_data; + struct pps_device *pps = pps_lookup_dev(tty); BUG_ON(pps == NULL); @@ -67,9 +67,9 @@ pr_err("cannot register PPS source \"%s\"\n", info.path); return -ENOMEM; } - tty->disc_data = pps; + pps->lookup_cookie = tty; - /* Should open N_TTY ldisc too */ + /* Now open the base class N_TTY ldisc */ ret = alias_n_tty_open(tty); if (ret < 0) { pr_err("cannot open tty ldisc \"%s\"\n", info.path); @@ -81,7 +81,6 @@ return 0; err_unregister: - tty->disc_data = NULL; pps_unregister_source(pps); return ret; } @@ -90,11 +89,10 @@ static void pps_tty_close(struct tty_struct *tty) { - struct pps_device *pps = (struct pps_device *)tty->disc_data; + struct pps_device *pps = pps_lookup_dev(tty); alias_n_tty_close(tty); - tty->disc_data = NULL; dev_info(pps->dev, "removed\n"); pps_unregister_source(pps); } --- linux-3.5.0.orig/drivers/clk/clkdev.c +++ linux-3.5.0/drivers/clk/clkdev.c @@ -19,10 +19,82 @@ #include #include #include +#include static LIST_HEAD(clocks); static DEFINE_MUTEX(clocks_mutex); +#ifdef CONFIG_ARCH_HIGHBANK +#ifdef CONFIG_OF +struct clk *of_clk_get(struct device_node *np, int index) +{ + struct of_phandle_args clkspec; + struct clk *clk; + int rc; + + if (index < 0) + return ERR_PTR(-EINVAL); + + rc = of_parse_phandle_with_args(np, "clocks", "#clock-cells", index, + &clkspec); + if (rc) + return ERR_PTR(rc); + + clk = of_clk_get_from_provider(&clkspec); + of_node_put(clkspec.np); + return clk; +} +EXPORT_SYMBOL(of_clk_get); + +/** + * of_clk_get_by_name() - Parse and lookup a clock referenced by a device node + * @np: pointer to clock consumer node + * @name: name of consumer's clock input, or NULL for the first clock reference + * + * This function parses the clocks and clock-names properties, + * and uses them to look up the struct clk from the registered list of clock + * providers. + */ +struct clk *of_clk_get_by_name(struct device_node *np, const char *name) +{ + struct clk *clk = ERR_PTR(-ENOENT); + + /* Walk up the tree of devices looking for a clock that matches */ + while (np) { + int index = 0; + + /* + * For named clocks, first look up the name in the + * "clock-names" property. If it cannot be found, then + * index will be an error code, and of_clk_get() will fail. + */ + if (name) + index = of_property_match_string(np, "clock-names", name); + clk = of_clk_get(np, index); + if (!IS_ERR(clk)) + break; + else if (name && index >= 0) { + pr_err("ERROR: could not get clock %s:%s(%i)\n", + np->full_name, name ? name : "", index); + return clk; + } + + /* + * No matching clock found on this node. If the parent node + * has a "clock-ranges" property, then we can try one of its + * clocks. + */ + np = np->parent; + if (np && !of_get_property(np, "clock-ranges", NULL)) + break; + } + + return clk; +} +EXPORT_SYMBOL(of_clk_get_by_name); +#endif +#endif + /* * Find the correct struct clk for the device and connection ID. * We do slightly fuzzy matching here: @@ -83,6 +155,15 @@ struct clk *clk_get(struct device *dev, const char *con_id) { const char *dev_id = dev ? dev_name(dev) : NULL; +#ifdef CONFIG_ARCH_HIGHBANK + struct clk *clk; + + if (dev) { + clk = of_clk_get_by_name(dev->of_node, con_id); + if (clk && __clk_get(clk)) + return clk; + } +#endif return clk_get_sys(dev_id, con_id); } --- linux-3.5.0.orig/drivers/clk/clk-fixed-rate.c +++ linux-3.5.0/drivers/clk/clk-fixed-rate.c @@ -14,6 +14,7 @@ #include #include #include +#include /* * DOC: basic fixed-rate clock that cannot gate @@ -79,3 +80,25 @@ return clk; } + +#ifdef CONFIG_OF +/** + * of_fixed_clk_setup() - Setup function for simple fixed rate clock + */ +void __init of_fixed_clk_setup(struct device_node *node) +{ + struct clk *clk; + const char *clk_name = node->name; + u32 rate; + + if (of_property_read_u32(node, "clock-frequency", &rate)) + return; + + of_property_read_string(node, "clock-output-names", &clk_name); + + clk = clk_register_fixed_rate(NULL, clk_name, NULL, CLK_IS_ROOT, rate); + if (clk) + of_clk_add_provider(node, of_clk_src_simple_get, clk); +} +EXPORT_SYMBOL_GPL(of_fixed_clk_setup); +#endif --- linux-3.5.0.orig/drivers/clk/Makefile +++ linux-3.5.0/drivers/clk/Makefile @@ -3,5 +3,6 @@ obj-$(CONFIG_COMMON_CLK) += clk.o clk-fixed-rate.o clk-gate.o \ clk-mux.o clk-divider.o clk-fixed-factor.o # SoCs specific +obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o obj-$(CONFIG_ARCH_MXS) += mxs/ obj-$(CONFIG_PLAT_SPEAR) += spear/ --- linux-3.5.0.orig/drivers/clk/clk.c +++ linux-3.5.0/drivers/clk/clk.c @@ -16,6 +16,7 @@ #include #include #include +#include static DEFINE_SPINLOCK(enable_lock); static DEFINE_MUTEX(prepare_lock); @@ -1550,3 +1551,143 @@ return ret; } EXPORT_SYMBOL_GPL(clk_notifier_unregister); + +#ifdef CONFIG_OF +/** + * struct of_clk_provider - Clock provider registration structure + * @link: Entry in global list of clock providers + * @node: Pointer to device tree node of clock provider + * @get: Get clock callback. Returns NULL or a struct clk for the + * given clock specifier + * @data: context pointer to be passed into @get callback + */ +struct of_clk_provider { + struct list_head link; + + struct device_node *node; + struct clk *(*get)(struct of_phandle_args *clkspec, void *data); + void *data; +}; + +static LIST_HEAD(of_clk_providers); +static DEFINE_MUTEX(of_clk_lock); + +struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, + void *data) +{ + return data; +} +EXPORT_SYMBOL_GPL(of_clk_src_simple_get); + +/** + * of_clk_add_provider() - Register a clock provider for a node + * @np: Device node pointer associated with clock provider + * @clk_src_get: callback for decoding clock + * @data: context pointer for @clk_src_get callback. + */ +int of_clk_add_provider(struct device_node *np, + struct clk *(*clk_src_get)(struct of_phandle_args *clkspec, + void *data), + void *data) +{ + struct of_clk_provider *cp; + + cp = kzalloc(sizeof(struct of_clk_provider), GFP_KERNEL); + if (!cp) + return -ENOMEM; + + cp->node = of_node_get(np); + cp->data = data; + cp->get = clk_src_get; + + mutex_lock(&of_clk_lock); + list_add(&cp->link, &of_clk_providers); + mutex_unlock(&of_clk_lock); + pr_debug("Added clock from %s\n", np->full_name); + + return 0; +} +EXPORT_SYMBOL_GPL(of_clk_add_provider); + +/** + * of_clk_del_provider() - Remove a previously registered clock provider + * @np: Device node pointer associated with clock provider + */ +void of_clk_del_provider(struct device_node *np) +{ + struct of_clk_provider *cp; + + mutex_lock(&of_clk_lock); + list_for_each_entry(cp, &of_clk_providers, link) { + if (cp->node == np) { + list_del(&cp->link); + of_node_put(cp->node); + kfree(cp); + break; + } + } + mutex_unlock(&of_clk_lock); +} +EXPORT_SYMBOL_GPL(of_clk_del_provider); + +struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec) +{ + struct of_clk_provider *provider; + struct clk *clk = ERR_PTR(-ENOENT); + + /* Check if we have such a provider in our array */ + mutex_lock(&of_clk_lock); + list_for_each_entry(provider, &of_clk_providers, link) { + if (provider->node == clkspec->np) + clk = provider->get(clkspec, provider->data); + if (!IS_ERR(clk)) + break; + } + mutex_unlock(&of_clk_lock); + + return clk; +} +EXPORT_SYMBOL_GPL(of_clk_get_from_provider); + +const char *of_clk_get_parent_name(struct device_node *np, int index) +{ + struct of_phandle_args clkspec; + const char *clk_name; + int rc; + + if (index < 0) + return NULL; + + rc = of_parse_phandle_with_args(np, "clocks", "#clock-cells", index, + &clkspec); + if (rc) + return NULL; + + if (of_property_read_string_index(clkspec.np, "clock-output-names", + clkspec.args_count ? clkspec.args[0] : 0, + &clk_name) < 0) + clk_name = clkspec.np->name; + + of_node_put(clkspec.np); + return clk_name; +} +EXPORT_SYMBOL_GPL(of_clk_get_parent_name); + +/** + * of_clk_init() - Scan and init clock providers from the DT + * @matches: array of compatible values and init functions for providers. + * + * This function scans the device tree for matching clock providers and + * calls their initialization functions + */ +void __init of_clk_init(const struct of_device_id *matches) +{ + struct device_node *np; + + for_each_matching_node(np, matches) { + const struct of_device_id *match = of_match_node(matches, np); + of_clk_init_cb_t clk_init_cb = match->data; + clk_init_cb(np); + } +} +#endif --- linux-3.5.0.orig/drivers/clk/clk-highbank.c +++ linux-3.5.0/drivers/clk/clk-highbank.c @@ -0,0 +1,346 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#include +#include +#include +#include +#include +#include + +extern void __iomem *sregs_base; + +#define HB_PLL_LOCK_500 0x20000000 +#define HB_PLL_LOCK 0x10000000 +#define HB_PLL_DIVF_SHIFT 20 +#define HB_PLL_DIVF_MASK 0x0ff00000 +#define HB_PLL_DIVQ_SHIFT 16 +#define HB_PLL_DIVQ_MASK 0x00070000 +#define HB_PLL_DIVR_SHIFT 8 +#define HB_PLL_DIVR_MASK 0x00001f00 +#define HB_PLL_RANGE_SHIFT 4 +#define HB_PLL_RANGE_MASK 0x00000070 +#define HB_PLL_BYPASS 0x00000008 +#define HB_PLL_RESET 0x00000004 +#define HB_PLL_EXT_BYPASS 0x00000002 +#define HB_PLL_EXT_ENA 0x00000001 + +#define HB_PLL_VCO_MIN_FREQ 2133000000 +#define HB_PLL_MAX_FREQ HB_PLL_VCO_MIN_FREQ +#define HB_PLL_MIN_FREQ (HB_PLL_VCO_MIN_FREQ / 64) + +#define HB_A9_BCLK_DIV_MASK 0x00000006 +#define HB_A9_BCLK_DIV_SHIFT 1 +#define HB_A9_PCLK_DIV 0x00000001 + +struct hb_clk { + struct clk_hw hw; + void __iomem *reg; + char *parent_name; +}; +#define to_hb_clk(p) container_of(p, struct hb_clk, hw) + +static int clk_pll_prepare(struct clk_hw *hwclk) + { + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg &= ~HB_PLL_RESET; + writel(reg, hbclk->reg); + + while ((readl(hbclk->reg) & HB_PLL_LOCK) == 0) + ; + while ((readl(hbclk->reg) & HB_PLL_LOCK_500) == 0) + ; + + return 0; +} + +static void clk_pll_unprepare(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg |= HB_PLL_RESET; + writel(reg, hbclk->reg); +} + +static int clk_pll_enable(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg |= HB_PLL_EXT_ENA; + writel(reg, hbclk->reg); + + return 0; +} + +static void clk_pll_disable(struct clk_hw *hwclk) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 reg; + + reg = readl(hbclk->reg); + reg &= ~HB_PLL_EXT_ENA; + writel(reg, hbclk->reg); +} + +static unsigned long clk_pll_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + unsigned long divf, divq, vco_freq, reg; + + reg = readl(hbclk->reg); + if (reg & HB_PLL_EXT_BYPASS) + return parent_rate; + + divf = (reg & HB_PLL_DIVF_MASK) >> HB_PLL_DIVF_SHIFT; + divq = (reg & HB_PLL_DIVQ_MASK) >> HB_PLL_DIVQ_SHIFT; + vco_freq = parent_rate * (divf + 1); + + return vco_freq / (1 << divq); +} + +static void clk_pll_calc(unsigned long rate, unsigned long ref_freq, + u32 *pdivq, u32 *pdivf) +{ + u32 divq, divf; + unsigned long vco_freq; + + if (rate < HB_PLL_MIN_FREQ) + rate = HB_PLL_MIN_FREQ; + if (rate > HB_PLL_MAX_FREQ) + rate = HB_PLL_MAX_FREQ; + + for (divq = 1; divq <= 6; divq++) { + if ((rate * (1 << divq)) >= HB_PLL_VCO_MIN_FREQ) + break; + } + + vco_freq = rate * (1 << divq); + divf = (vco_freq + (ref_freq / 2)) / ref_freq; + divf--; + + *pdivq = divq; + *pdivf = divf; +} + +static long clk_pll_round_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long *parent_rate) +{ + u32 divq, divf; + unsigned long ref_freq = *parent_rate; + + clk_pll_calc(rate, ref_freq, &divq, &divf); + + return (ref_freq * (divf + 1)) / (1 << divq); +} + +static int clk_pll_set_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 divq, divf; + u32 reg; + + clk_pll_calc(rate, parent_rate, &divq, &divf); + + reg = readl(hbclk->reg); + if (divf != ((reg & HB_PLL_DIVF_MASK) >> HB_PLL_DIVF_SHIFT)) { + /* Need to re-lock PLL, so put it into bypass mode */ + reg |= HB_PLL_EXT_BYPASS; + writel(reg | HB_PLL_EXT_BYPASS, hbclk->reg); + + writel(reg | HB_PLL_RESET, hbclk->reg); + reg &= ~(HB_PLL_DIVF_MASK | HB_PLL_DIVQ_MASK); + reg |= (divf << HB_PLL_DIVF_SHIFT) | (divq << HB_PLL_DIVQ_SHIFT); + writel(reg | HB_PLL_RESET, hbclk->reg); + writel(reg, hbclk->reg); + + while ((readl(hbclk->reg) & HB_PLL_LOCK) == 0) + ; + while ((readl(hbclk->reg) & HB_PLL_LOCK_500) == 0) + ; + reg |= HB_PLL_EXT_ENA; + reg &= ~HB_PLL_EXT_BYPASS; + } else { + reg &= ~HB_PLL_DIVQ_MASK; + reg |= divq << HB_PLL_DIVQ_SHIFT; + } + writel(reg, hbclk->reg); + + return 0; +} + +static const struct clk_ops clk_pll_ops = { + .prepare = clk_pll_prepare, + .unprepare = clk_pll_unprepare, + .enable = clk_pll_enable, + .disable = clk_pll_disable, + .recalc_rate = clk_pll_recalc_rate, + .round_rate = clk_pll_round_rate, + .set_rate = clk_pll_set_rate, +}; + +static unsigned long clk_cpu_periphclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div = (readl(hbclk->reg) & HB_A9_PCLK_DIV) ? 8 : 4; + return parent_rate / div; +} + +static const struct clk_ops a9periphclk_ops = { + .recalc_rate = clk_cpu_periphclk_recalc_rate, +}; + +static unsigned long clk_cpu_a9bclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div = (readl(hbclk->reg) & HB_A9_BCLK_DIV_MASK) >> HB_A9_BCLK_DIV_SHIFT; + + return parent_rate / (div + 2); +} + +static const struct clk_ops a9bclk_ops = { + .recalc_rate = clk_cpu_a9bclk_recalc_rate, +}; + +static unsigned long clk_periclk_recalc_rate(struct clk_hw *hwclk, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div; + + div = readl(hbclk->reg) & 0x1f; + div++; + div *= 2; + + return parent_rate / div; +} + +static long clk_periclk_round_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long *parent_rate) +{ + u32 div; + + div = *parent_rate / rate; + div++; + div &= ~0x1; + + return *parent_rate / div; +} + +static int clk_periclk_set_rate(struct clk_hw *hwclk, unsigned long rate, + unsigned long parent_rate) +{ + struct hb_clk *hbclk = to_hb_clk(hwclk); + u32 div; + + div = parent_rate / rate; + if (div & 0x1) + return -EINVAL; + + writel(div >> 1, hbclk->reg); + return 0; +} + +static const struct clk_ops periclk_ops = { + .recalc_rate = clk_periclk_recalc_rate, + .round_rate = clk_periclk_round_rate, + .set_rate = clk_periclk_set_rate, +}; + +static __init struct clk *hb_clk_init(struct device_node *node, const struct clk_ops *ops) +{ + u32 reg; + struct clk *clk; + struct hb_clk *hb_clk; + const char *clk_name = node->name; + const char *parent_name; + struct clk_init_data init; + int rc; + + rc = of_property_read_u32(node, "reg", ®); + if (WARN_ON(rc)) + return NULL; + + hb_clk = kzalloc(sizeof(*hb_clk), GFP_KERNEL); + if (WARN_ON(!hb_clk)) + return NULL; + + hb_clk->reg = sregs_base + reg; + + of_property_read_string(node, "clock-output-names", &clk_name); + + init.name = clk_name; + init.ops = ops; + init.flags = 0; + parent_name = of_clk_get_parent_name(node, 0); + init.parent_names = &parent_name; + init.num_parents = 1; + + hb_clk->hw.init = &init; + + clk = clk_register(NULL, &hb_clk->hw); + if (WARN_ON(IS_ERR(clk))) { + kfree(hb_clk); + return NULL; + } + rc = of_clk_add_provider(node, of_clk_src_simple_get, clk); + return clk; +} + +static void __init hb_pll_init(struct device_node *node) +{ + hb_clk_init(node, &clk_pll_ops); +} + +static void __init hb_a9periph_init(struct device_node *node) +{ + hb_clk_init(node, &a9periphclk_ops); +} + +static void __init hb_a9bus_init(struct device_node *node) +{ + struct clk *clk = hb_clk_init(node, &a9bclk_ops); + clk_prepare_enable(clk); +} + +static void __init hb_emmc_init(struct device_node *node) +{ + hb_clk_init(node, &periclk_ops); +} + +static const __initconst struct of_device_id clk_match[] = { + { .compatible = "fixed-clock", .data = of_fixed_clk_setup, }, + { .compatible = "calxeda,hb-pll-clock", .data = hb_pll_init, }, + { .compatible = "calxeda,hb-a9periph-clock", .data = hb_a9periph_init, }, + { .compatible = "calxeda,hb-a9bus-clock", .data = hb_a9bus_init, }, + { .compatible = "calxeda,hb-emmc-clock", .data = hb_emmc_init, }, + {} +}; + +void __init highbank_clocks_init(void) +{ + of_clk_init(clk_match); +} --- linux-3.5.0.orig/drivers/char/random.c +++ linux-3.5.0/drivers/char/random.c @@ -125,21 +125,26 @@ * The current exported interfaces for gathering environmental noise * from the devices are: * + * void add_device_randomness(const void *buf, unsigned int size); * void add_input_randomness(unsigned int type, unsigned int code, * unsigned int value); - * void add_interrupt_randomness(int irq); + * void add_interrupt_randomness(int irq, int irq_flags); * void add_disk_randomness(struct gendisk *disk); * + * add_device_randomness() is for adding data to the random pool that + * is likely to differ between two devices (or possibly even per boot). + * This would be things like MAC addresses or serial numbers, or the + * read-out of the RTC. This does *not* add any actual entropy to the + * pool, but it initializes the pool to different values for devices + * that might otherwise be identical and have very little entropy + * available to them (particularly common in the embedded world). + * * add_input_randomness() uses the input layer interrupt timing, as well as * the event type information from the hardware. * - * add_interrupt_randomness() uses the inter-interrupt timing as random - * inputs to the entropy pool. Note that not all interrupts are good - * sources of randomness! For example, the timer interrupts is not a - * good choice, because the periodicity of the interrupts is too - * regular, and hence predictable to an attacker. Network Interface - * Controller interrupts are a better measure, since the timing of the - * NIC interrupts are more unpredictable. + * add_interrupt_randomness() uses the interrupt timing as random + * inputs to the entropy pool. Using the cycle counters and the irq source + * as inputs, it feeds the randomness roughly once a second. * * add_disk_randomness() uses what amounts to the seek time of block * layer request events, on a per-disk_devt basis, as input to the @@ -248,6 +253,8 @@ #include #include #include +#include +#include #ifdef CONFIG_GENERIC_HARDIRQS # include @@ -256,8 +263,12 @@ #include #include #include +#include #include +#define CREATE_TRACE_POINTS +#include + /* * Configuration information */ @@ -266,6 +277,8 @@ #define SEC_XFER_SIZE 512 #define EXTRACT_SIZE 10 +#define LONGS(x) (((x) + sizeof(unsigned long) - 1)/sizeof(unsigned long)) + /* * The minimum number of bits of entropy before we wake up a read on * /dev/random. Should be enough to do a significant reseed. @@ -420,8 +433,10 @@ /* read-write data: */ spinlock_t lock; unsigned add_ptr; + unsigned input_rotate; int entropy_count; - int input_rotate; + int entropy_total; + unsigned int initialized:1; __u8 last_data[EXTRACT_SIZE]; }; @@ -454,6 +469,10 @@ .pool = nonblocking_pool_data }; +static __u32 const twist_table[8] = { + 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, + 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; + /* * This function adds bytes into the entropy "pool". It does not * update the entropy estimate. The caller should call @@ -464,29 +483,24 @@ * it's cheap to do so and helps slightly in the expected case where * the entropy is concentrated in the low-order bits. */ -static void mix_pool_bytes_extract(struct entropy_store *r, const void *in, - int nbytes, __u8 out[64]) +static void _mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) { - static __u32 const twist_table[8] = { - 0x00000000, 0x3b6e20c8, 0x76dc4190, 0x4db26158, - 0xedb88320, 0xd6d6a3e8, 0x9b64c2b0, 0xa00ae278 }; unsigned long i, j, tap1, tap2, tap3, tap4, tap5; int input_rotate; int wordmask = r->poolinfo->poolwords - 1; const char *bytes = in; __u32 w; - unsigned long flags; - /* Taps are constant, so we can load them without holding r->lock. */ tap1 = r->poolinfo->tap1; tap2 = r->poolinfo->tap2; tap3 = r->poolinfo->tap3; tap4 = r->poolinfo->tap4; tap5 = r->poolinfo->tap5; - spin_lock_irqsave(&r->lock, flags); - input_rotate = r->input_rotate; - i = r->add_ptr; + smp_rmb(); + input_rotate = ACCESS_ONCE(r->input_rotate); + i = ACCESS_ONCE(r->add_ptr); /* mix one byte at a time to simplify size handling and churn faster */ while (nbytes--) { @@ -513,19 +527,61 @@ input_rotate += i ? 7 : 14; } - r->input_rotate = input_rotate; - r->add_ptr = i; + ACCESS_ONCE(r->input_rotate) = input_rotate; + ACCESS_ONCE(r->add_ptr) = i; + smp_wmb(); if (out) for (j = 0; j < 16; j++) ((__u32 *)out)[j] = r->pool[(i - j) & wordmask]; +} + +static void __mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) +{ + trace_mix_pool_bytes_nolock(r->name, nbytes, _RET_IP_); + _mix_pool_bytes(r, in, nbytes, out); +} + +static void mix_pool_bytes(struct entropy_store *r, const void *in, + int nbytes, __u8 out[64]) +{ + unsigned long flags; + trace_mix_pool_bytes(r->name, nbytes, _RET_IP_); + spin_lock_irqsave(&r->lock, flags); + _mix_pool_bytes(r, in, nbytes, out); spin_unlock_irqrestore(&r->lock, flags); } -static void mix_pool_bytes(struct entropy_store *r, const void *in, int bytes) +struct fast_pool { + __u32 pool[4]; + unsigned long last; + unsigned short count; + unsigned char rotate; + unsigned char last_timer_intr; +}; + +/* + * This is a fast mixing routine used by the interrupt randomness + * collector. It's hardcoded for an 128 bit pool and assumes that any + * locks that might be needed are taken by the caller. + */ +static void fast_mix(struct fast_pool *f, const void *in, int nbytes) { - mix_pool_bytes_extract(r, in, bytes, NULL); + const char *bytes = in; + __u32 w; + unsigned i = f->count; + unsigned input_rotate = f->rotate; + + while (nbytes--) { + w = rol32(*bytes++, input_rotate & 31) ^ f->pool[i & 3] ^ + f->pool[(i + 1) & 3]; + f->pool[i & 3] = (w >> 3) ^ twist_table[w & 7]; + input_rotate += (i++ & 3) ? 7 : 14; + } + f->count = i; + f->rotate = input_rotate; } /* @@ -533,30 +589,38 @@ */ static void credit_entropy_bits(struct entropy_store *r, int nbits) { - unsigned long flags; - int entropy_count; + int entropy_count, orig; if (!nbits) return; - spin_lock_irqsave(&r->lock, flags); - DEBUG_ENT("added %d entropy credits to %s\n", nbits, r->name); - entropy_count = r->entropy_count; +retry: + entropy_count = orig = ACCESS_ONCE(r->entropy_count); entropy_count += nbits; + if (entropy_count < 0) { DEBUG_ENT("negative entropy/overflow\n"); entropy_count = 0; } else if (entropy_count > r->poolinfo->POOLBITS) entropy_count = r->poolinfo->POOLBITS; - r->entropy_count = entropy_count; + if (cmpxchg(&r->entropy_count, orig, entropy_count) != orig) + goto retry; + + if (!r->initialized && nbits > 0) { + r->entropy_total += nbits; + if (r->entropy_total > 128) + r->initialized = 1; + } + + trace_credit_entropy_bits(r->name, nbits, entropy_count, + r->entropy_total, _RET_IP_); /* should we wake readers? */ if (r == &input_pool && entropy_count >= random_read_wakeup_thresh) { wake_up_interruptible(&random_read_wait); kill_fasync(&fasync, SIGIO, POLL_IN); } - spin_unlock_irqrestore(&r->lock, flags); } /********************************************************************* @@ -572,42 +636,24 @@ unsigned dont_count_entropy:1; }; -#ifndef CONFIG_GENERIC_HARDIRQS - -static struct timer_rand_state *irq_timer_state[NR_IRQS]; - -static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -{ - return irq_timer_state[irq]; -} - -static void set_timer_rand_state(unsigned int irq, - struct timer_rand_state *state) -{ - irq_timer_state[irq] = state; -} - -#else - -static struct timer_rand_state *get_timer_rand_state(unsigned int irq) -{ - struct irq_desc *desc; - - desc = irq_to_desc(irq); - - return desc->timer_rand_state; -} - -static void set_timer_rand_state(unsigned int irq, - struct timer_rand_state *state) +/* + * Add device- or boot-specific data to the input and nonblocking + * pools to help initialize them to unique values. + * + * None of this adds any entropy, it is meant to avoid the + * problem of the nonblocking pool having similar initial state + * across largely identical devices. + */ +void add_device_randomness(const void *buf, unsigned int size) { - struct irq_desc *desc; + unsigned long time = get_cycles() ^ jiffies; - desc = irq_to_desc(irq); - - desc->timer_rand_state = state; + mix_pool_bytes(&input_pool, buf, size, NULL); + mix_pool_bytes(&input_pool, &time, sizeof(time), NULL); + mix_pool_bytes(&nonblocking_pool, buf, size, NULL); + mix_pool_bytes(&nonblocking_pool, &time, sizeof(time), NULL); } -#endif +EXPORT_SYMBOL(add_device_randomness); static struct timer_rand_state input_timer_state; @@ -637,13 +683,9 @@ goto out; sample.jiffies = jiffies; - - /* Use arch random value, fall back to cycles */ - if (!arch_get_random_int(&sample.cycles)) - sample.cycles = get_cycles(); - + sample.cycles = get_cycles(); sample.num = num; - mix_pool_bytes(&input_pool, &sample, sizeof(sample)); + mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL); /* * Calculate number of bits of randomness we probably added. @@ -700,17 +742,48 @@ } EXPORT_SYMBOL_GPL(add_input_randomness); -void add_interrupt_randomness(int irq) +static DEFINE_PER_CPU(struct fast_pool, irq_randomness); + +void add_interrupt_randomness(int irq, int irq_flags) { - struct timer_rand_state *state; + struct entropy_store *r; + struct fast_pool *fast_pool = &__get_cpu_var(irq_randomness); + struct pt_regs *regs = get_irq_regs(); + unsigned long now = jiffies; + __u32 input[4], cycles = get_cycles(); + + input[0] = cycles ^ jiffies; + input[1] = irq; + if (regs) { + __u64 ip = instruction_pointer(regs); + input[2] = ip; + input[3] = ip >> 32; + } - state = get_timer_rand_state(irq); + fast_mix(fast_pool, input, sizeof(input)); - if (state == NULL) + if ((fast_pool->count & 1023) && + !time_after(now, fast_pool->last + HZ)) return; - DEBUG_ENT("irq event %d\n", irq); - add_timer_randomness(state, 0x100 + irq); + fast_pool->last = now; + + r = nonblocking_pool.initialized ? &input_pool : &nonblocking_pool; + __mix_pool_bytes(r, &fast_pool->pool, sizeof(fast_pool->pool), NULL); + /* + * If we don't have a valid cycle counter, and we see + * back-to-back timer interrupts, then skip giving credit for + * any entropy. + */ + if (cycles == 0) { + if (irq_flags & __IRQF_TIMER) { + if (fast_pool->last_timer_intr) + return; + fast_pool->last_timer_intr = 1; + } else + fast_pool->last_timer_intr = 0; + } + credit_entropy_bits(r, 1); } #ifdef CONFIG_BLOCK @@ -742,7 +815,7 @@ */ static void xfer_secondary_pool(struct entropy_store *r, size_t nbytes) { - __u32 tmp[OUTPUT_POOL_WORDS]; + __u32 tmp[OUTPUT_POOL_WORDS]; if (r->pull && r->entropy_count < nbytes * 8 && r->entropy_count < r->poolinfo->POOLBITS) { @@ -761,7 +834,7 @@ bytes = extract_entropy(r->pull, tmp, bytes, random_read_wakeup_thresh / 8, rsvd); - mix_pool_bytes(r, tmp, bytes); + mix_pool_bytes(r, tmp, bytes, NULL); credit_entropy_bits(r, bytes*8); } } @@ -820,13 +893,19 @@ static void extract_buf(struct entropy_store *r, __u8 *out) { int i; - __u32 hash[5], workspace[SHA_WORKSPACE_WORDS]; + union { + __u32 w[5]; + unsigned long l[LONGS(EXTRACT_SIZE)]; + } hash; + __u32 workspace[SHA_WORKSPACE_WORDS]; __u8 extract[64]; + unsigned long flags; /* Generate a hash across the pool, 16 words (512 bits) at a time */ - sha_init(hash); + sha_init(hash.w); + spin_lock_irqsave(&r->lock, flags); for (i = 0; i < r->poolinfo->poolwords; i += 16) - sha_transform(hash, (__u8 *)(r->pool + i), workspace); + sha_transform(hash.w, (__u8 *)(r->pool + i), workspace); /* * We mix the hash back into the pool to prevent backtracking @@ -837,13 +916,14 @@ * brute-forcing the feedback as hard as brute-forcing the * hash. */ - mix_pool_bytes_extract(r, hash, sizeof(hash), extract); + __mix_pool_bytes(r, hash.w, sizeof(hash.w), extract); + spin_unlock_irqrestore(&r->lock, flags); /* * To avoid duplicates, we atomically extract a portion of the * pool while mixing, and hash one final time. */ - sha_transform(hash, extract, workspace); + sha_transform(hash.w, extract, workspace); memset(extract, 0, sizeof(extract)); memset(workspace, 0, sizeof(workspace)); @@ -852,20 +932,32 @@ * pattern, we fold it in half. Thus, we always feed back * twice as much data as we output. */ - hash[0] ^= hash[3]; - hash[1] ^= hash[4]; - hash[2] ^= rol32(hash[2], 16); - memcpy(out, hash, EXTRACT_SIZE); - memset(hash, 0, sizeof(hash)); + hash.w[0] ^= hash.w[3]; + hash.w[1] ^= hash.w[4]; + hash.w[2] ^= rol32(hash.w[2], 16); + + /* + * If we have a architectural hardware random number + * generator, mix that in, too. + */ + for (i = 0; i < LONGS(EXTRACT_SIZE); i++) { + unsigned long v; + if (!arch_get_random_long(&v)) + break; + hash.l[i] ^= v; + } + + memcpy(out, &hash, EXTRACT_SIZE); + memset(&hash, 0, sizeof(hash)); } static ssize_t extract_entropy(struct entropy_store *r, void *buf, - size_t nbytes, int min, int reserved) + size_t nbytes, int min, int reserved) { ssize_t ret = 0, i; __u8 tmp[EXTRACT_SIZE]; - unsigned long flags; + trace_extract_entropy(r->name, nbytes, r->entropy_count, _RET_IP_); xfer_secondary_pool(r, nbytes); nbytes = account(r, nbytes, min, reserved); @@ -873,6 +965,8 @@ extract_buf(r, tmp); if (fips_enabled) { + unsigned long flags; + spin_lock_irqsave(&r->lock, flags); if (!memcmp(tmp, r->last_data, EXTRACT_SIZE)) panic("Hardware RNG duplicated output!\n"); @@ -898,6 +992,7 @@ ssize_t ret = 0, i; __u8 tmp[EXTRACT_SIZE]; + trace_extract_entropy_user(r->name, nbytes, r->entropy_count, _RET_IP_); xfer_secondary_pool(r, nbytes); nbytes = account(r, nbytes, 0, 0); @@ -931,17 +1026,35 @@ /* * This function is the exported kernel interface. It returns some - * number of good random numbers, suitable for seeding TCP sequence - * numbers, etc. + * number of good random numbers, suitable for key generation, seeding + * TCP sequence numbers, etc. It does not use the hw random number + * generator, if available; use get_random_bytes_arch() for that. */ void get_random_bytes(void *buf, int nbytes) { + extract_entropy(&nonblocking_pool, buf, nbytes, 0, 0); +} +EXPORT_SYMBOL(get_random_bytes); + +/* + * This function will use the architecture-specific hardware random + * number generator if it is available. The arch-specific hw RNG will + * almost certainly be faster than what we can do in software, but it + * is impossible to verify that it is implemented securely (as + * opposed, to, say, the AES encryption of a sequence number using a + * key known by the NSA). So it's useful if we need the speed, but + * only if we're willing to trust the hardware manufacturer not to + * have put in a back door. + */ +void get_random_bytes_arch(void *buf, int nbytes) +{ char *p = buf; + trace_get_random_bytes(nbytes, _RET_IP_); while (nbytes) { unsigned long v; int chunk = min(nbytes, (int)sizeof(unsigned long)); - + if (!arch_get_random_long(&v)) break; @@ -950,9 +1063,11 @@ nbytes -= chunk; } - extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); + if (nbytes) + extract_entropy(&nonblocking_pool, p, nbytes, 0, 0); } -EXPORT_SYMBOL(get_random_bytes); +EXPORT_SYMBOL(get_random_bytes_arch); + /* * init_std_data - initialize pool with system data @@ -966,23 +1081,30 @@ static void init_std_data(struct entropy_store *r) { int i; - ktime_t now; - unsigned long flags; + ktime_t now = ktime_get_real(); + unsigned long rv; - spin_lock_irqsave(&r->lock, flags); r->entropy_count = 0; - spin_unlock_irqrestore(&r->lock, flags); - - now = ktime_get_real(); - mix_pool_bytes(r, &now, sizeof(now)); - for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof flags) { - if (!arch_get_random_long(&flags)) + r->entropy_total = 0; + mix_pool_bytes(r, &now, sizeof(now), NULL); + for (i = r->poolinfo->POOLBYTES; i > 0; i -= sizeof(rv)) { + if (!arch_get_random_long(&rv)) break; - mix_pool_bytes(r, &flags, sizeof(flags)); + mix_pool_bytes(r, &rv, sizeof(rv), NULL); } - mix_pool_bytes(r, utsname(), sizeof(*(utsname()))); + mix_pool_bytes(r, utsname(), sizeof(*(utsname())), NULL); } +/* + * Note that setup_arch() may call add_device_randomness() + * long before we get here. This allows seeding of the pools + * with some platform dependent data very early in the boot + * process. But it limits our options here. We must use + * statically allocated structures that already have all + * initializations complete at compile time. We should also + * take care not to overwrite the precious per platform data + * we were given. + */ static int rand_initialize(void) { init_std_data(&input_pool); @@ -992,24 +1114,6 @@ } module_init(rand_initialize); -void rand_initialize_irq(int irq) -{ - struct timer_rand_state *state; - - state = get_timer_rand_state(irq); - - if (state) - return; - - /* - * If kzalloc returns null, we just won't use that entropy - * source. - */ - state = kzalloc(sizeof(struct timer_rand_state), GFP_KERNEL); - if (state) - set_timer_rand_state(irq, state); -} - #ifdef CONFIG_BLOCK void rand_initialize_disk(struct gendisk *disk) { @@ -1117,7 +1221,7 @@ count -= bytes; p += bytes; - mix_pool_bytes(r, buf, bytes); + mix_pool_bytes(r, buf, bytes, NULL); cond_resched(); } --- linux-3.5.0.orig/drivers/char/virtio_console.c +++ linux-3.5.0/drivers/char/virtio_console.c @@ -1808,7 +1808,8 @@ /* Disable interrupts for vqs */ vdev->config->reset(vdev); /* Finish up work that's lined up */ - cancel_work_sync(&portdev->control_work); + if (use_multiport(portdev)) + cancel_work_sync(&portdev->control_work); list_for_each_entry_safe(port, port2, &portdev->ports, list) unplug_port(port); --- linux-3.5.0.orig/drivers/char/mspec.c +++ linux-3.5.0/drivers/char/mspec.c @@ -283,7 +283,7 @@ vdata->flags = flags; vdata->type = type; spin_lock_init(&vdata->lock); - vdata->refcnt = ATOMIC_INIT(1); + atomic_set(&vdata->refcnt, 1); vma->vm_private_data = vdata; vma->vm_flags |= (VM_IO | VM_RESERVED | VM_PFNMAP | VM_DONTEXPAND); --- linux-3.5.0.orig/drivers/char/ttyprintk.c +++ linux-3.5.0/drivers/char/ttyprintk.c @@ -67,7 +67,7 @@ tmp[tpk_curr + 1] = '\0'; printk(KERN_INFO "%s%s", tpk_tag, tmp); tpk_curr = 0; - if (buf[i + 1] == '\n') + if ((i + 1) < count && buf[i + 1] == '\n') i++; break; case '\n': --- linux-3.5.0.orig/drivers/char/tpm/tpm.c +++ linux-3.5.0/drivers/char/tpm/tpm.c @@ -827,10 +827,10 @@ int tpm_do_selftest(struct tpm_chip *chip) { int rc; - u8 digest[TPM_DIGEST_SIZE]; unsigned int loops; unsigned int delay_msec = 1000; unsigned long duration; + struct tpm_cmd_t cmd; duration = tpm_calc_ordinal_duration(chip, TPM_ORD_CONTINUE_SELFTEST); @@ -845,7 +845,15 @@ return rc; do { - rc = __tpm_pcr_read(chip, 0, digest); + /* Attempt to read a PCR value */ + cmd.header.in = pcrread_header; + cmd.params.pcrread_in.pcr_idx = cpu_to_be32(0); + rc = tpm_transmit(chip, (u8 *) &cmd, READ_PCR_RESULT_SIZE); + + if (rc < TPM_HEADER_SIZE) + return -EFAULT; + + rc = be32_to_cpu(cmd.header.out.return_code); if (rc == TPM_ERR_DISABLED || rc == TPM_ERR_DEACTIVATED) { dev_info(chip->dev, "TPM is disabled/deactivated (0x%X)\n", rc); --- linux-3.5.0.orig/drivers/char/agp/intel-agp.h +++ linux-3.5.0/drivers/char/agp/intel-agp.h @@ -64,6 +64,7 @@ #define I830_PTE_SYSTEM_CACHED 0x00000006 /* GT PTE cache control fields */ #define GEN6_PTE_UNCACHED 0x00000002 +#define HSW_PTE_UNCACHED 0x00000000 #define GEN6_PTE_LLC 0x00000004 #define GEN6_PTE_LLC_MLC 0x00000006 #define GEN6_PTE_GFDT 0x00000008 @@ -239,19 +240,45 @@ #define PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_GT2_IG 0x016A #define PCI_DEVICE_ID_INTEL_VALLEYVIEW_HB 0x0F00 /* VLV1 */ #define PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG 0x0F30 -#define PCI_DEVICE_ID_INTEL_HASWELL_HB 0x0400 /* Desktop */ +#define PCI_DEVICE_ID_INTEL_HASWELL_HB 0x0400 /* Desktop */ #define PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG 0x0402 #define PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG 0x0412 -#define PCI_DEVICE_ID_INTEL_HASWELL_M_HB 0x0404 /* Mobile */ +#define PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG 0x0422 +#define PCI_DEVICE_ID_INTEL_HASWELL_M_HB 0x0404 /* Mobile */ #define PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG 0x0406 #define PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG 0x0416 -#define PCI_DEVICE_ID_INTEL_HASWELL_S_HB 0x0408 /* Server */ +#define PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG 0x0426 +#define PCI_DEVICE_ID_INTEL_HASWELL_S_HB 0x0408 /* Server */ #define PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG 0x040a #define PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG 0x041a -#define PCI_DEVICE_ID_INTEL_HASWELL_SDV 0x0c16 /* SDV */ -#define PCI_DEVICE_ID_INTEL_HASWELL_E_HB 0x0c04 +#define PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG 0x042a +#define PCI_DEVICE_ID_INTEL_HASWELL_E_HB 0x0c04 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG 0x0C02 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG 0x0C12 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG 0x0C22 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG 0x0C06 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG 0x0C16 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG 0x0C26 +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG 0x0C0A +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG 0x0C1A +#define PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG 0x0C2A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG 0x0A02 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG 0x0A12 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG 0x0A22 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG 0x0A06 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG 0x0A16 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG 0x0A26 +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG 0x0A0A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG 0x0A1A +#define PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG 0x0A2A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG 0x0D12 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG 0x0D22 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG 0x0D32 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG 0x0D16 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG 0x0D26 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG 0x0D36 +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG 0x0D1A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG 0x0D2A +#define PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG 0x0D3A -int intel_gmch_probe(struct pci_dev *pdev, - struct agp_bridge_data *bridge); -void intel_gmch_remove(struct pci_dev *pdev); #endif --- linux-3.5.0.orig/drivers/char/agp/intel-gtt.c +++ linux-3.5.0/drivers/char/agp/intel-gtt.c @@ -66,7 +66,6 @@ struct pci_dev *bridge_dev; u8 __iomem *registers; phys_addr_t gtt_bus_addr; - phys_addr_t gma_bus_addr; u32 PGETBL_save; u32 __iomem *gtt; /* I915G */ bool clear_fake_agp; /* on first access via agp, fill with scratch */ @@ -76,6 +75,7 @@ struct resource ifp_resource; int resource_valid; struct page *scratch_page; + int refcount; } intel_private; #define INTEL_GTT_GEN intel_private.driver->gen @@ -648,6 +648,7 @@ static int intel_gtt_init(void) { + u32 gma_addr; u32 gtt_map_size; int ret; @@ -694,6 +695,15 @@ return ret; } + if (INTEL_GTT_GEN <= 2) + pci_read_config_dword(intel_private.pcidev, I810_GMADDR, + &gma_addr); + else + pci_read_config_dword(intel_private.pcidev, I915_GMADDR, + &gma_addr); + + intel_private.base.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK); + return 0; } @@ -767,20 +777,10 @@ writel(addr | pte_flags, intel_private.gtt + entry); } -static bool intel_enable_gtt(void) +bool intel_enable_gtt(void) { - u32 gma_addr; u8 __iomem *reg; - if (INTEL_GTT_GEN <= 2) - pci_read_config_dword(intel_private.pcidev, I810_GMADDR, - &gma_addr); - else - pci_read_config_dword(intel_private.pcidev, I915_GMADDR, - &gma_addr); - - intel_private.gma_bus_addr = (gma_addr & PCI_BASE_ADDRESS_MEM_MASK); - if (INTEL_GTT_GEN >= 6) return true; @@ -823,6 +823,7 @@ return true; } +EXPORT_SYMBOL(intel_enable_gtt); static int i830_setup(void) { @@ -860,7 +861,7 @@ return -EIO; intel_private.clear_fake_agp = true; - agp_bridge->gart_bus_addr = intel_private.gma_bus_addr; + agp_bridge->gart_bus_addr = intel_private.base.gma_bus_addr; return 0; } @@ -904,6 +905,30 @@ } EXPORT_SYMBOL(intel_gtt_insert_sg_entries); +void intel_gtt_insert_sg_entries_hsw(struct sg_table *st, + unsigned int pg_start, + unsigned int flags) +{ + struct scatterlist *sg; + unsigned int len, m; + int i, j; + + j = pg_start; + + /* sg may merge pages, but we have to separate + * per-page addr for GTT */ + for_each_sg(st->sgl, sg, st->nents, i) { + len = sg_dma_len(sg) >> PAGE_SHIFT; + for (m = 0; m < len; m++) { + dma_addr_t addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + intel_private.driver->write_entry(addr, j, flags); + j++; + } + } + readl(intel_private.gtt+j-1); +} +EXPORT_SYMBOL(intel_gtt_insert_sg_entries_hsw); + void intel_gtt_insert_pages(unsigned int first_entry, unsigned int num_entries, struct page **pages, unsigned int flags) { @@ -1155,6 +1180,30 @@ return true; } +static void haswell_write_entry(dma_addr_t addr, unsigned int entry, + unsigned int flags) +{ + unsigned int type_mask = flags & ~AGP_USER_CACHED_MEMORY_GFDT; + unsigned int gfdt = flags & AGP_USER_CACHED_MEMORY_GFDT; + u32 pte_flags; + + if (type_mask == AGP_USER_MEMORY) + pte_flags = HSW_PTE_UNCACHED | I810_PTE_VALID; + else if (type_mask == AGP_USER_CACHED_MEMORY_LLC_MLC) { + pte_flags = GEN6_PTE_LLC_MLC | I810_PTE_VALID; + if (gfdt) + pte_flags |= GEN6_PTE_GFDT; + } else { /* set 'normal'/'cached' to LLC by default */ + pte_flags = GEN6_PTE_LLC | I810_PTE_VALID; + if (gfdt) + pte_flags |= GEN6_PTE_GFDT; + } + + /* gen6 has bit11-4 for physical addr bit39-32 */ + addr |= (addr >> 28) & 0xff0; + writel(addr | pte_flags, intel_private.gtt + entry); +} + static void gen6_write_entry(dma_addr_t addr, unsigned int entry, unsigned int flags) { @@ -1372,6 +1421,15 @@ .check_flags = gen6_check_flags, .chipset_flush = i9xx_chipset_flush, }; +static const struct intel_gtt_driver haswell_gtt_driver = { + .gen = 6, + .setup = i9xx_setup, + .cleanup = gen6_cleanup, + .write_entry = haswell_write_entry, + .dma_mask_size = 40, + .check_flags = gen6_check_flags, + .chipset_flush = i9xx_chipset_flush, +}; static const struct intel_gtt_driver valleyview_gtt_driver = { .gen = 7, .setup = i9xx_setup, @@ -1490,19 +1548,77 @@ { PCI_DEVICE_ID_INTEL_VALLEYVIEW_IG, "ValleyView", &valleyview_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_D_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_M_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_S_GT1_IG, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_IG, - "Haswell", &sandybridge_gtt_driver }, - { PCI_DEVICE_ID_INTEL_HASWELL_SDV, - "Haswell", &sandybridge_gtt_driver }, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_SDV_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_ULT_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_D_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_M_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT1_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_IG, + "Haswell", &haswell_gtt_driver }, + { PCI_DEVICE_ID_INTEL_HASWELL_CRW_S_GT2_PLUS_IG, + "Haswell", &haswell_gtt_driver }, { 0, NULL, NULL } }; @@ -1523,14 +1639,32 @@ return 1; } -int intel_gmch_probe(struct pci_dev *pdev, - struct agp_bridge_data *bridge) +int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, + struct agp_bridge_data *bridge) { int i, mask; - intel_private.driver = NULL; + + /* + * Can be called from the fake agp driver but also directly from + * drm/i915.ko. Hence we need to check whether everything is set up + * already. + */ + if (intel_private.driver) { + intel_private.refcount++; + return 1; + } for (i = 0; intel_gtt_chipsets[i].name != NULL; i++) { - if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) { + if (gpu_pdev) { + if (gpu_pdev->device == + intel_gtt_chipsets[i].gmch_chip_id) { + intel_private.pcidev = pci_dev_get(gpu_pdev); + intel_private.driver = + intel_gtt_chipsets[i].gtt_driver; + + break; + } + } else if (find_gmch(intel_gtt_chipsets[i].gmch_chip_id)) { intel_private.driver = intel_gtt_chipsets[i].gtt_driver; break; @@ -1540,13 +1674,17 @@ if (!intel_private.driver) return 0; - bridge->driver = &intel_fake_agp_driver; - bridge->dev_private_data = &intel_private; - bridge->dev = pdev; + intel_private.refcount++; + + if (bridge) { + bridge->driver = &intel_fake_agp_driver; + bridge->dev_private_data = &intel_private; + bridge->dev = bridge_pdev; + } - intel_private.bridge_dev = pci_dev_get(pdev); + intel_private.bridge_dev = pci_dev_get(bridge_pdev); - dev_info(&pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name); + dev_info(&bridge_pdev->dev, "Intel %s Chipset\n", intel_gtt_chipsets[i].name); mask = intel_private.driver->dma_mask_size; if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(mask))) @@ -1556,17 +1694,17 @@ pci_set_consistent_dma_mask(intel_private.pcidev, DMA_BIT_MASK(mask)); - /*if (bridge->driver == &intel_810_driver) - return 1;*/ + if (intel_gtt_init() != 0) { + intel_gmch_remove(); - if (intel_gtt_init() != 0) return 0; + } return 1; } EXPORT_SYMBOL(intel_gmch_probe); -const struct intel_gtt *intel_gtt_get(void) +struct intel_gtt *intel_gtt_get(void) { return &intel_private.base; } @@ -1579,12 +1717,16 @@ } EXPORT_SYMBOL(intel_gtt_chipset_flush); -void intel_gmch_remove(struct pci_dev *pdev) +void intel_gmch_remove(void) { + if (--intel_private.refcount) + return; + if (intel_private.pcidev) pci_dev_put(intel_private.pcidev); if (intel_private.bridge_dev) pci_dev_put(intel_private.bridge_dev); + intel_private.driver = NULL; } EXPORT_SYMBOL(intel_gmch_remove); --- linux-3.5.0.orig/drivers/char/agp/intel-agp.c +++ linux-3.5.0/drivers/char/agp/intel-agp.c @@ -12,6 +12,7 @@ #include #include "agp.h" #include "intel-agp.h" +#include int intel_agp_enabled; EXPORT_SYMBOL(intel_agp_enabled); @@ -747,7 +748,7 @@ bridge->capndx = cap_ptr; - if (intel_gmch_probe(pdev, bridge)) + if (intel_gmch_probe(pdev, NULL, bridge)) goto found_gmch; for (i = 0; intel_agp_chipsets[i].name != NULL; i++) { @@ -824,7 +825,7 @@ agp_remove_bridge(bridge); - intel_gmch_remove(pdev); + intel_gmch_remove(); agp_put_bridge(bridge); } @@ -902,17 +903,6 @@ ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB), ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB), - ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_M_HB), - ID(PCI_DEVICE_ID_INTEL_IVYBRIDGE_S_HB), - ID(PCI_DEVICE_ID_INTEL_VALLEYVIEW_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_M_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_S_HB), - ID(PCI_DEVICE_ID_INTEL_HASWELL_E_HB), { } }; --- linux-3.5.0.orig/drivers/mfd/rtsx_pcr.h +++ linux-3.5.0/drivers/mfd/rtsx_pcr.h @@ -0,0 +1,36 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_PCR_H +#define __RTSX_PCR_H + +#include + +#define MIN_DIV_N_PCR 80 +#define MAX_DIV_N_PCR 208 + +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 rts5227_init_params(struct rtsx_pcr *pcr); + +#endif --- linux-3.5.0.orig/drivers/mfd/ab3100-core.c +++ linux-3.5.0/drivers/mfd/ab3100-core.c @@ -409,8 +409,6 @@ u32 fatevent; int err; - add_interrupt_randomness(irq); - err = ab3100_get_register_page_interruptible(ab3100, AB3100_EVENTA1, event_regs, 3); if (err) @@ -933,9 +931,6 @@ err = request_threaded_irq(client->irq, NULL, ab3100_irq_handler, IRQF_ONESHOT, "ab3100-core", ab3100); - /* This real unpredictable IRQ is of course sampled for entropy */ - rand_initialize_irq(client->irq); - if (err) goto exit_no_irq; --- linux-3.5.0.orig/drivers/mfd/Kconfig +++ linux-3.5.0/drivers/mfd/Kconfig @@ -38,6 +38,15 @@ lines on the SM501. The platform data is used to supply the base number for the first GPIO line to register. +config MFD_RTSX_PCI + tristate "Support for Realtek PCI-E card reader" + depends on PCI + help + This supports for Realtek PCI-Express card reader including rts5209, + rts5229, rtl8411, etc. Realtek card reader supports access to many + types of memory cards, such as Memory Stick, Memory Stick Pro, + Secure Digital and MultiMediaCard. + config MFD_ASIC3 bool "Support for Compaq ASIC3" depends on GENERIC_HARDIRQS && GPIOLIB && ARM --- linux-3.5.0.orig/drivers/mfd/rts5209.c +++ linux-3.5.0/drivers/mfd/rts5209.c @@ -0,0 +1,252 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rts5209_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + val = rtsx_pci_readb(pcr, 0x1C); + return val & 0x0F; +} + +static void rts5209_init_vendor_cfg(struct rtsx_pcr *pcr) +{ + u32 val; + + rtsx_pci_read_config_dword(pcr, 0x724, &val); + dev_dbg(&(pcr->pci->dev), "Cfg 0x724: 0x%x\n", val); + + if (!(val & 0x80)) { + if (val & 0x08) + pcr->ms_pmos = false; + else + pcr->ms_pmos = true; + } +} + +static int rts5209_extra_init_hw(struct rtsx_pcr *pcr) +{ + rtsx_pci_init_cmd(pcr); + + /* Turn off LED */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO, 0xFF, 0x03); + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_GPIO_DIR, 0xFF, 0x03); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5209_optimize_phy(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xB966); +} + +static int rts5209_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); +} + +static int rts5209_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); +} + +static int rts5209_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); +} + +static int rts5209_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); +} + +static int rts5209_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + u8 pwr_mask, partial_pwr_on, pwr_on; + + pwr_mask = SD_POWER_MASK; + partial_pwr_on = SD_PARTIAL_POWER_ON; + pwr_on = SD_POWER_ON; + + if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + pwr_mask = MS_POWER_MASK; + partial_pwr_on = MS_PARTIAL_POWER_ON; + pwr_on = MS_POWER_ON; + } + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + pwr_mask, partial_pwr_on); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x04); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, pwr_mask, pwr_on); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x00); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5209_card_power_off(struct rtsx_pcr *pcr, int card) +{ + u8 pwr_mask, pwr_off; + + pwr_mask = SD_POWER_MASK; + pwr_off = SD_POWER_OFF; + + if (pcr->ms_pmos && (card == RTSX_MS_CARD)) { + pwr_mask = MS_POWER_MASK; + pwr_off = MS_POWER_OFF; + } + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + pwr_mask | PMOS_STRG_MASK, pwr_off | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X06); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5209_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static const struct pcr_ops rts5209_pcr_ops = { + .extra_init_hw = rts5209_extra_init_hw, + .optimize_phy = rts5209_optimize_phy, + .turn_on_led = rts5209_turn_on_led, + .turn_off_led = rts5209_turn_off_led, + .enable_auto_blink = rts5209_enable_auto_blink, + .disable_auto_blink = rts5209_disable_auto_blink, + .card_power_on = rts5209_card_power_on, + .card_power_off = rts5209_card_power_off, + .switch_output_voltage = rts5209_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5209_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5209_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5209_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5209_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5209_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | + EXTRA_CAPS_SD_SDR104 | EXTRA_CAPS_MMC_8BIT; + pcr->num_slots = 2; + pcr->ops = &rts5209_pcr_ops; + + rts5209_init_vendor_cfg(pcr); + + pcr->ic_version = rts5209_get_ic_version(pcr); + pcr->sd_pull_ctl_enable_tbl = rts5209_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = rts5209_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = rts5209_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5209_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/mfd/rts5229.c +++ linux-3.5.0/drivers/mfd/rts5229.c @@ -0,0 +1,234 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rts5229_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + rtsx_pci_read_register(pcr, DUMMY_REG_RESET_0, &val); + return val & 0x0F; +} + +static int rts5229_extra_init_hw(struct rtsx_pcr *pcr) +{ + rtsx_pci_init_cmd(pcr); + + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02); + /* Switch LDO3318 source from DV33 to card_3v3 */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x01); + /* LED shine disabled, set initial shine cycle period */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OLT_LED_CTL, 0x0F, 0x02); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5229_optimize_phy(struct rtsx_pcr *pcr) +{ + /* Optimize RX sensitivity */ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42); +} + +static int rts5229_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02); +} + +static int rts5229_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); +} + +static int rts5229_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08); +} + +static int rts5229_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00); +} + +static int rts5229_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_PARTIAL_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x02); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x06); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5229_card_power_off(struct rtsx_pcr *pcr, int card) +{ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK | PMOS_STRG_MASK, + SD_POWER_OFF | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X00); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5229_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + return 0; +} + +static const struct pcr_ops rts5229_pcr_ops = { + .extra_init_hw = rts5229_extra_init_hw, + .optimize_phy = rts5229_optimize_phy, + .turn_on_led = rts5229_turn_on_led, + .turn_off_led = rts5229_turn_off_led, + .enable_auto_blink = rts5229_enable_auto_blink, + .disable_auto_blink = rts5229_disable_auto_blink, + .card_power_on = rts5229_card_power_on, + .card_power_off = rts5229_card_power_off, + .switch_output_voltage = rts5229_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5229_sd_pull_ctl_enable_tbl1[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* For RTS5229 version C */ +static const u32 rts5229_sd_pull_ctl_enable_tbl2[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5229_sd_pull_ctl_disable_tbl1[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* For RTS5229 version C */ +static const u32 rts5229_sd_pull_ctl_disable_tbl2[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5229_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5229_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5229_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rts5229_pcr_ops; + + pcr->ic_version = rts5229_get_ic_version(pcr); + if (pcr->ic_version == IC_VER_C) { + pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl2; + pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl2; + } else { + pcr->sd_pull_ctl_enable_tbl = rts5229_sd_pull_ctl_enable_tbl1; + pcr->sd_pull_ctl_disable_tbl = rts5229_sd_pull_ctl_disable_tbl1; + } + pcr->ms_pull_ctl_enable_tbl = rts5229_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5229_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/mfd/rtl8411.c +++ linux-3.5.0/drivers/mfd/rtl8411.c @@ -0,0 +1,290 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include + +#include "rtsx_pcr.h" + +static u8 rtl8411_get_ic_version(struct rtsx_pcr *pcr) +{ + u8 val; + + rtsx_pci_read_register(pcr, SYS_VER, &val); + return val & 0x0F; +} + +static int rtl8411_extra_init_hw(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK | CD_AUTO_DISABLE, CD_ENABLE); +} + +static int rtl8411_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x00); +} + +static int rtl8411_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_GPIO, 0x01, 0x01); +} + +static int rtl8411_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0xFF, 0x0D); +} + +static int rtl8411_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, CARD_AUTO_BLINK, 0x08, 0x00); +} + +static int rtl8411_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_CTL, + BPP_LDO_POWB, BPP_LDO_SUSPEND); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_10_PERCENT_ON); + if (err < 0) + return err; + + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_15_PERCENT_ON); + if (err < 0) + return err; + + udelay(150); + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_ON); + if (err < 0) + return err; + + return rtsx_pci_write_register(pcr, LDO_CTL, BPP_LDO_POWB, BPP_LDO_ON); +} + +static int rtl8411_card_power_off(struct rtsx_pcr *pcr, int card) +{ + int err; + + err = rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_OFF); + if (err < 0) + return err; + + return rtsx_pci_write_register(pcr, LDO_CTL, + BPP_LDO_POWB, BPP_LDO_SUSPEND); +} + +static int rtl8411_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + u8 mask, val; + int err; + + mask = (BPP_REG_TUNED18 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_MASK; + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_D); + if (err < 0) + return err; + val = (BPP_ASIC_3V3 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_3V3; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_register(pcr, + SD30_DRIVE_SEL, 0x07, DRIVER_TYPE_B); + if (err < 0) + return err; + val = (BPP_ASIC_1V8 << BPP_TUNED18_SHIFT_8411) | BPP_PAD_1V8; + } else { + return -EINVAL; + } + + return rtsx_pci_write_register(pcr, LDO_CTL, mask, val); +} + +static unsigned int rtl8411_cd_deglitch(struct rtsx_pcr *pcr) +{ + unsigned int card_exist; + + card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); + card_exist &= CARD_EXIST; + if (!card_exist) { + /* Enable card CD */ + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, CD_ENABLE); + /* Enable card interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x00); + return 0; + } + + if (hweight32(card_exist) > 1) { + rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_5_PERCENT_ON); + msleep(100); + + card_exist = rtsx_pci_readl(pcr, RTSX_BIPR); + if (card_exist & MS_EXIST) + card_exist = MS_EXIST; + else if (card_exist & SD_EXIST) + card_exist = SD_EXIST; + else + card_exist = 0; + + rtsx_pci_write_register(pcr, CARD_PWR_CTL, + BPP_POWER_MASK, BPP_POWER_OFF); + + dev_dbg(&(pcr->pci->dev), + "After CD deglitch, card_exist = 0x%x\n", + card_exist); + } + + if (card_exist & MS_EXIST) { + /* Disable SD interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x40); + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, MS_CD_EN_ONLY); + } else if (card_exist & SD_EXIST) { + /* Disable MS interrupt */ + rtsx_pci_write_register(pcr, EFUSE_CONTENT, 0xe0, 0x80); + rtsx_pci_write_register(pcr, CD_PAD_CTL, + CD_DISABLE_MASK, SD_CD_EN_ONLY); + } + + return card_exist; +} + +static int rtl8411_conv_clk_and_div_n(int input, int dir) +{ + int output; + + if (dir == CLK_TO_DIV_N) + output = input * 4 / 5 - 2; + else + output = (input + 2) * 5 / 4; + + return output; +} + +static const struct pcr_ops rtl8411_pcr_ops = { + .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 = rtl8411_switch_output_voltage, + .cd_deglitch = rtl8411_cd_deglitch, + .conv_clk_and_div_n = rtl8411_conv_clk_and_div_n, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rtl8411_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xA9), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rtl8411_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rtl8411_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rtl8411_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL1, 0x65), + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0x95), + RTSX_REG_PAIR(CARD_PULL_CTL4, 0x09), + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x05), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x04), + 0, +}; + +void rtl8411_init_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->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; +} --- linux-3.5.0.orig/drivers/mfd/rtsx_pcr.c +++ linux-3.5.0/drivers/mfd/rtsx_pcr.c @@ -0,0 +1,1313 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rtsx_pcr.h" + +static bool msi_en = true; +module_param(msi_en, bool, S_IRUGO | S_IWUSR); +MODULE_PARM_DESC(msi_en, "Enable MSI"); + +static DEFINE_IDR(rtsx_pci_idr); +static DEFINE_SPINLOCK(rtsx_pci_lock); + +static struct mfd_cell rtsx_pcr_cells[] = { + [RTSX_SD_CARD] = { + .name = DRV_NAME_RTSX_PCI_SDMMC, + }, + [RTSX_MS_CARD] = { + .name = DRV_NAME_RTSX_PCI_MS, + }, +}; + +static DEFINE_PCI_DEVICE_TABLE(rtsx_pci_ids) = { + { PCI_DEVICE(0x10EC, 0x5209), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5229), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5289), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { PCI_DEVICE(0x10EC, 0x5227), PCI_CLASS_OTHERS << 16, 0xFF0000 }, + { 0, } +}; + +MODULE_DEVICE_TABLE(pci, rtsx_pci_ids); + +void rtsx_pci_start_run(struct rtsx_pcr *pcr) +{ + /* If pci device removed, don't queue idle work any more */ + if (pcr->remove_pci) + return; + + if (pcr->state != PDEV_STAT_RUN) { + pcr->state = PDEV_STAT_RUN; + if (pcr->ops->enable_auto_blink) + pcr->ops->enable_auto_blink(pcr); + } + + cancel_delayed_work(&pcr->idle_work); + queue_delayed_work(system_wq, &pcr->idle_work, msecs_to_jiffies(200)); +} +EXPORT_SYMBOL_GPL(rtsx_pci_start_run); + +int rtsx_pci_write_register(struct rtsx_pcr *pcr, u16 addr, u8 mask, u8 data) +{ + int i; + u32 val = HAIMR_WRITE_START; + + val |= (u32)(addr & 0x3FFF) << 16; + val |= (u32)mask << 8; + val |= (u32)data; + + rtsx_pci_writel(pcr, RTSX_HAIMR, val); + + for (i = 0; i < MAX_RW_REG_CNT; i++) { + val = rtsx_pci_readl(pcr, RTSX_HAIMR); + if ((val & HAIMR_TRANS_END) == 0) { + if (data != (u8)val) + return -EIO; + return 0; + } + } + + return -ETIMEDOUT; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_register); + +int rtsx_pci_read_register(struct rtsx_pcr *pcr, u16 addr, u8 *data) +{ + u32 val = HAIMR_READ_START; + int i; + + val |= (u32)(addr & 0x3FFF) << 16; + rtsx_pci_writel(pcr, RTSX_HAIMR, val); + + for (i = 0; i < MAX_RW_REG_CNT; i++) { + val = rtsx_pci_readl(pcr, RTSX_HAIMR); + if ((val & HAIMR_TRANS_END) == 0) + break; + } + + if (i >= MAX_RW_REG_CNT) + return -ETIMEDOUT; + + if (data) + *data = (u8)(val & 0xFF); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_register); + +int rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val) +{ + int err, i, finished = 0; + u8 tmp; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYDATA0, 0xFF, (u8)val); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYDATA1, 0xFF, (u8)(val >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYADDR, 0xFF, addr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYRWCTL, 0xFF, 0x81); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + for (i = 0; i < 100000; i++) { + err = rtsx_pci_read_register(pcr, PHYRWCTL, &tmp); + if (err < 0) + return err; + + if (!(tmp & 0x80)) { + finished = 1; + break; + } + } + + if (!finished) + return -ETIMEDOUT; + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_phy_register); + +int rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val) +{ + int err, i, finished = 0; + u16 data; + u8 *ptr, tmp; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYADDR, 0xFF, addr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PHYRWCTL, 0xFF, 0x80); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + for (i = 0; i < 100000; i++) { + err = rtsx_pci_read_register(pcr, PHYRWCTL, &tmp); + if (err < 0) + return err; + + if (!(tmp & 0x80)) { + finished = 1; + break; + } + } + + if (!finished) + return -ETIMEDOUT; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PHYDATA0, 0, 0); + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PHYDATA1, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + ptr = rtsx_pci_get_cmd_data(pcr); + data = ((u16)ptr[1] << 8) | ptr[0]; + + if (val) + *val = data; + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_phy_register); + +void rtsx_pci_stop_cmd(struct rtsx_pcr *pcr) +{ + rtsx_pci_writel(pcr, RTSX_HCBCTLR, STOP_CMD); + rtsx_pci_writel(pcr, RTSX_HDBCTLR, STOP_DMA); + + rtsx_pci_write_register(pcr, DMACTL, 0x80, 0x80); + rtsx_pci_write_register(pcr, RBCTL, 0x80, 0x80); +} +EXPORT_SYMBOL_GPL(rtsx_pci_stop_cmd); + +void rtsx_pci_add_cmd(struct rtsx_pcr *pcr, + u8 cmd_type, u16 reg_addr, u8 mask, u8 data) +{ + unsigned long flags; + u32 val = 0; + u32 *ptr = (u32 *)(pcr->host_cmds_ptr); + + val |= (u32)(cmd_type & 0x03) << 30; + val |= (u32)(reg_addr & 0x3FFF) << 16; + val |= (u32)mask << 8; + val |= (u32)data; + + spin_lock_irqsave(&pcr->lock, flags); + ptr += pcr->ci; + if (pcr->ci < (HOST_CMDS_BUF_LEN / 4)) { + put_unaligned_le32(val, ptr); + ptr++; + pcr->ci++; + } + spin_unlock_irqrestore(&pcr->lock, flags); +} +EXPORT_SYMBOL_GPL(rtsx_pci_add_cmd); + +void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr) +{ + u32 val = 1 << 31; + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + val |= (u32)(pcr->ci * 4) & 0x00FFFFFF; + /* Hardware Auto Response */ + val |= 0x40000000; + rtsx_pci_writel(pcr, RTSX_HCBCTLR, val); +} +EXPORT_SYMBOL_GPL(rtsx_pci_send_cmd_no_wait); + +int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout) +{ + struct completion trans_done; + u32 val = 1 << 31; + long timeleft; + unsigned long flags; + int err = 0; + + spin_lock_irqsave(&pcr->lock, flags); + + /* set up data structures for the wakeup system */ + pcr->done = &trans_done; + pcr->trans_result = TRANS_NOT_READY; + init_completion(&trans_done); + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + val |= (u32)(pcr->ci * 4) & 0x00FFFFFF; + /* Hardware Auto Response */ + val |= 0x40000000; + rtsx_pci_writel(pcr, RTSX_HCBCTLR, val); + + spin_unlock_irqrestore(&pcr->lock, flags); + + /* Wait for TRANS_OK_INT */ + timeleft = wait_for_completion_interruptible_timeout( + &trans_done, msecs_to_jiffies(timeout)); + if (timeleft <= 0) { + dev_dbg(&(pcr->pci->dev), "Timeout (%s %d)\n", + __func__, __LINE__); + err = -ETIMEDOUT; + goto finish_send_cmd; + } + + spin_lock_irqsave(&pcr->lock, flags); + if (pcr->trans_result == TRANS_RESULT_FAIL) + err = -EINVAL; + else if (pcr->trans_result == TRANS_RESULT_OK) + err = 0; + else if (pcr->trans_result == TRANS_NO_DEVICE) + err = -ENODEV; + spin_unlock_irqrestore(&pcr->lock, flags); + +finish_send_cmd: + spin_lock_irqsave(&pcr->lock, flags); + pcr->done = NULL; + spin_unlock_irqrestore(&pcr->lock, flags); + + if ((err < 0) && (err != -ENODEV)) + rtsx_pci_stop_cmd(pcr); + + if (pcr->finish_me) + complete(pcr->finish_me); + + return err; +} +EXPORT_SYMBOL_GPL(rtsx_pci_send_cmd); + +static void rtsx_pci_add_sg_tbl(struct rtsx_pcr *pcr, + dma_addr_t addr, unsigned int len, int end) +{ + u64 *ptr = (u64 *)(pcr->host_sg_tbl_ptr) + pcr->sgi; + u64 val; + u8 option = SG_VALID | SG_TRANS_DATA; + + dev_dbg(&(pcr->pci->dev), "DMA addr: 0x%x, Len: 0x%x\n", + (unsigned int)addr, len); + + if (end) + option |= SG_END; + val = ((u64)addr << 32) | ((u64)len << 12) | option; + + put_unaligned_le64(val, ptr); + ptr++; + pcr->sgi++; +} + +int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, + int num_sg, bool read, int timeout) +{ + struct completion trans_done; + u8 dir; + int err = 0, i, count; + long timeleft; + unsigned long flags; + struct scatterlist *sg; + enum dma_data_direction dma_dir; + u32 val; + dma_addr_t addr; + unsigned int len; + + dev_dbg(&(pcr->pci->dev), "--> %s: num_sg = %d\n", __func__, num_sg); + + /* don't transfer data during abort processing */ + if (pcr->remove_pci) + return -EINVAL; + + if ((sglist == NULL) || (num_sg <= 0)) + return -EINVAL; + + if (read) { + dir = DEVICE_TO_HOST; + dma_dir = DMA_FROM_DEVICE; + } else { + dir = HOST_TO_DEVICE; + dma_dir = DMA_TO_DEVICE; + } + + count = dma_map_sg(&(pcr->pci->dev), sglist, num_sg, dma_dir); + if (count < 1) { + dev_err(&(pcr->pci->dev), "scatterlist map failed\n"); + return -EINVAL; + } + dev_dbg(&(pcr->pci->dev), "DMA mapping count: %d\n", count); + + val = ((u32)(dir & 0x01) << 29) | TRIG_DMA | ADMA_MODE; + pcr->sgi = 0; + for_each_sg(sglist, sg, count, i) { + addr = sg_dma_address(sg); + len = sg_dma_len(sg); + rtsx_pci_add_sg_tbl(pcr, addr, len, i == count - 1); + } + + spin_lock_irqsave(&pcr->lock, flags); + + pcr->done = &trans_done; + pcr->trans_result = TRANS_NOT_READY; + init_completion(&trans_done); + rtsx_pci_writel(pcr, RTSX_HDBAR, pcr->host_sg_tbl_addr); + rtsx_pci_writel(pcr, RTSX_HDBCTLR, val); + + spin_unlock_irqrestore(&pcr->lock, flags); + + timeleft = wait_for_completion_interruptible_timeout( + &trans_done, msecs_to_jiffies(timeout)); + if (timeleft <= 0) { + dev_dbg(&(pcr->pci->dev), "Timeout (%s %d)\n", + __func__, __LINE__); + err = -ETIMEDOUT; + goto out; + } + + spin_lock_irqsave(&pcr->lock, flags); + + if (pcr->trans_result == TRANS_RESULT_FAIL) + err = -EINVAL; + else if (pcr->trans_result == TRANS_NO_DEVICE) + err = -ENODEV; + + spin_unlock_irqrestore(&pcr->lock, flags); + +out: + spin_lock_irqsave(&pcr->lock, flags); + pcr->done = NULL; + spin_unlock_irqrestore(&pcr->lock, flags); + + dma_unmap_sg(&(pcr->pci->dev), sglist, num_sg, dma_dir); + + if ((err < 0) && (err != -ENODEV)) + rtsx_pci_stop_cmd(pcr); + + if (pcr->finish_me) + complete(pcr->finish_me); + + return err; +} +EXPORT_SYMBOL_GPL(rtsx_pci_transfer_data); + +int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len) +{ + int err; + int i, j; + u16 reg; + u8 *ptr; + + if (buf_len > 512) + buf_len = 512; + + ptr = buf; + reg = PPBUF_BASE2; + for (i = 0; i < buf_len / 256; i++) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < 256; j++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, reg++, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + + memcpy(ptr, rtsx_pci_get_cmd_data(pcr), 256); + ptr += 256; + } + + if (buf_len % 256) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < buf_len % 256; j++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, reg++, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + memcpy(ptr, rtsx_pci_get_cmd_data(pcr), buf_len % 256); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_read_ppbuf); + +int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len) +{ + int err; + int i, j; + u16 reg; + u8 *ptr; + + if (buf_len > 512) + buf_len = 512; + + ptr = buf; + reg = PPBUF_BASE2; + for (i = 0; i < buf_len / 256; i++) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < 256; j++) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + reg++, 0xFF, *ptr); + ptr++; + } + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + if (buf_len % 256) { + rtsx_pci_init_cmd(pcr); + + for (j = 0; j < buf_len % 256; j++) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + reg++, 0xFF, *ptr); + ptr++; + } + + err = rtsx_pci_send_cmd(pcr, 250); + if (err < 0) + return err; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_write_ppbuf); + +static int rtsx_pci_set_pull_ctl(struct rtsx_pcr *pcr, const u32 *tbl) +{ + int err; + + rtsx_pci_init_cmd(pcr); + + while (*tbl & 0xFFFF0000) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + (u16)(*tbl >> 16), 0xFF, (u8)(*tbl)); + tbl++; + } + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card) +{ + const u32 *tbl; + + if (card == RTSX_SD_CARD) + tbl = pcr->sd_pull_ctl_enable_tbl; + else if (card == RTSX_MS_CARD) + tbl = pcr->ms_pull_ctl_enable_tbl; + else + return -EINVAL; + + return rtsx_pci_set_pull_ctl(pcr, tbl); +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_pull_ctl_enable); + +int rtsx_pci_card_pull_ctl_disable(struct rtsx_pcr *pcr, int card) +{ + const u32 *tbl; + + if (card == RTSX_SD_CARD) + tbl = pcr->sd_pull_ctl_disable_tbl; + else if (card == RTSX_MS_CARD) + tbl = pcr->ms_pull_ctl_disable_tbl; + else + return -EINVAL; + + + return rtsx_pci_set_pull_ctl(pcr, tbl); +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_pull_ctl_disable); + +static void rtsx_pci_enable_bus_int(struct rtsx_pcr *pcr) +{ + pcr->bier = TRANS_OK_INT_EN | TRANS_FAIL_INT_EN | SD_INT_EN; + + if (pcr->num_slots > 1) + pcr->bier |= MS_INT_EN; + + /* Enable Bus Interrupt */ + rtsx_pci_writel(pcr, RTSX_BIER, pcr->bier); + + dev_dbg(&(pcr->pci->dev), "RTSX_BIER: 0x%08x\n", pcr->bier); +} + +static inline u8 double_ssc_depth(u8 depth) +{ + return ((depth > 1) ? (depth - 1) : depth); +} + +static u8 revise_ssc_depth(u8 ssc_depth, u8 div) +{ + if (div > CLK_DIV_1) { + if (ssc_depth > (div - 1)) + ssc_depth -= (div - 1); + else + ssc_depth = SSC_DEPTH_4M; + } + + return ssc_depth; +} + +int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, + u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk) +{ + int err, clk; + u8 N, min_N, max_N, clk_divider; + u8 mcu_cnt, div, max_div; + u8 depth[] = { + [RTSX_SSC_DEPTH_4M] = SSC_DEPTH_4M, + [RTSX_SSC_DEPTH_2M] = SSC_DEPTH_2M, + [RTSX_SSC_DEPTH_1M] = SSC_DEPTH_1M, + [RTSX_SSC_DEPTH_500K] = SSC_DEPTH_500K, + [RTSX_SSC_DEPTH_250K] = SSC_DEPTH_250K, + }; + + if (initial_mode) { + /* We use 250k(around) here, in initial stage */ + clk_divider = SD_CLK_DIVIDE_128; + card_clock = 30000000; + } else { + clk_divider = SD_CLK_DIVIDE_0; + } + err = rtsx_pci_write_register(pcr, SD_CFG1, + SD_CLK_DIVIDE_MASK, clk_divider); + if (err < 0) + return err; + + card_clock /= 1000000; + dev_dbg(&(pcr->pci->dev), "Switch card clock to %dMHz\n", card_clock); + + min_N = 80; + max_N = 208; + max_div = CLK_DIV_8; + + clk = card_clock; + if (!initial_mode && double_clk) + clk = card_clock * 2; + dev_dbg(&(pcr->pci->dev), + "Internal SSC clock: %dMHz (cur_clock = %d)\n", + clk, pcr->cur_clock); + + if (clk == pcr->cur_clock) + return 0; + + if (pcr->ops->conv_clk_and_div_n) + N = (u8)pcr->ops->conv_clk_and_div_n(clk, CLK_TO_DIV_N); + else + N = (u8)(clk - 2); + if ((clk <= 2) || (N > max_N)) + return -EINVAL; + + mcu_cnt = (u8)(125/clk + 3); + if (mcu_cnt > 15) + mcu_cnt = 15; + + /* Make sure that the SSC clock div_n is equal or greater than min_N */ + div = CLK_DIV_1; + while ((N < min_N) && (div < max_div)) { + if (pcr->ops->conv_clk_and_div_n) { + int dbl_clk = pcr->ops->conv_clk_and_div_n(N, + DIV_N_TO_CLK) * 2; + N = (u8)pcr->ops->conv_clk_and_div_n(dbl_clk, + CLK_TO_DIV_N); + } else { + N = (N + 2) * 2 - 2; + } + div++; + } + dev_dbg(&(pcr->pci->dev), "N = %d, div = %d\n", N, div); + + ssc_depth = depth[ssc_depth]; + if (double_clk) + ssc_depth = double_ssc_depth(ssc_depth); + + ssc_depth = revise_ssc_depth(ssc_depth, div); + dev_dbg(&(pcr->pci->dev), "ssc_depth = %d\n", ssc_depth); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_CTL, + CLK_LOW_FREQ, CLK_LOW_FREQ); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_DIV, + 0xFF, (div << 4) | mcu_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, SSC_RSTB, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL2, + SSC_DEPTH_MASK, ssc_depth); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_DIV_N_0, 0xFF, N); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, SSC_RSTB, SSC_RSTB); + if (vpclk) { + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD_VPCLK0_CTL, + PHASE_NOT_RESET, PHASE_NOT_RESET); + } + + err = rtsx_pci_send_cmd(pcr, 2000); + if (err < 0) + return err; + + /* Wait SSC clock stable */ + udelay(10); + err = rtsx_pci_write_register(pcr, CLK_CTL, CLK_LOW_FREQ, 0); + if (err < 0) + return err; + + pcr->cur_clock = clk; + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_switch_clock); + +int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card) +{ + if (pcr->ops->card_power_on) + return pcr->ops->card_power_on(pcr, card); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_power_on); + +int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card) +{ + if (pcr->ops->card_power_off) + return pcr->ops->card_power_off(pcr, card); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_power_off); + +int rtsx_pci_card_exclusive_check(struct rtsx_pcr *pcr, int card) +{ + unsigned int cd_mask[] = { + [RTSX_SD_CARD] = SD_EXIST, + [RTSX_MS_CARD] = MS_EXIST + }; + + if (!pcr->ms_pmos) { + /* When using single PMOS, accessing card is not permitted + * if the existing card is not the designated one. + */ + if (pcr->card_exist & (~cd_mask[card])) + return -EIO; + } + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_exclusive_check); + +int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + if (pcr->ops->switch_output_voltage) + return pcr->ops->switch_output_voltage(pcr, voltage); + + return 0; +} +EXPORT_SYMBOL_GPL(rtsx_pci_switch_output_voltage); + +unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr) +{ + unsigned int val; + + val = rtsx_pci_readl(pcr, RTSX_BIPR); + if (pcr->ops->cd_deglitch) + val = pcr->ops->cd_deglitch(pcr); + + return val; +} +EXPORT_SYMBOL_GPL(rtsx_pci_card_exist); + +void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr) +{ + struct completion finish; + + pcr->finish_me = &finish; + init_completion(&finish); + + if (pcr->done) + complete(pcr->done); + + if (!pcr->remove_pci) + rtsx_pci_stop_cmd(pcr); + + wait_for_completion_interruptible_timeout(&finish, + msecs_to_jiffies(2)); + pcr->finish_me = NULL; +} +EXPORT_SYMBOL_GPL(rtsx_pci_complete_unfinished_transfer); + +static void rtsx_pci_card_detect(struct work_struct *work) +{ + struct delayed_work *dwork; + struct rtsx_pcr *pcr; + unsigned long flags; + unsigned int card_detect = 0, card_inserted, card_removed; + u32 irq_status; + + dwork = to_delayed_work(work); + pcr = container_of(dwork, struct rtsx_pcr, carddet_work); + + dev_dbg(&(pcr->pci->dev), "--> %s\n", __func__); + + mutex_lock(&pcr->pcr_mutex); + spin_lock_irqsave(&pcr->lock, flags); + + irq_status = rtsx_pci_readl(pcr, RTSX_BIPR); + dev_dbg(&(pcr->pci->dev), "irq_status: 0x%08x\n", irq_status); + + irq_status &= CARD_EXIST; + card_inserted = pcr->card_inserted & irq_status; + card_removed = pcr->card_removed; + pcr->card_inserted = 0; + pcr->card_removed = 0; + + spin_unlock_irqrestore(&pcr->lock, flags); + + if (card_inserted || card_removed) { + dev_dbg(&(pcr->pci->dev), + "card_inserted: 0x%x, card_removed: 0x%x\n", + card_inserted, card_removed); + + if (pcr->ops->cd_deglitch) + card_inserted = pcr->ops->cd_deglitch(pcr); + + card_detect = card_inserted | card_removed; + + pcr->card_exist |= card_inserted; + pcr->card_exist &= ~card_removed; + } + + mutex_unlock(&pcr->pcr_mutex); + + if ((card_detect & SD_EXIST) && pcr->slots[RTSX_SD_CARD].card_event) + pcr->slots[RTSX_SD_CARD].card_event( + pcr->slots[RTSX_SD_CARD].p_dev); + if ((card_detect & MS_EXIST) && pcr->slots[RTSX_MS_CARD].card_event) + pcr->slots[RTSX_MS_CARD].card_event( + pcr->slots[RTSX_MS_CARD].p_dev); +} + +static irqreturn_t rtsx_pci_isr(int irq, void *dev_id) +{ + struct rtsx_pcr *pcr = dev_id; + u32 int_reg; + + if (!pcr) + return IRQ_NONE; + + spin_lock(&pcr->lock); + + int_reg = rtsx_pci_readl(pcr, RTSX_BIPR); + /* Clear interrupt flag */ + rtsx_pci_writel(pcr, RTSX_BIPR, int_reg); + if ((int_reg & pcr->bier) == 0) { + spin_unlock(&pcr->lock); + return IRQ_NONE; + } + if (int_reg == 0xFFFFFFFF) { + spin_unlock(&pcr->lock); + return IRQ_HANDLED; + } + + int_reg &= (pcr->bier | 0x7FFFFF); + + if (int_reg & SD_INT) { + if (int_reg & SD_EXIST) { + pcr->card_inserted |= SD_EXIST; + } else { + pcr->card_removed |= SD_EXIST; + pcr->card_inserted &= ~SD_EXIST; + } + } + + if (int_reg & MS_INT) { + if (int_reg & MS_EXIST) { + pcr->card_inserted |= MS_EXIST; + } else { + pcr->card_removed |= MS_EXIST; + pcr->card_inserted &= ~MS_EXIST; + } + } + + if (int_reg & (NEED_COMPLETE_INT | DELINK_INT)) { + if (int_reg & (TRANS_FAIL_INT | DELINK_INT)) { + pcr->trans_result = TRANS_RESULT_FAIL; + if (pcr->done) + complete(pcr->done); + } else if (int_reg & TRANS_OK_INT) { + pcr->trans_result = TRANS_RESULT_OK; + if (pcr->done) + complete(pcr->done); + } + } + + if (pcr->card_inserted || pcr->card_removed) + schedule_delayed_work(&pcr->carddet_work, + msecs_to_jiffies(200)); + + spin_unlock(&pcr->lock); + return IRQ_HANDLED; +} + +static int rtsx_pci_acquire_irq(struct rtsx_pcr *pcr) +{ + dev_info(&(pcr->pci->dev), "%s: pcr->msi_en = %d, pci->irq = %d\n", + __func__, pcr->msi_en, pcr->pci->irq); + + if (request_irq(pcr->pci->irq, rtsx_pci_isr, + pcr->msi_en ? 0 : IRQF_SHARED, + DRV_NAME_RTSX_PCI, pcr)) { + dev_err(&(pcr->pci->dev), + "rtsx_sdmmc: unable to grab IRQ %d, disabling device\n", + pcr->pci->irq); + return -1; + } + + pcr->irq = pcr->pci->irq; + pci_intx(pcr->pci, !pcr->msi_en); + + return 0; +} + +static void rtsx_pci_idle_work(struct work_struct *work) +{ + struct delayed_work *dwork = to_delayed_work(work); + struct rtsx_pcr *pcr = container_of(dwork, struct rtsx_pcr, idle_work); + + dev_dbg(&(pcr->pci->dev), "--> %s\n", __func__); + + mutex_lock(&pcr->pcr_mutex); + + pcr->state = PDEV_STAT_IDLE; + + if (pcr->ops->disable_auto_blink) + pcr->ops->disable_auto_blink(pcr); + if (pcr->ops->turn_off_led) + pcr->ops->turn_off_led(pcr); + + mutex_unlock(&pcr->pcr_mutex); +} + +static int rtsx_pci_init_hw(struct rtsx_pcr *pcr) +{ + int err; + + rtsx_pci_writel(pcr, RTSX_HCBAR, pcr->host_cmds_addr); + + rtsx_pci_enable_bus_int(pcr); + + /* Power on SSC */ + err = rtsx_pci_write_register(pcr, FPDCTL, SSC_POWER_DOWN, 0); + if (err < 0) + return err; + + /* Wait SSC power stable */ + udelay(200); + + if (pcr->ops->optimize_phy) { + err = pcr->ops->optimize_phy(pcr); + if (err < 0) + return err; + } + + rtsx_pci_init_cmd(pcr); + + /* Set mcu_cnt to 7 to ensure data can be sampled properly */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CLK_DIV, 0x07, 0x07); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, HOST_SLEEP_STATE, 0x03, 0x00); + /* Disable card clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, 0x1E, 0); + /* Reset ASPM state to default value */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, ASPM_FORCE_CTL, 0x3F, 0); + /* Reset delink mode */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CHANGE_LINK_STATE, 0x0A, 0); + /* Card driving select */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DRIVE_SEL, + 0x07, DRIVER_TYPE_D); + /* Enable SSC Clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL1, + 0xFF, SSC_8X_EN | SSC_SEL_4M); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SSC_CTL2, 0xFF, 0x12); + /* Disable cd_pwr_save */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CHANGE_LINK_STATE, 0x16, 0x10); + /* Clear Link Ready Interrupt */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + LINK_RDY_INT, LINK_RDY_INT); + /* Enlarge the estimation window of PERST# glitch + * to reduce the chance of invalid card interrupt + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PERST_GLITCH_WIDTH, 0xFF, 0x80); + /* Update RC oscillator to 400k + * bit[0] F_HIGH: for RC oscillator, Rst_value is 1'b1 + * 1: 2M 0: 400k + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, RCCTL, 0x01, 0x00); + /* Set interrupt write clear + * bit 1: U_elbi_if_rd_clr_en + * 1: Enable ELBI interrupt[31:22] & [7:0] flag read clear + * 0: ELBI interrupt flag[31:22] & [7:0] only can be write clear + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, NFTS_TX_CTRL, 0x02, 0); + /* Force CLKREQ# PIN to drive 0 to request clock */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PETXCFG, 0x08, 0x08); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* Enable clk_request_n to enable clock power management */ + rtsx_pci_write_config_byte(pcr, 0x81, 1); + /* Enter L1 when host tx idle */ + rtsx_pci_write_config_byte(pcr, 0x70F, 0x5B); + + if (pcr->ops->extra_init_hw) { + err = pcr->ops->extra_init_hw(pcr); + if (err < 0) + return err; + } + + /* No CD interrupt if probing driver with card inserted. + * So we need to initialize pcr->card_exist here. + */ + if (pcr->ops->cd_deglitch) + pcr->card_exist = pcr->ops->cd_deglitch(pcr); + else + pcr->card_exist = rtsx_pci_readl(pcr, RTSX_BIPR) & CARD_EXIST; + + return 0; +} + +static int rtsx_pci_init_chip(struct rtsx_pcr *pcr) +{ + int err; + + spin_lock_init(&pcr->lock); + mutex_init(&pcr->pcr_mutex); + + switch (PCI_PID(pcr)) { + default: + case 0x5209: + rts5209_init_params(pcr); + break; + + case 0x5229: + rts5229_init_params(pcr); + break; + + case 0x5289: + rtl8411_init_params(pcr); + break; + + case 0x5227: + rts5227_init_params(pcr); + break; + } + + dev_dbg(&(pcr->pci->dev), "PID: 0x%04x, IC version: 0x%02x\n", + PCI_PID(pcr), pcr->ic_version); + + pcr->slots = kcalloc(pcr->num_slots, sizeof(struct rtsx_slot), + GFP_KERNEL); + if (!pcr->slots) + return -ENOMEM; + + pcr->state = PDEV_STAT_IDLE; + err = rtsx_pci_init_hw(pcr); + if (err < 0) { + kfree(pcr->slots); + return err; + } + + return 0; +} + +static int __devinit rtsx_pci_probe(struct pci_dev *pcidev, + const struct pci_device_id *id) +{ + struct rtsx_pcr *pcr; + struct pcr_handle *handle; + u32 base, len; + int ret, i; + + dev_dbg(&(pcidev->dev), + ": Realtek PCI-E Card Reader found at %s [%04x:%04x] (rev %x)\n", + pci_name(pcidev), (int)pcidev->vendor, (int)pcidev->device, + (int)pcidev->revision); + + ret = pci_enable_device(pcidev); + if (ret) + return ret; + + ret = pci_request_regions(pcidev, DRV_NAME_RTSX_PCI); + if (ret) + goto disable; + + pcr = kzalloc(sizeof(*pcr), GFP_KERNEL); + if (!pcr) { + ret = -ENOMEM; + goto release_pci; + } + + handle = kzalloc(sizeof(*handle), GFP_KERNEL); + if (!handle) { + ret = -ENOMEM; + goto free_pcr; + } + handle->pcr = pcr; + + if (!idr_pre_get(&rtsx_pci_idr, GFP_KERNEL)) { + ret = -ENOMEM; + goto free_handle; + } + + spin_lock(&rtsx_pci_lock); + ret = idr_get_new(&rtsx_pci_idr, pcr, &pcr->id); + spin_unlock(&rtsx_pci_lock); + if (ret) + goto free_handle; + + pcr->pci = pcidev; + dev_set_drvdata(&pcidev->dev, handle); + + len = pci_resource_len(pcidev, 0); + base = pci_resource_start(pcidev, 0); + pcr->remap_addr = ioremap_nocache(base, len); + if (!pcr->remap_addr) { + ret = -ENOMEM; + goto free_host; + } + + pcr->rtsx_resv_buf = dma_alloc_coherent(&(pcidev->dev), + RTSX_RESV_BUF_LEN, &(pcr->rtsx_resv_buf_addr), + GFP_KERNEL); + if (pcr->rtsx_resv_buf == NULL) { + ret = -ENXIO; + goto unmap; + } + pcr->host_cmds_ptr = pcr->rtsx_resv_buf; + pcr->host_cmds_addr = pcr->rtsx_resv_buf_addr; + pcr->host_sg_tbl_ptr = pcr->rtsx_resv_buf + HOST_CMDS_BUF_LEN; + pcr->host_sg_tbl_addr = pcr->rtsx_resv_buf_addr + HOST_CMDS_BUF_LEN; + + pcr->card_inserted = 0; + pcr->card_removed = 0; + INIT_DELAYED_WORK(&pcr->carddet_work, rtsx_pci_card_detect); + INIT_DELAYED_WORK(&pcr->idle_work, rtsx_pci_idle_work); + + pcr->msi_en = msi_en; + if (pcr->msi_en) { + ret = pci_enable_msi(pcidev); + if (ret < 0) + pcr->msi_en = false; + } + + ret = rtsx_pci_acquire_irq(pcr); + if (ret < 0) + goto free_dma; + + pci_set_master(pcidev); + synchronize_irq(pcr->irq); + + ret = rtsx_pci_init_chip(pcr); + if (ret < 0) + goto disable_irq; + + for (i = 0; i < ARRAY_SIZE(rtsx_pcr_cells); i++) { + rtsx_pcr_cells[i].platform_data = handle; + rtsx_pcr_cells[i].pdata_size = sizeof(*handle); + } + ret = mfd_add_devices(&pcidev->dev, pcr->id, rtsx_pcr_cells, + ARRAY_SIZE(rtsx_pcr_cells), NULL, 0); + if (ret < 0) + goto disable_irq; + + schedule_delayed_work(&pcr->idle_work, msecs_to_jiffies(200)); + + return 0; + +disable_irq: + free_irq(pcr->irq, (void *)pcr); +free_dma: + dma_free_coherent(&(pcr->pci->dev), RTSX_RESV_BUF_LEN, + pcr->rtsx_resv_buf, pcr->rtsx_resv_buf_addr); +unmap: + iounmap(pcr->remap_addr); +free_host: + dev_set_drvdata(&pcidev->dev, NULL); +free_handle: + kfree(handle); +free_pcr: + kfree(pcr); +release_pci: + pci_release_regions(pcidev); +disable: + pci_disable_device(pcidev); + + return ret; +} + +static void __devexit rtsx_pci_remove(struct pci_dev *pcidev) +{ + struct pcr_handle *handle = pci_get_drvdata(pcidev); + struct rtsx_pcr *pcr = handle->pcr; + + pcr->remove_pci = true; + + cancel_delayed_work(&pcr->carddet_work); + cancel_delayed_work(&pcr->idle_work); + + mfd_remove_devices(&pcidev->dev); + + dma_free_coherent(&(pcr->pci->dev), RTSX_RESV_BUF_LEN, + pcr->rtsx_resv_buf, pcr->rtsx_resv_buf_addr); + free_irq(pcr->irq, (void *)pcr); + if (pcr->msi_en) + pci_disable_msi(pcr->pci); + iounmap(pcr->remap_addr); + + dev_set_drvdata(&pcidev->dev, NULL); + pci_release_regions(pcidev); + pci_disable_device(pcidev); + + spin_lock(&rtsx_pci_lock); + idr_remove(&rtsx_pci_idr, pcr->id); + spin_unlock(&rtsx_pci_lock); + + kfree(pcr->slots); + kfree(pcr); + kfree(handle); + + dev_dbg(&(pcidev->dev), + ": Realtek PCI-E Card Reader at %s [%04x:%04x] has been removed\n", + pci_name(pcidev), (int)pcidev->vendor, (int)pcidev->device); +} + +#ifdef CONFIG_PM + +static int rtsx_pci_suspend(struct pci_dev *pcidev, pm_message_t state) +{ + struct pcr_handle *handle; + struct rtsx_pcr *pcr; + int ret = 0; + + dev_dbg(&(pcidev->dev), "--> %s\n", __func__); + + handle = pci_get_drvdata(pcidev); + pcr = handle->pcr; + + cancel_delayed_work(&pcr->carddet_work); + cancel_delayed_work(&pcr->idle_work); + + mutex_lock(&pcr->pcr_mutex); + + if (pcr->ops->turn_off_led) + pcr->ops->turn_off_led(pcr); + + rtsx_pci_writel(pcr, RTSX_BIER, 0); + pcr->bier = 0; + + rtsx_pci_write_register(pcr, PETXCFG, 0x08, 0x08); + rtsx_pci_write_register(pcr, HOST_SLEEP_STATE, 0x03, 0x02); + + pci_save_state(pcidev); + pci_enable_wake(pcidev, pci_choose_state(pcidev, state), 0); + pci_disable_device(pcidev); + pci_set_power_state(pcidev, pci_choose_state(pcidev, state)); + + mutex_unlock(&pcr->pcr_mutex); + return ret; +} + +static int rtsx_pci_resume(struct pci_dev *pcidev) +{ + struct pcr_handle *handle; + struct rtsx_pcr *pcr; + int ret = 0; + + dev_dbg(&(pcidev->dev), "--> %s\n", __func__); + + handle = pci_get_drvdata(pcidev); + pcr = handle->pcr; + + mutex_lock(&pcr->pcr_mutex); + + pci_set_power_state(pcidev, PCI_D0); + pci_restore_state(pcidev); + ret = pci_enable_device(pcidev); + if (ret) + goto out; + pci_set_master(pcidev); + + ret = rtsx_pci_write_register(pcr, HOST_SLEEP_STATE, 0x03, 0x00); + if (ret) + goto out; + + ret = rtsx_pci_init_hw(pcr); + if (ret) + goto out; + + schedule_delayed_work(&pcr->idle_work, msecs_to_jiffies(200)); + +out: + mutex_unlock(&pcr->pcr_mutex); + return ret; +} + +#else /* CONFIG_PM */ + +#define rtsx_pci_suspend NULL +#define rtsx_pci_resume NULL + +#endif /* CONFIG_PM */ + +static struct pci_driver rtsx_pci_driver = { + .name = DRV_NAME_RTSX_PCI, + .id_table = rtsx_pci_ids, + .probe = rtsx_pci_probe, + .remove = __devexit_p(rtsx_pci_remove), + .suspend = rtsx_pci_suspend, + .resume = rtsx_pci_resume, +}; +module_pci_driver(rtsx_pci_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E Card Reader Driver"); --- linux-3.5.0.orig/drivers/mfd/mfd-core.c +++ linux-3.5.0/drivers/mfd/mfd-core.c @@ -19,6 +19,10 @@ #include #include +static struct device_type mfd_dev_type = { + .name = "mfd_device", +}; + int mfd_cell_enable(struct platform_device *pdev) { const struct mfd_cell *cell = mfd_get_cell(pdev); @@ -88,6 +92,7 @@ goto fail_device; pdev->dev.parent = parent; + pdev->dev.type = &mfd_dev_type; if (cell->pdata_size) { ret = platform_device_add_data(pdev, @@ -183,10 +188,16 @@ static int mfd_remove_devices_fn(struct device *dev, void *c) { - struct platform_device *pdev = to_platform_device(dev); - const struct mfd_cell *cell = mfd_get_cell(pdev); + struct platform_device *pdev; + const struct mfd_cell *cell; atomic_t **usage_count = c; + if (dev->type != &mfd_dev_type) + return 0; + + pdev = to_platform_device(dev); + cell = mfd_get_cell(pdev); + /* find the base address of usage_count pointers (for freeing) */ if (!*usage_count || (cell->usage_count < *usage_count)) *usage_count = cell->usage_count; --- linux-3.5.0.orig/drivers/mfd/Makefile +++ linux-3.5.0/drivers/mfd/Makefile @@ -7,6 +7,9 @@ obj-$(CONFIG_MFD_SM501) += sm501.o obj-$(CONFIG_MFD_ASIC3) += asic3.o tmio_core.o +rtsx_pci-objs := rtsx_pcr.o rts5209.o rts5229.o rtl8411.o rts5227.o +obj-$(CONFIG_MFD_RTSX_PCI) += rtsx_pci.o + obj-$(CONFIG_HTC_EGPIO) += htc-egpio.o obj-$(CONFIG_HTC_PASIC3) += htc-pasic3.o obj-$(CONFIG_HTC_I2CPLD) += htc-i2cpld.o --- linux-3.5.0.orig/drivers/mfd/wm8994-core.c +++ linux-3.5.0/drivers/mfd/wm8994-core.c @@ -542,6 +542,7 @@ case 1: case 2: case 3: + case 4: regmap_patch = wm1811_reva_patch; patch_regs = ARRAY_SIZE(wm1811_reva_patch); break; --- linux-3.5.0.orig/drivers/mfd/ezx-pcap.c +++ linux-3.5.0/drivers/mfd/ezx-pcap.c @@ -202,7 +202,7 @@ } local_irq_enable(); ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr); - } while (gpio_get_value(irq_to_gpio(pcap->spi->irq))); + } while (gpio_get_value(pdata->gpio)); } static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc) --- linux-3.5.0.orig/drivers/mfd/wm831x-otp.c +++ linux-3.5.0/drivers/mfd/wm831x-otp.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -66,6 +67,7 @@ int wm831x_otp_init(struct wm831x *wm831x) { + char uuid[WM831X_UNIQUE_ID_LEN]; int ret; ret = device_create_file(wm831x->dev, &dev_attr_unique_id); @@ -73,6 +75,12 @@ dev_err(wm831x->dev, "Unique ID attribute not created: %d\n", ret); + ret = wm831x_unique_id_read(wm831x, uuid); + if (ret == 0) + add_device_randomness(uuid, sizeof(uuid)); + else + dev_err(wm831x->dev, "Failed to read UUID: %d\n", ret); + return ret; } --- linux-3.5.0.orig/drivers/mfd/88pm860x-core.c +++ linux-3.5.0/drivers/mfd/88pm860x-core.c @@ -21,40 +21,73 @@ #define INT_STATUS_NUM 3 +static struct resource io_parent = { + .start = 0, + .end = 0xffffffff, + .flags = IORESOURCE_IO, +}; + static struct resource bk_resources[] __devinitdata = { - {PM8606_BACKLIGHT1, PM8606_BACKLIGHT1, "backlight-0", IORESOURCE_IO,}, - {PM8606_BACKLIGHT2, PM8606_BACKLIGHT2, "backlight-1", IORESOURCE_IO,}, - {PM8606_BACKLIGHT3, PM8606_BACKLIGHT3, "backlight-2", IORESOURCE_IO,}, + {PM8606_BACKLIGHT1, PM8606_BACKLIGHT1, "backlight-0", IORESOURCE_IO, + &io_parent,}, + {PM8606_BACKLIGHT2, PM8606_BACKLIGHT2, "backlight-1", IORESOURCE_IO, + &io_parent,}, + {PM8606_BACKLIGHT3, PM8606_BACKLIGHT3, "backlight-2", IORESOURCE_IO, + &io_parent,}, }; static struct resource led_resources[] __devinitdata = { - {PM8606_LED1_RED, PM8606_LED1_RED, "led0-red", IORESOURCE_IO,}, - {PM8606_LED1_GREEN, PM8606_LED1_GREEN, "led0-green", IORESOURCE_IO,}, - {PM8606_LED1_BLUE, PM8606_LED1_BLUE, "led0-blue", IORESOURCE_IO,}, - {PM8606_LED2_RED, PM8606_LED2_RED, "led1-red", IORESOURCE_IO,}, - {PM8606_LED2_GREEN, PM8606_LED2_GREEN, "led1-green", IORESOURCE_IO,}, - {PM8606_LED2_BLUE, PM8606_LED2_BLUE, "led1-blue", IORESOURCE_IO,}, + {PM8606_LED1_RED, PM8606_LED1_RED, "led0-red", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED1_GREEN, PM8606_LED1_GREEN, "led0-green", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED1_BLUE, PM8606_LED1_BLUE, "led0-blue", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_RED, PM8606_LED2_RED, "led1-red", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_GREEN, PM8606_LED2_GREEN, "led1-green", IORESOURCE_IO, + &io_parent,}, + {PM8606_LED2_BLUE, PM8606_LED2_BLUE, "led1-blue", IORESOURCE_IO, + &io_parent,}, }; static struct resource regulator_resources[] __devinitdata = { - {PM8607_ID_BUCK1, PM8607_ID_BUCK1, "buck-1", IORESOURCE_IO,}, - {PM8607_ID_BUCK2, PM8607_ID_BUCK2, "buck-2", IORESOURCE_IO,}, - {PM8607_ID_BUCK3, PM8607_ID_BUCK3, "buck-3", IORESOURCE_IO,}, - {PM8607_ID_LDO1, PM8607_ID_LDO1, "ldo-01", IORESOURCE_IO,}, - {PM8607_ID_LDO2, PM8607_ID_LDO2, "ldo-02", IORESOURCE_IO,}, - {PM8607_ID_LDO3, PM8607_ID_LDO3, "ldo-03", IORESOURCE_IO,}, - {PM8607_ID_LDO4, PM8607_ID_LDO4, "ldo-04", IORESOURCE_IO,}, - {PM8607_ID_LDO5, PM8607_ID_LDO5, "ldo-05", IORESOURCE_IO,}, - {PM8607_ID_LDO6, PM8607_ID_LDO6, "ldo-06", IORESOURCE_IO,}, - {PM8607_ID_LDO7, PM8607_ID_LDO7, "ldo-07", IORESOURCE_IO,}, - {PM8607_ID_LDO8, PM8607_ID_LDO8, "ldo-08", IORESOURCE_IO,}, - {PM8607_ID_LDO9, PM8607_ID_LDO9, "ldo-09", IORESOURCE_IO,}, - {PM8607_ID_LDO10, PM8607_ID_LDO10, "ldo-10", IORESOURCE_IO,}, - {PM8607_ID_LDO11, PM8607_ID_LDO11, "ldo-11", IORESOURCE_IO,}, - {PM8607_ID_LDO12, PM8607_ID_LDO12, "ldo-12", IORESOURCE_IO,}, - {PM8607_ID_LDO13, PM8607_ID_LDO13, "ldo-13", IORESOURCE_IO,}, - {PM8607_ID_LDO14, PM8607_ID_LDO14, "ldo-14", IORESOURCE_IO,}, - {PM8607_ID_LDO15, PM8607_ID_LDO15, "ldo-15", IORESOURCE_IO,}, + {PM8607_ID_BUCK1, PM8607_ID_BUCK1, "buck-1", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_BUCK2, PM8607_ID_BUCK2, "buck-2", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_BUCK3, PM8607_ID_BUCK3, "buck-3", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO1, PM8607_ID_LDO1, "ldo-01", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO2, PM8607_ID_LDO2, "ldo-02", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO3, PM8607_ID_LDO3, "ldo-03", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO4, PM8607_ID_LDO4, "ldo-04", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO5, PM8607_ID_LDO5, "ldo-05", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO6, PM8607_ID_LDO6, "ldo-06", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO7, PM8607_ID_LDO7, "ldo-07", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO8, PM8607_ID_LDO8, "ldo-08", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO9, PM8607_ID_LDO9, "ldo-09", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO10, PM8607_ID_LDO10, "ldo-10", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO11, PM8607_ID_LDO11, "ldo-11", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO12, PM8607_ID_LDO12, "ldo-12", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO13, PM8607_ID_LDO13, "ldo-13", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO14, PM8607_ID_LDO14, "ldo-14", IORESOURCE_IO, + &io_parent,}, + {PM8607_ID_LDO15, PM8607_ID_LDO15, "ldo-15", IORESOURCE_IO, + &io_parent,}, }; static struct resource touch_resources[] __devinitdata = { @@ -91,7 +124,7 @@ }; static struct resource rtc_resources[] __devinitdata = { - {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ,}, + {PM8607_IRQ_RTC, PM8607_IRQ_RTC, "rtc", IORESOURCE_IRQ, &io_parent,}, }; static struct mfd_cell bk_devs[] = { --- linux-3.5.0.orig/drivers/mfd/max8925-core.c +++ linux-3.5.0/drivers/mfd/max8925-core.c @@ -18,12 +18,19 @@ #include #include +static struct resource io_parent = { + .start = 0, + .end = 0xffffffff, + .flags = IORESOURCE_IO, +}; + static struct resource backlight_resources[] = { { .name = "max8925-backlight", .start = MAX8925_WLED_MODE_CNTL, .end = MAX8925_WLED_CNTL, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -42,6 +49,7 @@ .start = MAX8925_TSC_IRQ, .end = MAX8925_ADC_RES_END, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -60,6 +68,7 @@ .start = MAX8925_CHG_IRQ1, .end = MAX8925_CHG_IRQ1_MASK, .flags = IORESOURCE_IO, + .parent = &io_parent, }, }; @@ -118,6 +127,7 @@ .start = MAX8925_##_start, \ .end = MAX8925_##_end, \ .flags = IORESOURCE_IO, \ + .parent = &io_parent, \ } static struct resource regulator_resources[] = { --- linux-3.5.0.orig/drivers/mfd/rts5227.c +++ linux-3.5.0/drivers/mfd/rts5227.c @@ -0,0 +1,234 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + * + * Roger Tseng + * No. 2, Innovation Road II, Hsinchu Science Park, Hsinchu 300, Taiwan + */ + +#include +#include +#include + +#include "rtsx_pcr.h" + +static int rts5227_extra_init_hw(struct rtsx_pcr *pcr) +{ + u16 cap; + + rtsx_pci_init_cmd(pcr); + + /* Configure GPIO as output */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, GPIO_CTL, 0x02, 0x02); + /* Switch LDO3318 source from DV33 to card_3v3 */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x00); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LDO_PWR_SEL, 0x03, 0x01); + /* LED shine disabled, set initial shine cycle period */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OLT_LED_CTL, 0x0F, 0x02); + /* Configure LTR */ + /*pcie_capability_read_word(pcr->pci, PCI_EXP_DEVCTL2, &cap);*/ cap=0; /*backport*/ + if (cap & PCI_EXP_LTR_EN) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, LTR_CTL, 0xFF, 0xA3); + /* Configure OBFF */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, OBFF_CFG, 0x03, 0x03); + /* Configure force_clock_req + * Maybe We should define 0xFF03 as some name + */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, 0xFF03, 0x08, 0x08); + /* Correct driving */ + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_CLK_DRIVE_SEL, 0xFF, 0x96); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_CMD_DRIVE_SEL, 0xFF, 0x96); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + SD30_DAT_DRIVE_SEL, 0xFF, 0x96); + + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5227_optimize_phy(struct rtsx_pcr *pcr) +{ + /* Optimize RX sensitivity */ + return rtsx_pci_write_phy_register(pcr, 0x00, 0xBA42); +} + +static int rts5227_turn_on_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x02); +} + +static int rts5227_turn_off_led(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, GPIO_CTL, 0x02, 0x00); +} + +static int rts5227_enable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x08); +} + +static int rts5227_disable_auto_blink(struct rtsx_pcr *pcr) +{ + return rtsx_pci_write_register(pcr, OLT_LED_CTL, 0x08, 0x00); +} + +static int rts5227_card_power_on(struct rtsx_pcr *pcr, int card) +{ + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_PARTIAL_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x02); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + /* To avoid too large in-rush current */ + udelay(150); + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK, SD_POWER_ON); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0x06); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + return 0; +} + +static int rts5227_card_power_off(struct rtsx_pcr *pcr, int card) +{ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_PWR_CTL, + SD_POWER_MASK | PMOS_STRG_MASK, + SD_POWER_OFF | PMOS_STRG_400mA); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, PWR_GATE_CTRL, + LDO3318_PWR_MASK, 0X00); + return rtsx_pci_send_cmd(pcr, 100); +} + +static int rts5227_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) +{ + int err; + u8 drive_sel; + + if (voltage == OUTPUT_3V3) { + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); + if (err < 0) + return err; + drive_sel = 0x96; + } else if (voltage == OUTPUT_1V8) { + err = rtsx_pci_write_phy_register(pcr, 0x11, 0x3C02); + if (err < 0) + return err; + err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C80 | 0x24); + if (err < 0) + return err; + drive_sel = 0xB3; + } else { + return -EINVAL; + } + + /* set pad drive */ + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CLK_DRIVE_SEL, + 0xFF, drive_sel); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_CMD_DRIVE_SEL, + 0xFF, drive_sel); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, SD30_DAT_DRIVE_SEL, + 0xFF, drive_sel); + return rtsx_pci_send_cmd(pcr, 100); +} + +static const struct pcr_ops rts5227_pcr_ops = { + .extra_init_hw = rts5227_extra_init_hw, + .optimize_phy = rts5227_optimize_phy, + .turn_on_led = rts5227_turn_on_led, + .turn_off_led = rts5227_turn_off_led, + .enable_auto_blink = rts5227_enable_auto_blink, + .disable_auto_blink = rts5227_disable_auto_blink, + .card_power_on = rts5227_card_power_on, + .card_power_off = rts5227_card_power_off, + .switch_output_voltage = rts5227_switch_output_voltage, + .cd_deglitch = NULL, + .conv_clk_and_div_n = NULL, +}; + +/* SD Pull Control Enable: + * SD_DAT[3:0] ==> pull up + * SD_CD ==> pull up + * SD_WP ==> pull up + * SD_CMD ==> pull up + * SD_CLK ==> pull down + */ +static const u32 rts5227_sd_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0xAA), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xE9), + 0, +}; + +/* SD Pull Control Disable: + * SD_DAT[3:0] ==> pull down + * SD_CD ==> pull up + * SD_WP ==> pull down + * SD_CMD ==> pull down + * SD_CLK ==> pull down + */ +static const u32 rts5227_sd_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL2, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL3, 0xD5), + 0, +}; + +/* MS Pull Control Enable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5227_ms_pull_ctl_enable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +/* MS Pull Control Disable: + * MS CD ==> pull up + * others ==> pull down + */ +static const u32 rts5227_ms_pull_ctl_disable_tbl[] = { + RTSX_REG_PAIR(CARD_PULL_CTL5, 0x55), + RTSX_REG_PAIR(CARD_PULL_CTL6, 0x15), + 0, +}; + +void rts5227_init_params(struct rtsx_pcr *pcr) +{ + pcr->extra_caps = EXTRA_CAPS_SD_SDR50 | EXTRA_CAPS_SD_SDR104; + pcr->num_slots = 2; + pcr->ops = &rts5227_pcr_ops; + + pcr->sd_pull_ctl_enable_tbl = rts5227_sd_pull_ctl_enable_tbl; + pcr->sd_pull_ctl_disable_tbl = rts5227_sd_pull_ctl_disable_tbl; + pcr->ms_pull_ctl_enable_tbl = rts5227_ms_pull_ctl_enable_tbl; + pcr->ms_pull_ctl_disable_tbl = rts5227_ms_pull_ctl_disable_tbl; +} --- linux-3.5.0.orig/drivers/dma/sirf-dma.c +++ linux-3.5.0/drivers/dma/sirf-dma.c @@ -109,7 +109,7 @@ sdesc = list_first_entry(&schan->queued, struct sirfsoc_dma_desc, node); /* Move the first queued descriptor to active list */ - list_move_tail(&schan->queued, &schan->active); + list_move_tail(&sdesc->node, &schan->active); /* Start the DMA transfer */ writel_relaxed(sdesc->width, sdma->base + SIRFSOC_DMA_WIDTH_0 + @@ -428,7 +428,7 @@ unsigned long iflags; int ret; - if ((xt->dir != DMA_MEM_TO_DEV) || (xt->dir != DMA_DEV_TO_MEM)) { + if ((xt->dir != DMA_MEM_TO_DEV) && (xt->dir != DMA_DEV_TO_MEM)) { ret = -EINVAL; goto err_dir; } --- linux-3.5.0.orig/drivers/dma/dmaengine.c +++ linux-3.5.0/drivers/dma/dmaengine.c @@ -578,7 +578,7 @@ list_del_rcu(&device->global_node); break; } else if (err) - pr_err("%s: failed to get %s: (%d)\n", + pr_debug("%s: failed to get %s: (%d)\n", __func__, dma_chan_name(chan), err); } } --- linux-3.5.0.orig/drivers/dma/imx-dma.c +++ linux-3.5.0/drivers/dma/imx-dma.c @@ -172,7 +172,8 @@ struct device_dma_parameters dma_parms; struct dma_device dma_device; void __iomem *base; - struct clk *dma_clk; + struct clk *dma_ahb; + struct clk *dma_ipg; spinlock_t lock; struct imx_dma_2d_config slots_2d[IMX_DMA_2D_SLOTS]; struct imxdma_channel channel[IMX_DMA_CHANNELS]; @@ -473,8 +474,10 @@ slot = i; break; } - if (slot < 0) + if (slot < 0) { + spin_unlock_irqrestore(&imxdma->lock, flags); return -EBUSY; + } imxdma->slots_2d[slot].xsr = d->x; imxdma->slots_2d[slot].ysr = d->y; @@ -976,10 +979,20 @@ return 0; } - imxdma->dma_clk = clk_get(NULL, "dma"); - if (IS_ERR(imxdma->dma_clk)) - return PTR_ERR(imxdma->dma_clk); - clk_enable(imxdma->dma_clk); + imxdma->dma_ipg = devm_clk_get(&pdev->dev, "ipg"); + if (IS_ERR(imxdma->dma_ipg)) { + ret = PTR_ERR(imxdma->dma_ipg); + goto err_clk; + } + + imxdma->dma_ahb = devm_clk_get(&pdev->dev, "ahb"); + if (IS_ERR(imxdma->dma_ahb)) { + ret = PTR_ERR(imxdma->dma_ahb); + goto err_clk; + } + + clk_prepare_enable(imxdma->dma_ipg); + clk_prepare_enable(imxdma->dma_ahb); /* reset DMA module */ imx_dmav1_writel(imxdma, DCR_DRST, DMA_DCR); @@ -988,16 +1001,14 @@ ret = request_irq(MX1_DMA_INT, dma_irq_handler, 0, "DMA", imxdma); if (ret) { dev_warn(imxdma->dev, "Can't register IRQ for DMA\n"); - kfree(imxdma); - return ret; + goto err_enable; } ret = request_irq(MX1_DMA_ERR, imxdma_err_handler, 0, "DMA", imxdma); if (ret) { dev_warn(imxdma->dev, "Can't register ERRIRQ for DMA\n"); free_irq(MX1_DMA_INT, NULL); - kfree(imxdma); - return ret; + goto err_enable; } } @@ -1094,7 +1105,10 @@ free_irq(MX1_DMA_INT, NULL); free_irq(MX1_DMA_ERR, NULL); } - +err_enable: + clk_disable_unprepare(imxdma->dma_ipg); + clk_disable_unprepare(imxdma->dma_ahb); +err_clk: kfree(imxdma); return ret; } @@ -1114,7 +1128,9 @@ free_irq(MX1_DMA_ERR, NULL); } - kfree(imxdma); + clk_disable_unprepare(imxdma->dma_ipg); + clk_disable_unprepare(imxdma->dma_ahb); + kfree(imxdma); return 0; } --- linux-3.5.0.orig/drivers/dma/pl330.c +++ linux-3.5.0/drivers/dma/pl330.c @@ -1567,17 +1567,19 @@ goto xfer_exit; } - /* Prefer Secure Channel */ - if (!_manager_ns(thrd)) - r->cfg->nonsecure = 0; - else - r->cfg->nonsecure = 1; /* Use last settings, if not provided */ - if (r->cfg) + if (r->cfg) { + /* Prefer Secure Channel */ + if (!_manager_ns(thrd)) + r->cfg->nonsecure = 0; + else + r->cfg->nonsecure = 1; + ccr = _prepare_ccr(r->cfg); - else + } else { ccr = readl(regs + CC(thrd->id)); + } /* If this req doesn't have valid xfer settings */ if (!_is_valid(ccr)) { @@ -2928,6 +2930,11 @@ num_chan = max_t(int, pi->pcfg.num_peri, pi->pcfg.num_chan); pdmac->peripherals = kzalloc(num_chan * sizeof(*pch), GFP_KERNEL); + if (!pdmac->peripherals) { + ret = -ENOMEM; + dev_err(&adev->dev, "unable to allocate pdmac->peripherals\n"); + goto probe_err5; + } for (i = 0; i < num_chan; i++) { pch = &pdmac->peripherals[i]; --- linux-3.5.0.orig/drivers/dma/at_hdmac.c +++ linux-3.5.0/drivers/dma/at_hdmac.c @@ -662,7 +662,7 @@ flags); if (unlikely(!atslave || !sg_len)) { - dev_dbg(chan2dev(chan), "prep_dma_memcpy: length is zero!\n"); + dev_dbg(chan2dev(chan), "prep_slave_sg: sg length is zero!\n"); return NULL; } @@ -690,6 +690,11 @@ mem = sg_dma_address(sg); len = sg_dma_len(sg); + if (unlikely(!len)) { + dev_dbg(chan2dev(chan), + "prep_slave_sg: sg(%d) data length is zero\n", i); + goto err; + } mem_width = 2; if (unlikely(mem & 3 || len & 3)) mem_width = 0; @@ -725,6 +730,11 @@ mem = sg_dma_address(sg); len = sg_dma_len(sg); + if (unlikely(!len)) { + dev_dbg(chan2dev(chan), + "prep_slave_sg: sg(%d) data length is zero\n", i); + goto err; + } mem_width = 2; if (unlikely(mem & 3 || len & 3)) mem_width = 0; @@ -758,6 +768,7 @@ err_desc_get: dev_err(chan2dev(chan), "not enough descriptors available\n"); +err: atc_desc_put(atchan, first); return NULL; } --- linux-3.5.0.orig/drivers/dma/ioat/dma_v3.c +++ linux-3.5.0/drivers/dma/ioat/dma_v3.c @@ -951,7 +951,7 @@ goto free_resources; } } - dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_TO_DEVICE); + dma_sync_single_for_device(dev, dest_dma, PAGE_SIZE, DMA_FROM_DEVICE); /* skip validate if the capability is not present */ if (!dma_has_cap(DMA_XOR_VAL, dma_chan->device->cap_mask)) --- linux-3.5.0.orig/drivers/acpi/video.c +++ linux-3.5.0/drivers/acpi/video.c @@ -73,6 +73,14 @@ module_param(brightness_switch_enabled, bool, 0644); /* + * The Default is to let the OS handle brightness autoswitching due to + * AC/battery status changes. On some laptops (MSI Wind) this doesn't + * work so we need a workaround. + */ +static int brightness_autoswitch_via_bios = 0; +module_param(brightness_autoswitch_via_bios, bool, 0644); + +/* * By default, we don't allow duplicate ACPI video bus devices * under the same VGA controller */ @@ -389,6 +397,12 @@ return 0; } +static int video_ignore_initial_backlight(const struct dmi_system_id *d) +{ + use_bios_initial_backlight = 0; + return 0; +} + static struct dmi_system_id video_dmi_table[] __initdata = { /* * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121 @@ -433,6 +447,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 7720"), }, }, + { + .callback = video_ignore_initial_backlight, + .ident = "HP Folio 13-2000", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Folio 13 - 2000 Notebook PC"), + }, + }, {} }; @@ -1345,12 +1367,15 @@ acpi_video_bus_get_devices(struct acpi_video_bus *video, struct acpi_device *device) { - int status; + int status = 0; struct acpi_device *dev; - status = acpi_video_device_enumerate(video); - if (status) - return status; + /* + * There are systems where video module known to work fine regardless + * of broken _DOD and ignoring returned value here doesn't cause + * any issues later. + */ + acpi_video_device_enumerate(video); list_for_each_entry(dev, &device->children, node) { @@ -1425,7 +1450,7 @@ static int acpi_video_bus_start_devices(struct acpi_video_bus *video) { - return acpi_video_bus_DOS(video, 0, 0); + return acpi_video_bus_DOS(video, 0, !brightness_autoswitch_via_bios); } static int acpi_video_bus_stop_devices(struct acpi_video_bus *video) @@ -1448,8 +1473,7 @@ case ACPI_VIDEO_NOTIFY_SWITCH: /* User requested a switch, * most likely via hotkey. */ acpi_bus_generate_proc_event(device, event, 0); - if (!acpi_notifier_call_chain(device, event, 0)) - keycode = KEY_SWITCHVIDEOMODE; + keycode = KEY_SWITCHVIDEOMODE; break; case ACPI_VIDEO_NOTIFY_PROBE: /* User plugged in or removed a video @@ -1479,8 +1503,9 @@ break; } - if (event != ACPI_VIDEO_NOTIFY_SWITCH) - acpi_notifier_call_chain(device, event, 0); + if (acpi_notifier_call_chain(device, event, 0)) + /* Something vetoed the keypress. */ + keycode = 0; if (keycode) { input_report_key(input, keycode, 1); --- linux-3.5.0.orig/drivers/acpi/scan.c +++ linux-3.5.0/drivers/acpi/scan.c @@ -789,8 +789,8 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device) { struct acpi_device_id button_device_ids[] = { - {"PNP0C0D", 0}, {"PNP0C0C", 0}, + {"PNP0C0D", 0}, {"PNP0C0E", 0}, {"", 0}, }; @@ -802,6 +802,11 @@ /* Power button, Lid switch always enable wakeup */ if (!acpi_match_device_ids(device, button_device_ids)) { device->wakeup.flags.run_wake = 1; + if (!acpi_match_device_ids(device, &button_device_ids[1])) { + /* Do not use Lid/sleep button for S5 wakeup */ + if (device->wakeup.sleep_state == ACPI_STATE_S5) + device->wakeup.sleep_state = ACPI_STATE_S4; + } device_set_wakeup_capable(&device->dev, true); return; } @@ -1157,7 +1162,7 @@ acpi_add_id(device, ACPI_DOCK_HID); else if (!acpi_ibm_smbus_match(device)) acpi_add_id(device, ACPI_SMBUS_IBM_HID); - else if (!acpi_device_hid(device) && + else if (list_empty(&device->pnp.ids) && ACPI_IS_ROOT_DEVICE(device->parent)) { acpi_add_id(device, ACPI_BUS_HID); /* \_SB, LNXSYBUS */ strcpy(device->pnp.device_name, ACPI_BUS_DEVICE_NAME); --- linux-3.5.0.orig/drivers/acpi/battery.c +++ linux-3.5.0/drivers/acpi/battery.c @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef CONFIG_ACPI_PROCFS_POWER #include @@ -95,6 +96,18 @@ ACPI_BATTERY_ALARM_PRESENT, ACPI_BATTERY_XINFO_PRESENT, ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, + /* On Lenovo Thinkpad models from 2010 and 2011, the power unit + switches between mWh and mAh depending on whether the system + is running on battery or not. When mAh is the unit, most + reported values are incorrect and need to be adjusted by + 10000/design_voltage. Verified on x201, t410, t410s, and x220. + Pre-2010 and 2012 models appear to always report in mWh and + are thus unaffected (tested with t42, t61, t500, x200, x300, + and x230). Also, in mid-2012 Lenovo issued a BIOS update for + the 2011 models that fixes the issue (tested on x220 with a + post-1.29 BIOS), but as of Nov. 2012, no such update is + available for the 2010 models. */ + ACPI_BATTERY_QUIRK_THINKPAD_MAH, }; struct acpi_battery { @@ -429,6 +442,21 @@ kfree(buffer.pointer); if (test_bit(ACPI_BATTERY_QUIRK_PERCENTAGE_CAPACITY, &battery->flags)) battery->full_charge_capacity = battery->design_capacity; + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags) && + battery->power_unit && battery->design_voltage) { + battery->design_capacity = battery->design_capacity * + 10000 / battery->design_voltage; + battery->full_charge_capacity = battery->full_charge_capacity * + 10000 / battery->design_voltage; + battery->design_capacity_warning = + battery->design_capacity_warning * + 10000 / battery->design_voltage; + /* Curiously, design_capacity_low, unlike the rest of them, + is correct. */ + /* capacity_granularity_* equal 1 on the systems tested, so + it's impossible to tell if they would need an adjustment + or not if their values were higher. */ + } return result; } @@ -477,6 +505,11 @@ && battery->capacity_now >= 0 && battery->capacity_now <= 100) battery->capacity_now = (battery->capacity_now * battery->full_charge_capacity) / 100; + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags) && + battery->power_unit && battery->design_voltage) { + battery->capacity_now = battery->capacity_now * + 10000 / battery->design_voltage; + } return result; } @@ -586,6 +619,24 @@ mutex_unlock(&battery->sysfs_lock); } +static void find_battery(const struct dmi_header *dm, void *private) +{ + struct acpi_battery *battery = (struct acpi_battery *)private; + /* Note: the hardcoded offsets below have been extracted from + the source code of dmidecode. */ + if (dm->type == DMI_ENTRY_PORTABLE_BATTERY && dm->length >= 8) { + const u8 *dmi_data = (const u8 *)(dm + 1); + int dmi_capacity = get_unaligned((const u16 *)(dmi_data + 6)); + if (dm->length >= 18) + dmi_capacity *= dmi_data[17]; + if (battery->design_capacity * battery->design_voltage / 1000 + != dmi_capacity && + battery->design_capacity * 10 == dmi_capacity) + set_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, + &battery->flags); + } +} + /* * According to the ACPI spec, some kinds of primary batteries can * report percentage battery remaining capacity directly to OS. @@ -611,6 +662,32 @@ battery->capacity_now = (battery->capacity_now * battery->full_charge_capacity) / 100; } + + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, &battery->flags)) + return ; + + if (battery->power_unit && dmi_name_in_vendors("LENOVO")) { + const char *s; + s = dmi_get_system_info(DMI_PRODUCT_VERSION); + if (s && !strnicmp(s, "ThinkPad", 8)) { + dmi_walk(find_battery, battery); + if (test_bit(ACPI_BATTERY_QUIRK_THINKPAD_MAH, + &battery->flags) && + battery->design_voltage) { + battery->design_capacity = + battery->design_capacity * + 10000 / battery->design_voltage; + battery->full_charge_capacity = + battery->full_charge_capacity * + 10000 / battery->design_voltage; + battery->design_capacity_warning = + battery->design_capacity_warning * + 10000 / battery->design_voltage; + battery->capacity_now = battery->capacity_now * + 10000 / battery->design_voltage; + } + } + } } static int acpi_battery_update(struct acpi_battery *battery) @@ -976,6 +1053,18 @@ return 0; } +static LIST_HEAD(acpi_battery_domain); + +static void acpi_battery_update_async(struct acpi_device *device, async_cookie_t cookie) +{ + struct acpi_battery *battery = acpi_driver_data(device); + + acpi_battery_update(battery); + printk(KERN_INFO PREFIX "%s Slot [%s] (battery %s)\n", + ACPI_BATTERY_DEVICE_NAME, acpi_device_bid(device), + device->status.battery_present ? "present" : "absent"); +} + static int acpi_battery_add(struct acpi_device *device) { int result = 0; @@ -995,13 +1084,16 @@ if (ACPI_SUCCESS(acpi_get_handle(battery->device->handle, "_BIX", &handle))) set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags); - result = acpi_battery_update(battery); - if (result) - goto fail; + + /* Mark the battery for update at first access. */ + battery->update_time = 0; #ifdef CONFIG_ACPI_PROCFS_POWER result = acpi_battery_add_fs(device); #endif - if (result) { + if (!result) { + async_schedule_domain(acpi_battery_update_async, device, &acpi_battery_domain); + + } else { #ifdef CONFIG_ACPI_PROCFS_POWER acpi_battery_remove_fs(device); #endif @@ -1031,6 +1123,10 @@ if (!device || !acpi_driver_data(device)) return -EINVAL; + + /* Ensure all async updates are complete before freeing the battery. */ + async_synchronize_full_domain(&acpi_battery_domain); + battery = acpi_driver_data(device); unregister_pm_notifier(&battery->pm_nb); #ifdef CONFIG_ACPI_PROCFS_POWER @@ -1068,27 +1164,21 @@ }, }; -static void __init acpi_battery_init_async(void *unused, async_cookie_t cookie) +static int __init acpi_battery_init(void) { if (acpi_disabled) return; #ifdef CONFIG_ACPI_PROCFS_POWER acpi_battery_dir = acpi_lock_battery_dir(); if (!acpi_battery_dir) - return; + return -1; #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 -1; } - return; -} - -static int __init acpi_battery_init(void) -{ - async_schedule(acpi_battery_init_async, NULL); return 0; } --- linux-3.5.0.orig/drivers/acpi/bus.c +++ linux-3.5.0/drivers/acpi/bus.c @@ -237,6 +237,16 @@ } else if (result == ACPI_STATE_D3_HOT) { result = ACPI_STATE_D3; } + + /* + * If we were unsure about the device parent's power state up to this + * point, the fact that the device is in D0 implies that the parent has + * to be in D0 too. + */ + if (device->parent && device->parent->power.state == ACPI_STATE_UNKNOWN + && result == ACPI_STATE_D0) + device->parent->power.state = ACPI_STATE_D0; + *state = result; out: @@ -980,8 +990,6 @@ status = acpi_ec_ecdt_probe(); /* Ignore result. Not having an ECDT is not fatal. */ - acpi_bus_osc_support(); - status = acpi_initialize_objects(ACPI_FULL_INITIALIZATION); if (ACPI_FAILURE(status)) { printk(KERN_ERR PREFIX "Unable to initialize ACPI objects\n"); @@ -989,6 +997,12 @@ } /* + * _OSC method may exist in module level code, + * so it must be run after ACPI_FULL_INITIALIZATION + */ + acpi_bus_osc_support(); + + /* * _PDC control method may load dynamic SSDT tables, * and we need to install the table handler before that. */ --- linux-3.5.0.orig/drivers/acpi/processor_driver.c +++ linux-3.5.0/drivers/acpi/processor_driver.c @@ -407,6 +407,7 @@ acpi_bus_generate_proc_event(device, event, 0); acpi_bus_generate_netlink_event(device->pnp.device_class, dev_name(&device->dev), event, 0); + break; default: ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Unsupported event [0x%x]\n", event)); @@ -442,7 +443,7 @@ /* Normal CPU soft online event */ } else { acpi_processor_ppc_has_changed(pr, 0); - acpi_processor_cst_has_changed(pr); + acpi_processor_hotplug(pr); acpi_processor_reevaluate_tstate(pr, action); acpi_processor_tstate_has_changed(pr); } --- linux-3.5.0.orig/drivers/acpi/ec.c +++ linux-3.5.0/drivers/acpi/ec.c @@ -71,9 +71,6 @@ #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_STORM_THRESHOLD 8 /* number of false interrupts - per one transaction */ - enum { EC_FLAGS_QUERY_PENDING, /* Query is pending */ EC_FLAGS_GPE_STORM, /* GPE storm detected */ @@ -87,6 +84,15 @@ module_param(ec_delay, uint, 0644); MODULE_PARM_DESC(ec_delay, "Timeout(ms) waited until an EC command completes"); +/* + * If the number of false interrupts per one transaction exceeds + * this threshold, will think there is a GPE storm happened and + * will disable the GPE for normal transaction. + */ +static unsigned int ec_storm_threshold __read_mostly = 8; +module_param(ec_storm_threshold, uint, 0644); +MODULE_PARM_DESC(ec_storm_threshold, "Maxim false GPE numbers not considered as GPE storm"); + /* If we find an EC via the ECDT, we need to keep a ptr to its context */ /* External interfaces use first EC only, so remember */ typedef int (*acpi_ec_query_func) (void *data); @@ -319,7 +325,7 @@ msleep(1); /* It is safe to enable the GPE outside of the transaction. */ acpi_enable_gpe(NULL, ec->gpe); - } else if (t->irq_count > ACPI_EC_STORM_THRESHOLD) { + } else if (t->irq_count > ec_storm_threshold) { pr_info(PREFIX "GPE storm detected, " "transactions will use polling mode\n"); set_bit(EC_FLAGS_GPE_STORM, &ec->flags); @@ -924,6 +930,17 @@ return 0; } +/* + * Clevo M720 notebook actually works ok with IRQ mode, if we lifted + * the GPE storm threshold back to 20 + */ +static int ec_enlarge_storm_threshold(const struct dmi_system_id *id) +{ + pr_debug("Setting the EC GPE storm threshold to 20\n"); + ec_storm_threshold = 20; + return 0; +} + static struct dmi_system_id __initdata ec_dmi_table[] = { { ec_skip_dsdt_scan, "Compal JFL92", { @@ -955,10 +972,13 @@ { ec_validate_ecdt, "ASUS hardware", { DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc.") }, NULL}, + { + ec_enlarge_storm_threshold, "CLEVO hardware", { + DMI_MATCH(DMI_SYS_VENDOR, "CLEVO Co."), + DMI_MATCH(DMI_PRODUCT_NAME, "M720T/M730T"),}, NULL}, {}, }; - int __init acpi_ec_ecdt_probe(void) { acpi_status status; --- linux-3.5.0.orig/drivers/acpi/sleep.c +++ linux-3.5.0/drivers/acpi/sleep.c @@ -137,6 +137,188 @@ old_suspend_ordering = true; } +static int __init init_old_suspend_ordering(const struct dmi_system_id *d) +{ + acpi_old_suspend_ordering(); + return 0; +} + +static int __init init_nvs_nosave(const struct dmi_system_id *d) +{ + acpi_nvs_nosave(); + return 0; +} + +static struct dmi_system_id __initdata acpisleep_dmi_table[] = { + { + .callback = init_old_suspend_ordering, + .ident = "Abit KN9 (nForce4 variant)", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"), + DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "HP xw4600 Workstation", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "M2N8L"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Panasonic CF51-2L", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, + "Matsushita Electric Industrial Co.,Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW41E_H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW41E_H"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW21E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB17FX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-SR11M", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Everex StepNote Series", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB1Z1E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-NW130D", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCCW29FX", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Averatec AV1020-ED2", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"), + DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus A8N-SLI DELUXE", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"), + }, + }, + { + .callback = init_old_suspend_ordering, + .ident = "Asus A8N-SLI Premium", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-SR26GN_P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VPCEB1S1E", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1S1E"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Sony Vaio VGN-FW520F", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Asus K54C", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "K54C"), + }, + }, + { + .callback = init_nvs_nosave, + .ident = "Asus K54HR", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"), + }, + }, + {}, +}; + +static void acpi_sleep_dmi_check(void) +{ + dmi_check_system(acpisleep_dmi_table); +} + /** * acpi_pm_freeze - Disable the GPEs and suspend EC transactions. */ @@ -252,6 +434,7 @@ } #else /* !CONFIG_ACPI_SLEEP */ #define acpi_target_sleep_state ACPI_STATE_S0 +static inline void acpi_sleep_dmi_check(void) {} #endif /* CONFIG_ACPI_SLEEP */ #ifdef CONFIG_SUSPEND @@ -410,167 +593,6 @@ .end = acpi_pm_end, .recover = acpi_pm_finish, }; - -static int __init init_old_suspend_ordering(const struct dmi_system_id *d) -{ - old_suspend_ordering = true; - return 0; -} - -static int __init init_nvs_nosave(const struct dmi_system_id *d) -{ - acpi_nvs_nosave(); - return 0; -} - -static struct dmi_system_id __initdata acpisleep_dmi_table[] = { - { - .callback = init_old_suspend_ordering, - .ident = "Abit KN9 (nForce4 variant)", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "http://www.abit.com.tw/"), - DMI_MATCH(DMI_BOARD_NAME, "KN9 Series(NF-CK804)"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "HP xw4600 Workstation", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), - DMI_MATCH(DMI_PRODUCT_NAME, "HP xw4600 Workstation"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus Pundit P1-AH2 (M2N8L motherboard)", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "M2N8L"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Panasonic CF51-2L", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, - "Matsushita Electric Industrial Co.,Ltd."), - DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-FW21E", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW21E"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCEB17FX", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB17FX"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-SR11M", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR11M"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Everex StepNote Series", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Everex Systems, Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "Everex StepNote Series"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCEB1Z1E", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCEB1Z1E"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-NW130D", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NW130D"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VPCCW29FX", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VPCCW29FX"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Averatec AV1020-ED2", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "AVERATEC"), - DMI_MATCH(DMI_PRODUCT_NAME, "1000 Series"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus A8N-SLI DELUXE", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI DELUXE"), - }, - }, - { - .callback = init_old_suspend_ordering, - .ident = "Asus A8N-SLI Premium", - .matches = { - DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), - DMI_MATCH(DMI_BOARD_NAME, "A8N-SLI Premium"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-SR26GN_P", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SR26GN_P"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Sony Vaio VGN-FW520F", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "Sony Corporation"), - DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FW520F"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Asus K54C", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "K54C"), - }, - }, - { - .callback = init_nvs_nosave, - .ident = "Asus K54HR", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."), - DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"), - }, - }, - {}, -}; #endif /* CONFIG_SUSPEND */ #ifdef CONFIG_HIBERNATION @@ -911,13 +933,13 @@ u8 type_a, type_b; #ifdef CONFIG_SUSPEND int i = 0; - - dmi_check_system(acpisleep_dmi_table); #endif if (acpi_disabled) return 0; + acpi_sleep_dmi_check(); + sleep_states[ACPI_STATE_S0] = 1; printk(KERN_INFO PREFIX "(supports S0"); --- linux-3.5.0.orig/drivers/acpi/power.c +++ linux-3.5.0/drivers/acpi/power.c @@ -103,6 +103,7 @@ /* List of devices relying on this power resource */ struct acpi_power_resource_device *devices; + struct mutex devices_lock; }; static struct list_head acpi_power_resource_list; @@ -221,7 +222,6 @@ static int __acpi_power_on(struct acpi_power_resource *resource) { - struct acpi_power_resource_device *device_list = resource->devices; acpi_status status = AE_OK; status = acpi_evaluate_object(resource->device->handle, "_ON", NULL, NULL); @@ -234,19 +234,15 @@ ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Power resource [%s] turned on\n", resource->name)); - while (device_list) { - acpi_power_on_device(device_list->device); - - device_list = device_list->next; - } - return 0; } static int acpi_power_on(acpi_handle handle) { int result = 0; + bool resume_device = false; struct acpi_power_resource *resource = NULL; + struct acpi_power_resource_device *device_list; result = acpi_power_get_context(handle, &resource); if (result) @@ -262,10 +258,25 @@ result = __acpi_power_on(resource); if (result) resource->ref_count--; + else + resume_device = true; } mutex_unlock(&resource->resource_lock); + if (!resume_device) + return result; + + mutex_lock(&resource->devices_lock); + + device_list = resource->devices; + while (device_list) { + acpi_power_on_device(device_list->device); + device_list = device_list->next; + } + + mutex_unlock(&resource->devices_lock); + return result; } @@ -351,7 +362,7 @@ if (acpi_power_get_context(res_handle, &resource)) return; - mutex_lock(&resource->resource_lock); + mutex_lock(&resource->devices_lock); prev = NULL; curr = resource->devices; while (curr) { @@ -368,7 +379,7 @@ prev = curr; curr = curr->next; } - mutex_unlock(&resource->resource_lock); + mutex_unlock(&resource->devices_lock); } /* Unlink dev from all power resources in _PR0 */ @@ -409,10 +420,10 @@ power_resource_device->device = powered_device; - mutex_lock(&resource->resource_lock); + mutex_lock(&resource->devices_lock); power_resource_device->next = resource->devices; resource->devices = power_resource_device; - mutex_unlock(&resource->resource_lock); + mutex_unlock(&resource->devices_lock); return 0; } @@ -457,7 +468,7 @@ return ret; no_power_resource: - printk(KERN_WARNING PREFIX "Invalid Power Resource to register!"); + printk(KERN_DEBUG PREFIX "Invalid Power Resource to register!"); return -ENODEV; } @@ -715,6 +726,7 @@ resource->device = device; mutex_init(&resource->resource_lock); + mutex_init(&resource->devices_lock); strcpy(resource->name, device->pnp.bus_id); strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_POWER_CLASS); --- linux-3.5.0.orig/drivers/acpi/ac.c +++ linux-3.5.0/drivers/acpi/ac.c @@ -292,7 +292,9 @@ ac->charger.properties = ac_props; ac->charger.num_properties = ARRAY_SIZE(ac_props); ac->charger.get_property = get_ac_property; - power_supply_register(&ac->device->dev, &ac->charger); + result = power_supply_register(&ac->device->dev, &ac->charger); + if (result) + goto end; printk(KERN_INFO PREFIX "%s [%s] (%s)\n", acpi_device_name(device), acpi_device_bid(device), --- linux-3.5.0.orig/drivers/acpi/osl.c +++ linux-3.5.0/drivers/acpi/osl.c @@ -250,7 +250,7 @@ return acpi_rsdp; #endif - if (efi_enabled) { + if (efi_enabled(EFI_CONFIG_TABLES)) { if (efi.acpi20 != EFI_INVALID_TABLE_ADDR) return efi.acpi20; else if (efi.acpi != EFI_INVALID_TABLE_ADDR) --- linux-3.5.0.orig/drivers/acpi/processor_idle.c +++ linux-3.5.0/drivers/acpi/processor_idle.c @@ -1046,6 +1046,9 @@ return -EINVAL; } + if (!dev) + return -EINVAL; + dev->cpu = pr->id; if (max_cstate == 0) @@ -1233,6 +1236,7 @@ } /* Populate Updated C-state information */ + acpi_processor_get_power_info(pr); acpi_processor_setup_cpuidle_states(pr); /* Enable all cpuidle devices */ --- linux-3.5.0.orig/drivers/acpi/acpica/tbxface.c +++ linux-3.5.0/drivers/acpi/acpica/tbxface.c @@ -436,6 +436,7 @@ return (AE_NOT_FOUND); } +ACPI_EXPORT_SYMBOL(acpi_get_table_with_size) acpi_status acpi_get_table(char *signature, --- linux-3.5.0.orig/drivers/acpi/apei/apei-base.c +++ linux-3.5.0/drivers/acpi/apei/apei-base.c @@ -586,6 +586,11 @@ } *access_bit_width = 1UL << (access_size_code + 2); + /* Fixup common BIOS bug */ + if (bit_width == 32 && bit_offset == 0 && (*paddr & 0x03) == 0 && + *access_bit_width < 32) + *access_bit_width = 32; + if ((bit_width + bit_offset) > *access_bit_width) { pr_warning(FW_BUG APEI_PFX "Invalid bit width + offset in GAR [0x%llx/%u/%u/%u/%u]\n", --- linux-3.5.0.orig/drivers/bcma/main.c +++ linux-3.5.0/drivers/bcma/main.c @@ -131,9 +131,10 @@ static void bcma_unregister_cores(struct bcma_bus *bus) { - struct bcma_device *core; + struct bcma_device *core, *tmp; - list_for_each_entry(core, &bus->cores, list) { + list_for_each_entry_safe(core, tmp, &bus->cores, list) { + list_del(&core->list); if (core->dev_registered) device_unregister(&core->dev); } --- linux-3.5.0.orig/drivers/bcma/driver_mips.c +++ linux-3.5.0/drivers/bcma/driver_mips.c @@ -115,7 +115,7 @@ bcma_read32(mdev, BCMA_MIPS_MIPS74K_INTMASK(0)) & ~(1 << irqflag)); else - bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(irq), 0); + bcma_write32(mdev, BCMA_MIPS_MIPS74K_INTMASK(oldirq), 0); /* assign the new one */ if (irq == 0) { --- linux-3.5.0.orig/drivers/watchdog/hpwdt.c +++ linux-3.5.0/drivers/watchdog/hpwdt.c @@ -814,6 +814,9 @@ hpwdt_timer_reg = pci_mem_addr + 0x70; hpwdt_timer_con = pci_mem_addr + 0x72; + /* Make sure that timer is disabled until /dev/watchdog is opened */ + hpwdt_stop(); + /* Make sure that we have a valid soft_margin */ if (hpwdt_change_timer(soft_margin)) hpwdt_change_timer(DEFAULT_MARGIN); --- linux-3.5.0.orig/drivers/net/tun.c +++ linux-3.5.0/drivers/net/tun.c @@ -185,7 +185,6 @@ netif_tx_lock_bh(tun->dev); netif_carrier_off(tun->dev); tun->tfile = NULL; - tun->socket.file = NULL; netif_tx_unlock_bh(tun->dev); /* Drop read queue */ @@ -358,6 +357,8 @@ { struct tun_struct *tun = netdev_priv(dev); + BUG_ON(!test_bit(SOCK_EXTERNALLY_ALLOCATED, &tun->socket.flags)); + sk_release_kernel(tun->socket.sk); } @@ -1115,6 +1116,7 @@ tun->flags = flags; tun->txflt.count = 0; tun->vnet_hdr_sz = sizeof(struct virtio_net_hdr); + set_bit(SOCK_EXTERNALLY_ALLOCATED, &tun->socket.flags); err = -ENOMEM; sk = sk_alloc(&init_net, AF_UNSPEC, GFP_KERNEL, &tun_proto); @@ -1252,10 +1254,12 @@ int vnet_hdr_sz; int ret; - if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) + if (cmd == TUNSETIFF || _IOC_TYPE(cmd) == 0x89) { if (copy_from_user(&ifr, argp, ifreq_len)) return -EFAULT; - + } else { + memset(&ifr, 0, sizeof(ifr)); + } if (cmd == TUNGETFEATURES) { /* Currently this just means: "what IFF flags are valid?". * This is needed because we never checked for invalid flags on --- linux-3.5.0.orig/drivers/net/netconsole.c +++ linux-3.5.0/drivers/net/netconsole.c @@ -648,7 +648,6 @@ flags); dev_put(nt->np.dev); nt->np.dev = NULL; - netconsole_target_put(nt); } nt->enabled = 0; stopped = true; --- linux-3.5.0.orig/drivers/net/loopback.c +++ linux-3.5.0/drivers/net/loopback.c @@ -77,6 +77,11 @@ skb_orphan(skb); + /* Before queueing this packet to netif_rx(), + * make sure dst is refcounted. + */ + skb_dst_force(skb); + skb->protocol = eth_type_trans(skb, dev); /* it's OK to use per_cpu_ptr() because BHs are off */ --- linux-3.5.0.orig/drivers/net/rionet.c +++ linux-3.5.0/drivers/net/rionet.c @@ -79,6 +79,7 @@ * on system trade-offs. */ static struct rio_dev **rionet_active; +static int nact; /* total number of active rionet peers */ #define is_rionet_capable(src_ops, dst_ops) \ ((src_ops & RIO_SRC_OPS_DATA_MSG) && \ @@ -175,6 +176,7 @@ struct ethhdr *eth = (struct ethhdr *)skb->data; u16 destid; unsigned long flags; + int add_num = 1; local_irq_save(flags); if (!spin_trylock(&rnet->tx_lock)) { @@ -182,7 +184,10 @@ return NETDEV_TX_LOCKED; } - if ((rnet->tx_cnt + 1) > RIONET_TX_RING_SIZE) { + if (is_multicast_ether_addr(eth->h_dest)) + add_num = nact; + + if ((rnet->tx_cnt + add_num) > RIONET_TX_RING_SIZE) { netif_stop_queue(ndev); spin_unlock_irqrestore(&rnet->tx_lock, flags); printk(KERN_ERR "%s: BUG! Tx Ring full when queue awake!\n", @@ -191,11 +196,16 @@ } if (is_multicast_ether_addr(eth->h_dest)) { + int count = 0; for (i = 0; i < RIO_MAX_ROUTE_ENTRIES(rnet->mport->sys_size); i++) - if (rionet_active[i]) + if (rionet_active[i]) { rionet_queue_tx_msg(skb, ndev, rionet_active[i]); + if (count) + atomic_inc(&skb->users); + count++; + } } else if (RIONET_MAC_MATCH(eth->h_dest)) { destid = RIONET_GET_DESTID(eth->h_dest); if (rionet_active[destid]) @@ -220,14 +230,17 @@ if (info == RIONET_DOORBELL_JOIN) { if (!rionet_active[sid]) { list_for_each_entry(peer, &rionet_peers, node) { - if (peer->rdev->destid == sid) + if (peer->rdev->destid == sid) { rionet_active[sid] = peer->rdev; + nact++; + } } rio_mport_send_doorbell(mport, sid, RIONET_DOORBELL_JOIN); } } else if (info == RIONET_DOORBELL_LEAVE) { rionet_active[sid] = NULL; + nact--; } else { if (netif_msg_intr(rnet)) printk(KERN_WARNING "%s: unhandled doorbell\n", @@ -523,6 +536,7 @@ rc = rionet_setup_netdev(rdev->net->hport, ndev); rionet_check = 1; + nact = 0; } /* --- linux-3.5.0.orig/drivers/net/macvlan.c +++ linux-3.5.0/drivers/net/macvlan.c @@ -822,7 +822,10 @@ static size_t macvlan_get_size(const struct net_device *dev) { - return nla_total_size(4); + return (0 + + nla_total_size(4) /* IFLA_MACVLAN_MODE */ + + nla_total_size(2) /* IFLA_MACVLAN_FLAGS */ + ); } static int macvlan_fill_info(struct sk_buff *skb, --- linux-3.5.0.orig/drivers/net/usb/sierra_net.c +++ linux-3.5.0/drivers/net/usb/sierra_net.c @@ -678,7 +678,7 @@ return -EIO; } - *datap = *attrdata; + *datap = le16_to_cpu(*attrdata); kfree(attrdata); return result; --- linux-3.5.0.orig/drivers/net/usb/cdc_ether.c +++ linux-3.5.0/drivers/net/usb/cdc_ether.c @@ -487,6 +487,7 @@ #define HUAWEI_VENDOR_ID 0x12D1 #define NOVATEL_VENDOR_ID 0x1410 #define ZTE_VENDOR_ID 0x19D2 +#define DELL_VENDOR_ID 0x413C static const struct usb_device_id products [] = { /* @@ -592,6 +593,46 @@ .driver_info = 0, }, +/* Novatel USB551L and MC551 - handled by qmi_wwan */ +{ + .match_flags = USB_DEVICE_ID_MATCH_VENDOR + | USB_DEVICE_ID_MATCH_PRODUCT + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = NOVATEL_VENDOR_ID, + .idProduct = 0xB001, + .bInterfaceClass = USB_CLASS_COMM, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, + .bInterfaceProtocol = USB_CDC_PROTO_NONE, + .driver_info = 0, +}, + +/* Novatel E362 - handled by qmi_wwan */ +{ + .match_flags = USB_DEVICE_ID_MATCH_VENDOR + | USB_DEVICE_ID_MATCH_PRODUCT + | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = NOVATEL_VENDOR_ID, + .idProduct = 0x9010, + .bInterfaceClass = USB_CLASS_COMM, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, + .bInterfaceProtocol = USB_CDC_PROTO_NONE, + .driver_info = 0, +}, + +/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8195, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + +/* Dell Wireless 5800 (Novatel E362) - handled by qmi_wwan */ +{ + USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, 0x8196, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = 0, +}, + /* * WHITELIST!!! * @@ -604,21 +645,6 @@ * because of bugs/quirks in a given product (like Zaurus, above). */ { - /* Novatel USB551L */ - /* This match must come *before* the generic CDC-ETHER match so that - * we get FLAG_WWAN set on the device, since it's descriptors are - * generic CDC-ETHER. - */ - .match_flags = USB_DEVICE_ID_MATCH_VENDOR - | USB_DEVICE_ID_MATCH_PRODUCT - | USB_DEVICE_ID_MATCH_INT_INFO, - .idVendor = NOVATEL_VENDOR_ID, - .idProduct = 0xB001, - .bInterfaceClass = USB_CLASS_COMM, - .bInterfaceSubClass = USB_CDC_SUBCLASS_ETHERNET, - .bInterfaceProtocol = USB_CDC_PROTO_NONE, - .driver_info = (unsigned long)&wwan_info, -}, { /* ZTE (Vodafone) K3805-Z */ .match_flags = USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT --- linux-3.5.0.orig/drivers/net/usb/usbnet.c +++ linux-3.5.0/drivers/net/usb/usbnet.c @@ -1161,6 +1161,7 @@ usb_anchor_urb(urb, &dev->deferred); /* no use to process more packets */ netif_stop_queue(net); + usb_put_urb(urb); spin_unlock_irqrestore(&dev->txq.lock, flags); netdev_dbg(dev->net, "Delaying transmission for resumption\n"); goto deferred; @@ -1204,19 +1205,26 @@ } EXPORT_SYMBOL_GPL(usbnet_start_xmit); -static void rx_alloc_submit(struct usbnet *dev, gfp_t flags) +static int rx_alloc_submit(struct usbnet *dev, gfp_t flags) { struct urb *urb; int i; + int ret = 0; /* don't refill the queue all at once */ for (i = 0; i < 10 && dev->rxq.qlen < RX_QLEN(dev); i++) { urb = usb_alloc_urb(0, flags); if (urb != NULL) { - if (rx_submit(dev, urb, flags) == -ENOLINK) - return; + ret = rx_submit(dev, urb, flags); + if (ret) + goto err; + } else { + ret = -ENOMEM; + goto err; } } +err: + return ret; } /*-------------------------------------------------------------------------*/ @@ -1260,7 +1268,8 @@ int temp = dev->rxq.qlen; if (temp < RX_QLEN(dev)) { - rx_alloc_submit(dev, GFP_ATOMIC); + if (rx_alloc_submit(dev, GFP_ATOMIC) == -ENOLINK) + return; if (temp != dev->rxq.qlen) netif_dbg(dev, link, dev->net, "rxqlen %d --> %d\n", @@ -1305,6 +1314,8 @@ cancel_work_sync(&dev->kevent); + usb_scuttle_anchored_urbs(&dev->deferred); + if (dev->driver_info->unbind) dev->driver_info->unbind (dev, intf); @@ -1580,7 +1591,7 @@ netif_device_present(dev->net) && !timer_pending(&dev->delay) && !test_bit(EVENT_RX_HALT, &dev->flags)) - rx_alloc_submit(dev, GFP_KERNEL); + rx_alloc_submit(dev, GFP_NOIO); if (!(dev->txq.qlen >= TX_QLEN(dev))) netif_tx_wake_all_queues(dev->net); --- linux-3.5.0.orig/drivers/net/usb/qmi_wwan.c +++ linux-3.5.0/drivers/net/usb/qmi_wwan.c @@ -444,6 +444,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_shared, }, + { /* Pantech UML290 - newer firmware */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x106c, + .idProduct = 0x3718, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xf1, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_shared, + }, { /* ZTE MF820D */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -453,6 +462,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_force_int4, }, + { /* ZTE MF821D */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x19d2, + .idProduct = 0x0326, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_force_int4, + }, { /* ZTE (Vodafone) K3520-Z */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -507,6 +525,15 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_force_int4, }, + { /* ZTE (Vodafone) K5006-Z */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x19d2, + .idProduct = 0x1018, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_force_int3, + }, { /* ZTE MF60 */ .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, .idVendor = 0x19d2, @@ -525,6 +552,61 @@ .bInterfaceProtocol = 0xff, .driver_info = (unsigned long)&qmi_wwan_sierra, }, + { /* Sierra Wireless MC7700 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x0f3d, + .idProduct = 0x68a2, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Sierra Wireless MC7750 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x114f, + .idProduct = 0x68a2, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Sierra Wireless EM7700 */ + .match_flags = USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_INT_INFO, + .idVendor = 0x1199, + .idProduct = 0x901c, + .bInterfaceClass = 0xff, + .bInterfaceSubClass = 0xff, + .bInterfaceProtocol = 0xff, + .driver_info = (unsigned long)&qmi_wwan_sierra, + }, + { /* Novatel USB551L and MC551 */ + USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0xb001, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Novatel E362 */ + USB_DEVICE_AND_INTERFACE_INFO(0x1410, 0x9010, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Dell Wireless 5800 (Novatel E362) */ + USB_DEVICE_AND_INTERFACE_INFO(0x413C, 0x8195, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, + { /* Dell Wireless 5800 V2 (Novatel E362) */ + USB_DEVICE_AND_INTERFACE_INFO(0x413C, 0x8196, + USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, + USB_CDC_PROTO_NONE), + .driver_info = (unsigned long)&qmi_wwan_info, + }, /* Gobi 1000 devices */ {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)}, /* Acer Gobi Modem Device */ @@ -552,6 +634,8 @@ {QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */ {QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */ {QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */ + {QMI_GOBI_DEVICE(0x1199, 0x68a5)}, /* Sierra Wireless Modem */ + {QMI_GOBI_DEVICE(0x1199, 0x68a9)}, /* Sierra Wireless Modem */ {QMI_GOBI_DEVICE(0x1199, 0x9001)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ {QMI_GOBI_DEVICE(0x1199, 0x9002)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ {QMI_GOBI_DEVICE(0x1199, 0x9003)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */ @@ -568,6 +652,8 @@ {QMI_GOBI_DEVICE(0x1199, 0x9013)}, /* Sierra Wireless Gobi 3000 Modem device (MC8355) */ {QMI_GOBI_DEVICE(0x1199, 0x9015)}, /* Sierra Wireless Gobi 3000 Modem device */ {QMI_GOBI_DEVICE(0x1199, 0x9019)}, /* Sierra Wireless Gobi 3000 Modem device */ + {QMI_GOBI_DEVICE(0x1199, 0x901b)}, /* Sierra Wireless MC7770 */ + { } /* END */ }; MODULE_DEVICE_TABLE(usb, products); --- linux-3.5.0.orig/drivers/net/usb/asix.c +++ linux-3.5.0/drivers/net/usb/asix.c @@ -1572,6 +1572,10 @@ USB_DEVICE (0x04f1, 0x3008), .driver_info = (unsigned long) &ax8817x_info, }, { + // Lenovo U2L100P 10/100 + USB_DEVICE (0x17ef, 0x7203), + .driver_info = (unsigned long) &ax88772_info, +}, { // ASIX AX88772B 10/100 USB_DEVICE (0x0b95, 0x772b), .driver_info = (unsigned long) &ax88772_info, @@ -1604,6 +1608,10 @@ USB_DEVICE (0x2001, 0x3c05), .driver_info = (unsigned long) &ax88772_info, }, { + // DLink DUB-E100 H/W Ver C1 + USB_DEVICE (0x2001, 0x1a02), + .driver_info = (unsigned long) &ax88772_info, +}, { // Linksys USB1000 USB_DEVICE (0x1737, 0x0039), .driver_info = (unsigned long) &ax88178_info, --- linux-3.5.0.orig/drivers/net/usb/kaweth.c +++ linux-3.5.0/drivers/net/usb/kaweth.c @@ -1314,7 +1314,7 @@ int retv; int length = 0; /* shut up GCC */ - urb = usb_alloc_urb(0, GFP_NOIO); + urb = usb_alloc_urb(0, GFP_ATOMIC); if (!urb) return -ENOMEM; --- linux-3.5.0.orig/drivers/net/usb/ipheth.c +++ linux-3.5.0/drivers/net/usb/ipheth.c @@ -62,6 +62,7 @@ #define USB_PRODUCT_IPAD 0x129a #define USB_PRODUCT_IPHONE_4_VZW 0x129c #define USB_PRODUCT_IPHONE_4S 0x12a0 +#define USB_PRODUCT_IPHONE_5 0x12a8 #define IPHETH_USBINTF_CLASS 255 #define IPHETH_USBINTF_SUBCLASS 253 @@ -113,6 +114,10 @@ USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_4S, IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, IPHETH_USBINTF_PROTO) }, + { USB_DEVICE_AND_INTERFACE_INFO( + USB_VENDOR_APPLE, USB_PRODUCT_IPHONE_5, + IPHETH_USBINTF_CLASS, IPHETH_USBINTF_SUBCLASS, + IPHETH_USBINTF_PROTO) }, { } }; MODULE_DEVICE_TABLE(usb, ipheth_table); --- linux-3.5.0.orig/drivers/net/ppp/pptp.c +++ linux-3.5.0/drivers/net/ppp/pptp.c @@ -189,7 +189,7 @@ if (sk_pppox(po)->sk_state & PPPOX_DEAD) goto tx_error; - rt = ip_route_output_ports(&init_net, &fl4, NULL, + rt = ip_route_output_ports(sock_net(sk), &fl4, NULL, opt->dst_addr.sin_addr.s_addr, opt->src_addr.sin_addr.s_addr, 0, 0, IPPROTO_GRE, @@ -468,7 +468,7 @@ po->chan.private = sk; po->chan.ops = &pptp_chan_ops; - rt = ip_route_output_ports(&init_net, &fl4, sk, + rt = ip_route_output_ports(sock_net(sk), &fl4, sk, opt->dst_addr.sin_addr.s_addr, opt->src_addr.sin_addr.s_addr, 0, 0, --- linux-3.5.0.orig/drivers/net/ppp/pppoe.c +++ linux-3.5.0/drivers/net/ppp/pppoe.c @@ -570,7 +570,7 @@ po = pppox_sk(sk); - if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { + if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) { dev_put(po->pppoe_dev); po->pppoe_dev = NULL; } --- linux-3.5.0.orig/drivers/net/xen-netback/netback.c +++ linux-3.5.0/drivers/net/xen-netback/netback.c @@ -146,7 +146,8 @@ atomic_dec(&netbk->netfront_count); } -static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx); +static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx, + u8 status); static void make_tx_response(struct xenvif *vif, struct xen_netif_tx_request *txp, s8 st); @@ -850,7 +851,7 @@ do { make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - if (cons >= end) + if (cons == end) break; txp = RING_GET_REQUEST(&vif->tx, cons++); } while (1); @@ -859,6 +860,13 @@ xenvif_put(vif); } +static void netbk_fatal_tx_err(struct xenvif *vif) +{ + netdev_err(vif->dev, "fatal error; disabling device\n"); + xenvif_carrier_off(vif); + xenvif_put(vif); +} + static int netbk_count_requests(struct xenvif *vif, struct xen_netif_tx_request *first, struct xen_netif_tx_request *txp, @@ -872,29 +880,33 @@ do { if (frags >= work_to_do) { - netdev_dbg(vif->dev, "Need more frags\n"); - return -frags; + netdev_err(vif->dev, "Need more frags\n"); + netbk_fatal_tx_err(vif); + return -ENODATA; } if (unlikely(frags >= MAX_SKB_FRAGS)) { - netdev_dbg(vif->dev, "Too many frags\n"); - return -frags; + netdev_err(vif->dev, "Too many frags\n"); + netbk_fatal_tx_err(vif); + return -E2BIG; } memcpy(txp, RING_GET_REQUEST(&vif->tx, cons + frags), sizeof(*txp)); if (txp->size > first->size) { - netdev_dbg(vif->dev, "Frags galore\n"); - return -frags; + netdev_err(vif->dev, "Frag is bigger than frame.\n"); + netbk_fatal_tx_err(vif); + return -EIO; } first->size -= txp->size; frags++; if (unlikely((txp->offset + txp->size) > PAGE_SIZE)) { - netdev_dbg(vif->dev, "txp->offset: %x, size: %u\n", + netdev_err(vif->dev, "txp->offset: %x, size: %u\n", txp->offset, txp->size); - return -frags; + netbk_fatal_tx_err(vif); + return -EINVAL; } } while ((txp++)->flags & XEN_NETTXF_more_data); return frags; @@ -937,7 +949,7 @@ pending_idx = netbk->pending_ring[index]; page = xen_netbk_alloc_page(netbk, skb, pending_idx); if (!page) - return NULL; + goto err; gop->source.u.ref = txp->gref; gop->source.domid = vif->domid; @@ -959,6 +971,20 @@ } return gop; +err: + /* + * Unwind, freeing all pages and sending error + * reponses. + */ + while (i-- > start) { + xen_netbk_idx_release(netbk, frag_get_pending_idx(&frags[i]), + XEN_NETIF_RSP_ERROR); + } + /* The head too, if necessary. */ + if (start) + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); + + return NULL; } static int xen_netbk_tx_check_gop(struct xen_netbk *netbk, @@ -967,30 +993,20 @@ { struct gnttab_copy *gop = *gopp; u16 pending_idx = *((u16 *)skb->data); - struct pending_tx_info *pending_tx_info = netbk->pending_tx_info; - struct xenvif *vif = pending_tx_info[pending_idx].vif; - struct xen_netif_tx_request *txp; struct skb_shared_info *shinfo = skb_shinfo(skb); int nr_frags = shinfo->nr_frags; int i, err, start; /* Check status of header. */ err = gop->status; - if (unlikely(err)) { - pending_ring_idx_t index; - index = pending_index(netbk->pending_prod++); - txp = &pending_tx_info[pending_idx].req; - make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - netbk->pending_ring[index] = pending_idx; - xenvif_put(vif); - } + if (unlikely(err)) + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); /* Skip first skb fragment if it is on same page as header fragment. */ start = (frag_get_pending_idx(&shinfo->frags[0]) == pending_idx); for (i = start; i < nr_frags; i++) { int j, newerr; - pending_ring_idx_t index; pending_idx = frag_get_pending_idx(&shinfo->frags[i]); @@ -999,16 +1015,12 @@ if (likely(!newerr)) { /* Had a previous error? Invalidate this fragment. */ if (unlikely(err)) - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); continue; } /* Error on this fragment: respond to client with an error. */ - txp = &netbk->pending_tx_info[pending_idx].req; - make_tx_response(vif, txp, XEN_NETIF_RSP_ERROR); - index = pending_index(netbk->pending_prod++); - netbk->pending_ring[index] = pending_idx; - xenvif_put(vif); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_ERROR); /* Not the first error? Preceding frags already invalidated. */ if (err) @@ -1016,10 +1028,10 @@ /* First error: invalidate header and preceding fragments. */ pending_idx = *((u16 *)skb->data); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); for (j = start; j < i; j++) { pending_idx = frag_get_pending_idx(&shinfo->frags[j]); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } /* Remember the error: invalidate all subsequent fragments. */ @@ -1053,7 +1065,7 @@ /* Take an extra reference to offset xen_netbk_idx_release */ get_page(netbk->mmap_pages[pending_idx]); - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } } @@ -1066,7 +1078,8 @@ do { if (unlikely(work_to_do-- <= 0)) { - netdev_dbg(vif->dev, "Missing extra info\n"); + netdev_err(vif->dev, "Missing extra info\n"); + netbk_fatal_tx_err(vif); return -EBADR; } @@ -1075,8 +1088,9 @@ if (unlikely(!extra.type || extra.type >= XEN_NETIF_EXTRA_TYPE_MAX)) { vif->tx.req_cons = ++cons; - netdev_dbg(vif->dev, + netdev_err(vif->dev, "Invalid extra type: %d\n", extra.type); + netbk_fatal_tx_err(vif); return -EINVAL; } @@ -1092,13 +1106,15 @@ struct xen_netif_extra_info *gso) { if (!gso->u.gso.size) { - netdev_dbg(vif->dev, "GSO size must not be zero.\n"); + netdev_err(vif->dev, "GSO size must not be zero.\n"); + netbk_fatal_tx_err(vif); return -EINVAL; } /* Currently only TCPv4 S.O. is supported. */ if (gso->u.gso.type != XEN_NETIF_GSO_TYPE_TCPV4) { - netdev_dbg(vif->dev, "Bad GSO type %d.\n", gso->u.gso.type); + netdev_err(vif->dev, "Bad GSO type %d.\n", gso->u.gso.type); + netbk_fatal_tx_err(vif); return -EINVAL; } @@ -1235,9 +1251,26 @@ /* Get a netif from the list with work to do. */ vif = poll_net_schedule_list(netbk); + /* + * This can sometimes happen because the test of + * list_empty(net_schedule_list) at the top of the + * loop is unlocked. Just go back and have another + * look. + */ if (!vif) continue; + if (vif->tx.sring->req_prod - vif->tx.req_cons > + XEN_NETIF_TX_RING_SIZE) { + netdev_err(vif->dev, + "Impossible number of requests. " + "req_prod %d, req_cons %d, size %ld\n", + vif->tx.sring->req_prod, vif->tx.req_cons, + XEN_NETIF_TX_RING_SIZE); + netbk_fatal_tx_err(vif); + continue; + } + RING_FINAL_CHECK_FOR_REQUESTS(&vif->tx, work_to_do); if (!work_to_do) { xenvif_put(vif); @@ -1265,17 +1298,14 @@ work_to_do = xen_netbk_get_extras(vif, extras, work_to_do); idx = vif->tx.req_cons; - if (unlikely(work_to_do < 0)) { - netbk_tx_err(vif, &txreq, idx); + if (unlikely(work_to_do < 0)) continue; - } } ret = netbk_count_requests(vif, &txreq, txfrags, work_to_do); - if (unlikely(ret < 0)) { - netbk_tx_err(vif, &txreq, idx - ret); + if (unlikely(ret < 0)) continue; - } + idx += ret; if (unlikely(txreq.size < ETH_HLEN)) { @@ -1287,11 +1317,11 @@ /* No crossing a page as the payload mustn't fragment. */ if (unlikely((txreq.offset + txreq.size) > PAGE_SIZE)) { - netdev_dbg(vif->dev, + netdev_err(vif->dev, "txreq.offset: %x, size: %u, end: %lu\n", txreq.offset, txreq.size, (txreq.offset&~PAGE_MASK) + txreq.size); - netbk_tx_err(vif, &txreq, idx); + netbk_fatal_tx_err(vif); continue; } @@ -1319,8 +1349,8 @@ gso = &extras[XEN_NETIF_EXTRA_TYPE_GSO - 1]; if (netbk_set_skb_gso(vif, skb, gso)) { + /* Failure in netbk_set_skb_gso is fatal. */ kfree_skb(skb); - netbk_tx_err(vif, &txreq, idx); continue; } } @@ -1419,7 +1449,7 @@ txp->size -= data_len; } else { /* Schedule a response immediately. */ - xen_netbk_idx_release(netbk, pending_idx); + xen_netbk_idx_release(netbk, pending_idx, XEN_NETIF_RSP_OKAY); } if (txp->flags & XEN_NETTXF_csum_blank) @@ -1474,7 +1504,8 @@ } -static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx) +static void xen_netbk_idx_release(struct xen_netbk *netbk, u16 pending_idx, + u8 status) { struct xenvif *vif; struct pending_tx_info *pending_tx_info; @@ -1488,7 +1519,7 @@ vif = pending_tx_info->vif; - make_tx_response(vif, &pending_tx_info->req, XEN_NETIF_RSP_OKAY); + make_tx_response(vif, &pending_tx_info->req, status); index = pending_index(netbk->pending_prod++); netbk->pending_ring[index] = pending_idx; --- linux-3.5.0.orig/drivers/net/xen-netback/interface.c +++ linux-3.5.0/drivers/net/xen-netback/interface.c @@ -132,6 +132,7 @@ static void xenvif_down(struct xenvif *vif) { disable_irq(vif->irq); + del_timer_sync(&vif->credit_timeout); xen_netbk_deschedule_xenvif(vif); xen_netbk_remove_xenvif(vif); } @@ -343,23 +344,26 @@ return err; } -void xenvif_disconnect(struct xenvif *vif) +void xenvif_carrier_off(struct xenvif *vif) { struct net_device *dev = vif->dev; - if (netif_carrier_ok(dev)) { - rtnl_lock(); - netif_carrier_off(dev); /* discard queued packets */ - if (netif_running(dev)) - xenvif_down(vif); - rtnl_unlock(); - xenvif_put(vif); - } + + rtnl_lock(); + netif_carrier_off(dev); /* discard queued packets */ + if (netif_running(dev)) + xenvif_down(vif); + rtnl_unlock(); + xenvif_put(vif); +} + +void xenvif_disconnect(struct xenvif *vif) +{ + if (netif_carrier_ok(vif->dev)) + xenvif_carrier_off(vif); atomic_dec(&vif->refcnt); wait_event(vif->waiting_to_free, atomic_read(&vif->refcnt) == 0); - del_timer_sync(&vif->credit_timeout); - if (vif->irq) unbind_from_irqhandler(vif->irq, vif); --- linux-3.5.0.orig/drivers/net/xen-netback/common.h +++ linux-3.5.0/drivers/net/xen-netback/common.h @@ -151,6 +151,9 @@ /* Notify xenvif that ring now has space to send an skb to the frontend */ void xenvif_notify_tx_completion(struct xenvif *vif); +/* Prevent the device from generating any further traffic. */ +void xenvif_carrier_off(struct xenvif *vif); + /* Returns number of ring slots required to send an skb to the frontend */ unsigned int xen_netbk_count_skb_slots(struct xenvif *vif, struct sk_buff *skb); --- linux-3.5.0.orig/drivers/net/wimax/i2400m/i2400m-usb.h +++ linux-3.5.0/drivers/net/wimax/i2400m/i2400m-usb.h @@ -152,6 +152,9 @@ /* Device IDs */ USB_DEVICE_ID_I6050 = 0x0186, USB_DEVICE_ID_I6050_2 = 0x0188, + USB_DEVICE_ID_I6150 = 0x07d6, + USB_DEVICE_ID_I6150_2 = 0x07d7, + USB_DEVICE_ID_I6150_3 = 0x07d9, USB_DEVICE_ID_I6250 = 0x0187, }; --- linux-3.5.0.orig/drivers/net/wimax/i2400m/usb.c +++ linux-3.5.0/drivers/net/wimax/i2400m/usb.c @@ -510,6 +510,9 @@ switch (id->idProduct) { case USB_DEVICE_ID_I6050: case USB_DEVICE_ID_I6050_2: + case USB_DEVICE_ID_I6150: + case USB_DEVICE_ID_I6150_2: + case USB_DEVICE_ID_I6150_3: case USB_DEVICE_ID_I6250: i2400mu->i6050 = 1; break; @@ -759,6 +762,9 @@ struct usb_device_id i2400mu_id_table[] = { { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050) }, { USB_DEVICE(0x8086, USB_DEVICE_ID_I6050_2) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150_2) }, + { USB_DEVICE(0x8087, USB_DEVICE_ID_I6150_3) }, { USB_DEVICE(0x8086, USB_DEVICE_ID_I6250) }, { USB_DEVICE(0x8086, 0x0181) }, { USB_DEVICE(0x8086, 0x1403) }, --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/cfg80211.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/cfg80211.c @@ -634,9 +634,9 @@ /* * Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid - * MCS index values for us are 0 to 7. + * MCS index values for us are 0 to 15. */ - if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 8)) { + if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 16)) { sinfo->txrate.mcs = priv->tx_rate; sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS; /* 40MHz rate */ --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/pcie.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/pcie.c @@ -161,7 +161,7 @@ if (pdev) { card = (struct pcie_service_card *) pci_get_drvdata(pdev); - if (!card || card->adapter) { + if (!card || !card->adapter) { pr_err("Card or adapter structure is not valid\n"); return 0; } --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/scan.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/scan.c @@ -1553,7 +1553,7 @@ dev_err(adapter->dev, "SCAN_RESP: too many AP returned (%d)\n", scan_rsp->number_of_sets); ret = -1; - goto done; + goto check_next_scan; } bytes_left = le16_to_cpu(scan_rsp->bss_descript_size); @@ -1624,7 +1624,8 @@ if (!beacon_size || beacon_size > bytes_left) { bss_info += bytes_left; bytes_left = 0; - return -1; + ret = -1; + goto check_next_scan; } /* Initialize the current working beacon pointer for this BSS @@ -1680,7 +1681,7 @@ dev_err(priv->adapter->dev, "%s: bytes left < IE length\n", __func__); - goto done; + goto check_next_scan; } if (element_id == WLAN_EID_DS_PARAMS) { channel = *(u8 *) (current_ptr + @@ -1744,6 +1745,7 @@ } } +check_next_scan: spin_lock_irqsave(&adapter->scan_pending_q_lock, flags); if (list_empty(&adapter->scan_pending_q)) { spin_unlock_irqrestore(&adapter->scan_pending_q_lock, flags); @@ -1782,7 +1784,6 @@ mwifiex_insert_cmd_to_pending_q(adapter, cmd_node, true); } -done: return ret; } --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/sdio.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/sdio.c @@ -161,7 +161,6 @@ struct sdio_mmc_card *card; struct mwifiex_adapter *adapter; mmc_pm_flag_t pm_flag = 0; - int hs_actived = 0; int i; int ret = 0; @@ -188,12 +187,14 @@ adapter = card->adapter; /* Enable the Host Sleep */ - hs_actived = mwifiex_enable_hs(adapter); - if (hs_actived) { - pr_debug("cmd: suspend with MMC_PM_KEEP_POWER\n"); - ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); + if (!mwifiex_enable_hs(adapter)) { + dev_err(adapter->dev, "cmd: failed to suspend\n"); + return -EFAULT; } + dev_dbg(adapter->dev, "cmd: suspend with MMC_PM_KEEP_POWER\n"); + ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER); + /* Indicate device suspended */ adapter->is_suspended = true; --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/sta_ioctl.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/sta_ioctl.c @@ -53,7 +53,6 @@ */ int mwifiex_wait_queue_complete(struct mwifiex_adapter *adapter) { - bool cancel_flag = false; int status; struct cmd_ctrl_node *cmd_queued; @@ -70,14 +69,11 @@ queue_work(adapter->workqueue, &adapter->main_work); /* Wait for completion */ - wait_event_interruptible(adapter->cmd_wait_q.wait, - *(cmd_queued->condition)); - if (!*(cmd_queued->condition)) - cancel_flag = true; - - if (cancel_flag) { - mwifiex_cancel_pending_ioctl(adapter); - dev_dbg(adapter->dev, "cmd cancel\n"); + status = wait_event_interruptible(adapter->cmd_wait_q.wait, + *(cmd_queued->condition)); + if (status) { + dev_err(adapter->dev, "cmd_wait_q terminated: %d\n", status); + return status; } status = adapter->cmd_wait_q.status; @@ -430,8 +426,11 @@ return false; } - wait_event_interruptible(adapter->hs_activate_wait_q, - adapter->hs_activate_wait_q_woken); + if (wait_event_interruptible(adapter->hs_activate_wait_q, + adapter->hs_activate_wait_q_woken)) { + dev_err(adapter->dev, "hs_activate_wait_q terminated\n"); + return false; + } return true; } --- linux-3.5.0.orig/drivers/net/wireless/mwifiex/cmdevt.c +++ linux-3.5.0/drivers/net/wireless/mwifiex/cmdevt.c @@ -873,9 +873,6 @@ return; } cmd_node = adapter->curr_cmd; - if (cmd_node->wait_q_enabled) - adapter->cmd_wait_q.status = -ETIMEDOUT; - if (cmd_node) { adapter->dbg.timeout_cmd_id = adapter->dbg.last_cmd_id[adapter->dbg.last_cmd_index]; @@ -921,6 +918,14 @@ dev_err(adapter->dev, "ps_mode=%d ps_state=%d\n", adapter->ps_mode, adapter->ps_state); + + if (cmd_node->wait_q_enabled) { + adapter->cmd_wait_q.status = -ETIMEDOUT; + wake_up_interruptible(&adapter->cmd_wait_q.wait); + mwifiex_cancel_pending_ioctl(adapter); + /* reset cmd_sent flag to unblock new commands */ + adapter->cmd_sent = false; + } } if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) mwifiex_init_fw_complete(adapter); --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/base.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/base.c @@ -980,7 +980,8 @@ is_tx ? "Tx" : "Rx"); if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv-> + works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } @@ -990,7 +991,7 @@ } } else if (ETH_P_ARP == ether_type) { if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv->works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } @@ -1000,7 +1001,7 @@ "802.1X %s EAPOL pkt!!\n", is_tx ? "Tx" : "Rx"); if (is_tx) { - rtl_lps_leave(hw); + schedule_work(&rtlpriv->works.lps_leave_work); ppsc->last_delaylps_stamp_jiffies = jiffies; } --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/wifi.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/wifi.h @@ -1555,6 +1555,7 @@ spinlock_t rf_ps_lock; spinlock_t rf_lock; spinlock_t waitq_lock; + spinlock_t usb_lock; /*Dual mac*/ spinlock_t cck_and_rw_pagea_lock; --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/usb.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/usb.c @@ -42,8 +42,12 @@ static void usbctrl_async_callback(struct urb *urb) { - if (urb) - kfree(urb->context); + if (urb) { + /* free dr */ + kfree(urb->setup_packet); + /* free databuf */ + kfree(urb->transfer_buffer); + } } static int _usbctrl_vendorreq_async_write(struct usb_device *udev, u8 request, @@ -55,39 +59,47 @@ u8 reqtype; struct usb_ctrlrequest *dr; struct urb *urb; - struct rtl819x_async_write_data { - u8 data[REALTEK_USB_VENQT_MAX_BUF_SIZE]; - struct usb_ctrlrequest dr; - } *buf; + const u16 databuf_maxlen = REALTEK_USB_VENQT_MAX_BUF_SIZE; + u8 *databuf; + + if (WARN_ON_ONCE(len > databuf_maxlen)) + len = databuf_maxlen; pipe = usb_sndctrlpipe(udev, 0); /* write_out */ reqtype = REALTEK_USB_VENQT_WRITE; - buf = kmalloc(sizeof(*buf), GFP_ATOMIC); - if (!buf) + dr = kmalloc(sizeof(*dr), GFP_ATOMIC); + if (!dr) return -ENOMEM; + databuf = kmalloc(databuf_maxlen, GFP_ATOMIC); + if (!databuf) { + kfree(dr); + return -ENOMEM; + } + urb = usb_alloc_urb(0, GFP_ATOMIC); if (!urb) { - kfree(buf); + kfree(databuf); + kfree(dr); return -ENOMEM; } - dr = &buf->dr; - dr->bRequestType = reqtype; dr->bRequest = request; dr->wValue = cpu_to_le16(value); dr->wIndex = cpu_to_le16(index); dr->wLength = cpu_to_le16(len); /* data are already in little-endian order */ - memcpy(buf, pdata, len); + memcpy(databuf, pdata, len); usb_fill_control_urb(urb, udev, pipe, - (unsigned char *)dr, buf, len, - usbctrl_async_callback, buf); + (unsigned char *)dr, databuf, len, + usbctrl_async_callback, NULL); rc = usb_submit_urb(urb, GFP_ATOMIC); - if (rc < 0) - kfree(buf); + if (rc < 0) { + kfree(databuf); + kfree(dr); + } usb_free_urb(urb); return rc; } @@ -131,15 +143,19 @@ u8 request; u16 wvalue; u16 index; - __le32 *data = &rtlpriv->usb_data[rtlpriv->usb_data_index]; + __le32 *data; + unsigned long flags; + spin_lock_irqsave(&rtlpriv->locks.usb_lock, flags); + if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT) + rtlpriv->usb_data_index = 0; + data = &rtlpriv->usb_data[rtlpriv->usb_data_index]; + spin_unlock_irqrestore(&rtlpriv->locks.usb_lock, flags); request = REALTEK_USB_VENQT_CMD_REQ; index = REALTEK_USB_VENQT_CMD_IDX; /* n/a */ wvalue = (u16)addr; _usbctrl_vendorreq_sync_read(udev, request, wvalue, index, data, len); - if (++rtlpriv->usb_data_index >= RTL_USB_MAX_RX_COUNT) - rtlpriv->usb_data_index = 0; return le32_to_cpu(*data); } @@ -206,17 +222,16 @@ u16 index = REALTEK_USB_VENQT_CMD_IDX; int pipe = usb_sndctrlpipe(udev, 0); /* write_out */ u8 *buffer; - dma_addr_t dma_addr; - wvalue = (u16)(addr&0x0000ffff); - buffer = usb_alloc_coherent(udev, (size_t)len, GFP_ATOMIC, &dma_addr); + wvalue = (u16)(addr & 0x0000ffff); + buffer = kmalloc(len, GFP_ATOMIC); if (!buffer) return; memcpy(buffer, data, len); usb_control_msg(udev, pipe, request, reqtype, wvalue, index, buffer, len, 50); - usb_free_coherent(udev, (size_t)len, buffer, dma_addr); + kfree(buffer); } static void _rtl_usb_io_handler_init(struct device *dev, @@ -539,8 +554,8 @@ WARN_ON(skb_queue_empty(&rx_queue)); while (!skb_queue_empty(&rx_queue)) { _skb = skb_dequeue(&rx_queue); - _rtl_usb_rx_process_agg(hw, skb); - ieee80211_rx_irqsafe(hw, skb); + _rtl_usb_rx_process_agg(hw, _skb); + ieee80211_rx_irqsafe(hw, _skb); } } @@ -932,7 +947,8 @@ }; int __devinit rtl_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id) + const struct usb_device_id *id, + struct rtl_hal_cfg *rtl_hal_cfg) { int err; struct ieee80211_hw *hw = NULL; @@ -951,6 +967,10 @@ GFP_KERNEL); if (!rtlpriv->usb_data) return -ENOMEM; + + /* this spin lock must be initialized early */ + spin_lock_init(&rtlpriv->locks.usb_lock); + rtlpriv->usb_data_index = 0; init_completion(&rtlpriv->firmware_loading_complete); SET_IEEE80211_DEV(hw, &intf->dev); @@ -963,7 +983,7 @@ usb_set_intfdata(intf, hw); /* init cfg & intf_ops */ rtlpriv->rtlhal.interface = INTF_USB; - rtlpriv->cfg = (struct rtl_hal_cfg *)(id->driver_info); + rtlpriv->cfg = rtl_hal_cfg; rtlpriv->intf_ops = &rtl_usb_ops; rtl_dbgp_flag_init(hw); /* Init IO handler */ --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/usb.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/usb.h @@ -157,7 +157,8 @@ int __devinit rtl_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id); + const struct usb_device_id *id, + struct rtl_hal_cfg *rtl92cu_hal_cfg); void rtl_usb_disconnect(struct usb_interface *intf); int rtl_usb_suspend(struct usb_interface *pusb_intf, pm_message_t message); int rtl_usb_resume(struct usb_interface *pusb_intf); --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/def.h +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/def.h @@ -117,6 +117,7 @@ #define CHIP_VER_B BIT(4) #define CHIP_92C_BITMASK BIT(0) +#define CHIP_UNKNOWN BIT(7) #define CHIP_92C_1T2R 0x03 #define CHIP_92C 0x01 #define CHIP_88C 0x00 --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/hw.c @@ -995,8 +995,16 @@ version = (value32 & TYPE_ID) ? VERSION_A_CHIP_92C : VERSION_A_CHIP_88C; } else { - version = (value32 & TYPE_ID) ? VERSION_B_CHIP_92C : - VERSION_B_CHIP_88C; + version = (enum version_8192c) (CHIP_VER_B | + ((value32 & TYPE_ID) ? CHIP_92C_BITMASK : 0) | + ((value32 & VENDOR_ID) ? CHIP_VENDOR_UMC : 0)); + if ((!IS_CHIP_VENDOR_UMC(version)) && (value32 & + CHIP_VER_RTL_MASK)) { + version = (enum version_8192c)(version | + ((((value32 & CHIP_VER_RTL_MASK) == BIT(12)) + ? CHIP_VENDOR_UMC_B_CUT : CHIP_UNKNOWN) | + CHIP_VENDOR_UMC)); + } } switch (version) { --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c @@ -162,10 +162,12 @@ /* request fw */ if (IS_VENDOR_UMC_A_CUT(rtlhal->version) && - !IS_92C_SERIAL(rtlhal->version)) + !IS_92C_SERIAL(rtlhal->version)) { rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU.bin"; - else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) + } else if (IS_81xxC_VENDOR_UMC_B_CUT(rtlhal->version)) { rtlpriv->cfg->fw_name = "rtlwifi/rtl8192cfwU_B.bin"; + pr_info("****** This B_CUT device may not work with kernels 3.6 and earlier\n"); + } rtlpriv->max_fw_size = 0x4000; pr_info("Using firmware %s\n", rtlpriv->cfg->fw_name); --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c @@ -285,6 +285,7 @@ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x817f, rtl92cu_hal_cfg)}, /* RTL8188CUS-VL */ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x818a, rtl92cu_hal_cfg)}, + {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x819a, rtl92cu_hal_cfg)}, /* 8188 Combo for BC4 */ {RTL_USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8754, rtl92cu_hal_cfg)}, @@ -297,6 +298,7 @@ /*=== Customer ID ===*/ /****** 8188CU ********/ {RTL_USB_DEVICE(0x050d, 0x1102, rtl92cu_hal_cfg)}, /*Belkin - Edimax*/ + {RTL_USB_DEVICE(0x050d, 0x11f2, rtl92cu_hal_cfg)}, /*Belkin - ISY*/ {RTL_USB_DEVICE(0x06f8, 0xe033, rtl92cu_hal_cfg)}, /*Hercules - Edimax*/ {RTL_USB_DEVICE(0x07b8, 0x8188, rtl92cu_hal_cfg)}, /*Abocom - Abocom*/ {RTL_USB_DEVICE(0x07b8, 0x8189, rtl92cu_hal_cfg)}, /*Funai - Abocom*/ @@ -362,9 +364,15 @@ MODULE_DEVICE_TABLE(usb, rtl8192c_usb_ids); +static int rtl8192cu_probe(struct usb_interface *intf, + const struct usb_device_id *id) +{ + return rtl_usb_probe(intf, id, &rtl92cu_hal_cfg); +} + static struct usb_driver rtl8192cu_driver = { .name = "rtl8192cu", - .probe = rtl_usb_probe, + .probe = rtl8192cu_probe, .disconnect = rtl_usb_disconnect, .id_table = rtl8192c_usb_ids, --- linux-3.5.0.orig/drivers/net/wireless/rtlwifi/rtl8192de/phy.c +++ linux-3.5.0/drivers/net/wireless/rtlwifi/rtl8192de/phy.c @@ -3345,21 +3345,21 @@ switch (rtlhal->macphymode) { case DUALMAC_SINGLEPHY: rtlphy->rf_type = RF_2T2R; - rtlhal->version |= CHIP_92D_SINGLEPHY; + rtlhal->version |= RF_TYPE_2T2R; rtlhal->bandset = BAND_ON_BOTH; rtlhal->current_bandtype = BAND_ON_2_4G; break; case SINGLEMAC_SINGLEPHY: rtlphy->rf_type = RF_2T2R; - rtlhal->version |= CHIP_92D_SINGLEPHY; + rtlhal->version |= RF_TYPE_2T2R; rtlhal->bandset = BAND_ON_BOTH; rtlhal->current_bandtype = BAND_ON_2_4G; break; case DUALMAC_DUALPHY: rtlphy->rf_type = RF_1T1R; - rtlhal->version &= (~CHIP_92D_SINGLEPHY); + rtlhal->version &= RF_TYPE_1T1R; /* Now we let MAC0 run on 5G band. */ if (rtlhal->interfaceindex == 0) { rtlhal->bandset = BAND_ON_5G; --- linux-3.5.0.orig/drivers/net/wireless/iwlegacy/common.c +++ linux-3.5.0/drivers/net/wireless/iwlegacy/common.c @@ -3957,17 +3957,21 @@ memset(&il->staging, 0, sizeof(il->staging)); - if (!il->vif) { + switch (il->iw_mode) { + case NL80211_IFTYPE_UNSPECIFIED: il->staging.dev_type = RXON_DEV_TYPE_ESS; - } else if (il->vif->type == NL80211_IFTYPE_STATION) { + break; + case NL80211_IFTYPE_STATION: il->staging.dev_type = RXON_DEV_TYPE_ESS; il->staging.filter_flags = RXON_FILTER_ACCEPT_GRP_MSK; - } else if (il->vif->type == NL80211_IFTYPE_ADHOC) { + break; + case NL80211_IFTYPE_ADHOC: il->staging.dev_type = RXON_DEV_TYPE_IBSS; il->staging.flags = RXON_FLG_SHORT_PREAMBLE_MSK; il->staging.filter_flags = RXON_FILTER_BCON_AWARE_MSK | RXON_FILTER_ACCEPT_GRP_MSK; - } else { + break; + default: IL_ERR("Unsupported interface type %d\n", il->vif->type); return; } @@ -4550,8 +4554,7 @@ EXPORT_SYMBOL(il_mac_add_interface); static void -il_teardown_interface(struct il_priv *il, struct ieee80211_vif *vif, - bool mode_change) +il_teardown_interface(struct il_priv *il, struct ieee80211_vif *vif) { lockdep_assert_held(&il->mutex); @@ -4560,9 +4563,7 @@ il_force_scan_end(il); } - if (!mode_change) - il_set_mode(il); - + il_set_mode(il); } void @@ -4575,8 +4576,8 @@ WARN_ON(il->vif != vif); il->vif = NULL; - - il_teardown_interface(il, vif, false); + il->iw_mode = NL80211_IFTYPE_UNSPECIFIED; + il_teardown_interface(il, vif); memset(il->bssid, 0, ETH_ALEN); D_MAC80211("leave\n"); @@ -4685,18 +4686,10 @@ } /* success */ - il_teardown_interface(il, vif, true); vif->type = newtype; vif->p2p = false; - err = il_set_mode(il); - WARN_ON(err); - /* - * We've switched internally, but submitting to the - * device may have failed for some reason. Mask this - * error, because otherwise mac80211 will not switch - * (and set the interface type back) and we'll be - * out of sync with it. - */ + il->iw_mode = newtype; + il_teardown_interface(il, vif); err = 0; out: --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800pci.c @@ -977,6 +977,7 @@ static int rt2800pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -990,6 +991,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIO_CTRL_CFG, ®); + rt2x00_set_field32(®, GPIO_CTRL_CFG_GPIOD_BIT2, 1); + rt2x00pci_register_write(rt2x00dev, GPIO_CTRL_CFG, reg); + + /* * Initialize hw specifications. */ retval = rt2800_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2400pci.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2400pci.h @@ -670,6 +670,7 @@ #define GPIOCSR_BIT5 FIELD32(0x00000020) #define GPIOCSR_BIT6 FIELD32(0x00000040) #define GPIOCSR_BIT7 FIELD32(0x00000080) +#define GPIOCSR_BIT8 FIELD32(0x00000100) /* * BBPPCSR: BBP Pin control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt73usb.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt73usb.h @@ -282,6 +282,9 @@ #define MAC_CSR13_BIT10 FIELD32(0x00000400) #define MAC_CSR13_BIT11 FIELD32(0x00000800) #define MAC_CSR13_BIT12 FIELD32(0x00001000) +#define MAC_CSR13_BIT13 FIELD32(0x00002000) +#define MAC_CSR13_BIT14 FIELD32(0x00004000) +#define MAC_CSR13_BIT15 FIELD32(0x00008000) /* * MAC_CSR14: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2400pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2400pci.c @@ -1611,6 +1611,7 @@ static int rt2400pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -1624,6 +1625,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); + rt2x00_set_field32(®, GPIOCSR_BIT8, 1); + rt2x00pci_register_write(rt2x00dev, GPIOCSR, reg); + + /* * Initialize hw specifications. */ retval = rt2400pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800usb.c @@ -667,8 +667,16 @@ skb_pull(entry->skb, RXINFO_DESC_SIZE); /* - * FIXME: we need to check for rx_pkt_len validity + * Check for rx_pkt_len validity. Return if invalid, leaving + * rxdesc->size zeroed out by the upper level. */ + if (unlikely(rx_pkt_len == 0 || + rx_pkt_len > entry->queue->data_size)) { + ERROR(entry->queue->rt2x00dev, + "Bad frame size %d, forcing to 0\n", rx_pkt_len); + return; + } + rxd = (__le32 *)(entry->skb->data + rx_pkt_len); /* @@ -736,6 +744,7 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -749,6 +758,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00usb_register_read(rt2x00dev, GPIO_CTRL_CFG, ®); + rt2x00_set_field32(®, GPIO_CTRL_CFG_GPIOD_BIT2, 1); + rt2x00usb_register_write(rt2x00dev, GPIO_CTRL_CFG, reg); + + /* * Initialize hw specifications. */ retval = rt2800_probe_hw_mode(rt2x00dev); @@ -971,6 +988,7 @@ { USB_DEVICE(0x0411, 0x015d) }, { USB_DEVICE(0x0411, 0x016f) }, { USB_DEVICE(0x0411, 0x01a2) }, + { USB_DEVICE(0x0411, 0x01ee) }, /* Corega */ { USB_DEVICE(0x07aa, 0x002f) }, { USB_DEVICE(0x07aa, 0x003c) }, @@ -987,6 +1005,7 @@ { USB_DEVICE(0x07d1, 0x3c15) }, { USB_DEVICE(0x07d1, 0x3c16) }, { USB_DEVICE(0x2001, 0x3c1b) }, + { USB_DEVICE(0x2001, 0x3c1e) }, /* Draytek */ { USB_DEVICE(0x07fa, 0x7712) }, /* DVICO */ @@ -1137,6 +1156,8 @@ #ifdef CONFIG_RT2800USB_RT33XX /* Belkin */ { USB_DEVICE(0x050d, 0x945b) }, + /* D-Link */ + { USB_DEVICE(0x2001, 0x3c17) }, /* Panasonic */ { USB_DEVICE(0x083a, 0xb511) }, /* Philips */ @@ -1154,6 +1175,8 @@ { USB_DEVICE(0x1690, 0x0744) }, { USB_DEVICE(0x1690, 0x0761) }, { USB_DEVICE(0x1690, 0x0764) }, + /* ASUS */ + { USB_DEVICE(0x0b05, 0x179d) }, /* Cisco */ { USB_DEVICE(0x167b, 0x4001) }, /* EnGenius */ @@ -1219,7 +1242,6 @@ { USB_DEVICE(0x0b05, 0x1760) }, { USB_DEVICE(0x0b05, 0x1761) }, { USB_DEVICE(0x0b05, 0x1790) }, - { USB_DEVICE(0x0b05, 0x179d) }, /* AzureWave */ { USB_DEVICE(0x13d3, 0x3262) }, { USB_DEVICE(0x13d3, 0x3284) }, @@ -1237,7 +1259,6 @@ /* D-Link */ { USB_DEVICE(0x07d1, 0x3c0b) }, { USB_DEVICE(0x07d1, 0x3c17) }, - { USB_DEVICE(0x2001, 0x3c17) }, /* Encore */ { USB_DEVICE(0x203d, 0x14a1) }, /* Gemtek */ --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500usb.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500usb.h @@ -189,14 +189,15 @@ * MAC_CSR19: GPIO control register. */ #define MAC_CSR19 0x0426 -#define MAC_CSR19_BIT0 FIELD32(0x0001) -#define MAC_CSR19_BIT1 FIELD32(0x0002) -#define MAC_CSR19_BIT2 FIELD32(0x0004) -#define MAC_CSR19_BIT3 FIELD32(0x0008) -#define MAC_CSR19_BIT4 FIELD32(0x0010) -#define MAC_CSR19_BIT5 FIELD32(0x0020) -#define MAC_CSR19_BIT6 FIELD32(0x0040) -#define MAC_CSR19_BIT7 FIELD32(0x0080) +#define MAC_CSR19_BIT0 FIELD16(0x0001) +#define MAC_CSR19_BIT1 FIELD16(0x0002) +#define MAC_CSR19_BIT2 FIELD16(0x0004) +#define MAC_CSR19_BIT3 FIELD16(0x0008) +#define MAC_CSR19_BIT4 FIELD16(0x0010) +#define MAC_CSR19_BIT5 FIELD16(0x0020) +#define MAC_CSR19_BIT6 FIELD16(0x0040) +#define MAC_CSR19_BIT7 FIELD16(0x0080) +#define MAC_CSR19_BIT8 FIELD16(0x0100) /* * MAC_CSR20: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt61pci.h +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt61pci.h @@ -372,6 +372,7 @@ #define MAC_CSR13_BIT10 FIELD32(0x00000400) #define MAC_CSR13_BIT11 FIELD32(0x00000800) #define MAC_CSR13_BIT12 FIELD32(0x00001000) +#define MAC_CSR13_BIT13 FIELD32(0x00002000) /* * MAC_CSR14: LED control register. --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2800lib.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2800lib.c @@ -2255,7 +2255,7 @@ /* * Check if temperature compensation is supported. */ - if (tssi_bounds[4] == 0xff) + if (tssi_bounds[4] == 0xff || step == 0xff) return 0; /* @@ -4524,7 +4524,8 @@ IEEE80211_HW_SUPPORTS_PS | IEEE80211_HW_PS_NULLFUNC_STACK | IEEE80211_HW_AMPDU_AGGREGATION | - IEEE80211_HW_REPORTS_TX_ACK_STATUS; + IEEE80211_HW_REPORTS_TX_ACK_STATUS | + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL; /* * Don't set IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING for USB devices --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt61pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt61pci.c @@ -2243,8 +2243,7 @@ static void rt61pci_wakeup(struct rt2x00_dev *rt2x00dev) { - struct ieee80211_conf conf = { .flags = 0 }; - struct rt2x00lib_conf libconf = { .conf = &conf }; + struct rt2x00lib_conf libconf = { .conf = &rt2x00dev->hw->conf }; rt61pci_config(rt2x00dev, &libconf, IEEE80211_CONF_CHANGE_PS); } @@ -2833,6 +2832,7 @@ static int rt61pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Disable power saving. @@ -2851,6 +2851,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, MAC_CSR13, ®); + rt2x00_set_field32(®, MAC_CSR13_BIT13, 1); + rt2x00pci_register_write(rt2x00dev, MAC_CSR13, reg); + + /* * Initialize hw specifications. */ retval = rt61pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500usb.c @@ -283,7 +283,7 @@ u16 reg; rt2500usb_register_read(rt2x00dev, MAC_CSR19, ®); - return rt2x00_get_field32(reg, MAC_CSR19_BIT7); + return rt2x00_get_field16(reg, MAC_CSR19_BIT7); } #ifdef CONFIG_RT2X00_LIB_LEDS @@ -1768,6 +1768,7 @@ static int rt2500usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u16 reg; /* * Allocate eeprom data. @@ -1781,6 +1782,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2500usb_register_read(rt2x00dev, MAC_CSR19, ®); + rt2x00_set_field16(®, MAC_CSR19_BIT8, 0); + rt2500usb_register_write(rt2x00dev, MAC_CSR19, reg); + + /* * Initialize hw specifications. */ retval = rt2500usb_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2x00pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2x00pci.c @@ -52,8 +52,8 @@ udelay(REGISTER_BUSY_DELAY); } - ERROR(rt2x00dev, "Indirect register access failed: " - "offset=0x%.08x, value=0x%.08x\n", offset, *reg); + printk_once(KERN_ERR "%s() Indirect register access failed: " + "offset=0x%.08x, value=0x%.08x\n", __func__, offset, *reg); *reg = ~0; return 0; --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2500pci.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2500pci.c @@ -1929,6 +1929,7 @@ static int rt2500pci_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -1942,6 +1943,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00pci_register_read(rt2x00dev, GPIOCSR, ®); + rt2x00_set_field32(®, GPIOCSR_DIR0, 1); + rt2x00pci_register_write(rt2x00dev, GPIOCSR, reg); + + /* * Initialize hw specifications. */ retval = rt2500pci_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt2x00dev.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt2x00dev.c @@ -391,10 +391,9 @@ tx_info->flags |= IEEE80211_TX_STAT_AMPDU; tx_info->status.ampdu_len = 1; tx_info->status.ampdu_ack_len = success ? 1 : 0; - /* - * TODO: Need to tear down BA session here - * if not successful. - */ + + if (!success) + tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK; } if (rate_flags & IEEE80211_TX_RC_USE_RTS_CTS) { @@ -629,7 +628,7 @@ */ if (unlikely(rxdesc.size == 0 || rxdesc.size > entry->queue->data_size)) { - WARNING(rt2x00dev, "Wrong frame size %d max %d.\n", + ERROR(rt2x00dev, "Wrong frame size %d max %d.\n", rxdesc.size, entry->queue->data_size); dev_kfree_skb(entry->skb); goto renew_skb; --- linux-3.5.0.orig/drivers/net/wireless/rt2x00/rt73usb.c +++ linux-3.5.0/drivers/net/wireless/rt2x00/rt73usb.c @@ -2177,6 +2177,7 @@ static int rt73usb_probe_hw(struct rt2x00_dev *rt2x00dev) { int retval; + u32 reg; /* * Allocate eeprom data. @@ -2190,6 +2191,14 @@ return retval; /* + * Enable rfkill polling by setting GPIO direction of the + * rfkill switch GPIO pin correctly. + */ + rt2x00usb_register_read(rt2x00dev, MAC_CSR13, ®); + rt2x00_set_field32(®, MAC_CSR13_BIT15, 0); + rt2x00usb_register_write(rt2x00dev, MAC_CSR13, reg); + + /* * Initialize hw specifications. */ retval = rt73usb_probe_hw_mode(rt2x00dev); --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c @@ -121,7 +121,8 @@ IEEE80211_CHAN_NO_HT40PLUS), CHAN2GHZ(14, 2484, IEEE80211_CHAN_PASSIVE_SCAN | IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) + IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS | + IEEE80211_CHAN_NO_OFDM) }; static struct ieee80211_channel brcms_5ghz_nphy_chantable[] = { @@ -1058,6 +1059,8 @@ goto fail; } + brcms_c_regd_init(wl->wlc); + memcpy(perm, &wl->pub->cur_etheraddr, ETH_ALEN); if (WARN_ON(!is_valid_ether_addr(perm))) goto fail; @@ -1395,9 +1398,10 @@ #endif t->ms = ms; t->periodic = (bool) periodic; - t->set = true; - - atomic_inc(&t->wl->callbacks); + if (!t->set) { + t->set = true; + atomic_inc(&t->wl->callbacks); + } ieee80211_queue_delayed_work(hw, &t->dly_wrk, msecs_to_jiffies(ms)); } --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/main.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/main.c @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -3139,20 +3140,6 @@ brcms_b_reset(wlc->hw); } -/* Return the channel the driver should initialize during brcms_c_init. - * the channel may have to be changed from the currently configured channel - * if other configurations are in conflict (bandlocked, 11n mode disabled, - * invalid channel for current country, etc.) - */ -static u16 brcms_c_init_chanspec(struct brcms_c_info *wlc) -{ - u16 chanspec = - 1 | WL_CHANSPEC_BW_20 | WL_CHANSPEC_CTL_SB_NONE | - WL_CHANSPEC_BAND_2G; - - return chanspec; -} - void brcms_c_init_scb(struct scb *scb) { int i; @@ -5129,6 +5116,8 @@ /* make interface operational */ int brcms_c_up(struct brcms_c_info *wlc) { + struct ieee80211_channel *ch; + BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); /* HW is turned off so don't try to access it */ @@ -5195,8 +5184,9 @@ wlc->pub->up = true; if (wlc->bandinit_pending) { + ch = wlc->pub->ieee_hw->conf.channel; brcms_c_suspend_mac_and_wait(wlc); - brcms_c_set_chanspec(wlc, wlc->default_bss->chanspec); + brcms_c_set_chanspec(wlc, ch20mhz_chspec(ch->hw_value)); wlc->bandinit_pending = false; brcms_c_enable_mac(wlc); } @@ -5397,11 +5387,6 @@ else return -EINVAL; - /* Legacy or bust when no OFDM is supported by regulatory */ - if ((brcms_c_channel_locale_flags_in_band(wlc->cmi, band->bandunit) & - BRCMS_NO_OFDM) && (gmode != GMODE_LEGACY_B)) - return -EINVAL; - /* update configuration value */ if (config) brcms_c_protection_upd(wlc, BRCMS_PROT_G_USER, gmode); @@ -8201,19 +8186,12 @@ void brcms_c_init(struct brcms_c_info *wlc, bool mute_tx) { struct bcma_device *core = wlc->hw->d11core; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; u16 chanspec; BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); - /* - * This will happen if a big-hammer was executed. In - * that case, we want to go back to the channel that - * we were on and not new channel - */ - if (wlc->pub->associated) - chanspec = wlc->home_chanspec; - else - chanspec = brcms_c_init_chanspec(wlc); + chanspec = ch20mhz_chspec(ch->hw_value); brcms_b_init(wlc->hw, chanspec); --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/channel.h +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/channel.h @@ -37,9 +37,6 @@ extern void brcms_c_channel_mgr_detach(struct brcms_cm_info *wlc_cm); -extern u8 brcms_c_channel_locale_flags_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit); - extern bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec); @@ -49,5 +46,6 @@ extern void brcms_c_channel_set_chanspec(struct brcms_cm_info *wlc_cm, u16 chanspec, u8 local_constraint_qdbm); +extern void brcms_c_regd_init(struct brcms_c_info *wlc); #endif /* _WLC_CHANNEL_H */ --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmsmac/channel.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmsmac/channel.c @@ -15,7 +15,9 @@ */ #include +#include #include +#include #include #include "pub.h" @@ -23,73 +25,17 @@ #include "main.h" #include "stf.h" #include "channel.h" +#include "mac80211_if.h" /* QDB() macro takes a dB value and converts to a quarter dB value */ #define QDB(n) ((n) * BRCMS_TXPWR_DB_FACTOR) -#define LOCALE_CHAN_01_11 (1<<0) -#define LOCALE_CHAN_12_13 (1<<1) -#define LOCALE_CHAN_14 (1<<2) -#define LOCALE_SET_5G_LOW_JP1 (1<<3) /* 34-48, step 2 */ -#define LOCALE_SET_5G_LOW_JP2 (1<<4) /* 34-46, step 4 */ -#define LOCALE_SET_5G_LOW1 (1<<5) /* 36-48, step 4 */ -#define LOCALE_SET_5G_LOW2 (1<<6) /* 52 */ -#define LOCALE_SET_5G_LOW3 (1<<7) /* 56-64, step 4 */ -#define LOCALE_SET_5G_MID1 (1<<8) /* 100-116, step 4 */ -#define LOCALE_SET_5G_MID2 (1<<9) /* 120-124, step 4 */ -#define LOCALE_SET_5G_MID3 (1<<10) /* 128 */ -#define LOCALE_SET_5G_HIGH1 (1<<11) /* 132-140, step 4 */ -#define LOCALE_SET_5G_HIGH2 (1<<12) /* 149-161, step 4 */ -#define LOCALE_SET_5G_HIGH3 (1<<13) /* 165 */ -#define LOCALE_CHAN_52_140_ALL (1<<14) -#define LOCALE_SET_5G_HIGH4 (1<<15) /* 184-216 */ - -#define LOCALE_CHAN_36_64 (LOCALE_SET_5G_LOW1 | \ - LOCALE_SET_5G_LOW2 | \ - LOCALE_SET_5G_LOW3) -#define LOCALE_CHAN_52_64 (LOCALE_SET_5G_LOW2 | LOCALE_SET_5G_LOW3) -#define LOCALE_CHAN_100_124 (LOCALE_SET_5G_MID1 | LOCALE_SET_5G_MID2) -#define LOCALE_CHAN_100_140 (LOCALE_SET_5G_MID1 | LOCALE_SET_5G_MID2 | \ - LOCALE_SET_5G_MID3 | LOCALE_SET_5G_HIGH1) -#define LOCALE_CHAN_149_165 (LOCALE_SET_5G_HIGH2 | LOCALE_SET_5G_HIGH3) -#define LOCALE_CHAN_184_216 LOCALE_SET_5G_HIGH4 - -#define LOCALE_CHAN_01_14 (LOCALE_CHAN_01_11 | \ - LOCALE_CHAN_12_13 | \ - LOCALE_CHAN_14) - -#define LOCALE_RADAR_SET_NONE 0 -#define LOCALE_RADAR_SET_1 1 - -#define LOCALE_RESTRICTED_NONE 0 -#define LOCALE_RESTRICTED_SET_2G_SHORT 1 -#define LOCALE_RESTRICTED_CHAN_165 2 -#define LOCALE_CHAN_ALL_5G 3 -#define LOCALE_RESTRICTED_JAPAN_LEGACY 4 -#define LOCALE_RESTRICTED_11D_2G 5 -#define LOCALE_RESTRICTED_11D_5G 6 -#define LOCALE_RESTRICTED_LOW_HI 7 -#define LOCALE_RESTRICTED_12_13_14 8 - -#define LOCALE_2G_IDX_i 0 -#define LOCALE_5G_IDX_11 0 #define LOCALE_MIMO_IDX_bn 0 #define LOCALE_MIMO_IDX_11n 0 -/* max of BAND_5G_PWR_LVLS and 6 for 2.4 GHz */ -#define BRCMS_MAXPWR_TBL_SIZE 6 /* max of BAND_5G_PWR_LVLS and 14 for 2.4 GHz */ #define BRCMS_MAXPWR_MIMO_TBL_SIZE 14 -/* power level in group of 2.4GHz band channels: - * maxpwr[0] - CCK channels [1] - * maxpwr[1] - CCK channels [2-10] - * maxpwr[2] - CCK channels [11-14] - * maxpwr[3] - OFDM channels [1] - * maxpwr[4] - OFDM channels [2-10] - * maxpwr[5] - OFDM channels [11-14] - */ - /* maxpwr mapping to 5GHz band channels: * maxpwr[0] - channels [34-48] * maxpwr[1] - channels [52-60] @@ -101,16 +47,8 @@ #define LC(id) LOCALE_MIMO_IDX_ ## id -#define LC_2G(id) LOCALE_2G_IDX_ ## id - -#define LC_5G(id) LOCALE_5G_IDX_ ## id - -#define LOCALES(band2, band5, mimo2, mimo5) \ - {LC_2G(band2), LC_5G(band5), LC(mimo2), LC(mimo5)} - -/* macro to get 2.4 GHz channel group index for tx power */ -#define CHANNEL_POWER_IDX_2G_CCK(c) (((c) < 2) ? 0 : (((c) < 11) ? 1 : 2)) -#define CHANNEL_POWER_IDX_2G_OFDM(c) (((c) < 2) ? 3 : (((c) < 11) ? 4 : 5)) +#define LOCALES(mimo2, mimo5) \ + {LC(mimo2), LC(mimo5)} /* macro to get 5 GHz channel group index for tx power */ #define CHANNEL_POWER_IDX_5G(c) (((c) < 52) ? 0 : \ @@ -118,18 +56,37 @@ (((c) < 100) ? 2 : \ (((c) < 149) ? 3 : 4)))) -#define ISDFS_EU(fl) (((fl) & BRCMS_DFS_EU) == BRCMS_DFS_EU) - -struct brcms_cm_band { - /* struct locale_info flags */ - u8 locale_flags; - /* List of valid channels in the country */ - struct brcms_chanvec valid_channels; - /* List of restricted use channels */ - const struct brcms_chanvec *restricted_channels; - /* List of radar sensitive channels */ - const struct brcms_chanvec *radar_channels; - u8 PAD[8]; +#define BRCM_2GHZ_2412_2462 REG_RULE(2412-10, 2462+10, 40, 0, 19, 0) +#define BRCM_2GHZ_2467_2472 REG_RULE(2467-10, 2472+10, 20, 0, 19, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +#define BRCM_5GHZ_5180_5240 REG_RULE(5180-10, 5240+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5260_5320 REG_RULE(5260-10, 5320+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_DFS | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5500_5700 REG_RULE(5500-10, 5700+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_DFS | \ + NL80211_RRF_NO_IBSS) +#define BRCM_5GHZ_5745_5825 REG_RULE(5745-10, 5825+10, 40, 0, 21, \ + NL80211_RRF_PASSIVE_SCAN | \ + NL80211_RRF_NO_IBSS) + +static const struct ieee80211_regdomain brcms_regdom_x2 = { + .n_reg_rules = 6, + .alpha2 = "X2", + .reg_rules = { + BRCM_2GHZ_2412_2462, + BRCM_2GHZ_2467_2472, + BRCM_5GHZ_5180_5240, + BRCM_5GHZ_5260_5320, + BRCM_5GHZ_5500_5700, + BRCM_5GHZ_5745_5825, + } }; /* locale per-channel tx power limits for MIMO frames @@ -141,337 +98,23 @@ s8 maxpwr20[BRCMS_MAXPWR_MIMO_TBL_SIZE]; /* tx 40 MHz power limits, qdBm units */ s8 maxpwr40[BRCMS_MAXPWR_MIMO_TBL_SIZE]; - u8 flags; }; /* Country names and abbreviations with locale defined from ISO 3166 */ struct country_info { - const u8 locale_2G; /* 2.4G band locale */ - const u8 locale_5G; /* 5G band locale */ const u8 locale_mimo_2G; /* 2.4G mimo info */ const u8 locale_mimo_5G; /* 5G mimo info */ }; +struct brcms_regd { + struct country_info country; + const struct ieee80211_regdomain *regdomain; +}; + struct brcms_cm_info { struct brcms_pub *pub; struct brcms_c_info *wlc; - char srom_ccode[BRCM_CNTRY_BUF_SZ]; /* Country Code in SROM */ - uint srom_regrev; /* Regulatory Rev for the SROM ccode */ - const struct country_info *country; /* current country def */ - char ccode[BRCM_CNTRY_BUF_SZ]; /* current internal Country Code */ - uint regrev; /* current Regulatory Revision */ - char country_abbrev[BRCM_CNTRY_BUF_SZ]; /* current advertised ccode */ - /* per-band state (one per phy/radio) */ - struct brcms_cm_band bandstate[MAXBANDS]; - /* quiet channels currently for radar sensitivity or 11h support */ - /* channels on which we cannot transmit */ - struct brcms_chanvec quiet_channels; -}; - -/* locale channel and power info. */ -struct locale_info { - u32 valid_channels; - /* List of radar sensitive channels */ - u8 radar_channels; - /* List of channels used only if APs are detected */ - u8 restricted_channels; - /* Max tx pwr in qdBm for each sub-band */ - s8 maxpwr[BRCMS_MAXPWR_TBL_SIZE]; - /* Country IE advertised max tx pwr in dBm per sub-band */ - s8 pub_maxpwr[BAND_5G_PWR_LVLS]; - u8 flags; -}; - -/* Regulatory Matrix Spreadsheet (CLM) MIMO v3.7.9 */ - -/* - * Some common channel sets - */ - -/* No channels */ -static const struct brcms_chanvec chanvec_none = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* All 2.4 GHz HW channels */ -static const struct brcms_chanvec chanvec_all_2G = { - {0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* All 5 GHz HW channels */ -static const struct brcms_chanvec chanvec_all_5G = { - {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x11, 0x11, - 0x01, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x20, 0x22, 0x22, 0x00, 0x00, 0x11, - 0x11, 0x11, 0x11, 0x01} -}; - -/* - * Radar channel sets - */ - -/* Channels 52 - 64, 100 - 140 */ -static const struct brcms_chanvec radar_set1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, /* 52 - 60 */ - 0x01, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, /* 64, 100 - 124 */ - 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 128 - 140 */ - 0x00, 0x00, 0x00, 0x00} -}; - -/* - * Restricted channel sets - */ - -/* Channels 34, 38, 42, 46 */ -static const struct brcms_chanvec restricted_set_japan_legacy = { - {0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 12, 13 */ -static const struct brcms_chanvec restricted_set_2g_short = { - {0x00, 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} -}; - -/* Channel 165 */ -static const struct brcms_chanvec restricted_chan_165 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 36 - 48 & 149 - 165 */ -static const struct brcms_chanvec restricted_low_hi = { - {0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x22, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* Channels 12 - 14 */ -static const struct brcms_chanvec restricted_set_12_13_14 = { - {0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -/* global memory to provide working buffer for expanded locale */ - -static const struct brcms_chanvec *g_table_radar_set[] = { - &chanvec_none, - &radar_set1 -}; - -static const struct brcms_chanvec *g_table_restricted_chan[] = { - &chanvec_none, /* restricted_set_none */ - &restricted_set_2g_short, - &restricted_chan_165, - &chanvec_all_5G, - &restricted_set_japan_legacy, - &chanvec_all_2G, /* restricted_set_11d_2G */ - &chanvec_all_5G, /* restricted_set_11d_5G */ - &restricted_low_hi, - &restricted_set_12_13_14 -}; - -static const struct brcms_chanvec locale_2g_01_11 = { - {0xfe, 0x0f, 0x00, 0x00, 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 const struct brcms_chanvec locale_2g_12_13 = { - {0x00, 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} -}; - -static const struct brcms_chanvec locale_2g_14 = { - {0x00, 0x40, 0x00, 0x00, 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 const struct brcms_chanvec locale_5g_LOW_JP1 = { - {0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW_JP2 = { - {0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW1 = { - {0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_LOW3 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_MID3 = { - {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} -}; - -static const struct brcms_chanvec locale_5g_HIGH1 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH2 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x22, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH3 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_52_140_ALL = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, - 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, - 0x11, 0x11, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00} -}; - -static const struct brcms_chanvec locale_5g_HIGH4 = { - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, - 0x11, 0x11, 0x11, 0x11} -}; - -static const struct brcms_chanvec *g_table_locale_base[] = { - &locale_2g_01_11, - &locale_2g_12_13, - &locale_2g_14, - &locale_5g_LOW_JP1, - &locale_5g_LOW_JP2, - &locale_5g_LOW1, - &locale_5g_LOW2, - &locale_5g_LOW3, - &locale_5g_MID1, - &locale_5g_MID2, - &locale_5g_MID3, - &locale_5g_HIGH1, - &locale_5g_HIGH2, - &locale_5g_HIGH3, - &locale_5g_52_140_ALL, - &locale_5g_HIGH4 -}; - -static void brcms_c_locale_add_channels(struct brcms_chanvec *target, - const struct brcms_chanvec *channels) -{ - u8 i; - for (i = 0; i < sizeof(struct brcms_chanvec); i++) - target->vec[i] |= channels->vec[i]; -} - -static void brcms_c_locale_get_channels(const struct locale_info *locale, - struct brcms_chanvec *channels) -{ - u8 i; - - memset(channels, 0, sizeof(struct brcms_chanvec)); - - for (i = 0; i < ARRAY_SIZE(g_table_locale_base); i++) { - if (locale->valid_channels & (1 << i)) - brcms_c_locale_add_channels(channels, - g_table_locale_base[i]); - } -} - -/* - * Locale Definitions - 2.4 GHz - */ -static const struct locale_info locale_i = { /* locale i. channel 1 - 13 */ - LOCALE_CHAN_01_11 | LOCALE_CHAN_12_13, - LOCALE_RADAR_SET_NONE, - LOCALE_RESTRICTED_SET_2G_SHORT, - {QDB(19), QDB(19), QDB(19), - QDB(19), QDB(19), QDB(19)}, - {20, 20, 20, 0}, - BRCMS_EIRP -}; - -/* - * Locale Definitions - 5 GHz - */ -static const struct locale_info locale_11 = { - /* locale 11. channel 36 - 48, 52 - 64, 100 - 140, 149 - 165 */ - LOCALE_CHAN_36_64 | LOCALE_CHAN_100_140 | LOCALE_CHAN_149_165, - LOCALE_RADAR_SET_1, - LOCALE_RESTRICTED_NONE, - {QDB(21), QDB(21), QDB(21), QDB(21), QDB(21)}, - {23, 23, 23, 30, 30}, - BRCMS_EIRP | BRCMS_DFS_EU -}; - -static const struct locale_info *g_locale_2g_table[] = { - &locale_i -}; - -static const struct locale_info *g_locale_5g_table[] = { - &locale_11 + const struct brcms_regd *world_regd; }; /* @@ -484,7 +127,6 @@ {0, 0, QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), QDB(13), 0, 0}, - 0 }; static const struct locale_mimo_info *g_mimo_2g_table[] = { @@ -497,113 +139,19 @@ static const struct locale_mimo_info locale_11n = { { /* 12.5 dBm */ 50, 50, 50, QDB(15), QDB(15)}, {QDB(14), QDB(15), QDB(15), QDB(15), QDB(15)}, - 0 }; static const struct locale_mimo_info *g_mimo_5g_table[] = { &locale_11n }; -static const struct { - char abbrev[BRCM_CNTRY_BUF_SZ]; /* country abbreviation */ - struct country_info country; -} cntry_locales[] = { +static const struct brcms_regd cntry_locales[] = { + /* Worldwide RoW 2, must always be at index 0 */ { - "X2", LOCALES(i, 11, bn, 11n)}, /* Worldwide RoW 2 */ -}; - -#ifdef SUPPORT_40MHZ -/* 20MHz channel info for 40MHz pairing support */ -struct chan20_info { - u8 sb; - u8 adj_sbs; -}; - -/* indicates adjacent channels that are allowed for a 40 Mhz channel and - * those that permitted by the HT - */ -struct chan20_info chan20_info[] = { - /* 11b/11g */ -/* 0 */ {1, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 1 */ {2, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 2 */ {3, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 3 */ {4, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 4 */ {5, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 5 */ {6, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 6 */ {7, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 7 */ {8, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 8 */ {9, (CH_UPPER_SB | CH_LOWER_SB | CH_EWA_VALID)}, -/* 9 */ {10, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 10 */ {11, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 11 */ {12, (CH_LOWER_SB)}, -/* 12 */ {13, (CH_LOWER_SB)}, -/* 13 */ {14, (CH_LOWER_SB)}, - -/* 11a japan high */ -/* 14 */ {34, (CH_UPPER_SB)}, -/* 15 */ {38, (CH_LOWER_SB)}, -/* 16 */ {42, (CH_LOWER_SB)}, -/* 17 */ {46, (CH_LOWER_SB)}, - -/* 11a usa low */ -/* 18 */ {36, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 19 */ {40, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 20 */ {44, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 21 */ {48, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 22 */ {52, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 23 */ {56, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 24 */ {60, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 25 */ {64, (CH_LOWER_SB | CH_EWA_VALID)}, - -/* 11a Europe */ -/* 26 */ {100, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 27 */ {104, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 28 */ {108, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 29 */ {112, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 30 */ {116, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 31 */ {120, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 32 */ {124, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 33 */ {128, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 34 */ {132, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 35 */ {136, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 36 */ {140, (CH_LOWER_SB)}, - -/* 11a usa high, ref5 only */ -/* The 0x80 bit in pdiv means these are REF5, other entries are REF20 */ -/* 37 */ {149, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 38 */ {153, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 39 */ {157, (CH_UPPER_SB | CH_EWA_VALID)}, -/* 40 */ {161, (CH_LOWER_SB | CH_EWA_VALID)}, -/* 41 */ {165, (CH_LOWER_SB)}, - -/* 11a japan */ -/* 42 */ {184, (CH_UPPER_SB)}, -/* 43 */ {188, (CH_LOWER_SB)}, -/* 44 */ {192, (CH_UPPER_SB)}, -/* 45 */ {196, (CH_LOWER_SB)}, -/* 46 */ {200, (CH_UPPER_SB)}, -/* 47 */ {204, (CH_LOWER_SB)}, -/* 48 */ {208, (CH_UPPER_SB)}, -/* 49 */ {212, (CH_LOWER_SB)}, -/* 50 */ {216, (CH_LOWER_SB)} + .country = LOCALES(bn, 11n), + .regdomain = &brcms_regdom_x2, + }, }; -#endif /* SUPPORT_40MHZ */ - -static const struct locale_info *brcms_c_get_locale_2g(u8 locale_idx) -{ - if (locale_idx >= ARRAY_SIZE(g_locale_2g_table)) - return NULL; /* error condition */ - - return g_locale_2g_table[locale_idx]; -} - -static const struct locale_info *brcms_c_get_locale_5g(u8 locale_idx) -{ - if (locale_idx >= ARRAY_SIZE(g_locale_5g_table)) - return NULL; /* error condition */ - - return g_locale_5g_table[locale_idx]; -} static const struct locale_mimo_info *brcms_c_get_mimo_2g(u8 locale_idx) { @@ -621,13 +169,6 @@ return g_mimo_5g_table[locale_idx]; } -static int -brcms_c_country_aggregate_map(struct brcms_cm_info *wlc_cm, const char *ccode, - char *mapped_ccode, uint *mapped_regrev) -{ - return false; -} - /* * Indicates whether the country provided is valid to pass * to cfg80211 or not. @@ -662,155 +203,24 @@ return true; } -/* Lookup a country info structure from a null terminated country - * abbreviation and regrev directly with no translation. - */ -static const struct country_info * -brcms_c_country_lookup_direct(const char *ccode, uint regrev) -{ - uint size, i; - - /* Should just return 0 for single locale driver. */ - /* Keep it this way in case we add more locales. (for now anyway) */ - - /* - * all other country def arrays are for regrev == 0, so if - * regrev is non-zero, fail - */ - if (regrev > 0) - return NULL; - - /* find matched table entry from country code */ - size = ARRAY_SIZE(cntry_locales); - for (i = 0; i < size; i++) { - if (strcmp(ccode, cntry_locales[i].abbrev) == 0) - return &cntry_locales[i].country; - } - return NULL; -} - -static const struct country_info * -brcms_c_countrycode_map(struct brcms_cm_info *wlc_cm, const char *ccode, - char *mapped_ccode, uint *mapped_regrev) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - const struct country_info *country; - uint srom_regrev = wlc_cm->srom_regrev; - const char *srom_ccode = wlc_cm->srom_ccode; - int mapped; - - /* check for currently supported ccode size */ - if (strlen(ccode) > (BRCM_CNTRY_BUF_SZ - 1)) { - wiphy_err(wlc->wiphy, "wl%d: %s: ccode \"%s\" too long for " - "match\n", wlc->pub->unit, __func__, ccode); - return NULL; - } - - /* default mapping is the given ccode and regrev 0 */ - strncpy(mapped_ccode, ccode, BRCM_CNTRY_BUF_SZ); - *mapped_regrev = 0; - - /* If the desired country code matches the srom country code, - * then the mapped country is the srom regulatory rev. - * Otherwise look for an aggregate mapping. - */ - if (!strcmp(srom_ccode, ccode)) { - *mapped_regrev = srom_regrev; - mapped = 0; - wiphy_err(wlc->wiphy, "srom_code == ccode %s\n", __func__); - } else { - mapped = - brcms_c_country_aggregate_map(wlc_cm, ccode, mapped_ccode, - mapped_regrev); - } - - /* find the matching built-in country definition */ - country = brcms_c_country_lookup_direct(mapped_ccode, *mapped_regrev); - - /* if there is not an exact rev match, default to rev zero */ - if (country == NULL && *mapped_regrev != 0) { - *mapped_regrev = 0; - country = - brcms_c_country_lookup_direct(mapped_ccode, *mapped_regrev); - } - - return country; -} - -/* Lookup a country info structure from a null terminated country code - * The lookup is case sensitive. - */ -static const struct country_info * -brcms_c_country_lookup(struct brcms_c_info *wlc, const char *ccode) -{ - const struct country_info *country; - char mapped_ccode[BRCM_CNTRY_BUF_SZ]; - uint mapped_regrev; - - /* - * map the country code to a built-in country code, regrev, and - * country_info struct - */ - country = brcms_c_countrycode_map(wlc->cmi, ccode, mapped_ccode, - &mapped_regrev); - - return country; -} - -/* - * reset the quiet channels vector to the union - * of the restricted and radar channel sets - */ -static void brcms_c_quiet_channels_reset(struct brcms_cm_info *wlc_cm) +static const struct brcms_regd *brcms_world_regd(const char *regdom, int len) { - struct brcms_c_info *wlc = wlc_cm->wlc; - uint i, j; - struct brcms_band *band; - const struct brcms_chanvec *chanvec; - - memset(&wlc_cm->quiet_channels, 0, sizeof(struct brcms_chanvec)); - - band = wlc->band; - for (i = 0; i < wlc->pub->_nbands; - i++, band = wlc->bandstate[OTHERBANDUNIT(wlc)]) { - - /* initialize quiet channels for restricted channels */ - chanvec = wlc_cm->bandstate[band->bandunit].restricted_channels; - for (j = 0; j < sizeof(struct brcms_chanvec); j++) - wlc_cm->quiet_channels.vec[j] |= chanvec->vec[j]; + const struct brcms_regd *regd = NULL; + int i; + for (i = 0; i < ARRAY_SIZE(cntry_locales); i++) { + if (!strncmp(regdom, cntry_locales[i].regdomain->alpha2, len)) { + regd = &cntry_locales[i]; + break; + } } -} -/* Is the channel valid for the current locale and current band? */ -static bool brcms_c_valid_channel20(struct brcms_cm_info *wlc_cm, uint val) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - - return ((val < MAXCHANNEL) && - isset(wlc_cm->bandstate[wlc->band->bandunit].valid_channels.vec, - val)); + return regd; } -/* Is the channel valid for the current locale and specified band? */ -static bool brcms_c_valid_channel20_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit, uint val) +static const struct brcms_regd *brcms_default_world_regd(void) { - return ((val < MAXCHANNEL) - && isset(wlc_cm->bandstate[bandunit].valid_channels.vec, val)); -} - -/* Is the channel valid for the current locale? (but don't consider channels not - * available due to bandlocking) - */ -static bool brcms_c_valid_channel20_db(struct brcms_cm_info *wlc_cm, uint val) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - - return brcms_c_valid_channel20(wlc->cmi, val) || - (!wlc->bandlocked - && brcms_c_valid_channel20_in_band(wlc->cmi, - OTHERBANDUNIT(wlc), val)); + return &cntry_locales[0]; } /* JP, J1 - J10 are Japan ccodes */ @@ -820,12 +230,6 @@ (ccode[1] == 'P' || (ccode[1] >= '1' && ccode[1] <= '9'))); } -/* Returns true if currently set country is Japan or variant */ -static bool brcms_c_japan(struct brcms_c_info *wlc) -{ - return brcms_c_japan_ccode(wlc->cmi->country_abbrev); -} - static void brcms_c_channel_min_txpower_limits_with_local_constraint( struct brcms_cm_info *wlc_cm, struct txpwr_limits *txpwr, @@ -901,140 +305,16 @@ } -/* Update the radio state (enable/disable) and tx power targets - * based on a new set of channel/regulatory information - */ -static void brcms_c_channels_commit(struct brcms_cm_info *wlc_cm) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - uint chan; - struct txpwr_limits txpwr; - - /* search for the existence of any valid channel */ - for (chan = 0; chan < MAXCHANNEL; chan++) { - if (brcms_c_valid_channel20_db(wlc->cmi, chan)) - break; - } - if (chan == MAXCHANNEL) - chan = INVCHANNEL; - - /* - * based on the channel search above, set or - * clear WL_RADIO_COUNTRY_DISABLE. - */ - if (chan == INVCHANNEL) { - /* - * country/locale with no valid channels, set - * the radio disable bit - */ - mboolset(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); - wiphy_err(wlc->wiphy, "wl%d: %s: no valid channel for \"%s\" " - "nbands %d bandlocked %d\n", wlc->pub->unit, - __func__, wlc_cm->country_abbrev, wlc->pub->_nbands, - wlc->bandlocked); - } else if (mboolisset(wlc->pub->radio_disabled, - WL_RADIO_COUNTRY_DISABLE)) { - /* - * country/locale with valid channel, clear - * the radio disable bit - */ - mboolclr(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); - } - - /* - * Now that the country abbreviation is set, if the radio supports 2G, - * then set channel 14 restrictions based on the new locale. - */ - if (wlc->pub->_nbands > 1 || wlc->band->bandtype == BRCM_BAND_2G) - wlc_phy_chanspec_ch14_widefilter_set(wlc->band->pi, - brcms_c_japan(wlc) ? true : - false); - - if (wlc->pub->up && chan != INVCHANNEL) { - brcms_c_channel_reg_limits(wlc_cm, wlc->chanspec, &txpwr); - brcms_c_channel_min_txpower_limits_with_local_constraint(wlc_cm, - &txpwr, BRCMS_TXPWR_MAX); - wlc_phy_txpower_limit_set(wlc->band->pi, &txpwr, wlc->chanspec); - } -} - -static int -brcms_c_channels_init(struct brcms_cm_info *wlc_cm, - const struct country_info *country) -{ - struct brcms_c_info *wlc = wlc_cm->wlc; - uint i, j; - struct brcms_band *band; - const struct locale_info *li; - struct brcms_chanvec sup_chan; - const struct locale_mimo_info *li_mimo; - - band = wlc->band; - for (i = 0; i < wlc->pub->_nbands; - i++, band = wlc->bandstate[OTHERBANDUNIT(wlc)]) { - - li = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_locale_5g(country->locale_5G) : - brcms_c_get_locale_2g(country->locale_2G); - wlc_cm->bandstate[band->bandunit].locale_flags = li->flags; - li_mimo = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_mimo_5g(country->locale_mimo_5G) : - brcms_c_get_mimo_2g(country->locale_mimo_2G); - - /* merge the mimo non-mimo locale flags */ - wlc_cm->bandstate[band->bandunit].locale_flags |= - li_mimo->flags; - - wlc_cm->bandstate[band->bandunit].restricted_channels = - g_table_restricted_chan[li->restricted_channels]; - wlc_cm->bandstate[band->bandunit].radar_channels = - g_table_radar_set[li->radar_channels]; - - /* - * set the channel availability, masking out the channels - * that may not be supported on this phy. - */ - wlc_phy_chanspec_band_validch(band->pi, band->bandtype, - &sup_chan); - brcms_c_locale_get_channels(li, - &wlc_cm->bandstate[band->bandunit]. - valid_channels); - for (j = 0; j < sizeof(struct brcms_chanvec); j++) - wlc_cm->bandstate[band->bandunit].valid_channels. - vec[j] &= sup_chan.vec[j]; - } - - brcms_c_quiet_channels_reset(wlc_cm); - brcms_c_channels_commit(wlc_cm); - - return 0; -} - /* * set the driver's current country and regulatory information * using a country code as the source. Look up built in country * information found with the country code. */ static void -brcms_c_set_country_common(struct brcms_cm_info *wlc_cm, - const char *country_abbrev, - const char *ccode, uint regrev, - const struct country_info *country) +brcms_c_set_country(struct brcms_cm_info *wlc_cm, + const struct brcms_regd *regd) { - const struct locale_info *locale; struct brcms_c_info *wlc = wlc_cm->wlc; - char prev_country_abbrev[BRCM_CNTRY_BUF_SZ]; - - /* save current country state */ - wlc_cm->country = country; - - memset(&prev_country_abbrev, 0, BRCM_CNTRY_BUF_SZ); - strncpy(prev_country_abbrev, wlc_cm->country_abbrev, - BRCM_CNTRY_BUF_SZ - 1); - - strncpy(wlc_cm->country_abbrev, country_abbrev, BRCM_CNTRY_BUF_SZ - 1); - strncpy(wlc_cm->ccode, ccode, BRCM_CNTRY_BUF_SZ - 1); - wlc_cm->regrev = regrev; if ((wlc->pub->_n_enab & SUPPORT_11N) != wlc->protection->nmode_user) @@ -1042,75 +322,19 @@ brcms_c_stf_ss_update(wlc, wlc->bandstate[BAND_2G_INDEX]); brcms_c_stf_ss_update(wlc, wlc->bandstate[BAND_5G_INDEX]); - /* set or restore gmode as required by regulatory */ - locale = brcms_c_get_locale_2g(country->locale_2G); - if (locale && (locale->flags & BRCMS_NO_OFDM)) - brcms_c_set_gmode(wlc, GMODE_LEGACY_B, false); - else - brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); - brcms_c_channels_init(wlc_cm, country); + brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); return; } -static int -brcms_c_set_countrycode_rev(struct brcms_cm_info *wlc_cm, - const char *country_abbrev, - const char *ccode, int regrev) -{ - const struct country_info *country; - char mapped_ccode[BRCM_CNTRY_BUF_SZ]; - uint mapped_regrev; - - /* if regrev is -1, lookup the mapped country code, - * otherwise use the ccode and regrev directly - */ - if (regrev == -1) { - /* - * map the country code to a built-in country - * code, regrev, and country_info - */ - country = - brcms_c_countrycode_map(wlc_cm, ccode, mapped_ccode, - &mapped_regrev); - } else { - /* find the matching built-in country definition */ - country = brcms_c_country_lookup_direct(ccode, regrev); - strncpy(mapped_ccode, ccode, BRCM_CNTRY_BUF_SZ); - mapped_regrev = regrev; - } - - if (country == NULL) - return -EINVAL; - - /* set the driver state for the country */ - brcms_c_set_country_common(wlc_cm, country_abbrev, mapped_ccode, - mapped_regrev, country); - - return 0; -} - -/* - * set the driver's current country and regulatory information using - * a country code as the source. Lookup built in country information - * found with the country code. - */ -static int -brcms_c_set_countrycode(struct brcms_cm_info *wlc_cm, const char *ccode) -{ - char country_abbrev[BRCM_CNTRY_BUF_SZ]; - strncpy(country_abbrev, ccode, BRCM_CNTRY_BUF_SZ); - return brcms_c_set_countrycode_rev(wlc_cm, country_abbrev, ccode, -1); -} - struct brcms_cm_info *brcms_c_channel_mgr_attach(struct brcms_c_info *wlc) { struct brcms_cm_info *wlc_cm; - char country_abbrev[BRCM_CNTRY_BUF_SZ]; - const struct country_info *country; struct brcms_pub *pub = wlc->pub; struct ssb_sprom *sprom = &wlc->hw->d11core->bus->sprom; + const char *ccode = sprom->alpha2; + int ccode_len = sizeof(sprom->alpha2); BCMMSG(wlc->wiphy, "wl%d\n", wlc->pub->unit); @@ -1122,24 +346,27 @@ wlc->cmi = wlc_cm; /* store the country code for passing up as a regulatory hint */ - if (sprom->alpha2 && brcms_c_country_valid(sprom->alpha2)) - strncpy(wlc->pub->srom_ccode, sprom->alpha2, sizeof(sprom->alpha2)); + wlc_cm->world_regd = brcms_world_regd(ccode, ccode_len); + if (brcms_c_country_valid(ccode)) + strncpy(wlc->pub->srom_ccode, ccode, ccode_len); /* - * internal country information which must match - * regulatory constraints in firmware - */ - memset(country_abbrev, 0, BRCM_CNTRY_BUF_SZ); - strncpy(country_abbrev, "X2", sizeof(country_abbrev) - 1); - country = brcms_c_country_lookup(wlc, country_abbrev); + * If no custom world domain is found in the SROM, use the + * default "X2" domain. + */ + if (!wlc_cm->world_regd) { + wlc_cm->world_regd = brcms_default_world_regd(); + ccode = wlc_cm->world_regd->regdomain->alpha2; + ccode_len = BRCM_CNTRY_BUF_SZ - 1; + } /* save default country for exiting 11d regulatory mode */ - strncpy(wlc->country_default, country_abbrev, BRCM_CNTRY_BUF_SZ - 1); + strncpy(wlc->country_default, ccode, ccode_len); /* initialize autocountry_default to driver default */ - strncpy(wlc->autocountry_default, "X2", BRCM_CNTRY_BUF_SZ - 1); + strncpy(wlc->autocountry_default, ccode, ccode_len); - brcms_c_set_countrycode(wlc_cm, country_abbrev); + brcms_c_set_country(wlc_cm, wlc_cm->world_regd); return wlc_cm; } @@ -1149,30 +376,12 @@ kfree(wlc_cm); } -u8 -brcms_c_channel_locale_flags_in_band(struct brcms_cm_info *wlc_cm, - uint bandunit) -{ - return wlc_cm->bandstate[bandunit].locale_flags; -} - -static bool -brcms_c_quiet_chanspec(struct brcms_cm_info *wlc_cm, u16 chspec) -{ - return (wlc_cm->wlc->pub->_n_enab & SUPPORT_11N) && - CHSPEC_IS40(chspec) ? - (isset(wlc_cm->quiet_channels.vec, - lower_20_sb(CHSPEC_CHANNEL(chspec))) || - isset(wlc_cm->quiet_channels.vec, - upper_20_sb(CHSPEC_CHANNEL(chspec)))) : - isset(wlc_cm->quiet_channels.vec, CHSPEC_CHANNEL(chspec)); -} - void brcms_c_channel_set_chanspec(struct brcms_cm_info *wlc_cm, u16 chanspec, u8 local_constraint_qdbm) { struct brcms_c_info *wlc = wlc_cm->wlc; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; struct txpwr_limits txpwr; brcms_c_channel_reg_limits(wlc_cm, chanspec, &txpwr); @@ -1181,8 +390,14 @@ wlc_cm, &txpwr, local_constraint_qdbm ); + /* set or restore gmode as required by regulatory */ + if (ch->flags & IEEE80211_CHAN_NO_OFDM) + brcms_c_set_gmode(wlc, GMODE_LEGACY_B, false); + else + brcms_c_set_gmode(wlc, wlc->protection->gmode_user, false); + brcms_b_set_chanspec(wlc->hw, chanspec, - (brcms_c_quiet_chanspec(wlc_cm, chanspec) != 0), + !!(ch->flags & IEEE80211_CHAN_PASSIVE_SCAN), &txpwr); } @@ -1191,15 +406,14 @@ struct txpwr_limits *txpwr) { struct brcms_c_info *wlc = wlc_cm->wlc; + struct ieee80211_channel *ch = wlc->pub->ieee_hw->conf.channel; uint i; uint chan; int maxpwr; int delta; const struct country_info *country; struct brcms_band *band; - const struct locale_info *li; int conducted_max = BRCMS_TXPWR_MAX; - int conducted_ofdm_max = BRCMS_TXPWR_MAX; const struct locale_mimo_info *li_mimo; int maxpwr20, maxpwr40; int maxpwr_idx; @@ -1207,67 +421,35 @@ memset(txpwr, 0, sizeof(struct txpwr_limits)); - if (!brcms_c_valid_chanspec_db(wlc_cm, chanspec)) { - country = brcms_c_country_lookup(wlc, wlc->autocountry_default); - if (country == NULL) - return; - } else { - country = wlc_cm->country; - } + if (WARN_ON(!ch)) + return; + + country = &wlc_cm->world_regd->country; chan = CHSPEC_CHANNEL(chanspec); band = wlc->bandstate[chspec_bandunit(chanspec)]; - li = (band->bandtype == BRCM_BAND_5G) ? - brcms_c_get_locale_5g(country->locale_5G) : - brcms_c_get_locale_2g(country->locale_2G); - li_mimo = (band->bandtype == BRCM_BAND_5G) ? brcms_c_get_mimo_5g(country->locale_mimo_5G) : brcms_c_get_mimo_2g(country->locale_mimo_2G); - if (li->flags & BRCMS_EIRP) { - delta = band->antgain; - } else { - delta = 0; - if (band->antgain > QDB(6)) - delta = band->antgain - QDB(6); /* Excess over 6 dB */ - } + delta = band->antgain; - if (li == &locale_i) { + if (band->bandtype == BRCM_BAND_2G) conducted_max = QDB(22); - conducted_ofdm_max = QDB(22); - } + + maxpwr = QDB(ch->max_power) - delta; + maxpwr = max(maxpwr, 0); + maxpwr = min(maxpwr, conducted_max); /* CCK txpwr limits for 2.4G band */ if (band->bandtype == BRCM_BAND_2G) { - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_2G_CCK(chan)]; - - maxpwr = maxpwr - delta; - maxpwr = max(maxpwr, 0); - maxpwr = min(maxpwr, conducted_max); - for (i = 0; i < BRCMS_NUM_RATES_CCK; i++) txpwr->cck[i] = (u8) maxpwr; } - /* OFDM txpwr limits for 2.4G or 5G bands */ - if (band->bandtype == BRCM_BAND_2G) - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_2G_OFDM(chan)]; - else - maxpwr = li->maxpwr[CHANNEL_POWER_IDX_5G(chan)]; - - maxpwr = maxpwr - delta; - maxpwr = max(maxpwr, 0); - maxpwr = min(maxpwr, conducted_ofdm_max); - - /* Keep OFDM lmit below CCK limit */ - if (band->bandtype == BRCM_BAND_2G) - maxpwr = min_t(int, maxpwr, txpwr->cck[0]); - - for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) + for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) { txpwr->ofdm[i] = (u8) maxpwr; - for (i = 0; i < BRCMS_NUM_RATES_OFDM; i++) { /* * OFDM 40 MHz SISO has the same power as the corresponding * MCS0-7 rate unless overriden by the locale specific code. @@ -1282,14 +464,9 @@ txpwr->ofdm_40_cdd[i] = 0; } - /* MIMO/HT specific limits */ - if (li_mimo->flags & BRCMS_EIRP) { - delta = band->antgain; - } else { - delta = 0; - if (band->antgain > QDB(6)) - delta = band->antgain - QDB(6); /* Excess over 6 dB */ - } + delta = 0; + if (band->antgain > QDB(6)) + delta = band->antgain - QDB(6); /* Excess over 6 dB */ if (band->bandtype == BRCM_BAND_2G) maxpwr_idx = (chan - 1); @@ -1431,8 +608,7 @@ * and they are also a legal HT combination */ static bool -brcms_c_valid_chanspec_ext(struct brcms_cm_info *wlc_cm, u16 chspec, - bool dualband) +brcms_c_valid_chanspec_ext(struct brcms_cm_info *wlc_cm, u16 chspec) { struct brcms_c_info *wlc = wlc_cm->wlc; u8 channel = CHSPEC_CHANNEL(chspec); @@ -1448,59 +624,166 @@ chspec_bandunit(chspec)) return false; - /* Check a 20Mhz channel */ - if (CHSPEC_IS20(chspec)) { - if (dualband) - return brcms_c_valid_channel20_db(wlc_cm->wlc->cmi, - channel); - else - return brcms_c_valid_channel20(wlc_cm->wlc->cmi, - channel); + return true; +} + +bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec) +{ + return brcms_c_valid_chanspec_ext(wlc_cm, chspec); +} + +static bool brcms_is_radar_freq(u16 center_freq) +{ + return center_freq >= 5260 && center_freq <= 5700; +} + +static void brcms_reg_apply_radar_flags(struct wiphy *wiphy) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + int i; + + sband = wiphy->bands[IEEE80211_BAND_5GHZ]; + if (!sband) + return; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + + if (!brcms_is_radar_freq(ch->center_freq)) + continue; + + /* + * All channels in this range should be passive and have + * DFS enabled. + */ + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch->flags |= IEEE80211_CHAN_RADAR | + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; } -#ifdef SUPPORT_40MHZ - /* - * We know we are now checking a 40MHZ channel, so we should - * only be here for NPHYS - */ - if (BRCMS_ISNPHY(wlc->band) || BRCMS_ISSSLPNPHY(wlc->band)) { - u8 upper_sideband = 0, idx; - u8 num_ch20_entries = - sizeof(chan20_info) / sizeof(struct chan20_info); - - if (!VALID_40CHANSPEC_IN_BAND(wlc, chspec_bandunit(chspec))) - return false; - - if (dualband) { - if (!brcms_c_valid_channel20_db(wlc->cmi, - lower_20_sb(channel)) || - !brcms_c_valid_channel20_db(wlc->cmi, - upper_20_sb(channel))) - return false; - } else { - if (!brcms_c_valid_channel20(wlc->cmi, - lower_20_sb(channel)) || - !brcms_c_valid_channel20(wlc->cmi, - upper_20_sb(channel))) - return false; +} + +static void +brcms_reg_apply_beaconing_flags(struct wiphy *wiphy, + enum nl80211_reg_initiator initiator) +{ + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + const struct ieee80211_reg_rule *rule; + int band, i, ret; + + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + sband = wiphy->bands[band]; + if (!sband) + continue; + + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + + if (ch->flags & + (IEEE80211_CHAN_DISABLED | IEEE80211_CHAN_RADAR)) + continue; + + if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { + ret = freq_reg_info(wiphy, ch->center_freq, + 0, &rule); + if (ret) + continue; + + if (!(rule->flags & NL80211_RRF_NO_IBSS)) + ch->flags &= ~IEEE80211_CHAN_NO_IBSS; + if (!(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); + } } + } +} + +static int brcms_reg_notifier(struct wiphy *wiphy, + struct regulatory_request *request) +{ + struct ieee80211_hw *hw = wiphy_to_ieee80211_hw(wiphy); + struct brcms_info *wl = hw->priv; + struct brcms_c_info *wlc = wl->wlc; + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + int band, i; + bool ch_found = false; + + brcms_reg_apply_radar_flags(wiphy); + + if (request->initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) + brcms_reg_apply_beaconing_flags(wiphy, request->initiator); + + /* Disable radio if all channels disallowed by regulatory */ + for (band = 0; !ch_found && band < IEEE80211_NUM_BANDS; band++) { + sband = wiphy->bands[band]; + if (!sband) + continue; + + for (i = 0; !ch_found && i < sband->n_channels; i++) { + ch = &sband->channels[i]; - /* find the lower sideband info in the sideband array */ - for (idx = 0; idx < num_ch20_entries; idx++) { - if (chan20_info[idx].sb == lower_20_sb(channel)) - upper_sideband = chan20_info[idx].adj_sbs; + if (!(ch->flags & IEEE80211_CHAN_DISABLED)) + ch_found = true; } - /* check that the lower sideband allows an upper sideband */ - if ((upper_sideband & (CH_UPPER_SB | CH_EWA_VALID)) == - (CH_UPPER_SB | CH_EWA_VALID)) - return true; - return false; } -#endif /* 40 MHZ */ - return false; + if (ch_found) { + mboolclr(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); + } else { + mboolset(wlc->pub->radio_disabled, WL_RADIO_COUNTRY_DISABLE); + wiphy_err(wlc->wiphy, "wl%d: %s: no valid channel for \"%s\"\n", + wlc->pub->unit, __func__, request->alpha2); + } + + if (wlc->pub->_nbands > 1 || wlc->band->bandtype == BRCM_BAND_2G) + wlc_phy_chanspec_ch14_widefilter_set(wlc->band->pi, + brcms_c_japan_ccode(request->alpha2)); + + return 0; } -bool brcms_c_valid_chanspec_db(struct brcms_cm_info *wlc_cm, u16 chspec) +void brcms_c_regd_init(struct brcms_c_info *wlc) { - return brcms_c_valid_chanspec_ext(wlc_cm, chspec, true); + struct wiphy *wiphy = wlc->wiphy; + const struct brcms_regd *regd = wlc->cmi->world_regd; + struct ieee80211_supported_band *sband; + struct ieee80211_channel *ch; + struct brcms_chanvec sup_chan; + struct brcms_band *band; + int band_idx, i; + + /* Disable any channels not supported by the phy */ + for (band_idx = 0; band_idx < IEEE80211_NUM_BANDS; band_idx++) { + if (band_idx == IEEE80211_BAND_2GHZ) + band = wlc->bandstate[BAND_2G_INDEX]; + else + band = wlc->bandstate[BAND_5G_INDEX]; + + /* skip if band not initialized */ + if (band->pi == NULL) + continue; + + wlc_phy_chanspec_band_validch(band->pi, band->bandtype, + &sup_chan); + + sband = wiphy->bands[band_idx]; + for (i = 0; i < sband->n_channels; i++) { + ch = &sband->channels[i]; + if (!isset(sup_chan.vec, ch->hw_value)) + ch->flags |= IEEE80211_CHAN_DISABLED; + } + } + + wlc->wiphy->reg_notifier = brcms_reg_notifier; + wlc->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | + WIPHY_FLAG_STRICT_REGULATORY; + wiphy_apply_custom_regulatory(wlc->wiphy, regd->regdomain); + brcms_reg_apply_beaconing_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER); } --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c @@ -500,8 +500,10 @@ params_le->active_time = cpu_to_le32(-1); params_le->passive_time = cpu_to_le32(-1); params_le->home_time = cpu_to_le32(-1); - if (ssid && ssid->SSID_len) - memcpy(¶ms_le->ssid_le, ssid, sizeof(struct brcmf_ssid)); + if (ssid && ssid->SSID_len) { + params_le->ssid_le.SSID_len = cpu_to_le32(ssid->SSID_len); + memcpy(¶ms_le->ssid_le.SSID, ssid->SSID, ssid->SSID_len); + } } static s32 --- linux-3.5.0.orig/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c +++ linux-3.5.0/drivers/net/wireless/brcm80211/brcmfmac/dhd_common.c @@ -764,8 +764,11 @@ { char iovbuf[32]; int retcode; + __le32 arp_mode_le; - brcmf_c_mkiovar("arp_ol", (char *)&arp_mode, 4, iovbuf, sizeof(iovbuf)); + arp_mode_le = cpu_to_le32(arp_mode); + brcmf_c_mkiovar("arp_ol", (char *)&arp_mode_le, 4, iovbuf, + sizeof(iovbuf)); retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); retcode = retcode >= 0 ? 0 : retcode; @@ -781,8 +784,11 @@ { char iovbuf[32]; int retcode; + __le32 arp_enable_le; - brcmf_c_mkiovar("arpoe", (char *)&arp_enable, 4, + arp_enable_le = cpu_to_le32(arp_enable); + + brcmf_c_mkiovar("arpoe", (char *)&arp_enable_le, 4, iovbuf, sizeof(iovbuf)); retcode = brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -802,10 +808,10 @@ char buf[128], *ptr; u32 dongle_align = drvr->bus_if->align; u32 glom = 0; - u32 roaming = 1; - uint bcn_timeout = 3; - int scan_assoc_time = 40; - int scan_unassoc_time = 40; + __le32 roaming_le = cpu_to_le32(1); + __le32 bcn_timeout_le = cpu_to_le32(3); + __le32 scan_assoc_time_le = cpu_to_le32(40); + __le32 scan_unassoc_time_le = cpu_to_le32(40); int i; mutex_lock(&drvr->proto_block); @@ -840,14 +846,14 @@ /* Setup timeout if Beacons are lost and roam is off to report link down */ - brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout, 4, iovbuf, + brcmf_c_mkiovar("bcn_timeout", (char *)&bcn_timeout_le, 4, iovbuf, sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); /* Enable/Disable build-in roaming to allowed ext supplicant to take of romaing */ - brcmf_c_mkiovar("roam_off", (char *)&roaming, 4, + brcmf_c_mkiovar("roam_off", (char *)&roaming_le, 4, iovbuf, sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_VAR, iovbuf, sizeof(iovbuf)); @@ -859,9 +865,9 @@ sizeof(iovbuf)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_CHANNEL_TIME, - (char *)&scan_assoc_time, sizeof(scan_assoc_time)); + (char *)&scan_assoc_time_le, sizeof(scan_assoc_time_le)); brcmf_proto_cdc_set_dcmd(drvr, 0, BRCMF_C_SET_SCAN_UNASSOC_TIME, - (char *)&scan_unassoc_time, sizeof(scan_unassoc_time)); + (char *)&scan_unassoc_time_le, sizeof(scan_unassoc_time_le)); /* Set and enable ARP offload feature */ brcmf_c_arp_offload_set(drvr, BRCMF_ARPOL_MODE); --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-tx.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-tx.c @@ -1094,29 +1094,6 @@ } } -static int iwl_reclaim(struct iwl_priv *priv, int sta_id, int tid, - int txq_id, int ssn, struct sk_buff_head *skbs) -{ - if (unlikely(txq_id >= IWLAGN_FIRST_AMPDU_QUEUE && - tid != IWL_TID_NON_QOS && - txq_id != priv->tid_data[sta_id][tid].agg.txq_id)) { - /* - * FIXME: this is a uCode bug which need to be addressed, - * log the information and return for now. - * Since it is can possibly happen very often and in order - * not to fill the syslog, don't use IWL_ERR or IWL_WARN - */ - IWL_DEBUG_TX_QUEUES(priv, - "Bad queue mapping txq_id=%d, agg_txq[sta:%d,tid:%d]=%d\n", - txq_id, sta_id, tid, - priv->tid_data[sta_id][tid].agg.txq_id); - return 1; - } - - iwl_trans_reclaim(priv->trans, txq_id, ssn, skbs); - return 0; -} - int iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb, struct iwl_device_cmd *cmd) { @@ -1175,8 +1152,8 @@ next_reclaimed); } - /*we can free until ssn % q.n_bd not inclusive */ - WARN_ON(iwl_reclaim(priv, sta_id, tid, txq_id, ssn, &skbs)); + iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs); + iwlagn_check_ratid_empty(priv, sta_id, tid); freed = 0; @@ -1289,16 +1266,27 @@ return 0; } + if (unlikely(scd_flow != agg->txq_id)) { + /* + * FIXME: this is a uCode bug which need to be addressed, + * log the information and return for now. + * Since it is can possibly happen very often and in order + * not to fill the syslog, don't use IWL_ERR or IWL_WARN + */ + IWL_DEBUG_TX_QUEUES(priv, + "Bad queue mapping txq_id=%d, agg_txq[sta:%d,tid:%d]=%d\n", + scd_flow, sta_id, tid, agg->txq_id); + spin_unlock(&priv->sta_lock); + return 0; + } + __skb_queue_head_init(&reclaimed_skbs); /* Release all TFDs before the SSN, i.e. all TFDs in front of * block-ack window (we assume that they've been successfully * transmitted ... if not, it's too late anyway). */ - if (iwl_reclaim(priv, sta_id, tid, scd_flow, - ba_resp_scd_ssn, &reclaimed_skbs)) { - spin_unlock(&priv->sta_lock); - return 0; - } + iwl_trans_reclaim(priv->trans, scd_flow, ba_resp_scd_ssn, + &reclaimed_skbs); IWL_DEBUG_TX_REPLY(priv, "REPLY_COMPRESSED_BA [%d] Received from %pM, " "sta_id = %d\n", --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-lib.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-lib.c @@ -617,6 +617,11 @@ struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; int ave_rssi; + if (!ctx->vif || (ctx->vif->type != NL80211_IFTYPE_STATION)) { + IWL_DEBUG_INFO(priv, "BSS ctx not active or not in sta mode\n"); + return false; + } + ave_rssi = ieee80211_ave_rssi(ctx->vif); if (!ave_rssi) { /* no rssi data, no changes to reduce tx power */ --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c @@ -318,6 +318,14 @@ rxb->page_dma = dma_map_page(trans->dev, page, 0, PAGE_SIZE << trans_pcie->rx_page_order, DMA_FROM_DEVICE); + if (dma_mapping_error(trans->dev, rxb->page_dma)) { + rxb->page = NULL; + spin_lock_irqsave(&rxq->lock, flags); + list_add(&rxb->list, &rxq->rx_used); + spin_unlock_irqrestore(&rxq->lock, flags); + __free_pages(page, trans_pcie->rx_page_order); + return; + } /* dma address must be no more than 36 bits */ BUG_ON(rxb->page_dma & ~DMA_BIT_MASK(36)); /* and also 256 byte aligned! */ @@ -467,8 +475,19 @@ dma_map_page(trans->dev, rxb->page, 0, PAGE_SIZE << trans_pcie->rx_page_order, DMA_FROM_DEVICE); - list_add_tail(&rxb->list, &rxq->rx_free); - rxq->free_count++; + if (dma_mapping_error(trans->dev, rxb->page_dma)) { + /* + * free the page(s) as well to not break + * the invariant that the items on the used + * list have no page(s) + */ + __free_pages(rxb->page, trans_pcie->rx_page_order); + rxb->page = NULL; + list_add_tail(&rxb->list, &rxq->rx_used); + } else { + list_add_tail(&rxb->list, &rxq->rx_free); + rxq->free_count++; + } } else list_add_tail(&rxb->list, &rxq->rx_used); spin_unlock_irqrestore(&rxq->lock, flags); @@ -559,7 +578,7 @@ } iwl_dump_csr(trans); - iwl_dump_fh(trans, NULL, false); + iwl_dump_fh(trans, NULL); iwl_op_mode_nic_error(trans->op_mode); } @@ -900,12 +919,20 @@ * back-to-back ISRs and sporadic interrupts from our NIC. * If we have something to service, the tasklet will re-enable ints. * If we *don't* have something, we'll re-enable before leaving here. */ - inta_mask = iwl_read32(trans, CSR_INT_MASK); /* just for debug */ + inta_mask = iwl_read32(trans, CSR_INT_MASK); iwl_write32(trans, CSR_INT_MASK, 0x00000000); /* Discover which interrupts are active/pending */ inta = iwl_read32(trans, CSR_INT); + if (inta & (~inta_mask)) { + IWL_DEBUG_ISR(trans, + "We got a masked interrupt (0x%08x)...Ack and ignore\n", + inta & (~inta_mask)); + iwl_write32(trans, CSR_INT, inta & (~inta_mask)); + inta &= inta_mask; + } + /* Ignore interrupt if there's nothing in NIC to service. * This may be due to IRQ shared with another device, * or due to sporadic interrupts thrown from our NIC. */ @@ -989,7 +1016,7 @@ * If we have something to service, the tasklet will re-enable ints. * If we *don't* have something, we'll re-enable before leaving here. */ - inta_mask = iwl_read32(trans, CSR_INT_MASK); /* just for debug */ + inta_mask = iwl_read32(trans, CSR_INT_MASK); iwl_write32(trans, CSR_INT_MASK, 0x00000000); --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-mac80211.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-mac80211.c @@ -1343,6 +1343,20 @@ vif_priv->ctx = ctx; ctx->vif = vif; + /* + * In SNIFFER device type, the firmware reports the FCS to + * the host, rather than snipping it off. Unfortunately, + * mac80211 doesn't (yet) provide a per-packet flag for + * this, so that we have to set the hardware flag based + * on the interfaces added. As the monitor interface can + * only be present by itself, and will be removed before + * other interfaces are added, this is safe. + */ + if (vif->type == NL80211_IFTYPE_MONITOR) + priv->hw->flags |= IEEE80211_HW_RX_INCLUDES_FCS; + else + priv->hw->flags &= ~IEEE80211_HW_RX_INCLUDES_FCS; + err = iwl_setup_interface(priv, ctx); if (!err || reset) goto out; --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c @@ -1019,12 +1019,12 @@ * As a consequence, it's not as complicated as it sounds, just add * any lower rates to the ACK rate bitmap. */ - if (IWL_RATE_11M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE; - if (IWL_RATE_5M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE; - if (IWL_RATE_2M_INDEX < lowest_present_ofdm) - ofdm |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_11M_INDEX < lowest_present_cck) + cck |= IWL_RATE_11M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_5M_INDEX < lowest_present_cck) + cck |= IWL_RATE_5M_MASK >> IWL_FIRST_CCK_RATE; + if (IWL_RATE_2M_INDEX < lowest_present_cck) + cck |= IWL_RATE_2M_MASK >> IWL_FIRST_CCK_RATE; /* 1M already there or needed so always add */ cck |= IWL_RATE_1M_MASK >> IWL_FIRST_CCK_RATE; --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-sta.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-sta.c @@ -236,6 +236,7 @@ mimo_ps_mode = (sta_ht_inf->cap & IEEE80211_HT_CAP_SM_PS) >> 2; IWL_DEBUG_INFO(priv, "STA %pM SM PS mode: %s\n", + sta->addr, (mimo_ps_mode == WLAN_HT_CAP_SM_PS_STATIC) ? "static" : (mimo_ps_mode == WLAN_HT_CAP_SM_PS_DYNAMIC) ? --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c @@ -1437,6 +1437,7 @@ return err; err_free_irq: + trans_pcie->irq_requested = false; free_irq(trans_pcie->irq, trans); error: iwl_free_isr_ict(trans); @@ -1654,13 +1655,9 @@ #undef IWL_CMD } -int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display) +int iwl_dump_fh(struct iwl_trans *trans, char **buf) { int i; -#ifdef CONFIG_IWLWIFI_DEBUG - int pos = 0; - size_t bufsz = 0; -#endif static const u32 fh_tbl[] = { FH_RSCSR_CHNL0_STTS_WPTR_REG, FH_RSCSR_CHNL0_RBDCB_BASE_REG, @@ -1672,29 +1669,35 @@ FH_TSSR_TX_STATUS_REG, FH_TSSR_TX_ERROR_REG }; -#ifdef CONFIG_IWLWIFI_DEBUG - if (display) { - bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; + +#ifdef CONFIG_IWLWIFI_DEBUGFS + if (buf) { + int pos = 0; + size_t bufsz = ARRAY_SIZE(fh_tbl) * 48 + 40; + *buf = kmalloc(bufsz, GFP_KERNEL); if (!*buf) return -ENOMEM; + pos += scnprintf(*buf + pos, bufsz - pos, "FH register values:\n"); - for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) { + + for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) pos += scnprintf(*buf + pos, bufsz - pos, " %34s: 0X%08x\n", get_fh_string(fh_tbl[i]), iwl_read_direct32(trans, fh_tbl[i])); - } + return pos; } #endif + IWL_ERR(trans, "FH register values:\n"); - for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) { + for (i = 0; i < ARRAY_SIZE(fh_tbl); i++) IWL_ERR(trans, " %34s: 0X%08x\n", get_fh_string(fh_tbl[i]), iwl_read_direct32(trans, fh_tbl[i])); - } + return 0; } @@ -1989,11 +1992,11 @@ size_t count, loff_t *ppos) { struct iwl_trans *trans = file->private_data; - char *buf; + char *buf = NULL; int pos = 0; ssize_t ret = -EFAULT; - ret = pos = iwl_dump_fh(trans, &buf, true); + ret = pos = iwl_dump_fh(trans, &buf); if (buf) { ret = simple_read_from_buffer(user_buf, count, ppos, buf, pos); --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-trans-pcie-int.h @@ -355,7 +355,7 @@ /***************************************************** * Error handling ******************************************************/ -int iwl_dump_fh(struct iwl_trans *trans, char **buf, bool display); +int iwl_dump_fh(struct iwl_trans *trans, char **buf); void iwl_dump_csr(struct iwl_trans *trans); /***************************************************** --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-rs.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-rs.c @@ -709,11 +709,14 @@ */ static bool rs_use_green(struct ieee80211_sta *sta) { - struct iwl_station_priv *sta_priv = (void *)sta->drv_priv; - struct iwl_rxon_context *ctx = sta_priv->ctx; - - return (sta->ht_cap.cap & IEEE80211_HT_CAP_GRN_FLD) && - !(ctx->ht.non_gf_sta_present); + /* + * There's a bug somewhere in this code that causes the + * scaling to get stuck because GF+SGI can't be combined + * in SISO rates. Until we find that bug, disable GF, it + * has only limited benefit and we still interoperate with + * GF APs since we can always receive GF transmissions. + */ + return false; } /** --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-debugfs.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-debugfs.c @@ -128,6 +128,9 @@ const struct fw_img *img; size_t bufsz; + if (!iwl_is_ready_rf(priv)) + return -EAGAIN; + /* default is to dump the entire data segment */ if (!priv->dbgfs_sram_offset && !priv->dbgfs_sram_len) { priv->dbgfs_sram_offset = 0x800000; --- linux-3.5.0.orig/drivers/net/wireless/iwlwifi/iwl-agn-devices.c +++ linux-3.5.0/drivers/net/wireless/iwlwifi/iwl-agn-devices.c @@ -653,7 +653,7 @@ * See iwlagn_mac_channel_switch. */ struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS]; - struct iwl6000_channel_switch_cmd cmd; + struct iwl6000_channel_switch_cmd *cmd; const struct iwl_channel_info *ch_info; u32 switch_time_in_usec, ucode_switch_time; u16 ch; @@ -663,18 +663,25 @@ struct ieee80211_vif *vif = ctx->vif; struct iwl_host_cmd hcmd = { .id = REPLY_CHANNEL_SWITCH, - .len = { sizeof(cmd), }, + .len = { sizeof(*cmd), }, .flags = CMD_SYNC, - .data = { &cmd, }, + .dataflags[0] = IWL_HCMD_DFL_NOCOPY, }; + int err; - cmd.band = priv->band == IEEE80211_BAND_2GHZ; + cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); + if (!cmd) + return -ENOMEM; + + hcmd.data[0] = cmd; + + cmd->band = priv->band == IEEE80211_BAND_2GHZ; ch = ch_switch->channel->hw_value; IWL_DEBUG_11H(priv, "channel switch from %u to %u\n", ctx->active.channel, ch); - cmd.channel = cpu_to_le16(ch); - cmd.rxon_flags = ctx->staging.flags; - cmd.rxon_filter_flags = ctx->staging.filter_flags; + cmd->channel = cpu_to_le16(ch); + cmd->rxon_flags = ctx->staging.flags; + cmd->rxon_filter_flags = ctx->staging.filter_flags; switch_count = ch_switch->count; tsf_low = ch_switch->timestamp & 0x0ffffffff; /* @@ -690,30 +697,32 @@ switch_count = 0; } if (switch_count <= 1) - cmd.switch_time = cpu_to_le32(priv->ucode_beacon_time); + cmd->switch_time = cpu_to_le32(priv->ucode_beacon_time); else { switch_time_in_usec = vif->bss_conf.beacon_int * switch_count * TIME_UNIT; ucode_switch_time = iwl_usecs_to_beacons(priv, switch_time_in_usec, beacon_interval); - cmd.switch_time = iwl_add_beacon_time(priv, - priv->ucode_beacon_time, - ucode_switch_time, - beacon_interval); + cmd->switch_time = iwl_add_beacon_time(priv, + priv->ucode_beacon_time, + ucode_switch_time, + beacon_interval); } IWL_DEBUG_11H(priv, "uCode time for the switch is 0x%x\n", - cmd.switch_time); + cmd->switch_time); ch_info = iwl_get_channel_info(priv, priv->band, ch); if (ch_info) - cmd.expect_beacon = is_channel_radar(ch_info); + cmd->expect_beacon = is_channel_radar(ch_info); else { IWL_ERR(priv, "invalid channel switch from %u to %u\n", ctx->active.channel, ch); return -EFAULT; } - return iwl_dvm_send_cmd(priv, &hcmd); + err = iwl_dvm_send_cmd(priv, &hcmd); + kfree(cmd); + return err; } struct iwl_lib_ops iwl6000_lib = { --- linux-3.5.0.orig/drivers/net/wireless/p54/p54usb.c +++ linux-3.5.0/drivers/net/wireless/p54/p54usb.c @@ -42,11 +42,12 @@ * whenever you add a new device. */ -static struct usb_device_id p54u_table[] __devinitdata = { +static struct usb_device_id p54u_table[] = { /* Version 1 devices (pci chip + net2280) */ {USB_DEVICE(0x0411, 0x0050)}, /* Buffalo WLI2-USB2-G54 */ {USB_DEVICE(0x045e, 0x00c2)}, /* Microsoft MN-710 */ {USB_DEVICE(0x0506, 0x0a11)}, /* 3COM 3CRWE254G72 */ + {USB_DEVICE(0x0675, 0x0530)}, /* DrayTek Vigor 530 */ {USB_DEVICE(0x06b9, 0x0120)}, /* Thomson SpeedTouch 120g */ {USB_DEVICE(0x0707, 0xee06)}, /* SMC 2862W-G */ {USB_DEVICE(0x07aa, 0x001c)}, /* Corega CG-WLUSB2GT */ @@ -82,7 +83,9 @@ {USB_DEVICE(0x06a9, 0x000e)}, /* Westell 802.11g USB (A90-211WG-01) */ {USB_DEVICE(0x06b9, 0x0121)}, /* Thomson SpeedTouch 121g */ {USB_DEVICE(0x0707, 0xee13)}, /* SMC 2862W-G version 2 */ + {USB_DEVICE(0x0803, 0x4310)}, /* Zoom 4410a */ {USB_DEVICE(0x083a, 0x4521)}, /* Siemens Gigaset USB Adapter 54 version 2 */ + {USB_DEVICE(0x083a, 0x4531)}, /* T-Com Sinus 154 data II */ {USB_DEVICE(0x083a, 0xc501)}, /* Zoom Wireless-G 4410 */ {USB_DEVICE(0x083a, 0xf503)}, /* Accton FD7050E ver 1010ec */ {USB_DEVICE(0x0846, 0x4240)}, /* Netgear WG111 (v2) */ @@ -101,6 +104,7 @@ {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ {USB_DEVICE(0x1413, 0x5400)}, /* Telsey 802.11g USB2.0 Adapter */ {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ + /* {USB_DEVICE(0x15a9, 0x0002)}, * Also SparkLAN WL-682 with 3887 */ {USB_DEVICE(0x1668, 0x1050)}, /* Actiontec 802UIG-1 */ {USB_DEVICE(0x1740, 0x1000)}, /* Senao NUB-350 */ {USB_DEVICE(0x2001, 0x3704)}, /* DLink DWL-G122 rev A2 */ --- linux-3.5.0.orig/drivers/net/wireless/ath/ath5k/base.c +++ linux-3.5.0/drivers/net/wireless/ath/ath5k/base.c @@ -845,7 +845,7 @@ return; dma_unmap_single(ah->dev, bf->skbaddr, bf->skb->len, DMA_TO_DEVICE); - dev_kfree_skb_any(bf->skb); + ieee80211_free_txskb(ah->hw, bf->skb); bf->skb = NULL; bf->skbaddr = 0; bf->desc->ds_data = 0; @@ -1572,7 +1572,7 @@ return; drop_packet: - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } static void --- linux-3.5.0.orig/drivers/net/wireless/ath/ath5k/mac80211-ops.c +++ linux-3.5.0/drivers/net/wireless/ath/ath5k/mac80211-ops.c @@ -61,7 +61,7 @@ u16 qnum = skb_get_queue_mapping(skb); if (WARN_ON(qnum >= ah->ah_capabilities.cap_queues.q_tx_num)) { - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); return; } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/pci.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/pci.c @@ -37,6 +37,7 @@ { PCI_VDEVICE(ATHEROS, 0x0032) }, /* PCI-E AR9485 */ { PCI_VDEVICE(ATHEROS, 0x0033) }, /* PCI-E AR9580 */ { PCI_VDEVICE(ATHEROS, 0x0034) }, /* PCI-E AR9462 */ + { PCI_VDEVICE(ATHEROS, 0x0037) }, /* PCI-E AR1111/AR9485 */ { 0 } }; @@ -123,8 +124,9 @@ if (!parent) return; - if (ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) { - /* Bluetooth coexistance requires disabling ASPM. */ + if ((ath9k_hw_get_btcoex_scheme(ah) != ATH_BTCOEX_CFG_NONE) && + (AR_SREV_9285(ah))) { + /* Bluetooth coexistance requires disabling ASPM for AR9285. */ pci_read_config_byte(pdev, pos + PCI_EXP_LNKCTL, &aspm); aspm &= ~(PCIE_LINK_STATE_L0S | PCIE_LINK_STATE_L1); pci_write_config_byte(pdev, pos + PCI_EXP_LNKCTL, aspm); @@ -312,6 +314,7 @@ * Otherwise the chip never moved to full sleep, * when no interface is up. */ + ath9k_stop_btcoex(sc); ath9k_hw_disable(sc->sc_ah); ath9k_hw_setpower(sc->sc_ah, ATH9K_PM_FULL_SLEEP); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/calib.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/calib.c @@ -69,6 +69,7 @@ if (chan && chan->noisefloor) { s8 delta = chan->noisefloor - + ATH9K_NF_CAL_NOISE_THRESH - ath9k_hw_get_default_nf(ah, chan); if (delta > 0) noise += delta; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_hw.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_hw.c @@ -307,13 +307,13 @@ /* Awake -> Sleep Setting */ INIT_INI_ARRAY(&ah->iniPcieSerdes, - PCIE_PLL_ON_CREQ_DIS_L1_2P0, - ARRAY_SIZE(PCIE_PLL_ON_CREQ_DIS_L1_2P0), + ar9462_pciephy_clkreq_disable_L1_2p0, + ARRAY_SIZE(ar9462_pciephy_clkreq_disable_L1_2p0), 2); /* Sleep -> Awake Setting */ INIT_INI_ARRAY(&ah->iniPcieSerdesLowPower, - PCIE_PLL_ON_CREQ_DIS_L1_2P0, - ARRAY_SIZE(PCIE_PLL_ON_CREQ_DIS_L1_2P0), + ar9462_pciephy_clkreq_disable_L1_2p0, + ARRAY_SIZE(ar9462_pciephy_clkreq_disable_L1_2p0), 2); /* Fast clock modal settings */ @@ -632,8 +632,8 @@ 2); else if (AR_SREV_9485_11(ah)) INIT_INI_ARRAY(&ah->iniModesRxGain, - ar9485Common_wo_xlna_rx_gain_1_1, - ARRAY_SIZE(ar9485Common_wo_xlna_rx_gain_1_1), + ar9485_common_rx_gain_1_1, + ARRAY_SIZE(ar9485_common_rx_gain_1_1), 2); else if (AR_SREV_9580(ah)) INIT_INI_ARRAY(&ah->iniModesRxGain, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ath9k.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ath9k.h @@ -309,7 +309,6 @@ u8 rxotherant; u32 *rxlink; unsigned int rxfilter; - spinlock_t rxbuflock; struct list_head rxbuf; struct ath_descdma rxdma; struct ath_buf *rx_bufptr; @@ -320,7 +319,6 @@ int ath_startrecv(struct ath_softc *sc); bool ath_stoprecv(struct ath_softc *sc); -void ath_flushrecv(struct ath_softc *sc); u32 ath_calcrxfilter(struct ath_softc *sc); int ath_rx_init(struct ath_softc *sc, int nbufs); void ath_rx_cleanup(struct ath_softc *sc); @@ -588,7 +586,6 @@ #define SC_OP_INVALID BIT(0) #define SC_OP_BEACONS BIT(1) #define SC_OP_OFFCHANNEL BIT(2) -#define SC_OP_RXFLUSH BIT(3) #define SC_OP_TSF_RESET BIT(4) #define SC_OP_BT_PRIORITY_DETECTED BIT(5) #define SC_OP_BT_SCAN BIT(6) --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/recv.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/recv.c @@ -291,8 +291,6 @@ static void ath_edma_start_recv(struct ath_softc *sc) { - spin_lock_bh(&sc->rx.rxbuflock); - ath9k_hw_rxena(sc->sc_ah); ath_rx_addbuffer_edma(sc, ATH9K_RX_QUEUE_HP, @@ -304,8 +302,6 @@ ath_opmode_init(sc); ath9k_hw_startpcureceive(sc->sc_ah, (sc->sc_flags & SC_OP_OFFCHANNEL)); - - spin_unlock_bh(&sc->rx.rxbuflock); } static void ath_edma_stop_recv(struct ath_softc *sc) @@ -322,8 +318,6 @@ int error = 0; spin_lock_init(&sc->sc_pcu_lock); - sc->sc_flags &= ~SC_OP_RXFLUSH; - spin_lock_init(&sc->rx.rxbuflock); common->rx_bufsize = IEEE80211_MAX_MPDU_LEN / 2 + sc->sc_ah->caps.rx_status_len; @@ -481,7 +475,6 @@ return 0; } - spin_lock_bh(&sc->rx.rxbuflock); if (list_empty(&sc->rx.rxbuf)) goto start_recv; @@ -502,26 +495,31 @@ ath_opmode_init(sc); ath9k_hw_startpcureceive(ah, (sc->sc_flags & SC_OP_OFFCHANNEL)); - spin_unlock_bh(&sc->rx.rxbuflock); - return 0; } +static void ath_flushrecv(struct ath_softc *sc) +{ + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) + ath_rx_tasklet(sc, 1, true); + ath_rx_tasklet(sc, 1, false); +} + bool ath_stoprecv(struct ath_softc *sc) { struct ath_hw *ah = sc->sc_ah; bool stopped, reset = false; - spin_lock_bh(&sc->rx.rxbuflock); ath9k_hw_abortpcurecv(ah); ath9k_hw_setrxfilter(ah, 0); stopped = ath9k_hw_stopdmarecv(ah, &reset); + ath_flushrecv(sc); + if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) ath_edma_stop_recv(sc); else sc->rx.rxlink = NULL; - spin_unlock_bh(&sc->rx.rxbuflock); if (!(ah->ah_flags & AH_UNPLUGGED) && unlikely(!stopped)) { @@ -533,15 +531,6 @@ return stopped && !reset; } -void ath_flushrecv(struct ath_softc *sc) -{ - sc->sc_flags |= SC_OP_RXFLUSH; - if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - ath_rx_tasklet(sc, 1, true); - ath_rx_tasklet(sc, 1, false); - sc->sc_flags &= ~SC_OP_RXFLUSH; -} - static bool ath_beacon_dtim_pending_cab(struct sk_buff *skb) { /* Check whether the Beacon frame has DTIM indicating buffered bc/mc */ @@ -778,6 +767,7 @@ return NULL; } + list_del(&bf->list); if (!bf->bf_mpdu) return bf; @@ -1781,7 +1771,6 @@ struct ieee80211_hw *hw = sc->hw; struct ieee80211_hdr *hdr; int retval; - bool decrypt_error = false; struct ath_rx_status rs; enum ath9k_rx_qtype qtype; bool edma = !!(ah->caps.hw_caps & ATH9K_HW_CAP_EDMA); @@ -1797,15 +1786,12 @@ dma_type = DMA_FROM_DEVICE; qtype = hp ? ATH9K_RX_QUEUE_HP : ATH9K_RX_QUEUE_LP; - spin_lock_bh(&sc->rx.rxbuflock); tsf = ath9k_hw_gettsf64(ah); tsf_lower = tsf & 0xffffffff; do { - /* If handling rx interrupt and flush is in progress => exit */ - if ((sc->sc_flags & SC_OP_RXFLUSH) && (flush == 0)) - break; + bool decrypt_error = false; memset(&rs, 0, sizeof(rs)); if (edma) @@ -1844,15 +1830,6 @@ ath_debug_stat_rx(sc, &rs); - /* - * If we're asked to flush receive queue, directly - * chain it back at the queue without processing it. - */ - if (sc->sc_flags & SC_OP_RXFLUSH) { - RX_STAT_INC(rx_drop_rxflush); - goto requeue_drop_frag; - } - memset(rxs, 0, sizeof(struct ieee80211_rx_status)); rxs->mactime = (tsf & ~0xffffffffULL) | rs.rs_tstamp; @@ -1988,19 +1965,18 @@ sc->rx.frag = NULL; } requeue: + list_add_tail(&bf->list, &sc->rx.rxbuf); + if (flush) + continue; + if (edma) { - list_add_tail(&bf->list, &sc->rx.rxbuf); ath_rx_edma_buf_link(sc, qtype); } else { - list_move_tail(&bf->list, &sc->rx.rxbuf); ath_rx_buf_link(sc, bf); - if (!flush) - ath9k_hw_rxena(ah); + ath9k_hw_rxena(ah); } } while (1); - spin_unlock_bh(&sc->rx.rxbuflock); - if (!(ah->imask & ATH9K_INT_RXEOL)) { ah->imask |= (ATH9K_INT_RXEOL | ATH9K_INT_RXORN); ath9k_hw_set_interrupts(ah); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_calib.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_calib.c @@ -910,6 +910,8 @@ AR_PHY_CL_TAB_1, AR_PHY_CL_TAB_2 }; + ar9003_hw_set_chain_masks(ah, ah->caps.rx_chainmask, ah->caps.tx_chainmask); + if (rtt) { if (!ar9003_hw_rtt_restore(ah, chan)) run_rtt_cal = true; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/hw.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/hw.c @@ -740,6 +740,7 @@ case AR9300_DEVID_AR9340: case AR9300_DEVID_AR9580: case AR9300_DEVID_AR9462: + case AR9485_DEVID_AR1111: break; default: if (common->bus_ops->ath_bus_type == ATH_USB) --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/main.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/main.c @@ -235,7 +235,7 @@ cancel_work_sync(&sc->hw_reset_work); } -static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) +static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx) { struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); @@ -256,14 +256,6 @@ if (!ath_drain_all_txq(sc, retry_tx)) ret = false; - if (!flush) { - if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) - ath_rx_tasklet(sc, 1, true); - ath_rx_tasklet(sc, 1, false); - } else { - ath_flushrecv(sc); - } - return ret; } @@ -321,11 +313,11 @@ struct ath_common *common = ath9k_hw_common(ah); struct ath9k_hw_cal_data *caldata = NULL; bool fastcc = true; - bool flush = false; int r; __ath_cancel_work(sc); + tasklet_disable(&sc->intr_tq); spin_lock_bh(&sc->sc_pcu_lock); if (!(sc->sc_flags & SC_OP_OFFCHANNEL)) { @@ -335,11 +327,10 @@ if (!hchan) { fastcc = false; - flush = true; hchan = ah->curchan; } - if (!ath_prepare_reset(sc, retry_tx, flush)) + if (!ath_prepare_reset(sc, retry_tx)) fastcc = false; ath_dbg(common, CONFIG, "Reset to %u MHz, HT40: %d fastcc: %d\n", @@ -357,6 +348,8 @@ out: spin_unlock_bh(&sc->sc_pcu_lock); + tasklet_enable(&sc->intr_tq); + return r; } @@ -1161,7 +1154,7 @@ return; exit: - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } static void ath9k_stop(struct ieee80211_hw *hw) @@ -1214,7 +1207,7 @@ ath9k_hw_cfg_gpio_input(ah, ah->led_pin); } - ath_prepare_reset(sc, false, true); + ath_prepare_reset(sc, false); if (sc->rx.frag) { dev_kfree_skb_any(sc->rx.frag); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/calib.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/calib.h @@ -21,6 +21,9 @@ #define AR_PHY_CCA_FILTERWINDOW_LENGTH 5 +/* Internal noise floor can vary by about 6db depending on the frequency */ +#define ATH9K_NF_CAL_NOISE_THRESH 6 + #define NUM_NF_READINGS 6 #define ATH9K_NF_CAL_HIST_MAX 5 --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h @@ -68,13 +68,13 @@ #define AR9300_BASE_ADDR 0x3ff #define AR9300_BASE_ADDR_512 0x1ff -#define AR9300_OTP_BASE 0x14000 -#define AR9300_OTP_STATUS 0x15f18 +#define AR9300_OTP_BASE (AR_SREV_9340(ah) ? 0x30000 : 0x14000) +#define AR9300_OTP_STATUS (AR_SREV_9340(ah) ? 0x30018 : 0x15f18) #define AR9300_OTP_STATUS_TYPE 0x7 #define AR9300_OTP_STATUS_VALID 0x4 #define AR9300_OTP_STATUS_ACCESS_BUSY 0x2 #define AR9300_OTP_STATUS_SM_BUSY 0x1 -#define AR9300_OTP_READ_DATA 0x15f1c +#define AR9300_OTP_READ_DATA (AR_SREV_9340(ah) ? 0x3001c : 0x15f1c) enum targetPowerHTRates { HT_TARGET_RATE_0_8_16, --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/xmit.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/xmit.c @@ -64,8 +64,7 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, - struct sk_buff *skb, - bool dequeue); + struct sk_buff *skb); enum { MCS_HT20, @@ -201,7 +200,15 @@ fi = get_frame_info(skb); bf = fi->bf; - if (bf && fi->retries) { + if (!bf) { + bf = ath_tx_setup_buffer(sc, txq, tid, skb); + if (!bf) { + ieee80211_free_txskb(sc->hw, skb); + continue; + } + } + + if (fi->retries) { list_add_tail(&bf->list, &bf_head); ath_tx_update_baw(sc, tid, bf->bf_state.seqno); ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0); @@ -330,6 +337,7 @@ } bf = list_first_entry(&sc->tx.txbuf, struct ath_buf, list); + bf->bf_next = NULL; list_del(&bf->list); spin_unlock_bh(&sc->tx.txbuflock); @@ -411,7 +419,7 @@ u16 seq_st = 0, acked_cnt = 0, txfail_cnt = 0, seq_first; u32 ba[WME_BA_BMP_SIZE >> 5]; int isaggr, txfail, txpending, sendbar = 0, needreset = 0, nbad = 0; - bool rc_update = true; + bool rc_update = true, isba; struct ieee80211_tx_rate rates[4]; struct ath_frame_info *fi; int nframes; @@ -455,13 +463,17 @@ tidno = ieee80211_get_qos_ctl(hdr)[0] & IEEE80211_QOS_CTL_TID_MASK; tid = ATH_AN_2_TID(an, tidno); seq_first = tid->seq_start; + isba = ts->ts_flags & ATH9K_TX_BA; /* * The hardware occasionally sends a tx status for the wrong TID. * In this case, the BA status cannot be considered valid and all * subframes need to be retransmitted + * + * Only BlockAcks have a TID and therefore normal Acks cannot be + * checked */ - if (tidno != ts->tid) + if (isba && tidno != ts->tid) txok = false; isaggr = bf_isaggr(bf); @@ -812,10 +824,13 @@ fi = get_frame_info(skb); bf = fi->bf; if (!fi->bf) - bf = ath_tx_setup_buffer(sc, txq, tid, skb, true); + bf = ath_tx_setup_buffer(sc, txq, tid, skb); - if (!bf) + if (!bf) { + __skb_unlink(skb, &tid->buf_q); + ieee80211_free_txskb(sc->hw, skb); continue; + } bf->bf_state.bf_type = BUF_AMPDU | BUF_AGGR; seqno = bf->bf_state.seqno; @@ -1717,9 +1732,11 @@ return; } - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); - if (!bf) + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); + if (!bf) { + ieee80211_free_txskb(sc->hw, skb); return; + } bf->bf_state.bf_type = BUF_AMPDU; INIT_LIST_HEAD(&bf_head); @@ -1743,16 +1760,12 @@ struct ath_buf *bf; bf = fi->bf; - if (!bf) - bf = ath_tx_setup_buffer(sc, txq, tid, skb, false); - - if (!bf) - return; INIT_LIST_HEAD(&bf_head); list_add_tail(&bf->list, &bf_head); bf->bf_state.bf_type = 0; + bf->bf_next = NULL; bf->bf_lastbf = bf; ath_tx_fill_desc(sc, bf, txq, fi->framelen); ath_tx_txqaddbuf(sc, txq, &bf_head, false); @@ -1820,8 +1833,7 @@ static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, - struct sk_buff *skb, - bool dequeue) + struct sk_buff *skb) { struct ath_common *common = ath9k_hw_common(sc->sc_ah); struct ath_frame_info *fi = get_frame_info(skb); @@ -1833,7 +1845,7 @@ bf = ath_tx_get_buffer(sc); if (!bf) { ath_dbg(common, XMIT, "TX buffers are full\n"); - goto error; + return NULL; } ATH_TXBUF_RESET(bf); @@ -1862,18 +1874,12 @@ ath_err(ath9k_hw_common(sc->sc_ah), "dma_mapping_error() on TX\n"); ath_tx_return_buffer(sc, bf); - goto error; + return NULL; } fi->bf = bf; return bf; - -error: - if (dequeue) - __skb_unlink(skb, &tid->buf_q); - dev_kfree_skb_any(skb); - return NULL; } /* FIXME: tx power */ @@ -1902,9 +1908,14 @@ */ ath_tx_send_ampdu(sc, tid, skb, txctl); } else { - bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false); - if (!bf) + bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb); + if (!bf) { + if (txctl->paprd) + dev_kfree_skb_any(skb); + else + ieee80211_free_txskb(sc->hw, skb); return; + } bf->bf_state.bfs_paprd = txctl->paprd; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/debug.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/debug.h @@ -184,7 +184,6 @@ * @rx_oom_err: No. of frames dropped due to OOM issues. * @rx_rate_err: No. of frames dropped due to rate errors. * @rx_too_many_frags_err: Frames dropped due to too-many-frags received. - * @rx_drop_rxflush: No. of frames dropped due to RX-FLUSH. * @rx_beacons: No. of beacons received. * @rx_frags: No. of rx-fragements received. */ @@ -203,7 +202,6 @@ u32 rx_oom_err; u32 rx_rate_err; u32 rx_too_many_frags_err; - u32 rx_drop_rxflush; u32 rx_beacons; u32 rx_frags; }; --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/debug.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/debug.c @@ -919,7 +919,6 @@ RXS_ERR("RX-LENGTH-ERR", rx_len_err); RXS_ERR("RX-OOM-ERR", rx_oom_err); RXS_ERR("RX-RATE-ERR", rx_rate_err); - RXS_ERR("RX-DROP-RXFLUSH", rx_drop_rxflush); RXS_ERR("RX-TOO-MANY-FRAGS", rx_too_many_frags_err); PHY_ERR("UNDERRUN ERR", ATH9K_PHYERR_UNDERRUN); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_phy.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_phy.c @@ -532,35 +532,20 @@ ath9k_hw_synth_delay(ah, chan, synthDelay); } -static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx) { - switch (rx) { - case 0x5: + if (ah->caps.tx_chainmask == 5 || ah->caps.rx_chainmask == 5) REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, AR_PHY_SWAP_ALT_CHAIN); - case 0x3: - case 0x1: - case 0x2: - case 0x7: - REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx); - REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx); - break; - default: - break; - } - if ((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && (tx == 0x7)) - REG_WRITE(ah, AR_SELFGEN_MASK, 0x3); - else if (AR_SREV_9462(ah)) - /* xxx only when MCI support is enabled */ - REG_WRITE(ah, AR_SELFGEN_MASK, 0x3); - else - REG_WRITE(ah, AR_SELFGEN_MASK, tx); + REG_WRITE(ah, AR_PHY_RX_CHAINMASK, rx); + REG_WRITE(ah, AR_PHY_CAL_CHAINMASK, rx); - if (tx == 0x5) { - REG_SET_BIT(ah, AR_PHY_ANALOG_SWAP, - AR_PHY_SWAP_ALT_CHAIN); - } + if (((ah->caps.hw_caps & ATH9K_HW_CAP_APM) && (tx == 0x7)) || + AR_SREV_9462(ah)) + tx = 3; + + REG_WRITE(ah, AR_SELFGEN_MASK, tx); } /* --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/hw.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/hw.h @@ -48,6 +48,7 @@ #define AR9300_DEVID_AR9580 0x0033 #define AR9300_DEVID_AR9462 0x0034 #define AR9300_DEVID_AR9330 0x0035 +#define AR9485_DEVID_AR1111 0x0037 #define AR5416_AR9100_DEVID 0x000b @@ -1007,6 +1008,7 @@ int ar9003_paprd_setup_gain_table(struct ath_hw *ah, int chain); int ar9003_paprd_init_table(struct ath_hw *ah); bool ar9003_paprd_is_done(struct ath_hw *ah); +void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); /* Hardware family op attach helpers */ void ar5008_hw_attach_phy_ops(struct ath_hw *ah); --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/htc_hst.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/htc_hst.c @@ -344,6 +344,8 @@ endpoint->ep_callbacks.tx(endpoint->ep_callbacks.priv, skb, htc_hdr->endpoint_id, txok); + } else { + kfree_skb(skb); } } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/beacon.c +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/beacon.c @@ -121,7 +121,7 @@ if (ath_tx_start(hw, skb, &txctl) != 0) { ath_dbg(common, XMIT, "CABQ TX failed\n"); - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); } } --- linux-3.5.0.orig/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h +++ linux-3.5.0/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h @@ -533,107 +533,107 @@ static const u32 ar9300Modes_high_power_tx_gain_table_2p2[][5] = { /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ - {0x0000a2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000a2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000a2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000a410, 0x000050d9, 0x000050d9, 0x000050d9, 0x000050d9}, - {0x0000a500, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a504, 0x06000003, 0x06000003, 0x04000002, 0x04000002}, - {0x0000a508, 0x0a000020, 0x0a000020, 0x08000004, 0x08000004}, - {0x0000a50c, 0x10000023, 0x10000023, 0x0b000200, 0x0b000200}, - {0x0000a510, 0x15000028, 0x15000028, 0x0f000202, 0x0f000202}, - {0x0000a514, 0x1b00002b, 0x1b00002b, 0x12000400, 0x12000400}, - {0x0000a518, 0x1f020028, 0x1f020028, 0x16000402, 0x16000402}, - {0x0000a51c, 0x2502002b, 0x2502002b, 0x19000404, 0x19000404}, - {0x0000a520, 0x2a04002a, 0x2a04002a, 0x1c000603, 0x1c000603}, - {0x0000a524, 0x2e06002a, 0x2e06002a, 0x21000a02, 0x21000a02}, - {0x0000a528, 0x3302202d, 0x3302202d, 0x25000a04, 0x25000a04}, - {0x0000a52c, 0x3804202c, 0x3804202c, 0x28000a20, 0x28000a20}, - {0x0000a530, 0x3c06202c, 0x3c06202c, 0x2c000e20, 0x2c000e20}, - {0x0000a534, 0x4108202d, 0x4108202d, 0x30000e22, 0x30000e22}, - {0x0000a538, 0x4506402d, 0x4506402d, 0x34000e24, 0x34000e24}, - {0x0000a53c, 0x4906222d, 0x4906222d, 0x38001640, 0x38001640}, - {0x0000a540, 0x4d062231, 0x4d062231, 0x3c001660, 0x3c001660}, - {0x0000a544, 0x50082231, 0x50082231, 0x3f001861, 0x3f001861}, - {0x0000a548, 0x5608422e, 0x5608422e, 0x43001a81, 0x43001a81}, - {0x0000a54c, 0x5a08442e, 0x5a08442e, 0x47001a83, 0x47001a83}, - {0x0000a550, 0x5e0a4431, 0x5e0a4431, 0x4a001c84, 0x4a001c84}, - {0x0000a554, 0x640a4432, 0x640a4432, 0x4e001ce3, 0x4e001ce3}, - {0x0000a558, 0x680a4434, 0x680a4434, 0x52001ce5, 0x52001ce5}, - {0x0000a55c, 0x6c0a6434, 0x6c0a6434, 0x56001ce9, 0x56001ce9}, - {0x0000a560, 0x6f0a6633, 0x6f0a6633, 0x5a001ceb, 0x5a001ceb}, - {0x0000a564, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a568, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a56c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a570, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a574, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a578, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a57c, 0x730c6634, 0x730c6634, 0x5d001eec, 0x5d001eec}, - {0x0000a580, 0x00800000, 0x00800000, 0x00800000, 0x00800000}, - {0x0000a584, 0x06800003, 0x06800003, 0x04800002, 0x04800002}, - {0x0000a588, 0x0a800020, 0x0a800020, 0x08800004, 0x08800004}, - {0x0000a58c, 0x10800023, 0x10800023, 0x0b800200, 0x0b800200}, - {0x0000a590, 0x15800028, 0x15800028, 0x0f800202, 0x0f800202}, - {0x0000a594, 0x1b80002b, 0x1b80002b, 0x12800400, 0x12800400}, - {0x0000a598, 0x1f820028, 0x1f820028, 0x16800402, 0x16800402}, - {0x0000a59c, 0x2582002b, 0x2582002b, 0x19800404, 0x19800404}, - {0x0000a5a0, 0x2a84002a, 0x2a84002a, 0x1c800603, 0x1c800603}, - {0x0000a5a4, 0x2e86002a, 0x2e86002a, 0x21800a02, 0x21800a02}, - {0x0000a5a8, 0x3382202d, 0x3382202d, 0x25800a04, 0x25800a04}, - {0x0000a5ac, 0x3884202c, 0x3884202c, 0x28800a20, 0x28800a20}, - {0x0000a5b0, 0x3c86202c, 0x3c86202c, 0x2c800e20, 0x2c800e20}, - {0x0000a5b4, 0x4188202d, 0x4188202d, 0x30800e22, 0x30800e22}, - {0x0000a5b8, 0x4586402d, 0x4586402d, 0x34800e24, 0x34800e24}, - {0x0000a5bc, 0x4986222d, 0x4986222d, 0x38801640, 0x38801640}, - {0x0000a5c0, 0x4d862231, 0x4d862231, 0x3c801660, 0x3c801660}, - {0x0000a5c4, 0x50882231, 0x50882231, 0x3f801861, 0x3f801861}, - {0x0000a5c8, 0x5688422e, 0x5688422e, 0x43801a81, 0x43801a81}, - {0x0000a5cc, 0x5a88442e, 0x5a88442e, 0x47801a83, 0x47801a83}, - {0x0000a5d0, 0x5e8a4431, 0x5e8a4431, 0x4a801c84, 0x4a801c84}, - {0x0000a5d4, 0x648a4432, 0x648a4432, 0x4e801ce3, 0x4e801ce3}, - {0x0000a5d8, 0x688a4434, 0x688a4434, 0x52801ce5, 0x52801ce5}, - {0x0000a5dc, 0x6c8a6434, 0x6c8a6434, 0x56801ce9, 0x56801ce9}, - {0x0000a5e0, 0x6f8a6633, 0x6f8a6633, 0x5a801ceb, 0x5a801ceb}, - {0x0000a5e4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5e8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5ec, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f0, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f4, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5f8, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, - {0x0000a5fc, 0x738c6634, 0x738c6634, 0x5d801eec, 0x5d801eec}, + {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, + {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, + {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, + {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, + {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, + {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, + {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, + {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, + {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, + {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, + {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, + {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, + {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, + {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, + {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, + {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, + {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, + {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, + {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, + {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, + {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, + {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, + {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, + {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, + {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, + {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, + {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, + {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, + {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, + {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, + {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, + {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, + {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, + {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, + {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, + {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, + {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, + {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, + {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, + {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, + {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, + {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, + {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, + {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, + {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, + {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, + {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, + {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, + {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, + {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, + {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, + {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, + {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, + {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, - {0x0000a608, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a60c, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a610, 0x01804601, 0x01804601, 0x00000000, 0x00000000}, - {0x0000a614, 0x01804601, 0x01804601, 0x01404000, 0x01404000}, - {0x0000a618, 0x01804601, 0x01804601, 0x01404501, 0x01404501}, - {0x0000a61c, 0x01804601, 0x01804601, 0x02008501, 0x02008501}, - {0x0000a620, 0x03408d02, 0x03408d02, 0x0280ca03, 0x0280ca03}, - {0x0000a624, 0x0300cc03, 0x0300cc03, 0x03010c04, 0x03010c04}, - {0x0000a628, 0x03410d04, 0x03410d04, 0x04014c04, 0x04014c04}, - {0x0000a62c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a630, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a634, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a638, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000a63c, 0x03410d04, 0x03410d04, 0x04015005, 0x04015005}, - {0x0000b2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000b2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000b2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, + {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, + {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, + {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, + {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, + {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, + {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, + {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, + {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, + {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, - {0x0000c2dc, 0x000cfff0, 0x000cfff0, 0x03aaa352, 0x03aaa352}, - {0x0000c2e0, 0x000f0000, 0x000f0000, 0x03ccc584, 0x03ccc584}, - {0x0000c2e4, 0x03f00000, 0x03f00000, 0x03f0f800, 0x03f0f800}, + {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, + {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, + {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016048, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016448, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, - {0x00016848, 0x61200001, 0x61200001, 0x66480001, 0x66480001}, + {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, }; --- linux-3.5.0.orig/drivers/net/wireless/hostap/hostap_hw.c +++ linux-3.5.0/drivers/net/wireless/hostap/hostap_hw.c @@ -68,7 +68,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.5.0.orig/drivers/net/wireless/ti/wlcore/main.c +++ linux-3.5.0/drivers/net/wireless/ti/wlcore/main.c @@ -5398,3 +5398,4 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR("Luciano Coelho "); MODULE_AUTHOR("Juuso Oikarinen "); +MODULE_FIRMWARE(WL12XX_NVS_NAME); --- linux-3.5.0.orig/drivers/net/wireless/ipw2x00/ipw2200.c +++ linux-3.5.0/drivers/net/wireless/ipw2x00/ipw2200.c @@ -10470,7 +10470,7 @@ } else len = src->len; - dst = alloc_skb(len + sizeof(*rt_hdr), GFP_ATOMIC); + dst = alloc_skb(len + sizeof(*rt_hdr) + sizeof(u16)*2, GFP_ATOMIC); if (!dst) continue; --- linux-3.5.0.orig/drivers/net/wireless/b43/main.h +++ linux-3.5.0/drivers/net/wireless/b43/main.h @@ -137,9 +137,8 @@ struct b43_request_fw_context; -int b43_do_request_fw(struct b43_request_fw_context *ctx, - const char *name, - struct b43_firmware_file *fw); +int b43_do_request_fw(struct b43_request_fw_context *ctx, const char *name, + struct b43_firmware_file *fw, bool async); void b43_do_release_fw(struct b43_firmware_file *fw); #endif /* B43_MAIN_H_ */ --- linux-3.5.0.orig/drivers/net/wireless/b43/b43.h +++ linux-3.5.0/drivers/net/wireless/b43/b43.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #include "debugfs.h" @@ -718,6 +719,10 @@ 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. */ enum b43_firmware_file_type req_type; /* Error messages for each firmware type. */ @@ -870,13 +875,6 @@ * handler, only. This basically is just the IRQ mask register. */ spinlock_t hardirq_lock; - /* The number of queues that were registered with the mac80211 subsystem - * initially. This is a backup copy of hw->queues in case hw->queues has - * to be dynamically lowered at runtime (Firmware does not support QoS). - * hw->queues has to be restored to the original value before unregistering - * from the mac80211 subsystem. */ - u16 mac80211_initially_registered_queues; - /* Set this if we call ieee80211_register_hw() and check if we call * ieee80211_unregister_hw(). */ bool hw_registred; --- linux-3.5.0.orig/drivers/net/wireless/b43/main.c +++ linux-3.5.0/drivers/net/wireless/b43/main.c @@ -2088,11 +2088,18 @@ b43warn(wl, text); } +static void b43_fw_cb(const struct firmware *firmware, void *context) +{ + struct b43_request_fw_context *ctx = context; + + ctx->blob = firmware; + complete(&ctx->fw_load_complete); +} + int b43_do_request_fw(struct b43_request_fw_context *ctx, const char *name, - struct b43_firmware_file *fw) + struct b43_firmware_file *fw, bool async) { - const struct firmware *blob; struct b43_fw_header *hdr; u32 size; int err; @@ -2131,11 +2138,31 @@ B43_WARN_ON(1); return -ENOSYS; } - err = request_firmware(&blob, ctx->fwname, ctx->dev->dev->dev); + if (async) { + /* do this part asynchronously */ + init_completion(&ctx->fw_load_complete); + err = request_firmware_nowait(THIS_MODULE, 1, ctx->fwname, + ctx->dev->dev->dev, GFP_KERNEL, + ctx, b43_fw_cb); + if (err < 0) { + pr_err("Unable to load firmware\n"); + return err; + } + /* stall here until fw ready */ + wait_for_completion(&ctx->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 + */ + } + err = request_firmware(&ctx->blob, ctx->fwname, + ctx->dev->dev->dev); if (err == -ENOENT) { snprintf(ctx->errors[ctx->req_type], sizeof(ctx->errors[ctx->req_type]), - "Firmware file \"%s\" not found\n", ctx->fwname); + "Firmware file \"%s\" not found\n", + ctx->fwname); return err; } else if (err) { snprintf(ctx->errors[ctx->req_type], @@ -2144,14 +2171,15 @@ ctx->fwname, err); return err; } - if (blob->size < sizeof(struct b43_fw_header)) +fw_ready: + if (ctx->blob->size < sizeof(struct b43_fw_header)) goto err_format; - hdr = (struct b43_fw_header *)(blob->data); + hdr = (struct b43_fw_header *)(ctx->blob->data); switch (hdr->type) { case B43_FW_TYPE_UCODE: case B43_FW_TYPE_PCM: size = be32_to_cpu(hdr->size); - if (size != blob->size - sizeof(struct b43_fw_header)) + if (size != ctx->blob->size - sizeof(struct b43_fw_header)) goto err_format; /* fallthrough */ case B43_FW_TYPE_IV: @@ -2162,7 +2190,7 @@ goto err_format; } - fw->data = blob; + fw->data = ctx->blob; fw->filename = name; fw->type = ctx->req_type; @@ -2172,7 +2200,7 @@ snprintf(ctx->errors[ctx->req_type], sizeof(ctx->errors[ctx->req_type]), "Firmware file \"%s\" format error.\n", ctx->fwname); - release_firmware(blob); + release_firmware(ctx->blob); return -EPROTO; } @@ -2223,7 +2251,7 @@ goto err_no_ucode; } } - err = b43_do_request_fw(ctx, filename, &fw->ucode); + err = b43_do_request_fw(ctx, filename, &fw->ucode, true); if (err) goto err_load; @@ -2235,7 +2263,7 @@ else goto err_no_pcm; fw->pcm_request_failed = false; - err = b43_do_request_fw(ctx, filename, &fw->pcm); + err = b43_do_request_fw(ctx, filename, &fw->pcm, false); if (err == -ENOENT) { /* We did not find a PCM file? Not fatal, but * core rev <= 10 must do without hwcrypto then. */ @@ -2296,7 +2324,7 @@ default: goto err_no_initvals; } - err = b43_do_request_fw(ctx, filename, &fw->initvals); + err = b43_do_request_fw(ctx, filename, &fw->initvals, false); if (err) goto err_load; @@ -2355,10 +2383,12 @@ default: goto err_no_initvals; } - err = b43_do_request_fw(ctx, filename, &fw->initvals_band); + err = b43_do_request_fw(ctx, filename, &fw->initvals_band, false); if (err) goto err_load; + fw->opensource = (ctx->req_type == B43_FWTYPE_OPENSOURCE); + return 0; err_no_ucode: @@ -2434,6 +2464,10 @@ goto out; start_ieee80211: + wl->hw->queues = B43_QOS_QUEUE_NUM; + if (!modparam_qos || dev->fw.opensource) + wl->hw->queues = 1; + err = ieee80211_register_hw(wl->hw); if (err) goto err_one_core_detach; @@ -2537,11 +2571,9 @@ dev->fw.hdr_format = B43_FW_HDR_410; else dev->fw.hdr_format = B43_FW_HDR_351; - dev->fw.opensource = (fwdate == 0xFFFF); + WARN_ON(dev->fw.opensource != (fwdate == 0xFFFF)); - /* Default to use-all-queues. */ - dev->wl->hw->queues = dev->wl->mac80211_initially_registered_queues; - dev->qos_enabled = !!modparam_qos; + dev->qos_enabled = dev->wl->hw->queues > 1; /* Default to firmware/hardware crypto acceleration. */ dev->hwcrypto_enabled = true; @@ -2559,14 +2591,8 @@ /* Disable hardware crypto and fall back to software crypto. */ dev->hwcrypto_enabled = false; } - if (!(fwcapa & B43_FWCAPA_QOS)) { - b43info(dev->wl, "QoS not supported by firmware\n"); - /* Disable QoS. Tweak hw->queues to 1. It will be restored before - * ieee80211_unregister to make sure the networking core can - * properly free possible resources. */ - dev->wl->hw->queues = 1; - dev->qos_enabled = false; - } + /* adding QoS support should use an offline discovery mechanism */ + WARN(fwcapa & B43_FWCAPA_QOS, "QoS in OpenFW not supported\n"); } else { b43info(dev->wl, "Loading firmware version %u.%u " "(20%.2i-%.2i-%.2i %.2i:%.2i:%.2i)\n", @@ -3394,7 +3420,7 @@ break; } if (unlikely(err)) - dev_kfree_skb(skb); /* Drop it */ + ieee80211_free_txskb(wl->hw, skb); err = 0; } @@ -3415,7 +3441,7 @@ if (unlikely(skb->len < 2 + 2 + 6)) { /* Too short, this can't be a valid frame. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(hw, skb); return; } B43_WARN_ON(skb_shinfo(skb)->nr_frags); @@ -4182,7 +4208,6 @@ mutex_unlock(&wl->mutex); cancel_delayed_work_sync(&dev->periodic_work); cancel_work_sync(&wl->tx_work); - cancel_work_sync(&wl->firmware_load); mutex_lock(&wl->mutex); dev = wl->current_dev; if (!dev || b43_status(dev) < B43_STAT_STARTED) { @@ -4225,8 +4250,12 @@ /* Drain all TX queues. */ for (queue_num = 0; queue_num < B43_QOS_QUEUE_NUM; queue_num++) { - while (skb_queue_len(&wl->tx_queue[queue_num])) - dev_kfree_skb(skb_dequeue(&wl->tx_queue[queue_num])); + while (skb_queue_len(&wl->tx_queue[queue_num])) { + struct sk_buff *skb; + + skb = skb_dequeue(&wl->tx_queue[queue_num]); + ieee80211_free_txskb(wl->hw, skb); + } } b43_mac_suspend(dev); @@ -5298,8 +5327,6 @@ hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; - hw->queues = modparam_qos ? B43_QOS_QUEUE_NUM : 1; - wl->mac80211_initially_registered_queues = hw->queues; wl->hw_registred = false; hw->max_rates = 2; SET_IEEE80211_DEV(hw, dev->dev); @@ -5371,13 +5398,12 @@ /* We must cancel any work here before unregistering from ieee80211, * as the ieee80211 unreg will destroy the workqueue. */ cancel_work_sync(&wldev->restart_work); + cancel_work_sync(&wl->firmware_load); B43_WARN_ON(!wl); + if (!wldev->fw.ucode.data) + return; /* NULL if firmware never loaded */ if (wl->current_dev == wldev && wl->hw_registred) { - /* Restore the queues count before unregistering, because firmware detect - * might have modified it. Restoring is important, so the networking - * stack can properly free resources. */ - wl->hw->queues = wl->mac80211_initially_registered_queues; b43_leds_stop(wldev); ieee80211_unregister_hw(wl->hw); } @@ -5449,13 +5475,12 @@ /* We must cancel any work here before unregistering from ieee80211, * as the ieee80211 unreg will destroy the workqueue. */ cancel_work_sync(&wldev->restart_work); + cancel_work_sync(&wl->firmware_load); B43_WARN_ON(!wl); + if (!wldev->fw.ucode.data) + return; /* NULL if firmware never loaded */ if (wl->current_dev == wldev && wl->hw_registred) { - /* Restore the queues count before unregistering, because firmware detect - * might have modified it. Restoring is important, so the networking - * stack can properly free resources. */ - wl->hw->queues = wl->mac80211_initially_registered_queues; b43_leds_stop(wldev); ieee80211_unregister_hw(wl->hw); } --- linux-3.5.0.orig/drivers/net/wireless/b43/pio.c +++ linux-3.5.0/drivers/net/wireless/b43/pio.c @@ -196,7 +196,7 @@ for (i = 0; i < ARRAY_SIZE(q->packets); i++) { pack = &(q->packets[i]); if (pack->skb) { - dev_kfree_skb_any(pack->skb); + ieee80211_free_txskb(q->dev->wl->hw, pack->skb); pack->skb = NULL; } } @@ -552,7 +552,7 @@ if (unlikely(err == -ENOKEY)) { /* Drop this packet, as we don't have the encryption key * anymore and must not transmit it unencrypted. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(dev->wl->hw, skb); err = 0; goto out; } --- linux-3.5.0.orig/drivers/net/wireless/b43/dma.h +++ linux-3.5.0/drivers/net/wireless/b43/dma.h @@ -169,7 +169,7 @@ /* DMA engine tuning knobs */ #define B43_TXRING_SLOTS 256 -#define B43_RXRING_SLOTS 64 +#define B43_RXRING_SLOTS 256 #define B43_DMA0_RX_FW598_BUFSIZE (B43_DMA0_RX_FW598_FO + IEEE80211_MAX_FRAME_LEN) #define B43_DMA0_RX_FW351_BUFSIZE (B43_DMA0_RX_FW351_FO + IEEE80211_MAX_FRAME_LEN) --- linux-3.5.0.orig/drivers/net/wireless/b43/dma.c +++ linux-3.5.0/drivers/net/wireless/b43/dma.c @@ -409,7 +409,10 @@ struct b43_dmadesc_meta *meta) { if (meta->skb) { - dev_kfree_skb_any(meta->skb); + if (ring->tx) + ieee80211_free_txskb(ring->dev->wl->hw, meta->skb); + else + dev_kfree_skb_any(meta->skb); meta->skb = NULL; } } @@ -1454,7 +1457,7 @@ if (unlikely(err == -ENOKEY)) { /* Drop this packet, as we don't have the encryption key * anymore and must not transmit it unencrypted. */ - dev_kfree_skb_any(skb); + ieee80211_free_txskb(dev->wl->hw, skb); err = 0; goto out; } --- linux-3.5.0.orig/drivers/net/wireless/rtl818x/rtl8187/dev.c +++ linux-3.5.0/drivers/net/wireless/rtl818x/rtl8187/dev.c @@ -44,7 +44,7 @@ MODULE_DESCRIPTION("RTL8187/RTL8187B USB wireless driver"); MODULE_LICENSE("GPL"); -static struct usb_device_id rtl8187_table[] __devinitdata = { +static struct usb_device_id rtl8187_table[] = { /* Asus */ {USB_DEVICE(0x0b05, 0x171d), .driver_info = DEVICE_RTL8187}, /* Belkin */ --- linux-3.5.0.orig/drivers/net/wireless/b43legacy/b43legacy.h +++ linux-3.5.0/drivers/net/wireless/b43legacy/b43legacy.h @@ -13,6 +13,7 @@ #include #include +#include #include @@ -733,6 +734,10 @@ /* Firmware data */ struct b43legacy_firmware fw; + const struct firmware *fwp; /* needed to pass fw pointer */ + + /* completion struct for firmware loading */ + struct completion fw_load_complete; /* Devicelist in struct b43legacy_wl (all 802.11 cores) */ struct list_head list; --- linux-3.5.0.orig/drivers/net/wireless/b43legacy/main.c +++ linux-3.5.0/drivers/net/wireless/b43legacy/main.c @@ -1513,9 +1513,17 @@ "and download the correct firmware (version 3).\n"); } +static void b43legacy_fw_cb(const struct firmware *firmware, void *context) +{ + struct b43legacy_wldev *dev = context; + + dev->fwp = firmware; + complete(&dev->fw_load_complete); +} + static int do_request_fw(struct b43legacy_wldev *dev, const char *name, - const struct firmware **fw) + const struct firmware **fw, bool async) { char path[sizeof(modparam_fwpostfix) + 32]; struct b43legacy_fw_header *hdr; @@ -1528,7 +1536,24 @@ snprintf(path, ARRAY_SIZE(path), "b43legacy%s/%s.fw", modparam_fwpostfix, name); - err = request_firmware(fw, path, dev->dev->dev); + b43legacyinfo(dev->wl, "Loading firmware %s\n", path); + if (async) { + init_completion(&dev->fw_load_complete); + err = request_firmware_nowait(THIS_MODULE, 1, path, + dev->dev->dev, GFP_KERNEL, + dev, b43legacy_fw_cb); + if (err) { + b43legacyerr(dev->wl, "Unable to load firmware\n"); + return err; + } + /* stall here until fw ready */ + wait_for_completion(&dev->fw_load_complete); + if (!dev->fwp) + err = -EINVAL; + *fw = dev->fwp; + } else { + err = request_firmware(fw, path, dev->dev->dev); + } if (err) { b43legacyerr(dev->wl, "Firmware file \"%s\" not found " "or load failed.\n", path); @@ -1580,7 +1605,7 @@ filename = "ucode4"; else filename = "ucode5"; - err = do_request_fw(dev, filename, &fw->ucode); + err = do_request_fw(dev, filename, &fw->ucode, true); if (err) goto err_load; } @@ -1589,7 +1614,7 @@ filename = "pcm4"; else filename = "pcm5"; - err = do_request_fw(dev, filename, &fw->pcm); + err = do_request_fw(dev, filename, &fw->pcm, false); if (err) goto err_load; } @@ -1607,7 +1632,7 @@ default: goto err_no_initvals; } - err = do_request_fw(dev, filename, &fw->initvals); + err = do_request_fw(dev, filename, &fw->initvals, false); if (err) goto err_load; } @@ -1627,7 +1652,7 @@ default: goto err_no_initvals; } - err = do_request_fw(dev, filename, &fw->initvals_band); + err = do_request_fw(dev, filename, &fw->initvals_band, false); if (err) goto err_load; } @@ -3894,6 +3919,8 @@ cancel_work_sync(&wl->firmware_load); B43legacy_WARN_ON(!wl); + if (!wldev->fw.ucode) + return; /* NULL if fw never loaded */ if (wl->current_dev == wldev) ieee80211_unregister_hw(wl->hw); --- linux-3.5.0.orig/drivers/net/caif/caif_serial.c +++ linux-3.5.0/drivers/net/caif/caif_serial.c @@ -325,6 +325,9 @@ sprintf(name, "cf%s", tty->name); dev = alloc_netdev(sizeof(*ser), name, caifdev_setup); + if (!dev) + return -ENOMEM; + ser = netdev_priv(dev); ser->tty = tty_kref_get(tty); ser->dev = dev; --- linux-3.5.0.orig/drivers/net/can/pch_can.c +++ linux-3.5.0/drivers/net/can/pch_can.c @@ -560,7 +560,7 @@ stats->rx_errors++; break; case PCH_CRC_ERR: - cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL; priv->can.can_stats.bus_error++; stats->rx_errors++; --- linux-3.5.0.orig/drivers/net/can/janz-ican3.c +++ linux-3.5.0/drivers/net/can/janz-ican3.c @@ -1250,7 +1250,6 @@ */ static int ican3_reset_module(struct ican3_dev *mod) { - u8 val = 1 << mod->num; unsigned long start; u8 runold, runnew; @@ -1264,8 +1263,7 @@ runold = ioread8(mod->dpm + TARGET_RUNNING); /* reset the module */ - iowrite8(val, &mod->ctrl->reset_assert); - iowrite8(val, &mod->ctrl->reset_deassert); + iowrite8(0x00, &mod->dpmctrl->hwreset); /* wait until the module has finished resetting and is running */ start = jiffies; --- linux-3.5.0.orig/drivers/net/can/dev.c +++ linux-3.5.0/drivers/net/can/dev.c @@ -576,8 +576,7 @@ { struct can_priv *priv = netdev_priv(dev); - if (del_timer_sync(&priv->restart_timer)) - dev_put(dev); + del_timer_sync(&priv->restart_timer); can_flush_echo_skb(dev); } EXPORT_SYMBOL_GPL(close_candev); --- linux-3.5.0.orig/drivers/net/can/ti_hecc.c +++ linux-3.5.0/drivers/net/can/ti_hecc.c @@ -746,12 +746,12 @@ } if (err_status & HECC_CANES_CRCE) { hecc_set_bit(priv, HECC_CANES, HECC_CANES_CRCE); - cf->data[2] |= CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL; } if (err_status & HECC_CANES_ACKE) { hecc_set_bit(priv, HECC_CANES, HECC_CANES_ACKE); - cf->data[2] |= CAN_ERR_PROT_LOC_ACK | + cf->data[3] |= CAN_ERR_PROT_LOC_ACK | CAN_ERR_PROT_LOC_ACK_DEL; } } @@ -984,12 +984,12 @@ struct net_device *ndev = platform_get_drvdata(pdev); struct ti_hecc_priv *priv = netdev_priv(ndev); + unregister_candev(ndev); clk_disable(priv->clk); clk_put(priv->clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); iounmap(priv->base); release_mem_region(res->start, resource_size(res)); - unregister_candev(ndev); free_candev(ndev); platform_set_drvdata(pdev, NULL); --- linux-3.5.0.orig/drivers/net/can/mcp251x.c +++ linux-3.5.0/drivers/net/can/mcp251x.c @@ -83,6 +83,11 @@ #define INSTRUCTION_LOAD_TXB(n) (0x40 + 2 * (n)) #define INSTRUCTION_READ_RXB(n) (((n) == 0) ? 0x90 : 0x94) #define INSTRUCTION_RESET 0xC0 +#define RTS_TXB0 0x01 +#define RTS_TXB1 0x02 +#define RTS_TXB2 0x04 +#define INSTRUCTION_RTS(n) (0x80 | ((n) & 0x07)) + /* MPC251x registers */ #define CANSTAT 0x0e @@ -397,6 +402,7 @@ static void mcp251x_hw_tx(struct spi_device *spi, struct can_frame *frame, int tx_buf_idx) { + struct mcp251x_priv *priv = dev_get_drvdata(&spi->dev); u32 sid, eid, exide, rtr; u8 buf[SPI_TRANSFER_BUF_LEN]; @@ -418,7 +424,10 @@ buf[TXBDLC_OFF] = (rtr << DLC_RTR_SHIFT) | frame->can_dlc; memcpy(buf + TXBDAT_OFF, frame->data, frame->can_dlc); mcp251x_hw_tx_frame(spi, buf, frame->can_dlc, tx_buf_idx); - mcp251x_write_reg(spi, TXBCTRL(tx_buf_idx), TXBCTRL_TXREQ); + + /* use INSTRUCTION_RTS, to avoid "repeated frame problem" */ + priv->spi_tx_buf[0] = INSTRUCTION_RTS(1 << tx_buf_idx); + mcp251x_spi_trans(priv->spi, 1); } static void mcp251x_hw_rx_frame(struct spi_device *spi, u8 *buf, --- linux-3.5.0.orig/drivers/net/can/usb/peak_usb/pcan_usb_pro.c +++ linux-3.5.0/drivers/net/can/usb/peak_usb/pcan_usb_pro.c @@ -532,6 +532,7 @@ struct can_frame *can_frame; struct sk_buff *skb; struct timeval tv; + struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(netdev, &can_frame); if (!skb) @@ -549,7 +550,8 @@ memcpy(can_frame->data, rx->data, can_frame->can_dlc); peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(rx->ts32), &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); netif_rx(skb); netdev->stats.rx_packets++; @@ -570,6 +572,7 @@ u8 err_mask = 0; struct sk_buff *skb; struct timeval tv; + struct skb_shared_hwtstamps *hwts; /* nothing should be sent while in BUS_OFF state */ if (dev->can.state == CAN_STATE_BUS_OFF) @@ -664,7 +667,8 @@ dev->can.state = new_state; peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); netif_rx(skb); netdev->stats.rx_packets++; netdev->stats.rx_bytes += can_frame->can_dlc; --- linux-3.5.0.orig/drivers/net/can/usb/peak_usb/pcan_usb.c +++ linux-3.5.0/drivers/net/can/usb/peak_usb/pcan_usb.c @@ -519,8 +519,10 @@ mc->pdev->dev.can.state = new_state; if (status_len & PCAN_USB_STATUSLEN_TIMESTAMP) { + struct skb_shared_hwtstamps *hwts = skb_hwtstamps(skb); + peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts->hwtstamp = timeval_to_ktime(tv); } netif_rx(skb); @@ -605,6 +607,7 @@ struct sk_buff *skb; struct can_frame *cf; struct timeval tv; + struct skb_shared_hwtstamps *hwts; skb = alloc_can_skb(mc->netdev, &cf); if (!skb) @@ -652,7 +655,8 @@ /* convert timestamp into kernel time */ peak_usb_get_ts_tv(&mc->pdev->time_ref, mc->ts16, &tv); - skb->tstamp = timeval_to_ktime(tv); + hwts = skb_hwtstamps(skb); + hwts->hwtstamp = timeval_to_ktime(tv); /* push the skb */ netif_rx(skb); --- linux-3.5.0.orig/drivers/net/can/c_can/c_can.c +++ linux-3.5.0/drivers/net/can/c_can/c_can.c @@ -446,8 +446,12 @@ priv->write_reg(priv, &priv->regs->ifregs[iface].mask1, IFX_WRITE_LOW_16BIT(mask)); + + /* According to C_CAN documentation, the reserved bit + * in IFx_MASK2 register is fixed 1 + */ priv->write_reg(priv, &priv->regs->ifregs[iface].mask2, - IFX_WRITE_HIGH_16BIT(mask)); + IFX_WRITE_HIGH_16BIT(mask) | BIT(13)); priv->write_reg(priv, &priv->regs->ifregs[iface].arb1, IFX_WRITE_LOW_16BIT(id)); @@ -914,7 +918,7 @@ break; case LEC_ACK_ERROR: netdev_dbg(dev, "ack error\n"); - cf->data[2] |= (CAN_ERR_PROT_LOC_ACK | + cf->data[3] |= (CAN_ERR_PROT_LOC_ACK | CAN_ERR_PROT_LOC_ACK_DEL); break; case LEC_BIT1_ERROR: @@ -927,7 +931,7 @@ break; case LEC_CRC_ERROR: netdev_dbg(dev, "CRC error\n"); - cf->data[2] |= (CAN_ERR_PROT_LOC_CRC_SEQ | + cf->data[3] |= (CAN_ERR_PROT_LOC_CRC_SEQ | CAN_ERR_PROT_LOC_CRC_DEL); break; default: --- linux-3.5.0.orig/drivers/net/can/mscan/mpc5xxx_can.c +++ linux-3.5.0/drivers/net/can/mscan/mpc5xxx_can.c @@ -181,7 +181,7 @@ if (!clock_name || !strcmp(clock_name, "sys")) { sys_clk = clk_get(&ofdev->dev, "sys_clk"); - if (!sys_clk) { + if (IS_ERR(sys_clk)) { dev_err(&ofdev->dev, "couldn't get sys_clk\n"); goto exit_unmap; } @@ -204,7 +204,7 @@ if (clocksrc < 0) { ref_clk = clk_get(&ofdev->dev, "ref_clk"); - if (!ref_clk) { + if (IS_ERR(ref_clk)) { dev_err(&ofdev->dev, "couldn't get ref_clk\n"); goto exit_unmap; } --- linux-3.5.0.orig/drivers/net/ethernet/8390/ne.c +++ linux-3.5.0/drivers/net/ethernet/8390/ne.c @@ -813,6 +813,7 @@ dev->irq = irq[this_dev]; dev->mem_end = bad[this_dev]; } + SET_NETDEV_DEV(dev, &pdev->dev); err = do_ne_probe(dev); if (err) { free_netdev(dev); --- linux-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -660,18 +660,7 @@ priv->hw->ring->clean_desc3(p); if (likely(skb != NULL)) { - /* - * If there's room in the queue (limit it to size) - * we add this skb back into the pool, - * if it's the right size. - */ - if ((skb_queue_len(&priv->rx_recycle) < - priv->dma_rx_size) && - skb_recycle_check(skb, priv->dma_buf_sz)) - __skb_queue_head(&priv->rx_recycle, skb); - else - dev_kfree_skb(skb); - + dev_kfree_skb(skb); priv->tx_skbuff[entry] = NULL; } @@ -1063,7 +1052,6 @@ phy_start(priv->phydev); napi_enable(&priv->napi); - skb_queue_head_init(&priv->rx_recycle); netif_start_queue(dev); return 0; @@ -1109,7 +1097,6 @@ kfree(priv->tm); #endif napi_disable(&priv->napi); - skb_queue_purge(&priv->rx_recycle); /* Free the IRQ lines */ free_irq(dev->irq, dev); @@ -1270,10 +1257,7 @@ if (likely(priv->rx_skbuff[entry] == NULL)) { struct sk_buff *skb; - skb = __skb_dequeue(&priv->rx_recycle); - if (skb == NULL) - skb = netdev_alloc_skb_ip_align(priv->dev, - bfsize); + skb = netdev_alloc_skb_ip_align(priv->dev, bfsize); if (unlikely(skb == NULL)) break; --- linux-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/stmmac.h @@ -47,7 +47,6 @@ unsigned int dirty_rx; struct sk_buff **rx_skbuff; dma_addr_t *rx_skbuff_dma; - struct sk_buff_head rx_recycle; struct net_device *dev; dma_addr_t dma_rx_phy; --- linux-3.5.0.orig/drivers/net/ethernet/stmicro/stmmac/mmc_core.c +++ linux-3.5.0/drivers/net/ethernet/stmicro/stmmac/mmc_core.c @@ -23,7 +23,9 @@ *******************************************************************************/ #include +#include #include +#include #include "mmc.h" /* MAC Management Counters register offset */ --- linux-3.5.0.orig/drivers/net/ethernet/calxeda/Kconfig +++ linux-3.5.0/drivers/net/ethernet/calxeda/Kconfig @@ -1,6 +1,6 @@ config NET_CALXEDA_XGMAC tristate "Calxeda 1G/10G XGMAC Ethernet driver" - depends on HAS_IOMEM + depends on HAS_IOMEM && ARM select CRC32 help This is the driver for the XGMAC Ethernet IP block found on Calxeda --- linux-3.5.0.orig/drivers/net/ethernet/calxeda/xgmac.c +++ linux-3.5.0/drivers/net/ethernet/calxeda/xgmac.c @@ -191,6 +191,7 @@ #define DMA_CONTROL_ST 0x00002000 /* Start/Stop Transmission */ #define DMA_CONTROL_SR 0x00000002 /* Start/Stop Receive */ #define DMA_CONTROL_DFF 0x01000000 /* Disable flush of rx frames */ +#define DMA_CONTROL_OSF 0x00000004 /* Operate on 2nd tx frame */ /* DMA Normal interrupt */ #define DMA_INTR_ENA_NIE 0x00010000 /* Normal Summary */ @@ -210,7 +211,7 @@ #define DMA_INTR_ENA_TIE 0x00000001 /* Transmit Interrupt */ #define DMA_INTR_NORMAL (DMA_INTR_ENA_NIE | DMA_INTR_ENA_RIE | \ - DMA_INTR_ENA_TUE) + DMA_INTR_ENA_TUE | DMA_INTR_ENA_TIE) #define DMA_INTR_ABNORMAL (DMA_INTR_ENA_AIE | DMA_INTR_ENA_FBE | \ DMA_INTR_ENA_RWE | DMA_INTR_ENA_RSE | \ @@ -264,7 +265,7 @@ #define XGMAC_OMR_FEF 0x00000080 /* Forward Error Frames */ #define XGMAC_OMR_DT 0x00000040 /* Drop TCP/IP csum Errors */ #define XGMAC_OMR_RSF 0x00000020 /* RX FIFO Store and Forward */ -#define XGMAC_OMR_RTC 0x00000010 /* RX Threshhold Ctrl */ +#define XGMAC_OMR_RTC_256 0x00000018 /* RX Threshhold Ctrl */ #define XGMAC_OMR_RTC_MASK 0x00000018 /* RX Threshhold Ctrl MASK */ /* XGMAC HW Features Register */ @@ -373,9 +374,9 @@ struct sk_buff **tx_skbuff; unsigned int tx_head; unsigned int tx_tail; + int tx_irq_cnt; void __iomem *base; - struct sk_buff_head rx_recycle; unsigned int dma_buf_sz; dma_addr_t dma_rx_phy; dma_addr_t dma_tx_phy; @@ -547,6 +548,10 @@ return -1; } + /* All frames should fit into a single buffer */ + if (!(status & RXDESC_FIRST_SEG) || !(status & RXDESC_LAST_SEG)) + return -1; + /* Check if packet has checksum already */ if ((status & RXDESC_FRAME_TYPE) && (status & RXDESC_EXT_STATUS) && !(ext_status & RXDESC_IP_PAYLOAD_MASK)) @@ -671,26 +676,21 @@ p = priv->dma_rx + entry; - if (priv->rx_skbuff[entry] != NULL) - continue; - - skb = __skb_dequeue(&priv->rx_recycle); - if (skb == NULL) + if (priv->rx_skbuff[entry] == NULL) { skb = netdev_alloc_skb(priv->dev, priv->dma_buf_sz); - if (unlikely(skb == NULL)) - break; + if (unlikely(skb == NULL)) + break; - priv->rx_skbuff[entry] = skb; - paddr = dma_map_single(priv->device, skb->data, - priv->dma_buf_sz, DMA_FROM_DEVICE); - desc_set_buf_addr(p, paddr, priv->dma_buf_sz); + priv->rx_skbuff[entry] = skb; + paddr = dma_map_single(priv->device, skb->data, + priv->dma_buf_sz, DMA_FROM_DEVICE); + desc_set_buf_addr(p, paddr, priv->dma_buf_sz); + } netdev_dbg(priv->dev, "rx ring: head %d, tail %d\n", priv->rx_head, priv->rx_tail); priv->rx_head = dma_ring_incr(priv->rx_head, DMA_RX_RING_SZ); - /* Ensure descriptor is in memory before handing to h/w */ - wmb(); desc_set_rx_owner(p); } } @@ -853,8 +853,6 @@ int i; void __iomem *ioaddr = priv->base; - writel(DMA_STATUS_TU | DMA_STATUS_NIS, ioaddr + XGMAC_DMA_STATUS); - while (dma_ring_cnt(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ)) { unsigned int entry = priv->tx_tail; struct sk_buff *skb = priv->tx_skbuff[entry]; @@ -890,21 +888,11 @@ desc_get_buf_len(p), DMA_TO_DEVICE); } - /* - * If there's room in the queue (limit it to size) - * we add this skb back into the pool, - * if it's the right size. - */ - if ((skb_queue_len(&priv->rx_recycle) < - DMA_RX_RING_SZ) && - skb_recycle_check(skb, priv->dma_buf_sz)) - __skb_queue_head(&priv->rx_recycle, skb); - else - dev_kfree_skb(skb); + dev_kfree_skb(skb); } if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) > - TX_THRESH) + MAX_SKB_FRAGS) netif_wake_queue(priv->dev); } @@ -933,6 +921,7 @@ desc_init_tx_desc(priv->dma_tx, DMA_TX_RING_SZ); priv->tx_tail = 0; priv->tx_head = 0; + writel(priv->dma_tx_phy, priv->base + XGMAC_DMA_TX_BASE_ADDR); writel(reg | DMA_CONTROL_ST, priv->base + XGMAC_DMA_CONTROL); writel(DMA_STATUS_TU | DMA_STATUS_TPS | DMA_STATUS_NIS | DMA_STATUS_AIS, @@ -972,7 +961,7 @@ writel(DMA_INTR_DEFAULT_MASK, ioaddr + XGMAC_DMA_INTR_ENA); /* XGMAC requires AXI bus init. This is a 'magic number' for now */ - writel(0x000100E, ioaddr + XGMAC_DMA_AXI_BUS); + writel(0x0077000E, ioaddr + XGMAC_DMA_AXI_BUS); ctrl |= XGMAC_CONTROL_DDIC | XGMAC_CONTROL_JE | XGMAC_CONTROL_ACS | XGMAC_CONTROL_CAR; @@ -980,11 +969,11 @@ ctrl |= XGMAC_CONTROL_IPC; writel(ctrl, ioaddr + XGMAC_CONTROL); - value = DMA_CONTROL_DFF; - writel(value, ioaddr + XGMAC_DMA_CONTROL); + writel(DMA_CONTROL_OSF, ioaddr + XGMAC_DMA_CONTROL); /* Set the HW DMA mode and the COE */ - writel(XGMAC_OMR_TSF | XGMAC_OMR_RSF | XGMAC_OMR_RFD | XGMAC_OMR_RFA, + writel(XGMAC_OMR_TSF | XGMAC_OMR_RFD | XGMAC_OMR_RFA | + XGMAC_OMR_RTC_256, ioaddr + XGMAC_OMR); /* Reset the MMC counters */ @@ -1017,7 +1006,6 @@ dev->dev_addr); } - skb_queue_head_init(&priv->rx_recycle); memset(&priv->xstats, 0, sizeof(struct xgmac_extra_stats)); /* Initialize the XGMAC and descriptors */ @@ -1054,7 +1042,6 @@ napi_disable(&priv->napi); writel(0, priv->base + XGMAC_DMA_INTR_ENA); - skb_queue_purge(&priv->rx_recycle); /* Disable the MAC core */ xgmac_mac_disable(priv->base); @@ -1076,19 +1063,15 @@ struct xgmac_priv *priv = netdev_priv(dev); unsigned int entry; int i; + u32 irq_flag; int nfrags = skb_shinfo(skb)->nr_frags; struct xgmac_dma_desc *desc, *first; unsigned int desc_flags; unsigned int len; dma_addr_t paddr; - if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) < - (nfrags + 1)) { - writel(DMA_INTR_DEFAULT_MASK | DMA_INTR_ENA_TIE, - priv->base + XGMAC_DMA_INTR_ENA); - netif_stop_queue(dev); - return NETDEV_TX_BUSY; - } + priv->tx_irq_cnt = (priv->tx_irq_cnt + 1) & (DMA_TX_RING_SZ/4 - 1); + irq_flag = priv->tx_irq_cnt ? 0 : TXDESC_INTERRUPT; desc_flags = (skb->ip_summed == CHECKSUM_PARTIAL) ? TXDESC_CSUM_ALL : 0; @@ -1129,9 +1112,9 @@ /* Interrupt on completition only for the latest segment */ if (desc != first) desc_set_tx_owner(desc, desc_flags | - TXDESC_LAST_SEG | TXDESC_INTERRUPT); + TXDESC_LAST_SEG | irq_flag); else - desc_flags |= TXDESC_LAST_SEG | TXDESC_INTERRUPT; + desc_flags |= TXDESC_LAST_SEG | irq_flag; /* Set owner on first desc last to avoid race condition */ wmb(); @@ -1140,6 +1123,9 @@ priv->tx_head = dma_ring_incr(entry, DMA_TX_RING_SZ); writel(1, priv->base + XGMAC_DMA_TX_POLL); + if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) < + MAX_SKB_FRAGS) + netif_stop_queue(dev); return NETDEV_TX_OK; } @@ -1155,9 +1141,6 @@ struct sk_buff *skb; int frame_len; - writel(DMA_STATUS_RI | DMA_STATUS_NIS, - priv->base + XGMAC_DMA_STATUS); - entry = priv->rx_tail; p = priv->dma_rx + entry; if (desc_get_owner(p)) @@ -1196,8 +1179,6 @@ xgmac_rx_refill(priv); - writel(1, priv->base + XGMAC_DMA_RX_POLL); - return count; } @@ -1221,7 +1202,7 @@ if (work_done < budget) { napi_complete(napi); - writel(DMA_INTR_DEFAULT_MASK, priv->base + XGMAC_DMA_INTR_ENA); + writel_relaxed(DMA_INTR_DEFAULT_MASK, priv->base + XGMAC_DMA_INTR_ENA); } return work_done; } @@ -1366,7 +1347,7 @@ struct xgmac_priv *priv = netdev_priv(dev); void __iomem *ioaddr = priv->base; - intr_status = readl(ioaddr + XGMAC_INT_STAT); + intr_status = readl_relaxed(ioaddr + XGMAC_INT_STAT); if (intr_status & XGMAC_INT_STAT_PMT) { netdev_dbg(priv->dev, "received Magic frame\n"); /* clear the PMT bits 5 and 6 by reading the PMT */ @@ -1384,9 +1365,9 @@ struct xgmac_extra_stats *x = &priv->xstats; /* read the status register (CSR5) */ - intr_status = readl(priv->base + XGMAC_DMA_STATUS); - intr_status &= readl(priv->base + XGMAC_DMA_INTR_ENA); - writel(intr_status, priv->base + XGMAC_DMA_STATUS); + intr_status = readl_relaxed(priv->base + XGMAC_DMA_STATUS); + intr_status &= readl_relaxed(priv->base + XGMAC_DMA_INTR_ENA); + writel_relaxed(intr_status, priv->base + XGMAC_DMA_STATUS); /* It displays the DMA process states (CSR5 register) */ /* ABNORMAL interrupts */ @@ -1421,8 +1402,8 @@ } /* TX/RX NORMAL interrupts */ - if (intr_status & (DMA_STATUS_RI | DMA_STATUS_TU)) { - writel(DMA_INTR_ABNORMAL, priv->base + XGMAC_DMA_INTR_ENA); + if (intr_status & (DMA_STATUS_RI | DMA_STATUS_TU | DMA_STATUS_TI)) { + writel_relaxed(DMA_INTR_ABNORMAL, priv->base + XGMAC_DMA_INTR_ENA); napi_schedule(&priv->napi); } --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/ich8lan.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/ich8lan.c @@ -3690,6 +3690,17 @@ if (hw->mac.type == e1000_ich8lan) reg |= (E1000_RFCTL_IPV6_EX_DIS | E1000_RFCTL_NEW_IPV6_EXT_DIS); ew32(RFCTL, reg); + + /* Enable ECC on Lynxpoint */ + if (hw->mac.type == e1000_pch_lpt) { + reg = er32(PBECCSTS); + reg |= E1000_PBECCSTS_ECC_ENABLE; + ew32(PBECCSTS, reg); + + reg = er32(CTRL); + reg |= E1000_CTRL_MEHE; + ew32(CTRL, reg); + } } /** --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/ethtool.c @@ -108,6 +108,8 @@ E1000_STAT("dropped_smbus", stats.mgpdc), E1000_STAT("rx_dma_failed", rx_dma_failed), E1000_STAT("tx_dma_failed", tx_dma_failed), + E1000_STAT("uncorr_ecc_errors", uncorr_errors), + E1000_STAT("corr_ecc_errors", corr_errors), }; #define E1000_GLOBAL_STATS_LEN ARRAY_SIZE(e1000_gstrings_stats) @@ -1897,7 +1899,6 @@ struct ethtool_coalesce *ec) { struct e1000_adapter *adapter = netdev_priv(netdev); - struct e1000_hw *hw = &adapter->hw; if ((ec->rx_coalesce_usecs > E1000_MAX_ITR_USECS) || ((ec->rx_coalesce_usecs > 4) && @@ -1916,9 +1917,9 @@ } if (adapter->itr_setting != 0) - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); else - ew32(ITR, 0); + e1000e_write_itr(adapter, 0); return 0; } @@ -2062,6 +2063,7 @@ .get_coalesce = e1000_get_coalesce, .set_coalesce = e1000_set_coalesce, .get_rxnfc = e1000_get_rxnfc, + .get_ts_info = ethtool_op_get_ts_info, }; void e1000e_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/defines.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/defines.h @@ -233,6 +233,7 @@ #define E1000_CTRL_FRCDPX 0x00001000 /* Force Duplex */ #define E1000_CTRL_LANPHYPC_OVERRIDE 0x00010000 /* SW control of LANPHYPC */ #define E1000_CTRL_LANPHYPC_VALUE 0x00020000 /* SW value of LANPHYPC */ +#define E1000_CTRL_MEHE 0x00080000 /* Memory Error Handling Enable */ #define E1000_CTRL_SWDPIN0 0x00040000 /* SWDPIN 0 value */ #define E1000_CTRL_SWDPIN1 0x00080000 /* SWDPIN 1 value */ #define E1000_CTRL_SWDPIO0 0x00400000 /* SWDPIN 0 Input or output */ @@ -391,6 +392,12 @@ #define E1000_PBS_16K E1000_PBA_16K +/* Uncorrectable/correctable ECC Error counts and enable bits */ +#define E1000_PBECCSTS_CORR_ERR_CNT_MASK 0x000000FF +#define E1000_PBECCSTS_UNCORR_ERR_CNT_MASK 0x0000FF00 +#define E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT 8 +#define E1000_PBECCSTS_ECC_ENABLE 0x00010000 + #define IFS_MAX 80 #define IFS_MIN 40 #define IFS_RATIO 4 @@ -410,6 +417,7 @@ #define E1000_ICR_RXSEQ 0x00000008 /* Rx sequence error */ #define E1000_ICR_RXDMT0 0x00000010 /* Rx desc min. threshold (0) */ #define E1000_ICR_RXT0 0x00000080 /* Rx timer intr (ring 0) */ +#define E1000_ICR_ECCER 0x00400000 /* Uncorrectable ECC Error */ #define E1000_ICR_INT_ASSERTED 0x80000000 /* If this bit asserted, the driver should claim the interrupt */ #define E1000_ICR_RXQ0 0x00100000 /* Rx Queue 0 Interrupt */ #define E1000_ICR_RXQ1 0x00200000 /* Rx Queue 1 Interrupt */ @@ -446,6 +454,7 @@ #define E1000_IMS_RXSEQ E1000_ICR_RXSEQ /* Rx sequence error */ #define E1000_IMS_RXDMT0 E1000_ICR_RXDMT0 /* Rx desc min. threshold */ #define E1000_IMS_RXT0 E1000_ICR_RXT0 /* Rx timer intr */ +#define E1000_IMS_ECCER E1000_ICR_ECCER /* Uncorrectable ECC Error */ #define E1000_IMS_RXQ0 E1000_ICR_RXQ0 /* Rx Queue 0 Interrupt */ #define E1000_IMS_RXQ1 E1000_ICR_RXQ1 /* Rx Queue 1 Interrupt */ #define E1000_IMS_TXQ0 E1000_ICR_TXQ0 /* Tx Queue 0 Interrupt */ --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/param.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/param.c @@ -199,16 +199,19 @@ case enable_option: switch (*value) { case OPTION_ENABLED: - e_info("%s Enabled\n", opt->name); + dev_info(&adapter->pdev->dev, "%s Enabled\n", + opt->name); return 0; case OPTION_DISABLED: - e_info("%s Disabled\n", opt->name); + dev_info(&adapter->pdev->dev, "%s Disabled\n", + opt->name); return 0; } break; case range_option: if (*value >= opt->arg.r.min && *value <= opt->arg.r.max) { - e_info("%s set to %i\n", opt->name, *value); + dev_info(&adapter->pdev->dev, "%s set to %i\n", + opt->name, *value); return 0; } break; @@ -220,7 +223,8 @@ ent = &opt->arg.l.p[i]; if (*value == ent->i) { if (ent->str[0] != '\0') - e_info("%s\n", ent->str); + dev_info(&adapter->pdev->dev, "%s\n", + ent->str); return 0; } } @@ -230,8 +234,8 @@ BUG(); } - e_info("Invalid %s value specified (%i) %s\n", opt->name, *value, - opt->err); + dev_info(&adapter->pdev->dev, "Invalid %s value specified (%i) %s\n", + opt->name, *value, opt->err); *value = opt->def; return -1; } @@ -251,8 +255,10 @@ int bd = adapter->bd_number; if (bd >= E1000_MAX_NIC) { - e_notice("Warning: no configuration for board #%i\n", bd); - e_notice("Using defaults for all values\n"); + dev_notice(&adapter->pdev->dev, + "Warning: no configuration for board #%i\n", bd); + dev_notice(&adapter->pdev->dev, + "Using defaults for all values\n"); } { /* Transmit Interrupt Delay */ @@ -366,27 +372,32 @@ * default values */ if (adapter->itr > 4) - e_info("%s set to default %d\n", opt.name, - adapter->itr); + dev_info(&adapter->pdev->dev, + "%s set to default %d\n", opt.name, + adapter->itr); } adapter->itr_setting = adapter->itr; switch (adapter->itr) { case 0: - e_info("%s turned off\n", opt.name); + dev_info(&adapter->pdev->dev, "%s turned off\n", + opt.name); break; case 1: - e_info("%s set to dynamic mode\n", opt.name); + dev_info(&adapter->pdev->dev, + "%s set to dynamic mode\n", opt.name); adapter->itr = 20000; break; case 3: - e_info("%s set to dynamic conservative mode\n", - opt.name); + dev_info(&adapter->pdev->dev, + "%s set to dynamic conservative mode\n", + opt.name); adapter->itr = 20000; break; case 4: - e_info("%s set to simplified (2000-8000 ints) mode\n", - opt.name); + dev_info(&adapter->pdev->dev, + "%s set to simplified (2000-8000 ints) mode\n", + opt.name); break; default: /* --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/netdev.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/netdev.c @@ -65,6 +65,10 @@ module_param(debug, int, 0); MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); +static int eeprom_bad_csum_allow __read_mostly = 0; +module_param(eeprom_bad_csum_allow, int, 0); +MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad EEPROM checksums"); + static void e1000e_disable_aspm(struct pci_dev *pdev, u16 state); static const struct e1000_info *e1000_info_tbl[] = { @@ -178,6 +182,24 @@ pr_info("%-15s %08x %08x\n", rname, regs[0], regs[1]); } +static void e1000e_dump_ps_pages(struct e1000_adapter *adapter, + struct e1000_buffer *bi) +{ + int i; + struct e1000_ps_page *ps_page; + + for (i = 0; i < adapter->rx_ps_pages; i++) { + ps_page = &bi->ps_pages[i]; + + if (ps_page->page) { + pr_info("packet dump for ps_page %d:\n", i); + print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, + 16, 1, page_address(ps_page->page), + PAGE_SIZE, true); + } + } +} + /* * e1000e_dump - Print registers, Tx-ring and Rx-ring */ @@ -299,10 +321,10 @@ (unsigned long long)buffer_info->time_stamp, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter) && buffer_info->dma != 0) + if (netif_msg_pktdata(adapter) && buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, - 16, 1, phys_to_virt(buffer_info->dma), - buffer_info->length, true); + 16, 1, buffer_info->skb->data, + buffer_info->skb->len, true); } /* Print Rx Ring Summary */ @@ -381,10 +403,8 @@ buffer_info->skb, next_desc); if (netif_msg_pktdata(adapter)) - print_hex_dump(KERN_INFO, "", - DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt(buffer_info->dma), - adapter->rx_ps_bsize0, true); + e1000e_dump_ps_pages(adapter, + buffer_info); } } break; @@ -444,12 +464,12 @@ (unsigned long long)buffer_info->dma, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter)) + if (netif_msg_pktdata(adapter) && + buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt - (buffer_info->dma), + buffer_info->skb->data, adapter->rx_buffer_len, true); } @@ -1671,6 +1691,23 @@ mod_timer(&adapter->watchdog_timer, jiffies + 1); } + /* Reset on uncorrectable ECC error */ + if ((icr & E1000_ICR_ECCER) && (hw->mac.type == e1000_pch_lpt)) { + u32 pbeccsts = er32(PBECCSTS); + + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + + /* Do the reset outside of interrupt context */ + schedule_work(&adapter->reset_task); + + /* return immediately since reset is imminent */ + return IRQ_HANDLED; + } + if (napi_schedule_prep(&adapter->napi)) { adapter->total_tx_bytes = 0; adapter->total_tx_packets = 0; @@ -1738,6 +1775,23 @@ mod_timer(&adapter->watchdog_timer, jiffies + 1); } + /* Reset on uncorrectable ECC error */ + if ((icr & E1000_ICR_ECCER) && (hw->mac.type == e1000_pch_lpt)) { + u32 pbeccsts = er32(PBECCSTS); + + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + + /* Do the reset outside of interrupt context */ + schedule_work(&adapter->reset_task); + + /* return immediately since reset is imminent */ + return IRQ_HANDLED; + } + if (napi_schedule_prep(&adapter->napi)) { adapter->total_tx_bytes = 0; adapter->total_tx_packets = 0; @@ -2101,6 +2155,8 @@ if (adapter->msix_entries) { ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); + } else if (hw->mac.type == e1000_pch_lpt) { + ew32(IMS, IMS_ENABLE_MASK | E1000_IMS_ECCER); } else { ew32(IMS, IMS_ENABLE_MASK); } @@ -2474,6 +2530,30 @@ } /** + * e1000e_write_itr - write the ITR value to the appropriate registers + * @adapter: address of board private structure + * @itr: new ITR value to program + * + * e1000e_write_itr determines if the adapter is in MSI-X mode + * and, if so, writes the EITR registers with the ITR value. + * Otherwise, it writes the ITR value into the ITR register. + **/ +void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr) +{ + struct e1000_hw *hw = &adapter->hw; + u32 new_itr = itr ? 1000000000 / (itr * 256) : 0; + + if (adapter->msix_entries) { + int vector; + + for (vector = 0; vector < adapter->num_vectors; vector++) + writel(new_itr, hw->hw_addr + E1000_EITR_82574(vector)); + } else { + ew32(ITR, new_itr); + } +} + +/** * e1000_alloc_queues - Allocate memory for all rings * @adapter: board private structure to initialize **/ @@ -3059,7 +3139,7 @@ /* irq moderation */ ew32(RADV, adapter->rx_abs_int_delay); if ((adapter->itr_setting != 0) && (adapter->itr != 0)) - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); ctrl_ext = er32(CTRL_EXT); /* Auto-Mask interrupts upon ICR access */ @@ -3477,6 +3557,15 @@ } /* + * Alignment of Tx data is on an arbitrary byte boundary with the + * maximum size per Tx descriptor limited only to the transmit + * allocation of the packet buffer minus 96 bytes with an upper + * limit of 24KB due to receive synchronization limitations. + */ + adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, + 24 << 10); + + /* * Disable Adaptive Interrupt Moderation if 2 full packets cannot * fit in receive buffer. */ @@ -3486,14 +3575,14 @@ dev_info(&adapter->pdev->dev, "Interrupt Throttle Rate turned off\n"); adapter->flags2 |= FLAG2_DISABLE_AIM; - ew32(ITR, 0); + e1000e_write_itr(adapter, 0); } } else if (adapter->flags2 & FLAG2_DISABLE_AIM) { dev_info(&adapter->pdev->dev, "Interrupt Throttle Rate turned on\n"); adapter->flags2 &= ~FLAG2_DISABLE_AIM; adapter->itr = 20000; - ew32(ITR, 1000000000 / (adapter->itr * 256)); + e1000e_write_itr(adapter, adapter->itr); } } @@ -4240,6 +4329,16 @@ adapter->stats.mgptc += er32(MGTPTC); adapter->stats.mgprc += er32(MGTPRC); adapter->stats.mgpdc += er32(MGTPDC); + + /* Correctable ECC Errors */ + if (hw->mac.type == e1000_pch_lpt) { + u32 pbeccsts = er32(PBECCSTS); + adapter->corr_errors += + pbeccsts & E1000_PBECCSTS_CORR_ERR_CNT_MASK; + adapter->uncorr_errors += + (pbeccsts & E1000_PBECCSTS_UNCORR_ERR_CNT_MASK) >> + E1000_PBECCSTS_UNCORR_ERR_CNT_SHIFT; + } } /** @@ -4576,7 +4675,7 @@ adapter->gorc - adapter->gotc) / 10000; u32 itr = goc > 0 ? (dif * 6000 / goc + 2000) : 8000; - ew32(ITR, 1000000000 / (itr * 256)); + e1000e_write_itr(adapter, itr); } /* Cause software interrupt to ensure Rx ring is cleaned */ @@ -4745,12 +4844,9 @@ return 1; } -#define E1000_MAX_PER_TXD 8192 -#define E1000_MAX_TXD_PWR 12 - static int e1000_tx_map(struct e1000_ring *tx_ring, struct sk_buff *skb, unsigned int first, unsigned int max_per_txd, - unsigned int nr_frags, unsigned int mss) + unsigned int nr_frags) { struct e1000_adapter *adapter = tx_ring->adapter; struct pci_dev *pdev = adapter->pdev; @@ -4983,20 +5079,19 @@ static int e1000_maybe_stop_tx(struct e1000_ring *tx_ring, int size) { + BUG_ON(size > tx_ring->count); + if (e1000_desc_unused(tx_ring) >= size) return 0; return __e1000_maybe_stop_tx(tx_ring, size); } -#define TXD_USE_COUNT(S, X) (((S) >> (X)) + 1) static netdev_tx_t e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) { struct e1000_adapter *adapter = netdev_priv(netdev); struct e1000_ring *tx_ring = adapter->tx_ring; unsigned int first; - unsigned int max_per_txd = E1000_MAX_PER_TXD; - unsigned int max_txd_pwr = E1000_MAX_TXD_PWR; unsigned int tx_flags = 0; unsigned int len = skb_headlen(skb); unsigned int nr_frags; @@ -5016,18 +5111,8 @@ } mss = skb_shinfo(skb)->gso_size; - /* - * The controller does a simple calculation to - * make sure there is enough room in the FIFO before - * initiating the DMA for each buffer. The calc is: - * 4 = ceil(buffer len/mss). To make sure we don't - * overrun the FIFO, adjust the max buffer len if mss - * drops. - */ if (mss) { u8 hdr_len; - max_per_txd = min(mss << 2, max_per_txd); - max_txd_pwr = fls(max_per_txd) - 1; /* * TSO Workaround for 82571/2/3 Controllers -- if skb->data @@ -5057,12 +5142,12 @@ count++; count++; - count += TXD_USE_COUNT(len, max_txd_pwr); + count += DIV_ROUND_UP(len, adapter->tx_fifo_limit); nr_frags = skb_shinfo(skb)->nr_frags; for (f = 0; f < nr_frags; f++) - count += TXD_USE_COUNT(skb_frag_size(&skb_shinfo(skb)->frags[f]), - max_txd_pwr); + count += DIV_ROUND_UP(skb_frag_size(&skb_shinfo(skb)->frags[f]), + adapter->tx_fifo_limit); if (adapter->hw.mac.tx_pkt_filtering) e1000_transfer_dhcp_info(adapter, skb); @@ -5104,15 +5189,18 @@ tx_flags |= E1000_TX_FLAGS_NO_FCS; /* if count is 0 then mapping error has occurred */ - count = e1000_tx_map(tx_ring, skb, first, max_per_txd, nr_frags, mss); + count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, + nr_frags); if (count) { skb_tx_timestamp(skb); netdev_sent_queue(netdev, skb->len); e1000_tx_queue(tx_ring, tx_flags, count); /* Make sure there is space in the ring for the next send. */ - e1000_maybe_stop_tx(tx_ring, MAX_SKB_FRAGS + 2); - + e1000_maybe_stop_tx(tx_ring, + (MAX_SKB_FRAGS * + DIV_ROUND_UP(PAGE_SIZE, + adapter->tx_fifo_limit) + 2)); } else { dev_kfree_skb_any(skb); tx_ring->buffer_info[first].time_stamp = 0; @@ -6191,7 +6279,8 @@ } if (hw->phy.ops.check_reset_block && hw->phy.ops.check_reset_block(hw)) - e_info("PHY reset is blocked due to SOL/IDER session.\n"); + dev_info(&pdev->dev, + "PHY reset is blocked due to SOL/IDER session.\n"); /* Set initial default active device features */ netdev->features = (NETIF_F_SG | @@ -6241,9 +6330,15 @@ if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) break; if (i == 2) { - e_err("The NVM Checksum Is Not Valid\n"); - err = -EIO; - goto err_eeprom; + dev_err(&pdev->dev, "The NVM Checksum Is Not Valid\n"); + + /* if we allow bad checksums, just break */ + if (eeprom_bad_csum_allow) { + break; + } else { + err = -EIO; + goto err_eeprom; + } } } @@ -6251,13 +6346,15 @@ /* copy the MAC address */ if (e1000e_read_mac_addr(&adapter->hw)) - e_err("NVM Read Error while reading MAC address\n"); + dev_err(&pdev->dev, + "NVM Read Error while reading MAC address\n"); memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); if (!is_valid_ether_addr(netdev->perm_addr)) { - e_err("Invalid MAC Address: %pM\n", netdev->perm_addr); + dev_err(&pdev->dev, "Invalid MAC Address: %pM\n", + netdev->perm_addr); err = -EIO; goto err_eeprom; } @@ -6284,8 +6381,8 @@ adapter->hw.phy.autoneg_advertised = 0x2f; /* ring size defaults */ - adapter->rx_ring->count = 256; - adapter->tx_ring->count = 256; + adapter->rx_ring->count = E1000_DEFAULT_RXD; + adapter->tx_ring->count = E1000_DEFAULT_TXD; /* * Initial Wake on LAN setting - If APM wake is enabled in @@ -6521,6 +6618,8 @@ { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_LM), board_pch_lpt }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPT_I217_V), board_pch_lpt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPTLP_I218_LM), board_pch_lpt }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LPTLP_I218_V), board_pch_lpt }, { 0, 0, 0, 0, 0, 0, 0 } /* terminate list */ }; --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/hw.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/hw.h @@ -77,6 +77,7 @@ #define E1000_POEMB E1000_PHY_CTRL /* PHY OEM Bits */ E1000_PBA = 0x01000, /* Packet Buffer Allocation - RW */ E1000_PBS = 0x01008, /* Packet Buffer Size */ + E1000_PBECCSTS = 0x0100C, /* Packet Buffer ECC Status - RW */ E1000_EEMNGCTL = 0x01010, /* MNG EEprom Control */ E1000_EEWR = 0x0102C, /* EEPROM Write Register - RW */ E1000_FLOP = 0x0103C, /* FLASH Opcode Register */ @@ -412,6 +413,8 @@ #define E1000_DEV_ID_PCH2_LV_V 0x1503 #define E1000_DEV_ID_PCH_LPT_I217_LM 0x153A #define E1000_DEV_ID_PCH_LPT_I217_V 0x153B +#define E1000_DEV_ID_PCH_LPTLP_I218_LM 0x155A +#define E1000_DEV_ID_PCH_LPTLP_I218_V 0x1559 #define E1000_REVISION_4 4 --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/e1000.h +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/e1000.h @@ -310,9 +310,12 @@ */ struct e1000_ring *tx_ring /* One per active queue */ ____cacheline_aligned_in_smp; + u32 tx_fifo_limit; struct napi_struct napi; + unsigned int uncorr_errors; /* uncorrectable ECC errors */ + unsigned int corr_errors; /* correctable ECC errors */ unsigned int restart_queue; u32 txd_cmd; @@ -514,6 +517,7 @@ extern void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter); extern void e1000e_get_hw_control(struct e1000_adapter *adapter); extern void e1000e_release_hw_control(struct e1000_adapter *adapter); +extern void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr); extern unsigned int copybreak; --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000e/82571.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000e/82571.c @@ -999,7 +999,7 @@ **/ static s32 e1000_reset_hw_82571(struct e1000_hw *hw) { - u32 ctrl, ctrl_ext, eecd; + u32 ctrl, ctrl_ext, eecd, tctl; s32 ret_val; /* @@ -1014,7 +1014,9 @@ ew32(IMC, 0xffffffff); ew32(RCTL, 0); - ew32(TCTL, E1000_TCTL_PSP); + tctl = er32(TCTL); + tctl &= ~E1000_TCTL_EN; + ew32(TCTL, tctl); e1e_flush(); usleep_range(10000, 20000); @@ -1601,10 +1603,8 @@ * auto-negotiation in the TXCW register and disable * forced link in the Device Control register in an * attempt to auto-negotiate with our link partner. - * If the partner code word is null, stop forcing - * and restart auto negotiation. */ - if ((rxcw & E1000_RXCW_C) || !(rxcw & E1000_RXCW_CW)) { + if (rxcw & E1000_RXCW_C) { /* Enable autoneg, and unforce link up */ ew32(TXCW, mac->txcw); ew32(CTRL, (ctrl & ~E1000_CTRL_SLU)); @@ -1680,16 +1680,18 @@ e_dbg("ANYSTATE -> DOWN\n"); } else { /* - * Check several times, if Sync and Config - * both are consistently 1 then simply ignore - * the Invalid bit and restart Autoneg + * Check several times, if SYNCH bit and CONFIG + * bit both are consistently 1 then simply ignore + * the IV bit and restart Autoneg */ for (i = 0; i < AN_RETRY_COUNT; i++) { udelay(10); rxcw = er32(RXCW); - if ((rxcw & E1000_RXCW_IV) && - !((rxcw & E1000_RXCW_SYNCH) && - (rxcw & E1000_RXCW_C))) { + if ((rxcw & E1000_RXCW_SYNCH) && + (rxcw & E1000_RXCW_C)) + continue; + + if (rxcw & E1000_RXCW_IV) { mac->serdes_has_link = false; mac->serdes_link_state = e1000_serdes_link_down; --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -114,6 +114,7 @@ {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_LS), board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599EN_SFP), board_82599 }, {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_82599_SFP_SF_QP), board_82599 }, + {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X540T1), board_X540 }, /* required last entry */ {0, } }; @@ -6953,6 +6954,7 @@ is_wol_supported = 1; break; case IXGBE_DEV_ID_X540T: + case IXGBE_DEV_ID_X540T1: /* check eeprom to see if enabled wol */ if ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0_1) || ((wol_cap == IXGBE_DEVICE_CAPS_WOL_PORT0) && --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_common.c @@ -70,6 +70,7 @@ switch (hw->device_id) { case IXGBE_DEV_ID_X540T: + case IXGBE_DEV_ID_X540T1: return 0; case IXGBE_DEV_ID_82599_T3_LOM: return 0; --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h @@ -67,6 +67,7 @@ #define IXGBE_DEV_ID_82599_LS 0x154F #define IXGBE_DEV_ID_X540T 0x1528 #define IXGBE_DEV_ID_82599_SFP_SF_QP 0x154A +#define IXGBE_DEV_ID_X540T1 0x1560 /* VF Device IDs */ #define IXGBE_DEV_ID_82599_VF 0x10ED --- linux-3.5.0.orig/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c @@ -2706,6 +2706,9 @@ case ixgbe_mac_X540: case ixgbe_mac_82599EB: 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; @@ -2723,10 +2726,7 @@ (1 << HWTSTAMP_FILTER_NONE) | (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | - (1 << HWTSTAMP_FILTER_PTP_V2_SYNC) | - (1 << HWTSTAMP_FILTER_PTP_V2_DELAY_REQ) | - (1 << HWTSTAMP_FILTER_PTP_V2_EVENT) | - (1 << HWTSTAMP_FILTER_SOME); + (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); break; #endif /* CONFIG_IXGBE_PTP */ default: --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000/e1000_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000/e1000_main.c @@ -187,6 +187,10 @@ MODULE_PARM_DESC(copybreak, "Maximum size of packet that is copied to a new buffer on receive"); +static int eeprom_bad_csum_allow __read_mostly = 0; +module_param(eeprom_bad_csum_allow, int, 0); +MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad EEPROM checksums"); + static pci_ers_result_t e1000_io_error_detected(struct pci_dev *pdev, pci_channel_state_t state); static pci_ers_result_t e1000_io_slot_reset(struct pci_dev *pdev); @@ -1078,18 +1082,18 @@ netdev->priv_flags |= IFF_SUPP_NOFCS; netdev->features |= netdev->hw_features; - netdev->hw_features |= NETIF_F_RXCSUM; - netdev->hw_features |= NETIF_F_RXALL; - netdev->hw_features |= NETIF_F_RXFCS; + netdev->hw_features |= (NETIF_F_RXCSUM | + NETIF_F_RXALL | + NETIF_F_RXFCS); if (pci_using_dac) { netdev->features |= NETIF_F_HIGHDMA; netdev->vlan_features |= NETIF_F_HIGHDMA; } - netdev->vlan_features |= NETIF_F_TSO; - netdev->vlan_features |= NETIF_F_HW_CSUM; - netdev->vlan_features |= NETIF_F_SG; + netdev->vlan_features |= (NETIF_F_TSO | + NETIF_F_HW_CSUM | + NETIF_F_SG); netdev->priv_flags |= IFF_UNICAST_FLT; @@ -1106,8 +1110,8 @@ e1000_reset_hw(hw); - /* make sure the EEPROM is good */ - if (e1000_validate_eeprom_checksum(hw) < 0) { + /* make sure the EEPROM is good, skip if eeprom_bad_csum_allow is 1 */ + if ((e1000_validate_eeprom_checksum(hw) < 0) && (!eeprom_bad_csum_allow)) { e_err(probe, "The EEPROM Checksum Is Not Valid\n"); e1000_dump_eeprom(adapter); /* @@ -3152,6 +3156,17 @@ return NETDEV_TX_OK; } + /* On PCI/PCI-X HW, if packet size is less than ETH_ZLEN, + * packets may get corrupted during padding by HW. + * To WA this issue, pad all small packets manually. + */ + if (skb->len < ETH_ZLEN) { + if (skb_pad(skb, ETH_ZLEN - skb->len)) + return NETDEV_TX_OK; + skb->len = ETH_ZLEN; + skb_set_tail_pointer(skb, ETH_ZLEN); + } + mss = skb_shinfo(skb)->gso_size; /* The controller does a simple calculation to * make sure there is enough room in the FIFO before --- linux-3.5.0.orig/drivers/net/ethernet/intel/e1000/e1000_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/e1000/e1000_ethtool.c @@ -1851,6 +1851,7 @@ .get_sset_count = e1000_get_sset_count, .get_coalesce = e1000_get_coalesce, .set_coalesce = e1000_set_coalesce, + .get_ts_info = ethtool_op_get_ts_info, }; void e1000_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/e1000_82575.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/e1000_82575.c @@ -254,6 +254,14 @@ */ size += NVM_WORD_SIZE_BASE_SHIFT; + /* + * Check for invalid size + */ + if ((hw->mac.type == e1000_82576) && (size > 15)) { + pr_notice("The NVM size is not valid, defaulting to 32K\n"); + size = 15; + } + nvm->word_size = 1 << size; if (hw->mac.type < e1000_i210) { nvm->opcode_bits = 8; @@ -281,14 +289,6 @@ } else nvm->type = e1000_nvm_flash_hw; - /* - * Check for invalid size - */ - if ((hw->mac.type == e1000_82576) && (size > 15)) { - pr_notice("The NVM size is not valid, defaulting to 32K\n"); - size = 15; - } - /* NVM Function Pointers */ switch (hw->mac.type) { case e1000_82580: --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_ptp.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_ptp.c @@ -330,7 +330,17 @@ void igb_ptp_remove(struct igb_adapter *adapter) { - cancel_delayed_work_sync(&adapter->overflow_work); + switch (adapter->hw.mac.type) { + case e1000_i211: + case e1000_i210: + case e1000_i350: + case e1000_82580: + case e1000_82576: + cancel_delayed_work_sync(&adapter->overflow_work); + break; + default: + return; + } if (adapter->ptp_clock) { ptp_clock_unregister(adapter->ptp_clock); --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -209,8 +209,8 @@ /* When SoL/IDER sessions are active, autoneg/speed/duplex * cannot be changed */ if (igb_check_reset_block(hw)) { - dev_err(&adapter->pdev->dev, "Cannot change link " - "characteristics when SoL/IDER is active.\n"); + dev_err(&adapter->pdev->dev, + "Cannot change link characteristics when SoL/IDER is active.\n"); return -EINVAL; } @@ -710,6 +710,7 @@ if ((ret_val == 0) && ((first_word <= NVM_CHECKSUM_REG))) hw->nvm.ops.update(hw); + igb_set_fw_version(adapter); kfree(eeprom_buff); return ret_val; } @@ -718,20 +719,16 @@ struct ethtool_drvinfo *drvinfo) { struct igb_adapter *adapter = netdev_priv(netdev); - u16 eeprom_data; strlcpy(drvinfo->driver, igb_driver_name, sizeof(drvinfo->driver)); strlcpy(drvinfo->version, igb_driver_version, sizeof(drvinfo->version)); - /* EEPROM image version # is reported as firmware version # for - * 82575 controllers */ - adapter->hw.nvm.ops.read(&adapter->hw, 5, 1, &eeprom_data); - snprintf(drvinfo->fw_version, sizeof(drvinfo->fw_version), - "%d.%d-%d", - (eeprom_data & 0xF000) >> 12, - (eeprom_data & 0x0FF0) >> 4, - eeprom_data & 0x000F); - + /* + * EEPROM image version # is reported as firmware version # for + * 82575 controllers + */ + strlcpy(drvinfo->fw_version, adapter->fw_version, + sizeof(drvinfo->fw_version)); strlcpy(drvinfo->bus_info, pci_name(adapter->pdev), sizeof(drvinfo->bus_info)); drvinfo->n_stats = IGB_STATS_LEN; @@ -1092,8 +1089,8 @@ wr32(reg, (_test[pat] & write)); val = rd32(reg) & mask; if (val != (_test[pat] & write & mask)) { - dev_err(&adapter->pdev->dev, "pattern test reg %04X " - "failed: got 0x%08X expected 0x%08X\n", + dev_err(&adapter->pdev->dev, + "pattern test reg %04X failed: got 0x%08X expected 0x%08X\n", reg, val, (_test[pat] & write & mask)); *data = reg; return 1; @@ -1111,8 +1108,8 @@ wr32(reg, write & mask); val = rd32(reg); if ((write & mask) != (val & mask)) { - dev_err(&adapter->pdev->dev, "set/check reg %04X test failed:" - " got 0x%08X expected 0x%08X\n", reg, + dev_err(&adapter->pdev->dev, + "set/check reg %04X test failed: got 0x%08X expected 0x%08X\n", reg, (val & mask), (write & mask)); *data = reg; return 1; @@ -1174,8 +1171,9 @@ wr32(E1000_STATUS, toggle); after = rd32(E1000_STATUS) & toggle; if (value != after) { - dev_err(&adapter->pdev->dev, "failed STATUS register test " - "got: 0x%08X expected: 0x%08X\n", after, value); + dev_err(&adapter->pdev->dev, + "failed STATUS register test got: 0x%08X expected: 0x%08X\n", + after, value); *data = 1; return 1; } @@ -1500,6 +1498,9 @@ break; } + /* add small delay to avoid loopback test failure */ + msleep(50); + /* force 1000, set loopback */ igb_write_phy_reg(hw, PHY_CONTROL, 0x4140); @@ -1780,16 +1781,14 @@ * sessions are active */ if (igb_check_reset_block(&adapter->hw)) { dev_err(&adapter->pdev->dev, - "Cannot do PHY loopback test " - "when SoL/IDER is active.\n"); + "Cannot do PHY loopback test when SoL/IDER is active.\n"); *data = 0; goto out; } if ((adapter->hw.mac.type == e1000_i210) - || (adapter->hw.mac.type == e1000_i210)) { + || (adapter->hw.mac.type == e1000_i211)) { dev_err(&adapter->pdev->dev, - "Loopback test not supported " - "on this part at this time.\n"); + "Loopback test not supported on this part at this time.\n"); *data = 0; goto out; } @@ -2271,6 +2270,38 @@ pm_runtime_put(&adapter->pdev->dev); } +#ifdef CONFIG_IGB_PTP +static int igb_ethtool_get_ts_info(struct net_device *dev, + struct ethtool_ts_info *info) +{ + struct igb_adapter *adapter = netdev_priv(dev); + + info->so_timestamping = + SOF_TIMESTAMPING_TX_HARDWARE | + SOF_TIMESTAMPING_RX_HARDWARE | + SOF_TIMESTAMPING_RAW_HARDWARE; + + if (adapter->ptp_clock) + info->phc_index = ptp_clock_index(adapter->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_ALL) | + (1 << HWTSTAMP_FILTER_SOME) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_SYNC) | + (1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) | + (1 << HWTSTAMP_FILTER_PTP_V2_EVENT); + + return 0; +} + +#endif static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings, @@ -2299,6 +2330,9 @@ .set_coalesce = igb_set_coalesce, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, +#ifdef CONFIG_IGB_PTP + .get_ts_info = igb_ethtool_get_ts_info, +#endif }; void igb_set_ethtool_ops(struct net_device *netdev) --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb.h +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb.h @@ -65,19 +65,30 @@ #define MAX_Q_VECTORS 8 /* Transmit and receive queues */ -#define IGB_MAX_RX_QUEUES ((adapter->vfs_allocated_count ? 2 : \ - (hw->mac.type > e1000_82575 ? 8 : 4))) -#define IGB_MAX_RX_QUEUES_I210 4 +#define IGB_MAX_RX_QUEUES 8 +#define IGB_MAX_RX_QUEUES_82575 4 #define IGB_MAX_RX_QUEUES_I211 2 -#define IGB_MAX_TX_QUEUES 16 -#define IGB_MAX_TX_QUEUES_I210 4 -#define IGB_MAX_TX_QUEUES_I211 2 +#define IGB_MAX_TX_QUEUES 8 #define IGB_MAX_VF_MC_ENTRIES 30 #define IGB_MAX_VF_FUNCTIONS 8 #define IGB_MAX_VFTA_ENTRIES 128 #define IGB_82576_VF_DEV_ID 0x10CA #define IGB_I350_VF_DEV_ID 0x1520 +/* NVM version defines */ +#define IGB_MAJOR_MASK 0xF000 +#define IGB_MINOR_MASK 0x0FF0 +#define IGB_BUILD_MASK 0x000F +#define IGB_COMB_VER_MASK 0x00FF +#define IGB_MAJOR_SHIFT 12 +#define IGB_MINOR_SHIFT 4 +#define IGB_COMB_VER_SHFT 8 +#define IGB_NVM_VER_INVALID 0xFFFF +#define IGB_ETRACK_SHIFT 16 +#define NVM_ETRACK_WORD 0x0042 +#define NVM_COMB_VER_OFF 0x0083 +#define NVM_COMB_VER_PTR 0x003d + struct vf_data_storage { unsigned char vf_mac_addresses[ETH_ALEN]; u16 vf_mc_hashes[IGB_MAX_VF_MC_ENTRIES]; @@ -371,6 +382,7 @@ spinlock_t tmreg_lock; struct cyclecounter cc; struct timecounter tc; + char fw_version[32]; }; #define IGB_FLAG_HAS_MSI (1 << 0) @@ -420,6 +432,7 @@ extern bool igb_has_link(struct igb_adapter *adapter); extern void igb_set_ethtool_ops(struct net_device *); extern void igb_power_up_link(struct igb_adapter *); +extern void igb_set_fw_version(struct igb_adapter *); #ifdef CONFIG_IGB_PTP extern void igb_ptp_init(struct igb_adapter *adapter); extern void igb_ptp_remove(struct igb_adapter *adapter); --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/e1000_regs.h +++ linux-3.5.0/drivers/net/ethernet/intel/igb/e1000_regs.h @@ -117,6 +117,7 @@ /* TX Rate Limit Registers */ #define E1000_RTTDQSEL 0x3604 /* Tx Desc Plane Queue Select - WO */ +#define E1000_RTTBCNRM 0x3690 /* Tx BCN Rate-scheduler MMW */ #define E1000_RTTBCNRC 0x36B0 /* Tx BCN Rate-Scheduler Config - WO */ /* Split and Replication RX Control - RW */ @@ -155,8 +156,12 @@ : (0x0E018 + ((_n) * 0x40))) #define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) \ : (0x0E028 + ((_n) * 0x40))) -#define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8)) -#define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8)) +#define E1000_RXCTL(_n) ((_n) < 4 ? (0x02814 + ((_n) * 0x100)) : \ + (0x0C014 + ((_n) * 0x40))) +#define E1000_DCA_RXCTRL(_n) E1000_RXCTL(_n) +#define E1000_TXCTL(_n) ((_n) < 4 ? (0x03814 + ((_n) * 0x100)) : \ + (0x0E014 + ((_n) * 0x40))) +#define E1000_DCA_TXCTRL(_n) E1000_TXCTL(_n) #define E1000_TDWBAL(_n) ((_n) < 4 ? (0x03838 + ((_n) * 0x100)) \ : (0x0E038 + ((_n) * 0x40))) #define E1000_TDWBAH(_n) ((_n) < 4 ? (0x0383C + ((_n) * 0x100)) \ --- linux-3.5.0.orig/drivers/net/ethernet/intel/igb/igb_main.c +++ linux-3.5.0/drivers/net/ethernet/intel/igb/igb_main.c @@ -59,9 +59,9 @@ #endif #include "igb.h" -#define MAJ 3 -#define MIN 4 -#define BUILD 7 +#define MAJ 4 +#define MIN 0 +#define BUILD 1 #define DRV_VERSION __stringify(MAJ) "." __stringify(MIN) "." \ __stringify(BUILD) "-k" char igb_driver_name[] = "igb"; @@ -462,10 +462,10 @@ (u64)buffer_info->time_stamp, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter) && buffer_info->dma != 0) + if (netif_msg_pktdata(adapter) && buffer_info->skb) print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, - 16, 1, phys_to_virt(buffer_info->dma), + 16, 1, buffer_info->skb->data, buffer_info->length, true); } } @@ -547,18 +547,17 @@ (u64)buffer_info->dma, buffer_info->skb, next_desc); - if (netif_msg_pktdata(adapter)) { + if (netif_msg_pktdata(adapter) && + buffer_info->dma && buffer_info->skb) { print_hex_dump(KERN_INFO, "", - DUMP_PREFIX_ADDRESS, - 16, 1, - phys_to_virt(buffer_info->dma), - IGB_RX_HDR_LEN, true); + DUMP_PREFIX_ADDRESS, + 16, 1, buffer_info->skb->data, + IGB_RX_HDR_LEN, true); print_hex_dump(KERN_INFO, "", DUMP_PREFIX_ADDRESS, 16, 1, - phys_to_virt( - buffer_info->page_dma + - buffer_info->page_offset), + page_address(buffer_info->page) + + buffer_info->page_offset, PAGE_SIZE/2, true); } } @@ -937,17 +936,18 @@ { struct net_device *netdev = adapter->netdev; struct e1000_hw *hw = &adapter->hw; - int i, err = 0, vector = 0; + int i, err = 0, vector = 0, free_vector = 0; err = request_irq(adapter->msix_entries[vector].vector, igb_msix_other, 0, netdev->name, adapter); if (err) - goto out; - vector++; + goto err_out; for (i = 0; i < adapter->num_q_vectors; i++) { struct igb_q_vector *q_vector = adapter->q_vector[i]; + vector++; + q_vector->itr_register = hw->hw_addr + E1000_EITR(vector); if (q_vector->rx.ring && q_vector->tx.ring) @@ -966,13 +966,22 @@ igb_msix_ring, 0, q_vector->name, q_vector); if (err) - goto out; - vector++; + goto err_free; } igb_configure_msix(adapter); return 0; -out: + +err_free: + /* free already assigned IRQs */ + free_irq(adapter->msix_entries[free_vector++].vector, adapter); + + vector--; + for (i = 0; i < vector; i++) { + free_irq(adapter->msix_entries[free_vector++].vector, + adapter->q_vector[i]); + } +err_out: return err; } @@ -1048,11 +1057,6 @@ if (!(adapter->flags & IGB_FLAG_QUEUE_PAIRS)) numvecs += adapter->num_tx_queues; - /* i210 and i211 can only have 4 MSIX vectors for rx/tx queues. */ - if ((adapter->hw.mac.type == e1000_i210) - || (adapter->hw.mac.type == e1000_i211)) - numvecs = 4; - /* store the number of vectors reserved for queues */ adapter->num_q_vectors = numvecs; @@ -1505,11 +1509,12 @@ **/ void igb_power_up_link(struct igb_adapter *adapter) { + igb_reset_phy(&adapter->hw); + if (adapter->hw.phy.media_type == e1000_media_type_copper) igb_power_up_phy_copper(&adapter->hw); else igb_power_up_serdes_link_82575(&adapter->hw); - igb_reset_phy(&adapter->hw); } /** @@ -1821,6 +1826,69 @@ }; /** + * igb_set_fw_version - Configure version string for ethtool + * @adapter: adapter struct + * + **/ +void igb_set_fw_version(struct igb_adapter *adapter) +{ + struct e1000_hw *hw = &adapter->hw; + u16 eeprom_verh, eeprom_verl, comb_verh, comb_verl, comb_offset; + u16 major, build, patch, fw_version; + u32 etrack_id; + + hw->nvm.ops.read(hw, 5, 1, &fw_version); + if (adapter->hw.mac.type != e1000_i211) { + hw->nvm.ops.read(hw, NVM_ETRACK_WORD, 1, &eeprom_verh); + hw->nvm.ops.read(hw, (NVM_ETRACK_WORD + 1), 1, &eeprom_verl); + etrack_id = (eeprom_verh << IGB_ETRACK_SHIFT) | eeprom_verl; + + /* combo image version needs to be found */ + hw->nvm.ops.read(hw, NVM_COMB_VER_PTR, 1, &comb_offset); + if ((comb_offset != 0x0) && + (comb_offset != IGB_NVM_VER_INVALID)) { + hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset + + 1), 1, &comb_verh); + hw->nvm.ops.read(hw, (NVM_COMB_VER_OFF + comb_offset), + 1, &comb_verl); + + /* Only display Option Rom if it exists and is valid */ + if ((comb_verh && comb_verl) && + ((comb_verh != IGB_NVM_VER_INVALID) && + (comb_verl != IGB_NVM_VER_INVALID))) { + major = comb_verl >> IGB_COMB_VER_SHFT; + build = (comb_verl << IGB_COMB_VER_SHFT) | + (comb_verh >> IGB_COMB_VER_SHFT); + patch = comb_verh & IGB_COMB_VER_MASK; + snprintf(adapter->fw_version, + sizeof(adapter->fw_version), + "%d.%d%d, 0x%08x, %d.%d.%d", + (fw_version & IGB_MAJOR_MASK) >> + IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> + IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK), + etrack_id, major, build, patch); + goto out; + } + } + snprintf(adapter->fw_version, sizeof(adapter->fw_version), + "%d.%d%d, 0x%08x", + (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK), etrack_id); + } else { + snprintf(adapter->fw_version, sizeof(adapter->fw_version), + "%d.%d%d", + (fw_version & IGB_MAJOR_MASK) >> IGB_MAJOR_SHIFT, + (fw_version & IGB_MINOR_MASK) >> IGB_MINOR_SHIFT, + (fw_version & IGB_BUILD_MASK)); + } +out: + return; +} + +/** * igb_probe - Device Initialization Routine * @pdev: PCI device information struct * @ent: entry in igb_pci_tbl @@ -2030,6 +2098,9 @@ goto err_eeprom; } + /* get firmware version for ethtool -i */ + igb_set_fw_version(adapter); + setup_timer(&adapter->watchdog_timer, igb_watchdog, (unsigned long) adapter); setup_timer(&adapter->phy_info_timer, igb_update_phy_info, @@ -2338,6 +2409,7 @@ struct e1000_hw *hw = &adapter->hw; struct net_device *netdev = adapter->netdev; struct pci_dev *pdev = adapter->pdev; + u32 max_rss_queues; pci_read_config_word(pdev, PCI_COMMAND, &hw->bus.pci_cmd_word); @@ -2370,40 +2442,69 @@ } else adapter->vfs_allocated_count = max_vfs; break; - case e1000_i210: - case e1000_i211: - adapter->vfs_allocated_count = 0; - break; default: break; } #endif /* CONFIG_PCI_IOV */ + + /* Determine the maximum number of RSS queues supported. */ switch (hw->mac.type) { + case e1000_i211: + max_rss_queues = IGB_MAX_RX_QUEUES_I211; + break; + case e1000_82575: case e1000_i210: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES_I210, - num_online_cpus()); + max_rss_queues = IGB_MAX_RX_QUEUES_82575; + break; + case e1000_i350: + /* I350 cannot do RSS and SR-IOV at the same time */ + if (!!adapter->vfs_allocated_count) { + max_rss_queues = 1; + break; + } + /* fall through */ + case e1000_82576: + if (!!adapter->vfs_allocated_count) { + max_rss_queues = 2; + break; + } + /* fall through */ + case e1000_82580: + default: + max_rss_queues = IGB_MAX_RX_QUEUES; break; + } + + adapter->rss_queues = min_t(u32, max_rss_queues, num_online_cpus()); + + /* Determine if we need to pair queues. */ + switch (hw->mac.type) { + case e1000_82575: case e1000_i211: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES_I211, - num_online_cpus()); + /* Device supports enough interrupts without queue pairing. */ break; + case e1000_82576: + /* + * If VFs are going to be allocated with RSS queues then we + * should pair the queues in order to conserve interrupts due + * to limited supply. + */ + if ((adapter->rss_queues > 1) && + (adapter->vfs_allocated_count > 6)) + adapter->flags |= IGB_FLAG_QUEUE_PAIRS; + /* fall through */ + case e1000_82580: + case e1000_i350: + case e1000_i210: default: - adapter->rss_queues = min_t(u32, IGB_MAX_RX_QUEUES, - num_online_cpus()); + /* + * If rss_queues > half of max_rss_queues, pair the queues in + * order to conserve interrupts due to limited supply. + */ + if (adapter->rss_queues > (max_rss_queues / 2)) + adapter->flags |= IGB_FLAG_QUEUE_PAIRS; break; } - /* i350 cannot do RSS and SR-IOV at the same time */ - if (hw->mac.type == e1000_i350 && adapter->vfs_allocated_count) - adapter->rss_queues = 1; - - /* - * if rss_queues > 4 or vfs are going to be allocated with rss_queues - * then we should combine the queues into a queue pair in order to - * conserve interrupts due to limited supply - */ - if ((adapter->rss_queues > 4) || - ((adapter->rss_queues > 1) && (adapter->vfs_allocated_count > 6))) - adapter->flags |= IGB_FLAG_QUEUE_PAIRS; /* Setup and initialize a copy of the hw vlan table array */ adapter->shadow_vfta = kzalloc(sizeof(u32) * @@ -4570,11 +4671,13 @@ bytes = 0; packets = 0; for (i = 0; i < adapter->num_rx_queues; i++) { - u32 rqdpc_tmp = rd32(E1000_RQDPC(i)) & 0x0FFF; + u32 rqdpc = rd32(E1000_RQDPC(i)); struct igb_ring *ring = adapter->rx_ring[i]; - ring->rx_stats.drops += rqdpc_tmp; - net_stats->rx_fifo_errors += rqdpc_tmp; + if (rqdpc) { + ring->rx_stats.drops += rqdpc; + net_stats->rx_fifo_errors += rqdpc; + } do { start = u64_stats_fetch_begin_bh(&ring->rx_syncp); @@ -6997,6 +7100,11 @@ } wr32(E1000_RTTDQSEL, vf); /* vf X uses queue X */ + /* + * Set global transmit compensation time to the MMW_SIZE in RTTBCNRM + * register. MMW_SIZE=0x014 if 9728-byte jumbo is supported. + */ + wr32(E1000_RTTBCNRM, 0x14); wr32(E1000_RTTBCNRC, bcnrc_val); } --- linux-3.5.0.orig/drivers/net/ethernet/nxp/lpc_eth.c +++ linux-3.5.0/drivers/net/ethernet/nxp/lpc_eth.c @@ -1543,6 +1543,7 @@ pldat->dma_buff_base_p); free_irq(ndev->irq, ndev); iounmap(pldat->net_base); + mdiobus_unregister(pldat->mii_bus); mdiobus_free(pldat->mii_bus); clk_disable(pldat->clk); clk_put(pldat->clk); --- linux-3.5.0.orig/drivers/net/ethernet/ibm/ibmveth.c +++ linux-3.5.0/drivers/net/ethernet/ibm/ibmveth.c @@ -472,14 +472,9 @@ } if (adapter->rx_queue.queue_addr != NULL) { - if (!dma_mapping_error(dev, adapter->rx_queue.queue_dma)) { - dma_unmap_single(dev, - adapter->rx_queue.queue_dma, - adapter->rx_queue.queue_len, - DMA_BIDIRECTIONAL); - adapter->rx_queue.queue_dma = DMA_ERROR_CODE; - } - kfree(adapter->rx_queue.queue_addr); + dma_free_coherent(dev, adapter->rx_queue.queue_len, + adapter->rx_queue.queue_addr, + adapter->rx_queue.queue_dma); adapter->rx_queue.queue_addr = NULL; } @@ -556,10 +551,13 @@ goto err_out; } + dev = &adapter->vdev->dev; + adapter->rx_queue.queue_len = sizeof(struct ibmveth_rx_q_entry) * rxq_entries; - adapter->rx_queue.queue_addr = kmalloc(adapter->rx_queue.queue_len, - GFP_KERNEL); + adapter->rx_queue.queue_addr = + dma_alloc_coherent(dev, adapter->rx_queue.queue_len, + &adapter->rx_queue.queue_dma, GFP_KERNEL); if (!adapter->rx_queue.queue_addr) { netdev_err(netdev, "unable to allocate rx queue pages\n"); @@ -567,19 +565,13 @@ goto err_out; } - dev = &adapter->vdev->dev; - adapter->buffer_list_dma = dma_map_single(dev, adapter->buffer_list_addr, 4096, DMA_BIDIRECTIONAL); adapter->filter_list_dma = dma_map_single(dev, adapter->filter_list_addr, 4096, DMA_BIDIRECTIONAL); - adapter->rx_queue.queue_dma = dma_map_single(dev, - adapter->rx_queue.queue_addr, - adapter->rx_queue.queue_len, DMA_BIDIRECTIONAL); if ((dma_mapping_error(dev, adapter->buffer_list_dma)) || - (dma_mapping_error(dev, adapter->filter_list_dma)) || - (dma_mapping_error(dev, adapter->rx_queue.queue_dma))) { + (dma_mapping_error(dev, adapter->filter_list_dma))) { netdev_err(netdev, "unable to map filter or buffer list " "pages\n"); rc = -ENOMEM; --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/tg3.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/tg3.c @@ -298,6 +298,7 @@ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57795)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5719)}, {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5720)}, + {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57762)}, {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9DXX)}, {PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9MXX)}, {PCI_DEVICE(PCI_VENDOR_ID_ALTIMA, PCI_DEVICE_ID_ALTIMA_AC1000)}, @@ -1135,14 +1136,26 @@ return tg3_writephy(tp, MII_TG3_AUX_CTRL, set | reg); } -#define TG3_PHY_AUXCTL_SMDSP_ENABLE(tp) \ - tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ - MII_TG3_AUXCTL_ACTL_SMDSP_ENA | \ - MII_TG3_AUXCTL_ACTL_TX_6DB) - -#define TG3_PHY_AUXCTL_SMDSP_DISABLE(tp) \ - tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, \ - MII_TG3_AUXCTL_ACTL_TX_6DB); +static int tg3_phy_toggle_auxctl_smdsp(struct tg3 *tp, bool enable) +{ + u32 val; + int err; + + err = tg3_phy_auxctl_read(tp, MII_TG3_AUXCTL_SHDWSEL_AUXCTL, &val); + + if (err) + return err; + if (enable) + + val |= MII_TG3_AUXCTL_ACTL_SMDSP_ENA; + else + val &= ~MII_TG3_AUXCTL_ACTL_SMDSP_ENA; + + err = tg3_phy_auxctl_write((tp), MII_TG3_AUXCTL_SHDWSEL_AUXCTL, + val | MII_TG3_AUXCTL_ACTL_TX_6DB); + + return err; +} static int tg3_bmcr_reset(struct tg3 *tp) { @@ -2075,7 +2088,7 @@ otp = tp->phy_otp; - if (TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) + if (tg3_phy_toggle_auxctl_smdsp(tp, true)) return; phy = ((otp & TG3_OTP_AGCTGT_MASK) >> TG3_OTP_AGCTGT_SHIFT); @@ -2100,7 +2113,7 @@ ((otp & TG3_OTP_RCOFF_MASK) >> TG3_OTP_RCOFF_SHIFT); tg3_phydsp_write(tp, MII_TG3_DSP_EXP97, phy); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } static void tg3_phy_eee_adjust(struct tg3 *tp, u32 current_link_up) @@ -2136,9 +2149,9 @@ if (!tp->setlpicnt) { if (current_link_up == 1 && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, MII_TG3_DSP_TAP26, 0x0000); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } val = tr32(TG3_CPMU_EEE_MODE); @@ -2154,11 +2167,11 @@ (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5717 || GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || tg3_flag(tp, 57765_CLASS)) && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { val = MII_TG3_DSP_TAP26_ALNOKO | MII_TG3_DSP_TAP26_RMRXSTO; tg3_phydsp_write(tp, MII_TG3_DSP_TAP26, val); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } val = tr32(TG3_CPMU_EEE_MODE); @@ -2302,7 +2315,7 @@ tg3_writephy(tp, MII_CTRL1000, CTL1000_AS_MASTER | CTL1000_ENABLE_MASTER); - err = TG3_PHY_AUXCTL_SMDSP_ENABLE(tp); + err = tg3_phy_toggle_auxctl_smdsp(tp, true); if (err) return err; @@ -2323,7 +2336,7 @@ tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x8200); tg3_writephy(tp, MII_TG3_DSP_CONTROL, 0x0000); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); tg3_writephy(tp, MII_CTRL1000, phy9_orig); @@ -2412,10 +2425,10 @@ out: if ((tp->phy_flags & TG3_PHYFLG_ADC_BUG) && - !TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + !tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, 0x201f, 0x2aaa); tg3_phydsp_write(tp, 0x000a, 0x0323); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } if (tp->phy_flags & TG3_PHYFLG_5704_A0_BUG) { @@ -2424,14 +2437,14 @@ } if (tp->phy_flags & TG3_PHYFLG_BER_BUG) { - if (!TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + if (!tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_phydsp_write(tp, 0x000a, 0x310b); tg3_phydsp_write(tp, 0x201f, 0x9506); tg3_phydsp_write(tp, 0x401f, 0x14e2); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } } else if (tp->phy_flags & TG3_PHYFLG_JITTER_BUG) { - if (!TG3_PHY_AUXCTL_SMDSP_ENABLE(tp)) { + if (!tg3_phy_toggle_auxctl_smdsp(tp, true)) { tg3_writephy(tp, MII_TG3_DSP_ADDRESS, 0x000a); if (tp->phy_flags & TG3_PHYFLG_ADJUST_TRIM) { tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x110b); @@ -2440,7 +2453,7 @@ } else tg3_writephy(tp, MII_TG3_DSP_RW_PORT, 0x010b); - TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + tg3_phy_toggle_auxctl_smdsp(tp, false); } } @@ -3857,7 +3870,7 @@ tw32(TG3_CPMU_EEE_MODE, tr32(TG3_CPMU_EEE_MODE) & ~TG3_CPMU_EEEMD_LPI_ENABLE); - err = TG3_PHY_AUXCTL_SMDSP_ENABLE(tp); + err = tg3_phy_toggle_auxctl_smdsp(tp, true); if (!err) { u32 err2; @@ -3890,7 +3903,7 @@ MII_TG3_DSP_CH34TP2_HIBW01); } - err2 = TG3_PHY_AUXCTL_SMDSP_DISABLE(tp); + err2 = tg3_phy_toggle_auxctl_smdsp(tp, false); if (!err) err = err2; } @@ -6593,6 +6606,9 @@ int i; struct tg3 *tp = netdev_priv(dev); + if (tg3_irq_sync(tp)) + return; + for (i = 0; i < tp->irq_cnt; i++) tg3_interrupt(tp->napi[i].irq_vec, &tp->napi[i]); } @@ -8974,8 +8990,7 @@ GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57780 || tg3_flag(tp, 57765_PLUS)) { val = tr32(TG3_RDMA_RSRVCTRL_REG); - if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719 || - GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5720) { + if (tp->pci_chip_rev_id == CHIPREV_ID_5719_A0) { val &= ~(TG3_RDMA_RSRVCTRL_TXMRGN_MASK | TG3_RDMA_RSRVCTRL_FIFO_LWM_MASK | TG3_RDMA_RSRVCTRL_FIFO_HWM_MASK); @@ -12282,10 +12297,12 @@ { struct tg3 *tp = netdev_priv(dev); - if (!tp->hw_stats) + spin_lock_bh(&tp->lock); + if (!tp->hw_stats) { + spin_unlock_bh(&tp->lock); return &tp->net_stats_prev; + } - spin_lock_bh(&tp->lock); tg3_get_nstats(tp, stats); spin_unlock_bh(&tp->lock); @@ -15554,6 +15571,7 @@ tp->pm_cap = pm_cap; tp->rx_mode = TG3_DEF_RX_MODE; tp->tx_mode = TG3_DEF_TX_MODE; + tp->irq_sync = 1; if (tg3_debug > 0) tp->msg_enable = tg3_debug; --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -620,14 +620,16 @@ static void bnx2x_csum_validate(struct sk_buff *skb, union eth_rx_cqe *cqe, struct bnx2x_fastpath *fp) { - /* Do nothing if no IP/L4 csum validation was done */ - + /* Do nothing if no L4 csum validation was done. + * We do not check whether IP csum was validated. For IPv4 we assume + * that if the card got as far as validating the L4 csum, it also + * validated the IP csum. IPv6 has no IP csum. + */ if (cqe->fast_path_cqe.status_flags & - (ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG | - ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG)) + ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG) return; - /* If both IP/L4 validation were done, check if an error was found. */ + /* If L4 validation was done, check if an error was found. */ if (cqe->fast_path_cqe.type_error_flags & (ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG | --- linux-3.5.0.orig/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ linux-3.5.0/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -9494,10 +9494,13 @@ */ static void __devinit bnx2x_prev_interrupted_dmae(struct bnx2x *bp) { - u32 val = REG_RD(bp, PGLUE_B_REG_PGLUE_B_INT_STS); - if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN) { - BNX2X_ERR("was error bit was found to be set in pglueb upon startup. Clearing"); - REG_WR(bp, PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR, 1 << BP_FUNC(bp)); + if (!CHIP_IS_E1x(bp)) { + u32 val = REG_RD(bp, PGLUE_B_REG_PGLUE_B_INT_STS); + if (val & PGLUE_B_PGLUE_B_INT_STS_REG_WAS_ERROR_ATTN) { + BNX2X_ERR("was error bit was found to be set in pglueb upon startup. Clearing"); + REG_WR(bp, PGLUE_B_REG_WAS_ERROR_PF_7_0_CLR, + 1 << BP_FUNC(bp)); + } } } --- linux-3.5.0.orig/drivers/net/ethernet/cirrus/cs89x0.c +++ linux-3.5.0/drivers/net/ethernet/cirrus/cs89x0.c @@ -1243,6 +1243,7 @@ { struct net_local *lp = netdev_priv(dev); unsigned long flags; + u16 cfg; spin_lock_irqsave(&lp->lock, flags); if (dev->flags & IFF_PROMISC) @@ -1260,11 +1261,10 @@ /* in promiscuous mode, we accept errored packets, * so we have to enable interrupts on them also */ - writereg(dev, PP_RxCFG, - (lp->curr_rx_cfg | - (lp->rx_mode == RX_ALL_ACCEPT) - ? (RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL) - : 0)); + cfg = lp->curr_rx_cfg; + if (lp->rx_mode == RX_ALL_ACCEPT) + cfg |= RX_CRC_ERROR_ENBL | RX_RUNT_ENBL | RX_EXTRA_DATA_ENBL; + writereg(dev, PP_RxCFG, cfg); spin_unlock_irqrestore(&lp->lock, flags); } --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/cmd.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/cmd.c @@ -1256,6 +1256,7 @@ u32 reply; u8 is_going_down = 0; int i; + unsigned long flags; slave_state[slave].comm_toggle ^= 1; reply = (u32) slave_state[slave].comm_toggle << 31; @@ -1330,12 +1331,12 @@ mlx4_warn(dev, "Bad comm cmd:%d from slave:%d\n", cmd, slave); goto reset_slave; } - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (!slave_state[slave].is_slave_going_down) slave_state[slave].last_cmd = cmd; else is_going_down = 1; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); if (is_going_down) { mlx4_warn(dev, "Slave is going down aborting command(%d)" " executing from slave:%d\n", @@ -1351,10 +1352,10 @@ reset_slave: /* cleanup any slave resources */ mlx4_delete_all_resources_for_slave(dev, slave); - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (!slave_state[slave].is_slave_going_down) slave_state[slave].last_cmd = MLX4_COMM_CMD_RESET; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); /*with slave in the middle of flr, no need to clean resources again.*/ inform_slave_state: memset(&slave_state[slave].event_eq, 0, --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/en_tx.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/en_tx.c @@ -633,10 +633,15 @@ ring->tx_csum++; } - /* Copy dst mac address to wqe */ - ethh = (struct ethhdr *)skb->data; - tx_desc->ctrl.srcrb_flags16[0] = get_unaligned((__be16 *)ethh->h_dest); - tx_desc->ctrl.imm = get_unaligned((__be32 *)(ethh->h_dest + 2)); + if (mlx4_is_mfunc(mdev->dev) || priv->validate_loopback) { + /* Copy dst mac address to wqe. This allows loopback in eSwitch, + * so that VFs and PF can communicate with each other + */ + ethh = (struct ethhdr *)skb->data; + tx_desc->ctrl.srcrb_flags16[0] = get_unaligned((__be16 *)ethh->h_dest); + tx_desc->ctrl.imm = get_unaligned((__be32 *)(ethh->h_dest + 2)); + } + /* Handle LSO (TSO) packets */ if (lso_header_size) { /* Mark opcode as LSO */ --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/main.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/main.c @@ -1545,15 +1545,8 @@ int i; if (msi_x) { - /* In multifunction mode each function gets 2 msi-X vectors - * one for data path completions anf the other for asynch events - * or command completions */ - if (mlx4_is_mfunc(dev)) { - nreq = 2; - } else { - nreq = min_t(int, dev->caps.num_eqs - - dev->caps.reserved_eqs, nreq); - } + nreq = min_t(int, dev->caps.num_eqs - dev->caps.reserved_eqs, + nreq); entries = kcalloc(nreq, sizeof *entries, GFP_KERNEL); if (!entries) --- linux-3.5.0.orig/drivers/net/ethernet/mellanox/mlx4/eq.c +++ linux-3.5.0/drivers/net/ethernet/mellanox/mlx4/eq.c @@ -203,6 +203,7 @@ struct mlx4_slave_state *slave_state = priv->mfunc.master.slave_state; int i; int err; + unsigned long flags; mlx4_dbg(dev, "mlx4_handle_slave_flr\n"); @@ -214,10 +215,10 @@ mlx4_delete_all_resources_for_slave(dev, i); /*return the slave to running mode*/ - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); slave_state[i].last_cmd = MLX4_COMM_CMD_RESET; slave_state[i].is_slave_going_down = 0; - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); /*notify the FW:*/ err = mlx4_cmd(dev, 0, i, 0, MLX4_CMD_INFORM_FLR_DONE, MLX4_CMD_TIME_CLASS_A, MLX4_CMD_WRAPPED); @@ -241,6 +242,7 @@ u32 flr_slave; u8 update_slave_state; int i; + unsigned long flags; while ((eqe = next_eqe_sw(eq))) { /* @@ -434,13 +436,13 @@ } else update_slave_state = 1; - spin_lock(&priv->mfunc.master.slave_state_lock); + spin_lock_irqsave(&priv->mfunc.master.slave_state_lock, flags); if (update_slave_state) { priv->mfunc.master.slave_state[flr_slave].active = false; priv->mfunc.master.slave_state[flr_slave].last_cmd = MLX4_COMM_CMD_FLR; priv->mfunc.master.slave_state[flr_slave].is_slave_going_down = 1; } - spin_unlock(&priv->mfunc.master.slave_state_lock); + spin_unlock_irqrestore(&priv->mfunc.master.slave_state_lock, flags); queue_work(priv->mfunc.master.comm_wq, &priv->mfunc.master.slave_flr_event_work); break; --- linux-3.5.0.orig/drivers/net/ethernet/via/via-rhine.c +++ linux-3.5.0/drivers/net/ethernet/via/via-rhine.c @@ -1802,7 +1802,7 @@ rp->tx_skbuff[entry]->len, PCI_DMA_TODEVICE); } - dev_kfree_skb_irq(rp->tx_skbuff[entry]); + dev_kfree_skb(rp->tx_skbuff[entry]); rp->tx_skbuff[entry] = NULL; entry = (++rp->dirty_tx) % TX_RING_SIZE; } @@ -2011,11 +2011,7 @@ if (intr_status & IntrPCIErr) netif_warn(rp, hw, dev, "PCI error\n"); - napi_disable(&rp->napi); - rhine_irq_disable(rp); - /* Slow and safe. Consider __napi_schedule as a replacement ? */ - napi_enable(&rp->napi); - napi_schedule(&rp->napi); + iowrite16(RHINE_EVENT & 0xffff, rp->base + IntrEnable); out_unlock: mutex_unlock(&rp->task_lock); --- linux-3.5.0.orig/drivers/net/ethernet/realtek/8139cp.c +++ linux-3.5.0/drivers/net/ethernet/realtek/8139cp.c @@ -957,7 +957,35 @@ static inline void cp_start_hw (struct cp_private *cp) { + dma_addr_t ring_dma; + cpw16(CpCmd, cp->cpcmd); + + /* + * These (at least TxRingAddr) need to be configured after the + * corresponding bits in CpCmd are enabled. Datasheet v1.6 §6.33 + * (C+ Command Register) recommends that these and more be configured + * *after* the [RT]xEnable bits in CpCmd are set. And on some hardware + * it's been observed that the TxRingAddr is actually reset to garbage + * when C+ mode Tx is enabled in CpCmd. + */ + cpw32_f(HiTxRingAddr, 0); + cpw32_f(HiTxRingAddr + 4, 0); + + ring_dma = cp->ring_dma; + cpw32_f(RxRingAddr, ring_dma & 0xffffffff); + cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); + + ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; + cpw32_f(TxRingAddr, ring_dma & 0xffffffff); + cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); + + /* + * Strictly speaking, the datasheet says this should be enabled + * *before* setting the descriptor addresses. But what, then, would + * prevent it from doing DMA to random unconfigured addresses? + * This variant appears to work fine. + */ cpw8(Cmd, RxOn | TxOn); } @@ -969,7 +997,6 @@ static void cp_init_hw (struct cp_private *cp) { struct net_device *dev = cp->dev; - dma_addr_t ring_dma; cp_reset_hw(cp); @@ -979,17 +1006,6 @@ cpw32_f (MAC0 + 0, le32_to_cpu (*(__le32 *) (dev->dev_addr + 0))); cpw32_f (MAC0 + 4, le32_to_cpu (*(__le32 *) (dev->dev_addr + 4))); - cpw32_f(HiTxRingAddr, 0); - cpw32_f(HiTxRingAddr + 4, 0); - - ring_dma = cp->ring_dma; - cpw32_f(RxRingAddr, ring_dma & 0xffffffff); - cpw32_f(RxRingAddr + 4, (ring_dma >> 16) >> 16); - - ring_dma += sizeof(struct cp_desc) * CP_RX_RING_SIZE; - cpw32_f(TxRingAddr, ring_dma & 0xffffffff); - cpw32_f(TxRingAddr + 4, (ring_dma >> 16) >> 16); - cp_start_hw(cp); cpw8(TxThresh, 0x06); /* XXX convert magic num to a constant */ --- linux-3.5.0.orig/drivers/net/ethernet/realtek/r8169.c +++ linux-3.5.0/drivers/net/ethernet/realtek/r8169.c @@ -75,7 +75,7 @@ static const int multicast_filter_limit = 32; #define MAX_READ_REQUEST_SHIFT 12 -#define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */ +#define TX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */ #define SafeMtu 0x1c20 /* ... actually life sucks beyond ~7k */ #define InterFrameGap 0x03 /* 3 means InterFrameGap = the shortest one */ @@ -3601,6 +3601,8 @@ void __iomem *ioaddr = tp->mmio_addr; switch (tp->mac_version) { + case RTL_GIGA_MAC_VER_25: + case RTL_GIGA_MAC_VER_26: case RTL_GIGA_MAC_VER_29: case RTL_GIGA_MAC_VER_30: case RTL_GIGA_MAC_VER_32: @@ -4271,6 +4273,9 @@ mc_filter[1] = swab32(data); } + if (tp->mac_version == RTL_GIGA_MAC_VER_35) + mc_filter[1] = mc_filter[0] = 0xffffffff; + RTL_W32(MAR0 + 4, mc_filter[1]); RTL_W32(MAR0 + 0, mc_filter[0]); @@ -5380,7 +5385,6 @@ { rtl8169_tx_clear_range(tp, tp->dirty_tx, NUM_TX_DESC); tp->cur_tx = tp->dirty_tx = 0; - netdev_reset_queue(tp->dev); } static void rtl_reset_work(struct rtl8169_private *tp) @@ -5535,8 +5539,6 @@ txd->opts2 = cpu_to_le32(opts[1]); - netdev_sent_queue(dev, skb->len); - skb_tx_timestamp(skb); wmb(); @@ -5633,16 +5635,9 @@ rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING); } -struct rtl_txc { - int packets; - int bytes; -}; - static void rtl_tx(struct net_device *dev, struct rtl8169_private *tp) { - struct rtl8169_stats *tx_stats = &tp->tx_stats; unsigned int dirty_tx, tx_left; - struct rtl_txc txc = { 0, 0 }; dirty_tx = tp->dirty_tx; smp_rmb(); @@ -5661,24 +5656,17 @@ rtl8169_unmap_tx_skb(&tp->pci_dev->dev, tx_skb, tp->TxDescArray + entry); if (status & LastFrag) { - struct sk_buff *skb = tx_skb->skb; - - txc.packets++; - txc.bytes += skb->len; - dev_kfree_skb(skb); + u64_stats_update_begin(&tp->tx_stats.syncp); + 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); tx_skb->skb = NULL; } dirty_tx++; tx_left--; } - u64_stats_update_begin(&tx_stats->syncp); - tx_stats->packets += txc.packets; - tx_stats->bytes += txc.bytes; - u64_stats_update_end(&tx_stats->syncp); - - netdev_completed_queue(dev, txc.packets, txc.bytes); - if (tp->dirty_tx != dirty_tx) { tp->dirty_tx = dirty_tx; /* Sync with rtl8169_start_xmit: @@ -5824,13 +5812,6 @@ tp->rx_stats.bytes += pkt_size; u64_stats_update_end(&tp->rx_stats.syncp); } - - /* Work around for AMD plateform. */ - if ((desc->opts2 & cpu_to_le32(0xfffe000)) && - (tp->mac_version == RTL_GIGA_MAC_VER_05)) { - desc->opts2 = 0; - cur_rx++; - } } count = cur_rx - tp->cur_rx; --- linux-3.5.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ linux-3.5.0/drivers/net/ethernet/atheros/atl1c/atl1c_main.c @@ -739,6 +739,8 @@ static void __devinit atl1c_patch_assign(struct atl1c_hw *hw) { + struct pci_dev *pdev = hw->adapter->pdev; + u32 misc_ctrl; int i = 0; hw->msi_lnkpatch = false; @@ -753,6 +755,18 @@ } i++; } + + if (hw->device_id == PCI_DEVICE_ID_ATHEROS_L2C_B2 && + hw->revision_id == L2CB_V21) { + /* config acess mode */ + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_ADDR, + REG_PCIE_DEV_MISC_CTRL); + pci_read_config_dword(pdev, REG_PCIE_IND_ACC_DATA, &misc_ctrl); + misc_ctrl &= ~0x100; + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_ADDR, + REG_PCIE_DEV_MISC_CTRL); + pci_write_config_dword(pdev, REG_PCIE_IND_ACC_DATA, misc_ctrl); + } } /* * atl1c_sw_init - Initialize general software structures (struct atl1c_adapter) @@ -780,7 +794,7 @@ hw->device_id = pdev->device; hw->subsystem_vendor_id = pdev->subsystem_vendor; hw->subsystem_id = pdev->subsystem_device; - AT_READ_REG(hw, PCI_CLASS_REVISION, &revision); + pci_read_config_dword(pdev, PCI_CLASS_REVISION, &revision); hw->revision_id = revision & 0xFF; /* before link up, we assume hibernate is true */ hw->hibernate = true; --- linux-3.5.0.orig/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h +++ linux-3.5.0/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h @@ -74,6 +74,8 @@ #define PCI_DEVICE_ID_ATHEROS_L1D_2_0 0x1083 /* AR8151 v2.0 Gigabit 1000 */ #define L2CB_V10 0xc0 #define L2CB_V11 0xc1 +#define L2CB_V20 0xc0 +#define L2CB_V21 0xc1 /* register definition */ #define REG_DEVICE_CAP 0x5C @@ -87,6 +89,9 @@ #define LINK_CTRL_L1_EN 0x02 #define LINK_CTRL_EXT_SYNC 0x80 +#define REG_PCIE_IND_ACC_ADDR 0x80 +#define REG_PCIE_IND_ACC_DATA 0x84 + #define REG_DEV_SERIALNUM_CTRL 0x200 #define REG_DEV_MAC_SEL_MASK 0x0 /* 0:EUI; 1:MAC */ #define REG_DEV_MAC_SEL_SHIFT 0 --- linux-3.5.0.orig/drivers/net/ethernet/neterion/vxge/vxge-main.c +++ linux-3.5.0/drivers/net/ethernet/neterion/vxge/vxge-main.c @@ -4202,6 +4202,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; @@ -4244,9 +4247,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 @@ -4856,3 +4859,5 @@ } module_init(vxge_starter); module_exit(vxge_closer); +MODULE_FIRMWARE(VXGE_PXE_FIRMWARE); +MODULE_FIRMWARE(VXGE_FIRMWARE); --- linux-3.5.0.orig/drivers/net/ethernet/sis/sis900.c +++ linux-3.5.0/drivers/net/ethernet/sis/sis900.c @@ -2477,7 +2477,7 @@ netif_start_queue(net_dev); /* Workaround for EDB */ - sis900_set_mode(ioaddr, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); + sis900_set_mode(sis_priv, HW_SPEED_10_MBPS, FDX_CAPABLE_HALF_SELECTED); /* Enable all known interrupts by setting the interrupt mask. */ sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxIDLE); --- linux-3.5.0.orig/drivers/net/ethernet/sfc/efx.c +++ linux-3.5.0/drivers/net/ethernet/sfc/efx.c @@ -1503,6 +1503,11 @@ goto fail2; } + BUILD_BUG_ON(EFX_DEFAULT_DMAQ_SIZE < EFX_RXQ_MIN_ENT); + if (WARN_ON(EFX_DEFAULT_DMAQ_SIZE < EFX_TXQ_MIN_ENT(efx))) { + rc = -EINVAL; + goto fail3; + } efx->rxq_entries = efx->txq_entries = EFX_DEFAULT_DMAQ_SIZE; rc = efx_probe_filters(efx); @@ -2070,6 +2075,7 @@ net_dev->irq = efx->pci_dev->irq; net_dev->netdev_ops = &efx_netdev_ops; SET_ETHTOOL_OPS(net_dev, &efx_ethtool_ops); + net_dev->gso_max_segs = EFX_TSO_MAX_SEGS; rtnl_lock(); --- linux-3.5.0.orig/drivers/net/ethernet/sfc/ethtool.c +++ linux-3.5.0/drivers/net/ethernet/sfc/ethtool.c @@ -680,21 +680,27 @@ struct ethtool_ringparam *ring) { struct efx_nic *efx = netdev_priv(net_dev); + u32 txq_entries; if (ring->rx_mini_pending || ring->rx_jumbo_pending || ring->rx_pending > EFX_MAX_DMAQ_SIZE || ring->tx_pending > EFX_MAX_DMAQ_SIZE) return -EINVAL; - if (ring->rx_pending < EFX_MIN_RING_SIZE || - ring->tx_pending < EFX_MIN_RING_SIZE) { + if (ring->rx_pending < EFX_RXQ_MIN_ENT) { netif_err(efx, drv, efx->net_dev, - "TX and RX queues cannot be smaller than %ld\n", - EFX_MIN_RING_SIZE); + "RX queues cannot be smaller than %u\n", + EFX_RXQ_MIN_ENT); return -EINVAL; } - return efx_realloc_channels(efx, ring->rx_pending, ring->tx_pending); + txq_entries = max(ring->tx_pending, EFX_TXQ_MIN_ENT(efx)); + if (txq_entries != ring->tx_pending) + netif_warn(efx, drv, efx->net_dev, + "increasing TX queue size to minimum of %u\n", + txq_entries); + + return efx_realloc_channels(efx, ring->rx_pending, txq_entries); } static int efx_ethtool_set_pauseparam(struct net_device *net_dev, @@ -857,8 +863,8 @@ &ip_entry->ip4dst, &ip_entry->pdst); if (rc != 0) { rc = efx_filter_get_ipv4_full( - &spec, &proto, &ip_entry->ip4src, &ip_entry->psrc, - &ip_entry->ip4dst, &ip_entry->pdst); + &spec, &proto, &ip_entry->ip4dst, &ip_entry->pdst, + &ip_entry->ip4src, &ip_entry->psrc); EFX_WARN_ON_PARANOID(rc); ip_mask->ip4src = ~0; ip_mask->psrc = ~0; --- linux-3.5.0.orig/drivers/net/ethernet/sfc/efx.h +++ linux-3.5.0/drivers/net/ethernet/sfc/efx.h @@ -30,6 +30,7 @@ efx_enqueue_skb(struct efx_tx_queue *tx_queue, struct sk_buff *skb); extern void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index); extern int efx_setup_tc(struct net_device *net_dev, u8 num_tc); +extern unsigned int efx_tx_max_skb_descs(struct efx_nic *efx); /* RX */ extern int efx_probe_rx_queue(struct efx_rx_queue *rx_queue); @@ -52,10 +53,15 @@ #define EFX_MAX_EVQ_SIZE 16384UL #define EFX_MIN_EVQ_SIZE 512UL -/* The smallest [rt]xq_entries that the driver supports. Callers of - * efx_wake_queue() assume that they can subsequently send at least one - * skb. Falcon/A1 may require up to three descriptors per skb_frag. */ -#define EFX_MIN_RING_SIZE (roundup_pow_of_two(2 * 3 * MAX_SKB_FRAGS)) +/* Maximum number of TCP segments we support for soft-TSO */ +#define EFX_TSO_MAX_SEGS 100 + +/* The smallest [rt]xq_entries that the driver supports. RX minimum + * is a bit arbitrary. For TX, we must have space for at least 2 + * TSO skbs. + */ +#define EFX_RXQ_MIN_ENT 128U +#define EFX_TXQ_MIN_ENT(efx) (2 * efx_tx_max_skb_descs(efx)) /* Filters */ extern int efx_probe_filters(struct efx_nic *efx); --- linux-3.5.0.orig/drivers/net/ethernet/sfc/tx.c +++ linux-3.5.0/drivers/net/ethernet/sfc/tx.c @@ -119,6 +119,25 @@ return len; } +unsigned int efx_tx_max_skb_descs(struct efx_nic *efx) +{ + /* Header and payload descriptor for each output segment, plus + * one for every input fragment boundary within a segment + */ + unsigned int max_descs = EFX_TSO_MAX_SEGS * 2 + MAX_SKB_FRAGS; + + /* Possibly one more per segment for the alignment workaround */ + if (EFX_WORKAROUND_5391(efx)) + max_descs += EFX_TSO_MAX_SEGS; + + /* Possibly more for PCIe page boundaries within input fragments */ + if (PAGE_SIZE > EFX_PAGE_SIZE) + max_descs += max_t(unsigned int, MAX_SKB_FRAGS, + DIV_ROUND_UP(GSO_MAX_SIZE, EFX_PAGE_SIZE)); + + return max_descs; +} + /* * Add a socket buffer to a TX queue * --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be.h @@ -110,6 +110,7 @@ #define MAX_RX_POST BE_NAPI_WEIGHT /* Frags posted at a time */ #define RX_FRAGS_REFILL_WM (RX_Q_LEN - MAX_RX_POST) +#define MAX_VFS 30 /* Max VFs supported by BE3 FW */ #define FW_VER_LEN 32 struct be_dma_mem { @@ -336,7 +337,6 @@ u16 auto_speeds_supported; u16 fixed_speeds_supported; int link_speed; - int forced_port_speed; u32 dac_cable_len; u32 advertising; u32 supported; @@ -389,6 +389,7 @@ struct delayed_work work; u16 work_counter; + struct delayed_work func_recovery_work; u32 flags; /* Ethtool knobs and info */ char fw_ver[FW_VER_LEN]; @@ -396,9 +397,10 @@ u32 *pmac_id; /* MAC addr handle used by BE card */ u32 beacon_state; /* for set_phys_id */ - bool eeh_err; - bool ue_detected; + bool eeh_error; bool fw_timeout; + bool hw_error; + u32 port_num; bool promiscuous; u32 function_mode; @@ -435,6 +437,7 @@ u32 max_pmac_cnt; /* Max secondary UC MACs programmable */ u32 uc_macs; /* Count of secondary UC MAC programmed */ u32 msg_enable; + int be_get_temp_freq; }; #define be_physfn(adapter) (!adapter->virtfn) @@ -454,6 +457,9 @@ #define lancer_chip(adapter) ((adapter->pdev->device == OC_DEVICE_ID3) || \ (adapter->pdev->device == OC_DEVICE_ID4)) +#define skyhawk_chip(adapter) (adapter->pdev->device == OC_DEVICE_ID5) + + #define be_roce_supported(adapter) ((adapter->if_type == SLI_INTF_TYPE_3 || \ adapter->sli_family == SKYHAWK_SLI_FAMILY) && \ (adapter->function_mode & RDMA_ENABLED)) @@ -573,6 +579,11 @@ return val; } +static inline bool is_ipv4_pkt(struct sk_buff *skb) +{ + return skb->protocol == htons(ETH_P_IP) && ip_hdr(skb)->version == 4; +} + static inline void be_vf_eth_addr_generate(struct be_adapter *adapter, u8 *mac) { u32 addr; @@ -593,7 +604,19 @@ static inline bool be_error(struct be_adapter *adapter) { - return adapter->eeh_err || adapter->ue_detected || adapter->fw_timeout; + return adapter->eeh_error || adapter->hw_error || adapter->fw_timeout; +} + +static inline bool be_crit_error(struct be_adapter *adapter) +{ + return adapter->eeh_error || adapter->hw_error; +} + +static inline void be_clear_all_error(struct be_adapter *adapter) +{ + adapter->eeh_error = false; + adapter->hw_error = false; + adapter->fw_timeout = false; } static inline bool be_is_wol_excluded(struct be_adapter *adapter) --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_hw.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_hw.h @@ -45,20 +45,19 @@ #define POST_STAGE_ARMFW_RDY 0xc000 /* FW is done with POST */ -/* Lancer SLIPORT_CONTROL SLIPORT_STATUS registers */ +/* Lancer SLIPORT registers */ #define SLIPORT_STATUS_OFFSET 0x404 #define SLIPORT_CONTROL_OFFSET 0x408 #define SLIPORT_ERROR1_OFFSET 0x40C #define SLIPORT_ERROR2_OFFSET 0x410 +#define PHYSDEV_CONTROL_OFFSET 0x414 #define SLIPORT_STATUS_ERR_MASK 0x80000000 #define SLIPORT_STATUS_RN_MASK 0x01000000 #define SLIPORT_STATUS_RDY_MASK 0x00800000 - - #define SLI_PORT_CONTROL_IP_MASK 0x08000000 - -#define PCICFG_CUST_SCRATCHPAD_CSR 0x1EC +#define PHYSDEV_CONTROL_FW_RESET_MASK 0x00000002 +#define PHYSDEV_CONTROL_INP_MASK 0x40000000 /********* Memory BAR register ************/ #define PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET 0xfc --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_ethtool.c @@ -512,28 +512,6 @@ return val; } -static int convert_to_et_speed(u32 be_speed) -{ - int et_speed = SPEED_10000; - - switch (be_speed) { - case PHY_LINK_SPEED_10MBPS: - et_speed = SPEED_10; - break; - case PHY_LINK_SPEED_100MBPS: - et_speed = SPEED_100; - break; - case PHY_LINK_SPEED_1GBPS: - et_speed = SPEED_1000; - break; - case PHY_LINK_SPEED_10GBPS: - et_speed = SPEED_10000; - break; - } - - return et_speed; -} - bool be_pause_supported(struct be_adapter *adapter) { return (adapter->phy.interface_type == PHY_TYPE_SFP_PLUS_10GB || @@ -544,27 +522,16 @@ static int be_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd) { struct be_adapter *adapter = netdev_priv(netdev); - u8 port_speed = 0; - u16 link_speed = 0; u8 link_status; - u32 et_speed = 0; + u16 link_speed = 0; int status; - if (adapter->phy.link_speed < 0 || !(netdev->flags & IFF_UP)) { - if (adapter->phy.forced_port_speed < 0) { - status = be_cmd_link_status_query(adapter, &port_speed, - &link_speed, &link_status, 0); - if (!status) - be_link_status_update(adapter, link_status); - if (link_speed) - et_speed = link_speed * 10; - else if (link_status) - et_speed = convert_to_et_speed(port_speed); - } else { - et_speed = adapter->phy.forced_port_speed; - } - - ethtool_cmd_speed_set(ecmd, et_speed); + if (adapter->phy.link_speed < 0) { + status = be_cmd_link_status_query(adapter, &link_speed, + &link_status, 0); + if (!status) + be_link_status_update(adapter, link_status); + ethtool_cmd_speed_set(ecmd, link_speed); status = be_cmd_get_phy_info(adapter); if (status) @@ -648,7 +615,7 @@ struct be_adapter *adapter = netdev_priv(netdev); int status; - if (ecmd->autoneg != 0) + if (ecmd->autoneg != adapter->phy.fc_autoneg) return -EINVAL; adapter->tx_fc = ecmd->tx_pause; adapter->rx_fc = ecmd->rx_pause; @@ -773,8 +740,8 @@ be_self_test(struct net_device *netdev, struct ethtool_test *test, u64 *data) { struct be_adapter *adapter = netdev_priv(netdev); - u8 mac_speed = 0; - u16 qos_link_speed = 0; + int status; + u8 link_status = 0; memset(data, 0, sizeof(u64) * ETHTOOL_TESTS_NUM); @@ -798,11 +765,11 @@ test->flags |= ETH_TEST_FL_FAILED; } - if (be_cmd_link_status_query(adapter, &mac_speed, - &qos_link_speed, NULL, 0) != 0) { + status = be_cmd_link_status_query(adapter, NULL, &link_status, 0); + if (status) { test->flags |= ETH_TEST_FL_FAILED; data[4] = -1; - } else if (!mac_speed) { + } else if (!link_status) { test->flags |= ETH_TEST_FL_FAILED; data[4] = 1; } @@ -910,8 +877,9 @@ if (!status) { cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + sizeof(struct be_cmd_resp_hdr)); - for (i = 0; i < cfgs->num_modules; i++) { - for (j = 0; j < cfgs->module[i].num_modes; j++) { + 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 = --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_cmds.c @@ -19,9 +19,6 @@ #include "be.h" #include "be_cmds.h" -/* Must be a power of 2 or else MODULO will BUG_ON */ -static int be_get_temp_freq = 64; - static inline void *embedded_payload(struct be_mcc_wrb *wrb) { return wrb->payload.embedded_payload; @@ -115,7 +112,7 @@ } } else { if (opcode == OPCODE_COMMON_GET_CNTL_ADDITIONAL_ATTRIBUTES) - be_get_temp_freq = 0; + adapter->be_get_temp_freq = 0; if (compl_status == MCC_STATUS_NOT_SUPPORTED || compl_status == MCC_STATUS_ILLEGAL_REQUEST) @@ -144,6 +141,11 @@ /* When link status changes, link speed must be re-queried from FW */ adapter->phy.link_speed = -1; + /* Ignore physical link event */ + if (lancer_chip(adapter) && + !(evt->port_link_status & LOGICAL_LINK_STATUS_MASK)) + return; + /* For the initial link status do not rely on the ASYNC event as * it may not be received in some cases. */ @@ -163,14 +165,13 @@ } } -/* Grp5 QOS Speed evt */ +/* Grp5 QOS Speed evt: qos_link_speed is in units of 10 Mbps */ static void be_async_grp5_qos_speed_process(struct be_adapter *adapter, struct be_async_event_grp5_qos_link_speed *evt) { - if (evt->physical_port == adapter->port_num) { - /* qos_link_speed is in units of 10 Mbps */ - adapter->phy.link_speed = evt->qos_link_speed * 10; - } + if (adapter->phy.link_speed >= 0 && + evt->physical_port == adapter->port_num) + adapter->phy.link_speed = le16_to_cpu(evt->qos_link_speed) * 10; } /*Grp5 PVID evt*/ @@ -257,7 +258,7 @@ int num = 0, status = 0; struct be_mcc_obj *mcc_obj = &adapter->mcc_obj; - spin_lock_bh(&adapter->mcc_cq_lock); + spin_lock(&adapter->mcc_cq_lock); while ((compl = be_mcc_compl_get(adapter))) { if (compl->flags & CQE_FLAGS_ASYNC_MASK) { /* Interpret flags as an async trailer */ @@ -278,7 +279,7 @@ if (num) be_cq_notify(adapter, mcc_obj->cq.id, mcc_obj->rearm_cq, num); - spin_unlock_bh(&adapter->mcc_cq_lock); + spin_unlock(&adapter->mcc_cq_lock); return status; } @@ -293,7 +294,9 @@ if (be_error(adapter)) return -EIO; + local_bh_disable(); status = be_process_mcc(adapter); + local_bh_enable(); if (atomic_read(&mcc_obj->q.used) == 0) break; @@ -352,7 +355,7 @@ if (msecs > 4000) { dev_err(&adapter->pdev->dev, "FW not responding\n"); adapter->fw_timeout = true; - be_detect_dump_ue(adapter); + be_detect_error(adapter); return -1; } @@ -429,12 +432,65 @@ return 0; } -int be_cmd_POST(struct be_adapter *adapter) +int lancer_wait_ready(struct be_adapter *adapter) +{ +#define SLIPORT_READY_TIMEOUT 30 + u32 sliport_status; + int status = 0, i; + + for (i = 0; i < SLIPORT_READY_TIMEOUT; i++) { + sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + if (sliport_status & SLIPORT_STATUS_RDY_MASK) + break; + + msleep(1000); + } + + if (i == SLIPORT_READY_TIMEOUT) + status = -1; + + return status; +} + +int lancer_test_and_set_rdy_state(struct be_adapter *adapter) +{ + int status; + u32 sliport_status, err, reset_needed; + status = lancer_wait_ready(adapter); + if (!status) { + sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + err = sliport_status & SLIPORT_STATUS_ERR_MASK; + reset_needed = sliport_status & SLIPORT_STATUS_RN_MASK; + if (err && reset_needed) { + iowrite32(SLI_PORT_CONTROL_IP_MASK, + adapter->db + SLIPORT_CONTROL_OFFSET); + + /* check adapter has corrected the error */ + status = lancer_wait_ready(adapter); + sliport_status = ioread32(adapter->db + + SLIPORT_STATUS_OFFSET); + sliport_status &= (SLIPORT_STATUS_ERR_MASK | + SLIPORT_STATUS_RN_MASK); + if (status || sliport_status) + status = -1; + } else if (err || reset_needed) { + status = -1; + } + } + return status; +} + +int be_fw_wait_ready(struct be_adapter *adapter) { u16 stage; int status, timeout = 0; struct device *dev = &adapter->pdev->dev; + if (lancer_chip(adapter)) { + status = lancer_wait_ready(adapter); + return status; + } + do { status = be_POST_stage_get(adapter, &stage); if (status) { @@ -565,6 +621,9 @@ u8 *wrb; int status; + if (lancer_chip(adapter)) + return 0; + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -592,6 +651,9 @@ u8 *wrb; int status; + if (lancer_chip(adapter)) + return 0; + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -610,6 +672,7 @@ mutex_unlock(&adapter->mbox_lock); return status; } + int be_cmd_eq_create(struct be_adapter *adapter, struct be_queue_info *eq, int eq_delay) { @@ -1132,7 +1195,7 @@ * Uses MCCQ */ int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, u32 en_flags, - u8 *mac, u32 *if_handle, u32 *pmac_id, u32 domain) + u32 *if_handle, u32 domain) { struct be_mcc_wrb *wrb; struct be_cmd_req_if_create *req; @@ -1152,17 +1215,13 @@ req->hdr.domain = domain; req->capability_flags = cpu_to_le32(cap_flags); req->enable_flags = cpu_to_le32(en_flags); - if (mac) - memcpy(req->mac_addr, mac, ETH_ALEN); - else - req->pmac_invalid = true; + + req->pmac_invalid = true; status = be_mcc_notify_wait(adapter); if (!status) { struct be_cmd_resp_if_create *resp = embedded_payload(wrb); *if_handle = le32_to_cpu(resp->interface_id); - if (mac) - *pmac_id = le32_to_cpu(resp->pmac_id); } err: @@ -1210,9 +1269,6 @@ struct be_cmd_req_hdr *hdr; int status = 0; - if (MODULO(adapter->work_counter, be_get_temp_freq) == 0) - be_cmd_get_die_temperature(adapter); - spin_lock_bh(&adapter->mcc_lock); wrb = wrb_from_mccq(adapter); @@ -1269,9 +1325,28 @@ return status; } -/* Uses synchronous mcc */ -int be_cmd_link_status_query(struct be_adapter *adapter, u8 *mac_speed, - u16 *link_speed, u8 *link_status, u32 dom) +static int be_mac_to_link_speed(int mac_speed) +{ + switch (mac_speed) { + case PHY_LINK_SPEED_ZERO: + return 0; + case PHY_LINK_SPEED_10MBPS: + return 10; + case PHY_LINK_SPEED_100MBPS: + return 100; + case PHY_LINK_SPEED_1GBPS: + return 1000; + case PHY_LINK_SPEED_10GBPS: + return 10000; + } + return 0; +} + +/* Uses synchronous mcc + * Returns link_speed in Mbps + */ +int be_cmd_link_status_query(struct be_adapter *adapter, u16 *link_speed, + u8 *link_status, u32 dom) { struct be_mcc_wrb *wrb; struct be_cmd_req_link_status *req; @@ -1300,11 +1375,13 @@ status = be_mcc_notify_wait(adapter); if (!status) { struct be_cmd_resp_link_status *resp = embedded_payload(wrb); - if (resp->mac_speed != PHY_LINK_SPEED_ZERO) { - if (link_speed) - *link_speed = le16_to_cpu(resp->link_speed); - if (mac_speed) - *mac_speed = resp->mac_speed; + if (link_speed) { + *link_speed = resp->link_speed ? + le16_to_cpu(resp->link_speed) * 10 : + be_mac_to_link_speed(resp->mac_speed); + + if (!resp->logical_link_status) + *link_speed = 0; } if (link_status) *link_status = resp->logical_link_status; @@ -1581,7 +1658,8 @@ /* Reset mcast promisc mode if already set by setting mask * and not setting flags field */ - req->if_flags_mask |= + if (!lancer_chip(adapter) || be_physfn(adapter)) + req->if_flags_mask |= cpu_to_le32(BE_IF_FLAGS_MCAST_PROMISCUOUS); req->mcast_num = cpu_to_le32(netdev_mc_count(adapter->netdev)); @@ -1692,6 +1770,20 @@ struct be_cmd_req_hdr *req; int status; + if (lancer_chip(adapter)) { + status = lancer_wait_ready(adapter); + if (!status) { + iowrite32(SLI_PORT_CONTROL_IP_MASK, + adapter->db + SLIPORT_CONTROL_OFFSET); + status = lancer_test_and_set_rdy_state(adapter); + } + if (status) { + dev_err(&adapter->pdev->dev, + "Adapter in non recoverable error\n"); + } + return status; + } + if (mutex_lock_interruptible(&adapter->mbox_lock)) return -1; @@ -1728,6 +1820,13 @@ req->if_id = cpu_to_le32(adapter->if_handle); req->enable_rss = cpu_to_le16(RSS_ENABLE_TCP_IPV4 | RSS_ENABLE_IPV4 | RSS_ENABLE_TCP_IPV6 | RSS_ENABLE_IPV6); + + if (lancer_chip(adapter) || skyhawk_chip(adapter)) { + req->hdr.version = 1; + req->enable_rss |= cpu_to_le16(RSS_ENABLE_UDP_IPV4 | + RSS_ENABLE_UDP_IPV6); + } + req->cpu_table_size_log2 = cpu_to_le16(fls(table_size) - 1); memcpy(req->cpu_table, rsstable, table_size); memcpy(req->hash, myhash, sizeof(myhash)); @@ -1805,8 +1904,9 @@ } int lancer_cmd_write_object(struct be_adapter *adapter, struct be_dma_mem *cmd, - u32 data_size, u32 data_offset, const char *obj_name, - u32 *data_written, u8 *addn_status) + u32 data_size, u32 data_offset, + const char *obj_name, u32 *data_written, + u8 *change_status, u8 *addn_status) { struct be_mcc_wrb *wrb; struct lancer_cmd_req_write_object *req; @@ -1862,10 +1962,12 @@ status = adapter->flash_status; resp = embedded_payload(wrb); - if (!status) + if (!status) { *data_written = le32_to_cpu(resp->actual_write_len); - else + *change_status = resp->change_status; + } else { *addn_status = resp->additional_status; + } return status; @@ -2330,8 +2432,8 @@ } /* Uses synchronous MCCQ */ -int be_cmd_get_mac_from_list(struct be_adapter *adapter, u32 domain, - bool *pmac_id_active, u32 *pmac_id, u8 *mac) +int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, + bool *pmac_id_active, u32 *pmac_id, u8 domain) { struct be_mcc_wrb *wrb; struct be_cmd_req_get_mac_list *req; @@ -2376,8 +2478,9 @@ get_mac_list_cmd.va; mac_count = resp->true_mac_count + resp->pseudo_mac_count; /* Mac list returned could contain one or more active mac_ids - * or one or more pseudo permanant mac addresses. If an active - * mac_id is present, return first active mac_id found + * or one or more true or pseudo permanant mac addresses. + * If an active mac_id is present, return first active mac_id + * found. */ for (i = 0; i < mac_count; i++) { struct get_list_macaddr *mac_entry; @@ -2396,7 +2499,7 @@ goto out; } } - /* If no active mac_id found, return first pseudo mac addr */ + /* If no active mac_id found, return first mac addr */ *pmac_id_active = false; memcpy(mac, resp->macaddr_list[0].mac_addr_id.macaddr, ETH_ALEN); --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_cmds.h +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_cmds.h @@ -93,6 +93,7 @@ LINK_UP = 0x1 }; #define LINK_STATUS_MASK 0x1 +#define LOGICAL_LINK_STATUS_MASK 0x2 /* When the event code of an async trailer is link-state, the mcc_compl * must be interpreted as follows @@ -1088,6 +1089,8 @@ #define RSS_ENABLE_TCP_IPV4 0x2 #define RSS_ENABLE_IPV6 0x4 #define RSS_ENABLE_TCP_IPV6 0x8 +#define RSS_ENABLE_UDP_IPV4 0x10 +#define RSS_ENABLE_UDP_IPV6 0x20 struct be_cmd_req_rss_config { struct be_cmd_req_hdr hdr; @@ -1163,6 +1166,8 @@ u32 addr_high; }; +#define LANCER_NO_RESET_NEEDED 0x00 +#define LANCER_FW_RESET_NEEDED 0x02 struct lancer_cmd_resp_write_object { u8 opcode; u8 subsystem; @@ -1173,6 +1178,8 @@ u32 resp_len; u32 actual_resp_len; u32 actual_write_len; + u8 change_status; + u8 rsvd3[3]; }; /************************ Lancer Read FW info **************/ @@ -1656,7 +1663,7 @@ }; extern int be_pci_fnum_get(struct be_adapter *adapter); -extern int be_cmd_POST(struct be_adapter *adapter); +extern int be_fw_wait_ready(struct be_adapter *adapter); extern int be_cmd_mac_addr_query(struct be_adapter *adapter, u8 *mac_addr, u8 type, bool permanent, u32 if_handle, u32 pmac_id); extern int be_cmd_pmac_add(struct be_adapter *adapter, u8 *mac_addr, @@ -1664,8 +1671,7 @@ extern int be_cmd_pmac_del(struct be_adapter *adapter, u32 if_id, int pmac_id, u32 domain); extern int be_cmd_if_create(struct be_adapter *adapter, u32 cap_flags, - u32 en_flags, u8 *mac, u32 *if_handle, u32 *pmac_id, - u32 domain); + u32 en_flags, u32 *if_handle, u32 domain); extern int be_cmd_if_destroy(struct be_adapter *adapter, int if_handle, u32 domain); extern int be_cmd_eq_create(struct be_adapter *adapter, @@ -1686,8 +1692,8 @@ int type); extern int be_cmd_rxq_destroy(struct be_adapter *adapter, struct be_queue_info *q); -extern int be_cmd_link_status_query(struct be_adapter *adapter, u8 *mac_speed, - u16 *link_speed, u8 *link_status, u32 dom); +extern int be_cmd_link_status_query(struct be_adapter *adapter, u16 *link_speed, + u8 *link_status, u32 dom); extern int be_cmd_reset(struct be_adapter *adapter); extern int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd); @@ -1719,10 +1725,11 @@ struct be_dma_mem *cmd, u32 flash_oper, u32 flash_opcode, u32 buf_size); extern int lancer_cmd_write_object(struct be_adapter *adapter, - struct be_dma_mem *cmd, - u32 data_size, u32 data_offset, - const char *obj_name, - u32 *data_written, u8 *addn_status); + struct be_dma_mem *cmd, + u32 data_size, u32 data_offset, + const char *obj_name, + u32 *data_written, u8 *change_status, + u8 *addn_status); int lancer_cmd_read_object(struct be_adapter *adapter, struct be_dma_mem *cmd, u32 data_size, u32 data_offset, const char *obj_name, u32 *data_read, u32 *eof, u8 *addn_status); @@ -1745,14 +1752,15 @@ u8 loopback_type, u8 enable); extern int be_cmd_get_phy_info(struct be_adapter *adapter); extern int be_cmd_set_qos(struct be_adapter *adapter, u32 bps, u32 domain); -extern void be_detect_dump_ue(struct be_adapter *adapter); +extern void be_detect_error(struct be_adapter *adapter); extern int be_cmd_get_die_temperature(struct be_adapter *adapter); extern int be_cmd_get_cntl_attributes(struct be_adapter *adapter); extern int be_cmd_req_native_mode(struct be_adapter *adapter); extern int be_cmd_get_reg_len(struct be_adapter *adapter, u32 *log_size); extern void be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf); -extern int be_cmd_get_mac_from_list(struct be_adapter *adapter, u32 domain, - bool *pmac_id_active, u32 *pmac_id, u8 *mac); +extern int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac, + bool *pmac_id_active, u32 *pmac_id, + u8 domain); extern int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array, u8 mac_count, u32 domain); extern int be_cmd_set_hsw_config(struct be_adapter *adapter, u16 pvid, @@ -1765,4 +1773,6 @@ extern int be_cmd_set_ext_fat_capabilites(struct be_adapter *adapter, struct be_dma_mem *cmd, struct be_fat_conf_params *cfgs); +extern int lancer_wait_ready(struct be_adapter *adapter); +extern int lancer_test_and_set_rdy_state(struct be_adapter *adapter); --- linux-3.5.0.orig/drivers/net/ethernet/emulex/benet/be_main.c +++ linux-3.5.0/drivers/net/ethernet/emulex/benet/be_main.c @@ -155,7 +155,7 @@ { u32 reg, enabled; - if (adapter->eeh_err) + if (adapter->eeh_error) return; pci_read_config_dword(adapter->pdev, PCICFG_MEMBAR_CTRL_INT_CTRL_OFFSET, @@ -201,7 +201,7 @@ val |= ((qid & DB_EQ_RING_ID_EXT_MASK) << DB_EQ_RING_ID_EXT_MASK_SHIFT); - if (adapter->eeh_err) + if (adapter->eeh_error) return; if (arm) @@ -220,7 +220,7 @@ val |= ((qid & DB_CQ_RING_ID_EXT_MASK) << DB_CQ_RING_ID_EXT_MASK_SHIFT); - if (adapter->eeh_err) + if (adapter->eeh_error) return; if (arm) @@ -558,6 +558,7 @@ wrb->frag_pa_hi = upper_32_bits(addr); wrb->frag_pa_lo = addr & 0xFFFFFFFF; wrb->frag_len = len & ETH_WRB_FRAG_LEN_MASK; + wrb->rsvd0 = 0; } static inline u16 be_get_tx_vlan_tag(struct be_adapter *adapter, @@ -576,6 +577,11 @@ return vlan_tag; } +static int be_vlan_tag_chk(struct be_adapter *adapter, struct sk_buff *skb) +{ + return vlan_tx_tag_present(skb) || adapter->pvid; +} + static void wrb_fill_hdr(struct be_adapter *adapter, struct be_eth_hdr_wrb *hdr, struct sk_buff *skb, u32 wrb_cnt, u32 len) { @@ -703,33 +709,56 @@ return 0; } +static struct sk_buff *be_insert_vlan_in_pkt(struct be_adapter *adapter, + struct sk_buff *skb) +{ + u16 vlan_tag = 0; + + skb = skb_share_check(skb, GFP_ATOMIC); + if (unlikely(!skb)) + return skb; + + if (vlan_tx_tag_present(skb)) { + vlan_tag = be_get_tx_vlan_tag(adapter, skb); + __vlan_put_tag(skb, vlan_tag); + skb->vlan_tci = 0; + } + + return skb; +} + static netdev_tx_t be_xmit(struct sk_buff *skb, struct net_device *netdev) { struct be_adapter *adapter = netdev_priv(netdev); struct be_tx_obj *txo = &adapter->tx_obj[skb_get_queue_mapping(skb)]; struct be_queue_info *txq = &txo->q; + struct iphdr *ip = NULL; u32 wrb_cnt = 0, copied = 0; - u32 start = txq->head; + u32 start = txq->head, eth_hdr_len; bool dummy_wrb, stopped = false; - /* For vlan tagged pkts, BE - * 1) calculates checksum even when CSO is not requested - * 2) calculates checksum wrongly for padded pkt less than - * 60 bytes long. - * As a workaround disable TX vlan offloading in such cases. + eth_hdr_len = ntohs(skb->protocol) == ETH_P_8021Q ? + VLAN_ETH_HLEN : ETH_HLEN; + + /* HW has a bug which considers padding bytes as legal + * and modifies the IPv4 hdr's 'tot_len' field */ - if (unlikely(vlan_tx_tag_present(skb) && - (skb->ip_summed != CHECKSUM_PARTIAL || skb->len <= 60))) { - skb = skb_share_check(skb, GFP_ATOMIC); - if (unlikely(!skb)) - goto tx_drop; + if (skb->len <= 60 && be_vlan_tag_chk(adapter, skb) && + is_ipv4_pkt(skb)) { + ip = (struct iphdr *)ip_hdr(skb); + pskb_trim(skb, eth_hdr_len + ntohs(ip->tot_len)); + } - skb = __vlan_put_tag(skb, be_get_tx_vlan_tag(adapter, skb)); + /* HW has a bug wherein it will calculate CSUM for VLAN + * pkts even though it is disabled. + * Manually insert VLAN in pkt. + */ + if (skb->ip_summed != CHECKSUM_PARTIAL && + be_vlan_tag_chk(adapter, skb)) { + skb = be_insert_vlan_in_pkt(adapter, skb); if (unlikely(!skb)) goto tx_drop; - - skb->vlan_tci = 0; } wrb_cnt = wrb_cnt_for_skb(adapter, skb, &dummy_wrb); @@ -786,19 +815,12 @@ * A max of 64 (BE_NUM_VLANS_SUPPORTED) vlans can be configured in BE. * If the user configures more, place BE in vlan promiscuous mode. */ -static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num) +static int be_vid_config(struct be_adapter *adapter) { - struct be_vf_cfg *vf_cfg = &adapter->vf_cfg[vf_num]; - u16 vtag[BE_NUM_VLANS_SUPPORTED]; - u16 ntags = 0, i; + u16 vids[BE_NUM_VLANS_SUPPORTED]; + u16 num = 0, i; int status = 0; - if (vf) { - vtag[0] = cpu_to_le16(vf_cfg->vlan_tag); - status = be_cmd_vlan_config(adapter, vf_cfg->if_handle, vtag, - 1, 1, 0); - } - /* No need to further configure vids if in promiscuous mode */ if (adapter->promiscuous) return 0; @@ -809,10 +831,10 @@ /* Construct VLAN Table to give to HW */ for (i = 0; i < VLAN_N_VID; i++) if (adapter->vlan_tag[i]) - vtag[ntags++] = cpu_to_le16(i); + vids[num++] = cpu_to_le16(i); status = be_cmd_vlan_config(adapter, adapter->if_handle, - vtag, ntags, 1, 0); + vids, num, 1, 0); /* Set to VLAN promisc mode as setting VLAN filter failed */ if (status) { @@ -841,7 +863,7 @@ adapter->vlan_tag[vid] = 1; if (adapter->vlans_added <= (adapter->max_vlans + 1)) - status = be_vid_config(adapter, false, 0); + status = be_vid_config(adapter); if (!status) adapter->vlans_added++; @@ -863,7 +885,7 @@ adapter->vlan_tag[vid] = 0; if (adapter->vlans_added <= adapter->max_vlans) - status = be_vid_config(adapter, false, 0); + status = be_vid_config(adapter); if (!status) adapter->vlans_added--; @@ -890,7 +912,7 @@ be_cmd_rx_filter(adapter, IFF_PROMISC, OFF); if (adapter->vlans_added) - be_vid_config(adapter, false, 0); + be_vid_config(adapter); } /* Enable multicast promisc if num configured exceeds what we support */ @@ -1053,17 +1075,18 @@ static int be_find_vfs(struct be_adapter *adapter, int vf_state) { struct pci_dev *dev, *pdev = adapter->pdev; - int vfs = 0, assigned_vfs = 0, pos, vf_fn; + int vfs = 0, assigned_vfs = 0, pos; u16 offset, stride; pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV); + if (!pos) + return 0; pci_read_config_word(pdev, pos + PCI_SRIOV_VF_OFFSET, &offset); pci_read_config_word(pdev, pos + PCI_SRIOV_VF_STRIDE, &stride); dev = pci_get_device(pdev->vendor, PCI_ANY_ID, NULL); while (dev) { - vf_fn = (pdev->devfn + offset + stride * vfs) & 0xFFFF; - if (dev->is_virtfn && dev->devfn == vf_fn) { + if (dev->is_virtfn && pci_physfn(dev) == pdev) { vfs++; if (dev->dev_flags & PCI_DEV_FLAGS_ASSIGNED) assigned_vfs++; @@ -1203,16 +1226,16 @@ /* Copy data in the first descriptor of this completion */ curr_frag_len = min(rxcp->pkt_size, rx_frag_size); - /* Copy the header portion into skb_data */ - hdr_len = min(BE_HDR_LEN, curr_frag_len); - memcpy(skb->data, start, hdr_len); skb->len = curr_frag_len; if (curr_frag_len <= BE_HDR_LEN) { /* tiny packet */ + memcpy(skb->data, start, curr_frag_len); /* Complete packet has now been moved to data */ put_page(page_info->page); skb->data_len = 0; skb->tail += curr_frag_len; } else { + hdr_len = ETH_HLEN; + memcpy(skb->data, start, hdr_len); skb_shinfo(skb)->nr_frags = 1; skb_frag_set_page(skb, 0, page_info->page); skb_shinfo(skb)->frags[0].page_offset = @@ -1372,7 +1395,7 @@ rxcp->pkt_type = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, cast_enc, compl); rxcp->rss_hash = - AMAP_GET_BITS(struct amap_eth_rx_compl_v1, rsshash, rxcp); + AMAP_GET_BITS(struct amap_eth_rx_compl_v1, rsshash, compl); if (rxcp->vlanf) { rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v1, vtm, compl); @@ -1404,7 +1427,7 @@ rxcp->pkt_type = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, cast_enc, compl); rxcp->rss_hash = - AMAP_GET_BITS(struct amap_eth_rx_compl_v0, rsshash, rxcp); + AMAP_GET_BITS(struct amap_eth_rx_compl_v0, rsshash, compl); if (rxcp->vlanf) { rxcp->vtm = AMAP_GET_BITS(struct amap_eth_rx_compl_v0, vtm, compl); @@ -1709,9 +1732,10 @@ int i; for_all_evt_queues(adapter, eqo, i) { - be_eq_clean(eqo); - if (eqo->q.created) + if (eqo->q.created) { + be_eq_clean(eqo); be_cmd_q_destroy(adapter, &eqo->q, QTYPE_EQ); + } be_queue_free(adapter, &eqo->q); } } @@ -1898,6 +1922,12 @@ */ adapter->num_rx_qs = (num_irqs(adapter) > 1) ? num_irqs(adapter) + 1 : 1; + if (adapter->num_rx_qs != MAX_RX_QS) { + rtnl_lock(); + netif_set_real_num_rx_queues(adapter->netdev, + adapter->num_rx_qs); + rtnl_unlock(); + } adapter->big_page_size = (1 << get_order(rx_frag_size)) * PAGE_SIZE; for_all_rx_queues(adapter, rxo, i) { @@ -2067,13 +2097,13 @@ return max_work; } -void be_detect_dump_ue(struct be_adapter *adapter) +void be_detect_error(struct be_adapter *adapter) { u32 ue_lo = 0, ue_hi = 0, ue_lo_mask = 0, ue_hi_mask = 0; u32 sliport_status = 0, sliport_err1 = 0, sliport_err2 = 0; u32 i; - if (adapter->eeh_err || adapter->ue_detected) + if (be_crit_error(adapter)) return; if (lancer_chip(adapter)) { @@ -2094,16 +2124,27 @@ pci_read_config_dword(adapter->pdev, PCICFG_UE_STATUS_HI_MASK, &ue_hi_mask); - ue_lo = (ue_lo & (~ue_lo_mask)); - ue_hi = (ue_hi & (~ue_hi_mask)); + ue_lo = (ue_lo & ~ue_lo_mask); + ue_hi = (ue_hi & ~ue_hi_mask); } - if (ue_lo || ue_hi || - sliport_status & SLIPORT_STATUS_ERR_MASK) { - adapter->ue_detected = true; - adapter->eeh_err = true; + /* On certain platforms BE hardware can indicate spurious UEs. + * Allow the h/w to stop working completely in case of a real UE. + * Hence not setting the hw_error for UE detection. + */ + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + adapter->hw_error = true; dev_err(&adapter->pdev->dev, - "Unrecoverable error in the card\n"); + "Error detected in the card\n"); + } + + if (sliport_status & SLIPORT_STATUS_ERR_MASK) { + dev_err(&adapter->pdev->dev, + "ERR: sliport status 0x%x\n", sliport_status); + dev_err(&adapter->pdev->dev, + "ERR: sliport error1 0x%x\n", sliport_err1); + dev_err(&adapter->pdev->dev, + "ERR: sliport error2 0x%x\n", sliport_err2); } if (ue_lo) { @@ -2113,6 +2154,7 @@ "UE: %s bit set\n", ue_status_low_desc[i]); } } + if (ue_hi) { for (i = 0; ue_hi; ue_hi >>= 1, i++) { if (ue_hi & 1) @@ -2121,14 +2163,6 @@ } } - if (sliport_status & SLIPORT_STATUS_ERR_MASK) { - dev_err(&adapter->pdev->dev, - "sliport status 0x%x\n", sliport_status); - dev_err(&adapter->pdev->dev, - "sliport error1 0x%x\n", sliport_err1); - dev_err(&adapter->pdev->dev, - "sliport error2 0x%x\n", sliport_err2); - } } static void be_msix_disable(struct be_adapter *adapter) @@ -2142,8 +2176,7 @@ static uint be_num_rss_want(struct be_adapter *adapter) { if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) && - !sriov_want(adapter) && be_physfn(adapter) && - !be_is_mc(adapter)) + !sriov_want(adapter) && be_physfn(adapter)) return (adapter->be3_native) ? BE3_MAX_RSS_QS : BE2_MAX_RSS_QS; else return 0; @@ -2406,8 +2439,7 @@ be_eq_notify(adapter, eqo->q.id, true, false, 0); } - status = be_cmd_link_status_query(adapter, NULL, NULL, - &link_status, 0); + status = be_cmd_link_status_query(adapter, NULL, &link_status, 0); if (!status) be_link_status_update(adapter, link_status); @@ -2540,11 +2572,7 @@ be_tx_queues_destroy(adapter); be_evt_queues_destroy(adapter); - /* tell fw we're done with firing cmds */ - be_cmd_fw_clean(adapter); - be_msix_disable(adapter); - pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 0); return 0; } @@ -2602,8 +2630,8 @@ cap_flags = en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_MULTICAST; for_all_vfs(adapter, vf_cfg, vf) { - status = be_cmd_if_create(adapter, cap_flags, en_flags, NULL, - &vf_cfg->if_handle, NULL, vf + 1); + status = be_cmd_if_create(adapter, cap_flags, en_flags, + &vf_cfg->if_handle, vf + 1); if (status) goto err; } @@ -2615,8 +2643,8 @@ } for_all_vfs(adapter, vf_cfg, vf) { - status = be_cmd_link_status_query(adapter, NULL, &lnk_speed, - NULL, vf + 1); + lnk_speed = 1000; + status = be_cmd_set_qos(adapter, lnk_speed, vf + 1); if (status) goto err; vf_cfg->tx_rate = lnk_speed * 10; @@ -2640,32 +2668,45 @@ adapter->be3_native = false; adapter->promiscuous = false; adapter->eq_next_idx = 0; - adapter->phy.forced_port_speed = -1; } -static int be_add_mac_from_list(struct be_adapter *adapter, u8 *mac) +static int be_get_mac_addr(struct be_adapter *adapter, u8 *mac, u32 if_handle, + bool *active_mac, u32 *pmac_id) { - u32 pmac_id; - int status; - bool pmac_id_active; + int status = 0; - status = be_cmd_get_mac_from_list(adapter, 0, &pmac_id_active, - &pmac_id, mac); - if (status != 0) - goto do_none; + if (!is_zero_ether_addr(adapter->netdev->perm_addr)) { + memcpy(mac, adapter->netdev->dev_addr, ETH_ALEN); + if (!lancer_chip(adapter) && !be_physfn(adapter)) + *active_mac = true; + else + *active_mac = false; - if (pmac_id_active) { - status = be_cmd_mac_addr_query(adapter, mac, - MAC_ADDRESS_TYPE_NETWORK, - false, adapter->if_handle, pmac_id); + return status; + } - if (!status) - adapter->pmac_id[0] = pmac_id; + if (lancer_chip(adapter)) { + status = be_cmd_get_mac_from_list(adapter, mac, + active_mac, pmac_id, 0); + if (*active_mac) { + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, + false, if_handle, + *pmac_id); + } + } else if (be_physfn(adapter)) { + /* For BE3, for PF get permanent MAC */ + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, true, + 0, 0); + *active_mac = false; } else { - status = be_cmd_pmac_add(adapter, mac, - adapter->if_handle, &adapter->pmac_id[0], 0); + /* For BE3, for VF get soft MAC assigned by PF*/ + status = be_cmd_mac_addr_query(adapter, mac, + MAC_ADDRESS_TYPE_NETWORK, false, + if_handle, 0); + *active_mac = true; } -do_none: return status; } @@ -2679,6 +2720,8 @@ if (pos) { pci_read_config_word(adapter->pdev, pos + PCI_SRIOV_TOTAL_VF, &dev_num_vfs); + if (!lancer_chip(adapter)) + dev_num_vfs = min_t(u16, dev_num_vfs, MAX_VFS); adapter->dev_num_vfs = dev_num_vfs; } return 0; @@ -2686,12 +2729,12 @@ static int be_setup(struct be_adapter *adapter) { - struct net_device *netdev = adapter->netdev; struct device *dev = &adapter->pdev->dev; u32 cap_flags, en_flags; u32 tx_fc, rx_fc; int status; u8 mac[ETH_ALEN]; + bool active_mac; be_setup_init(adapter); @@ -2717,14 +2760,6 @@ if (status) goto err; - memset(mac, 0, ETH_ALEN); - status = be_cmd_mac_addr_query(adapter, mac, MAC_ADDRESS_TYPE_NETWORK, - true /*permanent */, 0, 0); - if (status) - return status; - memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); - memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); - en_flags = BE_IF_FLAGS_UNTAGGED | BE_IF_FLAGS_BROADCAST | BE_IF_FLAGS_MULTICAST | BE_IF_FLAGS_PASS_L3L4_ERRORS; cap_flags = en_flags | BE_IF_FLAGS_MCAST_PROMISCUOUS | @@ -2734,27 +2769,36 @@ cap_flags |= BE_IF_FLAGS_RSS; en_flags |= BE_IF_FLAGS_RSS; } + + if (lancer_chip(adapter) && !be_physfn(adapter)) { + en_flags = BE_IF_FLAGS_UNTAGGED | + BE_IF_FLAGS_BROADCAST | + BE_IF_FLAGS_MULTICAST; + cap_flags = en_flags; + } + status = be_cmd_if_create(adapter, cap_flags, en_flags, - netdev->dev_addr, &adapter->if_handle, - &adapter->pmac_id[0], 0); + &adapter->if_handle, 0); if (status != 0) goto err; - /* The VF's permanent mac queried from card is incorrect. - * For BEx: Query the mac configued by the PF using if_handle - * For Lancer: Get and use mac_list to obtain mac address. - */ - if (!be_physfn(adapter)) { - if (lancer_chip(adapter)) - status = be_add_mac_from_list(adapter, mac); - else - status = be_cmd_mac_addr_query(adapter, mac, - MAC_ADDRESS_TYPE_NETWORK, false, - adapter->if_handle, 0); - if (!status) { - memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); - memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); - } + memset(mac, 0, ETH_ALEN); + active_mac = false; + status = be_get_mac_addr(adapter, mac, adapter->if_handle, + &active_mac, &adapter->pmac_id[0]); + if (status != 0) + goto err; + + if (!active_mac) { + status = be_cmd_pmac_add(adapter, mac, adapter->if_handle, + &adapter->pmac_id[0], 0); + if (status != 0) + goto err; + } + + if (is_zero_ether_addr(adapter->netdev->dev_addr)) { + memcpy(adapter->netdev->dev_addr, mac, ETH_ALEN); + memcpy(adapter->netdev->perm_addr, mac, ETH_ALEN); } status = be_tx_qs_create(adapter); @@ -2763,7 +2807,8 @@ be_cmd_get_fw_ver(adapter, adapter->fw_ver, NULL); - be_vid_config(adapter, false, 0); + if (adapter->vlans_added) + be_vid_config(adapter); be_set_rx_mode(adapter->netdev); @@ -2773,8 +2818,6 @@ be_cmd_set_flow_control(adapter, adapter->tx_fc, adapter->rx_fc); - pcie_set_readrq(adapter->pdev, 4096); - if (be_physfn(adapter) && num_vfs) { if (adapter->dev_num_vfs) be_vf_setup(adapter); @@ -2788,8 +2831,6 @@ schedule_delayed_work(&adapter->work, msecs_to_jiffies(1000)); adapter->flags |= BE_FLAGS_WORKER_SCHEDULED; - - pci_write_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, 1); return 0; err: be_clear(adapter); @@ -3033,6 +3074,40 @@ return 0; } +static int lancer_wait_idle(struct be_adapter *adapter) +{ +#define SLIPORT_IDLE_TIMEOUT 30 + u32 reg_val; + int status = 0, i; + + for (i = 0; i < SLIPORT_IDLE_TIMEOUT; i++) { + reg_val = ioread32(adapter->db + PHYSDEV_CONTROL_OFFSET); + if ((reg_val & PHYSDEV_CONTROL_INP_MASK) == 0) + break; + + ssleep(1); + } + + if (i == SLIPORT_IDLE_TIMEOUT) + status = -1; + + return status; +} + +static int lancer_fw_reset(struct be_adapter *adapter) +{ + int status = 0; + + status = lancer_wait_idle(adapter); + if (status) + return status; + + iowrite32(PHYSDEV_CONTROL_FW_RESET_MASK, adapter->db + + PHYSDEV_CONTROL_OFFSET); + + return status; +} + static int lancer_fw_download(struct be_adapter *adapter, const struct firmware *fw) { @@ -3047,6 +3122,7 @@ u32 offset = 0; int status = 0; u8 add_status = 0; + u8 change_status; if (!IS_ALIGNED(fw->size, sizeof(u32))) { dev_err(&adapter->pdev->dev, @@ -3079,9 +3155,10 @@ memcpy(dest_image_ptr, data_ptr, chunk_size); status = lancer_cmd_write_object(adapter, &flash_cmd, - chunk_size, offset, LANCER_FW_DOWNLOAD_LOCATION, - &data_written, &add_status); - + chunk_size, offset, + LANCER_FW_DOWNLOAD_LOCATION, + &data_written, &change_status, + &add_status); if (status) break; @@ -3093,8 +3170,10 @@ if (!status) { /* Commit the FW written */ status = lancer_cmd_write_object(adapter, &flash_cmd, - 0, offset, LANCER_FW_DOWNLOAD_LOCATION, - &data_written, &add_status); + 0, offset, + LANCER_FW_DOWNLOAD_LOCATION, + &data_written, &change_status, + &add_status); } dma_free_coherent(&adapter->pdev->dev, flash_cmd.size, flash_cmd.va, @@ -3107,6 +3186,20 @@ goto lancer_fw_exit; } + if (change_status == LANCER_FW_RESET_NEEDED) { + status = lancer_fw_reset(adapter); + if (status) { + dev_err(&adapter->pdev->dev, + "Adapter busy for FW reset.\n" + "New FW will not be active.\n"); + goto lancer_fw_exit; + } + } else if (change_status != LANCER_NO_RESET_NEEDED) { + dev_err(&adapter->pdev->dev, + "System reboot required for new FW" + " to be active\n"); + } + dev_info(&adapter->pdev->dev, "Firmware flashed successfully\n"); lancer_fw_exit: return status; @@ -3342,6 +3435,7 @@ if (mem->va) dma_free_coherent(&adapter->pdev->dev, mem->size, mem->va, mem->dma); + kfree(adapter->pmac_id); } static int be_ctrl_init(struct be_adapter *adapter) @@ -3378,6 +3472,12 @@ } memset(rx_filter->va, 0, rx_filter->size); + /* primary mac needs 1 pmac entry */ + adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, + sizeof(*adapter->pmac_id), GFP_KERNEL); + if (!adapter->pmac_id) + return -ENOMEM; + mutex_init(&adapter->mbox_lock); spin_lock_init(&adapter->mcc_lock); spin_lock_init(&adapter->mcc_cq_lock); @@ -3435,10 +3535,15 @@ be_roce_dev_remove(adapter); + cancel_delayed_work_sync(&adapter->func_recovery_work); + unregister_netdev(adapter->netdev); be_clear(adapter); + /* tell fw we're done with firing cmds */ + be_cmd_fw_clean(adapter); + be_stats_cleanup(adapter); be_ctrl_cleanup(adapter); @@ -3479,7 +3584,7 @@ if (!status) { cfgs = (struct be_fat_conf_params *)(extfat_cmd.va + sizeof(struct be_cmd_resp_hdr)); - for (j = 0; j < cfgs->module[0].num_modes; j++) { + 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; } @@ -3509,12 +3614,6 @@ else adapter->max_pmac_cnt = BE_VF_UC_PMAC_COUNT; - /* primary mac needs 1 pmac entry */ - adapter->pmac_id = kcalloc(adapter->max_pmac_cnt + 1, - sizeof(u32), GFP_KERNEL); - if (!adapter->pmac_id) - return -ENOMEM; - status = be_cmd_get_cntl_attributes(adapter); if (status) return status; @@ -3530,6 +3629,9 @@ 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; @@ -3585,101 +3687,68 @@ return 0; } -static int lancer_wait_ready(struct be_adapter *adapter) +static int lancer_recover_func(struct be_adapter *adapter) { -#define SLIPORT_READY_TIMEOUT 30 - u32 sliport_status; - int status = 0, i; + int status; - for (i = 0; i < SLIPORT_READY_TIMEOUT; i++) { - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); - if (sliport_status & SLIPORT_STATUS_RDY_MASK) - break; + status = lancer_test_and_set_rdy_state(adapter); + if (status) + goto err; - msleep(1000); - } + if (netif_running(adapter->netdev)) + be_close(adapter->netdev); - if (i == SLIPORT_READY_TIMEOUT) - status = -1; + be_clear(adapter); - return status; -} + adapter->hw_error = false; + adapter->fw_timeout = false; -static int lancer_test_and_set_rdy_state(struct be_adapter *adapter) -{ - int status; - u32 sliport_status, err, reset_needed; - status = lancer_wait_ready(adapter); - if (!status) { - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); - err = sliport_status & SLIPORT_STATUS_ERR_MASK; - reset_needed = sliport_status & SLIPORT_STATUS_RN_MASK; - if (err && reset_needed) { - iowrite32(SLI_PORT_CONTROL_IP_MASK, - adapter->db + SLIPORT_CONTROL_OFFSET); + status = be_setup(adapter); + if (status) + goto err; - /* check adapter has corrected the error */ - status = lancer_wait_ready(adapter); - sliport_status = ioread32(adapter->db + - SLIPORT_STATUS_OFFSET); - sliport_status &= (SLIPORT_STATUS_ERR_MASK | - SLIPORT_STATUS_RN_MASK); - if (status || sliport_status) - status = -1; - } else if (err || reset_needed) { - status = -1; - } + if (netif_running(adapter->netdev)) { + status = be_open(adapter->netdev); + if (status) + goto err; } + + dev_err(&adapter->pdev->dev, + "Adapter SLIPORT recovery succeeded\n"); + return 0; +err: + dev_err(&adapter->pdev->dev, + "Adapter SLIPORT recovery failed\n"); + return status; } -static void lancer_test_and_recover_fn_err(struct be_adapter *adapter) +static void be_func_recovery_task(struct work_struct *work) { + struct be_adapter *adapter = + container_of(work, struct be_adapter, func_recovery_work.work); int status; - u32 sliport_status; - if (adapter->eeh_err || adapter->ue_detected) - return; + be_detect_error(adapter); - sliport_status = ioread32(adapter->db + SLIPORT_STATUS_OFFSET); + if (adapter->hw_error && lancer_chip(adapter)) { - if (sliport_status & SLIPORT_STATUS_ERR_MASK) { - dev_err(&adapter->pdev->dev, - "Adapter in error state." - "Trying to recover.\n"); - - status = lancer_test_and_set_rdy_state(adapter); - if (status) - goto err; + if (adapter->eeh_error) + goto out; + rtnl_lock(); netif_device_detach(adapter->netdev); + rtnl_unlock(); - if (netif_running(adapter->netdev)) - be_close(adapter->netdev); - - be_clear(adapter); - - adapter->fw_timeout = false; - - status = be_setup(adapter); - if (status) - goto err; - - if (netif_running(adapter->netdev)) { - status = be_open(adapter->netdev); - if (status) - goto err; - } - - netif_device_attach(adapter->netdev); + status = lancer_recover_func(adapter); - dev_err(&adapter->pdev->dev, - "Adapter error recovery succeeded\n"); + if (!status) + netif_device_attach(adapter->netdev); } - return; -err: - dev_err(&adapter->pdev->dev, - "Adapter error recovery failed\n"); + +out: + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); } static void be_worker(struct work_struct *work) @@ -3690,15 +3759,12 @@ struct be_eq_obj *eqo; int i; - if (lancer_chip(adapter)) - lancer_test_and_recover_fn_err(adapter); - - be_detect_dump_ue(adapter); - /* when interrupts are not yet enabled, just reap any pending * mcc completions */ if (!netif_running(adapter->netdev)) { + local_bh_disable(); be_process_mcc(adapter); + local_bh_enable(); goto reschedule; } @@ -3710,6 +3776,9 @@ be_cmd_get_stats(adapter, &adapter->stats_cmd); } + if (MODULO(adapter->work_counter, adapter->be_get_temp_freq) == 0) + be_cmd_get_die_temperature(adapter); + for_all_rx_queues(adapter, rxo, i) { if (rxo->rx_post_starved) { rxo->rx_post_starved = false; @@ -3727,10 +3796,7 @@ static bool be_reset_required(struct be_adapter *adapter) { - u32 reg; - - pci_read_config_dword(adapter->pdev, PCICFG_CUST_SCRATCHPAD_CSR, ®); - return reg; + return be_find_vfs(adapter, ENABLED) > 0 ? false : true; } static int __devinit be_probe(struct pci_dev *pdev, @@ -3749,7 +3815,7 @@ goto disable_dev; pci_set_master(pdev); - netdev = alloc_etherdev_mq(sizeof(struct be_adapter), MAX_TX_QS); + netdev = alloc_etherdev_mqs(sizeof(*adapter), MAX_TX_QS, MAX_RX_QS); if (netdev == NULL) { status = -ENOMEM; goto rel_reg; @@ -3780,22 +3846,9 @@ if (status) goto free_netdev; - if (lancer_chip(adapter)) { - status = lancer_wait_ready(adapter); - if (!status) { - iowrite32(SLI_PORT_CONTROL_IP_MASK, - adapter->db + SLIPORT_CONTROL_OFFSET); - status = lancer_test_and_set_rdy_state(adapter); - } - if (status) { - dev_err(&pdev->dev, "Adapter in non recoverable error\n"); - goto ctrl_clean; - } - } - /* sync up with fw's ready state */ if (be_physfn(adapter)) { - status = be_cmd_POST(adapter); + status = be_fw_wait_ready(adapter); if (status) goto ctrl_clean; } @@ -3826,11 +3879,12 @@ goto stats_clean; INIT_DELAYED_WORK(&adapter->work, be_worker); + INIT_DELAYED_WORK(&adapter->func_recovery_work, be_func_recovery_task); adapter->rx_fc = adapter->tx_fc = true; status = be_setup(adapter); if (status) - goto msix_disable; + goto stats_clean; be_netdev_init(netdev); status = register_netdev(netdev); @@ -3839,6 +3893,8 @@ be_roce_dev_add(adapter); + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); dev_info(&pdev->dev, "%s: %s port %d\n", netdev->name, nic_name(pdev), adapter->port_num); @@ -3846,8 +3902,6 @@ unsetup: be_clear(adapter); -msix_disable: - be_msix_disable(adapter); stats_clean: be_stats_cleanup(adapter); ctrl_clean: @@ -3872,6 +3926,8 @@ if (adapter->wol) be_setup_wol(adapter, true); + cancel_delayed_work_sync(&adapter->func_recovery_work); + netif_device_detach(netdev); if (netif_running(netdev)) { rtnl_lock(); @@ -3912,6 +3968,9 @@ be_open(netdev); rtnl_unlock(); } + + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); netif_device_attach(netdev); if (adapter->wol) @@ -3931,6 +3990,7 @@ return; cancel_delayed_work_sync(&adapter->work); + cancel_delayed_work_sync(&adapter->func_recovery_work); netif_device_detach(adapter->netdev); @@ -3950,9 +4010,13 @@ dev_err(&adapter->pdev->dev, "EEH error detected\n"); - adapter->eeh_err = true; + adapter->eeh_error = true; + cancel_delayed_work_sync(&adapter->func_recovery_work); + + rtnl_lock(); netif_device_detach(netdev); + rtnl_unlock(); if (netif_running(netdev)) { rtnl_lock(); @@ -3980,9 +4044,7 @@ int status; dev_info(&adapter->pdev->dev, "EEH reset\n"); - adapter->eeh_err = false; - adapter->ue_detected = false; - adapter->fw_timeout = false; + be_clear_all_error(adapter); status = pci_enable_device(pdev); if (status) @@ -3993,7 +4055,7 @@ pci_restore_state(pdev); /* Check if card is ok and fw is ready */ - status = be_cmd_POST(adapter); + status = be_fw_wait_ready(adapter); if (status) return PCI_ERS_RESULT_DISCONNECT; @@ -4015,6 +4077,10 @@ if (status) goto err; + status = be_cmd_reset_function(adapter); + if (status) + goto err; + status = be_setup(adapter); if (status) goto err; @@ -4024,6 +4090,9 @@ if (status) goto err; } + + schedule_delayed_work(&adapter->func_recovery_work, + msecs_to_jiffies(1000)); netif_device_attach(netdev); return; err: --- linux-3.5.0.orig/drivers/net/ethernet/marvell/sky2.c +++ linux-3.5.0/drivers/net/ethernet/marvell/sky2.c @@ -3079,8 +3079,10 @@ /* Reading this mask interrupts as side effect */ status = sky2_read32(hw, B0_Y2_SP_ISRC2); - if (status == 0 || status == ~0) + if (status == 0 || status == ~0) { + sky2_write32(hw, B0_Y2_SP_ICR, 2); return IRQ_NONE; + } prefetch(&hw->st_le[hw->st_idx]); --- linux-3.5.0.orig/drivers/net/ethernet/marvell/skge.c +++ linux-3.5.0/drivers/net/ethernet/marvell/skge.c @@ -4153,6 +4153,13 @@ DMI_MATCH(DMI_BOARD_NAME, "nForce"), }, }, + { + .ident = "ASUS P5NSLI", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "P5NSLI") + }, + }, {} }; --- linux-3.5.0.orig/drivers/net/ethernet/marvell/mv643xx_eth.c +++ linux-3.5.0/drivers/net/ethernet/marvell/mv643xx_eth.c @@ -412,7 +412,6 @@ u8 work_rx_refill; int skb_size; - struct sk_buff_head rx_recycle; /* * RX state. @@ -673,9 +672,7 @@ struct rx_desc *rx_desc; int size; - skb = __skb_dequeue(&mp->rx_recycle); - if (skb == NULL) - skb = netdev_alloc_skb(mp->dev, mp->skb_size); + skb = netdev_alloc_skb(mp->dev, mp->skb_size); if (skb == NULL) { mp->oom = 1; @@ -989,14 +986,7 @@ desc->byte_cnt, DMA_TO_DEVICE); } - if (skb != NULL) { - if (skb_queue_len(&mp->rx_recycle) < - mp->rx_ring_size && - skb_recycle_check(skb, mp->skb_size)) - __skb_queue_head(&mp->rx_recycle, skb); - else - dev_kfree_skb(skb); - } + dev_kfree_skb(skb); } __netif_tx_unlock(nq); @@ -2349,8 +2339,6 @@ napi_enable(&mp->napi); - skb_queue_head_init(&mp->rx_recycle); - mp->int_mask = INT_EXT; for (i = 0; i < mp->rxq_count; i++) { @@ -2445,8 +2433,6 @@ mib_counters_update(mp); del_timer_sync(&mp->mib_counters_timer); - skb_queue_purge(&mp->rx_recycle); - for (i = 0; i < mp->rxq_count; i++) rxq_deinit(mp->rxq + i); for (i = 0; i < mp->txq_count; i++) --- linux-3.5.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c +++ linux-3.5.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c @@ -144,7 +144,7 @@ buffrag->length, PCI_DMA_TODEVICE); buffrag->dma = 0ULL; } - for (j = 0; j < cmd_buf->frag_count; j++) { + for (j = 1; j < cmd_buf->frag_count; j++) { buffrag++; if (buffrag->dma) { pci_unmap_page(adapter->pdev, buffrag->dma, --- linux-3.5.0.orig/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +++ linux-3.5.0/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c @@ -1378,6 +1378,10 @@ struct pci_dev *root = pdev->bus->self; u32 aer_pos; + /* root bus? */ + if (!root) + return; + if (adapter->ahw.board_type != NETXEN_BRDTYPE_P3_4_GB_MM && adapter->ahw.board_type != NETXEN_BRDTYPE_P3_10G_TP) return; @@ -1959,10 +1963,12 @@ while (--i >= 0) { nf = &pbuf->frag_array[i+1]; pci_unmap_page(pdev, nf->dma, nf->length, PCI_DMA_TODEVICE); + nf->dma = 0ULL; } nf = &pbuf->frag_array[0]; pci_unmap_single(pdev, nf->dma, skb_headlen(skb), PCI_DMA_TODEVICE); + nf->dma = 0ULL; out_err: return -ENOMEM; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar_ptp.c +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar_ptp.c @@ -515,7 +515,7 @@ err = PTR_ERR(etsects->clock); goto no_clock; } - gfar_phc_clock = ptp_clock_index(etsects->clock); + gfar_phc_index = ptp_clock_index(etsects->clock); dev_set_drvdata(&dev->dev, etsects); @@ -539,7 +539,7 @@ gfar_write(&etsects->regs->tmr_temask, 0); gfar_write(&etsects->regs->tmr_ctrl, 0); - gfar_phc_clock = -1; + gfar_phc_index = -1; ptp_clock_unregister(etsects->clock); iounmap(etsects->regs); release_resource(etsects->rsrc); --- linux-3.5.0.orig/drivers/net/ethernet/freescale/ucc_geth.h +++ linux-3.5.0/drivers/net/ethernet/freescale/ucc_geth.h @@ -1214,8 +1214,6 @@ /* index of the first skb which hasn't been transmitted yet. */ u16 skb_dirtytx[NUM_TX_QUEUES]; - struct sk_buff_head rx_recycle; - struct ugeth_mii_info *mii_info; struct phy_device *phydev; phy_interface_t phy_interface; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar.h +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar.h @@ -1072,8 +1072,6 @@ u32 cur_filer_idx; - struct sk_buff_head rx_recycle; - /* RX queue filer rule set*/ struct ethtool_rx_list rx_list; struct mutex rx_queue_access; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar.c +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar.c @@ -1037,7 +1037,7 @@ if (priv->device_flags & FSL_GIANFAR_DEV_HAS_VLAN) { dev->hw_features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; - dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX; + dev->features |= NETIF_F_HW_VLAN_RX; } if (priv->device_flags & FSL_GIANFAR_DEV_HAS_EXTENDED_HASH) { @@ -1746,7 +1746,6 @@ sizeof(struct rxbd8) * priv->total_rx_ring_size, priv->tx_queue[0]->tx_bd_base, priv->tx_queue[0]->tx_bd_dma_base); - skb_queue_purge(&priv->rx_recycle); } void gfar_start(struct net_device *dev) @@ -1921,8 +1920,6 @@ enable_napi(priv); - skb_queue_head_init(&priv->rx_recycle); - /* Initialize a bunch of registers */ init_registers(dev); @@ -2513,17 +2510,7 @@ bytes_sent += skb->len; - /* - * If there's room in the queue (limit it to rx_buffer_size) - * we add this skb back into the pool, if it's the right size - */ - if (skb_queue_len(&priv->rx_recycle) < rx_queue->rx_ring_size && - skb_recycle_check(skb, priv->rx_buffer_size + - RXBUF_ALIGNMENT)) { - gfar_align_skb(skb); - skb_queue_head(&priv->rx_recycle, skb); - } else - dev_kfree_skb_any(skb); + dev_kfree_skb_any(skb); tx_queue->tx_skbuff[skb_dirtytx] = NULL; @@ -2590,7 +2577,7 @@ static struct sk_buff * gfar_alloc_skb(struct net_device *dev) { struct gfar_private *priv = netdev_priv(dev); - struct sk_buff *skb = NULL; + struct sk_buff *skb; skb = netdev_alloc_skb(dev, priv->rx_buffer_size + RXBUF_ALIGNMENT); if (!skb) @@ -2603,14 +2590,7 @@ struct sk_buff * gfar_new_skb(struct net_device *dev) { - struct gfar_private *priv = netdev_priv(dev); - struct sk_buff *skb = NULL; - - skb = skb_dequeue(&priv->rx_recycle); - if (!skb) - skb = gfar_alloc_skb(dev); - - return skb; + return gfar_alloc_skb(dev); } static inline void count_errors(unsigned short status, struct net_device *dev) @@ -2768,7 +2748,7 @@ if (unlikely(!newskb)) newskb = skb; else if (skb) - skb_queue_head(&priv->rx_recycle, skb); + dev_kfree_skb(skb); } else { /* Increment the number of packets */ rx_queue->stats.rx_packets++; --- linux-3.5.0.orig/drivers/net/ethernet/freescale/gianfar_ethtool.c +++ linux-3.5.0/drivers/net/ethernet/freescale/gianfar_ethtool.c @@ -1741,6 +1741,7 @@ } int gfar_phc_index = -1; +EXPORT_SYMBOL(gfar_phc_index); static int gfar_get_ts_info(struct net_device *dev, struct ethtool_ts_info *info) --- linux-3.5.0.orig/drivers/net/ethernet/freescale/ucc_geth.c +++ linux-3.5.0/drivers/net/ethernet/freescale/ucc_geth.c @@ -210,14 +210,12 @@ static struct sk_buff *get_new_skb(struct ucc_geth_private *ugeth, u8 __iomem *bd) { - struct sk_buff *skb = NULL; + struct sk_buff *skb; - skb = __skb_dequeue(&ugeth->rx_recycle); + skb = netdev_alloc_skb(ugeth->ndev, + ugeth->ug_info->uf_info.max_rx_buf_length + + UCC_GETH_RX_DATA_BUF_ALIGNMENT); if (!skb) - skb = netdev_alloc_skb(ugeth->ndev, - ugeth->ug_info->uf_info.max_rx_buf_length + - UCC_GETH_RX_DATA_BUF_ALIGNMENT); - if (skb == NULL) return NULL; /* We need the data buffer to be aligned properly. We will reserve @@ -2021,8 +2019,6 @@ iounmap(ugeth->ug_regs); ugeth->ug_regs = NULL; } - - skb_queue_purge(&ugeth->rx_recycle); } static void ucc_geth_set_multi(struct net_device *dev) @@ -2231,8 +2227,6 @@ return -ENOMEM; } - skb_queue_head_init(&ugeth->rx_recycle); - return 0; } @@ -3275,12 +3269,7 @@ if (netif_msg_rx_err(ugeth)) ugeth_err("%s, %d: ERROR!!! skb - 0x%08x", __func__, __LINE__, (u32) skb); - if (skb) { - skb->data = skb->head + NET_SKB_PAD; - skb->len = 0; - skb_reset_tail_pointer(skb); - __skb_queue_head(&ugeth->rx_recycle, skb); - } + dev_kfree_skb(skb); ugeth->rx_skbuff[rxQ][ugeth->skb_currx[rxQ]] = NULL; dev->stats.rx_dropped++; @@ -3350,13 +3339,7 @@ dev->stats.tx_packets++; - if (skb_queue_len(&ugeth->rx_recycle) < RX_BD_RING_LEN && - skb_recycle_check(skb, - ugeth->ug_info->uf_info.max_rx_buf_length + - UCC_GETH_RX_DATA_BUF_ALIGNMENT)) - __skb_queue_head(&ugeth->rx_recycle, skb); - else - dev_kfree_skb(skb); + dev_kfree_skb(skb); ugeth->tx_skbuff[txQ][ugeth->skb_dirtytx[txQ]] = NULL; ugeth->skb_dirtytx[txQ] = --- linux-3.5.0.orig/drivers/net/ethernet/ti/davinci_cpdma.c +++ linux-3.5.0/drivers/net/ethernet/ti/davinci_cpdma.c @@ -862,6 +862,7 @@ next_dma = desc_read(desc, hw_next); chan->head = desc_from_phys(pool, next_dma); + chan->count--; chan->stats.teardown_dequeue++; /* issue callback without locks held */ --- linux-3.5.0.orig/drivers/net/irda/sir_dev.c +++ linux-3.5.0/drivers/net/irda/sir_dev.c @@ -222,7 +222,7 @@ break; case SIRDEV_STATE_DONGLE_SPEED: - if (dev->dongle_drv->reset) { + if (dev->dongle_drv->set_speed) { ret = dev->dongle_drv->set_speed(dev, fsm->param); if (ret < 0) { fsm->result = ret; --- linux-3.5.0.orig/drivers/net/bonding/bond_sysfs.c +++ linux-3.5.0/drivers/net/bonding/bond_sysfs.c @@ -1582,6 +1582,7 @@ goto out; } + read_lock(&bond->lock); bond_for_each_slave(bond, slave, i) { if (!bond_is_active_slave(slave)) { if (new_value) @@ -1590,6 +1591,7 @@ slave->inactive = 1; } } + read_unlock(&bond->lock); out: return ret; } --- linux-3.5.0.orig/drivers/net/bonding/bond_main.c +++ linux-3.5.0/drivers/net/bonding/bond_main.c @@ -1383,6 +1383,8 @@ struct net_device *bond_dev = bond->dev; netdev_features_t vlan_features = BOND_VLAN_FEATURES; unsigned short max_hard_header_len = ETH_HLEN; + unsigned int gso_max_size = GSO_MAX_SIZE; + u16 gso_max_segs = GSO_MAX_SEGS; int i; read_lock(&bond->lock); @@ -1396,11 +1398,16 @@ if (slave->dev->hard_header_len > max_hard_header_len) max_hard_header_len = slave->dev->hard_header_len; + + gso_max_size = min(gso_max_size, slave->dev->gso_max_size); + gso_max_segs = min(gso_max_segs, slave->dev->gso_max_segs); } done: bond_dev->vlan_features = vlan_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); read_unlock(&bond->lock); --- linux-3.5.0.orig/drivers/net/wan/ixp4xx_hss.c +++ linux-3.5.0/drivers/net/wan/ixp4xx_hss.c @@ -10,6 +10,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include #include #include #include --- linux-3.5.0.orig/drivers/target/target_core_file.h +++ linux-3.5.0/drivers/target/target_core_file.h @@ -14,6 +14,7 @@ #define FBDF_HAS_PATH 0x01 #define FBDF_HAS_SIZE 0x02 +#define FDBD_HAS_BUFFERED_IO_WCE 0x04 struct fd_dev { u32 fbd_flags; --- linux-3.5.0.orig/drivers/target/target_core_cdb.c +++ linux-3.5.0/drivers/target/target_core_cdb.c @@ -605,29 +605,12 @@ { struct se_device *dev = cmd->se_dev; struct se_portal_group *tpg = cmd->se_lun->lun_sep->sep_tpg; - unsigned char *buf, *map_buf; + unsigned char *rbuf; unsigned char *cdb = cmd->t_task_cdb; + unsigned char buf[SE_INQUIRY_BUF]; int p, ret; - map_buf = transport_kmap_data_sg(cmd); - /* - * If SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC is not set, then we - * know we actually allocated a full page. Otherwise, if the - * data buffer is too small, allocate a temporary buffer so we - * don't have to worry about overruns in all our INQUIRY - * emulation handling. - */ - if (cmd->data_length < SE_INQUIRY_BUF && - (cmd->se_cmd_flags & SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC)) { - buf = kzalloc(SE_INQUIRY_BUF, GFP_KERNEL); - if (!buf) { - transport_kunmap_data_sg(cmd); - cmd->scsi_sense_reason = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE; - return -ENOMEM; - } - } else { - buf = map_buf; - } + memset(buf, 0, SE_INQUIRY_BUF); if (dev == tpg->tpg_virt_lun0.lun_se_dev) buf[0] = 0x3f; /* Not connected */ @@ -660,11 +643,11 @@ ret = -EINVAL; out: - if (buf != map_buf) { - memcpy(map_buf, buf, cmd->data_length); - kfree(buf); + rbuf = transport_kmap_data_sg(cmd); + if (rbuf) { + memcpy(rbuf, buf, min_t(u32, sizeof(buf), cmd->data_length)); + transport_kunmap_data_sg(cmd); } - transport_kunmap_data_sg(cmd); if (!ret) target_complete_cmd(cmd, GOOD); @@ -875,7 +858,7 @@ unsigned char *rbuf; int type = dev->transport->get_device_type(dev); int ten = (cmd->t_task_cdb[0] == MODE_SENSE_10); - int offset = ten ? 8 : 4; + u32 offset = ten ? 8 : 4; int length = 0; unsigned char buf[SE_MODE_PAGE_BUF]; @@ -908,6 +891,7 @@ offset -= 2; buf[0] = (offset >> 8) & 0xff; buf[1] = offset & 0xff; + offset += 2; if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || (cmd->se_deve && @@ -917,13 +901,10 @@ if ((dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0) && (dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0)) target_modesense_dpofua(&buf[3], type); - - if ((offset + 2) > cmd->data_length) - offset = cmd->data_length; - } else { offset -= 1; buf[0] = offset & 0xff; + offset += 1; if ((cmd->se_lun->lun_access & TRANSPORT_LUNFLAGS_READ_ONLY) || (cmd->se_deve && @@ -933,14 +914,13 @@ if ((dev->se_sub_dev->se_dev_attrib.emulate_write_cache > 0) && (dev->se_sub_dev->se_dev_attrib.emulate_fua_write > 0)) target_modesense_dpofua(&buf[2], type); - - if ((offset + 1) > cmd->data_length) - offset = cmd->data_length; } rbuf = transport_kmap_data_sg(cmd); - memcpy(rbuf, buf, offset); - transport_kunmap_data_sg(cmd); + if (rbuf) { + memcpy(rbuf, buf, min(offset, cmd->data_length)); + transport_kunmap_data_sg(cmd); + } target_complete_cmd(cmd, GOOD); return 0; @@ -1013,11 +993,11 @@ { struct se_device *dev = cmd->se_dev; unsigned char *buf, *ptr = NULL; - unsigned char *cdb = &cmd->t_task_cdb[0]; sector_t lba; - unsigned int size = cmd->data_length, range; - int ret = 0, offset; - unsigned short dl, bd_dl; + int size = cmd->data_length; + u32 range; + int ret = 0; + int dl, bd_dl; if (!dev->transport->do_discard) { pr_err("UNMAP emulation not supported for: %s\n", @@ -1026,24 +1006,41 @@ return -ENOSYS; } - /* First UNMAP block descriptor starts at 8 byte offset */ - offset = 8; - size -= 8; - dl = get_unaligned_be16(&cdb[0]); - bd_dl = get_unaligned_be16(&cdb[2]); - buf = transport_kmap_data_sg(cmd); - ptr = &buf[offset]; - pr_debug("UNMAP: Sub: %s Using dl: %hu bd_dl: %hu size: %hu" + dl = get_unaligned_be16(&buf[0]); + bd_dl = get_unaligned_be16(&buf[2]); + + size = min(size - 8, bd_dl); + if (size / 16 > dev->se_sub_dev->se_dev_attrib.max_unmap_block_desc_count) { + cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST; + ret = -EINVAL; + goto err; + } + + /* First UNMAP block descriptor starts at 8 byte offset */ + ptr = &buf[8]; + pr_debug("UNMAP: Sub: %s Using dl: %u bd_dl: %u size: %u" " ptr: %p\n", dev->transport->name, dl, bd_dl, size, ptr); - while (size) { + while (size >= 16) { lba = get_unaligned_be64(&ptr[0]); range = get_unaligned_be32(&ptr[8]); pr_debug("UNMAP: Using lba: %llu and range: %u\n", (unsigned long long)lba, range); + if (range > dev->se_sub_dev->se_dev_attrib.max_unmap_lba_count) { + cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST; + ret = -EINVAL; + goto err; + } + + if (lba + range > dev->transport->get_blocks(dev) + 1) { + cmd->scsi_sense_reason = TCM_ADDRESS_OUT_OF_RANGE; + ret = -EINVAL; + goto err; + } + ret = dev->transport->do_discard(dev, lba, range); if (ret < 0) { pr_err("blkdev_issue_discard() failed: %d\n", --- linux-3.5.0.orig/drivers/target/target_core_file.c +++ linux-3.5.0/drivers/target/target_core_file.c @@ -138,6 +138,19 @@ * of pure timestamp updates. */ flags = O_RDWR | O_CREAT | O_LARGEFILE | O_DSYNC; + /* + * Optionally allow fd_buffered_io=1 to be enabled for people + * who want use the fs buffer cache as an WriteCache mechanism. + * + * This means that in event of a hard failure, there is a risk + * of silent data-loss if the SCSI client has *not* performed a + * forced unit access (FUA) write, or issued SYNCHRONIZE_CACHE + * to write-out the entire device cache. + */ + if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) { + pr_debug("FILEIO: Disabling O_DSYNC, using buffered FILEIO\n"); + flags &= ~O_DSYNC; + } file = filp_open(dev_p, flags, 0600); if (IS_ERR(file)) { @@ -205,6 +218,12 @@ if (!dev) goto fail; + if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) { + pr_debug("FILEIO: Forcing setting of emulate_write_cache=1" + " with FDBD_HAS_BUFFERED_IO_WCE\n"); + dev->se_sub_dev->se_dev_attrib.emulate_write_cache = 1; + } + fd_dev->fd_dev_id = fd_host->fd_host_dev_id_count++; fd_dev->fd_queue_depth = dev->queue_depth; @@ -260,7 +279,7 @@ for_each_sg(sgl, sg, sgl_nents, i) { iov[i].iov_len = sg->length; - iov[i].iov_base = sg_virt(sg); + iov[i].iov_base = kmap(sg_page(sg)) + sg->offset; } old_fs = get_fs(); @@ -268,6 +287,8 @@ ret = vfs_readv(fd, &iov[0], sgl_nents, &pos); set_fs(old_fs); + for_each_sg(sgl, sg, sgl_nents, i) + kunmap(sg_page(sg)); kfree(iov); /* * Return zeros and GOOD status even if the READ did not return @@ -313,7 +334,7 @@ for_each_sg(sgl, sg, sgl_nents, i) { iov[i].iov_len = sg->length; - iov[i].iov_base = sg_virt(sg); + iov[i].iov_base = kmap(sg_page(sg)) + sg->offset; } old_fs = get_fs(); @@ -321,6 +342,9 @@ ret = vfs_writev(fd, &iov[0], sgl_nents, &pos); set_fs(old_fs); + for_each_sg(sgl, sg, sgl_nents, i) + kunmap(sg_page(sg)); + kfree(iov); if (ret < 0 || ret != cmd->data_length) { @@ -422,6 +446,7 @@ static match_table_t tokens = { {Opt_fd_dev_name, "fd_dev_name=%s"}, {Opt_fd_dev_size, "fd_dev_size=%s"}, + {Opt_fd_buffered_io, "fd_buffered_io=%d"}, {Opt_err, NULL} }; @@ -433,7 +458,7 @@ struct fd_dev *fd_dev = se_dev->se_dev_su_ptr; char *orig, *ptr, *arg_p, *opts; substring_t args[MAX_OPT_ARGS]; - int ret = 0, token; + int ret = 0, arg, token; opts = kstrdup(page, GFP_KERNEL); if (!opts) @@ -477,6 +502,19 @@ " bytes\n", fd_dev->fd_dev_size); fd_dev->fbd_flags |= FBDF_HAS_SIZE; break; + case Opt_fd_buffered_io: + match_int(args, &arg); + if (arg != 1) { + pr_err("bogus fd_buffered_io=%d value\n", arg); + ret = -EINVAL; + goto out; + } + + pr_debug("FILEIO: Using buffered I/O" + " operations for struct fd_dev\n"); + + fd_dev->fbd_flags |= FDBD_HAS_BUFFERED_IO_WCE; + break; default: break; } @@ -508,8 +546,10 @@ ssize_t bl = 0; bl = sprintf(b + bl, "TCM FILEIO ID: %u", fd_dev->fd_dev_id); - bl += sprintf(b + bl, " File: %s Size: %llu Mode: O_DSYNC\n", - fd_dev->fd_dev_name, fd_dev->fd_dev_size); + bl += sprintf(b + bl, " File: %s Size: %llu Mode: %s\n", + fd_dev->fd_dev_name, fd_dev->fd_dev_size, + (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) ? + "Buffered-WCE" : "O_DSYNC"); return bl; } --- linux-3.5.0.orig/drivers/target/target_core_tmr.c +++ linux-3.5.0/drivers/target/target_core_tmr.c @@ -140,15 +140,15 @@ printk("ABORT_TASK: Found referenced %s task_tag: %u\n", se_cmd->se_tfo->get_fabric_name(), ref_tag); - spin_lock_irq(&se_cmd->t_state_lock); + 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_irq(&se_cmd->t_state_lock); + spin_unlock(&se_cmd->t_state_lock); spin_unlock_irqrestore(&se_sess->sess_cmd_lock, flags); goto out; } se_cmd->transport_state |= CMD_T_ABORTED; - spin_unlock_irq(&se_cmd->t_state_lock); + spin_unlock(&se_cmd->t_state_lock); list_del_init(&se_cmd->se_cmd_list); kref_get(&se_cmd->cmd_kref); --- linux-3.5.0.orig/drivers/target/target_core_configfs.c +++ linux-3.5.0/drivers/target/target_core_configfs.c @@ -3132,6 +3132,7 @@ GFP_KERNEL); if (!target_cg->default_groups) { pr_err("Unable to allocate target_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3147,6 +3148,7 @@ GFP_KERNEL); if (!hba_cg->default_groups) { pr_err("Unable to allocate hba_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } config_group_init_type_name(&alua_group, @@ -3162,6 +3164,7 @@ GFP_KERNEL); if (!alua_cg->default_groups) { pr_err("Unable to allocate alua_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3173,14 +3176,17 @@ * Add core/alua/lu_gps/default_lu_gp */ lu_gp = core_alua_allocate_lu_gp("default_lu_gp", 1); - if (IS_ERR(lu_gp)) + if (IS_ERR(lu_gp)) { + ret = -ENOMEM; goto out_global; + } lu_gp_cg = &alua_lu_gps_group; lu_gp_cg->default_groups = kzalloc(sizeof(struct config_group) * 2, GFP_KERNEL); if (!lu_gp_cg->default_groups) { pr_err("Unable to allocate lu_gp_cg->default_groups\n"); + ret = -ENOMEM; goto out_global; } @@ -3208,7 +3214,8 @@ if (ret < 0) goto out; - if (core_dev_setup_virtual_lun0() < 0) + ret = core_dev_setup_virtual_lun0(); + if (ret < 0) goto out; return 0; --- linux-3.5.0.orig/drivers/target/target_core_device.c +++ linux-3.5.0/drivers/target/target_core_device.c @@ -824,20 +824,20 @@ u32 se_dev_align_max_sectors(u32 max_sectors, u32 block_size) { - u32 tmp, aligned_max_sectors; + u32 aligned_max_sectors; + u32 alignment; /* * Limit max_sectors to a PAGE_SIZE aligned value for modern * transport_allocate_data_tasks() operation. */ - tmp = rounddown((max_sectors * block_size), PAGE_SIZE); - aligned_max_sectors = (tmp / block_size); - if (max_sectors != aligned_max_sectors) { - printk(KERN_INFO "Rounding down aligned max_sectors from %u" - " to %u\n", max_sectors, aligned_max_sectors); - return aligned_max_sectors; - } + alignment = max(1ul, PAGE_SIZE / block_size); + aligned_max_sectors = rounddown(max_sectors, alignment); + + if (max_sectors != aligned_max_sectors) + pr_info("Rounding down aligned max_sectors from %u to %u\n", + max_sectors, aligned_max_sectors); - return max_sectors; + return aligned_max_sectors; } void se_dev_set_default_attribs( @@ -1167,6 +1167,8 @@ int se_dev_set_fabric_max_sectors(struct se_device *dev, u32 fabric_max_sectors) { + int block_size = dev->se_sub_dev->se_dev_attrib.block_size; + if (atomic_read(&dev->dev_export_obj.obj_access_count)) { pr_err("dev[%p]: Unable to change SE Device" " fabric_max_sectors while dev_export_obj: %d count exists\n", @@ -1204,8 +1206,12 @@ /* * Align max_sectors down to PAGE_SIZE to follow transport_allocate_data_tasks() */ + if (!block_size) { + block_size = 512; + pr_warn("Defaulting to 512 for zero block_size\n"); + } fabric_max_sectors = se_dev_align_max_sectors(fabric_max_sectors, - dev->se_sub_dev->se_dev_attrib.block_size); + block_size); dev->se_sub_dev->se_dev_attrib.fabric_max_sectors = fabric_max_sectors; pr_debug("dev[%p]: SE Device max_sectors changed to %u\n", @@ -1409,24 +1415,18 @@ struct se_lun_acl *core_dev_init_initiator_node_lun_acl( struct se_portal_group *tpg, + struct se_node_acl *nacl, u32 mapped_lun, - char *initiatorname, int *ret) { struct se_lun_acl *lacl; - struct se_node_acl *nacl; - if (strlen(initiatorname) >= TRANSPORT_IQN_LEN) { + if (strlen(nacl->initiatorname) >= TRANSPORT_IQN_LEN) { pr_err("%s InitiatorName exceeds maximum size.\n", tpg->se_tpg_tfo->get_fabric_name()); *ret = -EOVERFLOW; return NULL; } - nacl = core_tpg_get_initiator_node_acl(tpg, initiatorname); - if (!nacl) { - *ret = -EINVAL; - return NULL; - } lacl = kzalloc(sizeof(struct se_lun_acl), GFP_KERNEL); if (!lacl) { pr_err("Unable to allocate memory for struct se_lun_acl.\n"); @@ -1437,7 +1437,8 @@ INIT_LIST_HEAD(&lacl->lacl_list); lacl->mapped_lun = mapped_lun; lacl->se_lun_nacl = nacl; - snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname); + snprintf(lacl->initiatorname, TRANSPORT_IQN_LEN, "%s", + nacl->initiatorname); return lacl; } --- linux-3.5.0.orig/drivers/target/target_core_tpg.c +++ linux-3.5.0/drivers/target/target_core_tpg.c @@ -114,16 +114,10 @@ struct se_node_acl *acl; spin_lock_irq(&tpg->acl_node_lock); - list_for_each_entry(acl, &tpg->acl_node_list, acl_list) { - if (!strcmp(acl->initiatorname, initiatorname) && - !acl->dynamic_node_acl) { - spin_unlock_irq(&tpg->acl_node_lock); - return acl; - } - } + acl = __core_tpg_get_initiator_node_acl(tpg, initiatorname); spin_unlock_irq(&tpg->acl_node_lock); - return NULL; + return acl; } /* core_tpg_add_node_to_devs(): --- linux-3.5.0.orig/drivers/target/target_core_transport.c +++ linux-3.5.0/drivers/target/target_core_transport.c @@ -586,9 +586,6 @@ void transport_cmd_finish_abort(struct se_cmd *cmd, int remove) { - if (!(cmd->se_cmd_flags & SCF_SCSI_TMR_CDB)) - transport_lun_remove_cmd(cmd); - if (transport_cmd_check_stop_to_fabric(cmd)) return; if (remove) { @@ -1617,7 +1614,8 @@ se_cmd->se_tmr_req->response = TMR_LUN_DOES_NOT_EXIST; se_cmd->se_tfo->queue_tm_rsp(se_cmd); - transport_generic_free_cmd(se_cmd, 0); + + transport_cmd_check_stop_to_fabric(se_cmd); } /** @@ -1797,6 +1795,7 @@ case TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE: case TCM_UNKNOWN_MODE_PAGE: case TCM_WRITE_PROTECTED: + case TCM_ADDRESS_OUT_OF_RANGE: case TCM_CHECK_CONDITION_ABORT_CMD: case TCM_CHECK_CONDITION_UNIT_ATTENTION: case TCM_CHECK_CONDITION_NOT_READY: @@ -2260,7 +2259,7 @@ /* * Used to obtain Sense Data from underlying Linux/SCSI struct scsi_cmnd */ -static int transport_get_sense_data(struct se_cmd *cmd) +static void transport_get_sense_data(struct se_cmd *cmd) { unsigned char *buffer = cmd->sense_buffer, *sense_buffer = NULL; struct se_device *dev = cmd->se_dev; @@ -2270,30 +2269,15 @@ WARN_ON(!cmd->se_lun); if (!dev) - return 0; + return; spin_lock_irqsave(&cmd->t_state_lock, flags); if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) { spin_unlock_irqrestore(&cmd->t_state_lock, flags); - return 0; - } - - if (!(cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE)) - goto out; - - if (!dev->transport->get_sense_buffer) { - pr_err("dev->transport->get_sense_buffer is NULL\n"); - goto out; + return; } sense_buffer = dev->transport->get_sense_buffer(cmd); - if (!sense_buffer) { - pr_err("ITT 0x%08x cmd %p: Unable to locate" - " sense buffer for task with sense\n", - cmd->se_tfo->get_task_tag(cmd), cmd); - goto out; - } - spin_unlock_irqrestore(&cmd->t_state_lock, flags); offset = cmd->se_tfo->set_fabric_sense_len(cmd, TRANSPORT_SENSE_BUFFER); @@ -2305,11 +2289,6 @@ pr_debug("HBA_[%u]_PLUG[%s]: Set SAM STATUS: 0x%02x and sense\n", dev->se_hba->hba_id, dev->transport->name, cmd->scsi_status); - return 0; - -out: - spin_unlock_irqrestore(&cmd->t_state_lock, flags); - return -1; } static inline long long transport_dev_end_lba(struct se_device *dev) @@ -2999,15 +2978,20 @@ /* Returns CHECK_CONDITION + INVALID_CDB_FIELD */ goto out_invalid_cdb_field; } - + /* + * For the overflow case keep the existing fabric provided + * ->data_length. Otherwise for the underflow case, reset + * ->data_length to the smaller SCSI expected data transfer + * length. + */ if (size > cmd->data_length) { cmd->se_cmd_flags |= SCF_OVERFLOW_BIT; cmd->residual_count = (size - cmd->data_length); } else { cmd->se_cmd_flags |= SCF_UNDERFLOW_BIT; cmd->residual_count = (cmd->data_length - size); + cmd->data_length = size; } - cmd->data_length = size; } if (cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) { @@ -3165,7 +3149,7 @@ static void target_complete_ok_work(struct work_struct *work) { struct se_cmd *cmd = container_of(work, struct se_cmd, work); - int reason = 0, ret; + int ret; /* * Check if we need to move delayed/dormant tasks from cmds on the @@ -3186,19 +3170,16 @@ * the struct se_cmd in question. */ if (cmd->se_cmd_flags & SCF_TRANSPORT_TASK_SENSE) { - if (transport_get_sense_data(cmd) < 0) - reason = TCM_NON_EXISTENT_LUN; - - if (cmd->scsi_status) { - ret = transport_send_check_condition_and_sense( - cmd, reason, 1); - if (ret == -EAGAIN || ret == -ENOMEM) - goto queue_full; + WARN_ON(!cmd->scsi_status); + transport_get_sense_data(cmd); + ret = transport_send_check_condition_and_sense( + cmd, 0, 1); + if (ret == -EAGAIN || ret == -ENOMEM) + goto queue_full; - transport_lun_remove_cmd(cmd); - transport_cmd_check_stop_to_fabric(cmd); - return; - } + transport_lun_remove_cmd(cmd); + transport_cmd_check_stop_to_fabric(cmd); + return; } /* * Check for a callback, used by amongst other things @@ -3476,9 +3457,9 @@ return 0; out: - while (i >= 0) { - __free_page(sg_page(&cmd->t_data_sg[i])); + while (i > 0) { i--; + __free_page(sg_page(&cmd->t_data_sg[i])); } kfree(cmd->t_data_sg); cmd->t_data_sg = NULL; @@ -4212,6 +4193,15 @@ /* WRITE PROTECTED */ buffer[offset+SPC_ASC_KEY_OFFSET] = 0x27; break; + case TCM_ADDRESS_OUT_OF_RANGE: + /* CURRENT ERROR */ + buffer[offset] = 0x70; + buffer[offset+SPC_ADD_SENSE_LEN_OFFSET] = 10; + /* ILLEGAL REQUEST */ + buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; + /* LOGICAL BLOCK ADDRESS OUT OF RANGE */ + buffer[offset+SPC_ASC_KEY_OFFSET] = 0x21; + break; case TCM_CHECK_CONDITION_UNIT_ATTENTION: /* CURRENT ERROR */ buffer[offset] = 0x70; @@ -4240,7 +4230,7 @@ /* ILLEGAL REQUEST */ buffer[offset+SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; /* LOGICAL UNIT COMMUNICATION FAILURE */ - buffer[offset+SPC_ASC_KEY_OFFSET] = 0x80; + buffer[offset+SPC_ASC_KEY_OFFSET] = 0x08; break; } /* @@ -4305,6 +4295,8 @@ } cmd->scsi_status = SAM_STAT_TASK_ABORTED; + transport_lun_remove_cmd(cmd); + pr_debug("Setting 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)); --- linux-3.5.0.orig/drivers/target/target_core_fabric_configfs.c +++ linux-3.5.0/drivers/target/target_core_fabric_configfs.c @@ -350,9 +350,17 @@ ret = -EINVAL; goto out; } + if (mapped_lun > (TRANSPORT_MAX_LUNS_PER_TPG-1)) { + pr_err("Mapped LUN: %lu exceeds TRANSPORT_MAX_LUNS_PER_TPG" + "-1: %u for Target Portal Group: %u\n", mapped_lun, + TRANSPORT_MAX_LUNS_PER_TPG-1, + se_tpg->se_tpg_tfo->tpg_get_tag(se_tpg)); + ret = -EINVAL; + goto out; + } - lacl = core_dev_init_initiator_node_lun_acl(se_tpg, mapped_lun, - config_item_name(acl_ci), &ret); + lacl = core_dev_init_initiator_node_lun_acl(se_tpg, se_nacl, + mapped_lun, &ret); if (!lacl) { ret = -EINVAL; goto out; --- linux-3.5.0.orig/drivers/target/target_core_internal.h +++ linux-3.5.0/drivers/target/target_core_internal.h @@ -61,7 +61,7 @@ int core_dev_del_lun(struct se_portal_group *, u32); struct se_lun *core_get_lun_from_tpg(struct se_portal_group *, u32); struct se_lun_acl *core_dev_init_initiator_node_lun_acl(struct se_portal_group *, - u32, char *, int *); + struct se_node_acl *, u32, int *); int core_dev_add_initiator_node_lun_acl(struct se_portal_group *, struct se_lun_acl *, u32, u32); int core_dev_del_initiator_node_lun_acl(struct se_portal_group *, --- linux-3.5.0.orig/drivers/target/tcm_fc/tfc_sess.c +++ linux-3.5.0/drivers/target/tcm_fc/tfc_sess.c @@ -356,11 +356,11 @@ tport = ft_tport_create(rdata->local_port); if (!tport) - return 0; /* not a target for this local port */ + goto not_target; /* not a target for this local port */ acl = ft_acl_get(tport->tpg, rdata); if (!acl) - return 0; + goto not_target; /* no target for this remote */ if (!rspp) goto fill; @@ -397,12 +397,18 @@ /* * OR in our service parameters with other provider (initiator), if any. - * TBD XXX - indicate RETRY capability? */ fill: fcp_parm = ntohl(spp->spp_params); + fcp_parm &= ~FCP_SPPF_RETRY; spp->spp_params = htonl(fcp_parm | FCP_SPPF_TARG_FCN); return FC_SPP_RESP_ACK; + +not_target: + fcp_parm = ntohl(spp->spp_params); + fcp_parm &= ~FCP_SPPF_TARG_FCN; + spp->spp_params = htonl(fcp_parm); + return 0; } /** @@ -431,7 +437,6 @@ { struct ft_sess *sess = container_of(rcu, struct ft_sess, rcu); - transport_deregister_session(sess->se_sess); kfree(sess); } @@ -439,6 +444,7 @@ { struct ft_sess *sess = container_of(kref, struct ft_sess, kref); + transport_deregister_session(sess->se_sess); call_rcu(&sess->rcu, ft_sess_rcu_free); } --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_tmr.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_tmr.c @@ -49,8 +49,8 @@ if (!ref_cmd) { pr_err("Unable to locate RefTaskTag: 0x%08x on CID:" " %hu.\n", hdr->rtt, conn->cid); - return ((hdr->refcmdsn >= conn->sess->exp_cmd_sn) && - (hdr->refcmdsn <= conn->sess->max_cmd_sn)) ? + return (iscsi_sna_gte(hdr->refcmdsn, conn->sess->exp_cmd_sn) && + iscsi_sna_lte(hdr->refcmdsn, conn->sess->max_cmd_sn)) ? ISCSI_TMF_RSP_COMPLETE : ISCSI_TMF_RSP_NO_TASK; } if (ref_cmd->cmd_sn != hdr->refcmdsn) { --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_login.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_login.c @@ -45,6 +45,7 @@ static int iscsi_login_init_conn(struct iscsi_conn *conn) { + init_waitqueue_head(&conn->queues_wq); INIT_LIST_HEAD(&conn->conn_list); INIT_LIST_HEAD(&conn->conn_cmd_list); INIT_LIST_HEAD(&conn->immed_queue_list); @@ -130,13 +131,13 @@ initiatorname_param = iscsi_find_param_from_key( INITIATORNAME, conn->param_list); - if (!initiatorname_param) - return -1; - sessiontype_param = iscsi_find_param_from_key( SESSIONTYPE, conn->param_list); - if (!sessiontype_param) + if (!initiatorname_param || !sessiontype_param) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_MISSING_FIELDS); return -1; + } sessiontype = (strncmp(sessiontype_param->value, NORMAL, 6)) ? 1 : 0; @@ -795,22 +796,6 @@ } np->np_socket = sock; /* - * The SCTP stack needs struct socket->file. - */ - if ((np->np_network_transport == ISCSI_SCTP_TCP) || - (np->np_network_transport == ISCSI_SCTP_UDP)) { - if (!sock->file) { - sock->file = kzalloc(sizeof(struct file), GFP_KERNEL); - if (!sock->file) { - pr_err("Unable to allocate struct" - " file for SCTP\n"); - ret = -ENOMEM; - goto fail; - } - np->np_flags |= NPF_SCTP_STRUCT_FILE; - } - } - /* * Setup the np->np_sockaddr from the passed sockaddr setup * in iscsi_target_configfs.c code.. */ @@ -869,21 +854,15 @@ fail: np->np_socket = NULL; - if (sock) { - if (np->np_flags & NPF_SCTP_STRUCT_FILE) { - kfree(sock->file); - sock->file = NULL; - } - + if (sock) sock_release(sock); - } return ret; } static int __iscsi_target_login_thread(struct iscsi_np *np) { u8 buffer[ISCSI_HDR_LEN], iscsi_opcode, zero_tsih = 0; - int err, ret = 0, set_sctp_conn_flag, stop; + int err, ret = 0, stop; struct iscsi_conn *conn = NULL; struct iscsi_login *login; struct iscsi_portal_group *tpg = NULL; @@ -894,7 +873,6 @@ struct sockaddr_in6 sock_in6; flush_signals(current); - set_sctp_conn_flag = 0; sock = np->np_socket; spin_lock_bh(&np->np_thread_lock); @@ -917,35 +895,12 @@ spin_unlock_bh(&np->np_thread_lock); goto out; } - /* - * The SCTP stack needs struct socket->file. - */ - if ((np->np_network_transport == ISCSI_SCTP_TCP) || - (np->np_network_transport == ISCSI_SCTP_UDP)) { - if (!new_sock->file) { - new_sock->file = kzalloc( - sizeof(struct file), GFP_KERNEL); - if (!new_sock->file) { - pr_err("Unable to allocate struct" - " file for SCTP\n"); - sock_release(new_sock); - /* Get another socket */ - return 1; - } - set_sctp_conn_flag = 1; - } - } - iscsi_start_login_thread_timer(np); conn = kzalloc(sizeof(struct iscsi_conn), GFP_KERNEL); if (!conn) { pr_err("Could not allocate memory for" " new connection\n"); - if (set_sctp_conn_flag) { - kfree(new_sock->file); - new_sock->file = NULL; - } sock_release(new_sock); /* Get another socket */ return 1; @@ -955,9 +910,6 @@ conn->conn_state = TARG_CONN_STATE_FREE; conn->sock = new_sock; - if (set_sctp_conn_flag) - conn->conn_flags |= CONNFLAG_SCTP_STRUCT_FILE; - pr_debug("Moving to TARG_CONN_STATE_XPT_UP.\n"); conn->conn_state = TARG_CONN_STATE_XPT_UP; @@ -1205,13 +1157,8 @@ iscsi_release_param_list(conn->param_list); conn->param_list = NULL; } - if (conn->sock) { - if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) { - kfree(conn->sock->file); - conn->sock->file = NULL; - } + if (conn->sock) sock_release(conn->sock); - } kfree(conn); if (tpg) { --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_nego.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_nego.c @@ -628,8 +628,11 @@ login->req_buf, payload_length, conn->param_list); - if (ret < 0) + if (ret < 0) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_INIT_ERR); return -1; + } if (login->first_request) if (iscsi_target_check_first_request(conn, login) < 0) @@ -644,8 +647,11 @@ login->rsp_buf, &login->rsp_length, conn->param_list); - if (ret < 0) + if (ret < 0) { + iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, + ISCSI_LOGIN_STATUS_INIT_ERR); return -1; + } if (!login->auth_complete && ISCSI_TPG_ATTRIB(ISCSI_TPG_C(conn))->authentication) { --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_util.h +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_util.h @@ -25,6 +25,7 @@ extern void iscsit_add_cmd_to_response_queue(struct iscsi_cmd *, struct iscsi_conn *, u8); extern struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsi_conn *); extern void iscsit_remove_cmd_from_tx_queues(struct iscsi_cmd *, struct iscsi_conn *); +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 *); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_erl2.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_erl2.c @@ -374,7 +374,7 @@ * made generic here. */ if (!(cmd->cmd_flags & ICF_OOO_CMDSN) && !cmd->immediate_cmd && - (cmd->cmd_sn >= conn->sess->exp_cmd_sn)) { + iscsi_sna_gte(cmd->cmd_sn, conn->sess->exp_cmd_sn)) { list_del(&cmd->i_conn_node); spin_unlock_bh(&conn->cmd_lock); iscsit_free_cmd(cmd); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_tpg.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_tpg.c @@ -672,6 +672,12 @@ pr_debug("iSCSI_TPG[%hu] - Generate Initiator Portal Group ACLs: %s\n", tpg->tpgt, (a->generate_node_acls) ? "Enabled" : "Disabled"); + if (flag == 1 && a->cache_dynamic_acls == 0) { + pr_debug("Explicitly setting cache_dynamic_acls=1 when " + "generate_node_acls=1\n"); + a->cache_dynamic_acls = 1; + } + return 0; } @@ -711,6 +717,12 @@ return -EINVAL; } + if (a->generate_node_acls == 1 && flag == 0) { + pr_debug("Skipping cache_dynamic_acls=0 when" + " generate_node_acls=1\n"); + return 0; + } + a->cache_dynamic_acls = flag; pr_debug("iSCSI_TPG[%hu] - Cache Dynamic Initiator Portal Group" " ACLs %s\n", tpg->tpgt, (a->cache_dynamic_acls) ? --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_core.h +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_core.h @@ -25,10 +25,10 @@ #define NA_DATAOUT_TIMEOUT_RETRIES 5 #define NA_DATAOUT_TIMEOUT_RETRIES_MAX 15 #define NA_DATAOUT_TIMEOUT_RETRIES_MIN 1 -#define NA_NOPIN_TIMEOUT 5 +#define NA_NOPIN_TIMEOUT 15 #define NA_NOPIN_TIMEOUT_MAX 60 #define NA_NOPIN_TIMEOUT_MIN 3 -#define NA_NOPIN_RESPONSE_TIMEOUT 5 +#define NA_NOPIN_RESPONSE_TIMEOUT 30 #define NA_NOPIN_RESPONSE_TIMEOUT_MAX 60 #define NA_NOPIN_RESPONSE_TIMEOUT_MIN 3 #define NA_RANDOM_DATAIN_PDU_OFFSETS 0 @@ -224,7 +224,6 @@ /* Used for struct iscsi_np->np_flags */ enum np_flags_table { NPF_IP_NETWORK = 0x00, - NPF_SCTP_STRUCT_FILE = 0x01 /* Bugfix */ }; /* Used for struct iscsi_np->np_thread_state */ @@ -486,6 +485,7 @@ }; struct iscsi_conn { + wait_queue_head_t queues_wq; /* Authentication Successful for this connection */ u8 auth_complete; /* State connection is currently in */ @@ -503,7 +503,6 @@ u16 local_port; int net_size; u32 auth_id; -#define CONNFLAG_SCTP_STRUCT_FILE 0x01 u32 conn_flags; /* Used for iscsi_tx_login_rsp() */ u32 login_itt; --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target.c @@ -429,19 +429,8 @@ int iscsit_del_np_comm(struct iscsi_np *np) { - if (!np->np_socket) - return 0; - - /* - * Some network transports allocate their own struct sock->file, - * see if we need to free any additional allocated resources. - */ - if (np->np_flags & NPF_SCTP_STRUCT_FILE) { - kfree(np->np_socket->file); - np->np_socket->file = NULL; - } - - sock_release(np->np_socket); + if (np->np_socket) + sock_release(np->np_socket); return 0; } @@ -746,7 +735,7 @@ list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) { spin_lock(&cmd->istate_lock); if ((cmd->i_state == ISTATE_SENT_STATUS) && - (cmd->stat_sn < exp_statsn)) { + iscsi_sna_lt(cmd->stat_sn, exp_statsn)) { cmd->i_state = ISTATE_REMOVE; spin_unlock(&cmd->istate_lock); iscsit_add_cmd_to_immediate_queue(cmd, conn, @@ -2393,7 +2382,7 @@ if (!conn_p) return; - cmd = iscsit_allocate_cmd(conn_p, GFP_KERNEL); + cmd = iscsit_allocate_cmd(conn_p, GFP_ATOMIC); if (!cmd) { iscsit_dec_conn_usage_count(conn_p); return; @@ -3280,7 +3269,6 @@ len += 1; if ((len + payload_len) > buffer_len) { - spin_unlock(&tiqn->tiqn_tpg_lock); end_of_buf = 1; goto eob; } @@ -3433,6 +3421,7 @@ hdr->opcode = ISCSI_OP_REJECT; hdr->flags |= ISCSI_FLAG_CMD_FINAL; hton24(hdr->dlength, ISCSI_HDR_LEN); + hdr->ffffffff = 0xffffffff; cmd->stat_sn = conn->stat_sn++; hdr->statsn = cpu_to_be32(cmd->stat_sn); hdr->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); @@ -3744,7 +3733,9 @@ */ iscsit_thread_check_cpumask(conn, current, 1); - schedule_timeout_interruptible(MAX_SCHEDULE_TIMEOUT); + wait_event_interruptible(conn->queues_wq, + !iscsit_conn_all_queues_empty(conn) || + ts->status == ISCSI_THREAD_SET_RESET); if ((ts->status == ISCSI_THREAD_SET_RESET) || signal_pending(current)) @@ -4077,13 +4068,8 @@ kfree(conn->conn_ops); conn->conn_ops = NULL; - if (conn->sock) { - if (conn->conn_flags & CONNFLAG_SCTP_STRUCT_FILE) { - kfree(conn->sock->file); - conn->sock->file = NULL; - } + if (conn->sock) sock_release(conn->sock); - } conn->thread_set = NULL; pr_debug("Moving to TARG_CONN_STATE_FREE.\n"); --- linux-3.5.0.orig/drivers/target/iscsi/iscsi_target_util.c +++ linux-3.5.0/drivers/target/iscsi/iscsi_target_util.c @@ -488,7 +488,7 @@ atomic_set(&conn->check_immediate_queue, 1); spin_unlock_bh(&conn->immed_queue_lock); - wake_up_process(conn->thread_set->tx_thread); + wake_up(&conn->queues_wq); } struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsi_conn *conn) @@ -562,7 +562,7 @@ atomic_inc(&cmd->response_queue_count); spin_unlock_bh(&conn->response_queue_lock); - wake_up_process(conn->thread_set->tx_thread); + wake_up(&conn->queues_wq); } struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsi_conn *conn) @@ -616,6 +616,24 @@ } } +bool iscsit_conn_all_queues_empty(struct iscsi_conn *conn) +{ + bool empty; + + spin_lock_bh(&conn->immed_queue_lock); + empty = list_empty(&conn->immed_queue_list); + spin_unlock_bh(&conn->immed_queue_lock); + + if (!empty) + return empty; + + spin_lock_bh(&conn->response_queue_lock); + empty = list_empty(&conn->response_queue_list); + spin_unlock_bh(&conn->response_queue_lock); + + return empty; +} + void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *conn) { struct iscsi_queue_req *qr, *qr_tmp; --- linux-3.5.0.orig/drivers/target/sbp/sbp_target.c +++ linux-3.5.0/drivers/target/sbp/sbp_target.c @@ -2221,20 +2221,23 @@ tport->mgt_agt = sbp_management_agent_register(tport); if (IS_ERR(tport->mgt_agt)) { ret = PTR_ERR(tport->mgt_agt); - kfree(tpg); - return ERR_PTR(ret); + goto out_free_tpg; } ret = core_tpg_register(&sbp_fabric_configfs->tf_ops, wwn, &tpg->se_tpg, (void *)tpg, TRANSPORT_TPG_TYPE_NORMAL); - if (ret < 0) { - sbp_management_agent_unregister(tport->mgt_agt); - kfree(tpg); - return ERR_PTR(ret); - } + if (ret < 0) + goto out_unreg_mgt_agt; return &tpg->se_tpg; + +out_unreg_mgt_agt: + sbp_management_agent_unregister(tport->mgt_agt); +out_free_tpg: + tport->tpg = NULL; + kfree(tpg); + return ERR_PTR(ret); } static void sbp_drop_tpg(struct se_portal_group *se_tpg) --- linux-3.5.0.orig/drivers/cdrom/cdrom.c +++ linux-3.5.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.5.0.orig/drivers/block/virtio_blk.c +++ linux-3.5.0/drivers/block/virtio_blk.c @@ -21,8 +21,6 @@ struct virtio_blk { - spinlock_t lock; - struct virtio_device *vdev; struct virtqueue *vq; @@ -65,7 +63,7 @@ unsigned int len; unsigned long flags; - spin_lock_irqsave(&vblk->lock, flags); + spin_lock_irqsave(vblk->disk->queue->queue_lock, flags); while ((vbr = virtqueue_get_buf(vblk->vq, &len)) != NULL) { int error; @@ -99,7 +97,7 @@ } /* In case queue is stopped waiting for more buffers. */ blk_start_queue(vblk->disk->queue); - spin_unlock_irqrestore(&vblk->lock, flags); + spin_unlock_irqrestore(vblk->disk->queue->queue_lock, flags); } static bool do_req(struct request_queue *q, struct virtio_blk *vblk, @@ -431,7 +429,6 @@ goto out_free_index; } - spin_lock_init(&vblk->lock); vblk->vdev = vdev; vblk->sg_elems = sg_elems; sg_init_table(vblk->sg, vblk->sg_elems); @@ -456,7 +453,7 @@ goto out_mempool; } - q = vblk->disk->queue = blk_init_queue(do_virtblk_request, &vblk->lock); + q = vblk->disk->queue = blk_init_queue(do_virtblk_request, NULL); if (!q) { err = -ENOMEM; goto out_put_disk; @@ -576,35 +573,30 @@ { struct virtio_blk *vblk = vdev->priv; int index = vblk->index; - struct virtblk_req *vbr; - unsigned long flags; + int refc; /* Prevent config work handler from accessing the device. */ mutex_lock(&vblk->config_lock); vblk->config_enable = false; mutex_unlock(&vblk->config_lock); + del_gendisk(vblk->disk); + blk_cleanup_queue(vblk->disk->queue); + /* Stop all the virtqueues. */ vdev->config->reset(vdev); flush_work(&vblk->config_work); - del_gendisk(vblk->disk); - - /* Abort requests dispatched to driver. */ - spin_lock_irqsave(&vblk->lock, flags); - while ((vbr = virtqueue_detach_unused_buf(vblk->vq))) { - __blk_end_request_all(vbr->req, -EIO); - mempool_free(vbr, vblk->pool); - } - spin_unlock_irqrestore(&vblk->lock, flags); - - blk_cleanup_queue(vblk->disk->queue); + refc = atomic_read(&disk_to_dev(vblk->disk)->kobj.kref.refcount); put_disk(vblk->disk); mempool_destroy(vblk->pool); vdev->config->del_vqs(vdev); kfree(vblk); - ida_simple_remove(&vd_index_ida, index); + + /* Only free device id if we don't have any users */ + if (refc == 1) + ida_simple_remove(&vd_index_ida, index); } #ifdef CONFIG_PM --- linux-3.5.0.orig/drivers/block/sunvdc.c +++ linux-3.5.0/drivers/block/sunvdc.c @@ -461,7 +461,7 @@ int op_len, err; void *req_buf; - if (!(((u64)1 << ((u64)op - 1)) & port->operations)) + if (!(((u64)1 << (u64)op) & port->operations)) return -EOPNOTSUPP; switch (op) { --- linux-3.5.0.orig/drivers/block/floppy.c +++ linux-3.5.0/drivers/block/floppy.c @@ -4138,6 +4138,10 @@ raw_cmd = NULL; + floppy_wq = alloc_ordered_workqueue("floppy", 0); + if (!floppy_wq) + return -ENOMEM; + for (dr = 0; dr < N_DRIVE; dr++) { disks[dr] = alloc_disk(1); if (!disks[dr]) { @@ -4145,16 +4149,11 @@ goto out_put_disk; } - floppy_wq = alloc_ordered_workqueue("floppy", 0); - if (!floppy_wq) { - err = -ENOMEM; - goto out_put_disk; - } - disks[dr]->queue = blk_init_queue(do_fd_request, &floppy_lock); if (!disks[dr]->queue) { + put_disk(disks[dr]); err = -ENOMEM; - goto out_destroy_workq; + goto out_put_disk; } blk_queue_max_hw_sectors(disks[dr]->queue, 64); @@ -4294,7 +4293,7 @@ err = platform_device_register(&floppy_device[drive]); if (err) - goto out_release_dma; + goto out_remove_drives; err = device_create_file(&floppy_device[drive].dev, &dev_attr_cmos); @@ -4312,17 +4311,25 @@ out_unreg_platform_dev: platform_device_unregister(&floppy_device[drive]); +out_remove_drives: + while (drive--) { + if ((allowed_drive_mask & (1 << drive)) && + fdc_state[FDC(drive)].version != FDC_NONE) { + del_gendisk(disks[drive]); + device_remove_file(&floppy_device[drive].dev, &dev_attr_cmos); + platform_device_unregister(&floppy_device[drive]); + } + } out_release_dma: if (atomic_read(&usage_count)) floppy_release_irq_and_dma(); out_unreg_region: blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); platform_driver_unregister(&floppy_driver); -out_destroy_workq: - destroy_workqueue(floppy_wq); out_unreg_blkdev: unregister_blkdev(FLOPPY_MAJOR, "fd"); out_put_disk: + destroy_workqueue(floppy_wq); while (dr--) { del_timer_sync(&motor_off_timer[dr]); if (disks[dr]->queue) { @@ -4531,6 +4538,8 @@ unregister_blkdev(FLOPPY_MAJOR, "fd"); platform_driver_unregister(&floppy_driver); + destroy_workqueue(floppy_wq); + for (drive = 0; drive < N_DRIVE; drive++) { del_timer_sync(&motor_off_timer[drive]); @@ -4555,7 +4564,6 @@ cancel_delayed_work_sync(&fd_timeout); cancel_delayed_work_sync(&fd_timer); - destroy_workqueue(floppy_wq); if (atomic_read(&usage_count)) floppy_release_irq_and_dma(); --- linux-3.5.0.orig/drivers/block/cciss_scsi.c +++ linux-3.5.0/drivers/block/cciss_scsi.c @@ -763,16 +763,7 @@ { case CMD_TARGET_STATUS: /* Pass it up to the upper layers... */ - if( ei->ScsiStatus) - { -#if 0 - printk(KERN_WARNING "cciss: cmd %p " - "has SCSI Status = %x\n", - c, ei->ScsiStatus); -#endif - cmd->result |= (ei->ScsiStatus << 1); - } - else { /* scsi status is zero??? How??? */ + if (!ei->ScsiStatus) { /* Ordinarily, this case should never happen, but there is a bug in some released firmware revisions that allows it to happen @@ -804,6 +795,7 @@ } break; case CMD_PROTOCOL_ERR: + cmd->result = DID_ERROR << 16; dev_warn(&h->pdev->dev, "%p has protocol error\n", c); break; --- linux-3.5.0.orig/drivers/block/nbd.c +++ linux-3.5.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: @@ -445,6 +445,14 @@ req->errors++; nbd_end_request(req); } + + while (!list_empty(&nbd->waiting_queue)) { + req = list_entry(nbd->waiting_queue.next, struct request, + queuelist); + list_del_init(&req->queuelist); + req->errors++; + nbd_end_request(req); + } } @@ -594,6 +602,7 @@ nbd->file = NULL; nbd_clear_que(nbd); BUG_ON(!list_empty(&nbd->queue_head)); + BUG_ON(!list_empty(&nbd->waiting_queue)); if (file) fput(file); return 0; --- linux-3.5.0.orig/drivers/block/xen-blkback/blkback.c +++ linux-3.5.0/drivers/block/xen-blkback/blkback.c @@ -337,7 +337,7 @@ invcount++; } - ret = gnttab_unmap_refs(unmap, pages, invcount, false); + ret = gnttab_unmap_refs(unmap, NULL, pages, invcount); BUG_ON(ret); } --- linux-3.5.0.orig/drivers/block/mtip32xx/mtip32xx.c +++ linux-3.5.0/drivers/block/mtip32xx/mtip32xx.c @@ -559,7 +559,7 @@ struct mtip_cmd *command; int tag, cmdto_cnt = 0; unsigned int bit, group; - unsigned int num_command_slots = port->dd->slot_groups * 32; + unsigned int num_command_slots; unsigned long to, tagaccum[SLOTBITS_IN_LONGS]; if (unlikely(!port)) @@ -572,6 +572,7 @@ } /* clear the tag accumulator */ memset(tagaccum, 0, SLOTBITS_IN_LONGS * sizeof(long)); + num_command_slots = port->dd->slot_groups * 32; for (tag = 0; tag < num_command_slots; tag++) { /* @@ -1148,11 +1149,15 @@ reply = port->rxfis + RX_FIS_D2H_REG; task_file_data = readl(port->mmio+PORT_TFDATA); - if ((task_file_data & 1) || (fis->command == ATA_CMD_SEC_ERASE_UNIT)) + if (fis->command == ATA_CMD_SEC_ERASE_UNIT) + clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag); + + if ((task_file_data & 1)) return false; if (fis->command == ATA_CMD_SEC_ERASE_PREP) { set_bit(MTIP_PF_SE_ACTIVE_BIT, &port->flags); + set_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag); port->ic_pause_timer = jiffies; return true; } else if ((fis->command == ATA_CMD_DOWNLOAD_MICRO) && @@ -1900,7 +1905,7 @@ int rv = 0, xfer_sz = command[3]; if (xfer_sz) { - if (user_buffer) + if (!user_buffer) return -EFAULT; buf = dmam_alloc_coherent(&port->dd->pdev->dev, @@ -2031,8 +2036,9 @@ } return rv; } - -static void mtip_set_timeout(struct host_to_dev_fis *fis, unsigned int *timeout) +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: @@ -2040,10 +2046,13 @@ break; case ATA_CMD_SEC_ERASE_UNIT: case 0xFC: - *timeout = 240000; /* 4 minutes */ + if (erasemode) + *timeout = ((*(dd->port->identify + 90) * 2) * 60000); + else + *timeout = ((*(dd->port->identify + 89) * 2) * 60000); break; case ATA_CMD_STANDBYNOW1: - *timeout = 10000; /* 10 seconds */ + *timeout = 120000; /* 2 minutes */ break; case 0xF7: case 0xFA: @@ -2083,6 +2092,7 @@ unsigned int transfer_size; unsigned long task_file_data; int intotal = outtotal + req_task->out_size; + int erasemode = 0; taskout = req_task->out_size; taskin = req_task->in_size; @@ -2208,7 +2218,13 @@ fis.lba_hi, fis.device); - mtip_set_timeout(&fis, &timeout); + /* check for erase mode support during secure erase.*/ + if ((fis.command == ATA_CMD_SEC_ERASE_UNIT) && outbuf && + (outbuf[0] & MTIP_SEC_ERASE_MODE)) { + erasemode = 1; + } + + mtip_set_timeout(dd, &fis, &timeout, erasemode); /* Determine the correct transfer size.*/ if (force_single_sector) @@ -2424,7 +2440,7 @@ * return value * None */ -static void mtip_hw_submit_io(struct driver_data *dd, sector_t start, +static void mtip_hw_submit_io(struct driver_data *dd, sector_t sector, int nsect, int nents, int tag, void *callback, void *data, int dir) { @@ -2432,6 +2448,7 @@ struct mtip_port *port = dd->port; struct mtip_cmd *command = &port->commands[tag]; int dma_dir = (dir == READ) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; + u64 start = sector; /* Map the scatter list for DMA access */ nents = dma_map_sg(&dd->pdev->dev, command->sg, nents, dma_dir); @@ -2450,8 +2467,12 @@ fis->opts = 1 << 7; fis->command = (dir == READ ? ATA_CMD_FPDMA_READ : ATA_CMD_FPDMA_WRITE); - *((unsigned int *) &fis->lba_low) = (start & 0xFFFFFF); - *((unsigned int *) &fis->lba_low_ex) = ((start >> 24) & 0xFFFFFF); + fis->lba_low = start & 0xFF; + fis->lba_mid = (start >> 8) & 0xFF; + fis->lba_hi = (start >> 16) & 0xFF; + fis->lba_low_ex = (start >> 24) & 0xFF; + fis->lba_mid_ex = (start >> 32) & 0xFF; + fis->lba_hi_ex = (start >> 40) & 0xFF; fis->device = 1 << 6; fis->features = nsect & 0xFF; fis->features_ex = (nsect >> 8) & 0xFF; @@ -2588,9 +2609,6 @@ if (!len || size) return 0; - if (size < 0) - return -EINVAL; - size += sprintf(&buf[size], "H/ S ACTive : [ 0x"); for (n = dd->slot_groups-1; n >= 0; n--) @@ -2660,9 +2678,6 @@ if (!len || size) return 0; - if (size < 0) - return -EINVAL; - size += sprintf(&buf[size], "Flag-port : [ %08lX ]\n", dd->port->flags); size += sprintf(&buf[size], "Flag-dd : [ %08lX ]\n", @@ -3214,8 +3229,8 @@ "Unable to check write protect progress\n"); else dev_info(&dd->pdev->dev, - "Write protect progress: %d%% (%d blocks)\n", - attr242.cur, attr242.data); + "Write protect progress: %u%% (%u blocks)\n", + attr242.cur, le32_to_cpu(attr242.data)); return rv; out3: @@ -3619,6 +3634,10 @@ bio_endio(bio, -ENODATA); return; } + if (unlikely(test_bit(MTIP_DDF_SEC_LOCK_BIT, &dd->dd_flag))) { + bio_endio(bio, -ENODATA); + return; + } } if (unlikely(!bio_has_data(bio))) { @@ -4168,7 +4187,13 @@ /* Table of device ids supported by this driver. */ static DEFINE_PCI_DEVICE_TABLE(mtip_pci_tbl) = { - { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320H_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P320S_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P325M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P420H_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P420M_DEVICE_ID) }, + { PCI_DEVICE(PCI_VENDOR_ID_MICRON, P425M_DEVICE_ID) }, { 0 } }; @@ -4199,12 +4224,12 @@ { int error; - printk(KERN_INFO MTIP_DRV_NAME " Version " MTIP_DRV_VERSION "\n"); + pr_info(MTIP_DRV_NAME " Version " MTIP_DRV_VERSION "\n"); /* Allocate a major block device number to use with this driver. */ error = register_blkdev(0, MTIP_DRV_NAME); if (error <= 0) { - printk(KERN_ERR "Unable to register block device (%d)\n", + pr_err("Unable to register block device (%d)\n", error); return -EBUSY; } @@ -4213,7 +4238,7 @@ if (!dfs_parent) { dfs_parent = debugfs_create_dir("rssd", NULL); if (IS_ERR_OR_NULL(dfs_parent)) { - printk(KERN_WARNING "Error creating debugfs parent\n"); + pr_warn("Error creating debugfs parent\n"); dfs_parent = NULL; } } --- linux-3.5.0.orig/drivers/block/mtip32xx/mtip32xx.h +++ linux-3.5.0/drivers/block/mtip32xx/mtip32xx.h @@ -33,6 +33,9 @@ /* offset of Device Control register in PCIe extended capabilites space */ #define PCIE_CONFIG_EXT_DEVICE_CONTROL_OFFSET 0x48 +/* check for erase mode support during secure erase */ +#define MTIP_SEC_ERASE_MODE 0x2 + /* # of times to retry timed out/failed IOs */ #define MTIP_MAX_RETRIES 2 @@ -76,7 +79,13 @@ /* Micron Vendor ID & P320x SSD Device ID */ #define PCI_VENDOR_ID_MICRON 0x1344 -#define P320_DEVICE_ID 0x5150 +#define P320H_DEVICE_ID 0x5150 +#define P320M_DEVICE_ID 0x5151 +#define P320S_DEVICE_ID 0x5152 +#define P325M_DEVICE_ID 0x5153 +#define P420H_DEVICE_ID 0x5160 +#define P420M_DEVICE_ID 0x5161 +#define P425M_DEVICE_ID 0x5163 /* Driver name and version strings */ #define MTIP_DRV_NAME "mtip32xx" @@ -131,10 +140,12 @@ MTIP_PF_SVC_THD_STOP_BIT = 8, /* below are bit numbers in 'dd_flag' defined in driver_data */ + MTIP_DDF_SEC_LOCK_BIT = 0, MTIP_DDF_REMOVE_PENDING_BIT = 1, MTIP_DDF_OVER_TEMP_BIT = 2, MTIP_DDF_WRITE_PROTECT_BIT = 3, MTIP_DDF_STOP_IO = ((1 << MTIP_DDF_REMOVE_PENDING_BIT) | \ + (1 << MTIP_DDF_SEC_LOCK_BIT) | \ (1 << MTIP_DDF_OVER_TEMP_BIT) | \ (1 << MTIP_DDF_WRITE_PROTECT_BIT)), @@ -144,14 +155,14 @@ MTIP_DDF_REBUILD_FAILED_BIT = 8, }; -__packed struct smart_attr{ +struct smart_attr { u8 attr_id; u16 flags; u8 cur; u8 worst; u32 data; u8 res[3]; -}; +} __packed; /* Register Frame Information Structure (FIS), host to device. */ struct host_to_dev_fis { --- linux-3.5.0.orig/drivers/block/aoe/aoeblk.c +++ linux-3.5.0/drivers/block/aoe/aoeblk.c @@ -276,8 +276,6 @@ goto err_mempool; blk_queue_make_request(d->blkq, aoeblk_make_request); d->blkq->backing_dev_info.name = "aoe"; - if (bdi_init(&d->blkq->backing_dev_info)) - goto err_blkq; spin_lock_irqsave(&d->lock, flags); gd->major = AOE_MAJOR; gd->first_minor = d->sysminor * AOE_PARTITIONS; @@ -298,9 +296,6 @@ aoedisk_add_sysfs(d); return; -err_blkq: - blk_cleanup_queue(d->blkq); - d->blkq = NULL; err_mempool: mempool_destroy(d->bufpool); err_disk: --- linux-3.5.0.orig/drivers/block/aoe/aoecmd.c +++ linux-3.5.0/drivers/block/aoe/aoecmd.c @@ -35,6 +35,7 @@ skb_reset_mac_header(skb); skb_reset_network_header(skb); skb->protocol = __constant_htons(ETH_P_AOE); + skb_checksum_none_assert(skb); } return skb; } --- linux-3.5.0.orig/drivers/block/aoe/aoe.h +++ linux-3.5.0/drivers/block/aoe/aoe.h @@ -1,5 +1,5 @@ /* Copyright (c) 2007 Coraid, Inc. See COPYING for GPL terms. */ -#define VERSION "47" +#define VERSION "47q" #define AOE_MAJOR 152 #define DEVICE_NAME "aoe" --- linux-3.5.0.orig/drivers/regulator/max8998.c +++ linux-3.5.0/drivers/regulator/max8998.c @@ -51,39 +51,39 @@ int step; }; -/* Voltage maps */ +/* Voltage maps in uV*/ static const struct voltage_map_desc ldo23_voltage_map_desc = { - .min = 800, .step = 50, .max = 1300, + .min = 800000, .step = 50000, .max = 1300000, }; static const struct voltage_map_desc ldo456711_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc ldo8_voltage_map_desc = { - .min = 3000, .step = 100, .max = 3600, + .min = 3000000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc ldo9_voltage_map_desc = { - .min = 2800, .step = 100, .max = 3100, + .min = 2800000, .step = 100000, .max = 3100000, }; static const struct voltage_map_desc ldo10_voltage_map_desc = { - .min = 950, .step = 50, .max = 1300, + .min = 950000, .step = 50000, .max = 1300000, }; static const struct voltage_map_desc ldo1213_voltage_map_desc = { - .min = 800, .step = 100, .max = 3300, + .min = 800000, .step = 100000, .max = 3300000, }; static const struct voltage_map_desc ldo1415_voltage_map_desc = { - .min = 1200, .step = 100, .max = 3300, + .min = 1200000, .step = 100000, .max = 3300000, }; static const struct voltage_map_desc ldo1617_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc buck12_voltage_map_desc = { - .min = 750, .step = 25, .max = 1525, + .min = 750000, .step = 25000, .max = 1525000, }; static const struct voltage_map_desc buck3_voltage_map_desc = { - .min = 1600, .step = 100, .max = 3600, + .min = 1600000, .step = 100000, .max = 3600000, }; static const struct voltage_map_desc buck4_voltage_map_desc = { - .min = 800, .step = 100, .max = 2300, + .min = 800000, .step = 100000, .max = 2300000, }; static const struct voltage_map_desc *ldo_voltage_map[] = { @@ -111,27 +111,6 @@ &buck4_voltage_map_desc, /* BUCK4 */ }; -static int max8998_list_voltage(struct regulator_dev *rdev, - unsigned int selector) -{ - const struct voltage_map_desc *desc; - int ldo = rdev_get_id(rdev); - int val; - - if (ldo >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[ldo]; - if (desc == NULL) - return -EINVAL; - - val = desc->min + desc->step * selector; - if (val > desc->max) - return -EINVAL; - - return val * 1000; -} - static int max8998_get_enable_register(struct regulator_dev *rdev, int *reg, int *shift) { @@ -297,41 +276,18 @@ return val; } -static int max8998_set_voltage_ldo(struct regulator_dev *rdev, - int min_uV, int max_uV, unsigned *selector) +static int max8998_set_voltage_ldo_sel(struct regulator_dev *rdev, + unsigned selector) { struct max8998_data *max8998 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8998->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; - const struct voltage_map_desc *desc; - int ldo = rdev_get_id(rdev); - int reg, shift = 0, mask, ret, i; - - if (ldo >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[ldo]; - if (desc == NULL) - return -EINVAL; - - if (max_vol < desc->min || min_vol > desc->max) - return -EINVAL; - - if (min_vol < desc->min) - min_vol = desc->min; - - i = DIV_ROUND_UP(min_vol - desc->min, desc->step); - - if (desc->min + desc->step*i > max_vol) - return -EINVAL; - - *selector = i; + int reg, shift = 0, mask, ret; ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; - ret = max8998_update_reg(i2c, reg, i<iodev->dev); struct i2c_client *i2c = max8998->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; - const struct voltage_map_desc *desc; int buck = rdev_get_id(rdev); int reg, shift = 0, mask, ret; - int i, j, previous_sel; + int j, previous_sel; static u8 buck1_last_val; - if (buck >= ARRAY_SIZE(ldo_voltage_map)) - return -EINVAL; - - desc = ldo_voltage_map[buck]; - - if (desc == NULL) - return -EINVAL; - - if (max_vol < desc->min || min_vol > desc->max) - return -EINVAL; - - if (min_vol < desc->min) - min_vol = desc->min; - - i = DIV_ROUND_UP(min_vol - desc->min, desc->step); - - if (desc->min + desc->step*i > max_vol) - return -EINVAL; - - *selector = i; - ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); if (ret) return ret; @@ -390,19 +323,19 @@ /* Check if voltage needs to be changed */ /* if previous_voltage equal new voltage, return */ - if (previous_sel == i) { + if (previous_sel == selector) { dev_dbg(max8998->dev, "No voltage change, old:%d, new:%d\n", - max8998_list_voltage(rdev, previous_sel), - max8998_list_voltage(rdev, i)); + regulator_list_voltage_linear(rdev, previous_sel), + regulator_list_voltage_linear(rdev, selector)); return ret; } switch (buck) { case MAX8998_BUCK1: dev_dbg(max8998->dev, - "BUCK1, i:%d, buck1_vol1:%d, buck1_vol2:%d\n" + "BUCK1, selector:%d, buck1_vol1:%d, buck1_vol2:%d\n" "buck1_vol3:%d, buck1_vol4:%d\n", - i, max8998->buck1_vol[0], max8998->buck1_vol[1], + selector, max8998->buck1_vol[0], max8998->buck1_vol[1], max8998->buck1_vol[2], max8998->buck1_vol[3]); if (gpio_is_valid(pdata->buck1_set1) && @@ -411,7 +344,7 @@ /* check if requested voltage */ /* value is already defined */ for (j = 0; j < ARRAY_SIZE(max8998->buck1_vol); j++) { - if (max8998->buck1_vol[j] == i) { + if (max8998->buck1_vol[j] == selector) { max8998->buck1_idx = j; buck1_gpio_set(pdata->buck1_set1, pdata->buck1_set2, j); @@ -426,11 +359,11 @@ max8998->buck1_idx = (buck1_last_val % 2) + 2; dev_dbg(max8998->dev, "max8998->buck1_idx:%d\n", max8998->buck1_idx); - max8998->buck1_vol[max8998->buck1_idx] = i; + max8998->buck1_vol[max8998->buck1_idx] = selector; ret = max8998_get_voltage_register(rdev, ®, &shift, &mask); - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); buck1_gpio_set(pdata->buck1_set1, pdata->buck1_set2, max8998->buck1_idx); buck1_last_val++; @@ -440,20 +373,20 @@ gpio_get_value(pdata->buck1_set2)); break; } else { - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); } break; case MAX8998_BUCK2: dev_dbg(max8998->dev, - "BUCK2, i:%d buck2_vol1:%d, buck2_vol2:%d\n" - , i, max8998->buck2_vol[0], max8998->buck2_vol[1]); + "BUCK2, selector:%d buck2_vol1:%d, buck2_vol2:%d\n", + selector, max8998->buck2_vol[0], max8998->buck2_vol[1]); if (gpio_is_valid(pdata->buck2_set3)) { /* check if requested voltage */ /* value is already defined */ for (j = 0; j < ARRAY_SIZE(max8998->buck2_vol); j++) { - if (max8998->buck2_vol[j] == i) { + if (max8998->buck2_vol[j] == selector) { max8998->buck2_idx = j; buck2_gpio_set(pdata->buck2_set3, j); goto buck2_exit; @@ -465,20 +398,21 @@ max8998_get_voltage_register(rdev, ®, &shift, &mask); - ret = max8998_write_reg(i2c, reg, i); - max8998->buck2_vol[max8998->buck2_idx] = i; + ret = max8998_write_reg(i2c, reg, selector); + max8998->buck2_vol[max8998->buck2_idx] = selector; buck2_gpio_set(pdata->buck2_set3, max8998->buck2_idx); buck2_exit: dev_dbg(max8998->dev, "%s: SET3:%d\n", i2c->name, gpio_get_value(pdata->buck2_set3)); } else { - ret = max8998_write_reg(i2c, reg, i); + ret = max8998_write_reg(i2c, reg, selector); } break; case MAX8998_BUCK3: case MAX8998_BUCK4: - ret = max8998_update_reg(i2c, reg, i<iodev->type == TYPE_MAX8998 && !(val & MAX8998_ENRAMP)) return 0; - difference = (new_selector - old_selector) * desc->step; + difference = (new_selector - old_selector) * desc->step / 1000; if (difference > 0) - return difference / ((val & 0x0f) + 1); + return DIV_ROUND_UP(difference, (val & 0x0f) + 1); return 0; } static struct regulator_ops max8998_ldo_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_ldo, + .set_voltage_sel = max8998_set_voltage_ldo_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable, }; static struct regulator_ops max8998_buck_ops = { - .list_voltage = max8998_list_voltage, + .list_voltage = regulator_list_voltage_linear, + .map_voltage = regulator_map_voltage_linear, .is_enabled = max8998_ldo_is_enabled, .enable = max8998_ldo_enable, .disable = max8998_ldo_disable, .get_voltage_sel = max8998_get_voltage_sel, - .set_voltage = max8998_set_voltage_buck, + .set_voltage_sel = max8998_set_voltage_buck_sel, .set_voltage_time_sel = max8998_set_voltage_buck_time_sel, .set_suspend_enable = max8998_ldo_enable, .set_suspend_disable = max8998_ldo_disable, @@ -772,7 +708,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage1 / 1000)) + < pdata->buck1_voltage1) i++; max8998->buck1_vol[0] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK1_VOLTAGE1, i); @@ -783,7 +719,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage2 / 1000)) + < pdata->buck1_voltage2) i++; max8998->buck1_vol[1] = i; @@ -795,7 +731,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage3 / 1000)) + < pdata->buck1_voltage3) i++; max8998->buck1_vol[2] = i; @@ -807,7 +743,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck1_voltage4 / 1000)) + < pdata->buck1_voltage4) i++; max8998->buck1_vol[3] = i; @@ -833,7 +769,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck2_voltage1 / 1000)) + < pdata->buck2_voltage1) i++; max8998->buck2_vol[0] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE1, i); @@ -844,7 +780,7 @@ i = 0; while (buck12_voltage_map_desc.min + buck12_voltage_map_desc.step*i - < (pdata->buck2_voltage2 / 1000)) + < pdata->buck2_voltage2) i++; max8998->buck2_vol[1] = i; ret = max8998_write_reg(i2c, MAX8998_REG_BUCK2_VOLTAGE2, i); @@ -860,7 +796,10 @@ desc = ldo_voltage_map[id]; if (desc && regulators[index].ops != &max8998_others_ops) { int count = (desc->max - desc->min) / desc->step + 1; + regulators[index].n_voltages = count; + regulators[index].min_uV = desc->min; + regulators[index].uV_step = desc->step; } config.dev = max8998->dev; --- linux-3.5.0.orig/drivers/regulator/max8997.c +++ linux-3.5.0/drivers/regulator/max8997.c @@ -69,26 +69,26 @@ int step; }; -/* Voltage maps in mV */ +/* Voltage maps in uV */ static const struct voltage_map_desc ldo_voltage_map_desc = { - .min = 800, .max = 3950, .step = 50, + .min = 800000, .max = 3950000, .step = 50000, }; /* LDO1 ~ 18, 21 all */ static const struct voltage_map_desc buck1245_voltage_map_desc = { - .min = 650, .max = 2225, .step = 25, + .min = 650000, .max = 2225000, .step = 25000, }; /* Buck1, 2, 4, 5 */ static const struct voltage_map_desc buck37_voltage_map_desc = { - .min = 750, .max = 3900, .step = 50, + .min = 750000, .max = 3900000, .step = 50000, }; /* Buck3, 7 */ -/* current map in mA */ +/* current map in uA */ static const struct voltage_map_desc charger_current_map_desc = { - .min = 200, .max = 950, .step = 50, + .min = 200000, .max = 950000, .step = 50000, }; static const struct voltage_map_desc topoff_current_map_desc = { - .min = 50, .max = 200, .step = 10, + .min = 50000, .max = 200000, .step = 10000, }; static const struct voltage_map_desc *reg_voltage_map[] = { @@ -192,7 +192,7 @@ if (val > desc->max) return -EINVAL; - return val * 1000; + return val; } static int max8997_get_enable_register(struct regulator_dev *rdev, @@ -483,7 +483,6 @@ { struct max8997_data *max8997 = rdev_get_drvdata(rdev); struct i2c_client *i2c = max8997->iodev->i2c; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; const struct voltage_map_desc *desc; int rid = rdev_get_id(rdev); int i, reg, shift, mask, ret; @@ -507,7 +506,7 @@ desc = reg_voltage_map[rid]; - i = max8997_get_voltage_proper_val(desc, min_vol, max_vol); + i = max8997_get_voltage_proper_val(desc, min_uV, max_uV); if (i < 0) return i; @@ -555,7 +554,7 @@ case MAX8997_BUCK4: case MAX8997_BUCK5: return DIV_ROUND_UP(desc->step * (new_selector - old_selector), - max8997->ramp_delay); + max8997->ramp_delay * 1000); } return 0; @@ -654,7 +653,6 @@ const struct voltage_map_desc *desc; int new_val, new_idx, damage, tmp_val, tmp_idx, tmp_dmg; bool gpio_dvs_mode = false; - int min_vol = min_uV / 1000, max_vol = max_uV / 1000; if (rid < MAX8997_BUCK1 || rid > MAX8997_BUCK7) return -EINVAL; @@ -679,7 +677,7 @@ selector); desc = reg_voltage_map[rid]; - new_val = max8997_get_voltage_proper_val(desc, min_vol, max_vol); + new_val = max8997_get_voltage_proper_val(desc, min_uV, max_uV); if (new_val < 0) return new_val; @@ -977,8 +975,8 @@ max8997->buck1_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck1_voltage[i] / 1000, - pdata->buck1_voltage[i] / 1000 + + pdata->buck1_voltage[i], + pdata->buck1_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; @@ -986,8 +984,8 @@ max8997->buck2_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck2_voltage[i] / 1000, - pdata->buck2_voltage[i] / 1000 + + pdata->buck2_voltage[i], + pdata->buck2_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; @@ -995,8 +993,8 @@ max8997->buck5_vol[i] = ret = max8997_get_voltage_proper_val( &buck1245_voltage_map_desc, - pdata->buck5_voltage[i] / 1000, - pdata->buck5_voltage[i] / 1000 + + pdata->buck5_voltage[i], + pdata->buck5_voltage[i] + buck1245_voltage_map_desc.step); if (ret < 0) goto err_out; --- linux-3.5.0.orig/drivers/regulator/wm831x-dcdc.c +++ linux-3.5.0/drivers/regulator/wm831x-dcdc.c @@ -296,7 +296,7 @@ if (vsel > dcdc->dvs_vsel) { ret = wm831x_set_bits(wm831x, dvs_reg, WM831X_DC1_DVS_VSEL_MASK, - dcdc->dvs_vsel); + vsel); if (ret == 0) dcdc->dvs_vsel = vsel; else --- linux-3.5.0.orig/drivers/regulator/twl-regulator.c +++ linux-3.5.0/drivers/regulator/twl-regulator.c @@ -1065,7 +1065,7 @@ TWL6025_ADJUSTABLE_LDO(LDO6, 0x60, 1000, 3300); TWL6025_ADJUSTABLE_LDO(LDOLN, 0x64, 1000, 3300); TWL6025_ADJUSTABLE_LDO(LDOUSB, 0x70, 1000, 3300); -TWL4030_FIXED_LDO(VINTANA2, 0x3f, 1500, 11, 100, 0x08); +TWL4030_FIXED_LDO(VINTANA1, 0x3f, 1500, 11, 100, 0x08); TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08); @@ -1146,7 +1146,7 @@ TWL6025_OF_MATCH("ti,twl6025-ldo6", LDO6), TWL6025_OF_MATCH("ti,twl6025-ldoln", LDOLN), TWL6025_OF_MATCH("ti,twl6025-ldousb", LDOUSB), - TWLFIXED_OF_MATCH("ti,twl4030-vintana2", VINTANA2), + TWLFIXED_OF_MATCH("ti,twl4030-vintana1", VINTANA1), TWLFIXED_OF_MATCH("ti,twl4030-vintdig", VINTDIG), TWLFIXED_OF_MATCH("ti,twl4030-vusb1v5", VUSB1V5), TWLFIXED_OF_MATCH("ti,twl4030-vusb1v8", VUSB1V8), --- linux-3.5.0.orig/drivers/staging/Makefile +++ linux-3.5.0/drivers/staging/Makefile @@ -27,7 +27,7 @@ obj-$(CONFIG_USB_SERIAL_QUATECH2) += serqt_usb2/ obj-$(CONFIG_OCTEON_ETHERNET) += octeon/ obj-$(CONFIG_VT6655) += vt6655/ -obj-$(CONFIG_VT6656) += vt6656/ +#obj-$(CONFIG_VT6656) += vt6656/ obj-$(CONFIG_VME_BUS) += vme/ obj-$(CONFIG_IPACK_BUS) += ipack/ obj-$(CONFIG_DX_SEP) += sep/ --- linux-3.5.0.orig/drivers/staging/speakup/main.c +++ linux-3.5.0/drivers/staging/speakup/main.c @@ -1854,7 +1854,7 @@ static int handle_goto(struct vc_data *vc, u_char type, u_char ch, u_short key) { - static u_char *goto_buf = "\0\0\0\0\0\0"; + static u_char goto_buf[8]; static int num; int maxlen, go_pos; char *cp; --- linux-3.5.0.orig/drivers/staging/speakup/synth.c +++ linux-3.5.0/drivers/staging/speakup/synth.c @@ -342,7 +342,7 @@ mutex_lock(&spk_mutex); /* First, check if we already have it loaded. */ - for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++) + for (i = 0; i < MAXSYNTHS && synths[i] != NULL; i++) if (strcmp(synths[i]->name, synth_name) == 0) synth = synths[i]; @@ -423,7 +423,7 @@ int i; int status = 0; mutex_lock(&spk_mutex); - for (i = 0; synths[i] != NULL && i < MAXSYNTHS; i++) + for (i = 0; i < MAXSYNTHS && synths[i] != NULL; i++) /* synth_remove() is responsible for rotating the array down */ if (in_synth == synths[i]) { mutex_unlock(&spk_mutex); --- linux-3.5.0.orig/drivers/staging/speakup/speakup_soft.c +++ linux-3.5.0/drivers/staging/speakup/speakup_soft.c @@ -40,7 +40,7 @@ static unsigned char get_index(void); static struct miscdevice synth_device; -static int initialized; +static int init_pos; static int misc_registered; static struct var_t vars[] = { @@ -194,7 +194,7 @@ unsigned long flags; spk_lock(flags); synth_soft.alive = 0; - initialized = 0; + init_pos = 0; spk_unlock(flags); /* Make sure we let applications go before leaving */ speakup_start_ttys(); @@ -239,13 +239,8 @@ ch = '\x18'; } else if (synth_buffer_empty()) { break; - } else if (!initialized) { - if (*init) { - ch = *init; - init++; - } else { - initialized = 1; - } + } else if (init[init_pos]) { + ch = init[init_pos++]; } else { ch = synth_buffer_getc(); } --- linux-3.5.0.orig/drivers/staging/zcache/zcache-main.c +++ linux-3.5.0/drivers/staging/zcache/zcache-main.c @@ -1259,13 +1259,12 @@ void *pampd, struct tmem_pool *pool, struct tmem_oid *oid, uint32_t index) { - int ret = 0; - BUG_ON(!is_ephemeral(pool)); - zbud_decompress((struct page *)(data), pampd); + if (zbud_decompress((struct page *)(data), pampd) < 0) + return -EINVAL; zbud_free_and_delist((struct zbud_hdr *)pampd); atomic_dec(&zcache_curr_eph_pampd_count); - return ret; + return 0; } /* --- linux-3.5.0.orig/drivers/staging/android/binder.c +++ linux-3.5.0/drivers/staging/android/binder.c @@ -655,7 +655,7 @@ page = &proc->pages[(page_addr - proc->buffer) / PAGE_SIZE]; BUG_ON(*page); - *page = alloc_page(GFP_KERNEL | __GFP_ZERO); + *page = alloc_page(GFP_KERNEL | __GFP_HIGHMEM | __GFP_ZERO); if (*page == NULL) { printk(KERN_ERR "binder: %d: binder_alloc_buf failed " "for page at %p\n", proc->pid, page_addr); @@ -2507,14 +2507,38 @@ struct binder_transaction *t; t = container_of(w, struct binder_transaction, work); - if (t->buffer->target_node && !(t->flags & TF_ONE_WAY)) + if (t->buffer->target_node && + !(t->flags & TF_ONE_WAY)) { binder_send_failed_reply(t, BR_DEAD_REPLY); + } else { + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered transaction %d\n", + t->debug_id); + t->buffer->transaction = NULL; + kfree(t); + binder_stats_deleted(BINDER_STAT_TRANSACTION); + } } break; case BINDER_WORK_TRANSACTION_COMPLETE: { + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered TRANSACTION_COMPLETE\n"); kfree(w); binder_stats_deleted(BINDER_STAT_TRANSACTION_COMPLETE); } break; + case BINDER_WORK_DEAD_BINDER_AND_CLEAR: + case BINDER_WORK_CLEAR_DEATH_NOTIFICATION: { + struct binder_ref_death *death; + + death = container_of(w, struct binder_ref_death, work); + binder_debug(BINDER_DEBUG_DEAD_TRANSACTION, + "binder: undelivered death notification, %p\n", + death->cookie); + kfree(death); + binder_stats_deleted(BINDER_STAT_DEATH); + } break; default: + pr_err("binder: unexpected work type, %d, not freed\n", + w->type); break; } } @@ -2984,6 +3008,7 @@ nodes++; rb_erase(&node->rb_node, &proc->nodes); list_del_init(&node->work.entry); + binder_release_work(&node->async_todo); if (hlist_empty(&node->refs)) { kfree(node); binder_stats_deleted(BINDER_STAT_NODE); @@ -3022,6 +3047,7 @@ binder_delete_ref(ref); } binder_release_work(&proc->todo); + binder_release_work(&proc->delivered_death); buffers = 0; while ((n = rb_first(&proc->allocated_buffers))) { --- linux-3.5.0.orig/drivers/staging/bcm/InterfaceInit.h +++ linux-3.5.0/drivers/staging/bcm/InterfaceInit.h @@ -8,10 +8,10 @@ #define BCM_USB_PRODUCT_ID_T3 0x0300 #define BCM_USB_PRODUCT_ID_T3B 0x0210 #define BCM_USB_PRODUCT_ID_T3L 0x0220 -#define BCM_USB_PRODUCT_ID_SM250 0xbccd #define BCM_USB_PRODUCT_ID_SYM 0x15E #define BCM_USB_PRODUCT_ID_1901 0xe017 #define BCM_USB_PRODUCT_ID_226 0x0132 +#define BCM_USB_PRODUCT_ID_ZTE_326 0x173 /* ZTE AX326 */ #define BCM_USB_PRODUCT_ID_ZTE_TU25 0x0007 #define BCM_USB_MINOR_BASE 192 --- linux-3.5.0.orig/drivers/staging/bcm/InterfaceInit.c +++ linux-3.5.0/drivers/staging/bcm/InterfaceInit.c @@ -4,10 +4,11 @@ { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3) }, { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3B) }, { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_T3L) }, - { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SM250) }, + { USB_DEVICE(BCM_USB_VENDOR_ID_T3, BCM_USB_PRODUCT_ID_SYM) }, { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_226) }, { USB_DEVICE(BCM_USB_VENDOR_ID_FOXCONN, BCM_USB_PRODUCT_ID_1901) }, { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_TU25) }, + { USB_DEVICE(BCM_USB_VENDOR_ID_ZTE, BCM_USB_PRODUCT_ID_ZTE_326) }, { } }; MODULE_DEVICE_TABLE(usb, InterfaceUsbtable); --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/rtl_core.c +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/rtl_core.c @@ -3125,6 +3125,9 @@ MODULE_AUTHOR(DRV_COPYRIGHT " " DRV_AUTHOR); MODULE_VERSION(DRV_VERSION); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(RTL8192E_BOOT_IMG_FW); +MODULE_FIRMWARE(RTL8192E_MAIN_IMG_FW); +MODULE_FIRMWARE(RTL8192E_DATA_IMG_FW); module_param(ifname, charp, S_IRUGO|S_IWUSR); module_param(hwwep, int, S_IRUGO|S_IWUSR); --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h @@ -23,6 +23,10 @@ #define GET_COMMAND_PACKET_FRAG_THRESHOLD(v) (4*(v/4) - 8) +#define RTL8192E_BOOT_IMG_FW "RTL8192E/boot.img" +#define RTL8192E_MAIN_IMG_FW "RTL8192E/main.img" +#define RTL8192E_DATA_IMG_FW "RTL8192E/data.img" + enum firmware_init_step { FW_INIT_STEP0_BOOT = 0, FW_INIT_STEP1_MAIN = 1, --- linux-3.5.0.orig/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c +++ linux-3.5.0/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c @@ -265,10 +265,11 @@ case FW_SOURCE_IMG_FILE: { if (pfirmware->firmware_buf_size[init_step] == 0) { - const char *fw_name[3] = { "RTL8192E/boot.img", - "RTL8192E/main.img", - "RTL8192E/data.img" - }; + const char *fw_name[3] = { + RTL8192E_BOOT_IMG_FW, + RTL8192E_MAIN_IMG_FW, + RTL8192E_DATA_IMG_FW + }; const struct firmware *fw_entry; int rc; rc = request_firmware(&fw_entry, --- linux-3.5.0.orig/drivers/staging/comedi/Kconfig +++ linux-3.5.0/drivers/staging/comedi/Kconfig @@ -447,6 +447,7 @@ config COMEDI_NI_AT_A2150 tristate "NI AT-A2150 ISA card support" + select COMEDI_FC depends on COMEDI_NI_COMMON depends on VIRT_TO_BUS ---help--- --- linux-3.5.0.orig/drivers/staging/comedi/drivers.c +++ linux-3.5.0/drivers/staging/comedi/drivers.c @@ -144,7 +144,7 @@ dev->board_ptr = comedi_recognize(driv, it->board_name); if (dev->board_ptr) break; - } else if (strcmp(driv->driver_name, it->board_name)) + } else if (strcmp(driv->driver_name, it->board_name) == 0) break; module_put(driv->module); } --- linux-3.5.0.orig/drivers/staging/comedi/comedi_fops.c +++ linux-3.5.0/drivers/staging/comedi/comedi_fops.c @@ -425,8 +425,16 @@ /* Device config is special, because it must work on * an unconfigured device. */ if (cmd == COMEDI_DEVCONFIG) { + if (minor >= COMEDI_NUM_BOARD_MINORS) { + /* Device config not appropriate on non-board minors. */ + rc = -ENOTTY; + goto done; + } rc = do_devconfig_ioctl(dev, (struct comedi_devconfig __user *)arg); + if (rc == 0) + /* Evade comedi_auto_unconfig(). */ + dev_file_info->hardware_device = NULL; goto done; } @@ -1132,7 +1140,7 @@ ret = -EAGAIN; break; } - ret = s->async->inttrig(dev, s, insn->data[0]); + ret = s->async->inttrig(dev, s, data[0]); if (ret >= 0) ret = 1; break; @@ -1377,7 +1385,6 @@ goto cleanup; } - kfree(async->cmd.chanlist); async->cmd = user_cmd; async->cmd.data = NULL; /* load channel/gain list */ @@ -1859,7 +1866,7 @@ mask = 0; read_subdev = comedi_get_read_subdevice(dev_file_info); - if (read_subdev) { + if (read_subdev && read_subdev->async) { poll_wait(file, &read_subdev->async->wait_head, wait); if (!read_subdev->busy || comedi_buf_read_n_available(read_subdev->async) > 0 @@ -1869,7 +1876,7 @@ } } write_subdev = comedi_get_write_subdevice(dev_file_info); - if (write_subdev) { + if (write_subdev && write_subdev->async) { poll_wait(file, &write_subdev->async->wait_head, wait); comedi_buf_write_alloc(write_subdev->async, write_subdev->async->prealloc_bufsz); @@ -1911,7 +1918,7 @@ } s = comedi_get_write_subdevice(dev_file_info); - if (s == NULL) { + if (!s || !s->async) { retval = -EIO; goto done; } @@ -2022,7 +2029,7 @@ } s = comedi_get_read_subdevice(dev_file_info); - if (s == NULL) { + if (!s || !s->async) { retval = -EIO; goto done; } @@ -2122,6 +2129,8 @@ if (async) { comedi_reset_async_buf(async); async->inttrig = NULL; + kfree(async->cmd.chanlist); + async->cmd.chanlist = NULL; } else { printk(KERN_ERR "BUG: (?) do_become_nonbusy called with async=0\n"); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/ni_pcimio.c +++ linux-3.5.0/drivers/staging/comedi/drivers/ni_pcimio.c @@ -963,7 +963,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -982,7 +982,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1001,7 +1001,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1037,7 +1037,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, @@ -1056,7 +1056,7 @@ .ao_range_table = &range_ni_M_625x_ao, .reg_type = ni_reg_625x, .ao_unipolar = 0, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, @@ -1092,7 +1092,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1111,7 +1111,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 8, .caldac = {caldac_none}, .has_8255 = 0, @@ -1147,7 +1147,7 @@ .ao_range_table = &range_ni_M_628x_ao, .reg_type = ni_reg_628x, .ao_unipolar = 1, - .ao_speed = 357, + .ao_speed = 350, .num_p0_dio_channels = 32, .caldac = {caldac_none}, .has_8255 = 0, --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbduxfast.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbduxfast.c @@ -53,6 +53,7 @@ #define DRIVER_AUTHOR "Bernd Porr, BerndPorr@f2s.com" #define DRIVER_DESC "USB-DUXfast, BerndPorr@f2s.com" #define BOARDNAME "usbduxfast" +#define FIRMWARE "usbduxfast_firmware.bin" /* * timeout for the USB-transfer @@ -1578,7 +1579,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbduxfast_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxfastsub + index, @@ -1804,3 +1805,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/s626.c +++ linux-3.5.0/drivers/staging/comedi/drivers/s626.c @@ -2311,7 +2311,7 @@ /* (data==NULL) ? (Preloadvalue=0) : (Preloadvalue=data[0]); */ k->SetMode(dev, k, Setup, TRUE); - Preload(dev, k, *(insn->data)); + Preload(dev, k, data[0]); k->PulseIndex(dev, k); SetLatchSource(dev, k, valueSrclatch); k->SetEnable(dev, k, (uint16_t) (enab != 0)); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbduxsigma.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbduxsigma.c @@ -63,6 +63,7 @@ #include "../comedidev.h" #define BOARDNAME "usbduxsigma" +#define FIRMWARE "usbduxsigma_firmware.bin" /* timeout for the USB-transfer in ms*/ #define BULK_TIMEOUT 1000 @@ -2588,7 +2589,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbduxsigma_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxsub + index, @@ -2865,3 +2866,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/usbdux.c +++ linux-3.5.0/drivers/staging/comedi/drivers/usbdux.c @@ -102,6 +102,7 @@ #include "../comedidev.h" #define BOARDNAME "usbdux" +#define FIRMWARE "usbdux_firmware.bin" /* timeout for the USB-transfer in ms*/ #define BULK_TIMEOUT 1000 @@ -2577,7 +2578,7 @@ ret = request_firmware_nowait(THIS_MODULE, FW_ACTION_HOTPLUG, - "usbdux_firmware.bin", + FIRMWARE, &udev->dev, GFP_KERNEL, usbduxsub + index, @@ -2887,3 +2888,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_DESCRIPTION(DRIVER_DESC); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(FIRMWARE); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/ni_labpc.c +++ linux-3.5.0/drivers/staging/comedi/drivers/ni_labpc.c @@ -1259,7 +1259,9 @@ else channel = CR_CHAN(cmd->chanlist[0]); /* munge channel bits for differential / scan disabled mode */ - if (labpc_ai_scan_mode(cmd) != MODE_SINGLE_CHAN && aref == AREF_DIFF) + if ((labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN || + labpc_ai_scan_mode(cmd) == MODE_SINGLE_CHAN_INTERVAL) && + aref == AREF_DIFF) channel *= 2; devpriv->command1_bits |= ADC_CHAN_BITS(channel); devpriv->command1_bits |= thisboard->ai_range_code[range]; @@ -1275,21 +1277,6 @@ devpriv->write_byte(devpriv->command1_bits, dev->iobase + COMMAND1_REG); } - /* setup any external triggering/pacing (command4 register) */ - devpriv->command4_bits = 0; - if (cmd->convert_src != TRIG_EXT) - devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; - /* XXX should discard first scan when using interval scanning - * since manual says it is not synced with scan clock */ - if (labpc_use_continuous_mode(cmd) == 0) { - devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; - if (cmd->scan_begin_src == TRIG_EXT) - devpriv->command4_bits |= EXT_SCAN_EN_BIT; - } - /* single-ended/differential */ - if (aref == AREF_DIFF) - devpriv->command4_bits |= ADC_DIFF_BIT; - devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); devpriv->write_byte(cmd->chanlist_len, dev->iobase + INTERVAL_COUNT_REG); @@ -1369,6 +1356,22 @@ devpriv->command3_bits &= ~ADC_FNE_INTR_EN_BIT; devpriv->write_byte(devpriv->command3_bits, dev->iobase + COMMAND3_REG); + /* setup any external triggering/pacing (command4 register) */ + devpriv->command4_bits = 0; + if (cmd->convert_src != TRIG_EXT) + devpriv->command4_bits |= EXT_CONVERT_DISABLE_BIT; + /* XXX should discard first scan when using interval scanning + * since manual says it is not synced with scan clock */ + if (labpc_use_continuous_mode(cmd) == 0) { + devpriv->command4_bits |= INTERVAL_SCAN_EN_BIT; + if (cmd->scan_begin_src == TRIG_EXT) + devpriv->command4_bits |= EXT_SCAN_EN_BIT; + } + /* single-ended/differential */ + if (aref == AREF_DIFF) + devpriv->command4_bits |= ADC_DIFF_BIT; + devpriv->write_byte(devpriv->command4_bits, dev->iobase + COMMAND4_REG); + /* startup acquisition */ /* command2 reg */ --- linux-3.5.0.orig/drivers/staging/comedi/drivers/jr3_pci.c +++ linux-3.5.0/drivers/staging/comedi/drivers/jr3_pci.c @@ -883,7 +883,7 @@ } /* Reset DSP card */ - devpriv->iobase->channel[0].reset = 0; + writel(0, &devpriv->iobase->channel[0].reset); result = comedi_load_firmware(dev, "jr3pci.idm", jr3_download_firmware); dev_dbg(dev->hw_dev, "Firmare load %d\n", result); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/amplc_pci224.c +++ linux-3.5.0/drivers/staging/comedi/drivers/amplc_pci224.c @@ -1519,6 +1519,13 @@ dev->minor, DRIVER_NAME); return -EINVAL; } + /* + * Need to 'get' the PCI device to match the 'put' in pci224_detach(). + * TODO: Remove the pci_dev_get() and matching pci_dev_put() once + * support for manual attachment of PCI devices via pci224_attach() + * has been removed. + */ + pci_dev_get(pci_dev); return pci224_attach_common(dev, pci_dev, NULL); } --- linux-3.5.0.orig/drivers/staging/comedi/drivers/amplc_pc236.c +++ linux-3.5.0/drivers/staging/comedi/drivers/amplc_pc236.c @@ -479,7 +479,7 @@ static void pc236_detach(struct comedi_device *dev) { - if (devpriv) + if (dev->iobase) pc236_intr_disable(dev); if (dev->irq) free_irq(dev->irq, dev); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/das08.c +++ linux-3.5.0/drivers/staging/comedi/drivers/das08.c @@ -403,7 +403,7 @@ .ai = das08_ai_rinsn, .ai_nbits = 16, .ai_pg = das08_pg_none, - .ai_encoding = das08_encode12, + .ai_encoding = das08_encode16, .ao = das08jr_ao_winsn, .ao_nbits = 16, .di = das08jr_di_rbits, @@ -678,7 +678,7 @@ int chan; lsb = data[0] & 0xff; - msb = (data[0] >> 8) & 0xf; + msb = (data[0] >> 8) & 0xff; chan = CR_CHAN(insn->chanspec); --- linux-3.5.0.orig/drivers/staging/comedi/drivers/comedi_test.c +++ linux-3.5.0/drivers/staging/comedi/drivers/comedi_test.c @@ -398,7 +398,7 @@ struct comedi_subdevice *s) { devpriv->timer_running = 0; - del_timer(&devpriv->timer); + del_timer_sync(&devpriv->timer); return 0; } --- linux-3.5.0.orig/drivers/staging/wlan-ng/prism2mgmt.c +++ linux-3.5.0/drivers/staging/wlan-ng/prism2mgmt.c @@ -406,7 +406,7 @@ /* SSID */ req->ssid.status = P80211ENUM_msgitem_status_data_ok; req->ssid.data.len = le16_to_cpu(item->ssid.len); - req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_BSSID_LEN); + req->ssid.data.len = min_t(u16, req->ssid.data.len, WLAN_SSID_MAXLEN); memcpy(req->ssid.data.data, item->ssid.data, req->ssid.data.len); /* supported rates */ --- linux-3.5.0.orig/drivers/staging/media/lirc/lirc_sir.c +++ linux-3.5.0/drivers/staging/media/lirc/lirc_sir.c @@ -52,6 +52,7 @@ #include #include #include +#include #ifdef LIRC_ON_SA1100 #include #ifdef CONFIG_SA1100_COLLIE @@ -487,9 +488,11 @@ .owner = THIS_MODULE, }; +static struct platform_device *lirc_sir_dev; static int init_chrdev(void) { + driver.dev = &lirc_sir_dev->dev; driver.minor = lirc_register_driver(&driver); if (driver.minor < 0) { printk(KERN_ERR LIRC_DRIVER_NAME ": init_chrdev() failed.\n"); @@ -1215,20 +1218,71 @@ return 0; } +static int __devinit lirc_sir_probe(struct platform_device *dev) +{ + return 0; +} + +static int __devexit lirc_sir_remove(struct platform_device *dev) +{ + return 0; +} + +static struct platform_driver lirc_sir_driver = { + .probe = lirc_sir_probe, + .remove = __devexit_p(lirc_sir_remove), + .driver = { + .name = "lirc_sir", + .owner = THIS_MODULE, + }, +}; static int __init lirc_sir_init(void) { int retval; + retval = platform_driver_register(&lirc_sir_driver); + if (retval) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform driver register " + "failed!\n"); + return -ENODEV; + } + + lirc_sir_dev = platform_device_alloc("lirc_dev", 0); + if (!lirc_sir_dev) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device alloc " + "failed!\n"); + retval = -ENOMEM; + goto pdev_alloc_fail; + } + + retval = platform_device_add(lirc_sir_dev); + if (retval) { + printk(KERN_ERR LIRC_DRIVER_NAME ": Platform device add " + "failed!\n"); + retval = -ENODEV; + goto pdev_add_fail; + } + retval = init_chrdev(); if (retval < 0) - return retval; + goto fail; + retval = init_lirc_sir(); if (retval) { drop_chrdev(); - return retval; + goto fail; } + return 0; + +fail: + platform_device_del(lirc_sir_dev); +pdev_add_fail: + platform_device_put(lirc_sir_dev); +pdev_alloc_fail: + platform_driver_unregister(&lirc_sir_driver); + return retval; } static void __exit lirc_sir_exit(void) @@ -1236,6 +1290,8 @@ drop_hardware(); drop_chrdev(); drop_port(); + platform_device_unregister(lirc_sir_dev); + platform_driver_unregister(&lirc_sir_driver); printk(KERN_INFO LIRC_DRIVER_NAME ": Uninstalled.\n"); } --- linux-3.5.0.orig/drivers/staging/omapdrm/omap_gem_dmabuf.c +++ linux-3.5.0/drivers/staging/omapdrm/omap_gem_dmabuf.c @@ -207,7 +207,12 @@ obj = buffer->priv; /* is it from our device? */ if (obj->dev == dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(obj); + dma_buf_put(buffer); return obj; } } --- linux-3.5.0.orig/drivers/staging/omapdrm/omap_connector.c +++ linux-3.5.0/drivers/staging/omapdrm/omap_connector.c @@ -177,14 +177,11 @@ drm_mode_connector_update_edid_property( connector, edid); n = drm_add_edid_modes(connector, edid); - kfree(connector->display_info.raw_edid); - connector->display_info.raw_edid = edid; } else { drm_mode_connector_update_edid_property( connector, NULL); - connector->display_info.raw_edid = NULL; - kfree(edid); } + kfree(edid); } else { struct drm_display_mode *mode = drm_mode_create(dev); struct omap_video_timings timings; --- linux-3.5.0.orig/drivers/staging/rtl8712/recv_linux.c +++ linux-3.5.0/drivers/staging/rtl8712/recv_linux.c @@ -117,13 +117,8 @@ if (skb == NULL) goto _recv_indicatepkt_drop; skb->data = precv_frame->u.hdr.rx_data; -#ifdef NET_SKBUFF_DATA_USES_OFFSET - skb->tail = (sk_buff_data_t)(precv_frame->u.hdr.rx_tail - - precv_frame->u.hdr.rx_head); -#else - skb->tail = (sk_buff_data_t)precv_frame->u.hdr.rx_tail; -#endif skb->len = precv_frame->u.hdr.len; + skb_set_tail_pointer(skb, skb->len); if ((pattrib->tcpchk_valid == 1) && (pattrib->tcp_chkrpt == 1)) skb->ip_summed = CHECKSUM_UNNECESSARY; else --- linux-3.5.0.orig/drivers/staging/rtl8712/rtl8712_recv.c +++ linux-3.5.0/drivers/staging/rtl8712/rtl8712_recv.c @@ -1127,6 +1127,9 @@ recvbuf2recvframe(padapter, pskb); skb_reset_tail_pointer(pskb); pskb->len = 0; - skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + if (!skb_cloned(pskb)) + skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb); + else + consume_skb(pskb); } } --- linux-3.5.0.orig/drivers/staging/rtl8712/usb_intf.c +++ linux-3.5.0/drivers/staging/rtl8712/usb_intf.c @@ -66,6 +66,8 @@ {USB_DEVICE(0x0B05, 0x1791)}, /* 11n mode disable */ /* Belkin */ {USB_DEVICE(0x050D, 0x945A)}, + /* ISY IWL - Belkin clone */ + {USB_DEVICE(0x050D, 0x11F1)}, /* Corega */ {USB_DEVICE(0x07AA, 0x0047)}, /* D-Link */ --- linux-3.5.0.orig/drivers/staging/vt6656/wpa2.h +++ linux-3.5.0/drivers/staging/vt6656/wpa2.h @@ -45,8 +45,8 @@ } PMKIDInfo, *PPMKIDInfo; typedef struct tagSPMKIDCache { - unsigned long BSSIDInfoCount; - PMKIDInfo BSSIDInfo[MAX_PMKID_CACHE]; + u32 BSSIDInfoCount; + PMKIDInfo BSSIDInfo[MAX_PMKID_CACHE]; } SPMKIDCache, *PSPMKIDCache; --- linux-3.5.0.orig/drivers/staging/vt6656/usbpipe.c +++ linux-3.5.0/drivers/staging/vt6656/usbpipe.c @@ -168,6 +168,11 @@ if (pDevice->Flags & fMP_CONTROL_WRITES) return STATUS_FAILURE; + if (pDevice->Flags & fMP_CONTROL_READS) + return STATUS_FAILURE; + + MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES); + pDevice->sUsbCtlRequest.bRequestType = 0x40; pDevice->sUsbCtlRequest.bRequest = byRequest; pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue); @@ -182,12 +187,13 @@ ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC); if (ntStatus != 0) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control send request submission failed: %d\n", ntStatus); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "control send request submission failed: %d\n", + ntStatus); + MP_CLEAR_FLAG(pDevice, fMP_CONTROL_WRITES); return STATUS_FAILURE; } - else { - MP_SET_FLAG(pDevice, fMP_CONTROL_WRITES); - } + spin_unlock_irq(&pDevice->lock); for (ii = 0; ii <= USB_CTL_WAIT; ii ++) { @@ -227,6 +233,11 @@ if (pDevice->Flags & fMP_CONTROL_READS) return STATUS_FAILURE; + if (pDevice->Flags & fMP_CONTROL_WRITES) + return STATUS_FAILURE; + + MP_SET_FLAG(pDevice, fMP_CONTROL_READS); + pDevice->sUsbCtlRequest.bRequestType = 0xC0; pDevice->sUsbCtlRequest.bRequest = byRequest; pDevice->sUsbCtlRequest.wValue = cpu_to_le16p(&wValue); @@ -240,10 +251,11 @@ ntStatus = usb_submit_urb(pDevice->pControlURB, GFP_ATOMIC); if (ntStatus != 0) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"control request submission failed: %d\n", ntStatus); - }else { - MP_SET_FLAG(pDevice, fMP_CONTROL_READS); - } + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "control request submission failed: %d\n", ntStatus); + MP_CLEAR_FLAG(pDevice, fMP_CONTROL_READS); + return STATUS_FAILURE; + } spin_unlock_irq(&pDevice->lock); for (ii = 0; ii <= USB_CTL_WAIT; ii ++) { --- linux-3.5.0.orig/drivers/staging/vt6656/key.h +++ linux-3.5.0/drivers/staging/vt6656/key.h @@ -58,7 +58,7 @@ typedef struct tagSKeyItem { BOOL bKeyValid; - unsigned long uKeyLength; + u32 uKeyLength; BYTE abyKey[MAX_KEY_LEN]; QWORD KeyRSC; DWORD dwTSC47_16; @@ -107,7 +107,7 @@ PSKeyManagement pTable, PBYTE pbyBSSID, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -146,7 +146,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -156,7 +156,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode --- linux-3.5.0.orig/drivers/staging/vt6656/bssdb.h +++ linux-3.5.0/drivers/staging/vt6656/bssdb.h @@ -92,7 +92,6 @@ } SRSNCapObject, *PSRSNCapObject; // BSS info(AP) -#pragma pack(1) typedef struct tagKnownBSS { // BSS info BOOL bActive; --- linux-3.5.0.orig/drivers/staging/vt6656/key.c +++ linux-3.5.0/drivers/staging/vt6656/key.c @@ -223,7 +223,7 @@ PSKeyManagement pTable, PBYTE pbyBSSID, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -235,7 +235,8 @@ PSKeyItem pKey; unsigned int uKeyIdx; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetKey: %lX\n", dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Enter KeybSetKey: %X\n", dwKeyIndex); j = (MAX_KEY_TABLE-1); for (i=0;i<(MAX_KEY_TABLE-1);i++) { @@ -261,7 +262,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[i].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[i].dwGTKeyIndex, i); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[i].dwGTKeyIndex, i); } pTable->KeyTable[i].wKeyCtl &= 0xFF0F; // clear group key control filed pTable->KeyTable[i].wKeyCtl |= (byKeyDecMode << 4); @@ -302,9 +305,12 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n ", pKey->dwTSC47_16); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n ", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n ", + pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", + pKey->wTSC15_0); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n ", + pKey->dwKeyIndex); return (TRUE); } @@ -326,7 +332,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[j].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(N)[%lX]: %d\n", pTable->KeyTable[j].dwGTKeyIndex, j); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(N)[%X]: %d\n", + pTable->KeyTable[j].dwGTKeyIndex, j); } pTable->KeyTable[j].wKeyCtl &= 0xFF0F; // clear group key control filed pTable->KeyTable[j].wKeyCtl |= (byKeyDecMode << 4); @@ -367,9 +375,11 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n ", pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n ", + pKey->dwTSC47_16); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n ", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n ", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n ", + pKey->dwKeyIndex); return (TRUE); } @@ -597,7 +607,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"%x ", pTable->KeyTable[i].abyBSSID[ii]); } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"dwGTKeyIndex: %lX\n", pTable->KeyTable[i].dwGTKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"dwGTKeyIndex: %X\n", + pTable->KeyTable[i].dwGTKeyIndex); return (TRUE); } @@ -664,7 +675,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -696,7 +707,10 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex, MAX_KEY_TABLE-1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[MAX_KEY_TABLE-1].dwGTKeyIndex, + MAX_KEY_TABLE-1); } pTable->KeyTable[MAX_KEY_TABLE-1].wKeyCtl &= 0x7F00; // clear all key control filed @@ -747,9 +761,11 @@ } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"\n"); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %lx\n", pKey->dwTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwTSC47_16: %x\n", + pKey->dwTSC47_16); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->wTSC15_0: %x\n", pKey->wTSC15_0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %lx\n", pKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"pKey->dwKeyIndex: %x\n", + pKey->dwKeyIndex); return (TRUE); } @@ -775,7 +791,7 @@ void *pDeviceHandler, PSKeyManagement pTable, DWORD dwKeyIndex, - unsigned long uKeyLength, + u32 uKeyLength, PQWORD pKeyRSC, PBYTE pbyKey, BYTE byKeyDecMode @@ -787,7 +803,8 @@ PSKeyItem pKey; unsigned int uKeyIdx; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetAllGroupKey: %lX\n", dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Enter KeybSetAllGroupKey: %X\n", + dwKeyIndex); if ((dwKeyIndex & PAIRWISE_KEY) != 0) { // Pairwise key @@ -804,7 +821,9 @@ if ((dwKeyIndex & TRANSMIT_KEY) != 0) { // Group transmit key pTable->KeyTable[i].dwGTKeyIndex = dwKeyIndex; - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Group transmit key(R)[%lX]: %d\n", pTable->KeyTable[i].dwGTKeyIndex, i); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO + "Group transmit key(R)[%X]: %d\n", + pTable->KeyTable[i].dwGTKeyIndex, i); } pTable->KeyTable[i].wKeyCtl &= 0xFF0F; // clear group key control filed --- linux-3.5.0.orig/drivers/staging/vt6656/wcmd.c +++ linux-3.5.0/drivers/staging/vt6656/wcmd.c @@ -316,17 +316,19 @@ return pTxPacket; } -void vCommandTimerWait(void *hDeviceContext, unsigned int MSecond) +void vCommandTimerWait(void *hDeviceContext, unsigned long MSecond) { - PSDevice pDevice = (PSDevice)hDeviceContext; + PSDevice pDevice = (PSDevice)hDeviceContext; - init_timer(&pDevice->sTimerCommand); - pDevice->sTimerCommand.data = (unsigned long)pDevice; - pDevice->sTimerCommand.function = (TimerFunction)vRunCommand; - // RUN_AT :1 msec ~= (HZ/1024) - pDevice->sTimerCommand.expires = (unsigned int)RUN_AT((MSecond * HZ) >> 10); - add_timer(&pDevice->sTimerCommand); - return; + init_timer(&pDevice->sTimerCommand); + + pDevice->sTimerCommand.data = (unsigned long)pDevice; + pDevice->sTimerCommand.function = (TimerFunction)vRunCommand; + pDevice->sTimerCommand.expires = RUN_AT((MSecond * HZ) / 1000); + + add_timer(&pDevice->sTimerCommand); + + return; } void vRunCommand(void *hDeviceContext) --- linux-3.5.0.orig/drivers/staging/vt6656/iowpa.h +++ linux-3.5.0/drivers/staging/vt6656/iowpa.h @@ -67,12 +67,11 @@ -#pragma pack(1) typedef struct viawget_wpa_header { u8 type; u16 req_ie_len; u16 resp_ie_len; -} viawget_wpa_header; +} __packed viawget_wpa_header; struct viawget_wpa_param { u32 cmd; @@ -113,9 +112,8 @@ u8 *buf; } scan_results; } u; -}; +} __packed; -#pragma pack(1) struct viawget_scan_result { u8 bssid[6]; u8 ssid[32]; @@ -130,7 +128,7 @@ int noise; int level; int maxrate; -}; +} __packed; /*--------------------- Export Classes ----------------------------*/ --- linux-3.5.0.orig/drivers/staging/vt6656/rxtx.c +++ linux-3.5.0/drivers/staging/vt6656/rxtx.c @@ -377,7 +377,8 @@ *(pbyIVHead+3) = (BYTE)(((pDevice->byKeyIndex << 6) & 0xc0) | 0x20); // 0x20 is ExtIV // Append IV&ExtIV after Mac Header *pdwExtIV = cpu_to_le32(pTransmitKey->dwTSC47_16); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"vFillTxKey()---- pdwExtIV: %lx\n", *pdwExtIV); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"vFillTxKey()---- pdwExtIV: %x\n", + *pdwExtIV); } else if (pTransmitKey->byCipherSuite == KEY_CTL_CCMP) { pTransmitKey->wTSC15_0++; @@ -1701,7 +1702,7 @@ // 802.1H if (ntohs(psEthHeader->wType) > ETH_DATA_LEN) { if (pDevice->dwDiagRefCount == 0) { - if ((psEthHeader->wType == cpu_to_le16(ETH_P_IPX)) || + if ((psEthHeader->wType == cpu_to_be16(ETH_P_IPX)) || (psEthHeader->wType == cpu_to_le16(0xF380))) { memcpy((PBYTE) (pbyPayloadHead), abySNAP_Bridgetunnel, 6); @@ -1753,7 +1754,8 @@ MIC_vAppend((PBYTE)&(psEthHeader->abyDstAddr[0]), 12); dwMIC_Priority = 0; MIC_vAppend((PBYTE)&dwMIC_Priority, 4); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC KEY: %lX, %lX\n", dwMICKey0, dwMICKey1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC KEY: %X, %X\n", + dwMICKey0, dwMICKey1); /////////////////////////////////////////////////////////////////// @@ -2635,7 +2637,8 @@ MIC_vAppend((PBYTE)&(sEthHeader.abyDstAddr[0]), 12); dwMIC_Priority = 0; MIC_vAppend((PBYTE)&dwMIC_Priority, 4); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"DMA0_tx_8021:MIC KEY: %lX, %lX\n", dwMICKey0, dwMICKey1); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"DMA0_tx_8021:MIC KEY:"\ + " %X, %X\n", dwMICKey0, dwMICKey1); uLength = cbHeaderSize + cbMacHdLen + uPadding + cbIVlen; @@ -2655,7 +2658,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"uLength: %d, %d\n", uLength, cbFrameBodySize); DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"cbReqCount:%d, %d, %d, %d\n", cbReqCount, cbHeaderSize, uPadding, cbIVlen); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC:%lx, %lx\n", *pdwMIC_L, *pdwMIC_R); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"MIC:%x, %x\n", + *pdwMIC_L, *pdwMIC_R); } @@ -2840,10 +2844,10 @@ Packet_Type = skb->data[ETH_HLEN+1]; Descriptor_type = skb->data[ETH_HLEN+1+1+2]; Key_info = (skb->data[ETH_HLEN+1+1+2+1] << 8)|(skb->data[ETH_HLEN+1+1+2+2]); - if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { - /* 802.1x OR eapol-key challenge frame transfer */ - if (((Protocol_Version == 1) || (Protocol_Version == 2)) && - (Packet_Type == 3)) { + if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { + /* 802.1x OR eapol-key challenge frame transfer */ + if (((Protocol_Version == 1) || (Protocol_Version == 2)) && + (Packet_Type == 3)) { bTxeapol_key = TRUE; if(!(Key_info & BIT3) && //WPA or RSN group-key challenge (Key_info & BIT8) && (Key_info & BIT9)) { //send 2/2 key @@ -2989,19 +2993,19 @@ } } - if (pDevice->sTxEthHeader.wType == cpu_to_le16(ETH_P_PAE)) { - if (pDevice->byBBType != BB_TYPE_11A) { - pDevice->wCurrentRate = RATE_1M; - pDevice->byACKRate = RATE_1M; - pDevice->byTopCCKBasicRate = RATE_1M; - pDevice->byTopOFDMBasicRate = RATE_6M; - } else { - pDevice->wCurrentRate = RATE_6M; - pDevice->byACKRate = RATE_6M; - pDevice->byTopCCKBasicRate = RATE_1M; - pDevice->byTopOFDMBasicRate = RATE_6M; - } - } + if (pDevice->sTxEthHeader.wType == cpu_to_be16(ETH_P_PAE)) { + if (pDevice->byBBType != BB_TYPE_11A) { + pDevice->wCurrentRate = RATE_1M; + pDevice->byACKRate = RATE_1M; + pDevice->byTopCCKBasicRate = RATE_1M; + pDevice->byTopOFDMBasicRate = RATE_6M; + } else { + pDevice->wCurrentRate = RATE_6M; + pDevice->byACKRate = RATE_6M; + pDevice->byTopCCKBasicRate = RATE_1M; + pDevice->byTopOFDMBasicRate = RATE_6M; + } + } DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "dma_tx: pDevice->wCurrentRate = %d\n", @@ -3017,7 +3021,7 @@ if (bNeedEncryption == TRUE) { DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ntohs Pkt Type=%04x\n", ntohs(pDevice->sTxEthHeader.wType)); - if ((pDevice->sTxEthHeader.wType) == cpu_to_le16(ETH_P_PAE)) { + if ((pDevice->sTxEthHeader.wType) == cpu_to_be16(ETH_P_PAE)) { bNeedEncryption = FALSE; DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Pkt Type=%04x\n", (pDevice->sTxEthHeader.wType)); if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_ASSOC)) { @@ -3029,7 +3033,8 @@ DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"error: KEY is GTK!!~~\n"); } else { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%lX]\n", pTransmitKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%X]\n", + pTransmitKey->dwKeyIndex); bNeedEncryption = TRUE; } } @@ -3043,7 +3048,8 @@ if (pDevice->bEnableHostWEP) { if ((uNodeIndex != 0) && (pMgmt->sNodeDBTable[uNodeIndex].dwKeyIndex & PAIRWISE_KEY)) { - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%lX]\n", pTransmitKey->dwKeyIndex); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Find PTK [%X]\n", + pTransmitKey->dwKeyIndex); bNeedEncryption = TRUE; } } --- linux-3.5.0.orig/drivers/staging/vt6656/main_usb.c +++ linux-3.5.0/drivers/staging/vt6656/main_usb.c @@ -222,7 +222,7 @@ // Static vars definitions // -static struct usb_device_id vt6656_table[] __devinitdata = { +static struct usb_device_id vt6656_table[] = { {USB_DEVICE(VNT_USB_VENDOR_ID, VNT_USB_PRODUCT_ID)}, {} }; --- linux-3.5.0.orig/drivers/staging/vt6656/dpc.c +++ linux-3.5.0/drivers/staging/vt6656/dpc.c @@ -200,7 +200,7 @@ } else if (!compare_ether_addr(pbyRxBuffer, &pDevice->abySNAP_RFC1042[0])) { cbHeaderSize += 6; pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); - if ((*pwType == cpu_to_le16(ETH_P_IPX)) || + if ((*pwType == cpu_to_be16(ETH_P_IPX)) || (*pwType == cpu_to_le16(0xF380))) { cbHeaderSize -= 8; pwType = (PWORD) (pbyRxBufferAddr + cbHeaderSize); @@ -1238,7 +1238,7 @@ PayloadLen -= (WLAN_HDR_ADDR3_LEN + 8 + 4); // 24 is 802.11 header, 8 is IV&ExtIV, 4 is crc *pdwRxTSC47_16 = cpu_to_le32(*(PDWORD)(pbyIV + 4)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %lx\n",*pdwRxTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %x\n", *pdwRxTSC47_16); if (byDecMode == KEY_CTL_TKIP) { *pwRxTSC15_0 = cpu_to_le16(MAKEWORD(*(pbyIV+2), *pbyIV)); } else { @@ -1349,7 +1349,7 @@ PayloadLen -= (WLAN_HDR_ADDR3_LEN + 8 + 4); // 24 is 802.11 header, 8 is IV&ExtIV, 4 is crc *pdwRxTSC47_16 = cpu_to_le32(*(PDWORD)(pbyIV + 4)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %lx\n",*pdwRxTSC47_16); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"ExtIV: %x\n", *pdwRxTSC47_16); if (byDecMode == KEY_CTL_TKIP) { *pwRxTSC15_0 = cpu_to_le16(MAKEWORD(*(pbyIV+2), *pbyIV)); --- linux-3.5.0.orig/drivers/staging/vt6656/ttype.h +++ linux-3.5.0/drivers/staging/vt6656/ttype.h @@ -29,6 +29,8 @@ #ifndef __TTYPE_H__ #define __TTYPE_H__ +#include + /******* Common definitions and typedefs ***********************************/ typedef int BOOL; @@ -42,17 +44,17 @@ /****** Simple typedefs ***************************************************/ -typedef unsigned char BYTE; // 8-bit -typedef unsigned short WORD; // 16-bit -typedef unsigned long DWORD; // 32-bit +typedef u8 BYTE; +typedef u16 WORD; +typedef u32 DWORD; // QWORD is for those situation that we want // an 8-byte-aligned 8 byte long structure // which is NOT really a floating point number. typedef union tagUQuadWord { struct { - DWORD dwLowDword; - DWORD dwHighDword; + u32 dwLowDword; + u32 dwHighDword; } u; double DoNotUseThisField; } UQuadWord; @@ -60,8 +62,8 @@ /****** Common pointer types ***********************************************/ -typedef unsigned long ULONG_PTR; // 32-bit -typedef unsigned long DWORD_PTR; // 32-bit +typedef u32 ULONG_PTR; +typedef u32 DWORD_PTR; // boolean pointer --- linux-3.5.0.orig/drivers/staging/vt6656/rf.c +++ linux-3.5.0/drivers/staging/vt6656/rf.c @@ -769,6 +769,9 @@ return TRUE; } + if (uCH == 0) + return -EINVAL; + switch (uRATE) { case RATE_1M: case RATE_2M: --- linux-3.5.0.orig/drivers/staging/vt6656/mac.c +++ linux-3.5.0/drivers/staging/vt6656/mac.c @@ -260,7 +260,8 @@ dwData1 <<= 16; dwData1 |= MAKEWORD(*(pbyAddr+4), *(pbyAddr+5)); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"1. wOffset: %d, Data: %lX, KeyCtl:%X\n", wOffset, dwData1, wKeyCtl); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"1. wOffset: %d, Data: %X,"\ + " KeyCtl:%X\n", wOffset, dwData1, wKeyCtl); //VNSvOutPortW(dwIoBase + MAC_REG_MISCFFNDEX, wOffset); //VNSvOutPortD(dwIoBase + MAC_REG_MISCFFDATA, dwData); @@ -277,7 +278,8 @@ dwData2 <<= 8; dwData2 |= *(pbyAddr+0); - DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"2. wOffset: %d, Data: %lX\n", wOffset, dwData2); + DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"2. wOffset: %d, Data: %X\n", + wOffset, dwData2); //VNSvOutPortW(dwIoBase + MAC_REG_MISCFFNDEX, wOffset); //VNSvOutPortD(dwIoBase + MAC_REG_MISCFFDATA, dwData); --- linux-3.5.0.orig/drivers/staging/vt6656/iocmd.h +++ linux-3.5.0/drivers/staging/vt6656/iocmd.h @@ -95,13 +95,12 @@ // Ioctl interface structure // Command structure // -#pragma pack(1) typedef struct tagSCmdRequest { u8 name[16]; void *data; u16 wResult; u16 wCmdCode; -} SCmdRequest, *PSCmdRequest; +} __packed SCmdRequest, *PSCmdRequest; // // Scan @@ -111,7 +110,7 @@ u8 ssid[SSID_MAXLEN + 2]; -} SCmdScan, *PSCmdScan; +} __packed SCmdScan, *PSCmdScan; // // BSS Join @@ -126,7 +125,7 @@ BOOL bPSEnable; BOOL bShareKeyAuth; -} SCmdBSSJoin, *PSCmdBSSJoin; +} __packed SCmdBSSJoin, *PSCmdBSSJoin; // // Zonetype Setting @@ -137,7 +136,7 @@ BOOL bWrite; WZONETYPE ZoneType; -} SCmdZoneTypeSet, *PSCmdZoneTypeSet; +} __packed SCmdZoneTypeSet, *PSCmdZoneTypeSet; typedef struct tagSWPAResult { char ifname[100]; @@ -145,7 +144,7 @@ u8 key_mgmt; u8 eap_type; BOOL authenticated; -} SWPAResult, *PSWPAResult; +} __packed SWPAResult, *PSWPAResult; typedef struct tagSCmdStartAP { @@ -157,7 +156,7 @@ BOOL bShareKeyAuth; u8 byBasicRate; -} SCmdStartAP, *PSCmdStartAP; +} __packed SCmdStartAP, *PSCmdStartAP; typedef struct tagSCmdSetWEP { @@ -167,7 +166,7 @@ BOOL bWepKeyAvailable[WEP_NKEYS]; u32 auWepKeyLength[WEP_NKEYS]; -} SCmdSetWEP, *PSCmdSetWEP; +} __packed SCmdSetWEP, *PSCmdSetWEP; typedef struct tagSBSSIDItem { @@ -180,14 +179,14 @@ BOOL bWEPOn; u32 uRSSI; -} SBSSIDItem; +} __packed SBSSIDItem; typedef struct tagSBSSIDList { u32 uItem; SBSSIDItem sBSSIDList[0]; -} SBSSIDList, *PSBSSIDList; +} __packed SBSSIDList, *PSBSSIDList; typedef struct tagSNodeItem { @@ -208,7 +207,7 @@ u32 uTxAttempts; u16 wFailureRatio; -} SNodeItem; +} __packed SNodeItem; typedef struct tagSNodeList { @@ -216,7 +215,7 @@ u32 uItem; SNodeItem sNodeList[0]; -} SNodeList, *PSNodeList; +} __packed SNodeList, *PSNodeList; typedef struct tagSCmdLinkStatus { @@ -229,7 +228,7 @@ u32 uChannel; u32 uLinkRate; -} SCmdLinkStatus, *PSCmdLinkStatus; +} __packed SCmdLinkStatus, *PSCmdLinkStatus; // // 802.11 counter @@ -247,7 +246,7 @@ u32 ReceivedFragmentCount; u32 MulticastReceivedFrameCount; u32 FCSErrorCount; -} SDot11MIBCount, *PSDot11MIBCount; +} __packed SDot11MIBCount, *PSDot11MIBCount; @@ -355,13 +354,13 @@ u32 ullTxBroadcastBytes[2]; u32 ullTxMulticastBytes[2]; u32 ullTxDirectedBytes[2]; -} SStatMIBCount, *PSStatMIBCount; +} __packed SStatMIBCount, *PSStatMIBCount; typedef struct tagSCmdValue { u32 dwValue; -} SCmdValue, *PSCmdValue; +} __packed SCmdValue, *PSCmdValue; // // hostapd & viawget ioctl related @@ -431,7 +430,7 @@ u8 ssid[32]; } scan_req; } u; -}; +} __packed; /*--------------------- Export Classes ----------------------------*/ --- linux-3.5.0.orig/drivers/staging/vt6656/int.h +++ linux-3.5.0/drivers/staging/vt6656/int.h @@ -34,7 +34,6 @@ #include "device.h" /*--------------------- Export Definitions -------------------------*/ -#pragma pack(1) typedef struct tagSINTData { BYTE byTSR0; BYTE byPkt0; --- linux-3.5.0.orig/drivers/staging/zsmalloc/zsmalloc-main.c +++ linux-3.5.0/drivers/staging/zsmalloc/zsmalloc-main.c @@ -425,12 +425,6 @@ } -/* - * If this becomes a separate module, register zs_init() with - * module_init(), zs_exit with module_exit(), and remove zs_initialized -*/ -static int zs_initialized; - static int zs_cpu_notifier(struct notifier_block *nb, unsigned long action, void *pcpu) { @@ -489,7 +483,7 @@ struct zs_pool *zs_create_pool(const char *name, gfp_t flags) { - int i, error, ovhd_size; + int i, ovhd_size; struct zs_pool *pool; if (!name) @@ -516,28 +510,9 @@ } - /* - * If this becomes a separate module, register zs_init with - * module_init, and remove this block - */ - if (!zs_initialized) { - error = zs_init(); - if (error) - goto cleanup; - zs_initialized = 1; - } - pool->flags = flags; pool->name = name; - error = 0; /* Success */ - -cleanup: - if (error) { - zs_destroy_pool(pool); - pool = NULL; - } - return pool; } EXPORT_SYMBOL_GPL(zs_create_pool); @@ -753,3 +728,9 @@ return npages << PAGE_SHIFT; } EXPORT_SYMBOL_GPL(zs_get_total_size_bytes); + +module_init(zs_init); +module_exit(zs_exit); + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_AUTHOR("Nitin Gupta "); --- linux-3.5.0.orig/drivers/staging/winbond/wbusb.c +++ linux-3.5.0/drivers/staging/winbond/wbusb.c @@ -25,7 +25,7 @@ MODULE_LICENSE("GPL"); MODULE_VERSION("0.1"); -static const struct usb_device_id wb35_table[] __devinitconst = { +static const struct usb_device_id wb35_table[] = { { USB_DEVICE(0x0416, 0x0035) }, { USB_DEVICE(0x18E8, 0x6201) }, { USB_DEVICE(0x18E8, 0x6206) }, --- linux-3.5.0.orig/drivers/staging/telephony/ixj.c +++ linux-3.5.0/drivers/staging/telephony/ixj.c @@ -3190,12 +3190,12 @@ ixj_fsk_alloc(j); - strcpy(sdmf1, j->cid_send.month); - strcat(sdmf1, j->cid_send.day); - strcat(sdmf1, j->cid_send.hour); - strcat(sdmf1, j->cid_send.min); - strcpy(sdmf2, j->cid_send.number); - strcpy(sdmf3, j->cid_send.name); + strlcpy(sdmf1, j->cid_send.month, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.day, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.hour, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.min, sizeof(sdmf1)); + strlcpy(sdmf2, j->cid_send.number, sizeof(sdmf2)); + strlcpy(sdmf3, j->cid_send.name, sizeof(sdmf3)); len1 = strlen(sdmf1); len2 = strlen(sdmf2); @@ -3340,12 +3340,12 @@ ixj_pre_cid(j); } j->flags.cidcw_ack = 0; - strcpy(sdmf1, j->cid_send.month); - strcat(sdmf1, j->cid_send.day); - strcat(sdmf1, j->cid_send.hour); - strcat(sdmf1, j->cid_send.min); - strcpy(sdmf2, j->cid_send.number); - strcpy(sdmf3, j->cid_send.name); + strlcpy(sdmf1, j->cid_send.month, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.day, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.hour, sizeof(sdmf1)); + strlcat(sdmf1, j->cid_send.min, sizeof(sdmf1)); + strlcpy(sdmf2, j->cid_send.number, sizeof(sdmf2)); + strlcpy(sdmf3, j->cid_send.name, sizeof(sdmf3)); len1 = strlen(sdmf1); len2 = strlen(sdmf2); --- linux-3.5.0.orig/drivers/md/dm-thin.c +++ linux-3.5.0/drivers/md/dm-thin.c @@ -19,7 +19,7 @@ /* * Tunable constants */ -#define ENDIO_HOOK_POOL_SIZE 10240 +#define ENDIO_HOOK_POOL_SIZE 1024 #define DEFERRED_SET_SIZE 64 #define MAPPING_POOL_SIZE 1024 #define PRISON_CELLS 1024 @@ -859,7 +859,7 @@ if (m->err) { cell_error(m->cell); - return; + goto out; } /* @@ -871,7 +871,7 @@ if (r) { DMERR("dm_thin_insert_block() failed"); cell_error(m->cell); - return; + goto out; } /* @@ -886,6 +886,7 @@ } else cell_defer(tc, m->cell, m->data_block); +out: list_del(&m->list); mempool_free(m, tc->pool->mapping_pool); } --- linux-3.5.0.orig/drivers/md/dm-table.c +++ linux-3.5.0/drivers/md/dm-table.c @@ -1351,17 +1351,25 @@ return q && blk_queue_nonrot(q); } -static bool dm_table_is_nonrot(struct dm_table *t) +static int device_is_not_random(struct dm_target *ti, struct dm_dev *dev, + sector_t start, sector_t len, void *data) +{ + struct request_queue *q = bdev_get_queue(dev->bdev); + + return q && !blk_queue_add_random(q); +} + +static bool dm_table_all_devices_attribute(struct dm_table *t, + iterate_devices_callout_fn func) { struct dm_target *ti; unsigned i = 0; - /* Ensure that all underlying device are non-rotational. */ while (i < dm_table_get_num_targets(t)) { ti = dm_table_get_target(t, i++); if (!ti->type->iterate_devices || - !ti->type->iterate_devices(ti, device_is_nonrot, NULL)) + !ti->type->iterate_devices(ti, func, NULL)) return 0; } @@ -1393,7 +1401,8 @@ if (!dm_table_discard_zeroes_data(t)) q->limits.discard_zeroes_data = 0; - if (dm_table_is_nonrot(t)) + /* Ensure that all underlying devices are non-rotational. */ + if (dm_table_all_devices_attribute(t, device_is_nonrot)) queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); else queue_flag_clear_unlocked(QUEUE_FLAG_NONROT, q); @@ -1401,6 +1410,15 @@ dm_table_set_integrity(t); /* + * Determine whether or not this queue's I/O timings contribute + * to the entropy pool, Only request-based targets use this. + * Clear QUEUE_FLAG_ADD_RANDOM if any underlying device does not + * have it set. + */ + if (blk_queue_add_random(q) && dm_table_all_devices_attribute(t, device_is_not_random)) + queue_flag_clear_unlocked(QUEUE_FLAG_ADD_RANDOM, q); + + /* * QUEUE_FLAG_STACKABLE must be set after all queue settings are * visible to other CPUs because, once the flag is set, incoming bios * are processed by request-based dm, which refers to the queue --- linux-3.5.0.orig/drivers/md/dm-ioctl.c +++ linux-3.5.0/drivers/md/dm-ioctl.c @@ -1563,6 +1563,14 @@ if (copy_from_user(dmi, user, tmp.data_size)) goto bad; + /* + * Abort if something changed the ioctl data while it was being copied. + */ + if (dmi->data_size != tmp.data_size) { + DMERR("rejecting ioctl: data size modified while processing parameters"); + goto bad; + } + /* Wipe the user buffer so we do not return it to userspace */ if (secure_data && clear_user(user, tmp.data_size)) goto bad; --- linux-3.5.0.orig/drivers/md/raid5.c +++ linux-3.5.0/drivers/md/raid5.c @@ -380,6 +380,8 @@ degraded = 0; for (i = 0; i < conf->previous_raid_disks; i++) { struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); + if (rdev && test_bit(Faulty, &rdev->flags)) + rdev = rcu_dereference(conf->disks[i].replacement); if (!rdev || test_bit(Faulty, &rdev->flags)) degraded++; else if (test_bit(In_sync, &rdev->flags)) @@ -404,6 +406,8 @@ degraded2 = 0; for (i = 0; i < conf->raid_disks; i++) { struct md_rdev *rdev = rcu_dereference(conf->disks[i].rdev); + if (rdev && test_bit(Faulty, &rdev->flags)) + rdev = rcu_dereference(conf->disks[i].replacement); if (!rdev || test_bit(Faulty, &rdev->flags)) degraded2++; else if (test_bit(In_sync, &rdev->flags)) --- linux-3.5.0.orig/drivers/md/dm-mpath.c +++ linux-3.5.0/drivers/md/dm-mpath.c @@ -1520,6 +1520,7 @@ unsigned long arg) { struct multipath *m = ti->private; + struct pgpath *pgpath; struct block_device *bdev; fmode_t mode; unsigned long flags; @@ -1535,12 +1536,14 @@ if (!m->current_pgpath) __choose_pgpath(m, 0); - if (m->current_pgpath) { - bdev = m->current_pgpath->path.dev->bdev; - mode = m->current_pgpath->path.dev->mode; + pgpath = m->current_pgpath; + + if (pgpath) { + bdev = pgpath->path.dev->bdev; + mode = pgpath->path.dev->mode; } - if (m->queue_io) + if ((pgpath && m->queue_io) || (!pgpath && m->queue_if_no_path)) r = -EAGAIN; else if (!bdev) r = -EIO; --- linux-3.5.0.orig/drivers/md/dm.c +++ linux-3.5.0/drivers/md/dm.c @@ -754,8 +754,14 @@ if (!md_in_flight(md)) wake_up(&md->wait); + /* + * Run this off this callpath, as drivers could invoke end_io while + * inside their request_fn (and holding the queue lock). Calling + * back into ->request_fn() could deadlock attempting to grab the + * queue lock again. + */ if (run_queue) - blk_run_queue(md->queue); + blk_run_queue_async(md->queue); /* * dm_put() must be at the end of this function. See the comment above @@ -865,10 +871,14 @@ { int r = error; struct dm_rq_target_io *tio = clone->end_io_data; - dm_request_endio_fn rq_end_io = tio->ti->type->rq_end_io; + dm_request_endio_fn rq_end_io = NULL; - if (mapped && rq_end_io) - r = rq_end_io(tio->ti, clone, error, &tio->info); + if (tio->ti) { + rq_end_io = tio->ti->type->rq_end_io; + + if (mapped && rq_end_io) + r = rq_end_io(tio->ti, clone, error, &tio->info); + } if (r <= 0) /* The target wants to complete the I/O */ @@ -1566,15 +1576,6 @@ int r, requeued = 0; struct dm_rq_target_io *tio = clone->end_io_data; - /* - * Hold the md reference here for the in-flight I/O. - * We can't rely on the reference count by device opener, - * because the device may be closed during the request completion - * when all bios are completed. - * See the comment in rq_completed() too. - */ - dm_get(md); - tio->ti = ti; r = ti->type->map_rq(ti, clone, &tio->info); switch (r) { @@ -1606,6 +1607,26 @@ return requeued; } +static struct request *dm_start_request(struct mapped_device *md, struct request *orig) +{ + struct request *clone; + + blk_start_request(orig); + clone = orig->special; + atomic_inc(&md->pending[rq_data_dir(clone)]); + + /* + * Hold the md reference here for the in-flight I/O. + * We can't rely on the reference count by device opener, + * because the device may be closed during the request completion + * when all bios are completed. + * See the comment in rq_completed() too. + */ + dm_get(md); + + return clone; +} + /* * q->request_fn for request-based dm. * Called with the queue lock held. @@ -1635,14 +1656,21 @@ pos = blk_rq_pos(rq); ti = dm_table_find_target(map, pos); - BUG_ON(!dm_target_is_valid(ti)); + if (!dm_target_is_valid(ti)) { + /* + * Must perform setup, that dm_done() requires, + * before calling dm_kill_unmapped_request + */ + DMERR_LIMIT("request attempted access beyond the end of device"); + clone = dm_start_request(md, rq); + dm_kill_unmapped_request(clone, -EIO); + continue; + } if (ti->type->busy && ti->type->busy(ti)) goto delay_and_out; - blk_start_request(rq); - clone = rq->special; - atomic_inc(&md->pending[rq_data_dir(clone)]); + clone = dm_start_request(md, rq); spin_unlock(q->queue_lock); if (map_request(ti, clone, md)) @@ -1662,8 +1690,6 @@ blk_delay_queue(q, HZ / 10); out: dm_table_put(map); - - return; } int dm_underlying_device_busy(struct request_queue *q) @@ -2653,6 +2679,7 @@ { return md->disk; } +EXPORT_SYMBOL_GPL(dm_disk); struct kobject *dm_kobject(struct mapped_device *md) { --- linux-3.5.0.orig/drivers/md/raid10.c +++ linux-3.5.0/drivers/md/raid10.c @@ -485,7 +485,7 @@ */ one_write_done(r10_bio); if (dec_rdev) - rdev_dec_pending(conf->mirrors[dev].rdev, conf->mddev); + rdev_dec_pending(rdev, conf->mddev); } /* @@ -645,7 +645,11 @@ max = biovec->bv_len; if (mddev->merge_check_needed) { - struct r10bio r10_bio; + struct { + struct r10bio r10_bio; + struct r10dev devs[conf->copies]; + } on_stack; + struct r10bio *r10_bio = &on_stack.r10_bio; int s; if (conf->reshape_progress != MaxSector) { /* Cannot give any guidance during reshape */ @@ -653,18 +657,18 @@ return biovec->bv_len; return 0; } - r10_bio.sector = sector; - raid10_find_phys(conf, &r10_bio); + r10_bio->sector = sector; + raid10_find_phys(conf, r10_bio); rcu_read_lock(); for (s = 0; s < conf->copies; s++) { - int disk = r10_bio.devs[s].devnum; + int disk = r10_bio->devs[s].devnum; struct md_rdev *rdev = rcu_dereference( conf->mirrors[disk].rdev); if (rdev && !test_bit(Faulty, &rdev->flags)) { struct request_queue *q = bdev_get_queue(rdev->bdev); if (q->merge_bvec_fn) { - bvm->bi_sector = r10_bio.devs[s].addr + bvm->bi_sector = r10_bio->devs[s].addr + rdev->data_offset; bvm->bi_bdev = rdev->bdev; max = min(max, q->merge_bvec_fn( @@ -676,7 +680,7 @@ struct request_queue *q = bdev_get_queue(rdev->bdev); if (q->merge_bvec_fn) { - bvm->bi_sector = r10_bio.devs[s].addr + bvm->bi_sector = r10_bio->devs[s].addr + rdev->data_offset; bvm->bi_bdev = rdev->bdev; max = min(max, q->merge_bvec_fn( @@ -1263,18 +1267,21 @@ blocked_rdev = rrdev; break; } + if (rdev && (test_bit(Faulty, &rdev->flags) + || test_bit(Unmerged, &rdev->flags))) + rdev = NULL; if (rrdev && (test_bit(Faulty, &rrdev->flags) || test_bit(Unmerged, &rrdev->flags))) rrdev = NULL; r10_bio->devs[i].bio = NULL; r10_bio->devs[i].repl_bio = NULL; - if (!rdev || test_bit(Faulty, &rdev->flags) || - test_bit(Unmerged, &rdev->flags)) { + + if (!rdev && !rrdev) { set_bit(R10BIO_Degraded, &r10_bio->state); continue; } - if (test_bit(WriteErrorSeen, &rdev->flags)) { + if (rdev && test_bit(WriteErrorSeen, &rdev->flags)) { sector_t first_bad; sector_t dev_sector = r10_bio->devs[i].addr; int bad_sectors; @@ -1316,8 +1323,10 @@ max_sectors = good_sectors; } } - r10_bio->devs[i].bio = bio; - atomic_inc(&rdev->nr_pending); + if (rdev) { + r10_bio->devs[i].bio = bio; + atomic_inc(&rdev->nr_pending); + } if (rrdev) { r10_bio->devs[i].repl_bio = bio; atomic_inc(&rrdev->nr_pending); @@ -1373,58 +1382,58 @@ for (i = 0; i < conf->copies; i++) { struct bio *mbio; int d = r10_bio->devs[i].devnum; - if (!r10_bio->devs[i].bio) - continue; - - mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); - md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].bio = mbio; - - mbio->bi_sector = (r10_bio->devs[i].addr+ - choose_data_offset(r10_bio, - conf->mirrors[d].rdev)); - mbio->bi_bdev = conf->mirrors[d].rdev->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; - - atomic_inc(&r10_bio->remaining); - spin_lock_irqsave(&conf->device_lock, flags); - bio_list_add(&conf->pending_bio_list, mbio); - conf->pending_count++; - spin_unlock_irqrestore(&conf->device_lock, flags); - if (!mddev_check_plugged(mddev)) - md_wakeup_thread(mddev->thread); - - if (!r10_bio->devs[i].repl_bio) - continue; + if (r10_bio->devs[i].bio) { + struct md_rdev *rdev = conf->mirrors[d].rdev; + mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); + md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr+ + choose_data_offset(r10_bio, + rdev)); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw = WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; - mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); - md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, - max_sectors); - r10_bio->devs[i].repl_bio = mbio; + atomic_inc(&r10_bio->remaining); + spin_lock_irqsave(&conf->device_lock, flags); + bio_list_add(&conf->pending_bio_list, mbio); + conf->pending_count++; + spin_unlock_irqrestore(&conf->device_lock, flags); + if (!mddev_check_plugged(mddev)) + md_wakeup_thread(mddev->thread); + } - /* We are actively writing to the original device - * so it cannot disappear, so the replacement cannot - * become NULL here - */ - mbio->bi_sector = (r10_bio->devs[i].addr + - choose_data_offset( - r10_bio, - conf->mirrors[d].replacement)); - mbio->bi_bdev = conf->mirrors[d].replacement->bdev; - mbio->bi_end_io = raid10_end_write_request; - mbio->bi_rw = WRITE | do_sync | do_fua; - mbio->bi_private = r10_bio; + if (r10_bio->devs[i].repl_bio) { + struct md_rdev *rdev = conf->mirrors[d].replacement; + if (rdev == NULL) { + /* Replacement just got moved to main 'rdev' */ + smp_mb(); + rdev = conf->mirrors[d].rdev; + } + mbio = bio_clone_mddev(bio, GFP_NOIO, mddev); + md_trim_bio(mbio, r10_bio->sector - bio->bi_sector, + max_sectors); + r10_bio->devs[i].repl_bio = mbio; + + mbio->bi_sector = (r10_bio->devs[i].addr + + choose_data_offset( + r10_bio, rdev)); + mbio->bi_bdev = rdev->bdev; + mbio->bi_end_io = raid10_end_write_request; + mbio->bi_rw = WRITE | do_sync | do_fua; + mbio->bi_private = r10_bio; - atomic_inc(&r10_bio->remaining); - spin_lock_irqsave(&conf->device_lock, flags); - bio_list_add(&conf->pending_bio_list, mbio); - conf->pending_count++; - spin_unlock_irqrestore(&conf->device_lock, flags); - if (!mddev_check_plugged(mddev)) - md_wakeup_thread(mddev->thread); + atomic_inc(&r10_bio->remaining); + spin_lock_irqsave(&conf->device_lock, flags); + bio_list_add(&conf->pending_bio_list, mbio); + conf->pending_count++; + spin_unlock_irqrestore(&conf->device_lock, flags); + if (!mddev_check_plugged(mddev)) + md_wakeup_thread(mddev->thread); + } } /* Don't remove the bias on 'remaining' (one_write_done) until @@ -1488,14 +1497,16 @@ do { int n = conf->copies; int cnt = 0; + int this = first; while (n--) { - if (conf->mirrors[first].rdev && - first != ignore) + if (conf->mirrors[this].rdev && + this != ignore) cnt++; - first = (first+1) % geo->raid_disks; + this = (this+1) % geo->raid_disks; } if (cnt == 0) return 0; + first = (first + geo->near_copies) % geo->raid_disks; } while (first != 0); return 1; } @@ -3133,7 +3144,7 @@ else { bad_sectors -= (sector - first_bad); if (max_sync > bad_sectors) - max_sync = max_sync; + max_sync = bad_sectors; continue; } } @@ -4389,14 +4400,18 @@ { /* Use sync reads to get the blocks from somewhere else */ int sectors = r10_bio->sectors; - struct r10bio r10b; struct r10conf *conf = mddev->private; + struct { + struct r10bio r10_bio; + struct r10dev devs[conf->copies]; + } on_stack; + struct r10bio *r10b = &on_stack.r10_bio; int slot = 0; int idx = 0; struct bio_vec *bvec = r10_bio->master_bio->bi_io_vec; - r10b.sector = r10_bio->sector; - __raid10_find_phys(&conf->prev, &r10b); + r10b->sector = r10_bio->sector; + __raid10_find_phys(&conf->prev, r10b); while (sectors) { int s = sectors; @@ -4407,7 +4422,7 @@ s = PAGE_SIZE >> 9; while (!success) { - int d = r10b.devs[slot].devnum; + int d = r10b->devs[slot].devnum; struct md_rdev *rdev = conf->mirrors[d].rdev; sector_t addr; if (rdev == NULL || @@ -4415,7 +4430,7 @@ !test_bit(In_sync, &rdev->flags)) goto failed; - addr = r10b.devs[slot].addr + idx * PAGE_SIZE; + addr = r10b->devs[slot].addr + idx * PAGE_SIZE; success = sync_page_io(rdev, addr, s << 9, --- linux-3.5.0.orig/drivers/md/md.c +++ linux-3.5.0/drivers/md/md.c @@ -1157,8 +1157,11 @@ ret = 0; } rdev->sectors = rdev->sb_start; - /* Limit to 4TB as metadata cannot record more than that */ - if (rdev->sectors >= (2ULL << 32)) + /* Limit to 4TB as metadata cannot record more than that. + * (not needed for Linear and RAID0 as metadata doesn't + * record this size) + */ + if (rdev->sectors >= (2ULL << 32) && sb->level >= 1) rdev->sectors = (2ULL << 32) - 2; if (rdev->sectors < ((sector_t)sb->size) * 2 && sb->level >= 1) @@ -1449,7 +1452,7 @@ /* Limit to 4TB as metadata cannot record more than that. * 4TB == 2^32 KB, or 2*2^32 sectors. */ - if (num_sectors >= (2ULL << 32)) + if (num_sectors >= (2ULL << 32) && rdev->mddev->level >= 1) num_sectors = (2ULL << 32) - 2; md_super_write(rdev->mddev, rdev, rdev->sb_start, rdev->sb_size, rdev->sb_page); @@ -1878,10 +1881,10 @@ memset(bbp, 0xff, PAGE_SIZE); for (i = 0 ; i < bb->count ; i++) { - u64 internal_bb = *p++; + u64 internal_bb = p[i]; u64 store_bb = ((BB_OFFSET(internal_bb) << 10) | BB_LEN(internal_bb)); - *bbp++ = cpu_to_le64(store_bb); + bbp[i] = cpu_to_le64(store_bb); } bb->changed = 0; if (read_seqretry(&bb->lock, seq)) @@ -7669,6 +7672,8 @@ } } } + if (removed) + set_bit(MD_CHANGE_DEVS, &mddev->flags); return spares; } @@ -7682,9 +7687,11 @@ !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { /* success...*/ /* activate any spares */ - if (mddev->pers->spare_active(mddev)) + if (mddev->pers->spare_active(mddev)) { sysfs_notify(&mddev->kobj, NULL, "degraded"); + set_bit(MD_CHANGE_DEVS, &mddev->flags); + } } if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && mddev->pers->finish_reshape) @@ -7953,9 +7960,9 @@ sector_t *first_bad, int *bad_sectors) { int hi; - int lo = 0; + int lo; u64 *p = bb->page; - int rv = 0; + int rv; sector_t target = s + sectors; unsigned seq; @@ -7970,7 +7977,8 @@ retry: seq = read_seqbegin(&bb->lock); - + lo = 0; + rv = 0; hi = bb->count; /* Binary search between lo and hi for 'target' --- linux-3.5.0.orig/drivers/md/dm-verity.c +++ linux-3.5.0/drivers/md/dm-verity.c @@ -718,8 +718,8 @@ v->hash_dev_block_bits = ffs(num) - 1; if (sscanf(argv[5], "%llu%c", &num_ll, &dummy) != 1 || - num_ll << (v->data_dev_block_bits - SECTOR_SHIFT) != - (sector_t)num_ll << (v->data_dev_block_bits - SECTOR_SHIFT)) { + (sector_t)(num_ll << (v->data_dev_block_bits - SECTOR_SHIFT)) + >> (v->data_dev_block_bits - SECTOR_SHIFT) != num_ll) { ti->error = "Invalid data blocks"; r = -EINVAL; goto bad; @@ -733,8 +733,8 @@ } if (sscanf(argv[6], "%llu%c", &num_ll, &dummy) != 1 || - num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT) != - (sector_t)num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT)) { + (sector_t)(num_ll << (v->hash_dev_block_bits - SECTOR_SHIFT)) + >> (v->hash_dev_block_bits - SECTOR_SHIFT) != num_ll) { ti->error = "Invalid hash start"; r = -EINVAL; goto bad; --- linux-3.5.0.orig/drivers/md/raid1.c +++ linux-3.5.0/drivers/md/raid1.c @@ -2428,7 +2428,10 @@ /* There is nowhere to write, so all non-sync * drives must be failed - so we are finished */ - sector_t rv = max_sector - sector_nr; + sector_t rv; + if (min_bad > 0) + max_sector = sector_nr + min_bad; + rv = max_sector - sector_nr; *skipped = 1; put_buf(r1_bio); return rv; @@ -2560,7 +2563,7 @@ || disk_idx < 0) continue; if (test_bit(Replacement, &rdev->flags)) - disk = conf->mirrors + conf->raid_disks + disk_idx; + disk = conf->mirrors + mddev->raid_disks + disk_idx; else disk = conf->mirrors + disk_idx; --- linux-3.5.0.orig/drivers/md/raid10.h +++ linux-3.5.0/drivers/md/raid10.h @@ -110,7 +110,7 @@ * We choose the number when they are allocated. * We sometimes need an extra bio to write to the replacement. */ - struct { + struct r10dev { struct bio *bio; union { struct bio *repl_bio; /* used for resync and --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree.c @@ -38,7 +38,7 @@ /*----------------------------------------------------------------*/ /* makes the assumption that no two keys are the same. */ -static int bsearch(struct node *n, uint64_t key, int want_hi) +static int bsearch(struct btree_node *n, uint64_t key, int want_hi) { int lo = -1, hi = le32_to_cpu(n->header.nr_entries); @@ -58,12 +58,12 @@ return want_hi ? hi : lo; } -int lower_bound(struct node *n, uint64_t key) +int lower_bound(struct btree_node *n, uint64_t key) { return bsearch(n, key, 0); } -void inc_children(struct dm_transaction_manager *tm, struct node *n, +void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt) { unsigned i; @@ -77,7 +77,7 @@ vt->inc(vt->context, value_ptr(n, i)); } -static int insert_at(size_t value_size, struct node *node, unsigned index, +static int insert_at(size_t value_size, struct btree_node *node, unsigned index, uint64_t key, void *value) __dm_written_to_disk(value) { @@ -122,7 +122,7 @@ { int r; struct dm_block *b; - struct node *n; + struct btree_node *n; size_t block_size; uint32_t max_entries; @@ -154,7 +154,7 @@ #define MAX_SPINE_DEPTH 64 struct frame { struct dm_block *b; - struct node *n; + struct btree_node *n; unsigned level; unsigned nr_children; unsigned current_child; @@ -295,7 +295,7 @@ /*----------------------------------------------------------------*/ static int btree_lookup_raw(struct ro_spine *s, dm_block_t block, uint64_t key, - int (*search_fn)(struct node *, uint64_t), + int (*search_fn)(struct btree_node *, uint64_t), uint64_t *result_key, void *v, size_t value_size) { int i, r; @@ -406,7 +406,7 @@ size_t size; unsigned nr_left, nr_right; struct dm_block *left, *right, *parent; - struct node *ln, *rn, *pn; + struct btree_node *ln, *rn, *pn; __le64 location; left = shadow_current(s); @@ -491,7 +491,7 @@ size_t size; unsigned nr_left, nr_right; struct dm_block *left, *right, *new_parent; - struct node *pn, *ln, *rn; + struct btree_node *pn, *ln, *rn; __le64 val; new_parent = shadow_current(s); @@ -576,7 +576,7 @@ uint64_t key, unsigned *index) { int r, i = *index, top = 1; - struct node *node; + struct btree_node *node; for (;;) { r = shadow_step(s, root, vt); @@ -643,7 +643,7 @@ unsigned level, index = -1, last_level = info->levels - 1; dm_block_t block = root; struct shadow_spine spine; - struct node *n; + struct btree_node *n; struct dm_btree_value_type le64_type; le64_type.context = NULL; --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-spine.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-spine.c @@ -23,7 +23,7 @@ struct dm_block *b, size_t block_size) { - struct node *n = dm_block_data(b); + struct btree_node *n = dm_block_data(b); struct node_header *h = &n->header; h->blocknr = cpu_to_le64(dm_block_location(b)); @@ -38,7 +38,7 @@ struct dm_block *b, size_t block_size) { - struct node *n = dm_block_data(b); + struct btree_node *n = dm_block_data(b); struct node_header *h = &n->header; size_t value_size; __le32 csum_disk; @@ -164,7 +164,7 @@ return r; } -struct node *ro_node(struct ro_spine *s) +struct btree_node *ro_node(struct ro_spine *s) { struct dm_block *block; --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-remove.c +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-remove.c @@ -53,7 +53,7 @@ /* * Some little utilities for moving node data around. */ -static void node_shift(struct node *n, int shift) +static void node_shift(struct btree_node *n, int shift) { uint32_t nr_entries = le32_to_cpu(n->header.nr_entries); uint32_t value_size = le32_to_cpu(n->header.value_size); @@ -79,7 +79,7 @@ } } -static void node_copy(struct node *left, struct node *right, int shift) +static void node_copy(struct btree_node *left, struct btree_node *right, int shift) { uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t value_size = le32_to_cpu(left->header.value_size); @@ -108,7 +108,7 @@ /* * Delete a specific entry from a leaf node. */ -static void delete_at(struct node *n, unsigned index) +static void delete_at(struct btree_node *n, unsigned index) { unsigned nr_entries = le32_to_cpu(n->header.nr_entries); unsigned nr_to_copy = nr_entries - (index + 1); @@ -128,7 +128,7 @@ n->header.nr_entries = cpu_to_le32(nr_entries - 1); } -static unsigned merge_threshold(struct node *n) +static unsigned merge_threshold(struct btree_node *n) { return le32_to_cpu(n->header.max_entries) / 3; } @@ -136,7 +136,7 @@ struct child { unsigned index; struct dm_block *block; - struct node *n; + struct btree_node *n; }; static struct dm_btree_value_type le64_type = { @@ -147,7 +147,7 @@ .equal = NULL }; -static int init_child(struct dm_btree_info *info, struct node *parent, +static int init_child(struct dm_btree_info *info, struct btree_node *parent, unsigned index, struct child *result) { int r, inc; @@ -177,7 +177,7 @@ return dm_tm_unlock(info->tm, c->block); } -static void shift(struct node *left, struct node *right, int count) +static void shift(struct btree_node *left, struct btree_node *right, int count) { uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_right = le32_to_cpu(right->header.nr_entries); @@ -203,11 +203,11 @@ right->header.nr_entries = cpu_to_le32(nr_right + count); } -static void __rebalance2(struct dm_btree_info *info, struct node *parent, +static void __rebalance2(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *r) { - struct node *left = l->n; - struct node *right = r->n; + struct btree_node *left = l->n; + struct btree_node *right = r->n; uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_right = le32_to_cpu(right->header.nr_entries); unsigned threshold = 2 * merge_threshold(left) + 1; @@ -239,7 +239,7 @@ unsigned left_index) { int r; - struct node *parent; + struct btree_node *parent; struct child left, right; parent = dm_block_data(shadow_current(s)); @@ -270,9 +270,9 @@ * in right, then rebalance2. This wastes some cpu, but I want something * simple atm. */ -static void delete_center_node(struct dm_btree_info *info, struct node *parent, +static void delete_center_node(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r, - struct node *left, struct node *center, struct node *right, + struct btree_node *left, struct btree_node *center, struct btree_node *right, uint32_t nr_left, uint32_t nr_center, uint32_t nr_right) { uint32_t max_entries = le32_to_cpu(left->header.max_entries); @@ -301,9 +301,9 @@ /* * Redistributes entries among 3 sibling nodes. */ -static void redistribute3(struct dm_btree_info *info, struct node *parent, +static void redistribute3(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r, - struct node *left, struct node *center, struct node *right, + struct btree_node *left, struct btree_node *center, struct btree_node *right, uint32_t nr_left, uint32_t nr_center, uint32_t nr_right) { int s; @@ -343,12 +343,12 @@ *key_ptr(parent, r->index) = right->keys[0]; } -static void __rebalance3(struct dm_btree_info *info, struct node *parent, +static void __rebalance3(struct dm_btree_info *info, struct btree_node *parent, struct child *l, struct child *c, struct child *r) { - struct node *left = l->n; - struct node *center = c->n; - struct node *right = r->n; + struct btree_node *left = l->n; + struct btree_node *center = c->n; + struct btree_node *right = r->n; uint32_t nr_left = le32_to_cpu(left->header.nr_entries); uint32_t nr_center = le32_to_cpu(center->header.nr_entries); @@ -371,7 +371,7 @@ unsigned left_index) { int r; - struct node *parent = dm_block_data(shadow_current(s)); + struct btree_node *parent = dm_block_data(shadow_current(s)); struct child left, center, right; /* @@ -421,7 +421,7 @@ { int r; struct dm_block *block; - struct node *n; + struct btree_node *n; r = dm_tm_read_lock(tm, b, &btree_node_validator, &block); if (r) @@ -438,7 +438,7 @@ { int i, r, has_left_sibling, has_right_sibling; uint32_t child_entries; - struct node *n; + struct btree_node *n; n = dm_block_data(shadow_current(s)); @@ -483,7 +483,7 @@ return r; } -static int do_leaf(struct node *n, uint64_t key, unsigned *index) +static int do_leaf(struct btree_node *n, uint64_t key, unsigned *index) { int i = lower_bound(n, key); @@ -506,7 +506,7 @@ uint64_t key, unsigned *index) { int i = *index, r; - struct node *n; + struct btree_node *n; for (;;) { r = shadow_step(s, root, vt); @@ -556,7 +556,7 @@ unsigned level, last_level = info->levels - 1; int index = 0, r = 0; struct shadow_spine spine; - struct node *n; + struct btree_node *n; init_shadow_spine(&spine, info); for (level = 0; level < info->levels; level++) { --- linux-3.5.0.orig/drivers/md/persistent-data/dm-btree-internal.h +++ linux-3.5.0/drivers/md/persistent-data/dm-btree-internal.h @@ -36,13 +36,13 @@ __le32 padding; } __packed; -struct node { +struct btree_node { struct node_header header; __le64 keys[0]; } __packed; -void inc_children(struct dm_transaction_manager *tm, struct node *n, +void inc_children(struct dm_transaction_manager *tm, struct btree_node *n, struct dm_btree_value_type *vt); int new_block(struct dm_btree_info *info, struct dm_block **result); @@ -64,7 +64,7 @@ void init_ro_spine(struct ro_spine *s, struct dm_btree_info *info); int exit_ro_spine(struct ro_spine *s); int ro_step(struct ro_spine *s, dm_block_t new_child); -struct node *ro_node(struct ro_spine *s); +struct btree_node *ro_node(struct ro_spine *s); struct shadow_spine { struct dm_btree_info *info; @@ -98,17 +98,17 @@ /* * Some inlines. */ -static inline __le64 *key_ptr(struct node *n, uint32_t index) +static inline __le64 *key_ptr(struct btree_node *n, uint32_t index) { return n->keys + index; } -static inline void *value_base(struct node *n) +static inline void *value_base(struct btree_node *n) { return &n->keys[le32_to_cpu(n->header.max_entries)]; } -static inline void *value_ptr(struct node *n, uint32_t index) +static inline void *value_ptr(struct btree_node *n, uint32_t index) { uint32_t value_size = le32_to_cpu(n->header.value_size); return value_base(n) + (value_size * index); @@ -117,7 +117,7 @@ /* * Assumes the values are suitably-aligned and converts to core format. */ -static inline uint64_t value64(struct node *n, uint32_t index) +static inline uint64_t value64(struct btree_node *n, uint32_t index) { __le64 *values_le = value_base(n); @@ -127,7 +127,7 @@ /* * Searching for a key within a single node. */ -int lower_bound(struct node *n, uint64_t key); +int lower_bound(struct btree_node *n, uint64_t key); extern struct dm_block_validator btree_node_validator; --- linux-3.5.0.orig/drivers/extcon/extcon_class.c +++ linux-3.5.0/drivers/extcon/extcon_class.c @@ -575,6 +575,10 @@ kfree(edev->cables); } +#if defined(CONFIG_ANDROID) + if (switch_class) + class_compat_remove_link(switch_class, edev->dev, NULL); +#endif device_unregister(edev->dev); put_device(edev->dev); } @@ -821,6 +825,9 @@ static void __exit extcon_class_exit(void) { +#if defined(CONFIG_ANDROID) + class_compat_unregister(switch_class); +#endif class_destroy(extcon_class); } module_exit(extcon_class_exit); --- linux-3.5.0.orig/drivers/firewire/ohci.c +++ linux-3.5.0/drivers/firewire/ohci.c @@ -320,6 +320,8 @@ {PCI_VENDOR_ID_VIA, PCI_ANY_ID, PCI_ANY_ID, QUIRK_CYCLE_TIMER | QUIRK_NO_MSI}, + {PCI_VENDOR_ID_O2, PCI_ANY_ID, PCI_ANY_ID, + QUIRK_NO_MSI}, }; /* This overrides anything that was found in ohci_quirks[]. */ --- linux-3.5.0.orig/drivers/firewire/net.c +++ linux-3.5.0/drivers/firewire/net.c @@ -861,8 +861,8 @@ if (specifier_id == IANA_SPECIFIER_ID && ver == RFC2734_SW_VERSION) { buf_ptr += 2; length -= IEEE1394_GASP_HDR_SIZE; - fwnet_incoming_packet(dev, buf_ptr, length, - source_node_id, -1, true); + fwnet_incoming_packet(dev, buf_ptr, length, source_node_id, + context->card->generation, true); } packet.payload_length = dev->rcv_buffer_size; @@ -958,7 +958,12 @@ break; } - skb_pull(skb, ptask->max_payload); + if (ptask->dest_node == IEEE1394_ALL_NODES) { + skb_pull(skb, + ptask->max_payload + IEEE1394_GASP_HDR_SIZE); + } else { + skb_pull(skb, ptask->max_payload); + } if (ptask->outstanding_pkts > 1) { fwnet_make_sf_hdr(&ptask->hdr, RFC2374_HDR_INTFRAG, dg_size, fg_off, datagram_label); @@ -1062,7 +1067,7 @@ smp_rmb(); node_id = dev->card->node_id; - p = skb_push(ptask->skb, 8); + p = skb_push(ptask->skb, IEEE1394_GASP_HDR_SIZE); put_unaligned_be32(node_id << 16 | IANA_SPECIFIER_ID >> 8, p); put_unaligned_be32((IANA_SPECIFIER_ID & 0xff) << 24 | RFC2734_SW_VERSION, &p[4]); --- linux-3.5.0.orig/drivers/firewire/core-cdev.c +++ linux-3.5.0/drivers/firewire/core-cdev.c @@ -473,8 +473,8 @@ client->bus_reset_closure = a->bus_reset_closure; if (a->bus_reset != 0) { fill_bus_reset_event(&bus_reset, client); - ret = copy_to_user(u64_to_uptr(a->bus_reset), - &bus_reset, sizeof(bus_reset)); + /* unaligned size of bus_reset is 36 bytes */ + ret = copy_to_user(u64_to_uptr(a->bus_reset), &bus_reset, 36); } if (ret == 0 && list_empty(&client->link)) list_add_tail(&client->link, &client->device->client_list); --- linux-3.5.0.orig/drivers/hwmon/applesmc.c +++ linux-3.5.0/drivers/hwmon/applesmc.c @@ -54,10 +54,10 @@ #define APPLESMC_MAX_DATA_LENGTH 32 /* wait up to 32 ms for a status change. */ -#define APPLESMC_MIN_WAIT 0x0040 +#define APPLESMC_MIN_WAIT 0x0010 +#define APPLESMC_RETRY_WAIT 0x0100 #define APPLESMC_MAX_WAIT 0x8000 -#define APPLESMC_STATUS_MASK 0x0f #define APPLESMC_READ_CMD 0x10 #define APPLESMC_WRITE_CMD 0x11 #define APPLESMC_GET_KEY_BY_INDEX_CMD 0x12 @@ -162,51 +162,68 @@ static struct workqueue_struct *applesmc_led_wq; /* - * __wait_status - Wait up to 32ms for the status port to get a certain value - * (masked with 0x0f), returning zero if the value is obtained. Callers must + * wait_read - Wait for a byte to appear on SMC port. Callers must * hold applesmc_lock. */ -static int __wait_status(u8 val) +static int wait_read(void) { + u8 status; int us; - - val = val & APPLESMC_STATUS_MASK; - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { udelay(us); - if ((inb(APPLESMC_CMD_PORT) & APPLESMC_STATUS_MASK) == val) + status = inb(APPLESMC_CMD_PORT); + /* read: wait for smc to settle */ + if (status & 0x01) return 0; } + pr_warn("wait_read() fail: 0x%02x\n", status); return -EIO; } /* - * special treatment of command port - on newer macbooks, it seems necessary - * to resend the command byte before polling the status again. Callers must - * hold applesmc_lock. + * send_byte - Write to SMC port, retrying when necessary. Callers + * must hold applesmc_lock. */ -static int send_command(u8 cmd) +static int send_byte(u8 cmd, u16 port) { + u8 status; int us; + + outb(cmd, port); for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - outb(cmd, APPLESMC_CMD_PORT); udelay(us); - if ((inb(APPLESMC_CMD_PORT) & APPLESMC_STATUS_MASK) == 0x0c) + status = inb(APPLESMC_CMD_PORT); + /* write: wait for smc to settle */ + if (status & 0x02) + continue; + /* ready: cmd accepted, return */ + if (status & 0x04) return 0; + /* timeout: give up */ + if (us << 1 == APPLESMC_MAX_WAIT) + break; + /* busy: long wait and resend */ + udelay(APPLESMC_RETRY_WAIT); + outb(cmd, port); } + + pr_warn("send_byte(0x%02x, 0x%04x) fail: 0x%02x\n", cmd, port, status); return -EIO; } +static int send_command(u8 cmd) +{ + return send_byte(cmd, APPLESMC_CMD_PORT); +} + static int send_argument(const char *key) { int i; - for (i = 0; i < 4; i++) { - outb(key[i], APPLESMC_DATA_PORT); - if (__wait_status(0x04)) + for (i = 0; i < 4; i++) + if (send_byte(key[i], APPLESMC_DATA_PORT)) return -EIO; - } return 0; } @@ -219,11 +236,14 @@ return -EIO; } - outb(len, APPLESMC_DATA_PORT); + if (send_byte(len, APPLESMC_DATA_PORT)) { + pr_warn("%.4s: read len fail\n", key); + return -EIO; + } for (i = 0; i < len; i++) { - if (__wait_status(0x05)) { - pr_warn("%.4s: read data fail\n", key); + if (wait_read()) { + pr_warn("%.4s: read data[%d] fail\n", key, i); return -EIO; } buffer[i] = inb(APPLESMC_DATA_PORT); @@ -241,14 +261,16 @@ return -EIO; } - outb(len, APPLESMC_DATA_PORT); + if (send_byte(len, APPLESMC_DATA_PORT)) { + pr_warn("%.4s: write len fail\n", key); + return -EIO; + } for (i = 0; i < len; i++) { - if (__wait_status(0x04)) { + if (send_byte(buffer[i], APPLESMC_DATA_PORT)) { pr_warn("%s: write data fail\n", key); return -EIO; } - outb(buffer[i], APPLESMC_DATA_PORT); } return 0; --- linux-3.5.0.orig/drivers/hwmon/ina2xx.c +++ linux-3.5.0/drivers/hwmon/ina2xx.c @@ -69,22 +69,6 @@ u16 regs[INA2XX_MAX_REGISTERS]; }; -int ina2xx_read_word(struct i2c_client *client, int reg) -{ - int val = i2c_smbus_read_word_data(client, reg); - if (unlikely(val < 0)) { - dev_dbg(&client->dev, - "Failed to read register: %d\n", reg); - return val; - } - return be16_to_cpu(val); -} - -void ina2xx_write_word(struct i2c_client *client, int reg, int data) -{ - i2c_smbus_write_word_data(client, reg, cpu_to_be16(data)); -} - static struct ina2xx_data *ina2xx_update_device(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); @@ -102,7 +86,7 @@ /* Read all registers */ for (i = 0; i < data->registers; i++) { - int rv = ina2xx_read_word(client, i); + int rv = i2c_smbus_read_word_swapped(client, i); if (rv < 0) { ret = ERR_PTR(rv); goto abort; @@ -279,22 +263,26 @@ switch (data->kind) { case ina219: /* device configuration */ - ina2xx_write_word(client, INA2XX_CONFIG, INA219_CONFIG_DEFAULT); + i2c_smbus_write_word_swapped(client, INA2XX_CONFIG, + INA219_CONFIG_DEFAULT); /* set current LSB to 1mA, shunt is in uOhms */ /* (equation 13 in datasheet) */ - ina2xx_write_word(client, INA2XX_CALIBRATION, 40960000 / shunt); + i2c_smbus_write_word_swapped(client, INA2XX_CALIBRATION, + 40960000 / shunt); dev_info(&client->dev, "power monitor INA219 (Rshunt = %li uOhm)\n", shunt); data->registers = INA219_REGISTERS; break; case ina226: /* device configuration */ - ina2xx_write_word(client, INA2XX_CONFIG, INA226_CONFIG_DEFAULT); + i2c_smbus_write_word_swapped(client, INA2XX_CONFIG, + INA226_CONFIG_DEFAULT); /* set current LSB to 1mA, shunt is in uOhms */ /* (equation 1 in datasheet)*/ - ina2xx_write_word(client, INA2XX_CALIBRATION, 5120000 / shunt); + i2c_smbus_write_word_swapped(client, INA2XX_CALIBRATION, + 5120000 / shunt); dev_info(&client->dev, "power monitor INA226 (Rshunt = %li uOhm)\n", shunt); data->registers = INA226_REGISTERS; --- linux-3.5.0.orig/drivers/hwmon/twl4030-madc-hwmon.c +++ linux-3.5.0/drivers/hwmon/twl4030-madc-hwmon.c @@ -44,12 +44,13 @@ struct device_attribute *devattr, char *buf) { struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); - struct twl4030_madc_request req; + struct twl4030_madc_request req = { + .channels = 1 << attr->index, + .method = TWL4030_MADC_SW2, + .type = TWL4030_MADC_WAIT, + }; long val; - req.channels = (1 << attr->index); - req.method = TWL4030_MADC_SW2; - req.func_cb = NULL; val = twl4030_madc_conversion(&req); if (val < 0) return val; --- linux-3.5.0.orig/drivers/hwmon/asus_atk0110.c +++ linux-3.5.0/drivers/hwmon/asus_atk0110.c @@ -34,6 +34,12 @@ .matches = { DMI_MATCH(DMI_BOARD_NAME, "SABERTOOTH X58") } + }, { + /* Old interface reads the same sensor for fan0 and fan1 */ + .ident = "Asus M5A78L", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "M5A78L") + } }, { } }; --- linux-3.5.0.orig/drivers/hwmon/lm73.c +++ linux-3.5.0/drivers/hwmon/lm73.c @@ -49,6 +49,7 @@ struct i2c_client *client = to_i2c_client(dev); long temp; short value; + s32 err; int status = kstrtol(buf, 10, &temp); if (status < 0) @@ -57,8 +58,8 @@ /* Write value */ value = (short) SENSORS_LIMIT(temp/250, (LM73_TEMP_MIN*4), (LM73_TEMP_MAX*4)) << 5; - i2c_smbus_write_word_swapped(client, attr->index, value); - return count; + err = i2c_smbus_write_word_swapped(client, attr->index, value); + return (err < 0) ? err : count; } static ssize_t show_temp(struct device *dev, struct device_attribute *da, @@ -66,11 +67,16 @@ { struct sensor_device_attribute *attr = to_sensor_dev_attr(da); struct i2c_client *client = to_i2c_client(dev); + int temp; + + s32 err = i2c_smbus_read_word_swapped(client, attr->index); + if (err < 0) + return err; + /* use integer division instead of equivalent right shift to guarantee arithmetic shift and preserve the sign */ - int temp = ((s16) (i2c_smbus_read_word_swapped(client, - attr->index))*250) / 32; - return sprintf(buf, "%d\n", temp); + temp = (((s16) err) * 250) / 32; + return scnprintf(buf, PAGE_SIZE, "%d\n", temp); } --- linux-3.5.0.orig/drivers/hwmon/fam15h_power.c +++ linux-3.5.0/drivers/hwmon/fam15h_power.c @@ -31,6 +31,9 @@ MODULE_AUTHOR("Andreas Herrmann "); MODULE_LICENSE("GPL"); +/* Family 16h Northbridge's function 4 PCI ID */ +#define PCI_DEVICE_ID_AMD_16H_NB_F4 0x1534 + /* D18F3 */ #define REG_NORTHBRIDGE_CAP 0xe8 @@ -128,12 +131,12 @@ * counter saturations resulting in bogus power readings. * We correct this value ourselves to cope with older BIOSes. */ -static DEFINE_PCI_DEVICE_TABLE(affected_device) = { +static const struct pci_device_id affected_device[] = { { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) }, { 0 } }; -static void __devinit tweak_runavg_range(struct pci_dev *pdev) +static void tweak_runavg_range(struct pci_dev *pdev) { u32 val; @@ -157,6 +160,16 @@ REG_TDP_RUNNING_AVERAGE, val); } +#ifdef CONFIG_PM +static int fam15h_power_resume(struct pci_dev *pdev) +{ + tweak_runavg_range(pdev); + return 0; +} +#else +#define fam15h_power_resume NULL +#endif + static void __devinit fam15h_power_init_data(struct pci_dev *f4, struct fam15h_power_data *data) { @@ -246,6 +259,7 @@ static DEFINE_PCI_DEVICE_TABLE(fam15h_power_id_table) = { { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_15H_NB_F4) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_16H_NB_F4) }, {} }; MODULE_DEVICE_TABLE(pci, fam15h_power_id_table); @@ -255,6 +269,7 @@ .id_table = fam15h_power_id_table, .probe = fam15h_power_probe, .remove = __devexit_p(fam15h_power_remove), + .resume = fam15h_power_resume, }; module_pci_driver(fam15h_power_driver); --- linux-3.5.0.orig/drivers/hwmon/coretemp.c +++ linux-3.5.0/drivers/hwmon/coretemp.c @@ -205,8 +205,11 @@ { "CPU N455", 100000 }, { "CPU N470", 100000 }, { "CPU N475", 100000 }, - { "CPU 230", 100000 }, - { "CPU 330", 125000 }, + { "CPU 230", 100000 }, /* Model 0x1c, stepping 2 */ + { "CPU 330", 125000 }, /* Model 0x1c, stepping 2 */ + { "CPU CE4110", 110000 }, /* Model 0x1c, stepping 10 */ + { "CPU CE4150", 110000 }, /* Model 0x1c, stepping 10 */ + { "CPU CE4170", 110000 }, /* Model 0x1c, stepping 10 */ }; static int __cpuinit adjust_tjmax(struct cpuinfo_x86 *c, u32 id, --- linux-3.5.0.orig/drivers/hwmon/w83627ehf.c +++ linux-3.5.0/drivers/hwmon/w83627ehf.c @@ -2082,6 +2082,7 @@ mutex_init(&data->lock); mutex_init(&data->update_lock); data->name = w83627ehf_device_names[sio_data->kind]; + data->bank = 0xff; /* Force initial bank selection */ platform_set_drvdata(pdev, data); /* 627EHG and 627EHF have 10 voltage inputs; 627DHG and 667HG have 9 */ --- linux-3.5.0.orig/drivers/hwmon/ad7314.c +++ linux-3.5.0/drivers/hwmon/ad7314.c @@ -87,10 +87,18 @@ } } +static ssize_t ad7314_show_name(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + return sprintf(buf, "%s\n", to_spi_device(dev)->modalias); +} + +static DEVICE_ATTR(name, S_IRUGO, ad7314_show_name, NULL); static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO, ad7314_show_temperature, NULL, 0); static struct attribute *ad7314_attributes[] = { + &dev_attr_name.attr, &sensor_dev_attr_temp1_input.dev_attr.attr, NULL, }; --- linux-3.5.0.orig/drivers/hwmon/ads7871.c +++ linux-3.5.0/drivers/hwmon/ads7871.c @@ -139,6 +139,12 @@ } } +static ssize_t ads7871_show_name(struct device *dev, + struct device_attribute *devattr, char *buf) +{ + return sprintf(buf, "%s\n", to_spi_device(dev)->modalias); +} + static SENSOR_DEVICE_ATTR(in0_input, S_IRUGO, show_voltage, NULL, 0); static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, show_voltage, NULL, 1); static SENSOR_DEVICE_ATTR(in2_input, S_IRUGO, show_voltage, NULL, 2); @@ -148,6 +154,8 @@ static SENSOR_DEVICE_ATTR(in6_input, S_IRUGO, show_voltage, NULL, 6); static SENSOR_DEVICE_ATTR(in7_input, S_IRUGO, show_voltage, NULL, 7); +static DEVICE_ATTR(name, S_IRUGO, ads7871_show_name, NULL); + static struct attribute *ads7871_attributes[] = { &sensor_dev_attr_in0_input.dev_attr.attr, &sensor_dev_attr_in1_input.dev_attr.attr, @@ -157,6 +165,7 @@ &sensor_dev_attr_in5_input.dev_attr.attr, &sensor_dev_attr_in6_input.dev_attr.attr, &sensor_dev_attr_in7_input.dev_attr.attr, + &dev_attr_name.attr, NULL }; --- linux-3.5.0.orig/drivers/video/Kconfig +++ linux-3.5.0/drivers/video/Kconfig @@ -753,8 +753,8 @@ If unsure, say N. config FB_VESA - bool "VESA VGA graphics support" - depends on (FB = y) && X86 + tristate "VESA VGA graphics support" + depends on FB && X86 select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT --- linux-3.5.0.orig/drivers/video/vesafb.c +++ linux-3.5.0/drivers/video/vesafb.c @@ -27,6 +27,12 @@ #define dac_reg (0x3c8) #define dac_val (0x3c9) +struct vesafb_info +{ + u32 pseudo_palette[256]; + int mtrr_hdl; +}; + /* --------------------------------------------------------------------- */ static struct fb_var_screeninfo vesafb_defined __initdata = { @@ -40,22 +46,43 @@ .vmode = FB_VMODE_NONINTERLACED, }; -static struct fb_fix_screeninfo vesafb_fix __initdata = { +static struct fb_fix_screeninfo vesafb_fix = { .id = "VESA VGA", .type = FB_TYPE_PACKED_PIXELS, .accel = FB_ACCEL_NONE, }; +#ifndef MODULE static int inverse __read_mostly; -static int mtrr __read_mostly; /* disable mtrr */ +#endif +static int mtrr __read_mostly = 3; /* disable mtrr */ static int vram_remap __initdata; /* Set amount of memory to be used */ static int vram_total __initdata; /* Set total amount of memory */ static int pmi_setpal __read_mostly = 1; /* pmi for palette changes ??? */ +static int redraw __read_mostly; static int ypan __read_mostly; /* 0..nothing, 1..ypan, 2..ywrap */ +static int ywrap __read_mostly; static void (*pmi_start)(void) __read_mostly; static void (*pmi_pal) (void) __read_mostly; static int depth __read_mostly; static int vga_compat __read_mostly; + +module_param(redraw, bool, 0); +module_param(ypan, bool, 0); +module_param(ywrap, bool, 0); +module_param_named(vgapal, pmi_setpal, invbool, 0); +MODULE_PARM_DESC(vgapal, "Use VGA for setting palette (default)"); +module_param_named(pmipal, pmi_setpal, bool, 0); +MODULE_PARM_DESC(pmipal, "Use PMI for setting palette"); +module_param(mtrr, uint, 0); +MODULE_PARM_DESC(mtrr, "Enable MTRR support (default)"); +module_param_named(nomtrr, mtrr, invbool, 0); +MODULE_PARM_DESC(nomtrr, "Disable MTRR support"); +module_param(vram_remap, int, 0); +MODULE_PARM_DESC(vram_remap, "Set total amount of memory to be used"); +module_param(vram_total, int, 0); +MODULE_PARM_DESC(vram_total, "Total amount of memory"); + /* --------------------------------------------------------------------- */ static int vesafb_pan_display(struct fb_var_screeninfo *var, @@ -192,6 +219,7 @@ .fb_imageblit = cfb_imageblit, }; +#ifndef MODULE static int __init vesafb_setup(char *options) { char *this_opt; @@ -225,10 +253,12 @@ } return 0; } +#endif static int __init vesafb_probe(struct platform_device *dev) { struct fb_info *info; + struct vesafb_info *vfb_info; int i, err; unsigned int size_vmode; unsigned int size_remap; @@ -287,13 +317,14 @@ spaces our resource handlers simply don't know about */ } - info = framebuffer_alloc(sizeof(u32) * 256, &dev->dev); + info = framebuffer_alloc(sizeof(struct vesafb_info), &dev->dev); if (!info) { release_mem_region(vesafb_fix.smem_start, size_total); return -ENOMEM; } - info->pseudo_palette = info->par; - info->par = NULL; + vfb_info = (struct vesafb_info *) info->par; + vfb_info->mtrr_hdl = -1; + info->pseudo_palette = vfb_info->pseudo_palette; /* set vesafb aperture size for generic probing */ info->apertures = alloc_apertures(1); @@ -423,17 +454,15 @@ } if (type) { - int rc; - /* Find the largest power-of-two */ temp_size = roundup_pow_of_two(temp_size); /* Try and find a power of two to add */ do { - rc = mtrr_add(vesafb_fix.smem_start, temp_size, + vfb_info->mtrr_hdl = mtrr_add(vesafb_fix.smem_start, temp_size, type, 1); temp_size >>= 1; - } while (temp_size >= PAGE_SIZE && rc == -EINVAL); + } while (temp_size >= PAGE_SIZE && vfb_info->mtrr_hdl == -EINVAL); } } #endif @@ -495,7 +524,27 @@ return err; } +static int __exit vesafb_remove(struct platform_device *device) +{ + struct fb_info *info = dev_get_drvdata(&device->dev); + + unregister_framebuffer(info); +#ifdef CONFIG_MTRR + { + struct vesafb_info *vfb_info = (struct vesafb_info *) info->par; + if (vfb_info->mtrr_hdl >= 0) + mtrr_del(vfb_info->mtrr_hdl, 0, 0); + } +#endif + iounmap(info->screen_base); + framebuffer_release(info); + release_mem_region(vesafb_fix.smem_start, vesafb_fix.smem_len); + + return 0; +} + static struct platform_driver vesafb_driver = { + .remove = vesafb_remove, .driver = { .name = "vesafb", }, @@ -506,11 +555,18 @@ static int __init vesafb_init(void) { int ret; +#ifndef MODULE char *option = NULL; /* ignore error return of fb_get_options */ fb_get_options("vesafb", &option); vesafb_setup(option); +#else + if (redraw) + ypan = 0; + if (ywrap) + ypan = 2; +#endif vesafb_device = platform_device_alloc("vesafb", 0); if (!vesafb_device) @@ -530,6 +586,14 @@ return ret; } + +static void __exit vesafb_exit(void) +{ + platform_device_unregister(vesafb_device); + platform_driver_unregister(&vesafb_driver); +} + module_init(vesafb_init); +module_exit(vesafb_exit); MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/drivers/video/udlfb.c +++ linux-3.5.0/drivers/video/udlfb.c @@ -647,7 +647,7 @@ result = fb_sys_write(info, buf, count, ppos); if (result > 0) { - int start = max((int)(offset / info->fix.line_length) - 1, 0); + int start = max((int)(offset / info->fix.line_length), 0); int lines = min((u32)((result / info->fix.line_length) + 1), (u32)info->var.yres); --- linux-3.5.0.orig/drivers/video/fbsysfs.c +++ linux-3.5.0/drivers/video/fbsysfs.c @@ -177,6 +177,8 @@ if (i * sizeof(struct fb_videomode) != count) return -EINVAL; + if (!lock_fb_info(fb_info)) + return -ENODEV; console_lock(); list_splice(&fb_info->modelist, &old_list); fb_videomode_to_modelist((const struct fb_videomode *)buf, i, @@ -188,6 +190,7 @@ fb_destroy_modelist(&old_list); console_unlock(); + unlock_fb_info(fb_info); return 0; } --- linux-3.5.0.orig/drivers/video/fbmem.c +++ linux-3.5.0/drivers/video/fbmem.c @@ -1651,7 +1651,9 @@ event.info = fb_info; if (!lock_fb_info(fb_info)) return -ENODEV; + console_lock(); fb_notifier_call_chain(FB_EVENT_FB_REGISTERED, &event); + console_unlock(); unlock_fb_info(fb_info); return 0; } @@ -1667,8 +1669,10 @@ if (!lock_fb_info(fb_info)) return -ENODEV; + console_lock(); event.info = fb_info; ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event); + console_unlock(); unlock_fb_info(fb_info); if (ret) @@ -1683,7 +1687,9 @@ num_registered_fb--; fb_cleanup_device(fb_info); event.info = fb_info; + console_lock(); fb_notifier_call_chain(FB_EVENT_FB_UNREGISTERED, &event); + console_unlock(); /* this may free fb info */ put_fb_info(fb_info); @@ -1854,11 +1860,8 @@ err = 1; if (!list_empty(&info->modelist)) { - if (!lock_fb_info(info)) - return -ENODEV; event.info = info; err = fb_notifier_call_chain(FB_EVENT_NEW_MODELIST, &event); - unlock_fb_info(info); } return err; --- linux-3.5.0.orig/drivers/video/fsl-diu-fb.c +++ linux-3.5.0/drivers/video/fsl-diu-fb.c @@ -922,7 +922,7 @@ #define PF_COMP_0_MASK 0x0000000F #define PF_COMP_0_SHIFT 0 -#define MAKE_PF(alpha, red, blue, green, size, c0, c1, c2, c3) \ +#define MAKE_PF(alpha, red, green, blue, size, c0, c1, c2, c3) \ cpu_to_le32(PF_BYTE_F | (alpha << PF_ALPHA_C_SHIFT) | \ (blue << PF_BLUE_C_SHIFT) | (green << PF_GREEN_C_SHIFT) | \ (red << PF_RED_C_SHIFT) | (c3 << PF_COMP_3_SHIFT) | \ @@ -932,10 +932,10 @@ switch (bits_per_pixel) { case 32: /* 0x88883316 */ - return MAKE_PF(3, 2, 0, 1, 3, 8, 8, 8, 8); + return MAKE_PF(3, 2, 1, 0, 3, 8, 8, 8, 8); case 24: /* 0x88082219 */ - return MAKE_PF(4, 0, 1, 2, 2, 0, 8, 8, 8); + return MAKE_PF(4, 0, 1, 2, 2, 8, 8, 8, 0); case 16: /* 0x65053118 */ return MAKE_PF(4, 2, 1, 0, 1, 5, 6, 5, 0); --- linux-3.5.0.orig/drivers/video/mxsfb.c +++ linux-3.5.0/drivers/video/mxsfb.c @@ -367,7 +367,8 @@ loop--; } - writel(VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4 + REG_CLR); + reg = readl(host->base + LCDC_VDCTRL4); + writel(reg & ~VDCTRL4_SYNC_SIGNALS_ON, host->base + LCDC_VDCTRL4); clk_disable_unprepare(host->clk); --- linux-3.5.0.orig/drivers/video/smscufx.c +++ linux-3.5.0/drivers/video/smscufx.c @@ -904,7 +904,7 @@ result = fb_sys_write(info, buf, count, ppos); if (result > 0) { - int start = max((int)(offset / info->fix.line_length) - 1, 0); + int start = max((int)(offset / info->fix.line_length), 0); int lines = min((u32)((result / info->fix.line_length) + 1), (u32)info->var.yres); --- linux-3.5.0.orig/drivers/video/omap2/omapfb/omapfb-main.c +++ linux-3.5.0/drivers/video/omap2/omapfb/omapfb-main.c @@ -1188,7 +1188,7 @@ break; if (regno < 16) { - u16 pal; + u32 pal; pal = ((red >> (16 - var->red.length)) << var->red.offset) | ((green >> (16 - var->green.length)) << --- linux-3.5.0.orig/drivers/video/backlight/adp8860_bl.c +++ linux-3.5.0/drivers/video/backlight/adp8860_bl.c @@ -783,7 +783,7 @@ static int adp8860_i2c_resume(struct i2c_client *client) { - adp8860_set_bits(client, ADP8860_MDCR, NSTBY); + adp8860_set_bits(client, ADP8860_MDCR, NSTBY | BLEN); return 0; } --- linux-3.5.0.orig/drivers/video/backlight/adp8870_bl.c +++ linux-3.5.0/drivers/video/backlight/adp8870_bl.c @@ -957,7 +957,7 @@ static int adp8870_i2c_resume(struct i2c_client *client) { - adp8870_set_bits(client, ADP8870_MDCR, NSTBY); + adp8870_set_bits(client, ADP8870_MDCR, NSTBY | BLEN); return 0; } --- linux-3.5.0.orig/drivers/video/via/via_clock.c +++ linux-3.5.0/drivers/video/via/via_clock.c @@ -25,6 +25,7 @@ #include #include +#include #include "via_clock.h" #include "global.h" #include "debug.h" @@ -289,6 +290,10 @@ printk(KERN_INFO "Using undocumented set PLL.\n%s", via_slap); } +static void noop_set_clock_state(u8 state) +{ +} + void via_clock_init(struct via_clock *clock, int gfx_chip) { switch (gfx_chip) { @@ -346,4 +351,18 @@ break; } + + if (machine_is_olpc()) { + /* The OLPC XO-1.5 cannot suspend/resume reliably if the + * IGA1/IGA2 clocks are set as on or off (memory rot + * occasionally happens during suspend under such + * configurations). + * + * The only known stable scenario is to leave this bits as-is, + * which in their default states are documented to enable the + * clock only when it is needed. + */ + clock->set_primary_clock_state = noop_set_clock_state; + clock->set_secondary_clock_state = noop_set_clock_state; + } } --- linux-3.5.0.orig/drivers/video/console/vgacon.c +++ linux-3.5.0/drivers/video/console/vgacon.c @@ -1064,7 +1064,7 @@ unsigned short video_port_status = vga_video_port_reg + 6; int font_select = 0x00, beg, i; char *charmap; - + bool clear_attribs = false; if (vga_video_type != VIDEO_TYPE_EGAM) { charmap = (char *) VGA_MAP_MEM(colourmap, 0); beg = 0x0e; @@ -1169,12 +1169,6 @@ /* if 512 char mode is already enabled don't re-enable it. */ if ((set) && (ch512 != vga_512_chars)) { - /* attribute controller */ - for (i = 0; i < MAX_NR_CONSOLES; i++) { - struct vc_data *c = vc_cons[i].d; - if (c && c->vc_sw == &vga_con) - c->vc_hi_font_mask = ch512 ? 0x0800 : 0; - } vga_512_chars = ch512; /* 256-char: enable intensity bit 512-char: disable intensity bit */ @@ -1185,8 +1179,22 @@ it means, but it works, and it appears necessary */ inb_p(video_port_status); vga_wattr(state->vgabase, VGA_AR_ENABLE_DISPLAY, 0); + clear_attribs = true; } raw_spin_unlock_irq(&vga_lock); + + if (clear_attribs) { + for (i = 0; i < MAX_NR_CONSOLES; i++) { + struct vc_data *c = vc_cons[i].d; + if (c && c->vc_sw == &vga_con) { + /* force hi font mask to 0, so we always clear + the bit on either transition */ + c->vc_hi_font_mask = 0x00; + clear_buffer_attributes(c); + c->vc_hi_font_mask = ch512 ? 0x0800 : 0; + } + } + } return 0; } --- linux-3.5.0.orig/drivers/video/console/fbcon.c +++ linux-3.5.0/drivers/video/console/fbcon.c @@ -372,8 +372,15 @@ struct vc_data *vc = NULL; int c; int mode; + int ret; + + /* FIXME: we should sort out the unbind locking instead */ + /* instead we just fail to flash the cursor if we can't get + * the lock instead of blocking fbcon deinit */ + ret = console_trylock(); + if (ret == 0) + return; - console_lock(); if (ops && ops->currcon != -1) vc = vc_cons[ops->currcon].d; @@ -522,6 +529,33 @@ return retval; } +static int do_fbcon_takeover(int show_logo) +{ + int err, i; + + if (!num_registered_fb) + return -ENODEV; + + if (!show_logo) + logo_shown = FBCON_LOGO_DONTSHOW; + + for (i = first_fb_vc; i <= last_fb_vc; i++) + con2fb_map[i] = info_idx; + + err = do_take_over_console(&fb_con, first_fb_vc, last_fb_vc, + fbcon_is_default); + + if (err) { + for (i = first_fb_vc; i <= last_fb_vc; i++) + con2fb_map[i] = -1; + info_idx = -1; + } else { + fbcon_has_console_bind = 1; + } + + return err; +} + static int fbcon_takeover(int show_logo) { int err, i; @@ -983,7 +1017,7 @@ } /* Setup default font */ - if (!p->fontdata) { + if (!p->fontdata && !vc->vc_font.data) { if (!fontname[0] || !(font = find_font(fontname))) font = get_default_font(info->var.xres, info->var.yres, @@ -993,6 +1027,8 @@ vc->vc_font.height = font->height; vc->vc_font.data = (void *)(p->fontdata = font->data); vc->vc_font.charcount = 256; /* FIXME Need to support more fonts */ + } else { + p->fontdata = vc->vc_font.data; } cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres); @@ -1152,9 +1188,9 @@ ops->p = &fb_display[fg_console]; } -static void fbcon_free_font(struct display *p) +static void fbcon_free_font(struct display *p, bool freefont) { - if (p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) + if (freefont && p->userfont && p->fontdata && (--REFCOUNT(p->fontdata) == 0)) kfree(p->fontdata - FONT_EXTRA_WORDS * sizeof(int)); p->fontdata = NULL; p->userfont = 0; @@ -1166,8 +1202,8 @@ struct fb_info *info; struct fbcon_ops *ops; int idx; + bool free_font = true; - fbcon_free_font(p); idx = con2fb_map[vc->vc_num]; if (idx == -1) @@ -1178,6 +1214,8 @@ if (!info) goto finished; + if (info->flags & FBINFO_MISC_FIRMWARE) + free_font = false; ops = info->fbcon_par; if (!ops) @@ -1189,6 +1227,8 @@ ops->flags &= ~FBCON_FLAGS_INIT; finished: + fbcon_free_font(p, free_font); + if (!con_is_bound(&fb_con)) fbcon_exit(); @@ -2970,7 +3010,7 @@ { int ret; - ret = unbind_con_driver(&fb_con, first_fb_vc, last_fb_vc, + ret = do_unbind_con_driver(&fb_con, first_fb_vc, last_fb_vc, fbcon_is_default); if (!ret) @@ -3043,7 +3083,7 @@ primary_device = -1; if (!num_registered_fb) - unregister_con_driver(&fb_con); + do_unregister_con_driver(&fb_con); return 0; } @@ -3108,7 +3148,7 @@ } if (info_idx != -1) - ret = fbcon_takeover(1); + ret = do_fbcon_takeover(1); } else { for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map_boot[i] == idx) --- linux-3.5.0.orig/drivers/base/Kconfig +++ linux-3.5.0/drivers/base/Kconfig @@ -281,4 +281,12 @@ endif +config SR_REPORT_TIME_LIMIT + int "Default low threshold" + depends on PM + default 100 + help + Print suspend/resume information for driver/device for time greater + then default msec, ie 100 msec. + endmenu --- linux-3.5.0.orig/drivers/base/core.c +++ linux-3.5.0/drivers/base/core.c @@ -1848,6 +1848,7 @@ struct va_format *vaf) { char dict[128]; + const char *level_extra = ""; size_t dictlen = 0; const char *subsys; @@ -1894,10 +1895,14 @@ "DEVICE=+%s:%s", subsys, dev_name(dev)); } skip: + if (level[3]) + level_extra = &level[3]; /* skip past "" */ + return printk_emit(0, level[1] - '0', dictlen ? dict : NULL, dictlen, - "%s %s: %pV", - dev_driver_string(dev), dev_name(dev), vaf); + "%s %s: %s%pV", + dev_driver_string(dev), dev_name(dev), + level_extra, vaf); } EXPORT_SYMBOL(__dev_printk); --- linux-3.5.0.orig/drivers/base/bus.c +++ linux-3.5.0/drivers/base/bus.c @@ -293,7 +293,7 @@ struct device *dev; int error = 0; - if (!bus) + if (!bus || !bus->p) return -EINVAL; klist_iter_init_node(&bus->p->klist_devices, &i, @@ -327,7 +327,7 @@ struct klist_iter i; struct device *dev; - if (!bus) + if (!bus || !bus->p) return NULL; klist_iter_init_node(&bus->p->klist_devices, &i, --- linux-3.5.0.orig/drivers/base/dd.c +++ linux-3.5.0/drivers/base/dd.c @@ -161,6 +161,8 @@ driver_deferred_probe_enable = true; driver_deferred_probe_trigger(); + /* Sort as many dependencies as possible before exiting initcalls */ + flush_workqueue(deferred_wq); return 0; } late_initcall(deferred_probe_initcall); --- linux-3.5.0.orig/drivers/base/power/runtime.c +++ linux-3.5.0/drivers/base/power/runtime.c @@ -147,6 +147,8 @@ || (dev->power.request_pending && dev->power.request == RPM_REQ_RESUME)) retval = -EAGAIN; + else if (__dev_pm_qos_read_value(dev) < 0) + retval = -EPERM; else if (dev->power.runtime_status == RPM_SUSPENDED) retval = 1; @@ -388,7 +390,6 @@ goto repeat; } - dev->power.deferred_resume = false; if (dev->power.no_callbacks) goto no_callback; /* Assume success. */ @@ -403,12 +404,6 @@ goto out; } - if (__dev_pm_qos_read_value(dev) < 0) { - /* Negative PM QoS constraint means "never suspend". */ - retval = -EPERM; - goto out; - } - __update_runtime_status(dev, RPM_SUSPENDING); if (dev->pm_domain) @@ -440,6 +435,7 @@ wake_up_all(&dev->power.wait_queue); if (dev->power.deferred_resume) { + dev->power.deferred_resume = false; rpm_resume(dev, 0); retval = -EAGAIN; goto out; @@ -584,6 +580,7 @@ || dev->parent->power.runtime_status == RPM_ACTIVE) { atomic_inc(&dev->parent->power.child_count); spin_unlock(&dev->parent->power.lock); + retval = 1; goto no_callback; /* Assume success. */ } spin_unlock(&dev->parent->power.lock); @@ -664,7 +661,7 @@ } wake_up_all(&dev->power.wait_queue); - if (!retval) + if (retval >= 0) rpm_idle(dev, RPM_ASYNC); out: --- linux-3.5.0.orig/drivers/base/power/main.c +++ linux-3.5.0/drivers/base/power/main.c @@ -352,6 +352,24 @@ dev_name(dev), pm_verb(state.event), info, error); } +static void device_show_time(struct device *dev, ktime_t starttime, pm_message_t state, char *info) +{ + ktime_t calltime; + s64 usecs64; + int usecs; + + calltime = ktime_get(); + usecs64 = ktime_to_ns(ktime_sub(calltime, starttime)); + do_div(usecs64, NSEC_PER_USEC); + usecs = usecs64; + if (usecs == 0) + usecs = 1; + if ((usecs / USEC_PER_MSEC) > CONFIG_SR_REPORT_TIME_LIMIT) + pr_info("PM: %s%s%s of drv:%s dev:%s complete after %ld.%03ld msecs\n", info ?: "", info ? " " : "", pm_verb(state.event), + dev_driver_string(dev), dev_name(dev), usecs / USEC_PER_MSEC, + usecs % USEC_PER_MSEC); +} + static void dpm_show_time(ktime_t starttime, pm_message_t state, char *info) { ktime_t calltime; @@ -404,6 +422,7 @@ pm_callback_t callback = NULL; char *info = NULL; int error = 0; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -411,6 +430,7 @@ if (dev->pm_domain) { info = "noirq power domain "; callback = pm_noirq_op(&dev->pm_domain->ops, state); + device_show_time(dev, starttime, state, "early"); } else if (dev->type && dev->type->pm) { info = "noirq type "; callback = pm_noirq_op(dev->type->pm, state); @@ -507,6 +527,8 @@ error = dpm_run_callback(callback, dev, state, info); TRACE_RESUME(error); + + pm_runtime_enable(dev); return error; } @@ -565,6 +587,7 @@ char *info = NULL; int error = 0; bool put = false; + ktime_t starttime = ktime_get(); TRACE_DEVICE(dev); TRACE_RESUME(0); @@ -581,7 +604,6 @@ if (!dev->power.is_suspended) goto Unlock; - pm_runtime_enable(dev); put = true; if (dev->pm_domain) { @@ -625,6 +647,7 @@ callback = pm_op(dev->driver->pm, state); } + device_show_time(dev, starttime, state, NULL); End: error = dpm_run_callback(callback, dev, state, info); dev->power.is_suspended = false; @@ -832,6 +855,7 @@ { pm_callback_t callback = NULL; char *info = NULL; + ktime_t starttime = ktime_get(); if (dev->pm_domain) { info = "noirq power domain "; @@ -845,6 +869,7 @@ } else if (dev->bus && dev->bus->pm) { info = "noirq bus "; callback = pm_noirq_op(dev->bus->pm, state); + device_show_time(dev, starttime, state, "late"); } if (!callback && dev->driver && dev->driver->pm) { @@ -915,6 +940,8 @@ pm_callback_t callback = NULL; char *info = NULL; + __pm_runtime_disable(dev, false); + if (dev->pm_domain) { info = "late power domain "; callback = pm_late_early_op(&dev->pm_domain->ops, state); @@ -989,8 +1016,16 @@ int dpm_suspend_end(pm_message_t state) { int error = dpm_suspend_late(state); + if (error) + return error; - return error ? : dpm_suspend_noirq(state); + error = dpm_suspend_noirq(state); + if (error) { + dpm_resume_early(resume_event(state)); + return error; + } + + return 0; } EXPORT_SYMBOL_GPL(dpm_suspend_end); @@ -1027,6 +1062,7 @@ pm_callback_t callback = NULL; char *info = NULL; int error = 0; + ktime_t starttime = ktime_get(); dpm_wait_for_children(dev, async); @@ -1088,6 +1124,7 @@ error = dpm_run_callback(callback, dev, state, info); + device_show_time(dev, starttime, state, NULL); End: if (!error) { dev->power.is_suspended = true; @@ -1100,12 +1137,9 @@ Complete: complete_all(&dev->power.completion); - if (error) { pm_runtime_put_sync(dev); async_error = error; - } else if (dev->power.is_suspended) { - __pm_runtime_disable(dev, false); } return error; --- linux-3.5.0.orig/drivers/base/power/qos.c +++ linux-3.5.0/drivers/base/power/qos.c @@ -451,7 +451,7 @@ if (ancestor) error = dev_pm_qos_add_request(ancestor, req, value); - if (error) + if (error < 0) req->dev = NULL; return error; --- linux-3.5.0.orig/drivers/base/regmap/regmap-debugfs.c +++ linux-3.5.0/drivers/base/regmap/regmap-debugfs.c @@ -90,7 +90,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 + 1 + tot_len >= count) break; /* Format the register */ --- linux-3.5.0.orig/drivers/dca/dca-core.c +++ linux-3.5.0/drivers/dca/dca-core.c @@ -420,6 +420,11 @@ raw_spin_lock_irqsave(&dca_lock, flags); + if (list_empty(&dca_domains)) { + raw_spin_unlock_irqrestore(&dca_lock, flags); + return; + } + list_del(&dca->node); pci_rc = dca_pci_rc_from_dev(dev); --- linux-3.5.0.orig/drivers/pci/remove.c +++ linux-3.5.0/drivers/pci/remove.c @@ -19,6 +19,8 @@ static void pci_stop_dev(struct pci_dev *dev) { + pci_pme_active(dev, false); + if (dev->is_added) { pci_proc_detach_device(dev); pci_remove_sysfs_dev_files(dev); --- linux-3.5.0.orig/drivers/pci/pci-driver.c +++ linux-3.5.0/drivers/pci/pci-driver.c @@ -958,6 +958,13 @@ if (!pci_dev->state_saved && !pci_is_bridge(pci_dev)) pci_prepare_to_sleep(pci_dev); + /* + * The reason for doing this here is the same as for the analogous code + * in pci_pm_suspend_noirq(). + */ + if (pci_dev->class == PCI_CLASS_SERIAL_USB_EHCI) + pci_write_config_word(pci_dev, PCI_COMMAND, 0); + return 0; } --- linux-3.5.0.orig/drivers/pci/probe.c +++ linux-3.5.0/drivers/pci/probe.c @@ -684,8 +684,10 @@ /* Check if setup is sensible at all */ if (!pass && - (primary != bus->number || secondary <= bus->number)) { - dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n"); + (primary != bus->number || secondary <= bus->number || + secondary > subordinate)) { + dev_info(&dev->dev, "bridge configuration invalid ([bus %02x-%02x]), reconfiguring\n", + secondary, subordinate); broken = 1; } --- linux-3.5.0.orig/drivers/pci/quirks.c +++ linux-3.5.0/drivers/pci/quirks.c @@ -44,6 +44,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. @@ -2720,7 +2735,7 @@ if (PCI_FUNC(dev->devfn)) return; /* - * RICOH 0xe823 SD/MMC card reader fails to recognize + * RICOH 0xe822 and 0xe823 SD/MMC card readers fail to recognize * certain types of SD/MMC cards. Lowering the SD base * clock frequency from 200Mhz to 50Mhz fixes this issue. * @@ -2731,7 +2746,8 @@ * 0xf9 - Key register for 0x150 * 0xfc - key register for 0xe1 */ - if (dev->device == PCI_DEVICE_ID_RICOH_R5CE823) { + if (dev->device == PCI_DEVICE_ID_RICOH_R5CE822 || + dev->device == PCI_DEVICE_ID_RICOH_R5CE823) { pci_write_config_byte(dev, 0xf9, 0xfc); pci_write_config_byte(dev, 0x150, 0x10); pci_write_config_byte(dev, 0xf9, 0x00); @@ -2758,6 +2774,8 @@ } DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5C832, ricoh_mmc_fixup_r5c832); +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832); +DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE822, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832); DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_RICOH, PCI_DEVICE_ID_RICOH_R5CE823, ricoh_mmc_fixup_r5c832); #endif /*CONFIG_MMC_RICOH_MMC*/ --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_core.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_core.c @@ -42,7 +42,6 @@ bool pciehp_poll_mode; int pciehp_poll_time; bool pciehp_force; -struct workqueue_struct *pciehp_wq; #define DRIVER_VERSION "0.4" #define DRIVER_AUTHOR "Dan Zink , Greg Kroah-Hartman , Dely Sy " @@ -340,18 +339,13 @@ { int retval = 0; - pciehp_wq = alloc_workqueue("pciehp", 0, 0); - if (!pciehp_wq) - return -ENOMEM; - pciehp_firmware_init(); retval = pcie_port_service_register(&hpdriver_portdrv); dbg("pcie_port_service_register = %d\n", retval); info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); - if (retval) { - destroy_workqueue(pciehp_wq); + if (retval) dbg("Failure to register service\n"); - } + return retval; } @@ -359,7 +353,6 @@ { dbg("unload_pciehpd()\n"); pcie_port_service_unregister(&hpdriver_portdrv); - destroy_workqueue(pciehp_wq); info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n"); } --- linux-3.5.0.orig/drivers/pci/hotplug/acpiphp_glue.c +++ linux-3.5.0/drivers/pci/hotplug/acpiphp_glue.c @@ -132,6 +132,15 @@ if (!acpi_pci_check_ejectable(pbus, handle) && !is_dock_device(handle)) return AE_OK; + status = acpi_evaluate_integer(handle, "_ADR", NULL, &adr); + if (ACPI_FAILURE(status)) { + warn("can't evaluate _ADR (%#x)\n", status); + return AE_OK; + } + + device = (adr >> 16) & 0xffff; + function = adr & 0xffff; + pdev = pbus->self; if (pdev && pci_is_pcie(pdev)) { tmp = acpi_find_root_bridge_handle(pdev); @@ -144,10 +153,6 @@ } } - acpi_evaluate_integer(handle, "_ADR", NULL, &adr); - device = (adr >> 16) & 0xffff; - function = adr & 0xffff; - newfunc = kzalloc(sizeof(struct acpiphp_func), GFP_KERNEL); if (!newfunc) return AE_NO_MEMORY; --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_ctrl.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_ctrl.c @@ -49,7 +49,7 @@ info->p_slot = p_slot; INIT_WORK(&info->work, interrupt_event_handler); - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); return 0; } @@ -344,7 +344,7 @@ kfree(info); goto out; } - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); out: mutex_unlock(&p_slot->lock); } @@ -377,7 +377,7 @@ if (ATTN_LED(ctrl)) pciehp_set_attention_status(p_slot, 0); - queue_delayed_work(pciehp_wq, &p_slot->work, 5*HZ); + queue_delayed_work(p_slot->wq, &p_slot->work, 5*HZ); break; case BLINKINGOFF_STATE: case BLINKINGON_STATE: @@ -439,7 +439,7 @@ else p_slot->state = POWERON_STATE; - queue_work(pciehp_wq, &info->work); + queue_work(p_slot->wq, &info->work); } static void interrupt_event_handler(struct work_struct *work) --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp_hpc.c +++ linux-3.5.0/drivers/pci/hotplug/pciehp_hpc.c @@ -874,23 +874,32 @@ static int pcie_init_slot(struct controller *ctrl) { struct slot *slot; + char name[32]; slot = kzalloc(sizeof(*slot), GFP_KERNEL); if (!slot) return -ENOMEM; + snprintf(name, sizeof(name), "pciehp-%u", PSN(ctrl)); + slot->wq = alloc_workqueue(name, 0, 0); + if (!slot->wq) + goto abort; + slot->ctrl = ctrl; mutex_init(&slot->lock); INIT_DELAYED_WORK(&slot->work, pciehp_queue_pushbutton_work); ctrl->slot = slot; return 0; +abort: + kfree(slot); + return -ENOMEM; } static void pcie_cleanup_slot(struct controller *ctrl) { struct slot *slot = ctrl->slot; cancel_delayed_work(&slot->work); - flush_workqueue(pciehp_wq); + destroy_workqueue(slot->wq); kfree(slot); } --- linux-3.5.0.orig/drivers/pci/hotplug/pciehp.h +++ linux-3.5.0/drivers/pci/hotplug/pciehp.h @@ -44,7 +44,6 @@ extern int pciehp_poll_time; extern bool pciehp_debug; extern bool pciehp_force; -extern struct workqueue_struct *pciehp_wq; #define dbg(format, arg...) \ do { \ @@ -78,6 +77,7 @@ struct hotplug_slot *hotplug_slot; struct delayed_work work; /* work for button event */ struct mutex lock; + struct workqueue_struct *wq; }; struct event_info { --- linux-3.5.0.orig/drivers/pci/pcie/aspm.c +++ linux-3.5.0/drivers/pci/pcie/aspm.c @@ -798,6 +798,9 @@ { struct pci_dev *child; + if (aspm_force) + return; + /* * Clear any ASPM setup that the firmware has carried out on this bus */ --- linux-3.5.0.orig/drivers/pci/pcie/aer/aerdrv_core.c +++ linux-3.5.0/drivers/pci/pcie/aer/aerdrv_core.c @@ -637,6 +637,7 @@ continue; } do_recovery(pdev, entry.severity); + pci_dev_put(pdev); } } #endif --- linux-3.5.0.orig/drivers/hid/hid-wiimote-ext.c +++ linux-3.5.0/drivers/hid/hid-wiimote-ext.c @@ -378,14 +378,14 @@ if (ext->motionp) { input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x04)); + wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x04)); input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x08)); + wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x08)); } else { input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_Z], !!(payload[5] & 0x01)); + wiiext_keymap[WIIEXT_KEY_Z], !(payload[5] & 0x01)); input_report_key(ext->input, - wiiext_keymap[WIIEXT_KEY_C], !!(payload[5] & 0x02)); + wiiext_keymap[WIIEXT_KEY_C], !(payload[5] & 0x02)); } input_sync(ext->input); --- linux-3.5.0.orig/drivers/hid/hid-input.c +++ linux-3.5.0/drivers/hid/hid-input.c @@ -837,6 +837,15 @@ } break; + case HID_UP_HPVENDOR2: + set_bit(EV_REP, input->evbit); + switch (usage->hid & HID_USAGE) { + case 0x003: map_key_clear(KEY_BRIGHTNESSDOWN); break; + case 0x004: map_key_clear(KEY_BRIGHTNESSUP); break; + default: goto ignore; + } + break; + case HID_UP_MSVENDOR: goto ignore; --- linux-3.5.0.orig/drivers/hid/Kconfig +++ linux-3.5.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 --- linux-3.5.0.orig/drivers/hid/hid-cypress.c +++ linux-3.5.0/drivers/hid/hid-cypress.c @@ -129,6 +129,8 @@ .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3), .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, + { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4), + .driver_data = CP_RDESC_SWAPPED_MIN_MAX }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE), .driver_data = CP_2WHEEL_MOUSE_HACK }, { } --- linux-3.5.0.orig/drivers/hid/hid-logitech-dj.h +++ linux-3.5.0/drivers/hid/hid-logitech-dj.h @@ -101,6 +101,7 @@ struct work_struct work; struct kfifo notif_fifo; spinlock_t lock; + bool querying_devices; }; struct dj_device { --- linux-3.5.0.orig/drivers/hid/hid-logitech-dj.c +++ linux-3.5.0/drivers/hid/hid-logitech-dj.c @@ -193,6 +193,7 @@ static int logi_dj_output_hidraw_report(struct hid_device *hid, u8 * buf, size_t count, unsigned char report_type); +static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev); static void logi_dj_recv_destroy_djhid_device(struct dj_receiver_dev *djrcv_dev, struct dj_report *dj_report) @@ -233,6 +234,7 @@ if (dj_report->report_params[DEVICE_PAIRED_PARAM_SPFUNCTION] & SPFUNCTION_DEVICE_LIST_EMPTY) { dbg_hid("%s: device list is empty\n", __func__); + djrcv_dev->querying_devices = false; return; } @@ -243,6 +245,12 @@ 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__); + return; + } + dj_hiddev = hid_allocate_device(); if (IS_ERR(dj_hiddev)) { dev_err(&djrcv_hdev->dev, "%s: hid_allocate_device failed\n", @@ -306,6 +314,7 @@ struct dj_report dj_report; unsigned long flags; int count; + int retval; dbg_hid("%s\n", __func__); @@ -338,6 +347,25 @@ logi_dj_recv_destroy_djhid_device(djrcv_dev, &dj_report); break; default: + /* A normal report (i. e. not belonging to a pair/unpair notification) + * arriving here, means that the report arrived but we did not have a + * paired dj_device associated to the report's device_index, this + * means that the original "device paired" notification corresponding + * to this dj_device never arrived to this driver. The reason is that + * hid-core discards all packets coming from a device while probe() is + * executing. */ + if (!djrcv_dev->paired_dj_devices[dj_report.device_index]) { + /* ok, we don't know the device, just re-ask the + * receiver for the list of connected devices. */ + retval = logi_dj_recv_query_paired_devices(djrcv_dev); + if (!retval) { + /* everything went fine, so just leave */ + break; + } + dev_err(&djrcv_dev->hdev->dev, + "%s:logi_dj_recv_query_paired_devices " + "error:%d\n", __func__, retval); + } dbg_hid("%s: unexpected report type\n", __func__); } } @@ -368,6 +396,12 @@ if (!djdev) { dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" " is NULL, index %d\n", dj_report->device_index); + kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report)); + + if (schedule_work(&djrcv_dev->work) == 0) { + dbg_hid("%s: did not schedule the work item, was already " + "queued\n", __func__); + } return; } @@ -398,6 +432,12 @@ if (dj_device == NULL) { dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" " is NULL, index %d\n", dj_report->device_index); + kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report)); + + if (schedule_work(&djrcv_dev->work) == 0) { + dbg_hid("%s: did not schedule the work item, was already " + "queued\n", __func__); + } return; } @@ -439,7 +479,11 @@ struct dj_report *dj_report; int retval; - dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL); + /* no need to protect djrcv_dev->querying_devices */ + if (djrcv_dev->querying_devices) + return 0; + + dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL); if (!dj_report) return -ENOMEM; dj_report->report_id = REPORT_ID_DJ_SHORT; @@ -450,13 +494,14 @@ return retval; } + static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev, unsigned timeout) { struct dj_report *dj_report; int retval; - dj_report = kzalloc(sizeof(dj_report), GFP_KERNEL); + dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL); if (!dj_report) return -ENOMEM; dj_report->report_id = REPORT_ID_DJ_SHORT; --- linux-3.5.0.orig/drivers/hid/hid-ntrig.c +++ linux-3.5.0/drivers/hid/hid-ntrig.c @@ -882,10 +882,10 @@ nd->activate_slack = activate_slack; nd->act_state = activate_slack; nd->deactivate_slack = -deactivate_slack; - nd->sensor_logical_width = 0; - nd->sensor_logical_height = 0; - nd->sensor_physical_width = 0; - nd->sensor_physical_height = 0; + nd->sensor_logical_width = 1; + nd->sensor_logical_height = 1; + nd->sensor_physical_width = 1; + nd->sensor_physical_height = 1; hid_set_drvdata(hdev, nd); --- linux-3.5.0.orig/drivers/hid/hid-core.c +++ linux-3.5.0/drivers/hid/hid-core.c @@ -757,6 +757,7 @@ struct hid_item item; unsigned int size; __u8 *start; + __u8 *buf; __u8 *end; int ret; static int (*dispatch_type[])(struct hid_parser *parser, @@ -775,12 +776,21 @@ return -ENODEV; size = device->dev_rsize; + buf = kmemdup(start, size, GFP_KERNEL); + if (buf == NULL) + return -ENOMEM; + if (device->driver->report_fixup) - start = device->driver->report_fixup(device, start, &size); + start = device->driver->report_fixup(device, buf, &size); + else + start = buf; - device->rdesc = kmemdup(start, size, GFP_KERNEL); - if (device->rdesc == NULL) + start = kmemdup(start, size, GFP_KERNEL); + kfree(buf); + if (start == NULL) return -ENOMEM; + + device->rdesc = start; device->rsize = size; parser = vzalloc(sizeof(struct hid_parser)); @@ -1509,6 +1519,7 @@ { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS) }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ANSI) }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2011_ISO) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, @@ -1521,10 +1532,12 @@ { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) }, { HID_USB_DEVICE(USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_PRODIKEYS_PCMIDI) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_3) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_4) }, { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0011) }, @@ -1612,7 +1625,6 @@ { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, { HID_USB_DEVICE(USB_VENDOR_ID_PETALYNX, USB_DEVICE_ID_PETALYNX_MAXTER_REMOTE) }, { HID_USB_DEVICE(USB_VENDOR_ID_PRIMAX, USB_DEVICE_ID_PRIMAX_KEYBOARD) }, - { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_PIXART_IMAGING_INC_OPTICAL_TOUCH_SCREEN) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_KONE) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ARVO) }, { HID_USB_DEVICE(USB_VENDOR_ID_ROCCAT, USB_DEVICE_ID_ROCCAT_ISKU) }, --- linux-3.5.0.orig/drivers/hid/hid-microsoft.c +++ linux-3.5.0/drivers/hid/hid-microsoft.c @@ -29,22 +29,30 @@ #define MS_RDESC 0x08 #define MS_NOGET 0x10 #define MS_DUPLICATE_USAGES 0x20 +#define MS_RDESC_3K 0x40 -/* - * Microsoft Wireless Desktop Receiver (Model 1028) has - * 'Usage Min/Max' where it ought to have 'Physical Min/Max' - */ static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize) { unsigned long quirks = (unsigned long)hid_get_drvdata(hdev); + /* + * Microsoft Wireless Desktop Receiver (Model 1028) has + * 'Usage Min/Max' where it ought to have 'Physical Min/Max' + */ if ((quirks & MS_RDESC) && *rsize == 571 && rdesc[557] == 0x19 && rdesc[559] == 0x29) { hid_info(hdev, "fixing up Microsoft Wireless Receiver Model 1028 report descriptor\n"); rdesc[557] = 0x35; rdesc[559] = 0x45; } + /* the same as above (s/usage/physical/) */ + if ((quirks & MS_RDESC_3K) && *rsize == 106 && rdesc[94] == 0x19 && + rdesc[95] == 0x00 && rdesc[96] == 0x29 && + rdesc[97] == 0xff) { + rdesc[94] = 0x35; + rdesc[96] = 0x45; + } return rdesc; } @@ -193,7 +201,7 @@ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_USB), .driver_data = MS_PRESENTER }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K), - .driver_data = MS_ERGONOMY }, + .driver_data = MS_ERGONOMY | MS_RDESC_3K }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0), .driver_data = MS_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500), --- linux-3.5.0.orig/drivers/hid/hid-ids.h +++ linux-3.5.0/drivers/hid/hid-ids.h @@ -208,6 +208,7 @@ #define USB_DEVICE_ID_CHICONY_MULTI_TOUCH 0xb19d #define USB_DEVICE_ID_CHICONY_WIRELESS 0x0618 #define USB_DEVICE_ID_CHICONY_WIRELESS2 0x1123 +#define USB_DEVICE_ID_CHICONY_AK1D 0x1125 #define USB_VENDOR_ID_CHUNGHWAT 0x2247 #define USB_DEVICE_ID_CHUNGHWAT_MULTITOUCH 0x0001 @@ -237,6 +238,7 @@ #define USB_DEVICE_ID_CYPRESS_BARCODE_1 0xde61 #define USB_DEVICE_ID_CYPRESS_BARCODE_2 0xde64 #define USB_DEVICE_ID_CYPRESS_BARCODE_3 0xbca1 +#define USB_DEVICE_ID_CYPRESS_BARCODE_4 0xed81 #define USB_DEVICE_ID_CYPRESS_TRUETOUCH 0xc001 #define USB_VENDOR_ID_DEALEXTREAME 0x10c5 @@ -294,6 +296,12 @@ #define USB_VENDOR_ID_EZKEY 0x0518 #define USB_DEVICE_ID_BTC_8193 0x0002 +#define USB_VENDOR_ID_FORMOSA 0x147a +#define USB_DEVICE_ID_FORMOSA_IR_RECEIVER 0xe03e + +#define USB_VENDOR_ID_FREESCALE 0x15A2 +#define USB_DEVICE_ID_FREESCALE_MX28 0x004F + #define USB_VENDOR_ID_FRUCTEL 0x25B6 #define USB_DEVICE_ID_GAMETEL_MT_MODE 0x0002 @@ -573,6 +581,9 @@ #define USB_VENDOR_ID_NINTENDO 0x057e #define USB_DEVICE_ID_NINTENDO_WIIMOTE 0x0306 +#define USB_VENDOR_ID_NOVATEK 0x0603 +#define USB_DEVICE_ID_NOVATEK_PCT 0x0600 + #define USB_VENDOR_ID_NTRIG 0x1b96 #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN 0x0001 #define USB_DEVICE_ID_NTRIG_TOUCH_SCREEN_1 0x0003 --- linux-3.5.0.orig/drivers/hid/hid-chicony.c +++ linux-3.5.0/drivers/hid/hid-chicony.c @@ -60,6 +60,7 @@ static const struct hid_device_id ch_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_TACTICAL_PAD) }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_WIRELESS2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_AK1D) }, { } }; MODULE_DEVICE_TABLE(hid, ch_devices); --- linux-3.5.0.orig/drivers/hid/hid-multitouch.c +++ linux-3.5.0/drivers/hid/hid-multitouch.c @@ -83,6 +83,7 @@ unsigned last_field_index; /* last field index of the report */ unsigned last_slot_field; /* the last field of a slot */ __s8 inputmode; /* InputMode HID feature, -1 if non-existent */ + __s8 inputmode_index; /* InputMode HID feature index in the report */ __s8 maxcontact_report_id; /* Maximum Contact Number HID feature, -1 if non-existent */ __u8 num_received; /* how many contacts we received */ @@ -260,10 +261,20 @@ struct hid_field *field, struct hid_usage *usage) { struct mt_device *td = hid_get_drvdata(hdev); + int i; switch (usage->hid) { case HID_DG_INPUTMODE: td->inputmode = field->report->id; + td->inputmode_index = 0; /* has to be updated below */ + + for (i=0; i < field->maxusage; i++) { + if (field->usage[i].hid == usage->hid) { + td->inputmode_index = i; + break; + } + } + break; case HID_DG_CONTACTMAX: td->maxcontact_report_id = field->report->id; @@ -618,7 +629,7 @@ re = &(hdev->report_enum[HID_FEATURE_REPORT]); r = re->report_id_hash[td->inputmode]; if (r) { - r->field[0]->value[0] = 0x02; + r->field[0]->value[td->inputmode_index] = 0x02; usbhid_submit_report(hdev, r, USB_DIR_OUT); } } @@ -951,6 +962,11 @@ MT_USB_DEVICE(USB_VENDOR_ID_PANASONIC, USB_DEVICE_ID_PANABOARD_UBT880) }, + /* Novatek Panel */ + { .driver_data = MT_CLS_DEFAULT, + HID_USB_DEVICE(USB_VENDOR_ID_NOVATEK, + USB_DEVICE_ID_NOVATEK_PCT) }, + /* PenMount panels */ { .driver_data = MT_CLS_CONFIDENCE, MT_USB_DEVICE(USB_VENDOR_ID_PENMOUNT, --- linux-3.5.0.orig/drivers/hid/usbhid/hid-core.c +++ linux-3.5.0/drivers/hid/usbhid/hid-core.c @@ -1423,20 +1423,20 @@ * configuration descriptors passed, we already know that * the size of the HID report descriptor has not changed. */ - rdesc = kmalloc(hid->rsize, GFP_KERNEL); + rdesc = kmalloc(hid->dev_rsize, GFP_KERNEL); if (!rdesc) { dbg_hid("couldn't allocate rdesc memory (post_reset)\n"); return 1; } status = hid_get_class_descriptor(dev, interface->desc.bInterfaceNumber, - HID_DT_REPORT, rdesc, hid->rsize); + HID_DT_REPORT, rdesc, hid->dev_rsize); if (status < 0) { dbg_hid("reading report descriptor failed (post_reset)\n"); kfree(rdesc); return 1; } - status = memcmp(rdesc, hid->rdesc, hid->rsize); + status = memcmp(rdesc, hid->dev_rdesc, hid->dev_rsize); kfree(rdesc); if (status != 0) { dbg_hid("report descriptor changed\n"); --- linux-3.5.0.orig/drivers/hid/usbhid/hid-quirks.c +++ linux-3.5.0/drivers/hid/usbhid/hid-quirks.c @@ -70,6 +70,9 @@ { USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_AXIS_295, HID_QUIRK_NOGET }, { USB_VENDOR_ID_DMI, USB_DEVICE_ID_DMI_ENC, HID_QUIRK_NOGET }, { USB_VENDOR_ID_ELO, USB_DEVICE_ID_ELO_TS2700, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET }, + { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET }, { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN1, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_PIXART, USB_DEVICE_ID_PIXART_OPTICAL_TOUCH_SCREEN2, HID_QUIRK_NO_INIT_REPORTS }, --- linux-3.5.0.orig/drivers/scsi/atp870u.c +++ linux-3.5.0/drivers/scsi/atp870u.c @@ -1173,7 +1173,16 @@ outw(val, tmport); outb(2, 0x80); TCM_SYNC: - udelay(0x800); + /* + * The funny division into multiple delays is to accomodate + * arches like ARM where udelay() multiplies its argument by + * a large number to initialize a loop counter. To avoid + * overflow, the maximum supported udelay is 2000 microseconds. + * + * XXX it would be more polite to find a way to use msleep() + */ + mdelay(2); + udelay(48); if ((inb(tmport) & 0x80) == 0x00) { /* bsy ? */ outw(0, tmport--); outb(0, tmport); --- linux-3.5.0.orig/drivers/scsi/scsi_lib.c +++ linux-3.5.0/drivers/scsi/scsi_lib.c @@ -406,10 +406,6 @@ LIST_HEAD(starved_list); unsigned long flags; - /* if the device is dead, sdev will be NULL, so no queue to run */ - if (!sdev) - return; - shost = sdev->host; if (scsi_target(sdev)->single_lun) scsi_single_lun_run(sdev); @@ -483,15 +479,26 @@ */ static void scsi_requeue_command(struct request_queue *q, struct scsi_cmnd *cmd) { + struct scsi_device *sdev = cmd->device; struct request *req = cmd->request; unsigned long flags; + /* + * We need to hold a reference on the device to avoid the queue being + * killed after the unlock and before scsi_run_queue is invoked which + * may happen because scsi_unprep_request() puts the command which + * releases its reference on the device. + */ + get_device(&sdev->sdev_gendev); + spin_lock_irqsave(q->queue_lock, flags); scsi_unprep_request(req); blk_requeue_request(q, req); spin_unlock_irqrestore(q->queue_lock, flags); scsi_run_queue(q); + + put_device(&sdev->sdev_gendev); } void scsi_next_command(struct scsi_cmnd *cmd) @@ -753,7 +760,6 @@ } if (req->cmd_type == REQ_TYPE_BLOCK_PC) { /* SG_IO ioctl from block level */ - req->errors = result; if (result) { if (sense_valid && req->sense) { /* @@ -769,6 +775,10 @@ if (!sense_deferred) error = __scsi_error_from_host_byte(cmd, result); } + /* + * __scsi_error_from_host_byte may have reset the host_byte + */ + req->errors = cmd->result; req->resid_len = scsi_get_resid(cmd); @@ -1370,16 +1380,16 @@ * may be changed after request stacking drivers call the function, * regardless of taking lock or not. * - * When scsi can't dispatch I/Os anymore and needs to kill I/Os - * (e.g. !sdev), scsi needs to return 'not busy'. - * Otherwise, request stacking drivers may hold requests forever. + * When scsi can't dispatch I/Os anymore and needs to kill I/Os scsi + * needs to return 'not busy'. Otherwise, request stacking drivers + * may hold requests forever. */ static int scsi_lld_busy(struct request_queue *q) { struct scsi_device *sdev = q->queuedata; struct Scsi_Host *shost; - if (!sdev) + if (blk_queue_dead(q)) return 0; shost = sdev->host; @@ -1490,12 +1500,6 @@ struct scsi_cmnd *cmd; struct request *req; - if (!sdev) { - while ((req = blk_peek_request(q)) != NULL) - scsi_kill_request(req, q); - return; - } - if(!get_device(&sdev->sdev_gendev)) /* We must be tearing the block queue down already */ return; @@ -1697,20 +1701,6 @@ return q; } -void scsi_free_queue(struct request_queue *q) -{ - unsigned long flags; - - WARN_ON(q->queuedata); - - /* cause scsi_request_fn() to kill all non-finished requests */ - spin_lock_irqsave(q->queue_lock, flags); - q->request_fn(q); - spin_unlock_irqrestore(q->queue_lock, flags); - - blk_cleanup_queue(q); -} - /* * Function: scsi_block_requests() * --- linux-3.5.0.orig/drivers/scsi/scsi_scan.c +++ linux-3.5.0/drivers/scsi/scsi_scan.c @@ -779,6 +779,16 @@ sdev->model = (char *) (sdev->inquiry + 16); sdev->rev = (char *) (sdev->inquiry + 32); + if (strncmp(sdev->vendor, "ATA ", 8) == 0) { + /* + * sata emulation layer device. This is a hack to work around + * the SATL power management specifications which state that + * when the SATL detects the device has gone into standby + * mode, it shall respond with NOT READY. + */ + sdev->allow_restart = 1; + } + if (*bflags & BLIST_ISROM) { sdev->type = TYPE_ROM; sdev->removable = 1; @@ -1717,6 +1727,9 @@ { struct scsi_device *sdev; shost_for_each_device(sdev, shost) { + /* target removed before the device could be added */ + if (sdev->sdev_state == SDEV_DEL) + continue; if (!scsi_host_scan_allowed(shost) || scsi_sysfs_add_sdev(sdev) != 0) __scsi_remove_device(sdev); --- linux-3.5.0.orig/drivers/scsi/scsi_error.c +++ linux-3.5.0/drivers/scsi/scsi_error.c @@ -42,6 +42,8 @@ #include +static void scsi_eh_done(struct scsi_cmnd *scmd); + #define SENSE_TIMEOUT (10*HZ) /* @@ -241,6 +243,14 @@ if (! scsi_command_normalize_sense(scmd, &sshdr)) return FAILED; /* no valid sense data */ + if (scmd->cmnd[0] == TEST_UNIT_READY && scmd->scsi_done != scsi_eh_done) + /* + * nasty: for mid-layer issued TURs, we need to return the + * actual sense data without any recovery attempt. For eh + * issued ones, we need to try to recover and interpret + */ + return SUCCESS; + if (scsi_sense_is_deferred(&sshdr)) return NEEDS_RETRY; @@ -1687,6 +1697,20 @@ * requests are started. */ scsi_run_host_queues(shost); + + /* + * if eh is active and host_eh_scheduled is pending we need to re-run + * recovery. we do this check after scsi_run_host_queues() to allow + * everything pent up since the last eh run a chance to make forward + * progress before we sync again. Either we'll immediately re-run + * recovery or scsi_device_unbusy() will wake us again when these + * pending commands complete. + */ + spin_lock_irqsave(shost->host_lock, flags); + if (shost->host_eh_scheduled) + if (scsi_host_set_state(shost, SHOST_RECOVERY)) + WARN_ON(scsi_host_set_state(shost, SHOST_CANCEL_RECOVERY)); + spin_unlock_irqrestore(shost->host_lock, flags); } /** --- linux-3.5.0.orig/drivers/scsi/scsi_priv.h +++ linux-3.5.0/drivers/scsi/scsi_priv.h @@ -84,7 +84,6 @@ extern void scsi_io_completion(struct scsi_cmnd *, unsigned int); extern void scsi_run_host_queues(struct Scsi_Host *shost); extern struct request_queue *scsi_alloc_queue(struct scsi_device *sdev); -extern void scsi_free_queue(struct request_queue *q); extern int scsi_init_queue(void); extern void scsi_exit_queue(void); struct request_queue; --- linux-3.5.0.orig/drivers/scsi/storvsc_drv.c +++ linux-3.5.0/drivers/scsi/storvsc_drv.c @@ -1221,7 +1221,12 @@ /* * At this point, all outstanding requests in the adapter * should have been flushed out and return to us + * There is a potential race here where the host may be in + * the process of responding when we return from here. + * Just wait for all in-transit packets to be accounted for + * before we return from here. */ + storvsc_wait_to_drain(stor_device); return SUCCESS; } --- linux-3.5.0.orig/drivers/scsi/hosts.c +++ linux-3.5.0/drivers/scsi/hosts.c @@ -290,6 +290,7 @@ struct Scsi_Host *shost = dev_to_shost(dev); struct device *parent = dev->parent; struct request_queue *q; + void *queuedata; scsi_proc_hostdir_rm(shost->hostt); @@ -299,9 +300,9 @@ destroy_workqueue(shost->work_q); q = shost->uspace_req_q; if (q) { - kfree(q->queuedata); - q->queuedata = NULL; - scsi_free_queue(q); + queuedata = q->queuedata; + blk_cleanup_queue(q); + kfree(queuedata); } scsi_destroy_command_freelist(shost); --- linux-3.5.0.orig/drivers/scsi/scsi_debug.c +++ linux-3.5.0/drivers/scsi/scsi_debug.c @@ -2054,7 +2054,7 @@ block = lba + alignment; rem = do_div(block, granularity); - if (rem == 0 && lba + granularity <= end && block < map_size) { + if (rem == 0 && lba + granularity < end && block < map_size) { clear_bit(block, map_storep); if (scsi_debug_lbprz) memset(fake_storep + --- linux-3.5.0.orig/drivers/scsi/scsi_sysfs.c +++ linux-3.5.0/drivers/scsi/scsi_sysfs.c @@ -246,11 +246,11 @@ static DEVICE_ATTR(active_mode, S_IRUGO | S_IWUSR, show_shost_active_mode, NULL); -static int check_reset_type(char *str) +static int check_reset_type(const char *str) { - if (strncmp(str, "adapter", 10) == 0) + if (sysfs_streq(str, "adapter")) return SCSI_ADAPTER_RESET; - else if (strncmp(str, "firmware", 10) == 0) + else if (sysfs_streq(str, "firmware")) return SCSI_FIRMWARE_RESET; else return 0; @@ -263,12 +263,9 @@ struct Scsi_Host *shost = class_to_shost(dev); struct scsi_host_template *sht = shost->hostt; int ret = -EINVAL; - char str[10]; int type; - sscanf(buf, "%s", str); - type = check_reset_type(str); - + type = check_reset_type(buf); if (!type) goto exit_store_host_reset; @@ -971,11 +968,8 @@ sdev->host->hostt->slave_destroy(sdev); transport_destroy_device(dev); - /* cause the request function to reject all I/O requests */ - sdev->request_queue->queuedata = NULL; - /* Freeing the queue signals to block that we're done */ - scsi_free_queue(sdev->request_queue); + blk_cleanup_queue(sdev->request_queue); put_device(dev); } @@ -1000,7 +994,6 @@ struct scsi_device *sdev; spin_lock_irqsave(shost->host_lock, flags); - starget->reap_ref++; restart: list_for_each_entry(sdev, &shost->__devices, siblings) { if (sdev->channel != starget->channel || @@ -1014,14 +1007,6 @@ goto restart; } spin_unlock_irqrestore(shost->host_lock, flags); - scsi_target_reap(starget); -} - -static int __remove_child (struct device * dev, void * data) -{ - if (scsi_is_target_device(dev)) - __scsi_remove_target(to_scsi_target(dev)); - return 0; } /** @@ -1034,14 +1019,32 @@ */ void scsi_remove_target(struct device *dev) { - if (scsi_is_target_device(dev)) { - __scsi_remove_target(to_scsi_target(dev)); - return; + struct Scsi_Host *shost = dev_to_shost(dev->parent); + struct scsi_target *starget, *last = NULL; + unsigned long flags; + + /* remove targets being careful to lookup next entry before + * deleting the last + */ + spin_lock_irqsave(shost->host_lock, flags); + list_for_each_entry(starget, &shost->__targets, siblings) { + if (starget->state == STARGET_DEL) + continue; + if (starget->dev.parent == dev || &starget->dev == dev) { + /* assuming new targets arrive at the end */ + starget->reap_ref++; + spin_unlock_irqrestore(shost->host_lock, flags); + if (last) + scsi_target_reap(last); + last = starget; + __scsi_remove_target(starget); + spin_lock_irqsave(shost->host_lock, flags); + } } + spin_unlock_irqrestore(shost->host_lock, flags); - get_device(dev); - device_for_each_child(dev, NULL, __remove_child); - put_device(dev); + if (last) + scsi_target_reap(last); } EXPORT_SYMBOL(scsi_remove_target); --- linux-3.5.0.orig/drivers/scsi/hpsa.c +++ linux-3.5.0/drivers/scsi/hpsa.c @@ -99,6 +99,15 @@ {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3354}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3355}, {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x3356}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1920}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1921}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1922}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1923}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1924}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1925}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1926}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSH, 0x103C, 0x1928}, + {PCI_VENDOR_ID_HP, PCI_DEVICE_ID_HP_CISSF, 0x103C, 0x334d}, {PCI_VENDOR_ID_HP, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_RAID << 8, 0xffff << 8, 0}, {0,} @@ -118,13 +127,22 @@ {0x3249103C, "Smart Array P812", &SA5_access}, {0x324a103C, "Smart Array P712m", &SA5_access}, {0x324b103C, "Smart Array P711m", &SA5_access}, - {0x3350103C, "Smart Array", &SA5_access}, - {0x3351103C, "Smart Array", &SA5_access}, - {0x3352103C, "Smart Array", &SA5_access}, - {0x3353103C, "Smart Array", &SA5_access}, - {0x3354103C, "Smart Array", &SA5_access}, - {0x3355103C, "Smart Array", &SA5_access}, - {0x3356103C, "Smart Array", &SA5_access}, + {0x3350103C, "Smart Array P222", &SA5_access}, + {0x3351103C, "Smart Array P420", &SA5_access}, + {0x3352103C, "Smart Array P421", &SA5_access}, + {0x3353103C, "Smart Array P822", &SA5_access}, + {0x3354103C, "Smart Array P420i", &SA5_access}, + {0x3355103C, "Smart Array P220i", &SA5_access}, + {0x3356103C, "Smart Array P721m", &SA5_access}, + {0x1920103C, "Smart Array", &SA5_access}, + {0x1921103C, "Smart Array", &SA5_access}, + {0x1922103C, "Smart Array", &SA5_access}, + {0x1923103C, "Smart Array", &SA5_access}, + {0x1924103C, "Smart Array", &SA5_access}, + {0x1925103C, "Smart Array", &SA5_access}, + {0x1926103C, "Smart Array", &SA5_access}, + {0x1928103C, "Smart Array", &SA5_access}, + {0x334d103C, "Smart Array P822se", &SA5_access}, {0xFFFF103C, "Unknown Smart Array", &SA5_access}, }; @@ -1315,8 +1333,9 @@ } break; case CMD_PROTOCOL_ERR: + cmd->result = DID_ERROR << 16; dev_warn(&h->pdev->dev, "cp %p has " - "protocol error \n", cp); + "protocol error\n", cp); break; case CMD_HARDWARE_ERR: cmd->result = DID_ERROR << 16; @@ -3265,7 +3284,7 @@ c->Request.Timeout = 0; /* Don't time out */ memset(&c->Request.CDB[0], 0, sizeof(c->Request.CDB)); c->Request.CDB[0] = cmd; - c->Request.CDB[1] = 0x03; /* Reset target above */ + c->Request.CDB[1] = HPSA_RESET_TYPE_LUN; /* If bytes 4-7 are zero, it means reset the */ /* LunID device */ c->Request.CDB[4] = 0x00; --- linux-3.5.0.orig/drivers/scsi/sd.c +++ linux-3.5.0/drivers/scsi/sd.c @@ -2920,10 +2920,6 @@ if (err) goto err_out; - err = scsi_register_driver(&sd_template.gendrv); - if (err) - goto err_out_class; - sd_cdb_cache = kmem_cache_create("sd_ext_cdb", SD_EXT_CDB_SIZE, 0, 0, NULL); if (!sd_cdb_cache) { @@ -2937,8 +2933,15 @@ goto err_out_cache; } + err = scsi_register_driver(&sd_template.gendrv); + if (err) + goto err_out_driver; + return 0; +err_out_driver: + mempool_destroy(sd_cdb_pool); + err_out_cache: kmem_cache_destroy(sd_cdb_cache); @@ -2961,10 +2964,10 @@ SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver\n")); + scsi_unregister_driver(&sd_template.gendrv); mempool_destroy(sd_cdb_pool); kmem_cache_destroy(sd_cdb_cache); - scsi_unregister_driver(&sd_template.gendrv); class_unregister(&sd_disk_class); for (i = 0; i < SD_MAJORS; i++) --- linux-3.5.0.orig/drivers/scsi/virtio_scsi.c +++ linux-3.5.0/drivers/scsi/virtio_scsi.c @@ -198,7 +198,7 @@ int i; for_each_sg(table->sgl, sg_elem, table->nents, i) - sg_set_buf(&sg[idx++], sg_virt(sg_elem), sg_elem->length); + sg[idx++] = *sg_elem; *p_idx = idx; } --- linux-3.5.0.orig/drivers/scsi/ibmvscsi/ibmvscsi.c +++ linux-3.5.0/drivers/scsi/ibmvscsi/ibmvscsi.c @@ -1541,6 +1541,9 @@ host_config = &evt_struct->iu.mad.host_config; + /* The transport length field is only 16-bit */ + length = min(0xffff, length); + /* Set up a lun reset SRP command */ memset(host_config, 0x00, sizeof(*host_config)); host_config->common.type = VIOSRP_HOST_CONFIG_TYPE; --- linux-3.5.0.orig/drivers/scsi/megaraid/megaraid_sas_base.c +++ linux-3.5.0/drivers/scsi/megaraid/megaraid_sas_base.c @@ -4066,7 +4066,6 @@ spin_lock_init(&instance->cmd_pool_lock); spin_lock_init(&instance->hba_lock); spin_lock_init(&instance->completion_lock); - spin_lock_init(&poll_aen_lock); mutex_init(&instance->aen_mutex); mutex_init(&instance->reset_mutex); @@ -5392,6 +5391,8 @@ printk(KERN_INFO "megasas: %s %s\n", MEGASAS_VERSION, MEGASAS_EXT_VERSION); + spin_lock_init(&poll_aen_lock); + support_poll_for_event = 2; support_device_change = 1; --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_94xx.h +++ linux-3.5.0/drivers/scsi/mvsas/mv_94xx.h @@ -258,21 +258,11 @@ #define SPI_ADDR_VLD_94XX (1U << 1) #define SPI_CTRL_SpiStart_94XX (1U << 0) -#define mv_ffc(x) ffz(x) - static inline int mv_ffc64(u64 v) { - int i; - i = mv_ffc((u32)v); - if (i >= 0) - return i; - i = mv_ffc((u32)(v>>32)); - - if (i != 0) - return 32 + i; - - return -1; + u64 x = ~v; + return x ? __ffs64(x) : -1; } #define r_reg_set_enable(i) \ --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_sas.c +++ linux-3.5.0/drivers/scsi/mvsas/mv_sas.c @@ -1630,7 +1630,7 @@ mv_dprintk("mvs_abort_task() mvi=%p task=%p " "slot=%p slot_idx=x%x\n", mvi, task, slot, slot_idx); - mvs_tmf_timedout((unsigned long)task); + task->task_state_flags |= SAS_TASK_STATE_ABORTED; mvs_slot_task_free(mvi, task, slot, slot_idx); rc = TMF_RESP_FUNC_COMPLETE; goto out; --- linux-3.5.0.orig/drivers/scsi/mvsas/mv_sas.h +++ linux-3.5.0/drivers/scsi/mvsas/mv_sas.h @@ -69,7 +69,7 @@ #define DEV_IS_EXPANDER(type) \ ((type == EDGE_DEV) || (type == FANOUT_DEV)) -#define bit(n) ((u32)1 << n) +#define bit(n) ((u64)1 << n) #define for_each_phy(__lseq_mask, __mc, __lseq) \ for ((__mc) = (__lseq_mask), (__lseq) = 0; \ --- linux-3.5.0.orig/drivers/scsi/lpfc/Makefile +++ linux-3.5.0/drivers/scsi/lpfc/Makefile @@ -22,7 +22,9 @@ ccflags-$(GCOV) := -fprofile-arcs -ftest-coverage ccflags-$(GCOV) += -O0 +ifdef WARNINGS_BECOME_ERRORS ccflags-y += -Werror +endif obj-$(CONFIG_SCSI_LPFC) := lpfc.o --- linux-3.5.0.orig/drivers/scsi/mpt2sas/mpt2sas_base.c +++ linux-3.5.0/drivers/scsi/mpt2sas/mpt2sas_base.c @@ -1209,6 +1209,13 @@ u16 message_control; + /* Check whether controller SAS2008 B0 controller, + if it is SAS2008 B0 controller use IO-APIC instead of MSIX */ + if (ioc->pdev->device == MPI2_MFGPAGE_DEVID_SAS2008 && + ioc->pdev->revision == 0x01) { + return -EINVAL; + } + base = pci_find_capability(ioc->pdev, PCI_CAP_ID_MSIX); if (!base) { dfailprintk(ioc, printk(MPT2SAS_INFO_FMT "msix not " @@ -2424,10 +2431,13 @@ } /* command line tunables for max controller queue depth */ - if (max_queue_depth != -1) - max_request_credit = (max_queue_depth < facts->RequestCredit) - ? max_queue_depth : facts->RequestCredit; - else + if (max_queue_depth != -1 && max_queue_depth != 0) { + max_request_credit = min_t(u16, max_queue_depth + + ioc->hi_priority_depth + ioc->internal_depth, + facts->RequestCredit); + if (max_request_credit > MAX_HBA_QUEUE_DEPTH) + max_request_credit = MAX_HBA_QUEUE_DEPTH; + } else max_request_credit = min_t(u16, facts->RequestCredit, MAX_HBA_QUEUE_DEPTH); @@ -2502,7 +2512,7 @@ /* set the scsi host can_queue depth * with some internal commands that could be outstanding */ - ioc->shost->can_queue = ioc->scsiio_depth - (2); + ioc->shost->can_queue = ioc->scsiio_depth; dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "scsi host: " "can_queue depth (%d)\n", ioc->name, ioc->shost->can_queue)); --- linux-3.5.0.orig/drivers/scsi/libsas/sas_expander.c +++ linux-3.5.0/drivers/scsi/libsas/sas_expander.c @@ -868,7 +868,7 @@ } /* See if this phy is part of a wide port */ -static int sas_ex_join_wide_port(struct domain_device *parent, int phy_id) +static bool sas_ex_join_wide_port(struct domain_device *parent, int phy_id) { struct ex_phy *phy = &parent->ex_dev.ex_phy[phy_id]; int i; @@ -884,11 +884,11 @@ sas_port_add_phy(ephy->port, phy->phy); phy->port = ephy->port; phy->phy_state = PHY_DEVICE_DISCOVERED; - return 0; + return true; } } - return -ENODEV; + return false; } static struct domain_device *sas_ex_discover_expander( @@ -1030,8 +1030,7 @@ return res; } - res = sas_ex_join_wide_port(dev, phy_id); - if (!res) { + if (sas_ex_join_wide_port(dev, phy_id)) { SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n", phy_id, SAS_ADDR(ex_phy->attached_sas_addr)); return res; @@ -1077,8 +1076,7 @@ if (SAS_ADDR(ex->ex_phy[i].attached_sas_addr) == SAS_ADDR(child->sas_addr)) { ex->ex_phy[i].phy_state= PHY_DEVICE_DISCOVERED; - res = sas_ex_join_wide_port(dev, i); - if (!res) + if (sas_ex_join_wide_port(dev, i)) SAS_DPRINTK("Attaching ex phy%d to wide port %016llx\n", i, SAS_ADDR(ex->ex_phy[i].attached_sas_addr)); @@ -1943,32 +1941,20 @@ { struct ex_phy *ex_phy = &dev->ex_dev.ex_phy[phy_id]; struct domain_device *child; - bool found = false; - int res, i; + int res; SAS_DPRINTK("ex %016llx phy%d new device attached\n", SAS_ADDR(dev->sas_addr), phy_id); res = sas_ex_phy_discover(dev, phy_id); if (res) - goto out; - /* to support the wide port inserted */ - for (i = 0; i < dev->ex_dev.num_phys; i++) { - struct ex_phy *ex_phy_temp = &dev->ex_dev.ex_phy[i]; - if (i == phy_id) - continue; - if (SAS_ADDR(ex_phy_temp->attached_sas_addr) == - SAS_ADDR(ex_phy->attached_sas_addr)) { - found = true; - break; - } - } - if (found) { - sas_ex_join_wide_port(dev, phy_id); + return res; + + if (sas_ex_join_wide_port(dev, phy_id)) return 0; - } + res = sas_ex_discover_devices(dev, phy_id); - if (!res) - goto out; + if (res) + return res; list_for_each_entry(child, &dev->ex_dev.children, siblings) { if (SAS_ADDR(child->sas_addr) == SAS_ADDR(ex_phy->attached_sas_addr)) { @@ -1978,7 +1964,6 @@ break; } } -out: return res; } @@ -2109,9 +2094,7 @@ struct domain_device *dev = NULL; res = sas_find_bcast_dev(port_dev, &dev); - if (res) - goto out; - if (dev) { + while (res == 0 && dev) { struct expander_device *ex = &dev->ex_dev; int i = 0, phy_id; @@ -2123,8 +2106,10 @@ res = sas_rediscover(dev, phy_id); i = phy_id + 1; } while (i < ex->num_phys); + + dev = NULL; + res = sas_find_bcast_dev(port_dev, &dev); } -out: return res; } --- linux-3.5.0.orig/drivers/scsi/device_handler/scsi_dh_alua.c +++ linux-3.5.0/drivers/scsi/device_handler/scsi_dh_alua.c @@ -590,8 +590,7 @@ h->state = TPGS_STATE_STANDBY; break; case TPGS_STATE_OFFLINE: - case TPGS_STATE_UNAVAILABLE: - /* Path unusable for unavailable/offline */ + /* Path unusable */ err = SCSI_DH_DEV_OFFLINED; break; default: --- linux-3.5.0.orig/drivers/scsi/isci/request.c +++ linux-3.5.0/drivers/scsi/isci/request.c @@ -1972,7 +1972,7 @@ frame_index, (void **)&frame_buffer); - sci_controller_copy_sata_response(&ireq->stp.req, + sci_controller_copy_sata_response(&ireq->stp.rsp, frame_header, frame_buffer); --- linux-3.5.0.orig/drivers/scsi/isci/probe_roms.c +++ linux-3.5.0/drivers/scsi/isci/probe_roms.c @@ -104,7 +104,6 @@ if (i >= len) { dev_err(&pdev->dev, "oprom parse error\n"); - devm_kfree(&pdev->dev, rom); rom = NULL; } pci_unmap_biosrom(oprom); --- linux-3.5.0.orig/drivers/scsi/isci/init.c +++ linux-3.5.0/drivers/scsi/isci/init.c @@ -630,7 +630,7 @@ return -ENOMEM; pci_set_drvdata(pdev, pci_info); - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) orom = isci_get_efi_var(pdev); if (!orom) @@ -641,7 +641,6 @@ orom->hdr.version)) { dev_warn(&pdev->dev, "[%d]: invalid oem parameters detected, falling back to firmware\n", i); - devm_kfree(&pdev->dev, orom); orom = NULL; break; } --- linux-3.5.0.orig/drivers/scsi/bnx2i/bnx2i_hwi.c +++ linux-3.5.0/drivers/scsi/bnx2i/bnx2i_hwi.c @@ -1264,6 +1264,9 @@ int rc = 0; u64 mask64; + memset(&iscsi_init, 0x00, sizeof(struct iscsi_kwqe_init1)); + memset(&iscsi_init2, 0x00, sizeof(struct iscsi_kwqe_init2)); + bnx2i_adjust_qp_size(hba); iscsi_init.flags = --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_target.h +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_target.h @@ -648,6 +648,7 @@ int (*check_initiator_node_acl)(struct scsi_qla_host *, unsigned char *, void *, uint8_t *, uint16_t); + void (*update_sess)(struct qla_tgt_sess *, port_id_t, uint16_t, bool); struct qla_tgt_sess *(*find_sess_by_loop_id)(struct scsi_qla_host *, const uint16_t); struct qla_tgt_sess *(*find_sess_by_s_id)(struct scsi_qla_host *, --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_os.c +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_os.c @@ -3801,9 +3801,9 @@ "ISP abort end.\n"); } - if (test_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags)) { + if (test_and_clear_bit(FCPORT_UPDATE_NEEDED, + &base_vha->dpc_flags)) { qla2x00_update_fcports(base_vha); - clear_bit(FCPORT_UPDATE_NEEDED, &base_vha->dpc_flags); } if (test_bit(SCR_PENDING, &base_vha->dpc_flags)) { --- linux-3.5.0.orig/drivers/scsi/qla2xxx/qla_target.c +++ linux-3.5.0/drivers/scsi/qla2xxx/qla_target.c @@ -557,6 +557,7 @@ int pmap_len; fc_port_t *fcport; int global_resets; + unsigned long flags; retry: global_resets = atomic_read(&ha->tgt.qla_tgt->tgt_global_resets_count); @@ -625,10 +626,10 @@ sess->s_id.b.area, sess->loop_id, fcport->d_id.b.domain, fcport->d_id.b.al_pa, fcport->d_id.b.area, fcport->loop_id); - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + spin_lock_irqsave(&ha->hardware_lock, flags); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); + spin_unlock_irqrestore(&ha->hardware_lock, flags); res = true; @@ -740,10 +741,9 @@ qlt_undelete_sess(sess); kref_get(&sess->se_sess->sess_kref); - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); + if (sess->local && !local) sess->local = 0; spin_unlock_irqrestore(&ha->hardware_lock, flags); @@ -796,8 +796,7 @@ */ kref_get(&sess->se_sess->sess_kref); - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + sess->conf_compl_supported = (fcport->flags & FCF_CONF_COMP_SUPPORTED); BUILD_BUG_ON(sizeof(sess->port_name) != sizeof(fcport->port_name)); memcpy(sess->port_name, fcport->port_name, sizeof(sess->port_name)); @@ -869,10 +868,8 @@ ql_dbg(ql_dbg_tgt_mgt, vha, 0xf007, "Reappeared sess %p\n", sess); } - sess->s_id = fcport->d_id; - sess->loop_id = fcport->loop_id; - sess->conf_compl_supported = !!(fcport->flags & - FCF_CONF_COMP_SUPPORTED); + ha->tgt.tgt_ops->update_sess(sess, fcport->d_id, fcport->loop_id, + (fcport->flags & FCF_CONF_COMP_SUPPORTED)); } if (sess && sess->local) { @@ -1267,8 +1264,27 @@ struct abts_recv_from_24xx *abts, struct qla_tgt_sess *sess) { struct qla_hw_data *ha = vha->hw; + struct se_session *se_sess = sess->se_sess; struct qla_tgt_mgmt_cmd *mcmd; + struct se_cmd *se_cmd; + u32 lun = 0; int rc; + bool found_lun = false; + + spin_lock(&se_sess->sess_cmd_lock); + list_for_each_entry(se_cmd, &se_sess->sess_cmd_list, se_cmd_list) { + struct qla_tgt_cmd *cmd = + container_of(se_cmd, struct qla_tgt_cmd, se_cmd); + if (cmd->tag == abts->exchange_addr_to_abort) { + lun = cmd->unpacked_lun; + found_lun = true; + break; + } + } + spin_unlock(&se_sess->sess_cmd_lock); + + if (!found_lun) + return -ENOENT; ql_dbg(ql_dbg_tgt_mgt, vha, 0xf00f, "qla_target(%d): task abort (tag=%d)\n", @@ -1286,7 +1302,7 @@ mcmd->sess = sess; memcpy(&mcmd->orig_iocb.abts, abts, sizeof(mcmd->orig_iocb.abts)); - rc = ha->tgt.tgt_ops->handle_tmr(mcmd, 0, TMR_ABORT_TASK, + rc = ha->tgt.tgt_ops->handle_tmr(mcmd, lun, TMR_ABORT_TASK, abts->exchange_addr_to_abort); if (rc != 0) { ql_dbg(ql_dbg_tgt_mgt, vha, 0xf052, @@ -1403,7 +1419,7 @@ ctio->u.status1.scsi_status = __constant_cpu_to_le16(SS_RESPONSE_INFO_LEN_VALID); ctio->u.status1.response_len = __constant_cpu_to_le16(8); - ((uint32_t *)ctio->u.status1.sense_data)[0] = cpu_to_be32(resp_code); + ctio->u.status1.sense_data[0] = resp_code; qla2x00_start_iocbs(ha, ha->req); } --- linux-3.5.0.orig/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ linux-3.5.0/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -1482,6 +1482,78 @@ return 0; } +static void tcm_qla2xxx_update_sess(struct qla_tgt_sess *sess, port_id_t s_id, + uint16_t loop_id, bool conf_compl_supported) +{ + struct qla_tgt *tgt = sess->tgt; + struct qla_hw_data *ha = tgt->ha; + struct tcm_qla2xxx_lport *lport = ha->tgt.target_lport_ptr; + struct se_node_acl *se_nacl = sess->se_sess->se_node_acl; + struct tcm_qla2xxx_nacl *nacl = container_of(se_nacl, + struct tcm_qla2xxx_nacl, se_node_acl); + u32 key; + + + if (sess->loop_id != loop_id || sess->s_id.b24 != s_id.b24) + pr_info("Updating session %p from port %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x loop_id %d -> %d s_id %x:%x:%x -> %x:%x:%x\n", + sess, + sess->port_name[0], sess->port_name[1], + sess->port_name[2], sess->port_name[3], + sess->port_name[4], sess->port_name[5], + sess->port_name[6], sess->port_name[7], + sess->loop_id, loop_id, + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa, + s_id.b.domain, s_id.b.area, s_id.b.al_pa); + + if (sess->loop_id != loop_id) { + /* + * Because we can shuffle loop IDs around and we + * update different sessions non-atomically, we might + * have overwritten this session's old loop ID + * already, and we might end up overwriting some other + * session that will be updated later. So we have to + * be extra careful and we can't warn about those things... + */ + if (lport->lport_loopid_map[sess->loop_id].se_nacl == se_nacl) + lport->lport_loopid_map[sess->loop_id].se_nacl = NULL; + + lport->lport_loopid_map[loop_id].se_nacl = se_nacl; + + sess->loop_id = loop_id; + } + + if (sess->s_id.b24 != s_id.b24) { + key = (((u32) sess->s_id.b.domain << 16) | + ((u32) sess->s_id.b.area << 8) | + ((u32) sess->s_id.b.al_pa)); + + if (btree_lookup32(&lport->lport_fcport_map, key)) + WARN(btree_remove32(&lport->lport_fcport_map, key) != se_nacl, + "Found wrong se_nacl when updating s_id %x:%x:%x\n", + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa); + else + WARN(1, "No lport_fcport_map entry for s_id %x:%x:%x\n", + sess->s_id.b.domain, sess->s_id.b.area, sess->s_id.b.al_pa); + + key = (((u32) s_id.b.domain << 16) | + ((u32) s_id.b.area << 8) | + ((u32) s_id.b.al_pa)); + + if (btree_lookup32(&lport->lport_fcport_map, key)) { + WARN(1, "Already have lport_fcport_map entry for s_id %x:%x:%x\n", + s_id.b.domain, s_id.b.area, s_id.b.al_pa); + btree_update32(&lport->lport_fcport_map, key, se_nacl); + } else { + btree_insert32(&lport->lport_fcport_map, key, se_nacl, GFP_ATOMIC); + } + + sess->s_id = s_id; + nacl->nport_id = key; + } + + sess->conf_compl_supported = conf_compl_supported; +} + /* * Calls into tcm_qla2xxx used by qla2xxx LLD I/O path. */ @@ -1492,6 +1564,7 @@ .free_cmd = tcm_qla2xxx_free_cmd, .free_mcmd = tcm_qla2xxx_free_mcmd, .free_session = tcm_qla2xxx_free_session, + .update_sess = tcm_qla2xxx_update_sess, .check_initiator_node_acl = tcm_qla2xxx_check_initiator_node_acl, .find_sess_by_s_id = tcm_qla2xxx_find_sess_by_s_id, .find_sess_by_loop_id = tcm_qla2xxx_find_sess_by_loop_id, --- linux-3.5.0.orig/drivers/iommu/tegra-smmu.c +++ linux-3.5.0/drivers/iommu/tegra-smmu.c @@ -148,7 +148,7 @@ #define SMMU_ADDR_TO_PFN(addr) ((addr) >> 12) #define SMMU_ADDR_TO_PDN(addr) ((addr) >> 22) -#define SMMU_PDN_TO_ADDR(addr) ((pdn) << 22) +#define SMMU_PDN_TO_ADDR(pdn) ((pdn) << 22) #define _READABLE (1 << SMMU_PTB_DATA_ASID_READABLE_SHIFT) #define _WRITABLE (1 << SMMU_PTB_DATA_ASID_WRITABLE_SHIFT) --- linux-3.5.0.orig/drivers/iommu/intel-iommu.c +++ linux-3.5.0/drivers/iommu/intel-iommu.c @@ -589,7 +589,9 @@ { int i; - domain->iommu_coherency = 1; + i = find_first_bit(domain->iommu_bmp, g_num_of_iommus); + + domain->iommu_coherency = i < g_num_of_iommus ? 1 : 0; for_each_set_bit(i, domain->iommu_bmp, g_num_of_iommus) { if (!ecap_coherent(g_iommus[i]->ecap)) { @@ -1825,10 +1827,17 @@ if (!pte) return -ENOMEM; /* It is large page*/ - if (largepage_lvl > 1) + if (largepage_lvl > 1) { pteval |= DMA_PTE_LARGE_PAGE; - else + /* Ensure that old small page tables are removed to make room + for superpage, if they exist. */ + dma_pte_clear_range(domain, iov_pfn, + iov_pfn + lvl_to_nr_pages(largepage_lvl) - 1); + dma_pte_free_pagetable(domain, iov_pfn, + iov_pfn + lvl_to_nr_pages(largepage_lvl) - 1); + } else { pteval &= ~(uint64_t)DMA_PTE_LARGE_PAGE; + } } /* We don't need lock here, nobody else @@ -2317,8 +2326,39 @@ return 0; } +static bool device_has_rmrr(struct pci_dev *dev) +{ + struct dmar_rmrr_unit *rmrr; + int i; + + for_each_rmrr_units(rmrr) { + for (i = 0; i < rmrr->devices_cnt; i++) { + /* + * Return TRUE if this RMRR contains the device that + * is passed in. + */ + if (rmrr->devices[i] == dev) + return true; + } + } + return false; +} + static int iommu_should_identity_map(struct pci_dev *pdev, int startup) { + + /* + * We want to prevent any device associated with an RMRR from + * getting placed into the SI Domain. This is done because + * problems exist when devices are moved in and out of domains + * and their respective RMRR info is lost. We exempt USB devices + * from this process due to their usage of RMRRs that are known + * to not be needed after BIOS hand-off to OS. + */ + if (device_has_rmrr(pdev) && + (pdev->class >> 8) != PCI_CLASS_SERIAL_USB) + return 0; + if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev)) return 1; @@ -4151,23 +4191,38 @@ .pgsize_bitmap = INTEL_IOMMU_PGSIZES, }; +static void quirk_iommu_g4x_gfx(struct pci_dev *dev) +{ + /* G4x/GM45 integrated gfx dmar support is totally busted. */ + printk(KERN_INFO "DMAR: Disabling IOMMU for graphics on this chipset\n"); + dmar_map_gfx = 0; +} + +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e10, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e20, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e30, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e40, quirk_iommu_g4x_gfx); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e90, quirk_iommu_g4x_gfx); + static void __devinit quirk_iommu_rwbf(struct pci_dev *dev) { /* * Mobile 4 Series Chipset neglects to set RWBF capability, - * but needs it: + * but needs it. Same seems to hold for the desktop versions. */ printk(KERN_INFO "DMAR: Forcing write-buffer flush capability\n"); rwbf_quirk = 1; - - /* https://bugzilla.redhat.com/show_bug.cgi?id=538163 */ - if (dev->revision == 0x07) { - printk(KERN_INFO "DMAR: Disabling IOMMU for graphics on this chipset\n"); - dmar_map_gfx = 0; - } } DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2a40, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e00, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e10, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e20, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e30, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e40, quirk_iommu_rwbf); +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e90, quirk_iommu_rwbf); #define GGC 0x52 #define GGC_MEMORY_SIZE_MASK (0xf << 8) --- linux-3.5.0.orig/drivers/iommu/amd_iommu_v2.c +++ linux-3.5.0/drivers/iommu/amd_iommu_v2.c @@ -681,6 +681,8 @@ atomic_set(&pasid_state->count, 1); init_waitqueue_head(&pasid_state->wq); + spin_lock_init(&pasid_state->lock); + pasid_state->task = task; pasid_state->mm = get_task_mm(task); pasid_state->device_state = dev_state; --- linux-3.5.0.orig/drivers/iommu/amd_iommu.c +++ linux-3.5.0/drivers/iommu/amd_iommu.c @@ -2254,6 +2254,18 @@ iommu_init_device(dev); + /* + * dev_data is still NULL and + * got initialized in iommu_init_device + */ + dev_data = get_dev_data(dev); + + if (iommu_pass_through || dev_data->iommu_v2) { + dev_data->passthrough = true; + attach_device(dev, pt_domain); + break; + } + domain = domain_for_device(dev); /* allocate a protection domain if a device is added */ @@ -2271,10 +2283,7 @@ dev_data = get_dev_data(dev); - if (!dev_data->passthrough) - dev->archdata.dma_ops = &amd_iommu_dma_ops; - else - dev->archdata.dma_ops = &nommu_dma_ops; + dev->archdata.dma_ops = &amd_iommu_dma_ops; break; case BUS_NOTIFY_DEL_DEVICE: --- linux-3.5.0.orig/drivers/iommu/amd_iommu_init.c +++ linux-3.5.0/drivers/iommu/amd_iommu_init.c @@ -1002,6 +1002,38 @@ } /* + * Family15h Model 10h-1fh erratum 746 (IOMMU Logging May Stall Translations) + * Workaround: + * BIOS should disable L2B micellaneous clock gating by setting + * L2_L2B_CK_GATE_CONTROL[CKGateL2BMiscDisable](D0F2xF4_x90[2]) = 1b + */ +static void __init amd_iommu_erratum_746_workaround(struct amd_iommu *iommu) +{ + u32 value; + + if ((boot_cpu_data.x86 != 0x15) || + (boot_cpu_data.x86_model < 0x10) || + (boot_cpu_data.x86_model > 0x1f)) + return; + + pci_write_config_dword(iommu->dev, 0xf0, 0x90); + pci_read_config_dword(iommu->dev, 0xf4, &value); + + if (value & BIT(2)) + return; + + /* Select NB indirect register 0x90 and enable writing */ + pci_write_config_dword(iommu->dev, 0xf0, 0x90 | (1 << 8)); + + pci_write_config_dword(iommu->dev, 0xf4, value | 0x4); + pr_info("AMD-Vi: Applying erratum 746 workaround for IOMMU at %s\n", + dev_name(&iommu->dev->dev)); + + /* Clear the enable writing bit */ + pci_write_config_dword(iommu->dev, 0xf0, 0x90); +} + +/* * This function clues the initialization function for one IOMMU * together and also allocates the command buffer and programs the * hardware. It does NOT enable the IOMMU. This is done afterwards. @@ -1062,6 +1094,8 @@ if (iommu->cap & (1UL << IOMMU_CAP_NPCACHE)) amd_iommu_np_cache = true; + amd_iommu_erratum_746_workaround(iommu); + return pci_enable_device(iommu->dev); } --- linux-3.5.0.orig/drivers/iommu/intel_irq_remapping.c +++ linux-3.5.0/drivers/iommu/intel_irq_remapping.c @@ -736,6 +736,7 @@ { struct dmar_drhd_unit *drhd; int ir_supported = 0; + int ioapic_idx; for_each_drhd_unit(drhd) { struct intel_iommu *iommu = drhd->iommu; @@ -748,13 +749,20 @@ } } - if (ir_supported && ir_ioapic_num != nr_ioapics) { - printk(KERN_WARNING - "Not all IO-APIC's listed under remapping hardware\n"); - return -1; + if (!ir_supported) + return 0; + + for (ioapic_idx = 0; ioapic_idx < nr_ioapics; ioapic_idx++) { + int ioapic_id = mpc_ioapic_id(ioapic_idx); + if (!map_ioapic_to_ir(ioapic_id)) { + pr_err(FW_BUG "ioapic %d has no mapping iommu, " + "interrupt remapping will be disabled\n", + ioapic_id); + return -1; + } } - return ir_supported; + return 1; } int __init ir_dev_scope_init(void) --- linux-3.5.0.orig/drivers/media/rc/ite-cir.c +++ linux-3.5.0/drivers/media/rc/ite-cir.c @@ -1473,6 +1473,7 @@ rdev = rc_allocate_device(); if (!rdev) goto failure; + itdev->rdev = rdev; ret = -ENODEV; @@ -1604,7 +1605,6 @@ if (ret) goto failure3; - itdev->rdev = rdev; ite_pr(KERN_NOTICE, "driver has been successfully loaded\n"); return 0; --- linux-3.5.0.orig/drivers/media/rc/rc-main.c +++ linux-3.5.0/drivers/media/rc/rc-main.c @@ -775,11 +775,13 @@ if (dev->driver_type == RC_DRIVER_SCANCODE) { enabled = dev->rc_map.rc_type; allowed = dev->allowed_protos; - } else { + } else if (dev->raw) { enabled = dev->raw->enabled_protocols; allowed = ir_raw_get_allowed_protocols(); + } else { + mutex_unlock(&dev->lock); + return -ENODEV; } - IR_dprintk(1, "allowed - 0x%llx, enabled - 0x%llx\n", (long long)allowed, (long long)enabled); --- linux-3.5.0.orig/drivers/media/rc/ene_ir.c +++ linux-3.5.0/drivers/media/rc/ene_ir.c @@ -1018,6 +1018,8 @@ spin_lock_init(&dev->hw_lock); + dev->hw_io = pnp_port_start(pnp_dev, 0); + pnp_set_drvdata(pnp_dev, dev); dev->pnp_dev = pnp_dev; @@ -1072,7 +1074,6 @@ /* claim the resources */ error = -EBUSY; - dev->hw_io = pnp_port_start(pnp_dev, 0); if (!request_region(dev->hw_io, ENE_IO_SIZE, ENE_DRIVER_NAME)) { dev->hw_io = -1; dev->irq = -1; --- linux-3.5.0.orig/drivers/media/dvb/frontends/lgs8gxx.c +++ linux-3.5.0/drivers/media/dvb/frontends/lgs8gxx.c @@ -40,6 +40,8 @@ static int debug; static int fake_signal_str = 1; +#define LGS8GXX_FIRMWARE "lgs8g75.fw" + module_param(debug, int, 0644); MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off)."); @@ -592,7 +594,7 @@ int rc; int i; - rc = request_firmware(&fw, "lgs8g75.fw", &priv->i2c->dev); + rc = request_firmware(&fw, LGS8GXX_FIRMWARE, &priv->i2c->dev); if (rc) return rc; @@ -1070,3 +1072,4 @@ MODULE_DESCRIPTION("Legend Silicon LGS8913/LGS8GXX DMB-TH demodulator driver"); MODULE_AUTHOR("David T. L. Wong "); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(LGS8GXX_FIRMWARE); --- linux-3.5.0.orig/drivers/media/dvb/siano/smsusb.c +++ linux-3.5.0/drivers/media/dvb/siano/smsusb.c @@ -481,7 +481,7 @@ return 0; } -static const struct usb_device_id smsusb_id_table[] __devinitconst = { +static const struct usb_device_id smsusb_id_table[] = { { USB_DEVICE(0x187f, 0x0010), .driver_info = SMS1XXX_BOARD_SIANO_STELLAR }, { USB_DEVICE(0x187f, 0x0100), --- linux-3.5.0.orig/drivers/media/common/tuners/xc5000.c +++ linux-3.5.0/drivers/media/common/tuners/xc5000.c @@ -210,13 +210,15 @@ u16 size; }; +#define XC5000A_FIRMWARE "dvb-fe-xc5000-1.6.114.fw" static const struct xc5000_fw_cfg xc5000a_1_6_114 = { - .name = "dvb-fe-xc5000-1.6.114.fw", + .name = XC5000A_FIRMWARE, .size = 12401, }; +#define XC5000C_FIRMWARE "dvb-fe-xc5000c-41.024.5.fw" static const struct xc5000_fw_cfg xc5000c_41_024_5 = { - .name = "dvb-fe-xc5000c-41.024.5.fw", + .name = XC5000C_FIRMWARE, .size = 16497, }; @@ -1253,3 +1255,5 @@ MODULE_AUTHOR("Steven Toth"); MODULE_DESCRIPTION("Xceive xc5000 silicon tuner driver"); MODULE_LICENSE("GPL"); +MODULE_FIRMWARE(XC5000A_FIRMWARE); +MODULE_FIRMWARE(XC5000C_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/s2255drv.c +++ linux-3.5.0/drivers/media/video/s2255drv.c @@ -2686,3 +2686,4 @@ MODULE_AUTHOR("Dean Anderson (Sensoray Company Inc.)"); MODULE_LICENSE("GPL"); MODULE_VERSION(S2255_VERSION); +MODULE_FIRMWARE(FIRMWARE_FILE_NAME); --- linux-3.5.0.orig/drivers/media/video/v4l2-device.c +++ linux-3.5.0/drivers/media/video/v4l2-device.c @@ -159,31 +159,21 @@ sd->v4l2_dev = v4l2_dev; if (sd->internal_ops && sd->internal_ops->registered) { err = sd->internal_ops->registered(sd); - if (err) { - module_put(sd->owner); - return err; - } + if (err) + goto error_module; } /* This just returns 0 if either of the two args is NULL */ err = v4l2_ctrl_add_handler(v4l2_dev->ctrl_handler, sd->ctrl_handler); - if (err) { - if (sd->internal_ops && sd->internal_ops->unregistered) - sd->internal_ops->unregistered(sd); - module_put(sd->owner); - return err; - } + if (err) + goto error_unregister; #if defined(CONFIG_MEDIA_CONTROLLER) /* Register the entity. */ if (v4l2_dev->mdev) { err = media_device_register_entity(v4l2_dev->mdev, entity); - if (err < 0) { - if (sd->internal_ops && sd->internal_ops->unregistered) - sd->internal_ops->unregistered(sd); - module_put(sd->owner); - return err; - } + if (err < 0) + goto error_unregister; } #endif @@ -192,6 +182,14 @@ spin_unlock(&v4l2_dev->lock); return 0; + +error_unregister: + if (sd->internal_ops && sd->internal_ops->unregistered) + sd->internal_ops->unregistered(sd); +error_module: + module_put(sd->owner); + sd->v4l2_dev = NULL; + return err; } EXPORT_SYMBOL_GPL(v4l2_device_register_subdev); --- linux-3.5.0.orig/drivers/media/video/videobuf-dma-contig.c +++ linux-3.5.0/drivers/media/video/videobuf-dma-contig.c @@ -359,32 +359,43 @@ size = vma->vm_end - vma->vm_start; size = (size < mem->size) ? size : mem->size; - if (!mem->cached) + if (!mem->cached) { vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); - - pos = (unsigned long)mem->vaddr; - - while (size > 0) { - page = virt_to_page((void *)pos); - if (NULL == page) { - dev_err(q->dev, "mmap: virt_to_page failed\n"); - __videobuf_dc_free(q->dev, mem); - goto error; - } - retval = vm_insert_page(vma, start, page); + retval = remap_pfn_range(vma, vma->vm_start, + mem->dma_handle >> PAGE_SHIFT, + size, vma->vm_page_prot); if (retval) { - dev_err(q->dev, "mmap: insert failed with error %d\n", - retval); - __videobuf_dc_free(q->dev, mem); + dev_err(q->dev, "mmap: remap failed with error %d. ", + retval); + dma_free_coherent(q->dev, mem->size, + mem->vaddr, mem->dma_handle); goto error; } - start += PAGE_SIZE; - pos += PAGE_SIZE; + } else { + pos = (unsigned long)mem->vaddr; + + while (size > 0) { + page = virt_to_page((void *)pos); + if (NULL == page) { + dev_err(q->dev, "mmap: virt_to_page failed\n"); + __videobuf_dc_free(q->dev, mem); + goto error; + } + retval = vm_insert_page(vma, start, page); + if (retval) { + dev_err(q->dev, "mmap: insert failed with error %d\n", + retval); + __videobuf_dc_free(q->dev, mem); + goto error; + } + start += PAGE_SIZE; + pos += PAGE_SIZE; - if (size > PAGE_SIZE) - size -= PAGE_SIZE; - else - size = 0; + if (size > PAGE_SIZE) + size -= PAGE_SIZE; + else + size = 0; + } } vma->vm_ops = &videobuf_vm_ops; --- linux-3.5.0.orig/drivers/media/video/cx231xx/cx231xx-417.c +++ linux-3.5.0/drivers/media/video/cx231xx/cx231xx-417.c @@ -2193,3 +2193,5 @@ return 0; } + +MODULE_FIRMWARE(CX231xx_FIRM_IMAGE_NAME); --- linux-3.5.0.orig/drivers/media/video/au0828/au0828-video.c +++ linux-3.5.0/drivers/media/video/au0828/au0828-video.c @@ -1692,14 +1692,18 @@ (AUVI_INPUT(i).audio_setup)(dev, 0); } - videobuf_streamoff(&fh->vb_vidq); - res_free(fh, AU0828_RESOURCE_VIDEO); + if (res_check(fh, AU0828_RESOURCE_VIDEO)) { + videobuf_streamoff(&fh->vb_vidq); + res_free(fh, AU0828_RESOURCE_VIDEO); + } } else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE) { dev->vbi_timeout_running = 0; del_timer_sync(&dev->vbi_timeout); - videobuf_streamoff(&fh->vb_vbiq); - res_free(fh, AU0828_RESOURCE_VBI); + if (res_check(fh, AU0828_RESOURCE_VBI)) { + videobuf_streamoff(&fh->vb_vbiq); + res_free(fh, AU0828_RESOURCE_VBI); + } } return 0; --- linux-3.5.0.orig/drivers/media/video/gspca/jl2005bcd.c +++ linux-3.5.0/drivers/media/video/gspca/jl2005bcd.c @@ -514,7 +514,7 @@ }; /* -- module initialisation -- */ -static const __devinitdata struct usb_device_id device_table[] = { +static const struct usb_device_id device_table[] = { {USB_DEVICE(0x0979, 0x0227)}, {} }; --- linux-3.5.0.orig/drivers/media/video/gspca/spca506.c +++ linux-3.5.0/drivers/media/video/gspca/spca506.c @@ -685,7 +685,7 @@ }; /* -- module initialisation -- */ -static const struct usb_device_id device_table[] __devinitconst = { +static const struct usb_device_id device_table[] = { {USB_DEVICE(0x06e1, 0xa190)}, /*fixme: may be IntelPCCameraPro BRIDGE_SPCA505 {USB_DEVICE(0x0733, 0x0430)}, */ --- linux-3.5.0.orig/drivers/media/video/gspca/kinect.c +++ linux-3.5.0/drivers/media/video/gspca/kinect.c @@ -390,6 +390,7 @@ /* -- module initialisation -- */ static const struct usb_device_id device_table[] = { {USB_DEVICE(0x045e, 0x02ae)}, + {USB_DEVICE(0x045e, 0x02bf)}, {} }; --- linux-3.5.0.orig/drivers/media/video/gspca/pac7302.c +++ linux-3.5.0/drivers/media/video/gspca/pac7302.c @@ -978,6 +978,7 @@ {USB_DEVICE(0x093a, 0x262a)}, {USB_DEVICE(0x093a, 0x262c)}, {USB_DEVICE(0x145f, 0x013c)}, + {USB_DEVICE(0x1ae7, 0x2001)}, /* SpeedLink Snappy Mic SL-6825-SBK */ {} }; MODULE_DEVICE_TABLE(usb, device_table); --- linux-3.5.0.orig/drivers/media/video/pvrusb2/pvrusb2-devattr.c +++ linux-3.5.0/drivers/media/video/pvrusb2/pvrusb2-devattr.c @@ -54,8 +54,9 @@ { .module_id = PVR2_CLIENT_ID_DEMOD }, }; +#define PVR2_FIRMWARE_29xxx "v4l-pvrusb2-29xxx-01.fw" static const char *pvr2_fw1_names_29xxx[] = { - "v4l-pvrusb2-29xxx-01.fw", + PVR2_FIRMWARE_29xxx, }; static const struct pvr2_device_desc pvr2_device_29xxx = { @@ -87,8 +88,9 @@ { .module_id = PVR2_CLIENT_ID_DEMOD }, }; +#define PVR2_FIRMWARE_24xxx "v4l-pvrusb2-24xxx-01.fw" static const char *pvr2_fw1_names_24xxx[] = { - "v4l-pvrusb2-24xxx-01.fw", + PVR2_FIRMWARE_24xxx, }; static const struct pvr2_device_desc pvr2_device_24xxx = { @@ -369,8 +371,9 @@ .i2c_address_list = "\x42"}, }; +#define PVR2_FIRMWARE_73xxx "v4l-pvrusb2-73xxx-01.fw" static const char *pvr2_fw1_names_73xxx[] = { - "v4l-pvrusb2-73xxx-01.fw", + PVR2_FIRMWARE_73xxx, }; static const struct pvr2_device_desc pvr2_device_73xxx = { @@ -475,8 +478,9 @@ }; #endif +#define PVR2_FIRMWARE_75xxx "v4l-pvrusb2-73xxx-01.fw" static const char *pvr2_fw1_names_75xxx[] = { - "v4l-pvrusb2-73xxx-01.fw", + PVR2_FIRMWARE_75xxx, }; static const struct pvr2_device_desc pvr2_device_750xx = { @@ -556,7 +560,10 @@ }; MODULE_DEVICE_TABLE(usb, pvr2_device_table); - +MODULE_FIRMWARE(PVR2_FIRMWARE_29xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_24xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_73xxx); +MODULE_FIRMWARE(PVR2_FIRMWARE_75xxx); /* Stuff for Emacs to see, in order to encourage consistent editing style: --- linux-3.5.0.orig/drivers/media/video/uvc/uvc_queue.c +++ linux-3.5.0/drivers/media/video/uvc/uvc_queue.c @@ -338,6 +338,7 @@ if ((queue->flags & UVC_QUEUE_DROP_CORRUPTED) && buf->error) { buf->error = 0; buf->state = UVC_BUF_STATE_QUEUED; + buf->bytesused = 0; vb2_set_plane_payload(&buf->buf, 0, 0); return buf; } --- linux-3.5.0.orig/drivers/media/video/uvc/uvc_video.c +++ linux-3.5.0/drivers/media/video/uvc/uvc_video.c @@ -1188,7 +1188,11 @@ u8 *mem; int len, ret; - if (urb->actual_length == 0) + /* + * Ignore ZLPs if they're not part of a frame, otherwise process them + * to trigger the end of payload detection. + */ + if (urb->actual_length == 0 && stream->bulk.header_size == 0) return; mem = urb->transfer_buffer; @@ -1594,7 +1598,7 @@ psize = le16_to_cpu(ep->desc.wMaxPacketSize); psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); if (psize >= bandwidth && psize <= best_psize) { - altsetting = i; + altsetting = alts->desc.bAlternateSetting; best_psize = psize; best_ep = ep; } --- linux-3.5.0.orig/drivers/media/video/m5mols/m5mols_controls.c +++ linux-3.5.0/drivers/media/video/m5mols/m5mols_controls.c @@ -527,8 +527,8 @@ /* Supported manual ISO values */ static const s64 iso_qmenu[] = { - /* AE_ISO: 0x01...0x07 */ - 50, 100, 200, 400, 800, 1600, 3200 + /* AE_ISO: 0x01...0x07 (ISO: 50...3200) */ + 50000, 100000, 200000, 400000, 800000, 1600000, 3200000 }; /* Supported Exposure Bias values, -2.0EV...+2.0EV */ --- linux-3.5.0.orig/drivers/media/video/cx23885/cx23885-417.c +++ linux-3.5.0/drivers/media/video/cx23885/cx23885-417.c @@ -1786,3 +1786,5 @@ return 0; } + +MODULE_FIRMWARE(CX23885_FIRM_IMAGE_NAME); --- linux-3.5.0.orig/drivers/media/video/ivtv/ivtv-firmware.c +++ linux-3.5.0/drivers/media/video/ivtv/ivtv-firmware.c @@ -396,3 +396,7 @@ return res; } + +MODULE_FIRMWARE(CX2341X_FIRM_ENC_FILENAME); +MODULE_FIRMWARE(CX2341X_FIRM_DEC_FILENAME); +MODULE_FIRMWARE(IVTV_DECODE_INIT_MPEG_FILENAME); --- linux-3.5.0.orig/drivers/media/video/em28xx/em28xx-cards.c +++ linux-3.5.0/drivers/media/video/em28xx/em28xx-cards.c @@ -2880,12 +2880,20 @@ } -#if defined(CONFIG_MODULES) && defined(MODULE) static void request_module_async(struct work_struct *work) { struct em28xx *dev = container_of(work, struct em28xx, request_module_wk); + /* + * The em28xx extensions can be modules or builtin. If the + * modules are already loaded or are built in, those extensions + * can be initialised right now. Otherwise, the module init + * code will do it. + */ + em28xx_init_extension(dev); + +#if defined(CONFIG_MODULES) && defined(MODULE) if (dev->has_audio_class) request_module("snd-usb-audio"); else if (dev->has_alsa_audio) @@ -2895,6 +2903,7 @@ request_module("em28xx-dvb"); if (dev->board.ir_codes && !disable_ir) request_module("em28xx-rc"); +#endif /* CONFIG_MODULES */ } static void request_modules(struct em28xx *dev) @@ -2907,10 +2916,6 @@ { flush_work_sync(&dev->request_module_wk); } -#else -#define request_modules(dev) -#define flush_request_modules(dev) -#endif /* CONFIG_MODULES */ /* * em28xx_release_resources() @@ -3329,13 +3334,6 @@ */ mutex_unlock(&dev->lock); - /* - * These extensions can be modules. If the modules are already - * loaded then we can initialise the device now, otherwise we - * will initialise it when the modules load instead. - */ - em28xx_init_extension(dev); - return 0; unlock_and_free: --- linux-3.5.0.orig/drivers/media/video/tlg2300/pd-main.c +++ linux-3.5.0/drivers/media/video/tlg2300/pd-main.c @@ -53,7 +53,8 @@ module_param(debug_mode, int, 0644); MODULE_PARM_DESC(debug_mode, "0 = disable, 1 = enable, 2 = verbose"); -static const char *firmware_name = "tlg2300_firmware.bin"; +#define TLG2300_FIRMWARE "tlg2300_firmware.bin" +static const char *firmware_name = TLG2300_FIRMWARE; static struct usb_driver poseidon_driver; static LIST_HEAD(pd_device_list); @@ -532,3 +533,4 @@ MODULE_DESCRIPTION("For tlg2300-based USB device "); MODULE_LICENSE("GPL"); MODULE_VERSION("0.0.2"); +MODULE_FIRMWARE(TLG2300_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/s5p-fimc/fimc-lite.c +++ linux-3.5.0/drivers/media/video/s5p-fimc/fimc-lite.c @@ -487,8 +487,7 @@ struct fimc_lite *fimc = video_drvdata(file); int ret; - if (mutex_lock_interruptible(&fimc->lock)) - return -ERESTARTSYS; + mutex_lock(&fimc->lock); if (--fimc->ref_count == 0 && fimc->out_path == FIMC_IO_DMA) { clear_bit(ST_FLITE_IN_USE, &fimc->state); --- linux-3.5.0.orig/drivers/media/video/cpia2/cpia2_core.c +++ linux-3.5.0/drivers/media/video/cpia2/cpia2_core.c @@ -31,11 +31,15 @@ #include "cpia2.h" +#include #include #include #include #include +#define FIRMWARE "cpia2/stv0672_vp4.bin" +MODULE_FIRMWARE(FIRMWARE); + /* #define _CPIA2_DEBUG_ */ #ifdef _CPIA2_DEBUG_ @@ -898,7 +902,7 @@ static int apply_vp_patch(struct camera_data *cam) { const struct firmware *fw; - const char fw_name[] = "cpia2/stv0672_vp4.bin"; + const char fw_name[] = FIRMWARE; int i, ret; struct cpia2_command cmd; --- linux-3.5.0.orig/drivers/media/video/cx25840/cx25840-firmware.c +++ linux-3.5.0/drivers/media/video/cx25840/cx25840-firmware.c @@ -61,6 +61,10 @@ cx25840_write(client, 0x803, 0x03); } +#define CX2388x_FIRMWARE "v4l-cx23885-avcore-01.fw" +#define CX231xx_FIRMWARE "v4l-cx231xx-avcore-01.fw" +#define CX25840_FIRMWARE "v4l-cx25840.fw" + static const char *get_fw_name(struct i2c_client *client) { struct cx25840_state *state = to_state(i2c_get_clientdata(client)); @@ -68,10 +72,10 @@ if (firmware[0]) return firmware; if (is_cx2388x(state)) - return "v4l-cx23885-avcore-01.fw"; + return CX2388x_FIRMWARE; if (is_cx231xx(state)) - return "v4l-cx231xx-avcore-01.fw"; - return "v4l-cx25840.fw"; + return CX231xx_FIRMWARE; + return CX25840_FIRMWARE; } static int check_fw_load(struct i2c_client *client, int size) @@ -164,3 +168,8 @@ return check_fw_load(client, size); } + +MODULE_FIRMWARE(CX2388x_FIRMWARE); +MODULE_FIRMWARE(CX231xx_FIRMWARE); +MODULE_FIRMWARE(CX25840_FIRMWARE); + --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-driver.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-driver.c @@ -1357,3 +1357,4 @@ module_init(module_start); module_exit(module_cleanup); +MODULE_FIRMWARE(XC2028_DEFAULT_FIRMWARE); --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-av-firmware.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-av-firmware.c @@ -221,3 +221,5 @@ release_firmware(fw); return 0; } + +MODULE_FIRMWARE(FWFILE); --- linux-3.5.0.orig/drivers/media/video/cx18/cx18-firmware.c +++ linux-3.5.0/drivers/media/video/cx18/cx18-firmware.c @@ -376,6 +376,9 @@ cx18_write_reg(cx, 0x00000101, CX18_WMB_CLIENT14); /* AVO */ } +#define CX18_CPU_FIRMWARE "v4l-cx23418-cpu.fw" +#define CX18_APU_FIRMWARE "v4l-cx23418-apu.fw" + int cx18_firmware_init(struct cx18 *cx) { u32 fw_entry_addr; @@ -400,7 +403,7 @@ cx18_sw1_irq_enable(cx, IRQ_CPU_TO_EPU | IRQ_APU_TO_EPU); cx18_sw2_irq_enable(cx, IRQ_CPU_TO_EPU_ACK | IRQ_APU_TO_EPU_ACK); - sz = load_cpu_fw_direct("v4l-cx23418-cpu.fw", cx->enc_mem, cx); + sz = load_cpu_fw_direct(CX18_CPU_FIRMWARE, cx->enc_mem, cx); if (sz <= 0) return sz; @@ -408,7 +411,7 @@ cx18_init_scb(cx); fw_entry_addr = 0; - sz = load_apu_fw_direct("v4l-cx23418-apu.fw", cx->enc_mem, cx, + sz = load_apu_fw_direct(CX18_APU_FIRMWARE, cx->enc_mem, cx, &fw_entry_addr); if (sz <= 0) return sz; @@ -451,3 +454,6 @@ cx18_write_reg_expect(cx, 0x14001400, 0xc78110, 0x00001400, 0x14001400); return 0; } + +MODULE_FIRMWARE(CX18_CPU_FIRMWARE); +MODULE_FIRMWARE(CX18_APU_FIRMWARE); --- linux-3.5.0.orig/drivers/i2c/muxes/i2c-mux-pinctrl.c +++ linux-3.5.0/drivers/i2c/muxes/i2c-mux-pinctrl.c @@ -169,7 +169,7 @@ mux->busses = devm_kzalloc(&pdev->dev, sizeof(mux->busses) * mux->pdata->bus_count, GFP_KERNEL); - if (!mux->states) { + if (!mux->busses) { dev_err(&pdev->dev, "Cannot allocate busses\n"); ret = -ENOMEM; goto err; --- linux-3.5.0.orig/drivers/i2c/busses/Kconfig +++ linux-3.5.0/drivers/i2c/busses/Kconfig @@ -104,6 +104,7 @@ DH89xxCC (PCH) Panther Point (PCH) Lynx Point (PCH) + Lynx Point-LP (PCH) This driver can also be built as a module. If so, the module will be called i2c-i801. @@ -350,9 +351,13 @@ devices such as DaVinci NIC. For details please see http://www.ti.com/davinci +config I2C_DESIGNWARE_CORE + tristate + config I2C_DESIGNWARE_PLATFORM tristate "Synopsys DesignWare Platform" depends on HAVE_CLK + select I2C_DESIGNWARE_CORE help If you say yes to this option, support will be included for the Synopsys DesignWare I2C adapter. Only master mode is supported. @@ -363,6 +368,7 @@ config I2C_DESIGNWARE_PCI tristate "Synopsys DesignWare PCI" depends on PCI + select I2C_DESIGNWARE_CORE help If you say yes to this option, support will be included for the Synopsys DesignWare I2C adapter. Only master mode is supported. --- linux-3.5.0.orig/drivers/i2c/busses/i2c-powermac.c +++ linux-3.5.0/drivers/i2c/busses/i2c-powermac.c @@ -227,28 +227,138 @@ return 0; } +static u32 __devinit i2c_powermac_get_addr(struct i2c_adapter *adap, + struct pmac_i2c_bus *bus, + struct device_node *node) +{ + const __be32 *prop; + int len; + + /* First check for valid "reg" */ + prop = of_get_property(node, "reg", &len); + if (prop && (len >= sizeof(int))) + return (be32_to_cpup(prop) & 0xff) >> 1; + + /* Then check old-style "i2c-address" */ + prop = of_get_property(node, "i2c-address", &len); + if (prop && (len >= sizeof(int))) + return (be32_to_cpup(prop) & 0xff) >> 1; + + /* Now handle some devices with missing "reg" properties */ + if (!strcmp(node->name, "cereal")) + return 0x60; + else if (!strcmp(node->name, "deq")) + return 0x34; + + dev_warn(&adap->dev, "No i2c address for %s\n", node->full_name); + + return 0xffffffff; +} + +static void __devinit i2c_powermac_create_one(struct i2c_adapter *adap, + const char *type, + u32 addr) +{ + struct i2c_board_info info = {}; + struct i2c_client *newdev; + + strncpy(info.type, type, sizeof(info.type)); + info.addr = addr; + newdev = i2c_new_device(adap, &info); + if (!newdev) + dev_err(&adap->dev, + "i2c-powermac: Failure to register missing %s\n", + type); +} + +static void __devinit i2c_powermac_add_missing(struct i2c_adapter *adap, + struct pmac_i2c_bus *bus, + bool found_onyx) +{ + struct device_node *busnode = pmac_i2c_get_bus_node(bus); + int rc; + + /* Check for the onyx audio codec */ +#define ONYX_REG_CONTROL 67 + if (of_device_is_compatible(busnode, "k2-i2c") && !found_onyx) { + union i2c_smbus_data data; + + rc = i2c_smbus_xfer(adap, 0x46, 0, I2C_SMBUS_READ, + ONYX_REG_CONTROL, I2C_SMBUS_BYTE_DATA, + &data); + if (rc >= 0) + i2c_powermac_create_one(adap, "MAC,pcm3052", 0x46); + + rc = i2c_smbus_xfer(adap, 0x47, 0, I2C_SMBUS_READ, + ONYX_REG_CONTROL, I2C_SMBUS_BYTE_DATA, + &data); + if (rc >= 0) + i2c_powermac_create_one(adap, "MAC,pcm3052", 0x47); + } +} + +static bool __devinit i2c_powermac_get_type(struct i2c_adapter *adap, + struct device_node *node, + u32 addr, char *type, int type_size) +{ + char tmp[16]; + + /* Note: we to _NOT_ want the standard + * i2c drivers to match with any of our powermac stuff + * unless they have been specifically modified to handle + * it on a case by case basis. For example, for thermal + * control, things like lm75 etc... shall match with their + * corresponding windfarm drivers, _NOT_ the generic ones, + * so we force a prefix of AAPL, onto the modalias to + * make that happen + */ + + /* First try proper modalias */ + if (of_modalias_node(node, tmp, sizeof(tmp)) >= 0) { + snprintf(type, type_size, "MAC,%s", tmp); + return true; + } + + /* Now look for known workarounds */ + if (!strcmp(node->name, "deq")) { + /* Apple uses address 0x34 for TAS3001 and 0x35 for TAS3004 */ + if (addr == 0x34) { + snprintf(type, type_size, "MAC,tas3001"); + return true; + } else if (addr == 0x35) { + snprintf(type, type_size, "MAC,tas3004"); + return true; + } + } + + dev_err(&adap->dev, "i2c-powermac: modalias failure" + " on %s\n", node->full_name); + return false; +} + static void __devinit i2c_powermac_register_devices(struct i2c_adapter *adap, struct pmac_i2c_bus *bus) { struct i2c_client *newdev; struct device_node *node; + bool found_onyx = 0; + + /* + * In some cases we end up with the via-pmu node itself, in this + * case we skip this function completely as the device-tree will + * not contain anything useful. + */ + if (!strcmp(adap->dev.of_node->name, "via-pmu")) + return; for_each_child_of_node(adap->dev.of_node, node) { struct i2c_board_info info = {}; - struct dev_archdata dev_ad = {}; - const __be32 *reg; - char tmp[16]; u32 addr; - int len; /* Get address & channel */ - reg = of_get_property(node, "reg", &len); - if (!reg || (len < sizeof(int))) { - dev_err(&adap->dev, "i2c-powermac: invalid reg on %s\n", - node->full_name); + addr = i2c_powermac_get_addr(adap, bus, node); + if (addr == 0xffffffff) continue; - } - addr = be32_to_cpup(reg); /* Multibus setup, check channel */ if (!pmac_i2c_match_adapter(node, adap)) @@ -257,27 +367,23 @@ dev_dbg(&adap->dev, "i2c-powermac: register %s\n", node->full_name); - /* Make up a modalias. Note: we to _NOT_ want the standard - * i2c drivers to match with any of our powermac stuff - * unless they have been specifically modified to handle - * it on a case by case basis. For example, for thermal - * control, things like lm75 etc... shall match with their - * corresponding windfarm drivers, _NOT_ the generic ones, - * so we force a prefix of AAPL, onto the modalias to - * make that happen + /* + * Keep track of some device existence to handle + * workarounds later. */ - if (of_modalias_node(node, tmp, sizeof(tmp)) < 0) { - dev_err(&adap->dev, "i2c-powermac: modalias failure" - " on %s\n", node->full_name); + if (of_device_is_compatible(node, "pcm3052")) + found_onyx = true; + + /* Make up a modalias */ + if (!i2c_powermac_get_type(adap, node, addr, + info.type, sizeof(info.type))) { continue; } - snprintf(info.type, sizeof(info.type), "MAC,%s", tmp); /* Fill out the rest of the info structure */ - info.addr = (addr & 0xff) >> 1; + info.addr = addr; info.irq = irq_of_parse_and_map(node, 0); info.of_node = of_node_get(node); - info.archdata = &dev_ad; newdev = i2c_new_device(adap, &info); if (!newdev) { @@ -292,6 +398,9 @@ continue; } } + + /* Additional workarounds */ + i2c_powermac_add_missing(adap, bus, found_onyx); } static int __devinit i2c_powermac_probe(struct platform_device *dev) --- linux-3.5.0.orig/drivers/i2c/busses/i2c-i801.c +++ linux-3.5.0/drivers/i2c/busses/i2c-i801.c @@ -52,6 +52,7 @@ DH89xxCC (PCH) 0x2330 32 hard yes yes yes Panther Point (PCH) 0x1e22 32 hard yes yes yes Lynx Point (PCH) 0x8c22 32 hard yes yes yes + Lynx Point-LP (PCH) 0x9c22 32 hard yes yes yes Features supported by this driver: Software PEC no @@ -147,6 +148,7 @@ #define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS 0x2330 #define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS 0x3b30 #define PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS 0x8c22 +#define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS 0x9c22 struct i801_priv { struct i2c_adapter adapter; @@ -636,6 +638,7 @@ { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PANTHERPOINT_SMBUS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_SMBUS) }, + { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_SMBUS) }, { 0, } }; --- linux-3.5.0.orig/drivers/i2c/busses/Makefile +++ linux-3.5.0/drivers/i2c/busses/Makefile @@ -33,10 +33,11 @@ obj-$(CONFIG_I2C_BLACKFIN_TWI) += i2c-bfin-twi.o obj-$(CONFIG_I2C_CPM) += i2c-cpm.o obj-$(CONFIG_I2C_DAVINCI) += i2c-davinci.o +obj-$(CONFIG_I2C_DESIGNWARE_CORE) += i2c-designware-core.o obj-$(CONFIG_I2C_DESIGNWARE_PLATFORM) += i2c-designware-platform.o -i2c-designware-platform-objs := i2c-designware-platdrv.o i2c-designware-core.o +i2c-designware-platform-objs := i2c-designware-platdrv.o obj-$(CONFIG_I2C_DESIGNWARE_PCI) += i2c-designware-pci.o -i2c-designware-pci-objs := i2c-designware-pcidrv.o i2c-designware-core.o +i2c-designware-pci-objs := i2c-designware-pcidrv.o obj-$(CONFIG_I2C_EG20T) += i2c-eg20t.o obj-$(CONFIG_I2C_GPIO) += i2c-gpio.o obj-$(CONFIG_I2C_HIGHLANDER) += i2c-highlander.o --- linux-3.5.0.orig/drivers/i2c/busses/i2c-mxs.c +++ linux-3.5.0/drivers/i2c/busses/i2c-mxs.c @@ -110,7 +110,7 @@ struct device *dev; void __iomem *regs; struct completion cmd_complete; - u32 cmd_err; + int cmd_err; struct i2c_adapter adapter; }; --- linux-3.5.0.orig/drivers/i2c/busses/i2c-designware-core.c +++ linux-3.5.0/drivers/i2c/busses/i2c-designware-core.c @@ -25,6 +25,7 @@ * ---------------------------------------------------------------------------- * */ +#include #include #include #include @@ -316,6 +317,7 @@ dw_writel(dev, dev->master_cfg , DW_IC_CON); return 0; } +EXPORT_SYMBOL_GPL(i2c_dw_init); /* * Waiting for bus not busy @@ -568,12 +570,14 @@ return ret; } +EXPORT_SYMBOL_GPL(i2c_dw_xfer); u32 i2c_dw_func(struct i2c_adapter *adap) { struct dw_i2c_dev *dev = i2c_get_adapdata(adap); return dev->functionality; } +EXPORT_SYMBOL_GPL(i2c_dw_func); static u32 i2c_dw_read_clear_intrbits(struct dw_i2c_dev *dev) { @@ -678,17 +682,20 @@ return IRQ_HANDLED; } +EXPORT_SYMBOL_GPL(i2c_dw_isr); void i2c_dw_enable(struct dw_i2c_dev *dev) { /* Enable the adapter */ dw_writel(dev, 1, DW_IC_ENABLE); } +EXPORT_SYMBOL_GPL(i2c_dw_enable); u32 i2c_dw_is_enabled(struct dw_i2c_dev *dev) { return dw_readl(dev, DW_IC_ENABLE); } +EXPORT_SYMBOL_GPL(i2c_dw_is_enabled); void i2c_dw_disable(struct dw_i2c_dev *dev) { @@ -699,18 +706,22 @@ dw_writel(dev, 0, DW_IC_INTR_MASK); dw_readl(dev, DW_IC_CLR_INTR); } +EXPORT_SYMBOL_GPL(i2c_dw_disable); void i2c_dw_clear_int(struct dw_i2c_dev *dev) { dw_readl(dev, DW_IC_CLR_INTR); } +EXPORT_SYMBOL_GPL(i2c_dw_clear_int); void i2c_dw_disable_int(struct dw_i2c_dev *dev) { dw_writel(dev, 0, DW_IC_INTR_MASK); } +EXPORT_SYMBOL_GPL(i2c_dw_disable_int); u32 i2c_dw_read_comp_param(struct dw_i2c_dev *dev) { return dw_readl(dev, DW_IC_COMP_PARAM_1); } +EXPORT_SYMBOL_GPL(i2c_dw_read_comp_param); --- linux-3.5.0.orig/drivers/idle/intel_idle.c +++ linux-3.5.0/drivers/idle/intel_idle.c @@ -169,6 +169,38 @@ .enter = &intel_idle }, }; +static struct cpuidle_state ivb_cstates[MWAIT_MAX_NUM_CSTATES] = { + { /* MWAIT C0 */ }, + { /* MWAIT C1 */ + .name = "C1-IVB", + .desc = "MWAIT 0x00", + .flags = CPUIDLE_FLAG_TIME_VALID, + .exit_latency = 1, + .target_residency = 1, + .enter = &intel_idle }, + { /* MWAIT C2 */ + .name = "C3-IVB", + .desc = "MWAIT 0x10", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 59, + .target_residency = 156, + .enter = &intel_idle }, + { /* MWAIT C3 */ + .name = "C6-IVB", + .desc = "MWAIT 0x20", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 80, + .target_residency = 300, + .enter = &intel_idle }, + { /* MWAIT C4 */ + .name = "C7-IVB", + .desc = "MWAIT 0x30", + .flags = CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, + .exit_latency = 87, + .target_residency = 300, + .enter = &intel_idle }, +}; + static struct cpuidle_state atom_cstates[MWAIT_MAX_NUM_CSTATES] = { { /* MWAIT C0 */ }, { /* MWAIT C1 */ @@ -347,6 +379,10 @@ .state_table = snb_cstates, }; +static const struct idle_cpu idle_cpu_ivb = { + .state_table = ivb_cstates, +}; + #define ICPU(model, cpu) \ { X86_VENDOR_INTEL, 6, model, X86_FEATURE_MWAIT, (unsigned long)&cpu } @@ -362,6 +398,7 @@ ICPU(0x2f, idle_cpu_nehalem), ICPU(0x2a, idle_cpu_snb), ICPU(0x2d, idle_cpu_snb), + ICPU(0x3a, idle_cpu_ivb), {} }; MODULE_DEVICE_TABLE(x86cpu, intel_idle_ids); @@ -405,10 +442,8 @@ if (boot_cpu_has(X86_FEATURE_ARAT)) /* Always Reliable APIC Timer */ lapic_timer_reliable_states = LAPIC_TIMER_ALWAYS_RELIABLE; - else { + else on_each_cpu(__setup_broadcast_timer, (void *)true, 1); - register_cpu_notifier(&setup_broadcast_notifier); - } pr_debug(PREFIX "v" INTEL_IDLE_VERSION " model 0x%X\n", boot_cpu_data.x86_model); @@ -573,6 +608,9 @@ } } + if (lapic_timer_reliable_states != LAPIC_TIMER_ALWAYS_RELIABLE) + register_cpu_notifier(&setup_broadcast_notifier); + return 0; } --- linux-3.5.0.orig/drivers/pcmcia/pxa2xx_sharpsl.c +++ linux-3.5.0/drivers/pcmcia/pxa2xx_sharpsl.c @@ -194,7 +194,7 @@ sharpsl_pcmcia_init_reset(skt); } -static struct pcmcia_low_level sharpsl_pcmcia_ops __initdata = { +static struct pcmcia_low_level sharpsl_pcmcia_ops = { .owner = THIS_MODULE, .hw_init = sharpsl_pcmcia_hw_init, .socket_state = sharpsl_pcmcia_socket_state, --- linux-3.5.0.orig/drivers/pcmcia/vrc4171_card.c +++ linux-3.5.0/drivers/pcmcia/vrc4171_card.c @@ -246,6 +246,7 @@ socket = &vrc4171_sockets[slot]; socket->csc_irq = search_nonuse_irq(); socket->io_irq = search_nonuse_irq(); + spin_lock_init(&socket->lock); return 0; } --- linux-3.5.0.orig/drivers/rapidio/devices/tsi721.c +++ linux-3.5.0/drivers/rapidio/devices/tsi721.c @@ -435,6 +435,9 @@ " info %4.4x\n", DBELL_SID(idb.bytes), DBELL_TID(idb.bytes), DBELL_INF(idb.bytes)); } + + wr_ptr = ioread32(priv->regs + + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; } iowrite32(rd_ptr & (IDB_QSIZE - 1), @@ -445,6 +448,10 @@ regval |= TSI721_SR_CHINT_IDBQRCV; iowrite32(regval, priv->regs + TSI721_SR_CHINTE(IDB_QUEUE)); + + wr_ptr = ioread32(priv->regs + TSI721_IDQ_WP(IDB_QUEUE)) % IDB_QSIZE; + if (wr_ptr != rd_ptr) + schedule_work(&priv->idb_work); } /** @@ -2212,7 +2219,7 @@ const struct pci_device_id *id) { struct tsi721_device *priv; - int i, cap; + int cap; int err; u32 regval; @@ -2232,12 +2239,15 @@ priv->pdev = pdev; #ifdef DEBUG + { + int i; for (i = 0; i <= PCI_STD_RESOURCE_END; i++) { dev_dbg(&pdev->dev, "res[%d] @ 0x%llx (0x%lx, 0x%lx)\n", i, (unsigned long long)pci_resource_start(pdev, i), (unsigned long)pci_resource_len(pdev, i), pci_resource_flags(pdev, i)); } + } #endif /* * Verify BAR configuration --- linux-3.5.0.orig/drivers/edac/i7300_edac.c +++ linux-3.5.0/drivers/edac/i7300_edac.c @@ -215,8 +215,8 @@ [0] = "Memory Write error on non-redundant retry or " "FBD configuration Write error on retry", }; -#define GET_FBD_FAT_IDX(fbderr) (fbderr & (3 << 28)) -#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) +#define GET_FBD_FAT_IDX(fbderr) (((fbderr) >> 28) & 3) +#define FERR_FAT_FBD_ERR_MASK ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 22)) #define FERR_NF_FBD 0xa0 static const char *ferr_nf_fbd_name[] = { @@ -243,7 +243,7 @@ [1] = "Aliased Uncorrectable Non-Mirrored Demand Data ECC", [0] = "Uncorrectable Data ECC on Replay", }; -#define GET_FBD_NF_IDX(fbderr) (fbderr & (3 << 28)) +#define GET_FBD_NF_IDX(fbderr) (((fbderr) >> 28) & 3) #define FERR_NF_FBD_ERR_MASK ((1 << 24) | (1 << 23) | (1 << 22) | (1 << 21) |\ (1 << 18) | (1 << 17) | (1 << 16) | (1 << 15) |\ (1 << 14) | (1 << 13) | (1 << 11) | (1 << 10) |\ @@ -482,7 +482,7 @@ errnum = find_first_bit(&errors, ARRAY_SIZE(ferr_nf_fbd_name)); specific = GET_ERR_FROM_TABLE(ferr_nf_fbd_name, errnum); - branch = (GET_FBD_FAT_IDX(error_reg) == 2) ? 1 : 0; + branch = (GET_FBD_NF_IDX(error_reg) == 2) ? 1 : 0; pci_read_config_dword(pvt->pci_dev_16_1_fsb_addr_map, REDMEMA, &syndrome); --- linux-3.5.0.orig/drivers/edac/amd64_edac.c +++ linux-3.5.0/drivers/edac/amd64_edac.c @@ -170,8 +170,11 @@ * memory controller and apply to register. Search for the first * bandwidth entry that is greater or equal than the setting requested * and program that. If at last entry, turn off DRAM scrubbing. + * + * If no suitable bandwidth is found, turn off DRAM scrubbing entirely + * by falling back to the last element in scrubrates[]. */ - for (i = 0; i < ARRAY_SIZE(scrubrates); i++) { + for (i = 0; i < ARRAY_SIZE(scrubrates) - 1; i++) { /* * skip scrub rates which aren't recommended * (see F10 BKDG, F3x58) @@ -181,12 +184,6 @@ if (scrubrates[i].bandwidth <= new_bw) break; - - /* - * if no suitable bandwidth found, turn off DRAM scrubbing - * entirely by falling back to the last element in the - * scrubrates array. - */ } scrubval = scrubrates[i].scrubval; --- linux-3.5.0.orig/drivers/edac/Kconfig +++ linux-3.5.0/drivers/edac/Kconfig @@ -7,7 +7,7 @@ menuconfig EDAC bool "EDAC (Error Detection And Correction) reporting" depends on HAS_IOMEM - depends on X86 || PPC || TILE + depends on X86 || PPC || TILE || ARM help EDAC is designed to report errors in the core system. These are low-level errors that are reported in the CPU or @@ -294,4 +294,18 @@ Support for error detection and correction on the Tilera memory controller. +config EDAC_HIGHBANK_MC + tristate "Highbank Memory Controller" + depends on EDAC_MM_EDAC && ARCH_HIGHBANK + help + Support for error detection and correction on the + Calxeda Highbank memory controller. + +config EDAC_HIGHBANK_L2 + tristate "Highbank L2 Cache" + depends on EDAC_MM_EDAC && ARCH_HIGHBANK + help + Support for error detection and correction on the + Calxeda Highbank memory controller. + endif # EDAC --- linux-3.5.0.orig/drivers/edac/Makefile +++ linux-3.5.0/drivers/edac/Makefile @@ -55,3 +55,6 @@ obj-$(CONFIG_EDAC_AMD8131) += amd8131_edac.o obj-$(CONFIG_EDAC_TILE) += tile_edac.o + +obj-$(CONFIG_EDAC_HIGHBANK_MC) += highbank_mc_edac.o +obj-$(CONFIG_EDAC_HIGHBANK_L2) += highbank_l2_edac.o --- linux-3.5.0.orig/drivers/edac/i82975x_edac.c +++ linux-3.5.0/drivers/edac/i82975x_edac.c @@ -370,10 +370,6 @@ static void i82975x_init_csrows(struct mem_ctl_info *mci, struct pci_dev *pdev, void __iomem *mch_window) { - static const char *labels[4] = { - "DIMM A1", "DIMM A2", - "DIMM B1", "DIMM B2" - }; struct csrow_info *csrow; unsigned long last_cumul_size; u8 value; @@ -424,9 +420,10 @@ dimm = mci->csrows[index].channels[chan].dimm; dimm->nr_pages = nr_pages / csrow->nr_channels; - strncpy(csrow->channels[chan].dimm->label, - labels[(index >> 1) + (chan * 2)], - EDAC_MC_LABEL_LEN); + + snprintf(csrow->channels[chan].dimm->label, EDAC_MC_LABEL_LEN, "DIMM %c%d", + (chan == 0) ? 'A' : 'B', + index); dimm->grain = 1 << 7; /* 128Byte cache-line resolution */ dimm->dtype = i82975x_dram_type(mch_window, index); dimm->mtype = MEM_DDR2; /* I82975x supports only DDR2 */ --- linux-3.5.0.orig/drivers/edac/highbank_mc_edac.c +++ linux-3.5.0/drivers/edac/highbank_mc_edac.c @@ -0,0 +1,238 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include + +#include "edac_core.h" +#include "edac_module.h" + +/* DDR Ctrlr Error Registers */ +#define HB_DDR_ECC_OPT 0x128 +#define HB_DDR_ECC_U_ERR_ADDR 0x130 +#define HB_DDR_ECC_U_ERR_STAT 0x134 +#define HB_DDR_ECC_U_ERR_DATAL 0x138 +#define HB_DDR_ECC_U_ERR_DATAH 0x13c +#define HB_DDR_ECC_C_ERR_ADDR 0x140 +#define HB_DDR_ECC_C_ERR_STAT 0x144 +#define HB_DDR_ECC_C_ERR_DATAL 0x148 +#define HB_DDR_ECC_C_ERR_DATAH 0x14c +#define HB_DDR_ECC_INT_STATUS 0x180 +#define HB_DDR_ECC_INT_ACK 0x184 +#define HB_DDR_ECC_U_ERR_ID 0x424 +#define HB_DDR_ECC_C_ERR_ID 0x428 + +#define HB_DDR_ECC_INT_STAT_CE 0x8 +#define HB_DDR_ECC_INT_STAT_DOUBLE_CE 0x10 +#define HB_DDR_ECC_INT_STAT_UE 0x20 +#define HB_DDR_ECC_INT_STAT_DOUBLE_UE 0x40 + +struct hb_mc_drvdata { + void __iomem *mc_vbase; +}; + +static irqreturn_t highbank_mc_err_handler(int irq, void *dev_id) +{ + struct mem_ctl_info *mci = dev_id; + struct hb_mc_drvdata *drvdata = mci->pvt_info; + u32 status, err_addr; + + /* Read the interrupt status register */ + status = readl(drvdata->mc_vbase + HB_DDR_ECC_INT_STATUS); + + if (status & HB_DDR_ECC_INT_STAT_UE) { + err_addr = readl(drvdata->mc_vbase + HB_DDR_ECC_U_ERR_ADDR); + edac_mc_handle_error(HW_EVENT_ERR_UNCORRECTED, mci, + err_addr >> PAGE_SHIFT, + err_addr & ~PAGE_MASK, 0, + 0, 0, -1, + mci->ctl_name, "", NULL); + } + if (status & HB_DDR_ECC_INT_STAT_CE) { + u32 syndrome = readl(drvdata->mc_vbase + HB_DDR_ECC_C_ERR_STAT); + syndrome = (syndrome >> 8) & 0xff; + err_addr = readl(drvdata->mc_vbase + HB_DDR_ECC_C_ERR_ADDR); + edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, + err_addr >> PAGE_SHIFT, + err_addr & ~PAGE_MASK, syndrome, + 0, 0, -1, + mci->ctl_name, "", NULL); + } + + /* clear the error, clears the interrupt */ + writel(status, drvdata->mc_vbase + HB_DDR_ECC_INT_ACK); + return IRQ_HANDLED; +} + +static ssize_t highbank_mc_inject_ctrl_store(struct mem_ctl_info *mci, + const char *data, size_t count) +{ + struct hb_mc_drvdata *pdata = mci->pvt_info; + u32 reg; + u8 synd; + if (!isdigit(*data)) + return 0; + + reg = readl(pdata->mc_vbase + HB_DDR_ECC_OPT) & 0x3; + if (!kstrtou8(data, 16, &synd)) { + reg |= synd << 16; + reg |= 0x100; + writel(reg, pdata->mc_vbase + HB_DDR_ECC_OPT); + } + return count; +} + +static struct mcidev_sysfs_attribute highbank_mc_sysfs_attributes[] = { + { + .attr = { + .name = "inject_ctrl", + .mode = (S_IRUGO | S_IWUSR) + }, + .store = highbank_mc_inject_ctrl_store, + }, + { + .attr = {.name = NULL} /* End of list */ + } +}; + +static int __devinit highbank_mc_probe(struct platform_device *pdev) +{ + struct edac_mc_layer layers[2]; + struct mem_ctl_info *mci; + struct hb_mc_drvdata *drvdata; + struct dimm_info *dimm; + struct resource *r; + u32 control; + int irq; + int res = 0; + + layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; + layers[0].size = 1; + layers[0].is_virt_csrow = true; + layers[1].type = EDAC_MC_LAYER_CHANNEL; + layers[1].size = 1; + layers[1].is_virt_csrow = false; + mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, + sizeof(struct hb_mc_drvdata)); + if (!mci) + return -ENOMEM; + + drvdata = mci->pvt_info; + mci->dev = &pdev->dev; + platform_set_drvdata(pdev, mci); + + if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) + return -ENOMEM; + + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!r) { + dev_err(&pdev->dev, "Unable to get mem resource\n"); + res = -ENODEV; + goto err; + } + + if (!devm_request_mem_region(&pdev->dev, r->start, + resource_size(r), dev_name(&pdev->dev))) { + dev_err(&pdev->dev, "Error while requesting mem region\n"); + res = -EBUSY; + goto err; + } + + drvdata->mc_vbase = devm_ioremap(&pdev->dev, + r->start, resource_size(r)); + if (!drvdata->mc_vbase) { + dev_err(&pdev->dev, "Unable to map regs\n"); + res = -ENOMEM; + goto err; + } + + control = readl(drvdata->mc_vbase + HB_DDR_ECC_OPT) & 0x3; + if (!control || (control == 0x2)) { + dev_err(&pdev->dev, "No ECC present, or ECC disabled\n"); + res = -ENODEV; + goto err; + } + + irq = platform_get_irq(pdev, 0); + res = devm_request_irq(&pdev->dev, irq, highbank_mc_err_handler, + 0, dev_name(&pdev->dev), mci); + if (res < 0) { + dev_err(&pdev->dev, "Unable to request irq %d\n", irq); + goto err; + } + + mci->mtype_cap = MEM_FLAG_DDR3; + mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; + mci->edac_cap = EDAC_FLAG_SECDED; + mci->mod_name = dev_name(&pdev->dev); + mci->mod_ver = "1"; + mci->ctl_name = dev_name(&pdev->dev); + mci->scrub_mode = SCRUB_SW_SRC; + mci->mc_driver_sysfs_attributes = highbank_mc_sysfs_attributes; + + /* Only a single 4GB DIMM is supported */ + dimm = mci->dimms; + dimm->nr_pages = (~0UL >> PAGE_SHIFT) + 1; + dimm->grain = 8; + dimm->dtype = DEV_X8; + dimm->mtype = MEM_DDR3; + dimm->edac_mode = EDAC_SECDED; + + res = edac_mc_add_mc(mci); + if (res < 0) + goto err; + + devres_close_group(&pdev->dev, NULL); + return 0; +err: + devres_release_group(&pdev->dev, NULL); + edac_mc_free(mci); + return res; +} + +static int highbank_mc_remove(struct platform_device *pdev) +{ + struct mem_ctl_info *mci = platform_get_drvdata(pdev); + + edac_mc_del_mc(&pdev->dev); + edac_mc_free(mci); + return 0; +} + +static const struct of_device_id hb_ddr_ctrl_of_match[] = { + { .compatible = "calxeda,hb-ddr-ctrl", }, + {}, +}; +MODULE_DEVICE_TABLE(of, hb_ddr_ctrl_of_match); + +static struct platform_driver highbank_mc_edac_driver = { + .probe = highbank_mc_probe, + .remove = highbank_mc_remove, + .driver = { + .name = "hb_mc_edac", + .of_match_table = hb_ddr_ctrl_of_match, + }, +}; + +module_platform_driver(highbank_mc_edac_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Calxeda, Inc."); +MODULE_DESCRIPTION("EDAC Driver for Highbank"); --- linux-3.5.0.orig/drivers/edac/highbank_l2_edac.c +++ linux-3.5.0/drivers/edac/highbank_l2_edac.c @@ -0,0 +1,149 @@ +/* + * Copyright 2011-2012 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include + +#include "edac_core.h" +#include "edac_module.h" + +#define SR_CLR_SB_ECC_INTR 0x0 +#define SR_CLR_DB_ECC_INTR 0x4 + +struct hb_l2_drvdata { + void __iomem *base; + int sb_irq; + int db_irq; +}; + +static irqreturn_t highbank_l2_err_handler(int irq, void *dev_id) +{ + struct edac_device_ctl_info *dci = dev_id; + struct hb_l2_drvdata *drvdata = dci->pvt_info; + + if (irq == drvdata->sb_irq) { + writel(1, drvdata->base + SR_CLR_SB_ECC_INTR); + edac_device_handle_ce(dci, 0, 0, dci->ctl_name); + } + if (irq == drvdata->db_irq) { + writel(1, drvdata->base + SR_CLR_DB_ECC_INTR); + edac_device_handle_ue(dci, 0, 0, dci->ctl_name); + } + + return IRQ_HANDLED; +} + +static int __devinit highbank_l2_err_probe(struct platform_device *pdev) +{ + struct edac_device_ctl_info *dci; + struct hb_l2_drvdata *drvdata; + struct resource *r; + int res = 0; + + dci = edac_device_alloc_ctl_info(sizeof(*drvdata), "cpu", + 1, "L", 1, 2, NULL, 0, 0); + if (!dci) + return -ENOMEM; + + drvdata = dci->pvt_info; + dci->dev = &pdev->dev; + platform_set_drvdata(pdev, dci); + + if (!devres_open_group(&pdev->dev, NULL, GFP_KERNEL)) + return -ENOMEM; + + r = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!r) { + dev_err(&pdev->dev, "Unable to get mem resource\n"); + res = -ENODEV; + goto err; + } + + if (!devm_request_mem_region(&pdev->dev, r->start, + resource_size(r), dev_name(&pdev->dev))) { + dev_err(&pdev->dev, "Error while requesting mem region\n"); + res = -EBUSY; + goto err; + } + + drvdata->base = devm_ioremap(&pdev->dev, r->start, resource_size(r)); + if (!drvdata->base) { + dev_err(&pdev->dev, "Unable to map regs\n"); + res = -ENOMEM; + goto err; + } + + drvdata->db_irq = platform_get_irq(pdev, 0); + res = devm_request_irq(&pdev->dev, drvdata->db_irq, + highbank_l2_err_handler, + 0, dev_name(&pdev->dev), dci); + if (res < 0) + goto err; + + drvdata->sb_irq = platform_get_irq(pdev, 1); + res = devm_request_irq(&pdev->dev, drvdata->sb_irq, + highbank_l2_err_handler, + 0, dev_name(&pdev->dev), dci); + if (res < 0) + goto err; + + dci->mod_name = dev_name(&pdev->dev); + dci->dev_name = dev_name(&pdev->dev); + + if (edac_device_add_device(dci)) + goto err; + + devres_close_group(&pdev->dev, NULL); + return 0; +err: + devres_release_group(&pdev->dev, NULL); + edac_device_free_ctl_info(dci); + return res; +} + +static int highbank_l2_err_remove(struct platform_device *pdev) +{ + struct edac_device_ctl_info *dci = platform_get_drvdata(pdev); + + edac_device_del_device(&pdev->dev); + edac_device_free_ctl_info(dci); + return 0; +} + +static const struct of_device_id hb_l2_err_of_match[] = { + { .compatible = "calxeda,hb-sregs-l2-ecc", }, + {}, +}; +MODULE_DEVICE_TABLE(of, hb_l2_err_of_match); + +static struct platform_driver highbank_l2_edac_driver = { + .probe = highbank_l2_err_probe, + .remove = highbank_l2_err_remove, + .driver = { + .name = "hb_l2_edac", + .of_match_table = hb_l2_err_of_match, + }, +}; + +module_platform_driver(highbank_l2_edac_driver); + +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Calxeda, Inc."); +MODULE_DESCRIPTION("EDAC Driver for Calxeda Highbank L2 Cache"); --- linux-3.5.0.orig/drivers/edac/edac_pci_sysfs.c +++ linux-3.5.0/drivers/edac/edac_pci_sysfs.c @@ -257,7 +257,7 @@ struct edac_pci_dev_attribute *edac_pci_dev; edac_pci_dev = (struct edac_pci_dev_attribute *)attr; - if (edac_pci_dev->show) + if (edac_pci_dev->store) return edac_pci_dev->store(edac_pci_dev->value, buffer, count); return -EIO; } --- linux-3.5.0.orig/drivers/nfc/pn533.c +++ linux-3.5.0/drivers/nfc/pn533.c @@ -1288,11 +1288,14 @@ static int pn533_in_dep_link_up_complete(struct pn533 *dev, void *arg, u8 *params, int params_len) { - struct pn533_cmd_jump_dep *cmd; struct pn533_cmd_jump_dep_response *resp; struct nfc_target nfc_target; u8 target_gt_len; int rc; + struct pn533_cmd_jump_dep *cmd = (struct pn533_cmd_jump_dep *)arg; + u8 active = cmd->active; + + kfree(arg); if (params_len == -ENOENT) { nfc_dev_dbg(&dev->interface->dev, ""); @@ -1314,7 +1317,6 @@ } resp = (struct pn533_cmd_jump_dep_response *) params; - cmd = (struct pn533_cmd_jump_dep *) arg; rc = resp->status & PN533_CMD_RET_MASK; if (rc != PN533_CMD_RET_SUCCESS) { nfc_dev_err(&dev->interface->dev, @@ -1344,7 +1346,7 @@ if (rc == 0) rc = nfc_dep_link_is_up(dev->nfc_dev, dev->nfc_dev->targets[0].idx, - !cmd->active, NFC_RF_INITIATOR); + !active, NFC_RF_INITIATOR); return 0; } @@ -1395,12 +1397,8 @@ rc = pn533_send_cmd_frame_async(dev, dev->out_frame, dev->in_frame, dev->in_maxlen, pn533_in_dep_link_up_complete, cmd, GFP_KERNEL); - if (rc) - goto out; - - -out: - kfree(cmd); + if (rc < 0) + kfree(cmd); return rc; } --- linux-3.5.0.orig/drivers/mtd/mtdpart.c +++ linux-3.5.0/drivers/mtd/mtdpart.c @@ -711,6 +711,8 @@ * partition parsers, specified in @types. However, if @types is %NULL, then * the default list of parsers is used. The default list contains only the * "cmdlinepart" and "ofpart" parsers ATM. + * Note: If there are more then one parser in @types, the kernel only takes the + * partitions parsed out by the first parser. * * This function may return: * o a negative error code in case of failure @@ -735,11 +737,12 @@ if (!parser) continue; ret = (*parser->parse_fn)(master, pparts, data); + put_partition_parser(parser); if (ret > 0) { printk(KERN_NOTICE "%d %s partitions found on MTD device %s\n", ret, parser->name, master->name); + break; } - put_partition_parser(parser); } return ret; } --- linux-3.5.0.orig/drivers/mtd/ofpart.c +++ linux-3.5.0/drivers/mtd/ofpart.c @@ -121,7 +121,7 @@ nr_parts = plen / sizeof(part[0]); *pparts = kzalloc(nr_parts * sizeof(*(*pparts)), GFP_KERNEL); - if (!pparts) + if (!*pparts) return -ENOMEM; names = of_get_property(dp, "partition-names", &plen); --- linux-3.5.0.orig/drivers/mtd/devices/slram.c +++ linux-3.5.0/drivers/mtd/devices/slram.c @@ -240,7 +240,7 @@ if (*(szlength) != '+') { devlength = simple_strtoul(szlength, &buffer, 0); - devlength = handle_unit(devlength, buffer) - devstart; + devlength = handle_unit(devlength, buffer); if (devlength < devstart) goto err_out; --- linux-3.5.0.orig/drivers/mtd/maps/autcpu12-nvram.c +++ linux-3.5.0/drivers/mtd/maps/autcpu12-nvram.c @@ -43,7 +43,8 @@ static int __init init_autcpu12_sram (void) { - int err, save0, save1; + map_word tmp, save0, save1; + int err; autcpu12_sram_map.virt = ioremap(0x12000000, SZ_128K); if (!autcpu12_sram_map.virt) { @@ -51,7 +52,7 @@ err = -EIO; goto out; } - simple_map_init(&autcpu_sram_map); + simple_map_init(&autcpu12_sram_map); /* * Check for 32K/128K @@ -61,20 +62,22 @@ * Read and check result on ofs 0x0 * Restore contents */ - save0 = map_read32(&autcpu12_sram_map,0); - save1 = map_read32(&autcpu12_sram_map,0x10000); - map_write32(&autcpu12_sram_map,~save0,0x10000); + save0 = map_read(&autcpu12_sram_map, 0); + save1 = map_read(&autcpu12_sram_map, 0x10000); + tmp.x[0] = ~save0.x[0]; + map_write(&autcpu12_sram_map, tmp, 0x10000); /* if we find this pattern on 0x0, we have 32K size * restore contents and exit */ - if ( map_read32(&autcpu12_sram_map,0) != save0) { - map_write32(&autcpu12_sram_map,save0,0x0); + tmp = map_read(&autcpu12_sram_map, 0); + if (!map_word_equal(&autcpu12_sram_map, tmp, save0)) { + map_write(&autcpu12_sram_map, save0, 0x0); goto map; } /* We have a 128K found, restore 0x10000 and set size * to 128K */ - map_write32(&autcpu12_sram_map,save1,0x10000); + map_write(&autcpu12_sram_map, save1, 0x10000); autcpu12_sram_map.size = SZ_128K; map: --- linux-3.5.0.orig/drivers/mtd/nand/cs553x_nand.c +++ linux-3.5.0/drivers/mtd/nand/cs553x_nand.c @@ -237,6 +237,7 @@ this->ecc.hwctl = cs_enable_hwecc; this->ecc.calculate = cs_calculate_ecc; this->ecc.correct = nand_correct_data; + this->ecc.strength = 1; /* Enable the following for a flash based bad block table */ this->bbt_options = NAND_BBT_USE_FLASH; @@ -247,8 +248,6 @@ goto out_ior; } - this->ecc.strength = 1; - new_mtd->name = kasprintf(GFP_KERNEL, "cs553x_nand_cs%d", cs); cs553x_mtd[cs] = new_mtd; --- linux-3.5.0.orig/drivers/mtd/nand/nand_base.c +++ linux-3.5.0/drivers/mtd/nand/nand_base.c @@ -2914,8 +2914,7 @@ if (le16_to_cpu(p->features) & 1) *busw = NAND_BUSWIDTH_16; - chip->options &= ~NAND_CHIPOPTIONS_MSK; - chip->options |= NAND_NO_READRDY & NAND_CHIPOPTIONS_MSK; + chip->options |= NAND_NO_READRDY; pr_info("ONFI flash detected\n"); return 1; @@ -3080,9 +3079,8 @@ mtd->erasesize <<= ((id_data[3] & 0x03) << 1); } } - /* Get chip options, preserve non chip based options */ - chip->options &= ~NAND_CHIPOPTIONS_MSK; - chip->options |= type->options & NAND_CHIPOPTIONS_MSK; + /* Get chip options */ + chip->options |= type->options; /* * Check if chip is not a Samsung device. Do not clear the --- linux-3.5.0.orig/drivers/mtd/nand/omap2.c +++ linux-3.5.0/drivers/mtd/nand/omap2.c @@ -1382,7 +1382,8 @@ /* Release NAND device, its internal structures and partitions */ nand_release(&info->mtd); iounmap(info->nand.IO_ADDR_R); - kfree(&info->mtd); + release_mem_region(info->phys_base, NAND_IO_SIZE); + kfree(info); return 0; } --- linux-3.5.0.orig/drivers/mtd/nand/nand_bbt.c +++ linux-3.5.0/drivers/mtd/nand/nand_bbt.c @@ -390,7 +390,7 @@ /* Read the mirror version, if available */ if (md && (md->options & NAND_BBT_VERSION)) { scan_read_raw(mtd, buf, (loff_t)md->pages[0] << this->page_shift, - mtd->writesize, td); + mtd->writesize, md); md->version[0] = buf[bbt_get_ver_offs(mtd, md)]; pr_info("Bad block table at page %d, version 0x%02X\n", md->pages[0], md->version[0]); --- linux-3.5.0.orig/drivers/mtd/nand/nandsim.c +++ linux-3.5.0/drivers/mtd/nand/nandsim.c @@ -2333,6 +2333,7 @@ uint64_t new_size = (uint64_t)nsmtd->erasesize << overridesize; if (new_size >> overridesize != nsmtd->erasesize) { NS_ERR("overridesize is too big\n"); + retval = -EINVAL; goto err_exit; } /* N.B. This relies on nand_scan not doing anything with the size before we change it */ --- linux-3.5.0.orig/drivers/mtd/nand/gpmi-nand/gpmi-lib.c +++ linux-3.5.0/drivers/mtd/nand/gpmi-nand/gpmi-lib.c @@ -136,6 +136,15 @@ if (ret) goto err_out; + /* + * Reset BCH here, too. We got failures otherwise :( + * See later BCH reset for explanation of MX23 handling + */ + ret = gpmi_reset_block(r->bch_regs, GPMI_IS_MX23(this)); + if (ret) + goto err_out; + + /* Choose NAND mode. */ writel(BM_GPMI_CTRL1_GPMI_MODE, r->gpmi_regs + HW_GPMI_CTRL1_CLR); --- linux-3.5.0.orig/drivers/mtd/ubi/build.c +++ linux-3.5.0/drivers/mtd/ubi/build.c @@ -759,6 +759,11 @@ struct ubi_volume *vol = ubi->volumes[vol_id]; int err, old_reserved_pebs = vol->reserved_pebs; + if (ubi->ro_mode) { + ubi_warn("skip auto-resize because of R/O mode"); + return 0; + } + /* * Clear the auto-resize flag in the volume in-memory copy of the * volume table, and 'ubi_resize_volume()' will propagate this change --- linux-3.5.0.orig/drivers/mtd/ubi/vtbl.c +++ linux-3.5.0/drivers/mtd/ubi/vtbl.c @@ -340,7 +340,7 @@ * of this LEB as it will be deleted and freed in 'ubi_add_to_av()'. */ err = ubi_add_to_av(ubi, ai, new_aeb->pnum, new_aeb->ec, vid_hdr, 0); - kfree(new_aeb); + kmem_cache_free(ai->aeb_slab_cache, new_aeb); ubi_free_vid_hdr(ubi, vid_hdr); return err; @@ -353,7 +353,7 @@ list_add(&new_aeb->u.list, &ai->erase); goto retry; } - kfree(new_aeb); + kmem_cache_free(ai->aeb_slab_cache, new_aeb); out_free: ubi_free_vid_hdr(ubi, vid_hdr); return err; --- linux-3.5.0.orig/drivers/mtd/ubi/attach.c +++ linux-3.5.0/drivers/mtd/ubi/attach.c @@ -975,7 +975,7 @@ return err; goto adjust_mean_ec; case UBI_IO_FF: - if (ec_err) + if (ec_err || bitflips) err = add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, ec, 1, &ai->erase); else --- linux-3.5.0.orig/drivers/input/matrix-keymap.c +++ linux-3.5.0/drivers/input/matrix-keymap.c @@ -23,6 +23,7 @@ #include #include #include +#include #include static bool matrix_keypad_map_key(struct input_dev *input_dev, @@ -161,3 +162,5 @@ return 0; } EXPORT_SYMBOL(matrix_keypad_build_keymap); + +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/drivers/input/touchscreen/eeti_ts.c +++ linux-3.5.0/drivers/input/touchscreen/eeti_ts.c @@ -48,7 +48,7 @@ struct input_dev *input; struct work_struct work; struct mutex mutex; - int irq, irq_active_high; + int irq_gpio, irq, irq_active_high; }; #define EETI_TS_BITDEPTH (11) @@ -62,7 +62,7 @@ static inline int eeti_ts_irq_active(struct eeti_ts_priv *priv) { - return gpio_get_value(irq_to_gpio(priv->irq)) == priv->irq_active_high; + return gpio_get_value(priv->irq_gpio) == priv->irq_active_high; } static void eeti_ts_read(struct work_struct *work) @@ -157,7 +157,7 @@ static int __devinit eeti_ts_probe(struct i2c_client *client, const struct i2c_device_id *idp) { - struct eeti_ts_platform_data *pdata; + struct eeti_ts_platform_data *pdata = client->dev.platform_data; struct eeti_ts_priv *priv; struct input_dev *input; unsigned int irq_flags; @@ -199,9 +199,12 @@ priv->client = client; priv->input = input; - priv->irq = client->irq; + priv->irq_gpio = pdata->irq_gpio; + priv->irq = gpio_to_irq(pdata->irq_gpio); - pdata = client->dev.platform_data; + err = gpio_request_one(pdata->irq_gpio, GPIOF_IN, client->name); + if (err < 0) + goto err1; if (pdata) priv->irq_active_high = pdata->irq_active_high; @@ -215,13 +218,13 @@ err = input_register_device(input); if (err) - goto err1; + goto err2; err = request_irq(priv->irq, eeti_ts_isr, irq_flags, client->name, priv); if (err) { dev_err(&client->dev, "Unable to request touchscreen IRQ.\n"); - goto err2; + goto err3; } /* @@ -233,9 +236,11 @@ device_init_wakeup(&client->dev, 0); return 0; -err2: +err3: input_unregister_device(input); input = NULL; /* so we dont try to free it below */ +err2: + gpio_free(pdata->irq_gpio); err1: input_free_device(input); kfree(priv); --- linux-3.5.0.orig/drivers/input/touchscreen/tsc40.c +++ linux-3.5.0/drivers/input/touchscreen/tsc40.c @@ -107,7 +107,6 @@ __set_bit(BTN_TOUCH, input_dev->keybit); input_set_abs_params(ptsc->dev, ABS_X, 0, 0x3ff, 0, 0); input_set_abs_params(ptsc->dev, ABS_Y, 0, 0x3ff, 0, 0); - input_set_abs_params(ptsc->dev, ABS_PRESSURE, 0, 0, 0, 0); serio_set_drvdata(serio, ptsc); --- linux-3.5.0.orig/drivers/input/joystick/walkera0701.c +++ linux-3.5.0/drivers/input/joystick/walkera0701.c @@ -196,6 +196,7 @@ struct walkera_dev *w = input_get_drvdata(dev); parport_disable_irq(w->parport); + hrtimer_cancel(&w->timer); } static int walkera0701_connect(struct walkera_dev *w, int parport) @@ -224,6 +225,9 @@ if (parport_claim(w->pardevice)) goto init_err1; + hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); + w->timer.function = timer_handler; + w->input_dev = input_allocate_device(); if (!w->input_dev) goto init_err2; @@ -254,8 +258,6 @@ if (err) goto init_err3; - hrtimer_init(&w->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); - w->timer.function = timer_handler; return 0; init_err3: @@ -271,7 +273,6 @@ static void walkera0701_disconnect(struct walkera_dev *w) { - hrtimer_cancel(&w->timer); input_unregister_device(w->input_dev); parport_release(w->pardevice); parport_unregister_device(w->pardevice); --- linux-3.5.0.orig/drivers/input/keyboard/gpio_keys.c +++ linux-3.5.0/drivers/input/keyboard/gpio_keys.c @@ -548,6 +548,7 @@ struct device_node *node, *pp; int i; struct gpio_keys_button *buttons; + int error = -ENODEV; u32 reg; node = dev->of_node; @@ -574,6 +575,7 @@ pp = NULL; i = 0; while ((pp = of_get_next_child(node, pp))) { + int gpio; enum of_gpio_flags flags; if (!of_find_property(pp, "gpios", NULL)) { @@ -581,7 +583,17 @@ dev_warn(dev, "Found button without gpios\n"); continue; } - buttons[i].gpio = of_get_gpio_flags(pp, 0, &flags); + + gpio = of_get_gpio_flags(pp, 0, &flags); + if (gpio < 0) { + error = gpio; + dev_err(dev, + "Failed to get gpio flags, error: %d\n", + error); + goto out_fail; + } + + buttons[i].gpio = gpio; buttons[i].active_low = flags & OF_GPIO_ACTIVE_LOW; if (of_property_read_u32(pp, "linux,code", ®)) { @@ -613,7 +625,7 @@ out_fail: kfree(buttons); - return -ENODEV; + return error; } static struct of_device_id gpio_keys_of_match[] = { --- linux-3.5.0.orig/drivers/input/tablet/wacom_sys.c +++ linux-3.5.0/drivers/input/tablet/wacom_sys.c @@ -445,8 +445,7 @@ /* ask to report Wacom data */ if (features->device_type == BTN_TOOL_FINGER) { /* if it is an MT Tablet PC touch */ - if (features->type == TABLETPC2FG || - features->type == MTSCREEN) { + if (features->type > TABLETPC) { do { rep_data[0] = 3; rep_data[1] = 4; @@ -465,7 +464,7 @@ } while ((error < 0 || rep_data[1] != 4) && limit++ < WAC_MSG_RETRIES); } - } else if (features->type != TABLETPC && + } else if (features->type <= BAMBOO_PT && features->type != WIRELESS && features->device_type == BTN_TOOL_PEN) { do { @@ -515,10 +514,7 @@ } /* only devices that support touch need to retrieve the info */ - if (features->type != TABLETPC && - features->type != TABLETPC2FG && - features->type != BAMBOO_PT && - features->type != MTSCREEN) { + if (features->type < BAMBOO_PT) { goto out; } --- linux-3.5.0.orig/drivers/input/tablet/wacom_wac.h +++ linux-3.5.0/drivers/input/tablet/wacom_wac.h @@ -62,8 +62,6 @@ PTU, PL, DTU, - BAMBOO_PT, - WIRELESS, INTUOS, INTUOS3S, INTUOS3, @@ -74,12 +72,15 @@ INTUOS5S, INTUOS5, INTUOS5L, - WACOM_24HD, WACOM_21UX2, + WACOM_22HD, + WACOM_24HD, CINTIQ, WACOM_BEE, WACOM_MO, - TABLETPC, + WIRELESS, + BAMBOO_PT, + TABLETPC, /* add new TPC below */ TABLETPC2FG, MTSCREEN, MAX_TYPE --- linux-3.5.0.orig/drivers/input/tablet/wacom_wac.c +++ linux-3.5.0/drivers/input/tablet/wacom_wac.c @@ -248,7 +248,7 @@ input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2])); input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4])); if (wacom->tool[0] != BTN_TOOL_MOUSE) { - input_report_abs(input, ABS_PRESSURE, data[6] | ((data[7] & 0x01) << 8)); + input_report_abs(input, ABS_PRESSURE, data[6] | ((data[7] & 0x03) << 8)); input_report_key(input, BTN_TOUCH, data[1] & 0x01); input_report_key(input, BTN_STYLUS, data[1] & 0x02); input_report_key(input, BTN_STYLUS2, data[1] & 0x04); @@ -464,7 +464,7 @@ t = (data[6] << 2) | ((data[7] >> 6) & 3); if ((features->type >= INTUOS4S && features->type <= INTUOS4L) || (features->type >= INTUOS5S && features->type <= INTUOS5L) || - features->type == WACOM_21UX2 || features->type == WACOM_24HD) { + (features->type >= WACOM_21UX2 && features->type <= WACOM_24HD)) { t = (t << 1) | (data[1] & 1); } input_report_abs(input, ABS_PRESSURE, t); @@ -614,7 +614,7 @@ input_report_abs(input, ABS_MISC, 0); } } else { - if (features->type == WACOM_21UX2) { + if (features->type == WACOM_21UX2 || features->type == WACOM_22HD) { input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_1, (data[6] & 0x01)); input_report_key(input, BTN_2, (data[6] & 0x02)); @@ -633,6 +633,12 @@ input_report_key(input, BTN_Z, (data[8] & 0x20)); input_report_key(input, BTN_BASE, (data[8] & 0x40)); input_report_key(input, BTN_BASE2, (data[8] & 0x80)); + + if (features->type == WACOM_22HD) { + input_report_key(input, KEY_PROG1, data[9] & 0x01); + input_report_key(input, KEY_PROG2, data[9] & 0x02); + input_report_key(input, KEY_PROG3, data[9] & 0x04); + } } else { input_report_key(input, BTN_0, (data[5] & 0x01)); input_report_key(input, BTN_1, (data[5] & 0x02)); @@ -1230,6 +1236,7 @@ case CINTIQ: case WACOM_BEE: case WACOM_21UX2: + case WACOM_22HD: case WACOM_24HD: sync = wacom_intuos_irq(wacom_wac); break; @@ -1317,10 +1324,8 @@ } /* these device have multiple inputs */ - if (features->type == TABLETPC || features->type == TABLETPC2FG || - features->type == BAMBOO_PT || features->type == WIRELESS || - (features->type >= INTUOS5S && features->type <= INTUOS5L) || - features->type == MTSCREEN) + if (features->type >= WIRELESS || + (features->type >= INTUOS5S && features->type <= INTUOS5L)) features->quirks |= WACOM_QUIRK_MULTI_INPUT; /* quirk for bamboo touch with 2 low res touches */ @@ -1432,6 +1437,12 @@ wacom_setup_cintiq(wacom_wac); break; + case WACOM_22HD: + __set_bit(KEY_PROG1, input_dev->keybit); + __set_bit(KEY_PROG2, input_dev->keybit); + __set_bit(KEY_PROG3, input_dev->keybit); + /* fall through */ + case WACOM_21UX2: __set_bit(BTN_A, input_dev->keybit); __set_bit(BTN_B, input_dev->keybit); @@ -1855,6 +1866,9 @@ static const struct wacom_features wacom_features_0xCC = { "Wacom Cintiq 21UX2", WACOM_PKGLEN_INTUOS, 87200, 65600, 2047, 63, WACOM_21UX2, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; +static const struct wacom_features wacom_features_0xFA = + { "Wacom Cintiq 22HD", WACOM_PKGLEN_INTUOS, 95840, 54260, 2047, + 63, WACOM_22HD, WACOM_INTUOS3_RES, WACOM_INTUOS3_RES }; static const struct wacom_features wacom_features_0x90 = { "Wacom ISDv4 90", WACOM_PKGLEN_GRAPHIRE, 26202, 16325, 255, 0, TABLETPC, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; @@ -1904,7 +1918,8 @@ .touch_max = 2 }; static const struct wacom_features wacom_features_0xD2 = { "Wacom Bamboo Craft", WACOM_PKGLEN_BBFUN, 14720, 9200, 1023, - 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES }; + 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, + .touch_max = 2 }; static const struct wacom_features wacom_features_0xD3 = { "Wacom Bamboo 2FG 6x8", WACOM_PKGLEN_BBFUN, 21648, 13700, 1023, 31, BAMBOO_PT, WACOM_INTUOS_RES, WACOM_INTUOS_RES, @@ -2064,6 +2079,7 @@ { USB_DEVICE_WACOM(0xEC) }, { USB_DEVICE_WACOM(0x47) }, { USB_DEVICE_WACOM(0xF4) }, + { USB_DEVICE_WACOM(0xFA) }, { USB_DEVICE_LENOVO(0x6004) }, { } }; --- linux-3.5.0.orig/drivers/input/serio/i8042-x86ia64io.h +++ linux-3.5.0/drivers/input/serio/i8042-x86ia64io.h @@ -177,6 +177,20 @@ }, }, { + /* Gigabyte T1005 - defines wrong chassis type ("Other") */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "T1005"), + }, + }, + { + /* Gigabyte T1005M/P - defines wrong chassis type ("Other") */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GIGABYTE"), + DMI_MATCH(DMI_PRODUCT_NAME, "T1005M/P"), + }, + }, + { .matches = { DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion dv9700"), @@ -321,6 +335,12 @@ }, { .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "SATELLITE C850D"), + }, + }, + { + .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ALIENWARE"), DMI_MATCH(DMI_PRODUCT_NAME, "Sentia"), }, @@ -901,6 +921,7 @@ int retval; #ifdef CONFIG_X86 + u8 a20_on = 0xdf; /* Just return if pre-detection shows no i8042 controller exist */ if (!x86_platform.i8042_detect()) return -ENODEV; @@ -940,6 +961,14 @@ if (dmi_check_system(i8042_dmi_dritek_table)) i8042_dritek = true; + + /* + * A20 was already enabled during early kernel init. But some buggy + * BIOSes (in MSI Laptops) require A20 to be enabled using 8042 to + * resume from S3. So we do it here and hope that nothing breaks. + */ + i8042_command(&a20_on, 0x10d1); + i8042_command(NULL, 0x00ff); /* Null command for SMM firmware */ #endif /* CONFIG_X86 */ return retval; --- linux-3.5.0.orig/drivers/input/mouse/cypress_ps2.c +++ linux-3.5.0/drivers/input/mouse/cypress_ps2.c @@ -0,0 +1,956 @@ +/* + * Cypress Trackpad PS/2 mouse driver + * + * Copyright (c) 2012 Cypress Semiconductor Corporation. + * + * Additional contributors include: + * Kamal Mostafa + * Kyle Fazzari + * + * 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 "cypress_ps2.h" + +#define CYTP_DBG 1 +#if CYTP_DBG +static int debug_level; +module_param_named(cy_debug, debug_level, int, 0644); +MODULE_PARM_DESC(cy_debug, "Set CyPS/2 debug output level (0, 1, or 2)"); +#define cytp_dbg(fmt, ...) \ + do { \ + if (cytp && debug_level) \ + pr_err(pr_fmt(fmt), ##__VA_ARGS__); \ + } while (0) +#define cytp_dbg_dump(fmt, ...) \ + do { \ + if (cytp && debug_level > 1) \ + pr_err(pr_fmt(fmt), ##__VA_ARGS__); \ + } while (0) +#else +#define cytp_dbg(fmt, ...) do { cytp = cytp; } while (0) +#define cytp_dbg_dump(fmt, ...) do { cytp = cytp; } while (0) +#endif + +static int read_timeout = 200; +module_param_named(cy_read_timeout, read_timeout, int, 0644); +MODULE_PARM_DESC(cy_read_timeout, "Set CyPS/2 cmd read timeout (default 200 msec)"); + + +/* p is a pointer points to the buffer containing Cypress Keys. */ +#define IS_CYPRESS_KEY(p) ((p[0] == CYPRESS_KEY_1) && (p[1] == CYPRESS_KEY_2)) +#define CYTP_SET_PACKET_SIZE(n) { psmouse->pktsize = cytp->pkt_size = (n); } +#define CYTP_SET_MODE_BIT(x) \ + do { \ + if ((x) & CYTP_BIT_ABS_REL_MASK) \ + cytp->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK) | (x); \ + else \ + cytp->mode |= (x); \ + } while (0) +#define CYTP_CLEAR_MODE_BIT(x) { cytp->mode &= ~(x); } + +#define CYTP_SUPPORT_ABS + +static unsigned char cytp_rate[] = {10, 20, 40, 60, 100, 200}; +static unsigned char cytp_resolution[] = {0x00, 0x01, 0x02, 0x03}; + +static int cypress_ps2_sendbyte(struct psmouse *psmouse, int value) +{ + struct cytp_data *cytp = psmouse->private; + struct ps2dev *ps2dev = &psmouse->ps2dev; + + if (ps2_sendbyte(ps2dev, value & 0xff, CYTP_CMD_TIMEOUT) < 0) { + cytp_dbg("send command 0x%02x failed, resp 0x%02x\n", + value & 0xff, ps2dev->nak); + if (ps2dev->nak == CYTP_PS2_RETRY) + return CYTP_PS2_RETRY; + else + return CYTP_PS2_ERROR; + } + + cytp_dbg("send command 0x%02x success, resp 0xfa\n", value & 0xff); + + return 0; +} + +static int cypress_ps2_ext_cmd(struct psmouse *psmouse, unsigned short cmd, + unsigned char data) +{ + struct ps2dev *ps2dev = &psmouse->ps2dev; + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + ps2_begin_command(ps2dev); + + do { + /* + * send extension command 0xE8 or 0xF3, + * if send extension command failed, + * try to send recovery command to make + * trackpad device return to ready wait command state. + * It alwasy success based on this recovery commands. + */ + rc = cypress_ps2_sendbyte(psmouse, cmd & 0xff); + if (rc == CYTP_PS2_RETRY) { + rc = cypress_ps2_sendbyte(psmouse, 0x00); + if (rc == CYTP_PS2_RETRY) + rc = cypress_ps2_sendbyte(psmouse, 0x0a); + } + if (rc == CYTP_PS2_ERROR) + continue; + + rc = cypress_ps2_sendbyte(psmouse, data); + if (rc == CYTP_PS2_RETRY) + rc = cypress_ps2_sendbyte(psmouse, data); + if (rc == CYTP_PS2_ERROR) + continue; + else + break; + } while (--tries > 0); + + ps2_end_command(ps2dev); + + return rc; +} + +static int cypress_ps2_read_cmd_status(struct psmouse *psmouse, + unsigned char cmd, + unsigned char *param) +{ + int i; + int rc; + struct ps2dev *ps2dev = &psmouse->ps2dev; + struct cytp_data *cytp = psmouse->private; + enum psmouse_state old_state; + unsigned char old_pktsize; + + ps2_begin_command(&psmouse->ps2dev); + + old_state = psmouse->state; + psmouse->state = PSMOUSE_CMD_CYTP; + psmouse->pktcnt = 0; + old_pktsize = psmouse->pktsize; + psmouse->pktsize = 3; + if (cmd == CYTP_CMD_READ_VITAL_STATISTICS) + psmouse->pktsize = 8; + memset(param, 0, psmouse->pktsize); + + rc = cypress_ps2_sendbyte(psmouse, 0xe9); + if (rc < 0) + goto out; + + wait_event_timeout(ps2dev->wait, + (psmouse->pktcnt >= psmouse->pktsize), msecs_to_jiffies(read_timeout)); + + memcpy(param, psmouse->packet, psmouse->pktsize); + + cytp_dbg("Command 0x%02x response data: (0x)", cmd); + for (i = 0; i < psmouse->pktsize; i++) + cytp_dbg(" %02x", param[i]); + cytp_dbg("\n"); + +out: + psmouse->state = old_state; + psmouse->pktcnt = 0; + psmouse->pktsize = old_pktsize; + + ps2_end_command(&psmouse->ps2dev); + + return rc; +} + +static int cypress_verify_cmd_state(struct psmouse *psmouse, + unsigned char cmd, unsigned char *param) +{ + struct cytp_data *cytp = psmouse->private; + bool rate_match = 0; + bool resolution_match = 0; + int i; + + /* callers will do further checking. */ + if ((cmd == CYTP_CMD_READ_CYPRESS_ID) || + (cmd == CYTP_CMD_STANDARD_MODE) || + (cmd == CYTP_CMD_READ_VITAL_STATISTICS)) + return 0; + if (((~param[0] & DFLT_RESP_BITS_VALID) == DFLT_RESP_BITS_VALID) && + ((param[0] & DFLT_RESP_BIT_MODE) == DFLT_RESP_STREAM_MODE)) { + for (i = 0; i < sizeof(cytp_resolution); i++) + if (cytp_resolution[i] == param[1]) + resolution_match = 1; + + for (i = 0; i < sizeof(cytp_rate); i++) + if (cytp_rate[i] == param[2]) + rate_match = 1; + + if (resolution_match && rate_match) + return 0; + } + + cytp_dbg("verify cmd state failed.\n"); + return -1; +} + +static int cypress_send_ext_cmd(struct psmouse *psmouse, unsigned char cmd, + unsigned char *param) +{ + struct cytp_data *cytp = psmouse->private; + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + cytp_dbg("send extension cmd 0x%02x, [%d %d %d %d]\n", + cmd, DECODE_CMD_AA(cmd), DECODE_CMD_BB(cmd), + DECODE_CMD_CC(cmd), DECODE_CMD_DD(cmd)); + do { + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_DD(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_CC(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_BB(cmd)); + cypress_ps2_ext_cmd(psmouse, + PSMOUSE_CMD_SETRES, DECODE_CMD_AA(cmd)); + + rc = cypress_ps2_read_cmd_status(psmouse, cmd, param); + if ((rc == 0) && + (cypress_verify_cmd_state(psmouse, cmd, param) == 0)) + break; + } while (--tries > 0); + + + if (tries <= 0) + return -1; + + return 0; + +} + +int cypress_detect(struct psmouse *psmouse, bool set_properties) +{ + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) + return -1; + + if (!IS_CYPRESS_KEY(param)) + return -ENODEV; + + if (set_properties) { + psmouse->vendor = "Cypress"; + psmouse->name = "Trackpad"; + } + + return 0; +} + +static int cypress_read_fw_version(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_CYPRESS_ID, param)) + return -1; + + if (!IS_CYPRESS_KEY(param)) + return -ENODEV; + + cytp->fw_version = param[2] & FW_VERSION_MASX; + cytp->vital_statics_supported = (param[2] & VITAL_STATICS_MASK) ? 1 : 0; + + cytp_dbg("cytp->fw_version = %d\n", cytp->fw_version); + cytp_dbg("cytp->vital_statics_supported = %d\n", + cytp->vital_statics_supported); + return 0; +} + +static int cypress_read_vital_statistics(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[8]; + + /* set default values for vital statistics not supported trackpad. */ + cytp->tp_width = CYTP_DEFAULT_WIDTH; + cytp->tp_high = CYTP_DEFAULT_HIGH; + cytp->tp_max_abs_x = CYTP_ABS_MAX_X; + cytp->tp_max_abs_y = CYTP_ABS_MAX_Y; + cytp->tp_min_pressure = CYTP_MIN_PRESSURE; + cytp->tp_max_pressure = CYTP_MAX_PRESSURE; + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + + memset(param, 0, sizeof(param)); + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_READ_VITAL_STATISTICS, param) == 0) { + /* Update trackpad parameters. */ + cytp->tp_max_abs_x = (param[1] << 8) | param[0]; + cytp->tp_max_abs_y = (param[3] << 8) | param[2]; + cytp->tp_min_pressure = param[4]; + cytp->tp_max_pressure = param[5]; + + if (param[6] & VITAL_BIT_APA) + cytp->tp_type = CYTP_APA; + else if (param[6] & VITAL_BIT_MTG) + cytp->tp_type = CYTP_MTG; + else + cytp->tp_type = CYTP_STG; + cytp->tp_palm = (param[6] & VITAL_BIT_PALM) ? 1 : 0; + cytp->tp_stubborn = (param[6] & VITAL_BIT_STUBBORN) ? 1 : 0; + cytp->tp_2f_jitter = (param[6] & VITAL_BIT_2F_JITTER) >> 4; + cytp->tp_1f_jitter = (param[6] & VITAL_BIT_1F_JITTER) >> 2; + cytp->tp_abs_packet_format_set = + (param[7] & VITAL_BIT_ABS_PKT_FORMAT_SET) >> 4; + cytp->tp_2f_spike = (param[7] & VITAL_BIT_2F_SPIKE) >> 2; + cytp->tp_1f_spike = (param[7] & VITAL_BIT_1F_SPIKE); + + } + + if (!cytp->tp_max_pressure || + (cytp->tp_max_pressure < cytp->tp_min_pressure) || + (!cytp->tp_width || !cytp->tp_high) || + (!cytp->tp_max_abs_x) || + (cytp->tp_max_abs_x < cytp->tp_width) || + (!cytp->tp_max_abs_y) || + (cytp->tp_max_abs_y < cytp->tp_high)) + return -1; + + cytp->tp_res_x = cytp->tp_max_abs_x / cytp->tp_width; + cytp->tp_res_y = cytp->tp_max_abs_y / cytp->tp_high; + + cytp_dbg_dump("Dump trackpad hardware configuration as below:\n"); + cytp_dbg_dump("cytp->tp_width = %d\n", cytp->tp_width); + cytp_dbg_dump("cytp->tp_high = %d\n", cytp->tp_high); + cytp_dbg_dump("cytp->tp_max_abs_x = %d\n", cytp->tp_max_abs_x); + cytp_dbg_dump("cytp->tp_max_abs_y = %d\n", cytp->tp_max_abs_y); + cytp_dbg_dump("cytp->tp_min_pressure = %d\n", cytp->tp_min_pressure); + cytp_dbg_dump("cytp->tp_max_pressure = %d\n", cytp->tp_max_pressure); + cytp_dbg_dump("cytp->tp_res_x = %d\n", cytp->tp_res_x); + cytp_dbg_dump("cytp->tp_res_y = %d\n", cytp->tp_res_y); + cytp_dbg_dump("cytp->tp_type = %d\n", cytp->tp_type); + cytp_dbg_dump("cytp->tp_palm = %d\n", cytp->tp_palm); + cytp_dbg_dump("cytp->tp_stubborn = %d\n", cytp->tp_stubborn); + cytp_dbg_dump("cytp->tp_1f_jitter = %d\n", cytp->tp_1f_jitter); + cytp_dbg_dump("cytp->tp_2f_jitter = %d\n", cytp->tp_2f_jitter); + cytp_dbg_dump("cytp->tp_1f_spike = %d\n", cytp->tp_1f_spike); + cytp_dbg_dump("cytp->tp_2f_spike = %d\n", cytp->tp_2f_spike); + cytp_dbg_dump("cytp->tp_abs_packet_format_set = %d\n", + cytp->tp_abs_packet_format_set); + + return 0; +} + +static int cypress_query_hardware(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + if (cypress_read_fw_version(psmouse)) + return -1; + + if (cytp->vital_statics_supported) { + if (cypress_read_vital_statistics(psmouse)) + return -1; + } + + return 0; +} + +static int cypress_set_absolute_mode(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + unsigned char param[3]; + + if (cypress_send_ext_cmd(psmouse, CYTP_CMD_ABS_WITH_PRESSURE_MODE, param) < 0) + return -1; + + CYTP_SET_MODE_BIT(CYTP_BIT_ABS_PRESSURE); + CYTP_SET_PACKET_SIZE(5); + + return 0; +} + +/* + * reset trackpad device to standard relative mode. + * This is also the defalut mode when trackpad powered on. + */ +static void cypress_reset(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + psmouse_reset(psmouse); + + CYTP_SET_MODE_BIT(CYTP_BIT_STANDARD_REL); + CYTP_SET_PACKET_SIZE(3); + + cytp->prev_contact_cnt = 0; +} + +static int cypress_set_input_params(struct input_dev *input, + struct cytp_data *cytp) +{ + int ret; + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + __set_bit(EV_ABS, input->evbit); + input_set_abs_params(input, ABS_X, 0, cytp->tp_max_abs_x, 0, 0); + input_set_abs_params(input, ABS_Y, 0, cytp->tp_max_abs_y, 0, 0); + input_set_abs_params(input, ABS_PRESSURE, + cytp->tp_min_pressure, cytp->tp_max_pressure, 0, 0); + input_set_abs_params(input, ABS_TOOL_WIDTH, 0, 255, 0, 0); + + /* finger position */ + input_set_abs_params(input, ABS_MT_POSITION_X, 0, cytp->tp_max_abs_x, 0, 0); + input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cytp->tp_max_abs_y, 0, 0); + input_set_abs_params(input, ABS_MT_PRESSURE, 0, 255, 0, 0); + + ret = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS); + if (ret < 0) { + return ret; + } + + if (cytp->tp_res_x && cytp->tp_res_x) { + input_abs_set_res(input, ABS_X, cytp->tp_res_x); + input_abs_set_res(input, ABS_Y, cytp->tp_res_y); + + input_abs_set_res(input, ABS_MT_POSITION_X, + cytp->tp_res_x); + input_abs_set_res(input, ABS_MT_POSITION_Y, + cytp->tp_res_y); + + } + + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + __set_bit(EV_KEY, input->evbit); + __set_bit(BTN_TOUCH, input->keybit); + __set_bit(BTN_TOOL_FINGER, input->keybit); + __set_bit(BTN_TOOL_DOUBLETAP, input->keybit); + __set_bit(BTN_TOOL_TRIPLETAP, input->keybit); + __set_bit(BTN_TOOL_QUADTAP, input->keybit); + __set_bit(BTN_TOOL_QUINTTAP, input->keybit); + + __set_bit(BTN_LEFT, input->keybit); + __set_bit(BTN_RIGHT, input->keybit); + __set_bit(BTN_MIDDLE, input->keybit); + + __clear_bit(EV_REL, input->evbit); + __clear_bit(REL_X, input->relbit); + __clear_bit(REL_Y, input->relbit); + } else { + __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); + __set_bit(EV_REL, input->evbit); + __set_bit(REL_X, input->relbit); + __set_bit(REL_Y, input->relbit); + __set_bit(REL_WHEEL, input->relbit); + __set_bit(REL_HWHEEL, input->relbit); + + __set_bit(EV_KEY, input->evbit); + __set_bit(BTN_LEFT, input->keybit); + __set_bit(BTN_RIGHT, input->keybit); + __set_bit(BTN_MIDDLE, input->keybit); + + __clear_bit(EV_ABS, input->evbit); + } + + input_set_drvdata(input, cytp); + + return 0; +} + +static int cypress_get_finger_count(unsigned char header_byte) +{ + unsigned char bits6_7; + int finger_count; + + bits6_7 = header_byte >> 6; + finger_count = bits6_7 & 0x03; + + if (finger_count != 1) { + if (header_byte & ABS_HSCROLL_BIT) { + if (finger_count == 0) { + /* HSCROLL gets added on to 0 finger count. */ + finger_count = 4; + /* should remove HSCROLL bit. */ + } else { + if (finger_count == 2) { + finger_count = 5; + } else { + /* Invalid contact (e.g. palm). Ignore it. */ + finger_count = 0; + } + } + } + } + + return finger_count; +} + +static int new_slot_id(void) +{ + static int id = -1; + + id++; + if (id >= CYTP_MAX_MT_SLOTS) + id = 0; + + return id; +} + +#define FINGER_MAX_JITTER_DISTANCE 25 +static inline bool same_finger(struct cytp_contact *prev_contact, + struct cytp_contact *contact) +{ + if (abs(prev_contact->x - contact->x) < FINGER_MAX_JITTER_DISTANCE) { + if (abs(prev_contact->y - contact->y) < FINGER_MAX_JITTER_DISTANCE) { + return true; + } + } + + return false; +} + +#define ID_NULL ((unsigned char)0x00) +#define ID_NEW ((unsigned char)0x01) +#define ID_KEEP ((unsigned char)0x02) +#define ID_UPDATE ((unsigned char)0x03) +static const unsigned char +new_slot_id_flags[CYTP_MAX_CONTACTS+1][CYTP_MAX_CONTACTS+1] = { + /* previous contact_cnt = 0. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 1. */ + { ID_NULL, ID_KEEP, ID_UPDATE, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 2. */ + { ID_NULL, ID_UPDATE, ID_KEEP, ID_NEW, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 3. */ + { ID_NULL, ID_NEW, ID_NEW, ID_KEEP, ID_NEW, ID_NEW }, + + /* previous contact_cnt = 4. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_KEEP, ID_NEW }, + + /* previous contact_cnt = 5. */ + { ID_NULL, ID_NEW, ID_NEW, ID_NEW, ID_NEW, ID_KEEP }, +}; + +static int cypress_cal_finger_id(struct cytp_data *cytp, + struct cytp_report_data *new_report) +{ + int i, j; + bool slot_id_updated; + struct cytp_report_data *prev_report = &cytp->prev_report_data; + unsigned char flag = + new_slot_id_flags[prev_report->contact_cnt][new_report->contact_cnt]; + + if (flag == ID_NEW) { + for (i = 0; i < new_report->contact_cnt; i++) { + new_report->contacts[i].id = new_slot_id(); + } + + } else if (flag == ID_KEEP) { + /* firmware will ensure that the finger id is report in same order. */ + for (i = 0; i < new_report->contact_cnt; i++) { + new_report->contacts[i].id = prev_report->contacts[i].id; + } + + } else if (flag == ID_UPDATE) { + for (i = 0; i < new_report->contact_cnt; i++) { + slot_id_updated = false; + for (j = 0; j < prev_report->contact_cnt; j++) { + if (same_finger(&new_report->contacts[i], + &prev_report->contacts[j])) { + new_report->contacts[i].id = prev_report->contacts[j].id; + slot_id_updated = true; + break; + } + } + + if (!slot_id_updated) + new_report->contacts[i].id = new_slot_id(); + } + } + + if (new_report->contact_cnt == 0) + cytp->zero_packet_cnt++; + else + cytp->zero_packet_cnt = 0; + cytp->prev_report_data = *new_report; + + return 0; +} + +static int position_adjust_array[4] = { + 50, -50, 100, -100 +}; +static void cypress_simulate_fingers(struct cytp_data *cytp, + struct cytp_report_data *report_data) +{ + int i; + + if (report_data->contact_cnt >= 3) { + for (i = 1; i < report_data->contact_cnt; i++) { + report_data->contacts[i].x = + report_data->contacts[0].x + position_adjust_array[i - 1]; + report_data->contacts[i].y = report_data->contacts[0].y; + report_data->contacts[i].z = report_data->contacts[0].z; + + if (report_data->contacts[i].x < 0) + report_data->contacts[i].x = 0; + if (report_data->contacts[i].x > cytp->tp_max_abs_x) + report_data->contacts[i].x = cytp->tp_max_abs_x; + } + } +} + +static int cypress_parse_packet(const unsigned char packet[], + struct cytp_data *cytp, struct cytp_report_data *report_data) +{ + int i; + unsigned char header_byte = packet[0]; + + memset(report_data, 0, sizeof(struct cytp_report_data)); + if (cytp->mode & CYTP_BIT_ABS_MASK) { + report_data->contact_cnt = cypress_get_finger_count(header_byte); + + if (report_data->contact_cnt > CYTP_MAX_CONTACTS) { + /* report invalid data as zero package except the button data. */ + report_data->contact_cnt = 0; + cytp_dbg("cypress_parse_packet: received invalid packet.\n"); + } + + report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0; + + /* Remove HSCROLL bit */ + if (report_data->contact_cnt == 4) + header_byte &= ~(ABS_HSCROLL_BIT); + + if (report_data->contact_cnt == 1) { + report_data->contacts[0].x = + ((packet[1] & 0x70) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x07) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + if ((packet[1] & ABS_EDGE_MOTION_MASK) != ABS_EDGE_MOTION_MASK) { + report_data->vscroll = (header_byte & ABS_VSCROLL_BIT) ? 1 : 0; + report_data->hscroll = (header_byte & ABS_HSCROLL_BIT) ? 1 : 0; + } + + } else if (report_data->contact_cnt == 2) { + report_data->contacts[0].x = + ((packet[1] & 0x70) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x07) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + report_data->contacts[1].x = + ((packet[5] & 0xf0) << 4) | packet[6]; + report_data->contacts[1].y = + ((packet[5] & 0x0f) << 8) | packet[7]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[1].z = report_data->contacts[0].z; + + } else if (report_data->contact_cnt >= 3) { + report_data->contacts[0].x = + ((packet[1] & 0xf0) << 4) | packet[2]; + report_data->contacts[0].y = + ((packet[1] & 0x0f) << 8) | packet[3]; + if (cytp->mode & CYTP_BIT_ABS_PRESSURE) + report_data->contacts[0].z = packet[4]; + + cypress_simulate_fingers(cytp, report_data); + + report_data->vscroll = (header_byte & ABS_VSCROLL_BIT) ? 1 : 0; + } + + cypress_cal_finger_id(cytp, report_data); + + report_data->left = (header_byte & BTN_LEFT_BIT) ? 1 : 0; + report_data->right = (header_byte & BTN_RIGHT_BIT) ? 1 : 0; + + } else { + report_data->contact_cnt = 1; + report_data->contacts[0].x = + (packet[0] & REL_X_SIGN_BIT) ? -packet[1] : packet[1]; + report_data->contacts[0].y = + (packet[0] & REL_Y_SIGN_BIT) ? -packet[2] : packet[2]; + report_data->vscroll = packet[3]; + report_data->left = (packet[0] & BTN_LEFT_BIT) ? 1 : 0; + report_data->right = (packet[0] & BTN_RIGHT_BIT) ? 1 : 0; + + if (cytp->mode & CYTP_BIT_STANDARD_REL) + report_data->middle = + (packet[0] & BTN_MIDDLE_BIT) ? 1 : 0; + if (cytp->mode & CYTP_BIT_CYPRESS_REL) { + report_data->left = + (packet[0] & BTN_MIDDLE_BIT) ? 1 : 0; + report_data->hscroll = packet[4]; + } + } + + /* This is only true if one of the mouse buttons were tapped. + * Make sure it doesn't turn into a click. The regular tap-to- + * click functionality will handle that on its own. If we don't + * do this, disabling tap-to-click won't affect the mouse button + * zones. */ + if (report_data->tap) + report_data->left = 0; + + if (report_data->contact_cnt <= 0) + return 0; + + cytp_dbg_dump("cypress_parse_packet cytp->zero_packet_cnt = %d\n", cytp->zero_packet_cnt); + cytp_dbg_dump("Dump parsed report data as below:\n"); + cytp_dbg_dump("contact_cnt = %d\n", report_data->contact_cnt); + for (i = 0; i < report_data->contact_cnt; i++) { + cytp_dbg_dump("contacts[%d].x = %d\n", i, report_data->contacts[i].x); + cytp_dbg_dump("contacts[%d].y = %d\n", i, report_data->contacts[i].y); + cytp_dbg_dump("contacts[%d].z = %d\n", i, report_data->contacts[i].z); + cytp_dbg_dump("contacts[%d].id = %d\n", i, report_data->contacts[i].id); + } + cytp_dbg_dump("vscroll = %d\n", report_data->vscroll); + cytp_dbg_dump("hscroll = %d\n", report_data->hscroll); + cytp_dbg_dump("left = %d\n", report_data->left); + cytp_dbg_dump("right = %d\n", report_data->right); + cytp_dbg_dump("middle = %d\n", report_data->middle); + + return 0; +} + +static void cypress_process_packet(struct psmouse *psmouse, bool zero_pkt) +{ + int i; + struct input_dev *input = psmouse->dev; + struct cytp_data *cytp = psmouse->private; + struct cytp_report_data report_data; + unsigned int mask; + struct cytp_contact *contact; + int slot; + + if (cypress_parse_packet(psmouse->packet, cytp, &report_data)) + return; + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + mask = 0; + for (i = 0; i < report_data.contact_cnt; i++) { + contact = &report_data.contacts[i]; + slot = contact->id; + + mask |= (1 << slot); + input_mt_slot(input, slot); + input_mt_report_slot_state(input, MT_TOOL_FINGER, true); + input_report_abs(input, ABS_MT_POSITION_X, contact->x); + input_report_abs(input, ABS_MT_POSITION_Y, contact->y); + input_report_abs(input, ABS_MT_PRESSURE, contact->z); + } + + /* Invalidate all unreported slots */ + for (i = 0; i < CYTP_MAX_MT_SLOTS; i++) { + if (mask & (1 << i)) + continue; + + input_mt_slot(input, i); + input_mt_report_slot_state(input, MT_TOOL_FINGER, false); + } + + input_mt_report_pointer_emulation(input, true); + + input_report_key(input, BTN_LEFT, report_data.left); + input_report_key(input, BTN_RIGHT, report_data.right); + input_report_key(input, BTN_MIDDLE, report_data.middle); + + input_sync(input); + + } else { + if (report_data.contact_cnt == 1) { + input_report_rel(input, REL_X, report_data.contacts[0].x); + input_report_rel(input, REL_Y, report_data.contacts[0].y); + } + + input_report_rel(input, REL_WHEEL, report_data.vscroll); + if (cytp->mode & CYTP_BIT_CYPRESS_REL) + input_report_rel(input, REL_HWHEEL, report_data.hscroll); + + input_report_key(input, BTN_LEFT, report_data.left); + input_report_key(input, BTN_RIGHT, report_data.right); + input_report_key(input, BTN_MIDDLE, report_data.middle); + + input_sync(input); + } +} + +static psmouse_ret_t cypress_validate_byte(struct psmouse *psmouse) +{ + int contact_cnt; + int index = psmouse->pktcnt - 1; + unsigned char *packet = psmouse->packet; + struct cytp_data *cytp = psmouse->private; + + if (index < 0 || index > cytp->pkt_size) + return PSMOUSE_BAD_DATA; + + if ((index == 0) && ((packet[0] & 0xfc) == 0)) { + /* call packet process for reporting finger leave. */ + cypress_process_packet(psmouse, 1); + return PSMOUSE_FULL_PACKET; + } + + if (cytp->mode & CYTP_BIT_ABS_MASK) { + if (index == 0) { + if ((packet[0] & 0x08) == 0x08) + return PSMOUSE_BAD_DATA; + + contact_cnt = cypress_get_finger_count(packet[0]); + + if (contact_cnt > 5) + return PSMOUSE_BAD_DATA; + + if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE) { + CYTP_SET_PACKET_SIZE(4); + if (contact_cnt == 2) + CYTP_SET_PACKET_SIZE(7); + } else { + CYTP_SET_PACKET_SIZE(5); + if (contact_cnt == 2) + CYTP_SET_PACKET_SIZE(8); + } + } + + return PSMOUSE_GOOD_DATA; + } else { + if (index == 0) { + if ((packet[0] & 0x08) != 0x08) + return PSMOUSE_BAD_DATA; + + CYTP_SET_PACKET_SIZE(3); + if (cytp->mode & CYTP_BIT_CYPRESS_REL) + CYTP_SET_PACKET_SIZE(5); + } + + return PSMOUSE_GOOD_DATA; + } +} + +static psmouse_ret_t cypress_protocol_handler(struct psmouse *psmouse) +{ + struct cytp_data *cytp = psmouse->private; + + if (psmouse->pktcnt >= cytp->pkt_size) { + cypress_process_packet(psmouse, 0); + return PSMOUSE_FULL_PACKET; + } + + return cypress_validate_byte(psmouse); +} + +static void cypress_set_rate(struct psmouse *psmouse, unsigned int rate) +{ + struct cytp_data *cytp = psmouse->private; + + if (rate >= 80) { + psmouse->rate = 80; + CYTP_SET_MODE_BIT(CYTP_BIT_HIGH_RATE); + } else { + psmouse->rate = 40; + CYTP_CLEAR_MODE_BIT(CYTP_BIT_HIGH_RATE); + } + + ps2_command(&psmouse->ps2dev, (unsigned char *)&psmouse->rate, + PSMOUSE_CMD_SETRATE); +} + +static void cypress_disconnect(struct psmouse *psmouse) +{ + cypress_reset(psmouse); + kfree(psmouse->private); + psmouse->private = NULL; +} + +static int cypress_reconnect(struct psmouse *psmouse) +{ + int tries = CYTP_PS2_CMD_TRIES; + int rc; + + do { + cypress_reset(psmouse); + rc = cypress_detect(psmouse, false); + } while (rc && (--tries > 0)); + + if (rc) + return -1; + + if (cypress_query_hardware(psmouse)) { + pr_err("Reconnect: unable to query Trackpad hardware.\n"); + return -1; + } + + if (cypress_set_absolute_mode(psmouse)) { + pr_err("Reconnect: Unable to initialize Cypress absolute mode.\n"); + return -1; + } + + return 0; +} + +int cypress_init(struct psmouse *psmouse) +{ + struct cytp_data *cytp; + + cytp = (struct cytp_data *)kzalloc(sizeof(struct cytp_data), GFP_KERNEL); + psmouse->private = (void *)cytp; + if (cytp == NULL) + return -ENOMEM; + + cypress_reset(psmouse); + + if (cypress_query_hardware(psmouse)) { + pr_err("Unable to query Trackpad hardware.\n"); + goto err_exit; + } + + if (cypress_set_absolute_mode(psmouse)) { + pr_err("Reconnect: Unable to initialize Cypress absolute mode.\n"); + goto err_exit; + } + + if (cypress_set_input_params(psmouse->dev, cytp) < 0) + return -1; + + psmouse->model = 1; + psmouse->protocol_handler = cypress_protocol_handler; + psmouse->set_rate = cypress_set_rate; + psmouse->disconnect = cypress_disconnect; + psmouse->reconnect = cypress_reconnect; + psmouse->cleanup = cypress_reset; + psmouse->pktsize = 8; + psmouse->resync_time = 0; + + return 0; + +err_exit: + /* + * Reset Cypress Trackpad as a standard mouse. Then + * let psmouse driver commmunicating with it as default PS2 mouse. + */ + cypress_reset(psmouse); + + psmouse->private = NULL; + kfree(cytp); + + return -1; +} + +bool cypress_supported(void) +{ + return true; +} --- linux-3.5.0.orig/drivers/input/mouse/psmouse-base.c +++ linux-3.5.0/drivers/input/mouse/psmouse-base.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "psmouse.h" #include "synaptics.h" @@ -34,6 +35,7 @@ #include "touchkit_ps2.h" #include "elantech.h" #include "sentelic.h" +#include "cypress_ps2.h" #define DRIVER_DESC "PS/2 mouse driver" @@ -321,6 +323,13 @@ if (psmouse->state <= PSMOUSE_RESYNCING) goto out; + /* For Cypress Trackpad to read some special data more than 6 bytes. */ + if (psmouse->state == PSMOUSE_CMD_CYTP) { + psmouse->packet[psmouse->pktcnt++] = data; + wake_up(&psmouse->ps2dev.wait); + goto out; + } + if (psmouse->state == PSMOUSE_ACTIVATED && psmouse->pktcnt && time_after(jiffies, psmouse->last + HZ/2)) { psmouse_info(psmouse, "%s at %s lost synchronization, throwing %d bytes away.\n", @@ -759,6 +768,28 @@ } /* + * Try Cypress Trackpad. + * Must try it before Finger Sensing Pad because Finger Sensing Pad probe + * upsets some modules of Cypress Trackpads. + */ + if (max_proto > PSMOUSE_IMEX && + cypress_detect(psmouse, set_properties) == 0) { + if (cypress_supported()) { + if (cypress_init(psmouse) == 0) + return PSMOUSE_CYPRESS; + + /* + * Finger Sensing Pad probe upsets some modules of + * Cypress Trackpad, must avoid Finger Sensing Pad + * probe if Cypress Trackpad device detected. + */ + return PSMOUSE_PS2; + } + + max_proto = PSMOUSE_IMEX; + } + +/* * Try ALPS TouchPad */ if (max_proto > PSMOUSE_IMEX) { @@ -896,6 +927,15 @@ .alias = "thinkps", .detect = thinking_detect, }, +#ifdef CONFIG_MOUSE_PS2_CYPRESS + { + .type = PSMOUSE_CYPRESS, + .name = "CyPS/2", + .alias = "cypress", + .detect = cypress_detect, + .init = cypress_init, + }, +#endif { .type = PSMOUSE_GENPS, .name = "GenPS/2", --- linux-3.5.0.orig/drivers/input/mouse/Kconfig +++ linux-3.5.0/drivers/input/mouse/Kconfig @@ -68,6 +68,16 @@ If unsure, say Y. +config MOUSE_PS2_CYPRESS + bool "Cypress PS/2 mouse protocol extension" if EXPERT + default y + depends on MOUSE_PS2 + help + Say Y here if you have a Cypress PS/2 Trackpad connected to + your system. + + If unsure, say Y. + config MOUSE_PS2_LIFEBOOK bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EXPERT default y --- linux-3.5.0.orig/drivers/input/mouse/synaptics.h +++ linux-3.5.0/drivers/input/mouse/synaptics.h @@ -80,6 +80,7 @@ */ #define SYN_CAP_CLICKPAD(ex0c) ((ex0c) & 0x100000) /* 1-button ClickPad */ #define SYN_CAP_CLICKPAD2BTN(ex0c) ((ex0c) & 0x000100) /* 2-button ClickPad */ +#define SYN_CAP_CLICKPAD2BTN2(ex0c) ((ex0c) & 0x200000) /* 2-button ClickPad */ #define SYN_CAP_MAX_DIMENSIONS(ex0c) ((ex0c) & 0x020000) #define SYN_CAP_MIN_DIMENSIONS(ex0c) ((ex0c) & 0x002000) #define SYN_CAP_ADV_GESTURE(ex0c) ((ex0c) & 0x080000) --- linux-3.5.0.orig/drivers/input/mouse/sentelic.c +++ linux-3.5.0/drivers/input/mouse/sentelic.c @@ -780,7 +780,7 @@ fsp_set_slot(dev, 0, fgrs > 0, abs_x, abs_y); fsp_set_slot(dev, 1, false, 0, 0); } - if (fgrs > 0) { + if (fgrs == 1 || (fgrs == 2 && !(packet[0] & FSP_PB0_MFMC_FGR2))) { input_report_abs(dev, ABS_X, abs_x); input_report_abs(dev, ABS_Y, abs_y); } --- linux-3.5.0.orig/drivers/input/mouse/Makefile +++ linux-3.5.0/drivers/input/mouse/Makefile @@ -32,3 +32,4 @@ psmouse-$(CONFIG_MOUSE_PS2_SENTELIC) += sentelic.o psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT) += trackpoint.o psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT) += touchkit_ps2.o +psmouse-$(CONFIG_MOUSE_PS2_CYPRESS) += cypress_ps2.o --- linux-3.5.0.orig/drivers/input/mouse/synaptics.c +++ linux-3.5.0/drivers/input/mouse/synaptics.c @@ -40,11 +40,32 @@ * Note that newer firmware allows querying device for maximum useable * coordinates. */ +#define XMIN 0 +#define XMAX 6143 +#define YMIN 0 +#define YMAX 6143 #define XMIN_NOMINAL 1472 #define XMAX_NOMINAL 5472 #define YMIN_NOMINAL 1408 #define YMAX_NOMINAL 4448 +/* Size in bits of absolute position values reported by the hardware */ +#define ABS_POS_BITS 13 + +/* + * These values should represent the absolute maximum value that will + * be reported for a positive position value. Some Synaptics firmware + * uses this value to indicate a finger near the edge of the touchpad + * whose precise position cannot be determined. + * + * At least one touchpad is known to report positions in excess of this + * value which are actually negative values truncated to the 13-bit + * reporting range. These values have never been observed to be lower + * than 8184 (i.e. -8), so we treat all values greater than 8176 as + * negative and any other value as positive. + */ +#define X_MAX_POSITIVE 8176 +#define Y_MAX_POSITIVE 8176 /***************************************************************************** * Stuff we need even when we do not want native Synaptics support @@ -555,6 +576,22 @@ hw->right = (buf[0] & 0x02) ? 1 : 0; } + /* + * Convert wrap-around values to negative. (X|Y)_MAX_POSITIVE + * is used by some firmware to indicate a finger at the edge of + * the touchpad whose precise position cannot be determined, so + * convert these values to the maximum axis value. + */ + if (hw->x > X_MAX_POSITIVE) + hw->x -= 1 << ABS_POS_BITS; + else if (hw->x == X_MAX_POSITIVE) + hw->x = XMAX; + + if (hw->y > Y_MAX_POSITIVE) + hw->y -= 1 << ABS_POS_BITS; + else if (hw->y == Y_MAX_POSITIVE) + hw->y = YMAX; + return 0; } @@ -1223,7 +1260,9 @@ /* Clickpads report only left button */ __clear_bit(BTN_RIGHT, dev->keybit); __clear_bit(BTN_MIDDLE, dev->keybit); - } + } else if (SYN_CAP_CLICKPAD2BTN(priv->ext_cap_0c) || + SYN_CAP_CLICKPAD2BTN2(priv->ext_cap_0c)) + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); } static ssize_t synaptics_show_disable_gesture(struct psmouse *psmouse, @@ -1285,6 +1324,7 @@ { struct synaptics_data *priv = psmouse->private; struct synaptics_data old_priv = *priv; + unsigned char param[2]; int retry = 0; int error; @@ -1300,6 +1340,7 @@ */ ssleep(1); } + ps2_command(&psmouse->ps2dev, param, PSMOUSE_CMD_GETID); error = synaptics_detect(psmouse, 0); } while (error && ++retry < 3); --- linux-3.5.0.orig/drivers/input/mouse/cypress_ps2.h +++ linux-3.5.0/drivers/input/mouse/cypress_ps2.h @@ -0,0 +1,220 @@ +#ifndef _CYPRESS_PS2_H +#define _CYPRESS_PS2_H + +#include "psmouse.h" + +#define CMD_BITS_MASK 0x03 +#define COMPOSIT(x, s) (((x) & CMD_BITS_MASK) << (s)) + +#define ENCODE_CMD(aa, bb, cc, dd) \ + (COMPOSIT((aa), 6) | COMPOSIT((bb), 4) | COMPOSIT((cc), 2) | COMPOSIT((dd), 0)) +#define CYTP_CMD_ABS_NO_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 0) +#define CYTP_CMD_ABS_WITH_PRESSURE_MODE ENCODE_CMD(0, 1, 0, 1) +#define CYTP_CMD_SMBUS_MODE ENCODE_CMD(0, 1, 1, 0) +#define CYTP_CMD_STANDARD_MODE ENCODE_CMD(0, 2, 0, 0) /* not implemented yet. */ +#define CYTP_CMD_CYPRESS_REL_MODE ENCODE_CMD(1, 1, 1, 1) /* not implemented yet. */ +#define CYTP_CMD_READ_CYPRESS_ID ENCODE_CMD(0, 0, 0, 0) +#define CYTP_CMD_READ_VITAL_STATISTICS ENCODE_CMD(0, 0, 0, 1) +#define CYTP_CMD_SET_HSCROLL_WIDTH(w) ENCODE_CMD(1, 1, 0, (w)) +#define CYTP_CMD_SET_HSCROLL_MASK ENCODE_CMD(1, 1, 0, 0) +#define CYTP_CMD_SET_VSCROLL_WIDTH(w) ENCODE_CMD(1, 2, 0, (w)) +#define CYTP_CMD_SET_VSCROLL_MASK ENCODE_CMD(1, 2, 0, 0) +#define CYTP_CMD_SET_PALM_GEOMETRY(e) ENCODE_CMD(1, 2, 1, (e)) +#define CYTP_CMD_PALM_GEMMETRY_MASK ENCODE_CMD(1, 2, 1, 0) +#define CYTP_CMD_SET_PALM_SENSITIVITY(s) ENCODE_CMD(1, 2, 2, (s)) +#define CYTP_CMD_PALM_SENSITIVITY_MASK ENCODE_CMD(1, 2, 2, 0) +#define CYTP_CMD_SET_MOUSE_SENSITIVITY(s) ENCODE_CMD(1, 3, ((s) >> 2), (s)) +#define CYTP_CMD_MOUSE_SENSITIVITY_MASK ENCODE_CMD(1, 3, 0, 0) +#define CYTP_CMD_REQUEST_BASELINE_STATUS ENCODE_CMD(2, 0, 0, 1) +#define CYTP_CMD_REQUEST_RECALIBRATION ENCODE_CMD(2, 0, 0, 3) + +#define DECODE_CMD_AA(x) (((x) >> 6) & CMD_BITS_MASK) +#define DECODE_CMD_BB(x) (((x) >> 4) & CMD_BITS_MASK) +#define DECODE_CMD_CC(x) (((x) >> 2) & CMD_BITS_MASK) +#define DECODE_CMD_DD(x) ((x) & CMD_BITS_MASK) + +/* Cypress trackpad working mode. */ +#define CYTP_BIT_ABS_PRESSURE (1 << 3) +#define CYTP_BIT_ABS_NO_PRESSURE (1 << 2) +#define CYTP_BIT_CYPRESS_REL (1 << 1) +#define CYTP_BIT_STANDARD_REL (1 << 0) +#define CYTP_BIT_REL_MASK (CYTP_BIT_CYPRESS_REL | CYTP_BIT_STANDARD_REL) +#define CYTP_BIT_ABS_MASK (CYTP_BIT_ABS_PRESSURE | CYTP_BIT_ABS_NO_PRESSURE) +#define CYTP_BIT_ABS_REL_MASK (CYTP_BIT_ABS_MASK | CYTP_BIT_REL_MASK) + +#define CYTP_BIT_HIGH_RATE (1 << 4) +/* + * report mode bit is set, firmware working in Remote Mode. + * report mode bit is cleared, firmware working in Stream Mode. + */ +#define CYTP_BIT_REPORT_MODE (1 << 5) + +/* scrolling width values for set HSCROLL and VSCROLL width command. */ +#define SCROLL_WIDTH_NARROW 1 +#define SCROLL_WIDTH_NORMAL 2 +#define SCROLL_WIDTH_WIDE 3 + +#define PALM_GEOMETRY_ENABLE 1 +#define PALM_GEOMETRY_DISABLE 0 + +#define CYPRESS_KEY_1 0x33 +#define CYPRESS_KEY_2 0xCC + +#define VITAL_STATICS_MASK 0x80 +#define FW_VERSION_MASX 0x7f +#define FW_VER_HIGH_MASK 0x70 +#define FW_VER_LOW_MASK 0x0f + +/* Times to retry a ps2_command and millisecond delay between tries. */ +#define CYTP_PS2_CMD_TRIES 3 +#define CYTP_PS2_CMD_DELAY 500 + +/* time out for PS/2 command only in milliseconds. */ +#define CYTP_CMD_TIMEOUT 200 +#define CYTP_DATA_TIMEOUT 30 + +#define CYTP_EXT_CMD 0xe8 +#define CYTP_PS2_RETRY 0xfe +#define CYTP_PS2_ERROR 0xfc + +#define CYTP_RESP_RETRY 0x01 +#define CYTP_RESP_ERROR 0xfe + + +#define CYTP_105001_WIDTH 97 /* Dell XPS 13 */ +#define CYTP_105001_HIGH 59 +#define CYTP_DEFAULT_WIDTH (CYTP_105001_WIDTH) +#define CYTP_DEFAULT_HIGH (CYTP_105001_HIGH) + +#define CYTP_ABS_MAX_X 1600 +#define CYTP_ABS_MAX_Y 900 +#define CYTP_MAX_PRESSURE 255 +#define CYTP_MIN_PRESSURE 0 + +/* header byte bits of relative package. */ +#define BTN_LEFT_BIT 0x01 +#define BTN_RIGHT_BIT 0x02 +#define BTN_MIDDLE_BIT 0x04 +#define REL_X_SIGN_BIT 0x10 +#define REL_Y_SIGN_BIT 0x20 + +/* header byte bits of absolute package. */ +#define ABS_VSCROLL_BIT 0x10 +#define ABS_HSCROLL_BIT 0x20 +#define ABS_MULTIFINGER_TAP 0x04 +#define ABS_EDGE_MOTION_MASK 0x80 + +#define DFLT_RESP_BITS_VALID 0x88 /* SMBus bit should not be set. */ +#define DFLT_RESP_SMBUS_BIT 0x80 +#define DFLT_SMBUS_MODE 0x80 +#define DFLT_PS2_MODE 0x00 +#define DFLT_RESP_BIT_MODE 0x40 +#define DFLT_RESP_REMOTE_MODE 0x40 +#define DFLT_RESP_STREAM_MODE 0x00 +#define DFLT_RESP_BIT_REPORTING 0x20 +#define DFLT_RESP_BIT_SCALING 0x10 + +#define VITAL_BIT_PALM 0x80 +#define VITAL_BIT_STUBBORN 0x40 +#define VITAL_BIT_2F_JITTER 0x30 +#define VITAL_BIT_1F_JITTER 0x0c +#define VITAL_BIT_APA 0x02 +#define VITAL_BIT_MTG 0x01 +#define VITAL_BIT_ABS_PKT_FORMAT_SET 0xf0 +#define VITAL_BIT_2F_SPIKE 0x0c +#define VITAL_BIT_1F_SPIKE 0x03 + +/* bits of first byte response of E9h-Status Request command. */ +#define RESP_BTN_RIGHT_BIT 0x01 +#define RESP_BTN_MIDDLE_BIT 0x02 +#define RESP_BTN_LEFT_BIT 0x04 +#define RESP_SCALING_BIT 0x10 +#define RESP_ENABLE_BIT 0x20 +#define RESP_REMOTE_BIT 0x40 +#define RESP_SMBUS_BIT 0x80 + +#define CYTP_MAX_CONTACTS 5 +#define CYTP_MAX_MT_SLOTS 16 + +enum cytp_type { + CYTP_STG, + CYTP_MTG, + CYTP_APA, +}; + +struct cytp_contact { + int x; + int y; + int z; /* also named as touch pressure. */ + int id; /* It's incremented with every new touch. */ +}; + +/* The structure of */ +struct cytp_report_data { + int contact_cnt; + struct cytp_contact contacts[CYTP_MAX_CONTACTS]; + unsigned int left:1; + unsigned int right:1; + unsigned int middle:1; + unsigned int tap:1; /* multi-finger tap detected. */ + signed char vscroll; + signed char hscroll; +}; + +/* The structure of Cypress Trackpad device private data. */ +struct cytp_data { + int fw_version; + + int pkt_size; + int mode; + + int scaling; + int reporting; + + int tp_min_pressure; + int tp_max_pressure; + int tp_width; /* X direction physical size in mm. */ + int tp_high; /* Y direction physical size in mm. */ + int tp_max_abs_x; /* Max X absolution units can be reported. */ + int tp_max_abs_y; /* Max Y absolution units can be reported. */ + + int tp_res_x; /* X resolution in units/mm. */ + int tp_res_y; /* Y resolution in units/mm. */ + + enum cytp_type tp_type; + unsigned char tp_palm; + unsigned char tp_stubborn; + unsigned char tp_2f_jitter; + unsigned char tp_1f_jitter; + unsigned char tp_abs_packet_format_set; + unsigned char tp_2f_spike; + unsigned char tp_1f_spike; + + int vital_statics_supported; + + int prev_contact_cnt; + int zero_packet_cnt; + struct cytp_report_data prev_report_data; +}; + + +#ifdef CONFIG_MOUSE_PS2_CYPRESS +int cypress_detect(struct psmouse *psmouse, bool set_properties); +int cypress_init(struct psmouse *psmouse); +bool cypress_supported(void); +#else +inline int cypress_detect(struct psmouse *psmouse, bool set_properties) +{ + return -ENOSYS; +} +inline int cypress_init(struct psmouse *psmouse) +{ + return -ENOSYS; +} +inline bool cypress_supported(void) +{ + return 0; +} +#endif /* CONFIG_MOUSE_PS2_CYPRESS */ + +#endif /* _CYPRESS_PS2_H */ --- linux-3.5.0.orig/drivers/input/mouse/psmouse.h +++ linux-3.5.0/drivers/input/mouse/psmouse.h @@ -26,6 +26,7 @@ PSMOUSE_INITIALIZING, PSMOUSE_RESYNCING, PSMOUSE_CMD_MODE, + PSMOUSE_CMD_CYTP, /* Cypress Trackpad detecting and initializing state. */ PSMOUSE_ACTIVATED, }; @@ -78,6 +79,9 @@ }; enum psmouse_type { + /* IMPORTANT! src/eventcomm.c in x-x-i-s uses the hard-coded values + * of some of these (awful!), so never insert new entries to the + * middle of the list! */ PSMOUSE_NONE, PSMOUSE_PS2, PSMOUSE_PS2PP, @@ -95,6 +99,7 @@ PSMOUSE_ELANTECH, PSMOUSE_FSP, PSMOUSE_SYNAPTICS_RELATIVE, + PSMOUSE_CYPRESS, PSMOUSE_AUTO /* This one should always be last */ }; --- linux-3.5.0.orig/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ linux-3.5.0/drivers/infiniband/ulp/ipoib/ipoib_multicast.c @@ -190,7 +190,9 @@ mcast->mcmember = *mcmember; - /* Set the cached Q_Key before we attach if it's the broadcast group */ + /* Set the multicast MTU and cached Q_Key before we attach if it's + * the broadcast group. + */ if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4, sizeof (union ib_gid))) { spin_lock_irq(&priv->lock); @@ -198,10 +200,17 @@ spin_unlock_irq(&priv->lock); return -EAGAIN; } + priv->mcast_mtu = IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey); spin_unlock_irq(&priv->lock); priv->tx_wr.wr.ud.remote_qkey = priv->qkey; set_qkey = 1; + + if (!ipoib_cm_admin_enabled(dev)) { + rtnl_lock(); + dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); + rtnl_unlock(); + } } if (!test_bit(IPOIB_MCAST_FLAG_SENDONLY, &mcast->flags)) { @@ -589,14 +598,6 @@ return; } - priv->mcast_mtu = IPOIB_UD_MTU(ib_mtu_enum_to_int(priv->broadcast->mcmember.mtu)); - - if (!ipoib_cm_admin_enabled(dev)) { - rtnl_lock(); - dev_set_mtu(dev, min(priv->mcast_mtu, priv->admin_mtu)); - rtnl_unlock(); - } - ipoib_dbg_mcast(priv, "successfully joined all multicast groups\n"); clear_bit(IPOIB_MCAST_RUN, &priv->flags); --- linux-3.5.0.orig/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ linux-3.5.0/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -148,7 +148,7 @@ netif_stop_queue(dev); - ipoib_ib_dev_down(dev, 0); + ipoib_ib_dev_down(dev, 1); ipoib_ib_dev_stop(dev, 0); if (!test_bit(IPOIB_FLAG_SUBINTERFACE, &priv->flags)) { --- linux-3.5.0.orig/drivers/infiniband/ulp/srp/ib_srp.c +++ linux-3.5.0/drivers/infiniband/ulp/srp/ib_srp.c @@ -586,24 +586,62 @@ scmnd->sc_data_direction); } -static void srp_remove_req(struct srp_target_port *target, - struct srp_request *req, s32 req_lim_delta) +/** + * srp_claim_req - Take ownership of the scmnd associated with a request. + * @target: SRP target port. + * @req: SRP request. + * @scmnd: If NULL, take ownership of @req->scmnd. If not NULL, only take + * ownership of @req->scmnd if it equals @scmnd. + * + * Return value: + * Either NULL or a pointer to the SCSI command the caller became owner of. + */ +static struct scsi_cmnd *srp_claim_req(struct srp_target_port *target, + struct srp_request *req, + struct scsi_cmnd *scmnd) { unsigned long flags; - srp_unmap_data(req->scmnd, target, req); + spin_lock_irqsave(&target->lock, flags); + if (!scmnd) { + scmnd = req->scmnd; + req->scmnd = NULL; + } else if (req->scmnd == scmnd) { + req->scmnd = NULL; + } else { + scmnd = NULL; + } + spin_unlock_irqrestore(&target->lock, flags); + + return scmnd; +} + +/** + * srp_free_req() - Unmap data and add request to the free request list. + */ +static void srp_free_req(struct srp_target_port *target, + struct srp_request *req, struct scsi_cmnd *scmnd, + s32 req_lim_delta) +{ + unsigned long flags; + + srp_unmap_data(scmnd, target, req); + spin_lock_irqsave(&target->lock, flags); target->req_lim += req_lim_delta; - req->scmnd = NULL; list_add_tail(&req->list, &target->free_reqs); spin_unlock_irqrestore(&target->lock, flags); } static void srp_reset_req(struct srp_target_port *target, struct srp_request *req) { - req->scmnd->result = DID_RESET << 16; - req->scmnd->scsi_done(req->scmnd); - srp_remove_req(target, req, 0); + struct scsi_cmnd *scmnd = srp_claim_req(target, req, NULL); + + if (scmnd) { + srp_free_req(target, req, scmnd, 0); + scmnd->result = DID_RESET << 16; + scmnd->scsi_done(scmnd); + } } static int srp_reconnect_target(struct srp_target_port *target) @@ -1073,11 +1111,18 @@ complete(&target->tsk_mgmt_done); } else { req = &target->req_ring[rsp->tag]; - scmnd = req->scmnd; - if (!scmnd) + scmnd = srp_claim_req(target, req, NULL); + if (!scmnd) { shost_printk(KERN_ERR, target->scsi_host, "Null scmnd for RSP w/tag %016llx\n", (unsigned long long) rsp->tag); + + spin_lock_irqsave(&target->lock, flags); + target->req_lim += be32_to_cpu(rsp->req_lim_delta); + spin_unlock_irqrestore(&target->lock, flags); + + return; + } scmnd->result = rsp->status; if (rsp->flags & SRP_RSP_FLAG_SNSVALID) { @@ -1092,7 +1137,9 @@ else if (rsp->flags & (SRP_RSP_FLAG_DIOVER | SRP_RSP_FLAG_DIUNDER)) scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt)); - srp_remove_req(target, req, be32_to_cpu(rsp->req_lim_delta)); + srp_free_req(target, req, scmnd, + be32_to_cpu(rsp->req_lim_delta)); + scmnd->host_scribble = NULL; scmnd->scsi_done(scmnd); } @@ -1631,25 +1678,18 @@ { struct srp_target_port *target = host_to_target(scmnd->device->host); struct srp_request *req = (struct srp_request *) scmnd->host_scribble; - int ret = SUCCESS; shost_printk(KERN_ERR, target->scsi_host, "SRP abort called\n"); - if (!req || target->qp_in_error) - return FAILED; - if (srp_send_tsk_mgmt(target, req->index, scmnd->device->lun, - SRP_TSK_ABORT_TASK)) + if (!req || target->qp_in_error || !srp_claim_req(target, req, scmnd)) return FAILED; + srp_send_tsk_mgmt(target, req->index, scmnd->device->lun, + SRP_TSK_ABORT_TASK); + srp_free_req(target, req, scmnd, 0); + scmnd->result = DID_ABORT << 16; + scmnd->scsi_done(scmnd); - if (req->scmnd) { - if (!target->tsk_mgmt_status) { - srp_remove_req(target, req, 0); - scmnd->result = DID_ABORT << 16; - } else - ret = FAILED; - } - - return ret; + return SUCCESS; } static int srp_reset_device(struct scsi_cmnd *scmnd) --- linux-3.5.0.orig/drivers/infiniband/core/cma.c +++ linux-3.5.0/drivers/infiniband/core/cma.c @@ -3457,7 +3457,8 @@ } static const struct ibnl_client_cbs cma_cb_table[] = { - [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats }, + [RDMA_NL_RDMA_CM_ID_STATS] = { .dump = cma_get_id_stats, + .module = THIS_MODULE }, }; static int __init cma_init(void) --- linux-3.5.0.orig/drivers/infiniband/core/netlink.c +++ linux-3.5.0/drivers/infiniband/core/netlink.c @@ -152,6 +152,7 @@ { struct netlink_dump_control c = { .dump = client->cb_table[op].dump, + .module = client->cb_table[op].module, }; return netlink_dump_start(nls, skb, nlh, &c); } --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes.h +++ linux-3.5.0/drivers/infiniband/hw/nes/nes.h @@ -524,6 +524,7 @@ int nes_destroy_cqp(struct nes_device *); int nes_nic_cm_xmit(struct sk_buff *, struct net_device *); void nes_recheck_link_status(struct work_struct *work); +void nes_terminate_timeout(unsigned long context); /* nes_nic.c */ struct net_device *nes_netdev_init(struct nes_device *, void __iomem *); --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes_verbs.c +++ linux-3.5.0/drivers/infiniband/hw/nes/nes_verbs.c @@ -1404,6 +1404,9 @@ } nesqp->sig_all = (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR); + init_timer(&nesqp->terminate_timer); + nesqp->terminate_timer.function = nes_terminate_timeout; + nesqp->terminate_timer.data = (unsigned long)nesqp; /* update the QP table */ nesdev->nesadapter->qp_table[nesqp->hwqp.qp_id-NES_FIRST_QPN] = nesqp; @@ -1413,7 +1416,6 @@ return &nesqp->ibqp; } - /** * nes_clean_cq */ @@ -2559,6 +2561,11 @@ return ibmr; case IWNES_MEMREG_TYPE_QP: case IWNES_MEMREG_TYPE_CQ: + if (!region->length) { + nes_debug(NES_DBG_MR, "Unable to register zero length region for CQ\n"); + ib_umem_release(region); + return ERR_PTR(-EINVAL); + } nespbl = kzalloc(sizeof(*nespbl), GFP_KERNEL); if (!nespbl) { nes_debug(NES_DBG_MR, "Unable to allocate PBL\n"); --- linux-3.5.0.orig/drivers/infiniband/hw/nes/nes_hw.c +++ linux-3.5.0/drivers/infiniband/hw/nes/nes_hw.c @@ -75,7 +75,6 @@ static void process_critical_error(struct nes_device *nesdev); static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number); static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode); -static void nes_terminate_timeout(unsigned long context); static void nes_terminate_start_timer(struct nes_qp *nesqp); #ifdef CONFIG_INFINIBAND_NES_DEBUG @@ -3522,7 +3521,7 @@ } /* Timeout routine in case terminate fails to complete */ -static void nes_terminate_timeout(unsigned long context) +void nes_terminate_timeout(unsigned long context) { struct nes_qp *nesqp = (struct nes_qp *)(unsigned long)context; @@ -3532,11 +3531,7 @@ /* Set a timer in case hw cannot complete the terminate sequence */ static void nes_terminate_start_timer(struct nes_qp *nesqp) { - init_timer(&nesqp->terminate_timer); - nesqp->terminate_timer.function = nes_terminate_timeout; - nesqp->terminate_timer.expires = jiffies + HZ; - nesqp->terminate_timer.data = (unsigned long)nesqp; - add_timer(&nesqp->terminate_timer); + mod_timer(&nesqp->terminate_timer, (jiffies + HZ)); } /** --- linux-3.5.0.orig/drivers/tty/n_gsm.c +++ linux-3.5.0/drivers/tty/n_gsm.c @@ -875,7 +875,7 @@ /* dlci->skb is locked by tx_lock */ if (dlci->skb == NULL) { - dlci->skb = skb_dequeue(&dlci->skb_list); + dlci->skb = skb_dequeue_tail(&dlci->skb_list); if (dlci->skb == NULL) return 0; first = 1; @@ -899,8 +899,11 @@ /* FIXME: need a timer or something to kick this so it can't get stuck with no work outstanding and no buffer free */ - if (msg == NULL) + if (msg == NULL) { + skb_queue_tail(&dlci->skb_list, dlci->skb); + dlci->skb = NULL; return -ENOMEM; + } dp = msg->data; if (dlci->adaption == 4) { /* Interruptible framed (Packetised Data) */ @@ -971,16 +974,19 @@ static void gsm_dlci_data_kick(struct gsm_dlci *dlci) { unsigned long flags; + int sweep; spin_lock_irqsave(&dlci->gsm->tx_lock, flags); /* If we have nothing running then we need to fire up */ + sweep = (dlci->gsm->tx_bytes < TX_THRESH_LO); if (dlci->gsm->tx_bytes == 0) { if (dlci->net) gsm_dlci_data_output_framed(dlci->gsm, dlci); else gsm_dlci_data_output(dlci->gsm, dlci); - } else if (dlci->gsm->tx_bytes < TX_THRESH_LO) - gsm_dlci_data_sweep(dlci->gsm); + } + if (sweep) + gsm_dlci_data_sweep(dlci->gsm); spin_unlock_irqrestore(&dlci->gsm->tx_lock, flags); } @@ -1190,6 +1196,8 @@ u8 *data, int clen) { u8 buf[1]; + unsigned long flags; + switch (command) { case CMD_CLD: { struct gsm_dlci *dlci = gsm->dlci[0]; @@ -1215,7 +1223,9 @@ gsm->constipated = 0; gsm_control_reply(gsm, CMD_FCOFF, NULL, 0); /* Kick the link in case it is idling */ + spin_lock_irqsave(&gsm->tx_lock, flags); gsm_data_kick(gsm); + spin_unlock_irqrestore(&gsm->tx_lock, flags); break; case CMD_MSC: /* Out of band modem line change indicator for a DLCI */ @@ -1682,6 +1692,8 @@ kref_put(&dlci->ref, gsm_dlci_free); } +static void gsm_destroy_network(struct gsm_dlci *dlci); + /** * gsm_dlci_release - release DLCI * @dlci: DLCI to destroy @@ -1695,9 +1707,19 @@ { struct tty_struct *tty = tty_port_tty_get(&dlci->port); if (tty) { + mutex_lock(&dlci->mutex); + gsm_destroy_network(dlci); + mutex_unlock(&dlci->mutex); + + /* tty_vhangup needs the tty_lock, so unlock and + relock after doing the hangup. */ + tty_unlock(); tty_vhangup(tty); + tty_lock(); + tty_port_tty_set(&dlci->port, NULL); tty_kref_put(tty); } + dlci->state = DLCI_CLOSED; dlci_put(dlci); } @@ -2377,12 +2399,12 @@ /* Queue poll */ clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); + spin_lock_irqsave(&gsm->tx_lock, flags); gsm_data_kick(gsm); if (gsm->tx_bytes < TX_THRESH_LO) { - spin_lock_irqsave(&gsm->tx_lock, flags); gsm_dlci_data_sweep(gsm); - spin_unlock_irqrestore(&gsm->tx_lock, flags); } + spin_unlock_irqrestore(&gsm->tx_lock, flags); } /** @@ -2889,6 +2911,10 @@ gsm = gsm_mux[mux]; if (gsm->dead) return -EL2HLT; + /* If DLCI 0 is not yet fully open return an error. This is ok from a locking + perspective as we don't have to worry about this if DLCI0 is lost */ + if (gsm->dlci[0] && gsm->dlci[0]->state != DLCI_OPEN) + return -EL2NSYNC; dlci = gsm->dlci[line]; if (dlci == NULL) dlci = gsm_dlci_alloc(gsm, line); @@ -2919,6 +2945,8 @@ if (dlci == NULL) return; + if (dlci->state == DLCI_CLOSED) + return; mutex_lock(&dlci->mutex); gsm_destroy_network(dlci); mutex_unlock(&dlci->mutex); @@ -2937,6 +2965,8 @@ static void gsmtty_hangup(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; tty_port_hangup(&dlci->port); gsm_dlci_begin_close(dlci); } @@ -2944,9 +2974,12 @@ static int gsmtty_write(struct tty_struct *tty, const unsigned char *buf, int len) { + int sent; struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; /* Stuff the bytes into the fifo queue */ - int sent = kfifo_in_locked(dlci->fifo, buf, len, &dlci->lock); + sent = kfifo_in_locked(dlci->fifo, buf, len, &dlci->lock); /* Need to kick the channel */ gsm_dlci_data_kick(dlci); return sent; @@ -2955,18 +2988,24 @@ static int gsmtty_write_room(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return TX_SIZE - kfifo_len(dlci->fifo); } static int gsmtty_chars_in_buffer(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return kfifo_len(dlci->fifo); } static void gsmtty_flush_buffer(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; /* Caution needed: If we implement reliable transport classes then the data being transmitted can't simply be junked once it has first hit the stack. Until then we can just blow it @@ -2985,6 +3024,8 @@ static int gsmtty_tiocmget(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; return dlci->modem_rx; } @@ -2994,6 +3035,8 @@ struct gsm_dlci *dlci = tty->driver_data; unsigned int modem_tx = dlci->modem_tx; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; modem_tx &= ~clear; modem_tx |= set; @@ -3012,6 +3055,8 @@ struct gsm_netconfig nc; int index; + if (dlci->state == DLCI_CLOSED) + return -EINVAL; switch (cmd) { case GSMIOC_ENABLE_NET: if (copy_from_user(&nc, (void __user *)arg, sizeof(nc))) @@ -3038,6 +3083,9 @@ static void gsmtty_set_termios(struct tty_struct *tty, struct ktermios *old) { + struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; /* For the moment its fixed. In actual fact the speed information for the virtual channel can be propogated in both directions by the RPN control message. This however rapidly gets nasty as we @@ -3049,6 +3097,8 @@ static void gsmtty_throttle(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; if (tty->termios->c_cflag & CRTSCTS) dlci->modem_tx &= ~TIOCM_DTR; dlci->throttled = 1; @@ -3059,6 +3109,8 @@ static void gsmtty_unthrottle(struct tty_struct *tty) { struct gsm_dlci *dlci = tty->driver_data; + if (dlci->state == DLCI_CLOSED) + return; if (tty->termios->c_cflag & CRTSCTS) dlci->modem_tx |= TIOCM_DTR; dlci->throttled = 0; @@ -3070,6 +3122,8 @@ { struct gsm_dlci *dlci = tty->driver_data; int encode = 0; /* Off */ + if (dlci->state == DLCI_CLOSED) + return -EINVAL; if (state == -1) /* "On indefinitely" - we can't encode this properly */ --- linux-3.5.0.orig/drivers/tty/n_tty.c +++ linux-3.5.0/drivers/tty/n_tty.c @@ -1728,7 +1728,8 @@ do_it_again: - BUG_ON(!tty->read_buf); + if (WARN_ON(!tty->read_buf)) + return -EAGAIN; c = job_control(tty, file); if (c < 0) --- linux-3.5.0.orig/drivers/tty/tty_ioctl.c +++ linux-3.5.0/drivers/tty/tty_ioctl.c @@ -617,7 +617,7 @@ if (opt & TERMIOS_WAIT) { tty_wait_until_sent(tty, 0); if (signal_pending(current)) - return -EINTR; + return -ERESTARTSYS; } tty_set_termios(tty, &tmp_termios); @@ -684,7 +684,7 @@ if (opt & TERMIOS_WAIT) { tty_wait_until_sent(tty, 0); if (signal_pending(current)) - return -EINTR; + return -ERESTARTSYS; } mutex_lock(&tty->termios_mutex); --- linux-3.5.0.orig/drivers/tty/serial/pch_uart.c +++ linux-3.5.0/drivers/tty/serial/pch_uart.c @@ -253,6 +253,9 @@ dma_addr_t rx_buf_dma; struct dentry *debugfs; + + /* protect the eg20t_port private structure and io access to membase */ + spinlock_t lock; }; /** @@ -754,7 +757,8 @@ tty_flip_buffer_push(tty); tty_kref_put(tty); async_tx_ack(priv->desc_rx); - pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } static void pch_dma_tx_complete(void *arg) @@ -809,7 +813,8 @@ int rx_size; int ret; if (!priv->start_rx) { - pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); return 0; } buf = &priv->rxbuf; @@ -1058,7 +1063,7 @@ int next = 1; u8 msr; - spin_lock_irqsave(&priv->port.lock, flags); + spin_lock_irqsave(&priv->lock, flags); handled = 0; while (next) { iid = pch_uart_hal_get_iid(priv); @@ -1078,11 +1083,13 @@ case PCH_UART_IID_RDR: /* Received Data Ready */ if (priv->use_dma) { pch_uart_hal_disable_interrupt(priv, - PCH_UART_HAL_RX_INT); + PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); ret = dma_handle_rx(priv); if (!ret) pch_uart_hal_enable_interrupt(priv, - PCH_UART_HAL_RX_INT); + PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } else { ret = handle_rx(priv); } @@ -1116,7 +1123,7 @@ handled |= (unsigned int)ret; } - spin_unlock_irqrestore(&priv->port.lock, flags); + spin_unlock_irqrestore(&priv->lock, flags); return IRQ_RETVAL(handled); } @@ -1208,7 +1215,8 @@ struct eg20t_port *priv; priv = container_of(port, struct eg20t_port, port); priv->start_rx = 0; - pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_disable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); } /* Enable the modem status interrupts. */ @@ -1226,9 +1234,9 @@ unsigned long flags; priv = container_of(port, struct eg20t_port, port); - spin_lock_irqsave(&port->lock, flags); + spin_lock_irqsave(&priv->lock, flags); pch_uart_hal_set_break(priv, ctl); - spin_unlock_irqrestore(&port->lock, flags); + spin_unlock_irqrestore(&priv->lock, flags); } /* Grab any interrupt resources and initialise any low level driver state. */ @@ -1263,6 +1271,7 @@ break; case 16: fifo_size = PCH_UART_HAL_FIFO16; + break; case 1: default: fifo_size = PCH_UART_HAL_FIFO_DIS; @@ -1300,7 +1309,8 @@ pch_request_dma(port); priv->start_rx = 1; - pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT); + pch_uart_hal_enable_interrupt(priv, PCH_UART_HAL_RX_INT | + PCH_UART_HAL_RX_ERR_INT); uart_update_timeout(port, CS8, default_baud); return 0; @@ -1358,7 +1368,7 @@ stb = PCH_UART_HAL_STB1; if (termios->c_cflag & PARENB) { - if (!(termios->c_cflag & PARODD)) + if (termios->c_cflag & PARODD) parity = PCH_UART_HAL_PARITY_ODD; else parity = PCH_UART_HAL_PARITY_EVEN; @@ -1376,7 +1386,8 @@ baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk / 16); - spin_lock_irqsave(&port->lock, flags); + spin_lock_irqsave(&priv->lock, flags); + spin_lock(&port->lock); uart_update_timeout(port, termios->c_cflag, baud); rtn = pch_uart_hal_set_line(priv, baud, parity, bits, stb); @@ -1389,7 +1400,8 @@ tty_termios_encode_baud_rate(termios, baud, baud); out: - spin_unlock_irqrestore(&port->lock, flags); + spin_unlock(&port->lock); + spin_unlock_irqrestore(&priv->lock, flags); } static const char *pch_uart_type(struct uart_port *port) @@ -1538,8 +1550,9 @@ { struct eg20t_port *priv; unsigned long flags; + int priv_locked = 1; + int port_locked = 1; u8 ier; - int locked = 1; priv = pch_uart_ports[co->index]; @@ -1547,12 +1560,16 @@ local_irq_save(flags); if (priv->port.sysrq) { - /* serial8250_handle_port() already took the lock */ - locked = 0; + spin_lock(&priv->lock); + /* serial8250_handle_port() already took the port lock */ + port_locked = 0; } else if (oops_in_progress) { - locked = spin_trylock(&priv->port.lock); - } else + priv_locked = spin_trylock(&priv->lock); + port_locked = spin_trylock(&priv->port.lock); + } else { + spin_lock(&priv->lock); spin_lock(&priv->port.lock); + } /* * First save the IER then disable the interrupts @@ -1570,8 +1587,10 @@ wait_for_xmitr(priv, BOTH_EMPTY); iowrite8(ier, priv->membase + UART_IER); - if (locked) + if (port_locked) spin_unlock(&priv->port.lock); + if (priv_locked) + spin_unlock(&priv->lock); local_irq_restore(flags); } @@ -1669,6 +1688,8 @@ pci_enable_msi(pdev); pci_set_master(pdev); + spin_lock_init(&priv->lock); + iobase = pci_resource_start(pdev, 0); mapbase = pci_resource_start(pdev, 1); priv->mapbase = mapbase; --- linux-3.5.0.orig/drivers/tty/serial/imx.c +++ linux-3.5.0/drivers/tty/serial/imx.c @@ -132,6 +132,7 @@ #define UCR4_OREN (1<<1) /* Receiver overrun interrupt enable */ #define UCR4_DREN (1<<0) /* Recv data ready interrupt enable */ #define UFCR_RXTL_SHF 0 /* Receiver trigger level shift */ +#define UFCR_DCEDTE (1<<6) /* DCE/DTE mode select */ #define UFCR_RFDIV (7<<7) /* Reference freq divider mask */ #define UFCR_RFDIV_REG(x) (((x) < 7 ? 6 - (x) : 6) << 7) #define UFCR_TXTL_SHF 10 /* Transmitter trigger level shift */ @@ -668,22 +669,11 @@ static int imx_setup_ufcr(struct imx_port *sport, unsigned int mode) { unsigned int val; - unsigned int ufcr_rfdiv; - - /* set receiver / transmitter trigger level. - * RFDIV is set such way to satisfy requested uartclk value - */ - val = TXTL << 10 | RXTL; - ufcr_rfdiv = (clk_get_rate(sport->clk_per) + sport->port.uartclk / 2) - / sport->port.uartclk; - - if(!ufcr_rfdiv) - ufcr_rfdiv = 1; - - val |= UFCR_RFDIV_REG(ufcr_rfdiv); + /* set receiver / transmitter trigger level */ + val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE); + val |= TXTL << UFCR_TXTL_SHF | RXTL; writel(val, sport->port.membase + UFCR); - return 0; } @@ -758,6 +748,7 @@ } } + spin_lock_irqsave(&sport->port.lock, flags); /* * Finally, clear and enable interrupts */ @@ -811,7 +802,6 @@ /* * Enable modem status interrupts */ - spin_lock_irqsave(&sport->port.lock,flags); imx_enable_ms(&sport->port); spin_unlock_irqrestore(&sport->port.lock,flags); @@ -841,10 +831,13 @@ { struct imx_port *sport = (struct imx_port *)port; unsigned long temp; + unsigned long flags; + spin_lock_irqsave(&sport->port.lock, flags); temp = readl(sport->port.membase + UCR2); temp &= ~(UCR2_TXEN); writel(temp, sport->port.membase + UCR2); + spin_unlock_irqrestore(&sport->port.lock, flags); if (USE_IRDA(sport)) { struct imxuart_platform_data *pdata; @@ -873,12 +866,14 @@ * Disable all interrupts, port and break condition. */ + spin_lock_irqsave(&sport->port.lock, flags); temp = readl(sport->port.membase + UCR1); temp &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); if (USE_IRDA(sport)) temp &= ~(UCR1_IREN); writel(temp, sport->port.membase + UCR1); + spin_unlock_irqrestore(&sport->port.lock, flags); } static void @@ -1221,6 +1216,15 @@ struct imx_port *sport = imx_ports[co->index]; struct imx_port_ucrs old_ucr; unsigned int ucr1; + unsigned long flags; + int locked = 1; + + if (sport->port.sysrq) + locked = 0; + else if (oops_in_progress) + locked = spin_trylock_irqsave(&sport->port.lock, flags); + else + spin_lock_irqsave(&sport->port.lock, flags); /* * First, save UCR1/2/3 and then disable interrupts @@ -1246,6 +1250,9 @@ while (!(readl(sport->port.membase + USR2) & USR2_TXDC)); imx_port_ucrs_restore(&sport->port, &old_ucr); + + if (locked) + spin_unlock_irqrestore(&sport->port.lock, flags); } /* --- linux-3.5.0.orig/drivers/tty/serial/ifx6x60.c +++ linux-3.5.0/drivers/tty/serial/ifx6x60.c @@ -552,6 +552,7 @@ container_of(port, struct ifx_spi_device, tty_port); mrdy_set_low(ifx_dev); + del_timer(&ifx_dev->spi_timer); clear_bit(IFX_SPI_STATE_TIMER_PENDING, &ifx_dev->flags); tasklet_kill(&ifx_dev->io_work_tasklet); } --- linux-3.5.0.orig/drivers/tty/serial/amba-pl011.c +++ linux-3.5.0/drivers/tty/serial/amba-pl011.c @@ -1603,13 +1603,26 @@ old_cr &= ~ST_UART011_CR_OVSFACT; } + /* + * Workaround for the ST Micro oversampling variants to + * increase the bitrate slightly, by lowering the divisor, + * to avoid delayed sampling of start bit at high speeds, + * else we see data corruption. + */ + if (uap->vendor->oversampling) { + if ((baud >= 3000000) && (baud < 3250000) && (quot > 1)) + quot -= 1; + else if ((baud > 3250000) && (quot > 2)) + quot -= 2; + } /* Set baud rate */ writew(quot & 0x3f, port->membase + UART011_FBRD); writew(quot >> 6, port->membase + UART011_IBRD); /* * ----------v----------v----------v----------v----- - * NOTE: MUST BE WRITTEN AFTER UARTLCR_M & UARTLCR_L + * NOTE: lcrh_tx and lcrh_rx MUST BE WRITTEN AFTER + * UART011_FBRD & UART011_IBRD. * ----------^----------^----------^----------^----- */ writew(lcr_h, port->membase + uap->lcrh_rx); --- linux-3.5.0.orig/drivers/tty/serial/pmac_zilog.c +++ linux-3.5.0/drivers/tty/serial/pmac_zilog.c @@ -1348,10 +1348,16 @@ static int pmz_poll_get_char(struct uart_port *port) { struct uart_pmac_port *uap = (struct uart_pmac_port *)port; + int tries = 2; - while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0) - udelay(5); - return read_zsdata(uap); + while (tries) { + if ((read_zsreg(uap, R0) & Rx_CH_AV) != 0) + return read_zsdata(uap); + if (tries--) + udelay(5); + } + + return NO_POLL_CHAR; } static void pmz_poll_put_char(struct uart_port *port, unsigned char c) --- linux-3.5.0.orig/drivers/tty/serial/8250/8250_pci.c +++ linux-3.5.0/drivers/tty/serial/8250/8250_pci.c @@ -1078,6 +1078,18 @@ return setup_port(priv, port, 2, idx * 8, 0); } +static int +pci_brcm_trumanage_setup(struct serial_private *priv, + const struct pciserial_board *board, + struct uart_port *port, int idx) +{ + int ret = pci_default_setup(priv, board, port, idx); + + port->type = PORT_BRCM_TRUMANAGE; + port->flags = (port->flags | UPF_FIXED_PORT | UPF_FIXED_TYPE); + return ret; +} + static int skip_tx_en_setup(struct serial_private *priv, const struct pciserial_board *board, struct uart_port *port, int idx) @@ -1164,6 +1176,8 @@ #define PCI_SUBDEVICE_ID_OCTPRO422 0x0208 #define PCI_SUBDEVICE_ID_POCTAL232 0x0308 #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 +#define PCI_SUBDEVICE_ID_SIIG_DUAL_00 0x2500 +#define PCI_SUBDEVICE_ID_SIIG_DUAL_30 0x2530 #define PCI_VENDOR_ID_ADVANTECH 0x13fe #define PCI_DEVICE_ID_INTEL_CE4100_UART 0x2e66 #define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620 @@ -1187,6 +1201,7 @@ #define PCIE_DEVICE_ID_NEO_2_OX_IBM 0x00F6 #define PCI_DEVICE_ID_PLX_CRONYX_OMEGA 0xc001 #define PCI_DEVICE_ID_INTEL_PATSBURG_KT 0x1d3d +#define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 @@ -1728,6 +1743,17 @@ .setup = pci_omegapci_setup, }, /* + * Broadcom TruManage (NetXtreme) + */ + { + .vendor = PCI_VENDOR_ID_BROADCOM, + .device = PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .setup = pci_brcm_trumanage_setup, + }, + + /* * Default "match everything" terminator entry */ { @@ -1916,6 +1942,7 @@ pbn_ce4100_1_115200, pbn_omegapci, pbn_NETMOS9900_2s_115200, + pbn_brcm_trumanage, }; /* @@ -2622,6 +2649,12 @@ .num_ports = 2, .base_baud = 115200, }, + [pbn_brcm_trumanage] = { + .flags = FL_BASE0, + .num_ports = 1, + .reg_shift = 2, + .base_baud = 115200, + }, }; static const struct pci_device_id softmodem_blacklist[] = { @@ -3232,8 +3265,11 @@ * For now just used the hex ID 0x950a. */ { PCI_VENDOR_ID_OXSEMI, 0x950a, - PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL, 0, 0, - pbn_b0_2_115200 }, + PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_00, + 0, 0, pbn_b0_2_115200 }, + { PCI_VENDOR_ID_OXSEMI, 0x950a, + PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_30, + 0, 0, pbn_b0_2_115200 }, { PCI_VENDOR_ID_OXSEMI, 0x950a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b0_2_1130000 }, @@ -4179,6 +4215,13 @@ pbn_omegapci }, /* + * Broadcom TruManage + */ + { PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BROADCOM_TRUMANAGE, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_brcm_trumanage }, + + /* * These entries match devices with class COMMUNICATION_SERIAL, * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL */ --- linux-3.5.0.orig/drivers/tty/serial/8250/8250.h +++ linux-3.5.0/drivers/tty/serial/8250/8250.h @@ -73,6 +73,7 @@ #define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */ #define UART_CAP_UUE (1 << 12) /* UART needs IER bit 6 set (Xscale) */ #define UART_CAP_RTOIE (1 << 13) /* UART needs IER bit 4 set (Xscale, Tegra) */ +#define UART_CAP_HFIFO (1 << 14) /* UART has a "hidden" FIFO */ #define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */ #define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */ --- linux-3.5.0.orig/drivers/tty/serial/8250/8250.c +++ linux-3.5.0/drivers/tty/serial/8250/8250.c @@ -282,6 +282,12 @@ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10, .flags = UART_CAP_FIFO | UART_CAP_AFE | UART_CAP_EFR, }, + [PORT_BRCM_TRUMANAGE] = { + .name = "TruManage", + .fifo_size = 1, + .tx_loadsz = 1024, + .flags = UART_CAP_HFIFO, + }, }; /* Uart divisor latch read */ @@ -1427,6 +1433,11 @@ port->icount.tx++; if (uart_circ_empty(xmit)) break; + if (up->capabilities & UART_CAP_HFIFO) { + if ((serial_port_in(port, UART_LSR) & BOTH_EMPTY) != + BOTH_EMPTY) + break; + } } while (--count > 0); if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) --- linux-3.5.0.orig/drivers/tty/serial/8250/8250_dw.c +++ linux-3.5.0/drivers/tty/serial/8250/8250_dw.c @@ -79,7 +79,7 @@ } else if ((iir & UART_IIR_BUSY) == UART_IIR_BUSY) { /* Clear the USR and write the LCR again. */ (void)p->serial_in(p, UART_USR); - p->serial_out(p, d->last_lcr, UART_LCR); + p->serial_out(p, UART_LCR, d->last_lcr); return 1; } --- linux-3.5.0.orig/drivers/tty/vt/vt_ioctl.c +++ linux-3.5.0/drivers/tty/vt/vt_ioctl.c @@ -996,9 +996,9 @@ return ret; } -void reset_vc(struct vc_data *vc) +void reset_vc(struct vc_data *vc, int mode) { - vc->vc_mode = KD_TEXT; + vc->vc_mode = mode; vt_reset_unicode(vc->vc_num); vc->vt_mode.mode = VT_AUTO; vc->vt_mode.waitv = 0; @@ -1030,7 +1030,7 @@ */ if (tty) __do_SAK(tty); - reset_vc(vc); + reset_vc(vc, KD_TEXT); } console_unlock(); } @@ -1287,7 +1287,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); if (old_vc_mode != vc->vc_mode) { if (vc->vc_mode == KD_TEXT) @@ -1359,7 +1359,7 @@ * this outside of VT_PROCESS but there is no single process * to account for and tracking tty count may be undesirable. */ - reset_vc(vc); + reset_vc(vc, KD_TEXT); /* * Fall through to normal (VT_AUTO) handling of the switch... --- linux-3.5.0.orig/drivers/tty/vt/keyboard.c +++ linux-3.5.0/drivers/tty/vt/keyboard.c @@ -1049,13 +1049,10 @@ */ int vt_get_leds(int console, int flag) { - unsigned long flags; struct kbd_struct * kbd = kbd_table + console; int ret; - spin_lock_irqsave(&kbd_event_lock, flags); ret = vc_kbd_led(kbd, flag); - spin_unlock_irqrestore(&kbd_event_lock, flags); return ret; } --- linux-3.5.0.orig/drivers/tty/vt/vt.c +++ linux-3.5.0/drivers/tty/vt/vt.c @@ -102,6 +102,7 @@ #include #include #include +#include #define MAX_NR_CON_DRIVER 16 @@ -144,7 +145,7 @@ static int con_open(struct tty_struct *, struct file *); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear); + unsigned int cols, int do_clear, int mode); static void gotoxy(struct vc_data *vc, int new_x, int new_y); static void save_cur(struct vc_data *vc); static void reset_terminal(struct vc_data *vc, int do_clear); @@ -165,6 +166,9 @@ static int cur_default = CUR_DEFAULT; module_param(cur_default, int, S_IRUGO | S_IWUSR); +int vt_handoff = 0; +module_param_named(handoff, vt_handoff, int, S_IRUGO | S_IWUSR); + /* * ignore_poke: don't unblank the screen when things are typed. This is * mainly for the privacy of braille terminal users. @@ -656,7 +660,7 @@ * Redrawing of screen */ -static void clear_buffer_attributes(struct vc_data *vc) +void clear_buffer_attributes(struct vc_data *vc) { unsigned short *p = (unsigned short *)vc->vc_origin; int count = vc->vc_screenbuf_size / 2; @@ -694,6 +698,13 @@ } if (tty0dev) sysfs_notify(&tty0dev->kobj, NULL, "active"); + /* + * If we are switching away from a transparent VT the contents + * will be lost, convert it into a blank text console then + * it will be repainted blank if we ever switch back. + */ + if (old_vc->vc_mode == KD_TRANSPARENT) + old_vc->vc_mode = KD_TEXT; } else { hide_cursor(vc); redraw = 1; @@ -807,7 +818,7 @@ if (global_cursor_default == -1) global_cursor_default = 1; - vc_init(vc, vc->vc_rows, vc->vc_cols, 1); + vc_init(vc, vc->vc_rows, vc->vc_cols, 1, KD_TEXT); vcs_make_sysfs(currcons); atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); } @@ -2848,7 +2859,7 @@ module_param_named(underline, default_underline_color, int, S_IRUGO | S_IWUSR); static void vc_init(struct vc_data *vc, unsigned int rows, - unsigned int cols, int do_clear) + unsigned int cols, int do_clear, int mode) { int j, k ; @@ -2859,7 +2870,7 @@ set_origin(vc); vc->vc_pos = vc->vc_origin; - reset_vc(vc); + reset_vc(vc, mode); for (j=k=0; j<16; j++) { vc->vc_palette[k++] = default_red[j] ; vc->vc_palette[k++] = default_grn[j] ; @@ -2885,6 +2896,13 @@ struct vc_data *vc; unsigned int currcons = 0, i; + if (screen_info.flags & VIDEO_FLAGS_HANDOFF) { + if (vt_handoff == 0) + vt_handoff = 8; + printk(KERN_INFO "vt handoff: grub requested handoff (vt#%d)\n", + vt_handoff); + } + console_lock(); if (conswitchp) @@ -2916,16 +2934,31 @@ mod_timer(&console_timer, jiffies + (blankinterval * HZ)); } + if (vt_handoff > 0 && vt_handoff <= MAX_NR_CONSOLES) { + currcons = vt_handoff - 1; + vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); + INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); + visual_init(vc, currcons, 1); + vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); + vc_init(vc, vc->vc_rows, vc->vc_cols, 0, KD_TRANSPARENT); + } for (currcons = 0; currcons < MIN_NR_CONSOLES; currcons++) { + if (currcons == vt_handoff - 1) + continue; vc_cons[currcons].d = vc = kzalloc(sizeof(struct vc_data), GFP_NOWAIT); INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); tty_port_init(&vc->port); visual_init(vc, currcons, 1); vc->vc_screenbuf = kzalloc(vc->vc_screenbuf_size, GFP_NOWAIT); vc_init(vc, vc->vc_rows, vc->vc_cols, - currcons || !vc->vc_sw->con_save_screen); + currcons || !vc->vc_sw->con_save_screen, KD_TEXT); } currcons = fg_console = 0; + if (vt_handoff > 0) { + printk(KERN_INFO "vt handoff: transparent VT on vt#%d\n", + vt_handoff); + currcons = fg_console = vt_handoff - 1; + } master_display_fg = vc = vc_cons[currcons].d; set_origin(vc); save_screen(vc); @@ -3017,7 +3050,7 @@ static struct class *vtconsole_class; -static int bind_con_driver(const struct consw *csw, int first, int last, +static int do_bind_con_driver(const struct consw *csw, int first, int last, int deflt) { struct module *owner = csw->owner; @@ -3028,7 +3061,7 @@ if (!try_module_get(owner)) return -ENODEV; - console_lock(); + WARN_CONSOLE_UNLOCKED(); /* check if driver is registered */ for (i = 0; i < MAX_NR_CON_DRIVER; i++) { @@ -3113,11 +3146,22 @@ retval = 0; err: - console_unlock(); module_put(owner); return retval; }; + +static int bind_con_driver(const struct consw *csw, int first, int last, + int deflt) +{ + int ret; + + console_lock(); + ret = do_bind_con_driver(csw, first, last, deflt); + console_unlock(); + return ret; +} + #ifdef CONFIG_VT_HW_CONSOLE_BINDING static int con_is_graphics(const struct consw *csw, int first, int last) { @@ -3154,6 +3198,18 @@ */ int unbind_con_driver(const struct consw *csw, int first, int last, int deflt) { + int retval; + + console_lock(); + retval = do_unbind_con_driver(csw, first, last, deflt); + console_unlock(); + return retval; +} +EXPORT_SYMBOL(unbind_con_driver); + +/* unlocked version of unbind_con_driver() */ +int do_unbind_con_driver(const struct consw *csw, int first, int last, int deflt) +{ struct module *owner = csw->owner; const struct consw *defcsw = NULL; struct con_driver *con_driver = NULL, *con_back = NULL; @@ -3162,7 +3218,7 @@ if (!try_module_get(owner)) return -ENODEV; - console_lock(); + WARN_CONSOLE_UNLOCKED(); /* check if driver is registered and if it is unbindable */ for (i = 0; i < MAX_NR_CON_DRIVER; i++) { @@ -3175,10 +3231,8 @@ } } - if (retval) { - console_unlock(); + if (retval) goto err; - } retval = -ENODEV; @@ -3194,15 +3248,11 @@ } } - if (retval) { - console_unlock(); + if (retval) goto err; - } - if (!con_is_bound(csw)) { - console_unlock(); + if (!con_is_bound(csw)) goto err; - } first = max(first, con_driver->first); last = min(last, con_driver->last); @@ -3229,15 +3279,14 @@ if (!con_is_bound(csw)) con_driver->flag &= ~CON_DRIVER_FLAG_INIT; - console_unlock(); /* ignore return value, binding should not fail */ - bind_con_driver(defcsw, first, last, deflt); + do_bind_con_driver(defcsw, first, last, deflt); err: module_put(owner); return retval; } -EXPORT_SYMBOL(unbind_con_driver); +EXPORT_SYMBOL_GPL(do_unbind_con_driver); static int vt_bind(struct con_driver *con) { @@ -3475,6 +3524,19 @@ kdb_set(2, setargs); } } + if (vc->vc_cols < 999) { + int colcount; + char cols[4]; + const char *setargs[3] = { + "set", + "COLUMNS", + cols, + }; + if (kdbgetintenv(setargs[0], &colcount)) { + snprintf(cols, 4, "%i", vc->vc_cols); + kdb_set(2, setargs); + } + } #endif /* CONFIG_KGDB_KDB */ return ret; } @@ -3509,28 +3571,18 @@ } EXPORT_SYMBOL_GPL(con_debug_leave); -/** - * register_con_driver - register console driver to console layer - * @csw: console driver - * @first: the first console to take over, minimum value is 0 - * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1 - * - * DESCRIPTION: This function registers a console driver which can later - * bind to a range of consoles specified by @first and @last. It will - * also initialize the console driver by calling con_startup(). - */ -int register_con_driver(const struct consw *csw, int first, int last) +static int do_register_con_driver(const struct consw *csw, int first, int last) { struct module *owner = csw->owner; struct con_driver *con_driver; const char *desc; int i, retval = 0; + WARN_CONSOLE_UNLOCKED(); + if (!try_module_get(owner)) return -ENODEV; - console_lock(); - for (i = 0; i < MAX_NR_CON_DRIVER; i++) { con_driver = ®istered_con_driver[i]; @@ -3583,10 +3635,29 @@ } err: - console_unlock(); module_put(owner); return retval; } + +/** + * register_con_driver - register console driver to console layer + * @csw: console driver + * @first: the first console to take over, minimum value is 0 + * @last: the last console to take over, maximum value is MAX_NR_CONSOLES -1 + * + * DESCRIPTION: This function registers a console driver which can later + * bind to a range of consoles specified by @first and @last. It will + * also initialize the console driver by calling con_startup(). + */ +int register_con_driver(const struct consw *csw, int first, int last) +{ + int retval; + + console_lock(); + retval = do_register_con_driver(csw, first, last); + console_unlock(); + return retval; +} EXPORT_SYMBOL(register_con_driver); /** @@ -3602,9 +3673,18 @@ */ int unregister_con_driver(const struct consw *csw) { - int i, retval = -ENODEV; + int retval; console_lock(); + retval = do_unregister_con_driver(csw); + console_unlock(); + return retval; +} +EXPORT_SYMBOL(unregister_con_driver); + +int do_unregister_con_driver(const struct consw *csw) +{ + int i, retval = -ENODEV; /* cannot unregister a bound driver */ if (con_is_bound(csw)) @@ -3630,27 +3710,53 @@ } } err: - console_unlock(); return retval; } -EXPORT_SYMBOL(unregister_con_driver); +EXPORT_SYMBOL_GPL(do_unregister_con_driver); /* * If we support more console drivers, this function is used * when a driver wants to take over some existing consoles * and become default driver for newly opened ones. * - * take_over_console is basically a register followed by unbind + * take_over_console is basically a register followed by unbind + */ +int do_take_over_console(const struct consw *csw, int first, int last, int deflt) +{ + int err; + + err = do_register_con_driver(csw, first, last); + /* + * If we get an busy error we still want to bind the console driver + * and return success, as we may have unbound the console driver + * but not unregistered it. + */ + if (err == -EBUSY) + err = 0; + if (!err) + do_bind_con_driver(csw, first, last, deflt); + + return err; +} +EXPORT_SYMBOL_GPL(do_take_over_console); + +/* + * If we support more console drivers, this function is used + * when a driver wants to take over some existing consoles + * and become default driver for newly opened ones. + * + * take_over_console is basically a register followed by unbind */ int take_over_console(const struct consw *csw, int first, int last, int deflt) { int err; err = register_con_driver(csw, first, last); - /* if we get an busy error we still want to bind the console driver + /* + * If we get an busy error we still want to bind the console driver * and return success, as we may have unbound the console driver -  * but not unregistered it. - */ + * but not unregistered it. + */ if (err == -EBUSY) err = 0; if (!err) --- linux-3.5.0.orig/drivers/spi/spi-pl022.c +++ linux-3.5.0/drivers/spi/spi-pl022.c @@ -489,6 +489,11 @@ 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)); + } /** --- linux-3.5.0.orig/drivers/hv/channel.c +++ linux-3.5.0/drivers/hv/channel.c @@ -146,14 +146,14 @@ if (ret != 0) { err = ret; - goto errorout; + goto error0; } ret = hv_ringbuffer_init( &newchannel->inbound, in, recv_ringbuffer_size); if (ret != 0) { err = ret; - goto errorout; + goto error0; } @@ -168,7 +168,7 @@ if (ret != 0) { err = ret; - goto errorout; + goto error0; } /* Create and init the channel open message */ @@ -177,7 +177,7 @@ GFP_KERNEL); if (!open_info) { err = -ENOMEM; - goto errorout; + goto error0; } init_completion(&open_info->waitevent); @@ -193,7 +193,7 @@ if (userdatalen > MAX_USER_DEFINED_BYTES) { err = -EINVAL; - goto errorout; + goto error0; } if (userdatalen) @@ -208,19 +208,18 @@ sizeof(struct vmbus_channel_open_channel)); if (ret != 0) - goto cleanup; + goto error1; t = wait_for_completion_timeout(&open_info->waitevent, 5*HZ); if (t == 0) { err = -ETIMEDOUT; - goto errorout; + goto error1; } if (open_info->response.open_result.status) err = open_info->response.open_result.status; -cleanup: spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); list_del(&open_info->msglistentry); spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); @@ -228,9 +227,12 @@ kfree(open_info); return err; -errorout: - hv_ringbuffer_cleanup(&newchannel->outbound); - hv_ringbuffer_cleanup(&newchannel->inbound); +error1: + spin_lock_irqsave(&vmbus_connection.channelmsg_lock, flags); + list_del(&open_info->msglistentry); + spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags); + +error0: free_pages((unsigned long)out, get_order(send_ringbuffer_size + recv_ringbuffer_size)); kfree(open_info); --- linux-3.5.0.orig/drivers/memstick/host/Kconfig +++ linux-3.5.0/drivers/memstick/host/Kconfig @@ -42,3 +42,13 @@ To compile this driver as a module, choose M here: the module will be called r592. + +config MEMSTICK_REALTEK_PCI + tristate "Realtek PCI-E Memstick Card Interface Driver" + depends on MFD_RTSX_PCI + help + Say Y here to include driver code to support Memstick card interface + of Realtek PCI-E card reader + + To compile this driver as a module, choose M here: the module will + be called rtsx_pci_ms. --- linux-3.5.0.orig/drivers/memstick/host/Makefile +++ linux-3.5.0/drivers/memstick/host/Makefile @@ -5,3 +5,4 @@ obj-$(CONFIG_MEMSTICK_TIFM_MS) += tifm_ms.o obj-$(CONFIG_MEMSTICK_JMICRON_38X) += jmb38x_ms.o obj-$(CONFIG_MEMSTICK_R592) += r592.o +obj-$(CONFIG_MEMSTICK_REALTEK_PCI) += rtsx_pci_ms.o --- linux-3.5.0.orig/drivers/memstick/host/rtsx_pci_ms.c +++ linux-3.5.0/drivers/memstick/host/rtsx_pci_ms.c @@ -0,0 +1,648 @@ +/* Realtek PCI-Express Memstick Card Interface driver + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#include +#include +#include +#include +#include +#include +#include + +struct realtek_pci_ms { + struct platform_device *pdev; + struct rtsx_pcr *pcr; + struct memstick_host *msh; + struct memstick_request *req; + + struct mutex host_mutex; + struct work_struct handle_req; + + u8 ssc_depth; + unsigned int clock; + unsigned char ifmode; + bool eject; +}; + +static inline struct device *ms_dev(struct realtek_pci_ms *host) +{ + return &(host->pdev->dev); +} + +static inline void ms_clear_error(struct realtek_pci_ms *host) +{ + rtsx_pci_write_register(host->pcr, CARD_STOP, + MS_STOP | MS_CLR_ERR, MS_STOP | MS_CLR_ERR); +} + +#ifdef DEBUG + +static void ms_print_debug_regs(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + u16 i; + u8 *ptr; + + /* Print MS host internal registers */ + rtsx_pci_init_cmd(pcr); + for (i = 0xFD40; i <= 0xFD44; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + for (i = 0xFD52; i <= 0xFD69; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, i, 0, 0); + rtsx_pci_send_cmd(pcr, 100); + + ptr = rtsx_pci_get_cmd_data(pcr); + for (i = 0xFD40; i <= 0xFD44; i++) + dev_dbg(ms_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); + for (i = 0xFD52; i <= 0xFD69; i++) + dev_dbg(ms_dev(host), "0x%04X: 0x%02x\n", i, *(ptr++)); +} + +#else + +#define ms_print_debug_regs(host) + +#endif + +static int ms_power_on(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SELECT, 0x07, MS_MOD_SEL); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_MS); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, + MS_CLK_EN, MS_CLK_EN); + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_pull_ctl_enable(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + err = rtsx_pci_card_power_on(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + /* Wait ms power stable */ + msleep(150); + + err = rtsx_pci_write_register(pcr, CARD_OE, + MS_OUTPUT_EN, MS_OUTPUT_EN); + if (err < 0) + return err; + + return 0; +} + +static int ms_power_off(struct realtek_pci_ms *host) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_CLK_EN, MS_CLK_EN, 0); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_OE, MS_OUTPUT_EN, 0); + + err = rtsx_pci_send_cmd(pcr, 100); + if (err < 0) + return err; + + err = rtsx_pci_card_power_off(pcr, RTSX_MS_CARD); + if (err < 0) + return err; + + return rtsx_pci_card_pull_ctl_disable(pcr, RTSX_MS_CARD); +} + +static int ms_transfer_data(struct realtek_pci_ms *host, unsigned char data_dir, + u8 tpc, u8 cfg, struct scatterlist *sg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err; + unsigned int length = sg->length; + u16 sec_cnt = (u16)(length / 512); + u8 val, trans_mode, dma_dir; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x, data_dir = %s, length = %d\n", + __func__, tpc, (data_dir == READ) ? "READ" : "WRITE", + length); + + if (data_dir == READ) { + dma_dir = DMA_DIR_FROM_CARD; + trans_mode = MS_TM_AUTO_READ; + } else { + dma_dir = DMA_DIR_TO_CARD; + trans_mode = MS_TM_AUTO_WRITE; + } + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_SECTOR_CNT_H, + 0xFF, (u8)(sec_cnt >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_SECTOR_CNT_L, + 0xFF, (u8)sec_cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, IRQSTAT0, + DMA_DONE_INT, DMA_DONE_INT); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC3, 0xFF, (u8)(length >> 24)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC2, 0xFF, (u8)(length >> 16)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC1, 0xFF, (u8)(length >> 8)); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMATC0, 0xFF, (u8)length); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, DMACTL, + 0x03 | DMA_PACK_SIZE_MASK, dma_dir | DMA_EN | DMA_512); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, RING_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | trans_mode); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + + rtsx_pci_send_cmd_no_wait(pcr); + + err = rtsx_pci_transfer_data(pcr, sg, 1, data_dir == READ, 10000); + if (err < 0) { + ms_clear_error(host); + return err; + } + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + if (val & (MS_INT_CMDNK | MS_INT_ERR | MS_CRC16_ERR | MS_RDY_TIMEOUT)) + return -EIO; + + return 0; +} + +static int ms_write_bytes(struct realtek_pci_ms *host, u8 tpc, + u8 cfg, u8 cnt, u8 *data, u8 *int_reg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x\n", __func__, tpc); + + if (!data) + return -EINVAL; + + rtsx_pci_init_cmd(pcr); + + for (i = 0; i < cnt; i++) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + PPBUF_BASE2 + i, 0xFF, data[i]); + if (cnt % 2) + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, + PPBUF_BASE2 + i, 0xFF, 0xFF); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_BYTE_CNT, 0xFF, cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | MS_TM_WRITE_BYTES); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + if (int_reg) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, MS_TRANS_CFG, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 5000); + if (err < 0) { + u8 val; + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + dev_dbg(ms_dev(host), "MS_TRANS_CFG: 0x%02x\n", val); + + if (int_reg) + *int_reg = val & 0x0F; + + ms_print_debug_regs(host); + + ms_clear_error(host); + + if (!(tpc & 0x08)) { + if (val & MS_CRC16_ERR) + return -EIO; + } else { + if (!(val & 0x80)) { + if (val & (MS_INT_ERR | MS_INT_CMDNK)) + return -EIO; + } + } + + return -ETIMEDOUT; + } + + if (int_reg) { + u8 *ptr = rtsx_pci_get_cmd_data(pcr) + 1; + *int_reg = *ptr & 0x0F; + } + + return 0; +} + +static int ms_read_bytes(struct realtek_pci_ms *host, u8 tpc, + u8 cfg, u8 cnt, u8 *data, u8 *int_reg) +{ + struct rtsx_pcr *pcr = host->pcr; + int err, i; + u8 *ptr; + + dev_dbg(ms_dev(host), "%s: tpc = 0x%02x\n", __func__, tpc); + + if (!data) + return -EINVAL; + + rtsx_pci_init_cmd(pcr); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TPC, 0xFF, tpc); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_BYTE_CNT, 0xFF, cnt); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANS_CFG, 0xFF, cfg); + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, CARD_DATA_SOURCE, + 0x01, PINGPONG_BUFFER); + + rtsx_pci_add_cmd(pcr, WRITE_REG_CMD, MS_TRANSFER, + 0xFF, MS_TRANSFER_START | MS_TM_READ_BYTES); + rtsx_pci_add_cmd(pcr, CHECK_REG_CMD, MS_TRANSFER, + MS_TRANSFER_END, MS_TRANSFER_END); + for (i = 0; i < cnt - 1; i++) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PPBUF_BASE2 + i, 0, 0); + if (cnt % 2) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, PPBUF_BASE2 + cnt, 0, 0); + else + rtsx_pci_add_cmd(pcr, READ_REG_CMD, + PPBUF_BASE2 + cnt - 1, 0, 0); + if (int_reg) + rtsx_pci_add_cmd(pcr, READ_REG_CMD, MS_TRANS_CFG, 0, 0); + + err = rtsx_pci_send_cmd(pcr, 5000); + if (err < 0) { + u8 val; + + rtsx_pci_read_register(pcr, MS_TRANS_CFG, &val); + dev_dbg(ms_dev(host), "MS_TRANS_CFG: 0x%02x\n", val); + + if (int_reg) + *int_reg = val & 0x0F; + + ms_print_debug_regs(host); + + ms_clear_error(host); + + if (!(tpc & 0x08)) { + if (val & MS_CRC16_ERR) + return -EIO; + } else { + if (!(val & 0x80)) { + if (val & (MS_INT_ERR | MS_INT_CMDNK)) + return -EIO; + } + } + + return -ETIMEDOUT; + } + + ptr = rtsx_pci_get_cmd_data(pcr) + 1; + for (i = 0; i < cnt; i++) + data[i] = *ptr++; + + if (int_reg) + *int_reg = *ptr & 0x0F; + + return 0; +} + +static int rtsx_pci_ms_issue_cmd(struct realtek_pci_ms *host) +{ + struct memstick_request *req = host->req; + int err = 0; + u8 cfg = 0, int_reg; + + dev_dbg(ms_dev(host), "%s\n", __func__); + + if (req->need_card_int) { + if (host->ifmode != MEMSTICK_SERIAL) + cfg = WAIT_INT; + } + + if (req->long_data) { + err = ms_transfer_data(host, req->data_dir, + req->tpc, cfg, &(req->sg)); + } else { + if (req->data_dir == READ) { + err = ms_read_bytes(host, req->tpc, cfg, + req->data_len, req->data, &int_reg); + } else { + err = ms_write_bytes(host, req->tpc, cfg, + req->data_len, req->data, &int_reg); + } + } + if (err < 0) + return err; + + if (req->need_card_int && (host->ifmode == MEMSTICK_SERIAL)) { + err = ms_read_bytes(host, MS_TPC_GET_INT, + NO_WAIT_INT, 1, &int_reg, NULL); + if (err < 0) + return err; + } + + if (req->need_card_int) { + dev_dbg(ms_dev(host), "int_reg: 0x%02x\n", int_reg); + + if (int_reg & MS_INT_CMDNK) + req->int_reg |= MEMSTICK_INT_CMDNAK; + if (int_reg & MS_INT_BREQ) + req->int_reg |= MEMSTICK_INT_BREQ; + if (int_reg & MS_INT_ERR) + req->int_reg |= MEMSTICK_INT_ERR; + if (int_reg & MS_INT_CED) + req->int_reg |= MEMSTICK_INT_CED; + } + + return 0; +} + +static void rtsx_pci_ms_handle_req(struct work_struct *work) +{ + struct realtek_pci_ms *host = container_of(work, + struct realtek_pci_ms, handle_req); + struct rtsx_pcr *pcr = host->pcr; + struct memstick_host *msh = host->msh; + int rc; + + mutex_lock(&pcr->pcr_mutex); + + rtsx_pci_start_run(pcr); + + rtsx_pci_switch_clock(host->pcr, host->clock, host->ssc_depth, + false, true, false); + rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, MS_MOD_SEL); + rtsx_pci_write_register(pcr, CARD_SHARE_MODE, + CARD_SHARE_MASK, CARD_SHARE_48_MS); + + if (!host->req) { + do { + rc = memstick_next_req(msh, &host->req); + dev_dbg(ms_dev(host), "next req %d\n", rc); + + if (!rc) + host->req->error = rtsx_pci_ms_issue_cmd(host); + } while (!rc); + } + + mutex_unlock(&pcr->pcr_mutex); +} + +static void rtsx_pci_ms_request(struct memstick_host *msh) +{ + struct realtek_pci_ms *host = memstick_priv(msh); + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + if (rtsx_pci_card_exclusive_check(host->pcr, RTSX_MS_CARD)) + return; + + schedule_work(&host->handle_req); +} + +static int rtsx_pci_ms_set_param(struct memstick_host *msh, + enum memstick_param param, int value) +{ + struct realtek_pci_ms *host = memstick_priv(msh); + struct rtsx_pcr *pcr = host->pcr; + unsigned int clock = 0; + u8 ssc_depth = 0; + int err; + + dev_dbg(ms_dev(host), "%s: param = %d, value = %d\n", + __func__, param, value); + + err = rtsx_pci_card_exclusive_check(host->pcr, RTSX_MS_CARD); + if (err) + return err; + + switch (param) { + case MEMSTICK_POWER: + if (value == MEMSTICK_POWER_ON) + err = ms_power_on(host); + else if (value == MEMSTICK_POWER_OFF) + err = ms_power_off(host); + else + return -EINVAL; + break; + + case MEMSTICK_INTERFACE: + if (value == MEMSTICK_SERIAL) { + clock = 19000000; + ssc_depth = RTSX_SSC_DEPTH_500K; + + err = rtsx_pci_write_register(pcr, MS_CFG, + 0x18, MS_BUS_WIDTH_1); + if (err < 0) + return err; + } else if (value == MEMSTICK_PAR4) { + clock = 39000000; + ssc_depth = RTSX_SSC_DEPTH_1M; + + err = rtsx_pci_write_register(pcr, MS_CFG, + 0x58, MS_BUS_WIDTH_4 | PUSH_TIME_ODD); + if (err < 0) + return err; + } else { + return -EINVAL; + } + + err = rtsx_pci_switch_clock(pcr, clock, + ssc_depth, false, true, false); + if (err < 0) + return err; + + host->ssc_depth = ssc_depth; + host->clock = clock; + host->ifmode = value; + break; + } + + return 0; +} + +#ifdef CONFIG_PM + +static int rtsx_pci_ms_suspend(struct platform_device *pdev, pm_message_t state) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct memstick_host *msh = host->msh; + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + memstick_suspend_host(msh); + return 0; +} + +static int rtsx_pci_ms_resume(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct memstick_host *msh = host->msh; + + dev_dbg(ms_dev(host), "--> %s\n", __func__); + + memstick_resume_host(msh); + return 0; +} + +#else /* CONFIG_PM */ + +#define rtsx_pci_ms_suspend NULL +#define rtsx_pci_ms_resume NULL + +#endif /* CONFIG_PM */ + +static void rtsx_pci_ms_card_event(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + + memstick_detect_change(host->msh); +} + +static int rtsx_pci_ms_drv_probe(struct platform_device *pdev) +{ + struct memstick_host *msh; + struct realtek_pci_ms *host; + struct rtsx_pcr *pcr; + struct pcr_handle *handle = pdev->dev.platform_data; + int rc; + + if (!handle) + return -ENXIO; + + pcr = handle->pcr; + if (!pcr) + return -ENXIO; + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E Memstick controller found\n"); + + msh = memstick_alloc_host(sizeof(*host), &pdev->dev); + if (!msh) + return -ENOMEM; + + host = memstick_priv(msh); + host->pcr = pcr; + host->msh = msh; + host->pdev = pdev; + platform_set_drvdata(pdev, host); + pcr->slots[RTSX_MS_CARD].p_dev = pdev; + pcr->slots[RTSX_MS_CARD].card_event = rtsx_pci_ms_card_event; + + mutex_init(&host->host_mutex); + + INIT_WORK(&host->handle_req, rtsx_pci_ms_handle_req); + msh->request = rtsx_pci_ms_request; + msh->set_param = rtsx_pci_ms_set_param; + msh->caps = MEMSTICK_CAP_PAR4; + + rc = memstick_add_host(msh); + if (rc) { + memstick_free_host(msh); + return rc; + } + + return 0; +} + +static int rtsx_pci_ms_drv_remove(struct platform_device *pdev) +{ + struct realtek_pci_ms *host = platform_get_drvdata(pdev); + struct rtsx_pcr *pcr; + struct memstick_host *msh; + int rc; + + if (!host) + return 0; + + pcr = host->pcr; + pcr->slots[RTSX_MS_CARD].p_dev = NULL; + pcr->slots[RTSX_MS_CARD].card_event = NULL; + msh = host->msh; + host->eject = true; + + mutex_lock(&host->host_mutex); + if (host->req) { + dev_dbg(&(pdev->dev), + "%s: Controller removed during transfer\n", + dev_name(&msh->dev)); + + rtsx_pci_complete_unfinished_transfer(pcr); + + host->req->error = -ENOMEDIUM; + do { + rc = memstick_next_req(msh, &host->req); + if (!rc) + host->req->error = -ENOMEDIUM; + } while (!rc); + } + mutex_unlock(&host->host_mutex); + + memstick_remove_host(msh); + memstick_free_host(msh); + + platform_set_drvdata(pdev, NULL); + + dev_dbg(&(pdev->dev), + ": Realtek PCI-E Memstick controller has been removed\n"); + + return 0; +} + +static struct platform_device_id rtsx_pci_ms_ids[] = { + { + .name = DRV_NAME_RTSX_PCI_MS, + }, { + /* sentinel */ + } +}; +MODULE_DEVICE_TABLE(platform, rtsx_pci_ms_ids); + +static struct platform_driver rtsx_pci_ms_driver = { + .probe = rtsx_pci_ms_drv_probe, + .remove = rtsx_pci_ms_drv_remove, + .id_table = rtsx_pci_ms_ids, + .suspend = rtsx_pci_ms_suspend, + .resume = rtsx_pci_ms_resume, + .driver = { + .owner = THIS_MODULE, + .name = DRV_NAME_RTSX_PCI_MS, + }, +}; +module_platform_driver(rtsx_pci_ms_driver); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Wei WANG "); +MODULE_DESCRIPTION("Realtek PCI-E Memstick Card Host Driver"); --- linux-3.5.0.orig/drivers/pinctrl/core.c +++ linux-3.5.0/drivers/pinctrl/core.c @@ -1069,8 +1069,10 @@ seq_printf(s, "group: %s\n", gname); for (i = 0; i < num_pins; i++) { pname = pin_get_name(pctldev, pins[i]); - if (WARN_ON(!pname)) + if (WARN_ON(!pname)) { + mutex_unlock(&pinctrl_mutex); return -EINVAL; + } seq_printf(s, "pin %d (%s)\n", pins[i], pname); } seq_puts(s, "\n"); --- linux-3.5.0.orig/drivers/pinctrl/pinctrl-tegra.c +++ linux-3.5.0/drivers/pinctrl/pinctrl-tegra.c @@ -466,7 +466,7 @@ *bank = g->drv_bank; *reg = g->drv_reg; *bit = g->lpmd_bit; - *width = 1; + *width = 2; break; case TEGRA_PINCONF_PARAM_DRIVE_DOWN_STRENGTH: *bank = g->drv_bank; --- linux-3.5.0.orig/drivers/pinctrl/pinconf.c +++ linux-3.5.0/drivers/pinctrl/pinconf.c @@ -537,8 +537,6 @@ seq_puts(s, "Pin config settings per pin group\n"); seq_puts(s, "Format: group (name): configs\n"); - mutex_lock(&pinctrl_mutex); - while (selector < ngroups) { const char *gname = pctlops->get_group_name(pctldev, selector); @@ -549,8 +547,6 @@ selector++; } - mutex_unlock(&pinctrl_mutex); - return 0; } --- linux-3.5.0.orig/drivers/pinctrl/pinctrl-tegra30.c +++ linux-3.5.0/drivers/pinctrl/pinctrl-tegra30.c @@ -3345,10 +3345,10 @@ FUNCTION(vi_alt3), }; -#define MUXCTL_REG_A 0x3000 -#define PINGROUP_REG_A 0x868 +#define DRV_PINGROUP_REG_A 0x868 /* bank 0 */ +#define PINGROUP_REG_A 0x3000 /* bank 1 */ -#define PINGROUP_REG_Y(r) ((r) - MUXCTL_REG_A) +#define PINGROUP_REG_Y(r) ((r) - PINGROUP_REG_A) #define PINGROUP_REG_N(r) -1 #define PINGROUP(pg_name, f0, f1, f2, f3, f_safe, r, od, ior) \ @@ -3364,25 +3364,25 @@ }, \ .func_safe = TEGRA_MUX_ ## f_safe, \ .mux_reg = PINGROUP_REG_Y(r), \ - .mux_bank = 0, \ + .mux_bank = 1, \ .mux_bit = 0, \ .pupd_reg = PINGROUP_REG_Y(r), \ - .pupd_bank = 0, \ + .pupd_bank = 1, \ .pupd_bit = 2, \ .tri_reg = PINGROUP_REG_Y(r), \ - .tri_bank = 0, \ + .tri_bank = 1, \ .tri_bit = 4, \ .einput_reg = PINGROUP_REG_Y(r), \ - .einput_bank = 0, \ + .einput_bank = 1, \ .einput_bit = 5, \ .odrain_reg = PINGROUP_REG_##od(r), \ - .odrain_bank = 0, \ + .odrain_bank = 1, \ .odrain_bit = 6, \ .lock_reg = PINGROUP_REG_Y(r), \ - .lock_bank = 0, \ + .lock_bank = 1, \ .lock_bit = 7, \ .ioreset_reg = PINGROUP_REG_##ior(r), \ - .ioreset_bank = 0, \ + .ioreset_bank = 1, \ .ioreset_bit = 8, \ .drv_reg = -1, \ } @@ -3401,8 +3401,8 @@ .odrain_reg = -1, \ .lock_reg = -1, \ .ioreset_reg = -1, \ - .drv_reg = ((r) - PINGROUP_REG_A), \ - .drv_bank = 1, \ + .drv_reg = ((r) - DRV_PINGROUP_REG_A), \ + .drv_bank = 0, \ .hsm_bit = hsm_b, \ .schmitt_bit = schmitt_b, \ .lpmd_bit = lpmd_b, \ --- linux-3.5.0.orig/drivers/platform/x86/asus-nb-wmi.c +++ linux-3.5.0/drivers/platform/x86/asus-nb-wmi.c @@ -94,6 +94,10 @@ { KE_KEY, 0x8A, { KEY_PROG1 } }, { KE_KEY, 0x95, { KEY_MEDIA } }, { KE_KEY, 0x99, { KEY_PHONE } }, + { KE_KEY, 0xA0, { KEY_SWITCHVIDEOMODE } }, /* SDSP HDMI only */ + { KE_KEY, 0xA1, { KEY_SWITCHVIDEOMODE } }, /* SDSP LCD + HDMI */ + { KE_KEY, 0xA2, { KEY_SWITCHVIDEOMODE } }, /* SDSP CRT + HDMI */ + { KE_KEY, 0xA3, { KEY_SWITCHVIDEOMODE } }, /* SDSP TV + HDMI */ { KE_KEY, 0xb5, { KEY_CALC } }, { KE_KEY, 0xc4, { KEY_KBDILLUMUP } }, { KE_KEY, 0xc5, { KEY_KBDILLUMDOWN } }, --- linux-3.5.0.orig/drivers/platform/x86/Kconfig +++ linux-3.5.0/drivers/platform/x86/Kconfig @@ -758,8 +758,11 @@ config APPLE_GMUX tristate "Apple Gmux Driver" + depends on ACPI depends on PNP - select BACKLIGHT_CLASS_DEVICE + depends on BACKLIGHT_CLASS_DEVICE + depends on BACKLIGHT_APPLE=n || BACKLIGHT_APPLE + depends on ACPI_VIDEO=n || ACPI_VIDEO ---help--- This driver provides support for the gmux device found on many Apple laptops, which controls the display mux for the hybrid --- linux-3.5.0.orig/drivers/platform/x86/sony-laptop.c +++ linux-3.5.0/drivers/platform/x86/sony-laptop.c @@ -784,28 +784,29 @@ static int sony_nc_buffer_call(acpi_handle handle, char *name, u64 *value, void *buffer, size_t buflen) { + int ret = 0; size_t len = len; union acpi_object *object = __call_snc_method(handle, name, value); if (!object) return -EINVAL; - if (object->type == ACPI_TYPE_BUFFER) + if (object->type == ACPI_TYPE_BUFFER) { len = MIN(buflen, object->buffer.length); + memcpy(buffer, object->buffer.pointer, len); - else if (object->type == ACPI_TYPE_INTEGER) + } else if (object->type == ACPI_TYPE_INTEGER) { len = MIN(buflen, sizeof(object->integer.value)); + memcpy(buffer, &object->integer.value, len); - else { + } else { pr_warn("Invalid acpi_object: expected 0x%x got 0x%x\n", ACPI_TYPE_BUFFER, object->type); - kfree(object); - return -EINVAL; + ret = -EINVAL; } - memcpy(buffer, object->buffer.pointer, len); kfree(object); - return 0; + return ret; } struct sony_nc_handles { @@ -2802,6 +2803,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; @@ -2812,6 +2817,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; @@ -4246,6 +4252,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: @@ -4316,6 +4328,16 @@ }, }; +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", @@ -4330,6 +4352,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.5.0.orig/drivers/platform/x86/asus-wmi.c +++ linux-3.5.0/drivers/platform/x86/asus-wmi.c @@ -1467,14 +1467,9 @@ */ if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS, 0, 0, NULL)) asus->dsts_id = ASUS_WMI_METHODID_DSTS; - else if (!asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS2, 0, 0, NULL)) + else asus->dsts_id = ASUS_WMI_METHODID_DSTS2; - if (!asus->dsts_id) { - pr_err("Can't find DSTS"); - return -ENODEV; - } - /* CWAP allow to define the behavior of the Fn+F2 key, * this method doesn't seems to be present on Eee PCs */ if (asus->driver->quirks->wapf >= 0) --- linux-3.5.0.orig/drivers/platform/x86/samsung-laptop.c +++ linux-3.5.0/drivers/platform/x86/samsung-laptop.c @@ -26,6 +26,7 @@ #include #include #include +#include #if (defined CONFIG_ACPI_VIDEO || defined CONFIG_ACPI_VIDEO_MODULE) #include #endif @@ -1506,6 +1507,26 @@ }, .driver_data = &samsung_broken_acpi_video, }, + { + .callback = samsung_dmi_matched, + .ident = "N250P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), + DMI_MATCH(DMI_BOARD_NAME, "N250P"), + }, + .driver_data = &samsung_broken_acpi_video, + }, + { + .callback = samsung_dmi_matched, + .ident = "N250P", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), + DMI_MATCH(DMI_PRODUCT_NAME, "N250P"), + DMI_MATCH(DMI_BOARD_NAME, "N250P"), + }, + .driver_data = &samsung_broken_acpi_video, + }, { }, }; MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); @@ -1517,6 +1538,9 @@ struct samsung_laptop *samsung; int ret; + if (efi_enabled(EFI_BOOT)) + return -ENODEV; + quirks = &samsung_unknown; if (!force && !dmi_check_system(samsung_dmi_table)) return -ENODEV; --- linux-3.5.0.orig/drivers/platform/x86/dell-wmi.c +++ linux-3.5.0/drivers/platform/x86/dell-wmi.c @@ -165,7 +165,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.5.0.orig/drivers/platform/x86/asus-laptop.c +++ linux-3.5.0/drivers/platform/x86/asus-laptop.c @@ -863,9 +863,9 @@ * The significance of others is yet to be found. * If we don't find the method, we assume the device are present. */ - rv = acpi_evaluate_integer(asus->handle, "HRWS", NULL, &temp); + rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp); if (!ACPI_FAILURE(rv)) - len += sprintf(page + len, "HRWS value : %#x\n", + len += sprintf(page + len, "HWRS value : %#x\n", (uint) temp); /* * Another value for userspace: the ASYM method returns 0x02 for @@ -1751,9 +1751,9 @@ * The significance of others is yet to be found. */ status = - acpi_evaluate_integer(asus->handle, "HRWS", NULL, &hwrs_result); + acpi_evaluate_integer(asus->handle, "HWRS", NULL, &hwrs_result); if (!ACPI_FAILURE(status)) - pr_notice(" HRWS returned %x", (int)hwrs_result); + pr_notice(" HWRS returned %x", (int)hwrs_result); if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL)) asus->have_rsts = true; --- linux-3.5.0.orig/drivers/platform/x86/acer-wmi.c +++ linux-3.5.0/drivers/platform/x86/acer-wmi.c @@ -95,6 +95,7 @@ enum acer_wmi_event_ids { WMID_HOTKEY_EVENT = 0x1, + WMID_ACCEL_EVENT = 0x5, }; static const struct key_entry acer_wmi_keymap[] = { @@ -130,6 +131,7 @@ }; static struct input_dev *acer_wmi_input_dev; +static struct input_dev *acer_wmi_accel_dev; struct event_return_value { u8 function; @@ -200,6 +202,7 @@ #define ACER_CAP_BLUETOOTH (1<<2) #define ACER_CAP_BRIGHTNESS (1<<3) #define ACER_CAP_THREEG (1<<4) +#define ACER_CAP_ACCEL (1<<5) #define ACER_CAP_ANY (0xFFFFFFFF) /* @@ -1399,6 +1402,60 @@ } /* + * Accelerometer device + */ +static acpi_handle gsensor_handle; + +static int acer_gsensor_init(void) +{ + acpi_status status; + struct acpi_buffer output; + union acpi_object out_obj; + + output.length = sizeof(out_obj); + output.pointer = &out_obj; + status = acpi_evaluate_object(gsensor_handle, "_INI", NULL, &output); + if (ACPI_FAILURE(status)) + return -1; + + return 0; +} + +static int acer_gsensor_open(struct input_dev *input) +{ + return acer_gsensor_init(); +} + +static int acer_gsensor_event(void) +{ + acpi_status status; + struct acpi_buffer output; + union acpi_object out_obj[5]; + + if (!has_cap(ACER_CAP_ACCEL)) + return -1; + + output.length = sizeof(out_obj); + output.pointer = out_obj; + + status = acpi_evaluate_object(gsensor_handle, "RDVL", NULL, &output); + if (ACPI_FAILURE(status)) + return -1; + + if (out_obj->package.count != 4) + return -1; + + input_report_abs(acer_wmi_accel_dev, ABS_X, + (s16)out_obj->package.elements[0].integer.value); + input_report_abs(acer_wmi_accel_dev, ABS_Y, + (s16)out_obj->package.elements[1].integer.value); + input_report_abs(acer_wmi_accel_dev, ABS_Z, + (s16)out_obj->package.elements[2].integer.value); + input_sync(acer_wmi_accel_dev); + return 0; +} + +/* * Rfkill devices */ static void acer_rfkill_update(struct work_struct *ignored); @@ -1673,6 +1730,9 @@ 1, true); } break; + case WMID_ACCEL_EVENT: + acer_gsensor_event(); + break; default: pr_warn("Unknown function number - %d - %d\n", return_value.function, return_value.key_num); @@ -1758,6 +1818,73 @@ return status; } +static acpi_status __init acer_wmi_get_handle_cb(acpi_handle ah, u32 level, + void *ctx, void **retval) +{ + *(acpi_handle *)retval = ah; + return AE_OK; +} + +static int __init acer_wmi_get_handle(const char *name, const char *prop, + acpi_handle *ah) +{ + acpi_status status; + acpi_handle handle; + + BUG_ON(!name || !ah); + + handle = 0; + status = acpi_get_devices(prop, acer_wmi_get_handle_cb, + (void *)name, &handle); + + if (ACPI_SUCCESS(status)) { + *ah = handle; + return 0; + } else { + return -ENODEV; + } +} + +static int __init acer_wmi_accel_setup(void) +{ + int err; + + err = acer_wmi_get_handle("SENR", "BST0001", &gsensor_handle); + if (err) + return err; + + interface->capability |= ACER_CAP_ACCEL; + + acer_wmi_accel_dev = input_allocate_device(); + if (!acer_wmi_accel_dev) + return -ENOMEM; + + acer_wmi_accel_dev->open = acer_gsensor_open; + + acer_wmi_accel_dev->name = "Acer BMA150 accelerometer"; + acer_wmi_accel_dev->phys = "wmi/input1"; + acer_wmi_accel_dev->id.bustype = BUS_HOST; + acer_wmi_accel_dev->evbit[0] = BIT_MASK(EV_ABS); + input_set_abs_params(acer_wmi_accel_dev, ABS_X, -16384, 16384, 0, 0); + input_set_abs_params(acer_wmi_accel_dev, ABS_Y, -16384, 16384, 0, 0); + input_set_abs_params(acer_wmi_accel_dev, ABS_Z, -16384, 16384, 0, 0); + + err = input_register_device(acer_wmi_accel_dev); + if (err) + goto err_free_dev; + + return 0; + +err_free_dev: + input_free_device(acer_wmi_accel_dev); + return err; +} + +static void acer_wmi_accel_destroy(void) +{ + input_unregister_device(acer_wmi_accel_dev); +} + static int __init acer_wmi_input_setup(void) { acpi_status status; @@ -1913,6 +2040,9 @@ if (has_cap(ACER_CAP_BRIGHTNESS)) set_u32(data->brightness, ACER_CAP_BRIGHTNESS); + if (has_cap(ACER_CAP_ACCEL)) + acer_gsensor_init(); + return 0; } @@ -2090,6 +2220,8 @@ return err; } + acer_wmi_accel_setup(); + err = platform_driver_register(&acer_platform_driver); if (err) { pr_err("Unable to register platform driver\n"); @@ -2133,6 +2265,8 @@ error_platform_register: if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); + if (has_cap(ACER_CAP_ACCEL)) + acer_wmi_accel_destroy(); return err; } @@ -2142,6 +2276,9 @@ if (wmi_has_guid(ACERWMID_EVENT_GUID)) acer_wmi_input_destroy(); + if (has_cap(ACER_CAP_ACCEL)) + acer_wmi_accel_destroy(); + remove_sysfs(acer_platform_device); remove_debugfs(); platform_device_unregister(acer_platform_device); --- linux-3.5.0.orig/drivers/platform/x86/apple-gmux.c +++ linux-3.5.0/drivers/platform/x86/apple-gmux.c @@ -2,6 +2,7 @@ * Gmux driver for Apple laptops * * Copyright (C) Canonical Ltd. + * Copyright (C) 2010-2012 Andreas Heider * * 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 @@ -18,16 +19,30 @@ #include #include #include +#include +#include +#include #include #include struct apple_gmux_data { unsigned long iostart; unsigned long iolen; + bool indexed; + struct mutex index_lock; struct backlight_device *bdev; + + /* switcheroo data */ + acpi_handle dhandle; + int gpe; + enum vga_switcheroo_client_id resume_client_id; + enum vga_switcheroo_state power_state; + struct completion powerchange_done; }; +static struct apple_gmux_data *apple_gmux_data; + /* * gmux port offsets. Many of these are not yet used, but may be in the * future, and it's useful to have them documented here anyhow. @@ -45,6 +60,9 @@ #define GMUX_PORT_DISCRETE_POWER 0x50 #define GMUX_PORT_MAX_BRIGHTNESS 0x70 #define GMUX_PORT_BRIGHTNESS 0x74 +#define GMUX_PORT_VALUE 0xc2 +#define GMUX_PORT_READ 0xd0 +#define GMUX_PORT_WRITE 0xd4 #define GMUX_MIN_IO_LEN (GMUX_PORT_BRIGHTNESS + 4) @@ -59,22 +77,174 @@ #define GMUX_BRIGHTNESS_MASK 0x00ffffff #define GMUX_MAX_BRIGHTNESS GMUX_BRIGHTNESS_MASK -static inline u8 gmux_read8(struct apple_gmux_data *gmux_data, int port) +static u8 gmux_pio_read8(struct apple_gmux_data *gmux_data, int port) { return inb(gmux_data->iostart + port); } -static inline void gmux_write8(struct apple_gmux_data *gmux_data, int port, +static void gmux_pio_write8(struct apple_gmux_data *gmux_data, int port, u8 val) { outb(val, gmux_data->iostart + port); } -static inline u32 gmux_read32(struct apple_gmux_data *gmux_data, int port) +static u32 gmux_pio_read32(struct apple_gmux_data *gmux_data, int port) { return inl(gmux_data->iostart + port); } +static void gmux_pio_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + int i; + u8 tmpval; + + for (i = 0; i < 4; i++) { + tmpval = (val >> (i * 8)) & 0xff; + outb(tmpval, gmux_data->iostart + port + i); + } +} + +static int gmux_index_wait_ready(struct apple_gmux_data *gmux_data) +{ + int i = 200; + u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + + while (i && (gwr & 0x01)) { + inb(gmux_data->iostart + GMUX_PORT_READ); + gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + udelay(100); + i--; + } + + return !!i; +} + +static int gmux_index_wait_complete(struct apple_gmux_data *gmux_data) +{ + int i = 200; + u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + + while (i && !(gwr & 0x01)) { + gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); + udelay(100); + i--; + } + + if (gwr & 0x01) + inb(gmux_data->iostart + GMUX_PORT_READ); + + return !!i; +} + +static u8 gmux_index_read8(struct apple_gmux_data *gmux_data, int port) +{ + u8 val; + + mutex_lock(&gmux_data->index_lock); + gmux_index_wait_ready(gmux_data); + outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); + gmux_index_wait_complete(gmux_data); + val = inb(gmux_data->iostart + GMUX_PORT_VALUE); + mutex_unlock(&gmux_data->index_lock); + + return val; +} + +static void gmux_index_write8(struct apple_gmux_data *gmux_data, int port, + u8 val) +{ + mutex_lock(&gmux_data->index_lock); + outb(val, gmux_data->iostart + GMUX_PORT_VALUE); + gmux_index_wait_ready(gmux_data); + outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); + gmux_index_wait_complete(gmux_data); + mutex_unlock(&gmux_data->index_lock); +} + +static u32 gmux_index_read32(struct apple_gmux_data *gmux_data, int port) +{ + u32 val; + + mutex_lock(&gmux_data->index_lock); + gmux_index_wait_ready(gmux_data); + outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); + gmux_index_wait_complete(gmux_data); + val = inl(gmux_data->iostart + GMUX_PORT_VALUE); + mutex_unlock(&gmux_data->index_lock); + + return val; +} + +static void gmux_index_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + int i; + u8 tmpval; + + mutex_lock(&gmux_data->index_lock); + + for (i = 0; i < 4; i++) { + tmpval = (val >> (i * 8)) & 0xff; + outb(tmpval, gmux_data->iostart + GMUX_PORT_VALUE + i); + } + + gmux_index_wait_ready(gmux_data); + outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); + gmux_index_wait_complete(gmux_data); + mutex_unlock(&gmux_data->index_lock); +} + +static u8 gmux_read8(struct apple_gmux_data *gmux_data, int port) +{ + if (gmux_data->indexed) + return gmux_index_read8(gmux_data, port); + else + return gmux_pio_read8(gmux_data, port); +} + +static void gmux_write8(struct apple_gmux_data *gmux_data, int port, u8 val) +{ + if (gmux_data->indexed) + gmux_index_write8(gmux_data, port, val); + else + gmux_pio_write8(gmux_data, port, val); +} + +static u32 gmux_read32(struct apple_gmux_data *gmux_data, int port) +{ + if (gmux_data->indexed) + return gmux_index_read32(gmux_data, port); + else + return gmux_pio_read32(gmux_data, port); +} + +static void gmux_write32(struct apple_gmux_data *gmux_data, int port, + u32 val) +{ + if (gmux_data->indexed) + gmux_index_write32(gmux_data, port, val); + else + gmux_pio_write32(gmux_data, port, val); +} + +static bool gmux_is_indexed(struct apple_gmux_data *gmux_data) +{ + u16 val; + + outb(0xaa, gmux_data->iostart + 0xcc); + outb(0x55, gmux_data->iostart + 0xcd); + outb(0x00, gmux_data->iostart + 0xce); + + val = inb(gmux_data->iostart + 0xcc) | + (inb(gmux_data->iostart + 0xcd) << 8); + + if (val == 0x55aa) + return true; + + return false; +} + static int gmux_get_brightness(struct backlight_device *bd) { struct apple_gmux_data *gmux_data = bl_get_data(bd); @@ -90,16 +260,7 @@ if (bd->props.state & BL_CORE_SUSPENDED) return 0; - /* - * Older gmux versions require writing out lower bytes first then - * setting the upper byte to 0 to flush the values. Newer versions - * accept a single u32 write, but the old method also works, so we - * just use the old method for all gmux versions. - */ - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS, brightness); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 1, brightness >> 8); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 2, brightness >> 16); - gmux_write8(gmux_data, GMUX_PORT_BRIGHTNESS + 3, 0); + gmux_write32(gmux_data, GMUX_PORT_BRIGHTNESS, brightness); return 0; } @@ -110,6 +271,146 @@ .update_status = gmux_update_status, }; +static int gmux_switchto(enum vga_switcheroo_client_id id) +{ + if (id == VGA_SWITCHEROO_IGD) { + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DDC, 1); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DISPLAY, 2); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 2); + } else { + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DDC, 2); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_DISPLAY, 3); + gmux_write8(apple_gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 3); + } + + return 0; +} + +static int gmux_set_discrete_state(struct apple_gmux_data *gmux_data, + enum vga_switcheroo_state state) +{ + INIT_COMPLETION(gmux_data->powerchange_done); + + if (state == VGA_SWITCHEROO_ON) { + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 3); + pr_debug("Discrete card powered up\n"); + } else { + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); + gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 0); + pr_debug("Discrete card powered down\n"); + } + + gmux_data->power_state = state; + + if (gmux_data->gpe >= 0 && + !wait_for_completion_interruptible_timeout(&gmux_data->powerchange_done, + msecs_to_jiffies(200))) + pr_warn("Timeout waiting for gmux switch to complete\n"); + + return 0; +} + +static int gmux_set_power_state(enum vga_switcheroo_client_id id, + enum vga_switcheroo_state state) +{ + if (id == VGA_SWITCHEROO_IGD) + return 0; + + return gmux_set_discrete_state(apple_gmux_data, state); +} + +static int gmux_get_client_id(struct pci_dev *pdev) +{ + /* + * Early Macbook Pros with switchable graphics use nvidia + * integrated graphics. Hardcode that the 9400M is integrated. + */ + if (pdev->vendor == PCI_VENDOR_ID_INTEL) + return VGA_SWITCHEROO_IGD; + else if (pdev->vendor == PCI_VENDOR_ID_NVIDIA && + pdev->device == 0x0863) + return VGA_SWITCHEROO_IGD; + else + return VGA_SWITCHEROO_DIS; +} + +static enum vga_switcheroo_client_id +gmux_active_client(struct apple_gmux_data *gmux_data) +{ + if (gmux_read8(gmux_data, GMUX_PORT_SWITCH_DISPLAY) == 2) + return VGA_SWITCHEROO_IGD; + + return VGA_SWITCHEROO_DIS; +} + +static struct vga_switcheroo_handler gmux_handler = { + .switchto = gmux_switchto, + .power_state = gmux_set_power_state, + .get_client_id = gmux_get_client_id, +}; + +static inline void gmux_disable_interrupts(struct apple_gmux_data *gmux_data) +{ + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, + GMUX_INTERRUPT_DISABLE); +} + +static inline void gmux_enable_interrupts(struct apple_gmux_data *gmux_data) +{ + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, + GMUX_INTERRUPT_ENABLE); +} + +static inline u8 gmux_interrupt_get_status(struct apple_gmux_data *gmux_data) +{ + return gmux_read8(gmux_data, GMUX_PORT_INTERRUPT_STATUS); +} + +static void gmux_clear_interrupts(struct apple_gmux_data *gmux_data) +{ + u8 status; + + /* to clear interrupts write back current status */ + status = gmux_interrupt_get_status(gmux_data); + gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_STATUS, status); +} + +static void gmux_notify_handler(acpi_handle device, u32 value, void *context) +{ + u8 status; + struct pnp_dev *pnp = (struct pnp_dev *)context; + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + + status = gmux_interrupt_get_status(gmux_data); + gmux_disable_interrupts(gmux_data); + pr_debug("Notify handler called: status %d\n", status); + + gmux_clear_interrupts(gmux_data); + gmux_enable_interrupts(gmux_data); + + if (status & GMUX_INTERRUPT_STATUS_POWER) + complete(&gmux_data->powerchange_done); +} + +static int gmux_suspend(struct pnp_dev *pnp, pm_message_t state) +{ + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + gmux_data->resume_client_id = gmux_active_client(gmux_data); + gmux_disable_interrupts(gmux_data); + return 0; +} + +static int gmux_resume(struct pnp_dev *pnp) +{ + struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + gmux_enable_interrupts(gmux_data); + gmux_switchto(gmux_data->resume_client_id); + if (gmux_data->power_state == VGA_SWITCHEROO_OFF) + gmux_set_discrete_state(gmux_data, gmux_data->power_state); + return 0; +} + static int __devinit gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id) { @@ -119,6 +420,11 @@ struct backlight_device *bdev; u8 ver_major, ver_minor, ver_release; int ret = -ENXIO; + acpi_status status; + unsigned long long gpe; + + if (apple_gmux_data) + return -EBUSY; gmux_data = kzalloc(sizeof(*gmux_data), GFP_KERNEL); if (!gmux_data) @@ -147,22 +453,29 @@ } /* - * On some machines the gmux is in ACPI even thought the machine - * doesn't really have a gmux. Check for invalid version information - * to detect this. + * Invalid version information may indicate either that the gmux + * device isn't present or that it's a new one that uses indexed + * io */ + ver_major = gmux_read8(gmux_data, GMUX_PORT_VERSION_MAJOR); ver_minor = gmux_read8(gmux_data, GMUX_PORT_VERSION_MINOR); ver_release = gmux_read8(gmux_data, GMUX_PORT_VERSION_RELEASE); if (ver_major == 0xff && ver_minor == 0xff && ver_release == 0xff) { - pr_info("gmux device not present\n"); - ret = -ENODEV; - goto err_release; + if (gmux_is_indexed(gmux_data)) { + mutex_init(&gmux_data->index_lock); + gmux_data->indexed = true; + } else { + pr_info("gmux device not present\n"); + ret = -ENODEV; + goto err_release; + } + pr_info("Found indexed gmux\n"); + } else { + pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor, + ver_release); } - pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor, - ver_release); - memset(&props, 0, sizeof(props)); props.type = BACKLIGHT_PLATFORM; props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS); @@ -193,11 +506,67 @@ * backlight control and supports more levels than other options. * Disable the other backlight choices. */ +#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE) acpi_video_unregister(); +#endif apple_bl_unregister(); + gmux_data->power_state = VGA_SWITCHEROO_ON; + + gmux_data->dhandle = DEVICE_ACPI_HANDLE(&pnp->dev); + if (!gmux_data->dhandle) { + pr_err("Cannot find acpi handle for pnp device %s\n", + dev_name(&pnp->dev)); + ret = -ENODEV; + goto err_notify; + } + + status = acpi_evaluate_integer(gmux_data->dhandle, "GMGP", NULL, &gpe); + if (ACPI_SUCCESS(status)) { + gmux_data->gpe = (int)gpe; + + status = acpi_install_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler, pnp); + if (ACPI_FAILURE(status)) { + pr_err("Install notify handler failed: %s\n", + acpi_format_exception(status)); + ret = -ENODEV; + goto err_notify; + } + + status = acpi_enable_gpe(NULL, gmux_data->gpe); + if (ACPI_FAILURE(status)) { + pr_err("Cannot enable gpe: %s\n", + acpi_format_exception(status)); + goto err_enable_gpe; + } + } else { + pr_warn("No GPE found for gmux\n"); + gmux_data->gpe = -1; + } + + if (vga_switcheroo_register_handler(&gmux_handler)) { + ret = -ENODEV; + goto err_register_handler; + } + + init_completion(&gmux_data->powerchange_done); + apple_gmux_data = gmux_data; + gmux_enable_interrupts(gmux_data); + return 0; +err_register_handler: + if (gmux_data->gpe >= 0) + acpi_disable_gpe(NULL, gmux_data->gpe); +err_enable_gpe: + if (gmux_data->gpe >= 0) + acpi_remove_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler); +err_notify: + backlight_device_unregister(bdev); err_release: release_region(gmux_data->iostart, gmux_data->iolen); err_free: @@ -209,11 +578,24 @@ { struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); + vga_switcheroo_unregister_handler(); + gmux_disable_interrupts(gmux_data); + if (gmux_data->gpe >= 0) { + acpi_disable_gpe(NULL, gmux_data->gpe); + acpi_remove_notify_handler(gmux_data->dhandle, + ACPI_DEVICE_NOTIFY, + &gmux_notify_handler); + } + backlight_device_unregister(gmux_data->bdev); + release_region(gmux_data->iostart, gmux_data->iolen); + apple_gmux_data = NULL; kfree(gmux_data); +#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE) acpi_video_register(); +#endif apple_bl_register(); } @@ -227,6 +609,8 @@ .probe = gmux_probe, .remove = __devexit_p(gmux_remove), .id_table = gmux_device_ids, + .suspend = gmux_suspend, + .resume = gmux_resume }; static int __init apple_gmux_init(void) --- linux-3.5.0.orig/drivers/platform/x86/intel_ips.c +++ linux-3.5.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_hsw_enabled = 0; +EXPORT_SYMBOL(i915_hsw_enabled); /* For initial average collection */ static const int IPS_SAMPLE_PERIOD = 200; /* ms */ @@ -1423,32 +1426,62 @@ */ static bool ips_get_i915_syms(struct ips_driver *ips) { - ips->read_mch_val = symbol_get(i915_read_mch_val); - if (!ips->read_mch_val) - goto out_err; - ips->gpu_raise = symbol_get(i915_gpu_raise); - if (!ips->gpu_raise) - goto out_put_mch; - ips->gpu_lower = symbol_get(i915_gpu_lower); - if (!ips->gpu_lower) - goto out_put_raise; - ips->gpu_busy = symbol_get(i915_gpu_busy); - if (!ips->gpu_busy) - goto out_put_lower; - ips->gpu_turbo_disable = symbol_get(i915_gpu_turbo_disable); - if (!ips->gpu_turbo_disable) - goto out_put_busy; + if (i915_hsw_enabled) { + ips->read_mch_val = symbol_get(i915_hsw_read_mch_val); + if (!ips->read_mch_val) + goto out_err; + ips->gpu_raise = symbol_get(i915_hsw_gpu_raise); + if (!ips->gpu_raise) + goto out_put_mch; + ips->gpu_lower = symbol_get(i915_hsw_gpu_lower); + if (!ips->gpu_lower) + goto out_put_raise; + ips->gpu_busy = symbol_get(i915_hsw_gpu_busy); + if (!ips->gpu_busy) + goto out_put_lower; + ips->gpu_turbo_disable = symbol_get(i915_hsw_gpu_turbo_disable); + if (!ips->gpu_turbo_disable) + goto out_put_busy; + } else { + ips->read_mch_val = symbol_get(i915_read_mch_val); + if (!ips->read_mch_val) + goto out_err; + ips->gpu_raise = symbol_get(i915_gpu_raise); + if (!ips->gpu_raise) + goto out_put_mch; + ips->gpu_lower = symbol_get(i915_gpu_lower); + if (!ips->gpu_lower) + goto out_put_raise; + ips->gpu_busy = symbol_get(i915_gpu_busy); + if (!ips->gpu_busy) + goto out_put_lower; + ips->gpu_turbo_disable = symbol_get(i915_gpu_turbo_disable); + if (!ips->gpu_turbo_disable) + goto out_put_busy; + } return true; out_put_busy: - symbol_put(i915_gpu_busy); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_busy); + else + symbol_put(i915_gpu_busy); out_put_lower: - symbol_put(i915_gpu_lower); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_lower); + else + symbol_put(i915_gpu_lower); out_put_raise: - symbol_put(i915_gpu_raise); + if (i915_hsw_enabled) + symbol_put(i915_hsw_gpu_raise); + else + symbol_put(i915_gpu_raise); out_put_mch: - symbol_put(i915_read_mch_val); + if (i915_hsw_enabled) + symbol_put(i915_hsw_read_mch_val); + else + symbol_put(i915_read_mch_val); out_err: return false; } --- linux-3.5.0.orig/drivers/platform/x86/ibm_rtl.c +++ linux-3.5.0/drivers/platform/x86/ibm_rtl.c @@ -244,7 +244,7 @@ if (force) pr_warn("module loaded by force\n"); /* first ensure that we are running on IBM HW */ - else if (efi_enabled || !dmi_check_system(ibm_rtl_dmi_table)) + else if (efi_enabled(EFI_BOOT) || !dmi_check_system(ibm_rtl_dmi_table)) return -ENODEV; /* Get the address for the Extended BIOS Data Area */ --- linux-3.5.0.orig/drivers/virtio/virtio.c +++ linux-3.5.0/drivers/virtio/virtio.c @@ -222,8 +222,10 @@ void unregister_virtio_device(struct virtio_device *dev) { + int index = dev->index; /* save for after device release */ + device_unregister(&dev->dev); - ida_simple_remove(&virtio_index_ida, dev->index); + ida_simple_remove(&virtio_index_ida, index); } EXPORT_SYMBOL_GPL(unregister_virtio_device); --- linux-3.5.0.orig/drivers/virtio/virtio_ring.c +++ linux-3.5.0/drivers/virtio/virtio_ring.c @@ -132,6 +132,13 @@ unsigned head; int i; + /* + * We require lowmem mappings for the descriptors because + * otherwise virt_to_phys will give us bogus addresses in the + * virtqueue. + */ + gfp &= ~(__GFP_HIGHMEM | __GFP_HIGH); + desc = kmalloc((out + in) * sizeof(struct vring_desc), gfp); if (!desc) return -ENOMEM; --- linux-3.5.0.orig/drivers/pnp/pnpacpi/core.c +++ linux-3.5.0/drivers/pnp/pnpacpi/core.c @@ -58,7 +58,7 @@ if (!(('0' <= (c) && (c) <= '9') || ('A' <= (c) && (c) <= 'F'))) \ return 0 #define TEST_ALPHA(c) \ - if (!('@' <= (c) || (c) <= 'Z')) \ + if (!('A' <= (c) && (c) <= 'Z')) \ return 0 static int __init ispnpidacpi(const char *id) { @@ -95,6 +95,9 @@ return -ENODEV; } + if (WARN_ON_ONCE(acpi_dev != dev->data)) + dev->data = acpi_dev; + ret = pnpacpi_build_resource_template(dev, &buffer); if (ret) return ret; --- linux-3.5.0.orig/drivers/pnp/isapnp/core.c +++ linux-3.5.0/drivers/pnp/isapnp/core.c @@ -41,6 +41,7 @@ #include #include #include +#include #include #include "../base.h" @@ -1001,7 +1002,7 @@ .disable = isapnp_disable_resources, }; -static int __init isapnp_init(void) +static int __init real_isapnp_init(void) { int cards; struct pnp_card *card; @@ -1095,6 +1096,15 @@ 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); +} device_initcall(isapnp_init); /* format is: noisapnp */ --- linux-3.5.0.orig/drivers/parport/Kconfig +++ linux-3.5.0/drivers/parport/Kconfig @@ -36,7 +36,7 @@ config PARPORT_PC tristate "PC-style hardware" depends on (!SPARC64 || PCI) && !SPARC32 && !M32R && !FRV && \ - (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN + (!M68K || ISA) && !MN10300 && !AVR32 && !BLACKFIN && !ARCH_OMAP ---help--- You should say Y here if you have a PC-style parallel port. All IBM PC compatible computers and some Alphas have PC-style --- linux-3.5.0.orig/drivers/atm/solos-pci.c +++ linux-3.5.0/drivers/atm/solos-pci.c @@ -967,10 +967,11 @@ for (port = 0; tx_pending; tx_pending >>= 1, port++) { if (tx_pending & 1) { struct sk_buff *oldskb = card->tx_skb[port]; - if (oldskb) + if (oldskb) { pci_unmap_single(card->dev, SKB_CB(oldskb)->dma_addr, oldskb->len, PCI_DMA_TODEVICE); - + card->tx_skb[port] = NULL; + } spin_lock(&card->tx_queue_lock); skb = skb_dequeue(&card->tx_queue[port]); if (!skb) --- linux-3.5.0.orig/drivers/atm/iphase.h +++ linux-3.5.0/drivers/atm/iphase.h @@ -636,82 +636,82 @@ #define SEG_BASE IPHASE5575_FRAG_CONTROL_REG_BASE #define REASS_BASE IPHASE5575_REASS_CONTROL_REG_BASE -typedef volatile u_int freg_t; +typedef volatile u_int ffreg_t; typedef u_int rreg_t; typedef struct _ffredn_t { - freg_t idlehead_high; /* Idle cell header (high) */ - freg_t idlehead_low; /* Idle cell header (low) */ - freg_t maxrate; /* Maximum rate */ - freg_t stparms; /* Traffic Management Parameters */ - freg_t abrubr_abr; /* ABRUBR Priority Byte 1, TCR Byte 0 */ - freg_t rm_type; /* */ - u_int filler5[0x17 - 0x06]; - freg_t cmd_reg; /* Command register */ - u_int filler18[0x20 - 0x18]; - freg_t cbr_base; /* CBR Pointer Base */ - freg_t vbr_base; /* VBR Pointer Base */ - freg_t abr_base; /* ABR Pointer Base */ - freg_t ubr_base; /* UBR Pointer Base */ - u_int filler24; - freg_t vbrwq_base; /* VBR Wait Queue Base */ - freg_t abrwq_base; /* ABR Wait Queue Base */ - freg_t ubrwq_base; /* UBR Wait Queue Base */ - freg_t vct_base; /* Main VC Table Base */ - freg_t vcte_base; /* Extended Main VC Table Base */ - u_int filler2a[0x2C - 0x2A]; - freg_t cbr_tab_beg; /* CBR Table Begin */ - freg_t cbr_tab_end; /* CBR Table End */ - freg_t cbr_pointer; /* CBR Pointer */ - u_int filler2f[0x30 - 0x2F]; - freg_t prq_st_adr; /* Packet Ready Queue Start Address */ - freg_t prq_ed_adr; /* Packet Ready Queue End Address */ - freg_t prq_rd_ptr; /* Packet Ready Queue read pointer */ - freg_t prq_wr_ptr; /* Packet Ready Queue write pointer */ - freg_t tcq_st_adr; /* Transmit Complete Queue Start Address*/ - freg_t tcq_ed_adr; /* Transmit Complete Queue End Address */ - freg_t tcq_rd_ptr; /* Transmit Complete Queue read pointer */ - freg_t tcq_wr_ptr; /* Transmit Complete Queue write pointer*/ - u_int filler38[0x40 - 0x38]; - freg_t queue_base; /* Base address for PRQ and TCQ */ - freg_t desc_base; /* Base address of descriptor table */ - u_int filler42[0x45 - 0x42]; - freg_t mode_reg_0; /* Mode register 0 */ - freg_t mode_reg_1; /* Mode register 1 */ - freg_t intr_status_reg;/* Interrupt Status register */ - freg_t mask_reg; /* Mask Register */ - freg_t cell_ctr_high1; /* Total cell transfer count (high) */ - freg_t cell_ctr_lo1; /* Total cell transfer count (low) */ - freg_t state_reg; /* Status register */ - u_int filler4c[0x58 - 0x4c]; - freg_t curr_desc_num; /* Contains the current descriptor num */ - freg_t next_desc; /* Next descriptor */ - freg_t next_vc; /* Next VC */ - u_int filler5b[0x5d - 0x5b]; - freg_t present_slot_cnt;/* Present slot count */ - u_int filler5e[0x6a - 0x5e]; - freg_t new_desc_num; /* New descriptor number */ - freg_t new_vc; /* New VC */ - freg_t sched_tbl_ptr; /* Schedule table pointer */ - freg_t vbrwq_wptr; /* VBR wait queue write pointer */ - freg_t vbrwq_rptr; /* VBR wait queue read pointer */ - freg_t abrwq_wptr; /* ABR wait queue write pointer */ - freg_t abrwq_rptr; /* ABR wait queue read pointer */ - freg_t ubrwq_wptr; /* UBR wait queue write pointer */ - freg_t ubrwq_rptr; /* UBR wait queue read pointer */ - freg_t cbr_vc; /* CBR VC */ - freg_t vbr_sb_vc; /* VBR SB VC */ - freg_t abr_sb_vc; /* ABR SB VC */ - freg_t ubr_sb_vc; /* UBR SB VC */ - freg_t vbr_next_link; /* VBR next link */ - freg_t abr_next_link; /* ABR next link */ - freg_t ubr_next_link; /* UBR next link */ - u_int filler7a[0x7c-0x7a]; - freg_t out_rate_head; /* Out of rate head */ - u_int filler7d[0xca-0x7d]; /* pad out to full address space */ - freg_t cell_ctr_high1_nc;/* Total cell transfer count (high) */ - freg_t cell_ctr_lo1_nc;/* Total cell transfer count (low) */ - u_int fillercc[0x100-0xcc]; /* pad out to full address space */ + ffreg_t idlehead_high; /* Idle cell header (high) */ + ffreg_t idlehead_low; /* Idle cell header (low) */ + ffreg_t maxrate; /* Maximum rate */ + ffreg_t stparms; /* Traffic Management Parameters */ + ffreg_t abrubr_abr; /* ABRUBR Priority Byte 1, TCR Byte 0 */ + ffreg_t rm_type; /* */ + u_int filler5[0x17 - 0x06]; + ffreg_t cmd_reg; /* Command register */ + u_int filler18[0x20 - 0x18]; + ffreg_t cbr_base; /* CBR Pointer Base */ + ffreg_t vbr_base; /* VBR Pointer Base */ + ffreg_t abr_base; /* ABR Pointer Base */ + ffreg_t ubr_base; /* UBR Pointer Base */ + u_int filler24; + ffreg_t vbrwq_base; /* VBR Wait Queue Base */ + ffreg_t abrwq_base; /* ABR Wait Queue Base */ + ffreg_t ubrwq_base; /* UBR Wait Queue Base */ + ffreg_t vct_base; /* Main VC Table Base */ + ffreg_t vcte_base; /* Extended Main VC Table Base */ + u_int filler2a[0x2C - 0x2A]; + ffreg_t cbr_tab_beg; /* CBR Table Begin */ + ffreg_t cbr_tab_end; /* CBR Table End */ + ffreg_t cbr_pointer; /* CBR Pointer */ + u_int filler2f[0x30 - 0x2F]; + ffreg_t prq_st_adr; /* Packet Ready Queue Start Address */ + ffreg_t prq_ed_adr; /* Packet Ready Queue End Address */ + ffreg_t prq_rd_ptr; /* Packet Ready Queue read pointer */ + ffreg_t prq_wr_ptr; /* Packet Ready Queue write pointer */ + ffreg_t tcq_st_adr; /* Transmit Complete Queue Start Address*/ + ffreg_t tcq_ed_adr; /* Transmit Complete Queue End Address */ + ffreg_t tcq_rd_ptr; /* Transmit Complete Queue read pointer */ + ffreg_t tcq_wr_ptr; /* Transmit Complete Queue write pointer*/ + u_int filler38[0x40 - 0x38]; + ffreg_t queue_base; /* Base address for PRQ and TCQ */ + ffreg_t desc_base; /* Base address of descriptor table */ + u_int filler42[0x45 - 0x42]; + ffreg_t mode_reg_0; /* Mode register 0 */ + ffreg_t mode_reg_1; /* Mode register 1 */ + ffreg_t intr_status_reg;/* Interrupt Status register */ + ffreg_t mask_reg; /* Mask Register */ + ffreg_t cell_ctr_high1; /* Total cell transfer count (high) */ + ffreg_t cell_ctr_lo1; /* Total cell transfer count (low) */ + ffreg_t state_reg; /* Status register */ + u_int filler4c[0x58 - 0x4c]; + ffreg_t curr_desc_num; /* Contains the current descriptor num */ + ffreg_t next_desc; /* Next descriptor */ + ffreg_t next_vc; /* Next VC */ + u_int filler5b[0x5d - 0x5b]; + ffreg_t present_slot_cnt;/* Present slot count */ + u_int filler5e[0x6a - 0x5e]; + ffreg_t new_desc_num; /* New descriptor number */ + ffreg_t new_vc; /* New VC */ + ffreg_t sched_tbl_ptr; /* Schedule table pointer */ + ffreg_t vbrwq_wptr; /* VBR wait queue write pointer */ + ffreg_t vbrwq_rptr; /* VBR wait queue read pointer */ + ffreg_t abrwq_wptr; /* ABR wait queue write pointer */ + ffreg_t abrwq_rptr; /* ABR wait queue read pointer */ + ffreg_t ubrwq_wptr; /* UBR wait queue write pointer */ + ffreg_t ubrwq_rptr; /* UBR wait queue read pointer */ + ffreg_t cbr_vc; /* CBR VC */ + ffreg_t vbr_sb_vc; /* VBR SB VC */ + ffreg_t abr_sb_vc; /* ABR SB VC */ + ffreg_t ubr_sb_vc; /* UBR SB VC */ + ffreg_t vbr_next_link; /* VBR next link */ + ffreg_t abr_next_link; /* ABR next link */ + ffreg_t ubr_next_link; /* UBR next link */ + u_int filler7a[0x7c-0x7a]; + ffreg_t out_rate_head; /* Out of rate head */ + u_int filler7d[0xca-0x7d]; /* pad out to full address space */ + ffreg_t cell_ctr_high1_nc;/* Total cell transfer count (high) */ + ffreg_t cell_ctr_lo1_nc;/* Total cell transfer count (low) */ + u_int fillercc[0x100-0xcc]; /* pad out to full address space */ } ffredn_t; typedef struct _rfredn_t { --- linux-3.5.0.orig/drivers/s390/cio/device_pgid.c +++ linux-3.5.0/drivers/s390/cio/device_pgid.c @@ -234,7 +234,7 @@ * Determine pathgroup state from PGID data. */ static void pgid_analyze(struct ccw_device *cdev, struct pgid **p, - int *mismatch, int *reserved, u8 *reset) + int *mismatch, u8 *reserved, u8 *reset) { struct pgid *pgid = &cdev->private->pgid[0]; struct pgid *first = NULL; @@ -248,7 +248,7 @@ if ((cdev->private->pgid_valid_mask & lpm) == 0) continue; if (pgid->inf.ps.state2 == SNID_STATE2_RESVD_ELSE) - *reserved = 1; + *reserved |= lpm; if (pgid_is_reset(pgid)) { *reset |= lpm; continue; @@ -316,14 +316,14 @@ struct subchannel *sch = to_subchannel(cdev->dev.parent); struct pgid *pgid; int mismatch = 0; - int reserved = 0; + u8 reserved = 0; u8 reset = 0; u8 donepm; if (rc) goto out; pgid_analyze(cdev, &pgid, &mismatch, &reserved, &reset); - if (reserved) + if (reserved == cdev->private->pgid_valid_mask) rc = -EUSERS; else if (mismatch) rc = -EOPNOTSUPP; @@ -336,7 +336,7 @@ } out: CIO_MSG_EVENT(2, "snid: device 0.%x.%04x: rc=%d pvm=%02x vpm=%02x " - "todo=%02x mism=%d rsvd=%d reset=%02x\n", id->ssid, + "todo=%02x mism=%d rsvd=%02x reset=%02x\n", id->ssid, id->devno, rc, cdev->private->pgid_valid_mask, sch->vpm, cdev->private->pgid_todo_mask, mismatch, reserved, reset); switch (rc) { --- linux-3.5.0.orig/drivers/s390/net/qeth_l3_main.c +++ linux-3.5.0/drivers/s390/net/qeth_l3_main.c @@ -1760,6 +1760,8 @@ QETH_CARD_TEXT(card, 4, "frvaddr4"); netdev = __vlan_find_dev_deep(card->dev, vid); + if (!netdev) + return; in_dev = in_dev_get(netdev); if (!in_dev) return; @@ -1788,6 +1790,8 @@ QETH_CARD_TEXT(card, 4, "frvaddr6"); netdev = __vlan_find_dev_deep(card->dev, vid); + if (!netdev) + return; in6_dev = in6_dev_get(netdev); if (!in6_dev) return; --- linux-3.5.0.orig/drivers/s390/kvm/kvm_virtio.c +++ linux-3.5.0/drivers/s390/kvm/kvm_virtio.c @@ -418,6 +418,26 @@ } /* + * For s390-virtio, we expect a page above main storage containing + * the virtio configuration. Try to actually load from this area + * in order to figure out if the host provides this page. + */ +static int __init test_devices_support(unsigned long addr) +{ + int ret = -EIO; + + asm volatile( + "0: lura 0,%1\n" + "1: xgr %0,%0\n" + "2:\n" + EX_TABLE(0b,2b) + EX_TABLE(1b,2b) + : "+d" (ret) + : "a" (addr) + : "0", "cc"); + return ret; +} +/* * Init function for virtio * devices are in a single page above top of "normal" mem */ @@ -428,21 +448,23 @@ if (!MACHINE_IS_KVM) return -ENODEV; + if (test_devices_support(real_memory_size) < 0) + return -ENODEV; + + rc = vmem_add_mapping(real_memory_size, PAGE_SIZE); + if (rc) + return rc; + + kvm_devices = (void *) real_memory_size; + kvm_root = root_device_register("kvm_s390"); if (IS_ERR(kvm_root)) { rc = PTR_ERR(kvm_root); printk(KERN_ERR "Could not register kvm_s390 root device"); + vmem_remove_mapping(real_memory_size, PAGE_SIZE); return rc; } - rc = vmem_add_mapping(real_memory_size, PAGE_SIZE); - if (rc) { - root_device_unregister(kvm_root); - return rc; - } - - kvm_devices = (void *) real_memory_size; - INIT_WORK(&hotplug_work, hotplug_devices); service_subclass_irq_register(); --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_ext.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_ext.h @@ -54,6 +54,7 @@ extern void zfcp_dbf_hba_bit_err(char *, struct zfcp_fsf_req *); extern void zfcp_dbf_hba_berr(struct zfcp_dbf *, struct zfcp_fsf_req *); extern void zfcp_dbf_hba_def_err(struct zfcp_adapter *, u64, u16, void **); +extern void zfcp_dbf_hba_basic(char *, struct zfcp_adapter *); extern void zfcp_dbf_san_req(char *, struct zfcp_fsf_req *, u32); extern void zfcp_dbf_san_res(char *, struct zfcp_fsf_req *); extern void zfcp_dbf_san_in_els(char *, struct zfcp_fsf_req *); @@ -158,6 +159,7 @@ extern struct attribute_group zfcp_sysfs_unit_attrs; extern struct attribute_group zfcp_sysfs_adapter_attrs; extern struct attribute_group zfcp_sysfs_port_attrs; +extern struct mutex zfcp_sysfs_port_units_mutex; extern struct device_attribute *zfcp_sysfs_sdev_attrs[]; extern struct device_attribute *zfcp_sysfs_shost_attrs[]; --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_unit.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_unit.c @@ -104,7 +104,7 @@ { struct zfcp_unit *unit = container_of(dev, struct zfcp_unit, dev); - put_device(&unit->port->dev); + atomic_dec(&unit->port->units); kfree(unit); } @@ -119,16 +119,27 @@ int zfcp_unit_add(struct zfcp_port *port, u64 fcp_lun) { struct zfcp_unit *unit; + int retval = 0; + + mutex_lock(&zfcp_sysfs_port_units_mutex); + if (atomic_read(&port->units) == -1) { + /* port is already gone */ + retval = -ENODEV; + goto out; + } unit = zfcp_unit_find(port, fcp_lun); if (unit) { put_device(&unit->dev); - return -EEXIST; + retval = -EEXIST; + goto out; } unit = kzalloc(sizeof(struct zfcp_unit), GFP_KERNEL); - if (!unit) - return -ENOMEM; + if (!unit) { + retval = -ENOMEM; + goto out; + } unit->port = port; unit->fcp_lun = fcp_lun; @@ -139,28 +150,33 @@ if (dev_set_name(&unit->dev, "0x%016llx", (unsigned long long) fcp_lun)) { kfree(unit); - return -ENOMEM; + retval = -ENOMEM; + goto out; } - get_device(&port->dev); - if (device_register(&unit->dev)) { put_device(&unit->dev); - return -ENOMEM; + retval = -ENOMEM; + goto out; } if (sysfs_create_group(&unit->dev.kobj, &zfcp_sysfs_unit_attrs)) { device_unregister(&unit->dev); - return -EINVAL; + retval = -EINVAL; + goto out; } + atomic_inc(&port->units); /* under zfcp_sysfs_port_units_mutex ! */ + write_lock_irq(&port->unit_list_lock); list_add_tail(&unit->list, &port->unit_list); write_unlock_irq(&port->unit_list_lock); zfcp_unit_scsi_scan(unit); - return 0; +out: + mutex_unlock(&zfcp_sysfs_port_units_mutex); + return retval; } /** --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_fsf.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_fsf.c @@ -219,7 +219,7 @@ return; } - zfcp_dbf_hba_fsf_uss("fssrh_2", req); + zfcp_dbf_hba_fsf_uss("fssrh_4", req); switch (sr_buf->status_type) { case FSF_STATUS_READ_PORT_CLOSED: @@ -437,6 +437,34 @@ } } +#define ZFCP_FSF_PORTSPEED_1GBIT (1 << 0) +#define ZFCP_FSF_PORTSPEED_2GBIT (1 << 1) +#define ZFCP_FSF_PORTSPEED_4GBIT (1 << 2) +#define ZFCP_FSF_PORTSPEED_10GBIT (1 << 3) +#define ZFCP_FSF_PORTSPEED_8GBIT (1 << 4) +#define ZFCP_FSF_PORTSPEED_16GBIT (1 << 5) +#define ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED (1 << 15) + +static u32 zfcp_fsf_convert_portspeed(u32 fsf_speed) +{ + u32 fdmi_speed = 0; + if (fsf_speed & ZFCP_FSF_PORTSPEED_1GBIT) + fdmi_speed |= FC_PORTSPEED_1GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_2GBIT) + fdmi_speed |= FC_PORTSPEED_2GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_4GBIT) + fdmi_speed |= FC_PORTSPEED_4GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_10GBIT) + fdmi_speed |= FC_PORTSPEED_10GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_8GBIT) + fdmi_speed |= FC_PORTSPEED_8GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_16GBIT) + fdmi_speed |= FC_PORTSPEED_16GBIT; + if (fsf_speed & ZFCP_FSF_PORTSPEED_NOT_NEGOTIATED) + fdmi_speed |= FC_PORTSPEED_NOT_NEGOTIATED; + return fdmi_speed; +} + static int zfcp_fsf_exchange_config_evaluate(struct zfcp_fsf_req *req) { struct fsf_qtcb_bottom_config *bottom = &req->qtcb->bottom.config; @@ -456,7 +484,8 @@ fc_host_port_name(shost) = nsp->fl_wwpn; fc_host_node_name(shost) = nsp->fl_wwnn; fc_host_port_id(shost) = ntoh24(bottom->s_id); - fc_host_speed(shost) = bottom->fc_link_speed; + fc_host_speed(shost) = + zfcp_fsf_convert_portspeed(bottom->fc_link_speed); fc_host_supported_classes(shost) = FC_COS_CLASS2 | FC_COS_CLASS3; adapter->hydra_version = bottom->adapter_type; @@ -580,7 +609,8 @@ } else fc_host_permanent_port_name(shost) = fc_host_port_name(shost); fc_host_maxframe_size(shost) = bottom->maximum_frame_size; - fc_host_supported_speeds(shost) = bottom->supported_speed; + fc_host_supported_speeds(shost) = + zfcp_fsf_convert_portspeed(bottom->supported_speed); memcpy(fc_host_supported_fc4s(shost), bottom->supported_fc4_types, FC_FC4_LIST_SIZE); memcpy(fc_host_active_fc4s(shost), bottom->active_fc4_types, @@ -771,12 +801,14 @@ static void zfcp_fsf_abort_fcp_command_handler(struct zfcp_fsf_req *req) { struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; union fsf_status_qual *fsq = &req->qtcb->header.fsf_status_qual; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (req->qtcb->header.fsf_status) { case FSF_PORT_HANDLE_NOT_VALID: if (fsq->word[0] == fsq->word[1]) { @@ -885,7 +917,7 @@ switch (header->fsf_status) { case FSF_GOOD: - zfcp_dbf_san_res("fsscth1", req); + zfcp_dbf_san_res("fsscth2", req); ct->status = 0; break; case FSF_SERVICE_CLASS_NOT_SUPPORTED: @@ -1739,13 +1771,15 @@ { struct zfcp_adapter *adapter = req->adapter; struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; struct fsf_qtcb_header *header = &req->qtcb->header; struct fsf_qtcb_bottom_support *bottom = &req->qtcb->bottom.support; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + atomic_clear_mask(ZFCP_STATUS_COMMON_ACCESS_DENIED | ZFCP_STATUS_COMMON_ACCESS_BOXED | ZFCP_STATUS_LUN_SHARED | @@ -1856,11 +1890,13 @@ static void zfcp_fsf_close_lun_handler(struct zfcp_fsf_req *req) { struct scsi_device *sdev = req->data; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; if (req->status & ZFCP_STATUS_FSFREQ_ERROR) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (req->qtcb->header.fsf_status) { case FSF_PORT_HANDLE_NOT_VALID: zfcp_erp_adapter_reopen(zfcp_sdev->port->adapter, 0, "fscuh_1"); @@ -1950,7 +1986,7 @@ { struct fsf_qual_latency_info *lat_in; struct latency_cont *lat = NULL; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(scsi->device); + struct zfcp_scsi_dev *zfcp_sdev; struct zfcp_blk_drv_data blktrc; int ticks = req->adapter->timer_ticks; @@ -1965,6 +2001,7 @@ if (req->adapter->adapter_features & FSF_FEATURE_MEASUREMENT_DATA && !(req->status & ZFCP_STATUS_FSFREQ_ERROR)) { + zfcp_sdev = sdev_to_zfcp(scsi->device); blktrc.flags |= ZFCP_BLK_LAT_VALID; blktrc.channel_lat = lat_in->channel_lat * ticks; blktrc.fabric_lat = lat_in->fabric_lat * ticks; @@ -2002,12 +2039,14 @@ { struct scsi_cmnd *scmnd = req->data; struct scsi_device *sdev = scmnd->device; - struct zfcp_scsi_dev *zfcp_sdev = sdev_to_zfcp(sdev); + struct zfcp_scsi_dev *zfcp_sdev; struct fsf_qtcb_header *header = &req->qtcb->header; if (unlikely(req->status & ZFCP_STATUS_FSFREQ_ERROR)) return; + zfcp_sdev = sdev_to_zfcp(sdev); + switch (header->fsf_status) { case FSF_HANDLE_MISMATCH: case FSF_PORT_HANDLE_NOT_VALID: --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_ccw.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_ccw.c @@ -39,17 +39,23 @@ spin_unlock_irqrestore(&zfcp_ccw_adapter_ref_lock, flags); } -static int zfcp_ccw_activate(struct ccw_device *cdev) - +/** + * zfcp_ccw_activate - activate adapter and wait for it to finish + * @cdev: pointer to belonging ccw device + * @clear: Status flags to clear. + * @tag: s390dbf trace record tag + */ +static int zfcp_ccw_activate(struct ccw_device *cdev, int clear, char *tag) { struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev); if (!adapter) return 0; + zfcp_erp_clear_adapter_status(adapter, clear); zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING); zfcp_erp_adapter_reopen(adapter, ZFCP_STATUS_COMMON_ERP_FAILED, - "ccresu2"); + tag); zfcp_erp_wait(adapter); flush_work(&adapter->scan_work); @@ -164,26 +170,29 @@ BUG_ON(!zfcp_reqlist_isempty(adapter->req_list)); adapter->req_no = 0; - zfcp_ccw_activate(cdev); + zfcp_ccw_activate(cdev, 0, "ccsonl1"); zfcp_ccw_adapter_put(adapter); return 0; } /** - * zfcp_ccw_set_offline - set_offline function of zfcp driver + * zfcp_ccw_offline_sync - shut down adapter and wait for it to finish * @cdev: pointer to belonging ccw device + * @set: Status flags to set. + * @tag: s390dbf trace record tag * * This function gets called by the common i/o layer and sets an adapter * into state offline. */ -static int zfcp_ccw_set_offline(struct ccw_device *cdev) +static int zfcp_ccw_offline_sync(struct ccw_device *cdev, int set, char *tag) { struct zfcp_adapter *adapter = zfcp_ccw_adapter_by_cdev(cdev); if (!adapter) return 0; - zfcp_erp_adapter_shutdown(adapter, 0, "ccsoff1"); + zfcp_erp_set_adapter_status(adapter, set); + zfcp_erp_adapter_shutdown(adapter, 0, tag); zfcp_erp_wait(adapter); zfcp_ccw_adapter_put(adapter); @@ -191,6 +200,18 @@ } /** + * zfcp_ccw_set_offline - set_offline function of zfcp driver + * @cdev: pointer to belonging ccw device + * + * This function gets called by the common i/o layer and sets an adapter + * into state offline. + */ +static int zfcp_ccw_set_offline(struct ccw_device *cdev) +{ + return zfcp_ccw_offline_sync(cdev, 0, "ccsoff1"); +} + +/** * zfcp_ccw_notify - ccw notify function * @cdev: pointer to belonging ccw device * @event: indicates if adapter was detached or attached @@ -207,6 +228,11 @@ switch (event) { case CIO_GONE: + if (atomic_read(&adapter->status) & + ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */ + zfcp_dbf_hba_basic("ccnigo1", adapter); + break; + } dev_warn(&cdev->dev, "The FCP device has been detached\n"); zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti1"); break; @@ -216,6 +242,11 @@ zfcp_erp_adapter_shutdown(adapter, 0, "ccnoti2"); break; case CIO_OPER: + if (atomic_read(&adapter->status) & + ZFCP_STATUS_ADAPTER_SUSPENDED) { /* notification ignore */ + zfcp_dbf_hba_basic("ccniop1", adapter); + break; + } dev_info(&cdev->dev, "The FCP device is operational again\n"); zfcp_erp_set_adapter_status(adapter, ZFCP_STATUS_COMMON_RUNNING); @@ -251,6 +282,28 @@ zfcp_ccw_adapter_put(adapter); } +static int zfcp_ccw_suspend(struct ccw_device *cdev) +{ + zfcp_ccw_offline_sync(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccsusp1"); + return 0; +} + +static int zfcp_ccw_thaw(struct ccw_device *cdev) +{ + /* trace records for thaw and final shutdown during suspend + can only be found in system dump until the end of suspend + but not after resume because it's based on the memory image + right after the very first suspend (freeze) callback */ + zfcp_ccw_activate(cdev, 0, "ccthaw1"); + return 0; +} + +static int zfcp_ccw_resume(struct ccw_device *cdev) +{ + zfcp_ccw_activate(cdev, ZFCP_STATUS_ADAPTER_SUSPENDED, "ccresu1"); + return 0; +} + struct ccw_driver zfcp_ccw_driver = { .driver = { .owner = THIS_MODULE, @@ -263,7 +316,7 @@ .set_offline = zfcp_ccw_set_offline, .notify = zfcp_ccw_notify, .shutdown = zfcp_ccw_shutdown, - .freeze = zfcp_ccw_set_offline, - .thaw = zfcp_ccw_activate, - .restore = zfcp_ccw_activate, + .freeze = zfcp_ccw_suspend, + .thaw = zfcp_ccw_thaw, + .restore = zfcp_ccw_resume, }; --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_aux.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_aux.c @@ -519,6 +519,7 @@ rwlock_init(&port->unit_list_lock); INIT_LIST_HEAD(&port->unit_list); + atomic_set(&port->units, 0); INIT_WORK(&port->gid_pn_work, zfcp_fc_port_did_lookup); INIT_WORK(&port->test_link_work, zfcp_fc_link_test_work); --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_dbf.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_dbf.c @@ -191,7 +191,7 @@ length = min((u16)sizeof(struct qdio_buffer), (u16)ZFCP_DBF_PAY_MAX_REC); - while ((char *)pl[payload->counter] && payload->counter < scount) { + while (payload->counter < scount && (char *)pl[payload->counter]) { memcpy(payload->data, (char *)pl[payload->counter], length); debug_event(dbf->pay, 1, payload, zfcp_dbf_plen(length)); payload->counter++; @@ -200,6 +200,26 @@ spin_unlock_irqrestore(&dbf->pay_lock, flags); } +/** + * zfcp_dbf_hba_basic - trace event for basic adapter events + * @adapter: pointer to struct zfcp_adapter + */ +void zfcp_dbf_hba_basic(char *tag, struct zfcp_adapter *adapter) +{ + struct zfcp_dbf *dbf = adapter->dbf; + struct zfcp_dbf_hba *rec = &dbf->hba_buf; + unsigned long flags; + + spin_lock_irqsave(&dbf->hba_lock, flags); + memset(rec, 0, sizeof(*rec)); + + memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); + rec->id = ZFCP_DBF_HBA_BASIC; + + debug_event(dbf->hba, 1, rec, sizeof(*rec)); + spin_unlock_irqrestore(&dbf->hba_lock, flags); +} + static void zfcp_dbf_set_common(struct zfcp_dbf_rec *rec, struct zfcp_adapter *adapter, struct zfcp_port *port, --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_qdio.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_qdio.c @@ -102,18 +102,22 @@ { struct zfcp_qdio *qdio = (struct zfcp_qdio *) parm; struct zfcp_adapter *adapter = qdio->adapter; - struct qdio_buffer_element *sbale; int sbal_no, sbal_idx; - void *pl[ZFCP_QDIO_MAX_SBALS_PER_REQ + 1]; - u64 req_id; - u8 scount; if (unlikely(qdio_err)) { - memset(pl, 0, ZFCP_QDIO_MAX_SBALS_PER_REQ * sizeof(void *)); if (zfcp_adapter_multi_buffer_active(adapter)) { + void *pl[ZFCP_QDIO_MAX_SBALS_PER_REQ + 1]; + struct qdio_buffer_element *sbale; + u64 req_id; + u8 scount; + + memset(pl, 0, + ZFCP_QDIO_MAX_SBALS_PER_REQ * sizeof(void *)); sbale = qdio->res_q[idx]->element; req_id = (u64) sbale->addr; - scount = sbale->scount + 1; /* incl. signaling SBAL */ + scount = min(sbale->scount + 1, + ZFCP_QDIO_MAX_SBALS_PER_REQ + 1); + /* incl. signaling SBAL */ for (sbal_no = 0; sbal_no < scount; sbal_no++) { sbal_idx = (idx + sbal_no) % --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_cfdc.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_cfdc.c @@ -293,7 +293,7 @@ } read_unlock_irqrestore(&adapter->port_list_lock, flags); - shost_for_each_device(sdev, port->adapter->scsi_host) { + shost_for_each_device(sdev, adapter->scsi_host) { zfcp_sdev = sdev_to_zfcp(sdev); status = atomic_read(&zfcp_sdev->status); if ((status & ZFCP_STATUS_COMMON_ACCESS_DENIED) || --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_dbf.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_dbf.h @@ -154,6 +154,7 @@ ZFCP_DBF_HBA_RES = 1, ZFCP_DBF_HBA_USS = 2, ZFCP_DBF_HBA_BIT = 3, + ZFCP_DBF_HBA_BASIC = 4, }; /** --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_sysfs.c +++ linux-3.5.0/drivers/s390/scsi/zfcp_sysfs.c @@ -227,6 +227,8 @@ static ZFCP_DEV_ATTR(adapter, port_rescan, S_IWUSR, NULL, zfcp_sysfs_port_rescan_store); +DEFINE_MUTEX(zfcp_sysfs_port_units_mutex); + static ssize_t zfcp_sysfs_port_remove_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -249,6 +251,16 @@ else retval = 0; + mutex_lock(&zfcp_sysfs_port_units_mutex); + if (atomic_read(&port->units) > 0) { + retval = -EBUSY; + mutex_unlock(&zfcp_sysfs_port_units_mutex); + goto out; + } + /* port is about to be removed, so no more unit_add */ + atomic_set(&port->units, -1); + mutex_unlock(&zfcp_sysfs_port_units_mutex); + write_lock_irq(&adapter->port_list_lock); list_del(&port->list); write_unlock_irq(&adapter->port_list_lock); @@ -289,12 +301,14 @@ { struct zfcp_port *port = container_of(dev, struct zfcp_port, dev); u64 fcp_lun; + int retval; if (strict_strtoull(buf, 0, (unsigned long long *) &fcp_lun)) return -EINVAL; - if (zfcp_unit_add(port, fcp_lun)) - return -EINVAL; + retval = zfcp_unit_add(port, fcp_lun); + if (retval) + return retval; return count; } --- linux-3.5.0.orig/drivers/s390/scsi/zfcp_def.h +++ linux-3.5.0/drivers/s390/scsi/zfcp_def.h @@ -77,6 +77,7 @@ #define ZFCP_STATUS_ADAPTER_SIOSL_ISSUED 0x00000004 #define ZFCP_STATUS_ADAPTER_XCONFIG_OK 0x00000008 #define ZFCP_STATUS_ADAPTER_HOST_CON_INIT 0x00000010 +#define ZFCP_STATUS_ADAPTER_SUSPENDED 0x00000040 #define ZFCP_STATUS_ADAPTER_ERP_PENDING 0x00000100 #define ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED 0x00000200 #define ZFCP_STATUS_ADAPTER_DATA_DIV_ENABLED 0x00000400 @@ -204,6 +205,7 @@ struct zfcp_adapter *adapter; /* adapter used to access port */ struct list_head unit_list; /* head of logical unit list */ rwlock_t unit_list_lock; /* unit list lock */ + atomic_t units; /* zfcp_unit count */ atomic_t status; /* status of this remote port */ u64 wwnn; /* WWNN if known */ u64 wwpn; /* WWPN */ --- linux-3.5.0.orig/drivers/rtc/rtc-wm831x.c +++ linux-3.5.0/drivers/rtc/rtc-wm831x.c @@ -24,7 +24,7 @@ #include #include #include - +#include /* * R16416 (0x4020) - RTC Write Counter @@ -96,6 +96,26 @@ unsigned int alarm_enabled:1; }; +static void wm831x_rtc_add_randomness(struct wm831x *wm831x) +{ + int ret; + u16 reg; + + /* + * The write counter contains a pseudo-random number which is + * regenerated every time we set the RTC so it should be a + * useful per-system source of entropy. + */ + ret = wm831x_reg_read(wm831x, WM831X_RTC_WRITE_COUNTER); + if (ret >= 0) { + reg = ret; + add_device_randomness(®, sizeof(reg)); + } else { + dev_warn(wm831x->dev, "Failed to read RTC write counter: %d\n", + ret); + } +} + /* * Read current time and date in RTC */ @@ -431,6 +451,8 @@ alm_irq, ret); } + wm831x_rtc_add_randomness(wm831x); + return 0; err: --- linux-3.5.0.orig/drivers/rtc/rtc-vt8500.c +++ linux-3.5.0/drivers/rtc/rtc-vt8500.c @@ -69,7 +69,7 @@ | ALARM_SEC_BIT) #define VT8500_RTC_CR_ENABLE (1 << 0) /* Enable RTC */ -#define VT8500_RTC_CR_24H (1 << 1) /* 24h time format */ +#define VT8500_RTC_CR_12H (1 << 1) /* 12h time format */ #define VT8500_RTC_CR_SM_ENABLE (1 << 2) /* Enable periodic irqs */ #define VT8500_RTC_CR_SM_SEC (1 << 3) /* 0: 1Hz/60, 1: 1Hz */ #define VT8500_RTC_CR_CALIB (1 << 4) /* Enable calibration */ @@ -118,7 +118,7 @@ tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S); tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S); tm->tm_mday = bcd2bin(date & DATE_DAY_MASK); - tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S); + tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S) - 1; tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S) + ((date >> DATE_CENTURY_S) & 1 ? 200 : 100); tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S; @@ -137,8 +137,9 @@ } writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) - | (bin2bcd(tm->tm_mon) << DATE_MONTH_S) - | (bin2bcd(tm->tm_mday)), + | (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) + | (bin2bcd(tm->tm_mday)) + | ((tm->tm_year >= 200) << DATE_CENTURY_S), vt8500_rtc->regbase + VT8500_RTC_DS); writel((bin2bcd(tm->tm_wday) << TIME_DOW_S) | (bin2bcd(tm->tm_hour) << TIME_HOUR_S) @@ -248,7 +249,7 @@ } /* Enable RTC and set it to 24-hour mode */ - writel(VT8500_RTC_CR_ENABLE | VT8500_RTC_CR_24H, + writel(VT8500_RTC_CR_ENABLE, vt8500_rtc->regbase + VT8500_RTC_CR); vt8500_rtc->rtc = rtc_device_register("vt8500-rtc", &pdev->dev, --- linux-3.5.0.orig/drivers/rtc/rtc-isl1208.c +++ linux-3.5.0/drivers/rtc/rtc-isl1208.c @@ -494,6 +494,7 @@ { unsigned long timeout = jiffies + msecs_to_jiffies(1000); struct i2c_client *client = data; + struct rtc_device *rtc = i2c_get_clientdata(client); int handled = 0, sr, err; /* @@ -516,6 +517,8 @@ if (sr & ISL1208_REG_SR_ALM) { dev_dbg(&client->dev, "alarm!\n"); + rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF); + /* Clear the alarm */ sr &= ~ISL1208_REG_SR_ALM; sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr); --- linux-3.5.0.orig/drivers/rtc/rtc-rs5c348.c +++ linux-3.5.0/drivers/rtc/rtc-rs5c348.c @@ -122,9 +122,12 @@ tm->tm_min = bcd2bin(rxbuf[RS5C348_REG_MINS] & RS5C348_MINS_MASK); tm->tm_hour = bcd2bin(rxbuf[RS5C348_REG_HOURS] & RS5C348_HOURS_MASK); if (!pdata->rtc_24h) { - tm->tm_hour %= 12; - if (rxbuf[RS5C348_REG_HOURS] & RS5C348_BIT_PM) + if (rxbuf[RS5C348_REG_HOURS] & RS5C348_BIT_PM) { + tm->tm_hour -= 20; + tm->tm_hour %= 12; tm->tm_hour += 12; + } else + tm->tm_hour %= 12; } tm->tm_wday = bcd2bin(rxbuf[RS5C348_REG_WDAY] & RS5C348_WDAY_MASK); tm->tm_mday = bcd2bin(rxbuf[RS5C348_REG_DAY] & RS5C348_DAY_MASK); --- linux-3.5.0.orig/drivers/rtc/rtc-imxdi.c +++ linux-3.5.0/drivers/rtc/rtc-imxdi.c @@ -392,6 +392,8 @@ if (imxdi->ioaddr == NULL) return -ENOMEM; + spin_lock_init(&imxdi->irq_lock); + imxdi->irq = platform_get_irq(pdev, 0); if (imxdi->irq < 0) return imxdi->irq; --- linux-3.5.0.orig/drivers/rtc/rtc-pl031.c +++ linux-3.5.0/drivers/rtc/rtc-pl031.c @@ -44,6 +44,7 @@ #define RTC_YMR 0x34 /* Year match register */ #define RTC_YLR 0x38 /* Year data load register */ +#define RTC_CR_EN (1 << 0) /* counter enable bit */ #define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */ #define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */ @@ -304,7 +305,7 @@ int ret; struct pl031_local *ldata; struct rtc_class_ops *ops = id->data; - unsigned long time; + unsigned long time, data; ret = amba_request_regions(adev, NULL); if (ret) @@ -331,10 +332,13 @@ dev_dbg(&adev->dev, "designer ID = 0x%02x\n", ldata->hw_designer); dev_dbg(&adev->dev, "revision = 0x%01x\n", ldata->hw_revision); + data = readl(ldata->base + RTC_CR); /* Enable the clockwatch on ST Variants */ if (ldata->hw_designer == AMBA_VENDOR_ST) - writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, - ldata->base + RTC_CR); + data |= RTC_CR_CWEN; + else + data |= RTC_CR_EN; + writel(data, ldata->base + RTC_CR); /* * On ST PL031 variants, the RTC reset value does not provide correct --- linux-3.5.0.orig/drivers/rtc/rtc-twl.c +++ linux-3.5.0/drivers/rtc/rtc-twl.c @@ -495,6 +495,11 @@ if (ret < 0) goto out1; + /* ensure interrupts are disabled, bootloaders can be strange */ + ret = twl_rtc_write_u8(0, REG_RTC_INTERRUPTS_REG); + if (ret < 0) + dev_warn(&pdev->dev, "unable to disable interrupt\n"); + /* init cached IRQ enable bits */ ret = twl_rtc_read_u8(&rtc_irq_bits, REG_RTC_INTERRUPTS_REG); if (ret < 0) --- linux-3.5.0.orig/drivers/misc/hpilo.c +++ linux-3.5.0/drivers/misc/hpilo.c @@ -735,7 +735,14 @@ free_irq(pdev->irq, ilo_hw); ilo_unmap_device(pdev, ilo_hw); pci_release_regions(pdev); - pci_disable_device(pdev); + /* + * pci_disable_device(pdev) used to be here. But this PCI device has + * two functions with interrupt lines connected to a single pin. The + * other one is a USB host controller. So when we disable the PIN here + * e.g. by rmmod hpilo, the controller stops working. It is because + * the interrupt link is disabled in ACPI since it is not refcounted + * yet. See acpi_pci_link_free_irq called from acpi_pci_irq_disable. + */ kfree(ilo_hw); ilo_hwdev[(minor / MAX_CCB)] = 0; } @@ -820,7 +827,7 @@ free_regions: pci_release_regions(pdev); disable: - pci_disable_device(pdev); +/* pci_disable_device(pdev); see comment in ilo_remove */ free: kfree(ilo_hw); out: --- linux-3.5.0.orig/drivers/misc/mei/wd.c +++ linux-3.5.0/drivers/misc/mei/wd.c @@ -53,11 +53,12 @@ } /** - * host_init_wd - mei initialization wd. + * mei_wd_host_init - connect to the watchdog client * * @dev: the device structure * returns -ENENT if wd client cannot be found * -EIO if write has failed + * 0 on success */ int mei_wd_host_init(struct mei_device *dev) { @@ -137,7 +138,6 @@ return 0; dev->wd_timeout = 0; - dev->wd_due_counter = 0; memcpy(dev->wd_data, mei_stop_wd_params, MEI_WD_PARAMS_SIZE); dev->stop = true; @@ -357,8 +357,6 @@ { dev_dbg(&dev->pdev->dev, "dev->wd_timeout =%d.\n", dev->wd_timeout); - dev->wd_due_counter = !!dev->wd_timeout; - if (watchdog_register_device(&amt_wd_dev)) { dev_err(&dev->pdev->dev, "wd: unable to register watchdog device.\n"); --- linux-3.5.0.orig/drivers/misc/mei/iorw.c +++ linux-3.5.0/drivers/misc/mei/iorw.c @@ -481,12 +481,8 @@ if (ret && dev->mei_host_buffer_is_empty) { ret = 0; dev->mei_host_buffer_is_empty = false; - if (cb->request_buffer.size > - (((dev->host_hw_state & H_CBD) >> 24) * sizeof(u32)) - -sizeof(struct mei_msg_hdr)) { - mei_hdr.length = - (((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - sizeof(struct mei_msg_hdr); + if (cb->request_buffer.size > mei_hbuf_max_data(dev)) { + mei_hdr.length = mei_hbuf_max_data(dev); mei_hdr.msg_complete = 0; } else { mei_hdr.length = cb->request_buffer.size; --- linux-3.5.0.orig/drivers/misc/mei/interface.c +++ linux-3.5.0/drivers/misc/mei/interface.c @@ -58,16 +58,18 @@ } /** - * _host_get_filled_slots - gets number of device filled buffer slots + * mei_hbuf_filled_slots - gets number of device filled buffer slots * * @device: the device structure * * returns number of filled slots */ -static unsigned char _host_get_filled_slots(const struct mei_device *dev) +static unsigned char mei_hbuf_filled_slots(struct mei_device *dev) { char read_ptr, write_ptr; + dev->host_hw_state = mei_hcsr_read(dev); + read_ptr = (char) ((dev->host_hw_state & H_CBRP) >> 8); write_ptr = (char) ((dev->host_hw_state & H_CBWP) >> 16); @@ -75,43 +77,33 @@ } /** - * mei_host_buffer_is_empty - checks if host buffer is empty. + * mei_hbuf_is_empty - checks if host buffer is empty. * * @dev: the device structure * - * returns 1 if empty, 0 - otherwise. + * returns true if empty, false - otherwise. */ -int mei_host_buffer_is_empty(struct mei_device *dev) +bool mei_hbuf_is_empty(struct mei_device *dev) { - unsigned char filled_slots; - - dev->host_hw_state = mei_hcsr_read(dev); - filled_slots = _host_get_filled_slots(dev); - - if (filled_slots == 0) - return 1; - - return 0; + return mei_hbuf_filled_slots(dev) == 0; } /** - * mei_count_empty_write_slots - counts write empty slots. + * mei_hbuf_empty_slots - counts write empty slots. * * @dev: the device structure * * returns -1(ESLOTS_OVERFLOW) if overflow, otherwise empty slots count */ -int mei_count_empty_write_slots(struct mei_device *dev) +int mei_hbuf_empty_slots(struct mei_device *dev) { - unsigned char buffer_depth, filled_slots, empty_slots; + unsigned char filled_slots, empty_slots; - dev->host_hw_state = mei_hcsr_read(dev); - buffer_depth = (unsigned char) ((dev->host_hw_state & H_CBD) >> 24); - filled_slots = _host_get_filled_slots(dev); - empty_slots = buffer_depth - filled_slots; + filled_slots = mei_hbuf_filled_slots(dev); + empty_slots = dev->hbuf_depth - filled_slots; /* check for overflow */ - if (filled_slots > buffer_depth) + if (filled_slots > dev->hbuf_depth) return -EOVERFLOW; return empty_slots; @@ -127,52 +119,39 @@ * * This function returns -EIO if write has failed */ -int mei_write_message(struct mei_device *dev, - struct mei_msg_hdr *header, - unsigned char *write_buffer, - unsigned long write_length) +int mei_write_message(struct mei_device *dev, struct mei_msg_hdr *header, + unsigned char *buf, unsigned long length) { - u32 temp_msg = 0; - unsigned long bytes_written = 0; - unsigned char buffer_depth, filled_slots, empty_slots; - unsigned long dw_to_write; + unsigned long rem, dw_cnt; + u32 *reg_buf = (u32 *)buf; + int i; + int empty_slots; - dev->host_hw_state = mei_hcsr_read(dev); - - dev_dbg(&dev->pdev->dev, - "host_hw_state = 0x%08x.\n", - dev->host_hw_state); dev_dbg(&dev->pdev->dev, "mei_write_message header=%08x.\n", *((u32 *) header)); - buffer_depth = (unsigned char) ((dev->host_hw_state & H_CBD) >> 24); - filled_slots = _host_get_filled_slots(dev); - empty_slots = buffer_depth - filled_slots; - dev_dbg(&dev->pdev->dev, - "filled = %hu, empty = %hu.\n", - filled_slots, empty_slots); + empty_slots = mei_hbuf_empty_slots(dev); + dev_dbg(&dev->pdev->dev, "empty slots = %hu.\n", empty_slots); - dw_to_write = ((write_length + 3) / 4); - - if (dw_to_write > empty_slots) + dw_cnt = mei_data2slots(length); + if (empty_slots < 0 || dw_cnt > empty_slots) return -EIO; mei_reg_write(dev, H_CB_WW, *((u32 *) header)); - while (write_length >= 4) { - mei_reg_write(dev, H_CB_WW, - *(u32 *) (write_buffer + bytes_written)); - bytes_written += 4; - write_length -= 4; - } + for (i = 0; i < length / 4; i++) + mei_reg_write(dev, H_CB_WW, reg_buf[i]); - if (write_length > 0) { - memcpy(&temp_msg, &write_buffer[bytes_written], write_length); - mei_reg_write(dev, H_CB_WW, temp_msg); + rem = length & 0x3; + if (rem > 0) { + u32 reg = 0; + memcpy(®, &buf[length - rem], rem); + mei_reg_write(dev, H_CB_WW, reg); } + dev->host_hw_state = mei_hcsr_read(dev); dev->host_hw_state |= H_IG; mei_hcsr_set(dev); dev->me_hw_state = mei_mecsr_read(dev); --- linux-3.5.0.orig/drivers/misc/mei/main.c +++ linux-3.5.0/drivers/misc/mei/main.c @@ -714,13 +714,8 @@ if (rets && dev->mei_host_buffer_is_empty) { rets = 0; dev->mei_host_buffer_is_empty = false; - if (length > ((((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - sizeof(struct mei_msg_hdr))) { - - mei_hdr.length = - (((dev->host_hw_state & H_CBD) >> 24) * - sizeof(u32)) - - sizeof(struct mei_msg_hdr); + if (length > mei_hbuf_max_data(dev)) { + mei_hdr.length = mei_hbuf_max_data(dev); mei_hdr.msg_complete = 0; } else { mei_hdr.length = length; @@ -930,6 +925,27 @@ }; /** + * mei_quirk_probe - probe for devices that doesn't valid ME interface + * @pdev: PCI device structure + * @ent: entry into pci_device_table + * + * returns true if ME Interface is valid, false otherwise + */ +static bool __devinit mei_quirk_probe(struct pci_dev *pdev, + 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; + } + } + return true; +} +/** * mei_probe - Device Initialization Routine * * @pdev: PCI device structure @@ -944,6 +960,12 @@ int err; mutex_lock(&mei_mutex); + + if (!mei_quirk_probe(pdev, ent)) { + err = -ENODEV; + goto end; + } + if (mei_device) { err = -EEXIST; goto end; @@ -1187,44 +1209,7 @@ .driver.pm = MEI_PM_OPS, }; -/** - * mei_init_module - Driver Registration Routine - * - * mei_init_module is the first routine called when the driver is - * loaded. All it does is to register with the PCI subsystem. - * - * returns 0 on success, <0 on failure. - */ -static int __init mei_init_module(void) -{ - int ret; - - pr_debug("loading.\n"); - /* init pci module */ - ret = pci_register_driver(&mei_driver); - if (ret < 0) - pr_err("error registering driver.\n"); - - return ret; -} - -module_init(mei_init_module); - -/** - * mei_exit_module - Driver Exit Cleanup Routine - * - * mei_exit_module is called just before the driver is removed - * from memory. - */ -static void __exit mei_exit_module(void) -{ - pci_unregister_driver(&mei_driver); - - pr_debug("unloaded successfully.\n"); -} - -module_exit(mei_exit_module); - +module_pci_driver(mei_driver); MODULE_AUTHOR("Intel Corporation"); MODULE_DESCRIPTION("Intel(R) Management Engine Interface"); --- linux-3.5.0.orig/drivers/misc/mei/interrupt.c +++ linux-3.5.0/drivers/misc/mei/interrupt.c @@ -267,8 +267,7 @@ + sizeof(struct hbm_flow_control))) { return -EMSGSIZE; } - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_flow_control) + 3) / 4; + *slots -= mei_data2slots(sizeof(struct hbm_flow_control)); if (mei_send_flow_control(dev, &dev->iamthif_cl)) { dev_dbg(&dev->pdev->dev, "iamthif flow control failed\n"); return -EIO; @@ -280,7 +279,7 @@ dev->iamthif_msg_buf_index = 0; dev->iamthif_msg_buf_size = 0; dev->iamthif_stall_timer = IAMTHIF_STALL_TIMER; - dev->mei_host_buffer_is_empty = mei_host_buffer_is_empty(dev); + dev->mei_host_buffer_is_empty = mei_hbuf_is_empty(dev); return 0; } @@ -300,28 +299,25 @@ struct mei_cl *cl, struct mei_io_list *cmpl_list) { - if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_disconnect_request))) { - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_disconnect_request) + 3) / 4; + if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) + + sizeof(struct hbm_client_disconnect_request))) + return -EBADMSG; - if (mei_disconnect(dev, cl)) { - cl->status = 0; - cb_pos->information = 0; - list_move_tail(&cb_pos->cb_list, - &cmpl_list->mei_cb.cb_list); - return -EMSGSIZE; - } else { - cl->state = MEI_FILE_DISCONNECTING; - cl->status = 0; - cb_pos->information = 0; - list_move_tail(&cb_pos->cb_list, - &dev->ctrl_rd_list.mei_cb.cb_list); - cl->timer_count = MEI_CONNECT_TIMEOUT; - } + *slots -= mei_data2slots(sizeof(struct hbm_client_disconnect_request)); + + if (mei_disconnect(dev, cl)) { + cl->status = 0; + cb_pos->information = 0; + list_move_tail(&cb_pos->cb_list, + &cmpl_list->mei_cb.cb_list); + return -EMSGSIZE; } else { - /* return the cancel routine */ - return -EBADMSG; + cl->state = MEI_FILE_DISCONNECTING; + cl->status = 0; + cb_pos->information = 0; + list_move_tail(&cb_pos->cb_list, + &dev->ctrl_rd_list.mei_cb.cb_list); + cl->timer_count = MEI_CONNECT_TIMEOUT; } return 0; @@ -575,10 +571,9 @@ disconnect_req->me_addr); cl_pos->state = MEI_FILE_DISCONNECTED; cl_pos->timer_count = 0; - if (cl_pos == &dev->wd_cl) { - dev->wd_due_counter = 0; + if (cl_pos == &dev->wd_cl) dev->wd_pending = false; - } else if (cl_pos == &dev->iamthif_cl) + else if (cl_pos == &dev->iamthif_cl) dev->iamthif_timer = 0; /* prepare disconnect response */ @@ -842,8 +837,8 @@ return -EBADMSG; } - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_flow_control) + 3) / 4; + *slots -= mei_data2slots(sizeof(struct hbm_flow_control)); + if (mei_send_flow_control(dev, cl)) { cl->status = -ENODEV; cb_pos->information = 0; @@ -872,27 +867,25 @@ struct mei_cl *cl, struct mei_io_list *cmpl_list) { - if ((*slots * sizeof(u32)) >= (sizeof(struct mei_msg_hdr) + + if ((*slots * sizeof(u32)) < (sizeof(struct mei_msg_hdr) + sizeof(struct hbm_client_connect_request))) { - cl->state = MEI_FILE_CONNECTING; - *slots -= (sizeof(struct mei_msg_hdr) + - sizeof(struct hbm_client_connect_request) + 3) / 4; - if (mei_connect(dev, cl)) { - cl->status = -ENODEV; - cb_pos->information = 0; - list_del(&cb_pos->cb_list); - return -ENODEV; - } else { - list_move_tail(&cb_pos->cb_list, - &dev->ctrl_rd_list.mei_cb.cb_list); - cl->timer_count = MEI_CONNECT_TIMEOUT; - } - } else { /* return the cancel routine */ list_del(&cb_pos->cb_list); return -EBADMSG; } + cl->state = MEI_FILE_CONNECTING; + *slots -= mei_data2slots(sizeof(struct hbm_client_connect_request)); + if (mei_connect(dev, cl)) { + cl->status = -ENODEV; + cb_pos->information = 0; + list_del(&cb_pos->cb_list); + return -ENODEV; + } else { + list_move_tail(&cb_pos->cb_list, + &dev->ctrl_rd_list.mei_cb.cb_list); + cl->timer_count = MEI_CONNECT_TIMEOUT; + } return 0; } @@ -932,8 +925,7 @@ cb_pos->information); dev_dbg(&dev->pdev->dev, "mei_hdr->length =%d\n", mei_hdr->length); - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (unsigned char *) (cb_pos->request_buffer.data + @@ -951,7 +943,7 @@ list_move_tail(&cb_pos->cb_list, &dev->write_waiting_list.mei_cb.cb_list); } - } else if (*slots == ((dev->host_hw_state & H_CBD) >> 24)) { + } else if (*slots == dev->hbuf_depth) { /* buffer is still empty */ mei_hdr = (struct mei_msg_hdr *) &dev->wr_msg_buf[0]; mei_hdr->host_addr = cl->host_client_id; @@ -960,9 +952,7 @@ (*slots * sizeof(u32)) - sizeof(struct mei_msg_hdr); mei_hdr->msg_complete = 0; mei_hdr->reserved = 0; - - (*slots) -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (unsigned char *) (cb_pos->request_buffer.data + @@ -1021,8 +1011,7 @@ mei_hdr->msg_complete = 1; mei_hdr->reserved = 0; - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (dev->iamthif_msg_buf + @@ -1046,8 +1035,8 @@ &dev->write_waiting_list.mei_cb.cb_list); } - } else if (*slots == ((dev->host_hw_state & H_CBD) >> 24)) { - /* buffer is still empty */ + } else if (*slots == dev->hbuf_depth) { + /* buffer is still empty */ mei_hdr = (struct mei_msg_hdr *) &dev->wr_msg_buf[0]; mei_hdr->host_addr = cl->host_client_id; mei_hdr->me_addr = cl->me_client_id; @@ -1056,8 +1045,7 @@ mei_hdr->msg_complete = 0; mei_hdr->reserved = 0; - *slots -= (sizeof(struct mei_msg_hdr) + - mei_hdr->length + 3) / 4; + *slots -= mei_data2slots(mei_hdr->length); if (mei_write_message(dev, mei_hdr, (dev->iamthif_msg_buf + @@ -1199,17 +1187,19 @@ struct mei_io_list *list; int ret; - if (!mei_host_buffer_is_empty(dev)) { + if (!mei_hbuf_is_empty(dev)) { dev_dbg(&dev->pdev->dev, "host buffer is not empty.\n"); return 0; } - *slots = mei_count_empty_write_slots(dev); + *slots = mei_hbuf_empty_slots(dev); + if (*slots <= 0) + return -EMSGSIZE; + /* complete all waiting for write CB */ dev_dbg(&dev->pdev->dev, "complete all waiting for write cb.\n"); list = &dev->write_waiting_list; - list_for_each_entry_safe(pos, next, - &list->mei_cb.cb_list, cb_list) { + list_for_each_entry_safe(pos, next, &list->mei_cb.cb_list, cb_list) { cl = (struct mei_cl *)pos->file_private; if (cl == NULL) continue; @@ -1219,17 +1209,15 @@ if (MEI_WRITING == cl->writing_state && (pos->major_file_operations == MEI_WRITE) && (cl != &dev->iamthif_cl)) { - dev_dbg(&dev->pdev->dev, - "MEI WRITE COMPLETE\n"); + dev_dbg(&dev->pdev->dev, "MEI WRITE COMPLETE\n"); cl->writing_state = MEI_WRITE_COMPLETE; list_add_tail(&pos->cb_list, - &cmpl_list->mei_cb.cb_list); + &cmpl_list->mei_cb.cb_list); } if (cl == &dev->iamthif_cl) { dev_dbg(&dev->pdev->dev, "check iamthif flow control.\n"); if (dev->iamthif_flow_control_pending) { - ret = _mei_irq_thread_iamthif_read( - dev, slots); + ret = _mei_irq_thread_iamthif_read(dev, slots); if (ret) return ret; } @@ -1254,25 +1242,18 @@ } if (dev->mei_state == MEI_ENABLED) { if (dev->wd_pending && - mei_flow_ctrl_creds(dev, &dev->wd_cl) > 0) { + mei_flow_ctrl_creds(dev, &dev->wd_cl) > 0) { if (mei_wd_send(dev)) dev_dbg(&dev->pdev->dev, "wd send failed.\n"); - else - if (mei_flow_ctrl_reduce(dev, &dev->wd_cl)) - return -ENODEV; + else if (mei_flow_ctrl_reduce(dev, &dev->wd_cl)) + return -ENODEV; dev->wd_pending = false; - if (dev->wd_timeout) { - *slots -= (sizeof(struct mei_msg_hdr) + - MEI_START_WD_DATA_SIZE + 3) / 4; - dev->wd_due_counter = 2; - } else { - *slots -= (sizeof(struct mei_msg_hdr) + - MEI_WD_PARAMS_SIZE + 3) / 4; - dev->wd_due_counter = 0; - } - + if (dev->wd_timeout) + *slots -= mei_data2slots(MEI_START_WD_DATA_SIZE); + else + *slots -= mei_data2slots(MEI_WD_PARAMS_SIZE); } } if (dev->stop) @@ -1320,42 +1301,34 @@ /* complete write list CB */ dev_dbg(&dev->pdev->dev, "complete write list cb.\n"); list_for_each_entry_safe(pos, next, - &dev->write_list.mei_cb.cb_list, cb_list) { + &dev->write_list.mei_cb.cb_list, cb_list) { cl = (struct mei_cl *)pos->file_private; if (cl == NULL) continue; if (cl != &dev->iamthif_cl) { - if (!mei_flow_ctrl_creds(dev, cl)) { + if (mei_flow_ctrl_creds(dev, cl) <= 0) { dev_dbg(&dev->pdev->dev, - "No flow control" - " credentials for client" - " %d, not sending.\n", - cl->host_client_id); + "No flow control credentials for client %d, not sending.\n", + cl->host_client_id); continue; } - ret = _mei_irq_thread_cmpl(dev, slots, - pos, - cl, cmpl_list); + ret = _mei_irq_thread_cmpl(dev, slots, pos, + cl, cmpl_list); if (ret) return ret; } else if (cl == &dev->iamthif_cl) { /* IAMTHIF IOCTL */ dev_dbg(&dev->pdev->dev, "complete amthi write cb.\n"); - if (!mei_flow_ctrl_creds(dev, cl)) { + if (mei_flow_ctrl_creds(dev, cl) <= 0) { dev_dbg(&dev->pdev->dev, - "No flow control" - " credentials for amthi" - " client %d.\n", - cl->host_client_id); + "No flow control credentials for amthi client %d.\n", + cl->host_client_id); continue; } - ret = _mei_irq_thread_cmpl_iamthif(dev, - slots, - pos, - cl, - cmpl_list); + ret = _mei_irq_thread_cmpl_iamthif(dev, slots, pos, + cl, cmpl_list); if (ret) return ret; @@ -1555,7 +1528,7 @@ end: dev_dbg(&dev->pdev->dev, "end of bottom half function.\n"); dev->host_hw_state = mei_hcsr_read(dev); - dev->mei_host_buffer_is_empty = mei_host_buffer_is_empty(dev); + dev->mei_host_buffer_is_empty = mei_hbuf_is_empty(dev); bus_message_received = false; if (dev->recvd_msg && waitqueue_active(&dev->wait_recvd_msg)) { --- linux-3.5.0.orig/drivers/misc/mei/init.c +++ linux-3.5.0/drivers/misc/mei/init.c @@ -162,6 +162,9 @@ if ((dev->host_hw_state & H_IS) == H_IS) mei_reg_write(dev, H_CSR, dev->host_hw_state); + /* Doesn't change in runtime */ + dev->hbuf_depth = (dev->host_hw_state & H_CBD) >> 24; + dev->recvd_msg = false; dev_dbg(&dev->pdev->dev, "reset in start the mei device.\n"); @@ -303,7 +306,6 @@ dev->iamthif_cl.host_client_id); mei_reset_iamthif_params(dev); - dev->wd_due_counter = 0; dev->extra_write_index = 0; } --- linux-3.5.0.orig/drivers/misc/mei/interface.h +++ linux-3.5.0/drivers/misc/mei/interface.h @@ -41,14 +41,28 @@ unsigned char *write_buffer, unsigned long write_length); -int mei_host_buffer_is_empty(struct mei_device *dev); +bool mei_hbuf_is_empty(struct mei_device *dev); + +int mei_hbuf_empty_slots(struct mei_device *dev); + +static inline size_t mei_hbuf_max_data(const struct mei_device *dev) +{ + return dev->hbuf_depth * sizeof(u32) - sizeof(struct mei_msg_hdr); +} + +/* get slots (dwords) from a message length + header (bytes) */ +static inline unsigned char mei_data2slots(size_t length) +{ + return DIV_ROUND_UP(sizeof(struct mei_msg_hdr) + length, 4); +} int mei_count_full_read_slots(struct mei_device *dev); -int mei_count_empty_write_slots(struct mei_device *dev); int mei_flow_ctrl_creds(struct mei_device *dev, struct mei_cl *cl); + + int mei_wd_send(struct mei_device *dev); int mei_wd_stop(struct mei_device *dev, bool preserve); int mei_wd_host_init(struct mei_device *dev); --- linux-3.5.0.orig/drivers/misc/mei/mei_dev.h +++ linux-3.5.0/drivers/misc/mei/mei_dev.h @@ -167,7 +167,10 @@ struct mei_cl_cb mei_cb; }; -/* MEI private device struct */ +/** + * struct mei_deive - MEI private device struct + * @hbuf_depth - depth of host(write) buffer + */ struct mei_device { struct pci_dev *pdev; /* pointer to pci device struct */ /* @@ -205,6 +208,7 @@ */ u32 host_hw_state; u32 me_hw_state; + u8 hbuf_depth; /* * waiting queue for receive message from FW */ @@ -237,15 +241,14 @@ bool mei_host_buffer_is_empty; struct mei_cl wd_cl; + bool wd_interface_reg; bool wd_pending; bool wd_stopped; bool wd_bypass; /* if false, don't refresh watchdog ME client */ u16 wd_timeout; /* seconds ((wd_data[1] << 8) + wd_data[0]) */ - u16 wd_due_counter; unsigned char wd_data[MEI_START_WD_DATA_SIZE]; - struct file *iamthif_file_object; struct mei_cl iamthif_cl; struct mei_cl_cb *iamthif_current_cb; @@ -259,8 +262,6 @@ bool iamthif_flow_control_pending; bool iamthif_ioctl; bool iamthif_canceled; - - bool wd_interface_reg; }; @@ -361,7 +362,8 @@ * * returns register value (u32) */ -static inline u32 mei_reg_read(struct mei_device *dev, unsigned long offset) +static inline u32 mei_reg_read(const struct mei_device *dev, + unsigned long offset) { return ioread32(dev->mem_addr + offset); } @@ -373,8 +375,8 @@ * @offset: offset from which to write the data * @value: register value to write (u32) */ -static inline void mei_reg_write(struct mei_device *dev, - unsigned long offset, u32 value) +static inline void mei_reg_write(const struct mei_device *dev, + unsigned long offset, u32 value) { iowrite32(value, dev->mem_addr + offset); } @@ -386,7 +388,7 @@ * * returns the byte read. */ -static inline u32 mei_hcsr_read(struct mei_device *dev) +static inline u32 mei_hcsr_read(const struct mei_device *dev) { return mei_reg_read(dev, H_CSR); } @@ -398,7 +400,7 @@ * * returns ME_CSR_HA register value (u32) */ -static inline u32 mei_mecsr_read(struct mei_device *dev) +static inline u32 mei_mecsr_read(const struct mei_device *dev) { return mei_reg_read(dev, ME_CSR_HA); } @@ -410,7 +412,7 @@ * * returns ME_CB_RW register value (u32) */ -static inline u32 mei_mecbrw_read(struct mei_device *dev) +static inline u32 mei_mecbrw_read(const struct mei_device *dev) { return mei_reg_read(dev, ME_CB_RW); } --- linux-3.5.0.orig/drivers/misc/sgi-xp/xpc_main.c +++ linux-3.5.0/drivers/misc/sgi-xp/xpc_main.c @@ -53,6 +53,10 @@ #include #include "xpc.h" +#ifdef CONFIG_X86_64 +#include +#endif + /* define two XPC debug device structures to be used with dev_dbg() et al */ struct device_driver xpc_dbg_name = { @@ -1079,6 +1083,9 @@ return NOTIFY_DONE; } +/* Used to only allow one cpu to complete disconnect */ +static unsigned int xpc_die_disconnecting; + /* * Notify other partitions to deactivate from us by first disengaging from all * references to our memory. @@ -1092,6 +1099,9 @@ long keep_waiting; long wait_to_print; + if (cmpxchg(&xpc_die_disconnecting, 0, 1)) + return; + /* keep xpc_hb_checker thread from doing anything (just in case) */ xpc_exiting = 1; @@ -1159,7 +1169,7 @@ * about the lack of a heartbeat. */ static int -xpc_system_die(struct notifier_block *nb, unsigned long event, void *unused) +xpc_system_die(struct notifier_block *nb, unsigned long event, void *_die_args) { #ifdef CONFIG_IA64 /* !!! temporary kludge */ switch (event) { @@ -1191,7 +1201,27 @@ break; } #else - xpc_die_deactivate(); + struct die_args *die_args = _die_args; + + switch (event) { + case DIE_TRAP: + if (die_args->trapnr == X86_TRAP_DF) + xpc_die_deactivate(); + + if (((die_args->trapnr == X86_TRAP_MF) || + (die_args->trapnr == X86_TRAP_XF)) && + !user_mode_vm(die_args->regs)) + xpc_die_deactivate(); + + break; + case DIE_INT3: + case DIE_DEBUG: + break; + case DIE_OOPS: + case DIE_GPF: + default: + xpc_die_deactivate(); + } #endif return NOTIFY_DONE; --- linux-3.5.0.orig/drivers/misc/sgi-xp/xpc_uv.c +++ linux-3.5.0/drivers/misc/sgi-xp/xpc_uv.c @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include #include @@ -59,6 +61,8 @@ XPC_NOTIFY_MSG_SIZE_UV) #define XPC_NOTIFY_IRQ_NAME "xpc_notify" +static int xpc_mq_node = -1; + static struct xpc_gru_mq_uv *xpc_activate_mq_uv; static struct xpc_gru_mq_uv *xpc_notify_mq_uv; @@ -109,11 +113,8 @@ #if defined CONFIG_X86_64 mq->irq = uv_setup_irq(irq_name, cpu, mq->mmr_blade, mq->mmr_offset, UV_AFFINITY_CPU); - if (mq->irq < 0) { - dev_err(xpc_part, "uv_setup_irq() returned error=%d\n", - -mq->irq); + if (mq->irq < 0) return mq->irq; - } mq->mmr_value = uv_read_global_mmr64(mmr_pnode, mq->mmr_offset); @@ -238,8 +239,9 @@ mq->mmr_blade = uv_cpu_to_blade_id(cpu); nid = cpu_to_node(cpu); - page = alloc_pages_exact_node(nid, GFP_KERNEL | __GFP_ZERO | GFP_THISNODE, - pg_order); + page = alloc_pages_exact_node(nid, + GFP_KERNEL | __GFP_ZERO | GFP_THISNODE, + pg_order); if (page == NULL) { dev_err(xpc_part, "xpc_create_gru_mq_uv() failed to alloc %d " "bytes of memory on nid=%d for GRU mq\n", mq_size, nid); @@ -1731,9 +1733,50 @@ .notify_senders_of_disconnect = xpc_notify_senders_of_disconnect_uv, }; +static int +xpc_init_mq_node(int nid) +{ + int cpu; + + get_online_cpus(); + + for_each_cpu(cpu, cpumask_of_node(nid)) { + xpc_activate_mq_uv = + xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, nid, + XPC_ACTIVATE_IRQ_NAME, + xpc_handle_activate_IRQ_uv); + if (!IS_ERR(xpc_activate_mq_uv)) + break; + } + if (IS_ERR(xpc_activate_mq_uv)) { + put_online_cpus(); + return PTR_ERR(xpc_activate_mq_uv); + } + + for_each_cpu(cpu, cpumask_of_node(nid)) { + xpc_notify_mq_uv = + xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, nid, + XPC_NOTIFY_IRQ_NAME, + xpc_handle_notify_IRQ_uv); + if (!IS_ERR(xpc_notify_mq_uv)) + break; + } + if (IS_ERR(xpc_notify_mq_uv)) { + xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); + put_online_cpus(); + return PTR_ERR(xpc_notify_mq_uv); + } + + put_online_cpus(); + return 0; +} + int xpc_init_uv(void) { + int nid; + int ret = 0; + xpc_arch_ops = xpc_arch_ops_uv; if (sizeof(struct xpc_notify_mq_msghdr_uv) > XPC_MSG_HDR_MAX_SIZE) { @@ -1742,21 +1785,21 @@ return -E2BIG; } - xpc_activate_mq_uv = xpc_create_gru_mq_uv(XPC_ACTIVATE_MQ_SIZE_UV, 0, - XPC_ACTIVATE_IRQ_NAME, - xpc_handle_activate_IRQ_uv); - if (IS_ERR(xpc_activate_mq_uv)) - return PTR_ERR(xpc_activate_mq_uv); + if (xpc_mq_node < 0) + for_each_online_node(nid) { + ret = xpc_init_mq_node(nid); - xpc_notify_mq_uv = xpc_create_gru_mq_uv(XPC_NOTIFY_MQ_SIZE_UV, 0, - XPC_NOTIFY_IRQ_NAME, - xpc_handle_notify_IRQ_uv); - if (IS_ERR(xpc_notify_mq_uv)) { - xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); - return PTR_ERR(xpc_notify_mq_uv); - } + if (!ret) + break; + } + else + ret = xpc_init_mq_node(xpc_mq_node); - return 0; + if (ret < 0) + dev_err(xpc_part, "xpc_init_mq_node() returned error=%d\n", + -ret); + + return ret; } void @@ -1765,3 +1808,6 @@ xpc_destroy_gru_mq_uv(xpc_notify_mq_uv); xpc_destroy_gru_mq_uv(xpc_activate_mq_uv); } + +module_param(xpc_mq_node, int, 0); +MODULE_PARM_DESC(xpc_mq_node, "Node number on which to allocate message queues."); --- linux-3.5.0.orig/drivers/cpufreq/cpufreq.c +++ linux-3.5.0/drivers/cpufreq/cpufreq.c @@ -1817,6 +1817,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# @@ -1839,7 +1853,13 @@ ((!driver_data->setpolicy) && (!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.5.0.orig/drivers/cpufreq/powernow-k8.c +++ linux-3.5.0/drivers/cpufreq/powernow-k8.c @@ -35,7 +35,6 @@ #include #include #include -#include /* for current / set_cpus_allowed() */ #include #include @@ -1139,16 +1138,23 @@ return res; } -/* Driver entry point to switch to the target frequency */ -static int powernowk8_target(struct cpufreq_policy *pol, - unsigned targfreq, unsigned relation) +struct powernowk8_target_arg { + struct cpufreq_policy *pol; + unsigned targfreq; + unsigned relation; +}; + +static long powernowk8_target_fn(void *arg) { - cpumask_var_t oldmask; + struct powernowk8_target_arg *pta = arg; + struct cpufreq_policy *pol = pta->pol; + unsigned targfreq = pta->targfreq; + unsigned relation = pta->relation; struct powernow_k8_data *data = per_cpu(powernow_data, pol->cpu); u32 checkfid; u32 checkvid; unsigned int newstate; - int ret = -EIO; + int ret; if (!data) return -EINVAL; @@ -1156,29 +1162,16 @@ checkfid = data->currfid; checkvid = data->currvid; - /* only run on specific CPU from here on. */ - /* This is poor form: use a workqueue or smp_call_function_single */ - if (!alloc_cpumask_var(&oldmask, GFP_KERNEL)) - return -ENOMEM; - - cpumask_copy(oldmask, tsk_cpus_allowed(current)); - set_cpus_allowed_ptr(current, cpumask_of(pol->cpu)); - - if (smp_processor_id() != pol->cpu) { - printk(KERN_ERR PFX "limiting to cpu %u failed\n", pol->cpu); - goto err_out; - } - if (pending_bit_stuck()) { printk(KERN_ERR PFX "failing targ, change pending bit set\n"); - goto err_out; + return -EIO; } pr_debug("targ: cpu %d, %d kHz, min %d, max %d, relation %d\n", pol->cpu, targfreq, pol->min, pol->max, relation); if (query_current_values_with_pending_wait(data)) - goto err_out; + return -EIO; if (cpu_family != CPU_HW_PSTATE) { pr_debug("targ: curr fid 0x%x, vid 0x%x\n", @@ -1196,7 +1189,7 @@ if (cpufreq_frequency_table_target(pol, data->powernow_table, targfreq, relation, &newstate)) - goto err_out; + return -EIO; mutex_lock(&fidvid_mutex); @@ -1209,9 +1202,8 @@ ret = transition_frequency_fidvid(data, newstate); if (ret) { printk(KERN_ERR PFX "transition frequency failed\n"); - ret = 1; mutex_unlock(&fidvid_mutex); - goto err_out; + return 1; } mutex_unlock(&fidvid_mutex); @@ -1220,12 +1212,18 @@ data->powernow_table[newstate].index); else pol->cur = find_khz_freq_from_fid(data->currfid); - ret = 0; -err_out: - set_cpus_allowed_ptr(current, oldmask); - free_cpumask_var(oldmask); - return ret; + return 0; +} + +/* Driver entry point to switch to the target frequency */ +static int powernowk8_target(struct cpufreq_policy *pol, + unsigned targfreq, unsigned relation) +{ + struct powernowk8_target_arg pta = { .pol = pol, .targfreq = targfreq, + .relation = relation }; + + return work_on_cpu(pol->cpu, powernowk8_target_fn, &pta); } /* Driver entry point to verify the policy and range of frequencies */ --- linux-3.5.0.orig/drivers/vhost/vhost.c +++ linux-3.5.0/drivers/vhost/vhost.c @@ -1077,7 +1077,7 @@ } _iov = iov + ret; size = reg->memory_size - addr + reg->guest_phys_addr; - _iov->iov_len = min((u64)len, size); + _iov->iov_len = min((u64)len - s, size); _iov->iov_base = (void __user *)(unsigned long) (reg->userspace_addr + addr - reg->guest_phys_addr); s += size; --- linux-3.5.0.orig/drivers/vhost/net.c +++ linux-3.5.0/drivers/vhost/net.c @@ -379,7 +379,8 @@ .hdr.gso_type = VIRTIO_NET_HDR_GSO_NONE }; size_t total_len = 0; - int err, headcount, mergeable; + int err, mergeable; + s16 headcount; size_t vhost_hlen, sock_hlen; size_t vhost_len, sock_len; /* TODO: check that we are running from vhost_worker? */ --- linux-3.5.0.orig/drivers/gpu/vga/vga_switcheroo.c +++ linux-3.5.0/drivers/gpu/vga/vga_switcheroo.c @@ -70,27 +70,12 @@ .clients = LIST_HEAD_INIT(vgasr_priv.clients), }; -int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) +static bool vga_switcheroo_ready(void) { - mutex_lock(&vgasr_mutex); - if (vgasr_priv.handler) { - mutex_unlock(&vgasr_mutex); - return -EINVAL; - } - - vgasr_priv.handler = handler; - mutex_unlock(&vgasr_mutex); - return 0; + /* we're ready if we get two clients + handler */ + return !vgasr_priv.active && + vgasr_priv.registered_clients == 2 && vgasr_priv.handler; } -EXPORT_SYMBOL(vga_switcheroo_register_handler); - -void vga_switcheroo_unregister_handler(void) -{ - mutex_lock(&vgasr_mutex); - vgasr_priv.handler = NULL; - mutex_unlock(&vgasr_mutex); -} -EXPORT_SYMBOL(vga_switcheroo_unregister_handler); static void vga_switcheroo_enable(void) { @@ -98,7 +83,8 @@ struct vga_switcheroo_client *client; /* call the handler to init */ - vgasr_priv.handler->init(); + if (vgasr_priv.handler->init) + vgasr_priv.handler->init(); list_for_each_entry(client, &vgasr_priv.clients, list) { if (client->id != -1) @@ -113,6 +99,37 @@ vgasr_priv.active = true; } +int vga_switcheroo_register_handler(struct vga_switcheroo_handler *handler) +{ + mutex_lock(&vgasr_mutex); + if (vgasr_priv.handler) { + mutex_unlock(&vgasr_mutex); + return -EINVAL; + } + + vgasr_priv.handler = handler; + if (vga_switcheroo_ready()) { + printk(KERN_INFO "vga_switcheroo: enabled\n"); + vga_switcheroo_enable(); + } + mutex_unlock(&vgasr_mutex); + return 0; +} +EXPORT_SYMBOL(vga_switcheroo_register_handler); + +void vga_switcheroo_unregister_handler(void) +{ + mutex_lock(&vgasr_mutex); + vgasr_priv.handler = NULL; + if (vgasr_priv.active) { + pr_info("vga_switcheroo: disabled\n"); + vga_switcheroo_debugfs_fini(&vgasr_priv); + vgasr_priv.active = false; + } + mutex_unlock(&vgasr_mutex); +} +EXPORT_SYMBOL(vga_switcheroo_unregister_handler); + static int register_client(struct pci_dev *pdev, const struct vga_switcheroo_client_ops *ops, int id, bool active) @@ -134,9 +151,7 @@ if (client_is_vga(client)) vgasr_priv.registered_clients++; - /* if we get two clients + handler */ - if (!vgasr_priv.active && - vgasr_priv.registered_clients == 2 && vgasr_priv.handler) { + if (vga_switcheroo_ready()) { printk(KERN_INFO "vga_switcheroo: enabled\n"); vga_switcheroo_enable(); } --- linux-3.5.0.orig/drivers/gpu/drm/drm_crtc.c +++ linux-3.5.0/drivers/gpu/drm/drm_crtc.c @@ -1034,15 +1034,15 @@ fb->funcs->destroy(fb); } - list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { - crtc->funcs->destroy(crtc); - } - list_for_each_entry_safe(plane, plt, &dev->mode_config.plane_list, head) { plane->funcs->destroy(plane); } + list_for_each_entry_safe(crtc, ct, &dev->mode_config.crtc_list, head) { + crtc->funcs->destroy(crtc); + } + idr_remove_all(&dev->mode_config.crtc_idr); idr_destroy(&dev->mode_config.crtc_idr); } @@ -1981,7 +1981,7 @@ if (!drm_core_check_feature(dev, DRIVER_MODESET)) return -EINVAL; - if (!req->flags) + if (!req->flags || (~DRM_MODE_CURSOR_FLAGS & req->flags)) return -EINVAL; mutex_lock(&dev->mode_config.mutex); @@ -2023,7 +2023,7 @@ switch (bpp) { case 8: - fmt = DRM_FORMAT_RGB332; + fmt = DRM_FORMAT_C8; break; case 16: if (depth == 15) @@ -3633,6 +3633,7 @@ int *bpp) { switch (format) { + case DRM_FORMAT_C8: case DRM_FORMAT_RGB332: case DRM_FORMAT_BGR233: *depth = 8; --- linux-3.5.0.orig/drivers/gpu/drm/drm_crtc_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_crtc_helper.c @@ -39,6 +39,24 @@ #include "drm_fb_helper.h" #include "drm_edid.h" +void drm_helper_move_panel_connectors_to_head(struct drm_device *dev) +{ + struct drm_connector *connector, *tmp; + struct list_head panel_list; + + INIT_LIST_HEAD(&panel_list); + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (connector->connector_type == DRM_MODE_CONNECTOR_LVDS || + connector->connector_type == DRM_MODE_CONNECTOR_eDP) + list_move_tail(&connector->head, &panel_list); + } + + list_splice(&panel_list, &dev->mode_config.connector_list); +} +EXPORT_SYMBOL(drm_helper_move_panel_connectors_to_head); + static bool drm_kms_helper_poll = true; module_param_named(poll, drm_kms_helper_poll, bool, 0600); @@ -328,8 +346,8 @@ * drm_crtc_set_mode - set a mode * @crtc: CRTC to program * @mode: mode to use - * @x: width of mode - * @y: height of mode + * @x: horizontal offset into the surface + * @y: vertical offset into the surface * * LOCKING: * Caller must hold mode config lock. --- linux-3.5.0.orig/drivers/gpu/drm/drm_fb_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_fb_helper.c @@ -228,7 +228,7 @@ int i, ret; for (i = 0; i < fb_helper->crtc_count; i++) { struct drm_mode_set *mode_set = &fb_helper->crtc_info[i].mode_set; - ret = drm_crtc_helper_set_config(mode_set); + ret = mode_set->crtc->funcs->set_config(mode_set); if (ret) error = true; } @@ -330,7 +330,7 @@ /* Walk the connectors & encoders on this fb turning them on/off */ for (j = 0; j < fb_helper->connector_count; j++) { connector = fb_helper->connector_info[j]->connector; - drm_helper_connector_dpms(connector, dpms_mode); + connector->funcs->dpms(connector, dpms_mode); drm_connector_property_set_value(connector, dev->mode_config.dpms_property, dpms_mode); } @@ -1230,7 +1230,6 @@ struct drm_device *dev = fb_helper->dev; struct drm_fb_helper_crtc **crtcs; struct drm_display_mode **modes; - struct drm_encoder *encoder; struct drm_mode_set *modeset; bool *enabled; int width, height; @@ -1241,11 +1240,6 @@ width = dev->mode_config.max_width; height = dev->mode_config.max_height; - /* clean out all the encoder/crtc combos */ - list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { - encoder->crtc = NULL; - } - crtcs = kcalloc(dev->mode_config.num_connector, sizeof(struct drm_fb_helper_crtc *), GFP_KERNEL); modes = kcalloc(dev->mode_config.num_connector, @@ -1353,7 +1347,7 @@ struct drm_device *dev = fb_helper->dev; int count = 0; u32 max_width, max_height, bpp_sel; - bool bound = false, crtcs_bound = false; + int bound = 0, crtcs_bound = 0; struct drm_crtc *crtc; if (!fb_helper->fb) @@ -1362,12 +1356,12 @@ mutex_lock(&dev->mode_config.mutex); list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { if (crtc->fb) - crtcs_bound = true; + crtcs_bound++; if (crtc->fb == fb_helper->fb) - bound = true; + bound++; } - if (!bound && crtcs_bound) { + if (bound < crtcs_bound) { fb_helper->delayed_hotplug = true; mutex_unlock(&dev->mode_config.mutex); return 0; --- linux-3.5.0.orig/drivers/gpu/drm/Makefile +++ linux-3.5.0/drivers/gpu/drm/Makefile @@ -10,7 +10,7 @@ drm_lock.o drm_memory.o drm_proc.o drm_stub.o drm_vm.o \ drm_agpsupport.o drm_scatter.o ati_pcigart.o drm_pci.o \ drm_platform.o drm_sysfs.o drm_hashtab.o drm_mm.o \ - drm_crtc.o drm_modes.o drm_edid.o \ + drm_mm_hsw.o drm_crtc.o drm_modes.o drm_edid.o \ drm_info.o drm_debugfs.o drm_encoder_slave.o \ drm_trace_points.o drm_global.o drm_prime.o --- linux-3.5.0.orig/drivers/gpu/drm/drm_pci.c +++ linux-3.5.0/drivers/gpu/drm/drm_pci.c @@ -367,6 +367,10 @@ list_add_tail(&dev->driver_item, &driver->device_list); + if (drm_core_check_feature(dev, DRIVER_MODESET)) + idr_replace(&drm_minors_idr, dev->control, dev->control->index); + idr_replace(&drm_minors_idr, dev->primary, dev->primary->index); + DRM_INFO("Initialized %s %d.%d.%d %s for %s on minor %d\n", driver->name, driver->major, driver->minor, driver->patchlevel, driver->date, pci_name(pdev), dev->primary->index); --- linux-3.5.0.orig/drivers/gpu/drm/drm_edid_load.c +++ linux-3.5.0/drivers/gpu/drm/drm_edid_load.c @@ -114,12 +114,12 @@ }, }; -static int edid_load(struct drm_connector *connector, char *name, - char *connector_name) +static u8 *edid_load(struct drm_connector *connector, char *name, + char *connector_name) { const struct firmware *fw; struct platform_device *pdev; - u8 *fwdata = NULL, *edid; + u8 *fwdata = NULL, *edid, *new_edid; int fwsize, expected; int builtin = 0, err = 0; int i, valid_extensions = 0; @@ -195,15 +195,16 @@ "\"%s\" for connector \"%s\"\n", valid_extensions, edid[0x7e], name, connector_name); edid[0x7e] = valid_extensions; - edid = krealloc(edid, (valid_extensions + 1) * EDID_LENGTH, + new_edid = krealloc(edid, (valid_extensions + 1) * EDID_LENGTH, GFP_KERNEL); - if (edid == NULL) { + if (new_edid == NULL) { err = -ENOMEM; + kfree(edid); goto relfw_out; } + edid = new_edid; } - connector->display_info.raw_edid = edid; DRM_INFO("Got %s EDID base block and %d extension%s from " "\"%s\" for connector \"%s\"\n", builtin ? "built-in" : "external", valid_extensions, valid_extensions == 1 ? "" : "s", @@ -213,7 +214,10 @@ release_firmware(fw); out: - return err; + if (err) + return ERR_PTR(err); + + return edid; } int drm_load_edid_firmware(struct drm_connector *connector) @@ -221,6 +225,7 @@ char *connector_name = drm_get_connector_name(connector); char *edidname = edid_firmware, *last, *colon; int ret; + struct edid *edid; if (*edidname == '\0') return 0; @@ -238,13 +243,13 @@ if (*last == '\n') *last = '\0'; - ret = edid_load(connector, edidname, connector_name); - if (ret) + edid = (struct edid *) edid_load(connector, edidname, connector_name); + if (IS_ERR_OR_NULL(edid)) return 0; - drm_mode_connector_update_edid_property(connector, - (struct edid *) connector->display_info.raw_edid); + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + kfree(edid); - return drm_add_edid_modes(connector, (struct edid *) - connector->display_info.raw_edid); + return ret; } --- linux-3.5.0.orig/drivers/gpu/drm/drm_cache.c +++ linux-3.5.0/drivers/gpu/drm/drm_cache.c @@ -100,6 +100,31 @@ EXPORT_SYMBOL(drm_clflush_pages); void +drm_clflush_sg(struct sg_table *st) +{ +#if defined(CONFIG_X86) + if (cpu_has_clflush) { + struct scatterlist *sg; + int i; + + mb(); + for_each_sg(st->sgl, sg, st->nents, i) + drm_clflush_page(sg_page(sg)); + mb(); + + return; + } + + if (on_each_cpu(drm_clflush_ipi_handler, NULL, 1) != 0) + printk(KERN_ERR "Timed out waiting for cache flush.\n"); +#else + printk(KERN_ERR "Architecture has no drm_cache.c support\n"); + WARN_ON_ONCE(1); +#endif +} +EXPORT_SYMBOL(drm_clflush_sg); + +void drm_clflush_virt_range(char *addr, unsigned long length) { #if defined(CONFIG_X86) --- linux-3.5.0.orig/drivers/gpu/drm/drm_dp_i2c_helper.c +++ linux-3.5.0/drivers/gpu/drm/drm_dp_i2c_helper.c @@ -206,3 +206,124 @@ return error; } EXPORT_SYMBOL(i2c_dp_aux_add_bus); + +/* Helpers for DP link training */ +static u8 dp_link_status(u8 link_status[DP_LINK_STATUS_SIZE], int r) +{ + return link_status[r - DP_LANE0_1_STATUS]; +} + +static u8 dp_get_lane_status(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_LANE0_1_STATUS + (lane >> 1); + int s = (lane & 1) * 4; + u8 l = dp_link_status(link_status, i); + return (l >> s) & 0xf; + +} + +bool drm_dp_channel_eq_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count) +{ + u8 lane_align; + u8 lane_status; + int lane; + + lane_align = dp_link_status(link_status, + DP_LANE_ALIGN_STATUS_UPDATED); + if ((lane_align & DP_INTERLANE_ALIGN_DONE) == 0) + return false; + for (lane = 0; lane < lane_count; lane++) { + lane_status = dp_get_lane_status(link_status, lane); + if ((lane_status & DP_CHANNEL_EQ_BITS) != DP_CHANNEL_EQ_BITS) + return false; + } + return true; +} +EXPORT_SYMBOL(drm_dp_channel_eq_ok); + +bool drm_dp_clock_recovery_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count) +{ + int lane; + u8 lane_status; + + for (lane = 0; lane < lane_count; lane++) { + lane_status = dp_get_lane_status(link_status, lane); + if ((lane_status & DP_LANE_CR_DONE) == 0) + return false; + } + return true; +} +EXPORT_SYMBOL(drm_dp_clock_recovery_ok); + +u8 drm_dp_get_adjust_request_voltage(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_ADJUST_REQUEST_LANE0_1 + (lane >> 1); + int s = ((lane & 1) ? + DP_ADJUST_VOLTAGE_SWING_LANE1_SHIFT : + DP_ADJUST_VOLTAGE_SWING_LANE0_SHIFT); + u8 l = dp_link_status(link_status, i); + + return ((l >> s) & 0x3) << DP_TRAIN_VOLTAGE_SWING_SHIFT; +} +EXPORT_SYMBOL(drm_dp_get_adjust_request_voltage); + +u8 drm_dp_get_adjust_request_pre_emphasis(u8 link_status[DP_LINK_STATUS_SIZE], + int lane) +{ + int i = DP_ADJUST_REQUEST_LANE0_1 + (lane >> 1); + int s = ((lane & 1) ? + DP_ADJUST_PRE_EMPHASIS_LANE1_SHIFT : + DP_ADJUST_PRE_EMPHASIS_LANE0_SHIFT); + u8 l = dp_link_status(link_status, i); + + return ((l >> s) & 0x3) << DP_TRAIN_PRE_EMPHASIS_SHIFT; +} +EXPORT_SYMBOL(drm_dp_get_adjust_request_pre_emphasis); + +void drm_dp_link_train_clock_recovery_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]) { + if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) + udelay(100); + else + mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); +} +EXPORT_SYMBOL(drm_dp_link_train_clock_recovery_delay); + +void drm_dp_link_train_channel_eq_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]) { + if (dpcd[DP_TRAINING_AUX_RD_INTERVAL] == 0) + udelay(400); + else + mdelay(dpcd[DP_TRAINING_AUX_RD_INTERVAL] * 4); +} +EXPORT_SYMBOL(drm_dp_link_train_channel_eq_delay); + +u8 drm_dp_link_rate_to_bw_code(int link_rate) +{ + switch (link_rate) { + case 162000: + default: + return DP_LINK_BW_1_62; + case 270000: + return DP_LINK_BW_2_7; + case 540000: + return DP_LINK_BW_5_4; + } +} +EXPORT_SYMBOL(drm_dp_link_rate_to_bw_code); + +int drm_dp_bw_code_to_link_rate(u8 link_bw) +{ + switch (link_bw) { + case DP_LINK_BW_1_62: + default: + return 162000; + case DP_LINK_BW_2_7: + return 270000; + case DP_LINK_BW_5_4: + return 540000; + } +} +EXPORT_SYMBOL(drm_dp_bw_code_to_link_rate); --- linux-3.5.0.orig/drivers/gpu/drm/drm_stub.c +++ linux-3.5.0/drivers/gpu/drm/drm_stub.c @@ -356,7 +356,7 @@ new_minor->index = minor_id; INIT_LIST_HEAD(&new_minor->master_list); - idr_replace(&drm_minors_idr, new_minor, minor_id); + idr_replace(&drm_minors_idr, ERR_PTR(-EAGAIN), minor_id); if (type == DRM_MINOR_LEGACY) { ret = drm_proc_init(new_minor, minor_id, drm_proc_root); --- linux-3.5.0.orig/drivers/gpu/drm/drm_platform.c +++ linux-3.5.0/drivers/gpu/drm/drm_platform.c @@ -90,6 +90,10 @@ list_add_tail(&dev->driver_item, &driver->device_list); + if (drm_core_check_feature(dev, DRIVER_MODESET)) + idr_replace(&drm_minors_idr, dev->control, dev->control->index); + idr_replace(&drm_minors_idr, dev->primary, dev->primary->index); + mutex_unlock(&drm_global_mutex); DRM_INFO("Initialized %s %d.%d.%d %s on minor %d\n", --- linux-3.5.0.orig/drivers/gpu/drm/drm_usb.c +++ linux-3.5.0/drivers/gpu/drm/drm_usb.c @@ -18,7 +18,7 @@ usbdev = interface_to_usbdev(interface); dev->usbdev = usbdev; - dev->dev = &usbdev->dev; + dev->dev = &interface->dev; mutex_lock(&drm_global_mutex); --- linux-3.5.0.orig/drivers/gpu/drm/drm_fops.c +++ linux-3.5.0/drivers/gpu/drm/drm_fops.c @@ -129,7 +129,8 @@ minor = idr_find(&drm_minors_idr, minor_id); if (!minor) return -ENODEV; - + if (IS_ERR(minor)) + return PTR_ERR(minor); if (!(dev = minor->dev)) return -ENODEV; @@ -139,8 +140,11 @@ retcode = drm_open_helper(inode, filp, dev); if (!retcode) { atomic_inc(&dev->counts[_DRM_STAT_OPENS]); - if (!dev->open_count++) + if (!dev->open_count++) { retcode = drm_setup(dev); + if (retcode) + dev->open_count--; + } } if (!retcode) { mutex_lock(&dev->struct_mutex); @@ -180,7 +184,10 @@ minor = idr_find(&drm_minors_idr, minor_id); if (!minor) goto out; - + if (IS_ERR(minor)) { + err = PTR_ERR(minor); + goto out; + } if (!(dev = minor->dev)) goto out; --- linux-3.5.0.orig/drivers/gpu/drm/drm_mm_hsw.c +++ linux-3.5.0/drivers/gpu/drm/drm_mm_hsw.c @@ -0,0 +1,755 @@ +/************************************************************************** + * + * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., 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. + * + * + **************************************************************************/ + +/* + * Generic simple memory manager implementation. Intended to be used as a base + * class implementation for more advanced memory managers. + * + * Note that the algorithm used is quite simple and there might be substantial + * performance gains if a smarter free list is implemented. Currently it is just an + * unordered stack of free regions. This could easily be improved if an RB-tree + * is used instead. At least if we expect heavy fragmentation. + * + * Aligned allocations can also see improvement. + * + * Authors: + * Thomas Hellström + */ + +#include +#include +#include +#include + +#define MM_UNUSED_TARGET 4 + +static struct drm_mm_node_hsw *drm_mm_kmalloc_hsw(struct drm_mm_hsw *mm, int atomic) +{ + struct drm_mm_node_hsw *child; + + if (atomic) + child = kzalloc(sizeof(*child), GFP_ATOMIC); + else + child = kzalloc(sizeof(*child), GFP_KERNEL); + + if (unlikely(child == NULL)) { + spin_lock(&mm->unused_lock); + if (list_empty(&mm->unused_nodes)) + child = NULL; + else { + child = + list_entry(mm->unused_nodes.next, + struct drm_mm_node_hsw, node_list); + list_del(&child->node_list); + --mm->num_unused; + } + spin_unlock(&mm->unused_lock); + } + return child; +} + +/* drm_mm_pre_get_hsw() - pre allocate drm_mm_node structure + * drm_mm: memory manager struct we are pre-allocating for + * + * Returns 0 on success or -ENOMEM if allocation fails. + */ +int drm_mm_pre_get_hsw(struct drm_mm_hsw *mm) +{ + struct drm_mm_node_hsw *node; + + spin_lock(&mm->unused_lock); + while (mm->num_unused < MM_UNUSED_TARGET) { + spin_unlock(&mm->unused_lock); + node = kzalloc(sizeof(*node), GFP_KERNEL); + spin_lock(&mm->unused_lock); + + if (unlikely(node == NULL)) { + int ret = (mm->num_unused < 2) ? -ENOMEM : 0; + spin_unlock(&mm->unused_lock); + return ret; + } + ++mm->num_unused; + list_add_tail(&node->node_list, &mm->unused_nodes); + } + spin_unlock(&mm->unused_lock); + return 0; +} +EXPORT_SYMBOL(drm_mm_pre_get_hsw); + +static inline unsigned long drm_mm_hole_node_start_hsw(struct drm_mm_node_hsw *hole_node) +{ + return hole_node->start + hole_node->size; +} + +static inline unsigned long drm_mm_hole_node_end_hsw(struct drm_mm_node_hsw *hole_node) +{ + struct drm_mm_node_hsw *next_node = + list_entry(hole_node->node_list.next, struct drm_mm_node_hsw, + node_list); + + return next_node->start; +} + +static void drm_mm_insert_helper_hsw(struct drm_mm_node_hsw *hole_node, + struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long color) +{ + struct drm_mm_hsw *mm = hole_node->mm; + unsigned long hole_start = drm_mm_hole_node_start_hsw(hole_node); + unsigned long hole_end = drm_mm_hole_node_end_hsw(hole_node); + unsigned long adj_start = hole_start; + unsigned long adj_end = hole_end; + + BUG_ON(!hole_node->hole_follows || node->allocated); + + if (mm->color_adjust) + mm->color_adjust(hole_node, color, &adj_start, &adj_end); + + if (alignment) { + unsigned tmp = adj_start % alignment; + if (tmp) + adj_start += alignment - tmp; + } + + if (adj_start == hole_start) { + hole_node->hole_follows = 0; + list_del(&hole_node->hole_stack); + } + + node->start = adj_start; + node->size = size; + node->mm = mm; + node->color = color; + node->allocated = 1; + + INIT_LIST_HEAD(&node->hole_stack); + list_add(&node->node_list, &hole_node->node_list); + + BUG_ON(node->start + node->size > adj_end); + + node->hole_follows = 0; + if (node->start + node->size < hole_end) { + list_add(&node->hole_stack, &mm->hole_stack); + node->hole_follows = 1; + } +} + +struct drm_mm_node_hsw *drm_mm_get_block_generic_hsw(struct drm_mm_node_hsw *hole_node, + unsigned long size, + unsigned alignment, + unsigned long color, + int atomic) +{ + struct drm_mm_node_hsw *node; + + node = drm_mm_kmalloc_hsw(hole_node->mm, atomic); + if (unlikely(node == NULL)) + return NULL; + + drm_mm_insert_helper_hsw(hole_node, node, size, alignment, color); + + return node; +} +EXPORT_SYMBOL(drm_mm_get_block_generic_hsw); + +/** + * Search for free space and insert a preallocated memory node. Returns + * -ENOSPC if no suitable free area is available. The preallocated memory node + * must be cleared. + */ +int drm_mm_insert_node_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment) +{ + struct drm_mm_node_hsw *hole_node; + + hole_node = drm_mm_search_free_generic_hsw(mm, size, alignment, 0, false); + if (!hole_node) + return -ENOSPC; + + drm_mm_insert_helper_hsw(hole_node, node, size, alignment, 0); + + return 0; +} +EXPORT_SYMBOL(drm_mm_insert_node_hsw); + +static void drm_mm_insert_helper_range_hsw(struct drm_mm_node_hsw *hole_node, + struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long color, + unsigned long start, unsigned long end) +{ + struct drm_mm_hsw *mm = hole_node->mm; + unsigned long hole_start = drm_mm_hole_node_start_hsw(hole_node); + unsigned long hole_end = drm_mm_hole_node_end_hsw(hole_node); + unsigned long adj_start = hole_start; + unsigned long adj_end = hole_end; + + BUG_ON(!hole_node->hole_follows || node->allocated); + + if (mm->color_adjust) + mm->color_adjust(hole_node, color, &adj_start, &adj_end); + + if (adj_start < start) + adj_start = start; + + if (alignment) { + unsigned tmp = adj_start % alignment; + if (tmp) + adj_start += alignment - tmp; + } + + if (adj_start == hole_start) { + hole_node->hole_follows = 0; + list_del(&hole_node->hole_stack); + } + + node->start = adj_start; + node->size = size; + node->mm = mm; + node->color = color; + node->allocated = 1; + + INIT_LIST_HEAD(&node->hole_stack); + list_add(&node->node_list, &hole_node->node_list); + + BUG_ON(node->start + node->size > adj_end); + BUG_ON(node->start + node->size > end); + + node->hole_follows = 0; + if (node->start + node->size < hole_end) { + list_add(&node->hole_stack, &mm->hole_stack); + node->hole_follows = 1; + } +} + +struct drm_mm_node_hsw *drm_mm_get_block_range_generic_hsw(struct drm_mm_node_hsw *hole_node, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + int atomic) +{ + struct drm_mm_node_hsw *node; + + node = drm_mm_kmalloc_hsw(hole_node->mm, atomic); + if (unlikely(node == NULL)) + return NULL; + + drm_mm_insert_helper_range_hsw(hole_node, node, size, alignment, color, + start, end); + + return node; +} +EXPORT_SYMBOL(drm_mm_get_block_range_generic_hsw); + +/** + * Search for free space and insert a preallocated memory node. Returns + * -ENOSPC if no suitable free area is available. This is for range + * restricted allocations. The preallocated memory node must be cleared. + */ +int drm_mm_insert_node_in_range_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long start, unsigned long end) +{ + struct drm_mm_node_hsw *hole_node; + + hole_node = drm_mm_search_free_in_range_generic_hsw(mm, size, alignment, 0, + start, end, false); + if (!hole_node) + return -ENOSPC; + + drm_mm_insert_helper_range_hsw(hole_node, node, size, alignment, 0, + start, end); + + return 0; +} +EXPORT_SYMBOL(drm_mm_insert_node_in_range_hsw); + +/** + * Remove a memory node from the allocator. + */ +void drm_mm_remove_node_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + + BUG_ON(node->scanned_block || node->scanned_prev_free + || node->scanned_next_free); + + prev_node = + list_entry(node->node_list.prev, struct drm_mm_node_hsw, node_list); + + if (node->hole_follows) { + BUG_ON(drm_mm_hole_node_start_hsw(node) + == drm_mm_hole_node_end_hsw(node)); + list_del(&node->hole_stack); + } else + BUG_ON(drm_mm_hole_node_start_hsw(node) + != drm_mm_hole_node_end_hsw(node)); + + if (!prev_node->hole_follows) { + prev_node->hole_follows = 1; + list_add(&prev_node->hole_stack, &mm->hole_stack); + } else + list_move(&prev_node->hole_stack, &mm->hole_stack); + + list_del(&node->node_list); + node->allocated = 0; +} +EXPORT_SYMBOL(drm_mm_remove_node_hsw); + +/* + * Remove a memory node from the allocator and free the allocated struct + * drm_mm_node. Only to be used on a struct drm_mm_node_hsw obtained by one of the + * drm_mm_get_block functions. + */ +void drm_mm_put_block_hsw(struct drm_mm_node_hsw *node) +{ + + struct drm_mm_hsw *mm = node->mm; + + drm_mm_remove_node_hsw(node); + + spin_lock(&mm->unused_lock); + if (mm->num_unused < MM_UNUSED_TARGET) { + list_add(&node->node_list, &mm->unused_nodes); + ++mm->num_unused; + } else + kfree(node); + spin_unlock(&mm->unused_lock); +} +EXPORT_SYMBOL(drm_mm_put_block_hsw); + +static int check_free_hole_hsw(unsigned long start, unsigned long end, + unsigned long size, unsigned alignment) +{ + if (end - start < size) + return 0; + + if (alignment) { + unsigned tmp = start % alignment; + if (tmp) + start += alignment - tmp; + } + + return end >= start + size; +} + +struct drm_mm_node_hsw *drm_mm_search_free_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match) +{ + struct drm_mm_node_hsw *entry; + struct drm_mm_node_hsw *best; + unsigned long best_size; + + BUG_ON(mm->scanned_blocks); + + best = NULL; + best_size = ~0UL; + + list_for_each_entry(entry, &mm->hole_stack, hole_stack) { + unsigned long adj_start = drm_mm_hole_node_start_hsw(entry); + unsigned long adj_end = drm_mm_hole_node_end_hsw(entry); + + if (mm->color_adjust) { + mm->color_adjust(entry, color, &adj_start, &adj_end); + if (adj_end <= adj_start) + continue; + } + + BUG_ON(!entry->hole_follows); + if (!check_free_hole_hsw(adj_start, adj_end, size, alignment)) + continue; + + if (!best_match) + return entry; + + if (entry->size < best_size) { + best = entry; + best_size = entry->size; + } + } + + return best; +} +EXPORT_SYMBOL(drm_mm_search_free_generic_hsw); + +struct drm_mm_node_hsw *drm_mm_search_free_in_range_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match) +{ + struct drm_mm_node_hsw *entry; + struct drm_mm_node_hsw *best; + unsigned long best_size; + + BUG_ON(mm->scanned_blocks); + + best = NULL; + best_size = ~0UL; + + list_for_each_entry(entry, &mm->hole_stack, hole_stack) { + unsigned long adj_start = drm_mm_hole_node_start_hsw(entry) < start ? + start : drm_mm_hole_node_start_hsw(entry); + unsigned long adj_end = drm_mm_hole_node_end_hsw(entry) > end ? + end : drm_mm_hole_node_end_hsw(entry); + + BUG_ON(!entry->hole_follows); + + if (mm->color_adjust) { + mm->color_adjust(entry, color, &adj_start, &adj_end); + if (adj_end <= adj_start) + continue; + } + + if (!check_free_hole_hsw(adj_start, adj_end, size, alignment)) + continue; + + if (!best_match) + return entry; + + if (entry->size < best_size) { + best = entry; + best_size = entry->size; + } + } + + return best; +} +EXPORT_SYMBOL(drm_mm_search_free_in_range_generic_hsw); + +/** + * Moves an allocation. To be used with embedded struct drm_mm_node_hsw. + */ +void drm_mm_replace_node_hsw(struct drm_mm_node_hsw *old, struct drm_mm_node_hsw *new) +{ + list_replace(&old->node_list, &new->node_list); + list_replace(&old->hole_stack, &new->hole_stack); + new->hole_follows = old->hole_follows; + new->mm = old->mm; + new->start = old->start; + new->size = old->size; + new->color = old->color; + + old->allocated = 0; + new->allocated = 1; +} +EXPORT_SYMBOL(drm_mm_replace_node_hsw); + +/** + * Initializa lru scanning. + * + * This simply sets up the scanning routines with the parameters for the desired + * hole. + * + * Warning: As long as the scan list is non-empty, no other operations than + * adding/removing nodes to/from the scan list are allowed. + */ +void drm_mm_init_scan_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color) +{ + mm->scan_color = color; + mm->scan_alignment = alignment; + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; + mm->scan_hit_size = 0; + mm->scan_check_range = 0; + mm->prev_scanned_node = NULL; +} +EXPORT_SYMBOL(drm_mm_init_scan_hsw); + +/** + * Initializa lru scanning. + * + * This simply sets up the scanning routines with the parameters for the desired + * hole. This version is for range-restricted scans. + * + * Warning: As long as the scan list is non-empty, no other operations than + * adding/removing nodes to/from the scan list are allowed. + */ +void drm_mm_init_scan_with_range_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end) +{ + mm->scan_color = color; + mm->scan_alignment = alignment; + mm->scan_size = size; + mm->scanned_blocks = 0; + mm->scan_hit_start = 0; + mm->scan_hit_size = 0; + mm->scan_start = start; + mm->scan_end = end; + mm->scan_check_range = 1; + mm->prev_scanned_node = NULL; +} +EXPORT_SYMBOL(drm_mm_init_scan_with_range_hsw); + +/** + * Add a node to the scan list that might be freed to make space for the desired + * hole. + * + * Returns non-zero, if a hole has been found, zero otherwise. + */ +int drm_mm_scan_add_block_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + unsigned long hole_start, hole_end; + unsigned long adj_start; + unsigned long adj_end; + + mm->scanned_blocks++; + + BUG_ON(node->scanned_block); + node->scanned_block = 1; + + prev_node = list_entry(node->node_list.prev, struct drm_mm_node_hsw, + node_list); + + node->scanned_preceeds_hole = prev_node->hole_follows; + prev_node->hole_follows = 1; + list_del(&node->node_list); + node->node_list.prev = &prev_node->node_list; + node->node_list.next = &mm->prev_scanned_node->node_list; + mm->prev_scanned_node = node; + + hole_start = drm_mm_hole_node_start_hsw(prev_node); + hole_end = drm_mm_hole_node_end_hsw(prev_node); + + adj_start = hole_start; + adj_end = hole_end; + + if (mm->color_adjust) + mm->color_adjust(prev_node, mm->scan_color, &adj_start, &adj_end); + + if (mm->scan_check_range) { + if (adj_start < mm->scan_start) + adj_start = mm->scan_start; + if (adj_end > mm->scan_end) + adj_end = mm->scan_end; + } + + if (check_free_hole_hsw(adj_start, adj_end, + mm->scan_size, mm->scan_alignment)) { + mm->scan_hit_start = hole_start; + mm->scan_hit_size = hole_end; + + return 1; + } + + return 0; +} +EXPORT_SYMBOL(drm_mm_scan_add_block_hsw); + +/** + * Remove a node from the scan list. + * + * Nodes _must_ be removed in the exact same order from the scan list as they + * have been added, otherwise the internal state of the memory manager will be + * corrupted. + * + * When the scan list is empty, the selected memory nodes can be freed. An + * immediately following drm_mm_search_free with best_match = 0 will then return + * the just freed block (because its at the top of the free_stack list). + * + * Returns one if this block should be evicted, zero otherwise. Will always + * return zero when no hole has been found. + */ +int drm_mm_scan_remove_block_hsw(struct drm_mm_node_hsw *node) +{ + struct drm_mm_hsw *mm = node->mm; + struct drm_mm_node_hsw *prev_node; + + mm->scanned_blocks--; + + BUG_ON(!node->scanned_block); + node->scanned_block = 0; + + prev_node = list_entry(node->node_list.prev, struct drm_mm_node_hsw, + node_list); + + prev_node->hole_follows = node->scanned_preceeds_hole; + INIT_LIST_HEAD(&node->node_list); + list_add(&node->node_list, &prev_node->node_list); + + /* Only need to check for containement because start&size for the + * complete resulting free block (not just the desired part) is + * stored. */ + if (node->start >= mm->scan_hit_start && + node->start + node->size + <= mm->scan_hit_start + mm->scan_hit_size) { + return 1; + } + + return 0; +} +EXPORT_SYMBOL(drm_mm_scan_remove_block_hsw); + +int drm_mm_clean_hsw(struct drm_mm_hsw * mm) +{ + struct list_head *head = &mm->head_node.node_list; + + return (head->next->next == head); +} +EXPORT_SYMBOL(drm_mm_clean_hsw); + +int drm_mm_init_hsw(struct drm_mm_hsw * mm, unsigned long start, unsigned long size) +{ + INIT_LIST_HEAD(&mm->hole_stack); + INIT_LIST_HEAD(&mm->unused_nodes); + mm->num_unused = 0; + mm->scanned_blocks = 0; + spin_lock_init(&mm->unused_lock); + + /* Clever trick to avoid a special case in the free hole tracking. */ + INIT_LIST_HEAD(&mm->head_node.node_list); + INIT_LIST_HEAD(&mm->head_node.hole_stack); + mm->head_node.hole_follows = 1; + mm->head_node.scanned_block = 0; + mm->head_node.scanned_prev_free = 0; + mm->head_node.scanned_next_free = 0; + mm->head_node.mm = mm; + mm->head_node.start = start + size; + mm->head_node.size = start - mm->head_node.start; + list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack); + + mm->color_adjust = NULL; + + return 0; +} +EXPORT_SYMBOL(drm_mm_init_hsw); + +void drm_mm_takedown_hsw(struct drm_mm_hsw * mm) +{ + struct drm_mm_node_hsw *entry, *next; + + if (!list_empty(&mm->head_node.node_list)) { + DRM_ERROR("Memory manager not clean. Delaying takedown\n"); + return; + } + + spin_lock(&mm->unused_lock); + list_for_each_entry_safe(entry, next, &mm->unused_nodes, node_list) { + list_del(&entry->node_list); + kfree(entry); + --mm->num_unused; + } + spin_unlock(&mm->unused_lock); + + BUG_ON(mm->num_unused != 0); +} +EXPORT_SYMBOL(drm_mm_takedown_hsw); + +void drm_mm_debug_table_hsw(struct drm_mm_hsw *mm, const char *prefix) +{ + struct drm_mm_node_hsw *entry; + unsigned long total_used = 0, total_free = 0, total = 0; + unsigned long hole_start, hole_end, hole_size; + + hole_start = drm_mm_hole_node_start_hsw(&mm->head_node); + hole_end = drm_mm_hole_node_end_hsw(&mm->head_node); + hole_size = hole_end - hole_start; + if (hole_size) + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", + prefix, hole_start, hole_end, + hole_size); + total_free += hole_size; + + drm_mm_hsw_for_each_node(entry, mm) { + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n", + prefix, entry->start, entry->start + entry->size, + entry->size); + total_used += entry->size; + + if (entry->hole_follows) { + hole_start = drm_mm_hole_node_start_hsw(entry); + hole_end = drm_mm_hole_node_end_hsw(entry); + hole_size = hole_end - hole_start; + printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", + prefix, hole_start, hole_end, + hole_size); + total_free += hole_size; + } + } + total = total_free + total_used; + + printk(KERN_DEBUG "%s total: %lu, used %lu free %lu\n", prefix, total, + total_used, total_free); +} +EXPORT_SYMBOL(drm_mm_debug_table_hsw); + +#if defined(CONFIG_DEBUG_FS) +int drm_mm_dump_table_hsw(struct seq_file *m, struct drm_mm_hsw *mm) +{ + struct drm_mm_node_hsw *entry; + unsigned long total_used = 0, total_free = 0, total = 0; + unsigned long hole_start, hole_end, hole_size; + + hole_start = drm_mm_hole_node_start_hsw(&mm->head_node); + hole_end = drm_mm_hole_node_end_hsw(&mm->head_node); + hole_size = hole_end - hole_start; + if (hole_size) + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", + hole_start, hole_end, hole_size); + total_free += hole_size; + + drm_mm_hsw_for_each_node(entry, mm) { + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: used\n", + entry->start, entry->start + entry->size, + entry->size); + total_used += entry->size; + if (entry->hole_follows) { + hole_start = drm_mm_hole_node_start_hsw(entry); + hole_end = drm_mm_hole_node_end_hsw(entry); + hole_size = hole_end - hole_start; + seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", + hole_start, hole_end, hole_size); + total_free += hole_size; + } + } + total = total_free + total_used; + + seq_printf(m, "total: %lu, used %lu free %lu\n", total, total_used, total_free); + return 0; +} +EXPORT_SYMBOL(drm_mm_dump_table_hsw); +#endif --- linux-3.5.0.orig/drivers/gpu/drm/drm_edid.c +++ linux-3.5.0/drivers/gpu/drm/drm_edid.c @@ -373,13 +373,14 @@ * \param adapter : i2c device adaptor * \return 1 on success */ -static bool +bool drm_probe_ddc(struct i2c_adapter *adapter) { unsigned char out; return (drm_do_probe_ddc_edid(adapter, &out, 0, 1) == 0); } +EXPORT_SYMBOL(drm_probe_ddc); /** * drm_get_edid - get EDID data, if available @@ -399,10 +400,7 @@ if (drm_probe_ddc(adapter)) edid = (struct edid *)drm_do_get_edid(connector, adapter); - connector->display_info.raw_edid = (char *)edid; - return edid; - } EXPORT_SYMBOL(drm_get_edid); @@ -1921,7 +1919,8 @@ num_modes += add_cvt_modes(connector, edid); num_modes += add_standard_modes(connector, edid); num_modes += add_established_modes(connector, edid); - num_modes += add_inferred_modes(connector, edid); + if (edid->features & DRM_EDID_FEATURE_DEFAULT_GTF) + num_modes += add_inferred_modes(connector, edid); num_modes += add_cea_modes(connector, edid); if (quirks & (EDID_QUIRK_PREFER_LARGE_60 | EDID_QUIRK_PREFER_LARGE_75)) --- linux-3.5.0.orig/drivers/gpu/drm/mgag200/mgag200_mode.c +++ linux-3.5.0/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -468,10 +468,11 @@ { unsigned int vcomax, vcomin, pllreffreq; unsigned int delta, tmpdelta; - unsigned int testr, testn, testm, testo; + int testr, testn, testm, testo; unsigned int p, m, n; - unsigned int computed; + unsigned int computed, vco; int tmp; + const unsigned int m_div_val[] = { 1, 2, 4, 8 }; m = n = p = 0; vcomax = 1488000; @@ -490,12 +491,13 @@ if (delta == 0) break; for (testo = 5; testo < 33; testo++) { - computed = pllreffreq * (testn + 1) / + vco = pllreffreq * (testn + 1) / (testr + 1); - if (computed < vcomin) + if (vco < vcomin) continue; - if (computed > vcomax) + if (vco > vcomax) continue; + computed = vco / (m_div_val[testm] * (testo + 1)); if (computed > clock) tmpdelta = computed - clock; else @@ -1397,7 +1399,6 @@ if (edid) { drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; kfree(edid); } return ret; --- linux-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_vidi.c @@ -104,7 +104,6 @@ u8 *edid, int len) { struct vidi_context *ctx = get_vidi_context(dev); - struct edid *raw_edid; DRM_DEBUG_KMS("%s\n", __FILE__); @@ -117,18 +116,6 @@ return -EFAULT; } - raw_edid = kzalloc(len, GFP_KERNEL); - if (!raw_edid) { - DRM_DEBUG_KMS("failed to allocate raw_edid.\n"); - return -ENOMEM; - } - - memcpy(raw_edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) - * EDID_LENGTH, len)); - - /* attach the edid data to connector. */ - connector->display_info.raw_edid = (char *)raw_edid; - memcpy(edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) * EDID_LENGTH, len)); --- linux-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_dmabuf.c @@ -199,7 +199,12 @@ /* is it from our device? */ if (obj->dev == drm_dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(obj); + dma_buf_put(dma_buf); return obj; } } --- linux-3.5.0.orig/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ linux-3.5.0/drivers/gpu/drm/exynos/exynos_drm_connector.c @@ -147,9 +147,7 @@ drm_mode_connector_update_edid_property(connector, edid); count = drm_add_edid_modes(connector, edid); - - kfree(connector->display_info.raw_edid); - connector->display_info.raw_edid = edid; + kfree(edid); } else { struct drm_display_mode *mode = drm_mode_create(connector->dev); struct exynos_drm_panel_info *panel; --- linux-3.5.0.orig/drivers/gpu/drm/ttm/ttm_page_alloc.c +++ linux-3.5.0/drivers/gpu/drm/ttm/ttm_page_alloc.c @@ -749,7 +749,10 @@ /* clear the pages coming from the pool if requested */ if (flags & TTM_PAGE_FLAG_ZERO_ALLOC) { list_for_each_entry(p, &plist, lru) { - clear_page(page_address(p)); + if (PageHighMem(p)) + clear_highpage(p); + else + clear_page(page_address(p)); } } --- linux-3.5.0.orig/drivers/gpu/drm/gma500/psb_intel_sdvo.c +++ linux-3.5.0/drivers/gpu/drm/gma500/psb_intel_sdvo.c @@ -1343,7 +1343,6 @@ } } else status = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -1404,7 +1403,6 @@ ret = connector_status_disconnected; else ret = connector_status_connected; - connector->display_info.raw_edid = NULL; kfree(edid); } else ret = connector_status_connected; @@ -1453,7 +1451,6 @@ drm_add_edid_modes(connector, edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } } --- linux-3.5.0.orig/drivers/gpu/drm/gma500/cdv_intel_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/gma500/cdv_intel_hdmi.c @@ -157,8 +157,6 @@ hdmi_priv->has_hdmi_audio = drm_detect_monitor_audio(edid); } - - psb_intel_connector->base.display_info.raw_edid = NULL; kfree(edid); } return status; --- linux-3.5.0.orig/drivers/gpu/drm/gma500/oaktrail_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/gma500/oaktrail_hdmi.c @@ -252,7 +252,6 @@ if (edid) { drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; } /* --- linux-3.5.0.orig/drivers/gpu/drm/gma500/oaktrail_device.c +++ linux-3.5.0/drivers/gpu/drm/gma500/oaktrail_device.c @@ -476,6 +476,7 @@ .pos = DSPAPOS, .surf = DSPASURF, .addr = MRST_DSPABASE, + .base = MRST_DSPABASE, .status = PIPEASTAT, .linoff = DSPALINOFF, .tileoff = DSPATILEOFF, @@ -499,6 +500,7 @@ .pos = DSPBPOS, .surf = DSPBSURF, .addr = DSPBBASE, + .base = DSPBBASE, .status = PIPEBSTAT, .linoff = DSPBLINOFF, .tileoff = DSPBTILEOFF, --- linux-3.5.0.orig/drivers/gpu/drm/gma500/psb_intel_display.c +++ linux-3.5.0/drivers/gpu/drm/gma500/psb_intel_display.c @@ -1362,6 +1362,9 @@ (struct drm_connector **) (psb_intel_crtc + 1); psb_intel_crtc->mode_set.num_connectors = 0; psb_intel_cursor_init(dev, psb_intel_crtc); + + /* Set to true so that the pipe is forced off on initial config. */ + psb_intel_crtc->active = true; } int psb_intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_transfer.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_transfer.c @@ -213,11 +213,12 @@ */ int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, const char *front, char **urb_buf_ptr, - u32 byte_offset, u32 byte_width, + u32 byte_offset, u32 device_byte_offset, + u32 byte_width, int *ident_ptr, int *sent_ptr) { const u8 *line_start, *line_end, *next_pixel; - u32 base16 = 0 + (byte_offset / bpp) * 2; + u32 base16 = 0 + (device_byte_offset / bpp) * 2; struct urb *urb = *urb_ptr; u8 *cmd = *urb_buf_ptr; u8 *cmd_end = (u8 *) urb->transfer_buffer + urb->transfer_buffer_length; --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_drv.h +++ linux-3.5.0/drivers/gpu/drm/udl/udl_drv.h @@ -75,6 +75,8 @@ struct drm_framebuffer base; struct udl_gem_object *obj; bool active_16; /* active on the 16-bit channel */ + int x1, y1, x2, y2; /* dirty rect */ + spinlock_t dirty_lock; }; #define to_udl_fb(x) container_of(x, struct udl_framebuffer, base) @@ -104,7 +106,7 @@ int udl_render_hline(struct drm_device *dev, int bpp, struct urb **urb_ptr, const char *front, char **urb_buf_ptr, - u32 byte_offset, u32 byte_width, + u32 byte_offset, u32 device_byte_offset, u32 byte_width, int *ident_ptr, int *sent_ptr); int udl_dumb_create(struct drm_file *file_priv, --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_connector.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_connector.c @@ -22,13 +22,17 @@ static u8 *udl_get_edid(struct udl_device *udl) { u8 *block; - char rbuf[3]; + char *rbuf; int ret, i; block = kmalloc(EDID_LENGTH, GFP_KERNEL); if (block == NULL) return NULL; + rbuf = kmalloc(2, GFP_KERNEL); + if (rbuf == NULL) + goto error; + for (i = 0; i < EDID_LENGTH; i++) { ret = usb_control_msg(udl->ddev->usbdev, usb_rcvctrlpipe(udl->ddev->usbdev, 0), (0x02), @@ -36,16 +40,17 @@ HZ); if (ret < 1) { DRM_ERROR("Read EDID byte %d failed err %x\n", i, ret); - i--; goto error; } block[i] = rbuf[1]; } + kfree(rbuf); return block; error: kfree(block); + kfree(rbuf); return NULL; } @@ -57,11 +62,16 @@ edid = (struct edid *)udl_get_edid(udl); - connector->display_info.raw_edid = (char *)edid; + /* + * We only read the main block, but if the monitor reports extension + * blocks then the drm edid code expects them to be present, so patch + * the extension count to 0. + */ + edid->checksum += edid->extensions; + edid->extensions = 0; drm_mode_connector_update_edid_property(connector, edid); ret = drm_add_edid_modes(connector, edid); - connector->display_info.raw_edid = NULL; kfree(edid); return ret; } @@ -69,6 +79,13 @@ static int udl_mode_valid(struct drm_connector *connector, struct drm_display_mode *mode) { + struct udl_device *udl = connector->dev->dev_private; + if (!udl->sku_pixel_limit) + return 0; + + if (mode->vdisplay * mode->hdisplay > udl->sku_pixel_limit) + return MODE_VIRTUAL_Y; + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/udl/udl_fb.c +++ linux-3.5.0/drivers/gpu/drm/udl/udl_fb.c @@ -22,9 +22,9 @@ #include "drm_fb_helper.h" -#define DL_DEFIO_WRITE_DELAY 5 /* fb_deferred_io.delay in jiffies */ +#define DL_DEFIO_WRITE_DELAY (HZ/20) /* fb_deferred_io.delay in jiffies */ -static int fb_defio = 1; /* Optionally enable experimental fb_defio mmap support */ +static int fb_defio = 0; /* Optionally enable experimental fb_defio mmap support */ static int fb_bpp = 16; module_param(fb_bpp, int, S_IWUSR | S_IRUSR | S_IWGRP | S_IRGRP); @@ -114,9 +114,10 @@ list_for_each_entry(cur, &fbdefio->pagelist, lru) { if (udl_render_hline(dev, (ufbdev->ufb.base.bits_per_pixel / 8), - &urb, (char *) info->fix.smem_start, - &cmd, cur->index << PAGE_SHIFT, - PAGE_SIZE, &bytes_identical, &bytes_sent)) + &urb, (char *) info->fix.smem_start, + &cmd, cur->index << PAGE_SHIFT, + cur->index << PAGE_SHIFT, + PAGE_SIZE, &bytes_identical, &bytes_sent)) goto error; bytes_rendered += PAGE_SIZE; } @@ -152,6 +153,9 @@ struct urb *urb; int aligned_x; int bpp = (fb->base.bits_per_pixel / 8); + int x2, y2; + bool store_for_later = false; + unsigned long flags; if (!fb->active_16) return 0; @@ -168,8 +172,6 @@ } } - start_cycles = get_cycles(); - aligned_x = DL_ALIGN_DOWN(x, sizeof(unsigned long)); width = DL_ALIGN_UP(width + (x-aligned_x), sizeof(unsigned long)); x = aligned_x; @@ -179,18 +181,53 @@ (y + height > fb->base.height)) return -EINVAL; + /* if we are in atomic just store the info + can't test inside spin lock */ + if (in_atomic()) + store_for_later = true; + + x2 = x + width - 1; + y2 = y + height - 1; + + spin_lock_irqsave(&fb->dirty_lock, flags); + + if (fb->y1 < y) + y = fb->y1; + if (fb->y2 > y2) + y2 = fb->y2; + if (fb->x1 < x) + x = fb->x1; + if (fb->x2 > x2) + x2 = fb->x2; + + if (store_for_later) { + fb->x1 = x; + fb->x2 = x2; + fb->y1 = y; + fb->y2 = y2; + spin_unlock_irqrestore(&fb->dirty_lock, flags); + return 0; + } + + fb->x1 = fb->y1 = INT_MAX; + fb->x2 = fb->y2 = 0; + + spin_unlock_irqrestore(&fb->dirty_lock, flags); + start_cycles = get_cycles(); + urb = udl_get_urb(dev); if (!urb) return 0; cmd = urb->transfer_buffer; - for (i = y; i < y + height ; i++) { + for (i = y; i <= y2 ; i++) { const int line_offset = fb->base.pitches[0] * i; const int byte_offset = line_offset + (x * bpp); - + const int dev_byte_offset = (fb->base.width * bpp * i) + (x * bpp); if (udl_render_hline(dev, bpp, &urb, (char *) fb->obj->vmapping, - &cmd, byte_offset, width * bpp, + &cmd, byte_offset, dev_byte_offset, + (x2 - x + 1) * bpp, &bytes_identical, &bytes_sent)) goto error; } @@ -415,6 +452,7 @@ { int ret; + spin_lock_init(&ufb->dirty_lock); ufb->obj = obj; ret = drm_framebuffer_init(dev, &ufb->base, &udlfb_funcs); drm_helper_mode_fill_fb_struct(&ufb->base, mode_cmd); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_display.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_display.c @@ -141,8 +141,8 @@ .vco = { .min = 1400000, .max = 2800000 }, .n = { .min = 1, .max = 6 }, .m = { .min = 70, .max = 120 }, - .m1 = { .min = 10, .max = 22 }, - .m2 = { .min = 5, .max = 9 }, + .m1 = { .min = 8, .max = 18 }, + .m2 = { .min = 3, .max = 7 }, .p = { .min = 5, .max = 80 }, .p1 = { .min = 1, .max = 8 }, .p2 = { .dot_limit = 200000, @@ -434,7 +434,7 @@ * register is uninitialized. */ val = I915_READ(reg); - if (!(val & ~LVDS_DETECTED)) + if (!(val & ~(LVDS_PIPE_MASK | LVDS_DETECTED))) val = dev_priv->bios_lvds_val; dev_priv->lvds_val = val; } @@ -1238,7 +1238,7 @@ enum pipe pipe, int reg) { u32 val = I915_READ(reg); - WARN(hdmi_pipe_enabled(dev_priv, val, pipe), + WARN(hdmi_pipe_enabled(dev_priv, pipe, val), "PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n", reg, pipe_name(pipe)); } @@ -1255,13 +1255,13 @@ reg = PCH_ADPA; val = I915_READ(reg); - WARN(adpa_pipe_enabled(dev_priv, val, pipe), + WARN(adpa_pipe_enabled(dev_priv, pipe, val), "PCH VGA enabled on transcoder %c, should be disabled\n", pipe_name(pipe)); reg = PCH_LVDS; val = I915_READ(reg); - WARN(lvds_pipe_enabled(dev_priv, val, pipe), + WARN(lvds_pipe_enabled(dev_priv, pipe, val), "PCH LVDS enabled on transcoder %c, should be disabled\n", pipe_name(pipe)); @@ -1723,7 +1723,7 @@ enum pipe pipe, int reg) { u32 val = I915_READ(reg); - if (hdmi_pipe_enabled(dev_priv, val, pipe)) { + if (hdmi_pipe_enabled(dev_priv, pipe, val)) { DRM_DEBUG_KMS("Disabling pch HDMI %x on pipe %d\n", reg, pipe); I915_WRITE(reg, val & ~PORT_ENABLE); @@ -1745,12 +1745,12 @@ reg = PCH_ADPA; val = I915_READ(reg); - if (adpa_pipe_enabled(dev_priv, val, pipe)) + if (adpa_pipe_enabled(dev_priv, pipe, val)) I915_WRITE(reg, val & ~ADPA_DAC_ENABLE); reg = PCH_LVDS; val = I915_READ(reg); - if (lvds_pipe_enabled(dev_priv, val, pipe)) { + if (lvds_pipe_enabled(dev_priv, pipe, val)) { DRM_DEBUG_KMS("disable lvds on pipe %d val 0x%08x\n", pipe, val); I915_WRITE(reg, val & ~LVDS_PORT_EN); POSTING_READ(reg); @@ -2165,18 +2165,6 @@ FDI_FE_ERRC_ENABLE); } -static void cpt_phase_pointer_enable(struct drm_device *dev, int pipe) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - u32 flags = I915_READ(SOUTH_CHICKEN1); - - flags |= FDI_PHASE_SYNC_OVR(pipe); - I915_WRITE(SOUTH_CHICKEN1, flags); /* once to unlock... */ - flags |= FDI_PHASE_SYNC_EN(pipe); - I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to enable */ - POSTING_READ(SOUTH_CHICKEN1); -} - /* The FDI link training functions for ILK/Ibexpeak. */ static void ironlake_fdi_link_train(struct drm_crtc *crtc) { @@ -2327,9 +2315,6 @@ POSTING_READ(reg); udelay(150); - if (HAS_PCH_CPT(dev)) - cpt_phase_pointer_enable(dev, pipe); - for (i = 0; i < 4; i++) { reg = FDI_TX_CTL(pipe); temp = I915_READ(reg); @@ -2456,9 +2441,6 @@ POSTING_READ(reg); udelay(150); - if (HAS_PCH_CPT(dev)) - cpt_phase_pointer_enable(dev, pipe); - for (i = 0; i < 4; i++) { reg = FDI_TX_CTL(pipe); temp = I915_READ(reg); @@ -2572,17 +2554,6 @@ } } -static void cpt_phase_pointer_disable(struct drm_device *dev, int pipe) -{ - struct drm_i915_private *dev_priv = dev->dev_private; - u32 flags = I915_READ(SOUTH_CHICKEN1); - - flags &= ~(FDI_PHASE_SYNC_EN(pipe)); - I915_WRITE(SOUTH_CHICKEN1, flags); /* once to disable... */ - flags &= ~(FDI_PHASE_SYNC_OVR(pipe)); - I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to lock */ - POSTING_READ(SOUTH_CHICKEN1); -} static void ironlake_fdi_disable(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; @@ -2609,11 +2580,6 @@ /* Ironlake workaround, disable clock pointer after downing FDI */ if (HAS_PCH_IBX(dev)) { I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); - I915_WRITE(FDI_RX_CHICKEN(pipe), - I915_READ(FDI_RX_CHICKEN(pipe) & - ~FDI_RX_PHASE_SYNC_POINTER_EN)); - } else if (HAS_PCH_CPT(dev)) { - cpt_phase_pointer_disable(dev, pipe); } /* still set train pattern 1 */ @@ -2641,13 +2607,34 @@ udelay(100); } +static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long flags; + bool pending; + + if (atomic_read(&dev_priv->mm.wedged)) + return false; + + spin_lock_irqsave(&dev->event_lock, flags); + pending = to_intel_crtc(crtc)->unpin_work != NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + return pending; +} + static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) { struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; if (crtc->fb == NULL) return; + wait_event(dev_priv->pending_flip_queue, + !intel_crtc_has_pending_flip(crtc)); + mutex_lock(&dev->struct_mutex); intel_finish_fb(crtc->fb); mutex_unlock(&dev->struct_mutex); @@ -3033,7 +3020,11 @@ * as some pre-programmed values are broken, * e.g. x201. */ - I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); + if (IS_IVYBRIDGE(dev)) + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + else + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); } @@ -3235,6 +3226,7 @@ struct intel_crtc *intel_crtc = to_intel_crtc(crtc); int pipe = intel_crtc->pipe; int plane = intel_crtc->plane; + u32 pctl; if (!intel_crtc->active) return; @@ -3250,6 +3242,13 @@ intel_disable_plane(dev_priv, plane, pipe); intel_disable_pipe(dev_priv, pipe); + + /* Disable pannel fitter if it is on this pipe. */ + pctl = I915_READ(PFIT_CONTROL); + if ((pctl & PFIT_ENABLE) && + ((pctl & PFIT_PIPE_MASK) >> PFIT_PIPE_SHIFT) == pipe) + I915_WRITE(PFIT_CONTROL, 0); + intel_disable_pll(dev_priv, pipe); intel_crtc->active = false; @@ -3581,17 +3580,6 @@ continue; } - if (intel_encoder->type == INTEL_OUTPUT_EDP) { - /* Use VBT settings if we have an eDP panel */ - unsigned int edp_bpc = dev_priv->edp.bpp / 3; - - if (edp_bpc < display_bpc) { - DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); - display_bpc = edp_bpc; - } - continue; - } - /* Not one of the known troublemakers, check the EDID */ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { @@ -3606,6 +3594,17 @@ } } + if (intel_encoder->type == INTEL_OUTPUT_EDP) { + /* Use VBT settings if we have an eDP panel */ + unsigned int edp_bpc = dev_priv->edp.bpp / 3; + + if (edp_bpc && edp_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); + display_bpc = edp_bpc; + } + continue; + } + /* * HDMI is either 12 or 8, so if the display lets 10bpc sneak * through, clamp it down. (Note: >12bpc will be caught below.) @@ -3937,12 +3936,6 @@ POSTING_READ(DPLL(pipe)); udelay(150); - I915_WRITE(DPLL(pipe), dpll); - - /* Wait for the clocks to stabilize. */ - POSTING_READ(DPLL(pipe)); - udelay(150); - /* The LVDS pin pair needs to be on before the DPLLs are enabled. * This is an exception to the general rule that mode_set doesn't turn * things on. @@ -3950,6 +3943,12 @@ if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) intel_update_lvds(crtc, clock, adjusted_mode); + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + /* The pixel multiplier can only be updated once the * DPLL is enabled and the clocks are stable. * @@ -4077,7 +4076,7 @@ /* default to 8bpc */ pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN); if (is_dp) { - if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { pipeconf |= PIPECONF_BPP_6 | PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP; @@ -4454,7 +4453,7 @@ /* determine panel color depth */ temp = I915_READ(PIPECONF(pipe)); temp &= ~PIPE_BPC_MASK; - dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp, mode); + dither = intel_choose_pipe_bpp_dither(crtc, &pipe_bpp, adjusted_mode); switch (pipe_bpp) { case 18: temp |= PIPE_6BPC; @@ -5851,14 +5850,19 @@ { struct intel_unpin_work *work = container_of(__work, struct intel_unpin_work, work); + struct drm_device *dev = work->crtc->dev; - mutex_lock(&work->dev->struct_mutex); + mutex_lock(&dev->struct_mutex); intel_unpin_fb_obj(work->old_fb_obj); drm_gem_object_unreference(&work->pending_flip_obj->base); drm_gem_object_unreference(&work->old_fb_obj->base); - intel_update_fbc(work->dev); - mutex_unlock(&work->dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + BUG_ON(atomic_read(&to_intel_crtc(work->crtc)->unpin_work_count) == 0); + atomic_dec(&to_intel_crtc(work->crtc)->unpin_work_count); + kfree(work); } @@ -5881,11 +5885,18 @@ spin_lock_irqsave(&dev->event_lock, flags); work = intel_crtc->unpin_work; - if (work == NULL || !work->pending) { + + /* Ensure we don't miss a work->pending update ... */ + smp_rmb(); + + if (work == NULL || atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { spin_unlock_irqrestore(&dev->event_lock, flags); return; } + /* and that the unpin work is consistent wrt ->pending. */ + smp_rmb(); + intel_crtc->unpin_work = NULL; if (work->event) { @@ -5927,10 +5938,9 @@ atomic_clear_mask(1 << intel_crtc->plane, &obj->pending_flip.counter); - if (atomic_read(&obj->pending_flip) == 0) - wake_up(&dev_priv->pending_flip_queue); + wake_up(&dev_priv->pending_flip_queue); - schedule_work(&work->work); + queue_work(dev_priv->wq, &work->work); trace_i915_flip_complete(intel_crtc->plane, work->pending_flip_obj); } @@ -5958,16 +5968,25 @@ to_intel_crtc(dev_priv->plane_to_crtc_mapping[plane]); unsigned long flags; + /* NB: An MMIO update of the plane base pointer will also + * generate a page-flip completion irq, i.e. every modeset + * is also accompanied by a spurious intel_prepare_page_flip(). + */ spin_lock_irqsave(&dev->event_lock, flags); - if (intel_crtc->unpin_work) { - if ((++intel_crtc->unpin_work->pending) > 1) - DRM_ERROR("Prepared flip multiple times\n"); - } else { - DRM_DEBUG_DRIVER("preparing flip with no unpin work?\n"); - } + if (intel_crtc->unpin_work) + atomic_inc_not_zero(&intel_crtc->unpin_work->pending); spin_unlock_irqrestore(&dev->event_lock, flags); } +inline static void intel_mark_page_flip_active(struct intel_crtc *intel_crtc) +{ + /* Ensure that the work item is consistent when activating it ... */ + smp_wmb(); + atomic_set(&intel_crtc->unpin_work->pending, INTEL_FLIP_PENDING); + /* and that it is marked active as soon as the irq could fire. */ + smp_wmb(); +} + static int intel_gen2_queue_flip(struct drm_device *dev, struct drm_crtc *crtc, struct drm_framebuffer *fb, @@ -6005,6 +6024,8 @@ intel_ring_emit(ring, fb->pitches[0]); intel_ring_emit(ring, obj->gtt_offset + offset); intel_ring_emit(ring, 0); /* aux display base address, unused */ + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6049,6 +6070,7 @@ intel_ring_emit(ring, obj->gtt_offset + offset); intel_ring_emit(ring, MI_NOOP); + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6093,6 +6115,8 @@ pf = 0; pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6135,6 +6159,8 @@ pf = 0; pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; intel_ring_emit(ring, pf | pipesrc); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6178,7 +6204,7 @@ default: WARN_ONCE(1, "unknown plane in flip command\n"); ret = -ENODEV; - goto err; + goto err_unpin; } ret = intel_ring_begin(ring, 4); @@ -6189,6 +6215,8 @@ intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); intel_ring_emit(ring, (obj->gtt_offset)); intel_ring_emit(ring, (MI_NOOP)); + + intel_mark_page_flip_active(intel_crtc); intel_ring_advance(ring); return 0; @@ -6224,7 +6252,7 @@ return -ENOMEM; work->event = event; - work->dev = crtc->dev; + work->crtc = crtc; intel_fb = to_intel_framebuffer(crtc->fb); work->old_fb_obj = intel_fb->obj; INIT_WORK(&work->work, intel_unpin_work_fn); @@ -6249,6 +6277,9 @@ intel_fb = to_intel_framebuffer(fb); obj = intel_fb->obj; + if (atomic_read(&intel_crtc->unpin_work_count) >= 2) + flush_workqueue(dev_priv->wq); + mutex_lock(&dev->struct_mutex); /* Reference the objects for the scheduled work. */ @@ -6265,6 +6296,7 @@ * the flip occurs and the object is no longer visible. */ atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_inc(&intel_crtc->unpin_work_count); ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); if (ret) @@ -6279,6 +6311,7 @@ return 0; cleanup_pending: + atomic_dec(&intel_crtc->unpin_work_count); atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); drm_gem_object_unreference(&work->old_fb_obj->base); drm_gem_object_unreference(&obj->base); @@ -6844,6 +6877,13 @@ DRM_INFO("applying inverted panel brightness quirk\n"); } +static void quirk_rc6_force_disable(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_RC6_DISABLE; + DRM_INFO("applying RC6 disable quirk\n"); +} + struct intel_quirk { int device; int subsystem_vendor; @@ -6879,6 +6919,15 @@ /* Acer Aspire 5734Z must invert backlight brightness */ { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness }, + + /* Asus ET2012E may fail to resume from S3 if RC6 is enabled */ + { 0x0102, 0x1043, 0x844d, quirk_rc6_force_disable }, + + /* Lenovo ThinkCentre S510 may hang after idle for a long time */ + { 0x0102, 0x17aa, 0x307b, quirk_rc6_force_disable }, + + /* Acer Aspire 4736Z */ + { 0x2a42, 0x1025, 0x0260, quirk_invert_brightness }, }; static void intel_init_quirks(struct drm_device *dev) @@ -6925,6 +6974,8 @@ { struct drm_i915_private *dev_priv = dev->dev_private; + intel_prepare_ddi(dev); + intel_init_clock_gating(dev); if (IS_IRONLAKE_M(dev)) { @@ -6939,6 +6990,23 @@ } } +void i915_redisable_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 vga_reg; + + if (HAS_PCH_SPLIT(dev)) + vga_reg = CPU_VGACNTRL; + else + vga_reg = VGACNTRL; + + if (I915_READ(vga_reg) != VGA_DISP_DISABLE) { + DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n"); + I915_WRITE(vga_reg, VGA_DISP_DISABLE); + POSTING_READ(vga_reg); + } +} + void intel_modeset_init(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -6958,8 +7026,6 @@ intel_init_pm(dev); - intel_prepare_ddi(dev); - intel_init_display(dev); if (IS_GEN2(dev)) { @@ -6972,7 +7038,7 @@ dev->mode_config.max_width = 8192; dev->mode_config.max_height = 8192; } - dev->mode_config.fb_base = dev->agp->base; + dev->mode_config.fb_base = dev_priv->mm.gtt_base_addr; DRM_DEBUG_KMS("%d display pipe%s available.\n", dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : ""); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_fb.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_fb.c @@ -140,7 +140,9 @@ info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset; info->fix.smem_len = size; - info->screen_base = ioremap_wc(dev->agp->base + obj->gtt_offset, size); + info->screen_base = + ioremap_wc(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + size); if (!info->screen_base) { ret = -ENOSPC; goto out_unpin; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_reg.h +++ linux-3.5.0/drivers/gpu/drm/i915/i915_reg.h @@ -115,6 +115,7 @@ #define GEN6_PTE_VALID (1 << 0) #define GEN6_PTE_UNCACHED (1 << 1) +#define HSW_PTE_UNCACHED (0) #define GEN6_PTE_CACHE_LLC (2 << 1) #define GEN6_PTE_CACHE_LLC_MLC (3 << 1) #define GEN6_PTE_CACHE_BITS (3 << 1) @@ -501,6 +502,7 @@ * the enables for writing to the corresponding low bit. */ #define _3D_CHICKEN 0x02084 +#define _3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB (1 << 10) #define _3D_CHICKEN2 0x0208c /* Disables pipelining of read flushes past the SF-WIZ interface. * Required on all Ironlake steppings according to the B-Spec, but the @@ -508,11 +510,15 @@ */ # define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14) #define _3D_CHICKEN3 0x02090 -#define _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL (1 << 5) +#define _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL (1 << 5) #define MI_MODE 0x0209c # define VS_TIMER_DISPATCH (1 << 6) # define MI_FLUSH_ENABLE (1 << 12) +# define ASYNC_FLIP_PERF_DISABLE (1 << 14) + +#define GEN6_GT_MODE 0x20d0 +#define GEN6_GT_MODE_HI (1 << 9) #define GFX_MODE 0x02520 #define GFX_MODE_GEN7 0x0229c @@ -1453,6 +1459,10 @@ #define DDRMPLL1 0X12c20 #define PEG_BAND_GAP_DATA 0x14d68 +#define GEN6_GT_THREAD_STATUS_REG 0x13805c +#define GEN6_GT_THREAD_STATUS_CORE_MASK 0x7 +#define GEN6_GT_THREAD_STATUS_CORE_MASK_HSW (0x7 | (0x07 << 16)) + #define GEN6_GT_PERF_STATUS 0x145948 #define GEN6_RP_STATE_LIMITS 0x145994 #define GEN6_RP_STATE_CAP 0x145998 @@ -1704,6 +1714,10 @@ /* Video Data Island Packet control */ #define VIDEO_DIP_DATA 0x61178 +/* Read the description of VIDEO_DIP_DATA (before Haswel) or VIDEO_DIP_ECC + * (Haswell and newer) to see which VIDEO_DIP_DATA byte corresponds to each byte + * of the infoframe structure specified by CEA-861. */ +#define VIDEO_DIP_DATA_SIZE 32 #define VIDEO_DIP_CTL 0x61170 /* Pre HSW: */ #define VIDEO_DIP_ENABLE (1 << 31) @@ -3179,6 +3193,8 @@ #define _PFA_CTL_1 0x68080 #define _PFB_CTL_1 0x68880 #define PF_ENABLE (1<<31) +#define PF_PIPE_SEL_MASK_IVB (3<<29) +#define PF_PIPE_SEL_IVB(pipe) ((pipe)<<29) #define PF_FILTER_MASK (3<<23) #define PF_FILTER_PROGRAMMED (0<<23) #define PF_FILTER_MED_3x3 (1<<23) @@ -3992,6 +4008,7 @@ #define FORCEWAKE 0xA18C #define FORCEWAKE_VLV 0x1300b0 #define FORCEWAKE_ACK_VLV 0x1300b4 +#define FORCEWAKE_ACK_HSW 0x130044 #define FORCEWAKE_ACK 0x130090 #define FORCEWAKE_MT 0xa188 /* multi-threaded */ #define FORCEWAKE_MT_ACK 0x130040 @@ -4034,7 +4051,9 @@ #define GEN6_RP_INTERRUPT_LIMITS 0xA014 #define GEN6_RPSTAT1 0xA01C #define GEN6_CAGF_SHIFT 8 +#define HSW_CAGF_SHIFT 7 #define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT) +#define HSW_CAGF_MASK (0x7f << HSW_CAGF_SHIFT) #define GEN6_RP_CONTROL 0xA024 #define GEN6_RP_MEDIA_TURBO (1<<11) #define GEN6_RP_MEDIA_MODE_MASK (3<<9) @@ -4047,6 +4066,7 @@ #define GEN6_RP_UP_IDLE_MIN (0x1<<3) #define GEN6_RP_UP_BUSY_AVG (0x2<<3) #define GEN6_RP_UP_BUSY_CONT (0x4<<3) +#define GEN7_RP_DOWN_IDLE_AVG (0x2<<0) #define GEN6_RP_DOWN_IDLE_CONT (0x1<<0) #define GEN6_RP_UP_THRESHOLD 0xA02C #define GEN6_RP_DOWN_THRESHOLD 0xA030 @@ -4111,6 +4131,26 @@ #define GEN6_RC6 3 #define GEN6_RC7 4 +#define GEN7_MISCCPCTL (0x9424) +#define GEN7_DOP_CLOCK_GATE_ENABLE (1<<0) + +/* IVYBRIDGE DPF */ +#define GEN7_L3CDERRST1 0xB008 /* L3CD Error Status 1 */ +#define GEN7_L3CDERRST1_ROW_MASK (0x7ff<<14) +#define GEN7_PARITY_ERROR_VALID (1<<13) +#define GEN7_L3CDERRST1_BANK_MASK (3<<11) +#define GEN7_L3CDERRST1_SUBBANK_MASK (7<<8) +#define GEN7_PARITY_ERROR_ROW(reg) \ + ((reg & GEN7_L3CDERRST1_ROW_MASK) >> 14) +#define GEN7_PARITY_ERROR_BANK(reg) \ + ((reg & GEN7_L3CDERRST1_BANK_MASK) >> 11) +#define GEN7_PARITY_ERROR_SUBBANK(reg) \ + ((reg & GEN7_L3CDERRST1_SUBBANK_MASK) >> 8) +#define GEN7_L3CDERRST1_ENABLE (1<<7) + +#define GEN7_L3LOG_BASE 0xB070 +#define GEN7_L3LOG_SIZE 0x80 + #define G4X_AUD_VID_DID 0x62020 #define INTEL_AUDIO_DEVCL 0x808629FB #define INTEL_AUDIO_DEVBLC 0x80862801 @@ -4177,7 +4217,7 @@ PIPE_DDI_FUNC_CTL_B) #define PIPE_DDI_FUNC_ENABLE (1<<31) /* Those bits are ignored by pipe EDP since it can only connect to DDI A */ -#define PIPE_DDI_PORT_MASK (0xf<<28) +#define PIPE_DDI_PORT_MASK (7<<28) #define PIPE_DDI_SELECT_PORT(x) ((x)<<28) #define PIPE_DDI_MODE_SELECT_HDMI (0<<24) #define PIPE_DDI_MODE_SELECT_DVI (1<<24) @@ -4347,4 +4387,9 @@ #define SFUSE_STRAP_DDIC_DETECTED (1<<1) #define SFUSE_STRAP_DDID_DETECTED (1<<0) +#define WM_DBG 0x45280 +#define WM_DBG_DISALLOW_MULTIPLE_LP (1<<0) +#define WM_DBG_DISALLOW_MAXFIFO (1<<1) +#define WM_DBG_DISALLOW_SPRITE (1<<2) + #endif /* _I915_REG_H_ */ --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_irq.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_irq.c @@ -375,6 +375,86 @@ mutex_unlock(&dev_priv->dev->struct_mutex); } + +/** + * ivybridge_parity_work - Workqueue called when a parity error interrupt + * occurred. + * @work: workqueue struct + * + * Doesn't actually do anything except notify userspace. As a consequence of + * this event, userspace should try to remap the bad rows since statistically + * it is likely the same row is more likely to go bad again. + */ +static void ivybridge_parity_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + parity_error_work); + u32 error_status, row, bank, subbank; + char *parity_event[5]; + uint32_t misccpctl; + unsigned long flags; + + /* We must turn off DOP level clock gating to access the L3 registers. + * In order to prevent a get/put style interface, acquire struct mutex + * any time we access those registers. + */ + mutex_lock(&dev_priv->dev->struct_mutex); + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + error_status = I915_READ(GEN7_L3CDERRST1); + row = GEN7_PARITY_ERROR_ROW(error_status); + bank = GEN7_PARITY_ERROR_BANK(error_status); + subbank = GEN7_PARITY_ERROR_SUBBANK(error_status); + + I915_WRITE(GEN7_L3CDERRST1, GEN7_PARITY_ERROR_VALID | + GEN7_L3CDERRST1_ENABLE); + POSTING_READ(GEN7_L3CDERRST1); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask &= ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + mutex_unlock(&dev_priv->dev->struct_mutex); + + parity_event[0] = "L3_PARITY_ERROR=1"; + parity_event[1] = kasprintf(GFP_KERNEL, "ROW=%d", row); + parity_event[2] = kasprintf(GFP_KERNEL, "BANK=%d", bank); + parity_event[3] = kasprintf(GFP_KERNEL, "SUBBANK=%d", subbank); + parity_event[4] = NULL; + + kobject_uevent_env(&dev_priv->dev->primary->kdev.kobj, + KOBJ_CHANGE, parity_event); + + DRM_DEBUG("Parity error: Row = %d, Bank = %d, Sub bank = %d.\n", + row, bank, subbank); + + kfree(parity_event[3]); + kfree(parity_event[2]); + kfree(parity_event[1]); +} + +static void ivybridge_handle_parity_error(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long flags; + + if (!IS_IVYBRIDGE(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask |= GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + queue_work(dev_priv->wq, &dev_priv->parity_error_work); +} + static void snb_gt_irq_handler(struct drm_device *dev, struct drm_i915_private *dev_priv, u32 gt_iir) @@ -394,6 +474,9 @@ DRM_ERROR("GT error interrupt 0x%08x\n", gt_iir); i915_handle_error(dev, false); } + + if (gt_iir & GT_GEN7_L3_PARITY_ERROR_INTERRUPT) + ivybridge_handle_parity_error(dev); } static void gen6_queue_rps_work(struct drm_i915_private *dev_priv, @@ -605,12 +688,12 @@ intel_opregion_gse_intr(dev); for (i = 0; i < 3; i++) { + if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) + drm_handle_vblank(dev, i); if (de_iir & (DE_PLANEA_FLIP_DONE_IVB << (5 * i))) { intel_prepare_page_flip(dev, i); intel_finish_page_flip_plane(dev, i); } - if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) - drm_handle_vblank(dev, i); } /* check event from PCH */ @@ -692,6 +775,12 @@ if (de_iir & DE_GSE) intel_opregion_gse_intr(dev); + if (de_iir & DE_PIPEA_VBLANK) + drm_handle_vblank(dev, 0); + + if (de_iir & DE_PIPEB_VBLANK) + drm_handle_vblank(dev, 1); + if (de_iir & DE_PLANEA_FLIP_DONE) { intel_prepare_page_flip(dev, 0); intel_finish_page_flip_plane(dev, 0); @@ -702,12 +791,6 @@ intel_finish_page_flip_plane(dev, 1); } - if (de_iir & DE_PIPEA_VBLANK) - drm_handle_vblank(dev, 0); - - if (de_iir & DE_PIPEB_VBLANK) - drm_handle_vblank(dev, 1); - /* check event from PCH */ if (de_iir & DE_PCH_EVENT) { if (pch_iir & hotplug_mask) @@ -1336,7 +1419,9 @@ spin_lock_irqsave(&dev->event_lock, flags); work = intel_crtc->unpin_work; - if (work == NULL || work->pending || !work->enable_stall_check) { + if (work == NULL || + atomic_read(&work->pending) >= INTEL_FLIP_COMPLETE || + !work->enable_stall_check) { /* Either the pending flip IRQ arrived, or we're too early. Don't check */ spin_unlock_irqrestore(&dev->event_lock, flags); return; @@ -1648,7 +1733,6 @@ atomic_set(&dev_priv->irq_received, 0); - I915_WRITE(HWSTAM, 0xeffe); /* XXX hotplug from PCH */ @@ -1811,13 +1895,13 @@ DE_PIPEA_VBLANK_IVB); POSTING_READ(DEIER); - dev_priv->gt_irq_mask = ~0; + dev_priv->gt_irq_mask = ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; I915_WRITE(GTIIR, I915_READ(GTIIR)); I915_WRITE(GTIMR, dev_priv->gt_irq_mask); render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | - GEN6_BLITTER_USER_INTERRUPT; + GEN6_BLITTER_USER_INTERRUPT | GT_GEN7_L3_PARITY_ERROR_INTERRUPT; I915_WRITE(GTIER, render_irqs); POSTING_READ(GTIER); @@ -2575,6 +2659,7 @@ INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); INIT_WORK(&dev_priv->error_work, i915_error_work_func); INIT_WORK(&dev_priv->rps_work, gen6_pm_rps_work); + INIT_WORK(&dev_priv->parity_error_work, ivybridge_parity_work); dev->driver->get_vblank_counter = i915_get_vblank_counter; dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ @@ -2626,9 +2711,6 @@ dev->driver->irq_handler = i8xx_irq_handler; dev->driver->irq_uninstall = i8xx_irq_uninstall; } else if (INTEL_INFO(dev)->gen == 3) { - /* IIR "flip pending" means done if this bit is set */ - I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); - dev->driver->irq_preinstall = i915_irq_preinstall; dev->driver->irq_postinstall = i915_irq_postinstall; dev->driver->irq_uninstall = i915_irq_uninstall; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_sysfs.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_sysfs.c @@ -29,8 +29,10 @@ #include #include #include +#include "intel_drv.h" #include "i915_drv.h" +#ifdef CONFIG_PM static u32 calc_residency(struct drm_device *dev, const u32 reg) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -92,20 +94,147 @@ .attrs = rc6_attrs }; +static int l3_access_valid(struct drm_device *dev, loff_t offset) +{ + if (!IS_IVYBRIDGE(dev)) + return -EPERM; + + if (offset % 4 != 0) + return -EINVAL; + + if (offset >= GEN7_L3LOG_SIZE) + return -ENXIO; + + return 0; +} + +static ssize_t +i915_l3_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + uint32_t misccpctl; + int i, ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + + for (i = offset; count >= 4 && i < GEN7_L3LOG_SIZE; i += 4, count -= 4) + *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + i); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + mutex_unlock(&drm_dev->struct_mutex); + + return i - offset; +} + +static ssize_t +i915_l3_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + u32 *temp = NULL; /* Just here to make handling failures easy */ + int ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + if (!dev_priv->mm.l3_remap_info) { + temp = kzalloc(GEN7_L3LOG_SIZE, GFP_KERNEL); + if (!temp) { + mutex_unlock(&drm_dev->struct_mutex); + return -ENOMEM; + } + } + + ret = i915_gpu_idle(drm_dev); + if (ret) { + kfree(temp); + mutex_unlock(&drm_dev->struct_mutex); + return ret; + } + + /* TODO: Ideally we really want a GPU reset here to make sure errors + * aren't propagated. Since I cannot find a stable way to reset the GPU + * at this point it is left as a TODO. + */ + if (temp) + dev_priv->mm.l3_remap_info = temp; + + memcpy(dev_priv->mm.l3_remap_info + (offset/4), + buf + (offset/4), + count); + + i915_gem_l3_remap(drm_dev); + + mutex_unlock(&drm_dev->struct_mutex); + + return count; +} + +static struct bin_attribute dpf_attrs = { + .attr = {.name = "l3_parity", .mode = (S_IRUSR | S_IWUSR)}, + .size = GEN7_L3LOG_SIZE, + .read = i915_l3_read, + .write = i915_l3_write, + .mmap = NULL +}; + void i915_setup_sysfs(struct drm_device *dev) { int ret; - /* ILK doesn't have any residency information */ + /* ILK and below don't yet have relevant sysfs files */ if (INTEL_INFO(dev)->gen < 6) return; ret = sysfs_merge_group(&dev->primary->kdev.kobj, &rc6_attr_group); if (ret) - DRM_ERROR("sysfs setup failed\n"); + DRM_ERROR("RC6 residency sysfs setup failed\n"); + + if (!IS_IVYBRIDGE(dev)) + return; + + ret = device_create_bin_file(&dev->primary->kdev, &dpf_attrs); + if (ret) + DRM_ERROR("l3 parity sysfs setup failed\n"); } void i915_teardown_sysfs(struct drm_device *dev) { + device_remove_bin_file(&dev->primary->kdev, &dpf_attrs); sysfs_unmerge_group(&dev->primary->kdev.kobj, &rc6_attr_group); } +#else +void i915_setup_sysfs(struct drm_device *dev) +{ + return; +} + +void i915_teardown_sysfs(struct drm_device *dev) +{ + return; +} +#endif /* CONFIG_PM */ --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_modes.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_modes.c @@ -61,6 +61,24 @@ } /** + * intel_connector_update_modes - update connector from edid + * @connector: DRM connector device to use + * @edid: previously read EDID information + */ +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid) +{ + int ret; + + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + drm_edid_to_eld(connector, edid); + kfree(edid); + + return ret; +} + +/** * intel_ddc_get_modes - get modelist from monitor * @connector: DRM connector device to use * @adapter: i2c adapter @@ -71,18 +89,12 @@ struct i2c_adapter *adapter) { struct edid *edid; - int ret = 0; edid = drm_get_edid(connector, adapter); - if (edid) { - drm_mode_connector_update_edid_property(connector, edid); - ret = drm_add_edid_modes(connector, edid); - drm_edid_to_eld(connector, edid); - connector->display_info.raw_edid = NULL; - kfree(edid); - } + if (!edid) + return 0; - return ret; + return intel_connector_update_modes(connector, edid); } static const struct drm_prop_enum_list force_audio_names[] = { --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_drv.h +++ linux-3.5.0/drivers/gpu/drm/i915/intel_drv.h @@ -176,6 +176,8 @@ struct intel_unpin_work *unpin_work; int fdi_lanes; + atomic_t unpin_work_count; + struct drm_i915_gem_object *cursor_bo; uint32_t cursor_addr; int16_t cursor_x, cursor_y; @@ -319,11 +321,14 @@ struct intel_unpin_work { struct work_struct work; - struct drm_device *dev; + struct drm_crtc *crtc; struct drm_i915_gem_object *old_fb_obj; struct drm_i915_gem_object *pending_flip_obj; struct drm_pending_vblank_event *event; - int pending; + atomic_t pending; +#define INTEL_FLIP_INACTIVE 0 +#define INTEL_FLIP_PENDING 1 +#define INTEL_FLIP_COMPLETE 2 bool enable_stall_check; }; @@ -334,6 +339,8 @@ int interval; }; +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid); int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); extern bool intel_ddc_probe(struct intel_encoder *intel_encoder, int ddc_bus); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_sdvo_regs.h +++ linux-3.5.0/drivers/gpu/drm/i915/intel_sdvo_regs.h @@ -708,6 +708,8 @@ #define SDVO_CMD_SET_AUDIO_STAT 0x91 #define SDVO_CMD_GET_AUDIO_STAT 0x92 #define SDVO_CMD_SET_HBUF_INDEX 0x93 + #define SDVO_HBUF_INDEX_ELD 0 + #define SDVO_HBUF_INDEX_AVI_IF 1 #define SDVO_CMD_GET_HBUF_INDEX 0x94 #define SDVO_CMD_GET_HBUF_INFO 0x95 #define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96 --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_dp.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_dp.c @@ -726,8 +726,8 @@ bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24; mode_rate = intel_dp_link_required(mode->clock, bpp); - for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { - for (clock = 0; clock <= max_clock; clock++) { + for (clock = 0; clock <= max_clock; clock++) { + for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count); if (mode_rate <= link_avail) { @@ -1171,10 +1171,14 @@ WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); pp = ironlake_get_pp_control(dev_priv); - pp &= ~(POWER_TARGET_ON | PANEL_POWER_RESET | EDP_BLC_ENABLE); + /* We need to switch off panel power _and_ force vdd, for otherwise some + * panels get very unhappy and cease to work. */ + pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); I915_WRITE(PCH_PP_CONTROL, pp); POSTING_READ(PCH_PP_CONTROL); + intel_dp->want_panel_vdd = false; + ironlake_wait_panel_off(intel_dp); } @@ -1284,11 +1288,9 @@ * ensure that we have vdd while we switch off the panel. */ ironlake_edp_panel_vdd_on(intel_dp); ironlake_edp_backlight_off(intel_dp); - ironlake_edp_panel_off(intel_dp); - intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + ironlake_edp_panel_off(intel_dp); intel_dp_link_down(intel_dp); - ironlake_edp_panel_vdd_off(intel_dp, false); } static void intel_dp_commit(struct drm_encoder *encoder) @@ -1323,11 +1325,9 @@ /* Switching the panel off requires vdd. */ ironlake_edp_panel_vdd_on(intel_dp); ironlake_edp_backlight_off(intel_dp); - ironlake_edp_panel_off(intel_dp); - intel_dp_sink_dpms(intel_dp, mode); + ironlake_edp_panel_off(intel_dp); intel_dp_link_down(intel_dp); - ironlake_edp_panel_vdd_off(intel_dp, false); if (is_cpu_edp(intel_dp)) ironlake_edp_pll_off(encoder); @@ -1768,7 +1768,7 @@ for (i = 0; i < intel_dp->lane_count; i++) if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) break; - if (i == intel_dp->lane_count) { + if (i == intel_dp->lane_count && voltage_tries == 5) { ++loop_tries; if (loop_tries == 5) { DRM_DEBUG_KMS("too many full retries, give up\n"); @@ -1922,7 +1922,7 @@ DP |= DP_LINK_TRAIN_OFF; } - if (!HAS_PCH_CPT(dev) && + if (HAS_PCH_IBX(dev) && I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) { struct drm_crtc *crtc = intel_dp->base.base.crtc; @@ -2159,7 +2159,6 @@ ret = drm_add_edid_modes(connector, intel_dp->edid); drm_edid_to_eld(connector, intel_dp->edid); - connector->display_info.raw_edid = NULL; return intel_dp->edid_mode_count; } @@ -2205,7 +2204,6 @@ edid = intel_dp_get_edid(connector, &intel_dp->adapter); if (edid) { intel_dp->has_audio = drm_detect_monitor_audio(edid); - connector->display_info.raw_edid = NULL; kfree(edid); } } @@ -2270,8 +2268,6 @@ edid = intel_dp_get_edid(connector, &intel_dp->adapter); if (edid) { has_audio = drm_detect_monitor_audio(edid); - - connector->display_info.raw_edid = NULL; kfree(edid); } --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_drv.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_drv.c @@ -351,13 +351,9 @@ INTEL_VGA_DEVICE(0x0162, &intel_ivybridge_d_info), /* GT2 desktop */ INTEL_VGA_DEVICE(0x015a, &intel_ivybridge_d_info), /* GT1 server */ INTEL_VGA_DEVICE(0x016a, &intel_ivybridge_d_info), /* GT2 server */ - INTEL_VGA_DEVICE(0x0402, &intel_haswell_d_info), /* GT1 desktop */ - INTEL_VGA_DEVICE(0x0412, &intel_haswell_d_info), /* GT2 desktop */ - INTEL_VGA_DEVICE(0x040a, &intel_haswell_d_info), /* GT1 server */ - INTEL_VGA_DEVICE(0x041a, &intel_haswell_d_info), /* GT2 server */ - INTEL_VGA_DEVICE(0x0406, &intel_haswell_m_info), /* GT1 mobile */ - INTEL_VGA_DEVICE(0x0416, &intel_haswell_m_info), /* GT2 mobile */ - INTEL_VGA_DEVICE(0x0c16, &intel_haswell_d_info), /* SDV */ + INTEL_VGA_DEVICE(0x0f30, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0157, &intel_valleyview_m_info), + INTEL_VGA_DEVICE(0x0155, &intel_valleyview_d_info), {0, 0, 0} }; @@ -429,36 +425,68 @@ return 1; } +static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv) +{ + u32 gt_thread_status_mask; + + if (IS_HASWELL(dev_priv->dev)) + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK_HSW; + else + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK; + + /* w/a for a sporadic read returning 0 by waiting for the GT + * thread to wake up. + */ + if (wait_for_atomic_us((I915_READ_NOTRACE(GEN6_GT_THREAD_STATUS_REG) & gt_thread_status_mask) == 0, 500)) + DRM_ERROR("GT thread status wait timed out\n"); +} + void __gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) { int count; + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_ACK; count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1)) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1)) udelay(10); I915_WRITE_NOTRACE(FORCEWAKE, 1); POSTING_READ(FORCEWAKE); count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1) == 0) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv) { int count; + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_MT_ACK; count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1)) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1)) udelay(10); I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_ENABLE(1)); POSTING_READ(FORCEWAKE_MT); count = 0; - while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_MT_ACK) & 1) == 0) + while (count++ < 50 && (I915_READ_NOTRACE(forcewake_ack) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } /* @@ -549,6 +577,8 @@ count = 0; while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1) == 0) udelay(10); + + __gen6_gt_wait_for_thread_c0(dev_priv); } void vlv_force_wake_put(struct drm_i915_private *dev_priv) @@ -925,10 +955,12 @@ return 0; } - static int __devinit i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { + struct intel_device_info *intel_info = + (struct intel_device_info *) ent->driver_data; + /* Only bind to function 0 of the device. Early generations * used function 1 as a placeholder for multi-head. This causes * us confusion instead, especially on the systems where both @@ -937,6 +969,18 @@ if (PCI_FUNC(pdev->devfn)) return -ENODEV; + /* We've managed to ship a kms-enabled ddx that shipped with an XvMC + * implementation for gen3 (and only gen3) that used legacy drm maps + * (gasp!) to share buffers between X and the client. Hence we need to + * keep around the fake agp stuff for gen3, even when kms is enabled. */ + if (intel_info->gen != 3) { + driver.driver_features &= + ~(DRIVER_USE_AGP | DRIVER_REQUIRE_AGP); + } else if (!intel_agp_enabled) { + DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); + return -ENODEV; + } + return drm_get_pci_dev(pdev, ent, &driver); } @@ -1097,11 +1141,6 @@ static int __init i915_init(void) { - if (!intel_agp_enabled) { - DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); - return -ENODEV; - } - driver.num_ioctls = i915_max_ioctl; /* --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_debug.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_debug.c @@ -132,7 +132,8 @@ __func__, obj, obj->gtt_offset, handle, obj->size / 1024); - gtt_mapping = ioremap(dev->agp->base + obj->gtt_offset, obj->base.size); + gtt_mapping = ioremap(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + obj->base.size); if (gtt_mapping == NULL) { DRM_ERROR("failed to map GTT space\n"); return; --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_overlay.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_overlay.c @@ -431,9 +431,17 @@ intel_ring_emit(ring, flip_addr); intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); /* turn overlay off */ - intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); - intel_ring_emit(ring, flip_addr); - intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + if (IS_I830(dev)) { + /* Workaround: Don't disable the overlay fully, since otherwise + * it dies on the next OVERLAY_ON cmd. */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + } else { + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + } intel_ring_advance(ring); return intel_overlay_do_wait_request(overlay, request, --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_dmabuf.c @@ -169,8 +169,7 @@ { struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); - return dma_buf_export(obj, &i915_dmabuf_ops, - obj->base.size, 0600); + return dma_buf_export(obj, &i915_dmabuf_ops, obj->base.size, flags); } struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, @@ -188,7 +187,12 @@ obj = dma_buf->priv; /* is it from our device? */ if (obj->base.dev == dev) { + /* + * Importing dmabuf exported from out own gem increases + * refcount on gem itself instead of f_count of dmabuf. + */ drm_gem_object_reference(&obj->base); + dma_buf_put(dma_buf); return &obj->base; } } --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_sdvo.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_sdvo.c @@ -882,6 +882,45 @@ } #endif +static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, + unsigned if_index, uint8_t tx_rate, + uint8_t *data, unsigned length) +{ + uint8_t set_buf_index[2] = { if_index, 0 }; + uint8_t hbuf_size, tmp[8]; + int i; + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, + &hbuf_size, 1)) + return false; + + /* Buffer size is 0 based, hooray! */ + hbuf_size++; + + DRM_DEBUG_KMS("writing sdvo hbuf: %i, hbuf_size %i, hbuf_size: %i\n", + if_index, length, hbuf_size); + + for (i = 0; i < hbuf_size; i += 8) { + memset(tmp, 0, 8); + if (i < length) + memcpy(tmp, data + i, min_t(unsigned, 8, length - i)); + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_DATA, + tmp, 8)) + return false; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_TXRATE, + &tx_rate, 1); +} + static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo) { struct dip_infoframe avi_if = { @@ -889,11 +928,7 @@ .ver = DIP_VERSION_AVI, .len = DIP_LEN_AVI, }; - uint8_t tx_rate = SDVO_HBUF_TX_VSYNC; - uint8_t set_buf_index[2] = { 1, 0 }; uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)]; - uint64_t *data = (uint64_t *)sdvo_data; - unsigned i; intel_dip_infoframe_csum(&avi_if); @@ -903,22 +938,9 @@ sdvo_data[3] = avi_if.checksum; memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi)); - if (!intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_INDEX, - set_buf_index, 2)) - return false; - - for (i = 0; i < sizeof(sdvo_data); i += 8) { - if (!intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_DATA, - data, 8)) - return false; - data++; - } - - return intel_sdvo_set_value(intel_sdvo, - SDVO_CMD_SET_HBUF_TXRATE, - &tx_rate, 1); + return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, + SDVO_HBUF_TX_VSYNC, + sdvo_data, sizeof(sdvo_data)); } static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo) @@ -1337,7 +1359,6 @@ } } else status = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -1411,7 +1432,6 @@ else ret = connector_status_disconnected; - connector->display_info.raw_edid = NULL; kfree(edid); } else ret = connector_status_connected; @@ -1457,7 +1477,6 @@ drm_add_edid_modes(connector, edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } } @@ -2256,6 +2275,18 @@ return true; } +static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector, *tmp; + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (intel_attached_encoder(connector) == &intel_sdvo->base) + intel_sdvo_destroy(connector); + } +} + static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, struct intel_sdvo_connector *intel_sdvo_connector, int type) @@ -2552,42 +2583,40 @@ } } - if (intel_sdvo->is_sdvob) - dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; - else - dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; - drm_encoder_helper_add(&intel_encoder->base, &intel_sdvo_helper_funcs); /* In default case sdvo lvds is false */ if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) goto err; - /* Set up hotplug command - note paranoia about contents of reply. - * We assume that the hardware is in a sane state, and only touch - * the bits we think we understand. - */ - intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_ACTIVE_HOT_PLUG, - &intel_sdvo->hotplug_active, 2); - intel_sdvo->hotplug_active[0] &= ~0x3; - if (intel_sdvo_output_setup(intel_sdvo, intel_sdvo->caps.output_flags) != true) { DRM_DEBUG_KMS("SDVO output failed to setup on %s\n", SDVO_NAME(intel_sdvo)); - goto err; + /* Output_setup can leave behind connectors! */ + goto err_output; + } + + /* Only enable the hotplug irq if we need it, to work around noisy + * hotplug lines. + */ + if (intel_sdvo->hotplug_active[0]) { + if (intel_sdvo->is_sdvob) + dev_priv->hotplug_supported_mask |= SDVOB_HOTPLUG_INT_STATUS; + else + dev_priv->hotplug_supported_mask |= SDVOC_HOTPLUG_INT_STATUS; } intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo, sdvo_reg); /* Set the input timing to the screen. Assume always input 0. */ if (!intel_sdvo_set_target_input(intel_sdvo)) - goto err; + goto err_output; if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, &intel_sdvo->pixel_clock_min, &intel_sdvo->pixel_clock_max)) - goto err; + goto err_output; DRM_DEBUG_KMS("%s device VID/DID: %02X:%02X.%02X, " "clock range %dMHz - %dMHz, " @@ -2607,6 +2636,9 @@ (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); return true; +err_output: + intel_sdvo_output_cleanup(intel_sdvo); + err: drm_encoder_cleanup(&intel_encoder->base); i2c_del_adapter(&intel_sdvo->ddc); --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_debugfs.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_debugfs.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "drmP.h" #include "drm.h" #include "intel_drv.h" @@ -324,7 +325,7 @@ seq_printf(m, "No flip due on pipe %c (plane %c)\n", pipe, plane); } else { - if (!work->pending) { + if (atomic_read(&work->pending) < INTEL_FLIP_COMPLETE) { seq_printf(m, "Flip queued on pipe %c (plane %c)\n", pipe, plane); } else { @@ -335,7 +336,7 @@ seq_printf(m, "Stall check enabled, "); else seq_printf(m, "Stall check waiting for page flip ioctl, "); - seq_printf(m, "%d prepares\n", work->pending); + seq_printf(m, "%d prepares\n", atomic_read(&work->pending)); if (work->old_fb_obj) { struct drm_i915_gem_object *obj = work->old_fb_obj; @@ -709,6 +710,7 @@ seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, error->time.tv_usec); + seq_printf(m, "Kernel: " UTS_RELEASE "\n"); seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device); seq_printf(m, "EIR: 0x%08x\n", error->eir); seq_printf(m, "IER: 0x%08x\n", error->ier); @@ -892,7 +894,7 @@ u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS); u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); - u32 rpstat; + u32 rpstat, cagf; u32 rpupei, rpcurup, rpprevup; u32 rpdownei, rpcurdown, rpprevdown; int max_freq; @@ -911,6 +913,11 @@ rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI); rpcurdown = I915_READ(GEN6_RP_CUR_DOWN); rpprevdown = I915_READ(GEN6_RP_PREV_DOWN); + if (IS_HASWELL(dev)) + cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT; + else + cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT; + cagf *= 50; gen6_gt_force_wake_put(dev_priv); mutex_unlock(&dev->struct_mutex); @@ -923,8 +930,7 @@ gt_perf_status & 0xff); seq_printf(m, "Render p-state limit: %d\n", rp_state_limits & 0xff); - seq_printf(m, "CAGF: %dMHz\n", ((rpstat & GEN6_CAGF_MASK) >> - GEN6_CAGF_SHIFT) * 50); + seq_printf(m, "CAGF: %dMHz\n", cagf); seq_printf(m, "RP CUR UP EI: %dus\n", rpupei & GEN6_CURICONT_MASK); seq_printf(m, "RP CUR UP: %dus\n", rpcurup & --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_dma.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_dma.c @@ -1082,8 +1082,8 @@ ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12); - dev_priv->dri1.gfx_hws_cpu_addr = ioremap_wc(dev->agp->base + hws->addr, - 4096); + dev_priv->dri1.gfx_hws_cpu_addr = + ioremap_wc(dev_priv->mm.gtt_base_addr + hws->addr, 4096); if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { i915_dma_cleanup(dev); ring->status_page.gfx_addr = 0; @@ -1411,7 +1411,7 @@ if (!ap) return; - ap->ranges[0].base = dev_priv->dev->agp->base; + ap->ranges[0].base = dev_priv->mm.gtt->gma_bus_addr; ap->ranges[0].size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; primary = @@ -1501,16 +1501,26 @@ goto put_bridge; } + ret = intel_gmch_probe(dev_priv->bridge_dev, dev->pdev, NULL); + if (!ret) { + DRM_ERROR("failed to set up gmch\n"); + ret = -EIO; + goto out_rmmap; + } + aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + dev_priv->mm.gtt_base_addr = dev_priv->mm.gtt->gma_bus_addr; dev_priv->mm.gtt_mapping = - io_mapping_create_wc(dev->agp->base, aperture_size); + io_mapping_create_wc(dev_priv->mm.gtt_base_addr, + aperture_size); if (dev_priv->mm.gtt_mapping == NULL) { ret = -EIO; - goto out_rmmap; + goto put_gmch; } - i915_mtrr_setup(dev_priv, dev->agp->base, aperture_size); + i915_mtrr_setup(dev_priv, dev_priv->mm.gtt_base_addr, + aperture_size); /* The i915 workqueue is primarily used for batched retirement of * requests (and thus managing bo) once the task has been completed @@ -1622,11 +1632,14 @@ destroy_workqueue(dev_priv->wq); out_mtrrfree: if (dev_priv->mm.gtt_mtrr >= 0) { - mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, - dev->agp->agp_info.aper_size * 1024 * 1024); + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + aperture_size); dev_priv->mm.gtt_mtrr = -1; } io_mapping_free(dev_priv->mm.gtt_mapping); +put_gmch: + intel_gmch_remove(); out_rmmap: pci_iounmap(dev->pdev, dev_priv->regs); put_bridge: @@ -1660,8 +1673,9 @@ io_mapping_free(dev_priv->mm.gtt_mapping); if (dev_priv->mm.gtt_mtrr >= 0) { - mtrr_del(dev_priv->mm.gtt_mtrr, dev->agp->base, - dev->agp->agp_info.aper_size * 1024 * 1024); + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + dev_priv->mm.gtt->gtt_mappable_entries * PAGE_SIZE); dev_priv->mm.gtt_mtrr = -1; } --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_ringbuffer.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_ringbuffer.c @@ -411,13 +411,25 @@ struct drm_i915_private *dev_priv = dev->dev_private; int ret = init_ring_common(ring); - if (INTEL_INFO(dev)->gen > 3) { + if (INTEL_INFO(dev)->gen > 3) I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH)); - if (IS_GEN7(dev)) - I915_WRITE(GFX_MODE_GEN7, - _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | - _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); - } + + /* We need to disable the AsyncFlip performance optimisations in order + * to use MI_WAIT_FOR_EVENT within the CS. It should already be + * programmed to '1' on all products. + */ + if (INTEL_INFO(dev)->gen >= 6) + I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(ASYNC_FLIP_PERF_DISABLE)); + + /* Required for the hardware to program scanline values for waiting */ + if (INTEL_INFO(dev)->gen == 6) + I915_WRITE(GFX_MODE, + _MASKED_BIT_ENABLE(GFX_TLB_INVALIDATE_ALWAYS)); + + if (IS_GEN7(dev)) + I915_WRITE(GFX_MODE_GEN7, + _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | + _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); if (INTEL_INFO(dev)->gen >= 5) { ret = init_pipe_control(ring); @@ -438,6 +450,9 @@ if (INTEL_INFO(dev)->gen >= 6) I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); + if (IS_IVYBRIDGE(dev)) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + return ret; } @@ -825,7 +840,11 @@ spin_lock_irqsave(&dev_priv->irq_lock, flags); if (ring->irq_refcount++ == 0) { - I915_WRITE_IMR(ring, ~ring->irq_enable_mask); + if (IS_IVYBRIDGE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~(ring->irq_enable_mask | + GEN6_RENDER_L3_PARITY_ERROR)); + else + I915_WRITE_IMR(ring, ~ring->irq_enable_mask); dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; I915_WRITE(GTIMR, dev_priv->gt_irq_mask); POSTING_READ(GTIMR); @@ -844,7 +863,10 @@ spin_lock_irqsave(&dev_priv->irq_lock, flags); if (--ring->irq_refcount == 0) { - I915_WRITE_IMR(ring, ~0); + if (IS_IVYBRIDGE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + else + I915_WRITE_IMR(ring, ~0); dev_priv->gt_irq_mask |= ring->irq_enable_mask; I915_WRITE(GTIMR, dev_priv->gt_irq_mask); POSTING_READ(GTIMR); @@ -969,6 +991,7 @@ struct intel_ring_buffer *ring) { struct drm_i915_gem_object *obj; + struct drm_i915_private *dev_priv = dev->dev_private; int ret; ring->dev = dev; @@ -1002,8 +1025,9 @@ if (ret) goto err_unpin; - ring->virtual_start = ioremap_wc(dev->agp->base + obj->gtt_offset, - ring->size); + ring->virtual_start = + ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset, + ring->size); if (ring->virtual_start == NULL) { DRM_ERROR("Failed to map ringbuffer.\n"); ret = -EINVAL; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_drv.h +++ linux-3.5.0/drivers/gpu/drm/i915/i915_drv.h @@ -329,6 +329,7 @@ #define QUIRK_PIPEA_FORCE (1<<0) #define QUIRK_LVDS_SSC_DISABLE (1<<1) #define QUIRK_INVERT_BRIGHTNESS (1<<2) +#define QUIRK_RC6_DISABLE (1<<3) struct intel_fbdev; struct intel_fbc_work; @@ -652,11 +653,14 @@ unsigned long gtt_end; struct io_mapping *gtt_mapping; + phys_addr_t gtt_base_addr; int gtt_mtrr; /** PPGTT used for aliasing the PPGTT with the GTT */ struct i915_hw_ppgtt *aliasing_ppgtt; + u32 *l3_remap_info; + struct shrinker inactive_shrinker; /** @@ -817,6 +821,8 @@ struct drm_property *broadcast_rgb_property; struct drm_property *force_audio_property; + + struct work_struct parity_error_work; } drm_i915_private_t; /* Iterate over initialised rings */ @@ -1315,6 +1321,7 @@ int __must_check i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj); int __must_check i915_gem_init(struct drm_device *dev); int __must_check i915_gem_init_hw(struct drm_device *dev); +void i915_gem_l3_remap(struct drm_device *dev); void i915_gem_init_swizzling(struct drm_device *dev); void i915_gem_init_ppgtt(struct drm_device *dev); void i915_gem_cleanup_ringbuffer(struct drm_device *dev); @@ -1467,6 +1474,7 @@ /* modesetting */ extern void intel_modeset_init_hw(struct drm_device *dev); +extern void i915_redisable_vga(struct drm_device *dev); extern void intel_modeset_init(struct drm_device *dev); extern void intel_modeset_gem_init(struct drm_device *dev); extern void intel_modeset_cleanup(struct drm_device *dev); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_lvds.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_lvds.c @@ -541,6 +541,7 @@ mutex_lock(&dev->mode_config.mutex); drm_helper_resume_force_mode(dev); + i915_redisable_vga(dev); mutex_unlock(&dev->mode_config.mutex); return NOTIFY_OK; @@ -777,6 +778,22 @@ DMI_MATCH(DMI_BOARD_NAME, "MS-7469"), }, }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Gigabyte GA-D525TUD", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Supermicro X7SPA-H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), + DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), + }, + }, { } /* terminating entry */ }; --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_crt.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_crt.c @@ -284,6 +284,36 @@ return ret; } +static struct edid *intel_crt_get_edid(struct drm_connector *connector, + struct i2c_adapter *i2c) +{ + struct edid *edid; + + edid = drm_get_edid(connector, i2c); + + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { + DRM_DEBUG_KMS("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n"); + intel_gmbus_force_bit(i2c, true); + edid = drm_get_edid(connector, i2c); + intel_gmbus_force_bit(i2c, false); + } + + return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + + edid = intel_crt_get_edid(connector, adapter); + if (!edid) + return 0; + + return intel_connector_update_modes(connector, edid); +} + static bool intel_crt_detect_ddc(struct drm_connector *connector) { struct intel_crt *crt = intel_attached_crt(connector); @@ -299,7 +329,7 @@ struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - edid = drm_get_edid(connector, i2c); + edid = intel_crt_get_edid(connector, i2c); /* * This may be a DVI-I connector with a shared DDC * link between analog and digital outputs, so we @@ -309,7 +339,6 @@ */ if (edid != NULL) { is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -498,13 +527,13 @@ struct i2c_adapter *i2c; i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); - ret = intel_ddc_get_modes(connector, i2c); + ret = intel_crt_ddc_get_modes(connector, i2c); if (ret || !IS_G4X(dev)) return ret; /* Try to probe digital port for output in DVI-I -> VGA mode. */ i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); - return intel_ddc_get_modes(connector, i2c); + return intel_crt_ddc_get_modes(connector, i2c); } static int intel_crt_set_property(struct drm_connector *connector, --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_execbuffer.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_execbuffer.c @@ -269,6 +269,7 @@ static inline int use_cpu_reloc(struct drm_i915_gem_object *obj) { return (obj->base.write_domain == I915_GEM_DOMAIN_CPU || + !obj->map_and_fenceable || obj->cache_level != I915_CACHE_NONE); } @@ -748,6 +749,8 @@ total = 0; for (i = 0; i < count; i++) { struct drm_i915_gem_relocation_entry __user *user_relocs; + u64 invalid_offset = (u64)-1; + int j; user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr; @@ -758,6 +761,25 @@ goto err; } + /* As we do not update the known relocation offsets after + * relocating (due to the complexities in lock handling), + * we need to mark them as invalid now so that we force the + * relocation processing next time. Just in case the target + * object is evicted and then rebound into its old + * presumed_offset before the next execbuffer - if that + * happened we would make the mistake of assuming that the + * 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))) { + ret = -EFAULT; + mutex_lock(&dev->struct_mutex); + goto err; + } + } + reloc_offset[i] = total; total += exec[i].relocation_count; } --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem_gtt.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -261,7 +261,10 @@ pte_flags |= GEN6_PTE_CACHE_LLC; break; case I915_CACHE_NONE: - pte_flags |= GEN6_PTE_UNCACHED; + if (IS_HASWELL(dev)) + pte_flags |= HSW_PTE_UNCACHED; + else + pte_flags |= GEN6_PTE_UNCACHED; break; default: BUG(); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_hdmi.c @@ -141,16 +141,22 @@ I915_WRITE(VIDEO_DIP_CTL, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(VIDEO_DIP_DATA, *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VIDEO_DIP_DATA, 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(VIDEO_DIP_CTL, val); + POSTING_READ(VIDEO_DIP_CTL); } static void ibx_write_infoframe(struct drm_encoder *encoder, @@ -190,16 +196,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void cpt_write_infoframe(struct drm_encoder *encoder, @@ -229,16 +241,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void vlv_write_infoframe(struct drm_encoder *encoder, @@ -262,16 +280,22 @@ I915_WRITE(reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); val |= g4x_infoframe_enable(frame); val &= ~VIDEO_DIP_FREQ_MASK; val |= VIDEO_DIP_FREQ_VSYNC; I915_WRITE(reg, val); + POSTING_READ(reg); } static void hsw_write_infoframe(struct drm_encoder *encoder, @@ -294,13 +318,19 @@ val &= ~hsw_infoframe_enable(frame); I915_WRITE(ctl_reg, val); + mmiowb(); for (i = 0; i < len; i += 4) { I915_WRITE(data_reg + i, *data); data++; } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(data_reg + i, 0); + mmiowb(); val |= hsw_infoframe_enable(frame); I915_WRITE(ctl_reg, val); + POSTING_READ(ctl_reg); } static void intel_set_infoframe(struct drm_encoder *encoder, @@ -400,7 +430,7 @@ u32 temp; u32 enable_bits = SDVO_ENABLE; - if (intel_hdmi->has_audio) + if (intel_hdmi->has_audio || mode != DRM_MODE_DPMS_ON) enable_bits |= SDVO_AUDIO_ENABLE; temp = I915_READ(intel_hdmi->sdvox_reg); @@ -474,7 +504,6 @@ drm_detect_hdmi_monitor(edid); intel_hdmi->has_audio = drm_detect_monitor_audio(edid); } - connector->display_info.raw_edid = NULL; kfree(edid); } @@ -515,8 +544,6 @@ if (edid) { if (edid->input & DRM_EDID_INPUT_DIGITAL) has_audio = drm_detect_monitor_audio(edid); - - connector->display_info.raw_edid = NULL; kfree(edid); } --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_pm.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_pm.c @@ -2320,21 +2320,28 @@ int intel_enable_rc6(const struct drm_device *dev) { + struct drm_i915_private *dev_priv = dev->dev_private; + /* * Respect the kernel parameter if it is set */ if (i915_enable_rc6 >= 0) return i915_enable_rc6; + if (dev_priv->quirks & QUIRK_RC6_DISABLE) + return 0; + /* * Disable RC6 on Ironlake */ if (INTEL_INFO(dev)->gen == 5) return 0; - /* Sorry Haswell, no RC6 for you for now. */ + /* On Haswell, only RC6 is available. So let's enable it by default to + * provide better testing and coverage since the beginning. + */ if (IS_HASWELL(dev)) - return 0; + return INTEL_RC6_ENABLE; /* * Disable rc6 on Sandybridge @@ -2400,20 +2407,24 @@ I915_WRITE(GEN6_RC6p_THRESHOLD, 100000); I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ + /* Check if we are enabling RC6 */ rc6_mode = intel_enable_rc6(dev_priv->dev); if (rc6_mode & INTEL_RC6_ENABLE) rc6_mask |= GEN6_RC_CTL_RC6_ENABLE; - if (rc6_mode & INTEL_RC6p_ENABLE) - rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; + /* We don't use those on Haswell */ + if (!IS_HASWELL(dev_priv->dev)) { + if (rc6_mode & INTEL_RC6p_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; - if (rc6_mode & INTEL_RC6pp_ENABLE) - rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + if (rc6_mode & INTEL_RC6pp_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + } DRM_INFO("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n", - (rc6_mode & INTEL_RC6_ENABLE) ? "on" : "off", - (rc6_mode & INTEL_RC6p_ENABLE) ? "on" : "off", - (rc6_mode & INTEL_RC6pp_ENABLE) ? "on" : "off"); + (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off"); I915_WRITE(GEN6_RC_CONTROL, rc6_mask | @@ -2431,10 +2442,19 @@ I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, dev_priv->max_delay << 24 | dev_priv->min_delay << 16); - I915_WRITE(GEN6_RP_UP_THRESHOLD, 10000); - I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 1000000); - I915_WRITE(GEN6_RP_UP_EI, 100000); - I915_WRITE(GEN6_RP_DOWN_EI, 5000000); + + if (IS_HASWELL(dev_priv->dev)) { + I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000); + I915_WRITE(GEN6_RP_UP_EI, 66000); + I915_WRITE(GEN6_RP_DOWN_EI, 350000); + } else { + I915_WRITE(GEN6_RP_UP_THRESHOLD, 10000); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 1000000); + I915_WRITE(GEN6_RP_UP_EI, 100000); + I915_WRITE(GEN6_RP_DOWN_EI, 5000000); + } + I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); I915_WRITE(GEN6_RP_CONTROL, GEN6_RP_MEDIA_TURBO | @@ -2442,7 +2462,7 @@ GEN6_RP_MEDIA_IS_GFX | GEN6_RP_ENABLE | GEN6_RP_UP_BUSY_AVG | - GEN6_RP_DOWN_IDLE_CONT); + (IS_HASWELL(dev_priv->dev) ? GEN7_RP_DOWN_IDLE_AVG : GEN6_RP_DOWN_IDLE_CONT)); if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, 500)) @@ -3307,6 +3327,10 @@ I915_READ(ILK_DISPLAY_CHICKEN2) | ILK_ELPIN_409_SELECT); + /* WaDisableHiZPlanesWhenMSAAEnabled */ + I915_WRITE(_3D_CHICKEN, + _MASKED_BIT_ENABLE(_3D_CHICKEN_HIZ_PLANE_DISABLE_MSAA_4X_SNB)); + I915_WRITE(WM3_LP_ILK, 0); I915_WRITE(WM2_LP_ILK, 0); I915_WRITE(WM1_LP_ILK, 0); @@ -3334,8 +3358,8 @@ GEN6_RCCUNIT_CLOCK_GATE_DISABLE); /* Bspec says we need to always set all mask bits. */ - I915_WRITE(_3D_CHICKEN, (0xFFFF << 16) | - _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL); + I915_WRITE(_3D_CHICKEN3, (0xFFFF << 16) | + _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL); /* * According to the spec the following bits should be @@ -3363,6 +3387,11 @@ DISPPLANE_TRICKLE_FEED_DISABLE); intel_flush_display_plane(dev_priv, pipe); } + + /* The default value should be 0x200 according to docs, but the two + * platforms I checked have a 0 for this. (Maybe BIOS overrides?) */ + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_ENABLE(GEN6_GT_MODE_HI)); } static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) @@ -3377,6 +3406,68 @@ I915_WRITE(GEN7_FF_THREAD_MODE, reg); } +static void haswell_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE; + + I915_WRITE(PCH_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE); + + I915_WRITE(ILK_DSPCLK_GATE, IVB_VRHUNIT_CLK_GATE); + + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* XXX: This is a workaround for early silicon revisions and should be + * removed later. + */ + I915_WRITE(WM_DBG, + I915_READ(WM_DBG) | + WM_DBG_DISALLOW_MULTIPLE_LP | + WM_DBG_DISALLOW_SPRITE | + WM_DBG_DISALLOW_MAXFIFO); + +} + static void ivybridge_init_clock_gating(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; @@ -3528,6 +3619,9 @@ if (IS_PINEVIEW(dev)) I915_WRITE(ECOSKPD, _MASKED_BIT_ENABLE(ECO_GATING_CX_ONLY)); + + /* IIR "flip pending" means done if this bit is set */ + I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); } static void i85x_init_clock_gating(struct drm_device *dev) @@ -3756,7 +3850,7 @@ "Disable CxSR\n"); dev_priv->display.update_wm = NULL; } - dev_priv->display.init_clock_gating = ivybridge_init_clock_gating; + dev_priv->display.init_clock_gating = haswell_init_clock_gating; dev_priv->display.sanitize_pm = gen6_sanitize_pm; } else dev_priv->display.update_wm = NULL; --- linux-3.5.0.orig/drivers/gpu/drm/i915/i915_gem.c +++ linux-3.5.0/drivers/gpu/drm/i915/i915_gem.c @@ -1122,7 +1122,7 @@ obj->fault_mappable = true; - pfn = ((dev->agp->base + obj->gtt_offset) >> PAGE_SHIFT) + + pfn = ((dev_priv->mm.gtt_base_addr + obj->gtt_offset) >> PAGE_SHIFT) + page_offset; /* Finally, remap it using the new GTT offset */ @@ -1144,6 +1144,11 @@ case 0: case -ERESTARTSYS: case -EINTR: + case -EBUSY: + /* + * EBUSY is ok: this just means that another thread + * already did the job. + */ return VM_FAULT_NOPAGE; case -ENOMEM: return VM_FAULT_OOM; @@ -3044,7 +3049,8 @@ { int ret; - BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); + if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) + return -EBUSY; if (obj->gtt_space != NULL) { if ((alignment && obj->gtt_offset & (alignment - 1)) || @@ -3119,14 +3125,15 @@ goto out; } - obj->user_pin_count++; - obj->pin_filp = file; - if (obj->user_pin_count == 1) { + if (obj->user_pin_count == 0) { ret = i915_gem_object_pin(obj, args->alignment, true); if (ret) goto out; } + obj->user_pin_count++; + obj->pin_filp = file; + /* XXX - flush the CPU caches for pinned objects * as the X server doesn't manage domains yet */ @@ -3435,6 +3442,38 @@ return 0; } +void i915_gem_l3_remap(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 misccpctl; + int i; + + if (!IS_IVYBRIDGE(dev)) + return; + + if (!dev_priv->mm.l3_remap_info) + return; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) { + u32 remap = I915_READ(GEN7_L3LOG_BASE + i); + if (remap && remap != dev_priv->mm.l3_remap_info[i/4]) + DRM_DEBUG("0x%x was already programmed to %x\n", + GEN7_L3LOG_BASE + i, remap); + if (remap && !dev_priv->mm.l3_remap_info[i/4]) + DRM_DEBUG_DRIVER("Clearing remapped register\n"); + I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->mm.l3_remap_info[i/4]); + } + + /* Make sure all the writes land before disabling dop clock gating */ + POSTING_READ(GEN7_L3LOG_BASE); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); +} + void i915_gem_init_swizzling(struct drm_device *dev) { drm_i915_private_t *dev_priv = dev->dev_private; @@ -3524,6 +3563,8 @@ drm_i915_private_t *dev_priv = dev->dev_private; int ret; + i915_gem_l3_remap(dev); + i915_gem_init_swizzling(dev); ret = intel_init_render_ring_buffer(dev); @@ -3657,7 +3698,6 @@ BUG_ON(!list_empty(&dev_priv->mm.active_list)); BUG_ON(!list_empty(&dev_priv->mm.flushing_list)); - BUG_ON(!list_empty(&dev_priv->mm.inactive_list)); mutex_unlock(&dev->struct_mutex); ret = drm_irq_install(dev); --- linux-3.5.0.orig/drivers/gpu/drm/i915/intel_bios.c +++ linux-3.5.0/drivers/gpu/drm/i915/intel_bios.c @@ -500,12 +500,8 @@ edp = find_section(bdb, BDB_EDP); if (!edp) { - if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) { - DRM_DEBUG_KMS("No eDP BDB found but eDP panel " - "supported, assume %dbpp panel color " - "depth.\n", - dev_priv->edp.bpp); - } + if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) + DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n"); return; } @@ -658,9 +654,6 @@ dev_priv->lvds_use_ssc = 1; dev_priv->lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1); DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->lvds_ssc_freq); - - /* eDP data */ - dev_priv->edp.bpp = 18; } static int __init intel_no_opregion_vbt_callback(const struct dmi_system_id *id) --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_connectors.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_connectors.c @@ -40,10 +40,6 @@ struct drm_encoder *encoder, bool connected); -extern void -radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, - struct drm_connector *drm_connector); - void radeon_connector_hotplug(struct drm_connector *connector) { struct drm_device *dev = connector->dev; @@ -64,14 +60,33 @@ /* just deal with DP (not eDP) here. */ if (connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) { - int saved_dpms = connector->dpms; + struct radeon_connector_atom_dig *dig_connector = + radeon_connector->con_priv; + + /* if existing sink type was not DP no need to retrain */ + if (dig_connector->dp_sink_type != CONNECTOR_OBJECT_ID_DISPLAYPORT) + return; - /* Only turn off the display it it's physically disconnected */ - 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)) - drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); - connector->dpms = saved_dpms; + /* first get sink type as it may be reset after (un)plug */ + dig_connector->dp_sink_type = radeon_dp_getsinktype(radeon_connector); + /* don't do anything if sink is not display port, i.e., + * passive dp->(dvi|hdmi) adaptor + */ + if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) { + int saved_dpms = connector->dpms; + /* Only turn off the display if it's physically disconnected */ + 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)) { + /* set it to OFF so that drm_helper_connector_dpms() + * won't return immediately since the current state + * is ON at this point. + */ + connector->dpms = DRM_MODE_DPMS_OFF; + drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON); + } + connector->dpms = saved_dpms; + } } } @@ -726,7 +741,7 @@ ret = connector_status_disconnected; if (radeon_connector->ddc_bus) - dret = radeon_ddc_probe(radeon_connector); + dret = radeon_ddc_probe(radeon_connector, false); if (dret) { radeon_connector->detected_by_load = false; if (radeon_connector->edid) { @@ -932,7 +947,7 @@ return connector->status; if (radeon_connector->ddc_bus) - dret = radeon_ddc_probe(radeon_connector); + dret = radeon_ddc_probe(radeon_connector, false); if (dret) { radeon_connector->detected_by_load = false; if (radeon_connector->edid) { @@ -1372,7 +1387,8 @@ if (encoder) { /* setup ddc on the bridge */ radeon_atom_ext_encoder_setup_ddc(encoder); - if (radeon_ddc_probe(radeon_connector)) /* try DDC */ + /* bridge chips are always aux */ + if (radeon_ddc_probe(radeon_connector, true)) /* try DDC */ ret = connector_status_connected; else if (radeon_connector->dac_load_detect) { /* try load detection */ struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private; @@ -1390,7 +1406,8 @@ if (radeon_dp_getdpcd(radeon_connector)) ret = connector_status_connected; } else { - if (radeon_ddc_probe(radeon_connector)) + /* try non-aux ddc (DP to DVI/HMDI/etc. adapter) */ + if (radeon_ddc_probe(radeon_connector, false)) ret = connector_status_connected; } } @@ -1989,15 +2006,4 @@ connector->polled = DRM_CONNECTOR_POLL_HPD; connector->display_info.subpixel_order = subpixel_order; drm_sysfs_connector_add(connector); - if (connector_type == DRM_MODE_CONNECTOR_LVDS) { - struct drm_encoder *drm_encoder; - - list_for_each_entry(drm_encoder, &dev->mode_config.encoder_list, head) { - struct radeon_encoder *radeon_encoder; - - radeon_encoder = to_radeon_encoder(drm_encoder); - if (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_LVDS) - radeon_legacy_backlight_init(radeon_encoder, connector); - } - } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_combios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_combios.c @@ -1536,6 +1536,9 @@ of_machine_is_compatible("PowerBook6,7")) { /* ibook */ rdev->mode_info.connector_table = CT_IBOOK; + } else if (of_machine_is_compatible("PowerMac3,5")) { + /* PowerMac G4 Silver radeon 7500 */ + rdev->mode_info.connector_table = CT_MAC_G4_SILVER; } else if (of_machine_is_compatible("PowerMac4,4")) { /* emac */ rdev->mode_info.connector_table = CT_EMAC; @@ -2200,6 +2203,54 @@ CONNECTOR_OBJECT_ID_SVIDEO, &hpd); break; + case CT_MAC_G4_SILVER: + DRM_INFO("Connector Table: %d (mac g4 silver)\n", + rdev->mode_info.connector_table); + /* DVI-I - tv dac, int tmds */ + ddc_i2c = combios_setup_i2c_bus(rdev, DDC_DVI, 0, 0); + hpd.hpd = RADEON_HPD_1; /* ??? */ + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_DFP1_SUPPORT, + 0), + ATOM_DEVICE_DFP1_SUPPORT); + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_CRT2_SUPPORT, + 2), + ATOM_DEVICE_CRT2_SUPPORT); + radeon_add_legacy_connector(dev, 0, + ATOM_DEVICE_DFP1_SUPPORT | + ATOM_DEVICE_CRT2_SUPPORT, + DRM_MODE_CONNECTOR_DVII, &ddc_i2c, + CONNECTOR_OBJECT_ID_SINGLE_LINK_DVI_I, + &hpd); + /* VGA - primary dac */ + ddc_i2c = combios_setup_i2c_bus(rdev, DDC_VGA, 0, 0); + hpd.hpd = RADEON_HPD_NONE; + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_CRT1_SUPPORT, + 1), + ATOM_DEVICE_CRT1_SUPPORT); + radeon_add_legacy_connector(dev, 1, ATOM_DEVICE_CRT1_SUPPORT, + DRM_MODE_CONNECTOR_VGA, &ddc_i2c, + CONNECTOR_OBJECT_ID_VGA, + &hpd); + /* TV - TV DAC */ + ddc_i2c.valid = false; + hpd.hpd = RADEON_HPD_NONE; + radeon_add_legacy_encoder(dev, + radeon_get_encoder_enum(dev, + ATOM_DEVICE_TV1_SUPPORT, + 2), + ATOM_DEVICE_TV1_SUPPORT); + radeon_add_legacy_connector(dev, 2, ATOM_DEVICE_TV1_SUPPORT, + DRM_MODE_CONNECTOR_SVIDEO, + &ddc_i2c, + CONNECTOR_OBJECT_ID_SVIDEO, + &hpd); + break; default: DRM_INFO("Connector table: %d (invalid)\n", rdev->mode_info.connector_table); @@ -2404,6 +2455,14 @@ 1), ATOM_DEVICE_CRT1_SUPPORT); } + /* RV100 board with external TDMS bit mis-set. + * Actually uses internal TMDS, clear the bit. + */ + if (dev->pdev->device == 0x5159 && + dev->pdev->subsystem_vendor == 0x1014 && + dev->pdev->subsystem_device == 0x029A) { + tmp &= ~(1 << 4); + } if ((tmp >> 4) & 0x1) { devices |= ATOM_DEVICE_DFP2_SUPPORT; radeon_add_legacy_encoder(dev, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r600_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600_cs.c @@ -764,8 +764,10 @@ } /* Check depth buffer */ - if (track->db_dirty && (G_028800_STENCIL_ENABLE(track->db_depth_control) || - G_028800_Z_ENABLE(track->db_depth_control))) { + if (track->db_dirty && + G_028010_FORMAT(track->db_depth_info) != V_028010_DEPTH_INVALID && + (G_028800_STENCIL_ENABLE(track->db_depth_control) || + G_028800_Z_ENABLE(track->db_depth_control))) { r = r600_cs_track_validate_db(p); if (r) return r; @@ -2328,8 +2330,10 @@ kfree(parser->relocs); for (i = 0; i < parser->nchunks; i++) { kfree(parser->chunks[i].kdata); - kfree(parser->chunks[i].kpage[0]); - kfree(parser->chunks[i].kpage[1]); + if (parser->rdev && (parser->rdev->flags & RADEON_IS_AGP)) { + kfree(parser->chunks[i].kpage[0]); + kfree(parser->chunks[i].kpage[1]); + } } kfree(parser->chunks); kfree(parser->chunks_array); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_irq_kms.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_irq_kms.c @@ -149,6 +149,16 @@ (rdev->pdev->subsystem_device == 0x01fd)) return true; + /* Gateway RS690 only seems to work with MSIs. */ + if ((rdev->pdev->device == 0x791f) && + (rdev->pdev->subsystem_vendor == 0x107b) && + (rdev->pdev->subsystem_device == 0x0185)) + return true; + + /* try and enable MSIs by default on all RS690s */ + if (rdev->family == CHIP_RS690) + return true; + /* RV515 seems to have MSI issues where it loses * MSI rearms occasionally. This leads to lockups and freezes. * disable it by default. --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_legacy_encoders.c @@ -271,13 +271,6 @@ #if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) -#define MAX_RADEON_LEVEL 0xFF - -struct radeon_backlight_privdata { - struct radeon_encoder *encoder; - uint8_t negative; -}; - static uint8_t radeon_legacy_lvds_level(struct backlight_device *bd) { struct radeon_backlight_privdata *pdata = bl_get_data(bd); @@ -286,13 +279,13 @@ /* Convert brightness to hardware level */ if (bd->props.brightness < 0) level = 0; - else if (bd->props.brightness > MAX_RADEON_LEVEL) - level = MAX_RADEON_LEVEL; + else if (bd->props.brightness > RADEON_MAX_BL_LEVEL) + level = RADEON_MAX_BL_LEVEL; else level = bd->props.brightness; if (pdata->negative) - level = MAX_RADEON_LEVEL - level; + level = RADEON_MAX_BL_LEVEL - level; return level; } @@ -336,7 +329,7 @@ backlight_level = (RREG32(RADEON_LVDS_GEN_CNTL) >> RADEON_LVDS_BL_MOD_LEVEL_SHIFT) & 0xff; - return pdata->negative ? MAX_RADEON_LEVEL - backlight_level : backlight_level; + return pdata->negative ? RADEON_MAX_BL_LEVEL - backlight_level : backlight_level; } static const struct backlight_ops radeon_backlight_ops = { @@ -370,7 +363,7 @@ } memset(&props, 0, sizeof(props)); - props.max_brightness = MAX_RADEON_LEVEL; + props.max_brightness = RADEON_MAX_BL_LEVEL; props.type = BACKLIGHT_RAW; bd = backlight_device_register("radeon_bl", &drm_connector->kdev, pdata, &radeon_backlight_ops, &props); @@ -449,7 +442,7 @@ } if (bd) { - struct radeon_legacy_backlight_privdata *pdata; + struct radeon_backlight_privdata *pdata; pdata = bl_get_data(bd); backlight_device_unregister(bd); @@ -618,6 +611,14 @@ enum drm_connector_status found = connector_status_disconnected; bool color = true; + /* just don't bother on RN50 those chip are often connected to remoting + * console hw and often we get failure to load detect those. So to make + * everyone happy report the encoder as always connected. + */ + if (ASIC_IS_RN50(rdev)) { + return connector_status_connected; + } + /* save the regs we need */ vclk_ecp_cntl = RREG32_PLL(RADEON_VCLK_ECP_CNTL); crtc_ext_cntl = RREG32(RADEON_CRTC_EXT_CNTL); @@ -651,6 +652,7 @@ tmp |= RADEON_DAC_RANGE_CNTL_PS2 | RADEON_DAC_CMP_EN; WREG32(RADEON_DAC_CNTL, tmp); + tmp = dac_macro_cntl; tmp &= ~(RADEON_DAC_PDWN_R | RADEON_DAC_PDWN_G | RADEON_DAC_PDWN_B); @@ -974,11 +976,7 @@ static void radeon_ext_tmds_enc_destroy(struct drm_encoder *encoder) { struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); - struct radeon_encoder_ext_tmds *tmds = radeon_encoder->enc_priv; - if (tmds) { - if (tmds->i2c_bus) - radeon_i2c_destroy(tmds->i2c_bus); - } + /* don't destroy the i2c bus record here, this will be done in radeon_i2c_fini */ kfree(radeon_encoder->enc_priv); drm_encoder_cleanup(encoder); kfree(radeon_encoder); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_fence.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_fence.c @@ -75,7 +75,7 @@ void radeon_fence_process(struct radeon_device *rdev, int ring) { - uint64_t seq, last_seq; + uint64_t seq, last_seq, last_emitted; unsigned count_loop = 0; bool wake = false; @@ -102,13 +102,15 @@ */ last_seq = atomic64_read(&rdev->fence_drv[ring].last_seq); do { + last_emitted = rdev->fence_drv[ring].seq; seq = radeon_fence_read(rdev, ring); seq |= last_seq & 0xffffffff00000000LL; if (seq < last_seq) { - seq += 0x100000000LL; + seq &= 0xffffffff; + seq |= last_emitted & 0xffffffff00000000LL; } - if (seq == last_seq) { + if (seq <= last_seq || seq > last_emitted) { break; } /* If we loop over we don't want to return without --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_device.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_device.c @@ -359,7 +359,8 @@ { uint32_t reg; - if (efi_enabled && rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) + if (efi_enabled(EFI_BOOT) && + rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) return false; /* first check CRTCs */ @@ -774,7 +775,7 @@ if (rdev->flags & RADEON_IS_AGP) rdev->need_dma32 = true; if ((rdev->flags & RADEON_IS_PCI) && - (rdev->family < CHIP_RS400)) + (rdev->family <= CHIP_RS740)) rdev->need_dma32 = true; dma_bits = rdev->need_dma32 ? 32 : 40; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_crtc.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_crtc.c @@ -258,9 +258,6 @@ radeon_crtc->enabled = true; /* adjust pm to dpms changes BEFORE enabling crtcs */ radeon_pm_compute_clocks(rdev); - /* disable crtc pair power gating before programming */ - if (ASIC_IS_DCE6(rdev)) - atombios_powergate_crtc(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_ENABLE); if (ASIC_IS_DCE3(rdev) && !ASIC_IS_DCE6(rdev)) atombios_enable_crtc_memreq(crtc, ATOM_ENABLE); @@ -278,25 +275,6 @@ atombios_enable_crtc_memreq(crtc, ATOM_DISABLE); atombios_enable_crtc(crtc, ATOM_DISABLE); radeon_crtc->enabled = false; - /* power gating is per-pair */ - if (ASIC_IS_DCE6(rdev)) { - struct drm_crtc *other_crtc; - struct radeon_crtc *other_radeon_crtc; - list_for_each_entry(other_crtc, &rdev->ddev->mode_config.crtc_list, head) { - other_radeon_crtc = to_radeon_crtc(other_crtc); - if (((radeon_crtc->crtc_id == 0) && (other_radeon_crtc->crtc_id == 1)) || - ((radeon_crtc->crtc_id == 1) && (other_radeon_crtc->crtc_id == 0)) || - ((radeon_crtc->crtc_id == 2) && (other_radeon_crtc->crtc_id == 3)) || - ((radeon_crtc->crtc_id == 3) && (other_radeon_crtc->crtc_id == 2)) || - ((radeon_crtc->crtc_id == 4) && (other_radeon_crtc->crtc_id == 5)) || - ((radeon_crtc->crtc_id == 5) && (other_radeon_crtc->crtc_id == 4))) { - /* if both crtcs in the pair are off, enable power gating */ - if (other_radeon_crtc->enabled == false) - atombios_powergate_crtc(crtc, ATOM_ENABLE); - break; - } - } - } /* adjust pm to dpms changes AFTER disabling crtcs */ radeon_pm_compute_clocks(rdev); break; @@ -444,11 +422,28 @@ static void atombios_crtc_program_ss(struct radeon_device *rdev, int enable, int pll_id, + int crtc_id, struct radeon_atom_ss *ss) { + unsigned i; int index = GetIndexIntoMasterTable(COMMAND, EnableSpreadSpectrumOnPPLL); union atom_enable_ss args; + if (!enable) { + for (i = 0; i < rdev->num_crtc; i++) { + if (rdev->mode_info.crtcs[i] && + rdev->mode_info.crtcs[i]->enabled && + i != crtc_id && + pll_id == rdev->mode_info.crtcs[i]->pll_id) { + /* one other crtc is using this pll don't turn + * off spread spectrum as it might turn off + * display on active crtc + */ + return; + } + } + } + memset(&args, 0, sizeof(args)); if (ASIC_IS_DCE5(rdev)) { @@ -578,6 +573,8 @@ /* use frac fb div on APUs */ if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV; + if (ASIC_IS_DCE32(rdev) && mode->clock > 165000) + pll->flags |= RADEON_PLL_USE_FRAC_FB_DIV; } else { pll->flags |= RADEON_PLL_LEGACY; @@ -1036,7 +1033,7 @@ radeon_compute_pll_legacy(pll, adjusted_clock, &pll_clock, &fb_div, &frac_fb_div, &ref_div, &post_div); - atombios_crtc_program_ss(rdev, ATOM_DISABLE, radeon_crtc->pll_id, &ss); + atombios_crtc_program_ss(rdev, ATOM_DISABLE, radeon_crtc->pll_id, radeon_crtc->crtc_id, &ss); atombios_crtc_program_pll(crtc, radeon_crtc->crtc_id, radeon_crtc->pll_id, encoder_mode, radeon_encoder->encoder_id, mode->clock, @@ -1059,7 +1056,7 @@ ss.step = step_size; } - atombios_crtc_program_ss(rdev, ATOM_ENABLE, radeon_crtc->pll_id, &ss); + atombios_crtc_program_ss(rdev, ATOM_ENABLE, radeon_crtc->pll_id, radeon_crtc->crtc_id, &ss); } } @@ -1576,11 +1573,11 @@ ASIC_INTERNAL_SS_ON_DCPLL, rdev->clock.default_dispclk); if (ss_enabled) - atombios_crtc_program_ss(rdev, ATOM_DISABLE, ATOM_DCPLL, &ss); + atombios_crtc_program_ss(rdev, ATOM_DISABLE, ATOM_DCPLL, -1, &ss); /* XXX: DCE5, make sure voltage, dispclk is high enough */ atombios_crtc_set_disp_eng_pll(rdev, rdev->clock.default_dispclk); if (ss_enabled) - atombios_crtc_program_ss(rdev, ATOM_ENABLE, ATOM_DCPLL, &ss); + atombios_crtc_program_ss(rdev, ATOM_ENABLE, ATOM_DCPLL, -1, &ss); } } @@ -1639,18 +1636,28 @@ static void atombios_crtc_prepare(struct drm_crtc *crtc) { struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); + struct drm_device *dev = crtc->dev; + struct radeon_device *rdev = dev->dev_private; + radeon_crtc->in_mode_set = true; /* pick pll */ radeon_crtc->pll_id = radeon_atom_pick_pll(crtc); + /* disable crtc pair power gating before programming */ + if (ASIC_IS_DCE6(rdev)) + atombios_powergate_crtc(crtc, ATOM_DISABLE); + atombios_lock_crtc(crtc, ATOM_ENABLE); atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); } static void atombios_crtc_commit(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); + atombios_crtc_dpms(crtc, DRM_MODE_DPMS_ON); atombios_lock_crtc(crtc, ATOM_DISABLE); + radeon_crtc->in_mode_set = false; } static void atombios_crtc_disable(struct drm_crtc *crtc) @@ -1659,8 +1666,23 @@ struct drm_device *dev = crtc->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_atom_ss ss; + int i; atombios_crtc_dpms(crtc, DRM_MODE_DPMS_OFF); + if (ASIC_IS_DCE6(rdev)) + atombios_powergate_crtc(crtc, ATOM_ENABLE); + + for (i = 0; i < rdev->num_crtc; i++) { + if (rdev->mode_info.crtcs[i] && + rdev->mode_info.crtcs[i]->enabled && + i != radeon_crtc->crtc_id && + radeon_crtc->pll_id == rdev->mode_info.crtcs[i]->pll_id) { + /* one other crtc is using this pll don't turn + * off the pll + */ + goto done; + } + } switch (radeon_crtc->pll_id) { case ATOM_PPLL1: @@ -1678,6 +1700,7 @@ default: break; } +done: radeon_crtc->pll_id = -1; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_display.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_display.c @@ -695,10 +695,15 @@ if (radeon_connector->router.ddc_valid) radeon_router_select_ddc_port(radeon_connector); - if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || - (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) || - (radeon_connector_encoder_get_dp_bridge_encoder_id(&radeon_connector->base) != - ENCODER_OBJECT_ID_NONE)) { + if (radeon_connector_encoder_get_dp_bridge_encoder_id(&radeon_connector->base) != + ENCODER_OBJECT_ID_NONE) { + struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; + + if (dig->dp_i2c_bus) + radeon_connector->edid = drm_get_edid(&radeon_connector->base, + &dig->dp_i2c_bus->adapter); + } else if ((radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_DisplayPort) || + (radeon_connector->base.connector_type == DRM_MODE_CONNECTOR_eDP)) { struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT || @@ -1106,14 +1111,16 @@ } radeon_fb = kzalloc(sizeof(*radeon_fb), GFP_KERNEL); - if (radeon_fb == NULL) + if (radeon_fb == NULL) { + drm_gem_object_unreference_unlocked(obj); return ERR_PTR(-ENOMEM); + } ret = radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj); if (ret) { kfree(radeon_fb); drm_gem_object_unreference_unlocked(obj); - return NULL; + return ERR_PTR(ret); } return &radeon_fb->base; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r600.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600.c @@ -1383,12 +1383,15 @@ u32 disabled_rb_mask) { u32 rendering_pipe_num, rb_num_width, req_rb_num; - u32 pipe_rb_ratio, pipe_rb_remain; + u32 pipe_rb_ratio, pipe_rb_remain, tmp; u32 data = 0, mask = 1 << (max_rb_num - 1); unsigned i, j; /* mask out the RBs that don't exist on that asic */ - disabled_rb_mask |= (0xff << max_rb_num) & 0xff; + tmp = disabled_rb_mask | ((0xff << max_rb_num) & 0xff); + /* make sure at least one RB is available */ + if ((tmp & 0xff) != 0xff) + disabled_rb_mask = tmp; rendering_pipe_num = 1 << tiling_pipe_num; req_rb_num = total_max_rb_num - r600_count_pipe_bits(disabled_rb_mask); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_drv.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_drv.c @@ -59,9 +59,10 @@ * 2.15.0 - add max_pipes query * 2.16.0 - fix evergreen 2D tiled surface calculation * 2.17.0 - add STRMOUT_BASE_UPDATE for r7xx + * 2.18.0 - r600-eg: allow "invalid" DB formats */ #define KMS_DRIVER_MAJOR 2 -#define KMS_DRIVER_MINOR 17 +#define KMS_DRIVER_MINOR 18 #define KMS_DRIVER_PATCHLEVEL 0 int radeon_driver_load_kms(struct drm_device *dev, unsigned long flags); int radeon_driver_unload_kms(struct drm_device *dev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_gem.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_gem.c @@ -134,25 +134,16 @@ struct radeon_device *rdev = rbo->rdev; struct radeon_fpriv *fpriv = file_priv->driver_priv; struct radeon_vm *vm = &fpriv->vm; - struct radeon_bo_va *bo_va, *tmp; if (rdev->family < CHIP_CAYMAN) { return; } if (radeon_bo_reserve(rbo, false)) { + dev_err(rdev->dev, "leaking bo va because we fail to reserve bo\n"); return; } - list_for_each_entry_safe(bo_va, tmp, &rbo->va, bo_list) { - if (bo_va->vm == vm) { - /* remove from this vm address space */ - mutex_lock(&vm->mutex); - list_del(&bo_va->vm_list); - mutex_unlock(&vm->mutex); - list_del(&bo_va->bo_list); - kfree(bo_va); - } - } + radeon_vm_bo_rmv(rdev, vm, rbo); radeon_bo_unreserve(rbo); } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_kms.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_kms.c @@ -39,6 +39,7 @@ if (rdev == NULL) return 0; + radeon_acpi_fini(rdev); radeon_modeset_fini(rdev); radeon_device_fini(rdev); kfree(rdev); @@ -78,11 +79,6 @@ goto out; } - /* Call ACPI methods */ - acpi_status = radeon_acpi_init(rdev); - if (acpi_status) - dev_dbg(&dev->pdev->dev, "Error during ACPI methods call\n"); - /* Again modeset_init should fail only on fatal error * otherwise it should provide enough functionalities * for shadowfb to run @@ -90,6 +86,17 @@ r = radeon_modeset_init(rdev); if (r) dev_err(&dev->pdev->dev, "Fatal error during modeset init\n"); + + /* Call ACPI methods: require modeset init + * but failure is not fatal + */ + if (!r) { + acpi_status = radeon_acpi_init(rdev); + if (acpi_status) + dev_dbg(&dev->pdev->dev, + "Error during ACPI methods call\n"); + } + out: if (r) radeon_driver_unload_kms(dev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_cs.c @@ -274,13 +274,15 @@ p->chunks[p->chunk_ib_idx].length_dw); return -EINVAL; } - if ((p->rdev->flags & RADEON_IS_AGP)) { + if (p->rdev && (p->rdev->flags & RADEON_IS_AGP)) { p->chunks[p->chunk_ib_idx].kpage[0] = kmalloc(PAGE_SIZE, GFP_KERNEL); p->chunks[p->chunk_ib_idx].kpage[1] = kmalloc(PAGE_SIZE, GFP_KERNEL); if (p->chunks[p->chunk_ib_idx].kpage[0] == NULL || p->chunks[p->chunk_ib_idx].kpage[1] == NULL) { - kfree(p->chunks[i].kpage[0]); - kfree(p->chunks[i].kpage[1]); + kfree(p->chunks[p->chunk_ib_idx].kpage[0]); + kfree(p->chunks[p->chunk_ib_idx].kpage[1]); + p->chunks[p->chunk_ib_idx].kpage[0] = NULL; + p->chunks[p->chunk_ib_idx].kpage[1] = NULL; return -ENOMEM; } } @@ -294,6 +296,28 @@ return 0; } +static void radeon_bo_vm_fence_va(struct radeon_cs_parser *parser, + struct radeon_fence *fence) +{ + struct radeon_fpriv *fpriv = parser->filp->driver_priv; + struct radeon_vm *vm = &fpriv->vm; + struct radeon_bo_list *lobj; + + if (parser->chunk_ib_idx == -1) + return; + if ((parser->cs_flags & RADEON_CS_USE_VM) == 0) + return; + + list_for_each_entry(lobj, &parser->validated, tv.head) { + struct radeon_bo_va *bo_va; + struct radeon_bo *rbo = lobj->bo; + + bo_va = radeon_bo_va(rbo, vm); + radeon_fence_unref(&bo_va->fence); + bo_va->fence = radeon_fence_ref(fence); + } +} + /** * cs_parser_fini() - clean parser states * @parser: parser structure holding parsing context. @@ -306,11 +330,14 @@ { unsigned i; - if (!error) + if (!error) { + /* fence all bo va before ttm_eu_fence_buffer_objects so bo are still reserved */ + radeon_bo_vm_fence_va(parser, parser->ib.fence); ttm_eu_fence_buffer_objects(&parser->validated, parser->ib.fence); - else + } else { ttm_eu_backoff_reservation(&parser->validated); + } if (parser->relocs != NULL) { for (i = 0; i < parser->nrelocs; i++) { @@ -377,7 +404,7 @@ if (r) { DRM_ERROR("Failed to schedule IB !\n"); } - return 0; + return r; } static int radeon_bo_vm_update_pte(struct radeon_cs_parser *parser, @@ -407,7 +434,6 @@ if (parser->chunk_ib_idx == -1) return 0; - if ((parser->cs_flags & RADEON_CS_USE_VM) == 0) return 0; @@ -589,7 +615,8 @@ struct radeon_cs_chunk *ibc = &p->chunks[p->chunk_ib_idx]; int i; int size = PAGE_SIZE; - bool copy1 = (p->rdev->flags & RADEON_IS_AGP) ? false : true; + bool copy1 = (p->rdev && (p->rdev->flags & RADEON_IS_AGP)) ? + false : true; for (i = ibc->last_copied_page + 1; i < pg_idx; i++) { if (DRM_COPY_FROM_USER(p->ib.ptr + (i * (PAGE_SIZE/4)), --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_pm.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_pm.c @@ -24,9 +24,6 @@ #include "radeon.h" #include "avivod.h" #include "atom.h" -#ifdef CONFIG_ACPI -#include -#endif #include #include #include @@ -51,8 +48,6 @@ static void radeon_pm_update_profile(struct radeon_device *rdev); static void radeon_pm_set_clocks(struct radeon_device *rdev); -#define ACPI_AC_CLASS "ac_adapter" - int radeon_pm_get_type_index(struct radeon_device *rdev, enum radeon_pm_state_type ps_type, int instance) @@ -71,33 +66,17 @@ return rdev->pm.default_power_state_index; } -#ifdef CONFIG_ACPI -static int radeon_acpi_event(struct notifier_block *nb, - unsigned long val, - void *data) -{ - struct radeon_device *rdev = container_of(nb, struct radeon_device, acpi_nb); - struct acpi_bus_event *entry = (struct acpi_bus_event *)data; - - if (strcmp(entry->device_class, ACPI_AC_CLASS) == 0) { - if (power_supply_is_system_supplied() > 0) - DRM_DEBUG_DRIVER("pm: AC\n"); - else - DRM_DEBUG_DRIVER("pm: DC\n"); - - if (rdev->pm.pm_method == PM_METHOD_PROFILE) { - if (rdev->pm.profile == PM_PROFILE_AUTO) { - mutex_lock(&rdev->pm.mutex); - radeon_pm_update_profile(rdev); - radeon_pm_set_clocks(rdev); - mutex_unlock(&rdev->pm.mutex); - } +void radeon_pm_acpi_event_handler(struct radeon_device *rdev) +{ + if (rdev->pm.pm_method == PM_METHOD_PROFILE) { + if (rdev->pm.profile == PM_PROFILE_AUTO) { + mutex_lock(&rdev->pm.mutex); + radeon_pm_update_profile(rdev); + radeon_pm_set_clocks(rdev); + mutex_unlock(&rdev->pm.mutex); } } - - return NOTIFY_OK; } -#endif static void radeon_pm_update_profile(struct radeon_device *rdev) { @@ -555,7 +534,9 @@ void radeon_pm_resume(struct radeon_device *rdev) { /* set up the default clocks if the MC ucode is loaded */ - if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { + if ((rdev->family >= CHIP_BARTS) && + (rdev->family <= CHIP_CAYMAN) && + rdev->mc_fw) { if (rdev->pm.default_vddc) radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, SET_VOLTAGE_TYPE_ASIC_VDDC); @@ -610,7 +591,9 @@ radeon_pm_print_states(rdev); radeon_pm_init_profile(rdev); /* set up the default clocks if the MC ucode is loaded */ - if (ASIC_IS_DCE5(rdev) && rdev->mc_fw) { + if ((rdev->family >= CHIP_BARTS) && + (rdev->family <= CHIP_CAYMAN) && + rdev->mc_fw) { if (rdev->pm.default_vddc) radeon_atom_set_voltage(rdev, rdev->pm.default_vddc, SET_VOLTAGE_TYPE_ASIC_VDDC); @@ -640,10 +623,6 @@ if (ret) DRM_ERROR("failed to create device file for power method\n"); -#ifdef CONFIG_ACPI - rdev->acpi_nb.notifier_call = radeon_acpi_event; - register_acpi_notifier(&rdev->acpi_nb); -#endif if (radeon_debugfs_pm_init(rdev)) { DRM_ERROR("Failed to register debugfs file for PM!\n"); } @@ -674,9 +653,6 @@ device_remove_file(rdev->dev, &dev_attr_power_profile); device_remove_file(rdev->dev, &dev_attr_power_method); -#ifdef CONFIG_ACPI - unregister_acpi_notifier(&rdev->acpi_nb); -#endif } if (rdev->pm.power_state) --- linux-3.5.0.orig/drivers/gpu/drm/radeon/rv515.c +++ linux-3.5.0/drivers/gpu/drm/radeon/rv515.c @@ -281,12 +281,8 @@ void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save) { - save->d1vga_control = RREG32(R_000330_D1VGA_CONTROL); - save->d2vga_control = RREG32(R_000338_D2VGA_CONTROL); save->vga_render_control = RREG32(R_000300_VGA_RENDER_CONTROL); save->vga_hdp_control = RREG32(R_000328_VGA_HDP_CONTROL); - save->d1crtc_control = RREG32(R_006080_D1CRTC_CONTROL); - save->d2crtc_control = RREG32(R_006880_D2CRTC_CONTROL); /* Stop all video */ WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); @@ -311,15 +307,6 @@ /* Unlock host access */ WREG32(R_000328_VGA_HDP_CONTROL, save->vga_hdp_control); mdelay(1); - /* Restore video state */ - WREG32(R_000330_D1VGA_CONTROL, save->d1vga_control); - WREG32(R_000338_D2VGA_CONTROL, save->d2vga_control); - WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 1); - WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 1); - WREG32(R_006080_D1CRTC_CONTROL, save->d1crtc_control); - WREG32(R_006880_D2CRTC_CONTROL, save->d2crtc_control); - WREG32(R_0060E8_D1CRTC_UPDATE_LOCK, 0); - WREG32(R_0068E8_D2CRTC_UPDATE_LOCK, 0); WREG32(R_000300_VGA_RENDER_CONTROL, save->vga_render_control); } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreen_cs.c +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen_cs.c @@ -961,13 +961,15 @@ if (track->db_dirty) { /* Check stencil buffer */ - if (G_028800_STENCIL_ENABLE(track->db_depth_control)) { + if (G_028044_FORMAT(track->db_s_info) != V_028044_STENCIL_INVALID && + G_028800_STENCIL_ENABLE(track->db_depth_control)) { r = evergreen_cs_track_validate_stencil(p); if (r) return r; } /* Check depth buffer */ - if (G_028800_Z_ENABLE(track->db_depth_control)) { + if (G_028040_FORMAT(track->db_z_info) != V_028040_Z_INVALID && + G_028800_Z_ENABLE(track->db_depth_control)) { r = evergreen_cs_track_validate_depth(p); if (r) return r; @@ -2670,7 +2672,11 @@ /* check config regs */ switch (reg) { + case WAIT_UNTIL: case GRBM_GFX_INDEX: + case CP_STRMOUT_CNTL: + case CP_COHER_CNTL: + case CP_COHER_SIZE: case VGT_VTX_VECT_EJECT_REG: case VGT_CACHE_INVALIDATION: case VGT_GS_VERTEX_REUSE: @@ -2775,6 +2781,7 @@ case CAYMAN_SQ_EX_ALLOC_TABLE_SLOTS: return true; default: + DRM_ERROR("Invalid register 0x%x in CS\n", reg); return false; } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_ring.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_ring.c @@ -219,6 +219,9 @@ { int r; + /* make sure we aren't trying to allocate more space than there is on the ring */ + if (ndw > (ring->ring_size / 4)) + return -ENOMEM; /* Align requested size with padding so unlock_commit can * pad safely */ ndw = (ndw + ring->align_mask) & ~ring->align_mask; @@ -394,6 +397,7 @@ if (radeon_debugfs_ring_init(rdev, ring)) { DRM_ERROR("Failed to register debugfs file for rings !\n"); } + radeon_ring_lockup_update(ring); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/sid.h +++ linux-3.5.0/drivers/gpu/drm/radeon/sid.h @@ -91,7 +91,18 @@ #define VM_CONTEXT0_CNTL 0x1410 #define ENABLE_CONTEXT (1 << 0) #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) +#define RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 3) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 6) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 7) +#define PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 9) +#define PDE0_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 10) +#define VALID_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 12) +#define VALID_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 13) +#define READ_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 15) +#define READ_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 16) +#define WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 18) +#define WRITE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 19) #define VM_CONTEXT1_CNTL 0x1414 #define VM_CONTEXT0_CNTL2 0x1430 #define VM_CONTEXT1_CNTL2 0x1434 @@ -104,6 +115,9 @@ #define VM_CONTEXT14_PAGE_TABLE_BASE_ADDR 0x1450 #define VM_CONTEXT15_PAGE_TABLE_BASE_ADDR 0x1454 +#define VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x14FC +#define VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x14DC + #define VM_INVALIDATE_REQUEST 0x1478 #define VM_INVALIDATE_RESPONSE 0x147c @@ -424,6 +438,7 @@ # define RDERR_INT_ENABLE (1 << 0) # define GUI_IDLE_INT_ENABLE (1 << 19) +#define CP_STRMOUT_CNTL 0x84FC #define SCRATCH_REG0 0x8500 #define SCRATCH_REG1 0x8504 #define SCRATCH_REG2 0x8508 --- linux-3.5.0.orig/drivers/gpu/drm/radeon/nid.h +++ linux-3.5.0/drivers/gpu/drm/radeon/nid.h @@ -80,7 +80,18 @@ #define VM_CONTEXT0_CNTL 0x1410 #define ENABLE_CONTEXT (1 << 0) #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) +#define RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 3) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 6) +#define DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 7) +#define PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 9) +#define PDE0_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 10) +#define VALID_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 12) +#define VALID_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 13) +#define READ_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 15) +#define READ_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 16) +#define WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT (1 << 18) +#define WRITE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 19) #define VM_CONTEXT1_CNTL 0x1414 #define VM_CONTEXT0_CNTL2 0x1430 #define VM_CONTEXT1_CNTL2 0x1434 --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_agp.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_agp.c @@ -70,9 +70,12 @@ /* Intel 82830 830 Chipset Host Bridge / Mobility M6 LY Needs AGPMode 2 (fdo #17360)*/ { PCI_VENDOR_ID_INTEL, 0x3575, PCI_VENDOR_ID_ATI, 0x4c59, PCI_VENDOR_ID_DELL, 0x00e3, 2}, - /* Intel 82852/82855 host bridge / Mobility FireGL 9000 R250 Needs AGPMode 1 (lp #296617) */ + /* Intel 82852/82855 host bridge / Mobility FireGL 9000 RV250 Needs AGPMode 1 (lp #296617) */ { PCI_VENDOR_ID_INTEL, 0x3580, PCI_VENDOR_ID_ATI, 0x4c66, PCI_VENDOR_ID_DELL, 0x0149, 1}, + /* Intel 82855PM host bridge / Mobility FireGL 9000 RV250 Needs AGPMode 1 for suspend/resume */ + { PCI_VENDOR_ID_INTEL, 0x3340, PCI_VENDOR_ID_ATI, 0x4c66, + PCI_VENDOR_ID_IBM, 0x0531, 1}, /* Intel 82852/82855 host bridge / Mobility 9600 M10 RV350 Needs AGPMode 1 (deb #467460) */ { PCI_VENDOR_ID_INTEL, 0x3580, PCI_VENDOR_ID_ATI, 0x4e50, 0x1025, 0x0061, 1}, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_object.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_object.c @@ -52,11 +52,7 @@ list_for_each_entry_safe(bo_va, tmp, &bo->va, bo_list) { /* remove from all vm address space */ - mutex_lock(&bo_va->vm->mutex); - list_del(&bo_va->vm_list); - mutex_unlock(&bo_va->vm->mutex); - list_del(&bo_va->bo_list); - kfree(bo_va); + radeon_vm_bo_rmv(bo->rdev, bo_va->vm, bo); } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_i2c.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_i2c.c @@ -39,7 +39,7 @@ * radeon_ddc_probe * */ -bool radeon_ddc_probe(struct radeon_connector *radeon_connector) +bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux) { u8 out = 0x0; u8 buf[8]; @@ -63,7 +63,13 @@ if (radeon_connector->router.ddc_valid) radeon_router_select_ddc_port(radeon_connector); - ret = i2c_transfer(&radeon_connector->ddc_bus->adapter, msgs, 2); + if (use_aux) { + struct radeon_connector_atom_dig *dig = radeon_connector->con_priv; + ret = i2c_transfer(&dig->dp_i2c_bus->adapter, msgs, 2); + } else { + ret = i2c_transfer(&radeon_connector->ddc_bus->adapter, msgs, 2); + } + if (ret != 2) /* Couldn't find an accessible DDC on this connector */ return false; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_acpi.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_acpi.h @@ -0,0 +1,445 @@ +/* + * Copyright 2012 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef RADEON_ACPI_H +#define RADEON_ACPI_H + +struct radeon_device; +struct acpi_bus_event; + +int radeon_atif_handler(struct radeon_device *rdev, + struct acpi_bus_event *event); + +/* AMD hw uses four ACPI control methods: + * 1. ATIF + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATIF provides an entry point for the gfx driver to interact with the sbios. + * The AMD ACPI notification mechanism uses Notify (VGA, 0x81) or a custom + * notification. Which notification is used as indicated by the ATIF Control + * Method GET_SYSTEM_PARAMETERS. When the driver receives Notify (VGA, 0x81) or + * a custom notification it invokes ATIF Control Method GET_SYSTEM_BIOS_REQUESTS + * to identify pending System BIOS requests and associated parameters. For + * example, if one of the pending requests is DISPLAY_SWITCH_REQUEST, the driver + * will perform display device detection and invoke ATIF Control Method + * SELECT_ACTIVE_DISPLAYS. + * + * 2. ATPX + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATPX methods are used on PowerXpress systems to handle mux switching and + * discrete GPU power control. + * + * 3. ATRM + * ARG0: (ACPI_INTEGER) offset of vbios rom data + * ARG1: (ACPI_BUFFER) size of the buffer to fill (up to 4K). + * OUTPUT: (ACPI_BUFFER) output buffer + * ATRM provides an interfacess to access the discrete GPU vbios image on + * PowerXpress systems with multiple GPUs. + * + * 4. ATCS + * ARG0: (ACPI_INTEGER) function code + * ARG1: (ACPI_BUFFER) parameter buffer, 256 bytes + * OUTPUT: (ACPI_BUFFER) output buffer, 256 bytes + * ATCS provides an interface to AMD chipset specific functionality. + * + */ +/* ATIF */ +#define ATIF_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATIF_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported notifications mask + * DWORD - supported functions bit vector + */ +/* Notifications mask */ +# define ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED (1 << 0) +# define ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED (1 << 1) +# define ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED (1 << 2) +# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED (1 << 3) +# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED (1 << 4) +# define ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED (1 << 5) +# define ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED (1 << 6) +# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED (1 << 7) +# define ATIF_DGPU_DISPLAY_EVENT_SUPPORTED (1 << 8) +/* supported functions vector */ +# define ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED (1 << 0) +# define ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED (1 << 1) +# define ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED (1 << 2) +# define ATIF_GET_LID_STATE_SUPPORTED (1 << 3) +# define ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED (1 << 4) +# define ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED (1 << 5) +# define ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED (1 << 6) +# define ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED (1 << 7) +# define ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED (1 << 12) +# define ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED (1 << 14) +#define ATIF_FUNCTION_GET_SYSTEM_PARAMETERS 0x1 +/* ARG0: ATIF_FUNCTION_GET_SYSTEM_PARAMETERS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + * + * OR + * + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + * BYTE - notify command code + * + * flags + * bits 1:0: + * 0 - Notify(VGA, 0x81) is not used for notification + * 1 - Notify(VGA, 0x81) is used for notification + * 2 - Notify(VGA, n) is used for notification where + * n (0xd0-0xd9) is specified in notify command code. + * bit 2: + * 1 - lid changes not reported though int10 + */ +#define ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS 0x2 +/* ARG0: ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - pending sbios requests + * BYTE - panel expansion mode + * BYTE - thermal state: target gfx controller + * BYTE - thermal state: state id (0: exit state, non-0: state) + * BYTE - forced power state: target gfx controller + * BYTE - forced power state: state id + * BYTE - system power source + * BYTE - panel backlight level (0-255) + */ +/* pending sbios requests */ +# define ATIF_DISPLAY_SWITCH_REQUEST (1 << 0) +# define ATIF_EXPANSION_MODE_CHANGE_REQUEST (1 << 1) +# define ATIF_THERMAL_STATE_CHANGE_REQUEST (1 << 2) +# define ATIF_FORCED_POWER_STATE_CHANGE_REQUEST (1 << 3) +# define ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST (1 << 4) +# define ATIF_DISPLAY_CONF_CHANGE_REQUEST (1 << 5) +# define ATIF_PX_GFX_SWITCH_REQUEST (1 << 6) +# define ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST (1 << 7) +# define ATIF_DGPU_DISPLAY_EVENT (1 << 8) +/* panel expansion mode */ +# define ATIF_PANEL_EXPANSION_DISABLE 0 +# define ATIF_PANEL_EXPANSION_FULL 1 +# define ATIF_PANEL_EXPANSION_ASPECT 2 +/* target gfx controller */ +# define ATIF_TARGET_GFX_SINGLE 0 +# define ATIF_TARGET_GFX_PX_IGPU 1 +# define ATIF_TARGET_GFX_PX_DGPU 2 +/* system power source */ +# define ATIF_POWER_SOURCE_AC 1 +# define ATIF_POWER_SOURCE_DC 2 +# define ATIF_POWER_SOURCE_RESTRICTED_AC_1 3 +# define ATIF_POWER_SOURCE_RESTRICTED_AC_2 4 +#define ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS 0x3 +/* ARG0: ATIF_FUNCTION_SELECT_ACTIVE_DISPLAYS + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - selected displays + * WORD - connected displays + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - selected displays + */ +# define ATIF_LCD1 (1 << 0) +# define ATIF_CRT1 (1 << 1) +# define ATIF_TV (1 << 2) +# define ATIF_DFP1 (1 << 3) +# define ATIF_CRT2 (1 << 4) +# define ATIF_LCD2 (1 << 5) +# define ATIF_DFP2 (1 << 7) +# define ATIF_CV (1 << 8) +# define ATIF_DFP3 (1 << 9) +# define ATIF_DFP4 (1 << 10) +# define ATIF_DFP5 (1 << 11) +# define ATIF_DFP6 (1 << 12) +#define ATIF_FUNCTION_GET_LID_STATE 0x4 +/* ARG0: ATIF_FUNCTION_GET_LID_STATE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - lid state (0: open, 1: closed) + * + * GET_LID_STATE only works at boot and resume, for general lid + * status, use the kernel provided status + */ +#define ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS 0x5 +/* ARG0: ATIF_FUNCTION_GET_TV_STANDARD_FROM_CMOS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - 0 + * BYTE - TV standard + */ +# define ATIF_TV_STD_NTSC 0 +# define ATIF_TV_STD_PAL 1 +# define ATIF_TV_STD_PALM 2 +# define ATIF_TV_STD_PAL60 3 +# define ATIF_TV_STD_NTSCJ 4 +# define ATIF_TV_STD_PALCN 5 +# define ATIF_TV_STD_PALN 6 +# define ATIF_TV_STD_SCART_RGB 9 +#define ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS 0x6 +/* ARG0: ATIF_FUNCTION_SET_TV_STANDARD_IN_CMOS + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - 0 + * BYTE - TV standard + * OUTPUT: none + */ +#define ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS 0x7 +/* ARG0: ATIF_FUNCTION_GET_PANEL_EXPANSION_MODE_FROM_CMOS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - panel expansion mode + */ +#define ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS 0x8 +/* ARG0: ATIF_FUNCTION_SET_PANEL_EXPANSION_MODE_IN_CMOS + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - panel expansion mode + * OUTPUT: none + */ +#define ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION 0xD +/* ARG0: ATIF_FUNCTION_TEMPERATURE_CHANGE_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - gfx controller id + * BYTE - current temperature (degress Celsius) + * OUTPUT: none + */ +#define ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES 0xF +/* ARG0: ATIF_FUNCTION_GET_GRAPHICS_DEVICE_TYPES + * ARG1: none + * OUTPUT: + * WORD - number of gfx devices + * WORD - device structure size in bytes (excludes device size field) + * DWORD - flags \ + * WORD - bus number } repeated structure + * WORD - device number / + */ +/* flags */ +# define ATIF_PX_REMOVABLE_GRAPHICS_DEVICE (1 << 0) +# define ATIF_XGP_PORT (1 << 1) +# define ATIF_VGA_ENABLED_GRAPHICS_DEVICE (1 << 2) +# define ATIF_XGP_PORT_IN_DOCK (1 << 3) + +/* ATPX */ +#define ATPX_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATPX_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported functions bit vector + */ +/* supported functions vector */ +# define ATPX_GET_PX_PARAMETERS_SUPPORTED (1 << 0) +# define ATPX_POWER_CONTROL_SUPPORTED (1 << 1) +# define ATPX_DISPLAY_MUX_CONTROL_SUPPORTED (1 << 2) +# define ATPX_I2C_MUX_CONTROL_SUPPORTED (1 << 3) +# define ATPX_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION_SUPPORTED (1 << 4) +# define ATPX_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION_SUPPORTED (1 << 5) +# define ATPX_GET_DISPLAY_CONNECTORS_MAPPING_SUPPORTED (1 << 7) +# define ATPX_GET_DISPLAY_DETECTION_PORTS_SUPPORTED (1 << 8) +#define ATPX_FUNCTION_GET_PX_PARAMETERS 0x1 +/* ARG0: ATPX_FUNCTION_GET_PX_PARAMETERS + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags + */ +/* flags */ +# define ATPX_LVDS_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 0) +# define ATPX_CRT1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 1) +# define ATPX_DVI1_I2C_AVAILABLE_TO_BOTH_GPUS (1 << 2) +# define ATPX_CRT1_RGB_SIGNAL_MUXED (1 << 3) +# define ATPX_TV_SIGNAL_MUXED (1 << 4) +# define ATPX_DFP_SIGNAL_MUXED (1 << 5) +# define ATPX_SEPARATE_MUX_FOR_I2C (1 << 6) +# define ATPX_DYNAMIC_PX_SUPPORTED (1 << 7) +# define ATPX_ACF_NOT_SUPPORTED (1 << 8) +# define ATPX_FIXED_NOT_SUPPORTED (1 << 9) +# define ATPX_DYNAMIC_DGPU_POWER_OFF_SUPPORTED (1 << 10) +# define ATPX_DGPU_REQ_POWER_FOR_DISPLAYS (1 << 11) +#define ATPX_FUNCTION_POWER_CONTROL 0x2 +/* ARG0: ATPX_FUNCTION_POWER_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * BYTE - dGPU power state (0: power off, 1: power on) + * OUTPUT: none + */ +#define ATPX_FUNCTION_DISPLAY_MUX_CONTROL 0x3 +/* ARG0: ATPX_FUNCTION_DISPLAY_MUX_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - display mux control (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +# define ATPX_INTEGRATED_GPU 0 +# define ATPX_DISCRETE_GPU 1 +#define ATPX_FUNCTION_I2C_MUX_CONTROL 0x4 +/* ARG0: ATPX_FUNCTION_I2C_MUX_CONTROL + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - i2c/aux/hpd mux control (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION 0x5 +/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - target gpu (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION 0x6 +/* ARG0: ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - target gpu (0: iGPU, 1: dGPU) + * OUTPUT: none + */ +#define ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING 0x8 +/* ARG0: ATPX_FUNCTION_GET_DISPLAY_CONNECTORS_MAPPING + * ARG1: none + * OUTPUT: + * WORD - number of display connectors + * WORD - connector structure size in bytes (excludes connector size field) + * BYTE - flags \ + * BYTE - ATIF display vector bit position } repeated + * BYTE - adapter id (0: iGPU, 1-n: dGPU ordered by pcie bus number) } structure + * WORD - connector ACPI id / + */ +/* flags */ +# define ATPX_DISPLAY_OUTPUT_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 0) +# define ATPX_DISPLAY_HPD_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 1) +# define ATPX_DISPLAY_I2C_SUPPORTED_BY_ADAPTER_ID_DEVICE (1 << 2) +#define ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS 0x9 +/* ARG0: ATPX_FUNCTION_GET_DISPLAY_DETECTION_PORTS + * ARG1: none + * OUTPUT: + * WORD - number of HPD/DDC ports + * WORD - port structure size in bytes (excludes port size field) + * BYTE - ATIF display vector bit position \ + * BYTE - hpd id } reapeated structure + * BYTE - ddc id / + * + * available on A+A systems only + */ +/* hpd id */ +# define ATPX_HPD_NONE 0 +# define ATPX_HPD1 1 +# define ATPX_HPD2 2 +# define ATPX_HPD3 3 +# define ATPX_HPD4 4 +# define ATPX_HPD5 5 +# define ATPX_HPD6 6 +/* ddc id */ +# define ATPX_DDC_NONE 0 +# define ATPX_DDC1 1 +# define ATPX_DDC2 2 +# define ATPX_DDC3 3 +# define ATPX_DDC4 4 +# define ATPX_DDC5 5 +# define ATPX_DDC6 6 +# define ATPX_DDC7 7 +# define ATPX_DDC8 8 + +/* ATCS */ +#define ATCS_FUNCTION_VERIFY_INTERFACE 0x0 +/* ARG0: ATCS_FUNCTION_VERIFY_INTERFACE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * WORD - version + * DWORD - supported functions bit vector + */ +/* supported functions vector */ +# define ATCS_GET_EXTERNAL_STATE_SUPPORTED (1 << 0) +# define ATCS_PCIE_PERFORMANCE_REQUEST_SUPPORTED (1 << 1) +# define ATCS_PCIE_DEVICE_READY_NOTIFICATION_SUPPORTED (1 << 2) +# define ATCS_SET_PCIE_BUS_WIDTH_SUPPORTED (1 << 3) +#define ATCS_FUNCTION_GET_EXTERNAL_STATE 0x1 +/* ARG0: ATCS_FUNCTION_GET_EXTERNAL_STATE + * ARG1: none + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * DWORD - valid flags mask + * DWORD - flags (0: undocked, 1: docked) + */ +/* flags */ +# define ATCS_DOCKED (1 << 0) +#define ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST 0x2 +/* ARG0: ATCS_FUNCTION_PCIE_PERFORMANCE_REQUEST + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) + * WORD - valid flags mask + * WORD - flags + * BYTE - request type + * BYTE - performance request + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - return value + */ +/* flags */ +# define ATCS_ADVERTISE_CAPS (1 << 0) +# define ATCS_WAIT_FOR_COMPLETION (1 << 1) +/* request type */ +# define ATCS_PCIE_LINK_SPEED 1 +/* performance request */ +# define ATCS_REMOVE 0 +# define ATCS_FORCE_LOW_POWER 1 +# define ATCS_PERF_LEVEL_1 2 /* PCIE Gen 1 */ +# define ATCS_PERF_LEVEL_2 3 /* PCIE Gen 2 */ +# define ATCS_PERF_LEVEL_3 4 /* PCIE Gen 3 */ +/* return value */ +# define ATCS_REQUEST_REFUSED 1 +# define ATCS_REQUEST_COMPLETE 2 +# define ATCS_REQUEST_IN_PROGRESS 3 +#define ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION 0x3 +/* ARG0: ATCS_FUNCTION_PCIE_DEVICE_READY_NOTIFICATION + * ARG1: none + * OUTPUT: none + */ +#define ATCS_FUNCTION_SET_PCIE_BUS_WIDTH 0x4 +/* ARG0: ATCS_FUNCTION_SET_PCIE_BUS_WIDTH + * ARG1: + * WORD - structure size in bytes (includes size field) + * WORD - client id (bit 2-0: func num, 7-3: dev num, 15-8: bus num) + * BYTE - number of active lanes + * OUTPUT: + * WORD - structure size in bytes (includes size field) + * BYTE - number of active lanes + */ + +#endif --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_gart.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_gart.c @@ -564,7 +564,7 @@ return -EINVAL; } - if (bo_va->valid) + if (bo_va->valid && mem) return 0; ngpu_pages = radeon_bo_ngpu_pages(bo); @@ -597,11 +597,27 @@ struct radeon_bo *bo) { struct radeon_bo_va *bo_va; + int r; bo_va = radeon_bo_va(bo, vm); if (bo_va == NULL) return 0; + /* wait for va use to end */ + while (bo_va->fence) { + r = radeon_fence_wait(bo_va->fence, false); + if (r) { + DRM_ERROR("error while waiting for fence: %d\n", r); + } + if (r == -EDEADLK) { + r = radeon_gpu_reset(rdev); + if (!r) + continue; + } + break; + } + radeon_fence_unref(&bo_va->fence); + radeon_mutex_lock(&rdev->cs_mutex); mutex_lock(&vm->mutex); radeon_vm_bo_update_pte(rdev, vm, bo, NULL); @@ -661,12 +677,15 @@ radeon_vm_unbind_locked(rdev, vm); radeon_mutex_unlock(&rdev->cs_mutex); - /* remove all bo */ + /* remove all bo at this point non are busy any more because unbind + * waited for the last vm fence to signal + */ r = radeon_bo_reserve(rdev->ring_tmp_bo.bo, false); if (!r) { bo_va = radeon_bo_va(rdev->ring_tmp_bo.bo, vm); list_del_init(&bo_va->bo_list); list_del_init(&bo_va->vm_list); + radeon_fence_unref(&bo_va->fence); radeon_bo_unreserve(rdev->ring_tmp_bo.bo); kfree(bo_va); } @@ -678,6 +697,7 @@ r = radeon_bo_reserve(bo_va->bo, false); if (!r) { list_del_init(&bo_va->bo_list); + radeon_fence_unref(&bo_va->fence); radeon_bo_unreserve(bo_va->bo); kfree(bo_va); } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_atombios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_atombios.c @@ -452,7 +452,7 @@ } /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ - if ((dev->pdev->device == 0x9802) && + if (((dev->pdev->device == 0x9802) || (dev->pdev->device == 0x9806)) && (dev->pdev->subsystem_vendor == 0x1734) && (dev->pdev->subsystem_device == 0x11bd)) { if (*connector_type == DRM_MODE_CONNECTOR_VGA) { @@ -1254,6 +1254,10 @@ if (rdev->clock.max_pixel_clock == 0) rdev->clock.max_pixel_clock = 40000; + /* not technically a clock, but... */ + rdev->mode_info.firmware_flags = + le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); + return true; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_bios.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_bios.c @@ -32,6 +32,7 @@ #include #include +#include /* * BIOS. */ @@ -98,16 +99,81 @@ return true; } +#ifdef CONFIG_ACPI /* ATRM is used to get the BIOS on the discrete cards in * dual-gpu systems. */ +/* retrieve the ROM in 4k blocks */ +#define ATRM_BIOS_PAGE 4096 +/** + * radeon_atrm_call - fetch a chunk of the vbios + * + * @atrm_handle: acpi ATRM handle + * @bios: vbios image pointer + * @offset: offset of vbios image data to fetch + * @len: length of vbios image data to fetch + * + * Executes ATRM to fetch a chunk of the discrete + * vbios image on PX systems (all asics). + * Returns the length of the buffer fetched. + */ +static int radeon_atrm_call(acpi_handle atrm_handle, uint8_t *bios, + int offset, int len) +{ + acpi_status status; + union acpi_object atrm_arg_elements[2], *obj; + struct acpi_object_list atrm_arg; + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; + + atrm_arg.count = 2; + atrm_arg.pointer = &atrm_arg_elements[0]; + + atrm_arg_elements[0].type = ACPI_TYPE_INTEGER; + atrm_arg_elements[0].integer.value = offset; + + atrm_arg_elements[1].type = ACPI_TYPE_INTEGER; + atrm_arg_elements[1].integer.value = len; + + status = acpi_evaluate_object(atrm_handle, NULL, &atrm_arg, &buffer); + if (ACPI_FAILURE(status)) { + printk("failed to evaluate ATRM got %s\n", acpi_format_exception(status)); + return -ENODEV; + } + + obj = (union acpi_object *)buffer.pointer; + memcpy(bios+offset, obj->buffer.pointer, obj->buffer.length); + len = obj->buffer.length; + kfree(buffer.pointer); + return len; +} + static bool radeon_atrm_get_bios(struct radeon_device *rdev) { int ret; int size = 256 * 1024; int i; + struct pci_dev *pdev = NULL; + acpi_handle dhandle, atrm_handle; + acpi_status status; + bool found = false; - if (!radeon_atrm_supported(rdev->pdev)) + /* ATRM is for the discrete card only */ + if (rdev->flags & RADEON_IS_IGP) + return false; + + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) { + dhandle = DEVICE_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; rdev->bios = kmalloc(size, GFP_KERNEL); @@ -117,9 +183,10 @@ } for (i = 0; i < size / ATRM_BIOS_PAGE; i++) { - ret = radeon_atrm_get_bios_chunk(rdev->bios, - (i * ATRM_BIOS_PAGE), - ATRM_BIOS_PAGE); + ret = radeon_atrm_call(atrm_handle, + rdev->bios, + (i * ATRM_BIOS_PAGE), + ATRM_BIOS_PAGE); if (ret < ATRM_BIOS_PAGE) break; } @@ -130,6 +197,12 @@ } return true; } +#else +static inline bool radeon_atrm_get_bios(struct radeon_device *rdev) +{ + return false; +} +#endif static bool ni_read_disabled_bios(struct radeon_device *rdev) { @@ -476,6 +549,61 @@ return legacy_read_disabled_bios(rdev); } +#ifdef CONFIG_ACPI +static bool radeon_acpi_vfct_bios(struct radeon_device *rdev) +{ + bool ret = false; + struct acpi_table_header *hdr; + acpi_size tbl_size; + UEFI_ACPI_VFCT *vfct; + GOP_VBIOS_CONTENT *vbios; + VFCT_IMAGE_HEADER *vhdr; + + if (!ACPI_SUCCESS(acpi_get_table_with_size("VFCT", 1, &hdr, &tbl_size))) + return false; + if (tbl_size < sizeof(UEFI_ACPI_VFCT)) { + DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n"); + goto out_unmap; + } + + vfct = (UEFI_ACPI_VFCT *)hdr; + if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) > tbl_size) { + DRM_ERROR("ACPI VFCT table present but broken (too short #2)\n"); + goto out_unmap; + } + + vbios = (GOP_VBIOS_CONTENT *)((char *)hdr + vfct->VBIOSImageOffset); + vhdr = &vbios->VbiosHeader; + DRM_INFO("ACPI VFCT contains a BIOS for %02x:%02x.%d %04x:%04x, size %d\n", + vhdr->PCIBus, vhdr->PCIDevice, vhdr->PCIFunction, + vhdr->VendorID, vhdr->DeviceID, vhdr->ImageLength); + + if (vhdr->PCIBus != rdev->pdev->bus->number || + vhdr->PCIDevice != PCI_SLOT(rdev->pdev->devfn) || + vhdr->PCIFunction != PCI_FUNC(rdev->pdev->devfn) || + vhdr->VendorID != rdev->pdev->vendor || + vhdr->DeviceID != rdev->pdev->device) { + DRM_INFO("ACPI VFCT table is not for this card\n"); + goto out_unmap; + }; + + if (vfct->VBIOSImageOffset + sizeof(VFCT_IMAGE_HEADER) + vhdr->ImageLength > tbl_size) { + DRM_ERROR("ACPI VFCT image truncated\n"); + goto out_unmap; + } + + rdev->bios = kmemdup(&vbios->VbiosContent, vhdr->ImageLength, GFP_KERNEL); + ret = !!rdev->bios; + +out_unmap: + return ret; +} +#else +static inline bool radeon_acpi_vfct_bios(struct radeon_device *rdev) +{ + return false; +} +#endif bool radeon_get_bios(struct radeon_device *rdev) { @@ -484,6 +612,8 @@ r = radeon_atrm_get_bios(rdev); if (r == false) + r = radeon_acpi_vfct_bios(rdev); + if (r == false) r = igp_read_bios_from_vram(rdev); if (r == false) r = radeon_read_bios(rdev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_encoders.c @@ -28,9 +28,238 @@ #include "radeon_drm.h" #include "radeon.h" #include "atom.h" +#include extern int atom_debug; +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) + +static u8 +radeon_atom_get_backlight_level_from_reg(struct radeon_device *rdev) +{ + u8 backlight_level; + u32 bios_2_scratch; + + if (rdev->family >= CHIP_R600) + bios_2_scratch = RREG32(R600_BIOS_2_SCRATCH); + else + bios_2_scratch = RREG32(RADEON_BIOS_2_SCRATCH); + + backlight_level = ((bios_2_scratch & ATOM_S2_CURRENT_BL_LEVEL_MASK) >> + ATOM_S2_CURRENT_BL_LEVEL_SHIFT); + + return backlight_level; +} + +static void +radeon_atom_set_backlight_level_to_reg(struct radeon_device *rdev, + u8 backlight_level) +{ + u32 bios_2_scratch; + + if (rdev->family >= CHIP_R600) + bios_2_scratch = RREG32(R600_BIOS_2_SCRATCH); + else + bios_2_scratch = RREG32(RADEON_BIOS_2_SCRATCH); + + bios_2_scratch &= ~ATOM_S2_CURRENT_BL_LEVEL_MASK; + bios_2_scratch |= ((backlight_level << ATOM_S2_CURRENT_BL_LEVEL_SHIFT) & + ATOM_S2_CURRENT_BL_LEVEL_MASK); + + if (rdev->family >= CHIP_R600) + WREG32(R600_BIOS_2_SCRATCH, bios_2_scratch); + else + WREG32(RADEON_BIOS_2_SCRATCH, bios_2_scratch); +} + +void +atombios_set_panel_brightness(struct radeon_encoder *radeon_encoder) +{ + struct drm_encoder *encoder = &radeon_encoder->base; + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct radeon_encoder_atom_dig *dig; + DISPLAY_DEVICE_OUTPUT_CONTROL_PS_ALLOCATION args; + int index; + + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + dig = radeon_encoder->enc_priv; + radeon_atom_set_backlight_level_to_reg(rdev, dig->backlight_level); + + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_LVDS: + case ENCODER_OBJECT_ID_INTERNAL_LVTM1: + index = GetIndexIntoMasterTable(COMMAND, LCD1OutputControl); + if (dig->backlight_level == 0) { + args.ucAction = ATOM_LCD_BLOFF; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + } else { + args.ucAction = ATOM_LCD_BL_BRIGHTNESS_CONTROL; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + args.ucAction = ATOM_LCD_BLON; + atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); + } + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: + case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + if (dig->backlight_level == 0) + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLOFF, 0, 0); + else { + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_BL_BRIGHTNESS_CONTROL, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_LCD_BLON, 0, 0); + } + break; + default: + break; + } + } +} + +static u8 radeon_atom_bl_level(struct backlight_device *bd) +{ + u8 level; + + /* Convert brightness to hardware level */ + if (bd->props.brightness < 0) + level = 0; + else if (bd->props.brightness > RADEON_MAX_BL_LEVEL) + level = RADEON_MAX_BL_LEVEL; + else + level = bd->props.brightness; + + return level; +} + +static int radeon_atom_backlight_update_status(struct backlight_device *bd) +{ + struct radeon_backlight_privdata *pdata = bl_get_data(bd); + struct radeon_encoder *radeon_encoder = pdata->encoder; + + if (radeon_encoder->enc_priv) { + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; + dig->backlight_level = radeon_atom_bl_level(bd); + atombios_set_panel_brightness(radeon_encoder); + } + + return 0; +} + +static int radeon_atom_backlight_get_brightness(struct backlight_device *bd) +{ + struct radeon_backlight_privdata *pdata = bl_get_data(bd); + struct radeon_encoder *radeon_encoder = pdata->encoder; + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + + return radeon_atom_get_backlight_level_from_reg(rdev); +} + +static const struct backlight_ops radeon_atom_backlight_ops = { + .get_brightness = radeon_atom_backlight_get_brightness, + .update_status = radeon_atom_backlight_update_status, +}; + +void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector) +{ + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct backlight_device *bd; + struct backlight_properties props; + struct radeon_backlight_privdata *pdata; + struct radeon_encoder_atom_dig *dig; + u8 backlight_level; + + if (!radeon_encoder->enc_priv) + return; + + if (!rdev->is_atom_bios) + return; + + if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) + return; + + pdata = kmalloc(sizeof(struct radeon_backlight_privdata), GFP_KERNEL); + if (!pdata) { + DRM_ERROR("Memory allocation failed\n"); + goto error; + } + + memset(&props, 0, sizeof(props)); + props.max_brightness = RADEON_MAX_BL_LEVEL; + props.type = BACKLIGHT_RAW; + bd = backlight_device_register("radeon_bl", &drm_connector->kdev, + pdata, &radeon_atom_backlight_ops, &props); + if (IS_ERR(bd)) { + DRM_ERROR("Backlight registration failed\n"); + goto error; + } + + 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); + bd->props.power = FB_BLANK_UNBLANK; + backlight_update_status(bd); + + DRM_INFO("radeon atom DIG backlight initialized\n"); + + return; + +error: + kfree(pdata); + return; +} + +static void radeon_atom_backlight_exit(struct radeon_encoder *radeon_encoder) +{ + struct drm_device *dev = radeon_encoder->base.dev; + struct radeon_device *rdev = dev->dev_private; + struct backlight_device *bd = NULL; + struct radeon_encoder_atom_dig *dig; + + if (!radeon_encoder->enc_priv) + return; + + if (!rdev->is_atom_bios) + return; + + if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_BL_CONTROLLED_BY_GPU)) + return; + + dig = radeon_encoder->enc_priv; + bd = dig->bl_dev; + dig->bl_dev = NULL; + + if (bd) { + struct radeon_legacy_backlight_privdata *pdata; + + pdata = bl_get_data(bd); + backlight_device_unregister(bd); + kfree(pdata); + + DRM_INFO("radeon atom LVDS backlight unloaded\n"); + } +} + +#else /* !CONFIG_BACKLIGHT_CLASS_DEVICE */ + +void radeon_atom_backlight_init(struct radeon_encoder *encoder) +{ +} + +static void radeon_atom_backlight_exit(struct radeon_encoder *encoder) +{ +} + +#endif + /* evil but including atombios.h is much worse */ bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index, struct drm_display_mode *mode); @@ -95,7 +324,7 @@ ((radeon_encoder->active_device & (ATOM_DEVICE_DFP_SUPPORT | ATOM_DEVICE_LCD_SUPPORT)) || (radeon_encoder_get_dp_bridge_encoder_id(encoder) != ENCODER_OBJECT_ID_NONE))) { struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); - radeon_dp_set_link_config(connector, mode); + radeon_dp_set_link_config(connector, adjusted_mode); } return true; @@ -1379,6 +1608,8 @@ struct drm_device *dev = encoder->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); + struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder); + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); struct radeon_connector *radeon_connector = NULL; struct radeon_connector_atom_dig *radeon_dig_connector = NULL; @@ -1390,12 +1621,38 @@ switch (mode) { case DRM_MODE_DPMS_ON: - /* some early dce3.2 boards have a bug in their transmitter control table */ - if ((rdev->family == CHIP_RV710) || (rdev->family == CHIP_RV730) || - ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { + if (!connector) + dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; + else + dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector); + + /* setup and enable the encoder */ + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); + atombios_dig_encoder_setup(encoder, + ATOM_ENCODER_CMD_SETUP_PANEL_MODE, + dig->panel_mode); + if (ext_encoder) { + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) + atombios_external_encoder_setup(encoder, ext_encoder, + EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP); + } + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); + } else if (ASIC_IS_DCE4(rdev)) { + /* setup and enable the encoder */ + atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); + /* enable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - else atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); + } else { + /* setup and enable the encoder and transmitter */ + atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); + /* some early dce3.2 boards have a bug in their transmitter control table */ + if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730)) + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0); + } if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { atombios_set_edp_panel_power(connector, @@ -1412,10 +1669,19 @@ case DRM_MODE_DPMS_STANDBY: case DRM_MODE_DPMS_SUSPEND: case DRM_MODE_DPMS_OFF: - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) + if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { + /* disable the transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - else + } else if (ASIC_IS_DCE4(rdev)) { + /* disable the transmitter */ + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); + } else { + /* disable the encoder and transmitter */ atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE_OUTPUT, 0, 0); + atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); + atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); + } if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) { if (ASIC_IS_DCE4(rdev)) atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_DP_VIDEO_OFF, 0); @@ -1732,13 +1998,34 @@ struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc); struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct drm_encoder *test_encoder; - struct radeon_encoder_atom_dig *dig; + struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; uint32_t dig_enc_in_use = 0; - /* DCE4/5 */ - if (ASIC_IS_DCE4(rdev)) { - dig = radeon_encoder->enc_priv; - if (ASIC_IS_DCE41(rdev)) { + if (ASIC_IS_DCE6(rdev)) { + /* DCE6 */ + switch (radeon_encoder->encoder_id) { + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY: + if (dig->linkb) + return 1; + else + return 0; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: + if (dig->linkb) + return 3; + else + return 2; + break; + case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: + if (dig->linkb) + return 5; + else + return 4; + break; + } + } else if (ASIC_IS_DCE4(rdev)) { + /* DCE4/5 */ + if (ASIC_IS_DCE41(rdev) && !ASIC_IS_DCE61(rdev)) { /* ontario follows DCE4 */ if (rdev->family == CHIP_PALM) { if (dig->linkb) @@ -1840,10 +2127,12 @@ struct drm_device *dev = encoder->dev; struct radeon_device *rdev = dev->dev_private; struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); - struct drm_encoder *ext_encoder = radeon_get_external_encoder(encoder); radeon_encoder->pixel_clock = adjusted_mode->clock; + /* need to call this here rather than in prepare() since we need some crtc info */ + radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); + if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE4(rdev)) { if (radeon_encoder->active_device & (ATOM_DEVICE_CV_SUPPORT | ATOM_DEVICE_TV_SUPPORT)) atombios_yuv_setup(encoder, true); @@ -1862,38 +2151,7 @@ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE5(rdev)) { - struct drm_connector *connector = radeon_get_connector_for_encoder(encoder); - struct radeon_encoder_atom_dig *dig = radeon_encoder->enc_priv; - - if (!connector) - dig->panel_mode = DP_PANEL_MODE_EXTERNAL_DP_MODE; - else - dig->panel_mode = radeon_dp_get_panel_mode(encoder, connector); - - /* setup and enable the encoder */ - atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); - atombios_dig_encoder_setup(encoder, - ATOM_ENCODER_CMD_SETUP_PANEL_MODE, - dig->panel_mode); - } else if (ASIC_IS_DCE4(rdev)) { - /* disable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - /* setup and enable the encoder */ - atombios_dig_encoder_setup(encoder, ATOM_ENCODER_CMD_SETUP, 0); - - /* enable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - } else { - /* disable the encoder and transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); - - /* setup and enable the encoder and transmitter */ - atombios_dig_encoder_setup(encoder, ATOM_ENABLE, 0); - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0); - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0); - } + /* handled in dpms */ break; case ENCODER_OBJECT_ID_INTERNAL_DDI: case ENCODER_OBJECT_ID_INTERNAL_DVO1: @@ -1914,14 +2172,6 @@ break; } - if (ext_encoder) { - if (ASIC_IS_DCE41(rdev) || ASIC_IS_DCE61(rdev)) - atombios_external_encoder_setup(encoder, ext_encoder, - EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP); - else - atombios_external_encoder_setup(encoder, ext_encoder, ATOM_ENABLE); - } - atombios_apply_encoder_quirks(encoder, adjusted_mode); if (atombios_get_encoder_mode(encoder) == ATOM_ENCODER_MODE_HDMI) { @@ -2108,7 +2358,6 @@ } radeon_atom_output_lock(encoder, true); - radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); if (connector) { struct radeon_connector *radeon_connector = to_radeon_connector(connector); @@ -2129,6 +2378,7 @@ static void radeon_atom_encoder_commit(struct drm_encoder *encoder) { + /* need to call this here as we need the crtc set up */ radeon_atom_encoder_dpms(encoder, DRM_MODE_DPMS_ON); radeon_atom_output_lock(encoder, false); } @@ -2169,14 +2419,7 @@ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1: case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2: case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA: - if (ASIC_IS_DCE4(rdev)) - /* disable the transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - else { - /* disable the encoder and transmitter */ - atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_DISABLE, 0, 0); - atombios_dig_encoder_setup(encoder, ATOM_DISABLE, 0); - } + /* handled in dpms */ break; case ENCODER_OBJECT_ID_INTERNAL_DDI: case ENCODER_OBJECT_ID_INTERNAL_DVO1: @@ -2272,6 +2515,8 @@ void radeon_enc_destroy(struct drm_encoder *encoder) { struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) + radeon_atom_backlight_exit(radeon_encoder); kfree(radeon_encoder->enc_priv); drm_encoder_cleanup(encoder); kfree(radeon_encoder); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_prime.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_prime.c @@ -195,6 +195,7 @@ bo = dma_buf->priv; if (bo->gem_base.dev == dev) { drm_gem_object_reference(&bo->gem_base); + dma_buf_put(dma_buf); return &bo->gem_base; } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/r600_hdmi.c +++ linux-3.5.0/drivers/gpu/drm/radeon/r600_hdmi.c @@ -545,7 +545,6 @@ /* Called for ATOM_ENCODER_MODE_HDMI only */ if (!dig || !dig->afmt) { - WARN_ON(1); return; } if (!dig->afmt->enabled) --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_atpx_handler.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_atpx_handler.c @@ -12,75 +12,15 @@ #include #include -#define ATPX_VERSION 0 -#define ATPX_GPU_PWR 2 -#define ATPX_MUX_SELECT 3 -#define ATPX_I2C_MUX_SELECT 4 -#define ATPX_SWITCH_START 5 -#define ATPX_SWITCH_END 6 - -#define ATPX_INTEGRATED 0 -#define ATPX_DISCRETE 1 - -#define ATPX_MUX_IGD 0 -#define ATPX_MUX_DISCRETE 1 +#include "radeon_acpi.h" static struct radeon_atpx_priv { bool atpx_detected; /* handle for device - and atpx */ acpi_handle dhandle; acpi_handle atpx_handle; - acpi_handle atrm_handle; } radeon_atpx_priv; -/* retrieve the ROM in 4k blocks */ -static int radeon_atrm_call(acpi_handle atrm_handle, uint8_t *bios, - int offset, int len) -{ - acpi_status status; - union acpi_object atrm_arg_elements[2], *obj; - struct acpi_object_list atrm_arg; - struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; - - atrm_arg.count = 2; - atrm_arg.pointer = &atrm_arg_elements[0]; - - atrm_arg_elements[0].type = ACPI_TYPE_INTEGER; - atrm_arg_elements[0].integer.value = offset; - - atrm_arg_elements[1].type = ACPI_TYPE_INTEGER; - atrm_arg_elements[1].integer.value = len; - - status = acpi_evaluate_object(atrm_handle, NULL, &atrm_arg, &buffer); - if (ACPI_FAILURE(status)) { - printk("failed to evaluate ATRM got %s\n", acpi_format_exception(status)); - return -ENODEV; - } - - obj = (union acpi_object *)buffer.pointer; - memcpy(bios+offset, obj->buffer.pointer, obj->buffer.length); - len = obj->buffer.length; - kfree(buffer.pointer); - return len; -} - -bool radeon_atrm_supported(struct pci_dev *pdev) -{ - /* get the discrete ROM only via ATRM */ - if (!radeon_atpx_priv.atpx_detected) - return false; - - if (radeon_atpx_priv.dhandle == DEVICE_ACPI_HANDLE(&pdev->dev)) - return false; - return true; -} - - -int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len) -{ - return radeon_atrm_call(radeon_atpx_priv.atrm_handle, bios, offset, len); -} - static int radeon_atpx_get_version(acpi_handle handle) { acpi_status status; @@ -92,10 +32,10 @@ atpx_arg.pointer = &atpx_arg_elements[0]; atpx_arg_elements[0].type = ACPI_TYPE_INTEGER; - atpx_arg_elements[0].integer.value = ATPX_VERSION; + atpx_arg_elements[0].integer.value = ATPX_FUNCTION_VERIFY_INTERFACE; atpx_arg_elements[1].type = ACPI_TYPE_INTEGER; - atpx_arg_elements[1].integer.value = ATPX_VERSION; + atpx_arg_elements[1].integer.value = 0; status = acpi_evaluate_object(handle, NULL, &atpx_arg, &buffer); if (ACPI_FAILURE(status)) { @@ -145,27 +85,31 @@ static int radeon_atpx_set_discrete_state(acpi_handle handle, int state) { - return radeon_atpx_execute(handle, ATPX_GPU_PWR, state); + return radeon_atpx_execute(handle, ATPX_FUNCTION_POWER_CONTROL, state); } static int radeon_atpx_switch_mux(acpi_handle handle, int mux_id) { - return radeon_atpx_execute(handle, ATPX_MUX_SELECT, mux_id); + return radeon_atpx_execute(handle, ATPX_FUNCTION_DISPLAY_MUX_CONTROL, mux_id); } static int radeon_atpx_switch_i2c_mux(acpi_handle handle, int mux_id) { - return radeon_atpx_execute(handle, ATPX_I2C_MUX_SELECT, mux_id); + return radeon_atpx_execute(handle, ATPX_FUNCTION_I2C_MUX_CONTROL, mux_id); } static int radeon_atpx_switch_start(acpi_handle handle, int gpu_id) { - return radeon_atpx_execute(handle, ATPX_SWITCH_START, gpu_id); + return radeon_atpx_execute(handle, + ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_START_NOTIFICATION, + gpu_id); } static int radeon_atpx_switch_end(acpi_handle handle, int gpu_id) { - return radeon_atpx_execute(handle, ATPX_SWITCH_END, gpu_id); + return radeon_atpx_execute(handle, + ATPX_FUNCTION_GRAPHICS_DEVICE_SWITCH_END_NOTIFICATION, + gpu_id); } static int radeon_atpx_switchto(enum vga_switcheroo_client_id id) @@ -173,9 +117,9 @@ int gpu_id; if (id == VGA_SWITCHEROO_IGD) - gpu_id = ATPX_INTEGRATED; + gpu_id = ATPX_INTEGRATED_GPU; else - gpu_id = ATPX_DISCRETE; + gpu_id = ATPX_DISCRETE_GPU; radeon_atpx_switch_start(radeon_atpx_priv.atpx_handle, gpu_id); radeon_atpx_switch_mux(radeon_atpx_priv.atpx_handle, gpu_id); @@ -198,7 +142,7 @@ static bool radeon_atpx_pci_probe_handle(struct pci_dev *pdev) { - acpi_handle dhandle, atpx_handle, atrm_handle; + acpi_handle dhandle, atpx_handle; acpi_status status; dhandle = DEVICE_ACPI_HANDLE(&pdev->dev); @@ -209,13 +153,8 @@ if (ACPI_FAILURE(status)) return false; - status = acpi_get_handle(dhandle, "ATRM", &atrm_handle); - if (ACPI_FAILURE(status)) - return false; - radeon_atpx_priv.dhandle = dhandle; radeon_atpx_priv.atpx_handle = atpx_handle; - radeon_atpx_priv.atrm_handle = atrm_handle; return true; } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/atombios_dp.c +++ linux-3.5.0/drivers/gpu/drm/radeon/atombios_dp.c @@ -22,6 +22,7 @@ * * Authors: Dave Airlie * Alex Deucher + * Jerome Glisse */ #include "drmP.h" #include "radeon_drm.h" @@ -654,7 +655,6 @@ ret = radeon_dp_aux_native_read(radeon_connector, DP_LANE0_1_STATUS, link_status, DP_LINK_STATUS_SIZE, 100); if (ret <= 0) { - DRM_ERROR("displayport link status failed\n"); return false; } @@ -833,8 +833,10 @@ else mdelay(dp_info->rd_interval * 4); - if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) + if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) { + DRM_ERROR("displayport link status failed\n"); break; + } if (dp_clock_recovery_ok(dp_info->link_status, dp_info->dp_lane_count)) { clock_recovery = true; @@ -896,8 +898,10 @@ else mdelay(dp_info->rd_interval * 4); - if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) + if (!radeon_dp_get_link_status(dp_info->radeon_connector, dp_info->link_status)) { + DRM_ERROR("displayport link status failed\n"); break; + } if (dp_channel_eq_ok(dp_info->link_status, dp_info->dp_lane_count)) { channel_eq = true; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/si.c +++ linux-3.5.0/drivers/gpu/drm/radeon/si.c @@ -1640,10 +1640,18 @@ rdev->config.si.tile_config |= (3 << 0); break; } - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.si.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.si.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.si.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.si.tile_config |= 2 << 4; + break; + } rdev->config.si.tile_config |= ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; rdev->config.si.tile_config |= @@ -2383,9 +2391,20 @@ /* enable context1-15 */ WREG32(VM_CONTEXT1_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(rdev->dummy_page.addr >> 12)); - WREG32(VM_CONTEXT1_CNTL2, 0); + WREG32(VM_CONTEXT1_CNTL2, 4); WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | - RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); + RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + RANGE_PROTECTION_FAULT_ENABLE_DEFAULT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT | + PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT | + PDE0_PROTECTION_FAULT_ENABLE_DEFAULT | + VALID_PROTECTION_FAULT_ENABLE_INTERRUPT | + VALID_PROTECTION_FAULT_ENABLE_DEFAULT | + READ_PROTECTION_FAULT_ENABLE_INTERRUPT | + READ_PROTECTION_FAULT_ENABLE_DEFAULT | + WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT | + WRITE_PROTECTION_FAULT_ENABLE_DEFAULT); si_pcie_gart_tlb_flush(rdev); DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", @@ -2431,6 +2450,7 @@ /* check config regs */ switch (reg) { case GRBM_GFX_INDEX: + case CP_STRMOUT_CNTL: case VGT_VTX_VECT_EJECT_REG: case VGT_CACHE_INVALIDATION: case VGT_ESGS_RING_SIZE: @@ -3595,6 +3615,16 @@ break; } break; + case 146: + case 147: + dev_err(rdev->dev, "GPU fault detected: %d 0x%08x\n", src_id, src_data); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_ADDR)); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS)); + /* reset addr and status */ + WREG32_P(VM_CONTEXT1_CNTL2, 1, ~1); + break; case 176: /* RINGID0 CP_INT */ radeon_fence_process(rdev, RADEON_RING_TYPE_GFX_INDEX); break; --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreen_reg.h +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen_reg.h @@ -218,6 +218,8 @@ #define EVERGREEN_CRTC_CONTROL 0x6e70 # define EVERGREEN_CRTC_MASTER_EN (1 << 0) # define EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE (1 << 24) +#define EVERGREEN_CRTC_BLANK_CONTROL 0x6e74 +# define EVERGREEN_CRTC_BLANK_DATA_EN (1 << 8) #define EVERGREEN_CRTC_STATUS 0x6e8c # define EVERGREEN_CRTC_V_BLANK (1 << 0) #define EVERGREEN_CRTC_STATUS_POSITION 0x6e90 --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_cursor.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_cursor.c @@ -238,7 +238,8 @@ y = 0; } - if (ASIC_IS_AVIVO(rdev)) { + /* fixed on DCE6 and newer */ + if (ASIC_IS_AVIVO(rdev) && !ASIC_IS_DCE6(rdev)) { int i = 0; struct drm_crtc *crtc_p; @@ -262,8 +263,14 @@ if (!(cursor_end & 0x7f)) w--; } - if (w <= 0) + if (w <= 0) { w = 1; + cursor_end = x - xorigin + w; + if (!(cursor_end & 0x7f)) { + x--; + WARN_ON_ONCE(x < 0); + } + } } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_encoders.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_encoders.c @@ -29,6 +29,14 @@ #include "radeon.h" #include "atom.h" +extern void +radeon_legacy_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector); +extern void +radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder, + struct drm_connector *drm_connector); + + static uint32_t radeon_encoder_clones(struct drm_encoder *encoder) { struct drm_device *dev = encoder->dev; @@ -153,6 +161,7 @@ void radeon_link_encoder_connector(struct drm_device *dev) { + struct radeon_device *rdev = dev->dev_private; struct drm_connector *connector; struct radeon_connector *radeon_connector; struct drm_encoder *encoder; @@ -163,8 +172,15 @@ radeon_connector = to_radeon_connector(connector); list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { radeon_encoder = to_radeon_encoder(encoder); - if (radeon_encoder->devices & radeon_connector->devices) + if (radeon_encoder->devices & radeon_connector->devices) { drm_mode_connector_attach_encoder(connector, encoder); + if (radeon_encoder->devices & (ATOM_DEVICE_LCD_SUPPORT)) { + if (rdev->is_atom_bios) + radeon_atom_backlight_init(radeon_encoder, connector); + else + radeon_legacy_backlight_init(radeon_encoder, connector); + } + } } } } --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreen.c +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreen.c @@ -37,6 +37,16 @@ #define EVERGREEN_PFP_UCODE_SIZE 1120 #define EVERGREEN_PM4_UCODE_SIZE 1376 +static const u32 crtc_offsets[6] = +{ + EVERGREEN_CRTC0_REGISTER_OFFSET, + EVERGREEN_CRTC1_REGISTER_OFFSET, + EVERGREEN_CRTC2_REGISTER_OFFSET, + EVERGREEN_CRTC3_REGISTER_OFFSET, + EVERGREEN_CRTC4_REGISTER_OFFSET, + EVERGREEN_CRTC5_REGISTER_OFFSET +}; + static void evergreen_gpu_init(struct radeon_device *rdev); void evergreen_fini(struct radeon_device *rdev); void evergreen_pcie_gen2_enable(struct radeon_device *rdev); @@ -101,17 +111,19 @@ void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc) { - struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc]; int i; - if (RREG32(EVERGREEN_CRTC_CONTROL + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_MASTER_EN) { + if (crtc >= rdev->num_crtc) + return; + + if (RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[crtc]) & EVERGREEN_CRTC_MASTER_EN) { for (i = 0; i < rdev->usec_timeout; i++) { - if (!(RREG32(EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_V_BLANK)) + if (!(RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK)) break; udelay(1); } for (i = 0; i < rdev->usec_timeout; i++) { - if (RREG32(EVERGREEN_CRTC_STATUS + radeon_crtc->crtc_offset) & EVERGREEN_CRTC_V_BLANK) + if (RREG32(EVERGREEN_CRTC_STATUS + crtc_offsets[crtc]) & EVERGREEN_CRTC_V_BLANK) break; udelay(1); } @@ -1117,175 +1129,117 @@ void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save) { - save->vga_control[0] = RREG32(D1VGA_CONTROL); - save->vga_control[1] = RREG32(D2VGA_CONTROL); + u32 crtc_enabled, tmp, frame_count, blackout; + int i, j; + save->vga_render_control = RREG32(VGA_RENDER_CONTROL); save->vga_hdp_control = RREG32(VGA_HDP_CONTROL); - save->crtc_control[0] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET); - save->crtc_control[1] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET); - if (rdev->num_crtc >= 4) { - save->vga_control[2] = RREG32(EVERGREEN_D3VGA_CONTROL); - save->vga_control[3] = RREG32(EVERGREEN_D4VGA_CONTROL); - save->crtc_control[2] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET); - save->crtc_control[3] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET); - } - if (rdev->num_crtc >= 6) { - save->vga_control[4] = RREG32(EVERGREEN_D5VGA_CONTROL); - save->vga_control[5] = RREG32(EVERGREEN_D6VGA_CONTROL); - save->crtc_control[4] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET); - save->crtc_control[5] = RREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET); - } - /* Stop all video */ + /* disable VGA render */ WREG32(VGA_RENDER_CONTROL, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1); - } - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); + /* blank the display controllers */ + for (i = 0; i < rdev->num_crtc; i++) { + crtc_enabled = RREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i]) & EVERGREEN_CRTC_MASTER_EN; + if (crtc_enabled) { + save->crtc_enabled[i] = true; + if (ASIC_IS_DCE6(rdev)) { + tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); + if (!(tmp & EVERGREEN_CRTC_BLANK_DATA_EN)) { + radeon_wait_for_vblank(rdev, i); + tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + 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]); + if (!(tmp & EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE)) { + radeon_wait_for_vblank(rdev, i); + tmp |= EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + } + } + /* wait for the next frame */ + frame_count = radeon_get_vblank_counter(rdev, i); + for (j = 0; j < rdev->usec_timeout; j++) { + if (radeon_get_vblank_counter(rdev, i) != frame_count) + break; + udelay(1); + } + } else { + save->crtc_enabled[i] = false; + } } - WREG32(D1VGA_CONTROL, 0); - WREG32(D2VGA_CONTROL, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_D3VGA_CONTROL, 0); - WREG32(EVERGREEN_D4VGA_CONTROL, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_D5VGA_CONTROL, 0); - WREG32(EVERGREEN_D6VGA_CONTROL, 0); + radeon_mc_wait_for_idle(rdev); + + blackout = RREG32(MC_SHARED_BLACKOUT_CNTL); + if ((blackout & BLACKOUT_MODE_MASK) != 1) { + /* Block CPU access */ + WREG32(BIF_FB_EN, 0); + /* blackout the MC */ + blackout &= ~BLACKOUT_MODE_MASK; + WREG32(MC_SHARED_BLACKOUT_CNTL, blackout | 1); } + /* wait for the MC to settle */ + udelay(100); } void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC0_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC0_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC0_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC0_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC1_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC1_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC1_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC1_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC2_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC2_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC2_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC2_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC3_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC3_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC3_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC3_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC4_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC4_REGISTER_OFFSET, - upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC4_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC4_REGISTER_OFFSET, - (u32)rdev->mc.vram_start); + u32 tmp, frame_count; + int i, j; - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC5_REGISTER_OFFSET, + /* update crtc base addresses */ + for (i = 0; i < rdev->num_crtc; i++) { + WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i], upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + EVERGREEN_CRTC5_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS_HIGH + crtc_offsets[i], upper_32_bits(rdev->mc.vram_start)); - WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + EVERGREEN_CRTC5_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_PRIMARY_SURFACE_ADDRESS + crtc_offsets[i], (u32)rdev->mc.vram_start); - WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + EVERGREEN_CRTC5_REGISTER_OFFSET, + WREG32(EVERGREEN_GRPH_SECONDARY_SURFACE_ADDRESS + crtc_offsets[i], (u32)rdev->mc.vram_start); } - WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS_HIGH, upper_32_bits(rdev->mc.vram_start)); WREG32(EVERGREEN_VGA_MEMORY_BASE_ADDRESS, (u32)rdev->mc.vram_start); - /* Unlock host access */ + + /* unblackout the MC */ + tmp = RREG32(MC_SHARED_BLACKOUT_CNTL); + tmp &= ~BLACKOUT_MODE_MASK; + WREG32(MC_SHARED_BLACKOUT_CNTL, tmp); + /* allow CPU access */ + WREG32(BIF_FB_EN, FB_READ_EN | FB_WRITE_EN); + + for (i = 0; i < rdev->num_crtc; i++) { + if (save->crtc_enabled[i]) { + if (ASIC_IS_DCE6(rdev)) { + tmp = RREG32(EVERGREEN_CRTC_BLANK_CONTROL + crtc_offsets[i]); + tmp |= EVERGREEN_CRTC_BLANK_DATA_EN; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + 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]); + tmp &= ~EVERGREEN_CRTC_DISP_READ_REQUEST_DISABLE; + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 1); + WREG32(EVERGREEN_CRTC_CONTROL + crtc_offsets[i], tmp); + WREG32(EVERGREEN_CRTC_UPDATE_LOCK + crtc_offsets[i], 0); + } + /* wait for the next frame */ + frame_count = radeon_get_vblank_counter(rdev, i); + for (j = 0; j < rdev->usec_timeout; j++) { + if (radeon_get_vblank_counter(rdev, i) != frame_count) + break; + udelay(1); + } + } + } + /* Unlock vga access */ WREG32(VGA_HDP_CONTROL, save->vga_hdp_control); mdelay(1); - /* Restore video state */ - WREG32(D1VGA_CONTROL, save->vga_control[0]); - WREG32(D2VGA_CONTROL, save->vga_control[1]); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_D3VGA_CONTROL, save->vga_control[2]); - WREG32(EVERGREEN_D4VGA_CONTROL, save->vga_control[3]); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_D5VGA_CONTROL, save->vga_control[4]); - WREG32(EVERGREEN_D6VGA_CONTROL, save->vga_control[5]); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 1); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 1); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 1); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 1); - } - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC0_REGISTER_OFFSET, save->crtc_control[0]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC1_REGISTER_OFFSET, save->crtc_control[1]); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC2_REGISTER_OFFSET, save->crtc_control[2]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC3_REGISTER_OFFSET, save->crtc_control[3]); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC4_REGISTER_OFFSET, save->crtc_control[4]); - WREG32(EVERGREEN_CRTC_CONTROL + EVERGREEN_CRTC5_REGISTER_OFFSET, save->crtc_control[5]); - } - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC0_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC1_REGISTER_OFFSET, 0); - if (rdev->num_crtc >= 4) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC2_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC3_REGISTER_OFFSET, 0); - } - if (rdev->num_crtc >= 6) { - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC4_REGISTER_OFFSET, 0); - WREG32(EVERGREEN_CRTC_UPDATE_LOCK + EVERGREEN_CRTC5_REGISTER_OFFSET, 0); - } WREG32(VGA_RENDER_CONTROL, save->vga_render_control); } @@ -1695,7 +1649,7 @@ case CHIP_SUMO: rdev->config.evergreen.num_ses = 1; rdev->config.evergreen.max_pipes = 4; - rdev->config.evergreen.max_tile_pipes = 2; + rdev->config.evergreen.max_tile_pipes = 4; if (rdev->pdev->device == 0x9648) rdev->config.evergreen.max_simds = 3; else if ((rdev->pdev->device == 0x9647) || @@ -1718,7 +1672,7 @@ rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; - gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; + gb_addr_config = SUMO_GB_ADDR_CONFIG_GOLDEN; break; case CHIP_SUMO2: rdev->config.evergreen.num_ses = 1; @@ -1740,7 +1694,7 @@ rdev->config.evergreen.sc_prim_fifo_size = 0x40; rdev->config.evergreen.sc_hiz_tile_fifo_size = 0x30; rdev->config.evergreen.sc_earlyz_tile_fifo_size = 0x130; - gb_addr_config = REDWOOD_GB_ADDR_CONFIG_GOLDEN; + gb_addr_config = SUMO2_GB_ADDR_CONFIG_GOLDEN; break; case CHIP_BARTS: rdev->config.evergreen.num_ses = 2; @@ -1788,7 +1742,7 @@ break; case CHIP_CAICOS: rdev->config.evergreen.num_ses = 1; - rdev->config.evergreen.max_pipes = 4; + rdev->config.evergreen.max_pipes = 2; rdev->config.evergreen.max_tile_pipes = 2; rdev->config.evergreen.max_simds = 2; rdev->config.evergreen.max_backends = 1 * rdev->config.evergreen.num_ses; @@ -1858,10 +1812,18 @@ if (rdev->flags & RADEON_IS_IGP) rdev->config.evergreen.tile_config |= 1 << 4; else { - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.evergreen.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.evergreen.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.evergreen.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.evergreen.tile_config |= 2 << 4; + break; + } } rdev->config.evergreen.tile_config |= 0 << 8; rdev->config.evergreen.tile_config |= @@ -1901,9 +1863,20 @@ WREG32(DMIF_ADDR_CONFIG, gb_addr_config); WREG32(HDP_ADDR_CONFIG, gb_addr_config); - tmp = gb_addr_config & NUM_PIPES_MASK; - tmp = r6xx_remap_render_backend(rdev, tmp, rdev->config.evergreen.max_backends, - EVERGREEN_MAX_BACKENDS, disabled_rb_mask); + if ((rdev->config.evergreen.max_backends == 1) && + (rdev->flags & RADEON_IS_IGP)) { + if ((disabled_rb_mask & 3) == 1) { + /* RB0 disabled, RB1 enabled */ + tmp = 0x11111111; + } else { + /* RB1 disabled, RB0 enabled */ + tmp = 0x00000000; + } + } else { + tmp = gb_addr_config & NUM_PIPES_MASK; + tmp = r6xx_remap_render_backend(rdev, tmp, rdev->config.evergreen.max_backends, + EVERGREEN_MAX_BACKENDS, disabled_rb_mask); + } WREG32(GB_BACKEND_MAP, tmp); WREG32(CGTS_SYS_TCC_DISABLE, 0); @@ -2961,6 +2934,16 @@ break; } break; + case 146: + case 147: + dev_err(rdev->dev, "GPU fault detected: %d 0x%08x\n", src_id, src_data); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_ADDR)); + dev_err(rdev->dev, " VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n", + RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS)); + /* reset addr and status */ + WREG32_P(VM_CONTEXT1_CNTL2, 1, ~1); + break; case 176: /* CP_INT in ring buffer */ case 177: /* CP_INT in IB1 */ case 178: /* CP_INT in IB2 */ --- linux-3.5.0.orig/drivers/gpu/drm/radeon/evergreend.h +++ linux-3.5.0/drivers/gpu/drm/radeon/evergreend.h @@ -45,6 +45,8 @@ #define TURKS_GB_ADDR_CONFIG_GOLDEN 0x02010002 #define CEDAR_GB_ADDR_CONFIG_GOLDEN 0x02010001 #define CAICOS_GB_ADDR_CONFIG_GOLDEN 0x02010001 +#define SUMO_GB_ADDR_CONFIG_GOLDEN 0x02010002 +#define SUMO2_GB_ADDR_CONFIG_GOLDEN 0x02010002 /* Registers */ @@ -87,6 +89,14 @@ #define CONFIG_MEMSIZE 0x5428 +#define BIF_FB_EN 0x5490 +#define FB_READ_EN (1 << 0) +#define FB_WRITE_EN (1 << 1) + +#define CP_STRMOUT_CNTL 0x84FC + +#define CP_COHER_CNTL 0x85F0 +#define CP_COHER_SIZE 0x85F4 #define CP_COHER_BASE 0x85F8 #define CP_ME_CNTL 0x86D8 #define CP_ME_HALT (1 << 28) @@ -426,6 +436,9 @@ #define NOOFCHAN_MASK 0x00003000 #define MC_SHARED_CHREMAP 0x2008 +#define MC_SHARED_BLACKOUT_CNTL 0x20ac +#define BLACKOUT_MODE_MASK 0x00000007 + #define MC_ARB_RAMCFG 0x2760 #define NOOFBANK_SHIFT 0 #define NOOFBANK_MASK 0x00000003 @@ -636,6 +649,7 @@ #define PAGE_TABLE_DEPTH(x) (((x) & 3) << 1) #define RANGE_PROTECTION_FAULT_ENABLE_DEFAULT (1 << 4) #define VM_CONTEXT1_CNTL 0x1414 +#define VM_CONTEXT1_CNTL2 0x1434 #define VM_CONTEXT0_PAGE_TABLE_BASE_ADDR 0x153C #define VM_CONTEXT0_PAGE_TABLE_END_ADDR 0x157C #define VM_CONTEXT0_PAGE_TABLE_START_ADDR 0x155C @@ -657,6 +671,8 @@ #define CACHE_UPDATE_MODE(x) ((x) << 6) #define VM_L2_STATUS 0x140C #define L2_BUSY (1 << 0) +#define VM_CONTEXT1_PROTECTION_FAULT_ADDR 0x14FC +#define VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x14DC #define WAIT_UNTIL 0x8040 @@ -1273,6 +1289,8 @@ #define S_028044_FORMAT(x) (((x) & 0x1) << 0) #define G_028044_FORMAT(x) (((x) >> 0) & 0x1) #define C_028044_FORMAT 0xFFFFFFFE +#define V_028044_STENCIL_INVALID 0 +#define V_028044_STENCIL_8 1 #define G_028044_TILE_SPLIT(x) (((x) >> 8) & 0x7) #define DB_Z_READ_BASE 0x28048 #define DB_STENCIL_READ_BASE 0x2804c --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_legacy_crtc.c @@ -1025,9 +1025,11 @@ static void radeon_crtc_prepare(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); struct drm_device *dev = crtc->dev; struct drm_crtc *crtci; + radeon_crtc->in_mode_set = true; /* * The hardware wedges sometimes if you reconfigure one CRTC * whilst another is running (see fdo bug #24611). @@ -1038,6 +1040,7 @@ static void radeon_crtc_commit(struct drm_crtc *crtc) { + struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); struct drm_device *dev = crtc->dev; struct drm_crtc *crtci; @@ -1048,6 +1051,7 @@ if (crtci->enabled) radeon_crtc_dpms(crtci, DRM_MODE_DPMS_ON); } + radeon_crtc->in_mode_set = false; } static const struct drm_crtc_helper_funcs legacy_helper_funcs = { --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon.h @@ -143,21 +143,6 @@ /* * BIOS. */ -#define ATRM_BIOS_PAGE 4096 - -#if defined(CONFIG_VGA_SWITCHEROO) -bool radeon_atrm_supported(struct pci_dev *pdev); -int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len); -#else -static inline bool radeon_atrm_supported(struct pci_dev *pdev) -{ - return false; -} - -static inline int radeon_atrm_get_bios_chunk(uint8_t *bios, int offset, int len){ - return -EINVAL; -} -#endif bool radeon_get_bios(struct radeon_device *rdev); @@ -323,6 +308,7 @@ uint64_t soffset; uint64_t eoffset; uint32_t flags; + struct radeon_fence *fence; bool valid; }; @@ -1456,6 +1442,45 @@ u64 gpu_addr; }; +/* + * ACPI + */ +struct radeon_atif_notification_cfg { + bool enabled; + int command_code; +}; + +struct radeon_atif_notifications { + bool display_switch; + bool expansion_mode_change; + bool thermal_state; + bool forced_power_state; + bool system_power_state; + bool display_conf_change; + bool px_gfx_switch; + bool brightness_change; + bool dgpu_display_event; +}; + +struct radeon_atif_functions { + bool system_params; + bool sbios_requests; + bool select_active_disp; + bool lid_state; + bool get_tv_standard; + bool set_tv_standard; + bool get_panel_expansion_mode; + bool set_panel_expansion_mode; + bool temperature_change; + bool graphics_device_types; +}; + +struct radeon_atif { + struct radeon_atif_notifications notifications; + struct radeon_atif_functions functions; + struct radeon_atif_notification_cfg notification_cfg; + struct radeon_encoder *backlight_ctl; +}; /* * Core structure, functions and helpers. @@ -1548,6 +1573,9 @@ unsigned debugfs_count; /* virtual memory */ struct radeon_vm_manager vm_manager; + struct mutex gpu_clock_mutex; + /* ACPI interface */ + struct radeon_atif atif; }; int radeon_device_init(struct radeon_device *rdev, @@ -1862,12 +1890,14 @@ extern int ni_init_microcode(struct radeon_device *rdev); extern int ni_mc_load_microcode(struct radeon_device *rdev); -/* radeon_acpi.c */ -#if defined(CONFIG_ACPI) -extern int radeon_acpi_init(struct radeon_device *rdev); -#else -static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; } -#endif +/* radeon_acpi.c */ +#if defined(CONFIG_ACPI) +extern int radeon_acpi_init(struct radeon_device *rdev); +extern void radeon_acpi_fini(struct radeon_device *rdev); +#else +static inline int radeon_acpi_init(struct radeon_device *rdev) { return 0; } +static inline void radeon_acpi_fini(struct radeon_device *rdev) { } +#endif #include "radeon_object.h" --- linux-3.5.0.orig/drivers/gpu/drm/radeon/ni.c +++ linux-3.5.0/drivers/gpu/drm/radeon/ni.c @@ -574,10 +574,18 @@ if (rdev->flags & RADEON_IS_IGP) rdev->config.cayman.tile_config |= 1 << 4; else { - if ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) - rdev->config.cayman.tile_config |= 1 << 4; - else + switch ((mc_arb_ramcfg & NOOFBANK_MASK) >> NOOFBANK_SHIFT) { + case 0: /* four banks */ rdev->config.cayman.tile_config |= 0 << 4; + break; + case 1: /* eight banks */ + rdev->config.cayman.tile_config |= 1 << 4; + break; + case 2: /* sixteen banks */ + default: + rdev->config.cayman.tile_config |= 2 << 4; + break; + } } rdev->config.cayman.tile_config |= ((gb_addr_config & PIPE_INTERLEAVE_SIZE_MASK) >> PIPE_INTERLEAVE_SIZE_SHIFT) << 8; @@ -772,10 +780,20 @@ /* enable context1-7 */ WREG32(VM_CONTEXT1_PROTECTION_FAULT_DEFAULT_ADDR, (u32)(rdev->dummy_page.addr >> 12)); - WREG32(VM_CONTEXT1_CNTL2, 0); - WREG32(VM_CONTEXT1_CNTL, 0); + WREG32(VM_CONTEXT1_CNTL2, 4); WREG32(VM_CONTEXT1_CNTL, ENABLE_CONTEXT | PAGE_TABLE_DEPTH(0) | - RANGE_PROTECTION_FAULT_ENABLE_DEFAULT); + RANGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + RANGE_PROTECTION_FAULT_ENABLE_DEFAULT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_INTERRUPT | + DUMMY_PAGE_PROTECTION_FAULT_ENABLE_DEFAULT | + PDE0_PROTECTION_FAULT_ENABLE_INTERRUPT | + PDE0_PROTECTION_FAULT_ENABLE_DEFAULT | + VALID_PROTECTION_FAULT_ENABLE_INTERRUPT | + VALID_PROTECTION_FAULT_ENABLE_DEFAULT | + READ_PROTECTION_FAULT_ENABLE_INTERRUPT | + READ_PROTECTION_FAULT_ENABLE_DEFAULT | + WRITE_PROTECTION_FAULT_ENABLE_INTERRUPT | + WRITE_PROTECTION_FAULT_ENABLE_DEFAULT); cayman_pcie_gart_tlb_flush(rdev); DRM_INFO("PCIE GART of %uM enabled (table at 0x%016llX).\n", --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_acpi.c +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_acpi.c @@ -1,35 +1,104 @@ +/* + * Copyright 2012 Advanced Micro Devices, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + */ + #include #include #include +#include #include #include +#include #include "drmP.h" #include "drm.h" #include "drm_sarea.h" #include "drm_crtc_helper.h" #include "radeon.h" +#include "radeon_acpi.h" +#include "atom.h" #include +#define ACPI_AC_CLASS "ac_adapter" + +extern void radeon_pm_acpi_event_handler(struct radeon_device *rdev); + +struct atif_verify_interface { + u16 size; /* structure size in bytes (includes size field) */ + u16 version; /* version */ + u32 notification_mask; /* supported notifications mask */ + u32 function_bits; /* supported functions bit vector */ +} __packed; + +struct atif_system_params { + u16 size; /* structure size in bytes (includes size field) */ + u32 valid_mask; /* valid flags mask */ + u32 flags; /* flags */ + u8 command_code; /* notify command code */ +} __packed; + +struct atif_sbios_requests { + u16 size; /* structure size in bytes (includes size field) */ + u32 pending; /* pending sbios requests */ + u8 panel_exp_mode; /* panel expansion mode */ + u8 thermal_gfx; /* thermal state: target gfx controller */ + u8 thermal_state; /* thermal state: state id (0: exit state, non-0: state) */ + u8 forced_power_gfx; /* forced power state: target gfx controller */ + u8 forced_power_state; /* forced power state: state id */ + u8 system_power_src; /* system power source */ + u8 backlight_level; /* panel backlight level (0-255) */ +} __packed; + +#define ATIF_NOTIFY_MASK 0x3 +#define ATIF_NOTIFY_NONE 0 +#define ATIF_NOTIFY_81 1 +#define ATIF_NOTIFY_N 2 + /* Call the ATIF method - * - * Note: currently we discard the output */ -static int radeon_atif_call(acpi_handle handle) +static union acpi_object *radeon_atif_call(acpi_handle handle, int function, + struct acpi_buffer *params) { acpi_status status; union acpi_object atif_arg_elements[2]; struct acpi_object_list atif_arg; - struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL}; + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; atif_arg.count = 2; atif_arg.pointer = &atif_arg_elements[0]; atif_arg_elements[0].type = ACPI_TYPE_INTEGER; - atif_arg_elements[0].integer.value = 0; - atif_arg_elements[1].type = ACPI_TYPE_INTEGER; - atif_arg_elements[1].integer.value = 0; + atif_arg_elements[0].integer.value = function; + + if (params) { + atif_arg_elements[1].type = ACPI_TYPE_BUFFER; + atif_arg_elements[1].buffer.length = params->length; + atif_arg_elements[1].buffer.pointer = params->pointer; + } else { + /* We need a second fake parameter */ + atif_arg_elements[1].type = ACPI_TYPE_INTEGER; + atif_arg_elements[1].integer.value = 0; + } status = acpi_evaluate_object(handle, "ATIF", &atif_arg, &buffer); @@ -38,17 +107,233 @@ DRM_DEBUG_DRIVER("failed to evaluate ATIF got %s\n", acpi_format_exception(status)); kfree(buffer.pointer); - return 1; + return NULL; } - kfree(buffer.pointer); - return 0; + return buffer.pointer; +} + +static void radeon_atif_parse_notification(struct radeon_atif_notifications *n, u32 mask) +{ + n->display_switch = mask & ATIF_DISPLAY_SWITCH_REQUEST_SUPPORTED; + n->expansion_mode_change = mask & ATIF_EXPANSION_MODE_CHANGE_REQUEST_SUPPORTED; + n->thermal_state = mask & ATIF_THERMAL_STATE_CHANGE_REQUEST_SUPPORTED; + n->forced_power_state = mask & ATIF_FORCED_POWER_STATE_CHANGE_REQUEST_SUPPORTED; + n->system_power_state = mask & ATIF_SYSTEM_POWER_SOURCE_CHANGE_REQUEST_SUPPORTED; + n->display_conf_change = mask & ATIF_DISPLAY_CONF_CHANGE_REQUEST_SUPPORTED; + n->px_gfx_switch = mask & ATIF_PX_GFX_SWITCH_REQUEST_SUPPORTED; + n->brightness_change = mask & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST_SUPPORTED; + n->dgpu_display_event = mask & ATIF_DGPU_DISPLAY_EVENT_SUPPORTED; +} + +static void radeon_atif_parse_functions(struct radeon_atif_functions *f, u32 mask) +{ + f->system_params = mask & ATIF_GET_SYSTEM_PARAMETERS_SUPPORTED; + f->sbios_requests = mask & ATIF_GET_SYSTEM_BIOS_REQUESTS_SUPPORTED; + f->select_active_disp = mask & ATIF_SELECT_ACTIVE_DISPLAYS_SUPPORTED; + f->lid_state = mask & ATIF_GET_LID_STATE_SUPPORTED; + f->get_tv_standard = mask & ATIF_GET_TV_STANDARD_FROM_CMOS_SUPPORTED; + f->set_tv_standard = mask & ATIF_SET_TV_STANDARD_IN_CMOS_SUPPORTED; + f->get_panel_expansion_mode = mask & ATIF_GET_PANEL_EXPANSION_MODE_FROM_CMOS_SUPPORTED; + f->set_panel_expansion_mode = mask & ATIF_SET_PANEL_EXPANSION_MODE_IN_CMOS_SUPPORTED; + f->temperature_change = mask & ATIF_TEMPERATURE_CHANGE_NOTIFICATION_SUPPORTED; + f->graphics_device_types = mask & ATIF_GET_GRAPHICS_DEVICE_TYPES_SUPPORTED; +} + +static int radeon_atif_verify_interface(acpi_handle handle, + struct radeon_atif *atif) +{ + union acpi_object *info; + struct atif_verify_interface output; + size_t size; + int err = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_VERIFY_INTERFACE, NULL); + if (!info) + return -EIO; + + memset(&output, 0, sizeof(output)); + + size = *(u16 *) info->buffer.pointer; + if (size < 12) { + DRM_INFO("ATIF buffer is too small: %lu\n", size); + err = -EINVAL; + goto out; + } + size = min(sizeof(output), size); + + memcpy(&output, info->buffer.pointer, size); + + /* TODO: check version? */ + DRM_DEBUG_DRIVER("ATIF version %u\n", output.version); + + radeon_atif_parse_notification(&atif->notifications, output.notification_mask); + radeon_atif_parse_functions(&atif->functions, output.function_bits); + +out: + kfree(info); + return err; +} + +static int radeon_atif_get_notification_params(acpi_handle handle, + struct radeon_atif_notification_cfg *n) +{ + union acpi_object *info; + struct atif_system_params params; + size_t size; + int err = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_GET_SYSTEM_PARAMETERS, NULL); + if (!info) { + err = -EIO; + goto out; + } + + size = *(u16 *) info->buffer.pointer; + if (size < 10) { + err = -EINVAL; + goto out; + } + + memset(¶ms, 0, sizeof(params)); + size = min(sizeof(params), size); + memcpy(¶ms, info->buffer.pointer, size); + + DRM_DEBUG_DRIVER("SYSTEM_PARAMS: mask = %#x, flags = %#x\n", + params.flags, params.valid_mask); + params.flags = params.flags & params.valid_mask; + + if ((params.flags & ATIF_NOTIFY_MASK) == ATIF_NOTIFY_NONE) { + n->enabled = false; + n->command_code = 0; + } else if ((params.flags & ATIF_NOTIFY_MASK) == ATIF_NOTIFY_81) { + n->enabled = true; + n->command_code = 0x81; + } else { + if (size < 11) { + err = -EINVAL; + goto out; + } + n->enabled = true; + n->command_code = params.command_code; + } + +out: + DRM_DEBUG_DRIVER("Notification %s, command code = %#x\n", + (n->enabled ? "enabled" : "disabled"), + n->command_code); + kfree(info); + return err; +} + +static int radeon_atif_get_sbios_requests(acpi_handle handle, + struct atif_sbios_requests *req) +{ + union acpi_object *info; + size_t size; + int count = 0; + + info = radeon_atif_call(handle, ATIF_FUNCTION_GET_SYSTEM_BIOS_REQUESTS, NULL); + if (!info) + return -EIO; + + size = *(u16 *)info->buffer.pointer; + if (size < 0xd) { + count = -EINVAL; + goto out; + } + memset(req, 0, sizeof(*req)); + + size = min(sizeof(*req), size); + memcpy(req, info->buffer.pointer, size); + DRM_DEBUG_DRIVER("SBIOS pending requests: %#x\n", req->pending); + + count = hweight32(req->pending); + +out: + kfree(info); + return count; +} + +int radeon_atif_handler(struct radeon_device *rdev, + struct acpi_bus_event *event) +{ + struct radeon_atif *atif = &rdev->atif; + struct atif_sbios_requests req; + acpi_handle handle; + int count; + + DRM_DEBUG_DRIVER("event, device_class = %s, type = %#x\n", + event->device_class, event->type); + + if (strcmp(event->device_class, ACPI_VIDEO_CLASS) != 0) + return NOTIFY_DONE; + + if (!atif->notification_cfg.enabled || + event->type != atif->notification_cfg.command_code) + /* Not our event */ + return NOTIFY_DONE; + + /* Check pending SBIOS requests */ + handle = DEVICE_ACPI_HANDLE(&rdev->pdev->dev); + count = radeon_atif_get_sbios_requests(handle, &req); + + if (count <= 0) + return NOTIFY_DONE; + + DRM_DEBUG_DRIVER("ATIF: %d pending SBIOS requests\n", count); + + if (req.pending & ATIF_PANEL_BRIGHTNESS_CHANGE_REQUEST) { + struct radeon_encoder *enc = atif->backlight_ctl; + + if (enc) { + struct radeon_encoder_atom_dig *dig = enc->enc_priv; + dig->backlight_level = req.backlight_level; + + DRM_DEBUG_DRIVER("Changing brightness to %d\n", + req.backlight_level); + + atombios_set_panel_brightness(enc); + + backlight_force_update(dig->bl_dev, + BACKLIGHT_UPDATE_HOTKEY); + } + } + /* TODO: check other events */ + + /* We've handled the event, stop the notifier chain. The ACPI interface + * overloads ACPI_VIDEO_NOTIFY_PROBE, we don't want to send that to + * userspace if the event was generated only to signal a SBIOS + * request. + */ + return NOTIFY_BAD; +} + +static int radeon_acpi_event(struct notifier_block *nb, + unsigned long val, + void *data) +{ + struct radeon_device *rdev = container_of(nb, struct radeon_device, acpi_nb); + struct acpi_bus_event *entry = (struct acpi_bus_event *)data; + + if (strcmp(entry->device_class, ACPI_AC_CLASS) == 0) { + if (power_supply_is_system_supplied() > 0) + DRM_DEBUG_DRIVER("pm: AC\n"); + else + DRM_DEBUG_DRIVER("pm: DC\n"); + + radeon_pm_acpi_event_handler(rdev); + } + + /* Check for pending SBIOS requests */ + return radeon_atif_handler(rdev, entry); } /* Call all ACPI methods here */ int radeon_acpi_init(struct radeon_device *rdev) { acpi_handle handle; + struct radeon_atif *atif = &rdev->atif; int ret; /* Get the device handle */ @@ -59,10 +344,66 @@ return 0; /* Call the ATIF method */ - ret = radeon_atif_call(handle); - if (ret) - return ret; + ret = radeon_atif_verify_interface(handle, atif); + if (ret) { + DRM_DEBUG_DRIVER("Call to verify_interface failed: %d\n", ret); + goto out; + } - return 0; + if (atif->notifications.brightness_change) { + struct drm_encoder *tmp; + struct radeon_encoder *target = NULL; + + /* Find the encoder controlling the brightness */ + list_for_each_entry(tmp, &rdev->ddev->mode_config.encoder_list, + head) { + struct radeon_encoder *enc = to_radeon_encoder(tmp); + struct radeon_encoder_atom_dig *dig = enc->enc_priv; + + if ((enc->devices & (ATOM_DEVICE_LCD_SUPPORT)) && + dig->bl_dev != NULL) { + target = enc; + break; + } + } + + atif->backlight_ctl = target; + if (!target) { + /* Brightness change notification is enabled, but we + * didn't find a backlight controller, this should + * never happen. + */ + DRM_ERROR("Cannot find a backlight controller\n"); + } + } + + if (atif->functions.sbios_requests && !atif->functions.system_params) { + /* XXX check this workraround, if sbios request function is + * present we have to see how it's configured in the system + * params + */ + atif->functions.system_params = true; + } + + if (atif->functions.system_params) { + ret = radeon_atif_get_notification_params(handle, + &atif->notification_cfg); + if (ret) { + DRM_DEBUG_DRIVER("Call to GET_SYSTEM_PARAMS failed: %d\n", + ret); + /* Disable notification */ + atif->notification_cfg.enabled = false; + } + } + +out: + rdev->acpi_nb.notifier_call = radeon_acpi_event; + register_acpi_notifier(&rdev->acpi_nb); + + return ret; } +void radeon_acpi_fini(struct radeon_device *rdev) +{ + unregister_acpi_notifier(&rdev->acpi_nb); +} --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_asic.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_asic.h @@ -256,13 +256,10 @@ * rv515 */ struct rv515_mc_save { - u32 d1vga_control; - u32 d2vga_control; u32 vga_render_control; u32 vga_hdp_control; - u32 d1crtc_control; - u32 d2crtc_control; }; + int rv515_init(struct radeon_device *rdev); void rv515_fini(struct radeon_device *rdev); uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg); @@ -389,11 +386,11 @@ * evergreen */ struct evergreen_mc_save { - u32 vga_control[6]; u32 vga_render_control; u32 vga_hdp_control; - u32 crtc_control[6]; + bool crtc_enabled[RADEON_MAX_CRTCS]; }; + void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev); int evergreen_init(struct radeon_device *rdev); void evergreen_fini(struct radeon_device *rdev); --- linux-3.5.0.orig/drivers/gpu/drm/radeon/radeon_mode.h +++ linux-3.5.0/drivers/gpu/drm/radeon/radeon_mode.h @@ -210,7 +210,8 @@ CT_RN50_POWER, CT_MAC_X800, CT_MAC_G5_9600, - CT_SAM440EP + CT_SAM440EP, + CT_MAC_G4_SILVER }; enum radeon_dvo_chip { @@ -252,8 +253,21 @@ /* pointer to fbdev info structure */ struct radeon_fbdev *rfbdev; + /* firmware flags */ + u16 firmware_flags; }; +#if defined(CONFIG_BACKLIGHT_CLASS_DEVICE) || defined(CONFIG_BACKLIGHT_CLASS_DEVICE_MODULE) + +#define RADEON_MAX_BL_LEVEL 0xFF + +struct radeon_backlight_privdata { + struct radeon_encoder *encoder; + uint8_t negative; +}; + +#endif + #define MAX_H_CODE_TIMING_LEN 32 #define MAX_V_CODE_TIMING_LEN 32 @@ -275,6 +289,7 @@ u16 lut_r[256], lut_g[256], lut_b[256]; bool enabled; bool can_tile; + bool in_mode_set; uint32_t crtc_offset; struct drm_gem_object *cursor_bo; uint64_t cursor_addr; @@ -533,7 +548,7 @@ u8 val); extern void radeon_router_select_ddc_port(struct radeon_connector *radeon_connector); extern void radeon_router_select_cd_port(struct radeon_connector *radeon_connector); -extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector); +extern bool radeon_ddc_probe(struct radeon_connector *radeon_connector, bool use_aux); extern int radeon_ddc_get_modes(struct radeon_connector *radeon_connector); extern struct drm_encoder *radeon_best_encoder(struct drm_connector *connector); @@ -684,6 +699,8 @@ struct drm_display_mode *adjusted_mode); void atom_rv515_force_tv_scaler(struct radeon_device *rdev, struct radeon_crtc *radeon_crtc); +void atombios_set_panel_brightness(struct radeon_encoder *radeon_encoder); + /* legacy tv */ void radeon_legacy_tv_adjust_crtc_reg(struct drm_encoder *encoder, uint32_t *h_total_disp, uint32_t *h_sync_strt_wid, --- linux-3.5.0.orig/drivers/gpu/drm/radeon/reg_srcs/cayman +++ linux-3.5.0/drivers/gpu/drm/radeon/reg_srcs/cayman @@ -1,5 +1,6 @@ cayman 0x9400 0x0000802C GRBM_GFX_INDEX +0x00008040 WAIT_UNTIL 0x000084FC CP_STRMOUT_CNTL 0x000085F0 CP_COHER_CNTL 0x000085F4 CP_COHER_SIZE --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h @@ -645,6 +645,16 @@ int vmw_kms_update_layout_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv); +int vmw_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args); + +int vmw_dumb_map_offset(struct drm_file *file_priv, + struct drm_device *dev, uint32_t handle, + uint64_t *offset); +int vmw_dumb_destroy(struct drm_file *file_priv, + struct drm_device *dev, + uint32_t handle); /** * Overlay control - vmwgfx_overlay.c */ --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_dmabuf.c @@ -306,7 +306,7 @@ BUG_ON(!atomic_read(&bo->reserved)); BUG_ON(old_mem_type != TTM_PL_VRAM && - old_mem_type != VMW_PL_FLAG_GMR); + old_mem_type != VMW_PL_GMR); pl_flags = TTM_PL_FLAG_VRAM | VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED; if (pin) --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c @@ -1917,3 +1917,76 @@ vmw_resource_unreference(&res); return ret; } + + +int vmw_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ + struct vmw_private *dev_priv = vmw_priv(dev); + struct vmw_master *vmaster = vmw_master(file_priv->master); + struct vmw_user_dma_buffer *vmw_user_bo; + struct ttm_buffer_object *tmp; + int ret; + + args->pitch = args->width * ((args->bpp + 7) / 8); + args->size = args->pitch * args->height; + + vmw_user_bo = kzalloc(sizeof(*vmw_user_bo), GFP_KERNEL); + if (vmw_user_bo == NULL) + return -ENOMEM; + + ret = ttm_read_lock(&vmaster->lock, true); + if (ret != 0) { + kfree(vmw_user_bo); + return ret; + } + + ret = vmw_dmabuf_init(dev_priv, &vmw_user_bo->dma, args->size, + &vmw_vram_sys_placement, true, + &vmw_user_dmabuf_destroy); + if (ret != 0) + goto out_no_dmabuf; + + tmp = ttm_bo_reference(&vmw_user_bo->dma.base); + ret = ttm_base_object_init(vmw_fpriv(file_priv)->tfile, + &vmw_user_bo->base, + false, + ttm_buffer_type, + &vmw_user_dmabuf_release, NULL); + if (unlikely(ret != 0)) + goto out_no_base_object; + + args->handle = vmw_user_bo->base.hash.key; + +out_no_base_object: + ttm_bo_unref(&tmp); +out_no_dmabuf: + ttm_read_unlock(&vmaster->lock); + return ret; +} + +int vmw_dumb_map_offset(struct drm_file *file_priv, + struct drm_device *dev, uint32_t handle, + uint64_t *offset) +{ + struct ttm_object_file *tfile = vmw_fpriv(file_priv)->tfile; + struct vmw_dma_buffer *out_buf; + int ret; + + ret = vmw_user_dmabuf_lookup(tfile, handle, &out_buf); + if (ret != 0) + return -EINVAL; + + *offset = out_buf->base.addr_space_offset; + vmw_dmabuf_unreference(&out_buf); + return 0; +} + +int vmw_dumb_destroy(struct drm_file *file_priv, + struct drm_device *dev, + uint32_t handle) +{ + return ttm_ref_object_base_unref(vmw_fpriv(file_priv)->tfile, + handle, TTM_REF_USAGE); +} --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c @@ -1018,7 +1018,7 @@ } - event = kzalloc(sizeof(event->event), GFP_KERNEL); + event = kzalloc(sizeof(*event), GFP_KERNEL); if (unlikely(event == NULL)) { DRM_ERROR("Failed to allocate an event.\n"); ret = -ENOMEM; --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c @@ -182,6 +182,7 @@ {0x15ad, 0x0405, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VMWGFX_CHIP_SVGAII}, {0, 0, 0} }; +MODULE_DEVICE_TABLE(pci, vmw_pci_id_list); static int enable_fbdev; @@ -1101,6 +1102,11 @@ struct drm_device *dev = pci_get_drvdata(pdev); struct vmw_private *dev_priv = vmw_priv(dev); + mutex_lock(&dev_priv->hw_mutex); + vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2); + (void) vmw_read(dev_priv, SVGA_REG_ID); + mutex_unlock(&dev_priv->hw_mutex); + /** * Reclaim 3d reference held by fbdev and potentially * start fifo. @@ -1158,6 +1164,11 @@ .open = vmw_driver_open, .preclose = vmw_preclose, .postclose = vmw_postclose, + + .dumb_create = vmw_dumb_create, + .dumb_map_offset = vmw_dumb_map_offset, + .dumb_destroy = vmw_dumb_destroy, + .fops = &vmwgfx_driver_fops, .name = VMWGFX_DRIVER_NAME, .desc = VMWGFX_DRIVER_DESC, --- linux-3.5.0.orig/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ linux-3.5.0/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -1688,15 +1688,19 @@ struct vmw_private *dev_priv = vmw_priv(crtc->dev); struct drm_framebuffer *old_fb = crtc->fb; struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(fb); - struct drm_file *file_priv = event->base.file_priv; + struct drm_file *file_priv ; struct vmw_fence_obj *fence = NULL; struct drm_clip_rect clips; int ret; + if (event == NULL) + return -EINVAL; + /* require ScreenObject support for page flipping */ if (!dev_priv->sou_priv) return -ENOSYS; + file_priv = event->base.file_priv; if (!vmw_kms_screen_object_flippable(dev_priv, crtc)) return -EINVAL; --- linux-3.5.0.orig/drivers/gpu/drm/savage/savage_bci.c +++ linux-3.5.0/drivers/gpu/drm/savage/savage_bci.c @@ -547,6 +547,8 @@ dev_priv->chipset = (enum savage_family)chipset; + pci_set_master(dev->pdev); + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_software.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_software.h @@ -38,6 +38,7 @@ nouveau_software_context_new(struct nouveau_software_chan *pch) { INIT_LIST_HEAD(&pch->flip); + INIT_LIST_HEAD(&pch->vblank.list); } static inline void --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_copy.fuc.h @@ -1,34 +1,65 @@ -uint32_t nvc0_pcopy_data[] = { +u32 nvc0_pcopy_data[] = { +/* 0x0000: ctx_object */ 0x00000000, +/* 0x0004: ctx_query_address_high */ 0x00000000, +/* 0x0008: ctx_query_address_low */ 0x00000000, +/* 0x000c: ctx_query_counter */ 0x00000000, +/* 0x0010: ctx_src_address_high */ 0x00000000, +/* 0x0014: ctx_src_address_low */ 0x00000000, +/* 0x0018: ctx_src_pitch */ 0x00000000, +/* 0x001c: ctx_src_tile_mode */ 0x00000000, +/* 0x0020: ctx_src_xsize */ 0x00000000, +/* 0x0024: ctx_src_ysize */ 0x00000000, +/* 0x0028: ctx_src_zsize */ 0x00000000, +/* 0x002c: ctx_src_zoff */ 0x00000000, +/* 0x0030: ctx_src_xoff */ 0x00000000, +/* 0x0034: ctx_src_yoff */ 0x00000000, +/* 0x0038: ctx_src_cpp */ 0x00000000, +/* 0x003c: ctx_dst_address_high */ 0x00000000, +/* 0x0040: ctx_dst_address_low */ 0x00000000, +/* 0x0044: ctx_dst_pitch */ 0x00000000, +/* 0x0048: ctx_dst_tile_mode */ 0x00000000, +/* 0x004c: ctx_dst_xsize */ 0x00000000, +/* 0x0050: ctx_dst_ysize */ 0x00000000, +/* 0x0054: ctx_dst_zsize */ 0x00000000, +/* 0x0058: ctx_dst_zoff */ 0x00000000, +/* 0x005c: ctx_dst_xoff */ 0x00000000, +/* 0x0060: ctx_dst_yoff */ 0x00000000, +/* 0x0064: ctx_dst_cpp */ 0x00000000, +/* 0x0068: ctx_format */ 0x00000000, +/* 0x006c: ctx_swz_const0 */ 0x00000000, +/* 0x0070: ctx_swz_const1 */ 0x00000000, +/* 0x0074: ctx_xcnt */ 0x00000000, +/* 0x0078: ctx_ycnt */ 0x00000000, 0x00000000, 0x00000000, @@ -63,6 +94,7 @@ 0x00000000, 0x00000000, 0x00000000, +/* 0x0100: dispatch_table */ 0x00010000, 0x00000000, 0x00000000, @@ -111,11 +143,11 @@ 0x00000010, 0xffffff00, 0x00000014, - 0x0000000f, + 0x00000000, 0x0000003c, 0xffffff00, 0x00000040, - 0x0000000f, + 0x00000000, 0x00000018, 0xfff80000, 0x00000044, @@ -139,7 +171,8 @@ 0x00000800, }; -uint32_t nvc0_pcopy_code[] = { +u32 nvc0_pcopy_code[] = { +/* 0x0000: main */ 0x04fe04bd, 0x3517f000, 0xf10010fe, @@ -151,15 +184,20 @@ 0x17f11031, 0x27f01200, 0x0012d003, +/* 0x002f: spin */ 0xf40031f4, 0x0ef40028, +/* 0x0035: ih */ 0x8001cffd, 0xf40812c4, 0x21f4060b, +/* 0x0041: ih_no_chsw */ 0x0412c4ca, 0xf5070bf4, +/* 0x004b: ih_no_cmd */ 0xc4010221, 0x01d00c11, +/* 0x0053: swctx */ 0xf101f840, 0xfe770047, 0x47f1004b, @@ -188,8 +226,11 @@ 0xf00204b9, 0x01f40643, 0x0604fa09, +/* 0x00c3: swctx_load */ 0xfa060ef4, +/* 0x00c6: swctx_done */ 0x03f80504, +/* 0x00ca: chsw */ 0x27f100f8, 0x23cf1400, 0x1e3fc800, @@ -198,18 +239,22 @@ 0x1e3af053, 0xf00023d0, 0x24d00147, +/* 0x00eb: chsw_no_unload */ 0xcf00f880, 0x3dc84023, 0x090bf41e, 0xf40131f4, +/* 0x00fa: chsw_finish_load */ 0x37f05321, 0x8023d002, +/* 0x0102: dispatch */ 0x37f100f8, 0x32cf1900, 0x0033cf40, 0x07ff24e4, 0xf11024b6, 0xbd010057, +/* 0x011b: dispatch_loop */ 0x5874bd64, 0x57580056, 0x0450b601, @@ -219,6 +264,7 @@ 0xbb0f08f4, 0x74b60276, 0x0057bb03, +/* 0x013f: dispatch_valid_mthd */ 0xbbdf0ef4, 0x44b60246, 0x0045bb03, @@ -229,24 +275,33 @@ 0x64b00146, 0x091bf400, 0xf4005380, +/* 0x0166: dispatch_cmd */ 0x32f4300e, 0xf455f901, 0x0ef40c01, +/* 0x0171: dispatch_invalid_bitfield */ 0x0225f025, +/* 0x0174: dispatch_illegal_mthd */ +/* 0x0177: dispatch_error */ 0xf10125f0, 0xd0100047, 0x43d00042, 0x4027f040, +/* 0x0187: hostirq_wait */ 0xcf0002d0, 0x24f08002, 0x0024b040, +/* 0x0193: dispatch_done */ 0xf1f71bf4, 0xf01d0027, 0x23d00137, +/* 0x019f: cmd_nop */ 0xf800f800, +/* 0x01a1: cmd_pm_trigger */ 0x0027f100, 0xf034bd22, 0x23d00233, +/* 0x01af: cmd_exec_set_format */ 0xf400f800, 0x01b0f030, 0x0101b000, @@ -258,20 +313,26 @@ 0x3847c701, 0xf40170b6, 0x84bd0232, +/* 0x01da: ncomp_loop */ 0x4ac494bd, 0x0445b60f, +/* 0x01e2: bpc_loop */ 0xa430b4bd, 0x0f18f404, 0xbbc0a5ff, 0x31f400cb, 0x220ef402, +/* 0x01f4: cmp_c0 */ 0xf00c1bf4, 0xcbbb10c7, 0x160ef400, +/* 0x0200: cmp_c1 */ 0xf406a430, 0xc7f00c18, 0x00cbbb14, +/* 0x020f: cmp_zero */ 0xf1070ef4, +/* 0x0213: bpc_next */ 0x380080c7, 0x80b601c8, 0x01b0b601, @@ -283,6 +344,7 @@ 0x1d08980e, 0xf40068fd, 0x64bd0502, +/* 0x023c: dst_xcnt */ 0x800075fd, 0x78fd1907, 0x1057f100, @@ -307,15 +369,18 @@ 0x1c069800, 0xf44056d0, 0x00f81030, +/* 0x029c: cmd_exec_set_surface_tiled */ 0xc7075798, 0x78c76879, 0x0380b664, 0xb06077c7, 0x1bf40e76, 0x0477f009, +/* 0x02b7: xtile64 */ 0xf00f0ef4, 0x70b6027c, 0x0947fd11, +/* 0x02c3: xtileok */ 0x980677f0, 0x5b980c5a, 0x00abfd0e, @@ -374,6 +439,7 @@ 0xb70067d0, 0xd0040060, 0x00f80068, +/* 0x03a8: cmd_exec_set_surface_linear */ 0xb7026cf0, 0xb6020260, 0x57980864, @@ -384,12 +450,15 @@ 0x0060b700, 0x06579804, 0xf80067d0, +/* 0x03d1: cmd_exec_wait */ 0xf900f900, 0x0007f110, 0x0604b608, +/* 0x03dc: loop */ 0xf00001cf, 0x1bf40114, 0xfc10fcfa, +/* 0x03eb: cmd_exec_query */ 0xc800f800, 0x1bf40d34, 0xd121f570, @@ -419,6 +488,7 @@ 0x0153f026, 0x080047f1, 0xd00644b6, +/* 0x045e: query_counter */ 0x21f50045, 0x47f103d1, 0x44b6080c, @@ -442,11 +512,13 @@ 0x080047f1, 0xd00644b6, 0x00f80045, +/* 0x04b8: cmd_exec */ 0x03d121f5, 0xf4003fc8, 0x21f50e0b, 0x47f101af, 0x0ef40200, +/* 0x04cd: cmd_exec_no_format */ 0x1067f11e, 0x0664b608, 0x800177f0, @@ -454,18 +526,23 @@ 0x1d079819, 0xd00067d0, 0x44bd4067, +/* 0x04e8: cmd_exec_init_src_surface */ 0xbd0232f4, 0x043fc854, 0xf50a0bf4, 0xf403a821, +/* 0x04fa: src_tiled */ 0x21f50a0e, 0x49f0029c, +/* 0x0501: cmd_exec_init_dst_surface */ 0x0231f407, 0xc82c57f0, 0x0bf4083f, 0xa821f50a, 0x0a0ef403, +/* 0x0514: dst_tiled */ 0x029c21f5, +/* 0x051b: cmd_exec_kick */ 0xf10849f0, 0xb6080057, 0x06980654, @@ -475,7 +552,9 @@ 0x54d00546, 0x0c3fc800, 0xf5070bf4, +/* 0x053f: cmd_exec_done */ 0xf803eb21, +/* 0x0541: cmd_wrcache_flush */ 0x0027f100, 0xf034bd22, 0x23d00133, --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_pm.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_pm.c @@ -557,7 +557,7 @@ nouveau_mem_exec(&exec, info->perflvl); if (dev_priv->chipset < 0xd0) - nv_wr32(dev, 0x611200, 0x00003300); + nv_wr32(dev, 0x611200, 0x00003330); else nv_wr32(dev, 0x62c000, 0x03030300); } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_dac.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_dac.c @@ -210,7 +210,7 @@ NVWriteVgaCrtc(dev, 0, NV_CIO_CR_MODE_INDEX, saved_cr_mode); if (blue == 0x18) { - NV_INFO(dev, "Load detected on head A\n"); + NV_DEBUG(dev, "Load detected on head A\n"); return connector_status_connected; } @@ -323,8 +323,8 @@ if (nv17_dac_sample_load(encoder) & NV_PRAMDAC_TEST_CONTROL_SENSEB_ALLHI) { - NV_INFO(dev, "Load detected on output %c\n", - '@' + ffs(dcb->or)); + NV_DEBUG(dev, "Load detected on output %c\n", + '@' + ffs(dcb->or)); return connector_status_connected; } else { return connector_status_disconnected; @@ -398,9 +398,9 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), - nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), + nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } void nv04_dac_update_dacclk(struct drm_encoder *encoder, bool enable) @@ -447,8 +447,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on vga encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on vga encoder (output %d)\n", + mode, nv_encoder->dcb->index); nv04_dac_update_dacclk(encoder, mode == DRM_MODE_DPMS_ON); } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_bo.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_bo.c @@ -1179,7 +1179,7 @@ if (dev_priv->gart_info.type == NOUVEAU_GART_AGP) { mem->bus.offset = mem->start << PAGE_SHIFT; mem->bus.base = dev_priv->gart_info.aper_base; - mem->bus.is_iomem = true; + mem->bus.is_iomem = !dev->agp->cant_use_aperture; } #endif break; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_dfp.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_dfp.c @@ -476,9 +476,9 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), - nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), + nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } static void nv04_dfp_update_backlight(struct drm_encoder *encoder, int mode) @@ -504,7 +504,7 @@ static inline bool is_powersaving_dpms(int mode) { - return (mode != DRM_MODE_DPMS_ON); + return mode != DRM_MODE_DPMS_ON && mode != NV_DPMS_CLEARED; } static void nv04_lvds_dpms(struct drm_encoder *encoder, int mode) @@ -519,8 +519,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on lvds encoder (output %d)\n", + mode, nv_encoder->dcb->index); if (was_powersaving && is_powersaving_dpms(mode)) return; @@ -564,8 +564,8 @@ return; nv_encoder->last_dpms = mode; - NV_INFO(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on tmds encoder (output %d)\n", + mode, nv_encoder->dcb->index); nv04_dfp_update_backlight(encoder, mode); nv04_dfp_update_fp_control(encoder, mode); --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nva3_copy.fuc.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nva3_copy.fuc.h @@ -1,37 +1,72 @@ -uint32_t nva3_pcopy_data[] = { +u32 nva3_pcopy_data[] = { +/* 0x0000: ctx_object */ 0x00000000, +/* 0x0004: ctx_dma */ +/* 0x0004: ctx_dma_query */ 0x00000000, +/* 0x0008: ctx_dma_src */ 0x00000000, +/* 0x000c: ctx_dma_dst */ 0x00000000, +/* 0x0010: ctx_query_address_high */ 0x00000000, +/* 0x0014: ctx_query_address_low */ 0x00000000, +/* 0x0018: ctx_query_counter */ 0x00000000, +/* 0x001c: ctx_src_address_high */ 0x00000000, +/* 0x0020: ctx_src_address_low */ 0x00000000, +/* 0x0024: ctx_src_pitch */ 0x00000000, +/* 0x0028: ctx_src_tile_mode */ 0x00000000, +/* 0x002c: ctx_src_xsize */ 0x00000000, +/* 0x0030: ctx_src_ysize */ 0x00000000, +/* 0x0034: ctx_src_zsize */ 0x00000000, +/* 0x0038: ctx_src_zoff */ 0x00000000, +/* 0x003c: ctx_src_xoff */ 0x00000000, +/* 0x0040: ctx_src_yoff */ 0x00000000, +/* 0x0044: ctx_src_cpp */ 0x00000000, +/* 0x0048: ctx_dst_address_high */ 0x00000000, +/* 0x004c: ctx_dst_address_low */ 0x00000000, +/* 0x0050: ctx_dst_pitch */ 0x00000000, +/* 0x0054: ctx_dst_tile_mode */ 0x00000000, +/* 0x0058: ctx_dst_xsize */ 0x00000000, +/* 0x005c: ctx_dst_ysize */ 0x00000000, +/* 0x0060: ctx_dst_zsize */ 0x00000000, +/* 0x0064: ctx_dst_zoff */ 0x00000000, +/* 0x0068: ctx_dst_xoff */ 0x00000000, +/* 0x006c: ctx_dst_yoff */ 0x00000000, +/* 0x0070: ctx_dst_cpp */ 0x00000000, +/* 0x0074: ctx_format */ 0x00000000, +/* 0x0078: ctx_swz_const0 */ 0x00000000, +/* 0x007c: ctx_swz_const1 */ 0x00000000, +/* 0x0080: ctx_xcnt */ 0x00000000, +/* 0x0084: ctx_ycnt */ 0x00000000, 0x00000000, 0x00000000, @@ -63,6 +98,7 @@ 0x00000000, 0x00000000, 0x00000000, +/* 0x0100: dispatch_table */ 0x00010000, 0x00000000, 0x00000000, @@ -73,6 +109,7 @@ 0x00010162, 0x00000000, 0x00030060, +/* 0x0128: dispatch_dma */ 0x00010170, 0x00000000, 0x00010170, @@ -118,11 +155,11 @@ 0x0000001c, 0xffffff00, 0x00000020, - 0x0000000f, + 0x00000000, 0x00000048, 0xffffff00, 0x0000004c, - 0x0000000f, + 0x00000000, 0x00000024, 0xfff80000, 0x00000050, @@ -146,7 +183,8 @@ 0x00000800, }; -uint32_t nva3_pcopy_code[] = { +u32 nva3_pcopy_code[] = { +/* 0x0000: main */ 0x04fe04bd, 0x3517f000, 0xf10010fe, @@ -158,23 +196,31 @@ 0x17f11031, 0x27f01200, 0x0012d003, +/* 0x002f: spin */ 0xf40031f4, 0x0ef40028, +/* 0x0035: ih */ 0x8001cffd, 0xf40812c4, 0x21f4060b, +/* 0x0041: ih_no_chsw */ 0x0412c472, 0xf4060bf4, +/* 0x004a: ih_no_cmd */ 0x11c4c321, 0x4001d00c, +/* 0x0052: swctx */ 0x47f101f8, 0x4bfe7700, 0x0007fe00, 0xf00204b9, 0x01f40643, 0x0604fa09, +/* 0x006b: swctx_load */ 0xfa060ef4, +/* 0x006e: swctx_done */ 0x03f80504, +/* 0x0072: chsw */ 0x27f100f8, 0x23cf1400, 0x1e3fc800, @@ -183,18 +229,22 @@ 0x1e3af052, 0xf00023d0, 0x24d00147, +/* 0x0093: chsw_no_unload */ 0xcf00f880, 0x3dc84023, 0x220bf41e, 0xf40131f4, 0x57f05221, 0x0367f004, +/* 0x00a8: chsw_load_ctx_dma */ 0xa07856bc, 0xb6018068, 0x87d00884, 0x0162b600, +/* 0x00bb: chsw_finish_load */ 0xf0f018f4, 0x23d00237, +/* 0x00c3: dispatch */ 0xf100f880, 0xcf190037, 0x33cf4032, @@ -202,6 +252,7 @@ 0x1024b607, 0x010057f1, 0x74bd64bd, +/* 0x00dc: dispatch_loop */ 0x58005658, 0x50b60157, 0x0446b804, @@ -211,6 +262,7 @@ 0xb60276bb, 0x57bb0374, 0xdf0ef400, +/* 0x0100: dispatch_valid_mthd */ 0xb60246bb, 0x45bb0344, 0x01459800, @@ -220,31 +272,41 @@ 0xb0014658, 0x1bf40064, 0x00538009, +/* 0x0127: dispatch_cmd */ 0xf4300ef4, 0x55f90132, 0xf40c01f4, +/* 0x0132: dispatch_invalid_bitfield */ 0x25f0250e, +/* 0x0135: dispatch_illegal_mthd */ 0x0125f002, +/* 0x0138: dispatch_error */ 0x100047f1, 0xd00042d0, 0x27f04043, 0x0002d040, +/* 0x0148: hostirq_wait */ 0xf08002cf, 0x24b04024, 0xf71bf400, +/* 0x0154: dispatch_done */ 0x1d0027f1, 0xd00137f0, 0x00f80023, +/* 0x0160: cmd_nop */ +/* 0x0162: cmd_pm_trigger */ 0x27f100f8, 0x34bd2200, 0xd00233f0, 0x00f80023, +/* 0x0170: cmd_dma */ 0x012842b7, 0xf00145b6, 0x43801e39, 0x0040b701, 0x0644b606, 0xf80043d0, +/* 0x0189: cmd_exec_set_format */ 0xf030f400, 0xb00001b0, 0x01b00101, @@ -256,20 +318,26 @@ 0x70b63847, 0x0232f401, 0x94bd84bd, +/* 0x01b4: ncomp_loop */ 0xb60f4ac4, 0xb4bd0445, +/* 0x01bc: bpc_loop */ 0xf404a430, 0xa5ff0f18, 0x00cbbbc0, 0xf40231f4, +/* 0x01ce: cmp_c0 */ 0x1bf4220e, 0x10c7f00c, 0xf400cbbb, +/* 0x01da: cmp_c1 */ 0xa430160e, 0x0c18f406, 0xbb14c7f0, 0x0ef400cb, +/* 0x01e9: cmp_zero */ 0x80c7f107, +/* 0x01ed: bpc_next */ 0x01c83800, 0xb60180b6, 0xb5b801b0, @@ -280,6 +348,7 @@ 0x98110680, 0x68fd2008, 0x0502f400, +/* 0x0216: dst_xcnt */ 0x75fd64bd, 0x1c078000, 0xf10078fd, @@ -304,6 +373,7 @@ 0x980056d0, 0x56d01f06, 0x1030f440, +/* 0x0276: cmd_exec_set_surface_tiled */ 0x579800f8, 0x6879c70a, 0xb66478c7, @@ -311,9 +381,11 @@ 0x0e76b060, 0xf0091bf4, 0x0ef40477, +/* 0x0291: xtile64 */ 0x027cf00f, 0xfd1170b6, 0x77f00947, +/* 0x029d: xtileok */ 0x0f5a9806, 0xfd115b98, 0xb7f000ab, @@ -371,6 +443,7 @@ 0x67d00600, 0x0060b700, 0x0068d004, +/* 0x0382: cmd_exec_set_surface_linear */ 0x6cf000f8, 0x0260b702, 0x0864b602, @@ -381,13 +454,16 @@ 0xb70067d0, 0x98040060, 0x67d00957, +/* 0x03ab: cmd_exec_wait */ 0xf900f800, 0xf110f900, 0xb6080007, +/* 0x03b6: loop */ 0x01cf0604, 0x0114f000, 0xfcfa1bf4, 0xf800fc10, +/* 0x03c5: cmd_exec_query */ 0x0d34c800, 0xf5701bf4, 0xf103ab21, @@ -417,6 +493,7 @@ 0x47f10153, 0x44b60800, 0x0045d006, +/* 0x0438: query_counter */ 0x03ab21f5, 0x080c47f1, 0x980644b6, @@ -439,11 +516,13 @@ 0x47f10153, 0x44b60800, 0x0045d006, +/* 0x0492: cmd_exec */ 0x21f500f8, 0x3fc803ab, 0x0e0bf400, 0x018921f5, 0x020047f1, +/* 0x04a7: cmd_exec_no_format */ 0xf11e0ef4, 0xb6081067, 0x77f00664, @@ -451,19 +530,24 @@ 0x981c0780, 0x67d02007, 0x4067d000, +/* 0x04c2: cmd_exec_init_src_surface */ 0x32f444bd, 0xc854bd02, 0x0bf4043f, 0x8221f50a, 0x0a0ef403, +/* 0x04d4: src_tiled */ 0x027621f5, +/* 0x04db: cmd_exec_init_dst_surface */ 0xf40749f0, 0x57f00231, 0x083fc82c, 0xf50a0bf4, 0xf4038221, +/* 0x04ee: dst_tiled */ 0x21f50a0e, 0x49f00276, +/* 0x04f5: cmd_exec_kick */ 0x0057f108, 0x0654b608, 0xd0210698, @@ -473,6 +557,8 @@ 0xc80054d0, 0x0bf40c3f, 0xc521f507, +/* 0x0519: cmd_exec_done */ +/* 0x051b: cmd_wrcache_flush */ 0xf100f803, 0xbd220027, 0x0133f034, --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_irq.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_irq.c @@ -41,12 +41,8 @@ void nouveau_irq_preinstall(struct drm_device *dev) { - struct drm_nouveau_private *dev_priv = dev->dev_private; - /* Master disable */ nv_wr32(dev, NV03_PMC_INTR_EN_0, 0); - - INIT_LIST_HEAD(&dev_priv->vbl_waiting); } int --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv10_fence.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv10_fence.c @@ -155,6 +155,10 @@ static int nv10_fence_init(struct drm_device *dev, int engine) { + struct nv10_fence_priv *priv = nv_engine(dev, engine); + + if (priv->bo) + nouveau_bo_wr32(priv->bo, 0, priv->sequence); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv50_gpio.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv50_gpio.c @@ -115,6 +115,9 @@ { struct drm_nouveau_private *dev_priv = dev->dev_private; + /* initialise gpios and routing to vbios defaults */ + nouveau_gpio_reset(dev); + /* disable, and ack any pending gpio interrupts */ nv_wr32(dev, 0xe050, 0x00000000); nv_wr32(dev, 0xe054, 0xffffffff); --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_acpi.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_acpi.c @@ -211,11 +211,6 @@ return nouveau_dsm_set_discrete_state(nouveau_dsm_priv.dhandle, state); } -static int nouveau_dsm_init(void) -{ - return 0; -} - static int nouveau_dsm_get_client_id(struct pci_dev *pdev) { /* easy option one - intel vendor ID means Integrated */ @@ -232,7 +227,6 @@ static struct vga_switcheroo_handler nouveau_dsm_handler = { .switchto = nouveau_dsm_switchto, .power_state = nouveau_dsm_power_state, - .init = nouveau_dsm_init, .get_client_id = nouveau_dsm_get_client_id, }; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv84_fifo.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv84_fifo.c @@ -117,17 +117,22 @@ struct drm_device *dev = chan->dev; struct drm_nouveau_private *dev_priv = dev->dev_private; unsigned long flags; + u32 save; /* remove channel from playlist, will context switch if active */ spin_lock_irqsave(&dev_priv->context_switch_lock, flags); nv_mask(dev, 0x002600 + (chan->id * 4), 0x80000000, 0x00000000); nv50_fifo_playlist_update(dev); + save = nv_mask(dev, 0x002520, 0x0000003f, 0x15); + /* tell any engines on this channel to unload their contexts */ nv_wr32(dev, 0x0032fc, chan->ramin->vinst >> 12); if (!nv_wait_ne(dev, 0x0032fc, 0xffffffff, 0xffffffff)) NV_INFO(dev, "PFIFO: channel %d unload timeout\n", chan->id); + nv_wr32(dev, 0x002520, save); + nv_wr32(dev, 0x002600 + (chan->id * 4), 0x00000000); spin_unlock_irqrestore(&dev_priv->context_switch_lock, flags); @@ -184,10 +189,13 @@ struct drm_nouveau_private *dev_priv = dev->dev_private; struct nv84_fifo_priv *priv = nv_engine(dev, engine); int i; + u32 save; /* set playlist length to zero, fifo will unload context */ nv_wr32(dev, 0x0032ec, 0); + save = nv_mask(dev, 0x002520, 0x0000003f, 0x15); + /* tell all connected engines to unload their contexts */ for (i = 0; i < priv->base.channels; i++) { struct nouveau_channel *chan = dev_priv->channels.ptr[i]; @@ -199,6 +207,7 @@ } } + nv_wr32(dev, 0x002520, save); nv_wr32(dev, 0x002140, 0); return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_display.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_display.c @@ -598,7 +598,7 @@ args->size = args->pitch * args->height; args->size = roundup(args->size, PAGE_SIZE); - ret = nouveau_gem_new(dev, args->size, 0, TTM_PL_FLAG_VRAM, 0, 0, &bo); + ret = nouveau_gem_new(dev, args->size, 0, NOUVEAU_GEM_DOMAIN_VRAM, 0, 0, &bo); if (ret) return ret; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nv04_tv.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nv04_tv.c @@ -69,8 +69,8 @@ struct nv04_mode_state *state = &dev_priv->mode_reg; uint8_t crtc1A; - NV_INFO(dev, "Setting dpms mode %d on TV encoder (output %d)\n", - mode, nv_encoder->dcb->index); + NV_DEBUG(dev, "Setting dpms mode %d on TV encoder (output %d)\n", + mode, nv_encoder->dcb->index); state->pllsel &= ~(PLLSEL_TV_CRTC1_MASK | PLLSEL_TV_CRTC2_MASK); @@ -162,9 +162,8 @@ helper->dpms(encoder, DRM_MODE_DPMS_ON); - NV_INFO(dev, "Output %s is running on CRTC %d using output %c\n", - drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index, - '@' + ffs(nv_encoder->dcb->or)); + NV_DEBUG(dev, "Output %s is running on CRTC %d using output %c\n", + drm_get_connector_name(&nouveau_encoder_connector_get(nv_encoder)->base), nv_crtc->index, '@' + ffs(nv_encoder->dcb->or)); } static void nv04_tv_destroy(struct drm_encoder *encoder) --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_prime.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -199,6 +199,7 @@ if (nvbo->gem) { if (nvbo->gem->dev == dev) { drm_gem_object_reference(nvbo->gem); + dma_buf_put(dma_buf); return nvbo->gem; } } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvd0_display.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvd0_display.c @@ -790,7 +790,7 @@ struct nouveau_crtc *nv_crtc = nouveau_crtc(crtc); int ch = EVO_CURS(nv_crtc->index); - evo_piow(crtc->dev, ch, 0x0084, (y << 16) | x); + evo_piow(crtc->dev, ch, 0x0084, (y << 16) | (x & 0xffff)); evo_piow(crtc->dev, ch, 0x0080, 0x00000000); return 0; } @@ -1508,10 +1508,10 @@ case OUTPUT_DP: if (nv_connector->base.display_info.bpc == 6) { nv_encoder->dp.datarate = mode->clock * 18 / 8; - syncs |= 0x00000140; + syncs |= 0x00000002 << 6; } else { nv_encoder->dp.datarate = mode->clock * 24 / 8; - syncs |= 0x00000180; + syncs |= 0x00000005 << 6; } if (nv_encoder->dcb->sorconf.link & 1) --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nva3_copy.fuc +++ linux-3.5.0/drivers/gpu/drm/nouveau/nva3_copy.fuc @@ -119,9 +119,9 @@ // mthd 0x030c-0x0340, various stuff .b16 0xc3 14 .b32 #ctx_src_address_high ~0x000000ff -.b32 #ctx_src_address_low ~0xfffffff0 +.b32 #ctx_src_address_low ~0xffffffff .b32 #ctx_dst_address_high ~0x000000ff -.b32 #ctx_dst_address_low ~0xfffffff0 +.b32 #ctx_dst_address_low ~0xffffffff .b32 #ctx_src_pitch ~0x0007ffff .b32 #ctx_dst_pitch ~0x0007ffff .b32 #ctx_xcnt ~0x0000ffff --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_drv.h +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_drv.h @@ -689,8 +689,6 @@ void (*irq_handler[32])(struct drm_device *); bool msi_enabled; - struct list_head vbl_waiting; - struct { struct drm_global_reference mem_global_ref; struct ttm_bo_global_ref bo_global_ref; --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nvc0_fence.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nvc0_fence.c @@ -32,6 +32,7 @@ struct nvc0_fence_priv { struct nouveau_fence_priv base; struct nouveau_bo *bo; + u32 *suspend; }; struct nvc0_fence_chan { @@ -125,12 +126,36 @@ static int nvc0_fence_fini(struct drm_device *dev, int engine, bool suspend) { + struct nouveau_fifo_priv *pfifo = nv_engine(dev, NVOBJ_ENGINE_FIFO); + struct nvc0_fence_priv *priv = nv_engine(dev, engine); + int i; + + if (suspend) { + priv->suspend = vmalloc(pfifo->channels * sizeof(u32)); + if (!priv->suspend) + return -ENOMEM; + + for (i = 0; i < pfifo->channels; i++) + priv->suspend[i] = nouveau_bo_rd32(priv->bo, i); + } + return 0; } static int nvc0_fence_init(struct drm_device *dev, int engine) { + struct nouveau_fifo_priv *pfifo = nv_engine(dev, NVOBJ_ENGINE_FIFO); + struct nvc0_fence_priv *priv = nv_engine(dev, engine); + int i; + + if (priv->suspend) { + for (i = 0; i < pfifo->channels; i++) + nouveau_bo_wr32(priv->bo, i, priv->suspend[i]); + vfree(priv->suspend); + priv->suspend = NULL; + } + return 0; } --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_drv.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_drv.c @@ -187,11 +187,13 @@ if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) return 0; - NV_INFO(dev, "Disabling display...\n"); - nouveau_display_fini(dev); + if (dev->mode_config.num_crtc) { + NV_INFO(dev, "Disabling display...\n"); + nouveau_display_fini(dev); - NV_INFO(dev, "Disabling fbcon...\n"); - nouveau_fbcon_set_suspend(dev, 1); + NV_INFO(dev, "Disabling fbcon...\n"); + nouveau_fbcon_set_suspend(dev, 1); + } NV_INFO(dev, "Unpinning framebuffer(s)...\n"); list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { @@ -358,10 +360,12 @@ NV_ERROR(dev, "Could not pin/map cursor.\n"); } - nouveau_fbcon_set_suspend(dev, 0); - nouveau_fbcon_zfill_all(dev); + if (dev->mode_config.num_crtc) { + nouveau_fbcon_set_suspend(dev, 0); + nouveau_fbcon_zfill_all(dev); - nouveau_display_init(dev); + nouveau_display_init(dev); + } /* Force CLUT to get re-loaded during modeset */ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { @@ -469,9 +473,7 @@ #ifdef CONFIG_VGA_CONSOLE if (vgacon_text_force()) nouveau_modeset = 0; - else #endif - nouveau_modeset = 1; } if (!nouveau_modeset) --- linux-3.5.0.orig/drivers/gpu/drm/nouveau/nouveau_state.c +++ linux-3.5.0/drivers/gpu/drm/nouveau/nouveau_state.c @@ -50,6 +50,7 @@ { struct drm_nouveau_private *dev_priv = dev->dev_private; struct nouveau_engine *engine = &dev_priv->engine; + u32 pclass = dev->pdev->class >> 8; switch (dev_priv->chipset & 0xf0) { case 0x00: @@ -428,7 +429,8 @@ } /* headless mode */ - if (nouveau_modeset == 2) { + if (nouveau_modeset == 2 || + (nouveau_modeset < 0 && pclass != PCI_CLASS_DISPLAY_VGA)) { engine->display.early_init = nouveau_stub_init; engine->display.late_takedown = nouveau_stub_takedown; engine->display.create = nouveau_stub_init; @@ -737,9 +739,11 @@ } break; case NV_C0: - nvc0_copy_create(dev, 1); + if (!(nv_rd32(dev, 0x022500) & 0x00000200)) + nvc0_copy_create(dev, 1); case NV_D0: - nvc0_copy_create(dev, 0); + if (!(nv_rd32(dev, 0x022500) & 0x00000100)) + nvc0_copy_create(dev, 0); break; default: break; --- linux-3.5.0.orig/drivers/firmware/pcdp.c +++ linux-3.5.0/drivers/firmware/pcdp.c @@ -95,7 +95,7 @@ if (efi.hcdp == EFI_INVALID_TABLE_ADDR) return -ENODEV; - pcdp = ioremap(efi.hcdp, 4096); + pcdp = early_ioremap(efi.hcdp, 4096); printk(KERN_INFO "PCDP: v%d at 0x%lx\n", pcdp->rev, efi.hcdp); if (strstr(cmdline, "console=hcdp")) { @@ -131,6 +131,6 @@ } out: - iounmap(pcdp); + early_iounmap(pcdp, 4096); return rc; } --- linux-3.5.0.orig/drivers/firmware/dmi_scan.c +++ linux-3.5.0/drivers/firmware/dmi_scan.c @@ -6,6 +6,7 @@ #include #include #include +#include #include /* @@ -15,6 +16,7 @@ */ static char dmi_empty_string[] = " "; +static u16 __initdata dmi_ver; /* * Catch too early calls to dmi_check_system(): */ @@ -111,16 +113,18 @@ dmi_table(buf, dmi_len, dmi_num, decode, NULL); + add_device_randomness(buf, dmi_len); + dmi_iounmap(buf, dmi_len); return 0; } -static int __init dmi_checksum(const u8 *buf) +static int __init dmi_checksum(const u8 *buf, u8 len) { u8 sum = 0; int a; - for (a = 0; a < 15; a++) + for (a = 0; a < len; a++) sum += buf[a]; return sum == 0; @@ -158,8 +162,10 @@ return; for (i = 0; i < 16 && (is_ff || is_00); i++) { - if(d[i] != 0x00) is_ff = 0; - if(d[i] != 0xFF) is_00 = 0; + if (d[i] != 0x00) + is_00 = 0; + if (d[i] != 0xFF) + is_ff = 0; } if (is_ff || is_00) @@ -169,7 +175,15 @@ if (!s) return; - sprintf(s, "%pUB", d); + /* + * As of version 2.6 of the SMBIOS specification, the first 3 fields of + * the UUID are supposed to be little-endian encoded. The specification + * says that this is the defacto standard. + */ + if (dmi_ver >= 0x0206) + sprintf(s, "%pUL", d); + else + sprintf(s, "%pUB", d); dmi_ident[slot] = s; } @@ -401,35 +415,63 @@ u8 buf[15]; memcpy_fromio(buf, p, 15); - if ((memcmp(buf, "_DMI_", 5) == 0) && dmi_checksum(buf)) { + if (dmi_checksum(buf, 15)) { dmi_num = (buf[13] << 8) | buf[12]; dmi_len = (buf[7] << 8) | buf[6]; dmi_base = (buf[11] << 24) | (buf[10] << 16) | (buf[9] << 8) | buf[8]; - /* - * DMI version 0.0 means that the real version is taken from - * the SMBIOS version, which we don't know at this point. - */ - if (buf[14] != 0) - printk(KERN_INFO "DMI %d.%d present.\n", - buf[14] >> 4, buf[14] & 0xF); - else - printk(KERN_INFO "DMI present.\n"); if (dmi_walk_early(dmi_decode) == 0) { + if (dmi_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); + } dmi_dump_ids(); return 0; } } + dmi_ver = 0; return 1; } +static int __init smbios_present(const char __iomem *p) +{ + u8 buf[32]; + int offset = 0; + + memcpy_fromio(buf, p, 32); + if ((buf[5] < 32) && dmi_checksum(buf, buf[5])) { + dmi_ver = (buf[6] << 8) + buf[7]; + + /* Some BIOS report weird SMBIOS version, fix that up */ + switch (dmi_ver) { + case 0x021F: + case 0x0221: + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n", + dmi_ver & 0xFF, 3); + dmi_ver = 0x0203; + break; + case 0x0233: + pr_debug("SMBIOS version fixup(2.%d->2.%d)\n", 51, 6); + dmi_ver = 0x0206; + break; + } + offset = 16; + } + return dmi_present(buf + offset); +} + void __init dmi_scan_machine(void) { char __iomem *p, *q; int rc; - if (efi_enabled) { + if (efi_enabled(EFI_CONFIG_TABLES)) { if (efi.smbios == EFI_INVALID_TABLE_ADDR) goto error; @@ -441,7 +483,7 @@ if (p == NULL) goto error; - rc = dmi_present(p + 0x10); /* offset of _DMI_ string */ + rc = smbios_present(p); dmi_iounmap(p, 32); if (!rc) { dmi_available = 1; @@ -459,7 +501,12 @@ goto error; for (q = p; q < p + 0x10000; q += 16) { - rc = dmi_present(q); + if (memcmp(q, "_SM_", 4) == 0 && q - p <= 0xFFE0) + rc = smbios_present(q); + else if (memcmp(q, "_DMI_", 5) == 0) + rc = dmi_present(q); + else + continue; if (!rc) { dmi_available = 1; dmi_iounmap(p, 0x10000); --- linux-3.5.0.orig/drivers/firmware/iscsi_ibft_find.c +++ linux-3.5.0/drivers/firmware/iscsi_ibft_find.c @@ -99,7 +99,7 @@ /* iBFT 1.03 section 1.4.3.1 mandates that UEFI machines will * only use ACPI for this */ - if (!efi_enabled) + if (!efi_enabled(EFI_BOOT)) find_ibft_in_mem(); if (ibft_addr) { --- linux-3.5.0.orig/drivers/firmware/efivars.c +++ linux-3.5.0/drivers/firmware/efivars.c @@ -80,6 +80,10 @@ #include #include +#include +#include +#include + #include #define EFIVARS_VERSION "0.08" @@ -91,6 +95,7 @@ MODULE_VERSION(EFIVARS_VERSION); #define DUMP_NAME_LEN 52 +#define GUID_LEN 37 /* * The maximum size of VariableName + Data = 1024 @@ -108,7 +113,6 @@ __u32 Attributes; } __attribute__((packed)); - struct efivar_entry { struct efivars *efivars; struct efi_variable var; @@ -122,6 +126,9 @@ ssize_t (*store)(struct efivar_entry *entry, const char *buf, size_t count); }; +static struct efivars __efivars; +static struct efivar_operations ops; + #define PSTORE_EFI_ATTRIBUTES \ (EFI_VARIABLE_NON_VOLATILE | \ EFI_VARIABLE_BOOTSERVICE_ACCESS | \ @@ -435,12 +442,23 @@ if (status != EFI_SUCCESS) return -EIO; - if (var->Attributes & 0x1) + if (var->Attributes & EFI_VARIABLE_NON_VOLATILE) str += sprintf(str, "EFI_VARIABLE_NON_VOLATILE\n"); - if (var->Attributes & 0x2) + if (var->Attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS) str += sprintf(str, "EFI_VARIABLE_BOOTSERVICE_ACCESS\n"); - if (var->Attributes & 0x4) + if (var->Attributes & EFI_VARIABLE_RUNTIME_ACCESS) str += sprintf(str, "EFI_VARIABLE_RUNTIME_ACCESS\n"); + if (var->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) + str += sprintf(str, "EFI_VARIABLE_HARDWARE_ERROR_RECORD\n"); + if (var->Attributes & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) + str += sprintf(str, + "EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS\n"); + if (var->Attributes & + EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) + str += sprintf(str, + "EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS\n"); + if (var->Attributes & EFI_VARIABLE_APPEND_WRITE) + str += sprintf(str, "EFI_VARIABLE_APPEND_WRITE\n"); return str - buf; } @@ -618,14 +636,441 @@ .default_attrs = def_attrs, }; -static struct pstore_info efi_pstore_info; - static inline void efivar_unregister(struct efivar_entry *var) { kobject_put(&var->kobj); } +static int efivarfs_file_open(struct inode *inode, struct file *file) +{ + file->private_data = inode->i_private; + return 0; +} + +static ssize_t efivarfs_file_write(struct file *file, + const char __user *userbuf, size_t count, loff_t *ppos) +{ + struct efivar_entry *var = file->private_data; + struct efivars *efivars; + efi_status_t status; + void *data; + u32 attributes; + struct inode *inode = file->f_mapping->host; + int datasize = count - sizeof(attributes); + unsigned long newdatasize; + + if (count < sizeof(attributes)) + return -EINVAL; + + data = kmalloc(datasize, GFP_KERNEL); + + if (!data) + return -ENOMEM; + + efivars = var->efivars; + + if (copy_from_user(&attributes, userbuf, sizeof(attributes))) { + count = -EFAULT; + goto out; + } + + if (attributes & ~(EFI_VARIABLE_MASK)) { + count = -EINVAL; + goto out; + } + + if (copy_from_user(data, userbuf + sizeof(attributes), datasize)) { + count = -EFAULT; + goto out; + } + + if (validate_var(&var->var, data, datasize) == false) { + count = -EINVAL; + goto out; + } + + /* + * The lock here protects the get_variable call, the conditional + * set_variable call, and removal of the variable from the efivars + * list (in the case of an authenticated delete). + */ + spin_lock(&efivars->lock); + + status = efivars->ops->set_variable(var->var.VariableName, + &var->var.VendorGuid, + attributes, datasize, + data); + + if (status != EFI_SUCCESS) { + spin_unlock(&efivars->lock); + kfree(data); + + switch (status) { + case EFI_INVALID_PARAMETER: + count = -EINVAL; + break; + case EFI_OUT_OF_RESOURCES: + count = -ENOSPC; + break; + case EFI_DEVICE_ERROR: + count = -EIO; + break; + case EFI_WRITE_PROTECTED: + count = -EROFS; + break; + case EFI_SECURITY_VIOLATION: + count = -EACCES; + break; + case EFI_NOT_FOUND: + count = -ENOENT; + break; + default: + count = -EINVAL; + } + return count; + } + + /* + * Writing to the variable may have caused a change in size (which + * could either be an append or an overwrite), or the variable to be + * deleted. Perform a GetVariable() so we can tell what actually + * happened. + */ + newdatasize = 0; + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + NULL, &newdatasize, + NULL); + + if (status == EFI_BUFFER_TOO_SMALL) { + spin_unlock(&efivars->lock); + mutex_lock(&inode->i_mutex); + i_size_write(inode, newdatasize + sizeof(attributes)); + mutex_unlock(&inode->i_mutex); + + } else if (status == EFI_NOT_FOUND) { + list_del(&var->list); + spin_unlock(&efivars->lock); + efivar_unregister(var); + drop_nlink(inode); + dput(file->f_dentry); + + } else { + spin_unlock(&efivars->lock); + pr_warn("efivarfs: inconsistent EFI variable implementation? " + "status = %lx\n", status); + } + +out: + kfree(data); + + return count; +} + +static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf, + size_t count, loff_t *ppos) +{ + struct efivar_entry *var = file->private_data; + struct efivars *efivars = var->efivars; + efi_status_t status; + unsigned long datasize = 0; + u32 attributes; + void *data; + ssize_t size = 0; + + spin_lock(&efivars->lock); + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + &attributes, &datasize, NULL); + spin_unlock(&efivars->lock); + + if (status != EFI_BUFFER_TOO_SMALL) + return 0; + + data = kmalloc(datasize + 4, GFP_KERNEL); + + if (!data) + return 0; + + spin_lock(&efivars->lock); + status = efivars->ops->get_variable(var->var.VariableName, + &var->var.VendorGuid, + &attributes, &datasize, + (data + 4)); + spin_unlock(&efivars->lock); + + if (status != EFI_SUCCESS) + goto out_free; + + memcpy(data, &attributes, 4); + size = simple_read_from_buffer(userbuf, count, ppos, + data, datasize + 4); +out_free: + kfree(data); + + return size; +} + +static void efivarfs_evict_inode(struct inode *inode) +{ + clear_inode(inode); +} + +static const struct super_operations efivarfs_ops = { + .statfs = simple_statfs, + .drop_inode = generic_delete_inode, + .evict_inode = efivarfs_evict_inode, + .show_options = generic_show_options, +}; + +static struct super_block *efivarfs_sb; + +static const struct inode_operations efivarfs_dir_inode_operations; + +static const struct file_operations efivarfs_file_operations = { + .open = efivarfs_file_open, + .read = efivarfs_file_read, + .write = efivarfs_file_write, + .llseek = default_llseek, +}; + +static struct inode *efivarfs_get_inode(struct super_block *sb, + const struct inode *dir, int mode, dev_t dev) +{ + struct inode *inode = new_inode(sb); + + if (inode) { + inode->i_ino = get_next_ino(); + inode->i_uid = inode->i_gid = 0; + inode->i_mode = mode; + inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME; + switch (mode & S_IFMT) { + case S_IFREG: + inode->i_fop = &efivarfs_file_operations; + break; + case S_IFDIR: + inode->i_op = &efivarfs_dir_inode_operations; + inode->i_fop = &simple_dir_operations; + inc_nlink(inode); + break; + } + } + return inode; +} + +static void efivarfs_hex_to_guid(const char *str, efi_guid_t *guid) +{ + guid->b[0] = hex_to_bin(str[6]) << 4 | hex_to_bin(str[7]); + guid->b[1] = hex_to_bin(str[4]) << 4 | hex_to_bin(str[5]); + guid->b[2] = hex_to_bin(str[2]) << 4 | hex_to_bin(str[3]); + guid->b[3] = hex_to_bin(str[0]) << 4 | hex_to_bin(str[1]); + guid->b[4] = hex_to_bin(str[11]) << 4 | hex_to_bin(str[12]); + guid->b[5] = hex_to_bin(str[9]) << 4 | hex_to_bin(str[10]); + guid->b[6] = hex_to_bin(str[16]) << 4 | hex_to_bin(str[17]); + guid->b[7] = hex_to_bin(str[14]) << 4 | hex_to_bin(str[15]); + guid->b[8] = hex_to_bin(str[19]) << 4 | hex_to_bin(str[20]); + guid->b[9] = hex_to_bin(str[21]) << 4 | hex_to_bin(str[22]); + guid->b[10] = hex_to_bin(str[24]) << 4 | hex_to_bin(str[25]); + guid->b[11] = hex_to_bin(str[26]) << 4 | hex_to_bin(str[27]); + guid->b[12] = hex_to_bin(str[28]) << 4 | hex_to_bin(str[29]); + guid->b[13] = hex_to_bin(str[30]) << 4 | hex_to_bin(str[31]); + guid->b[14] = hex_to_bin(str[32]) << 4 | hex_to_bin(str[33]); + guid->b[15] = hex_to_bin(str[34]) << 4 | hex_to_bin(str[35]); +} + +static int efivarfs_create(struct inode *dir, struct dentry *dentry, + umode_t mode, struct nameidata *nd) +{ + struct inode *inode; + struct efivars *efivars = &__efivars; + struct efivar_entry *var; + int namelen, i = 0, err = 0; + + if (dentry->d_name.len < 38) + return -EINVAL; + + inode = efivarfs_get_inode(dir->i_sb, dir, mode, 0); + if (!inode) + return -ENOSPC; + + var = kzalloc(sizeof(struct efivar_entry), GFP_KERNEL); + if (!var) { + err = -ENOMEM; + goto out; + } + + namelen = dentry->d_name.len - GUID_LEN; + + efivarfs_hex_to_guid(dentry->d_name.name + namelen + 1, + &var->var.VendorGuid); + + for (i = 0; i < namelen; i++) + var->var.VariableName[i] = dentry->d_name.name[i]; + + var->var.VariableName[i] = '\0'; + + inode->i_private = var; + var->efivars = efivars; + var->kobj.kset = efivars->kset; + + err = kobject_init_and_add(&var->kobj, &efivar_ktype, NULL, "%s", + dentry->d_name.name); + if (err) + goto out; + + kobject_uevent(&var->kobj, KOBJ_ADD); + spin_lock(&efivars->lock); + list_add(&var->list, &efivars->list); + spin_unlock(&efivars->lock); + d_instantiate(dentry, inode); + dget(dentry); +out: + if (err) { + kfree(var); + iput(inode); + } + return err; +} + +static int efivarfs_unlink(struct inode *dir, struct dentry *dentry) +{ + struct efivar_entry *var = dentry->d_inode->i_private; + struct efivars *efivars = var->efivars; + efi_status_t status; + + spin_lock(&efivars->lock); + + status = efivars->ops->set_variable(var->var.VariableName, + &var->var.VendorGuid, + 0, 0, NULL); + + if (status == EFI_SUCCESS || status == EFI_NOT_FOUND) { + list_del(&var->list); + spin_unlock(&efivars->lock); + efivar_unregister(var); + drop_nlink(dir); + dput(dentry); + return 0; + } + + spin_unlock(&efivars->lock); + return -EINVAL; +}; + +int efivarfs_fill_super(struct super_block *sb, void *data, int silent) +{ + struct inode *inode = NULL; + struct dentry *root; + struct efivar_entry *entry, *n; + struct efivars *efivars = &__efivars; + char *name; + + efivarfs_sb = sb; + + sb->s_maxbytes = MAX_LFS_FILESIZE; + sb->s_blocksize = PAGE_CACHE_SIZE; + sb->s_blocksize_bits = PAGE_CACHE_SHIFT; + sb->s_magic = PSTOREFS_MAGIC; + sb->s_op = &efivarfs_ops; + sb->s_time_gran = 1; + + inode = efivarfs_get_inode(sb, NULL, S_IFDIR | 0755, 0); + if (!inode) + return -ENOMEM; + inode->i_op = &efivarfs_dir_inode_operations; + + root = d_make_root(inode); + sb->s_root = root; + if (!root) + return -ENOMEM; + + list_for_each_entry_safe(entry, n, &efivars->list, list) { + struct dentry *dentry, *root = efivarfs_sb->s_root; + unsigned long size = 0; + int len, i; + + inode = NULL; + + len = utf16_strlen(entry->var.VariableName); + + /* GUID plus trailing NULL */ + name = kmalloc(len + 38, GFP_ATOMIC); + if (!name) + goto fail; + + for (i = 0; i < len; i++) + name[i] = entry->var.VariableName[i] & 0xFF; + + name[len] = '-'; + + efi_guid_unparse(&entry->var.VendorGuid, name + len + 1); + + name[len+GUID_LEN] = '\0'; + + inode = efivarfs_get_inode(efivarfs_sb, root->d_inode, + S_IFREG | 0644, 0); + if (!inode) + goto fail_name; + + dentry = d_alloc_name(root, name); + if (!dentry) + goto fail_inode; + + /* copied by the above to local storage in the dentry. */ + kfree(name); + + spin_lock(&efivars->lock); + efivars->ops->get_variable(entry->var.VariableName, + &entry->var.VendorGuid, + &entry->var.Attributes, + &size, + NULL); + spin_unlock(&efivars->lock); + + mutex_lock(&inode->i_mutex); + inode->i_private = entry; + i_size_write(inode, size+4); + mutex_unlock(&inode->i_mutex); + d_add(dentry, inode); + } + + return 0; + +fail_inode: + iput(inode); +fail_name: + kfree(name); +fail: + return -ENOMEM; +} + +static struct dentry *efivarfs_mount(struct file_system_type *fs_type, + int flags, const char *dev_name, void *data) +{ + return mount_single(fs_type, flags, data, efivarfs_fill_super); +} + +static void efivarfs_kill_sb(struct super_block *sb) +{ + kill_litter_super(sb); + efivarfs_sb = NULL; +} + +static struct file_system_type efivarfs_type = { + .name = "efivarfs", + .mount = efivarfs_mount, + .kill_sb = efivarfs_kill_sb, +}; + +static const struct inode_operations efivarfs_dir_inode_operations = { + .lookup = simple_lookup, + .unlink = efivarfs_unlink, + .create = efivarfs_create, +}; + +static struct pstore_info efi_pstore_info; + #ifdef CONFIG_PSTORE static int efi_pstore_open(struct pstore_info *psi) @@ -1114,6 +1559,7 @@ sysfs_remove_bin_file(&efivars->kset->kobj, efivars->del_var); kfree(efivars->new_var); kfree(efivars->del_var); + kobject_put(efivars->kobject); kset_unregister(efivars->kset); } EXPORT_SYMBOL_GPL(unregister_efivars); @@ -1145,6 +1591,13 @@ goto out; } + efivars->kobject = kobject_create_and_add("efivars", parent_kobj); + if (!efivars->kobject) { + pr_err("efivars: Subsystem registration failed.\n"); + error = -ENOMEM; + goto err_unreg_vars; + } + /* * Per EFI spec, the maximum storage allocated for both * the variable name and variable data is 1024 bytes. @@ -1187,6 +1640,11 @@ pstore_register(&efivars->efi_pstore_info); } + register_filesystem(&efivarfs_type); + +err_unreg_vars: + kset_unregister(efivars->kset); + out: kfree(variable_name); @@ -1194,9 +1652,6 @@ } EXPORT_SYMBOL_GPL(register_efivars); -static struct efivars __efivars; -static struct efivar_operations ops; - /* * For now we register the efi subsystem with the firmware subsystem * and the vars subsystem with the efi subsystem. In the future, it @@ -1213,7 +1668,7 @@ printk(KERN_INFO "EFI Variables Facility v%s %s\n", EFIVARS_VERSION, EFIVARS_DATE); - if (!efi_enabled) + if (!efi_enabled(EFI_RUNTIME_SERVICES)) return 0; /* For now we'll register the efi directory at /sys/firmware/efi */ @@ -1251,7 +1706,7 @@ static void __exit efivars_exit(void) { - if (efi_enabled) { + if (efi_enabled(EFI_RUNTIME_SERVICES)) { unregister_efivars(&__efivars); kobject_put(efi_kobj); } --- linux-3.5.0.orig/ubuntu/Kconfig +++ linux-3.5.0/ubuntu/Kconfig @@ -0,0 +1,33 @@ +menu "Ubuntu Supplied Third-Party Device Drivers" + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +source "ubuntu/dm-raid4-5/Kconfig" +## +## +## +source "ubuntu/aufs/Kconfig" +## +## +## +source "ubuntu/i915/Kconfig" +## +## +## +source "ubuntu/alx/Kconfig" +## +## +## +## +## +## + +endmenu --- linux-3.5.0.orig/ubuntu/Makefile +++ linux-3.5.0/ubuntu/Makefile @@ -0,0 +1,36 @@ +# +# Makefile for the Linux kernel ubuntu supplied third-party device drivers. +# + +# +# NOTE: to allow drivers to be added and removed without causing merge +# collisions you should add new entries in the middle of the six lines +# of ## at the bottom of the list. Always add three lines of ## above +# your new entry and maintain the six lines below. +# + +## +## +## +obj-$(CONFIG_DM_RAID45) += dm-raid4-5/ +## +## +## +obj-$(CONFIG_AUFS_FS) += aufs/ +## +## +## +obj-$(CONFIG_DRM_I915_HSW) += i915/ +## +## +## +obj-$(CONFIG_ALX) += alx/ +## +## +## +## +## +## + +# This is a stupid trick to get kbuild to create ubuntu/built-in.o +obj- += foo.o --- linux-3.5.0.orig/ubuntu/aufs-update +++ linux-3.5.0/ubuntu/aufs-update @@ -0,0 +1,51 @@ +#!/bin/bash +# +# NOTE: See aufs/BOM.UPDATING for instructions on how to use this updater. +# + +if [ "$#" -ne 1 ]; then + echo "Usage: $0 " 1>&2 + exit 1 +fi +aufs="$1" + +# Get the current tip name +{ + read x url + read x o_log_sha1 + read x o_tip_sha1 +} +#undef pr_fmt +#define pr_fmt(fmt) AUFS_NAME " %s:%d:%s[%d]: " fmt, \ + __func__, __LINE__, current->comm, current->pid +#else +#include +#include +#endif /* __KERNEL__ */ + +#include + +#define AUFS_VERSION "3.5-20120827" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_BRANCH_MAX_127 +typedef int8_t aufs_bindex_t; +#define AUFS_BRANCH_MAX 127 +#else +typedef int16_t aufs_bindex_t; +#ifdef CONFIG_AUFS_BRANCH_MAX_511 +#define AUFS_BRANCH_MAX 511 +#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) +#define AUFS_BRANCH_MAX 1023 +#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) +#define AUFS_BRANCH_MAX 32767 +#endif +#endif + +#ifdef __KERNEL__ +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif +#endif /* __KERNEL__ */ + +/* ---------------------------------------------------------------------- */ + +#define AUFS_FSTYPE AUFS_NAME + +#define AUFS_ROOT_INO 2 +#define AUFS_FIRST_INO 11 + +#define AUFS_WH_PFX ".wh." +#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) +#define AUFS_WH_TMP_LEN 4 +/* a limit for rmdir/rename a dir */ +#define AUFS_MAX_NAMELEN (NAME_MAX \ + - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ + - 1 /* dot */\ + - AUFS_WH_TMP_LEN) /* hex */ +#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" +#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME +#define AUFS_XINO_TRUNC_INIT 64 /* blocks */ +#define AUFS_XINO_TRUNC_STEP 4 /* blocks */ +#define AUFS_DIRWH_DEF 3 +#define AUFS_RDCACHE_DEF 10 /* seconds */ +#define AUFS_RDCACHE_MAX 3600 /* seconds */ +#define AUFS_RDBLK_DEF 512 /* bytes */ +#define AUFS_RDHASH_DEF 32 +#define AUFS_WKQ_NAME AUFS_NAME "d" +#define AUFS_MFS_DEF_SEC 30 /* seconds */ +#define AUFS_MFS_MAX_SEC 3600 /* seconds */ +#define AUFS_PLINK_WARN 100 /* number of plinks */ + +/* pseudo-link maintenace under /proc */ +#define AUFS_PLINK_MAINT_NAME "plink_maint" +#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME +#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME + +#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ +#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME + +#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME +#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" +#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" + +/* doubly whiteouted */ +#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME +#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME +#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME + +/* branch permissions and attributes */ +#define AUFS_BRPERM_RW "rw" +#define AUFS_BRPERM_RO "ro" +#define AUFS_BRPERM_RR "rr" +#define AUFS_BRRATTR_WH "wh" +#define AUFS_BRWATTR_NLWH "nolwh" + +/* ---------------------------------------------------------------------- */ + +/* ioctl */ +enum { + /* readdir in userspace */ + AuCtl_RDU, + AuCtl_RDU_INO, + + /* pathconf wrapper */ + AuCtl_WBR_FD, + + /* busy inode */ + AuCtl_IBUSY +}; + +/* borrowed from linux/include/linux/kernel.h */ +#ifndef ALIGN +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#endif + +/* borrowed from linux/include/linux/compiler-gcc3.h */ +#ifndef __aligned +#define __aligned(x) __attribute__((aligned(x))) +#endif + +#ifdef __KERNEL__ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif +#endif + +struct au_rdu_cookie { + uint64_t h_pos; + int16_t bindex; + uint8_t flags; + uint8_t pad; + uint32_t generation; +} __aligned(8); + +struct au_rdu_ent { + uint64_t ino; + int16_t bindex; + uint8_t type; + uint8_t nlen; + uint8_t wh; + char name[0]; +} __aligned(8); + +static inline int au_rdu_len(int nlen) +{ + /* include the terminating NULL */ + return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, + sizeof(uint64_t)); +} + +union au_rdu_ent_ul { + struct au_rdu_ent __user *e; + uint64_t ul; +}; + +enum { + AufsCtlRduV_SZ, + AufsCtlRduV_End +}; + +struct aufs_rdu { + /* input */ + union { + uint64_t sz; /* AuCtl_RDU */ + uint64_t nent; /* AuCtl_RDU_INO */ + }; + union au_rdu_ent_ul ent; + uint16_t verify[AufsCtlRduV_End]; + + /* input/output */ + uint32_t blk; + + /* output */ + union au_rdu_ent_ul tail; + /* number of entries which were added in a single call */ + uint64_t rent; + uint8_t full; + uint8_t shwh; + + struct au_rdu_cookie cookie; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_wbr_fd { + uint32_t oflags; + int16_t brid; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_ibusy { + uint64_t ino, h_ino; + int16_t bindex; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +#define AuCtlType 'A' +#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) +#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) +#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ + struct aufs_wbr_fd) +#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) + +#endif /* __AUFS_TYPE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/poll.c +++ linux-3.5.0/ubuntu/aufs/poll.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * poll operation + * There is only one filesystem which implements ->poll operation, currently. + */ + +#include "aufs.h" + +unsigned int aufs_poll(struct file *file, poll_table *wait) +{ + unsigned int mask; + int err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = POLLERR /* | POLLIN | POLLOUT */; + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + /* it is not an error if h_file has no operation */ + mask = DEFAULT_POLLMASK; + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->poll) + mask = h_file->f_op->poll(h_file, wait); + + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + +out: + si_read_unlock(sb); + AuTraceErr((int)mask); + return mask; +} --- linux-3.5.0.orig/ubuntu/aufs/wbr_policy.c +++ linux-3.5.0/ubuntu/aufs/wbr_policy.c @@ -0,0 +1,700 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * policies for selecting one among multiple writable branches + */ + +#include +#include "aufs.h" + +/* subset of cpup_attr() */ +static noinline_for_stack +int au_cpdown_attr(struct path *h_path, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct inode *h_isrc; + + h_isrc = h_src->d_inode; + ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; + ia.ia_mode = h_isrc->i_mode; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_path->dentry->d_inode, h_isrc); + err = vfsub_sio_notify_change(h_path, &ia); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_sio_notify_change(h_path, &ia); + } + + return err; +} + +#define AuCpdown_PARENT_OPQ 1 +#define AuCpdown_WHED (1 << 1) +#define AuCpdown_MADE_DIR (1 << 2) +#define AuCpdown_DIROPQ (1 << 3) +#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) +#define au_fset_cpdown(flags, name) \ + do { (flags) |= AuCpdown_##name; } while (0) +#define au_fclr_cpdown(flags, name) \ + do { (flags) &= ~AuCpdown_##name; } while (0) + +struct au_cpdown_dir_args { + struct dentry *parent; + unsigned int flags; +}; + +static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, + struct au_cpdown_dir_args *a) +{ + int err; + struct dentry *opq_dentry; + + opq_dentry = au_diropq_create(dentry, bdst); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out; + dput(opq_dentry); + au_fset_cpdown(a->flags, DIROPQ); + +out: + return err; +} + +static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, + struct inode *dir, aufs_bindex_t bdst) +{ + int err; + struct path h_path; + struct au_branch *br; + + br = au_sbr(dentry->d_sb, bdst); + h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + if (h_path.dentry->d_inode) { + h_path.mnt = br->br_mnt; + err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, + dentry); + } + dput(h_path.dentry); + +out: + return err; +} + +static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg) +{ + int err, rerr; + aufs_bindex_t bopq, bstart; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + struct au_cpdown_dir_args *args = arg; + + bstart = au_dbstart(dentry); + /* dentry is di-locked */ + parent = dget_parent(dentry); + dir = parent->d_inode; + h_dir = h_parent->d_inode; + AuDebugOn(h_dir != au_h_iptr(dir, bdst)); + IMustLock(h_dir); + + err = au_lkup_neg(dentry, bdst); + if (unlikely(err < 0)) + goto out; + h_path.dentry = au_h_dptr(dentry, bdst); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); + err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, + S_IRWXU | S_IRUGO | S_IXUGO); + if (unlikely(err)) + goto out_put; + au_fset_cpdown(args->flags, MADE_DIR); + + bopq = au_dbdiropq(dentry); + au_fclr_cpdown(args->flags, WHED); + au_fclr_cpdown(args->flags, DIROPQ); + if (au_dbwh(dentry) == bdst) + au_fset_cpdown(args->flags, WHED); + if (!au_ftest_cpdown(args->flags, PARENT_OPQ) && bopq <= bdst) + au_fset_cpdown(args->flags, PARENT_OPQ); + h_inode = h_path.dentry->d_inode; + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + if (au_ftest_cpdown(args->flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, args); + if (unlikely(err)) { + mutex_unlock(&h_inode->i_mutex); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, bstart)); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(err)) + goto out_opq; + + if (au_ftest_cpdown(args->flags, WHED)) { + err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); + if (unlikely(err)) + goto out_opq; + } + + inode = dentry->d_inode; + if (au_ibend(inode) < bdst) + au_set_ibend(inode, bdst); + au_set_h_iptr(inode, bdst, au_igrab(h_inode), + au_hi_flags(inode, /*isdir*/1)); + goto out; /* success */ + + /* revert */ +out_opq: + if (au_ftest_cpdown(args->flags, DIROPQ)) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + mutex_unlock(&h_inode->i_mutex); + if (unlikely(rerr)) { + AuIOErr("failed removing diropq for %.*s b%d (%d)\n", + AuDLNPair(dentry), bdst, rerr); + err = -EIO; + goto out; + } + } +out_dir: + if (au_ftest_cpdown(args->flags, MADE_DIR)) { + rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); + if (unlikely(rerr)) { + AuIOErr("failed removing %.*s b%d (%d)\n", + AuDLNPair(dentry), bdst, rerr); + err = -EIO; + } + } +out_put: + au_set_h_dptr(dentry, bdst, NULL); + if (au_dbend(dentry) == bdst) + au_update_dbend(dentry); +out: + dput(parent); + return err; +} + +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct au_cpdown_dir_args args = { + .parent = dget_parent(dentry), + .flags = 0 + }; + + err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &args); + dput(args.parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for create */ + +static int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, i, j, ndentry; + aufs_bindex_t bopq; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *parent, *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + parent = dget_parent(dentry); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); + if (unlikely(err)) + goto out_free; + + err = bindex; + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + di_read_lock_parent2(d, !AuLock_IR); + bopq = au_dbdiropq(d); + di_read_unlock(d, !AuLock_IR); + if (bopq >= 0 && bopq < err) + err = bopq; + } + } + +out_free: + dput(parent); + au_dpages_free(&dpages); +out: + return err; +} + +static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) +{ + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) + return bindex; + return -EROFS; +} + +/* top down parent */ +static int au_wbr_create_tdp(struct dentry *dentry, int isdir __maybe_unused) +{ + int err; + aufs_bindex_t bstart, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + err = bstart; + if (!au_br_rdonly(au_sbr(sb, bstart))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbstart(parent); bindex < bstart; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) { + err = au_wbr_bu(sb, bstart - 1); + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + } + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* an exception for the policy other than tdp */ +static int au_wbr_create_exp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bdiropq; + struct dentry *parent; + + err = -1; + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + bdiropq = au_dbdiropq(parent); + if (bwh >= 0) { + if (bdiropq >= 0) + err = min(bdiropq, bwh); + else + err = bwh; + AuDbg("%d\n", err); + } else if (bdiropq >= 0) { + err = bdiropq; + AuDbg("%d\n", err); + } + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + + if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) + err = -1; + + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* round robin */ +static int au_wbr_create_init_rr(struct super_block *sb) +{ + int err; + + err = au_wbr_bu(sb, au_sbend(sb)); + atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ + /* smp_mb(); */ + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_rr(struct dentry *dentry, int isdir) +{ + int err, nbr; + unsigned int u; + aufs_bindex_t bindex, bend; + struct super_block *sb; + atomic_t *next; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + next = &au_sbi(sb)->si_wbr_rr_next; + bend = au_sbend(sb); + nbr = bend + 1; + for (bindex = 0; bindex <= bend; bindex++) { + if (!isdir) { + err = atomic_dec_return(next) + 1; + /* modulo for 0 is meaningless */ + if (unlikely(!err)) + err = atomic_dec_return(next) + 1; + } else + err = atomic_read(next); + AuDbg("%d\n", err); + u = err; + err = u % nbr; + AuDbg("%d\n", err); + if (!au_br_rdonly(au_sbr(sb, err))) + break; + err = -EROFS; + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space */ +static void au_mfs(struct dentry *dentry) +{ + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + aufs_bindex_t bindex, bend; + int err; + unsigned long long b, bavail; + struct path h_path; + /* reduce the stack usage */ + struct kstatfs *st; + + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) { + AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); + return; + } + + bavail = 0; + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + MtxMustLock(&mfs->mfs_lock); + mfs->mfs_bindex = -EROFS; + mfs->mfsrr_bytes = 0; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.mnt = br->br_mnt; + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, st); + if (unlikely(err)) { + AuWarn1("failed statfs, b%d, %d\n", bindex, err); + continue; + } + + /* when the available size is equal, select the lower one */ + BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) + || sizeof(b) < sizeof(st->f_bsize)); + b = st->f_bavail * st->f_bsize; + br->br_wbr->wbr_bytes = b; + if (b >= bavail) { + bavail = b; + mfs->mfs_bindex = bindex; + mfs->mfs_jiffy = jiffies; + } + } + + mfs->mfsrr_bytes = bavail; + AuDbg("b%d\n", mfs->mfs_bindex); + kfree(st); +} + +static int au_wbr_create_mfs(struct dentry *dentry, int isdir __maybe_unused) +{ + int err; + struct super_block *sb; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0 + || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) + au_mfs(dentry); + mutex_unlock(&mfs->mfs_lock); + err = mfs->mfs_bindex; + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfs(struct super_block *sb) +{ + struct au_wbr_mfs *mfs; + + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_init(&mfs->mfs_lock); + mfs->mfs_jiffy = 0; + mfs->mfs_bindex = -EROFS; + + return 0; +} + +static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) +{ + mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space and then round robin */ +static int au_wbr_create_mfsrr(struct dentry *dentry, int isdir) +{ + int err; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_mfs(dentry, isdir); + if (err >= 0) { + mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) + err = au_wbr_create_rr(dentry, isdir); + mutex_unlock(&mfs->mfs_lock); + } + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfsrr(struct super_block *sb) +{ + int err; + + au_wbr_create_init_mfs(sb); /* ignore */ + err = au_wbr_create_init_rr(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* top down parent and most free space */ +static int au_wbr_create_pmfs(struct dentry *dentry, int isdir) +{ + int err, e2; + unsigned long long b; + aufs_bindex_t bindex, bstart, bend; + struct super_block *sb; + struct dentry *parent, *h_parent; + struct au_branch *br; + + err = au_wbr_create_tdp(dentry, isdir); + if (unlikely(err < 0)) + goto out; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + bend = au_dbtaildir(parent); + if (bstart == bend) + goto out_parent; /* success */ + + e2 = au_wbr_create_mfs(dentry, isdir); + if (e2 < 0) + goto out_parent; /* success */ + + /* when the available size is equal, select upper one */ + sb = dentry->d_sb; + br = au_sbr(sb, err); + b = br->br_wbr->wbr_bytes; + AuDbg("b%d, %llu\n", err, b); + + for (bindex = bstart; bindex <= bend; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { + b = br->br_wbr->wbr_bytes; + err = bindex; + AuDbg("b%d, %llu\n", err, b); + } + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out_parent: + dput(parent); +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for copyup */ + +/* top down parent */ +static int au_wbr_copyup_tdp(struct dentry *dentry) +{ + return au_wbr_create_tdp(dentry, /*isdir, anything is ok*/0); +} + +/* bottom up parent */ +static int au_wbr_copyup_bup(struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, bstart; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + bstart = au_dbstart(parent); + for (bindex = au_dbstart(dentry); bindex >= bstart; bindex--) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !h_parent->d_inode) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) + err = au_wbr_bu(sb, bstart - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +static int au_wbr_copyup_bu(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + err = au_wbr_bu(dentry->d_sb, bstart); + AuDbg("b%d\n", err); + if (err > bstart) + err = au_wbr_nonopq(dentry, err); + + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { + [AuWbrCopyup_TDP] = { + .copyup = au_wbr_copyup_tdp + }, + [AuWbrCopyup_BUP] = { + .copyup = au_wbr_copyup_bup + }, + [AuWbrCopyup_BU] = { + .copyup = au_wbr_copyup_bu + } +}; + +struct au_wbr_create_operations au_wbr_create_ops[] = { + [AuWbrCreate_TDP] = { + .create = au_wbr_create_tdp + }, + [AuWbrCreate_RR] = { + .create = au_wbr_create_rr, + .init = au_wbr_create_init_rr + }, + [AuWbrCreate_MFS] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSV] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRR] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRRV] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFS] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSV] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + } +}; --- linux-3.5.0.orig/ubuntu/aufs/conf.mk +++ linux-3.5.0/ubuntu/aufs/conf.mk @@ -0,0 +1,38 @@ + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} + +define AuConf +ifdef ${1} +AuConfStr += ${1}=${${1}} +endif +endef + +AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ + SBILIST \ + HNOTIFY HFSNOTIFY \ + EXPORT INO_T_64 \ + RDU \ + PROC_MAP \ + SP_IATTR \ + SHWH \ + BR_RAMFS \ + BR_FUSE POLL \ + BR_HFSPLUS \ + BDEV_LOOP \ + DEBUG MAGIC_SYSRQ +$(foreach i, ${AuConfAll}, \ + $(eval $(call AuConf,CONFIG_AUFS_${i}))) + +AuConfName = ${obj}/conf.str +${AuConfName}.tmp: FORCE + @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ +${AuConfName}: ${AuConfName}.tmp + @diff -q $< $@ > /dev/null 2>&1 || { \ + echo ' GEN ' $@; \ + cp -p $< $@; \ + } +FORCE: +clean-files += ${AuConfName} ${AuConfName}.tmp +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk --- linux-3.5.0.orig/ubuntu/aufs/hfsnotify.c +++ linux-3.5.0/ubuntu/aufs/hfsnotify.c @@ -0,0 +1,257 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * fsnotify for the lower directories + */ + +#include "aufs.h" + +/* FS_IN_IGNORED is unnecessary */ +static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE + | FS_CREATE | FS_EVENT_ON_CHILD); +static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); +static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); + +static void au_hfsn_free_mark(struct fsnotify_mark *mark) +{ + struct au_hnotify *hn = container_of(mark, struct au_hnotify, + hn_mark); + AuDbg("here\n"); + au_cache_free_hnotify(hn); + smp_mb__before_atomic_dec(); + atomic64_dec(&au_hfsn_ifree); + wake_up(&au_hfsn_wq); +} + +static int au_hfsn_alloc(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + struct super_block *sb; + struct au_branch *br; + struct fsnotify_mark *mark; + aufs_bindex_t bindex; + + hn = hinode->hi_notify; + sb = hn->hn_aufs_inode->i_sb; + bindex = au_br_index(sb, hinode->hi_id); + br = au_sbr(sb, bindex); + mark = &hn->hn_mark; + fsnotify_init_mark(mark, au_hfsn_free_mark); + mark->mask = AuHfsnMask; + /* + * by udba rename or rmdir, aufs assign a new inode to the known + * h_inode, so specify 1 to allow dups. + */ + return fsnotify_add_mark(mark, br->br_hfsn_group, hinode->hi_inode, + /*mnt*/NULL, /*allow_dups*/1); +} + +static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) +{ + struct fsnotify_mark *mark; + unsigned long long ull; + + ull = atomic64_inc_return(&au_hfsn_ifree); + BUG_ON(!ull); + + mark = &hn->hn_mark; + fsnotify_destroy_mark(mark); + fsnotify_put_mark(mark); + + /* free hn by myself */ + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) +{ + struct fsnotify_mark *mark; + + mark = &hinode->hi_notify->hn_mark; + spin_lock(&mark->lock); + if (do_set) { + AuDebugOn(mark->mask & AuHfsnMask); + mark->mask |= AuHfsnMask; + } else { + AuDebugOn(!(mark->mask & AuHfsnMask)); + mark->mask &= ~AuHfsnMask; + } + spin_unlock(&mark->lock); + /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ +} + +/* ---------------------------------------------------------------------- */ + +/* #define AuDbgHnotify */ +#ifdef AuDbgHnotify +static char *au_hfsn_name(u32 mask) +{ +#ifdef CONFIG_AUFS_DEBUG +#define test_ret(flag) if (mask & flag) \ + return #flag; + test_ret(FS_ACCESS); + test_ret(FS_MODIFY); + test_ret(FS_ATTRIB); + test_ret(FS_CLOSE_WRITE); + test_ret(FS_CLOSE_NOWRITE); + test_ret(FS_OPEN); + test_ret(FS_MOVED_FROM); + test_ret(FS_MOVED_TO); + test_ret(FS_CREATE); + test_ret(FS_DELETE); + test_ret(FS_DELETE_SELF); + test_ret(FS_MOVE_SELF); + test_ret(FS_UNMOUNT); + test_ret(FS_Q_OVERFLOW); + test_ret(FS_IN_IGNORED); + test_ret(FS_IN_ISDIR); + test_ret(FS_IN_ONESHOT); + test_ret(FS_EVENT_ON_CHILD); + return ""; +#undef test_ret +#else + return "??"; +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int au_hfsn_handle_event(struct fsnotify_group *group, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + struct fsnotify_event *event) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + __u32 mask; + struct qstr h_child_qstr = QSTR_INIT(event->file_name, event->name_len); + + AuDebugOn(event->data_type != FSNOTIFY_EVENT_INODE); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ + mask = event->mask; + AuDebugOn(mask & FS_UNMOUNT); + if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) + goto out; + + h_dir = event->to_tell; + h_inode = event->inode; +#ifdef AuDbgHnotify + au_debug(1); + if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 + || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), + AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug(0); +#endif + + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, &h_child_qstr, h_inode); + +out: + return err; +} + +/* isn't it waste to ask every registered 'group'? */ +/* copied from linux/fs/notify/inotify/inotify_fsnotiry.c */ +/* it should be exported to modules */ +static bool au_hfsn_should_send_event(struct fsnotify_group *group, + struct inode *h_inode, + struct fsnotify_mark *inode_mark, + struct fsnotify_mark *vfsmount_mark, + __u32 mask, void *data, int data_type) +{ + mask = (mask & ~FS_EVENT_ON_CHILD); + return inode_mark->mask & mask; +} + +static struct fsnotify_ops au_hfsn_ops = { + .should_send_event = au_hfsn_should_send_event, + .handle_event = au_hfsn_handle_event +}; + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin_br(struct au_branch *br) +{ + if (br->br_hfsn_group) + fsnotify_put_group(br->br_hfsn_group); +} + +static int au_hfsn_init_br(struct au_branch *br, int perm) +{ + br->br_hfsn_group = NULL; + br->br_hfsn_ops = au_hfsn_ops; + return 0; +} + +static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (udba != AuOpt_UDBA_HNOTIFY + || !au_br_hnotifyable(perm)) { + au_hfsn_fin_br(br); + br->br_hfsn_group = NULL; + goto out; + } + + if (br->br_hfsn_group) + goto out; + + br->br_hfsn_group = fsnotify_alloc_group(&br->br_hfsn_ops); + if (IS_ERR(br->br_hfsn_group)) { + err = PTR_ERR(br->br_hfsn_group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); + br->br_hfsn_group = NULL; + } + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin(void) +{ + AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); + wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); +} + +const struct au_hnotify_op au_hnotify_op = { + .ctl = au_hfsn_ctl, + .alloc = au_hfsn_alloc, + .free = au_hfsn_free, + + .fin = au_hfsn_fin, + + .reset_br = au_hfsn_reset_br, + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; --- linux-3.5.0.orig/ubuntu/aufs/whout.h +++ linux-3.5.0/ubuntu/aufs/whout.h @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#ifndef __AUFS_WHOUT_H__ +#define __AUFS_WHOUT_H__ + +#ifdef __KERNEL__ + +#include "dir.h" + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); +struct au_branch; +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, + struct au_branch *br, int try_sio); +int au_diropq_test(struct dentry *h_dentry, struct au_branch *br); +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry); +int au_wh_init(struct dentry *h_parent, struct au_branch *br, + struct super_block *sb); + +/* diropq flags */ +#define AuDiropq_CREATE 1 +#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) +#define au_fset_diropq(flags, name) \ + do { (flags) |= AuDiropq_##name; } while (0) +#define au_fclr_diropq(flags, name) \ + do { (flags) &= ~AuDiropq_##name; } while (0) + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags); +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br); +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent); + +/* real rmdir for the whiteout-ed dir */ +struct au_whtmp_rmdir { + struct inode *dir; + struct au_branch *br; + struct dentry *wh_dentry; + struct au_nhash whlist; +}; + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist); +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args); + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_diropq_create(struct dentry *dentry, + aufs_bindex_t bindex) +{ + return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); +} + +static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) +{ + return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/Kconfig +++ linux-3.5.0/ubuntu/aufs/Kconfig @@ -0,0 +1,203 @@ +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" + depends on EXPERIMENTAL + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single + directory. + In the early days, aufs was entirely re-designed and + re-implemented Unionfs Version 1.x series. Introducing many + original ideas, approaches and improvements, it becomes totally + different from Unionfs while keeping the basic features. + +if AUFS_FS +choice + prompt "Maximum number of branches" + default AUFS_BRANCH_MAX_127 + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_127 + bool "127" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_511 + bool "511" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_1023 + bool "1023" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_32767 + bool "32767" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +endchoice + +config AUFS_SBILIST + bool + depends on AUFS_MAGIC_SYSRQ || PROC_FS + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq or /proc, enabled automatically. + +config AUFS_HNOTIFY + bool "Detect direct branch access (bypassing aufs)" + help + If you want to modify files on branches directly, eg. bypassing aufs, + and want aufs to detect the changes of them fully, then enable this + option and use 'udba=notify' mount option. + Currently there is only one available configuration, "fsnotify". + It will have a negative impact to the performance. + See detail in aufs.5. + +choice + prompt "method" if AUFS_HNOTIFY + default AUFS_HFSNOTIFY +config AUFS_HFSNOTIFY + bool "fsnotify" + select FSNOTIFY +endchoice + +config AUFS_EXPORT + bool "NFS-exportable aufs" + depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. + See detail in aufs.5. + +config AUFS_INO_T_64 + bool + depends on AUFS_EXPORT + depends on 64BIT && !(ALPHA || S390) + default y + help + Automatic configuration for internal use. + /* typedef unsigned long/int __kernel_ino_t */ + /* alpha and s390x are int */ + +config AUFS_RDU + bool "Readdir in userspace" + help + Aufs has two methods to provide a merged view for a directory, + by a user-space library and by kernel-space natively. The latter + is always enabled but sometimes large and slow. + If you enable this option, install the library in aufs2-util + package, and set some environment variables for your readdir(3), + then the work will be handled in user-space which generally + shows better performance in most cases. + See detail in aufs.5. + +config AUFS_PROC_MAP + bool "support for /proc/maps and lsof(1)" + depends on PROC_FS + help + When you issue mmap(2) in aufs, it is actually a direct mmap(2) + call to the file on the branch fs since the file in aufs is + purely virtual. And the file path printed in /proc/maps (and + others) will be the path on the branch fs. In most cases, it + does no harm. But some utilities like lsof(1) may confuse since + the utility or user may expect the file path in aufs to be + printed. + To address this issue, aufs provides a patch which introduces a + new member called vm_prfile into struct vm_are_struct. The patch + is meaningless without enabling this configuration since nobody + sets the new vm_prfile member. + If you don't apply the patch, then enabling this configuration + will cause a compile error. + This approach is fragile since if someone else make some changes + around vm_file, then vm_prfile may not work anymore. As a + workaround such case, aufs provides this configuration. If you + disable it, then lsof(1) may produce incorrect result but the + problem will be gone even if the aufs patch is applied (I hope). + +config AUFS_SP_IATTR + bool "Respect the attributes (mtime/ctime mainly) of special files" + help + When you write something to a special file, some attributes of it + (mtime/ctime mainly) may be updated. Generally such updates are + less important (actually some device drivers and NFS ignore + it). But some applications (such like test program) requires + such updates. If you need these updates, then enable this + configuration which introduces some overhead. + Currently this configuration handles FIFO only. + +config AUFS_SHWH + bool "Show whiteouts" + help + If you want to make the whiteouts in aufs visible, then enable + this option and specify 'shwh' mount option. Although it may + sounds like philosophy or something, but in technically it + simply shows the name of whiteout with keeping its behaviour. + +config AUFS_BR_RAMFS + bool "Ramfs (initramfs/rootfs) as an aufs branch" + help + If you want to use ramfs as an aufs branch fs, then enable this + option. Generally tmpfs is recommended. + Aufs prohibited them to be a branch fs by default, because + initramfs becomes unusable after switch_root or something + generally. If you sets initramfs as an aufs branch and boot your + system by switch_root, you will meet a problem easily since the + files in initramfs may be inaccessible. + Unless you are going to use ramfs as an aufs branch fs without + switch_root or something, leave it N. + +config AUFS_BR_FUSE + bool "Fuse fs as an aufs branch" + depends on FUSE_FS + select AUFS_POLL + help + If you want to use fuse-based userspace filesystem as an aufs + branch fs, then enable this option. + It implements the internal poll(2) operation which is + implemented by fuse only (curretnly). + +config AUFS_POLL + bool + help + Automatic configuration for internal use. + +config AUFS_BR_HFSPLUS + bool "Hfsplus as an aufs branch" + depends on HFSPLUS_FS + default y + help + If you want to use hfsplus fs as an aufs branch fs, then enable + this option. This option introduces a small overhead at + copying-up a file on hfsplus. + +config AUFS_BDEV_LOOP + bool + depends on BLK_DEV_LOOP + default y + help + Automatic configuration for internal use. + Convert =[ym] into =y. + +config AUFS_DEBUG + bool "Debug aufs" + help + Enable this to compile aufs internal debug code. + It will have a negative impact to the performance. + +config AUFS_MAGIC_SYSRQ + bool + depends on AUFS_DEBUG && MAGIC_SYSRQ + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif --- linux-3.5.0.orig/ubuntu/aufs/cpup.c +++ linux-3.5.0/ubuntu/aufs/cpup.c @@ -0,0 +1,1084 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * copy-up functions, see wbr_policy.c for copy-down + */ + +#include +#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, struct inode *src) +{ + const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE + | S_NOATIME | S_NOCMTIME; + + dst->i_flags |= src->i_flags & ~mask; + if (au_test_fs_notime(dst->i_sb)) + dst->i_flags |= S_NOATIME | S_NOCMTIME; +} + +void au_cpup_attr_timesizes(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + fsstack_copy_attr_times(inode, h_inode); + fsstack_copy_inode_size(inode, h_inode); +} + +void au_cpup_attr_nlink(struct inode *inode, int force) +{ + struct inode *h_inode; + struct super_block *sb; + aufs_bindex_t bindex, bend; + + sb = inode->i_sb; + bindex = au_ibstart(inode); + h_inode = au_h_iptr(inode, bindex); + if (!force + && !S_ISDIR(h_inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode)) + return; + + /* + * 0 can happen in revalidating. + * h_inode->i_mutex is not held, but it is harmless since once i_nlink + * reaches 0, it will never become positive. + */ + set_nlink(inode, h_inode->i_nlink); + + /* + * fewer nlink makes find(1) noisy, but larger nlink doesn't. + * it may includes whplink directory. + */ + if (S_ISDIR(h_inode->i_mode)) { + bend = au_ibend(inode); + for (bindex++; bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) + au_add_nlink(inode, h_inode); + } + } +} + +void au_cpup_attr_changeable(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + inode->i_mode = h_inode->i_mode; + inode->i_uid = h_inode->i_uid; + inode->i_gid = h_inode->i_gid; + au_cpup_attr_timesizes(inode); + au_cpup_attr_flags(inode, h_inode); +} + +void au_cpup_igen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + iinfo->ii_higen = h_inode->i_generation; + iinfo->ii_hsb1 = h_inode->i_sb; +} + +void au_cpup_attr_all(struct inode *inode, int force) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + au_cpup_attr_changeable(inode); + if (inode->i_nlink > 0) + au_cpup_attr_nlink(inode, force); + inode->i_rdev = h_inode->i_rdev; + inode->i_blkbits = h_inode->i_blkbits; + au_cpup_igen(inode, h_inode); +} + +/* ---------------------------------------------------------------------- */ + +/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ + +/* keep the timestamps of the parent dir when cpup */ +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path) +{ + struct inode *h_inode; + + dt->dt_dentry = dentry; + dt->dt_h_path = *h_path; + h_inode = h_path->dentry->d_inode; + dt->dt_atime = h_inode->i_atime; + dt->dt_mtime = h_inode->i_mtime; + /* smp_mb(); */ +} + +void au_dtime_revert(struct au_dtime *dt) +{ + struct iattr attr; + int err; + + attr.ia_atime = dt->dt_atime; + attr.ia_mtime = dt->dt_mtime; + attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET + | ATTR_ATIME | ATTR_ATIME_SET; + + err = vfsub_notify_change(&dt->dt_h_path, &attr); + if (unlikely(err)) + pr_warn("restoring timestamps failed(%d). ignored\n", err); +} + +/* ---------------------------------------------------------------------- */ + +static noinline_for_stack +int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct path h_path; + struct inode *h_isrc, *h_idst; + + h_path.dentry = au_h_dptr(dst, bindex); + h_idst = h_path.dentry->d_inode; + h_path.mnt = au_sbr_mnt(dst->d_sb, bindex); + h_isrc = h_src->d_inode; + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + ia.ia_atime = h_isrc->i_atime; + ia.ia_mtime = h_isrc->i_mtime; + if (h_idst->i_mode != h_isrc->i_mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + } + sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_isrc); + err = vfsub_notify_change(&h_path, &ia); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_notify_change(&h_path, &ia); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, + char *buf, unsigned long blksize) +{ + int err; + size_t sz, rbytes, wbytes; + unsigned char all_zero; + char *p, *zp; + struct mutex *h_mtx; + /* reduce stack usage */ + struct iattr *ia; + + zp = page_address(ZERO_PAGE(0)); + if (unlikely(!zp)) + return -ENOMEM; /* possible? */ + + err = 0; + all_zero = 0; + while (len) { + AuDbg("len %lld\n", len); + sz = blksize; + if (len < blksize) + sz = len; + + rbytes = 0; + /* todo: signal_pending? */ + while (!rbytes || err == -EAGAIN || err == -EINTR) { + rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); + err = rbytes; + } + if (unlikely(err < 0)) + break; + + all_zero = 0; + if (len >= rbytes && rbytes == blksize) + all_zero = !memcmp(buf, zp, rbytes); + if (!all_zero) { + wbytes = rbytes; + p = buf; + while (wbytes) { + size_t b; + + b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); + err = b; + /* todo: signal_pending? */ + if (unlikely(err == -EAGAIN || err == -EINTR)) + continue; + if (unlikely(err < 0)) + break; + wbytes -= b; + p += b; + } + } else { + loff_t res; + + AuLabel(hole); + res = vfsub_llseek(dst, rbytes, SEEK_CUR); + err = res; + if (unlikely(res < 0)) + break; + } + len -= rbytes; + err = 0; + } + + /* the last block may be a hole */ + if (!err && all_zero) { + AuLabel(last hole); + + err = 1; + if (au_test_nfs(dst->f_dentry->d_sb)) { + /* nfs requires this step to make last hole */ + /* is this only nfs? */ + do { + /* todo: signal_pending? */ + err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); + } while (err == -EAGAIN || err == -EINTR); + if (err == 1) + dst->f_pos--; + } + + if (err == 1) { + ia = (void *)buf; + ia->ia_size = dst->f_pos; + ia->ia_valid = ATTR_SIZE | ATTR_FILE; + ia->ia_file = dst; + h_mtx = &dst->f_dentry->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + err = vfsub_notify_change(&dst->f_path, ia); + mutex_unlock(h_mtx); + } + } + + return err; +} + +int au_copy_file(struct file *dst, struct file *src, loff_t len) +{ + int err; + unsigned long blksize; + unsigned char do_kfree; + char *buf; + + err = -ENOMEM; + blksize = dst->f_dentry->d_sb->s_blocksize; + if (!blksize || PAGE_SIZE < blksize) + blksize = PAGE_SIZE; + AuDbg("blksize %lu\n", blksize); + do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); + if (do_kfree) + buf = kmalloc(blksize, GFP_NOFS); + else + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + if (len > (1 << 22)) + AuDbg("copying a large file %lld\n", (long long)len); + + src->f_pos = 0; + dst->f_pos = 0; + err = au_do_copy_file(dst, src, len, buf, blksize); + if (do_kfree) + kfree(buf); + else + free_page((unsigned long)buf); + +out: + return err; +} + +/* + * to support a sparse file which is opened with O_APPEND, + * we need to close the file. + */ +static int au_cp_regular(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len) +{ + int err, i; + enum { SRC, DST }; + struct { + aufs_bindex_t bindex; + unsigned int flags; + struct dentry *dentry; + struct file *file; + void *label, *label_file; + } *f, file[] = { + { + .bindex = bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + .file = NULL, + .label = &&out, + .label_file = &&out_src + }, + { + .bindex = bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .file = NULL, + .label = &&out_src, + .label_file = &&out_dst + } + }; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + sb = dentry->d_sb; + f = file; + for (i = 0; i < 2; i++, f++) { + f->dentry = au_h_dptr(dentry, f->bindex); + f->file = au_h_open(dentry, f->bindex, f->flags, /*file*/NULL); + err = PTR_ERR(f->file); + if (IS_ERR(f->file)) + goto *f->label; + err = -EINVAL; + if (unlikely(!f->file->f_op)) + goto *f->label_file; + } + + /* try stopping to update while we copyup */ + IMustLock(file[SRC].dentry->d_inode); + err = au_copy_file(file[DST].file, file[SRC].file, len); + +out_dst: + fput(file[DST].file); + au_sbr_put(sb, file[DST].bindex); +out_src: + fput(file[SRC].file); + au_sbr_put(sb, file[SRC].bindex); +out: + return err; +} + +static int au_do_cpup_regular(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, + struct inode *h_dir, struct path *h_path) +{ + int err, rerr; + loff_t l; + + err = 0; + l = i_size_read(au_h_iptr(dentry->d_inode, bsrc)); + if (len == -1 || l < len) + len = l; + if (len) + err = au_cp_regular(dentry, bdst, bsrc, len); + if (!err) + goto out; /* success */ + + rerr = vfsub_unlink(h_dir, h_path, /*force*/0); + if (rerr) { + AuIOErr("failed unlinking cpup-ed %.*s(%d, %d)\n", + AuDLNPair(h_path->dentry), err, rerr); + err = -EIO; + } + +out: + return err; +} + +static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, + struct inode *h_dir) +{ + int err, symlen; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } sym; + + err = -ENOSYS; + if (unlikely(!h_src->d_inode->i_op->readlink)) + goto out; + + err = -ENOMEM; + sym.k = __getname_gfp(GFP_NOFS); + if (unlikely(!sym.k)) + goto out; + + /* unnecessary to support mmap_sem since symlink is not mmap-able */ + old_fs = get_fs(); + set_fs(KERNEL_DS); + symlen = h_src->d_inode->i_op->readlink(h_src, sym.u, PATH_MAX); + err = symlen; + set_fs(old_fs); + + if (symlen > 0) { + sym.k[symlen] = 0; + err = vfsub_symlink(h_dir, h_path, sym.k); + } + __putname(sym.k); + +out: + return err; +} + +/* return with the lower dst inode is locked */ +static noinline_for_stack +int cpup_entry(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err; + umode_t mode; + unsigned int mnt_flags; + unsigned char isdir; + const unsigned char do_dt = !!au_ftest_cpup(flags, DTIME); + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *h_inode, *h_dir; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + h_src = au_h_dptr(dentry, bsrc); + h_inode = h_src->d_inode; + AuDebugOn(h_inode != au_h_iptr(dentry->d_inode, bsrc)); + + /* try stopping to be referenced while we are creating */ + h_dst = au_h_dptr(dentry, bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + AuDebugOn(h_parent != h_dst->d_parent); + + sb = dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, bdst); + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + + isdir = 0; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + /* try stopping to update while we are referencing */ + IMustLock(h_inode); + err = vfsub_create(h_dir, &h_path, mode | S_IWUSR); + if (!err) + err = au_do_cpup_regular + (dentry, bdst, bsrc, len, + au_h_iptr(dst_parent->d_inode, bdst), &h_path); + break; + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); + if (!err) { + /* + * strange behaviour from the users view, + * particularry setattr case + */ + if (au_ibstart(dst_parent->d_inode) == bdst) + au_cpup_attr_nlink(dst_parent->d_inode, + /*force*/1); + au_cpup_attr_nlink(dentry->d_inode, /*force*/1); + } + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); + break; + case S_IFCHR: + case S_IFBLK: + AuDebugOn(!capable(CAP_MKNOD)); + /*FALLTHROUGH*/ + case S_IFIFO: + case S_IFSOCK: + err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) + && !isdir + && au_opt_test(mnt_flags, XINO) + && h_inode->i_nlink == 1 + /* todo: unnecessary? */ + /* && dentry->d_inode->i_nlink == 1 */ + && bdst < bsrc + && !au_ftest_cpup(flags, KEEPLINO)) + au_xino_write(sb, bsrc, h_inode->i_ino, /*ino*/0); + /* ignore this error */ + + if (do_dt) + au_dtime_revert(&dt); + return err; +} + +/* + * copyup the @dentry from @bsrc to @bdst. + * the caller must set the both of lower dentries. + * @len is for truncating when it is -1 copyup the entire file. + * in link/rename cases, @dst_parent may be different from the real one. + */ +static int au_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibstart; + unsigned char isdir, plink; + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *dst_inode, *h_dir, *inode; + struct super_block *sb; + + AuDebugOn(bsrc <= bdst); + + sb = dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, bdst); + h_dst = au_h_dptr(dentry, bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + h_src = au_h_dptr(dentry, bsrc); + inode = dentry->d_inode; + + if (!dst_parent) + dst_parent = dget_parent(dentry); + else + dget(dst_parent); + + plink = !!au_opt_test(au_mntflags(sb), PLINK); + dst_inode = au_h_iptr(inode, bdst); + if (dst_inode) { + if (unlikely(!plink)) { + err = -EIO; + AuIOErr("hi%lu(i%lu) exists on b%d " + "but plink is disabled\n", + dst_inode->i_ino, inode->i_ino, bdst); + goto out; + } + + if (dst_inode->i_nlink) { + const int do_dt = au_ftest_cpup(flags, DTIME); + + h_src = au_plink_lkup(inode, bdst); + err = PTR_ERR(h_src); + if (IS_ERR(h_src)) + goto out; + if (unlikely(!h_src->d_inode)) { + err = -EIO; + AuIOErr("i%lu exists on a upper branch " + "but not pseudo-linked\n", + inode->i_ino); + dput(h_src); + goto out; + } + + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + err = vfsub_link(h_src, h_dir, &h_path); + if (do_dt) + au_dtime_revert(&dt); + dput(h_src); + goto out; + } else + /* todo: cpup_wh_file? */ + /* udba work */ + au_update_ibrange(inode, /*do_put_zero*/1); + } + + old_ibstart = au_ibstart(inode); + err = cpup_entry(dentry, bdst, bsrc, len, flags, dst_parent); + if (unlikely(err)) + goto out; + dst_inode = h_dst->d_inode; + mutex_lock_nested(&dst_inode->i_mutex, AuLsc_I_CHILD2); + + err = cpup_iattr(dentry, bdst, h_src); + isdir = S_ISDIR(dst_inode->i_mode); + if (!err) { + if (bdst < old_ibstart) { + if (S_ISREG(inode->i_mode)) { + err = au_dy_iaop(inode, bdst, dst_inode); + if (unlikely(err)) + goto out_rev; + } + au_set_ibstart(inode, bdst); + } + au_set_h_iptr(inode, bdst, au_igrab(dst_inode), + au_hi_flags(inode, isdir)); + mutex_unlock(&dst_inode->i_mutex); + if (!isdir + && h_src->d_inode->i_nlink > 1 + && plink) + au_plink_append(inode, bdst, h_dst); + goto out; /* success */ + } + + /* revert */ +out_rev: + h_path.dentry = h_parent; + mutex_unlock(&dst_inode->i_mutex); + au_dtime_store(&dt, dst_parent, &h_path); + h_path.dentry = h_dst; + if (!isdir) + rerr = vfsub_unlink(h_dir, &h_path, /*force*/0); + else + rerr = vfsub_rmdir(h_dir, &h_path); + au_dtime_revert(&dt); + if (rerr) { + AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); + err = -EIO; + } + +out: + dput(dst_parent); + return err; +} + +struct au_cpup_single_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst, bsrc; + loff_t len; + unsigned int flags; + struct dentry *dst_parent; +}; + +static void au_call_cpup_single(void *args) +{ + struct au_cpup_single_args *a = args; + *a->errp = au_cpup_single(a->dentry, a->bdst, a->bsrc, a->len, + a->flags, a->dst_parent); +} + +/* + * prevent SIGXFSZ in copy-up. + * testing CAP_MKNOD is for generic fs, + * but CAP_FSETID is for xfs only, currently. + */ +static int au_cpup_sio_test(struct super_block *sb, umode_t mode) +{ + int do_sio; + + do_sio = 0; + if (!au_wkq_test() + && (!au_sbi(sb)->si_plink_maint_pid + || au_plink_maint(sb, AuLock_NOPLM))) { + switch (mode & S_IFMT) { + case S_IFREG: + /* no condition about RLIMIT_FSIZE and the file size */ + do_sio = 1; + break; + case S_IFCHR: + case S_IFBLK: + do_sio = !capable(CAP_MKNOD); + break; + } + if (!do_sio) + do_sio = ((mode & (S_ISUID | S_ISGID)) + && !capable(CAP_FSETID)); + } + + return do_sio; +} + +int au_sio_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent) +{ + int err, wkq_err; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bsrc); + if (!au_cpup_sio_test(dentry->d_sb, h_dentry->d_inode->i_mode)) + err = au_cpup_single(dentry, bdst, bsrc, len, flags, + dst_parent); + else { + struct au_cpup_single_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .bsrc = bsrc, + .len = len, + .flags = flags, + .dst_parent = dst_parent + }; + wkq_err = au_wkq_wait(au_call_cpup_single, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* + * copyup the @dentry from the first active lower branch to @bdst, + * using au_cpup_single(). + */ +static int au_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags) +{ + int err; + aufs_bindex_t bsrc, bend; + + bend = au_dbend(dentry); + for (bsrc = bdst + 1; bsrc <= bend; bsrc++) + if (au_h_dptr(dentry, bsrc)) + break; + + err = au_lkup_neg(dentry, bdst); + if (!err) { + err = au_cpup_single(dentry, bdst, bsrc, len, flags, NULL); + if (!err) + return 0; /* success */ + + /* revert */ + au_set_h_dptr(dentry, bdst, NULL); + au_set_dbstart(dentry, bsrc); + } + + return err; +} + +struct au_cpup_simple_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst; + loff_t len; + unsigned int flags; +}; + +static void au_call_cpup_simple(void *args) +{ + struct au_cpup_simple_args *a = args; + *a->errp = au_cpup_simple(a->dentry, a->bdst, a->len, a->flags); +} + +int au_sio_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags) +{ + int err, wkq_err; + struct dentry *parent; + struct inode *h_dir; + + parent = dget_parent(dentry); + h_dir = au_h_iptr(parent->d_inode, bdst); + if (!au_test_h_perm_sio(h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(dentry->d_sb, dentry->d_inode->i_mode)) + err = au_cpup_simple(dentry, bdst, len, flags); + else { + struct au_cpup_simple_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .len = len, + .flags = flags + }; + wkq_err = au_wkq_wait(au_call_cpup_simple, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * copyup the deleted file for writing. + */ +static int au_do_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *wh_dentry, struct file *file, + loff_t len) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_d_dst, *h_d_start; + struct au_hdentry *hdp; + + dinfo = au_di(dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + hdp = dinfo->di_hdentry; + h_d_dst = hdp[0 + bdst].hd_dentry; + dinfo->di_bstart = bdst; + hdp[0 + bdst].hd_dentry = wh_dentry; + if (file) { + h_d_start = hdp[0 + bstart].hd_dentry; + hdp[0 + bstart].hd_dentry = au_hf_top(file)->f_dentry; + } + err = au_cpup_single(dentry, bdst, bstart, len, !AuCpup_DTIME, + /*h_parent*/NULL); + if (file) { + if (!err) + err = au_reopen_nondir(file); + hdp[0 + bstart].hd_dentry = h_d_start; + } + hdp[0 + bdst].hd_dentry = h_d_dst; + dinfo->di_bstart = bstart; + + return err; +} + +static int au_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file) +{ + int err; + struct au_dtime dt; + struct dentry *parent, *h_parent, *wh_dentry; + struct au_branch *br; + struct path h_path; + + br = au_sbr(dentry->d_sb, bdst); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + h_path.dentry = h_parent; + h_path.mnt = br->br_mnt; + au_dtime_store(&dt, parent, &h_path); + err = au_do_cpup_wh(dentry, bdst, wh_dentry, file, len); + if (unlikely(err)) + goto out_wh; + + dget(wh_dentry); + h_path.dentry = wh_dentry; + if (!S_ISDIR(wh_dentry->d_inode->i_mode)) + err = vfsub_unlink(h_parent->d_inode, &h_path, /*force*/0); + else + err = vfsub_rmdir(h_parent->d_inode, &h_path); + if (unlikely(err)) { + AuIOErr("failed remove copied-up tmp file %.*s(%d)\n", + AuDLNPair(wh_dentry), err); + err = -EIO; + } + au_dtime_revert(&dt); + au_set_hi_wh(dentry->d_inode, bdst, wh_dentry); + +out_wh: + dput(wh_dentry); +out: + dput(parent); + return err; +} + +struct au_cpup_wh_args { + int *errp; + struct dentry *dentry; + aufs_bindex_t bdst; + loff_t len; + struct file *file; +}; + +static void au_call_cpup_wh(void *args) +{ + struct au_cpup_wh_args *a = args; + *a->errp = au_cpup_wh(a->dentry, a->bdst, a->len, a->file); +} + +int au_sio_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file) +{ + int err, wkq_err; + struct dentry *parent, *h_orph, *h_parent, *h_dentry; + struct inode *dir, *h_dir, *h_tmpdir, *h_inode; + struct au_wbr *wbr; + + parent = dget_parent(dentry); + dir = parent->d_inode; + h_orph = NULL; + h_parent = NULL; + h_dir = au_igrab(au_h_iptr(dir, bdst)); + h_tmpdir = h_dir; + if (!h_dir->i_nlink) { + wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; + h_orph = wbr->wbr_orph; + + h_parent = dget(au_h_dptr(parent, bdst)); + au_set_h_dptr(parent, bdst, dget(h_orph)); + h_tmpdir = h_orph->d_inode; + au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); + + /* this temporary unlock is safe */ + if (file) + h_dentry = au_hf_top(file)->f_dentry; + else + h_dentry = au_h_dptr(dentry, au_dbstart(dentry)); + h_inode = h_dentry->d_inode; + IMustLock(h_inode); + mutex_unlock(&h_inode->i_mutex); + mutex_lock_nested(&h_tmpdir->i_mutex, AuLsc_I_PARENT3); + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + /* todo: au_h_open_pre()? */ + } + + if (!au_test_h_perm_sio(h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(dentry->d_sb, dentry->d_inode->i_mode)) + err = au_cpup_wh(dentry, bdst, len, file); + else { + struct au_cpup_wh_args args = { + .errp = &err, + .dentry = dentry, + .bdst = bdst, + .len = len, + .file = file + }; + wkq_err = au_wkq_wait(au_call_cpup_wh, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + if (h_orph) { + mutex_unlock(&h_tmpdir->i_mutex); + /* todo: au_h_open_post()? */ + au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); + au_set_h_dptr(parent, bdst, h_parent); + } + iput(h_dir); + dput(parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generic routine for both of copy-up and copy-down. + */ +/* cf. revalidate function in file.c */ +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg), + void *arg) +{ + int err; + struct au_pin pin; + struct dentry *d, *parent, *h_parent, *real_parent; + + err = 0; + parent = dget_parent(dentry); + if (IS_ROOT(parent)) + goto out; + + au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, + au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); + + /* do not use au_dpage */ + real_parent = parent; + while (1) { + dput(parent); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + if (h_parent) + goto out; /* success */ + + /* find top dir which is necessary to cpup */ + do { + d = parent; + dput(parent); + parent = dget_parent(d); + di_read_lock_parent3(parent, !AuLock_IR); + h_parent = au_h_dptr(parent, bdst); + di_read_unlock(parent, !AuLock_IR); + } while (!h_parent); + + if (d != real_parent) + di_write_lock_child3(d); + + /* somebody else might create while we were sleeping */ + if (!au_h_dptr(d, bdst) || !au_h_dptr(d, bdst)->d_inode) { + if (au_h_dptr(d, bdst)) + au_update_dbstart(d); + + au_pin_set_dentry(&pin, d); + err = au_do_pin(&pin); + if (!err) { + err = cp(d, bdst, h_parent, arg); + au_unpin(&pin); + } + } + + if (d != real_parent) + di_write_unlock(d); + if (unlikely(err)) + break; + } + +out: + dput(parent); + return err; +} + +static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent __maybe_unused , + void *arg __maybe_unused) +{ + return au_sio_cpup_simple(dentry, bdst, -1, AuCpup_DTIME); +} + +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); +} + +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = parent->d_inode; + err = 0; + if (au_h_iptr(dir, bdst)) + goto out; + + di_read_unlock(parent, AuLock_IR); + di_write_lock_parent(parent); + /* someone else might change our inode while we were sleeping */ + if (!au_h_iptr(dir, bdst)) + err = au_cpup_dirs(dentry, bdst); + di_downgrade_lock(parent, AuLock_IR); + +out: + dput(parent); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/module.h +++ linux-3.5.0/ubuntu/aufs/module.h @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * module initialization and module-global + */ + +#ifndef __AUFS_MODULE_H__ +#define __AUFS_MODULE_H__ + +#ifdef __KERNEL__ + +#include + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +enum { + AuLcNonDir_FIINFO, + AuLcNonDir_DIINFO, + AuLcNonDir_IIINFO, + + AuLcDir_FIINFO, + AuLcDir_DIINFO, + AuLcDir_IIINFO, + + AuLcSymlink_DIINFO, + AuLcSymlink_IIINFO, + + AuLcKey_Last +}; +extern struct lock_class_key au_lc_key[AuLcKey_Last]; + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp); +int au_seq_path(struct seq_file *seq, struct path *path); + +#ifdef CONFIG_PROC_FS +/* procfs.c */ +int __init au_procfs_init(void); +void au_procfs_fin(void); +#else +AuStubInt0(au_procfs_init, void); +AuStubVoid(au_procfs_fin, void); +#endif + +/* ---------------------------------------------------------------------- */ + +/* kmem cache */ +enum { + AuCache_DINFO, + AuCache_ICNTNR, + AuCache_FINFO, + AuCache_VDIR, + AuCache_DEHSTR, + AuCache_HNOTIFY, /* must be last */ + AuCache_Last +}; + +#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) +#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) +#define AuCacheCtor(type, ctor) \ + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + +extern struct kmem_cache *au_cachep[]; + +#define AuCacheFuncs(name, index) \ +static inline struct au_##name *au_cache_alloc_##name(void) \ +{ return kmem_cache_alloc(au_cachep[AuCache_##index], GFP_NOFS); } \ +static inline void au_cache_free_##name(struct au_##name *p) \ +{ kmem_cache_free(au_cachep[AuCache_##index], p); } + +AuCacheFuncs(dinfo, DINFO); +AuCacheFuncs(icntnr, ICNTNR); +AuCacheFuncs(finfo, FINFO); +AuCacheFuncs(vdir, VDIR); +AuCacheFuncs(vdir_dehstr, DEHSTR); +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/fstype.h +++ linux-3.5.0/ubuntu/aufs/fstype.h @@ -0,0 +1,496 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * judging filesystem type + */ + +#ifndef __AUFS_FSTYPE_H__ +#define __AUFS_FSTYPE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include + +static inline int au_test_aufs(struct super_block *sb) +{ + return sb->s_magic == AUFS_SUPER_MAGIC; +} + +static inline const char *au_sbtype(struct super_block *sb) +{ + return sb->s_type->name; +} + +static inline int au_test_iso9660(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ROMFS_FS) || defined(CONFIG_ROMFS_FS_MODULE) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ISO9660_FS) || defined(CONFIG_ISO9660_FS_MODULE) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CRAMFS) || defined(CONFIG_CRAMFS_MODULE) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NFS_FS) || defined(CONFIG_NFS_FS_MODULE) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FUSE_FS) || defined(CONFIG_FUSE_FS_MODULE) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XFS_FS) || defined(CONFIG_XFS_FS_MODULE) + return sb->s_magic == XFS_SB_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_TMPFS + return sb->s_magic == TMPFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_ECRYPT_FS) || defined(CONFIG_ECRYPT_FS_MODULE) + return !strcmp(au_sbtype(sb), "ecryptfs"); +#else + return 0; +#endif +} + +static inline int au_test_smbfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SMB_FS) || defined(CONFIG_SMB_FS_MODULE) + return sb->s_magic == SMB_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ocfs2(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_OCFS2_FS) || defined(CONFIG_OCFS2_FS_MODULE) + return sb->s_magic == OCFS2_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ocfs2_dlmfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_OCFS2_FS_O2CB) || defined(CONFIG_OCFS2_FS_O2CB_MODULE) + return sb->s_magic == DLMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_coda(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CODA_FS) || defined(CONFIG_CODA_FS_MODULE) + return sb->s_magic == CODA_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_v9fs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_9P_FS) || defined(CONFIG_9P_FS_MODULE) + return sb->s_magic == V9FS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ext4(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_EXT4DEV_FS) || defined(CONFIG_EXT4DEV_FS_MODULE) + return sb->s_magic == EXT4_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysv(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SYSV_FS) || defined(CONFIG_SYSV_FS_MODULE) + return !strcmp(au_sbtype(sb), "sysv"); +#else + return 0; +#endif +} + +static inline int au_test_ramfs(struct super_block *sb) +{ + return sb->s_magic == RAMFS_MAGIC; +} + +static inline int au_test_ubifs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_UBIFS_FS) || defined(CONFIG_UBIFS_FS_MODULE) + return sb->s_magic == UBIFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_procfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_PROC_FS + return sb->s_magic == PROC_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SYSFS + return sb->s_magic == SYSFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_configfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CONFIGFS_FS) || defined(CONFIG_CONFIGFS_FS_MODULE) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_MINIX_FS) || defined(CONFIG_MINIX_FS_MODULE) + return sb->s_magic == MINIX3_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC2 + || sb->s_magic == MINIX_SUPER_MAGIC + || sb->s_magic == MINIX_SUPER_MAGIC2; +#else + return 0; +#endif +} + +static inline int au_test_cifs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_CIFS_FS) || defined(CONFIGCIFS_FS_MODULE) + return sb->s_magic == CIFS_MAGIC_NUMBER; +#else + return 0; +#endif +} + +static inline int au_test_fat(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_FAT_FS) || defined(CONFIG_FAT_FS_MODULE) + return sb->s_magic == MSDOS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_msdos(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_vfat(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_securityfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SECURITYFS + return sb->s_magic == SECURITYFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_squashfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_SQUASHFS) || defined(CONFIG_SQUASHFS_MODULE) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_BTRFS_FS) || defined(CONFIG_BTRFS_FS_MODULE) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_XENFS) || defined(CONFIG_XENFS_MODULE) + return sb->s_magic == XENFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_debugfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_DEBUG_FS + return sb->s_magic == DEBUGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_nilfs(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_NILFS) || defined(CONFIG_NILFS_MODULE) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if defined(CONFIG_HFSPLUS_FS) || defined(CONFIG_HFSPLUS_FS_MODULE) + return sb->s_magic == HFSPLUS_SUPER_MAGIC; +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ +/* + * they can't be an aufs branch. + */ +static inline int au_test_fs_unsuppoted(struct super_block *sb) +{ + return +#ifndef CONFIG_AUFS_BR_RAMFS + au_test_ramfs(sb) || +#endif + au_test_procfs(sb) + || au_test_sysfs(sb) + || au_test_configfs(sb) + || au_test_debugfs(sb) + || au_test_securityfs(sb) + || au_test_xenfs(sb) + || au_test_ecryptfs(sb) + /* || !strcmp(au_sbtype(sb), "unionfs") */ + || au_test_aufs(sb); /* will be supported in next version */ +} + +/* + * If the filesystem supports NFS-export, then it has to support NULL as + * a nameidata parameter for ->create(), ->lookup() and ->d_revalidate(). + * We can apply this principle when we handle a lower filesystem. + */ +static inline int au_test_fs_null_nd(struct super_block *sb) +{ + return !!sb->s_export_op; +} + +static inline int au_test_fs_remote(struct super_block *sb) +{ + return !au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + && !au_test_ramfs(sb) +#endif + && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); +} + +/* ---------------------------------------------------------------------- */ + +/* + * Note: these functions (below) are created after reading ->getattr() in all + * filesystems under linux/fs. it means we have to do so in every update... + */ + +/* + * some filesystems require getattr to refresh the inode attributes before + * referencing. + * in most cases, we can rely on the inode attribute in NFS (or every remote fs) + * and leave the work for d_revalidate() + */ +static inline int au_test_fs_refresh_iattr(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + /* || au_test_smbfs(sb) */ /* untested */ + /* || au_test_ocfs2(sb) */ /* untested */ + /* || au_test_btrfs(sb) */ /* untested */ + /* || au_test_coda(sb) */ /* untested */ + /* || au_test_v9fs(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't maintain i_size or i_blocks. + */ +static inline int au_test_fs_bad_iattr_size(struct super_block *sb) +{ + return au_test_xfs(sb) + || au_test_btrfs(sb) + || au_test_ubifs(sb) + || au_test_hfsplus(sb) /* maintained, but incorrect */ + /* || au_test_ext4(sb) */ /* untested */ + /* || au_test_ocfs2(sb) */ /* untested */ + /* || au_test_ocfs2_dlmfs(sb) */ /* untested */ + /* || au_test_sysv(sb) */ /* untested */ + /* || au_test_minix(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't store the correct value in some of their inode + * attributes. + */ +static inline int au_test_fs_bad_iattr(struct super_block *sb) +{ + return au_test_fs_bad_iattr_size(sb) + /* || au_test_cifs(sb) */ /* untested */ + || au_test_fat(sb) + || au_test_msdos(sb) + || au_test_vfat(sb); +} + +/* they don't check i_nlink in link(2) */ +static inline int au_test_fs_no_limit_nlink(struct super_block *sb) +{ + return au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || au_test_ramfs(sb) +#endif + || au_test_ubifs(sb) + || au_test_btrfs(sb) + || au_test_hfsplus(sb); +} + +/* + * filesystems which sets S_NOATIME and S_NOCMTIME. + */ +static inline int au_test_fs_notime(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + || au_test_ubifs(sb) + /* || au_test_cifs(sb) */ /* untested */ + ; +} + +/* + * filesystems which requires replacing i_mapping. + */ +static inline int au_test_fs_bad_mapping(struct super_block *sb) +{ + return au_test_fuse(sb) + || au_test_ubifs(sb); +} + +/* temporary support for i#1 in cramfs */ +static inline int au_test_fs_unique_ino(struct inode *inode) +{ + if (au_test_cramfs(inode->i_sb)) + return inode->i_ino != 1; + return 1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * the filesystem where the xino files placed must support i/o after unlink and + * maintain i_size and i_blocks. + */ +static inline int au_test_fs_bad_xino(struct super_block *sb) +{ + return au_test_fs_remote(sb) + || au_test_fs_bad_iattr_size(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || !(au_test_ramfs(sb) || au_test_fs_null_nd(sb)) +#else + || !au_test_fs_null_nd(sb) /* to keep xino code simple */ +#endif + /* don't want unnecessary work for xino */ + || au_test_aufs(sb) + || au_test_ecryptfs(sb) + || au_test_nilfs(sb); +} + +static inline int au_test_fs_trunc_xino(struct super_block *sb) +{ + return au_test_tmpfs(sb) + || au_test_ramfs(sb); +} + +/* + * test if the @sb is real-readonly. + */ +static inline int au_test_fs_rr(struct super_block *sb) +{ + return au_test_squashfs(sb) + || au_test_iso9660(sb) + || au_test_cramfs(sb) + || au_test_romfs(sb); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/plink.c +++ linux-3.5.0/ubuntu/aufs/plink.c @@ -0,0 +1,511 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * pseudo-link + */ + +#include "aufs.h" + +/* + * the pseudo-link maintenance mode. + * during a user process maintains the pseudo-links, + * prohibit adding a new plink and branch manipulation. + * + * Flags + * NOPLM: + * For entry functions which will handle plink, and i_mutex is already held + * in VFS. + * They cannot wait and should return an error at once. + * Callers has to check the error. + * NOPLMW: + * For entry functions which will handle plink, but i_mutex is not held + * in VFS. + * They can wait the plink maintenance mode to finish. + * + * They behave like F_SETLK and F_SETLKW. + * If the caller never handle plink, then both flags are unnecessary. + */ + +int au_plink_maint(struct super_block *sb, int flags) +{ + int err; + pid_t pid, ppid; + struct au_sbinfo *sbi; + + SiMustAnyLock(sb); + + err = 0; + if (!au_opt_test(au_mntflags(sb), PLINK)) + goto out; + + sbi = au_sbi(sb); + pid = sbi->si_plink_maint_pid; + if (!pid || pid == current->pid) + goto out; + + /* todo: it highly depends upon /sbin/mount.aufs */ + rcu_read_lock(); + ppid = task_pid_vnr(rcu_dereference(current->real_parent)); + rcu_read_unlock(); + if (pid == ppid) + goto out; + + if (au_ftest_lock(flags, NOPLMW)) { + /* if there is no i_mutex lock in VFS, we don't need to wait */ + /* AuDebugOn(!lockdep_depth(current)); */ + while (sbi->si_plink_maint_pid) { + si_read_unlock(sb); + /* gave up wake_up_bit() */ + wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&sbi->si_nowait); + si_noflush_read_lock(sb); + } + } else if (au_ftest_lock(flags, NOPLM)) { + AuDbg("ppid %d, pid %d\n", ppid, pid); + err = -EAGAIN; + } + +out: + return err; +} + +void au_plink_maint_leave(struct au_sbinfo *sbinfo) +{ + spin_lock(&sbinfo->si_plink_maint_lock); + sbinfo->si_plink_maint_pid = 0; + spin_unlock(&sbinfo->si_plink_maint_lock); + wake_up_all(&sbinfo->si_plink_wq); +} + +int au_plink_maint_enter(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + err = 0; + sbinfo = au_sbi(sb); + /* make sure i am the only one in this fs */ + si_write_lock(sb, AuLock_FLUSH); + if (au_opt_test(au_mntflags(sb), PLINK)) { + spin_lock(&sbinfo->si_plink_maint_lock); + if (!sbinfo->si_plink_maint_pid) + sbinfo->si_plink_maint_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&sbinfo->si_plink_maint_lock); + } + si_write_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct pseudo_link { + union { + struct list_head list; + struct rcu_head rcu; + }; + struct inode *inode; +}; + +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) + AuDbg("%lu\n", plink->inode->i_ino); + rcu_read_unlock(); +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found; + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink; + + sbinfo = au_sbi(inode->i_sb); + AuRwMustAnyLock(&sbinfo->si_rwsem); + AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + found = 0; + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) + if (plink->inode == inode) { + found = 1; + break; + } + rcu_read_unlock(); + return found; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generate a name for plink. + * the file will be stored under AUFS_WH_PLINKDIR. + */ +/* 20 is max digits length of ulong 64 */ +#define PLINK_NAME_LEN ((20 + 1) * 2) + +static int plink_name(char *name, int len, struct inode *inode, + aufs_bindex_t bindex) +{ + int rlen; + struct inode *h_inode; + + h_inode = au_h_iptr(inode, bindex); + rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); + return rlen; +} + +struct au_do_plink_lkup_args { + struct dentry **errp; + struct qstr *tgtname; + struct dentry *h_parent; + struct au_branch *br; +}; + +static struct dentry *au_do_plink_lkup(struct qstr *tgtname, + struct dentry *h_parent, + struct au_branch *br) +{ + struct dentry *h_dentry; + struct mutex *h_mtx; + + h_mtx = &h_parent->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD2); + h_dentry = au_lkup_one(tgtname, h_parent, br, /*nd*/NULL); + mutex_unlock(h_mtx); + return h_dentry; +} + +static void au_call_do_plink_lkup(void *args) +{ + struct au_do_plink_lkup_args *a = args; + *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br); +} + +/* lookup the plink-ed @inode under the branch at @bindex */ +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) +{ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct inode *h_dir; + int wkq_err; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + br = au_sbr(inode->i_sb, bindex); + h_parent = br->br_wbr->wbr_plink; + h_dir = h_parent->d_inode; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct au_do_plink_lkup_args args = { + .errp = &h_dentry, + .tgtname = &tgtname, + .h_parent = h_parent, + .br = br + }; + + wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); + if (unlikely(wkq_err)) + h_dentry = ERR_PTR(wkq_err); + } else + h_dentry = au_do_plink_lkup(&tgtname, h_parent, br); + + return h_dentry; +} + +/* create a pseudo-link */ +static int do_whplink(struct qstr *tgt, struct dentry *h_parent, + struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_CHILD2); +again: + h_path.dentry = au_lkup_one(tgt, h_parent, br, /*nd*/NULL); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + /* wh.plink dir is not monitored */ + /* todo: is it really safe? */ + if (h_path.dentry->d_inode + && h_path.dentry->d_inode != h_dentry->d_inode) { + err = vfsub_unlink(h_dir, &h_path, /*force*/0); + dput(h_path.dentry); + h_path.dentry = NULL; + if (!err) + goto again; + } + if (!err && !h_path.dentry->d_inode) + err = vfsub_link(h_dentry, h_dir, &h_path); + dput(h_path.dentry); + +out: + mutex_unlock(&h_dir->i_mutex); + return err; +} + +struct do_whplink_args { + int *errp; + struct qstr *tgt; + struct dentry *h_parent; + struct dentry *h_dentry; + struct au_branch *br; +}; + +static void call_do_whplink(void *args) +{ + struct do_whplink_args *a = args; + *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br); +} + +static int whplink(struct dentry *h_dentry, struct inode *inode, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err, wkq_err; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + wbr = au_sbr(inode->i_sb, bindex)->br_wbr; + h_parent = wbr->wbr_plink; + h_dir = h_parent->d_inode; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + /* always superio. */ + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct do_whplink_args args = { + .errp = &err, + .tgt = &tgtname, + .h_parent = h_parent, + .h_dentry = h_dentry, + .br = br + }; + wkq_err = au_wkq_wait(call_do_whplink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } else + err = do_whplink(&tgtname, h_parent, h_dentry, br); + + return err; +} + +/* free a single plink */ +static void do_put_plink(struct pseudo_link *plink, int do_del) +{ + if (do_del) + list_del(&plink->list); + iput(plink->inode); + kfree(plink); +} + +static void do_put_plink_rcu(struct rcu_head *rcu) +{ + struct pseudo_link *plink; + + plink = container_of(rcu, struct pseudo_link, rcu); + iput(plink->inode); + kfree(plink); +} + +/* + * create a new pseudo-link for @h_dentry on @bindex. + * the linked inode is held in aufs @inode. + */ +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + int found, err, cnt; + + sb = inode->i_sb; + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + cnt = 0; + found = 0; + plink_list = &sbinfo->si_plink.head; + rcu_read_lock(); + list_for_each_entry_rcu(plink, plink_list, list) { + cnt++; + if (plink->inode == inode) { + found = 1; + break; + } + } + rcu_read_unlock(); + if (found) + return; + + tmp = kmalloc(sizeof(*plink), GFP_NOFS); + if (tmp) + tmp->inode = au_igrab(inode); + else { + err = -ENOMEM; + goto out; + } + + spin_lock(&sbinfo->si_plink.spin); + list_for_each_entry(plink, plink_list, list) { + if (plink->inode == inode) { + found = 1; + break; + } + } + if (!found) + list_add_rcu(&tmp->list, plink_list); + spin_unlock(&sbinfo->si_plink.spin); + if (!found) { + cnt++; + WARN_ONCE(cnt > AUFS_PLINK_WARN, + "unexpectedly many pseudo links, %d\n", cnt); + err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex)); + } else { + do_put_plink(tmp, 0); + return; + } + +out: + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + if (tmp) { + au_spl_del_rcu(&tmp->list, &sbinfo->si_plink); + call_rcu(&tmp->rcu, do_put_plink_rcu); + } + } +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + /* no spin_lock since sbinfo is write-locked */ + WARN(verbose && !list_empty(plink_list), "pseudo-link is not flushed"); + list_for_each_entry_safe(plink, tmp, plink_list, list) + do_put_plink(plink, 0); + INIT_LIST_HEAD(plink_list); +} + +void au_plink_clean(struct super_block *sb, int verbose) +{ + struct dentry *root; + + root = sb->s_root; + aufs_write_lock(root); + if (au_opt_test(au_mntflags(sb), PLINK)) + au_plink_put(sb, verbose); + aufs_write_unlock(root); +} + +/* free the plinks on a branch specified by @br_id */ +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) +{ + struct au_sbinfo *sbinfo; + struct list_head *plink_list; + struct pseudo_link *plink, *tmp; + struct inode *inode; + aufs_bindex_t bstart, bend, bindex; + unsigned char do_put; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + plink_list = &sbinfo->si_plink.head; + /* no spin_lock since sbinfo is write-locked */ + list_for_each_entry_safe(plink, tmp, plink_list, list) { + do_put = 0; + inode = au_igrab(plink->inode); + ii_write_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart >= 0) { + for (bindex = bstart; bindex <= bend; bindex++) { + if (!au_h_iptr(inode, bindex) + || au_ii_br_id(inode, bindex) != br_id) + continue; + au_set_h_iptr(inode, bindex, NULL, 0); + do_put = 1; + break; + } + } else + do_put_plink(plink, 1); + + if (do_put) { + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex)) { + do_put = 0; + break; + } + if (do_put) + do_put_plink(plink, 1); + } + ii_write_unlock(inode); + iput(inode); + } +} --- linux-3.5.0.orig/ubuntu/aufs/rwsem.h +++ linux-3.5.0/ubuntu/aufs/rwsem.h @@ -0,0 +1,188 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * simple read-write semaphore wrappers + */ + +#ifndef __AUFS_RWSEM_H__ +#define __AUFS_RWSEM_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +struct au_rwsem { + struct rw_semaphore rwsem; +#ifdef CONFIG_AUFS_DEBUG + /* just for debugging, not almighty counter */ + atomic_t rcnt, wcnt; +#endif +}; + +#ifdef CONFIG_AUFS_DEBUG +#define AuDbgCntInit(rw) do { \ + atomic_set(&(rw)->rcnt, 0); \ + atomic_set(&(rw)->wcnt, 0); \ + smp_mb(); /* atomic set */ \ +} while (0) + +#define AuDbgRcntInc(rw) atomic_inc(&(rw)->rcnt) +#define AuDbgRcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->rcnt) < 0) +#define AuDbgWcntInc(rw) atomic_inc(&(rw)->wcnt) +#define AuDbgWcntDec(rw) WARN_ON(atomic_dec_return(&(rw)->wcnt) < 0) +#else +#define AuDbgCntInit(rw) do {} while (0) +#define AuDbgRcntInc(rw) do {} while (0) +#define AuDbgRcntDec(rw) do {} while (0) +#define AuDbgWcntInc(rw) do {} while (0) +#define AuDbgWcntDec(rw) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(!list_empty(&(rw)->rwsem.wait_list)) +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0) +#define AuRwMustWriteLock(rw) AuDebugOn(atomic_read(&(rw)->wcnt) <= 0) +#define AuRwMustAnyLock(rw) AuDebugOn(atomic_read(&(rw)->rcnt) <= 0 \ + && atomic_read(&(rw)->wcnt) <= 0) +#define AuRwDestroy(rw) AuDebugOn(atomic_read(&(rw)->rcnt) \ + || atomic_read(&(rw)->wcnt)) + +#define au_rw_class(rw, key) lockdep_set_class(&(rw)->rwsem, key) + +static inline void au_rw_init(struct au_rwsem *rw) +{ + AuDbgCntInit(rw); + init_rwsem(&rw->rwsem); +} + +static inline void au_rw_init_wlock(struct au_rwsem *rw) +{ + au_rw_init(rw); + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_init_wlock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + au_rw_init(rw); + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_read_lock(struct au_rwsem *rw) +{ + down_read(&rw->rwsem); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_lock_nested(struct au_rwsem *rw, unsigned int lsc) +{ + down_read_nested(&rw->rwsem, lsc); + AuDbgRcntInc(rw); +} + +static inline void au_rw_read_unlock(struct au_rwsem *rw) +{ + AuRwMustReadLock(rw); + AuDbgRcntDec(rw); + up_read(&rw->rwsem); +} + +static inline void au_rw_dgrade_lock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgRcntInc(rw); + AuDbgWcntDec(rw); + downgrade_write(&rw->rwsem); +} + +static inline void au_rw_write_lock(struct au_rwsem *rw) +{ + down_write(&rw->rwsem); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_lock_nested(struct au_rwsem *rw, + unsigned int lsc) +{ + down_write_nested(&rw->rwsem, lsc); + AuDbgWcntInc(rw); +} + +static inline void au_rw_write_unlock(struct au_rwsem *rw) +{ + AuRwMustWriteLock(rw); + AuDbgWcntDec(rw); + up_write(&rw->rwsem); +} + +/* why is not _nested version defined */ +static inline int au_rw_read_trylock(struct au_rwsem *rw) +{ + int ret = down_read_trylock(&rw->rwsem); + if (ret) + AuDbgRcntInc(rw); + return ret; +} + +static inline int au_rw_write_trylock(struct au_rwsem *rw) +{ + int ret = down_write_trylock(&rw->rwsem); + if (ret) + AuDbgWcntInc(rw); + return ret; +} + +#undef AuDbgCntInit +#undef AuDbgRcntInc +#undef AuDbgRcntDec +#undef AuDbgWcntInc +#undef AuDbgWcntDec + +#define AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_lock(param) \ +{ au_rw_read_lock(rwsem); } \ +static inline void prefix##_write_lock(param) \ +{ au_rw_write_lock(rwsem); } \ +static inline int prefix##_read_trylock(param) \ +{ return au_rw_read_trylock(rwsem); } \ +static inline int prefix##_write_trylock(param) \ +{ return au_rw_write_trylock(rwsem); } +/* why is not _nested version defined */ +/* static inline void prefix##_read_trylock_nested(param, lsc) +{ au_rw_read_trylock_nested(rwsem, lsc)); } +static inline void prefix##_write_trylock_nestd(param, lsc) +{ au_rw_write_trylock_nested(rwsem, lsc); } */ + +#define AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) \ +static inline void prefix##_read_unlock(param) \ +{ au_rw_read_unlock(rwsem); } \ +static inline void prefix##_write_unlock(param) \ +{ au_rw_write_unlock(rwsem); } \ +static inline void prefix##_downgrade_lock(param) \ +{ au_rw_dgrade_lock(rwsem); } + +#define AuSimpleRwsemFuncs(prefix, param, rwsem) \ + AuSimpleLockRwsemFuncs(prefix, param, rwsem) \ + AuSimpleUnlockRwsemFuncs(prefix, param, rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/rdu.c +++ linux-3.5.0/ubuntu/aufs/rdu.c @@ -0,0 +1,384 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * readdir in userspace. + */ + +#include +#include +#include +#include "aufs.h" + +/* bits for struct aufs_rdu.flags */ +#define AuRdu_CALLED 1 +#define AuRdu_CONT (1 << 1) +#define AuRdu_FULL (1 << 2) +#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) +#define au_fset_rdu(flags, name) \ + do { (flags) |= AuRdu_##name; } while (0) +#define au_fclr_rdu(flags, name) \ + do { (flags) &= ~AuRdu_##name; } while (0) + +struct au_rdu_arg { + struct aufs_rdu *rdu; + union au_rdu_ent_ul ent; + unsigned long end; + + struct super_block *sb; + int err; +}; + +static int au_rdu_fill(void *__arg, const char *name, int nlen, + loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = __arg; + struct aufs_rdu *rdu = arg->rdu; + struct au_rdu_ent ent; + + err = 0; + arg->err = 0; + au_fset_rdu(rdu->cookie.flags, CALLED); + len = au_rdu_len(nlen); + if (arg->ent.ul + len < arg->end) { + ent.ino = h_ino; + ent.bindex = rdu->cookie.bindex; + ent.type = d_type; + ent.nlen = nlen; + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + ent.type = DT_UNKNOWN; + + /* unnecessary to support mmap_sem since this is a dir */ + err = -EFAULT; + if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) + goto out; + if (copy_to_user(arg->ent.e->name, name, nlen)) + goto out; + /* the terminating NULL */ + if (__put_user(0, arg->ent.e->name + nlen)) + goto out; + err = 0; + /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ + arg->ent.ul += len; + rdu->rent++; + } else { + err = -EFAULT; + au_fset_rdu(rdu->cookie.flags, FULL); + rdu->full = 1; + rdu->tail = arg->ent; + } + +out: + /* AuTraceErr(err); */ + return err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) +{ + int err; + loff_t offset; + struct au_rdu_cookie *cookie = &arg->rdu->cookie; + + /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ + offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); + err = offset; + if (unlikely(offset != cookie->h_pos)) + goto out; + + err = 0; + do { + arg->err = 0; + au_fclr_rdu(cookie->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(h_file, au_rdu_fill, arg); + if (err >= 0) + err = arg->err; + } while (!err + && au_ftest_rdu(cookie->flags, CALLED) + && !au_ftest_rdu(cookie->flags, FULL)); + cookie->h_pos = h_file->f_pos; + +out: + AuTraceErr(err); + return err; +} + +static int au_rdu(struct file *file, struct aufs_rdu *rdu) +{ + int err; + aufs_bindex_t bend; + struct au_rdu_arg arg; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct au_rdu_cookie *cookie = &rdu->cookie; + + err = !access_ok(VERIFY_WRITE, rdu->ent.e, rdu->sz); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu->rent = 0; + rdu->tail = rdu->ent; + rdu->full = 0; + arg.rdu = rdu; + arg.ent = rdu->ent; + arg.end = arg.ent.ul; + arg.end += rdu->sz; + + err = -ENOTDIR; + if (unlikely(!file->f_op || !file->f_op->readdir)) + goto out; + + err = security_file_permission(file, MAY_READ); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + dentry = file->f_dentry; + inode = dentry->d_inode; +#if 1 + mutex_lock(&inode->i_mutex); +#else + err = mutex_lock_killable(&inode->i_mutex); + AuTraceErr(err); + if (unlikely(err)) + goto out; +#endif + + arg.sb = inode->i_sb; + err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_si; + /* todo: reval? */ + fi_read_lock(file); + + err = -EAGAIN; + if (unlikely(au_ftest_rdu(cookie->flags, CONT) + && cookie->generation != au_figen(file))) + goto out_unlock; + + err = 0; + if (!rdu->blk) { + rdu->blk = au_sbi(arg.sb)->si_rdblk; + if (!rdu->blk) + rdu->blk = au_dir_size(file, /*dentry*/NULL); + } + bend = au_fbstart(file); + if (cookie->bindex < bend) + cookie->bindex = bend; + bend = au_fbend_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bend); */ + for (; !err && cookie->bindex <= bend; + cookie->bindex++, cookie->h_pos = 0) { + h_file = au_hf_dir(file, cookie->bindex); + if (!h_file) + continue; + + au_fclr_rdu(cookie->flags, FULL); + err = au_rdu_do(h_file, &arg); + AuTraceErr(err); + if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) + break; + } + AuDbg("rent %llu\n", rdu->rent); + + if (!err && !au_ftest_rdu(cookie->flags, CONT)) { + rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); + au_fset_rdu(cookie->flags, CONT); + cookie->generation = au_figen(file); + } + + ii_read_lock_child(inode); + fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibstart(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + mutex_unlock(&inode->i_mutex); +out: + AuTraceErr(err); + return err; +} + +static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) +{ + int err; + ino_t ino; + unsigned long long nent; + union au_rdu_ent_ul *u; + struct au_rdu_ent ent; + struct super_block *sb; + + err = 0; + nent = rdu->nent; + u = &rdu->ent; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + while (nent-- > 0) { + /* unnecessary to support mmap_sem since this is a dir */ + err = copy_from_user(&ent, u->e, sizeof(ent)); + if (!err) + err = !access_ok(VERIFY_WRITE, &u->e->ino, sizeof(ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + + /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ + if (!ent.wh) + err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); + else + err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, + &ino); + if (unlikely(err)) { + AuTraceErr(err); + break; + } + + err = __put_user(ino, &u->e->ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + u->ul += au_rdu_len(ent.nlen); + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_rdu_verify(struct aufs_rdu *rdu) +{ + AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " + "%llu, b%d, 0x%x, g%u}\n", + rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], + rdu->blk, + rdu->rent, rdu->shwh, rdu->full, + rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, + rdu->cookie.generation); + + if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) + return 0; + + AuDbg("%u:%u\n", + rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); + return -EINVAL; +} + +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = (void __user *)arg; + + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = compat_ptr(arg); + + /* todo: get_user()? */ + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu.ent.e = compat_ptr(rdu.ent.ul); + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + rdu.ent.ul = ptr_to_compat(rdu.ent.e); + rdu.tail.ul = ptr_to_compat(rdu.tail.e); + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} +#endif --- linux-3.5.0.orig/ubuntu/aufs/whout.c +++ linux-3.5.0/ubuntu/aufs/whout.c @@ -0,0 +1,1041 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#include "aufs.h" + +#define WH_MASK S_IRUGO + +/* + * If a directory contains this file, then it is opaque. We start with the + * .wh. flag so that it is blocked by lookup. + */ +static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, + sizeof(AUFS_WH_DIROPQ) - 1); + +/* + * generate whiteout name, which is NOT terminated by NULL. + * @name: original d_name.name + * @len: original d_name.len + * @wh: whiteout qstr + * returns zero when succeeds, otherwise error. + * succeeded value as wh->name should be freed by kfree(). + */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) +{ + char *p; + + if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) + return -ENAMETOOLONG; + + wh->len = name->len + AUFS_WH_PFX_LEN; + p = kmalloc(wh->len, GFP_NOFS); + wh->name = p; + if (p) { + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); + /* smp_mb(); */ + return 0; + } + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if the @wh_name exists under @h_parent. + * @try_sio specifies the necessary of super-io. + */ +int au_wh_test(struct dentry *h_parent, struct qstr *wh_name, + struct au_branch *br, int try_sio) +{ + int err; + struct dentry *wh_dentry; + + if (!try_sio) + wh_dentry = au_lkup_one(wh_name, h_parent, br, /*nd*/NULL); + else + wh_dentry = au_sio_lkup_one(wh_name, h_parent, br); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + err = 0; + if (!wh_dentry->d_inode) + goto out_wh; /* success */ + + err = 1; + if (S_ISREG(wh_dentry->d_inode->i_mode)) + goto out_wh; /* success */ + + err = -EIO; + AuIOErr("%.*s Invalid whiteout entry type 0%o.\n", + AuDLNPair(wh_dentry), wh_dentry->d_inode->i_mode); + +out_wh: + dput(wh_dentry); +out: + return err; +} + +/* + * test if the @h_dentry sets opaque or not. + */ +int au_diropq_test(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct inode *h_dir; + + h_dir = h_dentry->d_inode; + err = au_wh_test(h_dentry, &diropq_name, br, + au_test_h_perm_sio(h_dir, MAY_EXEC)); + return err; +} + +/* + * returns a negative dentry whose name is unique and temporary. + */ +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix) +{ + struct dentry *dentry; + int i; + char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], + *name, *p; + /* strict atomic_t is unnecessary here */ + static unsigned short cnt; + struct qstr qs; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + + name = defname; + qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; + if (unlikely(prefix->len > DNAME_INLINE_LEN)) { + dentry = ERR_PTR(-ENAMETOOLONG); + if (unlikely(qs.len > NAME_MAX)) + goto out; + dentry = ERR_PTR(-ENOMEM); + name = kmalloc(qs.len + 1, GFP_NOFS); + if (unlikely(!name)) + goto out; + } + + /* doubly whiteout-ed */ + memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); + p = name + AUFS_WH_PFX_LEN * 2; + memcpy(p, prefix->name, prefix->len); + p += prefix->len; + *p++ = '.'; + AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); + + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); + dentry = au_sio_lkup_one(&qs, h_parent, br); + if (IS_ERR(dentry) || !dentry->d_inode) + goto out_name; + dput(dentry); + } + /* pr_warn("could not get random name\n"); */ + dentry = ERR_PTR(-EEXIST); + AuDbg("%.*s\n", AuLNPair(&qs)); + BUG(); + +out_name: + if (name != defname) + kfree(name); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* + * rename the @h_dentry on @br to the whiteouted temporary name. + */ +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + struct dentry *h_parent; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + /* under the same dir, no need to lock_rename() */ + err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path); + AuTraceErr(err); + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * functions for removing a whiteout + */ + +static int do_unlink_wh(struct inode *h_dir, struct path *h_path) +{ + int force; + + /* + * forces superio when the dir has a sticky bit. + * this may be a violation of unix fs semantics. + */ + force = (h_dir->i_mode & S_ISVTX) + && !uid_eq(current_fsuid(), h_path->dentry->d_inode->i_uid); + return vfsub_unlink(h_dir, h_path, force); +} + +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry) +{ + int err; + + err = do_unlink_wh(h_dir, h_path); + if (!err && dentry) + au_set_dbwh(dentry, -1); + + return err; +} + +static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh, + struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = br->br_mnt + }; + + err = 0; + h_path.dentry = au_lkup_one(wh, h_parent, br, /*nd*/NULL); + if (IS_ERR(h_path.dentry)) + err = PTR_ERR(h_path.dentry); + else { + if (h_path.dentry->d_inode + && S_ISREG(h_path.dentry->d_inode->i_mode)) + err = do_unlink_wh(h_parent->d_inode, &h_path); + dput(h_path.dentry); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * initialize/clean whiteout for a branch + */ + +static void au_wh_clean(struct inode *h_dir, struct path *whpath, + const int isdir) +{ + int err; + + if (!whpath->dentry->d_inode) + return; + + err = mnt_want_write(whpath->mnt); + if (!err) { + if (isdir) + err = vfsub_rmdir(h_dir, whpath); + else + err = vfsub_unlink(h_dir, whpath, /*force*/0); + mnt_drop_write(whpath->mnt); + } + if (unlikely(err)) + pr_warn("failed removing %.*s (%d), ignored.\n", + AuDLNPair(whpath->dentry), err); +} + +static int test_linkable(struct dentry *h_root) +{ + struct inode *h_dir = h_root->d_inode; + + if (h_dir->i_op->link) + return 0; + + pr_err("%.*s (%s) doesn't support link(2), use noplink and rw+nolwh\n", + AuDLNPair(h_root), au_sbtype(h_root->d_sb)); + return -ENOSYS; +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ +static int au_whdir(struct inode *h_dir, struct path *path) +{ + int err; + + err = -EEXIST; + if (!path->dentry->d_inode) { + int mode = S_IRWXU; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= S_IXUGO; + err = mnt_want_write(path->mnt); + if (!err) { + err = vfsub_mkdir(h_dir, path, mode); + mnt_drop_write(path->mnt); + } + } else if (S_ISDIR(path->dentry->d_inode->i_mode)) + err = 0; + else + pr_err("unknown %.*s exists\n", AuDLNPair(path->dentry)); + + return err; +} + +struct au_wh_base { + const struct qstr *name; + struct dentry *dentry; +}; + +static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], + struct path *h_path) +{ + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); +} + +/* + * returns tri-state, + * minus: error, caller should print the mesage + * zero: succuess + * plus: error, caller should NOT print the mesage + */ +static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = h_root->d_inode; + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * for the moment, aufs supports the branch filesystem which does not support + * link(2). testing on FAT which does not support i_op->setattr() fully either, + * copyup failed. finally, such filesystem will not be used as the writable + * branch. + * + * returns tri-state, see above. + */ +static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + WbrWhMustWriteLock(wbr); + + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + /* + * todo: should this create be done in /sbin/mount.aufs helper? + */ + err = -EEXIST; + h_dir = h_root->d_inode; + if (!base[AuBrWh_BASE].dentry->d_inode) { + err = mnt_want_write(h_path->mnt); + if (!err) { + h_path->dentry = base[AuBrWh_BASE].dentry; + err = vfsub_create(h_dir, h_path, WH_MASK); + mnt_drop_write(h_path->mnt); + } + } else if (S_ISREG(base[AuBrWh_BASE].dentry->d_inode->i_mode)) + err = 0; + else + pr_err("unknown %.*s/%.*s exists\n", + AuDLNPair(h_root), AuDLNPair(base[AuBrWh_BASE].dentry)); + if (unlikely(err)) + goto out; + + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); + + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * initialize the whiteout base file/dir for @br. + */ +int au_wh_init(struct dentry *h_root, struct au_branch *br, + struct super_block *sb) +{ + int err, i; + const unsigned char do_plink + = !!au_opt_test(au_mntflags(sb), PLINK); + struct path path = { + .mnt = br->br_mnt + }; + struct inode *h_dir; + struct au_wbr *wbr = br->br_wbr; + static const struct qstr base_name[] = { + [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, + sizeof(AUFS_BASE_NAME) - 1), + [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, + sizeof(AUFS_PLINKDIR_NAME) - 1), + [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, + sizeof(AUFS_ORPHDIR_NAME) - 1) + }; + struct au_wh_base base[] = { + [AuBrWh_BASE] = { + .name = base_name + AuBrWh_BASE, + .dentry = NULL + }, + [AuBrWh_PLINK] = { + .name = base_name + AuBrWh_PLINK, + .dentry = NULL + }, + [AuBrWh_ORPH] = { + .name = base_name + AuBrWh_ORPH, + .dentry = NULL + } + }; + + if (wbr) + WbrWhMustWriteLock(wbr); + + for (i = 0; i < AuBrWh_Last; i++) { + /* doubly whiteouted */ + struct dentry *d; + + d = au_wh_lkup(h_root, (void *)base[i].name, br); + err = PTR_ERR(d); + if (IS_ERR(d)) + goto out; + + base[i].dentry = d; + AuDebugOn(wbr + && wbr->wbr_wh[i] + && wbr->wbr_wh[i] != base[i].dentry); + } + + if (wbr) + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + + err = 0; + if (!au_br_writable(br->br_perm)) { + h_dir = h_root->d_inode; + au_wh_init_ro(h_dir, base, &path); + } else if (!au_br_wh_linkable(br->br_perm)) { + err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } else { + err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } + goto out; /* success */ + +out_err: + pr_err("an error(%d) on the writable branch %.*s(%s)\n", + err, AuDLNPair(h_root), au_sbtype(h_root->d_sb)); +out: + for (i = 0; i < AuBrWh_Last; i++) + dput(base[i].dentry); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * whiteouts are all hard-linked usually. + * when its link count reaches a ceiling, we create a new whiteout base + * asynchronously. + */ + +struct reinit_br_wh { + struct super_block *sb; + struct au_branch *br; +}; + +static void reinit_br_wh(void *arg) +{ + int err; + aufs_bindex_t bindex; + struct path h_path; + struct reinit_br_wh *a = arg; + struct au_wbr *wbr; + struct inode *dir; + struct dentry *h_root; + struct au_hinode *hdir; + + err = 0; + wbr = a->br->br_wbr; + /* big aufs lock */ + si_noflush_write_lock(a->sb); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(a->sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + di_read_lock_parent(a->sb->s_root, AuLock_IR); + dir = a->sb->s_root->d_inode; + hdir = au_hi(dir, bindex); + h_root = au_h_dptr(a->sb->s_root, bindex); + + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + wbr_wh_write_lock(wbr); + err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, + h_root, a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (!err) { + h_path.dentry = wbr->wbr_whbase; + h_path.mnt = a->br->br_mnt; + err = vfsub_unlink(hdir->hi_inode, &h_path, /*force*/0); + mnt_drop_write(a->br->br_mnt); + } + } else { + pr_warn("%.*s is moved, ignored\n", + AuDLNPair(wbr->wbr_whbase)); + err = 0; + } + dput(wbr->wbr_whbase); + wbr->wbr_whbase = NULL; + if (!err) + err = au_wh_init(h_root, a->br, a->sb); + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + di_read_unlock(a->sb->s_root, AuLock_IR); + +out: + if (wbr) + atomic_dec(&wbr->wbr_wh_running); + atomic_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + kfree(arg); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) +{ + int do_dec, wkq_err; + struct reinit_br_wh *arg; + + do_dec = 1; + if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) + goto out; + + /* ignore ENOMEM */ + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (arg) { + /* + * dec(wh_running), kfree(arg) and dec(br_count) + * in reinit function + */ + arg->sb = sb; + arg->br = br; + atomic_inc(&br->br_count); + wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + atomic_dec(&br->br_wbr->wbr_wh_running); + atomic_dec(&br->br_count); + kfree(arg); + } + do_dec = 0; + } + +out: + if (do_dec) + atomic_dec(&br->br_wbr->wbr_wh_running); +} + +/* ---------------------------------------------------------------------- */ + +/* + * create the whiteout @wh. + */ +static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *wh) +{ + int err; + struct path h_path = { + .dentry = wh + }; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir; + + h_parent = wh->d_parent; /* dir inode is locked */ + h_dir = h_parent->d_inode; + IMustLock(h_dir); + + br = au_sbr(sb, bindex); + h_path.mnt = br->br_mnt; + wbr = br->br_wbr; + wbr_wh_read_lock(wbr); + if (wbr->wbr_whbase) { + err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path); + if (!err || err != -EMLINK) + goto out; + + /* link count full. re-initialize br_whbase. */ + kick_reinit_br_wh(sb, br); + } + + /* return this error in this context */ + err = vfsub_create(h_dir, &h_path, WH_MASK); + +out: + wbr_wh_read_unlock(wbr); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create or remove the diropq. + */ +static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *opq_dentry, *h_dentry; + struct super_block *sb; + struct au_branch *br; + int err; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + opq_dentry = au_lkup_one(&diropq_name, h_dentry, br, /*nd*/NULL); + if (IS_ERR(opq_dentry)) + goto out; + + if (au_ftest_diropq(flags, CREATE)) { + err = link_or_create_wh(sb, bindex, opq_dentry); + if (!err) { + au_set_dbdiropq(dentry, bindex); + goto out; /* success */ + } + } else { + struct path tmp = { + .dentry = opq_dentry, + .mnt = br->br_mnt + }; + err = do_unlink_wh(au_h_iptr(dentry->d_inode, bindex), &tmp); + if (!err) + au_set_dbdiropq(dentry, -1); + } + dput(opq_dentry); + opq_dentry = ERR_PTR(err); + +out: + return opq_dentry; +} + +struct do_diropq_args { + struct dentry **errp; + struct dentry *dentry; + aufs_bindex_t bindex; + unsigned int flags; +}; + +static void call_do_diropq(void *args) +{ + struct do_diropq_args *a = args; + *a->errp = do_diropq(a->dentry, a->bindex, a->flags); +} + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (!au_test_h_perm_sio(h_dentry->d_inode, MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; + struct do_diropq_args args = { + .errp = &diropq, + .dentry = dentry, + .bindex = bindex, + .flags = flags + }; + + wkq_err = au_wkq_wait(call_do_diropq, &args); + if (unlikely(wkq_err)) + diropq = ERR_PTR(wkq_err); + } + + return diropq; +} + +/* ---------------------------------------------------------------------- */ + +/* + * lookup whiteout dentry. + * @h_parent: lower parent dentry which must exist and be locked + * @base_name: name of dentry which will be whiteouted + * returns dentry for whiteout. + */ +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br) +{ + int err; + struct qstr wh_name; + struct dentry *wh_dentry; + + err = au_wh_name_alloc(&wh_name, base_name); + wh_dentry = ERR_PTR(err); + if (!err) { + wh_dentry = au_lkup_one(&wh_name, h_parent, br, /*nd*/NULL); + kfree(wh_name.name); + } + return wh_dentry; +} + +/* + * link/create a whiteout for @dentry on @bindex. + */ +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent) +{ + struct dentry *wh_dentry; + struct super_block *sb; + int err; + + sb = dentry->d_sb; + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); + if (!IS_ERR(wh_dentry) && !wh_dentry->d_inode) { + err = link_or_create_wh(sb, bindex, wh_dentry); + if (!err) + au_set_dbwh(dentry, bindex); + else { + dput(wh_dentry); + wh_dentry = ERR_PTR(err); + } + } + + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* Delete all whiteouts in this directory on branch bindex. */ +static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err; + unsigned long ul, n; + struct qstr wh_name; + char *p; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + err = -ENOMEM; + p = __getname_gfp(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; + + err = 0; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; !err && ul < n; ul++, head++) { + hlist_for_each_entry(tpos, pos, head, wh_hash) { + if (tpos->wh_bindex != bindex) + continue; + + str = &tpos->wh_str; + if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { + memcpy(p, str->name, str->len); + wh_name.len = AUFS_WH_PFX_LEN + str->len; + err = unlink_wh_name(h_dentry, &wh_name, br); + if (!err) + continue; + break; + } + AuIOErr("whiteout name too long %.*s\n", + str->len, str->name); + err = -EIO; + break; + } + } + __putname(wh_name.name); + +out: + return err; +} + +struct del_wh_children_args { + int *errp; + struct dentry *h_dentry; + struct au_nhash *whlist; + aufs_bindex_t bindex; + struct au_branch *br; +}; + +static void call_del_wh_children(void *args) +{ + struct del_wh_children_args *a = args; + *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br); +} + +/* ---------------------------------------------------------------------- */ + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) +{ + struct au_whtmp_rmdir *whtmp; + int err; + unsigned int rdhash; + + SiMustAnyLock(sb); + + whtmp = kmalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + whtmp->dir = NULL; + whtmp->br = NULL; + whtmp->wh_dentry = NULL; + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = AUFS_RDHASH_DEF; + err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); + if (unlikely(err)) { + kfree(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + atomic_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + kfree(whtmp); +} + +/* + * rmdir the whiteouted temporary named dir @h_dentry. + * @whlist: whiteouted children. + */ +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist) +{ + int err; + struct path h_tmp; + struct inode *wh_inode, *h_dir; + struct au_branch *br; + + h_dir = wh_dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(h_dir); + + br = au_sbr(dir->i_sb, bindex); + wh_inode = wh_dentry->d_inode; + mutex_lock_nested(&wh_inode->i_mutex, AuLsc_I_CHILD); + + /* + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ + if (!au_test_h_perm_sio(wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(wh_dentry, whlist, bindex, br); + else { + int wkq_err; + struct del_wh_children_args args = { + .errp = &err, + .h_dentry = wh_dentry, + .whlist = whlist, + .bindex = bindex, + .br = br + }; + + wkq_err = au_wkq_wait(call_del_wh_children, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + mutex_unlock(&wh_inode->i_mutex); + + if (!err) { + h_tmp.dentry = wh_dentry; + h_tmp.mnt = br->br_mnt; + err = vfsub_rmdir(h_dir, &h_tmp); + } + + if (!err) { + if (au_ibstart(dir) == bindex) { + /* todo: dir->i_mutex is necessary */ + au_cpup_attr_timesizes(dir); + vfsub_drop_nlink(dir); + } + return 0; /* success */ + } + + pr_warn("failed removing %.*s(%d), ignored\n", + AuDLNPair(wh_dentry), err); + return err; +} + +static void call_rmdir_whtmp(void *args) +{ + int err; + aufs_bindex_t bindex; + struct au_whtmp_rmdir *a = args; + struct super_block *sb; + struct dentry *h_parent; + struct inode *h_dir; + struct au_hinode *hdir; + + /* rmdir by nfsd may cause deadlock with this i_mutex */ + /* mutex_lock(&a->dir->i_mutex); */ + err = -EROFS; + sb = a->dir->i_sb; + si_read_lock(sb, !AuLock_FLUSH); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + err = -EIO; + ii_write_lock_parent(a->dir); + h_parent = dget_parent(a->wh_dentry); + h_dir = h_parent->d_inode; + hdir = au_hi(a->dir, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, + a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (!err) { + err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, + &a->whlist); + mnt_drop_write(a->br->br_mnt); + } + } + au_hn_imtx_unlock(hdir); + dput(h_parent); + ii_write_unlock(a->dir); + +out: + /* mutex_unlock(&a->dir->i_mutex); */ + au_whtmp_rmdir_free(a); + si_read_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args) +{ + int wkq_err; + struct super_block *sb; + + IMustLock(dir); + + /* all post-process will be done in do_rmdir_whtmp(). */ + sb = dir->i_sb; + args->dir = au_igrab(dir); + args->br = au_sbr(sb, bindex); + atomic_inc(&args->br->br_count); + args->wh_dentry = dget(wh_dentry); + wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_warn("rmdir error %.*s (%d), ignored\n", + AuDLNPair(wh_dentry), wkq_err); + au_whtmp_rmdir_free(args); + } +} --- linux-3.5.0.orig/ubuntu/aufs/sbinfo.c +++ linux-3.5.0/ubuntu/aufs/sbinfo.c @@ -0,0 +1,343 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * superblock private data + */ + +#include "aufs.h" + +/* + * they are necessary regardless sysfs is disabled. + */ +void au_si_free(struct kobject *kobj) +{ + struct au_sbinfo *sbinfo; + char *locked __maybe_unused; /* debug only */ + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + AuDebugOn(!list_empty(&sbinfo->si_plink.head)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + AuDebugOn(radix_tree_gang_lookup + (&sbinfo->au_si_pid.tree, (void **)&locked, + /*first_index*/PID_MAX_DEFAULT - 1, + /*max_items*/sizeof(locked)/sizeof(*locked))); + + kfree(sbinfo->si_branch); + kfree(sbinfo->au_si_pid.bitmap); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + kfree(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + static struct lock_class_key aufs_si; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + BUILD_BUG_ON(sizeof(unsigned long) != + sizeof(*sbinfo->au_si_pid.bitmap)); + sbinfo->au_si_pid.bitmap = kcalloc(BITS_TO_LONGS(PID_MAX_DEFAULT), + sizeof(*sbinfo->au_si_pid.bitmap), + GFP_NOFS); + if (unlikely(!sbinfo->au_si_pid.bitmap)) + goto out_sbinfo; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_pidmap; + + err = sysaufs_si_init(sbinfo); + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + au_rw_class(&sbinfo->si_rwsem, &aufs_si); + spin_lock_init(&sbinfo->au_si_pid.tree_lock); + INIT_RADIX_TREE(&sbinfo->au_si_pid.tree, GFP_ATOMIC | __GFP_NOFAIL); + + atomic_long_set(&sbinfo->si_ninodes, 0); + atomic_long_set(&sbinfo->si_nfiles, 0); + + sbinfo->si_bend = -1; + + sbinfo->si_wbr_copyup = AuWbrCopyup_Def; + sbinfo->si_wbr_create = AuWbrCreate_Def; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + + mutex_init(&sbinfo->si_xib_mtx); + sbinfo->si_xino_brid = -1; + /* leave si_xib_last_pindex and si_xib_next_bit */ + + sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + sbinfo->si_dirwh = AUFS_DIRWH_DEF; + + au_spl_init(&sbinfo->si_plink); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + /* leave other members for sysaufs and si_mnt. */ + sbinfo->si_sb = sb; + sb->s_fs_info = sbinfo; + si_pid_set(sb); + au_debug_sbinfo_init(sbinfo); + return 0; /* success */ + +out_br: + kfree(sbinfo->si_branch); +out_pidmap: + kfree(sbinfo->au_si_pid.bitmap); +out_sbinfo: + kfree(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bend + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS); + if (brp) { + sbinfo->si_branch = brp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_sigen_inc(struct super_block *sb) +{ + unsigned int gen; + + SiMustWriteLock(sb); + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); + au_update_iigen(sb->s_root->d_inode); + sb->s_root->d_inode->i_version++; + return gen; +} + +aufs_bindex_t au_new_br_id(struct super_block *sb) +{ + aufs_bindex_t br_id; + int i; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + for (i = 0; i <= AUFS_BRANCH_MAX; i++) { + br_id = ++sbinfo->si_last_br_id; + AuDebugOn(br_id < 0); + if (br_id && au_br_index(sb, br_id) < 0) + return br_id; + } + + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* it is ok that new 'nwt' tasks are appended while we are sleeping */ +int si_read_lock(struct super_block *sb, int flags) +{ + int err; + + err = 0; + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_read_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_read_unlock(sb); + + return err; +} + +int si_write_lock(struct super_block *sb, int flags) +{ + int err; + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_write_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_write_unlock(sb); + + return err; +} + +/* dentry and super_block lock. call at entry point */ +int aufs_read_lock(struct dentry *dentry, int flags) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + if (au_ftest_lock(flags, DW)) + di_write_lock_child(dentry); + else + di_read_lock_child(dentry, flags); + + if (au_ftest_lock(flags, GEN)) { + err = au_digen_test(dentry, au_sigen(sb)); + AuDebugOn(!err && au_dbrange_test(dentry)); + if (unlikely(err)) + aufs_read_unlock(dentry, flags); + } + +out: + return err; +} + +void aufs_read_unlock(struct dentry *dentry, int flags) +{ + if (au_ftest_lock(flags, DW)) + di_write_unlock(dentry); + else + di_read_unlock(dentry, flags); + si_read_unlock(dentry->d_sb); +} + +void aufs_write_lock(struct dentry *dentry) +{ + si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); + di_write_lock_child(dentry); +} + +void aufs_write_unlock(struct dentry *dentry) +{ + di_write_unlock(dentry); + si_write_unlock(dentry->d_sb); +} + +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) +{ + int err; + unsigned int sigen; + struct super_block *sb; + + sb = d1->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIR)); + + if (au_ftest_lock(flags, GEN)) { + sigen = au_sigen(sb); + err = au_digen_test(d1, sigen); + AuDebugOn(!err && au_dbrange_test(d1)); + if (!err) { + err = au_digen_test(d2, sigen); + AuDebugOn(!err && au_dbrange_test(d2)); + } + if (unlikely(err)) + aufs_read_and_write_unlock2(d1, d2); + } + +out: + return err; +} + +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} + +/* ---------------------------------------------------------------------- */ + +int si_pid_test_slow(struct super_block *sb) +{ + void *p; + + rcu_read_lock(); + p = radix_tree_lookup(&au_sbi(sb)->au_si_pid.tree, current->pid); + rcu_read_unlock(); + + return (long)!!p; +} + +void si_pid_set_slow(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + AuDebugOn(si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + err = radix_tree_preload(GFP_NOFS | __GFP_NOFAIL); + AuDebugOn(err); + spin_lock(&sbinfo->au_si_pid.tree_lock); + err = radix_tree_insert(&sbinfo->au_si_pid.tree, current->pid, + /*any valid ptr*/sb); + spin_unlock(&sbinfo->au_si_pid.tree_lock); + AuDebugOn(err); + radix_tree_preload_end(); +} + +void si_pid_clr_slow(struct super_block *sb) +{ + void *p; + struct au_sbinfo *sbinfo; + + AuDebugOn(!si_pid_test_slow(sb)); + + sbinfo = au_sbi(sb); + spin_lock(&sbinfo->au_si_pid.tree_lock); + p = radix_tree_delete(&sbinfo->au_si_pid.tree, current->pid); + spin_unlock(&sbinfo->au_si_pid.tree_lock); +} --- linux-3.5.0.orig/ubuntu/aufs/i_op_del.c +++ linux-3.5.0/ubuntu/aufs/i_op_del.c @@ -0,0 +1,478 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (del entry) + */ + +#include "aufs.h" + +/* + * decide if a new whiteout for @dentry is necessary or not. + * when it is necessary, prepare the parent dir for the upper branch whose + * branch index is @bcpup for creation. the actual creation of the whiteout will + * be done by caller. + * return value: + * 0: wh is unnecessary + * plus: wh is necessary + * minus: error + */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) +{ + int need_wh, err; + aufs_bindex_t bstart; + struct super_block *sb; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + if (*bcpup < 0) { + *bcpup = bstart; + if (au_test_ro(sb, bstart, dentry->d_inode)) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(bstart < *bcpup + || au_test_ro(sb, *bcpup, dentry->d_inode)); + AuDbg("bcpup %d, bstart %d\n", *bcpup, bstart); + + if (*bcpup != bstart) { + err = au_cpup_dirs(dentry, *bcpup); + if (unlikely(err)) + goto out; + need_wh = 1; + } else { + struct au_dinfo *dinfo, *tmp; + + need_wh = -ENOMEM; + dinfo = au_di(dentry); + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (tmp) { + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + need_wh = au_lkup_dentry(dentry, bstart + 1, /*type*/0, + /*nd*/NULL); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + } + } + AuDbg("need_wh %d\n", need_wh); + err = need_wh; + +out: + return err; +} + +/* + * simple tests for the del-entry operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry, *h_latest; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, bindex); + h_inode = h_dentry->d_inode; + if (dentry->d_inode) { + err = -ENOENT; + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(h_inode)) + goto out; + } + + err = -ENOENT; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + goto out; + err = 0; + + /* + * rmdir a dir may break the consistency on some filesystem. + * let's try heavy test. + */ + err = -EACCES; + if (unlikely(au_test_h_perm(h_parent->d_inode, MAY_EXEC | MAY_WRITE))) + goto out; + + h_latest = au_sio_lkup_one(&dentry->d_name, h_parent, + au_sbr(dentry->d_sb, bindex)); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; + if (h_latest == h_dentry) + err = 0; + dput(h_latest); + +out: + return err; +} + +/* + * decide the branch where we operate for @dentry. the branch index will be set + * @rbcpup. after diciding it, 'pin' it and store the timestamps of the parent + * dir for reverting. + * when a new whiteout is necessary, create it. + */ +static struct dentry* +lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, + struct au_dtime *dt, struct au_pin *pin) +{ + struct dentry *wh_dentry; + struct super_block *sb; + struct path h_path; + int err, need_wh; + unsigned int udba; + aufs_bindex_t bcpup; + + need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); + wh_dentry = ERR_PTR(need_wh); + if (unlikely(need_wh < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + bcpup = *rbcpup; + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_path.dentry = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) { + err = au_may_del(dentry, bcpup, h_path.dentry, isdir); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + } + + h_path.mnt = au_sbr_mnt(sb, bcpup); + au_dtime_store(dt, au_pinned_parent(pin), &h_path); + wh_dentry = NULL; + if (!need_wh) + goto out; /* success, no need to create whiteout */ + + wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); + if (IS_ERR(wh_dentry)) + goto out_unpin; + + /* returns with the parent is locked and wh_dentry is dget-ed */ + goto out; /* success */ + +out_unpin: + au_unpin(pin); +out: + return wh_dentry; +} + +/* + * when removing a dir, rename it to a unique temporary whiteout-ed name first + * in order to be revertible and save time for removing many child whiteouts + * under the dir. + * returns 1 when there are too many child whiteout and caller should remove + * them asynchronously. returns 0 when the number of children is enough small to + * remove now or the branch fs is a remote fs. + * otherwise return an error. + */ +static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, + struct au_nhash *whlist, struct inode *dir) +{ + int rmdir_later, err, dirwh; + struct dentry *h_dentry; + struct super_block *sb; + + sb = dentry->d_sb; + SiMustAnyLock(sb); + h_dentry = au_h_dptr(dentry, bindex); + err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); + if (unlikely(err)) + goto out; + + /* stop monitoring */ + au_hn_free(au_hi(dentry->d_inode, bindex)); + + if (!au_test_fs_remote(h_dentry->d_sb)) { + dirwh = au_sbi(sb)->si_dirwh; + rmdir_later = (dirwh <= 1); + if (!rmdir_later) + rmdir_later = au_nhash_test_longer_wh(whlist, bindex, + dirwh); + if (rmdir_later) + return rmdir_later; + } + + err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); + if (unlikely(err)) { + AuIOErr("rmdir %.*s, b%d failed, %d. ignored\n", + AuDLNPair(h_dentry), bindex, err); + err = 0; + } + +out: + AuTraceErr(err); + return err; +} + +/* + * final procedure for deleting a entry. + * maintain dentry and iattr. + */ +static void epilog(struct inode *dir, struct dentry *dentry, + aufs_bindex_t bindex) +{ + struct inode *inode; + + inode = dentry->d_inode; + d_drop(dentry); + inode->i_ctime = dir->i_ctime; + + if (au_ibstart(dir) == bindex) + au_cpup_attr_timesizes(dir); + dir->i_version++; +} + +/* + * when an error happened, remove the created whiteout and revert everything. + */ +static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, + aufs_bindex_t bwh, struct dentry *wh_dentry, + struct dentry *dentry, struct au_dtime *dt) +{ + int rerr; + struct path h_path = { + .dentry = wh_dentry, + .mnt = au_sbr_mnt(dir->i_sb, bindex) + }; + + rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); + if (!rerr) { + au_set_dbwh(dentry, bwh); + au_dtime_revert(dt); + return 0; + } + + AuIOErr("%.*s reverting whiteout failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +int aufs_unlink(struct inode *dir, struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bindex, bstart; + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct inode *inode, *h_dir; + struct dentry *parent, *wh_dentry; + + IMustLock(dir); + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + inode = dentry->d_inode; + IMustLock(inode); + err = -EISDIR; + if (unlikely(S_ISDIR(inode->i_mode))) + goto out_unlock; /* possible? */ + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &dt, &pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_path.mnt = au_sbr_mnt(dentry->d_sb, bstart); + h_path.dentry = au_h_dptr(dentry, bstart); + dget(h_path.dentry); + if (bindex == bstart) { + h_dir = au_pinned_h_dir(&pin); + err = vfsub_unlink(h_dir, &h_path, /*force*/0); + } else { + /* dir inode is locked */ + h_dir = wh_dentry->d_parent->d_inode; + IMustLock(h_dir); + err = 0; + } + + if (!err) { + vfsub_drop_nlink(inode); + epilog(dir, dentry, bindex); + + /* update target timestamps */ + if (bindex == bstart) { + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ + inode->i_ctime = h_path.dentry->d_inode->i_ctime; + } else + /* todo: this timestamp may be reverted later */ + inode->i_ctime = h_dir->i_ctime; + goto out_unpin; /* success */ + } + + /* revert */ + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, &dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&pin); + dput(wh_dentry); + dput(h_path.dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, bstart; + struct au_dtime dt; + struct au_pin pin; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + + IMustLock(dir); + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_unlock; + inode = dentry->d_inode; + IMustLock(inode); + err = -ENOTDIR; + if (unlikely(!S_ISDIR(inode->i_mode))) + goto out_unlock; /* possible? */ + + err = -ENOMEM; + args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); + if (unlikely(!args)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + err = au_test_empty(dentry, &args->whlist); + if (unlikely(err)) + goto out_parent; + + bstart = au_dbstart(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &dt, &pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_dentry = au_h_dptr(dentry, bstart); + dget(h_dentry); + rmdir_later = 0; + if (bindex == bstart) { + err = renwh_and_rmdir(dentry, bstart, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, bstart)); + + /* dir inode is locked */ + IMustLock(wh_dentry->d_parent->d_inode); + err = 0; + } + + if (!err) { + vfsub_dead_dir(inode); + au_set_dbdiropq(dentry, -1); + epilog(dir, dentry, bindex); + + if (rmdir_later) { + au_whtmp_kick_rmdir(dir, bstart, h_dentry, args); + args = NULL; + } + + goto out_unpin; /* success */ + } + + /* revert */ + AuLabel(revert); + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, &dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&pin); + dput(wh_dentry); + dput(h_dentry); +out_parent: + di_write_unlock(parent); + if (args) + au_whtmp_rmdir_free(args); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/super.h +++ linux-3.5.0/ubuntu/aufs/super.h @@ -0,0 +1,546 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * super_block operations + */ + +#ifndef __AUFS_SUPER_H__ +#define __AUFS_SUPER_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" +#include "spl.h" +#include "wkq.h" + +typedef ssize_t (*au_readf_t)(struct file *, char __user *, size_t, loff_t *); +typedef ssize_t (*au_writef_t)(struct file *, const char __user *, size_t, + loff_t *); + +/* policies to select one among multiple writable branches */ +struct au_wbr_copyup_operations { + int (*copyup)(struct dentry *dentry); +}; + +struct au_wbr_create_operations { + int (*create)(struct dentry *dentry, int isdir); + int (*init)(struct super_block *sb); + int (*fin)(struct super_block *sb); +}; + +struct au_wbr_mfs { + struct mutex mfs_lock; /* protect this structure */ + unsigned long mfs_jiffy; + unsigned long mfs_expire; + aufs_bindex_t mfs_bindex; + + unsigned long long mfsrr_bytes; + unsigned long long mfsrr_watermark; +}; + +struct au_branch; +struct au_sbinfo { + /* nowait tasks in the system-wide workqueue */ + struct au_nowait_tasks si_nowait; + + /* + * tried sb->s_umount, but failed due to the dependecy between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* prevent recursive locking in deleting inode */ + struct { + unsigned long *bitmap; + spinlock_t tree_lock; + struct radix_tree_root tree; + } au_si_pid; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files from remount. + */ + atomic_long_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see above flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bend; + + /* dirty trick to keep br_id plus */ + unsigned int si_last_br_id : + sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; + struct au_branch **si_branch; + + /* policy to select a writable branch */ + unsigned char si_wbr_copyup; + unsigned char si_wbr_create; + struct au_wbr_copyup_operations *si_wbr_copyup_ops; + struct au_wbr_create_operations *si_wbr_create_ops; + + /* round robin */ + atomic_t si_wbr_rr_next; + + /* most free space */ + struct au_wbr_mfs si_wbr_mfs; + + /* mount flags */ + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + + /* external inode number (bitmap and translation table) */ + au_readf_t si_xread; + au_writef_t si_xwrite; + struct file *si_xib; + struct mutex si_xib_mtx; /* protect xib members */ + unsigned long *si_xib_buf; + unsigned long si_xib_last_pindex; + int si_xib_next_bit; + aufs_bindex_t si_xino_brid; + /* reserved for future use */ + /* unsigned long long si_xib_limit; */ /* Max xib file size */ + +#ifdef CONFIG_AUFS_EXPORT + /* i_generation */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* vdir parameters */ + unsigned long si_rdcache; /* max cache time in jiffies */ + unsigned int si_rdblk; /* deblk size */ + unsigned int si_rdhash; /* hash size */ + + /* + * If the number of whiteouts are larger than si_dirwh, leave all of + * them after au_whtmp_ren to reduce the cost of rmdir(2). + * future fsck.aufs or kernel thread will remove them later. + * Otherwise, remove all whiteouts and the dir in rmdir(2). + */ + unsigned int si_dirwh; + + /* + * rename(2) a directory with all children. + */ + /* reserved for future use */ + /* int si_rendir; */ + + /* pseudo_link list */ + struct au_splhead si_plink; + wait_queue_head_t si_plink_wq; + spinlock_t si_plink_maint_lock; + pid_t si_plink_maint_pid; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particulary when many aufs-es are mounted. + * but using sysfs is majority. + */ + struct kobject si_kobj; +#ifdef CONFIG_DEBUG_FS + struct dentry *si_dbgaufs, *si_dbgaufs_xib; +#ifdef CONFIG_AUFS_EXPORT + struct dentry *si_dbgaufs_xigen; +#endif +#endif + +#ifdef CONFIG_AUFS_SBILIST + struct list_head si_list; +#endif + + /* dirty, necessary for unmounting, sysfs and sysrq */ + struct super_block *si_sb; +}; + +/* sbinfo status flags */ +/* + * set true when refresh_dirs() failed at remount time. + * then try refreshing dirs at access time again. + * if it is false, refreshing dirs at access time is unnecesary + */ +#define AuSi_FAILED_REFRESH_DIR 1 +static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, + unsigned int flag) +{ + AuRwMustAnyLock(&sbi->si_rwsem); + return sbi->au_si_status & flag; +} +#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) +#define au_fset_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status |= AuSi_##name; \ +} while (0) +#define au_fclr_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status &= ~AuSi_##name; \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +/* policy to select one among writable branches */ +#define AuWbrCopyup(sbinfo, ...) \ + ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) +#define AuWbrCreate(sbinfo, ...) \ + ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) + +/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ +#define AuLock_DW 1 /* write-lock dentry */ +#define AuLock_IR (1 << 1) /* read-lock inode */ +#define AuLock_IW (1 << 2) /* write-lock inode */ +#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ +#define AuLock_DIR (1 << 4) /* target is a dir */ +#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ +#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ +#define AuLock_GEN (1 << 7) /* test digen/iigen */ +#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) +#define au_fset_lock(flags, name) \ + do { (flags) |= AuLock_##name; } while (0) +#define au_fclr_lock(flags, name) \ + do { (flags) &= ~AuLock_##name; } while (0) + +/* ---------------------------------------------------------------------- */ + +/* super.c */ +extern struct file_system_type aufs_fs_type; +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(void *array, unsigned long long max, + void *arg); +void au_array_free(void *array); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); + +/* sbinfo.c */ +void au_si_free(struct kobject *kobj); +int au_si_alloc(struct super_block *sb); +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr); + +unsigned int au_sigen_inc(struct super_block *sb); +aufs_bindex_t au_new_br_id(struct super_block *sb); + +int si_read_lock(struct super_block *sb, int flags); +int si_write_lock(struct super_block *sb, int flags); +int aufs_read_lock(struct dentry *dentry, int flags); +void aufs_read_unlock(struct dentry *dentry, int flags); +void aufs_write_lock(struct dentry *dentry); +void aufs_write_unlock(struct dentry *dentry); +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); + +int si_pid_test_slow(struct super_block *sb); +void si_pid_set_slow(struct super_block *sb); +void si_pid_clr_slow(struct super_block *sb); + +/* wbr_policy.c */ +extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; +extern struct au_wbr_create_operations au_wbr_create_ops[]; +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_sbinfo *au_sbi(struct super_block *sb) +{ + return sb->s_fs_info; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +void au_export_init(struct super_block *sb); + +static inline int au_test_nfsd(void) +{ + struct task_struct *tsk = current; + + return (tsk->flags & PF_KTHREAD) + && !strcmp(tsk->comm, "nfsd"); +} + +void au_xigen_inc(struct inode *inode); +int au_xigen_new(struct inode *inode); +int au_xigen_set(struct super_block *sb, struct file *base); +void au_xigen_clr(struct super_block *sb); + +static inline int au_busy_or_stale(void) +{ + if (!au_test_nfsd()) + return -EBUSY; + return -ESTALE; +} +#else +AuStubVoid(au_export_init, struct super_block *sb) +AuStubInt0(au_test_nfsd, void) +AuStubVoid(au_xigen_inc, struct inode *inode) +AuStubInt0(au_xigen_new, struct inode *inode) +AuStubInt0(au_xigen_set, struct super_block *sb, struct file *base) +AuStubVoid(au_xigen_clr, struct super_block *sb) +static inline int au_busy_or_stale(void) +{ + return -EBUSY; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_SBILIST +/* module.c */ +extern struct au_splhead au_sbilist; + +static inline void au_sbilist_init(void) +{ + au_spl_init(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_spl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_spl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + spin_lock(&au_sbilist.spin); +} + +static inline void au_sbilist_unlock(void) +{ + spin_unlock(&au_sbilist.spin); +} +#define AuGFP_SBILIST GFP_ATOMIC +#else +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ +#else +AuStubVoid(au_sbilist_init, void) +AuStubVoid(au_sbilist_add, struct super_block*) +AuStubVoid(au_sbilist_del, struct super_block*) +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif + +/* ---------------------------------------------------------------------- */ + +static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ +#ifdef CONFIG_DEBUG_FS + sbinfo->si_dbgaufs = NULL; + sbinfo->si_dbgaufs_xib = NULL; +#ifdef CONFIG_AUFS_EXPORT + sbinfo->si_dbgaufs_xigen = NULL; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +static inline pid_t si_pid_bit(void) +{ + /* the origin of pid is 1, but the bitmap's is 0 */ + return current->pid - 1; +} + +static inline int si_pid_test(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) + return test_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + else + return si_pid_test_slow(sb); +} + +static inline void si_pid_set(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + set_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_set_slow(sb); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + pid_t bit = si_pid_bit(); + if (bit < PID_MAX_DEFAULT) { + AuDebugOn(!test_bit(bit, au_sbi(sb)->au_si_pid.bitmap)); + clear_bit(bit, au_sbi(sb)->au_si_pid.bitmap); + /* smp_mb(); */ + } else + si_pid_clr_slow(sb); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +/* + * __si_read_lock, __si_write_lock, + * __si_read_unlock, __si_write_unlock, __si_downgrade_lock + */ +AuSimpleRwsemFuncs(__si, struct super_block *sb, &au_sbi(sb)->si_rwsem); + +#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) +#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) +#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) + +static inline void si_noflush_read_lock(struct super_block *sb) +{ + __si_read_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_read_trylock(struct super_block *sb) +{ + int locked = __si_read_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +static inline void si_noflush_write_lock(struct super_block *sb) +{ + __si_write_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_write_trylock(struct super_block *sb) +{ + int locked = __si_write_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +#if 0 /* unused */ +static inline int si_read_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_read_trylock(sb); +} +#endif + +static inline void si_read_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_read_unlock(sb); +} + +#if 0 /* unused */ +static inline int si_write_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_write_trylock(sb); +} +#endif + +static inline void si_write_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_write_unlock(sb); +} + +#if 0 /* unused */ +static inline void si_downgrade_lock(struct super_block *sb) +{ + __si_downgrade_lock(sb); +} +#endif + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_sbend(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bend; +} + +static inline unsigned int au_mntflags(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_mntflags; +} + +static inline unsigned int au_sigen(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_generation; +} + +static inline void au_ninodes_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_ninodes); +} + +static inline void au_ninodes_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_ninodes)); + atomic_long_dec(&au_sbi(sb)->si_ninodes); +} + +static inline void au_nfiles_inc(struct super_block *sb) +{ + atomic_long_inc(&au_sbi(sb)->si_nfiles); +} + +static inline void au_nfiles_dec(struct super_block *sb) +{ + AuDebugOn(!atomic_long_read(&au_sbi(sb)->si_nfiles)); + atomic_long_dec(&au_sbi(sb)->si_nfiles); +} + +static inline struct au_branch *au_sbr(struct super_block *sb, + aufs_bindex_t bindex) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_branch[0 + bindex]; +} + +static inline void au_xino_brid_set(struct super_block *sb, aufs_bindex_t brid) +{ + SiMustWriteLock(sb); + au_sbi(sb)->si_xino_brid = brid; +} + +static inline aufs_bindex_t au_xino_brid(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_xino_brid; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/wkq.c +++ linux-3.5.0/ubuntu/aufs/wkq.c @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new dredential scheme + */ + +#include +#include "aufs.h" + +/* internal workqueue named AUFS_WKQ_NAME */ + +static struct workqueue_struct *au_wkq; + +struct au_wkinfo { + struct work_struct wk; + struct kobject *kobj; + + unsigned int flags; /* see wkq.h */ + + au_wkq_func_t func; + void *args; + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ + +static void wkq_func(struct work_struct *wk) +{ + struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); + + AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); + AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); + + wkinfo->func(wkinfo->args); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + kfree(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#if defined(CONFIG_4KSTACKS) || defined(AuTest4KSTACKS) +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + *comp = kmalloc(sizeof(**comp), GFP_NOFS); + if (*comp) { + init_completion(*comp); + wkinfo->comp = *comp; + return 0; + } + return -ENOMEM; +} + +static void au_wkq_comp_free(struct completion *comp) +{ + kfree(comp); +} + +#else + +/* no braces */ +#define AuWkqCompDeclare(name) \ + DECLARE_COMPLETION_ONSTACK(_ ## name); \ + struct completion *comp = &_ ## name + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + wkinfo->comp = *comp; + return 0; +} + +static void au_wkq_comp_free(struct completion *comp __maybe_unused) +{ + /* empty */ +} +#endif /* 4KSTACKS */ + +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { + if (au_wkq_test()) { + AuWarn1("wkq from wkq, due to a dead dir by UDBA?\n"); + AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); + } + } else + au_dbg_verify_kthread(); + + if (au_ftest_wkq(wkinfo->flags, WAIT)) { + INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); + queue_work(au_wkq, &wkinfo->wk); + } else { + INIT_WORK(&wkinfo->wk, wkq_func); + schedule_work(&wkinfo->wk); + } +} + +/* + * Be careful. It is easy to make deadlock happen. + * processA: lock, wkq and wait + * processB: wkq and wait, lock in wkq + * --> deadlock + */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) +{ + int err; + AuWkqCompDeclare(comp); + struct au_wkinfo wkinfo = { + .flags = flags, + .func = func, + .args = args + }; + + err = au_wkq_comp_alloc(&wkinfo, &comp); + if (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + au_wkq_comp_free(comp); + destroy_work_on_stack(&wkinfo.wk); + } + + return err; + +} + +/* + * Note: dget/dput() in func for aufs dentries are not supported. It will be a + * problem in a concurrent umounting. + */ +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags) +{ + int err; + struct au_wkinfo *wkinfo; + + atomic_inc(&au_sbi(sb)->si_nowait.nw_len); + + /* + * wkq_func() must free this wkinfo. + * it highly depends upon the implementation of workqueue. + */ + err = 0; + wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); + if (wkinfo) { + wkinfo->kobj = &au_sbi(sb)->si_kobj; + wkinfo->flags = flags & ~AuWkq_WAIT; + wkinfo->func = func; + wkinfo->args = args; + wkinfo->comp = NULL; + kobject_get(wkinfo->kobj); + __module_get(THIS_MODULE); /* todo: ?? */ + + au_wkq_run(wkinfo); + } else { + err = -ENOMEM; + au_nwt_done(&au_sbi(sb)->si_nowait); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_nwt_init(struct au_nowait_tasks *nwt) +{ + atomic_set(&nwt->nw_len, 0); + /* smp_mb(); */ /* atomic_set */ + init_waitqueue_head(&nwt->nw_wq); +} + +void au_wkq_fin(void) +{ + destroy_workqueue(au_wkq); +} + +int __init au_wkq_init(void) +{ + int err; + + err = 0; + BUILD_BUG_ON(!WQ_RESCUER); + au_wkq = alloc_workqueue(AUFS_WKQ_NAME, !WQ_RESCUER, WQ_DFL_ACTIVE); + if (IS_ERR(au_wkq)) + err = PTR_ERR(au_wkq); + else if (!au_wkq) + err = -ENOMEM; + + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/super.c +++ linux-3.5.0/ubuntu/aufs/super.c @@ -0,0 +1,962 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount and super_block operations + */ + +#include +#include +#include +#include +#include +#include +#include "aufs.h" + +/* + * super_operations + */ +static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) +{ + struct au_icntnr *c; + + c = au_cache_alloc_icntnr(); + if (c) { + au_icntnr_init(c); + c->vfs_inode.i_version = 1; /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode_cb(struct rcu_head *head) +{ + struct inode *inode = container_of(head, struct inode, i_rcu); + + INIT_LIST_HEAD(&inode->i_dentry); + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +static void aufs_destroy_inode(struct inode *inode) +{ + au_iinfo_fin(inode); + call_rcu(&inode->i_rcu, aufs_destroy_inode_cb); +} + +struct inode *au_iget_locked(struct super_block *sb, ino_t ino) +{ + struct inode *inode; + int err; + + inode = iget_locked(sb, ino); + if (unlikely(!inode)) { + inode = ERR_PTR(-ENOMEM); + goto out; + } + if (!(inode->i_state & I_NEW)) + goto out; + + err = au_xigen_new(inode); + if (!err) + err = au_iinfo_init(inode); + if (!err) + inode->i_version++; + else { + iget_failed(inode); + inode = ERR_PTR(err); + } + +out: + /* never return NULL */ + AuDebugOn(!inode); + AuTraceErrPtr(inode); + return inode; +} + +/* lock free root dinfo */ +static int au_show_brs(struct seq_file *seq, struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + char *perm; + + err = 0; + bend = au_sbend(sb); + hdp = au_di(sb->s_root)->di_hdentry; + for (bindex = 0; !err && bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + path.mnt = br->br_mnt; + path.dentry = hdp[bindex].hd_dentry; + err = au_seq_path(seq, &path); + if (err > 0) { + perm = au_optstr_br_perm(br->br_perm); + if (perm) { + err = seq_printf(seq, "=%s", perm); + kfree(perm); + if (err == -1) + err = -E2BIG; + } else + err = -ENOMEM; + } + if (!err && bindex != bend) + err = seq_putc(seq, ':'); + } + + return err; +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_printf(m, ",create="); + pat = au_optstr_wbr_create(v); + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_printf(m, pat); + break; + case AuWbrCreate_MFSV: + seq_printf(m, /*pat*/"mfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_PMFSV: + seq_printf(m, /*pat*/"pmfs:%lu", + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRR: + seq_printf(m, /*pat*/"mfsrr:%llu", + sbinfo->si_wbr_mfs.mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + seq_printf(m, /*pat*/"mfsrr:%llu:%lu", + sbinfo->si_wbr_mfs.mfsrr_watermark, + jiffies_to_msecs(sbinfo->si_wbr_mfs.mfs_expire) + / MSEC_PER_SEC); + break; + } +} + +static int au_show_xino(struct seq_file *seq, struct super_block *sb) +{ +#ifdef CONFIG_SYSFS + return 0; +#else + int err; + const int len = sizeof(AUFS_XINO_FNAME) - 1; + aufs_bindex_t bindex, brid; + struct qstr *name; + struct file *f; + struct dentry *d, *h_root; + struct au_hdentry *hdp; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + err = 0; + f = au_sbi(sb)->si_xib; + if (!f) + goto out; + + /* stop printing the default xino path on the first writable branch */ + h_root = NULL; + brid = au_xino_brid(sb); + if (brid >= 0) { + bindex = au_br_index(sb, brid); + hdp = au_di(sb->s_root)->di_hdentry; + h_root = hdp[0 + bindex].hd_dentry; + } + d = f->f_dentry; + name = &d->d_name; + /* safe ->d_parent because the file is unlinked */ + if (d->d_parent == h_root + && name->len == len + && !memcmp(name->name, AUFS_XINO_FNAME, len)) + goto out; + + seq_puts(seq, ",xino="); + err = au_xino_path(seq, f); + +out: + return err; +#endif +} + +/* seq_file will re-call me in case of too long string */ +static int aufs_show_options(struct seq_file *m, struct dentry *dentry) +{ + int err; + unsigned int mnt_flags, v; + struct super_block *sb; + struct au_sbinfo *sbinfo; + +#define AuBool(name, str) do { \ + v = au_opt_test(mnt_flags, name); \ + if (v != au_opt_test(AuOpt_Def, name)) \ + seq_printf(m, ",%s" #str, v ? "" : "no"); \ +} while (0) + +#define AuStr(name, str) do { \ + v = mnt_flags & AuOptMask_##name; \ + if (v != (AuOpt_Def & AuOptMask_##name)) \ + seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ +} while (0) + +#define AuUInt(name, str, val) do { \ + if (val != AUFS_##name##_DEF) \ + seq_printf(m, "," #str "=%u", val); \ +} while (0) + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + sbinfo = au_sbi(sb); + seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); + + mnt_flags = au_mntflags(sb); + if (au_opt_test(mnt_flags, XINO)) { + err = au_show_xino(m, sb); + if (unlikely(err)) + goto out; + } else + seq_puts(m, ",noxino"); + + AuBool(TRUNC_XINO, trunc_xino); + AuStr(UDBA, udba); + AuBool(SHWH, shwh); + AuBool(PLINK, plink); + AuBool(DIO, dio); + /* AuBool(DIRPERM1, dirperm1); */ + /* AuBool(REFROF, refrof); */ + + v = sbinfo->si_wbr_create; + if (v != AuWbrCreate_Def) + au_show_wbr_create(m, v, sbinfo); + + v = sbinfo->si_wbr_copyup; + if (v != AuWbrCopyup_Def) + seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); + + v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); + if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) + seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); + + AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); + + v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; + AuUInt(RDCACHE, rdcache, v); + + AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); + AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); + + AuBool(SUM, sum); + /* AuBool(SUM_W, wsum); */ + AuBool(WARN_PERM, warn_perm); + AuBool(VERBOSE, verbose); + +out: + /* be sure to print "br:" last */ + if (!sysaufs_brs) { + seq_puts(m, ",br:"); + au_show_brs(m, sb); + } + si_read_unlock(sb); + return 0; + +#undef AuBool +#undef AuStr +#undef AuUInt +} + +/* ---------------------------------------------------------------------- */ + +/* sum mode which returns the summation for statfs(2) */ + +static u64 au_add_till_max(u64 a, u64 b) +{ + u64 old; + + old = a; + a += b; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static u64 au_mul_till_max(u64 a, long mul) +{ + u64 old; + + old = a; + a *= mul; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) +{ + int err; + long bsize, factor; + u64 blocks, bfree, bavail, files, ffree; + aufs_bindex_t bend, bindex, i; + unsigned char shared; + struct path h_path; + struct super_block *h_sb; + + err = 0; + bsize = LONG_MAX; + files = 0; + ffree = 0; + blocks = 0; + bfree = 0; + bavail = 0; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_path.mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path.mnt->mnt_sb; + shared = 0; + for (i = 0; !shared && i < bindex; i++) + shared = (au_sbr_sb(sb, i) == h_sb); + if (shared) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + if (unlikely(err)) + goto out; + + if (bsize > buf->f_bsize) { + /* + * we will reduce bsize, so we have to expand blocks + * etc. to match them again + */ + factor = (bsize / buf->f_bsize); + blocks = au_mul_till_max(blocks, factor); + bfree = au_mul_till_max(bfree, factor); + bavail = au_mul_till_max(bavail, factor); + bsize = buf->f_bsize; + } + + factor = (buf->f_bsize / bsize); + blocks = au_add_till_max(blocks, + au_mul_till_max(buf->f_blocks, factor)); + bfree = au_add_till_max(bfree, + au_mul_till_max(buf->f_bfree, factor)); + bavail = au_add_till_max(bavail, + au_mul_till_max(buf->f_bavail, factor)); + files = au_add_till_max(files, buf->f_files); + ffree = au_add_till_max(ffree, buf->f_ffree); + } + + buf->f_bsize = bsize; + buf->f_blocks = blocks; + buf->f_bfree = bfree; + buf->f_bavail = bavail; + buf->f_files = files; + buf->f_ffree = ffree; + buf->f_frsize = 0; + +out: + return err; +} + +static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + int err; + struct path h_path; + struct super_block *sb; + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (!au_opt_test(au_mntflags(sb), SUM)) { + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_sbr_mnt(sb, 0); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + } else + err = au_statfs_sum(sb, buf); + si_read_unlock(sb); + + if (!err) { + buf->f_type = AUFS_SUPER_MAGIC; + buf->f_namelen = AUFS_MAX_NAMELEN; + memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); + } + /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + + dbgaufs_si_fin(sbinfo); + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void au_array_free(void *array) +{ + if (array) { + if (!is_vmalloc_addr(array)) + kfree(array); + else + vfree(array); + } +} + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, void *arg) +{ + void *array; + unsigned long long n; + + array = NULL; + n = 0; + if (!*hint) + goto out; + + if (*hint > ULLONG_MAX / sizeof(array)) { + array = ERR_PTR(-EMFILE); + pr_err("hint %llu\n", *hint); + goto out; + } + + array = kmalloc(sizeof(array) * *hint, GFP_NOFS); + if (unlikely(!array)) + array = vmalloc(sizeof(array) * *hint); + if (unlikely(!array)) { + array = ERR_PTR(-ENOMEM); + goto out; + } + + n = cb(array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct inode **p, *inode; + struct list_head *head; + + n = 0; + p = a; + head = arg; + spin_lock(&inode_sb_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!is_bad_inode(inode) + && au_ii(inode)->ii_bstart >= 0) { + spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + au_igrab(inode); + *p++ = inode; + n++; + AuDebugOn(n > max); + } + spin_unlock(&inode->i_lock); + } + } + spin_unlock(&inode_sb_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_ninodes); + return au_array_alloc(max, au_iarray_cb, &sb->s_inodes); +} + +void au_iarray_free(struct inode **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + iput(a[ull]); + au_array_free(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * refresh dentry and inode at remount time. + */ +/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ +static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, + struct dentry *parent) +{ + int err; + + di_write_lock_child(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + if (!err && dir_flags) + au_hn_reset(dentry->d_inode, dir_flags); + di_read_unlock(parent, AuLock_IR); + di_write_unlock(dentry); + + return err; +} + +static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, + struct au_sbinfo *sbinfo, + const unsigned int dir_flags) +{ + int err; + struct dentry *parent; + struct inode *inode; + + err = 0; + parent = dget_parent(dentry); + if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { + inode = dentry->d_inode; + if (inode) { + if (!S_ISDIR(inode->i_mode)) + err = au_do_refresh(dentry, /*dir_flags*/0, + parent); + else { + err = au_do_refresh(dentry, dir_flags, parent); + if (unlikely(err)) + au_fset_si(sbinfo, FAILED_REFRESH_DIR); + } + } else + err = au_do_refresh(dentry, /*dir_flags*/0, parent); + AuDbgDentry(dentry); + } + dput(parent); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb) +{ + int err, i, j, ndentry, e; + unsigned int sigen; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *d; + struct au_sbinfo *sbinfo; + struct dentry *root = sb->s_root; + const unsigned int dir_flags = au_hi_flags(root->d_inode, /*isdir*/1); + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + sigen = au_sigen(sb); + sbinfo = au_sbi(sb); + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + e = au_do_refresh_d(d, sigen, sbinfo, dir_flags); + if (unlikely(e && !err)) + err = e; + /* go on even err */ + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int au_refresh_i(struct super_block *sb) +{ + int err, e; + unsigned int sigen; + unsigned long long max, ull; + struct inode *inode, **array; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; + if (au_iigen(inode) != sigen) { + ii_write_lock_child(inode); + e = au_refresh_hinode_self(inode); + ii_write_unlock(inode); + if (unlikely(e)) { + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bend; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + + au_sigen_inc(sb); + au_fclr_si(au_sbi(sb), FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = root->d_inode; + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(udba, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); + + di_write_unlock(root); + err = au_refresh_d(sb); + e = au_refresh_i(sb); + if (unlikely(e && !err)) + err = e; + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + au_cpup_attr_all(inode, /*force*/1); + + if (unlikely(err)) + AuIOErr("refresh failed, ignored, %d\n", err); +} + +/* stop extra interpretation of errno in mount(8), and strange error messages */ +static int cvt_err(int err) +{ + AuTraceErr(err); + + switch (err) { + case -ENOENT: + case -ENOTDIR: + case -EEXIST: + case -EIO: + err = -EINVAL; + } + return err; +} + +static int aufs_remount_fs(struct super_block *sb, int *flags, char *data) +{ + int err, do_dx; + unsigned int mntflags; + struct au_opts opts; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; + + err = 0; + root = sb->s_root; + if (!data || !*data) { + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) { + di_write_lock_child(root); + err = au_opts_verify(sb, *flags, /*pending*/0); + aufs_write_unlock(root); + } + goto out; + } + + err = -ENOMEM; + memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.flags = AuOpts_REMOUNT; + opts.sb_flags = *flags; + + /* parse it before aufs lock */ + err = au_opts_parse(sb, data, &opts); + if (unlikely(err)) + goto out_opts; + + sbinfo = au_sbi(sb); + inode = root->d_inode; + mutex_lock(&inode->i_mutex); + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + di_write_lock_child(root); + + /* au_opts_remount() may return an error */ + err = au_opts_remount(sb, &opts); + au_opts_free(&opts); + + if (au_ftest_opts(opts.flags, REFRESH)) + au_remount_refresh(sb); + + if (au_ftest_opts(opts.flags, REFRESH_DYAOP)) { + mntflags = au_mntflags(sb); + do_dx = !!au_opt_test(mntflags, DIO); + au_dy_arefresh(do_dx); + } + + aufs_write_unlock(root); + +out_mtx: + mutex_unlock(&inode->i_mutex); +out_opts: + free_page((unsigned long)opts.opt); +out: + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +static const struct super_operations aufs_sop = { + .alloc_inode = aufs_alloc_inode, + .destroy_inode = aufs_destroy_inode, + /* always deleting, no clearing */ + .drop_inode = generic_delete_inode, + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, + .remount_fs = aufs_remount_fs +}; + +/* ---------------------------------------------------------------------- */ + +static int alloc_root(struct super_block *sb) +{ + int err; + struct inode *inode; + struct dentry *root; + + err = -ENOMEM; + inode = au_iget_locked(sb, AUFS_ROOT_INO); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + inode->i_op = &aufs_dir_iop; + inode->i_fop = &aufs_dir_fop; + inode->i_mode = S_IFDIR; + set_nlink(inode, 2); + unlock_new_inode(inode); + + root = d_make_root(inode); + if (unlikely(!root)) + goto out; + err = PTR_ERR(root); + if (IS_ERR(root)) + goto out; + + err = au_di_init(root); + if (!err) { + sb->s_root = root; + return 0; /* success */ + } + dput(root); + +out: + return err; +} + +static int aufs_fill_super(struct super_block *sb, void *raw_data, + int silent __maybe_unused) +{ + int err; + struct au_opts opts; + struct dentry *root; + struct inode *inode; + char *arg = raw_data; + + if (unlikely(!arg || !*arg)) { + err = -EINVAL; + pr_err("no arg\n"); + goto out; + } + + err = -ENOMEM; + memset(&opts, 0, sizeof(opts)); + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.sb_flags = sb->s_flags; + + err = au_si_alloc(sb); + if (unlikely(err)) + goto out_opts; + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= MS_NOATIME | MS_NODIRATIME; + sb->s_op = &aufs_sop; + sb->s_d_op = &aufs_dop; + sb->s_magic = AUFS_SUPER_MAGIC; + sb->s_maxbytes = 0; + au_export_init(sb); + + err = alloc_root(sb); + if (unlikely(err)) { + si_write_unlock(sb); + goto out_info; + } + root = sb->s_root; + inode = root->d_inode; + + /* + * actually we can parse options regardless aufs lock here. + * but at remount time, parsing must be done before aufs lock. + * so we follow the same rule. + */ + ii_write_lock_parent(inode); + aufs_write_unlock(root); + err = au_opts_parse(sb, arg, &opts); + if (unlikely(err)) + goto out_root; + + /* lock vfs_inode first, then aufs. */ + mutex_lock(&inode->i_mutex); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + aufs_write_unlock(root); + mutex_unlock(&inode->i_mutex); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + dbgaufs_si_fin(au_sbi(sb)); + kobject_put(&au_sbi(sb)->si_kobj); + sb->s_fs_info = NULL; +out_opts: + free_page((unsigned long)opts.opt); +out: + AuTraceErr(err); + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_mount(struct file_system_type *fs_type, int flags, + const char *dev_name __maybe_unused, + void *raw_data) +{ + struct dentry *root; + struct super_block *sb; + + /* all timestamps always follow the ones on the branch */ + /* mnt->mnt_flags |= MNT_NOATIME | MNT_NODIRATIME; */ + root = mount_nodev(fs_type, flags, raw_data, aufs_fill_super); + if (IS_ERR(root)) + goto out; + + sb = root->d_sb; + si_write_lock(sb, !AuLock_FLUSH); + sysaufs_brs_add(sb, 0); + si_write_unlock(sb); + au_sbilist_add(sb); + +out: + return root; +} + +static void aufs_kill_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) { + au_sbilist_del(sb); + aufs_write_lock(sb->s_root); + if (sbinfo->si_wbr_create_ops->fin) + sbinfo->si_wbr_create_ops->fin(sb); + if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { + au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); + au_remount_refresh(sb); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(sb); + sbinfo->si_sb = NULL; + aufs_write_unlock(sb->s_root); + au_nwt_flush(&sbinfo->si_nowait); + } + generic_shutdown_super(sb); +} + +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + .fs_flags = + FS_RENAME_DOES_D_MOVE /* a race between rename and others */ + | FS_REVAL_DOT, /* for NFS branch and udba */ + .mount = aufs_mount, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; --- linux-3.5.0.orig/ubuntu/aufs/file.h +++ linux-3.5.0/ubuntu/aufs/file.h @@ -0,0 +1,298 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file operations + */ + +#ifndef __AUFS_FILE_H__ +#define __AUFS_FILE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "rwsem.h" + +struct au_branch; +struct au_hfile { + struct file *hf_file; + struct au_branch *hf_br; +}; + +struct au_vdir; +struct au_fidir { + aufs_bindex_t fd_bbot; + aufs_bindex_t fd_nent; + struct au_vdir *fd_vdir_cache; + struct au_hfile fd_hfile[]; +}; + +static inline int au_fidir_sz(int nent) +{ + AuDebugOn(nent < 0); + return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; +} + +struct au_finfo { + atomic_t fi_generation; + + struct au_rwsem fi_rwsem; + aufs_bindex_t fi_btop; + + /* do not union them */ + struct { /* for non-dir */ + struct au_hfile fi_htop; + atomic_t fi_mmapped; + }; + struct au_fidir *fi_hdir; /* for dir only */ +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* file.c */ +extern const struct address_space_operations aufs_aop; +unsigned int au_file_roflags(unsigned int flags); +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file); +int au_do_open(struct file *file, int (*open)(struct file *file, int flags), + struct au_fidir *fidir); +int au_reopen_nondir(struct file *file); +struct au_pin; +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock); +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)); + +/* poll.c */ +#ifdef CONFIG_AUFS_POLL +unsigned int aufs_poll(struct file *file, poll_table *wait); +#endif + +#ifdef CONFIG_AUFS_BR_HFSPLUS +/* hfsplus.c */ +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex); +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#else +static inline +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex) +{ + return NULL; +} + +AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#endif + +/* f_op.c */ +extern const struct file_operations aufs_file_fop; +int au_do_open_nondir(struct file *file, int flags); +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); + +#ifdef CONFIG_AUFS_SP_IATTR +/* f_op_sp.c */ +int au_special_file(umode_t mode); +void au_init_special_fop(struct inode *inode, umode_t mode, dev_t rdev); +#else +AuStubInt0(au_special_file, umode_t mode) +static inline void au_init_special_fop(struct inode *inode, umode_t mode, + dev_t rdev) +{ + init_special_inode(inode, mode, rdev); +} +#endif + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, struct file *file); +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, + struct file *h_file); + +void au_update_figen(struct file *file); +struct au_fidir *au_fidir_alloc(struct super_block *sb); +int au_fidir_realloc(struct au_finfo *finfo, int nbr); + +void au_fi_init_once(void *_fi); +void au_finfo_fin(struct file *file); +int au_finfo_init(struct file *file, struct au_fidir *fidir); + +/* ioctl.c */ +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg); +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_finfo *au_fi(struct file *file) +{ + return file->private_data; +} + +/* ---------------------------------------------------------------------- */ + +/* + * fi_read_lock, fi_write_lock, + * fi_read_unlock, fi_write_unlock, fi_downgrade_lock + */ +AuSimpleRwsemFuncs(fi, struct file *f, &au_fi(f)->fi_rwsem); + +#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) +#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) +#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: hard/soft set? */ +static inline aufs_bindex_t au_fbstart(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbend_dir(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_bbot; +} + +static inline struct au_vdir *au_fvdir_cache(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_vdir_cache; +} + +static inline void au_set_fbstart(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbend_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_bbot = bindex; +} + +static inline void au_set_fvdir_cache(struct file *file, + struct au_vdir *vdir_cache) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; +} + +static inline struct file *au_hf_top(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(au_fi(file)->fi_hdir); + return au_fi(file)->fi_htop.hf_file; +} + +static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; +} + +/* todo: memory barrier? */ +static inline unsigned int au_figen(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_generation); +} + +static inline void au_set_mmapped(struct file *f) +{ + if (atomic_inc_return(&au_fi(f)->fi_mmapped)) + return; + pr_warn("fi_mmapped wrapped around\n"); + while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) + ; +} + +static inline void au_unset_mmapped(struct file *f) +{ + atomic_dec(&au_fi(f)->fi_mmapped); +} + +static inline int au_test_mmapped(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_mmapped); +} + +/* customize vma->vm_file */ + +static inline void au_do_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + f = vma->vm_file; + get_file(file); + vma->vm_file = file; + fput(f); +} + +#ifdef CONFIG_MMU +#define AuDbgVmRegion(file, vma) do {} while (0) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + au_do_vm_file_reset(vma, file); +} +#else +#define AuDbgVmRegion(file, vma) \ + AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + au_do_vm_file_reset(vma, file); + f = vma->vm_region->vm_file; + get_file(file); + vma->vm_region->vm_file = file; + fput(f); +} +#endif /* CONFIG_MMU */ + +/* handle vma->vm_prfile */ +static inline void au_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ +#ifdef CONFIG_AUFS_PROC_MAP + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +#endif +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/aufs.h +++ linux-3.5.0/ubuntu/aufs/aufs.h @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * all header files + */ + +#ifndef __AUFS_H__ +#define __AUFS_H__ + +#ifdef __KERNEL__ + +#define AuStub(type, name, body, ...) \ + static inline type name(__VA_ARGS__) { body; } + +#define AuStubVoid(name, ...) \ + AuStub(void, name, , __VA_ARGS__) +#define AuStubInt0(name, ...) \ + AuStub(int, name, return 0, __VA_ARGS__) + +#include "debug.h" + +#include "branch.h" +#include "cpup.h" +#include "dcsub.h" +#include "dbgaufs.h" +#include "dentry.h" +#include "dir.h" +#include "dynop.h" +#include "file.h" +#include "fstype.h" +#include "inode.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "spl.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/i_op.c +++ linux-3.5.0/ubuntu/aufs/i_op.c @@ -0,0 +1,1009 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (except add/del/rename) + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +static int h_permission(struct inode *h_inode, int mask, + struct vfsmount *h_mnt, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + + err = -EACCES; + if ((write_mask && IS_IMMUTABLE(h_inode)) + || ((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && ((h_mnt->mnt_flags & MNT_NOEXEC) + || !(h_inode->i_mode & S_IXUGO)))) + goto out; + + /* + * - skip the lower fs test in the case of write to ro branch. + * - nfs dir permission write check is optimized, but a policy for + * link/rename requires a real check. + */ + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + err = generic_permission(h_inode, mask); + } else { + /* AuLabel(h_inode->permission); */ + err = h_inode->i_op->permission(h_inode, mask); + AuTraceErr(err); + } + + if (!err) + err = devcgroup_inode_permission(h_inode, mask); + if (!err) + err = security_inode_permission(h_inode, mask); + +#if 0 + if (!err) { + /* todo: do we need to call ima_path_check()? */ + struct path h_path = { + .dentry = + .mnt = h_mnt + }; + err = ima_path_check(&h_path, + mask & (MAY_READ | MAY_WRITE | MAY_EXEC), + IMA_COUNT_LEAVE); + } +#endif + +out: + return err; +} + +static int aufs_permission(struct inode *inode, int mask) +{ + int err; + aufs_bindex_t bindex, bend; + const unsigned char isdir = !!S_ISDIR(inode->i_mode), + write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + + /* todo: support rcu-walk? */ + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); +#if 0 + err = au_iigen_test(inode, au_sigen(sb)); + if (unlikely(err)) + goto out; +#endif + + if (!isdir || write_mask) { + err = au_busy_or_stale(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibstart(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, br->br_mnt, br->br_perm); + if (write_mask + && !err + && !special_file(h_inode->i_mode)) { + /* test whether the upper writable branch exists */ + err = -EROFS; + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = 0; + break; + } + } + goto out; + } + + /* non-write to dir */ + err = 0; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); !err && bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) { + err = au_busy_or_stale(); + if (unlikely(!S_ISDIR(h_inode->i_mode))) + break; + + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, br->br_mnt, + br->br_perm); + } + } + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, + struct nameidata *nd) +{ + struct dentry *ret, *parent; + struct inode *inode; + struct super_block *sb; + int err, npositive, lc_idx; + + IMustLock(dir); + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + + ret = ERR_PTR(-ENAMETOOLONG); + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out_si; + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out_si; + + inode = NULL; + npositive = 0; /* suppress a warning */ + parent = dentry->d_parent; /* dir inode is locked */ + di_read_lock_parent(parent, AuLock_IR); + err = au_alive_dir(parent); + if (!err) + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + npositive = au_lkup_dentry(dentry, au_dbstart(parent), + /*type*/0, nd); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); + ret = ERR_PTR(err); + if (unlikely(err < 0)) + goto out_unlock; + + if (npositive) { + inode = au_new_inode(dentry, /*must_new*/0); + ret = (void *)inode; + } + if (IS_ERR(inode)) { + inode = NULL; + goto out_unlock; + } + + ret = d_splice_alias(inode, dentry); + if (unlikely(IS_ERR(ret) && inode)) { + ii_write_unlock(inode); + iput(inode); + inode = NULL; + } + +out_unlock: + di_write_unlock(dentry); + if (inode) { + lc_idx = AuLcNonDir_DIINFO; + if (S_ISLNK(inode->i_mode)) + lc_idx = AuLcSymlink_DIINFO; + else if (S_ISDIR(inode->i_mode)) + lc_idx = AuLcDir_DIINFO; + au_rw_class(&au_di(dentry)->di_rwsem, au_lc_key + lc_idx); + } +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, + const unsigned char add_entry, aufs_bindex_t bcpup, + aufs_bindex_t bstart) +{ + int err; + struct dentry *h_parent; + struct inode *h_dir; + + if (add_entry) + IMustLock(parent->d_inode); + else + di_write_lock_parent(parent); + + err = 0; + if (!au_h_dptr(parent, bcpup)) { + if (bstart < bcpup) + err = au_cpdown_dirs(dentry, bcpup); + else + err = au_cpup_dirs(dentry, bcpup); + } + if (!err && add_entry) { + h_parent = au_h_dptr(parent, bcpup); + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup); + /* todo: no unlock here */ + mutex_unlock(&h_dir->i_mutex); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (!dentry->d_inode) + au_set_h_dptr(dentry, bstart, NULL); + au_update_dbrange(dentry, /*do_put_zero*/0); + } + } + + if (!add_entry) + di_write_unlock(parent); + if (!err) + err = bcpup; /* success */ + + AuTraceErr(err); + return err; +} + +/* + * decide the branch and the parent dir where we will create a new entry. + * returns new bindex or an error. + * copyup the parent dir if needed. + */ +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args) +{ + int err; + aufs_bindex_t bcpup, bstart, src_bstart; + const unsigned char add_entry = !!au_ftest_wrdir(args->flags, + ADD_ENTRY); + struct super_block *sb; + struct dentry *parent; + struct au_sbinfo *sbinfo; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + parent = dget_parent(dentry); + bstart = au_dbstart(dentry); + bcpup = bstart; + if (args->force_btgt < 0) { + if (src_dentry) { + src_bstart = au_dbstart(src_dentry); + if (src_bstart < bstart) + bcpup = src_bstart; + } else if (add_entry) { + err = AuWbrCreate(sbinfo, dentry, + au_ftest_wrdir(args->flags, ISDIR)); + bcpup = err; + } + + if (bcpup < 0 || au_test_ro(sb, bcpup, dentry->d_inode)) { + if (add_entry) + err = AuWbrCopyup(sbinfo, dentry); + else { + if (!IS_ROOT(dentry)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(sbinfo, dentry); + di_read_unlock(parent, !AuLock_IR); + } else + err = AuWbrCopyup(sbinfo, dentry); + } + bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else { + bcpup = args->force_btgt; + AuDebugOn(au_test_ro(sb, bcpup, dentry->d_inode)); + } + + AuDbg("bstart %d, bcpup %d\n", bstart, bcpup); + err = bcpup; + if (bcpup == bstart) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, bstart); + if (err >= 0) { + if (!dentry->d_inode) { + au_set_h_dptr(dentry, bstart, NULL); + au_set_dbstart(dentry, bcpup); + au_set_dbend(dentry, bcpup); + } + AuDebugOn(add_entry && !au_h_dptr(dentry, bcpup)); + } + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_pinned_h_parent(struct au_pin *pin) +{ + if (pin && pin->parent) + return au_h_dptr(pin->parent, pin->bindex); + return NULL; +} + +void au_unpin(struct au_pin *p) +{ + if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) + mnt_drop_write(p->h_mnt); + if (!p->hdir) + return; + + au_hn_imtx_unlock(p->hdir); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + iput(p->hdir->hi_inode); + dput(p->parent); + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; +} + +int au_do_pin(struct au_pin *p) +{ + int err; + struct super_block *sb; + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct inode *h_dir; + + err = 0; + sb = p->dentry->d_sb; + br = au_sbr(sb, p->bindex); + if (IS_ROOT(p->dentry)) { + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = br->br_mnt; + err = mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_err; + } + } + goto out; + } + + h_dentry = NULL; + if (p->bindex <= au_dbend(p->dentry)) + h_dentry = au_h_dptr(p->dentry, p->bindex); + + p->parent = dget_parent(p->dentry); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_lock(p->parent, AuLock_IR, p->lsc_di); + + h_dir = NULL; + h_parent = au_h_dptr(p->parent, p->bindex); + p->hdir = au_hi(p->parent->d_inode, p->bindex); + if (p->hdir) + h_dir = p->hdir->hi_inode; + + /* + * udba case, or + * if DI_LOCKED is not set, then p->parent may be different + * and h_parent can be NULL. + */ + if (unlikely(!p->hdir || !h_dir || !h_parent)) { + err = -EBUSY; + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + + au_igrab(h_dir); + au_hn_imtx_lock_nested(p->hdir, p->lsc_hi); + + if (unlikely(p->hdir->hi_inode != h_parent->d_inode)) { + err = -EBUSY; + goto out_unpin; + } + if (h_dentry) { + err = au_h_verify(h_dentry, p->udba, h_dir, h_parent, br); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_unpin; + } + } + + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = br->br_mnt; + err = mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_unpin; + } + } + goto out; /* success */ + +out_unpin: + au_unpin(p); +out_err: + pr_err("err %d\n", err); + err = au_busy_or_stale(); +out: + return err; +} + +void au_pin_init(struct au_pin *p, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags) +{ + p->dentry = dentry; + p->udba = udba; + p->lsc_di = lsc_di; + p->lsc_hi = lsc_hi; + p->flags = flags; + p->bindex = bindex; + + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; +} + +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) +{ + au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, + udba, flags); + return au_do_pin(pin); +} + +/* ---------------------------------------------------------------------- */ + +/* + * ->setattr() and ->getattr() are called in various cases. + * chmod, stat: dentry is revalidated. + * fchmod, fstat: file and dentry are not revalidated, additionally they may be + * unhashed. + * for ->setattr(), ia->ia_file is passed from ftruncate only. + */ +/* todo: consolidate with do_refresh() and simple_reval_dpath() */ +static int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct inode *inode; + struct dentry *parent; + + err = 0; + inode = dentry->d_inode; + if (au_digen_test(dentry, sigen)) { + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + } + + AuTraceErr(err); + return err; +} + +#define AuIcpup_DID_CPUP 1 +#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) +#define au_fset_icpup(flags, name) \ + do { (flags) |= AuIcpup_##name; } while (0) +#define au_fclr_icpup(flags, name) \ + do { (flags) &= ~AuIcpup_##name; } while (0) + +struct au_icpup_args { + unsigned char flags; + unsigned char pin_flags; + aufs_bindex_t btgt; + unsigned int udba; + struct au_pin pin; + struct path h_path; + struct inode *h_inode; +}; + +static int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a) +{ + int err; + loff_t sz; + aufs_bindex_t bstart, ibstart; + struct dentry *hi_wh, *parent; + struct inode *inode; + struct file *h_file; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + bstart = au_dbstart(dentry); + inode = dentry->d_inode; + if (S_ISDIR(inode->i_mode)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + /* plink or hi_wh() case */ + ibstart = au_ibstart(inode); + if (bstart != ibstart && !au_test_ro(inode->i_sb, ibstart, inode)) + wr_dir_args.force_btgt = ibstart; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != bstart) + au_fset_icpup(a->flags, DID_CPUP); + + err = 0; + a->pin_flags = AuPin_MNT_WRITE; + parent = NULL; + if (!IS_ROOT(dentry)) { + au_fset_pin(a->pin_flags, DI_LOCKED); + parent = dget_parent(dentry); + di_write_lock_parent(parent); + } + + err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); + if (unlikely(err)) + goto out_parent; + + a->h_path.dentry = au_h_dptr(dentry, bstart); + a->h_inode = a->h_path.dentry->d_inode; + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + sz = -1; + if ((ia->ia_valid & ATTR_SIZE) && ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + + h_file = NULL; + hi_wh = NULL; + if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { + hi_wh = au_hi_wh(inode, a->btgt); + if (!hi_wh) { + err = au_sio_cpup_wh(dentry, a->btgt, sz, /*file*/NULL); + if (unlikely(err)) + goto out_unlock; + hi_wh = au_hi_wh(inode, a->btgt); + /* todo: revalidate hi_wh? */ + } + } + + if (parent) { + au_pin_set_parent_lflag(&a->pin, /*lflag*/0); + di_downgrade_lock(parent, AuLock_IR); + dput(parent); + parent = NULL; + } + if (!au_ftest_icpup(a->flags, DID_CPUP)) + goto out; /* success */ + + if (!d_unhashed(dentry)) { + h_file = au_h_open_pre(dentry, bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(dentry, a->btgt, sz, + AuCpup_DTIME); + if (!err) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + } else if (!hi_wh) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + else + a->h_path.dentry = hi_wh; /* do not dget here */ + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_h_open_post(dentry, bstart, h_file); + a->h_inode = a->h_path.dentry->d_inode; + if (!err) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + goto out; /* success */ + } + + au_unpin(&a->pin); +out_parent: + if (parent) { + di_write_unlock(parent); + dput(parent); + } +out: + return err; +} + +static int aufs_setattr(struct dentry *dentry, struct iattr *ia) +{ + int err; + struct inode *inode; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; + + inode = dentry->d_inode; + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + + file = NULL; + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + if (ia->ia_valid & ATTR_FILE) { + /* currently ftruncate(2) only */ + AuDebugOn(!S_ISREG(inode->i_mode)); + file = ia->ia_file; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out_si; + ia->ia_file = au_hf_top(file); + a->udba = AuOpt_UDBA_NONE; + } else { + /* fchmod() doesn't pass ia_file */ + a->udba = au_opt_udba(sb); + di_write_lock_child(dentry); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out_dentry; + } + } + + err = au_pin_and_icpup(dentry, ia, a); + if (unlikely(err < 0)) + goto out_dentry; + if (au_ftest_icpup(a->flags, DID_CPUP)) { + ia->ia_file = NULL; + ia->ia_valid &= ~ATTR_FILE; + } + + a->h_path.mnt = au_sbr_mnt(sb, a->btgt); + if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) + == (ATTR_MODE | ATTR_CTIME)) { + err = security_path_chmod(&a->h_path, ia->ia_mode); + if (unlikely(err)) + goto out_unlock; + } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) + && (ia->ia_valid & ATTR_CTIME)) { + err = security_path_chown(&a->h_path, vfsub_ia_uid(ia), + vfsub_ia_gid(ia)); + if (unlikely(err)) + goto out_unlock; + } + + if (ia->ia_valid & ATTR_SIZE) { + struct file *f; + + if (ia->ia_size < i_size_read(inode)) + /* unmap only */ + truncate_setsize(inode, ia->ia_size); + + f = NULL; + if (ia->ia_valid & ATTR_FILE) + f = ia->ia_file; + mutex_unlock(&a->h_inode->i_mutex); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + } else + err = vfsub_notify_change(&a->h_path, ia); + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + mutex_unlock(&a->h_inode->i_mutex); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbstart(dentry); +out_dentry: + di_write_unlock(dentry); + if (file) { + fi_write_unlock(file); + ia->ia_file = file; + ia->ia_valid |= ATTR_FILE; + } +out_si: + si_read_unlock(sb); +out_kfree: + kfree(a); +out: + AuTraceErr(err); + return err; +} + +static void au_refresh_iattr(struct inode *inode, struct kstat *st, + unsigned int nlink) +{ + unsigned int n; + + inode->i_mode = st->mode; + i_uid_write(inode, st->uid); + i_gid_write(inode, st->gid); + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; + inode->i_ctime = st->ctime; + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { + n = inode->i_nlink; + n -= nlink; + n += st->nlink; + /* 0 can happen */ + set_nlink(inode, n); + } + + spin_lock(&inode->i_lock); + inode->i_blocks = st->blocks; + i_size_write(inode, st->size); + spin_unlock(&inode->i_lock); +} + +static int aufs_getattr(struct vfsmount *mnt __maybe_unused, + struct dentry *dentry, struct kstat *st) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex; + unsigned char udba_none, positive; + struct super_block *sb, *h_sb; + struct inode *inode; + struct vfsmount *h_mnt; + struct dentry *h_dentry; + + sb = dentry->d_sb; + inode = dentry->d_inode; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + mnt_flags = au_mntflags(sb); + udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); + + /* support fstat(2) */ + if (!d_unlinked(dentry) && !udba_none) { + unsigned int sigen = au_sigen(sb); + err = au_digen_test(dentry, sigen); + if (!err) { + di_read_lock_child(dentry, AuLock_IR); + err = au_dbrange_test(dentry); + if (unlikely(err)) + goto out_unlock; + } else { + AuDebugOn(IS_ROOT(dentry)); + di_write_lock_child(dentry); + err = au_dbrange_test(dentry); + if (!err) + err = au_reval_for_attr(dentry, sigen); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + } + } else + di_read_lock_child(dentry, AuLock_IR); + + bindex = au_ibstart(inode); + h_mnt = au_sbr_mnt(sb, bindex); + h_sb = h_mnt->mnt_sb; + if (!au_test_fs_bad_iattr(h_sb) && udba_none) + goto out_fill; /* success */ + + h_dentry = NULL; + if (au_dbstart(dentry) == bindex) + h_dentry = dget(au_h_dptr(dentry, bindex)); + else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { + h_dentry = au_plink_lkup(inode, bindex); + if (IS_ERR(h_dentry)) + goto out_fill; /* pretending success */ + } + /* illegally overlapped or something */ + if (unlikely(!h_dentry)) + goto out_fill; /* pretending success */ + + positive = !!h_dentry->d_inode; + if (positive) + err = vfs_getattr(h_mnt, h_dentry, st); + dput(h_dentry); + if (!err) { + if (positive) + au_refresh_iattr(inode, st, h_dentry->d_inode->i_nlink); + goto out_fill; /* success */ + } + AuTraceErr(err); + goto out_unlock; + +out_fill: + generic_fillattr(inode, st); +out_unlock: + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int h_readlink(struct dentry *dentry, int bindex, char __user *buf, + int bufsiz) +{ + int err; + struct super_block *sb; + struct dentry *h_dentry; + + err = -EINVAL; + h_dentry = au_h_dptr(dentry, bindex); + if (unlikely(!h_dentry->d_inode->i_op->readlink)) + goto out; + + err = security_inode_readlink(h_dentry); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + if (!au_test_ro(sb, bindex, dentry->d_inode)) { + vfsub_touch_atime(au_sbr_mnt(sb, bindex), h_dentry); + fsstack_copy_attr_atime(dentry->d_inode, h_dentry->d_inode); + } + err = h_dentry->d_inode->i_op->readlink(h_dentry, buf, bufsiz); + +out: + return err; +} + +static int aufs_readlink(struct dentry *dentry, char __user *buf, int bufsiz) +{ + int err; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_hashed_positive(dentry); + if (!err) + err = h_readlink(dentry, au_dbstart(dentry), buf, bufsiz); + aufs_read_unlock(dentry, AuLock_IR); + +out: + return err; +} + +static void *aufs_follow_link(struct dentry *dentry, struct nameidata *nd) +{ + int err; + mm_segment_t old_fs; + union { + char *k; + char __user *u; + } buf; + + err = -ENOMEM; + buf.k = __getname_gfp(GFP_NOFS); + if (unlikely(!buf.k)) + goto out; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out_name; + + err = au_d_hashed_positive(dentry); + if (!err) { + old_fs = get_fs(); + set_fs(KERNEL_DS); + err = h_readlink(dentry, au_dbstart(dentry), buf.u, PATH_MAX); + set_fs(old_fs); + } + aufs_read_unlock(dentry, AuLock_IR); + + if (err >= 0) { + buf.k[err] = 0; + /* will be freed by put_link */ + nd_set_link(nd, buf.k); + return NULL; /* success */ + } + +out_name: + __putname(buf.k); +out: + path_put(&nd->path); + AuTraceErr(err); + return ERR_PTR(err); +} + +static void aufs_put_link(struct dentry *dentry __maybe_unused, + struct nameidata *nd, void *cookie __maybe_unused) +{ + __putname(nd_get_link(nd)); +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_update_time(struct inode *inode, struct timespec *ts, int flags) +{ + int err; + struct super_block *sb; + struct inode *h_inode; + + sb = inode->i_sb; + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + lockdep_on(); + h_inode = au_h_iptr(inode, au_ibstart(inode)); + err = vfsub_update_time(h_inode, ts, flags); + lockdep_off(); + ii_write_unlock(inode); + si_read_unlock(sb); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct inode_operations aufs_symlink_iop = { + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .readlink = aufs_readlink, + .follow_link = aufs_follow_link, + .put_link = aufs_put_link, + + /* .update_time = aufs_update_time */ +}; + +struct inode_operations aufs_dir_iop = { + .create = aufs_create, + .lookup = aufs_lookup, + .link = aufs_link, + .unlink = aufs_unlink, + .symlink = aufs_symlink, + .mkdir = aufs_mkdir, + .rmdir = aufs_rmdir, + .mknod = aufs_mknod, + .rename = aufs_rename, + + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .update_time = aufs_update_time +}; + +struct inode_operations aufs_iop = { + .permission = aufs_permission, + .setattr = aufs_setattr, + .getattr = aufs_getattr, + + .update_time = aufs_update_time +}; --- linux-3.5.0.orig/ubuntu/aufs/inode.h +++ linux-3.5.0/ubuntu/aufs/inode.h @@ -0,0 +1,560 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations + */ + +#ifndef __AUFS_INODE_H__ +#define __AUFS_INODE_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct vfsmount; + +struct au_hnotify { +#ifdef CONFIG_AUFS_HNOTIFY +#ifdef CONFIG_AUFS_HFSNOTIFY + /* never use fsnotify_add_vfsmount_mark() */ + struct fsnotify_mark hn_mark; +#endif + struct inode *hn_aufs_inode; /* no get/put */ +#endif +} ____cacheline_aligned_in_smp; + +struct au_hinode { + struct inode *hi_inode; + aufs_bindex_t hi_id; +#ifdef CONFIG_AUFS_HNOTIFY + struct au_hnotify *hi_notify; +#endif + + /* reference to the copied-up whiteout with get/put */ + struct dentry *hi_whdentry; +}; + +struct au_vdir; +struct au_iinfo { + atomic_t ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_bstart, ii_bend; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; +} ____cacheline_aligned_in_smp; + +/* au_pin flags */ +#define AuPin_DI_LOCKED 1 +#define AuPin_MNT_WRITE (1 << 1) +#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) +#define au_fset_pin(flags, name) \ + do { (flags) |= AuPin_##name; } while (0) +#define au_fclr_pin(flags, name) \ + do { (flags) &= ~AuPin_##name; } while (0) + +struct au_pin { + /* input */ + struct dentry *dentry; + unsigned int udba; + unsigned char lsc_di, lsc_hi, flags; + aufs_bindex_t bindex; + + /* output */ + struct dentry *parent; + struct au_hinode *hdir; + struct vfsmount *h_mnt; +}; + +/* ---------------------------------------------------------------------- */ + +static inline struct au_iinfo *au_ii(struct inode *inode) +{ + struct au_iinfo *iinfo; + + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + if (iinfo->ii_hinode) + return iinfo; + return NULL; /* debugging bad_inode case */ +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +int au_refresh_hinode_self(struct inode *inode); +int au_refresh_hinode(struct inode *inode, struct dentry *dentry); +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino); +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); +int au_test_h_perm(struct inode *h_inode, int mask); +int au_test_h_perm_sio(struct inode *h_inode, int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) +{ +#ifdef CONFIG_AUFS_SHWH + return au_ino(sb, bindex, h_ino, d_type, ino); +#else + return 0; +#endif +} + +/* i_op.c */ +extern struct inode_operations aufs_iop, aufs_symlink_iop, aufs_dir_iop; + +/* au_wr_dir flags */ +#define AuWrDir_ADD_ENTRY 1 +#define AuWrDir_ISDIR (1 << 1) +#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) +#define au_fset_wrdir(flags, name) \ + do { (flags) |= AuWrDir_##name; } while (0) +#define au_fclr_wrdir(flags, name) \ + do { (flags) &= ~AuWrDir_##name; } while (0) + +struct au_wr_dir_args { + aufs_bindex_t force_btgt; + unsigned char flags; +}; +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args); + +struct dentry *au_pinned_h_parent(struct au_pin *pin); +void au_pin_init(struct au_pin *pin, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags); +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) __must_check; +int au_do_pin(struct au_pin *pin) __must_check; +void au_unpin(struct au_pin *pin); + +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev); +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname); +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_unlink(struct inode *dir, struct dentry *dentry); +int aufs_rmdir(struct inode *dir, struct dentry *dentry); + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); +int aufs_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct dentry *dentry); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); +void au_hiput(struct au_hinode *hinode); +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh); +unsigned int au_hi_flags(struct inode *inode, int isdir); + +/* hinode flags */ +#define AuHi_XINO 1 +#define AuHi_HNOTIFY (1 << 1) +#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) +#define au_fset_hi(flags, name) \ + do { (flags) |= AuHi_##name; } while (0) +#define au_fclr_hi(flags, name) \ + do { (flags) &= ~AuHi_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuHi_HNOTIFY +#define AuHi_HNOTIFY 0 +#endif + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + +void au_update_iigen(struct inode *inode); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_ii_realloc(struct au_iinfo *iinfo, int nbr); + +#ifdef CONFIG_PROC_FS +/* plink.c */ +int au_plink_maint(struct super_block *sb, int flags); +void au_plink_maint_leave(struct au_sbinfo *sbinfo); +int au_plink_maint_enter(struct super_block *sb); +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb); +#else +AuStubVoid(au_plink_list, struct super_block *sb) +#endif +int au_plink_test(struct inode *inode); +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +void au_plink_put(struct super_block *sb, int verbose); +void au_plink_clean(struct super_block *sb, int verbose); +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); +#else +AuStubInt0(au_plink_maint, struct super_block *sb, int flags); +AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); +AuStubInt0(au_plink_maint_enter, struct super_block *sb); +AuStubVoid(au_plink_list, struct super_block *sb); +AuStubInt0(au_plink_test, struct inode *inode); +AuStub(struct dentry *, au_plink_lkup, return NULL, + struct inode *inode, aufs_bindex_t bindex); +AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +AuStubVoid(au_plink_put, struct super_block *sb, int verbose); +AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); +AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); +#endif /* CONFIG_PROC_FS */ + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for iinfo */ +enum { + AuLsc_II_CHILD, /* child first */ + AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_II_CHILD3, /* copyup dirs */ + AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ + AuLsc_II_PARENT2, + AuLsc_II_PARENT3, /* copyup dirs */ + AuLsc_II_NEW_CHILD +}; + +/* + * ii_read_lock_child, ii_write_lock_child, + * ii_read_lock_child2, ii_write_lock_child2, + * ii_read_lock_child3, ii_write_lock_child3, + * ii_read_lock_parent, ii_write_lock_parent, + * ii_read_lock_parent2, ii_write_lock_parent2, + * ii_read_lock_parent3, ii_write_lock_parent3, + * ii_read_lock_new_child, ii_write_lock_new_child, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void ii_read_lock_##name(struct inode *i) \ +{ \ + au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuWriteLockFunc(name, lsc) \ +static inline void ii_write_lock_##name(struct inode *i) \ +{ \ + au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); +AuRWLockFuncs(new_child, NEW_CHILD); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +/* + * ii_read_unlock, ii_write_unlock, ii_downgrade_lock + */ +AuSimpleUnlockRwsemFuncs(ii, struct inode *i, &au_ii(i)->ii_rwsem); + +#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) +#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) +#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) + +/* ---------------------------------------------------------------------- */ + +static inline void au_icntnr_init(struct au_icntnr *c) +{ +#ifdef CONFIG_AUFS_DEBUG + c->vfs_inode.i_mode = 0; +#endif +} + +static inline unsigned int au_iigen(struct inode *inode) +{ + return atomic_read(&au_ii(inode)->ii_generation); +} + +/* tiny test for inode number */ +/* tmpfs generation is too rough */ +static inline int au_test_higen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + AuRwMustAnyLock(&iinfo->ii_rwsem); + return !(iinfo->ii_hsb1 == h_inode->i_sb + && iinfo->ii_higen == h_inode->i_generation); +} + +static inline void au_iigen_dec(struct inode *inode) +{ + atomic_dec(&au_ii(inode)->ii_generation); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(inode && au_iigen(inode) != sigen)) + err = -EIO; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_id; +} + +static inline aufs_bindex_t au_ibstart(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bstart; +} + +static inline aufs_bindex_t au_ibend(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bend; +} + +static inline struct au_vdir *au_ivdir(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_vdir; +} + +static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode[0 + bindex].hi_whdentry; +} + +static inline void au_set_ibstart(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bstart = bindex; +} + +static inline void au_set_ibend(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bend = bindex; +} + +static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_vdir = vdir; +} + +static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_hinode + bindex; +} + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_pinned_parent(struct au_pin *pin) +{ + if (pin) + return pin->parent; + return NULL; +} + +static inline struct inode *au_pinned_h_dir(struct au_pin *pin) +{ + if (pin && pin->hdir) + return pin->hdir->hi_inode; + return NULL; +} + +static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) +{ + if (pin) + return pin->hdir; + return NULL; +} + +static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) +{ + if (pin) + pin->dentry = dentry; +} + +static inline void au_pin_set_parent_lflag(struct au_pin *pin, + unsigned char lflag) +{ + if (pin) { + if (lflag) + au_fset_pin(pin->flags, DI_LOCKED); + else + au_fclr_pin(pin->flags, DI_LOCKED); + } +} + +static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) +{ + if (pin) { + dput(pin->parent); + pin->parent = dget(parent); + } +} + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +#ifdef CONFIG_AUFS_HNOTIFY +struct au_hnotify_op { + void (*ctl)(struct au_hinode *hinode, int do_set); + int (*alloc)(struct au_hinode *hinode); + + /* + * if it returns true, the the caller should free hinode->hi_notify, + * otherwise ->free() frees it. + */ + int (*free)(struct au_hinode *hinode, + struct au_hnotify *hn) __must_check; + + void (*fin)(void); + int (*init)(void); + + int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); + void (*fin_br)(struct au_branch *br); + int (*init_br)(struct au_branch *br, int perm); +}; + +/* hnotify.c */ +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); +void au_hn_free(struct au_hinode *hinode); +void au_hn_ctl(struct au_hinode *hinode, int do_set); +void au_hn_reset(struct inode *inode, unsigned int flags); +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode); +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); +int au_hnotify_init_br(struct au_branch *br, int perm); +void au_hnotify_fin_br(struct au_branch *br); +int __init au_hnotify_init(void); +void au_hnotify_fin(void); + +/* hfsnotify.c */ +extern const struct au_hnotify_op au_hnotify_op; + +static inline +void au_hn_init(struct au_hinode *hinode) +{ + hinode->hi_notify = NULL; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return hinode->hi_notify; +} + +#else +static inline +int au_hn_alloc(struct au_hinode *hinode __maybe_unused, + struct inode *inode __maybe_unused) +{ + return -EOPNOTSUPP; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return NULL; +} + +AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) +AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, + int do_set __maybe_unused) +AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, + unsigned int flags __maybe_unused) +AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, + struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) +AuStubInt0(__init au_hnotify_init, void) +AuStubVoid(au_hnotify_fin, void) +AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +static inline void au_hn_suspend(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/0); +} + +static inline void au_hn_resume(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/1); +} + +static inline void au_hn_imtx_lock(struct au_hinode *hdir) +{ + mutex_lock(&hdir->hi_inode->i_mutex); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + mutex_lock_nested(&hdir->hi_inode->i_mutex, sc); + au_hn_suspend(hdir); +} + +static inline void au_hn_imtx_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + mutex_unlock(&hdir->hi_inode->i_mutex); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dcsub.c +++ linux-3.5.0/ubuntu/aufs/dcsub.c @@ -0,0 +1,243 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for dentry cache + */ + +#include "aufs.h" + +static void au_dpage_free(struct au_dpage *dpage) +{ + int i; + struct dentry **p; + + p = dpage->dentries; + for (i = 0; i < dpage->ndentry; i++) + dput(*p++); + free_page((unsigned long)dpage->dentries); +} + +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) +{ + int err; + void *p; + + err = -ENOMEM; + dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); + if (unlikely(!dpages->dpages)) + goto out; + + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out_dpages; + + dpages->dpages[0].ndentry = 0; + dpages->dpages[0].dentries = p; + dpages->ndpage = 1; + return 0; /* success */ + +out_dpages: + kfree(dpages->dpages); +out: + return err; +} + +void au_dpages_free(struct au_dcsub_pages *dpages) +{ + int i; + struct au_dpage *p; + + p = dpages->dpages; + for (i = 0; i < dpages->ndpage; i++) + au_dpage_free(p++); + kfree(dpages->dpages); +} + +static int au_dpages_append(struct au_dcsub_pages *dpages, + struct dentry *dentry, gfp_t gfp) +{ + int err, sz; + struct au_dpage *dpage; + void *p; + + dpage = dpages->dpages + dpages->ndpage - 1; + sz = PAGE_SIZE / sizeof(dentry); + if (unlikely(dpage->ndentry >= sz)) { + AuLabel(new dpage); + err = -ENOMEM; + sz = dpages->ndpage * sizeof(*dpages->dpages); + p = au_kzrealloc(dpages->dpages, sz, + sz + sizeof(*dpages->dpages), gfp); + if (unlikely(!p)) + goto out; + + dpages->dpages = p; + dpage = dpages->dpages + dpages->ndpage; + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out; + + dpage->ndentry = 0; + dpage->dentries = p; + dpages->ndpage++; + } + + AuDebugOn(!dentry->d_count); + dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); + return 0; /* success */ + +out: + return err; +} + +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg) +{ + int err; + struct dentry *this_parent; + struct list_head *next; + struct super_block *sb = root->d_sb; + + err = 0; + write_seqlock(&rename_lock); + this_parent = root; + spin_lock(&this_parent->d_lock); +repeat: + next = this_parent->d_subdirs.next; +resume: + if (this_parent->d_sb == sb + && !IS_ROOT(this_parent) + && au_di(this_parent) + && this_parent->d_count + && (!test || test(this_parent, arg))) { + err = au_dpages_append(dpages, this_parent, GFP_ATOMIC); + if (unlikely(err)) + goto out; + } + + while (next != &this_parent->d_subdirs) { + struct list_head *tmp = next; + struct dentry *dentry = list_entry(tmp, struct dentry, + d_u.d_child); + + next = tmp->next; + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); + if (dentry->d_count) { + if (!list_empty(&dentry->d_subdirs)) { + spin_unlock(&this_parent->d_lock); + spin_release(&dentry->d_lock.dep_map, 1, + _RET_IP_); + this_parent = dentry; + spin_acquire(&this_parent->d_lock.dep_map, 0, 1, + _RET_IP_); + goto repeat; + } + if (dentry->d_sb == sb + && au_di(dentry) + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, + GFP_ATOMIC); + } + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + } + + if (this_parent != root) { + struct dentry *tmp; + struct dentry *child; + + tmp = this_parent->d_parent; + rcu_read_lock(); + spin_unlock(&this_parent->d_lock); + child = this_parent; + this_parent = tmp; + spin_lock(&this_parent->d_lock); + rcu_read_unlock(); + next = child->d_u.d_child.next; + goto resume; + } + +out: + spin_unlock(&this_parent->d_lock); + write_sequnlock(&rename_lock); + return err; +} + +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg) +{ + int err; + + err = 0; + write_seqlock(&rename_lock); + spin_lock(&dentry->d_lock); + if (do_include + && dentry->d_count + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + + /* + * vfsmount_lock is unnecessary since this is a traverse in a single + * mount + */ + while (!IS_ROOT(dentry)) { + dentry = dentry->d_parent; /* rename_lock is locked */ + spin_lock(&dentry->d_lock); + if (dentry->d_count + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + break; + } + +out: + write_sequnlock(&rename_lock); + return err; +} + +static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) +{ + return au_di(dentry) && dentry->d_sb == arg; +} + +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include) +{ + return au_dcsub_pages_rev(dpages, dentry, do_include, + au_dcsub_dpages_aufs, dentry->d_sb); +} + +int au_test_subdir(struct dentry *d1, struct dentry *d2) +{ + struct path path[2] = { + { + .dentry = d1 + }, + { + .dentry = d2 + } + }; + + return path_is_under(path + 0, path + 1); +} --- linux-3.5.0.orig/ubuntu/aufs/xino.c +++ linux-3.5.0/ubuntu/aufs/xino.c @@ -0,0 +1,1264 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * external inode number translation table and bitmap + */ + +#include +#include "aufs.h" + +/* todo: unnecessary to support mmap_sem since kernel-space? */ +ssize_t xino_fread(au_readf_t func, struct file *file, void *kbuf, size_t size, + loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (err == -EAGAIN || err == -EINTR); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_access(file->f_dentry); +#endif + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static ssize_t do_xino_fwrite(au_writef_t func, struct file *file, void *kbuf, + size_t size, loff_t *pos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + do { + /* todo: signal_pending? */ + err = func(file, buf.u, size, pos); + } while (err == -EAGAIN || err == -EINTR); + set_fs(oldfs); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + au_writef_t func; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->func, a->file, a->buf, a->size, a->pos); +} + +ssize_t xino_fwrite(au_writef_t func, struct file *file, void *buf, size_t size, + loff_t *pos) +{ + ssize_t err; + + /* todo: signal block and no wkq? */ + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(func, file, buf, size, pos); + lockdep_on(); + } else { + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .func = func, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a new xinofile at the same place/path as @base_file. + */ +struct file *au_xino_create2(struct file *base_file, struct file *copy_src) +{ + struct file *file; + struct dentry *base, *parent; + struct inode *dir; + struct qstr *name; + struct path path; + int err; + + base = base_file->f_dentry; + parent = base->d_parent; /* dir inode is locked */ + dir = parent->d_inode; + IMustLock(dir); + + file = ERR_PTR(-EINVAL); + name = &base->d_name; + path.dentry = vfsub_lookup_one_len(name->name, parent, name->len); + if (IS_ERR(path.dentry)) { + file = (void *)path.dentry; + pr_err("%.*s lookup err %ld\n", + AuLNPair(name), PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(dir, path.dentry, S_IRUGO | S_IWUGO, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%.*s create err %d\n", AuLNPair(name), err); + goto out_dput; + } + + path.mnt = base_file->f_vfsmnt; + file = vfsub_dentry_open(&path, + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */); + if (IS_ERR(file)) { + pr_err("%.*s open err %ld\n", AuLNPair(name), PTR_ERR(file)); + goto out_dput; + } + + err = vfsub_unlink(dir, &file->f_path, /*force*/0); + if (unlikely(err)) { + pr_err("%.*s unlink err %d\n", AuLNPair(name), err); + goto out_fput; + } + + if (copy_src) { + /* no one can touch copy_src xino */ + err = au_copy_file(file, copy_src, + i_size_read(copy_src->f_dentry->d_inode)); + if (unlikely(err)) { + pr_err("%.*s copy err %d\n", AuLNPair(name), err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + return file; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct mutex *mtx; +}; + +static void au_xino_lock_dir(struct super_block *sb, struct file *xino, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t brid, bindex; + + ldir->hdir = NULL; + bindex = -1; + brid = au_xino_brid(sb); + if (brid >= 0) + bindex = au_br_index(sb, brid); + if (bindex >= 0) { + ldir->hdir = au_hi(sb->s_root->d_inode, bindex); + au_hn_imtx_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + ldir->parent = dget_parent(xino->f_dentry); + ldir->mtx = &ldir->parent->d_inode->i_mutex; + mutex_lock_nested(ldir->mtx, AuLsc_I_PARENT); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_imtx_unlock(ldir->hdir); + else { + mutex_unlock(ldir->mtx); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* trucate xino files asynchronously */ + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + aufs_bindex_t bi, bend; + struct au_branch *br; + struct file *new_xino, *file; + struct super_block *h_sb; + struct au_xino_lock_dir ldir; + + err = -EINVAL; + bend = au_sbend(sb); + if (unlikely(bindex < 0 || bend < bindex)) + goto out; + br = au_sbr(sb, bindex); + file = br->br_xino.xi_file; + if (!file) + goto out; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + new_xino = au_xino_create2(file, file); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(new_xino); + if (IS_ERR(new_xino)) + goto out; + err = 0; + fput(file); + br->br_xino.xi_file = new_xino; + + h_sb = br->br_mnt->mnt_sb; + for (bi = 0; bi <= bend; bi++) { + if (unlikely(bi == bindex)) + continue; + br = au_sbr(sb, bi); + if (br->br_mnt->mnt_sb != h_sb) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = new_xino; + get_file(new_xino); + } + +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; +}; + +static void xino_do_trunc(void *_args) +{ + struct xino_do_trunc_args *args = _args; + struct super_block *sb; + struct au_branch *br; + struct inode *dir; + int err; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = sb->s_root->d_inode; + br = args->br; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex); + if (!err + && br->br_xino.xi_file->f_dentry->d_inode->i_blocks + >= br->br_xino_upper) + br->br_xino_upper += AUFS_XINO_TRUNC_STEP; + + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino_running); + atomic_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + kfree(args); +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + struct xino_do_trunc_args *args; + int wkq_err; + + if (br->br_xino.xi_file->f_dentry->d_inode->i_blocks + < br->br_xino_upper) + return; + + if (atomic_inc_return(&br->br_xino_running) > 1) + goto out; + + /* lock and kfree() will be called in trunc_xino() */ + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + goto out_args; + } + + atomic_inc(&br->br_count); + args->sb = sb; + args->br = br; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + atomic_dec(&br->br_count); + +out_args: + kfree(args); +out: + atomic_dec(&br->br_xino_running); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xino_do_write(au_writef_t write, struct file *file, + ino_t h_ino, ino_t ino) +{ + loff_t pos; + ssize_t sz; + + pos = h_ino; + if (unlikely(au_loff_max / sizeof(ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(ino); + sz = xino_fwrite(write, file, &ino, sizeof(ino), &pos); + if (sz == sizeof(ino)) + return 0; /* success */ + + AuIOErr("write failed (%zd)\n", sz); + return -EIO; +} + +/* + * write @ino to the xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * even if @ino is zero, it is written to the xinofile and means no entry. + * if the size of the xino file on a specific filesystem exceeds the watermark, + * try truncating it. + */ +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino) +{ + int err; + unsigned int mnt_flags; + struct au_branch *br; + + BUILD_BUG_ON(sizeof(long long) != sizeof(au_loff_max) + || ((loff_t)-1) > 0); + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + br = au_sbr(sb, bindex); + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (!err) { + if (au_opt_test(mnt_flags, TRUNC_XINO) + && au_test_fs_trunc_xino(br->br_mnt->mnt_sb)) + xino_try_trunc(sb, br); + return 0; /* success */ + } + + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +/* aufs inode number bitmap */ + +static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; +static ino_t xib_calc_ino(unsigned long pindex, int bit) +{ + ino_t ino; + + AuDebugOn(bit < 0 || page_bits <= bit); + ino = AUFS_FIRST_INO + pindex * page_bits + bit; + return ino; +} + +static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) +{ + AuDebugOn(ino < AUFS_FIRST_INO); + ino -= AUFS_FIRST_INO; + *pindex = ino / page_bits; + *bit = ino % page_bits; +} + +static int xib_pindex(struct super_block *sb, unsigned long pindex) +{ + int err; + loff_t pos; + ssize_t sz; + struct au_sbinfo *sbinfo; + struct file *xib; + unsigned long *p; + + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE + || !au_opt_test(sbinfo->si_mntflags, XINO)); + + if (pindex == sbinfo->si_xib_last_pindex) + return 0; + + xib = sbinfo->si_xib; + p = sbinfo->si_xib_buf; + pos = sbinfo->si_xib_last_pindex; + pos *= PAGE_SIZE; + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) + goto out; + + pos = pindex; + pos *= PAGE_SIZE; + if (i_size_read(xib->f_dentry->d_inode) >= pos + PAGE_SIZE) + sz = xino_fread(sbinfo->si_xread, xib, p, PAGE_SIZE, &pos); + else { + memset(p, 0, PAGE_SIZE); + sz = xino_fwrite(sbinfo->si_xwrite, xib, p, PAGE_SIZE, &pos); + } + if (sz == PAGE_SIZE) { + sbinfo->si_xib_last_pindex = pindex; + return 0; /* success */ + } + +out: + AuIOErr1("write failed (%zd)\n", sz); + err = sz; + if (sz >= 0) + err = -EIO; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_xib_clear_bit(struct inode *inode) +{ + int err, bit; + unsigned long pindex; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + AuDebugOn(inode->i_nlink); + + sb = inode->i_sb; + xib_calc_bit(inode->i_ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + err = xib_pindex(sb, pindex); + if (!err) { + clear_bit(bit, sbinfo->si_xib_buf); + sbinfo->si_xib_next_bit = bit; + } + mutex_unlock(&sbinfo->si_xib_mtx); +} + +/* for s_op->delete_inode() */ +void au_xino_delete_inode(struct inode *inode, const int unlinked) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, bi; + unsigned char try_trunc; + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + struct inode *h_inode; + struct au_branch *br; + au_writef_t xwrite; + + sb = inode->i_sb; + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO) + || inode->i_ino == AUFS_ROOT_INO) + return; + + if (unlinked) { + au_xigen_inc(inode); + au_xib_clear_bit(inode); + } + + iinfo = au_ii(inode); + if (!iinfo) + return; + + bindex = iinfo->ii_bstart; + if (bindex < 0) + return; + + xwrite = au_sbi(sb)->si_xwrite; + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + for (; bindex <= bend; bindex++, hi++) { + h_inode = hi->hi_inode; + if (!h_inode + || (!unlinked && h_inode->i_nlink)) + continue; + + /* inode may not be revalidated */ + bi = au_br_index(sb, hi->hi_id); + if (bi < 0) + continue; + + br = au_sbr(sb, bi); + err = au_xino_do_write(xwrite, br->br_xino.xi_file, + h_inode->i_ino, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(br->br_mnt->mnt_sb)) + xino_try_trunc(sb, br); + } +} + +/* get an unused inode number from bitmap */ +ino_t au_xino_new_ino(struct super_block *sb) +{ + ino_t ino; + unsigned long *p, pindex, ul, pend; + struct au_sbinfo *sbinfo; + struct file *file; + int free_bit, err; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return iunique(sb, AUFS_FIRST_INO); + + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + free_bit = sbinfo->si_xib_next_bit; + if (free_bit < page_bits && !test_bit(free_bit, p)) + goto out; /* success */ + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + + pindex = sbinfo->si_xib_last_pindex; + for (ul = pindex - 1; ul < ULONG_MAX; ul--) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + + file = sbinfo->si_xib; + pend = i_size_read(file->f_dentry->d_inode) / PAGE_SIZE; + for (ul = pindex + 1; ul <= pend; ul++) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + BUG(); + +out: + set_bit(free_bit, p); + sbinfo->si_xib_next_bit = free_bit + 1; + pindex = sbinfo->si_xib_last_pindex; + mutex_unlock(&sbinfo->si_xib_mtx); + ino = xib_calc_ino(pindex, free_bit); + AuDbg("i%lu\n", (unsigned long)ino); + return ino; +out_err: + mutex_unlock(&sbinfo->si_xib_mtx); + AuDbg("i0\n"); + return 0; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * if @ino does not exist and @do_new is true, get new one. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + loff_t pos; + struct file *file; + struct au_sbinfo *sbinfo; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + sbinfo = au_sbi(sb); + pos = h_ino; + if (unlikely(au_loff_max / sizeof(*ino) - 1 < pos)) { + AuIOErr1("too large hi%lu\n", (unsigned long)h_ino); + return -EFBIG; + } + pos *= sizeof(*ino); + + file = au_sbr(sb, bindex)->br_xino.xi_file; + if (i_size_read(file->f_dentry->d_inode) < pos + sizeof(*ino)) + return 0; /* no ino */ + + sz = xino_fread(sbinfo->si_xread, file, ino, sizeof(*ino), &pos); + if (sz == sizeof(*ino)) + return 0; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xino read error (%zd)\n", sz); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* create and set a new xino file */ + +struct file *au_xino_create(struct super_block *sb, char *fname, int silent) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir; + int err; + + /* + * at mount-time, and the xino file is the default path, + * hnotify is disabled so we have no notify events to ignore. + * when a user specified the xino, we cannot get au_hdir to be ignored. + */ + file = vfsub_filp_open(fname, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + S_IRUGO | S_IWUGO); + if (IS_ERR(file)) { + if (!silent) + pr_err("open %s(%ld)\n", fname, PTR_ERR(file)); + return file; + } + + /* keep file count */ + h_parent = dget_parent(file->f_dentry); + h_dir = h_parent->d_inode; + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = vfsub_unlink(h_dir, &file->f_path, /*force*/0); + mutex_unlock(&h_dir->i_mutex); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fname, err); + goto out; + } + + err = -EINVAL; + d = file->f_dentry; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fname); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fname, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bend. + */ +static int is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bend) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb = au_sbr_sb(sb, btgt); + + for (bindex = 0; bindex < btgt; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + for (bindex++; bindex <= bend; bindex++) + if (unlikely(tgt_sb == au_sbr_sb(sb, bindex))) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * initialize the xinofile for the specified branch @br + * at the place/path where @base_file indicates. + * test whether another branch is on the same filesystem or not, + * if @do_test is true. + */ +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct file *base_file, int do_test) +{ + int err; + ino_t ino; + aufs_bindex_t bend, bindex; + struct au_branch *shared_br, *b; + struct file *file; + struct super_block *tgt_sb; + + shared_br = NULL; + bend = au_sbend(sb); + if (do_test) { + tgt_sb = br->br_mnt->mnt_sb; + for (bindex = 0; bindex <= bend; bindex++) { + b = au_sbr(sb, bindex); + if (tgt_sb == b->br_mnt->mnt_sb) { + shared_br = b; + break; + } + } + } + + if (!shared_br || !shared_br->br_xino.xi_file) { + struct au_xino_lock_dir ldir; + + au_xino_lock_dir(sb, base_file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(base_file, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + br->br_xino.xi_file = file; + } else { + br->br_xino.xi_file = shared_br->br_xino.xi_file; + get_file(br->br_xino.xi_file); + } + + ino = AUFS_ROOT_INO; + err = au_xino_do_write(au_sbi(sb)->si_xwrite, br->br_xino.xi_file, + h_ino, ino); + if (unlikely(err)) { + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* trucate a xino bitmap file */ + +/* todo: slow */ +static int do_xib_restore(struct super_block *sb, struct file *file, void *page) +{ + int err, bit; + ssize_t sz; + unsigned long pindex; + loff_t pos, pend; + struct au_sbinfo *sbinfo; + au_readf_t func; + ino_t *ino; + unsigned long *p; + + err = 0; + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + func = sbinfo->si_xread; + pend = i_size_read(file->f_dentry->d_inode); + pos = 0; + while (pos < pend) { + sz = xino_fread(func, file, page, PAGE_SIZE, &pos); + err = sz; + if (unlikely(sz <= 0)) + goto out; + + err = 0; + for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { + if (unlikely(*ino < AUFS_FIRST_INO)) + continue; + + xib_calc_bit(*ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + err = xib_pindex(sb, pindex); + if (!err) + set_bit(bit, p); + else + goto out; + } + } + +out: + return err; +} + +static int xib_restore(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bend; + void *page; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) + err = do_xib_restore + (sb, au_sbr(sb, bindex)->br_xino.xi_file, page); + else + AuDbg("b%d\n", bindex); + free_page((unsigned long)page); + +out: + return err; +} + +int au_xib_trunc(struct super_block *sb) +{ + int err; + ssize_t sz; + loff_t pos; + struct au_xino_lock_dir ldir; + struct au_sbinfo *sbinfo; + unsigned long *p; + struct file *file; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + if (!au_opt_test(sbinfo->si_mntflags, XINO)) + goto out; + + file = sbinfo->si_xib; + if (i_size_read(file->f_dentry->d_inode) <= PAGE_SIZE) + goto out; + + au_xino_lock_dir(sb, file, &ldir); + /* mnt_want_write() is unnecessary here */ + file = au_xino_create2(sbinfo->si_xib, NULL); + au_xino_unlock_dir(&ldir); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + + p = sbinfo->si_xib_buf; + memset(p, 0, PAGE_SIZE); + pos = 0; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) { + err = sz; + AuIOErr("err %d\n", err); + if (sz >= 0) + err = -EIO; + goto out; + } + + mutex_lock(&sbinfo->si_xib_mtx); + /* mnt_want_write() is unnecessary here */ + err = xib_restore(sb); + mutex_unlock(&sbinfo->si_xib_mtx); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * xino mount option handlers + */ +static au_readf_t find_readf(struct file *h_file) +{ + const struct file_operations *fop = h_file->f_op; + + if (fop) { + if (fop->read) + return fop->read; + if (fop->aio_read) + return do_sync_read; + } + return ERR_PTR(-ENOSYS); +} + +static au_writef_t find_writef(struct file *h_file) +{ + const struct file_operations *fop = h_file->f_op; + + if (fop) { + if (fop->write) + return fop->write; + if (fop->aio_write) + return do_sync_write; + } + return ERR_PTR(-ENOSYS); +} + +/* xino bitmap */ +static void xino_clear_xib(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct file *base) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xib); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + sbinfo->si_xread = find_readf(file); + sbinfo->si_xwrite = find_writef(file); + + err = -ENOMEM; + if (!sbinfo->si_xib_buf) + sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!sbinfo->si_xib_buf)) + goto out_unset; + + sbinfo->si_xib_last_pindex = 0; + sbinfo->si_xib_next_bit = 0; + if (i_size_read(file->f_dentry->d_inode) < PAGE_SIZE) { + pos = 0; + err = xino_fwrite(sbinfo->si_xwrite, file, sbinfo->si_xib_buf, + PAGE_SIZE, &pos); + if (unlikely(err != PAGE_SIZE)) + goto out_free; + } + err = 0; + goto out; /* success */ + +out_free: + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; + if (err >= 0) + err = -EIO; +out_unset: + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + sbinfo->si_xread = NULL; + sbinfo->si_xwrite = NULL; +out: + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bend; + struct au_branch *br; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (!br || !br->br_xino.xi_file) + continue; + + fput(br->br_xino.xi_file); + br->br_xino.xi_file = NULL; + } +} + +static int au_xino_set_br(struct super_block *sb, struct file *base) +{ + int err; + ino_t ino; + aufs_bindex_t bindex, bend, bshared; + struct { + struct file *old, *new; + } *fpair, *p; + struct au_branch *br; + struct inode *inode; + au_writef_t writef; + + SiMustWriteLock(sb); + + err = -ENOMEM; + bend = au_sbend(sb); + fpair = kcalloc(bend + 1, sizeof(*fpair), GFP_NOFS); + if (unlikely(!fpair)) + goto out; + + inode = sb->s_root->d_inode; + ino = AUFS_ROOT_INO; + writef = au_sbi(sb)->si_xwrite; + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + bshared = is_sb_shared(sb, bindex, bindex - 1); + if (bshared >= 0) { + /* shared xino */ + *p = fpair[bshared]; + get_file(p->new); + } + + if (!p->new) { + /* new xino */ + p->old = br->br_xino.xi_file; + p->new = au_xino_create2(base, br->br_xino.xi_file); + err = PTR_ERR(p->new); + if (IS_ERR(p->new)) { + p->new = NULL; + goto out_pair; + } + } + + err = au_xino_do_write(writef, p->new, + au_h_iptr(inode, bindex)->i_ino, ino); + if (unlikely(err)) + goto out_pair; + } + + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) { + br = au_sbr(sb, bindex); + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + get_file(p->new); + br->br_xino.xi_file = p->new; + } + +out_pair: + for (bindex = 0, p = fpair; bindex <= bend; bindex++, p++) + if (p->new) + fput(p->new); + else + break; + kfree(fpair); +out: + return err; +} + +void au_xino_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + au_xigen_clr(sb); + xino_clear_xib(sb); + xino_clear_br(sb); + sbinfo = au_sbi(sb); + /* lvalue, do not call au_mntflags() */ + au_opt_clr(sbinfo->si_mntflags, XINO); +} + +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount) +{ + int err, skip; + struct dentry *parent, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct inode *dir; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + parent = dget_parent(xino->file->f_dentry); + if (remount) { + skip = 0; + dname = &xino->file->f_dentry->d_name; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_parent = dget_parent(cur_xino->f_dentry); + cur_name = &cur_xino->f_dentry->d_name; + skip = (cur_parent == parent + && dname->len == cur_name->len + && !memcmp(dname->name, cur_name->name, + dname->len)); + dput(cur_parent); + } + if (skip) + goto out; + } + + au_opt_set(sbinfo->si_mntflags, XINO); + dir = parent->d_inode; + mutex_lock_nested(&dir->i_mutex, AuLsc_I_PARENT); + /* mnt_want_write() is unnecessary here */ + err = au_xino_set_xib(sb, xino->file); + if (!err) + err = au_xigen_set(sb, xino->file); + if (!err) + err = au_xino_set_br(sb, xino->file); + mutex_unlock(&dir->i_mutex); + if (!err) + goto out; /* success */ + + /* reset all */ + AuIOErr("failed creating xino(%d).\n", err); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create a xinofile at the default place/path. + */ +struct file *au_xino_def(struct super_block *sb) +{ + struct file *file; + char *page, *p; + struct au_branch *br; + struct super_block *h_sb; + struct path path; + aufs_bindex_t bend, bindex, bwr; + + br = NULL; + bend = au_sbend(sb); + bwr = -1; + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm) + && !au_test_fs_bad_xino(br->br_mnt->mnt_sb)) { + bwr = bindex; + break; + } + } + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); + page = __getname_gfp(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = br->br_mnt; + path.dentry = au_h_dptr(sb->s_root, bwr); + p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); + file = (void *)p; + if (!IS_ERR(p)) { + strcat(p, "/" AUFS_XINO_FNAME); + AuDbg("%s\n", p); + file = au_xino_create(sb, p, /*silent*/0); + if (!IS_ERR(file)) + au_xino_brid_set(sb, br->br_id); + } + __putname(page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0); + if (IS_ERR(file)) + goto out; + h_sb = file->f_dentry->d_sb; + if (unlikely(au_test_fs_bad_xino(h_sb))) { + pr_err("xino doesn't support %s(%s)\n", + AUFS_XINO_DEFPATH, au_sbtype(h_sb)); + fput(file); + file = ERR_PTR(-EINVAL); + } + if (!IS_ERR(file)) + au_xino_brid_set(sb, -1); + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err < 0)) + goto out; + + err = 0; +#define Deleted "\\040(deleted)" + seq->count -= sizeof(Deleted) - 1; + AuDebugOn(memcmp(seq->buf + seq->count, Deleted, + sizeof(Deleted) - 1)); +#undef Deleted + +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/procfs.c +++ linux-3.5.0/ubuntu/aufs/procfs.c @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * procfs interfaces + */ + +#include +#include "aufs.h" + +static int au_procfs_plm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) { + au_plink_maint_leave(sbinfo); + kobject_put(&sbinfo->si_kobj); + } + + return 0; +} + +static void au_procfs_plm_write_clean(struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) + au_plink_clean(sbinfo->si_sb, /*verbose*/0); +} + +static int au_procfs_plm_write_si(struct file *file, unsigned long id) +{ + int err; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + spin_lock(&au_sbilist.spin); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + if (id == sysaufs_si_id(sbinfo)) { + kobject_get(&sbinfo->si_kobj); + sb = sbinfo->si_sb; + break; + } + spin_unlock(&au_sbilist.spin); + + err = -EINVAL; + if (unlikely(!sb)) + goto out; + + err = au_plink_maint_enter(sb); + if (!err) + /* keep kobject_get() */ + file->private_data = sbinfo; + else + kobject_put(&sbinfo->si_kobj); +out: + return err; +} + +/* + * Accept a valid "si=xxxx" only. + * Once it is accepted successfully, accept "clean" too. + */ +static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + unsigned long id; + /* last newline is allowed */ + char buf[3 + sizeof(unsigned long) * 2 + 1]; + + err = -EACCES; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(count > sizeof(buf))) + goto out; + + err = copy_from_user(buf, ubuf, count); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + buf[count] = 0; + + err = -EINVAL; + if (!strcmp("clean", buf)) { + au_procfs_plm_write_clean(file); + goto out_success; + } else if (unlikely(strncmp("si=", buf, 3))) + goto out; + + err = kstrtoul(buf + 3, 16, &id); + if (unlikely(err)) + goto out; + + err = au_procfs_plm_write_si(file, id); + if (unlikely(err)) + goto out; + +out_success: + err = count; /* success */ +out: + return err; +} + +static const struct file_operations au_procfs_plm_fop = { + .write = au_procfs_plm_write, + .release = au_procfs_plm_release, + .owner = THIS_MODULE +}; + +/* ---------------------------------------------------------------------- */ + +static struct proc_dir_entry *au_procfs_dir; + +void au_procfs_fin(void) +{ + remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +} + +int __init au_procfs_init(void) +{ + int err; + struct proc_dir_entry *entry; + + err = -ENOMEM; + au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); + if (unlikely(!au_procfs_dir)) + goto out; + + entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | S_IWUSR, + au_procfs_dir, &au_procfs_plm_fop); + if (unlikely(!entry)) + goto out_dir; + + err = 0; + goto out; /* success */ + + +out_dir: + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/dynop.c +++ linux-3.5.0/ubuntu/aufs/dynop.c @@ -0,0 +1,377 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dynamically customizable operations for regular files + */ + +#include "aufs.h" + +#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) + +/* + * How large will these lists be? + * Usually just a few elements, 20-30 at most for each, I guess. + */ +static struct au_splhead dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct au_splhead *spl, const void *h_op) +{ + struct au_dykey *key, *tmp; + struct list_head *head; + + key = NULL; + head = &spl->head; + rcu_read_lock(); + list_for_each_entry_rcu(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + key = tmp; + kref_get(&key->dk_kref); + break; + } + rcu_read_unlock(); + + return key; +} + +static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) +{ + struct au_dykey **k, *found; + const void *h_op = key->dk_op.dy_hop; + int i; + + found = NULL; + k = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else + break; + if (!found) { + spin_lock(&br->br_dykey_lock); + for (; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else { + k[i] = key; + break; + } + spin_unlock(&br->br_dykey_lock); + BUG_ON(i == AuBrDynOp); /* expand the array */ + } + + return found; +} + +/* kref_get() if @key is already added */ +static struct au_dykey *dy_gadd(struct au_splhead *spl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct list_head *head; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(tmp, head, dk_list) + if (tmp->dk_op.dy_hop == h_op) { + kref_get(&tmp->dk_kref); + found = tmp; + break; + } + if (!found) + list_add_rcu(&key->dk_list, head); + spin_unlock(&spl->spin); + + if (!found) + DyPrSym(key); + return found; +} + +static void dy_free_rcu(struct rcu_head *rcu) +{ + struct au_dykey *key; + + key = container_of(rcu, struct au_dykey, dk_rcu); + DyPrSym(key); + kfree(key); +} + +static void dy_free(struct kref *kref) +{ + struct au_dykey *key; + struct au_splhead *spl; + + key = container_of(kref, struct au_dykey, dk_kref); + spl = dynop + key->dk_op.dy_type; + au_spl_del_rcu(&key->dk_list, spl); + call_rcu(&key->dk_rcu, dy_free_rcu); +} + +void au_dy_put(struct au_dykey *key) +{ + kref_put(&key->dk_kref, dy_free); +} + +/* ---------------------------------------------------------------------- */ + +#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) + +#ifdef CONFIG_AUFS_DEBUG +#define DyDbgDeclare(cnt) unsigned int cnt = 0 +#define DyDbgInc(cnt) do { cnt++; } while (0) +#else +#define DyDbgDeclare(cnt) do {} while (0) +#define DyDbgInc(cnt) do {} while (0) +#endif + +#define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ + if (src.func) \ + dst.func = src.func; \ + else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ +} while (0) + +#define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ + dst.func = src.func; \ +} while (0) + +#define DySetAop(func) \ + DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) +#define DySetAopForce(func) \ + DySetForce(func, dyaop->da_op, aufs_aop) + +static void dy_aop(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused) +{ + struct au_dyaop *dyaop = (void *)key; + const struct address_space_operations *h_aop = h_op; + DyDbgDeclare(cnt); + + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); + DySetAopForce(readpage); /* force */ + DySetAop(writepages); + DySetAop(set_page_dirty); + DySetAop(readpages); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); + DySetAop(invalidatepage); + DySetAop(releasepage); + DySetAop(freepage); + /* these two will be changed according to an aufs mount option */ + DySetAop(direct_IO); + DySetAop(get_xip_mem); + DySetAop(migratepage); + DySetAop(launder_page); + DySetAop(is_partially_uptodate); + DySetAop(error_remove_page); + + DyDbgSize(cnt, *h_aop); + dyaop->da_get_xip_mem = h_aop->get_xip_mem; +} + +/* ---------------------------------------------------------------------- */ + +static void dy_bug(struct kref *kref) +{ + BUG(); +} + +static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) +{ + struct au_dykey *key, *old; + struct au_splhead *spl; + struct op { + unsigned int sz; + void (*set)(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused); + }; + static const struct op a[] = { + [AuDy_AOP] = { + .sz = sizeof(struct au_dyaop), + .set = dy_aop + } + }; + const struct op *p; + + spl = dynop + op->dy_type; + key = dy_gfind_get(spl, op->dy_hop); + if (key) + goto out_add; /* success */ + + p = a + op->dy_type; + key = kzalloc(p->sz, GFP_NOFS); + if (unlikely(!key)) { + key = ERR_PTR(-ENOMEM); + goto out; + } + + key->dk_op.dy_hop = op->dy_hop; + kref_init(&key->dk_kref); + p->set(key, op->dy_hop, br->br_mnt->mnt_sb); + old = dy_gadd(spl, key); + if (old) { + kfree(key); + key = old; + } + +out_add: + old = dy_bradd(br, key); + if (old) + /* its ref-count should never be zero here */ + kref_put(&key->dk_kref, dy_bug); +out: + return key; +} + +/* ---------------------------------------------------------------------- */ +/* + * Aufs prohibits O_DIRECT by defaut even if the branch supports it. + * This behaviour is neccessary to return an error from open(O_DIRECT) instead + * of the succeeding I/O. The dio mount option enables O_DIRECT and makes + * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. + * See the aufs manual in detail. + * + * To keep this behaviour, aufs has to set NULL to ->get_xip_mem too, and the + * performance of fadvise() and madvise() may be affected. + */ +static void dy_adx(struct au_dyaop *dyaop, int do_dx) +{ + if (!do_dx) { + dyaop->da_op.direct_IO = NULL; + dyaop->da_op.get_xip_mem = NULL; + } else { + dyaop->da_op.direct_IO = aufs_aop.direct_IO; + dyaop->da_op.get_xip_mem = aufs_aop.get_xip_mem; + if (!dyaop->da_get_xip_mem) + dyaop->da_op.get_xip_mem = NULL; + } +} + +static struct au_dyaop *dy_aget(struct au_branch *br, + const struct address_space_operations *h_aop, + int do_dx) +{ + struct au_dyaop *dyaop; + struct au_dynop op; + + op.dy_type = AuDy_AOP; + op.dy_haop = h_aop; + dyaop = (void *)dy_get(&op, br); + if (IS_ERR(dyaop)) + goto out; + dy_adx(dyaop, do_dx); + +out: + return dyaop; +} + +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode) +{ + int err, do_dx; + struct super_block *sb; + struct au_branch *br; + struct au_dyaop *dyaop; + + AuDebugOn(!S_ISREG(h_inode->i_mode)); + IiMustWriteLock(inode); + + sb = inode->i_sb; + br = au_sbr(sb, bindex); + do_dx = !!au_opt_test(au_mntflags(sb), DIO); + dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); + err = PTR_ERR(dyaop); + if (IS_ERR(dyaop)) + /* unnecessary to call dy_fput() */ + goto out; + + err = 0; + inode->i_mapping->a_ops = &dyaop->da_op; + +out: + return err; +} + +/* + * Is it safe to replace a_ops during the inode/file is in operation? + * Yes, I hope so. + */ +int au_dy_irefresh(struct inode *inode) +{ + int err; + aufs_bindex_t bstart; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + bstart = au_ibstart(inode); + h_inode = au_h_iptr(inode, bstart); + err = au_dy_iaop(inode, bstart, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct au_splhead *spl; + struct list_head *head; + struct au_dykey *key; + + spl = dynop + AuDy_AOP; + head = &spl->head; + spin_lock(&spl->spin); + list_for_each_entry(key, head, dk_list) + dy_adx((void *)key, do_dx); + spin_unlock(&spl->spin); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + /* make sure that 'struct au_dykey *' can be any type */ + BUILD_BUG_ON(offsetof(struct au_dyaop, da_key)); + + for (i = 0; i < AuDyLast; i++) + au_spl_init(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!list_empty(&dynop[i].head)); +} --- linux-3.5.0.orig/ubuntu/aufs/Makefile +++ linux-3.5.0/ubuntu/aufs/Makefile @@ -0,0 +1,42 @@ + +include ${src}/magic.mk +ifeq (${CONFIG_AUFS_FS},m) +include ${src}/conf.mk +endif +-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname +ifdef M +ccflags-y += -include ${M}/../../ubuntu/include/linux/aufs_type.h +else +ccflags-y += -include ${srctree}/ubuntu/include/linux/aufs_type.h +endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ + wkq.o vfsub.o dcsub.o \ + cpup.o whout.o wbr_policy.o \ + dinfo.o dentry.o \ + dynop.o \ + finfo.o file.o f_op.o \ + dir.o vdir.o \ + iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ + ioctl.o + +# all are boolean +aufs-$(CONFIG_PROC_FS) += procfs.o plink.o +aufs-$(CONFIG_SYSFS) += sysfs.o +aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o +aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o +aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o +aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o +aufs-$(CONFIG_AUFS_EXPORT) += export.o +aufs-$(CONFIG_AUFS_POLL) += poll.o +aufs-$(CONFIG_AUFS_RDU) += rdu.o +aufs-$(CONFIG_AUFS_SP_IATTR) += f_op_sp.o +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o --- linux-3.5.0.orig/ubuntu/aufs/inode.c +++ linux-3.5.0/ubuntu/aufs/inode.c @@ -0,0 +1,478 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode functions + */ + +#include "aufs.h" + +struct inode *au_igrab(struct inode *inode) +{ + if (inode) { + AuDebugOn(!atomic_read(&inode->i_count)); + ihold(inode); + } + return inode; +} + +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); + au_update_iigen(inode); + if (do_version) + inode->i_version++; +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_ii_realloc(iinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_bstart < 0); + p = iinfo->ii_hinode + iinfo->ii_bstart; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++, p++) { + if (!p->hi_inode) + continue; + + AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); + new_bindex = au_br_index(sb, p->hi_id); + if (new_bindex == bindex) + continue; + + if (new_bindex < 0) { + *update = 1; + au_hiput(p); + p->hi_inode = NULL; + continue; + } + + if (new_bindex < iinfo->ii_bstart) + iinfo->ii_bstart = new_bindex; + if (iinfo->ii_bend < new_bindex) + iinfo->ii_bend = new_bindex; + /* swap two lower inode, and loop again */ + q = iinfo->ii_hinode + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +int au_refresh_hinode_self(struct inode *inode) +{ + int err, update; + + err = au_ii_refresh(inode, &update); + if (!err) + au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); + + AuTraceErr(err); + return err; +} + +int au_refresh_hinode(struct inode *inode, struct dentry *dentry) +{ + int err, e, update; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bend; + unsigned char isdir; + struct au_hinode *p; + struct au_iinfo *iinfo; + + err = au_ii_refresh(inode, &update); + if (unlikely(err)) + goto out; + + update = 0; + iinfo = au_ii(inode); + p = iinfo->ii_hinode + iinfo->ii_bstart; + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + struct inode *h_i; + struct dentry *h_d; + + h_d = au_h_dptr(dentry, bindex); + if (!h_d || !h_d->d_inode) + continue; + + AuDebugOn(mode != (h_d->d_inode->i_mode & S_IFMT)); + if (iinfo->ii_bstart <= bindex && bindex <= iinfo->ii_bend) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_d->d_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_bstart) + iinfo->ii_bstart = bindex; + if (iinfo->ii_bend < bindex) + iinfo->ii_bend = bindex; + au_set_h_iptr(inode, bindex, au_igrab(h_d->d_inode), flags); + update = 1; + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + if (!err) + au_refresh_hinode_attr(inode, update && isdir); + +out: + AuTraceErr(err); + return err; +} + +static int set_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bstart, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + bstart = au_dbstart(dentry); + h_inode = au_h_dptr(dentry, bstart)->d_inode; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + btail = au_dbtail(dentry); + inode->i_op = &aufs_iop; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, bstart, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = &aufs_dir_iop; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_symlink_iop; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = &aufs_iop; + au_init_special_fop(inode, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown file type 0%o\n", mode); + err = -EIO; + goto out; + } + + /* do not set hnotify for whiteouted dirs (SHWH mode) */ + flags = au_hi_flags(inode, isdir); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) + && au_ftest_hi(flags, HNOTIFY) + && dentry->d_name.len > AUFS_WH_PFX_LEN + && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) + au_fclr_hi(flags, HNOTIFY); + iinfo = au_ii(inode); + iinfo->ii_bstart = bstart; + iinfo->ii_bend = btail; + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + au_set_h_iptr(inode, bindex, + au_igrab(h_dentry->d_inode), flags); + } + au_cpup_attr_all(inode, /*force*/1); + +out: + return err; +} + +/* + * successful returns with iinfo write_locked + * minus: errno + * zero: success, matched + * plus: no error, but unmatched + */ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, bend; + struct inode *h_inode, *h_dinode; + + /* + * before this function, if aufs got any iinfo lock, it must be only + * one, the parent dir. + * it can happen by UDBA and the obsoleted inode number. + */ + err = -EIO; + if (unlikely(inode->i_ino == parent_ino(dentry))) + goto out; + + err = 1; + ii_write_lock_new_child(inode); + h_dinode = au_h_dptr(dentry, au_dbstart(dentry))->d_inode; + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode && h_inode == h_dinode) { + err = 0; + if (au_iigen_test(inode, au_digen(dentry))) + err = au_refresh_hinode(inode, dentry); + break; + } + } + + if (unlikely(err)) + ii_write_unlock(inode); +out: + return err; +} + +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino) +{ + int err; + struct mutex *mtx; + + /* prevent hardlinked inode number from race condition */ + mtx = NULL; + if (d_type != DT_DIR) { + mtx = &au_sbr(sb, bindex)->br_xino.xi_nondir_mtx; + mutex_lock(mtx); + } + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out; + } + +out: + if (mtx) + mutex_unlock(mtx); + return err; +} + +/* successful returns with iinfo write_locked */ +/* todo: return with unlocked? */ +struct inode *au_new_inode(struct dentry *dentry, int must_new) +{ + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct super_block *sb; + struct mutex *mtx; + ino_t h_ino, ino; + int err, lc_idx; + aufs_bindex_t bstart; + + sb = dentry->d_sb; + bstart = au_dbstart(dentry); + h_dentry = au_h_dptr(dentry, bstart); + h_inode = h_dentry->d_inode; + h_ino = h_inode->i_ino; + + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + mtx = NULL; + if (!S_ISDIR(h_inode->i_mode)) + mtx = &au_sbr(sb, bstart)->br_xino.xi_nondir_mtx; + +new_ino: + if (mtx) + mutex_lock(mtx); + err = au_xino_read(sb, bstart, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + lc_idx = AuLcNonDir_IIINFO; + if (S_ISLNK(h_inode->i_mode)) + lc_idx = AuLcSymlink_IIINFO; + else if (S_ISDIR(h_inode->i_mode)) + lc_idx = AuLcDir_IIINFO; + au_rw_class(&au_ii(inode)->ii_rwsem, au_lc_key + lc_idx); + + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out; /* success */ + } + + /* + * iget_failed() calls iput(), but we need to call + * ii_write_unlock() after iget_failed(). so dirty hack for + * i_count. + */ + atomic_inc(&inode->i_count); + iget_failed(inode); + ii_write_unlock(inode); + au_xino_write(sb, bstart, h_ino, /*ino*/0); + /* ignore this error */ + goto out_iput; + } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { + /* + * horrible race condition between lookup, readdir and copyup + * (or something). + */ + if (mtx) + mutex_unlock(mtx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + mtx = NULL; + goto out_iput; + } + + if (!err) { + mtx = NULL; + goto out; /* success */ + } else if (mtx) + mutex_lock(mtx); + } + + if (unlikely(au_test_fs_unique_ino(h_dentry->d_inode))) + AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," + " b%d, %s, %.*s, hi%lu, i%lu.\n", + bstart, au_sbtype(h_dentry->d_sb), AuDLNPair(dentry), + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, bstart, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (mtx) + mutex_unlock(mtx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out: + if (mtx) + mutex_unlock(mtx); + return inode; +} + +/* ---------------------------------------------------------------------- */ + +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode) +{ + int err; + + err = au_br_rdonly(au_sbr(sb, bindex)); + + /* pseudo-link after flushed may happen out of bounds */ + if (!err + && inode + && au_ibstart(inode) <= bindex + && bindex <= au_ibend(inode)) { + /* + * permission check is unnecessary since vfsub routine + * will be called later + */ + struct inode *hi = au_h_iptr(inode, bindex); + if (hi) + err = IS_IMMUTABLE(hi) ? -EROFS : 0; + } + + return err; +} + +int au_test_h_perm(struct inode *h_inode, int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; + return inode_permission(h_inode, mask); +} + +int au_test_h_perm_sio(struct inode *h_inode, int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_inode, mask); +} --- linux-3.5.0.orig/ubuntu/aufs/dir.c +++ linux-3.5.0/ubuntu/aufs/dir.c @@ -0,0 +1,636 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * directory operations + */ + +#include +#include "aufs.h" + +void au_add_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink += h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink += 2; + /* 0 can happen in revaliding */ + set_nlink(dir, nlink); +} + +void au_sub_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink -= h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink -= 2; + /* nlink == 0 means the branch-fs is broken */ + set_nlink(dir, nlink); +} + +loff_t au_dir_size(struct file *file, struct dentry *dentry) +{ + loff_t sz; + aufs_bindex_t bindex, bend; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!file->f_dentry); + AuDebugOn(!file->f_dentry->d_inode); + AuDebugOn(!S_ISDIR(file->f_dentry->d_inode->i_mode)); + + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file + && h_file->f_dentry + && h_file->f_dentry->d_inode) + sz += i_size_read(h_file->f_dentry->d_inode); + } + } else { + AuDebugOn(!dentry); + AuDebugOn(!dentry->d_inode); + AuDebugOn(!S_ISDIR(dentry->d_inode->i_mode)); + + bend = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); + bindex <= bend && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) + sz += i_size_read(h_dentry->d_inode); + } + } + if (sz < KMALLOC_MAX_SIZE) + sz = roundup_pow_of_two(sz); + if (sz > KMALLOC_MAX_SIZE) + sz = KMALLOC_MAX_SIZE; + else if (sz < NAME_MAX) { + BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); + sz = AUFS_RDBLK_DEF; + } + return sz; +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, bstart; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_dentry; + bstart = au_dbstart(dentry); + for (bindex = au_fbstart(file); bindex < bstart; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, bstart); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbend_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbend_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_file = au_hf_dir(file, bindex); + if (h_file) + continue; + + h_file = au_h_open(dentry, bindex, flags, file); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* close all? */ + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + err = 0; + +out: + return err; +} + +static int do_open_dir(struct file *file, int flags) +{ + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + FiMustWriteLock(file); + + dentry = file->f_dentry; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out; + + file->f_version = dentry->d_inode->i_version; + bindex = au_dbstart(dentry); + au_set_fbstart(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbend_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + h_file = au_h_open(dentry, bindex, flags, file); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + break; + } + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + if (!err) + return 0; /* success */ + + /* close all */ + for (bindex = au_fbstart(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbstart(file, -1); + au_set_fbend_dir(file, -1); + +out: + return err; +} + +static int aufs_open_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_fidir *fidir; + + err = -ENOMEM; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fidir = au_fidir_alloc(sb); + if (fidir) { + err = au_do_open(file, do_open_dir, fidir); + if (unlikely(err)) + kfree(fidir); + } + si_read_unlock(sb); + return err; +} + +static int aufs_release_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + struct au_vdir *vdir_cache; + struct au_finfo *finfo; + struct au_fidir *fidir; + aufs_bindex_t bindex, bend; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + /* remove me from sb->s_files */ + file_sb_list_del(file); + + vdir_cache = fidir->fd_vdir_cache; /* lock-free */ + if (vdir_cache) + au_vdir_free(vdir_cache); + + bindex = finfo->fi_btop; + if (bindex >= 0) { + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bend = fidir->fd_bbot; + for (; bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + kfree(fidir); + finfo->fi_hdir = NULL; + } + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_dir(struct file *file, fl_owner_t id) +{ + int err; + aufs_bindex_t bindex, bend; + struct file *h_file; + + err = 0; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file) + err = vfsub_flush(h_file, id); + } + return err; +} + +static int aufs_flush_dir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_dir); +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = dentry->d_inode; + IMustLock(inode); + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= bend; bindex++) { + struct path h_path; + + if (au_test_ro(sb, bindex, inode)) + continue; + h_path.dentry = au_h_dptr(dentry, bindex); + if (!h_path.dentry) + continue; + + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_fsync(NULL, &h_path, datasync); + } + + return err; +} + +static int au_do_fsync_dir(struct file *file, int datasync) +{ + int err; + aufs_bindex_t bend, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + + sb = file->f_dentry->d_sb; + inode = file->f_dentry->d_inode; + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); !err && bindex <= bend; bindex++) { + h_file = au_hf_dir(file, bindex); + if (!h_file || au_test_ro(sb, bindex, inode)) + continue; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + } + +out: + return err; +} + +/* + * @file may be NULL + */ +static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct mutex *mtx; + + err = 0; + dentry = file->f_dentry; + mtx = &dentry->d_inode->i_mutex; + mutex_lock(mtx); + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (file) + err = au_do_fsync_dir(file, datasync); + else { + di_write_lock_child(dentry); + err = au_do_fsync_dir_no_file(dentry, datasync); + } + au_cpup_attr_timesizes(dentry->d_inode); + di_write_unlock(dentry); + if (file) + fi_write_unlock(file); + + si_read_unlock(sb); + mutex_unlock(mtx); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_readdir(struct file *file, void *dirent, filldir_t filldir) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + dentry = file->f_dentry; + inode = dentry->d_inode; + IMustLock(inode); + + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (!err) + err = au_vdir_init(file); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + + h_inode = au_h_iptr(inode, au_ibstart(inode)); + if (!au_test_nfsd()) { + err = au_vdir_fill_de(file, dirent, filldir); + fsstack_copy_attr_atime(inode, h_inode); + } else { + /* + * nfsd filldir may call lookup_one_len(), vfs_getattr(), + * encode_fh() and others. + */ + atomic_inc(&h_inode->i_count); + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); + err = au_vdir_fill_de(file, dirent, filldir); + fsstack_copy_attr_atime(inode, h_inode); + fi_write_unlock(file); + iput(h_inode); + + AuTraceErr(err); + return err; + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuTestEmpty_WHONLY 1 +#define AuTestEmpty_CALLED (1 << 1) +#define AuTestEmpty_SHWH (1 << 2) +#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) +#define au_fset_testempty(flags, name) \ + do { (flags) |= AuTestEmpty_##name; } while (0) +#define au_fclr_testempty(flags, name) \ + do { (flags) &= ~AuTestEmpty_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuTestEmpty_SHWH +#define AuTestEmpty_SHWH 0 +#endif + +struct test_empty_arg { + struct au_nhash *whlist; + unsigned int flags; + int err; + aufs_bindex_t bindex; +}; + +static int test_empty_cb(void *__arg, const char *__name, int namelen, + loff_t offset __maybe_unused, u64 ino, + unsigned int d_type) +{ + struct test_empty_arg *arg = __arg; + char *name = (void *)__name; + + arg->err = 0; + au_fset_testempty(arg->flags, CALLED); + /* smp_mb(); */ + if (name[0] == '.' + && (namelen == 1 || (name[1] == '.' && namelen == 2))) + goto out; /* success */ + + if (namelen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (au_ftest_testempty(arg->flags, WHONLY) + && !au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = -ENOTEMPTY; + goto out; + } + + name += AUFS_WH_PFX_LEN; + namelen -= AUFS_WH_PFX_LEN; + if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = au_nhash_append_wh + (arg->whlist, name, namelen, ino, d_type, arg->bindex, + au_ftest_testempty(arg->flags, SHWH)); + +out: + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err; + struct file *h_file; + + h_file = au_h_open(dentry, arg->bindex, + O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, + /*file*/NULL); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && !h_file->f_dentry->d_inode->i_nlink) + goto out_put; + + do { + arg->err = 0; + au_fclr_testempty(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(h_file, test_empty_cb, arg); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_testempty(arg->flags, CALLED)); + +out_put: + fput(h_file); + au_sbr_put(dentry->d_sb, arg->bindex); +out: + return err; +} + +struct do_test_empty_args { + int *errp; + struct dentry *dentry; + struct test_empty_arg *arg; +}; + +static void call_do_test_empty(void *args) +{ + struct do_test_empty_args *a = args; + *a->errp = do_test_empty(a->dentry, a->arg); +} + +static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; + + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = h_dentry->d_inode; + /* todo: i_mode changes anytime? */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_inode, MAY_EXEC | MAY_READ); + mutex_unlock(&h_inode->i_mutex); + if (!err) + err = do_test_empty(dentry, arg); + else { + struct do_test_empty_args args = { + .errp = &err, + .dentry = dentry, + .arg = arg + }; + unsigned int flags = arg->flags; + + wkq_err = au_wkq_wait(call_do_test_empty, &args); + if (unlikely(wkq_err)) + err = wkq_err; + arg->flags = flags; + } + + return err; +} + +int au_test_empty_lower(struct dentry *dentry) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bindex, bstart, btail; + struct au_nhash whlist; + struct test_empty_arg arg; + + SiMustAnyLock(dentry->d_sb); + + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + arg.flags = 0; + arg.whlist = &whlist; + bstart = au_dbstart(dentry); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + arg.bindex = bstart; + err = do_test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = bstart + 1; !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) { + arg.bindex = bindex; + err = do_test_empty(dentry, &arg); + } + } + +out_whlist: + au_nhash_wh_free(&whlist); +out: + return err; +} + +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) +{ + int err; + struct test_empty_arg arg; + aufs_bindex_t bindex, btail; + + err = 0; + arg.whlist = whlist; + arg.flags = AuTestEmpty_WHONLY; + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + btail = au_dbtaildir(dentry); + for (bindex = au_dbstart(dentry); !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && h_dentry->d_inode) { + arg.bindex = bindex; + err = sio_test_empty(dentry, &arg); + } + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_dir_fop = { + .owner = THIS_MODULE, + .llseek = default_llseek, + .read = generic_read_dir, + .readdir = aufs_readdir, + .unlocked_ioctl = aufs_ioctl_dir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_dir, +#endif + .open = aufs_open_dir, + .release = aufs_release_dir, + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; --- linux-3.5.0.orig/ubuntu/aufs/dynop.h +++ linux-3.5.0/ubuntu/aufs/dynop.h @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dynamically customizable operations (for regular files only) + */ + +#ifndef __AUFS_DYNOP_H__ +#define __AUFS_DYNOP_H__ + +#ifdef __KERNEL__ + +#include "inode.h" + +enum {AuDy_AOP, AuDyLast}; + +struct au_dynop { + int dy_type; + union { + const void *dy_hop; + const struct address_space_operations *dy_haop; + }; +}; + +struct au_dykey { + union { + struct list_head dk_list; + struct rcu_head dk_rcu; + }; + struct au_dynop dk_op; + + /* + * during I am in the branch local array, kref is gotten. when the + * branch is removed, kref is put. + */ + struct kref dk_kref; +}; + +/* stop unioning since their sizes are very different from each other */ +struct au_dyaop { + struct au_dykey da_key; + struct address_space_operations da_op; /* not const */ + int (*da_get_xip_mem)(struct address_space *, pgoff_t, int, + void **, unsigned long *); +}; + +/* ---------------------------------------------------------------------- */ + +/* dynop.c */ +struct au_branch; +void au_dy_put(struct au_dykey *key); +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode); +int au_dy_irefresh(struct inode *inode); +void au_dy_arefresh(int do_dio); + +void __init au_dy_init(void); +void au_dy_fin(void); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/finfo.c +++ linux-3.5.0/ubuntu/aufs/finfo.c @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file private data + */ + +#include "aufs.h" + +void au_hfput(struct au_hfile *hf, struct file *file) +{ + /* todo: direct access f_flags */ + if (vfsub_file_flags(file) & __FMODE_EXEC) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + atomic_dec(&hf->hf_br->br_count); + hf->hf_br = NULL; +} + +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) +{ + struct au_finfo *finfo = au_fi(file); + struct au_hfile *hf; + struct au_fidir *fidir; + + fidir = finfo->fi_hdir; + if (!fidir) { + AuDebugOn(finfo->fi_btop != bindex); + hf = &finfo->fi_htop; + } else + hf = fidir->fd_hfile + bindex; + + if (hf && hf->hf_file) + au_hfput(hf, file); + if (val) { + FiMustWriteLock(file); + hf->hf_file = val; + hf->hf_br = au_sbr(file->f_dentry->d_sb, bindex); + } +} + +void au_update_figen(struct file *file) +{ + atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_dentry)); + /* smp_mb(); */ /* atomic_set */ +} + +/* ---------------------------------------------------------------------- */ + +struct au_fidir *au_fidir_alloc(struct super_block *sb) +{ + struct au_fidir *fidir; + int nbr; + + nbr = au_sbend(sb) + 1; + if (nbr < 2) + nbr = 2; /* initial allocate for 2 branches */ + fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; + fidir->fd_vdir_cache = NULL; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr) +{ + int err; + struct au_fidir *fidir, *p; + + AuRwMustWriteLock(&finfo->fi_rwsem); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + + err = -ENOMEM; + p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), + GFP_NOFS); + if (p) { + p->fd_nent = nbr; + finfo->fi_hdir = p; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_finfo_fin(struct file *file) +{ + struct au_finfo *finfo; + + au_nfiles_dec(file->f_dentry->d_sb); + + finfo = au_fi(file); + AuDebugOn(finfo->fi_hdir); + AuRwDestroy(&finfo->fi_rwsem); + au_cache_free_finfo(finfo); +} + +void au_fi_init_once(void *_finfo) +{ + struct au_finfo *finfo = _finfo; + static struct lock_class_key aufs_fi; + + au_rw_init(&finfo->fi_rwsem); + au_rw_class(&finfo->fi_rwsem, &aufs_fi); +} + +int au_finfo_init(struct file *file, struct au_fidir *fidir) +{ + int err, lc_idx; + struct au_finfo *finfo; + struct dentry *dentry; + + err = -ENOMEM; + dentry = file->f_dentry; + finfo = au_cache_alloc_finfo(); + if (unlikely(!finfo)) + goto out; + + err = 0; + au_nfiles_inc(dentry->d_sb); + lc_idx = AuLcNonDir_FIINFO; + if (fidir) + lc_idx = AuLcDir_FIINFO; + au_rw_class(&finfo->fi_rwsem, au_lc_key + lc_idx); + au_rw_write_lock(&finfo->fi_rwsem); + finfo->fi_btop = -1; + finfo->fi_hdir = fidir; + atomic_set(&finfo->fi_generation, au_digen(dentry)); + /* smp_mb(); */ /* atomic_set */ + + file->private_data = finfo; + +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/module.c +++ linux-3.5.0/ubuntu/aufs/module.c @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * module global variables and operations + */ + +#include +#include +#include "aufs.h" + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp) +{ + if (new_sz <= nused) + return p; + + p = krealloc(p, new_sz, gfp); + if (p) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ + +/* + * aufs caches + */ +struct kmem_cache *au_cachep[AuCache_Last]; +static int __init au_cache_init(void) +{ + au_cachep[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cachep[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cachep[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cachep[AuCache_ICNTNR]) + au_cachep[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cachep[AuCache_FINFO]) + au_cachep[AuCache_VDIR] = AuCache(au_vdir); + if (au_cachep[AuCache_VDIR]) + au_cachep[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cachep[AuCache_DEHSTR]) + return 0; + + return -ENOMEM; +} + +static void au_cache_fin(void) +{ + int i; + + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) + if (au_cachep[i]) { + kmem_cache_destroy(au_cachep[i]); + au_cachep[i] = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct au_splhead au_sbilist; +#endif + +struct lock_class_key au_lc_key[AuLcKey_Last]; + +/* + * functions for module interface. + */ +MODULE_LICENSE("GPL"); +/* MODULE_LICENSE("GPL v2"); */ +MODULE_AUTHOR("Junjiro R. Okajima "); +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; +MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); +module_param_named(brs, sysaufs_brs, int, S_IRUGO); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + return seq_path(seq, path, au_esc_chars); +} + +/* ---------------------------------------------------------------------- */ + +static int __init aufs_init(void) +{ + int err, i; + char *p; + + p = au_esc_chars; + for (i = 1; i <= ' '; i++) + *p++ = i; + *p++ = '\\'; + *p++ = '\x7f'; + *p = 0; + + au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = au_procfs_init(); + if (unlikely(err)) + goto out_sysaufs; + err = au_wkq_init(); + if (unlikely(err)) + goto out_procfs; + err = au_loopback_init(); + if (unlikely(err)) + goto out_wkq; + err = au_hnotify_init(); + if (unlikely(err)) + goto out_loopback; + err = au_sysrq_init(); + if (unlikely(err)) + goto out_hin; + err = au_cache_init(); + if (unlikely(err)) + goto out_sysrq; + err = register_filesystem(&aufs_fs_type); + if (unlikely(err)) + goto out_cache; + /* since we define pr_fmt, call printk directly */ + printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); + goto out; /* success */ + +out_cache: + au_cache_fin(); +out_sysrq: + au_sysrq_fin(); +out_hin: + au_hnotify_fin(); +out_loopback: + au_loopback_fin(); +out_wkq: + au_wkq_fin(); +out_procfs: + au_procfs_fin(); +out_sysaufs: + sysaufs_fin(); + au_dy_fin(); +out: + return err; +} + +static void __exit aufs_exit(void) +{ + unregister_filesystem(&aufs_fs_type); + au_cache_fin(); + au_sysrq_fin(); + au_hnotify_fin(); + au_loopback_fin(); + au_wkq_fin(); + au_procfs_fin(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); --- linux-3.5.0.orig/ubuntu/aufs/file.c +++ linux-3.5.0/ubuntu/aufs/file.c @@ -0,0 +1,676 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * handling file/dir, and address_space operation + */ + +#ifdef CONFIG_AUFS_DEBUG +#include +#endif +#include +#include "aufs.h" + +/* drop flags for writing */ +unsigned int au_file_roflags(unsigned int flags) +{ + flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); + flags |= O_RDONLY | O_NOATIME; + return flags; +} + +/* common functions to regular file and dir */ +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file) +{ + struct file *h_file; + struct dentry *h_dentry; + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_path; + int err, exec_flag; + + /* a race condition can happen between open and unlink/rmdir */ + h_file = ERR_PTR(-ENOENT); + h_dentry = au_h_dptr(dentry, bindex); + if (au_test_nfsd() && !h_dentry) + goto out; + h_inode = h_dentry->d_inode; + if (au_test_nfsd() && !h_inode) + goto out; + spin_lock(&h_dentry->d_lock); + err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) + || !h_inode + /* || !dentry->d_inode->i_nlink */ + ; + spin_unlock(&h_dentry->d_lock); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_file = ERR_PTR(-EACCES); + exec_flag = flags & __FMODE_EXEC; + if (exec_flag && (br->br_mnt->mnt_flags & MNT_NOEXEC)) + goto out; + + /* drop flags for writing */ + if (au_test_ro(sb, bindex, dentry->d_inode)) + flags = au_file_roflags(flags); + flags &= ~O_CREAT; + atomic_inc(&br->br_count); + h_path.dentry = h_dentry; + h_path.mnt = br->br_mnt; + if (!au_special_file(h_inode->i_mode)) + h_file = vfsub_dentry_open(&h_path, flags); + else { + /* this block depends upon the configuration */ + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + si_read_unlock(sb); + h_file = vfsub_dentry_open(&h_path, flags); + si_noflush_read_lock(sb); + fi_write_lock(file); + di_read_lock_child(dentry, AuLock_IR); + } + if (IS_ERR(h_file)) + goto out_br; + + if (exec_flag) { + err = deny_write_access(h_file); + if (unlikely(err)) { + fput(h_file); + h_file = ERR_PTR(err); + goto out_br; + } + } + fsnotify_open(h_file); + goto out; /* success */ + +out_br: + atomic_dec(&br->br_count); +out: + return h_file; +} + +int au_do_open(struct file *file, int (*open)(struct file *file, int flags), + struct au_fidir *fidir) +{ + int err; + struct dentry *dentry; + + err = au_finfo_init(file, fidir); + if (unlikely(err)) + goto out; + + dentry = file->f_dentry; + di_read_lock_child(dentry, AuLock_IR); + err = open(file, vfsub_file_flags(file)); + di_read_unlock(dentry, AuLock_IR); + + fi_write_unlock(file); + if (unlikely(err)) { + au_fi(file)->fi_hdir = NULL; + au_finfo_fin(file); + } + +out: + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t bstart; + struct dentry *dentry; + struct file *h_file, *h_file_tmp; + + dentry = file->f_dentry; + AuDebugOn(au_special_file(dentry->d_inode->i_mode)); + bstart = au_dbstart(dentry); + h_file_tmp = NULL; + if (au_fbstart(file) == bstart) { + h_file = au_hf_top(file); + if (file->f_mode == h_file->f_mode) + return 0; /* success */ + h_file_tmp = h_file; + get_file(h_file_tmp); + au_set_h_fptr(file, bstart, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + AuDebugOn(au_fbstart(file) < bstart); + + h_file = au_h_open(dentry, bstart, vfsub_file_flags(file) & ~O_TRUNC, + file); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* todo: close all? */ + + err = 0; + au_set_fbstart(file, bstart); + au_set_h_fptr(file, bstart, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) + fput(h_file_tmp); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t bstart; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bstart = dinfo->di_bstart; + dinfo->di_bstart = btgt; + hdp = dinfo->di_hdentry; + h_dentry = hdp[0 + btgt].hd_dentry; + hdp[0 + btgt].hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp[0 + btgt].hd_dentry = h_dentry; + dinfo->di_bstart = bstart; + + return err; +} + +static int au_ready_to_write_wh(struct file *file, loff_t len, + aufs_bindex_t bcpup) +{ + int err; + struct inode *inode, *h_inode; + struct dentry *dentry, *h_dentry, *hi_wh; + + dentry = file->f_dentry; + au_update_dbstart(dentry); + inode = dentry->d_inode; + h_inode = NULL; + if (au_dbstart(dentry) <= bcpup && au_dbend(dentry) >= bcpup) { + h_dentry = au_h_dptr(dentry, bcpup); + if (h_dentry) + h_inode = h_dentry->d_inode; + } + hi_wh = au_hi_wh(inode, bcpup); + if (!hi_wh && !h_inode) + err = au_sio_cpup_wh(dentry, bcpup, len, file); + else + /* already copied-up after unlink */ + err = au_reopen_wh(file, bcpup, hi_wh); + + if (!err + && inode->i_nlink > 1 + && au_opt_test(au_mntflags(dentry->d_sb), PLINK)) + au_plink_append(inode, bcpup, au_h_dptr(dentry, bcpup)); + + return err; +} + +/* + * prepare the @file for writing. + */ +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) +{ + int err; + aufs_bindex_t bstart, bcpup, dbstart; + struct dentry *dentry, *parent, *h_dentry; + struct inode *h_inode, *inode; + struct super_block *sb; + struct file *h_file; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + AuDebugOn(au_special_file(inode->i_mode)); + bstart = au_fbstart(file); + err = au_test_ro(sb, bstart, inode); + if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { + err = au_pin(pin, dentry, bstart, AuOpt_UDBA_NONE, /*flags*/0); + goto out; + } + + /* need to cpup or reopen */ + parent = dget_parent(dentry); + di_write_lock_parent(parent); + err = AuWbrCopyup(au_sbi(sb), dentry); + bcpup = err; + if (unlikely(err < 0)) + goto out_dgrade; + err = 0; + + if (!d_unhashed(dentry) && !au_h_dptr(parent, bcpup)) { + err = au_cpup_dirs(dentry, bcpup); + if (unlikely(err)) + goto out_dgrade; + } + + err = au_pin(pin, dentry, bcpup, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_dgrade; + + h_dentry = au_hf_top(file)->f_dentry; + h_inode = h_dentry->d_inode; + dbstart = au_dbstart(dentry); + if (dbstart <= bcpup) { + h_dentry = au_h_dptr(dentry, bcpup); + AuDebugOn(!h_dentry); + h_inode = h_dentry->d_inode; + AuDebugOn(!h_inode); + bstart = bcpup; + } + + if (dbstart <= bcpup /* just reopen */ + || !d_unhashed(dentry) /* copyup and reopen */ + ) { + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + h_file = au_h_open_pre(dentry, bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else { + di_downgrade_lock(parent, AuLock_IR); + if (dbstart > bcpup) + err = au_sio_cpup_simple(dentry, bcpup, len, + AuCpup_DTIME); + if (!err) + err = au_reopen_nondir(file); + } + mutex_unlock(&h_inode->i_mutex); + au_h_open_post(dentry, bstart, h_file); + } else { /* copyup as wh and reopen */ + /* + * since writable hfsplus branch is not supported, + * h_open_pre/post() are unnecessary. + */ + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + err = au_ready_to_write_wh(file, len, bcpup); + di_downgrade_lock(parent, AuLock_IR); + mutex_unlock(&h_inode->i_mutex); + } + + if (!err) { + au_pin_set_parent_lflag(pin, /*lflag*/0); + goto out_dput; /* success */ + } + au_unpin(pin); + goto out_unlock; + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_dput: + dput(parent); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct inode *inode; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + si_noflush_read_lock(sb); + fi_read_lock(file); + ii_read_lock_child(inode); + + err = flush(file, id); + au_cpup_attr_timesizes(inode); + + ii_read_unlock(inode); + fi_read_unlock(file); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_file_refresh_by_inode(struct file *file, int *need_reopen) +{ + int err; + aufs_bindex_t bstart; + struct au_pin pin; + struct au_finfo *finfo; + struct dentry *dentry, *parent, *hi_wh; + struct inode *inode; + struct super_block *sb; + + FiMustWriteLock(file); + + err = 0; + finfo = au_fi(file); + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + bstart = au_ibstart(inode); + if (bstart == finfo->fi_btop || IS_ROOT(dentry)) + goto out; + + parent = dget_parent(dentry); + if (au_test_ro(sb, bstart, inode)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(au_sbi(sb), dentry); + bstart = err; + di_read_unlock(parent, !AuLock_IR); + if (unlikely(err < 0)) + goto out_parent; + err = 0; + } + + di_read_lock_parent(parent, AuLock_IR); + hi_wh = au_hi_wh(inode, bstart); + if (!S_ISDIR(inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode) + && !d_unhashed(dentry)) { + err = au_test_and_cpup_dirs(dentry, bstart); + if (unlikely(err)) + goto out_unlock; + + /* always superio. */ + err = au_pin(&pin, dentry, bstart, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) + err = au_sio_cpup_simple(dentry, bstart, -1, + AuCpup_DTIME); + au_unpin(&pin); + } else if (hi_wh) { + /* already copied-up after unlink */ + err = au_reopen_wh(file, bstart, hi_wh); + *need_reopen = 0; + } + +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_parent: + dput(parent); +out: + return err; +} + +static void au_do_refresh_dir(struct file *file) +{ + aufs_bindex_t bindex, bend, new_bindex, brid; + struct au_hfile *p, tmp, *q; + struct au_finfo *finfo; + struct super_block *sb; + struct au_fidir *fidir; + + FiMustWriteLock(file); + + sb = file->f_dentry->d_sb; + finfo = au_fi(file); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + p = fidir->fd_hfile + finfo->fi_btop; + brid = p->hf_br->br_id; + bend = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bend; bindex++, p++) { + if (!p->hf_file) + continue; + + new_bindex = au_br_index(sb, p->hf_br->br_id); + if (new_bindex == bindex) + continue; + if (new_bindex < 0) { + au_set_h_fptr(file, bindex, NULL); + continue; + } + + /* swap two lower inode, and loop again */ + q = fidir->fd_hfile + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hf_file) { + bindex--; + p--; + } + } + + p = fidir->fd_hfile; + if (!au_test_mmapped(file) && !d_unlinked(file->f_dentry)) { + bend = au_sbend(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bend; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (p->hf_file->f_dentry + && p->hf_file->f_dentry->d_inode) + break; + else + au_hfput(p, file); + } + } else { + bend = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bend; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, file); + bend = au_sbend(sb); + } + + p = fidir->fd_hfile + bend; + for (fidir->fd_bbot = bend; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (p->hf_file->f_dentry + && p->hf_file->f_dentry->d_inode) + break; + else + au_hfput(p, file); + } + AuDebugOn(fidir->fd_bbot < finfo->fi_btop); +} + +/* + * after branch manipulating, refresh the file. + */ +static int refresh_file(struct file *file, int (*reopen)(struct file *file)) +{ + int err, need_reopen; + aufs_bindex_t bend, bindex; + struct dentry *dentry; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_dentry; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(dentry->d_sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbstart(file, bindex); + } else { + err = au_fidir_realloc(finfo, au_sbend(dentry->d_sb) + 1); + if (unlikely(err)) + goto out; + au_do_refresh_dir(file); + } + + err = 0; + need_reopen = 1; + if (!au_test_mmapped(file)) + err = au_file_refresh_by_inode(file, &need_reopen); + if (!err && need_reopen && !d_unlinked(dentry)) + err = reopen(file); + if (!err) { + au_update_figen(file); + goto out; /* success */ + } + + /* error, close all lower files */ + if (finfo->fi_hdir) { + bend = au_fbend_dir(file); + for (bindex = au_fbstart(file); bindex <= bend; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + +out: + return err; +} + +/* common function to regular file and dir */ +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t bstart; + unsigned char pseudo_link; + struct dentry *dentry; + struct inode *inode; + + err = 0; + dentry = file->f_dentry; + inode = dentry->d_inode; + AuDebugOn(au_special_file(inode->i_mode)); + sigen = au_sigen(dentry->d_sb); + fi_write_lock(file); + figen = au_figen(file); + di_write_lock_child(dentry); + bstart = au_dbstart(dentry); + pseudo_link = (bstart != au_ibstart(inode)); + if (sigen == figen && !pseudo_link && au_fbstart(file) == bstart) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + goto out; /* success */ + } + + AuDbg("sigen %d, figen %d\n", sigen, figen); + if (au_digen_test(dentry, sigen)) { + err = au_reval_dpath(dentry, sigen); + AuDebugOn(!err && au_digen_test(dentry, sigen)); + } + + if (!err) + err = refresh_file(file, reopen); + if (!err) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + } else { + di_write_unlock(dentry); + fi_write_unlock(file); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* cf. aufs_nopage() */ +/* for madvise(2) */ +static int aufs_readpage(struct file *file __maybe_unused, struct page *page) +{ + unlock_page(page); + return 0; +} + +/* it will never be called, but necessary to support O_DIRECT */ +static ssize_t aufs_direct_IO(int rw, struct kiocb *iocb, + const struct iovec *iov, loff_t offset, + unsigned long nr_segs) +{ BUG(); return 0; } + +/* + * it will never be called, but madvise and fadvise behaves differently + * when get_xip_mem is defined + */ +static int aufs_get_xip_mem(struct address_space *mapping, pgoff_t pgoff, + int create, void **kmem, unsigned long *pfn) +{ BUG(); return 0; } + +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ AuUnsupport(); return 0; } +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + +static int aufs_set_page_dirty(struct page *page) +{ AuUnsupport(); return 0; } +static void aufs_invalidatepage(struct page *page, unsigned long offset) +{ AuUnsupport(); } +static int aufs_releasepage(struct page *page, gfp_t gfp) +{ AuUnsupport(); return 0; } +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +static int aufs_launder_page(struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_is_partially_uptodate(struct page *page, + read_descriptor_t *desc, + unsigned long from) +{ AuUnsupport(); return 0; } +static int aufs_error_remove_page(struct address_space *mapping, + struct page *page) +{ AuUnsupport(); return 0; } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { + .readpage = aufs_readpage, + .direct_IO = aufs_direct_IO, + .get_xip_mem = aufs_get_xip_mem, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ + .set_page_dirty = aufs_set_page_dirty, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ + .invalidatepage = aufs_invalidatepage, + .releasepage = aufs_releasepage, + .migratepage = aufs_migratepage, + .launder_page = aufs_launder_page, + .is_partially_uptodate = aufs_is_partially_uptodate, + .error_remove_page = aufs_error_remove_page +#endif /* CONFIG_AUFS_DEBUG */ +}; --- linux-3.5.0.orig/ubuntu/aufs/sysaufs.c +++ linux-3.5.0/ubuntu/aufs/sysaufs.c @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface and lifetime management + * they are necessary regardless sysfs is disabled. + */ + +#include +#include "aufs.h" + +unsigned long sysaufs_si_mask; +struct kset *sysaufs_kset; + +#define AuSiAttr(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = sysaufs_si_##_name, \ +} + +static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); +struct attribute *sysaufs_si_attrs[] = { + &sysaufs_si_attr_xi_path.attr, + NULL, +}; + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + +static struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, + .default_attrs = sysaufs_si_attrs +}; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + + sbinfo->si_kobj.kset = sysaufs_kset; + /* cf. sysaufs_name() */ + err = kobject_init_and_add + (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, + SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); + + dbgaufs_si_null(sbinfo); + if (!err) { + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + return err; +} + +void sysaufs_fin(void) +{ + dbgaufs_fin(); + sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); + kset_unregister(sysaufs_kset); +} + +int __init sysaufs_init(void) +{ + int err; + + do { + get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); + } while (!sysaufs_si_mask); + + err = -EINVAL; + sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); + if (unlikely(!sysaufs_kset)) + goto out; + err = PTR_ERR(sysaufs_kset); + if (IS_ERR(sysaufs_kset)) + goto out; + err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); + if (unlikely(err)) { + kset_unregister(sysaufs_kset); + goto out; + } + + err = dbgaufs_init(); + if (unlikely(err)) + sysaufs_fin(); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/hfsplus.c +++ linux-3.5.0/ubuntu/aufs/hfsplus.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2010-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * special support for filesystems which aqucires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * neceeary open to tell hfsplus that this is not the final closing. + * The caller should call au_h_open_pre() after acquiring the inode mutex, + * and au_h_open_post() after releasing it. + */ + +#include "aufs.h" + +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct file *h_file; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + AuDebugOn(!h_dentry); + AuDebugOn(!h_dentry->d_inode); + IMustLock(h_dentry->d_inode); + + h_file = NULL; + if (au_test_hfsplus(h_dentry->d_sb) + && S_ISREG(h_dentry->d_inode->i_mode)) + h_file = au_h_open(dentry, bindex, + O_RDONLY | O_NOATIME | O_LARGEFILE, + /*file*/NULL); + return h_file; +} + +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file) +{ + if (h_file) { + fput(h_file); + au_sbr_put(dentry->d_sb, bindex); + } +} --- linux-3.5.0.orig/ubuntu/aufs/f_op_sp.c +++ linux-3.5.0/ubuntu/aufs/f_op_sp.c @@ -0,0 +1,295 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file operations for special files. + * while they exist in aufs virtually, + * their file I/O is handled out of aufs. + */ + +#include "aufs.h" + +static ssize_t aufs_aio_read_sp(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + aufs_bindex_t bstart; + unsigned char wbr; + struct file *file, *h_file; + struct super_block *sb; + + file = kio->ki_filp; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fi_read_lock(file); + bstart = au_fbstart(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + wbr = !!au_br_writable(au_sbr(sb, bstart)->br_perm); + si_read_unlock(sb); + + /* do not change the file in kio */ + AuDebugOn(!h_file->f_op || !h_file->f_op->aio_read); + err = h_file->f_op->aio_read(kio, iov, nv, pos); + if (err > 0 && wbr) + file_accessed(h_file); + + return err; +} + +static ssize_t aufs_aio_write_sp(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + aufs_bindex_t bstart; + unsigned char wbr; + struct super_block *sb; + struct file *file, *h_file; + + file = kio->ki_filp; + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fi_read_lock(file); + bstart = au_fbstart(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + wbr = !!au_br_writable(au_sbr(sb, bstart)->br_perm); + si_read_unlock(sb); + + /* do not change the file in kio */ + AuDebugOn(!h_file->f_op || !h_file->f_op->aio_write); + err = h_file->f_op->aio_write(kio, iov, nv, pos); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_release_sp(struct inode *inode, struct file *file) +{ + int err; + struct file *h_file; + + fi_read_lock(file); + h_file = au_hf_top(file); + fi_read_unlock(file); + /* close this fifo in aufs */ + err = h_file->f_op->release(inode, file); /* ignore */ + aufs_release_nondir(inode, file); /* ignore */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* currently, support only FIFO */ +enum { + AuSp_FIFO, AuSp_FIFO_R, AuSp_FIFO_W, AuSp_FIFO_RW, + /* AuSp_SOCK, AuSp_CHR, AuSp_BLK, */ + AuSp_Last +}; +static int aufs_open_sp(struct inode *inode, struct file *file); +static struct au_sp_fop { + int done; + struct file_operations fop; /* not 'const' */ + spinlock_t spin; +} au_sp_fop[AuSp_Last] = { + [AuSp_FIFO] = { + .fop = { + .owner = THIS_MODULE, + .open = aufs_open_sp + } + } +}; + +static void au_init_fop_sp(struct file *file) +{ + struct au_sp_fop *p; + int i; + struct file *h_file; + + p = au_sp_fop; + if (unlikely(!p->done)) { + /* initialize first time only */ + static DEFINE_SPINLOCK(spin); + + spin_lock(&spin); + if (!p->done) { + BUILD_BUG_ON(sizeof(au_sp_fop)/sizeof(*au_sp_fop) + != AuSp_Last); + for (i = 0; i < AuSp_Last; i++) + spin_lock_init(&p[i].spin); + p->done = 1; + } + spin_unlock(&spin); + } + + switch (file->f_mode & (FMODE_READ | FMODE_WRITE)) { + case FMODE_READ: + i = AuSp_FIFO_R; + break; + case FMODE_WRITE: + i = AuSp_FIFO_W; + break; + case FMODE_READ | FMODE_WRITE: + i = AuSp_FIFO_RW; + break; + default: + BUG(); + } + + p += i; + if (unlikely(!p->done)) { + /* initialize first time only */ + h_file = au_hf_top(file); + spin_lock(&p->spin); + if (!p->done) { + p->fop = *h_file->f_op; + p->fop.owner = THIS_MODULE; + if (p->fop.aio_read) + p->fop.aio_read = aufs_aio_read_sp; + if (p->fop.aio_write) + p->fop.aio_write = aufs_aio_write_sp; + p->fop.release = aufs_release_sp; + p->done = 1; + } + spin_unlock(&p->spin); + } + file->f_op = &p->fop; +} + +static int au_cpup_sp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bcpup; + struct au_pin pin; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + + di_read_unlock(dentry, AuLock_IR); + di_write_lock_child(dentry); + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + bcpup = err; + err = 0; + if (bcpup == au_dbstart(dentry)) + goto out; /* success */ + + err = au_pin(&pin, dentry, bcpup, au_opt_udba(dentry->d_sb), + AuPin_MNT_WRITE); + if (!err) { + err = au_sio_cpup_simple(dentry, bcpup, -1, AuCpup_DTIME); + au_unpin(&pin); + } + +out: + di_downgrade_lock(dentry, AuLock_IR); + return err; +} + +static int au_do_open_sp(struct file *file, int flags) +{ + int err; + struct dentry *dentry; + struct super_block *sb; + struct file *h_file; + struct inode *h_inode; + + dentry = file->f_dentry; + AuDbg("%.*s\n", AuDLNPair(dentry)); + + /* + * try copying-up. + * operate on the ro branch is not an error. + */ + au_cpup_sp(dentry); /* ignore */ + + /* prepare h_file */ + err = au_do_open_nondir(file, vfsub_file_flags(file)); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + h_file = au_hf_top(file); + h_inode = h_file->f_dentry->d_inode; + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + si_read_unlock(sb); + /* open this fifo in aufs */ + err = h_inode->i_fop->open(file->f_dentry->d_inode, file); + si_noflush_read_lock(sb); + fi_write_lock(file); + di_read_lock_child(dentry, AuLock_IR); + if (!err) + au_init_fop_sp(file); + +out: + return err; +} + +static int aufs_open_sp(struct inode *inode, struct file *file) +{ + int err; + struct super_block *sb; + + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, au_do_open_sp, /*fidir*/NULL); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_init_special_fop(struct inode *inode, umode_t mode, dev_t rdev) +{ + init_special_inode(inode, mode, rdev); + + switch (mode & S_IFMT) { + case S_IFIFO: + inode->i_fop = &au_sp_fop[AuSp_FIFO].fop; + /*FALLTHROUGH*/ + case S_IFCHR: + case S_IFBLK: + case S_IFSOCK: + break; + default: + AuDebugOn(1); + } +} + +int au_special_file(umode_t mode) +{ + int ret; + + ret = 0; + switch (mode & S_IFMT) { + case S_IFIFO: +#if 0 + case S_IFCHR: + case S_IFBLK: + case S_IFSOCK: +#endif + ret = 1; + } + + return ret; +} --- linux-3.5.0.orig/ubuntu/aufs/dentry.h +++ linux-3.5.0/ubuntu/aufs/dentry.h @@ -0,0 +1,237 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * lookup and dentry operations + */ + +#ifndef __AUFS_DENTRY_H__ +#define __AUFS_DENTRY_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct au_hdentry { + struct dentry *hd_dentry; + aufs_bindex_t hd_id; +}; + +struct au_dinfo { + atomic_t di_generation; + + struct au_rwsem di_rwsem; + aufs_bindex_t di_bstart, di_bend, di_bwh, di_bdiropq; + struct au_hdentry *di_hdentry; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop; +struct au_branch; +struct dentry *au_lkup_one(struct qstr *name, struct dentry *h_parent, + struct au_branch *br, struct nameidata *nd); +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent, + struct au_branch *br); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, + struct nameidata *nd); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); + +/* dinfo.c */ +void au_di_init_once(void *_di); +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); +void au_di_free(struct au_dinfo *dinfo); +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); +int au_di_init(struct dentry *dentry); +void au_di_fin(struct dentry *dentry); +int au_di_realloc(struct au_dinfo *dinfo, int nbr); + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc); +void di_read_unlock(struct dentry *d, int flags); +void di_downgrade_lock(struct dentry *d, int flags); +void di_write_lock(struct dentry *d, unsigned int lsc); +void di_write_unlock(struct dentry *d); +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_unlock2(struct dentry *d1, struct dentry *d2); + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); +aufs_bindex_t au_dbtail(struct dentry *dentry); +aufs_bindex_t au_dbtaildir(struct dentry *dentry); + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry); +int au_digen_test(struct dentry *dentry, unsigned int sigen); +int au_dbrange_test(struct dentry *dentry); +void au_update_digen(struct dentry *dentry); +void au_update_dbrange(struct dentry *dentry, int do_put_zero); +void au_update_dbstart(struct dentry *dentry); +void au_update_dbend(struct dentry *dentry); +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_dinfo *au_di(struct dentry *dentry) +{ + return dentry->d_fsdata; +} + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for dinfo */ +enum { + AuLsc_DI_CHILD, /* child first */ + AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_DI_CHILD3, /* copyup dirs */ + AuLsc_DI_PARENT, + AuLsc_DI_PARENT2, + AuLsc_DI_PARENT3, + AuLsc_DI_TMP /* temp for replacing dinfo */ +}; + +/* + * di_read_lock_child, di_write_lock_child, + * di_read_lock_child2, di_write_lock_child2, + * di_read_lock_child3, di_write_lock_child3, + * di_read_lock_parent, di_write_lock_parent, + * di_read_lock_parent2, di_write_lock_parent2, + * di_read_lock_parent3, di_write_lock_parent3, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void di_read_lock_##name(struct dentry *d, int flags) \ +{ di_read_lock(d, flags, AuLsc_DI_##lsc); } + +#define AuWriteLockFunc(name, lsc) \ +static inline void di_write_lock_##name(struct dentry *d) \ +{ di_write_lock(d, AuLsc_DI_##lsc); } + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) +#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) +#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: memory barrier? */ +static inline unsigned int au_digen(struct dentry *d) +{ + return atomic_read(&au_di(d)->di_generation); +} + +static inline void au_h_dentry_init(struct au_hdentry *hdentry) +{ + hdentry->hd_dentry = NULL; +} + +static inline void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbstart(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bstart; +} + +static inline aufs_bindex_t au_dbend(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bend; +} + +static inline aufs_bindex_t au_dbwh(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bwh; +} + +static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bdiropq; +} + +/* todo: hard/soft set? */ +static inline void au_set_dbstart(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bstart = bindex; +} + +static inline void au_set_dbend(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bend = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of bstart - bend range */ + au_di(dentry)->di_bwh = bindex; +} + +static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bdiropq = bindex; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_HNOTIFY +static inline void au_digen_dec(struct dentry *d) +{ + atomic_dec(&au_di(d)->di_generation); +} + +static inline void au_hn_di_reinit(struct dentry *dentry) +{ + dentry->d_fsdata = NULL; +} +#else +AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dbgaufs.h +++ linux-3.5.0/ubuntu/aufs/dbgaufs.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debugfs interface + */ + +#ifndef __DBGAUFS_H__ +#define __DBGAUFS_H__ + +#ifdef __KERNEL__ + +struct super_block; +struct au_sbinfo; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_si_fin(struct au_sbinfo *sbinfo); +int dbgaufs_si_init(struct au_sbinfo *sbinfo); +void dbgaufs_fin(void); +int __init dbgaufs_init(void); +#else +AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) +AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) +AuStubVoid(dbgaufs_fin, void) +AuStubInt0(__init dbgaufs_init, void) +#endif /* CONFIG_DEBUG_FS */ + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/loop.c +++ linux-3.5.0/ubuntu/aufs/loop.c @@ -0,0 +1,133 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * support for loopback block device as a branch + */ + +#include +#include "aufs.h" + +/* + * test if two lower dentries have overlapping branches. + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ + struct super_block *h_sb; + struct loop_device *l; + + h_sb = h_adding->d_sb; + if (MAJOR(h_sb->s_dev) != LOOP_MAJOR) + return 0; + + l = h_sb->s_bdev->bd_disk->private_data; + h_adding = l->lo_backing_file->f_dentry; + /* + * h_adding can be local NFS. + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) + return 1; + return !!au_test_subdir(h_adding, sb->s_root); +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ +int au_test_loopback_kthread(void) +{ + int ret; + struct task_struct *tsk = current; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + const char c = tsk->comm[4]; + ret = ('0' <= c && c <= '9' + && !strncmp(tsk->comm, "loop", 4)); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +#define au_warn_loopback_step 16 +static int au_warn_loopback_nelem = au_warn_loopback_step; +static unsigned long *au_warn_loopback_array; + +void au_warn_loopback(struct super_block *h_sb) +{ + int i, new_nelem; + unsigned long *a, magic; + static DEFINE_SPINLOCK(spin); + + magic = h_sb->s_magic; + spin_lock(&spin); + a = au_warn_loopback_array; + for (i = 0; i < au_warn_loopback_nelem && *a; i++) + if (a[i] == magic) { + spin_unlock(&spin); + return; + } + + /* h_sb is new to us, print it */ + if (i < au_warn_loopback_nelem) { + a[i] = magic; + goto pr; + } + + /* expand the array */ + new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; + a = au_kzrealloc(au_warn_loopback_array, + au_warn_loopback_nelem * sizeof(unsigned long), + new_nelem * sizeof(unsigned long), GFP_ATOMIC); + if (a) { + au_warn_loopback_nelem = new_nelem; + au_warn_loopback_array = a; + a[i] = magic; + goto pr; + } + + spin_unlock(&spin); + AuWarn1("realloc failed, ignored\n"); + return; + +pr: + spin_unlock(&spin); + pr_warn("you may want to try another patch for loopback file " + "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); +} + +int au_loopback_init(void) +{ + int err; + struct super_block *sb __maybe_unused; + + AuDebugOn(sizeof(sb->s_magic) != sizeof(unsigned long)); + + err = 0; + au_warn_loopback_array = kcalloc(au_warn_loopback_step, + sizeof(unsigned long), GFP_NOFS); + if (unlikely(!au_warn_loopback_array)) + err = -ENOMEM; + + return err; +} + +void au_loopback_fin(void) +{ + kfree(au_warn_loopback_array); +} --- linux-3.5.0.orig/ubuntu/aufs/f_op.c +++ linux-3.5.0/ubuntu/aufs/f_op.c @@ -0,0 +1,727 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * file and vm operations + */ + +#include +#include +#include +#include "aufs.h" + +int au_do_open_nondir(struct file *file, int flags) +{ + int err; + aufs_bindex_t bindex; + struct file *h_file; + struct dentry *dentry; + struct au_finfo *finfo; + + FiMustWriteLock(file); + + dentry = file->f_dentry; + err = au_d_alive(dentry); + if (unlikely(err)) + goto out; + + finfo = au_fi(file); + memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); + atomic_set(&finfo->fi_mmapped, 0); + bindex = au_dbstart(dentry); + h_file = au_h_open(dentry, bindex, flags, file); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + au_set_fbstart(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + } + +out: + return err; +} + +static int aufs_open_nondir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + + AuDbg("%.*s, f_flags 0x%x, f_mode 0x%x\n", + AuDLNPair(file->f_dentry), vfsub_file_flags(file), + file->f_mode); + + sb = file->f_dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, au_do_open_nondir, /*fidir*/NULL); + si_read_unlock(sb); + return err; +} + +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) +{ + struct au_finfo *finfo; + aufs_bindex_t bindex; + + finfo = au_fi(file); + bindex = finfo->fi_btop; + if (bindex >= 0) { + /* remove me from sb->s_files */ + file_sb_list_del(file); + au_set_h_fptr(file, bindex, NULL); + } + + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_nondir(struct file *file, fl_owner_t id) +{ + int err; + struct file *h_file; + + err = 0; + h_file = au_hf_top(file); + if (h_file) + err = vfsub_flush(h_file, id); + return err; +} + +static int aufs_flush_nondir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_nondir); +} + +/* ---------------------------------------------------------------------- */ +/* + * read and write functions acquire [fdi]_rwsem once, but release before + * mmap_sem. This is because to stop a race condition between mmap(2). + * Releasing these aufs-rwsem should be safe, no branch-mamagement (by keeping + * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in + * read functions after [fdi]_rwsem are released, but it should be harmless. + */ + +static ssize_t aufs_read(struct file *file, char __user *buf, size_t count, + loff_t *ppos) +{ + ssize_t err; + struct dentry *dentry; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + get_file(h_file); + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + /* filedata may be obsoleted by concurrent copyup, but no problem */ + err = vfsub_read_u(h_file, buf, count, ppos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +/* + * todo: very ugly + * it locks both of i_mutex and si_rwsem for read in safe. + * if the plink maintenance mode continues forever (that is the problem), + * may loop forever. + */ +static void au_mtx_and_read_lock(struct inode *inode) +{ + int err; + struct super_block *sb = inode->i_sb; + + while (1) { + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + mutex_unlock(&inode->i_mutex); + si_read_lock(sb, AuLock_NOPLMW); + si_read_unlock(sb); + } +} + +static ssize_t aufs_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct super_block *sb; + struct inode *inode; + struct file *h_file; + char __user *buf = (char __user *)ubuf; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = vfsub_write_u(h_file, buf, count, ppos); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t au_do_aio(struct file *h_file, int rw, struct kiocb *kio, + const struct iovec *iov, unsigned long nv, loff_t pos) +{ + ssize_t err; + struct file *file; + ssize_t (*func)(struct kiocb *, const struct iovec *, unsigned long, + loff_t); + + err = security_file_permission(h_file, rw); + if (unlikely(err)) + goto out; + + err = -ENOSYS; + func = NULL; + if (rw == MAY_READ) + func = h_file->f_op->aio_read; + else if (rw == MAY_WRITE) + func = h_file->f_op->aio_write; + if (func) { + file = kio->ki_filp; + kio->ki_filp = h_file; + lockdep_off(); + err = func(kio, iov, nv, pos); + lockdep_on(); + kio->ki_filp = file; + } else + /* currently there is no such fs */ + WARN_ON_ONCE(1); + +out: + return err; +} + +static ssize_t aufs_aio_read(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + struct file *file, *h_file; + struct dentry *dentry; + struct super_block *sb; + + file = kio->ki_filp; + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + get_file(h_file); + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + err = au_do_aio(h_file, MAY_READ, kio, iov, nv, pos); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t aufs_aio_write(struct kiocb *kio, const struct iovec *iov, + unsigned long nv, loff_t pos) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *file, *h_file; + struct super_block *sb; + + file = kio->ki_filp; + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = au_do_aio(h_file, MAY_WRITE, kio, iov, nv, pos); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + ssize_t err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + err = -EINVAL; + h_file = au_hf_top(file); + get_file(h_file); + if (au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; + smp_mb(); /* unnecessary? */ + } + } + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + + err = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessasry? */ + /* file->f_ra = h_file->f_ra; */ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(dentry->d_inode, h_file->f_dentry->d_inode); + fput(h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t +aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + goto out; + } + + h_file = au_hf_top(file); + get_file(h_file); + au_unpin(&pin); + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); + + err = vfsub_splice_from(pipe, h_file, ppos, len, flags); + ii_write_lock_child(inode); + au_cpup_attr_timesizes(inode); + inode->i_mode = h_file->f_dentry->d_inode->i_mode; + ii_write_unlock(inode); + fput(h_file); + +out: + si_read_unlock(sb); + mutex_unlock(&inode->i_mutex); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * The locking order around current->mmap_sem. + * - in most and regular cases + * file I/O syscall -- aufs_read() or something + * -- si_rwsem for read -- mmap_sem + * (Note that [fdi]i_rwsem are released before mmap_sem). + * - in mmap case + * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem + * This AB-BA order is definitly bad, but is not a problem since "si_rwsem for + * read" allows muliple processes to acquire it and [fdi]i_rwsem are not held in + * file I/O. Aufs needs to stop lockdep in aufs_mmap() though. + * It means that when aufs acquires si_rwsem for write, the process should never + * acquire mmap_sem. + * + * Actually aufs_readdir() holds [fdi]i_rwsem before mmap_sem, but this is not a + * problem either since any directory is not able to be mmap-ed. + * The similar scenario is applied to aufs_readlink() too. + */ + +/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ +#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) + +static unsigned long au_arch_prot_conv(unsigned long flags) +{ + /* currently ppc64 only */ +#ifdef CONFIG_PPC64 + /* cf. linux/arch/powerpc/include/asm/mman.h */ + AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); + return AuConv_VM_PROT(flags, SAO); +#else + AuDebugOn(arch_calc_vm_prot_bits(-1)); + return 0; +#endif +} + +static unsigned long au_prot_conv(unsigned long flags) +{ + return AuConv_VM_PROT(flags, READ) + | AuConv_VM_PROT(flags, WRITE) + | AuConv_VM_PROT(flags, EXEC) + | au_arch_prot_conv(flags); +} + +/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ +#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) + +static unsigned long au_flag_conv(unsigned long flags) +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) + | AuConv_VM_MAP(flags, EXECUTABLE) + | AuConv_VM_MAP(flags, LOCKED); +} + +static int aufs_mmap(struct file *file, struct vm_area_struct *vma) +{ + int err; + aufs_bindex_t bstart; + const unsigned char wlock + = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); + struct dentry *dentry; + struct super_block *sb; + struct file *h_file; + struct au_branch *br; + struct au_pin pin; + + AuDbgVmRegion(file, vma); + + dentry = file->f_dentry; + sb = dentry->d_sb; + lockdep_off(); + si_read_lock(sb, AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + if (wlock) { + err = au_ready_to_write(file, -1, &pin); + di_write_unlock(dentry); + if (unlikely(err)) { + fi_write_unlock(file); + goto out; + } + au_unpin(&pin); + } else + di_write_unlock(dentry); + + bstart = au_fbstart(file); + br = au_sbr(sb, bstart); + h_file = au_hf_top(file); + get_file(h_file); + au_set_mmapped(file); + fi_write_unlock(file); + lockdep_on(); + + au_vm_file_reset(vma, h_file); + err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), + au_flag_conv(vma->vm_flags)); + if (!err) + err = h_file->f_op->mmap(h_file, vma); + if (unlikely(err)) + goto out_reset; + + au_vm_prfile_set(vma, file); + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(file->f_dentry->d_inode, + h_file->f_dentry->d_inode); + goto out_fput; /* success */ + +out_reset: + au_unset_mmapped(file); + au_vm_file_reset(vma, file); +out_fput: + fput(h_file); + lockdep_off(); +out: + si_read_unlock(sb); + lockdep_on(); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct super_block *sb; + + dentry = file->f_dentry; + inode = dentry->d_inode; + sb = dentry->d_sb; + mutex_lock(&inode->i_mutex); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out_si; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out_si; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + au_unpin(&pin); + + err = -EINVAL; + h_file = au_hf_top(file); + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + au_cpup_attr_timesizes(inode); + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out_si: + si_read_unlock(sb); +out: + mutex_unlock(&inode->i_mutex); + return err; +} + +/* no one supports this operation, currently */ +#if 0 +static int aufs_aio_fsync_nondir(struct kiocb *kio, int datasync) +{ + int err; + struct au_pin pin; + struct dentry *dentry; + struct inode *inode; + struct file *file, *h_file; + + file = kio->ki_filp; + dentry = file->f_dentry; + inode = dentry->d_inode; + au_mtx_and_read_lock(inode); + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1); + if (unlikely(err)) + goto out; + + err = au_ready_to_write(file, -1, &pin); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + au_unpin(&pin); + + err = -ENOSYS; + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->aio_fsync) { + struct dentry *h_d; + struct mutex *h_mtx; + + h_d = h_file->f_dentry; + h_mtx = &h_d->d_inode->i_mutex; + if (!is_sync_kiocb(kio)) { + get_file(h_file); + fput(file); + } + kio->ki_filp = h_file; + err = h_file->f_op->aio_fsync(kio, datasync); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + if (!err) + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); + /*ignore*/ + au_cpup_attr_timesizes(inode); + mutex_unlock(h_mtx); + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(inode->sb); + mutex_unlock(&inode->i_mutex); + return err; +} +#endif + +static int aufs_fasync(int fd, struct file *file, int flag) +{ + int err; + struct file *h_file; + struct dentry *dentry; + struct super_block *sb; + + dentry = file->f_dentry; + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0); + if (unlikely(err)) + goto out; + + h_file = au_hf_top(file); + if (h_file->f_op && h_file->f_op->fasync) + err = h_file->f_op->fasync(fd, h_file, flag); + + di_read_unlock(dentry, AuLock_IR); + fi_read_unlock(file); + +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 +static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, + size_t len, loff_t *pos , int more) +{ +} +#endif + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + + .llseek = default_llseek, + + .read = aufs_read, + .write = aufs_write, + .aio_read = aufs_aio_read, + .aio_write = aufs_aio_write, +#ifdef CONFIG_AUFS_POLL + .poll = aufs_poll, +#endif + .unlocked_ioctl = aufs_ioctl_nondir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_ioctl_nondir, /* same */ +#endif + .mmap = aufs_mmap, + .open = aufs_open_nondir, + .flush = aufs_flush_nondir, + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + /* .aio_fsync = aufs_aio_fsync_nondir, */ + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read +#endif +}; --- linux-3.5.0.orig/ubuntu/aufs/dinfo.c +++ linux-3.5.0/ubuntu/aufs/dinfo.c @@ -0,0 +1,543 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * dentry private data + */ + +#include "aufs.h" + +void au_di_init_once(void *_dinfo) +{ + struct au_dinfo *dinfo = _dinfo; + static struct lock_class_key aufs_di; + + au_rw_init(&dinfo->di_rwsem); + au_rw_class(&dinfo->di_rwsem, &aufs_di); +} + +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) +{ + struct au_dinfo *dinfo; + int nbr, i; + + dinfo = au_cache_alloc_dinfo(); + if (unlikely(!dinfo)) + goto out; + + nbr = au_sbend(sb) + 1; + if (nbr <= 0) + nbr = 1; + dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); + if (dinfo->di_hdentry) { + au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + dinfo->di_bwh = -1; + dinfo->di_bdiropq = -1; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; + goto out; + } + + au_cache_free_dinfo(dinfo); + dinfo = NULL; + +out: + return dinfo; +} + +void au_di_free(struct au_dinfo *dinfo) +{ + struct au_hdentry *p; + aufs_bindex_t bend, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_bstart; + if (bindex >= 0) { + bend = dinfo->di_bend; + p = dinfo->di_hdentry + bindex; + while (bindex++ <= bend) + au_hdput(p++); + } + kfree(dinfo->di_hdentry); + au_cache_free_dinfo(dinfo); +} + +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) +{ + struct au_hdentry *p; + aufs_bindex_t bi; + + AuRwMustWriteLock(&a->di_rwsem); + AuRwMustWriteLock(&b->di_rwsem); + +#define DiSwap(v, name) \ + do { \ + v = a->di_##name; \ + a->di_##name = b->di_##name; \ + b->di_##name = v; \ + } while (0) + + DiSwap(p, hdentry); + DiSwap(bi, bstart); + DiSwap(bi, bend); + DiSwap(bi, bwh); + DiSwap(bi, bdiropq); + /* smp_mb(); */ + +#undef DiSwap +} + +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) +{ + AuRwMustWriteLock(&dst->di_rwsem); + AuRwMustWriteLock(&src->di_rwsem); + + dst->di_bstart = src->di_bstart; + dst->di_bend = src->di_bend; + dst->di_bwh = src->di_bwh; + dst->di_bdiropq = src->di_bdiropq; + /* smp_mb(); */ +} + +int au_di_init(struct dentry *dentry) +{ + int err; + struct super_block *sb; + struct au_dinfo *dinfo; + + err = 0; + sb = dentry->d_sb; + dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); + if (dinfo) { + atomic_set(&dinfo->di_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + dentry->d_fsdata = dinfo; + } else + err = -ENOMEM; + + return err; +} + +void au_di_fin(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + + dinfo = au_di(dentry); + AuRwDestroy(&dinfo->di_rwsem); + au_di_free(dinfo); +} + +int au_di_realloc(struct au_dinfo *dinfo, int nbr) +{ + int err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bend + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS); + if (hdp) { + dinfo->di_hdentry = hdp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void do_ii_write_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_write_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_write_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_write_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_write_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_write_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_write_lock_parent3(inode); + break; + default: + BUG(); + } +} + +static void do_ii_read_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_read_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_read_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_read_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_read_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_read_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_read_lock_parent3(inode); + break; + default: + BUG(); + } +} + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc) +{ + au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d->d_inode) { + if (au_ftest_lock(flags, IW)) + do_ii_write_lock(d->d_inode, lsc); + else if (au_ftest_lock(flags, IR)) + do_ii_read_lock(d->d_inode, lsc); + } +} + +void di_read_unlock(struct dentry *d, int flags) +{ + if (d->d_inode) { + if (au_ftest_lock(flags, IW)) { + au_dbg_verify_dinode(d); + ii_write_unlock(d->d_inode); + } else if (au_ftest_lock(flags, IR)) { + au_dbg_verify_dinode(d); + ii_read_unlock(d->d_inode); + } + } + au_rw_read_unlock(&au_di(d)->di_rwsem); +} + +void di_downgrade_lock(struct dentry *d, int flags) +{ + if (d->d_inode && au_ftest_lock(flags, IR)) + ii_downgrade_lock(d->d_inode); + au_rw_dgrade_lock(&au_di(d)->di_rwsem); +} + +void di_write_lock(struct dentry *d, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d->d_inode) + do_ii_write_lock(d->d_inode, lsc); +} + +void di_write_unlock(struct dentry *d) +{ + au_dbg_verify_dinode(d); + if (d->d_inode) + ii_write_unlock(d->d_inode); + au_rw_write_unlock(&au_di(d)->di_rwsem); +} + +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d1->d_inode == d2->d_inode + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + /* there should be no races */ + di_write_lock_child(d2); + di_write_lock_child2(d1); + } +} + +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d1->d_inode == d2->d_inode + || d1->d_sb != d2->d_sb); + + if (isdir && au_test_subdir(d1, d2)) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + /* there should be no races */ + di_write_lock_parent(d2); + di_write_lock_parent2(d1); + } +} + +void di_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock(d1); + if (d1->d_inode == d2->d_inode) + au_rw_write_unlock(&au_di(d2)->di_rwsem); + else + di_write_unlock(d2); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *d; + + DiMustAnyLock(dentry); + + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_di(dentry)->di_hdentry[0 + bindex].hd_dentry; + AuDebugOn(d && d->d_count <= 0); + return d; +} + +/* + * extended version of au_h_dptr(). + * returns a hashed and positive h_dentry in bindex, NULL, or error. + */ +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + inode = dentry->d_inode; + AuDebugOn(!inode); + + h_dentry = NULL; + if (au_dbstart(dentry) <= bindex + && bindex <= au_dbend(dentry)) + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && !au_d_hashed_positive(h_dentry)) { + dget(h_dentry); + goto out; /* success */ + } + + AuDebugOn(bindex < au_ibstart(inode)); + AuDebugOn(au_ibend(inode) < bindex); + h_inode = au_h_iptr(inode, bindex); + h_dentry = d_find_alias(h_inode); + if (h_dentry) { + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + } else + goto out; + } + + if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { + h_dentry = au_plink_lkup(inode, bindex); + AuDebugOn(!h_dentry); + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + h_dentry = NULL; + } + } + +out: + AuDbgDentry(h_dentry); + return h_dentry; +} + +aufs_bindex_t au_dbtail(struct dentry *dentry) +{ + aufs_bindex_t bend, bwh; + + bend = au_dbend(dentry); + if (0 <= bend) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bend) + return bwh - 1; + } + return bend; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bend, bopq; + + bend = au_dbtail(dentry); + if (0 <= bend) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bend) + bend = bopq; + } + return bend; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_hdentry *hd = au_di(dentry)->di_hdentry + bindex; + struct au_branch *br; + + DiMustWriteLock(dentry); + + au_hdput(hd); + hd->hd_dentry = h_dentry; + if (h_dentry) { + br = au_sbr(dentry->d_sb, bindex); + hd->hd_id = br->br_id; + } +} + +int au_dbrange_test(struct dentry *dentry) +{ + int err; + aufs_bindex_t bstart, bend; + + err = 0; + bstart = au_dbstart(dentry); + bend = au_dbend(dentry); + if (bstart >= 0) + AuDebugOn(bend < 0 && bstart > bend); + else { + err = -EIO; + AuDebugOn(bend >= 0); + } + + return err; +} + +int au_digen_test(struct dentry *dentry, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(au_digen(dentry) != sigen + || au_iigen_test(dentry->d_inode, sigen))) + err = -EIO; + + return err; +} + +void au_update_digen(struct dentry *dentry) +{ + atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +void au_update_dbrange(struct dentry *dentry, int do_put_zero) +{ + struct au_dinfo *dinfo; + struct dentry *h_d; + struct au_hdentry *hdp; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_bstart < 0) + return; + + hdp = dinfo->di_hdentry; + if (do_put_zero) { + aufs_bindex_t bindex, bend; + + bend = dinfo->di_bend; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++) { + h_d = hdp[0 + bindex].hd_dentry; + if (h_d && !h_d->d_inode) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_bstart = -1; + while (++dinfo->di_bstart <= dinfo->di_bend) + if (hdp[0 + dinfo->di_bstart].hd_dentry) + break; + if (dinfo->di_bstart > dinfo->di_bend) { + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + return; + } + + dinfo->di_bend++; + while (0 <= --dinfo->di_bend) + if (hdp[0 + dinfo->di_bend].hd_dentry) + break; + AuDebugOn(dinfo->di_bstart > dinfo->di_bend || dinfo->di_bend < 0); +} + +void au_update_dbstart(struct dentry *dentry) +{ + aufs_bindex_t bindex, bend; + struct dentry *h_dentry; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (h_dentry->d_inode) { + au_set_dbstart(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbend(struct dentry *dentry) +{ + aufs_bindex_t bindex, bstart; + struct dentry *h_dentry; + + bstart = au_dbstart(dentry); + for (bindex = au_dbend(dentry); bindex >= bstart; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (h_dentry->d_inode) { + au_set_dbend(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) +{ + aufs_bindex_t bindex, bend; + + bend = au_dbend(dentry); + for (bindex = au_dbstart(dentry); bindex <= bend; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} --- linux-3.5.0.orig/ubuntu/aufs/BOM.UPDATING +++ linux-3.5.0/ubuntu/aufs/BOM.UPDATING @@ -0,0 +1,80 @@ += How to update AUFS2 = + +This document covers the process for updating aufs2 within the Ubuntu +drivers directory. + +== Background == + +Upstream aufs2 is maintained in a git tree as below (which is _not_ used +when updating Ubuntu). This represents the primary upstream source tree: + + http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-2.6.git + +However this is on an http: transport and incredibly slow. It is advisable +to also add the gitorius mirror to your tree, fetching that before origin +to reduce the objects you need from the main tree: + + git://gitorious.org/aufs2/aufs2.git + +Ubuntu updates are actually taken from the aufs2-standalone tree, somewhat +similar to the compat-wireless tree. The version in this tree is based on +the mainline tree above but is modularisable, a key requirement for Ubuntu. +This tree is found at the git tree below (check the BOM for the definative +location): + + http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git + +This tree contains a set of branches, one per upstream release. The +aufs2.1 branch represents the mainline tracking branch, with aufs-2.1-38 +representing the delta to mainline 2.6.38. Each branch contains a set +of patches which affect the core enabling the application of aufs2, plus +an open tree for the fs/aufs tree. The core patches tend to be static +from early in the line of an upstream release, and thus generally do not +need updating as often. + +== Updating the core patches == + +Ubuntu uses two of the core enablement patches, which are applied in the +order below. The remaining changes required to enable aufs are Ubuntu +specific and static: + + aufs2-base.patch + aufs2-standalone.patch + +In order to update these patches it is simplest to simply revert the +existing pair and apply these as two commit. This allows us to more +easily drop aufs in the future should that be required. + +As these core enablement patches are very slow in changing we normally +do not need to update these more than once per upstream mainline release +though sometimes changes do affect these. + +== Updating aufs2 == + +Once the enablement patches are updated we can simply use the aufs-update +script in the ubuntu/ directory to update the existing source. There are +regular updates to the aufs2 upstream and it is likely we will see updates +there more than once a month. + +Firstly checkout the upstream standalone tree (see the BOM for the +location) and checkout an appropriate branch for the release you are +updating. Then simply run the aufs-update command from within the ubuntu/ +drivers directory, supplying the location of the local aufs2-standalone tree +on the command line: + + cd ubuntu + sh aufs-update ../../aufs2-standalone + +This will result in an update commit containing the updated code and +also updating the BOM. Note that any local modifications are now lost. +Where those exist they should be cherry-picked and then squashed into +the update commit to ensure we retain them. + +== Ubuntu modifications == + +We carry a very small delta to the upstream aufs2 source. Any such changes +need to be cherry-picked from the history and squashed into any update +commit in order to prevent regression. Any current patches are listed below: + +Lucid/Maverick/Natty/Oneiric: + UBUNTU: ubuntu: AUFS -- suppress benign plink warning messages --- linux-3.5.0.orig/ubuntu/aufs/cpup.h +++ linux-3.5.0/ubuntu/aufs/cpup.h @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * copy-up/down functions + */ + +#ifndef __AUFS_CPUP_H__ +#define __AUFS_CPUP_H__ + +#ifdef __KERNEL__ + +#include + +struct inode; +struct file; + +void au_cpup_attr_flags(struct inode *dst, struct inode *src); +void au_cpup_attr_timesizes(struct inode *inode); +void au_cpup_attr_nlink(struct inode *inode, int force); +void au_cpup_attr_changeable(struct inode *inode); +void au_cpup_igen(struct inode *inode, struct inode *h_inode); +void au_cpup_attr_all(struct inode *inode, int force); + +/* ---------------------------------------------------------------------- */ + +/* cpup flags */ +#define AuCpup_DTIME 1 /* do dtime_store/revert */ +#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, + for link(2) */ +#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) +#define au_fset_cpup(flags, name) \ + do { (flags) |= AuCpup_##name; } while (0) +#define au_fclr_cpup(flags, name) \ + do { (flags) &= ~AuCpup_##name; } while (0) + +int au_copy_file(struct file *dst, struct file *src, loff_t len); +int au_sio_cpup_single(struct dentry *dentry, aufs_bindex_t bdst, + aufs_bindex_t bsrc, loff_t len, unsigned int flags, + struct dentry *dst_parent); +int au_sio_cpup_simple(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + unsigned int flags); +int au_sio_cpup_wh(struct dentry *dentry, aufs_bindex_t bdst, loff_t len, + struct file *file); + +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct dentry *h_parent, void *arg), + void *arg); +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +/* keep timestamps when copyup */ +struct au_dtime { + struct dentry *dt_dentry; + struct path dt_h_path; + struct timespec dt_atime, dt_mtime; +}; +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path); +void au_dtime_revert(struct au_dtime *dt); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/opts.h +++ linux-3.5.0/ubuntu/aufs/opts.h @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount options/flags + */ + +#ifndef __AUFS_OPTS_H__ +#define __AUFS_OPTS_H__ + +#ifdef __KERNEL__ + +#include + +struct file; +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* mount flags */ +#define AuOpt_XINO 1 /* external inode number bitmap + and translation table */ +#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ +#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ +#define AuOpt_UDBA_REVAL (1 << 3) +#define AuOpt_UDBA_HNOTIFY (1 << 4) +#define AuOpt_SHWH (1 << 5) /* show whiteout */ +#define AuOpt_PLINK (1 << 6) /* pseudo-link */ +#define AuOpt_DIRPERM1 (1 << 7) /* unimplemented */ +#define AuOpt_REFROF (1 << 8) /* unimplemented */ +#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ +#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ +#define AuOpt_SUM_W (1 << 11) /* unimplemented */ +#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ +#define AuOpt_VERBOSE (1 << 13) /* busy inode when del-branch */ +#define AuOpt_DIO (1 << 14) /* direct io */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 0 +#endif +#ifndef CONFIG_AUFS_SHWH +#undef AuOpt_SHWH +#define AuOpt_SHWH 0 +#endif + +#define AuOpt_Def (AuOpt_XINO \ + | AuOpt_UDBA_REVAL \ + | AuOpt_PLINK \ + /* | AuOpt_DIRPERM1 */ \ + | AuOpt_WARN_PERM) +#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ + | AuOpt_UDBA_REVAL \ + | AuOpt_UDBA_HNOTIFY) + +#define au_opt_test(flags, name) (flags & AuOpt_##name) +#define au_opt_set(flags, name) do { \ + BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_set_udba(flags, name) do { \ + (flags) &= ~AuOptMask_UDBA; \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_clr(flags, name) do { \ + ((flags) &= ~AuOpt_##name); \ +} while (0) + +static inline unsigned int au_opts_plink(unsigned int mntflags) +{ +#ifdef CONFIG_PROC_FS + return mntflags; +#else + return mntflags & ~AuOpt_PLINK; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* policies to select one among multiple writable branches */ +enum { + AuWbrCreate_TDP, /* top down parent */ + AuWbrCreate_RR, /* round robin */ + AuWbrCreate_MFS, /* most free space */ + AuWbrCreate_MFSV, /* mfs with seconds */ + AuWbrCreate_MFSRR, /* mfs then rr */ + AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ + AuWbrCreate_PMFS, /* parent and mfs */ + AuWbrCreate_PMFSV, /* parent and mfs with seconds */ + + AuWbrCreate_Def = AuWbrCreate_TDP +}; + +enum { + AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_BUP, /* bottom up parent */ + AuWbrCopyup_BU, /* bottom up */ + + AuWbrCopyup_Def = AuWbrCopyup_TDP +}; + +/* ---------------------------------------------------------------------- */ + +struct au_opt_add { + aufs_bindex_t bindex; + char *pathname; + int perm; + struct path path; +}; + +struct au_opt_del { + char *pathname; + struct path h_path; +}; + +struct au_opt_mod { + char *path; + int perm; + struct dentry *h_root; +}; + +struct au_opt_xino { + char *path; + struct file *file; +}; + +struct au_opt_xino_itrunc { + aufs_bindex_t bindex; +}; + +struct au_opt_wbr_create { + int wbr_create; + int mfs_second; + unsigned long long mfsrr_watermark; +}; + +struct au_opt { + int type; + union { + struct au_opt_xino xino; + struct au_opt_xino_itrunc xino_itrunc; + struct au_opt_add add; + struct au_opt_del del; + struct au_opt_mod mod; + int dirwh; + int rdcache; + unsigned int rdblk; + unsigned int rdhash; + int udba; + struct au_opt_wbr_create wbr_create; + int wbr_copyup; + }; +}; + +/* opts flags */ +#define AuOpts_REMOUNT 1 +#define AuOpts_REFRESH (1 << 1) +#define AuOpts_TRUNC_XIB (1 << 2) +#define AuOpts_REFRESH_DYAOP (1 << 3) +#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) +#define au_fset_opts(flags, name) \ + do { (flags) |= AuOpts_##name; } while (0) +#define au_fclr_opts(flags, name) \ + do { (flags) &= ~AuOpts_##name; } while (0) + +struct au_opts { + struct au_opt *opt; + int max_opt; + + unsigned int given_udba; + unsigned int flags; + unsigned long sb_flags; +}; + +/* ---------------------------------------------------------------------- */ + +char *au_optstr_br_perm(int brperm); +const char *au_optstr_udba(int udba); +const char *au_optstr_wbr_copyup(int wbr_copyup); +const char *au_optstr_wbr_create(int wbr_create); + +void au_opts_free(struct au_opts *opts); +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts); +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending); +int au_opts_mount(struct super_block *sb, struct au_opts *opts); +int au_opts_remount(struct super_block *sb, struct au_opts *opts); + +unsigned int au_opt_udba(struct super_block *sb); + +/* ---------------------------------------------------------------------- */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/export.c +++ linux-3.5.0/ubuntu/aufs/export.c @@ -0,0 +1,810 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * export via nfs + */ + +#include +#include +#include +#include +#include +#include +#include "../fs/mount.h" +#include "aufs.h" + +union conv { +#ifdef CONFIG_AUFS_INO_T_64 + __u32 a[2]; +#else + __u32 a[1]; +#endif + ino_t ino; +}; + +static ino_t decode_ino(__u32 *a) +{ + union conv u; + + BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); + u.a[0] = a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + u.a[1] = a[1]; +#endif + return u.ino; +} + +static void encode_ino(__u32 *a, ino_t ino) +{ + union conv u; + + u.ino = ino; + a[0] = u.a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + a[1] = u.a[1]; +#endif +} + +/* NFS file handle */ +enum { + Fh_br_id, + Fh_sigen, +#ifdef CONFIG_AUFS_INO_T_64 + /* support 64bit inode number */ + Fh_ino1, + Fh_ino2, + Fh_dir_ino1, + Fh_dir_ino2, +#else + Fh_ino1, + Fh_dir_ino1, +#endif + Fh_igen, + Fh_h_type, + Fh_tail, + + Fh_ino = Fh_ino1, + Fh_dir_ino = Fh_dir_ino1 +}; + +static int au_test_anon(struct dentry *dentry) +{ + /* note: read d_flags without d_lock */ + return !!(dentry->d_flags & DCACHE_DISCONNECTED); +} + +/* ---------------------------------------------------------------------- */ +/* inode generation external table */ + +void au_xigen_inc(struct inode *inode) +{ + loff_t pos; + ssize_t sz; + __u32 igen; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + sb = inode->i_sb; + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + + sbinfo = au_sbi(sb); + pos = inode->i_ino; + pos *= sizeof(igen); + igen = inode->i_generation + 1; + sz = xino_fwrite(sbinfo->si_xwrite, sbinfo->si_xigen, &igen, + sizeof(igen), &pos); + if (sz == sizeof(igen)) + return; /* success */ + + if (unlikely(sz >= 0)) + AuIOErr("xigen error (%zd)\n", sz); +} + +int au_xigen_new(struct inode *inode) +{ + int err; + loff_t pos; + ssize_t sz; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct file *file; + + err = 0; + /* todo: dirty, at mount time */ + if (inode->i_ino == AUFS_ROOT_INO) + goto out; + sb = inode->i_sb; + SiMustAnyLock(sb); + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + goto out; + + err = -EFBIG; + pos = inode->i_ino; + if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { + AuIOErr1("too large i%lld\n", pos); + goto out; + } + pos *= sizeof(inode->i_generation); + + err = 0; + sbinfo = au_sbi(sb); + file = sbinfo->si_xigen; + BUG_ON(!file); + + if (i_size_read(file->f_dentry->d_inode) + < pos + sizeof(inode->i_generation)) { + inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); + sz = xino_fwrite(sbinfo->si_xwrite, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + } else + sz = xino_fread(sbinfo->si_xread, file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + if (sz == sizeof(inode->i_generation)) + goto out; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xigen error (%zd)\n", sz); + } + +out: + return err; +} + +int au_xigen_set(struct super_block *sb, struct file *base) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(base, sbinfo->si_xigen); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + err = 0; + if (sbinfo->si_xigen) + fput(sbinfo->si_xigen); + sbinfo->si_xigen = file; + +out: + return err; +} + +void au_xigen_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xigen) { + fput(sbinfo->si_xigen); + sbinfo->si_xigen = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino) +{ + struct dentry *dentry, *d; + struct inode *inode; + unsigned int sigen; + + dentry = NULL; + inode = ilookup(sb, ino); + if (!inode) + goto out; + + dentry = ERR_PTR(-ESTALE); + sigen = au_sigen(sb); + if (unlikely(is_bad_inode(inode) + || IS_DEADDIR(inode) + || sigen != au_iigen(inode))) + goto out_iput; + + dentry = NULL; + if (!dir_ino || S_ISDIR(inode->i_mode)) + dentry = d_find_alias(inode); + else { + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) { + spin_lock(&d->d_lock); + if (!au_test_anon(d) + && d->d_parent->d_inode->i_ino == dir_ino) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&d->d_lock); + } + spin_unlock(&inode->i_lock); + } + if (unlikely(dentry && au_digen_test(dentry, sigen))) { + /* need to refresh */ + dput(dentry); + dentry = NULL; + } + +out_iput: + iput(inode); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: dirty? */ +/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ + +struct au_compare_mnt_args { + /* input */ + struct super_block *sb; + + /* output */ + struct vfsmount *mnt; +}; + +static int au_compare_mnt(struct vfsmount *mnt, void *arg) +{ + struct au_compare_mnt_args *a = arg; + + if (mnt->mnt_sb != a->sb) + return 0; + a->mnt = mntget(mnt); + return 1; +} + +static struct vfsmount *au_mnt_get(struct super_block *sb) +{ + int err; + struct path root; + struct au_compare_mnt_args args = { + .sb = sb + }; + + get_fs_root(current->fs, &root); + br_read_lock(&vfsmount_lock); + err = iterate_mounts(au_compare_mnt, &args, root.mnt); + br_read_unlock(&vfsmount_lock); + path_put(&root); + AuDebugOn(!err); + AuDebugOn(!args.mnt); + return args.mnt; +} + +struct au_nfsd_si_lock { + unsigned int sigen; + aufs_bindex_t bindex, br_id; + unsigned char force_lock; +}; + +static int si_nfsd_read_lock(struct super_block *sb, + struct au_nfsd_si_lock *nsi_lock) +{ + int err; + aufs_bindex_t bindex; + + si_read_lock(sb, AuLock_FLUSH); + + /* branch id may be wrapped around */ + err = 0; + bindex = au_br_index(sb, nsi_lock->br_id); + if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) + goto out; /* success */ + + err = -ESTALE; + bindex = -1; + if (!nsi_lock->force_lock) + si_read_unlock(sb); + +out: + nsi_lock->bindex = bindex; + return err; +} + +struct find_name_by_ino { + int called, found; + ino_t ino; + char *name; + int namelen; +}; + +static int +find_name_by_ino(void *arg, const char *name, int namelen, loff_t offset, + u64 ino, unsigned int d_type) +{ + struct find_name_by_ino *a = arg; + + a->called++; + if (a->ino != ino) + return 0; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; + return 1; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *parent; + struct file *file; + struct inode *dir; + struct find_name_by_ino arg; + int err; + + parent = path->dentry; + if (nsi_lock) + si_read_unlock(parent->d_sb); + file = vfsub_dentry_open(path, au_dir_roflags); + dentry = (void *)file; + if (IS_ERR(file)) + goto out; + + dentry = ERR_PTR(-ENOMEM); + arg.name = __getname_gfp(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; + arg.found = 0; + do { + arg.called = 0; + /* smp_mb(); */ + err = vfsub_readdir(file, find_name_by_ino, &arg); + } while (!err && !arg.found && arg.called); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; + dentry = ERR_PTR(-ENOENT); + if (!arg.found) + goto out_name; + + /* do not call au_lkup_one() */ + dir = parent->d_inode; + mutex_lock(&dir->i_mutex); + dentry = vfsub_lookup_one_len(arg.name, parent, arg.namelen); + mutex_unlock(&dir->i_mutex); + AuTraceErrPtr(dentry); + if (IS_ERR(dentry)) + goto out_name; + AuDebugOn(au_test_anon(dentry)); + if (unlikely(!dentry->d_inode)) { + dput(dentry); + dentry = ERR_PTR(-ENOENT); + } + +out_name: + __putname(arg.name); +out_file: + fput(file); +out: + if (unlikely(nsi_lock + && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } + AuTraceErrPtr(dentry); + return dentry; +} + +static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry; + struct path path; + + if (dir_ino != AUFS_ROOT_INO) { + path.dentry = decode_by_ino(sb, dir_ino, 0); + dentry = path.dentry; + if (!path.dentry || IS_ERR(path.dentry)) + goto out; + AuDebugOn(au_test_anon(path.dentry)); + } else + path.dentry = dget(sb->s_root); + + path.mnt = au_mnt_get(sb); + dentry = au_lkup_by_ino(&path, ino, nsi_lock); + path_put(&path); + +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static int h_acceptable(void *expv, struct dentry *dentry) +{ + return 1; +} + +static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, + char *buf, int len, struct super_block *sb) +{ + char *p; + int n; + struct path path; + + p = d_path(h_rootpath, buf, len); + if (IS_ERR(p)) + goto out; + n = strlen(p); + + path.mnt = h_rootpath->mnt; + path.dentry = h_parent; + p = d_path(&path, buf, len); + if (IS_ERR(p)) + goto out; + if (n != 1) + p += n; + + path.mnt = au_mnt_get(sb); + path.dentry = sb->s_root; + p = d_path(&path, buf, len - strlen(p)); + mntput(path.mnt); + if (IS_ERR(p)) + goto out; + if (n != 1) + p[strlen(p)] = '/'; + +out: + AuTraceErrPtr(p); + return p; +} + +static +struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, + int fh_len, struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *h_parent, *root; + struct super_block *h_sb; + char *pathname, *p; + struct vfsmount *h_mnt; + struct au_branch *br; + int err; + struct path path; + + br = au_sbr(sb, nsi_lock->bindex); + h_mnt = br->br_mnt; + h_sb = h_mnt->mnt_sb; + /* todo: call lower fh_to_dentry()? fh_to_parent()? */ + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + dentry = h_parent; + if (unlikely(!h_parent || IS_ERR(h_parent))) { + AuWarn1("%s decode_fh failed, %ld\n", + au_sbtype(h_sb), PTR_ERR(h_parent)); + goto out; + } + dentry = NULL; + if (unlikely(au_test_anon(h_parent))) { + AuWarn1("%s decode_fh returned a disconnected dentry\n", + au_sbtype(h_sb)); + goto out_h_parent; + } + + dentry = ERR_PTR(-ENOMEM); + pathname = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!pathname)) + goto out_h_parent; + + root = sb->s_root; + path.mnt = h_mnt; + di_read_lock_parent(root, !AuLock_IR); + path.dentry = au_h_dptr(root, nsi_lock->bindex); + di_read_unlock(root, !AuLock_IR); + p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); + dentry = (void *)p; + if (IS_ERR(p)) + goto out_pathname; + + si_read_unlock(sb); + err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_relock; + + dentry = ERR_PTR(-ENOENT); + AuDebugOn(au_test_anon(path.dentry)); + if (unlikely(!path.dentry->d_inode)) + goto out_path; + + if (ino != path.dentry->d_inode->i_ino) + dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); + else + dentry = dget(path.dentry); + +out_path: + path_put(&path); +out_relock: + if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } +out_pathname: + free_page((unsigned long)pathname); +out_h_parent: + dput(h_parent); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry * +aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, + int fh_type) +{ + struct dentry *dentry; + __u32 *fh = fid->raw; + struct au_branch *br; + ino_t ino, dir_ino; + struct au_nfsd_si_lock nsi_lock = { + .force_lock = 0 + }; + + dentry = ERR_PTR(-ESTALE); + /* it should never happen, but the file handle is unreliable */ + if (unlikely(fh_len < Fh_tail)) + goto out; + nsi_lock.sigen = fh[Fh_sigen]; + nsi_lock.br_id = fh[Fh_br_id]; + + /* branch id may be wrapped around */ + br = NULL; + if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) + goto out; + nsi_lock.force_lock = 1; + + /* is this inode still cached? */ + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) + goto out; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* is the parent dir cached? */ + br = au_sbr(sb, nsi_lock.bindex); + atomic_inc(&br->br_count); + dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* lookup path */ + dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (unlikely(!dentry)) + /* todo?: make it ESTALE */ + goto out_unlock; + +accept: + if (!au_digen_test(dentry, au_sigen(sb)) + && dentry->d_inode->i_generation == fh[Fh_igen]) + goto out_unlock; /* success */ + + dput(dentry); + dentry = ERR_PTR(-ESTALE); +out_unlock: + if (br) + atomic_dec(&br->br_count); + si_read_unlock(sb); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +#if 0 /* reserved for future use */ +/* support subtreecheck option */ +static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, + int fh_len, int fh_type) +{ + struct dentry *parent; + __u32 *fh = fid->raw; + ino_t dir_ino; + + dir_ino = decode_ino(fh + Fh_dir_ino); + parent = decode_by_ino(sb, dir_ino, 0); + if (IS_ERR(parent)) + goto out; + if (!parent) + parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), + dir_ino, fh, fh_len); + +out: + AuTraceErrPtr(parent); + return parent; +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *dir) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct dentry *dentry, *parent, *h_parent; + struct inode *h_dir; + struct au_branch *br; + + err = -ENOSPC; + if (unlikely(*max_len <= Fh_tail)) { + AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); + goto out; + } + + err = FILEID_ROOT; + if (inode->i_ino == AUFS_ROOT_INO) { + AuDebugOn(inode->i_ino != AUFS_ROOT_INO); + goto out; + } + + h_parent = NULL; + sb = inode->i_sb; + err = si_read_lock(sb, AuLock_FLUSH); + if (unlikely(err)) + goto out; + +#ifdef CONFIG_AUFS_DEBUG + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + AuWarn1("NFS-exporting requires xino\n"); +#endif + err = -EIO; + parent = NULL; + ii_read_lock_child(inode); + bindex = au_ibstart(inode); + if (!dir) { + dentry = d_find_alias(inode); + if (unlikely(!dentry)) + goto out_unlock; + AuDebugOn(au_test_anon(dentry)); + parent = dget_parent(dentry); + dput(dentry); + if (unlikely(!parent)) + goto out_unlock; + dir = parent->d_inode; + } + + ii_read_lock_parent(dir); + h_dir = au_h_iptr(dir, bindex); + ii_read_unlock(dir); + if (unlikely(!h_dir)) + goto out_parent; + h_parent = d_find_alias(h_dir); + if (unlikely(!h_parent)) + goto out_hparent; + + err = -EPERM; + br = au_sbr(sb, bindex); + h_sb = br->br_mnt->mnt_sb; + if (unlikely(!h_sb->s_export_op)) { + AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); + goto out_hparent; + } + + fh[Fh_br_id] = br->br_id; + fh[Fh_sigen] = au_sigen(sb); + encode_ino(fh + Fh_ino, inode->i_ino); + encode_ino(fh + Fh_dir_ino, dir->i_ino); + fh[Fh_igen] = inode->i_generation; + + *max_len -= Fh_tail; + fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), + max_len, + /*connectable or subtreecheck*/0); + err = fh[Fh_h_type]; + *max_len += Fh_tail; + /* todo: macros? */ + if (err != 255) + err = 99; + else + AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); + +out_hparent: + dput(h_parent); +out_parent: + dput(parent); +out_unlock: + ii_read_unlock(inode); + si_read_unlock(sb); +out: + if (unlikely(err < 0)) + err = 255; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_commit_metadata(struct inode *inode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + int (*f)(struct inode *inode); + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + ii_write_lock_child(inode); + bindex = au_ibstart(inode); + AuDebugOn(bindex < 0); + h_inode = au_h_iptr(inode, bindex); + + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); + else { + struct writeback_control wbc = { + .sync_mode = WB_SYNC_ALL, + .nr_to_write = 0 /* metadata only */ + }; + + err = sync_inode(h_inode, &wbc); + } + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct export_operations aufs_export_op = { + .fh_to_dentry = aufs_fh_to_dentry, + /* .fh_to_parent = aufs_fh_to_parent, */ + .encode_fh = aufs_encode_fh, + .commit_metadata = aufs_commit_metadata +}; + +void au_export_init(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + __u32 u; + + sb->s_export_op = &aufs_export_op; + sbinfo = au_sbi(sb); + sbinfo->si_xigen = NULL; + get_random_bytes(&u, sizeof(u)); + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} --- linux-3.5.0.orig/ubuntu/aufs/dbgaufs.c +++ linux-3.5.0/ubuntu/aufs/dbgaufs.c @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debugfs interface + */ + +#include +#include "aufs.h" + +#ifndef CONFIG_SYSFS +#error DEBUG_FS depends upon SYSFS +#endif + +static struct dentry *dbgaufs; +static const mode_t dbgaufs_mode = S_IRUSR | S_IRGRP | S_IROTH; + +/* 20 is max digits length of ulong 64 */ +struct dbgaufs_arg { + int n; + char a[20 * 4]; +}; + +/* + * common function for all XINO files + */ +static int dbgaufs_xi_release(struct inode *inode __maybe_unused, + struct file *file) +{ + kfree(file->private_data); + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt) +{ + int err; + struct kstat st; + struct dbgaufs_arg *p; + + err = -ENOMEM; + p = kmalloc(sizeof(*p), GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + p->n = 0; + file->private_data = p; + if (!xf) + goto out; + + err = vfs_getattr(xf->f_vfsmnt, xf->f_dentry, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%ld, %llux%lu %lld\n", + (long)file_count(xf), st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%lu %lld\n", + st.blocks, st.blksize, + (long long)st.size); + AuDebugOn(p->n >= sizeof(p->a)); + } else { + p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); + err = 0; + } + +out: + return err; + +} + +static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +/* ---------------------------------------------------------------------- */ + +static int dbgaufs_xib_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xib_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xib_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +/* ---------------------------------------------------------------------- */ + +#define DbgaufsXi_PREFIX "xi" + +static int dbgaufs_xino_open(struct inode *inode, struct file *file) +{ + int err; + long l; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct file *xf; + struct qstr *name; + + err = -ENOENT; + xf = NULL; + name = &file->f_dentry->d_name; + if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) + || memcmp(name->name, DbgaufsXi_PREFIX, + sizeof(DbgaufsXi_PREFIX) - 1))) + goto out; + err = kstrtol(name->name + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (l <= au_sbend(sb)) { + xf = au_sbr(sb, (aufs_bindex_t)l)->br_xino.xi_file; + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1); + } else + err = -ENOENT; + si_read_unlock(sb); + +out: + return err; +} + +static const struct file_operations dbgaufs_xino_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xino_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bend; + struct au_branch *br; + struct au_xino_file *xi; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + xi = &br->br_xino; + if (xi->xi_dbgaufs) { + debugfs_remove(xi->xi_dbgaufs); + xi->xi_dbgaufs = NULL; + } + } +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + struct au_branch *br; + struct au_xino_file *xi; + aufs_bindex_t bend; + char name[sizeof(DbgaufsXi_PREFIX) + 5]; /* "xi" bindex NULL */ + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + br = au_sbr(sb, bindex); + xi = &br->br_xino; + AuDebugOn(xi->xi_dbgaufs); + xi->xi_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + /* ignore an error */ + if (unlikely(!xi->xi_dbgaufs)) + AuWarn1("failed %s under debugfs\n", name); + } +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +static int dbgaufs_xigen_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xigen_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xigen_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + int err; + + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -EIO; + sbinfo->si_dbgaufs_xigen = debugfs_create_file + ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xigen_fop); + if (sbinfo->si_dbgaufs_xigen) + err = 0; + + return err; +} +#else +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + return 0; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_si_fin(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + debugfs_remove_recursive(sbinfo->si_dbgaufs); + sbinfo->si_dbgaufs = NULL; + kobject_put(&sbinfo->si_kobj); +} + +int dbgaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + char name[SysaufsSiNameLen]; + + /* + * This function is a dynamic '__init' fucntion actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -ENOENT; + if (!dbgaufs) { + AuErr1("/debug/aufs is uninitialized\n"); + goto out; + } + + err = -EIO; + sysaufs_name(sbinfo, name); + sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); + if (unlikely(!sbinfo->si_dbgaufs)) + goto out; + kobject_get(&sbinfo->si_kobj); + + sbinfo->si_dbgaufs_xib = debugfs_create_file + ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xib_fop); + if (unlikely(!sbinfo->si_dbgaufs_xib)) + goto out_dir; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_fin(void) +{ + debugfs_remove(dbgaufs); +} + +int __init dbgaufs_init(void) +{ + int err; + + err = -EIO; + dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); + if (dbgaufs) + err = 0; + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/magic.mk +++ linux-3.5.0/ubuntu/aufs/magic.mk @@ -0,0 +1,54 @@ + +# defined in ${srctree}/fs/fuse/inode.c +# tristate +ifdef CONFIG_FUSE_FS +ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 +endif + +# defined in ${srctree}/fs/ocfs2/ocfs2_fs.h +# tristate +ifdef CONFIG_OCFS2_FS +ccflags-y += -DOCFS2_SUPER_MAGIC=0x7461636f +endif + +# defined in ${srctree}/fs/ocfs2/dlm/userdlm.h +# tristate +ifdef CONFIG_OCFS2_FS_O2CB +ccflags-y += -DDLMFS_MAGIC=0x76a9f425 +endif + +# defined in ${srctree}/fs/cifs/cifsfs.c +# tristate +ifdef CONFIG_CIFS_FS +ccflags-y += -DCIFS_MAGIC_NUMBER=0xFF534D42 +endif + +# defined in ${srctree}/fs/xfs/xfs_sb.h +# tristate +ifdef CONFIG_XFS_FS +ccflags-y += -DXFS_SB_MAGIC=0x58465342 +endif + +# defined in ${srctree}/fs/configfs/mount.c +# tristate +ifdef CONFIG_CONFIGFS_FS +ccflags-y += -DCONFIGFS_MAGIC=0x62656570 +endif + +# defined in ${srctree}/fs/9p/v9fs.h +# tristate +ifdef CONFIG_9P_FS +ccflags-y += -DV9FS_MAGIC=0x01021997 +endif + +# defined in ${srctree}/fs/ubifs/ubifs.h +# tristate +ifdef CONFIG_UBIFS_FS +ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 +endif + +# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h +# tristate +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif --- linux-3.5.0.orig/ubuntu/aufs/branch.h +++ linux-3.5.0/ubuntu/aufs/branch.h @@ -0,0 +1,230 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * branch filesystems and xino for them + */ + +#ifndef __AUFS_BRANCH_H__ +#define __AUFS_BRANCH_H__ + +#ifdef __KERNEL__ + +#include +#include "dynop.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino_file { + struct file *xi_file; + struct mutex xi_nondir_mtx; + + /* todo: make xino files an array to support huge inode number */ + +#ifdef CONFIG_DEBUG_FS + struct dentry *xi_dbgaufs; +#endif +}; + +/* members for writable branch only */ +enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; +struct au_wbr { + struct au_rwsem wbr_wh_rwsem; + struct dentry *wbr_wh[AuBrWh_Last]; + atomic_t wbr_wh_running; +#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ +#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ +#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ + + /* mfs mode */ + unsigned long long wbr_bytes; +}; + +/* ext2 has 3 types of operations at least, ext3 has 4 */ +#define AuBrDynOp (AuDyLast * 4) + +/* protected by superblock rwsem */ +struct au_branch { + struct au_xino_file br_xino; + + aufs_bindex_t br_id; + + int br_perm; + struct vfsmount *br_mnt; + spinlock_t br_dykey_lock; + struct au_dykey *br_dykey[AuBrDynOp]; + atomic_t br_count; + + struct au_wbr *br_wbr; + + /* xino truncation */ + blkcnt_t br_xino_upper; /* watermark in blocks */ + atomic_t br_xino_running; + +#ifdef CONFIG_AUFS_HFSNOTIFY + struct fsnotify_group *br_hfsn_group; + struct fsnotify_ops br_hfsn_ops; +#endif + +#ifdef CONFIG_SYSFS + /* an entry under sysfs per mount-point */ + char br_name[8]; + struct attribute br_attr; +#endif +}; + +/* ---------------------------------------------------------------------- */ + +/* branch permissions and attributes */ +#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ +#define AuBrPerm_RO (1 << 1) /* readonly */ +#define AuBrPerm_RR (1 << 2) /* natively readonly */ +#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) + +#define AuBrRAttr_WH (1 << 3) /* whiteout-able */ + +#define AuBrWAttr_NoLinkWH (1 << 4) /* un-hardlinkable whiteouts */ + +static inline int au_br_writable(int brperm) +{ + return brperm & AuBrPerm_RW; +} + +static inline int au_br_whable(int brperm) +{ + return brperm & (AuBrPerm_RW | AuBrRAttr_WH); +} + +static inline int au_br_wh_linkable(int brperm) +{ + return !(brperm & AuBrWAttr_NoLinkWH); +} + +static inline int au_br_rdonly(struct au_branch *br) +{ + return ((br->br_mnt->mnt_sb->s_flags & MS_RDONLY) + || !au_br_writable(br->br_perm)) + ? -EROFS : 0; +} + +static inline int au_br_hnotifyable(int brperm __maybe_unused) +{ +#ifdef CONFIG_AUFS_HNOTIFY + return !(brperm & AuBrPerm_RR); +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* branch.c */ +struct au_sbinfo; +void au_br_free(struct au_sbinfo *sinfo); +int au_br_index(struct super_block *sb, aufs_bindex_t br_id); +struct au_opt_add; +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); +struct au_opt_del; +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); +long au_ibusy_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); +#endif +struct au_opt_mod; +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh); + +/* xino.c */ +static const loff_t au_loff_max = LLONG_MAX; + +int au_xib_trunc(struct super_block *sb); +ssize_t xino_fread(au_readf_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +ssize_t xino_fwrite(au_writef_t func, struct file *file, void *buf, size_t size, + loff_t *pos); +struct file *au_xino_create2(struct file *base_file, struct file *copy_src); +struct file *au_xino_create(struct super_block *sb, char *fname, int silent); +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct file *base_file, int do_test); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex); + +struct au_opt_xino; +int au_xino_set(struct super_block *sb, struct au_opt_xino *xino, int remount); +void au_xino_clr(struct super_block *sb); +struct file *au_xino_def(struct super_block *sb); +int au_xino_path(struct seq_file *seq, struct file *file); + +/* ---------------------------------------------------------------------- */ + +/* Superblock to branch */ +static inline +aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_id; +} + +static inline +struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_mnt; +} + +static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr_mnt(sb, bindex)->mnt_sb; +} + +static inline void au_sbr_put(struct super_block *sb, aufs_bindex_t bindex) +{ + atomic_dec(&au_sbr(sb, bindex)->br_count); +} + +static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_perm; +} + +static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_whable(au_sbr_perm(sb, bindex)); +} + +/* ---------------------------------------------------------------------- */ + +/* + * wbr_wh_read_lock, wbr_wh_write_lock + * wbr_wh_read_unlock, wbr_wh_write_unlock, wbr_wh_downgrade_lock + */ +AuSimpleRwsemFuncs(wbr_wh, struct au_wbr *wbr, &wbr->wbr_wh_rwsem); + +#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&wbr->wbr_wh_rwsem) +#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&wbr->wbr_wh_rwsem) +#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&wbr->wbr_wh_rwsem) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/debug.h +++ linux-3.5.0/ubuntu/aufs/debug.h @@ -0,0 +1,242 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debug print functions + */ + +#ifndef __AUFS_DEBUG_H__ +#define __AUFS_DEBUG_H__ + +#ifdef __KERNEL__ + +#include +#include +#include + +#ifdef CONFIG_AUFS_DEBUG +#define AuDebugOn(a) BUG_ON(a) + +/* module parameter */ +extern int aufs_debug; +static inline void au_debug(int n) +{ + aufs_debug = n; + smp_mb(); +} + +static inline int au_debug_test(void) +{ + return aufs_debug; +} +#else +#define AuDebugOn(a) do {} while (0) +AuStubVoid(au_debug, int n) +AuStubInt0(au_debug_test, void) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +/* debug print */ + +#define AuDbg(fmt, ...) do { \ + if (au_debug_test()) \ + pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ +} while (0) +#define AuLabel(l) AuDbg(#l "\n") +#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) +#define AuWarn1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_warn(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_err(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuIOErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + AuIOErr(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuUnsupportMsg "This operation is not supported." \ + " Please report this application to aufs-users ML." +#define AuUnsupport(fmt, ...) do { \ + pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ + dump_stack(); \ +} while (0) + +#define AuTraceErr(e) do { \ + if (unlikely((e) < 0)) \ + AuDbg("err %d\n", (int)(e)); \ +} while (0) + +#define AuTraceErrPtr(p) do { \ + if (IS_ERR(p)) \ + AuDbg("err %ld\n", PTR_ERR(p)); \ +} while (0) + +/* dirty macros for debug print, use with "%.*s" and caution */ +#define AuLNPair(qstr) (qstr)->len, (qstr)->name +#define AuDLNPair(d) AuLNPair(&(d)->d_name) + +/* ---------------------------------------------------------------------- */ + +struct au_sbinfo; +struct au_finfo; +struct dentry; +#ifdef CONFIG_AUFS_DEBUG +extern char *au_plevel; +struct au_nhash; +void au_dpri_whlist(struct au_nhash *whlist); +struct au_vdir; +void au_dpri_vdir(struct au_vdir *vdir); +struct inode; +void au_dpri_inode(struct inode *inode); +void au_dpri_dalias(struct inode *inode); +void au_dpri_dentry(struct dentry *dentry); +struct file; +void au_dpri_file(struct file *filp); +struct super_block; +void au_dpri_sb(struct super_block *sb); + +void au_dbg_sleep_jiffy(int jiffy); +struct iattr; +void au_dbg_iattr(struct iattr *ia); + +#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); +void au_dbg_verify_dir_parent(struct dentry *dentry, unsigned int sigen); +void au_dbg_verify_nondir_parent(struct dentry *dentry, unsigned int sigen); +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); +void au_dbg_verify_kthread(void); + +int __init au_debug_init(void); +void au_debug_sbinfo_init(struct au_sbinfo *sbinfo); +#define AuDbgWhlist(w) do { \ + AuDbg(#w "\n"); \ + au_dpri_whlist(w); \ +} while (0) + +#define AuDbgVdir(v) do { \ + AuDbg(#v "\n"); \ + au_dpri_vdir(v); \ +} while (0) + +#define AuDbgInode(i) do { \ + AuDbg(#i "\n"); \ + au_dpri_inode(i); \ +} while (0) + +#define AuDbgDAlias(i) do { \ + AuDbg(#i "\n"); \ + au_dpri_dalias(i); \ +} while (0) + +#define AuDbgDentry(d) do { \ + AuDbg(#d "\n"); \ + au_dpri_dentry(d); \ +} while (0) + +#define AuDbgFile(f) do { \ + AuDbg(#f "\n"); \ + au_dpri_file(f); \ +} while (0) + +#define AuDbgSb(sb) do { \ + AuDbg(#sb "\n"); \ + au_dpri_sb(sb); \ +} while (0) + +#define AuDbgSleep(sec) do { \ + AuDbg("sleep %d sec\n", sec); \ + ssleep(sec); \ +} while (0) + +#define AuDbgSleepJiffy(jiffy) do { \ + AuDbg("sleep %d jiffies\n", jiffy); \ + au_dbg_sleep_jiffy(jiffy); \ +} while (0) + +#define AuDbgIAttr(ia) do { \ + AuDbg("ia_valid 0x%x\n", (ia)->ia_valid); \ + au_dbg_iattr(ia); \ +} while (0) + +#define AuDbgSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuDbg("%s\n", sym); \ +} while (0) + +#define AuInfoSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuInfo("%s\n", sym); \ +} while (0) +#else +AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) +AuStubVoid(au_dbg_verify_dir_parent, struct dentry *dentry, unsigned int sigen) +AuStubVoid(au_dbg_verify_nondir_parent, struct dentry *dentry, + unsigned int sigen) +AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) +AuStubVoid(au_dbg_verify_kthread, void) +AuStubInt0(__init au_debug_init, void) +AuStubVoid(au_debug_sbinfo_init, struct au_sbinfo *sbinfo) + +#define AuDbgWhlist(w) do {} while (0) +#define AuDbgVdir(v) do {} while (0) +#define AuDbgInode(i) do {} while (0) +#define AuDbgDAlias(i) do {} while (0) +#define AuDbgDentry(d) do {} while (0) +#define AuDbgFile(f) do {} while (0) +#define AuDbgSb(sb) do {} while (0) +#define AuDbgSleep(sec) do {} while (0) +#define AuDbgSleepJiffy(jiffy) do {} while (0) +#define AuDbgIAttr(ia) do {} while (0) +#define AuDbgSym(addr) do {} while (0) +#define AuInfoSym(addr) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +int __init au_sysrq_init(void); +void au_sysrq_fin(void); + +#ifdef CONFIG_HW_CONSOLE +#define au_dbg_blocked() do { \ + WARN_ON(1); \ + handle_sysrq('w'); \ +} while (0) +#else +AuStubVoid(au_dbg_blocked, void) +#endif + +#else +AuStubInt0(__init au_sysrq_init, void) +AuStubVoid(au_sysrq_fin, void) +AuStubVoid(au_dbg_blocked, void) +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dentry.c +++ linux-3.5.0/ubuntu/aufs/dentry.c @@ -0,0 +1,1140 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * lookup and dentry operations + */ + +#include +#include "aufs.h" + +static void au_h_nd(struct nameidata *h_nd, struct nameidata *nd) +{ + if (nd) { + *h_nd = *nd; + + /* + * gave up supporting LOOKUP_CREATE/OPEN for lower fs, + * due to whiteout and branch permission. + */ + h_nd->flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE + | LOOKUP_FOLLOW | LOOKUP_EXCL); + /* unnecessary? */ + h_nd->intent.open.file = NULL; + } else + memset(h_nd, 0, sizeof(*h_nd)); +} + +struct au_lkup_one_args { + struct dentry **errp; + struct qstr *name; + struct dentry *h_parent; + struct au_branch *br; + struct nameidata *nd; +}; + +struct dentry *au_lkup_one(struct qstr *name, struct dentry *h_parent, + struct au_branch *br, struct nameidata *nd) +{ + struct dentry *h_dentry; + int err; + struct nameidata h_nd; + + if (au_test_fs_null_nd(h_parent->d_sb)) + return vfsub_lookup_one_len(name->name, h_parent, name->len); + + au_h_nd(&h_nd, nd); + h_nd.path.dentry = h_parent; + h_nd.path.mnt = br->br_mnt; + + err = vfsub_name_hash(name->name, &h_nd.last, name->len); + h_dentry = ERR_PTR(err); + if (!err) { + path_get(&h_nd.path); + h_dentry = vfsub_lookup_hash(&h_nd); + path_put(&h_nd.path); + } + + AuTraceErrPtr(h_dentry); + return h_dentry; +} + +static void au_call_lkup_one(void *args) +{ + struct au_lkup_one_args *a = args; + *a->errp = au_lkup_one(a->name, a->h_parent, a->br, a->nd); +} + +#define AuLkup_ALLOW_NEG 1 +#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) +#define au_fset_lkup(flags, name) \ + do { (flags) |= AuLkup_##name; } while (0) +#define au_fclr_lkup(flags, name) \ + do { (flags) &= ~AuLkup_##name; } while (0) + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; + struct nameidata *nd; +}; + +/* + * returns positive/negative dentry, NULL or an error. + * NULL means whiteout-ed or not-found. + */ +static struct dentry* +au_do_lookup(struct dentry *h_parent, struct dentry *dentry, + aufs_bindex_t bindex, struct qstr *wh_name, + struct au_do_lookup_args *args) +{ + struct dentry *h_dentry; + struct inode *h_inode, *inode; + struct au_branch *br; + int wh_found, opq; + unsigned char wh_able; + const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); + + wh_found = 0; + br = au_sbr(dentry->d_sb, bindex); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) + wh_found = au_wh_test(h_parent, wh_name, br, /*try_sio*/0); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; + if (unlikely(wh_found < 0)) + goto out; + + /* We found a whiteout */ + /* au_set_dbend(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + h_dentry = au_lkup_one(&dentry->d_name, h_parent, br, args->nd); + if (IS_ERR(h_dentry)) + goto out; + + h_inode = h_dentry->d_inode; + if (!h_inode) { + if (!allow_neg) + goto out_neg; + } else if (wh_found + || (args->type && args->type != (h_inode->i_mode & S_IFMT))) + goto out_neg; + + if (au_dbend(dentry) <= bindex) + au_set_dbend(dentry, bindex); + if (au_dbstart(dentry) < 0 || bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + + inode = dentry->d_inode; + if (!h_inode || !S_ISDIR(h_inode->i_mode) || !wh_able + || (inode && !S_ISDIR(inode->i_mode))) + goto out; /* success */ + + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + opq = au_diropq_test(h_dentry, br); + mutex_unlock(&h_inode->i_mutex); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); + else if (unlikely(opq < 0)) { + au_set_h_dptr(dentry, bindex, NULL); + h_dentry = ERR_PTR(opq); + } + goto out; + +out_neg: + dput(h_dentry); + h_dentry = NULL; +out: + return h_dentry; +} + +static int au_test_shwh(struct super_block *sb, const struct qstr *name) +{ + if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) + && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) + return -EPERM; + return 0; +} + +/* + * returns the number of lower positive dentries, + * otherwise an error. + * can be called at unlinking with @type is zero. + */ +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t bstart, mode_t type, + struct nameidata *nd) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir; + struct qstr whname; + struct au_do_lookup_args args = { + .flags = 0, + .type = type, + .nd = nd + }; + const struct qstr *name = &dentry->d_name; + struct dentry *parent; + struct inode *inode; + + err = au_test_shwh(dentry->d_sb, name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&whname, name); + if (unlikely(err)) + goto out; + + inode = dentry->d_inode; + isdir = !!(inode && S_ISDIR(inode->i_mode)); + if (!type) + au_fset_lkup(args.flags, ALLOW_NEG); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = bstart; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (h_dentry->d_inode) + npositive++; + if (type != S_IFDIR) + break; + continue; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent) + continue; + h_dir = h_parent->d_inode; + if (!h_dir || !S_ISDIR(h_dir->i_mode)) + continue; + + mutex_lock_nested(&h_dir->i_mutex, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &whname, + &args); + mutex_unlock(&h_dir->i_mutex); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out_parent; + au_fclr_lkup(args.flags, ALLOW_NEG); + + if (au_dbwh(dentry) >= 0) + break; + if (!h_dentry) + continue; + h_inode = h_dentry->d_inode; + if (!h_inode) + continue; + npositive++; + if (!args.type) + args.type = h_inode->i_mode & S_IFMT; + if (args.type != S_IFDIR) + break; + else if (isdir) { + /* the type of lower may be different */ + bdiropq = au_dbdiropq(dentry); + if (bdiropq >= 0 && bdiropq <= bindex) + break; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbstart(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && au_dbstart(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %.*s, err %d\n", + AuDLNPair(dentry), err); + } + +out_parent: + dput(parent); + kfree(whname.name); +out: + return err; +} + +struct dentry *au_sio_lkup_one(struct qstr *name, struct dentry *parent, + struct au_branch *br) +{ + struct dentry *dentry; + int wkq_err; + + if (!au_test_h_perm_sio(parent->d_inode, MAY_EXEC)) + dentry = au_lkup_one(name, parent, br, /*nd*/NULL); + else { + struct au_lkup_one_args args = { + .errp = &dentry, + .name = name, + .h_parent = parent, + .br = br, + .nd = NULL + }; + + wkq_err = au_wkq_wait(au_call_lkup_one, &args); + if (unlikely(wkq_err)) + dentry = ERR_PTR(wkq_err); + } + + return dentry; +} + +/* + * lookup @dentry on @bindex which should be negative. + */ +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err; + struct dentry *parent, *h_parent, *h_dentry; + + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bindex); + h_dentry = au_sio_lkup_one(&dentry->d_name, h_parent, + au_sbr(dentry->d_sb, bindex)); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; + if (unlikely(h_dentry->d_inode)) { + err = -EIO; + AuIOErr("%.*s should be negative on b%d.\n", + AuDLNPair(h_dentry), bindex); + dput(h_dentry); + goto out; + } + + err = 0; + if (bindex < au_dbstart(dentry)) + au_set_dbstart(dentry, bindex); + if (au_dbend(dentry) < bindex) + au_set_dbend(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* subset of struct inode */ +struct au_iattr { + unsigned long i_ino; + /* unsigned int i_nlink; */ + kuid_t i_uid; + kgid_t i_gid; + u64 i_version; +/* + loff_t i_size; + blkcnt_t i_blocks; +*/ + umode_t i_mode; +}; + +static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) +{ + ia->i_ino = h_inode->i_ino; + /* ia->i_nlink = h_inode->i_nlink; */ + ia->i_uid = h_inode->i_uid; + ia->i_gid = h_inode->i_gid; + ia->i_version = h_inode->i_version; +/* + ia->i_size = h_inode->i_size; + ia->i_blocks = h_inode->i_blocks; +*/ + ia->i_mode = (h_inode->i_mode & S_IFMT); +} + +static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) +{ + return ia->i_ino != h_inode->i_ino + /* || ia->i_nlink != h_inode->i_nlink */ + || !uid_eq(ia->i_uid, h_inode->i_uid) + || !gid_eq(ia->i_gid, h_inode->i_gid) + || ia->i_version != h_inode->i_version +/* + || ia->i_size != h_inode->i_size + || ia->i_blocks != h_inode->i_blocks +*/ + || ia->i_mode != (h_inode->i_mode & S_IFMT); +} + +static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, + struct au_branch *br) +{ + int err; + struct au_iattr ia; + struct inode *h_inode; + struct dentry *h_d; + struct super_block *h_sb; + + err = 0; + memset(&ia, -1, sizeof(ia)); + h_sb = h_dentry->d_sb; + h_inode = h_dentry->d_inode; + if (h_inode) + au_iattr_save(&ia, h_inode); + else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) + /* nfs d_revalidate may return 0 for negative dentry */ + /* fuse d_revalidate always return 0 for negative dentry */ + goto out; + + /* main purpose is namei.c:cached_lookup() and d_revalidate */ + h_d = au_lkup_one(&h_dentry->d_name, h_parent, br, /*nd*/NULL); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out; + + err = 0; + if (unlikely(h_d != h_dentry + || h_d->d_inode != h_inode + || (h_inode && au_iattr_test(&ia, h_inode)))) + err = au_busy_or_stale(); + dput(h_d); + +out: + AuTraceErr(err); + return err; +} + +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br) +{ + int err; + + err = 0; + if (udba == AuOpt_UDBA_REVAL + && !au_test_fs_remote(h_dentry->d_sb)) { + IMustLock(h_dir); + err = (h_dentry->d_parent->d_inode != h_dir); + } else if (udba != AuOpt_UDBA_NONE) + err = au_h_verify_dentry(h_dentry, h_parent, br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) +{ + int err; + aufs_bindex_t new_bindex, bindex, bend, bwh, bdiropq; + struct au_hdentry tmp, *p, *q; + struct au_dinfo *dinfo; + struct super_block *sb; + + DiMustWriteLock(dentry); + + sb = dentry->d_sb; + dinfo = au_di(dentry); + bend = dinfo->di_bend; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + p = dinfo->di_hdentry + dinfo->di_bstart; + for (bindex = dinfo->di_bstart; bindex <= bend; bindex++, p++) { + if (!p->hd_dentry) + continue; + + new_bindex = au_br_index(sb, p->hd_id); + if (new_bindex == bindex) + continue; + + if (dinfo->di_bwh == bindex) + bwh = new_bindex; + if (dinfo->di_bdiropq == bindex) + bdiropq = new_bindex; + if (new_bindex < 0) { + au_hdput(p); + p->hd_dentry = NULL; + continue; + } + + /* swap two lower dentries, and loop again */ + q = dinfo->di_hdentry + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbend(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbend(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_bstart = -1; + dinfo->di_bend = -1; + bend = au_dbend(parent); + p = dinfo->di_hdentry; + for (bindex = 0; bindex <= bend; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_bstart = bindex; + break; + } + + if (dinfo->di_bstart >= 0) { + p = dinfo->di_hdentry + bend; + for (bindex = bend; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bend = bindex; + err = 0; + break; + } + } + + return err; +} + +static void au_do_hide(struct dentry *dentry) +{ + struct inode *inode; + + inode = dentry->d_inode; + if (inode) { + if (!S_ISDIR(inode->i_mode)) { + if (inode->i_nlink && !d_unhashed(dentry)) + drop_nlink(inode); + } else { + clear_nlink(inode); + /* stop next lookup */ + inode->i_flags |= S_DEAD; + } + smp_mb(); /* necessary? */ + } + d_drop(dentry); +} + +static int au_hide_children(struct dentry *parent) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *dentry; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, parent, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + /* in reverse order */ + for (i = dpages.ndpage - 1; i >= 0; i--) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = ndentry - 1; j >= 0; j--) { + dentry = dpage->dentries[j]; + if (dentry != parent) + au_do_hide(dentry); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static void au_hide(struct dentry *dentry) +{ + int err; + struct inode *inode; + + AuDbgDentry(dentry); + inode = dentry->d_inode; + if (inode && S_ISDIR(inode->i_mode)) { + /* shrink_dcache_parent(dentry); */ + err = au_hide_children(dentry); + if (unlikely(err)) + AuIOErr("%.*s, failed hiding children, ignored %d\n", + AuDLNPair(dentry), err); + } + au_do_hide(dentry); +} + +/* + * By adding a dirty branch, a cached dentry may be affected in various ways. + * + * a dirty branch is added + * - on the top of layers + * - in the middle of layers + * - to the bottom of layers + * + * on the added branch there exists + * - a whiteout + * - a diropq + * - a same named entry + * + exist + * * negative --> positive + * * positive --> positive + * - type is unchanged + * - type is changed + * + doesn't exist + * * negative --> negative + * * positive --> negative (rejected by au_br_del() for non-dir case) + * - none + */ +static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, + struct au_dinfo *tmp) +{ + int err; + aufs_bindex_t bindex, bend; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_bstart < 0); + orig_h.dentry = dinfo->di_hdentry[dinfo->di_bstart].hd_dentry; + orig_h.inode = orig_h.dentry->d_inode; + orig_h.mode = 0; + if (orig_h.inode) + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + memset(&tmp_h, 0, sizeof(tmp_h)); + if (tmp->di_bstart >= 0) { + tmp_h.dentry = tmp->di_hdentry[tmp->di_bstart].hd_dentry; + tmp_h.inode = tmp_h.dentry->d_inode; + if (tmp_h.inode) + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; + } + + inode = dentry->d_inode; + if (!orig_h.inode) { + AuDbg("nagative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_bstart >= 0 + && tmp->di_bstart < dinfo->di_bstart) { + AuDebugOn(tmp->di_bstart != tmp->di_bend); + AuDebugOn(dinfo->di_bstart != dinfo->di_bend); + au_set_h_dptr(dentry, dinfo->di_bstart, NULL); + au_di_cp(dinfo, tmp); + hd = tmp->di_hdentry + tmp->di_bstart; + au_set_h_dptr(dentry, tmp->di_bstart, + dget(hd->hd_dentry)); + } + au_dbg_verify_dinode(dentry); + } else { + AuDbg("negative --> positive\n"); + /* + * similar to the behaviour of creating with bypassing + * aufs. + * unhash it in order to force an error in the + * succeeding create operation. + * we should not set S_DEAD here. + */ + d_drop(dentry); + /* au_di_swap(tmp, dinfo); */ + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive originally\n"); + /* inode may be NULL */ + AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); + if (!tmp_h.inode) { + AuDbg("positive --> negative\n"); + /* or bypassing aufs */ + au_hide(dentry); + if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_bstart) + dinfo->di_bwh = tmp->di_bwh; + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else if (orig_h.mode == tmp_h.mode) { + AuDbg("positive --> positive, same type\n"); + if (!S_ISDIR(orig_h.mode) + && dinfo->di_bstart > tmp->di_bstart) { + /* + * similar to the behaviour of removing and + * creating. + */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else { + /* fill empty slots */ + if (dinfo->di_bstart > tmp->di_bstart) + dinfo->di_bstart = tmp->di_bstart; + if (dinfo->di_bend < tmp->di_bend) + dinfo->di_bend = tmp->di_bend; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + hd = tmp->di_hdentry; + bend = dinfo->di_bend; + for (bindex = tmp->di_bstart; bindex <= bend; + bindex++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd[bindex].hd_dentry; + if (!h_dentry) + continue; + h_inode = h_dentry->d_inode; + AuDebugOn(!h_inode); + AuDebugOn(orig_h.mode + != (h_inode->i_mode + & S_IFMT)); + au_set_h_dptr(dentry, bindex, + dget(h_dentry)); + } + err = au_refresh_hinode(inode, dentry); + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive --> positive, different type\n"); + /* similar to the behaviour of removing and creating */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } + } + +out: + return err; +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange; + unsigned int sigen; + struct au_dinfo *dinfo, *tmp; + struct super_block *sb; + struct inode *inode; + + DiMustWriteLock(dentry); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(!parent->d_inode); + + sb = dentry->d_sb; + inode = dentry->d_inode; + sigen = au_sigen(sb); + err = au_digen_test(parent, sigen); + if (unlikely(err)) + goto out; + + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, au_sbend(sb) + 1); + if (unlikely(err)) + goto out; + ebrange = au_dbrange_test(dentry); + if (!ebrange) + ebrange = au_do_refresh_hdentry(dentry, parent); + + if (d_unhashed(dentry) || ebrange) { + AuDebugOn(au_dbstart(dentry) < 0 && au_dbend(dentry) >= 0); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + if (!err) + goto out_dgen; /* success */ + goto out; + } + + /* temporary dinfo */ + AuDbgDentry(dentry); + err = -ENOMEM; + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + /* + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ + err = au_lkup_dentry(dentry, /*bstart*/0, /*type*/0, /*nd*/NULL); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) + err = 0; + if (err >= 0) { + /* compare/refresh by dinfo */ + AuDbgDentry(dentry); + err = au_refresh_by_dinfo(dentry, dinfo, tmp); + au_dbg_verify_dinode(dentry); + AuTraceErr(err); + } + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err)) + goto out; + +out_dgen: + au_update_digen(dentry); +out: + if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { + AuIOErr("failed refreshing %.*s, %d\n", + AuDLNPair(dentry), err); + AuDbgDentry(dentry); + } + AuTraceErr(err); + return err; +} + +static noinline_for_stack +int au_do_h_d_reval(struct dentry *h_dentry, struct nameidata *nd, + struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, valid; + int (*reval)(struct dentry *, struct nameidata *); + + err = 0; + if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) + goto out; + reval = h_dentry->d_op->d_revalidate; + + AuDbg("b%d\n", bindex); + if (au_test_fs_null_nd(h_dentry->d_sb)) + /* it may return tri-state */ + valid = reval(h_dentry, NULL); + else { + struct nameidata h_nd; + int locked; + struct dentry *parent; + + au_h_nd(&h_nd, nd); + parent = nd->path.dentry; + locked = (nd && nd->path.dentry != dentry); + if (locked) + di_read_lock_parent(parent, AuLock_IR); + BUG_ON(bindex > au_dbend(parent)); + h_nd.path.dentry = au_h_dptr(parent, bindex); + BUG_ON(!h_nd.path.dentry); + h_nd.path.mnt = au_sbr(parent->d_sb, bindex)->br_mnt; + path_get(&h_nd.path); + valid = reval(h_dentry, &h_nd); + path_put(&h_nd.path); + if (locked) + di_read_unlock(parent, AuLock_IR); + } + + if (unlikely(valid < 0)) + err = valid; + else if (!valid) + err = -EINVAL; + +out: + AuTraceErr(err); + return err; +} + +/* todo: remove this */ +static int h_d_revalidate(struct dentry *dentry, struct inode *inode, + struct nameidata *nd, int do_udba) +{ + int err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, bstart, ibs, ibe; + unsigned char plus, unhashed, is_root, h_plus; + struct inode *h_inode, *h_cached_inode; + struct dentry *h_dentry; + struct qstr *name, *h_name; + + err = 0; + plus = 0; + mode = 0; + ibs = -1; + ibe = -1; + unhashed = !!d_unhashed(dentry); + is_root = !!IS_ROOT(dentry); + name = &dentry->d_name; + + /* + * Theoretically, REVAL test should be unnecessary in case of + * {FS,I}NOTIFY. + * But {fs,i}notify doesn't fire some necessary events, + * IN_ATTRIB for atime/nlink/pageio + * IN_DELETE for NFS dentry + * Let's do REVAL test too. + */ + if (do_udba && inode) { + mode = (inode->i_mode & S_IFMT); + plus = (inode->i_nlink > 0); + ibs = au_ibstart(inode); + ibe = au_ibend(inode); + } + + bstart = au_dbstart(dentry); + btail = bstart; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = bstart; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + AuDbg("b%d, %.*s\n", bindex, AuDLNPair(h_dentry)); + spin_lock(&h_dentry->d_lock); + h_name = &h_dentry->d_name; + if (unlikely(do_udba + && !is_root + && (unhashed != !!d_unhashed(h_dentry) + || name->len != h_name->len + || memcmp(name->name, h_name->name, name->len)) + )) { + AuDbg("unhash 0x%x 0x%x, %.*s %.*s\n", + unhashed, d_unhashed(h_dentry), + AuDLNPair(dentry), AuDLNPair(h_dentry)); + spin_unlock(&h_dentry->d_lock); + goto err; + } + spin_unlock(&h_dentry->d_lock); + + err = au_do_h_d_reval(h_dentry, nd, dentry, bindex); + if (unlikely(err)) + /* do not goto err, to keep the errno */ + break; + + /* todo: plink too? */ + if (!do_udba) + continue; + + /* UDBA tests */ + h_inode = h_dentry->d_inode; + if (unlikely(!!inode != !!h_inode)) + goto err; + + h_plus = plus; + h_mode = mode; + h_cached_inode = h_inode; + if (h_inode) { + h_mode = (h_inode->i_mode & S_IFMT); + h_plus = (h_inode->i_nlink > 0); + } + if (inode && ibs <= bindex && bindex <= ibe) + h_cached_inode = au_h_iptr(inode, bindex); + + if (unlikely(plus != h_plus + || mode != h_mode + || h_cached_inode != h_inode)) + goto err; + continue; + + err: + err = -EINVAL; + break; + } + + return err; +} + +/* todo: consolidate with do_refresh() and au_reval_for_attr() */ +static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + if (!au_digen_test(dentry, sigen)) + return 0; + + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + AuDebugOn(au_digen_test(parent, sigen)); + au_dbg_verify_gen(parent, sigen); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + AuTraceErr(err); + return err; +} + +int au_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *d, *parent; + struct inode *inode; + + if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) + return simple_reval_dpath(dentry, sigen); + + /* slow loop, keep it simple and stupid */ + /* cf: au_cpup_dirs() */ + err = 0; + parent = NULL; + while (au_digen_test(dentry, sigen)) { + d = dentry; + while (1) { + dput(parent); + parent = dget_parent(d); + if (!au_digen_test(parent, sigen)) + break; + d = parent; + } + + inode = d->d_inode; + if (d != dentry) + di_write_lock_child2(d); + + /* someone might update our dentry while we were sleeping */ + if (au_digen_test(d, sigen)) { + /* + * todo: consolidate with simple_reval_dpath(), + * do_refresh() and au_reval_for_attr(). + */ + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(d, parent); + di_read_unlock(parent, AuLock_IR); + } + + if (d != dentry) + di_write_unlock(d); + dput(parent); + if (unlikely(err)) + break; + } + + return err; +} + +/* + * if valid returns 1, otherwise 0. + */ +static int aufs_d_revalidate(struct dentry *dentry, struct nameidata *nd) +{ + int valid, err; + unsigned int sigen; + unsigned char do_udba; + struct super_block *sb; + struct inode *inode; + + /* todo: support rcu-walk? */ + if (nd && (nd->flags & LOOKUP_RCU)) + return -ECHILD; + + valid = 0; + if (unlikely(!au_di(dentry))) + goto out; + + inode = dentry->d_inode; + if (inode && is_bad_inode(inode)) + goto out; + + valid = 1; + sb = dentry->d_sb; + /* + * todo: very ugly + * i_mutex of parent dir may be held, + * but we should not return 'invalid' due to busy. + */ + err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); + if (unlikely(err)) { + valid = err; + AuTraceErr(err); + goto out; + } + if (unlikely(au_dbrange_test(dentry))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + + sigen = au_sigen(sb); + if (au_digen_test(dentry, sigen)) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_dpath(dentry, sigen); + if (unlikely(err)) { + AuTraceErr(err); + goto out_dgrade; + } + } + di_downgrade_lock(dentry, AuLock_IR); + + err = -EINVAL; + if (inode && (IS_DEADDIR(inode) || !inode->i_nlink)) + goto out_inval; + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t bstart = au_ibstart(inode); + struct inode *h_inode; + + if (bstart >= 0) { + h_inode = au_h_iptr(inode, bstart); + if (h_inode && au_test_higen(inode, h_inode)) + goto out_inval; + } + } + + err = h_d_revalidate(dentry, inode, nd, do_udba); + if (unlikely(!err && do_udba && au_dbstart(dentry) < 0)) { + err = -EIO; + AuDbg("both of real entry and whiteout found, %.*s, err %d\n", + AuDLNPair(dentry), err); + } + goto out_inval; + +out_dgrade: + di_downgrade_lock(dentry, AuLock_IR); +out_inval: + aufs_read_unlock(dentry, AuLock_IR); + AuTraceErr(err); + valid = !err; +out: + if (!valid) { + AuDbg("%.*s invalid, %d\n", AuDLNPair(dentry), valid); + d_drop(dentry); + } + return valid; +} + +static void aufs_d_release(struct dentry *dentry) +{ + if (au_di(dentry)) { + au_di_fin(dentry); + au_hn_di_reinit(dentry); + } +} + +const struct dentry_operations aufs_dop = { + .d_revalidate = aufs_d_revalidate, + .d_release = aufs_d_release +}; --- linux-3.5.0.orig/ubuntu/aufs/dcsub.h +++ linux-3.5.0/ubuntu/aufs/dcsub.h @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for dentry cache + */ + +#ifndef __AUFS_DCSUB_H__ +#define __AUFS_DCSUB_H__ + +#ifdef __KERNEL__ + +#include +#include + +struct dentry; + +struct au_dpage { + int ndentry; + struct dentry **dentries; +}; + +struct au_dcsub_pages { + int ndpage; + struct au_dpage *dpages; +}; + +/* ---------------------------------------------------------------------- */ + +/* dcsub.c */ +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); +void au_dpages_free(struct au_dcsub_pages *dpages); +typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg); +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg); +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include); +int au_test_subdir(struct dentry *d1, struct dentry *d2); + +/* ---------------------------------------------------------------------- */ + +static inline int au_d_hashed_positive(struct dentry *d) +{ + int err; + struct inode *inode = d->d_inode; + err = 0; + if (unlikely(d_unhashed(d) || !inode || !inode->i_nlink)) + err = -ENOENT; + return err; +} + +static inline int au_d_alive(struct dentry *d) +{ + int err; + struct inode *inode; + err = 0; + if (!IS_ROOT(d)) + err = au_d_hashed_positive(d); + else { + inode = d->d_inode; + if (unlikely(d_unlinked(d) || !inode || !inode->i_nlink)) + err = -ENOENT; + } + return err; +} + +static inline int au_alive_dir(struct dentry *d) +{ + int err; + err = au_d_alive(d); + if (unlikely(err || IS_DEADDIR(d->d_inode))) + err = -ENOENT; + return err; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/vdir.c +++ linux-3.5.0/ubuntu/aufs/vdir.c @@ -0,0 +1,885 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * virtual or vertical directory + */ + +#include "aufs.h" + +static unsigned int calc_size(int nlen) +{ + return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); +} + +static int set_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) { + p->de->de_str.len = 0; + /* smp_mb(); */ + return 0; + } + return -1; /* error */ +} + +/* returns true or false */ +static int is_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) + return !p->de->de_str.len; + return 1; +} + +static unsigned char *last_deblk(struct au_vdir *vdir) +{ + return vdir->vd_deblk[vdir->vd_nblk - 1]; +} + +/* ---------------------------------------------------------------------- */ + +/* estimate the apropriate size for name hash table */ +unsigned int au_rdhash_est(loff_t sz) +{ + unsigned int n; + + n = UINT_MAX; + sz >>= 10; + if (sz < n) + n = sz; + if (sz < AUFS_RDHASH_DEF) + n = AUFS_RDHASH_DEF; + /* pr_info("n %u\n", n); */ + return n; +} + +/* + * the allocated memory has to be freed by + * au_nhash_wh_free() or au_nhash_de_free(). + */ +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) +{ + struct hlist_head *head; + unsigned int u; + + head = kmalloc(sizeof(*nhash->nh_head) * num_hash, gfp); + if (head) { + nhash->nh_num = num_hash; + nhash->nh_head = head; + for (u = 0; u < num_hash; u++) + INIT_HLIST_HEAD(head++); + return 0; /* success */ + } + + return -ENOMEM; +} + +static void nhash_count(struct hlist_head *head) +{ +#if 0 + unsigned long n; + struct hlist_node *pos; + + n = 0; + hlist_for_each(pos, head) + n++; + pr_info("%lu\n", n); +#endif +} + +static void au_nhash_wh_do_free(struct hlist_head *head) +{ + struct au_vdir_wh *tpos; + struct hlist_node *pos, *node; + + hlist_for_each_entry_safe(tpos, pos, node, head, wh_hash) { + /* hlist_del(pos); */ + kfree(tpos); + } +} + +static void au_nhash_de_do_free(struct hlist_head *head) +{ + struct au_vdir_dehstr *tpos; + struct hlist_node *pos, *node; + + hlist_for_each_entry_safe(tpos, pos, node, head, hash) { + /* hlist_del(pos); */ + au_cache_free_vdir_dehstr(tpos); + } +} + +static void au_nhash_do_free(struct au_nhash *nhash, + void (*free)(struct hlist_head *head)) +{ + unsigned int n; + struct hlist_head *head; + + n = nhash->nh_num; + if (!n) + return; + + head = nhash->nh_head; + while (n-- > 0) { + nhash_count(head); + free(head++); + } + kfree(nhash->nh_head); +} + +void au_nhash_wh_free(struct au_nhash *whlist) +{ + au_nhash_do_free(whlist, au_nhash_wh_do_free); +} + +static void au_nhash_de_free(struct au_nhash *delist) +{ + au_nhash_do_free(delist, au_nhash_de_do_free); +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit) +{ + int num; + unsigned int u, n; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + + num = 0; + n = whlist->nh_num; + head = whlist->nh_head; + for (u = 0; u < n; u++, head++) + hlist_for_each_entry(tpos, pos, head, wh_hash) + if (tpos->wh_bindex == btgt && ++num > limit) + return 1; + return 0; +} + +static struct hlist_head *au_name_hash(struct au_nhash *nhash, + unsigned char *name, + unsigned int len) +{ + unsigned int v; + /* const unsigned int magic_bit = 12; */ + + AuDebugOn(!nhash->nh_num || !nhash->nh_head); + + v = 0; + while (len--) + v += *name++; + /* v = hash_long(v, magic_bit); */ + v %= nhash->nh_num; + return nhash->nh_head + v; +} + +static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, + int nlen) +{ + return str->len == nlen && !memcmp(str->name, name, nlen); +} + +/* returns found or not */ +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + head = au_name_hash(whlist, name, nlen); + hlist_for_each_entry(tpos, pos, head, wh_hash) { + str = &tpos->wh_str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +/* returns found(true) or not */ +static int test_known(struct au_nhash *delist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_dehstr *tpos; + struct hlist_node *pos; + struct au_vdir_destr *str; + + head = au_name_hash(delist, name, nlen); + hlist_for_each_entry(tpos, pos, head, hash) { + str = tpos->str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, + unsigned char d_type) +{ +#ifdef CONFIG_AUFS_SHWH + wh->wh_ino = ino; + wh->wh_type = d_type; +#endif +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh) +{ + int err; + struct au_vdir_destr *str; + struct au_vdir_wh *wh; + + AuDbg("%.*s\n", nlen, name); + AuDebugOn(!whlist->nh_num || !whlist->nh_head); + + err = -ENOMEM; + wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); + if (unlikely(!wh)) + goto out; + + err = 0; + wh->wh_bindex = bindex; + if (shwh) + au_shwh_init_wh(wh, ino, d_type); + str = &wh->wh_str; + str->len = nlen; + memcpy(str->name, name, nlen); + hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); + /* smp_mb(); */ + +out: + return err; +} + +static int append_deblk(struct au_vdir *vdir) +{ + int err; + unsigned long ul; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, deblk_end; + unsigned char **o; + + err = -ENOMEM; + o = krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS); + if (unlikely(!o)) + goto out; + + vdir->vd_deblk = o; + p.deblk = kmalloc(deblk_sz, GFP_NOFS); + if (p.deblk) { + ul = vdir->vd_nblk++; + vdir->vd_deblk[ul] = p.deblk; + vdir->vd_last.ul = ul; + vdir->vd_last.p.deblk = p.deblk; + deblk_end.deblk = p.deblk + deblk_sz; + err = set_deblk_end(&p, &deblk_end); + } + +out: + return err; +} + +static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, + unsigned int d_type, struct au_nhash *delist) +{ + int err; + unsigned int sz; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, *room, deblk_end; + struct au_vdir_dehstr *dehstr; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + room = &vdir->vd_last.p; + AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk + || !is_deblk_end(room, &deblk_end)); + + sz = calc_size(nlen); + if (unlikely(sz > deblk_end.deblk - room->deblk)) { + err = append_deblk(vdir); + if (unlikely(err)) + goto out; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + /* smp_mb(); */ + AuDebugOn(room->deblk != p.deblk); + } + + err = -ENOMEM; + dehstr = au_cache_alloc_vdir_dehstr(); + if (unlikely(!dehstr)) + goto out; + + dehstr->str = &room->de->de_str; + hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); + room->de->de_ino = ino; + room->de->de_type = d_type; + room->de->de_str.len = nlen; + memcpy(room->de->de_str.name, name, nlen); + + err = 0; + room->deblk += sz; + if (unlikely(set_deblk_end(room, &deblk_end))) + err = append_deblk(vdir); + /* smp_mb(); */ + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_vdir_free(struct au_vdir *vdir) +{ + unsigned char **deblk; + + deblk = vdir->vd_deblk; + while (vdir->vd_nblk--) + kfree(*deblk++); + kfree(vdir->vd_deblk); + au_cache_free_vdir(vdir); +} + +static struct au_vdir *alloc_vdir(struct file *file) +{ + struct au_vdir *vdir; + struct super_block *sb; + int err; + + sb = file->f_dentry->d_sb; + SiMustAnyLock(sb); + + err = -ENOMEM; + vdir = au_cache_alloc_vdir(); + if (unlikely(!vdir)) + goto out; + + vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); + if (unlikely(!vdir->vd_deblk)) + goto out_free; + + vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; + if (!vdir->vd_deblk_sz) { + /* estimate the apropriate size for deblk */ + vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); + /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ + } + vdir->vd_nblk = 0; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + err = append_deblk(vdir); + if (!err) + return vdir; /* success */ + + kfree(vdir->vd_deblk); + +out_free: + au_cache_free_vdir(vdir); +out: + vdir = ERR_PTR(err); + return vdir; +} + +static int reinit_vdir(struct au_vdir *vdir) +{ + int err; + union au_vdir_deblk_p p, deblk_end; + + while (vdir->vd_nblk > 1) { + kfree(vdir->vd_deblk[vdir->vd_nblk - 1]); + /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ + vdir->vd_nblk--; + } + p.deblk = vdir->vd_deblk[0]; + deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; + err = set_deblk_end(&p, &deblk_end); + /* keep vd_dblk_sz */ + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + /* smp_mb(); */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuFillVdir_CALLED 1 +#define AuFillVdir_WHABLE (1 << 1) +#define AuFillVdir_SHWH (1 << 2) +#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) +#define au_fset_fillvdir(flags, name) \ + do { (flags) |= AuFillVdir_##name; } while (0) +#define au_fclr_fillvdir(flags, name) \ + do { (flags) &= ~AuFillVdir_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuFillVdir_SHWH +#define AuFillVdir_SHWH 0 +#endif + +struct fillvdir_arg { + struct file *file; + struct au_vdir *vdir; + struct au_nhash delist; + struct au_nhash whlist; + aufs_bindex_t bindex; + unsigned int flags; + int err; +}; + +static int fillvdir(void *__arg, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ + struct fillvdir_arg *arg = __arg; + char *name = (void *)__name; + struct super_block *sb; + ino_t ino; + const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); + + arg->err = 0; + sb = arg->file->f_dentry->d_sb; + au_fset_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + if (nlen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (test_known(&arg->delist, name, nlen) + || au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already exists or whiteouted */ + + sb = arg->file->f_dentry->d_sb; + arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); + if (!arg->err) { + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + d_type = DT_UNKNOWN; + arg->err = append_de(arg->vdir, name, nlen, ino, + d_type, &arg->delist); + } + } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { + name += AUFS_WH_PFX_LEN; + nlen -= AUFS_WH_PFX_LEN; + if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already whiteouted */ + + if (shwh) + arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, + &ino); + if (!arg->err) { + if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) + d_type = DT_UNKNOWN; + arg->err = au_nhash_append_wh + (&arg->whlist, name, nlen, ino, d_type, + arg->bindex, shwh); + } + } + +out: + if (!arg->err) + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, + struct au_nhash *whlist, struct au_nhash *delist) +{ +#ifdef CONFIG_AUFS_SHWH + int err; + unsigned int nh, u; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos, *n; + char *p, *o; + struct au_vdir_destr *destr; + + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; + o = p = __getname_gfp(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + nh = whlist->nh_num; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + for (u = 0; u < nh; u++) { + head = whlist->nh_head + u; + hlist_for_each_entry_safe(tpos, pos, n, head, wh_hash) { + destr = &tpos->wh_str; + memcpy(p, destr->name, destr->len); + err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, + tpos->wh_ino, tpos->wh_type, delist); + if (unlikely(err)) + break; + } + } + + __putname(o); + +out: + AuTraceErr(err); + return err; +#else + return 0; +#endif +} + +static int au_do_read_vdir(struct fillvdir_arg *arg) +{ + int err; + unsigned int rdhash; + loff_t offset; + aufs_bindex_t bend, bindex, bstart; + unsigned char shwh; + struct file *hf, *file; + struct super_block *sb; + + file = arg->file; + sb = file->f_dentry->d_sb; + SiMustAnyLock(sb); + + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); + err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out_delist; + + err = 0; + arg->flags = 0; + shwh = 0; + if (au_opt_test(au_mntflags(sb), SHWH)) { + shwh = 1; + au_fset_fillvdir(arg->flags, SHWH); + } + bstart = au_fbstart(file); + bend = au_fbend_dir(file); + for (bindex = bstart; !err && bindex <= bend; bindex++) { + hf = au_hf_dir(file, bindex); + if (!hf) + continue; + + offset = vfsub_llseek(hf, 0, SEEK_SET); + err = offset; + if (unlikely(offset)) + break; + + arg->bindex = bindex; + au_fclr_fillvdir(arg->flags, WHABLE); + if (shwh + || (bindex != bend + && au_br_whable(au_sbr_perm(sb, bindex)))) + au_fset_fillvdir(arg->flags, WHABLE); + do { + arg->err = 0; + au_fclr_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_readdir(hf, fillvdir, arg); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); + } + + if (!err && shwh) + err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); + + au_nhash_wh_free(&arg->whlist); + +out_delist: + au_nhash_de_free(&arg->delist); +out: + return err; +} + +static int read_vdir(struct file *file, int may_read) +{ + int err; + unsigned long expire; + unsigned char do_read; + struct fillvdir_arg arg; + struct inode *inode; + struct au_vdir *vdir, *allocated; + + err = 0; + inode = file->f_dentry->d_inode; + IMustLock(inode); + SiMustAnyLock(inode->i_sb); + + allocated = NULL; + do_read = 0; + expire = au_sbi(inode->i_sb)->si_rdcache; + vdir = au_ivdir(inode); + if (!vdir) { + do_read = 1; + vdir = alloc_vdir(file); + err = PTR_ERR(vdir); + if (IS_ERR(vdir)) + goto out; + err = 0; + allocated = vdir; + } else if (may_read + && (inode->i_version != vdir->vd_version + || time_after(jiffies, vdir->vd_jiffy + expire))) { + do_read = 1; + err = reinit_vdir(vdir); + if (unlikely(err)) + goto out; + } + + if (!do_read) + return 0; /* success */ + + arg.file = file; + arg.vdir = vdir; + err = au_do_read_vdir(&arg); + if (!err) { + /* file->f_pos = 0; */ + vdir->vd_version = inode->i_version; + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + if (allocated) + au_set_ivdir(inode, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) +{ + int err, rerr; + unsigned long ul, n; + const unsigned int deblk_sz = src->vd_deblk_sz; + + AuDebugOn(tgt->vd_nblk != 1); + + err = -ENOMEM; + if (tgt->vd_nblk < src->vd_nblk) { + unsigned char **p; + + p = krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk = p; + } + + if (tgt->vd_deblk_sz != deblk_sz) { + unsigned char *p; + + tgt->vd_deblk_sz = deblk_sz; + p = krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS); + if (unlikely(!p)) + goto out; + tgt->vd_deblk[0] = p; + } + memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); + tgt->vd_version = src->vd_version; + tgt->vd_jiffy = src->vd_jiffy; + + n = src->vd_nblk; + for (ul = 1; ul < n; ul++) { + tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, + GFP_NOFS); + if (unlikely(!tgt->vd_deblk[ul])) + goto out; + tgt->vd_nblk++; + } + tgt->vd_nblk = n; + tgt->vd_last.ul = tgt->vd_last.ul; + tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; + tgt->vd_last.p.deblk += src->vd_last.p.deblk + - src->vd_deblk[src->vd_last.ul]; + /* smp_mb(); */ + return 0; /* success */ + +out: + rerr = reinit_vdir(tgt); + BUG_ON(rerr); + return err; +} + +int au_vdir_init(struct file *file) +{ + int err; + struct inode *inode; + struct au_vdir *vdir_cache, *allocated; + + err = read_vdir(file, !file->f_pos); + if (unlikely(err)) + goto out; + + allocated = NULL; + vdir_cache = au_fvdir_cache(file); + if (!vdir_cache) { + vdir_cache = alloc_vdir(file); + err = PTR_ERR(vdir_cache); + if (IS_ERR(vdir_cache)) + goto out; + allocated = vdir_cache; + } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { + err = reinit_vdir(vdir_cache); + if (unlikely(err)) + goto out; + } else + return 0; /* success */ + + inode = file->f_dentry->d_inode; + err = copy_vdir(vdir_cache, au_ivdir(inode)); + if (!err) { + file->f_version = inode->i_version; + if (allocated) + au_set_fvdir_cache(file, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static loff_t calc_offset(struct au_vdir *vdir) +{ + loff_t offset; + union au_vdir_deblk_p p; + + p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; + offset = vdir->vd_last.p.deblk - p.deblk; + offset += vdir->vd_deblk_sz * vdir->vd_last.ul; + return offset; +} + +/* returns true or false */ +static int seek_vdir(struct file *file) +{ + int valid; + unsigned int deblk_sz; + unsigned long ul, n; + loff_t offset; + union au_vdir_deblk_p p, deblk_end; + struct au_vdir *vdir_cache; + + valid = 1; + vdir_cache = au_fvdir_cache(file); + offset = calc_offset(vdir_cache); + AuDbg("offset %lld\n", offset); + if (file->f_pos == offset) + goto out; + + vdir_cache->vd_last.ul = 0; + vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; + if (!file->f_pos) + goto out; + + valid = 0; + deblk_sz = vdir_cache->vd_deblk_sz; + ul = div64_u64(file->f_pos, deblk_sz); + AuDbg("ul %lu\n", ul); + if (ul >= vdir_cache->vd_nblk) + goto out; + + n = vdir_cache->vd_nblk; + for (; ul < n; ul++) { + p.deblk = vdir_cache->vd_deblk[ul]; + deblk_end.deblk = p.deblk + deblk_sz; + offset = ul; + offset *= deblk_sz; + while (!is_deblk_end(&p, &deblk_end) && offset < file->f_pos) { + unsigned int l; + + l = calc_size(p.de->de_str.len); + offset += l; + p.deblk += l; + } + if (!is_deblk_end(&p, &deblk_end)) { + valid = 1; + vdir_cache->vd_last.ul = ul; + vdir_cache->vd_last.p = p; + break; + } + } + +out: + /* smp_mb(); */ + AuTraceErr(!valid); + return valid; +} + +int au_vdir_fill_de(struct file *file, void *dirent, filldir_t filldir) +{ + int err; + unsigned int l, deblk_sz; + union au_vdir_deblk_p deblk_end; + struct au_vdir *vdir_cache; + struct au_vdir_de *de; + + vdir_cache = au_fvdir_cache(file); + if (!seek_vdir(file)) + return 0; + + deblk_sz = vdir_cache->vd_deblk_sz; + while (1) { + deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + deblk_end.deblk += deblk_sz; + while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { + de = vdir_cache->vd_last.p.de; + AuDbg("%.*s, off%lld, i%lu, dt%d\n", + de->de_str.len, de->de_str.name, file->f_pos, + (unsigned long)de->de_ino, de->de_type); + err = filldir(dirent, de->de_str.name, de->de_str.len, + file->f_pos, de->de_ino, de->de_type); + if (unlikely(err)) { + AuTraceErr(err); + /* todo: ignore the error caused by udba? */ + /* return err; */ + return 0; + } + + l = calc_size(de->de_str.len); + vdir_cache->vd_last.p.deblk += l; + file->f_pos += l; + } + if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { + vdir_cache->vd_last.ul++; + vdir_cache->vd_last.p.deblk + = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + file->f_pos = deblk_sz * vdir_cache->vd_last.ul; + continue; + } + break; + } + + /* smp_mb(); */ + return 0; +} --- linux-3.5.0.orig/ubuntu/aufs/ioctl.c +++ linux-3.5.0/ubuntu/aufs/ioctl.c @@ -0,0 +1,196 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * ioctl + * plink-management and readdir in userspace. + * assist the pathconf(3) wrapper library. + */ + +#include "aufs.h" + +static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) +{ + int err, fd; + aufs_bindex_t wbi, bindex, bend; + struct file *h_file; + struct super_block *sb; + struct dentry *root; + struct au_branch *br; + struct aufs_wbr_fd wbrfd = { + .oflags = au_dir_roflags, + .brid = -1 + }; + const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY + | O_NOATIME | O_CLOEXEC; + + AuDebugOn(wbrfd.oflags & ~valid); + + if (arg) { + err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + + err = -EINVAL; + AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); + wbrfd.oflags |= au_dir_roflags; + AuDbg("0%o\n", wbrfd.oflags); + if (unlikely(wbrfd.oflags & ~valid)) + goto out; + } + + fd = get_unused_fd(); + err = fd; + if (unlikely(fd < 0)) + goto out; + + h_file = ERR_PTR(-EINVAL); + wbi = 0; + br = NULL; + sb = path->dentry->d_sb; + root = sb->s_root; + aufs_read_lock(root, AuLock_IR); + bend = au_sbend(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bend)) + goto out_unlock; + } + + h_file = ERR_PTR(-ENOENT); + br = au_sbr(sb, wbi); + if (!au_br_writable(br->br_perm)) { + if (arg) + goto out_unlock; + + bindex = wbi + 1; + wbi = -1; + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) { + wbi = bindex; + br = au_sbr(sb, wbi); + break; + } + } + } + AuDbg("wbi %d\n", wbi); + if (wbi >= 0) + h_file = au_h_open(root, wbi, wbrfd.oflags, NULL); + +out_unlock: + aufs_read_unlock(root, AuLock_IR); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_fd; + + atomic_dec(&br->br_count); /* cf. au_h_open() */ + fd_install(fd, h_file); + err = fd; + goto out; /* success */ + +out_fd: + put_unused_fd(fd); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_ioctl(file, arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_compat_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_compat_ioctl(file, arg); + break; + + default: + err = aufs_ioctl_dir(file, cmd, arg); + } + + AuTraceErr(err); + return err; +} + +#if 0 /* unused yet */ +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif +#endif --- linux-3.5.0.orig/ubuntu/aufs/i_op_ren.c +++ linux-3.5.0/ubuntu/aufs/i_op_ren.c @@ -0,0 +1,1026 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operation (rename entry) + * todo: this is crazy monster + */ + +#include "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR 1 +#define AuRen_ISSAMEDIR (1 << 1) +#define AuRen_WHSRC (1 << 2) +#define AuRen_WHDST (1 << 3) +#define AuRen_MNT_WRITE (1 << 4) +#define AuRen_DT_DSTDIR (1 << 5) +#define AuRen_DIROPQ (1 << 6) +#define AuRen_CPUP (1 << 7) +#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) +#define au_fset_ren(flags, name) \ + do { (flags) |= AuRen_##name; } while (0) +#define au_fclr_ren(flags, name) \ + do { (flags) &= ~AuRen_##name; } while (0) + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t bstart; + } sd[AuSrcDst]; + +#define src_dentry sd[AuSRC].dentry +#define src_dir sd[AuSRC].dir +#define src_inode sd[AuSRC].inode +#define src_h_dentry sd[AuSRC].h_dentry +#define src_parent sd[AuSRC].parent +#define src_h_parent sd[AuSRC].h_parent +#define src_wh_dentry sd[AuSRC].wh_dentry +#define src_hdir sd[AuSRC].hdir +#define src_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_bstart sd[AuSRC].bstart + +#define dst_dentry sd[AuDST].dentry +#define dst_dir sd[AuDST].dir +#define dst_inode sd[AuDST].inode +#define dst_h_dentry sd[AuDST].h_dentry +#define dst_parent sd[AuDST].parent +#define dst_h_parent sd[AuDST].h_parent +#define dst_wh_dentry sd[AuDST].wh_dentry +#define dst_hdir sd[AuDST].hdir +#define dst_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_bstart sd[AuDST].bstart + + struct dentry *h_trap; + struct au_branch *br; + struct au_hinode *src_hinode; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh, src_bdiropq; + + unsigned int flags; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happend. + * we don't need to revert the copied-up/down the parent dir since they are + * harmless. + */ + +#define RevertFailure(fmt, ...) do { \ + AuIOErr("revert failure: " fmt " (%d, %d)\n", \ + ##__VA_ARGS__, err, rerr); \ + err = -EIO; \ +} while (0) + +static void au_ren_rev_diropq(int err, struct au_ren_args *a) +{ + int rerr; + + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + rerr = au_diropq_remove(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + au_set_dbdiropq(a->src_dentry, a->src_bdiropq); + if (rerr) + RevertFailure("remove diropq %.*s", AuDLNPair(a->src_dentry)); +} + +static void au_ren_rev_rename(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = au_lkup_one(&a->src_dentry->d_name, a->src_h_parent, + a->br, /*nd*/NULL); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("au_lkup_one %.*s", AuDLNPair(a->src_dentry)); + return; + } + + rerr = vfsub_rename(a->dst_h_dir, + au_h_dptr(a->src_dentry, a->btgt), + a->src_h_dir, &a->h_path); + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ + if (rerr) + RevertFailure("rename %.*s", AuDLNPair(a->src_dentry)); +} + +static void au_ren_rev_cpup(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->dst_h_dentry; + rerr = vfsub_unlink(a->dst_h_dir, &a->h_path, /*force*/0); + au_set_h_dptr(a->src_dentry, a->btgt, NULL); + au_set_dbstart(a->src_dentry, a->src_bstart); + if (rerr) + RevertFailure("unlink %.*s", AuDLNPair(a->dst_h_dentry)); +} + +static void au_ren_rev_whtmp(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = au_lkup_one(&a->dst_dentry->d_name, a->dst_h_parent, + a->br, /*nd*/NULL); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lookup %.*s", AuDLNPair(a->dst_dentry)); + return; + } + if (a->h_path.dentry->d_inode) { + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + return; + } + + rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path); + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + if (!rerr) + au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); + else + RevertFailure("rename %.*s", AuDLNPair(a->h_dst)); +} + +static void au_ren_rev_whsrc(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->src_wh_dentry; + rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); + au_set_dbwh(a->src_dentry, a->src_bwh); + if (rerr) + RevertFailure("unlink %.*s", AuDLNPair(a->src_wh_dentry)); +} +#undef RevertFailure + +/* ---------------------------------------------------------------------- */ + +/* + * when we have to copyup the renaming entry, do it with the rename-target name + * in order to minimize the cost (the later actual rename is unnecessary). + * otherwise rename it on the target branch. + */ +static int au_ren_or_cpup(struct au_ren_args *a) +{ + int err; + struct dentry *d; + + d = a->src_dentry; + if (au_dbstart(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + if (au_ftest_ren(a->flags, DIROPQ) + && au_dbdiropq(d) == a->btgt) + au_fclr_ren(a->flags, DIROPQ); + AuDebugOn(au_dbstart(d) != a->btgt); + err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), + a->dst_h_dir, &a->h_path); + } else { + struct mutex *h_mtx = &a->src_h_dentry->d_inode->i_mutex; + struct file *h_file; + + au_fset_ren(a->flags, CPUP); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_set_dbstart(d, a->btgt); + au_set_h_dptr(d, a->btgt, dget(a->dst_h_dentry)); + h_file = au_h_open_pre(d, a->src_bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_single(d, a->btgt, a->src_bstart, -1, + !AuCpup_DTIME, a->dst_parent); + mutex_unlock(h_mtx); + au_h_open_post(d, a->src_bstart, h_file); + if (!err) { + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + au_update_dbstart(d); + } else { + au_set_h_dptr(d, a->btgt, NULL); + au_set_dbstart(d, a->src_bstart); + } + } + if (!err && a->h_dst) + /* it will be set to dinfo later */ + dget(a->h_dst); + + return err; +} + +/* cf. aufs_rmdir() */ +static int au_ren_del_whtmp(struct au_ren_args *a) +{ + int err; + struct inode *dir; + + dir = a->dst_dir; + SiMustAnyLock(dir->i_sb); + if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, + au_sbi(dir->i_sb)->si_dirwh) + || au_test_fs_remote(a->h_dst->d_sb)) { + err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); + if (unlikely(err)) + pr_warn("failed removing whtmp dir %.*s (%d), " + "ignored.\n", AuDLNPair(a->h_dst), err); + } else { + au_nhash_wh_free(&a->thargs->whlist); + a->thargs->whlist = a->whlist; + a->whlist.nh_num = 0; + au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); + dput(a->h_dst); + a->thargs = NULL; + } + + return 0; +} + +/* make it 'opaque' dir. */ +static int au_ren_diropq(struct au_ren_args *a) +{ + int err; + struct dentry *diropq; + + err = 0; + a->src_bdiropq = au_dbdiropq(a->src_dentry); + a->src_hinode = au_hi(a->src_inode, a->btgt); + au_hn_imtx_lock_nested(a->src_hinode, AuLsc_I_CHILD); + diropq = au_diropq_create(a->src_dentry, a->btgt); + au_hn_imtx_unlock(a->src_hinode); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + dput(diropq); + + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->flags, ISDIR) && h_d->d_inode) { + err = -ENOMEM; + a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, GFP_NOFS); + if (unlikely(!a->thargs)) + goto out; + a->h_dst = dget(h_d); + } + + /* create whiteout for src_dentry */ + if (au_ftest_ren(a->flags, WHSRC)) { + a->src_bwh = au_dbwh(a->src_dentry); + AuDebugOn(a->src_bwh >= 0); + a->src_wh_dentry + = au_wh_create(a->src_dentry, a->btgt, a->src_h_parent); + err = PTR_ERR(a->src_wh_dentry); + if (IS_ERR(a->src_wh_dentry)) + goto out_thargs; + } + + /* lookup whiteout for dentry */ + if (au_ftest_ren(a->flags, WHDST)) { + h_d = au_wh_lkup(a->dst_h_parent, &a->dst_dentry->d_name, + a->br); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out_whsrc; + if (!h_d->d_inode) + dput(h_d); + else + a->dst_wh_dentry = h_d; + } + + /* rename dentry to tmpwh */ + if (a->thargs) { + err = au_whtmp_ren(a->dst_h_dentry, a->br); + if (unlikely(err)) + goto out_whdst; + + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + err = au_lkup_neg(d, a->btgt); + if (unlikely(err)) + goto out_whtmp; + a->dst_h_dentry = au_h_dptr(d, a->btgt); + } + + /* cpup src */ + if (a->dst_h_dentry->d_inode && a->src_bstart != a->btgt) { + struct mutex *h_mtx = &a->src_h_dentry->d_inode->i_mutex; + struct file *h_file; + + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + AuDebugOn(au_dbstart(a->src_dentry) != a->src_bstart); + h_file = au_h_open_pre(a->src_dentry, a->src_bstart); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(a->src_dentry, a->btgt, -1, + !AuCpup_DTIME); + mutex_unlock(h_mtx); + au_h_open_post(a->src_dentry, a->src_bstart, h_file); + if (unlikely(err)) + goto out_whtmp; + } + + /* rename by vfs_rename or cpup */ + d = a->dst_dentry; + if (au_ftest_ren(a->flags, ISDIR) + && (a->dst_wh_dentry + || au_dbdiropq(d) == a->btgt + /* hide the lower to keep xino */ + || a->btgt < au_dbend(d) + || au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ))) + au_fset_ren(a->flags, DIROPQ); + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + if (au_ftest_ren(a->flags, DIROPQ)) { + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + } + + /* update target timestamps */ + AuDebugOn(au_dbstart(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->src_inode->i_ctime = a->h_path.dentry->d_inode->i_ctime; + + /* remove whiteout for dentry */ + if (a->dst_wh_dentry) { + a->h_path.dentry = a->dst_wh_dentry; + err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, + a->dst_dentry); + if (unlikely(err)) + goto out_diropq; + } + + /* remove whtmp */ + if (a->thargs) + au_ren_del_whtmp(a); /* ignore this error */ + + err = 0; + goto out_success; + +out_diropq: + if (au_ftest_ren(a->flags, DIROPQ)) + au_ren_rev_diropq(err, a); +out_rename: + if (!au_ftest_ren(a->flags, CPUP)) + au_ren_rev_rename(err, a); + else + au_ren_rev_cpup(err, a); + dput(a->h_dst); +out_whtmp: + if (a->thargs) + au_ren_rev_whtmp(err, a); +out_whdst: + dput(a->dst_wh_dentry); + a->dst_wh_dentry = NULL; +out_whsrc: + if (a->src_wh_dentry) + au_ren_rev_whsrc(err, a); +out_success: + dput(a->src_wh_dentry); + dput(a->dst_wh_dentry); +out_thargs: + if (a->thargs) { + dput(a->h_dst); + au_whtmp_rmdir_free(a->thargs); + a->thargs = NULL; + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if @dentry dir can be rename destination or not. + * success means, it is a logically empty dir. + */ +static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) +{ + return au_test_empty(dentry, whlist); +} + +/* + * test if @dentry dir can be rename source or not. + * if it can, return 0 and @children is filled. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch. + */ +static int may_rename_srcdir(struct dentry *dentry, aufs_bindex_t btgt) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bstart; + + bstart = au_dbstart(dentry); + if (bstart != btgt) { + struct au_nhash whlist; + + SiMustAnyLock(dentry->d_sb); + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, + dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (bstart == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + AuWarn1("renaming dir who has child(ren) on multiple branches," + " is not supported\n"); + err = -EXDEV; + } + return err; +} + +/* side effect: sets whlist and h_dentry */ +static int au_ren_may_dir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + struct dentry *d; + + d = a->dst_dentry; + SiMustAnyLock(d->d_sb); + + err = 0; + if (au_ftest_ren(a->flags, ISDIR) && a->dst_inode) { + rdhash = au_sbi(d->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); + err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + au_set_dbstart(d, a->dst_bstart); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbstart(d, a->btgt); + } + a->dst_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbstart(d)); + if (au_ftest_ren(a->flags, ISDIR)) { + err = may_rename_srcdir(d, a->btgt); + if (unlikely(err)) { + au_nhash_wh_free(&a->whlist); + a->whlist.nh_num = 0; + } + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * simple tests for rename. + * following the checks in vfs, plus the parent-child relationship. + */ +static int au_may_ren(struct au_ren_args *a) +{ + int err, isdir; + struct inode *h_inode; + + if (a->src_bstart == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->flags, ISDIR)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_bstart != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + h_inode = a->dst_h_dentry->d_inode; + isdir = !!au_ftest_ren(a->flags, ISDIR); + if (!a->dst_dentry->d_inode) { + if (unlikely(h_inode)) + goto out; + err = au_may_add(a->dst_dentry, a->btgt, a->dst_h_parent, + isdir); + } else { + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + err = au_may_del(a->dst_dentry, a->btgt, a->dst_h_parent, + isdir); + if (unlikely(err)) + goto out; + } + +out: + if (unlikely(err == -ENOENT || err == -EEXIST)) + err = -EIO; + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * locking order + * (VFS) + * - src_dir and dir by lock_rename() + * - inode if exitsts + * (aufs) + * - lock all + * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, + * + si_read_lock + * + di_write_lock2_child() + * + di_write_lock_child() + * + ii_write_lock_child() + * + di_write_lock_child2() + * + ii_write_lock_child2() + * + src_parent and parent + * + di_write_lock_parent() + * + ii_write_lock_parent() + * + di_write_lock_parent2() + * + ii_write_lock_parent2() + * + lower src_dir and dir by vfsub_lock_rename() + * + verify the every relationships between child and parent. if any + * of them failed, unlock all and return -EBUSY. + */ +static void au_ren_unlock(struct au_ren_args *a) +{ + struct super_block *sb; + + sb = a->dst_dentry->d_sb; + if (au_ftest_ren(a->flags, MNT_WRITE)) + mnt_drop_write(a->br->br_mnt); + vfsub_unlock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); +} + +static int au_ren_lock(struct au_ren_args *a) +{ + int err; + unsigned int udba; + + err = 0; + a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); + a->src_hdir = au_hi(a->src_dir, a->btgt); + a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); + a->dst_hdir = au_hi(a->dst_dir, a->btgt); + a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + udba = au_opt_udba(a->src_dentry->d_sb); + if (unlikely(a->src_hdir->hi_inode != a->src_h_parent->d_inode + || a->dst_hdir->hi_inode != a->dst_h_parent->d_inode)) + err = au_busy_or_stale(); + if (!err && au_dbstart(a->src_dentry) == a->btgt) + err = au_h_verify(a->src_h_dentry, udba, + a->src_h_parent->d_inode, a->src_h_parent, + a->br); + if (!err && au_dbstart(a->dst_dentry) == a->btgt) + err = au_h_verify(a->dst_h_dentry, udba, + a->dst_h_parent->d_inode, a->dst_h_parent, + a->br); + if (!err) { + err = mnt_want_write(a->br->br_mnt); + if (unlikely(err)) + goto out_unlock; + au_fset_ren(a->flags, MNT_WRITE); + goto out; /* success */ + } + + err = au_busy_or_stale(); + +out_unlock: + au_ren_unlock(a); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_ren_refresh_dir(struct au_ren_args *a) +{ + struct inode *dir; + + dir = a->dst_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->src_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + + if (au_ibstart(dir) == a->btgt) + au_cpup_attr_timesizes(dir); + + if (au_ftest_ren(a->flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + dir->i_version++; + if (au_ftest_ren(a->flags, ISDIR)) + au_cpup_attr_nlink(dir, /*force*/1); + if (au_ibstart(dir) == a->btgt) + au_cpup_attr_timesizes(dir); +} + +static void au_ren_refresh(struct au_ren_args *a) +{ + aufs_bindex_t bend, bindex; + struct dentry *d, *h_d; + struct inode *i, *h_i; + struct super_block *sb; + + d = a->dst_dentry; + d_drop(d); + if (a->h_dst) + /* already dget-ed by au_ren_or_cpup() */ + au_set_h_dptr(d, a->btgt, a->h_dst); + + i = a->dst_inode; + if (i) { + if (!au_ftest_ren(a->flags, ISDIR)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else { + bend = a->btgt; + for (bindex = au_dbstart(d); bindex < bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bend = au_dbend(d); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbend(d, a->btgt); + + sb = d->d_sb; + i = a->src_inode; + if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) + return; /* success */ + + bend = au_ibend(i); + for (bindex = a->btgt + 1; bindex <= bend; bindex++) { + h_i = au_h_iptr(i, bindex); + if (h_i) { + au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + au_set_h_iptr(i, bindex, NULL, 0); + } + } + au_set_ibend(i, a->btgt); +} + +/* ---------------------------------------------------------------------- */ + +/* mainly for link(2) and rename(2) */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) +{ + aufs_bindex_t bdiropq, bwh; + struct dentry *parent; + struct au_branch *br; + + parent = dentry->d_parent; + IMustLock(parent->d_inode); /* dir is locked */ + + bdiropq = au_dbdiropq(parent); + bwh = au_dbwh(dentry); + br = au_sbr(dentry->d_sb, btgt); + if (au_br_rdonly(br) + || (0 <= bdiropq && bdiropq < btgt) + || (0 <= bwh && bwh < btgt)) + btgt = -1; + + AuDbg("btgt %d\n", btgt); + return btgt; +} + +/* sets src_bstart, dst_bstart and btgt */ +static int au_ren_wbr(struct au_ren_args *a) +{ + int err; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + a->src_bstart = au_dbstart(a->src_dentry); + a->dst_bstart = au_dbstart(a->dst_dentry); + if (au_ftest_ren(a->flags, ISDIR)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_bstart; + if (a->dst_inode && a->dst_bstart < a->src_bstart) + wr_dir_args.force_btgt = a->dst_bstart; + wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); + err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); + a->btgt = err; + + return err; +} + +static void au_ren_dt(struct au_ren_args *a) +{ + a->h_path.dentry = a->src_h_parent; + au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) { + a->h_path.dentry = a->dst_h_parent; + au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); + } + + au_fclr_ren(a->flags, DT_DSTDIR); + if (!au_ftest_ren(a->flags, ISDIR)) + return; + + a->h_path.dentry = a->src_h_dentry; + au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); + if (a->dst_h_dentry->d_inode) { + au_fset_ren(a->flags, DT_DSTDIR); + a->h_path.dentry = a->dst_h_dentry; + au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); + } +} + +static void au_ren_rev_dt(int err, struct au_ren_args *a) +{ + struct dentry *h_d; + struct mutex *h_mtx; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->flags, ISDIR) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &h_d->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + mutex_unlock(h_mtx); + + if (au_ftest_ren(a->flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_mtx = &h_d->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + mutex_unlock(h_mtx); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry) +{ + int err, flags; + /* reduce stack space */ + struct au_ren_args *a; + + AuDbg("%.*s, %.*s\n", AuDLNPair(_src_dentry), AuDLNPair(_dst_dentry)); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->src_dir = _src_dir; + a->src_dentry = _src_dentry; + a->src_inode = a->src_dentry->d_inode; + a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ + a->dst_dir = _dst_dir; + a->dst_dentry = _dst_dentry; + a->dst_inode = a->dst_dentry->d_inode; + a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ + if (a->dst_inode) { + IMustLock(a->dst_inode); + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (S_ISDIR(a->src_inode->i_mode)) { + au_fset_ren(a->flags, ISDIR); + if (unlikely(a->dst_inode && !S_ISDIR(a->dst_inode->i_mode))) + goto out_free; + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + AuLock_DIR | flags); + } else + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + flags); + if (unlikely(err)) + goto out_free; + + err = au_d_hashed_positive(a->src_dentry); + if (unlikely(err)) + goto out_unlock; + err = -ENOENT; + if (a->dst_inode) { + /* + * If it is a dir, VFS unhash dst_dentry before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!S_ISDIR(a->dst_inode->i_mode)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err)) + goto out_unlock; + } else if (unlikely(IS_DEADDIR(a->dst_inode))) + goto out_unlock; + } else if (unlikely(d_unhashed(a->dst_dentry))) + goto out_unlock; + + /* + * is it possible? + * yes, it happend (in linux-3.3-rcN) but I don't know why. + * there may exist a problem somewhere else. + */ + err = -EINVAL; + if (unlikely(a->dst_parent->d_inode == a->src_dentry->d_inode)) + goto out_unlock; + + au_fset_ren(a->flags, ISSAMEDIR); /* temporary */ + di_write_lock_parent(a->dst_parent); + + /* which branch we process */ + err = au_ren_wbr(a); + if (unlikely(err < 0)) + goto out_parent; + a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); + a->h_path.mnt = a->br->br_mnt; + + /* are they available to be renamed */ + err = au_ren_may_dir(a); + if (unlikely(err)) + goto out_children; + + /* prepare the writable parent dir on the same branch */ + if (a->dst_bstart == a->btgt) { + au_fset_ren(a->flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + if (a->src_dir != a->dst_dir) { + /* + * this temporary unlock is safe, + * because both dir->i_mutex are locked. + */ + di_write_unlock(a->dst_parent); + di_write_lock_parent(a->src_parent); + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, /*isdir*/1); + au_fclr_ren(a->flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->flags, ISDIR), + &a->btgt); + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->flags, WHSRC); + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + goto out_children; + + if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) + err = au_may_ren(a); + else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + if (unlikely(err)) + goto out_hdir; + + /* store timestamps to be revertible */ + au_ren_dt(a); + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dt; + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +out_dt: + au_ren_rev_dt(err, a); +out_hdir: + au_ren_unlock(a); +out_children: + au_nhash_wh_free(&a->whlist); + if (err && a->dst_inode && a->dst_bstart != a->btgt) { + AuDbg("bstart %d, btgt %d\n", a->dst_bstart, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbstart(a->dst_dentry, a->dst_bstart); + } +out_parent: + if (!err) + d_move(a->src_dentry, a->dst_dentry); + else { + au_update_dbstart(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->flags, ISSAMEDIR)) + di_write_unlock(a->dst_parent); + else + di_write_unlock2(a->src_parent, a->dst_parent); +out_unlock: + aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); +out_free: + iput(a->dst_inode); + if (a->thargs) + au_whtmp_rmdir_free(a->thargs); + kfree(a); +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/sysaufs.h +++ linux-3.5.0/ubuntu/aufs/sysaufs.h @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface and mount lifetime management + */ + +#ifndef __SYSAUFS_H__ +#define __SYSAUFS_H__ + +#ifdef __KERNEL__ + +#include +#include "module.h" + +struct super_block; +struct au_sbinfo; + +struct sysaufs_si_attr { + struct attribute attr; + int (*show)(struct seq_file *seq, struct super_block *sb); +}; + +/* ---------------------------------------------------------------------- */ + +/* sysaufs.c */ +extern unsigned long sysaufs_si_mask; +extern struct kset *sysaufs_kset; +extern struct attribute *sysaufs_si_attrs[]; +int sysaufs_si_init(struct au_sbinfo *sbinfo); +int __init sysaufs_init(void); +void sysaufs_fin(void); + +/* ---------------------------------------------------------------------- */ + +/* some people doesn't like to show a pointer in kernel */ +static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) +{ + return sysaufs_si_mask ^ (unsigned long)sbinfo; +} + +#define SysaufsSiNamePrefix "si_" +#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) +static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) +{ + snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", + sysaufs_si_id(sbinfo)); +} + +struct au_branch; +#ifdef CONFIG_SYSFS +/* sysfs.c */ +extern struct attribute_group *sysaufs_attr_group; + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf); + +void sysaufs_br_init(struct au_branch *br); +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); + +#define sysaufs_brs_init() do {} while (0) + +#else +#define sysaufs_attr_group NULL + +AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) + +static inline +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + return 0; +} + +AuStubVoid(sysaufs_br_init, struct au_branch *br) +AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) + +static inline void sysaufs_brs_init(void) +{ + sysaufs_brs = 0; +} + +#endif /* CONFIG_SYSFS */ + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/debug.c +++ linux-3.5.0/ubuntu/aufs/debug.c @@ -0,0 +1,489 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * debug print functions + */ + +#include +#include "aufs.h" + +int aufs_debug; +MODULE_PARM_DESC(debug, "debug print"); +module_param_named(debug, aufs_debug, int, S_IRUGO | S_IWUSR | S_IWGRP); + +char *au_plevel = KERN_DEBUG; +#define dpri(fmt, ...) do { \ + if ((au_plevel \ + && strcmp(au_plevel, KERN_DEBUG)) \ + || au_debug_test()) \ + printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +void au_dpri_whlist(struct au_nhash *whlist) +{ + unsigned long ul, n; + struct hlist_head *head; + struct au_vdir_wh *tpos; + struct hlist_node *pos; + + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; ul < n; ul++) { + hlist_for_each_entry(tpos, pos, head, wh_hash) + dpri("b%d, %.*s, %d\n", + tpos->wh_bindex, + tpos->wh_str.len, tpos->wh_str.name, + tpos->wh_str.len); + head++; + } +} + +void au_dpri_vdir(struct au_vdir *vdir) +{ + unsigned long ul; + union au_vdir_deblk_p p; + unsigned char *o; + + if (!vdir || IS_ERR(vdir)) { + dpri("err %ld\n", PTR_ERR(vdir)); + return; + } + + dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %lu\n", + vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, + vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); + for (ul = 0; ul < vdir->vd_nblk; ul++) { + p.deblk = vdir->vd_deblk[ul]; + o = p.deblk; + dpri("[%lu]: %p\n", ul, o); + } +} + +static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, + struct dentry *wh) +{ + char *n = NULL; + int l = 0; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); + return -1; + } + + /* the type of i_blocks depends upon CONFIG_LSF */ + BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) + && sizeof(inode->i_blocks) != sizeof(u64)); + if (wh) { + n = (void *)wh->d_name.name; + l = wh->d_name.len; + } + + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, + hn, (long long)timespec_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode->i_version, + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb)) + return; + + iinfo = au_ii(inode); + if (!iinfo) + return; + dpri("i-1: bstart %d, bend %d, gen %d\n", + iinfo->ii_bstart, iinfo->ii_bend, au_iigen(inode)); + if (iinfo->ii_bstart < 0) + return; + hn = 0; + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; bindex++) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + do_pri_inode(bindex, iinfo->ii_hinode[0 + bindex].hi_inode, hn, + iinfo->ii_hinode[0 + bindex].hi_whdentry); + } +} + +void au_dpri_dalias(struct inode *inode) +{ + struct dentry *d; + + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) + au_dpri_dentry(d); + spin_unlock(&inode->i_lock); +} + +static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) +{ + struct dentry *wh = NULL; + int hn; + + if (!dentry || IS_ERR(dentry)) { + dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); + return -1; + } + /* do not call dget_parent() here */ + /* note: access d_xxx without d_lock */ + dpri("d%d: %.*s?/%.*s, %s, cnt %d, flags 0x%x\n", + bindex, + AuDLNPair(dentry->d_parent), AuDLNPair(dentry), + dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", + dentry->d_count, dentry->d_flags); + hn = -1; + if (bindex >= 0 && dentry->d_inode && au_test_aufs(dentry->d_sb)) { + struct au_iinfo *iinfo = au_ii(dentry->d_inode); + if (iinfo) { + hn = !!au_hn(iinfo->ii_hinode + bindex); + wh = iinfo->ii_hinode[0 + bindex].hi_whdentry; + } + } + do_pri_inode(bindex, dentry->d_inode, hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + struct au_hdentry *hdp; + + err = do_pri_dentry(-1, dentry); + if (err || !au_test_aufs(dentry->d_sb)) + return; + + dinfo = au_di(dentry); + if (!dinfo) + return; + dpri("d-1: bstart %d, bend %d, bwh %d, bdiropq %d, gen %d\n", + dinfo->di_bstart, dinfo->di_bend, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry)); + if (dinfo->di_bstart < 0) + return; + hdp = dinfo->di_hdentry; + for (bindex = dinfo->di_bstart; bindex <= dinfo->di_bend; bindex++) + do_pri_dentry(bindex, hdp[0 + bindex].hd_dentry); +} + +static int do_pri_file(aufs_bindex_t bindex, struct file *file) +{ + char a[32]; + + if (!file || IS_ERR(file)) { + dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); + return -1; + } + a[0] = 0; + if (bindex < 0 + && file->f_dentry + && au_test_aufs(file->f_dentry->d_sb) + && au_fi(file)) + snprintf(a, sizeof(a), ", gen %d, mmapped %d", + au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); + dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", + bindex, file->f_mode, file->f_flags, (long)file_count(file), + file->f_version, file->f_pos, a); + if (file->f_dentry) + do_pri_dentry(bindex, file->f_dentry); + return 0; +} + +void au_dpri_file(struct file *file) +{ + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hfile; + aufs_bindex_t bindex; + int err; + + err = do_pri_file(-1, file); + if (err || !file->f_dentry || !au_test_aufs(file->f_dentry->d_sb)) + return; + + finfo = au_fi(file); + if (!finfo) + return; + if (finfo->fi_btop < 0) + return; + fidir = finfo->fi_hdir; + if (!fidir) + do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); + else + for (bindex = finfo->fi_btop; + bindex >= 0 && bindex <= fidir->fd_bbot; + bindex++) { + hfile = fidir->fd_hfile + bindex; + do_pri_file(bindex, hfile ? hfile->hf_file : NULL); + } +} + +static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) +{ + struct vfsmount *mnt; + struct super_block *sb; + + if (!br || IS_ERR(br)) + goto out; + mnt = br->br_mnt; + if (!mnt || IS_ERR(mnt)) + goto out; + sb = mnt->mnt_sb; + if (!sb || IS_ERR(sb)) + goto out; + + dpri("s%d: {perm 0x%x, id %d, cnt %d, wbr %p}, " + "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " + "xino %d\n", + bindex, br->br_perm, br->br_id, atomic_read(&br->br_count), + br->br_wbr, au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), + sb->s_flags, sb->s_count, + atomic_read(&sb->s_active), !!br->br_xino.xi_file); + return 0; + +out: + dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); + return -1; +} + +void au_dpri_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + aufs_bindex_t bindex; + int err; + /* to reuduce stack size */ + struct { + struct vfsmount mnt; + struct au_branch fake; + } *a; + + /* this function can be called from magic sysrq */ + a = kzalloc(sizeof(*a), GFP_ATOMIC); + if (unlikely(!a)) { + dpri("no memory\n"); + return; + } + + a->mnt.mnt_sb = sb; + a->fake.br_perm = 0; + a->fake.br_mnt = &a->mnt; + a->fake.br_xino.xi_file = NULL; + atomic_set(&a->fake.br_count, 0); + smp_mb(); /* atomic_set */ + err = do_pri_br(-1, &a->fake); + kfree(a); + dpri("dev 0x%x\n", sb->s_dev); + if (err || !au_test_aufs(sb)) + return; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + dpri("nw %d, gen %u, kobj %d\n", + atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, + atomic_read(&sbinfo->si_kobj.kref.refcount)); + for (bindex = 0; bindex <= sbinfo->si_bend; bindex++) + do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); +} + +/* ---------------------------------------------------------------------- */ + +void au_dbg_sleep_jiffy(int jiffy) +{ + while (jiffy) + jiffy = schedule_timeout_uninterruptible(jiffy); +} + +void au_dbg_iattr(struct iattr *ia) +{ +#define AuBit(name) if (ia->ia_valid & ATTR_ ## name) \ + dpri(#name "\n") + AuBit(MODE); + AuBit(UID); + AuBit(GID); + AuBit(SIZE); + AuBit(ATIME); + AuBit(MTIME); + AuBit(CTIME); + AuBit(ATIME_SET); + AuBit(MTIME_SET); + AuBit(FORCE); + AuBit(ATTR_FLAG); + AuBit(KILL_SUID); + AuBit(KILL_SGID); + AuBit(FILE); + AuBit(KILL_PRIV); + AuBit(OPEN); + AuBit(TIMES_SET); +#undef AuBit + dpri("ia_file %p\n", ia->ia_file); +} + +/* ---------------------------------------------------------------------- */ + +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) +{ + struct inode *h_inode, *inode = dentry->d_inode; + struct dentry *h_dentry; + aufs_bindex_t bindex, bend, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bend = au_dbend(dentry); + bi = au_ibend(inode); + if (bi < bend) + bend = bi; + bindex = au_dbstart(dentry); + bi = au_ibstart(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bend; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_inode = au_h_iptr(inode, bindex); + if (unlikely(h_inode != h_dentry->d_inode)) { + int old = au_debug_test(); + if (!old) + au_debug(1); + AuDbg("b%d, %s:%d\n", bindex, func, line); + AuDbgDentry(dentry); + AuDbgInode(inode); + if (!old) + au_debug(0); + BUG(); + } + } +} + +void au_dbg_verify_dir_parent(struct dentry *dentry, unsigned int sigen) +{ + struct dentry *parent; + + parent = dget_parent(dentry); + AuDebugOn(!S_ISDIR(dentry->d_inode->i_mode)); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(au_digen_test(parent, sigen)); + dput(parent); +} + +void au_dbg_verify_nondir_parent(struct dentry *dentry, unsigned int sigen) +{ + struct dentry *parent; + struct inode *inode; + + parent = dget_parent(dentry); + inode = dentry->d_inode; + AuDebugOn(inode && S_ISDIR(dentry->d_inode->i_mode)); + AuDebugOn(au_digen_test(parent, sigen)); + dput(parent); +} + +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) +{ + int err, i, j; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + AuDebugOn(err); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); + AuDebugOn(err); + for (i = dpages.ndpage - 1; !err && i >= 0; i--) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + for (j = dpage->ndentry - 1; !err && j >= 0; j--) + AuDebugOn(au_digen_test(dentries[j], sigen)); + } + au_dpages_free(&dpages); +} + +void au_dbg_verify_kthread(void) +{ + if (au_wkq_test()) { + au_dbg_blocked(); + /* + * It may be recursive, but udba=notify between two aufs mounts, + * where a single ro branch is shared, is not a problem. + */ + /* WARN_ON(1); */ + } +} + +/* ---------------------------------------------------------------------- */ + +void au_debug_sbinfo_init(struct au_sbinfo *sbinfo __maybe_unused) +{ +#ifdef AuForceNoPlink + au_opt_clr(sbinfo->si_mntflags, PLINK); +#endif +#ifdef AuForceNoXino + au_opt_clr(sbinfo->si_mntflags, XINO); +#endif +#ifdef AuForceNoRefrof + au_opt_clr(sbinfo->si_mntflags, REFROF); +#endif +#ifdef AuForceHnotify + au_opt_set_udba(sbinfo->si_mntflags, UDBA_HNOTIFY); +#endif +#ifdef AuForceRd0 + sbinfo->si_rdblk = 0; + sbinfo->si_rdhash = 0; +#endif +} + +int __init au_debug_init(void) +{ + aufs_bindex_t bindex; + struct au_vdir_destr destr; + + bindex = -1; + AuDebugOn(bindex >= 0); + + destr.len = -1; + AuDebugOn(destr.len < NAME_MAX); + +#ifdef CONFIG_4KSTACKS + pr_warn("CONFIG_4KSTACKS is defined.\n"); +#endif + +#ifdef AuForceNoBrs + sysaufs_brs = 0; +#endif + + return 0; +} --- linux-3.5.0.orig/ubuntu/aufs/spl.h +++ linux-3.5.0/ubuntu/aufs/spl.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * simple list protected by a spinlock + */ + +#ifndef __AUFS_SPL_H__ +#define __AUFS_SPL_H__ + +#ifdef __KERNEL__ + +struct au_splhead { + spinlock_t spin; + struct list_head head; +}; + +static inline void au_spl_init(struct au_splhead *spl) +{ + spin_lock_init(&spl->spin); + INIT_LIST_HEAD(&spl->head); +} + +static inline void au_spl_add(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_add(list, &spl->head); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del(struct list_head *list, struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del(list); + spin_unlock(&spl->spin); +} + +static inline void au_spl_del_rcu(struct list_head *list, + struct au_splhead *spl) +{ + spin_lock(&spl->spin); + list_del_rcu(list); + spin_unlock(&spl->spin); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SPL_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/loop.h +++ linux-3.5.0/ubuntu/aufs/loop.h @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * support for loopback mount as a branch + */ + +#ifndef __AUFS_LOOP_H__ +#define __AUFS_LOOP_H__ + +#ifdef __KERNEL__ + +struct dentry; +struct super_block; + +#ifdef CONFIG_AUFS_BDEV_LOOP +/* loop.c */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); +int au_test_loopback_kthread(void); +void au_warn_loopback(struct super_block *h_sb); + +int au_loopback_init(void); +void au_loopback_fin(void); +#else +AuStubInt0(au_test_loopback_overlap, struct super_block *sb, + struct dentry *h_adding) +AuStubInt0(au_test_loopback_kthread, void) +AuStubVoid(au_warn_loopback, struct super_block *h_sb) + +AuStubInt0(au_loopback_init, void) +AuStubVoid(au_loopback_fin, void) +#endif /* BLK_DEV_LOOP */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/dir.h +++ linux-3.5.0/ubuntu/aufs/dir.h @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * directory operations + */ + +#ifndef __AUFS_DIR_H__ +#define __AUFS_DIR_H__ + +#ifdef __KERNEL__ + +#include + +/* ---------------------------------------------------------------------- */ + +/* need to be faster and smaller */ + +struct au_nhash { + unsigned int nh_num; + struct hlist_head *nh_head; +}; + +struct au_vdir_destr { + unsigned char len; + unsigned char name[0]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; +} ____cacheline_aligned_in_smp; + +struct au_vdir_de { + ino_t de_ino; + unsigned char de_type; + /* caution: packed */ + struct au_vdir_destr de_str; +} __packed; + +struct au_vdir_wh { + struct hlist_node wh_hash; +#ifdef CONFIG_AUFS_SHWH + ino_t wh_ino; + aufs_bindex_t wh_bindex; + unsigned char wh_type; +#else + aufs_bindex_t wh_bindex; +#endif + /* caution: packed */ + struct au_vdir_destr wh_str; +} __packed; + +union au_vdir_deblk_p { + unsigned char *deblk; + struct au_vdir_de *de; +}; + +struct au_vdir { + unsigned char **vd_deblk; + unsigned long vd_nblk; + struct { + unsigned long ul; + union au_vdir_deblk_p p; + } vd_last; + + unsigned long vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dir.c */ +extern const struct file_operations aufs_dir_fop; +void au_add_nlink(struct inode *dir, struct inode *h_dir); +void au_sub_nlink(struct inode *dir, struct inode *h_dir); +loff_t au_dir_size(struct file *file, struct dentry *dentry); +int au_test_empty_lower(struct dentry *dentry); +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); + +/* vdir.c */ +unsigned int au_rdhash_est(loff_t sz); +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); +void au_nhash_wh_free(struct au_nhash *whlist); +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit); +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh); +void au_vdir_free(struct au_vdir *vdir); +int au_vdir_init(struct file *file); +int au_vdir_fill_de(struct file *file, void *dirent, filldir_t filldir); + +/* ioctl.c */ +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); + +#ifdef CONFIG_AUFS_RDU +/* rdu.c */ +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg); +#endif +#else +static inline long au_rdu_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return -EINVAL; +} +#ifdef CONFIG_COMPAT +static inline long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return -EINVAL; +} +#endif +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/i_op_add.c +++ linux-3.5.0/ubuntu/aufs/i_op_add.c @@ -0,0 +1,712 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode operations (add entry) + */ + +#include "aufs.h" + +/* + * final procedure of adding a new entry, except link(2). + * remove whiteout, instantiate, copyup the parent dir's times and size + * and update version. + * if it failed, re-create the removed whiteout. + */ +static int epilog(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct dentry *dentry) +{ + int err, rerr; + aufs_bindex_t bwh; + struct path h_path; + struct inode *inode, *h_dir; + struct dentry *wh; + + bwh = -1; + if (wh_dentry) { + h_dir = wh_dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(h_dir); + AuDebugOn(au_h_iptr(dir, bindex) != h_dir); + bwh = au_dbwh(dentry); + h_path.dentry = wh_dentry; + h_path.mnt = au_sbr_mnt(dir->i_sb, bindex); + err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, + dentry); + if (unlikely(err)) + goto out; + } + + inode = au_new_inode(dentry, /*must_new*/1); + if (!IS_ERR(inode)) { + d_instantiate(dentry, inode); + dir = dentry->d_parent->d_inode; /* dir inode is locked */ + IMustLock(dir); + if (au_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + dir->i_version++; + return 0; /* success */ + } + + err = PTR_ERR(inode); + if (!wh_dentry) + goto out; + + /* revert */ + /* dir inode is locked */ + wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); + rerr = PTR_ERR(wh); + if (IS_ERR(wh)) { + AuIOErr("%.*s reverting whiteout failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } else + dput(wh); + +out: + return err; +} + +static int au_d_may_add(struct dentry *dentry) +{ + int err; + + err = 0; + if (unlikely(d_unhashed(dentry))) + err = -ENOENT; + if (unlikely(dentry->d_inode)) + err = -EEXIST; + return err; +} + +/* + * simple tests for the adding inode operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry; + struct inode *h_inode; + + err = -ENAMETOOLONG; + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + h_dentry = au_h_dptr(dentry, bindex); + h_inode = h_dentry->d_inode; + if (!dentry->d_inode) { + err = -EEXIST; + if (unlikely(h_inode)) + goto out; + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(!h_inode || !h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } + + err = 0; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + err = -EIO; + +out: + AuTraceErr(err); + return err; +} + +/* + * initial procedure of adding a new entry. + * prepare writable branch and the parent dir, lock it, + * and lookup whiteout for the new entry. + */ +static struct dentry* +lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, + struct dentry *src_dentry, struct au_pin *pin, + struct au_wr_dir_args *wr_dir_args) +{ + struct dentry *wh_dentry, *h_parent; + struct super_block *sb; + struct au_branch *br; + int err; + unsigned int udba; + aufs_bindex_t bcpup; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + + err = au_wr_dir(dentry, src_dentry, wr_dir_args); + bcpup = err; + wh_dentry = ERR_PTR(err); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_parent = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbstart(dentry) == bcpup) + err = au_may_add(dentry, bcpup, h_parent, + au_ftest_wrdir(wr_dir_args->flags, ISDIR)); + else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + + br = au_sbr(sb, bcpup); + if (dt) { + struct path tmp = { + .dentry = h_parent, + .mnt = br->br_mnt + }; + au_dtime_store(dt, au_pinned_parent(pin), &tmp); + } + + wh_dentry = NULL; + if (bcpup != au_dbwh(dentry)) + goto out; /* success */ + + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + +out_unpin: + if (IS_ERR(wh_dentry)) + au_unpin(pin); +out: + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +enum { Mknod, Symlink, Creat }; +struct simple_arg { + int type; + union { + struct { + umode_t mode; + struct nameidata *nd; + } c; + struct { + const char *symname; + } s; + struct { + umode_t mode; + dev_t dev; + } m; + } u; +}; + +static int add_simple(struct inode *dir, struct dentry *dentry, + struct simple_arg *arg) +{ + int err; + aufs_bindex_t bstart; + unsigned char created; + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY + }; + + AuDbg("%.*s\n", AuDLNPair(dentry)); + IMustLock(dir); + + parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, /*src_dentry*/NULL, &pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + bstart = au_dbstart(dentry); + h_path.dentry = au_h_dptr(dentry, bstart); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bstart); + h_dir = au_pinned_h_dir(&pin); + switch (arg->type) { + case Creat: + err = vfsub_create(h_dir, &h_path, arg->u.c.mode); + break; + case Symlink: + err = vfsub_symlink(h_dir, &h_path, arg->u.s.symname); + break; + case Mknod: + err = vfsub_mknod(h_dir, &h_path, arg->u.m.mode, arg->u.m.dev); + break; + default: + BUG(); + } + created = !err; + if (!err) + err = epilog(dir, bstart, wh_dentry, dentry); + + /* revert */ + if (unlikely(created && err && h_path.dentry->d_inode)) { + int rerr; + rerr = vfsub_unlink(h_dir, &h_path, /*force*/0); + if (rerr) { + AuIOErr("%.*s revert failure(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); + } + + au_unpin(&pin); + dput(wh_dentry); + +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out: + return err; +} + +int aufs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, + dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, + .u.m = { + .mode = mode, + .dev = dev + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, + .u.s.symname = symname + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_create(struct inode *dir, struct dentry *dentry, umode_t mode, + struct nameidata *nd) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = mode, + .nd = nd + } + }; + return add_simple(dir, dentry, &arg); +} + +/* ---------------------------------------------------------------------- */ + +struct au_link_args { + aufs_bindex_t bdst, bsrc; + struct au_pin pin; + struct path h_path; + struct dentry *src_parent, *parent; +}; + +static int au_cpup_before_link(struct dentry *src_dentry, + struct au_link_args *a) +{ + int err; + struct dentry *h_src_dentry; + struct mutex *h_mtx; + struct file *h_file; + + di_read_lock_parent(a->src_parent, AuLock_IR); + err = au_test_and_cpup_dirs(src_dentry, a->bdst); + if (unlikely(err)) + goto out; + + h_src_dentry = au_h_dptr(src_dentry, a->bsrc); + h_mtx = &h_src_dentry->d_inode->i_mutex; + err = au_pin(&a->pin, src_dentry, a->bdst, + au_opt_udba(src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out; + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + h_file = au_h_open_pre(src_dentry, a->bsrc); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_simple(src_dentry, a->bdst, -1, + AuCpup_DTIME /* | AuCpup_KEEPLINO */); + mutex_unlock(h_mtx); + au_h_open_post(src_dentry, a->bsrc, h_file); + au_unpin(&a->pin); + +out: + di_read_unlock(a->src_parent, AuLock_IR); + return err; +} + +static int au_cpup_or_link(struct dentry *src_dentry, struct au_link_args *a) +{ + int err; + unsigned char plink; + struct inode *h_inode, *inode; + struct dentry *h_src_dentry; + struct super_block *sb; + struct file *h_file; + + plink = 0; + h_inode = NULL; + sb = src_dentry->d_sb; + inode = src_dentry->d_inode; + if (au_ibstart(inode) <= a->bdst) + h_inode = au_h_iptr(inode, a->bdst); + if (!h_inode || !h_inode->i_nlink) { + /* copyup src_dentry as the name of dentry. */ + au_set_dbstart(src_dentry, a->bdst); + au_set_h_dptr(src_dentry, a->bdst, dget(a->h_path.dentry)); + h_inode = au_h_dptr(src_dentry, a->bsrc)->d_inode; + mutex_lock_nested(&h_inode->i_mutex, AuLsc_I_CHILD); + h_file = au_h_open_pre(src_dentry, a->bsrc); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + h_file = NULL; + } else + err = au_sio_cpup_single(src_dentry, a->bdst, a->bsrc, + -1, AuCpup_KEEPLINO, + a->parent); + mutex_unlock(&h_inode->i_mutex); + au_h_open_post(src_dentry, a->bsrc, h_file); + au_set_h_dptr(src_dentry, a->bdst, NULL); + au_set_dbstart(src_dentry, a->bsrc); + } else { + /* the inode of src_dentry already exists on a.bdst branch */ + h_src_dentry = d_find_alias(h_inode); + if (!h_src_dentry && au_plink_test(inode)) { + plink = 1; + h_src_dentry = au_plink_lkup(inode, a->bdst); + err = PTR_ERR(h_src_dentry); + if (IS_ERR(h_src_dentry)) + goto out; + + if (unlikely(!h_src_dentry->d_inode)) { + dput(h_src_dentry); + h_src_dentry = NULL; + } + + } + if (h_src_dentry) { + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path); + dput(h_src_dentry); + } else { + AuIOErr("no dentry found for hi%lu on b%d\n", + h_inode->i_ino, a->bdst); + err = -EIO; + } + } + + if (!err && !plink) + au_plink_append(inode, a->bdst, a->h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry) +{ + int err, rerr; + struct au_dtime dt; + struct au_link_args *a; + struct dentry *wh_dentry, *h_src_dentry; + struct inode *inode; + struct super_block *sb; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + IMustLock(dir); + inode = src_dentry->d_inode; + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_and_write_lock2(dentry, src_dentry, + AuLock_NOPLM | AuLock_GEN); + if (unlikely(err)) + goto out_kfree; + err = au_d_hashed_positive(src_dentry); + if (unlikely(err)) + goto out_unlock; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + a->src_parent = dget_parent(src_dentry); + wr_dir_args.force_btgt = au_ibstart(inode); + + di_write_lock_parent(a->parent); + wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + err = 0; + sb = dentry->d_sb; + a->bdst = au_dbstart(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibstart(inode); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + if (!h_src_dentry) { + a->bsrc = au_dbstart(src_dentry); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + AuDebugOn(!h_src_dentry); + } else if (IS_ERR(h_src_dentry)) + goto out_parent; + + if (au_opt_test(au_mntflags(sb), PLINK)) { + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) + err = au_cpup_or_link(src_dentry, a); + else + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path); + dput(h_src_dentry); + } else { + /* + * copyup src_dentry to the branch we process, + * and then link(2) to it. + */ + dput(h_src_dentry); + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { + au_unpin(&a->pin); + di_write_unlock(a->parent); + err = au_cpup_before_link(src_dentry, a); + di_write_lock_parent(a->parent); + if (!err) + err = au_pin(&a->pin, dentry, a->bdst, + au_opt_udba(sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_wh; + } + if (!err) { + h_src_dentry = au_h_dptr(src_dentry, a->bdst); + err = -ENOENT; + if (h_src_dentry && h_src_dentry->d_inode) + err = vfsub_link(h_src_dentry, + au_pinned_h_dir(&a->pin), + &a->h_path); + } + } + if (unlikely(err)) + goto out_unpin; + + if (wh_dentry) { + a->h_path.dentry = wh_dentry; + err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, + dentry); + if (unlikely(err)) + goto out_revert; + } + + dir->i_version++; + if (au_ibstart(dir) == au_dbstart(dentry)) + au_cpup_attr_timesizes(dir); + inc_nlink(inode); + inode->i_ctime = dir->i_ctime; + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ + d_drop(dentry); + goto out_unpin; /* success */ + +out_revert: + rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, /*force*/0); + if (unlikely(rerr)) { + AuIOErr("%.*s reverting failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); +out_unpin: + au_unpin(&a->pin); +out_wh: + dput(wh_dentry); +out_parent: + di_write_unlock(a->parent); + dput(a->src_parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + kfree(a); +out: + return err; +} + +int aufs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; + unsigned char diropq; + struct path h_path; + struct dentry *wh_dentry, *parent, *opq_dentry; + struct mutex *h_mtx; + struct super_block *sb; + struct { + struct au_pin pin; + struct au_dtime dt; + } *a; /* reduce the stack usage */ + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR + }; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + sb = dentry->d_sb; + bindex = au_dbstart(dentry); + h_path.dentry = au_h_dptr(dentry, bindex); + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); + if (unlikely(err)) + goto out_unpin; + + /* make the dir opaque */ + diropq = 0; + h_mtx = &h_path.dentry->d_inode->i_mutex; + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + mutex_unlock(h_mtx); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out_dir; + dput(opq_dentry); + diropq = 1; + } + + err = epilog(dir, bindex, wh_dentry, dentry); + if (!err) { + inc_nlink(dir); + goto out_unpin; /* success */ + } + + /* revert */ + if (diropq) { + AuLabel(revert opq); + mutex_lock_nested(h_mtx, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + mutex_unlock(h_mtx); + if (rerr) { + AuIOErr("%.*s reverting diropq failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + } + +out_dir: + AuLabel(revert dir); + rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); + if (rerr) { + AuIOErr("%.*s reverting dir failed(%d, %d)\n", + AuDLNPair(dentry), err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbstart(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + kfree(a); +out: + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/BOM +++ linux-3.5.0/ubuntu/aufs/BOM @@ -0,0 +1,3 @@ +URL: git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git +CHANGELOG: +COMMIT: 18e455787597579fe144cdb2f18aa6a0a32c46a4 --- linux-3.5.0.orig/ubuntu/aufs/sysrq.c +++ linux-3.5.0/ubuntu/aufs/sysrq.c @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * magic sysrq hanlder + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + + plevel = au_plevel; + au_plevel = KERN_WARNING; + + sbinfo = au_sbi(sb); + /* since we define pr_fmt, call printk directly */ + printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); + printk(KERN_WARNING AUFS_NAME ": superblock\n"); + au_dpri_sb(sb); + +#if 0 + printk(KERN_WARNING AUFS_NAME ": root dentry\n"); + au_dpri_dentry(sb->s_root); + printk(KERN_WARNING AUFS_NAME ": root inode\n"); + au_dpri_inode(sb->s_root->d_inode); +#endif + +#if 0 + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + + err = au_dpages_init(&dpages, GFP_ATOMIC); + if (unlikely(err)) + break; + err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); + if (!err) + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) + au_dpri_dentry(dpage->dentries[j]); + } + au_dpages_free(&dpages); + } while (0); +#endif + +#if 1 + { + struct inode *i; + printk(KERN_WARNING AUFS_NAME ": isolated inode\n"); + spin_lock(&inode_sb_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (1 || list_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&inode_sb_list_lock); + } +#endif + printk(KERN_WARNING AUFS_NAME ": files\n"); + lg_global_lock(&files_lglock); + do_file_list_for_each_entry(sb, file) { + umode_t mode; + mode = file->f_dentry->d_inode->i_mode; + if (!special_file(mode) || au_special_file(mode)) + au_dpri_file(file); + } while_file_list_for_each_entry; + lg_global_unlock(&files_lglock); + printk(KERN_WARNING AUFS_NAME ": done\n"); + + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, S_IRUGO); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + + lockdep_off(); + au_sbilist_lock(); + list_for_each_entry(sbinfo, &au_sbilist.head, si_list) + sysrq_sb(sbinfo->si_sb); + au_sbilist_unlock(); + lockdep_on(); +} + +static struct sysrq_key_op au_sysrq_op = { + .handler = au_sysrq, + .help_msg = "Aufs", + .action_msg = "Aufs", + .enable_mask = SYSRQ_ENABLE_DUMP +}; + +/* ---------------------------------------------------------------------- */ + +int __init au_sysrq_init(void) +{ + int err; + char key; + + err = -1; + key = *aufs_sysrq_key; + if ('a' <= key && key <= 'z') + err = register_sysrq_key(key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d, sysrq=%c\n", err, key); + return err; +} + +void au_sysrq_fin(void) +{ + int err; + err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} --- linux-3.5.0.orig/ubuntu/aufs/hnotify.c +++ linux-3.5.0/ubuntu/aufs/hnotify.c @@ -0,0 +1,712 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * abstraction to notify the direct changes on lower directories + */ + +#include "aufs.h" + +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) +{ + int err; + struct au_hnotify *hn; + + err = -ENOMEM; + hn = au_cache_alloc_hnotify(); + if (hn) { + hn->hn_aufs_inode = inode; + hinode->hi_notify = hn; + err = au_hnotify_op.alloc(hinode); + AuTraceErr(err); + if (unlikely(err)) { + hinode->hi_notify = NULL; + au_cache_free_hnotify(hn); + /* + * The upper dir was removed by udba, but the same named + * dir left. In this case, aufs assignes a new inode + * number and set the monitor again. + * For the lower dir, the old monitnor is still left. + */ + if (err == -EEXIST) + err = 0; + } + } + + AuTraceErr(err); + return err; +} + +void au_hn_free(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + + hn = hinode->hi_notify; + if (hn) { + hinode->hi_notify = NULL; + if (au_hnotify_op.free(hinode, hn)) + au_cache_free_hnotify(hn); + } +} + +/* ---------------------------------------------------------------------- */ + +void au_hn_ctl(struct au_hinode *hinode, int do_set) +{ + if (hinode->hi_notify) + au_hnotify_op.ctl(hinode, do_set); +} + +void au_hn_reset(struct inode *inode, unsigned int flags) +{ + aufs_bindex_t bindex, bend; + struct inode *hi; + struct dentry *iwhdentry; + + bend = au_ibend(inode); + for (bindex = au_ibstart(inode); bindex <= bend; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* mutex_lock_nested(&hi->i_mutex, AuLsc_I_CHILD); */ + iwhdentry = au_hi_wh(inode, bindex); + if (iwhdentry) + dget(iwhdentry); + au_igrab(hi); + au_set_h_iptr(inode, bindex, NULL, 0); + au_set_h_iptr(inode, bindex, au_igrab(hi), + flags & ~AuHi_XINO); + iput(hi); + dput(iwhdentry); + /* mutex_unlock(&hi->i_mutex); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bend, bfound, bstart; + struct inode *h_i; + + err = 0; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + goto out; + } + + bfound = -1; + bend = au_ibend(inode); + bstart = au_ibstart(inode); +#if 0 /* reserved for future use */ + if (bindex == bend) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = bstart; bindex <= bend; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = bstart; bindex <= bend; bindex++) { + h_i = au_h_iptr(inode, bindex); + if (!h_i) + continue; + + err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + /* bad action? */ + } + + /* children inode number will be broken */ + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_tree(struct dentry *dentry) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, dentry, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + struct dentry *d; + + d = dentries[j]; + if (IS_ROOT(d)) + continue; + + au_digen_dec(d); + if (d->d_inode) + /* todo: reset children xino? + cached children only? */ + au_iigen_dec(d->d_inode); + } + } + +out_dpages: + au_dpages_free(&dpages); + +#if 0 + /* discard children */ + dentry_unhash(dentry); + dput(dentry); +#endif +out: + return err; +} + +/* + * return 0 if processed. + */ +static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, + const unsigned int isdir) +{ + int err; + struct dentry *d; + struct qstr *dname; + + err = 1; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + err = 0; + goto out; + } + + if (!isdir) { + AuDebugOn(!name); + au_iigen_dec(inode); + spin_lock(&inode->i_lock); + list_for_each_entry(d, &inode->i_dentry, d_alias) { + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len != nlen + && memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + continue; + } + err = 0; + au_digen_dec(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&inode->i_lock); + } else { + au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); + d = d_find_alias(inode); + if (!d) { + au_iigen_dec(inode); + goto out; + } + + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + err = hn_gen_tree(d); + spin_lock(&d->d_lock); + } + spin_unlock(&d->d_lock); + dput(d); + } + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) +{ + int err; + struct inode *inode; + + inode = dentry->d_inode; + if (IS_ROOT(dentry) + /* || (inode && inode->i_ino == AUFS_ROOT_INO) */ + ) { + pr_warn("branch root dir was changed\n"); + return 0; + } + + err = 0; + if (!isdir) { + au_digen_dec(dentry); + if (inode) + au_iigen_dec(inode); + } else { + au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); + if (inode) + err = hn_gen_tree(dentry); + } + + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* hnotify job flags */ +#define AuHnJob_XINO0 1 +#define AuHnJob_GEN (1 << 1) +#define AuHnJob_DIRENT (1 << 2) +#define AuHnJob_ISDIR (1 << 3) +#define AuHnJob_TRYXINO0 (1 << 4) +#define AuHnJob_MNTPNT (1 << 5) +#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) +#define au_fset_hnjob(flags, name) \ + do { (flags) |= AuHnJob_##name; } while (0) +#define au_fclr_hnjob(flags, name) \ + do { (flags) &= ~AuHnJob_##name; } while (0) + +enum { + AuHn_CHILD, + AuHn_PARENT, + AuHnLast +}; + +struct au_hnotify_args { + struct inode *h_dir, *dir, *h_child_inode; + u32 mask; + unsigned int flags[AuHnLast]; + unsigned int h_child_nlen; + char h_child_name[]; +}; + +struct hn_job_args { + unsigned int flags; + struct inode *inode, *h_inode, *dir, *h_dir; + struct dentry *dentry; + char *h_name; + int h_nlen; +}; + +static int hn_job(struct hn_job_args *a) +{ + const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); + + /* reset xino */ + if (au_ftest_hnjob(a->flags, XINO0) && a->inode) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + + if (au_ftest_hnjob(a->flags, TRYXINO0) + && a->inode + && a->h_inode) { + mutex_lock_nested(&a->h_inode->i_mutex, AuLsc_I_CHILD); + if (!a->h_inode->i_nlink) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + mutex_unlock(&a->h_inode->i_mutex); + } + + /* make the generation obsolete */ + if (au_ftest_hnjob(a->flags, GEN)) { + int err = -1; + if (a->inode) + err = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, + isdir); + if (err && a->dentry) + hn_gen_by_name(a->dentry, isdir); + /* ignore this error */ + } + + /* make dir entries obsolete */ + if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { + struct au_vdir *vdir; + + vdir = au_ivdir(a->inode); + if (vdir) + vdir->vd_jiffy = 0; + /* IMustLock(a->inode); */ + /* a->inode->i_version++; */ + } + + /* can do nothing but warn */ + if (au_ftest_hnjob(a->flags, MNTPNT) + && a->dentry + && d_mountpoint(a->dentry)) + pr_warn("mount-point %.*s is removed or renamed\n", + AuDLNPair(a->dentry)); + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, + struct inode *dir) +{ + struct dentry *dentry, *d, *parent; + struct qstr *dname; + + parent = d_find_alias(dir); + if (!parent) + return NULL; + + dentry = NULL; + spin_lock(&parent->d_lock); + list_for_each_entry(d, &parent->d_subdirs, d_u.d_child) { + /* AuDbg("%.*s\n", AuDLNPair(d)); */ + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + dname = &d->d_name; + if (dname->len != nlen || memcmp(dname->name, name, nlen)) + goto cont_unlock; + if (au_di(d)) + au_digen_dec(d); + else + goto cont_unlock; + if (d->d_count) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + + cont_unlock: + spin_unlock(&d->d_lock); + } + spin_unlock(&parent->d_lock); + dput(parent); + + if (dentry) + di_write_lock_child(dentry); + + return dentry; +} + +static struct inode *lookup_wlock_by_ino(struct super_block *sb, + aufs_bindex_t bindex, ino_t h_ino) +{ + struct inode *inode; + ino_t ino; + int err; + + inode = NULL; + err = au_xino_read(sb, bindex, h_ino, &ino); + if (!err && ino) + inode = ilookup(sb, ino); + if (!inode) + goto out; + + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("wrong root branch\n"); + iput(inode); + inode = NULL; + goto out; + } + + ii_write_lock_child(inode); + +out: + return inode; +} + +static void au_hn_bh(void *_args) +{ + struct au_hnotify_args *a = _args; + struct super_block *sb; + aufs_bindex_t bindex, bend, bfound; + unsigned char xino, try_iput; + int err; + struct inode *inode; + ino_t h_ino; + struct hn_job_args args; + struct dentry *dentry; + struct au_sbinfo *sbinfo; + + AuDebugOn(!_args); + AuDebugOn(!a->h_dir); + AuDebugOn(!a->dir); + AuDebugOn(!a->mask); + AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", + a->mask, a->dir->i_ino, a->h_dir->i_ino, + a->h_child_inode ? a->h_child_inode->i_ino : 0); + + inode = NULL; + dentry = NULL; + /* + * do not lock a->dir->i_mutex here + * because of d_revalidate() may cause a deadlock. + */ + sb = a->dir->i_sb; + AuDebugOn(!sb); + sbinfo = au_sbi(sb); + AuDebugOn(!sbinfo); + si_write_lock(sb, AuLock_NOPLMW); + + ii_read_lock_parent(a->dir); + bfound = -1; + bend = au_ibend(a->dir); + for (bindex = au_ibstart(a->dir); bindex <= bend; bindex++) + if (au_h_iptr(a->dir, bindex) == a->h_dir) { + bfound = bindex; + break; + } + ii_read_unlock(a->dir); + if (unlikely(bfound < 0)) + goto out; + + xino = !!au_opt_test(au_mntflags(sb), XINO); + h_ino = 0; + if (a->h_child_inode) + h_ino = a->h_child_inode->i_ino; + + if (a->h_child_nlen + && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) + || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) + dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, + a->dir); + try_iput = 0; + if (dentry) + inode = dentry->d_inode; + if (xino && !inode && h_ino + && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { + inode = lookup_wlock_by_ino(sb, bfound, h_ino); + try_iput = 1; + } + + args.flags = a->flags[AuHn_CHILD]; + args.dentry = dentry; + args.inode = inode; + args.h_inode = a->h_child_inode; + args.dir = a->dir; + args.h_dir = a->h_dir; + args.h_name = a->h_child_name; + args.h_nlen = a->h_child_nlen; + err = hn_job(&args); + if (dentry) { + if (au_di(dentry)) + di_write_unlock(dentry); + dput(dentry); + } + if (inode && try_iput) { + ii_write_unlock(inode); + iput(inode); + } + + ii_write_lock_parent(a->dir); + args.flags = a->flags[AuHn_PARENT]; + args.dentry = NULL; + args.inode = a->dir; + args.h_inode = a->h_dir; + args.dir = NULL; + args.h_dir = NULL; + args.h_name = NULL; + args.h_nlen = 0; + err = hn_job(&args); + ii_write_unlock(a->dir); + +out: + iput(a->h_child_inode); + iput(a->h_dir); + iput(a->dir); + si_write_unlock(sb); + au_nwt_done(&sbinfo->si_nowait); + kfree(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + struct qstr *h_child_qstr, struct inode *h_child_inode) +{ + int err, len; + unsigned int flags[AuHnLast], f; + unsigned char isdir, isroot, wh; + struct inode *dir; + struct au_hnotify_args *args; + char *p, *h_child_name; + + err = 0; + AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); + dir = igrab(hnotify->hn_aufs_inode); + if (!dir) + goto out; + + isroot = (dir->i_ino == AUFS_ROOT_INO); + wh = 0; + h_child_name = (void *)h_child_qstr->name; + len = h_child_qstr->len; + if (h_child_name) { + if (len > AUFS_WH_PFX_LEN + && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + h_child_name += AUFS_WH_PFX_LEN; + len -= AUFS_WH_PFX_LEN; + wh = 1; + } + } + + isdir = 0; + if (h_child_inode) + isdir = !!S_ISDIR(h_child_inode->i_mode); + flags[AuHn_PARENT] = AuHnJob_ISDIR; + flags[AuHn_CHILD] = 0; + if (isdir) + flags[AuHn_CHILD] = AuHnJob_ISDIR; + au_fset_hnjob(flags[AuHn_PARENT], DIRENT); + au_fset_hnjob(flags[AuHn_CHILD], GEN); + switch (mask & FS_EVENTS_POSS_ON_CHILD) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + au_fset_hnjob(flags[AuHn_CHILD], XINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + /*FALLTHROUGH*/ + case FS_CREATE: + AuDebugOn(!h_child_name || !h_child_inode); + break; + + case FS_DELETE: + /* + * aufs never be able to get this child inode. + * revalidation should be in d_revalidate() + * by checking i_nlink, i_generation or d_unhashed(). + */ + AuDebugOn(!h_child_name); + au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + break; + + default: + AuDebugOn(1); + } + + if (wh) + h_child_inode = NULL; + + err = -ENOMEM; + /* iput() and kfree() will be called in au_hnotify() */ + args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + iput(dir); + goto out; + } + args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; + args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; + args->mask = mask; + args->dir = dir; + args->h_dir = igrab(h_dir); + if (h_child_inode) + h_child_inode = igrab(h_child_inode); /* can be NULL */ + args->h_child_inode = h_child_inode; + args->h_child_nlen = len; + if (len) { + p = (void *)args; + p += sizeof(*args); + memcpy(p, h_child_name, len); + p[len] = 0; + } + + f = 0; + if (!dir->i_nlink) + f = AuWkq_NEST; + err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + iput(args->h_child_inode); + iput(args->h_dir); + iput(args->dir); + kfree(args); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + AuDebugOn(!(udba & AuOptMask_UDBA)); + + err = 0; + if (au_hnotify_op.reset_br) + err = au_hnotify_op.reset_br(udba, br, perm); + + return err; +} + +int au_hnotify_init_br(struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (au_hnotify_op.init_br) + err = au_hnotify_op.init_br(br, perm); + + return err; +} + +void au_hnotify_fin_br(struct au_branch *br) +{ + if (au_hnotify_op.fin_br) + au_hnotify_op.fin_br(br); +} + +static void au_hn_destroy_cache(void) +{ + kmem_cache_destroy(au_cachep[AuCache_HNOTIFY]); + au_cachep[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cachep[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cachep[AuCache_HNOTIFY]) { + err = 0; + if (au_hnotify_op.init) + err = au_hnotify_op.init(); + if (unlikely(err)) + au_hn_destroy_cache(); + } + AuTraceErr(err); + return err; +} + +void au_hnotify_fin(void) +{ + if (au_hnotify_op.fin) + au_hnotify_op.fin(); + /* cf. au_cache_fin() */ + if (au_cachep[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} --- linux-3.5.0.orig/ubuntu/aufs/opts.c +++ linux-3.5.0/ubuntu/aufs/opts.c @@ -0,0 +1,1677 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * mount options/flags + */ + +#include +#include /* a distribution requires */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +enum { + Opt_br, + Opt_add, Opt_del, Opt_mod, Opt_reorder, Opt_append, Opt_prepend, + Opt_idel, Opt_imod, Opt_ireorder, + Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, Opt_rendir, + Opt_rdblk_def, Opt_rdhash_def, + Opt_xino, Opt_zxino, Opt_noxino, + Opt_trunc_xino, Opt_trunc_xino_v, Opt_notrunc_xino, + Opt_trunc_xino_path, Opt_itrunc_xino, + Opt_trunc_xib, Opt_notrunc_xib, + Opt_shwh, Opt_noshwh, + Opt_plink, Opt_noplink, Opt_list_plink, + Opt_udba, + Opt_dio, Opt_nodio, + /* Opt_lock, Opt_unlock, */ + Opt_cmd, Opt_cmd_args, + Opt_diropq_a, Opt_diropq_w, + Opt_warn_perm, Opt_nowarn_perm, + Opt_wbr_copyup, Opt_wbr_create, + Opt_refrof, Opt_norefrof, + Opt_verbose, Opt_noverbose, + Opt_sum, Opt_nosum, Opt_wsum, + Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err +}; + +static match_table_t options = { + {Opt_br, "br=%s"}, + {Opt_br, "br:%s"}, + + {Opt_add, "add=%d:%s"}, + {Opt_add, "add:%d:%s"}, + {Opt_add, "ins=%d:%s"}, + {Opt_add, "ins:%d:%s"}, + {Opt_append, "append=%s"}, + {Opt_append, "append:%s"}, + {Opt_prepend, "prepend=%s"}, + {Opt_prepend, "prepend:%s"}, + + {Opt_del, "del=%s"}, + {Opt_del, "del:%s"}, + /* {Opt_idel, "idel:%d"}, */ + {Opt_mod, "mod=%s"}, + {Opt_mod, "mod:%s"}, + /* {Opt_imod, "imod:%d:%s"}, */ + + {Opt_dirwh, "dirwh=%d"}, + + {Opt_xino, "xino=%s"}, + {Opt_noxino, "noxino"}, + {Opt_trunc_xino, "trunc_xino"}, + {Opt_trunc_xino_v, "trunc_xino_v=%d:%d"}, + {Opt_notrunc_xino, "notrunc_xino"}, + {Opt_trunc_xino_path, "trunc_xino=%s"}, + {Opt_itrunc_xino, "itrunc_xino=%d"}, + /* {Opt_zxino, "zxino=%s"}, */ + {Opt_trunc_xib, "trunc_xib"}, + {Opt_notrunc_xib, "notrunc_xib"}, + +#ifdef CONFIG_PROC_FS + {Opt_plink, "plink"}, +#else + {Opt_ignore_silent, "plink"}, +#endif + + {Opt_noplink, "noplink"}, + +#ifdef CONFIG_AUFS_DEBUG + {Opt_list_plink, "list_plink"}, +#endif + + {Opt_udba, "udba=%s"}, + + {Opt_dio, "dio"}, + {Opt_nodio, "nodio"}, + + {Opt_diropq_a, "diropq=always"}, + {Opt_diropq_a, "diropq=a"}, + {Opt_diropq_w, "diropq=whiteouted"}, + {Opt_diropq_w, "diropq=w"}, + + {Opt_warn_perm, "warn_perm"}, + {Opt_nowarn_perm, "nowarn_perm"}, + + /* keep them temporary */ + {Opt_ignore_silent, "coo=%s"}, + {Opt_ignore_silent, "nodlgt"}, + {Opt_ignore_silent, "nodirperm1"}, + {Opt_ignore_silent, "clean_plink"}, + +#ifdef CONFIG_AUFS_SHWH + {Opt_shwh, "shwh"}, +#endif + {Opt_noshwh, "noshwh"}, + + {Opt_rendir, "rendir=%d"}, + + {Opt_refrof, "refrof"}, + {Opt_norefrof, "norefrof"}, + + {Opt_verbose, "verbose"}, + {Opt_verbose, "v"}, + {Opt_noverbose, "noverbose"}, + {Opt_noverbose, "quiet"}, + {Opt_noverbose, "q"}, + {Opt_noverbose, "silent"}, + + {Opt_sum, "sum"}, + {Opt_nosum, "nosum"}, + {Opt_wsum, "wsum"}, + + {Opt_rdcache, "rdcache=%d"}, + {Opt_rdblk, "rdblk=%d"}, + {Opt_rdblk_def, "rdblk=def"}, + {Opt_rdhash, "rdhash=%d"}, + {Opt_rdhash_def, "rdhash=def"}, + + {Opt_wbr_create, "create=%s"}, + {Opt_wbr_create, "create_policy=%s"}, + {Opt_wbr_copyup, "cpup=%s"}, + {Opt_wbr_copyup, "copyup=%s"}, + {Opt_wbr_copyup, "copyup_policy=%s"}, + + /* internal use for the scripts */ + {Opt_ignore_silent, "si=%s"}, + + {Opt_br, "dirs=%s"}, + {Opt_ignore, "debug=%d"}, + {Opt_ignore, "delete=whiteout"}, + {Opt_ignore, "delete=all"}, + {Opt_ignore, "imap=%s"}, + + /* temporary workaround, due to old mount(8)? */ + {Opt_ignore_silent, "relatime"}, + + {Opt_err, NULL} +}; + +/* ---------------------------------------------------------------------- */ + +static const char *au_parser_pattern(int val, struct match_token *token) +{ + while (token->pattern) { + if (token->token == val) + return token->pattern; + token++; + } + BUG(); + return "??"; +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t brperm = { + {AuBrPerm_RO, AUFS_BRPERM_RO}, + {AuBrPerm_RR, AUFS_BRPERM_RR}, + {AuBrPerm_RW, AUFS_BRPERM_RW}, + {0, NULL} +}; + +static match_table_t brrattr = { + {AuBrRAttr_WH, AUFS_BRRATTR_WH}, + {0, NULL} +}; + +static match_table_t brwattr = { + {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, + {0, NULL} +}; + +#define AuBrStr_LONGEST AUFS_BRPERM_RW "+" AUFS_BRWATTR_NLWH + +static int br_attr_val(char *str, match_table_t table, substring_t args[]) +{ + int attr, v; + char *p; + + attr = 0; + do { + p = strchr(str, '+'); + if (p) + *p = 0; + v = match_token(str, table, args); + if (v) + attr |= v; + else { + if (p) + *p = '+'; + pr_warn("ignored branch attribute %s\n", str); + break; + } + if (p) + str = p + 1; + } while (p); + + return attr; +} + +static int noinline_for_stack br_perm_val(char *perm) +{ + int val; + char *p; + substring_t args[MAX_OPT_ARGS]; + + p = strchr(perm, '+'); + if (p) + *p = 0; + val = match_token(perm, brperm, args); + if (!val) { + if (p) + *p = '+'; + pr_warn("ignored branch permission %s\n", perm); + val = AuBrPerm_RO; + goto out; + } + if (!p) + goto out; + + switch (val) { + case AuBrPerm_RO: + case AuBrPerm_RR: + val |= br_attr_val(p + 1, brrattr, args); + break; + case AuBrPerm_RW: + val |= br_attr_val(p + 1, brwattr, args); + break; + } + +out: + return val; +} + +/* Caller should free the return value */ +char *au_optstr_br_perm(int brperm) +{ + char *p, a[sizeof(AuBrStr_LONGEST)]; + int sz; + +#define SetPerm(str) do { \ + sz = sizeof(str); \ + memcpy(a, str, sz); \ + p = a + sz - 1; \ + } while (0) + +#define AppendAttr(flag, str) do { \ + if (brperm & flag) { \ + sz = sizeof(str); \ + *p++ = '+'; \ + memcpy(p, str, sz); \ + p += sz - 1; \ + } \ + } while (0) + + switch (brperm & AuBrPerm_Mask) { + case AuBrPerm_RO: + SetPerm(AUFS_BRPERM_RO); + break; + case AuBrPerm_RR: + SetPerm(AUFS_BRPERM_RR); + break; + case AuBrPerm_RW: + SetPerm(AUFS_BRPERM_RW); + break; + default: + AuDebugOn(1); + } + + AppendAttr(AuBrRAttr_WH, AUFS_BRRATTR_WH); + AppendAttr(AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH); + + AuDebugOn(strlen(a) >= sizeof(a)); + return kstrdup(a, GFP_NOFS); +#undef SetPerm +#undef AppendAttr +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t udbalevel = { + {AuOpt_UDBA_REVAL, "reval"}, + {AuOpt_UDBA_NONE, "none"}, +#ifdef CONFIG_AUFS_HNOTIFY + {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ +#ifdef CONFIG_AUFS_HFSNOTIFY + {AuOpt_UDBA_HNOTIFY, "fsnotify"}, +#endif +#endif + {-1, NULL} +}; + +static int noinline_for_stack udba_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, udbalevel, args); +} + +const char *au_optstr_udba(int udba) +{ + return au_parser_pattern(udba, (void *)udbalevel); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t au_wbr_create_policy = { + {AuWbrCreate_TDP, "tdp"}, + {AuWbrCreate_TDP, "top-down-parent"}, + {AuWbrCreate_RR, "rr"}, + {AuWbrCreate_RR, "round-robin"}, + {AuWbrCreate_MFS, "mfs"}, + {AuWbrCreate_MFS, "most-free-space"}, + {AuWbrCreate_MFSV, "mfs:%d"}, + {AuWbrCreate_MFSV, "most-free-space:%d"}, + + {AuWbrCreate_MFSRR, "mfsrr:%d"}, + {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, + {AuWbrCreate_PMFS, "pmfs"}, + {AuWbrCreate_PMFSV, "pmfs:%d"}, + + {-1, NULL} +}; + +/* + * cf. linux/lib/parser.c and cmdline.c + * gave up calling memparse() since it uses simple_strtoull() instead of + * kstrto...(). + */ +static int noinline_for_stack +au_match_ull(substring_t *s, unsigned long long *result) +{ + int err; + unsigned int len; + char a[32]; + + err = -ERANGE; + len = s->to - s->from; + if (len + 1 <= sizeof(a)) { + memcpy(a, s->from, len); + a[len] = '\0'; + err = kstrtoull(a, 0, result); + } + return err; +} + +static int au_wbr_mfs_wmark(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int err; + unsigned long long ull; + + err = 0; + if (!au_match_ull(arg, &ull)) + create->mfsrr_watermark = ull; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int au_wbr_mfs_sec(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int n, err; + + err = 0; + if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) + create->mfs_second = n; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int noinline_for_stack +au_wbr_create_val(char *str, struct au_opt_wbr_create *create) +{ + int err, e; + substring_t args[MAX_OPT_ARGS]; + + err = match_token(str, au_wbr_create_policy, args); + create->wbr_create = err; + switch (err) { + case AuWbrCreate_MFSRRV: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (!e) + e = au_wbr_mfs_sec(&args[1], str, create); + if (unlikely(e)) + err = e; + break; + case AuWbrCreate_MFSRR: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (unlikely(e)) { + err = e; + break; + } + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + create->mfs_second = AUFS_MFS_DEF_SEC; + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + e = au_wbr_mfs_sec(&args[0], str, create); + if (unlikely(e)) + err = e; + break; + } + + return err; +} + +const char *au_optstr_wbr_create(int wbr_create) +{ + return au_parser_pattern(wbr_create, (void *)au_wbr_create_policy); +} + +static match_table_t au_wbr_copyup_policy = { + {AuWbrCopyup_TDP, "tdp"}, + {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_BUP, "bup"}, + {AuWbrCopyup_BUP, "bottom-up-parent"}, + {AuWbrCopyup_BU, "bu"}, + {AuWbrCopyup_BU, "bottom-up"}, + {-1, NULL} +}; + +static int noinline_for_stack au_wbr_copyup_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, au_wbr_copyup_policy, args); +} + +const char *au_optstr_wbr_copyup(int wbr_copyup) +{ + return au_parser_pattern(wbr_copyup, (void *)au_wbr_copyup_policy); +} + +/* ---------------------------------------------------------------------- */ + +static const int lkup_dirflags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; + +static void dump_opts(struct au_opts *opts) +{ +#ifdef CONFIG_AUFS_DEBUG + /* reduce stack space */ + union { + struct au_opt_add *add; + struct au_opt_del *del; + struct au_opt_mod *mod; + struct au_opt_xino *xino; + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + u.add = &opt->add; + AuDbg("add {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_del: + case Opt_idel: + u.del = &opt->del; + AuDbg("del {%s, %p}\n", + u.del->pathname, u.del->h_path.dentry); + break; + case Opt_mod: + case Opt_imod: + u.mod = &opt->mod; + AuDbg("mod {%s, 0x%x, %p}\n", + u.mod->path, u.mod->perm, u.mod->h_root); + break; + case Opt_append: + u.add = &opt->add; + AuDbg("append {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_prepend: + u.add = &opt->add; + AuDbg("prepend {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_dirwh: + AuDbg("dirwh %d\n", opt->dirwh); + break; + case Opt_rdcache: + AuDbg("rdcache %d\n", opt->rdcache); + break; + case Opt_rdblk: + AuDbg("rdblk %u\n", opt->rdblk); + break; + case Opt_rdblk_def: + AuDbg("rdblk_def\n"); + break; + case Opt_rdhash: + AuDbg("rdhash %u\n", opt->rdhash); + break; + case Opt_rdhash_def: + AuDbg("rdhash_def\n"); + break; + case Opt_xino: + u.xino = &opt->xino; + AuDbg("xino {%s %.*s}\n", + u.xino->path, + AuDLNPair(u.xino->file->f_dentry)); + break; + case Opt_trunc_xino: + AuLabel(trunc_xino); + break; + case Opt_notrunc_xino: + AuLabel(notrunc_xino); + break; + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); + break; + + case Opt_noxino: + AuLabel(noxino); + break; + case Opt_trunc_xib: + AuLabel(trunc_xib); + break; + case Opt_notrunc_xib: + AuLabel(notrunc_xib); + break; + case Opt_shwh: + AuLabel(shwh); + break; + case Opt_noshwh: + AuLabel(noshwh); + break; + case Opt_plink: + AuLabel(plink); + break; + case Opt_noplink: + AuLabel(noplink); + break; + case Opt_list_plink: + AuLabel(list_plink); + break; + case Opt_udba: + AuDbg("udba %d, %s\n", + opt->udba, au_optstr_udba(opt->udba)); + break; + case Opt_dio: + AuLabel(dio); + break; + case Opt_nodio: + AuLabel(nodio); + break; + case Opt_diropq_a: + AuLabel(diropq_a); + break; + case Opt_diropq_w: + AuLabel(diropq_w); + break; + case Opt_warn_perm: + AuLabel(warn_perm); + break; + case Opt_nowarn_perm: + AuLabel(nowarn_perm); + break; + case Opt_refrof: + AuLabel(refrof); + break; + case Opt_norefrof: + AuLabel(norefrof); + break; + case Opt_verbose: + AuLabel(verbose); + break; + case Opt_noverbose: + AuLabel(noverbose); + break; + case Opt_sum: + AuLabel(sum); + break; + case Opt_nosum: + AuLabel(nosum); + break; + case Opt_wsum: + AuLabel(wsum); + break; + case Opt_wbr_create: + u.create = &opt->wbr_create; + AuDbg("create %d, %s\n", u.create->wbr_create, + au_optstr_wbr_create(u.create->wbr_create)); + switch (u.create->wbr_create) { + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + AuDbg("%d sec\n", u.create->mfs_second); + break; + case AuWbrCreate_MFSRR: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + AuDbg("%llu watermark, %d sec\n", + u.create->mfsrr_watermark, + u.create->mfs_second); + break; + } + break; + case Opt_wbr_copyup: + AuDbg("copyup %d, %s\n", opt->wbr_copyup, + au_optstr_wbr_copyup(opt->wbr_copyup)); + break; + default: + BUG(); + } + opt++; + } +#endif +} + +void au_opts_free(struct au_opts *opts) +{ + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + case Opt_append: + case Opt_prepend: + path_put(&opt->add.path); + break; + case Opt_del: + case Opt_idel: + path_put(&opt->del.h_path); + break; + case Opt_mod: + case Opt_imod: + dput(opt->mod.h_root); + break; + case Opt_xino: + fput(opt->xino.file); + break; + } + opt++; + } +} + +static int opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, + aufs_bindex_t bindex) +{ + int err; + struct au_opt_add *add = &opt->add; + char *p; + + add->bindex = bindex; + add->perm = AuBrPerm_RO; + add->pathname = opt_str; + p = strchr(opt_str, '='); + if (p) { + *p++ = 0; + if (*p) + add->perm = br_perm_val(p); + } + + err = vfsub_kern_path(add->pathname, lkup_dirflags, &add->path); + if (!err) { + if (!p) { + add->perm = AuBrPerm_RO; + if (au_test_fs_rr(add->path.dentry->d_sb)) + add->perm = AuBrPerm_RR; + else if (!bindex && !(sb_flags & MS_RDONLY)) + add->perm = AuBrPerm_RW; + } + opt->type = Opt_add; + goto out; + } + pr_err("lookup failed %s (%d)\n", add->pathname, err); + err = -EINVAL; + +out: + return err; +} + +static int au_opts_parse_del(struct au_opt_del *del, substring_t args[]) +{ + int err; + + del->pathname = args[0].from; + AuDbg("del path %s\n", del->pathname); + + err = vfsub_kern_path(del->pathname, lkup_dirflags, &del->h_path); + if (unlikely(err)) + pr_err("lookup failed %s (%d)\n", del->pathname, err); + + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_idel(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_del *del, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + del->h_path.dentry = dget(au_h_dptr(root, bindex)); + del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int noinline_for_stack +au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct path path; + char *p; + + err = -EINVAL; + mod->path = args[0].from; + p = strchr(mod->path, '='); + if (unlikely(!p)) { + pr_err("no permssion %s\n", args[0].from); + goto out; + } + + *p++ = 0; + err = vfsub_kern_path(mod->path, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", mod->path, err); + goto out; + } + + mod->perm = br_perm_val(p); + AuDbg("mod path %s, perm 0x%x, %s\n", mod->path, mod->perm, p); + mod->h_root = dget(path.dentry); + path_put(&path); + +out: + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_imod(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbend(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + mod->perm = br_perm_val(args[1].from); + AuDbg("mod path %s, perm 0x%x, %s\n", + mod->path, mod->perm, args[1].from); + mod->h_root = dget(au_h_dptr(root, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino, + substring_t args[]) +{ + int err; + struct file *file; + + file = au_xino_create(sb, args[0].from, /*silent*/0); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + + err = -EINVAL; + if (unlikely(file->f_dentry->d_sb == sb)) { + fput(file); + pr_err("%s must be outside\n", args[0].from); + goto out; + } + + err = 0; + xino->file = file; + xino->path = args[0].from; + +out: + return err; +} + +static int noinline_for_stack +au_opts_parse_xino_itrunc_path(struct super_block *sb, + struct au_opt_xino_itrunc *xino_itrunc, + substring_t args[]) +{ + int err; + aufs_bindex_t bend, bindex; + struct path path; + struct dentry *root; + + err = vfsub_kern_path(args[0].from, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", args[0].from, err); + goto out; + } + + xino_itrunc->bindex = -1; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + if (au_h_dptr(root, bindex) == path.dentry) { + xino_itrunc->bindex = bindex; + break; + } + } + aufs_read_unlock(root, !AuLock_IR); + path_put(&path); + + if (unlikely(xino_itrunc->bindex < 0)) { + pr_err("no such branch %s\n", args[0].from); + err = -EINVAL; + } + +out: + return err; +} + +/* called without aufs lock */ +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts) +{ + int err, n, token; + aufs_bindex_t bindex; + unsigned char skipped; + struct dentry *root; + struct au_opt *opt, *opt_tail; + char *opt_str; + /* reduce the stack space */ + union { + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct { + substring_t args[MAX_OPT_ARGS]; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + root = sb->s_root; + err = 0; + bindex = 0; + opt = opts->opt; + opt_tail = opt + opts->max_opt - 1; + opt->type = Opt_tail; + while (!err && (opt_str = strsep(&str, ",")) && *opt_str) { + err = -EINVAL; + skipped = 0; + token = match_token(opt_str, options, a->args); + switch (token) { + case Opt_br: + err = 0; + while (!err && (opt_str = strsep(&a->args[0].from, ":")) + && *opt_str) { + err = opt_add(opt, opt_str, opts->sb_flags, + bindex++); + if (unlikely(!err && ++opt > opt_tail)) { + err = -E2BIG; + break; + } + opt->type = Opt_tail; + skipped = 1; + } + break; + case Opt_add: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + bindex = n; + err = opt_add(opt, a->args[1].from, opts->sb_flags, + bindex); + if (!err) + opt->type = token; + break; + case Opt_append: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*dummy bindex*/1); + if (!err) + opt->type = token; + break; + case Opt_prepend: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*bindex*/0); + if (!err) + opt->type = token; + break; + case Opt_del: + err = au_opts_parse_del(&opt->del, a->args); + if (!err) + opt->type = token; + break; +#if 0 /* reserved for future use */ + case Opt_idel: + del->pathname = "(indexed)"; + if (unlikely(match_int(&args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_idel(sb, n, &opt->del, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_mod: + err = au_opts_parse_mod(&opt->mod, a->args); + if (!err) + opt->type = token; + break; +#ifdef IMOD /* reserved for future use */ + case Opt_imod: + u.mod->path = "(indexed)"; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_imod(sb, n, &opt->mod, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_xino: + err = au_opts_parse_xino(sb, &opt->xino, a->args); + if (!err) + opt->type = token; + break; + + case Opt_trunc_xino_path: + err = au_opts_parse_xino_itrunc_path + (sb, &opt->xino_itrunc, a->args); + if (!err) + opt->type = token; + break; + + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + u.xino_itrunc->bindex = n; + aufs_read_lock(root, AuLock_FLUSH); + if (n < 0 || au_sbend(sb) < n) { + pr_err("out of bounds, %d\n", n); + aufs_read_unlock(root, !AuLock_IR); + break; + } + aufs_read_unlock(root, !AuLock_IR); + err = 0; + opt->type = token; + break; + + case Opt_dirwh: + if (unlikely(match_int(&a->args[0], &opt->dirwh))) + break; + err = 0; + opt->type = token; + break; + + case Opt_rdcache: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n > AUFS_RDCACHE_MAX)) { + pr_err("rdcache must be smaller than %d\n", + AUFS_RDCACHE_MAX); + break; + } + opt->rdcache = n; + err = 0; + opt->type = token; + break; + case Opt_rdblk: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n && n < NAME_MAX)) { + pr_err("rdblk must be larger than %d\n", + NAME_MAX); + break; + } + opt->rdblk = n; + err = 0; + opt->type = token; + break; + case Opt_rdhash: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n * sizeof(struct hlist_head) + > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + opt->rdhash = n; + err = 0; + opt->type = token; + break; + + case Opt_trunc_xino: + case Opt_notrunc_xino: + case Opt_noxino: + case Opt_trunc_xib: + case Opt_notrunc_xib: + case Opt_shwh: + case Opt_noshwh: + case Opt_plink: + case Opt_noplink: + case Opt_list_plink: + case Opt_dio: + case Opt_nodio: + case Opt_diropq_a: + case Opt_diropq_w: + case Opt_warn_perm: + case Opt_nowarn_perm: + case Opt_refrof: + case Opt_norefrof: + case Opt_verbose: + case Opt_noverbose: + case Opt_sum: + case Opt_nosum: + case Opt_wsum: + case Opt_rdblk_def: + case Opt_rdhash_def: + err = 0; + opt->type = token; + break; + + case Opt_udba: + opt->udba = udba_val(a->args[0].from); + if (opt->udba >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_wbr_create: + u.create = &opt->wbr_create; + u.create->wbr_create + = au_wbr_create_val(a->args[0].from, u.create); + if (u.create->wbr_create >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + case Opt_wbr_copyup: + opt->wbr_copyup = au_wbr_copyup_val(a->args[0].from); + if (opt->wbr_copyup >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_ignore: + pr_warn("ignored %s\n", opt_str); + /*FALLTHROUGH*/ + case Opt_ignore_silent: + skipped = 1; + err = 0; + break; + case Opt_err: + pr_err("unknown option %s\n", opt_str); + break; + } + + if (!err && !skipped) { + if (unlikely(++opt > opt_tail)) { + err = -E2BIG; + opt--; + opt->type = Opt_tail; + break; + } + opt->type = Opt_tail; + } + } + + kfree(a); + dump_opts(opts); + if (unlikely(err)) + au_opts_free(opts); + +out: + return err; +} + +static int au_opt_wbr_create(struct super_block *sb, + struct au_opt_wbr_create *create) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + if (sbinfo->si_wbr_create_ops->fin) { + err = sbinfo->si_wbr_create_ops->fin(sb); + if (!err) + err = 1; + } + + sbinfo->si_wbr_create = create->wbr_create; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; + switch (create->wbr_create) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_MFSRR: + sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; + /*FALLTHROUGH*/ + case AuWbrCreate_MFS: + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFS: + case AuWbrCreate_PMFSV: + sbinfo->si_wbr_mfs.mfs_expire + = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); + break; + } + + if (sbinfo->si_wbr_create_ops->init) + sbinfo->si_wbr_create_ops->init(sb); /* ignore */ + + return err; +} + +/* + * returns, + * plus: processed without an error + * zero: unprocessed + */ +static int au_opt_simple(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + switch (opt->type) { + case Opt_udba: + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= opt->udba; + opts->given_udba |= opt->udba; + break; + + case Opt_plink: + au_opt_set(sbinfo->si_mntflags, PLINK); + break; + case Opt_noplink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_opt_clr(sbinfo->si_mntflags, PLINK); + break; + case Opt_list_plink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_list(sb); + break; + + case Opt_dio: + au_opt_set(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + case Opt_nodio: + au_opt_clr(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + + case Opt_diropq_a: + au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + case Opt_diropq_w: + au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + + case Opt_warn_perm: + au_opt_set(sbinfo->si_mntflags, WARN_PERM); + break; + case Opt_nowarn_perm: + au_opt_clr(sbinfo->si_mntflags, WARN_PERM); + break; + + case Opt_refrof: + au_opt_set(sbinfo->si_mntflags, REFROF); + break; + case Opt_norefrof: + au_opt_clr(sbinfo->si_mntflags, REFROF); + break; + + case Opt_verbose: + au_opt_set(sbinfo->si_mntflags, VERBOSE); + break; + case Opt_noverbose: + au_opt_clr(sbinfo->si_mntflags, VERBOSE); + break; + + case Opt_sum: + au_opt_set(sbinfo->si_mntflags, SUM); + break; + case Opt_wsum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_set(sbinfo->si_mntflags, SUM_W); + case Opt_nosum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_clr(sbinfo->si_mntflags, SUM_W); + break; + + case Opt_wbr_create: + err = au_opt_wbr_create(sb, &opt->wbr_create); + break; + case Opt_wbr_copyup: + sbinfo->si_wbr_copyup = opt->wbr_copyup; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; + break; + + case Opt_dirwh: + sbinfo->si_dirwh = opt->dirwh; + break; + + case Opt_rdcache: + sbinfo->si_rdcache + = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); + break; + case Opt_rdblk: + sbinfo->si_rdblk = opt->rdblk; + break; + case Opt_rdblk_def: + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + break; + case Opt_rdhash: + sbinfo->si_rdhash = opt->rdhash; + break; + case Opt_rdhash_def: + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + break; + + case Opt_shwh: + au_opt_set(sbinfo->si_mntflags, SHWH); + break; + case Opt_noshwh: + au_opt_clr(sbinfo->si_mntflags, SHWH); + break; + + case Opt_trunc_xino: + au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); + break; + case Opt_notrunc_xino: + au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); + break; + + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + err = au_xino_trunc(sb, opt->xino_itrunc.bindex); + if (!err) + err = 1; + break; + + case Opt_trunc_xib: + au_fset_opts(opts->flags, TRUNC_XIB); + break; + case Opt_notrunc_xib: + au_fclr_opts(opts->flags, TRUNC_XIB); + break; + + default: + err = 0; + break; + } + + return err; +} + +/* + * returns tri-state. + * plus: processed without an error + * zero: unprocessed + * minus: error + */ +static int au_opt_br(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err, do_refresh; + + err = 0; + switch (opt->type) { + case Opt_append: + opt->add.bindex = au_sbend(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + case Opt_prepend: + opt->add.bindex = 0; + add: + case Opt_add: + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_del: + case Opt_idel: + err = au_br_del(sb, &opt->del, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, TRUNC_XIB); + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_mod: + case Opt_imod: + err = au_br_mod(sb, &opt->mod, + au_ftest_opts(opts->flags, REMOUNT), + &do_refresh); + if (!err) { + err = 1; + if (do_refresh) + au_fset_opts(opts->flags, REFRESH); + } + break; + } + + return err; +} + +static int au_opt_xino(struct super_block *sb, struct au_opt *opt, + struct au_opt_xino **opt_xino, + struct au_opts *opts) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root, *parent, *h_root; + + err = 0; + switch (opt->type) { + case Opt_xino: + err = au_xino_set(sb, &opt->xino, + !!au_ftest_opts(opts->flags, REMOUNT)); + if (unlikely(err)) + break; + + *opt_xino = &opt->xino; + au_xino_brid_set(sb, -1); + + /* safe d_parent access */ + parent = opt->xino.file->f_dentry->d_parent; + root = sb->s_root; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + h_root = au_h_dptr(root, bindex); + if (h_root == parent) { + au_xino_brid_set(sb, au_sbr_id(sb, bindex)); + break; + } + } + break; + + case Opt_noxino: + au_xino_clr(sb); + au_xino_brid_set(sb, -1); + *opt_xino = (void *)-1; + break; + } + + return err; +} + +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending) +{ + int err; + aufs_bindex_t bindex, bend; + unsigned char do_plink, skip, do_free; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + struct inode *dir, *h_dir; + struct au_sbinfo *sbinfo; + struct au_hinode *hdir; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); + + if (!(sb_flags & MS_RDONLY)) { + if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) + pr_warn("first branch should be rw\n"); + if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) + pr_warn("shwh should be used with ro\n"); + } + + if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) + && !au_opt_test(sbinfo->si_mntflags, XINO)) + pr_warn("udba=*notify requires xino\n"); + + err = 0; + root = sb->s_root; + dir = root->d_inode; + do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); + bend = au_sbend(sb); + for (bindex = 0; !err && bindex <= bend; bindex++) { + skip = 0; + h_dir = au_h_iptr(dir, bindex); + br = au_sbr(sb, bindex); + do_free = 0; + + wbr = br->br_wbr; + if (wbr) + wbr_wh_read_lock(wbr); + + if (!au_br_writable(br->br_perm)) { + do_free = !!wbr; + skip = (!wbr + || (!wbr->wbr_whbase + && !wbr->wbr_plink + && !wbr->wbr_orph)); + } else if (!au_br_wh_linkable(br->br_perm)) { + /* skip = (!br->br_whbase && !br->br_orph); */ + skip = (!wbr || !wbr->wbr_whbase); + if (skip && wbr) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } else { + /* skip = (br->br_whbase && br->br_ohph); */ + skip = (wbr && wbr->wbr_whbase); + if (skip) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } + if (wbr) + wbr_wh_read_unlock(wbr); + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + if (wbr) + wbr_wh_write_lock(wbr); + err = au_wh_init(au_h_dptr(root, bindex), br, sb); + if (wbr) + wbr_wh_write_unlock(wbr); + au_hn_imtx_unlock(hdir); + + if (!err && do_free) { + kfree(wbr); + br->br_wbr = NULL; + } + } + + return err; +} + +int au_opts_mount(struct super_block *sb, struct au_opts *opts) +{ + int err; + unsigned int tmp; + aufs_bindex_t bindex, bend; + struct au_opt *opt; + struct au_opt_xino *opt_xino, xino; + struct au_sbinfo *sbinfo; + struct au_branch *br; + + SiMustWriteLock(sb); + + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_simple(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + /* disable xino and udba temporary */ + sbinfo = au_sbi(sb); + tmp = sbinfo->si_mntflags; + au_opt_clr(sbinfo->si_mntflags, XINO); + au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); + + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_br(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + bend = au_sbend(sb); + if (unlikely(bend < 0)) { + err = -EINVAL; + pr_err("no branches\n"); + goto out; + } + + if (au_opt_test(tmp, XINO)) + au_opt_set(sbinfo->si_mntflags, XINO); + opt = opts->opt; + while (!err && opt->type != Opt_tail) + err = au_opt_xino(sb, opt++, &opt_xino, opts); + if (unlikely(err)) + goto out; + + err = au_opts_verify(sb, sb->s_flags, tmp); + if (unlikely(err)) + goto out; + + /* restore xino */ + if (au_opt_test(tmp, XINO) && !opt_xino) { + xino.file = au_xino_def(sb); + err = PTR_ERR(xino.file); + if (IS_ERR(xino.file)) + goto out; + + err = au_xino_set(sb, &xino, /*remount*/0); + fput(xino.file); + if (unlikely(err)) + goto out; + } + + /* restore udba */ + tmp &= AuOptMask_UDBA; + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= tmp; + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(tmp, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + if (au_opt_test(tmp, UDBA_HNOTIFY)) { + struct inode *dir = sb->s_root->d_inode; + au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); + } + +out: + return err; +} + +int au_opts_remount(struct super_block *sb, struct au_opts *opts) +{ + int err, rerr; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + dir = sb->s_root->d_inode; + sbinfo = au_sbi(sb); + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) { + err = au_opt_simple(sb, opt, opts); + if (!err) + err = au_opt_br(sb, opt, opts); + if (!err) + err = au_opt_xino(sb, opt, &opt_xino, opts); + opt++; + } + if (err > 0) + err = 0; + AuTraceErr(err); + /* go on even err */ + + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + if (au_ftest_opts(opts->flags, TRUNC_XIB)) { + rerr = au_xib_trunc(sb); + if (unlikely(rerr && !err)) + err = rerr; + } + + /* will be handled by the caller */ + if (!au_ftest_opts(opts->flags, REFRESH) + && (opts->given_udba || au_opt_test(sbinfo->si_mntflags, XINO))) + au_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} --- linux-3.5.0.orig/ubuntu/aufs/iinfo.c +++ linux-3.5.0/ubuntu/aufs/iinfo.c @@ -0,0 +1,264 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * inode private data + */ + +#include "aufs.h" + +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) +{ + struct inode *h_inode; + + IiMustAnyLock(inode); + + h_inode = au_ii(inode)->ii_hinode[0 + bindex].hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + return h_inode; +} + +/* todo: hard/soft set? */ +void au_hiput(struct au_hinode *hinode) +{ + au_hn_free(hinode); + dput(hinode->hi_whdentry); + iput(hinode->hi_inode); +} + +unsigned int au_hi_flags(struct inode *inode, int isdir) +{ + unsigned int flags; + const unsigned int mnt_flags = au_mntflags(inode->i_sb); + + flags = 0; + if (au_opt_test(mnt_flags, XINO)) + au_fset_hi(flags, XINO); + if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) + au_fset_hi(flags, HNOTIFY); + return flags; +} + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags) +{ + struct au_hinode *hinode; + struct inode *hi; + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + hinode = iinfo->ii_hinode + bindex; + hi = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + + if (hi) + au_hiput(hinode); + hinode->hi_inode = h_inode; + if (h_inode) { + int err; + struct super_block *sb = inode->i_sb; + struct au_branch *br; + + AuDebugOn(inode->i_mode + && (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)); + if (bindex == iinfo->ii_bstart) + au_cpup_igen(inode, h_inode); + br = au_sbr(sb, bindex); + hinode->hi_id = br->br_id; + if (au_ftest_hi(flags, XINO)) { + err = au_xino_write(sb, bindex, h_inode->i_ino, + inode->i_ino); + if (unlikely(err)) + AuIOErr1("failed au_xino_write() %d\n", err); + } + + if (au_ftest_hi(flags, HNOTIFY) + && au_br_hnotifyable(br->br_perm)) { + err = au_hn_alloc(hinode, inode); + if (unlikely(err)) + AuIOErr1("au_hn_alloc() %d\n", err); + } + } +} + +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh) +{ + struct au_hinode *hinode; + + IiMustWriteLock(inode); + + hinode = au_ii(inode)->ii_hinode + bindex; + AuDebugOn(hinode->hi_whdentry); + hinode->hi_whdentry = h_wh; +} + +void au_update_iigen(struct inode *inode) +{ + atomic_set(&au_ii(inode)->ii_generation, au_sigen(inode->i_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +/* it may be called at remount time, too */ +void au_update_ibrange(struct inode *inode, int do_put_zero) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex, bend; + + iinfo = au_ii(inode); + if (!iinfo) + return; + + IiMustWriteLock(inode); + + if (do_put_zero && iinfo->ii_bstart >= 0) { + for (bindex = iinfo->ii_bstart; bindex <= iinfo->ii_bend; + bindex++) { + struct inode *h_i; + + h_i = iinfo->ii_hinode[0 + bindex].hi_inode; + if (h_i && !h_i->i_nlink) + au_set_h_iptr(inode, bindex, NULL, 0); + } + } + + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + bend = au_sbend(inode->i_sb); + for (bindex = 0; bindex <= bend; bindex++) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bstart = bindex; + break; + } + if (iinfo->ii_bstart >= 0) + for (bindex = bend; bindex >= iinfo->ii_bstart; bindex--) + if (iinfo->ii_hinode[0 + bindex].hi_inode) { + iinfo->ii_bend = bindex; + break; + } + AuDebugOn(iinfo->ii_bstart > iinfo->ii_bend); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + static struct lock_class_key aufs_ii; + + au_rw_init(&iinfo->ii_rwsem); + au_rw_class(&iinfo->ii_rwsem, &aufs_ii); + inode_init_once(&c->vfs_inode); +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbend(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + iinfo->ii_hinode = kcalloc(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (iinfo->ii_hinode) { + au_ninodes_inc(sb); + for (i = 0; i < nbr; i++) + iinfo->ii_hinode[i].hi_id = -1; + + atomic_set(&iinfo->ii_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + iinfo->ii_bstart = -1; + iinfo->ii_bend = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_ii_realloc(struct au_iinfo *iinfo, int nbr) +{ + int err, sz; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + sz = sizeof(*hip) * (iinfo->ii_bend + 1); + if (!sz) + sz = sizeof(*hip); + hip = au_kzrealloc(iinfo->ii_hinode, sz, sizeof(*hip) * nbr, GFP_NOFS); + if (hip) { + iinfo->ii_hinode = hip; + err = 0; + } + + return err; +} + +void au_iinfo_fin(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + struct super_block *sb; + aufs_bindex_t bindex, bend; + const unsigned char unlinked = !inode->i_nlink; + + iinfo = au_ii(inode); + /* bad_inode case */ + if (!iinfo) + return; + + sb = inode->i_sb; + au_ninodes_dec(sb); + if (si_pid_test(sb)) + au_xino_delete_inode(inode, unlinked); + else { + /* + * it is safe to hide the dependency between sbinfo and + * sb->s_umount. + */ + lockdep_off(); + si_noflush_read_lock(sb); + au_xino_delete_inode(inode, unlinked); + si_read_unlock(sb); + lockdep_on(); + } + + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_bstart; + if (bindex >= 0) { + hi = iinfo->ii_hinode + bindex; + bend = iinfo->ii_bend; + while (bindex++ <= bend) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + kfree(iinfo->ii_hinode); + iinfo->ii_hinode = NULL; + AuRwDestroy(&iinfo->ii_rwsem); +} --- linux-3.5.0.orig/ubuntu/aufs/vfsub.h +++ linux-3.5.0/ubuntu/aufs/vfsub.h @@ -0,0 +1,252 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for VFS + */ + +#ifndef __AUFS_VFSUB_H__ +#define __AUFS_VFSUB_H__ + +#ifdef __KERNEL__ + +#include +#include +#include "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern struct lglock vfsmount_lock; +extern void file_sb_list_del(struct file *f); +extern spinlock_t inode_sb_list_lock; + +/* copied from linux/fs/file_table.c */ +extern struct lglock files_lglock; +#ifdef CONFIG_SMP +/* + * These macros iterate all files on all CPUs for a given superblock. + * files_lglock must be held globally. + */ +#define do_file_list_for_each_entry(__sb, __file) \ +{ \ + int i; \ + for_each_possible_cpu(i) { \ + struct list_head *list; \ + list = per_cpu_ptr((__sb)->s_files, i); \ + list_for_each_entry((__file), list, f_u.fu_list) + +#define while_file_list_for_each_entry \ + } \ +} + +#else + +#define do_file_list_for_each_entry(__sb, __file) \ +{ \ + struct list_head *list; \ + list = &(sb)->s_files; \ + list_for_each_entry((__file), list, f_u.fu_list) + +#define while_file_list_for_each_entry \ +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for lower inode */ +/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ +/* reduce? gave up. */ +enum { + AuLsc_I_Begin = I_MUTEX_QUOTA, /* 4 */ + AuLsc_I_PARENT, /* lower inode, parent first */ + AuLsc_I_PARENT2, /* copyup dirs */ + AuLsc_I_PARENT3, /* copyup wh */ + AuLsc_I_CHILD, + AuLsc_I_CHILD2, + AuLsc_I_End +}; + +/* to debug easier, do not make them inlined functions */ +#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) +#define IMustLock(i) MtxMustLock(&(i)->i_mutex) + +/* ---------------------------------------------------------------------- */ + +static inline void vfsub_drop_nlink(struct inode *inode) +{ + AuDebugOn(!inode->i_nlink); + drop_nlink(inode); +} + +static inline void vfsub_dead_dir(struct inode *inode) +{ + AuDebugOn(!S_ISDIR(inode->i_mode)); + inode->i_flags |= S_DEAD; + clear_nlink(inode); +} + +/* ---------------------------------------------------------------------- */ + +/* cf. i_[ug]id_read() in linux/include/fs.h */ +static inline uid_t vfsub_ia_uid(struct iattr *ia) +{ + return from_kuid(&init_user_ns, ia->ia_uid); +} + +static inline gid_t vfsub_ia_gid(struct iattr *ia) +{ + return from_kgid(&init_user_ns, ia->ia_gid); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); +struct file *vfsub_dentry_open(struct path *path, int flags); +struct file *vfsub_filp_open(const char *path, int oflags, int mode); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len); +struct dentry *vfsub_lookup_hash(struct nameidata *nd); +int vfsub_name_hash(const char *name, struct qstr *this, int len); + +/* ---------------------------------------------------------------------- */ + +struct au_hinode; +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); + +int vfsub_create(struct inode *dir, struct path *path, int mode); +int vfsub_symlink(struct inode *dir, struct path *path, + const char *symname); +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); +int vfsub_link(struct dentry *src_dentry, struct inode *dir, + struct path *path); +int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, + struct inode *hdir, struct path *path); +int vfsub_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_rmdir(struct inode *dir, struct path *path); + +/* ---------------------------------------------------------------------- */ + +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +int vfsub_flush(struct file *file, fl_owner_t id); +int vfsub_readdir(struct file *file, filldir_t filldir, void *arg); + +static inline unsigned int vfsub_file_flags(struct file *file) +{ + unsigned int flags; + + spin_lock(&file->f_lock); + flags = file->f_flags; + spin_unlock(&file->f_lock); + + return flags; +} + +static inline void vfsub_file_accessed(struct file *h_file) +{ + file_accessed(h_file); + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ +} + +static inline void vfsub_touch_atime(struct vfsmount *h_mnt, + struct dentry *h_dentry) +{ + struct path h_path = { + .dentry = h_dentry, + .mnt = h_mnt + }; + touch_atime(&h_path); + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ +} + +static inline int vfsub_update_time(struct inode *h_inode, struct timespec *ts, + int flags) +{ + return update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file); +int vfsub_fsync(struct file *file, struct path *path, int datasync); + +/* ---------------------------------------------------------------------- */ + +static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t err; + + lockdep_off(); + err = vfs_llseek(file, offset, origin); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* dirty workaround for strict type of fmode_t */ +union vfsub_fmu { + fmode_t fm; + unsigned int ui; +}; + +static inline unsigned int vfsub_fmode_to_uint(fmode_t fm) +{ + union vfsub_fmu u = { + .fm = fm + }; + + BUILD_BUG_ON(sizeof(u.fm) != sizeof(u.ui)); + + return u.ui; +} + +static inline fmode_t vfsub_uint_to_fmode(unsigned int ui) +{ + union vfsub_fmu u = { + .ui = ui + }; + + return u.fm; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_sio_rmdir(struct inode *dir, struct path *path); +int vfsub_sio_notify_change(struct path *path, struct iattr *ia); +int vfsub_notify_change(struct path *path, struct iattr *ia); +int vfsub_unlink(struct inode *dir, struct path *path, int force); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/vfsub.c +++ linux-3.5.0/ubuntu/aufs/vfsub.c @@ -0,0 +1,832 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sub-routines for VFS + */ + +#include +#include +#include +#include +#include "aufs.h" + +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; + struct kstat st; + struct super_block *h_sb; + + /* for remote fs, leave work for its getattr or d_revalidate */ + /* for bad i_attr fs, handle them in aufs_getattr() */ + /* still some fs may acquire i_mutex. we need to skip them */ + err = 0; + if (!did) + did = &err; + h_sb = h_path->dentry->d_sb; + *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); + if (*did) + err = vfs_getattr(h_path->mnt, h_path->dentry, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + struct file *file; + + path_get(path); + file = dentry_open(path->dentry, path->mnt, + flags /* | __FMODE_NONOTIFY */, + current_cred()); + if (!IS_ERR_OR_NULL(file) + && (file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(path->dentry->d_inode); + + return file; +} + +struct file *vfsub_filp_open(const char *path, int oflags, int mode) +{ + struct file *file; + + lockdep_off(); + file = filp_open(path, + oflags /* | __FMODE_NONOTIFY */, + mode); + lockdep_on(); + if (IS_ERR(file)) + goto out; + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + +out: + return file; +} + +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) +{ + int err; + + err = kern_path(name, flags, path); + if (!err && path->dentry->d_inode) + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + return err; +} + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len) +{ + struct path path = { + .mnt = NULL + }; + + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(parent->d_inode); + + path.dentry = lookup_one_len(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (path.dentry->d_inode) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +struct dentry *vfsub_lookup_hash(struct nameidata *nd) +{ + struct path path = { + .mnt = nd->path.mnt + }; + + IMustLock(nd->path.dentry->d_inode); + + path.dentry = lookup_hash(nd); + if (IS_ERR(path.dentry)) + goto out; + if (path.dentry->d_inode) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +/* + * this is "VFS:__lookup_one_len()" which was removed and merged into + * VFS:lookup_one_len() by the commit. + * 6a96ba5 2011-03-14 kill __lookup_one_len() + * this function should always be equivalent to the corresponding part in + * VFS:lookup_one_len(). + */ +int vfsub_name_hash(const char *name, struct qstr *this, int len) +{ + unsigned int c; + + this->name = name; + this->len = len; + this->hash = full_name_hash(name, len); + if (!len) + return -EACCES; + + while (len--) { + c = *(const unsigned char *)name++; + if (c == '/' || c == '\0') + return -EACCES; + } + return 0; +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + struct dentry *d; + + lockdep_off(); + d = lock_rename(d1, d2); + lockdep_on(); + au_hn_suspend(hdir1); + if (hdir1 != hdir2) + au_hn_suspend(hdir2); + + return d; +} + +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + au_hn_resume(hdir1); + if (hdir1 != hdir2) + au_hn_resume(hdir2); + lockdep_off(); + unlock_rename(d1, d2); + lockdep_on(); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_create(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, 0); + path->dentry = d; + if (unlikely(err)) + goto out; + + if (au_test_fs_null_nd(dir->i_sb)) + err = vfs_create(dir, path->dentry, mode, NULL); + else { + struct nameidata h_nd; + + memset(&h_nd, 0, sizeof(h_nd)); + h_nd.flags = LOOKUP_CREATE; + h_nd.intent.open.flags = O_CREAT + | vfsub_fmode_to_uint(FMODE_READ); + h_nd.intent.open.create_mode = mode; + h_nd.path.dentry = path->dentry->d_parent; + h_nd.path.mnt = path->mnt; + path_get(&h_nd.path); + err = vfs_create(dir, path->dentry, mode, &h_nd); + path_put(&h_nd.path); + } + + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_symlink(path, d, symname); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_symlink(dir, path->dentry, symname); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, new_encode_dev(dev)); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_mknod(dir, path->dentry, mode, dev); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +static int au_test_nlink(struct inode *inode) +{ + const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ + + if (!au_test_fs_no_limit_nlink(inode->i_sb) + || inode->i_nlink < link_max) + return 0; + return -EMLINK; +} + +int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + err = au_test_nlink(src_dentry->d_inode); + if (unlikely(err)) + return err; + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_link(src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_link(src_dentry, dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + /* fuse has different memory inode for the same inumber */ + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct path *path) +{ + int err; + struct path tmp = { + .mnt = path->mnt + }; + struct dentry *d; + + IMustLock(dir); + IMustLock(src_dir); + + d = path->dentry; + path->dentry = d->d_parent; + tmp.dentry = src_dentry->d_parent; + err = security_path_rename(&tmp, src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rename(src_dir, src_dentry, dir, path->dentry); + lockdep_on(); + if (!err) { + int did; + + tmp.dentry = d->d_parent; + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mkdir(path, d, mode); + path->dentry = d; + if (unlikely(err)) + goto out; + + err = vfs_mkdir(dir, path->dentry, mode); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rmdir(struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_rmdir(path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + + lockdep_off(); + err = vfs_rmdir(dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { + .dentry = path->dentry->d_parent, + .mnt = path->mnt + }; + + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: support mmap_sem? */ +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_read(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +/* todo: kernel_read()? */ +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_read_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_write(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) +{ + ssize_t err; + mm_segment_t oldfs; + union { + void *k; + const char __user *u; + } buf; + + buf.k = kbuf; + oldfs = get_fs(); + set_fs(KERNEL_DS); + err = vfsub_write_u(file, buf.u, count, ppos); + set_fs(oldfs); + return err; +} + +int vfsub_flush(struct file *file, fl_owner_t id) +{ + int err; + + err = 0; + if (file->f_op && file->f_op->flush) { + if (!au_test_nfs(file->f_dentry->d_sb)) + err = file->f_op->flush(file, id); + else { + lockdep_off(); + err = file->f_op->flush(file, id); + lockdep_on(); + } + if (!err) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); + /*ignore*/ + } + return err; +} + +int vfsub_readdir(struct file *file, filldir_t filldir, void *arg) +{ + int err; + + lockdep_off(); + err = vfs_readdir(file, filldir, arg); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_to(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) + vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_from(pipe, out, ppos, len, flags); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_fsync(struct file *file, struct path *path, int datasync) +{ + int err; + + /* file can be NULL */ + lockdep_off(); + err = vfs_fsync(file, datasync); + lockdep_on(); + if (!err) { + if (!path) { + AuDebugOn(!file); + path = &file->f_path; + } + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + } + return err; +} + +/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file) +{ + int err; + struct inode *h_inode; + + h_inode = h_path->dentry->d_inode; + if (!h_file) { + err = mnt_want_write(h_path->mnt); + if (err) + goto out; + err = inode_permission(h_inode, MAY_WRITE); + if (err) + goto out_mnt; + err = get_write_access(h_inode); + if (err) + goto out_mnt; + err = break_lease(h_inode, O_WRONLY); + if (err) + goto out_inode; + } + + err = locks_verify_truncate(h_inode, h_file, length); + if (!err) + err = security_path_truncate(h_path); + if (!err) { + lockdep_off(); + err = do_truncate(h_path->dentry, length, attr, h_file); + lockdep_on(); + } + +out_inode: + if (!h_file) + put_write_access(h_inode); +out_mnt: + if (!h_file) + mnt_drop_write(h_path->mnt); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_vfsub_mkdir_args { + int *errp; + struct inode *dir; + struct path *path; + int mode; +}; + +static void au_call_vfsub_mkdir(void *args) +{ + struct au_vfsub_mkdir_args *a = args; + *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); +} + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) + err = vfsub_mkdir(dir, path, mode); + else { + struct au_vfsub_mkdir_args args = { + .errp = &err, + .dir = dir, + .path = path, + .mode = mode + }; + wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +struct au_vfsub_rmdir_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void au_call_vfsub_rmdir(void *args) +{ + struct au_vfsub_rmdir_args *a = args; + *a->errp = vfsub_rmdir(a->dir, a->path); +} + +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; + + do_sio = au_test_h_perm_sio(dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) + err = vfsub_rmdir(dir, path); + else { + struct au_vfsub_rmdir_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct notify_change_args { + int *errp; + struct path *path; + struct iattr *ia; +}; + +static void call_notify_change(void *args) +{ + struct notify_change_args *a = args; + struct inode *h_inode; + + h_inode = a->path->dentry->d_inode; + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { + *a->errp = notify_change(a->path->dentry, a->ia); + if (!*a->errp) + vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ + } + AuTraceErr(*a->errp); +} + +int vfsub_notify_change(struct path *path, struct iattr *ia) +{ + int err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia + }; + + call_notify_change(&args); + + return err; +} + +int vfsub_sio_notify_change(struct path *path, struct iattr *ia) +{ + int err, wkq_err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia + }; + + wkq_err = au_wkq_wait(call_notify_change, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct unlink_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void call_unlink(void *args) +{ + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && d->d_count == 1); + + IMustLock(a->dir); + + a->path->dentry = d->d_parent; + *a->errp = security_path_unlink(a->path, d); + a->path->dentry = d; + if (unlikely(*a->errp)) + return; + + if (!stop_sillyrename) + dget(d); + h_inode = d->d_inode; + if (h_inode) + ihold(h_inode); + + lockdep_off(); + *a->errp = vfs_unlink(a->dir, d); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { + .dentry = d->d_parent, + .mnt = a->path->mnt + }; + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + + if (!stop_sillyrename) + dput(d); + if (h_inode) + iput(h_inode); + + AuTraceErr(*a->errp); +} + +/* + * @dir: must be locked. + * @dentry: target dentry. + */ +int vfsub_unlink(struct inode *dir, struct path *path, int force) +{ + int err; + struct unlink_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + + if (!force) + call_unlink(&args); + else { + int wkq_err; + + wkq_err = au_wkq_wait(call_unlink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} --- linux-3.5.0.orig/ubuntu/aufs/sysfs.c +++ linux-3.5.0/ubuntu/aufs/sysfs.c @@ -0,0 +1,257 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * sysfs interface + */ + +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_FS_MODULE +/* this entry violates the "one line per file" policy of sysfs */ +static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + ssize_t err; + static char *conf = +/* this file is generated at compiling */ +#include "conf.str" + ; + + err = snprintf(buf, PAGE_SIZE, conf); + if (unlikely(err >= PAGE_SIZE)) + err = -EFBIG; + return err; +} + +static struct kobj_attribute au_config_attr = __ATTR_RO(config); +#endif + +static struct attribute *au_attr[] = { +#ifdef CONFIG_AUFS_FS_MODULE + &au_config_attr.attr, +#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + +static struct attribute_group sysaufs_attr_group_body = { + .attrs = au_attr +}; + +struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) +{ + int err; + + SiMustAnyLock(sb); + + err = 0; + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_path(seq, au_sbi(sb)->si_xib); + seq_putc(seq, '\n'); + } + return err; +} + +/* + * the lifetime of branch is independent from the entry under sysfs. + * sysfs handles the lifetime of the entry, and never call ->show() after it is + * unlinked. + */ +static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, + aufs_bindex_t bindex) +{ + int err; + struct path path; + struct dentry *root; + struct au_branch *br; + char *perm; + + AuDbg("b%d\n", bindex); + + err = 0; + root = sb->s_root; + di_read_lock_parent(root, !AuLock_IR); + br = au_sbr(sb, bindex); + path.mnt = br->br_mnt; + path.dentry = au_h_dptr(root, bindex); + au_seq_path(seq, &path); + di_read_unlock(root, !AuLock_IR); + perm = au_optstr_br_perm(br->br_perm); + if (perm) { + err = seq_printf(seq, "=%s\n", perm); + kfree(perm); + if (err == -1) + err = -E2BIG; + } else + err = -ENOMEM; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct seq_file *au_seq(char *p, ssize_t len) +{ + struct seq_file *seq; + + seq = kzalloc(sizeof(*seq), GFP_NOFS); + if (seq) { + /* mutex_init(&seq.lock); */ + seq->buf = p; + seq->size = len; + return seq; /* success */ + } + + seq = ERR_PTR(-ENOMEM); + return seq; +} + +#define SysaufsBr_PREFIX "br" + +/* todo: file size may exceed PAGE_SIZE */ +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + ssize_t err; + long l; + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct seq_file *seq; + char *name; + struct attribute **cattr; + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + sb = sbinfo->si_sb; + + /* + * prevent a race condition between sysfs and aufs. + * for instance, sysfs_file_read() calls sysfs_get_active_two() which + * prohibits maintaining the sysfs entries. + * hew we acquire read lock after sysfs_get_active_two(). + * on the other hand, the remount process may maintain the sysfs/aufs + * entries after acquiring write lock. + * it can cause a deadlock. + * simply we gave up processing read here. + */ + err = -EBUSY; + if (unlikely(!si_noflush_read_trylock(sb))) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_unlock; + + name = (void *)attr->name; + cattr = sysaufs_si_attrs; + while (*cattr) { + if (!strcmp(name, (*cattr)->name)) { + err = container_of(*cattr, struct sysaufs_si_attr, attr) + ->show(seq, sb); + goto out_seq; + } + cattr++; + } + + bend = au_sbend(sb); + if (!strncmp(name, SysaufsBr_PREFIX, sizeof(SysaufsBr_PREFIX) - 1)) { + name += sizeof(SysaufsBr_PREFIX) - 1; + err = kstrtol(name, 10, &l); + if (!err) { + if (l <= bend) + err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l); + else + err = -ENOENT; + } + goto out_seq; + } + BUG(); + +out_seq: + if (!err) { + err = seq->count; + /* sysfs limit */ + if (unlikely(err == PAGE_SIZE)) + err = -EFBIG; + } + kfree(seq); +out_unlock: + si_read_unlock(sb); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void sysaufs_br_init(struct au_branch *br) +{ + struct attribute *attr = &br->br_attr; + + sysfs_attr_init(attr); + attr->name = br->br_name; + attr->mode = S_IRUGO; +} + +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_branch *br; + struct kobject *kobj; + aufs_bindex_t bend; + + dbgaufs_brs_del(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + sysfs_remove_file(kobj, &br->br_attr); + } +} + +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + int err; + aufs_bindex_t bend; + struct kobject *kobj; + struct au_branch *br; + + dbgaufs_brs_add(sb, bindex); + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bend = au_sbend(sb); + for (; bindex <= bend; bindex++) { + br = au_sbr(sb, bindex); + snprintf(br->br_name, sizeof(br->br_name), SysaufsBr_PREFIX + "%d", bindex); + err = sysfs_create_file(kobj, &br->br_attr); + if (unlikely(err)) + pr_warn("failed %s under sysfs(%d)\n", + br->br_name, err); + } +} --- linux-3.5.0.orig/ubuntu/aufs/wkq.h +++ linux-3.5.0/ubuntu/aufs/wkq.h @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credentials management scheme + */ + +#ifndef __AUFS_WKQ_H__ +#define __AUFS_WKQ_H__ + +#ifdef __KERNEL__ + +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* + * in the next operation, wait for the 'nowait' tasks in system-wide workqueue + */ +struct au_nowait_tasks { + atomic_t nw_len; + wait_queue_head_t nw_wq; +}; + +/* ---------------------------------------------------------------------- */ + +typedef void (*au_wkq_func_t)(void *args); + +/* wkq flags */ +#define AuWkq_WAIT 1 +#define AuWkq_NEST (1 << 1) +#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) +#define au_fset_wkq(flags, name) \ + do { (flags) |= AuWkq_##name; } while (0) +#define au_fclr_wkq(flags, name) \ + do { (flags) &= ~AuWkq_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuWkq_NEST +#define AuWkq_NEST 0 +#endif + +/* wkq.c */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags); +void au_nwt_init(struct au_nowait_tasks *nwt); +int __init au_wkq_init(void); +void au_wkq_fin(void); + +/* ---------------------------------------------------------------------- */ + +static inline int au_wkq_test(void) +{ + return current->flags & PF_WQ_WORKER; +} + +static inline int au_wkq_wait(au_wkq_func_t func, void *args) +{ + return au_wkq_do_wait(AuWkq_WAIT, func, args); +} + +static inline void au_nwt_done(struct au_nowait_tasks *nwt) +{ + if (atomic_dec_and_test(&nwt->nw_len)) + wake_up_all(&nwt->nw_wq); +} + +static inline int au_nwt_flush(struct au_nowait_tasks *nwt) +{ + wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); + return 0; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ --- linux-3.5.0.orig/ubuntu/aufs/branch.c +++ linux-3.5.0/ubuntu/aufs/branch.c @@ -0,0 +1,1169 @@ +/* + * Copyright (C) 2005-2012 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * branch management + */ + +#include +#include +#include "aufs.h" + +/* + * free a single branch + */ +static void au_br_do_free(struct au_branch *br) +{ + int i; + struct au_wbr *wbr; + struct au_dykey **key; + + au_hnotify_fin_br(br); + + if (br->br_xino.xi_file) + fput(br->br_xino.xi_file); + mutex_destroy(&br->br_xino.xi_nondir_mtx); + + AuDebugOn(atomic_read(&br->br_count)); + + wbr = br->br_wbr; + if (wbr) { + for (i = 0; i < AuBrWh_Last; i++) + dput(wbr->wbr_wh[i]); + AuDebugOn(atomic_read(&wbr->wbr_wh_running)); + AuRwDestroy(&wbr->wbr_wh_rwsem); + } + + key = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++, key++) + if (*key) + au_dy_put(*key); + else + break; + + mntput(br->br_mnt); + kfree(wbr); + kfree(br); +} + +/* + * frees all branches + */ +void au_br_free(struct au_sbinfo *sbinfo) +{ + aufs_bindex_t bmax; + struct au_branch **br; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + bmax = sbinfo->si_bend + 1; + br = sbinfo->si_branch; + while (bmax--) + au_br_do_free(*br++); +} + +/* + * find the index of a branch which is specified by @br_id. + */ +int au_br_index(struct super_block *sb, aufs_bindex_t br_id) +{ + aufs_bindex_t bindex, bend; + + bend = au_sbend(sb); + for (bindex = 0; bindex <= bend; bindex++) + if (au_sbr_id(sb, bindex) == br_id) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * add a branch + */ + +static int test_overlap(struct super_block *sb, struct dentry *h_adding, + struct dentry *h_root) +{ + if (unlikely(h_adding == h_root + || au_test_loopback_overlap(sb, h_adding))) + return 1; + if (h_adding->d_sb != h_root->d_sb) + return 0; + return au_test_subdir(h_adding, h_root) + || au_test_subdir(h_root, h_adding); +} + +/* + * returns a newly allocated branch. @new_nbranch is a number of branches + * after adding a branch. + */ +static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, + int perm) +{ + struct au_branch *add_branch; + struct dentry *root; + int err; + + err = -ENOMEM; + root = sb->s_root; + add_branch = kmalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_br; + + add_branch->br_wbr = NULL; + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kmalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + err = au_sbr_realloc(au_sbi(sb), new_nbranch); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch); + if (!err) + err = au_ii_realloc(au_ii(root->d_inode), new_nbranch); + if (!err) + return add_branch; /* success */ + + kfree(add_branch->br_wbr); + +out_hnotify: + au_hnotify_fin_br(add_branch); +out_br: + kfree(add_branch); +out: + return ERR_PTR(err); +} + +/* + * test if the branch permission is legal or not. + */ +static int test_br(struct inode *inode, int brperm, char *path) +{ + int err; + + err = (au_br_writable(brperm) && IS_RDONLY(inode)); + if (!err) + goto out; + + err = -EINVAL; + pr_err("write permission for readonly mount or inode, %s\n", path); + +out: + return err; +} + +/* + * returns: + * 0: success, the caller will add it + * plus: success, it is already unified, the caller should ignore it + * minus: error + */ +static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, bindex; + struct dentry *root; + struct inode *inode, *h_inode; + + root = sb->s_root; + bend = au_sbend(sb); + if (unlikely(bend >= 0 + && au_find_dbindex(root, add->path.dentry) >= 0)) { + err = 1; + if (!remount) { + err = -EINVAL; + pr_err("%s duplicated\n", add->pathname); + } + goto out; + } + + err = -ENOSPC; /* -E2BIG; */ + if (unlikely(AUFS_BRANCH_MAX <= add->bindex + || AUFS_BRANCH_MAX - 1 <= bend)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bend + 1 < add->bindex)) { + pr_err("bad index %d\n", add->bindex); + goto out; + } + + inode = add->path.dentry->d_inode; + err = -ENOENT; + if (unlikely(!inode->i_nlink)) { + pr_err("no existence %s\n", add->pathname); + goto out; + } + + err = -EINVAL; + if (unlikely(inode->i_sb == sb)) { + pr_err("%s must be outside\n", add->pathname); + goto out; + } + + if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { + pr_err("unsupported filesystem, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + err = test_br(add->path.dentry->d_inode, add->perm, add->pathname); + if (unlikely(err)) + goto out; + + if (bend < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bend; bindex++) + if (unlikely(test_overlap(sb, add->path.dentry, + au_h_dptr(root, bindex)))) { + pr_err("%s is overlapped\n", add->pathname); + goto out; + } + + err = 0; + if (au_opt_test(au_mntflags(sb), WARN_PERM)) { + h_inode = au_h_dptr(root, 0)->d_inode; + if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) + || !uid_eq(h_inode->i_uid, inode->i_uid) + || !gid_eq(h_inode->i_gid, inode->i_gid)) + pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", + add->pathname, + i_uid_read(inode), i_gid_read(inode), + (inode->i_mode & S_IALLUGO), + i_uid_read(h_inode), i_gid_read(h_inode), + (h_inode->i_mode & S_IALLUGO)); + } + +out: + return err; +} + +/* + * initialize or clean the whiteouts for an adding branch + */ +static int au_br_init_wh(struct super_block *sb, struct au_branch *br, + int new_perm, struct dentry *h_root) +{ + int err, old_perm; + aufs_bindex_t bindex; + struct mutex *h_mtx; + struct au_wbr *wbr; + struct au_hinode *hdir; + + wbr = br->br_wbr; + old_perm = br->br_perm; + br->br_perm = new_perm; + hdir = NULL; + h_mtx = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(sb->s_root->d_inode, bindex); + au_hn_imtx_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_mtx = &h_root->d_inode->i_mutex; + mutex_lock_nested(h_mtx, AuLsc_I_PARENT); + } + if (!wbr) + err = au_wh_init(h_root, br, sb); + else { + wbr_wh_write_lock(wbr); + err = au_wh_init(h_root, br, sb); + wbr_wh_write_unlock(wbr); + } + if (hdir) + au_hn_imtx_unlock(hdir); + else + mutex_unlock(h_mtx); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + kfree(wbr); + br->br_wbr = NULL; + } + + return err; +} + +static int au_wbr_init(struct au_branch *br, struct super_block *sb, + int perm, struct path *path) +{ + int err; + struct kstatfs kst; + struct au_wbr *wbr; + struct dentry *h_dentry; + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); + memset(wbr->wbr_wh, 0, sizeof(wbr->wbr_wh)); + atomic_set(&wbr->wbr_wh_running, 0); + wbr->wbr_bytes = 0; + + /* + * a limit for rmdir/rename a dir + * cf. AUFS_MAX_NAMELEN in include/linux/aufs_type.h + */ + err = vfs_statfs(path, &kst); + if (unlikely(err)) + goto out; + err = -EINVAL; + h_dentry = path->dentry; + if (kst.f_namelen >= NAME_MAX) + err = au_br_init_wh(sb, br, perm, h_dentry); + else + pr_err("%.*s(%s), unsupported namelen %ld\n", + AuDLNPair(h_dentry), au_sbtype(h_dentry->d_sb), + kst.f_namelen); + +out: + return err; +} + +/* intialize a new branch */ +static int au_br_init(struct au_branch *br, struct super_block *sb, + struct au_opt_add *add) +{ + int err; + + err = 0; + memset(&br->br_xino, 0, sizeof(br->br_xino)); + mutex_init(&br->br_xino.xi_nondir_mtx); + br->br_perm = add->perm; + br->br_mnt = add->path.mnt; /* set first, mntget() later */ + spin_lock_init(&br->br_dykey_lock); + memset(br->br_dykey, 0, sizeof(br->br_dykey)); + atomic_set(&br->br_count, 0); + br->br_xino_upper = AUFS_XINO_TRUNC_INIT; + atomic_set(&br->br_xino_running, 0); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + if (au_br_writable(add->perm)) { + err = au_wbr_init(br, sb, add->perm, &add->path); + if (unlikely(err)) + goto out_err; + } + + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_br(sb, br, add->path.dentry->d_inode->i_ino, + au_sbr(sb, 0)->br_xino.xi_file, /*do_test*/1); + if (unlikely(err)) { + AuDebugOn(br->br_xino.xi_file); + goto out_err; + } + } + + sysaufs_br_init(br); + mntget(add->path.mnt); + goto out; /* success */ + +out_err: + br->br_mnt = NULL; +out: + return err; +} + +static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, + struct au_branch *br, aufs_bindex_t bend, + aufs_bindex_t amount) +{ + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + memmove(brp + 1, brp, sizeof(*brp) * amount); + *brp = br; + sbinfo->si_bend++; + if (unlikely(bend < 0)) + sbinfo->si_bend = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry + bindex; + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bend++; + if (unlikely(bend < 0)) + dinfo->di_bstart = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bend, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + memmove(hip + 1, hip, sizeof(*hip) * amount); + hip->hi_inode = NULL; + au_hn_init(hip); + iinfo->ii_bend++; + if (unlikely(bend < 0)) + iinfo->ii_bstart = 0; +} + +static void au_br_do_add(struct super_block *sb, struct dentry *h_dentry, + struct au_branch *br, aufs_bindex_t bindex) +{ + struct dentry *root; + struct inode *root_inode; + aufs_bindex_t bend, amount; + + root = sb->s_root; + root_inode = root->d_inode; + bend = au_sbend(sb); + amount = bend + 1 - bindex; + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bend, amount); + au_br_do_add_hdp(au_di(root), bindex, bend, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bend, amount); + au_set_h_dptr(root, bindex, dget(h_dentry)); + au_set_h_iptr(root_inode, bindex, au_igrab(h_dentry->d_inode), + /*flags*/0); + au_sbilist_unlock(); +} + +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bend, add_bindex; + struct dentry *root, *h_dentry; + struct inode *root_inode; + struct au_branch *add_branch; + + root = sb->s_root; + root_inode = root->d_inode; + IMustLock(root_inode); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bend = au_sbend(sb); + add_branch = au_br_alloc(sb, bend + 2, add->perm); + err = PTR_ERR(add_branch); + if (IS_ERR(add_branch)) + goto out; + + err = au_br_init(add_branch, sb, add); + if (unlikely(err)) { + au_br_do_free(add_branch); + goto out; + } + + add_bindex = add->bindex; + h_dentry = add->path.dentry; + if (!remount) + au_br_do_add(sb, h_dentry, add_branch, add_bindex); + else { + sysaufs_brs_del(sb, add_bindex); + au_br_do_add(sb, h_dentry, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); + } + + if (!add_bindex) { + au_cpup_attr_all(root_inode, /*force*/1); + sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; + } else + au_add_nlink(root_inode, h_dentry->d_inode); + + /* + * this test/set prevents aufs from handling unnecesary notify events + * of xino files, in case of re-adding a writable branch which was + * once detached from aufs. + */ + if (au_xino_brid(sb) < 0 + && au_br_writable(add_branch->br_perm) + && !au_test_fs_bad_xino(h_dentry->d_sb) + && add_branch->br_xino.xi_file + && add_branch->br_xino.xi_file->f_dentry->d_parent == h_dentry) + au_xino_brid_set(sb, add_branch->br_id); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * delete a branch + */ + +/* to show the line number, do not make it inlined function */ +#define AuVerbose(do_info, fmt, ...) do { \ + if (do_info) \ + pr_info(fmt, ##__VA_ARGS__); \ +} while (0) + +static int au_test_ibusy(struct inode *inode, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return (inode && !S_ISDIR(inode->i_mode)) || bstart == bend; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t bstart, + aufs_bindex_t bend) +{ + return au_test_ibusy(dentry->d_inode, bstart, bend); +} + +/* + * test if the branch is deletable or not. + */ +static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err, i, j, ndentry; + aufs_bindex_t bstart, bend; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; !err && i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; !err && j < ndentry; j++) { + d = dpage->dentries[j]; + AuDebugOn(!d->d_count); + if (!au_digen_test(d, sigen)) { + di_read_lock_child(d, AuLock_IR); + if (unlikely(au_dbrange_test(d))) { + di_read_unlock(d, AuLock_IR); + continue; + } + } else { + di_write_lock_child(d); + if (unlikely(au_dbrange_test(d))) { + di_write_unlock(d); + continue; + } + err = au_reval_dpath(d, sigen); + if (!err) + di_downgrade_lock(d, AuLock_IR); + else { + di_write_unlock(d); + break; + } + } + + /* AuDbgDentry(d); */ + bstart = au_dbstart(d); + bend = au_dbend(d); + if (bstart <= bindex + && bindex <= bend + && au_h_dptr(d, bindex) + && au_test_dbusy(d, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy %.*s\n", AuDLNPair(d)); + AuDbgDentry(d); + } + di_read_unlock(d, AuLock_IR); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err; + unsigned long long max, ull; + struct inode *i, **array; + aufs_bindex_t bstart, bend; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + AuDbg("b%d\n", bindex); + for (ull = 0; !err && ull < max; ull++) { + i = array[ull]; + if (i->i_ino == AUFS_ROOT_INO) + continue; + + /* AuDbgInode(i); */ + if (au_iigen(i) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); + err = au_refresh_hinode_self(i); + au_iigen_dec(i); + if (!err) + ii_downgrade_lock(i); + else { + ii_write_unlock(i); + break; + } + } + + bstart = au_ibstart(i); + bend = au_ibend(i); + if (bstart <= bindex + && bindex <= bend + && au_h_iptr(i, bindex) + && au_test_ibusy(i, bstart, bend)) { + err = -EBUSY; + AuVerbose(verbose, "busy i%lu\n", i->i_ino); + AuDbgInode(i); + } + ii_read_unlock(i); + } + au_iarray_free(array, max); + +out: + return err; +} + +static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, + const unsigned int verbose) +{ + int err; + unsigned int sigen; + + sigen = au_sigen(root->d_sb); + DiMustNoWaiters(root); + IiMustNoWaiters(root->d_inode); + di_write_unlock(root); + err = test_dentry_busy(root, bindex, sigen, verbose); + if (!err) + err = test_inode_busy(root->d_sb, bindex, sigen, verbose); + di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ + + return err; +} + +static void au_br_do_del_brp(struct au_sbinfo *sbinfo, + const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bend) + memmove(brp, brp + 1, sizeof(*brp) * (bend - bindex)); + sbinfo->si_branch[0 + bend] = NULL; + sbinfo->si_bend--; + + p = krealloc(sbinfo->si_branch, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + sbinfo->si_branch = p; + /* harmless error */ +} + +static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = dinfo->di_hdentry; + if (bindex < bend) + memmove(hdp + bindex, hdp + bindex + 1, + sizeof(*hdp) * (bend - bindex)); + hdp[0 + bend].hd_dentry = NULL; + dinfo->di_bend--; + + p = krealloc(hdp, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + dinfo->di_hdentry = p; + /* harmless error */ +} + +static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bend) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = iinfo->ii_hinode + bindex; + if (bindex < bend) + memmove(hip, hip + 1, sizeof(*hip) * (bend - bindex)); + iinfo->ii_hinode[0 + bend].hi_inode = NULL; + au_hn_init(iinfo->ii_hinode + bend); + iinfo->ii_bend--; + + p = krealloc(iinfo->ii_hinode, sizeof(*p) * bend, AuGFP_SBILIST); + if (p) + iinfo->ii_hinode = p; + /* harmless error */ +} + +static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br) +{ + aufs_bindex_t bend; + struct au_sbinfo *sbinfo; + struct dentry *root, *h_root; + struct inode *inode, *h_inode; + struct au_hinode *hinode; + + SiMustWriteLock(sb); + + root = sb->s_root; + inode = root->d_inode; + sbinfo = au_sbi(sb); + bend = sbinfo->si_bend; + + h_root = au_h_dptr(root, bindex); + hinode = au_hi(inode, bindex); + h_inode = au_igrab(hinode->hi_inode); + au_hiput(hinode); + + au_sbilist_lock(); + au_br_do_del_brp(sbinfo, bindex, bend); + au_br_do_del_hdp(au_di(root), bindex, bend); + au_br_do_del_hip(au_ii(inode), bindex, bend); + au_sbilist_unlock(); + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) +{ + int err, rerr, i; + unsigned int mnt_flags; + aufs_bindex_t bindex, bend, br_id; + unsigned char do_wh, verbose; + struct au_branch *br; + struct au_wbr *wbr; + + err = 0; + bindex = au_find_dbindex(sb->s_root, del->h_path.dentry); + if (bindex < 0) { + if (remount) + goto out; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", del->pathname); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = -EBUSY; + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + bend = au_sbend(sb); + if (unlikely(!bend)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + br = au_sbr(sb, bindex); + i = atomic_read(&br->br_count); + if (unlikely(i)) { + AuVerbose(verbose, "%d file(s) opened\n", i); + goto out; + } + + wbr = br->br_wbr; + do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); + if (do_wh) { + /* instead of WbrWhMustWriteLock(wbr) */ + SiMustWriteLock(sb); + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + } + + err = test_children_busy(sb->s_root, bindex, verbose); + if (unlikely(err)) { + if (do_wh) + goto out_wh; + goto out; + } + + err = 0; + br_id = br->br_id; + if (!remount) + au_br_do_del(sb, bindex, br); + else { + sysaufs_brs_del(sb, bindex); + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); + } + + if (!bindex) { + au_cpup_attr_all(sb->s_root->d_inode, /*force*/1); + sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; + } else + au_sub_nlink(sb->s_root->d_inode, del->h_path.dentry->d_inode); + if (au_opt_test(mnt_flags, PLINK)) + au_plink_half_refresh(sb, br_id); + + if (au_xino_brid(sb) == br_id) + au_xino_brid_set(sb, -1); + goto out; /* success */ + +out_wh: + /* revert */ + rerr = au_br_init_wh(sb, br, br->br_perm, del->h_path.dentry); + if (rerr) + pr_warn("failed re-creating base whiteout, %s. (%d)\n", + del->pathname, rerr); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) +{ + int err; + aufs_bindex_t bstart, bend; + struct aufs_ibusy ibusy; + struct inode *inode, *h_inode; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = copy_from_user(&ibusy, arg, sizeof(ibusy)); + if (!err) + err = !access_ok(VERIFY_WRITE, &arg->h_ino, sizeof(arg->h_ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + + err = -EINVAL; + si_read_lock(sb, AuLock_FLUSH); + if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbend(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + bstart = au_ibstart(inode); + bend = au_ibend(inode); + if (bstart <= ibusy.bindex && ibusy.bindex <= bend) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, bstart, bend)) + ibusy.h_ino = h_inode->i_ino; + } + ii_read_unlock(inode); + iput(inode); + +out_unlock: + si_read_unlock(sb); + if (!err) { + err = __put_user(ibusy.h_ino, &arg->h_ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + } + } +out: + return err; +} + +long au_ibusy_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* + * change a branch permission + */ + +static void au_warn_ima(void) +{ +#ifdef CONFIG_IMA + /* since it doesn't support mark_files_ro() */ + AuWarn1("RW -> RO makes IMA to produce wrong message\n"); +#endif +} + +static int do_need_sigen_inc(int a, int b) +{ + return au_br_whable(a) && !au_br_whable(b); +} + +static int need_sigen_inc(int old, int new) +{ + return do_need_sigen_inc(old, new) + || do_need_sigen_inc(new, old); +} + +static unsigned long long au_farray_cb(void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct super_block *sb = arg; + + n = 0; + p = a; + lg_global_lock(&files_lglock); + do_file_list_for_each_entry(sb, f) { + if (au_fi(f) + && file_count(f) + && !special_file(f->f_dentry->d_inode->i_mode)) { + get_file(f); + *p++ = f; + n++; + AuDebugOn(n > max); + } + } while_file_list_for_each_entry; + lg_global_unlock(&files_lglock); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + *max = atomic_long_read(&au_sbi(sb)->si_nfiles); + return au_array_alloc(max, au_farray_cb, sb); +} + +static void au_farray_free(struct file **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); + au_array_free(a); +} + +static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, do_warn; + unsigned int mnt_flags; + unsigned long long ull, max; + aufs_bindex_t br_id; + unsigned char verbose; + struct file *file, *hf, **array; + struct inode *inode; + struct au_hfile *hfile; + + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + do_warn = 0; + br_id = au_sbr_id(sb, bindex); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + + /* AuDbg("%.*s\n", AuDLNPair(file->f_dentry)); */ + fi_read_lock(file); + if (unlikely(au_test_mmapped(file))) { + err = -EBUSY; + AuVerbose(verbose, "mmapped %.*s\n", + AuDLNPair(file->f_dentry)); + AuDbgFile(file); + FiMustNoWaiters(file); + fi_read_unlock(file); + goto out_array; + } + + inode = file->f_dentry->d_inode; + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + if (!S_ISREG(inode->i_mode) + || !(file->f_mode & FMODE_WRITE) + || hfile->hf_br->br_id != br_id + || !(hf->f_mode & FMODE_WRITE)) + array[ull] = NULL; + else { + do_warn = 1; + get_file(file); + } + + FiMustNoWaiters(file); + fi_read_unlock(file); + fput(file); + } + + err = 0; + if (do_warn) + au_warn_ima(); + + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (!file) + continue; + + /* todo: already flushed? */ + /* cf. fs/super.c:mark_files_ro() */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + /* fi_read_unlock(file); */ + spin_lock(&hf->f_lock); + hf->f_mode &= ~FMODE_WRITE; + spin_unlock(&hf->f_lock); + if (!file_check_writeable(hf)) { + file_release_write(hf); + mnt_drop_write(hf->f_vfsmnt); + } + } + +out_array: + au_farray_free(array, max); +out: + AuTraceErr(err); + return err; +} + +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh) +{ + int err, rerr; + aufs_bindex_t bindex; + struct path path; + struct dentry *root; + struct au_branch *br; + + root = sb->s_root; + bindex = au_find_dbindex(root, mod->h_root); + if (bindex < 0) { + if (remount) + return 0; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", mod->path); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = test_br(mod->h_root->d_inode, mod->perm, mod->path); + if (unlikely(err)) + goto out; + + br = au_sbr(sb, bindex); + if (br->br_perm == mod->perm) + return 0; /* success */ + + if (au_br_writable(br->br_perm)) { + /* remove whiteout base */ + err = au_br_init_wh(sb, br, mod->perm, mod->h_root); + if (unlikely(err)) + goto out; + + if (!au_br_writable(mod->perm)) { + /* rw --> ro, file might be mmapped */ + DiMustNoWaiters(root); + IiMustNoWaiters(root->d_inode); + di_write_unlock(root); + err = au_br_mod_files_ro(sb, bindex); + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + if (unlikely(err)) { + rerr = -ENOMEM; + br->br_wbr = kmalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) { + path.mnt = br->br_mnt; + path.dentry = mod->h_root; + rerr = au_wbr_init(br, sb, br->br_perm, + &path); + } + if (unlikely(rerr)) { + AuIOErr("nested error %d (%d)\n", + rerr, err); + br->br_perm = mod->perm; + } + } + } + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; + br->br_wbr = kmalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + path.mnt = br->br_mnt; + path.dentry = mod->h_root; + err = au_wbr_init(br, sb, mod->perm, &path); + if (unlikely(err)) { + kfree(br->br_wbr); + br->br_wbr = NULL; + } + } + } + + if (!err) { + *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); + br->br_perm = mod->perm; + } + +out: + AuTraceErr(err); + return err; +} --- linux-3.5.0.orig/ubuntu/alx/alx_ethtool.c +++ linux-3.5.0/ubuntu/alx/alx_ethtool.c @@ -0,0 +1,1802 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" +#include "alx.h" + + +static int alx_get_settings(struct net_device *netdev, + struct ethtool_cmd *ecmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + ecmd->supported = (SUPPORTED_10baseT_Half | + SUPPORTED_10baseT_Full | + SUPPORTED_100baseT_Half | + SUPPORTED_100baseT_Full | + SUPPORTED_Autoneg | + SUPPORTED_TP | + SUPPORTED_Pause); + if (ALX_CAP(hw, GIGA)) + ecmd->supported |= SUPPORTED_1000baseT_Full; + + ecmd->advertising = ADVERTISED_TP; + if (hw->adv_cfg & ADVERTISED_Autoneg) + ecmd->advertising |= hw->adv_cfg; + + ecmd->port = PORT_TP; + ecmd->phy_address = 0; + ecmd->autoneg = (hw->adv_cfg & ADVERTISED_Autoneg) ? + AUTONEG_ENABLE : AUTONEG_DISABLE; + ecmd->transceiver = XCVR_INTERNAL; + + if (hw->flowctrl & ALX_FC_ANEG && + hw->adv_cfg & ADVERTISED_Autoneg) { + if (hw->flowctrl & ALX_FC_RX) { + ecmd->advertising |= ADVERTISED_Pause; + if (!(hw->flowctrl & ALX_FC_TX)) + ecmd->advertising |= ADVERTISED_Asym_Pause; + } else if (hw->flowctrl & ALX_FC_TX) + ecmd->advertising |= ADVERTISED_Asym_Pause; + } + + if (hw->link_up) { + ethtool_cmd_speed_set(ecmd, hw->link_speed); + ecmd->duplex = hw->link_duplex == FULL_DUPLEX ? + DUPLEX_FULL : DUPLEX_HALF; + } else { + ethtool_cmd_speed_set(ecmd, -1); + ecmd->duplex = -1; + } + + return 0; +} + +static int alx_set_settings(struct net_device *netdev, + struct ethtool_cmd *ecmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u32 adv_cfg; + int err = 0; + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + if (ecmd->autoneg == AUTONEG_ENABLE) { + if (ecmd->advertising & ADVERTISED_1000baseT_Half) { + dev_warn(&adpt->pdev->dev, "1000M half is invalid\n"); + ALX_FLAG_CLEAR(adpt, RESETING); + return -EINVAL; + } + adv_cfg = ecmd->advertising | ADVERTISED_Autoneg; + } else { + int speed = ethtool_cmd_speed(ecmd); + + switch (speed + ecmd->duplex) { + case SPEED_10 + DUPLEX_HALF: + adv_cfg = ADVERTISED_10baseT_Half; + break; + case SPEED_10 + DUPLEX_FULL: + adv_cfg = ADVERTISED_10baseT_Full; + break; + case SPEED_100 + DUPLEX_HALF: + adv_cfg = ADVERTISED_100baseT_Half; + break; + case SPEED_100 + DUPLEX_FULL: + adv_cfg = ADVERTISED_100baseT_Full; + break; + default: + err = -EINVAL; + break; + } + } + + if (!err) { + hw->adv_cfg = adv_cfg; + err = alx_setup_speed_duplex(hw, adv_cfg, hw->flowctrl); + if (err) { + dev_warn(&adpt->pdev->dev, + "config PHY speed/duplex failed,err=%d\n", + err); + err = -EIO; + } + } + + ALX_FLAG_CLEAR(adpt, RESETING); + + return err; +} + +static void alx_get_pauseparam(struct net_device *netdev, + struct ethtool_pauseparam *pause) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + if (hw->flowctrl & ALX_FC_ANEG && + hw->adv_cfg & ADVERTISED_Autoneg) + pause->autoneg = AUTONEG_ENABLE; + else + pause->autoneg = AUTONEG_DISABLE; + + if (hw->flowctrl & ALX_FC_TX) + pause->tx_pause = 1; + else + pause->tx_pause = 0; + + if (hw->flowctrl & ALX_FC_RX) + pause->rx_pause = 1; + else + pause->rx_pause = 0; +} + + +static int alx_set_pauseparam(struct net_device *netdev, + struct ethtool_pauseparam *pause) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + int err = 0; + bool reconfig_phy = false; + u8 fc = 0; + + if (pause->tx_pause) + fc |= ALX_FC_TX; + if (pause->rx_pause) + fc |= ALX_FC_RX; + if (pause->autoneg) + fc |= ALX_FC_ANEG; + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + /* restart auto-neg for auto-mode */ + if (hw->adv_cfg & ADVERTISED_Autoneg) { + if (!((fc ^ hw->flowctrl) & ALX_FC_ANEG)) + reconfig_phy = true; + if (fc & hw->flowctrl & ALX_FC_ANEG && + (fc ^ hw->flowctrl) & (ALX_FC_RX | ALX_FC_TX)) + reconfig_phy = true; + } + + if (reconfig_phy) { + err = alx_setup_speed_duplex(hw, hw->adv_cfg, fc); + if (err) { + dev_warn(&adpt->pdev->dev, + "config PHY flow control failed,err=%d\n", + err); + err = -EIO; + } + } + + /* flow control on mac */ + if ((fc ^ hw->flowctrl) & (ALX_FC_RX | ALX_FC_TX)) + alx_cfg_mac_fc(hw, fc); + + hw->flowctrl = fc; + + ALX_FLAG_CLEAR(adpt, RESETING); + + return err; +} + +static u32 alx_get_msglevel(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + return adpt->msg_enable; +} + +static void alx_set_msglevel(struct net_device *netdev, u32 data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + adpt->msg_enable = data; +} + +static const u32 hw_regs[] = { + ALX_DEV_CAP, ALX_DEV_CTRL, ALX_LNK_CAP, ALX_LNK_CTRL, + ALX_UE_SVRT, ALX_EFLD, ALX_SLD, ALX_PPHY_MISC1, + ALX_PPHY_MISC2, ALX_PDLL_TRNS1, + ALX_TLEXTN_STATS, ALX_EFUSE_CTRL, ALX_EFUSE_DATA, ALX_SPI_OP1, + ALX_SPI_OP2, ALX_SPI_OP3, ALX_EF_CTRL, ALX_EF_ADDR, + ALX_EF_DATA, ALX_SPI_ID, + ALX_SPI_CFG_START, ALX_PMCTRL, ALX_LTSSM_CTRL, ALX_MASTER, + ALX_MANU_TIMER, ALX_IRQ_MODU_TIMER, ALX_PHY_CTRL, ALX_MAC_STS, + ALX_MDIO, ALX_MDIO_EXTN, + ALX_PHY_STS, ALX_BIST0, ALX_BIST1, ALX_SERDES, + ALX_LED_CTRL, ALX_LED_PATN, ALX_LED_PATN2, ALX_SYSALV, + ALX_PCIERR_INST, ALX_LPI_DECISN_TIMER, + ALX_LPI_CTRL, ALX_LPI_WAIT, ALX_HRTBT_VLAN, ALX_HRTBT_CTRL, + ALX_RXPARSE, ALX_MAC_CTRL, ALX_GAP, ALX_STAD1, + ALX_LED_CTRL, ALX_HASH_TBL0, + ALX_HASH_TBL1, ALX_HALFD, ALX_DMA, ALX_WOL0, + ALX_WOL1, ALX_WOL2, ALX_WRR, ALX_HQTPD, + ALX_CPUMAP1, ALX_CPUMAP2, + ALX_MISC, ALX_RX_BASE_ADDR_HI, ALX_RFD_ADDR_LO, ALX_RFD_RING_SZ, + ALX_RFD_BUF_SZ, ALX_RRD_ADDR_LO, ALX_RRD_RING_SZ, + ALX_RFD_PIDX, ALX_RFD_CIDX, ALX_RXQ0, + ALX_RXQ1, ALX_RXQ2, ALX_RXQ3, ALX_TX_BASE_ADDR_HI, + ALX_TPD_PRI0_ADDR_LO, ALX_TPD_PRI1_ADDR_LO, + ALX_TPD_PRI2_ADDR_LO, ALX_TPD_PRI3_ADDR_LO, + ALX_TPD_PRI0_PIDX, ALX_TPD_PRI1_PIDX, + ALX_TPD_PRI2_PIDX, ALX_TPD_PRI3_PIDX, ALX_TPD_PRI0_CIDX, + ALX_TPD_PRI1_CIDX, ALX_TPD_PRI2_CIDX, ALX_TPD_PRI3_CIDX, + ALX_TPD_RING_SZ, ALX_TXQ0, ALX_TXQ1, ALX_TXQ2, + ALX_MSI_MAP_TBL1, ALX_MSI_MAP_TBL2, ALX_MSI_ID_MAP, + ALX_MSIX_MASK, ALX_MSIX_PENDING, + ALX_RSS_HASH_VAL, ALX_RSS_HASH_FLAG, ALX_RSS_BASE_CPU_NUM, +}; + +static int alx_get_regs_len(struct net_device *netdev) +{ + return (ARRAY_SIZE(hw_regs) + 0x20) * 4; +} + +static void alx_get_regs(struct net_device *netdev, + struct ethtool_regs *regs, void *buff) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u32 *p = buff; + int i; + + regs->version = (ALX_DID(hw) << 16) | (ALX_REVID(hw) << 8) | 1; + + memset(buff, 0, (ARRAY_SIZE(hw_regs) + 0x20) * 4); + + for (i = 0; i < ARRAY_SIZE(hw_regs); i++, p++) + ALX_MEM_R32(hw, hw_regs[i], p); + + /* last 0x20 for PHY register */ + for (i = 0; i < 0x20; i++) { + alx_read_phy_reg(hw, i, (u16 *)p); + p++; + } +} + +static void alx_get_wol(struct net_device *netdev, + struct ethtool_wolinfo *wol) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + wol->supported = WAKE_MAGIC | WAKE_PHY; + wol->wolopts = 0; + + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) + wol->wolopts |= WAKE_MAGIC; + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) + wol->wolopts |= WAKE_PHY; + + netif_info(adpt, wol, adpt->netdev, + "wolopts = %x\n", + wol->wolopts); +} + +static int alx_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + if (wol->wolopts & (WAKE_ARP | WAKE_MAGICSECURE | + WAKE_UCAST | WAKE_BCAST | WAKE_MCAST)) + return -EOPNOTSUPP; + + hw->sleep_ctrl = 0; + + if (wol->wolopts & WAKE_MAGIC) + hw->sleep_ctrl |= ALX_SLEEP_WOL_MAGIC; + if (wol->wolopts & WAKE_PHY) + hw->sleep_ctrl |= ALX_SLEEP_WOL_PHY; + + netdev_info(adpt->netdev, "wol-ctrl=%X\n", hw->sleep_ctrl); + + device_set_wakeup_enable(&adpt->pdev->dev, hw->sleep_ctrl); + + return 0; +} + +static int alx_nway_reset(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (netif_running(netdev)) + alx_reinit(adpt, false); + + return 0; +} + +static const char alx_gstrings_test[][ETH_GSTRING_LEN] = { + "register test (offline)", + "memory test (offline)", + "interrupt test (offline)", + "loopback test (offline)", + "link test (offline)" +}; +#define ALX_TEST_LEN (sizeof(alx_gstrings_test) / ETH_GSTRING_LEN) + +/* private flags */ +#define ALX_ETH_PF_LNK_10MH BIT(0) +#define ALX_ETH_PF_LNK_10MF BIT(1) +#define ALX_ETH_PF_LNK_100MH BIT(2) +#define ALX_ETH_PF_LNK_100MF BIT(3) +#define ALX_ETH_PF_LNK_1000MF BIT(4) +#define ALX_ETH_PF_LNK_MASK (\ + ALX_ETH_PF_LNK_10MH |\ + ALX_ETH_PF_LNK_10MF |\ + ALX_ETH_PF_LNK_100MH |\ + ALX_ETH_PF_LNK_100MF |\ + ALX_ETH_PF_LNK_1000MF) + +static const char alx_gstrings_stats[][ETH_GSTRING_LEN] = { + "rx_packets", + "rx_bcast_packets", + "rx_mcast_packets", + "rx_pause_packets", + "rx_ctrl_packets", + "rx_fcs_errors", + "rx_length_errors", + "rx_bytes", + "rx_runt_packets", + "rx_fragments", + "rx_64B_or_less_packets", + "rx_65B_to_127B_packets", + "rx_128B_to_255B_packets", + "rx_256B_to_511B_packets", + "rx_512B_to_1023B_packets", + "rx_1024B_to_1518B_packets", + "rx_1519B_to_mtu_packets", + "rx_oversize_packets", + "rx_rxf_ov_drop_packets", + "rx_rrd_ov_drop_packets", + "rx_align_errors", + "rx_bcast_bytes", + "rx_mcast_bytes", + "rx_address_errors", + "tx_packets", + "tx_bcast_packets", + "tx_mcast_packets", + "tx_pause_packets", + "tx_exc_defer_packets", + "tx_ctrl_packets", + "tx_defer_packets", + "tx_bytes", + "tx_64B_or_less_packets", + "tx_65B_to_127B_packets", + "tx_128B_to_255B_packets", + "tx_256B_to_511B_packets", + "tx_512B_to_1023B_packets", + "tx_1024B_to_1518B_packets", + "tx_1519B_to_mtu_packets", + "tx_single_collision", + "tx_multiple_collisions", + "tx_late_collision", + "tx_abort_collision", + "tx_underrun", + "tx_trd_eop", + "tx_length_errors", + "tx_trunc_packets", + "tx_bcast_bytes", + "tx_mcast_bytes", + "tx_update", +}; + +#define ALX_STATS_LEN (sizeof(alx_gstrings_stats) / ETH_GSTRING_LEN) + +static void alx_get_strings(struct net_device *netdev, u32 stringset, u8 *buf) +{ + switch (stringset) { + case ETH_SS_TEST: + memcpy(buf, &alx_gstrings_test, sizeof(alx_gstrings_test)); + break; + case ETH_SS_STATS: + memcpy(buf, &alx_gstrings_stats, sizeof(alx_gstrings_stats)); + break; + } +} + +static int alx_get_sset_count(struct net_device *netdev, int sset) +{ + switch (sset) { + case ETH_SS_STATS: + return ALX_STATS_LEN; + case ETH_SS_TEST: + return ALX_TEST_LEN; + default: + return -ENOTSUPP; + } +} + +struct alx_reg_attr { + u16 reg; + u32 ro_mask; + u32 rw_mask; + u32 rc_mask; + u32 rst_val; + u8 rst_affect; +}; + +struct alx_reg_attr ar816x_regs_a[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405060, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E003C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +struct alx_reg_attr ar816x_regs_b[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405018, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E003C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +struct alx_reg_attr ar816x_regs_c[] = { + {0x1400, 0xffff80E0, 0x4D00, 0x0, 0x40020000, 0}, + {0x1404, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x1408, 0x0, 0xffffffff, 0x0, 0x0, 1}, + {0x140c, 0xFFFF0000, 0x0, 0x0, 0xffff3800, 0}, + {0x1410, 0xffffffff, 0x0, 0x0, 0x0000, 0}, + {0x1414, 0x0, 0x0, 0x0, 0x0, 1}, + {0x141C, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1420, 0xfffffffe, 0x0, 0x0, 0x0, 1}, + {0x1484, 0x0, 0x7f7f7f7f, 0x0, 0x60405018, 1}, + {0x1490, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1494, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1498, 0x0, 0xffff3ff, 0x0, 0x07a1f037, 1}, + {0x149C, 0xffff0000, 0xffff, 0x0, 0x600, 1}, + {0x14a0, 0x808078c0, 0x7f803f, 0x7f000700, 0x0, 1}, + {0x14a4, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x14a8, 0xFF000000, 0x00FFFFFF, 0x0, 0x0, 1}, + {0x1540, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1544, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1550, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1560, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x1564, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1568, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1578, 0xFFFFF000, 0xfff, 0x0, 0x0, 0}, + {0x157C, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1580, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1584, 0xFFFF0000, 0xffff, 0x0, 0x0, 0}, + {0x1588, 0x0, 0xffffffff, 0x0, 0x0, 0}, + {0x1590, 0xFF00, 0xFFFF00DF, 0x0, 0x01000045, 1}, + {0x1594, 0xFFFFF800, 0x7FF, 0x0, 191, 1}, + {0x15A0, 0x200E0040, 0x5FF1FFBF, 0x0, 0x40810083, 1}, + {0x15A4, 0xFFFFF000, 0xFFF, 0x0, 0x1210, 1}, + {0x15A8, 0xF000F000, 0x0FFF0FFF, 0x0, 0x02E009C0, 1}, + {0x15AC, 0xF000, 0xFFFF0FFF, 0x0, 0x0100, 1}, + {0x15C4, 0xFF000000, 0xFFFFFF, 0x0, 0x0, 1}, + {0x15C8, 0xFFFF0000, 0xFFFF, 0x0, 0x0100, 1}, + {0x15E0, 0xFFFFF000, 0xFFF, 0x0, 0x0, 1}, + {0x15F0, 0x0, 0xFFFFFFFF, 0x0, 0x0, 1}, + {0x15F4, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15F8, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x15FC, 0xFFFFFFFF, 0x0, 0x0, 0x0, 1}, + {0x1700, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1704, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1708, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x170c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1710, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1714, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1718, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x171c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1720, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1724, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1728, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x172c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1730, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1734, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1738, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x173c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1740, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1744, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1748, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x174c, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1750, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1754, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1758, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x175c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1760, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1764, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1768, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x176c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1770, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x1774, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1778, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x177c, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x1780, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1784, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1788, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x178c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1790, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1794, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x1798, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x179c, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a0, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a4, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17a8, 0xffffffff, 0x0, 0xffffff, 0x0, 1}, + {0x17ac, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b0, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b4, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17b8, 0xffffffff, 0x0, 0xffff, 0x0, 1}, + {0x17bc, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0x17c0, 0xffffffff, 0x0, 0xffffffff, 0x0, 1}, + {0xffff, 0, 0, 0, 0, 0}, +}; + +static int alx_diag_register(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u8 rev = ALX_REVID(hw); + struct alx_reg_attr *preg, *oreg; + u32 val, old; + + switch (ALX_DID(hw)) { + case ALX_DEV_ID_AR8161: + case ALX_DEV_ID_AR8162: + case ALX_DEV_ID_AR8171: + case ALX_DEV_ID_AR8172: + if (rev == ALX_REV_B0) + oreg = ar816x_regs_b; + else if (rev == ALX_REV_C0) + oreg = ar816x_regs_c; + else + oreg = ar816x_regs_a; + break; + default: + /* unknow type */ + *data = 1; + return -EIO; + } + + /* issue a MAC-reset */ + ALX_MEM_W32(hw, ALX_MASTER, ALX_MASTER_DMA_MAC_RST); + msleep(50); + + /* check reset value */ + preg = oreg; + while (preg->reg != 0xffff) { + if (preg->rst_affect) { + ALX_MEM_R32(hw, preg->reg, &val); + if (val != preg->rst_val) { + netif_err(adpt, hw, adpt->netdev, + "register %X, hard-rst:%X, read-val:%X\n", + preg->reg, preg->rst_val, val); + *data = 2; + return -EIO; + } + } + preg++; + } + + /* check read-clear/read-write attribute */ + preg = oreg; + + while (preg->reg != 0xffff) { + ALX_MEM_R32(hw, preg->reg, &old); + + /* read clear */ + if (preg->rc_mask) { + u32 v2; + + msleep(20); + ALX_MEM_R32(hw, preg->reg, &v2); + if ((v2 & preg->rc_mask) != 0) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RC-mask:%X, Old:%X, New:%X\n", + preg->reg, preg->rc_mask, old, v2); + *data = 3; + return -EIO; + } + } + + /* read/write */ + ALX_MEM_W32(hw, preg->reg, 0xffffffff & preg->rw_mask); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, preg->reg, &val); + if ((val & preg->rw_mask) != preg->rw_mask) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RW-mask:%X, val-1:%X\n", + preg->reg, preg->rw_mask, val); + *data = 4; + return -EIO; + } + ALX_MEM_W32(hw, preg->reg, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, preg->reg, &val); + if ((val & preg->rw_mask) != 0) { + netif_err(adpt, hw, adpt->netdev, + "register %X, RW-mask:%X, val-0:%X\n", + preg->reg, preg->rw_mask, val); + *data = 4; + return -EIO; + } + + /* restore */ + ALX_MEM_W32(hw, preg->reg, old); + + preg++; + } + + return 0; +} + +static int alx_diag_sram(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u32 ret[2]; + int i, err; + + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, "reset_mac fail %d\n", err); + *data = 1; + goto out; + } + /* issue bist command */ + ALX_MEM_W32(hw, ALX_BIST0, ALX_BIST0_START); + ALX_MEM_W32(hw, ALX_BIST1, ALX_BIST1_START); + + /* wait for 100ms */ + ret[1] = ret[0] = 0; + for (i = 0; i < 5; i++) { + msleep(20); + ALX_MEM_R32(hw, ALX_BIST0, &ret[0]); + ALX_MEM_R32(hw, ALX_BIST1, &ret[1]); + if (ret[0] & ALX_BIST0_START || ret[1] & ALX_BIST1_START) + continue; + else + break; + } + + for (i = 0; i < 2; i++) { + if (ret[i] & ALX_BIST0_START) { + netif_err(adpt, hw, adpt->netdev, + "sram(%d) bist not complete(%X)!\n", + i, ret[i]); + *data = 2; + err = -EIO; + goto out; + } + if (ret[i] & ALX_BIST0_FAIL) { + netif_err(adpt, hw, adpt->netdev, + "sram(%d) bist fail(%X)!\n", + i, ret[i]); + *data = 3; + err = -EIO; + goto out; + } + } +out: + return err; +} + +static int alx_diag_reset(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int err; + + alx_reset_pcie(hw); + alx_reset_phy(hw, !hw->hib_patch); + err = alx_reset_mac(hw); + if (!err) + err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); + + if (err) { + netif_err(adpt, hw, adpt->netdev, "alx_diag_reset err %X\n", + err); + } + + return err; +} + +static int alx_diag_link(struct alx_adapter *adpt, u64 *data) +{ + struct alx_hw *hw = &adpt->hw; + u32 flags, ethadv; + u16 speed; + u8 fc; + int i, err; + + ethadv = ADVERTISED_Autoneg; + flags = adpt->eth_pflags & ALX_ETH_PF_LNK_MASK; + if (flags == 0) + flags = ALX_ETH_PF_LNK_MASK; + if (flags & ALX_ETH_PF_LNK_10MH) + ethadv |= ADVERTISED_10baseT_Half; + if (flags & ALX_ETH_PF_LNK_10MF) + ethadv |= ADVERTISED_10baseT_Full; + if (flags & ALX_ETH_PF_LNK_100MH) + ethadv |= ADVERTISED_100baseT_Half; + if (flags & ALX_ETH_PF_LNK_100MF) + ethadv |= ADVERTISED_100baseT_Full; + if (flags & ALX_ETH_PF_LNK_1000MF) + ethadv |= ADVERTISED_1000baseT_Full; + + fc = ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX; + + alx_reset_phy(hw, !hw->hib_patch); + err = alx_setup_speed_duplex(hw, ethadv, fc); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "config PHY speed/duplex failed, adv=%X,err=%d\n", + ethadv, err); + *data = 1; + goto out; + } + + /* wait for linkup */ + for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) { + bool link_up; + + msleep(100); + err = alx_get_phy_link(hw, &link_up, &speed); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "get PHY speed/duplex failed,err=%d\n", + err); + *data = 2; + goto out; + } + if (link_up) + break; + } + if (i == ALX_MAX_SETUP_LNK_CYCLE) { + err = ALX_LINK_TIMEOUT; + netif_err(adpt, hw, adpt->netdev, + "get PHY speed/duplex timeout.\n"); + *data = 3; + goto out; + } + + netif_info(adpt, hw, adpt->netdev, "link:%s\n", speed_desc(speed)); + +out: + return err; +} + +static irqreturn_t alx_diag_msix_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + int i, vect = -1; + + for (i = 0; i < adpt->nr_vec; i++) + if (irq == adpt->msix_ent[i].vector) { + vect = i; + break; + } + if (vect == -1) { + netdev_err(adpt->netdev, "vector not found irq=%d\n", irq); + goto err_out; + } + if (adpt->eth_diag_vect != vect) { + netdev_err(adpt->netdev, "wrong msix interrupt, irq=%d\n", irq); + goto err_out; + } + + alx_mask_msix(hw, vect, true); + + ALX_MEM_R32(hw, ALX_ISR, &intr); + ALX_MEM_W32(hw, ALX_ISR, intr); + + alx_mask_msix(hw, vect, false); + + adpt->eth_diag_cnt++; + return IRQ_HANDLED; + +err_out: + + ALX_MEM_W32(hw, ALX_IMR, 0); + return IRQ_HANDLED; +} + +static irqreturn_t alx_diag_msi_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + ALX_MEM_R32(hw, ALX_ISR, &intr); + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, 0); + + if (intr & ALX_ISR_MANU) + adpt->eth_diag_cnt++; + + return IRQ_HANDLED; +} + +static irqreturn_t alx_diag_intx_isr(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + if (intr & ALX_ISR_DIS) + return IRQ_NONE; + + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, 0); + + if (intr & ALX_ISR_MANU) + adpt->eth_diag_cnt++; + + return IRQ_HANDLED; +} + +static int alx_diag_msix(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + char irq_lbl[IFNAMSIZ]; + int test_vect, i = 0, err = 0; + u32 val; + + alx_init_intr(adpt); + if (!ALX_FLAG(adpt, USING_MSIX)) + goto out; + + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + FIELDX(ALX_MSI_RETRANS_TM, 100)); + ALX_MEM_W32(hw, ALX_MSI_ID_MAP, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + + for (i = 0; i < adpt->nr_vec; i++) { + sprintf(irq_lbl, "%s-test-%d", adpt->netdev->name, i); + err = request_irq(adpt->msix_ent[i].vector, alx_diag_msix_isr, + 0, irq_lbl, adpt); + if (err) + goto out; + } + + for (test_vect = 0; test_vect < adpt->nr_vec; test_vect++) { + u32 tbl[2]; + u32 other_vec = test_vect + 1; + + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + + if (other_vec >= adpt->nr_vec) + other_vec = 0; + other_vec |= other_vec << 4; + other_vec |= other_vec << 8; + other_vec |= other_vec << 16; + tbl[1] = other_vec; + tbl[0] = (other_vec & 0x0FFFFFFF) | ((u32)test_vect << 28); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL1, tbl[0]); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL2, tbl[1]); + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + + adpt->eth_diag_vect = test_vect; + adpt->eth_diag_cnt = 0; + /* issue a manual interrupt */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + for (i--; i >= 0; i--) { + synchronize_irq(adpt->msix_ent[i].vector); + free_irq(adpt->msix_ent[i].vector, adpt); + } + alx_disable_advanced_intr(adpt); + + return err; +} + + +static int alx_diag_msi(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct pci_dev *pdev = adpt->pdev; + unsigned long cap = hw->capability; + u32 val; + bool irq_installed = false; + int err = 0; + + ALX_CAP_CLEAR(hw, MSIX); + alx_init_intr(adpt); + if (!ALX_FLAG(adpt, USING_MSI)) + goto out; + + pci_disable_msix(pdev); + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + FIELDX(ALX_MSI_RETRANS_TM, 100) | ALX_MSI_MASK_SEL_LINE); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + err = request_irq(pdev->irq, alx_diag_msi_isr, 0, + adpt->netdev->name, adpt); + if (err) + goto out; + + irq_installed = true; + adpt->eth_diag_cnt = 0; + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + if (irq_installed) { + synchronize_irq(pdev->irq); + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); + hw->capability = cap; + + return err; +} + +static int alx_diag_intx(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct pci_dev *pdev = adpt->pdev; + u32 val; + bool irq_installed = false; + int err = 0; + + pci_disable_msix(pdev); + pci_disable_msi(pdev); + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, ALX_ISR_MANU); + err = request_irq(pdev->irq, alx_diag_intx_isr, IRQF_SHARED, + adpt->netdev->name, adpt); + if (err) + goto out; + + irq_installed = true; + adpt->eth_diag_cnt = 0; + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_FLUSH(hw); + ALX_MEM_R32(hw, ALX_MASTER, &val); + val |= ALX_MASTER_MANU_INT; + ALX_MEM_W32(hw, ALX_MASTER, val); + + /* wait for 50ms */ + msleep(50); + if (adpt->eth_diag_cnt != 1) { + err = -EIO; + goto out; + } + +out: + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + if (irq_installed) { + synchronize_irq(pdev->irq); + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); + + return err; +} + +static int alx_diag_interrupt(struct alx_adapter *adpt, u64 *data) +{ + int err; + + err = alx_diag_msix(adpt); + if (err) { + *data = 1; + goto out; + } + err = alx_diag_msi(adpt); + if (err) { + *data = 2; + goto out; + } + err = alx_diag_intx(adpt); + if (err) { + *data = 3; + goto out; + } + +out: + return err; +} + +static int alx_diag_pkt_len[] = {36, 512, 2048}; +static u8 alx_tso_pkt_hdr[] = { +0x08, 0x00, +0x45, 0x00, 0x00, 0x00, +0x00, 0x00, 0x40, 0x00, +0x40, 0x06, 0x00, 0x00, +0xc0, 0xa8, 0x64, 0x0A, +0xc0, 0xa8, 0x64, 0x0B, +0x0d, 0x00, 0xe0, 0x00, +0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x02, 0x00, +0x80, 0x10, 0x10, 0x00, +0x14, 0x09, 0x00, 0x00, +0x08, 0x0a, 0x11, 0x22, +0x33, 0x44, 0x55, 0x66, +0x77, 0x88, 0x01, 0x00, +}; +#define ALX_TSO_IP_HDR_LEN 20 +#define ALX_TSO_IP_OPT_LEN 0 +#define ALX_TSO_TCP_HDR_LEN 20 +#define ALX_TSO_TCP_OPT_LEN 12 + +static void alx_diag_build_pkt(struct sk_buff *skb, u8 *dest_addr, + int seq, bool lso) +{ + struct iphdr *iph; + struct tcphdr *tcph; + int offset; + u8 *pkt_data; + + pkt_data = skb->data; + memcpy(pkt_data, dest_addr, 6); + memset(pkt_data + 6, 0x0, 6); + offset = 2 * ETH_ALEN; + + if (lso) { + iph = (struct iphdr *)&pkt_data[ETH_HLEN]; + offset = ETH_HLEN + ALX_TSO_IP_HDR_LEN + ALX_TSO_IP_OPT_LEN; + tcph = (struct tcphdr *)&pkt_data[offset]; + memcpy(pkt_data + ETH_ALEN * 2, + alx_tso_pkt_hdr, sizeof(alx_tso_pkt_hdr)); + iph->tot_len = htons(skb->len - ETH_HLEN); + iph->check = 0; + tcph->check = ~csum_tcpudp_magic( + iph->saddr, + iph->daddr, + 0, IPPROTO_TCP, 0); + offset = ETH_ALEN * 2 + sizeof(alx_tso_pkt_hdr); + } else { + *(u16 *)&pkt_data[offset] = htons((u16)(skb->len - offset)); + offset += 2; + } + + *(u32 *)&pkt_data[offset] = (u32)seq; + offset += 4; + *(u16 *)&pkt_data[offset] = (u16)skb->len; + for (offset += 2; offset < skb->len; offset++) + pkt_data[offset] = (u8)(offset & 0xFF); +} + +static void alx_diag_rss_shift_key(u8 *pkey, int nkey) +{ + int len = nkey; + int i; + u8 carry = 0; + + for (i = len - 1; i >= 0; i--) { + if (pkey[i] & 0x80) { + pkey[i] = (pkey[i] << 1) | carry; + carry = 1; + } else { + pkey[i] = (pkey[i] << 1) | carry; + carry = 0; + } + } +} + +static int alx_diag_pkt_to_rxq(struct alx_adapter *adpt, struct sk_buff *skb) +{ + struct alx_hw *hw = &adpt->hw; + struct iphdr *iph; + struct tcphdr *tcph; + int i, j, que; + u8 hash_input[12], key[40]; + u32 hash; + + if (!ALX_CAP(hw, RSS) || ntohs(ETH_P_IP) != skb->data[ETH_ALEN * 2]) + return 0; + + iph = (struct iphdr *)&skb->data[ETH_HLEN]; + i = ETH_HLEN + iph->ihl * 4; + tcph = (struct tcphdr *)&skb->data[i]; + *(u32 *)&hash_input[0] = ntohl(be32_to_cpu(iph->saddr)); + *(u32 *)&hash_input[4] = ntohl(be32_to_cpu(iph->daddr)); + *(u16 *)&hash_input[8] = ntohs(be16_to_cpu(tcph->source)); + *(u16 *)&hash_input[10] = ntohs(be16_to_cpu(tcph->dest)); + + /* calcu hash */ + hash = 0; + memcpy(key, hw->rss_key, 40); + for (i = 0; i < 12; i++) { + for (j = 7; j >= 0; j--) { + if (hash_input[i] & (u8)(1 << j)) + hash ^= swab32(*(u32 *)key); + alx_diag_rss_shift_key(key, 40); + } + } + hash &= (hw->rss_idt_size - 1); + i = (int)(hash >> 3); + j = (int)(hash & 7); + que = (int)(hw->rss_idt[i] >> (j * 4) & 0xF); + + return que; +} + +static int alx_diag_rx_pkt(struct alx_adapter *adpt, int rx_qidx, + struct sk_buff **ppskb) +{ + struct alx_rx_queue *rxq; + struct rrd_desc *rrd; + struct alx_buffer *rxb; + struct sk_buff *skb; + u16 length; + int qnum; + + rxq = alx_hw_rxq(adpt->qnapi[rx_qidx]->rxq); + + rrd = rxq->rrd_hdr + rxq->rrd_cidx; + if (!(rrd->word3 & (1 << RRD_UPDATED_SHIFT))) + return 1; + + rrd->word3 &= ~(1 << RRD_UPDATED_SHIFT); + if (unlikely(FIELD_GETX(rrd->word0, RRD_SI) != rxq->cidx || + FIELD_GETX(rrd->word0, RRD_NOR) != 1)) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong SI/NOR packet! rrd->word0= %08x\n", + rrd->word0); + return -1; + } + rxb = rxq->bf_info + rxq->cidx; + dma_unmap_single(rxq->dev, + dma_unmap_addr(rxb, dma), + dma_unmap_len(rxb, size), + DMA_FROM_DEVICE); + dma_unmap_len_set(rxb, size, 0); + skb = rxb->skb; + rxb->skb = NULL; + + if (unlikely(rrd->word3 & (1 << RRD_ERR_RES_SHIFT) || + rrd->word3 & (1 << RRD_ERR_LEN_SHIFT))) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong packet! rrd->word3 is %08x\n", + rrd->word3); + rrd->word3 = 0; + return -2; + } + length = FIELD_GETX(rrd->word3, RRD_PKTLEN) - ETH_FCS_LEN; + skb_put(skb, length); + switch (FIELD_GETX(rrd->word2, RRD_PID)) { + case RRD_PID_IPV6UDP: + case RRD_PID_IPV4UDP: + case RRD_PID_IPV4TCP: + case RRD_PID_IPV6TCP: + if (rrd->word3 & ((1 << RRD_ERR_L4_SHIFT) | + (1 << RRD_ERR_IPV4_SHIFT))) { + netif_err(adpt, rx_err, adpt->netdev, + "rx-chksum error, w2=%X\n", + rrd->word2); + return -3; + } + skb->ip_summed = CHECKSUM_UNNECESSARY; + break; + } + qnum = FIELD_GETX(rrd->word2, RRD_RSSQ) % adpt->nr_rxq; + if (rx_qidx != qnum) { + netif_err(adpt, rx_err, adpt->netdev, + "rx Q-number is wrong (%d:%d), hash=%X,w2=%X\n", + rx_qidx, qnum, rrd->rss_hash, rrd->word2); + return -4; + } + + if (++rxq->cidx == rxq->count) + rxq->cidx = 0; + if (++rxq->rrd_cidx == rxq->count) + rxq->rrd_cidx = 0; + + alx_alloc_rxring_buf(adpt, rxq); + + *ppskb = skb; + return 0; +} + +static int alx_diag_cmp_pkts(struct sk_buff *tx_skb, struct sk_buff *rx_skb, + int mss, int seg_idx) +{ + int cmp_offs, cmp_len; + int hdr_len, tx_datalen; + + if (mss == 0) { + if (rx_skb->len < tx_skb->len || + memcmp(tx_skb->data, rx_skb->data, tx_skb->len)) + return -EIO; + return 0; + } + /* LSO */ + hdr_len = ETH_HLEN + ALX_TSO_IP_HDR_LEN + ALX_TSO_IP_OPT_LEN + + ALX_TSO_TCP_HDR_LEN + ALX_TSO_TCP_OPT_LEN; + tx_datalen = tx_skb->len - hdr_len; + cmp_offs = hdr_len + mss * seg_idx; + cmp_len = tx_skb->len - cmp_offs; + if (cmp_len > mss) + cmp_len = mss; + if (cmp_len > tx_skb->len) + return -EIO; + + return memcmp(&tx_skb->data[cmp_offs], + &rx_skb->data[hdr_len], + cmp_len); +} + +static int alx_diag_lpbk_run_packets(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct sk_buff *tx_skb, *rx_skb; + int i, j, pkt_len, max_len, mss; + struct alx_tx_queue *txq; + int q_idx, seg_idx, nr_pkts; + struct tpd_desc *tpd; + dma_addr_t dma; + int err; + + max_len = hw->mtu + ETH_HLEN; + for (i = 0; i < 1000; i++) { + pkt_len = alx_diag_pkt_len[i % ARRAY_SIZE(alx_diag_pkt_len)]; + mss = 0; + nr_pkts = 1; + if (pkt_len > max_len) { + mss = max_len - ETH_ALEN * 2 - sizeof(alx_tso_pkt_hdr); + if (mss < 0) { + mss = 0; + pkt_len = max_len; + } else { + nr_pkts = DIV_ROUND_UP(pkt_len - ETH_ALEN * 2 - + sizeof(alx_tso_pkt_hdr), mss); + } + } + tx_skb = netdev_alloc_skb(adpt->netdev, pkt_len); + if (!tx_skb) + return -ENOMEM; + skb_put(tx_skb, pkt_len); + alx_diag_build_pkt(tx_skb, hw->mac_addr, i, mss != 0); + dma = dma_map_single(&adpt->pdev->dev, tx_skb->data, pkt_len, + DMA_TO_DEVICE); + if (dma_mapping_error(&adpt->pdev->dev, dma)) { + dev_kfree_skb(tx_skb); + return -EIO; + } + + txq = adpt->qnapi[i % adpt->nr_txq]->txq; + tpd = txq->tpd_hdr + txq->pidx; + memset(tpd, 0, sizeof(struct tpd_desc)); + + if (mss) { + tpd->word1 |= 1 << TPD_IPV4_SHIFT; + tpd->word1 |= 1 << TPD_LSO_EN_SHIFT; + tpd->word1 |= FIELDX(TPD_MSS, mss); + tpd->word1 |= FIELDX(TPD_L4HDROFFSET, + ETH_HLEN + + ALX_TSO_IP_HDR_LEN + + ALX_TSO_IP_OPT_LEN); + } + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, pkt_len); + tpd->word1 |= 1 << TPD_EOP_SHIFT; + + if (++txq->pidx == txq->count) + txq->pidx = 0; + wmb(); + ALX_MEM_W16(hw, txq->p_reg, txq->pidx); + + /* wait packet loopbacked. */ + q_idx = alx_diag_pkt_to_rxq(adpt, tx_skb); + seg_idx = 0; + + for (j = 0; j < 500 && nr_pkts > 0; j++) { + udelay(100); + err = alx_diag_rx_pkt(adpt, q_idx, &rx_skb); + if (err > 0) + continue; + if (err < 0) { + err = -EIO; + goto out; + } + + /* got 1 packet/segment, compare */ + err = alx_diag_cmp_pkts(tx_skb, rx_skb, mss, seg_idx); + dev_kfree_skb(rx_skb); + if (err) { + err = -EIO; + goto out; + } + seg_idx++; + nr_pkts--; + } + if (err) { + err = -EIO; + goto out; + } + dev_kfree_skb(tx_skb); + } + + return 0; + +out: + dma_unmap_single(&adpt->pdev->dev, dma, tx_skb->len, DMA_TO_DEVICE); + dev_kfree_skb(tx_skb); + return err; +} + +enum ALX_LPBK_MODE { + ALX_LPBK_MAC = 0, + ALX_LPBK_PHY, +}; +static int alx_diag_speed[] = {SPEED_1000, SPEED_100, SPEED_10}; + +static int alx_diag_lpbk_init_hw(struct alx_adapter *adpt, int mode, int speed) +{ + struct alx_hw *hw = &adpt->hw; + int i, err; + u32 val; + + alx_reset_pcie(hw); + alx_reset_phy(hw, false); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "loopback: reset mac fail, err=%d\n", err); + goto err_hw; + } + hw->rx_ctrl |= ALX_MAC_CTRL_LPBACK_EN | + ALX_MAC_CTRL_DBG_EN; + + /* PHY configuration */ + if (hw->is_fpga) { + if (mode == ALX_LPBK_MAC) + goto cfg_hw; + netif_err(adpt, hw, adpt->netdev, + "loopback: FPGA not support PHY external lpbk!\n"); + goto err_hw; + } + err = alx_write_phy_reg(hw, 16, 0x0800); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "loopback: fix channel, err=%d\n", err); + goto err_hw; + } + switch (speed) { + case SPEED_1000: + alx_write_phy_dbg(hw, 0x11, 0x5553); + alx_write_phy_reg(hw, MII_BMCR, 0x8140); + break; + case SPEED_100: + alx_write_phy_reg(hw, MII_BMCR, 0xA100); + break; + default: + alx_write_phy_reg(hw, MII_BMCR, 0x8100); + break; + } + msleep(100); + + if (mode == ALX_LPBK_PHY) { + u16 spd; + bool linkup; + + /* wait for link */ + for (i = 0; i < 50; i++) { + msleep(100); + err = alx_get_phy_link(hw, &linkup, &spd); + if (err) + goto err_hw; + if (linkup) + break; + } + if (!linkup) { + netif_err(adpt, hw, adpt->netdev, + "no link, check your External-Loopback-Connector !\n"); + goto err_hw; + } + hw->rx_ctrl &= ~ALX_MAC_CTRL_LPBACK_EN; + } + +cfg_hw: + alx_init_intr(adpt); + alx_init_def_rss_idt(adpt); + err = alx_setup_all_ring_resources(adpt); + if (err) + goto out; + alx_configure(adpt); + /* disable clk gate for loopback */ + ALX_MEM_W32(hw, ALX_CLK_GATE, 0); + /* disable PLL clk switch for loopback */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_PLL_ON); + hw->link_duplex = FULL_DUPLEX; + hw->link_speed = speed; + hw->link_up = true; + alx_enable_aspm(hw, false, false); + alx_start_mac(hw); + goto out; +err_hw: + err = -EIO; +out: + return err; +} + +static void alx_diag_lpbk_deinit_hw(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u32 val; + + hw->link_up = false; + hw->link_speed = SPEED_0; + alx_reset_mac(hw); + hw->rx_ctrl &= ~(ALX_MAC_CTRL_LPBACK_EN | ALX_MAC_CTRL_DBG_EN); + alx_enable_aspm(hw, false, false); + alx_free_all_ring_resources(adpt); + alx_disable_advanced_intr(adpt); + /* enable PLL clk switch for loopback */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_PLL_ON); +} + +static int alx_diag_loopback(struct alx_adapter *adpt, u64 *data, bool phy_lpbk) +{ + struct alx_hw *hw = &adpt->hw; + int i, err; + + if (hw->is_fpga && phy_lpbk) + return 0; + + for (i = 0; i < ARRAY_SIZE(alx_diag_speed); i++) { + err = alx_diag_lpbk_init_hw( + adpt, + phy_lpbk ? ALX_LPBK_PHY : ALX_LPBK_MAC, + alx_diag_speed[i]); + if (err) { + *data = i + 1; + goto out; + } + err = alx_diag_lpbk_run_packets(adpt); + if (err) { + *data = i + 10; + goto out; + } + alx_diag_lpbk_deinit_hw(adpt); + } +out: + if (err) + alx_diag_lpbk_deinit_hw(adpt); + + return err; +} + +static void alx_self_test(struct net_device *netdev, + struct ethtool_test *etest, + u64 *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + bool if_running = netif_running(netdev); + bool phy_lpback = etest->flags & ETH_TEST_FL_EXTERNAL_LB; + + ALX_FLAG_SET(adpt, TESTING); + memset(data, 0, sizeof(u64) * ALX_TEST_LEN); + + if (if_running) + dev_close(netdev); + + if (etest->flags == ETH_TEST_FL_OFFLINE) { + netif_info(adpt, hw, adpt->netdev, "offline test start...\n"); + + if (alx_diag_register(adpt, &data[0])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (alx_diag_sram(adpt, &data[1])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (alx_diag_interrupt(adpt, &data[2])) + etest->flags |= ETH_TEST_FL_FAILED; + + if (phy_lpback) + etest->flags |= ETH_TEST_FL_EXTERNAL_LB_DONE; + if (alx_diag_loopback(adpt, &data[3], phy_lpback)) + etest->flags |= ETH_TEST_FL_FAILED; + + } else { + netif_info(adpt, hw, adpt->netdev, "online test start...\n"); + + if (alx_diag_link(adpt, &data[4])) + etest->flags |= ETH_TEST_FL_FAILED; + } + + ALX_FLAG_CLEAR(adpt, TESTING); + alx_diag_reset(adpt); + + if (if_running) + dev_open(netdev); +} + +static void alx_get_ethtool_stats(struct net_device *netdev, + struct ethtool_stats *estats, u64 *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + + spin_lock(&adpt->smb_lock); + + __alx_update_hw_stats(hw); + memcpy(data, &hw->stats, sizeof(hw->stats)); + + spin_unlock(&adpt->smb_lock); +} + +static u32 alx_get_priv_flags(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + return adpt->eth_pflags; +} + +static int alx_set_priv_flags(struct net_device *netdev, u32 flags) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + adpt->eth_pflags = flags; + + return 0; +} + +static void alx_get_drvinfo(struct net_device *netdev, + struct ethtool_drvinfo *drvinfo) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + strlcpy(drvinfo->driver, alx_drv_name, sizeof(drvinfo->driver)); + strlcpy(drvinfo->version, alx_drv_version, sizeof(drvinfo->version)); + strlcpy(drvinfo->fw_version, "N/A", sizeof(drvinfo->fw_version)); + strlcpy(drvinfo->bus_info, pci_name(adpt->pdev), + sizeof(drvinfo->bus_info)); + drvinfo->n_stats = ALX_STATS_LEN; + drvinfo->testinfo_len = ALX_TEST_LEN; + drvinfo->n_priv_flags = 5; + drvinfo->regdump_len = alx_get_regs_len(netdev); + drvinfo->eedump_len = 0; +} + +static const struct ethtool_ops alx_ethtool_ops = { + .get_settings = alx_get_settings, + .set_settings = alx_set_settings, + .get_pauseparam = alx_get_pauseparam, + .set_pauseparam = alx_set_pauseparam, + .get_drvinfo = alx_get_drvinfo, + .get_regs_len = alx_get_regs_len, + .get_regs = alx_get_regs, + .get_wol = alx_get_wol, + .set_wol = alx_set_wol, + .get_msglevel = alx_get_msglevel, + .set_msglevel = alx_set_msglevel, + .nway_reset = alx_nway_reset, + .get_link = ethtool_op_get_link, + .get_strings = alx_get_strings, + .get_sset_count = alx_get_sset_count, + .get_ethtool_stats = alx_get_ethtool_stats, + .self_test = alx_self_test, + .get_priv_flags = alx_get_priv_flags, + .set_priv_flags = alx_set_priv_flags, +}; + +void alx_set_ethtool_ops(struct net_device *dev) +{ + SET_ETHTOOL_OPS(dev, &alx_ethtool_ops); +} + --- linux-3.5.0.orig/ubuntu/alx/alx_reg.h +++ linux-3.5.0/ubuntu/alx/alx_reg.h @@ -0,0 +1,2295 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ALX_REG_H +#define ALX_REG_H + +/**********************************************************************/ +/* following registers are mapped to both pci config and memory space */ +/**********************************************************************/ + +#define ALX_VENDOR_ID PCI_VENDOR_ID_ATTANSIC + +/* pci dev-ids */ +#define ALX_DEV_ID_AR8161 0x1091 +#define ALX_DEV_ID_AR8162 0x1090 +#define ALX_DEV_ID_AR8171 0x10A1 +#define ALX_DEV_ID_AR8172 0x10A0 + +/* rev definition, + * bit(0): with xD support + * bit(1): with Card Reader function + * bit(7:2): real revision + */ +#define ALX_PCI_REVID_WTH_CR BIT(1) +#define ALX_PCI_REVID_WTH_XD BIT(0) +#define ALX_PCI_REVID_MASK 0x1FU +#define ALX_PCI_REVID_SHIFT 3 +#define ALX_REV_A0 0 +#define ALX_REV_A1 1 +#define ALX_REV_B0 2 +#define ALX_REV_C0 3 + +#define ALX_PM_CSR 0x0044 +#define ALX_PM_CSR_PME_STAT BIT(15) +#define ALX_PM_CSR_DSCAL_MASK 0x3U +#define ALX_PM_CSR_DSCAL_SHIFT 13 +#define ALX_PM_CSR_DSEL_MASK 0xFU +#define ALX_PM_CSR_DSEL_SHIFT 9 +#define ALX_PM_CSR_PME_EN BIT(8) +#define ALX_PM_CSR_PWST_MASK 0x3U +#define ALX_PM_CSR_PWST_SHIFT 0 + +#define ALX_DEV_CAP 0x005C +#define ALX_DEV_CAP_SPLSL_MASK 0x3UL +#define ALX_DEV_CAP_SPLSL_SHIFT 26 +#define ALX_DEV_CAP_SPLV_MASK 0xFFUL +#define ALX_DEV_CAP_SPLV_SHIFT 18 +#define ALX_DEV_CAP_RBER BIT(15) +#define ALX_DEV_CAP_PIPRS BIT(14) +#define ALX_DEV_CAP_AIPRS BIT(13) +#define ALX_DEV_CAP_ABPRS BIT(12) +#define ALX_DEV_CAP_L1ACLAT_MASK 0x7UL +#define ALX_DEV_CAP_L1ACLAT_SHIFT 9 +#define ALX_DEV_CAP_L0SACLAT_MASK 0x7UL +#define ALX_DEV_CAP_L0SACLAT_SHIFT 6 +#define ALX_DEV_CAP_EXTAG BIT(5) +#define ALX_DEV_CAP_PHANTOM BIT(4) +#define ALX_DEV_CAP_MPL_MASK 0x7UL +#define ALX_DEV_CAP_MPL_SHIFT 0 +#define ALX_DEV_CAP_MPL_128 1 +#define ALX_DEV_CAP_MPL_256 2 +#define ALX_DEV_CAP_MPL_512 3 +#define ALX_DEV_CAP_MPL_1024 4 +#define ALX_DEV_CAP_MPL_2048 5 +#define ALX_DEV_CAP_MPL_4096 6 + +#define ALX_DEV_CTRL 0x0060 +#define ALX_DEV_CTRL_MAXRRS_MASK 0x7U +#define ALX_DEV_CTRL_MAXRRS_SHIFT 12 +#define ALX_DEV_CTRL_MAXRRS_MIN 2 +#define ALX_DEV_CTRL_NOSNP_EN BIT(11) +#define ALX_DEV_CTRL_AUXPWR_EN BIT(10) +#define ALX_DEV_CTRL_PHANTOM_EN BIT(9) +#define ALX_DEV_CTRL_EXTAG_EN BIT(8) +#define ALX_DEV_CTRL_MPL_MASK 0x7U +#define ALX_DEV_CTRL_MPL_SHIFT 5 +#define ALX_DEV_CTRL_RELORD_EN BIT(4) +#define ALX_DEV_CTRL_URR_EN BIT(3) +#define ALX_DEV_CTRL_FERR_EN BIT(2) +#define ALX_DEV_CTRL_NFERR_EN BIT(1) +#define ALX_DEV_CTRL_CERR_EN BIT(0) + +#define ALX_DEV_STAT 0x0062 +#define ALX_DEV_STAT_XS_PEND BIT(5) +#define ALX_DEV_STAT_AUXPWR BIT(4) +#define ALX_DEV_STAT_UR BIT(3) +#define ALX_DEV_STAT_FERR BIT(2) +#define ALX_DEV_STAT_NFERR BIT(1) +#define ALX_DEV_STAT_CERR BIT(0) + +#define ALX_LNK_CAP 0x0064 +#define ALX_LNK_CAP_PRTNUM_MASK 0xFFUL +#define ALX_LNK_CAP_PRTNUM_SHIFT 24 +#define ALX_LNK_CAP_CLK_PM BIT(18) +#define ALX_LNK_CAP_L1EXTLAT_MASK 0x7UL +#define ALX_LNK_CAP_L1EXTLAT_SHIFT 15 +#define ALX_LNK_CAP_L0SEXTLAT_MASK 0x7UL +#define ALX_LNK_CAP_L0SEXTLAT_SHIFT 12 +#define ALX_LNK_CAP_ASPM_SUP_MASK 0x3UL +#define ALX_LNK_CAP_ASPM_SUP_SHIFT 10 +#define ALX_LNK_CAP_ASPM_SUP_L0S 1 +#define ALX_LNK_CAP_ASPM_SUP_L0SL1 3 +#define ALX_LNK_CAP_MAX_LWH_MASK 0x3FUL +#define ALX_LNK_CAP_MAX_LWH_SHIFT 4 +#define ALX_LNK_CAP_MAX_LSPD_MASK 0xFUL +#define ALX_LNK_CAP_MAX_LSPD_SHIFT 0 + +#define ALX_LNK_CTRL 0x0068 +#define ALX_LNK_CTRL_CLK_PM_EN BIT(8) +#define ALX_LNK_CTRL_EXTSYNC BIT(7) +#define ALX_LNK_CTRL_CMNCLK_CFG BIT(6) +#define ALX_LNK_CTRL_RCB_128B BIT(3) +#define ALX_LNK_CTRL_ASPM_MASK 0x3U +#define ALX_LNK_CTRL_ASPM_SHIFT 0 +#define ALX_LNK_CTRL_ASPM_DIS 0 +#define ALX_LNK_CTRL_ASPM_ENL0S 1 +#define ALX_LNK_CTRL_ASPM_ENL1 2 +#define ALX_LNK_CTRL_ASPM_ENL0SL1 3 + +#define ALX_LNK_STAT 0x006A +#define ALX_LNK_STAT_SCLKCFG BIT(12) +#define ALX_LNK_STAT_LNKTRAIN BIT(11) +#define ALX_LNK_STAT_TRNERR BIT(10) +#define ALX_LNK_STAT_LNKSPD_MASK 0xFU +#define ALX_LNK_STAT_LNKSPD_SHIFT 0 +#define ALX_LNK_STAT_NEGLW_MASK 0x3FU +#define ALX_LNK_STAT_NEGLW_SHIFT 4 + +#define ALX_MSIX_MASK 0x0090 +#define ALX_MSIX_PENDING 0x0094 + +#define ALX_UE_SVRT 0x010C +#define ALX_UE_SVRT_UR BIT(20) +#define ALX_UE_SVRT_ECRCERR BIT(19) +#define ALX_UE_SVRT_MTLP BIT(18) +#define ALX_UE_SVRT_RCVOVFL BIT(17) +#define ALX_UE_SVRT_UNEXPCPL BIT(16) +#define ALX_UE_SVRT_CPLABRT BIT(15) +#define ALX_UE_SVRT_CPLTO BIT(14) +#define ALX_UE_SVRT_FCPROTERR BIT(13) +#define ALX_UE_SVRT_PTLP BIT(12) +#define ALX_UE_SVRT_DLPROTERR BIT(4) +#define ALX_UE_SVRT_TRNERR BIT(0) + +/* eeprom & flash load register */ +#define ALX_EFLD 0x0204 +#define ALX_EFLD_F_ENDADDR_MASK 0x3FFUL +#define ALX_EFLD_F_ENDADDR_SHIFT 16 +#define ALX_EFLD_F_EXIST BIT(10) +#define ALX_EFLD_E_EXIST BIT(9) +#define ALX_EFLD_EXIST BIT(8) +#define ALX_EFLD_STAT BIT(5) +#define ALX_EFLD_IDLE BIT(4) +#define ALX_EFLD_START BIT(0) + +/* eFuse load register */ +#define ALX_SLD 0x0218 +#define ALX_SLD_FREQ_MASK 0x3UL +#define ALX_SLD_FREQ_SHIFT 24 +#define ALX_SLD_FREQ_100K 0 +#define ALX_SLD_FREQ_200K 1 +#define ALX_SLD_FREQ_300K 2 +#define ALX_SLD_FREQ_400K 3 +#define ALX_SLD_EXIST BIT(23) +#define ALX_SLD_SLVADDR_MASK 0x7FUL +#define ALX_SLD_SLVADDR_SHIFT 16 +#define ALX_SLD_IDLE BIT(13) +#define ALX_SLD_STAT BIT(12) +#define ALX_SLD_START BIT(11) +#define ALX_SLD_STARTADDR_MASK 0xFFUL +#define ALX_SLD_STARTADDR_SHIFT 0 +#define ALX_SLD_MAX_TO 100 + +#define ALX_PCIE_MSIC 0x021C +#define ALX_PCIE_MSIC_MSIX_DIS BIT(22) +#define ALX_PCIE_MSIC_MSI_DIS BIT(21) + +#define ALX_PPHY_MISC1 0x1000 +#define ALX_PPHY_MISC1_RCVDET BIT(2) +#define ALX_PPHY_MISC1_NFTS_MASK 0xFFUL +#define ALX_PPHY_MISC1_NFTS_SHIFT 16 +#define ALX_PPHY_MISC1_NFTS_HIPERF 0xA0 + +#define ALX_PPHY_MISC2 0x1004 +#define ALX_PPHY_MISC2_L0S_TH_MASK 0x3UL +#define ALX_PPHY_MISC2_L0S_TH_SHIFT 18 +#define ALX_PPHY_MISC2_CDR_BW_MASK 0x3UL +#define ALX_PPHY_MISC2_CDR_BW_SHIFT 16 + +#define ALX_PDLL_TRNS1 0x1104 +#define ALX_PDLL_TRNS1_D3PLLOFF_EN BIT(11) +#define ALX_PDLL_TRNS1_REGCLK_SEL_NORM BIT(10) +#define ALX_PDLL_TRNS1_REPLY_TO_MASK 0x3FFUL +#define ALX_PDLL_TRNS1_REPLY_TO_SHIFT 0 + +#define ALX_TLEXTN_STATS 0x1208 +#define ALX_TLEXTN_STATS_DEVNO_MASK 0x1FUL +#define ALX_TLEXTN_STATS_DEVNO_SHIFT 16 +#define ALX_TLEXTN_STATS_BUSNO_MASK 0xFFUL +#define ALX_TLEXTN_STATS_BUSNO_SHIFT 8 + +#define ALX_EFUSE_CTRL 0x12C0 +#define ALX_EFUSE_CTRL_FLAG BIT(31) +#define ALX_EUFSE_CTRL_ACK BIT(30) +#define ALX_EFUSE_CTRL_ADDR_MASK 0x3FFUL +#define ALX_EFUSE_CTRL_ADDR_SHIFT 16 + +#define ALX_EFUSE_DATA 0x12C4 + +#define ALX_SPI_OP1 0x12C8 +#define ALX_SPI_OP1_RDID_MASK 0xFFUL +#define ALX_SPI_OP1_RDID_SHIFT 24 +#define ALX_SPI_OP1_CE_MASK 0xFFUL +#define ALX_SPI_OP1_CE_SHIFT 16 +#define ALX_SPI_OP1_SE_MASK 0xFFUL +#define ALX_SPI_OP1_SE_SHIFT 8 +#define ALX_SPI_OP1_PRGRM_MASK 0xFFUL +#define ALX_SPI_OP1_PRGRM_SHIFT 0 + +#define ALX_SPI_OP2 0x12CC +#define ALX_SPI_OP2_READ_MASK 0xFFUL +#define ALX_SPI_OP2_READ_SHIFT 24 +#define ALX_SPI_OP2_WRSR_MASK 0xFFUL +#define ALX_SPI_OP2_WRSR_SHIFT 16 +#define ALX_SPI_OP2_RDSR_MASK 0xFFUL +#define ALX_SPI_OP2_RDSR_SHIFT 8 +#define ALX_SPI_OP2_WREN_MASK 0xFFUL +#define ALX_SPI_OP2_WREN_SHIFT 0 + +#define ALX_SPI_OP3 0x12E4 +#define ALX_SPI_OP3_WRDI_MASK 0xFFUL +#define ALX_SPI_OP3_WRDI_SHIFT 8 +#define ALX_SPI_OP3_EWSR_MASK 0xFFUL +#define ALX_SPI_OP3_EWSR_SHIFT 0 + +#define ALX_EF_CTRL 0x12D0 +#define ALX_EF_CTRL_FSTS_MASK 0xFFUL +#define ALX_EF_CTRL_FSTS_SHIFT 20 +#define ALX_EF_CTRL_CLASS_MASK 0x7UL +#define ALX_EF_CTRL_CLASS_SHIFT 16 +#define ALX_EF_CTRL_CLASS_F_UNKNOWN 0 +#define ALX_EF_CTRL_CLASS_F_STD 1 +#define ALX_EF_CTRL_CLASS_F_SST 2 +#define ALX_EF_CTRL_CLASS_E_UNKNOWN 0 +#define ALX_EF_CTRL_CLASS_E_1K 1 +#define ALX_EF_CTRL_CLASS_E_4K 2 +#define ALX_EF_CTRL_FRET BIT(15) +#define ALX_EF_CTRL_TYP_MASK 0x3UL +#define ALX_EF_CTRL_TYP_SHIFT 12 +#define ALX_EF_CTRL_TYP_NONE 0 +#define ALX_EF_CTRL_TYP_F 1 +#define ALX_EF_CTRL_TYP_E 2 +#define ALX_EF_CTRL_TYP_UNKNOWN 3 +#define ALX_EF_CTRL_ONE_CLK BIT(10) +#define ALX_EF_CTRL_ECLK_MASK 0x3UL +#define ALX_EF_CTRL_ECLK_SHIFT 8 +#define ALX_EF_CTRL_ECLK_125K 0 +#define ALX_EF_CTRL_ECLK_250K 1 +#define ALX_EF_CTRL_ECLK_500K 2 +#define ALX_EF_CTRL_ECLK_1M 3 +#define ALX_EF_CTRL_FBUSY BIT(7) +#define ALX_EF_CTRL_ACTION BIT(6) +#define ALX_EF_CTRL_AUTO_OP BIT(5) +#define ALX_EF_CTRL_SST_MODE BIT(4) +#define ALX_EF_CTRL_INST_MASK 0xFUL +#define ALX_EF_CTRL_INST_SHIFT 0 +#define ALX_EF_CTRL_INST_NONE 0 +#define ALX_EF_CTRL_INST_READ 1 +#define ALX_EF_CTRL_INST_RDID 2 +#define ALX_EF_CTRL_INST_RDSR 3 +#define ALX_EF_CTRL_INST_WREN 4 +#define ALX_EF_CTRL_INST_PRGRM 5 +#define ALX_EF_CTRL_INST_SE 6 +#define ALX_EF_CTRL_INST_CE 7 +#define ALX_EF_CTRL_INST_WRSR 10 +#define ALX_EF_CTRL_INST_EWSR 11 +#define ALX_EF_CTRL_INST_WRDI 12 +#define ALX_EF_CTRL_INST_WRITE 2 + +#define ALX_EF_ADDR 0x12D4 +#define ALX_EF_DATA 0x12D8 +#define ALX_SPI_ID 0x12DC + +#define ALX_SPI_CFG_START 0x12E0 + +#define ALX_PMCTRL 0x12F8 +#define ALX_PMCTRL_HOTRST_WTEN BIT(31) +/* bit30: L0s/L1 controlled by MAC based on throughput(setting in 15A0) */ +#define ALX_PMCTRL_ASPM_FCEN BIT(30) +#define ALX_PMCTRL_SADLY_EN BIT(29) +#define ALX_PMCTRL_L0S_BUFSRX_EN BIT(28) +#define ALX_PMCTRL_LCKDET_TIMER_MASK 0xFUL +#define ALX_PMCTRL_LCKDET_TIMER_SHIFT 24 +#define ALX_PMCTRL_LCKDET_TIMER_DEF 0xC +/* bit[23:20] if pm_request_l1 time > @, then enter L0s not L1 */ +#define ALX_PMCTRL_L1REQ_TO_MASK 0xFUL +#define ALX_PMCTRL_L1REQ_TO_SHIFT 20 +#define ALX_PMCTRL_L1REG_TO_DEF 0xF +#define ALX_PMCTRL_TXL1_AFTER_L0S BIT(19) +#define ALX_PMCTRL_L1_TIMER_MASK 0x7UL +#define ALX_PMCTRL_L1_TIMER_SHIFT 16 +#define ALX_PMCTRL_L1_TIMER_DIS 0 +#define ALX_PMCTRL_L1_TIMER_2US 1 +#define ALX_PMCTRL_L1_TIMER_4US 2 +#define ALX_PMCTRL_L1_TIMER_8US 3 +#define ALX_PMCTRL_L1_TIMER_16US 4 +#define ALX_PMCTRL_L1_TIMER_24US 5 +#define ALX_PMCTRL_L1_TIMER_32US 6 +#define ALX_PMCTRL_L1_TIMER_63US 7 +#define ALX_PMCTRL_RCVR_WT_1US BIT(15) +#define ALX_PMCTRL_PWM_VER_11 BIT(14) +/* bit13: enable pcie clk switch in L1 state */ +#define ALX_PMCTRL_L1_CLKSW_EN BIT(13) +#define ALX_PMCTRL_L0S_EN BIT(12) +#define ALX_PMCTRL_RXL1_AFTER_L0S BIT(11) +#define ALX_PMCTRL_L0S_TIMER_MASK 0x7UL +#define ALX_PMCTRL_L0S_TIMER_SHIFT 8 +#define ALX_PMCTRL_L1_BUFSRX_EN BIT(7) +/* bit6: power down serdes RX */ +#define ALX_PMCTRL_L1_SRDSRX_PWD BIT(6) +#define ALX_PMCTRL_L1_SRDSPLL_EN BIT(5) +#define ALX_PMCTRL_L1_SRDS_EN BIT(4) +#define ALX_PMCTRL_L1_EN BIT(3) +#define ALX_PMCTRL_CLKREQ_EN BIT(2) +#define ALX_PMCTRL_RBER_EN BIT(1) +#define ALX_PMCTRL_SPRSDWER_EN BIT(0) + +#define ALX_LTSSM_CTRL 0x12FC +#define ALX_LTSSM_WRO_EN BIT(12) + +/*******************************************************/ +/* following registers are mapped only to memory space */ +/*******************************************************/ + +#define ALX_MASTER 0x1400 +#define ALX_MASTER_OTP_FLG BIT(31) +#define ALX_MASTER_DEV_NUM_MASK 0x7FUL +#define ALX_MASTER_DEV_NUM_SHIFT 24 +#define ALX_MASTER_REV_NUM_MASK 0xFFUL +#define ALX_MASTER_REV_NUM_SHIFT 16 +#define ALX_MASTER_DEASSRT BIT(15) +#define ALX_MASTER_RDCLR_INT BIT(14) +#define ALX_MASTER_DMA_RST BIT(13) +/* bit12: 1:alwys select pclk from serdes, not sw to 25M */ +#define ALX_MASTER_PCLKSEL_SRDS BIT(12) +/* bit11: irq moduration for rx */ +#define ALX_MASTER_IRQMOD2_EN BIT(11) +/* bit10: irq moduration for tx/rx */ +#define ALX_MASTER_IRQMOD1_EN BIT(10) +#define ALX_MASTER_MANU_INT BIT(9) +#define ALX_MASTER_MANUTIMER_EN BIT(8) +#define ALX_MASTER_SYSALVTIMER_EN BIT(7) +#define ALX_MASTER_OOB_DIS BIT(6) +/* bit5: wakeup without pcie clk */ +#define ALX_MASTER_WAKEN_25M BIT(5) +#define ALX_MASTER_BERT_START BIT(4) +#define ALX_MASTER_PCIE_TSTMOD_MASK 0x3UL +#define ALX_MASTER_PCIE_TSTMOD_SHIFT 2 +#define ALX_MASTER_PCIE_RST BIT(1) +/* bit0: MAC & DMA reset */ +#define ALX_MASTER_DMA_MAC_RST BIT(0) +#define ALX_DMA_MAC_RST_TO 50 + +#define ALX_MANU_TIMER 0x1404 + +#define ALX_IRQ_MODU_TIMER 0x1408 +/* hi-16bit is only for RX */ +#define ALX_IRQ_MODU_TIMER2_MASK 0xFFFFUL +#define ALX_IRQ_MODU_TIMER2_SHIFT 16 +#define ALX_IRQ_MODU_TIMER1_MASK 0xFFFFUL +#define ALX_IRQ_MODU_TIMER1_SHIFT 0 + +#define ALX_PHY_CTRL 0x140C +#define ALX_PHY_CTRL_ADDR_MASK 0x1FUL +#define ALX_PHY_CTRL_ADDR_SHIFT 19 +#define ALX_PHY_CTRL_BP_VLTGSW BIT(18) +#define ALX_PHY_CTRL_100AB_EN BIT(17) +#define ALX_PHY_CTRL_10AB_EN BIT(16) +#define ALX_PHY_CTRL_PLL_BYPASS BIT(15) +/* bit14: affect MAC & PHY, go to low power sts */ +#define ALX_PHY_CTRL_POWER_DOWN BIT(14) +/* bit13: 1:pll always ON, 0:can switch in lpw */ +#define ALX_PHY_CTRL_PLL_ON BIT(13) +#define ALX_PHY_CTRL_RST_ANALOG BIT(12) +#define ALX_PHY_CTRL_HIB_PULSE BIT(11) +#define ALX_PHY_CTRL_HIB_EN BIT(10) +#define ALX_PHY_CTRL_GIGA_DIS BIT(9) +/* bit8: poweron rst */ +#define ALX_PHY_CTRL_IDDQ_DIS BIT(8) +/* bit7: while reboot, it affects bit8 */ +#define ALX_PHY_CTRL_IDDQ BIT(7) +#define ALX_PHY_CTRL_LPW_EXIT BIT(6) +#define ALX_PHY_CTRL_GATE_25M BIT(5) +#define ALX_PHY_CTRL_RVRS_ANEG BIT(4) +#define ALX_PHY_CTRL_ANEG_NOW BIT(3) +#define ALX_PHY_CTRL_LED_MODE BIT(2) +#define ALX_PHY_CTRL_RTL_MODE BIT(1) +/* bit0: out of dsp RST state */ +#define ALX_PHY_CTRL_DSPRST_OUT BIT(0) +#define ALX_PHY_CTRL_DSPRST_TO 80 +#define ALX_PHY_CTRL_CLS (\ + ALX_PHY_CTRL_LED_MODE |\ + ALX_PHY_CTRL_100AB_EN |\ + ALX_PHY_CTRL_PLL_ON) + +#define ALX_MAC_STS 0x1410 +#define ALX_MAC_STS_SFORCE_MASK 0xFUL +#define ALX_MAC_STS_SFORCE_SHIFT 14 +#define ALX_MAC_STS_CALIB_DONE BIT13 +#define ALX_MAC_STS_CALIB_RES_MASK 0x1FUL +#define ALX_MAC_STS_CALIB_RES_SHIFT 8 +#define ALX_MAC_STS_CALIBERR_MASK 0xFUL +#define ALX_MAC_STS_CALIBERR_SHIFT 4 +#define ALX_MAC_STS_TXQ_BUSY BIT(3) +#define ALX_MAC_STS_RXQ_BUSY BIT(2) +#define ALX_MAC_STS_TXMAC_BUSY BIT(1) +#define ALX_MAC_STS_RXMAC_BUSY BIT(0) +#define ALX_MAC_STS_IDLE (\ + ALX_MAC_STS_TXQ_BUSY |\ + ALX_MAC_STS_RXQ_BUSY |\ + ALX_MAC_STS_TXMAC_BUSY |\ + ALX_MAC_STS_RXMAC_BUSY) + +#define ALX_MDIO 0x1414 +#define ALX_MDIO_MODE_EXT BIT(30) +#define ALX_MDIO_POST_READ BIT(29) +#define ALX_MDIO_AUTO_POLLING BIT(28) +#define ALX_MDIO_BUSY BIT(27) +#define ALX_MDIO_CLK_SEL_MASK 0x7UL +#define ALX_MDIO_CLK_SEL_SHIFT 24 +#define ALX_MDIO_CLK_SEL_25MD4 0 +#define ALX_MDIO_CLK_SEL_25MD6 2 +#define ALX_MDIO_CLK_SEL_25MD8 3 +#define ALX_MDIO_CLK_SEL_25MD10 4 +#define ALX_MDIO_CLK_SEL_25MD32 5 +#define ALX_MDIO_CLK_SEL_25MD64 6 +#define ALX_MDIO_CLK_SEL_25MD128 7 +#define ALX_MDIO_START BIT(23) +#define ALX_MDIO_SPRES_PRMBL BIT(22) +/* bit21: 1:read,0:write */ +#define ALX_MDIO_OP_READ BIT(21) +#define ALX_MDIO_REG_MASK 0x1FUL +#define ALX_MDIO_REG_SHIFT 16 +#define ALX_MDIO_DATA_MASK 0xFFFFUL +#define ALX_MDIO_DATA_SHIFT 0 +#define ALX_MDIO_MAX_AC_TO 120 + +#define ALX_MDIO_EXTN 0x1448 +#define ALX_MDIO_EXTN_PORTAD_MASK 0x1FUL +#define ALX_MDIO_EXTN_PORTAD_SHIFT 21 +#define ALX_MDIO_EXTN_DEVAD_MASK 0x1FUL +#define ALX_MDIO_EXTN_DEVAD_SHIFT 16 +#define ALX_MDIO_EXTN_REG_MASK 0xFFFFUL +#define ALX_MDIO_EXTN_REG_SHIFT 0 + +#define ALX_PHY_STS 0x1418 +#define ALX_PHY_STS_LPW BIT(31) +#define ALX_PHY_STS_LPI BIT(30) +#define ALX_PHY_STS_PWON_STRIP_MASK 0xFFFUL +#define ALX_PHY_STS_PWON_STRIP_SHIFT 16 + +#define ALX_PHY_STS_DUPLEX BIT(3) +#define ALX_PHY_STS_LINKUP BIT(2) +#define ALX_PHY_STS_SPEED_MASK 0x3UL +#define ALX_PHY_STS_SPEED_SHIFT 0 +#define ALX_PHY_STS_SPEED_1000M 2 +#define ALX_PHY_STS_SPEED_100M 1 +#define ALX_PHY_STS_SPEED_10M 0 + +#define ALX_BIST0 0x141C +#define ALX_BIST0_COL_MASK 0x3FUL +#define ALX_BIST0_COL_SHIFT 24 +#define ALX_BIST0_ROW_MASK 0xFFFUL +#define ALX_BIST0_ROW_SHIFT 12 +#define ALX_BIST0_STEP_MASK 0xFUL +#define ALX_BIST0_STEP_SHIFT 8 +#define ALX_BIST0_PATTERN_MASK 0x7UL +#define ALX_BIST0_PATTERN_SHIFT 4 +#define ALX_BIST0_CRIT BIT(3) +#define ALX_BIST0_FIXED BIT(2) +#define ALX_BIST0_FAIL BIT(1) +#define ALX_BIST0_START BIT(0) + +#define ALX_BIST1 0x1420 +#define ALX_BIST1_COL_MASK 0x3FUL +#define ALX_BIST1_COL_SHIFT 24 +#define ALX_BIST1_ROW_MASK 0xFFFUL +#define ALX_BIST1_ROW_SHIFT 12 +#define ALX_BIST1_STEP_MASK 0xFUL +#define ALX_BIST1_STEP_SHIFT 8 +#define ALX_BIST1_PATTERN_MASK 0x7UL +#define ALX_BIST1_PATTERN_SHIFT 4 +#define ALX_BIST1_CRIT BIT(3) +#define ALX_BIST1_FIXED BIT(2) +#define ALX_BIST1_FAIL BIT(1) +#define ALX_BIST1_START BIT(0) + +#define ALX_SERDES 0x1424 +#define ALX_SERDES_PHYCLK_SLWDWN BIT(18) +#define ALX_SERDES_MACCLK_SLWDWN BIT(17) +#define ALX_SERDES_SELFB_PLL_MASK 0x3UL +#define ALX_SERDES_SELFB_PLL_SHIFT 14 +/* bit13: 1:gtx_clk, 0:25M */ +#define ALX_SERDES_PHYCLK_SEL_GTX BIT(13) +/* bit12: 1:serdes,0:25M */ +#define ALX_SERDES_PCIECLK_SEL_SRDS BIT(12) +#define ALX_SERDES_BUFS_RX_EN BIT(11) +#define ALX_SERDES_PD_RX BIT(10) +#define ALX_SERDES_PLL_EN BIT(9) +#define ALX_SERDES_EN BIT(8) +/* bit6: 0:state-machine,1:csr */ +#define ALX_SERDES_SELFB_PLL_SEL_CSR BIT(6) +#define ALX_SERDES_SELFB_PLL_CSR_MASK 0x3UL +#define ALX_SERDES_SELFB_PLL_CSR_SHIFT 4 +/* 4-12% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_4 3 +/* 0-4% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_0 2 +/* 12-18% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_12 1 +/* 18-25% OV-CLK */ +#define ALX_SERDES_SELFB_PLL_CSR_18 0 +#define ALX_SERDES_VCO_SLOW BIT(3) +#define ALX_SERDES_VCO_FAST BIT(2) +#define ALX_SERDES_LOCKDCT_EN BIT(1) +#define ALX_SERDES_LOCKDCTED BIT(0) + +#define ALX_LED_CTRL 0x1428 +#define ALX_LED_CTRL_PATMAP2_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP2_SHIFT 8 +#define ALX_LED_CTRL_PATMAP1_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP1_SHIFT 6 +#define ALX_LED_CTRL_PATMAP0_MASK 0x3UL +#define ALX_LED_CTRL_PATMAP0_SHIFT 4 +#define ALX_LED_CTRL_D3_MODE_MASK 0x3UL +#define ALX_LED_CTRL_D3_MODE_SHIFT 2 +#define ALX_LED_CTRL_D3_MODE_NORMAL 0 +#define ALX_LED_CTRL_D3_MODE_WOL_DIS 1 +#define ALX_LED_CTRL_D3_MODE_WOL_ANY 2 +#define ALX_LED_CTRL_D3_MODE_WOL_EN 3 +#define ALX_LED_CTRL_DUTY_CYCL_MASK 0x3UL +#define ALX_LED_CTRL_DUTY_CYCL_SHIFT 0 +/* 50% */ +#define ALX_LED_CTRL_DUTY_CYCL_50 0 +/* 12.5% */ +#define ALX_LED_CTRL_DUTY_CYCL_125 1 +/* 25% */ +#define ALX_LED_CTRL_DUTY_CYCL_25 2 +/* 75% */ +#define ALX_LED_CTRL_DUTY_CYCL_75 3 + +#define ALX_LED_PATN 0x142C +#define ALX_LED_PATN1_MASK 0xFFFFUL +#define ALX_LED_PATN1_SHIFT 16 +#define ALX_LED_PATN0_MASK 0xFFFFUL +#define ALX_LED_PATN0_SHIFT 0 + +#define ALX_LED_PATN2 0x1430 +#define ALX_LED_PATN2_MASK 0xFFFFUL +#define ALX_LED_PATN2_SHIFT 0 + +#define ALX_SYSALV 0x1434 +#define ALX_SYSALV_FLAG BIT(0) + +#define ALX_PCIERR_INST 0x1438 +#define ALX_PCIERR_INST_TX_RATE_MASK 0xFUL +#define ALX_PCIERR_INST_TX_RATE_SHIFT 4 +#define ALX_PCIERR_INST_RX_RATE_MASK 0xFUL +#define ALX_PCIERR_INST_RX_RATE_SHIFT 0 + +#define ALX_LPI_DECISN_TIMER 0x143C + +#define ALX_LPI_CTRL 0x1440 +#define ALX_LPI_CTRL_CHK_DA BIT(31) +#define ALX_LPI_CTRL_ENH_TO_MASK 0x1FFFUL +#define ALX_LPI_CTRL_ENH_TO_SHIFT 12 +#define ALX_LPI_CTRL_ENH_TH_MASK 0x1FUL +#define ALX_LPI_CTRL_ENH_TH_SHIFT 6 +#define ALX_LPI_CTRL_ENH_EN BIT(5) +#define ALX_LPI_CTRL_CHK_RX BIT(4) +#define ALX_LPI_CTRL_CHK_STATE BIT(3) +#define ALX_LPI_CTRL_GMII BIT(2) +#define ALX_LPI_CTRL_TO_PHY BIT(1) +#define ALX_LPI_CTRL_EN BIT(0) + +#define ALX_LPI_WAIT 0x1444 +#define ALX_LPI_WAIT_TIMER_MASK 0xFFFFUL +#define ALX_LPI_WAIT_TIMER_SHIFT 0 + +/* heart-beat, for swoi/cifs */ +#define ALX_HRTBT_VLAN 0x1450 +#define ALX_HRTBT_VLANID_MASK 0xFFFFUL +#define ALX_HRRBT_VLANID_SHIFT 0 + +#define ALX_HRTBT_CTRL 0x1454 +#define ALX_HRTBT_CTRL_EN BIT(31) +#define ALX_HRTBT_CTRL_PERIOD_MASK 0x3FUL +#define ALX_HRTBT_CTRL_PERIOD_SHIFT 25 +#define ALX_HRTBT_CTRL_HASVLAN BIT(24) +#define ALX_HRTBT_CTRL_HDRADDR_MASK 0xFFFUL +#define ALX_HRTBT_CTRL_HDRADDR_SHIFT 12 +#define ALX_HRTBT_CTRL_HDRADDRB0_MASK 0x7FFUL +#define ALX_HRTBT_CTRL_HDRADDRB0_SHIFT 13 +#define ALX_HRTBT_CTRL_PKT_FRAG BIT(12) +#define ALX_HRTBT_CTRL_PKTLEN_MASK 0xFFFUL +#define ALX_HRTBT_CTRL_PKTLEN_SHIFT 0 + +/* for B0+, bit[13..] for C0+ */ +#define ALX_HRTBT_EXT_CTRL 0x1AD0 +#define L1F_HRTBT_EXT_CTRL_PERIOD_HIGH_MASK 0x3FUL +#define L1F_HRTBT_EXT_CTRL_PERIOD_HIGH_SHIFT 24 +#define L1F_HRTBT_EXT_CTRL_SWOI_STARTUP_PKT_EN BIT(23) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_FRAGMENTED BIT(22) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_FRAGMENTED BIT(21) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_KEEPALIVE_EN BIT(20) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_HAS_VLAN BIT(19) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_IS_8023 BIT(18) +#define L1F_HRTBT_EXT_CTRL_IOAC_1_IS_IPV6 BIT(17) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_KEEPALIVE_EN BIT(16) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_HAS_VLAN BIT(15) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_IS_8023 BIT(14) +#define L1F_HRTBT_EXT_CTRL_IOAC_2_IS_IPV6 BIT(13) +#define ALX_HRTBT_EXT_CTRL_NS_EN BIT(12) +#define ALX_HRTBT_EXT_CTRL_FRAG_LEN_MASK 0xFFUL +#define ALX_HRTBT_EXT_CTRL_FRAG_LEN_SHIFT 4 +#define ALX_HRTBT_EXT_CTRL_IS_8023 BIT(3) +#define ALX_HRTBT_EXT_CTRL_IS_IPV6 BIT(2) +#define ALX_HRTBT_EXT_CTRL_WAKEUP_EN BIT(1) +#define ALX_HRTBT_EXT_CTRL_ARP_EN BIT(0) + +#define ALX_HRTBT_REM_IPV4_ADDR 0x1AD4 +#define ALX_HRTBT_HOST_IPV4_ADDR 0x1478 +#define ALX_HRTBT_REM_IPV6_ADDR3 0x1AD8 +#define ALX_HRTBT_REM_IPV6_ADDR2 0x1ADC +#define ALX_HRTBT_REM_IPV6_ADDR1 0x1AE0 +#define ALX_HRTBT_REM_IPV6_ADDR0 0x1AE4 + +/* 1B8C ~ 1B94 for C0+ */ +#define ALX_SWOI_ACER_CTRL 0x1B8C +#define ALX_SWOI_ORIG_ACK_NAK_EN BIT(20) +#define ALX_SWOI_ORIG_ACK_NAK_PKT_LEN_MASK 0XFFUL +#define ALX_SWOI_ORIG_ACK_NAK_PKT_LEN_SHIFT 12 +#define ALX_SWOI_ORIG_ACK_ADDR_MASK 0XFFFUL +#define ALX_SWOI_ORIG_ACK_ADDR_SHIFT 0 + +#define ALX_SWOI_IOAC_CTRL_2 0x1B90 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_FRAG_LEN_MASK 0xFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_FRAG_LEN_SHIFT 24 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_PKT_LEN_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_PKT_LEN_SHIFT 12 +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_HDR_ADDR_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_2_SWOI_1_HDR_ADDR_SHIFT 0 + +#define ALX_SWOI_IOAC_CTRL_3 0x1B94 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_FRAG_LEN_MASK 0xFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_FRAG_LEN_SHIFT 24 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_PKT_LEN_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_PKT_LEN_SHIFT 12 +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_HDR_ADDR_MASK 0xFFFUL +#define ALX_SWOI_IOAC_CTRL_3_SWOI_2_HDR_ADDR_SHIFT 0 + +/*SWOI_HOST_IPV6_ADDR reuse reg1a60-1a6c, 1a70-1a7c, 1aa0-1aac, 1ab0-1abc.*/ +#define ALX_HRTBT_WAKEUP_PORT 0x1AE8 +#define ALX_HRTBT_WAKEUP_PORT_SRC_MASK 0xFFFFUL +#define ALX_HRTBT_WAKEUP_PORT_SRC_SHIFT 16 +#define ALX_HRTBT_WAKEUP_PORT_DEST_MASK 0xFFFFUL +#define ALX_HRTBT_WAKEUP_PORT_DEST_SHIFT 0 + +#define ALX_HRTBT_WAKEUP_DATA7 0x1AEC +#define ALX_HRTBT_WAKEUP_DATA6 0x1AF0 +#define ALX_HRTBT_WAKEUP_DATA5 0x1AF4 +#define ALX_HRTBT_WAKEUP_DATA4 0x1AF8 +#define ALX_HRTBT_WAKEUP_DATA3 0x1AFC +#define ALX_HRTBT_WAKEUP_DATA2 0x1B80 +#define ALX_HRTBT_WAKEUP_DATA1 0x1B84 +#define ALX_HRTBT_WAKEUP_DATA0 0x1B88 + +#define ALX_RXPARSE 0x1458 +#define ALX_RXPARSE_FLT6_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT6_L4_SHIFT 30 +#define ALX_RXPARSE_FLT6_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT6_L3_SHIFT 28 +#define ALX_RXPARSE_FLT5_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT5_L4_SHIFT 26 +#define ALX_RXPARSE_FLT5_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT5_L3_SHIFT 24 +#define ALX_RXPARSE_FLT4_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT4_L4_SHIFT 22 +#define ALX_RXPARSE_FLT4_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT4_L3_SHIFT 20 +#define ALX_RXPARSE_FLT3_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT3_L4_SHIFT 18 +#define ALX_RXPARSE_FLT3_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT3_L3_SHIFT 16 +#define ALX_RXPARSE_FLT2_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT2_L4_SHIFT 14 +#define ALX_RXPARSE_FLT2_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT2_L3_SHIFT 12 +#define ALX_RXPARSE_FLT1_L4_MASK 0x3UL +#define ALX_RXPARSE_FLT1_L4_SHIFT 10 +#define ALX_RXPARSE_FLT1_L3_MASK 0x3UL +#define ALX_RXPARSE_FLT1_L3_SHIFT 8 +#define ALX_RXPARSE_FLT6_EN BIT(5) +#define ALX_RXPARSE_FLT5_EN BIT(4) +#define ALX_RXPARSE_FLT4_EN BIT(3) +#define ALX_RXPARSE_FLT3_EN BIT(2) +#define ALX_RXPARSE_FLT2_EN BIT(1) +#define ALX_RXPARSE_FLT1_EN BIT(0) +#define ALX_RXPARSE_FLT_L4_UDP 0 +#define ALX_RXPARSE_FLT_L4_TCP 1 +#define ALX_RXPARSE_FLT_L4_BOTH 2 +#define ALX_RXPARSE_FLT_L4_NONE 3 +#define ALX_RXPARSE_FLT_L3_IPV6 0 +#define ALX_RXPARSE_FLT_L3_IPV4 1 +#define ALX_RXPARSE_FLT_L3_BOTH 2 + +/* Terodo support */ +#define ALX_TRD_CTRL 0x145C +#define ALX_TRD_CTRL_EN BIT(31) +#define ALX_TRD_CTRL_BUBBLE_WAKE_EN BIT(30) +#define ALX_TRD_CTRL_PREFIX_CMP_HW BIT(28) +#define ALX_TRD_CTRL_RSHDR_ADDR_MASK 0xFFFUL +#define ALX_TRD_CTRL_RSHDR_ADDR_SHIFT 16 +#define ALX_TRD_CTRL_SINTV_MAX_MASK 0xFFUL +#define ALX_TRD_CTRL_SINTV_MAX_SHIFT 8 +#define ALX_TRD_CTRL_SINTV_MIN_MASK 0xFFUL +#define ALX_TRD_CTRL_SINTV_MIN_SHIFT 0 + +#define ALX_TRD_RS 0x1460 +#define ALX_TRD_RS_SZ_MASK 0xFFFUL +#define ALX_TRD_RS_SZ_SHIFT 20 +#define ALX_TRD_RS_NONCE_OFS_MASK 0xFFFUL +#define ALX_TRD_RS_NONCE_OFS_SHIFT 8 +#define ALX_TRD_RS_SEQ_OFS_MASK 0xFFUL +#define ALX_TRD_RS_SEQ_OFS_SHIFT 0 + +#define ALX_TRD_SRV_IP4 0x1464 + +#define ALX_TRD_CLNT_EXTNL_IP4 0x1468 + +#define ALX_TRD_PORT 0x146C +#define ALX_TRD_PORT_CLNT_EXTNL_MASK 0xFFFFUL +#define ALX_TRD_PORT_CLNT_EXTNL_SHIFT 16 +#define ALX_TRD_PORT_SRV_MASK 0xFFFFUL +#define ALX_TRD_PORT_SRV_SHIFT 0 + +#define ALX_TRD_PREFIX 0x1470 + +#define ALX_TRD_BUBBLE_DA_IP4 0x1478 + +#define ALX_TRD_BUBBLE_DA_PORT 0x147C + +/* for B0 */ +#define ALX_IDLE_DECISN_TIMER 0x1474 +/* 1ms */ +#define ALX_IDLE_DECISN_TIMER_DEF 0x400 + + +#define ALX_MAC_CTRL 0x1480 +#define ALX_MAC_CTRL_FAST_PAUSE BIT(31) +#define ALX_MAC_CTRL_WOLSPED_SWEN BIT(30) +/* bit29: 1:legacy(hi5b), 0:marvl(lo5b)*/ +#define ALX_MAC_CTRL_MHASH_ALG_HI5B BIT(29) +#define ALX_MAC_CTRL_SPAUSE_EN BIT(28) +#define ALX_MAC_CTRL_DBG_EN BIT(27) +#define ALX_MAC_CTRL_BRD_EN BIT(26) +#define ALX_MAC_CTRL_MULTIALL_EN BIT(25) +#define ALX_MAC_CTRL_RX_XSUM_EN BIT(24) +#define ALX_MAC_CTRL_THUGE BIT(23) +#define ALX_MAC_CTRL_MBOF BIT(22) +#define ALX_MAC_CTRL_SPEED_MASK 0x3UL +#define ALX_MAC_CTRL_SPEED_SHIFT 20 +#define ALX_MAC_CTRL_SPEED_10_100 1 +#define ALX_MAC_CTRL_SPEED_1000 2 +#define ALX_MAC_CTRL_SIMR BIT(19) +#define ALX_MAC_CTRL_SSTCT BIT(17) +#define ALX_MAC_CTRL_TPAUSE BIT(16) +#define ALX_MAC_CTRL_PROMISC_EN BIT(15) +#define ALX_MAC_CTRL_VLANSTRIP BIT(14) +#define ALX_MAC_CTRL_PRMBLEN_MASK 0xFUL +#define ALX_MAC_CTRL_PRMBLEN_SHIFT 10 +#define ALX_MAC_CTRL_RHUGE_EN BIT(9) +#define ALX_MAC_CTRL_FLCHK BIT(8) +#define ALX_MAC_CTRL_PCRCE BIT(7) +#define ALX_MAC_CTRL_CRCE BIT(6) +#define ALX_MAC_CTRL_FULLD BIT(5) +#define ALX_MAC_CTRL_LPBACK_EN BIT(4) +#define ALX_MAC_CTRL_RXFC_EN BIT(3) +#define ALX_MAC_CTRL_TXFC_EN BIT(2) +#define ALX_MAC_CTRL_RX_EN BIT(1) +#define ALX_MAC_CTRL_TX_EN BIT(0) + +#define ALX_GAP 0x1484 +#define ALX_GAP_IPGR2_MASK 0x7FUL +#define ALX_GAP_IPGR2_SHIFT 24 +#define ALX_GAP_IPGR1_MASK 0x7FUL +#define ALX_GAP_IPGR1_SHIFT 16 +#define ALX_GAP_MIN_IFG_MASK 0xFFUL +#define ALX_GAP_MIN_IFG_SHIFT 8 +#define ALX_GAP_IPGT_MASK 0x7FUL +#define ALX_GAP_IPGT_SHIFT 0 + +#define ALX_STAD0 0x1488 +#define ALX_STAD1 0x148C + +#define ALX_HASH_TBL0 0x1490 +#define ALX_HASH_TBL1 0x1494 + +#define ALX_HALFD 0x1498 +#define ALX_HALFD_JAM_IPG_MASK 0xFUL +#define ALX_HALFD_JAM_IPG_SHIFT 24 +#define ALX_HALFD_ABEBT_MASK 0xFUL +#define ALX_HALFD_ABEBT_SHIFT 20 +#define ALX_HALFD_ABEBE BIT(19) +#define ALX_HALFD_BPNB BIT(18) +#define ALX_HALFD_NOBO BIT(17) +#define ALX_HALFD_EDXSDFR BIT(16) +#define ALX_HALFD_RETRY_MASK 0xFUL +#define ALX_HALFD_RETRY_SHIFT 12 +#define ALX_HALFD_LCOL_MASK 0x3FFUL +#define ALX_HALFD_LCOL_SHIFT 0 + +#define ALX_MTU 0x149C +#define ALX_MTU_JUMBO_TH 1514 +#define ALX_MTU_STD_ALGN 1536 +#define ALX_MTU_MIN 64 + +#define ALX_SRAM0 0x1500 +#define ALX_SRAM_RFD_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RFD_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_RFD_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RFD_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM1 0x1510 +#define ALX_SRAM_RFD_LEN_MASK 0xFFFUL +#define ALX_SRAM_RFD_LEN_SHIFT 0 + +#define ALX_SRAM2 0x1518 +#define ALX_SRAM_TRD_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TRD_TAIL_ADDR_SHIFT 16 +#define ALX_SRMA_TRD_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TRD_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM3 0x151C +#define ALX_SRAM_TRD_LEN_MASK 0xFFFUL +#define ALX_SRAM_TRD_LEN_SHIFT 0 + +#define ALX_SRAM4 0x1520 +#define ALX_SRAM_RXF_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RXF_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_RXF_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_RXF_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM5 0x1524 +#define ALX_SRAM_RXF_LEN_MASK 0xFFFUL +#define ALX_SRAM_RXF_LEN_SHIFT 0 +#define ALX_SRAM_RXF_LEN_8K (8*1024) + +#define ALX_SRAM6 0x1528 +#define ALX_SRAM_TXF_TAIL_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TXF_TAIL_ADDR_SHIFT 16 +#define ALX_SRAM_TXF_HEAD_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TXF_HEAD_ADDR_SHIFT 0 + +#define ALX_SRAM7 0x152C +#define ALX_SRAM_TXF_LEN_MASK 0xFFFUL +#define ALX_SRAM_TXF_LEN_SHIFT 0 + +#define ALX_SRAM8 0x1530 +#define ALX_SRAM_PATTERN_ADDR_MASK 0xFFFUL +#define ALX_SRAM_PATTERN_ADDR_SHIFT 16 +#define ALX_SRAM_TSO_ADDR_MASK 0xFFFUL +#define ALX_SRAM_TSO_ADDR_SHIFT 0 + +#define ALX_SRAM9 0x1534 +#define ALX_SRAM_LOAD_PTR BIT(0) + +#define ALX_RX_BASE_ADDR_HI 0x1540 + +#define ALX_TX_BASE_ADDR_HI 0x1544 + +#define ALX_RFD_ADDR_LO 0x1550 +#define ALX_RFD_RING_SZ 0x1560 +#define ALX_RFD_BUF_SZ 0x1564 +#define ALX_RFD_BUF_SZ_MASK 0xFFFFUL +#define ALX_RFD_BUF_SZ_SHIFT 0 + +#define ALX_RRD_ADDR_LO 0x1568 +#define ALX_RRD_RING_SZ 0x1578 +#define ALX_RRD_RING_SZ_MASK 0xFFFUL +#define ALX_RRD_RING_SZ_SHIFT 0 + +/* pri3: highest, pri0: lowest */ +#define ALX_TPD_PRI3_ADDR_LO 0x14E4 +#define ALX_TPD_PRI2_ADDR_LO 0x14E0 +#define ALX_TPD_PRI1_ADDR_LO 0x157C +#define ALX_TPD_PRI0_ADDR_LO 0x1580 + +/* producer index is 16bit */ +#define ALX_TPD_PRI3_PIDX 0x1618 +#define ALX_TPD_PRI2_PIDX 0x161A +#define ALX_TPD_PRI1_PIDX 0x15F0 +#define ALX_TPD_PRI0_PIDX 0x15F2 + +/* consumer index is 16bit */ +#define ALX_TPD_PRI3_CIDX 0x161C +#define ALX_TPD_PRI2_CIDX 0x161E +#define ALX_TPD_PRI1_CIDX 0x15F4 +#define ALX_TPD_PRI0_CIDX 0x15F6 + +#define ALX_TPD_RING_SZ 0x1584 +#define ALX_TPD_RING_SZ_MASK 0xFFFFUL +#define ALX_TPD_RING_SZ_SHIFT 0 + +#define ALX_CMB_ADDR_LO 0x1588 + +#define ALX_TXQ0 0x1590 +#define ALX_TXQ0_TXF_BURST_PREF_MASK 0xFFFFUL +#define ALX_TXQ0_TXF_BURST_PREF_SHIFT 16 +#define ALX_TXQ_TXF_BURST_PREF_DEF 0x200 +#define ALX_TXQ0_PEDING_CLR BIT(8) +#define ALX_TXQ0_LSO_8023_EN BIT(7) +#define ALX_TXQ0_MODE_ENHANCE BIT(6) +#define ALX_TXQ0_EN BIT(5) +#define ALX_TXQ0_SUPT_IPOPT BIT(4) +#define ALX_TXQ0_TPD_BURSTPREF_MASK 0xFUL +#define ALX_TXQ0_TPD_BURSTPREF_SHIFT 0 +#define ALX_TXQ_TPD_BURSTPREF_DEF 5 + +#define ALX_TXQ1 0x1594 +/* bit11: drop large packet, len > (rfd buf) */ +#define ALX_TXQ1_ERRLGPKT_DROP_EN BIT(11) +/* bit[9:0]: 8bytes unit */ +#define ALX_TXQ1_JUMBO_TSOTHR_MASK 0x7FFUL +#define ALX_TXQ1_JUMBO_TSOTHR_SHIFT 0 +#define ALX_TXQ1_JUMBO_TSO_TH (7*1024) + +/* L1 entrance control */ +#define ALX_TXQ2 0x1598 +#define ALX_TXQ2_BURST_EN BIT(31) +#define ALX_TXQ2_BURST_HI_WM_MASK 0xFFFUL +#define ALX_TXQ2_BURST_HI_WM_SHIFT 16 +#define ALX_TXQ2_BURST_LO_WM_MASK 0xFFFUL +#define ALX_TXQ2_BURST_LO_WM_SHIFT 0 + +#define ALX_RXQ0 0x15A0 +#define ALX_RXQ0_EN BIT(31) +#define ALX_RXQ0_CUT_THRU_EN BIT(30) +#define ALX_RXQ0_RSS_HASH_EN BIT(29) +/* bit28: 0:goto Q0, 1:as table */ +#define ALX_RXQ0_NON_IP_QTBL BIT(28) +#define ALX_RXQ0_RSS_MODE_MASK 0x3UL +#define ALX_RXQ0_RSS_MODE_SHIFT 26 +#define ALX_RXQ0_RSS_MODE_DIS 0 +#define ALX_RXQ0_RSS_MODE_SQSI 1 +#define ALX_RXQ0_RSS_MODE_MQSI 2 +#define ALX_RXQ0_RSS_MODE_MQMI 3 +#define ALX_RXQ0_NUM_RFD_PREF_MASK 0x3FUL +#define ALX_RXQ0_NUM_RFD_PREF_SHIFT 20 +#define ALX_RXQ0_NUM_RFD_PREF_DEF 8 +#define ALX_RXQ0_IDT_TBL_SIZE_MASK 0x1FFUL +#define ALX_RXQ0_IDT_TBL_SIZE_SHIFT 8 +#define ALX_RXQ0_IDT_TBL_SIZE_DEF 0x100 +#define ALX_RXQ0_IPV6_PARSE_EN BIT(7) +#define ALX_RXQ0_RSS_HSTYP_MASK 0xFUL +#define ALX_RXQ0_RSS_HSTYP_SHIFT 2 +#define ALX_RXQ0_RSS_HSTYP_IPV6_TCP_EN BIT(5) +#define ALX_RXQ0_RSS_HSTYP_IPV6_EN BIT(4) +#define ALX_RXQ0_RSS_HSTYP_IPV4_TCP_EN BIT(3) +#define ALX_RXQ0_RSS_HSTYP_IPV4_EN BIT(2) +#define ALX_RXQ0_RSS_HSTYP_ALL (\ + ALX_RXQ0_RSS_HSTYP_IPV6_TCP_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV4_TCP_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV6_EN |\ + ALX_RXQ0_RSS_HSTYP_IPV4_EN) +#define ALX_RXQ0_ASPM_THRESH_MASK 0x3UL +#define ALX_RXQ0_ASPM_THRESH_SHIFT 0 +#define ALX_RXQ0_ASPM_THRESH_NO 0 +#define ALX_RXQ0_ASPM_THRESH_1M 1 +#define ALX_RXQ0_ASPM_THRESH_10M 2 +#define ALX_RXQ0_ASPM_THRESH_100M 3 + +#define ALX_RXQ1 0x15A4 +/* 32bytes unit */ +#define ALX_RXQ1_JUMBO_LKAH_MASK 0xFUL +#define ALX_RXQ1_JUMBO_LKAH_SHIFT 12 +#define ALX_RXQ1_RFD_PREF_DOWN_MASK 0x3FUL +#define ALX_RXQ1_RFD_PREF_DOWN_SHIFT 6 +#define ALX_RXQ1_RFD_PREF_UP_MASK 0x3FUL +#define ALX_RXQ1_RFD_PREF_UP_SHIFT 0 + +#define ALX_RXQ2 0x15A8 +/* XOFF: USED SRAM LOWER THAN IT, THEN NOTIFY THE PEER TO SEND AGAIN */ +#define ALX_RXQ2_RXF_XOFF_THRESH_MASK 0xFFFUL +#define ALX_RXQ2_RXF_XOFF_THRESH_SHIFT 16 +#define ALX_RXQ2_RXF_XON_THRESH_MASK 0xFFFUL +#define ALX_RXQ2_RXF_XON_THRESH_SHIFT 0 +/* Size = tx-packet(1522) + IPG(12) + SOF(8) + 64(Pause) + IPG(12) + SOF(8) + + * rx-packet(1522) + delay-of-link(64) + * = 3212. + */ +#define ALX_RXQ2_RXF_FLOW_CTRL_RSVD 3212 + +#define ALX_RXQ3 0x15AC +#define ALX_RXQ3_RXD_TIMER_MASK 0x7FFFUL +#define ALX_RXQ3_RXD_TIMER_SHIFT 16 +/* 8bytes unit */ +#define ALX_RXQ3_RXD_THRESH_MASK 0xFFFUL +#define ALX_RXQ3_RXD_THRESH_SHIFT 0 + +#define ALX_DMA 0x15C0 +#define ALX_DMA_SMB_NOW BIT(31) +#define ALX_DMA_WPEND_CLR BIT(30) +#define ALX_DMA_RPEND_CLR BIT(29) +#define ALX_DMA_WSRAM_RDCTRL BIT(28) +#define ALX_DMA_RCHNL_SEL_MASK 0x3UL +#define ALX_DMA_RCHNL_SEL_SHIFT 26 +#define ALX_DMA_RCHNL_SEL_1 0 +#define ALX_DMA_RCHNL_SEL_2 1 +#define ALX_DMA_RCHNL_SEL_3 2 +#define ALX_DMA_RCHNL_SEL_4 3 +#define ALX_DMA_SMB_EN BIT(21) +#define ALX_DMA_WDLY_CNT_MASK 0xFUL +#define ALX_DMA_WDLY_CNT_SHIFT 16 +#define ALX_DMA_WDLY_CNT_DEF 4 +#define ALX_DMA_RDLY_CNT_MASK 0x1FUL +#define ALX_DMA_RDLY_CNT_SHIFT 11 +#define ALX_DMA_RDLY_CNT_DEF 15 +/* bit10: 0:tpd with pri, 1: data */ +#define ALX_DMA_RREQ_PRI_DATA BIT(10) +#define ALX_DMA_WREQ_BLEN_MASK 0x7UL +#define ALX_DMA_WREQ_BLEN_SHIFT 7 +#define ALX_DMA_RREQ_BLEN_MASK 0x7UL +#define ALX_DMA_RREQ_BLEN_SHIFT 4 +#define ALX_DMA_PENDING_AUTO_RST BIT(3) +#define ALX_DMA_RORDER_MODE_MASK 0x7UL +#define ALX_DMA_RORDER_MODE_SHIFT 0 +#define ALX_DMA_RORDER_MODE_OUT 4 +#define ALX_DMA_RORDER_MODE_ENHANCE 2 +#define ALX_DMA_RORDER_MODE_IN 1 + +#define ALX_WOL0 0x14A0 +#define ALX_WOL0_PT7_MATCH BIT(31) +#define ALX_WOL0_PT6_MATCH BIT(30) +#define ALX_WOL0_PT5_MATCH BIT(29) +#define ALX_WOL0_PT4_MATCH BIT(28) +#define ALX_WOL0_PT3_MATCH BIT(27) +#define ALX_WOL0_PT2_MATCH BIT(26) +#define ALX_WOL0_PT1_MATCH BIT(25) +#define ALX_WOL0_PT0_MATCH BIT(24) +#define ALX_WOL0_PT7_EN BIT(23) +#define ALX_WOL0_PT6_EN BIT(22) +#define ALX_WOL0_PT5_EN BIT(21) +#define ALX_WOL0_PT4_EN BIT(20) +#define ALX_WOL0_PT3_EN BIT(19) +#define ALX_WOL0_PT2_EN BIT(18) +#define ALX_WOL0_PT1_EN BIT(17) +#define ALX_WOL0_PT0_EN BIT(16) +#define ALX_WOL0_IPV4_SYNC_EVT BIT(14) +#define ALX_WOL0_IPV6_SYNC_EVT BIT(13) +#define ALX_WOL0_LINK_EVT BIT(10) +#define ALX_WOL0_MAGIC_EVT BIT(9) +#define ALX_WOL0_PATTERN_EVT BIT(8) +#define ALX_WOL0_SWOI_EVT BIT(7) +#define ALX_WOL0_OOB_EN BIT(6) +#define ALX_WOL0_PME_LINK BIT(5) +#define ALX_WOL0_LINK_EN BIT(4) +#define ALX_WOL0_PME_MAGIC_EN BIT(3) +#define ALX_WOL0_MAGIC_EN BIT(2) +#define ALX_WOL0_PME_PATTERN_EN BIT(1) +#define ALX_WOL0_PATTERN_EN BIT(0) + +#define ALX_WOL1 0x14A4 +#define ALX_WOL1_PT3_LEN_MASK 0xFFUL +#define ALX_WOL1_PT3_LEN_SHIFT 24 +#define ALX_WOL1_PT2_LEN_MASK 0xFFUL +#define ALX_WOL1_PT2_LEN_SHIFT 16 +#define ALX_WOL1_PT1_LEN_MASK 0xFFUL +#define ALX_WOL1_PT1_LEN_SHIFT 8 +#define ALX_WOL1_PT0_LEN_MASK 0xFFUL +#define ALX_WOL1_PT0_LEN_SHIFT 0 + +#define ALX_WOL2 0x14A8 +#define ALX_WOL2_PT7_LEN_MASK 0xFFUL +#define ALX_WOL2_PT7_LEN_SHIFT 24 +#define ALX_WOL2_PT6_LEN_MASK 0xFFUL +#define ALX_WOL2_PT6_LEN_SHIFT 16 +#define ALX_WOL2_PT5_LEN_MASK 0xFFUL +#define ALX_WOL2_PT5_LEN_SHIFT 8 +#define ALX_WOL2_PT4_LEN_MASK 0xFFUL +#define ALX_WOL2_PT4_LEN_SHIFT 0 + +#define ALX_RFD_PIDX 0x15E0 +#define ALX_RFD_PIDX_MASK 0xFFFUL +#define ALX_RFD_PIDX_SHIFT 0 + +#define ALX_RFD_CIDX 0x15F8 +#define ALX_RFD_CIDX_MASK 0xFFFUL +#define ALX_RFD_CIDX_SHIFT 0 + +/* MIB */ +#define ALX_MIB_BASE 0x1700 +#define ALX_MIB_RX_OK (ALX_MIB_BASE + 0) +#define ALX_MIB_RX_BC (ALX_MIB_BASE + 4) +#define ALX_MIB_RX_MC (ALX_MIB_BASE + 8) +#define ALX_MIB_RX_PAUSE (ALX_MIB_BASE + 12) +#define ALX_MIB_RX_CTRL (ALX_MIB_BASE + 16) +#define ALX_MIB_RX_FCS (ALX_MIB_BASE + 20) +#define ALX_MIB_RX_LENERR (ALX_MIB_BASE + 24) +#define ALX_MIB_RX_BYTCNT (ALX_MIB_BASE + 28) +#define ALX_MIB_RX_RUNT (ALX_MIB_BASE + 32) +#define ALX_MIB_RX_FRAGMENT (ALX_MIB_BASE + 36) +#define ALX_MIB_RX_64B (ALX_MIB_BASE + 40) +#define ALX_MIB_RX_127B (ALX_MIB_BASE + 44) +#define ALX_MIB_RX_255B (ALX_MIB_BASE + 48) +#define ALX_MIB_RX_511B (ALX_MIB_BASE + 52) +#define ALX_MIB_RX_1023B (ALX_MIB_BASE + 56) +#define ALX_MIB_RX_1518B (ALX_MIB_BASE + 60) +#define ALX_MIB_RX_SZMAX (ALX_MIB_BASE + 64) +#define ALX_MIB_RX_OVSZ (ALX_MIB_BASE + 68) +#define ALX_MIB_RXF_OV (ALX_MIB_BASE + 72) +#define ALX_MIB_RRD_OV (ALX_MIB_BASE + 76) +#define ALX_MIB_RX_ALIGN (ALX_MIB_BASE + 80) +#define ALX_MIB_RX_BCCNT (ALX_MIB_BASE + 84) +#define ALX_MIB_RX_MCCNT (ALX_MIB_BASE + 88) +#define ALX_MIB_RX_ERRADDR (ALX_MIB_BASE + 92) +#define ALX_MIB_TX_OK (ALX_MIB_BASE + 96) +#define ALX_MIB_TX_BC (ALX_MIB_BASE + 100) +#define ALX_MIB_TX_MC (ALX_MIB_BASE + 104) +#define ALX_MIB_TX_PAUSE (ALX_MIB_BASE + 108) +#define ALX_MIB_TX_EXCDEFER (ALX_MIB_BASE + 112) +#define ALX_MIB_TX_CTRL (ALX_MIB_BASE + 116) +#define ALX_MIB_TX_DEFER (ALX_MIB_BASE + 120) +#define ALX_MIB_TX_BYTCNT (ALX_MIB_BASE + 124) +#define ALX_MIB_TX_64B (ALX_MIB_BASE + 128) +#define ALX_MIB_TX_127B (ALX_MIB_BASE + 132) +#define ALX_MIB_TX_255B (ALX_MIB_BASE + 136) +#define ALX_MIB_TX_511B (ALX_MIB_BASE + 140) +#define ALX_MIB_TX_1023B (ALX_MIB_BASE + 144) +#define ALX_MIB_TX_1518B (ALX_MIB_BASE + 148) +#define ALX_MIB_TX_SZMAX (ALX_MIB_BASE + 152) +#define ALX_MIB_TX_1COL (ALX_MIB_BASE + 156) +#define ALX_MIB_TX_2COL (ALX_MIB_BASE + 160) +#define ALX_MIB_TX_LATCOL (ALX_MIB_BASE + 164) +#define ALX_MIB_TX_ABRTCOL (ALX_MIB_BASE + 168) +#define ALX_MIB_TX_UNDRUN (ALX_MIB_BASE + 172) +#define ALX_MIB_TX_TRDBEOP (ALX_MIB_BASE + 176) +#define ALX_MIB_TX_LENERR (ALX_MIB_BASE + 180) +#define ALX_MIB_TX_TRUNC (ALX_MIB_BASE + 184) +#define ALX_MIB_TX_BCCNT (ALX_MIB_BASE + 188) +#define ALX_MIB_TX_MCCNT (ALX_MIB_BASE + 192) +#define ALX_MIB_UPDATE (ALX_MIB_BASE + 196) + +#define ALX_RX_STATS_BIN ALX_MIB_RX_OK +#define ALX_RX_STATS_END ALX_MIB_RX_ERRADDR +#define ALX_TX_STATS_BIN ALX_MIB_TX_OK +#define ALX_TX_STATS_END ALX_MIB_TX_MCCNT + +#define ALX_ISR 0x1600 +#define ALX_ISR_DIS BIT(31) +#define ALX_ISR_RX_Q7 BIT(30) +#define ALX_ISR_RX_Q6 BIT(29) +#define ALX_ISR_RX_Q5 BIT(28) +#define ALX_ISR_RX_Q4 BIT(27) +#define ALX_ISR_PCIE_LNKDOWN BIT(26) +#define ALX_ISR_PCIE_CERR BIT(25) +#define ALX_ISR_PCIE_NFERR BIT(24) +#define ALX_ISR_PCIE_FERR BIT(23) +#define ALX_ISR_PCIE_UR BIT(22) +#define ALX_ISR_MAC_TX BIT(21) +#define ALX_ISR_MAC_RX BIT(20) +#define ALX_ISR_RX_Q3 BIT(19) +#define ALX_ISR_RX_Q2 BIT(18) +#define ALX_ISR_RX_Q1 BIT(17) +#define ALX_ISR_RX_Q0 BIT(16) +#define ALX_ISR_TX_Q0 BIT(15) +#define ALX_ISR_TXQ_TO BIT(14) +#define ALX_ISR_PHY_LPW BIT(13) +#define ALX_ISR_PHY BIT(12) +#define ALX_ISR_TX_CREDIT BIT(11) +#define ALX_ISR_DMAW BIT(10) +#define ALX_ISR_DMAR BIT(9) +#define ALX_ISR_TXF_UR BIT(8) +#define ALX_ISR_TX_Q3 BIT(7) +#define ALX_ISR_TX_Q2 BIT(6) +#define ALX_ISR_TX_Q1 BIT(5) +#define ALX_ISR_RFD_UR BIT(4) +#define ALX_ISR_RXF_OV BIT(3) +#define ALX_ISR_MANU BIT(2) +#define ALX_ISR_TIMER BIT(1) +#define ALX_ISR_SMB BIT(0) + +#define ALX_IMR 0x1604 + +/* re-send assert msg if SW no response */ +#define ALX_INT_RETRIG 0x1608 +#define ALX_INT_RETRIG_TIMER_MASK 0xFFFFUL +#define ALX_INT_RETRIG_TIMER_SHIFT 0 +/* 40ms */ +#define ALX_INT_RETRIG_TO 20000 + +/* re-send deassert msg if SW no response */ +#define ALX_INT_DEASST_TIMER 0x1614 + +/* reg1620 used for sleep status */ +#define ALX_PATTERN_MASK 0x1620 +#define ALX_PATTERN_MASK_LEN 128 + + +#define ALX_FLT1_SRC_IP0 0x1A00 +#define ALX_FLT1_SRC_IP1 0x1A04 +#define ALX_FLT1_SRC_IP2 0x1A08 +#define ALX_FLT1_SRC_IP3 0x1A0C +#define ALX_FLT1_DST_IP0 0x1A10 +#define ALX_FLT1_DST_IP1 0x1A14 +#define ALX_FLT1_DST_IP2 0x1A18 +#define ALX_FLT1_DST_IP3 0x1A1C +#define ALX_FLT1_PORT 0x1A20 +#define ALX_FLT1_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT1_PORT_DST_SHIFT 16 +#define ALX_FLT1_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT1_PORT_SRC_SHIFT 0 + +#define ALX_FLT2_SRC_IP0 0x1A24 +#define ALX_FLT2_SRC_IP1 0x1A28 +#define ALX_FLT2_SRC_IP2 0x1A2C +#define ALX_FLT2_SRC_IP3 0x1A30 +#define ALX_FLT2_DST_IP0 0x1A34 +#define ALX_FLT2_DST_IP1 0x1A38 +#define ALX_FLT2_DST_IP2 0x1A40 +#define ALX_FLT2_DST_IP3 0x1A44 +#define ALX_FLT2_PORT 0x1A48 +#define ALX_FLT2_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT2_PORT_DST_SHIFT 16 +#define ALX_FLT2_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT2_PORT_SRC_SHIFT 0 + +#define ALX_FLT3_SRC_IP0 0x1A4C +#define ALX_FLT3_SRC_IP1 0x1A50 +#define ALX_FLT3_SRC_IP2 0x1A54 +#define ALX_FLT3_SRC_IP3 0x1A58 +#define ALX_FLT3_DST_IP0 0x1A5C +#define ALX_FLT3_DST_IP1 0x1A60 +#define ALX_FLT3_DST_IP2 0x1A64 +#define ALX_FLT3_DST_IP3 0x1A68 +#define ALX_FLT3_PORT 0x1A6C +#define ALX_FLT3_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT3_PORT_DST_SHIFT 16 +#define ALX_FLT3_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT3_PORT_SRC_SHIFT 0 + +#define ALX_FLT4_SRC_IP0 0x1A70 +#define ALX_FLT4_SRC_IP1 0x1A74 +#define ALX_FLT4_SRC_IP2 0x1A78 +#define ALX_FLT4_SRC_IP3 0x1A7C +#define ALX_FLT4_DST_IP0 0x1A80 +#define ALX_FLT4_DST_IP1 0x1A84 +#define ALX_FLT4_DST_IP2 0x1A88 +#define ALX_FLT4_DST_IP3 0x1A8C +#define ALX_FLT4_PORT 0x1A90 +#define ALX_FLT4_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT4_PORT_DST_SHIFT 16 +#define ALX_FLT4_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT4_PORT_SRC_SHIFT 0 + +#define ALX_FLT5_SRC_IP0 0x1A94 +#define ALX_FLT5_SRC_IP1 0x1A98 +#define ALX_FLT5_SRC_IP2 0x1A9C +#define ALX_FLT5_SRC_IP3 0x1AA0 +#define ALX_FLT5_DST_IP0 0x1AA4 +#define ALX_FLT5_DST_IP1 0x1AA8 +#define ALX_FLT5_DST_IP2 0x1AAC +#define ALX_FLT5_DST_IP3 0x1AB0 +#define ALX_FLT5_PORT 0x1AB4 +#define ALX_FLT5_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT5_PORT_DST_SHIFT 16 +#define ALX_FLT5_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT5_PORT_SRC_SHIFT 0 + +#define ALX_FLT6_SRC_IP0 0x1AB8 +#define ALX_FLT6_SRC_IP1 0x1ABC +#define ALX_FLT6_SRC_IP2 0x1AC0 +#define ALX_FLT6_SRC_IP3 0x1AC8 +#define ALX_FLT6_DST_IP0 0x1620 +#define ALX_FLT6_DST_IP1 0x1624 +#define ALX_FLT6_DST_IP2 0x1628 +#define ALX_FLT6_DST_IP3 0x162C +#define ALX_FLT6_PORT 0x1630 +#define ALX_FLT6_PORT_DST_MASK 0xFFFFUL +#define ALX_FLT6_PORT_DST_SHIFT 16 +#define ALX_FLT6_PORT_SRC_MASK 0xFFFFUL +#define ALX_FLT6_PORT_SRC_SHIFT 0 + +#define ALX_FLTCTRL 0x1634 +#define ALX_FLTCTRL_PSTHR_TIMER_MASK 0xFFUL +#define ALX_FLTCTRL_PSTHR_TIMER_SHIFT 24 +#define ALX_FLTCTRL_CHK_DSTPRT6 BIT(23) +#define ALX_FLTCTRL_CHK_SRCPRT6 BIT(22) +#define ALX_FLTCTRL_CHK_DSTIP6 BIT(21) +#define ALX_FLTCTRL_CHK_SRCIP6 BIT(20) +#define ALX_FLTCTRL_CHK_DSTPRT5 BIT(19) +#define ALX_FLTCTRL_CHK_SRCPRT5 BIT(18) +#define ALX_FLTCTRL_CHK_DSTIP5 BIT(17) +#define ALX_FLTCTRL_CHK_SRCIP5 BIT(16) +#define ALX_FLTCTRL_CHK_DSTPRT4 BIT(15) +#define ALX_FLTCTRL_CHK_SRCPRT4 BIT(14) +#define ALX_FLTCTRL_CHK_DSTIP4 BIT(13) +#define ALX_FLTCTRL_CHK_SRCIP4 BIT(12) +#define ALX_FLTCTRL_CHK_DSTPRT3 BIT(11) +#define ALX_FLTCTRL_CHK_SRCPRT3 BIT(10) +#define ALX_FLTCTRL_CHK_DSTIP3 BIT(9) +#define ALX_FLTCTRL_CHK_SRCIP3 BIT(8) +#define ALX_FLTCTRL_CHK_DSTPRT2 BIT(7) +#define ALX_FLTCTRL_CHK_SRCPRT2 BIT(6) +#define ALX_FLTCTRL_CHK_DSTIP2 BIT(5) +#define ALX_FLTCTRL_CHK_SRCIP2 BIT(4) +#define ALX_FLTCTRL_CHK_DSTPRT1 BIT(3) +#define ALX_FLTCTRL_CHK_SRCPRT1 BIT(2) +#define ALX_FLTCTRL_CHK_DSTIP1 BIT(1) +#define ALX_FLTCTRL_CHK_SRCIP1 BIT(0) + +#define ALX_DROP_ALG1 0x1638 +#define ALX_DROP_ALG1_BWCHGVAL_MASK 0xFFFFFUL +#define ALX_DROP_ALG1_BWCHGVAL_SHIFT 12 +/* bit11: 0:3.125%, 1:6.25% */ +#define ALX_DROP_ALG1_BWCHGSCL_6 BIT(11) +#define ALX_DROP_ALG1_ASUR_LWQ_EN BIT(10) +#define ALX_DROP_ALG1_BWCHGVAL_EN BIT(9) +#define ALX_DROP_ALG1_BWCHGSCL_EN BIT(8) +#define ALX_DROP_ALG1_PSTHR_AUTO BIT(7) +#define ALX_DROP_ALG1_MIN_PSTHR_MASK 0x3UL +#define ALX_DROP_ALG1_MIN_PSTHR_SHIFT 5 +#define ALX_DROP_ALG1_MIN_PSTHR_1_16 0 +#define ALX_DROP_ALG1_MIN_PSTHR_1_8 1 +#define ALX_DROP_ALG1_MIN_PSTHR_1_4 2 +#define ALX_DROP_ALG1_MIN_PSTHR_1_2 3 +#define ALX_DROP_ALG1_PSCL_MASK 0x3UL +#define ALX_DROP_ALG1_PSCL_SHIFT 3 +#define ALX_DROP_ALG1_PSCL_1_4 0 +#define ALX_DROP_ALG1_PSCL_1_8 1 +#define ALX_DROP_ALG1_PSCL_1_16 2 +#define ALX_DROP_ALG1_PSCL_1_32 3 +#define ALX_DROP_ALG1_TIMESLOT_MASK 0x7UL +#define ALX_DROP_ALG1_TIMESLOT_SHIFT 0 +#define ALX_DROP_ALG1_TIMESLOT_4MS 0 +#define ALX_DROP_ALG1_TIMESLOT_8MS 1 +#define ALX_DROP_ALG1_TIMESLOT_16MS 2 +#define ALX_DROP_ALG1_TIMESLOT_32MS 3 +#define ALX_DROP_ALG1_TIMESLOT_64MS 4 +#define ALX_DROP_ALG1_TIMESLOT_128MS 5 +#define ALX_DROP_ALG1_TIMESLOT_256MS 6 +#define ALX_DROP_ALG1_TIMESLOT_512MS 7 + +#define ALX_DROP_ALG2 0x163C +#define ALX_DROP_ALG2_SMPLTIME_MASK 0xFUL +#define ALX_DROP_ALG2_SMPLTIME_SHIFT 24 +#define ALX_DROP_ALG2_LWQBW_MASK 0xFFFFFFUL +#define ALX_DROP_ALG2_LWQBW_SHIFT 0 + +#define ALX_SMB_TIMER 0x15C4 + +#define ALX_TINT_TPD_THRSHLD 0x15C8 + +#define ALX_TINT_TIMER 0x15CC + +#define ALX_CLK_GATE 0x1814 +/* bit[8:6]: for B0+ */ +#define ALX_CLK_GATE_125M_SW_DIS_CR BIT(8) +#define ALX_CLK_GATE_125M_SW_AZ BIT(7) +#define ALX_CLK_GATE_125M_SW_IDLE BIT(6) +#define ALX_CLK_GATE_RXMAC BIT(5) +#define ALX_CLK_GATE_TXMAC BIT(4) +#define ALX_CLK_GATE_RXQ BIT(3) +#define ALX_CLK_GATE_TXQ BIT(2) +#define ALX_CLK_GATE_DMAR BIT(1) +#define ALX_CLK_GATE_DMAW BIT(0) +#define ALX_CLK_GATE_ALL_A0 (\ + ALX_CLK_GATE_RXMAC |\ + ALX_CLK_GATE_TXMAC |\ + ALX_CLK_GATE_RXQ |\ + ALX_CLK_GATE_TXQ |\ + ALX_CLK_GATE_DMAR |\ + ALX_CLK_GATE_DMAW) +#define ALX_CLK_GATE_ALL_B0 (\ + ALX_CLK_GATE_ALL_A0) + +/* PORST affect */ +#define ALX_BTROM_CFG 0x1800 + +/* interop between drivers */ +#define ALX_DRV 0x1804 +#define ALX_DRV_PHY_AUTO BIT(28) +#define ALX_DRV_PHY_1000 BIT(27) +#define ALX_DRV_PHY_100 BIT(26) +#define ALX_DRV_PHY_10 BIT(25) +#define ALX_DRV_PHY_DUPLEX BIT(24) +/* bit23: adv Pause */ +#define ALX_DRV_PHY_PAUSE BIT(23) +/* bit22: adv Asym Pause */ +#define ALX_DRV_PHY_APAUSE BIT(22) +/* bit21: 1:en AZ */ +#define ALX_DRV_PHY_EEE BIT(21) +#define ALX_DRV_PHY_MASK 0xFFUL +#define ALX_DRV_PHY_SHIFT 21 +#define ALX_DRV_PHY_UNKNOWN 0 +#define ALX_DRV_DISABLE BIT(18) +#define ALX_DRV_WOLS5_EN BIT(17) +#define ALX_DRV_WOLS5_BIOS_EN BIT(16) +#define ALX_DRV_AZ_EN BIT(12) +#define ALX_DRV_WOLPATTERN_EN BIT(11) +#define ALX_DRV_WOLLINKUP_EN BIT(10) +#define ALX_DRV_WOLMAGIC_EN BIT(9) +#define ALX_DRV_WOLCAP_BIOS_EN BIT(8) +#define ALX_DRV_ASPM_SPD1000LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD1000LMT_SHIFT 4 +#define ALX_DRV_ASPM_SPD1000LMT_100M 0 +#define ALX_DRV_ASPM_SPD1000LMT_NO 1 +#define ALX_DRV_ASPM_SPD1000LMT_1M 2 +#define ALX_DRV_ASPM_SPD1000LMT_10M 3 +#define ALX_DRV_ASPM_SPD100LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD100LMT_SHIFT 2 +#define ALX_DRV_ASPM_SPD100LMT_1M 0 +#define ALX_DRV_ASPM_SPD100LMT_10M 1 +#define ALX_DRV_ASPM_SPD100LMT_100M 2 +#define ALX_DRV_ASPM_SPD100LMT_NO 3 +#define ALX_DRV_ASPM_SPD10LMT_MASK 0x3UL +#define ALX_DRV_ASPM_SPD10LMT_SHIFT 0 +#define ALX_DRV_ASPM_SPD10LMT_1M 0 +#define ALX_DRV_ASPM_SPD10LMT_10M 1 +#define ALX_DRV_ASPM_SPD10LMT_100M 2 +#define ALX_DRV_ASPM_SPD10LMT_NO 3 + +/* flag of phy inited */ +#define ALX_PHY_INITED 0x003F + +/* PERST affect */ +#define ALX_DRV_ERR1 0x1808 +#define ALX_DRV_ERR1_GEN BIT(31) +#define ALX_DRV_ERR1_NOR BIT(30) +#define ALX_DRV_ERR1_TRUNC BIT(29) +#define ALX_DRV_ERR1_RES BIT(28) +#define ALX_DRV_ERR1_INTFATAL BIT(27) +#define ALX_DRV_ERR1_TXQPEND BIT(26) +#define ALX_DRV_ERR1_DMAW BIT(25) +#define ALX_DRV_ERR1_DMAR BIT(24) +#define ALX_DRV_ERR1_PCIELNKDWN BIT(23) +#define ALX_DRV_ERR1_PKTSIZE BIT(22) +#define ALX_DRV_ERR1_FIFOFUL BIT(21) +#define ALX_DRV_ERR1_RFDUR BIT(20) +#define ALX_DRV_ERR1_RRDSI BIT(19) +#define ALX_DRV_ERR1_UPDATE BIT(18) + +#define ALX_DRV_ERR2 0x180C + +#define ALX_DBG_ADDR 0x1900 +#define ALX_DBG_DATA 0x1904 + +#define ALX_SYNC_IPV4_SA 0x1A00 +#define ALX_SYNC_IPV4_DA 0x1A04 + +#define ALX_SYNC_V4PORT 0x1A08 +#define ALX_SYNC_V4PORT_DST_MASK 0xFFFFUL +#define ALX_SYNC_V4PORT_DST_SHIFT 16 +#define ALX_SYNC_V4PORT_SRC_MASK 0xFFFFUL +#define ALX_SYNC_V4PORT_SRC_SHIFT 0 + +#define ALX_SYNC_IPV6_SA0 0x1A0C +#define ALX_SYNC_IPV6_SA1 0x1A10 +#define ALX_SYNC_IPV6_SA2 0x1A14 +#define ALX_SYNC_IPV6_SA3 0x1A18 +#define ALX_SYNC_IPV6_DA0 0x1A1C +#define ALX_SYNC_IPV6_DA1 0x1A20 +#define ALX_SYNC_IPV6_DA2 0x1A24 +#define ALX_SYNC_IPV6_DA3 0x1A28 + +#define ALX_SYNC_V6PORT 0x1A2C +#define ALX_SYNC_V6PORT_DST_MASK 0xFFFFUL +#define ALX_SYNC_V6PORT_DST_SHIFT 16 +#define ALX_SYNC_V6PORT_SRC_MASK 0xFFFFUL +#define ALX_SYNC_V6PORT_SRC_SHIFT 0 + +#define ALX_ARP_REMOTE_IPV4 0x1A30 +#define ALX_ARP_HOST_IPV4 0x1A34 +#define ALX_ARP_MAC0 0x1A38 +#define ALX_ARP_MAC1 0x1A3C + +#define ALX_1ST_REMOTE_IPV6_0 0x1A40 +#define ALX_1ST_REMOTE_IPV6_1 0x1A44 +#define ALX_1ST_REMOTE_IPV6_2 0x1A48 +#define ALX_1ST_REMOTE_IPV6_3 0x1A4C + +#define ALX_1ST_SN_IPV6_0 0x1A50 +#define ALX_1ST_SN_IPV6_1 0x1A54 +#define ALX_1ST_SN_IPV6_2 0x1A58 +#define ALX_1ST_SN_IPV6_3 0x1A5C + +#define ALX_1ST_TAR_IPV6_1_0 0x1A60 +#define ALX_1ST_TAR_IPV6_1_1 0x1A64 +#define ALX_1ST_TAR_IPV6_1_2 0x1A68 +#define ALX_1ST_TAR_IPV6_1_3 0x1A6C +#define ALX_1ST_TAR_IPV6_2_0 0x1A70 +#define ALX_1ST_TAR_IPV6_2_1 0x1A74 +#define ALX_1ST_TAR_IPV6_2_2 0x1A78 +#define ALX_1ST_TAR_IPV6_2_3 0x1A7C + +#define ALX_2ND_REMOTE_IPV6_0 0x1A80 +#define ALX_2ND_REMOTE_IPV6_1 0x1A84 +#define ALX_2ND_REMOTE_IPV6_2 0x1A88 +#define ALX_2ND_REMOTE_IPV6_3 0x1A8C + +#define ALX_2ND_SN_IPV6_0 0x1A90 +#define ALX_2ND_SN_IPV6_1 0x1A94 +#define ALX_2ND_SN_IPV6_2 0x1A98 +#define ALX_2ND_SN_IPV6_3 0x1A9C + +#define ALX_2ND_TAR_IPV6_1_0 0x1AA0 +#define ALX_2ND_TAR_IPV6_1_1 0x1AA4 +#define ALX_2ND_TAR_IPV6_1_2 0x1AA8 +#define ALX_2ND_TAR_IPV6_1_3 0x1AAC +#define ALX_2ND_TAR_IPV6_2_0 0x1AB0 +#define ALX_2ND_TAR_IPV6_2_1 0x1AB4 +#define ALX_2ND_TAR_IPV6_2_2 0x1AB8 +#define ALX_2ND_TAR_IPV6_2_3 0x1ABC + +#define ALX_1ST_NS_MAC0 0x1AC0 +#define ALX_1ST_NS_MAC1 0x1AC4 + +#define ALX_2ND_NS_MAC0 0x1AC8 +#define ALX_2ND_NS_MAC1 0x1ACC + +#define ALX_PMOFLD 0x144C +/* bit[11:10]: for B0+ */ +#define ALX_PMOFLD_ECMA_IGNR_FRG_SSSR BIT(11) +#define ALX_PMOFLD_ARP_CNFLCT_WAKEUP BIT(10) +#define ALX_PMOFLD_MULTI_SOLD BIT(9) +#define ALX_PMOFLD_ICMP_XSUM BIT(8) +#define ALX_PMOFLD_GARP_REPLY BIT(7) +#define ALX_PMOFLD_SYNCV6_ANY BIT(6) +#define ALX_PMOFLD_SYNCV4_ANY BIT(5) +#define ALX_PMOFLD_BY_HW BIT(4) +#define ALX_PMOFLD_NS_EN BIT(3) +#define ALX_PMOFLD_ARP_EN BIT(2) +#define ALX_PMOFLD_SYNCV6_EN BIT(1) +#define ALX_PMOFLD_SYNCV4_EN BIT(0) + +/* reg 1830 ~ 186C for C0+, 16 bit map patterns and wake packet detection */ +#define ALX_WOL_CTRL2 0x1830 +#define ALX_WOL_CTRL2_DATA_STORE BIT(3) +#define ALX_WOL_CTRL2_PTRN_EVT BIT(2) +#define ALX_WOL_CTRL2_PME_PTRN_EN BIT(1) +#define ALX_WOL_CTRL2_PTRN_EN BIT(0) + +#define ALX_WOL_CTRL3 0x1834 +#define ALX_WOL_CTRL3_PTRN_ADDR_MASK 0xFFFFFUL +#define ALX_WOL_CTRL3_PTRN_ADDR_SHIFT 0 + +#define ALX_WOL_CTRL4 0x1838 +#define ALX_WOL_CTRL4_PT15_MATCH BIT(31) +#define ALX_WOL_CTRL4_PT14_MATCH BIT(30) +#define ALX_WOL_CTRL4_PT13_MATCH BIT(29) +#define ALX_WOL_CTRL4_PT12_MATCH BIT(28) +#define ALX_WOL_CTRL4_PT11_MATCH BIT(27) +#define ALX_WOL_CTRL4_PT10_MATCH BIT(26) +#define ALX_WOL_CTRL4_PT9_MATCH BIT(25) +#define ALX_WOL_CTRL4_PT8_MATCH BIT(24) +#define ALX_WOL_CTRL4_PT7_MATCH BIT(23) +#define ALX_WOL_CTRL4_PT6_MATCH BIT(22) +#define ALX_WOL_CTRL4_PT5_MATCH BIT(21) +#define ALX_WOL_CTRL4_PT4_MATCH BIT(20) +#define ALX_WOL_CTRL4_PT3_MATCH BIT(19) +#define ALX_WOL_CTRL4_PT2_MATCH BIT(18) +#define ALX_WOL_CTRL4_PT1_MATCH BIT(17) +#define ALX_WOL_CTRL4_PT0_MATCH BIT(16) +#define ALX_WOL_CTRL4_PT15_EN BIT(15) +#define ALX_WOL_CTRL4_PT14_EN BIT(14) +#define ALX_WOL_CTRL4_PT13_EN BIT(13) +#define ALX_WOL_CTRL4_PT12_EN BIT(12) +#define ALX_WOL_CTRL4_PT11_EN BIT(11) +#define ALX_WOL_CTRL4_PT10_EN BIT(10) +#define ALX_WOL_CTRL4_PT9_EN BIT(9) +#define ALX_WOL_CTRL4_PT8_EN BIT(8) +#define ALX_WOL_CTRL4_PT7_EN BIT(7) +#define ALX_WOL_CTRL4_PT6_EN BIT(6) +#define ALX_WOL_CTRL4_PT5_EN BIT(5) +#define ALX_WOL_CTRL4_PT4_EN BIT(4) +#define ALX_WOL_CTRL4_PT3_EN BIT(3) +#define ALX_WOL_CTRL4_PT2_EN BIT(2) +#define ALX_WOL_CTRL4_PT1_EN BIT(1) +#define ALX_WOL_CTRL4_PT0_EN BIT(0) + +#define ALX_WOL_CTRL5 0x183C +#define ALX_WOL_CTRL5_PT3_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT3_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT2_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT2_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT1_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT1_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT0_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT0_LEN_SHIFT 0 + +#define ALX_WOL_CTRL6 0x1840 +#define ALX_WOL_CTRL5_PT7_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT7_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT6_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT6_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT5_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT5_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT4_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT4_LEN_SHIFT 0 + +#define ALX_WOL_CTRL7 0x1844 +#define ALX_WOL_CTRL5_PT11_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT11_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT10_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT10_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT9_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT9_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT8_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT8_LEN_SHIFT 0 + +#define ALX_WOL_CTRL8 0x1848 +#define ALX_WOL_CTRL5_PT15_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT15_LEN_SHIFT 24 +#define ALX_WOL_CTRL5_PT14_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT14_LEN_SHIFT 16 +#define ALX_WOL_CTRL5_PT13_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT13_LEN_SHIFT 8 +#define ALX_WOL_CTRL5_PT12_LEN_MASK 0xFFUL +#define ALX_WOL_CTRL5_PT12_LEN_SHIFT 0 + +#define ALX_ACER_FIXED_PTN0 0x1850 +#define ALX_ACER_FIXED_PTN0_MASK 0xFFFFFFFFUL +#define ALX_ACER_FIXED_PTN0_SHIFT 0 + +#define ALX_ACER_FIXED_PTN1 0x1854 +#define ALX_ACER_FIXED_PTN1_MASK 0xFFFFUL +#define ALX_ACER_FIXED_PTN1_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM0 0x1858 +#define ALX_ACER_RANDOM_NUM0_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM0_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM1 0x185C +#define ALX_ACER_RANDOM_NUM1_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM1_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM2 0x1860 +#define ALX_ACER_RANDOM_NUM2_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM2_SHIFT 0 + +#define ALX_ACER_RANDOM_NUM3 0x1864 +#define ALX_ACER_RANDOM_NUM3_MASK 0xFFFFFFFFUL +#define ALX_ACER_RANDOM_NUM3_SHIFT 0 + +#define ALX_ACER_MAGIC 0x1868 +#define ALX_ACER_MAGIC_EN BIT(31) +#define ALX_ACER_MAGIC_PME_EN BIT(30) +#define ALX_ACER_MAGIC_MATCH BIT(29) +#define ALX_ACER_MAGIC_FF_CHECK BIT(10) +#define ALX_ACER_MAGIC_RAN_LEN_MASK 0x1FUL +#define ALX_ACER_MAGIC_RAN_LEN_SHIFT 5 +#define ALX_ACER_MAGIC_FIX_LEN_MASK 0x1FUL +#define ALX_ACER_MAGIC_FIX_LEN_SHIFT 0 + +#define ALX_ACER_TIMER 0x186C +#define ALX_ACER_TIMER_EN BIT(31) +#define ALX_ACER_TIMER_PME_EN BIT(30) +#define ALX_ACER_TIMER_MATCH BIT(29) +#define ALX_ACER_TIMER_THRES_MASK 0x1FFFFUL +#define ALX_ACER_TIMER_THRES_SHIFT 0 +#define ALX_ACER_TIMER_THRES_DEF 1 + +/* RSS definitions */ +#define ALX_RSS_KEY0 0x14B0 +#define ALX_RSS_KEY1 0x14B4 +#define ALX_RSS_KEY2 0x14B8 +#define ALX_RSS_KEY3 0x14BC +#define ALX_RSS_KEY4 0x14C0 +#define ALX_RSS_KEY5 0x14C4 +#define ALX_RSS_KEY6 0x14C8 +#define ALX_RSS_KEY7 0x14CC +#define ALX_RSS_KEY8 0x14D0 +#define ALX_RSS_KEY9 0x14D4 + +#define ALX_RSS_IDT_TBL0 0x1B00 +#define ALX_RSS_IDT_TBL1 0x1B04 +#define ALX_RSS_IDT_TBL2 0x1B08 +#define ALX_RSS_IDT_TBL3 0x1B0C +#define ALX_RSS_IDT_TBL4 0x1B10 +#define ALX_RSS_IDT_TBL5 0x1B14 +#define ALX_RSS_IDT_TBL6 0x1B18 +#define ALX_RSS_IDT_TBL7 0x1B1C +#define ALX_RSS_IDT_TBL8 0x1B20 +#define ALX_RSS_IDT_TBL9 0x1B24 +#define ALX_RSS_IDT_TBL10 0x1B28 +#define ALX_RSS_IDT_TBL11 0x1B2C +#define ALX_RSS_IDT_TBL12 0x1B30 +#define ALX_RSS_IDT_TBL13 0x1B34 +#define ALX_RSS_IDT_TBL14 0x1B38 +#define ALX_RSS_IDT_TBL15 0x1B3C +#define ALX_RSS_IDT_TBL16 0x1B40 +#define ALX_RSS_IDT_TBL17 0x1B44 +#define ALX_RSS_IDT_TBL18 0x1B48 +#define ALX_RSS_IDT_TBL19 0x1B4C +#define ALX_RSS_IDT_TBL20 0x1B50 +#define ALX_RSS_IDT_TBL21 0x1B54 +#define ALX_RSS_IDT_TBL22 0x1B58 +#define ALX_RSS_IDT_TBL23 0x1B5C +#define ALX_RSS_IDT_TBL24 0x1B60 +#define ALX_RSS_IDT_TBL25 0x1B64 +#define ALX_RSS_IDT_TBL26 0x1B68 +#define ALX_RSS_IDT_TBL27 0x1B6C +#define ALX_RSS_IDT_TBL28 0x1B70 +#define ALX_RSS_IDT_TBL29 0x1B74 +#define ALX_RSS_IDT_TBL30 0x1B78 +#define ALX_RSS_IDT_TBL31 0x1B7C + +#define ALX_RSS_HASH_VAL 0x15B0 +#define ALX_RSS_HASH_FLAG 0x15B4 + +#define ALX_RSS_BASE_CPU_NUM 0x15B8 + +#define ALX_MSI_MAP_TBL1 0x15D0 +#define ALX_MSI_MAP_TBL1_ALERT_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_ALERT_SHIFT 28 +#define ALX_MSI_MAP_TBL1_TIMER_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TIMER_SHIFT 24 +#define ALX_MSI_MAP_TBL1_TXQ1_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TXQ1_SHIFT 20 +#define ALX_MSI_MAP_TBL1_TXQ0_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_TXQ0_SHIFT 16 +#define ALX_MSI_MAP_TBL1_RXQ3_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ3_SHIFT 12 +#define ALX_MSI_MAP_TBL1_RXQ2_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ2_SHIFT 8 +#define ALX_MSI_MAP_TBL1_RXQ1_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ1_SHIFT 4 +#define ALX_MSI_MAP_TBL1_RXQ0_MASK 0xFUL +#define ALX_MSI_MAP_TBL1_RXQ0_SHIFT 0 + +#define ALX_MSI_MAP_TBL2 0x15D8 +#define ALX_MSI_MAP_TBL2_PHY_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_PHY_SHIFT 28 +#define ALX_MSI_MAP_TBL2_SMB_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_SMB_SHIFT 24 +#define ALX_MSI_MAP_TBL2_TXQ3_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_TXQ3_SHIFT 20 +#define ALX_MSI_MAP_TBL2_TXQ2_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_TXQ2_SHIFT 16 +#define ALX_MSI_MAP_TBL2_RXQ7_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ7_SHIFT 12 +#define ALX_MSI_MAP_TBL2_RXQ6_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ6_SHIFT 8 +#define ALX_MSI_MAP_TBL2_RXQ5_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ5_SHIFT 4 +#define ALX_MSI_MAP_TBL2_RXQ4_MASK 0xFUL +#define ALX_MSI_MAP_TBL2_RXQ4_SHIFT 0 + +#define ALX_MSI_ID_MAP 0x15D4 +#define ALX_MSI_ID_MAP_RXQ7 BIT(30) +#define ALX_MSI_ID_MAP_RXQ6 BIT(29) +#define ALX_MSI_ID_MAP_RXQ5 BIT(28) +#define ALX_MSI_ID_MAP_RXQ4 BIT(27) +/* bit26: 0:common,1:timer */ +#define ALX_MSI_ID_MAP_PCIELNKDW BIT(26) +#define ALX_MSI_ID_MAP_PCIECERR BIT(25) +#define ALX_MSI_ID_MAP_PCIENFERR BIT(24) +#define ALX_MSI_ID_MAP_PCIEFERR BIT(23) +#define ALX_MSI_ID_MAP_PCIEUR BIT(22) +#define ALX_MSI_ID_MAP_MACTX BIT(21) +#define ALX_MSI_ID_MAP_MACRX BIT(20) +#define ALX_MSI_ID_MAP_RXQ3 BIT(19) +#define ALX_MSI_ID_MAP_RXQ2 BIT(18) +#define ALX_MSI_ID_MAP_RXQ1 BIT(17) +#define ALX_MSI_ID_MAP_RXQ0 BIT(16) +#define ALX_MSI_ID_MAP_TXQ0 BIT(15) +#define ALX_MSI_ID_MAP_TXQTO BIT(14) +#define ALX_MSI_ID_MAP_LPW BIT(13) +#define ALX_MSI_ID_MAP_PHY BIT(12) +#define ALX_MSI_ID_MAP_TXCREDIT BIT(11) +#define ALX_MSI_ID_MAP_DMAW BIT(10) +#define ALX_MSI_ID_MAP_DMAR BIT(9) +#define ALX_MSI_ID_MAP_TXFUR BIT(8) +#define ALX_MSI_ID_MAP_TXQ3 BIT(7) +#define ALX_MSI_ID_MAP_TXQ2 BIT(6) +#define ALX_MSI_ID_MAP_TXQ1 BIT(5) +#define ALX_MSI_ID_MAP_RFDUR BIT(4) +#define ALX_MSI_ID_MAP_RXFOV BIT(3) +#define ALX_MSI_ID_MAP_MANU BIT(2) +#define ALX_MSI_ID_MAP_TIMER BIT(1) +#define ALX_MSI_ID_MAP_SMB BIT(0) + +#define ALX_MSI_RETRANS_TIMER 0x1920 +/* bit16: 1:line,0:standard */ +#define ALX_MSI_MASK_SEL_LINE BIT(16) +#define ALX_MSI_RETRANS_TM_MASK 0xFFFFUL +#define ALX_MSI_RETRANS_TM_SHIFT 0 + +#define ALX_CR_DMA_CTRL 0x1930 +#define ALX_CR_DMA_CTRL_PRI BIT(22) +#define ALX_CR_DMA_CTRL_RRDRXD_JOINT BIT(21) +#define ALX_CR_DMA_CTRL_BWCREDIT_MASK 0x3UL +#define ALX_CR_DMA_CTRL_BWCREDIT_SHIFT 19 +#define ALX_CR_DMA_CTRL_BWCREDIT_2KB 0 +#define ALX_CR_DMA_CTRL_BWCREDIT_1KB 1 +#define ALX_CR_DMA_CTRL_BWCREDIT_4KB 2 +#define ALX_CR_DMA_CTRL_BWCREDIT_8KB 3 +#define ALX_CR_DMA_CTRL_BW_EN BIT(18) +#define ALX_CR_DMA_CTRL_BW_RATIO_MASK 0x3UL +#define ALX_CR_DMA_CTRL_BW_RATIO_1_2 0 +#define ALX_CR_DMA_CTRL_BW_RATIO_1_4 1 +#define ALX_CR_DMA_CTRL_BW_RATIO_1_8 2 +#define ALX_CR_DMA_CTRL_BW_RATIO_2_1 3 +#define ALX_CR_DMA_CTRL_SOFT_RST BIT(11) +#define ALX_CR_DMA_CTRL_TXEARLY_EN BIT(10) +#define ALX_CR_DMA_CTRL_RXEARLY_EN BIT(9) +#define ALX_CR_DMA_CTRL_WEARLY_EN BIT(8) +#define ALX_CR_DMA_CTRL_RXTH_MASK 0xFUL +#define ALX_CR_DMA_CTRL_WTH_MASK 0xFUL + + +#define ALX_EFUSE_BIST 0x1934 +#define ALX_EFUSE_BIST_COL_MASK 0x3FUL +#define ALX_EFUSE_BIST_COL_SHIFT 24 +#define ALX_EFUSE_BIST_ROW_MASK 0x7FUL +#define ALX_EFUSE_BIST_ROW_SHIFT 12 +#define ALX_EFUSE_BIST_STEP_MASK 0xFUL +#define ALX_EFUSE_BIST_STEP_SHIFT 8 +#define ALX_EFUSE_BIST_PAT_MASK 0x7UL +#define ALX_EFUSE_BIST_PAT_SHIFT 4 +#define ALX_EFUSE_BIST_CRITICAL BIT(3) +#define ALX_EFUSE_BIST_FIXED BIT(2) +#define ALX_EFUSE_BIST_FAIL BIT(1) +#define ALX_EFUSE_BIST_NOW BIT(0) + +/* CR DMA ctrl */ + +/* TX QoS */ +#define ALX_WRR 0x1938 +#define ALX_WRR_PRI_MASK 0x3UL +#define ALX_WRR_PRI_SHIFT 29 +#define ALX_WRR_PRI_RESTRICT_ALL 0 +#define ALX_WRR_PRI_RESTRICT_HI 1 +#define ALX_WRR_PRI_RESTRICT_HI2 2 +#define ALX_WRR_PRI_RESTRICT_NONE 3 +#define ALX_WRR_PRI3_MASK 0x1FUL +#define ALX_WRR_PRI3_SHIFT 24 +#define ALX_WRR_PRI2_MASK 0x1FUL +#define ALX_WRR_PRI2_SHIFT 16 +#define ALX_WRR_PRI1_MASK 0x1FUL +#define ALX_WRR_PRI1_SHIFT 8 +#define ALX_WRR_PRI0_MASK 0x1FUL +#define ALX_WRR_PRI0_SHIFT 0 + +#define ALX_HQTPD 0x193C +#define ALX_HQTPD_BURST_EN BIT(31) +#define ALX_HQTPD_Q3_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q3_NUMPREF_SHIFT 8 +#define ALX_HQTPD_Q2_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q2_NUMPREF_SHIFT 4 +#define ALX_HQTPD_Q1_NUMPREF_MASK 0xFUL +#define ALX_HQTPD_Q1_NUMPREF_SHIFT 0 + +#define ALX_CPUMAP1 0x19A0 +#define ALX_CPUMAP1_VCT7_MASK 0xFUL +#define ALX_CPUMAP1_VCT7_SHIFT 28 +#define ALX_CPUMAP1_VCT6_MASK 0xFUL +#define ALX_CPUMAP1_VCT6_SHIFT 24 +#define ALX_CPUMAP1_VCT5_MASK 0xFUL +#define ALX_CPUMAP1_VCT5_SHIFT 20 +#define ALX_CPUMAP1_VCT4_MASK 0xFUL +#define ALX_CPUMAP1_VCT4_SHIFT 16 +#define ALX_CPUMAP1_VCT3_MASK 0xFUL +#define ALX_CPUMAP1_VCT3_SHIFT 12 +#define ALX_CPUMAP1_VCT2_MASK 0xFUL +#define ALX_CPUMAP1_VCT2_SHIFT 8 +#define ALX_CPUMAP1_VCT1_MASK 0xFUL +#define ALX_CPUMAP1_VCT1_SHIFT 4 +#define ALX_CPUMAP1_VCT0_MASK 0xFUL +#define ALX_CPUMAP1_VCT0_SHIFT 0 + +#define ALX_CPUMAP2 0x19A4 +#define ALX_CPUMAP2_VCT15_MASK 0xFUL +#define ALX_CPUMAP2_VCT15_SHIFT 28 +#define ALX_CPUMAP2_VCT14_MASK 0xFUL +#define ALX_CPUMAP2_VCT14_SHIFT 24 +#define ALX_CPUMAP2_VCT13_MASK 0xFUL +#define ALX_CPUMAP2_VCT13_SHIFT 20 +#define ALX_CPUMAP2_VCT12_MASK 0xFUL +#define ALX_CPUMAP2_VCT12_SHIFT 16 +#define ALX_CPUMAP2_VCT11_MASK 0xFUL +#define ALX_CPUMAP2_VCT11_SHIFT 12 +#define ALX_CPUMAP2_VCT10_MASK 0xFUL +#define ALX_CPUMAP2_VCT10_SHIFT 8 +#define ALX_CPUMAP2_VCT9_MASK 0xFUL +#define ALX_CPUMAP2_VCT9_SHIFT 4 +#define ALX_CPUMAP2_VCT8_MASK 0xFUL +#define ALX_CPUMAP2_VCT8_SHIFT 0 + +#define ALX_MISC 0x19C0 +/* bit31: 0:vector,1:cpu */ +#define ALX_MISC_MODU BIT(31) +#define ALX_MISC_OVERCUR BIT(29) +#define ALX_MISC_PSWR_EN BIT(28) +#define ALX_MISC_PSW_CTRL_MASK 0xFUL +#define ALX_MISC_PSW_CTRL_SHIFT 24 +#define ALX_MISC_PSW_OCP_MASK 0x7UL +#define ALX_MISC_PSW_OCP_SHIFT 21 +#define ALX_MISC_PSW_OCP_DEF 0x7 +#define ALX_MISC_V18_HIGH BIT(20) +#define ALX_MISC_LPO_CTRL_MASK 0xFUL +#define ALX_MISC_LPO_CTRL_SHIFT 16 +#define ALX_MISC_ISO_EN BIT(12) +#define ALX_MISC_XSTANA_ALWAYS_ON BIT(11) +#define ALX_MISC_SYS25M_SEL_ADAPTIVE BIT(10) +#define ALX_MISC_SPEED_SIM BIT(9) +#define ALX_MISC_S1_LWP_EN BIT(8) +/* bit7: pcie/mac do pwsaving as phy in lpw state */ +#define ALX_MISC_MACLPW BIT(7) +#define ALX_MISC_125M_SW BIT(6) +#define ALX_MISC_INTNLOSC_OFF_EN BIT(5) +/* bit4: 0:chipset,1:crystle */ +#define ALX_MISC_EXTN25M_SEL BIT(4) +#define ALX_MISC_INTNLOSC_OPEN BIT(3) +#define ALX_MISC_SMBUS_AT_LED BIT(2) +#define ALX_MISC_PPS_AT_LED_MASK 0x3UL +#define ALX_MISC_PPS_AT_LED_SHIFT 0 +#define ALX_MISC_PPS_AT_LED_ACT 1 +#define ALX_MISC_PPS_AT_LED_10_100 2 +#define ALX_MISC_PPS_AT_LED_1000 3 + +#define ALX_MISC1 0x19C4 +#define ALX_MSC1_BLK_CRASPM_REQ BIT(15) + +#define ALX_MSIC2 0x19C8 +#define ALX_MSIC2_CALB_START BIT(0) + +#define ALX_MISC3 0x19CC +/* bit1: 1:Software control 25M */ +#define ALX_MISC3_25M_BY_SW BIT(1) +/* bit0: 25M switch to intnl OSC */ +#define ALX_MISC3_25M_NOTO_INTNL BIT(0) + +/* MSIX tbl in memory space */ +#define ALX_MSIX_ENTRY_BASE 0x2000 + +/***************************** IO mapping registers ***************************/ +#define ALX_IO_ADDR 0x00 +#define ALX_IO_DATA 0x04 +/* same as reg1400 */ +#define ALX_IO_MASTER 0x08 +/* same as reg1480 */ +#define ALX_IO_MAC_CTRL 0x0C +/* same as reg1600 */ +#define ALX_IO_ISR 0x10 +/* same as reg 1604 */ +#define ALX_IO_IMR 0x14 +/* word, same as reg15F0 */ +#define ALX_IO_TPD_PRI1_PIDX 0x18 +/* word, same as reg15F2 */ +#define ALX_IO_TPD_PRI0_PIDX 0x1A +/* word, same as reg15F4 */ +#define ALX_IO_TPD_PRI1_CIDX 0x1C +/* word, same as reg15F6 */ +#define ALX_IO_TPD_PRI0_CIDX 0x1E +/* word, same as reg15E0 */ +#define ALX_IO_RFD_PIDX 0x20 +/* word, same as reg15F8 */ +#define ALX_IO_RFD_CIDX 0x30 +/* same as reg1414 */ +#define ALX_IO_MDIO 0x38 +/* same as reg140C */ +#define ALX_IO_PHY_CTRL 0x3C + + +/********************* PHY regs definition ***************************/ + +/* Autoneg Advertisement Register */ +#define ALX_ADVERTISE_SPEED_MASK 0x01E0 +#define ALX_ADVERTISE_DEFAULT_CAP 0x1DE0 + +/* 1000BASE-T Control Register (0x9) */ +#define ALX_GIGA_CR_1000T_HD_CAPS 0x0100 +#define ALX_GIGA_CR_1000T_FD_CAPS 0x0200 +#define ALX_GIGA_CR_1000T_REPEATER_DTE 0x0400 + +#define ALX_GIGA_CR_1000T_MS_VALUE 0x0800 + +#define ALX_GIGA_CR_1000T_MS_ENABLE 0x1000 + +#define ALX_GIGA_CR_1000T_TEST_MODE_NORMAL 0x0000 +#define ALX_GIGA_CR_1000T_TEST_MODE_1 0x2000 +#define ALX_GIGA_CR_1000T_TEST_MODE_2 0x4000 +#define ALX_GIGA_CR_1000T_TEST_MODE_3 0x6000 +#define ALX_GIGA_CR_1000T_TEST_MODE_4 0x8000 +#define ALX_GIGA_CR_1000T_SPEED_MASK 0x0300 +#define ALX_GIGA_CR_1000T_DEFAULT_CAP 0x0300 + +/* 1000BASE-T Status Register */ +#define ALX_MII_GIGA_SR 0x0A + +/* PHY Specific Status Register */ +#define ALX_MII_GIGA_PSSR 0x11 +#define ALX_GIGA_PSSR_FC_RXEN 0x0004 +#define ALX_GIGA_PSSR_FC_TXEN 0x0008 +#define ALX_GIGA_PSSR_SPD_DPLX_RESOLVED 0x0800 +#define ALX_GIGA_PSSR_DPLX 0x2000 +#define ALX_GIGA_PSSR_SPEED 0xC000 +#define ALX_GIGA_PSSR_10MBS 0x0000 +#define ALX_GIGA_PSSR_100MBS 0x4000 +#define ALX_GIGA_PSSR_1000MBS 0x8000 + +/* PHY Interrupt Enable Register */ +#define ALX_MII_IER 0x12 +#define ALX_IER_LINK_UP 0x0400 +#define ALX_IER_LINK_DOWN 0x0800 + +/* PHY Interrupt Status Register */ +#define ALX_MII_ISR 0x13 +#define ALX_ISR_LINK_UP 0x0400 +#define ALX_ISR_LINK_DOWN 0x0800 + +/* Cable-Detect-Test Control Register */ +#define ALX_MII_CDTC 0x16 +/* self clear */ +#define ALX_CDTC_EN 1 +#define ALX_CDTC_PAIR_MASK 0x3U +#define ALX_CDTC_PAIR_SHIFT 8 + + +/* Cable-Detect-Test Status Register */ +#define ALX_MII_CDTS 0x1C +#define ALX_CDTS_STATUS_MASK 0x3U +#define ALX_CDTS_STATUS_SHIFT 8 +#define ALX_CDTS_STATUS_NORMAL 0 +#define ALX_CDTS_STATUS_SHORT 1 +#define ALX_CDTS_STATUS_OPEN 2 +#define ALX_CDTS_STATUS_INVALID 3 + +#define ALX_MII_DBG_ADDR 0x1D +#define ALX_MII_DBG_DATA 0x1E + +/***************************** debug port *************************************/ + +#define ALX_MIIDBG_ANACTRL 0x00 +#define ALX_ANACTRL_CLK125M_DELAY_EN 0x8000 +#define ALX_ANACTRL_VCO_FAST 0x4000 +#define ALX_ANACTRL_VCO_SLOW 0x2000 +#define ALX_ANACTRL_AFE_MODE_EN 0x1000 +#define ALX_ANACTRL_LCKDET_PHY 0x0800 +#define ALX_ANACTRL_LCKDET_EN 0x0400 +#define ALX_ANACTRL_OEN_125M 0x0200 +#define ALX_ANACTRL_HBIAS_EN 0x0100 +#define ALX_ANACTRL_HB_EN 0x0080 +#define ALX_ANACTRL_SEL_HSP 0x0040 +#define ALX_ANACTRL_CLASSA_EN 0x0020 +#define ALX_ANACTRL_MANUSWON_SWR_MASK 0x3U +#define ALX_ANACTRL_MANUSWON_SWR_SHIFT 2 +#define ALX_ANACTRL_MANUSWON_SWR_2V 0 +#define ALX_ANACTRL_MANUSWON_SWR_1P9V 1 +#define ALX_ANACTRL_MANUSWON_SWR_1P8V 2 +#define ALX_ANACTRL_MANUSWON_SWR_1P7V 3 +#define ALX_ANACTRL_MANUSWON_BW3_4M 0x0002 +#define ALX_ANACTRL_RESTART_CAL 0x0001 +#define ALX_ANACTRL_DEF 0x02EF + + +#define ALX_MIIDBG_SYSMODCTRL 0x04 +#define ALX_SYSMODCTRL_IECHOADJ_PFMH_PHY 0x8000 +#define ALX_SYSMODCTRL_IECHOADJ_BIASGEN 0x4000 +#define ALX_SYSMODCTRL_IECHOADJ_PFML_PHY 0x2000 +#define ALX_SYSMODCTRL_IECHOADJ_PS_MASK 0x3U +#define ALX_SYSMODCTRL_IECHOADJ_PS_SHIFT 10 +#define ALX_SYSMODCTRL_IECHOADJ_PS_40 3 +#define ALX_SYSMODCTRL_IECHOADJ_PS_20 2 +#define ALX_SYSMODCTRL_IECHOADJ_PS_0 1 +#define ALX_SYSMODCTRL_IECHOADJ_10BT_100MV 0x0040 +#define ALX_SYSMODCTRL_IECHOADJ_HLFAP_MASK 0x3U +#define ALX_SYSMODCTRL_IECHOADJ_HLFAP_SHIFT 4 +#define ALX_SYSMODCTRL_IECHOADJ_VDFULBW 0x0008 +#define ALX_SYSMODCTRL_IECHOADJ_VDBIASHLF 0x0004 +#define ALX_SYSMODCTRL_IECHOADJ_VDAMPHLF 0x0002 +#define ALX_SYSMODCTRL_IECHOADJ_VDLANSW 0x0001 +/* en half bias */ +#define ALX_SYSMODCTRL_IECHOADJ_DEF 0xBB8B + + +#define ALX_MIIDBG_SRDSYSMOD 0x05 +#define ALX_SRDSYSMOD_LCKDET_EN 0x2000 +#define ALX_SRDSYSMOD_PLL_EN 0x0800 +#define ALX_SRDSYSMOD_SEL_HSP 0x0400 +#define ALX_SRDSYSMOD_HLFTXDR 0x0200 +#define ALX_SRDSYSMOD_TXCLK_DELAY_EN 0x0100 +#define ALX_SRDSYSMOD_TXELECIDLE 0x0080 +#define ALX_SRDSYSMOD_DEEMP_EN 0x0040 +#define ALX_SRDSYSMOD_MS_PAD 0x0004 +#define ALX_SRDSYSMOD_CDR_ADC_VLTG 0x0002 +#define ALX_SRDSYSMOD_CDR_DAC_1MA 0x0001 +#define ALX_SRDSYSMOD_DEF 0x2C46 + + +#define ALX_MIIDBG_HIBNEG 0x0B +#define ALX_HIBNEG_PSHIB_EN 0x8000 +#define ALX_HIBNEG_WAKE_BOTH 0x4000 +#define ALX_HIBNEG_ONOFF_ANACHG_SUDEN 0x2000 +#define ALX_HIBNEG_HIB_PULSE 0x1000 +#define ALX_HIBNEG_GATE_25M_EN 0x0800 +#define ALX_HIBNEG_RST_80U 0x0400 +#define ALX_HIBNEG_RST_TIMER_MASK 0x3U +#define ALX_HIBNEG_RST_TIMER_SHIFT 8 +#define ALX_HIBNEG_GTX_CLK_DELAY_MASK 0x3U +#define ALX_HIBNEG_GTX_CLK_DELAY_SHIFT 5 +#define ALX_HIBNEG_BYPSS_BRKTIMER 0x0010 +#define ALX_HIBNEG_DEF 0xBC40 +#define ALX_HIBNEG_NOHIB (\ +ALX_HIBNEG_DEF & ~(ALX_HIBNEG_PSHIB_EN | ALX_HIBNEG_HIB_PULSE)) + +#define ALX_MIIDBG_TST10BTCFG 0x12 +#define ALX_TST10BTCFG_INTV_TIMER_MASK 0x3U +#define ALX_TST10BTCFG_INTV_TIMER_SHIFT 14 +#define ALX_TST10BTCFG_TRIGER_TIMER_MASK 0x3U +#define ALX_TST10BTCFG_TRIGER_TIMER_SHIFT 12 +#define ALX_TST10BTCFG_DIV_MAN_MLT3_EN 0x0800 +#define ALX_TST10BTCFG_OFF_DAC_IDLE 0x0400 +#define ALX_TST10BTCFG_LPBK_DEEP 0x0004 +#define ALX_TST10BTCFG_DEF 0x4C04 + +#define ALX_MIIDBG_AZ_ANADECT 0x15 +#define ALX_AZ_ANADECT_10BTRX_TH 0x8000 +#define ALX_AZ_ANADECT_BOTH_01CHNL 0x4000 +#define ALX_AZ_ANADECT_INTV_MASK 0x3FU +#define ALX_AZ_ANADECT_INTV_SHIFT 8 +#define ALX_AZ_ANADECT_THRESH_MASK 0xFU +#define ALX_AZ_ANADECT_THRESH_SHIFT 4 +#define ALX_AZ_ANADECT_CHNL_MASK 0xFU +#define ALX_AZ_ANADECT_CHNL_SHIFT 0 +#define ALX_AZ_ANADECT_DEF 0x3220 +#define ALX_AZ_ANADECT_LONG 0x3210 + +#define ALX_MIIDBG_MSE16DB 0x18 +#define ALX_MSE16DB_UP 0x05EA +#define ALX_MSE16DB_DOWN 0x02EA + +#define ALX_MIIDBG_MSE20DB 0x1C +#define ALX_MSE20DB_TH_MASK 0x7F +#define ALX_MSE20DB_TH_SHIFT 2 +#define ALX_MSE20DB_TH_DEF 0x2E +#define ALX_MSE20DB_TH_HI 0x54 + +#define ALX_MIIDBG_AGC 0x23 +#define ALX_AGC_2_VGA_MASK 0x3FU +#define ALX_AGC_2_VGA_SHIFT 8 +#define ALX_AGC_LONG1G_LIMT 40 +#define ALX_AGC_LONG100M_LIMT 44 + +#define ALX_MIIDBG_LEGCYPS 0x29 +#define ALX_LEGCYPS_EN 0x8000 +#define ALX_LEGCYPS_DAC_AMP1000_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP1000_SHIFT 12 +#define ALX_LEGCYPS_DAC_AMP100_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP100_SHIFT 9 +#define ALX_LEGCYPS_DAC_AMP10_MASK 0x7U +#define ALX_LEGCYPS_DAC_AMP10_SHIFT 6 +#define ALX_LEGCYPS_UNPLUG_TIMER_MASK 0x7U +#define ALX_LEGCYPS_UNPLUG_TIMER_SHIFT 3 +#define ALX_LEGCYPS_UNPLUG_DECT_EN 0x0004 +#define ALX_LEGCYPS_ECNC_PS_EN 0x0001 +#define ALX_LEGCYPS_DEF 0x129D + +#define ALX_MIIDBG_TST100BTCFG 0x36 +#define ALX_TST100BTCFG_NORMAL_BW_EN 0x8000 +#define ALX_TST100BTCFG_BADLNK_BYPASS 0x4000 +#define ALX_TST100BTCFG_SHORTCABL_TH_MASK 0x3FU +#define ALX_TST100BTCFG_SHORTCABL_TH_SHIFT 8 +#define ALX_TST100BTCFG_LITCH_EN 0x0080 +#define ALX_TST100BTCFG_VLT_SW 0x0040 +#define ALX_TST100BTCFG_LONGCABL_TH_MASK 0x3FU +#define ALX_TST100BTCFG_LONGCABL_TH_SHIFT 0 +#define ALX_TST100BTCFG_DEF 0xE12C + +#define ALX_MIIDBG_GREENCFG 0x3B +#define ALX_GREENCFG_MSTPS_MSETH2_MASK 0xFFU +#define ALX_GREENCFG_MSTPS_MSETH2_SHIFT 8 +#define ALX_GREENCFG_MSTPS_MSETH1_MASK 0xFFU +#define ALX_GREENCFG_MSTPS_MSETH1_SHIFT 0 +#define ALX_GREENCFG_DEF 0x7078 + +#define ALX_MIIDBG_GREENCFG2 0x3D +#define ALX_GREENCFG2_BP_GREEN 0x8000 +#define ALX_GREENCFG2_GATE_DFSE_EN 0x0080 + + +/***************************** extension **************************************/ + +/******* dev 3 *********/ +#define ALX_MIIEXT_PCS 3 + +#define ALX_MIIEXT_CLDCTRL3 0x8003 +#define ALX_CLDCTRL3_BP_CABLE1TH_DET_GT 0x8000 +#define ALX_CLDCTRL3_AZ_DISAMP 0x1000 + +#define ALX_MIIEXT_CLDCTRL5 0x8005 +#define ALX_CLDCTRL5_BP_VD_HLFBIAS 0x4000 + +#define ALX_MIIEXT_CLDCTRL6 0x8006 +#define ALX_CLDCTRL6_CAB_LEN_MASK 0xFFU +#define ALX_CLDCTRL6_CAB_LEN_SHIFT 0 +#define ALX_CLDCTRL6_CAB_LEN_SHORT1G 116 +#define ALX_CLDCTRL6_CAB_LEN_SHORT100M 152 + +#define ALX_MIIEXT_CLDCTRL7 0x8007 +#define ALX_CLDCTRL7_VDHLF_BIAS_TH_MASK 0x7FU +#define ALX_CLDCTRL7_VDHLF_BIAS_TH_SHIFT 9 +#define ALX_CLDCTRL7_AFE_AZ_MASK 0x1FU +#define ALX_CLDCTRL7_AFE_AZ_SHIFT 4 +#define ALX_CLDCTRL7_SIDE_PEAK_TH_MASK 0xFU +#define ALX_CLDCTRL7_SIDE_PEAK_TH_SHIFT 0 +#define ALX_CLDCTRL7_DEF 0x6BF6 + +#define ALX_MIIEXT_AZCTRL 0x8008 +#define ALX_AZCTRL_SHORT_TH_MASK 0xFFU +#define ALX_AZCTRL_SHORT_TH_SHIFT 8 +#define ALX_AZCTRL_LONG_TH_MASK 0xFFU +#define ALX_AZCTRL_LONG_TH_SHIFT 0 +#define ALX_AZCTRL_DEF 0x1629 + +#define ALX_MIIEXT_AZCTRL2 0x8009 +#define ALX_AZCTRL2_WAKETRNING_MASK 0xFFU +#define ALX_AZCTRL2_WAKETRNING_SHIFT 8 +#define ALX_AZCTRL2_QUIET_TIMER_MASK 0x3U +#define ALX_AZCTRL2_QUIET_TIMER_SHIFT 6 +#define ALX_AZCTRL2_PHAS_JMP2 0x0010 +#define ALX_AZCTRL2_CLKTRCV_125MD16 0x0008 +#define ALX_AZCTRL2_GATE1000_EN 0x0004 +#define ALX_AZCTRL2_AVRG_FREQ 0x0002 +#define ALX_AZCTRL2_PHAS_JMP4 0x0001 +#define ALX_AZCTRL2_DEF 0x32C0 + +#define ALX_MIIEXT_AZCTRL6 0x800D + +#define ALX_MIIEXT_VDRVBIAS 0x8062 +#define ALX_VDRVBIAS_SEL_MASK 0x3U +#define ALX_VDRVBIAS_SEL_SHIFT 0 +#define ALX_VDRVBIAS_DEF 0x3 + +/********* dev 7 **********/ +#define ALX_MIIEXT_ANEG 7 + +#define ALX_MIIEXT_LOCAL_EEEADV 0x3C +#define ALX_LOCAL_EEEADV_1000BT 0x0004 +#define ALX_LOCAL_EEEADV_100BT 0x0002 + +#define ALX_MIIEXT_REMOTE_EEEADV 0x3D +#define ALX_REMOTE_EEEADV_1000BT 0x0004 +#define ALX_REMOTE_EEEADV_100BT 0x0002 + +#define ALX_MIIEXT_EEE_ANEG 0x8000 +#define ALX_EEE_ANEG_1000M 0x0004 +#define ALX_EEE_ANEG_100M 0x0002 + +#define ALX_MIIEXT_AFE 0x801A +#define ALX_AFE_10BT_100M_TH 0x0040 + +#define ALX_MIIEXT_S3DIG10 0x8023 +/* bit0: 1:bypass 10BT rx fifo, 0:riginal 10BT rx */ +#define ALX_MIIEXT_S3DIG10_SL 0x0001 +#define ALX_MIIEXT_S3DIG10_DEF 0 + +#define ALX_MIIEXT_NLP34 0x8025 +/* for 160m */ +#define ALX_MIIEXT_NLP34_DEF 0x1010 + +#define ALX_MIIEXT_NLP56 0x8026 +/* for 160m */ +#define ALX_MIIEXT_NLP56_DEF 0x1010 + +#define ALX_MIIEXT_NLP78 0x8027 +/* for 160m */ +#define ALX_MIIEXT_NLP78_160M_DEF 0x8D05 +#define ALX_MIIEXT_NLP78_120M_DEF 0x8A05 + +#endif --- linux-3.5.0.orig/ubuntu/alx/Kconfig +++ linux-3.5.0/ubuntu/alx/Kconfig @@ -0,0 +1,18 @@ + +config ALX + tristate "Qualcomm Atheros L1F Gigabit Ethernet support" + depends on PCI + select CRC32 + select NET_CORE + select MII + ---help--- + This driver supports the Qualcomm Atheros L1F ethernet adapter. + This driver supports following chipsets: + + 1969:1091 - AR8161 Gigabit Ethernet + 1969:1090 - AR8162 Fast Ethernet + 1969:10A1 - AR8171 Gigabit Ethernet + 1969:10A0 - AR8172 Fast Ethernet + + To compile this driver as a module, choose M here. The module + will be called alx. --- linux-3.5.0.orig/ubuntu/alx/alx_hw.c +++ linux-3.5.0/ubuntu/alx/alx_hw.c @@ -0,0 +1,1461 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" + +#define ALX_REV_A(_r) ((_r) == ALX_REV_A0 || (_r) == ALX_REV_A1) + +/* get permanent mac address from */ +int alx_get_perm_macaddr(struct alx_hw *hw, u8 *addr) +{ + u32 val, mac0, mac1; + u16 flag, i; + +#define INTN_LOADED 0x1 +#define EXTN_LOADED 0x2 + + flag = 0; + val = 0; + +read_mcadr: + + /* get it from register first */ + ALX_MEM_R32(hw, ALX_STAD0, &mac0); + ALX_MEM_R32(hw, ALX_STAD1, &mac1); + + /* addr should be big-endian */ + *(__be32 *)(addr + 2) = cpu_to_be32(mac0); + *(__be16 *)addr = cpu_to_be16((u16)mac1); + + if (is_valid_ether_addr(addr)) + return 0; + + if ((flag & INTN_LOADED) == 0) { + /* load from efuse ? */ + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + ALX_MEM_R32(hw, ALX_SLD, &val); + if ((val & (ALX_SLD_STAT | ALX_SLD_START)) == 0) + break; + mdelay(1); + } + if (i == ALX_SLD_MAX_TO) + goto out; + ALX_MEM_W32(hw, ALX_SLD, val | ALX_SLD_START); + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + mdelay(1); + ALX_MEM_R32(hw, ALX_SLD, &val); + if ((val & ALX_SLD_START) == 0) + break; + } + if (i == ALX_SLD_MAX_TO) + goto out; + flag |= INTN_LOADED; + goto read_mcadr; + } + + if ((flag & EXTN_LOADED) == 0) { + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & (ALX_EFLD_F_EXIST | ALX_EFLD_E_EXIST)) != 0) { + /* load from eeprom/flash ? */ + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & (ALX_EFLD_STAT | + ALX_EFLD_START)) == 0) { + break; + } + mdelay(1); + } + if (i == ALX_SLD_MAX_TO) + goto out; + ALX_MEM_W32(hw, ALX_EFLD, val | ALX_EFLD_START); + for (i = 0; i < ALX_SLD_MAX_TO; i++) { + mdelay(1); + ALX_MEM_R32(hw, ALX_EFLD, &val); + if ((val & ALX_EFLD_START) == 0) + break; + } + if (i == ALX_SLD_MAX_TO) + goto out; + flag |= EXTN_LOADED; + goto read_mcadr; + } + } + +out: + return ALX_ERR_ALOAD; +} + +void alx_set_macaddr(struct alx_hw *hw, u8 *addr) +{ + u32 val; + + /* for example: 00-0B-6A-F6-00-DC * STAD0=6AF600DC, STAD1=000B */ + val = be32_to_cpu(*(__be32 *)(addr + 2)); + ALX_MEM_W32(hw, ALX_STAD0, val); + val = be16_to_cpu(*(__be16 *)addr); + ALX_MEM_W32(hw, ALX_STAD1, val); +} + +void alx_add_mc_addr(struct alx_hw *hw, u8 *addr) +{ + u32 crc32, bit, reg; + + crc32 = ether_crc(ETH_ALEN, addr); + + /* The HASH Table is a register array of 2 32-bit registers. + * It is treated like an array of 64 bits. We want to set + * bit BitArray[hash_value]. So we figure out what register + * the bit is in, read it, OR in the new bit, then write + * back the new value. The register is determined by the + * upper 7 bits of the hash value and the bit within that + * register are determined by the lower 5 bits of the value. + */ + reg = (crc32 >> 31) & 0x1; + bit = (crc32 >> 26) & 0x1F; + + hw->mc_hash[reg] |= (0x1 << bit); +} + +void alx_enable_osc(struct alx_hw *hw) +{ + u32 val; + + /* rising edge */ + ALX_MEM_R32(hw, ALX_MISC, &val); + ALX_MEM_W32(hw, ALX_MISC, val & ~ALX_MISC_INTNLOSC_OPEN); + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); +} + +void alx_reset_osc(struct alx_hw *hw, u8 rev) +{ + u32 val, val2; + + /* clear Internal OSC settings, switching OSC by hw itself */ + ALX_MEM_R32(hw, ALX_MISC3, &val); + ALX_MEM_W32(hw, ALX_MISC3, + (val & ~ALX_MISC3_25M_BY_SW) | ALX_MISC3_25M_NOTO_INTNL); + + /* 25M clk from chipset may be unstable 1s after de-assert of + * PERST, driver need re-calibrate before enter Sleep for WoL + */ + ALX_MEM_R32(hw, ALX_MISC, &val); + if (rev >= ALX_REV_B0) { + /* restore over current protection def-val, + * this val could be reset by MAC-RST + */ + FIELD_SET32(val, ALX_MISC_PSW_OCP, ALX_MISC_PSW_OCP_DEF); + /* a 0->1 change will update the internal val of osc */ + val &= ~ALX_MISC_INTNLOSC_OPEN; + ALX_MEM_W32(hw, ALX_MISC, val); + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); + /* hw will automatically dis OSC after cab. */ + ALX_MEM_R32(hw, ALX_MSIC2, &val2); + val2 &= ~ALX_MSIC2_CALB_START; + ALX_MEM_W32(hw, ALX_MSIC2, val2); + ALX_MEM_W32(hw, ALX_MSIC2, val2 | ALX_MSIC2_CALB_START); + } else { + val &= ~ALX_MISC_INTNLOSC_OPEN; + /* disable isoloate for A0 */ + if (ALX_REV_A(rev)) + val &= ~ALX_MISC_ISO_EN; + + ALX_MEM_W32(hw, ALX_MISC, val | ALX_MISC_INTNLOSC_OPEN); + ALX_MEM_W32(hw, ALX_MISC, val); + } + + udelay(20); +} + +int alx_reset_mac(struct alx_hw *hw) +{ + u32 val, pmctrl; + int i, ret; + u8 rev; + bool a_cr; + + pmctrl = 0; + rev = (u8)ALX_REVID(hw); + a_cr = ALX_REV_A(rev) && ALX_WITH_CR(hw); + + /* disable all interrupts, RXQ/TXQ */ + ALX_MEM_W32(hw, ALX_MSIX_MASK, 0xFFFFFFFF); + ALX_MEM_W32(hw, ALX_IMR, 0); + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + + ret = alx_stop_mac(hw); + if (ret) + return ret; + + /* mac reset workaroud */ + ALX_MEM_W32(hw, ALX_RFD_PIDX, 1); + + /* dis l0s/l1 before mac reset */ + if (a_cr) { + ALX_MEM_R32(hw, ALX_PMCTRL, &pmctrl); + if ((pmctrl & (ALX_PMCTRL_L1_EN | ALX_PMCTRL_L0S_EN)) != 0) { + ALX_MEM_W32(hw, ALX_PMCTRL, + pmctrl & ~(ALX_PMCTRL_L1_EN | + ALX_PMCTRL_L0S_EN)); + } + } + + /* reset whole mac safely */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + ALX_MEM_W32(hw, ALX_MASTER, + val | ALX_MASTER_DMA_MAC_RST | ALX_MASTER_OOB_DIS); + + /* make sure it's real idle */ + udelay(10); + for (i = 0; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_RFD_PIDX, &val); + if (val == 0) + break; + udelay(10); + } + for (; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_MASTER, &val); + if ((val & ALX_MASTER_DMA_MAC_RST) == 0) + break; + udelay(10); + } + if (i == ALX_DMA_MAC_RST_TO) + return ALX_ERR_RSTMAC; + udelay(10); + + if (a_cr) { + /* set ALX_MASTER_PCLKSEL_SRDS (affect by soft-rst, PERST) */ + ALX_MEM_W32(hw, ALX_MASTER, val | ALX_MASTER_PCLKSEL_SRDS); + /* resoter l0s / l1 */ + if (pmctrl & (ALX_PMCTRL_L1_EN | ALX_PMCTRL_L0S_EN)) + ALX_MEM_W32(hw, ALX_PMCTRL, pmctrl); + } + + alx_reset_osc(hw, rev); + /* clear Internal OSC settings, switching OSC by hw itself, + * disable isoloate for A version + */ + ALX_MEM_R32(hw, ALX_MISC3, &val); + ALX_MEM_W32(hw, ALX_MISC3, + (val & ~ALX_MISC3_25M_BY_SW) | ALX_MISC3_25M_NOTO_INTNL); + ALX_MEM_R32(hw, ALX_MISC, &val); + val &= ~ALX_MISC_INTNLOSC_OPEN; + if (ALX_REV_A(rev)) + val &= ~ALX_MISC_ISO_EN; + ALX_MEM_W32(hw, ALX_MISC, val); + udelay(20); + + /* driver control speed/duplex, hash-alg */ + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); + + /* clk sw */ + ALX_MEM_R32(hw, ALX_SERDES, &val); + ALX_MEM_W32(hw, ALX_SERDES, + val | ALX_SERDES_MACCLK_SLWDWN | ALX_SERDES_PHYCLK_SLWDWN); + + /* mac reset cause MDIO ctrl restore non-polling status */ + if (hw->is_fpga) + __alx_start_phy_polling(hw, ALX_MDIO_CLK_SEL_25MD128); + + + return ret; +} + +/* alx_reset_phy + * completely reset phy, all settings/workaround will be re-configureed + * hib_en: enable/disable hibernation on PHY + */ +void alx_reset_phy(struct alx_hw *hw, bool hib_en) +{ + int i; + u32 val; + u16 phy_val; + + /* (DSP)reset PHY core */ + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + val &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_IDDQ | + ALX_PHY_CTRL_GATE_25M | ALX_PHY_CTRL_POWER_DOWN | + ALX_PHY_CTRL_CLS); + val |= ALX_PHY_CTRL_RST_ANALOG; + + if (hib_en) + val |= (ALX_PHY_CTRL_HIB_PULSE | ALX_PHY_CTRL_HIB_EN); + else + val &= ~(ALX_PHY_CTRL_HIB_PULSE | ALX_PHY_CTRL_HIB_EN); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val); + udelay(10); + ALX_MEM_W32(hw, ALX_PHY_CTRL, val | ALX_PHY_CTRL_DSPRST_OUT); + + /* delay 800us */ + for (i = 0; i < ALX_PHY_CTRL_DSPRST_TO; i++) + udelay(10); + + if (hw->is_fpga) + goto set_imr; + + /* phy power saving & hib */ + if (hib_en) { + alx_write_phy_dbg(hw, ALX_MIIDBG_LEGCYPS, ALX_LEGCYPS_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_SYSMODCTRL, + ALX_SYSMODCTRL_IECHOADJ_DEF); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_VDRVBIAS, + ALX_VDRVBIAS_DEF); + } else { + alx_write_phy_dbg(hw, ALX_MIIDBG_LEGCYPS, + ALX_LEGCYPS_DEF & ~ALX_LEGCYPS_EN); + alx_write_phy_dbg(hw, ALX_MIIDBG_HIBNEG, ALX_HIBNEG_NOHIB); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG, ALX_GREENCFG_DEF); + } + + /* EEE advertisement */ + if (ALX_CAP(hw, AZ)) { + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_LOCAL_EEEADV, + ALX_CAP(hw, GIGA) ? + ALX_LOCAL_EEEADV_1000BT | ALX_LOCAL_EEEADV_100BT : + ALX_LOCAL_EEEADV_100BT); + /* half amplify */ + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_DEF); + } else { + ALX_MEM_R32(hw, ALX_LPI_CTRL, &val); + ALX_MEM_W32(hw, ALX_LPI_CTRL, val & ~ALX_LPI_CTRL_EN); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_LOCAL_EEEADV, 0); + } + + /* phy power saving */ + alx_write_phy_dbg(hw, ALX_MIIDBG_TST10BTCFG, ALX_TST10BTCFG_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, ALX_SRDSYSMOD_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_TST100BTCFG, ALX_TST100BTCFG_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_ANACTRL, ALX_ANACTRL_DEF); + alx_read_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, &phy_val); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, + phy_val & ~ALX_GREENCFG2_GATE_DFSE_EN); + /* rtl8139c, 120m issue */ + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_NLP78, + ALX_MIIEXT_NLP78_120M_DEF); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_S3DIG10, + ALX_MIIEXT_S3DIG10_DEF); + + if (hw->lnk_patch) { + /* Turn off half amplitude */ + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL3, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL3, + phy_val | ALX_CLDCTRL3_BP_CABLE1TH_DET_GT); + /* Turn off Green feature */ + alx_read_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, &phy_val); + alx_write_phy_dbg(hw, ALX_MIIDBG_GREENCFG2, + phy_val | ALX_GREENCFG2_BP_GREEN); + /* Turn off half Bias */ + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL5, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL5, + phy_val | ALX_CLDCTRL5_BP_VD_HLFBIAS); + } + +set_imr: + /* set phy interrupt mask */ + alx_write_phy_reg(hw, ALX_MII_IER, + ALX_IER_LINK_UP | ALX_IER_LINK_DOWN); +} + +#define ALX_PCI_CMD (\ + PCI_COMMAND_MASTER |\ + PCI_COMMAND_MEMORY |\ + PCI_COMMAND_IO) +/* + * alx_reset_pcie + * reset pcie relative registers (pci command, clk, aspm...) + */ +void alx_reset_pcie(struct alx_hw *hw) +{ + u32 val; + u16 val16; + u8 rev = (u8)ALX_REVID(hw); + + /* Workaround for PCI problem when BIOS sets MMRBC incorrectly. */ + ALX_CFG_R16(hw, PCI_COMMAND, &val16); + if (!(val16 & ALX_PCI_CMD) || (val16 & PCI_COMMAND_INTX_DISABLE)) { + val16 = (val16 | ALX_PCI_CMD) & ~PCI_COMMAND_INTX_DISABLE; + ALX_CFG_W16(hw, PCI_COMMAND, val16); + } + + /* clear WoL setting/status */ + ALX_MEM_R32(hw, ALX_WOL0, &val); + ALX_MEM_W32(hw, ALX_WOL0, 0); + + /* deflt val of PDLL D3PLLOFF */ + ALX_MEM_R32(hw, ALX_PDLL_TRNS1, &val); + ALX_MEM_W32(hw, ALX_PDLL_TRNS1, val & ~ALX_PDLL_TRNS1_D3PLLOFF_EN); + + /* mask some pcie error bits */ + ALX_MEM_R32(hw, ALX_UE_SVRT, &val); + val &= ~(ALX_UE_SVRT_DLPROTERR | ALX_UE_SVRT_FCPROTERR); + ALX_MEM_W32(hw, ALX_UE_SVRT, val); + + /* wol 25M & pclk */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + if (ALX_REV_A(rev) && ALX_WITH_CR(hw)) { + if ((val & ALX_MASTER_WAKEN_25M) == 0 || + (val & ALX_MASTER_PCLKSEL_SRDS) == 0) { + ALX_MEM_W32(hw, ALX_MASTER, + val | ALX_MASTER_PCLKSEL_SRDS | + ALX_MASTER_WAKEN_25M); + } + } else { + if ((val & ALX_MASTER_WAKEN_25M) == 0 || + (val & ALX_MASTER_PCLKSEL_SRDS) != 0) { + ALX_MEM_W32(hw, ALX_MASTER, + (val & ~ALX_MASTER_PCLKSEL_SRDS) | + ALX_MASTER_WAKEN_25M); + } + } + + /* ASPM setting */ + alx_enable_aspm(hw, ALX_CAP(hw, L0S), ALX_CAP(hw, L1)); + + udelay(10); +} + +/* alx_stop_mac + * stop the mac, transmit & receive modules + * return : 0 if ok, none-0 if busy + */ +int alx_stop_mac(struct alx_hw *hw) +{ + u32 rxq, txq, val; + u16 i; + + ALX_MEM_R32(hw, ALX_RXQ0, &rxq); + ALX_MEM_W32(hw, ALX_RXQ0, rxq & ~ALX_RXQ0_EN); + ALX_MEM_R32(hw, ALX_TXQ0, &txq); + ALX_MEM_W32(hw, ALX_TXQ0, txq & ~ALX_TXQ0_EN); + + udelay(40); + + hw->rx_ctrl &= ~(ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN); + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); + + for (i = 0; i < ALX_DMA_MAC_RST_TO; i++) { + ALX_MEM_R32(hw, ALX_MAC_STS, &val); + if (!(val & ALX_MAC_STS_IDLE)) + break; + udelay(10); + } + + return (ALX_DMA_MAC_RST_TO == i) ? ALX_ERR_RSTMAC : 0; +} + +/* alx_start_mac + * enable rx/tx MAC module + */ +void alx_start_mac(struct alx_hw *hw) +{ + u32 mac, txq, rxq; + + ALX_MEM_R32(hw, ALX_RXQ0, &rxq); + ALX_MEM_W32(hw, ALX_RXQ0, rxq | ALX_RXQ0_EN); + ALX_MEM_R32(hw, ALX_TXQ0, &txq); + ALX_MEM_W32(hw, ALX_TXQ0, txq | ALX_TXQ0_EN); + + mac = hw->rx_ctrl; + if (hw->link_duplex == FULL_DUPLEX) + mac |= ALX_MAC_CTRL_FULLD; + else + mac &= ~ALX_MAC_CTRL_FULLD; + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, hw->link_speed == SPEED_1000 ? + ALX_MAC_CTRL_SPEED_1000 : ALX_MAC_CTRL_SPEED_10_100); + mac |= ALX_MAC_CTRL_TX_EN | ALX_MAC_CTRL_RX_EN; + hw->rx_ctrl = mac; + ALX_MEM_W32(hw, ALX_MAC_CTRL, mac); +} + +/* set flow control on MAC side */ +void alx_cfg_mac_fc(struct alx_hw *hw, u8 fc) +{ + if (fc & ALX_FC_RX) + hw->rx_ctrl |= ALX_MAC_CTRL_RXFC_EN; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_RXFC_EN; + + if (fc & ALX_FC_TX) + hw->rx_ctrl |= ALX_MAC_CTRL_TXFC_EN; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_TXFC_EN; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + +/* enable/disable aspm support */ +void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en) +{ + u32 pmctrl; + u8 rev = (u8)ALX_REVID(hw); + + ALX_MEM_R32(hw, ALX_PMCTRL, &pmctrl); + + FIELD_SET32(pmctrl, ALX_PMCTRL_LCKDET_TIMER, + ALX_PMCTRL_LCKDET_TIMER_DEF); + pmctrl |= ALX_PMCTRL_RCVR_WT_1US | + ALX_PMCTRL_L1_CLKSW_EN | + ALX_PMCTRL_L1_SRDSRX_PWD ; + FIELD_SET32(pmctrl, ALX_PMCTRL_L1REQ_TO, ALX_PMCTRL_L1REG_TO_DEF); + FIELD_SET32(pmctrl, ALX_PMCTRL_L1_TIMER, ALX_PMCTRL_L1_TIMER_16US); + pmctrl &= ~(ALX_PMCTRL_L1_SRDS_EN | + ALX_PMCTRL_L1_SRDSPLL_EN | + ALX_PMCTRL_L1_BUFSRX_EN | + ALX_PMCTRL_SADLY_EN | + ALX_PMCTRL_HOTRST_WTEN| + ALX_PMCTRL_L0S_EN | + ALX_PMCTRL_L1_EN | + ALX_PMCTRL_ASPM_FCEN | + ALX_PMCTRL_TXL1_AFTER_L0S | + ALX_PMCTRL_RXL1_AFTER_L0S + ); + if (ALX_REV_A(rev) && ALX_WITH_CR(hw)) + pmctrl |= ALX_PMCTRL_L1_SRDS_EN | ALX_PMCTRL_L1_SRDSPLL_EN; + + if (l0s_en) + pmctrl |= (ALX_PMCTRL_L0S_EN | ALX_PMCTRL_ASPM_FCEN); + if (l1_en) + pmctrl |= (ALX_PMCTRL_L1_EN | ALX_PMCTRL_ASPM_FCEN); + + ALX_MEM_W32(hw, ALX_PMCTRL, pmctrl); +} + + +/* translate ethtool adv /speed/duplex settting to hw specific value */ +u32 ethadv_to_hw_cfg(struct alx_hw *hw, u32 ethadv_cfg) +{ + u32 cfg = 0; + + if (ethadv_cfg & ADVERTISED_Autoneg) { + cfg |= ALX_DRV_PHY_AUTO; + if (ethadv_cfg & ADVERTISED_10baseT_Half) + cfg |= ALX_DRV_PHY_10; + if (ethadv_cfg & ADVERTISED_10baseT_Full) + cfg |= ALX_DRV_PHY_10 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_100baseT_Half) + cfg |= ALX_DRV_PHY_100; + if (ethadv_cfg & ADVERTISED_100baseT_Full) + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_1000baseT_Half) + cfg |= ALX_DRV_PHY_1000; + if (ethadv_cfg & ADVERTISED_1000baseT_Full) + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + if (ethadv_cfg & ADVERTISED_Pause) + cfg |= ADVERTISE_PAUSE_CAP; + if (ethadv_cfg & ADVERTISED_Asym_Pause) + cfg |= ADVERTISE_PAUSE_ASYM; + if (ALX_CAP(hw, AZ)) + cfg |= ALX_DRV_PHY_EEE; + } else { + switch (ethadv_cfg) { + case ADVERTISED_10baseT_Half: + cfg |= ALX_DRV_PHY_10; + break; + case ADVERTISED_100baseT_Half: + cfg |= ALX_DRV_PHY_100; + break; + case ADVERTISED_10baseT_Full: + cfg |= ALX_DRV_PHY_10 | ALX_DRV_PHY_DUPLEX; + break; + case ADVERTISED_100baseT_Full: + cfg |= ALX_DRV_PHY_100 | ALX_DRV_PHY_DUPLEX; + break; + } + } + + return cfg; +} + +/* initialize phy for speed / flow control + * ethadv: + * format from ethtool, we use it for both autoneg and force mode + */ +int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl) +{ + u16 adv, giga, cr; + u32 val; + int err = 0; + + /* clear flag */ + alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, 0); + ALX_MEM_R32(hw, ALX_DRV, &val); + FIELD_SET32(val, ALX_DRV_PHY, 0); + + if (ethadv & ADVERTISED_Autoneg) { + adv = ADVERTISE_CSMA; + adv |= ethtool_adv_to_mii_adv_t(ethadv); + + if (flowctrl & ALX_FC_ANEG) { + if (flowctrl & ALX_FC_RX) { + adv |= ADVERTISED_Pause; + if (!(flowctrl & ALX_FC_TX)) + adv |= ADVERTISED_Asym_Pause; + } else if (flowctrl & ALX_FC_TX) + adv |= ADVERTISED_Asym_Pause; + } + giga = 0; + if (ALX_CAP(hw, GIGA)) + giga = ethtool_adv_to_mii_ctrl1000_t(ethadv); + + cr = BMCR_RESET | BMCR_ANENABLE | BMCR_ANRESTART; + + if (alx_write_phy_reg(hw, MII_ADVERTISE, adv) || + alx_write_phy_reg(hw, MII_CTRL1000, giga) || + alx_write_phy_reg(hw, MII_BMCR, cr)) + err = ALX_ERR_MIIBUSY; + } else { + cr = BMCR_RESET; + if (ethadv == ADVERTISED_100baseT_Half || + ethadv == ADVERTISED_100baseT_Full) + cr |= BMCR_SPEED100; + if (ethadv == ADVERTISED_10baseT_Full || + ethadv == ADVERTISED_100baseT_Full) + cr |= BMCR_FULLDPLX; + + err = alx_write_phy_reg(hw, MII_BMCR, cr); + } + + if (!err) { + alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, ALX_PHY_INITED); + /* save config to HW */ + val |= ethadv_to_hw_cfg(hw, ethadv); + } + + ALX_MEM_W32(hw, ALX_DRV, val); + + return err; +} + + +/* do post setting on phy if link up/down event occur */ +void alx_post_phy_link(struct alx_hw *hw, u16 speed, bool az_en) +{ + u16 phy_val, len, agc; + u8 revid = (u8)ALX_REVID(hw); + bool adj_th; + + if (revid != ALX_REV_B0 && + revid != ALX_REV_A1 && + revid != ALX_REV_A0) { + return; + } + adj_th = (revid == ALX_REV_B0) ? true : false; + + /* 1000BT/AZ, wrong cable length */ + if (speed != SPEED_0) { + alx_read_phy_ext(hw, ALX_MIIEXT_PCS, ALX_MIIEXT_CLDCTRL6, + &phy_val); + len = FIELD_GETX(phy_val, ALX_CLDCTRL6_CAB_LEN); + alx_read_phy_dbg(hw, ALX_MIIDBG_AGC, &phy_val); + agc = FIELD_GETX(phy_val, ALX_AGC_2_VGA); + + if ((speed == SPEED_1000 && + (len > ALX_CLDCTRL6_CAB_LEN_SHORT1G || + (0 == len && agc > ALX_AGC_LONG1G_LIMT))) || + (speed == SPEED_100 && + (len > ALX_CLDCTRL6_CAB_LEN_SHORT100M || + (0 == len && agc > ALX_AGC_LONG100M_LIMT)))) { + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_LONG); + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val | ALX_AFE_10BT_100M_TH); + } else { + alx_write_phy_dbg(hw, ALX_MIIDBG_AZ_ANADECT, + ALX_AZ_ANADECT_DEF); + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_AFE, &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val & ~ALX_AFE_10BT_100M_TH); + } + + /* threashold adjust */ + if (adj_th && hw->lnk_patch) { + if (speed == SPEED_100) { + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE16DB, + ALX_MSE16DB_UP); + } else if (speed == SPEED_1000) { + /* + * Giga link threshold, raise the tolerance of + * noise 50% + */ + alx_read_phy_dbg(hw, ALX_MIIDBG_MSE20DB, + &phy_val); + FIELD_SETS(phy_val, ALX_MSE20DB_TH, + ALX_MSE20DB_TH_HI); + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE20DB, + phy_val); + } + } + /* phy link-down in 1000BT/AZ mode */ + if (az_en && revid == ALX_REV_B0 && speed == SPEED_1000) { + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, + ALX_SRDSYSMOD_DEF & ~ALX_SRDSYSMOD_DEEMP_EN); + } + } else { + alx_read_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + &phy_val); + alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, ALX_MIIEXT_AFE, + phy_val & ~ALX_AFE_10BT_100M_TH); + + if (adj_th && hw->lnk_patch) { + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE16DB, + ALX_MSE16DB_DOWN); + alx_read_phy_dbg(hw, ALX_MIIDBG_MSE20DB, &phy_val); + FIELD_SETS(phy_val, ALX_MSE20DB_TH, ALX_MSE20DB_TH_DEF); + alx_write_phy_dbg(hw, ALX_MIIDBG_MSE20DB, phy_val); + } + if (az_en && revid == ALX_REV_B0) { + alx_write_phy_dbg(hw, ALX_MIIDBG_SRDSYSMOD, + ALX_SRDSYSMOD_DEF); + } + } +} + + +/* do power saving setting befor enter suspend mode + * NOTE: + * 1. phy link must be established before calling this function + * 2. wol option (pattern,magic,link,etc.) is configed before call it. + */ +int alx_pre_suspend(struct alx_hw *hw, u16 speed) +{ + u32 master, mac, phy, val; + int err = 0; + + ALX_MEM_R32(hw, ALX_MASTER, &master); + master &= ~ALX_MASTER_PCLKSEL_SRDS; + mac = hw->rx_ctrl; + /* 10/100 half */ + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_10_100); + mac &= ~(ALX_MAC_CTRL_FULLD | ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_TX_EN); + + ALX_MEM_R32(hw, ALX_PHY_CTRL, &phy); + phy &= ~(ALX_PHY_CTRL_DSPRST_OUT | ALX_PHY_CTRL_CLS); + phy |= ALX_PHY_CTRL_RST_ANALOG | ALX_PHY_CTRL_HIB_PULSE | + ALX_PHY_CTRL_HIB_EN; + + /* without any activity */ + if (!(hw->sleep_ctrl & ALX_SLEEP_ACTIVE)) { + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + phy |= ALX_PHY_CTRL_IDDQ | ALX_PHY_CTRL_POWER_DOWN; + goto config_reg; + } + + if (hw->sleep_ctrl & (ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_CIFS)) + mac |= ALX_MAC_CTRL_RX_EN | ALX_MAC_CTRL_BRD_EN; + if (hw->sleep_ctrl & ALX_SLEEP_CIFS) + mac |= ALX_MAC_CTRL_TX_EN; + if (speed % 10 == FULL_DUPLEX) + mac |= ALX_MAC_CTRL_FULLD; + if (speed >= SPEED_1000) + FIELD_SET32(mac, ALX_MAC_CTRL_SPEED, ALX_MAC_CTRL_SPEED_1000); + phy |= ALX_PHY_CTRL_DSPRST_OUT; + err = alx_write_phy_ext(hw, ALX_MIIEXT_ANEG, + ALX_MIIEXT_S3DIG10, ALX_MIIEXT_S3DIG10_SL); +config_reg: + + if (!err) { + alx_enable_osc(hw); + hw->rx_ctrl = mac; + ALX_MEM_W32(hw, ALX_MASTER, master); + ALX_MEM_W32(hw, ALX_MAC_CTRL, mac); + ALX_MEM_W32(hw, ALX_PHY_CTRL, phy); + + /* set val of PDLL D3PLLOFF */ + ALX_MEM_R32(hw, ALX_PDLL_TRNS1, &val); + val |= ALX_PDLL_TRNS1_D3PLLOFF_EN; + ALX_MEM_W32(hw, ALX_PDLL_TRNS1, val); + } + + return err; +} + +/* wait mdio module to be idle */ +bool __alx_wait_mdio_idle(struct alx_hw *hw) +{ + u32 val; + int i; + + for (i = 0; i < ALX_MDIO_MAX_AC_TO; i++) { + ALX_MEM_R32(hw, ALX_MDIO, &val); + if (!(val & ALX_MDIO_BUSY)) + break; + udelay(10); + } + return i != ALX_MDIO_MAX_AC_TO; +} + +void __alx_stop_phy_polling(struct alx_hw *hw) +{ + if (!hw->is_fpga) + return; + + ALX_MEM_W32(hw, ALX_MDIO, 0); + __alx_wait_mdio_idle(hw); +} + +void __alx_start_phy_polling(struct alx_hw *hw, u16 clk_sel) +{ + u32 val; + + if (!hw->is_fpga) + return; + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, 1) | + ALX_MDIO_START | + ALX_MDIO_OP_READ; + ALX_MEM_W32(hw, ALX_MDIO, val); + __alx_wait_mdio_idle(hw); + val |= ALX_MDIO_AUTO_POLLING; + val &= ~ALX_MDIO_START; + ALX_MEM_W32(hw, ALX_MDIO, val); + udelay(30); +} + +/* __alx_read_phy_core + * core function to read register in PHY via MDIO interface + * ext: extension register (see IEEE 802.3) + * dev: device address (see IEEE 802.3 DEVAD, PRTAD is fixed to 0) + * reg: register to read + */ +int __alx_read_phy_core(struct alx_hw *hw, bool ext, u8 dev, + u16 reg, u16 *phy_data) +{ + u32 val, clk_sel; + int err; + + __alx_stop_phy_polling(hw); + + *phy_data = 0; + + /* use slow clock when it's in hibernation status */ + clk_sel = !hw->link_up ? + ALX_MDIO_CLK_SEL_25MD128 : ALX_MDIO_CLK_SEL_25MD4; + + if (ext) { + val = FIELDX(ALX_MDIO_EXTN_DEVAD, dev) | + FIELDX(ALX_MDIO_EXTN_REG, reg); + ALX_MEM_W32(hw, ALX_MDIO_EXTN, val); + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + ALX_MDIO_START | + ALX_MDIO_MODE_EXT | + ALX_MDIO_OP_READ; + } else { + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, reg) | + ALX_MDIO_START | + ALX_MDIO_OP_READ; + } + ALX_MEM_W32(hw, ALX_MDIO, val); + + if (unlikely(!__alx_wait_mdio_idle(hw))) + err = ALX_ERR_MIIBUSY; + else { + ALX_MEM_R32(hw, ALX_MDIO, &val); + *phy_data = (u16)FIELD_GETX(val, ALX_MDIO_DATA); + err = 0; + } + + __alx_start_phy_polling(hw, clk_sel); + + return err; +} + +/* __alx_write_phy_core + * core function to write to register in PHY via MDIO interface + * ext: extension register (see IEEE 802.3) + * dev: device address (see IEEE 802.3 DEVAD, PRTAD is fixed to 0) + * reg: register to write + */ +int __alx_write_phy_core(struct alx_hw *hw, bool ext, u8 dev, + u16 reg, u16 phy_data) +{ + u32 val, clk_sel; + int err = 0; + + __alx_stop_phy_polling(hw); + + /* use slow clock when it's in hibernation status */ + clk_sel = !hw->link_up ? + ALX_MDIO_CLK_SEL_25MD128 : ALX_MDIO_CLK_SEL_25MD4; + + if (ext) { + val = FIELDX(ALX_MDIO_EXTN_DEVAD, dev) | + FIELDX(ALX_MDIO_EXTN_REG, reg); + ALX_MEM_W32(hw, ALX_MDIO_EXTN, val); + + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_DATA, phy_data) | + ALX_MDIO_START | + ALX_MDIO_MODE_EXT; + } else { + val = ALX_MDIO_SPRES_PRMBL | + FIELDX(ALX_MDIO_CLK_SEL, clk_sel) | + FIELDX(ALX_MDIO_REG, reg) | + FIELDX(ALX_MDIO_DATA, phy_data) | + ALX_MDIO_START; + } + ALX_MEM_W32(hw, ALX_MDIO, val); + + if (unlikely(!__alx_wait_mdio_idle(hw))) + err = ALX_ERR_MIIBUSY; + + __alx_start_phy_polling(hw, clk_sel); + + return err; +} + +/* read from PHY normal register */ +int __alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data) +{ + return __alx_read_phy_core(hw, false, 0, reg, phy_data); +} + +/* write to PHY normal register */ +int __alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data) +{ + return __alx_write_phy_core(hw, false, 0, reg, phy_data); +} + +/* read from PHY extension register */ +int __alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata) +{ + return __alx_read_phy_core(hw, true, dev, reg, pdata); +} + +/* write to PHY extension register */ +int __alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data) +{ + return __alx_write_phy_core(hw, true, dev, reg, data); +} + +/* read from PHY debug port */ +int __alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata) +{ + int err; + + err = __alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, reg); + if (unlikely(err)) + return err; + else + err = __alx_read_phy_reg(hw, ALX_MII_DBG_DATA, pdata); + + return err; +} + +/* write to PHY debug port */ +int __alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data) +{ + int err; + + err = __alx_write_phy_reg(hw, ALX_MII_DBG_ADDR, reg); + if (unlikely(err)) + return err; + else + err = __alx_write_phy_reg(hw, ALX_MII_DBG_DATA, data); + + return err; +} + +int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_reg(hw, reg, phy_data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_reg(hw, reg, phy_data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_ext(hw, dev, reg, pdata); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_ext(hw, dev, reg, data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_read_phy_dbg(hw, reg, pdata); + spin_unlock(&hw->mdio_lock); + + return err; +} + +int alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data) +{ + int err; + + spin_lock(&hw->mdio_lock); + err = __alx_write_phy_dbg(hw, reg, data); + spin_unlock(&hw->mdio_lock); + + return err; +} + +u16 alx_get_phy_config(struct alx_hw *hw) +{ + u32 val; + u16 phy_val; + + ALX_MEM_R32(hw, ALX_PHY_CTRL, &val); + /* phy in rst */ + if ((val & ALX_PHY_CTRL_DSPRST_OUT) == 0) + return ALX_DRV_PHY_UNKNOWN; + + ALX_MEM_R32(hw, ALX_DRV, &val); + val = FIELD_GETX(val, ALX_DRV_PHY); + if (ALX_DRV_PHY_UNKNOWN == val) + return ALX_DRV_PHY_UNKNOWN; + + alx_read_phy_reg(hw, ALX_MII_DBG_ADDR, &phy_val); + if (ALX_PHY_INITED == phy_val) + return (u16) val; + + return ALX_DRV_PHY_UNKNOWN; +} + +bool alx_phy_configed(struct alx_hw *hw) +{ + u32 cfg, hw_cfg; + + cfg = ethadv_to_hw_cfg(hw, hw->adv_cfg); + cfg = FIELD_GETX(cfg, ALX_DRV_PHY); + hw_cfg = alx_get_phy_config(hw); + if (hw_cfg == ALX_DRV_PHY_UNKNOWN) + return false; + + return cfg == hw_cfg; +} + +int alx_get_phy_link(struct alx_hw *hw, bool *link_up, u16 *speed) +{ + struct pci_dev *pdev = hw->pdev; + u16 bmsr, giga; + int err; + + err = alx_read_phy_reg(hw, MII_BMSR, &bmsr); + err = alx_read_phy_reg(hw, MII_BMSR, &bmsr); + if (unlikely(err)) + goto out; + + if (!(bmsr & BMSR_LSTATUS)) { + *link_up = false; + goto out; + } + + *link_up = true; + + /* speed/duplex result is saved in PHY Specific Status Register */ + err = alx_read_phy_reg(hw, ALX_MII_GIGA_PSSR, &giga); + if (unlikely(err)) + goto out; + + if (!(giga & ALX_GIGA_PSSR_SPD_DPLX_RESOLVED)) + goto wrong_spd_out; + + switch (giga & ALX_GIGA_PSSR_SPEED) { + case ALX_GIGA_PSSR_1000MBS: + *speed = SPEED_1000; + break; + case ALX_GIGA_PSSR_100MBS: + *speed = SPEED_100; + break; + case ALX_GIGA_PSSR_10MBS: + *speed = SPEED_10; + break; + default: + goto wrong_spd_out; + } + *speed += (giga & ALX_GIGA_PSSR_DPLX) ? FULL_DUPLEX : HALF_DUPLEX; + goto out; + +wrong_spd_out: + dev_err(&pdev->dev, "PHY SPD/DPLX unresolved :%x\n", giga); + err = -EINVAL; +out: + return err; +} + +int alx_clear_phy_intr(struct alx_hw *hw) +{ + u16 isr; + + /* clear interrupt status by read it */ + return alx_read_phy_reg(hw, ALX_MII_ISR, &isr); +} + +int alx_config_wol(struct alx_hw *hw) +{ + u32 wol; + int err = 0; + + wol = 0; + /* turn on magic packet event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_MAGIC) { + wol |= ALX_WOL0_MAGIC_EN | ALX_WOL0_PME_MAGIC_EN; + /* magic packet maybe Broadcast&multicast&Unicast frame */ + /* mac |= MAC_CTRL_BC_EN; */ + } + + /* turn on link up event */ + if (hw->sleep_ctrl & ALX_SLEEP_WOL_PHY) { + wol |= ALX_WOL0_LINK_EN | ALX_WOL0_PME_LINK; + /* only link up can wake up */ + err = alx_write_phy_reg(hw, ALX_MII_IER, ALX_IER_LINK_UP); + } + ALX_MEM_W32(hw, ALX_WOL0, wol); + + return err; +} + +void alx_configure_rss(struct alx_hw *hw, bool en) +{ + u32 ctrl; + int i; + + ALX_MEM_R32(hw, ALX_RXQ0, &ctrl); + + if (en) { + for (i = 0; i < sizeof(hw->rss_key); i++) { + /* rss key should be saved in chip with + * reversed order. + */ + int j = sizeof(hw->rss_key) - i - 1; + + ALX_MEM_W8(hw, ALX_RSS_KEY0 + j, hw->rss_key[i]); + } + + for (i = 0; i < ARRAY_SIZE(hw->rss_idt); i++) + ALX_MEM_W32(hw, ALX_RSS_IDT_TBL0 + i * 4, + hw->rss_idt[i]); + + FIELD_SET32(ctrl, ALX_RXQ0_RSS_HSTYP, hw->rss_hash_type); + FIELD_SET32(ctrl, ALX_RXQ0_RSS_MODE, ALX_RXQ0_RSS_MODE_MQMI); + FIELD_SET32(ctrl, ALX_RXQ0_IDT_TBL_SIZE, hw->rss_idt_size); + ctrl |= ALX_RXQ0_RSS_HASH_EN; + } else { + ctrl &= ~ALX_RXQ0_RSS_HASH_EN; + } + + ALX_MEM_W32(hw, ALX_RXQ0, ctrl); +} + +void alx_configure_basic(struct alx_hw *hw) +{ + u32 val, raw_mtu, max_payload; + u16 val16; + u8 chip_rev = ALX_REVID(hw); + + /* mac address */ + alx_set_macaddr(hw, hw->mac_addr); + + /* clk gating */ + ALX_MEM_W32(hw, ALX_CLK_GATE, ALX_CLK_GATE_ALL_A0); + + /* idle timeout to switch clk_125M */ + if (chip_rev >= ALX_REV_B0) { + ALX_MEM_W32(hw, ALX_IDLE_DECISN_TIMER, + ALX_IDLE_DECISN_TIMER_DEF); + } + + /* stats refresh timeout */ + ALX_MEM_W32(hw, ALX_SMB_TIMER, hw->smb_timer * 500UL); + + /* intr moduration */ + ALX_MEM_R32(hw, ALX_MASTER, &val); + val = val | ALX_MASTER_IRQMOD2_EN | + ALX_MASTER_IRQMOD1_EN | + ALX_MASTER_SYSALVTIMER_EN; + ALX_MEM_W32(hw, ALX_MASTER, val); + ALX_MEM_W32(hw, ALX_IRQ_MODU_TIMER, + FIELDX(ALX_IRQ_MODU_TIMER1, hw->imt >> 1)); + /* intr re-trig timeout */ + ALX_MEM_W32(hw, ALX_INT_RETRIG, ALX_INT_RETRIG_TO); + /* tpd threshold to trig int */ + ALX_MEM_W32(hw, ALX_TINT_TPD_THRSHLD, hw->ith_tpd); + ALX_MEM_W32(hw, ALX_TINT_TIMER, hw->imt); + + /* mtu, 8:fcs+vlan */ + raw_mtu = hw->mtu + ETH_HLEN; + ALX_MEM_W32(hw, ALX_MTU, raw_mtu + 8); + if (raw_mtu > ALX_MTU_JUMBO_TH) + hw->rx_ctrl &= ~ALX_MAC_CTRL_FAST_PAUSE; + + /* txq */ + if ((raw_mtu + 8) < ALX_TXQ1_JUMBO_TSO_TH) + val = (raw_mtu + 8 + 7) >> 3; + else + val = ALX_TXQ1_JUMBO_TSO_TH >> 3; + ALX_MEM_W32(hw, ALX_TXQ1, val | ALX_TXQ1_ERRLGPKT_DROP_EN); + max_payload = alx_get_readrq(hw) >> 8; + /* + * if BIOS had changed the default dma read max length, + * restore it to default value + */ + if (max_payload < ALX_DEV_CTRL_MAXRRS_MIN) + alx_set_readrq(hw, 128 << ALX_DEV_CTRL_MAXRRS_MIN); + + val = FIELDX(ALX_TXQ0_TPD_BURSTPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + ALX_TXQ0_MODE_ENHANCE | + ALX_TXQ0_LSO_8023_EN | + ALX_TXQ0_SUPT_IPOPT | + FIELDX(ALX_TXQ0_TXF_BURST_PREF, ALX_TXQ_TXF_BURST_PREF_DEF); + ALX_MEM_W32(hw, ALX_TXQ0, val); + val = FIELDX(ALX_HQTPD_Q1_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + FIELDX(ALX_HQTPD_Q2_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + FIELDX(ALX_HQTPD_Q3_NUMPREF, ALX_TXQ_TPD_BURSTPREF_DEF) | + ALX_HQTPD_BURST_EN; + ALX_MEM_W32(hw, ALX_HQTPD, val); + + /* rxq, flow control */ + ALX_MEM_R32(hw, ALX_SRAM5, &val); + val = FIELD_GETX(val, ALX_SRAM_RXF_LEN) << 3; + if (val > ALX_SRAM_RXF_LEN_8K) { + val16 = ALX_MTU_STD_ALGN >> 3; + val = (val - ALX_RXQ2_RXF_FLOW_CTRL_RSVD) >> 3; + } else { + val16 = ALX_MTU_STD_ALGN >> 3; + val = (val - ALX_MTU_STD_ALGN) >> 3; + } + ALX_MEM_W32(hw, ALX_RXQ2, + FIELDX(ALX_RXQ2_RXF_XOFF_THRESH, val16) | + FIELDX(ALX_RXQ2_RXF_XON_THRESH, val)); + val = FIELDX(ALX_RXQ0_NUM_RFD_PREF, ALX_RXQ0_NUM_RFD_PREF_DEF) | + FIELDX(ALX_RXQ0_RSS_MODE, ALX_RXQ0_RSS_MODE_DIS) | + FIELDX(ALX_RXQ0_IDT_TBL_SIZE, ALX_RXQ0_IDT_TBL_SIZE_DEF) | + ALX_RXQ0_RSS_HSTYP_ALL | + ALX_RXQ0_RSS_HASH_EN | + ALX_RXQ0_IPV6_PARSE_EN; + if (ALX_CAP(hw, GIGA)) { + FIELD_SET32(val, ALX_RXQ0_ASPM_THRESH, + ALX_RXQ0_ASPM_THRESH_100M); + } + ALX_MEM_W32(hw, ALX_RXQ0, val); + + /* DMA */ + ALX_MEM_R32(hw, ALX_DMA, &val); + val = FIELDX(ALX_DMA_RORDER_MODE, ALX_DMA_RORDER_MODE_OUT) | + ALX_DMA_RREQ_PRI_DATA | + FIELDX(ALX_DMA_RREQ_BLEN, max_payload) | + FIELDX(ALX_DMA_WDLY_CNT, ALX_DMA_WDLY_CNT_DEF) | + FIELDX(ALX_DMA_RDLY_CNT, ALX_DMA_RDLY_CNT_DEF) | + FIELDX(ALX_DMA_RCHNL_SEL, hw->dma_chnl - 1); + ALX_MEM_W32(hw, ALX_DMA, val); + + /* multi-tx-q weight */ + if (ALX_CAP(hw, MTQ)) { + val = FIELDX(ALX_WRR_PRI, hw->wrr_ctrl) | + FIELDX(ALX_WRR_PRI0, hw->wrr[0]) | + FIELDX(ALX_WRR_PRI1, hw->wrr[1]) | + FIELDX(ALX_WRR_PRI2, hw->wrr[2]) | + FIELDX(ALX_WRR_PRI3, hw->wrr[3]); + ALX_MEM_W32(hw, ALX_WRR, val); + } +} + +void alx_mask_msix(struct alx_hw *hw, int index, bool mask) +{ + u32 reg, val; + + reg = ALX_MSIX_ENTRY_BASE + index * PCI_MSIX_ENTRY_SIZE + + PCI_MSIX_ENTRY_VECTOR_CTRL; + + val = mask ? PCI_MSIX_ENTRY_CTRL_MASKBIT : 0; + + ALX_MEM_W32(hw, reg, val); + ALX_MEM_FLUSH(hw); +} + +int alx_select_powersaving_speed(struct alx_hw *hw, u16 *speed) +{ + int i, err; + u16 spd, lpa; + bool linkup; + + err = alx_get_phy_link(hw, &linkup, &spd); + if (err) + goto out; + + if (!linkup) { + *speed = SPEED_0; + goto out; + } + + err = alx_read_phy_reg(hw, MII_LPA, &lpa); + if (err) + goto out; + + if (!(lpa & LPA_LPACK)) { + *speed = spd; + goto out; + } + if (lpa & LPA_10FULL) + *speed = SPEED_10 + FULL_DUPLEX; + else if (lpa & LPA_10HALF) + *speed = SPEED_10 + HALF_DUPLEX; + else if (lpa & LPA_100FULL) + *speed = SPEED_100 + FULL_DUPLEX; + else + *speed = SPEED_100 + HALF_DUPLEX; + + if (*speed != spd) { + err = alx_write_phy_reg(hw, ALX_MII_IER, 0); + if (err) + goto out; + err = alx_setup_speed_duplex(hw, + ALX_SPEED_TO_ETHADV(*speed) | ADVERTISED_Autoneg, + ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX); + if (err) + goto out; + + /* wait for linkup */ + for (i = 0; i < ALX_MAX_SETUP_LNK_CYCLE; i++) { + u16 speed2; + bool link_on; + + msleep(100); + err = alx_get_phy_link(hw, &link_on, &speed2); + if (err) + goto out; + if (link_on) + break; + } + if (i == ALX_MAX_SETUP_LNK_CYCLE) { + err = ALX_LINK_TIMEOUT; + goto out; + } + } + +out: + return err; +} + +void __alx_update_hw_stats(struct alx_hw *hw) +{ + u16 reg; + u32 data; + unsigned long *p; + + /* RX stats */ + reg = ALX_RX_STATS_BIN; + p = &hw->stats.rx_ok; + while (reg <= ALX_RX_STATS_END) { + ALX_MEM_R32(hw, reg, &data); + *p++ += data; + reg += 4; + } + + /* TX stats */ + reg = ALX_TX_STATS_BIN; + p = &hw->stats.tx_ok; + while (reg <= ALX_TX_STATS_END) { + ALX_MEM_R32(hw, reg, &data); + *p++ += data; + reg += 4; + } +} + +static const struct alx_platform_patch plats[] = { +{0x1091, 0x00, 0x1969, 0x0091, 0x1001}, +{0}, +}; + +void alx_patch_assign(struct alx_hw *hw) +{ + int i = 0; + + while (plats[i].pci_did != 0) { + if (plats[i].pci_did == ALX_DID(hw) && + plats[i].subsystem_vid == ALX_SUB_VID(hw) && + plats[i].subsystem_did == ALX_SUB_DID(hw) && + (plats[i].pflag & ALX_PF_ANY_REV || + plats[i].pci_rev == hw->revision)) { + if (plats[i].pflag & ALX_PF_LINK) + hw->lnk_patch = true; + if (plats[i].pflag & ALX_PF_HIB) + hw->hib_patch = true; + } + i++; + } +} + +bool alx_get_phy_info(struct alx_hw *hw) +{ + u16 devs1, devs2; + + if (alx_read_phy_reg(hw, MII_PHYSID1, &hw->phy_id[0]) || + alx_read_phy_reg(hw, MII_PHYSID2, &hw->phy_id[1])) + return false; + + /* since we haven't PMA/PMD status2 register, we can't + * use mdio45_probe function for prtad and mmds. + * use fixed MMD3 to get mmds. + */ + if (alx_read_phy_ext(hw, 3, MDIO_DEVS1, &devs1) || + alx_read_phy_ext(hw, 3, MDIO_DEVS2, &devs2)) + return false; + hw->mdio.mmds = devs1 | devs2 << 16; + + return true; +} --- linux-3.5.0.orig/ubuntu/alx/alx.h +++ linux-3.5.0/ubuntu/alx/alx.h @@ -0,0 +1,213 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef _ALX_H_ +#define _ALX_H_ + +#define ALX_WATCHDOG_TIME (5 * HZ) + +/* alx_ring_header is a single, contiguous block of memory space + * used by the three descriptor rings (tpd, rfd, rrd) + */ +struct alx_ring_header { + /* virt addr */ + void *desc; + /* phy addr */ + dma_addr_t dma; + u32 size; +}; + +/* alx_buffer wraps around a pointer to a socket buffer + * so a DMA physical address can be stored along with the skb + */ +struct alx_buffer { + struct sk_buff *skb; + /* DMA address */ + DEFINE_DMA_UNMAP_ADDR(dma); + /* buffer size */ + DEFINE_DMA_UNMAP_LEN(size); + /* information of this buffer */ + u16 flags; +}; +#define ALX_BUF_TX_FIRSTFRAG 0x1 + +/* rx queue */ +struct alx_rx_queue { + struct net_device *netdev; + /* device pointer for dma operation */ + struct device *dev; + /* rrd ring virtual addr */ + struct rrd_desc *rrd_hdr; + /* rrd ring physical addr */ + dma_addr_t rrd_dma; + /* rfd ring virtual addr */ + struct rfd_desc *rfd_hdr; + /* rfd ring physical addr */ + dma_addr_t rfd_dma; + /* info for rx-skbs */ + struct alx_buffer *bf_info; + + /* number of ring elements */ + u16 count; + /* rfd producer index */ + u16 pidx; + /* rfd consumer index */ + u16 cidx; + u16 rrd_cidx; + /* register saving producer index */ + u16 p_reg; + /* register saving consumer index */ + u16 c_reg; + /* queue index */ + u16 qidx; + unsigned long flag; + + struct sk_buff_head list; +}; +#define ALX_RQ_USING 1 +#define ALX_RX_ALLOC_THRESH 32 + +/* tx queue */ +struct alx_tx_queue { + struct net_device *netdev; + /* device pointer for dma operation */ + struct device *dev; + /* tpd ring virtual addr */ + struct tpd_desc *tpd_hdr; + dma_addr_t tpd_dma; + /* info for tx-skbs pending on HW */ + struct alx_buffer *bf_info; + /* number of ring elements */ + u16 count; + /* producer index */ + u16 pidx; + /* consumer index */ + atomic_t cidx; + /* register saving producer index */ + u16 p_reg; + /* register saving consumer index */ + u16 c_reg; + /* queue index */ + u16 qidx; +}; + +#define ALX_TX_WAKEUP_THRESH(_tq) ((_tq)->count / 4) +#define ALX_DEFAULT_TX_WORK 128 + +struct alx_napi { + struct napi_struct napi; + struct alx_adapter *adpt; + struct alx_rx_queue *rxq; + struct alx_tx_queue *txq; + int vec_idx; + u32 vec_mask; + char irq_lbl[IFNAMSIZ]; +}; + +enum ALX_FLAGS { + ALX_FLAG_USING_MSIX = 0, + ALX_FLAG_USING_MSI, + ALX_FLAG_RESETING, + ALX_FLAG_TESTING, + ALX_FLAG_HALT, + ALX_FLAG_FPGA, + ALX_FLAG_TASK_PENDING, + ALX_FLAG_TASK_CHK_LINK, + ALX_FLAG_TASK_RESET, + ALX_FLAG_TASK_UPDATE_SMB, + + ALX_FLAG_NUMBER_OF_FLAGS, +}; + + +struct alx_hw; +/* + *board specific private data structure + */ +struct alx_adapter { + struct net_device *netdev; + struct pci_dev *pdev; + + struct alx_hw hw; + + u16 bd_number; + + /* totally msix vectors */ + int nr_vec; + struct msix_entry *msix_ent; + + /* all descriptor memory */ + struct alx_ring_header ring_header; + int tx_ringsz; + int rx_ringsz; + int rxbuf_size; + + struct alx_napi *qnapi[8]; + /* number of napi for TX-Q */ + int nr_txq; + /* number of napi for RX-Q */ + int nr_rxq; + /* number independent hw RX-Q */ + int nr_hwrxq; + /* total napi for TX-Q/RX-Q */ + int nr_napi; + + /* lock for updating stats */ + spinlock_t smb_lock; + + struct work_struct task; + struct net_device_stats net_stats; + atomic_t irq_sem; + u16 msg_enable; + + unsigned long flags; + + /* ethtool private flags */ + u32 eth_pflags; + int eth_diag_vect; + int eth_diag_cnt; +}; + + +#define ALX_FLAG(_adpt, _FLAG) (\ + test_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) +#define ALX_FLAG_SET(_adpt, _FLAG) (\ + set_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) +#define ALX_FLAG_CLEAR(_adpt, _FLAG) (\ + clear_bit(ALX_FLAG_##_FLAG, &(_adpt)->flags)) + +static inline struct alx_rx_queue *alx_hw_rxq(struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + return ALX_CAP(&adpt->hw, MRQ) ? rxq : adpt->qnapi[0]->rxq; +} + +/* needed by alx_ethtool.c */ +extern void alx_configure(struct alx_adapter *adpt); +extern void alx_free_all_ring_resources(struct alx_adapter *adpt); +extern int alx_setup_all_ring_resources(struct alx_adapter *adpt); +extern void alx_init_def_rss_idt(struct alx_adapter *adpt); +extern int alx_alloc_rxring_buf(struct alx_adapter *adpt, + struct alx_rx_queue *rxq); +extern void alx_init_intr(struct alx_adapter *adpt); +extern void alx_disable_advanced_intr(struct alx_adapter *adpt); +extern void alx_reinit(struct alx_adapter *adpt, bool in_task); +extern void alx_set_ethtool_ops(struct net_device *dev); +extern char alx_drv_name[]; +extern char alx_drv_version[]; + +#endif --- linux-3.5.0.orig/ubuntu/alx/alx_hw.h +++ linux-3.5.0/ubuntu/alx/alx_hw.h @@ -0,0 +1,661 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef ALX_HW_H_ +#define ALX_HW_H_ + +/* specific error info */ +#define ALX_ERR_SUCCESS 0x0000 +#define ALX_ERR_ALOAD 0x0001 +#define ALX_ERR_RSTMAC 0x0002 +#define ALX_ERR_PARM 0x0003 +#define ALX_ERR_MIIBUSY 0x0004 +#define ALX_LINK_TIMEOUT 0x0008 + +/* Transmit Packet Descriptor, contains 4 32-bit words. + * + * 31 16 0 + * +----------------+----------------+ + * | vlan-tag | buf length | + * +----------------+----------------+ + * | Word 1 | + * +----------------+----------------+ + * | Word 2: buf addr lo | + * +----------------+----------------+ + * | Word 3: buf addr hi | + * +----------------+----------------+ + * + * Word 2 and 3 combine to form a 64-bit buffer address + * + * Word 1 has three forms, depending on the state of bit 8/12/13: + * if bit8 =='1', the definition is just for custom checksum offload. + * if bit8 == '0' && bit12 == '1' && bit13 == '1', the *FIRST* descriptor + * for the skb is special for LSO V2, Word 2 become total skb length , + * Word 3 is meaningless. + * other condition, the definition is for general skb or ip/tcp/udp + * checksum or LSO(TSO) offload. + * + * Here is the depiction: + * + * 0-+ 0-+ + * 1 | 1 | + * 2 | 2 | + * 3 | Payload offset 3 | L4 header offset + * 4 | (7:0) 4 | (7:0) + * 5 | 5 | + * 6 | 6 | + * 7-+ 7-+ + * 8 Custom csum enable = 1 8 Custom csum enable = 0 + * 9 General IPv4 checksum 9 General IPv4 checksum + * 10 General TCP checksum 10 General TCP checksum + * 11 General UDP checksum 11 General UDP checksum + * 12 Large Send Segment enable 12 Large Send Segment enable + * 13 Large Send Segment type 13 Large Send Segment type + * 14 VLAN tagged 14 VLAN tagged + * 15 Insert VLAN tag 15 Insert VLAN tag + * 16 IPv4 packet 16 IPv4 packet + * 17 Ethernet frame type 17 Ethernet frame type + * 18-+ 18-+ + * 19 | 19 | + * 20 | 20 | + * 21 | Custom csum offset 21 | + * 22 | (25:18) 22 | + * 23 | 23 | MSS (30:18) + * 24 | 24 | + * 25-+ 25 | + * 26-+ 26 | + * 27 | 27 | + * 28 | Reserved 28 | + * 29 | 29 | + * 30-+ 30-+ + * 31 End of packet 31 End of packet + */ + +struct tpd_desc { + __le32 word0; + __le32 word1; + union { + __le64 addr; + struct { + __le32 pkt_len; + __le32 resvd; + } l; + } adrl; +} __packed; + +/* tpd word 0 */ +#define TPD_BUFLEN_MASK 0xFFFF +#define TPD_BUFLEN_SHIFT 0 +#define TPD_VLTAG_MASK 0xFFFF +#define TPD_VLTAG_SHIFT 16 + +/* tpd word 1 */ +#define TPD_CXSUMSTART_MASK 0x00FF +#define TPD_CXSUMSTART_SHIFT 0 +#define TPD_L4HDROFFSET_MASK 0x00FF +#define TPD_L4HDROFFSET_SHIFT 0 +#define TPD_CXSUM_EN_MASK 0x0001 +#define TPD_CXSUM_EN_SHIFT 8 +#define TPD_IP_XSUM_MASK 0x0001 +#define TPD_IP_XSUM_SHIFT 9 +#define TPD_TCP_XSUM_MASK 0x0001 +#define TPD_TCP_XSUM_SHIFT 10 +#define TPD_UDP_XSUM_MASK 0x0001 +#define TPD_UDP_XSUm_SHIFT 11 +#define TPD_LSO_EN_MASK 0x0001 +#define TPD_LSO_EN_SHIFT 12 +#define TPD_LSO_V2_MASK 0x0001 +#define TPD_LSO_V2_SHIFT 13 +#define TPD_VLTAGGED_MASK 0x0001 +#define TPD_VLTAGGED_SHIFT 14 +#define TPD_INS_VLTAG_MASK 0x0001 +#define TPD_INS_VLTAG_SHIFT 15 +#define TPD_IPV4_MASK 0x0001 +#define TPD_IPV4_SHIFT 16 +#define TPD_ETHTYPE_MASK 0x0001 +#define TPD_ETHTYPE_SHIFT 17 +#define TPD_CXSUMOFFSET_MASK 0x00FF +#define TPD_CXSUMOFFSET_SHIFT 18 +#define TPD_MSS_MASK 0x1FFF +#define TPD_MSS_SHIFT 18 +#define TPD_EOP_MASK 0x0001 +#define TPD_EOP_SHIFT 31 + +#define DESC_GET(_x, _name) ((_x) >> _name##SHIFT & _name##MASK) + +/* Receive Free Descriptor */ +struct rfd_desc { + __le64 addr; /* data buffer address, length is + * declared in register --- every + * buffer has the same size + */ +} __packed; + +/* Receive Return Descriptor, contains 4 32-bit words. + * + * 31 16 0 + * +----------------+----------------+ + * | Word 0 | + * +----------------+----------------+ + * | Word 1: RSS Hash value | + * +----------------+----------------+ + * | Word 2 | + * +----------------+----------------+ + * | Word 3 | + * +----------------+----------------+ + * + * Word 0 depiction & Word 2 depiction: + * + * 0--+ 0--+ + * 1 | 1 | + * 2 | 2 | + * 3 | 3 | + * 4 | 4 | + * 5 | 5 | + * 6 | 6 | + * 7 | IP payload checksum 7 | VLAN tag + * 8 | (15:0) 8 | (15:0) + * 9 | 9 | + * 10 | 10 | + * 11 | 11 | + * 12 | 12 | + * 13 | 13 | + * 14 | 14 | + * 15-+ 15-+ + * 16-+ 16-+ + * 17 | Number of RFDs 17 | + * 18 | (19:16) 18 | + * 19-+ 19 | Protocol ID + * 20-+ 20 | (23:16) + * 21 | 21 | + * 22 | 22 | + * 23 | 23-+ + * 24 | 24 | Reserved + * 25 | Start index of RFD-ring 25-+ + * 26 | (31:20) 26 | RSS Q-num (27:25) + * 27 | 27-+ + * 28 | 28-+ + * 29 | 29 | RSS Hash algorithm + * 30 | 30 | (31:28) + * 31-+ 31-+ + * + * Word 3 depiction: + * + * 0--+ + * 1 | + * 2 | + * 3 | + * 4 | + * 5 | + * 6 | + * 7 | Packet length (include FCS) + * 8 | (13:0) + * 9 | + * 10 | + * 11 | + * 12 | + * 13-+ + * 14 L4 Header checksum error + * 15 IPv4 checksum error + * 16 VLAN tagged + * 17-+ + * 18 | Protocol ID (19:17) + * 19-+ + * 20 Receive error summary + * 21 FCS(CRC) error + * 22 Frame alignment error + * 23 Truncated packet + * 24 Runt packet + * 25 Incomplete packet due to insufficient rx-desc + * 26 Broadcast packet + * 27 Multicast packet + * 28 Ethernet type (EII or 802.3) + * 29 FIFO overflow + * 30 Length error (for 802.3, length field mismatch with actual len) + * 31 Updated, indicate to driver that this RRD is refreshed. + */ + +struct rrd_desc { + __le32 word0; + __le32 rss_hash; + __le32 word2; + __le32 word3; +} __packed; + +/* rrd word 0 */ +#define RRD_XSUM_MASK 0xFFFF +#define RRD_XSUM_SHIFT 0 +#define RRD_NOR_MASK 0x000F +#define RRD_NOR_SHIFT 16 +#define RRD_SI_MASK 0x0FFF +#define RRD_SI_SHIFT 20 + +/* rrd word 2 */ +#define RRD_VLTAG_MASK 0xFFFF +#define RRD_VLTAG_SHIFT 0 +#define RRD_PID_MASK 0x00FF +#define RRD_PID_SHIFT 16 +/* non-ip packet */ +#define RRD_PID_NONIP 0 +/* ipv4(only) */ +#define RRD_PID_IPV4 1 +/* tcp/ipv6 */ +#define RRD_PID_IPV6TCP 2 +/* tcp/ipv4 */ +#define RRD_PID_IPV4TCP 3 +/* udp/ipv6 */ +#define RRD_PID_IPV6UDP 4 +/* udp/ipv4 */ +#define RRD_PID_IPV4UDP 5 +/* ipv6(only) */ +#define RRD_PID_IPV6 6 +/* LLDP packet */ +#define RRD_PID_LLDP 7 +/* 1588 packet */ +#define RRD_PID_1588 8 +#define RRD_RSSQ_MASK 0x0007 +#define RRD_RSSQ_SHIFT 25 +#define RRD_RSSALG_MASK 0x000F +#define RRD_RSSALG_SHIFT 28 +#define RRD_RSSALG_TCPV6 0x1 +#define RRD_RSSALG_IPV6 0x2 +#define RRD_RSSALG_TCPV4 0x4 +#define RRD_RSSALG_IPV4 0x8 + +/* rrd word 3 */ +#define RRD_PKTLEN_MASK 0x3FFF +#define RRD_PKTLEN_SHIFT 0 +#define RRD_ERR_L4_MASK 0x0001 +#define RRD_ERR_L4_SHIFT 14 +#define RRD_ERR_IPV4_MASK 0x0001 +#define RRD_ERR_IPV4_SHIFT 15 +#define RRD_VLTAGGED_MASK 0x0001 +#define RRD_VLTAGGED_SHIFT 16 +#define RRD_OLD_PID_MASK 0x0007 +#define RRD_OLD_PID_SHIFT 17 +#define RRD_ERR_RES_MASK 0x0001 +#define RRD_ERR_RES_SHIFT 20 +#define RRD_ERR_FCS_MASK 0x0001 +#define RRD_ERR_FCS_SHIFT 21 +#define RRD_ERR_FAE_MASK 0x0001 +#define RRD_ERR_FAE_SHIFT 22 +#define RRD_ERR_TRUNC_MASK 0x0001 +#define RRD_ERR_TRUNC_SHIFT 23 +#define RRD_ERR_RUNT_MASK 0x0001 +#define RRD_ERR_RUNT_SHIFT 24 +#define RRD_ERR_ICMP_MASK 0x0001 +#define RRD_ERR_ICMP_SHIFT 25 +#define RRD_BCAST_MASK 0x0001 +#define RRD_BCAST_SHIFT 26 +#define RRD_MCAST_MASK 0x0001 +#define RRD_MCAST_SHIFT 27 +#define RRD_ETHTYPE_MASK 0x0001 +#define RRD_ETHTYPE_SHIFT 28 +#define RRD_ERR_FIFOV_MASK 0x0001 +#define RRD_ERR_FIFOV_SHIFT 29 +#define RRD_ERR_LEN_MASK 0x0001 +#define RRD_ERR_LEN_SHIFT 30 +#define RRD_UPDATED_MASK 0x0001 +#define RRD_UPDATED_SHIFT 31 + + +/* Statistics counters collected by the MAC */ +struct alx_hw_stats { + /* rx */ + unsigned long rx_ok; + unsigned long rx_bcast; + unsigned long rx_mcast; + unsigned long rx_pause; + unsigned long rx_ctrl; + unsigned long rx_fcs_err; + unsigned long rx_len_err; + unsigned long rx_byte_cnt; + unsigned long rx_runt; + unsigned long rx_frag; + unsigned long rx_sz_64B; + unsigned long rx_sz_127B; + unsigned long rx_sz_255B; + unsigned long rx_sz_511B; + unsigned long rx_sz_1023B; + unsigned long rx_sz_1518B; + unsigned long rx_sz_max; + unsigned long rx_ov_sz; + unsigned long rx_ov_rxf; + unsigned long rx_ov_rrd; + unsigned long rx_align_err; + unsigned long rx_bc_byte_cnt; + unsigned long rx_mc_byte_cnt; + unsigned long rx_err_addr; + + /* tx */ + unsigned long tx_ok; + unsigned long tx_bcast; + unsigned long tx_mcast; + unsigned long tx_pause; + unsigned long tx_exc_defer; + unsigned long tx_ctrl; + unsigned long tx_defer; + unsigned long tx_byte_cnt; + unsigned long tx_sz_64B; + unsigned long tx_sz_127B; + unsigned long tx_sz_255B; + unsigned long tx_sz_511B; + unsigned long tx_sz_1023B; + unsigned long tx_sz_1518B; + unsigned long tx_sz_max; + unsigned long tx_single_col; + unsigned long tx_multi_col; + unsigned long tx_late_col; + unsigned long tx_abort_col; + unsigned long tx_underrun; + unsigned long tx_trd_eop; + unsigned long tx_len_err; + unsigned long tx_trunc; + unsigned long tx_bc_byte_cnt; + unsigned long tx_mc_byte_cnt; + unsigned long update; +}; + +#define SPEED_0 0 +#define HALF_DUPLEX 1 +#define FULL_DUPLEX 2 +#define ALX_MAX_SETUP_LNK_CYCLE 50 + +#define ALX_SPEED_TO_ETHADV(_speed) (\ +(_speed) == SPEED_1000 + FULL_DUPLEX ? ADVERTISED_1000baseT_Full : \ +(_speed) == SPEED_100 + FULL_DUPLEX ? ADVERTISED_100baseT_Full : \ +(_speed) == SPEED_100 + HALF_DUPLEX ? ADVERTISED_10baseT_Half : \ +(_speed) == SPEED_10 + FULL_DUPLEX ? ADVERTISED_10baseT_Full : \ +(_speed) == SPEED_10 + HALF_DUPLEX ? ADVERTISED_10baseT_Half : \ +0) + +#define speed_desc(_s) (\ + (_s) == SPEED_1000 + FULL_DUPLEX ? \ + "1 Gbps Full" : \ + (_s) == SPEED_100 + FULL_DUPLEX ? \ + "100 Mbps Full" : \ + (_s) == SPEED_100 + HALF_DUPLEX ? \ + "100 Mbps Half" : \ + (_s) == SPEED_10 + FULL_DUPLEX ? \ + "10 Mbps Full" : \ + (_s) == SPEED_10 + HALF_DUPLEX ? \ + "10 Mbps Half" : \ + "Unknown speed") + +/* for FlowControl */ +#define ALX_FC_RX 0x01 +#define ALX_FC_TX 0x02 +#define ALX_FC_ANEG 0x04 + +/* for sleep control */ +#define ALX_SLEEP_WOL_PHY 0x00000001 +#define ALX_SLEEP_WOL_MAGIC 0x00000002 +#define ALX_SLEEP_CIFS 0x00000004 +#define ALX_SLEEP_ACTIVE (\ + ALX_SLEEP_WOL_PHY | \ + ALX_SLEEP_WOL_MAGIC | \ + ALX_SLEEP_CIFS) + +/* for RSS hash type */ +#define ALX_RSS_HASH_TYPE_IPV4 0x1 +#define ALX_RSS_HASH_TYPE_IPV4_TCP 0x2 +#define ALX_RSS_HASH_TYPE_IPV6 0x4 +#define ALX_RSS_HASH_TYPE_IPV6_TCP 0x8 +#define ALX_RSS_HASH_TYPE_ALL (\ + ALX_RSS_HASH_TYPE_IPV4 |\ + ALX_RSS_HASH_TYPE_IPV4_TCP |\ + ALX_RSS_HASH_TYPE_IPV6 |\ + ALX_RSS_HASH_TYPE_IPV6_TCP) +#define ALX_DEF_RXBUF_SIZE 1536 +#define ALX_MAX_JUMBO_PKT_SIZE (9*1024) +#define ALX_MAX_TSO_PKT_SIZE (7*1024) +#define ALX_MAX_FRAME_SIZE ALX_MAX_JUMBO_PKT_SIZE +#define ALX_MIN_FRAME_SIZE 68 +#define ALX_RAW_MTU(_mtu) (_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN) + +#define ALX_MAX_RX_QUEUES 8 +#define ALX_MAX_TX_QUEUES 4 +#define ALX_MAX_HANDLED_INTRS 5 + +#define ALX_ISR_MISC (\ + ALX_ISR_PCIE_LNKDOWN | \ + ALX_ISR_DMAW | \ + ALX_ISR_DMAR | \ + ALX_ISR_SMB | \ + ALX_ISR_MANU | \ + ALX_ISR_TIMER) + +#define ALX_ISR_FATAL (\ + ALX_ISR_PCIE_LNKDOWN | \ + ALX_ISR_DMAW | \ + ALX_ISR_DMAR) + +#define ALX_ISR_ALERT (\ + ALX_ISR_RXF_OV | \ + ALX_ISR_TXF_UR | \ + ALX_ISR_RFD_UR) + +#define ALX_ISR_ALL_QUEUES (\ + ALX_ISR_TX_Q0 | \ + ALX_ISR_TX_Q1 | \ + ALX_ISR_TX_Q2 | \ + ALX_ISR_TX_Q3 | \ + ALX_ISR_RX_Q0 | \ + ALX_ISR_RX_Q1 | \ + ALX_ISR_RX_Q2 | \ + ALX_ISR_RX_Q3 | \ + ALX_ISR_RX_Q4 | \ + ALX_ISR_RX_Q5 | \ + ALX_ISR_RX_Q6 | \ + ALX_ISR_RX_Q7) + +/* maximum interrupt vectors for msix */ +#define ALX_MAX_MSIX_INTRS 16 + +#define FIELD_GETX(_x, _name) (((_x) >> (_name##_SHIFT)) & (_name##_MASK)) +#define FIELD_SETS(_x, _name, _v) (\ +(_x) = \ +((_x) & ~((_name##_MASK) << (_name##_SHIFT))) |\ +(((u16)(_v) & (_name##_MASK)) << (_name##_SHIFT))) +#define FIELD_SET32(_x, _name, _v) (\ +(_x) = \ +((_x) & ~((_name##_MASK) << (_name##_SHIFT))) |\ +(((_v) & (_name##_MASK)) << (_name##_SHIFT))) +#define FIELDX(_name, _v) (((_v) & (_name##_MASK)) << (_name##_SHIFT)) + +struct alx_hw { + void *pdev; + u8 __iomem *hw_addr; + + /* pci regs */ + u16 device_id; + u16 subdev_id; + u16 subven_id; + u8 revision; + + unsigned long capability; + + /* current & permanent mac addr */ + u8 mac_addr[ETH_ALEN]; + u8 perm_addr[ETH_ALEN]; + + u16 mtu; + u16 imt; + u8 dma_chnl; + u8 max_dma_chnl; + /* tpd threshold to trig INT */ + u32 ith_tpd; + u32 rx_ctrl; + u32 mc_hash[2]; + + u8 rss_key[40]; + u32 rss_idt[32]; + u16 rss_idt_size; + u8 rss_hash_type; + + /* weight round robin for multiple-tx-Q */ + u32 wrr[ALX_MAX_TX_QUEUES]; + /* prioirty control */ + u32 wrr_ctrl; + + /* interrupt mask for ALX_IMR */ + u32 imask; + u32 smb_timer; + bool link_up; + u16 link_speed; + u8 link_duplex; + + /* auto-neg advertisement or force mode config */ + u32 adv_cfg; + u8 flowctrl; + + struct alx_hw_stats hw_stats; + u32 sleep_ctrl; + /* sram address for pattern wol */ + u32 ptrn_ofs; + /* max patterns number */ + u16 max_ptrns; + + spinlock_t mdio_lock; + struct mdio_if_info mdio; + u16 phy_id[2]; + + struct alx_hw_stats stats; + /* PHY link patch flag */ + bool lnk_patch; + /* PHY hibernation patch flag */ + bool hib_patch; + /* FPGA or ASIC */ + bool is_fpga; +}; + +#define ALX_DID(_hw) ((_hw)->device_id) +#define ALX_SUB_VID(_hw) ((_hw)->subven_id) +#define ALX_SUB_DID(_hw) ((_hw)->subdev_id) +#define ALX_REVID(_hw) ((_hw)->revision >> ALX_PCI_REVID_SHIFT) +#define ALX_WITH_CR(_hw) ((_hw)->revision & 1) + +enum ALX_CAPS { + ALX_CAP_GIGA = 0, + ALX_CAP_PTP, + ALX_CAP_AZ, + ALX_CAP_L0S, + ALX_CAP_L1, + ALX_CAP_SWOI, + ALX_CAP_RSS, + ALX_CAP_MSIX, + /* support Multi-TX-Q */ + ALX_CAP_MTQ, + /* support Multi-RX-Q */ + ALX_CAP_MRQ, +}; +#define ALX_CAP(_hw, _cap) (\ + test_bit(ALX_CAP_##_cap, &(_hw)->capability)) +#define ALX_CAP_SET(_hw, _cap) (\ + set_bit(ALX_CAP_##_cap, &(_hw)->capability)) +#define ALX_CAP_CLEAR(_hw, _cap) (\ + clear_bit(ALX_CAP_##_cap, &(_hw)->capability)) + +/* write to 8bit register via pci memory space */ +#define ALX_MEM_W8(s, reg, val) (writeb((val), ((s)->hw_addr + reg))) + +/* read from 8bit register via pci memory space */ +#define ALX_MEM_R8(s, reg, pdat) (\ + *(u8 *)(pdat) = readb((s)->hw_addr + reg)) + +/* write to 16bit register via pci memory space */ +#define ALX_MEM_W16(s, reg, val) (writew((val), ((s)->hw_addr + reg))) + +/* read from 16bit register via pci memory space */ +#define ALX_MEM_R16(s, reg, pdat) (\ + *(u16 *)(pdat) = readw((s)->hw_addr + reg)) + +/* write to 32bit register via pci memory space */ +#define ALX_MEM_W32(s, reg, val) (writel((val), ((s)->hw_addr + reg))) + +/* read from 32bit register via pci memory space */ +#define ALX_MEM_R32(s, reg, pdat) (\ + *(u32 *)(pdat) = readl((s)->hw_addr + reg)) + +/* read from 16bit register via pci config space */ +#define ALX_CFG_R16(s, reg, pdat) (\ + pci_read_config_word((s)->pdev, (reg), (pdat))) + +/* write to 16bit register via pci config space */ +#define ALX_CFG_W16(s, reg, val) (\ + pci_write_config_word((s)->pdev, (reg), (val))) + +/* flush regs */ +#define ALX_MEM_FLUSH(s) (readl((s)->hw_addr)) + + +int alx_get_perm_macaddr(struct alx_hw *hw, u8 *addr); +void alx_add_mc_addr(struct alx_hw *hw, u8 *addr); +void alx_reset_phy(struct alx_hw *hw, bool hib_en); +void alx_reset_pcie(struct alx_hw *hw); +void alx_enable_aspm(struct alx_hw *hw, bool l0s_en, bool l1_en); +int alx_setup_speed_duplex(struct alx_hw *hw, u32 ethadv, u8 flowctrl); +void alx_post_phy_link(struct alx_hw *hw, u16 speed, bool az_en); +int alx_pre_suspend(struct alx_hw *hw, u16 speed); +int alx_read_phy_reg(struct alx_hw *hw, u16 reg, u16 *phy_data); +int alx_write_phy_reg(struct alx_hw *hw, u16 reg, u16 phy_data); +int alx_read_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 *pdata); +int alx_write_phy_ext(struct alx_hw *hw, u8 dev, u16 reg, u16 data); +int alx_read_phy_dbg(struct alx_hw *hw, u16 reg, u16 *pdata); +int alx_write_phy_dbg(struct alx_hw *hw, u16 reg, u16 data); +int alx_get_phy_link(struct alx_hw *hw, bool *link_up, u16 *speed); +int alx_clear_phy_intr(struct alx_hw *hw); +int alx_config_wol(struct alx_hw *hw); +void alx_cfg_mac_fc(struct alx_hw *hw, u8 fc); +void alx_start_mac(struct alx_hw *hw); +int alx_stop_mac(struct alx_hw *hw); +int alx_reset_mac(struct alx_hw *hw); +void alx_set_macaddr(struct alx_hw *hw, u8 *addr); +bool alx_phy_configed(struct alx_hw *hw); +void alx_configure_basic(struct alx_hw *hw); +void alx_configure_rss(struct alx_hw *hw, bool en); +void alx_mask_msix(struct alx_hw *hw, int index, bool mask); +int alx_select_powersaving_speed(struct alx_hw *hw, u16 *speed); +void __alx_update_hw_stats(struct alx_hw *hw); +void __alx_start_phy_polling(struct alx_hw *hw, u16 clk_sel); + +#define alx_get_readrq(_hw) pcie_get_readrq((_hw)->pdev) +#define alx_set_readrq(_hw, _v) pcie_set_readrq((_hw)->pdev, _v) + + +/* some issues are relavant to specific platforms + * we assign those patches for the chip by pci device id + * vendor id, subsystem id and revision number + */ +struct alx_platform_patch { + u16 pci_did; + u8 pci_rev; + u16 subsystem_vid; + u16 subsystem_did; + u32 pflag; +}; +/* PHY link issue */ +#define ALX_PF_LINK 0x00001 +/* Hibernatation issue */ +#define ALX_PF_HIB 0x00002 +/* not care revision number */ +#define ALX_PF_ANY_REV 0x10000 + + +void alx_patch_assign(struct alx_hw *hw); +bool alx_get_phy_info(struct alx_hw *hw); + +#endif --- linux-3.5.0.orig/ubuntu/alx/Makefile +++ linux-3.5.0/ubuntu/alx/Makefile @@ -0,0 +1,3 @@ +obj-$(CONFIG_ALX) += alx.o +alx-objs := alx_main.o alx_ethtool.o alx_hw.o +ccflags-y += -D__CHECK_ENDIAN__ --- linux-3.5.0.orig/ubuntu/alx/update.sh +++ linux-3.5.0/ubuntu/alx/update.sh @@ -0,0 +1,20 @@ +# +# Update from the upstream repository. +# + +### github:qca == QCA Project repo +ALX_REPO="git://github.com/qca/alx.git" + +ALX_AUTHOR="Qualcomm Atheros, Inc. " +set -e + +git clone "$ALX_REPO" +descr="UBUNTU: SAUCE: alx: Update to `(cd alx; git describe --all; echo; git remote -v |grep fetch; echo -n " "; git log --pretty=oneline -1)`" + +rsync -av alx/src/ alx/LICENSE alx/README.md . +rm -rf alx + +git add . +git commit --author="$ALX_AUTHOR" -s -m"$descr" + +git log -1 --- linux-3.5.0.orig/ubuntu/alx/alx_main.c +++ linux-3.5.0/ubuntu/alx/alx_main.c @@ -0,0 +1,2820 @@ +/* + * Copyright (c) 2012 Qualcomm Atheros, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "alx_reg.h" +#include "alx_hw.h" +#include "alx.h" + +#define DRV_MAJ 1 +#define DRV_MIN 2 +#define DRV_PATCH 3 +#define DRV_MODULE_VER \ + __stringify(DRV_MAJ) "." __stringify(DRV_MIN) "." \ + __stringify(DRV_PATCH) + +char alx_drv_name[] = "alx"; +char alx_drv_version[] = DRV_MODULE_VER; +static const char alx_drv_desc[] = +"Qualcomm Atheros(R) AR816x/AR817x PCI-E Ethernet Network Driver"; + +/* alx_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) } + */ +#define ALX_ETHER_DEVICE(device_id) {\ + PCI_DEVICE(ALX_VENDOR_ID, device_id)} +static DEFINE_PCI_DEVICE_TABLE(alx_pci_tbl) = { + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8161), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8162), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8171), + ALX_ETHER_DEVICE(ALX_DEV_ID_AR8172), + {0,} +}; + +MODULE_DEVICE_TABLE(pci, alx_pci_tbl); +MODULE_AUTHOR("Qualcomm Corporation, "); +MODULE_DESCRIPTION("Qualcomm Atheros Gigabit Ethernet Driver"); +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_VERSION(DRV_MODULE_VER); + +static int alx_poll(struct napi_struct *napi, int budget); +static irqreturn_t alx_msix_ring(int irq, void *data); +static irqreturn_t alx_intr_msix_misc(int irq, void *data); +static irqreturn_t alx_intr_msi(int irq, void *data); +static irqreturn_t alx_intr_legacy(int irq, void *data); +static void alx_init_ring_ptrs(struct alx_adapter *adpt); +static int alx_reinit_rings(struct alx_adapter *adpt); + +static inline void alx_schedule_work(struct alx_adapter *adpt) +{ + if (!ALX_FLAG(adpt, HALT)) + schedule_work(&adpt->task); +} + +static inline void alx_cancel_work(struct alx_adapter *adpt) +{ + cancel_work_sync(&adpt->task); +} + + +static void __alx_set_rx_mode(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + struct netdev_hw_addr *ha; + + + /* comoute mc addresses' hash value ,and put it into hash table */ + netdev_for_each_mc_addr(ha, netdev) + alx_add_mc_addr(hw, ha->addr); + + ALX_MEM_W32(hw, ALX_HASH_TBL0, hw->mc_hash[0]); + ALX_MEM_W32(hw, ALX_HASH_TBL1, hw->mc_hash[1]); + + /* check for Promiscuous and All Multicast modes */ + hw->rx_ctrl &= ~(ALX_MAC_CTRL_MULTIALL_EN | ALX_MAC_CTRL_PROMISC_EN); + if (netdev->flags & IFF_PROMISC) + hw->rx_ctrl |= ALX_MAC_CTRL_PROMISC_EN; + if (netdev->flags & IFF_ALLMULTI) + hw->rx_ctrl |= ALX_MAC_CTRL_MULTIALL_EN; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + +/* alx_set_rx_mode - Multicast and Promiscuous mode set */ +static void alx_set_rx_mode(struct net_device *netdev) +{ + __alx_set_rx_mode(netdev); +} + + +/* alx_set_mac - Change the Ethernet Address of the NIC */ +static int alx_set_mac_address(struct net_device *netdev, void *data) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + struct sockaddr *addr = data; + + if (!is_valid_ether_addr(addr->sa_data)) + return -EADDRNOTAVAIL; + + if (netdev->addr_assign_type & NET_ADDR_RANDOM) + netdev->addr_assign_type ^= NET_ADDR_RANDOM; + + memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len); + memcpy(hw->mac_addr, addr->sa_data, netdev->addr_len); + alx_set_macaddr(hw, hw->mac_addr); + + return 0; +} + +static void alx_free_napis(struct alx_adapter *adpt) +{ + struct alx_napi *np; + int i; + + for (i = 0; i < adpt->nr_napi; i++) { + np = adpt->qnapi[i]; + if (!np) + continue; + + netif_napi_del(&np->napi); + kfree(np->txq); + np->txq = NULL; + kfree(np->rxq); + np->rxq = NULL; + adpt->qnapi[i] = NULL; + } +} +static u16 tx_pidx_reg[] = {ALX_TPD_PRI0_PIDX, ALX_TPD_PRI1_PIDX, + ALX_TPD_PRI2_PIDX, ALX_TPD_PRI3_PIDX}; +static u16 tx_cidx_reg[] = {ALX_TPD_PRI0_CIDX, ALX_TPD_PRI1_CIDX, + ALX_TPD_PRI2_CIDX, ALX_TPD_PRI3_CIDX}; +static u32 tx_vect_mask[] = {ALX_ISR_TX_Q0, ALX_ISR_TX_Q1, + ALX_ISR_TX_Q2, ALX_ISR_TX_Q3}; +static u32 rx_vect_mask[] = {ALX_ISR_RX_Q0, ALX_ISR_RX_Q1, + ALX_ISR_RX_Q2, ALX_ISR_RX_Q3, + ALX_ISR_RX_Q4, ALX_ISR_RX_Q5, + ALX_ISR_RX_Q6, ALX_ISR_RX_Q7}; +static int alx_alloc_napis(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_napi *np; + struct alx_rx_queue *rxq; + struct alx_tx_queue *txq; + int i; + + hw->imask &= ~ALX_ISR_ALL_QUEUES; + + /* alloc alx_napi */ + for (i = 0; i < adpt->nr_napi; i++) { + np = kzalloc(sizeof(struct alx_napi), GFP_KERNEL); + if (!np) + goto err_out; + + np->adpt = adpt; + netif_napi_add(adpt->netdev, &np->napi, alx_poll, 64); + adpt->qnapi[i] = np; + } + + /* alloc tx queue */ + for (i = 0; i < adpt->nr_txq; i++) { + np = adpt->qnapi[i]; + txq = kzalloc(sizeof(struct alx_tx_queue), GFP_KERNEL); + if (!txq) + goto err_out; + np->txq = txq; + txq->p_reg = tx_pidx_reg[i]; + txq->c_reg = tx_cidx_reg[i]; + txq->count = adpt->tx_ringsz; + txq->qidx = (u16)i; + np->vec_mask |= tx_vect_mask[i]; + hw->imask |= tx_vect_mask[i]; + } + + /* alloc rx queue */ + for (i = 0; i < adpt->nr_rxq; i++) { + np = adpt->qnapi[i]; + rxq = kzalloc(sizeof(struct alx_rx_queue), GFP_KERNEL); + if (!rxq) + goto err_out; + np->rxq = rxq; + rxq->p_reg = ALX_RFD_PIDX; + rxq->c_reg = ALX_RFD_CIDX; + rxq->count = adpt->rx_ringsz; + rxq->qidx = (u16)i; + __skb_queue_head_init(&rxq->list); + np->vec_mask |= rx_vect_mask[i]; + hw->imask |= rx_vect_mask[i]; + } + + return 0; + +err_out: + alx_free_napis(adpt); + return -ENOMEM; +} + +static int alx_alloc_rings(struct alx_adapter *adpt) +{ + struct alx_buffer *bf; + u8 *desc; + dma_addr_t dma; + int i, size, offset; + + /* alx_buffer */ + size = sizeof(struct alx_buffer) * adpt->nr_txq * adpt->tx_ringsz + + sizeof(struct alx_buffer) * adpt->nr_hwrxq * adpt->rx_ringsz; + + bf = vzalloc(size); + if (!bf) + goto err_out; + + /* physical rx rings */ + size = sizeof(struct tpd_desc) * adpt->tx_ringsz * adpt->nr_txq + + (sizeof(struct rrd_desc) + sizeof(struct rfd_desc)) * + adpt->rx_ringsz * adpt->nr_hwrxq + + adpt->nr_txq * 8 + + adpt->nr_hwrxq * 8; + desc = dma_alloc_coherent(&adpt->pdev->dev, size, &dma, GFP_KERNEL); + if (!desc) + goto err_out; + + memset(desc, 0, size); + adpt->ring_header.desc = desc; + adpt->ring_header.dma = dma; + adpt->ring_header.size = size; + + size = sizeof(struct tpd_desc) * adpt->tx_ringsz; + for (i = 0; i < adpt->nr_txq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->txq->netdev = adpt->netdev; + adpt->qnapi[i]->txq->dev = &adpt->pdev->dev; + adpt->qnapi[i]->txq->tpd_hdr = (struct tpd_desc *)desc; + adpt->qnapi[i]->txq->tpd_dma = dma; + adpt->qnapi[i]->txq->count = adpt->tx_ringsz; + adpt->qnapi[i]->txq->bf_info = bf; + desc += size; + dma += size; + bf += adpt->tx_ringsz; + } + size = sizeof(struct rrd_desc) * adpt->rx_ringsz; + for (i = 0; i < adpt->nr_hwrxq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->rxq->rrd_hdr = (struct rrd_desc *)desc; + adpt->qnapi[i]->rxq->rrd_dma = dma; + adpt->qnapi[i]->rxq->bf_info = bf; + desc += size; + dma += size; + bf += adpt->rx_ringsz; + } + size = sizeof(struct rfd_desc) * adpt->rx_ringsz; + for (i = 0; i < adpt->nr_hwrxq; i++) { + offset = ALIGN(dma, 8) - dma; + desc += offset; + dma += offset; + adpt->qnapi[i]->rxq->rfd_hdr = (struct rfd_desc *)desc; + adpt->qnapi[i]->rxq->rfd_dma = dma; + desc += size; + dma += size; + } + for (i = 0; i < adpt->nr_rxq; i++) { + adpt->qnapi[i]->rxq->netdev = adpt->netdev; + adpt->qnapi[i]->rxq->dev = &adpt->pdev->dev; + adpt->qnapi[i]->rxq->count = adpt->rx_ringsz; + } + + return 0; + +err_out: + if (bf) + vfree(bf); + + return -ENOMEM; +} + +static void alx_free_rings(struct alx_adapter *adpt) +{ + struct alx_buffer *bf; + struct alx_napi *np; + + /* alx_buffer header is in the 1st tpdq->bf_info */ + np = adpt->qnapi[0]; + if (np) { + bf = np->txq->bf_info; + if (bf) { + vfree(bf); + np->txq->bf_info = NULL; + } + } + if (adpt->ring_header.desc) { + dma_free_coherent(&adpt->pdev->dev, + adpt->ring_header.size, + adpt->ring_header.desc, + adpt->ring_header.dma); + adpt->ring_header.desc = NULL; + } +} + +/* dequeue skb from RXQ, return true if the RXQ is empty */ +static inline bool alx_skb_dequeue_n(struct alx_rx_queue *rxq, int max_pkts, + struct sk_buff_head *list) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + bool use_lock = !ALX_CAP(&adpt->hw, MRQ); + bool empty; + struct sk_buff *skb; + int count = 0; + + if (use_lock) + spin_lock(&rxq->list.lock); + + while (count < max_pkts || max_pkts == -1) { + skb = __skb_dequeue(&rxq->list); + if (skb) { + __skb_queue_tail(list, skb); + count++; + } else + break; + } + + empty = skb_queue_empty(&rxq->list); + + if (use_lock) + spin_unlock(&rxq->list.lock); + + netif_info(adpt, rx_status, adpt->netdev, + "RX %d packets\n", + count); + + return empty; +} + +static inline void alx_skb_queue_tail(struct alx_rx_queue *rxq, + struct sk_buff *skb) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + bool use_lock = !ALX_CAP(&adpt->hw, MRQ); + + if (use_lock) + spin_lock(&rxq->list.lock); + + __skb_queue_tail(&rxq->list, skb); + + if (use_lock) + spin_unlock(&rxq->list.lock); +} + +int alx_alloc_rxring_buf(struct alx_adapter *adpt, + struct alx_rx_queue *rxq) +{ + struct sk_buff *skb; + struct alx_buffer *cur_buf; + struct rfd_desc *rfd; + dma_addr_t dma; + u16 cur, next, count = 0; + + next = cur = rxq->pidx; + if (++next == rxq->count) + next = 0; + cur_buf = rxq->bf_info + cur; + rfd = rxq->rfd_hdr + cur; + + while (!cur_buf->skb && next != rxq->cidx) { + skb = dev_alloc_skb(adpt->rxbuf_size); + if (unlikely(!skb)) { + netdev_warn(adpt->netdev, "alloc skb failed\n"); + break; + } + dma = dma_map_single(rxq->dev, + skb->data, + adpt->rxbuf_size, + DMA_FROM_DEVICE); + if (dma_mapping_error(rxq->dev, dma)) { + netdev_warn(adpt->netdev, "mapping rx-buffer failed\n"); + dev_kfree_skb(skb); + break; + } + cur_buf->skb = skb; + dma_unmap_len_set(cur_buf, size, adpt->rxbuf_size); + dma_unmap_addr_set(cur_buf, dma, dma); + rfd->addr = cpu_to_le64(dma); + + cur = next; + if (++next == rxq->count) + next = 0; + cur_buf = rxq->bf_info + cur; + rfd = rxq->rfd_hdr + cur; + count++; + } + + if (count) { + wmb(); + rxq->pidx = cur; + ALX_MEM_W16(&adpt->hw, rxq->p_reg, (u16)cur); + } + + return count; +} + +static void alx_free_rxring_buf(struct alx_rx_queue *rxq) +{ + struct alx_buffer *cur_buf; + struct sk_buff_head list; + u16 i; + + if (rxq == NULL) + return; + + for (i = 0; i < rxq->count; i++) { + cur_buf = rxq->bf_info + i; + if (cur_buf->skb) { + dma_unmap_single(rxq->dev, + dma_unmap_addr(cur_buf, dma), + dma_unmap_len(cur_buf, size), + DMA_FROM_DEVICE); + dev_kfree_skb(cur_buf->skb); + cur_buf->skb = NULL; + dma_unmap_len_set(cur_buf, size, 0); + dma_unmap_addr_set(cur_buf, dma, 0); + } + } + + /* some skbs might be pending in the list */ + __skb_queue_head_init(&list); + alx_skb_dequeue_n(rxq, -1, &list); + while (!skb_queue_empty(&list)) { + struct sk_buff *skb; + + skb = __skb_dequeue(&list); + dev_kfree_skb(skb); + } + + rxq->pidx = 0; + rxq->cidx = 0; + rxq->rrd_cidx = 0; +} + +int alx_setup_all_ring_resources(struct alx_adapter *adpt) +{ + int err; + + err = alx_alloc_napis(adpt); + if (err) + goto out; + + err = alx_alloc_rings(adpt); + if (err) + goto out; + + err = alx_reinit_rings(adpt); + +out: + if (unlikely(err)) { + netif_err(adpt, ifup, adpt->netdev, + "setup_all_ring_resources fail %d\n", + err); + } + return err; +} + +static void alx_txbuf_unmap_and_free(struct alx_tx_queue *txq, int entry) +{ + struct alx_buffer *txb = txq->bf_info + entry; + + if (dma_unmap_len(txb, size) && + txb->flags & ALX_BUF_TX_FIRSTFRAG) { + dma_unmap_single(txq->dev, + dma_unmap_addr(txb, dma), + dma_unmap_len(txb, size), + DMA_TO_DEVICE); + txb->flags &= ~ALX_BUF_TX_FIRSTFRAG; + } else if (dma_unmap_len(txb, size)) { + dma_unmap_page(txq->dev, + dma_unmap_addr(txb, dma), + dma_unmap_len(txb, size), + DMA_TO_DEVICE); + } + if (txb->skb) { + dev_kfree_skb_any(txb->skb); + txb->skb = NULL; + } + dma_unmap_len_set(txb, size, 0); +} + +static void alx_free_txring_buf(struct alx_tx_queue *txq) +{ + int i; + + if (!txq->bf_info) + return; + + for (i = 0; i < txq->count; i++) + alx_txbuf_unmap_and_free(txq, i); + + memset(txq->bf_info, 0, txq->count * sizeof(struct alx_buffer)); + memset(txq->tpd_hdr, 0, txq->count * sizeof(struct tpd_desc)); + txq->pidx = 0; + atomic_set(&txq->cidx, 0); + + netdev_tx_reset_queue(netdev_get_tx_queue(txq->netdev, txq->qidx)); +} + +/* free up pending skb for tx/rx */ +static void alx_free_all_rings_buf(struct alx_adapter *adpt) +{ + int i; + + for (i = 0; i < adpt->nr_txq; i++) + if (adpt->qnapi[i]) + alx_free_txring_buf(adpt->qnapi[i]->txq); + + for (i = 0; i < adpt->nr_hwrxq; i++) + if (adpt->qnapi[i]) + alx_free_rxring_buf(adpt->qnapi[i]->rxq); +} + +void alx_free_all_ring_resources(struct alx_adapter *adpt) +{ + alx_free_all_rings_buf(adpt); + alx_free_rings(adpt); + alx_free_napis(adpt); +} + +static inline int alx_tpd_avail(struct alx_tx_queue *txq) +{ + u16 cidx = atomic_read(&txq->cidx); + + return txq->pidx >= cidx ? + txq->count + cidx - txq->pidx - 1 : + cidx - txq->pidx - 1; +} + + + +static bool alx_clean_tx_irq(struct alx_tx_queue *txq) +{ + struct alx_adapter *adpt = netdev_priv(txq->netdev); + struct netdev_queue *netque; + u16 hw_cidx, sw_cidx; + unsigned int total_bytes = 0, total_packets = 0; + int budget = ALX_DEFAULT_TX_WORK; + + if (ALX_FLAG(adpt, HALT)) + return true; + + netque = netdev_get_tx_queue(adpt->netdev, txq->qidx); + sw_cidx = atomic_read(&txq->cidx); + + ALX_MEM_R16(&adpt->hw, txq->c_reg, &hw_cidx); + + if (sw_cidx != hw_cidx) { + + netif_info(adpt, tx_done, adpt->netdev, + "TX[Q:%d, Preg:%x]: cons = 0x%x, hw-cons = 0x%x\n", + txq->qidx, txq->p_reg, sw_cidx, hw_cidx); + + while (sw_cidx != hw_cidx && budget > 0) { + struct sk_buff *skb; + + skb = txq->bf_info[sw_cidx].skb; + if (skb) { + total_bytes += skb->len; + total_packets++; + budget--; + } + alx_txbuf_unmap_and_free(txq, sw_cidx); + if (++sw_cidx == txq->count) + sw_cidx = 0; + } + atomic_set(&txq->cidx, sw_cidx); + + netdev_tx_completed_queue(netque, total_packets, total_bytes); + } + + if (unlikely(netif_tx_queue_stopped(netque) && + netif_carrier_ok(adpt->netdev) && + alx_tpd_avail(txq) > ALX_TX_WAKEUP_THRESH(txq) && + !ALX_FLAG(adpt, HALT))) { + netif_tx_wake_queue(netque); + } + + return sw_cidx == hw_cidx; +} + +static bool alx_dispatch_skb(struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + struct rrd_desc *rrd; + struct alx_buffer *rxb; + struct sk_buff *skb; + u16 length, rfd_cleaned = 0; + struct alx_rx_queue *tmp_rxq; + int qnum; + + if (test_and_set_bit(ALX_RQ_USING, &rxq->flag)) + return false; + + while (1) { + rrd = rxq->rrd_hdr + rxq->rrd_cidx; + if (!(rrd->word3 & (1 << RRD_UPDATED_SHIFT))) + break; + rrd->word3 &= ~(1 << RRD_UPDATED_SHIFT); + + if (unlikely(FIELD_GETX(rrd->word0, RRD_SI) != rxq->cidx || + FIELD_GETX(rrd->word0, RRD_NOR) != 1)) { + netif_err(adpt, rx_err, adpt->netdev, + "wrong SI/NOR packet! rrd->word0= %08x\n", + rrd->word0); + /* reset chip */ + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + return true; + } + rxb = rxq->bf_info + rxq->cidx; + dma_unmap_single(rxq->dev, + dma_unmap_addr(rxb, dma), + dma_unmap_len(rxb, size), + DMA_FROM_DEVICE); + dma_unmap_len_set(rxb, size, 0); + skb = rxb->skb; + rxb->skb = NULL; + + if (unlikely(rrd->word3 & (1 << RRD_ERR_RES_SHIFT) || + rrd->word3 & (1 << RRD_ERR_LEN_SHIFT))) { + netdev_warn(adpt->netdev, + "wrong packet! rrd->word3 is %08x\n", + rrd->word3); + rrd->word3 = 0; + dev_kfree_skb_any(skb); + goto next_pkt; + } + length = FIELD_GETX(rrd->word3, RRD_PKTLEN) - ETH_FCS_LEN; + skb_put(skb, length); + skb->protocol = eth_type_trans(skb, adpt->netdev); + /* checksum */ + skb_checksum_none_assert(skb); + if (adpt->netdev->features & NETIF_F_RXCSUM) { + switch (FIELD_GETX(rrd->word2, RRD_PID)) { + case RRD_PID_IPV6UDP: + case RRD_PID_IPV4UDP: + case RRD_PID_IPV4TCP: + case RRD_PID_IPV6TCP: + if (rrd->word3 & ((1 << RRD_ERR_L4_SHIFT) | + (1 << RRD_ERR_IPV4_SHIFT))) { + netdev_warn( + adpt->netdev, + "rx-chksum error, w2=%X\n", + rrd->word2); + break; + } + skb->ip_summed = CHECKSUM_UNNECESSARY; + break; + } + } + /* vlan tag */ + if (rrd->word3 & (1 << RRD_VLTAGGED_SHIFT)) { + u16 tag = ntohs(FIELD_GETX(rrd->word2, RRD_VLTAG)); + __vlan_hwaccel_put_tag(skb, ntohs(tag)); + } + qnum = FIELD_GETX(rrd->word2, RRD_RSSQ) % adpt->nr_rxq; + tmp_rxq = ALX_CAP(&adpt->hw, MRQ) ? + rxq : adpt->qnapi[qnum]->rxq; + alx_skb_queue_tail(tmp_rxq, skb); + +next_pkt: + + if (++rxq->cidx == rxq->count) + rxq->cidx = 0; + if (++rxq->rrd_cidx == rxq->count) + rxq->rrd_cidx = 0; + + if (++rfd_cleaned > ALX_RX_ALLOC_THRESH) + rfd_cleaned -= alx_alloc_rxring_buf(adpt, rxq); + } + + if (rfd_cleaned) + alx_alloc_rxring_buf(adpt, rxq); + + clear_bit(ALX_RQ_USING, &rxq->flag); + + return true; +} + +static inline struct napi_struct *alx_rxq_to_napi( + struct alx_rx_queue *rxq) +{ + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + return &adpt->qnapi[rxq->qidx]->napi; +} + +static bool alx_clean_rx_irq(struct alx_rx_queue *rxq, int budget) +{ + struct sk_buff_head list; + bool empty; + + __skb_queue_head_init(&list); + alx_dispatch_skb(alx_hw_rxq(rxq)); + empty = alx_skb_dequeue_n(rxq, budget, &list); + if (!skb_queue_empty(&list)) { + struct napi_struct *napi; + struct sk_buff *skb; + + napi = alx_rxq_to_napi(rxq); + while (!skb_queue_empty(&list)) { + skb = __skb_dequeue(&list); + napi_gro_receive(napi, skb); + } + } else { + struct alx_adapter *adpt = netdev_priv(rxq->netdev); + + netif_info(adpt, rx_status, adpt->netdev, + "no packet received for this rxQ\n"); + } + + + return empty; +} + +static int alx_request_msix(struct alx_adapter *adpt) +{ + struct net_device *netdev = adpt->netdev; + int i, err; + int vec; + + err = request_irq(adpt->msix_ent[0].vector, + alx_intr_msix_misc, 0, netdev->name, adpt); + if (err) + goto out; + + vec = 1; + for (i = 0; i < adpt->nr_napi; i++) { + struct alx_napi *np = adpt->qnapi[i]; + + if (np->txq && np->rxq) + sprintf(np->irq_lbl, "%s-TR-%u", netdev->name, i); + else if (np->txq) + sprintf(np->irq_lbl, "%s-T-%u", netdev->name, i); + else + sprintf(np->irq_lbl, "%s-R-%u", netdev->name, i); + + np->vec_idx = vec; + err = request_irq(adpt->msix_ent[vec].vector, + alx_msix_ring, 0, np->irq_lbl, np); + if (err) { + for (i--, vec--; i >= 0; i--) { + np = adpt->qnapi[i]; + free_irq(adpt->msix_ent[vec].vector, np); + } + free_irq(adpt->msix_ent[0].vector, adpt); + goto out; + } + vec++; + } + +out: + return err; +} + +static void alx_disable_msix(struct alx_adapter *adpt) +{ + if (adpt->msix_ent) { + pci_disable_msix(adpt->pdev); + kfree(adpt->msix_ent); + adpt->msix_ent = NULL; + } + ALX_FLAG_CLEAR(adpt, USING_MSIX); +} + +static void alx_disable_msi(struct alx_adapter *adpt) +{ + if (ALX_FLAG(adpt, USING_MSI)) { + pci_disable_msi(adpt->pdev); + ALX_FLAG_CLEAR(adpt, USING_MSI); + } +} + +static int txq_vec_mapping_shift[] = { + 0, ALX_MSI_MAP_TBL1_TXQ0_SHIFT, + 0, ALX_MSI_MAP_TBL1_TXQ1_SHIFT, + 1, ALX_MSI_MAP_TBL2_TXQ2_SHIFT, + 1, ALX_MSI_MAP_TBL2_TXQ3_SHIFT, +}; +static int rxq_vec_mapping_shift[] = { + 0, ALX_MSI_MAP_TBL1_RXQ0_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ1_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ2_SHIFT, + 0, ALX_MSI_MAP_TBL1_RXQ3_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ4_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ5_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ6_SHIFT, + 1, ALX_MSI_MAP_TBL2_RXQ7_SHIFT, +}; +static void alx_config_vector_mapping(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u32 tbl[2]; + int vect, idx, shft; + int i; + + tbl[0] = tbl[1] = 0; + + if (ALX_FLAG(adpt, USING_MSIX)) { + for (vect = 1, i = 0; i < adpt->nr_txq; i++, vect++) { + idx = txq_vec_mapping_shift[i * 2]; + shft = txq_vec_mapping_shift[i * 2 + 1]; + tbl[idx] |= vect << shft; + } + for (vect = 1, i = 0; i < adpt->nr_rxq; i++, vect++) { + idx = rxq_vec_mapping_shift[i * 2]; + shft = rxq_vec_mapping_shift[i * 2 + 1]; + tbl[idx] |= vect << shft; + } + } + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL1, tbl[0]); + ALX_MEM_W32(hw, ALX_MSI_MAP_TBL2, tbl[1]); + ALX_MEM_W32(hw, ALX_MSI_ID_MAP, 0); +} + +void alx_disable_advanced_intr(struct alx_adapter *adpt) +{ + alx_disable_msix(adpt); + alx_disable_msi(adpt); + + /* clear vector/intr-event mapping */ + alx_config_vector_mapping(adpt); +} + +static void alx_irq_enable(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i; + + if (!atomic_dec_and_test(&adpt->irq_sem)) + return; + + /* level-1 interrupt switch */ + ALX_MEM_W32(hw, ALX_ISR, 0); + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + ALX_MEM_FLUSH(hw); + + if (!ALX_FLAG(adpt, USING_MSIX)) + return; + + /* enable all individual MSIX IRQs */ + for (i = 0; i < adpt->nr_vec; i++) + alx_mask_msix(hw, i, false); +} + +static void alx_irq_disable(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i; + + atomic_inc(&adpt->irq_sem); + + ALX_MEM_W32(hw, ALX_ISR, ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_IMR, 0); + ALX_MEM_FLUSH(hw); + + if (ALX_FLAG(adpt, USING_MSIX)) { + for (i = 0; i < adpt->nr_vec; i++) { + alx_mask_msix(hw, i, true); + synchronize_irq(adpt->msix_ent[i].vector); + } + } else { + synchronize_irq(adpt->pdev->irq); + } +} + +static int alx_request_irq(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int err; + u32 msi_ctrl; + + msi_ctrl = FIELDX(ALX_MSI_RETRANS_TM, hw->imt >> 1); + + if (ALX_FLAG(adpt, USING_MSIX)) { + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, msi_ctrl); + err = alx_request_msix(adpt); + if (!err) + goto out; + /* fall back to MSI or legacy interrupt mode, + * re-alloc all resources + */ + alx_free_all_ring_resources(adpt); + alx_disable_msix(adpt); + adpt->nr_rxq = 1; + adpt->nr_txq = 1; + adpt->nr_napi = 1; + adpt->nr_vec = 1; + adpt->nr_hwrxq = 1; + alx_configure_rss(hw, false); + if (!pci_enable_msi(pdev)) + ALX_FLAG_SET(adpt, USING_MSI); + + err = alx_setup_all_ring_resources(adpt); + if (err) + goto out; + } + + if (ALX_FLAG(adpt, USING_MSI)) { + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, + msi_ctrl | ALX_MSI_MASK_SEL_LINE); + err = request_irq(pdev->irq, alx_intr_msi, 0, + adpt->netdev->name, adpt); + if (!err) + goto out; + /* fall back to legacy interrupt */ + alx_disable_msi(adpt); + } + + ALX_MEM_W32(hw, ALX_MSI_RETRANS_TIMER, 0); + err = request_irq(pdev->irq, alx_intr_legacy, IRQF_SHARED, + adpt->netdev->name, adpt); + + if (err) + netif_err(adpt, intr, adpt->netdev, + "request shared irq failed, err = %d\n", + err); + +out: + if (likely(!err)) { + alx_config_vector_mapping(adpt); + + netif_info(adpt, drv, adpt->netdev, + "nr_rxq=%d, nr_txq=%d, nr_napi=%d, nr_vec=%d\n", + adpt->nr_rxq, adpt->nr_txq, + adpt->nr_napi, adpt->nr_vec); + netif_info(adpt, drv, adpt->netdev, + "flags=%lX, Interrupt Mode: %s\n", + adpt->flags, + ALX_FLAG(adpt, USING_MSIX) ? "MSIX" : + ALX_FLAG(adpt, USING_MSI) ? "MSI" : "INTx"); + } else + netdev_err(adpt->netdev, + "register IRQ fail %d\n", + err); + + return err; +} + +static void alx_free_irq(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + int i, vec; + + if (ALX_FLAG(adpt, USING_MSIX)) { + free_irq(adpt->msix_ent[0].vector, adpt); + vec = 1; + for (i = 0; i < adpt->nr_napi; i++, vec++) + free_irq(adpt->msix_ent[vec].vector, adpt->qnapi[i]); + } else { + free_irq(pdev->irq, adpt); + } + alx_disable_advanced_intr(adpt); +} + + +static int alx_identify_hw(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int rev; + int err = -EINVAL; + + hw->device_id = pdev->device; + hw->subdev_id = pdev->subsystem_device; + hw->subven_id = pdev->subsystem_vendor; + hw->revision = pdev->revision; + rev = ALX_REVID(hw); + + switch (ALX_DID(hw)) { + case ALX_DEV_ID_AR8161: + case ALX_DEV_ID_AR8162: + case ALX_DEV_ID_AR8171: + case ALX_DEV_ID_AR8172: + if (rev > ALX_REV_C0) + break; + err = 0; + ALX_CAP_SET(hw, L0S); + ALX_CAP_SET(hw, L1); + ALX_CAP_SET(hw, MTQ); + ALX_CAP_SET(hw, RSS); + ALX_CAP_SET(hw, MSIX); + ALX_CAP_SET(hw, SWOI); + hw->max_dma_chnl = rev >= ALX_REV_B0 ? 4 : 2; + if (rev < ALX_REV_C0) { + hw->ptrn_ofs = 0x600; + hw->max_ptrns = 8; + } else { + hw->ptrn_ofs = 0x14000; + hw->max_ptrns = 16; + } + break; + } + + if (!err && ALX_DID(hw) & 1) + ALX_CAP_SET(hw, GIGA); + + return err; +} + + +static const u8 def_rss_key[40] = { + 0xE2, 0x91, 0xD7, 0x3D, 0x18, 0x05, 0xEC, 0x6C, + 0x2A, 0x94, 0xB3, 0x0D, 0xA5, 0x4F, 0x2B, 0xEC, + 0xEA, 0x49, 0xAF, 0x7C, 0xE2, 0x14, 0xAD, 0x3D, + 0xB8, 0x55, 0xAA, 0xBE, 0x6A, 0x3E, 0x67, 0xEA, + 0x14, 0x36, 0x4D, 0x17, 0x3B, 0xED, 0x20, 0x0D, +}; + +void alx_init_def_rss_idt(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + int i, x, y; + u32 val; + + for (i = 0; i < hw->rss_idt_size; i++) { + val = ethtool_rxfh_indir_default(i, adpt->nr_rxq); + x = i >> 3; + y = i * 4 & 0x1F; + hw->rss_idt[x] &= ~(0xF << y); + hw->rss_idt[x] |= (val & 0xF) << y; + } +} + +/* alx_init_adapter - + * initialize general software structure (struct alx_adapter). + * fields are inited based on PCI device information. + */ +static int alx_init_sw(struct alx_adapter *adpt) +{ + struct pci_dev *pdev = adpt->pdev; + struct alx_hw *hw = &adpt->hw; + int i, err; + + err = alx_identify_hw(adpt); + if (err) { + dev_err(&pdev->dev, "unrecognize the chip, aborting\n"); + return err; + } + + /* assign patch flag for specific platforms */ + alx_patch_assign(hw); + + memcpy(hw->rss_key, def_rss_key, sizeof(def_rss_key)); + hw->rss_idt_size = 128; + hw->rss_hash_type = ALX_RSS_HASH_TYPE_ALL; + hw->smb_timer = 400; + hw->mtu = adpt->netdev->mtu; + adpt->rxbuf_size = ALIGN(ALX_RAW_MTU(hw->mtu), 8); + adpt->tx_ringsz = 256; + adpt->rx_ringsz = 512; + hw->sleep_ctrl = ALX_SLEEP_WOL_MAGIC | ALX_SLEEP_WOL_PHY; + hw->imt = 200; + hw->imask = ALX_ISR_MISC; + hw->dma_chnl = hw->max_dma_chnl; + hw->ith_tpd = adpt->tx_ringsz / 3; + hw->link_up = false; + hw->link_duplex = 0; + hw->link_speed = SPEED_0; + hw->adv_cfg = ADVERTISED_Autoneg | + ADVERTISED_10baseT_Half | + ADVERTISED_10baseT_Full | + ADVERTISED_100baseT_Full | + ADVERTISED_100baseT_Half | + ADVERTISED_1000baseT_Full; + hw->flowctrl = ALX_FC_ANEG | ALX_FC_RX | ALX_FC_TX; + hw->wrr_ctrl = ALX_WRR_PRI_RESTRICT_NONE; + for (i = 0; i < ARRAY_SIZE(hw->wrr); i++) + hw->wrr[i] = 4; + + hw->rx_ctrl = ALX_MAC_CTRL_WOLSPED_SWEN | + ALX_MAC_CTRL_MHASH_ALG_HI5B | + ALX_MAC_CTRL_BRD_EN | + ALX_MAC_CTRL_PCRCE | + ALX_MAC_CTRL_CRCE | + ALX_MAC_CTRL_RXFC_EN | + ALX_MAC_CTRL_TXFC_EN | + FIELDX(ALX_MAC_CTRL_PRMBLEN, 7); + hw->is_fpga = false; + + atomic_set(&adpt->irq_sem, 1); + ALX_FLAG_SET(adpt, HALT); + + return err; +} + + +static void alx_set_vlan_mode(struct alx_hw *hw, + netdev_features_t features) +{ + if (features & NETIF_F_HW_VLAN_RX) + hw->rx_ctrl |= ALX_MAC_CTRL_VLANSTRIP; + else + hw->rx_ctrl &= ~ALX_MAC_CTRL_VLANSTRIP; + + ALX_MEM_W32(hw, ALX_MAC_CTRL, hw->rx_ctrl); +} + + +static netdev_features_t alx_fix_features(struct net_device *netdev, + netdev_features_t features) +{ + /* + * Since there is no support for separate rx/tx vlan accel + * enable/disable make sure tx flag is always in same state as rx. + */ + if (features & NETIF_F_HW_VLAN_RX) + features |= NETIF_F_HW_VLAN_TX; + else + features &= ~NETIF_F_HW_VLAN_TX; + + if (netdev->mtu > ALX_MAX_TSO_PKT_SIZE) + features &= ~(NETIF_F_TSO | NETIF_F_TSO6); + + return features; +} + + +static int alx_set_features(struct net_device *netdev, + netdev_features_t features) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + netdev_features_t changed = netdev->features ^ features; + + if (!(changed & NETIF_F_HW_VLAN_RX)) + return 0; + + alx_set_vlan_mode(&adpt->hw, features); + + return 0; +} + +/* alx_change_mtu - Change the Maximum Transfer Unit */ +static int alx_change_mtu(struct net_device *netdev, int new_mtu) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int old_mtu = netdev->mtu; + int max_frame = new_mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN; + + if ((max_frame < ALX_MIN_FRAME_SIZE) || + (max_frame > ALX_MAX_FRAME_SIZE)) { + netif_err(adpt, hw, netdev, + "invalid MTU setting (%x)\n", + new_mtu); + return -EINVAL; + } + /* set MTU */ + if (old_mtu != new_mtu) { + netif_info(adpt, drv, adpt->netdev, + "changing MTU from %d to %d\n", + netdev->mtu, new_mtu); + netdev->mtu = new_mtu; + adpt->hw.mtu = new_mtu; + adpt->rxbuf_size = new_mtu > ALX_DEF_RXBUF_SIZE ? + ALIGN(max_frame, 8) : ALX_DEF_RXBUF_SIZE; + netdev_update_features(netdev); + if (netif_running(netdev)) + alx_reinit(adpt, false); + } + + return 0; +} + +/* configure hardware everything except: + * 1. interrupt vectors + * 2. enable control for rx modules + */ +void alx_configure(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + + alx_configure_basic(hw); + alx_configure_rss(hw, adpt->nr_rxq > 1); + __alx_set_rx_mode(adpt->netdev); + alx_set_vlan_mode(hw, adpt->netdev->features); +} + +static void alx_netif_stop(struct alx_adapter *adpt) +{ + int i; + + adpt->netdev->trans_start = jiffies; + if (netif_carrier_ok(adpt->netdev)) { + netif_carrier_off(adpt->netdev); + netif_tx_disable(adpt->netdev); + for (i = 0; i < adpt->nr_napi; i++) + napi_disable(&adpt->qnapi[i]->napi); + } +} + +static void alx_netif_start(struct alx_adapter *adpt) +{ + int i; + + netif_tx_wake_all_queues(adpt->netdev); + for (i = 0; i < adpt->nr_napi; i++) + napi_enable(&adpt->qnapi[i]->napi); + netif_carrier_on(adpt->netdev); +} + +static bool alx_enable_msix(struct alx_adapter *adpt) +{ + int nr_txq, nr_rxq, vec_req; + int i, err; + + nr_txq = min_t(int, num_online_cpus(), ALX_MAX_TX_QUEUES); + nr_rxq = min_t(int, num_online_cpus(), ALX_MAX_RX_QUEUES); + nr_rxq = rounddown_pow_of_two(nr_rxq); + /* one more vector for PHY link change & timer & other events */ + vec_req = max_t(int, nr_txq, nr_rxq) + 1; + + if (vec_req <= 2) { + netif_info(adpt, intr, adpt->netdev, + "cpu core num is less, MSI-X isn't necessary\n"); + return false; + } + + adpt->msix_ent = kcalloc(vec_req, + sizeof(struct msix_entry), + GFP_KERNEL); + if (!adpt->msix_ent) { + netif_warn(adpt, intr, adpt->netdev, + "can't alloc msix entries\n"); + return false; + } + for (i = 0; i < vec_req; i++) + adpt->msix_ent[i].entry = i; + + err = pci_enable_msix(adpt->pdev, adpt->msix_ent, vec_req); + if (err) { + kfree(adpt->msix_ent); + adpt->msix_ent = NULL; + netif_warn(adpt, intr, adpt->netdev, + "can't enable MSI-X interrupt\n"); + return false; + } + + adpt->nr_txq = nr_txq; + adpt->nr_rxq = nr_rxq; + adpt->nr_vec = vec_req; + adpt->nr_napi = vec_req - 1; + adpt->nr_hwrxq = ALX_CAP(&adpt->hw, MRQ) ? adpt->nr_rxq : 1; + + return true; +} + +void alx_init_intr(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + + if ((ALX_CAP(hw, MTQ) || ALX_CAP(hw, RSS)) && ALX_CAP(hw, MSIX)) { + if (alx_enable_msix(adpt)) + ALX_FLAG_SET(adpt, USING_MSIX); + } + if (!ALX_FLAG(adpt, USING_MSIX)) { + adpt->nr_txq = 1; + adpt->nr_rxq = 1; + adpt->nr_napi = 1; + adpt->nr_vec = 1; + adpt->nr_hwrxq = 1; + + if (!pci_enable_msi(adpt->pdev)) + ALX_FLAG_SET(adpt, USING_MSI); + } +} + +static int __alx_open(struct alx_adapter *adpt, bool resume) +{ + int err; + + /* decide interrupt mode, some resources allocation depend on it */ + alx_init_intr(adpt); + + /* init rss indirection table */ + alx_init_def_rss_idt(adpt); + + if (!resume) + netif_carrier_off(adpt->netdev); + + /* allocate all memory resources */ + err = alx_setup_all_ring_resources(adpt); + if (err) + goto err_out; + + /* make hardware ready before allocate interrupt */ + alx_configure(adpt); + + err = alx_request_irq(adpt); + if (err) + goto err_out; + + /* netif_set_real_num_tx/rx_queues need rtnl_lock held */ + if (resume) + rtnl_lock(); + netif_set_real_num_tx_queues(adpt->netdev, adpt->nr_txq); + netif_set_real_num_rx_queues(adpt->netdev, adpt->nr_rxq); + if (resume) + rtnl_unlock(); + + ALX_FLAG_CLEAR(adpt, HALT); + + /* clear old interrupts */ + ALX_MEM_W32(&adpt->hw, ALX_ISR, (u32)~ALX_ISR_DIS); + + alx_irq_enable(adpt); + + if (!resume) + netif_tx_start_all_queues(adpt->netdev); + + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); + return 0; + +err_out: + + alx_free_all_ring_resources(adpt); + alx_disable_advanced_intr(adpt); + return err; +} + +static void alx_halt(struct alx_adapter *adpt, bool in_task) +{ + struct alx_hw *hw = &adpt->hw; + + ALX_FLAG_SET(adpt, HALT); + if (!in_task) + alx_cancel_work(adpt); + + alx_netif_stop(adpt); + hw->link_up = false; + hw->link_speed = SPEED_0; + + alx_reset_mac(hw); + + /* disable l0s/l1 */ + alx_enable_aspm(hw, false, false); + alx_irq_disable(adpt); + alx_free_all_rings_buf(adpt); +} + +static void alx_activate(struct alx_adapter *adpt) +{ + /* hardware setting lost, restore it */ + alx_reinit_rings(adpt); + alx_configure(adpt); + + ALX_FLAG_CLEAR(adpt, HALT); + /* clear old interrupts */ + ALX_MEM_W32(&adpt->hw, ALX_ISR, (u32)~ALX_ISR_DIS); + + alx_irq_enable(adpt); + + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); +} + +static void __alx_stop(struct alx_adapter *adpt) +{ + alx_halt(adpt, false); + + alx_free_irq(adpt); + + alx_free_all_ring_resources(adpt); +} + +static void alx_init_ring_ptrs(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_napi *np; + int i, tx_idx, rx_idx; + u32 addr_hi; + u16 txring_header_reg[] = {ALX_TPD_PRI0_ADDR_LO, ALX_TPD_PRI1_ADDR_LO, + ALX_TPD_PRI2_ADDR_LO, ALX_TPD_PRI3_ADDR_LO}; + u16 rfdring_header_reg[] = {ALX_RFD_ADDR_LO}; + u16 rrdring_header_reg[] = {ALX_RRD_ADDR_LO}; + + tx_idx = 0; + rx_idx = 0; + for (i = 0; i < adpt->nr_napi; i++) { + np = adpt->qnapi[i]; + if (np->rxq) { + np->rxq->pidx = 0; + np->rxq->cidx = 0; + np->rxq->rrd_cidx = 0; + if (!ALX_CAP(hw, MRQ) && rx_idx == 0) { + ALX_MEM_W32(hw, rfdring_header_reg[0], + np->rxq->rfd_dma); + ALX_MEM_W32(hw, rrdring_header_reg[0], + np->rxq->rrd_dma); + } + rx_idx++; + } + if (np->txq) { + np->txq->pidx = 0; + atomic_set(&np->txq->cidx, 0); + ALX_MEM_W32(hw, txring_header_reg[tx_idx], + np->txq->tpd_dma); + tx_idx++; + } + } + + addr_hi = ((u64)adpt->ring_header.dma) >> 32; + ALX_MEM_W32(hw, ALX_TX_BASE_ADDR_HI, addr_hi); + ALX_MEM_W32(hw, ALX_RX_BASE_ADDR_HI, addr_hi); + ALX_MEM_W32(hw, ALX_TPD_RING_SZ, adpt->tx_ringsz); + ALX_MEM_W32(hw, ALX_RRD_RING_SZ, adpt->rx_ringsz); + ALX_MEM_W32(hw, ALX_RFD_RING_SZ, adpt->rx_ringsz); + ALX_MEM_W32(hw, ALX_RFD_BUF_SZ, adpt->rxbuf_size); + + /* load these ptrs into chip internal */ + ALX_MEM_W32(hw, ALX_SRAM9, ALX_SRAM_LOAD_PTR); +} + +static void alx_show_speed(struct alx_adapter *adpt, u16 speed) +{ + netif_info(adpt, link, adpt->netdev, + "NIC Link Up: %s\n", + speed_desc(speed)); +} + +static int alx_reinit_rings(struct alx_adapter *adpt) +{ + int i, err = 0; + + alx_free_all_rings_buf(adpt); + + /* set rings' header to HW register */ + alx_init_ring_ptrs(adpt); + + /* alloc hw-rxing buf */ + for (i = 0; i < adpt->nr_hwrxq; i++) { + int count; + + count = alx_alloc_rxring_buf(adpt, adpt->qnapi[i]->rxq); + if (unlikely(!count)) { + err = -ENOMEM; + break; + } + } + + return err; +} + + + +static void alx_check_link(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + u16 speed, old_speed; + bool link_up, old_link_up; + int err; + + if (ALX_FLAG(adpt, HALT)) + return; + + /* clear PHY internal interrupt status, + * otherwise the Main interrupt status will be asserted + * for ever. + */ + alx_clear_phy_intr(hw); + + err = alx_get_phy_link(hw, &link_up, &speed); + if (err) + goto out; + + /* open interrutp mask */ + hw->imask |= ALX_ISR_PHY; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + + if (!link_up && !hw->link_up) + goto out; + + old_speed = hw->link_speed + hw->link_duplex; + old_link_up = hw->link_up; + + if (link_up) { + /* same speed ? */ + if (old_link_up && old_speed == speed) + goto out; + + alx_show_speed(adpt, speed); + hw->link_duplex = speed % 10; + hw->link_speed = speed - hw->link_duplex; + hw->link_up = true; + alx_post_phy_link(hw, hw->link_speed, ALX_CAP(hw, AZ)); + alx_enable_aspm(hw, ALX_CAP(hw, L0S), ALX_CAP(hw, L1)); + alx_start_mac(hw); + + /* link kept, just speed changed */ + if (old_link_up) + goto out; + /* link changed from 'down' to 'up' */ + alx_netif_start(adpt); + goto out; + } + + /* link changed from 'up' to 'down' */ + alx_netif_stop(adpt); + hw->link_up = false; + hw->link_speed = SPEED_0; + netif_info(adpt, link, adpt->netdev, "NIC Link Down\n"); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "linkdown:reset_mac fail %d\n", err); + err = -EIO; + goto out; + } + alx_irq_disable(adpt); + + /* reset-mac cause all settings on HW lost, + * following steps restore all of them and + * refresh whole RX/TX rings + */ + err = alx_reinit_rings(adpt); + if (err) + goto out; + alx_configure(adpt); + alx_enable_aspm(hw, false, ALX_CAP(hw, L1)); + alx_post_phy_link(hw, SPEED_0, ALX_CAP(hw, AZ)); + alx_irq_enable(adpt); + +out: + + if (err) { + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + } +} + +/* alx_open - Called when a network interface is made active */ +static int alx_open(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int err; + + /* during diag running, disallow open */ + if (ALX_FLAG(adpt, TESTING)) + return -EBUSY; + + err = __alx_open(adpt, false); + + return err; +} + +/* alx_stop - Disables a network interface */ +static int alx_stop(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + WARN_ON(ALX_FLAG(adpt, RESETING)); + + __alx_stop(adpt); + + return 0; +} + +static int __alx_shutdown(struct pci_dev *pdev, bool *wol_en) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + struct alx_hw *hw = &adpt->hw; + int err; + u16 speed; + + netif_device_detach(netdev); + if (netif_running(netdev)) + __alx_stop(adpt); + +#ifdef CONFIG_PM_SLEEP + err = pci_save_state(pdev); + if (err) + goto out; +#endif + + err = alx_select_powersaving_speed(hw, &speed); + if (!err) + err = alx_clear_phy_intr(hw); + if (!err) + err = alx_pre_suspend(hw, speed); + if (!err) + err = alx_config_wol(hw); + if (err) + goto out; + + *wol_en = false; + if (hw->sleep_ctrl & ALX_SLEEP_ACTIVE) { + netif_info(adpt, wol, netdev, + "wol: ctrl=%X, speed=%X\n", + hw->sleep_ctrl, speed); + + device_set_wakeup_enable(&pdev->dev, true); + *wol_en = true; + } + + pci_disable_device(pdev); + +out: + if (unlikely(err)) { + netif_info(adpt, hw, netdev, + "shutown err(%x)\n", + err); + err = -EIO; + } + + return err; +} + +static void alx_shutdown(struct pci_dev *pdev) +{ + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (likely(!err)) { + pci_wake_from_d3(pdev, wol_en); + pci_set_power_state(pdev, PCI_D3hot); + } else { + dev_err(&pdev->dev, "shutdown fail %d\n", err); + } +} + +#ifdef CONFIG_PM_SLEEP +static int alx_suspend(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + int err; + bool wol_en; + + err = __alx_shutdown(pdev, &wol_en); + if (unlikely(err)) { + dev_err(&pdev->dev, "shutdown fail in suspend %d\n", err); + err = -EIO; + goto out; + } + if (wol_en) { + pci_prepare_to_sleep(pdev); + } else { + pci_wake_from_d3(pdev, false); + pci_set_power_state(pdev, PCI_D3hot); + } + +out: + return err; +} + +static int alx_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + struct alx_hw *hw = &adpt->hw; + int err; + + if (!netif_running(netdev)) + return 0; + + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + pci_save_state(pdev); + + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + hw->link_up = false; + hw->link_speed = SPEED_0; + hw->imask = ALX_ISR_MISC; + + alx_reset_pcie(hw); + alx_reset_phy(hw, !hw->hib_patch); + err = alx_reset_mac(hw); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "resume:reset_mac fail %d\n", + err); + return -EIO; + } + err = alx_setup_speed_duplex(hw, hw->adv_cfg, hw->flowctrl); + if (err) { + netif_err(adpt, hw, adpt->netdev, + "resume:setup_speed_duplex fail %d\n", + err); + return -EIO; + } + + if (netif_running(netdev)) { + err = __alx_open(adpt, true); + if (err) + return err; + } + + netif_device_attach(netdev); + + return err; +} +#endif + + + +/* alx_update_hw_stats - Update the board statistics counters. */ +static void alx_update_hw_stats(struct alx_adapter *adpt) +{ + if (ALX_FLAG(adpt, HALT) || ALX_FLAG(adpt, RESETING)) + return; + + __alx_update_hw_stats(&adpt->hw); +} + +/* alx_get_stats - Get System Network Statistics + * + * Returns the address of the device statistics structure. + * The statistics are actually updated from the timer callback. + */ +static struct net_device_stats *alx_get_stats(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct net_device_stats *net_stats = &netdev->stats; + struct alx_hw_stats *hw_stats = &adpt->hw.stats; + + spin_lock(&adpt->smb_lock); + + alx_update_hw_stats(adpt); + + net_stats->tx_packets = hw_stats->tx_ok; + net_stats->tx_bytes = hw_stats->tx_byte_cnt; + net_stats->rx_packets = hw_stats->rx_ok; + net_stats->rx_bytes = hw_stats->rx_byte_cnt; + net_stats->multicast = hw_stats->rx_mcast; + net_stats->collisions = hw_stats->tx_single_col + + hw_stats->tx_multi_col * 2 + + hw_stats->tx_late_col + hw_stats->tx_abort_col; + + net_stats->rx_errors = hw_stats->rx_frag + hw_stats->rx_fcs_err + + hw_stats->rx_len_err + hw_stats->rx_ov_sz + + hw_stats->rx_ov_rrd + hw_stats->rx_align_err; + + net_stats->rx_fifo_errors = hw_stats->rx_ov_rxf; + net_stats->rx_length_errors = hw_stats->rx_len_err; + net_stats->rx_crc_errors = hw_stats->rx_fcs_err; + net_stats->rx_frame_errors = hw_stats->rx_align_err; + net_stats->rx_over_errors = hw_stats->rx_ov_rrd + hw_stats->rx_ov_rxf; + + net_stats->rx_missed_errors = hw_stats->rx_ov_rrd + hw_stats->rx_ov_rxf; + + net_stats->tx_errors = hw_stats->tx_late_col + hw_stats->tx_abort_col + + hw_stats->tx_underrun + hw_stats->tx_trunc; + + net_stats->tx_aborted_errors = hw_stats->tx_abort_col; + net_stats->tx_fifo_errors = hw_stats->tx_underrun; + net_stats->tx_window_errors = hw_stats->tx_late_col; + + spin_unlock(&adpt->smb_lock); + + return net_stats; +} + +static void alx_update_stats(struct alx_adapter *adpt) +{ + spin_lock(&adpt->smb_lock); + alx_update_hw_stats(adpt); + spin_unlock(&adpt->smb_lock); +} + +void alx_reinit(struct alx_adapter *adpt, bool in_task) +{ + WARN_ON(in_interrupt()); + + while (test_and_set_bit(ALX_FLAG_RESETING, &adpt->flags)) + msleep(20); + + if (ALX_FLAG(adpt, HALT)) + return; + + alx_halt(adpt, in_task); + alx_activate(adpt); + + ALX_FLAG_CLEAR(adpt, RESETING); +} + +/* alx_task - manages and runs subtasks */ +static void alx_task(struct work_struct *work) +{ + struct alx_adapter *adpt = container_of(work, struct alx_adapter, task); + + /* don't support reentrance */ + while (test_and_set_bit(ALX_FLAG_TASK_PENDING, &adpt->flags)) + msleep(20); + + if (ALX_FLAG(adpt, HALT)) + goto out; + + if (test_and_clear_bit(ALX_FLAG_TASK_RESET, &adpt->flags)) { + netif_info(adpt, hw, adpt->netdev, + "task:alx_reinit\n"); + alx_reinit(adpt, true); + } + + if (test_and_clear_bit(ALX_FLAG_TASK_UPDATE_SMB, &adpt->flags)) + alx_update_stats(adpt); + + if (test_and_clear_bit(ALX_FLAG_TASK_CHK_LINK, &adpt->flags)) + alx_check_link(adpt); + +out: + ALX_FLAG_CLEAR(adpt, TASK_PENDING); +} + + +static irqreturn_t alx_msix_ring(int irq, void *data) +{ + struct alx_napi *np = data; + struct alx_adapter *adpt = np->adpt; + struct alx_hw *hw = &adpt->hw; + + /* mask interrupt to ACK chip */ + alx_mask_msix(hw, np->vec_idx, true); + /* clear interrutp status */ + ALX_MEM_W32(hw, ALX_ISR, np->vec_mask); + + if (!ALX_FLAG(adpt, HALT)) + napi_schedule(&np->napi); + + return IRQ_HANDLED; +} + +static inline bool alx_handle_intr_misc(struct alx_adapter *adpt, u32 intr) +{ + struct alx_hw *hw = &adpt->hw; + + if (unlikely(intr & ALX_ISR_FATAL)) { + netif_info(adpt, hw, adpt->netdev, + "intr-fatal:%08X\n", intr); + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); + return true; + } + + if (intr & ALX_ISR_ALERT) + netdev_warn(adpt->netdev, "interrutp alert :%x\n", intr); + + if (intr & ALX_ISR_SMB) { + ALX_FLAG_SET(adpt, TASK_UPDATE_SMB); + alx_schedule_work(adpt); + } + + if (intr & ALX_ISR_PHY) { + /* suppress PHY interrupt, because the source + * is from PHY internal. only the internal status + * is cleared, the interrupt status could be cleared. + */ + hw->imask &= ~ALX_ISR_PHY; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + ALX_FLAG_SET(adpt, TASK_CHK_LINK); + alx_schedule_work(adpt); + } + + return false; +} + +static irqreturn_t alx_intr_msix_misc(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* mask interrupt to ACK chip */ + alx_mask_msix(hw, 0, true); + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + intr &= (hw->imask & ~ALX_ISR_ALL_QUEUES); + + if (alx_handle_intr_misc(adpt, intr)) + return IRQ_HANDLED; + + /* clear interrupt status */ + ALX_MEM_W32(hw, ALX_ISR, intr); + + /* enable interrupt again */ + if (!ALX_FLAG(adpt, HALT)) + alx_mask_msix(hw, 0, false); + + return IRQ_HANDLED; +} + +static inline irqreturn_t alx_intr_1(struct alx_adapter *adpt, u32 intr) +{ + struct alx_hw *hw = &adpt->hw; + + /* ACK interrupt */ + netif_info(adpt, intr, adpt->netdev, + "ACK interrupt: 0x%lx\n", + intr | ALX_ISR_DIS); + ALX_MEM_W32(hw, ALX_ISR, intr | ALX_ISR_DIS); + intr &= hw->imask; + + if (alx_handle_intr_misc(adpt, intr)) + return IRQ_HANDLED; + + if (intr & (ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0)) { + napi_schedule(&adpt->qnapi[0]->napi); + /* mask rx/tx interrupt, enable them when napi complete */ + hw->imask &= ~ALX_ISR_ALL_QUEUES; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + } + + ALX_MEM_W32(hw, ALX_ISR, 0); + + return IRQ_HANDLED; +} + + +static irqreturn_t alx_intr_msi(int irq, void *data) +{ + struct alx_adapter *adpt = data; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(&adpt->hw, ALX_ISR, &intr); + + return alx_intr_1(adpt, intr); +} + +static irqreturn_t alx_intr_legacy(int irq, void *data) +{ + struct alx_adapter *adpt = data; + struct alx_hw *hw = &adpt->hw; + u32 intr; + + /* read interrupt status */ + ALX_MEM_R32(hw, ALX_ISR, &intr); + if (intr & ALX_ISR_DIS || 0 == (intr & hw->imask)) { + u32 mask; + + ALX_MEM_R32(hw, ALX_IMR, &mask); + netif_info(adpt, intr, adpt->netdev, + "seems a wild interrupt, intr=%X, imask=%X, %X\n", + intr, hw->imask, mask); + + return IRQ_NONE; + } + + return alx_intr_1(adpt, intr); +} + + +static int alx_poll(struct napi_struct *napi, int budget) +{ + struct alx_napi *np = container_of(napi, struct alx_napi, napi); + struct alx_adapter *adpt = np->adpt; + bool complete = true; + + netif_info(adpt, intr, adpt->netdev, + "alx_poll, budget(%d)\n", + budget); + + if (np->txq) + complete = alx_clean_tx_irq(np->txq); + if (np->rxq) + complete &= alx_clean_rx_irq(np->rxq, budget); + + if (!complete) + return budget; + + /* rx-packet finished, exit the polling mode */ + napi_complete(&np->napi); + + /* enable interrupt */ + if (!ALX_FLAG(adpt, HALT)) { + struct alx_hw *hw = &adpt->hw; + + if (ALX_FLAG(adpt, USING_MSIX)) + alx_mask_msix(hw, np->vec_idx, false); + else { + /* TODO: need irq spinlock for imask ?? */ + hw->imask |= ALX_ISR_TX_Q0 | ALX_ISR_RX_Q0; + ALX_MEM_W32(hw, ALX_IMR, hw->imask); + } + ALX_MEM_FLUSH(hw); + } + + return 0; +} + +static inline struct alx_tx_queue *alx_tx_queue_mapping( + struct alx_adapter *adpt, + struct sk_buff *skb) +{ + int index = skb_get_queue_mapping(skb); + + if (index >= adpt->nr_txq) + index = index % adpt->nr_txq; + + return adpt->qnapi[index]->txq; +} + +static inline int alx_tpd_req(struct sk_buff *skb) +{ + int num; + + num = skb_shinfo(skb)->nr_frags + 1; + if (skb_is_gso(skb) && skb_shinfo(skb)->gso_type & SKB_GSO_TCPV6) + num++; + + return num; +} + +/* get custom checksum offload params + * return val: + * neg-val: drop this skb + * 0: no custom checksum offload + * pos-val: have custom cksum offload + */ +static int alx_tx_csum(struct sk_buff *skb, struct tpd_desc *first) +{ + u8 cso, css; + + if (skb->ip_summed != CHECKSUM_PARTIAL) + return 0; + + cso = skb_checksum_start_offset(skb); + if (cso & 0x1) + return -1; + + css = cso + skb->csum_offset; + first->word1 |= FIELDX(TPD_CXSUMSTART, cso >> 1); + first->word1 |= FIELDX(TPD_CXSUMOFFSET, css >> 1); + first->word1 |= 1 << TPD_CXSUM_EN_SHIFT; + + return 1; +} + +static int alx_tso(struct sk_buff *skb, struct tpd_desc *first) +{ + int hdr_len; + int err; + + if (skb->ip_summed != CHECKSUM_PARTIAL || + !skb_is_gso(skb)) + return 0; + + if (skb_header_cloned(skb)) { + err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC); + if (unlikely(err)) + return err; + } + + if (skb->protocol == htons(ETH_P_IP)) { + struct iphdr *iph; + + iph = ip_hdr(skb); + hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); + iph->check = 0; + tcp_hdr(skb)->check = ~csum_tcpudp_magic( + iph->saddr, + iph->daddr, + 0, IPPROTO_TCP, 0); + first->word1 |= 1 << TPD_IPV4_SHIFT; + first->word1 |= FIELDX(TPD_L4HDROFFSET, + skb_transport_offset(skb)); + if (unlikely(skb->len == hdr_len)) { + /* no tcp payload */ + first->word1 |= 1 << TPD_IP_XSUM_SHIFT; + first->word1 |= 1 << TPD_TCP_XSUM_SHIFT; + return 0; + } + first->word1 |= 1 << TPD_LSO_EN_SHIFT; + first->word1 |= FIELDX(TPD_MSS, skb_shinfo(skb)->gso_size); + } else if (skb_is_gso_v6(skb)) { + struct ipv6hdr *ip6h; + + ip6h = ipv6_hdr(skb); + hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb); + ip6h->payload_len = 0; + tcp_hdr(skb)->check = ~csum_ipv6_magic( + &ip6h->saddr, + &ip6h->daddr, + 0, IPPROTO_TCP, 0); + first->word1 |= FIELDX(TPD_L4HDROFFSET, + skb_transport_offset(skb)); + if (unlikely(skb->len == hdr_len)) { + /* no tcp payload */ + ip6h->payload_len = skb->len - + ((unsigned char *)ip6h - skb->data) - + sizeof(struct ipv6hdr); + first->word1 |= 1 << TPD_IP_XSUM_SHIFT; + first->word1 |= 1 << TPD_TCP_XSUM_SHIFT; + return 0; + } + /* for LSOv2, the 1st TPD just provides packet length */ + first->adrl.l.pkt_len = skb->len; + first->word1 |= 1 << TPD_LSO_EN_SHIFT; + first->word1 |= 1 << TPD_LSO_V2_SHIFT; + first->word1 |= FIELDX(TPD_MSS, skb_shinfo(skb)->gso_size); + } + + return 1; +} + +static int alx_tx_map(struct alx_tx_queue *txq, struct sk_buff *skb) +{ + struct tpd_desc *tpd, *first_tpd; + struct alx_buffer *buf, *first_buf; + dma_addr_t dma; + u16 producer, maplen, f; + + producer = txq->pidx; + + first_tpd = txq->tpd_hdr + producer; + first_buf = txq->bf_info + producer; + tpd = first_tpd; + buf = first_buf; + if (tpd->word1 & (1 << TPD_LSO_V2_SHIFT)) { + if (++producer == txq->count) + producer = 0; + tpd = txq->tpd_hdr + producer; + buf = txq->bf_info + producer; + tpd->word0 = first_tpd->word0; + tpd->word1 = first_tpd->word1; + } + maplen = skb_headlen(skb); + dma = dma_map_single(txq->dev, skb->data, maplen, DMA_TO_DEVICE); + if (dma_mapping_error(txq->dev, dma)) + goto err_dma; + + dma_unmap_len_set(buf, size, maplen); + dma_unmap_addr_set(buf, dma, dma); + + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, maplen); + + for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { + struct skb_frag_struct *frag; + + frag = &skb_shinfo(skb)->frags[f]; + if (++producer == txq->count) + producer = 0; + tpd = txq->tpd_hdr + producer; + buf = txq->bf_info + producer; + tpd->word0 = first_tpd->word0; + tpd->word1 = first_tpd->word1; + maplen = skb_frag_size(frag); + dma = skb_frag_dma_map(txq->dev, frag, 0, + maplen, DMA_TO_DEVICE); + if (dma_mapping_error(txq->dev, dma)) + goto err_dma; + dma_unmap_len_set(buf, size, maplen); + dma_unmap_addr_set(buf, dma, dma); + + tpd->adrl.addr = cpu_to_le64(dma); + FIELD_SET32(tpd->word0, TPD_BUFLEN, maplen); + } + /* last TPD */ + tpd->word1 |= 1 << TPD_EOP_SHIFT; + + if (++producer == txq->count) + producer = 0; + + first_buf->flags |= ALX_BUF_TX_FIRSTFRAG; + buf->skb = skb; + txq->pidx = producer; + + return 0; + +err_dma: + + for (f = txq->pidx; f != producer;) { + alx_txbuf_unmap_and_free(txq, f); + if (++f == txq->count) + f = 0; + } + return -1; +} + +static netdev_tx_t alx_start_xmit_ring(struct alx_tx_queue *txq, + struct sk_buff *skb) +{ + struct alx_adapter *adpt; + struct netdev_queue *netque; + struct tpd_desc *first; + int budget, tpdreq; + int do_tso; + + adpt = netdev_priv(txq->netdev); + netque = netdev_get_tx_queue(txq->netdev, skb_get_queue_mapping(skb)); + + tpdreq = alx_tpd_req(skb); + budget = alx_tpd_avail(txq); + + if (unlikely(budget < tpdreq)) { + if (!netif_tx_queue_stopped(netque)) { + netif_tx_stop_queue(netque); + + /* TX reclaim might have plenty of free TPD + * but see tx_queue is active (because its + * judement doesn't acquire tx-spin-lock, + * this situation cause the TX-queue stop and + * never be wakeup. + * try one more time + */ + budget = alx_tpd_avail(txq); + if (budget >= tpdreq) { + netif_tx_wake_queue(netque); + goto tx_conti; + } + netif_err(adpt, tx_err, adpt->netdev, + "TPD Ring is full when queue awake!\n"); + } + return NETDEV_TX_BUSY; + } + +tx_conti: + + first = txq->tpd_hdr + txq->pidx; + memset(first, 0, sizeof(struct tpd_desc)); + + /* NOTE, chip only supports single-VLAN insertion (81-00-TAG) */ + if (vlan_tx_tag_present(skb)) { + first->word1 |= 1 << TPD_INS_VLTAG_SHIFT; + first->word0 |= FIELDX(TPD_VLTAG, htons(vlan_tx_tag_get(skb))); + } + if (skb->protocol == htons(ETH_P_8021Q)) + first->word1 |= 1 << TPD_VLTAGGED_SHIFT; + if (skb_network_offset(skb) != ETH_HLEN) + first->word1 |= 1 << TPD_ETHTYPE_SHIFT; + + do_tso = alx_tso(skb, first); + if (do_tso < 0) + goto drop; + else if (!do_tso && alx_tx_csum(skb, first) < 0) + goto drop; + + if (alx_tx_map(txq, skb) < 0) + goto drop; + + netdev_tx_sent_queue(netque, skb->len); + + /* refresh produce idx on HW */ + wmb(); + ALX_MEM_W16(&adpt->hw, txq->p_reg, txq->pidx); + + netif_info(adpt, tx_done, adpt->netdev, + "TX[Preg:%X]: producer = 0x%x, consumer = 0x%x\n", + txq->p_reg, txq->pidx, atomic_read(&txq->cidx)); + + return NETDEV_TX_OK; + +drop: + netif_info(adpt, tx_done, adpt->netdev, + "tx-skb(%d) dropped\n", + skb->len); + memset(first, 0, sizeof(struct tpd_desc)); + dev_kfree_skb(skb); + + return NETDEV_TX_OK; +} + +static netdev_tx_t alx_start_xmit(struct sk_buff *skb, + struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (ALX_FLAG(adpt, HALT)) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + if (skb->len <= 0) { + dev_kfree_skb_any(skb); + return NETDEV_TX_OK; + } + + return alx_start_xmit_ring(alx_tx_queue_mapping(adpt, skb), skb); +} + + +static void alx_dump_state(struct alx_adapter *adpt) +{ + struct alx_hw *hw = &adpt->hw; + struct alx_tx_queue *txq; + struct tpd_desc *tpd; + u16 begin, end; + int i; + + for (i = 0; i < adpt->nr_txq; i++) { + + txq = adpt->qnapi[i]->txq; + begin = txq->pidx >= 8 ? (txq->pidx - 8) : + (txq->count + txq->pidx - 8); + end = txq->pidx + 4; + if (end >= txq->count) + end -= txq->count; + + netif_err(adpt, tx_err, adpt->netdev, + "-----------------TPD-ring(%d)------------------\n", + i); + + while (begin != end) { + tpd = txq->tpd_hdr + begin; + netif_err(adpt, tx_err, adpt->netdev, + "%X: W0=%08X, W1=%08X, W2=%X\n", + begin, tpd->word0, tpd->word1, + tpd->adrl.l.pkt_len); + if (++begin >= txq->count) + begin = 0; + } + } + + netif_err(adpt, tx_err, adpt->netdev, + "---------------dump registers-----------------\n"); + end = 0x1800; + for (begin = 0x1400; begin < end; begin += 16) { + u32 v1, v2, v3, v4; + + ALX_MEM_R32(hw, begin, &v1); + ALX_MEM_R32(hw, begin+4, &v2); + ALX_MEM_R32(hw, begin+8, &v3); + ALX_MEM_R32(hw, begin+12, &v4); + netif_err(adpt, tx_err, adpt->netdev, + "%04X: %08X,%08X,%08X,%08X\n", + begin, v1, v2, v3, v4); + } +} + +static void alx_tx_timeout(struct net_device *dev) +{ + struct alx_adapter *adpt = netdev_priv(dev); + + alx_dump_state(adpt); + + ALX_FLAG_SET(adpt, TASK_RESET); + alx_schedule_work(adpt); +} + +static int alx_mdio_read(struct net_device *netdev, + int prtad, int devad, u16 addr) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + u16 val; + int err; + + netif_dbg(adpt, hw, netdev, + "alx_mdio_read, prtad=%d, devad=%d, addr=%X\n", + prtad, devad, addr); + + if (prtad != hw->mdio.prtad) + return -EINVAL; + + if (devad != MDIO_DEVAD_NONE) + err = alx_read_phy_ext(hw, devad, addr, &val); + else + err = alx_read_phy_reg(hw, addr, &val); + + return err ? -EIO : val; +} + +static int alx_mdio_write(struct net_device *netdev, + int prtad, int devad, u16 addr, u16 val) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + struct alx_hw *hw = &adpt->hw; + int err; + + netif_dbg(adpt, hw, netdev, + "alx_mdio_write: prtad=%d, devad=%d, addr=%X, val=%X\n", + prtad, devad, addr, val); + + if (prtad != hw->mdio.prtad) + return -EINVAL; + + if (devad != MDIO_DEVAD_NONE) + err = alx_write_phy_ext(hw, devad, addr, val); + else + err = alx_write_phy_reg(hw, addr, val); + + return err ? -EIO : 0; +} + +static int alx_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + + if (!netif_running(netdev)) + return -EAGAIN; + + return mdio_mii_ioctl(&adpt->hw.mdio, if_mii(ifr), cmd); +} + +#ifdef CONFIG_NET_POLL_CONTROLLER +static void alx_poll_controller(struct net_device *netdev) +{ + struct alx_adapter *adpt = netdev_priv(netdev); + int i; + + if (ALX_FLAG(adpt, HALT)) + return; + + if (ALX_FLAG(adpt, USING_MSIX)) { + alx_intr_msix_misc(0, adpt); + for (i = 0; i < adpt->nr_napi; i++) + alx_msix_ring(0, adpt->qnapi[i]); + } else if (ALX_FLAG(adpt, USING_MSI)) + alx_intr_msi(0, adpt); + else + alx_intr_legacy(0, adpt); + +} +#endif + +static const struct net_device_ops alx_netdev_ops = { + .ndo_open = alx_open, + .ndo_stop = alx_stop, + .ndo_start_xmit = alx_start_xmit, + .ndo_get_stats = alx_get_stats, + .ndo_set_rx_mode = alx_set_rx_mode, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_mac_address = alx_set_mac_address, + .ndo_change_mtu = alx_change_mtu, + .ndo_do_ioctl = alx_ioctl, + .ndo_tx_timeout = alx_tx_timeout, + .ndo_fix_features = alx_fix_features, + .ndo_set_features = alx_set_features, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = alx_poll_controller, +#endif +}; + +/* alx_probe - Device Initialization Routine */ +static int +alx_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + struct net_device *netdev; + struct alx_adapter *adpt = NULL; + struct alx_hw *hw; + bool phy_cfged; + int bars, pm_cap, err; + static int cards_found; + + /* enable device (incl. PCI PM wakeup and hotplug setup) */ + err = pci_enable_device_mem(pdev); + if (err) { + dev_err(&pdev->dev, "cannot enable PCI device memory\n"); + return err; + } + + /* The alx chip can DMA to 64-bit addresses, but it uses a single + * shared register for the high 32 bits, so only a single, aligned, + * 4 GB physical address range can be used at a time. + */ + if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) && + !dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) { + dev_dbg(&pdev->dev, "DMA to 64-BIT addresses\n"); + } else { + 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 config, aborting\n"); + goto err_dma_mask; + } + } + } + + /* obtain PCI resources */ + bars = pci_select_bars(pdev, IORESOURCE_MEM); + err = pci_request_selected_regions(pdev, bars, alx_drv_name); + if (err) { + dev_err(&pdev->dev, + "pci_request_selected_regions failed(bars:%d)\n", bars); + goto err_pci_region; + } + + pci_enable_pcie_error_reporting(pdev); + pci_set_master(pdev); + + /* find PM capability */ + pm_cap = pci_find_capability(pdev, PCI_CAP_ID_PM); + if (pm_cap == 0) { + dev_err(&pdev->dev, + "Can't find power management capability, aborting\n"); + err = -EIO; + goto err_pm; + } + err = pci_set_power_state(pdev, PCI_D0); + if (err) { + dev_err(&pdev->dev, "switch to D0 status failed, aborting\n"); + goto err_pm; + } + + /* netdev zeroed in init_etherdev */ + netdev = alloc_etherdev_mqs(sizeof(struct alx_adapter), + ALX_MAX_TX_QUEUES, + ALX_MAX_RX_QUEUES); + if (!netdev) { + dev_err(&pdev->dev, "etherdev_mq alloc failed\n"); + err = -ENOMEM; + goto err_alloc_ethdev; + } + + SET_NETDEV_DEV(netdev, &pdev->dev); + adpt = netdev_priv(netdev); + adpt->netdev = netdev; + adpt->pdev = pdev; + adpt->msg_enable = NETIF_MSG_LINK | + NETIF_MSG_HW | + NETIF_MSG_IFUP | + NETIF_MSG_TX_ERR | + NETIF_MSG_RX_ERR | + NETIF_MSG_WOL; + adpt->bd_number = cards_found; + hw = &adpt->hw; + hw->pdev = pdev; + pci_set_drvdata(pdev, adpt); + + hw->hw_addr = pci_ioremap_bar(pdev, 0); + if (!hw->hw_addr) { + dev_err(&pdev->dev, "cannot map device registers\n"); + err = -EIO; + goto err_iomap; + } + + netdev->netdev_ops = &alx_netdev_ops; + alx_set_ethtool_ops(netdev); + netdev->irq = pdev->irq; + netdev->watchdog_timeo = ALX_WATCHDOG_TIME; + + /* init alx_adapte structure */ + err = alx_init_sw(adpt); + if (err) { + dev_err(&pdev->dev, "net device private data init failed\n"); + goto err_init_sw; + } + + /* reset pcie */ + alx_reset_pcie(hw); + + /* check if phy already configed by ohter driver */ + phy_cfged = alx_phy_configed(hw); + + /* reset PHY to a known stable status */ + if (!phy_cfged) + alx_reset_phy(hw, !hw->hib_patch); + else + dev_info(&pdev->dev, "PHY has been configured.\n"); + + /* reset mac/dma controller */ + err = alx_reset_mac(hw); + if (err) { + dev_err(&pdev->dev, "MAC Reset failed, error = %d\n", err); + err = -EIO; + goto err_rst_mac; + } + + /* setup link to put it in a known good starting state */ + if (!phy_cfged) { + err = alx_setup_speed_duplex(hw, + hw->adv_cfg, hw->flowctrl); + if (err) { + dev_err(&pdev->dev, + "config PHY speed/duplex failed,err=%d\n", + err); + err = -EIO; + goto err_setup_link; + } + } + + netdev->hw_features = NETIF_F_SG | + NETIF_F_HW_CSUM | + NETIF_F_HW_VLAN_RX | + NETIF_F_TSO | + NETIF_F_TSO6; + netdev->features = netdev->hw_features | NETIF_F_HW_VLAN_TX; + + /* read permanent mac addr from register or eFuse */ + if (alx_get_perm_macaddr(hw, hw->perm_addr)) { + dev_warn(&pdev->dev, "invalid perm-address, use random one\n"); + eth_hw_addr_random(netdev); + memcpy(hw->perm_addr, netdev->dev_addr, netdev->addr_len); + } + /* using permanent address as current address */ + memcpy(hw->mac_addr, hw->perm_addr, ETH_ALEN); + memcpy(netdev->dev_addr, hw->mac_addr, ETH_ALEN); + memcpy(netdev->perm_addr, hw->perm_addr, ETH_ALEN); + + /* PHY mdio */ + hw->mdio.prtad = 0; + hw->mdio.mmds = 0; + hw->mdio.dev = netdev; + hw->mdio.mode_support = + MDIO_SUPPORTS_C45 | MDIO_SUPPORTS_C22 | MDIO_EMULATE_C22; + hw->mdio.mdio_read = alx_mdio_read; + hw->mdio.mdio_write = alx_mdio_write; + if (!alx_get_phy_info(hw)) { + dev_err(&pdev->dev, "identify PHY failed\n"); + err = -EIO; + goto err_id_phy; + } + + INIT_WORK(&adpt->task, alx_task); + + err = register_netdev(netdev); + if (err) { + dev_err(&pdev->dev, "register netdevice failed\n"); + goto err_register_netdev; + } + + /* carrier off reporting is important to ethtool even BEFORE open */ + netif_carrier_off(netdev); + + device_set_wakeup_enable(&pdev->dev, hw->sleep_ctrl); + cards_found++; + + dev_info(&pdev->dev, + "alx(%pM): Qualcomm Atheros Ethernet Network Connection\n", + netdev->dev_addr); + + return 0; + +err_id_phy: +err_register_netdev: +err_setup_link: +err_rst_mac: +err_init_sw: + iounmap(hw->hw_addr); +err_iomap: + free_netdev(netdev); +err_alloc_ethdev: +err_pm: + pci_release_selected_regions(pdev, bars); +err_pci_region: +err_dma_mask: + pci_disable_device(pdev); + dev_err(&pdev->dev, "error when probe device, error = %d\n", err); + return err; +} + +/* alx_remove - Device Removal Routine */ +static void alx_remove(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct alx_hw *hw = &adpt->hw; + struct net_device *netdev; + + if (!adpt) + return; + + netdev = adpt->netdev; + + ALX_FLAG_SET(adpt, HALT); + alx_cancel_work(adpt); + + /* restore permanent mac address */ + alx_set_macaddr(hw, hw->perm_addr); + + unregister_netdev(netdev); + iounmap(hw->hw_addr); + pci_release_selected_regions(pdev, + pci_select_bars(pdev, IORESOURCE_MEM)); + free_netdev(netdev); + pci_disable_pcie_error_reporting(pdev); + pci_disable_device(pdev); + pci_set_drvdata(pdev, NULL); +} + +/* alx_pci_error_detected */ +static pci_ers_result_t alx_pci_error_detected(struct pci_dev *pdev, + pci_channel_state_t state) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + pci_ers_result_t rc = PCI_ERS_RESULT_NEED_RESET; + + dev_info(&pdev->dev, "pci error detected\n"); + + rtnl_lock(); + + if (netif_running(netdev)) { + netif_device_detach(netdev); + alx_halt(adpt, false); + } + if (state == pci_channel_io_perm_failure) + rc = PCI_ERS_RESULT_DISCONNECT; + else + pci_disable_device(pdev); + + rtnl_unlock(); + + return rc; +} + +/* alx_pci_error_slot_reset */ +static pci_ers_result_t alx_pci_error_slot_reset(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct alx_hw *hw = &adpt->hw; + pci_ers_result_t rc = PCI_ERS_RESULT_DISCONNECT; + + dev_info(&pdev->dev, "pci error slot reset\n"); + + rtnl_lock(); + + if (pci_enable_device(pdev)) { + dev_err(&pdev->dev, "Re-enable PCI device after reset fail\n"); + goto out; + } + + pci_set_master(pdev); + pci_enable_wake(pdev, PCI_D3hot, 0); + pci_enable_wake(pdev, PCI_D3cold, 0); + + alx_reset_pcie(hw); + if (!alx_reset_mac(hw)) + rc = PCI_ERS_RESULT_RECOVERED; +out: + pci_cleanup_aer_uncorrect_error_status(pdev); + + rtnl_unlock(); + + return rc; +} + +/* alx_pci_error_resume */ +static void alx_pci_error_resume(struct pci_dev *pdev) +{ + struct alx_adapter *adpt = pci_get_drvdata(pdev); + struct net_device *netdev = adpt->netdev; + + dev_info(&pdev->dev, "pci error resume\n"); + + rtnl_lock(); + + if (netif_running(netdev)) { + alx_activate(adpt); + netif_device_attach(netdev); + } + + rtnl_unlock(); +} + + +static struct pci_error_handlers alx_err_handler = { + .error_detected = alx_pci_error_detected, + .slot_reset = alx_pci_error_slot_reset, + .resume = alx_pci_error_resume, +}; + +#ifdef CONFIG_PM_SLEEP +static SIMPLE_DEV_PM_OPS(alx_pm_ops, alx_suspend, alx_resume); +#define ALX_PM_OPS (&alx_pm_ops) +#else +#define ALX_PM_OPS NULL +#endif + +static struct pci_driver alx_driver = { + .name = alx_drv_name, + .id_table = alx_pci_tbl, + .probe = alx_probe, + .remove = alx_remove, + .shutdown = alx_shutdown, + .err_handler = &alx_err_handler, + .driver.pm = ALX_PM_OPS, +}; + + +static int __init alx_init_module(void) +{ + pr_info("%s\n", alx_drv_desc); + return pci_register_driver(&alx_driver); +} +module_init(alx_init_module); + +static void __exit alx_exit_module(void) +{ + pci_unregister_driver(&alx_driver); +} +module_exit(alx_exit_module); --- linux-3.5.0.orig/ubuntu/alx/README.md +++ linux-3.5.0/ubuntu/alx/README.md @@ -0,0 +1,60 @@ +# alx standalone development tree + +The puropose of this development tree is to enable us to do development +on alx for both BSD and Linux with a single unified repository. This enables +us to synchronize fixes for both BSD and Linux. The idea is to help end +typical proprietary driver development for good: + +http://www.youtube.com/watch?v=9P-r3H0bY8c + +# Linux support + +Linux support targets the alx driver to be built in synch with +linux-next.git as the base development tree. Backport kernel support +is provided by utilizing the compat-drivers framework. + +To build for linux you will need a few trees. We have scripts to let +you get all that you need: + +
+cd ~
+git clone git://github.com/mcgrof/compat.git
+cd compat
+./bin/get-compat-trees
+
+cd ~
+mkdir unified/
+git clone git://github.com/mcgrof/alx.git
+
+cd alx
+./make linux
+
+ +# Contributions + +Contributions to compat follow the same mechanisms as used in the Linux kernel, +this means you should provide as Singed-off-by tag as documented on the +Developer's Certificate of Origin 1.1. + +# Submitting patches + +compat and compat-drivers contributions follow the contribution model +implemented by the Linux kernel. Patches or pull requests for compat and +compat-drivers must have be signed-offed. If you don't sign off on them they +will not accepted. This means adding a line that says "Signed-off-by: Name +email" at the end of each commit, indicating that you wrote the code and have +the right to pass it on as an open source patch. For exact definition of what +the Signed-off-by tag is you can read the definition of the "Developer's +Certificate of Origin 1.1", which you can read here: + +http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html + +You can send patches as follows: + + * To: mcgrof@kernel.org, adrian@freebsd.org + * Cc: nic-devel@qualcomm.com + * Subject: alx: foo + +# BSD support + +TBD --- linux-3.5.0.orig/ubuntu/alx/LICENSE +++ linux-3.5.0/ubuntu/alx/LICENSE @@ -0,0 +1,15 @@ +Copyright (c) 2012, Luis R. Rodriguez +Copyright (c) 2012 Qualcomm Atheros, Inc. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + --- linux-3.5.0.orig/ubuntu/i915/intel_display.c +++ linux-3.5.0/ubuntu/i915/intel_display.c @@ -0,0 +1,9490 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "drmP.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "drm_dp_helper.h" +#include "drm_crtc_helper.h" +#include + +bool intel_pipe_has_type(struct drm_crtc *crtc, int type); +static void intel_increase_pllclock(struct drm_crtc *crtc); +static void intel_crtc_update_cursor(struct drm_crtc *crtc, bool on); + +typedef struct { + /* given values */ + int n; + int m1, m2; + int p1, p2; + /* derived values */ + int dot; + int vco; + int m; + int p; +} intel_clock_t; + +typedef struct { + int min, max; +} intel_range_t; + +typedef struct { + int dot_limit; + int p2_slow, p2_fast; +} intel_p2_t; + +#define INTEL_P2_NUM 2 +typedef struct intel_limit intel_limit_t; +struct intel_limit { + intel_range_t dot, vco, n, m, m1, m2, p, p1; + intel_p2_t p2; + bool (* find_pll)(const intel_limit_t *, struct drm_crtc *, + int, int, intel_clock_t *, intel_clock_t *); +}; + +/* FDI */ +#define IRONLAKE_FDI_FREQ 2700000 /* in kHz for mode->clock */ + +int +intel_pch_rawclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + WARN_ON(!HAS_PCH_SPLIT(dev)); + + return I915_READ(PCH_RAWCLK_FREQ) & RAWCLK_FREQ_MASK; +} + +static bool +intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); +static bool +intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static bool +intel_find_pll_g4x_dp(const intel_limit_t *, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); +static bool +intel_find_pll_ironlake_dp(const intel_limit_t *, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static bool +intel_vlv_find_best_pll(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock); + +static inline u32 /* units of 100MHz */ +intel_fdi_link_freq(struct drm_device *dev) +{ + if (IS_GEN5(dev)) { + struct drm_i915_private *dev_priv = dev->dev_private; + return (I915_READ(FDI_PLL_BIOS_0) & FDI_PLL_FB_CLOCK_MASK) + 2; + } else + return 27; +} + +static const intel_limit_t intel_limits_i8xx_dvo = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 930000, .max = 1400000 }, + .n = { .min = 3, .max = 16 }, + .m = { .min = 96, .max = 140 }, + .m1 = { .min = 18, .max = 26 }, + .m2 = { .min = 6, .max = 16 }, + .p = { .min = 4, .max = 128 }, + .p1 = { .min = 2, .max = 33 }, + .p2 = { .dot_limit = 165000, + .p2_slow = 4, .p2_fast = 2 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i8xx_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 930000, .max = 1400000 }, + .n = { .min = 3, .max = 16 }, + .m = { .min = 96, .max = 140 }, + .m1 = { .min = 18, .max = 26 }, + .m2 = { .min = 6, .max = 16 }, + .p = { .min = 4, .max = 128 }, + .p1 = { .min = 1, .max = 6 }, + .p2 = { .dot_limit = 165000, + .p2_slow = 14, .p2_fast = 7 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i9xx_sdvo = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1400000, .max = 2800000 }, + .n = { .min = 1, .max = 6 }, + .m = { .min = 70, .max = 120 }, + .m1 = { .min = 10, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 200000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_i9xx_lvds = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1400000, .max = 2800000 }, + .n = { .min = 1, .max = 6 }, + .m = { .min = 70, .max = 120 }, + .m1 = { .min = 10, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 7, .max = 98 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 112000, + .p2_slow = 14, .p2_fast = 7 }, + .find_pll = intel_find_best_PLL, +}; + + +static const intel_limit_t intel_limits_g4x_sdvo = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 4 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 1, .max = 3}, + .p2 = { .dot_limit = 270000, + .p2_slow = 10, + .p2_fast = 10 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_hdmi = { + .dot = { .min = 22000, .max = 400000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 4 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 16, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8}, + .p2 = { .dot_limit = 165000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_single_channel_lvds = { + .dot = { .min = 20000, .max = 115000 }, + .vco = { .min = 1750000, .max = 3500000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 0, + .p2_slow = 14, .p2_fast = 14 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_dual_channel_lvds = { + .dot = { .min = 80000, .max = 224000 }, + .vco = { .min = 1750000, .max = 3500000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 104, .max = 138 }, + .m1 = { .min = 17, .max = 23 }, + .m2 = { .min = 5, .max = 11 }, + .p = { .min = 14, .max = 42 }, + .p1 = { .min = 2, .max = 6 }, + .p2 = { .dot_limit = 0, + .p2_slow = 7, .p2_fast = 7 + }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_g4x_display_port = { + .dot = { .min = 161670, .max = 227000 }, + .vco = { .min = 1750000, .max = 3500000}, + .n = { .min = 1, .max = 2 }, + .m = { .min = 97, .max = 108 }, + .m1 = { .min = 0x10, .max = 0x12 }, + .m2 = { .min = 0x05, .max = 0x06 }, + .p = { .min = 10, .max = 20 }, + .p1 = { .min = 1, .max = 2}, + .p2 = { .dot_limit = 0, + .p2_slow = 10, .p2_fast = 10 }, + .find_pll = intel_find_pll_g4x_dp, +}; + +static const intel_limit_t intel_limits_pineview_sdvo = { + .dot = { .min = 20000, .max = 400000}, + .vco = { .min = 1700000, .max = 3500000 }, + /* Pineview's Ncounter is a ring counter */ + .n = { .min = 3, .max = 6 }, + .m = { .min = 2, .max = 256 }, + /* Pineview only has one combined m divider, which we treat as m2. */ + .m1 = { .min = 0, .max = 0 }, + .m2 = { .min = 0, .max = 254 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 200000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_find_best_PLL, +}; + +static const intel_limit_t intel_limits_pineview_lvds = { + .dot = { .min = 20000, .max = 400000 }, + .vco = { .min = 1700000, .max = 3500000 }, + .n = { .min = 3, .max = 6 }, + .m = { .min = 2, .max = 256 }, + .m1 = { .min = 0, .max = 0 }, + .m2 = { .min = 0, .max = 254 }, + .p = { .min = 7, .max = 112 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 112000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_find_best_PLL, +}; + +/* Ironlake / Sandybridge + * + * We calculate clock using (register_value + 2) for N/M1/M2, so here + * the range value for them is (actual_value - 2). + */ +static const intel_limit_t intel_limits_ironlake_dac = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 5 }, + .m = { .min = 79, .max = 127 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 5, .max = 80 }, + .p1 = { .min = 1, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 10, .p2_fast = 5 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_single_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 118 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_dual_lvds = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 127 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 14, .max = 56 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 7, .p2_fast = 7 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +/* LVDS 100mhz refclk limits. */ +static const intel_limit_t intel_limits_ironlake_single_lvds_100m = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 2 }, + .m = { .min = 79, .max = 126 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 28, .max = 112 }, + .p1 = { .min = 2, .max = 8 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 14, .p2_fast = 14 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_dual_lvds_100m = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000 }, + .n = { .min = 1, .max = 3 }, + .m = { .min = 79, .max = 126 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 14, .max = 42 }, + .p1 = { .min = 2, .max = 6 }, + .p2 = { .dot_limit = 225000, + .p2_slow = 7, .p2_fast = 7 }, + .find_pll = intel_g4x_find_best_PLL, +}; + +static const intel_limit_t intel_limits_ironlake_display_port = { + .dot = { .min = 25000, .max = 350000 }, + .vco = { .min = 1760000, .max = 3510000}, + .n = { .min = 1, .max = 2 }, + .m = { .min = 81, .max = 90 }, + .m1 = { .min = 12, .max = 22 }, + .m2 = { .min = 5, .max = 9 }, + .p = { .min = 10, .max = 20 }, + .p1 = { .min = 1, .max = 2}, + .p2 = { .dot_limit = 0, + .p2_slow = 10, .p2_fast = 10 }, + .find_pll = intel_find_pll_ironlake_dp, +}; + +static const intel_limit_t intel_limits_vlv_dac = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 4000000, .max = 6000000 }, + .n = { .min = 1, .max = 7 }, + .m = { .min = 22, .max = 450 }, /* guess */ + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +static const intel_limit_t intel_limits_vlv_hdmi = { + .dot = { .min = 20000, .max = 165000 }, + .vco = { .min = 4000000, .max = 5994000}, + .n = { .min = 1, .max = 7 }, + .m = { .min = 60, .max = 300 }, /* guess */ + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +static const intel_limit_t intel_limits_vlv_dp = { + .dot = { .min = 25000, .max = 270000 }, + .vco = { .min = 4000000, .max = 6000000 }, + .n = { .min = 1, .max = 7 }, + .m = { .min = 22, .max = 450 }, + .m1 = { .min = 2, .max = 3 }, + .m2 = { .min = 11, .max = 156 }, + .p = { .min = 10, .max = 30 }, + .p1 = { .min = 2, .max = 3 }, + .p2 = { .dot_limit = 270000, + .p2_slow = 2, .p2_fast = 20 }, + .find_pll = intel_vlv_find_best_pll, +}; + +u32 intel_dpio_read(struct drm_i915_private *dev_priv, int reg) +{ + unsigned long flags; + u32 val = 0; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO idle wait timed out\n"); + goto out_unlock; + } + + I915_WRITE(DPIO_REG, reg); + I915_WRITE(DPIO_PKT, DPIO_RID | DPIO_OP_READ | DPIO_PORTID | + DPIO_BYTE); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO read wait timed out\n"); + goto out_unlock; + } + val = I915_READ(DPIO_DATA); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); + return val; +} + +static void intel_dpio_write(struct drm_i915_private *dev_priv, int reg, + u32 val) +{ + unsigned long flags; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) { + DRM_ERROR("DPIO idle wait timed out\n"); + goto out_unlock; + } + + I915_WRITE(DPIO_DATA, val); + I915_WRITE(DPIO_REG, reg); + I915_WRITE(DPIO_PKT, DPIO_RID | DPIO_OP_WRITE | DPIO_PORTID | + DPIO_BYTE); + if (wait_for_atomic_us((I915_READ(DPIO_PKT) & DPIO_BUSY) == 0, 100)) + DRM_ERROR("DPIO write wait timed out\n"); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); +} + +static void vlv_init_dpio(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Reset the DPIO config */ + I915_WRITE(DPIO_CTL, 0); + POSTING_READ(DPIO_CTL); + I915_WRITE(DPIO_CTL, 1); + POSTING_READ(DPIO_CTL); +} + +static int intel_dual_link_lvds_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Forcing lvds to dual link mode on %s\n", id->ident); + return 1; +} + +static const struct dmi_system_id intel_dual_link_lvds[] = { + { + .callback = intel_dual_link_lvds_callback, + .ident = "Apple MacBook Pro (Core i5/i7 Series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "MacBookPro8,2"), + }, + }, + { } /* terminating entry */ +}; + +static bool is_dual_link_lvds(struct drm_i915_private *dev_priv, + unsigned int reg) +{ + unsigned int val; + + /* use the module option value if specified */ + if (i915_lvds_channel_mode > 0) + return i915_lvds_channel_mode == 2; + + if (dmi_check_system(intel_dual_link_lvds)) + return true; + + if (dev_priv->lvds_val) + val = dev_priv->lvds_val; + else { + /* BIOS should set the proper LVDS register value at boot, but + * in reality, it doesn't set the value when the lid is closed; + * we need to check "the value to be set" in VBT when LVDS + * register is uninitialized. + */ + val = I915_READ(reg); + if (!(val & ~(LVDS_PIPE_MASK | LVDS_DETECTED))) + val = dev_priv->bios_lvds_val; + dev_priv->lvds_val = val; + } + return (val & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP; +} + +static const intel_limit_t *intel_ironlake_limit(struct drm_crtc *crtc, + int refclk) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + const intel_limit_t *limit; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (is_dual_link_lvds(dev_priv, PCH_LVDS)) { + /* LVDS dual channel */ + if (refclk == 100000) + limit = &intel_limits_ironlake_dual_lvds_100m; + else + limit = &intel_limits_ironlake_dual_lvds; + } else { + if (refclk == 100000) + limit = &intel_limits_ironlake_single_lvds_100m; + else + limit = &intel_limits_ironlake_single_lvds; + } + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) + limit = &intel_limits_ironlake_display_port; + else + limit = &intel_limits_ironlake_dac; + + return limit; +} + +static const intel_limit_t *intel_g4x_limit(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + const intel_limit_t *limit; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (is_dual_link_lvds(dev_priv, LVDS)) + /* LVDS with dual channel */ + limit = &intel_limits_g4x_dual_channel_lvds; + else + /* LVDS with dual channel */ + limit = &intel_limits_g4x_single_channel_lvds; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) { + limit = &intel_limits_g4x_hdmi; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO)) { + limit = &intel_limits_g4x_sdvo; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + limit = &intel_limits_g4x_display_port; + } else /* The option is for other outputs */ + limit = &intel_limits_i9xx_sdvo; + + return limit; +} + +static const intel_limit_t *intel_limit(struct drm_crtc *crtc, int refclk) +{ + struct drm_device *dev = crtc->dev; + const intel_limit_t *limit; + + if (HAS_PCH_SPLIT(dev)) + limit = intel_ironlake_limit(crtc, refclk); + else if (IS_G4X(dev)) { + limit = intel_g4x_limit(crtc); + } else if (IS_PINEVIEW(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_pineview_lvds; + else + limit = &intel_limits_pineview_sdvo; + } else if (IS_VALLEYVIEW(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) + limit = &intel_limits_vlv_dac; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI)) + limit = &intel_limits_vlv_hdmi; + else + limit = &intel_limits_vlv_dp; + } else if (!IS_GEN2(dev)) { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_i9xx_lvds; + else + limit = &intel_limits_i9xx_sdvo; + } else { + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + limit = &intel_limits_i8xx_lvds; + else + limit = &intel_limits_i8xx_dvo; + } + return limit; +} + +/* m1 is reserved as 0 in Pineview, n is a ring counter */ +static void pineview_clock(int refclk, intel_clock_t *clock) +{ + clock->m = clock->m2 + 2; + clock->p = clock->p1 * clock->p2; + clock->vco = refclk * clock->m / clock->n; + clock->dot = clock->vco / clock->p; +} + +static void intel_clock(struct drm_device *dev, int refclk, intel_clock_t *clock) +{ + if (IS_PINEVIEW(dev)) { + pineview_clock(refclk, clock); + return; + } + clock->m = 5 * (clock->m1 + 2) + (clock->m2 + 2); + clock->p = clock->p1 * clock->p2; + clock->vco = refclk * clock->m / (clock->n + 2); + clock->dot = clock->vco / clock->p; +} + +/** + * Returns whether any output on the specified pipe is of the specified type + */ +bool intel_pipe_has_type(struct drm_crtc *crtc, int type) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *encoder; + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->type == type) + return true; + + return false; +} + +#define INTELPllInvalid(s) do { /* DRM_DEBUG(s); */ return false; } while (0) +/** + * Returns whether the given set of divisors are valid for a given refclk with + * the given connectors. + */ + +static bool intel_PLL_is_valid(struct drm_device *dev, + const intel_limit_t *limit, + const intel_clock_t *clock) +{ + if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1) + INTELPllInvalid("p1 out of range\n"); + if (clock->p < limit->p.min || limit->p.max < clock->p) + INTELPllInvalid("p out of range\n"); + if (clock->m2 < limit->m2.min || limit->m2.max < clock->m2) + INTELPllInvalid("m2 out of range\n"); + if (clock->m1 < limit->m1.min || limit->m1.max < clock->m1) + INTELPllInvalid("m1 out of range\n"); + if (clock->m1 <= clock->m2 && !IS_PINEVIEW(dev)) + INTELPllInvalid("m1 <= m2\n"); + if (clock->m < limit->m.min || limit->m.max < clock->m) + INTELPllInvalid("m out of range\n"); + if (clock->n < limit->n.min || limit->n.max < clock->n) + INTELPllInvalid("n out of range\n"); + if (clock->vco < limit->vco.min || limit->vco.max < clock->vco) + INTELPllInvalid("vco out of range\n"); + /* XXX: We may need to be checking "Dot clock" depending on the multiplier, + * connector, etc., rather than just a single range. + */ + if (clock->dot < limit->dot.min || limit->dot.max < clock->dot) + INTELPllInvalid("dot out of range\n"); + + return true; +} + +static bool +intel_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) + +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + intel_clock_t clock; + int err = target; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + (I915_READ(LVDS)) != 0) { + /* + * For LVDS, if the panel is on, just rely on its current + * settings for dual-channel. We haven't figured out how to + * reliably set up different single/dual channel state, if we + * even can. + */ + if (is_dual_link_lvds(dev_priv, LVDS)) + clock.p2 = limit->p2.p2_fast; + else + clock.p2 = limit->p2.p2_slow; + } else { + if (target < limit->p2.dot_limit) + clock.p2 = limit->p2.p2_slow; + else + clock.p2 = limit->p2.p2_fast; + } + + memset(best_clock, 0, sizeof(*best_clock)); + + for (clock.m1 = limit->m1.min; clock.m1 <= limit->m1.max; + clock.m1++) { + for (clock.m2 = limit->m2.min; + clock.m2 <= limit->m2.max; clock.m2++) { + /* m1 is always 0 in Pineview */ + if (clock.m2 >= clock.m1 && !IS_PINEVIEW(dev)) + break; + for (clock.n = limit->n.min; + clock.n <= limit->n.max; clock.n++) { + for (clock.p1 = limit->p1.min; + clock.p1 <= limit->p1.max; clock.p1++) { + int this_err; + + intel_clock(dev, refclk, &clock); + if (!intel_PLL_is_valid(dev, limit, + &clock)) + continue; + if (match_clock && + clock.p != match_clock->p) + continue; + + this_err = abs(clock.dot - target); + if (this_err < err) { + *best_clock = clock; + err = this_err; + } + } + } + } + } + + return (err != target); +} + +static bool +intel_g4x_find_best_PLL(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + intel_clock_t clock; + int max_n; + bool found; + /* approximately equals target * 0.00585 */ + int err_most = (target >> 8) + (target >> 9); + found = false; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + int lvds_reg; + + if (HAS_PCH_SPLIT(dev)) + lvds_reg = PCH_LVDS; + else + lvds_reg = LVDS; + if ((I915_READ(lvds_reg) & LVDS_CLKB_POWER_MASK) == + LVDS_CLKB_POWER_UP) + clock.p2 = limit->p2.p2_fast; + else + clock.p2 = limit->p2.p2_slow; + } else { + if (target < limit->p2.dot_limit) + clock.p2 = limit->p2.p2_slow; + else + clock.p2 = limit->p2.p2_fast; + } + + memset(best_clock, 0, sizeof(*best_clock)); + max_n = limit->n.max; + /* based on hardware requirement, prefer smaller n to precision */ + for (clock.n = limit->n.min; clock.n <= max_n; clock.n++) { + /* based on hardware requirement, prefere larger m1,m2 */ + for (clock.m1 = limit->m1.max; + clock.m1 >= limit->m1.min; clock.m1--) { + for (clock.m2 = limit->m2.max; + clock.m2 >= limit->m2.min; clock.m2--) { + for (clock.p1 = limit->p1.max; + clock.p1 >= limit->p1.min; clock.p1--) { + int this_err; + + intel_clock(dev, refclk, &clock); + if (!intel_PLL_is_valid(dev, limit, + &clock)) + continue; + if (match_clock && + clock.p != match_clock->p) + continue; + + this_err = abs(clock.dot - target); + if (this_err < err_most) { + *best_clock = clock; + err_most = this_err; + max_n = clock.n; + found = true; + } + } + } + } + } + return found; +} + +static bool +intel_find_pll_ironlake_dp(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + struct drm_device *dev = crtc->dev; + intel_clock_t clock; + + if (target < 200000) { + clock.n = 1; + clock.p1 = 2; + clock.p2 = 10; + clock.m1 = 12; + clock.m2 = 9; + } else { + clock.n = 2; + clock.p1 = 1; + clock.p2 = 10; + clock.m1 = 14; + clock.m2 = 8; + } + intel_clock(dev, refclk, &clock); + memcpy(best_clock, &clock, sizeof(intel_clock_t)); + return true; +} + +/* DisplayPort has only two frequencies, 162MHz and 270MHz */ +static bool +intel_find_pll_g4x_dp(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + intel_clock_t clock; + if (target < 200000) { + clock.p1 = 2; + clock.p2 = 10; + clock.n = 2; + clock.m1 = 23; + clock.m2 = 8; + } else { + clock.p1 = 1; + clock.p2 = 10; + clock.n = 1; + clock.m1 = 14; + clock.m2 = 2; + } + clock.m = 5 * (clock.m1 + 2) + (clock.m2 + 2); + clock.p = (clock.p1 * clock.p2); + clock.dot = 96000 * clock.m / (clock.n + 2) / clock.p; + clock.vco = 0; + memcpy(best_clock, &clock, sizeof(intel_clock_t)); + return true; +} +static bool +intel_vlv_find_best_pll(const intel_limit_t *limit, struct drm_crtc *crtc, + int target, int refclk, intel_clock_t *match_clock, + intel_clock_t *best_clock) +{ + u32 p1, p2, m1, m2, vco, bestn, bestm1, bestm2, bestp1, bestp2; + u32 m, n, fastclk; + u32 updrate, minupdate, fracbits, p; + unsigned long bestppm, ppm, absppm; + int dotclk, flag; + + flag = 0; + dotclk = target * 1000; + bestppm = 1000000; + ppm = absppm = 0; + fastclk = dotclk / (2*100); + updrate = 0; + minupdate = 19200; + fracbits = 1; + n = p = p1 = p2 = m = m1 = m2 = vco = bestn = 0; + bestm1 = bestm2 = bestp1 = bestp2 = 0; + + /* based on hardware requirement, prefer smaller n to precision */ + for (n = limit->n.min; n <= ((refclk) / minupdate); n++) { + updrate = refclk / n; + for (p1 = limit->p1.max; p1 > limit->p1.min; p1--) { + for (p2 = limit->p2.p2_fast+1; p2 > 0; p2--) { + if (p2 > 10) + p2 = p2 - 1; + p = p1 * p2; + /* based on hardware requirement, prefer bigger m1,m2 values */ + for (m1 = limit->m1.min; m1 <= limit->m1.max; m1++) { + m2 = (((2*(fastclk * p * n / m1 )) + + refclk) / (2*refclk)); + m = m1 * m2; + vco = updrate * m; + if (vco >= limit->vco.min && vco < limit->vco.max) { + ppm = 1000000 * ((vco / p) - fastclk) / fastclk; + absppm = (ppm > 0) ? ppm : (-ppm); + if (absppm < 100 && ((p1 * p2) > (bestp1 * bestp2))) { + bestppm = 0; + flag = 1; + } + if (absppm < bestppm - 10) { + bestppm = absppm; + flag = 1; + } + if (flag) { + bestn = n; + bestm1 = m1; + bestm2 = m2; + bestp1 = p1; + bestp2 = p2; + flag = 0; + } + } + } + } + } + } + best_clock->n = bestn; + best_clock->m1 = bestm1; + best_clock->m2 = bestm2; + best_clock->p1 = bestp1; + best_clock->p2 = bestp2; + + return true; +} + +enum transcoder intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + return intel_crtc->cpu_transcoder; +} + +static void ironlake_wait_for_vblank(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 frame, frame_reg = PIPEFRAME(pipe); + + frame = I915_READ(frame_reg); + + if (wait_for(I915_READ_NOTRACE(frame_reg) != frame, 50)) + DRM_DEBUG_KMS("vblank wait timed out\n"); +} + +/** + * intel_wait_for_vblank - wait for vblank on a given pipe + * @dev: drm device + * @pipe: pipe to wait for + * + * Wait for vblank to occur on a given pipe. Needed for various bits of + * mode setting code. + */ +void intel_wait_for_vblank(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipestat_reg = PIPESTAT(pipe); + + if (INTEL_INFO(dev)->gen >= 5) { + ironlake_wait_for_vblank(dev, pipe); + return; + } + + /* Clear existing vblank status. Note this will clear any other + * sticky status fields as well. + * + * This races with i915_driver_irq_handler() with the result + * that either function could miss a vblank event. Here it is not + * fatal, as we will either wait upon the next vblank interrupt or + * timeout. Generally speaking intel_wait_for_vblank() is only + * called during modeset at which time the GPU should be idle and + * should *not* be performing page flips and thus not waiting on + * vblanks... + * Currently, the result of us stealing a vblank from the irq + * handler is that a single frame will be skipped during swapbuffers. + */ + I915_WRITE(pipestat_reg, + I915_READ(pipestat_reg) | PIPE_VBLANK_INTERRUPT_STATUS); + + /* Wait for vblank interrupt bit to set */ + if (wait_for(I915_READ(pipestat_reg) & + PIPE_VBLANK_INTERRUPT_STATUS, + 50)) + DRM_DEBUG_KMS("vblank wait timed out\n"); +} + +/* + * intel_wait_for_pipe_off - wait for pipe to turn off + * @dev: drm device + * @pipe: pipe to wait for + * + * After disabling a pipe, we can't wait for vblank in the usual way, + * spinning on the vblank interrupt status bit, since we won't actually + * see an interrupt when the pipe is disabled. + * + * On Gen4 and above: + * wait for the pipe register state bit to turn off + * + * Otherwise: + * wait for the display line value to settle (it usually + * ends up stopping at the start of the next frame). + * + */ +void intel_wait_for_pipe_off(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (INTEL_INFO(dev)->gen >= 4) { + int reg = PIPECONF(cpu_transcoder); + + /* Wait for the Pipe State to go off */ + if (wait_for((I915_READ(reg) & I965_PIPECONF_ACTIVE) == 0, + 100)) + WARN(1, "pipe_off wait timed out\n"); + } else { + u32 last_line, line_mask; + int reg = PIPEDSL(pipe); + unsigned long timeout = jiffies + msecs_to_jiffies(100); + + if (IS_GEN2(dev)) + line_mask = DSL_LINEMASK_GEN2; + else + line_mask = DSL_LINEMASK_GEN3; + + /* Wait for the display line to settle */ + do { + last_line = I915_READ(reg) & line_mask; + mdelay(5); + } while (((I915_READ(reg) & line_mask) != last_line) && + time_after(timeout, jiffies)); + if (time_after(jiffies, timeout)) + WARN(1, "pipe_off wait timed out\n"); + } +} + +static const char *state_string(bool enabled) +{ + return enabled ? "on" : "off"; +} + +/* Only for pre-ILK configs */ +static void assert_pll(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = DPLL(pipe); + val = I915_READ(reg); + cur_state = !!(val & DPLL_VCO_ENABLE); + WARN(cur_state != state, + "PLL state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_pll_enabled(d, p) assert_pll(d, p, true) +#define assert_pll_disabled(d, p) assert_pll(d, p, false) + +/* For ILK+ */ +static void assert_pch_pll(struct drm_i915_private *dev_priv, + struct intel_pch_pll *pll, + struct intel_crtc *crtc, + bool state) +{ + u32 val; + bool cur_state; + + if (HAS_PCH_LPT(dev_priv->dev)) { + DRM_DEBUG_DRIVER("LPT detected: skipping PCH PLL test\n"); + return; + } + + if (WARN (!pll, + "asserting PCH PLL %s with no PLL\n", state_string(state))) + return; + + val = I915_READ(pll->pll_reg); + cur_state = !!(val & DPLL_VCO_ENABLE); + WARN(cur_state != state, + "PCH PLL state for reg %x assertion failure (expected %s, current %s), val=%08x\n", + pll->pll_reg, state_string(state), state_string(cur_state), val); + + /* Make sure the selected PLL is correctly attached to the transcoder */ + if (crtc && HAS_PCH_CPT(dev_priv->dev)) { + u32 pch_dpll; + + pch_dpll = I915_READ(PCH_DPLL_SEL); + cur_state = pll->pll_reg == _PCH_DPLL_B; + if (!WARN(((pch_dpll >> (4 * crtc->pipe)) & 1) != cur_state, + "PLL[%d] not attached to this transcoder %d: %08x\n", + cur_state, crtc->pipe, pch_dpll)) { + cur_state = !!(val >> (4*crtc->pipe + 3)); + WARN(cur_state != state, + "PLL[%d] not %s on this transcoder %d: %08x\n", + pll->pll_reg == _PCH_DPLL_B, + state_string(state), + crtc->pipe, + val); + } + } +} +#define assert_pch_pll_enabled(d, p, c) assert_pch_pll(d, p, c, true) +#define assert_pch_pll_disabled(d, p, c) assert_pch_pll(d, p, c, false) + +static void assert_fdi_tx(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (IS_HASWELL(dev_priv->dev)) { + /* On Haswell, DDI is used instead of FDI_TX_CTL */ + reg = TRANS_DDI_FUNC_CTL(cpu_transcoder); + val = I915_READ(reg); + cur_state = !!(val & TRANS_DDI_FUNC_ENABLE); + } else { + reg = FDI_TX_CTL(pipe); + val = I915_READ(reg); + cur_state = !!(val & FDI_TX_ENABLE); + } + WARN(cur_state != state, + "FDI TX state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_fdi_tx_enabled(d, p) assert_fdi_tx(d, p, true) +#define assert_fdi_tx_disabled(d, p) assert_fdi_tx(d, p, false) + +static void assert_fdi_rx(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = FDI_RX_CTL(pipe); + val = I915_READ(reg); + cur_state = !!(val & FDI_RX_ENABLE); + WARN(cur_state != state, + "FDI RX state assertion failure (expected %s, current %s)\n", + state_string(state), state_string(cur_state)); +} +#define assert_fdi_rx_enabled(d, p) assert_fdi_rx(d, p, true) +#define assert_fdi_rx_disabled(d, p) assert_fdi_rx(d, p, false) + +static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + /* ILK FDI PLL is always enabled */ + if (dev_priv->info->gen == 5) + return; + + /* On Haswell, DDI ports are responsible for the FDI PLL setup */ + if (IS_HASWELL(dev_priv->dev)) + return; + + reg = FDI_TX_CTL(pipe); + val = I915_READ(reg); + WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n"); +} + +static void assert_fdi_rx_pll_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + reg = FDI_RX_CTL(pipe); + val = I915_READ(reg); + WARN(!(val & FDI_RX_PLL_ENABLE), "FDI RX PLL assertion failure, should be active but is disabled\n"); +} + +static void assert_panel_unlocked(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int pp_reg, lvds_reg; + u32 val; + enum pipe panel_pipe = PIPE_A; + bool locked = true; + + if (HAS_PCH_SPLIT(dev_priv->dev)) { + pp_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + } else { + pp_reg = PP_CONTROL; + lvds_reg = LVDS; + } + + val = I915_READ(pp_reg); + if (!(val & PANEL_POWER_ON) || + ((val & PANEL_UNLOCK_REGS) == PANEL_UNLOCK_REGS)) + locked = false; + + if (I915_READ(lvds_reg) & LVDS_PIPEB_SELECT) + panel_pipe = PIPE_B; + + WARN(panel_pipe == pipe && locked, + "panel assertion failure, pipe %c regs locked\n", + pipe_name(pipe)); +} + +void assert_pipe(struct drm_i915_private *dev_priv, + enum pipe pipe, bool state) +{ + int reg; + u32 val; + bool cur_state; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + /* if we need the pipe A quirk it must be always on */ + if (pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) + state = true; + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + cur_state = !!(val & PIPECONF_ENABLE); + WARN(cur_state != state, + "pipe %c assertion failure (expected %s, current %s)\n", + pipe_name(pipe), state_string(state), state_string(cur_state)); +} + +static void assert_plane(struct drm_i915_private *dev_priv, + enum plane plane, bool state) +{ + int reg; + u32 val; + bool cur_state; + + reg = DSPCNTR(plane); + val = I915_READ(reg); + cur_state = !!(val & DISPLAY_PLANE_ENABLE); + WARN(cur_state != state, + "plane %c assertion failure (expected %s, current %s)\n", + plane_name(plane), state_string(state), state_string(cur_state)); +} + +#define assert_plane_enabled(d, p) assert_plane(d, p, true) +#define assert_plane_disabled(d, p) assert_plane(d, p, false) + +static void assert_planes_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg, i; + u32 val; + int cur_pipe; + + /* Planes are fixed to pipes on ILK+ */ + if (HAS_PCH_SPLIT(dev_priv->dev)) { + reg = DSPCNTR(pipe); + val = I915_READ(reg); + WARN((val & DISPLAY_PLANE_ENABLE), + "plane %c assertion failure, should be disabled but not\n", + plane_name(pipe)); + return; + } + + /* Need to check both planes against the pipe */ + for (i = 0; i < 2; i++) { + reg = DSPCNTR(i); + val = I915_READ(reg); + cur_pipe = (val & DISPPLANE_SEL_PIPE_MASK) >> + DISPPLANE_SEL_PIPE_SHIFT; + WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe, + "plane %c assertion failure, should be off on pipe %c but is still active\n", + plane_name(i), pipe_name(pipe)); + } +} + +static void assert_pch_refclk_enabled(struct drm_i915_private *dev_priv) +{ + u32 val; + bool enabled; + + if (HAS_PCH_LPT(dev_priv->dev)) { + DRM_DEBUG_DRIVER("LPT does not has PCH refclk, skipping check\n"); + return; + } + + val = I915_READ(PCH_DREF_CONTROL); + enabled = !!(val & (DREF_SSC_SOURCE_MASK | DREF_NONSPREAD_SOURCE_MASK | + DREF_SUPERSPREAD_SOURCE_MASK)); + WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n"); +} + +static void assert_transcoder_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + bool enabled; + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + enabled = !!(val & TRANS_ENABLE); + WARN(enabled, + "transcoder assertion failed, should be off on pipe %c but is still active\n", + pipe_name(pipe)); +} + +static bool dp_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 port_sel, u32 val) +{ + if ((val & DP_PORT_EN) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + u32 trans_dp_ctl_reg = TRANS_DP_CTL(pipe); + u32 trans_dp_ctl = I915_READ(trans_dp_ctl_reg); + if ((trans_dp_ctl & TRANS_DP_PORT_SEL_MASK) != port_sel) + return false; + } else { + if ((val & DP_PIPE_MASK) != (pipe << 30)) + return false; + } + return true; +} + +static bool hdmi_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & PORT_ENABLE) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & TRANSCODER_MASK) != TRANSCODER(pipe)) + return false; + } + return true; +} + +static bool lvds_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & LVDS_PORT_EN) == 0) + return false; + + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & LVDS_PIPE_MASK) != LVDS_PIPE(pipe)) + return false; + } + return true; +} + +static bool adpa_pipe_enabled(struct drm_i915_private *dev_priv, + enum pipe pipe, u32 val) +{ + if ((val & ADPA_DAC_ENABLE) == 0) + return false; + if (HAS_PCH_CPT(dev_priv->dev)) { + if ((val & PORT_TRANS_SEL_MASK) != PORT_TRANS_SEL_CPT(pipe)) + return false; + } else { + if ((val & ADPA_PIPE_SELECT_MASK) != ADPA_PIPE_SELECT(pipe)) + return false; + } + return true; +} + +static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe, int reg, u32 port_sel) +{ + u32 val = I915_READ(reg); + WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val), + "PCH DP (0x%08x) enabled on transcoder %c, should be disabled\n", + reg, pipe_name(pipe)); + + WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0 + && (val & DP_PIPEB_SELECT), + "IBX PCH dp port still using transcoder B\n"); +} + +static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe, int reg) +{ + u32 val = I915_READ(reg); + WARN(hdmi_pipe_enabled(dev_priv, pipe, val), + "PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n", + reg, pipe_name(pipe)); + + WARN(HAS_PCH_IBX(dev_priv->dev) && (val & PORT_ENABLE) == 0 + && (val & SDVO_PIPE_B_SELECT), + "IBX PCH hdmi port still using transcoder B\n"); +} + +static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + int reg; + u32 val; + + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_B, TRANS_DP_PORT_SEL_B); + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_C, TRANS_DP_PORT_SEL_C); + assert_pch_dp_disabled(dev_priv, pipe, PCH_DP_D, TRANS_DP_PORT_SEL_D); + + reg = PCH_ADPA; + val = I915_READ(reg); + WARN(adpa_pipe_enabled(dev_priv, pipe, val), + "PCH VGA enabled on transcoder %c, should be disabled\n", + pipe_name(pipe)); + + reg = PCH_LVDS; + val = I915_READ(reg); + WARN(lvds_pipe_enabled(dev_priv, pipe, val), + "PCH LVDS enabled on transcoder %c, should be disabled\n", + pipe_name(pipe)); + + assert_pch_hdmi_disabled(dev_priv, pipe, HDMIB); + assert_pch_hdmi_disabled(dev_priv, pipe, HDMIC); + assert_pch_hdmi_disabled(dev_priv, pipe, HDMID); +} + +/** + * intel_enable_pll - enable a PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to enable + * + * Enable @pipe's PLL so we can start pumping pixels from a plane. Check to + * make sure the PLL reg is writable first though, since the panel write + * protect mechanism may be enabled. + * + * Note! This is for pre-ILK only. + * + * Unfortunately needed by dvo_ns2501 since the dvo depends on it running. + */ +static void intel_enable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) +{ + int reg; + u32 val; + + /* No really, not for ILK+ */ + BUG_ON(!IS_VALLEYVIEW(dev_priv->dev) && dev_priv->info->gen >= 5); + + /* PLL is protected by panel, make sure we can write it */ + if (IS_MOBILE(dev_priv->dev) && !IS_I830(dev_priv->dev)) + assert_panel_unlocked(dev_priv, pipe); + + reg = DPLL(pipe); + val = I915_READ(reg); + val |= DPLL_VCO_ENABLE; + + /* We do this three times for luck */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(150); /* wait for warmup */ +} + +/** + * intel_disable_pll - disable a PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to disable + * + * Disable the PLL for @pipe, making sure the pipe is off first. + * + * Note! This is for pre-ILK only. + */ +static void intel_disable_pll(struct drm_i915_private *dev_priv, enum pipe pipe) +{ + int reg; + u32 val; + + /* Don't disable pipe A or pipe A PLLs if needed */ + if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE)) + return; + + /* Make sure the pipe isn't still relying on us */ + assert_pipe_disabled(dev_priv, pipe); + + reg = DPLL(pipe); + val = I915_READ(reg); + val &= ~DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +/* SBI access */ +static void +intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value, + enum intel_sbi_destination destination) +{ + unsigned long flags; + u32 tmp; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, 100)) { + DRM_ERROR("timeout waiting for SBI to become ready\n"); + goto out_unlock; + } + + I915_WRITE(SBI_ADDR, (reg << 16)); + I915_WRITE(SBI_DATA, value); + + if (destination == SBI_ICLK) + tmp = SBI_CTL_DEST_ICLK | SBI_CTL_OP_CRWR; + else + tmp = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IOWR; + I915_WRITE(SBI_CTL_STAT, SBI_BUSY | tmp); + + if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, + 100)) { + DRM_ERROR("timeout waiting for SBI to complete write transaction\n"); + goto out_unlock; + } + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); +} + +static u32 +intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg, + enum intel_sbi_destination destination) +{ + unsigned long flags; + u32 value = 0; + + spin_lock_irqsave(&dev_priv->dpio_lock, flags); + if (wait_for((I915_READ(SBI_CTL_STAT) & SBI_BUSY) == 0, 100)) { + DRM_ERROR("timeout waiting for SBI to become ready\n"); + goto out_unlock; + } + + I915_WRITE(SBI_ADDR, (reg << 16)); + + if (destination == SBI_ICLK) + value = SBI_CTL_DEST_ICLK | SBI_CTL_OP_CRRD; + else + value = SBI_CTL_DEST_MPHY | SBI_CTL_OP_IORD; + I915_WRITE(SBI_CTL_STAT, value | SBI_BUSY); + + if (wait_for((I915_READ(SBI_CTL_STAT) & (SBI_BUSY | SBI_RESPONSE_FAIL)) == 0, + 100)) { + DRM_ERROR("timeout waiting for SBI to complete read transaction\n"); + goto out_unlock; + } + + value = I915_READ(SBI_DATA); + +out_unlock: + spin_unlock_irqrestore(&dev_priv->dpio_lock, flags); + return value; +} + +/** + * ironlake_enable_pch_pll - enable PCH PLL + * @dev_priv: i915 private structure + * @pipe: pipe PLL to enable + * + * The PCH PLL needs to be enabled before the PCH transcoder, since it + * drives the transcoder clock. + */ +static void ironlake_enable_pch_pll(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll; + int reg; + u32 val; + + /* PCH PLLs only available on ILK, SNB and IVB */ + BUG_ON(dev_priv->info->gen < 5); + pll = intel_crtc->pch_pll; + if (pll == NULL) + return; + + if (WARN_ON(pll->refcount == 0)) + return; + + DRM_DEBUG_KMS("enable PCH PLL %x (active %d, on? %d)for crtc %d\n", + pll->pll_reg, pll->active, pll->on, + intel_crtc->base.base.id); + + /* PCH refclock must be enabled first */ + assert_pch_refclk_enabled(dev_priv); + + if (pll->active++ && pll->on) { + assert_pch_pll_enabled(dev_priv, pll, NULL); + return; + } + + DRM_DEBUG_KMS("enabling PCH PLL %x\n", pll->pll_reg); + + reg = pll->pll_reg; + val = I915_READ(reg); + val |= DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(200); + + pll->on = true; +} + +static void intel_disable_pch_pll(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll = intel_crtc->pch_pll; + int reg; + u32 val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + if (pll == NULL) + return; + + if (WARN_ON(pll->refcount == 0)) + return; + + DRM_DEBUG_KMS("disable PCH PLL %x (active %d, on? %d) for crtc %d\n", + pll->pll_reg, pll->active, pll->on, + intel_crtc->base.base.id); + + if (WARN_ON(pll->active == 0)) { + assert_pch_pll_disabled(dev_priv, pll, NULL); + return; + } + + if (--pll->active) { + assert_pch_pll_enabled(dev_priv, pll, NULL); + return; + } + + DRM_DEBUG_KMS("disabling PCH PLL %x\n", pll->pll_reg); + + /* Make sure transcoder isn't still depending on us */ + assert_transcoder_disabled(dev_priv, intel_crtc->pipe); + + reg = pll->pll_reg; + val = I915_READ(reg); + val &= ~DPLL_VCO_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + udelay(200); + + pll->on = false; +} + +static void ironlake_enable_pch_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_device *dev = dev_priv->dev; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + uint32_t reg, val, pipeconf_val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + + /* Make sure PCH DPLL is enabled */ + assert_pch_pll_enabled(dev_priv, + to_intel_crtc(crtc)->pch_pll, + to_intel_crtc(crtc)); + + /* FDI must be feeding us bits for PCH ports */ + assert_fdi_tx_enabled(dev_priv, pipe); + assert_fdi_rx_enabled(dev_priv, pipe); + + if (HAS_PCH_CPT(dev)) { + /* Workaround: Set the timing override bit before enabling the + * pch transcoder. */ + reg = TRANS_CHICKEN2(pipe); + val = I915_READ(reg); + val |= TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(reg, val); + } + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + pipeconf_val = I915_READ(PIPECONF(pipe)); + + if (HAS_PCH_IBX(dev_priv->dev)) { + /* + * make the BPC in transcoder be consistent with + * that in pipeconf reg. + */ + val &= ~PIPE_BPC_MASK; + val |= pipeconf_val & PIPE_BPC_MASK; + } + + val &= ~TRANS_INTERLACE_MASK; + if ((pipeconf_val & PIPECONF_INTERLACE_MASK) == PIPECONF_INTERLACED_ILK) + if (HAS_PCH_IBX(dev_priv->dev) && + intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO)) + val |= TRANS_LEGACY_INTERLACED_ILK; + else + val |= TRANS_INTERLACED; + else + val |= TRANS_PROGRESSIVE; + + I915_WRITE(reg, val | TRANS_ENABLE); + if (wait_for(I915_READ(reg) & TRANS_STATE_ENABLE, 100)) + DRM_ERROR("failed to enable transcoder %d\n", pipe); +} + +static void lpt_enable_pch_transcoder(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder) +{ + u32 val, pipeconf_val; + + /* PCH only available on ILK+ */ + BUG_ON(dev_priv->info->gen < 5); + + /* FDI must be feeding us bits for PCH ports */ + assert_fdi_tx_enabled(dev_priv, cpu_transcoder); + assert_fdi_rx_enabled(dev_priv, TRANSCODER_A); + + /* Workaround: set timing override bit. */ + val = I915_READ(_TRANSA_CHICKEN2); + val |= TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(_TRANSA_CHICKEN2, val); + + val = TRANS_ENABLE; + pipeconf_val = I915_READ(PIPECONF(cpu_transcoder)); + + if ((pipeconf_val & PIPECONF_INTERLACE_MASK_HSW) == + PIPECONF_INTERLACED_ILK) + val |= TRANS_INTERLACED; + else + val |= TRANS_PROGRESSIVE; + + I915_WRITE(TRANSCONF(TRANSCODER_A), val); + if (wait_for(I915_READ(_TRANSACONF) & TRANS_STATE_ENABLE, 100)) + DRM_ERROR("Failed to enable PCH transcoder\n"); +} + +static void ironlake_disable_pch_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + struct drm_device *dev = dev_priv->dev; + uint32_t reg, val; + + /* FDI relies on the transcoder */ + assert_fdi_tx_disabled(dev_priv, pipe); + assert_fdi_rx_disabled(dev_priv, pipe); + + /* Ports must be off as well */ + assert_pch_ports_disabled(dev_priv, pipe); + + reg = TRANSCONF(pipe); + val = I915_READ(reg); + val &= ~TRANS_ENABLE; + I915_WRITE(reg, val); + /* wait for PCH transcoder off, transcoder state */ + if (wait_for((I915_READ(reg) & TRANS_STATE_ENABLE) == 0, 50)) + DRM_ERROR("failed to disable transcoder %d\n", pipe); + + if (!HAS_PCH_IBX(dev)) { + /* Workaround: Clear the timing override chicken bit again. */ + reg = TRANS_CHICKEN2(pipe); + val = I915_READ(reg); + val &= ~TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(reg, val); + } +} + +static void lpt_disable_pch_transcoder(struct drm_i915_private *dev_priv) +{ + u32 val; + + val = I915_READ(_TRANSACONF); + val &= ~TRANS_ENABLE; + I915_WRITE(_TRANSACONF, val); + /* wait for PCH transcoder off, transcoder state */ + if (wait_for((I915_READ(_TRANSACONF) & TRANS_STATE_ENABLE) == 0, 50)) + DRM_ERROR("Failed to disable PCH transcoder\n"); + + /* Workaround: clear timing override bit. */ + val = I915_READ(_TRANSA_CHICKEN2); + val &= ~TRANS_CHICKEN2_TIMING_OVERRIDE; + I915_WRITE(_TRANSA_CHICKEN2, val); +} + +/** + * intel_enable_pipe - enable a pipe, asserting requirements + * @dev_priv: i915 private structure + * @pipe: pipe to enable + * @pch_port: on ILK+, is this pipe driving a PCH port or not + * + * Enable @pipe, making sure that various hardware specific requirements + * are met, if applicable, e.g. PLL enabled, LVDS pairs enabled, etc. + * + * @pipe should be %PIPE_A or %PIPE_B. + * + * Will wait until the pipe is actually running (i.e. first vblank) before + * returning. + */ +static void intel_enable_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, + bool pch_port) +{ + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + enum transcoder pch_transcoder; + int reg; + u32 val; + + if (IS_HASWELL(dev_priv->dev)) + pch_transcoder = TRANSCODER_A; + else + pch_transcoder = pipe; + + /* + * A pipe without a PLL won't actually be able to drive bits from + * a plane. On ILK+ the pipe PLLs are integrated, so we don't + * need the check. + */ + if (!HAS_PCH_SPLIT(dev_priv->dev)) + assert_pll_enabled(dev_priv, pipe); + else { + if (pch_port) { + /* if driving the PCH, we need FDI enabled */ + assert_fdi_rx_pll_enabled(dev_priv, pch_transcoder); + assert_fdi_tx_pll_enabled(dev_priv, cpu_transcoder); + } + /* FIXME: assert CPU port conditions for SNB+ */ + } + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + if (val & PIPECONF_ENABLE) + return; + + I915_WRITE(reg, val | PIPECONF_ENABLE); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +/** + * intel_disable_pipe - disable a pipe, asserting requirements + * @dev_priv: i915 private structure + * @pipe: pipe to disable + * + * Disable @pipe, making sure that various hardware specific requirements + * are met, if applicable, e.g. plane disabled, panel fitter off, etc. + * + * @pipe should be %PIPE_A or %PIPE_B. + * + * Will wait until the pipe has shut down before returning. + */ +static void intel_disable_pipe(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int reg; + u32 val; + + /* + * Make sure planes won't keep trying to pump pixels to us, + * or we might hang the display. + */ + assert_planes_disabled(dev_priv, pipe); + + /* Don't disable pipe A or pipe A PLLs if needed */ + if (pipe == PIPE_A && (dev_priv->quirks & QUIRK_PIPEA_FORCE)) + return; + + reg = PIPECONF(cpu_transcoder); + val = I915_READ(reg); + if ((val & PIPECONF_ENABLE) == 0) + return; + + I915_WRITE(reg, val & ~PIPECONF_ENABLE); + intel_wait_for_pipe_off(dev_priv->dev, pipe); +} + +/* + * Plane regs are double buffered, going from enabled->disabled needs a + * trigger in order to latch. The display address reg provides this. + */ +void intel_flush_display_plane(struct drm_i915_private *dev_priv, + enum plane plane) +{ + if (dev_priv->info->gen >= 4) + I915_WRITE(DSPSURF(plane), I915_READ(DSPSURF(plane))); + else + I915_WRITE(DSPADDR(plane), I915_READ(DSPADDR(plane))); +} + +/** + * intel_enable_plane - enable a display plane on a given pipe + * @dev_priv: i915 private structure + * @plane: plane to enable + * @pipe: pipe being fed + * + * Enable @plane on @pipe, making sure that @pipe is running first. + */ +static void intel_enable_plane(struct drm_i915_private *dev_priv, + enum plane plane, enum pipe pipe) +{ + int reg; + u32 val; + + /* If the pipe isn't enabled, we can't pump pixels and may hang */ + assert_pipe_enabled(dev_priv, pipe); + + reg = DSPCNTR(plane); + val = I915_READ(reg); + if (val & DISPLAY_PLANE_ENABLE) + return; + + I915_WRITE(reg, val | DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, plane); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +/** + * intel_disable_plane - disable a display plane + * @dev_priv: i915 private structure + * @plane: plane to disable + * @pipe: pipe consuming the data + * + * Disable @plane; should be an independent operation. + */ +static void intel_disable_plane(struct drm_i915_private *dev_priv, + enum plane plane, enum pipe pipe) +{ + int reg; + u32 val; + + reg = DSPCNTR(plane); + val = I915_READ(reg); + if ((val & DISPLAY_PLANE_ENABLE) == 0) + return; + + I915_WRITE(reg, val & ~DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, plane); + intel_wait_for_vblank(dev_priv->dev, pipe); +} + +int +intel_pin_and_fence_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 alignment; + int ret; + + switch (obj->tiling_mode) { + case I915_TILING_NONE: + if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) + alignment = 128 * 1024; + else if (INTEL_INFO(dev)->gen >= 4) + alignment = 4 * 1024; + else + alignment = 64 * 1024; + break; + case I915_TILING_X: + /* pin() will align the object as required by fence */ + alignment = 0; + break; + case I915_TILING_Y: + /* FIXME: Is this true? */ + DRM_ERROR("Y tiled not allowed for scan out buffers\n"); + return -EINVAL; + default: + BUG(); + } + + dev_priv->mm.interruptible = false; + ret = i915_gem_object_pin_to_display_plane(obj, alignment, pipelined); + if (ret) + goto err_interruptible; + + /* Install a fence for tiled scan-out. Pre-i965 always needs a + * fence, whereas 965+ only requires a fence if using + * framebuffer compression. For simplicity, we always install + * a fence as the cost is not that onerous. + */ + ret = i915_gem_object_get_fence(obj); + if (ret) + goto err_unpin; + + i915_gem_object_pin_fence(obj); + + dev_priv->mm.interruptible = true; + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_interruptible: + dev_priv->mm.interruptible = true; + return ret; +} + +void intel_unpin_fb_obj(struct drm_i915_gem_object *obj) +{ + i915_gem_object_unpin_fence(obj); + i915_gem_object_unpin(obj); +} + +/* Computes the linear offset to the base tile and adjusts x, y. bytes per pixel + * is assumed to be a power-of-two. */ +unsigned long intel_gen4_compute_offset_xtiled(int *x, int *y, + unsigned int bpp, + unsigned int pitch) +{ + int tile_rows, tiles; + + tile_rows = *y / 8; + *y %= 8; + tiles = *x / (512/bpp); + *x %= 512/bpp; + + return tile_rows * pitch * 8 + tiles * 4096; +} + +static int i9xx_update_plane(struct drm_crtc *crtc, struct drm_framebuffer *fb, + int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int plane = intel_crtc->plane; + unsigned long linear_offset; + u32 dspcntr; + u32 reg; + + switch (plane) { + case 0: + case 1: + break; + default: + DRM_ERROR("Can't update plane %d in SAREA\n", plane); + return -EINVAL; + } + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + reg = DSPCNTR(plane); + dspcntr = I915_READ(reg); + /* Mask out pixel format bits in case we change it */ + dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; + switch (fb->pixel_format) { + case DRM_FORMAT_C8: + dspcntr |= DISPPLANE_8BPP; + break; + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_ARGB1555: + dspcntr |= DISPPLANE_BGRX555; + break; + case DRM_FORMAT_RGB565: + dspcntr |= DISPPLANE_BGRX565; + break; + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + dspcntr |= DISPPLANE_BGRX888; + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + dspcntr |= DISPPLANE_RGBX888; + break; + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + dspcntr |= DISPPLANE_BGRX101010; + break; + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + dspcntr |= DISPPLANE_RGBX101010; + break; + default: + DRM_ERROR("Unknown pixel format 0x%08x\n", fb->pixel_format); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 4) { + if (obj->tiling_mode != I915_TILING_NONE) + dspcntr |= DISPPLANE_TILED; + else + dspcntr &= ~DISPPLANE_TILED; + } + + I915_WRITE(reg, dspcntr); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + + if (INTEL_INFO(dev)->gen >= 4) { + intel_crtc->dspaddr_offset = + intel_gen4_compute_offset_xtiled(&x, &y, + fb->bits_per_pixel / 8, + fb->pitches[0]); + linear_offset -= intel_crtc->dspaddr_offset; + } else { + intel_crtc->dspaddr_offset = linear_offset; + } + + DRM_DEBUG_KMS("Writing base %08X %08lX %d %d %d\n", + obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); + I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); + if (INTEL_INFO(dev)->gen >= 4) { + I915_MODIFY_DISPBASE(DSPSURF(plane), + obj->gtt_offset + intel_crtc->dspaddr_offset); + I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); + I915_WRITE(DSPLINOFF(plane), linear_offset); + } else + I915_WRITE(DSPADDR(plane), obj->gtt_offset + linear_offset); + POSTING_READ(reg); + + return 0; +} + +static int ironlake_update_plane(struct drm_crtc *crtc, + struct drm_framebuffer *fb, int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int plane = intel_crtc->plane; + unsigned long linear_offset; + u32 dspcntr; + u32 reg; + + switch (plane) { + case 0: + case 1: + case 2: + break; + default: + DRM_ERROR("Can't update plane %d in SAREA\n", plane); + return -EINVAL; + } + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + reg = DSPCNTR(plane); + dspcntr = I915_READ(reg); + /* Mask out pixel format bits in case we change it */ + dspcntr &= ~DISPPLANE_PIXFORMAT_MASK; + switch (fb->pixel_format) { + case DRM_FORMAT_C8: + dspcntr |= DISPPLANE_8BPP; + break; + case DRM_FORMAT_RGB565: + dspcntr |= DISPPLANE_BGRX565; + break; + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + dspcntr |= DISPPLANE_BGRX888; + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + dspcntr |= DISPPLANE_RGBX888; + break; + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + dspcntr |= DISPPLANE_BGRX101010; + break; + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + dspcntr |= DISPPLANE_RGBX101010; + break; + default: + DRM_ERROR("Unknown pixel format 0x%08x\n", fb->pixel_format); + return -EINVAL; + } + + if (obj->tiling_mode != I915_TILING_NONE) + dspcntr |= DISPPLANE_TILED; + else + dspcntr &= ~DISPPLANE_TILED; + + /* must disable */ + dspcntr |= DISPPLANE_TRICKLE_FEED_DISABLE; + + I915_WRITE(reg, dspcntr); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + intel_crtc->dspaddr_offset = + intel_gen4_compute_offset_xtiled(&x, &y, + fb->bits_per_pixel / 8, + fb->pitches[0]); + linear_offset -= intel_crtc->dspaddr_offset; + + DRM_DEBUG_KMS("Writing base %08X %08lX %d %d %d\n", + obj->gtt_offset, linear_offset, x, y, fb->pitches[0]); + I915_WRITE(DSPSTRIDE(plane), fb->pitches[0]); + I915_MODIFY_DISPBASE(DSPSURF(plane), + obj->gtt_offset + intel_crtc->dspaddr_offset); + if (IS_HASWELL(dev)) { + I915_WRITE(DSPOFFSET(plane), (y << 16) | x); + } else { + I915_WRITE(DSPTILEOFF(plane), (y << 16) | x); + I915_WRITE(DSPLINOFF(plane), linear_offset); + } + POSTING_READ(reg); + + return 0; +} + +/* Assume fb object is pinned & idle & fenced and just update base pointers */ +static int +intel_pipe_set_base_atomic(struct drm_crtc *crtc, struct drm_framebuffer *fb, + int x, int y, enum mode_set_atomic state) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.disable_fbc) + dev_priv->display.disable_fbc(dev); + intel_increase_pllclock(crtc); + + return dev_priv->display.update_plane(crtc, fb, x, y); +} + +static int +intel_finish_fb(struct drm_framebuffer *old_fb) +{ + struct drm_i915_gem_object *obj = to_intel_framebuffer(old_fb)->obj; + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + bool was_interruptible = dev_priv->mm.interruptible; + int ret; + + wait_event(dev_priv->pending_flip_queue, + atomic_read(&dev_priv->mm.wedged) || + atomic_read(&obj->pending_flip) == 0); + + /* Big Hammer, we also need to ensure that any pending + * MI_WAIT_FOR_EVENT inside a user batch buffer on the + * current scanout is retired before unpinning the old + * framebuffer. + * + * This should only fail upon a hung GPU, in which case we + * can safely continue. + */ + dev_priv->mm.interruptible = false; + ret = i915_gem_object_finish_gpu(obj); + dev_priv->mm.interruptible = was_interruptible; + + return ret; +} + +static void intel_crtc_update_sarea_pos(struct drm_crtc *crtc, int x, int y) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_master_private *master_priv; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (!master_priv->sarea_priv) + return; + + switch (intel_crtc->pipe) { + case 0: + master_priv->sarea_priv->pipeA_x = x; + master_priv->sarea_priv->pipeA_y = y; + break; + case 1: + master_priv->sarea_priv->pipeB_x = x; + master_priv->sarea_priv->pipeB_y = y; + break; + default: + break; + } +} + +static int +intel_pipe_set_base(struct drm_crtc *crtc, int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_framebuffer *old_fb; + int ret; + + /* no fb bound */ + if (!fb) { + DRM_ERROR("No FB bound\n"); + return 0; + } + + if(intel_crtc->plane > dev_priv->num_pipe) { + DRM_ERROR("no plane for crtc: plane %d, num_pipes %d\n", + intel_crtc->plane, + dev_priv->num_pipe); + return -EINVAL; + } + + mutex_lock(&dev->struct_mutex); + ret = intel_pin_and_fence_fb_obj(dev, + to_intel_framebuffer(fb)->obj, + NULL); + if (ret != 0) { + mutex_unlock(&dev->struct_mutex); + DRM_ERROR("pin & fence failed\n"); + return ret; + } + + if (crtc->fb) + intel_finish_fb(crtc->fb); + + ret = dev_priv->display.update_plane(crtc, fb, x, y); + if (ret) { + intel_unpin_fb_obj(to_intel_framebuffer(fb)->obj); + mutex_unlock(&dev->struct_mutex); + DRM_ERROR("failed to update base address\n"); + return ret; + } + + old_fb = crtc->fb; + crtc->fb = fb; + crtc->x = x; + crtc->y = y; + + if (old_fb) { + intel_wait_for_vblank(dev, intel_crtc->pipe); + intel_unpin_fb_obj(to_intel_framebuffer(old_fb)->obj); + } + + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_sarea_pos(crtc, x, y); + + return 0; +} + +static void ironlake_set_pll_edp(struct drm_crtc *crtc, int clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + DRM_DEBUG_KMS("eDP PLL enable for clock %d\n", clock); + dpa_ctl = I915_READ(DP_A); + dpa_ctl &= ~DP_PLL_FREQ_MASK; + + if (clock < 200000) { + u32 temp; + dpa_ctl |= DP_PLL_FREQ_160MHZ; + /* workaround for 160Mhz: + 1) program 0x4600c bits 15:0 = 0x8124 + 2) program 0x46010 bit 0 = 1 + 3) program 0x46034 bit 24 = 1 + 4) program 0x64000 bit 14 = 1 + */ + temp = I915_READ(0x4600c); + temp &= 0xffff0000; + I915_WRITE(0x4600c, temp | 0x8124); + + temp = I915_READ(0x46010); + I915_WRITE(0x46010, temp | 1); + + temp = I915_READ(0x46034); + I915_WRITE(0x46034, temp | (1 << 24)); + } else { + dpa_ctl |= DP_PLL_FREQ_270MHZ; + } + I915_WRITE(DP_A, dpa_ctl); + + POSTING_READ(DP_A); + udelay(500); +} + +static void intel_fdi_normal_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* enable normal train */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + if (IS_IVYBRIDGE(dev)) { + temp &= ~FDI_LINK_TRAIN_NONE_IVB; + temp |= FDI_LINK_TRAIN_NONE_IVB | FDI_TX_ENHANCE_FRAME_ENABLE; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_NONE | FDI_TX_ENHANCE_FRAME_ENABLE; + } + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_NORMAL_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_NONE; + } + I915_WRITE(reg, temp | FDI_RX_ENHANCE_FRAME_ENABLE); + + /* wait one idle pattern time */ + POSTING_READ(reg); + udelay(1000); + + /* IVB wants error correction enabled */ + if (IS_IVYBRIDGE(dev)) + I915_WRITE(reg, I915_READ(reg) | FDI_FS_ERRC_ENABLE | + FDI_FE_ERRC_ENABLE); +} + +static void cpt_phase_pointer_enable(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 flags = I915_READ(SOUTH_CHICKEN1); + + flags |= FDI_PHASE_SYNC_OVR(pipe); + I915_WRITE(SOUTH_CHICKEN1, flags); /* once to unlock... */ + flags |= FDI_PHASE_SYNC_EN(pipe); + I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to enable */ + POSTING_READ(SOUTH_CHICKEN1); +} + +static void ivb_modeset_global_resources(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *pipe_B_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_B]); + struct intel_crtc *pipe_C_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_C]); + uint32_t temp; + + /* When everything is off disable fdi C so that we could enable fdi B + * with all lanes. XXX: This misses the case where a pipe is not using + * any pch resources and so doesn't need any fdi lanes. */ + if (!pipe_B_crtc->base.enabled && !pipe_C_crtc->base.enabled) { + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); + + temp = I915_READ(SOUTH_CHICKEN1); + temp &= ~FDI_BC_BIFURCATION_SELECT; + DRM_DEBUG_KMS("disabling fdi C rx\n"); + I915_WRITE(SOUTH_CHICKEN1, temp); + } +} + +/* The FDI link training functions for ILK/Ibexpeak. */ +static void ironlake_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 reg, temp, tries; + + /* FDI needs bits from pipe & plane first */ + assert_pipe_enabled(dev_priv, pipe); + assert_plane_enabled(dev_priv, plane); + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + I915_READ(reg); + udelay(150); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + /* Ironlake workaround, enable clock pointer after FDI enable*/ + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR | + FDI_RX_PHASE_SYNC_POINTER_EN); + + reg = FDI_RX_IIR(pipe); + for (tries = 0; tries < 5; tries++) { + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if ((temp & FDI_RX_BIT_LOCK)) { + DRM_DEBUG_KMS("FDI train 1 done.\n"); + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + break; + } + } + if (tries == 5) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + reg = FDI_RX_IIR(pipe); + for (tries = 0; tries < 5; tries++) { + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done.\n"); + break; + } + } + if (tries == 5) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done\n"); + +} + +static const int snb_b_fdi_train_param[] = { + FDI_LINK_TRAIN_400MV_0DB_SNB_B, + FDI_LINK_TRAIN_400MV_6DB_SNB_B, + FDI_LINK_TRAIN_600MV_3_5DB_SNB_B, + FDI_LINK_TRAIN_800MV_0DB_SNB_B, +}; + +/* The FDI link training functions for SNB/Cougarpoint. */ +static void gen6_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp, i, retry; + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + /* SNB-B */ + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + I915_WRITE(FDI_RX_MISC(pipe), + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + } + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + cpt_phase_pointer_enable(dev, pipe); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + for (retry = 0; retry < 5; retry++) { + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + if (temp & FDI_RX_BIT_LOCK) { + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + DRM_DEBUG_KMS("FDI train 1 done.\n"); + break; + } + udelay(50); + } + if (retry < 5) + break; + } + if (i == 4) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + if (IS_GEN6(dev)) { + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + /* SNB-B */ + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + } + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_2_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_2; + } + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + for (retry = 0; retry < 5; retry++) { + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done.\n"); + break; + } + udelay(50); + } + if (retry < 5) + break; + } + if (i == 4) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done.\n"); +} + +/* Manual link training for Ivy Bridge A0 parts */ +static void ivb_manual_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp, i; + + /* Train 1: umask FDI RX Interrupt symbol_lock and bit_lock bit + for train result */ + reg = FDI_RX_IMR(pipe); + temp = I915_READ(reg); + temp &= ~FDI_RX_SYMBOL_LOCK; + temp &= ~FDI_RX_BIT_LOCK; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + DRM_DEBUG_KMS("FDI_RX_IIR before link train 0x%x\n", + I915_READ(FDI_RX_IIR(pipe))); + + /* enable CPU FDI TX and PCH FDI RX */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(7 << 19); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp &= ~(FDI_LINK_TRAIN_AUTO | FDI_LINK_TRAIN_NONE_IVB); + temp |= FDI_LINK_TRAIN_PATTERN_1_IVB; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + temp |= FDI_COMPOSITE_SYNC; + I915_WRITE(reg, temp | FDI_TX_ENABLE); + + I915_WRITE(FDI_RX_MISC(pipe), + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_AUTO; + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + temp |= FDI_COMPOSITE_SYNC; + I915_WRITE(reg, temp | FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(150); + + cpt_phase_pointer_enable(dev, pipe); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_BIT_LOCK || + (I915_READ(reg) & FDI_RX_BIT_LOCK)) { + I915_WRITE(reg, temp | FDI_RX_BIT_LOCK); + DRM_DEBUG_KMS("FDI train 1 done, level %i.\n", i); + break; + } + } + if (i == 4) + DRM_ERROR("FDI train 1 fail!\n"); + + /* Train 2 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE_IVB; + temp |= FDI_LINK_TRAIN_PATTERN_2_IVB; + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= FDI_LINK_TRAIN_400MV_0DB_SNB_B; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_2_CPT; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(150); + + for (i = 0; i < 4; i++) { + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_VOL_EMP_MASK; + temp |= snb_b_fdi_train_param[i]; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(500); + + reg = FDI_RX_IIR(pipe); + temp = I915_READ(reg); + DRM_DEBUG_KMS("FDI_RX_IIR 0x%x\n", temp); + + if (temp & FDI_RX_SYMBOL_LOCK) { + I915_WRITE(reg, temp | FDI_RX_SYMBOL_LOCK); + DRM_DEBUG_KMS("FDI train 2 done, level %i.\n", i); + break; + } + } + if (i == 4) + DRM_ERROR("FDI train 2 fail!\n"); + + DRM_DEBUG_KMS("FDI train done.\n"); +} + +static void ironlake_fdi_pll_enable(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = intel_crtc->pipe; + u32 reg, temp; + + + /* enable PCH FDI RX PLL, wait warmup plus DMI latency */ + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~((0x7 << 19) | (0x7 << 16)); + temp |= (intel_crtc->fdi_lanes - 1) << 19; + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp | FDI_RX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(200); + + /* Switch from Rawclk to PCDclk */ + temp = I915_READ(reg); + I915_WRITE(reg, temp | FDI_PCDCLK); + + POSTING_READ(reg); + udelay(200); + + /* On Haswell, the PLL configuration for ports and pipes is handled + * separately, as part of DDI setup */ + if (!IS_HASWELL(dev)) { + /* Enable CPU FDI TX PLL, always on for Ironlake */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + if ((temp & FDI_TX_PLL_ENABLE) == 0) { + I915_WRITE(reg, temp | FDI_TX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(100); + } + } +} + +static void ironlake_fdi_pll_disable(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* Switch from PCDclk to Rawclk */ + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_PCDCLK); + + /* Disable CPU FDI TX PLL */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_TX_PLL_ENABLE); + + POSTING_READ(reg); + udelay(100); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_RX_PLL_ENABLE); + + /* Wait for the clocks to turn off. */ + POSTING_READ(reg); + udelay(100); +} + +static void cpt_phase_pointer_disable(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 flags = I915_READ(SOUTH_CHICKEN1); + + flags &= ~(FDI_PHASE_SYNC_EN(pipe)); + I915_WRITE(SOUTH_CHICKEN1, flags); /* once to disable... */ + flags &= ~(FDI_PHASE_SYNC_OVR(pipe)); + I915_WRITE(SOUTH_CHICKEN1, flags); /* then again to lock */ + POSTING_READ(SOUTH_CHICKEN1); +} +static void ironlake_fdi_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + /* disable CPU FDI tx and PCH FDI rx */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + I915_WRITE(reg, temp & ~FDI_TX_ENABLE); + POSTING_READ(reg); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(0x7 << 16); + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp & ~FDI_RX_ENABLE); + + POSTING_READ(reg); + udelay(100); + + /* Ironlake workaround, disable clock pointer after downing FDI */ + if (HAS_PCH_IBX(dev)) { + I915_WRITE(FDI_RX_CHICKEN(pipe), FDI_RX_PHASE_SYNC_POINTER_OVR); + } else if (HAS_PCH_CPT(dev)) { + cpt_phase_pointer_disable(dev, pipe); + } + + /* still set train pattern 1 */ + reg = FDI_TX_CTL(pipe); + temp = I915_READ(reg); + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + I915_WRITE(reg, temp); + + reg = FDI_RX_CTL(pipe); + temp = I915_READ(reg); + if (HAS_PCH_CPT(dev)) { + temp &= ~FDI_LINK_TRAIN_PATTERN_MASK_CPT; + temp |= FDI_LINK_TRAIN_PATTERN_1_CPT; + } else { + temp &= ~FDI_LINK_TRAIN_NONE; + temp |= FDI_LINK_TRAIN_PATTERN_1; + } + /* BPC in FDI rx is consistent with that in PIPECONF */ + temp &= ~(0x07 << 16); + temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11; + I915_WRITE(reg, temp); + + POSTING_READ(reg); + udelay(100); +} + +static bool intel_crtc_has_pending_flip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long flags; + bool pending; + + if (atomic_read(&dev_priv->mm.wedged)) + return false; + + spin_lock_irqsave(&dev->event_lock, flags); + pending = to_intel_crtc(crtc)->unpin_work != NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + return pending; +} + +static void intel_crtc_wait_for_pending_flips(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (crtc->fb == NULL) + return; + + wait_event(dev_priv->pending_flip_queue, + !intel_crtc_has_pending_flip(crtc)); + + mutex_lock(&dev->struct_mutex); + intel_finish_fb(crtc->fb); + mutex_unlock(&dev->struct_mutex); +} + +static bool ironlake_crtc_driving_pch(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + + /* + * If there's a non-PCH eDP on this crtc, it must be DP_A, and that + * must be driven by its own crtc; no sharing is possible. + */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_EDP: + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + return false; + continue; + } + } + + return true; +} + +static bool haswell_crtc_driving_pch(struct drm_crtc *crtc) +{ + return intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG); +} + +/* Program iCLKIP clock to the desired frequency */ +static void lpt_program_iclkip(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 divsel, phaseinc, auxdiv, phasedir = 0; + u32 temp; + + /* It is necessary to ungate the pixclk gate prior to programming + * the divisors, and gate it back when it is done. + */ + I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_GATE); + + /* Disable SSCCTL */ + intel_sbi_write(dev_priv, SBI_SSCCTL6, + intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK) | + SBI_SSCCTL_DISABLE, + SBI_ICLK); + + /* 20MHz is a corner case which is out of range for the 7-bit divisor */ + if (crtc->mode.clock == 20000) { + auxdiv = 1; + divsel = 0x41; + phaseinc = 0x20; + } else { + /* The iCLK virtual clock root frequency is in MHz, + * but the crtc->mode.clock in in KHz. To get the divisors, + * it is necessary to divide one by another, so we + * convert the virtual clock precision to KHz here for higher + * precision. + */ + u32 iclk_virtual_root_freq = 172800 * 1000; + u32 iclk_pi_range = 64; + u32 desired_divisor, msb_divisor_value, pi_value; + + desired_divisor = (iclk_virtual_root_freq / crtc->mode.clock); + msb_divisor_value = desired_divisor / iclk_pi_range; + pi_value = desired_divisor % iclk_pi_range; + + auxdiv = 0; + divsel = msb_divisor_value - 2; + phaseinc = pi_value; + } + + /* This should not happen with any sane values */ + WARN_ON(SBI_SSCDIVINTPHASE_DIVSEL(divsel) & + ~SBI_SSCDIVINTPHASE_DIVSEL_MASK); + WARN_ON(SBI_SSCDIVINTPHASE_DIR(phasedir) & + ~SBI_SSCDIVINTPHASE_INCVAL_MASK); + + DRM_DEBUG_KMS("iCLKIP clock: found settings for %dKHz refresh rate: auxdiv=%x, divsel=%x, phasedir=%x, phaseinc=%x\n", + crtc->mode.clock, + auxdiv, + divsel, + phasedir, + phaseinc); + + /* Program SSCDIVINTPHASE6 */ + temp = intel_sbi_read(dev_priv, SBI_SSCDIVINTPHASE6, SBI_ICLK); + temp &= ~SBI_SSCDIVINTPHASE_DIVSEL_MASK; + temp |= SBI_SSCDIVINTPHASE_DIVSEL(divsel); + temp &= ~SBI_SSCDIVINTPHASE_INCVAL_MASK; + temp |= SBI_SSCDIVINTPHASE_INCVAL(phaseinc); + temp |= SBI_SSCDIVINTPHASE_DIR(phasedir); + temp |= SBI_SSCDIVINTPHASE_PROPAGATE; + intel_sbi_write(dev_priv, SBI_SSCDIVINTPHASE6, temp, SBI_ICLK); + + /* Program SSCAUXDIV */ + temp = intel_sbi_read(dev_priv, SBI_SSCAUXDIV6, SBI_ICLK); + temp &= ~SBI_SSCAUXDIV_FINALDIV2SEL(1); + temp |= SBI_SSCAUXDIV_FINALDIV2SEL(auxdiv); + intel_sbi_write(dev_priv, SBI_SSCAUXDIV6, temp, SBI_ICLK); + + /* Enable modulator and associated divider */ + temp = intel_sbi_read(dev_priv, SBI_SSCCTL6, SBI_ICLK); + temp &= ~SBI_SSCCTL_DISABLE; + intel_sbi_write(dev_priv, SBI_SSCCTL6, temp, SBI_ICLK); + + /* Wait for initialization time */ + udelay(24); + + I915_WRITE(PIXCLK_GATE, PIXCLK_GATE_UNGATE); +} + +/* + * Enable PCH resources required for PCH ports: + * - PCH PLLs + * - FDI training & RX/TX + * - update transcoder timings + * - DP transcoding bits + * - transcoder + */ +static void ironlake_pch_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 reg, temp; + + assert_transcoder_disabled(dev_priv, pipe); + + /* Write the TU size bits before fdi link training, so that error + * detection works. */ + I915_WRITE(FDI_RX_TUSIZE1(pipe), + I915_READ(PIPE_DATA_M1(pipe)) & TU_SIZE_MASK); + + /* For PCH output, training FDI link */ + dev_priv->display.fdi_link_train(crtc); + + /* XXX: pch pll's can be enabled any time before we enable the PCH + * transcoder, and we actually should do this to not upset any PCH + * transcoder that already use the clock when we share it. + * + * Note that enable_pch_pll tries to do the right thing, but get_pch_pll + * unconditionally resets the pll - we need that to have the right LVDS + * enable sequence. */ + ironlake_enable_pch_pll(intel_crtc); + + if (HAS_PCH_CPT(dev)) { + u32 sel; + + temp = I915_READ(PCH_DPLL_SEL); + switch (pipe) { + default: + case 0: + temp |= TRANSA_DPLL_ENABLE; + sel = TRANSA_DPLLB_SEL; + break; + case 1: + temp |= TRANSB_DPLL_ENABLE; + sel = TRANSB_DPLLB_SEL; + break; + case 2: + temp |= TRANSC_DPLL_ENABLE; + sel = TRANSC_DPLLB_SEL; + break; + } + if (intel_crtc->pch_pll->pll_reg == _PCH_DPLL_B) + temp |= sel; + else + temp &= ~sel; + I915_WRITE(PCH_DPLL_SEL, temp); + } + + /* set transcoder timing, panel must allow it */ + assert_panel_unlocked(dev_priv, pipe); + I915_WRITE(TRANS_HTOTAL(pipe), I915_READ(HTOTAL(pipe))); + I915_WRITE(TRANS_HBLANK(pipe), I915_READ(HBLANK(pipe))); + I915_WRITE(TRANS_HSYNC(pipe), I915_READ(HSYNC(pipe))); + + I915_WRITE(TRANS_VTOTAL(pipe), I915_READ(VTOTAL(pipe))); + I915_WRITE(TRANS_VBLANK(pipe), I915_READ(VBLANK(pipe))); + I915_WRITE(TRANS_VSYNC(pipe), I915_READ(VSYNC(pipe))); + I915_WRITE(TRANS_VSYNCSHIFT(pipe), I915_READ(VSYNCSHIFT(pipe))); + + intel_fdi_normal_train(crtc); + + /* For PCH DP, enable TRANS_DP_CTL */ + if (HAS_PCH_CPT(dev) && + (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))) { + u32 bpc = (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) >> 5; + reg = TRANS_DP_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(TRANS_DP_PORT_SEL_MASK | + TRANS_DP_SYNC_MASK | + TRANS_DP_BPC_MASK); + temp |= (TRANS_DP_OUTPUT_ENABLE | + TRANS_DP_ENH_FRAMING); + temp |= bpc << 9; /* same format but at 11:9 */ + + if (crtc->mode.flags & DRM_MODE_FLAG_PHSYNC) + temp |= TRANS_DP_HSYNC_ACTIVE_HIGH; + if (crtc->mode.flags & DRM_MODE_FLAG_PVSYNC) + temp |= TRANS_DP_VSYNC_ACTIVE_HIGH; + + switch (intel_trans_dp_port_sel(crtc)) { + case PCH_DP_B: + temp |= TRANS_DP_PORT_SEL_B; + break; + case PCH_DP_C: + temp |= TRANS_DP_PORT_SEL_C; + break; + case PCH_DP_D: + temp |= TRANS_DP_PORT_SEL_D; + break; + default: + BUG(); + } + + I915_WRITE(reg, temp); + } + + ironlake_enable_pch_transcoder(dev_priv, pipe); +} + +static void lpt_pch_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + assert_transcoder_disabled(dev_priv, TRANSCODER_A); + + lpt_program_iclkip(crtc); + + /* Set transcoder timing. */ + I915_WRITE(_TRANS_HTOTAL_A, I915_READ(HTOTAL(cpu_transcoder))); + I915_WRITE(_TRANS_HBLANK_A, I915_READ(HBLANK(cpu_transcoder))); + I915_WRITE(_TRANS_HSYNC_A, I915_READ(HSYNC(cpu_transcoder))); + + I915_WRITE(_TRANS_VTOTAL_A, I915_READ(VTOTAL(cpu_transcoder))); + I915_WRITE(_TRANS_VBLANK_A, I915_READ(VBLANK(cpu_transcoder))); + I915_WRITE(_TRANS_VSYNC_A, I915_READ(VSYNC(cpu_transcoder))); + I915_WRITE(_TRANS_VSYNCSHIFT_A, I915_READ(VSYNCSHIFT(cpu_transcoder))); + + lpt_enable_pch_transcoder(dev_priv, cpu_transcoder); +} + +static void intel_put_pch_pll(struct intel_crtc *intel_crtc) +{ + struct intel_pch_pll *pll = intel_crtc->pch_pll; + + if (pll == NULL) + return; + + if (pll->refcount == 0) { + WARN(1, "bad PCH PLL refcount\n"); + return; + } + + --pll->refcount; + intel_crtc->pch_pll = NULL; +} + +static struct intel_pch_pll *intel_get_pch_pll(struct intel_crtc *intel_crtc, u32 dpll, u32 fp) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + struct intel_pch_pll *pll; + int i; + + pll = intel_crtc->pch_pll; + if (pll) { + DRM_DEBUG_KMS("CRTC:%d reusing existing PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + goto prepare; + } + + if (HAS_PCH_IBX(dev_priv->dev)) { + /* Ironlake PCH has a fixed PLL->PCH pipe mapping. */ + i = intel_crtc->pipe; + pll = &dev_priv->pch_plls[i]; + + DRM_DEBUG_KMS("CRTC:%d using pre-allocated PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + + goto found; + } + + for (i = 0; i < dev_priv->num_pch_pll; i++) { + pll = &dev_priv->pch_plls[i]; + + /* Only want to check enabled timings first */ + if (pll->refcount == 0) + continue; + + if (dpll == (I915_READ(pll->pll_reg) & 0x7fffffff) && + fp == I915_READ(pll->fp0_reg)) { + DRM_DEBUG_KMS("CRTC:%d sharing existing PCH PLL %x (refcount %d, ative %d)\n", + intel_crtc->base.base.id, + pll->pll_reg, pll->refcount, pll->active); + + goto found; + } + } + + /* Ok no matching timings, maybe there's a free one? */ + for (i = 0; i < dev_priv->num_pch_pll; i++) { + pll = &dev_priv->pch_plls[i]; + if (pll->refcount == 0) { + DRM_DEBUG_KMS("CRTC:%d allocated PCH PLL %x\n", + intel_crtc->base.base.id, pll->pll_reg); + goto found; + } + } + + return NULL; + +found: + intel_crtc->pch_pll = pll; + pll->refcount++; + DRM_DEBUG_DRIVER("using pll %d for pipe %d\n", i, intel_crtc->pipe); +prepare: /* separate function? */ + DRM_DEBUG_DRIVER("switching PLL %x off\n", pll->pll_reg); + + /* Wait for the clocks to stabilize before rewriting the regs */ + I915_WRITE(pll->pll_reg, dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(pll->pll_reg); + udelay(150); + + I915_WRITE(pll->fp0_reg, fp); + I915_WRITE(pll->pll_reg, dpll & ~DPLL_VCO_ENABLE); + pll->on = false; + return pll; +} + +void intel_cpt_verify_modeset(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int dslreg = PIPEDSL(pipe); + u32 temp; + + temp = I915_READ(dslreg); + udelay(500); + if (wait_for(I915_READ(dslreg) != temp, 5)) { + if (wait_for(I915_READ(dslreg) != temp, 5)) + DRM_ERROR("mode set failed: pipe %d stuck\n", pipe); + } +} + +static void ironlake_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 temp; + bool is_pch_port; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + temp = I915_READ(PCH_LVDS); + if ((temp & LVDS_PORT_EN) == 0) + I915_WRITE(PCH_LVDS, temp | LVDS_PORT_EN); + } + + is_pch_port = ironlake_crtc_driving_pch(crtc); + + if (is_pch_port) { + /* Note: FDI PLL enabling _must_ be done before we enable the + * cpu pipes, hence this is separate from all the other fdi/pch + * enabling. */ + ironlake_fdi_pll_enable(intel_crtc); + } else { + assert_fdi_tx_disabled(dev_priv, pipe); + assert_fdi_rx_disabled(dev_priv, pipe); + } + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->pre_enable) + encoder->pre_enable(encoder); + + /* Enable panel fitting for LVDS */ + if (dev_priv->pch_pf_size && + (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))) { + /* Force use of hard-coded filter coefficients + * as some pre-programmed values are broken, + * e.g. x201. + */ + if (IS_IVYBRIDGE(dev)) + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + else + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3); + I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); + I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); + } + + /* + * On ILK+ LUT must be loaded before the pipe is running but with + * clocks enabled + */ + intel_crtc_load_lut(crtc); + + intel_enable_pipe(dev_priv, pipe, is_pch_port); + intel_enable_plane(dev_priv, plane, pipe); + + if (is_pch_port) + ironlake_pch_enable(crtc); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); + + if (HAS_PCH_CPT(dev)) + intel_cpt_verify_modeset(dev, intel_crtc->pipe); + + /* + * There seems to be a race in PCH platform hw (at least on some + * outputs) where an enabled pipe still completes any pageflip right + * away (as if the pipe is off) instead of waiting for vblank. As soon + * as the first vblank happend, everything works as expected. Hence just + * wait for one vblank before returning to avoid strange things + * happening. + */ + intel_wait_for_vblank(dev, intel_crtc->pipe); +} + +static void haswell_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + bool is_pch_port; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + is_pch_port = haswell_crtc_driving_pch(crtc); + + if (is_pch_port) + dev_priv->display.fdi_link_train(crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->pre_enable) + encoder->pre_enable(encoder); + + intel_ddi_enable_pipe_clock(intel_crtc); + + /* Enable panel fitting for eDP */ + if (dev_priv->pch_pf_size && + intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + /* Force use of hard-coded filter coefficients + * as some pre-programmed values are broken, + * e.g. x201. + */ + I915_WRITE(PF_CTL(pipe), PF_ENABLE | PF_FILTER_MED_3x3 | + PF_PIPE_SEL_IVB(pipe)); + I915_WRITE(PF_WIN_POS(pipe), dev_priv->pch_pf_pos); + I915_WRITE(PF_WIN_SZ(pipe), dev_priv->pch_pf_size); + } + + /* + * On ILK+ LUT must be loaded before the pipe is running but with + * clocks enabled + */ + intel_crtc_load_lut(crtc); + + intel_ddi_set_pipe_settings(crtc); + intel_ddi_enable_pipe_func(crtc); + + intel_enable_pipe(dev_priv, pipe, is_pch_port); + intel_enable_plane(dev_priv, plane, pipe); + + if (is_pch_port) + lpt_pch_enable(crtc); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); + + /* + * There seems to be a race in PCH platform hw (at least on some + * outputs) where an enabled pipe still completes any pageflip right + * away (as if the pipe is off) instead of waiting for vblank. As soon + * as the first vblank happend, everything works as expected. Hence just + * wait for one vblank before returning to avoid strange things + * happening. + */ + intel_wait_for_vblank(dev, intel_crtc->pipe); +} + +static void ironlake_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + u32 reg, temp; + + + if (!intel_crtc->active) + return; + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_update_cursor(crtc, false); + + intel_disable_plane(dev_priv, plane, pipe); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_pipe(dev_priv, pipe); + + /* Disable PF */ + I915_WRITE(PF_CTL(pipe), 0); + I915_WRITE(PF_WIN_SZ(pipe), 0); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->post_disable) + encoder->post_disable(encoder); + + ironlake_fdi_disable(crtc); + + ironlake_disable_pch_transcoder(dev_priv, pipe); + + if (HAS_PCH_CPT(dev)) { + /* disable TRANS_DP_CTL */ + reg = TRANS_DP_CTL(pipe); + temp = I915_READ(reg); + temp &= ~(TRANS_DP_OUTPUT_ENABLE | TRANS_DP_PORT_SEL_MASK); + temp |= TRANS_DP_PORT_SEL_NONE; + I915_WRITE(reg, temp); + + /* disable DPLL_SEL */ + temp = I915_READ(PCH_DPLL_SEL); + switch (pipe) { + case 0: + temp &= ~(TRANSA_DPLL_ENABLE | TRANSA_DPLLB_SEL); + break; + case 1: + temp &= ~(TRANSB_DPLL_ENABLE | TRANSB_DPLLB_SEL); + break; + case 2: + /* C shares PLL A or B */ + temp &= ~(TRANSC_DPLL_ENABLE | TRANSC_DPLLB_SEL); + break; + default: + BUG(); /* wtf */ + } + I915_WRITE(PCH_DPLL_SEL, temp); + } + + /* disable PCH DPLL */ + intel_disable_pch_pll(intel_crtc); + + ironlake_fdi_pll_disable(intel_crtc); + + intel_crtc->active = false; + intel_update_watermarks(dev); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); +} + +static void haswell_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + bool is_pch_port; + + if (!intel_crtc->active) + return; + + is_pch_port = haswell_crtc_driving_pch(crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_update_cursor(crtc, false); + + intel_disable_plane(dev_priv, plane, pipe); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_pipe(dev_priv, pipe); + + intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder); + + /* Disable PF */ + I915_WRITE(PF_CTL(pipe), 0); + I915_WRITE(PF_WIN_SZ(pipe), 0); + + intel_ddi_disable_pipe_clock(intel_crtc); + + for_each_encoder_on_crtc(dev, crtc, encoder) + if (encoder->post_disable) + encoder->post_disable(encoder); + + if (is_pch_port) { + lpt_disable_pch_transcoder(dev_priv); + intel_ddi_fdi_disable(crtc); + } + + intel_crtc->active = false; + intel_update_watermarks(dev); + + mutex_lock(&dev->struct_mutex); + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); +} + +static void ironlake_crtc_off(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + intel_put_pch_pll(intel_crtc); +} + +static void haswell_crtc_off(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + /* Stop saying we're using TRANSCODER_EDP because some other CRTC might + * start using it. */ + intel_crtc->cpu_transcoder = intel_crtc->pipe; + + intel_ddi_put_crtc_pll(crtc); +} + +static void intel_crtc_dpms_overlay(struct intel_crtc *intel_crtc, bool enable) +{ + if (!enable && intel_crtc->overlay) { + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.interruptible = false; + (void) intel_overlay_switch_off(intel_crtc->overlay); + dev_priv->mm.interruptible = true; + mutex_unlock(&dev->struct_mutex); + } + + /* Let userspace switch the overlay on again. In most cases userspace + * has to recompute where to put it anyway. + */ +} + +static void i9xx_crtc_enable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + + WARN_ON(!crtc->enabled); + + if (intel_crtc->active) + return; + + intel_crtc->active = true; + intel_update_watermarks(dev); + + intel_enable_pll(dev_priv, pipe); + intel_enable_pipe(dev_priv, pipe, false); + intel_enable_plane(dev_priv, plane, pipe); + + intel_crtc_load_lut(crtc); + intel_update_fbc(dev); + + /* Give the overlay scaler a chance to enable if it's on this pipe */ + intel_crtc_dpms_overlay(intel_crtc, true); + intel_crtc_update_cursor(crtc, true); + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->enable(encoder); +} + +static void i9xx_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *encoder; + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + + + if (!intel_crtc->active) + return; + + for_each_encoder_on_crtc(dev, crtc, encoder) + encoder->disable(encoder); + + /* Give the overlay scaler a chance to disable if it's on this pipe */ + intel_crtc_wait_for_pending_flips(crtc); + drm_vblank_off(dev, pipe); + intel_crtc_dpms_overlay(intel_crtc, false); + intel_crtc_update_cursor(crtc, false); + + if (dev_priv->cfb_plane == plane) + intel_disable_fbc(dev); + + intel_disable_plane(dev_priv, plane, pipe); + intel_disable_pipe(dev_priv, pipe); + intel_disable_pll(dev_priv, pipe); + + intel_crtc->active = false; + intel_update_fbc(dev); + intel_update_watermarks(dev); +} + +static void i9xx_crtc_off(struct drm_crtc *crtc) +{ +} + +static void intel_crtc_update_sarea(struct drm_crtc *crtc, + bool enabled) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_master_private *master_priv; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (!master_priv->sarea_priv) + return; + + switch (pipe) { + case 0: + master_priv->sarea_priv->pipeA_w = enabled ? crtc->mode.hdisplay : 0; + master_priv->sarea_priv->pipeA_h = enabled ? crtc->mode.vdisplay : 0; + break; + case 1: + master_priv->sarea_priv->pipeB_w = enabled ? crtc->mode.hdisplay : 0; + master_priv->sarea_priv->pipeB_h = enabled ? crtc->mode.vdisplay : 0; + break; + default: + DRM_ERROR("Can't update pipe %c in SAREA\n", pipe_name(pipe)); + break; + } +} + +/** + * Sets the power management mode of the pipe and plane. + */ +void intel_crtc_update_dpms(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + bool enable = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) + enable |= intel_encoder->connectors_active; + + if (enable) + dev_priv->display.crtc_enable(crtc); + else + dev_priv->display.crtc_disable(crtc); + + intel_crtc_update_sarea(crtc, enable); +} + +static void intel_crtc_noop(struct drm_crtc *crtc) +{ +} + +static void intel_crtc_disable(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_connector *connector; + struct drm_i915_private *dev_priv = dev->dev_private; + + /* crtc should still be enabled when we disable it. */ + WARN_ON(!crtc->enabled); + + dev_priv->display.crtc_disable(crtc); + intel_crtc_update_sarea(crtc, false); + dev_priv->display.off(crtc); + + assert_plane_disabled(dev->dev_private, to_intel_crtc(crtc)->plane); + assert_pipe_disabled(dev->dev_private, to_intel_crtc(crtc)->pipe); + + if (crtc->fb) { + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(to_intel_framebuffer(crtc->fb)->obj); + mutex_unlock(&dev->struct_mutex); + crtc->fb = NULL; + } + + /* Update computed state. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + if (!connector->encoder || !connector->encoder->crtc) + continue; + + if (connector->encoder->crtc != crtc) + continue; + + connector->dpms = DRM_MODE_DPMS_OFF; + to_intel_encoder(connector->encoder)->connectors_active = false; + } +} + +void intel_modeset_disable(struct drm_device *dev) +{ + struct drm_crtc *crtc; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (crtc->enabled) + intel_crtc_disable(crtc); + } +} + +void intel_encoder_noop(struct drm_encoder *encoder) +{ +} + +void intel_encoder_destroy(struct drm_encoder *encoder) +{ + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + + drm_encoder_cleanup(encoder); + kfree(intel_encoder); +} + +/* Simple dpms helper for encodres with just one connector, no cloning and only + * one kind of off state. It clamps all !ON modes to fully OFF and changes the + * state of the entire output pipe. */ +void intel_encoder_dpms(struct intel_encoder *encoder, int mode) +{ + if (mode == DRM_MODE_DPMS_ON) { + encoder->connectors_active = true; + + intel_crtc_update_dpms(encoder->base.crtc); + } else { + encoder->connectors_active = false; + + intel_crtc_update_dpms(encoder->base.crtc); + } +} + +/* Cross check the actual hw state with our own modeset state tracking (and it's + * internal consistency). */ +static void intel_connector_check_state(struct intel_connector *connector) +{ + if (connector->get_hw_state(connector)) { + struct intel_encoder *encoder = connector->encoder; + struct drm_crtc *crtc; + bool encoder_enabled; + enum pipe pipe; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base)); + + WARN(connector->base.dpms == DRM_MODE_DPMS_OFF, + "wrong connector dpms state\n"); + WARN(connector->base.encoder != &encoder->base, + "active connector not linked to encoder\n"); + WARN(!encoder->connectors_active, + "encoder->connectors_active not set\n"); + + encoder_enabled = encoder->get_hw_state(encoder, &pipe); + WARN(!encoder_enabled, "encoder not enabled\n"); + if (WARN_ON(!encoder->base.crtc)) + return; + + crtc = encoder->base.crtc; + + WARN(!crtc->enabled, "crtc not enabled\n"); + WARN(!to_intel_crtc(crtc)->active, "crtc not active\n"); + WARN(pipe != to_intel_crtc(crtc)->pipe, + "encoder active on the wrong pipe\n"); + } +} + +/* Even simpler default implementation, if there's really no special case to + * consider. */ +void intel_connector_dpms(struct drm_connector *connector, int mode) +{ + struct intel_encoder *encoder = intel_attached_encoder(connector); + + /* All the simple cases only support two dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + if (encoder->base.crtc) + intel_encoder_dpms(encoder, mode); + else + WARN_ON(encoder->connectors_active != false); + + intel_modeset_check_state(connector->dev); +} + +/* Simple connector->get_hw_state implementation for encoders that support only + * one connector and no cloning and hence the encoder state determines the state + * of the connector. */ +bool intel_connector_get_hw_state(struct intel_connector *connector) +{ + enum pipe pipe = 0; + struct intel_encoder *encoder = connector->encoder; + + return encoder->get_hw_state(encoder, &pipe); +} + +static bool intel_crtc_mode_fixup(struct drm_crtc *crtc, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + + if (HAS_PCH_SPLIT(dev)) { + /* FDI link clock is fixed at 2.7G */ + if (mode->clock * 3 > IRONLAKE_FDI_FREQ * 4) + return false; + } + + /* All interlaced capable intel hw wants timings in frames. Note though + * that intel_lvds_mode_fixup does some funny tricks with the crtc + * timings, so we need to be careful not to clobber these.*/ + if (!(adjusted_mode->private_flags & INTEL_MODE_CRTC_TIMINGS_SET)) + drm_mode_set_crtcinfo(adjusted_mode, 0); + + /* WaPruneModeWithIncorrectHsyncOffset: Cantiga+ cannot handle modes + * with a hsync front porch of 0. + */ + if ((INTEL_INFO(dev)->gen > 4 || IS_G4X(dev)) && + adjusted_mode->hsync_start == adjusted_mode->hdisplay) + return false; + + return true; +} + +static int valleyview_get_display_clock_speed(struct drm_device *dev) +{ + return 400000; /* FIXME */ +} + +static int i945_get_display_clock_speed(struct drm_device *dev) +{ + return 400000; +} + +static int i915_get_display_clock_speed(struct drm_device *dev) +{ + return 333000; +} + +static int i9xx_misc_get_display_clock_speed(struct drm_device *dev) +{ + return 200000; +} + +static int i915gm_get_display_clock_speed(struct drm_device *dev) +{ + u16 gcfgc = 0; + + pci_read_config_word(dev->pdev, GCFGC, &gcfgc); + + if (gcfgc & GC_LOW_FREQUENCY_ENABLE) + return 133000; + else { + switch (gcfgc & GC_DISPLAY_CLOCK_MASK) { + case GC_DISPLAY_CLOCK_333_MHZ: + return 333000; + default: + case GC_DISPLAY_CLOCK_190_200_MHZ: + return 190000; + } + } +} + +static int i865_get_display_clock_speed(struct drm_device *dev) +{ + return 266000; +} + +static int i855_get_display_clock_speed(struct drm_device *dev) +{ + u16 hpllcc = 0; + /* Assume that the hardware is in the high speed state. This + * should be the default. + */ + switch (hpllcc & GC_CLOCK_CONTROL_MASK) { + case GC_CLOCK_133_200: + case GC_CLOCK_100_200: + return 200000; + case GC_CLOCK_166_250: + return 250000; + case GC_CLOCK_100_133: + return 133000; + } + + /* Shouldn't happen */ + return 0; +} + +static int i830_get_display_clock_speed(struct drm_device *dev) +{ + return 133000; +} + +struct fdi_m_n { + u32 tu; + u32 gmch_m; + u32 gmch_n; + u32 link_m; + u32 link_n; +}; + +static void +fdi_reduce_ratio(u32 *num, u32 *den) +{ + while (*num > 0xffffff || *den > 0xffffff) { + *num >>= 1; + *den >>= 1; + } +} + +static void +ironlake_compute_m_n(int bits_per_pixel, int nlanes, int pixel_clock, + int link_clock, struct fdi_m_n *m_n) +{ + m_n->tu = 64; /* default size */ + + /* BUG_ON(pixel_clock > INT_MAX / 36); */ + m_n->gmch_m = bits_per_pixel * pixel_clock; + m_n->gmch_n = link_clock * nlanes * 8; + fdi_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n); + + m_n->link_m = pixel_clock; + m_n->link_n = link_clock; + fdi_reduce_ratio(&m_n->link_m, &m_n->link_n); +} + +static inline bool intel_panel_use_ssc(struct drm_i915_private *dev_priv) +{ + if (i915_panel_use_ssc >= 0) + return i915_panel_use_ssc != 0; + return dev_priv->lvds_use_ssc + && !(dev_priv->quirks & QUIRK_LVDS_SSC_DISABLE); +} + +/** + * intel_choose_pipe_bpp_dither - figure out what color depth the pipe should send + * @crtc: CRTC structure + * @mode: requested mode + * + * A pipe may be connected to one or more outputs. Based on the depth of the + * attached framebuffer, choose a good color depth to use on the pipe. + * + * If possible, match the pipe depth to the fb depth. In some cases, this + * isn't ideal, because the connected output supports a lesser or restricted + * set of depths. Resolve that here: + * LVDS typically supports only 6bpc, so clamp down in that case + * HDMI supports only 8bpc or 12bpc, so clamp to 8bpc with dither for 10bpc + * Displays may support a restricted set as well, check EDID and clamp as + * appropriate. + * DP may want to dither down to 6bpc to fit larger modes + * + * RETURNS: + * Dithering requirement (i.e. false if display bpc and pipe bpc match, + * true if they don't match). + */ +static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc, + struct drm_framebuffer *fb, + unsigned int *pipe_bpp, + struct drm_display_mode *mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_connector *connector; + struct intel_encoder *intel_encoder; + unsigned int display_bpc = UINT_MAX, bpc; + + /* Walk the encoders & connectors on this crtc, get min bpc */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + + if (intel_encoder->type == INTEL_OUTPUT_LVDS) { + unsigned int lvds_bpc; + + if ((I915_READ(PCH_LVDS) & LVDS_A3_POWER_MASK) == + LVDS_A3_POWER_UP) + lvds_bpc = 8; + else + lvds_bpc = 6; + + if (lvds_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to LVDS (%d)\n", display_bpc, lvds_bpc); + display_bpc = lvds_bpc; + } + continue; + } + + /* Not one of the known troublemakers, check the EDID */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + head) { + if (connector->encoder != &intel_encoder->base) + continue; + + /* Don't use an invalid EDID bpc value */ + if (connector->display_info.bpc && + connector->display_info.bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to EDID reported max of %d\n", display_bpc, connector->display_info.bpc); + display_bpc = connector->display_info.bpc; + } + } + + if (intel_encoder->type == INTEL_OUTPUT_EDP) { + /* Use VBT settings if we have an eDP panel */ + unsigned int edp_bpc = dev_priv->edp.bpp / 3; + + if (edp_bpc && edp_bpc < display_bpc) { + DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc); + display_bpc = edp_bpc; + } + continue; + } + + /* + * HDMI is either 12 or 8, so if the display lets 10bpc sneak + * through, clamp it down. (Note: >12bpc will be caught below.) + */ + if (intel_encoder->type == INTEL_OUTPUT_HDMI) { + if (display_bpc > 8 && display_bpc < 12) { + DRM_DEBUG_KMS("forcing bpc to 12 for HDMI\n"); + display_bpc = 12; + } else { + DRM_DEBUG_KMS("forcing bpc to 8 for HDMI\n"); + display_bpc = 8; + } + } + } + + if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + DRM_DEBUG_KMS("Dithering DP to 6bpc\n"); + display_bpc = 6; + } + + /* + * We could just drive the pipe at the highest bpc all the time and + * enable dithering as needed, but that costs bandwidth. So choose + * the minimum value that expresses the full color range of the fb but + * also stays within the max display bpc discovered above. + */ + + switch (fb->depth) { + case 8: + bpc = 8; /* since we go through a colormap */ + break; + case 15: + case 16: + bpc = 6; /* min is 18bpp */ + break; + case 24: + bpc = 8; + break; + case 30: + bpc = 10; + break; + case 48: + bpc = 12; + break; + default: + DRM_DEBUG("unsupported depth, assuming 24 bits\n"); + bpc = min((unsigned int)8, display_bpc); + break; + } + + display_bpc = min(display_bpc, bpc); + + DRM_DEBUG_KMS("setting pipe bpc to %d (max display bpc %d)\n", + bpc, display_bpc); + + *pipe_bpp = display_bpc * 3; + + return display_bpc != bpc; +} + +static int vlv_get_refclk(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int refclk = 27000; /* for DP & HDMI */ + + return 100000; /* only one validated so far */ + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_ANALOG)) { + refclk = 96000; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + if (intel_panel_use_ssc(dev_priv)) + refclk = 100000; + else + refclk = 96000; + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + refclk = 100000; + } + + return refclk; +} + +static int i9xx_get_refclk(struct drm_crtc *crtc, int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int refclk; + + if (IS_VALLEYVIEW(dev)) { + refclk = vlv_get_refclk(crtc); + } else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) { + refclk = dev_priv->lvds_ssc_freq * 1000; + DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", + refclk / 1000); + } else if (!IS_GEN2(dev)) { + refclk = 96000; + } else { + refclk = 48000; + } + + return refclk; +} + +static void i9xx_adjust_sdvo_tv_clock(struct drm_display_mode *adjusted_mode, + intel_clock_t *clock) +{ + /* SDVO TV has fixed PLL values depend on its clock range, + this mirrors vbios setting. */ + if (adjusted_mode->clock >= 100000 + && adjusted_mode->clock < 140500) { + clock->p1 = 2; + clock->p2 = 10; + clock->n = 3; + clock->m1 = 16; + clock->m2 = 8; + } else if (adjusted_mode->clock >= 140500 + && adjusted_mode->clock <= 200000) { + clock->p1 = 1; + clock->p2 = 10; + clock->n = 6; + clock->m1 = 12; + clock->m2 = 8; + } +} + +static void i9xx_update_pll_dividers(struct drm_crtc *crtc, + intel_clock_t *clock, + intel_clock_t *reduced_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 fp, fp2 = 0; + + if (IS_PINEVIEW(dev)) { + fp = (1 << clock->n) << 16 | clock->m1 << 8 | clock->m2; + if (reduced_clock) + fp2 = (1 << reduced_clock->n) << 16 | + reduced_clock->m1 << 8 | reduced_clock->m2; + } else { + fp = clock->n << 16 | clock->m1 << 8 | clock->m2; + if (reduced_clock) + fp2 = reduced_clock->n << 16 | reduced_clock->m1 << 8 | + reduced_clock->m2; + } + + I915_WRITE(FP0(pipe), fp); + + intel_crtc->lowfreq_avail = false; + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + reduced_clock && i915_powersave) { + I915_WRITE(FP1(pipe), fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(FP1(pipe), fp); + } +} + +static void intel_update_lvds(struct drm_crtc *crtc, intel_clock_t *clock, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 temp; + + temp = I915_READ(LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (pipe == 1) { + temp |= LVDS_PIPEB_SELECT; + } else { + temp &= ~LVDS_PIPEB_SELECT; + } + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether we're going to + * set the DPLLs for dual-channel mode or not. + */ + if (clock->p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) + * appropriately here, but we need to look more thoroughly into how + * panels behave in the two modes. + */ + /* set the dithering flag on LVDS as needed */ + if (INTEL_INFO(dev)->gen >= 4) { + if (dev_priv->lvds_dither) + temp |= LVDS_ENABLE_DITHER; + else + temp &= ~LVDS_ENABLE_DITHER; + } + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(LVDS, temp); +} + +static void vlv_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll, mdiv, pdiv; + u32 bestn, bestm1, bestm2, bestp1, bestp2; + bool is_sdvo; + u32 temp; + + is_sdvo = intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI); + + dpll = DPLL_VGA_MODE_DIS; + dpll |= DPLL_EXT_BUFFER_ENABLE_VLV; + dpll |= DPLL_REFA_CLK_ENABLE_VLV; + dpll |= DPLL_INTEGRATED_CLOCK_VLV; + + I915_WRITE(DPLL(pipe), dpll); + POSTING_READ(DPLL(pipe)); + + bestn = clock->n; + bestm1 = clock->m1; + bestm2 = clock->m2; + bestp1 = clock->p1; + bestp2 = clock->p2; + + /* + * In Valleyview PLL and program lane counter registers are exposed + * through DPIO interface + */ + mdiv = ((bestm1 << DPIO_M1DIV_SHIFT) | (bestm2 & DPIO_M2DIV_MASK)); + mdiv |= ((bestp1 << DPIO_P1_SHIFT) | (bestp2 << DPIO_P2_SHIFT)); + mdiv |= ((bestn << DPIO_N_SHIFT)); + mdiv |= (1 << DPIO_POST_DIV_SHIFT); + mdiv |= (1 << DPIO_K_SHIFT); + mdiv |= DPIO_ENABLE_CALIBRATION; + intel_dpio_write(dev_priv, DPIO_DIV(pipe), mdiv); + + intel_dpio_write(dev_priv, DPIO_CORE_CLK(pipe), 0x01000000); + + pdiv = (1 << DPIO_REFSEL_OVERRIDE) | (5 << DPIO_PLL_MODESEL_SHIFT) | + (3 << DPIO_BIAS_CURRENT_CTL_SHIFT) | (1<<20) | + (7 << DPIO_PLL_REFCLK_SEL_SHIFT) | (8 << DPIO_DRIVER_CTL_SHIFT) | + (5 << DPIO_CLK_BIAS_CTL_SHIFT); + intel_dpio_write(dev_priv, DPIO_REFSFR(pipe), pdiv); + + intel_dpio_write(dev_priv, DPIO_LFP_COEFF(pipe), 0x005f003b); + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll); + POSTING_READ(DPLL(pipe)); + if (wait_for(((I915_READ(DPLL(pipe)) & DPLL_LOCK_VLV) == DPLL_LOCK_VLV), 1)) + DRM_ERROR("DPLL %d failed to lock\n", pipe); + + intel_dpio_write(dev_priv, DPIO_FASTCLK_DISABLE, 0x620); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + intel_dp_set_m_n(crtc, mode, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + temp = 0; + if (is_sdvo) { + temp = intel_mode_get_pixel_multiplier(adjusted_mode); + if (temp > 1) + temp = (temp - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT; + else + temp = 0; + } + I915_WRITE(DPLL_MD(pipe), temp); + POSTING_READ(DPLL_MD(pipe)); + + /* Now program lane control registers */ + if(intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) + || intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI)) + { + temp = 0x1000C4; + if(pipe == 1) + temp |= (1 << 21); + intel_dpio_write(dev_priv, DPIO_DATA_CHANNEL1, temp); + } + if(intel_pipe_has_type(crtc,INTEL_OUTPUT_EDP)) + { + temp = 0x1000C4; + if(pipe == 1) + temp |= (1 << 21); + intel_dpio_write(dev_priv, DPIO_DATA_CHANNEL2, temp); + } +} + +static void i9xx_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll; + bool is_sdvo; + + i9xx_update_pll_dividers(crtc, clock, reduced_clock); + + is_sdvo = intel_pipe_has_type(crtc, INTEL_OUTPUT_SDVO) || + intel_pipe_has_type(crtc, INTEL_OUTPUT_HDMI); + + dpll = DPLL_VGA_MODE_DIS; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + dpll |= DPLLB_MODE_LVDS; + else + dpll |= DPLLB_MODE_DAC_SERIAL; + if (is_sdvo) { + int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + if (pixel_multiplier > 1) { + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + dpll |= (pixel_multiplier - 1) << SDVO_MULTIPLIER_SHIFT_HIRES; + } + dpll |= DPLL_DVO_HIGH_SPEED; + } + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + dpll |= DPLL_DVO_HIGH_SPEED; + + /* compute bitmask from p1 value */ + if (IS_PINEVIEW(dev)) + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW; + else { + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + if (IS_G4X(dev) && reduced_clock) + dpll |= (1 << (reduced_clock->p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT; + } + switch (clock->p2) { + case 5: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_5; + break; + case 7: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_7; + break; + case 10: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_10; + break; + case 14: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14; + break; + } + if (INTEL_INFO(dev)->gen >= 4) + dpll |= (6 << PLL_LOAD_PULSE_PHASE_SHIFT); + + if (is_sdvo && intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + dpll |= PLL_REF_INPUT_TVCLKINBC; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + intel_update_lvds(crtc, clock, adjusted_mode); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) + intel_dp_set_m_n(crtc, mode, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + if (INTEL_INFO(dev)->gen >= 4) { + u32 temp = 0; + if (is_sdvo) { + temp = intel_mode_get_pixel_multiplier(adjusted_mode); + if (temp > 1) + temp = (temp - 1) << DPLL_MD_UDI_MULTIPLIER_SHIFT; + else + temp = 0; + } + I915_WRITE(DPLL_MD(pipe), temp); + } else { + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(DPLL(pipe), dpll); + } +} + +static void i8xx_update_pll(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, intel_clock_t *reduced_clock, + int num_connectors) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll; + + i9xx_update_pll_dividers(crtc, clock, reduced_clock); + + dpll = DPLL_VGA_MODE_DIS; + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) { + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + } else { + if (clock->p1 == 2) + dpll |= PLL_P1_DIVIDE_BY_TWO; + else + dpll |= (clock->p1 - 2) << DPLL_FPA01_P1_POST_DIV_SHIFT; + if (clock->p2 == 4) + dpll |= PLL_P2_DIVIDE_BY_4; + } + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_TVOUT)) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) && + intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + dpll |= DPLL_VCO_ENABLE; + I915_WRITE(DPLL(pipe), dpll & ~DPLL_VCO_ENABLE); + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS)) + intel_update_lvds(crtc, clock, adjusted_mode); + + I915_WRITE(DPLL(pipe), dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(DPLL(pipe)); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(DPLL(pipe), dpll); +} + +static void intel_set_pipe_timings(struct intel_crtc *intel_crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + uint32_t vsyncshift; + + if (!IS_GEN2(dev) && adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) { + /* the chip adds 2 halflines automatically */ + adjusted_mode->crtc_vtotal -= 1; + adjusted_mode->crtc_vblank_end -= 1; + vsyncshift = adjusted_mode->crtc_hsync_start + - adjusted_mode->crtc_htotal / 2; + } else { + vsyncshift = 0; + } + + if (INTEL_INFO(dev)->gen > 3) + I915_WRITE(VSYNCSHIFT(cpu_transcoder), vsyncshift); + + I915_WRITE(HTOTAL(cpu_transcoder), + (adjusted_mode->crtc_hdisplay - 1) | + ((adjusted_mode->crtc_htotal - 1) << 16)); + I915_WRITE(HBLANK(cpu_transcoder), + (adjusted_mode->crtc_hblank_start - 1) | + ((adjusted_mode->crtc_hblank_end - 1) << 16)); + I915_WRITE(HSYNC(cpu_transcoder), + (adjusted_mode->crtc_hsync_start - 1) | + ((adjusted_mode->crtc_hsync_end - 1) << 16)); + + I915_WRITE(VTOTAL(cpu_transcoder), + (adjusted_mode->crtc_vdisplay - 1) | + ((adjusted_mode->crtc_vtotal - 1) << 16)); + I915_WRITE(VBLANK(cpu_transcoder), + (adjusted_mode->crtc_vblank_start - 1) | + ((adjusted_mode->crtc_vblank_end - 1) << 16)); + I915_WRITE(VSYNC(cpu_transcoder), + (adjusted_mode->crtc_vsync_start - 1) | + ((adjusted_mode->crtc_vsync_end - 1) << 16)); + + /* Workaround: when the EDP input selection is B, the VTOTAL_B must be + * programmed with the VTOTAL_EDP value. Same for VTOTAL_C. This is + * documented on the DDI_FUNC_CTL register description, EDP Input Select + * bits. */ + if (IS_HASWELL(dev) && cpu_transcoder == TRANSCODER_EDP && + (pipe == PIPE_B || pipe == PIPE_C)) + I915_WRITE(VTOTAL(pipe), I915_READ(VTOTAL(cpu_transcoder))); + + /* pipesrc controls the size that is scaled from, which should + * always be the user's requested size. + */ + I915_WRITE(PIPESRC(pipe), + ((mode->hdisplay - 1) << 16) | (mode->vdisplay - 1)); +} + +static int i9xx_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int refclk, num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dspcntr, pipeconf; + bool ok, has_reduced_clock = false, is_sdvo = false; + bool is_lvds = false, is_tv = false, is_dp = false; + struct intel_encoder *encoder; + const intel_limit_t *limit; + int ret; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + } + + num_connectors++; + } + + refclk = i9xx_get_refclk(crtc, num_connectors); + + /* + * Returns a set of divisors for the desired target clock with the given + * refclk, or FALSE. The returned values represent the clock equation: + * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. + */ + limit = intel_limit(crtc, refclk); + ok = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, NULL, + &clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + if (is_lvds && dev_priv->lvds_downclock_avail) { + /* + * Ensure we match the reduced clock's P to the target clock. + * If the clocks don't match, we can't switch the display clock + * by using the FP0/FP1. In such case we will disable the LVDS + * downclock feature. + */ + has_reduced_clock = limit->find_pll(limit, crtc, + dev_priv->lvds_downclock, + refclk, + &clock, + &reduced_clock); + } + + if (is_sdvo && is_tv) + i9xx_adjust_sdvo_tv_clock(adjusted_mode, &clock); + + if (IS_GEN2(dev)) + i8xx_update_pll(crtc, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + else if (IS_VALLEYVIEW(dev)) + vlv_update_pll(crtc, mode, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + else + i9xx_update_pll(crtc, mode, adjusted_mode, &clock, + has_reduced_clock ? &reduced_clock : NULL, + num_connectors); + + /* setup pipeconf */ + pipeconf = I915_READ(PIPECONF(pipe)); + + /* Set up the display plane register */ + dspcntr = DISPPLANE_GAMMA_ENABLE; + + if (pipe == 0) + dspcntr &= ~DISPPLANE_SEL_PIPE_MASK; + else + dspcntr |= DISPPLANE_SEL_PIPE_B; + + if (pipe == 0 && INTEL_INFO(dev)->gen < 4) { + /* Enable pixel doubling when the dot clock is > 90% of the (display) + * core speed. + * + * XXX: No double-wide on 915GM pipe B. Is that the only reason for the + * pipe == 0 check? + */ + if (mode->clock > + dev_priv->display.get_display_clock_speed(dev) * 9 / 10) + pipeconf |= PIPECONF_DOUBLE_WIDE; + else + pipeconf &= ~PIPECONF_DOUBLE_WIDE; + } + + /* default to 8bpc */ + pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN); + if (is_dp) { + if (mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + pipeconf |= PIPECONF_BPP_6 | + PIPECONF_DITHER_EN | + PIPECONF_DITHER_TYPE_SP; + } + } + + if (IS_VALLEYVIEW(dev) && intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) { + if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) { + pipeconf |= PIPECONF_BPP_6 | + PIPECONF_ENABLE | + I965_PIPECONF_ACTIVE; + } + } + + DRM_DEBUG_KMS("Mode for pipe %c:\n", pipe == 0 ? 'A' : 'B'); + drm_mode_debug_printmodeline(mode); + + if (HAS_PIPE_CXSR(dev)) { + if (intel_crtc->lowfreq_avail) { + DRM_DEBUG_KMS("enabling CxSR downclocking\n"); + pipeconf |= PIPECONF_CXSR_DOWNCLOCK; + } else { + DRM_DEBUG_KMS("disabling CxSR downclocking\n"); + pipeconf &= ~PIPECONF_CXSR_DOWNCLOCK; + } + } + + pipeconf &= ~PIPECONF_INTERLACE_MASK; + if (!IS_GEN2(dev) && + adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + pipeconf |= PIPECONF_INTERLACE_W_FIELD_INDICATION; + else + pipeconf |= PIPECONF_PROGRESSIVE; + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + /* pipesrc and dspsize control the size that is scaled from, + * which should always be the user's requested size. + */ + I915_WRITE(DSPSIZE(plane), + ((mode->vdisplay - 1) << 16) | + (mode->hdisplay - 1)); + I915_WRITE(DSPPOS(plane), 0); + + I915_WRITE(PIPECONF(pipe), pipeconf); + POSTING_READ(PIPECONF(pipe)); + intel_enable_pipe(dev_priv, pipe, false); + + intel_wait_for_vblank(dev, pipe); + + I915_WRITE(DSPCNTR(plane), dspcntr); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + return ret; +} + +static void ironlake_init_pch_refclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + u32 temp; + bool has_lvds = false; + bool has_cpu_edp = false; + bool has_pch_edp = false; + bool has_panel = false; + bool has_ck505 = false; + bool can_ssc = false; + + /* We need to take the global config into account */ + list_for_each_entry(encoder, &mode_config->encoder_list, + base.head) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + has_panel = true; + has_lvds = true; + break; + case INTEL_OUTPUT_EDP: + has_panel = true; + if (intel_encoder_is_pch_edp(&encoder->base)) + has_pch_edp = true; + else + has_cpu_edp = true; + break; + } + } + + if (HAS_PCH_IBX(dev)) { + has_ck505 = dev_priv->display_clock_mode; + can_ssc = has_ck505; + } else { + has_ck505 = false; + can_ssc = true; + } + + DRM_DEBUG_KMS("has_panel %d has_lvds %d has_pch_edp %d has_cpu_edp %d has_ck505 %d\n", + has_panel, has_lvds, has_pch_edp, has_cpu_edp, + has_ck505); + + /* Ironlake: try to setup display ref clock before DPLL + * enabling. This is only under driver's control after + * PCH B stepping, previous chipset stepping should be + * ignoring this setting. + */ + temp = I915_READ(PCH_DREF_CONTROL); + /* Always enable nonspread source */ + temp &= ~DREF_NONSPREAD_SOURCE_MASK; + + if (has_ck505) + temp |= DREF_NONSPREAD_CK505_ENABLE; + else + temp |= DREF_NONSPREAD_SOURCE_ENABLE; + + if (has_panel) { + temp &= ~DREF_SSC_SOURCE_MASK; + temp |= DREF_SSC_SOURCE_ENABLE; + + /* SSC must be turned on before enabling the CPU output */ + if (intel_panel_use_ssc(dev_priv) && can_ssc) { + DRM_DEBUG_KMS("Using SSC on panel\n"); + temp |= DREF_SSC1_ENABLE; + } else + temp &= ~DREF_SSC1_ENABLE; + + /* Get SSC going before enabling the outputs */ + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + + temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK; + + /* Enable CPU source on CPU attached eDP */ + if (has_cpu_edp) { + if (intel_panel_use_ssc(dev_priv) && can_ssc) { + DRM_DEBUG_KMS("Using SSC on eDP\n"); + temp |= DREF_CPU_SOURCE_OUTPUT_DOWNSPREAD; + } + else + temp |= DREF_CPU_SOURCE_OUTPUT_NONSPREAD; + } else + temp |= DREF_CPU_SOURCE_OUTPUT_DISABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + } else { + DRM_DEBUG_KMS("Disabling SSC entirely\n"); + + temp &= ~DREF_CPU_SOURCE_OUTPUT_MASK; + + /* Turn off CPU output */ + temp |= DREF_CPU_SOURCE_OUTPUT_DISABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + + /* Turn off the SSC source */ + temp &= ~DREF_SSC_SOURCE_MASK; + temp |= DREF_SSC_SOURCE_DISABLE; + + /* Turn off SSC1 */ + temp &= ~ DREF_SSC1_ENABLE; + + I915_WRITE(PCH_DREF_CONTROL, temp); + POSTING_READ(PCH_DREF_CONTROL); + udelay(200); + } +} + +/* Sequence to enable CLKOUT_DP for FDI usage and configure PCH FDI I/O. */ +static void lpt_init_pch_refclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + bool has_vga = false; + bool is_sdv = false; + u32 tmp; + + list_for_each_entry(encoder, &mode_config->encoder_list, base.head) { + switch (encoder->type) { + case INTEL_OUTPUT_ANALOG: + has_vga = true; + break; + } + } + + if (!has_vga) + return; + + if (IS_HASWELL(dev) && (dev->pci_device & 0xFF00) == 0x0C00) + is_sdv = true; + + tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK); + tmp &= ~SBI_SSCCTL_DISABLE; + tmp |= SBI_SSCCTL_PATHALT; + intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK); + + udelay(24); + + tmp = intel_sbi_read(dev_priv, SBI_SSCCTL, SBI_ICLK); + tmp &= ~SBI_SSCCTL_PATHALT; + intel_sbi_write(dev_priv, SBI_SSCCTL, tmp, SBI_ICLK); + + if (!is_sdv) { + tmp = I915_READ(SOUTH_CHICKEN2); + tmp |= FDI_MPHY_IOSFSB_RESET_CTL; + I915_WRITE(SOUTH_CHICKEN2, tmp); + + if (wait_for_atomic_us(I915_READ(SOUTH_CHICKEN2) & + FDI_MPHY_IOSFSB_RESET_STATUS, 100)) + DRM_ERROR("FDI mPHY resert assert timeout\n"); + + tmp = I915_READ(SOUTH_CHICKEN2); + tmp &= ~FDI_MPHY_IOSFSB_RESET_CTL; + I915_WRITE(SOUTH_CHICKEN2, tmp); + + if (wait_for_atomic_us((I915_READ(SOUTH_CHICKEN2) & + FDI_MPHY_IOSFSB_RESET_STATUS) == 0, + 100)) + DRM_ERROR("FDI mPHY reset de-assert timeout\n"); + } + + tmp = intel_sbi_read(dev_priv, 0x8008, SBI_MPHY); + tmp &= ~(0xFF << 24); + tmp |= (0x12 << 24); + intel_sbi_write(dev_priv, 0x8008, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x808C, SBI_MPHY); + tmp &= ~(0x3 << 6); + tmp |= (1 << 6) | (1 << 0); + intel_sbi_write(dev_priv, 0x808C, tmp, SBI_MPHY); + } + + if (is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x800C, SBI_MPHY); + tmp |= 0x7FFF; + intel_sbi_write(dev_priv, 0x800C, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x2008, SBI_MPHY); + tmp |= (1 << 11); + intel_sbi_write(dev_priv, 0x2008, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2108, SBI_MPHY); + tmp |= (1 << 11); + intel_sbi_write(dev_priv, 0x2108, tmp, SBI_MPHY); + + if (is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x2038, SBI_MPHY); + tmp |= (0x3F << 24) | (0xF << 20) | (0xF << 16); + intel_sbi_write(dev_priv, 0x2038, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2138, SBI_MPHY); + tmp |= (0x3F << 24) | (0xF << 20) | (0xF << 16); + intel_sbi_write(dev_priv, 0x2138, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x203C, SBI_MPHY); + tmp |= (0x3F << 8); + intel_sbi_write(dev_priv, 0x203C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x213C, SBI_MPHY); + tmp |= (0x3F << 8); + intel_sbi_write(dev_priv, 0x213C, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x206C, SBI_MPHY); + tmp |= (1 << 24) | (1 << 21) | (1 << 18); + intel_sbi_write(dev_priv, 0x206C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x216C, SBI_MPHY); + tmp |= (1 << 24) | (1 << 21) | (1 << 18); + intel_sbi_write(dev_priv, 0x216C, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x2080, SBI_MPHY); + tmp &= ~(7 << 13); + tmp |= (5 << 13); + intel_sbi_write(dev_priv, 0x2080, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2180, SBI_MPHY); + tmp &= ~(7 << 13); + tmp |= (5 << 13); + intel_sbi_write(dev_priv, 0x2180, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, 0x208C, SBI_MPHY); + tmp &= ~0xFF; + tmp |= 0x1C; + intel_sbi_write(dev_priv, 0x208C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x218C, SBI_MPHY); + tmp &= ~0xFF; + tmp |= 0x1C; + intel_sbi_write(dev_priv, 0x218C, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2098, SBI_MPHY); + tmp &= ~(0xFF << 16); + tmp |= (0x1C << 16); + intel_sbi_write(dev_priv, 0x2098, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x2198, SBI_MPHY); + tmp &= ~(0xFF << 16); + tmp |= (0x1C << 16); + intel_sbi_write(dev_priv, 0x2198, tmp, SBI_MPHY); + + if (!is_sdv) { + tmp = intel_sbi_read(dev_priv, 0x20C4, SBI_MPHY); + tmp |= (1 << 27); + intel_sbi_write(dev_priv, 0x20C4, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x21C4, SBI_MPHY); + tmp |= (1 << 27); + intel_sbi_write(dev_priv, 0x21C4, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x20EC, SBI_MPHY); + tmp &= ~(0xF << 28); + tmp |= (4 << 28); + intel_sbi_write(dev_priv, 0x20EC, tmp, SBI_MPHY); + + tmp = intel_sbi_read(dev_priv, 0x21EC, SBI_MPHY); + tmp &= ~(0xF << 28); + tmp |= (4 << 28); + intel_sbi_write(dev_priv, 0x21EC, tmp, SBI_MPHY); + } + + tmp = intel_sbi_read(dev_priv, SBI_DBUFF0, SBI_ICLK); + tmp |= SBI_DBUFF0_ENABLE; + intel_sbi_write(dev_priv, SBI_DBUFF0, tmp, SBI_ICLK); +} + +/* + * Initialize reference clocks when the driver loads + */ +void intel_init_pch_refclk(struct drm_device *dev) +{ + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) + ironlake_init_pch_refclk(dev); + else if (HAS_PCH_LPT(dev)) + lpt_init_pch_refclk(dev); +} + +static int ironlake_get_refclk(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *encoder; + struct intel_encoder *edp_encoder = NULL; + int num_connectors = 0; + bool is_lvds = false; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_EDP: + edp_encoder = encoder; + break; + } + num_connectors++; + } + + if (is_lvds && intel_panel_use_ssc(dev_priv) && num_connectors < 2) { + DRM_DEBUG_KMS("using SSC reference clock of %d MHz\n", + dev_priv->lvds_ssc_freq); + return dev_priv->lvds_ssc_freq * 1000; + } + + return 120000; +} + +static void ironlake_set_pipeconf(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + bool dither) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + uint32_t val; + + val = I915_READ(PIPECONF(pipe)); + + val &= ~PIPE_BPC_MASK; + switch (intel_crtc->bpp) { + case 18: + val |= PIPE_6BPC; + break; + case 24: + val |= PIPE_8BPC; + break; + case 30: + val |= PIPE_10BPC; + break; + case 36: + val |= PIPE_12BPC; + break; + default: + /* Case prevented by intel_choose_pipe_bpp_dither. */ + BUG(); + } + + val &= ~(PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_MASK); + if (dither) + val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); + + val &= ~PIPECONF_INTERLACE_MASK; + if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + val |= PIPECONF_INTERLACED_ILK; + else + val |= PIPECONF_PROGRESSIVE; + + I915_WRITE(PIPECONF(pipe), val); + POSTING_READ(PIPECONF(pipe)); +} + +static void haswell_set_pipeconf(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + bool dither) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + uint32_t val; + + val = I915_READ(PIPECONF(cpu_transcoder)); + + val &= ~(PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_MASK); + if (dither) + val |= (PIPECONF_DITHER_EN | PIPECONF_DITHER_TYPE_SP); + + val &= ~PIPECONF_INTERLACE_MASK_HSW; + if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) + val |= PIPECONF_INTERLACED_ILK; + else + val |= PIPECONF_PROGRESSIVE; + + I915_WRITE(PIPECONF(cpu_transcoder), val); + POSTING_READ(PIPECONF(cpu_transcoder)); +} + +static bool ironlake_compute_clocks(struct drm_crtc *crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, + bool *has_reduced_clock, + intel_clock_t *reduced_clock) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + int refclk; + const intel_limit_t *limit; + bool ret, is_sdvo = false, is_tv = false, is_lvds = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (intel_encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + } + } + + refclk = ironlake_get_refclk(crtc); + + /* + * Returns a set of divisors for the desired target clock with the given + * refclk, or FALSE. The returned values represent the clock equation: + * reflck * (5 * (m1 + 2) + (m2 + 2)) / (n + 2) / p1 / p2. + */ + limit = intel_limit(crtc, refclk); + ret = limit->find_pll(limit, crtc, adjusted_mode->clock, refclk, NULL, + clock); + if (!ret) + return false; + + if (is_lvds && dev_priv->lvds_downclock_avail) { + /* + * Ensure we match the reduced clock's P to the target clock. + * If the clocks don't match, we can't switch the display clock + * by using the FP0/FP1. In such case we will disable the LVDS + * downclock feature. + */ + *has_reduced_clock = limit->find_pll(limit, crtc, + dev_priv->lvds_downclock, + refclk, + clock, + reduced_clock); + } + + if (is_sdvo && is_tv) + i9xx_adjust_sdvo_tv_clock(adjusted_mode, clock); + + return true; +} + +static void cpt_enable_fdi_bc_bifurcation(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t temp; + + temp = I915_READ(SOUTH_CHICKEN1); + if (temp & FDI_BC_BIFURCATION_SELECT) + return; + + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_B)) & FDI_RX_ENABLE); + WARN_ON(I915_READ(FDI_RX_CTL(PIPE_C)) & FDI_RX_ENABLE); + + temp |= FDI_BC_BIFURCATION_SELECT; + DRM_DEBUG_KMS("enabling fdi C rx\n"); + I915_WRITE(SOUTH_CHICKEN1, temp); + POSTING_READ(SOUTH_CHICKEN1); +} + +static bool ironlake_check_fdi_lanes(struct intel_crtc *intel_crtc) +{ + struct drm_device *dev = intel_crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *pipe_B_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_B]); + + DRM_DEBUG_KMS("checking fdi config on pipe %i, lanes %i\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + if (intel_crtc->fdi_lanes > 4) { + DRM_DEBUG_KMS("invalid fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 4; + + return false; + } + + if (dev_priv->num_pipe == 2) + return true; + + switch (intel_crtc->pipe) { + case PIPE_A: + return true; + case PIPE_B: + if (dev_priv->pipe_to_crtc_mapping[PIPE_C]->enabled && + intel_crtc->fdi_lanes > 2) { + DRM_DEBUG_KMS("invalid shared fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 2; + + return false; + } + + if (intel_crtc->fdi_lanes > 2) + WARN_ON(I915_READ(SOUTH_CHICKEN1) & FDI_BC_BIFURCATION_SELECT); + else + cpt_enable_fdi_bc_bifurcation(dev); + + return true; + case PIPE_C: + if (!pipe_B_crtc->base.enabled || pipe_B_crtc->fdi_lanes <= 2) { + if (intel_crtc->fdi_lanes > 2) { + DRM_DEBUG_KMS("invalid shared fdi lane config on pipe %i: %i lanes\n", + intel_crtc->pipe, intel_crtc->fdi_lanes); + /* Clamp lanes to avoid programming the hw with bogus values. */ + intel_crtc->fdi_lanes = 2; + + return false; + } + } else { + DRM_DEBUG_KMS("fdi link B uses too many lanes to enable link C\n"); + return false; + } + + cpt_enable_fdi_bc_bifurcation(dev); + + return true; + default: + BUG(); + } +} + +int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp) +{ + /* + * Account for spread spectrum to avoid + * oversubscribing the link. Max center spread + * is 2.5%; use 5% for safety's sake. + */ + u32 bps = target_clock * bpp * 21 / 20; + return bps / (link_bw * 8) + 1; +} + +static void ironlake_set_m_n(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + struct intel_encoder *intel_encoder, *edp_encoder = NULL; + struct fdi_m_n m_n = {0}; + int target_clock, pixel_multiplier, lane, link_bw; + bool is_dp = false, is_cpu_edp = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + is_cpu_edp = true; + edp_encoder = intel_encoder; + break; + } + } + + /* FDI link */ + pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + lane = 0; + /* CPU eDP doesn't require FDI link, so just set DP M/N + according to current link config */ + if (is_cpu_edp) { + intel_edp_link_config(edp_encoder, &lane, &link_bw); + } else { + /* FDI is a binary signal running at ~2.7GHz, encoding + * each output octet as 10 bits. The actual frequency + * is stored as a divider into a 100MHz clock, and the + * mode pixel clock is stored in units of 1KHz. + * Hence the bw of each lane in terms of the mode signal + * is: + */ + link_bw = intel_fdi_link_freq(dev) * MHz(100)/KHz(1)/10; + } + + /* [e]DP over FDI requires target mode clock instead of link clock. */ + if (edp_encoder) + target_clock = intel_edp_target_clock(edp_encoder, mode); + else if (is_dp) + target_clock = mode->clock; + else + target_clock = adjusted_mode->clock; + + if (!lane) + lane = ironlake_get_lanes_required(target_clock, link_bw, + intel_crtc->bpp); + + intel_crtc->fdi_lanes = lane; + + if (pixel_multiplier > 1) + link_bw *= pixel_multiplier; + ironlake_compute_m_n(intel_crtc->bpp, lane, target_clock, link_bw, + &m_n); + + I915_WRITE(PIPE_DATA_M1(cpu_transcoder), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(cpu_transcoder), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(cpu_transcoder), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(cpu_transcoder), m_n.link_n); +} + +static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc, + struct drm_display_mode *adjusted_mode, + intel_clock_t *clock, u32 fp) +{ + struct drm_crtc *crtc = &intel_crtc->base; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + uint32_t dpll; + int factor, pixel_multiplier, num_connectors = 0; + bool is_lvds = false, is_sdvo = false, is_tv = false; + bool is_dp = false, is_cpu_edp = false; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + switch (intel_encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_SDVO: + case INTEL_OUTPUT_HDMI: + is_sdvo = true; + if (intel_encoder->needs_tv_clock) + is_tv = true; + break; + case INTEL_OUTPUT_TVOUT: + is_tv = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&intel_encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + /* Enable autotuning of the PLL clock (if permissible) */ + factor = 21; + if (is_lvds) { + if ((intel_panel_use_ssc(dev_priv) && + dev_priv->lvds_ssc_freq == 100) || + (I915_READ(PCH_LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP) + factor = 25; + } else if (is_sdvo && is_tv) + factor = 20; + + if (clock->m < factor * clock->n) + fp |= FP_CB_TUNE; + + dpll = 0; + + if (is_lvds) + dpll |= DPLLB_MODE_LVDS; + else + dpll |= DPLLB_MODE_DAC_SERIAL; + if (is_sdvo) { + pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + if (pixel_multiplier > 1) { + dpll |= (pixel_multiplier - 1) << PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT; + } + dpll |= DPLL_DVO_HIGH_SPEED; + } + if (is_dp && !is_cpu_edp) + dpll |= DPLL_DVO_HIGH_SPEED; + + /* compute bitmask from p1 value */ + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT; + /* also FPA1 */ + dpll |= (1 << (clock->p1 - 1)) << DPLL_FPA1_P1_POST_DIV_SHIFT; + + switch (clock->p2) { + case 5: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_5; + break; + case 7: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_7; + break; + case 10: + dpll |= DPLL_DAC_SERIAL_P2_CLOCK_DIV_10; + break; + case 14: + dpll |= DPLLB_LVDS_P2_CLOCK_DIV_14; + break; + } + + if (is_sdvo && is_tv) + dpll |= PLL_REF_INPUT_TVCLKINBC; + else if (is_tv) + /* XXX: just matching BIOS for now */ + /* dpll |= PLL_REF_INPUT_TVCLKINBC; */ + dpll |= 3; + else if (is_lvds && intel_panel_use_ssc(dev_priv) && num_connectors < 2) + dpll |= PLLB_REF_INPUT_SPREADSPECTRUMIN; + else + dpll |= PLL_REF_INPUT_DREFCLK; + + return dpll; +} + +static int ironlake_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dpll, fp = 0, fp2 = 0; + bool ok, has_reduced_clock = false; + bool is_lvds = false, is_dp = false, is_cpu_edp = false; + struct intel_encoder *encoder; + u32 temp; + int ret; + bool dither, fdi_config_ok; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + WARN(!(HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)), + "Unexpected PCH type %d\n", INTEL_PCH_TYPE(dev)); + + ok = ironlake_compute_clocks(crtc, adjusted_mode, &clock, + &has_reduced_clock, &reduced_clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + /* determine panel color depth */ + dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, + adjusted_mode); + if (is_lvds && dev_priv->lvds_dither) + dither = true; + + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; + if (has_reduced_clock) + fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 | + reduced_clock.m2; + + dpll = ironlake_compute_dpll(intel_crtc, adjusted_mode, &clock, fp); + + DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe); + drm_mode_debug_printmodeline(mode); + + /* CPU eDP is the only output that doesn't need a PCH PLL of its own. */ + if (!is_cpu_edp) { + struct intel_pch_pll *pll; + + pll = intel_get_pch_pll(intel_crtc, dpll, fp); + if (pll == NULL) { + DRM_DEBUG_DRIVER("failed to find PLL for pipe %d\n", + pipe); + return -EINVAL; + } + } else + intel_put_pch_pll(intel_crtc); + + /* The LVDS pin pair needs to be on before the DPLLs are enabled. + * This is an exception to the general rule that mode_set doesn't turn + * things on. + */ + if (is_lvds) { + temp = I915_READ(PCH_LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (HAS_PCH_CPT(dev)) { + temp &= ~PORT_TRANS_SEL_MASK; + temp |= PORT_TRANS_SEL_CPT(pipe); + } else { + if (pipe == 1) + temp |= LVDS_PIPEB_SELECT; + else + temp &= ~LVDS_PIPEB_SELECT; + } + + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether we're going to + * set the DPLLs for dual-channel mode or not. + */ + if (clock.p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode (LVDS_A3_POWER_UP) + * appropriately here, but we need to look more thoroughly into how + * panels behave in the two modes. + */ + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(PCH_LVDS, temp); + } + + if (is_dp && !is_cpu_edp) { + intel_dp_set_m_n(crtc, mode, adjusted_mode); + } else { + /* For non-DP output, clear any trans DP clock recovery setting.*/ + I915_WRITE(TRANSDATA_M1(pipe), 0); + I915_WRITE(TRANSDATA_N1(pipe), 0); + I915_WRITE(TRANSDPLINK_M1(pipe), 0); + I915_WRITE(TRANSDPLINK_N1(pipe), 0); + } + + if (intel_crtc->pch_pll) { + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(intel_crtc->pch_pll->pll_reg); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + } + + intel_crtc->lowfreq_avail = false; + if (intel_crtc->pch_pll) { + if (is_lvds && has_reduced_clock && i915_powersave) { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp); + } + } + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + /* Note, this also computes intel_crtc->fdi_lanes which is used below in + * ironlake_check_fdi_lanes. */ + ironlake_set_m_n(crtc, mode, adjusted_mode); + + fdi_config_ok = ironlake_check_fdi_lanes(intel_crtc); + + if (is_cpu_edp) + ironlake_set_pll_edp(crtc, adjusted_mode->clock); + + ironlake_set_pipeconf(crtc, adjusted_mode, dither); + + intel_wait_for_vblank(dev, pipe); + + /* Set up the display plane register */ + I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + intel_update_linetime_watermarks(dev, pipe, adjusted_mode); + + return fdi_config_ok ? ret : -EINVAL; +} + +static int haswell_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int plane = intel_crtc->plane; + int num_connectors = 0; + intel_clock_t clock, reduced_clock; + u32 dpll = 0, fp = 0, fp2 = 0; + bool ok, has_reduced_clock = false; + bool is_lvds = false, is_dp = false, is_cpu_edp = false; + struct intel_encoder *encoder; + u32 temp; + int ret; + bool dither; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + switch (encoder->type) { + case INTEL_OUTPUT_LVDS: + is_lvds = true; + break; + case INTEL_OUTPUT_DISPLAYPORT: + is_dp = true; + break; + case INTEL_OUTPUT_EDP: + is_dp = true; + if (!intel_encoder_is_pch_edp(&encoder->base)) + is_cpu_edp = true; + break; + } + + num_connectors++; + } + + if (is_cpu_edp) + intel_crtc->cpu_transcoder = TRANSCODER_EDP; + else + intel_crtc->cpu_transcoder = pipe; + + /* We are not sure yet this won't happen. */ + WARN(!HAS_PCH_LPT(dev), "Unexpected PCH type %d\n", + INTEL_PCH_TYPE(dev)); + + WARN(num_connectors != 1, "%d connectors attached to pipe %c\n", + num_connectors, pipe_name(pipe)); + + WARN_ON(I915_READ(PIPECONF(intel_crtc->cpu_transcoder)) & + (PIPECONF_ENABLE | I965_PIPECONF_ACTIVE)); + + WARN_ON(I915_READ(DSPCNTR(plane)) & DISPLAY_PLANE_ENABLE); + + if (!intel_ddi_pll_mode_set(crtc, adjusted_mode->clock)) + return -EINVAL; + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + ok = ironlake_compute_clocks(crtc, adjusted_mode, &clock, + &has_reduced_clock, + &reduced_clock); + if (!ok) { + DRM_ERROR("Couldn't find PLL settings for mode!\n"); + return -EINVAL; + } + } + + /* Ensure that the cursor is valid for the new mode before changing... */ + intel_crtc_update_cursor(crtc, true); + + /* determine panel color depth */ + dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, + adjusted_mode); + if (is_lvds && dev_priv->lvds_dither) + dither = true; + + DRM_DEBUG_KMS("Mode for pipe %d:\n", pipe); + drm_mode_debug_printmodeline(mode); + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + fp = clock.n << 16 | clock.m1 << 8 | clock.m2; + if (has_reduced_clock) + fp2 = reduced_clock.n << 16 | reduced_clock.m1 << 8 | + reduced_clock.m2; + + dpll = ironlake_compute_dpll(intel_crtc, adjusted_mode, &clock, + fp); + + /* CPU eDP is the only output that doesn't need a PCH PLL of its + * own on pre-Haswell/LPT generation */ + if (!is_cpu_edp) { + struct intel_pch_pll *pll; + + pll = intel_get_pch_pll(intel_crtc, dpll, fp); + if (pll == NULL) { + DRM_DEBUG_DRIVER("failed to find PLL for pipe %d\n", + pipe); + return -EINVAL; + } + } else + intel_put_pch_pll(intel_crtc); + + /* The LVDS pin pair needs to be on before the DPLLs are + * enabled. This is an exception to the general rule that + * mode_set doesn't turn things on. + */ + if (is_lvds) { + temp = I915_READ(PCH_LVDS); + temp |= LVDS_PORT_EN | LVDS_A0A2_CLKA_POWER_UP; + if (HAS_PCH_CPT(dev)) { + temp &= ~PORT_TRANS_SEL_MASK; + temp |= PORT_TRANS_SEL_CPT(pipe); + } else { + if (pipe == 1) + temp |= LVDS_PIPEB_SELECT; + else + temp &= ~LVDS_PIPEB_SELECT; + } + + /* set the corresponsding LVDS_BORDER bit */ + temp |= dev_priv->lvds_border_bits; + /* Set the B0-B3 data pairs corresponding to whether + * we're going to set the DPLLs for dual-channel mode or + * not. + */ + if (clock.p2 == 7) + temp |= LVDS_B0B3_POWER_UP | LVDS_CLKB_POWER_UP; + else + temp &= ~(LVDS_B0B3_POWER_UP | + LVDS_CLKB_POWER_UP); + + /* It would be nice to set 24 vs 18-bit mode + * (LVDS_A3_POWER_UP) appropriately here, but we need to + * look more thoroughly into how panels behave in the + * two modes. + */ + temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY); + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) + temp |= LVDS_HSYNC_POLARITY; + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC) + temp |= LVDS_VSYNC_POLARITY; + I915_WRITE(PCH_LVDS, temp); + } + } + + if (is_dp && !is_cpu_edp) { + intel_dp_set_m_n(crtc, mode, adjusted_mode); + } else { + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + /* For non-DP output, clear any trans DP clock recovery + * setting.*/ + I915_WRITE(TRANSDATA_M1(pipe), 0); + I915_WRITE(TRANSDATA_N1(pipe), 0); + I915_WRITE(TRANSDPLINK_M1(pipe), 0); + I915_WRITE(TRANSDPLINK_N1(pipe), 0); + } + } + + intel_crtc->lowfreq_avail = false; + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + if (intel_crtc->pch_pll) { + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + + /* Wait for the clocks to stabilize. */ + POSTING_READ(intel_crtc->pch_pll->pll_reg); + udelay(150); + + /* The pixel multiplier can only be updated once the + * DPLL is enabled and the clocks are stable. + * + * So write it again. + */ + I915_WRITE(intel_crtc->pch_pll->pll_reg, dpll); + } + + if (intel_crtc->pch_pll) { + if (is_lvds && has_reduced_clock && i915_powersave) { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp2); + intel_crtc->lowfreq_avail = true; + } else { + I915_WRITE(intel_crtc->pch_pll->fp1_reg, fp); + } + } + } + + intel_set_pipe_timings(intel_crtc, mode, adjusted_mode); + + if (!is_dp || is_cpu_edp) + ironlake_set_m_n(crtc, mode, adjusted_mode); + + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) + if (is_cpu_edp) + ironlake_set_pll_edp(crtc, adjusted_mode->clock); + + haswell_set_pipeconf(crtc, adjusted_mode, dither); + + /* Set up the display plane register */ + I915_WRITE(DSPCNTR(plane), DISPPLANE_GAMMA_ENABLE); + POSTING_READ(DSPCNTR(plane)); + + ret = intel_pipe_set_base(crtc, x, y, fb); + + intel_update_watermarks(dev); + + intel_update_linetime_watermarks(dev, pipe, adjusted_mode); + + return ret; +} + +static int intel_crtc_mode_set(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_encoder_helper_funcs *encoder_funcs; + struct intel_encoder *encoder; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int ret; + + drm_vblank_pre_modeset(dev, pipe); + + ret = dev_priv->display.crtc_mode_set(crtc, mode, adjusted_mode, + x, y, fb); + drm_vblank_post_modeset(dev, pipe); + + if (ret != 0) + return ret; + + for_each_encoder_on_crtc(dev, crtc, encoder) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] set [MODE:%d:%s]\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base), + mode->base.id, mode->name); + encoder_funcs = encoder->base.helper_private; + encoder_funcs->mode_set(&encoder->base, mode, adjusted_mode); + } + + return 0; +} + +static bool intel_eld_uptodate(struct drm_connector *connector, + int reg_eldv, uint32_t bits_eldv, + int reg_elda, uint32_t bits_elda, + int reg_edid) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t i; + + i = I915_READ(reg_eldv); + i &= bits_eldv; + + if (!eld[0]) + return !i; + + if (!i) + return false; + + i = I915_READ(reg_elda); + i &= ~bits_elda; + I915_WRITE(reg_elda, i); + + for (i = 0; i < eld[2]; i++) + if (I915_READ(reg_edid) != *((uint32_t *)eld + i)) + return false; + + return true; +} + +static void g4x_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t eldv; + uint32_t len; + uint32_t i; + + i = I915_READ(G4X_AUD_VID_DID); + + if (i == INTEL_AUDIO_DEVBLC || i == INTEL_AUDIO_DEVCL) + eldv = G4X_ELDV_DEVCL_DEVBLC; + else + eldv = G4X_ELDV_DEVCTG; + + if (intel_eld_uptodate(connector, + G4X_AUD_CNTL_ST, eldv, + G4X_AUD_CNTL_ST, G4X_ELD_ADDR, + G4X_HDMIW_HDMIEDID)) + return; + + i = I915_READ(G4X_AUD_CNTL_ST); + i &= ~(eldv | G4X_ELD_ADDR); + len = (i >> 9) & 0x1f; /* ELD buffer size */ + I915_WRITE(G4X_AUD_CNTL_ST, i); + + if (!eld[0]) + return; + + len = min_t(uint8_t, eld[2], len); + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(G4X_HDMIW_HDMIEDID, *((uint32_t *)eld + i)); + + i = I915_READ(G4X_AUD_CNTL_ST); + i |= eldv; + I915_WRITE(G4X_AUD_CNTL_ST, i); +} + +static void haswell_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + struct drm_device *dev = crtc->dev; + uint32_t eldv; + uint32_t i; + int len; + int pipe = to_intel_crtc(crtc)->pipe; + int tmp; + + int hdmiw_hdmiedid = HSW_AUD_EDID_DATA(pipe); + int aud_cntl_st = HSW_AUD_DIP_ELD_CTRL(pipe); + int aud_config = HSW_AUD_CFG(pipe); + int aud_cntrl_st2 = HSW_AUD_PIN_ELD_CP_VLD; + + + DRM_DEBUG_DRIVER("HDMI: Haswell Audio initialize....\n"); + + /* Audio output enable */ + DRM_DEBUG_DRIVER("HDMI audio: enable codec\n"); + tmp = I915_READ(aud_cntrl_st2); + tmp |= (AUDIO_OUTPUT_ENABLE_A << (pipe * 4)); + I915_WRITE(aud_cntrl_st2, tmp); + + /* Wait for 1 vertical blank */ + intel_wait_for_vblank(dev, pipe); + + /* Set ELD valid state */ + tmp = I915_READ(aud_cntrl_st2); + DRM_DEBUG_DRIVER("HDMI audio: pin eld vld status=0x%8x\n", tmp); + tmp |= (AUDIO_ELD_VALID_A << (pipe * 4)); + I915_WRITE(aud_cntrl_st2, tmp); + tmp = I915_READ(aud_cntrl_st2); + DRM_DEBUG_DRIVER("HDMI audio: eld vld status=0x%8x\n", tmp); + + /* Enable HDMI mode */ + tmp = I915_READ(aud_config); + DRM_DEBUG_DRIVER("HDMI audio: audio conf: 0x%8x\n", tmp); + /* clear N_programing_enable and N_value_index */ + tmp &= ~(AUD_CONFIG_N_VALUE_INDEX | AUD_CONFIG_N_PROG_ENABLE); + I915_WRITE(aud_config, tmp); + + DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(pipe)); + + eldv = AUDIO_ELD_VALID_A << (pipe * 4); + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + DRM_DEBUG_DRIVER("ELD: DisplayPort detected\n"); + eld[5] |= (1 << 2); /* Conn_Type, 0x1 = DisplayPort */ + I915_WRITE(aud_config, AUD_CONFIG_N_VALUE_INDEX); /* 0x1 = DP */ + } else + I915_WRITE(aud_config, 0); + + if (intel_eld_uptodate(connector, + aud_cntrl_st2, eldv, + aud_cntl_st, IBX_ELD_ADDRESS, + hdmiw_hdmiedid)) + return; + + i = I915_READ(aud_cntrl_st2); + i &= ~eldv; + I915_WRITE(aud_cntrl_st2, i); + + if (!eld[0]) + return; + + i = I915_READ(aud_cntl_st); + i &= ~IBX_ELD_ADDRESS; + I915_WRITE(aud_cntl_st, i); + i = (i >> 29) & DIP_PORT_SEL_MASK; /* DIP_Port_Select, 0x1 = PortB */ + DRM_DEBUG_DRIVER("port num:%d\n", i); + + len = min_t(uint8_t, eld[2], 21); /* 84 bytes of hw ELD buffer */ + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i)); + + i = I915_READ(aud_cntrl_st2); + i |= eldv; + I915_WRITE(aud_cntrl_st2, i); + +} + +static void ironlake_write_eld(struct drm_connector *connector, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint8_t *eld = connector->eld; + uint32_t eldv; + uint32_t i; + int len; + int hdmiw_hdmiedid; + int aud_config; + int aud_cntl_st; + int aud_cntrl_st2; + int pipe = to_intel_crtc(crtc)->pipe; + + if (HAS_PCH_IBX(connector->dev)) { + hdmiw_hdmiedid = IBX_HDMIW_HDMIEDID(pipe); + aud_config = IBX_AUD_CFG(pipe); + aud_cntl_st = IBX_AUD_CNTL_ST(pipe); + aud_cntrl_st2 = IBX_AUD_CNTL_ST2; + } else { + hdmiw_hdmiedid = CPT_HDMIW_HDMIEDID(pipe); + aud_config = CPT_AUD_CFG(pipe); + aud_cntl_st = CPT_AUD_CNTL_ST(pipe); + aud_cntrl_st2 = CPT_AUD_CNTRL_ST2; + } + + DRM_DEBUG_DRIVER("ELD on pipe %c\n", pipe_name(pipe)); + + i = I915_READ(aud_cntl_st); + i = (i >> 29) & DIP_PORT_SEL_MASK; /* DIP_Port_Select, 0x1 = PortB */ + if (!i) { + DRM_DEBUG_DRIVER("Audio directed to unknown port\n"); + /* operate blindly on all ports */ + eldv = IBX_ELD_VALIDB; + eldv |= IBX_ELD_VALIDB << 4; + eldv |= IBX_ELD_VALIDB << 8; + } else { + DRM_DEBUG_DRIVER("ELD on port %c\n", 'A' + i); + eldv = IBX_ELD_VALIDB << ((i - 1) * 4); + } + + if (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT)) { + DRM_DEBUG_DRIVER("ELD: DisplayPort detected\n"); + eld[5] |= (1 << 2); /* Conn_Type, 0x1 = DisplayPort */ + I915_WRITE(aud_config, AUD_CONFIG_N_VALUE_INDEX); /* 0x1 = DP */ + } else + I915_WRITE(aud_config, 0); + + if (intel_eld_uptodate(connector, + aud_cntrl_st2, eldv, + aud_cntl_st, IBX_ELD_ADDRESS, + hdmiw_hdmiedid)) + return; + + i = I915_READ(aud_cntrl_st2); + i &= ~eldv; + I915_WRITE(aud_cntrl_st2, i); + + if (!eld[0]) + return; + + i = I915_READ(aud_cntl_st); + i &= ~IBX_ELD_ADDRESS; + I915_WRITE(aud_cntl_st, i); + + len = min_t(uint8_t, eld[2], 21); /* 84 bytes of hw ELD buffer */ + DRM_DEBUG_DRIVER("ELD size %d\n", len); + for (i = 0; i < len; i++) + I915_WRITE(hdmiw_hdmiedid, *((uint32_t *)eld + i)); + + i = I915_READ(aud_cntrl_st2); + i |= eldv; + I915_WRITE(aud_cntrl_st2, i); +} + +void intel_write_eld(struct drm_encoder *encoder, + struct drm_display_mode *mode) +{ + struct drm_crtc *crtc = encoder->crtc; + struct drm_connector *connector; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + connector = drm_select_eld(encoder, mode); + if (!connector) + return; + + DRM_DEBUG_DRIVER("ELD on [CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, + drm_get_connector_name(connector), + connector->encoder->base.id, + drm_get_encoder_name(connector->encoder)); + + connector->eld[6] = drm_av_sync_delay(connector, mode) / 2; + + if (dev_priv->display.write_eld) + dev_priv->display.write_eld(connector, crtc); +} + +/** Loads the palette/gamma unit for the CRTC with the prepared values */ +void intel_crtc_load_lut(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int palreg = PALETTE(intel_crtc->pipe); + int i; + + /* The clocks have to be on to load the palette. */ + if (!crtc->enabled || !intel_crtc->active) + return; + + /* use legacy palette for Ironlake */ + if (HAS_PCH_SPLIT(dev)) + palreg = LGC_PALETTE(intel_crtc->pipe); + + for (i = 0; i < 256; i++) { + I915_WRITE(palreg + 4 * i, + (intel_crtc->lut_r[i] << 16) | + (intel_crtc->lut_g[i] << 8) | + intel_crtc->lut_b[i]); + } +} + +static void i845_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + bool visible = base != 0; + u32 cntl; + + if (intel_crtc->cursor_visible == visible) + return; + + cntl = I915_READ(_CURACNTR); + if (visible) { + /* On these chipsets we can only modify the base whilst + * the cursor is disabled. + */ + I915_WRITE(_CURABASE, base); + + cntl &= ~(CURSOR_FORMAT_MASK); + /* XXX width must be 64, stride 256 => 0x00 << 28 */ + cntl |= CURSOR_ENABLE | + CURSOR_GAMMA_ENABLE | + CURSOR_FORMAT_ARGB; + } else + cntl &= ~(CURSOR_ENABLE | CURSOR_GAMMA_ENABLE); + I915_WRITE(_CURACNTR, cntl); + + intel_crtc->cursor_visible = visible; +} + +static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + bool visible = base != 0; + + if (intel_crtc->cursor_visible != visible) { + uint32_t cntl = I915_READ(CURCNTR(pipe)); + if (base) { + cntl &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT); + cntl |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; + cntl |= pipe << 28; /* Connect to correct pipe */ + } else { + cntl &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE); + cntl |= CURSOR_MODE_DISABLE; + } + I915_WRITE(CURCNTR(pipe), cntl); + + intel_crtc->cursor_visible = visible; + } + /* and commit changes on next vblank */ + I915_WRITE(CURBASE(pipe), base); +} + +static void ivb_update_cursor(struct drm_crtc *crtc, u32 base) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + bool visible = base != 0; + + if (intel_crtc->cursor_visible != visible) { + uint32_t cntl = I915_READ(CURCNTR_IVB(pipe)); + if (base) { + cntl &= ~CURSOR_MODE; + cntl |= CURSOR_MODE_64_ARGB_AX | MCURSOR_GAMMA_ENABLE; + } else { + cntl &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE); + cntl |= CURSOR_MODE_DISABLE; + } + I915_WRITE(CURCNTR_IVB(pipe), cntl); + + intel_crtc->cursor_visible = visible; + } + /* and commit changes on next vblank */ + I915_WRITE(CURBASE_IVB(pipe), base); +} + +/* If no-part of the cursor is visible on the framebuffer, then the GPU may hang... */ +static void intel_crtc_update_cursor(struct drm_crtc *crtc, + bool on) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int x = intel_crtc->cursor_x; + int y = intel_crtc->cursor_y; + u32 base, pos; + bool visible; + + pos = 0; + + if (on && crtc->enabled && crtc->fb) { + base = intel_crtc->cursor_addr; + if (x > (int) crtc->fb->width) + base = 0; + + if (y > (int) crtc->fb->height) + base = 0; + } else + base = 0; + + if (x < 0) { + if (x + intel_crtc->cursor_width < 0) + base = 0; + + pos |= CURSOR_POS_SIGN << CURSOR_X_SHIFT; + x = -x; + } + pos |= x << CURSOR_X_SHIFT; + + if (y < 0) { + if (y + intel_crtc->cursor_height < 0) + base = 0; + + pos |= CURSOR_POS_SIGN << CURSOR_Y_SHIFT; + y = -y; + } + pos |= y << CURSOR_Y_SHIFT; + + visible = base != 0; + if (!visible && !intel_crtc->cursor_visible) + return; + + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { + I915_WRITE(CURPOS_IVB(pipe), pos); + ivb_update_cursor(crtc, base); + } else { + I915_WRITE(CURPOS(pipe), pos); + if (IS_845G(dev) || IS_I865G(dev)) + i845_update_cursor(crtc, base); + else + i9xx_update_cursor(crtc, base); + } +} + +static int intel_crtc_cursor_set(struct drm_crtc *crtc, + struct drm_file *file, + uint32_t handle, + uint32_t width, uint32_t height) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_gem_object *obj; + uint32_t addr; + int ret; + + /* if we want to turn off the cursor ignore width and height */ + if (!handle) { + DRM_DEBUG_KMS("cursor off\n"); + addr = 0; + obj = NULL; + mutex_lock(&dev->struct_mutex); + goto finish; + } + + /* Currently we only support 64x64 cursors */ + if (width != 64 || height != 64) { + DRM_ERROR("we currently only support 64x64 cursors\n"); + return -EINVAL; + } + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle)); + if (&obj->base == NULL) + return -ENOENT; + + if (obj->base.size < width * height * 4) { + DRM_ERROR("buffer is to small\n"); + ret = -ENOMEM; + goto fail; + } + + /* we only need to pin inside GTT if cursor is non-phy */ + mutex_lock(&dev->struct_mutex); + if (!dev_priv->info->cursor_needs_physical) { + if (obj->tiling_mode) { + DRM_ERROR("cursor cannot be tiled\n"); + ret = -EINVAL; + goto fail_locked; + } + + ret = i915_gem_object_pin_to_display_plane(obj, 0, NULL); + if (ret) { + DRM_ERROR("failed to move cursor bo into the GTT\n"); + goto fail_locked; + } + + ret = i915_gem_object_put_fence(obj); + if (ret) { + DRM_ERROR("failed to release fence for cursor"); + goto fail_unpin; + } + + addr = obj->gtt_offset; + } else { + int align = IS_I830(dev) ? 16 * 1024 : 256; + ret = i915_gem_attach_phys_object(dev, obj, + (intel_crtc->pipe == 0) ? I915_GEM_PHYS_CURSOR_0 : I915_GEM_PHYS_CURSOR_1, + align); + if (ret) { + DRM_ERROR("failed to attach phys object\n"); + goto fail_locked; + } + addr = obj->phys_obj->handle->busaddr; + } + + if (IS_GEN2(dev)) + I915_WRITE(CURSIZE, (height << 12) | width); + + finish: + if (intel_crtc->cursor_bo) { + if (dev_priv->info->cursor_needs_physical) { + if (intel_crtc->cursor_bo != obj) + i915_gem_detach_phys_object(dev, intel_crtc->cursor_bo); + } else + i915_gem_object_unpin(intel_crtc->cursor_bo); + drm_gem_object_unreference(&intel_crtc->cursor_bo->base); + } + + mutex_unlock(&dev->struct_mutex); + + intel_crtc->cursor_addr = addr; + intel_crtc->cursor_bo = obj; + intel_crtc->cursor_width = width; + intel_crtc->cursor_height = height; + + intel_crtc_update_cursor(crtc, true); + + return 0; +fail_unpin: + i915_gem_object_unpin(obj); +fail_locked: + mutex_unlock(&dev->struct_mutex); +fail: + drm_gem_object_unreference_unlocked(&obj->base); + return ret; +} + +static int intel_crtc_cursor_move(struct drm_crtc *crtc, int x, int y) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + intel_crtc->cursor_x = x; + intel_crtc->cursor_y = y; + + intel_crtc_update_cursor(crtc, true); + + return 0; +} + +/** Sets the color ramps on behalf of RandR */ +void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, + u16 blue, int regno) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + intel_crtc->lut_r[regno] = red >> 8; + intel_crtc->lut_g[regno] = green >> 8; + intel_crtc->lut_b[regno] = blue >> 8; +} + +void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, int regno) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + *red = intel_crtc->lut_r[regno] << 8; + *green = intel_crtc->lut_g[regno] << 8; + *blue = intel_crtc->lut_b[regno] << 8; +} + +static void intel_crtc_gamma_set(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, uint32_t start, uint32_t size) +{ + int end = (start + size > 256) ? 256 : start + size, i; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + for (i = start; i < end; i++) { + intel_crtc->lut_r[i] = red[i] >> 8; + intel_crtc->lut_g[i] = green[i] >> 8; + intel_crtc->lut_b[i] = blue[i] >> 8; + } + + intel_crtc_load_lut(crtc); +} + +/** + * Get a pipe with a simple mode set on it for doing load-based monitor + * detection. + * + * It will be up to the load-detect code to adjust the pipe as appropriate for + * its requirements. The pipe will be connected to no other encoders. + * + * Currently this code will only succeed if there is a pipe with no encoders + * configured for it. In the future, it could choose to temporarily disable + * some outputs to free up a pipe for its use. + * + * \return crtc, or NULL if no pipes are available. + */ + +/* VESA 640x480x72Hz mode to set on the pipe */ +static struct drm_display_mode load_detect_mode = { + DRM_MODE("640x480", DRM_MODE_TYPE_DEFAULT, 31500, 640, 664, + 704, 832, 0, 480, 489, 491, 520, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC), +}; + +static struct drm_framebuffer * +intel_framebuffer_create(struct drm_device *dev, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj) +{ + struct intel_framebuffer *intel_fb; + int ret; + + intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL); + if (!intel_fb) { + drm_gem_object_unreference_unlocked(&obj->base); + return ERR_PTR(-ENOMEM); + } + + ret = intel_framebuffer_init(dev, intel_fb, mode_cmd, obj); + if (ret) { + drm_gem_object_unreference_unlocked(&obj->base); + kfree(intel_fb); + return ERR_PTR(ret); + } + + return &intel_fb->base; +} + +static u32 +intel_framebuffer_pitch_for_width(int width, int bpp) +{ + u32 pitch = DIV_ROUND_UP(width * bpp, 8); + return ALIGN(pitch, 64); +} + +static u32 +intel_framebuffer_size_for_mode(struct drm_display_mode *mode, int bpp) +{ + u32 pitch = intel_framebuffer_pitch_for_width(mode->hdisplay, bpp); + return ALIGN(pitch * mode->vdisplay, PAGE_SIZE); +} + +static struct drm_framebuffer * +intel_framebuffer_create_for_mode(struct drm_device *dev, + struct drm_display_mode *mode, + int depth, int bpp) +{ + struct drm_i915_gem_object *obj; + struct drm_mode_fb_cmd2 mode_cmd = { 0 }; + + obj = i915_gem_alloc_object(dev, + intel_framebuffer_size_for_mode(mode, bpp)); + if (obj == NULL) + return ERR_PTR(-ENOMEM); + + mode_cmd.width = mode->hdisplay; + mode_cmd.height = mode->vdisplay; + mode_cmd.pitches[0] = intel_framebuffer_pitch_for_width(mode_cmd.width, + bpp); + mode_cmd.pixel_format = drm_mode_legacy_fb_format(bpp, depth); + + return intel_framebuffer_create(dev, &mode_cmd, obj); +} + +static struct drm_framebuffer * +mode_fits_in_fbdev(struct drm_device *dev, + struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct drm_framebuffer *fb; + + if (dev_priv->fbdev == NULL) + return NULL; + + obj = dev_priv->fbdev->ifb.obj; + if (obj == NULL) + return NULL; + + fb = &dev_priv->fbdev->ifb.base; + if (fb->pitches[0] < intel_framebuffer_pitch_for_width(mode->hdisplay, + fb->bits_per_pixel)) + return NULL; + + if (obj->base.size < mode->vdisplay * fb->pitches[0]) + return NULL; + + return fb; +} + +bool intel_get_load_detect_pipe(struct drm_connector *connector, + struct drm_display_mode *mode, + struct intel_load_detect_pipe *old) +{ + struct intel_crtc *intel_crtc; + struct intel_encoder *intel_encoder = + intel_attached_encoder(connector); + struct drm_crtc *possible_crtc; + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = NULL; + struct drm_device *dev = encoder->dev; + struct drm_framebuffer *fb; + int i = -1; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, drm_get_connector_name(connector), + encoder->base.id, drm_get_encoder_name(encoder)); + + /* + * Algorithm gets a little messy: + * + * - if the connector already has an assigned crtc, use it (but make + * sure it's on first) + * + * - try to find the first unused crtc that can drive this connector, + * and use that if we find one + */ + + /* See if we already have a CRTC for this connector */ + if (encoder->crtc) { + crtc = encoder->crtc; + + old->dpms_mode = connector->dpms; + old->load_detect_temp = false; + + /* Make sure the crtc and connector are running */ + if (connector->dpms != DRM_MODE_DPMS_ON) + connector->funcs->dpms(connector, DRM_MODE_DPMS_ON); + + return true; + } + + /* Find an unused one (if possible) */ + list_for_each_entry(possible_crtc, &dev->mode_config.crtc_list, head) { + i++; + if (!(encoder->possible_crtcs & (1 << i))) + continue; + if (!possible_crtc->enabled) { + crtc = possible_crtc; + break; + } + } + + /* + * If we didn't find an unused CRTC, don't use any. + */ + if (!crtc) { + DRM_DEBUG_KMS("no pipe available for load-detect\n"); + return false; + } + + intel_encoder->new_crtc = to_intel_crtc(crtc); + to_intel_connector(connector)->new_encoder = intel_encoder; + + intel_crtc = to_intel_crtc(crtc); + old->dpms_mode = connector->dpms; + old->load_detect_temp = true; + old->release_fb = NULL; + + if (!mode) + mode = &load_detect_mode; + + /* We need a framebuffer large enough to accommodate all accesses + * that the plane may generate whilst we perform load detection. + * We can not rely on the fbcon either being present (we get called + * during its initialisation to detect all boot displays, or it may + * not even exist) or that it is large enough to satisfy the + * requested mode. + */ + fb = mode_fits_in_fbdev(dev, mode); + if (fb == NULL) { + DRM_DEBUG_KMS("creating tmp fb for load-detection\n"); + fb = intel_framebuffer_create_for_mode(dev, mode, 24, 32); + old->release_fb = fb; + } else + DRM_DEBUG_KMS("reusing fbdev for load-detection framebuffer\n"); + if (IS_ERR(fb)) { + DRM_DEBUG_KMS("failed to allocate framebuffer for load-detection\n"); + return false; + } + + if (!intel_set_mode(crtc, mode, 0, 0, fb)) { + DRM_DEBUG_KMS("failed to set mode on load-detect pipe\n"); + if (old->release_fb) + old->release_fb->funcs->destroy(old->release_fb); + return false; + } + + /* let the connector get through one full cycle before testing */ + intel_wait_for_vblank(dev, intel_crtc->pipe); + return true; +} + +void intel_release_load_detect_pipe(struct drm_connector *connector, + struct intel_load_detect_pipe *old) +{ + struct intel_encoder *intel_encoder = + intel_attached_encoder(connector); + struct drm_encoder *encoder = &intel_encoder->base; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s], [ENCODER:%d:%s]\n", + connector->base.id, drm_get_connector_name(connector), + encoder->base.id, drm_get_encoder_name(encoder)); + + if (old->load_detect_temp) { + struct drm_crtc *crtc = encoder->crtc; + + to_intel_connector(connector)->new_encoder = NULL; + intel_encoder->new_crtc = NULL; + intel_set_mode(crtc, NULL, 0, 0, NULL); + + if (old->release_fb) + old->release_fb->funcs->destroy(old->release_fb); + + return; + } + + /* Switch crtc and encoder back off if necessary */ + if (old->dpms_mode != DRM_MODE_DPMS_ON) + connector->funcs->dpms(connector, old->dpms_mode); +} + +/* Returns the clock of the currently programmed mode of the given pipe. */ +static int intel_crtc_clock_get(struct drm_device *dev, struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + u32 dpll = I915_READ(DPLL(pipe)); + u32 fp; + intel_clock_t clock; + + if ((dpll & DISPLAY_RATE_SELECT_FPA1) == 0) + fp = I915_READ(FP0(pipe)); + else + fp = I915_READ(FP1(pipe)); + + clock.m1 = (fp & FP_M1_DIV_MASK) >> FP_M1_DIV_SHIFT; + if (IS_PINEVIEW(dev)) { + clock.n = ffs((fp & FP_N_PINEVIEW_DIV_MASK) >> FP_N_DIV_SHIFT) - 1; + clock.m2 = (fp & FP_M2_PINEVIEW_DIV_MASK) >> FP_M2_DIV_SHIFT; + } else { + clock.n = (fp & FP_N_DIV_MASK) >> FP_N_DIV_SHIFT; + clock.m2 = (fp & FP_M2_DIV_MASK) >> FP_M2_DIV_SHIFT; + } + + if (!IS_GEN2(dev)) { + if (IS_PINEVIEW(dev)) + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW) >> + DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW); + else + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); + + switch (dpll & DPLL_MODE_MASK) { + case DPLLB_MODE_DAC_SERIAL: + clock.p2 = dpll & DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 ? + 5 : 10; + break; + case DPLLB_MODE_LVDS: + clock.p2 = dpll & DPLLB_LVDS_P2_CLOCK_DIV_7 ? + 7 : 14; + break; + default: + DRM_DEBUG_KMS("Unknown DPLL mode %08x in programmed " + "mode\n", (int)(dpll & DPLL_MODE_MASK)); + return 0; + } + + /* XXX: Handle the 100Mhz refclk */ + intel_clock(dev, 96000, &clock); + } else { + bool is_lvds = (pipe == 1) && (I915_READ(LVDS) & LVDS_PORT_EN); + + if (is_lvds) { + clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS) >> + DPLL_FPA01_P1_POST_DIV_SHIFT); + clock.p2 = 14; + + if ((dpll & PLL_REF_INPUT_MASK) == + PLLB_REF_INPUT_SPREADSPECTRUMIN) { + /* XXX: might not be 66MHz */ + intel_clock(dev, 66000, &clock); + } else + intel_clock(dev, 48000, &clock); + } else { + if (dpll & PLL_P1_DIVIDE_BY_TWO) + clock.p1 = 2; + else { + clock.p1 = ((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830) >> + DPLL_FPA01_P1_POST_DIV_SHIFT) + 2; + } + if (dpll & PLL_P2_DIVIDE_BY_4) + clock.p2 = 4; + else + clock.p2 = 2; + + intel_clock(dev, 48000, &clock); + } + } + + /* XXX: It would be nice to validate the clocks, but we can't reuse + * i830PllIsValid() because it relies on the xf86_config connector + * configuration being accurate, which it isn't necessarily. + */ + + return clock.dot; +} + +/** Returns the currently programmed mode of the given pipe. */ +struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, + struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + struct drm_display_mode *mode; + int htot = I915_READ(HTOTAL(cpu_transcoder)); + int hsync = I915_READ(HSYNC(cpu_transcoder)); + int vtot = I915_READ(VTOTAL(cpu_transcoder)); + int vsync = I915_READ(VSYNC(cpu_transcoder)); + + mode = kzalloc(sizeof(*mode), GFP_KERNEL); + if (!mode) + return NULL; + + mode->clock = intel_crtc_clock_get(dev, crtc); + mode->hdisplay = (htot & 0xffff) + 1; + mode->htotal = ((htot & 0xffff0000) >> 16) + 1; + mode->hsync_start = (hsync & 0xffff) + 1; + mode->hsync_end = ((hsync & 0xffff0000) >> 16) + 1; + mode->vdisplay = (vtot & 0xffff) + 1; + mode->vtotal = ((vtot & 0xffff0000) >> 16) + 1; + mode->vsync_start = (vsync & 0xffff) + 1; + mode->vsync_end = ((vsync & 0xffff0000) >> 16) + 1; + + drm_mode_set_name(mode); + + return mode; +} + +static void intel_increase_pllclock(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int pipe = intel_crtc->pipe; + int dpll_reg = DPLL(pipe); + int dpll; + + if (HAS_PCH_SPLIT(dev)) + return; + + if (!dev_priv->lvds_downclock_avail) + return; + + dpll = I915_READ(dpll_reg); + if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) { + DRM_DEBUG_DRIVER("upclocking LVDS\n"); + + assert_panel_unlocked(dev_priv, pipe); + + dpll &= ~DISPLAY_RATE_SELECT_FPA1; + I915_WRITE(dpll_reg, dpll); + intel_wait_for_vblank(dev, pipe); + + dpll = I915_READ(dpll_reg); + if (dpll & DISPLAY_RATE_SELECT_FPA1) + DRM_DEBUG_DRIVER("failed to upclock LVDS!\n"); + } +} + +static void intel_decrease_pllclock(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + if (HAS_PCH_SPLIT(dev)) + return; + + if (!dev_priv->lvds_downclock_avail) + return; + + /* + * Since this is called by a timer, we should never get here in + * the manual case. + */ + if (!HAS_PIPE_CXSR(dev) && intel_crtc->lowfreq_avail) { + int pipe = intel_crtc->pipe; + int dpll_reg = DPLL(pipe); + int dpll; + + DRM_DEBUG_DRIVER("downclocking LVDS\n"); + + assert_panel_unlocked(dev_priv, pipe); + + dpll = I915_READ(dpll_reg); + dpll |= DISPLAY_RATE_SELECT_FPA1; + I915_WRITE(dpll_reg, dpll); + intel_wait_for_vblank(dev, pipe); + dpll = I915_READ(dpll_reg); + if (!(dpll & DISPLAY_RATE_SELECT_FPA1)) + DRM_DEBUG_DRIVER("failed to downclock LVDS!\n"); + } + +} + +void intel_mark_busy(struct drm_device *dev) +{ + i915_update_gfx_val(dev->dev_private); +} + +void intel_mark_idle(struct drm_device *dev) +{ +} + +void intel_mark_fb_busy(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_crtc *crtc; + + if (!i915_powersave) + return; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (!crtc->fb) + continue; + + if (to_intel_framebuffer(crtc->fb)->obj == obj) + intel_increase_pllclock(crtc); + } +} + +void intel_mark_fb_idle(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_crtc *crtc; + + if (!i915_powersave) + return; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (!crtc->fb) + continue; + + if (to_intel_framebuffer(crtc->fb)->obj == obj) + intel_decrease_pllclock(crtc); + } +} + +static void intel_crtc_destroy(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_device *dev = crtc->dev; + struct intel_unpin_work *work; + unsigned long flags; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + intel_crtc->unpin_work = NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (work) { + cancel_work_sync(&work->work); + kfree(work); + } + + drm_crtc_cleanup(crtc); + + kfree(intel_crtc); +} + +static void intel_unpin_work_fn(struct work_struct *__work) +{ + struct intel_unpin_work *work = + container_of(__work, struct intel_unpin_work, work); + struct drm_device *dev = work->crtc->dev; + + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(work->old_fb_obj); + drm_gem_object_unreference(&work->pending_flip_obj->base); + drm_gem_object_unreference(&work->old_fb_obj->base); + + intel_update_fbc(dev); + mutex_unlock(&dev->struct_mutex); + + BUG_ON(atomic_read(&to_intel_crtc(work->crtc)->unpin_work_count) == 0); + atomic_dec(&to_intel_crtc(work->crtc)->unpin_work_count); + + kfree(work); +} + +static void do_intel_finish_page_flip(struct drm_device *dev, + struct drm_crtc *crtc) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_unpin_work *work; + struct drm_i915_gem_object *obj; + struct drm_pending_vblank_event *e; + struct timeval tvbl; + unsigned long flags; + + /* Ignore early vblank irqs */ + if (intel_crtc == NULL) + return; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + if (work == NULL || !work->pending) { + spin_unlock_irqrestore(&dev->event_lock, flags); + return; + } + + intel_crtc->unpin_work = NULL; + + if (work->event) { + e = work->event; + e->event.sequence = drm_vblank_count_and_time(dev, intel_crtc->pipe, &tvbl); + + e->event.tv_sec = tvbl.tv_sec; + e->event.tv_usec = tvbl.tv_usec; + + list_add_tail(&e->base.link, + &e->base.file_priv->event_list); + wake_up_interruptible(&e->base.file_priv->event_wait); + } + + drm_vblank_put(dev, intel_crtc->pipe); + + spin_unlock_irqrestore(&dev->event_lock, flags); + + obj = work->old_fb_obj; + + atomic_clear_mask(1 << intel_crtc->plane, + &obj->pending_flip.counter); + wake_up(&dev_priv->pending_flip_queue); + + queue_work(dev_priv->wq, &work->work); + + trace_i915_flip_complete(intel_crtc->plane, work->pending_flip_obj); +} + +void intel_finish_page_flip(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + + do_intel_finish_page_flip(dev, crtc); +} + +void intel_finish_page_flip_plane(struct drm_device *dev, int plane) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->plane_to_crtc_mapping[plane]; + + do_intel_finish_page_flip(dev, crtc); +} + +void intel_prepare_page_flip(struct drm_device *dev, int plane) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = + to_intel_crtc(dev_priv->plane_to_crtc_mapping[plane]); + unsigned long flags; + + spin_lock_irqsave(&dev->event_lock, flags); + if (intel_crtc->unpin_work) { + if ((++intel_crtc->unpin_work->pending) > 1) + DRM_ERROR("Prepared flip multiple times\n"); + } else { + DRM_DEBUG_DRIVER("preparing flip with no unpin work?\n"); + } + spin_unlock_irqrestore(&dev->event_lock, flags); +} + +static int intel_gen2_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 flip_mask; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 6); + if (ret) + goto err_unpin; + + /* Can't queue multiple flips, so wait for the previous + * one to finish before executing the next. + */ + if (intel_crtc->plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, 0); /* aux display base address, unused */ + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen3_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 flip_mask; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 6); + if (ret) + goto err_unpin; + + if (intel_crtc->plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, MI_NOOP); + + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen4_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + uint32_t pf, pipesrc; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + /* i965+ uses the linear or tiled offsets from the + * Display Registers (which do not change across a page-flip) + * so we need only reprogram the base address. + */ + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0]); + intel_ring_emit(ring, + (obj->gtt_offset + intel_crtc->dspaddr_offset) | + obj->tiling_mode); + + /* XXX Enabling the panel-fitter across page-flip is so far + * untested on non-native modes, so ignore it for now. + * pf = I915_READ(pipe == 0 ? PFA_CTL_1 : PFB_CTL_1) & PF_ENABLE; + */ + pf = 0; + pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; + intel_ring_emit(ring, pf | pipesrc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_gen6_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + uint32_t pf, pipesrc; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + intel_ring_emit(ring, MI_DISPLAY_FLIP | + MI_DISPLAY_FLIP_PLANE(intel_crtc->plane)); + intel_ring_emit(ring, fb->pitches[0] | obj->tiling_mode); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + + /* Contrary to the suggestions in the documentation, + * "Enable Panel Fitter" does not seem to be required when page + * flipping with a non-native mode, and worse causes a normal + * modeset to fail. + * pf = I915_READ(PF_CTL(intel_crtc->pipe)) & PF_ENABLE; + */ + pf = 0; + pipesrc = I915_READ(PIPESRC(intel_crtc->pipe)) & 0x0fff0fff; + intel_ring_emit(ring, pf | pipesrc); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +/* + * On gen7 we currently use the blit ring because (in early silicon at least) + * the render ring doesn't give us interrpts for page flip completion, which + * means clients will hang after the first flip is queued. Fortunately the + * blit ring generates interrupts properly, so use it instead. + */ +static int intel_gen7_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; + uint32_t plane_bit = 0; + int ret; + + ret = intel_pin_and_fence_fb_obj(dev, obj, ring); + if (ret) + goto err; + + switch(intel_crtc->plane) { + case PLANE_A: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_A; + break; + case PLANE_B: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_B; + break; + case PLANE_C: + plane_bit = MI_DISPLAY_FLIP_IVB_PLANE_C; + break; + default: + WARN_ONCE(1, "unknown plane in flip command\n"); + ret = -ENODEV; + goto err_unpin; + } + + ret = intel_ring_begin(ring, 4); + if (ret) + goto err_unpin; + + intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit); + intel_ring_emit(ring, (fb->pitches[0] | obj->tiling_mode)); + intel_ring_emit(ring, obj->gtt_offset + intel_crtc->dspaddr_offset); + intel_ring_emit(ring, (MI_NOOP)); + intel_ring_advance(ring); + return 0; + +err_unpin: + intel_unpin_fb_obj(obj); +err: + return ret; +} + +static int intel_default_queue_flip(struct drm_device *dev, + struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj) +{ + return -ENODEV; +} + +static int intel_crtc_page_flip(struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_pending_vblank_event *event) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_unpin_work *work; + unsigned long flags; + int ret; + + /* Can't change pixel format via MI display flips. */ + if (fb->pixel_format != crtc->fb->pixel_format) + return -EINVAL; + + /* + * TILEOFF/LINOFF registers can't be changed via MI display flips. + * Note that pitch changes could also affect these register. + */ + if (INTEL_INFO(dev)->gen > 3 && + (fb->offsets[0] != crtc->fb->offsets[0] || + fb->pitches[0] != crtc->fb->pitches[0])) + return -EINVAL; + + work = kzalloc(sizeof *work, GFP_KERNEL); + if (work == NULL) + return -ENOMEM; + + work->event = event; + work->crtc = crtc; + intel_fb = to_intel_framebuffer(crtc->fb); + work->old_fb_obj = intel_fb->obj; + INIT_WORK(&work->work, intel_unpin_work_fn); + + ret = drm_vblank_get(dev, intel_crtc->pipe); + if (ret) + goto free_work; + + /* We borrow the event spin lock for protecting unpin_work */ + spin_lock_irqsave(&dev->event_lock, flags); + if (intel_crtc->unpin_work) { + spin_unlock_irqrestore(&dev->event_lock, flags); + kfree(work); + drm_vblank_put(dev, intel_crtc->pipe); + + DRM_DEBUG_DRIVER("flip queue: crtc already busy\n"); + return -EBUSY; + } + intel_crtc->unpin_work = work; + spin_unlock_irqrestore(&dev->event_lock, flags); + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + if (atomic_read(&intel_crtc->unpin_work_count) >= 2) + flush_workqueue(dev_priv->wq); + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto cleanup; + + /* Reference the objects for the scheduled work. */ + drm_gem_object_reference(&work->old_fb_obj->base); + drm_gem_object_reference(&obj->base); + + crtc->fb = fb; + + work->pending_flip_obj = obj; + + work->enable_stall_check = true; + + /* Block clients from rendering to the new back buffer until + * the flip occurs and the object is no longer visible. + */ + atomic_add(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + atomic_inc(&intel_crtc->unpin_work_count); + + ret = dev_priv->display.queue_flip(dev, crtc, fb, obj); + if (ret) + goto cleanup_pending; + + intel_disable_fbc(dev); + intel_mark_fb_busy(obj); + mutex_unlock(&dev->struct_mutex); + + trace_i915_flip_request(intel_crtc->plane, obj); + + return 0; + +cleanup_pending: + atomic_dec(&intel_crtc->unpin_work_count); + atomic_sub(1 << intel_crtc->plane, &work->old_fb_obj->pending_flip); + drm_gem_object_unreference(&work->old_fb_obj->base); + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + +cleanup: + spin_lock_irqsave(&dev->event_lock, flags); + intel_crtc->unpin_work = NULL; + spin_unlock_irqrestore(&dev->event_lock, flags); + + drm_vblank_put(dev, intel_crtc->pipe); +free_work: + kfree(work); + + return ret; +} + +static struct drm_crtc_helper_funcs intel_helper_funcs = { + .mode_set_base_atomic = intel_pipe_set_base_atomic, + .load_lut = intel_crtc_load_lut, + .disable = intel_crtc_noop, +}; + +bool intel_encoder_check_is_cloned(struct intel_encoder *encoder) +{ + struct intel_encoder *other_encoder; + struct drm_crtc *crtc = &encoder->new_crtc->base; + + if (WARN_ON(!crtc)) + return false; + + list_for_each_entry(other_encoder, + &crtc->dev->mode_config.encoder_list, + base.head) { + + if (&other_encoder->new_crtc->base != crtc || + encoder == other_encoder) + continue; + else + return true; + } + + return false; +} + +static bool intel_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; +} + +/** + * intel_modeset_update_staged_output_state + * + * Updates the staged output configuration state, e.g. after we've read out the + * current hw state. + */ +static void intel_modeset_update_staged_output_state(struct drm_device *dev) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + connector->new_encoder = + to_intel_encoder(connector->base.encoder); + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + encoder->new_crtc = + to_intel_crtc(encoder->base.crtc); + } +} + +/** + * intel_modeset_commit_output_state + * + * This function copies the stage display pipe configuration to the real one. + */ +static void intel_modeset_commit_output_state(struct drm_device *dev) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + connector->base.encoder = &connector->new_encoder->base; + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + encoder->base.crtc = &encoder->new_crtc->base; + } +} + +static struct drm_display_mode * +intel_modeset_adjusted_mode(struct drm_crtc *crtc, + struct drm_display_mode *mode) +{ + struct drm_device *dev = crtc->dev; + struct drm_display_mode *adjusted_mode; + struct drm_encoder_helper_funcs *encoder_funcs; + struct intel_encoder *encoder; + + adjusted_mode = drm_mode_duplicate(dev, mode); + if (!adjusted_mode) + return ERR_PTR(-ENOMEM); + + /* Pass our mode to the connectors and the CRTC to give them a chance to + * adjust it according to limitations or connector properties, and also + * a chance to reject the mode entirely. + */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + + if (&encoder->new_crtc->base != crtc) + continue; + encoder_funcs = encoder->base.helper_private; + if (!(encoder_funcs->mode_fixup(&encoder->base, mode, + adjusted_mode))) { + DRM_DEBUG_KMS("Encoder fixup failed\n"); + goto fail; + } + } + + if (!(intel_crtc_mode_fixup(crtc, mode, adjusted_mode))) { + DRM_DEBUG_KMS("CRTC fixup failed\n"); + goto fail; + } + DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.id); + + return adjusted_mode; +fail: + drm_mode_destroy(dev, adjusted_mode); + return ERR_PTR(-EINVAL); +} + +/* Computes which crtcs are affected and sets the relevant bits in the mask. For + * simplicity we use the crtc's pipe number (because it's easier to obtain). */ +static void +intel_modeset_affected_pipes(struct drm_crtc *crtc, unsigned *modeset_pipes, + unsigned *prepare_pipes, unsigned *disable_pipes) +{ + struct intel_crtc *intel_crtc; + struct drm_device *dev = crtc->dev; + struct intel_encoder *encoder; + struct intel_connector *connector; + struct drm_crtc *tmp_crtc; + + *disable_pipes = *modeset_pipes = *prepare_pipes = 0; + + /* Check which crtcs have changed outputs connected to them, these need + * to be part of the prepare_pipes mask. We don't (yet) support global + * modeset across multiple crtcs, so modeset_pipes will only have one + * bit set at most. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->base.encoder == &connector->new_encoder->base) + continue; + + if (connector->base.encoder) { + tmp_crtc = connector->base.encoder->crtc; + + *prepare_pipes |= 1 << to_intel_crtc(tmp_crtc)->pipe; + } + + if (connector->new_encoder) + *prepare_pipes |= + 1 << connector->new_encoder->new_crtc->pipe; + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->base.crtc == &encoder->new_crtc->base) + continue; + + if (encoder->base.crtc) { + tmp_crtc = encoder->base.crtc; + + *prepare_pipes |= 1 << to_intel_crtc(tmp_crtc)->pipe; + } + + if (encoder->new_crtc) + *prepare_pipes |= 1 << encoder->new_crtc->pipe; + } + + /* Check for any pipes that will be fully disabled ... */ + list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, + base.head) { + bool used = false; + + /* Don't try to disable disabled crtcs. */ + if (!intel_crtc->base.enabled) + continue; + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->new_crtc == intel_crtc) + used = true; + } + + if (!used) + *disable_pipes |= 1 << intel_crtc->pipe; + } + + + /* set_mode is also used to update properties on life display pipes. */ + intel_crtc = to_intel_crtc(crtc); + if (crtc->enabled) + *prepare_pipes |= 1 << intel_crtc->pipe; + + /* We only support modeset on one single crtc, hence we need to do that + * only for the passed in crtc iff we change anything else than just + * disable crtcs. + * + * This is actually not true, to be fully compatible with the old crtc + * helper we automatically disable _any_ output (i.e. doesn't need to be + * connected to the crtc we're modesetting on) if it's disconnected. + * Which is a rather nutty api (since changed the output configuration + * without userspace's explicit request can lead to confusion), but + * alas. Hence we currently need to modeset on all pipes we prepare. */ + if (*prepare_pipes) + *modeset_pipes = *prepare_pipes; + + /* ... and mask these out. */ + *modeset_pipes &= ~(*disable_pipes); + *prepare_pipes &= ~(*disable_pipes); +} + +static bool intel_crtc_in_use(struct drm_crtc *crtc) +{ + struct drm_encoder *encoder; + struct drm_device *dev = crtc->dev; + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) + if (encoder->crtc == crtc) + return true; + + return false; +} + +static void +intel_modeset_update_state(struct drm_device *dev, unsigned prepare_pipes) +{ + struct intel_encoder *intel_encoder; + struct intel_crtc *intel_crtc; + struct drm_connector *connector; + + list_for_each_entry(intel_encoder, &dev->mode_config.encoder_list, + base.head) { + if (!intel_encoder->base.crtc) + continue; + + intel_crtc = to_intel_crtc(intel_encoder->base.crtc); + + if (prepare_pipes & (1 << intel_crtc->pipe)) + intel_encoder->connectors_active = false; + } + + intel_modeset_commit_output_state(dev); + + /* Update computed state. */ + list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, + base.head) { + intel_crtc->base.enabled = intel_crtc_in_use(&intel_crtc->base); + } + + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + if (!connector->encoder || !connector->encoder->crtc) + continue; + + intel_crtc = to_intel_crtc(connector->encoder->crtc); + + if (prepare_pipes & (1 << intel_crtc->pipe)) { + struct drm_property *dpms_property = + dev->mode_config.dpms_property; + + connector->dpms = DRM_MODE_DPMS_ON; + drm_connector_property_set_value(connector, + dpms_property, + DRM_MODE_DPMS_ON); + + intel_encoder = to_intel_encoder(connector->encoder); + intel_encoder->connectors_active = true; + } + } + +} + +#define for_each_intel_crtc_masked(dev, mask, intel_crtc) \ + list_for_each_entry((intel_crtc), \ + &(dev)->mode_config.crtc_list, \ + base.head) \ + if (mask & (1 <<(intel_crtc)->pipe)) \ + +void +intel_modeset_check_state(struct drm_device *dev) +{ + struct intel_crtc *crtc; + struct intel_encoder *encoder; + struct intel_connector *connector; + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + /* This also checks the encoder/connector hw state with the + * ->get_hw_state callbacks. */ + intel_connector_check_state(connector); + + WARN(&connector->new_encoder->base != connector->base.encoder, + "connector's staged encoder doesn't match current encoder\n"); + } + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + bool enabled = false; + bool active = false; + enum pipe pipe, tracked_pipe; + + DRM_DEBUG_KMS("[ENCODER:%d:%s]\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + + WARN(&encoder->new_crtc->base != encoder->base.crtc, + "encoder's stage crtc doesn't match current crtc\n"); + WARN(encoder->connectors_active && !encoder->base.crtc, + "encoder's active_connectors set, but no crtc\n"); + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->base.encoder != &encoder->base) + continue; + enabled = true; + if (connector->base.dpms != DRM_MODE_DPMS_OFF) + active = true; + } + WARN(!!encoder->base.crtc != enabled, + "encoder's enabled state mismatch " + "(expected %i, found %i)\n", + !!encoder->base.crtc, enabled); + WARN(active && !encoder->base.crtc, + "active encoder with no crtc\n"); + + WARN(encoder->connectors_active != active, + "encoder's computed active state doesn't match tracked active state " + "(expected %i, found %i)\n", active, encoder->connectors_active); + + active = encoder->get_hw_state(encoder, &pipe); + WARN(active != encoder->connectors_active, + "encoder's hw state doesn't match sw tracking " + "(expected %i, found %i)\n", + encoder->connectors_active, active); + + if (!encoder->base.crtc) + continue; + + tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe; + WARN(active && pipe != tracked_pipe, + "active encoder's pipe doesn't match" + "(expected %i, found %i)\n", + tracked_pipe, pipe); + + } + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, + base.head) { + bool enabled = false; + bool active = false; + + DRM_DEBUG_KMS("[CRTC:%d]\n", + crtc->base.base.id); + + WARN(crtc->active && !crtc->base.enabled, + "active crtc, but not enabled in sw tracking\n"); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + if (encoder->base.crtc != &crtc->base) + continue; + enabled = true; + if (encoder->connectors_active) + active = true; + } + WARN(active != crtc->active, + "crtc's computed active state doesn't match tracked active state " + "(expected %i, found %i)\n", active, crtc->active); + WARN(enabled != crtc->base.enabled, + "crtc's computed enabled state doesn't match tracked enabled state " + "(expected %i, found %i)\n", enabled, crtc->base.enabled); + + assert_pipe(dev->dev_private, crtc->pipe, crtc->active); + } +} + +bool intel_set_mode(struct drm_crtc *crtc, + struct drm_display_mode *mode, + int x, int y, struct drm_framebuffer *fb) +{ + struct drm_device *dev = crtc->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_display_mode *adjusted_mode, saved_mode, saved_hwmode; + struct intel_crtc *intel_crtc; + unsigned disable_pipes, prepare_pipes, modeset_pipes; + bool ret = true; + + intel_modeset_affected_pipes(crtc, &modeset_pipes, + &prepare_pipes, &disable_pipes); + + DRM_DEBUG_KMS("set mode pipe masks: modeset: %x, prepare: %x, disable: %x\n", + modeset_pipes, prepare_pipes, disable_pipes); + + for_each_intel_crtc_masked(dev, disable_pipes, intel_crtc) + intel_crtc_disable(&intel_crtc->base); + + saved_hwmode = crtc->hwmode; + saved_mode = crtc->mode; + + /* Hack: Because we don't (yet) support global modeset on multiple + * crtcs, we don't keep track of the new mode for more than one crtc. + * Hence simply check whether any bit is set in modeset_pipes in all the + * pieces of code that are not yet converted to deal with mutliple crtcs + * changing their mode at the same time. */ + adjusted_mode = NULL; + if (modeset_pipes) { + adjusted_mode = intel_modeset_adjusted_mode(crtc, mode); + if (IS_ERR(adjusted_mode)) { + return false; + } + } + + for_each_intel_crtc_masked(dev, prepare_pipes, intel_crtc) { + if (intel_crtc->base.enabled) + dev_priv->display.crtc_disable(&intel_crtc->base); + } + + /* crtc->mode is already used by the ->mode_set callbacks, hence we need + * to set it here already despite that we pass it down the callchain. + */ + if (modeset_pipes) + crtc->mode = *mode; + + /* Only after disabling all output pipelines that will be changed can we + * update the the output configuration. */ + intel_modeset_update_state(dev, prepare_pipes); + + if (dev_priv->display.modeset_global_resources) + dev_priv->display.modeset_global_resources(dev); + + /* Set up the DPLL and any encoders state that needs to adjust or depend + * on the DPLL. + */ + for_each_intel_crtc_masked(dev, modeset_pipes, intel_crtc) { + ret = !intel_crtc_mode_set(&intel_crtc->base, + mode, adjusted_mode, + x, y, fb); + if (!ret) + goto done; + } + + /* Now enable the clocks, plane, pipe, and connectors that we set up. */ + for_each_intel_crtc_masked(dev, prepare_pipes, intel_crtc) + dev_priv->display.crtc_enable(&intel_crtc->base); + + if (modeset_pipes) { + /* Store real post-adjustment hardware mode. */ + crtc->hwmode = *adjusted_mode; + + /* Calculate and store various constants which + * are later needed by vblank and swap-completion + * timestamping. They are derived from true hwmode. + */ + drm_calc_timestamping_constants(crtc); + } + + /* FIXME: add subpixel order */ +done: + drm_mode_destroy(dev, adjusted_mode); + if (!ret && crtc->enabled) { + crtc->hwmode = saved_hwmode; + crtc->mode = saved_mode; + } else { + intel_modeset_check_state(dev); + } + + return ret; +} + +#undef for_each_intel_crtc_masked + +static void intel_set_config_free(struct intel_set_config *config) +{ + if (!config) + return; + + kfree(config->save_connector_encoders); + kfree(config->save_encoder_crtcs); + kfree(config); +} + +static int intel_set_config_save_state(struct drm_device *dev, + struct intel_set_config *config) +{ + struct drm_encoder *encoder; + struct drm_connector *connector; + int count; + + config->save_encoder_crtcs = + kcalloc(dev->mode_config.num_encoder, + sizeof(struct drm_crtc *), GFP_KERNEL); + if (!config->save_encoder_crtcs) + return -ENOMEM; + + config->save_connector_encoders = + kcalloc(dev->mode_config.num_connector, + sizeof(struct drm_encoder *), GFP_KERNEL); + if (!config->save_connector_encoders) + return -ENOMEM; + + /* Copy data. Note that driver private data is not affected. + * Should anything bad happen only the expected state is + * restored, not the drivers personal bookkeeping. + */ + count = 0; + list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) { + config->save_encoder_crtcs[count++] = encoder->crtc; + } + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + config->save_connector_encoders[count++] = connector->encoder; + } + + return 0; +} + +static void intel_set_config_restore_state(struct drm_device *dev, + struct intel_set_config *config) +{ + struct intel_encoder *encoder; + struct intel_connector *connector; + int count; + + count = 0; + list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) { + encoder->new_crtc = + to_intel_crtc(config->save_encoder_crtcs[count++]); + } + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) { + connector->new_encoder = + to_intel_encoder(config->save_connector_encoders[count++]); + } +} + +static void +intel_set_config_compute_mode_changes(struct drm_mode_set *set, + struct intel_set_config *config) +{ + + /* We should be able to check here if the fb has the same properties + * and then just flip_or_move it */ + if (set->crtc->fb != set->fb) { + /* If we have no fb then treat it as a full mode set */ + if (set->crtc->fb == NULL) { + DRM_DEBUG_KMS("crtc has no fb, full mode set\n"); + config->mode_changed = true; + } else if (set->fb == NULL) { + config->mode_changed = true; + } else if (set->fb->depth != set->crtc->fb->depth) { + config->mode_changed = true; + } else if (set->fb->bits_per_pixel != + set->crtc->fb->bits_per_pixel) { + config->mode_changed = true; + } else + config->fb_changed = true; + } + + if (set->fb && (set->x != set->crtc->x || set->y != set->crtc->y)) + config->fb_changed = true; + + if (set->mode && !drm_mode_equal(set->mode, &set->crtc->mode)) { + DRM_DEBUG_KMS("modes are different, full mode set\n"); + drm_mode_debug_printmodeline(&set->crtc->mode); + drm_mode_debug_printmodeline(set->mode); + config->mode_changed = true; + } +} + +static int +intel_modeset_stage_output_state(struct drm_device *dev, + struct drm_mode_set *set, + struct intel_set_config *config) +{ + struct drm_crtc *new_crtc; + struct intel_connector *connector; + struct intel_encoder *encoder; + int count, ro; + + /* The upper layers ensure that we either disabl a crtc or have a list + * of connectors. For paranoia, double-check this. */ + WARN_ON(!set->fb && (set->num_connectors != 0)); + WARN_ON(set->fb && (set->num_connectors == 0)); + + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + /* Otherwise traverse passed in connector list and get encoders + * for them. */ + for (ro = 0; ro < set->num_connectors; ro++) { + if (set->connectors[ro] == &connector->base) { + connector->new_encoder = connector->encoder; + break; + } + } + + /* If we disable the crtc, disable all its connectors. Also, if + * the connector is on the changing crtc but not on the new + * connector list, disable it. */ + if ((!set->fb || ro == set->num_connectors) && + connector->base.encoder && + connector->base.encoder->crtc == set->crtc) { + connector->new_encoder = NULL; + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [NOCRTC]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base)); + } + + + if (&connector->new_encoder->base != connector->base.encoder) { + DRM_DEBUG_KMS("encoder changed, full mode switch\n"); + config->mode_changed = true; + } + + /* Disable all disconnected encoders. */ + if (connector->base.status == connector_status_disconnected) + connector->new_encoder = NULL; + } + /* connector->new_encoder is now updated for all connectors. */ + + /* Update crtc of enabled connectors. */ + count = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (!connector->new_encoder) + continue; + + new_crtc = connector->new_encoder->base.crtc; + + for (ro = 0; ro < set->num_connectors; ro++) { + if (set->connectors[ro] == &connector->base) + new_crtc = set->crtc; + } + + /* Make sure the new CRTC will work with the encoder */ + if (!intel_encoder_crtc_ok(&connector->new_encoder->base, + new_crtc)) { + return -EINVAL; + } + connector->encoder->new_crtc = to_intel_crtc(new_crtc); + + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] to [CRTC:%d]\n", + connector->base.base.id, + drm_get_connector_name(&connector->base), + new_crtc->base.id); + } + + /* Check for any encoders that needs to be disabled. */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->new_encoder == encoder) { + WARN_ON(!connector->new_encoder->new_crtc); + + goto next_encoder; + } + } + encoder->new_crtc = NULL; +next_encoder: + /* Only now check for crtc changes so we don't miss encoders + * that will be disabled. */ + if (&encoder->new_crtc->base != encoder->base.crtc) { + DRM_DEBUG_KMS("crtc changed, full mode switch\n"); + config->mode_changed = true; + } + } + /* Now we've also updated encoder->new_crtc for all encoders. */ + + return 0; +} + +static int intel_crtc_set_config(struct drm_mode_set *set) +{ + struct drm_device *dev; + struct drm_mode_set save_set; + struct intel_set_config *config; + int ret; + + BUG_ON(!set); + BUG_ON(!set->crtc); + BUG_ON(!set->crtc->helper_private); + + if (!set->mode) + set->fb = NULL; + + /* The fb helper likes to play gross jokes with ->mode_set_config. + * Unfortunately the crtc helper doesn't do much at all for this case, + * so we have to cope with this madness until the fb helper is fixed up. */ + if (set->fb && set->num_connectors == 0) + return 0; + + if (set->fb) { + DRM_DEBUG_KMS("[CRTC:%d] [FB:%d] #connectors=%d (x y) (%i %i)\n", + set->crtc->base.id, set->fb->base.id, + (int)set->num_connectors, set->x, set->y); + } else { + DRM_DEBUG_KMS("[CRTC:%d] [NOFB]\n", set->crtc->base.id); + } + + dev = set->crtc->dev; + + ret = -ENOMEM; + config = kzalloc(sizeof(*config), GFP_KERNEL); + if (!config) + goto out_config; + + ret = intel_set_config_save_state(dev, config); + if (ret) + goto out_config; + + save_set.crtc = set->crtc; + save_set.mode = &set->crtc->mode; + save_set.x = set->crtc->x; + save_set.y = set->crtc->y; + save_set.fb = set->crtc->fb; + + /* Compute whether we need a full modeset, only an fb base update or no + * change at all. In the future we might also check whether only the + * mode changed, e.g. for LVDS where we only change the panel fitter in + * such cases. */ + intel_set_config_compute_mode_changes(set, config); + + ret = intel_modeset_stage_output_state(dev, set, config); + if (ret) + goto fail; + + if (config->mode_changed) { + if (set->mode) { + DRM_DEBUG_KMS("attempting to set mode from" + " userspace\n"); + drm_mode_debug_printmodeline(set->mode); + } + + if (!intel_set_mode(set->crtc, set->mode, + set->x, set->y, set->fb)) { + DRM_ERROR("failed to set mode on [CRTC:%d]\n", + set->crtc->base.id); + ret = -EINVAL; + goto fail; + } + } else if (config->fb_changed) { + ret = intel_pipe_set_base(set->crtc, + set->x, set->y, set->fb); + } + + intel_set_config_free(config); + + return 0; + +fail: + intel_set_config_restore_state(dev, config); + + /* Try to restore the config */ + if (config->mode_changed && + !intel_set_mode(save_set.crtc, save_set.mode, + save_set.x, save_set.y, save_set.fb)) + DRM_ERROR("failed to restore config after modeset failure\n"); + +out_config: + intel_set_config_free(config); + return ret; +} + +static const struct drm_crtc_funcs intel_crtc_funcs = { + .cursor_set = intel_crtc_cursor_set, + .cursor_move = intel_crtc_cursor_move, + .gamma_set = intel_crtc_gamma_set, + .set_config = intel_crtc_set_config, + .destroy = intel_crtc_destroy, + .page_flip = intel_crtc_page_flip, +}; + +static void intel_cpu_pll_init(struct drm_device *dev) +{ + if (IS_HASWELL(dev)) + intel_ddi_pll_init(dev); +} + +static void intel_pch_pll_init(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + if (dev_priv->num_pch_pll == 0) { + DRM_DEBUG_KMS("No PCH PLLs on this hardware, skipping initialisation\n"); + return; + } + + for (i = 0; i < dev_priv->num_pch_pll; i++) { + dev_priv->pch_plls[i].pll_reg = _PCH_DPLL(i); + dev_priv->pch_plls[i].fp0_reg = _PCH_FP0(i); + dev_priv->pch_plls[i].fp1_reg = _PCH_FP1(i); + } +} + +static void intel_crtc_init(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc; + int i; + + intel_crtc = kzalloc(sizeof(struct intel_crtc) + (INTELFB_CONN_LIMIT * sizeof(struct drm_connector *)), GFP_KERNEL); + if (intel_crtc == NULL) + return; + + drm_crtc_init(dev, &intel_crtc->base, &intel_crtc_funcs); + + drm_mode_crtc_set_gamma_size(&intel_crtc->base, 256); + for (i = 0; i < 256; i++) { + intel_crtc->lut_r[i] = i; + intel_crtc->lut_g[i] = i; + intel_crtc->lut_b[i] = i; + } + + /* Swap pipes & planes for FBC on pre-965 */ + intel_crtc->pipe = pipe; + intel_crtc->plane = pipe; + intel_crtc->cpu_transcoder = pipe; + if (IS_MOBILE(dev) && IS_GEN3(dev)) { + DRM_DEBUG_KMS("swapping pipes & planes for FBC\n"); + intel_crtc->plane = !pipe; + } + + BUG_ON(pipe >= ARRAY_SIZE(dev_priv->plane_to_crtc_mapping) || + dev_priv->plane_to_crtc_mapping[intel_crtc->plane] != NULL); + dev_priv->plane_to_crtc_mapping[intel_crtc->plane] = &intel_crtc->base; + dev_priv->pipe_to_crtc_mapping[intel_crtc->pipe] = &intel_crtc->base; + + intel_crtc->bpp = 24; /* default for pre-Ironlake */ + + drm_crtc_helper_add(&intel_crtc->base, &intel_helper_funcs); +} + +int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_get_pipe_from_crtc_id *pipe_from_crtc_id = data; + struct drm_mode_object *drmmode_obj; + struct intel_crtc *crtc; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + drmmode_obj = drm_mode_object_find(dev, pipe_from_crtc_id->crtc_id, + DRM_MODE_OBJECT_CRTC); + + if (!drmmode_obj) { + DRM_ERROR("no such CRTC id\n"); + return -EINVAL; + } + + crtc = to_intel_crtc(obj_to_crtc(drmmode_obj)); + pipe_from_crtc_id->pipe = crtc->pipe; + + return 0; +} + +static int intel_encoder_clones(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_encoder *source_encoder; + int index_mask = 0; + int entry = 0; + + list_for_each_entry(source_encoder, + &dev->mode_config.encoder_list, base.head) { + + if (encoder == source_encoder) + index_mask |= (1 << entry); + + /* Intel hw has only one MUX where enocoders could be cloned. */ + if (encoder->cloneable && source_encoder->cloneable) + index_mask |= (1 << entry); + + entry++; + } + + return index_mask; +} + +static bool has_edp_a(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!IS_MOBILE(dev)) + return false; + + if ((I915_READ(DP_A) & DP_DETECTED) == 0) + return false; + + if (IS_GEN5(dev) && + (I915_READ(ILK_DISPLAY_CHICKEN_FUSES) & ILK_eDP_A_DISABLE)) + return false; + + return true; +} + +static void intel_setup_outputs(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *encoder; + bool dpd_is_edp = false; + bool has_lvds; + + has_lvds = intel_lvds_init(dev); + if (!has_lvds && !HAS_PCH_SPLIT(dev)) { + /* disable the panel fitter on everything but LVDS */ + I915_WRITE(PFIT_CONTROL, 0); + } + + if (!(IS_HASWELL(dev) && + (I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES))) + intel_crt_init(dev); + + if (IS_HASWELL(dev)) { + int found; + + /* Haswell uses DDI functions to detect digital outputs */ + found = I915_READ(DDI_BUF_CTL_A) & DDI_INIT_DISPLAY_DETECTED; + /* DDI A only supports eDP */ + if (found) + intel_ddi_init(dev, PORT_A); + + /* DDI B, C and D detection is indicated by the SFUSE_STRAP + * register */ + found = I915_READ(SFUSE_STRAP); + + if (found & SFUSE_STRAP_DDIB_DETECTED) + intel_ddi_init(dev, PORT_B); + if (found & SFUSE_STRAP_DDIC_DETECTED) + intel_ddi_init(dev, PORT_C); + if (found & SFUSE_STRAP_DDID_DETECTED) + intel_ddi_init(dev, PORT_D); + } else if (HAS_PCH_SPLIT(dev)) { + int found; + dpd_is_edp = intel_dpd_is_edp(dev); + + if (has_edp_a(dev)) + intel_dp_init(dev, DP_A, PORT_A); + + if (I915_READ(HDMIB) & PORT_DETECTED) { + /* PCH SDVOB multiplex with HDMIB */ + found = intel_sdvo_init(dev, PCH_SDVOB, true); + if (!found) + intel_hdmi_init(dev, HDMIB, PORT_B); + if (!found && (I915_READ(PCH_DP_B) & DP_DETECTED)) + intel_dp_init(dev, PCH_DP_B, PORT_B); + } + + if (I915_READ(HDMIC) & PORT_DETECTED) + intel_hdmi_init(dev, HDMIC, PORT_C); + + if (!dpd_is_edp && I915_READ(HDMID) & PORT_DETECTED) + intel_hdmi_init(dev, HDMID, PORT_D); + + if (I915_READ(PCH_DP_C) & DP_DETECTED) + intel_dp_init(dev, PCH_DP_C, PORT_C); + + if (I915_READ(PCH_DP_D) & DP_DETECTED) + intel_dp_init(dev, PCH_DP_D, PORT_D); + } else if (IS_VALLEYVIEW(dev)) { + int found; + + /* Check for built-in panel first. Shares lanes with HDMI on SDVOC */ + if (I915_READ(DP_C) & DP_DETECTED) + intel_dp_init(dev, DP_C, PORT_C); + + if (I915_READ(SDVOB) & PORT_DETECTED) { + /* SDVOB multiplex with HDMIB */ + found = intel_sdvo_init(dev, SDVOB, true); + if (!found) + intel_hdmi_init(dev, SDVOB, PORT_B); + if (!found && (I915_READ(DP_B) & DP_DETECTED)) + intel_dp_init(dev, DP_B, PORT_B); + } + + if (I915_READ(SDVOC) & PORT_DETECTED) + intel_hdmi_init(dev, SDVOC, PORT_C); + + } else if (SUPPORTS_DIGITAL_OUTPUTS(dev)) { + bool found = false; + + if (I915_READ(SDVOB) & SDVO_DETECTED) { + DRM_DEBUG_KMS("probing SDVOB\n"); + found = intel_sdvo_init(dev, SDVOB, true); + if (!found && SUPPORTS_INTEGRATED_HDMI(dev)) { + DRM_DEBUG_KMS("probing HDMI on SDVOB\n"); + intel_hdmi_init(dev, SDVOB, PORT_B); + } + + if (!found && SUPPORTS_INTEGRATED_DP(dev)) { + DRM_DEBUG_KMS("probing DP_B\n"); + intel_dp_init(dev, DP_B, PORT_B); + } + } + + /* Before G4X SDVOC doesn't have its own detect register */ + + if (I915_READ(SDVOB) & SDVO_DETECTED) { + DRM_DEBUG_KMS("probing SDVOC\n"); + found = intel_sdvo_init(dev, SDVOC, false); + } + + if (!found && (I915_READ(SDVOC) & SDVO_DETECTED)) { + + if (SUPPORTS_INTEGRATED_HDMI(dev)) { + DRM_DEBUG_KMS("probing HDMI on SDVOC\n"); + intel_hdmi_init(dev, SDVOC, PORT_C); + } + if (SUPPORTS_INTEGRATED_DP(dev)) { + DRM_DEBUG_KMS("probing DP_C\n"); + intel_dp_init(dev, DP_C, PORT_C); + } + } + + if (SUPPORTS_INTEGRATED_DP(dev) && + (I915_READ(DP_D) & DP_DETECTED)) { + DRM_DEBUG_KMS("probing DP_D\n"); + intel_dp_init(dev, DP_D, PORT_D); + } + } else if (IS_GEN2(dev)) + intel_dvo_init(dev); + + if (SUPPORTS_TV(dev)) + intel_tv_init(dev); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) { + encoder->base.possible_crtcs = encoder->crtc_mask; + encoder->base.possible_clones = + intel_encoder_clones(encoder); + } + + intel_init_pch_refclk(dev); + + drm_helper_move_panel_connectors_to_head(dev); +} + +static void intel_user_framebuffer_destroy(struct drm_framebuffer *fb) +{ + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + + drm_framebuffer_cleanup(fb); + drm_gem_object_unreference_unlocked(&intel_fb->obj->base); + + kfree(intel_fb); +} + +static int intel_user_framebuffer_create_handle(struct drm_framebuffer *fb, + struct drm_file *file, + unsigned int *handle) +{ + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + + return drm_gem_handle_create(file, &obj->base, handle); +} + +static const struct drm_framebuffer_funcs intel_fb_funcs = { + .destroy = intel_user_framebuffer_destroy, + .create_handle = intel_user_framebuffer_create_handle, +}; + +int intel_framebuffer_init(struct drm_device *dev, + struct intel_framebuffer *intel_fb, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj) +{ + int ret; + + if (obj->tiling_mode == I915_TILING_Y) + return -EINVAL; + + if (mode_cmd->pitches[0] & 63) + return -EINVAL; + + /* FIXME <= Gen4 stride limits are bit unclear */ + if (mode_cmd->pitches[0] > 32768) + return -EINVAL; + + if (obj->tiling_mode != I915_TILING_NONE && + mode_cmd->pitches[0] != obj->stride) + return -EINVAL; + + /* Reject formats not supported by any plane early. */ + switch (mode_cmd->pixel_format) { + case DRM_FORMAT_C8: + case DRM_FORMAT_RGB565: + case DRM_FORMAT_XRGB8888: + case DRM_FORMAT_ARGB8888: + break; + case DRM_FORMAT_XRGB1555: + case DRM_FORMAT_ARGB1555: + if (INTEL_INFO(dev)->gen > 3) + return -EINVAL; + break; + case DRM_FORMAT_XBGR8888: + case DRM_FORMAT_ABGR8888: + case DRM_FORMAT_XRGB2101010: + case DRM_FORMAT_ARGB2101010: + case DRM_FORMAT_XBGR2101010: + case DRM_FORMAT_ABGR2101010: + if (INTEL_INFO(dev)->gen < 4) + return -EINVAL; + break; + case DRM_FORMAT_YUYV: + case DRM_FORMAT_UYVY: + case DRM_FORMAT_YVYU: + case DRM_FORMAT_VYUY: + if (INTEL_INFO(dev)->gen < 6) + return -EINVAL; + break; + default: + DRM_DEBUG_KMS("unsupported pixel format 0x%08x\n", mode_cmd->pixel_format); + return -EINVAL; + } + + /* FIXME need to adjust LINOFF/TILEOFF accordingly. */ + if (mode_cmd->offsets[0] != 0) + return -EINVAL; + + ret = drm_framebuffer_init(dev, &intel_fb->base, &intel_fb_funcs); + if (ret) { + DRM_ERROR("framebuffer init failed %d\n", ret); + return ret; + } + + drm_helper_mode_fill_fb_struct(&intel_fb->base, mode_cmd); + intel_fb->obj = obj; + return 0; +} + +static struct drm_framebuffer * +intel_user_framebuffer_create(struct drm_device *dev, + struct drm_file *filp, + struct drm_mode_fb_cmd2 *mode_cmd) +{ + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, filp, + mode_cmd->handles[0])); + if (&obj->base == NULL) + return ERR_PTR(-ENOENT); + + return intel_framebuffer_create(dev, mode_cmd, obj); +} + +static const struct drm_mode_config_funcs intel_mode_funcs = { + .fb_create = intel_user_framebuffer_create, + .output_poll_changed = intel_fb_output_poll_changed, +}; + +/* Set up chip specific display functions */ +static void intel_init_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* We always want a DPMS function */ + if (IS_HASWELL(dev)) { + dev_priv->display.crtc_mode_set = haswell_crtc_mode_set; + dev_priv->display.crtc_enable = haswell_crtc_enable; + dev_priv->display.crtc_disable = haswell_crtc_disable; + dev_priv->display.off = haswell_crtc_off; + dev_priv->display.update_plane = ironlake_update_plane; + } else if (HAS_PCH_SPLIT(dev)) { + dev_priv->display.crtc_mode_set = ironlake_crtc_mode_set; + dev_priv->display.crtc_enable = ironlake_crtc_enable; + dev_priv->display.crtc_disable = ironlake_crtc_disable; + dev_priv->display.off = ironlake_crtc_off; + dev_priv->display.update_plane = ironlake_update_plane; + } else { + dev_priv->display.crtc_mode_set = i9xx_crtc_mode_set; + dev_priv->display.crtc_enable = i9xx_crtc_enable; + dev_priv->display.crtc_disable = i9xx_crtc_disable; + dev_priv->display.off = i9xx_crtc_off; + dev_priv->display.update_plane = i9xx_update_plane; + } + + /* Returns the core display clock speed */ + if (IS_VALLEYVIEW(dev)) + dev_priv->display.get_display_clock_speed = + valleyview_get_display_clock_speed; + else if (IS_I945G(dev) || (IS_G33(dev) && !IS_PINEVIEW_M(dev))) + dev_priv->display.get_display_clock_speed = + i945_get_display_clock_speed; + else if (IS_I915G(dev)) + dev_priv->display.get_display_clock_speed = + i915_get_display_clock_speed; + else if (IS_I945GM(dev) || IS_845G(dev) || IS_PINEVIEW_M(dev)) + dev_priv->display.get_display_clock_speed = + i9xx_misc_get_display_clock_speed; + else if (IS_I915GM(dev)) + dev_priv->display.get_display_clock_speed = + i915gm_get_display_clock_speed; + else if (IS_I865G(dev)) + dev_priv->display.get_display_clock_speed = + i865_get_display_clock_speed; + else if (IS_I85X(dev)) + dev_priv->display.get_display_clock_speed = + i855_get_display_clock_speed; + else /* 852, 830 */ + dev_priv->display.get_display_clock_speed = + i830_get_display_clock_speed; + + if (HAS_PCH_SPLIT(dev)) { + if (IS_GEN5(dev)) { + dev_priv->display.fdi_link_train = ironlake_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + } else if (IS_GEN6(dev)) { + dev_priv->display.fdi_link_train = gen6_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + } else if (IS_IVYBRIDGE(dev)) { + /* FIXME: detect B0+ stepping and use auto training */ + dev_priv->display.fdi_link_train = ivb_manual_fdi_link_train; + dev_priv->display.write_eld = ironlake_write_eld; + dev_priv->display.modeset_global_resources = + ivb_modeset_global_resources; + } else if (IS_HASWELL(dev)) { + dev_priv->display.fdi_link_train = hsw_fdi_link_train; + dev_priv->display.write_eld = haswell_write_eld; + } else + dev_priv->display.update_wm = NULL; + } else if (IS_G4X(dev)) { + dev_priv->display.write_eld = g4x_write_eld; + } + + /* Default just returns -ENODEV to indicate unsupported */ + dev_priv->display.queue_flip = intel_default_queue_flip; + + switch (INTEL_INFO(dev)->gen) { + case 2: + dev_priv->display.queue_flip = intel_gen2_queue_flip; + break; + + case 3: + dev_priv->display.queue_flip = intel_gen3_queue_flip; + break; + + case 4: + case 5: + dev_priv->display.queue_flip = intel_gen4_queue_flip; + break; + + case 6: + dev_priv->display.queue_flip = intel_gen6_queue_flip; + break; + case 7: + dev_priv->display.queue_flip = intel_gen7_queue_flip; + break; + } +} + +/* + * Some BIOSes insist on assuming the GPU's pipe A is enabled at suspend, + * resume, or other times. This quirk makes sure that's the case for + * affected systems. + */ +static void quirk_pipea_force(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->quirks |= QUIRK_PIPEA_FORCE; + DRM_INFO("applying pipe a force quirk\n"); +} + +/* + * Some machines (Lenovo U160) do not work with SSC on LVDS for some reason + */ +static void quirk_ssc_force_disable(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_LVDS_SSC_DISABLE; + DRM_INFO("applying lvds SSC disable quirk\n"); +} + +/* + * A machine (e.g. Acer Aspire 5734Z) may need to invert the panel backlight + * brightness value + */ +static void quirk_invert_brightness(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + dev_priv->quirks |= QUIRK_INVERT_BRIGHTNESS; + DRM_INFO("applying inverted panel brightness quirk\n"); +} + +struct intel_quirk { + int device; + int subsystem_vendor; + int subsystem_device; + void (*hook)(struct drm_device *dev); +}; + +/* For systems that don't have a meaningful PCI subdevice/subvendor ID */ +struct intel_dmi_quirk { + void (*hook)(struct drm_device *dev); + const struct dmi_system_id (*dmi_id_list)[]; +}; + +static int intel_dmi_reverse_brightness(const struct dmi_system_id *id) +{ + DRM_INFO("Backlight polarity reversed on %s\n", id->ident); + return 1; +} + +static const struct intel_dmi_quirk intel_dmi_quirks[] = { + { + .dmi_id_list = &(const struct dmi_system_id[]) { + { + .callback = intel_dmi_reverse_brightness, + .ident = "NCR Corporation", + .matches = {DMI_MATCH(DMI_SYS_VENDOR, "NCR Corporation"), + DMI_MATCH(DMI_PRODUCT_NAME, ""), + }, + }, + { } /* terminating entry */ + }, + .hook = quirk_invert_brightness, + }, +}; + +static struct intel_quirk intel_quirks[] = { + /* HP Mini needs pipe A force quirk (LP: #322104) */ + { 0x27ae, 0x103c, 0x361a, quirk_pipea_force }, + + /* Toshiba Protege R-205, S-209 needs pipe A force quirk */ + { 0x2592, 0x1179, 0x0001, quirk_pipea_force }, + + /* ThinkPad T60 needs pipe A force quirk (bug #16494) */ + { 0x2782, 0x17aa, 0x201a, quirk_pipea_force }, + + /* 830/845 need to leave pipe A & dpll A up */ + { 0x2562, PCI_ANY_ID, PCI_ANY_ID, quirk_pipea_force }, + { 0x3577, PCI_ANY_ID, PCI_ANY_ID, quirk_pipea_force }, + + /* Lenovo U160 cannot use SSC on LVDS */ + { 0x0046, 0x17aa, 0x3920, quirk_ssc_force_disable }, + + /* Sony Vaio Y cannot use SSC on LVDS */ + { 0x0046, 0x104d, 0x9076, quirk_ssc_force_disable }, + + /* Acer Aspire 5734Z must invert backlight brightness */ + { 0x2a42, 0x1025, 0x0459, quirk_invert_brightness }, +}; + +static void intel_init_quirks(struct drm_device *dev) +{ + struct pci_dev *d = dev->pdev; + int i; + + for (i = 0; i < ARRAY_SIZE(intel_quirks); i++) { + struct intel_quirk *q = &intel_quirks[i]; + + if (d->device == q->device && + (d->subsystem_vendor == q->subsystem_vendor || + q->subsystem_vendor == PCI_ANY_ID) && + (d->subsystem_device == q->subsystem_device || + q->subsystem_device == PCI_ANY_ID)) + q->hook(dev); + } + for (i = 0; i < ARRAY_SIZE(intel_dmi_quirks); i++) { + if (dmi_check_system(*intel_dmi_quirks[i].dmi_id_list) != 0) + intel_dmi_quirks[i].hook(dev); + } +} + +/* Disable the VGA plane that we never use */ +static void i915_disable_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u8 sr1; + u32 vga_reg; + + if (HAS_PCH_SPLIT(dev)) + vga_reg = CPU_VGACNTRL; + else + vga_reg = VGACNTRL; + + vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO); + outb(SR01, VGA_SR_INDEX); + sr1 = inb(VGA_SR_DATA); + outb(sr1 | 1<<5, VGA_SR_DATA); + vga_put(dev->pdev, VGA_RSRC_LEGACY_IO); + udelay(300); + + I915_WRITE(vga_reg, VGA_DISP_DISABLE); + POSTING_READ(vga_reg); +} + +void intel_modeset_init_hw(struct drm_device *dev) +{ + /* We attempt to init the necessary power wells early in the initialization + * time, so the subsystems that expect power to be enabled can work. + */ + intel_init_power_wells(dev); + + intel_prepare_ddi(dev); + + intel_init_clock_gating(dev); + + mutex_lock(&dev->struct_mutex); + intel_enable_gt_powersave(dev); + mutex_unlock(&dev->struct_mutex); +} + +void intel_modeset_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i, ret; + + drm_mode_config_init(dev); + + dev->mode_config.min_width = 0; + dev->mode_config.min_height = 0; + + dev->mode_config.preferred_depth = 24; + dev->mode_config.prefer_shadow = 1; + + dev->mode_config.funcs = &intel_mode_funcs; + + intel_init_quirks(dev); + + intel_init_pm(dev); + + intel_init_display(dev); + + if (IS_GEN2(dev)) { + dev->mode_config.max_width = 2048; + dev->mode_config.max_height = 2048; + } else if (IS_GEN3(dev)) { + dev->mode_config.max_width = 4096; + dev->mode_config.max_height = 4096; + } else { + dev->mode_config.max_width = 8192; + dev->mode_config.max_height = 8192; + } + dev->mode_config.fb_base = dev_priv->mm.gtt_base_addr; + + DRM_DEBUG_KMS("%d display pipe%s available.\n", + dev_priv->num_pipe, dev_priv->num_pipe > 1 ? "s" : ""); + + for (i = 0; i < dev_priv->num_pipe; i++) { + intel_crtc_init(dev, i); + ret = intel_plane_init(dev, i); + if (ret) + DRM_DEBUG_KMS("plane %d init failed: %d\n", i, ret); + } + + intel_cpu_pll_init(dev); + intel_pch_pll_init(dev); + + /* Just disable it once at startup */ + i915_disable_vga(dev); + intel_setup_outputs(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; + struct drm_connector *crt = NULL; + struct intel_load_detect_pipe load_detect_temp; + + /* We can't just switch on the pipe A, we need to set things up with a + * proper mode and output configuration. As a gross hack, enable pipe A + * by enabling the load detect pipe once. */ + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->encoder->type == INTEL_OUTPUT_ANALOG) { + crt = &connector->base; + break; + } + } + + if (!crt) + return; + + if (intel_get_load_detect_pipe(crt, NULL, &load_detect_temp)) + intel_release_load_detect_pipe(crt, &load_detect_temp); + + +} + +static bool +intel_check_plane_mapping(struct intel_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->base.dev->dev_private; + u32 reg, val; + + if (dev_priv->num_pipe == 1) + return true; + + reg = DSPCNTR(!crtc->plane); + val = I915_READ(reg); + + if ((val & DISPLAY_PLANE_ENABLE) && + (!!(val & DISPPLANE_SEL_PIPE_MASK) == crtc->pipe)) + return false; + + return true; +} + +static void intel_sanitize_crtc(struct intel_crtc *crtc) +{ + struct drm_device *dev = crtc->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 reg; + + /* Clear any frame start delays used for debugging left by the BIOS */ + reg = PIPECONF(crtc->cpu_transcoder); + I915_WRITE(reg, I915_READ(reg) & ~PIPECONF_FRAME_START_DELAY_MASK); + + /* We need to sanitize the plane -> pipe mapping first because this will + * disable the crtc (and hence change the state) if it is wrong. Note + * that gen4+ has a fixed plane -> pipe mapping. */ + if (INTEL_INFO(dev)->gen < 4 && !intel_check_plane_mapping(crtc)) { + struct intel_connector *connector; + bool plane; + + DRM_DEBUG_KMS("[CRTC:%d] wrong plane connection detected!\n", + crtc->base.base.id); + + /* Pipe has the wrong plane attached and the plane is active. + * Temporarily change the plane mapping and disable everything + * ... */ + plane = crtc->plane; + crtc->plane = !plane; + dev_priv->display.crtc_disable(&crtc->base); + crtc->plane = plane; + + /* ... and break all links. */ + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->encoder->base.crtc != &crtc->base) + continue; + + intel_connector_break_all_links(connector); + } + + WARN_ON(crtc->active); + crtc->base.enabled = false; + } + + if (dev_priv->quirks & QUIRK_PIPEA_FORCE && + crtc->pipe == PIPE_A && !crtc->active) { + /* BIOS forgot to enable pipe A, this mostly happens after + * resume. Force-enable the pipe to fix this, the update_dpms + * call below we restore the pipe to the right state, but leave + * the required bits on. */ + intel_enable_pipe_a(dev); + } + + /* Adjust the state of the output pipe according to whether we + * have active connectors/encoders. */ + intel_crtc_update_dpms(&crtc->base); + + if (crtc->active != crtc->base.enabled) { + struct intel_encoder *encoder; + + /* This can happen either due to bugs in the get_hw_state + * functions or because the pipe is force-enabled due to the + * pipe A quirk. */ + DRM_DEBUG_KMS("[CRTC:%d] hw state adjusted, was %s, now %s\n", + crtc->base.base.id, + crtc->base.enabled ? "enabled" : "disabled", + crtc->active ? "enabled" : "disabled"); + + crtc->base.enabled = crtc->active; + + /* Because we only establish the connector -> encoder -> + * crtc links if something is active, this means the + * crtc is now deactivated. Break the links. connector + * -> encoder links are only establish when things are + * actually up, hence no need to break them. */ + WARN_ON(crtc->active); + + for_each_encoder_on_crtc(dev, &crtc->base, encoder) { + WARN_ON(encoder->connectors_active); + encoder->base.crtc = NULL; + } + } +} + +static void intel_sanitize_encoder(struct intel_encoder *encoder) +{ + struct intel_connector *connector; + struct drm_device *dev = encoder->base.dev; + + /* We need to check both for a crtc link (meaning that the + * encoder is active and trying to read from a pipe) and the + * pipe itself being active. */ + bool has_active_crtc = encoder->base.crtc && + to_intel_crtc(encoder->base.crtc)->active; + + if (encoder->connectors_active && !has_active_crtc) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] has active connectors but no active pipe!\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + + /* Connector is active, but has no active pipe. This is + * fallout from our resume register restoring. Disable + * the encoder manually again. */ + if (encoder->base.crtc) { + DRM_DEBUG_KMS("[ENCODER:%d:%s] manually disabled\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base)); + encoder->disable(encoder); + } + + /* Inconsistent output/port/pipe state happens presumably due to + * a bug in one of the get_hw_state functions. Or someplace else + * in our code, like the register restore mess on resume. Clamp + * things to off as a safer default. */ + list_for_each_entry(connector, + &dev->mode_config.connector_list, + base.head) { + if (connector->encoder != encoder) + continue; + + intel_connector_break_all_links(connector); + } + } + /* Enabled encoders without active connectors will be fixed in + * the crtc fixup. */ +} + +/* Scan out the current hw modeset state, sanitizes it and maps it into the drm + * and i915 state tracking structures. */ +void intel_modeset_setup_hw_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe; + u32 tmp; + struct intel_crtc *crtc; + struct intel_encoder *encoder; + struct intel_connector *connector; + + if (IS_HASWELL(dev)) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); + + if (tmp & TRANS_DDI_FUNC_ENABLE) { + switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { + case TRANS_DDI_EDP_INPUT_A_ON: + case TRANS_DDI_EDP_INPUT_A_ONOFF: + pipe = PIPE_A; + break; + case TRANS_DDI_EDP_INPUT_B_ONOFF: + pipe = PIPE_B; + break; + case TRANS_DDI_EDP_INPUT_C_ONOFF: + pipe = PIPE_C; + break; + } + + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + crtc->cpu_transcoder = TRANSCODER_EDP; + + DRM_DEBUG_KMS("Pipe %c using transcoder EDP\n", + pipe_name(pipe)); + } + } + + for_each_pipe(pipe) { + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + + tmp = I915_READ(PIPECONF(crtc->cpu_transcoder)); + if (tmp & PIPECONF_ENABLE) + crtc->active = true; + else + crtc->active = false; + + crtc->base.enabled = crtc->active; + + DRM_DEBUG_KMS("[CRTC:%d] hw state readout: %s\n", + crtc->base.base.id, + crtc->active ? "enabled" : "disabled"); + } + + if (IS_HASWELL(dev)) + intel_ddi_setup_hw_pll_state(dev); + + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + pipe = 0; + + if (encoder->get_hw_state(encoder, &pipe)) { + encoder->base.crtc = + dev_priv->pipe_to_crtc_mapping[pipe]; + } else { + encoder->base.crtc = NULL; + } + + encoder->connectors_active = false; + DRM_DEBUG_KMS("[ENCODER:%d:%s] hw state readout: %s, pipe=%i\n", + encoder->base.base.id, + drm_get_encoder_name(&encoder->base), + encoder->base.crtc ? "enabled" : "disabled", + pipe); + } + + list_for_each_entry(connector, &dev->mode_config.connector_list, + base.head) { + if (connector->get_hw_state(connector)) { + connector->base.dpms = DRM_MODE_DPMS_ON; + connector->encoder->connectors_active = true; + connector->base.encoder = &connector->encoder->base; + } else { + connector->base.dpms = DRM_MODE_DPMS_OFF; + connector->base.encoder = NULL; + } + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] hw state readout: %s\n", + connector->base.base.id, + drm_get_connector_name(&connector->base), + connector->base.encoder ? "enabled" : "disabled"); + } + + /* HW state is read out, now we need to sanitize this mess. */ + list_for_each_entry(encoder, &dev->mode_config.encoder_list, + base.head) { + intel_sanitize_encoder(encoder); + } + + for_each_pipe(pipe) { + crtc = to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + intel_sanitize_crtc(crtc); + } + + intel_modeset_update_staged_output_state(dev); + + intel_modeset_check_state(dev); + + drm_mode_config_reset(dev); +} + +void intel_modeset_gem_init(struct drm_device *dev) +{ + intel_modeset_init_hw(dev); + + intel_setup_overlay(dev); + + intel_modeset_setup_hw_state(dev); +} + +void intel_modeset_cleanup(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + struct intel_crtc *intel_crtc; + + drm_kms_helper_poll_fini(dev); + mutex_lock(&dev->struct_mutex); + + intel_unregister_dsm_handler(); + + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + /* Skip inactive CRTCs */ + if (!crtc->fb) + continue; + + intel_crtc = to_intel_crtc(crtc); + intel_increase_pllclock(crtc); + } + + intel_disable_fbc(dev); + + intel_disable_gt_powersave(dev); + + ironlake_teardown_rc6(dev); + + if (IS_VALLEYVIEW(dev)) + vlv_init_dpio(dev); + + mutex_unlock(&dev->struct_mutex); + + /* Disable the irq before mode object teardown, for the irq might + * enqueue unpin/hotplug work. */ + drm_irq_uninstall(dev); + cancel_work_sync(&dev_priv->hotplug_work); + cancel_work_sync(&dev_priv->rps.work); + + /* flush any delayed tasks or pending work */ + flush_scheduled_work(); + + drm_mode_config_cleanup(dev); +} + +/* + * Return which encoder is currently attached for connector. + */ +struct drm_encoder *intel_best_encoder(struct drm_connector *connector) +{ + return &intel_attached_encoder(connector)->base; +} + +void intel_connector_attach_encoder(struct intel_connector *connector, + struct intel_encoder *encoder) +{ + connector->encoder = encoder; + drm_mode_connector_attach_encoder(&connector->base, + &encoder->base); +} + +/* + * set vga decode state - true == enable VGA decode + */ +int intel_modeset_vga_set_state(struct drm_device *dev, bool state) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 gmch_ctrl; + + pci_read_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, &gmch_ctrl); + if (state) + gmch_ctrl &= ~INTEL_GMCH_VGA_DISABLE; + else + gmch_ctrl |= INTEL_GMCH_VGA_DISABLE; + pci_write_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, gmch_ctrl); + return 0; +} + +#ifdef CONFIG_DEBUG_FS +#include + +struct intel_display_error_state { + struct intel_cursor_error_state { + u32 control; + u32 position; + u32 base; + u32 size; + } cursor[I915_MAX_PIPES]; + + struct intel_pipe_error_state { + u32 conf; + u32 source; + + u32 htotal; + u32 hblank; + u32 hsync; + u32 vtotal; + u32 vblank; + u32 vsync; + } pipe[I915_MAX_PIPES]; + + struct intel_plane_error_state { + u32 control; + u32 stride; + u32 size; + u32 pos; + u32 addr; + u32 surface; + u32 tile_offset; + } plane[I915_MAX_PIPES]; +}; + +struct intel_display_error_state * +intel_display_capture_error_state(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_display_error_state *error; + enum transcoder cpu_transcoder; + int i; + + error = kmalloc(sizeof(*error), GFP_ATOMIC); + if (error == NULL) + return NULL; + + for_each_pipe(i) { + cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, i); + + error->cursor[i].control = I915_READ(CURCNTR(i)); + error->cursor[i].position = I915_READ(CURPOS(i)); + error->cursor[i].base = I915_READ(CURBASE(i)); + + error->plane[i].control = I915_READ(DSPCNTR(i)); + error->plane[i].stride = I915_READ(DSPSTRIDE(i)); + error->plane[i].size = I915_READ(DSPSIZE(i)); + error->plane[i].pos = I915_READ(DSPPOS(i)); + error->plane[i].addr = I915_READ(DSPADDR(i)); + if (INTEL_INFO(dev)->gen >= 4) { + error->plane[i].surface = I915_READ(DSPSURF(i)); + error->plane[i].tile_offset = I915_READ(DSPTILEOFF(i)); + } + + error->pipe[i].conf = I915_READ(PIPECONF(cpu_transcoder)); + error->pipe[i].source = I915_READ(PIPESRC(i)); + error->pipe[i].htotal = I915_READ(HTOTAL(cpu_transcoder)); + error->pipe[i].hblank = I915_READ(HBLANK(cpu_transcoder)); + error->pipe[i].hsync = I915_READ(HSYNC(cpu_transcoder)); + error->pipe[i].vtotal = I915_READ(VTOTAL(cpu_transcoder)); + error->pipe[i].vblank = I915_READ(VBLANK(cpu_transcoder)); + error->pipe[i].vsync = I915_READ(VSYNC(cpu_transcoder)); + } + + return error; +} + +void +intel_display_print_error_state(struct seq_file *m, + struct drm_device *dev, + struct intel_display_error_state *error) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + seq_printf(m, "Num Pipes: %d\n", dev_priv->num_pipe); + for_each_pipe(i) { + seq_printf(m, "Pipe [%d]:\n", i); + seq_printf(m, " CONF: %08x\n", error->pipe[i].conf); + seq_printf(m, " SRC: %08x\n", error->pipe[i].source); + seq_printf(m, " HTOTAL: %08x\n", error->pipe[i].htotal); + seq_printf(m, " HBLANK: %08x\n", error->pipe[i].hblank); + seq_printf(m, " HSYNC: %08x\n", error->pipe[i].hsync); + seq_printf(m, " VTOTAL: %08x\n", error->pipe[i].vtotal); + seq_printf(m, " VBLANK: %08x\n", error->pipe[i].vblank); + seq_printf(m, " VSYNC: %08x\n", error->pipe[i].vsync); + + seq_printf(m, "Plane [%d]:\n", i); + seq_printf(m, " CNTR: %08x\n", error->plane[i].control); + seq_printf(m, " STRIDE: %08x\n", error->plane[i].stride); + seq_printf(m, " SIZE: %08x\n", error->plane[i].size); + seq_printf(m, " POS: %08x\n", error->plane[i].pos); + seq_printf(m, " ADDR: %08x\n", error->plane[i].addr); + if (INTEL_INFO(dev)->gen >= 4) { + seq_printf(m, " SURF: %08x\n", error->plane[i].surface); + seq_printf(m, " TILEOFF: %08x\n", error->plane[i].tile_offset); + } + + seq_printf(m, "Cursor [%d]:\n", i); + seq_printf(m, " CNTR: %08x\n", error->cursor[i].control); + seq_printf(m, " POS: %08x\n", error->cursor[i].position); + seq_printf(m, " BASE: %08x\n", error->cursor[i].base); + } +} +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_gem_stolen.c +++ linux-3.5.0/ubuntu/i915/i915_gem_stolen.c @@ -0,0 +1,202 @@ +/* + * Copyright © 2008-2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" + +/* + * The BIOS typically reserves some of the system's memory for the exclusive + * use of the integrated graphics. This memory is no longer available for + * use by the OS and so the user finds that his system has less memory + * available than he put in. We refer to this memory as stolen. + * + * The BIOS will allocate its framebuffer from the stolen memory. Our + * goal is try to reuse that object for our own fbcon which must always + * be available for panics. Anything else we can reuse the stolen memory + * for is a boon. + */ + +#define PTE_ADDRESS_MASK 0xfffff000 +#define PTE_ADDRESS_MASK_HIGH 0x000000f0 /* i915+ */ +#define PTE_MAPPING_TYPE_UNCACHED (0 << 1) +#define PTE_MAPPING_TYPE_DCACHE (1 << 1) /* i830 only */ +#define PTE_MAPPING_TYPE_CACHED (3 << 1) +#define PTE_MAPPING_TYPE_MASK (3 << 1) +#define PTE_VALID (1 << 0) + +/** + * i915_stolen_to_phys - take an offset into stolen memory and turn it into + * a physical one + * @dev: drm device + * @offset: address to translate + * + * Some chip functions require allocations from stolen space and need the + * physical address of the memory in question. + */ +static unsigned long i915_stolen_to_phys(struct drm_device *dev, u32 offset) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct pci_dev *pdev = dev_priv->bridge_dev; + u32 base; + +#if 0 + /* On the machines I have tested the Graphics Base of Stolen Memory + * is unreliable, so compute the base by subtracting the stolen memory + * from the Top of Low Usable DRAM which is where the BIOS places + * the graphics stolen memory. + */ + if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) { + /* top 32bits are reserved = 0 */ + pci_read_config_dword(pdev, 0xA4, &base); + } else { + /* XXX presume 8xx is the same as i915 */ + pci_bus_read_config_dword(pdev->bus, 2, 0x5C, &base); + } +#else + if (INTEL_INFO(dev)->gen > 3 || IS_G33(dev)) { + u16 val; + pci_read_config_word(pdev, 0xb0, &val); + base = val >> 4 << 20; + } else { + u8 val; + pci_read_config_byte(pdev, 0x9c, &val); + base = val >> 3 << 27; + } + base -= dev_priv->mm.gtt->stolen_size; +#endif + + return base + offset; +} + +static void i915_warn_stolen(struct drm_device *dev) +{ + DRM_INFO("not enough stolen space for compressed buffer, disabling\n"); + DRM_INFO("hint: you may be able to increase stolen memory size in the BIOS to avoid this\n"); +} + +static void i915_setup_compression(struct drm_device *dev, int size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_mm_node_hsw *compressed_fb, *uninitialized_var(compressed_llb); + unsigned long cfb_base; + unsigned long ll_base = 0; + + /* Just in case the BIOS is doing something questionable. */ + intel_disable_fbc(dev); + + compressed_fb = drm_mm_search_free_hsw(&dev_priv->mm.stolen, size, 4096, 0); + if (compressed_fb) + compressed_fb = drm_mm_get_block_hsw(compressed_fb, size, 4096); + if (!compressed_fb) + goto err; + + cfb_base = i915_stolen_to_phys(dev, compressed_fb->start); + if (!cfb_base) + goto err_fb; + + if (!(IS_GM45(dev) || HAS_PCH_SPLIT(dev))) { + compressed_llb = drm_mm_search_free_hsw(&dev_priv->mm.stolen, + 4096, 4096, 0); + if (compressed_llb) + compressed_llb = drm_mm_get_block_hsw(compressed_llb, + 4096, 4096); + if (!compressed_llb) + goto err_fb; + + ll_base = i915_stolen_to_phys(dev, compressed_llb->start); + if (!ll_base) + goto err_llb; + } + + dev_priv->cfb_size = size; + + dev_priv->compressed_fb = compressed_fb; + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(ILK_DPFC_CB_BASE, compressed_fb->start); + else if (IS_GM45(dev)) { + I915_WRITE(DPFC_CB_BASE, compressed_fb->start); + } else { + I915_WRITE(FBC_CFB_BASE, cfb_base); + I915_WRITE(FBC_LL_BASE, ll_base); + dev_priv->compressed_llb = compressed_llb; + } + + DRM_DEBUG_KMS("FBC base 0x%08lx, ll base 0x%08lx, size %dM\n", + cfb_base, ll_base, size >> 20); + return; + +err_llb: + drm_mm_put_block_hsw(compressed_llb); +err_fb: + drm_mm_put_block_hsw(compressed_fb); +err: + dev_priv->no_fbc_reason = FBC_STOLEN_TOO_SMALL; + i915_warn_stolen(dev); +} + +static void i915_cleanup_compression(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + drm_mm_put_block_hsw(dev_priv->compressed_fb); + if (dev_priv->compressed_llb) + drm_mm_put_block_hsw(dev_priv->compressed_llb); +} + +void i915_gem_cleanup_stolen(struct drm_device *dev) +{ + if (I915_HAS_FBC(dev) && i915_powersave) + i915_cleanup_compression(dev); +} + +int i915_gem_init_stolen(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long prealloc_size = dev_priv->mm.gtt->stolen_size; + + /* Basic memrange allocator for stolen space */ + drm_mm_init_hsw(&dev_priv->mm.stolen, 0, prealloc_size); + + /* Try to set up FBC with a reasonable compressed buffer size */ + if (I915_HAS_FBC(dev) && i915_powersave) { + int cfb_size; + + /* Leave 1M for line length buffer & misc. */ + + /* Try to get a 32M buffer... */ + if (prealloc_size > (36*1024*1024)) + cfb_size = 32*1024*1024; + else /* fall back to 7/8 of the stolen space */ + cfb_size = prealloc_size * 7 / 8; + i915_setup_compression(dev, cfb_size); + } + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_fb.c +++ linux-3.5.0/ubuntu/i915/intel_fb.c @@ -0,0 +1,295 @@ +/* + * Copyright © 2007 David Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * David Airlie + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_fb_helper.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +static struct fb_ops intelfb_ops = { + .owner = THIS_MODULE, + .fb_check_var = drm_fb_helper_check_var, + .fb_set_par = drm_fb_helper_set_par, + .fb_fillrect = cfb_fillrect, + .fb_copyarea = cfb_copyarea, + .fb_imageblit = cfb_imageblit, + .fb_pan_display = drm_fb_helper_pan_display, + .fb_blank = drm_fb_helper_blank, + .fb_setcmap = drm_fb_helper_setcmap, + .fb_debug_enter = drm_fb_helper_debug_enter, + .fb_debug_leave = drm_fb_helper_debug_leave, +}; + +static int intelfb_create(struct intel_fbdev *ifbdev, + struct drm_fb_helper_surface_size *sizes) +{ + struct drm_device *dev = ifbdev->helper.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct fb_info *info; + struct drm_framebuffer *fb; + struct drm_mode_fb_cmd2 mode_cmd = {}; + struct drm_i915_gem_object *obj; + struct device *device = &dev->pdev->dev; + int size, ret; + + /* we don't do packed 24bpp */ + if (sizes->surface_bpp == 24) + sizes->surface_bpp = 32; + + mode_cmd.width = sizes->surface_width; + mode_cmd.height = sizes->surface_height; + + mode_cmd.pitches[0] = ALIGN(mode_cmd.width * ((sizes->surface_bpp + 7) / + 8), 64); + mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp, + sizes->surface_depth); + + size = mode_cmd.pitches[0] * mode_cmd.height; + size = ALIGN(size, PAGE_SIZE); + obj = i915_gem_alloc_object(dev, size); + if (!obj) { + DRM_ERROR("failed to allocate framebuffer\n"); + ret = -ENOMEM; + goto out; + } + + mutex_lock(&dev->struct_mutex); + + /* Flush everything out, we'll be doing GTT only from now on */ + ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + if (ret) { + DRM_ERROR("failed to pin fb: %d\n", ret); + goto out_unref; + } + + info = framebuffer_alloc(0, device); + if (!info) { + ret = -ENOMEM; + goto out_unpin; + } + + info->par = ifbdev; + + ret = intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, obj); + if (ret) + goto out_unpin; + + fb = &ifbdev->ifb.base; + + ifbdev->helper.fb = fb; + ifbdev->helper.fbdev = info; + + strcpy(info->fix.id, "inteldrmfb"); + + info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT; + info->fbops = &intelfb_ops; + + ret = fb_alloc_cmap(&info->cmap, 256, 0); + if (ret) { + ret = -ENOMEM; + goto out_unpin; + } + /* setup aperture base/size for vesafb takeover */ + info->apertures = alloc_apertures(1); + if (!info->apertures) { + ret = -ENOMEM; + goto out_unpin; + } + info->apertures->ranges[0].base = dev->mode_config.fb_base; + info->apertures->ranges[0].size = + dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + + info->fix.smem_start = dev->mode_config.fb_base + obj->gtt_offset; + info->fix.smem_len = size; + + info->screen_base = + ioremap_wc(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + size); + if (!info->screen_base) { + ret = -ENOSPC; + goto out_unpin; + } + info->screen_size = size; + +// memset(info->screen_base, 0, size); + + drm_fb_helper_fill_fix(info, fb->pitches[0], fb->depth); + drm_fb_helper_fill_var(info, &ifbdev->helper, sizes->fb_width, sizes->fb_height); + + /* Use default scratch pixmap (info->pixmap.flags = FB_PIXMAP_SYSTEM) */ + + DRM_DEBUG_KMS("allocated %dx%d fb: 0x%08x, bo %p\n", + fb->width, fb->height, + obj->gtt_offset, obj); + + + mutex_unlock(&dev->struct_mutex); + vga_switcheroo_client_fb_set(dev->pdev, info); + return 0; + +out_unpin: + i915_gem_object_unpin(obj); +out_unref: + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); +out: + return ret; +} + +static int intel_fb_find_or_create_single(struct drm_fb_helper *helper, + struct drm_fb_helper_surface_size *sizes) +{ + struct intel_fbdev *ifbdev = (struct intel_fbdev *)helper; + int new_fb = 0; + int ret; + + if (!helper->fb) { + ret = intelfb_create(ifbdev, sizes); + if (ret) + return ret; + new_fb = 1; + } + return new_fb; +} + +static struct drm_fb_helper_funcs intel_fb_helper_funcs = { + .gamma_set = intel_crtc_fb_gamma_set, + .gamma_get = intel_crtc_fb_gamma_get, + .fb_probe = intel_fb_find_or_create_single, +}; + +static void intel_fbdev_destroy(struct drm_device *dev, + struct intel_fbdev *ifbdev) +{ + struct fb_info *info; + struct intel_framebuffer *ifb = &ifbdev->ifb; + + if (ifbdev->helper.fbdev) { + info = ifbdev->helper.fbdev; + unregister_framebuffer(info); + iounmap(info->screen_base); + if (info->cmap.len) + fb_dealloc_cmap(&info->cmap); + framebuffer_release(info); + } + + drm_fb_helper_fini(&ifbdev->helper); + + drm_framebuffer_cleanup(&ifb->base); + if (ifb->obj) { + drm_gem_object_unreference_unlocked(&ifb->obj->base); + ifb->obj = NULL; + } +} + +int intel_fbdev_init(struct drm_device *dev) +{ + struct intel_fbdev *ifbdev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ifbdev = kzalloc(sizeof(struct intel_fbdev), GFP_KERNEL); + if (!ifbdev) + return -ENOMEM; + + dev_priv->fbdev = ifbdev; + ifbdev->helper.funcs = &intel_fb_helper_funcs; + + ret = drm_fb_helper_init(dev, &ifbdev->helper, + dev_priv->num_pipe, + INTELFB_CONN_LIMIT); + if (ret) { + kfree(ifbdev); + return ret; + } + + drm_fb_helper_single_add_all_connectors(&ifbdev->helper); + drm_fb_helper_initial_config(&ifbdev->helper, 32); + return 0; +} + +void intel_fbdev_fini(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + if (!dev_priv->fbdev) + return; + + intel_fbdev_destroy(dev, dev_priv->fbdev); + kfree(dev_priv->fbdev); + dev_priv->fbdev = NULL; +} + +void intel_fbdev_set_suspend(struct drm_device *dev, int state) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + if (!dev_priv->fbdev) + return; + + fb_set_suspend(dev_priv->fbdev->helper.fbdev, state); +} + +MODULE_LICENSE("GPL and additional rights"); + +void intel_fb_output_poll_changed(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_fb_helper_hotplug_event(&dev_priv->fbdev->helper); +} + +void intel_fb_restore_mode(struct drm_device *dev) +{ + int ret; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_mode_config *config = &dev->mode_config; + struct drm_plane *plane; + + mutex_lock(&dev->mode_config.mutex); + + ret = drm_fb_helper_restore_fbdev_mode(&dev_priv->fbdev->helper); + if (ret) + DRM_DEBUG("failed to restore crtc mode\n"); + + /* Be sure to shut off any planes that may be active */ + list_for_each_entry(plane, &config->plane_list, head) + plane->funcs->disable_plane(plane); + + mutex_unlock(&dev->mode_config.mutex); +} --- linux-3.5.0.orig/ubuntu/i915/Kconfig +++ linux-3.5.0/ubuntu/i915/Kconfig @@ -0,0 +1,42 @@ +# +# Drm device configuration +# +# This driver provides support for the +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. +# +config DRM_I915_HSW + tristate "Intel 8xx/9xx/G3x/G4x/HD Graphics" + depends on DRM + depends on AGP + depends on AGP_INTEL + # we need shmfs for the swappable backing store, and in particular + # the shmem_readpage() which depends upon tmpfs + select SHMEM + select TMPFS + select DRM_KMS_HELPER + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT + # i915 depends on ACPI_VIDEO when ACPI is enabled + # but for select to work, need to select ACPI_VIDEO's dependencies, ick + select BACKLIGHT_LCD_SUPPORT if ACPI + select BACKLIGHT_CLASS_DEVICE if ACPI + select VIDEO_OUTPUT_CONTROL if ACPI + select INPUT if ACPI + select ACPI_VIDEO if ACPI + select ACPI_BUTTON if ACPI + help + Choose this option if you have a system that has "Intel Graphics + Media Accelerator" or "HD Graphics" integrated graphics, + including 830M, 845G, 852GM, 855GM, 865G, 915G, 945G, 965G, + G35, G41, G43, G45 chipsets and Celeron, Pentium, Core i3, + Core i5, Core i7 as well as Atom CPUs with integrated graphics. + If M is selected, the module will be called i915. AGP support + is required for this driver to work. This driver is used by + the Intel driver in X.org 6.8 and XFree86 4.4 and above. It + replaces the older i830 module that supported a subset of the + hardware in older X.org releases. + + Note that the older i810/i815 chipsets require the use of the + i810 driver instead, and the Atom z5xx series has an entirely + different implementation. --- linux-3.5.0.orig/ubuntu/i915/i915_reg.h +++ linux-3.5.0/ubuntu/i915/i915_reg.h @@ -0,0 +1,4656 @@ +/* Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + */ + +#ifndef _I915_REG_H_ +#define _I915_REG_H_ + +#define _PIPE(pipe, a, b) ((a) + (pipe)*((b)-(a))) +#define _TRANSCODER(tran, a, b) ((a) + (tran)*((b)-(a))) + +#define _PORT(port, a, b) ((a) + (port)*((b)-(a))) + +#define _MASKED_BIT_ENABLE(a) (((a) << 16) | (a)) +#define _MASKED_BIT_DISABLE(a) ((a) << 16) + +/* + * The Bridge device's PCI config space has information about the + * fb aperture size and the amount of pre-reserved memory. + * This is all handled in the intel-gtt.ko module. i915.ko only + * cares about the vga bit for the vga rbiter. + */ +#define INTEL_GMCH_CTRL 0x52 +#define INTEL_GMCH_VGA_DISABLE (1 << 1) +#define SNB_GMCH_CTRL 0x50 +#define SNB_GMCH_GGMS_SHIFT 8 /* GTT Graphics Memory Size */ +#define SNB_GMCH_GGMS_MASK 0x3 +#define SNB_GMCH_GMS_SHIFT 3 /* Graphics Mode Select */ +#define SNB_GMCH_GMS_MASK 0x1f +#define IVB_GMCH_GMS_SHIFT 4 +#define IVB_GMCH_GMS_MASK 0xf + + +/* PCI config space */ + +#define HPLLCC 0xc0 /* 855 only */ +#define GC_CLOCK_CONTROL_MASK (0xf << 0) +#define GC_CLOCK_133_200 (0 << 0) +#define GC_CLOCK_100_200 (1 << 0) +#define GC_CLOCK_100_133 (2 << 0) +#define GC_CLOCK_166_250 (3 << 0) +#define GCFGC2 0xda +#define GCFGC 0xf0 /* 915+ only */ +#define GC_LOW_FREQUENCY_ENABLE (1 << 7) +#define GC_DISPLAY_CLOCK_190_200_MHZ (0 << 4) +#define GC_DISPLAY_CLOCK_333_MHZ (4 << 4) +#define GC_DISPLAY_CLOCK_MASK (7 << 4) +#define GM45_GC_RENDER_CLOCK_MASK (0xf << 0) +#define GM45_GC_RENDER_CLOCK_266_MHZ (8 << 0) +#define GM45_GC_RENDER_CLOCK_320_MHZ (9 << 0) +#define GM45_GC_RENDER_CLOCK_400_MHZ (0xb << 0) +#define GM45_GC_RENDER_CLOCK_533_MHZ (0xc << 0) +#define I965_GC_RENDER_CLOCK_MASK (0xf << 0) +#define I965_GC_RENDER_CLOCK_267_MHZ (2 << 0) +#define I965_GC_RENDER_CLOCK_333_MHZ (3 << 0) +#define I965_GC_RENDER_CLOCK_444_MHZ (4 << 0) +#define I965_GC_RENDER_CLOCK_533_MHZ (5 << 0) +#define I945_GC_RENDER_CLOCK_MASK (7 << 0) +#define I945_GC_RENDER_CLOCK_166_MHZ (0 << 0) +#define I945_GC_RENDER_CLOCK_200_MHZ (1 << 0) +#define I945_GC_RENDER_CLOCK_250_MHZ (3 << 0) +#define I945_GC_RENDER_CLOCK_400_MHZ (5 << 0) +#define I915_GC_RENDER_CLOCK_MASK (7 << 0) +#define I915_GC_RENDER_CLOCK_166_MHZ (0 << 0) +#define I915_GC_RENDER_CLOCK_200_MHZ (1 << 0) +#define I915_GC_RENDER_CLOCK_333_MHZ (4 << 0) +#define LBB 0xf4 + +/* Graphics reset regs */ +#define I965_GDRST 0xc0 /* PCI config register */ +#define ILK_GDSR 0x2ca4 /* MCHBAR offset */ +#define GRDOM_FULL (0<<2) +#define GRDOM_RENDER (1<<2) +#define GRDOM_MEDIA (3<<2) +#define GRDOM_RESET_ENABLE (1<<0) + +#define GEN6_MBCUNIT_SNPCR 0x900c /* for LLC config */ +#define GEN6_MBC_SNPCR_SHIFT 21 +#define GEN6_MBC_SNPCR_MASK (3<<21) +#define GEN6_MBC_SNPCR_MAX (0<<21) +#define GEN6_MBC_SNPCR_MED (1<<21) +#define GEN6_MBC_SNPCR_LOW (2<<21) +#define GEN6_MBC_SNPCR_MIN (3<<21) /* only 1/16th of the cache is shared */ + +#define GEN6_MBCTL 0x0907c +#define GEN6_MBCTL_ENABLE_BOOT_FETCH (1 << 4) +#define GEN6_MBCTL_CTX_FETCH_NEEDED (1 << 3) +#define GEN6_MBCTL_BME_UPDATE_ENABLE (1 << 2) +#define GEN6_MBCTL_MAE_UPDATE_ENABLE (1 << 1) +#define GEN6_MBCTL_BOOT_FETCH_MECH (1 << 0) + +#define GEN6_GDRST 0x941c +#define GEN6_GRDOM_FULL (1 << 0) +#define GEN6_GRDOM_RENDER (1 << 1) +#define GEN6_GRDOM_MEDIA (1 << 2) +#define GEN6_GRDOM_BLT (1 << 3) + +#define RING_PP_DIR_BASE(ring) ((ring)->mmio_base+0x228) +#define RING_PP_DIR_BASE_READ(ring) ((ring)->mmio_base+0x518) +#define RING_PP_DIR_DCLV(ring) ((ring)->mmio_base+0x220) +#define PP_DIR_DCLV_2G 0xffffffff + +#define GAM_ECOCHK 0x4090 +#define ECOCHK_SNB_BIT (1<<10) +#define ECOCHK_PPGTT_CACHE64B (0x3<<3) +#define ECOCHK_PPGTT_CACHE4B (0x0<<3) + +#define GAC_ECO_BITS 0x14090 +#define ECOBITS_PPGTT_CACHE64B (3<<8) +#define ECOBITS_PPGTT_CACHE4B (0<<8) + +#define GAB_CTL 0x24000 +#define GAB_CTL_CONT_AFTER_PAGEFAULT (1<<8) + +/* VGA stuff */ + +#define VGA_ST01_MDA 0x3ba +#define VGA_ST01_CGA 0x3da + +#define VGA_MSR_WRITE 0x3c2 +#define VGA_MSR_READ 0x3cc +#define VGA_MSR_MEM_EN (1<<1) +#define VGA_MSR_CGA_MODE (1<<0) + +#define VGA_SR_INDEX 0x3c4 +#define VGA_SR_DATA 0x3c5 + +#define VGA_AR_INDEX 0x3c0 +#define VGA_AR_VID_EN (1<<5) +#define VGA_AR_DATA_WRITE 0x3c0 +#define VGA_AR_DATA_READ 0x3c1 + +#define VGA_GR_INDEX 0x3ce +#define VGA_GR_DATA 0x3cf +/* GR05 */ +#define VGA_GR_MEM_READ_MODE_SHIFT 3 +#define VGA_GR_MEM_READ_MODE_PLANE 1 +/* GR06 */ +#define VGA_GR_MEM_MODE_MASK 0xc +#define VGA_GR_MEM_MODE_SHIFT 2 +#define VGA_GR_MEM_A0000_AFFFF 0 +#define VGA_GR_MEM_A0000_BFFFF 1 +#define VGA_GR_MEM_B0000_B7FFF 2 +#define VGA_GR_MEM_B0000_BFFFF 3 + +#define VGA_DACMASK 0x3c6 +#define VGA_DACRX 0x3c7 +#define VGA_DACWX 0x3c8 +#define VGA_DACDATA 0x3c9 + +#define VGA_CR_INDEX_MDA 0x3b4 +#define VGA_CR_DATA_MDA 0x3b5 +#define VGA_CR_INDEX_CGA 0x3d4 +#define VGA_CR_DATA_CGA 0x3d5 + +/* + * Memory interface instructions used by the kernel + */ +#define MI_INSTR(opcode, flags) (((opcode) << 23) | (flags)) + +#define MI_NOOP MI_INSTR(0, 0) +#define MI_USER_INTERRUPT MI_INSTR(0x02, 0) +#define MI_WAIT_FOR_EVENT MI_INSTR(0x03, 0) +#define MI_WAIT_FOR_OVERLAY_FLIP (1<<16) +#define MI_WAIT_FOR_PLANE_B_FLIP (1<<6) +#define MI_WAIT_FOR_PLANE_A_FLIP (1<<2) +#define MI_WAIT_FOR_PLANE_A_SCANLINES (1<<1) +#define MI_FLUSH MI_INSTR(0x04, 0) +#define MI_READ_FLUSH (1 << 0) +#define MI_EXE_FLUSH (1 << 1) +#define MI_NO_WRITE_FLUSH (1 << 2) +#define MI_SCENE_COUNT (1 << 3) /* just increment scene count */ +#define MI_END_SCENE (1 << 4) /* flush binner and incr scene count */ +#define MI_INVALIDATE_ISP (1 << 5) /* invalidate indirect state pointers */ +#define MI_BATCH_BUFFER_END MI_INSTR(0x0a, 0) +#define MI_SUSPEND_FLUSH MI_INSTR(0x0b, 0) +#define MI_SUSPEND_FLUSH_EN (1<<0) +#define MI_REPORT_HEAD MI_INSTR(0x07, 0) +#define MI_OVERLAY_FLIP MI_INSTR(0x11, 0) +#define MI_OVERLAY_CONTINUE (0x0<<21) +#define MI_OVERLAY_ON (0x1<<21) +#define MI_OVERLAY_OFF (0x2<<21) +#define MI_LOAD_SCAN_LINES_INCL MI_INSTR(0x12, 0) +#define MI_DISPLAY_FLIP MI_INSTR(0x14, 2) +#define MI_DISPLAY_FLIP_I915 MI_INSTR(0x14, 1) +#define MI_DISPLAY_FLIP_PLANE(n) ((n) << 20) +/* IVB has funny definitions for which plane to flip. */ +#define MI_DISPLAY_FLIP_IVB_PLANE_A (0 << 19) +#define MI_DISPLAY_FLIP_IVB_PLANE_B (1 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_A (2 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_B (3 << 19) +#define MI_DISPLAY_FLIP_IVB_PLANE_C (4 << 19) +#define MI_DISPLAY_FLIP_IVB_SPRITE_C (5 << 19) +#define MI_ARB_ON_OFF MI_INSTR(0x08, 0) +#define MI_ARB_ENABLE (1<<0) +#define MI_ARB_DISABLE (0<<0) + +#define MI_SET_CONTEXT MI_INSTR(0x18, 0) +#define MI_MM_SPACE_GTT (1<<8) +#define MI_MM_SPACE_PHYSICAL (0<<8) +#define MI_SAVE_EXT_STATE_EN (1<<3) +#define MI_RESTORE_EXT_STATE_EN (1<<2) +#define MI_FORCE_RESTORE (1<<1) +#define MI_RESTORE_INHIBIT (1<<0) +#define MI_STORE_DWORD_IMM MI_INSTR(0x20, 1) +#define MI_MEM_VIRTUAL (1 << 22) /* 965+ only */ +#define MI_STORE_DWORD_INDEX MI_INSTR(0x21, 1) +#define MI_STORE_DWORD_INDEX_SHIFT 2 +/* Official intel docs are somewhat sloppy concerning MI_LOAD_REGISTER_IMM: + * - Always issue a MI_NOOP _before_ the MI_LOAD_REGISTER_IMM - otherwise hw + * simply ignores the register load under certain conditions. + * - One can actually load arbitrary many arbitrary registers: Simply issue x + * address/value pairs. Don't overdue it, though, x <= 2^4 must hold! + */ +#define MI_LOAD_REGISTER_IMM(x) MI_INSTR(0x22, 2*x-1) +#define MI_FLUSH_DW MI_INSTR(0x26, 1) /* for GEN6 */ +#define MI_FLUSH_DW_STORE_INDEX (1<<21) +#define MI_INVALIDATE_TLB (1<<18) +#define MI_FLUSH_DW_OP_STOREDW (1<<14) +#define MI_INVALIDATE_BSD (1<<7) +#define MI_FLUSH_DW_USE_GTT (1<<2) +#define MI_FLUSH_DW_USE_PPGTT (0<<2) +#define MI_BATCH_BUFFER MI_INSTR(0x30, 1) +#define MI_BATCH_NON_SECURE (1) +/* for snb/ivb/vlv this also means "batch in ppgtt" when ppgtt is enabled. */ +#define MI_BATCH_NON_SECURE_I965 (1<<8) +#define MI_BATCH_PPGTT_HSW (1<<8) +#define MI_BATCH_NON_SECURE_HSW (1<<13) +#define MI_BATCH_BUFFER_START MI_INSTR(0x31, 0) +#define MI_BATCH_GTT (2<<6) /* aliased with (1<<7) on gen4 */ +#define MI_SEMAPHORE_MBOX MI_INSTR(0x16, 1) /* gen6+ */ +#define MI_SEMAPHORE_GLOBAL_GTT (1<<22) +#define MI_SEMAPHORE_UPDATE (1<<21) +#define MI_SEMAPHORE_COMPARE (1<<20) +#define MI_SEMAPHORE_REGISTER (1<<18) +#define MI_SEMAPHORE_SYNC_RV (2<<16) +#define MI_SEMAPHORE_SYNC_RB (0<<16) +#define MI_SEMAPHORE_SYNC_VR (0<<16) +#define MI_SEMAPHORE_SYNC_VB (2<<16) +#define MI_SEMAPHORE_SYNC_BR (2<<16) +#define MI_SEMAPHORE_SYNC_BV (0<<16) +#define MI_SEMAPHORE_SYNC_INVALID (1<<0) +/* + * 3D instructions used by the kernel + */ +#define GFX_INSTR(opcode, flags) ((0x3 << 29) | ((opcode) << 24) | (flags)) + +#define GFX_OP_RASTER_RULES ((0x3<<29)|(0x7<<24)) +#define GFX_OP_SCISSOR ((0x3<<29)|(0x1c<<24)|(0x10<<19)) +#define SC_UPDATE_SCISSOR (0x1<<1) +#define SC_ENABLE_MASK (0x1<<0) +#define SC_ENABLE (0x1<<0) +#define GFX_OP_LOAD_INDIRECT ((0x3<<29)|(0x1d<<24)|(0x7<<16)) +#define GFX_OP_SCISSOR_INFO ((0x3<<29)|(0x1d<<24)|(0x81<<16)|(0x1)) +#define SCI_YMIN_MASK (0xffff<<16) +#define SCI_XMIN_MASK (0xffff<<0) +#define SCI_YMAX_MASK (0xffff<<16) +#define SCI_XMAX_MASK (0xffff<<0) +#define GFX_OP_SCISSOR_ENABLE ((0x3<<29)|(0x1c<<24)|(0x10<<19)) +#define GFX_OP_SCISSOR_RECT ((0x3<<29)|(0x1d<<24)|(0x81<<16)|1) +#define GFX_OP_COLOR_FACTOR ((0x3<<29)|(0x1d<<24)|(0x1<<16)|0x0) +#define GFX_OP_STIPPLE ((0x3<<29)|(0x1d<<24)|(0x83<<16)) +#define GFX_OP_MAP_INFO ((0x3<<29)|(0x1d<<24)|0x4) +#define GFX_OP_DESTBUFFER_VARS ((0x3<<29)|(0x1d<<24)|(0x85<<16)|0x0) +#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 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_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 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) +#define ASYNC_FLIP (1<<22) +#define DISPLAY_PLANE_A (0<<20) +#define DISPLAY_PLANE_B (1<<20) +#define GFX_OP_PIPE_CONTROL(len) ((0x3<<29)|(0x3<<27)|(0x2<<24)|(len-2)) +#define PIPE_CONTROL_CS_STALL (1<<20) +#define PIPE_CONTROL_TLB_INVALIDATE (1<<18) +#define PIPE_CONTROL_QW_WRITE (1<<14) +#define PIPE_CONTROL_DEPTH_STALL (1<<13) +#define PIPE_CONTROL_WRITE_FLUSH (1<<12) +#define PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH (1<<12) /* gen6+ */ +#define PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE (1<<11) /* MBZ on Ironlake */ +#define PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE (1<<10) /* GM45+ only */ +#define PIPE_CONTROL_INDIRECT_STATE_DISABLE (1<<9) +#define PIPE_CONTROL_NOTIFY (1<<8) +#define PIPE_CONTROL_VF_CACHE_INVALIDATE (1<<4) +#define PIPE_CONTROL_CONST_CACHE_INVALIDATE (1<<3) +#define PIPE_CONTROL_STATE_CACHE_INVALIDATE (1<<2) +#define PIPE_CONTROL_STALL_AT_SCOREBOARD (1<<1) +#define PIPE_CONTROL_DEPTH_CACHE_FLUSH (1<<0) +#define PIPE_CONTROL_GLOBAL_GTT (1<<2) /* in addr dword */ + + +/* + * Reset registers + */ +#define DEBUG_RESET_I830 0x6070 +#define DEBUG_RESET_FULL (1<<7) +#define DEBUG_RESET_RENDER (1<<8) +#define DEBUG_RESET_DISPLAY (1<<9) + +/* + * DPIO - a special bus for various display related registers to hide behind: + * 0x800c: m1, m2, n, p1, p2, k dividers + * 0x8014: REF and SFR select + * 0x8014: N divider, VCO select + * 0x801c/3c: core clock bits + * 0x8048/68: low pass filter coefficients + * 0x8100: fast clock controls + */ +#define DPIO_PKT 0x2100 +#define DPIO_RID (0<<24) +#define DPIO_OP_WRITE (1<<16) +#define DPIO_OP_READ (0<<16) +#define DPIO_PORTID (0x12<<8) +#define DPIO_BYTE (0xf<<4) +#define DPIO_BUSY (1<<0) /* status only */ +#define DPIO_DATA 0x2104 +#define DPIO_REG 0x2108 +#define DPIO_CTL 0x2110 +#define DPIO_MODSEL1 (1<<3) /* if ref clk b == 27 */ +#define DPIO_MODSEL0 (1<<2) /* if ref clk a == 27 */ +#define DPIO_SFR_BYPASS (1<<1) +#define DPIO_RESET (1<<0) + +#define _DPIO_DIV_A 0x800c +#define DPIO_POST_DIV_SHIFT (28) /* 3 bits */ +#define DPIO_K_SHIFT (24) /* 4 bits */ +#define DPIO_P1_SHIFT (21) /* 3 bits */ +#define DPIO_P2_SHIFT (16) /* 5 bits */ +#define DPIO_N_SHIFT (12) /* 4 bits */ +#define DPIO_ENABLE_CALIBRATION (1<<11) +#define DPIO_M1DIV_SHIFT (8) /* 3 bits */ +#define DPIO_M2DIV_MASK 0xff +#define _DPIO_DIV_B 0x802c +#define DPIO_DIV(pipe) _PIPE(pipe, _DPIO_DIV_A, _DPIO_DIV_B) + +#define _DPIO_REFSFR_A 0x8014 +#define DPIO_REFSEL_OVERRIDE 27 +#define DPIO_PLL_MODESEL_SHIFT 24 /* 3 bits */ +#define DPIO_BIAS_CURRENT_CTL_SHIFT 21 /* 3 bits, always 0x7 */ +#define DPIO_PLL_REFCLK_SEL_SHIFT 16 /* 2 bits */ +#define DPIO_PLL_REFCLK_SEL_MASK 3 +#define DPIO_DRIVER_CTL_SHIFT 12 /* always set to 0x8 */ +#define DPIO_CLK_BIAS_CTL_SHIFT 8 /* always set to 0x5 */ +#define _DPIO_REFSFR_B 0x8034 +#define DPIO_REFSFR(pipe) _PIPE(pipe, _DPIO_REFSFR_A, _DPIO_REFSFR_B) + +#define _DPIO_CORE_CLK_A 0x801c +#define _DPIO_CORE_CLK_B 0x803c +#define DPIO_CORE_CLK(pipe) _PIPE(pipe, _DPIO_CORE_CLK_A, _DPIO_CORE_CLK_B) + +#define _DPIO_LFP_COEFF_A 0x8048 +#define _DPIO_LFP_COEFF_B 0x8068 +#define DPIO_LFP_COEFF(pipe) _PIPE(pipe, _DPIO_LFP_COEFF_A, _DPIO_LFP_COEFF_B) + +#define DPIO_FASTCLK_DISABLE 0x8100 + +#define DPIO_DATA_CHANNEL1 0x8220 +#define DPIO_DATA_CHANNEL2 0x8420 + +/* + * Fence registers + */ +#define FENCE_REG_830_0 0x2000 +#define FENCE_REG_945_8 0x3000 +#define I830_FENCE_START_MASK 0x07f80000 +#define I830_FENCE_TILING_Y_SHIFT 12 +#define I830_FENCE_SIZE_BITS(size) ((ffs((size) >> 19) - 1) << 8) +#define I830_FENCE_PITCH_SHIFT 4 +#define I830_FENCE_REG_VALID (1<<0) +#define I915_FENCE_MAX_PITCH_VAL 4 +#define I830_FENCE_MAX_PITCH_VAL 6 +#define I830_FENCE_MAX_SIZE_VAL (1<<8) + +#define I915_FENCE_START_MASK 0x0ff00000 +#define I915_FENCE_SIZE_BITS(size) ((ffs((size) >> 20) - 1) << 8) + +#define FENCE_REG_965_0 0x03000 +#define I965_FENCE_PITCH_SHIFT 2 +#define I965_FENCE_TILING_Y_SHIFT 1 +#define I965_FENCE_REG_VALID (1<<0) +#define I965_FENCE_MAX_PITCH_VAL 0x0400 + +#define FENCE_REG_SANDYBRIDGE_0 0x100000 +#define SANDYBRIDGE_FENCE_PITCH_SHIFT 32 + +/* control register for cpu gtt access */ +#define TILECTL 0x101000 +#define TILECTL_SWZCTL (1 << 0) +#define TILECTL_TLB_PREFETCH_DIS (1 << 2) +#define TILECTL_BACKSNOOP_DIS (1 << 3) + +/* + * Instruction and interrupt control regs + */ +#define PGTBL_ER 0x02024 +#define RENDER_RING_BASE 0x02000 +#define BSD_RING_BASE 0x04000 +#define GEN6_BSD_RING_BASE 0x12000 +#define BLT_RING_BASE 0x22000 +#define RING_TAIL(base) ((base)+0x30) +#define RING_HEAD(base) ((base)+0x34) +#define RING_START(base) ((base)+0x38) +#define RING_CTL(base) ((base)+0x3c) +#define RING_SYNC_0(base) ((base)+0x40) +#define RING_SYNC_1(base) ((base)+0x44) +#define GEN6_RVSYNC (RING_SYNC_0(RENDER_RING_BASE)) +#define GEN6_RBSYNC (RING_SYNC_1(RENDER_RING_BASE)) +#define GEN6_VRSYNC (RING_SYNC_1(GEN6_BSD_RING_BASE)) +#define GEN6_VBSYNC (RING_SYNC_0(GEN6_BSD_RING_BASE)) +#define GEN6_BRSYNC (RING_SYNC_0(BLT_RING_BASE)) +#define GEN6_BVSYNC (RING_SYNC_1(BLT_RING_BASE)) +#define RING_MAX_IDLE(base) ((base)+0x54) +#define RING_HWS_PGA(base) ((base)+0x80) +#define RING_HWS_PGA_GEN6(base) ((base)+0x2080) +#define ARB_MODE 0x04030 +#define ARB_MODE_SWIZZLE_SNB (1<<4) +#define ARB_MODE_SWIZZLE_IVB (1<<5) +#define RENDER_HWS_PGA_GEN7 (0x04080) +#define RING_FAULT_REG(ring) (0x4094 + 0x100*(ring)->id) +#define DONE_REG 0x40b0 +#define BSD_HWS_PGA_GEN7 (0x04180) +#define BLT_HWS_PGA_GEN7 (0x04280) +#define RING_ACTHD(base) ((base)+0x74) +#define RING_NOPID(base) ((base)+0x94) +#define RING_IMR(base) ((base)+0xa8) +#define RING_TIMESTAMP(base) ((base)+0x358) +#define TAIL_ADDR 0x001FFFF8 +#define HEAD_WRAP_COUNT 0xFFE00000 +#define HEAD_WRAP_ONE 0x00200000 +#define HEAD_ADDR 0x001FFFFC +#define RING_NR_PAGES 0x001FF000 +#define RING_REPORT_MASK 0x00000006 +#define RING_REPORT_64K 0x00000002 +#define RING_REPORT_128K 0x00000004 +#define RING_NO_REPORT 0x00000000 +#define RING_VALID_MASK 0x00000001 +#define RING_VALID 0x00000001 +#define RING_INVALID 0x00000000 +#define RING_WAIT_I8XX (1<<0) /* gen2, PRBx_HEAD */ +#define RING_WAIT (1<<11) /* gen3+, PRBx_CTL */ +#define RING_WAIT_SEMAPHORE (1<<10) /* gen6+ */ +#if 0 +#define PRB0_TAIL 0x02030 +#define PRB0_HEAD 0x02034 +#define PRB0_START 0x02038 +#define PRB0_CTL 0x0203c +#define PRB1_TAIL 0x02040 /* 915+ only */ +#define PRB1_HEAD 0x02044 /* 915+ only */ +#define PRB1_START 0x02048 /* 915+ only */ +#define PRB1_CTL 0x0204c /* 915+ only */ +#endif +#define IPEIR_I965 0x02064 +#define IPEHR_I965 0x02068 +#define INSTDONE_I965 0x0206c +#define GEN7_INSTDONE_1 0x0206c +#define GEN7_SC_INSTDONE 0x07100 +#define GEN7_SAMPLER_INSTDONE 0x0e160 +#define GEN7_ROW_INSTDONE 0x0e164 +#define I915_NUM_INSTDONE_REG 4 +#define RING_IPEIR(base) ((base)+0x64) +#define RING_IPEHR(base) ((base)+0x68) +#define RING_INSTDONE(base) ((base)+0x6c) +#define RING_INSTPS(base) ((base)+0x70) +#define RING_DMA_FADD(base) ((base)+0x78) +#define RING_INSTPM(base) ((base)+0xc0) +#define INSTPS 0x02070 /* 965+ only */ +#define INSTDONE1 0x0207c /* 965+ only */ +#define ACTHD_I965 0x02074 +#define HWS_PGA 0x02080 +#define HWS_ADDRESS_MASK 0xfffff000 +#define HWS_START_ADDRESS_SHIFT 4 +#define PWRCTXA 0x2088 /* 965GM+ only */ +#define PWRCTX_EN (1<<0) +#define IPEIR 0x02088 +#define IPEHR 0x0208c +#define INSTDONE 0x02090 +#define NOPID 0x02094 +#define HWSTAM 0x02098 +#define DMA_FADD_I8XX 0x020d0 + +#define ERROR_GEN6 0x040a0 +#define GEN7_ERR_INT 0x44040 +#define ERR_INT_MMIO_UNCLAIMED (1<<13) + +/* GM45+ chicken bits -- debug workaround bits that may be required + * for various sorts of correct behavior. The top 16 bits of each are + * the enables for writing to the corresponding low bit. + */ +#define _3D_CHICKEN 0x02084 +#define _3D_CHICKEN2 0x0208c +/* Disables pipelining of read flushes past the SF-WIZ interface. + * Required on all Ironlake steppings according to the B-Spec, but the + * particular danger of not doing so is not specified. + */ +# define _3D_CHICKEN2_WM_READ_PIPELINED (1 << 14) +#define _3D_CHICKEN3 0x02090 +#define _3D_CHICKEN_SF_DISABLE_OBJEND_CULL (1 << 10) +#define _3D_CHICKEN_SF_DISABLE_FASTCLIP_CULL (1 << 5) +#define _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL (1 << 5) + +#define MI_MODE 0x0209c +# define VS_TIMER_DISPATCH (1 << 6) +# define MI_FLUSH_ENABLE (1 << 12) + +#define GEN6_GT_MODE 0x20d0 +#define GEN6_GT_MODE_HI (1 << 9) + +#define GFX_MODE 0x02520 +#define GFX_MODE_GEN7 0x0229c +#define RING_MODE_GEN7(ring) ((ring)->mmio_base+0x29c) +#define GFX_RUN_LIST_ENABLE (1<<15) +#define GFX_TLB_INVALIDATE_ALWAYS (1<<13) +#define GFX_SURFACE_FAULT_ENABLE (1<<12) +#define GFX_REPLAY_MODE (1<<11) +#define GFX_PSMI_GRANULARITY (1<<10) +#define GFX_PPGTT_ENABLE (1<<9) + +#define VLV_DISPLAY_BASE 0x180000 + +#define SCPD0 0x0209c /* 915+ only */ +#define IER 0x020a0 +#define IIR 0x020a4 +#define IMR 0x020a8 +#define ISR 0x020ac +#define VLV_GUNIT_CLOCK_GATE 0x182060 +#define GCFG_DIS (1<<8) +#define VLV_IIR_RW 0x182084 +#define VLV_IER 0x1820a0 +#define VLV_IIR 0x1820a4 +#define VLV_IMR 0x1820a8 +#define VLV_ISR 0x1820ac +#define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18) +#define I915_DISPLAY_PORT_INTERRUPT (1<<17) +#define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15) +#define I915_GMCH_THERMAL_SENSOR_EVENT_INTERRUPT (1<<14) /* p-state */ +#define I915_HWB_OOM_INTERRUPT (1<<13) +#define I915_SYNC_STATUS_INTERRUPT (1<<12) +#define I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT (1<<11) +#define I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT (1<<10) +#define I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT (1<<9) +#define I915_DISPLAY_PLANE_C_FLIP_PENDING_INTERRUPT (1<<8) +#define I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT (1<<7) +#define I915_DISPLAY_PIPE_A_EVENT_INTERRUPT (1<<6) +#define I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT (1<<5) +#define I915_DISPLAY_PIPE_B_EVENT_INTERRUPT (1<<4) +#define I915_DEBUG_INTERRUPT (1<<2) +#define I915_USER_INTERRUPT (1<<1) +#define I915_ASLE_INTERRUPT (1<<0) +#define I915_BSD_USER_INTERRUPT (1<<25) +#define EIR 0x020b0 +#define EMR 0x020b4 +#define ESR 0x020b8 +#define GM45_ERROR_PAGE_TABLE (1<<5) +#define GM45_ERROR_MEM_PRIV (1<<4) +#define I915_ERROR_PAGE_TABLE (1<<4) +#define GM45_ERROR_CP_PRIV (1<<3) +#define I915_ERROR_MEMORY_REFRESH (1<<1) +#define I915_ERROR_INSTRUCTION (1<<0) +#define INSTPM 0x020c0 +#define INSTPM_SELF_EN (1<<12) /* 915GM only */ +#define INSTPM_AGPBUSY_DIS (1<<11) /* gen3: when disabled, pending interrupts + will not assert AGPBUSY# and will only + be delivered when out of C3. */ +#define INSTPM_FORCE_ORDERING (1<<7) /* GEN6+ */ +#define ACTHD 0x020c8 +#define FW_BLC 0x020d8 +#define FW_BLC2 0x020dc +#define FW_BLC_SELF 0x020e0 /* 915+ only */ +#define FW_BLC_SELF_EN_MASK (1<<31) +#define FW_BLC_SELF_FIFO_MASK (1<<16) /* 945 only */ +#define FW_BLC_SELF_EN (1<<15) /* 945 only */ +#define MM_BURST_LENGTH 0x00700000 +#define MM_FIFO_WATERMARK 0x0001F000 +#define LM_BURST_LENGTH 0x00000700 +#define LM_FIFO_WATERMARK 0x0000001F +#define MI_ARB_STATE 0x020e4 /* 915+ only */ + +/* Make render/texture TLB fetches lower priorty than associated data + * fetches. This is not turned on by default + */ +#define MI_ARB_RENDER_TLB_LOW_PRIORITY (1 << 15) + +/* Isoch request wait on GTT enable (Display A/B/C streams). + * Make isoch requests stall on the TLB update. May cause + * display underruns (test mode only) + */ +#define MI_ARB_ISOCH_WAIT_GTT (1 << 14) + +/* Block grant count for isoch requests when block count is + * set to a finite value. + */ +#define MI_ARB_BLOCK_GRANT_MASK (3 << 12) +#define MI_ARB_BLOCK_GRANT_8 (0 << 12) /* for 3 display planes */ +#define MI_ARB_BLOCK_GRANT_4 (1 << 12) /* for 2 display planes */ +#define MI_ARB_BLOCK_GRANT_2 (2 << 12) /* for 1 display plane */ +#define MI_ARB_BLOCK_GRANT_0 (3 << 12) /* don't use */ + +/* Enable render writes to complete in C2/C3/C4 power states. + * If this isn't enabled, render writes are prevented in low + * power states. That seems bad to me. + */ +#define MI_ARB_C3_LP_WRITE_ENABLE (1 << 11) + +/* This acknowledges an async flip immediately instead + * of waiting for 2TLB fetches. + */ +#define MI_ARB_ASYNC_FLIP_ACK_IMMEDIATE (1 << 10) + +/* Enables non-sequential data reads through arbiter + */ +#define MI_ARB_DUAL_DATA_PHASE_DISABLE (1 << 9) + +/* Disable FSB snooping of cacheable write cycles from binner/render + * command stream + */ +#define MI_ARB_CACHE_SNOOP_DISABLE (1 << 8) + +/* Arbiter time slice for non-isoch streams */ +#define MI_ARB_TIME_SLICE_MASK (7 << 5) +#define MI_ARB_TIME_SLICE_1 (0 << 5) +#define MI_ARB_TIME_SLICE_2 (1 << 5) +#define MI_ARB_TIME_SLICE_4 (2 << 5) +#define MI_ARB_TIME_SLICE_6 (3 << 5) +#define MI_ARB_TIME_SLICE_8 (4 << 5) +#define MI_ARB_TIME_SLICE_10 (5 << 5) +#define MI_ARB_TIME_SLICE_14 (6 << 5) +#define MI_ARB_TIME_SLICE_16 (7 << 5) + +/* Low priority grace period page size */ +#define MI_ARB_LOW_PRIORITY_GRACE_4KB (0 << 4) /* default */ +#define MI_ARB_LOW_PRIORITY_GRACE_8KB (1 << 4) + +/* Disable display A/B trickle feed */ +#define MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE (1 << 2) + +/* Set display plane priority */ +#define MI_ARB_DISPLAY_PRIORITY_A_B (0 << 0) /* display A > display B */ +#define MI_ARB_DISPLAY_PRIORITY_B_A (1 << 0) /* display B > display A */ + +#define CACHE_MODE_0 0x02120 /* 915+ only */ +#define CM0_PIPELINED_RENDER_FLUSH_DISABLE (1<<8) +#define CM0_IZ_OPT_DISABLE (1<<6) +#define CM0_ZR_OPT_DISABLE (1<<5) +#define CM0_STC_EVICT_DISABLE_LRA_SNB (1<<5) +#define CM0_DEPTH_EVICT_DISABLE (1<<4) +#define CM0_COLOR_EVICT_DISABLE (1<<3) +#define CM0_DEPTH_WRITE_DISABLE (1<<1) +#define CM0_RC_OP_FLUSH_DISABLE (1<<0) +#define BB_ADDR 0x02140 /* 8 bytes */ +#define GFX_FLSH_CNTL 0x02170 /* 915+ only */ +#define GFX_FLSH_CNTL_GEN6 0x101008 +#define GFX_FLSH_CNTL_EN (1<<0) +#define ECOSKPD 0x021d0 +#define ECO_GATING_CX_ONLY (1<<3) +#define ECO_FLIP_DONE (1<<0) + +#define CACHE_MODE_1 0x7004 /* IVB+ */ +#define PIXEL_SUBSPAN_COLLECT_OPT_DISABLE (1<<6) + +/* GEN6 interrupt control + * Note that the per-ring interrupt bits do alias with the global interrupt bits + * in GTIMR. */ +#define GEN6_RENDER_HWSTAM 0x2098 +#define GEN6_RENDER_IMR 0x20a8 +#define GEN6_RENDER_CONTEXT_SWITCH_INTERRUPT (1 << 8) +#define GEN6_RENDER_PPGTT_PAGE_FAULT (1 << 7) +#define GEN6_RENDER_TIMEOUT_COUNTER_EXPIRED (1 << 6) +#define GEN6_RENDER_L3_PARITY_ERROR (1 << 5) +#define GEN6_RENDER_PIPE_CONTROL_NOTIFY_INTERRUPT (1 << 4) +#define GEN6_RENDER_COMMAND_PARSER_MASTER_ERROR (1 << 3) +#define GEN6_RENDER_SYNC_STATUS (1 << 2) +#define GEN6_RENDER_DEBUG_INTERRUPT (1 << 1) +#define GEN6_RENDER_USER_INTERRUPT (1 << 0) + +#define GEN6_BLITTER_HWSTAM 0x22098 +#define GEN6_BLITTER_IMR 0x220a8 +#define GEN6_BLITTER_MI_FLUSH_DW_NOTIFY_INTERRUPT (1 << 26) +#define GEN6_BLITTER_COMMAND_PARSER_MASTER_ERROR (1 << 25) +#define GEN6_BLITTER_SYNC_STATUS (1 << 24) +#define GEN6_BLITTER_USER_INTERRUPT (1 << 22) + +#define GEN6_BLITTER_ECOSKPD 0x221d0 +#define GEN6_BLITTER_LOCK_SHIFT 16 +#define GEN6_BLITTER_FBC_NOTIFY (1<<3) + +#define GEN6_BSD_SLEEP_PSMI_CONTROL 0x12050 +#define GEN6_BSD_SLEEP_MSG_DISABLE (1 << 0) +#define GEN6_BSD_SLEEP_FLUSH_DISABLE (1 << 2) +#define GEN6_BSD_SLEEP_INDICATOR (1 << 3) +#define GEN6_BSD_GO_INDICATOR (1 << 4) + +#define GEN6_BSD_HWSTAM 0x12098 +#define GEN6_BSD_IMR 0x120a8 +#define GEN6_BSD_USER_INTERRUPT (1 << 12) + +#define GEN6_BSD_RNCID 0x12198 + +#define GEN7_FF_THREAD_MODE 0x20a0 +#define GEN7_FF_SCHED_MASK 0x0077070 +#define GEN7_FF_TS_SCHED_HS1 (0x5<<16) +#define GEN7_FF_TS_SCHED_HS0 (0x3<<16) +#define GEN7_FF_TS_SCHED_LOAD_BALANCE (0x1<<16) +#define GEN7_FF_TS_SCHED_HW (0x0<<16) /* Default */ +#define GEN7_FF_VS_SCHED_HS1 (0x5<<12) +#define GEN7_FF_VS_SCHED_HS0 (0x3<<12) +#define GEN7_FF_VS_SCHED_LOAD_BALANCE (0x1<<12) /* Default */ +#define GEN7_FF_VS_SCHED_HW (0x0<<12) +#define GEN7_FF_DS_SCHED_HS1 (0x5<<4) +#define GEN7_FF_DS_SCHED_HS0 (0x3<<4) +#define GEN7_FF_DS_SCHED_LOAD_BALANCE (0x1<<4) /* Default */ +#define GEN7_FF_DS_SCHED_HW (0x0<<4) + +/* + * Framebuffer compression (915+ only) + */ + +#define FBC_CFB_BASE 0x03200 /* 4k page aligned */ +#define FBC_LL_BASE 0x03204 /* 4k page aligned */ +#define FBC_CONTROL 0x03208 +#define FBC_CTL_EN (1<<31) +#define FBC_CTL_PERIODIC (1<<30) +#define FBC_CTL_INTERVAL_SHIFT (16) +#define FBC_CTL_UNCOMPRESSIBLE (1<<14) +#define FBC_CTL_C3_IDLE (1<<13) +#define FBC_CTL_STRIDE_SHIFT (5) +#define FBC_CTL_FENCENO (1<<0) +#define FBC_COMMAND 0x0320c +#define FBC_CMD_COMPRESS (1<<0) +#define FBC_STATUS 0x03210 +#define FBC_STAT_COMPRESSING (1<<31) +#define FBC_STAT_COMPRESSED (1<<30) +#define FBC_STAT_MODIFIED (1<<29) +#define FBC_STAT_CURRENT_LINE (1<<0) +#define FBC_CONTROL2 0x03214 +#define FBC_CTL_FENCE_DBL (0<<4) +#define FBC_CTL_IDLE_IMM (0<<2) +#define FBC_CTL_IDLE_FULL (1<<2) +#define FBC_CTL_IDLE_LINE (2<<2) +#define FBC_CTL_IDLE_DEBUG (3<<2) +#define FBC_CTL_CPU_FENCE (1<<1) +#define FBC_CTL_PLANEA (0<<0) +#define FBC_CTL_PLANEB (1<<0) +#define FBC_FENCE_OFF 0x0321b +#define FBC_TAG 0x03300 + +#define FBC_LL_SIZE (1536) + +/* Framebuffer compression for GM45+ */ +#define DPFC_CB_BASE 0x3200 +#define DPFC_CONTROL 0x3208 +#define DPFC_CTL_EN (1<<31) +#define DPFC_CTL_PLANEA (0<<30) +#define DPFC_CTL_PLANEB (1<<30) +#define DPFC_CTL_FENCE_EN (1<<29) +#define DPFC_CTL_PERSISTENT_MODE (1<<25) +#define DPFC_SR_EN (1<<10) +#define DPFC_CTL_LIMIT_1X (0<<6) +#define DPFC_CTL_LIMIT_2X (1<<6) +#define DPFC_CTL_LIMIT_4X (2<<6) +#define DPFC_RECOMP_CTL 0x320c +#define DPFC_RECOMP_STALL_EN (1<<27) +#define DPFC_RECOMP_STALL_WM_SHIFT (16) +#define DPFC_RECOMP_STALL_WM_MASK (0x07ff0000) +#define DPFC_RECOMP_TIMER_COUNT_SHIFT (0) +#define DPFC_RECOMP_TIMER_COUNT_MASK (0x0000003f) +#define DPFC_STATUS 0x3210 +#define DPFC_INVAL_SEG_SHIFT (16) +#define DPFC_INVAL_SEG_MASK (0x07ff0000) +#define DPFC_COMP_SEG_SHIFT (0) +#define DPFC_COMP_SEG_MASK (0x000003ff) +#define DPFC_STATUS2 0x3214 +#define DPFC_FENCE_YOFF 0x3218 +#define DPFC_CHICKEN 0x3224 +#define DPFC_HT_MODIFY (1<<31) + +/* Framebuffer compression for Ironlake */ +#define ILK_DPFC_CB_BASE 0x43200 +#define ILK_DPFC_CONTROL 0x43208 +/* The bit 28-8 is reserved */ +#define DPFC_RESERVED (0x1FFFFF00) +#define ILK_DPFC_RECOMP_CTL 0x4320c +#define ILK_DPFC_STATUS 0x43210 +#define ILK_DPFC_FENCE_YOFF 0x43218 +#define ILK_DPFC_CHICKEN 0x43224 +#define ILK_FBC_RT_BASE 0x2128 +#define ILK_FBC_RT_VALID (1<<0) + +#define ILK_DISPLAY_CHICKEN1 0x42000 +#define ILK_FBCQ_DIS (1<<22) +#define ILK_PABSTRETCH_DIS (1<<21) + + +/* + * Framebuffer compression for Sandybridge + * + * The following two registers are of type GTTMMADR + */ +#define SNB_DPFC_CTL_SA 0x100100 +#define SNB_CPU_FENCE_ENABLE (1<<29) +#define DPFC_CPU_FENCE_OFFSET 0x100104 + + +/* + * GPIO regs + */ +#define GPIOA 0x5010 +#define GPIOB 0x5014 +#define GPIOC 0x5018 +#define GPIOD 0x501c +#define GPIOE 0x5020 +#define GPIOF 0x5024 +#define GPIOG 0x5028 +#define GPIOH 0x502c +# define GPIO_CLOCK_DIR_MASK (1 << 0) +# define GPIO_CLOCK_DIR_IN (0 << 1) +# define GPIO_CLOCK_DIR_OUT (1 << 1) +# define GPIO_CLOCK_VAL_MASK (1 << 2) +# define GPIO_CLOCK_VAL_OUT (1 << 3) +# define GPIO_CLOCK_VAL_IN (1 << 4) +# define GPIO_CLOCK_PULLUP_DISABLE (1 << 5) +# define GPIO_DATA_DIR_MASK (1 << 8) +# define GPIO_DATA_DIR_IN (0 << 9) +# define GPIO_DATA_DIR_OUT (1 << 9) +# define GPIO_DATA_VAL_MASK (1 << 10) +# define GPIO_DATA_VAL_OUT (1 << 11) +# define GPIO_DATA_VAL_IN (1 << 12) +# define GPIO_DATA_PULLUP_DISABLE (1 << 13) + +#define GMBUS0 0x5100 /* clock/port select */ +#define GMBUS_RATE_100KHZ (0<<8) +#define GMBUS_RATE_50KHZ (1<<8) +#define GMBUS_RATE_400KHZ (2<<8) /* reserved on Pineview */ +#define GMBUS_RATE_1MHZ (3<<8) /* reserved on Pineview */ +#define GMBUS_HOLD_EXT (1<<7) /* 300ns hold time, rsvd on Pineview */ +#define GMBUS_PORT_DISABLED 0 +#define GMBUS_PORT_SSC 1 +#define GMBUS_PORT_VGADDC 2 +#define GMBUS_PORT_PANEL 3 +#define GMBUS_PORT_DPC 4 /* HDMIC */ +#define GMBUS_PORT_DPB 5 /* SDVO, HDMIB */ +#define GMBUS_PORT_DPD 6 /* HDMID */ +#define GMBUS_PORT_RESERVED 7 /* 7 reserved */ +#define GMBUS_NUM_PORTS (GMBUS_PORT_DPD - GMBUS_PORT_SSC + 1) +#define GMBUS1 0x5104 /* command/status */ +#define GMBUS_SW_CLR_INT (1<<31) +#define GMBUS_SW_RDY (1<<30) +#define GMBUS_ENT (1<<29) /* enable timeout */ +#define GMBUS_CYCLE_NONE (0<<25) +#define GMBUS_CYCLE_WAIT (1<<25) +#define GMBUS_CYCLE_INDEX (2<<25) +#define GMBUS_CYCLE_STOP (4<<25) +#define GMBUS_BYTE_COUNT_SHIFT 16 +#define GMBUS_SLAVE_INDEX_SHIFT 8 +#define GMBUS_SLAVE_ADDR_SHIFT 1 +#define GMBUS_SLAVE_READ (1<<0) +#define GMBUS_SLAVE_WRITE (0<<0) +#define GMBUS2 0x5108 /* status */ +#define GMBUS_INUSE (1<<15) +#define GMBUS_HW_WAIT_PHASE (1<<14) +#define GMBUS_STALL_TIMEOUT (1<<13) +#define GMBUS_INT (1<<12) +#define GMBUS_HW_RDY (1<<11) +#define GMBUS_SATOER (1<<10) +#define GMBUS_ACTIVE (1<<9) +#define GMBUS3 0x510c /* data buffer bytes 3-0 */ +#define GMBUS4 0x5110 /* interrupt mask (Pineview+) */ +#define GMBUS_SLAVE_TIMEOUT_EN (1<<4) +#define GMBUS_NAK_EN (1<<3) +#define GMBUS_IDLE_EN (1<<2) +#define GMBUS_HW_WAIT_EN (1<<1) +#define GMBUS_HW_RDY_EN (1<<0) +#define GMBUS5 0x5120 /* byte index */ +#define GMBUS_2BYTE_INDEX_EN (1<<31) + +/* + * Clock control & power management + */ + +#define VGA0 0x6000 +#define VGA1 0x6004 +#define VGA_PD 0x6010 +#define VGA0_PD_P2_DIV_4 (1 << 7) +#define VGA0_PD_P1_DIV_2 (1 << 5) +#define VGA0_PD_P1_SHIFT 0 +#define VGA0_PD_P1_MASK (0x1f << 0) +#define VGA1_PD_P2_DIV_4 (1 << 15) +#define VGA1_PD_P1_DIV_2 (1 << 13) +#define VGA1_PD_P1_SHIFT 8 +#define VGA1_PD_P1_MASK (0x1f << 8) +#define _DPLL_A 0x06014 +#define _DPLL_B 0x06018 +#define DPLL(pipe) _PIPE(pipe, _DPLL_A, _DPLL_B) +#define DPLL_VCO_ENABLE (1 << 31) +#define DPLL_DVO_HIGH_SPEED (1 << 30) +#define DPLL_EXT_BUFFER_ENABLE_VLV (1 << 30) +#define DPLL_SYNCLOCK_ENABLE (1 << 29) +#define DPLL_REFA_CLK_ENABLE_VLV (1 << 29) +#define DPLL_VGA_MODE_DIS (1 << 28) +#define DPLLB_MODE_DAC_SERIAL (1 << 26) /* i915 */ +#define DPLLB_MODE_LVDS (2 << 26) /* i915 */ +#define DPLL_MODE_MASK (3 << 26) +#define DPLL_DAC_SERIAL_P2_CLOCK_DIV_10 (0 << 24) /* i915 */ +#define DPLL_DAC_SERIAL_P2_CLOCK_DIV_5 (1 << 24) /* i915 */ +#define DPLLB_LVDS_P2_CLOCK_DIV_14 (0 << 24) /* i915 */ +#define DPLLB_LVDS_P2_CLOCK_DIV_7 (1 << 24) /* i915 */ +#define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ +#define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ +#define DPLL_FPA01_P1_POST_DIV_MASK_PINEVIEW 0x00ff8000 /* Pineview */ +#define DPLL_LOCK_VLV (1<<15) +#define DPLL_INTEGRATED_CLOCK_VLV (1<<13) + +#define SRX_INDEX 0x3c4 +#define SRX_DATA 0x3c5 +#define SR01 1 +#define SR01_SCREEN_OFF (1<<5) + +#define PPCR 0x61204 +#define PPCR_ON (1<<0) + +#define DVOB 0x61140 +#define DVOB_ON (1<<31) +#define DVOC 0x61160 +#define DVOC_ON (1<<31) +#define LVDS 0x61180 +#define LVDS_ON (1<<31) + +/* Scratch pad debug 0 reg: + */ +#define DPLL_FPA01_P1_POST_DIV_MASK_I830 0x001f0000 +/* + * The i830 generation, in LVDS mode, defines P1 as the bit number set within + * this field (only one bit may be set). + */ +#define DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS 0x003f0000 +#define DPLL_FPA01_P1_POST_DIV_SHIFT 16 +#define DPLL_FPA01_P1_POST_DIV_SHIFT_PINEVIEW 15 +/* i830, required in DVO non-gang */ +#define PLL_P2_DIVIDE_BY_4 (1 << 23) +#define PLL_P1_DIVIDE_BY_TWO (1 << 21) /* i830 */ +#define PLL_REF_INPUT_DREFCLK (0 << 13) +#define PLL_REF_INPUT_TVCLKINA (1 << 13) /* i830 */ +#define PLL_REF_INPUT_TVCLKINBC (2 << 13) /* SDVO TVCLKIN */ +#define PLLB_REF_INPUT_SPREADSPECTRUMIN (3 << 13) +#define PLL_REF_INPUT_MASK (3 << 13) +#define PLL_LOAD_PULSE_PHASE_SHIFT 9 +/* Ironlake */ +# define PLL_REF_SDVO_HDMI_MULTIPLIER_SHIFT 9 +# define PLL_REF_SDVO_HDMI_MULTIPLIER_MASK (7 << 9) +# define PLL_REF_SDVO_HDMI_MULTIPLIER(x) (((x)-1) << 9) +# define DPLL_FPA1_P1_POST_DIV_SHIFT 0 +# define DPLL_FPA1_P1_POST_DIV_MASK 0xff + +/* + * Parallel to Serial Load Pulse phase selection. + * Selects the phase for the 10X DPLL clock for the PCIe + * digital display port. The range is 4 to 13; 10 or more + * is just a flip delay. The default is 6 + */ +#define PLL_LOAD_PULSE_PHASE_MASK (0xf << PLL_LOAD_PULSE_PHASE_SHIFT) +#define DISPLAY_RATE_SELECT_FPA1 (1 << 8) +/* + * SDVO multiplier for 945G/GM. Not used on 965. + */ +#define SDVO_MULTIPLIER_MASK 0x000000ff +#define SDVO_MULTIPLIER_SHIFT_HIRES 4 +#define SDVO_MULTIPLIER_SHIFT_VGA 0 +#define _DPLL_A_MD 0x0601c /* 965+ only */ +/* + * UDI pixel divider, controlling how many pixels are stuffed into a packet. + * + * Value is pixels minus 1. Must be set to 1 pixel for SDVO. + */ +#define DPLL_MD_UDI_DIVIDER_MASK 0x3f000000 +#define DPLL_MD_UDI_DIVIDER_SHIFT 24 +/* UDI pixel divider for VGA, same as DPLL_MD_UDI_DIVIDER_MASK. */ +#define DPLL_MD_VGA_UDI_DIVIDER_MASK 0x003f0000 +#define DPLL_MD_VGA_UDI_DIVIDER_SHIFT 16 +/* + * SDVO/UDI pixel multiplier. + * + * SDVO requires that the bus clock rate be between 1 and 2 Ghz, and the bus + * clock rate is 10 times the DPLL clock. At low resolution/refresh rate + * modes, the bus rate would be below the limits, so SDVO allows for stuffing + * dummy bytes in the datastream at an increased clock rate, with both sides of + * the link knowing how many bytes are fill. + * + * So, for a mode with a dotclock of 65Mhz, we would want to double the clock + * rate to 130Mhz to get a bus rate of 1.30Ghz. The DPLL clock rate would be + * set to 130Mhz, and the SDVO multiplier set to 2x in this register and + * through an SDVO command. + * + * This register field has values of multiplication factor minus 1, with + * a maximum multiplier of 5 for SDVO. + */ +#define DPLL_MD_UDI_MULTIPLIER_MASK 0x00003f00 +#define DPLL_MD_UDI_MULTIPLIER_SHIFT 8 +/* + * SDVO/UDI pixel multiplier for VGA, same as DPLL_MD_UDI_MULTIPLIER_MASK. + * This best be set to the default value (3) or the CRT won't work. No, + * I don't entirely understand what this does... + */ +#define DPLL_MD_VGA_UDI_MULTIPLIER_MASK 0x0000003f +#define DPLL_MD_VGA_UDI_MULTIPLIER_SHIFT 0 +#define _DPLL_B_MD 0x06020 /* 965+ only */ +#define DPLL_MD(pipe) _PIPE(pipe, _DPLL_A_MD, _DPLL_B_MD) + +#define _FPA0 0x06040 +#define _FPA1 0x06044 +#define _FPB0 0x06048 +#define _FPB1 0x0604c +#define FP0(pipe) _PIPE(pipe, _FPA0, _FPB0) +#define FP1(pipe) _PIPE(pipe, _FPA1, _FPB1) +#define FP_N_DIV_MASK 0x003f0000 +#define FP_N_PINEVIEW_DIV_MASK 0x00ff0000 +#define FP_N_DIV_SHIFT 16 +#define FP_M1_DIV_MASK 0x00003f00 +#define FP_M1_DIV_SHIFT 8 +#define FP_M2_DIV_MASK 0x0000003f +#define FP_M2_PINEVIEW_DIV_MASK 0x000000ff +#define FP_M2_DIV_SHIFT 0 +#define DPLL_TEST 0x606c +#define DPLLB_TEST_SDVO_DIV_1 (0 << 22) +#define DPLLB_TEST_SDVO_DIV_2 (1 << 22) +#define DPLLB_TEST_SDVO_DIV_4 (2 << 22) +#define DPLLB_TEST_SDVO_DIV_MASK (3 << 22) +#define DPLLB_TEST_N_BYPASS (1 << 19) +#define DPLLB_TEST_M_BYPASS (1 << 18) +#define DPLLB_INPUT_BUFFER_ENABLE (1 << 16) +#define DPLLA_TEST_N_BYPASS (1 << 3) +#define DPLLA_TEST_M_BYPASS (1 << 2) +#define DPLLA_INPUT_BUFFER_ENABLE (1 << 0) +#define D_STATE 0x6104 +#define DSTATE_GFX_RESET_I830 (1<<6) +#define DSTATE_PLL_D3_OFF (1<<3) +#define DSTATE_GFX_CLOCK_GATING (1<<1) +#define DSTATE_DOT_CLOCK_GATING (1<<0) +#define DSPCLK_GATE_D 0x6200 +# define DPUNIT_B_CLOCK_GATE_DISABLE (1 << 30) /* 965 */ +# define VSUNIT_CLOCK_GATE_DISABLE (1 << 29) /* 965 */ +# define VRHUNIT_CLOCK_GATE_DISABLE (1 << 28) /* 965 */ +# define VRDUNIT_CLOCK_GATE_DISABLE (1 << 27) /* 965 */ +# define AUDUNIT_CLOCK_GATE_DISABLE (1 << 26) /* 965 */ +# define DPUNIT_A_CLOCK_GATE_DISABLE (1 << 25) /* 965 */ +# define DPCUNIT_CLOCK_GATE_DISABLE (1 << 24) /* 965 */ +# define TVRUNIT_CLOCK_GATE_DISABLE (1 << 23) /* 915-945 */ +# define TVCUNIT_CLOCK_GATE_DISABLE (1 << 22) /* 915-945 */ +# define TVFUNIT_CLOCK_GATE_DISABLE (1 << 21) /* 915-945 */ +# define TVEUNIT_CLOCK_GATE_DISABLE (1 << 20) /* 915-945 */ +# define DVSUNIT_CLOCK_GATE_DISABLE (1 << 19) /* 915-945 */ +# define DSSUNIT_CLOCK_GATE_DISABLE (1 << 18) /* 915-945 */ +# define DDBUNIT_CLOCK_GATE_DISABLE (1 << 17) /* 915-945 */ +# define DPRUNIT_CLOCK_GATE_DISABLE (1 << 16) /* 915-945 */ +# define DPFUNIT_CLOCK_GATE_DISABLE (1 << 15) /* 915-945 */ +# define DPBMUNIT_CLOCK_GATE_DISABLE (1 << 14) /* 915-945 */ +# define DPLSUNIT_CLOCK_GATE_DISABLE (1 << 13) /* 915-945 */ +# define DPLUNIT_CLOCK_GATE_DISABLE (1 << 12) /* 915-945 */ +# define DPOUNIT_CLOCK_GATE_DISABLE (1 << 11) +# define DPBUNIT_CLOCK_GATE_DISABLE (1 << 10) +# define DCUNIT_CLOCK_GATE_DISABLE (1 << 9) +# define DPUNIT_CLOCK_GATE_DISABLE (1 << 8) +# define VRUNIT_CLOCK_GATE_DISABLE (1 << 7) /* 915+: reserved */ +# define OVHUNIT_CLOCK_GATE_DISABLE (1 << 6) /* 830-865 */ +# define DPIOUNIT_CLOCK_GATE_DISABLE (1 << 6) /* 915-945 */ +# define OVFUNIT_CLOCK_GATE_DISABLE (1 << 5) +# define OVBUNIT_CLOCK_GATE_DISABLE (1 << 4) +/** + * This bit must be set on the 830 to prevent hangs when turning off the + * overlay scaler. + */ +# define OVRUNIT_CLOCK_GATE_DISABLE (1 << 3) +# define OVCUNIT_CLOCK_GATE_DISABLE (1 << 2) +# define OVUUNIT_CLOCK_GATE_DISABLE (1 << 1) +# define ZVUNIT_CLOCK_GATE_DISABLE (1 << 0) /* 830 */ +# define OVLUNIT_CLOCK_GATE_DISABLE (1 << 0) /* 845,865 */ + +#define RENCLK_GATE_D1 0x6204 +# define BLITTER_CLOCK_GATE_DISABLE (1 << 13) /* 945GM only */ +# define MPEG_CLOCK_GATE_DISABLE (1 << 12) /* 945GM only */ +# define PC_FE_CLOCK_GATE_DISABLE (1 << 11) +# define PC_BE_CLOCK_GATE_DISABLE (1 << 10) +# define WINDOWER_CLOCK_GATE_DISABLE (1 << 9) +# define INTERPOLATOR_CLOCK_GATE_DISABLE (1 << 8) +# define COLOR_CALCULATOR_CLOCK_GATE_DISABLE (1 << 7) +# define MOTION_COMP_CLOCK_GATE_DISABLE (1 << 6) +# define MAG_CLOCK_GATE_DISABLE (1 << 5) +/** This bit must be unset on 855,865 */ +# define MECI_CLOCK_GATE_DISABLE (1 << 4) +# define DCMP_CLOCK_GATE_DISABLE (1 << 3) +# define MEC_CLOCK_GATE_DISABLE (1 << 2) +# define MECO_CLOCK_GATE_DISABLE (1 << 1) +/** This bit must be set on 855,865. */ +# define SV_CLOCK_GATE_DISABLE (1 << 0) +# define I915_MPEG_CLOCK_GATE_DISABLE (1 << 16) +# define I915_VLD_IP_PR_CLOCK_GATE_DISABLE (1 << 15) +# define I915_MOTION_COMP_CLOCK_GATE_DISABLE (1 << 14) +# define I915_BD_BF_CLOCK_GATE_DISABLE (1 << 13) +# define I915_SF_SE_CLOCK_GATE_DISABLE (1 << 12) +# define I915_WM_CLOCK_GATE_DISABLE (1 << 11) +# define I915_IZ_CLOCK_GATE_DISABLE (1 << 10) +# define I915_PI_CLOCK_GATE_DISABLE (1 << 9) +# define I915_DI_CLOCK_GATE_DISABLE (1 << 8) +# define I915_SH_SV_CLOCK_GATE_DISABLE (1 << 7) +# define I915_PL_DG_QC_FT_CLOCK_GATE_DISABLE (1 << 6) +# define I915_SC_CLOCK_GATE_DISABLE (1 << 5) +# define I915_FL_CLOCK_GATE_DISABLE (1 << 4) +# define I915_DM_CLOCK_GATE_DISABLE (1 << 3) +# define I915_PS_CLOCK_GATE_DISABLE (1 << 2) +# define I915_CC_CLOCK_GATE_DISABLE (1 << 1) +# define I915_BY_CLOCK_GATE_DISABLE (1 << 0) + +# define I965_RCZ_CLOCK_GATE_DISABLE (1 << 30) +/** This bit must always be set on 965G/965GM */ +# define I965_RCC_CLOCK_GATE_DISABLE (1 << 29) +# define I965_RCPB_CLOCK_GATE_DISABLE (1 << 28) +# define I965_DAP_CLOCK_GATE_DISABLE (1 << 27) +# define I965_ROC_CLOCK_GATE_DISABLE (1 << 26) +# define I965_GW_CLOCK_GATE_DISABLE (1 << 25) +# define I965_TD_CLOCK_GATE_DISABLE (1 << 24) +/** This bit must always be set on 965G */ +# define I965_ISC_CLOCK_GATE_DISABLE (1 << 23) +# define I965_IC_CLOCK_GATE_DISABLE (1 << 22) +# define I965_EU_CLOCK_GATE_DISABLE (1 << 21) +# define I965_IF_CLOCK_GATE_DISABLE (1 << 20) +# define I965_TC_CLOCK_GATE_DISABLE (1 << 19) +# define I965_SO_CLOCK_GATE_DISABLE (1 << 17) +# define I965_FBC_CLOCK_GATE_DISABLE (1 << 16) +# define I965_MARI_CLOCK_GATE_DISABLE (1 << 15) +# define I965_MASF_CLOCK_GATE_DISABLE (1 << 14) +# define I965_MAWB_CLOCK_GATE_DISABLE (1 << 13) +# define I965_EM_CLOCK_GATE_DISABLE (1 << 12) +# define I965_UC_CLOCK_GATE_DISABLE (1 << 11) +# define I965_SI_CLOCK_GATE_DISABLE (1 << 6) +# define I965_MT_CLOCK_GATE_DISABLE (1 << 5) +# define I965_PL_CLOCK_GATE_DISABLE (1 << 4) +# define I965_DG_CLOCK_GATE_DISABLE (1 << 3) +# define I965_QC_CLOCK_GATE_DISABLE (1 << 2) +# define I965_FT_CLOCK_GATE_DISABLE (1 << 1) +# define I965_DM_CLOCK_GATE_DISABLE (1 << 0) + +#define RENCLK_GATE_D2 0x6208 +#define VF_UNIT_CLOCK_GATE_DISABLE (1 << 9) +#define GS_UNIT_CLOCK_GATE_DISABLE (1 << 7) +#define CL_UNIT_CLOCK_GATE_DISABLE (1 << 6) +#define RAMCLK_GATE_D 0x6210 /* CRL only */ +#define DEUC 0x6214 /* CRL only */ + +#define FW_BLC_SELF_VLV 0x6500 +#define FW_CSPWRDWNEN (1<<15) + +/* + * Palette regs + */ + +#define _PALETTE_A 0x0a000 +#define _PALETTE_B 0x0a800 +#define PALETTE(pipe) _PIPE(pipe, _PALETTE_A, _PALETTE_B) + +/* MCH MMIO space */ + +/* + * MCHBAR mirror. + * + * This mirrors the MCHBAR MMIO space whose location is determined by + * device 0 function 0's pci config register 0x44 or 0x48 and matches it in + * every way. It is not accessible from the CP register read instructions. + * + */ +#define MCHBAR_MIRROR_BASE 0x10000 + +#define MCHBAR_MIRROR_BASE_SNB 0x140000 + +/** 915-945 and GM965 MCH register controlling DRAM channel access */ +#define DCC 0x10200 +#define DCC_ADDRESSING_MODE_SINGLE_CHANNEL (0 << 0) +#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_ASYMMETRIC (1 << 0) +#define DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED (2 << 0) +#define DCC_ADDRESSING_MODE_MASK (3 << 0) +#define DCC_CHANNEL_XOR_DISABLE (1 << 10) +#define DCC_CHANNEL_XOR_BIT_17 (1 << 9) + +/** Pineview MCH register contains DDR3 setting */ +#define CSHRDDR3CTL 0x101a8 +#define CSHRDDR3CTL_DDR3 (1 << 2) + +/** 965 MCH register controlling DRAM channel configuration */ +#define C0DRB3 0x10206 +#define C1DRB3 0x10606 + +/** snb MCH registers for reading the DRAM channel configuration */ +#define MAD_DIMM_C0 (MCHBAR_MIRROR_BASE_SNB + 0x5004) +#define MAD_DIMM_C1 (MCHBAR_MIRROR_BASE_SNB + 0x5008) +#define MAD_DIMM_C2 (MCHBAR_MIRROR_BASE_SNB + 0x500C) +#define MAD_DIMM_ECC_MASK (0x3 << 24) +#define MAD_DIMM_ECC_OFF (0x0 << 24) +#define MAD_DIMM_ECC_IO_ON_LOGIC_OFF (0x1 << 24) +#define MAD_DIMM_ECC_IO_OFF_LOGIC_ON (0x2 << 24) +#define MAD_DIMM_ECC_ON (0x3 << 24) +#define MAD_DIMM_ENH_INTERLEAVE (0x1 << 22) +#define MAD_DIMM_RANK_INTERLEAVE (0x1 << 21) +#define MAD_DIMM_B_WIDTH_X16 (0x1 << 20) /* X8 chips if unset */ +#define MAD_DIMM_A_WIDTH_X16 (0x1 << 19) /* X8 chips if unset */ +#define MAD_DIMM_B_DUAL_RANK (0x1 << 18) +#define MAD_DIMM_A_DUAL_RANK (0x1 << 17) +#define MAD_DIMM_A_SELECT (0x1 << 16) +/* DIMM sizes are in multiples of 256mb. */ +#define MAD_DIMM_B_SIZE_SHIFT 8 +#define MAD_DIMM_B_SIZE_MASK (0xff << MAD_DIMM_B_SIZE_SHIFT) +#define MAD_DIMM_A_SIZE_SHIFT 0 +#define MAD_DIMM_A_SIZE_MASK (0xff << MAD_DIMM_A_SIZE_SHIFT) + + +/* Clocking configuration register */ +#define CLKCFG 0x10c00 +#define CLKCFG_FSB_400 (5 << 0) /* hrawclk 100 */ +#define CLKCFG_FSB_533 (1 << 0) /* hrawclk 133 */ +#define CLKCFG_FSB_667 (3 << 0) /* hrawclk 166 */ +#define CLKCFG_FSB_800 (2 << 0) /* hrawclk 200 */ +#define CLKCFG_FSB_1067 (6 << 0) /* hrawclk 266 */ +#define CLKCFG_FSB_1333 (7 << 0) /* hrawclk 333 */ +/* Note, below two are guess */ +#define CLKCFG_FSB_1600 (4 << 0) /* hrawclk 400 */ +#define CLKCFG_FSB_1600_ALT (0 << 0) /* hrawclk 400 */ +#define CLKCFG_FSB_MASK (7 << 0) +#define CLKCFG_MEM_533 (1 << 4) +#define CLKCFG_MEM_667 (2 << 4) +#define CLKCFG_MEM_800 (3 << 4) +#define CLKCFG_MEM_MASK (7 << 4) + +#define TSC1 0x11001 +#define TSE (1<<0) +#define TR1 0x11006 +#define TSFS 0x11020 +#define TSFS_SLOPE_MASK 0x0000ff00 +#define TSFS_SLOPE_SHIFT 8 +#define TSFS_INTR_MASK 0x000000ff + +#define CRSTANDVID 0x11100 +#define PXVFREQ_BASE 0x11110 /* P[0-15]VIDFREQ (0x1114c) (Ironlake) */ +#define PXVFREQ_PX_MASK 0x7f000000 +#define PXVFREQ_PX_SHIFT 24 +#define VIDFREQ_BASE 0x11110 +#define VIDFREQ1 0x11110 /* VIDFREQ1-4 (0x1111c) (Cantiga) */ +#define VIDFREQ2 0x11114 +#define VIDFREQ3 0x11118 +#define VIDFREQ4 0x1111c +#define VIDFREQ_P0_MASK 0x1f000000 +#define VIDFREQ_P0_SHIFT 24 +#define VIDFREQ_P0_CSCLK_MASK 0x00f00000 +#define VIDFREQ_P0_CSCLK_SHIFT 20 +#define VIDFREQ_P0_CRCLK_MASK 0x000f0000 +#define VIDFREQ_P0_CRCLK_SHIFT 16 +#define VIDFREQ_P1_MASK 0x00001f00 +#define VIDFREQ_P1_SHIFT 8 +#define VIDFREQ_P1_CSCLK_MASK 0x000000f0 +#define VIDFREQ_P1_CSCLK_SHIFT 4 +#define VIDFREQ_P1_CRCLK_MASK 0x0000000f +#define INTTOEXT_BASE_ILK 0x11300 +#define INTTOEXT_BASE 0x11120 /* INTTOEXT1-8 (0x1113c) */ +#define INTTOEXT_MAP3_SHIFT 24 +#define INTTOEXT_MAP3_MASK (0x1f << INTTOEXT_MAP3_SHIFT) +#define INTTOEXT_MAP2_SHIFT 16 +#define INTTOEXT_MAP2_MASK (0x1f << INTTOEXT_MAP2_SHIFT) +#define INTTOEXT_MAP1_SHIFT 8 +#define INTTOEXT_MAP1_MASK (0x1f << INTTOEXT_MAP1_SHIFT) +#define INTTOEXT_MAP0_SHIFT 0 +#define INTTOEXT_MAP0_MASK (0x1f << INTTOEXT_MAP0_SHIFT) +#define MEMSWCTL 0x11170 /* Ironlake only */ +#define MEMCTL_CMD_MASK 0xe000 +#define MEMCTL_CMD_SHIFT 13 +#define MEMCTL_CMD_RCLK_OFF 0 +#define MEMCTL_CMD_RCLK_ON 1 +#define MEMCTL_CMD_CHFREQ 2 +#define MEMCTL_CMD_CHVID 3 +#define MEMCTL_CMD_VMMOFF 4 +#define MEMCTL_CMD_VMMON 5 +#define MEMCTL_CMD_STS (1<<12) /* write 1 triggers command, clears + when command complete */ +#define MEMCTL_FREQ_MASK 0x0f00 /* jitter, from 0-15 */ +#define MEMCTL_FREQ_SHIFT 8 +#define MEMCTL_SFCAVM (1<<7) +#define MEMCTL_TGT_VID_MASK 0x007f +#define MEMIHYST 0x1117c +#define MEMINTREN 0x11180 /* 16 bits */ +#define MEMINT_RSEXIT_EN (1<<8) +#define MEMINT_CX_SUPR_EN (1<<7) +#define MEMINT_CONT_BUSY_EN (1<<6) +#define MEMINT_AVG_BUSY_EN (1<<5) +#define MEMINT_EVAL_CHG_EN (1<<4) +#define MEMINT_MON_IDLE_EN (1<<3) +#define MEMINT_UP_EVAL_EN (1<<2) +#define MEMINT_DOWN_EVAL_EN (1<<1) +#define MEMINT_SW_CMD_EN (1<<0) +#define MEMINTRSTR 0x11182 /* 16 bits */ +#define MEM_RSEXIT_MASK 0xc000 +#define MEM_RSEXIT_SHIFT 14 +#define MEM_CONT_BUSY_MASK 0x3000 +#define MEM_CONT_BUSY_SHIFT 12 +#define MEM_AVG_BUSY_MASK 0x0c00 +#define MEM_AVG_BUSY_SHIFT 10 +#define MEM_EVAL_CHG_MASK 0x0300 +#define MEM_EVAL_BUSY_SHIFT 8 +#define MEM_MON_IDLE_MASK 0x00c0 +#define MEM_MON_IDLE_SHIFT 6 +#define MEM_UP_EVAL_MASK 0x0030 +#define MEM_UP_EVAL_SHIFT 4 +#define MEM_DOWN_EVAL_MASK 0x000c +#define MEM_DOWN_EVAL_SHIFT 2 +#define MEM_SW_CMD_MASK 0x0003 +#define MEM_INT_STEER_GFX 0 +#define MEM_INT_STEER_CMR 1 +#define MEM_INT_STEER_SMI 2 +#define MEM_INT_STEER_SCI 3 +#define MEMINTRSTS 0x11184 +#define MEMINT_RSEXIT (1<<7) +#define MEMINT_CONT_BUSY (1<<6) +#define MEMINT_AVG_BUSY (1<<5) +#define MEMINT_EVAL_CHG (1<<4) +#define MEMINT_MON_IDLE (1<<3) +#define MEMINT_UP_EVAL (1<<2) +#define MEMINT_DOWN_EVAL (1<<1) +#define MEMINT_SW_CMD (1<<0) +#define MEMMODECTL 0x11190 +#define MEMMODE_BOOST_EN (1<<31) +#define MEMMODE_BOOST_FREQ_MASK 0x0f000000 /* jitter for boost, 0-15 */ +#define MEMMODE_BOOST_FREQ_SHIFT 24 +#define MEMMODE_IDLE_MODE_MASK 0x00030000 +#define MEMMODE_IDLE_MODE_SHIFT 16 +#define MEMMODE_IDLE_MODE_EVAL 0 +#define MEMMODE_IDLE_MODE_CONT 1 +#define MEMMODE_HWIDLE_EN (1<<15) +#define MEMMODE_SWMODE_EN (1<<14) +#define MEMMODE_RCLK_GATE (1<<13) +#define MEMMODE_HW_UPDATE (1<<12) +#define MEMMODE_FSTART_MASK 0x00000f00 /* starting jitter, 0-15 */ +#define MEMMODE_FSTART_SHIFT 8 +#define MEMMODE_FMAX_MASK 0x000000f0 /* max jitter, 0-15 */ +#define MEMMODE_FMAX_SHIFT 4 +#define MEMMODE_FMIN_MASK 0x0000000f /* min jitter, 0-15 */ +#define RCBMAXAVG 0x1119c +#define MEMSWCTL2 0x1119e /* Cantiga only */ +#define SWMEMCMD_RENDER_OFF (0 << 13) +#define SWMEMCMD_RENDER_ON (1 << 13) +#define SWMEMCMD_SWFREQ (2 << 13) +#define SWMEMCMD_TARVID (3 << 13) +#define SWMEMCMD_VRM_OFF (4 << 13) +#define SWMEMCMD_VRM_ON (5 << 13) +#define CMDSTS (1<<12) +#define SFCAVM (1<<11) +#define SWFREQ_MASK 0x0380 /* P0-7 */ +#define SWFREQ_SHIFT 7 +#define TARVID_MASK 0x001f +#define MEMSTAT_CTG 0x111a0 +#define RCBMINAVG 0x111a0 +#define RCUPEI 0x111b0 +#define RCDNEI 0x111b4 +#define RSTDBYCTL 0x111b8 +#define RS1EN (1<<31) +#define RS2EN (1<<30) +#define RS3EN (1<<29) +#define D3RS3EN (1<<28) /* Display D3 imlies RS3 */ +#define SWPROMORSX (1<<27) /* RSx promotion timers ignored */ +#define RCWAKERW (1<<26) /* Resetwarn from PCH causes wakeup */ +#define DPRSLPVREN (1<<25) /* Fast voltage ramp enable */ +#define GFXTGHYST (1<<24) /* Hysteresis to allow trunk gating */ +#define RCX_SW_EXIT (1<<23) /* Leave RSx and prevent re-entry */ +#define RSX_STATUS_MASK (7<<20) +#define RSX_STATUS_ON (0<<20) +#define RSX_STATUS_RC1 (1<<20) +#define RSX_STATUS_RC1E (2<<20) +#define RSX_STATUS_RS1 (3<<20) +#define RSX_STATUS_RS2 (4<<20) /* aka rc6 */ +#define RSX_STATUS_RSVD (5<<20) /* deep rc6 unsupported on ilk */ +#define RSX_STATUS_RS3 (6<<20) /* rs3 unsupported on ilk */ +#define RSX_STATUS_RSVD2 (7<<20) +#define UWRCRSXE (1<<19) /* wake counter limit prevents rsx */ +#define RSCRP (1<<18) /* rs requests control on rs1/2 reqs */ +#define JRSC (1<<17) /* rsx coupled to cpu c-state */ +#define RS2INC0 (1<<16) /* allow rs2 in cpu c0 */ +#define RS1CONTSAV_MASK (3<<14) +#define RS1CONTSAV_NO_RS1 (0<<14) /* rs1 doesn't save/restore context */ +#define RS1CONTSAV_RSVD (1<<14) +#define RS1CONTSAV_SAVE_RS1 (2<<14) /* rs1 saves context */ +#define RS1CONTSAV_FULL_RS1 (3<<14) /* rs1 saves and restores context */ +#define NORMSLEXLAT_MASK (3<<12) +#define SLOW_RS123 (0<<12) +#define SLOW_RS23 (1<<12) +#define SLOW_RS3 (2<<12) +#define NORMAL_RS123 (3<<12) +#define RCMODE_TIMEOUT (1<<11) /* 0 is eval interval method */ +#define IMPROMOEN (1<<10) /* promo is immediate or delayed until next idle interval (only for timeout method above) */ +#define RCENTSYNC (1<<9) /* rs coupled to cpu c-state (3/6/7) */ +#define STATELOCK (1<<7) /* locked to rs_cstate if 0 */ +#define RS_CSTATE_MASK (3<<4) +#define RS_CSTATE_C367_RS1 (0<<4) +#define RS_CSTATE_C36_RS1_C7_RS2 (1<<4) +#define RS_CSTATE_RSVD (2<<4) +#define RS_CSTATE_C367_RS2 (3<<4) +#define REDSAVES (1<<3) /* no context save if was idle during rs0 */ +#define REDRESTORES (1<<2) /* no restore if was idle during rs0 */ +#define VIDCTL 0x111c0 +#define VIDSTS 0x111c8 +#define VIDSTART 0x111cc /* 8 bits */ +#define MEMSTAT_ILK 0x111f8 +#define MEMSTAT_VID_MASK 0x7f00 +#define MEMSTAT_VID_SHIFT 8 +#define MEMSTAT_PSTATE_MASK 0x00f8 +#define MEMSTAT_PSTATE_SHIFT 3 +#define MEMSTAT_MON_ACTV (1<<2) +#define MEMSTAT_SRC_CTL_MASK 0x0003 +#define MEMSTAT_SRC_CTL_CORE 0 +#define MEMSTAT_SRC_CTL_TRB 1 +#define MEMSTAT_SRC_CTL_THM 2 +#define MEMSTAT_SRC_CTL_STDBY 3 +#define RCPREVBSYTUPAVG 0x113b8 +#define RCPREVBSYTDNAVG 0x113bc +#define PMMISC 0x11214 +#define MCPPCE_EN (1<<0) /* enable PM_MSG from PCH->MPC */ +#define SDEW 0x1124c +#define CSIEW0 0x11250 +#define CSIEW1 0x11254 +#define CSIEW2 0x11258 +#define PEW 0x1125c +#define DEW 0x11270 +#define MCHAFE 0x112c0 +#define CSIEC 0x112e0 +#define DMIEC 0x112e4 +#define DDREC 0x112e8 +#define PEG0EC 0x112ec +#define PEG1EC 0x112f0 +#define GFXEC 0x112f4 +#define RPPREVBSYTUPAVG 0x113b8 +#define RPPREVBSYTDNAVG 0x113bc +#define ECR 0x11600 +#define ECR_GPFE (1<<31) +#define ECR_IMONE (1<<30) +#define ECR_CAP_MASK 0x0000001f /* Event range, 0-31 */ +#define OGW0 0x11608 +#define OGW1 0x1160c +#define EG0 0x11610 +#define EG1 0x11614 +#define EG2 0x11618 +#define EG3 0x1161c +#define EG4 0x11620 +#define EG5 0x11624 +#define EG6 0x11628 +#define EG7 0x1162c +#define PXW 0x11664 +#define PXWL 0x11680 +#define LCFUSE02 0x116c0 +#define LCFUSE_HIV_MASK 0x000000ff +#define CSIPLL0 0x12c10 +#define DDRMPLL1 0X12c20 +#define PEG_BAND_GAP_DATA 0x14d68 + +#define GEN6_GT_THREAD_STATUS_REG 0x13805c +#define GEN6_GT_THREAD_STATUS_CORE_MASK 0x7 +#define GEN6_GT_THREAD_STATUS_CORE_MASK_HSW (0x7 | (0x07 << 16)) + +#define GEN6_GT_PERF_STATUS 0x145948 +#define GEN6_RP_STATE_LIMITS 0x145994 +#define GEN6_RP_STATE_CAP 0x145998 + +/* + * Logical Context regs + */ +#define CCID 0x2180 +#define CCID_EN (1<<0) +#define CXT_SIZE 0x21a0 +#define GEN6_CXT_POWER_SIZE(cxt_reg) ((cxt_reg >> 24) & 0x3f) +#define GEN6_CXT_RING_SIZE(cxt_reg) ((cxt_reg >> 18) & 0x3f) +#define GEN6_CXT_RENDER_SIZE(cxt_reg) ((cxt_reg >> 12) & 0x3f) +#define GEN6_CXT_EXTENDED_SIZE(cxt_reg) ((cxt_reg >> 6) & 0x3f) +#define GEN6_CXT_PIPELINE_SIZE(cxt_reg) ((cxt_reg >> 0) & 0x3f) +#define GEN6_CXT_TOTAL_SIZE(cxt_reg) (GEN6_CXT_POWER_SIZE(cxt_reg) + \ + GEN6_CXT_RING_SIZE(cxt_reg) + \ + GEN6_CXT_RENDER_SIZE(cxt_reg) + \ + GEN6_CXT_EXTENDED_SIZE(cxt_reg) + \ + GEN6_CXT_PIPELINE_SIZE(cxt_reg)) +#define GEN7_CXT_SIZE 0x21a8 +#define GEN7_CXT_POWER_SIZE(ctx_reg) ((ctx_reg >> 25) & 0x7f) +#define GEN7_CXT_RING_SIZE(ctx_reg) ((ctx_reg >> 22) & 0x7) +#define GEN7_CXT_RENDER_SIZE(ctx_reg) ((ctx_reg >> 16) & 0x3f) +#define GEN7_CXT_EXTENDED_SIZE(ctx_reg) ((ctx_reg >> 9) & 0x7f) +#define GEN7_CXT_GT1_SIZE(ctx_reg) ((ctx_reg >> 6) & 0x7) +#define GEN7_CXT_VFSTATE_SIZE(ctx_reg) ((ctx_reg >> 0) & 0x3f) +#define GEN7_CXT_TOTAL_SIZE(ctx_reg) (GEN7_CXT_POWER_SIZE(ctx_reg) + \ + GEN7_CXT_RING_SIZE(ctx_reg) + \ + GEN7_CXT_RENDER_SIZE(ctx_reg) + \ + GEN7_CXT_EXTENDED_SIZE(ctx_reg) + \ + GEN7_CXT_GT1_SIZE(ctx_reg) + \ + GEN7_CXT_VFSTATE_SIZE(ctx_reg)) +#define HSW_CXT_POWER_SIZE(ctx_reg) ((ctx_reg >> 26) & 0x3f) +#define HSW_CXT_RING_SIZE(ctx_reg) ((ctx_reg >> 23) & 0x7) +#define HSW_CXT_RENDER_SIZE(ctx_reg) ((ctx_reg >> 15) & 0xff) +#define HSW_CXT_TOTAL_SIZE(ctx_reg) (HSW_CXT_POWER_SIZE(ctx_reg) + \ + HSW_CXT_RING_SIZE(ctx_reg) + \ + HSW_CXT_RENDER_SIZE(ctx_reg) + \ + GEN7_CXT_VFSTATE_SIZE(ctx_reg)) + + +/* + * Overlay regs + */ + +#define OVADD 0x30000 +#define DOVSTA 0x30008 +#define OC_BUF (0x3<<20) +#define OGAMC5 0x30010 +#define OGAMC4 0x30014 +#define OGAMC3 0x30018 +#define OGAMC2 0x3001c +#define OGAMC1 0x30020 +#define OGAMC0 0x30024 + +/* + * Display engine regs + */ + +/* Pipe A timing regs */ +#define _HTOTAL_A 0x60000 +#define _HBLANK_A 0x60004 +#define _HSYNC_A 0x60008 +#define _VTOTAL_A 0x6000c +#define _VBLANK_A 0x60010 +#define _VSYNC_A 0x60014 +#define _PIPEASRC 0x6001c +#define _BCLRPAT_A 0x60020 +#define _VSYNCSHIFT_A 0x60028 + +/* Pipe B timing regs */ +#define _HTOTAL_B 0x61000 +#define _HBLANK_B 0x61004 +#define _HSYNC_B 0x61008 +#define _VTOTAL_B 0x6100c +#define _VBLANK_B 0x61010 +#define _VSYNC_B 0x61014 +#define _PIPEBSRC 0x6101c +#define _BCLRPAT_B 0x61020 +#define _VSYNCSHIFT_B 0x61028 + + +#define HTOTAL(trans) _TRANSCODER(trans, _HTOTAL_A, _HTOTAL_B) +#define HBLANK(trans) _TRANSCODER(trans, _HBLANK_A, _HBLANK_B) +#define HSYNC(trans) _TRANSCODER(trans, _HSYNC_A, _HSYNC_B) +#define VTOTAL(trans) _TRANSCODER(trans, _VTOTAL_A, _VTOTAL_B) +#define VBLANK(trans) _TRANSCODER(trans, _VBLANK_A, _VBLANK_B) +#define VSYNC(trans) _TRANSCODER(trans, _VSYNC_A, _VSYNC_B) +#define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B) +#define VSYNCSHIFT(trans) _TRANSCODER(trans, _VSYNCSHIFT_A, _VSYNCSHIFT_B) + +/* VGA port control */ +#define ADPA 0x61100 +#define PCH_ADPA 0xe1100 +#define VLV_ADPA (VLV_DISPLAY_BASE + ADPA) + +#define ADPA_DAC_ENABLE (1<<31) +#define ADPA_DAC_DISABLE 0 +#define ADPA_PIPE_SELECT_MASK (1<<30) +#define ADPA_PIPE_A_SELECT 0 +#define ADPA_PIPE_B_SELECT (1<<30) +#define ADPA_PIPE_SELECT(pipe) ((pipe) << 30) +/* CPT uses bits 29:30 for pch transcoder select */ +#define ADPA_CRT_HOTPLUG_MASK 0x03ff0000 /* bit 25-16 */ +#define ADPA_CRT_HOTPLUG_MONITOR_NONE (0<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_MASK (3<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_COLOR (3<<24) +#define ADPA_CRT_HOTPLUG_MONITOR_MONO (2<<24) +#define ADPA_CRT_HOTPLUG_ENABLE (1<<23) +#define ADPA_CRT_HOTPLUG_PERIOD_64 (0<<22) +#define ADPA_CRT_HOTPLUG_PERIOD_128 (1<<22) +#define ADPA_CRT_HOTPLUG_WARMUP_5MS (0<<21) +#define ADPA_CRT_HOTPLUG_WARMUP_10MS (1<<21) +#define ADPA_CRT_HOTPLUG_SAMPLE_2S (0<<20) +#define ADPA_CRT_HOTPLUG_SAMPLE_4S (1<<20) +#define ADPA_CRT_HOTPLUG_VOLTAGE_40 (0<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_50 (1<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_60 (2<<18) +#define ADPA_CRT_HOTPLUG_VOLTAGE_70 (3<<18) +#define ADPA_CRT_HOTPLUG_VOLREF_325MV (0<<17) +#define ADPA_CRT_HOTPLUG_VOLREF_475MV (1<<17) +#define ADPA_CRT_HOTPLUG_FORCE_TRIGGER (1<<16) +#define ADPA_USE_VGA_HVPOLARITY (1<<15) +#define ADPA_SETS_HVPOLARITY 0 +#define ADPA_VSYNC_CNTL_DISABLE (1<<11) +#define ADPA_VSYNC_CNTL_ENABLE 0 +#define ADPA_HSYNC_CNTL_DISABLE (1<<10) +#define ADPA_HSYNC_CNTL_ENABLE 0 +#define ADPA_VSYNC_ACTIVE_HIGH (1<<4) +#define ADPA_VSYNC_ACTIVE_LOW 0 +#define ADPA_HSYNC_ACTIVE_HIGH (1<<3) +#define ADPA_HSYNC_ACTIVE_LOW 0 +#define ADPA_DPMS_MASK (~(3<<10)) +#define ADPA_DPMS_ON (0<<10) +#define ADPA_DPMS_SUSPEND (1<<10) +#define ADPA_DPMS_STANDBY (2<<10) +#define ADPA_DPMS_OFF (3<<10) + + +/* Hotplug control (945+ only) */ +#define PORT_HOTPLUG_EN 0x61110 +#define HDMIB_HOTPLUG_INT_EN (1 << 29) +#define DPB_HOTPLUG_INT_EN (1 << 29) +#define HDMIC_HOTPLUG_INT_EN (1 << 28) +#define DPC_HOTPLUG_INT_EN (1 << 28) +#define HDMID_HOTPLUG_INT_EN (1 << 27) +#define DPD_HOTPLUG_INT_EN (1 << 27) +#define SDVOB_HOTPLUG_INT_EN (1 << 26) +#define SDVOC_HOTPLUG_INT_EN (1 << 25) +#define TV_HOTPLUG_INT_EN (1 << 18) +#define CRT_HOTPLUG_INT_EN (1 << 9) +#define CRT_HOTPLUG_FORCE_DETECT (1 << 3) +#define CRT_HOTPLUG_ACTIVATION_PERIOD_32 (0 << 8) +/* must use period 64 on GM45 according to docs */ +#define CRT_HOTPLUG_ACTIVATION_PERIOD_64 (1 << 8) +#define CRT_HOTPLUG_DAC_ON_TIME_2M (0 << 7) +#define CRT_HOTPLUG_DAC_ON_TIME_4M (1 << 7) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_40 (0 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_50 (1 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_60 (2 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_70 (3 << 5) +#define CRT_HOTPLUG_VOLTAGE_COMPARE_MASK (3 << 5) +#define CRT_HOTPLUG_DETECT_DELAY_1G (0 << 4) +#define CRT_HOTPLUG_DETECT_DELAY_2G (1 << 4) +#define CRT_HOTPLUG_DETECT_VOLTAGE_325MV (0 << 2) +#define CRT_HOTPLUG_DETECT_VOLTAGE_475MV (1 << 2) + +#define PORT_HOTPLUG_STAT 0x61114 +/* HDMI/DP bits are gen4+ */ +#define DPB_HOTPLUG_LIVE_STATUS (1 << 29) +#define DPC_HOTPLUG_LIVE_STATUS (1 << 28) +#define DPD_HOTPLUG_LIVE_STATUS (1 << 27) +#define DPD_HOTPLUG_INT_STATUS (3 << 21) +#define DPC_HOTPLUG_INT_STATUS (3 << 19) +#define DPB_HOTPLUG_INT_STATUS (3 << 17) +/* HDMI bits are shared with the DP bits */ +#define HDMIB_HOTPLUG_LIVE_STATUS (1 << 29) +#define HDMIC_HOTPLUG_LIVE_STATUS (1 << 28) +#define HDMID_HOTPLUG_LIVE_STATUS (1 << 27) +#define HDMID_HOTPLUG_INT_STATUS (3 << 21) +#define HDMIC_HOTPLUG_INT_STATUS (3 << 19) +#define HDMIB_HOTPLUG_INT_STATUS (3 << 17) +/* CRT/TV common between gen3+ */ +#define CRT_HOTPLUG_INT_STATUS (1 << 11) +#define TV_HOTPLUG_INT_STATUS (1 << 10) +#define CRT_HOTPLUG_MONITOR_MASK (3 << 8) +#define CRT_HOTPLUG_MONITOR_COLOR (3 << 8) +#define CRT_HOTPLUG_MONITOR_MONO (2 << 8) +#define CRT_HOTPLUG_MONITOR_NONE (0 << 8) +/* SDVO is different across gen3/4 */ +#define SDVOC_HOTPLUG_INT_STATUS_G4X (1 << 3) +#define SDVOB_HOTPLUG_INT_STATUS_G4X (1 << 2) +#define SDVOC_HOTPLUG_INT_STATUS_I965 (3 << 4) +#define SDVOB_HOTPLUG_INT_STATUS_I965 (3 << 2) +#define SDVOC_HOTPLUG_INT_STATUS_I915 (1 << 7) +#define SDVOB_HOTPLUG_INT_STATUS_I915 (1 << 6) + +/* SDVO port control */ +#define SDVOB 0x61140 +#define SDVOC 0x61160 +#define SDVO_ENABLE (1 << 31) +#define SDVO_PIPE_B_SELECT (1 << 30) +#define SDVO_STALL_SELECT (1 << 29) +#define SDVO_INTERRUPT_ENABLE (1 << 26) +/** + * 915G/GM SDVO pixel multiplier. + * + * Programmed value is multiplier - 1, up to 5x. + * + * \sa DPLL_MD_UDI_MULTIPLIER_MASK + */ +#define SDVO_PORT_MULTIPLY_MASK (7 << 23) +#define SDVO_PORT_MULTIPLY_SHIFT 23 +#define SDVO_PHASE_SELECT_MASK (15 << 19) +#define SDVO_PHASE_SELECT_DEFAULT (6 << 19) +#define SDVO_CLOCK_OUTPUT_INVERT (1 << 18) +#define SDVOC_GANG_MODE (1 << 16) +#define SDVO_ENCODING_SDVO (0x0 << 10) +#define SDVO_ENCODING_HDMI (0x2 << 10) +/** Requird for HDMI operation */ +#define SDVO_NULL_PACKETS_DURING_VSYNC (1 << 9) +#define SDVO_COLOR_RANGE_16_235 (1 << 8) +#define SDVO_BORDER_ENABLE (1 << 7) +#define SDVO_AUDIO_ENABLE (1 << 6) +/** New with 965, default is to be set */ +#define SDVO_VSYNC_ACTIVE_HIGH (1 << 4) +/** New with 965, default is to be set */ +#define SDVO_HSYNC_ACTIVE_HIGH (1 << 3) +#define SDVOB_PCIE_CONCURRENCY (1 << 3) +#define SDVO_DETECTED (1 << 2) +/* Bits to be preserved when writing */ +#define SDVOB_PRESERVE_MASK ((1 << 17) | (1 << 16) | (1 << 14) | (1 << 26)) +#define SDVOC_PRESERVE_MASK ((1 << 17) | (1 << 26)) + +/* DVO port control */ +#define DVOA 0x61120 +#define DVOB 0x61140 +#define DVOC 0x61160 +#define DVO_ENABLE (1 << 31) +#define DVO_PIPE_B_SELECT (1 << 30) +#define DVO_PIPE_STALL_UNUSED (0 << 28) +#define DVO_PIPE_STALL (1 << 28) +#define DVO_PIPE_STALL_TV (2 << 28) +#define DVO_PIPE_STALL_MASK (3 << 28) +#define DVO_USE_VGA_SYNC (1 << 15) +#define DVO_DATA_ORDER_I740 (0 << 14) +#define DVO_DATA_ORDER_FP (1 << 14) +#define DVO_VSYNC_DISABLE (1 << 11) +#define DVO_HSYNC_DISABLE (1 << 10) +#define DVO_VSYNC_TRISTATE (1 << 9) +#define DVO_HSYNC_TRISTATE (1 << 8) +#define DVO_BORDER_ENABLE (1 << 7) +#define DVO_DATA_ORDER_GBRG (1 << 6) +#define DVO_DATA_ORDER_RGGB (0 << 6) +#define DVO_DATA_ORDER_GBRG_ERRATA (0 << 6) +#define DVO_DATA_ORDER_RGGB_ERRATA (1 << 6) +#define DVO_VSYNC_ACTIVE_HIGH (1 << 4) +#define DVO_HSYNC_ACTIVE_HIGH (1 << 3) +#define DVO_BLANK_ACTIVE_HIGH (1 << 2) +#define DVO_OUTPUT_CSTATE_PIXELS (1 << 1) /* SDG only */ +#define DVO_OUTPUT_SOURCE_SIZE_PIXELS (1 << 0) /* SDG only */ +#define DVO_PRESERVE_MASK (0x7<<24) +#define DVOA_SRCDIM 0x61124 +#define DVOB_SRCDIM 0x61144 +#define DVOC_SRCDIM 0x61164 +#define DVO_SRCDIM_HORIZONTAL_SHIFT 12 +#define DVO_SRCDIM_VERTICAL_SHIFT 0 + +/* LVDS port control */ +#define LVDS 0x61180 +/* + * Enables the LVDS port. This bit must be set before DPLLs are enabled, as + * the DPLL semantics change when the LVDS is assigned to that pipe. + */ +#define LVDS_PORT_EN (1 << 31) +/* Selects pipe B for LVDS data. Must be set on pre-965. */ +#define LVDS_PIPEB_SELECT (1 << 30) +#define LVDS_PIPE_MASK (1 << 30) +#define LVDS_PIPE(pipe) ((pipe) << 30) +/* LVDS dithering flag on 965/g4x platform */ +#define LVDS_ENABLE_DITHER (1 << 25) +/* LVDS sync polarity flags. Set to invert (i.e. negative) */ +#define LVDS_VSYNC_POLARITY (1 << 21) +#define LVDS_HSYNC_POLARITY (1 << 20) + +/* Enable border for unscaled (or aspect-scaled) display */ +#define LVDS_BORDER_ENABLE (1 << 15) +/* + * Enables the A0-A2 data pairs and CLKA, containing 18 bits of color data per + * pixel. + */ +#define LVDS_A0A2_CLKA_POWER_MASK (3 << 8) +#define LVDS_A0A2_CLKA_POWER_DOWN (0 << 8) +#define LVDS_A0A2_CLKA_POWER_UP (3 << 8) +/* + * Controls the A3 data pair, which contains the additional LSBs for 24 bit + * mode. Only enabled if LVDS_A0A2_CLKA_POWER_UP also indicates it should be + * on. + */ +#define LVDS_A3_POWER_MASK (3 << 6) +#define LVDS_A3_POWER_DOWN (0 << 6) +#define LVDS_A3_POWER_UP (3 << 6) +/* + * Controls the CLKB pair. This should only be set when LVDS_B0B3_POWER_UP + * is set. + */ +#define LVDS_CLKB_POWER_MASK (3 << 4) +#define LVDS_CLKB_POWER_DOWN (0 << 4) +#define LVDS_CLKB_POWER_UP (3 << 4) +/* + * Controls the B0-B3 data pairs. This must be set to match the DPLL p2 + * setting for whether we are in dual-channel mode. The B3 pair will + * additionally only be powered up when LVDS_A3_POWER_UP is set. + */ +#define LVDS_B0B3_POWER_MASK (3 << 2) +#define LVDS_B0B3_POWER_DOWN (0 << 2) +#define LVDS_B0B3_POWER_UP (3 << 2) + +/* Video Data Island Packet control */ +#define VIDEO_DIP_DATA 0x61178 +/* Read the description of VIDEO_DIP_DATA (before Haswel) or VIDEO_DIP_ECC + * (Haswell and newer) to see which VIDEO_DIP_DATA byte corresponds to each byte + * of the infoframe structure specified by CEA-861. */ +#define VIDEO_DIP_DATA_SIZE 32 +#define VIDEO_DIP_CTL 0x61170 +/* Pre HSW: */ +#define VIDEO_DIP_ENABLE (1 << 31) +#define VIDEO_DIP_PORT_B (1 << 29) +#define VIDEO_DIP_PORT_C (2 << 29) +#define VIDEO_DIP_PORT_D (3 << 29) +#define VIDEO_DIP_PORT_MASK (3 << 29) +#define VIDEO_DIP_ENABLE_GCP (1 << 25) +#define VIDEO_DIP_ENABLE_AVI (1 << 21) +#define VIDEO_DIP_ENABLE_VENDOR (2 << 21) +#define VIDEO_DIP_ENABLE_GAMUT (4 << 21) +#define VIDEO_DIP_ENABLE_SPD (8 << 21) +#define VIDEO_DIP_SELECT_AVI (0 << 19) +#define VIDEO_DIP_SELECT_VENDOR (1 << 19) +#define VIDEO_DIP_SELECT_SPD (3 << 19) +#define VIDEO_DIP_SELECT_MASK (3 << 19) +#define VIDEO_DIP_FREQ_ONCE (0 << 16) +#define VIDEO_DIP_FREQ_VSYNC (1 << 16) +#define VIDEO_DIP_FREQ_2VSYNC (2 << 16) +#define VIDEO_DIP_FREQ_MASK (3 << 16) +/* HSW and later: */ +#define VIDEO_DIP_ENABLE_VSC_HSW (1 << 20) +#define VIDEO_DIP_ENABLE_GCP_HSW (1 << 16) +#define VIDEO_DIP_ENABLE_AVI_HSW (1 << 12) +#define VIDEO_DIP_ENABLE_VS_HSW (1 << 8) +#define VIDEO_DIP_ENABLE_GMP_HSW (1 << 4) +#define VIDEO_DIP_ENABLE_SPD_HSW (1 << 0) + +/* Panel power sequencing */ +#define PP_STATUS 0x61200 +#define PP_ON (1 << 31) +/* + * Indicates that all dependencies of the panel are on: + * + * - PLL enabled + * - pipe enabled + * - LVDS/DVOB/DVOC on + */ +#define PP_READY (1 << 30) +#define PP_SEQUENCE_NONE (0 << 28) +#define PP_SEQUENCE_POWER_UP (1 << 28) +#define PP_SEQUENCE_POWER_DOWN (2 << 28) +#define PP_SEQUENCE_MASK (3 << 28) +#define PP_SEQUENCE_SHIFT 28 +#define PP_CYCLE_DELAY_ACTIVE (1 << 27) +#define PP_SEQUENCE_STATE_MASK 0x0000000f +#define PP_SEQUENCE_STATE_OFF_IDLE (0x0 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_1 (0x1 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_2 (0x2 << 0) +#define PP_SEQUENCE_STATE_OFF_S0_3 (0x3 << 0) +#define PP_SEQUENCE_STATE_ON_IDLE (0x8 << 0) +#define PP_SEQUENCE_STATE_ON_S1_0 (0x9 << 0) +#define PP_SEQUENCE_STATE_ON_S1_2 (0xa << 0) +#define PP_SEQUENCE_STATE_ON_S1_3 (0xb << 0) +#define PP_SEQUENCE_STATE_RESET (0xf << 0) +#define PP_CONTROL 0x61204 +#define POWER_TARGET_ON (1 << 0) +#define PP_ON_DELAYS 0x61208 +#define PP_OFF_DELAYS 0x6120c +#define PP_DIVISOR 0x61210 + +/* Panel fitting */ +#define PFIT_CONTROL 0x61230 +#define PFIT_ENABLE (1 << 31) +#define PFIT_PIPE_MASK (3 << 29) +#define PFIT_PIPE_SHIFT 29 +#define VERT_INTERP_DISABLE (0 << 10) +#define VERT_INTERP_BILINEAR (1 << 10) +#define VERT_INTERP_MASK (3 << 10) +#define VERT_AUTO_SCALE (1 << 9) +#define HORIZ_INTERP_DISABLE (0 << 6) +#define HORIZ_INTERP_BILINEAR (1 << 6) +#define HORIZ_INTERP_MASK (3 << 6) +#define HORIZ_AUTO_SCALE (1 << 5) +#define PANEL_8TO6_DITHER_ENABLE (1 << 3) +#define PFIT_FILTER_FUZZY (0 << 24) +#define PFIT_SCALING_AUTO (0 << 26) +#define PFIT_SCALING_PROGRAMMED (1 << 26) +#define PFIT_SCALING_PILLAR (2 << 26) +#define PFIT_SCALING_LETTER (3 << 26) +#define PFIT_PGM_RATIOS 0x61234 +#define PFIT_VERT_SCALE_MASK 0xfff00000 +#define PFIT_HORIZ_SCALE_MASK 0x0000fff0 +/* Pre-965 */ +#define PFIT_VERT_SCALE_SHIFT 20 +#define PFIT_VERT_SCALE_MASK 0xfff00000 +#define PFIT_HORIZ_SCALE_SHIFT 4 +#define PFIT_HORIZ_SCALE_MASK 0x0000fff0 +/* 965+ */ +#define PFIT_VERT_SCALE_SHIFT_965 16 +#define PFIT_VERT_SCALE_MASK_965 0x1fff0000 +#define PFIT_HORIZ_SCALE_SHIFT_965 0 +#define PFIT_HORIZ_SCALE_MASK_965 0x00001fff + +#define PFIT_AUTO_RATIOS 0x61238 + +/* Backlight control */ +#define BLC_PWM_CTL2 0x61250 /* 965+ only */ +#define BLM_PWM_ENABLE (1 << 31) +#define BLM_COMBINATION_MODE (1 << 30) /* gen4 only */ +#define BLM_PIPE_SELECT (1 << 29) +#define BLM_PIPE_SELECT_IVB (3 << 29) +#define BLM_PIPE_A (0 << 29) +#define BLM_PIPE_B (1 << 29) +#define BLM_PIPE_C (2 << 29) /* ivb + */ +#define BLM_PIPE(pipe) ((pipe) << 29) +#define BLM_POLARITY_I965 (1 << 28) /* gen4 only */ +#define BLM_PHASE_IN_INTERUPT_STATUS (1 << 26) +#define BLM_PHASE_IN_ENABLE (1 << 25) +#define BLM_PHASE_IN_INTERUPT_ENABL (1 << 24) +#define BLM_PHASE_IN_TIME_BASE_SHIFT (16) +#define BLM_PHASE_IN_TIME_BASE_MASK (0xff << 16) +#define BLM_PHASE_IN_COUNT_SHIFT (8) +#define BLM_PHASE_IN_COUNT_MASK (0xff << 8) +#define BLM_PHASE_IN_INCR_SHIFT (0) +#define BLM_PHASE_IN_INCR_MASK (0xff << 0) +#define BLC_PWM_CTL 0x61254 +/* + * This is the most significant 15 bits of the number of backlight cycles in a + * complete cycle of the modulated backlight control. + * + * The actual value is this field multiplied by two. + */ +#define BACKLIGHT_MODULATION_FREQ_SHIFT (17) +#define BACKLIGHT_MODULATION_FREQ_MASK (0x7fff << 17) +#define BLM_LEGACY_MODE (1 << 16) /* gen2 only */ +/* + * This is the number of cycles out of the backlight modulation cycle for which + * the backlight is on. + * + * This field must be no greater than the number of cycles in the complete + * backlight modulation cycle. + */ +#define BACKLIGHT_DUTY_CYCLE_SHIFT (0) +#define BACKLIGHT_DUTY_CYCLE_MASK (0xffff) +#define BACKLIGHT_DUTY_CYCLE_MASK_PNV (0xfffe) +#define BLM_POLARITY_PNV (1 << 0) /* pnv only */ + +#define BLC_HIST_CTL 0x61260 + +/* New registers for PCH-split platforms. Safe where new bits show up, the + * register layout machtes with gen4 BLC_PWM_CTL[12]. */ +#define BLC_PWM_CPU_CTL2 0x48250 +#define BLC_PWM_CPU_CTL 0x48254 + +/* PCH CTL1 is totally different, all but the below bits are reserved. CTL2 is + * like the normal CTL from gen4 and earlier. Hooray for confusing naming. */ +#define BLC_PWM_PCH_CTL1 0xc8250 +#define BLM_PCH_PWM_ENABLE (1 << 31) +#define BLM_PCH_OVERRIDE_ENABLE (1 << 30) +#define BLM_PCH_POLARITY (1 << 29) +#define BLC_PWM_PCH_CTL2 0xc8254 + +/* TV port control */ +#define TV_CTL 0x68000 +/** Enables the TV encoder */ +# define TV_ENC_ENABLE (1 << 31) +/** Sources the TV encoder input from pipe B instead of A. */ +# define TV_ENC_PIPEB_SELECT (1 << 30) +/** Outputs composite video (DAC A only) */ +# define TV_ENC_OUTPUT_COMPOSITE (0 << 28) +/** Outputs SVideo video (DAC B/C) */ +# define TV_ENC_OUTPUT_SVIDEO (1 << 28) +/** Outputs Component video (DAC A/B/C) */ +# define TV_ENC_OUTPUT_COMPONENT (2 << 28) +/** Outputs Composite and SVideo (DAC A/B/C) */ +# define TV_ENC_OUTPUT_SVIDEO_COMPOSITE (3 << 28) +# define TV_TRILEVEL_SYNC (1 << 21) +/** Enables slow sync generation (945GM only) */ +# define TV_SLOW_SYNC (1 << 20) +/** Selects 4x oversampling for 480i and 576p */ +# define TV_OVERSAMPLE_4X (0 << 18) +/** Selects 2x oversampling for 720p and 1080i */ +# define TV_OVERSAMPLE_2X (1 << 18) +/** Selects no oversampling for 1080p */ +# define TV_OVERSAMPLE_NONE (2 << 18) +/** Selects 8x oversampling */ +# define TV_OVERSAMPLE_8X (3 << 18) +/** Selects progressive mode rather than interlaced */ +# define TV_PROGRESSIVE (1 << 17) +/** Sets the colorburst to PAL mode. Required for non-M PAL modes. */ +# define TV_PAL_BURST (1 << 16) +/** Field for setting delay of Y compared to C */ +# define TV_YC_SKEW_MASK (7 << 12) +/** Enables a fix for 480p/576p standard definition modes on the 915GM only */ +# define TV_ENC_SDP_FIX (1 << 11) +/** + * Enables a fix for the 915GM only. + * + * Not sure what it does. + */ +# define TV_ENC_C0_FIX (1 << 10) +/** Bits that must be preserved by software */ +# define TV_CTL_SAVE ((1 << 11) | (3 << 9) | (7 << 6) | 0xf) +# define TV_FUSE_STATE_MASK (3 << 4) +/** Read-only state that reports all features enabled */ +# define TV_FUSE_STATE_ENABLED (0 << 4) +/** Read-only state that reports that Macrovision is disabled in hardware*/ +# define TV_FUSE_STATE_NO_MACROVISION (1 << 4) +/** Read-only state that reports that TV-out is disabled in hardware. */ +# define TV_FUSE_STATE_DISABLED (2 << 4) +/** Normal operation */ +# define TV_TEST_MODE_NORMAL (0 << 0) +/** Encoder test pattern 1 - combo pattern */ +# define TV_TEST_MODE_PATTERN_1 (1 << 0) +/** Encoder test pattern 2 - full screen vertical 75% color bars */ +# define TV_TEST_MODE_PATTERN_2 (2 << 0) +/** Encoder test pattern 3 - full screen horizontal 75% color bars */ +# define TV_TEST_MODE_PATTERN_3 (3 << 0) +/** Encoder test pattern 4 - random noise */ +# define TV_TEST_MODE_PATTERN_4 (4 << 0) +/** Encoder test pattern 5 - linear color ramps */ +# define TV_TEST_MODE_PATTERN_5 (5 << 0) +/** + * This test mode forces the DACs to 50% of full output. + * + * This is used for load detection in combination with TVDAC_SENSE_MASK + */ +# define TV_TEST_MODE_MONITOR_DETECT (7 << 0) +# define TV_TEST_MODE_MASK (7 << 0) + +#define TV_DAC 0x68004 +# define TV_DAC_SAVE 0x00ffff00 +/** + * Reports that DAC state change logic has reported change (RO). + * + * This gets cleared when TV_DAC_STATE_EN is cleared +*/ +# define TVDAC_STATE_CHG (1 << 31) +# define TVDAC_SENSE_MASK (7 << 28) +/** Reports that DAC A voltage is above the detect threshold */ +# define TVDAC_A_SENSE (1 << 30) +/** Reports that DAC B voltage is above the detect threshold */ +# define TVDAC_B_SENSE (1 << 29) +/** Reports that DAC C voltage is above the detect threshold */ +# define TVDAC_C_SENSE (1 << 28) +/** + * Enables DAC state detection logic, for load-based TV detection. + * + * The PLL of the chosen pipe (in TV_CTL) must be running, and the encoder set + * to off, for load detection to work. + */ +# define TVDAC_STATE_CHG_EN (1 << 27) +/** Sets the DAC A sense value to high */ +# define TVDAC_A_SENSE_CTL (1 << 26) +/** Sets the DAC B sense value to high */ +# define TVDAC_B_SENSE_CTL (1 << 25) +/** Sets the DAC C sense value to high */ +# define TVDAC_C_SENSE_CTL (1 << 24) +/** Overrides the ENC_ENABLE and DAC voltage levels */ +# define DAC_CTL_OVERRIDE (1 << 7) +/** Sets the slew rate. Must be preserved in software */ +# define ENC_TVDAC_SLEW_FAST (1 << 6) +# define DAC_A_1_3_V (0 << 4) +# define DAC_A_1_1_V (1 << 4) +# define DAC_A_0_7_V (2 << 4) +# define DAC_A_MASK (3 << 4) +# define DAC_B_1_3_V (0 << 2) +# define DAC_B_1_1_V (1 << 2) +# define DAC_B_0_7_V (2 << 2) +# define DAC_B_MASK (3 << 2) +# define DAC_C_1_3_V (0 << 0) +# define DAC_C_1_1_V (1 << 0) +# define DAC_C_0_7_V (2 << 0) +# define DAC_C_MASK (3 << 0) + +/** + * CSC coefficients are stored in a floating point format with 9 bits of + * mantissa and 2 or 3 bits of exponent. The exponent is represented as 2**-n, + * where 2-bit exponents are unsigned n, and 3-bit exponents are signed n with + * -1 (0x3) being the only legal negative value. + */ +#define TV_CSC_Y 0x68010 +# define TV_RY_MASK 0x07ff0000 +# define TV_RY_SHIFT 16 +# define TV_GY_MASK 0x00000fff +# define TV_GY_SHIFT 0 + +#define TV_CSC_Y2 0x68014 +# define TV_BY_MASK 0x07ff0000 +# define TV_BY_SHIFT 16 +/** + * Y attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AY_MASK 0x000003ff +# define TV_AY_SHIFT 0 + +#define TV_CSC_U 0x68018 +# define TV_RU_MASK 0x07ff0000 +# define TV_RU_SHIFT 16 +# define TV_GU_MASK 0x000007ff +# define TV_GU_SHIFT 0 + +#define TV_CSC_U2 0x6801c +# define TV_BU_MASK 0x07ff0000 +# define TV_BU_SHIFT 16 +/** + * U attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AU_MASK 0x000003ff +# define TV_AU_SHIFT 0 + +#define TV_CSC_V 0x68020 +# define TV_RV_MASK 0x0fff0000 +# define TV_RV_SHIFT 16 +# define TV_GV_MASK 0x000007ff +# define TV_GV_SHIFT 0 + +#define TV_CSC_V2 0x68024 +# define TV_BV_MASK 0x07ff0000 +# define TV_BV_SHIFT 16 +/** + * V attenuation for component video. + * + * Stored in 1.9 fixed point. + */ +# define TV_AV_MASK 0x000007ff +# define TV_AV_SHIFT 0 + +#define TV_CLR_KNOBS 0x68028 +/** 2s-complement brightness adjustment */ +# define TV_BRIGHTNESS_MASK 0xff000000 +# define TV_BRIGHTNESS_SHIFT 24 +/** Contrast adjustment, as a 2.6 unsigned floating point number */ +# define TV_CONTRAST_MASK 0x00ff0000 +# define TV_CONTRAST_SHIFT 16 +/** Saturation adjustment, as a 2.6 unsigned floating point number */ +# define TV_SATURATION_MASK 0x0000ff00 +# define TV_SATURATION_SHIFT 8 +/** Hue adjustment, as an integer phase angle in degrees */ +# define TV_HUE_MASK 0x000000ff +# define TV_HUE_SHIFT 0 + +#define TV_CLR_LEVEL 0x6802c +/** Controls the DAC level for black */ +# define TV_BLACK_LEVEL_MASK 0x01ff0000 +# define TV_BLACK_LEVEL_SHIFT 16 +/** Controls the DAC level for blanking */ +# define TV_BLANK_LEVEL_MASK 0x000001ff +# define TV_BLANK_LEVEL_SHIFT 0 + +#define TV_H_CTL_1 0x68030 +/** Number of pixels in the hsync. */ +# define TV_HSYNC_END_MASK 0x1fff0000 +# define TV_HSYNC_END_SHIFT 16 +/** Total number of pixels minus one in the line (display and blanking). */ +# define TV_HTOTAL_MASK 0x00001fff +# define TV_HTOTAL_SHIFT 0 + +#define TV_H_CTL_2 0x68034 +/** Enables the colorburst (needed for non-component color) */ +# define TV_BURST_ENA (1 << 31) +/** Offset of the colorburst from the start of hsync, in pixels minus one. */ +# define TV_HBURST_START_SHIFT 16 +# define TV_HBURST_START_MASK 0x1fff0000 +/** Length of the colorburst */ +# define TV_HBURST_LEN_SHIFT 0 +# define TV_HBURST_LEN_MASK 0x0001fff + +#define TV_H_CTL_3 0x68038 +/** End of hblank, measured in pixels minus one from start of hsync */ +# define TV_HBLANK_END_SHIFT 16 +# define TV_HBLANK_END_MASK 0x1fff0000 +/** Start of hblank, measured in pixels minus one from start of hsync */ +# define TV_HBLANK_START_SHIFT 0 +# define TV_HBLANK_START_MASK 0x0001fff + +#define TV_V_CTL_1 0x6803c +/** XXX */ +# define TV_NBR_END_SHIFT 16 +# define TV_NBR_END_MASK 0x07ff0000 +/** XXX */ +# define TV_VI_END_F1_SHIFT 8 +# define TV_VI_END_F1_MASK 0x00003f00 +/** XXX */ +# define TV_VI_END_F2_SHIFT 0 +# define TV_VI_END_F2_MASK 0x0000003f + +#define TV_V_CTL_2 0x68040 +/** Length of vsync, in half lines */ +# define TV_VSYNC_LEN_MASK 0x07ff0000 +# define TV_VSYNC_LEN_SHIFT 16 +/** Offset of the start of vsync in field 1, measured in one less than the + * number of half lines. + */ +# define TV_VSYNC_START_F1_MASK 0x00007f00 +# define TV_VSYNC_START_F1_SHIFT 8 +/** + * Offset of the start of vsync in field 2, measured in one less than the + * number of half lines. + */ +# define TV_VSYNC_START_F2_MASK 0x0000007f +# define TV_VSYNC_START_F2_SHIFT 0 + +#define TV_V_CTL_3 0x68044 +/** Enables generation of the equalization signal */ +# define TV_EQUAL_ENA (1 << 31) +/** Length of vsync, in half lines */ +# define TV_VEQ_LEN_MASK 0x007f0000 +# define TV_VEQ_LEN_SHIFT 16 +/** Offset of the start of equalization in field 1, measured in one less than + * the number of half lines. + */ +# define TV_VEQ_START_F1_MASK 0x0007f00 +# define TV_VEQ_START_F1_SHIFT 8 +/** + * Offset of the start of equalization in field 2, measured in one less than + * the number of half lines. + */ +# define TV_VEQ_START_F2_MASK 0x000007f +# define TV_VEQ_START_F2_SHIFT 0 + +#define TV_V_CTL_4 0x68048 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F1_MASK 0x003f0000 +# define TV_VBURST_START_F1_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F1_MASK 0x000000ff +# define TV_VBURST_END_F1_SHIFT 0 + +#define TV_V_CTL_5 0x6804c +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F2_MASK 0x003f0000 +# define TV_VBURST_START_F2_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F2_MASK 0x000000ff +# define TV_VBURST_END_F2_SHIFT 0 + +#define TV_V_CTL_6 0x68050 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F3_MASK 0x003f0000 +# define TV_VBURST_START_F3_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F3_MASK 0x000000ff +# define TV_VBURST_END_F3_SHIFT 0 + +#define TV_V_CTL_7 0x68054 +/** + * Offset to start of vertical colorburst, measured in one less than the + * number of lines from vertical start. + */ +# define TV_VBURST_START_F4_MASK 0x003f0000 +# define TV_VBURST_START_F4_SHIFT 16 +/** + * Offset to the end of vertical colorburst, measured in one less than the + * number of lines from the start of NBR. + */ +# define TV_VBURST_END_F4_MASK 0x000000ff +# define TV_VBURST_END_F4_SHIFT 0 + +#define TV_SC_CTL_1 0x68060 +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA1_EN (1 << 31) +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA2_EN (1 << 30) +/** Turns on the first subcarrier phase generation DDA */ +# define TV_SC_DDA3_EN (1 << 29) +/** Sets the subcarrier DDA to reset frequency every other field */ +# define TV_SC_RESET_EVERY_2 (0 << 24) +/** Sets the subcarrier DDA to reset frequency every fourth field */ +# define TV_SC_RESET_EVERY_4 (1 << 24) +/** Sets the subcarrier DDA to reset frequency every eighth field */ +# define TV_SC_RESET_EVERY_8 (2 << 24) +/** Sets the subcarrier DDA to never reset the frequency */ +# define TV_SC_RESET_NEVER (3 << 24) +/** Sets the peak amplitude of the colorburst.*/ +# define TV_BURST_LEVEL_MASK 0x00ff0000 +# define TV_BURST_LEVEL_SHIFT 16 +/** Sets the increment of the first subcarrier phase generation DDA */ +# define TV_SCDDA1_INC_MASK 0x00000fff +# define TV_SCDDA1_INC_SHIFT 0 + +#define TV_SC_CTL_2 0x68064 +/** Sets the rollover for the second subcarrier phase generation DDA */ +# define TV_SCDDA2_SIZE_MASK 0x7fff0000 +# define TV_SCDDA2_SIZE_SHIFT 16 +/** Sets the increent of the second subcarrier phase generation DDA */ +# define TV_SCDDA2_INC_MASK 0x00007fff +# define TV_SCDDA2_INC_SHIFT 0 + +#define TV_SC_CTL_3 0x68068 +/** Sets the rollover for the third subcarrier phase generation DDA */ +# define TV_SCDDA3_SIZE_MASK 0x7fff0000 +# define TV_SCDDA3_SIZE_SHIFT 16 +/** Sets the increent of the third subcarrier phase generation DDA */ +# define TV_SCDDA3_INC_MASK 0x00007fff +# define TV_SCDDA3_INC_SHIFT 0 + +#define TV_WIN_POS 0x68070 +/** X coordinate of the display from the start of horizontal active */ +# define TV_XPOS_MASK 0x1fff0000 +# define TV_XPOS_SHIFT 16 +/** Y coordinate of the display from the start of vertical active (NBR) */ +# define TV_YPOS_MASK 0x00000fff +# define TV_YPOS_SHIFT 0 + +#define TV_WIN_SIZE 0x68074 +/** Horizontal size of the display window, measured in pixels*/ +# define TV_XSIZE_MASK 0x1fff0000 +# define TV_XSIZE_SHIFT 16 +/** + * Vertical size of the display window, measured in pixels. + * + * Must be even for interlaced modes. + */ +# define TV_YSIZE_MASK 0x00000fff +# define TV_YSIZE_SHIFT 0 + +#define TV_FILTER_CTL_1 0x68080 +/** + * Enables automatic scaling calculation. + * + * If set, the rest of the registers are ignored, and the calculated values can + * be read back from the register. + */ +# define TV_AUTO_SCALE (1 << 31) +/** + * Disables the vertical filter. + * + * This is required on modes more than 1024 pixels wide */ +# define TV_V_FILTER_BYPASS (1 << 29) +/** Enables adaptive vertical filtering */ +# define TV_VADAPT (1 << 28) +# define TV_VADAPT_MODE_MASK (3 << 26) +/** Selects the least adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_LEAST (0 << 26) +/** Selects the moderately adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_MODERATE (1 << 26) +/** Selects the most adaptive vertical filtering mode */ +# define TV_VADAPT_MODE_MOST (3 << 26) +/** + * Sets the horizontal scaling factor. + * + * This should be the fractional part of the horizontal scaling factor divided + * by the oversampling rate. TV_HSCALE should be less than 1, and set to: + * + * (src width - 1) / ((oversample * dest width) - 1) + */ +# define TV_HSCALE_FRAC_MASK 0x00003fff +# define TV_HSCALE_FRAC_SHIFT 0 + +#define TV_FILTER_CTL_2 0x68084 +/** + * Sets the integer part of the 3.15 fixed-point vertical scaling factor. + * + * TV_VSCALE should be (src height - 1) / ((interlace * dest height) - 1) + */ +# define TV_VSCALE_INT_MASK 0x00038000 +# define TV_VSCALE_INT_SHIFT 15 +/** + * Sets the fractional part of the 3.15 fixed-point vertical scaling factor. + * + * \sa TV_VSCALE_INT_MASK + */ +# define TV_VSCALE_FRAC_MASK 0x00007fff +# define TV_VSCALE_FRAC_SHIFT 0 + +#define TV_FILTER_CTL_3 0x68088 +/** + * Sets the integer part of the 3.15 fixed-point vertical scaling factor. + * + * TV_VSCALE should be (src height - 1) / (1/4 * (dest height - 1)) + * + * For progressive modes, TV_VSCALE_IP_INT should be set to zeroes. + */ +# define TV_VSCALE_IP_INT_MASK 0x00038000 +# define TV_VSCALE_IP_INT_SHIFT 15 +/** + * Sets the fractional part of the 3.15 fixed-point vertical scaling factor. + * + * For progressive modes, TV_VSCALE_IP_INT should be set to zeroes. + * + * \sa TV_VSCALE_IP_INT_MASK + */ +# define TV_VSCALE_IP_FRAC_MASK 0x00007fff +# define TV_VSCALE_IP_FRAC_SHIFT 0 + +#define TV_CC_CONTROL 0x68090 +# define TV_CC_ENABLE (1 << 31) +/** + * Specifies which field to send the CC data in. + * + * CC data is usually sent in field 0. + */ +# define TV_CC_FID_MASK (1 << 27) +# define TV_CC_FID_SHIFT 27 +/** Sets the horizontal position of the CC data. Usually 135. */ +# define TV_CC_HOFF_MASK 0x03ff0000 +# define TV_CC_HOFF_SHIFT 16 +/** Sets the vertical position of the CC data. Usually 21 */ +# define TV_CC_LINE_MASK 0x0000003f +# define TV_CC_LINE_SHIFT 0 + +#define TV_CC_DATA 0x68094 +# define TV_CC_RDY (1 << 31) +/** Second word of CC data to be transmitted. */ +# define TV_CC_DATA_2_MASK 0x007f0000 +# define TV_CC_DATA_2_SHIFT 16 +/** First word of CC data to be transmitted. */ +# define TV_CC_DATA_1_MASK 0x0000007f +# define TV_CC_DATA_1_SHIFT 0 + +#define TV_H_LUMA_0 0x68100 +#define TV_H_LUMA_59 0x681ec +#define TV_H_CHROMA_0 0x68200 +#define TV_H_CHROMA_59 0x682ec +#define TV_V_LUMA_0 0x68300 +#define TV_V_LUMA_42 0x683a8 +#define TV_V_CHROMA_0 0x68400 +#define TV_V_CHROMA_42 0x684a8 + +/* Display Port */ +#define DP_A 0x64000 /* eDP */ +#define DP_B 0x64100 +#define DP_C 0x64200 +#define DP_D 0x64300 + +#define DP_PORT_EN (1 << 31) +#define DP_PIPEB_SELECT (1 << 30) +#define DP_PIPE_MASK (1 << 30) + +/* Link training mode - select a suitable mode for each stage */ +#define DP_LINK_TRAIN_PAT_1 (0 << 28) +#define DP_LINK_TRAIN_PAT_2 (1 << 28) +#define DP_LINK_TRAIN_PAT_IDLE (2 << 28) +#define DP_LINK_TRAIN_OFF (3 << 28) +#define DP_LINK_TRAIN_MASK (3 << 28) +#define DP_LINK_TRAIN_SHIFT 28 + +/* CPT Link training mode */ +#define DP_LINK_TRAIN_PAT_1_CPT (0 << 8) +#define DP_LINK_TRAIN_PAT_2_CPT (1 << 8) +#define DP_LINK_TRAIN_PAT_IDLE_CPT (2 << 8) +#define DP_LINK_TRAIN_OFF_CPT (3 << 8) +#define DP_LINK_TRAIN_MASK_CPT (7 << 8) +#define DP_LINK_TRAIN_SHIFT_CPT 8 + +/* Signal voltages. These are mostly controlled by the other end */ +#define DP_VOLTAGE_0_4 (0 << 25) +#define DP_VOLTAGE_0_6 (1 << 25) +#define DP_VOLTAGE_0_8 (2 << 25) +#define DP_VOLTAGE_1_2 (3 << 25) +#define DP_VOLTAGE_MASK (7 << 25) +#define DP_VOLTAGE_SHIFT 25 + +/* Signal pre-emphasis levels, like voltages, the other end tells us what + * they want + */ +#define DP_PRE_EMPHASIS_0 (0 << 22) +#define DP_PRE_EMPHASIS_3_5 (1 << 22) +#define DP_PRE_EMPHASIS_6 (2 << 22) +#define DP_PRE_EMPHASIS_9_5 (3 << 22) +#define DP_PRE_EMPHASIS_MASK (7 << 22) +#define DP_PRE_EMPHASIS_SHIFT 22 + +/* How many wires to use. I guess 3 was too hard */ +#define DP_PORT_WIDTH_1 (0 << 19) +#define DP_PORT_WIDTH_2 (1 << 19) +#define DP_PORT_WIDTH_4 (3 << 19) +#define DP_PORT_WIDTH_MASK (7 << 19) + +/* Mystic DPCD version 1.1 special mode */ +#define DP_ENHANCED_FRAMING (1 << 18) + +/* eDP */ +#define DP_PLL_FREQ_270MHZ (0 << 16) +#define DP_PLL_FREQ_160MHZ (1 << 16) +#define DP_PLL_FREQ_MASK (3 << 16) + +/** locked once port is enabled */ +#define DP_PORT_REVERSAL (1 << 15) + +/* eDP */ +#define DP_PLL_ENABLE (1 << 14) + +/** sends the clock on lane 15 of the PEG for debug */ +#define DP_CLOCK_OUTPUT_ENABLE (1 << 13) + +#define DP_SCRAMBLING_DISABLE (1 << 12) +#define DP_SCRAMBLING_DISABLE_IRONLAKE (1 << 7) + +/** limit RGB values to avoid confusing TVs */ +#define DP_COLOR_RANGE_16_235 (1 << 8) + +/** Turn on the audio link */ +#define DP_AUDIO_OUTPUT_ENABLE (1 << 6) + +/** vs and hs sync polarity */ +#define DP_SYNC_VS_HIGH (1 << 4) +#define DP_SYNC_HS_HIGH (1 << 3) + +/** A fantasy */ +#define DP_DETECTED (1 << 2) + +/** The aux channel provides a way to talk to the + * signal sink for DDC etc. Max packet size supported + * is 20 bytes in each direction, hence the 5 fixed + * data registers + */ +#define DPA_AUX_CH_CTL 0x64010 +#define DPA_AUX_CH_DATA1 0x64014 +#define DPA_AUX_CH_DATA2 0x64018 +#define DPA_AUX_CH_DATA3 0x6401c +#define DPA_AUX_CH_DATA4 0x64020 +#define DPA_AUX_CH_DATA5 0x64024 + +#define DPB_AUX_CH_CTL 0x64110 +#define DPB_AUX_CH_DATA1 0x64114 +#define DPB_AUX_CH_DATA2 0x64118 +#define DPB_AUX_CH_DATA3 0x6411c +#define DPB_AUX_CH_DATA4 0x64120 +#define DPB_AUX_CH_DATA5 0x64124 + +#define DPC_AUX_CH_CTL 0x64210 +#define DPC_AUX_CH_DATA1 0x64214 +#define DPC_AUX_CH_DATA2 0x64218 +#define DPC_AUX_CH_DATA3 0x6421c +#define DPC_AUX_CH_DATA4 0x64220 +#define DPC_AUX_CH_DATA5 0x64224 + +#define DPD_AUX_CH_CTL 0x64310 +#define DPD_AUX_CH_DATA1 0x64314 +#define DPD_AUX_CH_DATA2 0x64318 +#define DPD_AUX_CH_DATA3 0x6431c +#define DPD_AUX_CH_DATA4 0x64320 +#define DPD_AUX_CH_DATA5 0x64324 + +#define DP_AUX_CH_CTL_SEND_BUSY (1 << 31) +#define DP_AUX_CH_CTL_DONE (1 << 30) +#define DP_AUX_CH_CTL_INTERRUPT (1 << 29) +#define DP_AUX_CH_CTL_TIME_OUT_ERROR (1 << 28) +#define DP_AUX_CH_CTL_TIME_OUT_400us (0 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_600us (1 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_800us (2 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_1600us (3 << 26) +#define DP_AUX_CH_CTL_TIME_OUT_MASK (3 << 26) +#define DP_AUX_CH_CTL_RECEIVE_ERROR (1 << 25) +#define DP_AUX_CH_CTL_MESSAGE_SIZE_MASK (0x1f << 20) +#define DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT 20 +#define DP_AUX_CH_CTL_PRECHARGE_2US_MASK (0xf << 16) +#define DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT 16 +#define DP_AUX_CH_CTL_AUX_AKSV_SELECT (1 << 15) +#define DP_AUX_CH_CTL_MANCHESTER_TEST (1 << 14) +#define DP_AUX_CH_CTL_SYNC_TEST (1 << 13) +#define DP_AUX_CH_CTL_DEGLITCH_TEST (1 << 12) +#define DP_AUX_CH_CTL_PRECHARGE_TEST (1 << 11) +#define DP_AUX_CH_CTL_BIT_CLOCK_2X_MASK (0x7ff) +#define DP_AUX_CH_CTL_BIT_CLOCK_2X_SHIFT 0 + +/* + * Computing GMCH M and N values for the Display Port link + * + * GMCH M/N = dot clock * bytes per pixel / ls_clk * # of lanes + * + * ls_clk (we assume) is the DP link clock (1.62 or 2.7 GHz) + * + * The GMCH value is used internally + * + * bytes_per_pixel is the number of bytes coming out of the plane, + * which is after the LUTs, so we want the bytes for our color format. + * For our current usage, this is always 3, one byte for R, G and B. + */ +#define _PIPEA_GMCH_DATA_M 0x70050 +#define _PIPEB_GMCH_DATA_M 0x71050 + +/* Transfer unit size for display port - 1, default is 0x3f (for TU size 64) */ +#define PIPE_GMCH_DATA_M_TU_SIZE_MASK (0x3f << 25) +#define PIPE_GMCH_DATA_M_TU_SIZE_SHIFT 25 + +#define PIPE_GMCH_DATA_M_MASK (0xffffff) + +#define _PIPEA_GMCH_DATA_N 0x70054 +#define _PIPEB_GMCH_DATA_N 0x71054 +#define PIPE_GMCH_DATA_N_MASK (0xffffff) + +/* + * Computing Link M and N values for the Display Port link + * + * Link M / N = pixel_clock / ls_clk + * + * (the DP spec calls pixel_clock the 'strm_clk') + * + * The Link value is transmitted in the Main Stream + * Attributes and VB-ID. + */ + +#define _PIPEA_DP_LINK_M 0x70060 +#define _PIPEB_DP_LINK_M 0x71060 +#define PIPEA_DP_LINK_M_MASK (0xffffff) + +#define _PIPEA_DP_LINK_N 0x70064 +#define _PIPEB_DP_LINK_N 0x71064 +#define PIPEA_DP_LINK_N_MASK (0xffffff) + +#define PIPE_GMCH_DATA_M(pipe) _PIPE(pipe, _PIPEA_GMCH_DATA_M, _PIPEB_GMCH_DATA_M) +#define PIPE_GMCH_DATA_N(pipe) _PIPE(pipe, _PIPEA_GMCH_DATA_N, _PIPEB_GMCH_DATA_N) +#define PIPE_DP_LINK_M(pipe) _PIPE(pipe, _PIPEA_DP_LINK_M, _PIPEB_DP_LINK_M) +#define PIPE_DP_LINK_N(pipe) _PIPE(pipe, _PIPEA_DP_LINK_N, _PIPEB_DP_LINK_N) + +/* Display & cursor control */ + +/* Pipe A */ +#define _PIPEADSL 0x70000 +#define DSL_LINEMASK_GEN2 0x00000fff +#define DSL_LINEMASK_GEN3 0x00001fff +#define _PIPEACONF 0x70008 +#define PIPECONF_ENABLE (1<<31) +#define PIPECONF_DISABLE 0 +#define PIPECONF_DOUBLE_WIDE (1<<30) +#define I965_PIPECONF_ACTIVE (1<<30) +#define PIPECONF_FRAME_START_DELAY_MASK (3<<27) +#define PIPECONF_SINGLE_WIDE 0 +#define PIPECONF_PIPE_UNLOCKED 0 +#define PIPECONF_PIPE_LOCKED (1<<25) +#define PIPECONF_PALETTE 0 +#define PIPECONF_GAMMA (1<<24) +#define PIPECONF_FORCE_BORDER (1<<25) +#define PIPECONF_INTERLACE_MASK (7 << 21) +#define PIPECONF_INTERLACE_MASK_HSW (3 << 21) +/* Note that pre-gen3 does not support interlaced display directly. Panel + * fitting must be disabled on pre-ilk for interlaced. */ +#define PIPECONF_PROGRESSIVE (0 << 21) +#define PIPECONF_INTERLACE_W_SYNC_SHIFT_PANEL (4 << 21) /* gen4 only */ +#define PIPECONF_INTERLACE_W_SYNC_SHIFT (5 << 21) /* gen4 only */ +#define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21) +#define PIPECONF_INTERLACE_FIELD_0_ONLY (7 << 21) /* gen3 only */ +/* Ironlake and later have a complete new set of values for interlaced. PFIT + * means panel fitter required, PF means progressive fetch, DBL means power + * saving pixel doubling. */ +#define PIPECONF_PFIT_PF_INTERLACED_ILK (1 << 21) +#define PIPECONF_INTERLACED_ILK (3 << 21) +#define PIPECONF_INTERLACED_DBL_ILK (4 << 21) /* ilk/snb only */ +#define PIPECONF_PFIT_PF_INTERLACED_DBL_ILK (5 << 21) /* ilk/snb only */ +#define PIPECONF_CXSR_DOWNCLOCK (1<<16) +#define PIPECONF_BPP_MASK (0x000000e0) +#define PIPECONF_BPP_8 (0<<5) +#define PIPECONF_BPP_10 (1<<5) +#define PIPECONF_BPP_6 (2<<5) +#define PIPECONF_BPP_12 (3<<5) +#define PIPECONF_DITHER_EN (1<<4) +#define PIPECONF_DITHER_TYPE_MASK (0x0000000c) +#define PIPECONF_DITHER_TYPE_SP (0<<2) +#define PIPECONF_DITHER_TYPE_ST1 (1<<2) +#define PIPECONF_DITHER_TYPE_ST2 (2<<2) +#define PIPECONF_DITHER_TYPE_TEMP (3<<2) +#define _PIPEASTAT 0x70024 +#define PIPE_FIFO_UNDERRUN_STATUS (1UL<<31) +#define SPRITE1_FLIPDONE_INT_EN_VLV (1UL<<30) +#define PIPE_CRC_ERROR_ENABLE (1UL<<29) +#define PIPE_CRC_DONE_ENABLE (1UL<<28) +#define PIPE_GMBUS_EVENT_ENABLE (1UL<<27) +#define PLANE_FLIP_DONE_INT_EN_VLV (1UL<<26) +#define PIPE_HOTPLUG_INTERRUPT_ENABLE (1UL<<26) +#define PIPE_VSYNC_INTERRUPT_ENABLE (1UL<<25) +#define PIPE_DISPLAY_LINE_COMPARE_ENABLE (1UL<<24) +#define PIPE_DPST_EVENT_ENABLE (1UL<<23) +#define SPRITE0_FLIP_DONE_INT_EN_VLV (1UL<<26) +#define PIPE_LEGACY_BLC_EVENT_ENABLE (1UL<<22) +#define PIPE_ODD_FIELD_INTERRUPT_ENABLE (1UL<<21) +#define PIPE_EVEN_FIELD_INTERRUPT_ENABLE (1UL<<20) +#define PIPE_HOTPLUG_TV_INTERRUPT_ENABLE (1UL<<18) /* pre-965 */ +#define PIPE_START_VBLANK_INTERRUPT_ENABLE (1UL<<18) /* 965 or later */ +#define PIPE_VBLANK_INTERRUPT_ENABLE (1UL<<17) +#define PIPEA_HBLANK_INT_EN_VLV (1UL<<16) +#define PIPE_OVERLAY_UPDATED_ENABLE (1UL<<16) +#define SPRITE1_FLIPDONE_INT_STATUS_VLV (1UL<<15) +#define SPRITE0_FLIPDONE_INT_STATUS_VLV (1UL<<15) +#define PIPE_CRC_ERROR_INTERRUPT_STATUS (1UL<<13) +#define PIPE_CRC_DONE_INTERRUPT_STATUS (1UL<<12) +#define PIPE_GMBUS_INTERRUPT_STATUS (1UL<<11) +#define PLANE_FLIPDONE_INT_STATUS_VLV (1UL<<10) +#define PIPE_HOTPLUG_INTERRUPT_STATUS (1UL<<10) +#define PIPE_VSYNC_INTERRUPT_STATUS (1UL<<9) +#define PIPE_DISPLAY_LINE_COMPARE_STATUS (1UL<<8) +#define PIPE_DPST_EVENT_STATUS (1UL<<7) +#define PIPE_LEGACY_BLC_EVENT_STATUS (1UL<<6) +#define PIPE_ODD_FIELD_INTERRUPT_STATUS (1UL<<5) +#define PIPE_EVEN_FIELD_INTERRUPT_STATUS (1UL<<4) +#define PIPE_HOTPLUG_TV_INTERRUPT_STATUS (1UL<<2) /* pre-965 */ +#define PIPE_START_VBLANK_INTERRUPT_STATUS (1UL<<2) /* 965 or later */ +#define PIPE_VBLANK_INTERRUPT_STATUS (1UL<<1) +#define PIPE_OVERLAY_UPDATED_STATUS (1UL<<0) +#define PIPE_BPC_MASK (7 << 5) /* Ironlake */ +#define PIPE_8BPC (0 << 5) +#define PIPE_10BPC (1 << 5) +#define PIPE_6BPC (2 << 5) +#define PIPE_12BPC (3 << 5) + +#define PIPESRC(pipe) _PIPE(pipe, _PIPEASRC, _PIPEBSRC) +#define PIPECONF(tran) _TRANSCODER(tran, _PIPEACONF, _PIPEBCONF) +#define PIPEDSL(pipe) _PIPE(pipe, _PIPEADSL, _PIPEBDSL) +#define PIPEFRAME(pipe) _PIPE(pipe, _PIPEAFRAMEHIGH, _PIPEBFRAMEHIGH) +#define PIPEFRAMEPIXEL(pipe) _PIPE(pipe, _PIPEAFRAMEPIXEL, _PIPEBFRAMEPIXEL) +#define PIPESTAT(pipe) _PIPE(pipe, _PIPEASTAT, _PIPEBSTAT) + +#define VLV_DPFLIPSTAT 0x70028 +#define PIPEB_LINE_COMPARE_INT_EN (1<<29) +#define PIPEB_HLINE_INT_EN (1<<28) +#define PIPEB_VBLANK_INT_EN (1<<27) +#define SPRITED_FLIPDONE_INT_EN (1<<26) +#define SPRITEC_FLIPDONE_INT_EN (1<<25) +#define PLANEB_FLIPDONE_INT_EN (1<<24) +#define PIPEA_LINE_COMPARE_INT_EN (1<<21) +#define PIPEA_HLINE_INT_EN (1<<20) +#define PIPEA_VBLANK_INT_EN (1<<19) +#define SPRITEB_FLIPDONE_INT_EN (1<<18) +#define SPRITEA_FLIPDONE_INT_EN (1<<17) +#define PLANEA_FLIPDONE_INT_EN (1<<16) + +#define DPINVGTT 0x7002c /* VLV only */ +#define CURSORB_INVALID_GTT_INT_EN (1<<23) +#define CURSORA_INVALID_GTT_INT_EN (1<<22) +#define SPRITED_INVALID_GTT_INT_EN (1<<21) +#define SPRITEC_INVALID_GTT_INT_EN (1<<20) +#define PLANEB_INVALID_GTT_INT_EN (1<<19) +#define SPRITEB_INVALID_GTT_INT_EN (1<<18) +#define SPRITEA_INVALID_GTT_INT_EN (1<<17) +#define PLANEA_INVALID_GTT_INT_EN (1<<16) +#define DPINVGTT_EN_MASK 0xff0000 +#define CURSORB_INVALID_GTT_STATUS (1<<7) +#define CURSORA_INVALID_GTT_STATUS (1<<6) +#define SPRITED_INVALID_GTT_STATUS (1<<5) +#define SPRITEC_INVALID_GTT_STATUS (1<<4) +#define PLANEB_INVALID_GTT_STATUS (1<<3) +#define SPRITEB_INVALID_GTT_STATUS (1<<2) +#define SPRITEA_INVALID_GTT_STATUS (1<<1) +#define PLANEA_INVALID_GTT_STATUS (1<<0) +#define DPINVGTT_STATUS_MASK 0xff + +#define DSPARB 0x70030 +#define DSPARB_CSTART_MASK (0x7f << 7) +#define DSPARB_CSTART_SHIFT 7 +#define DSPARB_BSTART_MASK (0x7f) +#define DSPARB_BSTART_SHIFT 0 +#define DSPARB_BEND_SHIFT 9 /* on 855 */ +#define DSPARB_AEND_SHIFT 0 + +#define DSPFW1 0x70034 +#define DSPFW_SR_SHIFT 23 +#define DSPFW_SR_MASK (0x1ff<<23) +#define DSPFW_CURSORB_SHIFT 16 +#define DSPFW_CURSORB_MASK (0x3f<<16) +#define DSPFW_PLANEB_SHIFT 8 +#define DSPFW_PLANEB_MASK (0x7f<<8) +#define DSPFW_PLANEA_MASK (0x7f) +#define DSPFW2 0x70038 +#define DSPFW_CURSORA_MASK 0x00003f00 +#define DSPFW_CURSORA_SHIFT 8 +#define DSPFW_PLANEC_MASK (0x7f) +#define DSPFW3 0x7003c +#define DSPFW_HPLL_SR_EN (1<<31) +#define DSPFW_CURSOR_SR_SHIFT 24 +#define PINEVIEW_SELF_REFRESH_EN (1<<30) +#define DSPFW_CURSOR_SR_MASK (0x3f<<24) +#define DSPFW_HPLL_CURSOR_SHIFT 16 +#define DSPFW_HPLL_CURSOR_MASK (0x3f<<16) +#define DSPFW_HPLL_SR_MASK (0x1ff) + +/* drain latency register values*/ +#define DRAIN_LATENCY_PRECISION_32 32 +#define DRAIN_LATENCY_PRECISION_16 16 +#define VLV_DDL1 0x70050 +#define DDL_CURSORA_PRECISION_32 (1<<31) +#define DDL_CURSORA_PRECISION_16 (0<<31) +#define DDL_CURSORA_SHIFT 24 +#define DDL_PLANEA_PRECISION_32 (1<<7) +#define DDL_PLANEA_PRECISION_16 (0<<7) +#define VLV_DDL2 0x70054 +#define DDL_CURSORB_PRECISION_32 (1<<31) +#define DDL_CURSORB_PRECISION_16 (0<<31) +#define DDL_CURSORB_SHIFT 24 +#define DDL_PLANEB_PRECISION_32 (1<<7) +#define DDL_PLANEB_PRECISION_16 (0<<7) + +/* FIFO watermark sizes etc */ +#define G4X_FIFO_LINE_SIZE 64 +#define I915_FIFO_LINE_SIZE 64 +#define I830_FIFO_LINE_SIZE 32 + +#define VALLEYVIEW_FIFO_SIZE 255 +#define G4X_FIFO_SIZE 127 +#define I965_FIFO_SIZE 512 +#define I945_FIFO_SIZE 127 +#define I915_FIFO_SIZE 95 +#define I855GM_FIFO_SIZE 127 /* In cachelines */ +#define I830_FIFO_SIZE 95 + +#define VALLEYVIEW_MAX_WM 0xff +#define G4X_MAX_WM 0x3f +#define I915_MAX_WM 0x3f + +#define PINEVIEW_DISPLAY_FIFO 512 /* in 64byte unit */ +#define PINEVIEW_FIFO_LINE_SIZE 64 +#define PINEVIEW_MAX_WM 0x1ff +#define PINEVIEW_DFT_WM 0x3f +#define PINEVIEW_DFT_HPLLOFF_WM 0 +#define PINEVIEW_GUARD_WM 10 +#define PINEVIEW_CURSOR_FIFO 64 +#define PINEVIEW_CURSOR_MAX_WM 0x3f +#define PINEVIEW_CURSOR_DFT_WM 0 +#define PINEVIEW_CURSOR_GUARD_WM 5 + +#define VALLEYVIEW_CURSOR_MAX_WM 64 +#define I965_CURSOR_FIFO 64 +#define I965_CURSOR_MAX_WM 32 +#define I965_CURSOR_DFT_WM 8 + +/* define the Watermark register on Ironlake */ +#define WM0_PIPEA_ILK 0x45100 +#define WM0_PIPE_PLANE_MASK (0x7f<<16) +#define WM0_PIPE_PLANE_SHIFT 16 +#define WM0_PIPE_SPRITE_MASK (0x3f<<8) +#define WM0_PIPE_SPRITE_SHIFT 8 +#define WM0_PIPE_CURSOR_MASK (0x1f) + +#define WM0_PIPEB_ILK 0x45104 +#define WM0_PIPEC_IVB 0x45200 +#define WM1_LP_ILK 0x45108 +#define WM1_LP_SR_EN (1<<31) +#define WM1_LP_LATENCY_SHIFT 24 +#define WM1_LP_LATENCY_MASK (0x7f<<24) +#define WM1_LP_FBC_MASK (0xf<<20) +#define WM1_LP_FBC_SHIFT 20 +#define WM1_LP_SR_MASK (0x1ff<<8) +#define WM1_LP_SR_SHIFT 8 +#define WM1_LP_CURSOR_MASK (0x3f) +#define WM2_LP_ILK 0x4510c +#define WM2_LP_EN (1<<31) +#define WM3_LP_ILK 0x45110 +#define WM3_LP_EN (1<<31) +#define WM1S_LP_ILK 0x45120 +#define WM2S_LP_IVB 0x45124 +#define WM3S_LP_IVB 0x45128 +#define WM1S_LP_EN (1<<31) + +/* Memory latency timer register */ +#define MLTR_ILK 0x11222 +#define MLTR_WM1_SHIFT 0 +#define MLTR_WM2_SHIFT 8 +/* the unit of memory self-refresh latency time is 0.5us */ +#define ILK_SRLT_MASK 0x3f +#define ILK_LATENCY(shift) (I915_READ(MLTR_ILK) >> (shift) & ILK_SRLT_MASK) +#define ILK_READ_WM1_LATENCY() ILK_LATENCY(MLTR_WM1_SHIFT) +#define ILK_READ_WM2_LATENCY() ILK_LATENCY(MLTR_WM2_SHIFT) + +/* define the fifo size on Ironlake */ +#define ILK_DISPLAY_FIFO 128 +#define ILK_DISPLAY_MAXWM 64 +#define ILK_DISPLAY_DFTWM 8 +#define ILK_CURSOR_FIFO 32 +#define ILK_CURSOR_MAXWM 16 +#define ILK_CURSOR_DFTWM 8 + +#define ILK_DISPLAY_SR_FIFO 512 +#define ILK_DISPLAY_MAX_SRWM 0x1ff +#define ILK_DISPLAY_DFT_SRWM 0x3f +#define ILK_CURSOR_SR_FIFO 64 +#define ILK_CURSOR_MAX_SRWM 0x3f +#define ILK_CURSOR_DFT_SRWM 8 + +#define ILK_FIFO_LINE_SIZE 64 + +/* define the WM info on Sandybridge */ +#define SNB_DISPLAY_FIFO 128 +#define SNB_DISPLAY_MAXWM 0x7f /* bit 16:22 */ +#define SNB_DISPLAY_DFTWM 8 +#define SNB_CURSOR_FIFO 32 +#define SNB_CURSOR_MAXWM 0x1f /* bit 4:0 */ +#define SNB_CURSOR_DFTWM 8 + +#define SNB_DISPLAY_SR_FIFO 512 +#define SNB_DISPLAY_MAX_SRWM 0x1ff /* bit 16:8 */ +#define SNB_DISPLAY_DFT_SRWM 0x3f +#define SNB_CURSOR_SR_FIFO 64 +#define SNB_CURSOR_MAX_SRWM 0x3f /* bit 5:0 */ +#define SNB_CURSOR_DFT_SRWM 8 + +#define SNB_FBC_MAX_SRWM 0xf /* bit 23:20 */ + +#define SNB_FIFO_LINE_SIZE 64 + + +/* the address where we get all kinds of latency value */ +#define SSKPD 0x5d10 +#define SSKPD_WM_MASK 0x3f +#define SSKPD_WM0_SHIFT 0 +#define SSKPD_WM1_SHIFT 8 +#define SSKPD_WM2_SHIFT 16 +#define SSKPD_WM3_SHIFT 24 + +#define SNB_LATENCY(shift) (I915_READ(MCHBAR_MIRROR_BASE_SNB + SSKPD) >> (shift) & SSKPD_WM_MASK) +#define SNB_READ_WM0_LATENCY() SNB_LATENCY(SSKPD_WM0_SHIFT) +#define SNB_READ_WM1_LATENCY() SNB_LATENCY(SSKPD_WM1_SHIFT) +#define SNB_READ_WM2_LATENCY() SNB_LATENCY(SSKPD_WM2_SHIFT) +#define SNB_READ_WM3_LATENCY() SNB_LATENCY(SSKPD_WM3_SHIFT) + +/* + * The two pipe frame counter registers are not synchronized, so + * reading a stable value is somewhat tricky. The following code + * should work: + * + * do { + * high1 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> + * PIPE_FRAME_HIGH_SHIFT; + * low1 = ((INREG(PIPEAFRAMEPIXEL) & PIPE_FRAME_LOW_MASK) >> + * PIPE_FRAME_LOW_SHIFT); + * high2 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> + * PIPE_FRAME_HIGH_SHIFT); + * } while (high1 != high2); + * frame = (high1 << 8) | low1; + */ +#define _PIPEAFRAMEHIGH 0x70040 +#define PIPE_FRAME_HIGH_MASK 0x0000ffff +#define PIPE_FRAME_HIGH_SHIFT 0 +#define _PIPEAFRAMEPIXEL 0x70044 +#define PIPE_FRAME_LOW_MASK 0xff000000 +#define PIPE_FRAME_LOW_SHIFT 24 +#define PIPE_PIXEL_MASK 0x00ffffff +#define PIPE_PIXEL_SHIFT 0 +/* GM45+ just has to be different */ +#define _PIPEA_FRMCOUNT_GM45 0x70040 +#define _PIPEA_FLIPCOUNT_GM45 0x70044 +#define PIPE_FRMCOUNT_GM45(pipe) _PIPE(pipe, _PIPEA_FRMCOUNT_GM45, _PIPEB_FRMCOUNT_GM45) + +/* Cursor A & B regs */ +#define _CURACNTR 0x70080 +/* Old style CUR*CNTR flags (desktop 8xx) */ +#define CURSOR_ENABLE 0x80000000 +#define CURSOR_GAMMA_ENABLE 0x40000000 +#define CURSOR_STRIDE_MASK 0x30000000 +#define CURSOR_FORMAT_SHIFT 24 +#define CURSOR_FORMAT_MASK (0x07 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_2C (0x00 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_3C (0x01 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_4C (0x02 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_ARGB (0x04 << CURSOR_FORMAT_SHIFT) +#define CURSOR_FORMAT_XRGB (0x05 << CURSOR_FORMAT_SHIFT) +/* New style CUR*CNTR flags */ +#define CURSOR_MODE 0x27 +#define CURSOR_MODE_DISABLE 0x00 +#define CURSOR_MODE_64_32B_AX 0x07 +#define CURSOR_MODE_64_ARGB_AX ((1 << 5) | CURSOR_MODE_64_32B_AX) +#define MCURSOR_PIPE_SELECT (1 << 28) +#define MCURSOR_PIPE_A 0x00 +#define MCURSOR_PIPE_B (1 << 28) +#define MCURSOR_GAMMA_ENABLE (1 << 26) +#define _CURABASE 0x70084 +#define _CURAPOS 0x70088 +#define CURSOR_POS_MASK 0x007FF +#define CURSOR_POS_SIGN 0x8000 +#define CURSOR_X_SHIFT 0 +#define CURSOR_Y_SHIFT 16 +#define CURSIZE 0x700a0 +#define _CURBCNTR 0x700c0 +#define _CURBBASE 0x700c4 +#define _CURBPOS 0x700c8 + +#define _CURBCNTR_IVB 0x71080 +#define _CURBBASE_IVB 0x71084 +#define _CURBPOS_IVB 0x71088 + +#define CURCNTR(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR) +#define CURBASE(pipe) _PIPE(pipe, _CURABASE, _CURBBASE) +#define CURPOS(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS) + +#define CURCNTR_IVB(pipe) _PIPE(pipe, _CURACNTR, _CURBCNTR_IVB) +#define CURBASE_IVB(pipe) _PIPE(pipe, _CURABASE, _CURBBASE_IVB) +#define CURPOS_IVB(pipe) _PIPE(pipe, _CURAPOS, _CURBPOS_IVB) + +/* Display A control */ +#define _DSPACNTR 0x70180 +#define DISPLAY_PLANE_ENABLE (1<<31) +#define DISPLAY_PLANE_DISABLE 0 +#define DISPPLANE_GAMMA_ENABLE (1<<30) +#define DISPPLANE_GAMMA_DISABLE 0 +#define DISPPLANE_PIXFORMAT_MASK (0xf<<26) +#define DISPPLANE_YUV422 (0x0<<26) +#define DISPPLANE_8BPP (0x2<<26) +#define DISPPLANE_BGRA555 (0x3<<26) +#define DISPPLANE_BGRX555 (0x4<<26) +#define DISPPLANE_BGRX565 (0x5<<26) +#define DISPPLANE_BGRX888 (0x6<<26) +#define DISPPLANE_BGRA888 (0x7<<26) +#define DISPPLANE_RGBX101010 (0x8<<26) +#define DISPPLANE_RGBA101010 (0x9<<26) +#define DISPPLANE_BGRX101010 (0xa<<26) +#define DISPPLANE_RGBX161616 (0xc<<26) +#define DISPPLANE_RGBX888 (0xe<<26) +#define DISPPLANE_RGBA888 (0xf<<26) +#define DISPPLANE_STEREO_ENABLE (1<<25) +#define DISPPLANE_STEREO_DISABLE 0 +#define DISPPLANE_SEL_PIPE_SHIFT 24 +#define DISPPLANE_SEL_PIPE_MASK (3<> 30) +#define PORT_TO_PIPE_CPT(val) (((val) & PORT_TRANS_SEL_MASK) >> 29) + +#define TRANS_DP_CTL_A 0xe0300 +#define TRANS_DP_CTL_B 0xe1300 +#define TRANS_DP_CTL_C 0xe2300 +#define TRANS_DP_CTL(pipe) _PIPE(pipe, TRANS_DP_CTL_A, TRANS_DP_CTL_B) +#define TRANS_DP_OUTPUT_ENABLE (1<<31) +#define TRANS_DP_PORT_SEL_B (0<<29) +#define TRANS_DP_PORT_SEL_C (1<<29) +#define TRANS_DP_PORT_SEL_D (2<<29) +#define TRANS_DP_PORT_SEL_NONE (3<<29) +#define TRANS_DP_PORT_SEL_MASK (3<<29) +#define TRANS_DP_AUDIO_ONLY (1<<26) +#define TRANS_DP_ENH_FRAMING (1<<18) +#define TRANS_DP_8BPC (0<<9) +#define TRANS_DP_10BPC (1<<9) +#define TRANS_DP_6BPC (2<<9) +#define TRANS_DP_12BPC (3<<9) +#define TRANS_DP_BPC_MASK (3<<9) +#define TRANS_DP_VSYNC_ACTIVE_HIGH (1<<4) +#define TRANS_DP_VSYNC_ACTIVE_LOW 0 +#define TRANS_DP_HSYNC_ACTIVE_HIGH (1<<3) +#define TRANS_DP_HSYNC_ACTIVE_LOW 0 +#define TRANS_DP_SYNC_MASK (3<<3) + +/* SNB eDP training params */ +/* SNB A-stepping */ +#define EDP_LINK_TRAIN_400MV_0DB_SNB_A (0x38<<22) +#define EDP_LINK_TRAIN_400MV_6DB_SNB_A (0x02<<22) +#define EDP_LINK_TRAIN_600MV_3_5DB_SNB_A (0x01<<22) +#define EDP_LINK_TRAIN_800MV_0DB_SNB_A (0x0<<22) +/* SNB B-stepping */ +#define EDP_LINK_TRAIN_400_600MV_0DB_SNB_B (0x0<<22) +#define EDP_LINK_TRAIN_400MV_3_5DB_SNB_B (0x1<<22) +#define EDP_LINK_TRAIN_400_600MV_6DB_SNB_B (0x3a<<22) +#define EDP_LINK_TRAIN_600_800MV_3_5DB_SNB_B (0x39<<22) +#define EDP_LINK_TRAIN_800_1200MV_0DB_SNB_B (0x38<<22) +#define EDP_LINK_TRAIN_VOL_EMP_MASK_SNB (0x3f<<22) + +/* IVB */ +#define EDP_LINK_TRAIN_400MV_0DB_IVB (0x24 <<22) +#define EDP_LINK_TRAIN_400MV_3_5DB_IVB (0x2a <<22) +#define EDP_LINK_TRAIN_400MV_6DB_IVB (0x2f <<22) +#define EDP_LINK_TRAIN_600MV_0DB_IVB (0x30 <<22) +#define EDP_LINK_TRAIN_600MV_3_5DB_IVB (0x36 <<22) +#define EDP_LINK_TRAIN_800MV_0DB_IVB (0x38 <<22) +#define EDP_LINK_TRAIN_800MV_3_5DB_IVB (0x33 <<22) + +/* legacy values */ +#define EDP_LINK_TRAIN_500MV_0DB_IVB (0x00 <<22) +#define EDP_LINK_TRAIN_1000MV_0DB_IVB (0x20 <<22) +#define EDP_LINK_TRAIN_500MV_3_5DB_IVB (0x02 <<22) +#define EDP_LINK_TRAIN_1000MV_3_5DB_IVB (0x22 <<22) +#define EDP_LINK_TRAIN_1000MV_6DB_IVB (0x23 <<22) + +#define EDP_LINK_TRAIN_VOL_EMP_MASK_IVB (0x3f<<22) + +#define FORCEWAKE 0xA18C +#define FORCEWAKE_VLV 0x1300b0 +#define FORCEWAKE_ACK_VLV 0x1300b4 +#define FORCEWAKE_ACK_HSW 0x130044 +#define FORCEWAKE_ACK 0x130090 +#define FORCEWAKE_MT 0xa188 /* multi-threaded */ +#define FORCEWAKE_KERNEL 0x1 +#define FORCEWAKE_USER 0x2 +#define FORCEWAKE_MT_ACK 0x130040 +#define ECOBUS 0xa180 +#define FORCEWAKE_MT_ENABLE (1<<5) + +#define GTFIFODBG 0x120000 +#define GT_FIFO_CPU_ERROR_MASK 7 +#define GT_FIFO_OVFERR (1<<2) +#define GT_FIFO_IAWRERR (1<<1) +#define GT_FIFO_IARDERR (1<<0) + +#define GT_FIFO_FREE_ENTRIES 0x120008 +#define GT_FIFO_NUM_RESERVED_ENTRIES 20 + +#define GEN6_UCGCTL1 0x9400 +# define GEN6_BLBUNIT_CLOCK_GATE_DISABLE (1 << 5) +# define GEN6_CSUNIT_CLOCK_GATE_DISABLE (1 << 7) + +#define GEN6_UCGCTL2 0x9404 +# define GEN7_VDSUNIT_CLOCK_GATE_DISABLE (1 << 30) +# define GEN7_TDLUNIT_CLOCK_GATE_DISABLE (1 << 22) +# define GEN6_RCZUNIT_CLOCK_GATE_DISABLE (1 << 13) +# define GEN6_RCPBUNIT_CLOCK_GATE_DISABLE (1 << 12) +# define GEN6_RCCUNIT_CLOCK_GATE_DISABLE (1 << 11) + +#define GEN7_UCGCTL4 0x940c +#define GEN7_L3BANK2X_CLOCK_GATE_DISABLE (1<<25) + +#define GEN6_RPNSWREQ 0xA008 +#define GEN6_TURBO_DISABLE (1<<31) +#define GEN6_FREQUENCY(x) ((x)<<25) +#define GEN6_OFFSET(x) ((x)<<19) +#define GEN6_AGGRESSIVE_TURBO (0<<15) +#define GEN6_RC_VIDEO_FREQ 0xA00C +#define GEN6_RC_CONTROL 0xA090 +#define GEN6_RC_CTL_RC6pp_ENABLE (1<<16) +#define GEN6_RC_CTL_RC6p_ENABLE (1<<17) +#define GEN6_RC_CTL_RC6_ENABLE (1<<18) +#define GEN6_RC_CTL_RC1e_ENABLE (1<<20) +#define GEN6_RC_CTL_RC7_ENABLE (1<<22) +#define GEN6_RC_CTL_EI_MODE(x) ((x)<<27) +#define GEN6_RC_CTL_HW_ENABLE (1<<31) +#define GEN6_RP_DOWN_TIMEOUT 0xA010 +#define GEN6_RP_INTERRUPT_LIMITS 0xA014 +#define GEN6_RPSTAT1 0xA01C +#define GEN6_CAGF_SHIFT 8 +#define GEN6_CAGF_MASK (0x7f << GEN6_CAGF_SHIFT) +#define GEN6_RP_CONTROL 0xA024 +#define GEN6_RP_MEDIA_TURBO (1<<11) +#define GEN6_RP_MEDIA_MODE_MASK (3<<9) +#define GEN6_RP_MEDIA_HW_TURBO_MODE (3<<9) +#define GEN6_RP_MEDIA_HW_NORMAL_MODE (2<<9) +#define GEN6_RP_MEDIA_HW_MODE (1<<9) +#define GEN6_RP_MEDIA_SW_MODE (0<<9) +#define GEN6_RP_MEDIA_IS_GFX (1<<8) +#define GEN6_RP_ENABLE (1<<7) +#define GEN6_RP_UP_IDLE_MIN (0x1<<3) +#define GEN6_RP_UP_BUSY_AVG (0x2<<3) +#define GEN6_RP_UP_BUSY_CONT (0x4<<3) +#define GEN7_RP_DOWN_IDLE_AVG (0x2<<0) +#define GEN6_RP_DOWN_IDLE_CONT (0x1<<0) +#define GEN6_RP_UP_THRESHOLD 0xA02C +#define GEN6_RP_DOWN_THRESHOLD 0xA030 +#define GEN6_RP_CUR_UP_EI 0xA050 +#define GEN6_CURICONT_MASK 0xffffff +#define GEN6_RP_CUR_UP 0xA054 +#define GEN6_CURBSYTAVG_MASK 0xffffff +#define GEN6_RP_PREV_UP 0xA058 +#define GEN6_RP_CUR_DOWN_EI 0xA05C +#define GEN6_CURIAVG_MASK 0xffffff +#define GEN6_RP_CUR_DOWN 0xA060 +#define GEN6_RP_PREV_DOWN 0xA064 +#define GEN6_RP_UP_EI 0xA068 +#define GEN6_RP_DOWN_EI 0xA06C +#define GEN6_RP_IDLE_HYSTERSIS 0xA070 +#define GEN6_RC_STATE 0xA094 +#define GEN6_RC1_WAKE_RATE_LIMIT 0xA098 +#define GEN6_RC6_WAKE_RATE_LIMIT 0xA09C +#define GEN6_RC6pp_WAKE_RATE_LIMIT 0xA0A0 +#define GEN6_RC_EVALUATION_INTERVAL 0xA0A8 +#define GEN6_RC_IDLE_HYSTERSIS 0xA0AC +#define GEN6_RC_SLEEP 0xA0B0 +#define GEN6_RC1e_THRESHOLD 0xA0B4 +#define GEN6_RC6_THRESHOLD 0xA0B8 +#define GEN6_RC6p_THRESHOLD 0xA0BC +#define GEN6_RC6pp_THRESHOLD 0xA0C0 +#define GEN6_PMINTRMSK 0xA168 + +#define GEN6_PMISR 0x44020 +#define GEN6_PMIMR 0x44024 /* rps_lock */ +#define GEN6_PMIIR 0x44028 +#define GEN6_PMIER 0x4402C +#define GEN6_PM_MBOX_EVENT (1<<25) +#define GEN6_PM_THERMAL_EVENT (1<<24) +#define GEN6_PM_RP_DOWN_TIMEOUT (1<<6) +#define GEN6_PM_RP_UP_THRESHOLD (1<<5) +#define GEN6_PM_RP_DOWN_THRESHOLD (1<<4) +#define GEN6_PM_RP_UP_EI_EXPIRED (1<<2) +#define GEN6_PM_RP_DOWN_EI_EXPIRED (1<<1) +#define GEN6_PM_DEFERRED_EVENTS (GEN6_PM_RP_UP_THRESHOLD | \ + GEN6_PM_RP_DOWN_THRESHOLD | \ + GEN6_PM_RP_DOWN_TIMEOUT) + +#define GEN6_GT_GFX_RC6_LOCKED 0x138104 +#define GEN6_GT_GFX_RC6 0x138108 +#define GEN6_GT_GFX_RC6p 0x13810C +#define GEN6_GT_GFX_RC6pp 0x138110 + +#define GEN6_PCODE_MAILBOX 0x138124 +#define GEN6_PCODE_READY (1<<31) +#define GEN6_READ_OC_PARAMS 0xc +#define GEN6_PCODE_WRITE_MIN_FREQ_TABLE 0x8 +#define GEN6_PCODE_READ_MIN_FREQ_TABLE 0x9 +#define GEN6_PCODE_WRITE_RC6VIDS 0x4 +#define GEN6_PCODE_READ_RC6VIDS 0x5 +#define GEN6_ENCODE_RC6_VID(mv) (((mv) / 5) - 245) < 0 ?: 0 +#define GEN6_DECODE_RC6_VID(vids) (((vids) * 5) > 0 ? ((vids) * 5) + 245 : 0) +#define GEN6_PCODE_DATA 0x138128 +#define GEN6_PCODE_FREQ_IA_RATIO_SHIFT 8 + +#define GEN6_GT_CORE_STATUS 0x138060 +#define GEN6_CORE_CPD_STATE_MASK (7<<4) +#define GEN6_RCn_MASK 7 +#define GEN6_RC0 0 +#define GEN6_RC3 2 +#define GEN6_RC6 3 +#define GEN6_RC7 4 + +#define GEN7_MISCCPCTL (0x9424) +#define GEN7_DOP_CLOCK_GATE_ENABLE (1<<0) + +/* IVYBRIDGE DPF */ +#define GEN7_L3CDERRST1 0xB008 /* L3CD Error Status 1 */ +#define GEN7_L3CDERRST1_ROW_MASK (0x7ff<<14) +#define GEN7_PARITY_ERROR_VALID (1<<13) +#define GEN7_L3CDERRST1_BANK_MASK (3<<11) +#define GEN7_L3CDERRST1_SUBBANK_MASK (7<<8) +#define GEN7_PARITY_ERROR_ROW(reg) \ + ((reg & GEN7_L3CDERRST1_ROW_MASK) >> 14) +#define GEN7_PARITY_ERROR_BANK(reg) \ + ((reg & GEN7_L3CDERRST1_BANK_MASK) >> 11) +#define GEN7_PARITY_ERROR_SUBBANK(reg) \ + ((reg & GEN7_L3CDERRST1_SUBBANK_MASK) >> 8) +#define GEN7_L3CDERRST1_ENABLE (1<<7) + +#define GEN7_L3LOG_BASE 0xB070 +#define GEN7_L3LOG_SIZE 0x80 + +#define GEN7_HALF_SLICE_CHICKEN1 0xe100 /* IVB GT1 + VLV */ +#define GEN7_HALF_SLICE_CHICKEN1_GT2 0xf100 +#define GEN7_MAX_PS_THREAD_DEP (8<<12) +#define GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE (1<<3) + +#define GEN7_ROW_CHICKEN2 0xe4f4 +#define GEN7_ROW_CHICKEN2_GT2 0xf4f4 +#define DOP_CLOCK_GATING_DISABLE (1<<0) + +#define G4X_AUD_VID_DID 0x62020 +#define INTEL_AUDIO_DEVCL 0x808629FB +#define INTEL_AUDIO_DEVBLC 0x80862801 +#define INTEL_AUDIO_DEVCTG 0x80862802 + +#define G4X_AUD_CNTL_ST 0x620B4 +#define G4X_ELDV_DEVCL_DEVBLC (1 << 13) +#define G4X_ELDV_DEVCTG (1 << 14) +#define G4X_ELD_ADDR (0xf << 5) +#define G4X_ELD_ACK (1 << 4) +#define G4X_HDMIW_HDMIEDID 0x6210C + +#define IBX_HDMIW_HDMIEDID_A 0xE2050 +#define IBX_HDMIW_HDMIEDID_B 0xE2150 +#define IBX_HDMIW_HDMIEDID(pipe) _PIPE(pipe, \ + IBX_HDMIW_HDMIEDID_A, \ + IBX_HDMIW_HDMIEDID_B) +#define IBX_AUD_CNTL_ST_A 0xE20B4 +#define IBX_AUD_CNTL_ST_B 0xE21B4 +#define IBX_AUD_CNTL_ST(pipe) _PIPE(pipe, \ + IBX_AUD_CNTL_ST_A, \ + IBX_AUD_CNTL_ST_B) +#define IBX_ELD_BUFFER_SIZE (0x1f << 10) +#define IBX_ELD_ADDRESS (0x1f << 5) +#define IBX_ELD_ACK (1 << 4) +#define IBX_AUD_CNTL_ST2 0xE20C0 +#define IBX_ELD_VALIDB (1 << 0) +#define IBX_CP_READYB (1 << 1) + +#define CPT_HDMIW_HDMIEDID_A 0xE5050 +#define CPT_HDMIW_HDMIEDID_B 0xE5150 +#define CPT_HDMIW_HDMIEDID(pipe) _PIPE(pipe, \ + CPT_HDMIW_HDMIEDID_A, \ + CPT_HDMIW_HDMIEDID_B) +#define CPT_AUD_CNTL_ST_A 0xE50B4 +#define CPT_AUD_CNTL_ST_B 0xE51B4 +#define CPT_AUD_CNTL_ST(pipe) _PIPE(pipe, \ + CPT_AUD_CNTL_ST_A, \ + CPT_AUD_CNTL_ST_B) +#define CPT_AUD_CNTRL_ST2 0xE50C0 + +/* These are the 4 32-bit write offset registers for each stream + * output buffer. It determines the offset from the + * 3DSTATE_SO_BUFFERs that the next streamed vertex output goes to. + */ +#define GEN7_SO_WRITE_OFFSET(n) (0x5280 + (n) * 4) + +#define IBX_AUD_CONFIG_A 0xe2000 +#define IBX_AUD_CONFIG_B 0xe2100 +#define IBX_AUD_CFG(pipe) _PIPE(pipe, \ + IBX_AUD_CONFIG_A, \ + IBX_AUD_CONFIG_B) +#define CPT_AUD_CONFIG_A 0xe5000 +#define CPT_AUD_CONFIG_B 0xe5100 +#define CPT_AUD_CFG(pipe) _PIPE(pipe, \ + CPT_AUD_CONFIG_A, \ + CPT_AUD_CONFIG_B) +#define AUD_CONFIG_N_VALUE_INDEX (1 << 29) +#define AUD_CONFIG_N_PROG_ENABLE (1 << 28) +#define AUD_CONFIG_UPPER_N_SHIFT 20 +#define AUD_CONFIG_UPPER_N_VALUE (0xff << 20) +#define AUD_CONFIG_LOWER_N_SHIFT 4 +#define AUD_CONFIG_LOWER_N_VALUE (0xfff << 4) +#define AUD_CONFIG_PIXEL_CLOCK_HDMI_SHIFT 16 +#define AUD_CONFIG_PIXEL_CLOCK_HDMI (0xf << 16) +#define AUD_CONFIG_DISABLE_NCTS (1 << 3) + +/* HSW Audio */ +#define HSW_AUD_CONFIG_A 0x65000 /* Audio Configuration Transcoder A */ +#define HSW_AUD_CONFIG_B 0x65100 /* Audio Configuration Transcoder B */ +#define HSW_AUD_CFG(pipe) _PIPE(pipe, \ + HSW_AUD_CONFIG_A, \ + HSW_AUD_CONFIG_B) + +#define HSW_AUD_MISC_CTRL_A 0x65010 /* Audio Misc Control Convert 1 */ +#define HSW_AUD_MISC_CTRL_B 0x65110 /* Audio Misc Control Convert 2 */ +#define HSW_AUD_MISC_CTRL(pipe) _PIPE(pipe, \ + HSW_AUD_MISC_CTRL_A, \ + HSW_AUD_MISC_CTRL_B) + +#define HSW_AUD_DIP_ELD_CTRL_ST_A 0x650b4 /* Audio DIP and ELD Control State Transcoder A */ +#define HSW_AUD_DIP_ELD_CTRL_ST_B 0x651b4 /* Audio DIP and ELD Control State Transcoder B */ +#define HSW_AUD_DIP_ELD_CTRL(pipe) _PIPE(pipe, \ + HSW_AUD_DIP_ELD_CTRL_ST_A, \ + HSW_AUD_DIP_ELD_CTRL_ST_B) + +/* Audio Digital Converter */ +#define HSW_AUD_DIG_CNVT_1 0x65080 /* Audio Converter 1 */ +#define HSW_AUD_DIG_CNVT_2 0x65180 /* Audio Converter 1 */ +#define AUD_DIG_CNVT(pipe) _PIPE(pipe, \ + HSW_AUD_DIG_CNVT_1, \ + HSW_AUD_DIG_CNVT_2) +#define DIP_PORT_SEL_MASK 0x3 + +#define HSW_AUD_EDID_DATA_A 0x65050 +#define HSW_AUD_EDID_DATA_B 0x65150 +#define HSW_AUD_EDID_DATA(pipe) _PIPE(pipe, \ + HSW_AUD_EDID_DATA_A, \ + HSW_AUD_EDID_DATA_B) + +#define HSW_AUD_PIPE_CONV_CFG 0x6507c /* Audio pipe and converter configs */ +#define HSW_AUD_PIN_ELD_CP_VLD 0x650c0 /* Audio ELD and CP Ready Status */ +#define AUDIO_INACTIVE_C (1<<11) +#define AUDIO_INACTIVE_B (1<<7) +#define AUDIO_INACTIVE_A (1<<3) +#define AUDIO_OUTPUT_ENABLE_A (1<<2) +#define AUDIO_OUTPUT_ENABLE_B (1<<6) +#define AUDIO_OUTPUT_ENABLE_C (1<<10) +#define AUDIO_ELD_VALID_A (1<<0) +#define AUDIO_ELD_VALID_B (1<<4) +#define AUDIO_ELD_VALID_C (1<<8) +#define AUDIO_CP_READY_A (1<<1) +#define AUDIO_CP_READY_B (1<<5) +#define AUDIO_CP_READY_C (1<<9) + +/* HSW Power Wells */ +#define HSW_PWR_WELL_CTL1 0x45400 /* BIOS */ +#define HSW_PWR_WELL_CTL2 0x45404 /* Driver */ +#define HSW_PWR_WELL_CTL3 0x45408 /* KVMR */ +#define HSW_PWR_WELL_CTL4 0x4540C /* Debug */ +#define HSW_PWR_WELL_ENABLE (1<<31) +#define HSW_PWR_WELL_STATE (1<<30) +#define HSW_PWR_WELL_CTL5 0x45410 +#define HSW_PWR_WELL_ENABLE_SINGLE_STEP (1<<31) +#define HSW_PWR_WELL_PWR_GATE_OVERRIDE (1<<20) +#define HSW_PWR_WELL_FORCE_ON (1<<19) +#define HSW_PWR_WELL_CTL6 0x45414 + +/* Per-pipe DDI Function Control */ +#define TRANS_DDI_FUNC_CTL_A 0x60400 +#define TRANS_DDI_FUNC_CTL_B 0x61400 +#define TRANS_DDI_FUNC_CTL_C 0x62400 +#define TRANS_DDI_FUNC_CTL_EDP 0x6F400 +#define TRANS_DDI_FUNC_CTL(tran) _TRANSCODER(tran, TRANS_DDI_FUNC_CTL_A, \ + TRANS_DDI_FUNC_CTL_B) +#define TRANS_DDI_FUNC_ENABLE (1<<31) +/* Those bits are ignored by pipe EDP since it can only connect to DDI A */ +#define TRANS_DDI_PORT_MASK (7<<28) +#define TRANS_DDI_SELECT_PORT(x) ((x)<<28) +#define TRANS_DDI_PORT_NONE (0<<28) +#define TRANS_DDI_MODE_SELECT_MASK (7<<24) +#define TRANS_DDI_MODE_SELECT_HDMI (0<<24) +#define TRANS_DDI_MODE_SELECT_DVI (1<<24) +#define TRANS_DDI_MODE_SELECT_DP_SST (2<<24) +#define TRANS_DDI_MODE_SELECT_DP_MST (3<<24) +#define TRANS_DDI_MODE_SELECT_FDI (4<<24) +#define TRANS_DDI_BPC_MASK (7<<20) +#define TRANS_DDI_BPC_8 (0<<20) +#define TRANS_DDI_BPC_10 (1<<20) +#define TRANS_DDI_BPC_6 (2<<20) +#define TRANS_DDI_BPC_12 (3<<20) +#define TRANS_DDI_PVSYNC (1<<17) +#define TRANS_DDI_PHSYNC (1<<16) +#define TRANS_DDI_EDP_INPUT_MASK (7<<12) +#define TRANS_DDI_EDP_INPUT_A_ON (0<<12) +#define TRANS_DDI_EDP_INPUT_A_ONOFF (4<<12) +#define TRANS_DDI_EDP_INPUT_B_ONOFF (5<<12) +#define TRANS_DDI_EDP_INPUT_C_ONOFF (6<<12) +#define TRANS_DDI_BFI_ENABLE (1<<4) +#define TRANS_DDI_PORT_WIDTH_X1 (0<<1) +#define TRANS_DDI_PORT_WIDTH_X2 (1<<1) +#define TRANS_DDI_PORT_WIDTH_X4 (3<<1) + +/* DisplayPort Transport Control */ +#define DP_TP_CTL_A 0x64040 +#define DP_TP_CTL_B 0x64140 +#define DP_TP_CTL(port) _PORT(port, DP_TP_CTL_A, DP_TP_CTL_B) +#define DP_TP_CTL_ENABLE (1<<31) +#define DP_TP_CTL_MODE_SST (0<<27) +#define DP_TP_CTL_MODE_MST (1<<27) +#define DP_TP_CTL_ENHANCED_FRAME_ENABLE (1<<18) +#define DP_TP_CTL_FDI_AUTOTRAIN (1<<15) +#define DP_TP_CTL_LINK_TRAIN_MASK (7<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT1 (0<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT2 (1<<8) +#define DP_TP_CTL_LINK_TRAIN_PAT3 (4<<8) +#define DP_TP_CTL_LINK_TRAIN_IDLE (2<<8) +#define DP_TP_CTL_LINK_TRAIN_NORMAL (3<<8) +#define DP_TP_CTL_SCRAMBLE_DISABLE (1<<7) + +/* DisplayPort Transport Status */ +#define DP_TP_STATUS_A 0x64044 +#define DP_TP_STATUS_B 0x64144 +#define DP_TP_STATUS(port) _PORT(port, DP_TP_STATUS_A, DP_TP_STATUS_B) +#define DP_TP_STATUS_IDLE_DONE (1<<25) +#define DP_TP_STATUS_AUTOTRAIN_DONE (1<<12) + +/* DDI Buffer Control */ +#define DDI_BUF_CTL_A 0x64000 +#define DDI_BUF_CTL_B 0x64100 +#define DDI_BUF_CTL(port) _PORT(port, DDI_BUF_CTL_A, DDI_BUF_CTL_B) +#define DDI_BUF_CTL_ENABLE (1<<31) +#define DDI_BUF_EMP_400MV_0DB_HSW (0<<24) /* Sel0 */ +#define DDI_BUF_EMP_400MV_3_5DB_HSW (1<<24) /* Sel1 */ +#define DDI_BUF_EMP_400MV_6DB_HSW (2<<24) /* Sel2 */ +#define DDI_BUF_EMP_400MV_9_5DB_HSW (3<<24) /* Sel3 */ +#define DDI_BUF_EMP_600MV_0DB_HSW (4<<24) /* Sel4 */ +#define DDI_BUF_EMP_600MV_3_5DB_HSW (5<<24) /* Sel5 */ +#define DDI_BUF_EMP_600MV_6DB_HSW (6<<24) /* Sel6 */ +#define DDI_BUF_EMP_800MV_0DB_HSW (7<<24) /* Sel7 */ +#define DDI_BUF_EMP_800MV_3_5DB_HSW (8<<24) /* Sel8 */ +#define DDI_BUF_EMP_MASK (0xf<<24) +#define DDI_BUF_IS_IDLE (1<<7) +#define DDI_A_4_LANES (1<<4) +#define DDI_PORT_WIDTH_X1 (0<<1) +#define DDI_PORT_WIDTH_X2 (1<<1) +#define DDI_PORT_WIDTH_X4 (3<<1) +#define DDI_INIT_DISPLAY_DETECTED (1<<0) + +/* DDI Buffer Translations */ +#define DDI_BUF_TRANS_A 0x64E00 +#define DDI_BUF_TRANS_B 0x64E60 +#define DDI_BUF_TRANS(port) _PORT(port, DDI_BUF_TRANS_A, DDI_BUF_TRANS_B) + +/* Sideband Interface (SBI) is programmed indirectly, via + * SBI_ADDR, which contains the register offset; and SBI_DATA, + * which contains the payload */ +#define SBI_ADDR 0xC6000 +#define SBI_DATA 0xC6004 +#define SBI_CTL_STAT 0xC6008 +#define SBI_CTL_DEST_ICLK (0x0<<16) +#define SBI_CTL_DEST_MPHY (0x1<<16) +#define SBI_CTL_OP_IORD (0x2<<8) +#define SBI_CTL_OP_IOWR (0x3<<8) +#define SBI_CTL_OP_CRRD (0x6<<8) +#define SBI_CTL_OP_CRWR (0x7<<8) +#define SBI_RESPONSE_FAIL (0x1<<1) +#define SBI_RESPONSE_SUCCESS (0x0<<1) +#define SBI_BUSY (0x1<<0) +#define SBI_READY (0x0<<0) + +/* SBI offsets */ +#define SBI_SSCDIVINTPHASE6 0x0600 +#define SBI_SSCDIVINTPHASE_DIVSEL_MASK ((0x7f)<<1) +#define SBI_SSCDIVINTPHASE_DIVSEL(x) ((x)<<1) +#define SBI_SSCDIVINTPHASE_INCVAL_MASK ((0x7f)<<8) +#define SBI_SSCDIVINTPHASE_INCVAL(x) ((x)<<8) +#define SBI_SSCDIVINTPHASE_DIR(x) ((x)<<15) +#define SBI_SSCDIVINTPHASE_PROPAGATE (1<<0) +#define SBI_SSCCTL 0x020c +#define SBI_SSCCTL6 0x060C +#define SBI_SSCCTL_PATHALT (1<<3) +#define SBI_SSCCTL_DISABLE (1<<0) +#define SBI_SSCAUXDIV6 0x0610 +#define SBI_SSCAUXDIV_FINALDIV2SEL(x) ((x)<<4) +#define SBI_DBUFF0 0x2a00 +#define SBI_DBUFF0_ENABLE (1<<0) + +/* LPT PIXCLK_GATE */ +#define PIXCLK_GATE 0xC6020 +#define PIXCLK_GATE_UNGATE (1<<0) +#define PIXCLK_GATE_GATE (0<<0) + +/* SPLL */ +#define SPLL_CTL 0x46020 +#define SPLL_PLL_ENABLE (1<<31) +#define SPLL_PLL_SSC (1<<28) +#define SPLL_PLL_NON_SSC (2<<28) +#define SPLL_PLL_FREQ_810MHz (0<<26) +#define SPLL_PLL_FREQ_1350MHz (1<<26) + +/* WRPLL */ +#define WRPLL_CTL1 0x46040 +#define WRPLL_CTL2 0x46060 +#define WRPLL_PLL_ENABLE (1<<31) +#define WRPLL_PLL_SELECT_SSC (0x01<<28) +#define WRPLL_PLL_SELECT_NON_SSC (0x02<<28) +#define WRPLL_PLL_SELECT_LCPLL_2700 (0x03<<28) +/* WRPLL divider programming */ +#define WRPLL_DIVIDER_REFERENCE(x) ((x)<<0) +#define WRPLL_DIVIDER_POST(x) ((x)<<8) +#define WRPLL_DIVIDER_FEEDBACK(x) ((x)<<16) + +/* Port clock selection */ +#define PORT_CLK_SEL_A 0x46100 +#define PORT_CLK_SEL_B 0x46104 +#define PORT_CLK_SEL(port) _PORT(port, PORT_CLK_SEL_A, PORT_CLK_SEL_B) +#define PORT_CLK_SEL_LCPLL_2700 (0<<29) +#define PORT_CLK_SEL_LCPLL_1350 (1<<29) +#define PORT_CLK_SEL_LCPLL_810 (2<<29) +#define PORT_CLK_SEL_SPLL (3<<29) +#define PORT_CLK_SEL_WRPLL1 (4<<29) +#define PORT_CLK_SEL_WRPLL2 (5<<29) +#define PORT_CLK_SEL_NONE (7<<29) + +/* Transcoder clock selection */ +#define TRANS_CLK_SEL_A 0x46140 +#define TRANS_CLK_SEL_B 0x46144 +#define TRANS_CLK_SEL(tran) _TRANSCODER(tran, TRANS_CLK_SEL_A, TRANS_CLK_SEL_B) +/* For each transcoder, we need to select the corresponding port clock */ +#define TRANS_CLK_SEL_DISABLED (0x0<<29) +#define TRANS_CLK_SEL_PORT(x) ((x+1)<<29) + +#define _TRANSA_MSA_MISC 0x60410 +#define _TRANSB_MSA_MISC 0x61410 +#define TRANS_MSA_MISC(tran) _TRANSCODER(tran, _TRANSA_MSA_MISC, \ + _TRANSB_MSA_MISC) +#define TRANS_MSA_SYNC_CLK (1<<0) +#define TRANS_MSA_6_BPC (0<<5) +#define TRANS_MSA_8_BPC (1<<5) +#define TRANS_MSA_10_BPC (2<<5) +#define TRANS_MSA_12_BPC (3<<5) +#define TRANS_MSA_16_BPC (4<<5) + +/* LCPLL Control */ +#define LCPLL_CTL 0x130040 +#define LCPLL_PLL_DISABLE (1<<31) +#define LCPLL_PLL_LOCK (1<<30) +#define LCPLL_CLK_FREQ_MASK (3<<26) +#define LCPLL_CLK_FREQ_450 (0<<26) +#define LCPLL_CD_CLOCK_DISABLE (1<<25) +#define LCPLL_CD2X_CLOCK_DISABLE (1<<23) +#define LCPLL_CD_SOURCE_FCLK (1<<21) + +/* Pipe WM_LINETIME - watermark line time */ +#define PIPE_WM_LINETIME_A 0x45270 +#define PIPE_WM_LINETIME_B 0x45274 +#define PIPE_WM_LINETIME(pipe) _PIPE(pipe, PIPE_WM_LINETIME_A, \ + PIPE_WM_LINETIME_B) +#define PIPE_WM_LINETIME_MASK (0x1ff) +#define PIPE_WM_LINETIME_TIME(x) ((x)) +#define PIPE_WM_LINETIME_IPS_LINETIME_MASK (0x1ff<<16) +#define PIPE_WM_LINETIME_IPS_LINETIME(x) ((x)<<16) + +/* SFUSE_STRAP */ +#define SFUSE_STRAP 0xc2014 +#define SFUSE_STRAP_DDIB_DETECTED (1<<2) +#define SFUSE_STRAP_DDIC_DETECTED (1<<1) +#define SFUSE_STRAP_DDID_DETECTED (1<<0) + +#define WM_DBG 0x45280 +#define WM_DBG_DISALLOW_MULTIPLE_LP (1<<0) +#define WM_DBG_DISALLOW_MAXFIFO (1<<1) +#define WM_DBG_DISALLOW_SPRITE (1<<2) + +#endif /* _I915_REG_H_ */ --- linux-3.5.0.orig/ubuntu/i915/dvo_sil164.c +++ linux-3.5.0/ubuntu/i915/dvo_sil164.c @@ -0,0 +1,279 @@ +/************************************************************************** + +Copyright © 2006 Dave Airlie + +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 AUTHOR 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 "dvo.h" + +#define SIL164_VID 0x0001 +#define SIL164_DID 0x0006 + +#define SIL164_VID_LO 0x00 +#define SIL164_VID_HI 0x01 +#define SIL164_DID_LO 0x02 +#define SIL164_DID_HI 0x03 +#define SIL164_REV 0x04 +#define SIL164_RSVD 0x05 +#define SIL164_FREQ_LO 0x06 +#define SIL164_FREQ_HI 0x07 + +#define SIL164_REG8 0x08 +#define SIL164_8_VEN (1<<5) +#define SIL164_8_HEN (1<<4) +#define SIL164_8_DSEL (1<<3) +#define SIL164_8_BSEL (1<<2) +#define SIL164_8_EDGE (1<<1) +#define SIL164_8_PD (1<<0) + +#define SIL164_REG9 0x09 +#define SIL164_9_VLOW (1<<7) +#define SIL164_9_MSEL_MASK (0x7<<4) +#define SIL164_9_TSEL (1<<3) +#define SIL164_9_RSEN (1<<2) +#define SIL164_9_HTPLG (1<<1) +#define SIL164_9_MDI (1<<0) + +#define SIL164_REGC 0x0c + +struct sil164_priv { + //I2CDevRec d; + bool quiet; +}; + +#define SILPTR(d) ((SIL164Ptr)(d->DriverPrivate.ptr)) + +static bool sil164_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct sil164_priv *sil = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!sil->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +static bool sil164_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct sil164_priv *sil = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!sil->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/* Silicon Image 164 driver for chip on i2c bus */ +static bool sil164_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the SIL164 chip on the specified i2c bus */ + struct sil164_priv *sil; + unsigned char ch; + + sil = kzalloc(sizeof(struct sil164_priv), GFP_KERNEL); + if (sil == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = sil; + sil->quiet = true; + + if (!sil164_readb(dvo, SIL164_VID_LO, &ch)) + goto out; + + if (ch != (SIL164_VID & 0xff)) { + DRM_DEBUG_KMS("sil164 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + + if (!sil164_readb(dvo, SIL164_DID_LO, &ch)) + goto out; + + if (ch != (SIL164_DID & 0xff)) { + DRM_DEBUG_KMS("sil164 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + sil->quiet = false; + + DRM_DEBUG_KMS("init sil164 dvo controller successfully!\n"); + return true; + +out: + kfree(sil); + return false; +} + +static enum drm_connector_status sil164_detect(struct intel_dvo_device *dvo) +{ + uint8_t reg9; + + sil164_readb(dvo, SIL164_REG9, ®9); + + if (reg9 & SIL164_9_HTPLG) + return connector_status_connected; + else + return connector_status_disconnected; +} + +static enum drm_mode_status sil164_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + return MODE_OK; +} + +static void sil164_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* As long as the basics are set up, since we don't have clock + * dependencies in the mode setup, we can just leave the + * registers alone and everything will work fine. + */ + /* recommended programming sequence from doc */ + /*sil164_writeb(sil, 0x08, 0x30); + sil164_writeb(sil, 0x09, 0x00); + sil164_writeb(sil, 0x0a, 0x90); + sil164_writeb(sil, 0x0c, 0x89); + sil164_writeb(sil, 0x08, 0x31);*/ + /* don't do much */ + return; +} + +/* set the SIL164 power state */ +static void sil164_dpms(struct intel_dvo_device *dvo, bool enable) +{ + int ret; + unsigned char ch; + + ret = sil164_readb(dvo, SIL164_REG8, &ch); + if (ret == false) + return; + + if (enable) + ch |= SIL164_8_PD; + else + ch &= ~SIL164_8_PD; + + sil164_writeb(dvo, SIL164_REG8, ch); + return; +} + +static bool sil164_get_hw_state(struct intel_dvo_device *dvo) +{ + int ret; + unsigned char ch; + + ret = sil164_readb(dvo, SIL164_REG8, &ch); + if (ret == false) + return false; + + if (ch & SIL164_8_PD) + return true; + else + return false; +} + +static void sil164_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + + sil164_readb(dvo, SIL164_FREQ_LO, &val); + DRM_LOG_KMS("SIL164_FREQ_LO: 0x%02x\n", val); + sil164_readb(dvo, SIL164_FREQ_HI, &val); + DRM_LOG_KMS("SIL164_FREQ_HI: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REG8, &val); + DRM_LOG_KMS("SIL164_REG8: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REG9, &val); + DRM_LOG_KMS("SIL164_REG9: 0x%02x\n", val); + sil164_readb(dvo, SIL164_REGC, &val); + DRM_LOG_KMS("SIL164_REGC: 0x%02x\n", val); +} + +static void sil164_destroy(struct intel_dvo_device *dvo) +{ + struct sil164_priv *sil = dvo->dev_priv; + + if (sil) { + kfree(sil); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops sil164_ops = { + .init = sil164_init, + .detect = sil164_detect, + .mode_valid = sil164_mode_valid, + .mode_set = sil164_mode_set, + .dpms = sil164_dpms, + .get_hw_state = sil164_get_hw_state, + .dump_regs = sil164_dump_regs, + .destroy = sil164_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_irq.c +++ linux-3.5.0/ubuntu/i915/i915_irq.c @@ -0,0 +1,2750 @@ +/* i915_irq.c -- IRQ support for the I915 -*- linux-c -*- + */ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +/* For display hotplug interrupt */ +static void +ironlake_enable_display_irq(drm_i915_private_t *dev_priv, u32 mask) +{ + if ((dev_priv->irq_mask & mask) != 0) { + dev_priv->irq_mask &= ~mask; + I915_WRITE(DEIMR, dev_priv->irq_mask); + POSTING_READ(DEIMR); + } +} + +static inline void +ironlake_disable_display_irq(drm_i915_private_t *dev_priv, u32 mask) +{ + if ((dev_priv->irq_mask & mask) != mask) { + dev_priv->irq_mask |= mask; + I915_WRITE(DEIMR, dev_priv->irq_mask); + POSTING_READ(DEIMR); + } +} + +void +i915_enable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask) +{ + if ((dev_priv->pipestat[pipe] & mask) != mask) { + u32 reg = PIPESTAT(pipe); + + dev_priv->pipestat[pipe] |= mask; + /* Enable the interrupt, clear any pending status */ + I915_WRITE(reg, dev_priv->pipestat[pipe] | (mask >> 16)); + POSTING_READ(reg); + } +} + +void +i915_disable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask) +{ + if ((dev_priv->pipestat[pipe] & mask) != 0) { + u32 reg = PIPESTAT(pipe); + + dev_priv->pipestat[pipe] &= ~mask; + I915_WRITE(reg, dev_priv->pipestat[pipe]); + POSTING_READ(reg); + } +} + +/** + * intel_enable_asle - enable ASLE interrupt for OpRegion + */ +void intel_enable_asle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long irqflags; + + /* FIXME: opregion/asle for VLV */ + if (IS_VALLEYVIEW(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + + if (HAS_PCH_SPLIT(dev)) + ironlake_enable_display_irq(dev_priv, DE_GSE); + else { + i915_enable_pipestat(dev_priv, 1, + PIPE_LEGACY_BLC_EVENT_ENABLE); + if (INTEL_INFO(dev)->gen >= 4) + i915_enable_pipestat(dev_priv, 0, + PIPE_LEGACY_BLC_EVENT_ENABLE); + } + + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +/** + * i915_pipe_enabled - check if a pipe is enabled + * @dev: DRM device + * @pipe: pipe to check + * + * Reading certain registers when the pipe is disabled can hang the chip. + * Use this routine to make sure the PLL is running and the pipe is active + * before reading such registers if unsure. + */ +static int +i915_pipe_enabled(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + return I915_READ(PIPECONF(cpu_transcoder)) & PIPECONF_ENABLE; +} + +/* Called from drm generic code, passed a 'crtc', which + * we use as a pipe index + */ +static u32 i915_get_vblank_counter(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long high_frame; + unsigned long low_frame; + u32 high1, high2, low; + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get vblank count for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + high_frame = PIPEFRAME(pipe); + low_frame = PIPEFRAMEPIXEL(pipe); + + /* + * High & low register fields aren't synchronized, so make sure + * we get a low value that's stable across two reads of the high + * register. + */ + do { + high1 = I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK; + low = I915_READ(low_frame) & PIPE_FRAME_LOW_MASK; + high2 = I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK; + } while (high1 != high2); + + high1 >>= PIPE_FRAME_HIGH_SHIFT; + low >>= PIPE_FRAME_LOW_SHIFT; + return (high1 << 8) | low; +} + +static u32 gm45_get_vblank_counter(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int reg = PIPE_FRMCOUNT_GM45(pipe); + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get vblank count for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + return I915_READ(reg); +} + +static int i915_get_crtc_scanoutpos(struct drm_device *dev, int pipe, + int *vpos, int *hpos) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 vbl = 0, position = 0; + int vbl_start, vbl_end, htotal, vtotal; + bool in_vbl = true; + int ret = 0; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + + if (!i915_pipe_enabled(dev, pipe)) { + DRM_DEBUG_DRIVER("trying to get scanoutpos for disabled " + "pipe %c\n", pipe_name(pipe)); + return 0; + } + + /* Get vtotal. */ + vtotal = 1 + ((I915_READ(VTOTAL(cpu_transcoder)) >> 16) & 0x1fff); + + if (INTEL_INFO(dev)->gen >= 4) { + /* No obvious pixelcount register. Only query vertical + * scanout position from Display scan line register. + */ + position = I915_READ(PIPEDSL(pipe)); + + /* Decode into vertical scanout position. Don't have + * horizontal scanout position. + */ + *vpos = position & 0x1fff; + *hpos = 0; + } else { + /* Have access to pixelcount since start of frame. + * We can split this into vertical and horizontal + * scanout position. + */ + position = (I915_READ(PIPEFRAMEPIXEL(pipe)) & PIPE_PIXEL_MASK) >> PIPE_PIXEL_SHIFT; + + htotal = 1 + ((I915_READ(HTOTAL(cpu_transcoder)) >> 16) & 0x1fff); + *vpos = position / htotal; + *hpos = position - (*vpos * htotal); + } + + /* Query vblank area. */ + vbl = I915_READ(VBLANK(cpu_transcoder)); + + /* Test position against vblank region. */ + vbl_start = vbl & 0x1fff; + vbl_end = (vbl >> 16) & 0x1fff; + + if ((*vpos < vbl_start) || (*vpos > vbl_end)) + in_vbl = false; + + /* Inside "upper part" of vblank area? Apply corrective offset: */ + if (in_vbl && (*vpos >= vbl_start)) + *vpos = *vpos - vtotal; + + /* Readouts valid? */ + if (vbl > 0) + ret |= DRM_SCANOUTPOS_VALID | DRM_SCANOUTPOS_ACCURATE; + + /* In vblank? */ + if (in_vbl) + ret |= DRM_SCANOUTPOS_INVBL; + + return ret; +} + +static int i915_get_vblank_timestamp(struct drm_device *dev, int pipe, + int *max_error, + struct timeval *vblank_time, + unsigned flags) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + + if (pipe < 0 || pipe >= dev_priv->num_pipe) { + DRM_ERROR("Invalid crtc %d\n", pipe); + return -EINVAL; + } + + /* Get drm_crtc to timestamp: */ + crtc = intel_get_crtc_for_pipe(dev, pipe); + if (crtc == NULL) { + DRM_ERROR("Invalid crtc %d\n", pipe); + return -EINVAL; + } + + if (!crtc->enabled) { + DRM_DEBUG_KMS("crtc %d is disabled\n", pipe); + return -EBUSY; + } + + /* Helper routine in DRM core does all the work: */ + return drm_calc_vbltimestamp_from_scanoutpos(dev, pipe, max_error, + vblank_time, flags, + crtc); +} + +/* + * Handle hotplug events outside the interrupt handler proper. + */ +static void i915_hotplug_work_func(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + hotplug_work); + struct drm_device *dev = dev_priv->dev; + struct drm_mode_config *mode_config = &dev->mode_config; + struct intel_encoder *encoder; + + mutex_lock(&mode_config->mutex); + DRM_DEBUG_KMS("running encoder hotplug functions\n"); + + list_for_each_entry(encoder, &mode_config->encoder_list, base.head) + if (encoder->hot_plug) + encoder->hot_plug(encoder); + + mutex_unlock(&mode_config->mutex); + + /* Just fire off a uevent and let userspace tell us what to do */ + drm_helper_hpd_irq_event(dev); +} + +/* defined intel_pm.c */ +extern spinlock_t mchdev_lock; + +static void ironlake_handle_rps_change(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 busy_up, busy_down, max_avg, min_avg; + u8 new_delay; + unsigned long flags; + + spin_lock_irqsave(&mchdev_lock, flags); + + I915_WRITE16(MEMINTRSTS, I915_READ(MEMINTRSTS)); + + new_delay = dev_priv->ips.cur_delay; + + I915_WRITE16(MEMINTRSTS, MEMINT_EVAL_CHG); + busy_up = I915_READ(RCPREVBSYTUPAVG); + busy_down = I915_READ(RCPREVBSYTDNAVG); + max_avg = I915_READ(RCBMAXAVG); + min_avg = I915_READ(RCBMINAVG); + + /* Handle RCS change request from hw */ + if (busy_up > max_avg) { + if (dev_priv->ips.cur_delay != dev_priv->ips.max_delay) + new_delay = dev_priv->ips.cur_delay - 1; + if (new_delay < dev_priv->ips.max_delay) + new_delay = dev_priv->ips.max_delay; + } else if (busy_down < min_avg) { + if (dev_priv->ips.cur_delay != dev_priv->ips.min_delay) + new_delay = dev_priv->ips.cur_delay + 1; + if (new_delay > dev_priv->ips.min_delay) + new_delay = dev_priv->ips.min_delay; + } + + if (ironlake_set_drps(dev, new_delay)) + dev_priv->ips.cur_delay = new_delay; + + spin_unlock_irqrestore(&mchdev_lock, flags); + + return; +} + +static void notify_ring(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (ring->obj == NULL) + return; + + trace_i915_gem_request_complete(ring, ring->get_seqno(ring, false)); + + wake_up_all(&ring->irq_queue); + if (i915_enable_hangcheck) { + dev_priv->hangcheck_count = 0; + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); + } +} + +static void gen6_pm_rps_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + rps.work); + u32 pm_iir, pm_imr; + u8 new_delay; + + spin_lock_irq(&dev_priv->rps.lock); + pm_iir = dev_priv->rps.pm_iir; + dev_priv->rps.pm_iir = 0; + pm_imr = I915_READ(GEN6_PMIMR); + I915_WRITE(GEN6_PMIMR, 0); + spin_unlock_irq(&dev_priv->rps.lock); + + if ((pm_iir & GEN6_PM_DEFERRED_EVENTS) == 0) + return; + + mutex_lock(&dev_priv->rps.hw_lock); + + if (pm_iir & GEN6_PM_RP_UP_THRESHOLD) + new_delay = dev_priv->rps.cur_delay + 1; + else + new_delay = dev_priv->rps.cur_delay - 1; + + /* sysfs frequency interfaces may have snuck in while servicing the + * interrupt + */ + if (!(new_delay > dev_priv->rps.max_delay || + new_delay < dev_priv->rps.min_delay)) { + gen6_set_rps(dev_priv->dev, new_delay); + } + + mutex_unlock(&dev_priv->rps.hw_lock); +} + + +/** + * ivybridge_parity_work - Workqueue called when a parity error interrupt + * occurred. + * @work: workqueue struct + * + * Doesn't actually do anything except notify userspace. As a consequence of + * this event, userspace should try to remap the bad rows since statistically + * it is likely the same row is more likely to go bad again. + */ +static void ivybridge_parity_work(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + l3_parity.error_work); + u32 error_status, row, bank, subbank; + char *parity_event[5]; + uint32_t misccpctl; + unsigned long flags; + + /* We must turn off DOP level clock gating to access the L3 registers. + * In order to prevent a get/put style interface, acquire struct mutex + * any time we access those registers. + */ + mutex_lock(&dev_priv->dev->struct_mutex); + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + error_status = I915_READ(GEN7_L3CDERRST1); + row = GEN7_PARITY_ERROR_ROW(error_status); + bank = GEN7_PARITY_ERROR_BANK(error_status); + subbank = GEN7_PARITY_ERROR_SUBBANK(error_status); + + I915_WRITE(GEN7_L3CDERRST1, GEN7_PARITY_ERROR_VALID | + GEN7_L3CDERRST1_ENABLE); + POSTING_READ(GEN7_L3CDERRST1); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask &= ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + mutex_unlock(&dev_priv->dev->struct_mutex); + + parity_event[0] = "L3_PARITY_ERROR=1"; + parity_event[1] = kasprintf(GFP_KERNEL, "ROW=%d", row); + parity_event[2] = kasprintf(GFP_KERNEL, "BANK=%d", bank); + parity_event[3] = kasprintf(GFP_KERNEL, "SUBBANK=%d", subbank); + parity_event[4] = NULL; + + kobject_uevent_env(&dev_priv->dev->primary->kdev.kobj, + KOBJ_CHANGE, parity_event); + + DRM_DEBUG("Parity error: Row = %d, Bank = %d, Sub bank = %d.\n", + row, bank, subbank); + + kfree(parity_event[3]); + kfree(parity_event[2]); + kfree(parity_event[1]); +} + +static void ivybridge_handle_parity_error(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long flags; + + if (!HAS_L3_GPU_CACHE(dev)) + return; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + dev_priv->gt_irq_mask |= GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + queue_work(dev_priv->wq, &dev_priv->l3_parity.error_work); +} + +static void snb_gt_irq_handler(struct drm_device *dev, + struct drm_i915_private *dev_priv, + u32 gt_iir) +{ + + if (gt_iir & (GEN6_RENDER_USER_INTERRUPT | + GEN6_RENDER_PIPE_CONTROL_NOTIFY_INTERRUPT)) + notify_ring(dev, &dev_priv->ring[RCS]); + if (gt_iir & GEN6_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); + if (gt_iir & GEN6_BLITTER_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[BCS]); + + if (gt_iir & (GT_GEN6_BLT_CS_ERROR_INTERRUPT | + GT_GEN6_BSD_CS_ERROR_INTERRUPT | + GT_RENDER_CS_ERROR_INTERRUPT)) { + DRM_ERROR("GT error interrupt 0x%08x\n", gt_iir); + i915_handle_error(dev, false); + } + + if (gt_iir & GT_GEN7_L3_PARITY_ERROR_INTERRUPT) + ivybridge_handle_parity_error(dev); +} + +static void gen6_queue_rps_work(struct drm_i915_private *dev_priv, + u32 pm_iir) +{ + unsigned long flags; + + /* + * IIR bits should never already be set because IMR should + * prevent an interrupt from being shown in IIR. The warning + * displays a case where we've unsafely cleared + * dev_priv->rps.pm_iir. Although missing an interrupt of the same + * type is not a problem, it displays a problem in the logic. + * + * The mask bit in IMR is cleared by dev_priv->rps.work. + */ + + spin_lock_irqsave(&dev_priv->rps.lock, flags); + dev_priv->rps.pm_iir |= pm_iir; + I915_WRITE(GEN6_PMIMR, dev_priv->rps.pm_iir); + POSTING_READ(GEN6_PMIMR); + spin_unlock_irqrestore(&dev_priv->rps.lock, flags); + + queue_work(dev_priv->wq, &dev_priv->rps.work); +} + +static irqreturn_t valleyview_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, gt_iir, pm_iir; + irqreturn_t ret = IRQ_NONE; + unsigned long irqflags; + int pipe; + u32 pipe_stats[I915_MAX_PIPES]; + bool blc_event; + + atomic_inc(&dev_priv->irq_received); + + while (true) { + iir = I915_READ(VLV_IIR); + gt_iir = I915_READ(GTIIR); + pm_iir = I915_READ(GEN6_PMIIR); + + if (gt_iir == 0 && pm_iir == 0 && iir == 0) + goto out; + + ret = IRQ_HANDLED; + + snb_gt_irq_handler(dev, dev_priv, gt_iir); + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + for_each_pipe(pipe) { + if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS) + drm_handle_vblank(dev, pipe); + + if (pipe_stats[pipe] & PLANE_FLIPDONE_INT_STATUS_VLV) { + intel_prepare_page_flip(dev, pipe); + intel_finish_page_flip(dev, pipe); + } + } + + /* Consume port. Then clear IIR or we'll miss events */ + if (iir & I915_DISPLAY_PORT_INTERRUPT) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + I915_READ(PORT_HOTPLUG_STAT); + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + + if (pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + + I915_WRITE(GTIIR, gt_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + I915_WRITE(VLV_IIR, iir); + } + +out: + return ret; +} + +static void ibx_irq_handler(struct drm_device *dev, u32 pch_iir) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (pch_iir & SDE_HOTPLUG_MASK) + queue_work(dev_priv->wq, &dev_priv->hotplug_work); + + if (pch_iir & SDE_AUDIO_POWER_MASK) + DRM_DEBUG_DRIVER("PCH audio power change on port %d\n", + (pch_iir & SDE_AUDIO_POWER_MASK) >> + SDE_AUDIO_POWER_SHIFT); + + if (pch_iir & SDE_GMBUS) + DRM_DEBUG_DRIVER("PCH GMBUS interrupt\n"); + + if (pch_iir & SDE_AUDIO_HDCP_MASK) + DRM_DEBUG_DRIVER("PCH HDCP audio interrupt\n"); + + if (pch_iir & SDE_AUDIO_TRANS_MASK) + DRM_DEBUG_DRIVER("PCH transcoder audio interrupt\n"); + + if (pch_iir & SDE_POISON) + DRM_ERROR("PCH poison interrupt\n"); + + if (pch_iir & SDE_FDI_MASK) + for_each_pipe(pipe) + DRM_DEBUG_DRIVER(" pipe %c FDI IIR: 0x%08x\n", + pipe_name(pipe), + I915_READ(FDI_RX_IIR(pipe))); + + if (pch_iir & (SDE_TRANSB_CRC_DONE | SDE_TRANSA_CRC_DONE)) + DRM_DEBUG_DRIVER("PCH transcoder CRC done interrupt\n"); + + if (pch_iir & (SDE_TRANSB_CRC_ERR | SDE_TRANSA_CRC_ERR)) + DRM_DEBUG_DRIVER("PCH transcoder CRC error interrupt\n"); + + if (pch_iir & SDE_TRANSB_FIFO_UNDER) + DRM_DEBUG_DRIVER("PCH transcoder B underrun interrupt\n"); + if (pch_iir & SDE_TRANSA_FIFO_UNDER) + DRM_DEBUG_DRIVER("PCH transcoder A underrun interrupt\n"); +} + +static void cpt_irq_handler(struct drm_device *dev, u32 pch_iir) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (pch_iir & SDE_HOTPLUG_MASK_CPT) + queue_work(dev_priv->wq, &dev_priv->hotplug_work); + + if (pch_iir & SDE_AUDIO_POWER_MASK_CPT) + DRM_DEBUG_DRIVER("PCH audio power change on port %d\n", + (pch_iir & SDE_AUDIO_POWER_MASK_CPT) >> + SDE_AUDIO_POWER_SHIFT_CPT); + + if (pch_iir & SDE_AUX_MASK_CPT) + DRM_DEBUG_DRIVER("AUX channel interrupt\n"); + + if (pch_iir & SDE_GMBUS_CPT) + DRM_DEBUG_DRIVER("PCH GMBUS interrupt\n"); + + if (pch_iir & SDE_AUDIO_CP_REQ_CPT) + DRM_DEBUG_DRIVER("Audio CP request interrupt\n"); + + if (pch_iir & SDE_AUDIO_CP_CHG_CPT) + DRM_DEBUG_DRIVER("Audio CP change interrupt\n"); + + if (pch_iir & SDE_FDI_MASK_CPT) + for_each_pipe(pipe) + DRM_DEBUG_DRIVER(" pipe %c FDI IIR: 0x%08x\n", + pipe_name(pipe), + I915_READ(FDI_RX_IIR(pipe))); +} + +static irqreturn_t ivybridge_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 de_iir, gt_iir, de_ier, pm_iir; + irqreturn_t ret = IRQ_NONE; + int i; + + atomic_inc(&dev_priv->irq_received); + + /* disable master interrupt before clearing iir */ + de_ier = I915_READ(DEIER); + I915_WRITE(DEIER, de_ier & ~DE_MASTER_IRQ_CONTROL); + + gt_iir = I915_READ(GTIIR); + if (gt_iir) { + snb_gt_irq_handler(dev, dev_priv, gt_iir); + I915_WRITE(GTIIR, gt_iir); + ret = IRQ_HANDLED; + } + + de_iir = I915_READ(DEIIR); + if (de_iir) { + if (de_iir & DE_GSE_IVB) + intel_opregion_gse_intr(dev); + + for (i = 0; i < 3; i++) { + if (de_iir & (DE_PIPEA_VBLANK_IVB << (5 * i))) + drm_handle_vblank(dev, i); + if (de_iir & (DE_PLANEA_FLIP_DONE_IVB << (5 * i))) { + intel_prepare_page_flip(dev, i); + intel_finish_page_flip_plane(dev, i); + } + } + + /* check event from PCH */ + if (de_iir & DE_PCH_EVENT_IVB) { + u32 pch_iir = I915_READ(SDEIIR); + + cpt_irq_handler(dev, pch_iir); + + /* clear PCH hotplug event before clear CPU irq */ + I915_WRITE(SDEIIR, pch_iir); + } + + I915_WRITE(DEIIR, de_iir); + ret = IRQ_HANDLED; + } + + pm_iir = I915_READ(GEN6_PMIIR); + if (pm_iir) { + if (pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + ret = IRQ_HANDLED; + } + + I915_WRITE(DEIER, de_ier); + POSTING_READ(DEIER); + + return ret; +} + +static void ilk_gt_irq_handler(struct drm_device *dev, + struct drm_i915_private *dev_priv, + u32 gt_iir) +{ + if (gt_iir & (GT_USER_INTERRUPT | GT_PIPE_NOTIFY)) + notify_ring(dev, &dev_priv->ring[RCS]); + if (gt_iir & GT_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); +} + +static irqreturn_t ironlake_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int ret = IRQ_NONE; + u32 de_iir, gt_iir, de_ier, pch_iir, pm_iir; + + atomic_inc(&dev_priv->irq_received); + + /* disable master interrupt before clearing iir */ + de_ier = I915_READ(DEIER); + I915_WRITE(DEIER, de_ier & ~DE_MASTER_IRQ_CONTROL); + POSTING_READ(DEIER); + + de_iir = I915_READ(DEIIR); + gt_iir = I915_READ(GTIIR); + pch_iir = I915_READ(SDEIIR); + pm_iir = I915_READ(GEN6_PMIIR); + + if (de_iir == 0 && gt_iir == 0 && pch_iir == 0 && + (!IS_GEN6(dev) || pm_iir == 0)) + goto done; + + ret = IRQ_HANDLED; + + if (IS_GEN5(dev)) + ilk_gt_irq_handler(dev, dev_priv, gt_iir); + else + snb_gt_irq_handler(dev, dev_priv, gt_iir); + + if (de_iir & DE_GSE) + intel_opregion_gse_intr(dev); + + if (de_iir & DE_PIPEA_VBLANK) + drm_handle_vblank(dev, 0); + + if (de_iir & DE_PIPEB_VBLANK) + drm_handle_vblank(dev, 1); + + if (de_iir & DE_PLANEA_FLIP_DONE) { + intel_prepare_page_flip(dev, 0); + intel_finish_page_flip_plane(dev, 0); + } + + if (de_iir & DE_PLANEB_FLIP_DONE) { + intel_prepare_page_flip(dev, 1); + intel_finish_page_flip_plane(dev, 1); + } + + /* check event from PCH */ + if (de_iir & DE_PCH_EVENT) { + if (HAS_PCH_CPT(dev)) + cpt_irq_handler(dev, pch_iir); + else + ibx_irq_handler(dev, pch_iir); + } + + if (IS_GEN5(dev) && de_iir & DE_PCU_EVENT) + ironlake_handle_rps_change(dev); + + if (IS_GEN6(dev) && pm_iir & GEN6_PM_DEFERRED_EVENTS) + gen6_queue_rps_work(dev_priv, pm_iir); + + /* should clear PCH hotplug event before clear CPU irq */ + I915_WRITE(SDEIIR, pch_iir); + I915_WRITE(GTIIR, gt_iir); + I915_WRITE(DEIIR, de_iir); + I915_WRITE(GEN6_PMIIR, pm_iir); + +done: + I915_WRITE(DEIER, de_ier); + POSTING_READ(DEIER); + + return ret; +} + +/** + * i915_error_work_func - do process context error handling work + * @work: work struct + * + * Fire an error uevent so userspace can see that a hang or error + * was detected. + */ +static void i915_error_work_func(struct work_struct *work) +{ + drm_i915_private_t *dev_priv = container_of(work, drm_i915_private_t, + error_work); + struct drm_device *dev = dev_priv->dev; + char *error_event[] = { "ERROR=1", NULL }; + char *reset_event[] = { "RESET=1", NULL }; + char *reset_done_event[] = { "ERROR=0", NULL }; + + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, error_event); + + if (atomic_read(&dev_priv->mm.wedged)) { + DRM_DEBUG_DRIVER("resetting chip\n"); + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_event); + if (!i915_reset(dev)) { + atomic_set(&dev_priv->mm.wedged, 0); + kobject_uevent_env(&dev->primary->kdev.kobj, KOBJ_CHANGE, reset_done_event); + } + complete_all(&dev_priv->error_completion); + } +} + +/* NB: please notice the memset */ +static void i915_get_extra_instdone(struct drm_device *dev, + uint32_t *instdone) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + memset(instdone, 0, sizeof(*instdone) * I915_NUM_INSTDONE_REG); + + switch(INTEL_INFO(dev)->gen) { + case 2: + case 3: + instdone[0] = I915_READ(INSTDONE); + break; + case 4: + case 5: + case 6: + instdone[0] = I915_READ(INSTDONE_I965); + instdone[1] = I915_READ(INSTDONE1); + break; + default: + WARN_ONCE(1, "Unsupported platform\n"); + case 7: + instdone[0] = I915_READ(GEN7_INSTDONE_1); + instdone[1] = I915_READ(GEN7_SC_INSTDONE); + instdone[2] = I915_READ(GEN7_SAMPLER_INSTDONE); + instdone[3] = I915_READ(GEN7_ROW_INSTDONE); + break; + } +} + +#ifdef CONFIG_DEBUG_FS +static struct drm_i915_error_object * +i915_error_object_create(struct drm_i915_private *dev_priv, + struct drm_i915_gem_object *src) +{ + struct drm_i915_error_object *dst; + int i, count; + u32 reloc_offset; + + if (src == NULL || src->pages == NULL) + return NULL; + + count = src->base.size / PAGE_SIZE; + + dst = kmalloc(sizeof(*dst) + count * sizeof(u32 *), GFP_ATOMIC); + if (dst == NULL) + return NULL; + + reloc_offset = src->gtt_offset; + for (i = 0; i < count; i++) { + unsigned long flags; + void *d; + + d = kmalloc(PAGE_SIZE, GFP_ATOMIC); + if (d == NULL) + goto unwind; + + local_irq_save(flags); + if (reloc_offset < dev_priv->mm.gtt_mappable_end && + src->has_global_gtt_mapping) { + void __iomem *s; + + /* Simply ignore tiling or any overlapping fence. + * It's part of the error state, and this hopefully + * captures what the GPU read. + */ + + s = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + reloc_offset); + memcpy_fromio(d, s, PAGE_SIZE); + io_mapping_unmap_atomic(s); + } else { + struct page *page; + void *s; + + page = i915_gem_object_get_page(src, i); + + drm_clflush_pages(&page, 1); + + s = kmap_atomic(page); + memcpy(d, s, PAGE_SIZE); + kunmap_atomic(s); + + drm_clflush_pages(&page, 1); + } + local_irq_restore(flags); + + dst->pages[i] = d; + + reloc_offset += PAGE_SIZE; + } + dst->page_count = count; + dst->gtt_offset = src->gtt_offset; + + return dst; + +unwind: + while (i--) + kfree(dst->pages[i]); + kfree(dst); + return NULL; +} + +static void +i915_error_object_free(struct drm_i915_error_object *obj) +{ + int page; + + if (obj == NULL) + return; + + for (page = 0; page < obj->page_count; page++) + kfree(obj->pages[page]); + + kfree(obj); +} + +void +i915_error_state_free(struct kref *error_ref) +{ + struct drm_i915_error_state *error = container_of(error_ref, + typeof(*error), ref); + int i; + + for (i = 0; i < ARRAY_SIZE(error->ring); i++) { + i915_error_object_free(error->ring[i].batchbuffer); + i915_error_object_free(error->ring[i].ringbuffer); + kfree(error->ring[i].requests); + } + + kfree(error->active_bo); + kfree(error->overlay); + kfree(error); +} +static void capture_bo(struct drm_i915_error_buffer *err, + struct drm_i915_gem_object *obj) +{ + err->size = obj->base.size; + err->name = obj->base.name; + err->rseqno = obj->last_read_seqno; + err->wseqno = obj->last_write_seqno; + err->gtt_offset = obj->gtt_offset; + err->read_domains = obj->base.read_domains; + err->write_domain = obj->base.write_domain; + err->fence_reg = obj->fence_reg; + err->pinned = 0; + if (obj->pin_count > 0) + err->pinned = 1; + if (obj->user_pin_count > 0) + err->pinned = -1; + err->tiling = obj->tiling_mode; + err->dirty = obj->dirty; + err->purgeable = obj->madv != I915_MADV_WILLNEED; + err->ring = obj->ring ? obj->ring->id : -1; + err->cache_level = obj->cache_level; +} + +static u32 capture_active_bo(struct drm_i915_error_buffer *err, + int count, struct list_head *head) +{ + struct drm_i915_gem_object *obj; + int i = 0; + + list_for_each_entry(obj, head, mm_list) { + capture_bo(err++, obj); + if (++i == count) + break; + } + + return i; +} + +static u32 capture_pinned_bo(struct drm_i915_error_buffer *err, + int count, struct list_head *head) +{ + struct drm_i915_gem_object *obj; + int i = 0; + + list_for_each_entry(obj, head, gtt_list) { + if (obj->pin_count == 0) + continue; + + capture_bo(err++, obj); + if (++i == count) + break; + } + + return i; +} + +static void i915_gem_record_fences(struct drm_device *dev, + struct drm_i915_error_state *error) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + error->fence[i] = I915_READ64(FENCE_REG_SANDYBRIDGE_0 + (i * 8)); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + error->fence[i] = I915_READ64(FENCE_REG_965_0 + (i * 8)); + break; + case 3: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + error->fence[i+8] = I915_READ(FENCE_REG_945_8 + (i * 4)); + case 2: + for (i = 0; i < 8; i++) + error->fence[i] = I915_READ(FENCE_REG_830_0 + (i * 4)); + break; + + } +} + +static struct drm_i915_error_object * +i915_error_first_batchbuffer(struct drm_i915_private *dev_priv, + struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + u32 seqno; + + if (!ring->get_seqno) + return NULL; + + seqno = ring->get_seqno(ring, false); + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) { + if (obj->ring != ring) + continue; + + if (i915_seqno_passed(seqno, obj->last_read_seqno)) + continue; + + if ((obj->base.read_domains & I915_GEM_DOMAIN_COMMAND) == 0) + continue; + + /* We need to copy these to an anonymous buffer as the simplest + * method to avoid being overwritten by userspace. + */ + return i915_error_object_create(dev_priv, obj); + } + + return NULL; +} + +static void i915_record_ring_state(struct drm_device *dev, + struct drm_i915_error_state *error, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen >= 6) { + error->rc_psmi[ring->id] = I915_READ(ring->mmio_base + 0x50); + error->fault_reg[ring->id] = I915_READ(RING_FAULT_REG(ring)); + error->semaphore_mboxes[ring->id][0] + = I915_READ(RING_SYNC_0(ring->mmio_base)); + error->semaphore_mboxes[ring->id][1] + = I915_READ(RING_SYNC_1(ring->mmio_base)); + } + + if (INTEL_INFO(dev)->gen >= 4) { + error->faddr[ring->id] = I915_READ(RING_DMA_FADD(ring->mmio_base)); + error->ipeir[ring->id] = I915_READ(RING_IPEIR(ring->mmio_base)); + error->ipehr[ring->id] = I915_READ(RING_IPEHR(ring->mmio_base)); + error->instdone[ring->id] = I915_READ(RING_INSTDONE(ring->mmio_base)); + error->instps[ring->id] = I915_READ(RING_INSTPS(ring->mmio_base)); + if (ring->id == RCS) + error->bbaddr = I915_READ64(BB_ADDR); + } else { + error->faddr[ring->id] = I915_READ(DMA_FADD_I8XX); + error->ipeir[ring->id] = I915_READ(IPEIR); + error->ipehr[ring->id] = I915_READ(IPEHR); + error->instdone[ring->id] = I915_READ(INSTDONE); + } + + error->waiting[ring->id] = waitqueue_active(&ring->irq_queue); + error->instpm[ring->id] = I915_READ(RING_INSTPM(ring->mmio_base)); + error->seqno[ring->id] = ring->get_seqno(ring, false); + error->acthd[ring->id] = intel_ring_get_active_head(ring); + error->head[ring->id] = I915_READ_HEAD(ring); + error->tail[ring->id] = I915_READ_TAIL(ring); + + error->cpu_ring_head[ring->id] = ring->head; + error->cpu_ring_tail[ring->id] = ring->tail; +} + +static void i915_gem_record_rings(struct drm_device *dev, + 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) { + i915_record_ring_state(dev, error, ring); + + error->ring[i].batchbuffer = + i915_error_first_batchbuffer(dev_priv, ring); + + error->ring[i].ringbuffer = + i915_error_object_create(dev_priv, ring->obj); + + count = 0; + list_for_each_entry(request, &ring->request_list, list) + count++; + + error->ring[i].num_requests = count; + error->ring[i].requests = + kmalloc(count*sizeof(struct drm_i915_error_request), + GFP_ATOMIC); + if (error->ring[i].requests == NULL) { + error->ring[i].num_requests = 0; + continue; + } + + count = 0; + list_for_each_entry(request, &ring->request_list, list) { + struct drm_i915_error_request *erq; + + erq = &error->ring[i].requests[count++]; + erq->seqno = request->seqno; + erq->jiffies = request->emitted_jiffies; + erq->tail = request->tail; + } + } +} + +/** + * i915_capture_error_state - capture an error record for later analysis + * @dev: drm device + * + * Should be called when an error is detected (either a hang or an error + * interrupt) to capture error state from the time of the error. Fills + * out a structure which becomes available in debugfs for user level tools + * to pick up. + */ +static void i915_capture_error_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct drm_i915_error_state *error; + unsigned long flags; + int i, pipe; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error = dev_priv->first_error; + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + if (error) + return; + + /* Account for pipe specific data like PIPE*STAT */ + error = kzalloc(sizeof(*error), GFP_ATOMIC); + if (!error) { + DRM_DEBUG_DRIVER("out of memory, not capturing error state\n"); + return; + } + + DRM_INFO("capturing error event; look for more information in /debug/dri/%d/i915_error_state\n", + dev->primary->index); + + kref_init(&error->ref); + error->eir = I915_READ(EIR); + error->pgtbl_er = I915_READ(PGTBL_ER); + error->ccid = I915_READ(CCID); + + if (HAS_PCH_SPLIT(dev)) + error->ier = I915_READ(DEIER) | I915_READ(GTIER); + else if (IS_VALLEYVIEW(dev)) + error->ier = I915_READ(GTIER) | I915_READ(VLV_IER); + else if (IS_GEN2(dev)) + error->ier = I915_READ16(IER); + else + error->ier = I915_READ(IER); + + for_each_pipe(pipe) + error->pipestat[pipe] = I915_READ(PIPESTAT(pipe)); + + if (INTEL_INFO(dev)->gen >= 6) { + error->error = I915_READ(ERROR_GEN6); + error->done_reg = I915_READ(DONE_REG); + } + + if (INTEL_INFO(dev)->gen == 7) + error->err_int = I915_READ(GEN7_ERR_INT); + + i915_get_extra_instdone(dev, error->extra_instdone); + + i915_gem_record_fences(dev, error); + i915_gem_record_rings(dev, error); + + /* Record buffers on the active and pinned lists. */ + error->active_bo = NULL; + error->pinned_bo = NULL; + + i = 0; + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) + i++; + error->active_bo_count = i; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) + if (obj->pin_count) + i++; + error->pinned_bo_count = i - error->active_bo_count; + + error->active_bo = NULL; + error->pinned_bo = NULL; + if (i) { + error->active_bo = kmalloc(sizeof(*error->active_bo)*i, + GFP_ATOMIC); + if (error->active_bo) + error->pinned_bo = + error->active_bo + error->active_bo_count; + } + + if (error->active_bo) + error->active_bo_count = + capture_active_bo(error->active_bo, + error->active_bo_count, + &dev_priv->mm.active_list); + + if (error->pinned_bo) + error->pinned_bo_count = + capture_pinned_bo(error->pinned_bo, + error->pinned_bo_count, + &dev_priv->mm.bound_list); + + do_gettimeofday(&error->time); + + error->overlay = intel_overlay_capture_error_state(dev); + error->display = intel_display_capture_error_state(dev); + + spin_lock_irqsave(&dev_priv->error_lock, flags); + if (dev_priv->first_error == NULL) { + dev_priv->first_error = error; + error = NULL; + } + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + if (error) + i915_error_state_free(&error->ref); +} + +void i915_destroy_error_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_error_state *error; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error = dev_priv->first_error; + dev_priv->first_error = NULL; + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + if (error) + kref_put(&error->ref, i915_error_state_free); +} +#else +#define i915_capture_error_state(x) +#endif + +static void i915_report_and_clear_eir(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t instdone[I915_NUM_INSTDONE_REG]; + u32 eir = I915_READ(EIR); + int pipe, i; + + if (!eir) + return; + + pr_err("render error detected, EIR: 0x%08x\n", eir); + + i915_get_extra_instdone(dev, instdone); + + if (IS_G4X(dev)) { + if (eir & (GM45_ERROR_MEM_PRIV | GM45_ERROR_CP_PRIV)) { + u32 ipeir = I915_READ(IPEIR_I965); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR_I965)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR_I965)); + for (i = 0; i < ARRAY_SIZE(instdone); i++) + pr_err(" INSTDONE_%d: 0x%08x\n", i, instdone[i]); + pr_err(" INSTPS: 0x%08x\n", I915_READ(INSTPS)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD_I965)); + I915_WRITE(IPEIR_I965, ipeir); + POSTING_READ(IPEIR_I965); + } + if (eir & GM45_ERROR_PAGE_TABLE) { + u32 pgtbl_err = I915_READ(PGTBL_ER); + pr_err("page table error\n"); + pr_err(" PGTBL_ER: 0x%08x\n", pgtbl_err); + I915_WRITE(PGTBL_ER, pgtbl_err); + POSTING_READ(PGTBL_ER); + } + } + + if (!IS_GEN2(dev)) { + if (eir & I915_ERROR_PAGE_TABLE) { + u32 pgtbl_err = I915_READ(PGTBL_ER); + pr_err("page table error\n"); + pr_err(" PGTBL_ER: 0x%08x\n", pgtbl_err); + I915_WRITE(PGTBL_ER, pgtbl_err); + POSTING_READ(PGTBL_ER); + } + } + + if (eir & I915_ERROR_MEMORY_REFRESH) { + pr_err("memory refresh error:\n"); + for_each_pipe(pipe) + pr_err("pipe %c stat: 0x%08x\n", + pipe_name(pipe), I915_READ(PIPESTAT(pipe))); + /* pipestat has already been acked */ + } + if (eir & I915_ERROR_INSTRUCTION) { + pr_err("instruction error\n"); + pr_err(" INSTPM: 0x%08x\n", I915_READ(INSTPM)); + for (i = 0; i < ARRAY_SIZE(instdone); i++) + pr_err(" INSTDONE_%d: 0x%08x\n", i, instdone[i]); + if (INTEL_INFO(dev)->gen < 4) { + u32 ipeir = I915_READ(IPEIR); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD)); + I915_WRITE(IPEIR, ipeir); + POSTING_READ(IPEIR); + } else { + u32 ipeir = I915_READ(IPEIR_I965); + + pr_err(" IPEIR: 0x%08x\n", I915_READ(IPEIR_I965)); + pr_err(" IPEHR: 0x%08x\n", I915_READ(IPEHR_I965)); + pr_err(" INSTPS: 0x%08x\n", I915_READ(INSTPS)); + pr_err(" ACTHD: 0x%08x\n", I915_READ(ACTHD_I965)); + I915_WRITE(IPEIR_I965, ipeir); + POSTING_READ(IPEIR_I965); + } + } + + I915_WRITE(EIR, eir); + POSTING_READ(EIR); + eir = I915_READ(EIR); + if (eir) { + /* + * some errors might have become stuck, + * mask them. + */ + DRM_ERROR("EIR stuck: 0x%08x, masking\n", eir); + I915_WRITE(EMR, I915_READ(EMR) | eir); + I915_WRITE(IIR, I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT); + } +} + +/** + * i915_handle_error - handle an error interrupt + * @dev: drm device + * + * Do some basic checking of regsiter state at error interrupt time and + * dump it to the syslog. Also call i915_capture_error_state() to make + * sure we get a record and make it available in debugfs. Fire a uevent + * so userspace knows something bad happened (should trigger collection + * of a ring dump etc.). + */ +void i915_handle_error(struct drm_device *dev, bool wedged) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + i915_capture_error_state(dev); + i915_report_and_clear_eir(dev); + + if (wedged) { + INIT_COMPLETION(dev_priv->error_completion); + atomic_set(&dev_priv->mm.wedged, 1); + + /* + * Wakeup waiting processes so they don't hang + */ + for_each_ring(ring, dev_priv, i) + wake_up_all(&ring->irq_queue); + } + + queue_work(dev_priv->wq, &dev_priv->error_work); +} + +static void i915_pageflip_stall_check(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_crtc *crtc = dev_priv->pipe_to_crtc_mapping[pipe]; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_gem_object *obj; + struct intel_unpin_work *work; + unsigned long flags; + bool stall_detected; + + /* Ignore early vblank irqs */ + if (intel_crtc == NULL) + return; + + spin_lock_irqsave(&dev->event_lock, flags); + work = intel_crtc->unpin_work; + + if (work == NULL || work->pending || !work->enable_stall_check) { + /* Either the pending flip IRQ arrived, or we're too early. Don't check */ + spin_unlock_irqrestore(&dev->event_lock, flags); + return; + } + + /* Potential stall - if we see that the flip has happened, assume a missed interrupt */ + obj = work->pending_flip_obj; + if (INTEL_INFO(dev)->gen >= 4) { + int dspsurf = DSPSURF(intel_crtc->plane); + stall_detected = I915_HI_DISPBASE(I915_READ(dspsurf)) == + obj->gtt_offset; + } else { + int dspaddr = DSPADDR(intel_crtc->plane); + stall_detected = I915_READ(dspaddr) == (obj->gtt_offset + + crtc->y * crtc->fb->pitches[0] + + crtc->x * crtc->fb->bits_per_pixel/8); + } + + spin_unlock_irqrestore(&dev->event_lock, flags); + + if (stall_detected) { + DRM_DEBUG_DRIVER("Pageflip stall detected\n"); + intel_prepare_page_flip(dev, intel_crtc->plane); + } +} + +/* Called from drm generic code, passed 'crtc' which + * we use as a pipe index + */ +static int i915_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (INTEL_INFO(dev)->gen >= 4) + i915_enable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + else + i915_enable_pipestat(dev_priv, pipe, + PIPE_VBLANK_INTERRUPT_ENABLE); + + /* maintain vblank delivery even in deep C-states */ + if (dev_priv->info->gen == 3) + I915_WRITE(INSTPM, _MASKED_BIT_DISABLE(INSTPM_AGPBUSY_DIS)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int ironlake_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_enable_display_irq(dev_priv, (pipe == 0) ? + DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int ivybridge_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_enable_display_irq(dev_priv, + DE_PIPEA_VBLANK_IVB << (5 * pipe)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +static int valleyview_enable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + u32 imr; + + if (!i915_pipe_enabled(dev, pipe)) + return -EINVAL; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + imr = I915_READ(VLV_IMR); + if (pipe == 0) + imr &= ~I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT; + else + imr &= ~I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + I915_WRITE(VLV_IMR, imr); + i915_enable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + return 0; +} + +/* Called from drm generic code, passed 'crtc' which + * we use as a pipe index + */ +static void i915_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (dev_priv->info->gen == 3) + I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_AGPBUSY_DIS)); + + i915_disable_pipestat(dev_priv, pipe, + PIPE_VBLANK_INTERRUPT_ENABLE | + PIPE_START_VBLANK_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void ironlake_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_disable_display_irq(dev_priv, (pipe == 0) ? + DE_PIPEA_VBLANK : DE_PIPEB_VBLANK); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void ivybridge_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + ironlake_disable_display_irq(dev_priv, + DE_PIPEA_VBLANK_IVB << (pipe * 5)); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static void valleyview_disable_vblank(struct drm_device *dev, int pipe) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + unsigned long irqflags; + u32 imr; + + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_disable_pipestat(dev_priv, pipe, + PIPE_START_VBLANK_INTERRUPT_ENABLE); + imr = I915_READ(VLV_IMR); + if (pipe == 0) + imr |= I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT; + else + imr |= I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + I915_WRITE(VLV_IMR, imr); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); +} + +static u32 +ring_last_seqno(struct intel_ring_buffer *ring) +{ + return list_entry(ring->request_list.prev, + struct drm_i915_gem_request, list)->seqno; +} + +static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err) +{ + if (list_empty(&ring->request_list) || + i915_seqno_passed(ring->get_seqno(ring, false), + ring_last_seqno(ring))) { + /* Issue a wake-up to catch stuck h/w. */ + if (waitqueue_active(&ring->irq_queue)) { + DRM_ERROR("Hangcheck timer elapsed... %s idle\n", + ring->name); + wake_up_all(&ring->irq_queue); + *err = true; + } + return true; + } + return false; +} + +static bool kick_ring(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ_CTL(ring); + if (tmp & RING_WAIT) { + DRM_ERROR("Kicking stuck wait on %s\n", + ring->name); + I915_WRITE_CTL(ring, tmp); + return true; + } + return false; +} + +static bool i915_hangcheck_hung(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (dev_priv->hangcheck_count++ > 1) { + bool hung = true; + + DRM_ERROR("Hangcheck timer elapsed... GPU hung\n"); + i915_handle_error(dev, true); + + if (!IS_GEN2(dev)) { + struct intel_ring_buffer *ring; + int i; + + /* Is the chip hanging on a WAIT_FOR_EVENT? + * If so we can simply poke the RB_WAIT bit + * and break the hang. This should work on + * all but the second generation chipsets. + */ + for_each_ring(ring, dev_priv, i) + hung &= !kick_ring(ring); + } + + return hung; + } + + return false; +} + +/** + * This is called when the chip hasn't reported back with completed + * batchbuffers in a long time. The first time this is called we simply record + * ACTHD. If ACTHD hasn't changed by the time the hangcheck timer elapses + * again, we assume the chip is wedged and try to fix it. + */ +void i915_hangcheck_elapsed(unsigned long data) +{ + struct drm_device *dev = (struct drm_device *)data; + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t acthd[I915_NUM_RINGS], instdone[I915_NUM_INSTDONE_REG]; + struct intel_ring_buffer *ring; + bool err = false, idle; + int i; + + if (!i915_enable_hangcheck) + return; + + memset(acthd, 0, sizeof(acthd)); + idle = true; + for_each_ring(ring, dev_priv, i) { + idle &= i915_hangcheck_ring_idle(ring, &err); + acthd[i] = intel_ring_get_active_head(ring); + } + + /* If all work is done then ACTHD clearly hasn't advanced. */ + if (idle) { + if (err) { + if (i915_hangcheck_hung(dev)) + return; + + goto repeat; + } + + dev_priv->hangcheck_count = 0; + return; + } + + i915_get_extra_instdone(dev, instdone); + if (memcmp(dev_priv->last_acthd, acthd, sizeof(acthd)) == 0 && + memcmp(dev_priv->prev_instdone, instdone, sizeof(instdone)) == 0) { + if (i915_hangcheck_hung(dev)) + return; + } else { + dev_priv->hangcheck_count = 0; + + memcpy(dev_priv->last_acthd, acthd, sizeof(acthd)); + memcpy(dev_priv->prev_instdone, instdone, sizeof(instdone)); + } + +repeat: + /* Reset timer case chip hangs without another request being added */ + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); +} + +/* drm_dma.h hooks +*/ +static void ironlake_irq_preinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + atomic_set(&dev_priv->irq_received, 0); + + I915_WRITE(HWSTAM, 0xeffe); + + /* XXX hotplug from PCH */ + + I915_WRITE(DEIMR, 0xffffffff); + I915_WRITE(DEIER, 0x0); + POSTING_READ(DEIER); + + /* and GT */ + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + POSTING_READ(GTIER); + + /* south display irq */ + I915_WRITE(SDEIMR, 0xffffffff); + I915_WRITE(SDEIER, 0x0); + POSTING_READ(SDEIER); +} + +static void valleyview_irq_preinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + /* VLV magic */ + I915_WRITE(VLV_IMR, 0); + I915_WRITE(RING_IMR(RENDER_RING_BASE), 0); + I915_WRITE(RING_IMR(GEN6_BSD_RING_BASE), 0); + I915_WRITE(RING_IMR(BLT_RING_BASE), 0); + + /* and GT */ + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + POSTING_READ(GTIER); + + I915_WRITE(DPINVGTT, 0xff); + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IMR, 0xffffffff); + I915_WRITE(VLV_IER, 0x0); + POSTING_READ(VLV_IER); +} + +/* + * Enable digital hotplug on the PCH, and configure the DP short pulse + * duration to 2ms (which is the minimum in the Display Port spec) + * + * This register is the same on all known PCH chips. + */ + +static void ironlake_enable_pch_hotplug(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 hotplug; + + hotplug = I915_READ(PCH_PORT_HOTPLUG); + hotplug &= ~(PORTD_PULSE_DURATION_MASK|PORTC_PULSE_DURATION_MASK|PORTB_PULSE_DURATION_MASK); + hotplug |= PORTD_HOTPLUG_ENABLE | PORTD_PULSE_DURATION_2ms; + hotplug |= PORTC_HOTPLUG_ENABLE | PORTC_PULSE_DURATION_2ms; + hotplug |= PORTB_HOTPLUG_ENABLE | PORTB_PULSE_DURATION_2ms; + I915_WRITE(PCH_PORT_HOTPLUG, hotplug); +} + +static int ironlake_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + /* enable kind of interrupts always enabled */ + u32 display_mask = DE_MASTER_IRQ_CONTROL | DE_GSE | DE_PCH_EVENT | + DE_PLANEA_FLIP_DONE | DE_PLANEB_FLIP_DONE; + u32 render_irqs; + u32 hotplug_mask; + + dev_priv->irq_mask = ~display_mask; + + /* should always can generate irq */ + I915_WRITE(DEIIR, I915_READ(DEIIR)); + I915_WRITE(DEIMR, dev_priv->irq_mask); + I915_WRITE(DEIER, display_mask | DE_PIPEA_VBLANK | DE_PIPEB_VBLANK); + POSTING_READ(DEIER); + + dev_priv->gt_irq_mask = ~0; + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + if (IS_GEN6(dev)) + render_irqs = + GT_USER_INTERRUPT | + GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT; + else + render_irqs = + GT_USER_INTERRUPT | + GT_PIPE_NOTIFY | + GT_BSD_USER_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + if (HAS_PCH_CPT(dev)) { + hotplug_mask = (SDE_CRT_HOTPLUG_CPT | + SDE_PORTB_HOTPLUG_CPT | + SDE_PORTC_HOTPLUG_CPT | + SDE_PORTD_HOTPLUG_CPT); + } else { + hotplug_mask = (SDE_CRT_HOTPLUG | + SDE_PORTB_HOTPLUG | + SDE_PORTC_HOTPLUG | + SDE_PORTD_HOTPLUG | + SDE_AUX_MASK); + } + + dev_priv->pch_irq_mask = ~hotplug_mask; + + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); + I915_WRITE(SDEIMR, dev_priv->pch_irq_mask); + I915_WRITE(SDEIER, hotplug_mask); + POSTING_READ(SDEIER); + + ironlake_enable_pch_hotplug(dev); + + if (IS_IRONLAKE_M(dev)) { + /* Clear & enable PCU event interrupts */ + I915_WRITE(DEIIR, DE_PCU_EVENT); + I915_WRITE(DEIER, I915_READ(DEIER) | DE_PCU_EVENT); + ironlake_enable_display_irq(dev_priv, DE_PCU_EVENT); + } + + return 0; +} + +static int ivybridge_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + /* enable kind of interrupts always enabled */ + u32 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; + u32 render_irqs; + u32 hotplug_mask; + + dev_priv->irq_mask = ~display_mask; + + /* should always can generate irq */ + I915_WRITE(DEIIR, I915_READ(DEIIR)); + I915_WRITE(DEIMR, dev_priv->irq_mask); + I915_WRITE(DEIER, + display_mask | + DE_PIPEC_VBLANK_IVB | + DE_PIPEB_VBLANK_IVB | + DE_PIPEA_VBLANK_IVB); + POSTING_READ(DEIER); + + dev_priv->gt_irq_mask = ~GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT | GT_GEN7_L3_PARITY_ERROR_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + hotplug_mask = (SDE_CRT_HOTPLUG_CPT | + SDE_PORTB_HOTPLUG_CPT | + SDE_PORTC_HOTPLUG_CPT | + SDE_PORTD_HOTPLUG_CPT); + dev_priv->pch_irq_mask = ~hotplug_mask; + + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); + I915_WRITE(SDEIMR, dev_priv->pch_irq_mask); + I915_WRITE(SDEIER, hotplug_mask); + POSTING_READ(SDEIER); + + ironlake_enable_pch_hotplug(dev); + + return 0; +} + +static int valleyview_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 enable_mask; + u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); + u32 pipestat_enable = PLANE_FLIP_DONE_INT_EN_VLV; + u32 render_irqs; + u16 msid; + + enable_mask = I915_DISPLAY_PORT_INTERRUPT; + enable_mask |= I915_DISPLAY_PIPE_A_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT | + I915_DISPLAY_PIPE_B_EVENT_INTERRUPT | + I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + + /* + *Leave vblank interrupts masked initially. enable/disable will + * toggle them based on usage. + */ + dev_priv->irq_mask = (~enable_mask) | + I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT | + I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + /* Hack for broken MSIs on VLV */ + pci_write_config_dword(dev_priv->dev->pdev, 0x94, 0xfee00000); + pci_read_config_word(dev->pdev, 0x98, &msid); + msid &= 0xff; /* mask out delivery bits */ + msid |= (1<<14); + pci_write_config_word(dev_priv->dev->pdev, 0x98, msid); + + I915_WRITE(VLV_IMR, dev_priv->irq_mask); + I915_WRITE(VLV_IER, enable_mask); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(PIPESTAT(0), 0xffff); + I915_WRITE(PIPESTAT(1), 0xffff); + POSTING_READ(VLV_IER); + + i915_enable_pipestat(dev_priv, 0, pipestat_enable); + i915_enable_pipestat(dev_priv, 1, pipestat_enable); + + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IIR, 0xffffffff); + + I915_WRITE(GTIIR, I915_READ(GTIIR)); + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + + render_irqs = GT_USER_INTERRUPT | GEN6_BSD_USER_INTERRUPT | + GEN6_BLITTER_USER_INTERRUPT; + I915_WRITE(GTIER, render_irqs); + POSTING_READ(GTIER); + + /* ack & enable invalid PTE error interrupts */ +#if 0 /* FIXME: add support to irq handler for checking these bits */ + I915_WRITE(DPINVGTT, DPINVGTT_STATUS_MASK); + I915_WRITE(DPINVGTT, DPINVGTT_EN_MASK); +#endif + + I915_WRITE(VLV_MASTER_IER, MASTER_INTERRUPT_ENABLE); + /* Note HDMI and DP share bits */ + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + + return 0; +} + +static void valleyview_irq_uninstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (!dev_priv) + return; + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + + I915_WRITE(HWSTAM, 0xffffffff); + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0xffff); + I915_WRITE(VLV_IIR, 0xffffffff); + I915_WRITE(VLV_IMR, 0xffffffff); + I915_WRITE(VLV_IER, 0x0); + POSTING_READ(VLV_IER); +} + +static void ironlake_irq_uninstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + if (!dev_priv) + return; + + I915_WRITE(HWSTAM, 0xffffffff); + + I915_WRITE(DEIMR, 0xffffffff); + I915_WRITE(DEIER, 0x0); + I915_WRITE(DEIIR, I915_READ(DEIIR)); + + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + I915_WRITE(GTIIR, I915_READ(GTIIR)); + + I915_WRITE(SDEIMR, 0xffffffff); + I915_WRITE(SDEIER, 0x0); + I915_WRITE(SDEIIR, I915_READ(SDEIIR)); +} + +static void i8xx_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE16(IMR, 0xffff); + I915_WRITE16(IER, 0x0); + POSTING_READ16(IER); +} + +static int i8xx_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + I915_WRITE16(EMR, + ~(I915_ERROR_PAGE_TABLE | I915_ERROR_MEMORY_REFRESH)); + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = + ~(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_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); + + return 0; +} + +static irqreturn_t i8xx_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u16 iir, new_iir; + u32 pipe_stats[2]; + unsigned long irqflags; + int irq_received; + int pipe; + u16 flip_mask = + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ16(IIR); + if (iir == 0) + return IRQ_NONE; + + while (iir & ~flip_mask) { + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = 1; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + I915_WRITE16(IIR, iir & ~flip_mask); + new_iir = I915_READ16(IIR); /* Flush posted writes */ + + i915_update_dri1_breadcrumb(dev); + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + + if (pipe_stats[0] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, 0)) { + if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) { + intel_prepare_page_flip(dev, 0); + intel_finish_page_flip(dev, 0); + flip_mask &= ~I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT; + } + } + + if (pipe_stats[1] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, 1)) { + if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) { + intel_prepare_page_flip(dev, 1); + intel_finish_page_flip(dev, 1); + flip_mask &= ~I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + } + } + + iir = new_iir; + } + + return IRQ_HANDLED; +} + +static void i8xx_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + for_each_pipe(pipe) { + /* Clear enable bits; then clear status bits */ + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(PIPESTAT(pipe), I915_READ(PIPESTAT(pipe))); + } + I915_WRITE16(IMR, 0xffff); + I915_WRITE16(IER, 0x0); + I915_WRITE16(IIR, I915_READ16(IIR)); +} + +static void i915_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + if (I915_HAS_HOTPLUG(dev)) { + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + } + + I915_WRITE16(HWSTAM, 0xeffe); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + POSTING_READ(IER); +} + +static int i915_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 enable_mask; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + I915_WRITE(EMR, ~(I915_ERROR_PAGE_TABLE | I915_ERROR_MEMORY_REFRESH)); + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = + ~(I915_ASLE_INTERRUPT | + 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); + + 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)) { + /* Enable in IER... */ + enable_mask |= I915_DISPLAY_PORT_INTERRUPT; + /* and unmask in IMR */ + dev_priv->irq_mask &= ~I915_DISPLAY_PORT_INTERRUPT; + } + + I915_WRITE(IMR, dev_priv->irq_mask); + I915_WRITE(IER, enable_mask); + POSTING_READ(IER); + + if (I915_HAS_HOTPLUG(dev)) { + u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); + + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I915) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + /* Ignore TV since it's buggy */ + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + } + + intel_opregion_enable_asle(dev); + + return 0; +} + +static irqreturn_t i915_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, new_iir, pipe_stats[I915_MAX_PIPES]; + unsigned long irqflags; + u32 flip_mask = + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT | + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT; + u32 flip[2] = { + I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT, + I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT + }; + int pipe, ret = IRQ_NONE; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ(IIR); + do { + bool irq_received = (iir & ~flip_mask) != 0; + bool blc_event = false; + + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* Clear the PIPE*STAT regs before the IIR */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = true; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + if (!irq_received) + break; + + /* Consume port. Then clear IIR or we'll miss events */ + if ((I915_HAS_HOTPLUG(dev)) && + (iir & I915_DISPLAY_PORT_INTERRUPT)) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + POSTING_READ(PORT_HOTPLUG_STAT); + } + + I915_WRITE(IIR, iir & ~flip_mask); + new_iir = I915_READ(IIR); /* Flush posted writes */ + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + + for_each_pipe(pipe) { + int plane = pipe; + if (IS_MOBILE(dev)) + plane = !plane; + if (pipe_stats[pipe] & PIPE_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, pipe)) { + if (iir & flip[plane]) { + intel_prepare_page_flip(dev, plane); + intel_finish_page_flip(dev, pipe); + flip_mask &= ~flip[plane]; + } + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + } + + if (blc_event || (iir & I915_ASLE_INTERRUPT)) + intel_opregion_asle_intr(dev); + + /* With MSI, interrupts are only generated when iir + * transitions from zero to nonzero. If another bit got + * set while we were handling the existing iir bits, then + * we would never get another interrupt. + * + * This is fine on non-MSI as well, as if we hit this path + * we avoid exiting the interrupt handler only to generate + * another one. + * + * Note that for MSI this could cause a stray interrupt report + * if an interrupt landed in the time between writing IIR and + * the posting read. This should be rare enough to never + * trigger the 99% of 100,000 interrupts test for disabling + * stray interrupts. + */ + ret = IRQ_HANDLED; + iir = new_iir; + } while (iir & ~flip_mask); + + i915_update_dri1_breadcrumb(dev); + + return ret; +} + +static void i915_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (I915_HAS_HOTPLUG(dev)) { + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + } + + I915_WRITE16(HWSTAM, 0xffff); + for_each_pipe(pipe) { + /* Clear enable bits; then clear status bits */ + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(PIPESTAT(pipe), I915_READ(PIPESTAT(pipe))); + } + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + + I915_WRITE(IIR, I915_READ(IIR)); +} + +static void i965_irq_preinstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + atomic_set(&dev_priv->irq_received, 0); + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + + I915_WRITE(HWSTAM, 0xeffe); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + POSTING_READ(IER); +} + +static int i965_irq_postinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 hotplug_en; + u32 enable_mask; + u32 error_mask; + + /* Unmask the interrupts that we always want on. */ + dev_priv->irq_mask = ~(I915_ASLE_INTERRUPT | + I915_DISPLAY_PORT_INTERRUPT | + 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); + + enable_mask = ~dev_priv->irq_mask; + enable_mask |= I915_USER_INTERRUPT; + + if (IS_G4X(dev)) + enable_mask |= I915_BSD_USER_INTERRUPT; + + dev_priv->pipestat[0] = 0; + dev_priv->pipestat[1] = 0; + + /* + * Enable some error detection, note the instruction error mask + * bit is reserved, so we leave it masked. + */ + if (IS_G4X(dev)) { + error_mask = ~(GM45_ERROR_PAGE_TABLE | + GM45_ERROR_MEM_PRIV | + GM45_ERROR_CP_PRIV | + I915_ERROR_MEMORY_REFRESH); + } else { + error_mask = ~(I915_ERROR_PAGE_TABLE | + I915_ERROR_MEMORY_REFRESH); + } + I915_WRITE(EMR, error_mask); + + I915_WRITE(IMR, dev_priv->irq_mask); + I915_WRITE(IER, enable_mask); + POSTING_READ(IER); + + /* Note HDMI and DP share hotplug bits */ + hotplug_en = 0; + if (dev_priv->hotplug_supported_mask & HDMIB_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIB_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMIC_HOTPLUG_INT_STATUS) + hotplug_en |= HDMIC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) + hotplug_en |= HDMID_HOTPLUG_INT_EN; + if (IS_G4X(dev)) { + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_G4X) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_G4X) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + } else { + if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I965) + hotplug_en |= SDVOC_HOTPLUG_INT_EN; + if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I965) + hotplug_en |= SDVOB_HOTPLUG_INT_EN; + } + if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { + hotplug_en |= CRT_HOTPLUG_INT_EN; + + /* Programming the CRT detection parameters tends + to generate a spurious hotplug event about three + seconds later. So just do it once. + */ + if (IS_G4X(dev)) + hotplug_en |= CRT_HOTPLUG_ACTIVATION_PERIOD_64; + hotplug_en |= CRT_HOTPLUG_VOLTAGE_COMPARE_50; + } + + /* Ignore TV since it's buggy */ + + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + + intel_opregion_enable_asle(dev); + + return 0; +} + +static irqreturn_t i965_irq_handler(int irq, void *arg) +{ + struct drm_device *dev = (struct drm_device *) arg; + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + u32 iir, new_iir; + u32 pipe_stats[I915_MAX_PIPES]; + unsigned long irqflags; + int irq_received; + int ret = IRQ_NONE, pipe; + + atomic_inc(&dev_priv->irq_received); + + iir = I915_READ(IIR); + + for (;;) { + bool blc_event = false; + + irq_received = iir != 0; + + /* Can't rely on pipestat interrupt bit in iir as it might + * have been cleared after the pipestat interrupt was received. + * It doesn't set the bit in iir again, but it still produces + * interrupts (for non-MSI). + */ + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + if (iir & I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT) + i915_handle_error(dev, false); + + for_each_pipe(pipe) { + int reg = PIPESTAT(pipe); + pipe_stats[pipe] = I915_READ(reg); + + /* + * Clear the PIPE*STAT regs before the IIR + */ + if (pipe_stats[pipe] & 0x8000ffff) { + if (pipe_stats[pipe] & PIPE_FIFO_UNDERRUN_STATUS) + DRM_DEBUG_DRIVER("pipe %c underrun\n", + pipe_name(pipe)); + I915_WRITE(reg, pipe_stats[pipe]); + irq_received = 1; + } + } + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + + if (!irq_received) + break; + + ret = IRQ_HANDLED; + + /* Consume port. Then clear IIR or we'll miss events */ + if (iir & I915_DISPLAY_PORT_INTERRUPT) { + u32 hotplug_status = I915_READ(PORT_HOTPLUG_STAT); + + DRM_DEBUG_DRIVER("hotplug event received, stat 0x%08x\n", + hotplug_status); + if (hotplug_status & dev_priv->hotplug_supported_mask) + queue_work(dev_priv->wq, + &dev_priv->hotplug_work); + + I915_WRITE(PORT_HOTPLUG_STAT, hotplug_status); + I915_READ(PORT_HOTPLUG_STAT); + } + + I915_WRITE(IIR, iir); + new_iir = I915_READ(IIR); /* Flush posted writes */ + + if (iir & I915_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[RCS]); + if (iir & I915_BSD_USER_INTERRUPT) + notify_ring(dev, &dev_priv->ring[VCS]); + + if (iir & I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT) + intel_prepare_page_flip(dev, 0); + + if (iir & I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT) + intel_prepare_page_flip(dev, 1); + + for_each_pipe(pipe) { + if (pipe_stats[pipe] & PIPE_START_VBLANK_INTERRUPT_STATUS && + drm_handle_vblank(dev, pipe)) { + i915_pageflip_stall_check(dev, pipe); + intel_finish_page_flip(dev, pipe); + } + + if (pipe_stats[pipe] & PIPE_LEGACY_BLC_EVENT_STATUS) + blc_event = true; + } + + + if (blc_event || (iir & I915_ASLE_INTERRUPT)) + intel_opregion_asle_intr(dev); + + /* With MSI, interrupts are only generated when iir + * transitions from zero to nonzero. If another bit got + * set while we were handling the existing iir bits, then + * we would never get another interrupt. + * + * This is fine on non-MSI as well, as if we hit this path + * we avoid exiting the interrupt handler only to generate + * another one. + * + * Note that for MSI this could cause a stray interrupt report + * if an interrupt landed in the time between writing IIR and + * the posting read. This should be rare enough to never + * trigger the 99% of 100,000 interrupts test for disabling + * stray interrupts. + */ + iir = new_iir; + } + + i915_update_dri1_breadcrumb(dev); + + return ret; +} + +static void i965_irq_uninstall(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + int pipe; + + if (!dev_priv) + return; + + I915_WRITE(PORT_HOTPLUG_EN, 0); + I915_WRITE(PORT_HOTPLUG_STAT, I915_READ(PORT_HOTPLUG_STAT)); + + I915_WRITE(HWSTAM, 0xffffffff); + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), 0); + I915_WRITE(IMR, 0xffffffff); + I915_WRITE(IER, 0x0); + + for_each_pipe(pipe) + I915_WRITE(PIPESTAT(pipe), + I915_READ(PIPESTAT(pipe)) & 0x8000ffff); + I915_WRITE(IIR, I915_READ(IIR)); +} + +void intel_irq_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + INIT_WORK(&dev_priv->hotplug_work, i915_hotplug_work_func); + INIT_WORK(&dev_priv->error_work, i915_error_work_func); + INIT_WORK(&dev_priv->rps.work, gen6_pm_rps_work); + INIT_WORK(&dev_priv->l3_parity.error_work, ivybridge_parity_work); + + dev->driver->get_vblank_counter = i915_get_vblank_counter; + dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ + if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5) { + dev->max_vblank_count = 0xffffffff; /* full 32 bit counter */ + dev->driver->get_vblank_counter = gm45_get_vblank_counter; + } + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + dev->driver->get_vblank_timestamp = i915_get_vblank_timestamp; + else + dev->driver->get_vblank_timestamp = NULL; + dev->driver->get_scanout_position = i915_get_crtc_scanoutpos; + + if (IS_VALLEYVIEW(dev)) { + dev->driver->irq_handler = valleyview_irq_handler; + dev->driver->irq_preinstall = valleyview_irq_preinstall; + dev->driver->irq_postinstall = valleyview_irq_postinstall; + dev->driver->irq_uninstall = valleyview_irq_uninstall; + dev->driver->enable_vblank = valleyview_enable_vblank; + dev->driver->disable_vblank = valleyview_disable_vblank; + } else if (IS_IVYBRIDGE(dev)) { + /* Share pre & uninstall handlers with ILK/SNB */ + dev->driver->irq_handler = ivybridge_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ivybridge_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ivybridge_enable_vblank; + dev->driver->disable_vblank = ivybridge_disable_vblank; + } else if (IS_HASWELL(dev)) { + /* Share interrupts handling with IVB */ + dev->driver->irq_handler = ivybridge_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ivybridge_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ivybridge_enable_vblank; + dev->driver->disable_vblank = ivybridge_disable_vblank; + } else if (HAS_PCH_SPLIT(dev)) { + dev->driver->irq_handler = ironlake_irq_handler; + dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_postinstall = ironlake_irq_postinstall; + dev->driver->irq_uninstall = ironlake_irq_uninstall; + dev->driver->enable_vblank = ironlake_enable_vblank; + dev->driver->disable_vblank = ironlake_disable_vblank; + } else { + if (INTEL_INFO(dev)->gen == 2) { + dev->driver->irq_preinstall = i8xx_irq_preinstall; + dev->driver->irq_postinstall = i8xx_irq_postinstall; + dev->driver->irq_handler = i8xx_irq_handler; + dev->driver->irq_uninstall = i8xx_irq_uninstall; + } else if (INTEL_INFO(dev)->gen == 3) { + dev->driver->irq_preinstall = i915_irq_preinstall; + dev->driver->irq_postinstall = i915_irq_postinstall; + dev->driver->irq_uninstall = i915_irq_uninstall; + dev->driver->irq_handler = i915_irq_handler; + } else { + dev->driver->irq_preinstall = i965_irq_preinstall; + dev->driver->irq_postinstall = i965_irq_postinstall; + dev->driver->irq_uninstall = i965_irq_uninstall; + dev->driver->irq_handler = i965_irq_handler; + } + dev->driver->enable_vblank = i915_enable_vblank; + dev->driver->disable_vblank = i915_disable_vblank; + } +} --- linux-3.5.0.orig/ubuntu/i915/i915_sysfs.c +++ linux-3.5.0/ubuntu/i915/i915_sysfs.c @@ -0,0 +1,403 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Ben Widawsky + * + */ + +#include +#include +#include +#include +#include "intel_drv.h" +#include "i915_drv.h" + +#ifdef CONFIG_PM +static u32 calc_residency(struct drm_device *dev, const u32 reg) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u64 raw_time; /* 32b value may overflow during fixed point math */ + + if (!intel_enable_rc6(dev)) + return 0; + + raw_time = I915_READ(reg) * 128ULL; + return DIV_ROUND_UP_ULL(raw_time, 100000); +} + +static ssize_t +show_rc6_mask(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + return snprintf(buf, PAGE_SIZE, "%x", intel_enable_rc6(dminor->dev)); +} + +static ssize_t +show_rc6_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6); + return snprintf(buf, PAGE_SIZE, "%u", rc6_residency); +} + +static ssize_t +show_rc6p_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6p_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6p); + return snprintf(buf, PAGE_SIZE, "%u", rc6p_residency); +} + +static ssize_t +show_rc6pp_ms(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *dminor = container_of(kdev, struct drm_minor, kdev); + u32 rc6pp_residency = calc_residency(dminor->dev, GEN6_GT_GFX_RC6pp); + return snprintf(buf, PAGE_SIZE, "%u", rc6pp_residency); +} + +static DEVICE_ATTR(rc6_enable, S_IRUGO, show_rc6_mask, NULL); +static DEVICE_ATTR(rc6_residency_ms, S_IRUGO, show_rc6_ms, NULL); +static DEVICE_ATTR(rc6p_residency_ms, S_IRUGO, show_rc6p_ms, NULL); +static DEVICE_ATTR(rc6pp_residency_ms, S_IRUGO, show_rc6pp_ms, NULL); + +static struct attribute *rc6_attrs[] = { + &dev_attr_rc6_enable.attr, + &dev_attr_rc6_residency_ms.attr, + &dev_attr_rc6p_residency_ms.attr, + &dev_attr_rc6pp_residency_ms.attr, + NULL +}; + +static struct attribute_group rc6_attr_group = { + .name = power_group_name, + .attrs = rc6_attrs +}; +#endif + +static int l3_access_valid(struct drm_device *dev, loff_t offset) +{ + if (!IS_IVYBRIDGE(dev)) + return -EPERM; + + if (offset % 4 != 0) + return -EINVAL; + + if (offset >= GEN7_L3LOG_SIZE) + return -ENXIO; + + return 0; +} + +static ssize_t +i915_l3_read(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + uint32_t misccpctl; + int i, ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + + for (i = offset; count >= 4 && i < GEN7_L3LOG_SIZE; i += 4, count -= 4) + *((uint32_t *)(&buf[i])) = I915_READ(GEN7_L3LOG_BASE + i); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); + + mutex_unlock(&drm_dev->struct_mutex); + + return i - offset; +} + +static ssize_t +i915_l3_write(struct file *filp, struct kobject *kobj, + struct bin_attribute *attr, char *buf, + loff_t offset, size_t count) +{ + struct device *dev = container_of(kobj, struct device, kobj); + struct drm_minor *dminor = container_of(dev, struct drm_minor, kdev); + struct drm_device *drm_dev = dminor->dev; + struct drm_i915_private *dev_priv = drm_dev->dev_private; + u32 *temp = NULL; /* Just here to make handling failures easy */ + int ret; + + ret = l3_access_valid(drm_dev, offset); + if (ret) + return ret; + + ret = i915_mutex_lock_interruptible(drm_dev); + if (ret) + return ret; + + if (!dev_priv->l3_parity.remap_info) { + temp = kzalloc(GEN7_L3LOG_SIZE, GFP_KERNEL); + if (!temp) { + mutex_unlock(&drm_dev->struct_mutex); + return -ENOMEM; + } + } + + ret = i915_gpu_idle(drm_dev); + if (ret) { + kfree(temp); + mutex_unlock(&drm_dev->struct_mutex); + return ret; + } + + /* TODO: Ideally we really want a GPU reset here to make sure errors + * aren't propagated. Since I cannot find a stable way to reset the GPU + * at this point it is left as a TODO. + */ + if (temp) + dev_priv->l3_parity.remap_info = temp; + + memcpy(dev_priv->l3_parity.remap_info + (offset/4), + buf + (offset/4), + count); + + i915_gem_l3_remap(drm_dev); + + mutex_unlock(&drm_dev->struct_mutex); + + return count; +} + +static struct bin_attribute dpf_attrs = { + .attr = {.name = "l3_parity", .mode = (S_IRUSR | S_IWUSR)}, + .size = GEN7_L3LOG_SIZE, + .read = i915_l3_read, + .write = i915_l3_write, + .mmap = NULL +}; + +static ssize_t gt_cur_freq_mhz_show(struct device *kdev, + struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.cur_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_max_freq_mhz_store(struct device *kdev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap, hw_max, hw_min; + ssize_t ret; + + ret = kstrtou32(buf, 0, &val); + if (ret) + return ret; + + val /= GT_FREQUENCY_MULTIPLIER; + + mutex_lock(&dev_priv->rps.hw_lock); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + hw_max = (rp_state_cap & 0xff); + hw_min = ((rp_state_cap & 0xff0000) >> 16); + + if (val < hw_min || val > hw_max || val < dev_priv->rps.min_delay) { + mutex_unlock(&dev_priv->rps.hw_lock); + return -EINVAL; + } + + if (dev_priv->rps.cur_delay > val) + gen6_set_rps(dev_priv->dev, val); + + dev_priv->rps.max_delay = val; + + mutex_unlock(&dev_priv->rps.hw_lock); + + return count; +} + +static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev_priv->rps.hw_lock); + ret = dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER; + mutex_unlock(&dev_priv->rps.hw_lock); + + return snprintf(buf, PAGE_SIZE, "%d", ret); +} + +static ssize_t gt_min_freq_mhz_store(struct device *kdev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap, hw_max, hw_min; + ssize_t ret; + + ret = kstrtou32(buf, 0, &val); + if (ret) + return ret; + + val /= GT_FREQUENCY_MULTIPLIER; + + mutex_lock(&dev_priv->rps.hw_lock); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + hw_max = (rp_state_cap & 0xff); + hw_min = ((rp_state_cap & 0xff0000) >> 16); + + if (val < hw_min || val > hw_max || val > dev_priv->rps.max_delay) { + mutex_unlock(&dev_priv->rps.hw_lock); + return -EINVAL; + } + + if (dev_priv->rps.cur_delay < val) + gen6_set_rps(dev_priv->dev, val); + + dev_priv->rps.min_delay = val; + + mutex_unlock(&dev_priv->rps.hw_lock); + + return count; + +} + +static DEVICE_ATTR(gt_cur_freq_mhz, S_IRUGO, gt_cur_freq_mhz_show, NULL); +static DEVICE_ATTR(gt_max_freq_mhz, S_IRUGO | S_IWUSR, gt_max_freq_mhz_show, gt_max_freq_mhz_store); +static DEVICE_ATTR(gt_min_freq_mhz, S_IRUGO | S_IWUSR, gt_min_freq_mhz_show, gt_min_freq_mhz_store); + + +static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf); +static DEVICE_ATTR(gt_RP0_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); +static DEVICE_ATTR(gt_RP1_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); +static DEVICE_ATTR(gt_RPn_freq_mhz, S_IRUGO, gt_rp_mhz_show, NULL); + +/* For now we have a static number of RP states */ +static ssize_t gt_rp_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf) +{ + struct drm_minor *minor = container_of(kdev, struct drm_minor, kdev); + struct drm_device *dev = minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val, rp_state_cap; + ssize_t ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + mutex_unlock(&dev->struct_mutex); + + if (attr == &dev_attr_gt_RP0_freq_mhz) { + val = ((rp_state_cap & 0x0000ff) >> 0) * GT_FREQUENCY_MULTIPLIER; + } else if (attr == &dev_attr_gt_RP1_freq_mhz) { + val = ((rp_state_cap & 0x00ff00) >> 8) * GT_FREQUENCY_MULTIPLIER; + } else if (attr == &dev_attr_gt_RPn_freq_mhz) { + val = ((rp_state_cap & 0xff0000) >> 16) * GT_FREQUENCY_MULTIPLIER; + } else { + BUG(); + } + return snprintf(buf, PAGE_SIZE, "%d", val); +} + +static const struct attribute *gen6_attrs[] = { + &dev_attr_gt_cur_freq_mhz.attr, + &dev_attr_gt_max_freq_mhz.attr, + &dev_attr_gt_min_freq_mhz.attr, + &dev_attr_gt_RP0_freq_mhz.attr, + &dev_attr_gt_RP1_freq_mhz.attr, + &dev_attr_gt_RPn_freq_mhz.attr, + NULL, +}; + +void i915_setup_sysfs(struct drm_device *dev) +{ + int ret; + +#ifdef CONFIG_PM + if (INTEL_INFO(dev)->gen >= 6) { + ret = sysfs_merge_group(&dev->primary->kdev.kobj, + &rc6_attr_group); + if (ret) + DRM_ERROR("RC6 residency sysfs setup failed\n"); + } +#endif + if (HAS_L3_GPU_CACHE(dev)) { + ret = device_create_bin_file(&dev->primary->kdev, &dpf_attrs); + if (ret) + DRM_ERROR("l3 parity sysfs setup failed\n"); + } + + if (INTEL_INFO(dev)->gen >= 6) { + ret = sysfs_create_files(&dev->primary->kdev.kobj, gen6_attrs); + if (ret) + DRM_ERROR("gen6 sysfs setup failed\n"); + } +} + +void i915_teardown_sysfs(struct drm_device *dev) +{ + sysfs_remove_files(&dev->primary->kdev.kobj, gen6_attrs); + device_remove_bin_file(&dev->primary->kdev, &dpf_attrs); +#ifdef CONFIG_PM + sysfs_unmerge_group(&dev->primary->kdev.kobj, &rc6_attr_group); +#endif +} --- linux-3.5.0.orig/ubuntu/i915/intel_modes.c +++ linux-3.5.0/ubuntu/i915/intel_modes.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2007 Dave Airlie + * Copyright (c) 2007, 2010 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#include +#include +#include +#include +#include "drmP.h" +#include "intel_drv.h" +#include "i915_drv.h" + +/** + * intel_connector_update_modes - update connector from edid + * @connector: DRM connector device to use + * @edid: previously read EDID information + */ +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid) +{ + int ret; + + drm_mode_connector_update_edid_property(connector, edid); + ret = drm_add_edid_modes(connector, edid); + drm_edid_to_eld(connector, edid); + + return ret; +} + +/** + * intel_ddc_get_modes - get modelist from monitor + * @connector: DRM connector device to use + * @adapter: i2c adapter + * + * Fetch the EDID information from @connector using the DDC bus. + */ +int intel_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + int ret; + + edid = drm_get_edid(connector, adapter); + if (!edid) + return 0; + + ret = intel_connector_update_modes(connector, edid); + kfree(edid); + + return ret; +} + +static const struct drm_prop_enum_list force_audio_names[] = { + { HDMI_AUDIO_OFF_DVI, "force-dvi" }, + { HDMI_AUDIO_OFF, "off" }, + { HDMI_AUDIO_AUTO, "auto" }, + { HDMI_AUDIO_ON, "on" }, +}; + +void +intel_attach_force_audio_property(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_property *prop; + + prop = dev_priv->force_audio_property; + if (prop == NULL) { + prop = drm_property_create_enum(dev, 0, + "audio", + force_audio_names, + ARRAY_SIZE(force_audio_names)); + if (prop == NULL) + return; + + dev_priv->force_audio_property = prop; + } + drm_connector_attach_property(connector, prop, 0); +} + +static const struct drm_prop_enum_list broadcast_rgb_names[] = { + { 0, "Full" }, + { 1, "Limited 16:235" }, +}; + +void +intel_attach_broadcast_rgb_property(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_property *prop; + + prop = dev_priv->broadcast_rgb_property; + if (prop == NULL) { + prop = drm_property_create_enum(dev, DRM_MODE_PROP_ENUM, + "Broadcast RGB", + broadcast_rgb_names, + ARRAY_SIZE(broadcast_rgb_names)); + if (prop == NULL) + return; + + dev_priv->broadcast_rgb_property = prop; + } + + drm_connector_attach_property(connector, prop, 0); +} --- linux-3.5.0.orig/ubuntu/i915/intel_dvo.c +++ linux-3.5.0/ubuntu/i915/intel_dvo.c @@ -0,0 +1,524 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "dvo.h" + +#define SIL164_ADDR 0x38 +#define CH7xxx_ADDR 0x76 +#define TFP410_ADDR 0x38 +#define NS2501_ADDR 0x38 + +static const struct intel_dvo_device intel_dvo_devices[] = { + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "sil164", + .dvo_reg = DVOC, + .slave_addr = SIL164_ADDR, + .dev_ops = &sil164_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "ch7xxx", + .dvo_reg = DVOC, + .slave_addr = CH7xxx_ADDR, + .dev_ops = &ch7xxx_ops, + }, + { + .type = INTEL_DVO_CHIP_LVDS, + .name = "ivch", + .dvo_reg = DVOA, + .slave_addr = 0x02, /* Might also be 0x44, 0x84, 0xc4 */ + .dev_ops = &ivch_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "tfp410", + .dvo_reg = DVOC, + .slave_addr = TFP410_ADDR, + .dev_ops = &tfp410_ops, + }, + { + .type = INTEL_DVO_CHIP_LVDS, + .name = "ch7017", + .dvo_reg = DVOC, + .slave_addr = 0x75, + .gpio = GMBUS_PORT_DPB, + .dev_ops = &ch7017_ops, + }, + { + .type = INTEL_DVO_CHIP_TMDS, + .name = "ns2501", + .dvo_reg = DVOC, + .slave_addr = NS2501_ADDR, + .dev_ops = &ns2501_ops, + } +}; + +struct intel_dvo { + struct intel_encoder base; + + struct intel_dvo_device dev; + + struct drm_display_mode *panel_fixed_mode; + bool panel_wants_dither; +}; + +static struct intel_dvo *enc_to_intel_dvo(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_dvo, base.base); +} + +static struct intel_dvo *intel_attached_dvo(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_dvo, base); +} + +static bool intel_dvo_connector_get_hw_state(struct intel_connector *connector) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(&connector->base); + + return intel_dvo->dev.dev_ops->get_hw_state(&intel_dvo->dev); +} + +static bool intel_dvo_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 tmp; + + tmp = I915_READ(intel_dvo->dev.dvo_reg); + + if (!(tmp & DVO_ENABLE)) + return false; + + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_disable_dvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 dvo_reg = intel_dvo->dev.dvo_reg; + u32 temp = I915_READ(dvo_reg); + + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false); + I915_WRITE(dvo_reg, temp & ~DVO_ENABLE); + I915_READ(dvo_reg); +} + +static void intel_enable_dvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_dvo *intel_dvo = enc_to_intel_dvo(&encoder->base); + u32 dvo_reg = intel_dvo->dev.dvo_reg; + u32 temp = I915_READ(dvo_reg); + + I915_WRITE(dvo_reg, temp | DVO_ENABLE); + I915_READ(dvo_reg); + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true); +} + +static void intel_dvo_dpms(struct drm_connector *connector, int mode) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + struct drm_crtc *crtc; + + /* dvo supports only 2 dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = intel_dvo->base.base.crtc; + if (!crtc) { + intel_dvo->base.connectors_active = false; + return; + } + + if (mode == DRM_MODE_DPMS_ON) { + intel_dvo->base.connectors_active = true; + + intel_crtc_update_dpms(crtc); + + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, true); + } else { + intel_dvo->dev.dev_ops->dpms(&intel_dvo->dev, false); + + intel_dvo->base.connectors_active = false; + + intel_crtc_update_dpms(crtc); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_dvo_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + /* XXX: Validate clock range */ + + if (intel_dvo->panel_fixed_mode) { + if (mode->hdisplay > intel_dvo->panel_fixed_mode->hdisplay) + return MODE_PANEL; + if (mode->vdisplay > intel_dvo->panel_fixed_mode->vdisplay) + return MODE_PANEL; + } + + return intel_dvo->dev.dev_ops->mode_valid(&intel_dvo->dev, mode); +} + +static bool intel_dvo_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + + /* If we have timings from the BIOS for the panel, put them in + * to the adjusted mode. The CRTC will be set up for this mode, + * with the panel scaling set up to source from the H/VDisplay + * of the original mode. + */ + if (intel_dvo->panel_fixed_mode != NULL) { +#define C(x) adjusted_mode->x = intel_dvo->panel_fixed_mode->x + C(hdisplay); + C(hsync_start); + C(hsync_end); + C(htotal); + C(vdisplay); + C(vsync_start); + C(vsync_end); + C(vtotal); + C(clock); +#undef C + } + + if (intel_dvo->dev.dev_ops->mode_fixup) + return intel_dvo->dev.dev_ops->mode_fixup(&intel_dvo->dev, mode, adjusted_mode); + + return true; +} + +static void intel_dvo_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + int pipe = intel_crtc->pipe; + u32 dvo_val; + u32 dvo_reg = intel_dvo->dev.dvo_reg, dvo_srcdim_reg; + int dpll_reg = DPLL(pipe); + + switch (dvo_reg) { + case DVOA: + default: + dvo_srcdim_reg = DVOA_SRCDIM; + break; + case DVOB: + dvo_srcdim_reg = DVOB_SRCDIM; + break; + case DVOC: + dvo_srcdim_reg = DVOC_SRCDIM; + break; + } + + intel_dvo->dev.dev_ops->mode_set(&intel_dvo->dev, mode, adjusted_mode); + + /* Save the data order, since I don't know what it should be set to. */ + dvo_val = I915_READ(dvo_reg) & + (DVO_PRESERVE_MASK | DVO_DATA_ORDER_GBRG); + dvo_val |= DVO_DATA_ORDER_FP | DVO_BORDER_ENABLE | + DVO_BLANK_ACTIVE_HIGH; + + if (pipe == 1) + dvo_val |= DVO_PIPE_B_SELECT; + dvo_val |= DVO_PIPE_STALL; + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + dvo_val |= DVO_HSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + dvo_val |= DVO_VSYNC_ACTIVE_HIGH; + + I915_WRITE(dpll_reg, I915_READ(dpll_reg) | DPLL_DVO_HIGH_SPEED); + + /*I915_WRITE(DVOB_SRCDIM, + (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + (adjusted_mode->VDisplay << DVO_SRCDIM_VERTICAL_SHIFT));*/ + I915_WRITE(dvo_srcdim_reg, + (adjusted_mode->hdisplay << DVO_SRCDIM_HORIZONTAL_SHIFT) | + (adjusted_mode->vdisplay << DVO_SRCDIM_VERTICAL_SHIFT)); + /*I915_WRITE(DVOB, dvo_val);*/ + I915_WRITE(dvo_reg, dvo_val); +} + +/** + * Detect the output connection on our DVO device. + * + * Unimplemented. + */ +static enum drm_connector_status +intel_dvo_detect(struct drm_connector *connector, bool force) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + return intel_dvo->dev.dev_ops->detect(&intel_dvo->dev); +} + +static int intel_dvo_get_modes(struct drm_connector *connector) +{ + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + /* We should probably have an i2c driver get_modes function for those + * devices which will have a fixed set of modes determined by the chip + * (TV-out, for example), but for now with just TMDS and LVDS, + * that's not the case. + */ + intel_ddc_get_modes(connector, + intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPC)); + if (!list_empty(&connector->probed_modes)) + return 1; + + if (intel_dvo->panel_fixed_mode != NULL) { + struct drm_display_mode *mode; + mode = drm_mode_duplicate(connector->dev, intel_dvo->panel_fixed_mode); + if (mode) { + drm_mode_probed_add(connector, mode); + return 1; + } + } + + return 0; +} + +static void intel_dvo_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static const struct drm_encoder_helper_funcs intel_dvo_helper_funcs = { + .mode_fixup = intel_dvo_mode_fixup, + .mode_set = intel_dvo_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_dvo_connector_funcs = { + .dpms = intel_dvo_dpms, + .detect = intel_dvo_detect, + .destroy = intel_dvo_destroy, + .fill_modes = drm_helper_probe_single_connector_modes, +}; + +static const struct drm_connector_helper_funcs intel_dvo_connector_helper_funcs = { + .mode_valid = intel_dvo_mode_valid, + .get_modes = intel_dvo_get_modes, + .best_encoder = intel_best_encoder, +}; + +static void intel_dvo_enc_destroy(struct drm_encoder *encoder) +{ + struct intel_dvo *intel_dvo = enc_to_intel_dvo(encoder); + + if (intel_dvo->dev.dev_ops->destroy) + intel_dvo->dev.dev_ops->destroy(&intel_dvo->dev); + + kfree(intel_dvo->panel_fixed_mode); + + intel_encoder_destroy(encoder); +} + +static const struct drm_encoder_funcs intel_dvo_enc_funcs = { + .destroy = intel_dvo_enc_destroy, +}; + +/** + * Attempts to get a fixed panel timing for LVDS (currently only the i830). + * + * Other chips with DVO LVDS will need to extend this to deal with the LVDS + * chip being on DVOB/C and having multiple pipes. + */ +static struct drm_display_mode * +intel_dvo_get_current_mode(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dvo *intel_dvo = intel_attached_dvo(connector); + uint32_t dvo_val = I915_READ(intel_dvo->dev.dvo_reg); + struct drm_display_mode *mode = NULL; + + /* If the DVO port is active, that'll be the LVDS, so we can pull out + * its timings to get how the BIOS set up the panel. + */ + if (dvo_val & DVO_ENABLE) { + struct drm_crtc *crtc; + int pipe = (dvo_val & DVO_PIPE_B_SELECT) ? 1 : 0; + + crtc = intel_get_crtc_for_pipe(dev, pipe); + if (crtc) { + mode = intel_crtc_mode_get(dev, crtc); + if (mode) { + mode->type |= DRM_MODE_TYPE_PREFERRED; + if (dvo_val & DVO_HSYNC_ACTIVE_HIGH) + mode->flags |= DRM_MODE_FLAG_PHSYNC; + if (dvo_val & DVO_VSYNC_ACTIVE_HIGH) + mode->flags |= DRM_MODE_FLAG_PVSYNC; + } + } + } + + return mode; +} + +void intel_dvo_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + struct intel_dvo *intel_dvo; + struct intel_connector *intel_connector; + int i; + int encoder_type = DRM_MODE_ENCODER_NONE; + + intel_dvo = kzalloc(sizeof(struct intel_dvo), GFP_KERNEL); + if (!intel_dvo) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dvo); + return; + } + + intel_encoder = &intel_dvo->base; + drm_encoder_init(dev, &intel_encoder->base, + &intel_dvo_enc_funcs, encoder_type); + + intel_encoder->disable = intel_disable_dvo; + intel_encoder->enable = intel_enable_dvo; + intel_encoder->get_hw_state = intel_dvo_get_hw_state; + intel_connector->get_hw_state = intel_dvo_connector_get_hw_state; + + /* Now, try to find a controller */ + for (i = 0; i < ARRAY_SIZE(intel_dvo_devices); i++) { + struct drm_connector *connector = &intel_connector->base; + const struct intel_dvo_device *dvo = &intel_dvo_devices[i]; + struct i2c_adapter *i2c; + int gpio; + + /* Allow the I2C driver info to specify the GPIO to be used in + * special cases, but otherwise default to what's defined + * in the spec. + */ + if (intel_gmbus_is_port_valid(dvo->gpio)) + gpio = dvo->gpio; + else if (dvo->type == INTEL_DVO_CHIP_LVDS) + gpio = GMBUS_PORT_SSC; + else + gpio = GMBUS_PORT_DPB; + + /* Set up the I2C bus necessary for the chip we're probing. + * It appears that everything is on GPIOE except for panels + * on i830 laptops, which are on GPIOB (DVOA). + */ + i2c = intel_gmbus_get_adapter(dev_priv, gpio); + + intel_dvo->dev = *dvo; + if (!dvo->dev_ops->init(&intel_dvo->dev, i2c)) + continue; + + intel_encoder->type = INTEL_OUTPUT_DVO; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + switch (dvo->type) { + case INTEL_DVO_CHIP_TMDS: + intel_encoder->cloneable = true; + drm_connector_init(dev, connector, + &intel_dvo_connector_funcs, + DRM_MODE_CONNECTOR_DVII); + encoder_type = DRM_MODE_ENCODER_TMDS; + break; + case INTEL_DVO_CHIP_LVDS: + intel_encoder->cloneable = false; + drm_connector_init(dev, connector, + &intel_dvo_connector_funcs, + DRM_MODE_CONNECTOR_LVDS); + encoder_type = DRM_MODE_ENCODER_LVDS; + break; + } + + drm_connector_helper_add(connector, + &intel_dvo_connector_helper_funcs); + connector->display_info.subpixel_order = SubPixelHorizontalRGB; + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + drm_encoder_helper_add(&intel_encoder->base, + &intel_dvo_helper_funcs); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + if (dvo->type == INTEL_DVO_CHIP_LVDS) { + /* For our LVDS chipsets, we should hopefully be able + * to dig the fixed panel mode out of the BIOS data. + * However, it's in a different format from the BIOS + * data on chipsets with integrated LVDS (stored in AIM + * headers, likely), so for now, just get the current + * mode being output through DVO. + */ + intel_dvo->panel_fixed_mode = + intel_dvo_get_current_mode(connector); + intel_dvo->panel_wants_dither = true; + } + + drm_sysfs_connector_add(connector); + return; + } + + drm_encoder_cleanup(&intel_encoder->base); + kfree(intel_dvo); + kfree(intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/intel_drv.h +++ linux-3.5.0/ubuntu/i915/intel_drv.h @@ -0,0 +1,672 @@ +/* + * Copyright (c) 2006 Dave Airlie + * Copyright (c) 2007-2008 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef __INTEL_DRV_H__ +#define __INTEL_DRV_H__ + +#include +#include "i915_drm.h" +#include "i915_drv.h" +#include "drm_crtc.h" +#include "drm_crtc_helper.h" +#include "drm_fb_helper.h" +#include "drm_dp_helper.h" + +#define _wait_for(COND, MS, W) ({ \ + unsigned long timeout__ = jiffies + msecs_to_jiffies(MS); \ + int ret__ = 0; \ + while (!(COND)) { \ + if (time_after(jiffies, timeout__)) { \ + ret__ = -ETIMEDOUT; \ + break; \ + } \ + if (W && drm_can_sleep()) { \ + msleep(W); \ + } else { \ + cpu_relax(); \ + } \ + } \ + ret__; \ +}) + +#define wait_for_atomic_us(COND, US) ({ \ + unsigned long timeout__ = jiffies + usecs_to_jiffies(US); \ + int ret__ = 0; \ + while (!(COND)) { \ + if (time_after(jiffies, timeout__)) { \ + ret__ = -ETIMEDOUT; \ + break; \ + } \ + cpu_relax(); \ + } \ + ret__; \ +}) + +#define wait_for(COND, MS) _wait_for(COND, MS, 1) +#define wait_for_atomic(COND, MS) _wait_for(COND, MS, 0) + +#define KHz(x) (1000*x) +#define MHz(x) KHz(1000*x) + +/* + * Display related stuff + */ + +/* store information about an Ixxx DVO */ +/* The i830->i865 use multiple DVOs with multiple i2cs */ +/* the i915, i945 have a single sDVO i2c bus - which is different */ +#define MAX_OUTPUTS 6 +/* maximum connectors per crtcs in the mode set */ +#define INTELFB_CONN_LIMIT 4 + +#define INTEL_I2C_BUS_DVO 1 +#define INTEL_I2C_BUS_SDVO 2 + +/* these are outputs from the chip - integrated only + external chips are via DVO or SDVO output */ +#define INTEL_OUTPUT_UNUSED 0 +#define INTEL_OUTPUT_ANALOG 1 +#define INTEL_OUTPUT_DVO 2 +#define INTEL_OUTPUT_SDVO 3 +#define INTEL_OUTPUT_LVDS 4 +#define INTEL_OUTPUT_TVOUT 5 +#define INTEL_OUTPUT_HDMI 6 +#define INTEL_OUTPUT_DISPLAYPORT 7 +#define INTEL_OUTPUT_EDP 8 +#define INTEL_OUTPUT_UNKNOWN 9 + +#define INTEL_DVO_CHIP_NONE 0 +#define INTEL_DVO_CHIP_LVDS 1 +#define INTEL_DVO_CHIP_TMDS 2 +#define INTEL_DVO_CHIP_TVOUT 4 + +/* drm_display_mode->private_flags */ +#define INTEL_MODE_PIXEL_MULTIPLIER_SHIFT (0x0) +#define INTEL_MODE_PIXEL_MULTIPLIER_MASK (0xf << INTEL_MODE_PIXEL_MULTIPLIER_SHIFT) +#define INTEL_MODE_DP_FORCE_6BPC (0x10) +/* This flag must be set by the encoder's mode_fixup if it changes the crtc + * timings in the mode to prevent the crtc fixup from overwriting them. + * Currently only lvds needs that. */ +#define INTEL_MODE_CRTC_TIMINGS_SET (0x20) + +static inline void +intel_mode_set_pixel_multiplier(struct drm_display_mode *mode, + int multiplier) +{ + mode->clock *= multiplier; + mode->private_flags |= multiplier; +} + +static inline int +intel_mode_get_pixel_multiplier(const struct drm_display_mode *mode) +{ + return (mode->private_flags & INTEL_MODE_PIXEL_MULTIPLIER_MASK) >> INTEL_MODE_PIXEL_MULTIPLIER_SHIFT; +} + +struct intel_framebuffer { + struct drm_framebuffer base; + struct drm_i915_gem_object *obj; +}; + +struct intel_fbdev { + struct drm_fb_helper helper; + struct intel_framebuffer ifb; + struct list_head fbdev_list; + struct drm_display_mode *our_mode; +}; + +struct intel_encoder { + struct drm_encoder base; + /* + * The new crtc this encoder will be driven from. Only differs from + * base->crtc while a modeset is in progress. + */ + struct intel_crtc *new_crtc; + + int type; + bool needs_tv_clock; + /* + * Intel hw has only one MUX where encoders could be clone, hence a + * simple flag is enough to compute the possible_clones mask. + */ + bool cloneable; + bool connectors_active; + void (*hot_plug)(struct intel_encoder *); + void (*pre_enable)(struct intel_encoder *); + void (*enable)(struct intel_encoder *); + void (*disable)(struct intel_encoder *); + void (*post_disable)(struct intel_encoder *); + /* Read out the current hw state of this connector, returning true if + * the encoder is active. If the encoder is enabled it also set the pipe + * it is connected to in the pipe parameter. */ + bool (*get_hw_state)(struct intel_encoder *, enum pipe *pipe); + int crtc_mask; +}; + +struct intel_panel { + struct drm_display_mode *fixed_mode; + int fitting_mode; +}; + +struct intel_connector { + struct drm_connector base; + /* + * The fixed encoder this connector is connected to. + */ + struct intel_encoder *encoder; + + /* + * The new encoder this connector will be driven. Only differs from + * encoder while a modeset is in progress. + */ + struct intel_encoder *new_encoder; + + /* Reads out the current hw, returning true if the connector is enabled + * and active (i.e. dpms ON state). */ + bool (*get_hw_state)(struct intel_connector *); + + /* Panel info for eDP and LVDS */ + struct intel_panel panel; + + /* Cached EDID for eDP and LVDS. May hold ERR_PTR for invalid EDID. */ + struct edid *edid; +}; + +struct intel_crtc { + struct drm_crtc base; + enum pipe pipe; + enum plane plane; + enum transcoder cpu_transcoder; + u8 lut_r[256], lut_g[256], lut_b[256]; + /* + * Whether the crtc and the connected output pipeline is active. Implies + * that crtc->enabled is set, i.e. the current mode configuration has + * some outputs connected to this crtc. + */ + bool active; + bool primary_disabled; /* is the crtc obscured by a plane? */ + bool lowfreq_avail; + struct intel_overlay *overlay; + struct intel_unpin_work *unpin_work; + int fdi_lanes; + + atomic_t unpin_work_count; + + /* Display surface base address adjustement for pageflips. Note that on + * gen4+ this only adjusts up to a tile, offsets within a tile are + * handled in the hw itself (with the TILEOFF register). */ + unsigned long dspaddr_offset; + + struct drm_i915_gem_object *cursor_bo; + uint32_t cursor_addr; + int16_t cursor_x, cursor_y; + int16_t cursor_width, cursor_height; + bool cursor_visible; + unsigned int bpp; + + /* We can share PLLs across outputs if the timings match */ + struct intel_pch_pll *pch_pll; + uint32_t ddi_pll_sel; +}; + +struct intel_plane { + struct drm_plane base; + enum pipe pipe; + struct drm_i915_gem_object *obj; + bool can_scale; + int max_downscale; + u32 lut_r[1024], lut_g[1024], lut_b[1024]; + void (*update_plane)(struct drm_plane *plane, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, + int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h); + void (*disable_plane)(struct drm_plane *plane); + int (*update_colorkey)(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key); + void (*get_colorkey)(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key); +}; + +struct intel_watermark_params { + unsigned long fifo_size; + unsigned long max_wm; + unsigned long default_wm; + unsigned long guard_size; + unsigned long cacheline_size; +}; + +struct cxsr_latency { + int is_desktop; + int is_ddr3; + unsigned long fsb_freq; + unsigned long mem_freq; + unsigned long display_sr; + unsigned long display_hpll_disable; + unsigned long cursor_sr; + unsigned long cursor_hpll_disable; +}; + +#define to_intel_crtc(x) container_of(x, struct intel_crtc, base) +#define to_intel_connector(x) container_of(x, struct intel_connector, base) +#define to_intel_encoder(x) container_of(x, struct intel_encoder, base) +#define to_intel_framebuffer(x) container_of(x, struct intel_framebuffer, base) +#define to_intel_plane(x) container_of(x, struct intel_plane, base) + +#define DIP_HEADER_SIZE 5 + +#define DIP_TYPE_AVI 0x82 +#define DIP_VERSION_AVI 0x2 +#define DIP_LEN_AVI 13 +#define DIP_AVI_PR_1 0 +#define DIP_AVI_PR_2 1 + +#define DIP_TYPE_SPD 0x83 +#define DIP_VERSION_SPD 0x1 +#define DIP_LEN_SPD 25 +#define DIP_SPD_UNKNOWN 0 +#define DIP_SPD_DSTB 0x1 +#define DIP_SPD_DVDP 0x2 +#define DIP_SPD_DVHS 0x3 +#define DIP_SPD_HDDVR 0x4 +#define DIP_SPD_DVC 0x5 +#define DIP_SPD_DSC 0x6 +#define DIP_SPD_VCD 0x7 +#define DIP_SPD_GAME 0x8 +#define DIP_SPD_PC 0x9 +#define DIP_SPD_BD 0xa +#define DIP_SPD_SCD 0xb + +struct dip_infoframe { + uint8_t type; /* HB0 */ + uint8_t ver; /* HB1 */ + uint8_t len; /* HB2 - body len, not including checksum */ + uint8_t ecc; /* Header ECC */ + uint8_t checksum; /* PB0 */ + union { + struct { + /* PB1 - Y 6:5, A 4:4, B 3:2, S 1:0 */ + uint8_t Y_A_B_S; + /* PB2 - C 7:6, M 5:4, R 3:0 */ + uint8_t C_M_R; + /* PB3 - ITC 7:7, EC 6:4, Q 3:2, SC 1:0 */ + uint8_t ITC_EC_Q_SC; + /* PB4 - VIC 6:0 */ + uint8_t VIC; + /* PB5 - YQ 7:6, CN 5:4, PR 3:0 */ + uint8_t YQ_CN_PR; + /* PB6 to PB13 */ + uint16_t top_bar_end; + uint16_t bottom_bar_start; + uint16_t left_bar_end; + uint16_t right_bar_start; + } __attribute__ ((packed)) avi; + struct { + uint8_t vn[8]; + uint8_t pd[16]; + uint8_t sdi; + } __attribute__ ((packed)) spd; + uint8_t payload[27]; + } __attribute__ ((packed)) body; +} __attribute__((packed)); + +struct intel_hdmi { + u32 sdvox_reg; + int ddc_bus; + uint32_t color_range; + bool has_hdmi_sink; + bool has_audio; + enum hdmi_force_audio force_audio; + void (*write_infoframe)(struct drm_encoder *encoder, + struct dip_infoframe *frame); + void (*set_infoframes)(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode); +}; + +#define DP_MAX_DOWNSTREAM_PORTS 0x10 +#define DP_LINK_CONFIGURATION_SIZE 9 + +struct intel_dp { + uint32_t output_reg; + uint32_t DP; + uint8_t link_configuration[DP_LINK_CONFIGURATION_SIZE]; + bool has_audio; + enum hdmi_force_audio force_audio; + uint32_t color_range; + uint8_t link_bw; + uint8_t lane_count; + uint8_t dpcd[DP_RECEIVER_CAP_SIZE]; + uint8_t downstream_ports[DP_MAX_DOWNSTREAM_PORTS]; + struct i2c_adapter adapter; + struct i2c_algo_dp_aux_data algo; + bool is_pch_edp; + uint8_t train_set[4]; + int panel_power_up_delay; + int panel_power_down_delay; + int panel_power_cycle_delay; + int backlight_on_delay; + int backlight_off_delay; + struct delayed_work panel_vdd_work; + bool want_panel_vdd; + struct intel_connector *attached_connector; +}; + +struct intel_digital_port { + struct intel_encoder base; + enum port port; + struct intel_dp dp; + struct intel_hdmi hdmi; +}; + +static inline struct drm_crtc * +intel_get_crtc_for_pipe(struct drm_device *dev, int pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->pipe_to_crtc_mapping[pipe]; +} + +static inline struct drm_crtc * +intel_get_crtc_for_plane(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->plane_to_crtc_mapping[plane]; +} + +struct intel_unpin_work { + struct work_struct work; + struct drm_crtc *crtc; + struct drm_i915_gem_object *old_fb_obj; + struct drm_i915_gem_object *pending_flip_obj; + struct drm_pending_vblank_event *event; + int pending; + bool enable_stall_check; +}; + +struct intel_fbc_work { + struct delayed_work work; + struct drm_crtc *crtc; + struct drm_framebuffer *fb; + int interval; +}; + +int intel_pch_rawclk(struct drm_device *dev); + +int intel_connector_update_modes(struct drm_connector *connector, + struct edid *edid); +int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter); + +extern void intel_attach_force_audio_property(struct drm_connector *connector); +extern void intel_attach_broadcast_rgb_property(struct drm_connector *connector); + +extern void intel_crt_init(struct drm_device *dev); +extern void intel_hdmi_init(struct drm_device *dev, + int sdvox_reg, enum port port); +extern void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector); +extern struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder); +extern bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern void intel_dip_infoframe_csum(struct dip_infoframe *avi_if); +extern bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, + bool is_sdvob); +extern void intel_dvo_init(struct drm_device *dev); +extern void intel_tv_init(struct drm_device *dev); +extern void intel_mark_busy(struct drm_device *dev); +extern void intel_mark_idle(struct drm_device *dev); +extern void intel_mark_fb_busy(struct drm_i915_gem_object *obj); +extern void intel_mark_fb_idle(struct drm_i915_gem_object *obj); +extern bool intel_lvds_init(struct drm_device *dev); +extern void intel_dp_init(struct drm_device *dev, int output_reg, + enum port port); +extern void intel_dp_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector); +void +intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern void intel_dp_init_link_config(struct intel_dp *intel_dp); +extern void intel_dp_start_link_train(struct intel_dp *intel_dp); +extern void intel_dp_complete_link_train(struct intel_dp *intel_dp); +extern void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); +extern void intel_dp_encoder_destroy(struct drm_encoder *encoder); +extern void intel_dp_check_link_status(struct intel_dp *intel_dp); +extern bool intel_dp_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern bool intel_dpd_is_edp(struct drm_device *dev); +extern void ironlake_edp_backlight_on(struct intel_dp *intel_dp); +extern void ironlake_edp_backlight_off(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_on(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_off(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp); +extern void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync); +extern void intel_edp_link_config(struct intel_encoder *, int *, int *); +extern int intel_edp_target_clock(struct intel_encoder *, + struct drm_display_mode *mode); +extern bool intel_encoder_is_pch_edp(struct drm_encoder *encoder); +extern int intel_plane_init(struct drm_device *dev, enum pipe pipe); +extern void intel_flush_display_plane(struct drm_i915_private *dev_priv, + enum plane plane); + +/* intel_panel.c */ +extern int intel_panel_init(struct intel_panel *panel, + struct drm_display_mode *fixed_mode); +extern void intel_panel_fini(struct intel_panel *panel); + +extern void intel_fixed_panel_mode(struct drm_display_mode *fixed_mode, + struct drm_display_mode *adjusted_mode); +extern void intel_pch_panel_fitting(struct drm_device *dev, + int fitting_mode, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); +extern u32 intel_panel_get_max_backlight(struct drm_device *dev); +extern void intel_panel_set_backlight(struct drm_device *dev, u32 level); +extern int intel_panel_setup_backlight(struct drm_connector *connector); +extern void intel_panel_enable_backlight(struct drm_device *dev, + enum pipe pipe); +extern void intel_panel_disable_backlight(struct drm_device *dev); +extern void intel_panel_destroy_backlight(struct drm_device *dev); +extern enum drm_connector_status intel_panel_detect(struct drm_device *dev); + +struct intel_set_config { + struct drm_encoder **save_connector_encoders; + struct drm_crtc **save_encoder_crtcs; + + bool fb_changed; + bool mode_changed; +}; + +extern bool intel_set_mode(struct drm_crtc *crtc, struct drm_display_mode *mode, + int x, int y, struct drm_framebuffer *old_fb); +extern void intel_modeset_disable(struct drm_device *dev); +extern void intel_crtc_load_lut(struct drm_crtc *crtc); +extern void intel_crtc_update_dpms(struct drm_crtc *crtc); +extern void intel_encoder_noop(struct drm_encoder *encoder); +extern void intel_encoder_destroy(struct drm_encoder *encoder); +extern void intel_encoder_dpms(struct intel_encoder *encoder, int mode); +extern bool intel_encoder_check_is_cloned(struct intel_encoder *encoder); +extern void intel_connector_dpms(struct drm_connector *, int mode); +extern bool intel_connector_get_hw_state(struct intel_connector *connector); +extern void intel_modeset_check_state(struct drm_device *dev); + + +static inline struct intel_encoder *intel_attached_encoder(struct drm_connector *connector) +{ + return to_intel_connector(connector)->encoder; +} + +static inline struct intel_dp *enc_to_intel_dp(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = + container_of(encoder, struct intel_digital_port, base.base); + return &intel_dig_port->dp; +} + +static inline struct intel_digital_port * +enc_to_dig_port(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_digital_port, base.base); +} + +static inline struct intel_digital_port * +dp_to_dig_port(struct intel_dp *intel_dp) +{ + return container_of(intel_dp, struct intel_digital_port, dp); +} + +static inline struct intel_digital_port * +hdmi_to_dig_port(struct intel_hdmi *intel_hdmi) +{ + return container_of(intel_hdmi, struct intel_digital_port, hdmi); +} + +extern void intel_connector_attach_encoder(struct intel_connector *connector, + struct intel_encoder *encoder); +extern struct drm_encoder *intel_best_encoder(struct drm_connector *connector); + +extern struct drm_display_mode *intel_crtc_mode_get(struct drm_device *dev, + struct drm_crtc *crtc); +int intel_get_pipe_from_crtc_id(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern enum transcoder +intel_pipe_to_cpu_transcoder(struct drm_i915_private *dev_priv, + enum pipe pipe); +extern void intel_wait_for_vblank(struct drm_device *dev, int pipe); +extern void intel_wait_for_pipe_off(struct drm_device *dev, int pipe); +extern int ironlake_get_lanes_required(int target_clock, int link_bw, int bpp); + +struct intel_load_detect_pipe { + struct drm_framebuffer *release_fb; + bool load_detect_temp; + int dpms_mode; +}; +extern bool intel_get_load_detect_pipe(struct drm_connector *connector, + struct drm_display_mode *mode, + struct intel_load_detect_pipe *old); +extern void intel_release_load_detect_pipe(struct drm_connector *connector, + struct intel_load_detect_pipe *old); + +extern void intelfb_restore(void); +extern void intel_crtc_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green, + u16 blue, int regno); +extern void intel_crtc_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green, + u16 *blue, int regno); +extern void intel_enable_clock_gating(struct drm_device *dev); + +extern int intel_pin_and_fence_fb_obj(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct intel_ring_buffer *pipelined); +extern void intel_unpin_fb_obj(struct drm_i915_gem_object *obj); + +extern int intel_framebuffer_init(struct drm_device *dev, + struct intel_framebuffer *ifb, + struct drm_mode_fb_cmd2 *mode_cmd, + struct drm_i915_gem_object *obj); +extern int intel_fbdev_init(struct drm_device *dev); +extern void intel_fbdev_fini(struct drm_device *dev); +extern void intel_fbdev_set_suspend(struct drm_device *dev, int state); +extern void intel_prepare_page_flip(struct drm_device *dev, int plane); +extern void intel_finish_page_flip(struct drm_device *dev, int pipe); +extern void intel_finish_page_flip_plane(struct drm_device *dev, int plane); + +extern void intel_setup_overlay(struct drm_device *dev); +extern void intel_cleanup_overlay(struct drm_device *dev); +extern int intel_overlay_switch_off(struct intel_overlay *overlay); +extern int intel_overlay_put_image(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int intel_overlay_attrs(struct drm_device *dev, void *data, + struct drm_file *file_priv); + +extern void intel_fb_output_poll_changed(struct drm_device *dev); +extern void intel_fb_restore_mode(struct drm_device *dev); + +extern void assert_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, + bool state); +#define assert_pipe_enabled(d, p) assert_pipe(d, p, true) +#define assert_pipe_disabled(d, p) assert_pipe(d, p, false) + +extern void intel_init_clock_gating(struct drm_device *dev); +extern void intel_write_eld(struct drm_encoder *encoder, + struct drm_display_mode *mode); +extern void intel_cpt_verify_modeset(struct drm_device *dev, int pipe); +extern void intel_prepare_ddi(struct drm_device *dev); +extern void hsw_fdi_link_train(struct drm_crtc *crtc); +extern void intel_ddi_init(struct drm_device *dev, enum port port); + +/* For use by IVB LP watermark workaround in intel_sprite.c */ +extern void intel_update_watermarks(struct drm_device *dev); +extern void intel_update_sprite_watermarks(struct drm_device *dev, int pipe, + uint32_t sprite_width, + int pixel_size); +extern void intel_update_linetime_watermarks(struct drm_device *dev, int pipe, + struct drm_display_mode *mode); + +extern unsigned long intel_gen4_compute_offset_xtiled(int *x, int *y, + unsigned int bpp, + unsigned int pitch); + +extern int intel_sprite_set_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv); +extern int intel_sprite_get_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv); + +extern u32 intel_dpio_read(struct drm_i915_private *dev_priv, int reg); + +/* Power-related functions, located in intel_pm.c */ +extern void intel_init_pm(struct drm_device *dev); +/* FBC */ +extern bool intel_fbc_enabled(struct drm_device *dev); +extern void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval); +extern void intel_update_fbc(struct drm_device *dev); +/* IPS */ +extern void intel_gpu_ips_init(struct drm_i915_private *dev_priv); +extern void intel_gpu_ips_teardown(void); + +extern void intel_init_power_wells(struct drm_device *dev); +extern void intel_enable_gt_powersave(struct drm_device *dev); +extern void intel_disable_gt_powersave(struct drm_device *dev); +extern void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv); +extern void ironlake_teardown_rc6(struct drm_device *dev); + +extern bool intel_ddi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe); +extern int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv); +extern void intel_ddi_pll_init(struct drm_device *dev); +extern void intel_ddi_enable_pipe_func(struct drm_crtc *crtc); +extern void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder); +extern void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc); +extern void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc); +extern void intel_ddi_setup_hw_pll_state(struct drm_device *dev); +extern bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock); +extern void intel_ddi_put_crtc_pll(struct drm_crtc *crtc); +extern void intel_ddi_set_pipe_settings(struct drm_crtc *crtc); +extern void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder); +extern bool +intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector); +extern void intel_ddi_fdi_disable(struct drm_crtc *crtc); + +#endif /* __INTEL_DRV_H__ */ --- linux-3.5.0.orig/ubuntu/i915/intel_sdvo_regs.h +++ linux-3.5.0/ubuntu/i915/intel_sdvo_regs.h @@ -0,0 +1,730 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +/** + * @file SDVO command definitions and structures. + */ + +#define SDVO_OUTPUT_FIRST (0) +#define SDVO_OUTPUT_TMDS0 (1 << 0) +#define SDVO_OUTPUT_RGB0 (1 << 1) +#define SDVO_OUTPUT_CVBS0 (1 << 2) +#define SDVO_OUTPUT_SVID0 (1 << 3) +#define SDVO_OUTPUT_YPRPB0 (1 << 4) +#define SDVO_OUTPUT_SCART0 (1 << 5) +#define SDVO_OUTPUT_LVDS0 (1 << 6) +#define SDVO_OUTPUT_TMDS1 (1 << 8) +#define SDVO_OUTPUT_RGB1 (1 << 9) +#define SDVO_OUTPUT_CVBS1 (1 << 10) +#define SDVO_OUTPUT_SVID1 (1 << 11) +#define SDVO_OUTPUT_YPRPB1 (1 << 12) +#define SDVO_OUTPUT_SCART1 (1 << 13) +#define SDVO_OUTPUT_LVDS1 (1 << 14) +#define SDVO_OUTPUT_LAST (14) + +struct intel_sdvo_caps { + u8 vendor_id; + u8 device_id; + u8 device_rev_id; + u8 sdvo_version_major; + u8 sdvo_version_minor; + unsigned int sdvo_inputs_mask:2; + unsigned int smooth_scaling:1; + unsigned int sharp_scaling:1; + unsigned int up_scaling:1; + unsigned int down_scaling:1; + unsigned int stall_support:1; + unsigned int pad:1; + u16 output_flags; +} __attribute__((packed)); + +/* Note: SDVO detailed timing flags match EDID misc flags. */ +#define DTD_FLAG_HSYNC_POSITIVE (1 << 1) +#define DTD_FLAG_VSYNC_POSITIVE (1 << 2) +#define DTD_FLAG_INTERLACE (1 << 7) + +/** This matches the EDID DTD structure, more or less */ +struct intel_sdvo_dtd { + struct { + u16 clock; /**< pixel clock, in 10kHz units */ + u8 h_active; /**< lower 8 bits (pixels) */ + u8 h_blank; /**< lower 8 bits (pixels) */ + u8 h_high; /**< upper 4 bits each h_active, h_blank */ + u8 v_active; /**< lower 8 bits (lines) */ + u8 v_blank; /**< lower 8 bits (lines) */ + u8 v_high; /**< upper 4 bits each v_active, v_blank */ + } part1; + + struct { + u8 h_sync_off; /**< lower 8 bits, from hblank start */ + u8 h_sync_width; /**< lower 8 bits (pixels) */ + /** lower 4 bits each vsync offset, vsync width */ + u8 v_sync_off_width; + /** + * 2 high bits of hsync offset, 2 high bits of hsync width, + * bits 4-5 of vsync offset, and 2 high bits of vsync width. + */ + u8 sync_off_width_high; + u8 dtd_flags; + u8 sdvo_flags; + /** bits 6-7 of vsync offset at bits 6-7 */ + u8 v_sync_off_high; + u8 reserved; + } part2; +} __attribute__((packed)); + +struct intel_sdvo_pixel_clock_range { + u16 min; /**< pixel clock, in 10kHz units */ + u16 max; /**< pixel clock, in 10kHz units */ +} __attribute__((packed)); + +struct intel_sdvo_preferred_input_timing_args { + u16 clock; + u16 width; + u16 height; + u8 interlace:1; + u8 scaled:1; + u8 pad:6; +} __attribute__((packed)); + +/* I2C registers for SDVO */ +#define SDVO_I2C_ARG_0 0x07 +#define SDVO_I2C_ARG_1 0x06 +#define SDVO_I2C_ARG_2 0x05 +#define SDVO_I2C_ARG_3 0x04 +#define SDVO_I2C_ARG_4 0x03 +#define SDVO_I2C_ARG_5 0x02 +#define SDVO_I2C_ARG_6 0x01 +#define SDVO_I2C_ARG_7 0x00 +#define SDVO_I2C_OPCODE 0x08 +#define SDVO_I2C_CMD_STATUS 0x09 +#define SDVO_I2C_RETURN_0 0x0a +#define SDVO_I2C_RETURN_1 0x0b +#define SDVO_I2C_RETURN_2 0x0c +#define SDVO_I2C_RETURN_3 0x0d +#define SDVO_I2C_RETURN_4 0x0e +#define SDVO_I2C_RETURN_5 0x0f +#define SDVO_I2C_RETURN_6 0x10 +#define SDVO_I2C_RETURN_7 0x11 +#define SDVO_I2C_VENDOR_BEGIN 0x20 + +/* Status results */ +#define SDVO_CMD_STATUS_POWER_ON 0x0 +#define SDVO_CMD_STATUS_SUCCESS 0x1 +#define SDVO_CMD_STATUS_NOTSUPP 0x2 +#define SDVO_CMD_STATUS_INVALID_ARG 0x3 +#define SDVO_CMD_STATUS_PENDING 0x4 +#define SDVO_CMD_STATUS_TARGET_NOT_SPECIFIED 0x5 +#define SDVO_CMD_STATUS_SCALING_NOT_SUPP 0x6 + +/* SDVO commands, argument/result registers */ + +#define SDVO_CMD_RESET 0x01 + +/** Returns a struct intel_sdvo_caps */ +#define SDVO_CMD_GET_DEVICE_CAPS 0x02 + +#define SDVO_CMD_GET_FIRMWARE_REV 0x86 +# define SDVO_DEVICE_FIRMWARE_MINOR SDVO_I2C_RETURN_0 +# define SDVO_DEVICE_FIRMWARE_MAJOR SDVO_I2C_RETURN_1 +# define SDVO_DEVICE_FIRMWARE_PATCH SDVO_I2C_RETURN_2 + +/** + * Reports which inputs are trained (managed to sync). + * + * Devices must have trained within 2 vsyncs of a mode change. + */ +#define SDVO_CMD_GET_TRAINED_INPUTS 0x03 +struct intel_sdvo_get_trained_inputs_response { + unsigned int input0_trained:1; + unsigned int input1_trained:1; + unsigned int pad:6; +} __attribute__((packed)); + +/** Returns a struct intel_sdvo_output_flags of active outputs. */ +#define SDVO_CMD_GET_ACTIVE_OUTPUTS 0x04 + +/** + * Sets the current set of active outputs. + * + * Takes a struct intel_sdvo_output_flags. Must be preceded by a SET_IN_OUT_MAP + * on multi-output devices. + */ +#define SDVO_CMD_SET_ACTIVE_OUTPUTS 0x05 + +/** + * Returns the current mapping of SDVO inputs to outputs on the device. + * + * Returns two struct intel_sdvo_output_flags structures. + */ +#define SDVO_CMD_GET_IN_OUT_MAP 0x06 +struct intel_sdvo_in_out_map { + u16 in0, in1; +}; + +/** + * Sets the current mapping of SDVO inputs to outputs on the device. + * + * Takes two struct i380_sdvo_output_flags structures. + */ +#define SDVO_CMD_SET_IN_OUT_MAP 0x07 + +/** + * Returns a struct intel_sdvo_output_flags of attached displays. + */ +#define SDVO_CMD_GET_ATTACHED_DISPLAYS 0x0b + +/** + * Returns a struct intel_sdvo_ouptut_flags of displays supporting hot plugging. + */ +#define SDVO_CMD_GET_HOT_PLUG_SUPPORT 0x0c + +/** + * Takes a struct intel_sdvo_output_flags. + */ +#define SDVO_CMD_SET_ACTIVE_HOT_PLUG 0x0d + +/** + * Returns a struct intel_sdvo_output_flags of displays with hot plug + * interrupts enabled. + */ +#define SDVO_CMD_GET_ACTIVE_HOT_PLUG 0x0e + +#define SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE 0x0f +struct intel_sdvo_get_interrupt_event_source_response { + u16 interrupt_status; + unsigned int ambient_light_interrupt:1; + unsigned int hdmi_audio_encrypt_change:1; + unsigned int pad:6; +} __attribute__((packed)); + +/** + * Selects which input is affected by future input commands. + * + * Commands affected include SET_INPUT_TIMINGS_PART[12], + * GET_INPUT_TIMINGS_PART[12], GET_PREFERRED_INPUT_TIMINGS_PART[12], + * GET_INPUT_PIXEL_CLOCK_RANGE, and CREATE_PREFERRED_INPUT_TIMINGS. + */ +#define SDVO_CMD_SET_TARGET_INPUT 0x10 +struct intel_sdvo_set_target_input_args { + unsigned int target_1:1; + unsigned int pad:7; +} __attribute__((packed)); + +/** + * Takes a struct intel_sdvo_output_flags of which outputs are targeted by + * future output commands. + * + * Affected commands inclue SET_OUTPUT_TIMINGS_PART[12], + * GET_OUTPUT_TIMINGS_PART[12], and GET_OUTPUT_PIXEL_CLOCK_RANGE. + */ +#define SDVO_CMD_SET_TARGET_OUTPUT 0x11 + +#define SDVO_CMD_GET_INPUT_TIMINGS_PART1 0x12 +#define SDVO_CMD_GET_INPUT_TIMINGS_PART2 0x13 +#define SDVO_CMD_SET_INPUT_TIMINGS_PART1 0x14 +#define SDVO_CMD_SET_INPUT_TIMINGS_PART2 0x15 +#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART1 0x16 +#define SDVO_CMD_SET_OUTPUT_TIMINGS_PART2 0x17 +#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART1 0x18 +#define SDVO_CMD_GET_OUTPUT_TIMINGS_PART2 0x19 +/* Part 1 */ +# define SDVO_DTD_CLOCK_LOW SDVO_I2C_ARG_0 +# define SDVO_DTD_CLOCK_HIGH SDVO_I2C_ARG_1 +# define SDVO_DTD_H_ACTIVE SDVO_I2C_ARG_2 +# define SDVO_DTD_H_BLANK SDVO_I2C_ARG_3 +# define SDVO_DTD_H_HIGH SDVO_I2C_ARG_4 +# define SDVO_DTD_V_ACTIVE SDVO_I2C_ARG_5 +# define SDVO_DTD_V_BLANK SDVO_I2C_ARG_6 +# define SDVO_DTD_V_HIGH SDVO_I2C_ARG_7 +/* Part 2 */ +# define SDVO_DTD_HSYNC_OFF SDVO_I2C_ARG_0 +# define SDVO_DTD_HSYNC_WIDTH SDVO_I2C_ARG_1 +# define SDVO_DTD_VSYNC_OFF_WIDTH SDVO_I2C_ARG_2 +# define SDVO_DTD_SYNC_OFF_WIDTH_HIGH SDVO_I2C_ARG_3 +# define SDVO_DTD_DTD_FLAGS SDVO_I2C_ARG_4 +# define SDVO_DTD_DTD_FLAG_INTERLACED (1 << 7) +# define SDVO_DTD_DTD_FLAG_STEREO_MASK (3 << 5) +# define SDVO_DTD_DTD_FLAG_INPUT_MASK (3 << 3) +# define SDVO_DTD_DTD_FLAG_SYNC_MASK (3 << 1) +# define SDVO_DTD_SDVO_FLAS SDVO_I2C_ARG_5 +# define SDVO_DTD_SDVO_FLAG_STALL (1 << 7) +# define SDVO_DTD_SDVO_FLAG_CENTERED (0 << 6) +# define SDVO_DTD_SDVO_FLAG_UPPER_LEFT (1 << 6) +# define SDVO_DTD_SDVO_FLAG_SCALING_MASK (3 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_NONE (0 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_SHARP (1 << 4) +# define SDVO_DTD_SDVO_FLAG_SCALING_SMOOTH (2 << 4) +# define SDVO_DTD_VSYNC_OFF_HIGH SDVO_I2C_ARG_6 + +/** + * Generates a DTD based on the given width, height, and flags. + * + * This will be supported by any device supporting scaling or interlaced + * modes. + */ +#define SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING 0x1a +# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_LOW SDVO_I2C_ARG_0 +# define SDVO_PREFERRED_INPUT_TIMING_CLOCK_HIGH SDVO_I2C_ARG_1 +# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_LOW SDVO_I2C_ARG_2 +# define SDVO_PREFERRED_INPUT_TIMING_WIDTH_HIGH SDVO_I2C_ARG_3 +# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_LOW SDVO_I2C_ARG_4 +# define SDVO_PREFERRED_INPUT_TIMING_HEIGHT_HIGH SDVO_I2C_ARG_5 +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS SDVO_I2C_ARG_6 +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_INTERLACED (1 << 0) +# define SDVO_PREFERRED_INPUT_TIMING_FLAGS_SCALED (1 << 1) + +#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1 0x1b +#define SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2 0x1c + +/** Returns a struct intel_sdvo_pixel_clock_range */ +#define SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE 0x1d +/** Returns a struct intel_sdvo_pixel_clock_range */ +#define SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE 0x1e + +/** Returns a byte bitfield containing SDVO_CLOCK_RATE_MULT_* flags */ +#define SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS 0x1f + +/** Returns a byte containing a SDVO_CLOCK_RATE_MULT_* flag */ +#define SDVO_CMD_GET_CLOCK_RATE_MULT 0x20 +/** Takes a byte containing a SDVO_CLOCK_RATE_MULT_* flag */ +#define SDVO_CMD_SET_CLOCK_RATE_MULT 0x21 +# define SDVO_CLOCK_RATE_MULT_1X (1 << 0) +# define SDVO_CLOCK_RATE_MULT_2X (1 << 1) +# define SDVO_CLOCK_RATE_MULT_4X (1 << 3) + +#define SDVO_CMD_GET_SUPPORTED_TV_FORMATS 0x27 +/** 6 bytes of bit flags for TV formats shared by all TV format functions */ +struct intel_sdvo_tv_format { + unsigned int ntsc_m:1; + unsigned int ntsc_j:1; + unsigned int ntsc_443:1; + unsigned int pal_b:1; + unsigned int pal_d:1; + unsigned int pal_g:1; + unsigned int pal_h:1; + unsigned int pal_i:1; + + unsigned int pal_m:1; + unsigned int pal_n:1; + unsigned int pal_nc:1; + unsigned int pal_60:1; + unsigned int secam_b:1; + unsigned int secam_d:1; + unsigned int secam_g:1; + unsigned int secam_k:1; + + unsigned int secam_k1:1; + unsigned int secam_l:1; + unsigned int secam_60:1; + unsigned int hdtv_std_smpte_240m_1080i_59:1; + unsigned int hdtv_std_smpte_240m_1080i_60:1; + unsigned int hdtv_std_smpte_260m_1080i_59:1; + unsigned int hdtv_std_smpte_260m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080i_50:1; + + unsigned int hdtv_std_smpte_274m_1080i_59:1; + unsigned int hdtv_std_smpte_274m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080p_23:1; + unsigned int hdtv_std_smpte_274m_1080p_24:1; + unsigned int hdtv_std_smpte_274m_1080p_25:1; + unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; + unsigned int hdtv_std_smpte_274m_1080p_50:1; + + unsigned int hdtv_std_smpte_274m_1080p_59:1; + unsigned int hdtv_std_smpte_274m_1080p_60:1; + unsigned int hdtv_std_smpte_295m_1080i_50:1; + unsigned int hdtv_std_smpte_295m_1080p_50:1; + unsigned int hdtv_std_smpte_296m_720p_59:1; + unsigned int hdtv_std_smpte_296m_720p_60:1; + unsigned int hdtv_std_smpte_296m_720p_50:1; + unsigned int hdtv_std_smpte_293m_480p_59:1; + + unsigned int hdtv_std_smpte_170m_480i_59:1; + unsigned int hdtv_std_iturbt601_576i_50:1; + unsigned int hdtv_std_iturbt601_576p_50:1; + unsigned int hdtv_std_eia_7702a_480i_60:1; + unsigned int hdtv_std_eia_7702a_480p_60:1; + unsigned int pad:3; +} __attribute__((packed)); + +#define SDVO_CMD_GET_TV_FORMAT 0x28 + +#define SDVO_CMD_SET_TV_FORMAT 0x29 + +/** Returns the resolutiosn that can be used with the given TV format */ +#define SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT 0x83 +struct intel_sdvo_sdtv_resolution_request { + unsigned int ntsc_m:1; + unsigned int ntsc_j:1; + unsigned int ntsc_443:1; + unsigned int pal_b:1; + unsigned int pal_d:1; + unsigned int pal_g:1; + unsigned int pal_h:1; + unsigned int pal_i:1; + + unsigned int pal_m:1; + unsigned int pal_n:1; + unsigned int pal_nc:1; + unsigned int pal_60:1; + unsigned int secam_b:1; + unsigned int secam_d:1; + unsigned int secam_g:1; + unsigned int secam_k:1; + + unsigned int secam_k1:1; + unsigned int secam_l:1; + unsigned int secam_60:1; + unsigned int pad:5; +} __attribute__((packed)); + +struct intel_sdvo_sdtv_resolution_reply { + unsigned int res_320x200:1; + unsigned int res_320x240:1; + unsigned int res_400x300:1; + unsigned int res_640x350:1; + unsigned int res_640x400:1; + unsigned int res_640x480:1; + unsigned int res_704x480:1; + unsigned int res_704x576:1; + + unsigned int res_720x350:1; + unsigned int res_720x400:1; + unsigned int res_720x480:1; + unsigned int res_720x540:1; + unsigned int res_720x576:1; + unsigned int res_768x576:1; + unsigned int res_800x600:1; + unsigned int res_832x624:1; + + unsigned int res_920x766:1; + unsigned int res_1024x768:1; + unsigned int res_1280x1024:1; + unsigned int pad:5; +} __attribute__((packed)); + +/* Get supported resolution with squire pixel aspect ratio that can be + scaled for the requested HDTV format */ +#define SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT 0x85 + +struct intel_sdvo_hdtv_resolution_request { + unsigned int hdtv_std_smpte_240m_1080i_59:1; + unsigned int hdtv_std_smpte_240m_1080i_60:1; + unsigned int hdtv_std_smpte_260m_1080i_59:1; + unsigned int hdtv_std_smpte_260m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080i_50:1; + unsigned int hdtv_std_smpte_274m_1080i_59:1; + unsigned int hdtv_std_smpte_274m_1080i_60:1; + unsigned int hdtv_std_smpte_274m_1080p_23:1; + + unsigned int hdtv_std_smpte_274m_1080p_24:1; + unsigned int hdtv_std_smpte_274m_1080p_25:1; + unsigned int hdtv_std_smpte_274m_1080p_29:1; + unsigned int hdtv_std_smpte_274m_1080p_30:1; + unsigned int hdtv_std_smpte_274m_1080p_50:1; + unsigned int hdtv_std_smpte_274m_1080p_59:1; + unsigned int hdtv_std_smpte_274m_1080p_60:1; + unsigned int hdtv_std_smpte_295m_1080i_50:1; + + unsigned int hdtv_std_smpte_295m_1080p_50:1; + unsigned int hdtv_std_smpte_296m_720p_59:1; + unsigned int hdtv_std_smpte_296m_720p_60:1; + unsigned int hdtv_std_smpte_296m_720p_50:1; + unsigned int hdtv_std_smpte_293m_480p_59:1; + unsigned int hdtv_std_smpte_170m_480i_59:1; + unsigned int hdtv_std_iturbt601_576i_50:1; + unsigned int hdtv_std_iturbt601_576p_50:1; + + unsigned int hdtv_std_eia_7702a_480i_60:1; + unsigned int hdtv_std_eia_7702a_480p_60:1; + unsigned int pad:6; +} __attribute__((packed)); + +struct intel_sdvo_hdtv_resolution_reply { + unsigned int res_640x480:1; + unsigned int res_800x600:1; + unsigned int res_1024x768:1; + unsigned int res_1280x960:1; + unsigned int res_1400x1050:1; + unsigned int res_1600x1200:1; + unsigned int res_1920x1440:1; + unsigned int res_2048x1536:1; + + unsigned int res_2560x1920:1; + unsigned int res_3200x2400:1; + unsigned int res_3840x2880:1; + unsigned int pad1:5; + + unsigned int res_848x480:1; + unsigned int res_1064x600:1; + unsigned int res_1280x720:1; + unsigned int res_1360x768:1; + unsigned int res_1704x960:1; + unsigned int res_1864x1050:1; + unsigned int res_1920x1080:1; + unsigned int res_2128x1200:1; + + unsigned int res_2560x1400:1; + unsigned int res_2728x1536:1; + unsigned int res_3408x1920:1; + unsigned int res_4264x2400:1; + unsigned int res_5120x2880:1; + unsigned int pad2:3; + + unsigned int res_768x480:1; + unsigned int res_960x600:1; + unsigned int res_1152x720:1; + unsigned int res_1124x768:1; + unsigned int res_1536x960:1; + unsigned int res_1680x1050:1; + unsigned int res_1728x1080:1; + unsigned int res_1920x1200:1; + + unsigned int res_2304x1440:1; + unsigned int res_2456x1536:1; + unsigned int res_3072x1920:1; + unsigned int res_3840x2400:1; + unsigned int res_4608x2880:1; + unsigned int pad3:3; + + unsigned int res_1280x1024:1; + unsigned int pad4:7; + + unsigned int res_1280x768:1; + unsigned int pad5:7; +} __attribute__((packed)); + +/* Get supported power state returns info for encoder and monitor, rely on + last SetTargetInput and SetTargetOutput calls */ +#define SDVO_CMD_GET_SUPPORTED_POWER_STATES 0x2a +/* Get power state returns info for encoder and monitor, rely on last + SetTargetInput and SetTargetOutput calls */ +#define SDVO_CMD_GET_POWER_STATE 0x2b +#define SDVO_CMD_GET_ENCODER_POWER_STATE 0x2b +#define SDVO_CMD_SET_ENCODER_POWER_STATE 0x2c +# define SDVO_ENCODER_STATE_ON (1 << 0) +# define SDVO_ENCODER_STATE_STANDBY (1 << 1) +# define SDVO_ENCODER_STATE_SUSPEND (1 << 2) +# define SDVO_ENCODER_STATE_OFF (1 << 3) +# define SDVO_MONITOR_STATE_ON (1 << 4) +# define SDVO_MONITOR_STATE_STANDBY (1 << 5) +# define SDVO_MONITOR_STATE_SUSPEND (1 << 6) +# define SDVO_MONITOR_STATE_OFF (1 << 7) + +#define SDVO_CMD_GET_MAX_PANEL_POWER_SEQUENCING 0x2d +#define SDVO_CMD_GET_PANEL_POWER_SEQUENCING 0x2e +#define SDVO_CMD_SET_PANEL_POWER_SEQUENCING 0x2f +/** + * The panel power sequencing parameters are in units of milliseconds. + * The high fields are bits 8:9 of the 10-bit values. + */ +struct sdvo_panel_power_sequencing { + u8 t0; + u8 t1; + u8 t2; + u8 t3; + u8 t4; + + unsigned int t0_high:2; + unsigned int t1_high:2; + unsigned int t2_high:2; + unsigned int t3_high:2; + + unsigned int t4_high:2; + unsigned int pad:6; +} __attribute__((packed)); + +#define SDVO_CMD_GET_MAX_BACKLIGHT_LEVEL 0x30 +struct sdvo_max_backlight_reply { + u8 max_value; + u8 default_value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_BACKLIGHT_LEVEL 0x31 +#define SDVO_CMD_SET_BACKLIGHT_LEVEL 0x32 + +#define SDVO_CMD_GET_AMBIENT_LIGHT 0x33 +struct sdvo_get_ambient_light_reply { + u16 trip_low; + u16 trip_high; + u16 value; +} __attribute__((packed)); +#define SDVO_CMD_SET_AMBIENT_LIGHT 0x34 +struct sdvo_set_ambient_light_reply { + u16 trip_low; + u16 trip_high; + unsigned int enable:1; + unsigned int pad:7; +} __attribute__((packed)); + +/* Set display power state */ +#define SDVO_CMD_SET_DISPLAY_POWER_STATE 0x7d +# define SDVO_DISPLAY_STATE_ON (1 << 0) +# define SDVO_DISPLAY_STATE_STANDBY (1 << 1) +# define SDVO_DISPLAY_STATE_SUSPEND (1 << 2) +# define SDVO_DISPLAY_STATE_OFF (1 << 3) + +#define SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS 0x84 +struct intel_sdvo_enhancements_reply { + unsigned int flicker_filter:1; + unsigned int flicker_filter_adaptive:1; + unsigned int flicker_filter_2d:1; + unsigned int saturation:1; + unsigned int hue:1; + unsigned int brightness:1; + unsigned int contrast:1; + unsigned int overscan_h:1; + + unsigned int overscan_v:1; + unsigned int hpos:1; + unsigned int vpos:1; + unsigned int sharpness:1; + unsigned int dot_crawl:1; + unsigned int dither:1; + unsigned int tv_chroma_filter:1; + unsigned int tv_luma_filter:1; +} __attribute__((packed)); + +/* Picture enhancement limits below are dependent on the current TV format, + * and thus need to be queried and set after it. + */ +#define SDVO_CMD_GET_MAX_FLICKER_FILTER 0x4d +#define SDVO_CMD_GET_MAX_FLICKER_FILTER_ADAPTIVE 0x7b +#define SDVO_CMD_GET_MAX_FLICKER_FILTER_2D 0x52 +#define SDVO_CMD_GET_MAX_SATURATION 0x55 +#define SDVO_CMD_GET_MAX_HUE 0x58 +#define SDVO_CMD_GET_MAX_BRIGHTNESS 0x5b +#define SDVO_CMD_GET_MAX_CONTRAST 0x5e +#define SDVO_CMD_GET_MAX_OVERSCAN_H 0x61 +#define SDVO_CMD_GET_MAX_OVERSCAN_V 0x64 +#define SDVO_CMD_GET_MAX_HPOS 0x67 +#define SDVO_CMD_GET_MAX_VPOS 0x6a +#define SDVO_CMD_GET_MAX_SHARPNESS 0x6d +#define SDVO_CMD_GET_MAX_TV_CHROMA_FILTER 0x74 +#define SDVO_CMD_GET_MAX_TV_LUMA_FILTER 0x77 +struct intel_sdvo_enhancement_limits_reply { + u16 max_value; + u16 default_value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_LVDS_PANEL_INFORMATION 0x7f +#define SDVO_CMD_SET_LVDS_PANEL_INFORMATION 0x80 +# define SDVO_LVDS_COLOR_DEPTH_18 (0 << 0) +# define SDVO_LVDS_COLOR_DEPTH_24 (1 << 0) +# define SDVO_LVDS_CONNECTOR_SPWG (0 << 2) +# define SDVO_LVDS_CONNECTOR_OPENLDI (1 << 2) +# define SDVO_LVDS_SINGLE_CHANNEL (0 << 4) +# define SDVO_LVDS_DUAL_CHANNEL (1 << 4) + +#define SDVO_CMD_GET_FLICKER_FILTER 0x4e +#define SDVO_CMD_SET_FLICKER_FILTER 0x4f +#define SDVO_CMD_GET_FLICKER_FILTER_ADAPTIVE 0x50 +#define SDVO_CMD_SET_FLICKER_FILTER_ADAPTIVE 0x51 +#define SDVO_CMD_GET_FLICKER_FILTER_2D 0x53 +#define SDVO_CMD_SET_FLICKER_FILTER_2D 0x54 +#define SDVO_CMD_GET_SATURATION 0x56 +#define SDVO_CMD_SET_SATURATION 0x57 +#define SDVO_CMD_GET_HUE 0x59 +#define SDVO_CMD_SET_HUE 0x5a +#define SDVO_CMD_GET_BRIGHTNESS 0x5c +#define SDVO_CMD_SET_BRIGHTNESS 0x5d +#define SDVO_CMD_GET_CONTRAST 0x5f +#define SDVO_CMD_SET_CONTRAST 0x60 +#define SDVO_CMD_GET_OVERSCAN_H 0x62 +#define SDVO_CMD_SET_OVERSCAN_H 0x63 +#define SDVO_CMD_GET_OVERSCAN_V 0x65 +#define SDVO_CMD_SET_OVERSCAN_V 0x66 +#define SDVO_CMD_GET_HPOS 0x68 +#define SDVO_CMD_SET_HPOS 0x69 +#define SDVO_CMD_GET_VPOS 0x6b +#define SDVO_CMD_SET_VPOS 0x6c +#define SDVO_CMD_GET_SHARPNESS 0x6e +#define SDVO_CMD_SET_SHARPNESS 0x6f +#define SDVO_CMD_GET_TV_CHROMA_FILTER 0x75 +#define SDVO_CMD_SET_TV_CHROMA_FILTER 0x76 +#define SDVO_CMD_GET_TV_LUMA_FILTER 0x78 +#define SDVO_CMD_SET_TV_LUMA_FILTER 0x79 +struct intel_sdvo_enhancements_arg { + u16 value; +} __attribute__((packed)); + +#define SDVO_CMD_GET_DOT_CRAWL 0x70 +#define SDVO_CMD_SET_DOT_CRAWL 0x71 +# define SDVO_DOT_CRAWL_ON (1 << 0) +# define SDVO_DOT_CRAWL_DEFAULT_ON (1 << 1) + +#define SDVO_CMD_GET_DITHER 0x72 +#define SDVO_CMD_SET_DITHER 0x73 +# define SDVO_DITHER_ON (1 << 0) +# define SDVO_DITHER_DEFAULT_ON (1 << 1) + +#define SDVO_CMD_SET_CONTROL_BUS_SWITCH 0x7a +# define SDVO_CONTROL_BUS_PROM (1 << 0) +# define SDVO_CONTROL_BUS_DDC1 (1 << 1) +# define SDVO_CONTROL_BUS_DDC2 (1 << 2) +# define SDVO_CONTROL_BUS_DDC3 (1 << 3) + +/* HDMI op codes */ +#define SDVO_CMD_GET_SUPP_ENCODE 0x9d +#define SDVO_CMD_GET_ENCODE 0x9e +#define SDVO_CMD_SET_ENCODE 0x9f + #define SDVO_ENCODE_DVI 0x0 + #define SDVO_ENCODE_HDMI 0x1 +#define SDVO_CMD_SET_PIXEL_REPLI 0x8b +#define SDVO_CMD_GET_PIXEL_REPLI 0x8c +#define SDVO_CMD_GET_COLORIMETRY_CAP 0x8d +#define SDVO_CMD_SET_COLORIMETRY 0x8e + #define SDVO_COLORIMETRY_RGB256 0x0 + #define SDVO_COLORIMETRY_RGB220 0x1 + #define SDVO_COLORIMETRY_YCrCb422 0x3 + #define SDVO_COLORIMETRY_YCrCb444 0x4 +#define SDVO_CMD_GET_COLORIMETRY 0x8f +#define SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER 0x90 +#define SDVO_CMD_SET_AUDIO_STAT 0x91 +#define SDVO_CMD_GET_AUDIO_STAT 0x92 +#define SDVO_CMD_SET_HBUF_INDEX 0x93 + #define SDVO_HBUF_INDEX_ELD 0 + #define SDVO_HBUF_INDEX_AVI_IF 1 +#define SDVO_CMD_GET_HBUF_INDEX 0x94 +#define SDVO_CMD_GET_HBUF_INFO 0x95 +#define SDVO_CMD_SET_HBUF_AV_SPLIT 0x96 +#define SDVO_CMD_GET_HBUF_AV_SPLIT 0x97 +#define SDVO_CMD_SET_HBUF_DATA 0x98 +#define SDVO_CMD_GET_HBUF_DATA 0x99 +#define SDVO_CMD_SET_HBUF_TXRATE 0x9a +#define SDVO_CMD_GET_HBUF_TXRATE 0x9b + #define SDVO_HBUF_TX_DISABLED (0 << 6) + #define SDVO_HBUF_TX_ONCE (2 << 6) + #define SDVO_HBUF_TX_VSYNC (3 << 6) +#define SDVO_CMD_GET_AUDIO_TX_INFO 0x9c +#define SDVO_NEED_TO_STALL (1 << 7) + +struct intel_sdvo_encode { + u8 dvi_rev; + u8 hdmi_rev; +} __attribute__ ((packed)); --- linux-3.5.0.orig/ubuntu/i915/intel_dp.c +++ linux-3.5.0/ubuntu/i915/intel_dp.c @@ -0,0 +1,2896 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Keith Packard + * + */ + +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_crtc_helper.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +#define DP_LINK_CHECK_TIMEOUT (10 * 1000) + +/** + * is_edp - is the given port attached to an eDP panel (either CPU or PCH) + * @intel_dp: DP struct + * + * If a CPU or PCH DP output is attached to an eDP panel, this function + * will return true, and false otherwise. + */ +static bool is_edp(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + + return intel_dig_port->base.type == INTEL_OUTPUT_EDP; +} + +/** + * is_pch_edp - is the port on the PCH and attached to an eDP panel? + * @intel_dp: DP struct + * + * Returns true if the given DP struct corresponds to a PCH DP port attached + * to an eDP panel, false otherwise. Helpful for determining whether we + * may need FDI resources for a given DP output or not. + */ +static bool is_pch_edp(struct intel_dp *intel_dp) +{ + return intel_dp->is_pch_edp; +} + +/** + * is_cpu_edp - is the port on the CPU and attached to an eDP panel? + * @intel_dp: DP struct + * + * Returns true if the given DP struct corresponds to a CPU eDP port. + */ +static bool is_cpu_edp(struct intel_dp *intel_dp) +{ + return is_edp(intel_dp) && !is_pch_edp(intel_dp); +} + +static struct drm_device *intel_dp_to_dev(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + + return intel_dig_port->base.base.dev; +} + +static struct intel_dp *intel_attached_dp(struct drm_connector *connector) +{ + return enc_to_intel_dp(&intel_attached_encoder(connector)->base); +} + +/** + * intel_encoder_is_pch_edp - is the given encoder a PCH attached eDP? + * @encoder: DRM encoder + * + * Return true if @encoder corresponds to a PCH attached eDP panel. Needed + * by intel_display.c. + */ +bool intel_encoder_is_pch_edp(struct drm_encoder *encoder) +{ + struct intel_dp *intel_dp; + + if (!encoder) + return false; + + intel_dp = enc_to_intel_dp(encoder); + + return is_pch_edp(intel_dp); +} + +static void intel_dp_link_down(struct intel_dp *intel_dp); + +void +intel_edp_link_config(struct intel_encoder *intel_encoder, + int *lane_num, int *link_bw) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + + *lane_num = intel_dp->lane_count; + *link_bw = drm_dp_bw_code_to_link_rate(intel_dp->link_bw); +} + +int +intel_edp_target_clock(struct intel_encoder *intel_encoder, + struct drm_display_mode *mode) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + struct intel_connector *intel_connector = intel_dp->attached_connector; + + if (intel_connector->panel.fixed_mode) + return intel_connector->panel.fixed_mode->clock; + else + return mode->clock; +} + +static int +intel_dp_max_link_bw(struct intel_dp *intel_dp) +{ + int max_link_bw = intel_dp->dpcd[DP_MAX_LINK_RATE]; + + switch (max_link_bw) { + case DP_LINK_BW_1_62: + case DP_LINK_BW_2_7: + break; + default: + max_link_bw = DP_LINK_BW_1_62; + break; + } + return max_link_bw; +} + +static int +intel_dp_link_clock(uint8_t link_bw) +{ + if (link_bw == DP_LINK_BW_2_7) + return 270000; + else + return 162000; +} + +/* + * The units on the numbers in the next two are... bizarre. Examples will + * make it clearer; this one parallels an example in the eDP spec. + * + * intel_dp_max_data_rate for one lane of 2.7GHz evaluates as: + * + * 270000 * 1 * 8 / 10 == 216000 + * + * The actual data capacity of that configuration is 2.16Gbit/s, so the + * units are decakilobits. ->clock in a drm_display_mode is in kilohertz - + * or equivalently, kilopixels per second - so for 1680x1050R it'd be + * 119000. At 18bpp that's 2142000 kilobits per second. + * + * Thus the strange-looking division by 10 in intel_dp_link_required, to + * get the result in decakilobits instead of kilobits. + */ + +static int +intel_dp_link_required(int pixel_clock, int bpp) +{ + return (pixel_clock * bpp + 9) / 10; +} + +static int +intel_dp_max_data_rate(int max_link_clock, int max_lanes) +{ + return (max_link_clock * max_lanes * 8) / 10; +} + +static bool +intel_dp_adjust_dithering(struct intel_dp *intel_dp, + struct drm_display_mode *mode, + bool adjust_mode) +{ + int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp)); + int max_lanes = drm_dp_max_lane_count(intel_dp->dpcd); + int max_rate, mode_rate; + + mode_rate = intel_dp_link_required(mode->clock, 24); + max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes); + + if (mode_rate > max_rate) { + mode_rate = intel_dp_link_required(mode->clock, 18); + if (mode_rate > max_rate) + return false; + + if (adjust_mode) + mode->private_flags + |= INTEL_MODE_DP_FORCE_6BPC; + + return true; + } + + return true; +} + +static int +intel_dp_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode; + + if (is_edp(intel_dp) && fixed_mode) { + if (mode->hdisplay > fixed_mode->hdisplay) + return MODE_PANEL; + + if (mode->vdisplay > fixed_mode->vdisplay) + return MODE_PANEL; + } + + if (!intel_dp_adjust_dithering(intel_dp, mode, false)) + return MODE_CLOCK_HIGH; + + if (mode->clock < 10000) + return MODE_CLOCK_LOW; + + if (mode->flags & DRM_MODE_FLAG_DBLCLK) + return MODE_H_ILLEGAL; + + return MODE_OK; +} + +static uint32_t +pack_aux(uint8_t *src, int src_bytes) +{ + int i; + uint32_t v = 0; + + if (src_bytes > 4) + src_bytes = 4; + for (i = 0; i < src_bytes; i++) + v |= ((uint32_t) src[i]) << ((3-i) * 8); + return v; +} + +static void +unpack_aux(uint32_t src, uint8_t *dst, int dst_bytes) +{ + int i; + if (dst_bytes > 4) + dst_bytes = 4; + for (i = 0; i < dst_bytes; i++) + dst[i] = src >> ((3-i) * 8); +} + +/* hrawclock is 1/4 the FSB frequency */ +static int +intel_hrawclk(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t clkcfg; + + /* There is no CLKCFG reg in Valleyview. VLV hrawclk is 200 MHz */ + if (IS_VALLEYVIEW(dev)) + return 200; + + clkcfg = I915_READ(CLKCFG); + switch (clkcfg & CLKCFG_FSB_MASK) { + case CLKCFG_FSB_400: + return 100; + case CLKCFG_FSB_533: + return 133; + case CLKCFG_FSB_667: + return 166; + case CLKCFG_FSB_800: + return 200; + case CLKCFG_FSB_1067: + return 266; + case CLKCFG_FSB_1333: + return 333; + /* these two are just a guess; one of them might be right */ + case CLKCFG_FSB_1600: + case CLKCFG_FSB_1600_ALT: + return 400; + default: + return 133; + } +} + +static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + return (I915_READ(PCH_PP_STATUS) & PP_ON) != 0; +} + +static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + return (I915_READ(PCH_PP_CONTROL) & EDP_FORCE_VDD) != 0; +} + +static void +intel_dp_check_edp(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!is_edp(intel_dp)) + return; + if (!ironlake_edp_have_panel_power(intel_dp) && !ironlake_edp_have_panel_vdd(intel_dp)) { + WARN(1, "eDP powered off while attempting aux channel communication.\n"); + DRM_DEBUG_KMS("Status 0x%08x Control 0x%08x\n", + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + } +} + +static int +intel_dp_aux_ch(struct intel_dp *intel_dp, + uint8_t *send, int send_bytes, + uint8_t *recv, int recv_size) +{ + uint32_t output_reg = intel_dp->output_reg; + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t ch_ctl = output_reg + 0x10; + uint32_t ch_data = ch_ctl + 4; + int i; + int recv_bytes; + uint32_t status; + uint32_t aux_clock_divider; + int try, precharge; + + if (IS_HASWELL(dev)) { + switch (intel_dig_port->port) { + case PORT_A: + ch_ctl = DPA_AUX_CH_CTL; + ch_data = DPA_AUX_CH_DATA1; + break; + case PORT_B: + ch_ctl = PCH_DPB_AUX_CH_CTL; + ch_data = PCH_DPB_AUX_CH_DATA1; + break; + case PORT_C: + ch_ctl = PCH_DPC_AUX_CH_CTL; + ch_data = PCH_DPC_AUX_CH_DATA1; + break; + case PORT_D: + ch_ctl = PCH_DPD_AUX_CH_CTL; + ch_data = PCH_DPD_AUX_CH_DATA1; + break; + default: + BUG(); + } + } + + intel_dp_check_edp(intel_dp); + /* The clock divider is based off the hrawclk, + * and would like to run at 2MHz. So, take the + * hrawclk value and divide by 2 and use that + * + * Note that PCH attached eDP panels should use a 125MHz input + * clock divider. + */ + if (is_cpu_edp(intel_dp)) { + if (IS_HASWELL(dev)) + aux_clock_divider = intel_ddi_get_cdclk_freq(dev_priv) >> 1; + else if (IS_VALLEYVIEW(dev)) + aux_clock_divider = 100; + else if (IS_GEN6(dev) || IS_GEN7(dev)) + aux_clock_divider = 200; /* SNB & IVB eDP input clock at 400Mhz */ + else + aux_clock_divider = 225; /* eDP input clock at 450Mhz */ + } else if (HAS_PCH_SPLIT(dev)) + aux_clock_divider = DIV_ROUND_UP(intel_pch_rawclk(dev), 2); + else + aux_clock_divider = intel_hrawclk(dev) / 2; + + if (IS_GEN6(dev)) + precharge = 3; + else + precharge = 5; + + /* Try to wait for any previous AUX channel activity */ + for (try = 0; try < 3; try++) { + status = I915_READ(ch_ctl); + if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0) + break; + msleep(1); + } + + if (try == 3) { + WARN(1, "dp_aux_ch not started status 0x%08x\n", + I915_READ(ch_ctl)); + return -EBUSY; + } + + /* Must try at least 3 times according to DP spec */ + for (try = 0; try < 5; try++) { + /* Load the send data into the aux channel data registers */ + for (i = 0; i < send_bytes; i += 4) + I915_WRITE(ch_data + i, + pack_aux(send + i, send_bytes - i)); + + /* Send the command and wait for it to complete */ + I915_WRITE(ch_ctl, + DP_AUX_CH_CTL_SEND_BUSY | + DP_AUX_CH_CTL_TIME_OUT_400us | + (send_bytes << DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT) | + (precharge << DP_AUX_CH_CTL_PRECHARGE_2US_SHIFT) | + (aux_clock_divider << DP_AUX_CH_CTL_BIT_CLOCK_2X_SHIFT) | + DP_AUX_CH_CTL_DONE | + DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR); + for (;;) { + status = I915_READ(ch_ctl); + if ((status & DP_AUX_CH_CTL_SEND_BUSY) == 0) + break; + udelay(100); + } + + /* Clear done status and any errors */ + I915_WRITE(ch_ctl, + status | + DP_AUX_CH_CTL_DONE | + DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR); + + if (status & (DP_AUX_CH_CTL_TIME_OUT_ERROR | + DP_AUX_CH_CTL_RECEIVE_ERROR)) + continue; + if (status & DP_AUX_CH_CTL_DONE) + break; + } + + if ((status & DP_AUX_CH_CTL_DONE) == 0) { + DRM_ERROR("dp_aux_ch not done status 0x%08x\n", status); + return -EBUSY; + } + + /* Check for timeout or receive error. + * Timeouts occur when the sink is not connected + */ + if (status & DP_AUX_CH_CTL_RECEIVE_ERROR) { + DRM_ERROR("dp_aux_ch receive error status 0x%08x\n", status); + return -EIO; + } + + /* Timeouts occur when the device isn't connected, so they're + * "normal" -- don't fill the kernel log with these */ + if (status & DP_AUX_CH_CTL_TIME_OUT_ERROR) { + DRM_DEBUG_KMS("dp_aux_ch timeout status 0x%08x\n", status); + return -ETIMEDOUT; + } + + /* Unload any bytes sent back from the other side */ + recv_bytes = ((status & DP_AUX_CH_CTL_MESSAGE_SIZE_MASK) >> + DP_AUX_CH_CTL_MESSAGE_SIZE_SHIFT); + if (recv_bytes > recv_size) + recv_bytes = recv_size; + + for (i = 0; i < recv_bytes; i += 4) + unpack_aux(I915_READ(ch_data + i), + recv + i, recv_bytes - i); + + return recv_bytes; +} + +/* Write data to the aux channel in native mode */ +static int +intel_dp_aux_native_write(struct intel_dp *intel_dp, + uint16_t address, uint8_t *send, int send_bytes) +{ + int ret; + uint8_t msg[20]; + int msg_bytes; + uint8_t ack; + + intel_dp_check_edp(intel_dp); + if (send_bytes > 16) + return -1; + msg[0] = AUX_NATIVE_WRITE << 4; + msg[1] = address >> 8; + msg[2] = address & 0xff; + msg[3] = send_bytes - 1; + memcpy(&msg[4], send, send_bytes); + msg_bytes = send_bytes + 4; + for (;;) { + 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; + else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) + udelay(100); + else + return -EIO; + } + return send_bytes; +} + +/* Write a single byte to the aux channel in native mode */ +static int +intel_dp_aux_native_write_1(struct intel_dp *intel_dp, + uint16_t address, uint8_t byte) +{ + return intel_dp_aux_native_write(intel_dp, address, &byte, 1); +} + +/* read bytes from a native aux channel */ +static int +intel_dp_aux_native_read(struct intel_dp *intel_dp, + uint16_t address, uint8_t *recv, int recv_bytes) +{ + uint8_t msg[4]; + int msg_bytes; + uint8_t reply[20]; + int reply_bytes; + uint8_t ack; + int ret; + + intel_dp_check_edp(intel_dp); + msg[0] = AUX_NATIVE_READ << 4; + msg[1] = address >> 8; + msg[2] = address & 0xff; + msg[3] = recv_bytes - 1; + + msg_bytes = 4; + reply_bytes = recv_bytes + 1; + + for (;;) { + ret = intel_dp_aux_ch(intel_dp, msg, msg_bytes, + reply, reply_bytes); + if (ret == 0) + return -EPROTO; + if (ret < 0) + return ret; + ack = reply[0]; + if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_ACK) { + memcpy(recv, reply + 1, ret - 1); + return ret - 1; + } + else if ((ack & AUX_NATIVE_REPLY_MASK) == AUX_NATIVE_REPLY_DEFER) + udelay(100); + else + return -EIO; + } +} + +static int +intel_dp_i2c_aux_ch(struct i2c_adapter *adapter, int mode, + uint8_t write_byte, uint8_t *read_byte) +{ + struct i2c_algo_dp_aux_data *algo_data = adapter->algo_data; + struct intel_dp *intel_dp = container_of(adapter, + struct intel_dp, + adapter); + uint16_t address = algo_data->address; + uint8_t msg[5]; + uint8_t reply[2]; + unsigned retry; + int msg_bytes; + int reply_bytes; + int ret; + + intel_dp_check_edp(intel_dp); + /* Set up the command byte */ + if (mode & MODE_I2C_READ) + msg[0] = AUX_I2C_READ << 4; + else + msg[0] = AUX_I2C_WRITE << 4; + + if (!(mode & MODE_I2C_STOP)) + msg[0] |= AUX_I2C_MOT << 4; + + msg[1] = address >> 8; + msg[2] = address; + + switch (mode) { + case MODE_I2C_WRITE: + msg[3] = 0; + msg[4] = write_byte; + msg_bytes = 5; + reply_bytes = 1; + break; + case MODE_I2C_READ: + msg[3] = 0; + msg_bytes = 4; + reply_bytes = 2; + break; + default: + msg_bytes = 3; + reply_bytes = 1; + break; + } + + for (retry = 0; retry < 5; retry++) { + ret = intel_dp_aux_ch(intel_dp, + msg, msg_bytes, + reply, reply_bytes); + if (ret < 0) { + DRM_DEBUG_KMS("aux_ch failed %d\n", ret); + return ret; + } + + switch (reply[0] & AUX_NATIVE_REPLY_MASK) { + case AUX_NATIVE_REPLY_ACK: + /* I2C-over-AUX Reply field is only valid + * when paired with AUX ACK. + */ + break; + case AUX_NATIVE_REPLY_NACK: + DRM_DEBUG_KMS("aux_ch native nack\n"); + return -EREMOTEIO; + case AUX_NATIVE_REPLY_DEFER: + udelay(100); + continue; + default: + DRM_ERROR("aux_ch invalid native reply 0x%02x\n", + reply[0]); + return -EREMOTEIO; + } + + switch (reply[0] & AUX_I2C_REPLY_MASK) { + case AUX_I2C_REPLY_ACK: + if (mode == MODE_I2C_READ) { + *read_byte = reply[1]; + } + return reply_bytes - 1; + case AUX_I2C_REPLY_NACK: + DRM_DEBUG_KMS("aux_i2c nack\n"); + return -EREMOTEIO; + case AUX_I2C_REPLY_DEFER: + DRM_DEBUG_KMS("aux_i2c defer\n"); + udelay(100); + break; + default: + DRM_ERROR("aux_i2c invalid reply 0x%02x\n", reply[0]); + return -EREMOTEIO; + } + } + + DRM_ERROR("too many retries, giving up\n"); + return -EREMOTEIO; +} + +static int +intel_dp_i2c_init(struct intel_dp *intel_dp, + struct intel_connector *intel_connector, const char *name) +{ + int ret; + + DRM_DEBUG_KMS("i2c_init %s\n", name); + intel_dp->algo.running = false; + intel_dp->algo.address = 0; + intel_dp->algo.aux_ch = intel_dp_i2c_aux_ch; + + memset(&intel_dp->adapter, '\0', sizeof(intel_dp->adapter)); + intel_dp->adapter.owner = THIS_MODULE; + intel_dp->adapter.class = I2C_CLASS_DDC; + strncpy(intel_dp->adapter.name, name, sizeof(intel_dp->adapter.name) - 1); + intel_dp->adapter.name[sizeof(intel_dp->adapter.name) - 1] = '\0'; + intel_dp->adapter.algo_data = &intel_dp->algo; + intel_dp->adapter.dev.parent = &intel_connector->base.kdev; + + ironlake_edp_panel_vdd_on(intel_dp); + ret = i2c_dp_aux_add_bus(&intel_dp->adapter); + ironlake_edp_panel_vdd_off(intel_dp, false); + return ret; +} + +bool +intel_dp_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + 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; + int bpp, mode_rate; + static int bws[2] = { DP_LINK_BW_1_62, DP_LINK_BW_2_7 }; + + if (is_edp(intel_dp) && intel_connector->panel.fixed_mode) { + intel_fixed_panel_mode(intel_connector->panel.fixed_mode, + adjusted_mode); + intel_pch_panel_fitting(dev, + intel_connector->panel.fitting_mode, + mode, adjusted_mode); + } + + if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) + return false; + + DRM_DEBUG_KMS("DP link computation with max lane count %i " + "max bw %02x pixel clock %iKHz\n", + max_lane_count, bws[max_clock], adjusted_mode->clock); + + if (!intel_dp_adjust_dithering(intel_dp, adjusted_mode, true)) + return false; + + bpp = adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC ? 18 : 24; + mode_rate = intel_dp_link_required(adjusted_mode->clock, bpp); + + for (clock = 0; clock <= max_clock; clock++) { + for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { + int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count); + + if (mode_rate <= link_avail) { + intel_dp->link_bw = bws[clock]; + intel_dp->lane_count = lane_count; + adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw); + DRM_DEBUG_KMS("DP link bw %02x lane " + "count %d clock %d bpp %d\n", + intel_dp->link_bw, intel_dp->lane_count, + adjusted_mode->clock, bpp); + DRM_DEBUG_KMS("DP link bw required %i available %i\n", + mode_rate, link_avail); + return true; + } + } + } + + return false; +} + +struct intel_dp_m_n { + uint32_t tu; + uint32_t gmch_m; + uint32_t gmch_n; + uint32_t link_m; + uint32_t link_n; +}; + +static void +intel_reduce_ratio(uint32_t *num, uint32_t *den) +{ + while (*num > 0xffffff || *den > 0xffffff) { + *num >>= 1; + *den >>= 1; + } +} + +static void +intel_dp_compute_m_n(int bpp, + int nlanes, + int pixel_clock, + int link_clock, + struct intel_dp_m_n *m_n) +{ + m_n->tu = 64; + m_n->gmch_m = (pixel_clock * bpp) >> 3; + m_n->gmch_n = link_clock * nlanes; + intel_reduce_ratio(&m_n->gmch_m, &m_n->gmch_n); + m_n->link_m = pixel_clock; + m_n->link_n = link_clock; + intel_reduce_ratio(&m_n->link_m, &m_n->link_n); +} + +void +intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + struct intel_dp *intel_dp; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int lane_count = 4; + struct intel_dp_m_n m_n; + int pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + /* + * Find the lane count in the intel_encoder private + */ + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + intel_dp = enc_to_intel_dp(&intel_encoder->base); + + if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_EDP) + { + lane_count = intel_dp->lane_count; + break; + } + } + + /* + * Compute the GMCH and Link ratios. The '3' here is + * the number of bytes_per_pixel post-LUT, which we always + * set up for 8-bits of R/G/B, or 3 bytes total. + */ + intel_dp_compute_m_n(intel_crtc->bpp, lane_count, + mode->clock, adjusted_mode->clock, &m_n); + + if (IS_HASWELL(dev)) { + I915_WRITE(PIPE_DATA_M1(cpu_transcoder), + TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(cpu_transcoder), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(cpu_transcoder), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(cpu_transcoder), m_n.link_n); + } else if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(TRANSDATA_M1(pipe), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(TRANSDATA_N1(pipe), m_n.gmch_n); + I915_WRITE(TRANSDPLINK_M1(pipe), m_n.link_m); + I915_WRITE(TRANSDPLINK_N1(pipe), m_n.link_n); + } else if (IS_VALLEYVIEW(dev)) { + I915_WRITE(PIPE_DATA_M1(pipe), TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_DATA_N1(pipe), m_n.gmch_n); + I915_WRITE(PIPE_LINK_M1(pipe), m_n.link_m); + I915_WRITE(PIPE_LINK_N1(pipe), m_n.link_n); + } else { + I915_WRITE(PIPE_GMCH_DATA_M(pipe), + TU_SIZE(m_n.tu) | m_n.gmch_m); + I915_WRITE(PIPE_GMCH_DATA_N(pipe), m_n.gmch_n); + I915_WRITE(PIPE_DP_LINK_M(pipe), m_n.link_m); + I915_WRITE(PIPE_DP_LINK_N(pipe), m_n.link_n); + } +} + +void intel_dp_init_link_config(struct intel_dp *intel_dp) +{ + memset(intel_dp->link_configuration, 0, DP_LINK_CONFIGURATION_SIZE); + intel_dp->link_configuration[0] = intel_dp->link_bw; + intel_dp->link_configuration[1] = intel_dp->lane_count; + intel_dp->link_configuration[8] = DP_SET_ANSI_8B10B; + /* + * Check for DPCD version > 1.1 and enhanced framing support + */ + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && + (intel_dp->dpcd[DP_MAX_LANE_COUNT] & DP_ENHANCED_FRAME_CAP)) { + intel_dp->link_configuration[1] |= DP_LANE_COUNT_ENHANCED_FRAME_EN; + } +} + +static void +intel_dp_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + + /* + * There are four kinds of DP registers: + * + * IBX PCH + * SNB CPU + * IVB CPU + * CPT PCH + * + * IBX PCH and CPU are the same for almost everything, + * except that the CPU DP PLL is configured in this + * register + * + * CPT PCH is quite different, having many bits moved + * to the TRANS_DP_CTL register instead. That + * configuration happens (oddly) in ironlake_pch_enable + */ + + /* Preserve the BIOS-computed detected bit. This is + * supposed to be read-only. + */ + intel_dp->DP = I915_READ(intel_dp->output_reg) & DP_DETECTED; + + /* Handle DP bits in common between all three register formats */ + intel_dp->DP |= DP_VOLTAGE_0_4 | DP_PRE_EMPHASIS_0; + + switch (intel_dp->lane_count) { + case 1: + intel_dp->DP |= DP_PORT_WIDTH_1; + break; + case 2: + intel_dp->DP |= DP_PORT_WIDTH_2; + break; + case 4: + intel_dp->DP |= DP_PORT_WIDTH_4; + break; + } + if (intel_dp->has_audio) { + DRM_DEBUG_DRIVER("Enabling DP audio on pipe %c\n", + pipe_name(intel_crtc->pipe)); + intel_dp->DP |= DP_AUDIO_OUTPUT_ENABLE; + intel_write_eld(encoder, adjusted_mode); + } + + intel_dp_init_link_config(intel_dp); + + /* Split out the IBX/CPU vs CPT settings */ + + if (is_cpu_edp(intel_dp) && IS_GEN7(dev) && !IS_VALLEYVIEW(dev)) { + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + intel_dp->DP |= DP_SYNC_HS_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + intel_dp->DP |= DP_SYNC_VS_HIGH; + intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT; + + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + intel_dp->DP |= DP_ENHANCED_FRAMING; + + intel_dp->DP |= intel_crtc->pipe << 29; + + /* don't miss out required setting for eDP */ + if (adjusted_mode->clock < 200000) + intel_dp->DP |= DP_PLL_FREQ_160MHZ; + else + intel_dp->DP |= DP_PLL_FREQ_270MHZ; + } else if (!HAS_PCH_CPT(dev) || is_cpu_edp(intel_dp)) { + intel_dp->DP |= intel_dp->color_range; + + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + intel_dp->DP |= DP_SYNC_HS_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + intel_dp->DP |= DP_SYNC_VS_HIGH; + intel_dp->DP |= DP_LINK_TRAIN_OFF; + + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + intel_dp->DP |= DP_ENHANCED_FRAMING; + + if (intel_crtc->pipe == 1) + intel_dp->DP |= DP_PIPEB_SELECT; + + if (is_cpu_edp(intel_dp)) { + /* don't miss out required setting for eDP */ + if (adjusted_mode->clock < 200000) + intel_dp->DP |= DP_PLL_FREQ_160MHZ; + else + intel_dp->DP |= DP_PLL_FREQ_270MHZ; + } + } else { + intel_dp->DP |= DP_LINK_TRAIN_OFF_CPT; + } +} + +#define IDLE_ON_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | 0 | PP_SEQUENCE_STATE_MASK) +#define IDLE_ON_VALUE (PP_ON | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_ON_IDLE) + +#define IDLE_OFF_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | 0 | PP_SEQUENCE_STATE_MASK) +#define IDLE_OFF_VALUE (0 | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_OFF_IDLE) + +#define IDLE_CYCLE_MASK (PP_ON | 0 | PP_SEQUENCE_MASK | PP_CYCLE_DELAY_ACTIVE | PP_SEQUENCE_STATE_MASK) +#define IDLE_CYCLE_VALUE (0 | 0 | PP_SEQUENCE_NONE | 0 | PP_SEQUENCE_STATE_OFF_IDLE) + +static void ironlake_wait_panel_status(struct intel_dp *intel_dp, + u32 mask, + u32 value) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + + DRM_DEBUG_KMS("mask %08x value %08x status %08x control %08x\n", + mask, value, + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + + if (_wait_for((I915_READ(PCH_PP_STATUS) & mask) == value, 5000, 10)) { + DRM_ERROR("Panel status timeout: status %08x control %08x\n", + I915_READ(PCH_PP_STATUS), + I915_READ(PCH_PP_CONTROL)); + } +} + +static void ironlake_wait_panel_on(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power on\n"); + ironlake_wait_panel_status(intel_dp, IDLE_ON_MASK, IDLE_ON_VALUE); +} + +static void ironlake_wait_panel_off(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power off time\n"); + ironlake_wait_panel_status(intel_dp, IDLE_OFF_MASK, IDLE_OFF_VALUE); +} + +static void ironlake_wait_panel_power_cycle(struct intel_dp *intel_dp) +{ + DRM_DEBUG_KMS("Wait for panel power cycle\n"); + ironlake_wait_panel_status(intel_dp, IDLE_CYCLE_MASK, IDLE_CYCLE_VALUE); +} + + +/* Read the current pp_control value, unlocking the register if it + * is locked + */ + +static u32 ironlake_get_pp_control(struct drm_i915_private *dev_priv) +{ + u32 control = I915_READ(PCH_PP_CONTROL); + + control &= ~PANEL_UNLOCK_MASK; + control |= PANEL_UNLOCK_REGS; + return control; +} + +void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + DRM_DEBUG_KMS("Turn eDP VDD on\n"); + + WARN(intel_dp->want_panel_vdd, + "eDP VDD already requested on\n"); + + intel_dp->want_panel_vdd = true; + + if (ironlake_edp_have_panel_vdd(intel_dp)) { + DRM_DEBUG_KMS("eDP VDD already on\n"); + return; + } + + if (!ironlake_edp_have_panel_power(intel_dp)) + ironlake_wait_panel_power_cycle(intel_dp); + + pp = ironlake_get_pp_control(dev_priv); + pp |= EDP_FORCE_VDD; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + DRM_DEBUG_KMS("PCH_PP_STATUS: 0x%08x PCH_PP_CONTROL: 0x%08x\n", + I915_READ(PCH_PP_STATUS), I915_READ(PCH_PP_CONTROL)); + + /* + * If the panel wasn't on, delay before accessing aux channel + */ + if (!ironlake_edp_have_panel_power(intel_dp)) { + DRM_DEBUG_KMS("eDP was not running\n"); + msleep(intel_dp->panel_power_up_delay); + } +} + +static void ironlake_panel_vdd_off_sync(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!intel_dp->want_panel_vdd && ironlake_edp_have_panel_vdd(intel_dp)) { + pp = ironlake_get_pp_control(dev_priv); + pp &= ~EDP_FORCE_VDD; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + /* Make sure sequencer is idle before allowing subsequent activity */ + DRM_DEBUG_KMS("PCH_PP_STATUS: 0x%08x PCH_PP_CONTROL: 0x%08x\n", + I915_READ(PCH_PP_STATUS), I915_READ(PCH_PP_CONTROL)); + + msleep(intel_dp->panel_power_down_delay); + } +} + +static void ironlake_panel_vdd_work(struct work_struct *__work) +{ + struct intel_dp *intel_dp = container_of(to_delayed_work(__work), + struct intel_dp, panel_vdd_work); + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + mutex_lock(&dev->mode_config.mutex); + ironlake_panel_vdd_off_sync(intel_dp); + mutex_unlock(&dev->mode_config.mutex); +} + +void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) +{ + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP VDD off %d\n", intel_dp->want_panel_vdd); + WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on"); + + intel_dp->want_panel_vdd = false; + + if (sync) { + ironlake_panel_vdd_off_sync(intel_dp); + } else { + /* + * Queue the timer to fire a long + * time from now (relative to the power down delay) + * to keep the panel power up across a sequence of operations + */ + schedule_delayed_work(&intel_dp->panel_vdd_work, + msecs_to_jiffies(intel_dp->panel_power_cycle_delay * 5)); + } +} + +void ironlake_edp_panel_on(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP power on\n"); + + if (ironlake_edp_have_panel_power(intel_dp)) { + DRM_DEBUG_KMS("eDP power already on\n"); + return; + } + + ironlake_wait_panel_power_cycle(intel_dp); + + pp = ironlake_get_pp_control(dev_priv); + if (IS_GEN5(dev)) { + /* ILK workaround: disable reset around power sequence */ + pp &= ~PANEL_POWER_RESET; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + } + + pp |= POWER_TARGET_ON; + if (!IS_GEN5(dev)) + pp |= PANEL_POWER_RESET; + + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + ironlake_wait_panel_on(intel_dp); + + if (IS_GEN5(dev)) { + pp |= PANEL_POWER_RESET; /* restore panel reset bit */ + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + } +} + +void ironlake_edp_panel_off(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("Turn eDP power off\n"); + + WARN(!intel_dp->want_panel_vdd, "Need VDD to turn off panel\n"); + + pp = ironlake_get_pp_control(dev_priv); + /* We need to switch off panel power _and_ force vdd, for otherwise some + * panels get very unhappy and cease to work. */ + pp &= ~(POWER_TARGET_ON | EDP_FORCE_VDD | PANEL_POWER_RESET | EDP_BLC_ENABLE); + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + intel_dp->want_panel_vdd = false; + + ironlake_wait_panel_off(intel_dp); +} + +void ironlake_edp_backlight_on(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe = to_intel_crtc(intel_dig_port->base.base.crtc)->pipe; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + DRM_DEBUG_KMS("\n"); + /* + * If we enable the backlight right away following a panel power + * on, we may see slight flicker as the panel syncs with the eDP + * link. So delay a bit to make sure the image is solid before + * allowing it to appear. + */ + msleep(intel_dp->backlight_on_delay); + pp = ironlake_get_pp_control(dev_priv); + pp |= EDP_BLC_ENABLE; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + + intel_panel_enable_backlight(dev, pipe); +} + +void ironlake_edp_backlight_off(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pp; + + if (!is_edp(intel_dp)) + return; + + intel_panel_disable_backlight(dev); + + DRM_DEBUG_KMS("\n"); + pp = ironlake_get_pp_control(dev_priv); + pp &= ~EDP_BLC_ENABLE; + I915_WRITE(PCH_PP_CONTROL, pp); + POSTING_READ(PCH_PP_CONTROL); + msleep(intel_dp->backlight_off_delay); +} + +static void ironlake_edp_pll_on(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + assert_pipe_disabled(dev_priv, + to_intel_crtc(crtc)->pipe); + + DRM_DEBUG_KMS("\n"); + dpa_ctl = I915_READ(DP_A); + WARN(dpa_ctl & DP_PLL_ENABLE, "dp pll on, should be off\n"); + WARN(dpa_ctl & DP_PORT_EN, "dp port still on, should be off\n"); + + /* We don't adjust intel_dp->DP while tearing down the link, to + * facilitate link retraining (e.g. after hotplug). Hence clear all + * enable bits here to ensure that we don't enable too much. */ + intel_dp->DP &= ~(DP_PORT_EN | DP_AUDIO_OUTPUT_ENABLE); + intel_dp->DP |= DP_PLL_ENABLE; + I915_WRITE(DP_A, intel_dp->DP); + POSTING_READ(DP_A); + udelay(200); +} + +static void ironlake_edp_pll_off(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpa_ctl; + + assert_pipe_disabled(dev_priv, + to_intel_crtc(crtc)->pipe); + + dpa_ctl = I915_READ(DP_A); + WARN((dpa_ctl & DP_PLL_ENABLE) == 0, + "dp pll off, should be on\n"); + WARN(dpa_ctl & DP_PORT_EN, "dp port still on, should be off\n"); + + /* We can't rely on the value tracked for the DP register in + * intel_dp->DP because link_down must not change that (otherwise link + * re-training will fail. */ + dpa_ctl &= ~DP_PLL_ENABLE; + I915_WRITE(DP_A, dpa_ctl); + POSTING_READ(DP_A); + udelay(200); +} + +/* If the sink supports it, try to set the power state appropriately */ +void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode) +{ + int ret, i; + + /* Should have a valid DPCD by this point */ + if (intel_dp->dpcd[DP_DPCD_REV] < 0x11) + return; + + if (mode != DRM_MODE_DPMS_ON) { + ret = intel_dp_aux_native_write_1(intel_dp, DP_SET_POWER, + DP_SET_POWER_D3); + if (ret != 1) + DRM_DEBUG_DRIVER("failed to write sink power state\n"); + } else { + /* + * When turning on, we need to retry for 1ms to give the sink + * time to wake up. + */ + for (i = 0; i < 3; i++) { + ret = intel_dp_aux_native_write_1(intel_dp, + DP_SET_POWER, + DP_SET_POWER_D0); + if (ret == 1) + break; + msleep(1); + } + } +} + +static bool intel_dp_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ(intel_dp->output_reg); + + if (!(tmp & DP_PORT_EN)) + return false; + + if (is_cpu_edp(intel_dp) && IS_GEN7(dev)) { + *pipe = PORT_TO_PIPE_CPT(tmp); + } else if (!HAS_PCH_CPT(dev) || is_cpu_edp(intel_dp)) { + *pipe = PORT_TO_PIPE(tmp); + } else { + u32 trans_sel; + u32 trans_dp; + int i; + + switch (intel_dp->output_reg) { + case PCH_DP_B: + trans_sel = TRANS_DP_PORT_SEL_B; + break; + case PCH_DP_C: + trans_sel = TRANS_DP_PORT_SEL_C; + break; + case PCH_DP_D: + trans_sel = TRANS_DP_PORT_SEL_D; + break; + default: + return true; + } + + for_each_pipe(i) { + trans_dp = I915_READ(TRANS_DP_CTL(i)); + if ((trans_dp & TRANS_DP_PORT_SEL_MASK) == trans_sel) { + *pipe = i; + return true; + } + } + + DRM_DEBUG_KMS("No pipe for dp port 0x%x found\n", + intel_dp->output_reg); + } + + return true; +} + +static void intel_disable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + /* Make sure the panel is off before trying to change the mode. But also + * ensure that we have vdd while we switch off the panel. */ + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_backlight_off(intel_dp); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + ironlake_edp_panel_off(intel_dp); + + /* cpu edp my only be disable _after_ the cpu pipe/plane is disabled. */ + if (!is_cpu_edp(intel_dp)) + intel_dp_link_down(intel_dp); +} + +static void intel_post_disable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + if (is_cpu_edp(intel_dp)) { + intel_dp_link_down(intel_dp); + ironlake_edp_pll_off(intel_dp); + } +} + +static void intel_enable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dp_reg = I915_READ(intel_dp->output_reg); + + if (WARN_ON(dp_reg & DP_PORT_EN)) + return; + + ironlake_edp_panel_vdd_on(intel_dp); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + intel_dp_start_link_train(intel_dp); + ironlake_edp_panel_on(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, true); + intel_dp_complete_link_train(intel_dp); + ironlake_edp_backlight_on(intel_dp); +} + +static void intel_pre_enable_dp(struct intel_encoder *encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base); + + if (is_cpu_edp(intel_dp)) + ironlake_edp_pll_on(intel_dp); +} + +/* + * Native read with retry for link status and receiver capability reads for + * cases where the sink may still be asleep. + */ +static bool +intel_dp_aux_native_read_retry(struct intel_dp *intel_dp, uint16_t address, + uint8_t *recv, int recv_bytes) +{ + int ret, i; + + /* + * Sinks are *supposed* to come up within 1ms from an off state, + * but we're also supposed to retry 3 times per the spec. + */ + for (i = 0; i < 3; i++) { + ret = intel_dp_aux_native_read(intel_dp, address, recv, + recv_bytes); + if (ret == recv_bytes) + return true; + msleep(1); + } + + return false; +} + +/* + * Fetch AUX CH registers 0x202 - 0x207 which contain + * link status information + */ +static bool +intel_dp_get_link_status(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]) +{ + return intel_dp_aux_native_read_retry(intel_dp, + DP_LANE0_1_STATUS, + link_status, + DP_LINK_STATUS_SIZE); +} + +#if 0 +static char *voltage_names[] = { + "0.4V", "0.6V", "0.8V", "1.2V" +}; +static char *pre_emph_names[] = { + "0dB", "3.5dB", "6dB", "9.5dB" +}; +static char *link_train_names[] = { + "pattern 1", "pattern 2", "idle", "off" +}; +#endif + +/* + * These are source-specific values; current Intel hardware supports + * a maximum voltage of 800mV and a maximum pre-emphasis of 6dB + */ + +static uint8_t +intel_dp_voltage_max(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + if (IS_GEN7(dev) && is_cpu_edp(intel_dp)) + return DP_TRAIN_VOLTAGE_SWING_800; + else if (HAS_PCH_CPT(dev) && !is_cpu_edp(intel_dp)) + return DP_TRAIN_VOLTAGE_SWING_1200; + else + return DP_TRAIN_VOLTAGE_SWING_800; +} + +static uint8_t +intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + + if (IS_HASWELL(dev)) { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_9_5; + case DP_TRAIN_VOLTAGE_SWING_600: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + case DP_TRAIN_VOLTAGE_SWING_1200: + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_600: + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } else { + switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_600: + return DP_TRAIN_PRE_EMPHASIS_6; + case DP_TRAIN_VOLTAGE_SWING_800: + return DP_TRAIN_PRE_EMPHASIS_3_5; + case DP_TRAIN_VOLTAGE_SWING_1200: + default: + return DP_TRAIN_PRE_EMPHASIS_0; + } + } +} + +static void +intel_get_adjust_train(struct intel_dp *intel_dp, uint8_t link_status[DP_LINK_STATUS_SIZE]) +{ + uint8_t v = 0; + uint8_t p = 0; + int lane; + uint8_t voltage_max; + uint8_t preemph_max; + + for (lane = 0; lane < intel_dp->lane_count; lane++) { + uint8_t this_v = drm_dp_get_adjust_request_voltage(link_status, lane); + uint8_t this_p = drm_dp_get_adjust_request_pre_emphasis(link_status, lane); + + if (this_v > v) + v = this_v; + if (this_p > p) + p = this_p; + } + + voltage_max = intel_dp_voltage_max(intel_dp); + if (v >= voltage_max) + v = voltage_max | DP_TRAIN_MAX_SWING_REACHED; + + preemph_max = intel_dp_pre_emphasis_max(intel_dp, v); + if (p >= preemph_max) + p = preemph_max | DP_TRAIN_MAX_PRE_EMPHASIS_REACHED; + + for (lane = 0; lane < 4; lane++) + intel_dp->train_set[lane] = v | p; +} + +static uint32_t +intel_dp_signal_levels(uint8_t train_set) +{ + uint32_t signal_levels = 0; + + switch (train_set & DP_TRAIN_VOLTAGE_SWING_MASK) { + case DP_TRAIN_VOLTAGE_SWING_400: + default: + signal_levels |= DP_VOLTAGE_0_4; + break; + case DP_TRAIN_VOLTAGE_SWING_600: + signal_levels |= DP_VOLTAGE_0_6; + break; + case DP_TRAIN_VOLTAGE_SWING_800: + signal_levels |= DP_VOLTAGE_0_8; + break; + case DP_TRAIN_VOLTAGE_SWING_1200: + signal_levels |= DP_VOLTAGE_1_2; + break; + } + switch (train_set & DP_TRAIN_PRE_EMPHASIS_MASK) { + case DP_TRAIN_PRE_EMPHASIS_0: + default: + signal_levels |= DP_PRE_EMPHASIS_0; + break; + case DP_TRAIN_PRE_EMPHASIS_3_5: + signal_levels |= DP_PRE_EMPHASIS_3_5; + break; + case DP_TRAIN_PRE_EMPHASIS_6: + signal_levels |= DP_PRE_EMPHASIS_6; + break; + case DP_TRAIN_PRE_EMPHASIS_9_5: + signal_levels |= DP_PRE_EMPHASIS_9_5; + break; + } + return signal_levels; +} + +/* Gen6's DP voltage swing and pre-emphasis control */ +static uint32_t +intel_gen6_edp_signal_levels(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_400_600MV_0DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_400MV_3_5DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_6: + return EDP_LINK_TRAIN_400_600MV_6DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_600_800MV_3_5DB_SNB_B; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + case DP_TRAIN_VOLTAGE_SWING_1200 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_800_1200MV_0DB_SNB_B; + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return EDP_LINK_TRAIN_400_600MV_0DB_SNB_B; + } +} + +/* Gen7's DP voltage swing and pre-emphasis control */ +static uint32_t +intel_gen7_edp_signal_levels(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_400MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_400MV_3_5DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + return EDP_LINK_TRAIN_400MV_6DB_IVB; + + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_600MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_600MV_3_5DB_IVB; + + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + return EDP_LINK_TRAIN_800MV_0DB_IVB; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return EDP_LINK_TRAIN_800MV_3_5DB_IVB; + + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return EDP_LINK_TRAIN_500MV_0DB_IVB; + } +} + +/* Gen7.5's (HSW) DP voltage swing and pre-emphasis control */ +static uint32_t +intel_dp_signal_levels_hsw(uint8_t train_set) +{ + int signal_levels = train_set & (DP_TRAIN_VOLTAGE_SWING_MASK | + DP_TRAIN_PRE_EMPHASIS_MASK); + switch (signal_levels) { + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_400MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_400MV_3_5DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_6: + return DDI_BUF_EMP_400MV_6DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_400 | DP_TRAIN_PRE_EMPHASIS_9_5: + return DDI_BUF_EMP_400MV_9_5DB_HSW; + + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_600MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_600MV_3_5DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_600 | DP_TRAIN_PRE_EMPHASIS_6: + return DDI_BUF_EMP_600MV_6DB_HSW; + + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_0: + return DDI_BUF_EMP_800MV_0DB_HSW; + case DP_TRAIN_VOLTAGE_SWING_800 | DP_TRAIN_PRE_EMPHASIS_3_5: + return DDI_BUF_EMP_800MV_3_5DB_HSW; + default: + DRM_DEBUG_KMS("Unsupported voltage swing/pre-emphasis level:" + "0x%x\n", signal_levels); + return DDI_BUF_EMP_400MV_0DB_HSW; + } +} + +static bool +intel_dp_set_link_train(struct intel_dp *intel_dp, + uint32_t dp_reg_value, + uint8_t dp_train_pat) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_dig_port->port; + int ret; + uint32_t temp; + + if (IS_HASWELL(dev)) { + temp = I915_READ(DP_TP_CTL(port)); + + if (dp_train_pat & DP_LINK_SCRAMBLING_DISABLE) + temp |= DP_TP_CTL_SCRAMBLE_DISABLE; + else + temp &= ~DP_TP_CTL_SCRAMBLE_DISABLE; + + temp &= ~DP_TP_CTL_LINK_TRAIN_MASK; + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + + if (port != PORT_A) { + temp |= DP_TP_CTL_LINK_TRAIN_IDLE; + I915_WRITE(DP_TP_CTL(port), temp); + + if (wait_for((I915_READ(DP_TP_STATUS(port)) & + DP_TP_STATUS_IDLE_DONE), 1)) + DRM_ERROR("Timed out waiting for DP idle patterns\n"); + + temp &= ~DP_TP_CTL_LINK_TRAIN_MASK; + } + + temp |= DP_TP_CTL_LINK_TRAIN_NORMAL; + + break; + case DP_TRAINING_PATTERN_1: + temp |= DP_TP_CTL_LINK_TRAIN_PAT1; + break; + case DP_TRAINING_PATTERN_2: + temp |= DP_TP_CTL_LINK_TRAIN_PAT2; + break; + case DP_TRAINING_PATTERN_3: + temp |= DP_TP_CTL_LINK_TRAIN_PAT3; + break; + } + I915_WRITE(DP_TP_CTL(port), temp); + + } else if (HAS_PCH_CPT(dev) && + (IS_GEN7(dev) || !is_cpu_edp(intel_dp))) { + dp_reg_value &= ~DP_LINK_TRAIN_MASK_CPT; + + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + dp_reg_value |= DP_LINK_TRAIN_OFF_CPT; + break; + case DP_TRAINING_PATTERN_1: + dp_reg_value |= DP_LINK_TRAIN_PAT_1_CPT; + break; + case DP_TRAINING_PATTERN_2: + dp_reg_value |= DP_LINK_TRAIN_PAT_2_CPT; + break; + case DP_TRAINING_PATTERN_3: + DRM_ERROR("DP training pattern 3 not supported\n"); + dp_reg_value |= DP_LINK_TRAIN_PAT_2_CPT; + break; + } + + } else { + dp_reg_value &= ~DP_LINK_TRAIN_MASK; + + switch (dp_train_pat & DP_TRAINING_PATTERN_MASK) { + case DP_TRAINING_PATTERN_DISABLE: + dp_reg_value |= DP_LINK_TRAIN_OFF; + break; + case DP_TRAINING_PATTERN_1: + dp_reg_value |= DP_LINK_TRAIN_PAT_1; + break; + case DP_TRAINING_PATTERN_2: + dp_reg_value |= DP_LINK_TRAIN_PAT_2; + break; + case DP_TRAINING_PATTERN_3: + DRM_ERROR("DP training pattern 3 not supported\n"); + dp_reg_value |= DP_LINK_TRAIN_PAT_2; + break; + } + } + + I915_WRITE(intel_dp->output_reg, dp_reg_value); + POSTING_READ(intel_dp->output_reg); + + intel_dp_aux_native_write_1(intel_dp, + DP_TRAINING_PATTERN_SET, + dp_train_pat); + + if ((dp_train_pat & DP_TRAINING_PATTERN_MASK) != + DP_TRAINING_PATTERN_DISABLE) { + ret = intel_dp_aux_native_write(intel_dp, + DP_TRAINING_LANE0_SET, + intel_dp->train_set, + intel_dp->lane_count); + if (ret != intel_dp->lane_count) + return false; + } + + return true; +} + +/* Enable corresponding port and start training pattern 1 */ +void +intel_dp_start_link_train(struct intel_dp *intel_dp) +{ + struct drm_encoder *encoder = &dp_to_dig_port(intel_dp)->base.base; + struct drm_device *dev = encoder->dev; + int i; + uint8_t voltage; + bool clock_recovery = false; + int voltage_tries, loop_tries; + uint32_t DP = intel_dp->DP; + + if (IS_HASWELL(dev)) + intel_ddi_prepare_link_retrain(encoder); + + /* Write the link configuration data */ + intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, + intel_dp->link_configuration, + DP_LINK_CONFIGURATION_SIZE); + + DP |= DP_PORT_EN; + + memset(intel_dp->train_set, 0, 4); + voltage = 0xff; + voltage_tries = 0; + loop_tries = 0; + clock_recovery = false; + for (;;) { + /* Use intel_dp->train_set[0] to set the voltage and pre emphasis values */ + uint8_t link_status[DP_LINK_STATUS_SIZE]; + uint32_t signal_levels; + + if (IS_HASWELL(dev)) { + signal_levels = intel_dp_signal_levels_hsw( + intel_dp->train_set[0]); + DP = (DP & ~DDI_BUF_EMP_MASK) | signal_levels; + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + signal_levels = intel_gen7_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_IVB) | signal_levels; + } else if (IS_GEN6(dev) && is_cpu_edp(intel_dp)) { + signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; + } else { + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; + } + DRM_DEBUG_KMS("training pattern 1 signal levels %08x\n", + signal_levels); + + /* Set training pattern 1 */ + if (!intel_dp_set_link_train(intel_dp, DP, + DP_TRAINING_PATTERN_1 | + DP_LINK_SCRAMBLING_DISABLE)) + break; + + drm_dp_link_train_clock_recovery_delay(intel_dp->dpcd); + if (!intel_dp_get_link_status(intel_dp, link_status)) { + DRM_ERROR("failed to get link status\n"); + break; + } + + if (drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { + DRM_DEBUG_KMS("clock recovery OK\n"); + clock_recovery = true; + break; + } + + /* Check to see if we've tried the max voltage */ + for (i = 0; i < intel_dp->lane_count; i++) + if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) + break; + if (i == intel_dp->lane_count && voltage_tries == 5) { + ++loop_tries; + if (loop_tries == 5) { + DRM_DEBUG_KMS("too many full retries, give up\n"); + break; + } + memset(intel_dp->train_set, 0, 4); + voltage_tries = 0; + continue; + } + + /* Check to see if we've tried the same voltage 5 times */ + if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { + ++voltage_tries; + if (voltage_tries == 5) { + DRM_DEBUG_KMS("too many voltage retries, give up\n"); + break; + } + } else + voltage_tries = 0; + voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; + + /* Compute new intel_dp->train_set as requested by target */ + intel_get_adjust_train(intel_dp, link_status); + } + + intel_dp->DP = DP; +} + +void +intel_dp_complete_link_train(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + bool channel_eq = false; + int tries, cr_tries; + uint32_t DP = intel_dp->DP; + + /* channel equalization */ + tries = 0; + cr_tries = 0; + channel_eq = false; + for (;;) { + /* Use intel_dp->train_set[0] to set the voltage and pre emphasis values */ + uint32_t signal_levels; + uint8_t link_status[DP_LINK_STATUS_SIZE]; + + if (cr_tries > 5) { + DRM_ERROR("failed to train DP, aborting\n"); + intel_dp_link_down(intel_dp); + break; + } + + if (IS_HASWELL(dev)) { + signal_levels = intel_dp_signal_levels_hsw(intel_dp->train_set[0]); + DP = (DP & ~DDI_BUF_EMP_MASK) | signal_levels; + } else if (IS_GEN7(dev) && is_cpu_edp(intel_dp) && !IS_VALLEYVIEW(dev)) { + signal_levels = intel_gen7_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_IVB) | signal_levels; + } else if (IS_GEN6(dev) && is_cpu_edp(intel_dp)) { + signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; + } else { + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0]); + DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; + } + + /* channel eq pattern */ + if (!intel_dp_set_link_train(intel_dp, DP, + DP_TRAINING_PATTERN_2 | + DP_LINK_SCRAMBLING_DISABLE)) + break; + + drm_dp_link_train_channel_eq_delay(intel_dp->dpcd); + if (!intel_dp_get_link_status(intel_dp, link_status)) + break; + + /* Make sure clock is still ok */ + if (!drm_dp_clock_recovery_ok(link_status, intel_dp->lane_count)) { + intel_dp_start_link_train(intel_dp); + cr_tries++; + continue; + } + + if (drm_dp_channel_eq_ok(link_status, intel_dp->lane_count)) { + channel_eq = true; + break; + } + + /* Try 5 times, then try clock recovery if that fails */ + if (tries > 5) { + intel_dp_link_down(intel_dp); + intel_dp_start_link_train(intel_dp); + tries = 0; + cr_tries++; + continue; + } + + /* Compute new intel_dp->train_set as requested by target */ + intel_get_adjust_train(intel_dp, link_status); + ++tries; + } + + if (channel_eq) + DRM_DEBUG_KMS("Channel EQ done. DP Training successfull\n"); + + intel_dp_set_link_train(intel_dp, DP, DP_TRAINING_PATTERN_DISABLE); +} + +static void +intel_dp_link_down(struct intel_dp *intel_dp) +{ + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct drm_device *dev = intel_dig_port->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t DP = intel_dp->DP; + + /* + * DDI code has a strict mode set sequence and we should try to respect + * it, otherwise we might hang the machine in many different ways. So we + * really should be disabling the port only on a complete crtc_disable + * sequence. This function is just called under two conditions on DDI + * code: + * - Link train failed while doing crtc_enable, and on this case we + * really should respect the mode set sequence and wait for a + * crtc_disable. + * - Someone turned the monitor off and intel_dp_check_link_status + * called us. We don't need to disable the whole port on this case, so + * when someone turns the monitor on again, + * intel_ddi_prepare_link_retrain will take care of redoing the link + * train. + */ + if (IS_HASWELL(dev)) + return; + + if (WARN_ON((I915_READ(intel_dp->output_reg) & DP_PORT_EN) == 0)) + return; + + DRM_DEBUG_KMS("\n"); + + if (HAS_PCH_CPT(dev) && (IS_GEN7(dev) || !is_cpu_edp(intel_dp))) { + DP &= ~DP_LINK_TRAIN_MASK_CPT; + I915_WRITE(intel_dp->output_reg, DP | DP_LINK_TRAIN_PAT_IDLE_CPT); + } else { + DP &= ~DP_LINK_TRAIN_MASK; + I915_WRITE(intel_dp->output_reg, DP | DP_LINK_TRAIN_PAT_IDLE); + } + POSTING_READ(intel_dp->output_reg); + + msleep(17); + + if (HAS_PCH_IBX(dev) && + I915_READ(intel_dp->output_reg) & DP_PIPEB_SELECT) { + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + + /* Hardware workaround: leaving our transcoder select + * set to transcoder B while it's off will prevent the + * corresponding HDMI output on transcoder A. + * + * Combine this with another hardware workaround: + * transcoder select bit can only be cleared while the + * port is enabled. + */ + DP &= ~DP_PIPEB_SELECT; + I915_WRITE(intel_dp->output_reg, DP); + + /* Changes to enable or select take place the vblank + * after being written. + */ + if (crtc == NULL) { + /* We can arrive here never having been attached + * to a CRTC, for instance, due to inheriting + * random state from the BIOS. + * + * If the pipe is not running, play safe and + * wait for the clocks to stabilise before + * continuing. + */ + POSTING_READ(intel_dp->output_reg); + msleep(50); + } else + intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe); + } + + DP &= ~DP_AUDIO_OUTPUT_ENABLE; + I915_WRITE(intel_dp->output_reg, DP & ~DP_PORT_EN); + POSTING_READ(intel_dp->output_reg); + msleep(intel_dp->panel_power_down_delay); +} + +static bool +intel_dp_get_dpcd(struct intel_dp *intel_dp) +{ + if (intel_dp_aux_native_read_retry(intel_dp, 0x000, intel_dp->dpcd, + sizeof(intel_dp->dpcd)) == 0) + return false; /* aux transfer failed */ + + if (intel_dp->dpcd[DP_DPCD_REV] == 0) + return false; /* DPCD not present */ + + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & + DP_DWN_STRM_PORT_PRESENT)) + return true; /* native DP sink */ + + if (intel_dp->dpcd[DP_DPCD_REV] == 0x10) + return true; /* no per-port downstream info */ + + if (intel_dp_aux_native_read_retry(intel_dp, DP_DOWNSTREAM_PORT_0, + intel_dp->downstream_ports, + DP_MAX_DOWNSTREAM_PORTS) == 0) + return false; /* downstream port status fetch failed */ + + return true; +} + +static void +intel_dp_probe_oui(struct intel_dp *intel_dp) +{ + u8 buf[3]; + + if (!(intel_dp->dpcd[DP_DOWN_STREAM_PORT_COUNT] & DP_OUI_SUPPORT)) + return; + + ironlake_edp_panel_vdd_on(intel_dp); + + if (intel_dp_aux_native_read_retry(intel_dp, DP_SINK_OUI, buf, 3)) + DRM_DEBUG_KMS("Sink OUI: %02hx%02hx%02hx\n", + buf[0], buf[1], buf[2]); + + if (intel_dp_aux_native_read_retry(intel_dp, DP_BRANCH_OUI, buf, 3)) + DRM_DEBUG_KMS("Branch OUI: %02hx%02hx%02hx\n", + buf[0], buf[1], buf[2]); + + ironlake_edp_panel_vdd_off(intel_dp, false); +} + +static bool +intel_dp_get_sink_irq(struct intel_dp *intel_dp, u8 *sink_irq_vector) +{ + int ret; + + ret = intel_dp_aux_native_read_retry(intel_dp, + DP_DEVICE_SERVICE_IRQ_VECTOR, + sink_irq_vector, 1); + if (!ret) + return false; + + return true; +} + +static void +intel_dp_handle_test_request(struct intel_dp *intel_dp) +{ + /* NAK by default */ + intel_dp_aux_native_write_1(intel_dp, DP_TEST_RESPONSE, DP_TEST_NAK); +} + +/* + * According to DP spec + * 5.1.2: + * 1. Read DPCD + * 2. Configure link according to Receiver Capabilities + * 3. Use Link Training from 2.5.3.3 and 3.5.1.3 + * 4. Check link status on receipt of hot-plug interrupt + */ + +void +intel_dp_check_link_status(struct intel_dp *intel_dp) +{ + struct intel_encoder *intel_encoder = &dp_to_dig_port(intel_dp)->base; + u8 sink_irq_vector; + u8 link_status[DP_LINK_STATUS_SIZE]; + + if (!intel_encoder->connectors_active) + return; + + if (WARN_ON(!intel_encoder->base.crtc)) + return; + + /* Try to read receiver status if the link appears to be up */ + if (!intel_dp_get_link_status(intel_dp, link_status)) { + intel_dp_link_down(intel_dp); + return; + } + + /* Now read the DPCD to see if it's actually running */ + if (!intel_dp_get_dpcd(intel_dp)) { + intel_dp_link_down(intel_dp); + return; + } + + /* Try to read the source of the interrupt */ + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11 && + intel_dp_get_sink_irq(intel_dp, &sink_irq_vector)) { + /* Clear interrupt source */ + intel_dp_aux_native_write_1(intel_dp, + DP_DEVICE_SERVICE_IRQ_VECTOR, + sink_irq_vector); + + if (sink_irq_vector & DP_AUTOMATED_TEST_REQUEST) + intel_dp_handle_test_request(intel_dp); + if (sink_irq_vector & (DP_CP_IRQ | DP_SINK_SPECIFIC_IRQ)) + DRM_DEBUG_DRIVER("CP or sink specific irq unhandled\n"); + } + + if (!drm_dp_channel_eq_ok(link_status, intel_dp->lane_count)) { + DRM_DEBUG_KMS("%s: channel EQ not ok, retraining\n", + drm_get_encoder_name(&intel_encoder->base)); + intel_dp_start_link_train(intel_dp); + intel_dp_complete_link_train(intel_dp); + } +} + +/* XXX this is probably wrong for multiple downstream ports */ +static enum drm_connector_status +intel_dp_detect_dpcd(struct intel_dp *intel_dp) +{ + uint8_t *dpcd = intel_dp->dpcd; + bool hpd; + uint8_t type; + + if (!intel_dp_get_dpcd(intel_dp)) + return connector_status_disconnected; + + /* if there's no downstream port, we're done */ + if (!(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT)) + return connector_status_connected; + + /* If we're HPD-aware, SINK_COUNT changes dynamically */ + hpd = !!(intel_dp->downstream_ports[0] & DP_DS_PORT_HPD); + if (hpd) { + uint8_t reg; + if (!intel_dp_aux_native_read_retry(intel_dp, DP_SINK_COUNT, + ®, 1)) + return connector_status_unknown; + return DP_GET_SINK_COUNT(reg) ? connector_status_connected + : connector_status_disconnected; + } + + /* If no HPD, poke DDC gently */ + if (drm_probe_ddc(&intel_dp->adapter)) + return connector_status_connected; + + /* Well we tried, say unknown for unreliable port types */ + type = intel_dp->downstream_ports[0] & DP_DS_PORT_TYPE_MASK; + if (type == DP_DS_PORT_TYPE_VGA || type == DP_DS_PORT_TYPE_NON_EDID) + return connector_status_unknown; + + /* Anything else is out of spec, warn and ignore */ + DRM_DEBUG_KMS("Broken DP branch device, ignoring\n"); + return connector_status_disconnected; +} + +static enum drm_connector_status +ironlake_dp_detect(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + enum drm_connector_status status; + + /* Can't disconnect eDP, but you can close the lid... */ + if (is_edp(intel_dp)) { + status = intel_panel_detect(dev); + if (status == connector_status_unknown) + status = connector_status_connected; + return status; + } + + return intel_dp_detect_dpcd(intel_dp); +} + +static enum drm_connector_status +g4x_dp_detect(struct intel_dp *intel_dp) +{ + struct drm_device *dev = intel_dp_to_dev(intel_dp); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t bit; + + switch (intel_dp->output_reg) { + case DP_B: + bit = DPB_HOTPLUG_LIVE_STATUS; + break; + case DP_C: + bit = DPC_HOTPLUG_LIVE_STATUS; + break; + case DP_D: + bit = DPD_HOTPLUG_LIVE_STATUS; + break; + default: + return connector_status_unknown; + } + + if ((I915_READ(PORT_HOTPLUG_STAT) & bit) == 0) + return connector_status_disconnected; + + return intel_dp_detect_dpcd(intel_dp); +} + +static struct edid * +intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + /* use cached edid if we have one */ + if (intel_connector->edid) { + struct edid *edid; + int size; + + /* invalid edid */ + if (IS_ERR(intel_connector->edid)) + return NULL; + + size = (intel_connector->edid->extensions + 1) * EDID_LENGTH; + edid = kmalloc(size, GFP_KERNEL); + if (!edid) + return NULL; + + memcpy(edid, intel_connector->edid, size); + return edid; + } + + return drm_get_edid(connector, adapter); +} + +static int +intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *adapter) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + /* use cached edid if we have one */ + if (intel_connector->edid) { + /* invalid edid */ + if (IS_ERR(intel_connector->edid)) + return 0; + + return intel_connector_update_modes(connector, + intel_connector->edid); + } + + return intel_ddc_get_modes(connector, adapter); +} + + +/** + * Uses CRT_HOTPLUG_EN and CRT_HOTPLUG_STAT to detect DP connection. + * + * \return true if DP port is connected. + * \return false if DP port is disconnected. + */ +static enum drm_connector_status +intel_dp_detect(struct drm_connector *connector, bool force) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp); + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = connector->dev; + enum drm_connector_status status; + struct edid *edid = NULL; + char dpcd_hex_dump[sizeof(intel_dp->dpcd) * 3]; + + intel_dp->has_audio = false; + + if (HAS_PCH_SPLIT(dev)) + status = ironlake_dp_detect(intel_dp); + else + status = g4x_dp_detect(intel_dp); + + hex_dump_to_buffer(intel_dp->dpcd, sizeof(intel_dp->dpcd), + 32, 1, dpcd_hex_dump, sizeof(dpcd_hex_dump), false); + DRM_DEBUG_KMS("DPCD: %s\n", dpcd_hex_dump); + + if (status != connector_status_connected) + return status; + + intel_dp_probe_oui(intel_dp); + + if (intel_dp->force_audio != HDMI_AUDIO_AUTO) { + intel_dp->has_audio = (intel_dp->force_audio == HDMI_AUDIO_ON); + } else { + edid = intel_dp_get_edid(connector, &intel_dp->adapter); + if (edid) { + intel_dp->has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + } + + if (intel_encoder->type != INTEL_OUTPUT_EDP) + intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; + return connector_status_connected; +} + +static int intel_dp_get_modes(struct drm_connector *connector) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_device *dev = connector->dev; + int ret; + + /* We should parse the EDID data and find out if it has an audio sink + */ + + ret = intel_dp_get_edid_modes(connector, &intel_dp->adapter); + if (ret) + return ret; + + /* if eDP has no EDID, fall back to fixed mode */ + if (is_edp(intel_dp) && intel_connector->panel.fixed_mode) { + struct drm_display_mode *mode; + mode = drm_mode_duplicate(dev, + intel_connector->panel.fixed_mode); + if (mode) { + drm_mode_probed_add(connector, mode); + return 1; + } + } + return 0; +} + +static bool +intel_dp_detect_audio(struct drm_connector *connector) +{ + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct edid *edid; + bool has_audio = false; + + edid = intel_dp_get_edid(connector, &intel_dp->adapter); + if (edid) { + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + + return has_audio; +} + +static int +intel_dp_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct intel_connector *intel_connector = to_intel_connector(connector); + struct intel_encoder *intel_encoder = intel_attached_encoder(connector); + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + int ret; + + ret = drm_connector_property_set_value(connector, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + int i = val; + bool has_audio; + + if (i == intel_dp->force_audio) + return 0; + + intel_dp->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_dp_detect_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (has_audio == intel_dp->has_audio) + return 0; + + intel_dp->has_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_dp->color_range) + return 0; + + intel_dp->color_range = val ? DP_COLOR_RANGE_16_235 : 0; + goto done; + } + + if (is_edp(intel_dp) && + property == connector->dev->mode_config.scaling_mode_property) { + if (val == DRM_MODE_SCALE_NONE) { + DRM_DEBUG_KMS("no scaling not supported\n"); + return -EINVAL; + } + + if (intel_connector->panel.fitting_mode == val) { + /* the eDP scaling property is not changed */ + return 0; + } + intel_connector->panel.fitting_mode = val; + + goto done; + } + + return -EINVAL; + +done: + if (intel_encoder->base.crtc) { + struct drm_crtc *crtc = intel_encoder->base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +} + +static void +intel_dp_destroy(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct intel_connector *intel_connector = to_intel_connector(connector); + + if (!IS_ERR_OR_NULL(intel_connector->edid)) + kfree(intel_connector->edid); + + if (is_edp(intel_dp)) { + intel_panel_destroy_backlight(dev); + intel_panel_fini(&intel_connector->panel); + } + + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +void intel_dp_encoder_destroy(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + struct intel_dp *intel_dp = &intel_dig_port->dp; + + i2c_del_adapter(&intel_dp->adapter); + drm_encoder_cleanup(encoder); + if (is_edp(intel_dp)) { + cancel_delayed_work_sync(&intel_dp->panel_vdd_work); + ironlake_panel_vdd_off_sync(intel_dp); + } + kfree(intel_dig_port); +} + +static const struct drm_encoder_helper_funcs intel_dp_helper_funcs = { + .mode_fixup = intel_dp_mode_fixup, + .mode_set = intel_dp_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_dp_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_dp_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_dp_set_property, + .destroy = intel_dp_destroy, +}; + +static const struct drm_connector_helper_funcs intel_dp_connector_helper_funcs = { + .get_modes = intel_dp_get_modes, + .mode_valid = intel_dp_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_dp_enc_funcs = { + .destroy = intel_dp_encoder_destroy, +}; + +static void +intel_dp_hot_plug(struct intel_encoder *intel_encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + + intel_dp_check_link_status(intel_dp); +} + +/* Return which DP Port should be selected for Transcoder DP control */ +int +intel_trans_dp_port_sel(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_encoder *intel_encoder; + struct intel_dp *intel_dp; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + intel_dp = enc_to_intel_dp(&intel_encoder->base); + + if (intel_encoder->type == INTEL_OUTPUT_DISPLAYPORT || + intel_encoder->type == INTEL_OUTPUT_EDP) + return intel_dp->output_reg; + } + + return -1; +} + +/* check the VBT to see whether the eDP is on DP-D port */ +bool intel_dpd_is_edp(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct child_device_config *p_child; + int i; + + if (!dev_priv->child_dev_num) + return false; + + for (i = 0; i < dev_priv->child_dev_num; i++) { + p_child = dev_priv->child_dev + i; + + if (p_child->dvo_port == PORT_IDPD && + p_child->device_type == DEVICE_TYPE_eDP) + return true; + } + return false; +} + +static void +intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + + intel_attach_force_audio_property(connector); + intel_attach_broadcast_rgb_property(connector); + + if (is_edp(intel_dp)) { + drm_mode_create_scaling_mode_property(connector->dev); + drm_connector_attach_property( + connector, + connector->dev->mode_config.scaling_mode_property, + DRM_MODE_SCALE_ASPECT); + intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + } +} + +static void +intel_dp_init_panel_power_sequencer(struct drm_device *dev, + struct intel_dp *intel_dp) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct edp_power_seq cur, vbt, spec, final; + u32 pp_on, pp_off, pp_div, pp; + + /* Workaround: Need to write PP_CONTROL with the unlock key as + * the very first thing. */ + pp = ironlake_get_pp_control(dev_priv); + I915_WRITE(PCH_PP_CONTROL, pp); + + pp_on = I915_READ(PCH_PP_ON_DELAYS); + pp_off = I915_READ(PCH_PP_OFF_DELAYS); + pp_div = I915_READ(PCH_PP_DIVISOR); + + /* Pull timing values out of registers */ + cur.t1_t3 = (pp_on & PANEL_POWER_UP_DELAY_MASK) >> + PANEL_POWER_UP_DELAY_SHIFT; + + cur.t8 = (pp_on & PANEL_LIGHT_ON_DELAY_MASK) >> + PANEL_LIGHT_ON_DELAY_SHIFT; + + cur.t9 = (pp_off & PANEL_LIGHT_OFF_DELAY_MASK) >> + PANEL_LIGHT_OFF_DELAY_SHIFT; + + cur.t10 = (pp_off & PANEL_POWER_DOWN_DELAY_MASK) >> + PANEL_POWER_DOWN_DELAY_SHIFT; + + cur.t11_t12 = ((pp_div & PANEL_POWER_CYCLE_DELAY_MASK) >> + PANEL_POWER_CYCLE_DELAY_SHIFT) * 1000; + + DRM_DEBUG_KMS("cur t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n", + cur.t1_t3, cur.t8, cur.t9, cur.t10, cur.t11_t12); + + vbt = dev_priv->edp.pps; + + /* Upper limits from eDP 1.3 spec. Note that we use the clunky units of + * our hw here, which are all in 100usec. */ + spec.t1_t3 = 210 * 10; + spec.t8 = 50 * 10; /* no limit for t8, use t7 instead */ + spec.t9 = 50 * 10; /* no limit for t9, make it symmetric with t8 */ + spec.t10 = 500 * 10; + /* This one is special and actually in units of 100ms, but zero + * based in the hw (so we need to add 100 ms). But the sw vbt + * table multiplies it with 1000 to make it in units of 100usec, + * too. */ + spec.t11_t12 = (510 + 100) * 10; + + DRM_DEBUG_KMS("vbt t1_t3 %d t8 %d t9 %d t10 %d t11_t12 %d\n", + vbt.t1_t3, vbt.t8, vbt.t9, vbt.t10, vbt.t11_t12); + + /* Use the max of the register settings and vbt. If both are + * unset, fall back to the spec limits. */ +#define assign_final(field) final.field = (max(cur.field, vbt.field) == 0 ? \ + spec.field : \ + max(cur.field, vbt.field)) + assign_final(t1_t3); + assign_final(t8); + assign_final(t9); + assign_final(t10); + assign_final(t11_t12); +#undef assign_final + +#define get_delay(field) (DIV_ROUND_UP(final.field, 10)) + intel_dp->panel_power_up_delay = get_delay(t1_t3); + intel_dp->backlight_on_delay = get_delay(t8); + intel_dp->backlight_off_delay = get_delay(t9); + intel_dp->panel_power_down_delay = get_delay(t10); + intel_dp->panel_power_cycle_delay = get_delay(t11_t12); +#undef get_delay + + /* And finally store the new values in the power sequencer. */ + pp_on = (final.t1_t3 << PANEL_POWER_UP_DELAY_SHIFT) | + (final.t8 << PANEL_LIGHT_ON_DELAY_SHIFT); + pp_off = (final.t9 << PANEL_LIGHT_OFF_DELAY_SHIFT) | + (final.t10 << PANEL_POWER_DOWN_DELAY_SHIFT); + /* Compute the divisor for the pp clock, simply match the Bspec + * formula. */ + pp_div = ((100 * intel_pch_rawclk(dev))/2 - 1) + << PP_REFERENCE_DIVIDER_SHIFT; + pp_div |= (DIV_ROUND_UP(final.t11_t12, 1000) + << PANEL_POWER_CYCLE_DELAY_SHIFT); + + /* Haswell doesn't have any port selection bits for the panel + * power sequencer any more. */ + if (HAS_PCH_IBX(dev) || HAS_PCH_CPT(dev)) { + if (is_cpu_edp(intel_dp)) + pp_on |= PANEL_POWER_PORT_DP_A; + else + pp_on |= PANEL_POWER_PORT_DP_D; + } + + I915_WRITE(PCH_PP_ON_DELAYS, pp_on); + I915_WRITE(PCH_PP_OFF_DELAYS, pp_off); + I915_WRITE(PCH_PP_DIVISOR, pp_div); + + + DRM_DEBUG_KMS("panel power up delay %d, power down delay %d, power cycle delay %d\n", + intel_dp->panel_power_up_delay, intel_dp->panel_power_down_delay, + intel_dp->panel_power_cycle_delay); + + DRM_DEBUG_KMS("backlight on delay %d, off delay %d\n", + intel_dp->backlight_on_delay, intel_dp->backlight_off_delay); + + DRM_DEBUG_KMS("panel power sequencer register settings: PP_ON %#x, PP_OFF %#x, PP_DIV %#x\n", + I915_READ(PCH_PP_ON_DELAYS), + I915_READ(PCH_PP_OFF_DELAYS), + I915_READ(PCH_PP_DIVISOR)); +} + +void +intel_dp_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector) +{ + struct drm_connector *connector = &intel_connector->base; + struct intel_dp *intel_dp = &intel_dig_port->dp; + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = intel_encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_display_mode *fixed_mode = NULL; + enum port port = intel_dig_port->port; + const char *name = NULL; + int type; + + /* Preserve the current hw state. */ + intel_dp->DP = I915_READ(intel_dp->output_reg); + intel_dp->attached_connector = intel_connector; + + if (HAS_PCH_SPLIT(dev) && port == PORT_D) + if (intel_dpd_is_edp(dev)) + intel_dp->is_pch_edp = true; + + /* + * FIXME : We need to initialize built-in panels before external panels. + * For X0, DP_C is fixed as eDP. Revisit this as part of VLV eDP cleanup + */ + if (IS_VALLEYVIEW(dev) && port == PORT_C) { + type = DRM_MODE_CONNECTOR_eDP; + intel_encoder->type = INTEL_OUTPUT_EDP; + } else if (port == PORT_A || is_pch_edp(intel_dp)) { + type = DRM_MODE_CONNECTOR_eDP; + intel_encoder->type = INTEL_OUTPUT_EDP; + } else { + /* The intel_encoder->type value may be INTEL_OUTPUT_UNKNOWN for + * DDI or INTEL_OUTPUT_DISPLAYPORT for the older gens, so don't + * rewrite it. + */ + type = DRM_MODE_CONNECTOR_DisplayPort; + } + + drm_connector_init(dev, connector, &intel_dp_connector_funcs, type); + drm_connector_helper_add(connector, &intel_dp_connector_helper_funcs); + + connector->polled = DRM_CONNECTOR_POLL_HPD; + connector->interlace_allowed = true; + connector->doublescan_allowed = 0; + + INIT_DELAYED_WORK(&intel_dp->panel_vdd_work, + ironlake_panel_vdd_work); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + drm_sysfs_connector_add(connector); + + if (IS_HASWELL(dev)) + intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; + else + intel_connector->get_hw_state = intel_connector_get_hw_state; + + + /* Set up the DDC bus. */ + switch (port) { + case PORT_A: + name = "DPDDC-A"; + break; + case PORT_B: + dev_priv->hotplug_supported_mask |= DPB_HOTPLUG_INT_STATUS; + name = "DPDDC-B"; + break; + case PORT_C: + dev_priv->hotplug_supported_mask |= DPC_HOTPLUG_INT_STATUS; + name = "DPDDC-C"; + break; + case PORT_D: + dev_priv->hotplug_supported_mask |= DPD_HOTPLUG_INT_STATUS; + name = "DPDDC-D"; + break; + default: + WARN(1, "Invalid port %c\n", port_name(port)); + break; + } + + if (is_edp(intel_dp)) + intel_dp_init_panel_power_sequencer(dev, intel_dp); + + intel_dp_i2c_init(intel_dp, intel_connector, name); + + /* Cache DPCD and EDID for edp. */ + if (is_edp(intel_dp)) { + bool ret; + struct drm_display_mode *scan; + struct edid *edid; + + ironlake_edp_panel_vdd_on(intel_dp); + ret = intel_dp_get_dpcd(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, false); + + if (ret) { + if (intel_dp->dpcd[DP_DPCD_REV] >= 0x11) + dev_priv->no_aux_handshake = + intel_dp->dpcd[DP_MAX_DOWNSPREAD] & + DP_NO_AUX_HANDSHAKE_LINK_TRAINING; + } else { + /* if this fails, presume the device is a ghost */ + DRM_INFO("failed to retrieve link info, disabling eDP\n"); + intel_dp_encoder_destroy(&intel_encoder->base); + intel_dp_destroy(connector); + return; + } + + ironlake_edp_panel_vdd_on(intel_dp); + edid = drm_get_edid(connector, &intel_dp->adapter); + if (edid) { + if (drm_add_edid_modes(connector, edid)) { + drm_mode_connector_update_edid_property(connector, edid); + drm_edid_to_eld(connector, edid); + } else { + kfree(edid); + edid = ERR_PTR(-EINVAL); + } + } else { + edid = ERR_PTR(-ENOENT); + } + intel_connector->edid = edid; + + /* prefer fixed mode from EDID if available */ + list_for_each_entry(scan, &connector->probed_modes, head) { + if ((scan->type & DRM_MODE_TYPE_PREFERRED)) { + fixed_mode = drm_mode_duplicate(dev, scan); + break; + } + } + + /* fallback to VBT if available for eDP */ + if (!fixed_mode && dev_priv->lfp_lvds_vbt_mode) { + fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode); + if (fixed_mode) + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + } + + ironlake_edp_panel_vdd_off(intel_dp, false); + } + + if (is_edp(intel_dp)) { + intel_panel_init(&intel_connector->panel, fixed_mode); + intel_panel_setup_backlight(connector); + } + + intel_dp_add_properties(intel_dp, connector); + + /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written + * 0xd. Failure to do so will result in spurious interrupts being + * generated on the port when a cable is not attached. + */ + if (IS_G4X(dev) && !IS_GM45(dev)) { + u32 temp = I915_READ(PEG_BAND_GAP_DATA); + I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); + } +} + +void +intel_dp_init(struct drm_device *dev, int output_reg, enum port port) +{ + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *intel_connector; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dig_port); + return; + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, &intel_encoder->base, &intel_dp_enc_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(&intel_encoder->base, &intel_dp_helper_funcs); + + intel_encoder->enable = intel_enable_dp; + intel_encoder->pre_enable = intel_pre_enable_dp; + intel_encoder->disable = intel_disable_dp; + intel_encoder->post_disable = intel_post_disable_dp; + intel_encoder->get_hw_state = intel_dp_get_hw_state; + + intel_dig_port->port = port; + intel_dig_port->dp.output_reg = output_reg; + + intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + intel_encoder->hot_plug = intel_dp_hot_plug; + + intel_dp_init_connector(intel_dig_port, intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/intel_ringbuffer.h +++ linux-3.5.0/ubuntu/i915/intel_ringbuffer.h @@ -0,0 +1,233 @@ +#ifndef _INTEL_RINGBUFFER_H_ +#define _INTEL_RINGBUFFER_H_ + +struct intel_hw_status_page { + u32 *page_addr; + unsigned int gfx_addr; + struct drm_i915_gem_object *obj; +}; + +#define I915_READ_TAIL(ring) I915_READ(RING_TAIL((ring)->mmio_base)) +#define I915_WRITE_TAIL(ring, val) I915_WRITE(RING_TAIL((ring)->mmio_base), val) + +#define I915_READ_START(ring) I915_READ(RING_START((ring)->mmio_base)) +#define I915_WRITE_START(ring, val) I915_WRITE(RING_START((ring)->mmio_base), val) + +#define I915_READ_HEAD(ring) I915_READ(RING_HEAD((ring)->mmio_base)) +#define I915_WRITE_HEAD(ring, val) I915_WRITE(RING_HEAD((ring)->mmio_base), val) + +#define I915_READ_CTL(ring) I915_READ(RING_CTL((ring)->mmio_base)) +#define I915_WRITE_CTL(ring, val) I915_WRITE(RING_CTL((ring)->mmio_base), val) + +#define I915_READ_IMR(ring) I915_READ(RING_IMR((ring)->mmio_base)) +#define I915_WRITE_IMR(ring, val) I915_WRITE(RING_IMR((ring)->mmio_base), val) + +#define I915_READ_NOPID(ring) I915_READ(RING_NOPID((ring)->mmio_base)) +#define I915_READ_SYNC_0(ring) I915_READ(RING_SYNC_0((ring)->mmio_base)) +#define I915_READ_SYNC_1(ring) I915_READ(RING_SYNC_1((ring)->mmio_base)) + +struct intel_ring_buffer { + const char *name; + enum intel_ring_id { + RCS = 0x0, + VCS, + BCS, + } id; +#define I915_NUM_RINGS 3 + u32 mmio_base; + void __iomem *virtual_start; + struct drm_device *dev; + struct drm_i915_gem_object *obj; + + u32 head; + u32 tail; + int space; + int size; + int effective_size; + struct intel_hw_status_page status_page; + + /** We track the position of the requests in the ring buffer, and + * when each is retired we increment last_retired_head as the GPU + * must have finished processing the request and so we know we + * can advance the ringbuffer up to that position. + * + * last_retired_head is set to -1 after the value is consumed so + * we can detect new retirements. + */ + u32 last_retired_head; + + u32 irq_refcount; /* protected by dev_priv->irq_lock */ + u32 irq_enable_mask; /* bitmask to enable ring interrupt */ + u32 trace_irq_seqno; + u32 sync_seqno[I915_NUM_RINGS-1]; + bool __must_check (*irq_get)(struct intel_ring_buffer *ring); + void (*irq_put)(struct intel_ring_buffer *ring); + + int (*init)(struct intel_ring_buffer *ring); + + void (*write_tail)(struct intel_ring_buffer *ring, + u32 value); + int __must_check (*flush)(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains); + int (*add_request)(struct intel_ring_buffer *ring, + u32 *seqno); + /* Some chipsets are not quite as coherent as advertised and need + * an expensive kick to force a true read of the up-to-date seqno. + * However, the up-to-date seqno is not always required and the last + * seen value is good enough. Note that the seqno will always be + * monotonic, even if not coherent. + */ + u32 (*get_seqno)(struct intel_ring_buffer *ring, + bool lazy_coherency); + int (*dispatch_execbuffer)(struct intel_ring_buffer *ring, + u32 offset, u32 length, + unsigned flags); +#define I915_DISPATCH_SECURE 0x1 + void (*cleanup)(struct intel_ring_buffer *ring); + int (*sync_to)(struct intel_ring_buffer *ring, + struct intel_ring_buffer *to, + u32 seqno); + + u32 semaphore_register[3]; /*our mbox written by others */ + u32 signal_mbox[2]; /* mboxes this ring signals to */ + /** + * List of objects currently involved in rendering from the + * ringbuffer. + * + * Includes buffers having the contents of their GPU caches + * flushed, not necessarily primitives. last_rendering_seqno + * represents when the rendering involved will be completed. + * + * A reference is held on the buffer while on this list. + */ + struct list_head active_list; + + /** + * List of breadcrumbs associated with GPU requests currently + * outstanding. + */ + struct list_head request_list; + + /** + * Do we have some not yet emitted requests outstanding? + */ + u32 outstanding_lazy_request; + bool gpu_caches_dirty; + + wait_queue_head_t irq_queue; + + /** + * Do an explicit TLB flush before MI_SET_CONTEXT + */ + bool itlb_before_ctx_switch; + struct i915_hw_context *default_context; + struct drm_i915_gem_object *last_context_obj; + + void *private; +}; + +static inline bool +intel_ring_initialized(struct intel_ring_buffer *ring) +{ + return ring->obj != NULL; +} + +static inline unsigned +intel_ring_flag(struct intel_ring_buffer *ring) +{ + return 1 << ring->id; +} + +static inline u32 +intel_ring_sync_index(struct intel_ring_buffer *ring, + struct intel_ring_buffer *other) +{ + int idx; + + /* + * cs -> 0 = vcs, 1 = bcs + * vcs -> 0 = bcs, 1 = cs, + * bcs -> 0 = cs, 1 = vcs. + */ + + idx = (other - ring) - 1; + if (idx < 0) + idx += I915_NUM_RINGS; + + return idx; +} + +static inline u32 +intel_read_status_page(struct intel_ring_buffer *ring, + int reg) +{ + /* Ensure that the compiler doesn't optimize away the load. */ + barrier(); + return ring->status_page.page_addr[reg]; +} + +/** + * Reads a dword out of the status page, which is written to from the command + * queue by automatic updates, MI_REPORT_HEAD, MI_STORE_DATA_INDEX, or + * MI_STORE_DATA_IMM. + * + * The following dwords have a reserved meaning: + * 0x00: ISR copy, updated when an ISR bit not set in the HWSTAM changes. + * 0x04: ring 0 head pointer + * 0x05: ring 1 head pointer (915-class) + * 0x06: ring 2 head pointer (915-class) + * 0x10-0x1b: Context status DWords (GM45) + * 0x1f: Last written status offset. (GM45) + * + * The area from dword 0x20 to 0x3ff is available for driver usage. + */ +#define I915_GEM_HWS_INDEX 0x20 +#define I915_GEM_HWS_SCRATCH_INDEX 0x30 +#define I915_GEM_HWS_SCRATCH_ADDR (I915_GEM_HWS_SCRATCH_INDEX << MI_STORE_DWORD_INDEX_SHIFT) + +void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring); + +int __must_check intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n); +static inline int intel_wait_ring_idle(struct intel_ring_buffer *ring) +{ + return intel_wait_ring_buffer(ring, ring->size - 8); +} + +int __must_check intel_ring_begin(struct intel_ring_buffer *ring, int n); + +static inline void intel_ring_emit(struct intel_ring_buffer *ring, + u32 data) +{ + iowrite32(data, ring->virtual_start + ring->tail); + ring->tail += 4; +} + +void intel_ring_advance(struct intel_ring_buffer *ring); + +u32 intel_ring_get_seqno(struct intel_ring_buffer *ring); +int intel_ring_flush_all_caches(struct intel_ring_buffer *ring); +int intel_ring_invalidate_all_caches(struct intel_ring_buffer *ring); + +int intel_init_render_ring_buffer(struct drm_device *dev); +int intel_init_bsd_ring_buffer(struct drm_device *dev); +int intel_init_blt_ring_buffer(struct drm_device *dev); + +u32 intel_ring_get_active_head(struct intel_ring_buffer *ring); +void intel_ring_setup_status_page(struct intel_ring_buffer *ring); + +static inline u32 intel_ring_get_tail(struct intel_ring_buffer *ring) +{ + return ring->tail; +} + +static inline void i915_trace_irq_get(struct intel_ring_buffer *ring, u32 seqno) +{ + if (ring->trace_irq_seqno == 0 && ring->irq_get(ring)) + ring->trace_irq_seqno = seqno; +} + +/* DRI warts */ +int intel_render_ring_init_dri(struct drm_device *dev, u64 start, u32 size); + +#endif /* _INTEL_RINGBUFFER_H_ */ --- linux-3.5.0.orig/ubuntu/i915/intel_sprite.c +++ linux-3.5.0/ubuntu/i915/intel_sprite.c @@ -0,0 +1,732 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Jesse Barnes + * + * New plane/sprite handling. + * + * The older chips had a separate interface for programming plane related + * registers; newer ones are much simpler and we can use the new DRM plane + * support. + */ +#include "drmP.h" +#include "drm_crtc.h" +#include "drm_fourcc.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +static void +ivb_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + u32 sprctl, sprscale = 0; + unsigned long sprsurf_offset, linear_offset; + int pixel_size = drm_format_plane_cpp(fb->pixel_format, 0); + + sprctl = I915_READ(SPRCTL(pipe)); + + /* Mask out pixel format bits in case we change it */ + sprctl &= ~SPRITE_PIXFORMAT_MASK; + sprctl &= ~SPRITE_RGB_ORDER_RGBX; + sprctl &= ~SPRITE_YUV_BYTE_ORDER_MASK; + sprctl &= ~SPRITE_TILED; + + switch (fb->pixel_format) { + case DRM_FORMAT_XBGR8888: + sprctl |= SPRITE_FORMAT_RGBX888 | SPRITE_RGB_ORDER_RGBX; + break; + case DRM_FORMAT_XRGB8888: + sprctl |= SPRITE_FORMAT_RGBX888; + break; + case DRM_FORMAT_YUYV: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_YUYV; + break; + case DRM_FORMAT_YVYU: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_YVYU; + break; + case DRM_FORMAT_UYVY: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_UYVY; + break; + case DRM_FORMAT_VYUY: + sprctl |= SPRITE_FORMAT_YUV422 | SPRITE_YUV_ORDER_VYUY; + break; + default: + BUG(); + } + + if (obj->tiling_mode != I915_TILING_NONE) + sprctl |= SPRITE_TILED; + + /* must disable */ + sprctl |= SPRITE_TRICKLE_FEED_DISABLE; + sprctl |= SPRITE_ENABLE; + + /* Sizes are 0 based */ + src_w--; + src_h--; + crtc_w--; + crtc_h--; + + intel_update_sprite_watermarks(dev, pipe, crtc_w, pixel_size); + + /* + * IVB workaround: must disable low power watermarks for at least + * one frame before enabling scaling. LP watermarks can be re-enabled + * when scaling is disabled. + */ + if (crtc_w != src_w || crtc_h != src_h) { + if (!dev_priv->sprite_scaling_enabled) { + dev_priv->sprite_scaling_enabled = true; + intel_update_watermarks(dev); + intel_wait_for_vblank(dev, pipe); + } + sprscale = SPRITE_SCALE_ENABLE | (src_w << 16) | src_h; + } else { + if (dev_priv->sprite_scaling_enabled) { + dev_priv->sprite_scaling_enabled = false; + /* potentially re-enable LP watermarks */ + intel_update_watermarks(dev); + } + } + + I915_WRITE(SPRSTRIDE(pipe), fb->pitches[0]); + I915_WRITE(SPRPOS(pipe), (crtc_y << 16) | crtc_x); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + sprsurf_offset = + intel_gen4_compute_offset_xtiled(&x, &y, + fb->bits_per_pixel / 8, + fb->pitches[0]); + linear_offset -= sprsurf_offset; + + /* HSW consolidates SPRTILEOFF and SPRLINOFF into a single SPROFFSET + * register */ + if (IS_HASWELL(dev)) + I915_WRITE(SPROFFSET(pipe), (y << 16) | x); + else if (obj->tiling_mode != I915_TILING_NONE) + I915_WRITE(SPRTILEOFF(pipe), (y << 16) | x); + else + I915_WRITE(SPRLINOFF(pipe), linear_offset); + + I915_WRITE(SPRSIZE(pipe), (crtc_h << 16) | crtc_w); + if (intel_plane->can_scale) + I915_WRITE(SPRSCALE(pipe), sprscale); + I915_WRITE(SPRCTL(pipe), sprctl); + I915_MODIFY_DISPBASE(SPRSURF(pipe), obj->gtt_offset + sprsurf_offset); + POSTING_READ(SPRSURF(pipe)); +} + +static void +ivb_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + + I915_WRITE(SPRCTL(pipe), I915_READ(SPRCTL(pipe)) & ~SPRITE_ENABLE); + /* Can't leave the scaler enabled... */ + if (intel_plane->can_scale) + I915_WRITE(SPRSCALE(pipe), 0); + /* Activate double buffered register update */ + I915_MODIFY_DISPBASE(SPRSURF(pipe), 0); + POSTING_READ(SPRSURF(pipe)); + + dev_priv->sprite_scaling_enabled = false; + intel_update_watermarks(dev); +} + +static int +ivb_update_colorkey(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 sprctl; + int ret = 0; + + intel_plane = to_intel_plane(plane); + + I915_WRITE(SPRKEYVAL(intel_plane->pipe), key->min_value); + I915_WRITE(SPRKEYMAX(intel_plane->pipe), key->max_value); + I915_WRITE(SPRKEYMSK(intel_plane->pipe), key->channel_mask); + + sprctl = I915_READ(SPRCTL(intel_plane->pipe)); + sprctl &= ~(SPRITE_SOURCE_KEY | SPRITE_DEST_KEY); + if (key->flags & I915_SET_COLORKEY_DESTINATION) + sprctl |= SPRITE_DEST_KEY; + else if (key->flags & I915_SET_COLORKEY_SOURCE) + sprctl |= SPRITE_SOURCE_KEY; + I915_WRITE(SPRCTL(intel_plane->pipe), sprctl); + + POSTING_READ(SPRKEYMSK(intel_plane->pipe)); + + return ret; +} + +static void +ivb_get_colorkey(struct drm_plane *plane, struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 sprctl; + + intel_plane = to_intel_plane(plane); + + key->min_value = I915_READ(SPRKEYVAL(intel_plane->pipe)); + key->max_value = I915_READ(SPRKEYMAX(intel_plane->pipe)); + key->channel_mask = I915_READ(SPRKEYMSK(intel_plane->pipe)); + key->flags = 0; + + sprctl = I915_READ(SPRCTL(intel_plane->pipe)); + + if (sprctl & SPRITE_DEST_KEY) + key->flags = I915_SET_COLORKEY_DESTINATION; + else if (sprctl & SPRITE_SOURCE_KEY) + key->flags = I915_SET_COLORKEY_SOURCE; + else + key->flags = I915_SET_COLORKEY_NONE; +} + +static void +ilk_update_plane(struct drm_plane *plane, struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t x, uint32_t y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + unsigned long dvssurf_offset, linear_offset; + u32 dvscntr, dvsscale; + int pixel_size = drm_format_plane_cpp(fb->pixel_format, 0); + + dvscntr = I915_READ(DVSCNTR(pipe)); + + /* Mask out pixel format bits in case we change it */ + dvscntr &= ~DVS_PIXFORMAT_MASK; + dvscntr &= ~DVS_RGB_ORDER_XBGR; + dvscntr &= ~DVS_YUV_BYTE_ORDER_MASK; + dvscntr &= ~DVS_TILED; + + switch (fb->pixel_format) { + case DRM_FORMAT_XBGR8888: + dvscntr |= DVS_FORMAT_RGBX888 | DVS_RGB_ORDER_XBGR; + break; + case DRM_FORMAT_XRGB8888: + dvscntr |= DVS_FORMAT_RGBX888; + break; + case DRM_FORMAT_YUYV: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_YUYV; + break; + case DRM_FORMAT_YVYU: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_YVYU; + break; + case DRM_FORMAT_UYVY: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_UYVY; + break; + case DRM_FORMAT_VYUY: + dvscntr |= DVS_FORMAT_YUV422 | DVS_YUV_ORDER_VYUY; + break; + default: + BUG(); + } + + if (obj->tiling_mode != I915_TILING_NONE) + dvscntr |= DVS_TILED; + + if (IS_GEN6(dev)) + dvscntr |= DVS_TRICKLE_FEED_DISABLE; /* must disable */ + dvscntr |= DVS_ENABLE; + + /* Sizes are 0 based */ + src_w--; + src_h--; + crtc_w--; + crtc_h--; + + intel_update_sprite_watermarks(dev, pipe, crtc_w, pixel_size); + + dvsscale = 0; + if (IS_GEN5(dev) || crtc_w != src_w || crtc_h != src_h) + dvsscale = DVS_SCALE_ENABLE | (src_w << 16) | src_h; + + I915_WRITE(DVSSTRIDE(pipe), fb->pitches[0]); + I915_WRITE(DVSPOS(pipe), (crtc_y << 16) | crtc_x); + + linear_offset = y * fb->pitches[0] + x * (fb->bits_per_pixel / 8); + dvssurf_offset = + intel_gen4_compute_offset_xtiled(&x, &y, + fb->bits_per_pixel / 8, + fb->pitches[0]); + linear_offset -= dvssurf_offset; + + if (obj->tiling_mode != I915_TILING_NONE) + I915_WRITE(DVSTILEOFF(pipe), (y << 16) | x); + else + I915_WRITE(DVSLINOFF(pipe), linear_offset); + + I915_WRITE(DVSSIZE(pipe), (crtc_h << 16) | crtc_w); + I915_WRITE(DVSSCALE(pipe), dvsscale); + I915_WRITE(DVSCNTR(pipe), dvscntr); + I915_MODIFY_DISPBASE(DVSSURF(pipe), obj->gtt_offset + dvssurf_offset); + POSTING_READ(DVSSURF(pipe)); +} + +static void +ilk_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane = to_intel_plane(plane); + int pipe = intel_plane->pipe; + + I915_WRITE(DVSCNTR(pipe), I915_READ(DVSCNTR(pipe)) & ~DVS_ENABLE); + /* Disable the scaler */ + I915_WRITE(DVSSCALE(pipe), 0); + /* Flush double buffered register updates */ + I915_MODIFY_DISPBASE(DVSSURF(pipe), 0); + POSTING_READ(DVSSURF(pipe)); +} + +static void +intel_enable_primary(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int reg = DSPCNTR(intel_crtc->plane); + + if (!intel_crtc->primary_disabled) + return; + + intel_crtc->primary_disabled = false; + intel_update_fbc(dev); + + I915_WRITE(reg, I915_READ(reg) | DISPLAY_PLANE_ENABLE); +} + +static void +intel_disable_primary(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int reg = DSPCNTR(intel_crtc->plane); + + if (intel_crtc->primary_disabled) + return; + + I915_WRITE(reg, I915_READ(reg) & ~DISPLAY_PLANE_ENABLE); + + intel_crtc->primary_disabled = true; + intel_update_fbc(dev); +} + +static int +ilk_update_colorkey(struct drm_plane *plane, + struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 dvscntr; + int ret = 0; + + intel_plane = to_intel_plane(plane); + + I915_WRITE(DVSKEYVAL(intel_plane->pipe), key->min_value); + I915_WRITE(DVSKEYMAX(intel_plane->pipe), key->max_value); + I915_WRITE(DVSKEYMSK(intel_plane->pipe), key->channel_mask); + + dvscntr = I915_READ(DVSCNTR(intel_plane->pipe)); + dvscntr &= ~(DVS_SOURCE_KEY | DVS_DEST_KEY); + if (key->flags & I915_SET_COLORKEY_DESTINATION) + dvscntr |= DVS_DEST_KEY; + else if (key->flags & I915_SET_COLORKEY_SOURCE) + dvscntr |= DVS_SOURCE_KEY; + I915_WRITE(DVSCNTR(intel_plane->pipe), dvscntr); + + POSTING_READ(DVSKEYMSK(intel_plane->pipe)); + + return ret; +} + +static void +ilk_get_colorkey(struct drm_plane *plane, struct drm_intel_sprite_colorkey *key) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_plane *intel_plane; + u32 dvscntr; + + intel_plane = to_intel_plane(plane); + + key->min_value = I915_READ(DVSKEYVAL(intel_plane->pipe)); + key->max_value = I915_READ(DVSKEYMAX(intel_plane->pipe)); + key->channel_mask = I915_READ(DVSKEYMSK(intel_plane->pipe)); + key->flags = 0; + + dvscntr = I915_READ(DVSCNTR(intel_plane->pipe)); + + if (dvscntr & DVS_DEST_KEY) + key->flags = I915_SET_COLORKEY_DESTINATION; + else if (dvscntr & DVS_SOURCE_KEY) + key->flags = I915_SET_COLORKEY_SOURCE; + else + key->flags = I915_SET_COLORKEY_NONE; +} + +static int +intel_update_plane(struct drm_plane *plane, struct drm_crtc *crtc, + struct drm_framebuffer *fb, int crtc_x, int crtc_y, + unsigned int crtc_w, unsigned int crtc_h, + uint32_t src_x, uint32_t src_y, + uint32_t src_w, uint32_t src_h) +{ + struct drm_device *dev = plane->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_plane *intel_plane = to_intel_plane(plane); + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj, *old_obj; + int pipe = intel_plane->pipe; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int ret = 0; + int x = src_x >> 16, y = src_y >> 16; + int primary_w = crtc->mode.hdisplay, primary_h = crtc->mode.vdisplay; + bool disable_primary = false; + + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + old_obj = intel_plane->obj; + + src_w = src_w >> 16; + src_h = src_h >> 16; + + /* Pipe must be running... */ + if (!(I915_READ(PIPECONF(cpu_transcoder)) & PIPECONF_ENABLE)) + return -EINVAL; + + if (crtc_x >= primary_w || crtc_y >= primary_h) + return -EINVAL; + + /* Don't modify another pipe's plane */ + if (intel_plane->pipe != intel_crtc->pipe) + return -EINVAL; + + /* Sprite planes can be linear or x-tiled surfaces */ + switch (obj->tiling_mode) { + case I915_TILING_NONE: + case I915_TILING_X: + break; + default: + return -EINVAL; + } + + /* + * Clamp the width & height into the visible area. Note we don't + * try to scale the source if part of the visible region is offscreen. + * The caller must handle that by adjusting source offset and size. + */ + if ((crtc_x < 0) && ((crtc_x + crtc_w) > 0)) { + crtc_w += crtc_x; + crtc_x = 0; + } + if ((crtc_x + crtc_w) <= 0) /* Nothing to display */ + goto out; + if ((crtc_x + crtc_w) > primary_w) + crtc_w = primary_w - crtc_x; + + if ((crtc_y < 0) && ((crtc_y + crtc_h) > 0)) { + crtc_h += crtc_y; + crtc_y = 0; + } + if ((crtc_y + crtc_h) <= 0) /* Nothing to display */ + goto out; + if (crtc_y + crtc_h > primary_h) + crtc_h = primary_h - crtc_y; + + if (!crtc_w || !crtc_h) /* Again, nothing to display */ + goto out; + + /* + * We may not have a scaler, eg. HSW does not have it any more + */ + if (!intel_plane->can_scale && (crtc_w != src_w || crtc_h != src_h)) + return -EINVAL; + + /* + * We can take a larger source and scale it down, but + * only so much... 16x is the max on SNB. + */ + if (((src_w * src_h) / (crtc_w * crtc_h)) > intel_plane->max_downscale) + return -EINVAL; + + /* + * If the sprite is completely covering the primary plane, + * we can disable the primary and save power. + */ + if ((crtc_x == 0) && (crtc_y == 0) && + (crtc_w == primary_w) && (crtc_h == primary_h)) + disable_primary = true; + + mutex_lock(&dev->struct_mutex); + + ret = intel_pin_and_fence_fb_obj(dev, obj, NULL); + if (ret) + goto out_unlock; + + intel_plane->obj = obj; + + /* + * Be sure to re-enable the primary before the sprite is no longer + * covering it fully. + */ + if (!disable_primary) + intel_enable_primary(crtc); + + intel_plane->update_plane(plane, fb, obj, crtc_x, crtc_y, + crtc_w, crtc_h, x, y, src_w, src_h); + + if (disable_primary) + intel_disable_primary(crtc); + + /* Unpin old obj after new one is active to avoid ugliness */ + if (old_obj) { + /* + * It's fairly common to simply update the position of + * an existing object. In that case, we don't need to + * wait for vblank to avoid ugliness, we only need to + * do the pin & ref bookkeeping. + */ + if (old_obj != obj) { + mutex_unlock(&dev->struct_mutex); + intel_wait_for_vblank(dev, to_intel_crtc(crtc)->pipe); + mutex_lock(&dev->struct_mutex); + } + intel_unpin_fb_obj(old_obj); + } + +out_unlock: + mutex_unlock(&dev->struct_mutex); +out: + return ret; +} + +static int +intel_disable_plane(struct drm_plane *plane) +{ + struct drm_device *dev = plane->dev; + struct intel_plane *intel_plane = to_intel_plane(plane); + int ret = 0; + + if (plane->crtc) + intel_enable_primary(plane->crtc); + intel_plane->disable_plane(plane); + + if (!intel_plane->obj) + goto out; + + mutex_lock(&dev->struct_mutex); + intel_unpin_fb_obj(intel_plane->obj); + intel_plane->obj = NULL; + mutex_unlock(&dev->struct_mutex); +out: + + return ret; +} + +static void intel_destroy_plane(struct drm_plane *plane) +{ + struct intel_plane *intel_plane = to_intel_plane(plane); + intel_disable_plane(plane); + drm_plane_cleanup(plane); + kfree(intel_plane); +} + +int intel_sprite_set_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_sprite_colorkey *set = data; + struct drm_mode_object *obj; + struct drm_plane *plane; + struct intel_plane *intel_plane; + int ret = 0; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + /* Make sure we don't try to enable both src & dest simultaneously */ + if ((set->flags & (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) == (I915_SET_COLORKEY_DESTINATION | I915_SET_COLORKEY_SOURCE)) + return -EINVAL; + + mutex_lock(&dev->mode_config.mutex); + + obj = drm_mode_object_find(dev, set->plane_id, DRM_MODE_OBJECT_PLANE); + if (!obj) { + ret = -EINVAL; + goto out_unlock; + } + + plane = obj_to_plane(obj); + intel_plane = to_intel_plane(plane); + ret = intel_plane->update_colorkey(plane, set); + +out_unlock: + mutex_unlock(&dev->mode_config.mutex); + return ret; +} + +int intel_sprite_get_colorkey(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_sprite_colorkey *get = data; + struct drm_mode_object *obj; + struct drm_plane *plane; + struct intel_plane *intel_plane; + int ret = 0; + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + mutex_lock(&dev->mode_config.mutex); + + obj = drm_mode_object_find(dev, get->plane_id, DRM_MODE_OBJECT_PLANE); + if (!obj) { + ret = -EINVAL; + goto out_unlock; + } + + plane = obj_to_plane(obj); + intel_plane = to_intel_plane(plane); + intel_plane->get_colorkey(plane, get); + +out_unlock: + mutex_unlock(&dev->mode_config.mutex); + return ret; +} + +static const struct drm_plane_funcs intel_plane_funcs = { + .update_plane = intel_update_plane, + .disable_plane = intel_disable_plane, + .destroy = intel_destroy_plane, +}; + +static uint32_t ilk_plane_formats[] = { + DRM_FORMAT_XRGB8888, + DRM_FORMAT_YUYV, + DRM_FORMAT_YVYU, + DRM_FORMAT_UYVY, + DRM_FORMAT_VYUY, +}; + +static uint32_t snb_plane_formats[] = { + DRM_FORMAT_XBGR8888, + DRM_FORMAT_XRGB8888, + DRM_FORMAT_YUYV, + DRM_FORMAT_YVYU, + DRM_FORMAT_UYVY, + DRM_FORMAT_VYUY, +}; + +int +intel_plane_init(struct drm_device *dev, enum pipe pipe) +{ + struct intel_plane *intel_plane; + unsigned long possible_crtcs; + const uint32_t *plane_formats; + int num_plane_formats; + int ret; + + if (INTEL_INFO(dev)->gen < 5) + return -ENODEV; + + intel_plane = kzalloc(sizeof(struct intel_plane), GFP_KERNEL); + if (!intel_plane) + return -ENOMEM; + + switch (INTEL_INFO(dev)->gen) { + case 5: + case 6: + intel_plane->can_scale = true; + intel_plane->max_downscale = 16; + intel_plane->update_plane = ilk_update_plane; + intel_plane->disable_plane = ilk_disable_plane; + intel_plane->update_colorkey = ilk_update_colorkey; + intel_plane->get_colorkey = ilk_get_colorkey; + + if (IS_GEN6(dev)) { + plane_formats = snb_plane_formats; + num_plane_formats = ARRAY_SIZE(snb_plane_formats); + } else { + plane_formats = ilk_plane_formats; + num_plane_formats = ARRAY_SIZE(ilk_plane_formats); + } + break; + + case 7: + if (IS_HASWELL(dev) || IS_VALLEYVIEW(dev)) + intel_plane->can_scale = false; + else + intel_plane->can_scale = true; + intel_plane->max_downscale = 2; + intel_plane->update_plane = ivb_update_plane; + intel_plane->disable_plane = ivb_disable_plane; + intel_plane->update_colorkey = ivb_update_colorkey; + intel_plane->get_colorkey = ivb_get_colorkey; + + plane_formats = snb_plane_formats; + num_plane_formats = ARRAY_SIZE(snb_plane_formats); + break; + + default: + kfree(intel_plane); + return -ENODEV; + } + + intel_plane->pipe = pipe; + possible_crtcs = (1 << pipe); + ret = drm_plane_init(dev, &intel_plane->base, possible_crtcs, + &intel_plane_funcs, + plane_formats, num_plane_formats, + false); + if (ret) + kfree(intel_plane); + + return ret; +} --- linux-3.5.0.orig/ubuntu/i915/dvo_tfp410.c +++ linux-3.5.0/ubuntu/i915/dvo_tfp410.c @@ -0,0 +1,318 @@ +/* + * Copyright © 2007 Dave Mueller + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Dave Mueller + * + */ + +#include "dvo.h" + +/* register definitions according to the TFP410 data sheet */ +#define TFP410_VID 0x014C +#define TFP410_DID 0x0410 + +#define TFP410_VID_LO 0x00 +#define TFP410_VID_HI 0x01 +#define TFP410_DID_LO 0x02 +#define TFP410_DID_HI 0x03 +#define TFP410_REV 0x04 + +#define TFP410_CTL_1 0x08 +#define TFP410_CTL_1_TDIS (1<<6) +#define TFP410_CTL_1_VEN (1<<5) +#define TFP410_CTL_1_HEN (1<<4) +#define TFP410_CTL_1_DSEL (1<<3) +#define TFP410_CTL_1_BSEL (1<<2) +#define TFP410_CTL_1_EDGE (1<<1) +#define TFP410_CTL_1_PD (1<<0) + +#define TFP410_CTL_2 0x09 +#define TFP410_CTL_2_VLOW (1<<7) +#define TFP410_CTL_2_MSEL_MASK (0x7<<4) +#define TFP410_CTL_2_MSEL (1<<4) +#define TFP410_CTL_2_TSEL (1<<3) +#define TFP410_CTL_2_RSEN (1<<2) +#define TFP410_CTL_2_HTPLG (1<<1) +#define TFP410_CTL_2_MDI (1<<0) + +#define TFP410_CTL_3 0x0A +#define TFP410_CTL_3_DK_MASK (0x7<<5) +#define TFP410_CTL_3_DK (1<<5) +#define TFP410_CTL_3_DKEN (1<<4) +#define TFP410_CTL_3_CTL_MASK (0x7<<1) +#define TFP410_CTL_3_CTL (1<<1) + +#define TFP410_USERCFG 0x0B + +#define TFP410_DE_DLY 0x32 + +#define TFP410_DE_CTL 0x33 +#define TFP410_DE_CTL_DEGEN (1<<6) +#define TFP410_DE_CTL_VSPOL (1<<5) +#define TFP410_DE_CTL_HSPOL (1<<4) +#define TFP410_DE_CTL_DEDLY8 (1<<0) + +#define TFP410_DE_TOP 0x34 + +#define TFP410_DE_CNT_LO 0x36 +#define TFP410_DE_CNT_HI 0x37 + +#define TFP410_DE_LIN_LO 0x38 +#define TFP410_DE_LIN_HI 0x39 + +#define TFP410_H_RES_LO 0x3A +#define TFP410_H_RES_HI 0x3B + +#define TFP410_V_RES_LO 0x3C +#define TFP410_V_RES_HI 0x3D + +struct tfp410_priv { + bool quiet; +}; + +static bool tfp410_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!tfp->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +static bool tfp410_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!tfp->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +static int tfp410_getid(struct intel_dvo_device *dvo, int addr) +{ + uint8_t ch1, ch2; + + if (tfp410_readb(dvo, addr+0, &ch1) && + tfp410_readb(dvo, addr+1, &ch2)) + return ((ch2 << 8) & 0xFF00) | (ch1 & 0x00FF); + + return -1; +} + +/* Ti TFP410 driver for chip on i2c bus */ +static bool tfp410_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the tfp410 chip on the specified i2c bus */ + struct tfp410_priv *tfp; + int id; + + tfp = kzalloc(sizeof(struct tfp410_priv), GFP_KERNEL); + if (tfp == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = tfp; + tfp->quiet = true; + + if ((id = tfp410_getid(dvo, TFP410_VID_LO)) != TFP410_VID) { + DRM_DEBUG_KMS("tfp410 not detected got VID %X: from %s " + "Slave %d.\n", + id, adapter->name, dvo->slave_addr); + goto out; + } + + if ((id = tfp410_getid(dvo, TFP410_DID_LO)) != TFP410_DID) { + DRM_DEBUG_KMS("tfp410 not detected got DID %X: from %s " + "Slave %d.\n", + id, adapter->name, dvo->slave_addr); + goto out; + } + tfp->quiet = false; + return true; +out: + kfree(tfp); + return false; +} + +static enum drm_connector_status tfp410_detect(struct intel_dvo_device *dvo) +{ + enum drm_connector_status ret = connector_status_disconnected; + uint8_t ctl2; + + if (tfp410_readb(dvo, TFP410_CTL_2, &ctl2)) { + if (ctl2 & TFP410_CTL_2_RSEN) + ret = connector_status_connected; + else + ret = connector_status_disconnected; + } + + return ret; +} + +static enum drm_mode_status tfp410_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + return MODE_OK; +} + +static void tfp410_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* As long as the basics are set up, since we don't have clock dependencies + * in the mode setup, we can just leave the registers alone and everything + * will work fine. + */ + /* don't do much */ + return; +} + +/* set the tfp410 power state */ +static void tfp410_dpms(struct intel_dvo_device *dvo, bool enable) +{ + uint8_t ctl1; + + if (!tfp410_readb(dvo, TFP410_CTL_1, &ctl1)) + return; + + if (enable) + ctl1 |= TFP410_CTL_1_PD; + else + ctl1 &= ~TFP410_CTL_1_PD; + + tfp410_writeb(dvo, TFP410_CTL_1, ctl1); +} + +static bool tfp410_get_hw_state(struct intel_dvo_device *dvo) +{ + uint8_t ctl1; + + if (!tfp410_readb(dvo, TFP410_CTL_1, &ctl1)) + return false; + + if (ctl1 & TFP410_CTL_1_PD) + return true; + else + return false; +} + +static void tfp410_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val, val2; + + tfp410_readb(dvo, TFP410_REV, &val); + DRM_LOG_KMS("TFP410_REV: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_1, &val); + DRM_LOG_KMS("TFP410_CTL1: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_2, &val); + DRM_LOG_KMS("TFP410_CTL2: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_CTL_3, &val); + DRM_LOG_KMS("TFP410_CTL3: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_USERCFG, &val); + DRM_LOG_KMS("TFP410_USERCFG: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_DLY, &val); + DRM_LOG_KMS("TFP410_DE_DLY: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_CTL, &val); + DRM_LOG_KMS("TFP410_DE_CTL: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_TOP, &val); + DRM_LOG_KMS("TFP410_DE_TOP: 0x%02X\n", val); + tfp410_readb(dvo, TFP410_DE_CNT_LO, &val); + tfp410_readb(dvo, TFP410_DE_CNT_HI, &val2); + DRM_LOG_KMS("TFP410_DE_CNT: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_DE_LIN_LO, &val); + tfp410_readb(dvo, TFP410_DE_LIN_HI, &val2); + DRM_LOG_KMS("TFP410_DE_LIN: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_H_RES_LO, &val); + tfp410_readb(dvo, TFP410_H_RES_HI, &val2); + DRM_LOG_KMS("TFP410_H_RES: 0x%02X%02X\n", val2, val); + tfp410_readb(dvo, TFP410_V_RES_LO, &val); + tfp410_readb(dvo, TFP410_V_RES_HI, &val2); + DRM_LOG_KMS("TFP410_V_RES: 0x%02X%02X\n", val2, val); +} + +static void tfp410_destroy(struct intel_dvo_device *dvo) +{ + struct tfp410_priv *tfp = dvo->dev_priv; + + if (tfp) { + kfree(tfp); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops tfp410_ops = { + .init = tfp410_init, + .detect = tfp410_detect, + .mode_valid = tfp410_mode_valid, + .mode_set = tfp410_mode_set, + .dpms = tfp410_dpms, + .get_hw_state = tfp410_get_hw_state, + .dump_regs = tfp410_dump_regs, + .destroy = tfp410_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_gem_tiling.c +++ linux-3.5.0/ubuntu/i915/i915_gem_tiling.c @@ -0,0 +1,518 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "linux/string.h" +#include "linux/bitops.h" +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" + +/** @file i915_gem_tiling.c + * + * Support for managing tiling state of buffer objects. + * + * The idea behind tiling is to increase cache hit rates by rearranging + * pixel data so that a group of pixel accesses are in the same cacheline. + * Performance improvement from doing this on the back/depth buffer are on + * the order of 30%. + * + * Intel architectures make this somewhat more complicated, though, by + * adjustments made to addressing of data when the memory is in interleaved + * mode (matched pairs of DIMMS) to improve memory bandwidth. + * For interleaved memory, the CPU sends every sequential 64 bytes + * to an alternate memory channel so it can get the bandwidth from both. + * + * The GPU also rearranges its accesses for increased bandwidth to interleaved + * memory, and it matches what the CPU does for non-tiled. However, when tiled + * it does it a little differently, since one walks addresses not just in the + * X direction but also Y. So, along with alternating channels when bit + * 6 of the address flips, it also alternates when other bits flip -- Bits 9 + * (every 512 bytes, an X tile scanline) and 10 (every two X tile scanlines) + * are common to both the 915 and 965-class hardware. + * + * The CPU also sometimes XORs in higher bits as well, to improve + * bandwidth doing strided access like we do so frequently in graphics. This + * is called "Channel XOR Randomization" in the MCH documentation. The result + * is that the CPU is XORing in either bit 11 or bit 17 to bit 6 of its address + * decode. + * + * All of this bit 6 XORing has an effect on our memory management, + * as we need to make sure that the 3d driver can correctly address object + * contents. + * + * If we don't have interleaved memory, all tiling is safe and no swizzling is + * required. + * + * When bit 17 is XORed in, we simply refuse to tile at all. Bit + * 17 is not just a page offset, so as we page an objet out and back in, + * individual pages in it will have different bit 17 addresses, resulting in + * each 64 bytes being swapped with its neighbor! + * + * Otherwise, if interleaved, we have to tell the 3d driver what the address + * swizzling it needs to do is, since it's writing with the CPU to the pages + * (bit 6 and potentially bit 11 XORed in), and the GPU is reading from the + * pages (bit 6, 9, and 10 XORed in), resulting in a cumulative bit swizzling + * required by the CPU of XORing in bit 6, 9, 10, and potentially 11, in order + * to match what the GPU expects. + */ + +/** + * Detects bit 6 swizzling of address lookup between IGD access and CPU + * access through main memory. + */ +void +i915_gem_detect_bit_6_swizzle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; + uint32_t swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; + + if (IS_VALLEYVIEW(dev)) { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else if (INTEL_INFO(dev)->gen >= 6) { + uint32_t dimm_c0, dimm_c1; + dimm_c0 = I915_READ(MAD_DIMM_C0); + dimm_c1 = I915_READ(MAD_DIMM_C1); + dimm_c0 &= MAD_DIMM_A_SIZE_MASK | MAD_DIMM_B_SIZE_MASK; + dimm_c1 &= MAD_DIMM_A_SIZE_MASK | MAD_DIMM_B_SIZE_MASK; + /* Enable swizzling when the channels are populated with + * identically sized dimms. We don't need to check the 3rd + * channel because no cpu with gpu attached ships in that + * configuration. Also, swizzling only makes sense for 2 + * channels anyway. */ + if (dimm_c0 == dimm_c1) { + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } + } else if (IS_GEN5(dev)) { + /* On Ironlake whatever DRAM config, GPU always do + * same swizzling setup. + */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else if (IS_GEN2(dev)) { + /* As far as we know, the 865 doesn't have these bit 6 + * swizzling issues. + */ + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else if (IS_MOBILE(dev) || (IS_GEN3(dev) && !IS_G33(dev))) { + uint32_t dcc; + + /* On 9xx chipsets, channel interleave by the CPU is + * determined by DCC. For single-channel, neither the CPU + * nor the GPU do swizzling. For dual channel interleaved, + * the GPU's interleave is bit 9 and 10 for X tiled, and bit + * 9 for Y tiled. The CPU's interleave is independent, and + * can be based on either bit 11 (haven't seen this yet) or + * bit 17 (common). + */ + dcc = I915_READ(DCC); + switch (dcc & DCC_ADDRESSING_MODE_MASK) { + case DCC_ADDRESSING_MODE_SINGLE_CHANNEL: + case DCC_ADDRESSING_MODE_DUAL_CHANNEL_ASYMMETRIC: + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + break; + case DCC_ADDRESSING_MODE_DUAL_CHANNEL_INTERLEAVED: + if (dcc & DCC_CHANNEL_XOR_DISABLE) { + /* This is the base swizzling by the GPU for + * tiled buffers. + */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } else if ((dcc & DCC_CHANNEL_XOR_BIT_17) == 0) { + /* Bit 11 swizzling by the CPU in addition. */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10_11; + swizzle_y = I915_BIT_6_SWIZZLE_9_11; + } else { + /* Bit 17 swizzling by the CPU in addition. */ + swizzle_x = I915_BIT_6_SWIZZLE_9_10_17; + swizzle_y = I915_BIT_6_SWIZZLE_9_17; + } + break; + } + if (dcc == 0xffffffff) { + DRM_ERROR("Couldn't read from MCHBAR. " + "Disabling tiling.\n"); + swizzle_x = I915_BIT_6_SWIZZLE_UNKNOWN; + swizzle_y = I915_BIT_6_SWIZZLE_UNKNOWN; + } + } else { + /* The 965, G33, and newer, have a very flexible memory + * configuration. It will enable dual-channel mode + * (interleaving) on as much memory as it can, and the GPU + * will additionally sometimes enable different bit 6 + * swizzling for tiled objects from the CPU. + * + * Here's what I found on the G965: + * slot fill memory size swizzling + * 0A 0B 1A 1B 1-ch 2-ch + * 512 0 0 0 512 0 O + * 512 0 512 0 16 1008 X + * 512 0 0 512 16 1008 X + * 0 512 0 512 16 1008 X + * 1024 1024 1024 0 2048 1024 O + * + * We could probably detect this based on either the DRB + * matching, which was the case for the swizzling required in + * the table above, or from the 1-ch value being less than + * the minimum size of a rank. + */ + if (I915_READ16(C0DRB3) != I915_READ16(C1DRB3)) { + swizzle_x = I915_BIT_6_SWIZZLE_NONE; + swizzle_y = I915_BIT_6_SWIZZLE_NONE; + } else { + swizzle_x = I915_BIT_6_SWIZZLE_9_10; + swizzle_y = I915_BIT_6_SWIZZLE_9; + } + } + + dev_priv->mm.bit_6_swizzle_x = swizzle_x; + dev_priv->mm.bit_6_swizzle_y = swizzle_y; +} + +/* Check pitch constriants for all chips & tiling formats */ +static bool +i915_tiling_ok(struct drm_device *dev, int stride, int size, int tiling_mode) +{ + int tile_width; + + /* Linear is always fine */ + if (tiling_mode == I915_TILING_NONE) + return true; + + if (IS_GEN2(dev) || + (tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev))) + tile_width = 128; + else + tile_width = 512; + + /* check maximum stride & object size */ + if (INTEL_INFO(dev)->gen >= 4) { + /* i965 stores the end address of the gtt mapping in the fence + * reg, so dont bother to check the size */ + if (stride / 128 > I965_FENCE_MAX_PITCH_VAL) + return false; + } else { + if (stride > 8192) + return false; + + if (IS_GEN3(dev)) { + if (size > I830_FENCE_MAX_SIZE_VAL << 20) + return false; + } else { + if (size > I830_FENCE_MAX_SIZE_VAL << 19) + return false; + } + } + + /* 965+ just needs multiples of tile width */ + if (INTEL_INFO(dev)->gen >= 4) { + if (stride & (tile_width - 1)) + return false; + return true; + } + + /* Pre-965 needs power of two tile widths */ + if (stride < tile_width) + return false; + + if (stride & (stride - 1)) + return false; + + return true; +} + +/* Is the current GTT allocation valid for the change in tiling? */ +static bool +i915_gem_object_fence_ok(struct drm_i915_gem_object *obj, int tiling_mode) +{ + u32 size; + + if (tiling_mode == I915_TILING_NONE) + return true; + + if (INTEL_INFO(obj->base.dev)->gen >= 4) + return true; + + if (INTEL_INFO(obj->base.dev)->gen == 3) { + if (obj->gtt_offset & ~I915_FENCE_START_MASK) + return false; + } else { + if (obj->gtt_offset & ~I830_FENCE_START_MASK) + return false; + } + + /* + * Previous chips need to be aligned to the size of the smallest + * fence register that can contain the object. + */ + if (INTEL_INFO(obj->base.dev)->gen == 3) + size = 1024*1024; + else + size = 512*1024; + + while (size < obj->base.size) + size <<= 1; + + if (obj->gtt_space->size != size) + return false; + + if (obj->gtt_offset & (size - 1)) + return false; + + return true; +} + +/** + * Sets the tiling mode of an object, returning the required swizzling of + * bit 6 of addresses in the object. + */ +int +i915_gem_set_tiling(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_set_tiling *args = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int ret = 0; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) + return -ENOENT; + + if (!i915_tiling_ok(dev, + args->stride, obj->base.size, args->tiling_mode)) { + drm_gem_object_unreference_unlocked(&obj->base); + return -EINVAL; + } + + if (obj->pin_count) { + drm_gem_object_unreference_unlocked(&obj->base); + return -EBUSY; + } + + if (args->tiling_mode == I915_TILING_NONE) { + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + args->stride = 0; + } else { + if (args->tiling_mode == I915_TILING_X) + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; + else + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y; + + /* Hide bit 17 swizzling from the user. This prevents old Mesa + * from aborting the application on sw fallbacks to bit 17, + * and we use the pread/pwrite bit17 paths to swizzle for it. + * If there was a user that was relying on the swizzle + * information for drm_intel_bo_map()ed reads/writes this would + * break it, but we don't have any of those. + */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9; + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10; + + /* If we can't handle the swizzling, make it untiled. */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_UNKNOWN) { + args->tiling_mode = I915_TILING_NONE; + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + args->stride = 0; + } + } + + mutex_lock(&dev->struct_mutex); + if (args->tiling_mode != obj->tiling_mode || + args->stride != obj->stride) { + /* We need to rebind the object if its current allocation + * no longer meets the alignment restrictions for its new + * tiling mode. Otherwise we can just leave it alone, but + * need to ensure that any fence register is updated before + * the next fenced (either through the GTT or by the BLT unit + * on older GPUs) access. + * + * After updating the tiling parameters, we then flag whether + * we need to update an associated fence register. Note this + * has to also include the unfenced register the GPU uses + * whilst executing a fenced command for an untiled object. + */ + + obj->map_and_fenceable = + obj->gtt_space == NULL || + (obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end && + i915_gem_object_fence_ok(obj, args->tiling_mode)); + + /* Rebind if we need a change of alignment */ + if (!obj->map_and_fenceable) { + u32 unfenced_alignment = + i915_gem_get_unfenced_gtt_alignment(dev, + obj->base.size, + args->tiling_mode); + if (obj->gtt_offset & (unfenced_alignment - 1)) + ret = i915_gem_object_unbind(obj); + } + + if (ret == 0) { + obj->fence_dirty = + obj->fenced_gpu_access || + obj->fence_reg != I915_FENCE_REG_NONE; + + obj->tiling_mode = args->tiling_mode; + obj->stride = args->stride; + + /* Force the fence to be reacquired for GTT access */ + i915_gem_release_mmap(obj); + } + } + /* we have to maintain this existing ABI... */ + args->stride = obj->stride; + args->tiling_mode = obj->tiling_mode; + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +/** + * Returns the current tiling mode and required bit 6 swizzling for the object. + */ +int +i915_gem_get_tiling(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_get_tiling *args = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) + return -ENOENT; + + mutex_lock(&dev->struct_mutex); + + args->tiling_mode = obj->tiling_mode; + switch (obj->tiling_mode) { + case I915_TILING_X: + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_x; + break; + case I915_TILING_Y: + args->swizzle_mode = dev_priv->mm.bit_6_swizzle_y; + break; + case I915_TILING_NONE: + args->swizzle_mode = I915_BIT_6_SWIZZLE_NONE; + break; + default: + DRM_ERROR("unknown tiling mode\n"); + } + + /* Hide bit 17 from the user -- see comment in i915_gem_set_tiling */ + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9; + if (args->swizzle_mode == I915_BIT_6_SWIZZLE_9_10_17) + args->swizzle_mode = I915_BIT_6_SWIZZLE_9_10; + + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +/** + * Swap every 64 bytes of this page around, to account for it having a new + * bit 17 of its physical address and therefore being interpreted differently + * by the GPU. + */ +static void +i915_gem_swizzle_page(struct page *page) +{ + char temp[64]; + char *vaddr; + int i; + + vaddr = kmap(page); + + for (i = 0; i < PAGE_SIZE; i += 128) { + memcpy(temp, &vaddr[i], 64); + memcpy(&vaddr[i], &vaddr[i + 64], 64); + memcpy(&vaddr[i + 64], temp, 64); + } + + kunmap(page); +} + +void +i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj) +{ + struct scatterlist *sg; + int page_count = obj->base.size >> PAGE_SHIFT; + int i; + + if (obj->bit_17 == NULL) + return; + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + char new_bit_17 = page_to_phys(page) >> 17; + if ((new_bit_17 & 0x1) != + (test_bit(i, obj->bit_17) != 0)) { + i915_gem_swizzle_page(page); + set_page_dirty(page); + } + } +} + +void +i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj) +{ + struct scatterlist *sg; + int page_count = obj->base.size >> PAGE_SHIFT; + int i; + + if (obj->bit_17 == NULL) { + obj->bit_17 = kmalloc(BITS_TO_LONGS(page_count) * + sizeof(long), GFP_KERNEL); + if (obj->bit_17 == NULL) { + DRM_ERROR("Failed to allocate memory for bit 17 " + "record\n"); + return; + } + } + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + if (page_to_phys(page) & (1 << 17)) + __set_bit(i, obj->bit_17); + else + __clear_bit(i, obj->bit_17); + } +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ch7xxx.c +++ linux-3.5.0/ubuntu/i915/dvo_ch7xxx.c @@ -0,0 +1,344 @@ +/************************************************************************** + +Copyright © 2006 Dave Airlie + +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 AUTHOR 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 "dvo.h" + +#define CH7xxx_REG_VID 0x4a +#define CH7xxx_REG_DID 0x4b + +#define CH7011_VID 0x83 /* 7010 as well */ +#define CH7009A_VID 0x84 +#define CH7009B_VID 0x85 +#define CH7301_VID 0x95 + +#define CH7xxx_VID 0x84 +#define CH7xxx_DID 0x17 + +#define CH7xxx_NUM_REGS 0x4c + +#define CH7xxx_CM 0x1c +#define CH7xxx_CM_XCM (1<<0) +#define CH7xxx_CM_MCP (1<<2) +#define CH7xxx_INPUT_CLOCK 0x1d +#define CH7xxx_GPIO 0x1e +#define CH7xxx_GPIO_HPIR (1<<3) +#define CH7xxx_IDF 0x1f + +#define CH7xxx_IDF_HSP (1<<3) +#define CH7xxx_IDF_VSP (1<<4) + +#define CH7xxx_CONNECTION_DETECT 0x20 +#define CH7xxx_CDET_DVI (1<<5) + +#define CH7301_DAC_CNTL 0x21 +#define CH7301_HOTPLUG 0x23 +#define CH7xxx_TCTL 0x31 +#define CH7xxx_TVCO 0x32 +#define CH7xxx_TPCP 0x33 +#define CH7xxx_TPD 0x34 +#define CH7xxx_TPVT 0x35 +#define CH7xxx_TLPF 0x36 +#define CH7xxx_TCT 0x37 +#define CH7301_TEST_PATTERN 0x48 + +#define CH7xxx_PM 0x49 +#define CH7xxx_PM_FPD (1<<0) +#define CH7301_PM_DACPD0 (1<<1) +#define CH7301_PM_DACPD1 (1<<2) +#define CH7301_PM_DACPD2 (1<<3) +#define CH7xxx_PM_DVIL (1<<6) +#define CH7xxx_PM_DVIP (1<<7) + +#define CH7301_SYNC_POLARITY 0x56 +#define CH7301_SYNC_RGB_YUV (1<<0) +#define CH7301_SYNC_POL_DVI (1<<5) + +/** @file + * driver for the Chrontel 7xxx DVI chip over DVO. + */ + +static struct ch7xxx_id_struct { + uint8_t vid; + char *name; +} ch7xxx_ids[] = { + { CH7011_VID, "CH7011" }, + { CH7009A_VID, "CH7009A" }, + { CH7009B_VID, "CH7009B" }, + { CH7301_VID, "CH7301" }, +}; + +struct ch7xxx_priv { + bool quiet; +}; + +static char *ch7xxx_get_id(uint8_t vid) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(ch7xxx_ids); i++) { + if (ch7xxx_ids[i].vid == vid) + return ch7xxx_ids[i].name; + } + + return NULL; +} + +/** Reads an 8 bit register */ +static bool ch7xxx_readb(struct intel_dvo_device *dvo, int addr, uint8_t *ch) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!ch7xxx->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from %s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +/** Writes an 8 bit register */ +static bool ch7xxx_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!ch7xxx->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +static bool ch7xxx_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the CH7xxx chip on the specified i2c bus */ + struct ch7xxx_priv *ch7xxx; + uint8_t vendor, device; + char *name; + + ch7xxx = kzalloc(sizeof(struct ch7xxx_priv), GFP_KERNEL); + if (ch7xxx == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = ch7xxx; + ch7xxx->quiet = true; + + if (!ch7xxx_readb(dvo, CH7xxx_REG_VID, &vendor)) + goto out; + + name = ch7xxx_get_id(vendor); + if (!name) { + DRM_DEBUG_KMS("ch7xxx not detected; got 0x%02x from %s " + "slave %d.\n", + vendor, adapter->name, dvo->slave_addr); + goto out; + } + + + if (!ch7xxx_readb(dvo, CH7xxx_REG_DID, &device)) + goto out; + + if (device != CH7xxx_DID) { + DRM_DEBUG_KMS("ch7xxx not detected; got 0x%02x from %s " + "slave %d.\n", + vendor, adapter->name, dvo->slave_addr); + goto out; + } + + ch7xxx->quiet = false; + DRM_DEBUG_KMS("Detected %s chipset, vendor/device ID 0x%02x/0x%02x\n", + name, vendor, device); + return true; +out: + kfree(ch7xxx); + return false; +} + +static enum drm_connector_status ch7xxx_detect(struct intel_dvo_device *dvo) +{ + uint8_t cdet, orig_pm, pm; + + ch7xxx_readb(dvo, CH7xxx_PM, &orig_pm); + + pm = orig_pm; + pm &= ~CH7xxx_PM_FPD; + pm |= CH7xxx_PM_DVIL | CH7xxx_PM_DVIP; + + ch7xxx_writeb(dvo, CH7xxx_PM, pm); + + ch7xxx_readb(dvo, CH7xxx_CONNECTION_DETECT, &cdet); + + ch7xxx_writeb(dvo, CH7xxx_PM, orig_pm); + + if (cdet & CH7xxx_CDET_DVI) + return connector_status_connected; + return connector_status_disconnected; +} + +static enum drm_mode_status ch7xxx_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 165000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static void ch7xxx_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint8_t tvco, tpcp, tpd, tlpf, idf; + + if (mode->clock <= 65000) { + tvco = 0x23; + tpcp = 0x08; + tpd = 0x16; + tlpf = 0x60; + } else { + tvco = 0x2d; + tpcp = 0x06; + tpd = 0x26; + tlpf = 0xa0; + } + + ch7xxx_writeb(dvo, CH7xxx_TCTL, 0x00); + ch7xxx_writeb(dvo, CH7xxx_TVCO, tvco); + ch7xxx_writeb(dvo, CH7xxx_TPCP, tpcp); + ch7xxx_writeb(dvo, CH7xxx_TPD, tpd); + ch7xxx_writeb(dvo, CH7xxx_TPVT, 0x30); + ch7xxx_writeb(dvo, CH7xxx_TLPF, tlpf); + ch7xxx_writeb(dvo, CH7xxx_TCT, 0x00); + + ch7xxx_readb(dvo, CH7xxx_IDF, &idf); + + idf &= ~(CH7xxx_IDF_HSP | CH7xxx_IDF_VSP); + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + idf |= CH7xxx_IDF_HSP; + + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + idf |= CH7xxx_IDF_HSP; + + ch7xxx_writeb(dvo, CH7xxx_IDF, idf); +} + +/* set the CH7xxx power state */ +static void ch7xxx_dpms(struct intel_dvo_device *dvo, bool enable) +{ + if (enable) + ch7xxx_writeb(dvo, CH7xxx_PM, CH7xxx_PM_DVIL | CH7xxx_PM_DVIP); + else + ch7xxx_writeb(dvo, CH7xxx_PM, CH7xxx_PM_FPD); +} + +static bool ch7xxx_get_hw_state(struct intel_dvo_device *dvo) +{ + u8 val; + + ch7xxx_readb(dvo, CH7xxx_PM, &val); + + if (val & (CH7xxx_PM_DVIL | CH7xxx_PM_DVIP)) + return true; + else + return false; +} + +static void ch7xxx_dump_regs(struct intel_dvo_device *dvo) +{ + int i; + + for (i = 0; i < CH7xxx_NUM_REGS; i++) { + uint8_t val; + if ((i % 8) == 0) + DRM_LOG_KMS("\n %02X: ", i); + ch7xxx_readb(dvo, i, &val); + DRM_LOG_KMS("%02X ", val); + } +} + +static void ch7xxx_destroy(struct intel_dvo_device *dvo) +{ + struct ch7xxx_priv *ch7xxx = dvo->dev_priv; + + if (ch7xxx) { + kfree(ch7xxx); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ch7xxx_ops = { + .init = ch7xxx_init, + .detect = ch7xxx_detect, + .mode_valid = ch7xxx_mode_valid, + .mode_set = ch7xxx_mode_set, + .dpms = ch7xxx_dpms, + .get_hw_state = ch7xxx_get_hw_state, + .dump_regs = ch7xxx_dump_regs, + .destroy = ch7xxx_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_drv.c +++ linux-3.5.0/ubuntu/i915/i915_drv.c @@ -0,0 +1,1275 @@ +/* i915_drv.c -- i830,i845,i855,i865,i915 driver -*- linux-c -*- + */ +/* + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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 +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +#include +#include +#include "drm_crtc_helper.h" + +static int i915_modeset __read_mostly = -1; +module_param_named(modeset, i915_modeset, int, 0400); +MODULE_PARM_DESC(modeset, + "Use kernel modesetting [KMS] (0=DRM_I915_KMS from .config, " + "1=on, -1=force vga console preference [default])"); + +unsigned int i915_fbpercrtc __always_unused = 0; +module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400); + +int i915_panel_ignore_lid __read_mostly = 1; +module_param_named(panel_ignore_lid, i915_panel_ignore_lid, int, 0600); +MODULE_PARM_DESC(panel_ignore_lid, + "Override lid status (0=autodetect, 1=autodetect disabled [default], " + "-1=force lid closed, -2=force lid open)"); + +unsigned int i915_powersave __read_mostly = 1; +module_param_named(powersave, i915_powersave, int, 0600); +MODULE_PARM_DESC(powersave, + "Enable powersavings, fbc, downclocking, etc. (default: true)"); + +int i915_semaphores __read_mostly = -1; +module_param_named(semaphores, i915_semaphores, int, 0600); +MODULE_PARM_DESC(semaphores, + "Use semaphores for inter-ring sync (default: -1 (use per-chip defaults))"); + +int i915_enable_rc6 __read_mostly = -1; +module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0400); +MODULE_PARM_DESC(i915_enable_rc6, + "Enable power-saving render C-state 6. " + "Different stages can be selected via bitmask values " + "(0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). " + "For example, 3 would enable rc6 and deep rc6, and 7 would enable everything. " + "default: -1 (use per-chip default)"); + +int i915_enable_fbc __read_mostly = -1; +module_param_named(i915_enable_fbc, i915_enable_fbc, int, 0600); +MODULE_PARM_DESC(i915_enable_fbc, + "Enable frame buffer compression for power savings " + "(default: -1 (use per-chip default))"); + +unsigned int i915_lvds_downclock __read_mostly = 0; +module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400); +MODULE_PARM_DESC(lvds_downclock, + "Use panel (LVDS/eDP) downclocking for power savings " + "(default: false)"); + +int i915_lvds_channel_mode __read_mostly; +module_param_named(lvds_channel_mode, i915_lvds_channel_mode, int, 0600); +MODULE_PARM_DESC(lvds_channel_mode, + "Specify LVDS channel mode " + "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)"); + +int i915_panel_use_ssc __read_mostly = -1; +module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600); +MODULE_PARM_DESC(lvds_use_ssc, + "Use Spread Spectrum Clock with panels [LVDS/eDP] " + "(default: auto from VBT)"); + +int i915_vbt_sdvo_panel_type __read_mostly = -1; +module_param_named(vbt_sdvo_panel_type, i915_vbt_sdvo_panel_type, int, 0600); +MODULE_PARM_DESC(vbt_sdvo_panel_type, + "Override/Ignore selection of SDVO panel mode in the VBT " + "(-2=ignore, -1=auto [default], index in VBT BIOS table)"); + +static bool i915_try_reset __read_mostly = true; +module_param_named(reset, i915_try_reset, bool, 0600); +MODULE_PARM_DESC(reset, "Attempt GPU resets (default: true)"); + +bool i915_enable_hangcheck __read_mostly = true; +module_param_named(enable_hangcheck, i915_enable_hangcheck, bool, 0644); +MODULE_PARM_DESC(enable_hangcheck, + "Periodically check GPU activity for detecting hangs. " + "WARNING: Disabling this can cause system wide hangs. " + "(default: true)"); + +int i915_enable_ppgtt __read_mostly = -1; +module_param_named(i915_enable_ppgtt, i915_enable_ppgtt, int, 0600); +MODULE_PARM_DESC(i915_enable_ppgtt, + "Enable PPGTT (default: true)"); + +static struct drm_driver driver; +extern int intel_agp_enabled; + +extern int i915_hsw_enabled; + +#define INTEL_VGA_DEVICE(id, info) { \ + .class = PCI_BASE_CLASS_DISPLAY << 16, \ + .class_mask = 0xff0000, \ + .vendor = 0x8086, \ + .device = id, \ + .subvendor = PCI_ANY_ID, \ + .subdevice = PCI_ANY_ID, \ + .driver_data = (unsigned long) info } + +static const struct intel_device_info intel_i830_info = { + .gen = 2, .is_mobile = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_845g_info = { + .gen = 2, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i85x_info = { + .gen = 2, .is_i85x = 1, .is_mobile = 1, + .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i865g_info = { + .gen = 2, + .has_overlay = 1, .overlay_needs_physical = 1, +}; + +static const struct intel_device_info intel_i915g_info = { + .gen = 3, .is_i915g = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; +static const struct intel_device_info intel_i915gm_info = { + .gen = 3, .is_mobile = 1, + .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, + .supports_tv = 1, +}; +static const struct intel_device_info intel_i945g_info = { + .gen = 3, .has_hotplug = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, +}; +static const struct intel_device_info intel_i945gm_info = { + .gen = 3, .is_i945gm = 1, .is_mobile = 1, + .has_hotplug = 1, .cursor_needs_physical = 1, + .has_overlay = 1, .overlay_needs_physical = 1, + .supports_tv = 1, +}; + +static const struct intel_device_info intel_i965g_info = { + .gen = 4, .is_broadwater = 1, + .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_i965gm_info = { + .gen = 4, .is_crestline = 1, + .is_mobile = 1, .has_fbc = 1, .has_hotplug = 1, + .has_overlay = 1, + .supports_tv = 1, +}; + +static const struct intel_device_info intel_g33_info = { + .gen = 3, .is_g33 = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_g45_info = { + .gen = 4, .is_g4x = 1, .need_gfx_hws = 1, + .has_pipe_cxsr = 1, .has_hotplug = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_gm45_info = { + .gen = 4, .is_g4x = 1, + .is_mobile = 1, .need_gfx_hws = 1, .has_fbc = 1, + .has_pipe_cxsr = 1, .has_hotplug = 1, + .supports_tv = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_pineview_info = { + .gen = 3, .is_g33 = 1, .is_pineview = 1, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_overlay = 1, +}; + +static const struct intel_device_info intel_ironlake_d_info = { + .gen = 5, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_ironlake_m_info = { + .gen = 5, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 1, + .has_bsd_ring = 1, +}; + +static const struct intel_device_info intel_sandybridge_d_info = { + .gen = 6, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_sandybridge_m_info = { + .gen = 6, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_ivybridge_d_info = { + .is_ivybridge = 1, .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_ivybridge_m_info = { + .is_ivybridge = 1, .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, /* FBC is not enabled on Ivybridge mobile yet */ + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_valleyview_m_info = { + .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .is_valleyview = 1, +}; + +static const struct intel_device_info intel_valleyview_d_info = { + .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_fbc = 0, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .is_valleyview = 1, +}; + +static const struct intel_device_info intel_haswell_d_info = { + .is_haswell = 1, .gen = 7, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct intel_device_info intel_haswell_m_info = { + .is_haswell = 1, .gen = 7, .is_mobile = 1, + .need_gfx_hws = 1, .has_hotplug = 1, + .has_bsd_ring = 1, + .has_blt_ring = 1, + .has_llc = 1, + .has_force_wake = 1, +}; + +static const struct pci_device_id pciidlist[] = { /* aka */ + INTEL_VGA_DEVICE(0x0402, &intel_haswell_d_info), /* GT1 desktop */ + INTEL_VGA_DEVICE(0x0412, &intel_haswell_d_info), /* GT2 desktop */ + INTEL_VGA_DEVICE(0x0422, &intel_haswell_d_info), /* GT2 desktop */ + INTEL_VGA_DEVICE(0x040a, &intel_haswell_d_info), /* GT1 server */ + INTEL_VGA_DEVICE(0x041a, &intel_haswell_d_info), /* GT2 server */ + INTEL_VGA_DEVICE(0x042a, &intel_haswell_d_info), /* GT2 server */ + INTEL_VGA_DEVICE(0x0406, &intel_haswell_m_info), /* GT1 mobile */ + INTEL_VGA_DEVICE(0x0416, &intel_haswell_m_info), /* GT2 mobile */ + INTEL_VGA_DEVICE(0x0426, &intel_haswell_m_info), /* GT2 mobile */ + INTEL_VGA_DEVICE(0x0C02, &intel_haswell_d_info), /* SDV GT1 desktop */ + INTEL_VGA_DEVICE(0x0C12, &intel_haswell_d_info), /* SDV GT2 desktop */ + INTEL_VGA_DEVICE(0x0C22, &intel_haswell_d_info), /* SDV GT2 desktop */ + INTEL_VGA_DEVICE(0x0C0A, &intel_haswell_d_info), /* SDV GT1 server */ + INTEL_VGA_DEVICE(0x0C1A, &intel_haswell_d_info), /* SDV GT2 server */ + INTEL_VGA_DEVICE(0x0C2A, &intel_haswell_d_info), /* SDV GT2 server */ + INTEL_VGA_DEVICE(0x0C06, &intel_haswell_m_info), /* SDV GT1 mobile */ + INTEL_VGA_DEVICE(0x0C16, &intel_haswell_m_info), /* SDV GT2 mobile */ + INTEL_VGA_DEVICE(0x0C26, &intel_haswell_m_info), /* SDV GT2 mobile */ + INTEL_VGA_DEVICE(0x0A02, &intel_haswell_d_info), /* ULT GT1 desktop */ + INTEL_VGA_DEVICE(0x0A12, &intel_haswell_d_info), /* ULT GT2 desktop */ + INTEL_VGA_DEVICE(0x0A22, &intel_haswell_d_info), /* ULT GT2 desktop */ + INTEL_VGA_DEVICE(0x0A0A, &intel_haswell_d_info), /* ULT GT1 server */ + INTEL_VGA_DEVICE(0x0A1A, &intel_haswell_d_info), /* ULT GT2 server */ + INTEL_VGA_DEVICE(0x0A2A, &intel_haswell_d_info), /* ULT GT2 server */ + INTEL_VGA_DEVICE(0x0A06, &intel_haswell_m_info), /* ULT GT1 mobile */ + INTEL_VGA_DEVICE(0x0A16, &intel_haswell_m_info), /* ULT GT2 mobile */ + INTEL_VGA_DEVICE(0x0A26, &intel_haswell_m_info), /* ULT GT2 mobile */ + INTEL_VGA_DEVICE(0x0D12, &intel_haswell_d_info), /* CRW GT1 desktop */ + INTEL_VGA_DEVICE(0x0D22, &intel_haswell_d_info), /* CRW GT2 desktop */ + INTEL_VGA_DEVICE(0x0D32, &intel_haswell_d_info), /* CRW GT2 desktop */ + INTEL_VGA_DEVICE(0x0D1A, &intel_haswell_d_info), /* CRW GT1 server */ + INTEL_VGA_DEVICE(0x0D2A, &intel_haswell_d_info), /* CRW GT2 server */ + INTEL_VGA_DEVICE(0x0D3A, &intel_haswell_d_info), /* CRW GT2 server */ + INTEL_VGA_DEVICE(0x0D16, &intel_haswell_m_info), /* CRW GT1 mobile */ + INTEL_VGA_DEVICE(0x0D26, &intel_haswell_m_info), /* CRW GT2 mobile */ + INTEL_VGA_DEVICE(0x0D36, &intel_haswell_m_info), /* CRW GT2 mobile */ + {0, 0, 0} +}; + +#if defined(CONFIG_DRM_I915_KMS) +MODULE_DEVICE_TABLE(pci, pciidlist); +#endif + +void intel_detect_pch(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct pci_dev *pch; + + /* + * The reason to probe ISA bridge instead of Dev31:Fun0 is to + * make graphics device passthrough work easy for VMM, that only + * need to expose ISA bridge to let driver know the real hardware + * underneath. This is a requirement from virtualization team. + */ + pch = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL); + if (pch) { + if (pch->vendor == PCI_VENDOR_ID_INTEL) { + unsigned short id; + id = pch->device & INTEL_PCH_DEVICE_ID_MASK; + dev_priv->pch_id = id; + + if (id == INTEL_PCH_IBX_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_IBX; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found Ibex Peak PCH\n"); + WARN_ON(!IS_GEN5(dev)); + } else if (id == INTEL_PCH_CPT_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_CPT; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found CougarPoint PCH\n"); + WARN_ON(!(IS_GEN6(dev) || IS_IVYBRIDGE(dev))); + } else if (id == INTEL_PCH_PPT_DEVICE_ID_TYPE) { + /* PantherPoint is CPT compatible */ + dev_priv->pch_type = PCH_CPT; + dev_priv->num_pch_pll = 2; + DRM_DEBUG_KMS("Found PatherPoint PCH\n"); + WARN_ON(!(IS_GEN6(dev) || IS_IVYBRIDGE(dev))); + } else if (id == INTEL_PCH_LPT_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_LPT; + dev_priv->num_pch_pll = 0; + DRM_DEBUG_KMS("Found LynxPoint PCH\n"); + WARN_ON(!IS_HASWELL(dev)); + } else if (id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) { + dev_priv->pch_type = PCH_LPT; + dev_priv->num_pch_pll = 0; + DRM_DEBUG_KMS("Found LynxPoint LP PCH\n"); + WARN_ON(!IS_HASWELL(dev)); + } + BUG_ON(dev_priv->num_pch_pll > I915_NUM_PLLS); + } + pci_dev_put(pch); + } +} + +bool i915_semaphore_is_enabled(struct drm_device *dev) +{ + if (INTEL_INFO(dev)->gen < 6) + return 0; + + if (i915_semaphores >= 0) + return i915_semaphores; + +#ifdef CONFIG_INTEL_IOMMU + /* Enable semaphores on SNB when IO remapping is off */ + if (INTEL_INFO(dev)->gen == 6 && intel_iommu_gfx_mapped) + return false; +#endif + + return 1; +} + +static int i915_drm_freeze(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + drm_kms_helper_poll_disable(dev); + + pci_save_state(dev->pdev); + + /* If KMS is active, we do the leavevt stuff here */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + int error = i915_gem_idle(dev); + if (error) { + dev_err(&dev->pdev->dev, + "GEM idle failed, resume might fail\n"); + return error; + } + + cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work); + + intel_modeset_disable(dev); + + drm_irq_uninstall(dev); + } + + i915_save_state(dev); + + intel_opregion_fini(dev); + + /* Modeset on resume, not lid events */ + dev_priv->modeset_on_lid = 0; + + console_lock(); + intel_fbdev_set_suspend(dev, 1); + console_unlock(); + + return 0; +} + +int i915_suspend(struct drm_device *dev, pm_message_t state) +{ + int error; + + if (!dev || !dev->dev_private) { + DRM_ERROR("dev: %p\n", dev); + DRM_ERROR("DRM not initialized, aborting suspend.\n"); + return -ENODEV; + } + + if (state.event == PM_EVENT_PRETHAW) + return 0; + + + if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; + + error = i915_drm_freeze(dev); + if (error) + return error; + + if (state.event == PM_EVENT_SUSPEND) { + /* Shut down the device */ + pci_disable_device(dev->pdev); + pci_set_power_state(dev->pdev, PCI_D3hot); + } + + return 0; +} + +void intel_console_resume(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, + console_resume_work); + struct drm_device *dev = dev_priv->dev; + + console_lock(); + intel_fbdev_set_suspend(dev, 0); + console_unlock(); +} + +static int __i915_drm_thaw(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int error = 0; + + i915_restore_state(dev); + intel_opregion_setup(dev); + + /* KMS EnterVT equivalent */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_init_pch_refclk(dev); + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.suspended = 0; + + error = i915_gem_init_hw(dev); + mutex_unlock(&dev->struct_mutex); + + intel_modeset_init_hw(dev); + intel_modeset_setup_hw_state(dev); + drm_irq_install(dev); + } + + intel_opregion_init(dev); + + dev_priv->modeset_on_lid = 0; + + /* + * The console lock can be pretty contented on resume due + * to all the printk activity. Try to keep it out of the hot + * path of resume if possible. + */ + if (console_trylock()) { + intel_fbdev_set_suspend(dev, 0); + console_unlock(); + } else { + schedule_work(&dev_priv->console_resume_work); + } + + return error; +} + +static int i915_drm_thaw(struct drm_device *dev) +{ + int error = 0; + + intel_gt_reset(dev); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + mutex_lock(&dev->struct_mutex); + i915_gem_restore_gtt_mappings(dev); + mutex_unlock(&dev->struct_mutex); + } + + __i915_drm_thaw(dev); + + return error; +} + +int i915_resume(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; + + if (pci_enable_device(dev->pdev)) + return -EIO; + + pci_set_master(dev->pdev); + + intel_gt_reset(dev); + + /* + * Platforms with opregion should have sane BIOS, older ones (gen3 and + * earlier) need this since the BIOS might clear all our scratch PTEs. + */ + if (drm_core_check_feature(dev, DRIVER_MODESET) && + !dev_priv->opregion.header) { + mutex_lock(&dev->struct_mutex); + i915_gem_restore_gtt_mappings(dev); + mutex_unlock(&dev->struct_mutex); + } + + ret = __i915_drm_thaw(dev); + if (ret) + return ret; + + drm_kms_helper_poll_enable(dev); + return 0; +} + +static int i8xx_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_I85X(dev)) + return -ENODEV; + + I915_WRITE(D_STATE, I915_READ(D_STATE) | DSTATE_GFX_RESET_I830); + POSTING_READ(D_STATE); + + if (IS_I830(dev) || IS_845G(dev)) { + I915_WRITE(DEBUG_RESET_I830, + DEBUG_RESET_DISPLAY | + DEBUG_RESET_RENDER | + DEBUG_RESET_FULL); + POSTING_READ(DEBUG_RESET_I830); + msleep(1); + + I915_WRITE(DEBUG_RESET_I830, 0); + POSTING_READ(DEBUG_RESET_I830); + } + + msleep(1); + + I915_WRITE(D_STATE, I915_READ(D_STATE) & ~DSTATE_GFX_RESET_I830); + POSTING_READ(D_STATE); + + return 0; +} + +static int i965_reset_complete(struct drm_device *dev) +{ + u8 gdrst; + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + return (gdrst & GRDOM_RESET_ENABLE) == 0; +} + +static int i965_do_reset(struct drm_device *dev) +{ + int ret; + u8 gdrst; + + /* + * Set the domains we want to reset (GRDOM/bits 2 and 3) as + * well as the reset bit (GR/bit 0). Setting the GR bit + * triggers the reset; when done, the hardware will clear it. + */ + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + pci_write_config_byte(dev->pdev, I965_GDRST, + gdrst | GRDOM_RENDER | + GRDOM_RESET_ENABLE); + ret = wait_for(i965_reset_complete(dev), 500); + if (ret) + return ret; + + /* We can't reset render&media without also resetting display ... */ + pci_read_config_byte(dev->pdev, I965_GDRST, &gdrst); + pci_write_config_byte(dev->pdev, I965_GDRST, + gdrst | GRDOM_MEDIA | + GRDOM_RESET_ENABLE); + + return wait_for(i965_reset_complete(dev), 500); +} + +static int ironlake_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 gdrst; + int ret; + + gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); + I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, + gdrst | GRDOM_RENDER | GRDOM_RESET_ENABLE); + ret = wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); + if (ret) + return ret; + + /* We can't reset render&media without also resetting display ... */ + gdrst = I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR); + I915_WRITE(MCHBAR_MIRROR_BASE + ILK_GDSR, + gdrst | GRDOM_MEDIA | GRDOM_RESET_ENABLE); + return wait_for(I915_READ(MCHBAR_MIRROR_BASE + ILK_GDSR) & 0x1, 500); +} + +static int gen6_do_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + unsigned long irqflags; + + /* Hold gt_lock across reset to prevent any register access + * with forcewake not set correctly + */ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + + /* Reset the chip */ + + /* GEN6_GDRST is not in the gt power well, no need to check + * for fifo space for the write or forcewake the chip for + * the read + */ + I915_WRITE_NOTRACE(GEN6_GDRST, GEN6_GRDOM_FULL); + + /* Spin waiting for the device to ack the reset request */ + ret = wait_for((I915_READ_NOTRACE(GEN6_GDRST) & GEN6_GRDOM_FULL) == 0, 500); + + /* If reset with a user forcewake, try to restore, otherwise turn it off */ + if (dev_priv->forcewake_count) + dev_priv->gt.force_wake_get(dev_priv); + else + dev_priv->gt.force_wake_put(dev_priv); + + /* Restore fifo count */ + dev_priv->gt_fifo_count = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); + return ret; +} + +int intel_gpu_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret = -ENODEV; + + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + ret = gen6_do_reset(dev); + break; + case 5: + ret = ironlake_do_reset(dev); + break; + case 4: + ret = i965_do_reset(dev); + break; + case 2: + ret = i8xx_do_reset(dev); + break; + } + + /* Also reset the gpu hangman. */ + if (dev_priv->stop_rings) { + DRM_DEBUG("Simulated gpu hang, resetting stop_rings\n"); + dev_priv->stop_rings = 0; + if (ret == -ENODEV) { + DRM_ERROR("Reset not implemented, but ignoring " + "error for simulated gpu hangs\n"); + ret = 0; + } + } + + return ret; +} + +/** + * i915_reset - reset chip after a hang + * @dev: drm device to reset + * + * Reset the chip. Useful if a hang is detected. Returns zero on successful + * reset or otherwise an error code. + * + * Procedure is fairly simple: + * - reset the chip using the reset reg + * - re-init context state + * - re-init hardware status page + * - re-init ring buffer + * - re-init interrupt state + * - re-init display + */ +int i915_reset(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (!i915_try_reset) + return 0; + + mutex_lock(&dev->struct_mutex); + + i915_gem_reset(dev); + + ret = -ENODEV; + if (get_seconds() - dev_priv->last_gpu_reset < 5) + DRM_ERROR("GPU hanging too fast, declaring wedged!\n"); + else + ret = intel_gpu_reset(dev); + + dev_priv->last_gpu_reset = get_seconds(); + if (ret) { + DRM_ERROR("Failed to reset chip.\n"); + mutex_unlock(&dev->struct_mutex); + return ret; + } + + /* Ok, now get things going again... */ + + /* + * Everything depends on having the GTT running, so we need to start + * there. Fortunately we don't need to do this unless we reset the + * chip at a PCI level. + * + * Next we need to restore the context, but we don't use those + * yet either... + * + * Ring buffer needs to be re-initialized in the KMS case, or if X + * was running at the time of the reset (i.e. we weren't VT + * switched away). + */ + if (drm_core_check_feature(dev, DRIVER_MODESET) || + !dev_priv->mm.suspended) { + struct intel_ring_buffer *ring; + int i; + + dev_priv->mm.suspended = 0; + + i915_gem_init_swizzling(dev); + + for_each_ring(ring, dev_priv, i) + ring->init(ring); + + i915_gem_context_init(dev); + i915_gem_init_ppgtt(dev); + + /* + * It would make sense to re-init all the other hw state, at + * least the rps/rc6/emon init done within modeset_init_hw. For + * some unknown reason, this blows up my ilk, so don't. + */ + + mutex_unlock(&dev->struct_mutex); + + drm_irq_uninstall(dev); + drm_irq_install(dev); + } else { + mutex_unlock(&dev->struct_mutex); + } + + return 0; +} + +static int __devinit +i915_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) +{ + int ret; + struct intel_device_info *intel_info = + (struct intel_device_info *) ent->driver_data; + + /* Only bind to function 0 of the device. Early generations + * used function 1 as a placeholder for multi-head. This causes + * us confusion instead, especially on the systems where both + * functions have the same PCI-ID! + */ + if (PCI_FUNC(pdev->devfn)) + return -ENODEV; + + /* We've managed to ship a kms-enabled ddx that shipped with an XvMC + * implementation for gen3 (and only gen3) that used legacy drm maps + * (gasp!) to share buffers between X and the client. Hence we need to + * keep around the fake agp stuff for gen3, even when kms is enabled. */ + if (intel_info->gen != 3) { + driver.driver_features &= + ~(DRIVER_USE_AGP | DRIVER_REQUIRE_AGP); + } else if (!intel_agp_enabled) { + DRM_ERROR("drm/i915 can't work without intel_agp module!\n"); + return -ENODEV; + } + + ret = drm_get_pci_dev(pdev, ent, &driver); + + if (!ret) + i915_hsw_enabled = 1; + return ret; +} + +static void +i915_pci_remove(struct pci_dev *pdev) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + + drm_put_dev(dev); +} + +static int i915_pm_suspend(struct device *dev) +{ + 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"); + return -ENODEV; + } + + if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) + return 0; + + error = i915_drm_freeze(drm_dev); + if (error) + return error; + + pci_disable_device(pdev); + pci_set_power_state(pdev, PCI_D3hot); + + return 0; +} + +static int i915_pm_resume(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_resume(drm_dev); +} + +static int i915_pm_freeze(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + if (!drm_dev || !drm_dev->dev_private) { + dev_err(dev, "DRM not initialized, aborting suspend.\n"); + return -ENODEV; + } + + return i915_drm_freeze(drm_dev); +} + +static int i915_pm_thaw(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_drm_thaw(drm_dev); +} + +static int i915_pm_poweroff(struct device *dev) +{ + struct pci_dev *pdev = to_pci_dev(dev); + struct drm_device *drm_dev = pci_get_drvdata(pdev); + + return i915_drm_freeze(drm_dev); +} + +static const struct dev_pm_ops i915_pm_ops = { + .suspend = i915_pm_suspend, + .resume = i915_pm_resume, + .freeze = i915_pm_freeze, + .thaw = i915_pm_thaw, + .poweroff = i915_pm_poweroff, + .restore = i915_pm_resume, +}; + +static const struct vm_operations_struct i915_gem_vm_ops = { + .fault = i915_gem_fault, + .open = drm_gem_vm_open, + .close = drm_gem_vm_close, +}; + +static const struct file_operations i915_driver_fops = { + .owner = THIS_MODULE, + .open = drm_open, + .release = drm_release, + .unlocked_ioctl = drm_ioctl, + .mmap = drm_gem_mmap, + .poll = drm_poll, + .fasync = drm_fasync, + .read = drm_read, +#ifdef CONFIG_COMPAT + .compat_ioctl = i915_compat_ioctl, +#endif + .llseek = noop_llseek, +}; + +static struct drm_driver driver = { + /* Don't use MTRRs here; the Xserver or userspace app should + * deal with them for Intel hardware. + */ + .driver_features = + DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/ + DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_GEM | DRIVER_PRIME, + .load = i915_driver_load, + .unload = i915_driver_unload, + .open = i915_driver_open, + .lastclose = i915_driver_lastclose, + .preclose = i915_driver_preclose, + .postclose = i915_driver_postclose, + + /* Used in place of i915_pm_ops for non-DRIVER_MODESET */ + .suspend = i915_suspend, + .resume = i915_resume, + + .device_is_agp = i915_driver_device_is_agp, + .master_create = i915_master_create, + .master_destroy = i915_master_destroy, +#if defined(CONFIG_DEBUG_FS) + .debugfs_init = i915_debugfs_init, + .debugfs_cleanup = i915_debugfs_cleanup, +#endif + .gem_init_object = i915_gem_init_object, + .gem_free_object = i915_gem_free_object, + .gem_vm_ops = &i915_gem_vm_ops, + + .prime_handle_to_fd = drm_gem_prime_handle_to_fd, + .prime_fd_to_handle = drm_gem_prime_fd_to_handle, + .gem_prime_export = i915_gem_prime_export, + .gem_prime_import = i915_gem_prime_import, + + .dumb_create = i915_gem_dumb_create, + .dumb_map_offset = i915_gem_mmap_gtt, + .dumb_destroy = i915_gem_dumb_destroy, + .ioctls = i915_ioctls, + .fops = &i915_driver_fops, + .name = DRIVER_NAME, + .desc = DRIVER_DESC, + .date = DRIVER_DATE, + .major = DRIVER_MAJOR, + .minor = DRIVER_MINOR, + .patchlevel = DRIVER_PATCHLEVEL, +}; + +static struct pci_driver i915_pci_driver = { + .name = DRIVER_NAME, + .id_table = pciidlist, + .probe = i915_pci_probe, + .remove = i915_pci_remove, + .driver.pm = &i915_pm_ops, +}; + +static int __init i915_init(void) +{ + driver.num_ioctls = i915_max_ioctl; + + /* + * If CONFIG_DRM_I915_KMS is set, default to KMS unless + * explicitly disabled with the module pararmeter. + * + * Otherwise, just follow the parameter (defaulting to off). + * + * Allow optional vga_text_mode_force boot option to override + * the default behavior. + */ +#if defined(CONFIG_DRM_I915_KMS) + if (i915_modeset != 0) + driver.driver_features |= DRIVER_MODESET; +#endif + if (i915_modeset == 1) + driver.driver_features |= DRIVER_MODESET; + +#ifdef CONFIG_VGA_CONSOLE + if (vgacon_text_force() && i915_modeset == -1) + driver.driver_features &= ~DRIVER_MODESET; +#endif + + if (!(driver.driver_features & DRIVER_MODESET)) + driver.get_vblank_timestamp = NULL; + + return drm_pci_init(&driver, &i915_pci_driver); +} + +static void __exit i915_exit(void) +{ + drm_pci_exit(&driver, &i915_pci_driver); +} + +module_init(i915_init); +module_exit(i915_exit); + +MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_LICENSE("GPL and additional rights"); + +/* We give fast paths for the really cool registers */ +#define NEEDS_FORCE_WAKE(dev_priv, reg) \ + ((HAS_FORCE_WAKE((dev_priv)->dev)) && \ + ((reg) < 0x40000) && \ + ((reg) != FORCEWAKE)) + +static bool IS_DISPLAYREG(u32 reg) +{ + /* + * This should make it easier to transition modules over to the + * new register block scheme, since we can do it incrementally. + */ + if (reg >= VLV_DISPLAY_BASE) + return false; + + if (reg >= RENDER_RING_BASE && + reg < RENDER_RING_BASE + 0xff) + return false; + if (reg >= GEN6_BSD_RING_BASE && + reg < GEN6_BSD_RING_BASE + 0xff) + return false; + if (reg >= BLT_RING_BASE && + reg < BLT_RING_BASE + 0xff) + return false; + + if (reg == PGTBL_ER) + return false; + + if (reg >= IPEIR_I965 && + reg < HWSTAM) + return false; + + if (reg == MI_MODE) + return false; + + if (reg == GFX_MODE_GEN7) + return false; + + if (reg == RENDER_HWS_PGA_GEN7 || + reg == BSD_HWS_PGA_GEN7 || + reg == BLT_HWS_PGA_GEN7) + return false; + + if (reg == GEN6_BSD_SLEEP_PSMI_CONTROL || + reg == GEN6_BSD_RNCID) + return false; + + if (reg == GEN6_BLITTER_ECOSKPD) + return false; + + if (reg >= 0x4000c && + reg <= 0x4002c) + return false; + + if (reg >= 0x4f000 && + reg <= 0x4f08f) + return false; + + if (reg >= 0x4f100 && + reg <= 0x4f11f) + return false; + + if (reg >= VLV_MASTER_IER && + reg <= GEN6_PMIER) + return false; + + if (reg >= FENCE_REG_SANDYBRIDGE_0 && + reg < (FENCE_REG_SANDYBRIDGE_0 + (16*8))) + return false; + + if (reg >= VLV_IIR_RW && + reg <= VLV_ISR) + return false; + + if (reg == FORCEWAKE_VLV || + reg == FORCEWAKE_ACK_VLV) + return false; + + if (reg == GEN6_GDRST) + return false; + + switch (reg) { + case _3D_CHICKEN3: + case IVB_CHICKEN3: + case GEN7_COMMON_SLICE_CHICKEN1: + case GEN7_L3CNTLREG1: + case GEN7_L3_CHICKEN_MODE_REGISTER: + case GEN7_ROW_CHICKEN2: + case GEN7_L3SQCREG4: + case GEN7_SQ_CHICKEN_MBCUNIT_CONFIG: + case GEN7_HALF_SLICE_CHICKEN1: + case GEN6_MBCTL: + case GEN6_UCGCTL2: + return false; + default: + break; + } + + return true; +} + +static void +ilk_dummy_write(struct drm_i915_private *dev_priv) +{ + /* WaIssueDummyWriteToWakeupFromRC6: Issue a dummy write to wake up the + * chip from rc6 before touching it for real. MI_MODE is masked, hence + * harmless to write 0 into. */ + I915_WRITE_NOTRACE(MI_MODE, 0); +} + +#define __i915_read(x, y) \ +u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg) { \ + u##x val = 0; \ + if (IS_GEN5(dev_priv->dev)) \ + ilk_dummy_write(dev_priv); \ + if (NEEDS_FORCE_WAKE((dev_priv), (reg))) { \ + unsigned long irqflags; \ + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); \ + if (dev_priv->forcewake_count == 0) \ + dev_priv->gt.force_wake_get(dev_priv); \ + val = read##y(dev_priv->regs + reg); \ + if (dev_priv->forcewake_count == 0) \ + dev_priv->gt.force_wake_put(dev_priv); \ + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); \ + } else if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \ + val = read##y(dev_priv->regs + reg + 0x180000); \ + } else { \ + val = read##y(dev_priv->regs + reg); \ + } \ + trace_i915_reg_rw(false, reg, val, sizeof(val)); \ + return val; \ +} + +__i915_read(8, b) +__i915_read(16, w) +__i915_read(32, l) +__i915_read(64, q) +#undef __i915_read + +#define __i915_write(x, y) \ +void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \ + u32 __fifo_ret = 0; \ + trace_i915_reg_rw(true, reg, val, sizeof(val)); \ + if (NEEDS_FORCE_WAKE((dev_priv), (reg))) { \ + __fifo_ret = __gen6_gt_wait_for_fifo(dev_priv); \ + } \ + if (IS_GEN5(dev_priv->dev)) \ + ilk_dummy_write(dev_priv); \ + if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \ + DRM_ERROR("Unknown unclaimed register before writing to %x\n", reg); \ + I915_WRITE_NOTRACE(GEN7_ERR_INT, ERR_INT_MMIO_UNCLAIMED); \ + } \ + if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \ + write##y(val, dev_priv->regs + reg + 0x180000); \ + } else { \ + write##y(val, dev_priv->regs + reg); \ + } \ + if (unlikely(__fifo_ret)) { \ + gen6_gt_check_fifodbg(dev_priv); \ + } \ + if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \ + DRM_ERROR("Unclaimed write to %x\n", reg); \ + writel(ERR_INT_MMIO_UNCLAIMED, dev_priv->regs + GEN7_ERR_INT); \ + } \ +} +__i915_write(8, b) +__i915_write(16, w) +__i915_write(32, l) +__i915_write(64, q) +#undef __i915_write + +static const struct register_whitelist { + uint64_t offset; + uint32_t size; + uint32_t gen_bitmask; /* support gens, 0x10 for 4, 0x30 for 4 and 5, etc. */ +} whitelist[] = { + { RING_TIMESTAMP(RENDER_RING_BASE), 8, 0xF0 }, +}; + +int i915_reg_read_ioctl(struct drm_device *dev, + void *data, struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_reg_read *reg = data; + struct register_whitelist const *entry = whitelist; + int i; + + for (i = 0; i < ARRAY_SIZE(whitelist); i++, entry++) { + if (entry->offset == reg->offset && + (1 << INTEL_INFO(dev)->gen & entry->gen_bitmask)) + break; + } + + if (i == ARRAY_SIZE(whitelist)) + return -EINVAL; + + switch (entry->size) { + case 8: + reg->val = I915_READ64(reg->offset); + break; + case 4: + reg->val = I915_READ(reg->offset); + break; + case 2: + reg->val = I915_READ16(reg->offset); + break; + case 1: + reg->val = I915_READ8(reg->offset); + break; + default: + WARN_ON(1); + return -EINVAL; + } + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_opregion.c +++ linux-3.5.0/ubuntu/i915/intel_opregion.c @@ -0,0 +1,556 @@ +/* + * Copyright 2008 Intel Corporation + * Copyright 2008 Red Hat + * + * 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 INTEL 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. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include +#include + +#include "drmP.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "intel_drv.h" + +#define PCI_ASLE 0xe4 +#define PCI_ASLS 0xfc + +#define OPREGION_HEADER_OFFSET 0 +#define OPREGION_ACPI_OFFSET 0x100 +#define ACPI_CLID 0x01ac /* current lid state indicator */ +#define ACPI_CDCK 0x01b0 /* current docking state indicator */ +#define OPREGION_SWSCI_OFFSET 0x200 +#define OPREGION_ASLE_OFFSET 0x300 +#define OPREGION_VBT_OFFSET 0x400 + +#define OPREGION_SIGNATURE "IntelGraphicsMem" +#define MBOX_ACPI (1<<0) +#define MBOX_SWSCI (1<<1) +#define MBOX_ASLE (1<<2) + +struct opregion_header { + u8 signature[16]; + u32 size; + u32 opregion_ver; + u8 bios_ver[32]; + u8 vbios_ver[16]; + u8 driver_ver[16]; + u32 mboxes; + u8 reserved[164]; +} __attribute__((packed)); + +/* OpRegion mailbox #1: public ACPI methods */ +struct opregion_acpi { + u32 drdy; /* driver readiness */ + u32 csts; /* notification status */ + u32 cevt; /* current event */ + u8 rsvd1[20]; + u32 didl[8]; /* supported display devices ID list */ + u32 cpdl[8]; /* currently presented display list */ + u32 cadl[8]; /* currently active display list */ + u32 nadl[8]; /* next active devices list */ + u32 aslp; /* ASL sleep time-out */ + u32 tidx; /* toggle table index */ + u32 chpd; /* current hotplug enable indicator */ + u32 clid; /* current lid state*/ + u32 cdck; /* current docking state */ + u32 sxsw; /* Sx state resume */ + u32 evts; /* ASL supported events */ + u32 cnot; /* current OS notification */ + u32 nrdy; /* driver status */ + u8 rsvd2[60]; +} __attribute__((packed)); + +/* OpRegion mailbox #2: SWSCI */ +struct opregion_swsci { + u32 scic; /* SWSCI command|status|data */ + u32 parm; /* command parameters */ + u32 dslp; /* driver sleep time-out */ + u8 rsvd[244]; +} __attribute__((packed)); + +/* OpRegion mailbox #3: ASLE */ +struct opregion_asle { + u32 ardy; /* driver readiness */ + u32 aslc; /* ASLE interrupt command */ + u32 tche; /* technology enabled indicator */ + u32 alsi; /* current ALS illuminance reading */ + u32 bclp; /* backlight brightness to set */ + u32 pfit; /* panel fitting state */ + u32 cblv; /* current brightness level */ + u16 bclm[20]; /* backlight level duty cycle mapping table */ + u32 cpfm; /* current panel fitting mode */ + u32 epfm; /* enabled panel fitting modes */ + u8 plut[74]; /* panel LUT and identifier */ + u32 pfmb; /* PWM freq and min brightness */ + u8 rsvd[102]; +} __attribute__((packed)); + +/* ASLE irq request bits */ +#define ASLE_SET_ALS_ILLUM (1 << 0) +#define ASLE_SET_BACKLIGHT (1 << 1) +#define ASLE_SET_PFIT (1 << 2) +#define ASLE_SET_PWM_FREQ (1 << 3) +#define ASLE_REQ_MSK 0xf + +/* response bits of ASLE irq request */ +#define ASLE_ALS_ILLUM_FAILED (1<<10) +#define ASLE_BACKLIGHT_FAILED (1<<12) +#define ASLE_PFIT_FAILED (1<<14) +#define ASLE_PWM_FREQ_FAILED (1<<16) + +/* ASLE backlight brightness to set */ +#define ASLE_BCLP_VALID (1<<31) +#define ASLE_BCLP_MSK (~(1<<31)) + +/* ASLE panel fitting request */ +#define ASLE_PFIT_VALID (1<<31) +#define ASLE_PFIT_CENTER (1<<0) +#define ASLE_PFIT_STRETCH_TEXT (1<<1) +#define ASLE_PFIT_STRETCH_GFX (1<<2) + +/* PWM frequency and minimum brightness */ +#define ASLE_PFMB_BRIGHTNESS_MASK (0xff) +#define ASLE_PFMB_BRIGHTNESS_VALID (1<<8) +#define ASLE_PFMB_PWM_MASK (0x7ffffe00) +#define ASLE_PFMB_PWM_VALID (1<<31) + +#define ASLE_CBLV_VALID (1<<31) + +#define ACPI_OTHER_OUTPUT (0<<8) +#define ACPI_VGA_OUTPUT (1<<8) +#define ACPI_TV_OUTPUT (2<<8) +#define ACPI_DIGITAL_OUTPUT (3<<8) +#define ACPI_LVDS_OUTPUT (4<<8) + +#ifdef CONFIG_ACPI +static u32 asle_set_backlight(struct drm_device *dev, u32 bclp) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 max; + + DRM_DEBUG_DRIVER("bclp = 0x%08x\n", bclp); + + if (!(bclp & ASLE_BCLP_VALID)) + return ASLE_BACKLIGHT_FAILED; + + bclp &= ASLE_BCLP_MSK; + if (bclp > 255) + return ASLE_BACKLIGHT_FAILED; + + max = intel_panel_get_max_backlight(dev); + intel_panel_set_backlight(dev, bclp * max / 255); + iowrite32((bclp*0x64)/0xff | ASLE_CBLV_VALID, &asle->cblv); + + return 0; +} + +static u32 asle_set_als_illum(struct drm_device *dev, u32 alsi) +{ + /* alsi is the current ALS reading in lux. 0 indicates below sensor + range, 0xffff indicates above sensor range. 1-0xfffe are valid */ + return 0; +} + +static u32 asle_set_pwm_freq(struct drm_device *dev, u32 pfmb) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + if (pfmb & ASLE_PFMB_PWM_VALID) { + u32 blc_pwm_ctl = I915_READ(BLC_PWM_CTL); + u32 pwm = pfmb & ASLE_PFMB_PWM_MASK; + blc_pwm_ctl &= BACKLIGHT_DUTY_CYCLE_MASK; + pwm = pwm >> 9; + /* FIXME - what do we do with the PWM? */ + } + return 0; +} + +static u32 asle_set_pfit(struct drm_device *dev, u32 pfit) +{ + /* Panel fitting is currently controlled by the X code, so this is a + noop until modesetting support works fully */ + if (!(pfit & ASLE_PFIT_VALID)) + return ASLE_PFIT_FAILED; + return 0; +} + +void intel_opregion_asle_intr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 asle_stat = 0; + u32 asle_req; + + if (!asle) + return; + + asle_req = ioread32(&asle->aslc) & ASLE_REQ_MSK; + + if (!asle_req) { + DRM_DEBUG_DRIVER("non asle set request??\n"); + return; + } + + if (asle_req & ASLE_SET_ALS_ILLUM) + asle_stat |= asle_set_als_illum(dev, ioread32(&asle->alsi)); + + if (asle_req & ASLE_SET_BACKLIGHT) + asle_stat |= asle_set_backlight(dev, ioread32(&asle->bclp)); + + if (asle_req & ASLE_SET_PFIT) + asle_stat |= asle_set_pfit(dev, ioread32(&asle->pfit)); + + if (asle_req & ASLE_SET_PWM_FREQ) + asle_stat |= asle_set_pwm_freq(dev, ioread32(&asle->pfmb)); + + iowrite32(asle_stat, &asle->aslc); +} + +void intel_opregion_gse_intr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + u32 asle_stat = 0; + u32 asle_req; + + if (!asle) + return; + + asle_req = ioread32(&asle->aslc) & ASLE_REQ_MSK; + + if (!asle_req) { + DRM_DEBUG_DRIVER("non asle set request??\n"); + return; + } + + if (asle_req & ASLE_SET_ALS_ILLUM) { + DRM_DEBUG_DRIVER("Illum is not supported\n"); + asle_stat |= ASLE_ALS_ILLUM_FAILED; + } + + if (asle_req & ASLE_SET_BACKLIGHT) + asle_stat |= asle_set_backlight(dev, ioread32(&asle->bclp)); + + if (asle_req & ASLE_SET_PFIT) { + DRM_DEBUG_DRIVER("Pfit is not supported\n"); + asle_stat |= ASLE_PFIT_FAILED; + } + + if (asle_req & ASLE_SET_PWM_FREQ) { + DRM_DEBUG_DRIVER("PWM freq is not supported\n"); + asle_stat |= ASLE_PWM_FREQ_FAILED; + } + + iowrite32(asle_stat, &asle->aslc); +} +#define ASLE_ALS_EN (1<<0) +#define ASLE_BLC_EN (1<<1) +#define ASLE_PFIT_EN (1<<2) +#define ASLE_PFMB_EN (1<<3) + +void intel_opregion_enable_asle(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct opregion_asle __iomem *asle = dev_priv->opregion.asle; + + if (asle) { + if (IS_MOBILE(dev)) + intel_enable_asle(dev); + + iowrite32(ASLE_ALS_EN | ASLE_BLC_EN | ASLE_PFIT_EN | + ASLE_PFMB_EN, + &asle->tche); + iowrite32(1, &asle->ardy); + } +} + +#define ACPI_EV_DISPLAY_SWITCH (1<<0) +#define ACPI_EV_LID (1<<1) +#define ACPI_EV_DOCK (1<<2) + +static struct intel_opregion *system_opregion; + +static int intel_opregion_video_event(struct notifier_block *nb, + unsigned long val, void *data) +{ + /* The only video events relevant to opregion are 0x80. These indicate + either a docking event, lid switch or display switch request. In + Linux, these are handled by the dock, button and video drivers. + */ + + struct opregion_acpi __iomem *acpi; + struct acpi_bus_event *event = data; + int ret = NOTIFY_OK; + + if (strcmp(event->device_class, ACPI_VIDEO_CLASS) != 0) + return NOTIFY_DONE; + + if (!system_opregion) + return NOTIFY_DONE; + + acpi = system_opregion->acpi; + + if (event->type == 0x80 && + (ioread32(&acpi->cevt) & 1) == 0) + ret = NOTIFY_BAD; + + iowrite32(0, &acpi->csts); + + return ret; +} + +static struct notifier_block intel_opregion_notifier = { + .notifier_call = intel_opregion_video_event, +}; + +/* + * Initialise the DIDL field in opregion. This passes a list of devices to + * the firmware. Values are defined by section B.4.2 of the ACPI specification + * (version 3) + */ + +static void intel_didl_outputs(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + struct drm_connector *connector; + acpi_handle handle; + struct acpi_device *acpi_dev, *acpi_cdev, *acpi_video_bus = NULL; + unsigned long long device_id; + acpi_status status; + u32 temp; + int i = 0; + + handle = DEVICE_ACPI_HANDLE(&dev->pdev->dev); + if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &acpi_dev))) + return; + + if (acpi_is_video_device(acpi_dev)) + acpi_video_bus = acpi_dev; + else { + list_for_each_entry(acpi_cdev, &acpi_dev->children, node) { + if (acpi_is_video_device(acpi_cdev)) { + acpi_video_bus = acpi_cdev; + break; + } + } + } + + if (!acpi_video_bus) { + pr_warn("No ACPI video bus found\n"); + return; + } + + list_for_each_entry(acpi_cdev, &acpi_video_bus->children, node) { + if (i >= 8) { + dev_printk(KERN_ERR, &dev->pdev->dev, + "More than 8 outputs detected\n"); + return; + } + status = + acpi_evaluate_integer(acpi_cdev->handle, "_ADR", + NULL, &device_id); + if (ACPI_SUCCESS(status)) { + if (!device_id) + goto blind_set; + iowrite32((u32)(device_id & 0x0f0f), + &opregion->acpi->didl[i]); + i++; + } + } + +end: + /* If fewer than 8 outputs, the list must be null terminated */ + if (i < 8) + iowrite32(0, &opregion->acpi->didl[i]); + return; + +blind_set: + i = 0; + list_for_each_entry(connector, &dev->mode_config.connector_list, head) { + int output_type = ACPI_OTHER_OUTPUT; + if (i >= 8) { + dev_printk(KERN_ERR, &dev->pdev->dev, + "More than 8 outputs detected\n"); + return; + } + switch (connector->connector_type) { + case DRM_MODE_CONNECTOR_VGA: + case DRM_MODE_CONNECTOR_DVIA: + output_type = ACPI_VGA_OUTPUT; + break; + case DRM_MODE_CONNECTOR_Composite: + case DRM_MODE_CONNECTOR_SVIDEO: + case DRM_MODE_CONNECTOR_Component: + case DRM_MODE_CONNECTOR_9PinDIN: + output_type = ACPI_TV_OUTPUT; + break; + case DRM_MODE_CONNECTOR_DVII: + case DRM_MODE_CONNECTOR_DVID: + case DRM_MODE_CONNECTOR_DisplayPort: + case DRM_MODE_CONNECTOR_HDMIA: + case DRM_MODE_CONNECTOR_HDMIB: + output_type = ACPI_DIGITAL_OUTPUT; + break; + case DRM_MODE_CONNECTOR_LVDS: + output_type = ACPI_LVDS_OUTPUT; + break; + } + temp = ioread32(&opregion->acpi->didl[i]); + iowrite32(temp | (1<<31) | output_type | i, + &opregion->acpi->didl[i]); + i++; + } + goto end; +} + +static void intel_setup_cadls(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + int i = 0; + u32 disp_id; + + /* Initialize the CADL field by duplicating the DIDL values. + * Technically, this is not always correct as display outputs may exist, + * but not active. This initialization is necessary for some Clevo + * laptops that check this field before processing the brightness and + * display switching hotkeys. Just like DIDL, CADL is NULL-terminated if + * there are less than eight devices. */ + do { + disp_id = ioread32(&opregion->acpi->didl[i]); + iowrite32(disp_id, &opregion->acpi->cadl[i]); + } while (++i < 8 && disp_id != 0); +} + +void intel_opregion_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + + if (!opregion->header) + return; + + if (opregion->acpi) { + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_didl_outputs(dev); + intel_setup_cadls(dev); + } + + /* Notify BIOS we are ready to handle ACPI video ext notifs. + * Right now, all the events are handled by the ACPI video module. + * We don't actually need to do anything with them. */ + iowrite32(0, &opregion->acpi->csts); + iowrite32(1, &opregion->acpi->drdy); + + system_opregion = opregion; + register_acpi_notifier(&intel_opregion_notifier); + } + + if (opregion->asle) + intel_opregion_enable_asle(dev); +} + +void intel_opregion_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + + if (!opregion->header) + return; + + if (opregion->acpi) { + iowrite32(0, &opregion->acpi->drdy); + + system_opregion = NULL; + unregister_acpi_notifier(&intel_opregion_notifier); + } + + /* just clear all opregion memory pointers now */ + iounmap(opregion->header); + opregion->header = NULL; + opregion->acpi = NULL; + opregion->swsci = NULL; + opregion->asle = NULL; + opregion->vbt = NULL; +} +#endif + +int intel_opregion_setup(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + void __iomem *base; + u32 asls, mboxes; + char buf[sizeof(OPREGION_SIGNATURE)]; + int err = 0; + + pci_read_config_dword(dev->pdev, PCI_ASLS, &asls); + DRM_DEBUG_DRIVER("graphic opregion physical addr: 0x%x\n", asls); + if (asls == 0) { + DRM_DEBUG_DRIVER("ACPI OpRegion not supported!\n"); + return -ENOTSUPP; + } + + base = acpi_os_ioremap(asls, OPREGION_SIZE); + if (!base) + return -ENOMEM; + + memcpy_fromio(buf, base, sizeof(buf)); + + if (memcmp(buf, OPREGION_SIGNATURE, 16)) { + DRM_DEBUG_DRIVER("opregion signature mismatch\n"); + err = -EINVAL; + goto err_out; + } + opregion->header = base; + opregion->vbt = base + OPREGION_VBT_OFFSET; + + opregion->lid_state = base + ACPI_CLID; + + mboxes = ioread32(&opregion->header->mboxes); + if (mboxes & MBOX_ACPI) { + DRM_DEBUG_DRIVER("Public ACPI methods supported\n"); + opregion->acpi = base + OPREGION_ACPI_OFFSET; + } + + if (mboxes & MBOX_SWSCI) { + DRM_DEBUG_DRIVER("SWSCI supported\n"); + opregion->swsci = base + OPREGION_SWSCI_OFFSET; + } + if (mboxes & MBOX_ASLE) { + DRM_DEBUG_DRIVER("ASLE supported\n"); + opregion->asle = base + OPREGION_ASLE_OFFSET; + } + + return 0; + +err_out: + iounmap(base); + return err; +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_debug.c +++ linux-3.5.0/ubuntu/i915/i915_gem_debug.c @@ -0,0 +1,188 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Keith Packard + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" + +#if WATCH_LISTS +int +i915_verify_lists(struct drm_device *dev) +{ + static int warned; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int err = 0; + + if (warned) + return 0; + + list_for_each_entry(obj, &dev_priv->render_ring.active_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed render active %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.read_domains & I915_GEM_GPU_DOMAINS) == 0) { + DRM_ERROR("invalid render active %p (a %d r %x)\n", + obj, + obj->active, + obj->base.read_domains); + err++; + } else if (obj->base.write_domain && list_empty(&obj->gpu_write_list)) { + DRM_ERROR("invalid render active %p (w %x, gwl %d)\n", + obj, + obj->base.write_domain, + !list_empty(&obj->gpu_write_list)); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.flushing_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed flushing %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS) == 0 || + list_empty(&obj->gpu_write_list)) { + DRM_ERROR("invalid flushing %p (a %d w %x gwl %d)\n", + obj, + obj->active, + obj->base.write_domain, + !list_empty(&obj->gpu_write_list)); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.gpu_write_list, gpu_write_list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed gpu write %p\n", obj); + err++; + break; + } else if (!obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS) == 0) { + DRM_ERROR("invalid gpu write %p (a %d w %x)\n", + obj, + obj->active, + obj->base.write_domain); + err++; + } + } + + list_for_each_entry(obj, &dev_priv->mm.inactive_list, list) { + if (obj->base.dev != dev || + !atomic_read(&obj->base.refcount.refcount)) { + DRM_ERROR("freed inactive %p\n", obj); + err++; + break; + } else if (obj->pin_count || obj->active || + (obj->base.write_domain & I915_GEM_GPU_DOMAINS)) { + DRM_ERROR("invalid inactive %p (p %d a %d w %x)\n", + obj, + obj->pin_count, obj->active, + obj->base.write_domain); + err++; + } + } + + return warned = err; +} +#endif /* WATCH_INACTIVE */ + +#if WATCH_COHERENCY +void +i915_gem_object_check_coherency(struct drm_i915_gem_object *obj, int handle) +{ + struct drm_device *dev = obj->base.dev; + int page; + uint32_t *gtt_mapping; + uint32_t *backing_map = NULL; + int bad_count = 0; + + DRM_INFO("%s: checking coherency of object %p@0x%08x (%d, %zdkb):\n", + __func__, obj, obj->gtt_offset, handle, + obj->size / 1024); + + gtt_mapping = ioremap(dev_priv->mm.gtt_base_addr + obj->gtt_offset, + obj->base.size); + if (gtt_mapping == NULL) { + DRM_ERROR("failed to map GTT space\n"); + return; + } + + for (page = 0; page < obj->size / PAGE_SIZE; page++) { + int i; + + backing_map = kmap_atomic(obj->pages[page]); + + if (backing_map == NULL) { + DRM_ERROR("failed to map backing page\n"); + goto out; + } + + for (i = 0; i < PAGE_SIZE / 4; i++) { + uint32_t cpuval = backing_map[i]; + uint32_t gttval = readl(gtt_mapping + + page * 1024 + i); + + if (cpuval != gttval) { + DRM_INFO("incoherent CPU vs GPU at 0x%08x: " + "0x%08x vs 0x%08x\n", + (int)(obj->gtt_offset + + page * PAGE_SIZE + i * 4), + cpuval, gttval); + if (bad_count++ >= 8) { + DRM_INFO("...\n"); + goto out; + } + } + } + kunmap_atomic(backing_map); + backing_map = NULL; + } + + out: + if (backing_map != NULL) + kunmap_atomic(backing_map); + iounmap(gtt_mapping); + + /* give syslog time to catch up */ + msleep(1); + + /* Directly flush the object, since we just loaded values with the CPU + * from the backing pages and we don't want to disturb the cache + * management that we're trying to observe. + */ + + i915_gem_clflush_object(obj); +} +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_suspend.c +++ linux-3.5.0/ubuntu/i915/i915_suspend.c @@ -0,0 +1,901 @@ +/* + * + * Copyright 2008 (c) Intel Corporation + * Jesse Barnes + * + * 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 TUNGSTEN GRAPHICS 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 "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "intel_drv.h" +#include "i915_reg.h" + +static bool i915_pipe_enabled(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpll_reg; + + /* On IVB, 3rd pipe shares PLL with another one */ + if (pipe > 1) + return false; + + if (HAS_PCH_SPLIT(dev)) + dpll_reg = _PCH_DPLL(pipe); + else + dpll_reg = (pipe == PIPE_A) ? _DPLL_A : _DPLL_B; + + return (I915_READ(dpll_reg) & DPLL_VCO_ENABLE); +} + +static void i915_save_palette(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B); + u32 *array; + int i; + + if (!i915_pipe_enabled(dev, pipe)) + return; + + if (HAS_PCH_SPLIT(dev)) + reg = (pipe == PIPE_A) ? _LGC_PALETTE_A : _LGC_PALETTE_B; + + if (pipe == PIPE_A) + array = dev_priv->regfile.save_palette_a; + else + array = dev_priv->regfile.save_palette_b; + + for (i = 0; i < 256; i++) + array[i] = I915_READ(reg + (i << 2)); +} + +static void i915_restore_palette(struct drm_device *dev, enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long reg = (pipe == PIPE_A ? _PALETTE_A : _PALETTE_B); + u32 *array; + int i; + + if (!i915_pipe_enabled(dev, pipe)) + return; + + if (HAS_PCH_SPLIT(dev)) + reg = (pipe == PIPE_A) ? _LGC_PALETTE_A : _LGC_PALETTE_B; + + if (pipe == PIPE_A) + array = dev_priv->regfile.save_palette_a; + else + array = dev_priv->regfile.save_palette_b; + + for (i = 0; i < 256; i++) + I915_WRITE(reg + (i << 2), array[i]); +} + +static u8 i915_read_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE8(index_port, reg); + return I915_READ8(data_port); +} + +static u8 i915_read_ar(struct drm_device *dev, u16 st01, u8 reg, u16 palette_enable) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, palette_enable | reg); + return I915_READ8(VGA_AR_DATA_READ); +} + +static void i915_write_ar(struct drm_device *dev, u16 st01, u8 reg, u8 val, u16 palette_enable) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, palette_enable | reg); + I915_WRITE8(VGA_AR_DATA_WRITE, val); +} + +static void i915_write_indexed(struct drm_device *dev, u16 index_port, u16 data_port, u8 reg, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE8(index_port, reg); + I915_WRITE8(data_port, val); +} + +static void i915_save_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + u16 cr_index, cr_data, st01; + + /* VGA color palette registers */ + dev_priv->regfile.saveDACMASK = I915_READ8(VGA_DACMASK); + + /* MSR bits */ + dev_priv->regfile.saveMSR = I915_READ8(VGA_MSR_READ); + if (dev_priv->regfile.saveMSR & VGA_MSR_CGA_MODE) { + cr_index = VGA_CR_INDEX_CGA; + cr_data = VGA_CR_DATA_CGA; + st01 = VGA_ST01_CGA; + } else { + cr_index = VGA_CR_INDEX_MDA; + cr_data = VGA_CR_DATA_MDA; + st01 = VGA_ST01_MDA; + } + + /* CRT controller regs */ + i915_write_indexed(dev, cr_index, cr_data, 0x11, + i915_read_indexed(dev, cr_index, cr_data, 0x11) & + (~0x80)); + for (i = 0; i <= 0x24; i++) + dev_priv->regfile.saveCR[i] = + i915_read_indexed(dev, cr_index, cr_data, i); + /* Make sure we don't turn off CR group 0 writes */ + dev_priv->regfile.saveCR[0x11] &= ~0x80; + + /* Attribute controller registers */ + I915_READ8(st01); + dev_priv->regfile.saveAR_INDEX = I915_READ8(VGA_AR_INDEX); + for (i = 0; i <= 0x14; i++) + dev_priv->regfile.saveAR[i] = i915_read_ar(dev, st01, i, 0); + I915_READ8(st01); + I915_WRITE8(VGA_AR_INDEX, dev_priv->regfile.saveAR_INDEX); + I915_READ8(st01); + + /* Graphics controller registers */ + for (i = 0; i < 9; i++) + dev_priv->regfile.saveGR[i] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, i); + + dev_priv->regfile.saveGR[0x10] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x10); + dev_priv->regfile.saveGR[0x11] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x11); + dev_priv->regfile.saveGR[0x18] = + i915_read_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x18); + + /* Sequencer registers */ + for (i = 0; i < 8; i++) + dev_priv->regfile.saveSR[i] = + i915_read_indexed(dev, VGA_SR_INDEX, VGA_SR_DATA, i); +} + +static void i915_restore_vga(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + u16 cr_index, cr_data, st01; + + /* MSR bits */ + I915_WRITE8(VGA_MSR_WRITE, dev_priv->regfile.saveMSR); + if (dev_priv->regfile.saveMSR & VGA_MSR_CGA_MODE) { + cr_index = VGA_CR_INDEX_CGA; + cr_data = VGA_CR_DATA_CGA; + st01 = VGA_ST01_CGA; + } else { + cr_index = VGA_CR_INDEX_MDA; + cr_data = VGA_CR_DATA_MDA; + st01 = VGA_ST01_MDA; + } + + /* Sequencer registers, don't write SR07 */ + for (i = 0; i < 7; i++) + i915_write_indexed(dev, VGA_SR_INDEX, VGA_SR_DATA, i, + dev_priv->regfile.saveSR[i]); + + /* CRT controller regs */ + /* Enable CR group 0 writes */ + i915_write_indexed(dev, cr_index, cr_data, 0x11, dev_priv->regfile.saveCR[0x11]); + for (i = 0; i <= 0x24; i++) + i915_write_indexed(dev, cr_index, cr_data, i, dev_priv->regfile.saveCR[i]); + + /* Graphics controller regs */ + for (i = 0; i < 9; i++) + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, i, + dev_priv->regfile.saveGR[i]); + + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x10, + dev_priv->regfile.saveGR[0x10]); + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x11, + dev_priv->regfile.saveGR[0x11]); + i915_write_indexed(dev, VGA_GR_INDEX, VGA_GR_DATA, 0x18, + dev_priv->regfile.saveGR[0x18]); + + /* Attribute controller registers */ + I915_READ8(st01); /* switch back to index mode */ + for (i = 0; i <= 0x14; i++) + i915_write_ar(dev, st01, i, dev_priv->regfile.saveAR[i], 0); + I915_READ8(st01); /* switch back to index mode */ + I915_WRITE8(VGA_AR_INDEX, dev_priv->regfile.saveAR_INDEX | 0x20); + I915_READ8(st01); + + /* VGA color palette registers */ + I915_WRITE8(VGA_DACMASK, dev_priv->regfile.saveDACMASK); +} + +static void i915_save_modeset_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + /* Cursor state */ + dev_priv->regfile.saveCURACNTR = I915_READ(_CURACNTR); + dev_priv->regfile.saveCURAPOS = I915_READ(_CURAPOS); + dev_priv->regfile.saveCURABASE = I915_READ(_CURABASE); + dev_priv->regfile.saveCURBCNTR = I915_READ(_CURBCNTR); + dev_priv->regfile.saveCURBPOS = I915_READ(_CURBPOS); + dev_priv->regfile.saveCURBBASE = I915_READ(_CURBBASE); + if (IS_GEN2(dev)) + dev_priv->regfile.saveCURSIZE = I915_READ(CURSIZE); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePCH_DREF_CONTROL = I915_READ(PCH_DREF_CONTROL); + dev_priv->regfile.saveDISP_ARB_CTL = I915_READ(DISP_ARB_CTL); + } + + /* Pipe & plane A info */ + dev_priv->regfile.savePIPEACONF = I915_READ(_PIPEACONF); + dev_priv->regfile.savePIPEASRC = I915_READ(_PIPEASRC); + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveFPA0 = I915_READ(_PCH_FPA0); + dev_priv->regfile.saveFPA1 = I915_READ(_PCH_FPA1); + dev_priv->regfile.saveDPLL_A = I915_READ(_PCH_DPLL_A); + } else { + dev_priv->regfile.saveFPA0 = I915_READ(_FPA0); + dev_priv->regfile.saveFPA1 = I915_READ(_FPA1); + dev_priv->regfile.saveDPLL_A = I915_READ(_DPLL_A); + } + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveDPLL_A_MD = I915_READ(_DPLL_A_MD); + dev_priv->regfile.saveHTOTAL_A = I915_READ(_HTOTAL_A); + dev_priv->regfile.saveHBLANK_A = I915_READ(_HBLANK_A); + dev_priv->regfile.saveHSYNC_A = I915_READ(_HSYNC_A); + dev_priv->regfile.saveVTOTAL_A = I915_READ(_VTOTAL_A); + dev_priv->regfile.saveVBLANK_A = I915_READ(_VBLANK_A); + dev_priv->regfile.saveVSYNC_A = I915_READ(_VSYNC_A); + if (!HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveBCLRPAT_A = I915_READ(_BCLRPAT_A); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePIPEA_DATA_M1 = I915_READ(_PIPEA_DATA_M1); + dev_priv->regfile.savePIPEA_DATA_N1 = I915_READ(_PIPEA_DATA_N1); + dev_priv->regfile.savePIPEA_LINK_M1 = I915_READ(_PIPEA_LINK_M1); + dev_priv->regfile.savePIPEA_LINK_N1 = I915_READ(_PIPEA_LINK_N1); + + dev_priv->regfile.saveFDI_TXA_CTL = I915_READ(_FDI_TXA_CTL); + dev_priv->regfile.saveFDI_RXA_CTL = I915_READ(_FDI_RXA_CTL); + + dev_priv->regfile.savePFA_CTL_1 = I915_READ(_PFA_CTL_1); + dev_priv->regfile.savePFA_WIN_SZ = I915_READ(_PFA_WIN_SZ); + dev_priv->regfile.savePFA_WIN_POS = I915_READ(_PFA_WIN_POS); + + dev_priv->regfile.saveTRANSACONF = I915_READ(_TRANSACONF); + dev_priv->regfile.saveTRANS_HTOTAL_A = I915_READ(_TRANS_HTOTAL_A); + dev_priv->regfile.saveTRANS_HBLANK_A = I915_READ(_TRANS_HBLANK_A); + dev_priv->regfile.saveTRANS_HSYNC_A = I915_READ(_TRANS_HSYNC_A); + dev_priv->regfile.saveTRANS_VTOTAL_A = I915_READ(_TRANS_VTOTAL_A); + dev_priv->regfile.saveTRANS_VBLANK_A = I915_READ(_TRANS_VBLANK_A); + dev_priv->regfile.saveTRANS_VSYNC_A = I915_READ(_TRANS_VSYNC_A); + } + + dev_priv->regfile.saveDSPACNTR = I915_READ(_DSPACNTR); + dev_priv->regfile.saveDSPASTRIDE = I915_READ(_DSPASTRIDE); + dev_priv->regfile.saveDSPASIZE = I915_READ(_DSPASIZE); + dev_priv->regfile.saveDSPAPOS = I915_READ(_DSPAPOS); + dev_priv->regfile.saveDSPAADDR = I915_READ(_DSPAADDR); + if (INTEL_INFO(dev)->gen >= 4) { + dev_priv->regfile.saveDSPASURF = I915_READ(_DSPASURF); + dev_priv->regfile.saveDSPATILEOFF = I915_READ(_DSPATILEOFF); + } + i915_save_palette(dev, PIPE_A); + dev_priv->regfile.savePIPEASTAT = I915_READ(_PIPEASTAT); + + /* Pipe & plane B info */ + dev_priv->regfile.savePIPEBCONF = I915_READ(_PIPEBCONF); + dev_priv->regfile.savePIPEBSRC = I915_READ(_PIPEBSRC); + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveFPB0 = I915_READ(_PCH_FPB0); + dev_priv->regfile.saveFPB1 = I915_READ(_PCH_FPB1); + dev_priv->regfile.saveDPLL_B = I915_READ(_PCH_DPLL_B); + } else { + dev_priv->regfile.saveFPB0 = I915_READ(_FPB0); + dev_priv->regfile.saveFPB1 = I915_READ(_FPB1); + dev_priv->regfile.saveDPLL_B = I915_READ(_DPLL_B); + } + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveDPLL_B_MD = I915_READ(_DPLL_B_MD); + dev_priv->regfile.saveHTOTAL_B = I915_READ(_HTOTAL_B); + dev_priv->regfile.saveHBLANK_B = I915_READ(_HBLANK_B); + dev_priv->regfile.saveHSYNC_B = I915_READ(_HSYNC_B); + dev_priv->regfile.saveVTOTAL_B = I915_READ(_VTOTAL_B); + dev_priv->regfile.saveVBLANK_B = I915_READ(_VBLANK_B); + dev_priv->regfile.saveVSYNC_B = I915_READ(_VSYNC_B); + if (!HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveBCLRPAT_B = I915_READ(_BCLRPAT_B); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePIPEB_DATA_M1 = I915_READ(_PIPEB_DATA_M1); + dev_priv->regfile.savePIPEB_DATA_N1 = I915_READ(_PIPEB_DATA_N1); + dev_priv->regfile.savePIPEB_LINK_M1 = I915_READ(_PIPEB_LINK_M1); + dev_priv->regfile.savePIPEB_LINK_N1 = I915_READ(_PIPEB_LINK_N1); + + dev_priv->regfile.saveFDI_TXB_CTL = I915_READ(_FDI_TXB_CTL); + dev_priv->regfile.saveFDI_RXB_CTL = I915_READ(_FDI_RXB_CTL); + + dev_priv->regfile.savePFB_CTL_1 = I915_READ(_PFB_CTL_1); + dev_priv->regfile.savePFB_WIN_SZ = I915_READ(_PFB_WIN_SZ); + dev_priv->regfile.savePFB_WIN_POS = I915_READ(_PFB_WIN_POS); + + dev_priv->regfile.saveTRANSBCONF = I915_READ(_TRANSBCONF); + dev_priv->regfile.saveTRANS_HTOTAL_B = I915_READ(_TRANS_HTOTAL_B); + dev_priv->regfile.saveTRANS_HBLANK_B = I915_READ(_TRANS_HBLANK_B); + dev_priv->regfile.saveTRANS_HSYNC_B = I915_READ(_TRANS_HSYNC_B); + dev_priv->regfile.saveTRANS_VTOTAL_B = I915_READ(_TRANS_VTOTAL_B); + dev_priv->regfile.saveTRANS_VBLANK_B = I915_READ(_TRANS_VBLANK_B); + dev_priv->regfile.saveTRANS_VSYNC_B = I915_READ(_TRANS_VSYNC_B); + } + + dev_priv->regfile.saveDSPBCNTR = I915_READ(_DSPBCNTR); + dev_priv->regfile.saveDSPBSTRIDE = I915_READ(_DSPBSTRIDE); + dev_priv->regfile.saveDSPBSIZE = I915_READ(_DSPBSIZE); + dev_priv->regfile.saveDSPBPOS = I915_READ(_DSPBPOS); + dev_priv->regfile.saveDSPBADDR = I915_READ(_DSPBADDR); + if (INTEL_INFO(dev)->gen >= 4) { + dev_priv->regfile.saveDSPBSURF = I915_READ(_DSPBSURF); + dev_priv->regfile.saveDSPBTILEOFF = I915_READ(_DSPBTILEOFF); + } + i915_save_palette(dev, PIPE_B); + dev_priv->regfile.savePIPEBSTAT = I915_READ(_PIPEBSTAT); + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ64(FENCE_REG_SANDYBRIDGE_0 + (i * 8)); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ64(FENCE_REG_965_0 + (i * 8)); + break; + case 3: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + dev_priv->regfile.saveFENCE[i+8] = I915_READ(FENCE_REG_945_8 + (i * 4)); + case 2: + for (i = 0; i < 8; i++) + dev_priv->regfile.saveFENCE[i] = I915_READ(FENCE_REG_830_0 + (i * 4)); + break; + } + + /* CRT state */ + if (HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveADPA = I915_READ(PCH_ADPA); + else + dev_priv->regfile.saveADPA = I915_READ(ADPA); + + return; +} + +static void i915_restore_modeset_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int dpll_a_reg, fpa0_reg, fpa1_reg; + int dpll_b_reg, fpb0_reg, fpb1_reg; + int i; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + /* Fences */ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: + for (i = 0; i < 16; i++) + I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + (i * 8), dev_priv->regfile.saveFENCE[i]); + break; + case 5: + case 4: + for (i = 0; i < 16; i++) + I915_WRITE64(FENCE_REG_965_0 + (i * 8), dev_priv->regfile.saveFENCE[i]); + break; + case 3: + case 2: + if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + for (i = 0; i < 8; i++) + I915_WRITE(FENCE_REG_945_8 + (i * 4), dev_priv->regfile.saveFENCE[i+8]); + for (i = 0; i < 8; i++) + I915_WRITE(FENCE_REG_830_0 + (i * 4), dev_priv->regfile.saveFENCE[i]); + break; + } + + + if (HAS_PCH_SPLIT(dev)) { + dpll_a_reg = _PCH_DPLL_A; + dpll_b_reg = _PCH_DPLL_B; + fpa0_reg = _PCH_FPA0; + fpb0_reg = _PCH_FPB0; + fpa1_reg = _PCH_FPA1; + fpb1_reg = _PCH_FPB1; + } else { + dpll_a_reg = _DPLL_A; + dpll_b_reg = _DPLL_B; + fpa0_reg = _FPA0; + fpb0_reg = _FPB0; + fpa1_reg = _FPA1; + fpb1_reg = _FPB1; + } + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_DREF_CONTROL, dev_priv->regfile.savePCH_DREF_CONTROL); + I915_WRITE(DISP_ARB_CTL, dev_priv->regfile.saveDISP_ARB_CTL); + } + + /* Pipe & plane A info */ + /* Prime the clock */ + if (dev_priv->regfile.saveDPLL_A & DPLL_VCO_ENABLE) { + I915_WRITE(dpll_a_reg, dev_priv->regfile.saveDPLL_A & + ~DPLL_VCO_ENABLE); + POSTING_READ(dpll_a_reg); + udelay(150); + } + I915_WRITE(fpa0_reg, dev_priv->regfile.saveFPA0); + I915_WRITE(fpa1_reg, dev_priv->regfile.saveFPA1); + /* Actually enable it */ + I915_WRITE(dpll_a_reg, dev_priv->regfile.saveDPLL_A); + POSTING_READ(dpll_a_reg); + udelay(150); + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { + I915_WRITE(_DPLL_A_MD, dev_priv->regfile.saveDPLL_A_MD); + POSTING_READ(_DPLL_A_MD); + } + udelay(150); + + /* Restore mode */ + I915_WRITE(_HTOTAL_A, dev_priv->regfile.saveHTOTAL_A); + I915_WRITE(_HBLANK_A, dev_priv->regfile.saveHBLANK_A); + I915_WRITE(_HSYNC_A, dev_priv->regfile.saveHSYNC_A); + I915_WRITE(_VTOTAL_A, dev_priv->regfile.saveVTOTAL_A); + I915_WRITE(_VBLANK_A, dev_priv->regfile.saveVBLANK_A); + I915_WRITE(_VSYNC_A, dev_priv->regfile.saveVSYNC_A); + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(_BCLRPAT_A, dev_priv->regfile.saveBCLRPAT_A); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(_PIPEA_DATA_M1, dev_priv->regfile.savePIPEA_DATA_M1); + I915_WRITE(_PIPEA_DATA_N1, dev_priv->regfile.savePIPEA_DATA_N1); + I915_WRITE(_PIPEA_LINK_M1, dev_priv->regfile.savePIPEA_LINK_M1); + I915_WRITE(_PIPEA_LINK_N1, dev_priv->regfile.savePIPEA_LINK_N1); + + I915_WRITE(_FDI_RXA_CTL, dev_priv->regfile.saveFDI_RXA_CTL); + I915_WRITE(_FDI_TXA_CTL, dev_priv->regfile.saveFDI_TXA_CTL); + + I915_WRITE(_PFA_CTL_1, dev_priv->regfile.savePFA_CTL_1); + I915_WRITE(_PFA_WIN_SZ, dev_priv->regfile.savePFA_WIN_SZ); + I915_WRITE(_PFA_WIN_POS, dev_priv->regfile.savePFA_WIN_POS); + + I915_WRITE(_TRANSACONF, dev_priv->regfile.saveTRANSACONF); + I915_WRITE(_TRANS_HTOTAL_A, dev_priv->regfile.saveTRANS_HTOTAL_A); + I915_WRITE(_TRANS_HBLANK_A, dev_priv->regfile.saveTRANS_HBLANK_A); + I915_WRITE(_TRANS_HSYNC_A, dev_priv->regfile.saveTRANS_HSYNC_A); + I915_WRITE(_TRANS_VTOTAL_A, dev_priv->regfile.saveTRANS_VTOTAL_A); + I915_WRITE(_TRANS_VBLANK_A, dev_priv->regfile.saveTRANS_VBLANK_A); + I915_WRITE(_TRANS_VSYNC_A, dev_priv->regfile.saveTRANS_VSYNC_A); + } + + /* Restore plane info */ + I915_WRITE(_DSPASIZE, dev_priv->regfile.saveDSPASIZE); + I915_WRITE(_DSPAPOS, dev_priv->regfile.saveDSPAPOS); + I915_WRITE(_PIPEASRC, dev_priv->regfile.savePIPEASRC); + I915_WRITE(_DSPAADDR, dev_priv->regfile.saveDSPAADDR); + I915_WRITE(_DSPASTRIDE, dev_priv->regfile.saveDSPASTRIDE); + if (INTEL_INFO(dev)->gen >= 4) { + I915_WRITE(_DSPASURF, dev_priv->regfile.saveDSPASURF); + I915_WRITE(_DSPATILEOFF, dev_priv->regfile.saveDSPATILEOFF); + } + + I915_WRITE(_PIPEACONF, dev_priv->regfile.savePIPEACONF); + + i915_restore_palette(dev, PIPE_A); + /* Enable the plane */ + I915_WRITE(_DSPACNTR, dev_priv->regfile.saveDSPACNTR); + I915_WRITE(_DSPAADDR, I915_READ(_DSPAADDR)); + + /* Pipe & plane B info */ + if (dev_priv->regfile.saveDPLL_B & DPLL_VCO_ENABLE) { + I915_WRITE(dpll_b_reg, dev_priv->regfile.saveDPLL_B & + ~DPLL_VCO_ENABLE); + POSTING_READ(dpll_b_reg); + udelay(150); + } + I915_WRITE(fpb0_reg, dev_priv->regfile.saveFPB0); + I915_WRITE(fpb1_reg, dev_priv->regfile.saveFPB1); + /* Actually enable it */ + I915_WRITE(dpll_b_reg, dev_priv->regfile.saveDPLL_B); + POSTING_READ(dpll_b_reg); + udelay(150); + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) { + I915_WRITE(_DPLL_B_MD, dev_priv->regfile.saveDPLL_B_MD); + POSTING_READ(_DPLL_B_MD); + } + udelay(150); + + /* Restore mode */ + I915_WRITE(_HTOTAL_B, dev_priv->regfile.saveHTOTAL_B); + I915_WRITE(_HBLANK_B, dev_priv->regfile.saveHBLANK_B); + I915_WRITE(_HSYNC_B, dev_priv->regfile.saveHSYNC_B); + I915_WRITE(_VTOTAL_B, dev_priv->regfile.saveVTOTAL_B); + I915_WRITE(_VBLANK_B, dev_priv->regfile.saveVBLANK_B); + I915_WRITE(_VSYNC_B, dev_priv->regfile.saveVSYNC_B); + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(_BCLRPAT_B, dev_priv->regfile.saveBCLRPAT_B); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(_PIPEB_DATA_M1, dev_priv->regfile.savePIPEB_DATA_M1); + I915_WRITE(_PIPEB_DATA_N1, dev_priv->regfile.savePIPEB_DATA_N1); + I915_WRITE(_PIPEB_LINK_M1, dev_priv->regfile.savePIPEB_LINK_M1); + I915_WRITE(_PIPEB_LINK_N1, dev_priv->regfile.savePIPEB_LINK_N1); + + I915_WRITE(_FDI_RXB_CTL, dev_priv->regfile.saveFDI_RXB_CTL); + I915_WRITE(_FDI_TXB_CTL, dev_priv->regfile.saveFDI_TXB_CTL); + + I915_WRITE(_PFB_CTL_1, dev_priv->regfile.savePFB_CTL_1); + I915_WRITE(_PFB_WIN_SZ, dev_priv->regfile.savePFB_WIN_SZ); + I915_WRITE(_PFB_WIN_POS, dev_priv->regfile.savePFB_WIN_POS); + + I915_WRITE(_TRANSBCONF, dev_priv->regfile.saveTRANSBCONF); + I915_WRITE(_TRANS_HTOTAL_B, dev_priv->regfile.saveTRANS_HTOTAL_B); + I915_WRITE(_TRANS_HBLANK_B, dev_priv->regfile.saveTRANS_HBLANK_B); + I915_WRITE(_TRANS_HSYNC_B, dev_priv->regfile.saveTRANS_HSYNC_B); + I915_WRITE(_TRANS_VTOTAL_B, dev_priv->regfile.saveTRANS_VTOTAL_B); + I915_WRITE(_TRANS_VBLANK_B, dev_priv->regfile.saveTRANS_VBLANK_B); + I915_WRITE(_TRANS_VSYNC_B, dev_priv->regfile.saveTRANS_VSYNC_B); + } + + /* Restore plane info */ + I915_WRITE(_DSPBSIZE, dev_priv->regfile.saveDSPBSIZE); + I915_WRITE(_DSPBPOS, dev_priv->regfile.saveDSPBPOS); + I915_WRITE(_PIPEBSRC, dev_priv->regfile.savePIPEBSRC); + I915_WRITE(_DSPBADDR, dev_priv->regfile.saveDSPBADDR); + I915_WRITE(_DSPBSTRIDE, dev_priv->regfile.saveDSPBSTRIDE); + if (INTEL_INFO(dev)->gen >= 4) { + I915_WRITE(_DSPBSURF, dev_priv->regfile.saveDSPBSURF); + I915_WRITE(_DSPBTILEOFF, dev_priv->regfile.saveDSPBTILEOFF); + } + + I915_WRITE(_PIPEBCONF, dev_priv->regfile.savePIPEBCONF); + + i915_restore_palette(dev, PIPE_B); + /* Enable the plane */ + I915_WRITE(_DSPBCNTR, dev_priv->regfile.saveDSPBCNTR); + I915_WRITE(_DSPBADDR, I915_READ(_DSPBADDR)); + + /* Cursor state */ + I915_WRITE(_CURAPOS, dev_priv->regfile.saveCURAPOS); + I915_WRITE(_CURACNTR, dev_priv->regfile.saveCURACNTR); + I915_WRITE(_CURABASE, dev_priv->regfile.saveCURABASE); + I915_WRITE(_CURBPOS, dev_priv->regfile.saveCURBPOS); + I915_WRITE(_CURBCNTR, dev_priv->regfile.saveCURBCNTR); + I915_WRITE(_CURBBASE, dev_priv->regfile.saveCURBBASE); + if (IS_GEN2(dev)) + I915_WRITE(CURSIZE, dev_priv->regfile.saveCURSIZE); + + /* CRT state */ + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(PCH_ADPA, dev_priv->regfile.saveADPA); + else + I915_WRITE(ADPA, dev_priv->regfile.saveADPA); + + return; +} + +static void i915_save_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Display arbitration control */ + dev_priv->regfile.saveDSPARB = I915_READ(DSPARB); + + /* This is only meaningful in non-KMS mode */ + /* Don't regfile.save them in KMS mode */ + i915_save_modeset_reg(dev); + + /* LVDS state */ + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePP_CONTROL = I915_READ(PCH_PP_CONTROL); + dev_priv->regfile.saveBLC_PWM_CTL = I915_READ(BLC_PWM_PCH_CTL1); + dev_priv->regfile.saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_PCH_CTL2); + dev_priv->regfile.saveBLC_CPU_PWM_CTL = I915_READ(BLC_PWM_CPU_CTL); + dev_priv->regfile.saveBLC_CPU_PWM_CTL2 = I915_READ(BLC_PWM_CPU_CTL2); + dev_priv->regfile.saveLVDS = I915_READ(PCH_LVDS); + } else { + dev_priv->regfile.savePP_CONTROL = I915_READ(PP_CONTROL); + dev_priv->regfile.savePFIT_PGM_RATIOS = I915_READ(PFIT_PGM_RATIOS); + dev_priv->regfile.saveBLC_PWM_CTL = I915_READ(BLC_PWM_CTL); + dev_priv->regfile.saveBLC_HIST_CTL = I915_READ(BLC_HIST_CTL); + if (INTEL_INFO(dev)->gen >= 4) + dev_priv->regfile.saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2); + if (IS_MOBILE(dev) && !IS_I830(dev)) + dev_priv->regfile.saveLVDS = I915_READ(LVDS); + } + + if (!IS_I830(dev) && !IS_845G(dev) && !HAS_PCH_SPLIT(dev)) + dev_priv->regfile.savePFIT_CONTROL = I915_READ(PFIT_CONTROL); + + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PCH_PP_ON_DELAYS); + dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PCH_PP_OFF_DELAYS); + dev_priv->regfile.savePP_DIVISOR = I915_READ(PCH_PP_DIVISOR); + } else { + dev_priv->regfile.savePP_ON_DELAYS = I915_READ(PP_ON_DELAYS); + dev_priv->regfile.savePP_OFF_DELAYS = I915_READ(PP_OFF_DELAYS); + dev_priv->regfile.savePP_DIVISOR = I915_READ(PP_DIVISOR); + } + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display Port state */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + dev_priv->regfile.saveDP_B = I915_READ(DP_B); + dev_priv->regfile.saveDP_C = I915_READ(DP_C); + dev_priv->regfile.saveDP_D = I915_READ(DP_D); + dev_priv->regfile.savePIPEA_GMCH_DATA_M = I915_READ(_PIPEA_GMCH_DATA_M); + dev_priv->regfile.savePIPEB_GMCH_DATA_M = I915_READ(_PIPEB_GMCH_DATA_M); + dev_priv->regfile.savePIPEA_GMCH_DATA_N = I915_READ(_PIPEA_GMCH_DATA_N); + dev_priv->regfile.savePIPEB_GMCH_DATA_N = I915_READ(_PIPEB_GMCH_DATA_N); + dev_priv->regfile.savePIPEA_DP_LINK_M = I915_READ(_PIPEA_DP_LINK_M); + dev_priv->regfile.savePIPEB_DP_LINK_M = I915_READ(_PIPEB_DP_LINK_M); + dev_priv->regfile.savePIPEA_DP_LINK_N = I915_READ(_PIPEA_DP_LINK_N); + dev_priv->regfile.savePIPEB_DP_LINK_N = I915_READ(_PIPEB_DP_LINK_N); + } + /* FIXME: regfile.save TV & SDVO state */ + } + + /* Only regfile.save FBC state on the platform that supports FBC */ + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(ILK_DPFC_CB_BASE); + } else if (IS_GM45(dev)) { + dev_priv->regfile.saveDPFC_CB_BASE = I915_READ(DPFC_CB_BASE); + } else { + dev_priv->regfile.saveFBC_CFB_BASE = I915_READ(FBC_CFB_BASE); + dev_priv->regfile.saveFBC_LL_BASE = I915_READ(FBC_LL_BASE); + dev_priv->regfile.saveFBC_CONTROL2 = I915_READ(FBC_CONTROL2); + dev_priv->regfile.saveFBC_CONTROL = I915_READ(FBC_CONTROL); + } + } + + /* VGA state */ + dev_priv->regfile.saveVGA0 = I915_READ(VGA0); + dev_priv->regfile.saveVGA1 = I915_READ(VGA1); + dev_priv->regfile.saveVGA_PD = I915_READ(VGA_PD); + if (HAS_PCH_SPLIT(dev)) + dev_priv->regfile.saveVGACNTRL = I915_READ(CPU_VGACNTRL); + else + dev_priv->regfile.saveVGACNTRL = I915_READ(VGACNTRL); + + i915_save_vga(dev); +} + +static void i915_restore_display(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Display arbitration */ + I915_WRITE(DSPARB, dev_priv->regfile.saveDSPARB); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display port ratios (must be done before clock is set) */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + I915_WRITE(_PIPEA_GMCH_DATA_M, dev_priv->regfile.savePIPEA_GMCH_DATA_M); + I915_WRITE(_PIPEB_GMCH_DATA_M, dev_priv->regfile.savePIPEB_GMCH_DATA_M); + I915_WRITE(_PIPEA_GMCH_DATA_N, dev_priv->regfile.savePIPEA_GMCH_DATA_N); + I915_WRITE(_PIPEB_GMCH_DATA_N, dev_priv->regfile.savePIPEB_GMCH_DATA_N); + I915_WRITE(_PIPEA_DP_LINK_M, dev_priv->regfile.savePIPEA_DP_LINK_M); + I915_WRITE(_PIPEB_DP_LINK_M, dev_priv->regfile.savePIPEB_DP_LINK_M); + I915_WRITE(_PIPEA_DP_LINK_N, dev_priv->regfile.savePIPEA_DP_LINK_N); + I915_WRITE(_PIPEB_DP_LINK_N, dev_priv->regfile.savePIPEB_DP_LINK_N); + } + } + + /* This is only meaningful in non-KMS mode */ + /* Don't restore them in KMS mode */ + i915_restore_modeset_reg(dev); + + /* LVDS state */ + if (INTEL_INFO(dev)->gen >= 4 && !HAS_PCH_SPLIT(dev)) + I915_WRITE(BLC_PWM_CTL2, dev_priv->regfile.saveBLC_PWM_CTL2); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(PCH_LVDS, dev_priv->regfile.saveLVDS); + } else if (IS_MOBILE(dev) && !IS_I830(dev)) + I915_WRITE(LVDS, dev_priv->regfile.saveLVDS); + + if (!IS_I830(dev) && !IS_845G(dev) && !HAS_PCH_SPLIT(dev)) + I915_WRITE(PFIT_CONTROL, dev_priv->regfile.savePFIT_CONTROL); + + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(BLC_PWM_PCH_CTL1, dev_priv->regfile.saveBLC_PWM_CTL); + I915_WRITE(BLC_PWM_PCH_CTL2, dev_priv->regfile.saveBLC_PWM_CTL2); + /* NOTE: BLC_PWM_CPU_CTL must be written after BLC_PWM_CPU_CTL2; + * otherwise we get blank eDP screen after S3 on some machines + */ + I915_WRITE(BLC_PWM_CPU_CTL2, dev_priv->regfile.saveBLC_CPU_PWM_CTL2); + I915_WRITE(BLC_PWM_CPU_CTL, dev_priv->regfile.saveBLC_CPU_PWM_CTL); + I915_WRITE(PCH_PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS); + I915_WRITE(PCH_PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS); + I915_WRITE(PCH_PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR); + I915_WRITE(PCH_PP_CONTROL, dev_priv->regfile.savePP_CONTROL); + I915_WRITE(RSTDBYCTL, + dev_priv->regfile.saveMCHBAR_RENDER_STANDBY); + } else { + I915_WRITE(PFIT_PGM_RATIOS, dev_priv->regfile.savePFIT_PGM_RATIOS); + I915_WRITE(BLC_PWM_CTL, dev_priv->regfile.saveBLC_PWM_CTL); + I915_WRITE(BLC_HIST_CTL, dev_priv->regfile.saveBLC_HIST_CTL); + I915_WRITE(PP_ON_DELAYS, dev_priv->regfile.savePP_ON_DELAYS); + I915_WRITE(PP_OFF_DELAYS, dev_priv->regfile.savePP_OFF_DELAYS); + I915_WRITE(PP_DIVISOR, dev_priv->regfile.savePP_DIVISOR); + I915_WRITE(PP_CONTROL, dev_priv->regfile.savePP_CONTROL); + } + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Display Port state */ + if (SUPPORTS_INTEGRATED_DP(dev)) { + I915_WRITE(DP_B, dev_priv->regfile.saveDP_B); + I915_WRITE(DP_C, dev_priv->regfile.saveDP_C); + I915_WRITE(DP_D, dev_priv->regfile.saveDP_D); + } + /* FIXME: restore TV & SDVO state */ + } + + /* only restore FBC info on the platform that supports FBC*/ + intel_disable_fbc(dev); + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(ILK_DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE); + } else if (IS_GM45(dev)) { + I915_WRITE(DPFC_CB_BASE, dev_priv->regfile.saveDPFC_CB_BASE); + } else { + I915_WRITE(FBC_CFB_BASE, dev_priv->regfile.saveFBC_CFB_BASE); + I915_WRITE(FBC_LL_BASE, dev_priv->regfile.saveFBC_LL_BASE); + I915_WRITE(FBC_CONTROL2, dev_priv->regfile.saveFBC_CONTROL2); + I915_WRITE(FBC_CONTROL, dev_priv->regfile.saveFBC_CONTROL); + } + } + /* VGA state */ + if (HAS_PCH_SPLIT(dev)) + I915_WRITE(CPU_VGACNTRL, dev_priv->regfile.saveVGACNTRL); + else + I915_WRITE(VGACNTRL, dev_priv->regfile.saveVGACNTRL); + + I915_WRITE(VGA0, dev_priv->regfile.saveVGA0); + I915_WRITE(VGA1, dev_priv->regfile.saveVGA1); + I915_WRITE(VGA_PD, dev_priv->regfile.saveVGA_PD); + POSTING_READ(VGA_PD); + udelay(150); + + i915_restore_vga(dev); +} + +int i915_save_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + pci_read_config_byte(dev->pdev, LBB, &dev_priv->regfile.saveLBB); + + mutex_lock(&dev->struct_mutex); + + i915_save_display(dev); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Interrupt state */ + if (HAS_PCH_SPLIT(dev)) { + dev_priv->regfile.saveDEIER = I915_READ(DEIER); + dev_priv->regfile.saveDEIMR = I915_READ(DEIMR); + dev_priv->regfile.saveGTIER = I915_READ(GTIER); + dev_priv->regfile.saveGTIMR = I915_READ(GTIMR); + dev_priv->regfile.saveFDI_RXA_IMR = I915_READ(_FDI_RXA_IMR); + dev_priv->regfile.saveFDI_RXB_IMR = I915_READ(_FDI_RXB_IMR); + dev_priv->regfile.saveMCHBAR_RENDER_STANDBY = + I915_READ(RSTDBYCTL); + dev_priv->regfile.savePCH_PORT_HOTPLUG = I915_READ(PCH_PORT_HOTPLUG); + } else { + dev_priv->regfile.saveIER = I915_READ(IER); + dev_priv->regfile.saveIMR = I915_READ(IMR); + } + } + + intel_disable_gt_powersave(dev); + + /* Cache mode state */ + dev_priv->regfile.saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0); + + /* Memory Arbitration state */ + dev_priv->regfile.saveMI_ARB_STATE = I915_READ(MI_ARB_STATE); + + /* Scratch space */ + for (i = 0; i < 16; i++) { + dev_priv->regfile.saveSWF0[i] = I915_READ(SWF00 + (i << 2)); + dev_priv->regfile.saveSWF1[i] = I915_READ(SWF10 + (i << 2)); + } + for (i = 0; i < 3; i++) + dev_priv->regfile.saveSWF2[i] = I915_READ(SWF30 + (i << 2)); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +int i915_restore_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + pci_write_config_byte(dev->pdev, LBB, dev_priv->regfile.saveLBB); + + mutex_lock(&dev->struct_mutex); + + i915_restore_display(dev); + + if (!drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Interrupt state */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(DEIER, dev_priv->regfile.saveDEIER); + I915_WRITE(DEIMR, dev_priv->regfile.saveDEIMR); + I915_WRITE(GTIER, dev_priv->regfile.saveGTIER); + I915_WRITE(GTIMR, dev_priv->regfile.saveGTIMR); + I915_WRITE(_FDI_RXA_IMR, dev_priv->regfile.saveFDI_RXA_IMR); + I915_WRITE(_FDI_RXB_IMR, dev_priv->regfile.saveFDI_RXB_IMR); + I915_WRITE(PCH_PORT_HOTPLUG, dev_priv->regfile.savePCH_PORT_HOTPLUG); + } else { + I915_WRITE(IER, dev_priv->regfile.saveIER); + I915_WRITE(IMR, dev_priv->regfile.saveIMR); + } + } + + /* Cache mode state */ + I915_WRITE(CACHE_MODE_0, dev_priv->regfile.saveCACHE_MODE_0 | 0xffff0000); + + /* Memory arbitration state */ + I915_WRITE(MI_ARB_STATE, dev_priv->regfile.saveMI_ARB_STATE | 0xffff0000); + + for (i = 0; i < 16; i++) { + I915_WRITE(SWF00 + (i << 2), dev_priv->regfile.saveSWF0[i]); + I915_WRITE(SWF10 + (i << 2), dev_priv->regfile.saveSWF1[i]); + } + for (i = 0; i < 3; i++) + I915_WRITE(SWF30 + (i << 2), dev_priv->regfile.saveSWF2[i]); + + mutex_unlock(&dev->struct_mutex); + + intel_i2c_reset(dev); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/dvo.h +++ linux-3.5.0/ubuntu/i915/dvo.h @@ -0,0 +1,150 @@ +/* + * Copyright © 2006 Eric Anholt + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that copyright + * notice and this permission notice appear in supporting documentation, and + * that the name of the copyright holders not be used in advertising or + * publicity pertaining to distribution of the software without specific, + * written prior permission. The copyright holders make no representations + * about the suitability of this software for any purpose. It is provided "as + * is" without express or implied warranty. + * + * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE + * OF THIS SOFTWARE. + */ + +#ifndef _INTEL_DVO_H +#define _INTEL_DVO_H + +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "intel_drv.h" + +struct intel_dvo_device { + const char *name; + int type; + /* DVOA/B/C output register */ + u32 dvo_reg; + /* GPIO register used for i2c bus to control this device */ + u32 gpio; + int slave_addr; + + const struct intel_dvo_dev_ops *dev_ops; + void *dev_priv; + struct i2c_adapter *i2c_bus; +}; + +struct intel_dvo_dev_ops { + /* + * Initialize the device at startup time. + * Returns NULL if the device does not exist. + */ + bool (*init)(struct intel_dvo_device *dvo, + struct i2c_adapter *i2cbus); + + /* + * Called to allow the output a chance to create properties after the + * RandR objects have been created. + */ + void (*create_resources)(struct intel_dvo_device *dvo); + + /* + * Turn on/off output. + * + * Because none of our dvo drivers support an intermediate power levels, + * we don't expose this in the interfac. + */ + void (*dpms)(struct intel_dvo_device *dvo, bool enable); + + /* + * Callback for testing a video mode for a given output. + * + * This function should only check for cases where a mode can't + * be supported on the output specifically, and not represent + * generic CRTC limitations. + * + * \return MODE_OK if the mode is valid, or another MODE_* otherwise. + */ + int (*mode_valid)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode); + + /* + * Callback to adjust the mode to be set in the CRTC. + * + * This allows an output to adjust the clock or even the entire set of + * timings, which is used for panels with fixed timings or for + * buses with clock limitations. + */ + bool (*mode_fixup)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); + + /* + * Callback for preparing mode changes on an output + */ + void (*prepare)(struct intel_dvo_device *dvo); + + /* + * Callback for committing mode changes on an output + */ + void (*commit)(struct intel_dvo_device *dvo); + + /* + * Callback for setting up a video mode after fixups have been made. + * + * This is only called while the output is disabled. The dpms callback + * must be all that's necessary for the output, to turn the output on + * after this function is called. + */ + void (*mode_set)(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode); + + /* + * Probe for a connected output, and return detect_status. + */ + enum drm_connector_status (*detect)(struct intel_dvo_device *dvo); + + /* + * Probe the current hw status, returning true if the connected output + * is active. + */ + bool (*get_hw_state)(struct intel_dvo_device *dev); + + /** + * Query the device for the modes it provides. + * + * This function may also update MonInfo, mm_width, and mm_height. + * + * \return singly-linked list of modes or NULL if no modes found. + */ + struct drm_display_mode *(*get_modes)(struct intel_dvo_device *dvo); + + /** + * Clean up driver-specific bits of the output + */ + void (*destroy) (struct intel_dvo_device *dvo); + + /** + * Debugging hook to dump device registers to log file + */ + void (*dump_regs)(struct intel_dvo_device *dvo); +}; + +extern struct intel_dvo_dev_ops sil164_ops; +extern struct intel_dvo_dev_ops ch7xxx_ops; +extern struct intel_dvo_dev_ops ivch_ops; +extern struct intel_dvo_dev_ops tfp410_ops; +extern struct intel_dvo_dev_ops ch7017_ops; +extern struct intel_dvo_dev_ops ns2501_ops; + +#endif /* _INTEL_DVO_H */ --- linux-3.5.0.orig/ubuntu/i915/intel_overlay.c +++ linux-3.5.0/ubuntu/i915/intel_overlay.c @@ -0,0 +1,1538 @@ +/* + * Copyright © 2009 + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Daniel Vetter + * + * Derived from Xorg ddx, xf86-video-intel, src/i830_video.c + */ +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_reg.h" +#include "intel_drv.h" + +/* Limits for overlay size. According to intel doc, the real limits are: + * Y width: 4095, UV width (planar): 2047, Y height: 2047, + * UV width (planar): * 1023. But the xorg thinks 2048 for height and width. Use + * the mininum of both. */ +#define IMAGE_MAX_WIDTH 2048 +#define IMAGE_MAX_HEIGHT 2046 /* 2 * 1023 */ +/* on 830 and 845 these large limits result in the card hanging */ +#define IMAGE_MAX_WIDTH_LEGACY 1024 +#define IMAGE_MAX_HEIGHT_LEGACY 1088 + +/* overlay register definitions */ +/* OCMD register */ +#define OCMD_TILED_SURFACE (0x1<<19) +#define OCMD_MIRROR_MASK (0x3<<17) +#define OCMD_MIRROR_MODE (0x3<<17) +#define OCMD_MIRROR_HORIZONTAL (0x1<<17) +#define OCMD_MIRROR_VERTICAL (0x2<<17) +#define OCMD_MIRROR_BOTH (0x3<<17) +#define OCMD_BYTEORDER_MASK (0x3<<14) /* zero for YUYV or FOURCC YUY2 */ +#define OCMD_UV_SWAP (0x1<<14) /* YVYU */ +#define OCMD_Y_SWAP (0x2<<14) /* UYVY or FOURCC UYVY */ +#define OCMD_Y_AND_UV_SWAP (0x3<<14) /* VYUY */ +#define OCMD_SOURCE_FORMAT_MASK (0xf<<10) +#define OCMD_RGB_888 (0x1<<10) /* not in i965 Intel docs */ +#define OCMD_RGB_555 (0x2<<10) /* not in i965 Intel docs */ +#define OCMD_RGB_565 (0x3<<10) /* not in i965 Intel docs */ +#define OCMD_YUV_422_PACKED (0x8<<10) +#define OCMD_YUV_411_PACKED (0x9<<10) /* not in i965 Intel docs */ +#define OCMD_YUV_420_PLANAR (0xc<<10) +#define OCMD_YUV_422_PLANAR (0xd<<10) +#define OCMD_YUV_410_PLANAR (0xe<<10) /* also 411 */ +#define OCMD_TVSYNCFLIP_PARITY (0x1<<9) +#define OCMD_TVSYNCFLIP_ENABLE (0x1<<7) +#define OCMD_BUF_TYPE_MASK (0x1<<5) +#define OCMD_BUF_TYPE_FRAME (0x0<<5) +#define OCMD_BUF_TYPE_FIELD (0x1<<5) +#define OCMD_TEST_MODE (0x1<<4) +#define OCMD_BUFFER_SELECT (0x3<<2) +#define OCMD_BUFFER0 (0x0<<2) +#define OCMD_BUFFER1 (0x1<<2) +#define OCMD_FIELD_SELECT (0x1<<2) +#define OCMD_FIELD0 (0x0<<1) +#define OCMD_FIELD1 (0x1<<1) +#define OCMD_ENABLE (0x1<<0) + +/* OCONFIG register */ +#define OCONF_PIPE_MASK (0x1<<18) +#define OCONF_PIPE_A (0x0<<18) +#define OCONF_PIPE_B (0x1<<18) +#define OCONF_GAMMA2_ENABLE (0x1<<16) +#define OCONF_CSC_MODE_BT601 (0x0<<5) +#define OCONF_CSC_MODE_BT709 (0x1<<5) +#define OCONF_CSC_BYPASS (0x1<<4) +#define OCONF_CC_OUT_8BIT (0x1<<3) +#define OCONF_TEST_MODE (0x1<<2) +#define OCONF_THREE_LINE_BUFFER (0x1<<0) +#define OCONF_TWO_LINE_BUFFER (0x0<<0) + +/* DCLRKM (dst-key) register */ +#define DST_KEY_ENABLE (0x1<<31) +#define CLK_RGB24_MASK 0x0 +#define CLK_RGB16_MASK 0x070307 +#define CLK_RGB15_MASK 0x070707 +#define CLK_RGB8I_MASK 0xffffff + +#define RGB16_TO_COLORKEY(c) \ + (((c & 0xF800) << 8) | ((c & 0x07E0) << 5) | ((c & 0x001F) << 3)) +#define RGB15_TO_COLORKEY(c) \ + (((c & 0x7c00) << 9) | ((c & 0x03E0) << 6) | ((c & 0x001F) << 3)) + +/* overlay flip addr flag */ +#define OFC_UPDATE 0x1 + +/* polyphase filter coefficients */ +#define N_HORIZ_Y_TAPS 5 +#define N_VERT_Y_TAPS 3 +#define N_HORIZ_UV_TAPS 3 +#define N_VERT_UV_TAPS 3 +#define N_PHASES 17 +#define MAX_TAPS 5 + +/* memory bufferd overlay registers */ +struct overlay_registers { + u32 OBUF_0Y; + u32 OBUF_1Y; + u32 OBUF_0U; + u32 OBUF_0V; + u32 OBUF_1U; + u32 OBUF_1V; + u32 OSTRIDE; + u32 YRGB_VPH; + u32 UV_VPH; + u32 HORZ_PH; + u32 INIT_PHS; + u32 DWINPOS; + u32 DWINSZ; + u32 SWIDTH; + u32 SWIDTHSW; + u32 SHEIGHT; + u32 YRGBSCALE; + u32 UVSCALE; + u32 OCLRC0; + u32 OCLRC1; + u32 DCLRKV; + u32 DCLRKM; + u32 SCLRKVH; + u32 SCLRKVL; + u32 SCLRKEN; + u32 OCONFIG; + u32 OCMD; + u32 RESERVED1; /* 0x6C */ + u32 OSTART_0Y; + u32 OSTART_1Y; + u32 OSTART_0U; + u32 OSTART_0V; + u32 OSTART_1U; + u32 OSTART_1V; + u32 OTILEOFF_0Y; + u32 OTILEOFF_1Y; + u32 OTILEOFF_0U; + u32 OTILEOFF_0V; + u32 OTILEOFF_1U; + u32 OTILEOFF_1V; + u32 FASTHSCALE; /* 0xA0 */ + u32 UVSCALEV; /* 0xA4 */ + u32 RESERVEDC[(0x200 - 0xA8) / 4]; /* 0xA8 - 0x1FC */ + u16 Y_VCOEFS[N_VERT_Y_TAPS * N_PHASES]; /* 0x200 */ + u16 RESERVEDD[0x100 / 2 - N_VERT_Y_TAPS * N_PHASES]; + u16 Y_HCOEFS[N_HORIZ_Y_TAPS * N_PHASES]; /* 0x300 */ + u16 RESERVEDE[0x200 / 2 - N_HORIZ_Y_TAPS * N_PHASES]; + u16 UV_VCOEFS[N_VERT_UV_TAPS * N_PHASES]; /* 0x500 */ + u16 RESERVEDF[0x100 / 2 - N_VERT_UV_TAPS * N_PHASES]; + u16 UV_HCOEFS[N_HORIZ_UV_TAPS * N_PHASES]; /* 0x600 */ + u16 RESERVEDG[0x100 / 2 - N_HORIZ_UV_TAPS * N_PHASES]; +}; + +struct intel_overlay { + struct drm_device *dev; + struct intel_crtc *crtc; + struct drm_i915_gem_object *vid_bo; + struct drm_i915_gem_object *old_vid_bo; + int active; + int pfit_active; + u32 pfit_vscale_ratio; /* shifted-point number, (1<<12) == 1.0 */ + u32 color_key; + u32 brightness, contrast, saturation; + u32 old_xscale, old_yscale; + /* register access */ + u32 flip_addr; + struct drm_i915_gem_object *reg_bo; + /* flip handling */ + uint32_t last_flip_req; + void (*flip_tail)(struct intel_overlay *); +}; + +static struct overlay_registers __iomem * +intel_overlay_map_regs(struct intel_overlay *overlay) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + struct overlay_registers __iomem *regs; + + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + regs = (struct overlay_registers __iomem *)overlay->reg_bo->phys_obj->handle->vaddr; + else + regs = io_mapping_map_wc(dev_priv->mm.gtt_mapping, + overlay->reg_bo->gtt_offset); + + return regs; +} + +static void intel_overlay_unmap_regs(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + if (!OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + io_mapping_unmap(regs); +} + +static int intel_overlay_do_wait_request(struct intel_overlay *overlay, + void (*tail)(struct intel_overlay *)) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + BUG_ON(overlay->last_flip_req); + ret = i915_add_request(ring, NULL, &overlay->last_flip_req); + if (ret) + return ret; + + overlay->flip_tail = tail; + ret = i915_wait_seqno(ring, overlay->last_flip_req); + if (ret) + return ret; + i915_gem_retire_requests(dev); + + overlay->last_flip_req = 0; + return 0; +} + +/* overlay needs to be disable in OCMD reg */ +static int intel_overlay_on(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + BUG_ON(overlay->active); + overlay->active = 1; + + WARN_ON(IS_I830(dev) && !(dev_priv->quirks & QUIRK_PIPEA_FORCE)); + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_ON); + intel_ring_emit(ring, overlay->flip_addr | OFC_UPDATE); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return intel_overlay_do_wait_request(overlay, NULL); +} + +/* overlay needs to be enabled in OCMD reg */ +static int intel_overlay_continue(struct intel_overlay *overlay, + bool load_polyphase_filter) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + u32 flip_addr = overlay->flip_addr; + u32 tmp; + int ret; + + BUG_ON(!overlay->active); + + if (load_polyphase_filter) + flip_addr |= OFC_UPDATE; + + /* check for underruns */ + tmp = I915_READ(DOVSTA); + if (tmp & (1 << 17)) + DRM_DEBUG("overlay underrun, DOVSTA: %x\n", tmp); + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE); + intel_ring_emit(ring, flip_addr); + intel_ring_advance(ring); + + return i915_add_request(ring, NULL, &overlay->last_flip_req); +} + +static void intel_overlay_release_old_vid_tail(struct intel_overlay *overlay) +{ + struct drm_i915_gem_object *obj = overlay->old_vid_bo; + + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + + overlay->old_vid_bo = NULL; +} + +static void intel_overlay_off_tail(struct intel_overlay *overlay) +{ + struct drm_i915_gem_object *obj = overlay->vid_bo; + + /* never have the overlay hw on without showing a frame */ + BUG_ON(!overlay->vid_bo); + + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + overlay->vid_bo = NULL; + + overlay->crtc->overlay = NULL; + overlay->crtc = NULL; + overlay->active = 0; +} + +/* overlay needs to be disabled in OCMD reg */ +static int intel_overlay_off(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + u32 flip_addr = overlay->flip_addr; + int ret; + + BUG_ON(!overlay->active); + + /* According to intel docs the overlay hw may hang (when switching + * off) without loading the filter coeffs. It is however unclear whether + * this applies to the disabling of the overlay or to the switching off + * of the hw. Do it in both cases */ + flip_addr |= OFC_UPDATE; + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + /* wait for overlay to go idle */ + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_CONTINUE); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + /* turn overlay off */ + if (IS_I830(dev)) { + /* Workaround: Don't disable the overlay fully, since otherwise + * it dies on the next OVERLAY_ON cmd. */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_NOOP); + } else { + intel_ring_emit(ring, MI_OVERLAY_FLIP | MI_OVERLAY_OFF); + intel_ring_emit(ring, flip_addr); + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + } + intel_ring_advance(ring); + + return intel_overlay_do_wait_request(overlay, intel_overlay_off_tail); +} + +/* recover from an interruption due to a signal + * We have to be careful not to repeat work forever an make forward progess. */ +static int intel_overlay_recover_from_interrupt(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + if (overlay->last_flip_req == 0) + return 0; + + ret = i915_wait_seqno(ring, overlay->last_flip_req); + if (ret) + return ret; + i915_gem_retire_requests(dev); + + if (overlay->flip_tail) + overlay->flip_tail(overlay); + + overlay->last_flip_req = 0; + return 0; +} + +/* Wait for pending overlay flip and release old frame. + * Needs to be called before the overlay register are changed + * via intel_overlay_(un)map_regs + */ +static int intel_overlay_release_old_vid(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + /* Only wait if there is actually an old frame to release to + * guarantee forward progress. + */ + if (!overlay->old_vid_bo) + return 0; + + if (I915_READ(ISR) & I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT) { + /* synchronous slowpath */ + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | MI_WAIT_FOR_OVERLAY_FLIP); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + ret = intel_overlay_do_wait_request(overlay, + intel_overlay_release_old_vid_tail); + if (ret) + return ret; + } + + intel_overlay_release_old_vid_tail(overlay); + return 0; +} + +struct put_image_params { + int format; + short dst_x; + short dst_y; + short dst_w; + short dst_h; + short src_w; + short src_scan_h; + short src_scan_w; + short src_h; + short stride_Y; + short stride_UV; + int offset_Y; + int offset_U; + int offset_V; +}; + +static int packed_depth_bytes(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + return 4; + case I915_OVERLAY_YUV411: + /* return 6; not implemented */ + default: + return -EINVAL; + } +} + +static int packed_width_bytes(u32 format, short width) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + return width << 1; + default: + return -EINVAL; + } +} + +static int uv_hsubsampling(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + case I915_OVERLAY_YUV420: + return 2; + case I915_OVERLAY_YUV411: + case I915_OVERLAY_YUV410: + return 4; + default: + return -EINVAL; + } +} + +static int uv_vsubsampling(u32 format) +{ + switch (format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV420: + case I915_OVERLAY_YUV410: + return 2; + case I915_OVERLAY_YUV422: + case I915_OVERLAY_YUV411: + return 1; + default: + return -EINVAL; + } +} + +static u32 calc_swidthsw(struct drm_device *dev, u32 offset, u32 width) +{ + u32 mask, shift, ret; + if (IS_GEN2(dev)) { + mask = 0x1f; + shift = 5; + } else { + mask = 0x3f; + shift = 6; + } + ret = ((offset + width + mask) >> shift) - (offset >> shift); + if (!IS_GEN2(dev)) + ret <<= 1; + ret -= 1; + return ret << 2; +} + +static const u16 y_static_hcoeffs[N_HORIZ_Y_TAPS * N_PHASES] = { + 0x3000, 0xb4a0, 0x1930, 0x1920, 0xb4a0, + 0x3000, 0xb500, 0x19d0, 0x1880, 0xb440, + 0x3000, 0xb540, 0x1a88, 0x2f80, 0xb3e0, + 0x3000, 0xb580, 0x1b30, 0x2e20, 0xb380, + 0x3000, 0xb5c0, 0x1bd8, 0x2cc0, 0xb320, + 0x3020, 0xb5e0, 0x1c60, 0x2b80, 0xb2c0, + 0x3020, 0xb5e0, 0x1cf8, 0x2a20, 0xb260, + 0x3020, 0xb5e0, 0x1d80, 0x28e0, 0xb200, + 0x3020, 0xb5c0, 0x1e08, 0x3f40, 0xb1c0, + 0x3020, 0xb580, 0x1e78, 0x3ce0, 0xb160, + 0x3040, 0xb520, 0x1ed8, 0x3aa0, 0xb120, + 0x3040, 0xb4a0, 0x1f30, 0x3880, 0xb0e0, + 0x3040, 0xb400, 0x1f78, 0x3680, 0xb0a0, + 0x3020, 0xb340, 0x1fb8, 0x34a0, 0xb060, + 0x3020, 0xb240, 0x1fe0, 0x32e0, 0xb040, + 0x3020, 0xb140, 0x1ff8, 0x3160, 0xb020, + 0xb000, 0x3000, 0x0800, 0x3000, 0xb000 +}; + +static const u16 uv_static_hcoeffs[N_HORIZ_UV_TAPS * N_PHASES] = { + 0x3000, 0x1800, 0x1800, 0xb000, 0x18d0, 0x2e60, + 0xb000, 0x1990, 0x2ce0, 0xb020, 0x1a68, 0x2b40, + 0xb040, 0x1b20, 0x29e0, 0xb060, 0x1bd8, 0x2880, + 0xb080, 0x1c88, 0x3e60, 0xb0a0, 0x1d28, 0x3c00, + 0xb0c0, 0x1db8, 0x39e0, 0xb0e0, 0x1e40, 0x37e0, + 0xb100, 0x1eb8, 0x3620, 0xb100, 0x1f18, 0x34a0, + 0xb100, 0x1f68, 0x3360, 0xb0e0, 0x1fa8, 0x3240, + 0xb0c0, 0x1fe0, 0x3140, 0xb060, 0x1ff0, 0x30a0, + 0x3000, 0x0800, 0x3000 +}; + +static void update_polyphase_filter(struct overlay_registers __iomem *regs) +{ + memcpy_toio(regs->Y_HCOEFS, y_static_hcoeffs, sizeof(y_static_hcoeffs)); + memcpy_toio(regs->UV_HCOEFS, uv_static_hcoeffs, + sizeof(uv_static_hcoeffs)); +} + +static bool update_scaling_factors(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs, + struct put_image_params *params) +{ + /* fixed point with a 12 bit shift */ + u32 xscale, yscale, xscale_UV, yscale_UV; +#define FP_SHIFT 12 +#define FRACT_MASK 0xfff + bool scale_changed = false; + int uv_hscale = uv_hsubsampling(params->format); + int uv_vscale = uv_vsubsampling(params->format); + + if (params->dst_w > 1) + xscale = ((params->src_scan_w - 1) << FP_SHIFT) + /(params->dst_w); + else + xscale = 1 << FP_SHIFT; + + if (params->dst_h > 1) + yscale = ((params->src_scan_h - 1) << FP_SHIFT) + /(params->dst_h); + else + yscale = 1 << FP_SHIFT; + + /*if (params->format & I915_OVERLAY_YUV_PLANAR) {*/ + xscale_UV = xscale/uv_hscale; + yscale_UV = yscale/uv_vscale; + /* make the Y scale to UV scale ratio an exact multiply */ + xscale = xscale_UV * uv_hscale; + yscale = yscale_UV * uv_vscale; + /*} else { + xscale_UV = 0; + yscale_UV = 0; + }*/ + + if (xscale != overlay->old_xscale || yscale != overlay->old_yscale) + scale_changed = true; + overlay->old_xscale = xscale; + overlay->old_yscale = yscale; + + iowrite32(((yscale & FRACT_MASK) << 20) | + ((xscale >> FP_SHIFT) << 16) | + ((xscale & FRACT_MASK) << 3), + ®s->YRGBSCALE); + + iowrite32(((yscale_UV & FRACT_MASK) << 20) | + ((xscale_UV >> FP_SHIFT) << 16) | + ((xscale_UV & FRACT_MASK) << 3), + ®s->UVSCALE); + + iowrite32((((yscale >> FP_SHIFT) << 16) | + ((yscale_UV >> FP_SHIFT) << 0)), + ®s->UVSCALEV); + + if (scale_changed) + update_polyphase_filter(regs); + + return scale_changed; +} + +static void update_colorkey(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + u32 key = overlay->color_key; + + switch (overlay->crtc->base.fb->bits_per_pixel) { + case 8: + iowrite32(0, ®s->DCLRKV); + iowrite32(CLK_RGB8I_MASK | DST_KEY_ENABLE, ®s->DCLRKM); + break; + + case 16: + if (overlay->crtc->base.fb->depth == 15) { + iowrite32(RGB15_TO_COLORKEY(key), ®s->DCLRKV); + iowrite32(CLK_RGB15_MASK | DST_KEY_ENABLE, + ®s->DCLRKM); + } else { + iowrite32(RGB16_TO_COLORKEY(key), ®s->DCLRKV); + iowrite32(CLK_RGB16_MASK | DST_KEY_ENABLE, + ®s->DCLRKM); + } + break; + + case 24: + case 32: + iowrite32(key, ®s->DCLRKV); + iowrite32(CLK_RGB24_MASK | DST_KEY_ENABLE, ®s->DCLRKM); + break; + } +} + +static u32 overlay_cmd_reg(struct put_image_params *params) +{ + u32 cmd = OCMD_ENABLE | OCMD_BUF_TYPE_FRAME | OCMD_BUFFER0; + + if (params->format & I915_OVERLAY_YUV_PLANAR) { + switch (params->format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + cmd |= OCMD_YUV_422_PLANAR; + break; + case I915_OVERLAY_YUV420: + cmd |= OCMD_YUV_420_PLANAR; + break; + case I915_OVERLAY_YUV411: + case I915_OVERLAY_YUV410: + cmd |= OCMD_YUV_410_PLANAR; + break; + } + } else { /* YUV packed */ + switch (params->format & I915_OVERLAY_DEPTH_MASK) { + case I915_OVERLAY_YUV422: + cmd |= OCMD_YUV_422_PACKED; + break; + case I915_OVERLAY_YUV411: + cmd |= OCMD_YUV_411_PACKED; + break; + } + + switch (params->format & I915_OVERLAY_SWAP_MASK) { + case I915_OVERLAY_NO_SWAP: + break; + case I915_OVERLAY_UV_SWAP: + cmd |= OCMD_UV_SWAP; + break; + case I915_OVERLAY_Y_SWAP: + cmd |= OCMD_Y_SWAP; + break; + case I915_OVERLAY_Y_AND_UV_SWAP: + cmd |= OCMD_Y_AND_UV_SWAP; + break; + } + } + + return cmd; +} + +static int intel_overlay_do_put_image(struct intel_overlay *overlay, + struct drm_i915_gem_object *new_bo, + struct put_image_params *params) +{ + int ret, tmp_width; + struct overlay_registers __iomem *regs; + bool scale_changed = false; + struct drm_device *dev = overlay->dev; + u32 swidth, swidthsw, sheight, ostride; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); + BUG_ON(!overlay); + + ret = intel_overlay_release_old_vid(overlay); + if (ret != 0) + return ret; + + ret = i915_gem_object_pin_to_display_plane(new_bo, 0, NULL); + if (ret != 0) + return ret; + + ret = i915_gem_object_put_fence(new_bo); + if (ret) + goto out_unpin; + + if (!overlay->active) { + u32 oconfig; + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unpin; + } + oconfig = OCONF_CC_OUT_8BIT; + if (IS_GEN4(overlay->dev)) + oconfig |= OCONF_CSC_MODE_BT709; + oconfig |= overlay->crtc->pipe == 0 ? + OCONF_PIPE_A : OCONF_PIPE_B; + iowrite32(oconfig, ®s->OCONFIG); + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_on(overlay); + if (ret != 0) + goto out_unpin; + } + + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unpin; + } + + iowrite32((params->dst_y << 16) | params->dst_x, ®s->DWINPOS); + iowrite32((params->dst_h << 16) | params->dst_w, ®s->DWINSZ); + + if (params->format & I915_OVERLAY_YUV_PACKED) + tmp_width = packed_width_bytes(params->format, params->src_w); + else + tmp_width = params->src_w; + + swidth = params->src_w; + swidthsw = calc_swidthsw(overlay->dev, params->offset_Y, tmp_width); + sheight = params->src_h; + iowrite32(new_bo->gtt_offset + params->offset_Y, ®s->OBUF_0Y); + ostride = params->stride_Y; + + if (params->format & I915_OVERLAY_YUV_PLANAR) { + int uv_hscale = uv_hsubsampling(params->format); + int uv_vscale = uv_vsubsampling(params->format); + u32 tmp_U, tmp_V; + swidth |= (params->src_w/uv_hscale) << 16; + tmp_U = calc_swidthsw(overlay->dev, params->offset_U, + params->src_w/uv_hscale); + tmp_V = calc_swidthsw(overlay->dev, params->offset_V, + params->src_w/uv_hscale); + swidthsw |= max_t(u32, tmp_U, tmp_V) << 16; + sheight |= (params->src_h/uv_vscale) << 16; + iowrite32(new_bo->gtt_offset + params->offset_U, ®s->OBUF_0U); + iowrite32(new_bo->gtt_offset + params->offset_V, ®s->OBUF_0V); + ostride |= params->stride_UV << 16; + } + + iowrite32(swidth, ®s->SWIDTH); + iowrite32(swidthsw, ®s->SWIDTHSW); + iowrite32(sheight, ®s->SHEIGHT); + iowrite32(ostride, ®s->OSTRIDE); + + scale_changed = update_scaling_factors(overlay, regs, params); + + update_colorkey(overlay, regs); + + iowrite32(overlay_cmd_reg(params), ®s->OCMD); + + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_continue(overlay, scale_changed); + if (ret) + goto out_unpin; + + overlay->old_vid_bo = overlay->vid_bo; + overlay->vid_bo = new_bo; + + return 0; + +out_unpin: + i915_gem_object_unpin(new_bo); + return ret; +} + +int intel_overlay_switch_off(struct intel_overlay *overlay) +{ + struct overlay_registers __iomem *regs; + struct drm_device *dev = overlay->dev; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!mutex_is_locked(&dev->mode_config.mutex)); + + ret = intel_overlay_recover_from_interrupt(overlay); + if (ret != 0) + return ret; + + if (!overlay->active) + return 0; + + ret = intel_overlay_release_old_vid(overlay); + if (ret != 0) + return ret; + + regs = intel_overlay_map_regs(overlay); + iowrite32(0, ®s->OCMD); + intel_overlay_unmap_regs(overlay, regs); + + ret = intel_overlay_off(overlay); + if (ret != 0) + return ret; + + intel_overlay_off_tail(overlay); + return 0; +} + +static int check_overlay_possible_on_crtc(struct intel_overlay *overlay, + struct intel_crtc *crtc) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + + if (!crtc->active) + return -EINVAL; + + /* can't use the overlay with double wide pipe */ + if (INTEL_INFO(overlay->dev)->gen < 4 && + (I915_READ(PIPECONF(crtc->pipe)) & (PIPECONF_DOUBLE_WIDE | PIPECONF_ENABLE)) != PIPECONF_ENABLE) + return -EINVAL; + + return 0; +} + +static void update_pfit_vscale_ratio(struct intel_overlay *overlay) +{ + struct drm_device *dev = overlay->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 pfit_control = I915_READ(PFIT_CONTROL); + u32 ratio; + + /* XXX: This is not the same logic as in the xorg driver, but more in + * line with the intel documentation for the i965 + */ + if (INTEL_INFO(dev)->gen >= 4) { + /* on i965 use the PGM reg to read out the autoscaler values */ + ratio = I915_READ(PFIT_PGM_RATIOS) >> PFIT_VERT_SCALE_SHIFT_965; + } else { + if (pfit_control & VERT_AUTO_SCALE) + ratio = I915_READ(PFIT_AUTO_RATIOS); + else + ratio = I915_READ(PFIT_PGM_RATIOS); + ratio >>= PFIT_VERT_SCALE_SHIFT; + } + + overlay->pfit_vscale_ratio = ratio; +} + +static int check_overlay_dst(struct intel_overlay *overlay, + struct drm_intel_overlay_put_image *rec) +{ + struct drm_display_mode *mode = &overlay->crtc->base.mode; + + if (rec->dst_x < mode->hdisplay && + rec->dst_x + rec->dst_width <= mode->hdisplay && + rec->dst_y < mode->vdisplay && + rec->dst_y + rec->dst_height <= mode->vdisplay) + return 0; + else + return -EINVAL; +} + +static int check_overlay_scaling(struct put_image_params *rec) +{ + u32 tmp; + + /* downscaling limit is 8.0 */ + tmp = ((rec->src_scan_h << 16) / rec->dst_h) >> 16; + if (tmp > 7) + return -EINVAL; + tmp = ((rec->src_scan_w << 16) / rec->dst_w) >> 16; + if (tmp > 7) + return -EINVAL; + + return 0; +} + +static int check_overlay_src(struct drm_device *dev, + struct drm_intel_overlay_put_image *rec, + struct drm_i915_gem_object *new_bo) +{ + int uv_hscale = uv_hsubsampling(rec->flags); + int uv_vscale = uv_vsubsampling(rec->flags); + u32 stride_mask; + int depth; + u32 tmp; + + /* check src dimensions */ + if (IS_845G(dev) || IS_I830(dev)) { + if (rec->src_height > IMAGE_MAX_HEIGHT_LEGACY || + rec->src_width > IMAGE_MAX_WIDTH_LEGACY) + return -EINVAL; + } else { + if (rec->src_height > IMAGE_MAX_HEIGHT || + rec->src_width > IMAGE_MAX_WIDTH) + return -EINVAL; + } + + /* better safe than sorry, use 4 as the maximal subsampling ratio */ + if (rec->src_height < N_VERT_Y_TAPS*4 || + rec->src_width < N_HORIZ_Y_TAPS*4) + return -EINVAL; + + /* check alignment constraints */ + switch (rec->flags & I915_OVERLAY_TYPE_MASK) { + case I915_OVERLAY_RGB: + /* not implemented */ + return -EINVAL; + + case I915_OVERLAY_YUV_PACKED: + if (uv_vscale != 1) + return -EINVAL; + + depth = packed_depth_bytes(rec->flags); + if (depth < 0) + return depth; + + /* ignore UV planes */ + rec->stride_UV = 0; + rec->offset_U = 0; + rec->offset_V = 0; + /* check pixel alignment */ + if (rec->offset_Y % depth) + return -EINVAL; + break; + + case I915_OVERLAY_YUV_PLANAR: + if (uv_vscale < 0 || uv_hscale < 0) + return -EINVAL; + /* no offset restrictions for planar formats */ + break; + + default: + return -EINVAL; + } + + if (rec->src_width % uv_hscale) + return -EINVAL; + + /* stride checking */ + if (IS_I830(dev) || IS_845G(dev)) + stride_mask = 255; + else + stride_mask = 63; + + if (rec->stride_Y & stride_mask || rec->stride_UV & stride_mask) + return -EINVAL; + if (IS_GEN4(dev) && rec->stride_Y < 512) + return -EINVAL; + + tmp = (rec->flags & I915_OVERLAY_TYPE_MASK) == I915_OVERLAY_YUV_PLANAR ? + 4096 : 8192; + if (rec->stride_Y > tmp || rec->stride_UV > 2*1024) + return -EINVAL; + + /* check buffer dimensions */ + switch (rec->flags & I915_OVERLAY_TYPE_MASK) { + case I915_OVERLAY_RGB: + case I915_OVERLAY_YUV_PACKED: + /* always 4 Y values per depth pixels */ + if (packed_width_bytes(rec->flags, rec->src_width) > rec->stride_Y) + return -EINVAL; + + tmp = rec->stride_Y*rec->src_height; + if (rec->offset_Y + tmp > new_bo->base.size) + return -EINVAL; + break; + + case I915_OVERLAY_YUV_PLANAR: + if (rec->src_width > rec->stride_Y) + return -EINVAL; + if (rec->src_width/uv_hscale > rec->stride_UV) + return -EINVAL; + + tmp = rec->stride_Y * rec->src_height; + if (rec->offset_Y + tmp > new_bo->base.size) + return -EINVAL; + + tmp = rec->stride_UV * (rec->src_height / uv_vscale); + if (rec->offset_U + tmp > new_bo->base.size || + rec->offset_V + tmp > new_bo->base.size) + return -EINVAL; + break; + } + + return 0; +} + +/** + * Return the pipe currently connected to the panel fitter, + * or -1 if the panel fitter is not present or not in use + */ +static int intel_panel_fitter_pipe(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 pfit_control; + + /* i830 doesn't have a panel fitter */ + if (IS_I830(dev)) + return -1; + + pfit_control = I915_READ(PFIT_CONTROL); + + /* See if the panel fitter is in use */ + if ((pfit_control & PFIT_ENABLE) == 0) + return -1; + + /* 965 can place panel fitter on either pipe */ + if (IS_GEN4(dev)) + return (pfit_control >> 29) & 0x3; + + /* older chips can only use pipe 1 */ + return 1; +} + +int intel_overlay_put_image(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_overlay_put_image *put_image_rec = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct drm_mode_object *drmmode_obj; + struct intel_crtc *crtc; + struct drm_i915_gem_object *new_bo; + struct put_image_params *params; + int ret; + + /* No need to check for DRIVER_MODESET - we don't set it up then. */ + overlay = dev_priv->overlay; + if (!overlay) { + DRM_DEBUG("userspace bug: no overlay\n"); + return -ENODEV; + } + + if (!(put_image_rec->flags & I915_OVERLAY_ENABLE)) { + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + ret = intel_overlay_switch_off(overlay); + + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + return ret; + } + + params = kmalloc(sizeof(struct put_image_params), GFP_KERNEL); + if (!params) + return -ENOMEM; + + drmmode_obj = drm_mode_object_find(dev, put_image_rec->crtc_id, + DRM_MODE_OBJECT_CRTC); + if (!drmmode_obj) { + ret = -ENOENT; + goto out_free; + } + crtc = to_intel_crtc(obj_to_crtc(drmmode_obj)); + + new_bo = to_intel_bo(drm_gem_object_lookup(dev, file_priv, + put_image_rec->bo_handle)); + if (&new_bo->base == NULL) { + ret = -ENOENT; + goto out_free; + } + + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + if (new_bo->tiling_mode) { + DRM_ERROR("buffer used for overlay image can not be tiled\n"); + ret = -EINVAL; + goto out_unlock; + } + + ret = intel_overlay_recover_from_interrupt(overlay); + if (ret != 0) + goto out_unlock; + + if (overlay->crtc != crtc) { + struct drm_display_mode *mode = &crtc->base.mode; + ret = intel_overlay_switch_off(overlay); + if (ret != 0) + goto out_unlock; + + ret = check_overlay_possible_on_crtc(overlay, crtc); + if (ret != 0) + goto out_unlock; + + overlay->crtc = crtc; + crtc->overlay = overlay; + + /* line too wide, i.e. one-line-mode */ + if (mode->hdisplay > 1024 && + intel_panel_fitter_pipe(dev) == crtc->pipe) { + overlay->pfit_active = 1; + update_pfit_vscale_ratio(overlay); + } else + overlay->pfit_active = 0; + } + + ret = check_overlay_dst(overlay, put_image_rec); + if (ret != 0) + goto out_unlock; + + if (overlay->pfit_active) { + params->dst_y = ((((u32)put_image_rec->dst_y) << 12) / + overlay->pfit_vscale_ratio); + /* shifting right rounds downwards, so add 1 */ + params->dst_h = ((((u32)put_image_rec->dst_height) << 12) / + overlay->pfit_vscale_ratio) + 1; + } else { + params->dst_y = put_image_rec->dst_y; + params->dst_h = put_image_rec->dst_height; + } + params->dst_x = put_image_rec->dst_x; + params->dst_w = put_image_rec->dst_width; + + params->src_w = put_image_rec->src_width; + params->src_h = put_image_rec->src_height; + params->src_scan_w = put_image_rec->src_scan_width; + params->src_scan_h = put_image_rec->src_scan_height; + if (params->src_scan_h > params->src_h || + params->src_scan_w > params->src_w) { + ret = -EINVAL; + goto out_unlock; + } + + ret = check_overlay_src(dev, put_image_rec, new_bo); + if (ret != 0) + goto out_unlock; + params->format = put_image_rec->flags & ~I915_OVERLAY_FLAGS_MASK; + params->stride_Y = put_image_rec->stride_Y; + params->stride_UV = put_image_rec->stride_UV; + params->offset_Y = put_image_rec->offset_Y; + params->offset_U = put_image_rec->offset_U; + params->offset_V = put_image_rec->offset_V; + + /* Check scaling after src size to prevent a divide-by-zero. */ + ret = check_overlay_scaling(params); + if (ret != 0) + goto out_unlock; + + ret = intel_overlay_do_put_image(overlay, new_bo, params); + if (ret != 0) + goto out_unlock; + + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + kfree(params); + + return 0; + +out_unlock: + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + drm_gem_object_unreference_unlocked(&new_bo->base); +out_free: + kfree(params); + + return ret; +} + +static void update_reg_attrs(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + iowrite32((overlay->contrast << 18) | (overlay->brightness & 0xff), + ®s->OCLRC0); + iowrite32(overlay->saturation, ®s->OCLRC1); +} + +static bool check_gamma_bounds(u32 gamma1, u32 gamma2) +{ + int i; + + if (gamma1 & 0xff000000 || gamma2 & 0xff000000) + return false; + + for (i = 0; i < 3; i++) { + if (((gamma1 >> i*8) & 0xff) >= ((gamma2 >> i*8) & 0xff)) + return false; + } + + return true; +} + +static bool check_gamma5_errata(u32 gamma5) +{ + int i; + + for (i = 0; i < 3; i++) { + if (((gamma5 >> i*8) & 0xff) == 0x80) + return false; + } + + return true; +} + +static int check_gamma(struct drm_intel_overlay_attrs *attrs) +{ + if (!check_gamma_bounds(0, attrs->gamma0) || + !check_gamma_bounds(attrs->gamma0, attrs->gamma1) || + !check_gamma_bounds(attrs->gamma1, attrs->gamma2) || + !check_gamma_bounds(attrs->gamma2, attrs->gamma3) || + !check_gamma_bounds(attrs->gamma3, attrs->gamma4) || + !check_gamma_bounds(attrs->gamma4, attrs->gamma5) || + !check_gamma_bounds(attrs->gamma5, 0x00ffffff)) + return -EINVAL; + + if (!check_gamma5_errata(attrs->gamma5)) + return -EINVAL; + + return 0; +} + +int intel_overlay_attrs(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_intel_overlay_attrs *attrs = data; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct overlay_registers __iomem *regs; + int ret; + + /* No need to check for DRIVER_MODESET - we don't set it up then. */ + overlay = dev_priv->overlay; + if (!overlay) { + DRM_DEBUG("userspace bug: no overlay\n"); + return -ENODEV; + } + + mutex_lock(&dev->mode_config.mutex); + mutex_lock(&dev->struct_mutex); + + ret = -EINVAL; + if (!(attrs->flags & I915_OVERLAY_UPDATE_ATTRS)) { + attrs->color_key = overlay->color_key; + attrs->brightness = overlay->brightness; + attrs->contrast = overlay->contrast; + attrs->saturation = overlay->saturation; + + if (!IS_GEN2(dev)) { + attrs->gamma0 = I915_READ(OGAMC0); + attrs->gamma1 = I915_READ(OGAMC1); + attrs->gamma2 = I915_READ(OGAMC2); + attrs->gamma3 = I915_READ(OGAMC3); + attrs->gamma4 = I915_READ(OGAMC4); + attrs->gamma5 = I915_READ(OGAMC5); + } + } else { + if (attrs->brightness < -128 || attrs->brightness > 127) + goto out_unlock; + if (attrs->contrast > 255) + goto out_unlock; + if (attrs->saturation > 1023) + goto out_unlock; + + overlay->color_key = attrs->color_key; + overlay->brightness = attrs->brightness; + overlay->contrast = attrs->contrast; + overlay->saturation = attrs->saturation; + + regs = intel_overlay_map_regs(overlay); + if (!regs) { + ret = -ENOMEM; + goto out_unlock; + } + + update_reg_attrs(overlay, regs); + + intel_overlay_unmap_regs(overlay, regs); + + if (attrs->flags & I915_OVERLAY_UPDATE_GAMMA) { + if (IS_GEN2(dev)) + goto out_unlock; + + if (overlay->active) { + ret = -EBUSY; + goto out_unlock; + } + + ret = check_gamma(attrs); + if (ret) + goto out_unlock; + + I915_WRITE(OGAMC0, attrs->gamma0); + I915_WRITE(OGAMC1, attrs->gamma1); + I915_WRITE(OGAMC2, attrs->gamma2); + I915_WRITE(OGAMC3, attrs->gamma3); + I915_WRITE(OGAMC4, attrs->gamma4); + I915_WRITE(OGAMC5, attrs->gamma5); + } + } + + ret = 0; +out_unlock: + mutex_unlock(&dev->struct_mutex); + mutex_unlock(&dev->mode_config.mutex); + + return ret; +} + +void intel_setup_overlay(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay; + struct drm_i915_gem_object *reg_bo; + struct overlay_registers __iomem *regs; + int ret; + + if (!HAS_OVERLAY(dev)) + return; + + overlay = kzalloc(sizeof(struct intel_overlay), GFP_KERNEL); + if (!overlay) + return; + + mutex_lock(&dev->struct_mutex); + if (WARN_ON(dev_priv->overlay)) + goto out_free; + + overlay->dev = dev; + + reg_bo = i915_gem_alloc_object(dev, PAGE_SIZE); + if (!reg_bo) + goto out_free; + overlay->reg_bo = reg_bo; + + if (OVERLAY_NEEDS_PHYSICAL(dev)) { + ret = i915_gem_attach_phys_object(dev, reg_bo, + I915_GEM_PHYS_OVERLAY_REGS, + PAGE_SIZE); + if (ret) { + DRM_ERROR("failed to attach phys overlay regs\n"); + goto out_free_bo; + } + overlay->flip_addr = reg_bo->phys_obj->handle->busaddr; + } else { + ret = i915_gem_object_pin(reg_bo, PAGE_SIZE, true, false); + if (ret) { + DRM_ERROR("failed to pin overlay register bo\n"); + goto out_free_bo; + } + overlay->flip_addr = reg_bo->gtt_offset; + + ret = i915_gem_object_set_to_gtt_domain(reg_bo, true); + if (ret) { + DRM_ERROR("failed to move overlay register bo into the GTT\n"); + goto out_unpin_bo; + } + } + + /* init all values */ + overlay->color_key = 0x0101fe; + overlay->brightness = -19; + overlay->contrast = 75; + overlay->saturation = 146; + + regs = intel_overlay_map_regs(overlay); + if (!regs) + goto out_unpin_bo; + + memset_io(regs, 0, sizeof(struct overlay_registers)); + update_polyphase_filter(regs); + update_reg_attrs(overlay, regs); + + intel_overlay_unmap_regs(overlay, regs); + + dev_priv->overlay = overlay; + mutex_unlock(&dev->struct_mutex); + DRM_INFO("initialized overlay support\n"); + return; + +out_unpin_bo: + if (!OVERLAY_NEEDS_PHYSICAL(dev)) + i915_gem_object_unpin(reg_bo); +out_free_bo: + drm_gem_object_unreference(®_bo->base); +out_free: + mutex_unlock(&dev->struct_mutex); + kfree(overlay); + return; +} + +void intel_cleanup_overlay(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (!dev_priv->overlay) + return; + + /* The bo's should be free'd by the generic code already. + * Furthermore modesetting teardown happens beforehand so the + * hardware should be off already */ + BUG_ON(dev_priv->overlay->active); + + drm_gem_object_unreference_unlocked(&dev_priv->overlay->reg_bo->base); + kfree(dev_priv->overlay); +} + +#ifdef CONFIG_DEBUG_FS +#include + +struct intel_overlay_error_state { + struct overlay_registers regs; + unsigned long base; + u32 dovsta; + u32 isr; +}; + +static struct overlay_registers __iomem * +intel_overlay_map_regs_atomic(struct intel_overlay *overlay) +{ + drm_i915_private_t *dev_priv = overlay->dev->dev_private; + struct overlay_registers __iomem *regs; + + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + /* Cast to make sparse happy, but it's wc memory anyway, so + * equivalent to the wc io mapping on X86. */ + regs = (struct overlay_registers __iomem *) + overlay->reg_bo->phys_obj->handle->vaddr; + else + regs = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + overlay->reg_bo->gtt_offset); + + return regs; +} + +static void intel_overlay_unmap_regs_atomic(struct intel_overlay *overlay, + struct overlay_registers __iomem *regs) +{ + if (!OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + io_mapping_unmap_atomic(regs); +} + + +struct intel_overlay_error_state * +intel_overlay_capture_error_state(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_overlay *overlay = dev_priv->overlay; + struct intel_overlay_error_state *error; + struct overlay_registers __iomem *regs; + + if (!overlay || !overlay->active) + return NULL; + + error = kmalloc(sizeof(*error), GFP_ATOMIC); + if (error == NULL) + return NULL; + + error->dovsta = I915_READ(DOVSTA); + error->isr = I915_READ(ISR); + if (OVERLAY_NEEDS_PHYSICAL(overlay->dev)) + error->base = (__force long)overlay->reg_bo->phys_obj->handle->vaddr; + else + error->base = overlay->reg_bo->gtt_offset; + + regs = intel_overlay_map_regs_atomic(overlay); + if (!regs) + goto err; + + memcpy_fromio(&error->regs, regs, sizeof(struct overlay_registers)); + intel_overlay_unmap_regs_atomic(overlay, regs); + + return error; + +err: + kfree(error); + return NULL; +} + +void +intel_overlay_print_error_state(struct seq_file *m, struct intel_overlay_error_state *error) +{ + seq_printf(m, "Overlay, status: 0x%08x, interrupt: 0x%08x\n", + error->dovsta, error->isr); + seq_printf(m, " Register file at 0x%08lx:\n", + error->base); + +#define P(x) seq_printf(m, " " #x ": 0x%08x\n", error->regs.x) + P(OBUF_0Y); + P(OBUF_1Y); + P(OBUF_0U); + P(OBUF_0V); + P(OBUF_1U); + P(OBUF_1V); + P(OSTRIDE); + P(YRGB_VPH); + P(UV_VPH); + P(HORZ_PH); + P(INIT_PHS); + P(DWINPOS); + P(DWINSZ); + P(SWIDTH); + P(SWIDTHSW); + P(SHEIGHT); + P(YRGBSCALE); + P(UVSCALE); + P(OCLRC0); + P(OCLRC1); + P(DCLRKV); + P(DCLRKM); + P(SCLRKVH); + P(SCLRKVL); + P(SCLRKEN); + P(OCONFIG); + P(OCMD); + P(OSTART_0Y); + P(OSTART_1Y); + P(OSTART_0U); + P(OSTART_0V); + P(OSTART_1U); + P(OSTART_1V); + P(OTILEOFF_0Y); + P(OTILEOFF_1Y); + P(OTILEOFF_0U); + P(OTILEOFF_0V); + P(OTILEOFF_1U); + P(OTILEOFF_1V); + P(FASTHSCALE); + P(UVSCALEV); +#undef P +} +#endif --- linux-3.5.0.orig/ubuntu/i915/Makefile +++ linux-3.5.0/ubuntu/i915/Makefile @@ -0,0 +1,52 @@ +# +# Makefile for the drm device driver. This driver provides support for the +# Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher. + +ccflags-y := -Iinclude/drm +i915_hsw-y := i915_drv.o i915_dma.o i915_irq.o \ + i915_debugfs.o \ + i915_suspend.o \ + i915_gem.o \ + i915_gem_context.o \ + i915_gem_debug.o \ + i915_gem_evict.o \ + i915_gem_execbuffer.o \ + i915_gem_gtt.o \ + i915_gem_stolen.o \ + i915_gem_tiling.o \ + i915_sysfs.o \ + i915_trace_points.o \ + intel_display.o \ + intel_crt.o \ + intel_lvds.o \ + intel_bios.o \ + intel_ddi.o \ + intel_dp.o \ + intel_hdmi.o \ + intel_sdvo.o \ + intel_modes.o \ + intel_panel.o \ + intel_pm.o \ + intel_i2c.o \ + intel_fb.o \ + intel_tv.o \ + intel_dvo.o \ + intel_ringbuffer.o \ + intel_overlay.o \ + intel_sprite.o \ + intel_opregion.o \ + dvo_ch7xxx.o \ + dvo_ch7017.o \ + dvo_ivch.o \ + dvo_tfp410.o \ + dvo_sil164.o \ + dvo_ns2501.o \ + i915_gem_dmabuf.o + +i915_hsw-$(CONFIG_COMPAT) += i915_ioc32.o + +i915_hsw-$(CONFIG_ACPI) += intel_acpi.o + +obj-$(CONFIG_DRM_I915_HSW) += i915_hsw.o + +CFLAGS_i915_trace_points.o := -I$(src) --- linux-3.5.0.orig/ubuntu/i915/intel_tv.c +++ linux-3.5.0/ubuntu/i915/intel_tv.c @@ -0,0 +1,1673 @@ +/* + * Copyright © 2006-2008 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +/** @file + * Integrated TV-out support for the 915GM and 945GM. + */ + +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +enum tv_margin { + TV_MARGIN_LEFT, TV_MARGIN_TOP, + TV_MARGIN_RIGHT, TV_MARGIN_BOTTOM +}; + +/** Private structure for the integrated TV support */ +struct intel_tv { + struct intel_encoder base; + + int type; + const char *tv_format; + int margin[4]; + u32 save_TV_H_CTL_1; + u32 save_TV_H_CTL_2; + u32 save_TV_H_CTL_3; + u32 save_TV_V_CTL_1; + u32 save_TV_V_CTL_2; + u32 save_TV_V_CTL_3; + u32 save_TV_V_CTL_4; + u32 save_TV_V_CTL_5; + u32 save_TV_V_CTL_6; + u32 save_TV_V_CTL_7; + u32 save_TV_SC_CTL_1, save_TV_SC_CTL_2, save_TV_SC_CTL_3; + + u32 save_TV_CSC_Y; + u32 save_TV_CSC_Y2; + u32 save_TV_CSC_U; + u32 save_TV_CSC_U2; + u32 save_TV_CSC_V; + u32 save_TV_CSC_V2; + u32 save_TV_CLR_KNOBS; + u32 save_TV_CLR_LEVEL; + u32 save_TV_WIN_POS; + u32 save_TV_WIN_SIZE; + u32 save_TV_FILTER_CTL_1; + u32 save_TV_FILTER_CTL_2; + u32 save_TV_FILTER_CTL_3; + + u32 save_TV_H_LUMA[60]; + u32 save_TV_H_CHROMA[60]; + u32 save_TV_V_LUMA[43]; + u32 save_TV_V_CHROMA[43]; + + u32 save_TV_DAC; + u32 save_TV_CTL; +}; + +struct video_levels { + int blank, black, burst; +}; + +struct color_conversion { + u16 ry, gy, by, ay; + u16 ru, gu, bu, au; + u16 rv, gv, bv, av; +}; + +static const u32 filter_table[] = { + 0xB1403000, 0x2E203500, 0x35002E20, 0x3000B140, + 0x35A0B160, 0x2DC02E80, 0xB1403480, 0xB1603000, + 0x2EA03640, 0x34002D80, 0x3000B120, 0x36E0B160, + 0x2D202EF0, 0xB1203380, 0xB1603000, 0x2F303780, + 0x33002CC0, 0x3000B100, 0x3820B160, 0x2C802F50, + 0xB10032A0, 0xB1603000, 0x2F9038C0, 0x32202C20, + 0x3000B0E0, 0x3980B160, 0x2BC02FC0, 0xB0E031C0, + 0xB1603000, 0x2FF03A20, 0x31602B60, 0xB020B0C0, + 0x3AE0B160, 0x2B001810, 0xB0C03120, 0xB140B020, + 0x18283BA0, 0x30C02A80, 0xB020B0A0, 0x3C60B140, + 0x2A201838, 0xB0A03080, 0xB120B020, 0x18383D20, + 0x304029C0, 0xB040B080, 0x3DE0B100, 0x29601848, + 0xB0803000, 0xB100B040, 0x18483EC0, 0xB0402900, + 0xB040B060, 0x3F80B0C0, 0x28801858, 0xB060B080, + 0xB0A0B060, 0x18602820, 0xB0A02820, 0x0000B060, + 0xB1403000, 0x2E203500, 0x35002E20, 0x3000B140, + 0x35A0B160, 0x2DC02E80, 0xB1403480, 0xB1603000, + 0x2EA03640, 0x34002D80, 0x3000B120, 0x36E0B160, + 0x2D202EF0, 0xB1203380, 0xB1603000, 0x2F303780, + 0x33002CC0, 0x3000B100, 0x3820B160, 0x2C802F50, + 0xB10032A0, 0xB1603000, 0x2F9038C0, 0x32202C20, + 0x3000B0E0, 0x3980B160, 0x2BC02FC0, 0xB0E031C0, + 0xB1603000, 0x2FF03A20, 0x31602B60, 0xB020B0C0, + 0x3AE0B160, 0x2B001810, 0xB0C03120, 0xB140B020, + 0x18283BA0, 0x30C02A80, 0xB020B0A0, 0x3C60B140, + 0x2A201838, 0xB0A03080, 0xB120B020, 0x18383D20, + 0x304029C0, 0xB040B080, 0x3DE0B100, 0x29601848, + 0xB0803000, 0xB100B040, 0x18483EC0, 0xB0402900, + 0xB040B060, 0x3F80B0C0, 0x28801858, 0xB060B080, + 0xB0A0B060, 0x18602820, 0xB0A02820, 0x0000B060, + 0x36403000, 0x2D002CC0, 0x30003640, 0x2D0036C0, + 0x35C02CC0, 0x37403000, 0x2C802D40, 0x30003540, + 0x2D8037C0, 0x34C02C40, 0x38403000, 0x2BC02E00, + 0x30003440, 0x2E2038C0, 0x34002B80, 0x39803000, + 0x2B402E40, 0x30003380, 0x2E603A00, 0x33402B00, + 0x3A803040, 0x2A802EA0, 0x30403300, 0x2EC03B40, + 0x32802A40, 0x3C003040, 0x2A002EC0, 0x30803240, + 0x2EC03C80, 0x320029C0, 0x3D403080, 0x29402F00, + 0x308031C0, 0x2F203DC0, 0x31802900, 0x3E8030C0, + 0x28802F40, 0x30C03140, 0x2F203F40, 0x31402840, + 0x28003100, 0x28002F00, 0x00003100, 0x36403000, + 0x2D002CC0, 0x30003640, 0x2D0036C0, + 0x35C02CC0, 0x37403000, 0x2C802D40, 0x30003540, + 0x2D8037C0, 0x34C02C40, 0x38403000, 0x2BC02E00, + 0x30003440, 0x2E2038C0, 0x34002B80, 0x39803000, + 0x2B402E40, 0x30003380, 0x2E603A00, 0x33402B00, + 0x3A803040, 0x2A802EA0, 0x30403300, 0x2EC03B40, + 0x32802A40, 0x3C003040, 0x2A002EC0, 0x30803240, + 0x2EC03C80, 0x320029C0, 0x3D403080, 0x29402F00, + 0x308031C0, 0x2F203DC0, 0x31802900, 0x3E8030C0, + 0x28802F40, 0x30C03140, 0x2F203F40, 0x31402840, + 0x28003100, 0x28002F00, 0x00003100, +}; + +/* + * Color conversion values have 3 separate fixed point formats: + * + * 10 bit fields (ay, au) + * 1.9 fixed point (b.bbbbbbbbb) + * 11 bit fields (ry, by, ru, gu, gv) + * exp.mantissa (ee.mmmmmmmmm) + * ee = 00 = 10^-1 (0.mmmmmmmmm) + * ee = 01 = 10^-2 (0.0mmmmmmmmm) + * ee = 10 = 10^-3 (0.00mmmmmmmmm) + * ee = 11 = 10^-4 (0.000mmmmmmmmm) + * 12 bit fields (gy, rv, bu) + * exp.mantissa (eee.mmmmmmmmm) + * eee = 000 = 10^-1 (0.mmmmmmmmm) + * eee = 001 = 10^-2 (0.0mmmmmmmmm) + * eee = 010 = 10^-3 (0.00mmmmmmmmm) + * eee = 011 = 10^-4 (0.000mmmmmmmmm) + * eee = 100 = reserved + * eee = 101 = reserved + * eee = 110 = reserved + * eee = 111 = 10^0 (m.mmmmmmmm) (only usable for 1.0 representation) + * + * Saturation and contrast are 8 bits, with their own representation: + * 8 bit field (saturation, contrast) + * exp.mantissa (ee.mmmmmm) + * ee = 00 = 10^-1 (0.mmmmmm) + * ee = 01 = 10^0 (m.mmmmm) + * ee = 10 = 10^1 (mm.mmmm) + * ee = 11 = 10^2 (mmm.mmm) + * + * Simple conversion function: + * + * static u32 + * float_to_csc_11(float f) + * { + * u32 exp; + * u32 mant; + * u32 ret; + * + * if (f < 0) + * f = -f; + * + * if (f >= 1) { + * exp = 0x7; + * mant = 1 << 8; + * } else { + * for (exp = 0; exp < 3 && f < 0.5; exp++) + * f *= 2.0; + * mant = (f * (1 << 9) + 0.5); + * if (mant >= (1 << 9)) + * mant = (1 << 9) - 1; + * } + * ret = (exp << 9) | mant; + * return ret; + * } + */ + +/* + * Behold, magic numbers! If we plant them they might grow a big + * s-video cable to the sky... or something. + * + * Pre-converted to appropriate hex value. + */ + +/* + * PAL & NTSC values for composite & s-video connections + */ +static const struct color_conversion ntsc_m_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels ntsc_m_levels_composite = { + .blank = 225, .black = 267, .burst = 113, +}; + +static const struct color_conversion ntsc_m_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels ntsc_m_levels_svideo = { + .blank = 266, .black = 316, .burst = 133, +}; + +static const struct color_conversion ntsc_j_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0119, + .ru = 0x074c, .gu = 0x0546, .bu = 0x05ec, .au = 0x0200, + .rv = 0x035a, .gv = 0x0322, .bv = 0x06e1, .av = 0x0200, +}; + +static const struct video_levels ntsc_j_levels_composite = { + .blank = 225, .black = 225, .burst = 113, +}; + +static const struct color_conversion ntsc_j_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x014c, + .ru = 0x0788, .gu = 0x0581, .bu = 0x0322, .au = 0x0200, + .rv = 0x0399, .gv = 0x0356, .bv = 0x070a, .av = 0x0200, +}; + +static const struct video_levels ntsc_j_levels_svideo = { + .blank = 266, .black = 266, .burst = 133, +}; + +static const struct color_conversion pal_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0113, + .ru = 0x0745, .gu = 0x053f, .bu = 0x05e1, .au = 0x0200, + .rv = 0x0353, .gv = 0x031c, .bv = 0x06dc, .av = 0x0200, +}; + +static const struct video_levels pal_levels_composite = { + .blank = 237, .black = 237, .burst = 118, +}; + +static const struct color_conversion pal_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0145, + .ru = 0x0780, .gu = 0x0579, .bu = 0x031c, .au = 0x0200, + .rv = 0x0390, .gv = 0x034f, .bv = 0x0705, .av = 0x0200, +}; + +static const struct video_levels pal_levels_svideo = { + .blank = 280, .black = 280, .burst = 139, +}; + +static const struct color_conversion pal_m_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels pal_m_levels_composite = { + .blank = 225, .black = 267, .burst = 113, +}; + +static const struct color_conversion pal_m_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels pal_m_levels_svideo = { + .blank = 266, .black = 316, .burst = 133, +}; + +static const struct color_conversion pal_n_csc_composite = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0104, + .ru = 0x0733, .gu = 0x052d, .bu = 0x05c7, .au = 0x0200, + .rv = 0x0340, .gv = 0x030c, .bv = 0x06d0, .av = 0x0200, +}; + +static const struct video_levels pal_n_levels_composite = { + .blank = 225, .black = 267, .burst = 118, +}; + +static const struct color_conversion pal_n_csc_svideo = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0133, + .ru = 0x076a, .gu = 0x0564, .bu = 0x030d, .au = 0x0200, + .rv = 0x037a, .gv = 0x033d, .bv = 0x06f6, .av = 0x0200, +}; + +static const struct video_levels pal_n_levels_svideo = { + .blank = 266, .black = 316, .burst = 139, +}; + +/* + * Component connections + */ +static const struct color_conversion sdtv_csc_yprpb = { + .ry = 0x0332, .gy = 0x012d, .by = 0x07d3, .ay = 0x0145, + .ru = 0x0559, .gu = 0x0353, .bu = 0x0100, .au = 0x0200, + .rv = 0x0100, .gv = 0x03ad, .bv = 0x074d, .av = 0x0200, +}; + +static const struct color_conversion sdtv_csc_rgb = { + .ry = 0x0000, .gy = 0x0f00, .by = 0x0000, .ay = 0x0166, + .ru = 0x0000, .gu = 0x0000, .bu = 0x0f00, .au = 0x0166, + .rv = 0x0f00, .gv = 0x0000, .bv = 0x0000, .av = 0x0166, +}; + +static const struct color_conversion hdtv_csc_yprpb = { + .ry = 0x05b3, .gy = 0x016e, .by = 0x0728, .ay = 0x0145, + .ru = 0x07d5, .gu = 0x038b, .bu = 0x0100, .au = 0x0200, + .rv = 0x0100, .gv = 0x03d1, .bv = 0x06bc, .av = 0x0200, +}; + +static const struct color_conversion hdtv_csc_rgb = { + .ry = 0x0000, .gy = 0x0f00, .by = 0x0000, .ay = 0x0166, + .ru = 0x0000, .gu = 0x0000, .bu = 0x0f00, .au = 0x0166, + .rv = 0x0f00, .gv = 0x0000, .bv = 0x0000, .av = 0x0166, +}; + +static const struct video_levels component_levels = { + .blank = 279, .black = 279, .burst = 0, +}; + + +struct tv_mode { + const char *name; + int clock; + int refresh; /* in millihertz (for precision) */ + u32 oversample; + int hsync_end, hblank_start, hblank_end, htotal; + bool progressive, trilevel_sync, component_only; + int vsync_start_f1, vsync_start_f2, vsync_len; + bool veq_ena; + int veq_start_f1, veq_start_f2, veq_len; + int vi_end_f1, vi_end_f2, nbr_end; + bool burst_ena; + int hburst_start, hburst_len; + int vburst_start_f1, vburst_end_f1; + int vburst_start_f2, vburst_end_f2; + int vburst_start_f3, vburst_end_f3; + int vburst_start_f4, vburst_end_f4; + /* + * subcarrier programming + */ + int dda2_size, dda3_size, dda1_inc, dda2_inc, dda3_inc; + u32 sc_reset; + bool pal_burst; + /* + * blank/black levels + */ + const struct video_levels *composite_levels, *svideo_levels; + const struct color_conversion *composite_color, *svideo_color; + const u32 *filter_table; + int max_srcw; +}; + + +/* + * Sub carrier DDA + * + * I think this works as follows: + * + * subcarrier freq = pixel_clock * (dda1_inc + dda2_inc / dda2_size) / 4096 + * + * Presumably, when dda3 is added in, it gets to adjust the dda2_inc value + * + * So, + * dda1_ideal = subcarrier/pixel * 4096 + * dda1_inc = floor (dda1_ideal) + * dda2 = dda1_ideal - dda1_inc + * + * then pick a ratio for dda2 that gives the closest approximation. If + * you can't get close enough, you can play with dda3 as well. This + * seems likely to happen when dda2 is small as the jumps would be larger + * + * To invert this, + * + * pixel_clock = subcarrier * 4096 / (dda1_inc + dda2_inc / dda2_size) + * + * The constants below were all computed using a 107.520MHz clock + */ + +/** + * Register programming values for TV modes. + * + * These values account for -1s required. + */ + +static const struct tv_mode tv_modes[] = { + { + .name = "NTSC-M", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_4, + .pal_burst = false, + + .composite_levels = &ntsc_m_levels_composite, + .composite_color = &ntsc_m_csc_composite, + .svideo_levels = &ntsc_m_levels_svideo, + .svideo_color = &ntsc_m_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "NTSC-443", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 4.43MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 168, + .dda2_inc = 4093, .dda2_size = 27456, + .dda3_inc = 310, .dda3_size = 525, + .sc_reset = TV_SC_RESET_NEVER, + .pal_burst = false, + + .composite_levels = &ntsc_m_levels_composite, + .composite_color = &ntsc_m_csc_composite, + .svideo_levels = &ntsc_m_levels_svideo, + .svideo_color = &ntsc_m_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "NTSC-J", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 20800, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_4, + .pal_burst = false, + + .composite_levels = &ntsc_j_levels_composite, + .composite_color = &ntsc_j_csc_composite, + .svideo_levels = &ntsc_j_levels_svideo, + .svideo_color = &ntsc_j_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "PAL-M", + .clock = 108000, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + /* 525 Lines, 60 Fields, 15.734KHz line, Sub-Carrier 3.580MHz */ + .hsync_end = 64, .hblank_end = 124, + .hblank_start = 836, .htotal = 857, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 20, .vi_end_f2 = 21, + .nbr_end = 240, + + .burst_ena = true, + .hburst_start = 72, .hburst_len = 34, + .vburst_start_f1 = 9, .vburst_end_f1 = 240, + .vburst_start_f2 = 10, .vburst_end_f2 = 240, + .vburst_start_f3 = 9, .vburst_end_f3 = 240, + .vburst_start_f4 = 10, .vburst_end_f4 = 240, + + /* desired 3.5800000 actual 3.5800000 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 16704, .dda2_size = 27456, + .dda3_inc = 0, .dda3_size = 0, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_m_levels_composite, + .composite_color = &pal_m_csc_composite, + .svideo_levels = &pal_m_levels_svideo, + .svideo_color = &pal_m_csc_svideo, + + .filter_table = filter_table, + }, + { + /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ + .name = "PAL-N", + .clock = 108000, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + .hsync_end = 64, .hblank_end = 128, + .hblank_start = 844, .htotal = 863, + + .progressive = false, .trilevel_sync = false, + + + .vsync_start_f1 = 6, .vsync_start_f2 = 7, + .vsync_len = 6, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 18, + + .vi_end_f1 = 24, .vi_end_f2 = 25, + .nbr_end = 286, + + .burst_ena = true, + .hburst_start = 73, .hburst_len = 34, + .vburst_start_f1 = 8, .vburst_end_f1 = 285, + .vburst_start_f2 = 8, .vburst_end_f2 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f4 = 9, .vburst_end_f4 = 285, + + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 135, + .dda2_inc = 23578, .dda2_size = 27648, + .dda3_inc = 134, .dda3_size = 625, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_n_levels_composite, + .composite_color = &pal_n_csc_composite, + .svideo_levels = &pal_n_levels_svideo, + .svideo_color = &pal_n_csc_svideo, + + .filter_table = filter_table, + }, + { + /* 625 Lines, 50 Fields, 15.625KHz line, Sub-Carrier 4.434MHz */ + .name = "PAL", + .clock = 108000, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_8X, + .component_only = 0, + + .hsync_end = 64, .hblank_end = 142, + .hblank_start = 844, .htotal = 863, + + .progressive = false, .trilevel_sync = false, + + .vsync_start_f1 = 5, .vsync_start_f2 = 6, + .vsync_len = 5, + + .veq_ena = true, .veq_start_f1 = 0, + .veq_start_f2 = 1, .veq_len = 15, + + .vi_end_f1 = 24, .vi_end_f2 = 25, + .nbr_end = 286, + + .burst_ena = true, + .hburst_start = 73, .hburst_len = 32, + .vburst_start_f1 = 8, .vburst_end_f1 = 285, + .vburst_start_f2 = 8, .vburst_end_f2 = 286, + .vburst_start_f3 = 9, .vburst_end_f3 = 286, + .vburst_start_f4 = 9, .vburst_end_f4 = 285, + + /* desired 4.4336180 actual 4.4336180 clock 107.52 */ + .dda1_inc = 168, + .dda2_inc = 4122, .dda2_size = 27648, + .dda3_inc = 67, .dda3_size = 625, + .sc_reset = TV_SC_RESET_EVERY_8, + .pal_burst = true, + + .composite_levels = &pal_levels_composite, + .composite_color = &pal_csc_composite, + .svideo_levels = &pal_levels_svideo, + .svideo_color = &pal_csc_svideo, + + .filter_table = filter_table, + }, + { + .name = "480p", + .clock = 107520, + .refresh = 59940, + .oversample = TV_OVERSAMPLE_4X, + .component_only = 1, + + .hsync_end = 64, .hblank_end = 122, + .hblank_start = 842, .htotal = 857, + + .progressive = true, .trilevel_sync = false, + + .vsync_start_f1 = 12, .vsync_start_f2 = 12, + .vsync_len = 12, + + .veq_ena = false, + + .vi_end_f1 = 44, .vi_end_f2 = 44, + .nbr_end = 479, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "576p", + .clock = 107520, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_4X, + .component_only = 1, + + .hsync_end = 64, .hblank_end = 139, + .hblank_start = 859, .htotal = 863, + + .progressive = true, .trilevel_sync = false, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 48, .vi_end_f2 = 48, + .nbr_end = 575, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "720p@60Hz", + .clock = 148800, + .refresh = 60000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 80, .hblank_end = 300, + .hblank_start = 1580, .htotal = 1649, + + .progressive = true, .trilevel_sync = true, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 29, .vi_end_f2 = 29, + .nbr_end = 719, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "720p@50Hz", + .clock = 148800, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 80, .hblank_end = 300, + .hblank_start = 1580, .htotal = 1979, + + .progressive = true, .trilevel_sync = true, + + .vsync_start_f1 = 10, .vsync_start_f2 = 10, + .vsync_len = 10, + + .veq_ena = false, + + .vi_end_f1 = 29, .vi_end_f2 = 29, + .nbr_end = 719, + + .burst_ena = false, + + .filter_table = filter_table, + .max_srcw = 800 + }, + { + .name = "1080i@50Hz", + .clock = 148800, + .refresh = 50000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 88, .hblank_end = 235, + .hblank_start = 2155, .htotal = 2639, + + .progressive = false, .trilevel_sync = true, + + .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_len = 10, + + .veq_ena = true, .veq_start_f1 = 4, + .veq_start_f2 = 4, .veq_len = 10, + + + .vi_end_f1 = 21, .vi_end_f2 = 22, + .nbr_end = 539, + + .burst_ena = false, + + .filter_table = filter_table, + }, + { + .name = "1080i@60Hz", + .clock = 148800, + .refresh = 60000, + .oversample = TV_OVERSAMPLE_2X, + .component_only = 1, + + .hsync_end = 88, .hblank_end = 235, + .hblank_start = 2155, .htotal = 2199, + + .progressive = false, .trilevel_sync = true, + + .vsync_start_f1 = 4, .vsync_start_f2 = 5, + .vsync_len = 10, + + .veq_ena = true, .veq_start_f1 = 4, + .veq_start_f2 = 4, .veq_len = 10, + + + .vi_end_f1 = 21, .vi_end_f2 = 22, + .nbr_end = 539, + + .burst_ena = false, + + .filter_table = filter_table, + }, +}; + +static struct intel_tv *enc_to_intel_tv(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_tv, base.base); +} + +static struct intel_tv *intel_attached_tv(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_tv, + base); +} + +static bool +intel_tv_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp = I915_READ(TV_CTL); + + if (!(tmp & TV_ENC_ENABLE)) + return false; + + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void +intel_enable_tv(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(TV_CTL, I915_READ(TV_CTL) | TV_ENC_ENABLE); +} + +static void +intel_disable_tv(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(TV_CTL, I915_READ(TV_CTL) & ~TV_ENC_ENABLE); +} + +static const struct tv_mode * +intel_tv_mode_lookup(const char *tv_format) +{ + int i; + + for (i = 0; i < ARRAY_SIZE(tv_modes); i++) { + const struct tv_mode *tv_mode = &tv_modes[i]; + + if (!strcmp(tv_format, tv_mode->name)) + return tv_mode; + } + return NULL; +} + +static const struct tv_mode * +intel_tv_mode_find(struct intel_tv *intel_tv) +{ + return intel_tv_mode_lookup(intel_tv->tv_format); +} + +static enum drm_mode_status +intel_tv_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + /* Ensure TV refresh is close to desired refresh */ + if (tv_mode && abs(tv_mode->refresh - drm_mode_vrefresh(mode) * 1000) + < 1000) + return MODE_OK; + + return MODE_CLOCK_RANGE; +} + + +static bool +intel_tv_mode_fixup(struct drm_encoder *encoder, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_tv *intel_tv = enc_to_intel_tv(encoder); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + if (!tv_mode) + return false; + + if (intel_encoder_check_is_cloned(&intel_tv->base)) + return false; + + adjusted_mode->clock = tv_mode->clock; + return true; +} + +static void +intel_tv_mode_set(struct drm_encoder *encoder, struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_tv *intel_tv = enc_to_intel_tv(encoder); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + u32 tv_ctl; + u32 hctl1, hctl2, hctl3; + u32 vctl1, vctl2, vctl3, vctl4, vctl5, vctl6, vctl7; + u32 scctl1, scctl2, scctl3; + int i, j; + const struct video_levels *video_levels; + const struct color_conversion *color_conversion; + bool burst_ena; + int pipe = intel_crtc->pipe; + + if (!tv_mode) + return; /* can't happen (mode_prepare prevents this) */ + + tv_ctl = I915_READ(TV_CTL); + tv_ctl &= TV_CTL_SAVE; + + switch (intel_tv->type) { + default: + case DRM_MODE_CONNECTOR_Unknown: + case DRM_MODE_CONNECTOR_Composite: + tv_ctl |= TV_ENC_OUTPUT_COMPOSITE; + video_levels = tv_mode->composite_levels; + color_conversion = tv_mode->composite_color; + burst_ena = tv_mode->burst_ena; + break; + case DRM_MODE_CONNECTOR_Component: + tv_ctl |= TV_ENC_OUTPUT_COMPONENT; + video_levels = &component_levels; + if (tv_mode->burst_ena) + color_conversion = &sdtv_csc_yprpb; + else + color_conversion = &hdtv_csc_yprpb; + burst_ena = false; + break; + case DRM_MODE_CONNECTOR_SVIDEO: + tv_ctl |= TV_ENC_OUTPUT_SVIDEO; + video_levels = tv_mode->svideo_levels; + color_conversion = tv_mode->svideo_color; + burst_ena = tv_mode->burst_ena; + break; + } + hctl1 = (tv_mode->hsync_end << TV_HSYNC_END_SHIFT) | + (tv_mode->htotal << TV_HTOTAL_SHIFT); + + hctl2 = (tv_mode->hburst_start << 16) | + (tv_mode->hburst_len << TV_HBURST_LEN_SHIFT); + + if (burst_ena) + hctl2 |= TV_BURST_ENA; + + hctl3 = (tv_mode->hblank_start << TV_HBLANK_START_SHIFT) | + (tv_mode->hblank_end << TV_HBLANK_END_SHIFT); + + vctl1 = (tv_mode->nbr_end << TV_NBR_END_SHIFT) | + (tv_mode->vi_end_f1 << TV_VI_END_F1_SHIFT) | + (tv_mode->vi_end_f2 << TV_VI_END_F2_SHIFT); + + vctl2 = (tv_mode->vsync_len << TV_VSYNC_LEN_SHIFT) | + (tv_mode->vsync_start_f1 << TV_VSYNC_START_F1_SHIFT) | + (tv_mode->vsync_start_f2 << TV_VSYNC_START_F2_SHIFT); + + vctl3 = (tv_mode->veq_len << TV_VEQ_LEN_SHIFT) | + (tv_mode->veq_start_f1 << TV_VEQ_START_F1_SHIFT) | + (tv_mode->veq_start_f2 << TV_VEQ_START_F2_SHIFT); + + if (tv_mode->veq_ena) + vctl3 |= TV_EQUAL_ENA; + + vctl4 = (tv_mode->vburst_start_f1 << TV_VBURST_START_F1_SHIFT) | + (tv_mode->vburst_end_f1 << TV_VBURST_END_F1_SHIFT); + + vctl5 = (tv_mode->vburst_start_f2 << TV_VBURST_START_F2_SHIFT) | + (tv_mode->vburst_end_f2 << TV_VBURST_END_F2_SHIFT); + + vctl6 = (tv_mode->vburst_start_f3 << TV_VBURST_START_F3_SHIFT) | + (tv_mode->vburst_end_f3 << TV_VBURST_END_F3_SHIFT); + + vctl7 = (tv_mode->vburst_start_f4 << TV_VBURST_START_F4_SHIFT) | + (tv_mode->vburst_end_f4 << TV_VBURST_END_F4_SHIFT); + + if (intel_crtc->pipe == 1) + tv_ctl |= TV_ENC_PIPEB_SELECT; + tv_ctl |= tv_mode->oversample; + + if (tv_mode->progressive) + tv_ctl |= TV_PROGRESSIVE; + if (tv_mode->trilevel_sync) + tv_ctl |= TV_TRILEVEL_SYNC; + if (tv_mode->pal_burst) + tv_ctl |= TV_PAL_BURST; + + scctl1 = 0; + if (tv_mode->dda1_inc) + scctl1 |= TV_SC_DDA1_EN; + if (tv_mode->dda2_inc) + scctl1 |= TV_SC_DDA2_EN; + if (tv_mode->dda3_inc) + scctl1 |= TV_SC_DDA3_EN; + scctl1 |= tv_mode->sc_reset; + if (video_levels) + scctl1 |= video_levels->burst << TV_BURST_LEVEL_SHIFT; + scctl1 |= tv_mode->dda1_inc << TV_SCDDA1_INC_SHIFT; + + scctl2 = tv_mode->dda2_size << TV_SCDDA2_SIZE_SHIFT | + tv_mode->dda2_inc << TV_SCDDA2_INC_SHIFT; + + scctl3 = tv_mode->dda3_size << TV_SCDDA3_SIZE_SHIFT | + tv_mode->dda3_inc << TV_SCDDA3_INC_SHIFT; + + /* Enable two fixes for the chips that need them. */ + if (dev->pci_device < 0x2772) + tv_ctl |= TV_ENC_C0_FIX | TV_ENC_SDP_FIX; + + I915_WRITE(TV_H_CTL_1, hctl1); + I915_WRITE(TV_H_CTL_2, hctl2); + I915_WRITE(TV_H_CTL_3, hctl3); + I915_WRITE(TV_V_CTL_1, vctl1); + I915_WRITE(TV_V_CTL_2, vctl2); + I915_WRITE(TV_V_CTL_3, vctl3); + I915_WRITE(TV_V_CTL_4, vctl4); + I915_WRITE(TV_V_CTL_5, vctl5); + I915_WRITE(TV_V_CTL_6, vctl6); + I915_WRITE(TV_V_CTL_7, vctl7); + I915_WRITE(TV_SC_CTL_1, scctl1); + I915_WRITE(TV_SC_CTL_2, scctl2); + I915_WRITE(TV_SC_CTL_3, scctl3); + + if (color_conversion) { + I915_WRITE(TV_CSC_Y, (color_conversion->ry << 16) | + color_conversion->gy); + I915_WRITE(TV_CSC_Y2, (color_conversion->by << 16) | + color_conversion->ay); + I915_WRITE(TV_CSC_U, (color_conversion->ru << 16) | + color_conversion->gu); + I915_WRITE(TV_CSC_U2, (color_conversion->bu << 16) | + color_conversion->au); + I915_WRITE(TV_CSC_V, (color_conversion->rv << 16) | + color_conversion->gv); + I915_WRITE(TV_CSC_V2, (color_conversion->bv << 16) | + color_conversion->av); + } + + if (INTEL_INFO(dev)->gen >= 4) + I915_WRITE(TV_CLR_KNOBS, 0x00404000); + else + I915_WRITE(TV_CLR_KNOBS, 0x00606000); + + if (video_levels) + I915_WRITE(TV_CLR_LEVEL, + ((video_levels->black << TV_BLACK_LEVEL_SHIFT) | + (video_levels->blank << TV_BLANK_LEVEL_SHIFT))); + { + int pipeconf_reg = PIPECONF(pipe); + int dspcntr_reg = DSPCNTR(intel_crtc->plane); + int pipeconf = I915_READ(pipeconf_reg); + int dspcntr = I915_READ(dspcntr_reg); + int xpos = 0x0, ypos = 0x0; + unsigned int xsize, ysize; + /* Pipe must be off here */ + I915_WRITE(dspcntr_reg, dspcntr & ~DISPLAY_PLANE_ENABLE); + intel_flush_display_plane(dev_priv, intel_crtc->plane); + + /* Wait for vblank for the disable to take effect */ + if (IS_GEN2(dev)) + intel_wait_for_vblank(dev, intel_crtc->pipe); + + I915_WRITE(pipeconf_reg, pipeconf & ~PIPECONF_ENABLE); + /* Wait for vblank for the disable to take effect. */ + intel_wait_for_pipe_off(dev, intel_crtc->pipe); + + /* Filter ctl must be set before TV_WIN_SIZE */ + I915_WRITE(TV_FILTER_CTL_1, TV_AUTO_SCALE); + xsize = tv_mode->hblank_start - tv_mode->hblank_end; + if (tv_mode->progressive) + ysize = tv_mode->nbr_end + 1; + else + ysize = 2*tv_mode->nbr_end + 1; + + xpos += intel_tv->margin[TV_MARGIN_LEFT]; + ypos += intel_tv->margin[TV_MARGIN_TOP]; + xsize -= (intel_tv->margin[TV_MARGIN_LEFT] + + intel_tv->margin[TV_MARGIN_RIGHT]); + ysize -= (intel_tv->margin[TV_MARGIN_TOP] + + intel_tv->margin[TV_MARGIN_BOTTOM]); + I915_WRITE(TV_WIN_POS, (xpos<<16)|ypos); + I915_WRITE(TV_WIN_SIZE, (xsize<<16)|ysize); + + I915_WRITE(pipeconf_reg, pipeconf); + I915_WRITE(dspcntr_reg, dspcntr); + intel_flush_display_plane(dev_priv, intel_crtc->plane); + } + + j = 0; + for (i = 0; i < 60; i++) + I915_WRITE(TV_H_LUMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 60; i++) + I915_WRITE(TV_H_CHROMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 43; i++) + I915_WRITE(TV_V_LUMA_0 + (i<<2), tv_mode->filter_table[j++]); + for (i = 0; i < 43; i++) + I915_WRITE(TV_V_CHROMA_0 + (i<<2), tv_mode->filter_table[j++]); + I915_WRITE(TV_DAC, I915_READ(TV_DAC) & TV_DAC_SAVE); + I915_WRITE(TV_CTL, tv_ctl); +} + +static const struct drm_display_mode reported_modes[] = { + { + .name = "NTSC 480i", + .clock = 107520, + .hdisplay = 1280, + .hsync_start = 1368, + .hsync_end = 1496, + .htotal = 1712, + + .vdisplay = 1024, + .vsync_start = 1027, + .vsync_end = 1034, + .vtotal = 1104, + .type = DRM_MODE_TYPE_DRIVER, + }, +}; + +/** + * Detects TV presence by checking for load. + * + * Requires that the current pipe's DPLL is active. + + * \return true if TV is connected. + * \return false if TV is disconnected. + */ +static int +intel_tv_detect_type(struct intel_tv *intel_tv, + struct drm_connector *connector) +{ + struct drm_encoder *encoder = &intel_tv->base.base; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long irqflags; + u32 tv_ctl, save_tv_ctl; + u32 tv_dac, save_tv_dac; + int type; + + /* Disable TV interrupts around load detect or we'll recurse */ + if (connector->polled & DRM_CONNECTOR_POLL_HPD) { + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_disable_pipestat(dev_priv, 0, + PIPE_HOTPLUG_INTERRUPT_ENABLE | + PIPE_HOTPLUG_TV_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + } + + save_tv_dac = tv_dac = I915_READ(TV_DAC); + save_tv_ctl = tv_ctl = I915_READ(TV_CTL); + + /* Poll for TV detection */ + tv_ctl &= ~(TV_ENC_ENABLE | TV_TEST_MODE_MASK); + tv_ctl |= TV_TEST_MODE_MONITOR_DETECT; + if (intel_crtc->pipe == 1) + tv_ctl |= TV_ENC_PIPEB_SELECT; + else + tv_ctl &= ~TV_ENC_PIPEB_SELECT; + + tv_dac &= ~(TVDAC_SENSE_MASK | DAC_A_MASK | DAC_B_MASK | DAC_C_MASK); + tv_dac |= (TVDAC_STATE_CHG_EN | + TVDAC_A_SENSE_CTL | + TVDAC_B_SENSE_CTL | + TVDAC_C_SENSE_CTL | + DAC_CTL_OVERRIDE | + DAC_A_0_7_V | + DAC_B_0_7_V | + DAC_C_0_7_V); + + + /* + * The TV sense state should be cleared to zero on cantiga platform. Otherwise + * the TV is misdetected. This is hardware requirement. + */ + if (IS_GM45(dev)) + tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL | + TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL); + + I915_WRITE(TV_CTL, tv_ctl); + I915_WRITE(TV_DAC, tv_dac); + POSTING_READ(TV_DAC); + + intel_wait_for_vblank(intel_tv->base.base.dev, + to_intel_crtc(intel_tv->base.base.crtc)->pipe); + + type = -1; + tv_dac = I915_READ(TV_DAC); + DRM_DEBUG_KMS("TV detected: %x, %x\n", tv_ctl, tv_dac); + /* + * A B C + * 0 1 1 Composite + * 1 0 X svideo + * 0 0 0 Component + */ + if ((tv_dac & TVDAC_SENSE_MASK) == (TVDAC_B_SENSE | TVDAC_C_SENSE)) { + DRM_DEBUG_KMS("Detected Composite TV connection\n"); + type = DRM_MODE_CONNECTOR_Composite; + } else if ((tv_dac & (TVDAC_A_SENSE|TVDAC_B_SENSE)) == TVDAC_A_SENSE) { + DRM_DEBUG_KMS("Detected S-Video TV connection\n"); + type = DRM_MODE_CONNECTOR_SVIDEO; + } else if ((tv_dac & TVDAC_SENSE_MASK) == 0) { + DRM_DEBUG_KMS("Detected Component TV connection\n"); + type = DRM_MODE_CONNECTOR_Component; + } else { + DRM_DEBUG_KMS("Unrecognised TV connection\n"); + type = -1; + } + + I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); + I915_WRITE(TV_CTL, save_tv_ctl); + POSTING_READ(TV_CTL); + + /* For unknown reasons the hw barfs if we don't do this vblank wait. */ + intel_wait_for_vblank(intel_tv->base.base.dev, + to_intel_crtc(intel_tv->base.base.crtc)->pipe); + + /* Restore interrupt config */ + if (connector->polled & DRM_CONNECTOR_POLL_HPD) { + spin_lock_irqsave(&dev_priv->irq_lock, irqflags); + i915_enable_pipestat(dev_priv, 0, + PIPE_HOTPLUG_INTERRUPT_ENABLE | + PIPE_HOTPLUG_TV_INTERRUPT_ENABLE); + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); + } + + return type; +} + +/* + * Here we set accurate tv format according to connector type + * i.e Component TV should not be assigned by NTSC or PAL + */ +static void intel_tv_find_better_format(struct drm_connector *connector) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + int i; + + if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) == + tv_mode->component_only) + return; + + + for (i = 0; i < sizeof(tv_modes) / sizeof(*tv_modes); i++) { + tv_mode = tv_modes + i; + + if ((intel_tv->type == DRM_MODE_CONNECTOR_Component) == + tv_mode->component_only) + break; + } + + intel_tv->tv_format = tv_mode->name; + drm_connector_property_set_value(connector, + connector->dev->mode_config.tv_mode_property, i); +} + +/** + * Detect the TV connection. + * + * Currently this always returns CONNECTOR_STATUS_UNKNOWN, as we need to be sure + * we have a pipe programmed in order to probe the TV. + */ +static enum drm_connector_status +intel_tv_detect(struct drm_connector *connector, bool force) +{ + struct drm_display_mode mode; + struct intel_tv *intel_tv = intel_attached_tv(connector); + int type; + + mode = reported_modes[0]; + + if (force) { + struct intel_load_detect_pipe tmp; + + if (intel_get_load_detect_pipe(connector, &mode, &tmp)) { + type = intel_tv_detect_type(intel_tv, connector); + intel_release_load_detect_pipe(connector, &tmp); + } else + return connector_status_unknown; + } else + return connector->status; + + if (type < 0) + return connector_status_disconnected; + + intel_tv->type = type; + intel_tv_find_better_format(connector); + + return connector_status_connected; +} + +static const struct input_res { + const char *name; + int w, h; +} input_res_table[] = { + {"640x480", 640, 480}, + {"800x600", 800, 600}, + {"1024x768", 1024, 768}, + {"1280x1024", 1280, 1024}, + {"848x480", 848, 480}, + {"1280x720", 1280, 720}, + {"1920x1080", 1920, 1080}, +}; + +/* + * Chose preferred mode according to line number of TV format + */ +static void +intel_tv_chose_preferred_modes(struct drm_connector *connector, + struct drm_display_mode *mode_ptr) +{ + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + + if (tv_mode->nbr_end < 480 && mode_ptr->vdisplay == 480) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + else if (tv_mode->nbr_end > 480) { + if (tv_mode->progressive == true && tv_mode->nbr_end < 720) { + if (mode_ptr->vdisplay == 720) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + } else if (mode_ptr->vdisplay == 1080) + mode_ptr->type |= DRM_MODE_TYPE_PREFERRED; + } +} + +/** + * Stub get_modes function. + * + * This should probably return a set of fixed modes, unless we can figure out + * how to probe modes off of TV connections. + */ + +static int +intel_tv_get_modes(struct drm_connector *connector) +{ + struct drm_display_mode *mode_ptr; + struct intel_tv *intel_tv = intel_attached_tv(connector); + const struct tv_mode *tv_mode = intel_tv_mode_find(intel_tv); + int j, count = 0; + u64 tmp; + + for (j = 0; j < ARRAY_SIZE(input_res_table); + j++) { + const struct input_res *input = &input_res_table[j]; + unsigned int hactive_s = input->w; + unsigned int vactive_s = input->h; + + if (tv_mode->max_srcw && input->w > tv_mode->max_srcw) + continue; + + if (input->w > 1024 && (!tv_mode->progressive + && !tv_mode->component_only)) + continue; + + mode_ptr = drm_mode_create(connector->dev); + if (!mode_ptr) + continue; + strncpy(mode_ptr->name, input->name, DRM_DISPLAY_MODE_LEN); + + mode_ptr->hdisplay = hactive_s; + mode_ptr->hsync_start = hactive_s + 1; + mode_ptr->hsync_end = hactive_s + 64; + if (mode_ptr->hsync_end <= mode_ptr->hsync_start) + mode_ptr->hsync_end = mode_ptr->hsync_start + 1; + mode_ptr->htotal = hactive_s + 96; + + mode_ptr->vdisplay = vactive_s; + mode_ptr->vsync_start = vactive_s + 1; + mode_ptr->vsync_end = vactive_s + 32; + if (mode_ptr->vsync_end <= mode_ptr->vsync_start) + mode_ptr->vsync_end = mode_ptr->vsync_start + 1; + mode_ptr->vtotal = vactive_s + 33; + + tmp = (u64) tv_mode->refresh * mode_ptr->vtotal; + tmp *= mode_ptr->htotal; + tmp = div_u64(tmp, 1000000); + mode_ptr->clock = (int) tmp; + + mode_ptr->type = DRM_MODE_TYPE_DRIVER; + intel_tv_chose_preferred_modes(connector, mode_ptr); + drm_mode_probed_add(connector, mode_ptr); + count++; + } + + return count; +} + +static void +intel_tv_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + + +static int +intel_tv_set_property(struct drm_connector *connector, struct drm_property *property, + uint64_t val) +{ + struct drm_device *dev = connector->dev; + struct intel_tv *intel_tv = intel_attached_tv(connector); + struct drm_crtc *crtc = intel_tv->base.base.crtc; + int ret = 0; + bool changed = false; + + ret = drm_connector_property_set_value(connector, property, val); + if (ret < 0) + goto out; + + if (property == dev->mode_config.tv_left_margin_property && + intel_tv->margin[TV_MARGIN_LEFT] != val) { + intel_tv->margin[TV_MARGIN_LEFT] = val; + changed = true; + } else if (property == dev->mode_config.tv_right_margin_property && + intel_tv->margin[TV_MARGIN_RIGHT] != val) { + intel_tv->margin[TV_MARGIN_RIGHT] = val; + changed = true; + } else if (property == dev->mode_config.tv_top_margin_property && + intel_tv->margin[TV_MARGIN_TOP] != val) { + intel_tv->margin[TV_MARGIN_TOP] = val; + changed = true; + } else if (property == dev->mode_config.tv_bottom_margin_property && + intel_tv->margin[TV_MARGIN_BOTTOM] != val) { + intel_tv->margin[TV_MARGIN_BOTTOM] = val; + changed = true; + } else if (property == dev->mode_config.tv_mode_property) { + if (val >= ARRAY_SIZE(tv_modes)) { + ret = -EINVAL; + goto out; + } + if (!strcmp(intel_tv->tv_format, tv_modes[val].name)) + goto out; + + intel_tv->tv_format = tv_modes[val].name; + changed = true; + } else { + ret = -EINVAL; + goto out; + } + + if (changed && crtc) + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); +out: + return ret; +} + +static const struct drm_encoder_helper_funcs intel_tv_helper_funcs = { + .mode_fixup = intel_tv_mode_fixup, + .mode_set = intel_tv_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_tv_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_tv_detect, + .destroy = intel_tv_destroy, + .set_property = intel_tv_set_property, + .fill_modes = drm_helper_probe_single_connector_modes, +}; + +static const struct drm_connector_helper_funcs intel_tv_connector_helper_funcs = { + .mode_valid = intel_tv_mode_valid, + .get_modes = intel_tv_get_modes, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_tv_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +/* + * Enumerate the child dev array parsed from VBT to check whether + * the integrated TV is present. + * If it is present, return 1. + * If it is not present, return false. + * If no child dev is parsed from VBT, it assumes that the TV is present. + */ +static int tv_is_present_in_vbt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct child_device_config *p_child; + int i, ret; + + if (!dev_priv->child_dev_num) + return 1; + + ret = 0; + for (i = 0; i < dev_priv->child_dev_num; i++) { + p_child = dev_priv->child_dev + i; + /* + * If the device type is not TV, continue. + */ + if (p_child->device_type != DEVICE_TYPE_INT_TV && + p_child->device_type != DEVICE_TYPE_TV) + continue; + /* Only when the addin_offset is non-zero, it is regarded + * as present. + */ + if (p_child->addin_offset) { + ret = 1; + break; + } + } + return ret; +} + +void +intel_tv_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_connector *connector; + struct intel_tv *intel_tv; + struct intel_encoder *intel_encoder; + struct intel_connector *intel_connector; + u32 tv_dac_on, tv_dac_off, save_tv_dac; + char *tv_format_names[ARRAY_SIZE(tv_modes)]; + int i, initial_mode = 0; + + if ((I915_READ(TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) + return; + + if (!tv_is_present_in_vbt(dev)) { + DRM_DEBUG_KMS("Integrated TV is not present.\n"); + return; + } + /* Even if we have an encoder we may not have a connector */ + if (!dev_priv->int_tv_support) + return; + + /* + * Sanity check the TV output by checking to see if the + * DAC register holds a value + */ + save_tv_dac = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac | TVDAC_STATE_CHG_EN); + tv_dac_on = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac & ~TVDAC_STATE_CHG_EN); + tv_dac_off = I915_READ(TV_DAC); + + I915_WRITE(TV_DAC, save_tv_dac); + + /* + * If the register does not hold the state change enable + * bit, (either as a 0 or a 1), assume it doesn't really + * exist + */ + if ((tv_dac_on & TVDAC_STATE_CHG_EN) == 0 || + (tv_dac_off & TVDAC_STATE_CHG_EN) != 0) + return; + + intel_tv = kzalloc(sizeof(struct intel_tv), GFP_KERNEL); + if (!intel_tv) { + return; + } + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_tv); + return; + } + + intel_encoder = &intel_tv->base; + connector = &intel_connector->base; + + /* The documentation, for the older chipsets at least, recommend + * using a polling method rather than hotplug detection for TVs. + * This is because in order to perform the hotplug detection, the PLLs + * for the TV must be kept alive increasing power drain and starving + * bandwidth from other encoders. Notably for instance, it causes + * pipe underruns on Crestline when this encoder is supposedly idle. + * + * More recent chipsets favour HDMI rather than integrated S-Video. + */ + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + + drm_connector_init(dev, connector, &intel_tv_connector_funcs, + DRM_MODE_CONNECTOR_SVIDEO); + + drm_encoder_init(dev, &intel_encoder->base, &intel_tv_enc_funcs, + DRM_MODE_ENCODER_TVDAC); + + intel_encoder->enable = intel_enable_tv; + intel_encoder->disable = intel_disable_tv; + intel_encoder->get_hw_state = intel_tv_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_connector_attach_encoder(intel_connector, intel_encoder); + intel_encoder->type = INTEL_OUTPUT_TVOUT; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + intel_encoder->cloneable = false; + intel_encoder->base.possible_crtcs = ((1 << 0) | (1 << 1)); + intel_encoder->base.possible_clones = (1 << INTEL_OUTPUT_TVOUT); + intel_tv->type = DRM_MODE_CONNECTOR_Unknown; + + /* BIOS margin values */ + intel_tv->margin[TV_MARGIN_LEFT] = 54; + intel_tv->margin[TV_MARGIN_TOP] = 36; + intel_tv->margin[TV_MARGIN_RIGHT] = 46; + intel_tv->margin[TV_MARGIN_BOTTOM] = 37; + + intel_tv->tv_format = tv_modes[initial_mode].name; + + drm_encoder_helper_add(&intel_encoder->base, &intel_tv_helper_funcs); + drm_connector_helper_add(connector, &intel_tv_connector_helper_funcs); + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + /* Create TV properties then attach current values */ + for (i = 0; i < ARRAY_SIZE(tv_modes); i++) + tv_format_names[i] = (char *)tv_modes[i].name; + drm_mode_create_tv_properties(dev, + ARRAY_SIZE(tv_modes), + tv_format_names); + + drm_connector_attach_property(connector, dev->mode_config.tv_mode_property, + initial_mode); + drm_connector_attach_property(connector, + dev->mode_config.tv_left_margin_property, + intel_tv->margin[TV_MARGIN_LEFT]); + drm_connector_attach_property(connector, + dev->mode_config.tv_top_margin_property, + intel_tv->margin[TV_MARGIN_TOP]); + drm_connector_attach_property(connector, + dev->mode_config.tv_right_margin_property, + intel_tv->margin[TV_MARGIN_RIGHT]); + drm_connector_attach_property(connector, + dev->mode_config.tv_bottom_margin_property, + intel_tv->margin[TV_MARGIN_BOTTOM]); + drm_sysfs_connector_add(connector); +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ivch.c +++ linux-3.5.0/ubuntu/i915/dvo_ivch.c @@ -0,0 +1,436 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "dvo.h" + +/* + * register definitions for the i82807aa. + * + * Documentation on this chipset can be found in datasheet #29069001 at + * intel.com. + */ + +/* + * VCH Revision & GMBus Base Addr + */ +#define VR00 0x00 +# define VR00_BASE_ADDRESS_MASK 0x007f + +/* + * Functionality Enable + */ +#define VR01 0x01 + +/* + * Enable the panel fitter + */ +# define VR01_PANEL_FIT_ENABLE (1 << 3) +/* + * Enables the LCD display. + * + * This must not be set while VR01_DVO_BYPASS_ENABLE is set. + */ +# define VR01_LCD_ENABLE (1 << 2) +/** Enables the DVO repeater. */ +# define VR01_DVO_BYPASS_ENABLE (1 << 1) +/** Enables the DVO clock */ +# define VR01_DVO_ENABLE (1 << 0) + +/* + * LCD Interface Format + */ +#define VR10 0x10 +/** Enables LVDS output instead of CMOS */ +# define VR10_LVDS_ENABLE (1 << 4) +/** Enables 18-bit LVDS output. */ +# define VR10_INTERFACE_1X18 (0 << 2) +/** Enables 24-bit LVDS or CMOS output */ +# define VR10_INTERFACE_1X24 (1 << 2) +/** Enables 2x18-bit LVDS or CMOS output. */ +# define VR10_INTERFACE_2X18 (2 << 2) +/** Enables 2x24-bit LVDS output */ +# define VR10_INTERFACE_2X24 (3 << 2) + +/* + * VR20 LCD Horizontal Display Size + */ +#define VR20 0x20 + +/* + * LCD Vertical Display Size + */ +#define VR21 0x20 + +/* + * Panel power down status + */ +#define VR30 0x30 +/** Read only bit indicating that the panel is not in a safe poweroff state. */ +# define VR30_PANEL_ON (1 << 15) + +#define VR40 0x40 +# define VR40_STALL_ENABLE (1 << 13) +# define VR40_VERTICAL_INTERP_ENABLE (1 << 12) +# define VR40_ENHANCED_PANEL_FITTING (1 << 11) +# define VR40_HORIZONTAL_INTERP_ENABLE (1 << 10) +# define VR40_AUTO_RATIO_ENABLE (1 << 9) +# define VR40_CLOCK_GATING_ENABLE (1 << 8) + +/* + * Panel Fitting Vertical Ratio + * (((image_height - 1) << 16) / ((panel_height - 1))) >> 2 + */ +#define VR41 0x41 + +/* + * Panel Fitting Horizontal Ratio + * (((image_width - 1) << 16) / ((panel_width - 1))) >> 2 + */ +#define VR42 0x42 + +/* + * Horizontal Image Size + */ +#define VR43 0x43 + +/* VR80 GPIO 0 + */ +#define VR80 0x80 +#define VR81 0x81 +#define VR82 0x82 +#define VR83 0x83 +#define VR84 0x84 +#define VR85 0x85 +#define VR86 0x86 +#define VR87 0x87 + +/* VR88 GPIO 8 + */ +#define VR88 0x88 + +/* Graphics BIOS scratch 0 + */ +#define VR8E 0x8E +# define VR8E_PANEL_TYPE_MASK (0xf << 0) +# define VR8E_PANEL_INTERFACE_CMOS (0 << 4) +# define VR8E_PANEL_INTERFACE_LVDS (1 << 4) +# define VR8E_FORCE_DEFAULT_PANEL (1 << 5) + +/* Graphics BIOS scratch 1 + */ +#define VR8F 0x8F +# define VR8F_VCH_PRESENT (1 << 0) +# define VR8F_DISPLAY_CONN (1 << 1) +# define VR8F_POWER_MASK (0x3c) +# define VR8F_POWER_POS (2) + + +struct ivch_priv { + bool quiet; + + uint16_t width, height; +}; + + +static void ivch_dump_regs(struct intel_dvo_device *dvo); + +/** + * Reads a register on the ivch. + * + * Each of the 256 registers are 16 bits long. + */ +static bool ivch_read(struct intel_dvo_device *dvo, int addr, uint16_t *data) +{ + struct ivch_priv *priv = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[1]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 0, + }, + { + .addr = 0, + .flags = I2C_M_NOSTART, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD | I2C_M_NOSTART, + .len = 2, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + + if (i2c_transfer(adapter, msgs, 3) == 3) { + *data = (in_buf[1] << 8) | in_buf[0]; + return true; + }; + + if (!priv->quiet) { + DRM_DEBUG_KMS("Unable to read register 0x%02x from " + "%s:%02x.\n", + addr, adapter->name, dvo->slave_addr); + } + return false; +} + +/** Writes a 16-bit register on the ivch */ +static bool ivch_write(struct intel_dvo_device *dvo, int addr, uint16_t data) +{ + struct ivch_priv *priv = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[3]; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 3, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = data & 0xff; + out_buf[2] = data >> 8; + + if (i2c_transfer(adapter, &msg, 1) == 1) + return true; + + if (!priv->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d.\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/** Probes the given bus and slave address for an ivch */ +static bool ivch_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + struct ivch_priv *priv; + uint16_t temp; + + priv = kzalloc(sizeof(struct ivch_priv), GFP_KERNEL); + if (priv == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = priv; + priv->quiet = true; + + if (!ivch_read(dvo, VR00, &temp)) + goto out; + priv->quiet = false; + + /* Since the identification bits are probably zeroes, which doesn't seem + * very unique, check that the value in the base address field matches + * the address it's responding on. + */ + if ((temp & VR00_BASE_ADDRESS_MASK) != dvo->slave_addr) { + DRM_DEBUG_KMS("ivch detect failed due to address mismatch " + "(%d vs %d)\n", + (temp & VR00_BASE_ADDRESS_MASK), dvo->slave_addr); + goto out; + } + + ivch_read(dvo, VR20, &priv->width); + ivch_read(dvo, VR21, &priv->height); + + return true; + +out: + kfree(priv); + return false; +} + +static enum drm_connector_status ivch_detect(struct intel_dvo_device *dvo) +{ + return connector_status_connected; +} + +static enum drm_mode_status ivch_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 112000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +/** Sets the power state of the panel connected to the ivch */ +static void ivch_dpms(struct intel_dvo_device *dvo, bool enable) +{ + int i; + uint16_t vr01, vr30, backlight; + + /* Set the new power state of the panel. */ + if (!ivch_read(dvo, VR01, &vr01)) + return; + + if (enable) + backlight = 1; + else + backlight = 0; + ivch_write(dvo, VR80, backlight); + + if (enable) + vr01 |= VR01_LCD_ENABLE | VR01_DVO_ENABLE; + else + vr01 &= ~(VR01_LCD_ENABLE | VR01_DVO_ENABLE); + + ivch_write(dvo, VR01, vr01); + + /* Wait for the panel to make its state transition */ + for (i = 0; i < 100; i++) { + if (!ivch_read(dvo, VR30, &vr30)) + break; + + if (((vr30 & VR30_PANEL_ON) != 0) == enable) + break; + udelay(1000); + } + /* wait some more; vch may fail to resync sometimes without this */ + udelay(16 * 1000); +} + +static bool ivch_get_hw_state(struct intel_dvo_device *dvo) +{ + uint16_t vr01; + + /* Set the new power state of the panel. */ + if (!ivch_read(dvo, VR01, &vr01)) + return false; + + if (vr01 & VR01_LCD_ENABLE) + return true; + else + return false; +} + +static void ivch_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint16_t vr40 = 0; + uint16_t vr01; + + vr01 = 0; + vr40 = (VR40_STALL_ENABLE | VR40_VERTICAL_INTERP_ENABLE | + VR40_HORIZONTAL_INTERP_ENABLE); + + if (mode->hdisplay != adjusted_mode->hdisplay || + mode->vdisplay != adjusted_mode->vdisplay) { + uint16_t x_ratio, y_ratio; + + vr01 |= VR01_PANEL_FIT_ENABLE; + vr40 |= VR40_CLOCK_GATING_ENABLE; + x_ratio = (((mode->hdisplay - 1) << 16) / + (adjusted_mode->hdisplay - 1)) >> 2; + y_ratio = (((mode->vdisplay - 1) << 16) / + (adjusted_mode->vdisplay - 1)) >> 2; + ivch_write(dvo, VR42, x_ratio); + ivch_write(dvo, VR41, y_ratio); + } else { + vr01 &= ~VR01_PANEL_FIT_ENABLE; + vr40 &= ~VR40_CLOCK_GATING_ENABLE; + } + vr40 &= ~VR40_AUTO_RATIO_ENABLE; + + ivch_write(dvo, VR01, vr01); + ivch_write(dvo, VR40, vr40); + + ivch_dump_regs(dvo); +} + +static void ivch_dump_regs(struct intel_dvo_device *dvo) +{ + uint16_t val; + + ivch_read(dvo, VR00, &val); + DRM_LOG_KMS("VR00: 0x%04x\n", val); + ivch_read(dvo, VR01, &val); + DRM_LOG_KMS("VR01: 0x%04x\n", val); + ivch_read(dvo, VR30, &val); + DRM_LOG_KMS("VR30: 0x%04x\n", val); + ivch_read(dvo, VR40, &val); + DRM_LOG_KMS("VR40: 0x%04x\n", val); + + /* GPIO registers */ + ivch_read(dvo, VR80, &val); + DRM_LOG_KMS("VR80: 0x%04x\n", val); + ivch_read(dvo, VR81, &val); + DRM_LOG_KMS("VR81: 0x%04x\n", val); + ivch_read(dvo, VR82, &val); + DRM_LOG_KMS("VR82: 0x%04x\n", val); + ivch_read(dvo, VR83, &val); + DRM_LOG_KMS("VR83: 0x%04x\n", val); + ivch_read(dvo, VR84, &val); + DRM_LOG_KMS("VR84: 0x%04x\n", val); + ivch_read(dvo, VR85, &val); + DRM_LOG_KMS("VR85: 0x%04x\n", val); + ivch_read(dvo, VR86, &val); + DRM_LOG_KMS("VR86: 0x%04x\n", val); + ivch_read(dvo, VR87, &val); + DRM_LOG_KMS("VR87: 0x%04x\n", val); + ivch_read(dvo, VR88, &val); + DRM_LOG_KMS("VR88: 0x%04x\n", val); + + /* Scratch register 0 - AIM Panel type */ + ivch_read(dvo, VR8E, &val); + DRM_LOG_KMS("VR8E: 0x%04x\n", val); + + /* Scratch register 1 - Status register */ + ivch_read(dvo, VR8F, &val); + DRM_LOG_KMS("VR8F: 0x%04x\n", val); +} + +static void ivch_destroy(struct intel_dvo_device *dvo) +{ + struct ivch_priv *priv = dvo->dev_priv; + + if (priv) { + kfree(priv); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ivch_ops = { + .init = ivch_init, + .dpms = ivch_dpms, + .get_hw_state = ivch_get_hw_state, + .mode_valid = ivch_mode_valid, + .mode_set = ivch_mode_set, + .detect = ivch_detect, + .dump_regs = ivch_dump_regs, + .destroy = ivch_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/intel_acpi.c +++ linux-3.5.0/ubuntu/i915/intel_acpi.c @@ -0,0 +1,251 @@ +/* + * Intel ACPI functions + * + * _DSM related code stolen from nouveau_acpi.c. + */ +#include +#include +#include +#include + +#include "drmP.h" +#include "i915_drv.h" + +#define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */ + +#define INTEL_DSM_FN_SUPPORTED_FUNCTIONS 0 /* No args */ +#define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */ + +static struct intel_dsm_priv { + acpi_handle dhandle; +} intel_dsm_priv; + +static const u8 intel_dsm_guid[] = { + 0xd3, 0x73, 0xd8, 0x7e, + 0xd0, 0xc2, + 0x4f, 0x4e, + 0xa8, 0x54, + 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c +}; + +static int intel_dsm(acpi_handle handle, int func, int arg) +{ + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_object_list input; + union acpi_object params[4]; + union acpi_object *obj; + u32 result; + int ret = 0; + + input.count = 4; + input.pointer = params; + params[0].type = ACPI_TYPE_BUFFER; + params[0].buffer.length = sizeof(intel_dsm_guid); + params[0].buffer.pointer = (char *)intel_dsm_guid; + params[1].type = ACPI_TYPE_INTEGER; + params[1].integer.value = INTEL_DSM_REVISION_ID; + params[2].type = ACPI_TYPE_INTEGER; + params[2].integer.value = func; + params[3].type = ACPI_TYPE_INTEGER; + params[3].integer.value = arg; + + ret = acpi_evaluate_object(handle, "_DSM", &input, &output); + if (ret) { + DRM_DEBUG_DRIVER("failed to evaluate _DSM: %d\n", ret); + return ret; + } + + obj = (union acpi_object *)output.pointer; + + result = 0; + switch (obj->type) { + case ACPI_TYPE_INTEGER: + result = obj->integer.value; + break; + + case ACPI_TYPE_BUFFER: + if (obj->buffer.length == 4) { + result = (obj->buffer.pointer[0] | + (obj->buffer.pointer[1] << 8) | + (obj->buffer.pointer[2] << 16) | + (obj->buffer.pointer[3] << 24)); + break; + } + default: + ret = -EINVAL; + break; + } + if (result == 0x80000002) + ret = -ENODEV; + + kfree(output.pointer); + return ret; +} + +static char *intel_dsm_port_name(u8 id) +{ + switch (id) { + case 0: + return "Reserved"; + case 1: + return "Analog VGA"; + case 2: + return "LVDS"; + case 3: + return "Reserved"; + case 4: + return "HDMI/DVI_B"; + case 5: + return "HDMI/DVI_C"; + case 6: + return "HDMI/DVI_D"; + case 7: + return "DisplayPort_A"; + case 8: + return "DisplayPort_B"; + case 9: + return "DisplayPort_C"; + case 0xa: + return "DisplayPort_D"; + case 0xb: + case 0xc: + case 0xd: + return "Reserved"; + case 0xe: + return "WiDi"; + default: + return "bad type"; + } +} + +static char *intel_dsm_mux_type(u8 type) +{ + switch (type) { + case 0: + return "unknown"; + case 1: + return "No MUX, iGPU only"; + case 2: + return "No MUX, dGPU only"; + case 3: + return "MUXed between iGPU and dGPU"; + default: + return "bad type"; + } +} + +static void intel_dsm_platform_mux_info(void) +{ + struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_object_list input; + union acpi_object params[4]; + union acpi_object *pkg; + int i, ret; + + input.count = 4; + input.pointer = params; + params[0].type = ACPI_TYPE_BUFFER; + params[0].buffer.length = sizeof(intel_dsm_guid); + params[0].buffer.pointer = (char *)intel_dsm_guid; + params[1].type = ACPI_TYPE_INTEGER; + params[1].integer.value = INTEL_DSM_REVISION_ID; + params[2].type = ACPI_TYPE_INTEGER; + params[2].integer.value = INTEL_DSM_FN_PLATFORM_MUX_INFO; + params[3].type = ACPI_TYPE_INTEGER; + params[3].integer.value = 0; + + ret = acpi_evaluate_object(intel_dsm_priv.dhandle, "_DSM", &input, + &output); + if (ret) { + DRM_DEBUG_DRIVER("failed to evaluate _DSM: %d\n", ret); + goto out; + } + + pkg = (union acpi_object *)output.pointer; + + if (pkg->type == ACPI_TYPE_PACKAGE) { + union acpi_object *connector_count = &pkg->package.elements[0]; + DRM_DEBUG_DRIVER("MUX info connectors: %lld\n", + (unsigned long long)connector_count->integer.value); + for (i = 1; i < pkg->package.count; i++) { + union acpi_object *obj = &pkg->package.elements[i]; + union acpi_object *connector_id = + &obj->package.elements[0]; + union acpi_object *info = &obj->package.elements[1]; + DRM_DEBUG_DRIVER("Connector id: 0x%016llx\n", + (unsigned long long)connector_id->integer.value); + DRM_DEBUG_DRIVER(" port id: %s\n", + intel_dsm_port_name(info->buffer.pointer[0])); + DRM_DEBUG_DRIVER(" display mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[1])); + DRM_DEBUG_DRIVER(" aux/dc mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[2])); + DRM_DEBUG_DRIVER(" hpd mux info: %s\n", + intel_dsm_mux_type(info->buffer.pointer[3])); + } + } + +out: + kfree(output.pointer); +} + +static bool intel_dsm_pci_probe(struct pci_dev *pdev) +{ + acpi_handle dhandle, intel_handle; + acpi_status status; + int ret; + + dhandle = DEVICE_ACPI_HANDLE(&pdev->dev); + if (!dhandle) + return false; + + status = acpi_get_handle(dhandle, "_DSM", &intel_handle); + if (ACPI_FAILURE(status)) { + DRM_DEBUG_KMS("no _DSM method for intel device\n"); + return false; + } + + ret = intel_dsm(dhandle, INTEL_DSM_FN_SUPPORTED_FUNCTIONS, 0); + if (ret < 0) { + DRM_DEBUG_KMS("failed to get supported _DSM functions\n"); + return false; + } + + intel_dsm_priv.dhandle = dhandle; + + intel_dsm_platform_mux_info(); + return true; +} + +static bool intel_dsm_detect(void) +{ + char acpi_method_name[255] = { 0 }; + struct acpi_buffer buffer = {sizeof(acpi_method_name), acpi_method_name}; + struct pci_dev *pdev = NULL; + bool has_dsm = false; + int vga_count = 0; + + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) { + vga_count++; + has_dsm |= intel_dsm_pci_probe(pdev); + } + + if (vga_count == 2 && has_dsm) { + acpi_get_name(intel_dsm_priv.dhandle, ACPI_FULL_PATHNAME, &buffer); + DRM_DEBUG_DRIVER("VGA switcheroo: detected DSM switching method %s handle\n", + acpi_method_name); + return true; + } + + return false; +} + +void intel_register_dsm_handler(void) +{ + if (!intel_dsm_detect()) + return; +} + +void intel_unregister_dsm_handler(void) +{ +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ch7017.c +++ linux-3.5.0/ubuntu/i915/dvo_ch7017.c @@ -0,0 +1,414 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "dvo.h" + +#define CH7017_TV_DISPLAY_MODE 0x00 +#define CH7017_FLICKER_FILTER 0x01 +#define CH7017_VIDEO_BANDWIDTH 0x02 +#define CH7017_TEXT_ENHANCEMENT 0x03 +#define CH7017_START_ACTIVE_VIDEO 0x04 +#define CH7017_HORIZONTAL_POSITION 0x05 +#define CH7017_VERTICAL_POSITION 0x06 +#define CH7017_BLACK_LEVEL 0x07 +#define CH7017_CONTRAST_ENHANCEMENT 0x08 +#define CH7017_TV_PLL 0x09 +#define CH7017_TV_PLL_M 0x0a +#define CH7017_TV_PLL_N 0x0b +#define CH7017_SUB_CARRIER_0 0x0c +#define CH7017_CIV_CONTROL 0x10 +#define CH7017_CIV_0 0x11 +#define CH7017_CHROMA_BOOST 0x14 +#define CH7017_CLOCK_MODE 0x1c +#define CH7017_INPUT_CLOCK 0x1d +#define CH7017_GPIO_CONTROL 0x1e +#define CH7017_INPUT_DATA_FORMAT 0x1f +#define CH7017_CONNECTION_DETECT 0x20 +#define CH7017_DAC_CONTROL 0x21 +#define CH7017_BUFFERED_CLOCK_OUTPUT 0x22 +#define CH7017_DEFEAT_VSYNC 0x47 +#define CH7017_TEST_PATTERN 0x48 + +#define CH7017_POWER_MANAGEMENT 0x49 +/** Enables the TV output path. */ +#define CH7017_TV_EN (1 << 0) +#define CH7017_DAC0_POWER_DOWN (1 << 1) +#define CH7017_DAC1_POWER_DOWN (1 << 2) +#define CH7017_DAC2_POWER_DOWN (1 << 3) +#define CH7017_DAC3_POWER_DOWN (1 << 4) +/** Powers down the TV out block, and DAC0-3 */ +#define CH7017_TV_POWER_DOWN_EN (1 << 5) + +#define CH7017_VERSION_ID 0x4a + +#define CH7017_DEVICE_ID 0x4b +#define CH7017_DEVICE_ID_VALUE 0x1b +#define CH7018_DEVICE_ID_VALUE 0x1a +#define CH7019_DEVICE_ID_VALUE 0x19 + +#define CH7017_XCLK_D2_ADJUST 0x53 +#define CH7017_UP_SCALER_COEFF_0 0x55 +#define CH7017_UP_SCALER_COEFF_1 0x56 +#define CH7017_UP_SCALER_COEFF_2 0x57 +#define CH7017_UP_SCALER_COEFF_3 0x58 +#define CH7017_UP_SCALER_COEFF_4 0x59 +#define CH7017_UP_SCALER_VERTICAL_INC_0 0x5a +#define CH7017_UP_SCALER_VERTICAL_INC_1 0x5b +#define CH7017_GPIO_INVERT 0x5c +#define CH7017_UP_SCALER_HORIZONTAL_INC_0 0x5d +#define CH7017_UP_SCALER_HORIZONTAL_INC_1 0x5e + +#define CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT 0x5f +/**< Low bits of horizontal active pixel input */ + +#define CH7017_ACTIVE_INPUT_LINE_OUTPUT 0x60 +/** High bits of horizontal active pixel input */ +#define CH7017_LVDS_HAP_INPUT_MASK (0x7 << 0) +/** High bits of vertical active line output */ +#define CH7017_LVDS_VAL_HIGH_MASK (0x7 << 3) + +#define CH7017_VERTICAL_ACTIVE_LINE_OUTPUT 0x61 +/**< Low bits of vertical active line output */ + +#define CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT 0x62 +/**< Low bits of horizontal active pixel output */ + +#define CH7017_LVDS_POWER_DOWN 0x63 +/** High bits of horizontal active pixel output */ +#define CH7017_LVDS_HAP_HIGH_MASK (0x7 << 0) +/** Enables the LVDS power down state transition */ +#define CH7017_LVDS_POWER_DOWN_EN (1 << 6) +/** Enables the LVDS upscaler */ +#define CH7017_LVDS_UPSCALER_EN (1 << 7) +#define CH7017_LVDS_POWER_DOWN_DEFAULT_RESERVED 0x08 + +#define CH7017_LVDS_ENCODING 0x64 +#define CH7017_LVDS_DITHER_2D (1 << 2) +#define CH7017_LVDS_DITHER_DIS (1 << 3) +#define CH7017_LVDS_DUAL_CHANNEL_EN (1 << 4) +#define CH7017_LVDS_24_BIT (1 << 5) + +#define CH7017_LVDS_ENCODING_2 0x65 + +#define CH7017_LVDS_PLL_CONTROL 0x66 +/** Enables the LVDS panel output path */ +#define CH7017_LVDS_PANEN (1 << 0) +/** Enables the LVDS panel backlight */ +#define CH7017_LVDS_BKLEN (1 << 3) + +#define CH7017_POWER_SEQUENCING_T1 0x67 +#define CH7017_POWER_SEQUENCING_T2 0x68 +#define CH7017_POWER_SEQUENCING_T3 0x69 +#define CH7017_POWER_SEQUENCING_T4 0x6a +#define CH7017_POWER_SEQUENCING_T5 0x6b +#define CH7017_GPIO_DRIVER_TYPE 0x6c +#define CH7017_GPIO_DATA 0x6d +#define CH7017_GPIO_DIRECTION_CONTROL 0x6e + +#define CH7017_LVDS_PLL_FEEDBACK_DIV 0x71 +# define CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT 4 +# define CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT 0 +# define CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED 0x80 + +#define CH7017_LVDS_PLL_VCO_CONTROL 0x72 +# define CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED 0x80 +# define CH7017_LVDS_PLL_VCO_SHIFT 4 +# define CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT 0 + +#define CH7017_OUTPUTS_ENABLE 0x73 +# define CH7017_CHARGE_PUMP_LOW 0x0 +# define CH7017_CHARGE_PUMP_HIGH 0x3 +# define CH7017_LVDS_CHANNEL_A (1 << 3) +# define CH7017_LVDS_CHANNEL_B (1 << 4) +# define CH7017_TV_DAC_A (1 << 5) +# define CH7017_TV_DAC_B (1 << 6) +# define CH7017_DDC_SELECT_DC2 (1 << 7) + +#define CH7017_LVDS_OUTPUT_AMPLITUDE 0x74 +#define CH7017_LVDS_PLL_EMI_REDUCTION 0x75 +#define CH7017_LVDS_POWER_DOWN_FLICKER 0x76 + +#define CH7017_LVDS_CONTROL_2 0x78 +# define CH7017_LOOP_FILTER_SHIFT 5 +# define CH7017_PHASE_DETECTOR_SHIFT 0 + +#define CH7017_BANG_LIMIT_CONTROL 0x7f + +struct ch7017_priv { + uint8_t dummy; +}; + +static void ch7017_dump_regs(struct intel_dvo_device *dvo); +static void ch7017_dpms(struct intel_dvo_device *dvo, bool enable); + +static bool ch7017_read(struct intel_dvo_device *dvo, u8 addr, u8 *val) +{ + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = &addr, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = val, + } + }; + return i2c_transfer(dvo->i2c_bus, msgs, 2) == 2; +} + +static bool ch7017_write(struct intel_dvo_device *dvo, u8 addr, u8 val) +{ + uint8_t buf[2] = { addr, val }; + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = buf, + }; + return i2c_transfer(dvo->i2c_bus, &msg, 1) == 1; +} + +/** Probes for a CH7017 on the given bus and slave address. */ +static bool ch7017_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + struct ch7017_priv *priv; + const char *str; + u8 val; + + priv = kzalloc(sizeof(struct ch7017_priv), GFP_KERNEL); + if (priv == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = priv; + + if (!ch7017_read(dvo, CH7017_DEVICE_ID, &val)) + goto fail; + + switch (val) { + case CH7017_DEVICE_ID_VALUE: + str = "ch7017"; + break; + case CH7018_DEVICE_ID_VALUE: + str = "ch7018"; + break; + case CH7019_DEVICE_ID_VALUE: + str = "ch7019"; + break; + default: + DRM_DEBUG_KMS("ch701x not detected, got %d: from %s " + "slave %d.\n", + val, adapter->name, dvo->slave_addr); + goto fail; + } + + DRM_DEBUG_KMS("%s detected on %s, addr %d\n", + str, adapter->name, dvo->slave_addr); + return true; + +fail: + kfree(priv); + return false; +} + +static enum drm_connector_status ch7017_detect(struct intel_dvo_device *dvo) +{ + return connector_status_connected; +} + +static enum drm_mode_status ch7017_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + if (mode->clock > 160000) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static void ch7017_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + uint8_t lvds_pll_feedback_div, lvds_pll_vco_control; + uint8_t outputs_enable, lvds_control_2, lvds_power_down; + uint8_t horizontal_active_pixel_input; + uint8_t horizontal_active_pixel_output, vertical_active_line_output; + uint8_t active_input_line_output; + + DRM_DEBUG_KMS("Registers before mode setting\n"); + ch7017_dump_regs(dvo); + + /* LVDS PLL settings from page 75 of 7017-7017ds.pdf*/ + if (mode->clock < 100000) { + outputs_enable = CH7017_LVDS_CHANNEL_A | CH7017_CHARGE_PUMP_LOW; + lvds_pll_feedback_div = CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT) | + (13 << CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT); + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_VCO_SHIFT) | + (3 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + lvds_control_2 = (1 << CH7017_LOOP_FILTER_SHIFT) | + (0 << CH7017_PHASE_DETECTOR_SHIFT); + } else { + outputs_enable = CH7017_LVDS_CHANNEL_A | CH7017_CHARGE_PUMP_HIGH; + lvds_pll_feedback_div = CH7017_LVDS_PLL_FEEDBACK_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_FEED_BACK_DIVIDER_SHIFT) | + (3 << CH7017_LVDS_PLL_FEED_FORWARD_DIVIDER_SHIFT); + lvds_pll_feedback_div = 35; + lvds_control_2 = (3 << CH7017_LOOP_FILTER_SHIFT) | + (0 << CH7017_PHASE_DETECTOR_SHIFT); + if (1) { /* XXX: dual channel panel detection. Assume yes for now. */ + outputs_enable |= CH7017_LVDS_CHANNEL_B; + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (2 << CH7017_LVDS_PLL_VCO_SHIFT) | + (13 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + } else { + lvds_pll_vco_control = CH7017_LVDS_PLL_VCO_DEFAULT_RESERVED | + (1 << CH7017_LVDS_PLL_VCO_SHIFT) | + (13 << CH7017_LVDS_PLL_POST_SCALE_DIV_SHIFT); + } + } + + horizontal_active_pixel_input = mode->hdisplay & 0x00ff; + + vertical_active_line_output = mode->vdisplay & 0x00ff; + horizontal_active_pixel_output = mode->hdisplay & 0x00ff; + + active_input_line_output = ((mode->hdisplay & 0x0700) >> 8) | + (((mode->vdisplay & 0x0700) >> 8) << 3); + + lvds_power_down = CH7017_LVDS_POWER_DOWN_DEFAULT_RESERVED | + (mode->hdisplay & 0x0700) >> 8; + + ch7017_dpms(dvo, false); + ch7017_write(dvo, CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT, + horizontal_active_pixel_input); + ch7017_write(dvo, CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT, + horizontal_active_pixel_output); + ch7017_write(dvo, CH7017_VERTICAL_ACTIVE_LINE_OUTPUT, + vertical_active_line_output); + ch7017_write(dvo, CH7017_ACTIVE_INPUT_LINE_OUTPUT, + active_input_line_output); + ch7017_write(dvo, CH7017_LVDS_PLL_VCO_CONTROL, lvds_pll_vco_control); + ch7017_write(dvo, CH7017_LVDS_PLL_FEEDBACK_DIV, lvds_pll_feedback_div); + ch7017_write(dvo, CH7017_LVDS_CONTROL_2, lvds_control_2); + ch7017_write(dvo, CH7017_OUTPUTS_ENABLE, outputs_enable); + + /* Turn the LVDS back on with new settings. */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, lvds_power_down); + + DRM_DEBUG_KMS("Registers after mode setting\n"); + ch7017_dump_regs(dvo); +} + +/* set the CH7017 power state */ +static void ch7017_dpms(struct intel_dvo_device *dvo, bool enable) +{ + uint8_t val; + + ch7017_read(dvo, CH7017_LVDS_POWER_DOWN, &val); + + /* Turn off TV/VGA, and never turn it on since we don't support it. */ + ch7017_write(dvo, CH7017_POWER_MANAGEMENT, + CH7017_DAC0_POWER_DOWN | + CH7017_DAC1_POWER_DOWN | + CH7017_DAC2_POWER_DOWN | + CH7017_DAC3_POWER_DOWN | + CH7017_TV_POWER_DOWN_EN); + + if (enable) { + /* Turn on the LVDS */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, + val & ~CH7017_LVDS_POWER_DOWN_EN); + } else { + /* Turn off the LVDS */ + ch7017_write(dvo, CH7017_LVDS_POWER_DOWN, + val | CH7017_LVDS_POWER_DOWN_EN); + } + + /* XXX: Should actually wait for update power status somehow */ + msleep(20); +} + +static bool ch7017_get_hw_state(struct intel_dvo_device *dvo) +{ + uint8_t val; + + ch7017_read(dvo, CH7017_LVDS_POWER_DOWN, &val); + + if (val & CH7017_LVDS_POWER_DOWN_EN) + return false; + else + return true; +} + +static void ch7017_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + +#define DUMP(reg) \ +do { \ + ch7017_read(dvo, reg, &val); \ + DRM_DEBUG_KMS(#reg ": %02x\n", val); \ +} while (0) + + DUMP(CH7017_HORIZONTAL_ACTIVE_PIXEL_INPUT); + DUMP(CH7017_HORIZONTAL_ACTIVE_PIXEL_OUTPUT); + DUMP(CH7017_VERTICAL_ACTIVE_LINE_OUTPUT); + DUMP(CH7017_ACTIVE_INPUT_LINE_OUTPUT); + DUMP(CH7017_LVDS_PLL_VCO_CONTROL); + DUMP(CH7017_LVDS_PLL_FEEDBACK_DIV); + DUMP(CH7017_LVDS_CONTROL_2); + DUMP(CH7017_OUTPUTS_ENABLE); + DUMP(CH7017_LVDS_POWER_DOWN); +} + +static void ch7017_destroy(struct intel_dvo_device *dvo) +{ + struct ch7017_priv *priv = dvo->dev_priv; + + if (priv) { + kfree(priv); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ch7017_ops = { + .init = ch7017_init, + .detect = ch7017_detect, + .mode_valid = ch7017_mode_valid, + .mode_set = ch7017_mode_set, + .dpms = ch7017_dpms, + .get_hw_state = ch7017_get_hw_state, + .dump_regs = ch7017_dump_regs, + .destroy = ch7017_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/intel_ddi.c +++ linux-3.5.0/ubuntu/i915/intel_ddi.c @@ -0,0 +1,1514 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eugeni Dodonov + * + */ + +#include "i915_drv.h" +#include "intel_drv.h" + +/* HDMI/DVI modes ignore everything but the last 2 items. So we share + * them for both DP and FDI transports, allowing those ports to + * automatically adapt to HDMI connections as well + */ +static const u32 hsw_ddi_translations_dp[] = { + 0x00FFFFFF, 0x0006000E, /* DP parameters */ + 0x00D75FFF, 0x0005000A, + 0x00C30FFF, 0x00040006, + 0x80AAAFFF, 0x000B0000, + 0x00FFFFFF, 0x0005000A, + 0x00D75FFF, 0x000C0004, + 0x80C30FFF, 0x000B0000, + 0x00FFFFFF, 0x00040006, + 0x80D75FFF, 0x000B0000, + 0x00FFFFFF, 0x00040006 /* HDMI parameters */ +}; + +static const u32 hsw_ddi_translations_fdi[] = { + 0x00FFFFFF, 0x0007000E, /* FDI parameters */ + 0x00D75FFF, 0x000F000A, + 0x00C30FFF, 0x00060006, + 0x00AAAFFF, 0x001E0000, + 0x00FFFFFF, 0x000F000A, + 0x00D75FFF, 0x00160004, + 0x00C30FFF, 0x001E0000, + 0x00FFFFFF, 0x00060006, + 0x00D75FFF, 0x001E0000, + 0x00FFFFFF, 0x00040006 /* HDMI parameters */ +}; + +static enum port intel_ddi_get_encoder_port(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP || + type == INTEL_OUTPUT_HDMI || type == INTEL_OUTPUT_UNKNOWN) { + struct intel_digital_port *intel_dig_port = + enc_to_dig_port(encoder); + return intel_dig_port->port; + + } else if (type == INTEL_OUTPUT_ANALOG) { + return PORT_E; + + } else { + DRM_ERROR("Invalid DDI encoder type %d\n", type); + BUG(); + } +} + +/* On Haswell, DDI port buffers must be programmed with correct values + * in advance. The buffer values are different for FDI and DP modes, + * but the HDMI/DVI fields are shared among those. So we program the DDI + * in either FDI or DP modes only, as HDMI connections will work with both + * of those + */ +void intel_prepare_ddi_buffers(struct drm_device *dev, enum port port, bool use_fdi_mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 reg; + int i; + const u32 *ddi_translations = ((use_fdi_mode) ? + hsw_ddi_translations_fdi : + hsw_ddi_translations_dp); + + DRM_DEBUG_DRIVER("Initializing DDI buffers for port %c in %s mode\n", + port_name(port), + use_fdi_mode ? "FDI" : "DP"); + + WARN((use_fdi_mode && (port != PORT_E)), + "Programming port %c in FDI mode, this probably will not work.\n", + port_name(port)); + + for (i=0, reg=DDI_BUF_TRANS(port); i < ARRAY_SIZE(hsw_ddi_translations_fdi); i++) { + I915_WRITE(reg, ddi_translations[i]); + reg += 4; + } +} + +/* Program DDI buffers translations for DP. By default, program ports A-D in DP + * mode and port E for FDI. + */ +void intel_prepare_ddi(struct drm_device *dev) +{ + int port; + + if (IS_HASWELL(dev)) { + for (port = PORT_A; port < PORT_E; port++) + intel_prepare_ddi_buffers(dev, port, false); + + /* DDI E is the suggested one to work in FDI mode, so program is as such by + * default. It will have to be re-programmed in case a digital DP output + * will be detected on it + */ + intel_prepare_ddi_buffers(dev, PORT_E, true); + } +} + +static const long hsw_ddi_buf_ctl_values[] = { + DDI_BUF_EMP_400MV_0DB_HSW, + DDI_BUF_EMP_400MV_3_5DB_HSW, + DDI_BUF_EMP_400MV_6DB_HSW, + DDI_BUF_EMP_400MV_9_5DB_HSW, + DDI_BUF_EMP_600MV_0DB_HSW, + DDI_BUF_EMP_600MV_3_5DB_HSW, + DDI_BUF_EMP_600MV_6DB_HSW, + DDI_BUF_EMP_800MV_0DB_HSW, + DDI_BUF_EMP_800MV_3_5DB_HSW +}; + +static void intel_wait_ddi_buf_idle(struct drm_i915_private *dev_priv, + enum port port) +{ + uint32_t reg = DDI_BUF_CTL(port); + int i; + + for (i = 0; i < 8; i++) { + udelay(1); + if (I915_READ(reg) & DDI_BUF_IS_IDLE) + return; + } + DRM_ERROR("Timeout waiting for DDI BUF %c idle bit\n", port_name(port)); +} + +/* Starting with Haswell, different DDI ports can work in FDI mode for + * connection to the PCH-located connectors. For this, it is necessary to train + * both the DDI port and PCH receiver for the desired DDI buffer settings. + * + * The recommended port to work in FDI mode is DDI E, which we use here. Also, + * please note that when FDI mode is active on DDI E, it shares 2 lines with + * DDI A (which is used for eDP) + */ + +void hsw_fdi_link_train(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + u32 temp, i, rx_ctl_val; + + /* Set the FDI_RX_MISC pwrdn lanes and the 2 workarounds listed at the + * mode set "sequence for CRT port" document: + * - TP1 to TP2 time with the default value + * - FDI delay to 90h + */ + I915_WRITE(_FDI_RXA_MISC, FDI_RX_PWRDN_LANE1_VAL(2) | + FDI_RX_PWRDN_LANE0_VAL(2) | + FDI_RX_TP1_TO_TP2_48 | FDI_RX_FDI_DELAY_90); + + /* Enable the PCH Receiver FDI PLL */ + rx_ctl_val = FDI_RX_PLL_ENABLE | FDI_RX_ENHANCE_FRAME_ENABLE | + ((intel_crtc->fdi_lanes - 1) << 19); + if (dev_priv->fdi_rx_polarity_reversed) + rx_ctl_val |= FDI_RX_POLARITY_REVERSED_LPT; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + POSTING_READ(_FDI_RXA_CTL); + udelay(220); + + /* Switch from Rawclk to PCDclk */ + rx_ctl_val |= FDI_PCDCLK; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + + /* Configure Port Clock Select */ + I915_WRITE(PORT_CLK_SEL(PORT_E), intel_crtc->ddi_pll_sel); + + /* Start the training iterating through available voltages and emphasis, + * testing each value twice. */ + for (i = 0; i < ARRAY_SIZE(hsw_ddi_buf_ctl_values) * 2; i++) { + /* Configure DP_TP_CTL with auto-training */ + I915_WRITE(DP_TP_CTL(PORT_E), + DP_TP_CTL_FDI_AUTOTRAIN | + DP_TP_CTL_ENHANCED_FRAME_ENABLE | + DP_TP_CTL_LINK_TRAIN_PAT1 | + DP_TP_CTL_ENABLE); + + /* Configure and enable DDI_BUF_CTL for DDI E with next voltage */ + I915_WRITE(DDI_BUF_CTL(PORT_E), + DDI_BUF_CTL_ENABLE | + ((intel_crtc->fdi_lanes - 1) << 1) | + hsw_ddi_buf_ctl_values[i / 2]); + POSTING_READ(DDI_BUF_CTL(PORT_E)); + + udelay(600); + + /* Program PCH FDI Receiver TU */ + I915_WRITE(_FDI_RXA_TUSIZE1, TU_SIZE(64)); + + /* Enable PCH FDI Receiver with auto-training */ + rx_ctl_val |= FDI_RX_ENABLE | FDI_LINK_TRAIN_AUTO; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + POSTING_READ(_FDI_RXA_CTL); + + /* Wait for FDI receiver lane calibration */ + udelay(30); + + /* Unset FDI_RX_MISC pwrdn lanes */ + temp = I915_READ(_FDI_RXA_MISC); + temp &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + I915_WRITE(_FDI_RXA_MISC, temp); + POSTING_READ(_FDI_RXA_MISC); + + /* Wait for FDI auto training time */ + udelay(5); + + temp = I915_READ(DP_TP_STATUS(PORT_E)); + if (temp & DP_TP_STATUS_AUTOTRAIN_DONE) { + DRM_DEBUG_KMS("FDI link training done on step %d\n", i); + + /* Enable normal pixel sending for FDI */ + I915_WRITE(DP_TP_CTL(PORT_E), + DP_TP_CTL_FDI_AUTOTRAIN | + DP_TP_CTL_LINK_TRAIN_NORMAL | + DP_TP_CTL_ENHANCED_FRAME_ENABLE | + DP_TP_CTL_ENABLE); + + return; + } + + temp = I915_READ(DDI_BUF_CTL(PORT_E)); + temp &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(PORT_E), temp); + POSTING_READ(DDI_BUF_CTL(PORT_E)); + + /* Disable DP_TP_CTL and FDI_RX_CTL and retry */ + temp = I915_READ(DP_TP_CTL(PORT_E)); + temp &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + temp |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(PORT_E), temp); + POSTING_READ(DP_TP_CTL(PORT_E)); + + intel_wait_ddi_buf_idle(dev_priv, PORT_E); + + rx_ctl_val &= ~FDI_RX_ENABLE; + I915_WRITE(_FDI_RXA_CTL, rx_ctl_val); + POSTING_READ(_FDI_RXA_CTL); + + /* Reset FDI_RX_MISC pwrdn lanes */ + temp = I915_READ(_FDI_RXA_MISC); + temp &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + temp |= FDI_RX_PWRDN_LANE1_VAL(2) | FDI_RX_PWRDN_LANE0_VAL(2); + I915_WRITE(_FDI_RXA_MISC, temp); + POSTING_READ(_FDI_RXA_MISC); + } + + DRM_ERROR("FDI link training failed!\n"); +} + +/* WRPLL clock dividers */ +struct wrpll_tmds_clock { + u32 clock; + u16 p; /* Post divider */ + u16 n2; /* Feedback divider */ + u16 r2; /* Reference divider */ +}; + +/* Table of matching values for WRPLL clocks programming for each frequency. + * The code assumes this table is sorted. */ +static const struct wrpll_tmds_clock wrpll_tmds_clock_table[] = { + {19750, 38, 25, 18}, + {20000, 48, 32, 18}, + {21000, 36, 21, 15}, + {21912, 42, 29, 17}, + {22000, 36, 22, 15}, + {23000, 36, 23, 15}, + {23500, 40, 40, 23}, + {23750, 26, 16, 14}, + {24000, 36, 24, 15}, + {25000, 36, 25, 15}, + {25175, 26, 40, 33}, + {25200, 30, 21, 15}, + {26000, 36, 26, 15}, + {27000, 30, 21, 14}, + {27027, 18, 100, 111}, + {27500, 30, 29, 19}, + {28000, 34, 30, 17}, + {28320, 26, 30, 22}, + {28322, 32, 42, 25}, + {28750, 24, 23, 18}, + {29000, 30, 29, 18}, + {29750, 32, 30, 17}, + {30000, 30, 25, 15}, + {30750, 30, 41, 24}, + {31000, 30, 31, 18}, + {31500, 30, 28, 16}, + {32000, 30, 32, 18}, + {32500, 28, 32, 19}, + {33000, 24, 22, 15}, + {34000, 28, 30, 17}, + {35000, 26, 32, 19}, + {35500, 24, 30, 19}, + {36000, 26, 26, 15}, + {36750, 26, 46, 26}, + {37000, 24, 23, 14}, + {37762, 22, 40, 26}, + {37800, 20, 21, 15}, + {38000, 24, 27, 16}, + {38250, 24, 34, 20}, + {39000, 24, 26, 15}, + {40000, 24, 32, 18}, + {40500, 20, 21, 14}, + {40541, 22, 147, 89}, + {40750, 18, 19, 14}, + {41000, 16, 17, 14}, + {41500, 22, 44, 26}, + {41540, 22, 44, 26}, + {42000, 18, 21, 15}, + {42500, 22, 45, 26}, + {43000, 20, 43, 27}, + {43163, 20, 24, 15}, + {44000, 18, 22, 15}, + {44900, 20, 108, 65}, + {45000, 20, 25, 15}, + {45250, 20, 52, 31}, + {46000, 18, 23, 15}, + {46750, 20, 45, 26}, + {47000, 20, 40, 23}, + {48000, 18, 24, 15}, + {49000, 18, 49, 30}, + {49500, 16, 22, 15}, + {50000, 18, 25, 15}, + {50500, 18, 32, 19}, + {51000, 18, 34, 20}, + {52000, 18, 26, 15}, + {52406, 14, 34, 25}, + {53000, 16, 22, 14}, + {54000, 16, 24, 15}, + {54054, 16, 173, 108}, + {54500, 14, 24, 17}, + {55000, 12, 22, 18}, + {56000, 14, 45, 31}, + {56250, 16, 25, 15}, + {56750, 14, 25, 17}, + {57000, 16, 27, 16}, + {58000, 16, 43, 25}, + {58250, 16, 38, 22}, + {58750, 16, 40, 23}, + {59000, 14, 26, 17}, + {59341, 14, 40, 26}, + {59400, 16, 44, 25}, + {60000, 16, 32, 18}, + {60500, 12, 39, 29}, + {61000, 14, 49, 31}, + {62000, 14, 37, 23}, + {62250, 14, 42, 26}, + {63000, 12, 21, 15}, + {63500, 14, 28, 17}, + {64000, 12, 27, 19}, + {65000, 14, 32, 19}, + {65250, 12, 29, 20}, + {65500, 12, 32, 22}, + {66000, 12, 22, 15}, + {66667, 14, 38, 22}, + {66750, 10, 21, 17}, + {67000, 14, 33, 19}, + {67750, 14, 58, 33}, + {68000, 14, 30, 17}, + {68179, 14, 46, 26}, + {68250, 14, 46, 26}, + {69000, 12, 23, 15}, + {70000, 12, 28, 18}, + {71000, 12, 30, 19}, + {72000, 12, 24, 15}, + {73000, 10, 23, 17}, + {74000, 12, 23, 14}, + {74176, 8, 100, 91}, + {74250, 10, 22, 16}, + {74481, 12, 43, 26}, + {74500, 10, 29, 21}, + {75000, 12, 25, 15}, + {75250, 10, 39, 28}, + {76000, 12, 27, 16}, + {77000, 12, 53, 31}, + {78000, 12, 26, 15}, + {78750, 12, 28, 16}, + {79000, 10, 38, 26}, + {79500, 10, 28, 19}, + {80000, 12, 32, 18}, + {81000, 10, 21, 14}, + {81081, 6, 100, 111}, + {81624, 8, 29, 24}, + {82000, 8, 17, 14}, + {83000, 10, 40, 26}, + {83950, 10, 28, 18}, + {84000, 10, 28, 18}, + {84750, 6, 16, 17}, + {85000, 6, 17, 18}, + {85250, 10, 30, 19}, + {85750, 10, 27, 17}, + {86000, 10, 43, 27}, + {87000, 10, 29, 18}, + {88000, 10, 44, 27}, + {88500, 10, 41, 25}, + {89000, 10, 28, 17}, + {89012, 6, 90, 91}, + {89100, 10, 33, 20}, + {90000, 10, 25, 15}, + {91000, 10, 32, 19}, + {92000, 10, 46, 27}, + {93000, 10, 31, 18}, + {94000, 10, 40, 23}, + {94500, 10, 28, 16}, + {95000, 10, 44, 25}, + {95654, 10, 39, 22}, + {95750, 10, 39, 22}, + {96000, 10, 32, 18}, + {97000, 8, 23, 16}, + {97750, 8, 42, 29}, + {98000, 8, 45, 31}, + {99000, 8, 22, 15}, + {99750, 8, 34, 23}, + {100000, 6, 20, 18}, + {100500, 6, 19, 17}, + {101000, 6, 37, 33}, + {101250, 8, 21, 14}, + {102000, 6, 17, 15}, + {102250, 6, 25, 22}, + {103000, 8, 29, 19}, + {104000, 8, 37, 24}, + {105000, 8, 28, 18}, + {106000, 8, 22, 14}, + {107000, 8, 46, 29}, + {107214, 8, 27, 17}, + {108000, 8, 24, 15}, + {108108, 8, 173, 108}, + {109000, 6, 23, 19}, + {110000, 6, 22, 18}, + {110013, 6, 22, 18}, + {110250, 8, 49, 30}, + {110500, 8, 36, 22}, + {111000, 8, 23, 14}, + {111264, 8, 150, 91}, + {111375, 8, 33, 20}, + {112000, 8, 63, 38}, + {112500, 8, 25, 15}, + {113100, 8, 57, 34}, + {113309, 8, 42, 25}, + {114000, 8, 27, 16}, + {115000, 6, 23, 18}, + {116000, 8, 43, 25}, + {117000, 8, 26, 15}, + {117500, 8, 40, 23}, + {118000, 6, 38, 29}, + {119000, 8, 30, 17}, + {119500, 8, 46, 26}, + {119651, 8, 39, 22}, + {120000, 8, 32, 18}, + {121000, 6, 39, 29}, + {121250, 6, 31, 23}, + {121750, 6, 23, 17}, + {122000, 6, 42, 31}, + {122614, 6, 30, 22}, + {123000, 6, 41, 30}, + {123379, 6, 37, 27}, + {124000, 6, 51, 37}, + {125000, 6, 25, 18}, + {125250, 4, 13, 14}, + {125750, 4, 27, 29}, + {126000, 6, 21, 15}, + {127000, 6, 24, 17}, + {127250, 6, 41, 29}, + {128000, 6, 27, 19}, + {129000, 6, 43, 30}, + {129859, 4, 25, 26}, + {130000, 6, 26, 18}, + {130250, 6, 42, 29}, + {131000, 6, 32, 22}, + {131500, 6, 38, 26}, + {131850, 6, 41, 28}, + {132000, 6, 22, 15}, + {132750, 6, 28, 19}, + {133000, 6, 34, 23}, + {133330, 6, 37, 25}, + {134000, 6, 61, 41}, + {135000, 6, 21, 14}, + {135250, 6, 167, 111}, + {136000, 6, 62, 41}, + {137000, 6, 35, 23}, + {138000, 6, 23, 15}, + {138500, 6, 40, 26}, + {138750, 6, 37, 24}, + {139000, 6, 34, 22}, + {139050, 6, 34, 22}, + {139054, 6, 34, 22}, + {140000, 6, 28, 18}, + {141000, 6, 36, 23}, + {141500, 6, 22, 14}, + {142000, 6, 30, 19}, + {143000, 6, 27, 17}, + {143472, 4, 17, 16}, + {144000, 6, 24, 15}, + {145000, 6, 29, 18}, + {146000, 6, 47, 29}, + {146250, 6, 26, 16}, + {147000, 6, 49, 30}, + {147891, 6, 23, 14}, + {148000, 6, 23, 14}, + {148250, 6, 28, 17}, + {148352, 4, 100, 91}, + {148500, 6, 33, 20}, + {149000, 6, 48, 29}, + {150000, 6, 25, 15}, + {151000, 4, 19, 17}, + {152000, 6, 27, 16}, + {152280, 6, 44, 26}, + {153000, 6, 34, 20}, + {154000, 6, 53, 31}, + {155000, 6, 31, 18}, + {155250, 6, 50, 29}, + {155750, 6, 45, 26}, + {156000, 6, 26, 15}, + {157000, 6, 61, 35}, + {157500, 6, 28, 16}, + {158000, 6, 65, 37}, + {158250, 6, 44, 25}, + {159000, 6, 53, 30}, + {159500, 6, 39, 22}, + {160000, 6, 32, 18}, + {161000, 4, 31, 26}, + {162000, 4, 18, 15}, + {162162, 4, 131, 109}, + {162500, 4, 53, 44}, + {163000, 4, 29, 24}, + {164000, 4, 17, 14}, + {165000, 4, 22, 18}, + {166000, 4, 32, 26}, + {167000, 4, 26, 21}, + {168000, 4, 46, 37}, + {169000, 4, 104, 83}, + {169128, 4, 64, 51}, + {169500, 4, 39, 31}, + {170000, 4, 34, 27}, + {171000, 4, 19, 15}, + {172000, 4, 51, 40}, + {172750, 4, 32, 25}, + {172800, 4, 32, 25}, + {173000, 4, 41, 32}, + {174000, 4, 49, 38}, + {174787, 4, 22, 17}, + {175000, 4, 35, 27}, + {176000, 4, 30, 23}, + {177000, 4, 38, 29}, + {178000, 4, 29, 22}, + {178500, 4, 37, 28}, + {179000, 4, 53, 40}, + {179500, 4, 73, 55}, + {180000, 4, 20, 15}, + {181000, 4, 55, 41}, + {182000, 4, 31, 23}, + {183000, 4, 42, 31}, + {184000, 4, 30, 22}, + {184750, 4, 26, 19}, + {185000, 4, 37, 27}, + {186000, 4, 51, 37}, + {187000, 4, 36, 26}, + {188000, 4, 32, 23}, + {189000, 4, 21, 15}, + {190000, 4, 38, 27}, + {190960, 4, 41, 29}, + {191000, 4, 41, 29}, + {192000, 4, 27, 19}, + {192250, 4, 37, 26}, + {193000, 4, 20, 14}, + {193250, 4, 53, 37}, + {194000, 4, 23, 16}, + {194208, 4, 23, 16}, + {195000, 4, 26, 18}, + {196000, 4, 45, 31}, + {197000, 4, 35, 24}, + {197750, 4, 41, 28}, + {198000, 4, 22, 15}, + {198500, 4, 25, 17}, + {199000, 4, 28, 19}, + {200000, 4, 37, 25}, + {201000, 4, 61, 41}, + {202000, 4, 112, 75}, + {202500, 4, 21, 14}, + {203000, 4, 146, 97}, + {204000, 4, 62, 41}, + {204750, 4, 44, 29}, + {205000, 4, 38, 25}, + {206000, 4, 29, 19}, + {207000, 4, 23, 15}, + {207500, 4, 40, 26}, + {208000, 4, 37, 24}, + {208900, 4, 48, 31}, + {209000, 4, 48, 31}, + {209250, 4, 31, 20}, + {210000, 4, 28, 18}, + {211000, 4, 25, 16}, + {212000, 4, 22, 14}, + {213000, 4, 30, 19}, + {213750, 4, 38, 24}, + {214000, 4, 46, 29}, + {214750, 4, 35, 22}, + {215000, 4, 43, 27}, + {216000, 4, 24, 15}, + {217000, 4, 37, 23}, + {218000, 4, 42, 26}, + {218250, 4, 42, 26}, + {218750, 4, 34, 21}, + {219000, 4, 47, 29}, + {220000, 4, 44, 27}, + {220640, 4, 49, 30}, + {220750, 4, 36, 22}, + {221000, 4, 36, 22}, + {222000, 4, 23, 14}, + {222525, 4, 28, 17}, + {222750, 4, 33, 20}, + {227000, 4, 37, 22}, + {230250, 4, 29, 17}, + {233500, 4, 38, 22}, + {235000, 4, 40, 23}, + {238000, 4, 30, 17}, + {241500, 2, 17, 19}, + {245250, 2, 20, 22}, + {247750, 2, 22, 24}, + {253250, 2, 15, 16}, + {256250, 2, 18, 19}, + {262500, 2, 31, 32}, + {267250, 2, 66, 67}, + {268500, 2, 94, 95}, + {270000, 2, 14, 14}, + {272500, 2, 77, 76}, + {273750, 2, 57, 56}, + {280750, 2, 24, 23}, + {281250, 2, 23, 22}, + {286000, 2, 17, 16}, + {291750, 2, 26, 24}, + {296703, 2, 56, 51}, + {297000, 2, 22, 20}, + {298000, 2, 21, 19}, +}; + +static void intel_ddi_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + int port = intel_ddi_get_encoder_port(intel_encoder); + int pipe = intel_crtc->pipe; + int type = intel_encoder->type; + + DRM_DEBUG_KMS("Preparing DDI mode for Haswell on port %c, pipe %c\n", + port_name(port), pipe_name(pipe)); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + intel_dp->DP = DDI_BUF_CTL_ENABLE | DDI_BUF_EMP_400MV_0DB_HSW; + switch (intel_dp->lane_count) { + case 1: + intel_dp->DP |= DDI_PORT_WIDTH_X1; + break; + case 2: + intel_dp->DP |= DDI_PORT_WIDTH_X2; + break; + case 4: + intel_dp->DP |= DDI_PORT_WIDTH_X4; + break; + default: + intel_dp->DP |= DDI_PORT_WIDTH_X4; + WARN(1, "Unexpected DP lane count %d\n", + intel_dp->lane_count); + break; + } + + if (intel_dp->has_audio) { + DRM_DEBUG_DRIVER("DP audio on pipe %c on DDI\n", + pipe_name(intel_crtc->pipe)); + + /* write eld */ + DRM_DEBUG_DRIVER("DP audio: write eld information\n"); + intel_write_eld(encoder, adjusted_mode); + } + + intel_dp_init_link_config(intel_dp); + + } else if (type == INTEL_OUTPUT_HDMI) { + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + if (intel_hdmi->has_audio) { + /* Proper support for digital audio needs a new logic + * and a new set of registers, so we leave it for future + * patch bombing. + */ + DRM_DEBUG_DRIVER("HDMI audio on pipe %c on DDI\n", + pipe_name(intel_crtc->pipe)); + + /* write eld */ + DRM_DEBUG_DRIVER("HDMI audio: write eld information\n"); + intel_write_eld(encoder, adjusted_mode); + } + + intel_hdmi->set_infoframes(encoder, adjusted_mode); + } +} + +static struct intel_encoder * +intel_ddi_get_crtc_encoder(struct drm_crtc *crtc) +{ + struct drm_device *dev = crtc->dev; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder, *ret = NULL; + int num_encoders = 0; + + for_each_encoder_on_crtc(dev, crtc, intel_encoder) { + ret = intel_encoder; + num_encoders++; + } + + if (num_encoders != 1) + WARN(1, "%d encoders on crtc for pipe %d\n", num_encoders, + intel_crtc->pipe); + + BUG_ON(ret == NULL); + return ret; +} + +void intel_ddi_put_crtc_pll(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_ddi_plls *plls = &dev_priv->ddi_plls; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + uint32_t val; + + switch (intel_crtc->ddi_pll_sel) { + case PORT_CLK_SEL_SPLL: + plls->spll_refcount--; + if (plls->spll_refcount == 0) { + DRM_DEBUG_KMS("Disabling SPLL\n"); + val = I915_READ(SPLL_CTL); + WARN_ON(!(val & SPLL_PLL_ENABLE)); + I915_WRITE(SPLL_CTL, val & ~SPLL_PLL_ENABLE); + POSTING_READ(SPLL_CTL); + } + break; + case PORT_CLK_SEL_WRPLL1: + plls->wrpll1_refcount--; + if (plls->wrpll1_refcount == 0) { + DRM_DEBUG_KMS("Disabling WRPLL 1\n"); + val = I915_READ(WRPLL_CTL1); + WARN_ON(!(val & WRPLL_PLL_ENABLE)); + I915_WRITE(WRPLL_CTL1, val & ~WRPLL_PLL_ENABLE); + POSTING_READ(WRPLL_CTL1); + } + break; + case PORT_CLK_SEL_WRPLL2: + plls->wrpll2_refcount--; + if (plls->wrpll2_refcount == 0) { + DRM_DEBUG_KMS("Disabling WRPLL 2\n"); + val = I915_READ(WRPLL_CTL2); + WARN_ON(!(val & WRPLL_PLL_ENABLE)); + I915_WRITE(WRPLL_CTL2, val & ~WRPLL_PLL_ENABLE); + POSTING_READ(WRPLL_CTL2); + } + break; + } + + WARN(plls->spll_refcount < 0, "Invalid SPLL refcount\n"); + WARN(plls->wrpll1_refcount < 0, "Invalid WRPLL1 refcount\n"); + WARN(plls->wrpll2_refcount < 0, "Invalid WRPLL2 refcount\n"); + + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_NONE; +} + +static void intel_ddi_calculate_wrpll(int clock, int *p, int *n2, int *r2) +{ + u32 i; + + for (i = 0; i < ARRAY_SIZE(wrpll_tmds_clock_table); i++) + if (clock <= wrpll_tmds_clock_table[i].clock) + break; + + if (i == ARRAY_SIZE(wrpll_tmds_clock_table)) + i--; + + *p = wrpll_tmds_clock_table[i].p; + *n2 = wrpll_tmds_clock_table[i].n2; + *r2 = wrpll_tmds_clock_table[i].r2; + + if (wrpll_tmds_clock_table[i].clock != clock) + DRM_INFO("WRPLL: using settings for %dKHz on %dKHz mode\n", + wrpll_tmds_clock_table[i].clock, clock); + + DRM_DEBUG_KMS("WRPLL: %dKHz refresh rate with p=%d, n2=%d r2=%d\n", + clock, *p, *n2, *r2); +} + +bool intel_ddi_pll_mode_set(struct drm_crtc *crtc, int clock) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_ddi_plls *plls = &dev_priv->ddi_plls; + int type = intel_encoder->type; + enum pipe pipe = intel_crtc->pipe; + uint32_t reg, val; + + /* TODO: reuse PLLs when possible (compare values) */ + + intel_ddi_put_crtc_pll(crtc); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + switch (intel_dp->link_bw) { + case DP_LINK_BW_1_62: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_810; + break; + case DP_LINK_BW_2_7: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_1350; + break; + case DP_LINK_BW_5_4: + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_LCPLL_2700; + break; + default: + DRM_ERROR("Link bandwidth %d unsupported\n", + intel_dp->link_bw); + return false; + } + + /* We don't need to turn any PLL on because we'll use LCPLL. */ + return true; + + } else if (type == INTEL_OUTPUT_HDMI) { + int p, n2, r2; + + if (plls->wrpll1_refcount == 0) { + DRM_DEBUG_KMS("Using WRPLL 1 on pipe %c\n", + pipe_name(pipe)); + plls->wrpll1_refcount++; + reg = WRPLL_CTL1; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_WRPLL1; + } else if (plls->wrpll2_refcount == 0) { + DRM_DEBUG_KMS("Using WRPLL 2 on pipe %c\n", + pipe_name(pipe)); + plls->wrpll2_refcount++; + reg = WRPLL_CTL2; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_WRPLL2; + } else { + DRM_ERROR("No WRPLLs available!\n"); + return false; + } + + WARN(I915_READ(reg) & WRPLL_PLL_ENABLE, + "WRPLL already enabled\n"); + + intel_ddi_calculate_wrpll(clock, &p, &n2, &r2); + + val = WRPLL_PLL_ENABLE | WRPLL_PLL_SELECT_LCPLL_2700 | + WRPLL_DIVIDER_REFERENCE(r2) | WRPLL_DIVIDER_FEEDBACK(n2) | + WRPLL_DIVIDER_POST(p); + + } else if (type == INTEL_OUTPUT_ANALOG) { + if (plls->spll_refcount == 0) { + DRM_DEBUG_KMS("Using SPLL on pipe %c\n", + pipe_name(pipe)); + plls->spll_refcount++; + reg = SPLL_CTL; + intel_crtc->ddi_pll_sel = PORT_CLK_SEL_SPLL; + } + + WARN(I915_READ(reg) & SPLL_PLL_ENABLE, + "SPLL already enabled\n"); + + val = SPLL_PLL_ENABLE | SPLL_PLL_FREQ_1350MHz | SPLL_PLL_SSC; + + } else { + WARN(1, "Invalid DDI encoder type %d\n", type); + return false; + } + + I915_WRITE(reg, val); + udelay(20); + + return true; +} + +void intel_ddi_set_pipe_settings(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + int type = intel_encoder->type; + uint32_t temp; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + + temp = TRANS_MSA_SYNC_CLK; + switch (intel_crtc->bpp) { + case 18: + temp |= TRANS_MSA_6_BPC; + break; + case 24: + temp |= TRANS_MSA_8_BPC; + break; + case 30: + temp |= TRANS_MSA_10_BPC; + break; + case 36: + temp |= TRANS_MSA_12_BPC; + break; + default: + temp |= TRANS_MSA_8_BPC; + WARN(1, "%d bpp unsupported by DDI function\n", + intel_crtc->bpp); + } + I915_WRITE(TRANS_MSA_MISC(cpu_transcoder), temp); + } +} + +void intel_ddi_enable_pipe_func(struct drm_crtc *crtc) +{ + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + enum pipe pipe = intel_crtc->pipe; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + uint32_t temp; + + /* Enable TRANS_DDI_FUNC_CTL for the pipe to work in HDMI mode */ + temp = TRANS_DDI_FUNC_ENABLE; + temp |= TRANS_DDI_SELECT_PORT(port); + + switch (intel_crtc->bpp) { + case 18: + temp |= TRANS_DDI_BPC_6; + break; + case 24: + temp |= TRANS_DDI_BPC_8; + break; + case 30: + temp |= TRANS_DDI_BPC_10; + break; + case 36: + temp |= TRANS_DDI_BPC_12; + break; + default: + WARN(1, "%d bpp unsupported by transcoder DDI function\n", + intel_crtc->bpp); + } + + if (crtc->mode.flags & DRM_MODE_FLAG_PVSYNC) + temp |= TRANS_DDI_PVSYNC; + if (crtc->mode.flags & DRM_MODE_FLAG_PHSYNC) + temp |= TRANS_DDI_PHSYNC; + + if (cpu_transcoder == TRANSCODER_EDP) { + switch (pipe) { + case PIPE_A: + temp |= TRANS_DDI_EDP_INPUT_A_ONOFF; + break; + case PIPE_B: + temp |= TRANS_DDI_EDP_INPUT_B_ONOFF; + break; + case PIPE_C: + temp |= TRANS_DDI_EDP_INPUT_C_ONOFF; + break; + default: + BUG(); + break; + } + } + + if (type == INTEL_OUTPUT_HDMI) { + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + if (intel_hdmi->has_hdmi_sink) + temp |= TRANS_DDI_MODE_SELECT_HDMI; + else + temp |= TRANS_DDI_MODE_SELECT_DVI; + + } else if (type == INTEL_OUTPUT_ANALOG) { + temp |= TRANS_DDI_MODE_SELECT_FDI; + temp |= (intel_crtc->fdi_lanes - 1) << 1; + + } else if (type == INTEL_OUTPUT_DISPLAYPORT || + type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + temp |= TRANS_DDI_MODE_SELECT_DP_SST; + + switch (intel_dp->lane_count) { + case 1: + temp |= TRANS_DDI_PORT_WIDTH_X1; + break; + case 2: + temp |= TRANS_DDI_PORT_WIDTH_X2; + break; + case 4: + temp |= TRANS_DDI_PORT_WIDTH_X4; + break; + default: + temp |= TRANS_DDI_PORT_WIDTH_X4; + WARN(1, "Unsupported lane count %d\n", + intel_dp->lane_count); + } + + } else { + WARN(1, "Invalid encoder type %d for pipe %d\n", + intel_encoder->type, pipe); + } + + I915_WRITE(TRANS_DDI_FUNC_CTL(cpu_transcoder), temp); +} + +void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv, + enum transcoder cpu_transcoder) +{ + uint32_t reg = TRANS_DDI_FUNC_CTL(cpu_transcoder); + uint32_t val = I915_READ(reg); + + val &= ~(TRANS_DDI_FUNC_ENABLE | TRANS_DDI_PORT_MASK); + val |= TRANS_DDI_PORT_NONE; + I915_WRITE(reg, val); +} + +bool intel_ddi_connector_get_hw_state(struct intel_connector *intel_connector) +{ + struct drm_device *dev = intel_connector->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder = intel_connector->encoder; + int type = intel_connector->base.connector_type; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + enum pipe pipe = 0; + enum transcoder cpu_transcoder; + uint32_t tmp; + + if (!intel_encoder->get_hw_state(intel_encoder, &pipe)) + return false; + + if (port == PORT_A) + cpu_transcoder = TRANSCODER_EDP; + else + cpu_transcoder = pipe; + + tmp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); + + switch (tmp & TRANS_DDI_MODE_SELECT_MASK) { + case TRANS_DDI_MODE_SELECT_HDMI: + case TRANS_DDI_MODE_SELECT_DVI: + return (type == DRM_MODE_CONNECTOR_HDMIA); + + case TRANS_DDI_MODE_SELECT_DP_SST: + if (type == DRM_MODE_CONNECTOR_eDP) + return true; + case TRANS_DDI_MODE_SELECT_DP_MST: + return (type == DRM_MODE_CONNECTOR_DisplayPort); + + case TRANS_DDI_MODE_SELECT_FDI: + return (type == DRM_MODE_CONNECTOR_VGA); + + default: + return false; + } +} + +bool intel_ddi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_ddi_get_encoder_port(encoder); + u32 tmp; + int i; + + tmp = I915_READ(DDI_BUF_CTL(port)); + + if (!(tmp & DDI_BUF_CTL_ENABLE)) + return false; + + if (port == PORT_A) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(TRANSCODER_EDP)); + + switch (tmp & TRANS_DDI_EDP_INPUT_MASK) { + case TRANS_DDI_EDP_INPUT_A_ON: + case TRANS_DDI_EDP_INPUT_A_ONOFF: + *pipe = PIPE_A; + break; + case TRANS_DDI_EDP_INPUT_B_ONOFF: + *pipe = PIPE_B; + break; + case TRANS_DDI_EDP_INPUT_C_ONOFF: + *pipe = PIPE_C; + break; + } + + return true; + } else { + for (i = TRANSCODER_A; i <= TRANSCODER_C; i++) { + tmp = I915_READ(TRANS_DDI_FUNC_CTL(i)); + + if ((tmp & TRANS_DDI_PORT_MASK) + == TRANS_DDI_SELECT_PORT(port)) { + *pipe = i; + return true; + } + } + } + + DRM_DEBUG_KMS("No pipe for ddi port %i found\n", port); + + return true; +} + +static uint32_t intel_ddi_get_crtc_pll(struct drm_i915_private *dev_priv, + enum pipe pipe) +{ + uint32_t temp, ret; + enum port port; + enum transcoder cpu_transcoder = intel_pipe_to_cpu_transcoder(dev_priv, + pipe); + int i; + + if (cpu_transcoder == TRANSCODER_EDP) { + port = PORT_A; + } else { + temp = I915_READ(TRANS_DDI_FUNC_CTL(cpu_transcoder)); + temp &= TRANS_DDI_PORT_MASK; + + for (i = PORT_B; i <= PORT_E; i++) + if (temp == TRANS_DDI_SELECT_PORT(i)) + port = i; + } + + ret = I915_READ(PORT_CLK_SEL(port)); + + DRM_DEBUG_KMS("Pipe %c connected to port %c using clock 0x%08x\n", + pipe_name(pipe), port_name(port), ret); + + return ret; +} + +void intel_ddi_setup_hw_pll_state(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + enum pipe pipe; + struct intel_crtc *intel_crtc; + + for_each_pipe(pipe) { + intel_crtc = + to_intel_crtc(dev_priv->pipe_to_crtc_mapping[pipe]); + + if (!intel_crtc->active) + continue; + + intel_crtc->ddi_pll_sel = intel_ddi_get_crtc_pll(dev_priv, + pipe); + + switch (intel_crtc->ddi_pll_sel) { + case PORT_CLK_SEL_SPLL: + dev_priv->ddi_plls.spll_refcount++; + break; + case PORT_CLK_SEL_WRPLL1: + dev_priv->ddi_plls.wrpll1_refcount++; + break; + case PORT_CLK_SEL_WRPLL2: + dev_priv->ddi_plls.wrpll2_refcount++; + break; + } + } +} + +void intel_ddi_enable_pipe_clock(struct intel_crtc *intel_crtc) +{ + struct drm_crtc *crtc = &intel_crtc->base; + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + enum port port = intel_ddi_get_encoder_port(intel_encoder); + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + if (cpu_transcoder != TRANSCODER_EDP) + I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), + TRANS_CLK_SEL_PORT(port)); +} + +void intel_ddi_disable_pipe_clock(struct intel_crtc *intel_crtc) +{ + struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; + enum transcoder cpu_transcoder = intel_crtc->cpu_transcoder; + + if (cpu_transcoder != TRANSCODER_EDP) + I915_WRITE(TRANS_CLK_SEL(cpu_transcoder), + TRANS_CLK_SEL_DISABLED); +} + +static void intel_ddi_pre_enable(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_crtc *crtc = encoder->crtc; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_panel_on(intel_dp); + ironlake_edp_panel_vdd_off(intel_dp, true); + } + + WARN_ON(intel_crtc->ddi_pll_sel == PORT_CLK_SEL_NONE); + I915_WRITE(PORT_CLK_SEL(port), intel_crtc->ddi_pll_sel); + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + intel_dp_start_link_train(intel_dp); + intel_dp_complete_link_train(intel_dp); + } +} + +static void intel_ddi_post_disable(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + uint32_t val; + bool wait = false; + + val = I915_READ(DDI_BUF_CTL(port)); + if (val & DDI_BUF_CTL_ENABLE) { + val &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), val); + wait = true; + } + + val = I915_READ(DP_TP_CTL(port)); + val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + val |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(port), val); + + if (wait) + intel_wait_ddi_buf_idle(dev_priv, port); + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + ironlake_edp_panel_vdd_on(intel_dp); + ironlake_edp_panel_off(intel_dp); + } + + I915_WRITE(PORT_CLK_SEL(port), PORT_CLK_SEL_NONE); +} + +static void intel_enable_ddi(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_ddi_get_encoder_port(intel_encoder); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_HDMI) { + /* In HDMI/DVI mode, the port width, and swing/emphasis values + * are ignored so nothing special needs to be done besides + * enabling the port. + */ + I915_WRITE(DDI_BUF_CTL(port), DDI_BUF_CTL_ENABLE); + } else if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + ironlake_edp_backlight_on(intel_dp); + } +} + +static void intel_disable_ddi(struct intel_encoder *intel_encoder) +{ + struct drm_encoder *encoder = &intel_encoder->base; + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_EDP) { + struct intel_dp *intel_dp = enc_to_intel_dp(encoder); + + ironlake_edp_backlight_off(intel_dp); + } +} + +int intel_ddi_get_cdclk_freq(struct drm_i915_private *dev_priv) +{ + if (I915_READ(HSW_FUSE_STRAP) & HSW_CDCLK_LIMIT) + return 450; + else if ((I915_READ(LCPLL_CTL) & LCPLL_CLK_FREQ_MASK) == + LCPLL_CLK_FREQ_450) + return 450; + else if (IS_ULT(dev_priv->dev)) + return 338; + else + return 540; +} + +void intel_ddi_pll_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t val = I915_READ(LCPLL_CTL); + + /* The LCPLL register should be turned on by the BIOS. For now let's + * just check its state and print errors in case something is wrong. + * Don't even try to turn it on. + */ + + DRM_DEBUG_KMS("CDCLK running at %dMHz\n", + intel_ddi_get_cdclk_freq(dev_priv)); + + if (val & LCPLL_CD_SOURCE_FCLK) + DRM_ERROR("CDCLK source is not LCPLL\n"); + + if (val & LCPLL_PLL_DISABLE) + DRM_ERROR("LCPLL is disabled\n"); +} + +void intel_ddi_prepare_link_retrain(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder); + struct intel_dp *intel_dp = &intel_dig_port->dp; + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + enum port port = intel_dig_port->port; + bool wait; + uint32_t val; + + if (I915_READ(DP_TP_CTL(port)) & DP_TP_CTL_ENABLE) { + val = I915_READ(DDI_BUF_CTL(port)); + if (val & DDI_BUF_CTL_ENABLE) { + val &= ~DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), val); + wait = true; + } + + val = I915_READ(DP_TP_CTL(port)); + val &= ~(DP_TP_CTL_ENABLE | DP_TP_CTL_LINK_TRAIN_MASK); + val |= DP_TP_CTL_LINK_TRAIN_PAT1; + I915_WRITE(DP_TP_CTL(port), val); + POSTING_READ(DP_TP_CTL(port)); + + if (wait) + intel_wait_ddi_buf_idle(dev_priv, port); + } + + val = DP_TP_CTL_ENABLE | DP_TP_CTL_MODE_SST | + DP_TP_CTL_LINK_TRAIN_PAT1 | DP_TP_CTL_SCRAMBLE_DISABLE; + if (intel_dp->link_configuration[1] & DP_LANE_COUNT_ENHANCED_FRAME_EN) + val |= DP_TP_CTL_ENHANCED_FRAME_ENABLE; + I915_WRITE(DP_TP_CTL(port), val); + POSTING_READ(DP_TP_CTL(port)); + + intel_dp->DP |= DDI_BUF_CTL_ENABLE; + I915_WRITE(DDI_BUF_CTL(port), intel_dp->DP); + POSTING_READ(DDI_BUF_CTL(port)); + + udelay(600); +} + +void intel_ddi_fdi_disable(struct drm_crtc *crtc) +{ + struct drm_i915_private *dev_priv = crtc->dev->dev_private; + struct intel_encoder *intel_encoder = intel_ddi_get_crtc_encoder(crtc); + uint32_t val; + + intel_ddi_post_disable(intel_encoder); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_RX_ENABLE; + I915_WRITE(_FDI_RXA_CTL, val); + + val = I915_READ(_FDI_RXA_MISC); + val &= ~(FDI_RX_PWRDN_LANE1_MASK | FDI_RX_PWRDN_LANE0_MASK); + val |= FDI_RX_PWRDN_LANE1_VAL(2) | FDI_RX_PWRDN_LANE0_VAL(2); + I915_WRITE(_FDI_RXA_MISC, val); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_PCDCLK; + I915_WRITE(_FDI_RXA_CTL, val); + + val = I915_READ(_FDI_RXA_CTL); + val &= ~FDI_RX_PLL_ENABLE; + I915_WRITE(_FDI_RXA_CTL, val); +} + +static void intel_ddi_hot_plug(struct intel_encoder *intel_encoder) +{ + struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); + int type = intel_encoder->type; + + if (type == INTEL_OUTPUT_DISPLAYPORT || type == INTEL_OUTPUT_EDP) + intel_dp_check_link_status(intel_dp); +} + +static void intel_ddi_destroy(struct drm_encoder *encoder) +{ + /* HDMI has nothing special to destroy, so we can go with this. */ + intel_dp_encoder_destroy(encoder); +} + +static bool intel_ddi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + int type = intel_encoder->type; + + WARN(type == INTEL_OUTPUT_UNKNOWN, "mode_fixup() on unknown output!\n"); + + if (type == INTEL_OUTPUT_HDMI) + return intel_hdmi_mode_fixup(encoder, mode, adjusted_mode); + else + return intel_dp_mode_fixup(encoder, mode, adjusted_mode); +} + +static const struct drm_encoder_funcs intel_ddi_funcs = { + .destroy = intel_ddi_destroy, +}; + +static const struct drm_encoder_helper_funcs intel_ddi_helper_funcs = { + .mode_fixup = intel_ddi_mode_fixup, + .mode_set = intel_ddi_mode_set, + .disable = intel_encoder_noop, +}; + +void intel_ddi_init(struct drm_device *dev, enum port port) +{ + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *hdmi_connector = NULL; + struct intel_connector *dp_connector = NULL; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + dp_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!dp_connector) { + kfree(intel_dig_port); + return; + } + + if (port != PORT_A) { + hdmi_connector = kzalloc(sizeof(struct intel_connector), + GFP_KERNEL); + if (!hdmi_connector) { + kfree(dp_connector); + kfree(intel_dig_port); + return; + } + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, encoder, &intel_ddi_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(encoder, &intel_ddi_helper_funcs); + + intel_encoder->enable = intel_enable_ddi; + intel_encoder->pre_enable = intel_ddi_pre_enable; + intel_encoder->disable = intel_disable_ddi; + intel_encoder->post_disable = intel_ddi_post_disable; + intel_encoder->get_hw_state = intel_ddi_get_hw_state; + + intel_dig_port->port = port; + if (hdmi_connector) + intel_dig_port->hdmi.sdvox_reg = DDI_BUF_CTL(port); + else + intel_dig_port->hdmi.sdvox_reg = 0; + intel_dig_port->dp.output_reg = DDI_BUF_CTL(port); + + intel_encoder->type = INTEL_OUTPUT_UNKNOWN; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + intel_encoder->hot_plug = intel_ddi_hot_plug; + + if (hdmi_connector) + intel_hdmi_init_connector(intel_dig_port, hdmi_connector); + intel_dp_init_connector(intel_dig_port, dp_connector); +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_evict.c +++ linux-3.5.0/ubuntu/i915/i915_gem_evict.c @@ -0,0 +1,186 @@ +/* + * Copyright © 2008-2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drv.h" +#include "i915_drm.h" +#include "i915_trace.h" + +static bool +mark_free(struct drm_i915_gem_object *obj, struct list_head *unwind) +{ + if (obj->pin_count) + return false; + + list_add(&obj->exec_list, unwind); + return drm_mm_scan_add_block_hsw(obj->gtt_space); +} + +int +i915_gem_evict_something(struct drm_device *dev, int min_size, + unsigned alignment, unsigned cache_level, + bool mappable, bool nonblocking) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct list_head eviction_list, unwind_list; + struct drm_i915_gem_object *obj; + int ret = 0; + + trace_i915_gem_evict(dev, min_size, alignment, mappable); + + /* + * The goal is to evict objects and amalgamate space in LRU order. + * The oldest idle objects reside on the inactive list, which is in + * retirement order. The next objects to retire are those on the (per + * ring) active list that do not have an outstanding flush. Once the + * hardware reports completion (the seqno is updated after the + * batchbuffer has been finished) the clean buffer objects would + * be retired to the inactive list. Any dirty objects would be added + * to the tail of the flushing list. So after processing the clean + * active objects we need to emit a MI_FLUSH to retire the flushing + * list, hence the retirement order of the flushing list is in + * advance of the dirty objects on the active lists. + * + * The retirement sequence is thus: + * 1. Inactive objects (already retired) + * 2. Clean active objects + * 3. Flushing list + * 4. Dirty active objects. + * + * On each list, the oldest objects lie at the HEAD with the freshest + * object on the TAIL. + */ + + INIT_LIST_HEAD(&unwind_list); + if (mappable) + drm_mm_init_scan_with_range_hsw(&dev_priv->mm.gtt_space, + min_size, alignment, cache_level, + 0, dev_priv->mm.gtt_mappable_end); + else + drm_mm_init_scan_hsw(&dev_priv->mm.gtt_space, + min_size, alignment, cache_level); + + /* First see if there is a large enough contiguous idle region... */ + list_for_each_entry(obj, &dev_priv->mm.inactive_list, mm_list) { + if (mark_free(obj, &unwind_list)) + goto found; + } + + if (nonblocking) + goto none; + + /* Now merge in the soon-to-be-expired objects... */ + list_for_each_entry(obj, &dev_priv->mm.active_list, mm_list) { + if (mark_free(obj, &unwind_list)) + goto found; + } + +none: + /* Nothing found, clean up and bail out! */ + while (!list_empty(&unwind_list)) { + obj = list_first_entry(&unwind_list, + struct drm_i915_gem_object, + exec_list); + + ret = drm_mm_scan_remove_block_hsw(obj->gtt_space); + BUG_ON(ret); + + list_del_init(&obj->exec_list); + } + + /* We expect the caller to unpin, evict all and try again, or give up. + * So calling i915_gem_evict_everything() is unnecessary. + */ + return -ENOSPC; + +found: + /* drm_mm doesn't allow any other other operations while + * scanning, therefore store to be evicted objects on a + * temporary list. */ + INIT_LIST_HEAD(&eviction_list); + while (!list_empty(&unwind_list)) { + obj = list_first_entry(&unwind_list, + struct drm_i915_gem_object, + exec_list); + if (drm_mm_scan_remove_block_hsw(obj->gtt_space)) { + list_move(&obj->exec_list, &eviction_list); + drm_gem_object_reference(&obj->base); + continue; + } + list_del_init(&obj->exec_list); + } + + /* Unbinding will emit any required flushes */ + while (!list_empty(&eviction_list)) { + obj = list_first_entry(&eviction_list, + struct drm_i915_gem_object, + exec_list); + if (ret == 0) + ret = i915_gem_object_unbind(obj); + + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + return ret; +} + +int +i915_gem_evict_everything(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj, *next; + bool lists_empty; + int ret; + + lists_empty = (list_empty(&dev_priv->mm.inactive_list) && + list_empty(&dev_priv->mm.active_list)); + if (lists_empty) + return -ENOSPC; + + trace_i915_gem_evict_everything(dev); + + /* The gpu_idle will flush everything in the write domain to the + * active list. Then we must move everything off the active list + * with retire requests. + */ + ret = i915_gpu_idle(dev); + if (ret) + return ret; + + i915_gem_retire_requests(dev); + + /* Having flushed everything, unbind() should never raise an error */ + list_for_each_entry_safe(obj, next, + &dev_priv->mm.inactive_list, mm_list) + if (obj->pin_count == 0) + WARN_ON(i915_gem_object_unbind(obj)); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/dvo_ns2501.c +++ linux-3.5.0/ubuntu/i915/dvo_ns2501.c @@ -0,0 +1,588 @@ +/* + * + * Copyright (c) 2012 Gilles Dartiguelongue, Thomas Richter + * + * 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 AUTHOR 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 "dvo.h" +#include "i915_reg.h" +#include "i915_drv.h" + +#define NS2501_VID 0x1305 +#define NS2501_DID 0x6726 + +#define NS2501_VID_LO 0x00 +#define NS2501_VID_HI 0x01 +#define NS2501_DID_LO 0x02 +#define NS2501_DID_HI 0x03 +#define NS2501_REV 0x04 +#define NS2501_RSVD 0x05 +#define NS2501_FREQ_LO 0x06 +#define NS2501_FREQ_HI 0x07 + +#define NS2501_REG8 0x08 +#define NS2501_8_VEN (1<<5) +#define NS2501_8_HEN (1<<4) +#define NS2501_8_DSEL (1<<3) +#define NS2501_8_BPAS (1<<2) +#define NS2501_8_RSVD (1<<1) +#define NS2501_8_PD (1<<0) + +#define NS2501_REG9 0x09 +#define NS2501_9_VLOW (1<<7) +#define NS2501_9_MSEL_MASK (0x7<<4) +#define NS2501_9_TSEL (1<<3) +#define NS2501_9_RSEN (1<<2) +#define NS2501_9_RSVD (1<<1) +#define NS2501_9_MDI (1<<0) + +#define NS2501_REGC 0x0c + +struct ns2501_priv { + //I2CDevRec d; + bool quiet; + int reg_8_shadow; + int reg_8_set; + // Shadow registers for i915 + int dvoc; + int pll_a; + int srcdim; + int fw_blc; +}; + +#define NSPTR(d) ((NS2501Ptr)(d->DriverPrivate.ptr)) + +/* + * For reasons unclear to me, the ns2501 at least on the Fujitsu/Siemens + * laptops does not react on the i2c bus unless + * both the PLL is running and the display is configured in its native + * resolution. + * This function forces the DVO on, and stores the registers it touches. + * Afterwards, registers are restored to regular values. + * + * This is pretty much a hack, though it works. + * Without that, ns2501_readb and ns2501_writeb fail + * when switching the resolution. + */ + +static void enable_dvo(struct intel_dvo_device *dvo) +{ + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + struct i2c_adapter *adapter = dvo->i2c_bus; + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + DRM_DEBUG_KMS("%s: Trying to re-enable the DVO\n", __FUNCTION__); + + ns->dvoc = I915_READ(DVO_C); + ns->pll_a = I915_READ(_DPLL_A); + ns->srcdim = I915_READ(DVOC_SRCDIM); + ns->fw_blc = I915_READ(FW_BLC); + + I915_WRITE(DVOC, 0x10004084); + I915_WRITE(_DPLL_A, 0xd0820000); + I915_WRITE(DVOC_SRCDIM, 0x400300); // 1024x768 + I915_WRITE(FW_BLC, 0x1080304); + + I915_WRITE(DVOC, 0x90004084); +} + +/* + * Restore the I915 registers modified by the above + * trigger function. + */ +static void restore_dvo(struct intel_dvo_device *dvo) +{ + struct i2c_adapter *adapter = dvo->i2c_bus; + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + + I915_WRITE(DVOC, ns->dvoc); + I915_WRITE(_DPLL_A, ns->pll_a); + I915_WRITE(DVOC_SRCDIM, ns->srcdim); + I915_WRITE(FW_BLC, ns->fw_blc); +} + +/* +** Read a register from the ns2501. +** Returns true if successful, false otherwise. +** If it returns false, it might be wise to enable the +** DVO with the above function. +*/ +static bool ns2501_readb(struct intel_dvo_device *dvo, int addr, uint8_t * ch) +{ + struct ns2501_priv *ns = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + u8 out_buf[2]; + u8 in_buf[2]; + + struct i2c_msg msgs[] = { + { + .addr = dvo->slave_addr, + .flags = 0, + .len = 1, + .buf = out_buf, + }, + { + .addr = dvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = in_buf, + } + }; + + out_buf[0] = addr; + out_buf[1] = 0; + + if (i2c_transfer(adapter, msgs, 2) == 2) { + *ch = in_buf[0]; + return true; + }; + + if (!ns->quiet) { + DRM_DEBUG_KMS + ("Unable to read register 0x%02x from %s:0x%02x.\n", addr, + adapter->name, dvo->slave_addr); + } + + return false; +} + +/* +** Write a register to the ns2501. +** Returns true if successful, false otherwise. +** If it returns false, it might be wise to enable the +** DVO with the above function. +*/ +static bool ns2501_writeb(struct intel_dvo_device *dvo, int addr, uint8_t ch) +{ + struct ns2501_priv *ns = dvo->dev_priv; + struct i2c_adapter *adapter = dvo->i2c_bus; + uint8_t out_buf[2]; + + struct i2c_msg msg = { + .addr = dvo->slave_addr, + .flags = 0, + .len = 2, + .buf = out_buf, + }; + + out_buf[0] = addr; + out_buf[1] = ch; + + if (i2c_transfer(adapter, &msg, 1) == 1) { + return true; + } + + if (!ns->quiet) { + DRM_DEBUG_KMS("Unable to write register 0x%02x to %s:%d\n", + addr, adapter->name, dvo->slave_addr); + } + + return false; +} + +/* National Semiconductor 2501 driver for chip on i2c bus + * scan for the chip on the bus. + * Hope the VBIOS initialized the PLL correctly so we can + * talk to it. If not, it will not be seen and not detected. + * Bummer! + */ +static bool ns2501_init(struct intel_dvo_device *dvo, + struct i2c_adapter *adapter) +{ + /* this will detect the NS2501 chip on the specified i2c bus */ + struct ns2501_priv *ns; + unsigned char ch; + + ns = kzalloc(sizeof(struct ns2501_priv), GFP_KERNEL); + if (ns == NULL) + return false; + + dvo->i2c_bus = adapter; + dvo->dev_priv = ns; + ns->quiet = true; + + if (!ns2501_readb(dvo, NS2501_VID_LO, &ch)) + goto out; + + if (ch != (NS2501_VID & 0xff)) { + DRM_DEBUG_KMS("ns2501 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + + if (!ns2501_readb(dvo, NS2501_DID_LO, &ch)) + goto out; + + if (ch != (NS2501_DID & 0xff)) { + DRM_DEBUG_KMS("ns2501 not detected got %d: from %s Slave %d.\n", + ch, adapter->name, dvo->slave_addr); + goto out; + } + ns->quiet = false; + ns->reg_8_set = 0; + ns->reg_8_shadow = + NS2501_8_PD | NS2501_8_BPAS | NS2501_8_VEN | NS2501_8_HEN; + + DRM_DEBUG_KMS("init ns2501 dvo controller successfully!\n"); + return true; + +out: + kfree(ns); + return false; +} + +static enum drm_connector_status ns2501_detect(struct intel_dvo_device *dvo) +{ + /* + * This is a Laptop display, it doesn't have hotplugging. + * Even if not, the detection bit of the 2501 is unreliable as + * it only works for some display types. + * It is even more unreliable as the PLL must be active for + * allowing reading from the chiop. + */ + return connector_status_connected; +} + +static enum drm_mode_status ns2501_mode_valid(struct intel_dvo_device *dvo, + struct drm_display_mode *mode) +{ + DRM_DEBUG_KMS + ("%s: is mode valid (hdisplay=%d,htotal=%d,vdisplay=%d,vtotal=%d)\n", + __FUNCTION__, mode->hdisplay, mode->htotal, mode->vdisplay, + mode->vtotal); + + /* + * Currently, these are all the modes I have data from. + * More might exist. Unclear how to find the native resolution + * of the panel in here so we could always accept it + * by disabling the scaler. + */ + if ((mode->hdisplay == 800 && mode->vdisplay == 600) || + (mode->hdisplay == 640 && mode->vdisplay == 480) || + (mode->hdisplay == 1024 && mode->vdisplay == 768)) { + return MODE_OK; + } else { + return MODE_ONE_SIZE; /* Is this a reasonable error? */ + } +} + +static void ns2501_mode_set(struct intel_dvo_device *dvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + bool ok; + bool restore = false; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + + DRM_DEBUG_KMS + ("%s: set mode (hdisplay=%d,htotal=%d,vdisplay=%d,vtotal=%d).\n", + __FUNCTION__, mode->hdisplay, mode->htotal, mode->vdisplay, + mode->vtotal); + + /* + * Where do I find the native resolution for which scaling is not required??? + * + * First trigger the DVO on as otherwise the chip does not appear on the i2c + * bus. + */ + do { + ok = true; + + if (mode->hdisplay == 800 && mode->vdisplay == 600) { + /* mode 277 */ + ns->reg_8_shadow &= ~NS2501_8_BPAS; + DRM_DEBUG_KMS("%s: switching to 800x600\n", + __FUNCTION__); + + /* + * No, I do not know where this data comes from. + * It is just what the video bios left in the DVO, so + * I'm just copying it here over. + * This also means that I cannot support any other modes + * except the ones supported by the bios. + */ + ok &= ns2501_writeb(dvo, 0x11, 0xc8); // 0xc7 also works. + ok &= ns2501_writeb(dvo, 0x1b, 0x19); + ok &= ns2501_writeb(dvo, 0x1c, 0x62); // VBIOS left 0x64 here, but 0x62 works nicer + ok &= ns2501_writeb(dvo, 0x1d, 0x02); + + ok &= ns2501_writeb(dvo, 0x34, 0x03); + ok &= ns2501_writeb(dvo, 0x35, 0xff); + + ok &= ns2501_writeb(dvo, 0x80, 0x27); + ok &= ns2501_writeb(dvo, 0x81, 0x03); + ok &= ns2501_writeb(dvo, 0x82, 0x41); + ok &= ns2501_writeb(dvo, 0x83, 0x05); + + ok &= ns2501_writeb(dvo, 0x8d, 0x02); + ok &= ns2501_writeb(dvo, 0x8e, 0x04); + ok &= ns2501_writeb(dvo, 0x8f, 0x00); + + ok &= ns2501_writeb(dvo, 0x90, 0xfe); /* vertical. VBIOS left 0xff here, but 0xfe works better */ + ok &= ns2501_writeb(dvo, 0x91, 0x07); + ok &= ns2501_writeb(dvo, 0x94, 0x00); + ok &= ns2501_writeb(dvo, 0x95, 0x00); + + ok &= ns2501_writeb(dvo, 0x96, 0x00); + + ok &= ns2501_writeb(dvo, 0x99, 0x00); + ok &= ns2501_writeb(dvo, 0x9a, 0x88); + + ok &= ns2501_writeb(dvo, 0x9c, 0x23); /* Looks like first and last line of the image. */ + ok &= ns2501_writeb(dvo, 0x9d, 0x00); + ok &= ns2501_writeb(dvo, 0x9e, 0x25); + ok &= ns2501_writeb(dvo, 0x9f, 0x03); + + ok &= ns2501_writeb(dvo, 0xa4, 0x80); + + ok &= ns2501_writeb(dvo, 0xb6, 0x00); + + ok &= ns2501_writeb(dvo, 0xb9, 0xc8); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xba, 0x00); /* horizontal? */ + + ok &= ns2501_writeb(dvo, 0xc0, 0x05); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xc1, 0xd7); + + ok &= ns2501_writeb(dvo, 0xc2, 0x00); + ok &= ns2501_writeb(dvo, 0xc3, 0xf8); + + ok &= ns2501_writeb(dvo, 0xc4, 0x03); + ok &= ns2501_writeb(dvo, 0xc5, 0x1a); + + ok &= ns2501_writeb(dvo, 0xc6, 0x00); + ok &= ns2501_writeb(dvo, 0xc7, 0x73); + ok &= ns2501_writeb(dvo, 0xc8, 0x02); + + } else if (mode->hdisplay == 640 && mode->vdisplay == 480) { + /* mode 274 */ + DRM_DEBUG_KMS("%s: switching to 640x480\n", + __FUNCTION__); + /* + * No, I do not know where this data comes from. + * It is just what the video bios left in the DVO, so + * I'm just copying it here over. + * This also means that I cannot support any other modes + * except the ones supported by the bios. + */ + ns->reg_8_shadow &= ~NS2501_8_BPAS; + + ok &= ns2501_writeb(dvo, 0x11, 0xa0); + ok &= ns2501_writeb(dvo, 0x1b, 0x11); + ok &= ns2501_writeb(dvo, 0x1c, 0x54); + ok &= ns2501_writeb(dvo, 0x1d, 0x03); + + ok &= ns2501_writeb(dvo, 0x34, 0x03); + ok &= ns2501_writeb(dvo, 0x35, 0xff); + + ok &= ns2501_writeb(dvo, 0x80, 0xff); + ok &= ns2501_writeb(dvo, 0x81, 0x07); + ok &= ns2501_writeb(dvo, 0x82, 0x3d); + ok &= ns2501_writeb(dvo, 0x83, 0x05); + + ok &= ns2501_writeb(dvo, 0x8d, 0x02); + ok &= ns2501_writeb(dvo, 0x8e, 0x10); + ok &= ns2501_writeb(dvo, 0x8f, 0x00); + + ok &= ns2501_writeb(dvo, 0x90, 0xff); /* vertical */ + ok &= ns2501_writeb(dvo, 0x91, 0x07); + ok &= ns2501_writeb(dvo, 0x94, 0x00); + ok &= ns2501_writeb(dvo, 0x95, 0x00); + + ok &= ns2501_writeb(dvo, 0x96, 0x05); + + ok &= ns2501_writeb(dvo, 0x99, 0x00); + ok &= ns2501_writeb(dvo, 0x9a, 0x88); + + ok &= ns2501_writeb(dvo, 0x9c, 0x24); + ok &= ns2501_writeb(dvo, 0x9d, 0x00); + ok &= ns2501_writeb(dvo, 0x9e, 0x25); + ok &= ns2501_writeb(dvo, 0x9f, 0x03); + + ok &= ns2501_writeb(dvo, 0xa4, 0x84); + + ok &= ns2501_writeb(dvo, 0xb6, 0x09); + + ok &= ns2501_writeb(dvo, 0xb9, 0xa0); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xba, 0x00); /* horizontal? */ + + ok &= ns2501_writeb(dvo, 0xc0, 0x05); /* horizontal? */ + ok &= ns2501_writeb(dvo, 0xc1, 0x90); + + ok &= ns2501_writeb(dvo, 0xc2, 0x00); + ok &= ns2501_writeb(dvo, 0xc3, 0x0f); + + ok &= ns2501_writeb(dvo, 0xc4, 0x03); + ok &= ns2501_writeb(dvo, 0xc5, 0x16); + + ok &= ns2501_writeb(dvo, 0xc6, 0x00); + ok &= ns2501_writeb(dvo, 0xc7, 0x02); + ok &= ns2501_writeb(dvo, 0xc8, 0x02); + + } else if (mode->hdisplay == 1024 && mode->vdisplay == 768) { + /* mode 280 */ + DRM_DEBUG_KMS("%s: switching to 1024x768\n", + __FUNCTION__); + /* + * This might or might not work, actually. I'm silently + * assuming here that the native panel resolution is + * 1024x768. If not, then this leaves the scaler disabled + * generating a picture that is likely not the expected. + * + * Problem is that I do not know where to take the panel + * dimensions from. + * + * Enable the bypass, scaling not required. + * + * The scaler registers are irrelevant here.... + * + */ + ns->reg_8_shadow |= NS2501_8_BPAS; + ok &= ns2501_writeb(dvo, 0x37, 0x44); + } else { + /* + * Data not known. Bummer! + * Hopefully, the code should not go here + * as mode_OK delivered no other modes. + */ + ns->reg_8_shadow |= NS2501_8_BPAS; + } + ok &= ns2501_writeb(dvo, NS2501_REG8, ns->reg_8_shadow); + + if (!ok) { + if (restore) + restore_dvo(dvo); + enable_dvo(dvo); + restore = true; + } + } while (!ok); + /* + * Restore the old i915 registers before + * forcing the ns2501 on. + */ + if (restore) + restore_dvo(dvo); +} + +/* set the NS2501 power state */ +static bool ns2501_get_hw_state(struct intel_dvo_device *dvo) +{ + unsigned char ch; + + if (!ns2501_readb(dvo, NS2501_REG8, &ch)) + return false; + + if (ch & NS2501_8_PD) + return true; + else + return false; +} + +/* set the NS2501 power state */ +static void ns2501_dpms(struct intel_dvo_device *dvo, bool enable) +{ + bool ok; + bool restore = false; + struct ns2501_priv *ns = (struct ns2501_priv *)(dvo->dev_priv); + unsigned char ch; + + DRM_DEBUG_KMS("%s: Trying set the dpms of the DVO to %i\n", + __FUNCTION__, enable); + + ch = ns->reg_8_shadow; + + if (enable) + ch |= NS2501_8_PD; + else + ch &= ~NS2501_8_PD; + + if (ns->reg_8_set == 0 || ns->reg_8_shadow != ch) { + ns->reg_8_set = 1; + ns->reg_8_shadow = ch; + + do { + ok = true; + ok &= ns2501_writeb(dvo, NS2501_REG8, ch); + ok &= + ns2501_writeb(dvo, 0x34, + enable ? 0x03 : 0x00); + ok &= + ns2501_writeb(dvo, 0x35, + enable ? 0xff : 0x00); + if (!ok) { + if (restore) + restore_dvo(dvo); + enable_dvo(dvo); + restore = true; + } + } while (!ok); + + if (restore) + restore_dvo(dvo); + } +} + +static void ns2501_dump_regs(struct intel_dvo_device *dvo) +{ + uint8_t val; + + ns2501_readb(dvo, NS2501_FREQ_LO, &val); + DRM_LOG_KMS("NS2501_FREQ_LO: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_FREQ_HI, &val); + DRM_LOG_KMS("NS2501_FREQ_HI: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REG8, &val); + DRM_LOG_KMS("NS2501_REG8: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REG9, &val); + DRM_LOG_KMS("NS2501_REG9: 0x%02x\n", val); + ns2501_readb(dvo, NS2501_REGC, &val); + DRM_LOG_KMS("NS2501_REGC: 0x%02x\n", val); +} + +static void ns2501_destroy(struct intel_dvo_device *dvo) +{ + struct ns2501_priv *ns = dvo->dev_priv; + + if (ns) { + kfree(ns); + dvo->dev_priv = NULL; + } +} + +struct intel_dvo_dev_ops ns2501_ops = { + .init = ns2501_init, + .detect = ns2501_detect, + .mode_valid = ns2501_mode_valid, + .mode_set = ns2501_mode_set, + .dpms = ns2501_dpms, + .get_hw_state = ns2501_get_hw_state, + .dump_regs = ns2501_dump_regs, + .destroy = ns2501_destroy, +}; --- linux-3.5.0.orig/ubuntu/i915/i915_gem_dmabuf.c +++ linux-3.5.0/ubuntu/i915/i915_gem_dmabuf.c @@ -0,0 +1,300 @@ +/* + * Copyright 2012 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 (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Dave Airlie + */ +#include "drmP.h" +#include "i915_drv.h" +#include + +static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachment, + enum dma_data_direction dir) +{ + struct drm_i915_gem_object *obj = attachment->dmabuf->priv; + struct sg_table *st; + struct scatterlist *src, *dst; + int ret, i; + + ret = i915_mutex_lock_interruptible(obj->base.dev); + if (ret) + return ERR_PTR(ret); + + ret = i915_gem_object_get_pages(obj); + if (ret) { + st = ERR_PTR(ret); + goto out; + } + + /* Copy sg so that we make an independent mapping */ + st = kmalloc(sizeof(struct sg_table), GFP_KERNEL); + if (st == NULL) { + st = ERR_PTR(-ENOMEM); + goto out; + } + + ret = sg_alloc_table(st, obj->pages->nents, GFP_KERNEL); + if (ret) { + kfree(st); + st = ERR_PTR(ret); + goto out; + } + + src = obj->pages->sgl; + dst = st->sgl; + for (i = 0; i < obj->pages->nents; i++) { + sg_set_page(dst, sg_page(src), PAGE_SIZE, 0); + dst = sg_next(dst); + src = sg_next(src); + } + + if (!dma_map_sg(attachment->dev, st->sgl, st->nents, dir)) { + sg_free_table(st); + kfree(st); + st = ERR_PTR(-ENOMEM); + goto out; + } + + i915_gem_object_pin_pages(obj); + +out: + mutex_unlock(&obj->base.dev->struct_mutex); + return st; +} + +static void i915_gem_unmap_dma_buf(struct dma_buf_attachment *attachment, + struct sg_table *sg, + enum dma_data_direction dir) +{ + dma_unmap_sg(attachment->dev, sg->sgl, sg->nents, dir); + sg_free_table(sg); + kfree(sg); +} + +static void i915_gem_dmabuf_release(struct dma_buf *dma_buf) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + + if (obj->base.export_dma_buf == dma_buf) { + /* drop the reference on the export fd holds */ + obj->base.export_dma_buf = NULL; + drm_gem_object_unreference_unlocked(&obj->base); + } +} + +static void *i915_gem_dmabuf_vmap(struct dma_buf *dma_buf) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + struct scatterlist *sg; + struct page **pages; + int ret, i; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ERR_PTR(ret); + + if (obj->dma_buf_vmapping) { + obj->vmapping_count++; + goto out_unlock; + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + goto error; + + ret = -ENOMEM; + + pages = drm_malloc_ab(obj->pages->nents, sizeof(struct page *)); + if (pages == NULL) + goto error; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) + pages[i] = sg_page(sg); + + obj->dma_buf_vmapping = vmap(pages, obj->pages->nents, 0, PAGE_KERNEL); + drm_free_large(pages); + + if (!obj->dma_buf_vmapping) + goto error; + + obj->vmapping_count = 1; + i915_gem_object_pin_pages(obj); +out_unlock: + mutex_unlock(&dev->struct_mutex); + return obj->dma_buf_vmapping; + +error: + mutex_unlock(&dev->struct_mutex); + return ERR_PTR(ret); +} + +static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf, void *vaddr) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return; + + if (--obj->vmapping_count == 0) { + vunmap(obj->dma_buf_vmapping); + obj->dma_buf_vmapping = NULL; + + i915_gem_object_unpin_pages(obj); + } + mutex_unlock(&dev->struct_mutex); +} + +static void *i915_gem_dmabuf_kmap_atomic(struct dma_buf *dma_buf, unsigned long page_num) +{ + return NULL; +} + +static void i915_gem_dmabuf_kunmap_atomic(struct dma_buf *dma_buf, unsigned long page_num, void *addr) +{ + +} +static void *i915_gem_dmabuf_kmap(struct dma_buf *dma_buf, unsigned long page_num) +{ + return NULL; +} + +static void i915_gem_dmabuf_kunmap(struct dma_buf *dma_buf, unsigned long page_num, void *addr) +{ + +} + +static int i915_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma) +{ + return -EINVAL; +} + +static int i915_gem_begin_cpu_access(struct dma_buf *dma_buf, size_t start, size_t length, enum dma_data_direction direction) +{ + struct drm_i915_gem_object *obj = dma_buf->priv; + struct drm_device *dev = obj->base.dev; + int ret; + bool write = (direction == DMA_BIDIRECTIONAL || direction == DMA_TO_DEVICE); + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ret = i915_gem_object_set_to_cpu_domain(obj, write); + mutex_unlock(&dev->struct_mutex); + return ret; +} + +static const struct dma_buf_ops i915_dmabuf_ops = { + .map_dma_buf = i915_gem_map_dma_buf, + .unmap_dma_buf = i915_gem_unmap_dma_buf, + .release = i915_gem_dmabuf_release, + .kmap = i915_gem_dmabuf_kmap, + .kmap_atomic = i915_gem_dmabuf_kmap_atomic, + .kunmap = i915_gem_dmabuf_kunmap, + .kunmap_atomic = i915_gem_dmabuf_kunmap_atomic, + .mmap = i915_gem_dmabuf_mmap, + .vmap = i915_gem_dmabuf_vmap, + .vunmap = i915_gem_dmabuf_vunmap, + .begin_cpu_access = i915_gem_begin_cpu_access, +}; + +struct dma_buf *i915_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *gem_obj, int flags) +{ + struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); + + return dma_buf_export(obj, &i915_dmabuf_ops, obj->base.size, 0600); +} + +static int i915_gem_object_get_pages_dmabuf(struct drm_i915_gem_object *obj) +{ + struct sg_table *sg; + + sg = dma_buf_map_attachment(obj->base.import_attach, DMA_BIDIRECTIONAL); + if (IS_ERR(sg)) + return PTR_ERR(sg); + + obj->pages = sg; + obj->has_dma_mapping = true; + return 0; +} + +static void i915_gem_object_put_pages_dmabuf(struct drm_i915_gem_object *obj) +{ + dma_buf_unmap_attachment(obj->base.import_attach, + obj->pages, DMA_BIDIRECTIONAL); + obj->has_dma_mapping = false; +} + +static const struct drm_i915_gem_object_ops i915_gem_object_dmabuf_ops = { + .get_pages = i915_gem_object_get_pages_dmabuf, + .put_pages = i915_gem_object_put_pages_dmabuf, +}; + +struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf) +{ + struct dma_buf_attachment *attach; + struct drm_i915_gem_object *obj; + int ret; + + /* is this one of own objects? */ + if (dma_buf->ops == &i915_dmabuf_ops) { + obj = dma_buf->priv; + /* is it from our device? */ + if (obj->base.dev == dev) { + drm_gem_object_reference(&obj->base); + return &obj->base; + } + } + + /* need to attach */ + attach = dma_buf_attach(dma_buf, dev->dev); + if (IS_ERR(attach)) + return ERR_CAST(attach); + + + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (obj == NULL) { + ret = -ENOMEM; + goto fail_detach; + } + + ret = drm_gem_private_object_init(dev, &obj->base, dma_buf->size); + if (ret) { + kfree(obj); + goto fail_detach; + } + + i915_gem_object_init(obj, &i915_gem_object_dmabuf_ops); + obj->base.import_attach = attach; + + return &obj->base; + +fail_detach: + dma_buf_detach(dma_buf, attach); + return ERR_PTR(ret); +} --- linux-3.5.0.orig/ubuntu/i915/i915_trace_points.c +++ linux-3.5.0/ubuntu/i915/i915_trace_points.c @@ -0,0 +1,13 @@ +/* + * Copyright © 2009 Intel Corporation + * + * Authors: + * Chris Wilson + */ + +#include "i915_drv.h" + +#ifndef __CHECKER__ +#define CREATE_TRACE_POINTS +#include "i915_trace.h" +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_gem_context.c +++ linux-3.5.0/ubuntu/i915/i915_gem_context.c @@ -0,0 +1,534 @@ +/* + * Copyright © 2011-2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Ben Widawsky + * + */ + +/* + * This file implements HW context support. On gen5+ a HW context consists of an + * opaque GPU object which is referenced at times of context saves and restores. + * With RC6 enabled, the context is also referenced as the GPU enters and exists + * from RC6 (GPU has it's own internal power context, except on gen5). Though + * something like a context does exist for the media ring, the code only + * supports contexts for the render ring. + * + * In software, there is a distinction between contexts created by the user, + * and the default HW context. The default HW context is used by GPU clients + * that do not request setup of their own hardware context. The default + * context's state is never restored to help prevent programming errors. This + * would happen if a client ran and piggy-backed off another clients GPU state. + * The default context only exists to give the GPU some offset to load as the + * current to invoke a save of the context we actually care about. In fact, the + * code could likely be constructed, albeit in a more complicated fashion, to + * never use the default context, though that limits the driver's ability to + * swap out, and/or destroy other contexts. + * + * All other contexts are created as a request by the GPU client. These contexts + * store GPU state, and thus allow GPU clients to not re-emit state (and + * potentially query certain state) at any time. The kernel driver makes + * certain that the appropriate commands are inserted. + * + * The context life cycle is semi-complicated in that context BOs may live + * longer than the context itself because of the way the hardware, and object + * tracking works. Below is a very crude representation of the state machine + * describing the context life. + * refcount pincount active + * S0: initial state 0 0 0 + * S1: context created 1 0 0 + * S2: context is currently running 2 1 X + * S3: GPU referenced, but not current 2 0 1 + * S4: context is current, but destroyed 1 1 0 + * S5: like S3, but destroyed 1 0 1 + * + * The most common (but not all) transitions: + * S0->S1: client creates a context + * S1->S2: client submits execbuf with context + * S2->S3: other clients submits execbuf with context + * S3->S1: context object was retired + * S3->S2: clients submits another execbuf + * S2->S4: context destroy called with current context + * S3->S5->S0: destroy path + * S4->S5->S0: destroy path on current context + * + * There are two confusing terms used above: + * The "current context" means the context which is currently running on the + * GPU. The GPU has loaded it's state already and has stored away the gtt + * offset of the BO. The GPU is not actively referencing the data at this + * offset, but it will on the next context switch. The only way to avoid this + * is to do a GPU reset. + * + * An "active context' is one which was previously the "current context" and is + * on the active list waiting for the next context switch to occur. Until this + * happens, the object must remain at the same gtt offset. It is therefore + * possible to destroy a context, but it is still active. + * + */ + +#include "drmP.h" +#include "i915_drm.h" +#include "i915_drv.h" + +/* This is a HW constraint. The value below is the largest known requirement + * I've seen in a spec to date, and that was a workaround for a non-shipping + * part. It should be safe to decrease this, but it's more future proof as is. + */ +#define CONTEXT_ALIGN (64<<10) + +static struct i915_hw_context * +i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id); +static int do_switch(struct i915_hw_context *to); + +static int get_context_size(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + u32 reg; + + switch (INTEL_INFO(dev)->gen) { + case 6: + reg = I915_READ(CXT_SIZE); + ret = GEN6_CXT_TOTAL_SIZE(reg) * 64; + break; + case 7: + reg = I915_READ(GEN7_CXT_SIZE); + if (IS_HASWELL(dev)) + ret = HSW_CXT_TOTAL_SIZE(reg) * 64; + else + ret = GEN7_CXT_TOTAL_SIZE(reg) * 64; + break; + default: + BUG(); + } + + return ret; +} + +static void do_destroy(struct i915_hw_context *ctx) +{ + struct drm_device *dev = ctx->obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (ctx->file_priv) + idr_remove(&ctx->file_priv->context_idr, ctx->id); + else + BUG_ON(ctx != dev_priv->ring[RCS].default_context); + + drm_gem_object_unreference(&ctx->obj->base); + kfree(ctx); +} + +static struct i915_hw_context * +create_hw_context(struct drm_device *dev, + struct drm_i915_file_private *file_priv) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_context *ctx; + int ret, id; + + ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); + if (ctx == NULL) + return ERR_PTR(-ENOMEM); + + ctx->obj = i915_gem_alloc_object(dev, dev_priv->hw_context_size); + if (ctx->obj == NULL) { + kfree(ctx); + DRM_DEBUG_DRIVER("Context object allocated failed\n"); + return ERR_PTR(-ENOMEM); + } + + /* The ring associated with the context object is handled by the normal + * object tracking code. We give an initial ring value simple to pass an + * assertion in the context switch code. + */ + ctx->ring = &dev_priv->ring[RCS]; + + /* Default context will never have a file_priv */ + if (file_priv == NULL) + return ctx; + + ctx->file_priv = file_priv; + +again: + if (idr_pre_get(&file_priv->context_idr, GFP_KERNEL) == 0) { + ret = -ENOMEM; + DRM_DEBUG_DRIVER("idr allocation failed\n"); + goto err_out; + } + + ret = idr_get_new_above(&file_priv->context_idr, ctx, + DEFAULT_CONTEXT_ID + 1, &id); + if (ret == 0) + ctx->id = id; + + if (ret == -EAGAIN) + goto again; + else if (ret) + goto err_out; + + return ctx; + +err_out: + do_destroy(ctx); + return ERR_PTR(ret); +} + +static inline bool is_default_context(struct i915_hw_context *ctx) +{ + return (ctx == ctx->ring->default_context); +} + +/** + * The default context needs to exist per ring that uses contexts. It stores the + * context state of the GPU for applications that don't utilize HW contexts, as + * well as an idle case. + */ +static int create_default_context(struct drm_i915_private *dev_priv) +{ + struct i915_hw_context *ctx; + int ret; + + BUG_ON(!mutex_is_locked(&dev_priv->dev->struct_mutex)); + + ctx = create_hw_context(dev_priv->dev, NULL); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + /* We may need to do things with the shrinker which require us to + * immediately switch back to the default context. This can cause a + * problem as pinning the default context also requires GTT space which + * may not be available. To avoid this we always pin the + * default context. + */ + dev_priv->ring[RCS].default_context = ctx; + ret = i915_gem_object_pin(ctx->obj, CONTEXT_ALIGN, false, false); + if (ret) + goto err_destroy; + + ret = do_switch(ctx); + if (ret) + goto err_unpin; + + DRM_DEBUG_DRIVER("Default HW context loaded\n"); + return 0; + +err_unpin: + i915_gem_object_unpin(ctx->obj); +err_destroy: + do_destroy(ctx); + return ret; +} + +void i915_gem_context_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t ctx_size; + + if (!HAS_HW_CONTEXTS(dev)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + /* If called from reset, or thaw... we've been here already */ + if (dev_priv->hw_contexts_disabled || + dev_priv->ring[RCS].default_context) + return; + + ctx_size = get_context_size(dev); + dev_priv->hw_context_size = get_context_size(dev); + dev_priv->hw_context_size = round_up(dev_priv->hw_context_size, 4096); + + if (ctx_size <= 0 || ctx_size > (1<<20)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + if (create_default_context(dev_priv)) { + dev_priv->hw_contexts_disabled = true; + return; + } + + DRM_DEBUG_DRIVER("HW context support initialized\n"); +} + +void i915_gem_context_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->hw_contexts_disabled) + return; + + /* The only known way to stop the gpu from accessing the hw context is + * to reset it. Do this as the very last operation to avoid confusing + * other code, leading to spurious errors. */ + intel_gpu_reset(dev); + + i915_gem_object_unpin(dev_priv->ring[RCS].default_context->obj); + + do_destroy(dev_priv->ring[RCS].default_context); +} + +static int context_idr_cleanup(int id, void *p, void *data) +{ + struct i915_hw_context *ctx = p; + + BUG_ON(id == DEFAULT_CONTEXT_ID); + + do_destroy(ctx); + + return 0; +} + +void i915_gem_context_close(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + mutex_lock(&dev->struct_mutex); + idr_for_each(&file_priv->context_idr, context_idr_cleanup, NULL); + idr_destroy(&file_priv->context_idr); + mutex_unlock(&dev->struct_mutex); +} + +static struct i915_hw_context * +i915_gem_context_get(struct drm_i915_file_private *file_priv, u32 id) +{ + return (struct i915_hw_context *)idr_find(&file_priv->context_idr, id); +} + +static inline int +mi_set_context(struct intel_ring_buffer *ring, + struct i915_hw_context *new_context, + u32 hw_flags) +{ + int ret; + + /* w/a: If Flush TLB Invalidation Mode is enabled, driver must do a TLB + * invalidation prior to MI_SET_CONTEXT. On GEN6 we don't set the value + * explicitly, so we rely on the value at ring init, stored in + * itlb_before_ctx_switch. + */ + if (IS_GEN6(ring->dev) && ring->itlb_before_ctx_switch) { + ret = ring->flush(ring, I915_GEM_GPU_DOMAINS, 0); + if (ret) + return ret; + } + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + if (IS_GEN7(ring->dev)) + intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_DISABLE); + else + intel_ring_emit(ring, MI_NOOP); + + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_SET_CONTEXT); + intel_ring_emit(ring, new_context->obj->gtt_offset | + MI_MM_SPACE_GTT | + MI_SAVE_EXT_STATE_EN | + MI_RESTORE_EXT_STATE_EN | + hw_flags); + /* w/a: MI_SET_CONTEXT must always be followed by MI_NOOP */ + intel_ring_emit(ring, MI_NOOP); + + if (IS_GEN7(ring->dev)) + intel_ring_emit(ring, MI_ARB_ON_OFF | MI_ARB_ENABLE); + else + intel_ring_emit(ring, MI_NOOP); + + intel_ring_advance(ring); + + return ret; +} + +static int do_switch(struct i915_hw_context *to) +{ + struct intel_ring_buffer *ring = to->ring; + struct drm_i915_gem_object *from_obj = ring->last_context_obj; + u32 hw_flags = 0; + int ret; + + BUG_ON(from_obj != NULL && from_obj->pin_count == 0); + + if (from_obj == to->obj) + return 0; + + ret = i915_gem_object_pin(to->obj, CONTEXT_ALIGN, false, false); + if (ret) + return ret; + + /* Clear this page out of any CPU caches for coherent swap-in/out. Note + * that thanks to write = false in this call and us not setting any gpu + * write domains when putting a context object onto the active list + * (when switching away from it), this won't block. + * XXX: We need a real interface to do this instead of trickery. */ + ret = i915_gem_object_set_to_gtt_domain(to->obj, false); + if (ret) { + i915_gem_object_unpin(to->obj); + return ret; + } + + if (!to->obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(to->obj, to->obj->cache_level); + + if (!to->is_initialized || is_default_context(to)) + hw_flags |= MI_RESTORE_INHIBIT; + else if (WARN_ON_ONCE(from_obj == to->obj)) /* not yet expected */ + hw_flags |= MI_FORCE_RESTORE; + + ret = mi_set_context(ring, to, hw_flags); + if (ret) { + i915_gem_object_unpin(to->obj); + return ret; + } + + /* The backing object for the context is done after switching to the + * *next* context. Therefore we cannot retire the previous context until + * the next context has already started running. In fact, the below code + * is a bit suboptimal because the retiring can occur simply after the + * MI_SET_CONTEXT instead of when the next seqno has completed. + */ + if (from_obj != NULL) { + u32 seqno = i915_gem_next_request_seqno(ring); + from_obj->base.read_domains = I915_GEM_DOMAIN_INSTRUCTION; + i915_gem_object_move_to_active(from_obj, ring, seqno); + /* As long as MI_SET_CONTEXT is serializing, ie. it flushes the + * whole damn pipeline, we don't need to explicitly mark the + * object dirty. The only exception is that the context must be + * correct in case the object gets swapped out. Ideally we'd be + * able to defer doing this until we know the object would be + * swapped, but there is no way to do that yet. + */ + from_obj->dirty = 1; + BUG_ON(from_obj->ring != ring); + i915_gem_object_unpin(from_obj); + + drm_gem_object_unreference(&from_obj->base); + } + + drm_gem_object_reference(&to->obj->base); + ring->last_context_obj = to->obj; + to->is_initialized = true; + + return 0; +} + +/** + * i915_switch_context() - perform a GPU context switch. + * @ring: ring for which we'll execute the context switch + * @file_priv: file_priv associated with the context, may be NULL + * @id: context id number + * @seqno: sequence number by which the new context will be switched to + * @flags: + * + * The context life cycle is simple. The context refcount is incremented and + * decremented by 1 and create and destroy. If the context is in use by the GPU, + * it will have a refoucnt > 1. This allows us to destroy the context abstract + * object while letting the normal object tracking destroy the backing BO. + */ +int i915_switch_context(struct intel_ring_buffer *ring, + struct drm_file *file, + int to_id) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + struct i915_hw_context *to; + + if (dev_priv->hw_contexts_disabled) + return 0; + + if (ring != &dev_priv->ring[RCS]) + return 0; + + if (to_id == DEFAULT_CONTEXT_ID) { + to = ring->default_context; + } else { + if (file == NULL) + return -EINVAL; + + to = i915_gem_context_get(file->driver_priv, to_id); + if (to == NULL) + return -ENOENT; + } + + return do_switch(to); +} + +int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_context_create *args = data; + struct drm_i915_file_private *file_priv = file->driver_priv; + struct i915_hw_context *ctx; + int ret; + + if (!(dev->driver->driver_features & DRIVER_GEM)) + return -ENODEV; + + if (dev_priv->hw_contexts_disabled) + return -ENODEV; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ctx = create_hw_context(dev, file_priv); + mutex_unlock(&dev->struct_mutex); + if (IS_ERR(ctx)) + return PTR_ERR(ctx); + + args->ctx_id = ctx->id; + DRM_DEBUG_DRIVER("HW context %d created\n", args->ctx_id); + + return 0; +} + +int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_context_destroy *args = data; + struct drm_i915_file_private *file_priv = file->driver_priv; + struct i915_hw_context *ctx; + int ret; + + if (!(dev->driver->driver_features & DRIVER_GEM)) + return -ENODEV; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + ctx = i915_gem_context_get(file_priv, args->ctx_id); + if (!ctx) { + mutex_unlock(&dev->struct_mutex); + return -ENOENT; + } + + do_destroy(ctx); + + mutex_unlock(&dev->struct_mutex); + + DRM_DEBUG_DRIVER("HW context %d destroyed\n", args->ctx_id); + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/intel_sdvo.c +++ linux-3.5.0/ubuntu/i915/intel_sdvo.c @@ -0,0 +1,2815 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2007 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ +#include +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "intel_sdvo_regs.h" + +#define SDVO_TMDS_MASK (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_TMDS1) +#define SDVO_RGB_MASK (SDVO_OUTPUT_RGB0 | SDVO_OUTPUT_RGB1) +#define SDVO_LVDS_MASK (SDVO_OUTPUT_LVDS0 | SDVO_OUTPUT_LVDS1) +#define SDVO_TV_MASK (SDVO_OUTPUT_CVBS0 | SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_YPRPB0) + +#define SDVO_OUTPUT_MASK (SDVO_TMDS_MASK | SDVO_RGB_MASK | SDVO_LVDS_MASK |\ + SDVO_TV_MASK) + +#define IS_TV(c) (c->output_flag & SDVO_TV_MASK) +#define IS_TMDS(c) (c->output_flag & SDVO_TMDS_MASK) +#define IS_LVDS(c) (c->output_flag & SDVO_LVDS_MASK) +#define IS_TV_OR_LVDS(c) (c->output_flag & (SDVO_TV_MASK | SDVO_LVDS_MASK)) +#define IS_DIGITAL(c) (c->output_flag & (SDVO_TMDS_MASK | SDVO_LVDS_MASK)) + + +static const char *tv_format_names[] = { + "NTSC_M" , "NTSC_J" , "NTSC_443", + "PAL_B" , "PAL_D" , "PAL_G" , + "PAL_H" , "PAL_I" , "PAL_M" , + "PAL_N" , "PAL_NC" , "PAL_60" , + "SECAM_B" , "SECAM_D" , "SECAM_G" , + "SECAM_K" , "SECAM_K1", "SECAM_L" , + "SECAM_60" +}; + +#define TV_FORMAT_NUM (sizeof(tv_format_names) / sizeof(*tv_format_names)) + +struct intel_sdvo { + struct intel_encoder base; + + struct i2c_adapter *i2c; + u8 slave_addr; + + struct i2c_adapter ddc; + + /* Register for the SDVO device: SDVOB or SDVOC */ + uint32_t sdvo_reg; + + /* Active outputs controlled by this SDVO output */ + uint16_t controlled_output; + + /* + * Capabilities of the SDVO device returned by + * i830_sdvo_get_capabilities() + */ + struct intel_sdvo_caps caps; + + /* Pixel clock limitations reported by the SDVO device, in kHz */ + int pixel_clock_min, pixel_clock_max; + + /* + * For multiple function SDVO device, + * this is for current attached outputs. + */ + uint16_t attached_output; + + /* + * Hotplug activation bits for this device + */ + uint16_t hotplug_active; + + /** + * This is used to select the color range of RBG outputs in HDMI mode. + * It is only valid when using TMDS encoding and 8 bit per color mode. + */ + uint32_t color_range; + + /** + * This is set if we're going to treat the device as TV-out. + * + * While we have these nice friendly flags for output types that ought + * to decide this for us, the S-Video output on our HDMI+S-Video card + * shows up as RGB1 (VGA). + */ + bool is_tv; + + /* On different gens SDVOB is at different places. */ + bool is_sdvob; + + /* This is for current tv format name */ + int tv_format_index; + + /** + * This is set if we treat the device as HDMI, instead of DVI. + */ + bool is_hdmi; + bool has_hdmi_monitor; + bool has_hdmi_audio; + + /** + * This is set if we detect output of sdvo device as LVDS and + * have a valid fixed mode to use with the panel. + */ + bool is_lvds; + + /** + * This is sdvo fixed pannel mode pointer + */ + struct drm_display_mode *sdvo_lvds_fixed_mode; + + /* DDC bus used by this SDVO encoder */ + uint8_t ddc_bus; + + /* + * the sdvo flag gets lost in round trip: dtd->adjusted_mode->dtd + */ + uint8_t dtd_sdvo_flags; +}; + +struct intel_sdvo_connector { + struct intel_connector base; + + /* Mark the type of connector */ + uint16_t output_flag; + + enum hdmi_force_audio force_audio; + + /* This contains all current supported TV format */ + u8 tv_format_supported[TV_FORMAT_NUM]; + int format_supported_num; + struct drm_property *tv_format; + + /* add the property for the SDVO-TV */ + struct drm_property *left; + struct drm_property *right; + struct drm_property *top; + struct drm_property *bottom; + struct drm_property *hpos; + struct drm_property *vpos; + struct drm_property *contrast; + struct drm_property *saturation; + struct drm_property *hue; + struct drm_property *sharpness; + struct drm_property *flicker_filter; + struct drm_property *flicker_filter_adaptive; + struct drm_property *flicker_filter_2d; + struct drm_property *tv_chroma_filter; + struct drm_property *tv_luma_filter; + struct drm_property *dot_crawl; + + /* add the property for the SDVO-TV/LVDS */ + struct drm_property *brightness; + + /* Add variable to record current setting for the above property */ + u32 left_margin, right_margin, top_margin, bottom_margin; + + /* this is to get the range of margin.*/ + u32 max_hscan, max_vscan; + u32 max_hpos, cur_hpos; + u32 max_vpos, cur_vpos; + u32 cur_brightness, max_brightness; + u32 cur_contrast, max_contrast; + u32 cur_saturation, max_saturation; + u32 cur_hue, max_hue; + u32 cur_sharpness, max_sharpness; + u32 cur_flicker_filter, max_flicker_filter; + u32 cur_flicker_filter_adaptive, max_flicker_filter_adaptive; + u32 cur_flicker_filter_2d, max_flicker_filter_2d; + u32 cur_tv_chroma_filter, max_tv_chroma_filter; + u32 cur_tv_luma_filter, max_tv_luma_filter; + u32 cur_dot_crawl, max_dot_crawl; +}; + +static struct intel_sdvo *to_intel_sdvo(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_sdvo, base.base); +} + +static struct intel_sdvo *intel_attached_sdvo(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_sdvo, base); +} + +static struct intel_sdvo_connector *to_intel_sdvo_connector(struct drm_connector *connector) +{ + return container_of(to_intel_connector(connector), struct intel_sdvo_connector, base); +} + +static bool +intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags); +static bool +intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + int type); +static bool +intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector); + +/** + * Writes the SDVOB or SDVOC with the given value, but always writes both + * SDVOB and SDVOC to work around apparent hardware issues (according to + * comments in the BIOS). + */ +static void intel_sdvo_write_sdvox(struct intel_sdvo *intel_sdvo, u32 val) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 bval = val, cval = val; + int i; + + if (intel_sdvo->sdvo_reg == PCH_SDVOB) { + I915_WRITE(intel_sdvo->sdvo_reg, val); + I915_READ(intel_sdvo->sdvo_reg); + return; + } + + if (intel_sdvo->sdvo_reg == SDVOB) { + cval = I915_READ(SDVOC); + } else { + bval = I915_READ(SDVOB); + } + /* + * Write the registers twice for luck. Sometimes, + * writing them only once doesn't appear to 'stick'. + * The BIOS does this too. Yay, magic + */ + for (i = 0; i < 2; i++) + { + I915_WRITE(SDVOB, bval); + I915_READ(SDVOB); + I915_WRITE(SDVOC, cval); + I915_READ(SDVOC); + } +} + +static bool intel_sdvo_read_byte(struct intel_sdvo *intel_sdvo, u8 addr, u8 *ch) +{ + struct i2c_msg msgs[] = { + { + .addr = intel_sdvo->slave_addr, + .flags = 0, + .len = 1, + .buf = &addr, + }, + { + .addr = intel_sdvo->slave_addr, + .flags = I2C_M_RD, + .len = 1, + .buf = ch, + } + }; + int ret; + + if ((ret = i2c_transfer(intel_sdvo->i2c, msgs, 2)) == 2) + return true; + + DRM_DEBUG_KMS("i2c transfer returned %d\n", ret); + return false; +} + +#define SDVO_CMD_NAME_ENTRY(cmd) {cmd, #cmd} +/** Mapping of command numbers to names, for debug output */ +static const struct _sdvo_cmd_name { + u8 cmd; + const char *name; +} sdvo_cmd_names[] = { + SDVO_CMD_NAME_ENTRY(SDVO_CMD_RESET), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DEVICE_CAPS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FIRMWARE_REV), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TRAINED_INPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_OUTPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_OUTPUTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_IN_OUT_MAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_IN_OUT_MAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ATTACHED_DISPLAYS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HOT_PLUG_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ACTIVE_HOT_PLUG), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ACTIVE_HOT_PLUG), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INTERRUPT_EVENT_SOURCE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_INPUT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TARGET_OUTPUT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_INPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OUTPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_TIMINGS_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CLOCK_RATE_MULT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CLOCK_RATE_MULT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_TV_FORMATS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_FORMAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_FORMAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_POWER_STATES), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODER_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DISPLAY_POWER_STATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTROL_BUS_SWITCH), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SCALED_HDTV_RESOLUTION_SUPPORT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS), + + /* Add the op code for SDVO enhancements */ + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_VPOS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SATURATION), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HUE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_CONTRAST), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_BRIGHTNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_H), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_OVERSCAN_V), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_ADAPTIVE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_FLICKER_FILTER_2D), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_SHARPNESS), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_DOT_CRAWL), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_DOT_CRAWL), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_CHROMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_MAX_TV_LUMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_TV_LUMA_FILTER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_TV_LUMA_FILTER), + + /* HDMI op code */ + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_SUPP_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_ENCODE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_PIXEL_REPLI), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_PIXEL_REPLI), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY_CAP), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_COLORIMETRY), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_COLORIMETRY), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_ENCRYPT_PREFER), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_AUDIO_STAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_AUDIO_STAT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INDEX), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_INDEX), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_INFO), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_AV_SPLIT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_AV_SPLIT), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_TXRATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_TXRATE), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_SET_HBUF_DATA), + SDVO_CMD_NAME_ENTRY(SDVO_CMD_GET_HBUF_DATA), +}; + +#define SDVO_NAME(svdo) ((svdo)->is_sdvob ? "SDVOB" : "SDVOC") + +static void intel_sdvo_debug_write(struct intel_sdvo *intel_sdvo, u8 cmd, + const void *args, int args_len) +{ + int i; + + DRM_DEBUG_KMS("%s: W: %02X ", + SDVO_NAME(intel_sdvo), cmd); + for (i = 0; i < args_len; i++) + DRM_LOG_KMS("%02X ", ((u8 *)args)[i]); + for (; i < 8; i++) + DRM_LOG_KMS(" "); + for (i = 0; i < ARRAY_SIZE(sdvo_cmd_names); i++) { + if (cmd == sdvo_cmd_names[i].cmd) { + DRM_LOG_KMS("(%s)", sdvo_cmd_names[i].name); + break; + } + } + if (i == ARRAY_SIZE(sdvo_cmd_names)) + DRM_LOG_KMS("(%02X)", cmd); + DRM_LOG_KMS("\n"); +} + +static const char *cmd_status_names[] = { + "Power on", + "Success", + "Not supported", + "Invalid arg", + "Pending", + "Target not specified", + "Scaling not supported" +}; + +static bool intel_sdvo_write_cmd(struct intel_sdvo *intel_sdvo, u8 cmd, + const void *args, int args_len) +{ + u8 *buf, status; + struct i2c_msg *msgs; + int i, ret = true; + + /* Would be simpler to allocate both in one go ? */ + buf = (u8 *)kzalloc(args_len * 2 + 2, GFP_KERNEL); + if (!buf) + return false; + + msgs = kcalloc(args_len + 3, sizeof(*msgs), GFP_KERNEL); + if (!msgs) { + kfree(buf); + return false; + } + + intel_sdvo_debug_write(intel_sdvo, cmd, args, args_len); + + for (i = 0; i < args_len; i++) { + msgs[i].addr = intel_sdvo->slave_addr; + msgs[i].flags = 0; + msgs[i].len = 2; + msgs[i].buf = buf + 2 *i; + buf[2*i + 0] = SDVO_I2C_ARG_0 - i; + buf[2*i + 1] = ((u8*)args)[i]; + } + msgs[i].addr = intel_sdvo->slave_addr; + msgs[i].flags = 0; + msgs[i].len = 2; + msgs[i].buf = buf + 2*i; + buf[2*i + 0] = SDVO_I2C_OPCODE; + buf[2*i + 1] = cmd; + + /* the following two are to read the response */ + status = SDVO_I2C_CMD_STATUS; + msgs[i+1].addr = intel_sdvo->slave_addr; + msgs[i+1].flags = 0; + msgs[i+1].len = 1; + msgs[i+1].buf = &status; + + msgs[i+2].addr = intel_sdvo->slave_addr; + msgs[i+2].flags = I2C_M_RD; + msgs[i+2].len = 1; + msgs[i+2].buf = &status; + + ret = i2c_transfer(intel_sdvo->i2c, msgs, i+3); + if (ret < 0) { + DRM_DEBUG_KMS("I2c transfer returned %d\n", ret); + ret = false; + goto out; + } + if (ret != i+3) { + /* failure in I2C transfer */ + DRM_DEBUG_KMS("I2c transfer returned %d/%d\n", ret, i+3); + ret = false; + } + +out: + kfree(msgs); + kfree(buf); + return ret; +} + +static bool intel_sdvo_read_response(struct intel_sdvo *intel_sdvo, + void *response, int response_len) +{ + u8 retry = 5; + u8 status; + int i; + + DRM_DEBUG_KMS("%s: R: ", SDVO_NAME(intel_sdvo)); + + /* + * The documentation states that all commands will be + * processed within 15µs, and that we need only poll + * the status byte a maximum of 3 times in order for the + * command to be complete. + * + * Check 5 times in case the hardware failed to read the docs. + */ + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_CMD_STATUS, + &status)) + goto log_fail; + + while (status == SDVO_CMD_STATUS_PENDING && retry--) { + udelay(15); + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_CMD_STATUS, + &status)) + goto log_fail; + } + + if (status <= SDVO_CMD_STATUS_SCALING_NOT_SUPP) + DRM_LOG_KMS("(%s)", cmd_status_names[status]); + else + DRM_LOG_KMS("(??? %d)", status); + + if (status != SDVO_CMD_STATUS_SUCCESS) + goto log_fail; + + /* Read the command response */ + for (i = 0; i < response_len; i++) { + if (!intel_sdvo_read_byte(intel_sdvo, + SDVO_I2C_RETURN_0 + i, + &((u8 *)response)[i])) + goto log_fail; + DRM_LOG_KMS(" %02X", ((u8 *)response)[i]); + } + DRM_LOG_KMS("\n"); + return true; + +log_fail: + DRM_LOG_KMS("... failed\n"); + return false; +} + +static int intel_sdvo_get_pixel_multiplier(struct drm_display_mode *mode) +{ + if (mode->clock >= 100000) + return 1; + else if (mode->clock >= 50000) + return 2; + else + return 4; +} + +static bool intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo, + u8 ddc_bus) +{ + /* This must be the immediately preceding write before the i2c xfer */ + return intel_sdvo_write_cmd(intel_sdvo, + SDVO_CMD_SET_CONTROL_BUS_SWITCH, + &ddc_bus, 1); +} + +static bool intel_sdvo_set_value(struct intel_sdvo *intel_sdvo, u8 cmd, const void *data, int len) +{ + if (!intel_sdvo_write_cmd(intel_sdvo, cmd, data, len)) + return false; + + return intel_sdvo_read_response(intel_sdvo, NULL, 0); +} + +static bool +intel_sdvo_get_value(struct intel_sdvo *intel_sdvo, u8 cmd, void *value, int len) +{ + if (!intel_sdvo_write_cmd(intel_sdvo, cmd, NULL, 0)) + return false; + + return intel_sdvo_read_response(intel_sdvo, value, len); +} + +static bool intel_sdvo_set_target_input(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_set_target_input_args targets = {0}; + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TARGET_INPUT, + &targets, sizeof(targets)); +} + +/** + * Return whether each input is trained. + * + * This function is making an assumption about the layout of the response, + * which should be checked against the docs. + */ +static bool intel_sdvo_get_trained_inputs(struct intel_sdvo *intel_sdvo, bool *input_1, bool *input_2) +{ + struct intel_sdvo_get_trained_inputs_response response; + + BUILD_BUG_ON(sizeof(response) != 1); + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_TRAINED_INPUTS, + &response, sizeof(response))) + return false; + + *input_1 = response.input0_trained; + *input_2 = response.input1_trained; + return true; +} + +static bool intel_sdvo_set_active_outputs(struct intel_sdvo *intel_sdvo, + u16 outputs) +{ + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_ACTIVE_OUTPUTS, + &outputs, sizeof(outputs)); +} + +static bool intel_sdvo_get_active_outputs(struct intel_sdvo *intel_sdvo, + u16 *outputs) +{ + return intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_ACTIVE_OUTPUTS, + outputs, sizeof(*outputs)); +} + +static bool intel_sdvo_set_encoder_power_state(struct intel_sdvo *intel_sdvo, + int mode) +{ + u8 state = SDVO_ENCODER_STATE_ON; + + switch (mode) { + case DRM_MODE_DPMS_ON: + state = SDVO_ENCODER_STATE_ON; + break; + case DRM_MODE_DPMS_STANDBY: + state = SDVO_ENCODER_STATE_STANDBY; + break; + case DRM_MODE_DPMS_SUSPEND: + state = SDVO_ENCODER_STATE_SUSPEND; + break; + case DRM_MODE_DPMS_OFF: + state = SDVO_ENCODER_STATE_OFF; + break; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_ENCODER_POWER_STATE, &state, sizeof(state)); +} + +static bool intel_sdvo_get_input_pixel_clock_range(struct intel_sdvo *intel_sdvo, + int *clock_min, + int *clock_max) +{ + struct intel_sdvo_pixel_clock_range clocks; + + BUILD_BUG_ON(sizeof(clocks) != 4); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE, + &clocks, sizeof(clocks))) + return false; + + /* Convert the values from units of 10 kHz to kHz. */ + *clock_min = clocks.min * 10; + *clock_max = clocks.max * 10; + return true; +} + +static bool intel_sdvo_set_target_output(struct intel_sdvo *intel_sdvo, + u16 outputs) +{ + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TARGET_OUTPUT, + &outputs, sizeof(outputs)); +} + +static bool intel_sdvo_set_timing(struct intel_sdvo *intel_sdvo, u8 cmd, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_value(intel_sdvo, cmd, &dtd->part1, sizeof(dtd->part1)) && + intel_sdvo_set_value(intel_sdvo, cmd + 1, &dtd->part2, sizeof(dtd->part2)); +} + +static bool intel_sdvo_set_input_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_timing(intel_sdvo, + SDVO_CMD_SET_INPUT_TIMINGS_PART1, dtd); +} + +static bool intel_sdvo_set_output_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + return intel_sdvo_set_timing(intel_sdvo, + SDVO_CMD_SET_OUTPUT_TIMINGS_PART1, dtd); +} + +static bool +intel_sdvo_create_preferred_input_timing(struct intel_sdvo *intel_sdvo, + uint16_t clock, + uint16_t width, + uint16_t height) +{ + struct intel_sdvo_preferred_input_timing_args args; + + memset(&args, 0, sizeof(args)); + args.clock = clock; + args.width = width; + args.height = height; + args.interlace = 0; + + if (intel_sdvo->is_lvds && + (intel_sdvo->sdvo_lvds_fixed_mode->hdisplay != width || + intel_sdvo->sdvo_lvds_fixed_mode->vdisplay != height)) + args.scaled = 1; + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_CREATE_PREFERRED_INPUT_TIMING, + &args, sizeof(args)); +} + +static bool intel_sdvo_get_preferred_input_timing(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_dtd *dtd) +{ + BUILD_BUG_ON(sizeof(dtd->part1) != 8); + BUILD_BUG_ON(sizeof(dtd->part2) != 8); + return intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1, + &dtd->part1, sizeof(dtd->part1)) && + intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2, + &dtd->part2, sizeof(dtd->part2)); +} + +static bool intel_sdvo_set_clock_rate_mult(struct intel_sdvo *intel_sdvo, u8 val) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_CLOCK_RATE_MULT, &val, 1); +} + +static void intel_sdvo_get_dtd_from_mode(struct intel_sdvo_dtd *dtd, + const struct drm_display_mode *mode) +{ + uint16_t width, height; + uint16_t h_blank_len, h_sync_len, v_blank_len, v_sync_len; + uint16_t h_sync_offset, v_sync_offset; + int mode_clock; + + width = mode->hdisplay; + height = mode->vdisplay; + + /* do some mode translations */ + h_blank_len = mode->htotal - mode->hdisplay; + h_sync_len = mode->hsync_end - mode->hsync_start; + + v_blank_len = mode->vtotal - mode->vdisplay; + v_sync_len = mode->vsync_end - mode->vsync_start; + + h_sync_offset = mode->hsync_start - mode->hdisplay; + v_sync_offset = mode->vsync_start - mode->vdisplay; + + mode_clock = mode->clock; + mode_clock /= intel_mode_get_pixel_multiplier(mode) ?: 1; + mode_clock /= 10; + dtd->part1.clock = mode_clock; + + dtd->part1.h_active = width & 0xff; + dtd->part1.h_blank = h_blank_len & 0xff; + dtd->part1.h_high = (((width >> 8) & 0xf) << 4) | + ((h_blank_len >> 8) & 0xf); + dtd->part1.v_active = height & 0xff; + dtd->part1.v_blank = v_blank_len & 0xff; + dtd->part1.v_high = (((height >> 8) & 0xf) << 4) | + ((v_blank_len >> 8) & 0xf); + + dtd->part2.h_sync_off = h_sync_offset & 0xff; + dtd->part2.h_sync_width = h_sync_len & 0xff; + dtd->part2.v_sync_off_width = (v_sync_offset & 0xf) << 4 | + (v_sync_len & 0xf); + dtd->part2.sync_off_width_high = ((h_sync_offset & 0x300) >> 2) | + ((h_sync_len & 0x300) >> 4) | ((v_sync_offset & 0x30) >> 2) | + ((v_sync_len & 0x30) >> 4); + + dtd->part2.dtd_flags = 0x18; + if (mode->flags & DRM_MODE_FLAG_INTERLACE) + dtd->part2.dtd_flags |= DTD_FLAG_INTERLACE; + if (mode->flags & DRM_MODE_FLAG_PHSYNC) + dtd->part2.dtd_flags |= DTD_FLAG_HSYNC_POSITIVE; + if (mode->flags & DRM_MODE_FLAG_PVSYNC) + dtd->part2.dtd_flags |= DTD_FLAG_VSYNC_POSITIVE; + + dtd->part2.sdvo_flags = 0; + dtd->part2.v_sync_off_high = v_sync_offset & 0xc0; + dtd->part2.reserved = 0; +} + +static void intel_sdvo_get_mode_from_dtd(struct drm_display_mode * mode, + const struct intel_sdvo_dtd *dtd) +{ + mode->hdisplay = dtd->part1.h_active; + mode->hdisplay += ((dtd->part1.h_high >> 4) & 0x0f) << 8; + mode->hsync_start = mode->hdisplay + dtd->part2.h_sync_off; + mode->hsync_start += (dtd->part2.sync_off_width_high & 0xc0) << 2; + mode->hsync_end = mode->hsync_start + dtd->part2.h_sync_width; + mode->hsync_end += (dtd->part2.sync_off_width_high & 0x30) << 4; + mode->htotal = mode->hdisplay + dtd->part1.h_blank; + mode->htotal += (dtd->part1.h_high & 0xf) << 8; + + mode->vdisplay = dtd->part1.v_active; + mode->vdisplay += ((dtd->part1.v_high >> 4) & 0x0f) << 8; + mode->vsync_start = mode->vdisplay; + mode->vsync_start += (dtd->part2.v_sync_off_width >> 4) & 0xf; + mode->vsync_start += (dtd->part2.sync_off_width_high & 0x0c) << 2; + mode->vsync_start += dtd->part2.v_sync_off_high & 0xc0; + mode->vsync_end = mode->vsync_start + + (dtd->part2.v_sync_off_width & 0xf); + mode->vsync_end += (dtd->part2.sync_off_width_high & 0x3) << 4; + mode->vtotal = mode->vdisplay + dtd->part1.v_blank; + mode->vtotal += (dtd->part1.v_high & 0xf) << 8; + + mode->clock = dtd->part1.clock * 10; + + mode->flags &= ~(DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC); + if (dtd->part2.dtd_flags & DTD_FLAG_INTERLACE) + mode->flags |= DRM_MODE_FLAG_INTERLACE; + if (dtd->part2.dtd_flags & DTD_FLAG_HSYNC_POSITIVE) + mode->flags |= DRM_MODE_FLAG_PHSYNC; + if (dtd->part2.dtd_flags & DTD_FLAG_VSYNC_POSITIVE) + mode->flags |= DRM_MODE_FLAG_PVSYNC; +} + +static bool intel_sdvo_check_supp_encode(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_encode encode; + + BUILD_BUG_ON(sizeof(encode) != 2); + return intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPP_ENCODE, + &encode, sizeof(encode)); +} + +static bool intel_sdvo_set_encode(struct intel_sdvo *intel_sdvo, + uint8_t mode) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_ENCODE, &mode, 1); +} + +static bool intel_sdvo_set_colorimetry(struct intel_sdvo *intel_sdvo, + uint8_t mode) +{ + return intel_sdvo_set_value(intel_sdvo, SDVO_CMD_SET_COLORIMETRY, &mode, 1); +} + +#if 0 +static void intel_sdvo_dump_hdmi_buf(struct intel_sdvo *intel_sdvo) +{ + int i, j; + uint8_t set_buf_index[2]; + uint8_t av_split; + uint8_t buf_size; + uint8_t buf[48]; + uint8_t *pos; + + intel_sdvo_get_value(encoder, SDVO_CMD_GET_HBUF_AV_SPLIT, &av_split, 1); + + for (i = 0; i <= av_split; i++) { + set_buf_index[0] = i; set_buf_index[1] = 0; + intel_sdvo_write_cmd(encoder, SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2); + intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_INFO, NULL, 0); + intel_sdvo_read_response(encoder, &buf_size, 1); + + pos = buf; + for (j = 0; j <= buf_size; j += 8) { + intel_sdvo_write_cmd(encoder, SDVO_CMD_GET_HBUF_DATA, + NULL, 0); + intel_sdvo_read_response(encoder, pos, 8); + pos += 8; + } + } +} +#endif + +static bool intel_sdvo_write_infoframe(struct intel_sdvo *intel_sdvo, + unsigned if_index, uint8_t tx_rate, + uint8_t *data, unsigned length) +{ + uint8_t set_buf_index[2] = { if_index, 0 }; + uint8_t hbuf_size, tmp[8]; + int i; + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_INDEX, + set_buf_index, 2)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HBUF_INFO, + &hbuf_size, 1)) + return false; + + /* Buffer size is 0 based, hooray! */ + hbuf_size++; + + DRM_DEBUG_KMS("writing sdvo hbuf: %i, hbuf_size %i, hbuf_size: %i\n", + if_index, length, hbuf_size); + + for (i = 0; i < hbuf_size; i += 8) { + memset(tmp, 0, 8); + if (i < length) + memcpy(tmp, data + i, min_t(unsigned, 8, length - i)); + + if (!intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_DATA, + tmp, 8)) + return false; + } + + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_HBUF_TXRATE, + &tx_rate, 1); +} + +static bool intel_sdvo_set_avi_infoframe(struct intel_sdvo *intel_sdvo) +{ + struct dip_infoframe avi_if = { + .type = DIP_TYPE_AVI, + .ver = DIP_VERSION_AVI, + .len = DIP_LEN_AVI, + }; + uint8_t sdvo_data[4 + sizeof(avi_if.body.avi)]; + + intel_dip_infoframe_csum(&avi_if); + + /* sdvo spec says that the ecc is handled by the hw, and it looks like + * we must not send the ecc field, either. */ + memcpy(sdvo_data, &avi_if, 3); + sdvo_data[3] = avi_if.checksum; + memcpy(&sdvo_data[4], &avi_if.body, sizeof(avi_if.body.avi)); + + return intel_sdvo_write_infoframe(intel_sdvo, SDVO_HBUF_INDEX_AVI_IF, + SDVO_HBUF_TX_VSYNC, + sdvo_data, sizeof(sdvo_data)); +} + +static bool intel_sdvo_set_tv_format(struct intel_sdvo *intel_sdvo) +{ + struct intel_sdvo_tv_format format; + uint32_t format_map; + + format_map = 1 << intel_sdvo->tv_format_index; + memset(&format, 0, sizeof(format)); + memcpy(&format, &format_map, min(sizeof(format), sizeof(format_map))); + + BUILD_BUG_ON(sizeof(format) != 6); + return intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_TV_FORMAT, + &format, sizeof(format)); +} + +static bool +intel_sdvo_set_output_timings_from_mode(struct intel_sdvo *intel_sdvo, + struct drm_display_mode *mode) +{ + struct intel_sdvo_dtd output_dtd; + + if (!intel_sdvo_set_target_output(intel_sdvo, + intel_sdvo->attached_output)) + return false; + + intel_sdvo_get_dtd_from_mode(&output_dtd, mode); + if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) + return false; + + return true; +} + +/* Asks the sdvo controller for the preferred input mode given the output mode. + * Unfortunately we have to set up the full output mode to do that. */ +static bool +intel_sdvo_get_preferred_input_mode(struct intel_sdvo *intel_sdvo, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_sdvo_dtd input_dtd; + + /* Reset the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + return false; + + if (!intel_sdvo_create_preferred_input_timing(intel_sdvo, + mode->clock / 10, + mode->hdisplay, + mode->vdisplay)) + return false; + + if (!intel_sdvo_get_preferred_input_timing(intel_sdvo, + &input_dtd)) + return false; + + intel_sdvo_get_mode_from_dtd(adjusted_mode, &input_dtd); + intel_sdvo->dtd_sdvo_flags = input_dtd.part2.sdvo_flags; + + return true; +} + +static bool intel_sdvo_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + int multiplier; + + /* We need to construct preferred input timings based on our + * output timings. To do that, we have to set the output + * timings, even though this isn't really the right place in + * the sequence to do it. Oh well. + */ + if (intel_sdvo->is_tv) { + if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, mode)) + return false; + + (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, + mode, + adjusted_mode); + } else if (intel_sdvo->is_lvds) { + if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo, + intel_sdvo->sdvo_lvds_fixed_mode)) + return false; + + (void) intel_sdvo_get_preferred_input_mode(intel_sdvo, + mode, + adjusted_mode); + } + + /* Make the CRTC code factor in the SDVO pixel multiplier. The + * SDVO device will factor out the multiplier during mode_set. + */ + multiplier = intel_sdvo_get_pixel_multiplier(adjusted_mode); + intel_mode_set_pixel_multiplier(adjusted_mode, multiplier); + + return true; +} + +static void intel_sdvo_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + u32 sdvox; + struct intel_sdvo_in_out_map in_out; + struct intel_sdvo_dtd input_dtd, output_dtd; + int pixel_multiplier = intel_mode_get_pixel_multiplier(adjusted_mode); + int rate; + + if (!mode) + return; + + /* First, set the input mapping for the first input to our controlled + * output. This is only correct if we're a single-input device, in + * which case the first input is the output from the appropriate SDVO + * channel on the motherboard. In a two-input device, the first input + * will be SDVOB and the second SDVOC. + */ + in_out.in0 = intel_sdvo->attached_output; + in_out.in1 = 0; + + intel_sdvo_set_value(intel_sdvo, + SDVO_CMD_SET_IN_OUT_MAP, + &in_out, sizeof(in_out)); + + /* Set the output timings to the screen */ + if (!intel_sdvo_set_target_output(intel_sdvo, + intel_sdvo->attached_output)) + return; + + /* lvds has a special fixed output timing. */ + if (intel_sdvo->is_lvds) + intel_sdvo_get_dtd_from_mode(&output_dtd, + intel_sdvo->sdvo_lvds_fixed_mode); + else + intel_sdvo_get_dtd_from_mode(&output_dtd, mode); + if (!intel_sdvo_set_output_timing(intel_sdvo, &output_dtd)) + DRM_INFO("Setting output timings on %s failed\n", + SDVO_NAME(intel_sdvo)); + + /* Set the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + return; + + if (intel_sdvo->has_hdmi_monitor) { + intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_HDMI); + intel_sdvo_set_colorimetry(intel_sdvo, + SDVO_COLORIMETRY_RGB256); + intel_sdvo_set_avi_infoframe(intel_sdvo); + } else + intel_sdvo_set_encode(intel_sdvo, SDVO_ENCODE_DVI); + + if (intel_sdvo->is_tv && + !intel_sdvo_set_tv_format(intel_sdvo)) + return; + + /* We have tried to get input timing in mode_fixup, and filled into + * adjusted_mode. + */ + intel_sdvo_get_dtd_from_mode(&input_dtd, adjusted_mode); + if (intel_sdvo->is_tv || intel_sdvo->is_lvds) + input_dtd.part2.sdvo_flags = intel_sdvo->dtd_sdvo_flags; + if (!intel_sdvo_set_input_timing(intel_sdvo, &input_dtd)) + DRM_INFO("Setting input timings on %s failed\n", + SDVO_NAME(intel_sdvo)); + + switch (pixel_multiplier) { + default: + case 1: rate = SDVO_CLOCK_RATE_MULT_1X; break; + case 2: rate = SDVO_CLOCK_RATE_MULT_2X; break; + case 4: rate = SDVO_CLOCK_RATE_MULT_4X; break; + } + if (!intel_sdvo_set_clock_rate_mult(intel_sdvo, rate)) + return; + + /* Set the SDVO control regs. */ + if (INTEL_INFO(dev)->gen >= 4) { + /* The real mode polarity is set by the SDVO commands, using + * struct intel_sdvo_dtd. */ + sdvox = SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; + if (intel_sdvo->is_hdmi) + sdvox |= intel_sdvo->color_range; + if (INTEL_INFO(dev)->gen < 5) + sdvox |= SDVO_BORDER_ENABLE; + } else { + sdvox = I915_READ(intel_sdvo->sdvo_reg); + switch (intel_sdvo->sdvo_reg) { + case SDVOB: + sdvox &= SDVOB_PRESERVE_MASK; + break; + case SDVOC: + sdvox &= SDVOC_PRESERVE_MASK; + break; + } + sdvox |= (9 << 19) | SDVO_BORDER_ENABLE; + } + + if (INTEL_PCH_TYPE(dev) >= PCH_CPT) + sdvox |= TRANSCODER_CPT(intel_crtc->pipe); + else + sdvox |= TRANSCODER(intel_crtc->pipe); + + if (intel_sdvo->has_hdmi_audio) + sdvox |= SDVO_AUDIO_ENABLE; + + if (INTEL_INFO(dev)->gen >= 4) { + /* done in crtc_mode_set as the dpll_md reg must be written early */ + } else if (IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) { + /* done in crtc_mode_set as it lives inside the dpll register */ + } else { + sdvox |= (pixel_multiplier - 1) << SDVO_PORT_MULTIPLY_SHIFT; + } + + if (input_dtd.part2.sdvo_flags & SDVO_NEED_TO_STALL && + INTEL_INFO(dev)->gen < 5) + sdvox |= SDVO_STALL_SELECT; + intel_sdvo_write_sdvox(intel_sdvo, sdvox); +} + +static bool intel_sdvo_connector_get_hw_state(struct intel_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = + to_intel_sdvo_connector(&connector->base); + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(&connector->base); + u16 active_outputs; + + intel_sdvo_get_active_outputs(intel_sdvo, &active_outputs); + + if (active_outputs & intel_sdvo_connector->output_flag) + return true; + else + return false; +} + +static bool intel_sdvo_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + u32 tmp; + + tmp = I915_READ(intel_sdvo->sdvo_reg); + + if (!(tmp & SDVO_ENABLE)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_disable_sdvo(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + u32 temp; + + intel_sdvo_set_active_outputs(intel_sdvo, 0); + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, + DRM_MODE_DPMS_OFF); + + temp = I915_READ(intel_sdvo->sdvo_reg); + if ((temp & SDVO_ENABLE) != 0) { + /* HW workaround for IBX, we need to move the port to + * transcoder A before disabling it. */ + if (HAS_PCH_IBX(encoder->base.dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + if (temp & SDVO_PIPE_B_SELECT) { + temp &= ~SDVO_PIPE_B_SELECT; + I915_WRITE(intel_sdvo->sdvo_reg, temp); + POSTING_READ(intel_sdvo->sdvo_reg); + + /* Again we need to write this twice. */ + I915_WRITE(intel_sdvo->sdvo_reg, temp); + POSTING_READ(intel_sdvo->sdvo_reg); + + /* Transcoder selection bits only update + * effectively on vblank. */ + if (crtc) + intel_wait_for_vblank(encoder->base.dev, pipe); + else + msleep(50); + } + } + + intel_sdvo_write_sdvox(intel_sdvo, temp & ~SDVO_ENABLE); + } +} + +static void intel_enable_sdvo(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); + u32 temp; + bool input1, input2; + int i; + u8 status; + + temp = I915_READ(intel_sdvo->sdvo_reg); + if ((temp & SDVO_ENABLE) == 0) { + /* HW workaround for IBX, we need to move the port + * to transcoder A before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + /* Restore the transcoder select bit. */ + if (pipe == PIPE_B) + temp |= SDVO_PIPE_B_SELECT; + } + + intel_sdvo_write_sdvox(intel_sdvo, temp | SDVO_ENABLE); + } + for (i = 0; i < 2; i++) + intel_wait_for_vblank(dev, intel_crtc->pipe); + + status = intel_sdvo_get_trained_inputs(intel_sdvo, &input1, &input2); + /* Warn if the device reported failure to sync. + * A lot of SDVO devices fail to notify of sync, but it's + * a given it the status is a success, we succeeded. + */ + if (status == SDVO_CMD_STATUS_SUCCESS && !input1) { + DRM_DEBUG_KMS("First %s output reported failure to " + "sync\n", SDVO_NAME(intel_sdvo)); + } + + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, + DRM_MODE_DPMS_ON); + intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); +} + +static void intel_sdvo_dpms(struct drm_connector *connector, int mode) +{ + struct drm_crtc *crtc; + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + + /* dvo supports only 2 dpms states. */ + if (mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = intel_sdvo->base.base.crtc; + if (!crtc) { + intel_sdvo->base.connectors_active = false; + return; + } + + if (mode != DRM_MODE_DPMS_ON) { + intel_sdvo_set_active_outputs(intel_sdvo, 0); + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, mode); + + intel_sdvo->base.connectors_active = false; + + intel_crtc_update_dpms(crtc); + } else { + intel_sdvo->base.connectors_active = true; + + intel_crtc_update_dpms(crtc); + + if (0) + intel_sdvo_set_encoder_power_state(intel_sdvo, mode); + intel_sdvo_set_active_outputs(intel_sdvo, intel_sdvo->attached_output); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_sdvo_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + if (intel_sdvo->pixel_clock_min > mode->clock) + return MODE_CLOCK_LOW; + + if (intel_sdvo->pixel_clock_max < mode->clock) + return MODE_CLOCK_HIGH; + + if (intel_sdvo->is_lvds) { + if (mode->hdisplay > intel_sdvo->sdvo_lvds_fixed_mode->hdisplay) + return MODE_PANEL; + + if (mode->vdisplay > intel_sdvo->sdvo_lvds_fixed_mode->vdisplay) + return MODE_PANEL; + } + + return MODE_OK; +} + +static bool intel_sdvo_get_capabilities(struct intel_sdvo *intel_sdvo, struct intel_sdvo_caps *caps) +{ + BUILD_BUG_ON(sizeof(*caps) != 8); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_DEVICE_CAPS, + caps, sizeof(*caps))) + return false; + + DRM_DEBUG_KMS("SDVO capabilities:\n" + " vendor_id: %d\n" + " device_id: %d\n" + " device_rev_id: %d\n" + " sdvo_version_major: %d\n" + " sdvo_version_minor: %d\n" + " sdvo_inputs_mask: %d\n" + " smooth_scaling: %d\n" + " sharp_scaling: %d\n" + " up_scaling: %d\n" + " down_scaling: %d\n" + " stall_support: %d\n" + " output_flags: %d\n", + caps->vendor_id, + caps->device_id, + caps->device_rev_id, + caps->sdvo_version_major, + caps->sdvo_version_minor, + caps->sdvo_inputs_mask, + caps->smooth_scaling, + caps->sharp_scaling, + caps->up_scaling, + caps->down_scaling, + caps->stall_support, + caps->output_flags); + + return true; +} + +static uint16_t intel_sdvo_get_hotplug_support(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + uint16_t hotplug; + + /* HW Erratum: SDVO Hotplug is broken on all i945G chips, there's noise + * on the line. */ + if (IS_I945G(dev) || IS_I945GM(dev)) + return 0; + + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_HOT_PLUG_SUPPORT, + &hotplug, sizeof(hotplug))) + return 0; + + return hotplug; +} + +static void intel_sdvo_enable_hotplug(struct intel_encoder *encoder) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(&encoder->base); + + intel_sdvo_write_cmd(intel_sdvo, SDVO_CMD_SET_ACTIVE_HOT_PLUG, + &intel_sdvo->hotplug_active, 2); +} + +static bool +intel_sdvo_multifunc_encoder(struct intel_sdvo *intel_sdvo) +{ + /* Is there more than one type of output? */ + return hweight16(intel_sdvo->caps.output_flags) > 1; +} + +static struct edid * +intel_sdvo_get_edid(struct drm_connector *connector) +{ + struct intel_sdvo *sdvo = intel_attached_sdvo(connector); + return drm_get_edid(connector, &sdvo->ddc); +} + +/* Mac mini hack -- use the same DDC as the analog connector */ +static struct edid * +intel_sdvo_get_analog_edid(struct drm_connector *connector) +{ + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + return drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + dev_priv->crt_ddc_pin)); +} + +static enum drm_connector_status +intel_sdvo_tmds_sink_detect(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + enum drm_connector_status status; + struct edid *edid; + + edid = intel_sdvo_get_edid(connector); + + if (edid == NULL && intel_sdvo_multifunc_encoder(intel_sdvo)) { + u8 ddc, saved_ddc = intel_sdvo->ddc_bus; + + /* + * Don't use the 1 as the argument of DDC bus switch to get + * the EDID. It is used for SDVO SPD ROM. + */ + for (ddc = intel_sdvo->ddc_bus >> 1; ddc > 1; ddc >>= 1) { + intel_sdvo->ddc_bus = ddc; + edid = intel_sdvo_get_edid(connector); + if (edid) + break; + } + /* + * If we found the EDID on the other bus, + * assume that is the correct DDC bus. + */ + if (edid == NULL) + intel_sdvo->ddc_bus = saved_ddc; + } + + /* + * When there is no edid and no monitor is connected with VGA + * port, try to use the CRT ddc to read the EDID for DVI-connector. + */ + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + + status = connector_status_unknown; + if (edid != NULL) { + /* DDC bus is shared, match EDID to connector type */ + if (edid->input & DRM_EDID_INPUT_DIGITAL) { + status = connector_status_connected; + if (intel_sdvo->is_hdmi) { + intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid); + intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid); + } + } else + status = connector_status_disconnected; + kfree(edid); + } + + if (status == connector_status_connected) { + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + if (intel_sdvo_connector->force_audio != HDMI_AUDIO_AUTO) + intel_sdvo->has_hdmi_audio = (intel_sdvo_connector->force_audio == HDMI_AUDIO_ON); + } + + return status; +} + +static bool +intel_sdvo_connector_matches_edid(struct intel_sdvo_connector *sdvo, + struct edid *edid) +{ + bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL); + bool connector_is_digital = !!IS_DIGITAL(sdvo); + + DRM_DEBUG_KMS("connector_is_digital? %d, monitor_is_digital? %d\n", + connector_is_digital, monitor_is_digital); + return connector_is_digital == monitor_is_digital; +} + +static enum drm_connector_status +intel_sdvo_detect(struct drm_connector *connector, bool force) +{ + uint16_t response; + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + enum drm_connector_status ret; + + if (!intel_sdvo_write_cmd(intel_sdvo, + SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0)) + return connector_status_unknown; + + /* add 30ms delay when the output type might be TV */ + if (intel_sdvo->caps.output_flags & SDVO_TV_MASK) + msleep(30); + + if (!intel_sdvo_read_response(intel_sdvo, &response, 2)) + return connector_status_unknown; + + DRM_DEBUG_KMS("SDVO response %d %d [%x]\n", + response & 0xff, response >> 8, + intel_sdvo_connector->output_flag); + + if (response == 0) + return connector_status_disconnected; + + intel_sdvo->attached_output = response; + + intel_sdvo->has_hdmi_monitor = false; + intel_sdvo->has_hdmi_audio = false; + + if ((intel_sdvo_connector->output_flag & response) == 0) + ret = connector_status_disconnected; + else if (IS_TMDS(intel_sdvo_connector)) + ret = intel_sdvo_tmds_sink_detect(connector); + else { + struct edid *edid; + + /* if we have an edid check it matches the connection */ + edid = intel_sdvo_get_edid(connector); + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + if (edid != NULL) { + if (intel_sdvo_connector_matches_edid(intel_sdvo_connector, + edid)) + ret = connector_status_connected; + else + ret = connector_status_disconnected; + + kfree(edid); + } else + ret = connector_status_connected; + } + + /* May update encoder flag for like clock for SDVO TV, etc.*/ + if (ret == connector_status_connected) { + intel_sdvo->is_tv = false; + intel_sdvo->is_lvds = false; + intel_sdvo->base.needs_tv_clock = false; + + if (response & SDVO_TV_MASK) { + intel_sdvo->is_tv = true; + intel_sdvo->base.needs_tv_clock = true; + } + if (response & SDVO_LVDS_MASK) + intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL; + } + + return ret; +} + +static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) +{ + struct edid *edid; + + /* set the bus switch and get the modes */ + edid = intel_sdvo_get_edid(connector); + + /* + * Mac mini hack. On this device, the DVI-I connector shares one DDC + * link between analog and digital outputs. So, if the regular SDVO + * DDC fails, check to see if the analog output is disconnected, in + * which case we'll look there for the digital DDC data. + */ + if (edid == NULL) + edid = intel_sdvo_get_analog_edid(connector); + + if (edid != NULL) { + if (intel_sdvo_connector_matches_edid(to_intel_sdvo_connector(connector), + edid)) { + drm_mode_connector_update_edid_property(connector, edid); + drm_add_edid_modes(connector, edid); + } + + kfree(edid); + } +} + +/* + * Set of SDVO TV modes. + * Note! This is in reply order (see loop in get_tv_modes). + * XXX: all 60Hz refresh? + */ +static const struct drm_display_mode sdvo_tv_modes[] = { + { DRM_MODE("320x200", DRM_MODE_TYPE_DRIVER, 5815, 320, 321, 384, + 416, 0, 200, 201, 232, 233, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("320x240", DRM_MODE_TYPE_DRIVER, 6814, 320, 321, 384, + 416, 0, 240, 241, 272, 273, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("400x300", DRM_MODE_TYPE_DRIVER, 9910, 400, 401, 464, + 496, 0, 300, 301, 332, 333, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x350", DRM_MODE_TYPE_DRIVER, 16913, 640, 641, 704, + 736, 0, 350, 351, 382, 383, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x400", DRM_MODE_TYPE_DRIVER, 19121, 640, 641, 704, + 736, 0, 400, 401, 432, 433, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("640x480", DRM_MODE_TYPE_DRIVER, 22654, 640, 641, 704, + 736, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("704x480", DRM_MODE_TYPE_DRIVER, 24624, 704, 705, 768, + 800, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("704x576", DRM_MODE_TYPE_DRIVER, 29232, 704, 705, 768, + 800, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x350", DRM_MODE_TYPE_DRIVER, 18751, 720, 721, 784, + 816, 0, 350, 351, 382, 383, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x400", DRM_MODE_TYPE_DRIVER, 21199, 720, 721, 784, + 816, 0, 400, 401, 432, 433, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 25116, 720, 721, 784, + 816, 0, 480, 481, 512, 513, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x540", DRM_MODE_TYPE_DRIVER, 28054, 720, 721, 784, + 816, 0, 540, 541, 572, 573, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 29816, 720, 721, 784, + 816, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("768x576", DRM_MODE_TYPE_DRIVER, 31570, 768, 769, 832, + 864, 0, 576, 577, 608, 609, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("800x600", DRM_MODE_TYPE_DRIVER, 34030, 800, 801, 864, + 896, 0, 600, 601, 632, 633, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("832x624", DRM_MODE_TYPE_DRIVER, 36581, 832, 833, 896, + 928, 0, 624, 625, 656, 657, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("920x766", DRM_MODE_TYPE_DRIVER, 48707, 920, 921, 984, + 1016, 0, 766, 767, 798, 799, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("1024x768", DRM_MODE_TYPE_DRIVER, 53827, 1024, 1025, 1088, + 1120, 0, 768, 769, 800, 801, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, + { DRM_MODE("1280x1024", DRM_MODE_TYPE_DRIVER, 87265, 1280, 1281, 1344, + 1376, 0, 1024, 1025, 1056, 1057, 0, + DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_PVSYNC) }, +}; + +static void intel_sdvo_get_tv_modes(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_sdtv_resolution_request tv_res; + uint32_t reply = 0, format_map = 0; + int i; + + /* Read the list of supported input resolutions for the selected TV + * format. + */ + format_map = 1 << intel_sdvo->tv_format_index; + memcpy(&tv_res, &format_map, + min(sizeof(format_map), sizeof(struct intel_sdvo_sdtv_resolution_request))); + + if (!intel_sdvo_set_target_output(intel_sdvo, intel_sdvo->attached_output)) + return; + + BUILD_BUG_ON(sizeof(tv_res) != 3); + if (!intel_sdvo_write_cmd(intel_sdvo, + SDVO_CMD_GET_SDTV_RESOLUTION_SUPPORT, + &tv_res, sizeof(tv_res))) + return; + if (!intel_sdvo_read_response(intel_sdvo, &reply, 3)) + return; + + for (i = 0; i < ARRAY_SIZE(sdvo_tv_modes); i++) + if (reply & (1 << i)) { + struct drm_display_mode *nmode; + nmode = drm_mode_duplicate(connector->dev, + &sdvo_tv_modes[i]); + if (nmode) + drm_mode_probed_add(connector, nmode); + } +} + +static void intel_sdvo_get_lvds_modes(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct drm_display_mode *newmode; + + /* + * Attempt to get the mode list from DDC. + * Assume that the preferred modes are + * arranged in priority order. + */ + intel_ddc_get_modes(connector, intel_sdvo->i2c); + if (list_empty(&connector->probed_modes) == false) + goto end; + + /* Fetch modes from VBT */ + if (dev_priv->sdvo_lvds_vbt_mode != NULL) { + newmode = drm_mode_duplicate(connector->dev, + dev_priv->sdvo_lvds_vbt_mode); + if (newmode != NULL) { + /* Guarantee the mode is preferred */ + newmode->type = (DRM_MODE_TYPE_PREFERRED | + DRM_MODE_TYPE_DRIVER); + drm_mode_probed_add(connector, newmode); + } + } + +end: + list_for_each_entry(newmode, &connector->probed_modes, head) { + if (newmode->type & DRM_MODE_TYPE_PREFERRED) { + intel_sdvo->sdvo_lvds_fixed_mode = + drm_mode_duplicate(connector->dev, newmode); + + intel_sdvo->is_lvds = true; + break; + } + } + +} + +static int intel_sdvo_get_modes(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + + if (IS_TV(intel_sdvo_connector)) + intel_sdvo_get_tv_modes(connector); + else if (IS_LVDS(intel_sdvo_connector)) + intel_sdvo_get_lvds_modes(connector); + else + intel_sdvo_get_ddc_modes(connector); + + return !list_empty(&connector->probed_modes); +} + +static void +intel_sdvo_destroy_enhance_property(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + struct drm_device *dev = connector->dev; + + if (intel_sdvo_connector->left) + drm_property_destroy(dev, intel_sdvo_connector->left); + if (intel_sdvo_connector->right) + drm_property_destroy(dev, intel_sdvo_connector->right); + if (intel_sdvo_connector->top) + drm_property_destroy(dev, intel_sdvo_connector->top); + if (intel_sdvo_connector->bottom) + drm_property_destroy(dev, intel_sdvo_connector->bottom); + if (intel_sdvo_connector->hpos) + drm_property_destroy(dev, intel_sdvo_connector->hpos); + if (intel_sdvo_connector->vpos) + drm_property_destroy(dev, intel_sdvo_connector->vpos); + if (intel_sdvo_connector->saturation) + drm_property_destroy(dev, intel_sdvo_connector->saturation); + if (intel_sdvo_connector->contrast) + drm_property_destroy(dev, intel_sdvo_connector->contrast); + if (intel_sdvo_connector->hue) + drm_property_destroy(dev, intel_sdvo_connector->hue); + if (intel_sdvo_connector->sharpness) + drm_property_destroy(dev, intel_sdvo_connector->sharpness); + if (intel_sdvo_connector->flicker_filter) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter); + if (intel_sdvo_connector->flicker_filter_2d) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter_2d); + if (intel_sdvo_connector->flicker_filter_adaptive) + drm_property_destroy(dev, intel_sdvo_connector->flicker_filter_adaptive); + if (intel_sdvo_connector->tv_luma_filter) + drm_property_destroy(dev, intel_sdvo_connector->tv_luma_filter); + if (intel_sdvo_connector->tv_chroma_filter) + drm_property_destroy(dev, intel_sdvo_connector->tv_chroma_filter); + if (intel_sdvo_connector->dot_crawl) + drm_property_destroy(dev, intel_sdvo_connector->dot_crawl); + if (intel_sdvo_connector->brightness) + drm_property_destroy(dev, intel_sdvo_connector->brightness); +} + +static void intel_sdvo_destroy(struct drm_connector *connector) +{ + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + + if (intel_sdvo_connector->tv_format) + drm_property_destroy(connector->dev, + intel_sdvo_connector->tv_format); + + intel_sdvo_destroy_enhance_property(connector); + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(intel_sdvo_connector); +} + +static bool intel_sdvo_detect_hdmi_audio(struct drm_connector *connector) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct edid *edid; + bool has_audio = false; + + if (!intel_sdvo->is_hdmi) + return false; + + edid = intel_sdvo_get_edid(connector); + if (edid != NULL && edid->input & DRM_EDID_INPUT_DIGITAL) + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + + return has_audio; +} + +static int +intel_sdvo_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector); + struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + uint16_t temp_value; + uint8_t cmd; + int ret; + + ret = drm_connector_property_set_value(connector, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + int i = val; + bool has_audio; + + if (i == intel_sdvo_connector->force_audio) + return 0; + + intel_sdvo_connector->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_sdvo_detect_hdmi_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (has_audio == intel_sdvo->has_hdmi_audio) + return 0; + + intel_sdvo->has_hdmi_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_sdvo->color_range) + return 0; + + intel_sdvo->color_range = val ? SDVO_COLOR_RANGE_16_235 : 0; + goto done; + } + +#define CHECK_PROPERTY(name, NAME) \ + if (intel_sdvo_connector->name == property) { \ + if (intel_sdvo_connector->cur_##name == temp_value) return 0; \ + if (intel_sdvo_connector->max_##name < temp_value) return -EINVAL; \ + cmd = SDVO_CMD_SET_##NAME; \ + intel_sdvo_connector->cur_##name = temp_value; \ + goto set_value; \ + } + + if (property == intel_sdvo_connector->tv_format) { + if (val >= TV_FORMAT_NUM) + return -EINVAL; + + if (intel_sdvo->tv_format_index == + intel_sdvo_connector->tv_format_supported[val]) + return 0; + + intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[val]; + goto done; + } else if (IS_TV_OR_LVDS(intel_sdvo_connector)) { + temp_value = val; + if (intel_sdvo_connector->left == property) { + drm_connector_property_set_value(connector, + intel_sdvo_connector->right, val); + if (intel_sdvo_connector->left_margin == temp_value) + return 0; + + intel_sdvo_connector->left_margin = temp_value; + intel_sdvo_connector->right_margin = temp_value; + temp_value = intel_sdvo_connector->max_hscan - + intel_sdvo_connector->left_margin; + cmd = SDVO_CMD_SET_OVERSCAN_H; + goto set_value; + } else if (intel_sdvo_connector->right == property) { + drm_connector_property_set_value(connector, + intel_sdvo_connector->left, val); + if (intel_sdvo_connector->right_margin == temp_value) + return 0; + + intel_sdvo_connector->left_margin = temp_value; + intel_sdvo_connector->right_margin = temp_value; + temp_value = intel_sdvo_connector->max_hscan - + intel_sdvo_connector->left_margin; + cmd = SDVO_CMD_SET_OVERSCAN_H; + goto set_value; + } else if (intel_sdvo_connector->top == property) { + drm_connector_property_set_value(connector, + intel_sdvo_connector->bottom, val); + if (intel_sdvo_connector->top_margin == temp_value) + return 0; + + intel_sdvo_connector->top_margin = temp_value; + intel_sdvo_connector->bottom_margin = temp_value; + temp_value = intel_sdvo_connector->max_vscan - + intel_sdvo_connector->top_margin; + cmd = SDVO_CMD_SET_OVERSCAN_V; + goto set_value; + } else if (intel_sdvo_connector->bottom == property) { + drm_connector_property_set_value(connector, + intel_sdvo_connector->top, val); + if (intel_sdvo_connector->bottom_margin == temp_value) + return 0; + + intel_sdvo_connector->top_margin = temp_value; + intel_sdvo_connector->bottom_margin = temp_value; + temp_value = intel_sdvo_connector->max_vscan - + intel_sdvo_connector->top_margin; + cmd = SDVO_CMD_SET_OVERSCAN_V; + goto set_value; + } + CHECK_PROPERTY(hpos, HPOS) + CHECK_PROPERTY(vpos, VPOS) + CHECK_PROPERTY(saturation, SATURATION) + CHECK_PROPERTY(contrast, CONTRAST) + CHECK_PROPERTY(hue, HUE) + CHECK_PROPERTY(brightness, BRIGHTNESS) + CHECK_PROPERTY(sharpness, SHARPNESS) + CHECK_PROPERTY(flicker_filter, FLICKER_FILTER) + CHECK_PROPERTY(flicker_filter_2d, FLICKER_FILTER_2D) + CHECK_PROPERTY(flicker_filter_adaptive, FLICKER_FILTER_ADAPTIVE) + CHECK_PROPERTY(tv_chroma_filter, TV_CHROMA_FILTER) + CHECK_PROPERTY(tv_luma_filter, TV_LUMA_FILTER) + CHECK_PROPERTY(dot_crawl, DOT_CRAWL) + } + + return -EINVAL; /* unknown property */ + +set_value: + if (!intel_sdvo_set_value(intel_sdvo, cmd, &temp_value, 2)) + return -EIO; + + +done: + if (intel_sdvo->base.base.crtc) { + struct drm_crtc *crtc = intel_sdvo->base.base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +#undef CHECK_PROPERTY +} + +static const struct drm_encoder_helper_funcs intel_sdvo_helper_funcs = { + .mode_fixup = intel_sdvo_mode_fixup, + .mode_set = intel_sdvo_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_sdvo_connector_funcs = { + .dpms = intel_sdvo_dpms, + .detect = intel_sdvo_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_sdvo_set_property, + .destroy = intel_sdvo_destroy, +}; + +static const struct drm_connector_helper_funcs intel_sdvo_connector_helper_funcs = { + .get_modes = intel_sdvo_get_modes, + .mode_valid = intel_sdvo_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static void intel_sdvo_enc_destroy(struct drm_encoder *encoder) +{ + struct intel_sdvo *intel_sdvo = to_intel_sdvo(encoder); + + if (intel_sdvo->sdvo_lvds_fixed_mode != NULL) + drm_mode_destroy(encoder->dev, + intel_sdvo->sdvo_lvds_fixed_mode); + + i2c_del_adapter(&intel_sdvo->ddc); + intel_encoder_destroy(encoder); +} + +static const struct drm_encoder_funcs intel_sdvo_enc_funcs = { + .destroy = intel_sdvo_enc_destroy, +}; + +static void +intel_sdvo_guess_ddc_bus(struct intel_sdvo *sdvo) +{ + uint16_t mask = 0; + unsigned int num_bits; + + /* Make a mask of outputs less than or equal to our own priority in the + * list. + */ + switch (sdvo->controlled_output) { + case SDVO_OUTPUT_LVDS1: + mask |= SDVO_OUTPUT_LVDS1; + case SDVO_OUTPUT_LVDS0: + mask |= SDVO_OUTPUT_LVDS0; + case SDVO_OUTPUT_TMDS1: + mask |= SDVO_OUTPUT_TMDS1; + case SDVO_OUTPUT_TMDS0: + mask |= SDVO_OUTPUT_TMDS0; + case SDVO_OUTPUT_RGB1: + mask |= SDVO_OUTPUT_RGB1; + case SDVO_OUTPUT_RGB0: + mask |= SDVO_OUTPUT_RGB0; + break; + } + + /* Count bits to find what number we are in the priority list. */ + mask &= sdvo->caps.output_flags; + num_bits = hweight16(mask); + /* If more than 3 outputs, default to DDC bus 3 for now. */ + if (num_bits > 3) + num_bits = 3; + + /* Corresponds to SDVO_CONTROL_BUS_DDCx */ + sdvo->ddc_bus = 1 << num_bits; +} + +/** + * Choose the appropriate DDC bus for control bus switch command for this + * SDVO output based on the controlled output. + * + * DDC bus number assignment is in a priority order of RGB outputs, then TMDS + * outputs, then LVDS outputs. + */ +static void +intel_sdvo_select_ddc_bus(struct drm_i915_private *dev_priv, + struct intel_sdvo *sdvo, u32 reg) +{ + struct sdvo_device_mapping *mapping; + + if (sdvo->is_sdvob) + mapping = &(dev_priv->sdvo_mappings[0]); + else + mapping = &(dev_priv->sdvo_mappings[1]); + + if (mapping->initialized) + sdvo->ddc_bus = 1 << ((mapping->ddc_pin & 0xf0) >> 4); + else + intel_sdvo_guess_ddc_bus(sdvo); +} + +static void +intel_sdvo_select_i2c_bus(struct drm_i915_private *dev_priv, + struct intel_sdvo *sdvo, u32 reg) +{ + struct sdvo_device_mapping *mapping; + u8 pin; + + if (sdvo->is_sdvob) + mapping = &dev_priv->sdvo_mappings[0]; + else + mapping = &dev_priv->sdvo_mappings[1]; + + if (mapping->initialized && intel_gmbus_is_port_valid(mapping->i2c_pin)) + pin = mapping->i2c_pin; + else + pin = GMBUS_PORT_DPB; + + sdvo->i2c = intel_gmbus_get_adapter(dev_priv, pin); + + /* With gmbus we should be able to drive sdvo i2c at 2MHz, but somehow + * our code totally fails once we start using gmbus. Hence fall back to + * bit banging for now. */ + intel_gmbus_force_bit(sdvo->i2c, true); +} + +/* undo any changes intel_sdvo_select_i2c_bus() did to sdvo->i2c */ +static void +intel_sdvo_unselect_i2c_bus(struct intel_sdvo *sdvo) +{ + intel_gmbus_force_bit(sdvo->i2c, false); +} + +static bool +intel_sdvo_is_hdmi_connector(struct intel_sdvo *intel_sdvo, int device) +{ + return intel_sdvo_check_supp_encode(intel_sdvo); +} + +static u8 +intel_sdvo_get_slave_addr(struct drm_device *dev, struct intel_sdvo *sdvo) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct sdvo_device_mapping *my_mapping, *other_mapping; + + if (sdvo->is_sdvob) { + my_mapping = &dev_priv->sdvo_mappings[0]; + other_mapping = &dev_priv->sdvo_mappings[1]; + } else { + my_mapping = &dev_priv->sdvo_mappings[1]; + other_mapping = &dev_priv->sdvo_mappings[0]; + } + + /* If the BIOS described our SDVO device, take advantage of it. */ + if (my_mapping->slave_addr) + return my_mapping->slave_addr; + + /* If the BIOS only described a different SDVO device, use the + * address that it isn't using. + */ + if (other_mapping->slave_addr) { + if (other_mapping->slave_addr == 0x70) + return 0x72; + else + return 0x70; + } + + /* No SDVO device info is found for another DVO port, + * so use mapping assumption we had before BIOS parsing. + */ + if (sdvo->is_sdvob) + return 0x70; + else + return 0x72; +} + +static void +intel_sdvo_connector_init(struct intel_sdvo_connector *connector, + struct intel_sdvo *encoder) +{ + drm_connector_init(encoder->base.base.dev, + &connector->base.base, + &intel_sdvo_connector_funcs, + connector->base.base.connector_type); + + drm_connector_helper_add(&connector->base.base, + &intel_sdvo_connector_helper_funcs); + + connector->base.base.interlace_allowed = 1; + connector->base.base.doublescan_allowed = 0; + connector->base.base.display_info.subpixel_order = SubPixelHorizontalRGB; + connector->base.get_hw_state = intel_sdvo_connector_get_hw_state; + + intel_connector_attach_encoder(&connector->base, &encoder->base); + drm_sysfs_connector_add(&connector->base.base); +} + +static void +intel_sdvo_add_hdmi_properties(struct intel_sdvo_connector *connector) +{ + struct drm_device *dev = connector->base.base.dev; + + intel_attach_force_audio_property(&connector->base.base); + if (INTEL_INFO(dev)->gen >= 4 && IS_MOBILE(dev)) + intel_attach_broadcast_rgb_property(&connector->base.base); +} + +static bool +intel_sdvo_dvi_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_encoder *intel_encoder = to_intel_encoder(encoder); + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_TMDS0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_TMDS1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_TMDS1; + } + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + if (intel_sdvo_get_hotplug_support(intel_sdvo) & + intel_sdvo_connector->output_flag) { + connector->polled = DRM_CONNECTOR_POLL_HPD; + intel_sdvo->hotplug_active |= intel_sdvo_connector->output_flag; + /* Some SDVO devices have one-shot hotplug interrupts. + * Ensure that they get re-enabled when an interrupt happens. + */ + intel_encoder->hot_plug = intel_sdvo_enable_hotplug; + intel_sdvo_enable_hotplug(intel_encoder); + } else { + connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT; + } + encoder->encoder_type = DRM_MODE_ENCODER_TMDS; + connector->connector_type = DRM_MODE_CONNECTOR_DVID; + + if (intel_sdvo_is_hdmi_connector(intel_sdvo, device)) { + connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; + intel_sdvo->is_hdmi = true; + } + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + if (intel_sdvo->is_hdmi) + intel_sdvo_add_hdmi_properties(intel_sdvo_connector); + + return true; +} + +static bool +intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + encoder->encoder_type = DRM_MODE_ENCODER_TVDAC; + connector->connector_type = DRM_MODE_CONNECTOR_SVIDEO; + + intel_sdvo->controlled_output |= type; + intel_sdvo_connector->output_flag = type; + + intel_sdvo->is_tv = true; + intel_sdvo->base.needs_tv_clock = true; + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + + if (!intel_sdvo_tv_create_property(intel_sdvo, intel_sdvo_connector, type)) + goto err; + + if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) + goto err; + + return true; + +err: + intel_sdvo_destroy(connector); + return false; +} + +static bool +intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + encoder->encoder_type = DRM_MODE_ENCODER_DAC; + connector->connector_type = DRM_MODE_CONNECTOR_VGA; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_RGB0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_RGB1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_RGB1; + } + + intel_sdvo_connector_init(intel_sdvo_connector, + intel_sdvo); + return true; +} + +static bool +intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device) +{ + struct drm_encoder *encoder = &intel_sdvo->base.base; + struct drm_connector *connector; + struct intel_connector *intel_connector; + struct intel_sdvo_connector *intel_sdvo_connector; + + intel_sdvo_connector = kzalloc(sizeof(struct intel_sdvo_connector), GFP_KERNEL); + if (!intel_sdvo_connector) + return false; + + intel_connector = &intel_sdvo_connector->base; + connector = &intel_connector->base; + encoder->encoder_type = DRM_MODE_ENCODER_LVDS; + connector->connector_type = DRM_MODE_CONNECTOR_LVDS; + + if (device == 0) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS0; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_LVDS0; + } else if (device == 1) { + intel_sdvo->controlled_output |= SDVO_OUTPUT_LVDS1; + intel_sdvo_connector->output_flag = SDVO_OUTPUT_LVDS1; + } + + intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); + if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) + goto err; + + return true; + +err: + intel_sdvo_destroy(connector); + return false; +} + +static bool +intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) +{ + intel_sdvo->is_tv = false; + intel_sdvo->base.needs_tv_clock = false; + intel_sdvo->is_lvds = false; + + /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/ + + if (flags & SDVO_OUTPUT_TMDS0) + if (!intel_sdvo_dvi_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_TMDS_MASK) == SDVO_TMDS_MASK) + if (!intel_sdvo_dvi_init(intel_sdvo, 1)) + return false; + + /* TV has no XXX1 function block */ + if (flags & SDVO_OUTPUT_SVID0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_SVID0)) + return false; + + if (flags & SDVO_OUTPUT_CVBS0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_CVBS0)) + return false; + + if (flags & SDVO_OUTPUT_YPRPB0) + if (!intel_sdvo_tv_init(intel_sdvo, SDVO_OUTPUT_YPRPB0)) + return false; + + if (flags & SDVO_OUTPUT_RGB0) + if (!intel_sdvo_analog_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_RGB_MASK) == SDVO_RGB_MASK) + if (!intel_sdvo_analog_init(intel_sdvo, 1)) + return false; + + if (flags & SDVO_OUTPUT_LVDS0) + if (!intel_sdvo_lvds_init(intel_sdvo, 0)) + return false; + + if ((flags & SDVO_LVDS_MASK) == SDVO_LVDS_MASK) + if (!intel_sdvo_lvds_init(intel_sdvo, 1)) + return false; + + if ((flags & SDVO_OUTPUT_MASK) == 0) { + unsigned char bytes[2]; + + intel_sdvo->controlled_output = 0; + memcpy(bytes, &intel_sdvo->caps.output_flags, 2); + DRM_DEBUG_KMS("%s: Unknown SDVO output type (0x%02x%02x)\n", + SDVO_NAME(intel_sdvo), + bytes[0], bytes[1]); + return false; + } + intel_sdvo->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + + return true; +} + +static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector, *tmp; + + list_for_each_entry_safe(connector, tmp, + &dev->mode_config.connector_list, head) { + if (intel_attached_encoder(connector) == &intel_sdvo->base) + intel_sdvo_destroy(connector); + } +} + +static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + int type) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct intel_sdvo_tv_format format; + uint32_t format_map, i; + + if (!intel_sdvo_set_target_output(intel_sdvo, type)) + return false; + + BUILD_BUG_ON(sizeof(format) != 6); + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPPORTED_TV_FORMATS, + &format, sizeof(format))) + return false; + + memcpy(&format_map, &format, min(sizeof(format_map), sizeof(format))); + + if (format_map == 0) + return false; + + intel_sdvo_connector->format_supported_num = 0; + for (i = 0 ; i < TV_FORMAT_NUM; i++) + if (format_map & (1 << i)) + intel_sdvo_connector->tv_format_supported[intel_sdvo_connector->format_supported_num++] = i; + + + intel_sdvo_connector->tv_format = + drm_property_create(dev, DRM_MODE_PROP_ENUM, + "mode", intel_sdvo_connector->format_supported_num); + if (!intel_sdvo_connector->tv_format) + return false; + + for (i = 0; i < intel_sdvo_connector->format_supported_num; i++) + drm_property_add_enum( + intel_sdvo_connector->tv_format, i, + i, tv_format_names[intel_sdvo_connector->tv_format_supported[i]]); + + intel_sdvo->tv_format_index = intel_sdvo_connector->tv_format_supported[0]; + drm_connector_attach_property(&intel_sdvo_connector->base.base, + intel_sdvo_connector->tv_format, 0); + return true; + +} + +#define ENHANCEMENT(name, NAME) do { \ + if (enhancements.name) { \ + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_MAX_##NAME, &data_value, 4) || \ + !intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_##NAME, &response, 2)) \ + return false; \ + intel_sdvo_connector->max_##name = data_value[0]; \ + intel_sdvo_connector->cur_##name = response; \ + intel_sdvo_connector->name = \ + drm_property_create_range(dev, 0, #name, 0, data_value[0]); \ + if (!intel_sdvo_connector->name) return false; \ + drm_connector_attach_property(connector, \ + intel_sdvo_connector->name, \ + intel_sdvo_connector->cur_##name); \ + DRM_DEBUG_KMS(#name ": max %d, default %d, current %d\n", \ + data_value[0], data_value[1], response); \ + } \ +} while (0) + +static bool +intel_sdvo_create_enhance_property_tv(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + struct intel_sdvo_enhancements_reply enhancements) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector = &intel_sdvo_connector->base.base; + uint16_t response, data_value[2]; + + /* when horizontal overscan is supported, Add the left/right property */ + if (enhancements.overscan_h) { + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_MAX_OVERSCAN_H, + &data_value, 4)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_OVERSCAN_H, + &response, 2)) + return false; + + intel_sdvo_connector->max_hscan = data_value[0]; + intel_sdvo_connector->left_margin = data_value[0] - response; + intel_sdvo_connector->right_margin = intel_sdvo_connector->left_margin; + intel_sdvo_connector->left = + drm_property_create_range(dev, 0, "left_margin", 0, data_value[0]); + if (!intel_sdvo_connector->left) + return false; + + drm_connector_attach_property(connector, + intel_sdvo_connector->left, + intel_sdvo_connector->left_margin); + + intel_sdvo_connector->right = + drm_property_create_range(dev, 0, "right_margin", 0, data_value[0]); + if (!intel_sdvo_connector->right) + return false; + + drm_connector_attach_property(connector, + intel_sdvo_connector->right, + intel_sdvo_connector->right_margin); + DRM_DEBUG_KMS("h_overscan: max %d, " + "default %d, current %d\n", + data_value[0], data_value[1], response); + } + + if (enhancements.overscan_v) { + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_MAX_OVERSCAN_V, + &data_value, 4)) + return false; + + if (!intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_OVERSCAN_V, + &response, 2)) + return false; + + intel_sdvo_connector->max_vscan = data_value[0]; + intel_sdvo_connector->top_margin = data_value[0] - response; + intel_sdvo_connector->bottom_margin = intel_sdvo_connector->top_margin; + intel_sdvo_connector->top = + drm_property_create_range(dev, 0, + "top_margin", 0, data_value[0]); + if (!intel_sdvo_connector->top) + return false; + + drm_connector_attach_property(connector, + intel_sdvo_connector->top, + intel_sdvo_connector->top_margin); + + intel_sdvo_connector->bottom = + drm_property_create_range(dev, 0, + "bottom_margin", 0, data_value[0]); + if (!intel_sdvo_connector->bottom) + return false; + + drm_connector_attach_property(connector, + intel_sdvo_connector->bottom, + intel_sdvo_connector->bottom_margin); + DRM_DEBUG_KMS("v_overscan: max %d, " + "default %d, current %d\n", + data_value[0], data_value[1], response); + } + + ENHANCEMENT(hpos, HPOS); + ENHANCEMENT(vpos, VPOS); + ENHANCEMENT(saturation, SATURATION); + ENHANCEMENT(contrast, CONTRAST); + ENHANCEMENT(hue, HUE); + ENHANCEMENT(sharpness, SHARPNESS); + ENHANCEMENT(brightness, BRIGHTNESS); + ENHANCEMENT(flicker_filter, FLICKER_FILTER); + ENHANCEMENT(flicker_filter_adaptive, FLICKER_FILTER_ADAPTIVE); + ENHANCEMENT(flicker_filter_2d, FLICKER_FILTER_2D); + ENHANCEMENT(tv_chroma_filter, TV_CHROMA_FILTER); + ENHANCEMENT(tv_luma_filter, TV_LUMA_FILTER); + + if (enhancements.dot_crawl) { + if (!intel_sdvo_get_value(intel_sdvo, SDVO_CMD_GET_DOT_CRAWL, &response, 2)) + return false; + + intel_sdvo_connector->max_dot_crawl = 1; + intel_sdvo_connector->cur_dot_crawl = response & 0x1; + intel_sdvo_connector->dot_crawl = + drm_property_create_range(dev, 0, "dot_crawl", 0, 1); + if (!intel_sdvo_connector->dot_crawl) + return false; + + drm_connector_attach_property(connector, + intel_sdvo_connector->dot_crawl, + intel_sdvo_connector->cur_dot_crawl); + DRM_DEBUG_KMS("dot crawl: current %d\n", response); + } + + return true; +} + +static bool +intel_sdvo_create_enhance_property_lvds(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector, + struct intel_sdvo_enhancements_reply enhancements) +{ + struct drm_device *dev = intel_sdvo->base.base.dev; + struct drm_connector *connector = &intel_sdvo_connector->base.base; + uint16_t response, data_value[2]; + + ENHANCEMENT(brightness, BRIGHTNESS); + + return true; +} +#undef ENHANCEMENT + +static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo, + struct intel_sdvo_connector *intel_sdvo_connector) +{ + union { + struct intel_sdvo_enhancements_reply reply; + uint16_t response; + } enhancements; + + BUILD_BUG_ON(sizeof(enhancements) != 2); + + enhancements.response = 0; + intel_sdvo_get_value(intel_sdvo, + SDVO_CMD_GET_SUPPORTED_ENHANCEMENTS, + &enhancements, sizeof(enhancements)); + if (enhancements.response == 0) { + DRM_DEBUG_KMS("No enhancement is supported\n"); + return true; + } + + if (IS_TV(intel_sdvo_connector)) + return intel_sdvo_create_enhance_property_tv(intel_sdvo, intel_sdvo_connector, enhancements.reply); + else if (IS_LVDS(intel_sdvo_connector)) + return intel_sdvo_create_enhance_property_lvds(intel_sdvo, intel_sdvo_connector, enhancements.reply); + else + return true; +} + +static int intel_sdvo_ddc_proxy_xfer(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct intel_sdvo *sdvo = adapter->algo_data; + + if (!intel_sdvo_set_control_bus_switch(sdvo, sdvo->ddc_bus)) + return -EIO; + + return sdvo->i2c->algo->master_xfer(sdvo->i2c, msgs, num); +} + +static u32 intel_sdvo_ddc_proxy_func(struct i2c_adapter *adapter) +{ + struct intel_sdvo *sdvo = adapter->algo_data; + return sdvo->i2c->algo->functionality(sdvo->i2c); +} + +static const struct i2c_algorithm intel_sdvo_ddc_proxy = { + .master_xfer = intel_sdvo_ddc_proxy_xfer, + .functionality = intel_sdvo_ddc_proxy_func +}; + +static bool +intel_sdvo_init_ddc_proxy(struct intel_sdvo *sdvo, + struct drm_device *dev) +{ + sdvo->ddc.owner = THIS_MODULE; + sdvo->ddc.class = I2C_CLASS_DDC; + snprintf(sdvo->ddc.name, I2C_NAME_SIZE, "SDVO DDC proxy"); + sdvo->ddc.dev.parent = &dev->pdev->dev; + sdvo->ddc.algo_data = sdvo; + sdvo->ddc.algo = &intel_sdvo_ddc_proxy; + + return i2c_add_adapter(&sdvo->ddc) == 0; +} + +bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_encoder *intel_encoder; + struct intel_sdvo *intel_sdvo; + u32 hotplug_mask; + int i; + + intel_sdvo = kzalloc(sizeof(struct intel_sdvo), GFP_KERNEL); + if (!intel_sdvo) + return false; + + intel_sdvo->sdvo_reg = sdvo_reg; + intel_sdvo->is_sdvob = is_sdvob; + intel_sdvo->slave_addr = intel_sdvo_get_slave_addr(dev, intel_sdvo) >> 1; + intel_sdvo_select_i2c_bus(dev_priv, intel_sdvo, sdvo_reg); + if (!intel_sdvo_init_ddc_proxy(intel_sdvo, dev)) + goto err_i2c_bus; + + /* encoder type will be decided later */ + intel_encoder = &intel_sdvo->base; + intel_encoder->type = INTEL_OUTPUT_SDVO; + drm_encoder_init(dev, &intel_encoder->base, &intel_sdvo_enc_funcs, 0); + + /* Read the regs to test if we can talk to the device */ + for (i = 0; i < 0x40; i++) { + u8 byte; + + if (!intel_sdvo_read_byte(intel_sdvo, i, &byte)) { + DRM_DEBUG_KMS("No SDVO device found on %s\n", + SDVO_NAME(intel_sdvo)); + goto err; + } + } + + hotplug_mask = 0; + if (IS_G4X(dev)) { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_G4X : SDVOC_HOTPLUG_INT_STATUS_G4X; + } else if (IS_GEN4(dev)) { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_I965 : SDVOC_HOTPLUG_INT_STATUS_I965; + } else { + hotplug_mask = intel_sdvo->is_sdvob ? + SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915; + } + + drm_encoder_helper_add(&intel_encoder->base, &intel_sdvo_helper_funcs); + + intel_encoder->disable = intel_disable_sdvo; + intel_encoder->enable = intel_enable_sdvo; + intel_encoder->get_hw_state = intel_sdvo_get_hw_state; + + /* In default case sdvo lvds is false */ + if (!intel_sdvo_get_capabilities(intel_sdvo, &intel_sdvo->caps)) + goto err; + + if (intel_sdvo_output_setup(intel_sdvo, + intel_sdvo->caps.output_flags) != true) { + DRM_DEBUG_KMS("SDVO output failed to setup on %s\n", + SDVO_NAME(intel_sdvo)); + /* Output_setup can leave behind connectors! */ + goto err_output; + } + + /* + * Cloning SDVO with anything is often impossible, since the SDVO + * encoder can request a special input timing mode. And even if that's + * not the case we have evidence that cloning a plain unscaled mode with + * VGA doesn't really work. Furthermore the cloning flags are way too + * simplistic anyway to express such constraints, so just give up on + * cloning for SDVO encoders. + */ + intel_sdvo->base.cloneable = false; + + /* Only enable the hotplug irq if we need it, to work around noisy + * hotplug lines. + */ + if (intel_sdvo->hotplug_active) + dev_priv->hotplug_supported_mask |= hotplug_mask; + + intel_sdvo_select_ddc_bus(dev_priv, intel_sdvo, sdvo_reg); + + /* Set the input timing to the screen. Assume always input 0. */ + if (!intel_sdvo_set_target_input(intel_sdvo)) + goto err_output; + + if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo, + &intel_sdvo->pixel_clock_min, + &intel_sdvo->pixel_clock_max)) + goto err_output; + + DRM_DEBUG_KMS("%s device VID/DID: %02X:%02X.%02X, " + "clock range %dMHz - %dMHz, " + "input 1: %c, input 2: %c, " + "output 1: %c, output 2: %c\n", + SDVO_NAME(intel_sdvo), + intel_sdvo->caps.vendor_id, intel_sdvo->caps.device_id, + intel_sdvo->caps.device_rev_id, + intel_sdvo->pixel_clock_min / 1000, + intel_sdvo->pixel_clock_max / 1000, + (intel_sdvo->caps.sdvo_inputs_mask & 0x1) ? 'Y' : 'N', + (intel_sdvo->caps.sdvo_inputs_mask & 0x2) ? 'Y' : 'N', + /* check currently supported outputs */ + intel_sdvo->caps.output_flags & + (SDVO_OUTPUT_TMDS0 | SDVO_OUTPUT_RGB0) ? 'Y' : 'N', + intel_sdvo->caps.output_flags & + (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N'); + return true; + +err_output: + intel_sdvo_output_cleanup(intel_sdvo); + +err: + drm_encoder_cleanup(&intel_encoder->base); + i2c_del_adapter(&intel_sdvo->ddc); +err_i2c_bus: + intel_sdvo_unselect_i2c_bus(intel_sdvo); + kfree(intel_sdvo); + + return false; +} --- linux-3.5.0.orig/ubuntu/i915/i915_debugfs.c +++ linux-3.5.0/ubuntu/i915/i915_debugfs.c @@ -0,0 +1,2132 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Keith Packard + * + */ + +#include +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "intel_drv.h" +#include "intel_ringbuffer.h" +#include "i915_drm.h" +#include "i915_drv.h" + +#define DRM_I915_RING_DEBUG 1 + + +#if defined(CONFIG_DEBUG_FS) + +enum { + ACTIVE_LIST, + INACTIVE_LIST, + PINNED_LIST, +}; + +static const char *yesno(int v) +{ + return v ? "yes" : "no"; +} + +static int i915_capabilities(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + const struct intel_device_info *info = INTEL_INFO(dev); + + seq_printf(m, "gen: %d\n", info->gen); + seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(dev)); +#define DEV_INFO_FLAG(x) seq_printf(m, #x ": %s\n", yesno(info->x)) +#define DEV_INFO_SEP ; + DEV_INFO_FLAGS; +#undef DEV_INFO_FLAG +#undef DEV_INFO_SEP + + return 0; +} + +static const char *get_pin_flag(struct drm_i915_gem_object *obj) +{ + if (obj->user_pin_count > 0) + return "P"; + else if (obj->pin_count > 0) + return "p"; + else + return " "; +} + +static const char *get_tiling_flag(struct drm_i915_gem_object *obj) +{ + switch (obj->tiling_mode) { + default: + case I915_TILING_NONE: return " "; + case I915_TILING_X: return "X"; + case I915_TILING_Y: return "Y"; + } +} + +static const char *cache_level_str(int type) +{ + switch (type) { + case I915_CACHE_NONE: return " uncached"; + case I915_CACHE_LLC: return " snooped (LLC)"; + case I915_CACHE_LLC_MLC: return " snooped (LLC+MLC)"; + default: return ""; + } +} + +static void +describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) +{ + seq_printf(m, "%p: %s%s %8zdKiB %04x %04x %d %d %d%s%s%s", + &obj->base, + get_pin_flag(obj), + get_tiling_flag(obj), + obj->base.size / 1024, + obj->base.read_domains, + obj->base.write_domain, + obj->last_read_seqno, + obj->last_write_seqno, + obj->last_fenced_seqno, + cache_level_str(obj->cache_level), + obj->dirty ? " dirty" : "", + obj->madv == I915_MADV_DONTNEED ? " purgeable" : ""); + if (obj->base.name) + seq_printf(m, " (name: %d)", obj->base.name); + if (obj->pin_count) + seq_printf(m, " (pinned x %d)", obj->pin_count); + if (obj->fence_reg != I915_FENCE_REG_NONE) + seq_printf(m, " (fence: %d)", obj->fence_reg); + if (obj->gtt_space != NULL) + seq_printf(m, " (gtt offset: %08x, size: %08x)", + obj->gtt_offset, (unsigned int)obj->gtt_space->size); + if (obj->pin_mappable || obj->fault_mappable) { + char s[3], *t = s; + if (obj->pin_mappable) + *t++ = 'p'; + if (obj->fault_mappable) + *t++ = 'f'; + *t = '\0'; + seq_printf(m, " (%s mappable)", s); + } + if (obj->ring != NULL) + seq_printf(m, " (%s)", obj->ring->name); +} + +static int i915_gem_object_list_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + uintptr_t list = (uintptr_t) node->info_ent->data; + struct list_head *head; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + size_t total_obj_size, total_gtt_size; + int count, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + switch (list) { + case ACTIVE_LIST: + seq_printf(m, "Active:\n"); + head = &dev_priv->mm.active_list; + break; + case INACTIVE_LIST: + seq_printf(m, "Inactive:\n"); + head = &dev_priv->mm.inactive_list; + break; + default: + mutex_unlock(&dev->struct_mutex); + return -EINVAL; + } + + total_obj_size = total_gtt_size = count = 0; + list_for_each_entry(obj, head, mm_list) { + seq_printf(m, " "); + describe_obj(m, obj); + seq_printf(m, "\n"); + total_obj_size += obj->base.size; + total_gtt_size += obj->gtt_space->size; + count++; + } + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "Total %d objects, %zu bytes, %zu GTT size\n", + count, total_obj_size, total_gtt_size); + return 0; +} + +#define count_objects(list, member) do { \ + list_for_each_entry(obj, list, member) { \ + size += obj->gtt_space->size; \ + ++count; \ + if (obj->map_and_fenceable) { \ + mappable_size += obj->gtt_space->size; \ + ++mappable_count; \ + } \ + } \ +} while (0) + +static int i915_gem_object_info(struct seq_file *m, void* data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 count, mappable_count, purgeable_count; + size_t size, mappable_size, purgeable_size; + struct drm_i915_gem_object *obj; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "%u objects, %zu bytes\n", + dev_priv->mm.object_count, + dev_priv->mm.object_memory); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.bound_list, gtt_list); + seq_printf(m, "%u [%u] objects, %zu [%zu] bytes in gtt\n", + count, mappable_count, size, mappable_size); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.active_list, mm_list); + seq_printf(m, " %u [%u] active objects, %zu [%zu] bytes\n", + count, mappable_count, size, mappable_size); + + size = count = mappable_size = mappable_count = 0; + count_objects(&dev_priv->mm.inactive_list, mm_list); + seq_printf(m, " %u [%u] inactive objects, %zu [%zu] bytes\n", + count, mappable_count, size, mappable_size); + + size = count = purgeable_size = purgeable_count = 0; + list_for_each_entry(obj, &dev_priv->mm.unbound_list, gtt_list) { + size += obj->base.size, ++count; + if (obj->madv == I915_MADV_DONTNEED) + purgeable_size += obj->base.size, ++purgeable_count; + } + seq_printf(m, "%u unbound objects, %zu bytes\n", count, size); + + size = count = mappable_size = mappable_count = 0; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + if (obj->fault_mappable) { + size += obj->gtt_space->size; + ++count; + } + if (obj->pin_mappable) { + mappable_size += obj->gtt_space->size; + ++mappable_count; + } + if (obj->madv == I915_MADV_DONTNEED) { + purgeable_size += obj->base.size; + ++purgeable_count; + } + } + seq_printf(m, "%u purgeable objects, %zu bytes\n", + purgeable_count, purgeable_size); + seq_printf(m, "%u pinned mappable objects, %zu bytes\n", + mappable_count, mappable_size); + seq_printf(m, "%u fault mappable objects, %zu bytes\n", + count, size); + + seq_printf(m, "%zu [%zu] gtt total\n", + dev_priv->mm.gtt_total, dev_priv->mm.mappable_gtt_total); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_gem_gtt_info(struct seq_file *m, void* data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + uintptr_t list = (uintptr_t) node->info_ent->data; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + size_t total_obj_size, total_gtt_size; + int count, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + total_obj_size = total_gtt_size = count = 0; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + if (list == PINNED_LIST && obj->pin_count == 0) + continue; + + seq_printf(m, " "); + describe_obj(m, obj); + seq_printf(m, "\n"); + total_obj_size += obj->base.size; + total_gtt_size += obj->gtt_space->size; + count++; + } + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "Total %d objects, %zu bytes, %zu GTT size\n", + count, total_obj_size, total_gtt_size); + + return 0; +} + +static int i915_gem_pageflip_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + unsigned long flags; + struct intel_crtc *crtc; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) { + const char pipe = pipe_name(crtc->pipe); + const char plane = plane_name(crtc->plane); + struct intel_unpin_work *work; + + spin_lock_irqsave(&dev->event_lock, flags); + work = crtc->unpin_work; + if (work == NULL) { + seq_printf(m, "No flip due on pipe %c (plane %c)\n", + pipe, plane); + } else { + if (!work->pending) { + seq_printf(m, "Flip queued on pipe %c (plane %c)\n", + pipe, plane); + } else { + seq_printf(m, "Flip pending (waiting for vsync) on pipe %c (plane %c)\n", + pipe, plane); + } + if (work->enable_stall_check) + seq_printf(m, "Stall check enabled, "); + else + seq_printf(m, "Stall check waiting for page flip ioctl, "); + seq_printf(m, "%d prepares\n", work->pending); + + if (work->old_fb_obj) { + struct drm_i915_gem_object *obj = work->old_fb_obj; + if (obj) + seq_printf(m, "Old framebuffer gtt_offset 0x%08x\n", obj->gtt_offset); + } + if (work->pending_flip_obj) { + struct drm_i915_gem_object *obj = work->pending_flip_obj; + if (obj) + seq_printf(m, "New framebuffer gtt_offset 0x%08x\n", obj->gtt_offset); + } + } + spin_unlock_irqrestore(&dev->event_lock, flags); + } + + return 0; +} + +static int i915_gem_request_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + struct drm_i915_gem_request *gem_request; + int ret, count, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + count = 0; + for_each_ring(ring, dev_priv, i) { + if (list_empty(&ring->request_list)) + continue; + + seq_printf(m, "%s requests:\n", ring->name); + list_for_each_entry(gem_request, + &ring->request_list, + list) { + seq_printf(m, " %d @ %d\n", + gem_request->seqno, + (int) (jiffies - gem_request->emitted_jiffies)); + } + count++; + } + mutex_unlock(&dev->struct_mutex); + + if (count == 0) + seq_printf(m, "No requests\n"); + + return 0; +} + +static void i915_ring_seqno_info(struct seq_file *m, + struct intel_ring_buffer *ring) +{ + if (ring->get_seqno) { + seq_printf(m, "Current sequence (%s): %d\n", + ring->name, ring->get_seqno(ring, false)); + } +} + +static int i915_gem_seqno_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for_each_ring(ring, dev_priv, i) + i915_ring_seqno_info(m, ring); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + + +static int i915_interrupt_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i, pipe; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + if (IS_VALLEYVIEW(dev)) { + seq_printf(m, "Display IER:\t%08x\n", + I915_READ(VLV_IER)); + seq_printf(m, "Display IIR:\t%08x\n", + I915_READ(VLV_IIR)); + seq_printf(m, "Display IIR_RW:\t%08x\n", + I915_READ(VLV_IIR_RW)); + seq_printf(m, "Display IMR:\t%08x\n", + I915_READ(VLV_IMR)); + for_each_pipe(pipe) + seq_printf(m, "Pipe %c stat:\t%08x\n", + pipe_name(pipe), + I915_READ(PIPESTAT(pipe))); + + seq_printf(m, "Master IER:\t%08x\n", + I915_READ(VLV_MASTER_IER)); + + seq_printf(m, "Render IER:\t%08x\n", + I915_READ(GTIER)); + seq_printf(m, "Render IIR:\t%08x\n", + I915_READ(GTIIR)); + seq_printf(m, "Render IMR:\t%08x\n", + I915_READ(GTIMR)); + + seq_printf(m, "PM IER:\t\t%08x\n", + I915_READ(GEN6_PMIER)); + seq_printf(m, "PM IIR:\t\t%08x\n", + I915_READ(GEN6_PMIIR)); + seq_printf(m, "PM IMR:\t\t%08x\n", + I915_READ(GEN6_PMIMR)); + + seq_printf(m, "Port hotplug:\t%08x\n", + I915_READ(PORT_HOTPLUG_EN)); + seq_printf(m, "DPFLIPSTAT:\t%08x\n", + I915_READ(VLV_DPFLIPSTAT)); + seq_printf(m, "DPINVGTT:\t%08x\n", + I915_READ(DPINVGTT)); + + } else if (!HAS_PCH_SPLIT(dev)) { + seq_printf(m, "Interrupt enable: %08x\n", + I915_READ(IER)); + seq_printf(m, "Interrupt identity: %08x\n", + I915_READ(IIR)); + seq_printf(m, "Interrupt mask: %08x\n", + I915_READ(IMR)); + for_each_pipe(pipe) + seq_printf(m, "Pipe %c stat: %08x\n", + pipe_name(pipe), + I915_READ(PIPESTAT(pipe))); + } else { + seq_printf(m, "North Display Interrupt enable: %08x\n", + I915_READ(DEIER)); + seq_printf(m, "North Display Interrupt identity: %08x\n", + I915_READ(DEIIR)); + seq_printf(m, "North Display Interrupt mask: %08x\n", + I915_READ(DEIMR)); + seq_printf(m, "South Display Interrupt enable: %08x\n", + I915_READ(SDEIER)); + seq_printf(m, "South Display Interrupt identity: %08x\n", + I915_READ(SDEIIR)); + seq_printf(m, "South Display Interrupt mask: %08x\n", + I915_READ(SDEIMR)); + seq_printf(m, "Graphics Interrupt enable: %08x\n", + I915_READ(GTIER)); + seq_printf(m, "Graphics Interrupt identity: %08x\n", + I915_READ(GTIIR)); + seq_printf(m, "Graphics Interrupt mask: %08x\n", + I915_READ(GTIMR)); + } + seq_printf(m, "Interrupts received: %d\n", + atomic_read(&dev_priv->irq_received)); + for_each_ring(ring, dev_priv, i) { + if (IS_GEN6(dev) || IS_GEN7(dev)) { + seq_printf(m, + "Graphics Interrupt mask (%s): %08x\n", + ring->name, I915_READ_IMR(ring)); + } + i915_ring_seqno_info(m, ring); + } + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_gem_fence_regs_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int i, ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "Reserved fences = %d\n", dev_priv->fence_reg_start); + seq_printf(m, "Total fences = %d\n", dev_priv->num_fence_regs); + for (i = 0; i < dev_priv->num_fence_regs; i++) { + struct drm_i915_gem_object *obj = dev_priv->fence_regs[i].obj; + + seq_printf(m, "Fence %d, pin count = %d, object = ", + i, dev_priv->fence_regs[i].pin_count); + if (obj == NULL) + seq_printf(m, "unused"); + else + describe_obj(m, obj); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->struct_mutex); + return 0; +} + +static int i915_hws_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + const volatile u32 __iomem *hws; + int i; + + ring = &dev_priv->ring[(uintptr_t)node->info_ent->data]; + hws = (volatile u32 __iomem *)ring->status_page.page_addr; + if (hws == NULL) + return 0; + + for (i = 0; i < 4096 / sizeof(u32) / 4; i += 4) { + seq_printf(m, "0x%08x: 0x%08x 0x%08x 0x%08x 0x%08x\n", + i * 4, + hws[i], hws[i + 1], hws[i + 2], hws[i + 3]); + } + return 0; +} + +static const char *ring_str(int ring) +{ + switch (ring) { + case RCS: return "render"; + case VCS: return "bsd"; + case BCS: return "blt"; + default: return ""; + } +} + +static const char *pin_flag(int pinned) +{ + if (pinned > 0) + return " P"; + else if (pinned < 0) + return " p"; + else + return ""; +} + +static const char *tiling_flag(int tiling) +{ + switch (tiling) { + default: + case I915_TILING_NONE: return ""; + case I915_TILING_X: return " X"; + case I915_TILING_Y: return " Y"; + } +} + +static const char *dirty_flag(int dirty) +{ + return dirty ? " dirty" : ""; +} + +static const char *purgeable_flag(int purgeable) +{ + return purgeable ? " purgeable" : ""; +} + +static void print_error_buffers(struct seq_file *m, + const char *name, + struct drm_i915_error_buffer *err, + int count) +{ + seq_printf(m, "%s [%d]:\n", name, count); + + while (count--) { + seq_printf(m, " %08x %8u %04x %04x %x %x%s%s%s%s%s%s%s", + err->gtt_offset, + err->size, + err->read_domains, + err->write_domain, + err->rseqno, err->wseqno, + pin_flag(err->pinned), + tiling_flag(err->tiling), + dirty_flag(err->dirty), + purgeable_flag(err->purgeable), + err->ring != -1 ? " " : "", + ring_str(err->ring), + cache_level_str(err->cache_level)); + + if (err->name) + seq_printf(m, " (name: %d)", err->name); + if (err->fence_reg != I915_FENCE_REG_NONE) + seq_printf(m, " (fence: %d)", err->fence_reg); + + seq_printf(m, "\n"); + err++; + } +} + +static void i915_ring_error_state(struct seq_file *m, + struct drm_device *dev, + struct drm_i915_error_state *error, + unsigned ring) +{ + BUG_ON(ring >= I915_NUM_RINGS); /* shut up confused gcc */ + seq_printf(m, "%s command stream:\n", ring_str(ring)); + seq_printf(m, " HEAD: 0x%08x\n", error->head[ring]); + seq_printf(m, " TAIL: 0x%08x\n", error->tail[ring]); + seq_printf(m, " ACTHD: 0x%08x\n", error->acthd[ring]); + seq_printf(m, " IPEIR: 0x%08x\n", error->ipeir[ring]); + seq_printf(m, " IPEHR: 0x%08x\n", error->ipehr[ring]); + seq_printf(m, " INSTDONE: 0x%08x\n", error->instdone[ring]); + if (ring == RCS && INTEL_INFO(dev)->gen >= 4) + seq_printf(m, " BBADDR: 0x%08llx\n", error->bbaddr); + + if (INTEL_INFO(dev)->gen >= 4) + seq_printf(m, " INSTPS: 0x%08x\n", error->instps[ring]); + seq_printf(m, " INSTPM: 0x%08x\n", error->instpm[ring]); + seq_printf(m, " FADDR: 0x%08x\n", error->faddr[ring]); + if (INTEL_INFO(dev)->gen >= 6) { + seq_printf(m, " RC PSMI: 0x%08x\n", error->rc_psmi[ring]); + seq_printf(m, " FAULT_REG: 0x%08x\n", error->fault_reg[ring]); + seq_printf(m, " SYNC_0: 0x%08x\n", + error->semaphore_mboxes[ring][0]); + seq_printf(m, " SYNC_1: 0x%08x\n", + error->semaphore_mboxes[ring][1]); + } + seq_printf(m, " seqno: 0x%08x\n", error->seqno[ring]); + seq_printf(m, " waiting: %s\n", yesno(error->waiting[ring])); + seq_printf(m, " ring->head: 0x%08x\n", error->cpu_ring_head[ring]); + seq_printf(m, " ring->tail: 0x%08x\n", error->cpu_ring_tail[ring]); +} + +struct i915_error_state_file_priv { + struct drm_device *dev; + struct drm_i915_error_state *error; +}; + +static int i915_error_state(struct seq_file *m, void *unused) +{ + struct i915_error_state_file_priv *error_priv = m->private; + 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) { + seq_printf(m, "no error state collected\n"); + return 0; + } + + seq_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec, + error->time.tv_usec); + seq_printf(m, "PCI ID: 0x%04x\n", dev->pci_device); + seq_printf(m, "EIR: 0x%08x\n", error->eir); + seq_printf(m, "IER: 0x%08x\n", error->ier); + seq_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er); + seq_printf(m, "CCID: 0x%08x\n", error->ccid); + + for (i = 0; i < dev_priv->num_fence_regs; i++) + seq_printf(m, " fence[%d] = %08llx\n", i, error->fence[i]); + + for (i = 0; i < ARRAY_SIZE(error->extra_instdone); i++) + seq_printf(m, " INSTDONE_%d: 0x%08x\n", i, error->extra_instdone[i]); + + if (INTEL_INFO(dev)->gen >= 6) { + seq_printf(m, "ERROR: 0x%08x\n", error->error); + seq_printf(m, "DONE_REG: 0x%08x\n", error->done_reg); + } + + if (INTEL_INFO(dev)->gen == 7) + seq_printf(m, "ERR_INT: 0x%08x\n", error->err_int); + + for_each_ring(ring, dev_priv, i) + i915_ring_error_state(m, dev, error, i); + + if (error->active_bo) + print_error_buffers(m, "Active", + error->active_bo, + error->active_bo_count); + + if (error->pinned_bo) + print_error_buffers(m, "Pinned", + error->pinned_bo, + error->pinned_bo_count); + + for (i = 0; i < ARRAY_SIZE(error->ring); i++) { + struct drm_i915_error_object *obj; + + if ((obj = error->ring[i].batchbuffer)) { + seq_printf(m, "%s --- gtt_offset = 0x%08x\n", + dev_priv->ring[i].name, + obj->gtt_offset); + offset = 0; + for (page = 0; page < obj->page_count; page++) { + for (elt = 0; elt < PAGE_SIZE/4; elt++) { + seq_printf(m, "%08x : %08x\n", offset, obj->pages[page][elt]); + offset += 4; + } + } + } + + if (error->ring[i].num_requests) { + seq_printf(m, "%s --- %d requests\n", + dev_priv->ring[i].name, + error->ring[i].num_requests); + for (j = 0; j < error->ring[i].num_requests; j++) { + seq_printf(m, " seqno 0x%08x, emitted %ld, tail 0x%08x\n", + error->ring[i].requests[j].seqno, + error->ring[i].requests[j].jiffies, + error->ring[i].requests[j].tail); + } + } + + if ((obj = error->ring[i].ringbuffer)) { + seq_printf(m, "%s --- ringbuffer = 0x%08x\n", + dev_priv->ring[i].name, + obj->gtt_offset); + offset = 0; + for (page = 0; page < obj->page_count; page++) { + for (elt = 0; elt < PAGE_SIZE/4; elt++) { + seq_printf(m, "%08x : %08x\n", + offset, + obj->pages[page][elt]); + offset += 4; + } + } + } + } + + if (error->overlay) + intel_overlay_print_error_state(m, error->overlay); + + if (error->display) + intel_display_print_error_state(m, dev, error->display); + + return 0; +} + +static ssize_t +i915_error_state_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct seq_file *m = filp->private_data; + struct i915_error_state_file_priv *error_priv = m->private; + struct drm_device *dev = error_priv->dev; + int ret; + + DRM_DEBUG_DRIVER("Resetting error state\n"); + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + i915_destroy_error_state(dev); + mutex_unlock(&dev->struct_mutex); + + return cnt; +} + +static int i915_error_state_open(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + drm_i915_private_t *dev_priv = dev->dev_private; + struct i915_error_state_file_priv *error_priv; + unsigned long flags; + + error_priv = kzalloc(sizeof(*error_priv), GFP_KERNEL); + if (!error_priv) + return -ENOMEM; + + error_priv->dev = dev; + + spin_lock_irqsave(&dev_priv->error_lock, flags); + error_priv->error = dev_priv->first_error; + if (error_priv->error) + kref_get(&error_priv->error->ref); + spin_unlock_irqrestore(&dev_priv->error_lock, flags); + + return single_open(file, i915_error_state, error_priv); +} + +static int i915_error_state_release(struct inode *inode, struct file *file) +{ + struct seq_file *m = file->private_data; + struct i915_error_state_file_priv *error_priv = m->private; + + if (error_priv->error) + kref_put(&error_priv->error->ref, i915_error_state_free); + kfree(error_priv); + + return single_release(inode, file); +} + +static const struct file_operations i915_error_state_fops = { + .owner = THIS_MODULE, + .open = i915_error_state_open, + .read = seq_read, + .write = i915_error_state_write, + .llseek = default_llseek, + .release = i915_error_state_release, +}; + +static int i915_rstdby_delays(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u16 crstanddelay; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + crstanddelay = I915_READ16(CRSTANDVID); + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "w/ctx: %d, w/o ctx: %d\n", (crstanddelay >> 8) & 0x3f, (crstanddelay & 0x3f)); + + return 0; +} + +static int i915_cur_delayinfo(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (IS_GEN5(dev)) { + u16 rgvswctl = I915_READ16(MEMSWCTL); + u16 rgvstat = I915_READ16(MEMSTAT_ILK); + + seq_printf(m, "Requested P-state: %d\n", (rgvswctl >> 8) & 0xf); + seq_printf(m, "Requested VID: %d\n", rgvswctl & 0x3f); + seq_printf(m, "Current VID: %d\n", (rgvstat & MEMSTAT_VID_MASK) >> + MEMSTAT_VID_SHIFT); + seq_printf(m, "Current P-state: %d\n", + (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT); + } else if (IS_GEN6(dev) || IS_GEN7(dev)) { + u32 gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); + u32 rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS); + u32 rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + u32 rpstat; + u32 rpupei, rpcurup, rpprevup; + u32 rpdownei, rpcurdown, rpprevdown; + int max_freq; + + /* RPSTAT1 is in the GT power well */ + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + gen6_gt_force_wake_get(dev_priv); + + rpstat = I915_READ(GEN6_RPSTAT1); + rpupei = I915_READ(GEN6_RP_CUR_UP_EI); + rpcurup = I915_READ(GEN6_RP_CUR_UP); + rpprevup = I915_READ(GEN6_RP_PREV_UP); + rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI); + rpcurdown = I915_READ(GEN6_RP_CUR_DOWN); + rpprevdown = I915_READ(GEN6_RP_PREV_DOWN); + + gen6_gt_force_wake_put(dev_priv); + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status); + seq_printf(m, "RPSTAT1: 0x%08x\n", rpstat); + seq_printf(m, "Render p-state ratio: %d\n", + (gt_perf_status & 0xff00) >> 8); + seq_printf(m, "Render p-state VID: %d\n", + gt_perf_status & 0xff); + seq_printf(m, "Render p-state limit: %d\n", + rp_state_limits & 0xff); + seq_printf(m, "CAGF: %dMHz\n", ((rpstat & GEN6_CAGF_MASK) >> + GEN6_CAGF_SHIFT) * GT_FREQUENCY_MULTIPLIER); + seq_printf(m, "RP CUR UP EI: %dus\n", rpupei & + GEN6_CURICONT_MASK); + seq_printf(m, "RP CUR UP: %dus\n", rpcurup & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP PREV UP: %dus\n", rpprevup & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP CUR DOWN EI: %dus\n", rpdownei & + GEN6_CURIAVG_MASK); + seq_printf(m, "RP CUR DOWN: %dus\n", rpcurdown & + GEN6_CURBSYTAVG_MASK); + seq_printf(m, "RP PREV DOWN: %dus\n", rpprevdown & + GEN6_CURBSYTAVG_MASK); + + max_freq = (rp_state_cap & 0xff0000) >> 16; + seq_printf(m, "Lowest (RPN) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + + max_freq = (rp_state_cap & 0xff00) >> 8; + seq_printf(m, "Nominal (RP1) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + + max_freq = rp_state_cap & 0xff; + seq_printf(m, "Max non-overclocked (RP0) frequency: %dMHz\n", + max_freq * GT_FREQUENCY_MULTIPLIER); + } else { + seq_printf(m, "no P-state info available\n"); + } + + return 0; +} + +static int i915_delayfreq_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 delayfreq; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for (i = 0; i < 16; i++) { + delayfreq = I915_READ(PXVFREQ_BASE + i * 4); + seq_printf(m, "P%02dVIDFREQ: 0x%08x (VID: %d)\n", i, delayfreq, + (delayfreq & PXVFREQ_PX_MASK) >> PXVFREQ_PX_SHIFT); + } + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static inline int MAP_TO_MV(int map) +{ + return 1250 - (map * 25); +} + +static int i915_inttoext_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 inttoext; + int ret, i; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + for (i = 1; i <= 32; i++) { + inttoext = I915_READ(INTTOEXT_BASE_ILK + i * 4); + seq_printf(m, "INTTOEXT%02d: 0x%08x\n", i, inttoext); + } + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int ironlake_drpc_info(struct seq_file *m) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + u32 rgvmodectl, rstdbyctl; + u16 crstandvid; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + rgvmodectl = I915_READ(MEMMODECTL); + rstdbyctl = I915_READ(RSTDBYCTL); + crstandvid = I915_READ16(CRSTANDVID); + + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "HD boost: %s\n", (rgvmodectl & MEMMODE_BOOST_EN) ? + "yes" : "no"); + seq_printf(m, "Boost freq: %d\n", + (rgvmodectl & MEMMODE_BOOST_FREQ_MASK) >> + MEMMODE_BOOST_FREQ_SHIFT); + seq_printf(m, "HW control enabled: %s\n", + rgvmodectl & MEMMODE_HWIDLE_EN ? "yes" : "no"); + seq_printf(m, "SW control enabled: %s\n", + rgvmodectl & MEMMODE_SWMODE_EN ? "yes" : "no"); + seq_printf(m, "Gated voltage change: %s\n", + rgvmodectl & MEMMODE_RCLK_GATE ? "yes" : "no"); + seq_printf(m, "Starting frequency: P%d\n", + (rgvmodectl & MEMMODE_FSTART_MASK) >> MEMMODE_FSTART_SHIFT); + seq_printf(m, "Max P-state: P%d\n", + (rgvmodectl & MEMMODE_FMAX_MASK) >> MEMMODE_FMAX_SHIFT); + seq_printf(m, "Min P-state: P%d\n", (rgvmodectl & MEMMODE_FMIN_MASK)); + seq_printf(m, "RS1 VID: %d\n", (crstandvid & 0x3f)); + seq_printf(m, "RS2 VID: %d\n", ((crstandvid >> 8) & 0x3f)); + seq_printf(m, "Render standby enabled: %s\n", + (rstdbyctl & RCX_SW_EXIT) ? "no" : "yes"); + seq_printf(m, "Current RS state: "); + switch (rstdbyctl & RSX_STATUS_MASK) { + case RSX_STATUS_ON: + seq_printf(m, "on\n"); + break; + case RSX_STATUS_RC1: + seq_printf(m, "RC1\n"); + break; + case RSX_STATUS_RC1E: + seq_printf(m, "RC1E\n"); + break; + case RSX_STATUS_RS1: + seq_printf(m, "RS1\n"); + break; + case RSX_STATUS_RS2: + seq_printf(m, "RS2 (RC6)\n"); + break; + case RSX_STATUS_RS3: + seq_printf(m, "RC3 (RC6+)\n"); + break; + default: + seq_printf(m, "unknown\n"); + break; + } + + return 0; +} + +static int gen6_drpc_info(struct seq_file *m) +{ + + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0; + unsigned forcewake_count; + int count=0, ret; + + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + spin_lock_irq(&dev_priv->gt_lock); + forcewake_count = dev_priv->forcewake_count; + spin_unlock_irq(&dev_priv->gt_lock); + + if (forcewake_count) { + seq_printf(m, "RC information inaccurate because somebody " + "holds a forcewake reference \n"); + } else { + /* NB: we cannot use forcewake, else we read the wrong values */ + while (count++ < 50 && (I915_READ_NOTRACE(FORCEWAKE_ACK) & 1)) + udelay(10); + seq_printf(m, "RC information accurate: %s\n", yesno(count < 51)); + } + + gt_core_status = readl(dev_priv->regs + GEN6_GT_CORE_STATUS); + trace_i915_reg_rw(false, GEN6_GT_CORE_STATUS, gt_core_status, 4); + + rpmodectl1 = I915_READ(GEN6_RP_CONTROL); + rcctl1 = I915_READ(GEN6_RC_CONTROL); + mutex_unlock(&dev->struct_mutex); + mutex_lock(&dev_priv->rps.hw_lock); + sandybridge_pcode_read(dev_priv, GEN6_PCODE_READ_RC6VIDS, &rc6vids); + mutex_unlock(&dev_priv->rps.hw_lock); + + seq_printf(m, "Video Turbo Mode: %s\n", + yesno(rpmodectl1 & GEN6_RP_MEDIA_TURBO)); + seq_printf(m, "HW control enabled: %s\n", + yesno(rpmodectl1 & GEN6_RP_ENABLE)); + seq_printf(m, "SW control enabled: %s\n", + yesno((rpmodectl1 & GEN6_RP_MEDIA_MODE_MASK) == + GEN6_RP_MEDIA_SW_MODE)); + seq_printf(m, "RC1e Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC1e_ENABLE)); + seq_printf(m, "RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6_ENABLE)); + seq_printf(m, "Deep RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6p_ENABLE)); + seq_printf(m, "Deepest RC6 Enabled: %s\n", + yesno(rcctl1 & GEN6_RC_CTL_RC6pp_ENABLE)); + seq_printf(m, "Current RC state: "); + switch (gt_core_status & GEN6_RCn_MASK) { + case GEN6_RC0: + if (gt_core_status & GEN6_CORE_CPD_STATE_MASK) + seq_printf(m, "Core Power Down\n"); + else + seq_printf(m, "on\n"); + break; + case GEN6_RC3: + seq_printf(m, "RC3\n"); + break; + case GEN6_RC6: + seq_printf(m, "RC6\n"); + break; + case GEN6_RC7: + seq_printf(m, "RC7\n"); + break; + default: + seq_printf(m, "Unknown\n"); + break; + } + + seq_printf(m, "Core Power Down: %s\n", + yesno(gt_core_status & GEN6_CORE_CPD_STATE_MASK)); + + /* Not exactly sure what this is */ + seq_printf(m, "RC6 \"Locked to RPn\" residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6_LOCKED)); + seq_printf(m, "RC6 residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6)); + seq_printf(m, "RC6+ residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6p)); + seq_printf(m, "RC6++ residency since boot: %u\n", + I915_READ(GEN6_GT_GFX_RC6pp)); + + seq_printf(m, "RC6 voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 0) & 0xff))); + seq_printf(m, "RC6+ voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 8) & 0xff))); + seq_printf(m, "RC6++ voltage: %dmV\n", + GEN6_DECODE_RC6_VID(((rc6vids >> 16) & 0xff))); + return 0; +} + +static int i915_drpc_info(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + + if (IS_GEN6(dev) || IS_GEN7(dev)) + return gen6_drpc_info(m); + else + return ironlake_drpc_info(m); +} + +static int i915_fbc_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + + if (!I915_HAS_FBC(dev)) { + seq_printf(m, "FBC unsupported on this chipset\n"); + return 0; + } + + if (intel_fbc_enabled(dev)) { + seq_printf(m, "FBC enabled\n"); + } else { + seq_printf(m, "FBC disabled: "); + switch (dev_priv->no_fbc_reason) { + case FBC_NO_OUTPUT: + seq_printf(m, "no outputs"); + break; + case FBC_STOLEN_TOO_SMALL: + seq_printf(m, "not enough stolen memory"); + break; + case FBC_UNSUPPORTED_MODE: + seq_printf(m, "mode not supported"); + break; + case FBC_MODE_TOO_LARGE: + seq_printf(m, "mode too large"); + break; + case FBC_BAD_PLANE: + seq_printf(m, "FBC unsupported on plane"); + break; + case FBC_NOT_TILED: + seq_printf(m, "scanout buffer not tiled"); + break; + case FBC_MULTIPLE_PIPES: + seq_printf(m, "multiple pipes are enabled"); + break; + case FBC_MODULE_PARAM: + seq_printf(m, "disabled per module param (default off)"); + break; + default: + seq_printf(m, "unknown reason"); + } + seq_printf(m, "\n"); + } + return 0; +} + +static int i915_sr_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + bool sr_enabled = false; + + if (HAS_PCH_SPLIT(dev)) + sr_enabled = I915_READ(WM1_LP_ILK) & WM1_LP_SR_EN; + else if (IS_CRESTLINE(dev) || IS_I945G(dev) || IS_I945GM(dev)) + sr_enabled = I915_READ(FW_BLC_SELF) & FW_BLC_SELF_EN; + else if (IS_I915GM(dev)) + sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN; + else if (IS_PINEVIEW(dev)) + sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN; + + seq_printf(m, "self-refresh: %s\n", + sr_enabled ? "enabled" : "disabled"); + + return 0; +} + +static int i915_emon_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long temp, chipset, gfx; + int ret; + + if (!IS_GEN5(dev)) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + temp = i915_mch_val(dev_priv); + chipset = i915_chipset_val(dev_priv); + gfx = i915_gfx_val(dev_priv); + mutex_unlock(&dev->struct_mutex); + + seq_printf(m, "GMCH temp: %ld\n", temp); + seq_printf(m, "Chipset power: %ld\n", chipset); + seq_printf(m, "GFX power: %ld\n", gfx); + seq_printf(m, "Total power: %ld\n", chipset + gfx); + + return 0; +} + +static int i915_ring_freq_table(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + int gpu_freq, ia_freq; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) { + seq_printf(m, "unsupported on this chipset\n"); + return 0; + } + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + seq_printf(m, "GPU freq (MHz)\tEffective CPU freq (MHz)\n"); + + for (gpu_freq = dev_priv->rps.min_delay; + gpu_freq <= dev_priv->rps.max_delay; + gpu_freq++) { + ia_freq = gpu_freq; + sandybridge_pcode_read(dev_priv, + GEN6_PCODE_READ_MIN_FREQ_TABLE, + &ia_freq); + seq_printf(m, "%d\t\t%d\n", gpu_freq * GT_FREQUENCY_MULTIPLIER, ia_freq * 100); + } + + mutex_unlock(&dev_priv->rps.hw_lock); + + return 0; +} + +static int i915_gfxec(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "GFXEC: %ld\n", (unsigned long)I915_READ(0x112f4)); + + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_opregion(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_opregion *opregion = &dev_priv->opregion; + void *data = kmalloc(OPREGION_SIZE, GFP_KERNEL); + int ret; + + if (data == NULL) + return -ENOMEM; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + goto out; + + if (opregion->header) { + memcpy_fromio(data, opregion->header, OPREGION_SIZE); + seq_write(m, data, OPREGION_SIZE); + } + + mutex_unlock(&dev->struct_mutex); + +out: + kfree(data); + return 0; +} + +static int i915_gem_framebuffer_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_fbdev *ifbdev; + struct intel_framebuffer *fb; + int ret; + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + ifbdev = dev_priv->fbdev; + fb = to_intel_framebuffer(ifbdev->helper.fb); + + seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, obj ", + fb->base.width, + fb->base.height, + fb->base.depth, + fb->base.bits_per_pixel); + describe_obj(m, fb->obj); + seq_printf(m, "\n"); + + list_for_each_entry(fb, &dev->mode_config.fb_list, base.head) { + if (&fb->base == ifbdev->helper.fb) + continue; + + seq_printf(m, "user size: %d x %d, depth %d, %d bpp, obj ", + fb->base.width, + fb->base.height, + fb->base.depth, + fb->base.bits_per_pixel); + describe_obj(m, fb->obj); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static int i915_context_status(struct seq_file *m, void *unused) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + if (dev_priv->ips.pwrctx) { + seq_printf(m, "power context "); + describe_obj(m, dev_priv->ips.pwrctx); + seq_printf(m, "\n"); + } + + if (dev_priv->ips.renderctx) { + seq_printf(m, "render context "); + describe_obj(m, dev_priv->ips.renderctx); + seq_printf(m, "\n"); + } + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static int i915_gen6_forcewake_count_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned forcewake_count; + + spin_lock_irq(&dev_priv->gt_lock); + forcewake_count = dev_priv->forcewake_count; + spin_unlock_irq(&dev_priv->gt_lock); + + seq_printf(m, "forcewake count = %u\n", forcewake_count); + + return 0; +} + +static const char *swizzle_string(unsigned swizzle) +{ + switch(swizzle) { + case I915_BIT_6_SWIZZLE_NONE: + return "none"; + case I915_BIT_6_SWIZZLE_9: + return "bit9"; + case I915_BIT_6_SWIZZLE_9_10: + return "bit9/bit10"; + case I915_BIT_6_SWIZZLE_9_11: + return "bit9/bit11"; + case I915_BIT_6_SWIZZLE_9_10_11: + return "bit9/bit10/bit11"; + case I915_BIT_6_SWIZZLE_9_17: + return "bit9/bit17"; + case I915_BIT_6_SWIZZLE_9_10_17: + return "bit9/bit10/bit17"; + case I915_BIT_6_SWIZZLE_UNKNOWN: + return "unkown"; + } + + return "bug"; +} + +static int i915_swizzle_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + seq_printf(m, "bit6 swizzle for X-tiling = %s\n", + swizzle_string(dev_priv->mm.bit_6_swizzle_x)); + seq_printf(m, "bit6 swizzle for Y-tiling = %s\n", + swizzle_string(dev_priv->mm.bit_6_swizzle_y)); + + if (IS_GEN3(dev) || IS_GEN4(dev)) { + seq_printf(m, "DDC = 0x%08x\n", + I915_READ(DCC)); + seq_printf(m, "C0DRB3 = 0x%04x\n", + I915_READ16(C0DRB3)); + seq_printf(m, "C1DRB3 = 0x%04x\n", + I915_READ16(C1DRB3)); + } else if (IS_GEN6(dev) || IS_GEN7(dev)) { + seq_printf(m, "MAD_DIMM_C0 = 0x%08x\n", + I915_READ(MAD_DIMM_C0)); + seq_printf(m, "MAD_DIMM_C1 = 0x%08x\n", + I915_READ(MAD_DIMM_C1)); + seq_printf(m, "MAD_DIMM_C2 = 0x%08x\n", + I915_READ(MAD_DIMM_C2)); + seq_printf(m, "TILECTL = 0x%08x\n", + I915_READ(TILECTL)); + seq_printf(m, "ARB_MODE = 0x%08x\n", + I915_READ(ARB_MODE)); + seq_printf(m, "DISP_ARB_CTL = 0x%08x\n", + I915_READ(DISP_ARB_CTL)); + } + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_ppgtt_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i, ret; + + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + if (INTEL_INFO(dev)->gen == 6) + seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(GFX_MODE)); + + for_each_ring(ring, dev_priv, i) { + seq_printf(m, "%s\n", ring->name); + if (INTEL_INFO(dev)->gen == 7) + seq_printf(m, "GFX_MODE: 0x%08x\n", I915_READ(RING_MODE_GEN7(ring))); + seq_printf(m, "PP_DIR_BASE: 0x%08x\n", I915_READ(RING_PP_DIR_BASE(ring))); + seq_printf(m, "PP_DIR_BASE_READ: 0x%08x\n", I915_READ(RING_PP_DIR_BASE_READ(ring))); + seq_printf(m, "PP_DIR_DCLV: 0x%08x\n", I915_READ(RING_PP_DIR_DCLV(ring))); + } + if (dev_priv->mm.aliasing_ppgtt) { + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + + seq_printf(m, "aliasing PPGTT:\n"); + seq_printf(m, "pd gtt offset: 0x%08x\n", ppgtt->pd_offset); + } + seq_printf(m, "ECOCHK: 0x%08x\n", I915_READ(GAM_ECOCHK)); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +static int i915_dpio_info(struct seq_file *m, void *data) +{ + struct drm_info_node *node = (struct drm_info_node *) m->private; + struct drm_device *dev = node->minor->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + + if (!IS_VALLEYVIEW(dev)) { + seq_printf(m, "unsupported\n"); + return 0; + } + + ret = mutex_lock_interruptible(&dev->mode_config.mutex); + if (ret) + return ret; + + seq_printf(m, "DPIO_CTL: 0x%08x\n", I915_READ(DPIO_CTL)); + + seq_printf(m, "DPIO_DIV_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_DIV_A)); + seq_printf(m, "DPIO_DIV_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_DIV_B)); + + seq_printf(m, "DPIO_REFSFR_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_REFSFR_A)); + seq_printf(m, "DPIO_REFSFR_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_REFSFR_B)); + + seq_printf(m, "DPIO_CORE_CLK_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_CORE_CLK_A)); + seq_printf(m, "DPIO_CORE_CLK_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_CORE_CLK_B)); + + seq_printf(m, "DPIO_LFP_COEFF_A: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_A)); + seq_printf(m, "DPIO_LFP_COEFF_B: 0x%08x\n", + intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_B)); + + seq_printf(m, "DPIO_FASTCLK_DISABLE: 0x%08x\n", + intel_dpio_read(dev_priv, DPIO_FASTCLK_DISABLE)); + + mutex_unlock(&dev->mode_config.mutex); + + return 0; +} + +static ssize_t +i915_wedged_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len; + + len = snprintf(buf, sizeof(buf), + "wedged : %d\n", + atomic_read(&dev_priv->mm.wedged)); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_wedged_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + char buf[20]; + int val = 1; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_INFO("Manually setting wedged to %d\n", val); + i915_handle_error(dev, val); + + return cnt; +} + +static const struct file_operations i915_wedged_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_wedged_read, + .write = i915_wedged_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_ring_stop_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[20]; + int len; + + len = snprintf(buf, sizeof(buf), + "0x%08x\n", dev_priv->stop_rings); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_ring_stop_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 0, ret; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Stopping rings 0x%08x\n", val); + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + dev_priv->stop_rings = val; + mutex_unlock(&dev->struct_mutex); + + return cnt; +} + +static const struct file_operations i915_ring_stop_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_ring_stop_read, + .write = i915_ring_stop_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_max_freq_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + len = snprintf(buf, sizeof(buf), + "max freq: %d\n", dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_max_freq_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 1, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Manually setting max freq to %d\n", val); + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + /* + * Turbo will still be enabled, but won't go above the set value. + */ + dev_priv->rps.max_delay = val / GT_FREQUENCY_MULTIPLIER; + + gen6_set_rps(dev, val / GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + return cnt; +} + +static const struct file_operations i915_max_freq_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_max_freq_read, + .write = i915_max_freq_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_min_freq_read(struct file *filp, char __user *ubuf, size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + len = snprintf(buf, sizeof(buf), + "min freq: %d\n", dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_min_freq_write(struct file *filp, const char __user *ubuf, size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + int val = 1, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + DRM_DEBUG_DRIVER("Manually setting min freq to %d\n", val); + + ret = mutex_lock_interruptible(&dev_priv->rps.hw_lock); + if (ret) + return ret; + + /* + * Turbo will still be enabled, but won't go below the set value. + */ + dev_priv->rps.min_delay = val / GT_FREQUENCY_MULTIPLIER; + + gen6_set_rps(dev, val / GT_FREQUENCY_MULTIPLIER); + mutex_unlock(&dev_priv->rps.hw_lock); + + return cnt; +} + +static const struct file_operations i915_min_freq_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_min_freq_read, + .write = i915_min_freq_write, + .llseek = default_llseek, +}; + +static ssize_t +i915_cache_sharing_read(struct file *filp, + char __user *ubuf, + size_t max, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + drm_i915_private_t *dev_priv = dev->dev_private; + char buf[80]; + u32 snpcr; + int len, ret; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + mutex_unlock(&dev_priv->dev->struct_mutex); + + len = snprintf(buf, sizeof(buf), + "%d\n", (snpcr & GEN6_MBC_SNPCR_MASK) >> + GEN6_MBC_SNPCR_SHIFT); + + if (len > sizeof(buf)) + len = sizeof(buf); + + return simple_read_from_buffer(ubuf, max, ppos, buf, len); +} + +static ssize_t +i915_cache_sharing_write(struct file *filp, + const char __user *ubuf, + size_t cnt, + loff_t *ppos) +{ + struct drm_device *dev = filp->private_data; + struct drm_i915_private *dev_priv = dev->dev_private; + char buf[20]; + u32 snpcr; + int val = 1; + + if (!(IS_GEN6(dev) || IS_GEN7(dev))) + return -ENODEV; + + if (cnt > 0) { + if (cnt > sizeof(buf) - 1) + return -EINVAL; + + if (copy_from_user(buf, ubuf, cnt)) + return -EFAULT; + buf[cnt] = 0; + + val = simple_strtoul(buf, NULL, 0); + } + + if (val < 0 || val > 3) + return -EINVAL; + + DRM_DEBUG_DRIVER("Manually setting uncore sharing to %d\n", val); + + /* Update the cache sharing policy here as well */ + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + snpcr &= ~GEN6_MBC_SNPCR_MASK; + snpcr |= (val << GEN6_MBC_SNPCR_SHIFT); + I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr); + + return cnt; +} + +static const struct file_operations i915_cache_sharing_fops = { + .owner = THIS_MODULE, + .open = simple_open, + .read = i915_cache_sharing_read, + .write = i915_cache_sharing_write, + .llseek = default_llseek, +}; + +/* As the drm_debugfs_init() routines are called before dev->dev_private is + * allocated we need to hook into the minor for release. */ +static int +drm_add_fake_info_node(struct drm_minor *minor, + struct dentry *ent, + const void *key) +{ + struct drm_info_node *node; + + node = kmalloc(sizeof(struct drm_info_node), GFP_KERNEL); + if (node == NULL) { + debugfs_remove(ent); + return -ENOMEM; + } + + node->minor = minor; + node->dent = ent; + node->info_ent = (void *) key; + + mutex_lock(&minor->debugfs_lock); + list_add(&node->list, &minor->debugfs_list); + mutex_unlock(&minor->debugfs_lock); + + return 0; +} + +static int i915_forcewake_open(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 6) + return 0; + + gen6_gt_force_wake_get(dev_priv); + + return 0; +} + +static int i915_forcewake_release(struct inode *inode, struct file *file) +{ + struct drm_device *dev = inode->i_private; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 6) + return 0; + + gen6_gt_force_wake_put(dev_priv); + + return 0; +} + +static const struct file_operations i915_forcewake_fops = { + .owner = THIS_MODULE, + .open = i915_forcewake_open, + .release = i915_forcewake_release, +}; + +static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor) +{ + struct drm_device *dev = minor->dev; + struct dentry *ent; + + ent = debugfs_create_file("i915_forcewake_user", + S_IRUSR, + root, dev, + &i915_forcewake_fops); + if (IS_ERR(ent)) + return PTR_ERR(ent); + + return drm_add_fake_info_node(minor, ent, &i915_forcewake_fops); +} + +static int i915_debugfs_create(struct dentry *root, + struct drm_minor *minor, + const char *name, + const struct file_operations *fops) +{ + struct drm_device *dev = minor->dev; + struct dentry *ent; + + ent = debugfs_create_file(name, + S_IRUGO | S_IWUSR, + root, dev, + fops); + if (IS_ERR(ent)) + return PTR_ERR(ent); + + return drm_add_fake_info_node(minor, ent, fops); +} + +static struct drm_info_list i915_debugfs_list[] = { + {"i915_capabilities", i915_capabilities, 0}, + {"i915_gem_objects", i915_gem_object_info, 0}, + {"i915_gem_gtt", i915_gem_gtt_info, 0}, + {"i915_gem_pinned", i915_gem_gtt_info, 0, (void *) PINNED_LIST}, + {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST}, + {"i915_gem_inactive", i915_gem_object_list_info, 0, (void *) INACTIVE_LIST}, + {"i915_gem_pageflip", i915_gem_pageflip_info, 0}, + {"i915_gem_request", i915_gem_request_info, 0}, + {"i915_gem_seqno", i915_gem_seqno_info, 0}, + {"i915_gem_fence_regs", i915_gem_fence_regs_info, 0}, + {"i915_gem_interrupt", i915_interrupt_info, 0}, + {"i915_gem_hws", i915_hws_info, 0, (void *)RCS}, + {"i915_gem_hws_blt", i915_hws_info, 0, (void *)BCS}, + {"i915_gem_hws_bsd", i915_hws_info, 0, (void *)VCS}, + {"i915_rstdby_delays", i915_rstdby_delays, 0}, + {"i915_cur_delayinfo", i915_cur_delayinfo, 0}, + {"i915_delayfreq_table", i915_delayfreq_table, 0}, + {"i915_inttoext_table", i915_inttoext_table, 0}, + {"i915_drpc_info", i915_drpc_info, 0}, + {"i915_emon_status", i915_emon_status, 0}, + {"i915_ring_freq_table", i915_ring_freq_table, 0}, + {"i915_gfxec", i915_gfxec, 0}, + {"i915_fbc_status", i915_fbc_status, 0}, + {"i915_sr_status", i915_sr_status, 0}, + {"i915_opregion", i915_opregion, 0}, + {"i915_gem_framebuffer", i915_gem_framebuffer_info, 0}, + {"i915_context_status", i915_context_status, 0}, + {"i915_gen6_forcewake_count", i915_gen6_forcewake_count_info, 0}, + {"i915_swizzle_info", i915_swizzle_info, 0}, + {"i915_ppgtt_info", i915_ppgtt_info, 0}, + {"i915_dpio", i915_dpio_info, 0}, +}; +#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list) + +int i915_debugfs_init(struct drm_minor *minor) +{ + int ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_wedged", + &i915_wedged_fops); + if (ret) + return ret; + + ret = i915_forcewake_create(minor->debugfs_root, minor); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_max_freq", + &i915_max_freq_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_min_freq", + &i915_min_freq_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_cache_sharing", + &i915_cache_sharing_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_ring_stop", + &i915_ring_stop_fops); + if (ret) + return ret; + + ret = i915_debugfs_create(minor->debugfs_root, minor, + "i915_error_state", + &i915_error_state_fops); + if (ret) + return ret; + + return drm_debugfs_create_files(i915_debugfs_list, + I915_DEBUGFS_ENTRIES, + minor->debugfs_root, minor); +} + +void i915_debugfs_cleanup(struct drm_minor *minor) +{ + drm_debugfs_remove_files(i915_debugfs_list, + I915_DEBUGFS_ENTRIES, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_forcewake_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_wedged_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_max_freq_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_min_freq_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_cache_sharing_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_ring_stop_fops, + 1, minor); + drm_debugfs_remove_files((struct drm_info_list *) &i915_error_state_fops, + 1, minor); +} + +#endif /* CONFIG_DEBUG_FS */ --- linux-3.5.0.orig/ubuntu/i915/i915_dma.c +++ linux-3.5.0/ubuntu/i915/i915_dma.c @@ -0,0 +1,1873 @@ +/* i915_dma.c -- DMA support for the I915 -*- linux-c -*- + */ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include "drmP.h" +#include "drm.h" +#include "drm_crtc_helper.h" +#include "drm_fb_helper.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include +#include +#include +#include +#include +#include +#include +#include + +#define LP_RING(d) (&((struct drm_i915_private *)(d))->ring[RCS]) + +#define BEGIN_LP_RING(n) \ + intel_ring_begin(LP_RING(dev_priv), (n)) + +#define OUT_RING(x) \ + intel_ring_emit(LP_RING(dev_priv), x) + +#define ADVANCE_LP_RING() \ + intel_ring_advance(LP_RING(dev_priv)) + +/** + * Lock test for when it's just for synchronization of ring access. + * + * In that case, we don't need to do it when GEM is initialized as nobody else + * has access to the ring. + */ +#define RING_LOCK_TEST_WITH_RETURN(dev, file) do { \ + if (LP_RING(dev->dev_private)->obj == NULL) \ + LOCK_TEST_WITH_RETURN(dev, file); \ +} while (0) + +static inline u32 +intel_read_legacy_status_page(struct drm_i915_private *dev_priv, int reg) +{ + if (I915_NEED_GFX_HWS(dev_priv->dev)) + return ioread32(dev_priv->dri1.gfx_hws_cpu_addr + reg); + else + return intel_read_status_page(LP_RING(dev_priv), reg); +} + +#define READ_HWSP(dev_priv, reg) intel_read_legacy_status_page(dev_priv, reg) +#define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, I915_BREADCRUMB_INDEX) +#define I915_BREADCRUMB_INDEX 0x21 + +void i915_update_dri1_breadcrumb(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv; + + if (dev->primary->master) { + master_priv = dev->primary->master->driver_priv; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_dispatch = + READ_BREADCRUMB(dev_priv); + } +} + +static void i915_write_hws_pga(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 addr; + + addr = dev_priv->status_page_dmah->busaddr; + if (INTEL_INFO(dev)->gen >= 4) + addr |= (dev_priv->status_page_dmah->busaddr >> 28) & 0xf0; + I915_WRITE(HWS_PGA, addr); +} + +/** + * Frees the hardware status page, whether it's a physical address or a virtual + * address set up by the X Server. + */ +static void i915_free_hws(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + if (dev_priv->status_page_dmah) { + drm_pci_free(dev, dev_priv->status_page_dmah); + dev_priv->status_page_dmah = NULL; + } + + if (ring->status_page.gfx_addr) { + ring->status_page.gfx_addr = 0; + iounmap(dev_priv->dri1.gfx_hws_cpu_addr); + } + + /* Need to rewrite hardware status page */ + I915_WRITE(HWS_PGA, 0x1ffff000); +} + +void i915_kernel_lost_context(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + /* + * We should never lose context on the ring with modesetting + * as we don't expose it to userspace + */ + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + ring->head = I915_READ_HEAD(ring) & HEAD_ADDR; + ring->tail = I915_READ_TAIL(ring) & TAIL_ADDR; + ring->space = ring->head - (ring->tail + 8); + if (ring->space < 0) + ring->space += ring->size; + + if (!dev->primary->master) + return; + + master_priv = dev->primary->master->driver_priv; + if (ring->head == ring->tail && master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_RING_EMPTY; +} + +static int i915_dma_cleanup(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i; + + /* Make sure interrupts are disabled here because the uninstall ioctl + * may not have been called from userspace and after dev_private + * is freed, it's too late. + */ + if (dev->irq_enabled) + drm_irq_uninstall(dev); + + mutex_lock(&dev->struct_mutex); + for (i = 0; i < I915_NUM_RINGS; i++) + intel_cleanup_ring_buffer(&dev_priv->ring[i]); + mutex_unlock(&dev->struct_mutex); + + /* Clear the HWS virtual address at teardown */ + if (I915_NEED_GFX_HWS(dev)) + i915_free_hws(dev); + + return 0; +} + +static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + int ret; + + master_priv->sarea = drm_getsarea(dev); + if (master_priv->sarea) { + master_priv->sarea_priv = (drm_i915_sarea_t *) + ((u8 *)master_priv->sarea->handle + init->sarea_priv_offset); + } else { + DRM_DEBUG_DRIVER("sarea not found assuming DRI2 userspace\n"); + } + + if (init->ring_size != 0) { + if (LP_RING(dev_priv)->obj != NULL) { + i915_dma_cleanup(dev); + DRM_ERROR("Client tried to initialize ringbuffer in " + "GEM mode\n"); + return -EINVAL; + } + + ret = intel_render_ring_init_dri(dev, + init->ring_start, + init->ring_size); + if (ret) { + i915_dma_cleanup(dev); + return ret; + } + } + + dev_priv->dri1.cpp = init->cpp; + dev_priv->dri1.back_offset = init->back_offset; + dev_priv->dri1.front_offset = init->front_offset; + dev_priv->dri1.current_page = 0; + if (master_priv->sarea_priv) + master_priv->sarea_priv->pf_current_page = 0; + + /* Allow hardware batchbuffers unless told otherwise. + */ + dev_priv->dri1.allow_batchbuffer = 1; + + return 0; +} + +static int i915_dma_resume(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + DRM_DEBUG_DRIVER("%s\n", __func__); + + if (ring->virtual_start == NULL) { + DRM_ERROR("can not ioremap virtual address for" + " ring buffer\n"); + return -ENOMEM; + } + + /* Program Hardware Status Page */ + if (!ring->status_page.page_addr) { + DRM_ERROR("Can not find hardware status page\n"); + return -EINVAL; + } + DRM_DEBUG_DRIVER("hw status page @ %p\n", + ring->status_page.page_addr); + if (ring->status_page.gfx_addr != 0) + intel_ring_setup_status_page(ring); + else + i915_write_hws_pga(dev); + + DRM_DEBUG_DRIVER("Enabled hardware status page\n"); + + return 0; +} + +static int i915_dma_init(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_init_t *init = data; + int retcode = 0; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + switch (init->func) { + case I915_INIT_DMA: + retcode = i915_initialize(dev, init); + break; + case I915_CLEANUP_DMA: + retcode = i915_dma_cleanup(dev); + break; + case I915_RESUME_DMA: + retcode = i915_dma_resume(dev); + break; + default: + retcode = -EINVAL; + break; + } + + return retcode; +} + +/* Implement basically the same security restrictions as hardware does + * for MI_BATCH_NON_SECURE. These can be made stricter at any time. + * + * Most of the calculations below involve calculating the size of a + * particular instruction. It's important to get the size right as + * that tells us where the next instruction to check is. Any illegal + * instruction detected will be given a size of zero, which is a + * signal to abort the rest of the buffer. + */ +static int validate_cmd(int cmd) +{ + switch (((cmd >> 29) & 0x7)) { + case 0x0: + switch ((cmd >> 23) & 0x3f) { + case 0x0: + return 1; /* MI_NOOP */ + case 0x4: + return 1; /* MI_FLUSH */ + default: + return 0; /* disallow everything else */ + } + break; + case 0x1: + return 0; /* reserved */ + case 0x2: + return (cmd & 0xff) + 2; /* 2d commands */ + case 0x3: + if (((cmd >> 24) & 0x1f) <= 0x18) + return 1; + + switch ((cmd >> 24) & 0x1f) { + case 0x1c: + return 1; + case 0x1d: + switch ((cmd >> 16) & 0xff) { + case 0x3: + return (cmd & 0x1f) + 2; + case 0x4: + return (cmd & 0xf) + 2; + default: + return (cmd & 0xffff) + 2; + } + case 0x1e: + if (cmd & (1 << 23)) + return (cmd & 0xffff) + 1; + else + return 1; + case 0x1f: + if ((cmd & (1 << 23)) == 0) /* inline vertices */ + return (cmd & 0x1ffff) + 2; + else if (cmd & (1 << 17)) /* indirect random */ + if ((cmd & 0xffff) == 0) + return 0; /* unknown length, too hard */ + else + return (((cmd & 0xffff) + 1) / 2) + 1; + else + return 2; /* indirect sequential */ + default: + return 0; + } + default: + return 0; + } + + return 0; +} + +static int i915_emit_cmds(struct drm_device * dev, int *buffer, int dwords) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int i, ret; + + if ((dwords+1) * sizeof(int) >= LP_RING(dev_priv)->size - 8) + return -EINVAL; + + for (i = 0; i < dwords;) { + int sz = validate_cmd(buffer[i]); + if (sz == 0 || i + sz > dwords) + return -EINVAL; + i += sz; + } + + ret = BEGIN_LP_RING((dwords+1)&~1); + if (ret) + return ret; + + for (i = 0; i < dwords; i++) + OUT_RING(buffer[i]); + if (dwords & 1) + OUT_RING(0); + + ADVANCE_LP_RING(); + + return 0; +} + +int +i915_emit_box(struct drm_device *dev, + struct drm_clip_rect *box, + int DR1, int DR4) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + if (box->y2 <= box->y1 || box->x2 <= box->x1 || + box->y2 <= 0 || box->x2 <= 0) { + DRM_ERROR("Bad box %d,%d..%d,%d\n", + box->x1, box->y1, box->x2, box->y2); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 4) { + ret = BEGIN_LP_RING(4); + if (ret) + return ret; + + OUT_RING(GFX_OP_DRAWRECT_INFO_I965); + OUT_RING((box->x1 & 0xffff) | (box->y1 << 16)); + OUT_RING(((box->x2 - 1) & 0xffff) | ((box->y2 - 1) << 16)); + OUT_RING(DR4); + } else { + ret = BEGIN_LP_RING(6); + if (ret) + return ret; + + OUT_RING(GFX_OP_DRAWRECT_INFO); + OUT_RING(DR1); + OUT_RING((box->x1 & 0xffff) | (box->y1 << 16)); + OUT_RING(((box->x2 - 1) & 0xffff) | ((box->y2 - 1) << 16)); + OUT_RING(DR4); + OUT_RING(0); + } + ADVANCE_LP_RING(); + + return 0; +} + +/* XXX: Emitting the counter should really be moved to part of the IRQ + * emit. For now, do it in both places: + */ + +static void i915_emit_breadcrumb(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + + dev_priv->dri1.counter++; + if (dev_priv->dri1.counter > 0x7FFFFFFFUL) + dev_priv->dri1.counter = 0; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(0); + ADVANCE_LP_RING(); + } +} + +static int i915_dispatch_cmdbuffer(struct drm_device * dev, + drm_i915_cmdbuffer_t *cmd, + struct drm_clip_rect *cliprects, + void *cmdbuf) +{ + int nbox = cmd->num_cliprects; + int i = 0, count, ret; + + if (cmd->sz & 0x3) { + DRM_ERROR("alignment"); + return -EINVAL; + } + + i915_kernel_lost_context(dev); + + count = nbox ? nbox : 1; + + for (i = 0; i < count; i++) { + if (i < nbox) { + ret = i915_emit_box(dev, &cliprects[i], + cmd->DR1, cmd->DR4); + if (ret) + return ret; + } + + ret = i915_emit_cmds(dev, cmdbuf, cmd->sz / 4); + if (ret) + return ret; + } + + i915_emit_breadcrumb(dev); + return 0; +} + +static int i915_dispatch_batchbuffer(struct drm_device * dev, + drm_i915_batchbuffer_t * batch, + struct drm_clip_rect *cliprects) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int nbox = batch->num_cliprects; + int i, count, ret; + + if ((batch->start | batch->used) & 0x7) { + DRM_ERROR("alignment"); + return -EINVAL; + } + + i915_kernel_lost_context(dev); + + count = nbox ? nbox : 1; + for (i = 0; i < count; i++) { + if (i < nbox) { + ret = i915_emit_box(dev, &cliprects[i], + batch->DR1, batch->DR4); + if (ret) + return ret; + } + + if (!IS_I830(dev) && !IS_845G(dev)) { + ret = BEGIN_LP_RING(2); + if (ret) + return ret; + + if (INTEL_INFO(dev)->gen >= 4) { + OUT_RING(MI_BATCH_BUFFER_START | (2 << 6) | MI_BATCH_NON_SECURE_I965); + OUT_RING(batch->start); + } else { + OUT_RING(MI_BATCH_BUFFER_START | (2 << 6)); + OUT_RING(batch->start | MI_BATCH_NON_SECURE); + } + } else { + ret = BEGIN_LP_RING(4); + if (ret) + return ret; + + OUT_RING(MI_BATCH_BUFFER); + OUT_RING(batch->start | MI_BATCH_NON_SECURE); + OUT_RING(batch->start + batch->used - 4); + OUT_RING(0); + } + ADVANCE_LP_RING(); + } + + + if (IS_G4X(dev) || IS_GEN5(dev)) { + if (BEGIN_LP_RING(2) == 0) { + OUT_RING(MI_FLUSH | MI_NO_WRITE_FLUSH | MI_INVALIDATE_ISP); + OUT_RING(MI_NOOP); + ADVANCE_LP_RING(); + } + } + + i915_emit_breadcrumb(dev); + return 0; +} + +static int i915_dispatch_flip(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = + dev->primary->master->driver_priv; + int ret; + + if (!master_priv->sarea_priv) + return -EINVAL; + + DRM_DEBUG_DRIVER("%s: page=%d pfCurrentPage=%d\n", + __func__, + dev_priv->dri1.current_page, + master_priv->sarea_priv->pf_current_page); + + i915_kernel_lost_context(dev); + + ret = BEGIN_LP_RING(10); + if (ret) + return ret; + + OUT_RING(MI_FLUSH | MI_READ_FLUSH); + OUT_RING(0); + + OUT_RING(CMD_OP_DISPLAYBUFFER_INFO | ASYNC_FLIP); + OUT_RING(0); + if (dev_priv->dri1.current_page == 0) { + OUT_RING(dev_priv->dri1.back_offset); + dev_priv->dri1.current_page = 1; + } else { + OUT_RING(dev_priv->dri1.front_offset); + dev_priv->dri1.current_page = 0; + } + OUT_RING(0); + + OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_PLANE_A_FLIP); + OUT_RING(0); + + ADVANCE_LP_RING(); + + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter++; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(0); + ADVANCE_LP_RING(); + } + + master_priv->sarea_priv->pf_current_page = dev_priv->dri1.current_page; + return 0; +} + +static int i915_quiescent(struct drm_device *dev) +{ + struct intel_ring_buffer *ring = LP_RING(dev->dev_private); + + i915_kernel_lost_context(dev); + return intel_wait_ring_idle(ring); +} + +static int i915_flush_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + ret = i915_quiescent(dev); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +static int i915_batchbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) + master_priv->sarea_priv; + drm_i915_batchbuffer_t *batch = data; + int ret; + struct drm_clip_rect *cliprects = NULL; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv->dri1.allow_batchbuffer) { + DRM_ERROR("Batchbuffer ioctl disabled\n"); + return -EINVAL; + } + + DRM_DEBUG_DRIVER("i915 batchbuffer, start %x used %d cliprects %d\n", + batch->start, batch->used, batch->num_cliprects); + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + if (batch->num_cliprects < 0) + return -EINVAL; + + if (batch->num_cliprects) { + cliprects = kcalloc(batch->num_cliprects, + sizeof(struct drm_clip_rect), + GFP_KERNEL); + if (cliprects == NULL) + return -ENOMEM; + + ret = copy_from_user(cliprects, batch->cliprects, + batch->num_cliprects * + sizeof(struct drm_clip_rect)); + if (ret != 0) { + ret = -EFAULT; + goto fail_free; + } + } + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_batchbuffer(dev, batch, cliprects); + mutex_unlock(&dev->struct_mutex); + + if (sarea_priv) + sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + +fail_free: + kfree(cliprects); + + return ret; +} + +static int i915_cmdbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) + master_priv->sarea_priv; + drm_i915_cmdbuffer_t *cmdbuf = data; + struct drm_clip_rect *cliprects = NULL; + void *batch_data; + int ret; + + DRM_DEBUG_DRIVER("i915 cmdbuffer, buf %p sz %d cliprects %d\n", + cmdbuf->buf, cmdbuf->sz, cmdbuf->num_cliprects); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + if (cmdbuf->num_cliprects < 0) + return -EINVAL; + + batch_data = kmalloc(cmdbuf->sz, GFP_KERNEL); + if (batch_data == NULL) + return -ENOMEM; + + ret = copy_from_user(batch_data, cmdbuf->buf, cmdbuf->sz); + if (ret != 0) { + ret = -EFAULT; + goto fail_batch_free; + } + + if (cmdbuf->num_cliprects) { + cliprects = kcalloc(cmdbuf->num_cliprects, + sizeof(struct drm_clip_rect), GFP_KERNEL); + if (cliprects == NULL) { + ret = -ENOMEM; + goto fail_batch_free; + } + + ret = copy_from_user(cliprects, cmdbuf->cliprects, + cmdbuf->num_cliprects * + sizeof(struct drm_clip_rect)); + if (ret != 0) { + ret = -EFAULT; + goto fail_clip_free; + } + } + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_cmdbuffer(dev, cmdbuf, cliprects, batch_data); + mutex_unlock(&dev->struct_mutex); + if (ret) { + DRM_ERROR("i915_dispatch_cmdbuffer failed\n"); + goto fail_clip_free; + } + + if (sarea_priv) + sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + +fail_clip_free: + kfree(cliprects); +fail_batch_free: + kfree(batch_data); + + return ret; +} + +static int i915_emit_irq(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + + i915_kernel_lost_context(dev); + + DRM_DEBUG_DRIVER("\n"); + + dev_priv->dri1.counter++; + if (dev_priv->dri1.counter > 0x7FFFFFFFUL) + dev_priv->dri1.counter = 1; + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_enqueue = dev_priv->dri1.counter; + + if (BEGIN_LP_RING(4) == 0) { + OUT_RING(MI_STORE_DWORD_INDEX); + OUT_RING(I915_BREADCRUMB_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + OUT_RING(dev_priv->dri1.counter); + OUT_RING(MI_USER_INTERRUPT); + ADVANCE_LP_RING(); + } + + return dev_priv->dri1.counter; +} + +static int i915_wait_irq(struct drm_device * dev, int irq_nr) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + int ret = 0; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + DRM_DEBUG_DRIVER("irq_nr=%d breadcrumb=%d\n", irq_nr, + READ_BREADCRUMB(dev_priv)); + + if (READ_BREADCRUMB(dev_priv) >= irq_nr) { + if (master_priv->sarea_priv) + master_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); + return 0; + } + + if (master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; + + if (ring->irq_get(ring)) { + DRM_WAIT_ON(ret, ring->irq_queue, 3 * DRM_HZ, + READ_BREADCRUMB(dev_priv) >= irq_nr); + ring->irq_put(ring); + } else if (wait_for(READ_BREADCRUMB(dev_priv) >= irq_nr, 3000)) + ret = -EBUSY; + + if (ret == -EBUSY) { + DRM_ERROR("EBUSY -- rec: %d emitted: %d\n", + READ_BREADCRUMB(dev_priv), (int)dev_priv->dri1.counter); + } + + return ret; +} + +/* Needs the lock as it touches the ring. + */ +static int i915_irq_emit(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_irq_emit_t *emit = data; + int result; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv || !LP_RING(dev_priv)->virtual_start) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + result = i915_emit_irq(dev); + mutex_unlock(&dev->struct_mutex); + + if (DRM_COPY_TO_USER(emit->irq_seq, &result, sizeof(int))) { + DRM_ERROR("copy_to_user\n"); + return -EFAULT; + } + + return 0; +} + +/* Doesn't need the hardware lock. + */ +static int i915_irq_wait(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_irq_wait_t *irqwait = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + return i915_wait_irq(dev, irqwait->irq_seq); +} + +static int i915_vblank_pipe_get(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_vblank_pipe_t *pipe = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + pipe->pipe = DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B; + + return 0; +} + +/** + * Schedule buffer swap at given vertical blank. + */ +static int i915_vblank_swap(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + /* The delayed swap mechanism was fundamentally racy, and has been + * removed. The model was that the client requested a delayed flip/swap + * from the kernel, then waited for vblank before continuing to perform + * rendering. The problem was that the kernel might wake the client + * up before it dispatched the vblank swap (since the lock has to be + * held while touching the ringbuffer), in which case the client would + * clear and start the next frame before the swap occurred, and + * flicker would occur in addition to likely missing the vblank. + * + * In the absence of this ioctl, userland falls back to a correct path + * of waiting for a vblank, then dispatching the swap on its own. + * Context switching to userland and back is plenty fast enough for + * meeting the requirements of vblank swapping. + */ + return -EINVAL; +} + +static int i915_flip_bufs(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + DRM_DEBUG_DRIVER("%s\n", __func__); + + RING_LOCK_TEST_WITH_RETURN(dev, file_priv); + + mutex_lock(&dev->struct_mutex); + ret = i915_dispatch_flip(dev); + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +static int i915_getparam(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_getparam_t *param = data; + int value; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + switch (param->param) { + case I915_PARAM_IRQ_ACTIVE: + value = dev->pdev->irq ? 1 : 0; + break; + case I915_PARAM_ALLOW_BATCHBUFFER: + value = dev_priv->dri1.allow_batchbuffer ? 1 : 0; + break; + case I915_PARAM_LAST_DISPATCH: + value = READ_BREADCRUMB(dev_priv); + break; + case I915_PARAM_CHIPSET_ID: + value = dev->pci_device; + break; + case I915_PARAM_HAS_GEM: + value = 1; + break; + case I915_PARAM_NUM_FENCES_AVAIL: + value = dev_priv->num_fence_regs - dev_priv->fence_reg_start; + break; + case I915_PARAM_HAS_OVERLAY: + value = dev_priv->overlay ? 1 : 0; + break; + case I915_PARAM_HAS_PAGEFLIPPING: + value = 1; + break; + case I915_PARAM_HAS_EXECBUF2: + /* depends on GEM */ + value = 1; + break; + case I915_PARAM_HAS_BSD: + value = intel_ring_initialized(&dev_priv->ring[VCS]); + break; + case I915_PARAM_HAS_BLT: + value = intel_ring_initialized(&dev_priv->ring[BCS]); + break; + case I915_PARAM_HAS_RELAXED_FENCING: + value = 1; + break; + case I915_PARAM_HAS_COHERENT_RINGS: + value = 1; + break; + case I915_PARAM_HAS_EXEC_CONSTANTS: + value = INTEL_INFO(dev)->gen >= 4; + break; + case I915_PARAM_HAS_RELAXED_DELTA: + value = 1; + break; + case I915_PARAM_HAS_GEN7_SOL_RESET: + value = 1; + break; + case I915_PARAM_HAS_LLC: + value = HAS_LLC(dev); + break; + case I915_PARAM_HAS_ALIASING_PPGTT: + value = dev_priv->mm.aliasing_ppgtt ? 1 : 0; + break; + case I915_PARAM_HAS_WAIT_TIMEOUT: + value = 1; + break; + case I915_PARAM_HAS_SEMAPHORES: + value = i915_semaphore_is_enabled(dev); + break; + case I915_PARAM_HAS_PRIME_VMAP_FLUSH: + value = 1; + break; + case I915_PARAM_HAS_SECURE_BATCHES: + value = capable(CAP_SYS_ADMIN); + break; + default: + DRM_DEBUG_DRIVER("Unknown parameter %d\n", + param->param); + return -EINVAL; + } + + if (DRM_COPY_TO_USER(param->value, &value, sizeof(int))) { + DRM_ERROR("DRM_COPY_TO_USER failed\n"); + return -EFAULT; + } + + return 0; +} + +static int i915_setparam(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_setparam_t *param = data; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + switch (param->param) { + case I915_SETPARAM_USE_MI_BATCHBUFFER_START: + break; + case I915_SETPARAM_TEX_LRU_LOG_GRANULARITY: + break; + case I915_SETPARAM_ALLOW_BATCHBUFFER: + dev_priv->dri1.allow_batchbuffer = param->value ? 1 : 0; + break; + case I915_SETPARAM_NUM_USED_FENCES: + if (param->value > dev_priv->num_fence_regs || + param->value < 0) + return -EINVAL; + /* Userspace can use first N regs */ + dev_priv->fence_reg_start = param->value; + break; + default: + DRM_DEBUG_DRIVER("unknown parameter %d\n", + param->param); + return -EINVAL; + } + + return 0; +} + +static int i915_set_status_page(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + drm_i915_hws_addr_t *hws = data; + struct intel_ring_buffer *ring = LP_RING(dev_priv); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (!I915_NEED_GFX_HWS(dev)) + return -EINVAL; + + if (!dev_priv) { + DRM_ERROR("called with no initialization\n"); + return -EINVAL; + } + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + WARN(1, "tried to set status page when mode setting active\n"); + return 0; + } + + DRM_DEBUG_DRIVER("set status page addr 0x%08x\n", (u32)hws->addr); + + ring->status_page.gfx_addr = hws->addr & (0x1ffff<<12); + + dev_priv->dri1.gfx_hws_cpu_addr = + ioremap_wc(dev_priv->mm.gtt_base_addr + hws->addr, 4096); + if (dev_priv->dri1.gfx_hws_cpu_addr == NULL) { + i915_dma_cleanup(dev); + ring->status_page.gfx_addr = 0; + DRM_ERROR("can not ioremap virtual address for" + " G33 hw status page\n"); + return -ENOMEM; + } + + memset_io(dev_priv->dri1.gfx_hws_cpu_addr, 0, PAGE_SIZE); + I915_WRITE(HWS_PGA, ring->status_page.gfx_addr); + + DRM_DEBUG_DRIVER("load hws HWS_PGA with gfx mem 0x%x\n", + ring->status_page.gfx_addr); + DRM_DEBUG_DRIVER("load hws at %p\n", + ring->status_page.page_addr); + return 0; +} + +static int i915_get_bridge_dev(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->bridge_dev = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0)); + if (!dev_priv->bridge_dev) { + DRM_ERROR("bridge device not found\n"); + return -1; + } + return 0; +} + +#define MCHBAR_I915 0x44 +#define MCHBAR_I965 0x48 +#define MCHBAR_SIZE (4*4096) + +#define DEVEN_REG 0x54 +#define DEVEN_MCHBAR_EN (1 << 28) + +/* Allocate space for the MCH regs if needed, return nonzero on error */ +static int +intel_alloc_mchbar_resource(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp_lo, temp_hi = 0; + u64 mchbar_addr; + int ret; + + if (INTEL_INFO(dev)->gen >= 4) + pci_read_config_dword(dev_priv->bridge_dev, reg + 4, &temp_hi); + pci_read_config_dword(dev_priv->bridge_dev, reg, &temp_lo); + mchbar_addr = ((u64)temp_hi << 32) | temp_lo; + + /* If ACPI doesn't have it, assume we need to allocate it ourselves */ +#ifdef CONFIG_PNP + if (mchbar_addr && + pnp_range_reserved(mchbar_addr, mchbar_addr + MCHBAR_SIZE)) + return 0; +#endif + + /* Get some space for it */ + dev_priv->mch_res.name = "i915 MCHBAR"; + dev_priv->mch_res.flags = IORESOURCE_MEM; + ret = pci_bus_alloc_resource(dev_priv->bridge_dev->bus, + &dev_priv->mch_res, + MCHBAR_SIZE, MCHBAR_SIZE, + PCIBIOS_MIN_MEM, + 0, pcibios_align_resource, + dev_priv->bridge_dev); + if (ret) { + DRM_DEBUG_DRIVER("failed bus alloc: %d\n", ret); + dev_priv->mch_res.start = 0; + return ret; + } + + if (INTEL_INFO(dev)->gen >= 4) + pci_write_config_dword(dev_priv->bridge_dev, reg + 4, + upper_32_bits(dev_priv->mch_res.start)); + + pci_write_config_dword(dev_priv->bridge_dev, reg, + lower_32_bits(dev_priv->mch_res.start)); + return 0; +} + +/* Setup MCHBAR if possible, return true if we should disable it again */ +static void +intel_setup_mchbar(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int mchbar_reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp; + bool enabled; + + dev_priv->mchbar_need_disable = false; + + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_read_config_dword(dev_priv->bridge_dev, DEVEN_REG, &temp); + enabled = !!(temp & DEVEN_MCHBAR_EN); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + enabled = temp & 1; + } + + /* If it's already enabled, don't have to do anything */ + if (enabled) + return; + + if (intel_alloc_mchbar_resource(dev)) + return; + + dev_priv->mchbar_need_disable = true; + + /* Space is allocated or reserved, so enable it. */ + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_write_config_dword(dev_priv->bridge_dev, DEVEN_REG, + temp | DEVEN_MCHBAR_EN); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + pci_write_config_dword(dev_priv->bridge_dev, mchbar_reg, temp | 1); + } +} + +static void +intel_teardown_mchbar(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int mchbar_reg = INTEL_INFO(dev)->gen >= 4 ? MCHBAR_I965 : MCHBAR_I915; + u32 temp; + + if (dev_priv->mchbar_need_disable) { + if (IS_I915G(dev) || IS_I915GM(dev)) { + pci_read_config_dword(dev_priv->bridge_dev, DEVEN_REG, &temp); + temp &= ~DEVEN_MCHBAR_EN; + pci_write_config_dword(dev_priv->bridge_dev, DEVEN_REG, temp); + } else { + pci_read_config_dword(dev_priv->bridge_dev, mchbar_reg, &temp); + temp &= ~1; + pci_write_config_dword(dev_priv->bridge_dev, mchbar_reg, temp); + } + } + + if (dev_priv->mch_res.start) + release_resource(&dev_priv->mch_res); +} + +/* true = enable decode, false = disable decoder */ +static unsigned int i915_vga_set_decode(void *cookie, bool state) +{ + struct drm_device *dev = cookie; + + intel_modeset_vga_set_state(dev, state); + if (state) + return VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM | + VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM; + else + return VGA_RSRC_NORMAL_IO | VGA_RSRC_NORMAL_MEM; +} + +static void i915_switcheroo_set_state(struct pci_dev *pdev, enum vga_switcheroo_state state) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + pm_message_t pmm = { .event = PM_EVENT_SUSPEND }; + if (state == VGA_SWITCHEROO_ON) { + pr_info("switched on\n"); + dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; + /* i915 resume handler doesn't set to D0 */ + pci_set_power_state(dev->pdev, PCI_D0); + i915_resume(dev); + dev->switch_power_state = DRM_SWITCH_POWER_ON; + } else { + pr_err("switched off\n"); + dev->switch_power_state = DRM_SWITCH_POWER_CHANGING; + i915_suspend(dev, pmm); + dev->switch_power_state = DRM_SWITCH_POWER_OFF; + } +} + +static bool i915_switcheroo_can_switch(struct pci_dev *pdev) +{ + struct drm_device *dev = pci_get_drvdata(pdev); + bool can_switch; + + spin_lock(&dev->count_lock); + can_switch = (dev->open_count == 0); + spin_unlock(&dev->count_lock); + return can_switch; +} + +static const struct vga_switcheroo_client_ops i915_switcheroo_ops = { + .set_gpu_state = i915_switcheroo_set_state, + .reprobe = NULL, + .can_switch = i915_switcheroo_can_switch, +}; + +static int i915_load_modeset_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ret = intel_parse_bios(dev); + if (ret) + DRM_INFO("failed to find VBIOS tables\n"); + + /* If we have > 1 VGA cards, then we need to arbitrate access + * to the common VGA resources. + * + * If we are a secondary display controller (!PCI_DISPLAY_CLASS_VGA), + * then we do not take part in VGA arbitration and the + * vga_client_register() fails with -ENODEV. + */ + ret = vga_client_register(dev->pdev, dev, NULL, i915_vga_set_decode); + if (ret && ret != -ENODEV) + goto out; + + intel_register_dsm_handler(); + + ret = vga_switcheroo_register_client(dev->pdev, &i915_switcheroo_ops); + if (ret) + goto cleanup_vga_client; + + /* Initialise stolen first so that we may reserve preallocated + * objects for the BIOS to KMS transition. + */ + ret = i915_gem_init_stolen(dev); + if (ret) + goto cleanup_vga_switcheroo; + + intel_modeset_init(dev); + + ret = i915_gem_init(dev); + if (ret) + goto cleanup_gem_stolen; + + intel_modeset_gem_init(dev); + + INIT_WORK(&dev_priv->console_resume_work, intel_console_resume); + + ret = drm_irq_install(dev); + if (ret) + goto cleanup_gem; + + /* Always safe in the mode setting case. */ + /* FIXME: do pre/post-mode set stuff in core KMS code */ + dev->vblank_disable_allowed = 1; + + ret = intel_fbdev_init(dev); + if (ret) + goto cleanup_irq; + + drm_kms_helper_poll_init(dev); + + /* We're off and running w/KMS */ + dev_priv->mm.suspended = 0; + + return 0; + +cleanup_irq: + drm_irq_uninstall(dev); +cleanup_gem: + mutex_lock(&dev->struct_mutex); + i915_gem_cleanup_ringbuffer(dev); + mutex_unlock(&dev->struct_mutex); + i915_gem_cleanup_aliasing_ppgtt(dev); +cleanup_gem_stolen: + i915_gem_cleanup_stolen(dev); +cleanup_vga_switcheroo: + vga_switcheroo_unregister_client(dev->pdev); +cleanup_vga_client: + vga_client_register(dev->pdev, NULL, NULL, NULL); +out: + return ret; +} + +int i915_master_create(struct drm_device *dev, struct drm_master *master) +{ + struct drm_i915_master_private *master_priv; + + master_priv = kzalloc(sizeof(*master_priv), GFP_KERNEL); + if (!master_priv) + return -ENOMEM; + + master->driver_priv = master_priv; + return 0; +} + +void i915_master_destroy(struct drm_device *dev, struct drm_master *master) +{ + struct drm_i915_master_private *master_priv = master->driver_priv; + + if (!master_priv) + return; + + kfree(master_priv); + + master->driver_priv = NULL; +} + +static void +i915_mtrr_setup(struct drm_i915_private *dev_priv, unsigned long base, + unsigned long size) +{ + dev_priv->mm.gtt_mtrr = -1; + +#if defined(CONFIG_X86_PAT) + if (cpu_has_pat) + return; +#endif + + /* Set up a WC MTRR for non-PAT systems. This is more common than + * one would think, because the kernel disables PAT on first + * generation Core chips because WC PAT gets overridden by a UC + * MTRR if present. Even if a UC MTRR isn't present. + */ + dev_priv->mm.gtt_mtrr = mtrr_add(base, size, MTRR_TYPE_WRCOMB, 1); + if (dev_priv->mm.gtt_mtrr < 0) { + DRM_INFO("MTRR allocation failed. Graphics " + "performance may suffer.\n"); + } +} + +static void i915_kick_out_firmware_fb(struct drm_i915_private *dev_priv) +{ + struct apertures_struct *ap; + struct pci_dev *pdev = dev_priv->dev->pdev; + bool primary; + + ap = alloc_apertures(1); + if (!ap) + return; + + ap->ranges[0].base = dev_priv->mm.gtt->gma_bus_addr; + ap->ranges[0].size = + dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + primary = + pdev->resource[PCI_ROM_RESOURCE].flags & IORESOURCE_ROM_SHADOW; + + remove_conflicting_framebuffers(ap, "inteldrmfb", primary); + + kfree(ap); +} + +static void i915_dump_device_info(struct drm_i915_private *dev_priv) +{ + const struct intel_device_info *info = dev_priv->info; + +#define DEV_INFO_FLAG(name) info->name ? #name "," : "" +#define DEV_INFO_SEP , + DRM_DEBUG_DRIVER("i915 device info: gen=%i, pciid=0x%04x flags=" + "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", + info->gen, + dev_priv->dev->pdev->device, + DEV_INFO_FLAGS); +#undef DEV_INFO_FLAG +#undef DEV_INFO_SEP +} + +/** + * i915_driver_load - setup chip and create an initial config + * @dev: DRM device + * @flags: startup flags + * + * The driver load routine has to do several things: + * - drive output discovery via intel_modeset_init() + * - initialize the memory manager + * - allocate initial config memory + * - setup the DRM framebuffer with the allocated memory + */ +int i915_driver_load(struct drm_device *dev, unsigned long flags) +{ + struct drm_i915_private *dev_priv; + struct intel_device_info *info; + int ret = 0, mmio_bar, mmio_size; + uint32_t aperture_size; + + info = (struct intel_device_info *) flags; + + /* Refuse to load on gen6+ without kms enabled. */ + if (info->gen >= 6 && !drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + /* i915 has 4 more counters */ + dev->counters += 4; + dev->types[6] = _DRM_STAT_IRQ; + dev->types[7] = _DRM_STAT_PRIMARY; + dev->types[8] = _DRM_STAT_SECONDARY; + dev->types[9] = _DRM_STAT_DMA; + + dev_priv = kzalloc(sizeof(drm_i915_private_t), GFP_KERNEL); + if (dev_priv == NULL) + return -ENOMEM; + + dev->dev_private = (void *)dev_priv; + dev_priv->dev = dev; + dev_priv->info = info; + + i915_dump_device_info(dev_priv); + + if (i915_get_bridge_dev(dev)) { + ret = -EIO; + goto free_priv; + } + + ret = i915_gem_gtt_init(dev); + if (ret) + goto put_bridge; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + i915_kick_out_firmware_fb(dev_priv); + + pci_set_master(dev->pdev); + + /* overlay on gen2 is broken and can't address above 1G */ + if (IS_GEN2(dev)) + dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(30)); + + /* 965GM sometimes incorrectly writes to hardware status page (HWS) + * using 32bit addressing, overwriting memory if HWS is located + * above 4GB. + * + * The documentation also mentions an issue with undefined + * behaviour if any general state is accessed within a page above 4GB, + * which also needs to be handled carefully. + */ + if (IS_BROADWATER(dev) || IS_CRESTLINE(dev)) + dma_set_coherent_mask(&dev->pdev->dev, DMA_BIT_MASK(32)); + + mmio_bar = IS_GEN2(dev) ? 1 : 0; + /* Before gen4, the registers and the GTT are behind different BARs. + * However, from gen4 onwards, the registers and the GTT are shared + * in the same BAR, so we want to restrict this ioremap from + * clobbering the GTT which we want ioremap_wc instead. Fortunately, + * the register BAR remains the same size for all the earlier + * generations up to Ironlake. + */ + if (info->gen < 5) + mmio_size = 512*1024; + else + mmio_size = 2*1024*1024; + + dev_priv->regs = pci_iomap(dev->pdev, mmio_bar, mmio_size); + if (!dev_priv->regs) { + DRM_ERROR("failed to map registers\n"); + ret = -EIO; + goto put_gmch; + } + + aperture_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + dev_priv->mm.gtt_base_addr = dev_priv->mm.gtt->gma_bus_addr; + + dev_priv->mm.gtt_mapping = + io_mapping_create_wc(dev_priv->mm.gtt_base_addr, + aperture_size); + if (dev_priv->mm.gtt_mapping == NULL) { + ret = -EIO; + goto out_rmmap; + } + + i915_mtrr_setup(dev_priv, dev_priv->mm.gtt_base_addr, + aperture_size); + + /* The i915 workqueue is primarily used for batched retirement of + * requests (and thus managing bo) once the task has been completed + * by the GPU. i915_gem_retire_requests() is called directly when we + * need high-priority retirement, such as waiting for an explicit + * bo. + * + * It is also used for periodic low-priority events, such as + * idle-timers and recording error state. + * + * All tasks on the workqueue are expected to acquire the dev mutex + * so there is no point in running more than one instance of the + * workqueue at any time. Use an ordered one. + */ + dev_priv->wq = alloc_ordered_workqueue("i915", 0); + if (dev_priv->wq == NULL) { + DRM_ERROR("Failed to create our workqueue.\n"); + ret = -ENOMEM; + goto out_mtrrfree; + } + + /* This must be called before any calls to HAS_PCH_* */ + intel_detect_pch(dev); + + intel_irq_init(dev); + intel_gt_init(dev); + + /* Try to make sure MCHBAR is enabled before poking at it */ + intel_setup_mchbar(dev); + intel_setup_gmbus(dev); + intel_opregion_setup(dev); + + intel_setup_bios(dev); + + i915_gem_load(dev); + + /* On the 945G/GM, the chipset reports the MSI capability on the + * integrated graphics even though the support isn't actually there + * according to the published specs. It doesn't appear to function + * correctly in testing on 945G. + * This may be a side effect of MSI having been made available for PEG + * and the registers being closely associated. + * + * According to chipset errata, on the 965GM, MSI interrupts may + * be lost or delayed, but we use them anyways to avoid + * stuck interrupts on some machines. + */ + if (!IS_I945G(dev) && !IS_I945GM(dev)) + pci_enable_msi(dev->pdev); + + spin_lock_init(&dev_priv->irq_lock); + spin_lock_init(&dev_priv->error_lock); + spin_lock_init(&dev_priv->rps.lock); + spin_lock_init(&dev_priv->dpio_lock); + + mutex_init(&dev_priv->rps.hw_lock); + + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + dev_priv->num_pipe = 3; + else if (IS_MOBILE(dev) || !IS_GEN2(dev)) + dev_priv->num_pipe = 2; + else + dev_priv->num_pipe = 1; + + ret = drm_vblank_init(dev, dev_priv->num_pipe); + if (ret) + goto out_gem_unload; + + /* Start out suspended */ + dev_priv->mm.suspended = 1; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + ret = i915_load_modeset_init(dev); + if (ret < 0) { + DRM_ERROR("failed to init modeset\n"); + goto out_gem_unload; + } + } + + i915_setup_sysfs(dev); + + /* Must be done after probing outputs */ + intel_opregion_init(dev); + acpi_video_register(); + + setup_timer(&dev_priv->hangcheck_timer, i915_hangcheck_elapsed, + (unsigned long) dev); + + if (IS_GEN5(dev)) + intel_gpu_ips_init(dev_priv); + + return 0; + +out_gem_unload: + if (dev_priv->mm.inactive_shrinker.shrink) + unregister_shrinker(&dev_priv->mm.inactive_shrinker); + + if (dev->pdev->msi_enabled) + pci_disable_msi(dev->pdev); + + intel_teardown_gmbus(dev); + intel_teardown_mchbar(dev); + destroy_workqueue(dev_priv->wq); +out_mtrrfree: + if (dev_priv->mm.gtt_mtrr >= 0) { + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + aperture_size); + dev_priv->mm.gtt_mtrr = -1; + } + io_mapping_free(dev_priv->mm.gtt_mapping); +out_rmmap: + pci_iounmap(dev->pdev, dev_priv->regs); +put_gmch: + i915_gem_gtt_fini(dev); +put_bridge: + pci_dev_put(dev_priv->bridge_dev); +free_priv: + kfree(dev_priv); + return ret; +} + +int i915_driver_unload(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + intel_gpu_ips_teardown(); + + i915_teardown_sysfs(dev); + + if (dev_priv->mm.inactive_shrinker.shrink) + unregister_shrinker(&dev_priv->mm.inactive_shrinker); + + mutex_lock(&dev->struct_mutex); + ret = i915_gpu_idle(dev); + if (ret) + DRM_ERROR("failed to idle hardware: %d\n", ret); + i915_gem_retire_requests(dev); + mutex_unlock(&dev->struct_mutex); + + /* Cancel the retire work handler, which should be idle now. */ + cancel_delayed_work_sync(&dev_priv->mm.retire_work); + + io_mapping_free(dev_priv->mm.gtt_mapping); + if (dev_priv->mm.gtt_mtrr >= 0) { + mtrr_del(dev_priv->mm.gtt_mtrr, + dev_priv->mm.gtt_base_addr, + dev_priv->mm.gtt->gtt_mappable_entries * PAGE_SIZE); + dev_priv->mm.gtt_mtrr = -1; + } + + acpi_video_unregister(); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_fbdev_fini(dev); + intel_modeset_cleanup(dev); + cancel_work_sync(&dev_priv->console_resume_work); + + /* + * free the memory space allocated for the child device + * config parsed from VBT + */ + if (dev_priv->child_dev && dev_priv->child_dev_num) { + kfree(dev_priv->child_dev); + dev_priv->child_dev = NULL; + dev_priv->child_dev_num = 0; + } + + vga_switcheroo_unregister_client(dev->pdev); + vga_client_register(dev->pdev, NULL, NULL, NULL); + } + + /* Free error state after interrupts are fully disabled. */ + del_timer_sync(&dev_priv->hangcheck_timer); + cancel_work_sync(&dev_priv->error_work); + i915_destroy_error_state(dev); + + if (dev->pdev->msi_enabled) + pci_disable_msi(dev->pdev); + + intel_opregion_fini(dev); + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + /* Flush any outstanding unpin_work. */ + flush_workqueue(dev_priv->wq); + + mutex_lock(&dev->struct_mutex); + i915_gem_free_all_phys_object(dev); + i915_gem_cleanup_ringbuffer(dev); + i915_gem_context_fini(dev); + mutex_unlock(&dev->struct_mutex); + i915_gem_cleanup_aliasing_ppgtt(dev); + i915_gem_cleanup_stolen(dev); + drm_mm_takedown_hsw(&dev_priv->mm.stolen); + + intel_cleanup_overlay(dev); + + if (!I915_NEED_GFX_HWS(dev)) + i915_free_hws(dev); + } + + if (dev_priv->regs != NULL) + pci_iounmap(dev->pdev, dev_priv->regs); + + intel_teardown_gmbus(dev); + intel_teardown_mchbar(dev); + + destroy_workqueue(dev_priv->wq); + + pci_dev_put(dev_priv->bridge_dev); + kfree(dev->dev_private); + + return 0; +} + +int i915_driver_open(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv; + + DRM_DEBUG_DRIVER("\n"); + file_priv = kmalloc(sizeof(*file_priv), GFP_KERNEL); + if (!file_priv) + return -ENOMEM; + + file->driver_priv = file_priv; + + spin_lock_init(&file_priv->mm.lock); + INIT_LIST_HEAD(&file_priv->mm.request_list); + + idr_init(&file_priv->context_idr); + + return 0; +} + +/** + * i915_driver_lastclose - clean up after all DRM clients have exited + * @dev: DRM device + * + * Take care of cleaning up after all DRM clients have exited. In the + * mode setting case, we want to restore the kernel's initial mode (just + * in case the last client left us in a bad state). + * + * Additionally, in the non-mode setting case, we'll tear down the GTT + * and DMA structures, since the kernel won't be using them, and clea + * up any GEM state. + */ +void i915_driver_lastclose(struct drm_device * dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + /* On gen6+ we refuse to init without kms enabled, but then the drm core + * goes right around and calls lastclose. Check for this and don't clean + * up anything. */ + if (!dev_priv) + return; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) { + intel_fb_restore_mode(dev); + vga_switcheroo_process_delayed_switch(); + return; + } + + i915_gem_lastclose(dev); + + i915_dma_cleanup(dev); +} + +void i915_driver_preclose(struct drm_device * dev, struct drm_file *file_priv) +{ + i915_gem_context_close(dev, file_priv); + i915_gem_release(dev, file_priv); +} + +void i915_driver_postclose(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + kfree(file_priv); +} + +struct drm_ioctl_desc i915_ioctls[] = { + DRM_IOCTL_DEF_DRV(I915_INIT, i915_dma_init, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_FLUSH, i915_flush_ioctl, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_FLIP, i915_flip_bufs, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_BATCHBUFFER, i915_batchbuffer, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_IRQ_EMIT, i915_irq_emit, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_IRQ_WAIT, i915_irq_wait, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_GETPARAM, i915_getparam, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_SETPARAM, i915_setparam, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_ALLOC, drm_noop, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_FREE, drm_noop, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_INIT_HEAP, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_CMDBUFFER, i915_cmdbuffer, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_DESTROY_HEAP, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_SET_VBLANK_PIPE, drm_noop, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_GET_VBLANK_PIPE, i915_vblank_pipe_get, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH), + DRM_IOCTL_DEF_DRV(I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY), + DRM_IOCTL_DEF_DRV(I915_GEM_INIT, i915_gem_init_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER, i915_gem_execbuffer, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_EXECBUFFER2, i915_gem_execbuffer2, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PIN, i915_gem_pin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_UNPIN, i915_gem_unpin_ioctl, DRM_AUTH|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_BUSY, i915_gem_busy_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_CACHING, i915_gem_set_caching_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_CACHING, i915_gem_get_caching_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_THROTTLE, i915_gem_throttle_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_ENTERVT, i915_gem_entervt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_LEAVEVT, i915_gem_leavevt_ioctl, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CREATE, i915_gem_create_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PREAD, i915_gem_pread_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_PWRITE, i915_gem_pwrite_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP, i915_gem_mmap_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MMAP_GTT, i915_gem_mmap_gtt_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_DOMAIN, i915_gem_set_domain_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SW_FINISH, i915_gem_sw_finish_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_SET_TILING, i915_gem_set_tiling, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_TILING, i915_gem_get_tiling, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_GET_APERTURE, i915_gem_get_aperture_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GET_PIPE_FROM_CRTC_ID, intel_get_pipe_from_crtc_id, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_MADVISE, i915_gem_madvise_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_OVERLAY_PUT_IMAGE, intel_overlay_put_image, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_OVERLAY_ATTRS, intel_overlay_attrs, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_SET_SPRITE_COLORKEY, intel_sprite_set_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GET_SPRITE_COLORKEY, intel_sprite_get_colorkey, DRM_MASTER|DRM_CONTROL_ALLOW|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_WAIT, i915_gem_wait_ioctl, DRM_AUTH|DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_CREATE, i915_gem_context_create_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_GEM_CONTEXT_DESTROY, i915_gem_context_destroy_ioctl, DRM_UNLOCKED), + DRM_IOCTL_DEF_DRV(I915_REG_READ, i915_reg_read_ioctl, DRM_UNLOCKED), +}; + +int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls); + +/* + * This is really ugly: Because old userspace abused the linux agp interface to + * manage the gtt, we need to claim that all intel devices are agp. For + * otherwise the drm core refuses to initialize the agp support code. + */ +int i915_driver_device_is_agp(struct drm_device * dev) +{ + return 1; +} --- linux-3.5.0.orig/ubuntu/i915/intel_panel.c +++ linux-3.5.0/ubuntu/i915/intel_panel.c @@ -0,0 +1,480 @@ +/* + * Copyright © 2006-2010 Intel Corporation + * Copyright (c) 2006 Dave Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Dave Airlie + * Jesse Barnes + * Chris Wilson + */ + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include "intel_drv.h" + +#define PCI_LBPC 0xf4 /* legacy/combination backlight modes */ + +void +intel_fixed_panel_mode(struct drm_display_mode *fixed_mode, + struct drm_display_mode *adjusted_mode) +{ + adjusted_mode->hdisplay = fixed_mode->hdisplay; + adjusted_mode->hsync_start = fixed_mode->hsync_start; + adjusted_mode->hsync_end = fixed_mode->hsync_end; + adjusted_mode->htotal = fixed_mode->htotal; + + adjusted_mode->vdisplay = fixed_mode->vdisplay; + adjusted_mode->vsync_start = fixed_mode->vsync_start; + adjusted_mode->vsync_end = fixed_mode->vsync_end; + adjusted_mode->vtotal = fixed_mode->vtotal; + + adjusted_mode->clock = fixed_mode->clock; +} + +/* adjusted_mode has been preset to be the panel's fixed mode */ +void +intel_pch_panel_fitting(struct drm_device *dev, + int fitting_mode, + const struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int x, y, width, height; + + x = y = width = height = 0; + + /* Native modes don't need fitting */ + if (adjusted_mode->hdisplay == mode->hdisplay && + adjusted_mode->vdisplay == mode->vdisplay) + goto done; + + switch (fitting_mode) { + case DRM_MODE_SCALE_CENTER: + width = mode->hdisplay; + height = mode->vdisplay; + x = (adjusted_mode->hdisplay - width + 1)/2; + y = (adjusted_mode->vdisplay - height + 1)/2; + break; + + case DRM_MODE_SCALE_ASPECT: + /* Scale but preserve the aspect ratio */ + { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + if (scaled_width > scaled_height) { /* pillar */ + width = scaled_height / mode->vdisplay; + if (width & 1) + width++; + x = (adjusted_mode->hdisplay - width + 1) / 2; + y = 0; + height = adjusted_mode->vdisplay; + } else if (scaled_width < scaled_height) { /* letter */ + height = scaled_width / mode->hdisplay; + if (height & 1) + height++; + y = (adjusted_mode->vdisplay - height + 1) / 2; + x = 0; + width = adjusted_mode->hdisplay; + } else { + x = y = 0; + width = adjusted_mode->hdisplay; + height = adjusted_mode->vdisplay; + } + } + break; + + default: + case DRM_MODE_SCALE_FULLSCREEN: + x = y = 0; + width = adjusted_mode->hdisplay; + height = adjusted_mode->vdisplay; + break; + } + +done: + dev_priv->pch_pf_pos = (x << 16) | y; + dev_priv->pch_pf_size = (width << 16) | height; +} + +static int is_backlight_combination_mode(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen >= 4) + return I915_READ(BLC_PWM_CTL2) & BLM_COMBINATION_MODE; + + if (IS_GEN2(dev)) + return I915_READ(BLC_PWM_CTL) & BLM_LEGACY_MODE; + + return 0; +} + +static u32 i915_read_blc_pwm_ctl(struct drm_i915_private *dev_priv) +{ + u32 val; + + /* Restore the CTL value if it lost, e.g. GPU reset */ + + if (HAS_PCH_SPLIT(dev_priv->dev)) { + val = I915_READ(BLC_PWM_PCH_CTL2); + if (dev_priv->regfile.saveBLC_PWM_CTL2 == 0) { + dev_priv->regfile.saveBLC_PWM_CTL2 = val; + } else if (val == 0) { + I915_WRITE(BLC_PWM_PCH_CTL2, + dev_priv->regfile.saveBLC_PWM_CTL2); + val = dev_priv->regfile.saveBLC_PWM_CTL2; + } + } else { + val = I915_READ(BLC_PWM_CTL); + if (dev_priv->regfile.saveBLC_PWM_CTL == 0) { + dev_priv->regfile.saveBLC_PWM_CTL = val; + dev_priv->regfile.saveBLC_PWM_CTL2 = I915_READ(BLC_PWM_CTL2); + } else if (val == 0) { + I915_WRITE(BLC_PWM_CTL, + dev_priv->regfile.saveBLC_PWM_CTL); + I915_WRITE(BLC_PWM_CTL2, + dev_priv->regfile.saveBLC_PWM_CTL2); + val = dev_priv->regfile.saveBLC_PWM_CTL; + } + } + + return val; +} + +static u32 _intel_panel_get_max_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 max; + + max = i915_read_blc_pwm_ctl(dev_priv); + + if (HAS_PCH_SPLIT(dev)) { + max >>= 16; + } else { + if (INTEL_INFO(dev)->gen < 4) + max >>= 17; + else + max >>= 16; + + if (is_backlight_combination_mode(dev)) + max *= 0xff; + } + + return max; +} + +u32 intel_panel_get_max_backlight(struct drm_device *dev) +{ + u32 max; + + max = _intel_panel_get_max_backlight(dev); + if (max == 0) { + /* XXX add code here to query mode clock or hardware clock + * and program max PWM appropriately. + */ + pr_warn_once("fixme: max PWM is zero\n"); + return 1; + } + + DRM_DEBUG_DRIVER("max backlight PWM = %d\n", max); + return max; +} + +static int i915_panel_invert_brightness; +MODULE_PARM_DESC(invert_brightness, "Invert backlight brightness " + "(-1 force normal, 0 machine defaults, 1 force inversion), please " + "report PCI device ID, subsystem vendor and subsystem device ID " + "to dri-devel@lists.freedesktop.org, if your machine needs it. " + "It will then be included in an upcoming module version."); +module_param_named(invert_brightness, i915_panel_invert_brightness, int, 0600); +static u32 intel_panel_compute_brightness(struct drm_device *dev, u32 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (i915_panel_invert_brightness < 0) + return val; + + if (i915_panel_invert_brightness > 0 || + dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) + return intel_panel_get_max_backlight(dev) - val; + + return val; +} + +static u32 intel_panel_get_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val; + + if (HAS_PCH_SPLIT(dev)) { + val = I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; + } else { + val = I915_READ(BLC_PWM_CTL) & BACKLIGHT_DUTY_CYCLE_MASK; + if (INTEL_INFO(dev)->gen < 4) + val >>= 1; + + if (is_backlight_combination_mode(dev)) { + u8 lbpc; + + pci_read_config_byte(dev->pdev, PCI_LBPC, &lbpc); + val *= lbpc; + } + } + + val = intel_panel_compute_brightness(dev, val); + DRM_DEBUG_DRIVER("get backlight PWM = %d\n", val); + return val; +} + +static void intel_pch_panel_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val = I915_READ(BLC_PWM_CPU_CTL) & ~BACKLIGHT_DUTY_CYCLE_MASK; + I915_WRITE(BLC_PWM_CPU_CTL, val | level); +} + +static void intel_panel_actually_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 tmp; + + DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level); + level = intel_panel_compute_brightness(dev, level); + + if (HAS_PCH_SPLIT(dev)) + return intel_pch_panel_set_backlight(dev, level); + + if (is_backlight_combination_mode(dev)) { + u32 max = intel_panel_get_max_backlight(dev); + u8 lbpc; + + lbpc = level * 0xfe / max + 1; + level /= lbpc; + pci_write_config_byte(dev->pdev, PCI_LBPC, lbpc); + } + + tmp = I915_READ(BLC_PWM_CTL); + if (INTEL_INFO(dev)->gen < 4) + level <<= 1; + tmp &= ~BACKLIGHT_DUTY_CYCLE_MASK; + I915_WRITE(BLC_PWM_CTL, tmp | level); +} + +void intel_panel_set_backlight(struct drm_device *dev, u32 level) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_level = level; + if (dev_priv->backlight_enabled) + intel_panel_actually_set_backlight(dev, level); +} + +void intel_panel_disable_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_enabled = false; + intel_panel_actually_set_backlight(dev, 0); + + if (INTEL_INFO(dev)->gen >= 4) { + uint32_t reg, tmp; + + reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; + + I915_WRITE(reg, I915_READ(reg) & ~BLM_PWM_ENABLE); + + if (HAS_PCH_SPLIT(dev)) { + tmp = I915_READ(BLC_PWM_PCH_CTL1); + tmp &= ~BLM_PCH_PWM_ENABLE; + I915_WRITE(BLC_PWM_PCH_CTL1, tmp); + } + } +} + +void intel_panel_enable_backlight(struct drm_device *dev, + enum pipe pipe) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->backlight_level == 0) + dev_priv->backlight_level = intel_panel_get_max_backlight(dev); + + if (INTEL_INFO(dev)->gen >= 4) { + uint32_t reg, tmp; + + reg = HAS_PCH_SPLIT(dev) ? BLC_PWM_CPU_CTL2 : BLC_PWM_CTL2; + + + tmp = I915_READ(reg); + + /* Note that this can also get called through dpms changes. And + * we don't track the backlight dpms state, hence check whether + * we have to do anything first. */ + if (tmp & BLM_PWM_ENABLE) + goto set_level; + + if (dev_priv->num_pipe == 3) + tmp &= ~BLM_PIPE_SELECT_IVB; + else + tmp &= ~BLM_PIPE_SELECT; + + tmp |= BLM_PIPE(pipe); + tmp &= ~BLM_PWM_ENABLE; + + I915_WRITE(reg, tmp); + POSTING_READ(reg); + I915_WRITE(reg, tmp | BLM_PWM_ENABLE); + + if (HAS_PCH_SPLIT(dev)) { + tmp = I915_READ(BLC_PWM_PCH_CTL1); + tmp |= BLM_PCH_PWM_ENABLE; + tmp &= ~BLM_PCH_OVERRIDE_ENABLE; + I915_WRITE(BLC_PWM_PCH_CTL1, tmp); + } + } + +set_level: + /* Call below after setting BLC_PWM_CPU_CTL2 and BLC_PWM_PCH_CTL1. + * BLC_PWM_CPU_CTL may be cleared to zero automatically when these + * registers are set. + */ + dev_priv->backlight_enabled = true; + intel_panel_actually_set_backlight(dev, dev_priv->backlight_level); +} + +static void intel_panel_init_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->backlight_level = intel_panel_get_backlight(dev); + dev_priv->backlight_enabled = dev_priv->backlight_level != 0; +} + +enum drm_connector_status +intel_panel_detect(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Assume that the BIOS does not lie through the OpRegion... */ + if (!i915_panel_ignore_lid && dev_priv->opregion.lid_state) { + return ioread32(dev_priv->opregion.lid_state) & 0x1 ? + connector_status_connected : + connector_status_disconnected; + } + + switch (i915_panel_ignore_lid) { + case -2: + return connector_status_connected; + case -1: + return connector_status_disconnected; + default: + return connector_status_unknown; + } +} + +#ifdef CONFIG_BACKLIGHT_CLASS_DEVICE +static int intel_panel_update_status(struct backlight_device *bd) +{ + struct drm_device *dev = bl_get_data(bd); + intel_panel_set_backlight(dev, bd->props.brightness); + return 0; +} + +static int intel_panel_get_brightness(struct backlight_device *bd) +{ + struct drm_device *dev = bl_get_data(bd); + struct drm_i915_private *dev_priv = dev->dev_private; + return dev_priv->backlight_level; +} + +static const struct backlight_ops intel_panel_bl_ops = { + .update_status = intel_panel_update_status, + .get_brightness = intel_panel_get_brightness, +}; + +int intel_panel_setup_backlight(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct backlight_properties props; + + intel_panel_init_backlight(dev); + + memset(&props, 0, sizeof(props)); + props.type = BACKLIGHT_RAW; + props.max_brightness = _intel_panel_get_max_backlight(dev); + if (props.max_brightness == 0) { + DRM_DEBUG_DRIVER("Failed to get maximum backlight value\n"); + return -ENODEV; + } + dev_priv->backlight = + backlight_device_register("intel_backlight", + &connector->kdev, dev, + &intel_panel_bl_ops, &props); + + if (IS_ERR(dev_priv->backlight)) { + DRM_ERROR("Failed to register backlight: %ld\n", + PTR_ERR(dev_priv->backlight)); + dev_priv->backlight = NULL; + return -ENODEV; + } + dev_priv->backlight->props.brightness = intel_panel_get_backlight(dev); + return 0; +} + +void intel_panel_destroy_backlight(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + if (dev_priv->backlight) + backlight_device_unregister(dev_priv->backlight); +} +#else +int intel_panel_setup_backlight(struct drm_connector *connector) +{ + intel_panel_init_backlight(connector->dev); + return 0; +} + +void intel_panel_destroy_backlight(struct drm_device *dev) +{ + return; +} +#endif + +int intel_panel_init(struct intel_panel *panel, + struct drm_display_mode *fixed_mode) +{ + panel->fixed_mode = fixed_mode; + + return 0; +} + +void intel_panel_fini(struct intel_panel *panel) +{ + struct intel_connector *intel_connector = + container_of(panel, struct intel_connector, panel); + + if (panel->fixed_mode) + drm_mode_destroy(intel_connector->base.dev, panel->fixed_mode); +} --- linux-3.5.0.orig/ubuntu/i915/intel_ringbuffer.c +++ linux-3.5.0/ubuntu/i915/intel_ringbuffer.c @@ -0,0 +1,1756 @@ +/* + * Copyright © 2008-2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Zou Nan hai + * Xiang Hai hao + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drv.h" +#include "i915_drm.h" +#include "i915_trace.h" +#include "intel_drv.h" + +/* + * 965+ support PIPE_CONTROL commands, which provide finer grained control + * over cache flushing. + */ +struct pipe_control { + struct drm_i915_gem_object *obj; + volatile u32 *cpu_page; + u32 gtt_offset; +}; + +static inline int ring_space(struct intel_ring_buffer *ring) +{ + int space = (ring->head & HEAD_ADDR) - (ring->tail + 8); + if (space < 0) + space += ring->size; + return space; +} + +static int +gen2_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + u32 cmd; + int ret; + + cmd = MI_FLUSH; + if (((invalidate_domains|flush_domains) & I915_GEM_DOMAIN_RENDER) == 0) + cmd |= MI_NO_WRITE_FLUSH; + + if (invalidate_domains & I915_GEM_DOMAIN_SAMPLER) + cmd |= MI_READ_FLUSH; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +static int +gen4_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + struct drm_device *dev = ring->dev; + u32 cmd; + int ret; + + /* + * read/write caches: + * + * I915_GEM_DOMAIN_RENDER is always invalidated, but is + * only flushed if MI_NO_WRITE_FLUSH is unset. On 965, it is + * also flushed at 2d versus 3d pipeline switches. + * + * read-only caches: + * + * I915_GEM_DOMAIN_SAMPLER is flushed on pre-965 if + * MI_READ_FLUSH is set, and is always flushed on 965. + * + * I915_GEM_DOMAIN_COMMAND may not exist? + * + * I915_GEM_DOMAIN_INSTRUCTION, which exists on 965, is + * invalidated when MI_EXE_FLUSH is set. + * + * I915_GEM_DOMAIN_VERTEX, which exists on 965, is + * invalidated with every MI_FLUSH. + * + * TLBs: + * + * On 965, TLBs associated with I915_GEM_DOMAIN_COMMAND + * and I915_GEM_DOMAIN_CPU in are invalidated at PTE write and + * I915_GEM_DOMAIN_RENDER and I915_GEM_DOMAIN_SAMPLER + * are flushed at any MI_FLUSH. + */ + + cmd = MI_FLUSH | MI_NO_WRITE_FLUSH; + if ((invalidate_domains|flush_domains) & I915_GEM_DOMAIN_RENDER) + cmd &= ~MI_NO_WRITE_FLUSH; + if (invalidate_domains & I915_GEM_DOMAIN_INSTRUCTION) + cmd |= MI_EXE_FLUSH; + + if (invalidate_domains & I915_GEM_DOMAIN_COMMAND && + (IS_G4X(dev) || IS_GEN5(dev))) + cmd |= MI_INVALIDATE_ISP; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +/** + * Emits a PIPE_CONTROL with a non-zero post-sync operation, for + * implementing two workarounds on gen6. From section 1.4.7.1 + * "PIPE_CONTROL" of the Sandy Bridge PRM volume 2 part 1: + * + * [DevSNB-C+{W/A}] Before any depth stall flush (including those + * produced by non-pipelined state commands), software needs to first + * send a PIPE_CONTROL with no bits set except Post-Sync Operation != + * 0. + * + * [Dev-SNB{W/A}]: Before a PIPE_CONTROL with Write Cache Flush Enable + * =1, a PIPE_CONTROL with any non-zero post-sync-op is required. + * + * And the workaround for these two requires this workaround first: + * + * [Dev-SNB{W/A}]: Pipe-control with CS-stall bit set must be sent + * BEFORE the pipe-control with a post-sync op and no write-cache + * flushes. + * + * And this last workaround is tricky because of the requirements on + * that bit. From section 1.4.7.2.3 "Stall" of the Sandy Bridge PRM + * volume 2 part 1: + * + * "1 of the following must also be set: + * - Render Target Cache Flush Enable ([12] of DW1) + * - Depth Cache Flush Enable ([0] of DW1) + * - Stall at Pixel Scoreboard ([1] of DW1) + * - Depth Stall ([13] of DW1) + * - Post-Sync Operation ([13] of DW1) + * - Notify Enable ([8] of DW1)" + * + * The cache flushes require the workaround flush that triggered this + * one, so we can't use it. Depth stall would trigger the same. + * Post-sync nonzero is what triggered this second workaround, so we + * can't use that one either. Notify enable is IRQs, which aren't + * really our business. That leaves only stall at scoreboard. + */ +static int +intel_emit_post_sync_nonzero_flush(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(5)); + intel_ring_emit(ring, PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_STALL_AT_SCOREBOARD); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); /* address */ + intel_ring_emit(ring, 0); /* low dword */ + intel_ring_emit(ring, 0); /* high dword */ + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + ret = intel_ring_begin(ring, 6); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(5)); + intel_ring_emit(ring, PIPE_CONTROL_QW_WRITE); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); /* address */ + intel_ring_emit(ring, 0); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + + return 0; +} + +static int +gen6_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, u32 flush_domains) +{ + u32 flags = 0; + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* Force SNB workarounds for PIPE_CONTROL flushes */ + ret = intel_emit_post_sync_nonzero_flush(ring); + if (ret) + return ret; + + /* Just flush everything. Experiments have shown that reducing the + * number of bits based on the write domains has little performance + * impact. + */ + if (flush_domains) { + flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; + flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + /* + * Ensure that any following seqno writes only happen + * when the render cache is indeed flushed. + */ + flags |= PIPE_CONTROL_CS_STALL; + } + if (invalidate_domains) { + flags |= PIPE_CONTROL_TLB_INVALIDATE; + flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + /* + * TLB invalidate requires a post-sync write. + */ + flags |= PIPE_CONTROL_QW_WRITE | PIPE_CONTROL_CS_STALL; + } + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, flags); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static int +gen7_render_ring_cs_stall_wa(struct intel_ring_buffer *ring) +{ + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, PIPE_CONTROL_CS_STALL | + PIPE_CONTROL_STALL_AT_SCOREBOARD); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static int +gen7_render_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, u32 flush_domains) +{ + u32 flags = 0; + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* + * Ensure that any following seqno writes only happen when the render + * cache is indeed flushed. + * + * Workaround: 4th PIPE_CONTROL command (except the ones with only + * read-cache invalidate bits set) must have the CS_STALL bit set. We + * don't try to be clever and just set it unconditionally. + */ + flags |= PIPE_CONTROL_CS_STALL; + + /* Just flush everything. Experiments have shown that reducing the + * number of bits based on the write domains has little performance + * impact. + */ + if (flush_domains) { + flags |= PIPE_CONTROL_RENDER_TARGET_CACHE_FLUSH; + flags |= PIPE_CONTROL_DEPTH_CACHE_FLUSH; + } + if (invalidate_domains) { + flags |= PIPE_CONTROL_TLB_INVALIDATE; + flags |= PIPE_CONTROL_INSTRUCTION_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_VF_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_CONST_CACHE_INVALIDATE; + flags |= PIPE_CONTROL_STATE_CACHE_INVALIDATE; + /* + * TLB invalidate requires a post-sync write. + */ + flags |= PIPE_CONTROL_QW_WRITE; + + /* 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. */ + gen7_render_ring_cs_stall_wa(ring); + } + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4)); + intel_ring_emit(ring, flags); + intel_ring_emit(ring, scratch_addr | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + return 0; +} + +static void ring_write_tail(struct intel_ring_buffer *ring, + u32 value) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + I915_WRITE_TAIL(ring, value); +} + +u32 intel_ring_get_active_head(struct intel_ring_buffer *ring) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + u32 acthd_reg = INTEL_INFO(ring->dev)->gen >= 4 ? + RING_ACTHD(ring->mmio_base) : ACTHD; + + return I915_READ(acthd_reg); +} + +static int init_ring_common(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj = ring->obj; + int ret = 0; + u32 head; + + if (HAS_FORCE_WAKE(dev)) + gen6_gt_force_wake_get(dev_priv); + + /* Stop the ring if it's running. */ + I915_WRITE_CTL(ring, 0); + I915_WRITE_HEAD(ring, 0); + ring->write_tail(ring, 0); + + head = I915_READ_HEAD(ring) & HEAD_ADDR; + + /* G45 ring initialization fails to reset head to zero */ + if (head != 0) { + DRM_DEBUG_KMS("%s head not reset to zero " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(ring)); + + I915_WRITE_HEAD(ring, 0); + + if (I915_READ_HEAD(ring) & HEAD_ADDR) { + DRM_ERROR("failed to set %s head to zero " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(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 + * register values. */ + I915_WRITE_START(ring, obj->gtt_offset); + I915_WRITE_CTL(ring, + ((ring->size - PAGE_SIZE) & RING_NR_PAGES) + | RING_VALID); + + /* If the head is still not zero, the ring is dead */ + if (wait_for((I915_READ_CTL(ring) & RING_VALID) != 0 && + I915_READ_START(ring) == obj->gtt_offset && + (I915_READ_HEAD(ring) & HEAD_ADDR) == 0, 50)) { + DRM_ERROR("%s initialization failed " + "ctl %08x head %08x tail %08x start %08x\n", + ring->name, + I915_READ_CTL(ring), + I915_READ_HEAD(ring), + I915_READ_TAIL(ring), + I915_READ_START(ring)); + ret = -EIO; + goto out; + } + + if (!drm_core_check_feature(ring->dev, DRIVER_MODESET)) + i915_kernel_lost_context(ring->dev); + else { + ring->head = I915_READ_HEAD(ring); + ring->tail = I915_READ_TAIL(ring) & TAIL_ADDR; + ring->space = ring_space(ring); + ring->last_retired_head = -1; + } + +out: + if (HAS_FORCE_WAKE(dev)) + gen6_gt_force_wake_put(dev_priv); + + return ret; +} + +static int +init_pipe_control(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc; + struct drm_i915_gem_object *obj; + int ret; + + if (ring->private) + return 0; + + pc = kmalloc(sizeof(*pc), GFP_KERNEL); + if (!pc) + return -ENOMEM; + + obj = i915_gem_alloc_object(ring->dev, 4096); + if (obj == NULL) { + DRM_ERROR("Failed to allocate seqno page\n"); + ret = -ENOMEM; + goto err; + } + + i915_gem_object_set_cache_level(obj, I915_CACHE_LLC); + + ret = i915_gem_object_pin(obj, 4096, true, false); + if (ret) + goto err_unref; + + pc->gtt_offset = obj->gtt_offset; + pc->cpu_page = kmap(sg_page(obj->pages->sgl)); + if (pc->cpu_page == NULL) + goto err_unpin; + + pc->obj = obj; + ring->private = pc; + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); +err: + kfree(pc); + return ret; +} + +static void +cleanup_pipe_control(struct intel_ring_buffer *ring) +{ + struct pipe_control *pc = ring->private; + struct drm_i915_gem_object *obj; + + if (!ring->private) + return; + + obj = pc->obj; + + kunmap(sg_page(obj->pages->sgl)); + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + + kfree(pc); + ring->private = NULL; +} + +static int init_render_ring(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret = init_ring_common(ring); + + if (INTEL_INFO(dev)->gen > 3) { + I915_WRITE(MI_MODE, _MASKED_BIT_ENABLE(VS_TIMER_DISPATCH)); + if (IS_GEN7(dev)) + I915_WRITE(GFX_MODE_GEN7, + _MASKED_BIT_DISABLE(GFX_TLB_INVALIDATE_ALWAYS) | + _MASKED_BIT_ENABLE(GFX_REPLAY_MODE)); + } + + if (INTEL_INFO(dev)->gen >= 5) { + ret = init_pipe_control(ring); + if (ret) + return ret; + } + + if (IS_GEN6(dev)) { + /* From the Sandybridge PRM, volume 1 part 3, page 24: + * "If this bit is set, STCunit will have LRA as replacement + * policy. [...] This bit must be reset. LRA replacement + * policy is not supported." + */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_DISABLE(CM0_STC_EVICT_DISABLE_LRA_SNB)); + + /* This is not explicitly set for GEN6, so read the register. + * see intel_ring_mi_set_context() for why we care. + * TODO: consider explicitly setting the bit for GEN5 + */ + ring->itlb_before_ctx_switch = + !!(I915_READ(GFX_MODE) & GFX_TLB_INVALIDATE_ALWAYS); + } + + if (INTEL_INFO(dev)->gen >= 6) + I915_WRITE(INSTPM, _MASKED_BIT_ENABLE(INSTPM_FORCE_ORDERING)); + + if (HAS_L3_GPU_CACHE(dev)) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + + return ret; +} + +static void render_ring_cleanup(struct intel_ring_buffer *ring) +{ + if (!ring->private) + return; + + cleanup_pipe_control(ring); +} + +static void +update_mboxes(struct intel_ring_buffer *ring, + u32 seqno, + u32 mmio_offset) +{ + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, mmio_offset); + intel_ring_emit(ring, seqno); +} + +/** + * gen6_add_request - Update the semaphore mailbox registers + * + * @ring - ring that is adding a request + * @seqno - return seqno stuck into the ring + * + * Update the mailbox registers in the *other* rings with the current seqno. + * This acts like a signal in the canonical semaphore. + */ +static int +gen6_add_request(struct intel_ring_buffer *ring, + u32 *seqno) +{ + u32 mbox1_reg; + u32 mbox2_reg; + int ret; + + ret = intel_ring_begin(ring, 10); + if (ret) + return ret; + + mbox1_reg = ring->signal_mbox[0]; + mbox2_reg = ring->signal_mbox[1]; + + *seqno = i915_gem_next_request_seqno(ring); + + update_mboxes(ring, *seqno, mbox1_reg); + update_mboxes(ring, *seqno, mbox2_reg); + intel_ring_emit(ring, MI_STORE_DWORD_INDEX); + intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + intel_ring_emit(ring, *seqno); + intel_ring_emit(ring, MI_USER_INTERRUPT); + intel_ring_advance(ring); + + return 0; +} + +/** + * intel_ring_sync - sync the waiter to the signaller on seqno + * + * @waiter - ring that is waiting + * @signaller - ring which has, or will signal + * @seqno - seqno which the waiter will block on + */ +static int +gen6_ring_sync(struct intel_ring_buffer *waiter, + struct intel_ring_buffer *signaller, + u32 seqno) +{ + int ret; + u32 dw1 = MI_SEMAPHORE_MBOX | + MI_SEMAPHORE_COMPARE | + MI_SEMAPHORE_REGISTER; + + /* Throughout all of the GEM code, seqno passed implies our current + * seqno is >= the last seqno executed. However for hardware the + * comparison is strictly greater than. + */ + seqno -= 1; + + WARN_ON(signaller->semaphore_register[waiter->id] == + MI_SEMAPHORE_SYNC_INVALID); + + ret = intel_ring_begin(waiter, 4); + if (ret) + return ret; + + intel_ring_emit(waiter, + dw1 | signaller->semaphore_register[waiter->id]); + intel_ring_emit(waiter, seqno); + intel_ring_emit(waiter, 0); + intel_ring_emit(waiter, MI_NOOP); + intel_ring_advance(waiter); + + return 0; +} + +#define PIPE_CONTROL_FLUSH(ring__, addr__) \ +do { \ + intel_ring_emit(ring__, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | \ + PIPE_CONTROL_DEPTH_STALL); \ + intel_ring_emit(ring__, (addr__) | PIPE_CONTROL_GLOBAL_GTT); \ + intel_ring_emit(ring__, 0); \ + intel_ring_emit(ring__, 0); \ +} while (0) + +static int +pc_render_add_request(struct intel_ring_buffer *ring, + u32 *result) +{ + u32 seqno = i915_gem_next_request_seqno(ring); + struct pipe_control *pc = ring->private; + u32 scratch_addr = pc->gtt_offset + 128; + int ret; + + /* For Ironlake, MI_USER_INTERRUPT was deprecated and apparently + * incoherent with writes to memory, i.e. completely fubar, + * so we need to use PIPE_NOTIFY instead. + * + * However, we also need to workaround the qword write + * incoherence by flushing the 6 PIPE_NOTIFY buffers out to + * memory before requesting an interrupt. + */ + ret = intel_ring_begin(ring, 32); + if (ret) + return ret; + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | + PIPE_CONTROL_WRITE_FLUSH | + PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE); + intel_ring_emit(ring, pc->gtt_offset | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, seqno); + intel_ring_emit(ring, 0); + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; /* write to separate cachelines */ + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + scratch_addr += 128; + PIPE_CONTROL_FLUSH(ring, scratch_addr); + + intel_ring_emit(ring, GFX_OP_PIPE_CONTROL(4) | PIPE_CONTROL_QW_WRITE | + PIPE_CONTROL_WRITE_FLUSH | + PIPE_CONTROL_TEXTURE_CACHE_INVALIDATE | + PIPE_CONTROL_NOTIFY); + intel_ring_emit(ring, pc->gtt_offset | PIPE_CONTROL_GLOBAL_GTT); + intel_ring_emit(ring, seqno); + intel_ring_emit(ring, 0); + intel_ring_advance(ring); + + *result = seqno; + return 0; +} + +static u32 +gen6_ring_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + /* Workaround to force correct ordering between irq and seqno writes on + * ivb (and maybe also on snb) by reading from a CS register (like + * ACTHD) before reading the status page. */ + if (!lazy_coherency) + intel_ring_get_active_head(ring); + return intel_read_status_page(ring, I915_GEM_HWS_INDEX); +} + +static u32 +ring_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + return intel_read_status_page(ring, I915_GEM_HWS_INDEX); +} + +static u32 +pc_render_get_seqno(struct intel_ring_buffer *ring, bool lazy_coherency) +{ + struct pipe_control *pc = ring->private; + return pc->cpu_page[0]; +} + +static bool +gen5_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +gen5_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->gt_irq_mask |= ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +static bool +i9xx_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(IMR, dev_priv->irq_mask); + POSTING_READ(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +i9xx_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->irq_mask |= ring->irq_enable_mask; + I915_WRITE(IMR, dev_priv->irq_mask); + POSTING_READ(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +static bool +i8xx_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + dev_priv->irq_mask &= ~ring->irq_enable_mask; + I915_WRITE16(IMR, dev_priv->irq_mask); + POSTING_READ16(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +i8xx_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + dev_priv->irq_mask |= ring->irq_enable_mask; + I915_WRITE16(IMR, dev_priv->irq_mask); + POSTING_READ16(IMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); +} + +void intel_ring_setup_status_page(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = ring->dev->dev_private; + u32 mmio = 0; + + /* The ring status page addresses are no longer next to the rest of + * the ring registers as of gen7. + */ + if (IS_GEN7(dev)) { + switch (ring->id) { + case RCS: + mmio = RENDER_HWS_PGA_GEN7; + break; + case BCS: + mmio = BLT_HWS_PGA_GEN7; + break; + case VCS: + mmio = BSD_HWS_PGA_GEN7; + break; + } + } else if (IS_GEN6(ring->dev)) { + mmio = RING_HWS_PGA_GEN6(ring->mmio_base); + } else { + mmio = RING_HWS_PGA(ring->mmio_base); + } + + I915_WRITE(mmio, (u32)ring->status_page.gfx_addr); + POSTING_READ(mmio); +} + +static int +bsd_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate_domains, + u32 flush_domains) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_FLUSH); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +static int +i9xx_add_request(struct intel_ring_buffer *ring, + u32 *result) +{ + u32 seqno; + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + seqno = i915_gem_next_request_seqno(ring); + + intel_ring_emit(ring, MI_STORE_DWORD_INDEX); + intel_ring_emit(ring, I915_GEM_HWS_INDEX << MI_STORE_DWORD_INDEX_SHIFT); + intel_ring_emit(ring, seqno); + intel_ring_emit(ring, MI_USER_INTERRUPT); + intel_ring_advance(ring); + + *result = seqno; + return 0; +} + +static bool +gen6_ring_get_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + if (!dev->irq_enabled) + return false; + + /* It looks like we need to prevent the gt from suspending while waiting + * for an notifiy irq, otherwise irqs seem to get lost on at least the + * blt/bsd rings on ivb. */ + gen6_gt_force_wake_get(dev_priv); + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (ring->irq_refcount++ == 0) { + if (HAS_L3_GPU_CACHE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~(ring->irq_enable_mask | + GEN6_RENDER_L3_PARITY_ERROR)); + else + I915_WRITE_IMR(ring, ~ring->irq_enable_mask); + dev_priv->gt_irq_mask &= ~ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + return true; +} + +static void +gen6_ring_put_irq(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + drm_i915_private_t *dev_priv = dev->dev_private; + unsigned long flags; + + spin_lock_irqsave(&dev_priv->irq_lock, flags); + if (--ring->irq_refcount == 0) { + if (HAS_L3_GPU_CACHE(dev) && ring->id == RCS) + I915_WRITE_IMR(ring, ~GEN6_RENDER_L3_PARITY_ERROR); + else + I915_WRITE_IMR(ring, ~0); + dev_priv->gt_irq_mask |= ring->irq_enable_mask; + I915_WRITE(GTIMR, dev_priv->gt_irq_mask); + POSTING_READ(GTIMR); + } + spin_unlock_irqrestore(&dev_priv->irq_lock, flags); + + gen6_gt_force_wake_put(dev_priv); +} + +static int +i965_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 length, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | + MI_BATCH_GTT | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_I965)); + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +static int +i830_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + 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, 0); + intel_ring_advance(ring); + + return 0; +} + +static int +i915_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_BATCH_BUFFER_START | MI_BATCH_GTT); + intel_ring_emit(ring, offset | (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE)); + intel_ring_advance(ring); + + return 0; +} + +static void cleanup_status_page(struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + + obj = ring->status_page.obj; + if (obj == NULL) + return; + + kunmap(sg_page(obj->pages->sgl)); + i915_gem_object_unpin(obj); + drm_gem_object_unreference(&obj->base); + ring->status_page.obj = NULL; +} + +static int init_status_page(struct intel_ring_buffer *ring) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_gem_object *obj; + int ret; + + obj = i915_gem_alloc_object(dev, 4096); + if (obj == NULL) { + DRM_ERROR("Failed to allocate status page\n"); + ret = -ENOMEM; + goto err; + } + + i915_gem_object_set_cache_level(obj, I915_CACHE_LLC); + + ret = i915_gem_object_pin(obj, 4096, true, false); + if (ret != 0) { + goto err_unref; + } + + ring->status_page.gfx_addr = obj->gtt_offset; + ring->status_page.page_addr = kmap(sg_page(obj->pages->sgl)); + if (ring->status_page.page_addr == NULL) { + ret = -ENOMEM; + goto err_unpin; + } + ring->status_page.obj = obj; + memset(ring->status_page.page_addr, 0, PAGE_SIZE); + + intel_ring_setup_status_page(ring); + DRM_DEBUG_DRIVER("%s hws offset: 0x%08x\n", + ring->name, ring->status_page.gfx_addr); + + return 0; + +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); +err: + return ret; +} + +static int init_phys_hws_pga(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + u32 addr; + + if (!dev_priv->status_page_dmah) { + dev_priv->status_page_dmah = + drm_pci_alloc(ring->dev, PAGE_SIZE, PAGE_SIZE); + if (!dev_priv->status_page_dmah) + return -ENOMEM; + } + + addr = dev_priv->status_page_dmah->busaddr; + if (INTEL_INFO(ring->dev)->gen >= 4) + addr |= (dev_priv->status_page_dmah->busaddr >> 28) & 0xf0; + I915_WRITE(HWS_PGA, addr); + + ring->status_page.page_addr = dev_priv->status_page_dmah->vaddr; + memset(ring->status_page.page_addr, 0, PAGE_SIZE); + + return 0; +} + +static int intel_init_ring_buffer(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + struct drm_i915_gem_object *obj; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + + ring->dev = dev; + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); + ring->size = 32 * PAGE_SIZE; + + init_waitqueue_head(&ring->irq_queue); + + if (I915_NEED_GFX_HWS(dev)) { + ret = init_status_page(ring); + if (ret) + return ret; + } else { + BUG_ON(ring->id != RCS); + ret = init_phys_hws_pga(ring); + if (ret) + return ret; + } + + obj = i915_gem_alloc_object(dev, ring->size); + if (obj == NULL) { + DRM_ERROR("Failed to allocate ringbuffer\n"); + ret = -ENOMEM; + goto err_hws; + } + + ring->obj = obj; + + ret = i915_gem_object_pin(obj, PAGE_SIZE, true, false); + if (ret) + goto err_unref; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + goto err_unpin; + + ring->virtual_start = + ioremap_wc(dev_priv->mm.gtt->gma_bus_addr + obj->gtt_offset, + ring->size); + if (ring->virtual_start == NULL) { + DRM_ERROR("Failed to map ringbuffer.\n"); + ret = -EINVAL; + goto err_unpin; + } + + ret = ring->init(ring); + if (ret) + goto err_unmap; + + /* Workaround an erratum on the i830 which causes a hang if + * the TAIL pointer points to within the last 2 cachelines + * of the buffer. + */ + ring->effective_size = ring->size; + if (IS_I830(ring->dev) || IS_845G(ring->dev)) + ring->effective_size -= 128; + + return 0; + +err_unmap: + iounmap(ring->virtual_start); +err_unpin: + i915_gem_object_unpin(obj); +err_unref: + drm_gem_object_unreference(&obj->base); + ring->obj = NULL; +err_hws: + cleanup_status_page(ring); + return ret; +} + +void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv; + int ret; + + if (ring->obj == NULL) + return; + + /* Disable the ring buffer. The ring must be idle at this point */ + dev_priv = ring->dev->dev_private; + ret = intel_wait_ring_idle(ring); + if (ret) + DRM_ERROR("failed to quiesce %s whilst cleaning up: %d\n", + ring->name, ret); + + I915_WRITE_CTL(ring, 0); + + iounmap(ring->virtual_start); + + i915_gem_object_unpin(ring->obj); + drm_gem_object_unreference(&ring->obj->base); + ring->obj = NULL; + + if (ring->cleanup) + ring->cleanup(ring); + + cleanup_status_page(ring); +} + +static int intel_wrap_ring_buffer(struct intel_ring_buffer *ring) +{ + uint32_t __iomem *virt; + int rem = ring->size - ring->tail; + + if (ring->space < rem) { + int ret = intel_wait_ring_buffer(ring, rem); + if (ret) + return ret; + } + + virt = ring->virtual_start + ring->tail; + rem /= 4; + while (rem--) + iowrite32(MI_NOOP, virt++); + + ring->tail = 0; + ring->space = ring_space(ring); + + return 0; +} + +static int intel_ring_wait_seqno(struct intel_ring_buffer *ring, u32 seqno) +{ + int ret; + + ret = i915_wait_seqno(ring, seqno); + if (!ret) + i915_gem_retire_requests_ring(ring); + + return ret; +} + +static int intel_ring_wait_request(struct intel_ring_buffer *ring, int n) +{ + struct drm_i915_gem_request *request; + u32 seqno = 0; + int ret; + + i915_gem_retire_requests_ring(ring); + + if (ring->last_retired_head != -1) { + ring->head = ring->last_retired_head; + ring->last_retired_head = -1; + ring->space = ring_space(ring); + if (ring->space >= n) + return 0; + } + + list_for_each_entry(request, &ring->request_list, list) { + int space; + + if (request->tail == -1) + continue; + + space = request->tail - (ring->tail + 8); + if (space < 0) + space += ring->size; + if (space >= n) { + seqno = request->seqno; + break; + } + + /* Consume this request in case we need more space than + * is available and so need to prevent a race between + * updating last_retired_head and direct reads of + * I915_RING_HEAD. It also provides a nice sanity check. + */ + request->tail = -1; + } + + if (seqno == 0) + return -ENOSPC; + + ret = intel_ring_wait_seqno(ring, seqno); + if (ret) + return ret; + + if (WARN_ON(ring->last_retired_head == -1)) + return -ENOSPC; + + ring->head = ring->last_retired_head; + ring->last_retired_head = -1; + ring->space = ring_space(ring); + if (WARN_ON(ring->space < n)) + return -ENOSPC; + + return 0; +} + +int intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long end; + int ret; + + ret = intel_ring_wait_request(ring, n); + if (ret != -ENOSPC) + return ret; + + trace_i915_ring_wait_begin(ring); + /* With GEM the hangcheck timer should kick us out of the loop, + * leaving it early runs the risk of corrupting GEM state (due + * to running on almost untested codepaths). But on resume + * timers don't work yet, so prevent a complete hang in that + * case by choosing an insanely large timeout. */ + end = jiffies + 60 * HZ; + + do { + ring->head = I915_READ_HEAD(ring); + ring->space = ring_space(ring); + if (ring->space >= n) { + trace_i915_ring_wait_end(ring); + return 0; + } + + if (dev->primary->master) { + struct drm_i915_master_private *master_priv = dev->primary->master->driver_priv; + if (master_priv->sarea_priv) + master_priv->sarea_priv->perf_boxes |= I915_BOX_WAIT; + } + + msleep(1); + + ret = i915_gem_check_wedge(dev_priv, dev_priv->mm.interruptible); + if (ret) + return ret; + } while (!time_after(jiffies, end)); + trace_i915_ring_wait_end(ring); + return -EBUSY; +} + +int intel_ring_begin(struct intel_ring_buffer *ring, + int num_dwords) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + int n = 4*num_dwords; + int ret; + + ret = i915_gem_check_wedge(dev_priv, dev_priv->mm.interruptible); + if (ret) + return ret; + + if (unlikely(ring->tail + n > ring->effective_size)) { + ret = intel_wrap_ring_buffer(ring); + if (unlikely(ret)) + return ret; + } + + if (unlikely(ring->space < n)) { + ret = intel_wait_ring_buffer(ring, n); + if (unlikely(ret)) + return ret; + } + + ring->space -= n; + return 0; +} + +void intel_ring_advance(struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = ring->dev->dev_private; + + ring->tail &= ring->size - 1; + if (dev_priv->stop_rings & intel_ring_flag(ring)) + return; + ring->write_tail(ring, ring->tail); +} + + +static void gen6_bsd_ring_write_tail(struct intel_ring_buffer *ring, + u32 value) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + + /* Every tail move must follow the sequence below */ + + /* Disable notification that the ring is IDLE. The GT + * will then assume that it is busy and bring it out of rc6. + */ + I915_WRITE(GEN6_BSD_SLEEP_PSMI_CONTROL, + _MASKED_BIT_ENABLE(GEN6_BSD_SLEEP_MSG_DISABLE)); + + /* Clear the context id. Here be magic! */ + I915_WRITE64(GEN6_BSD_RNCID, 0x0); + + /* Wait for the ring not to be idle, i.e. for it to wake up. */ + if (wait_for((I915_READ(GEN6_BSD_SLEEP_PSMI_CONTROL) & + GEN6_BSD_SLEEP_INDICATOR) == 0, + 50)) + DRM_ERROR("timed out waiting for the BSD ring to wake up\n"); + + /* Now that the ring is fully powered up, update the tail */ + I915_WRITE_TAIL(ring, value); + POSTING_READ(RING_TAIL(ring->mmio_base)); + + /* Let the ring send IDLE messages to the GT again, + * and so let it sleep to conserve power when idle. + */ + I915_WRITE(GEN6_BSD_SLEEP_PSMI_CONTROL, + _MASKED_BIT_DISABLE(GEN6_BSD_SLEEP_MSG_DISABLE)); +} + +static int gen6_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate, u32 flush) +{ + uint32_t cmd; + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.5 - video engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ + if (invalidate & I915_GEM_GPU_DOMAINS) + cmd |= MI_INVALIDATE_TLB | MI_INVALIDATE_BSD | + MI_FLUSH_DW_STORE_INDEX | MI_FLUSH_DW_OP_STOREDW; + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +static int +hsw_ring_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | MI_BATCH_PPGTT_HSW | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_HSW)); + /* bit0-7 is the length on GEN6+ */ + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +static int +gen6_ring_dispatch_execbuffer(struct intel_ring_buffer *ring, + u32 offset, u32 len, + unsigned flags) +{ + int ret; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, + MI_BATCH_BUFFER_START | + (flags & I915_DISPATCH_SECURE ? 0 : MI_BATCH_NON_SECURE_I965)); + /* bit0-7 is the length on GEN6+ */ + intel_ring_emit(ring, offset); + intel_ring_advance(ring); + + return 0; +} + +/* Blitter support (SandyBridge+) */ + +static int blt_ring_flush(struct intel_ring_buffer *ring, + u32 invalidate, u32 flush) +{ + uint32_t cmd; + int ret; + + ret = intel_ring_begin(ring, 4); + if (ret) + return ret; + + cmd = MI_FLUSH_DW; + /* + * Bspec vol 1c.3 - blitter engine command streamer: + * "If ENABLED, all TLBs will be invalidated once the flush + * operation is complete. This bit is only valid when the + * Post-Sync Operation field is a value of 1h or 3h." + */ + if (invalidate & I915_GEM_DOMAIN_RENDER) + cmd |= MI_INVALIDATE_TLB | MI_FLUSH_DW_STORE_INDEX | + MI_FLUSH_DW_OP_STOREDW; + intel_ring_emit(ring, cmd); + intel_ring_emit(ring, I915_GEM_HWS_SCRATCH_ADDR | MI_FLUSH_DW_USE_GTT); + intel_ring_emit(ring, 0); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + return 0; +} + +int intel_init_render_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + + ring->name = "render ring"; + ring->id = RCS; + ring->mmio_base = RENDER_RING_BASE; + + if (INTEL_INFO(dev)->gen >= 6) { + ring->add_request = gen6_add_request; + ring->flush = gen7_render_ring_flush; + if (INTEL_INFO(dev)->gen == 6) + ring->flush = gen6_render_ring_flush; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->irq_enable_mask = GT_USER_INTERRUPT; + ring->get_seqno = gen6_ring_get_seqno; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_INVALID; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_RV; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_RB; + ring->signal_mbox[0] = GEN6_VRSYNC; + ring->signal_mbox[1] = GEN6_BRSYNC; + } else if (IS_GEN5(dev)) { + ring->add_request = pc_render_add_request; + ring->flush = gen4_render_ring_flush; + ring->get_seqno = pc_render_get_seqno; + ring->irq_get = gen5_ring_get_irq; + ring->irq_put = gen5_ring_put_irq; + ring->irq_enable_mask = GT_USER_INTERRUPT | GT_PIPE_NOTIFY; + } else { + ring->add_request = i9xx_add_request; + if (INTEL_INFO(dev)->gen < 4) + ring->flush = gen2_render_ring_flush; + else + ring->flush = gen4_render_ring_flush; + ring->get_seqno = ring_get_seqno; + if (IS_GEN2(dev)) { + ring->irq_get = i8xx_ring_get_irq; + ring->irq_put = i8xx_ring_put_irq; + } else { + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->irq_enable_mask = I915_USER_INTERRUPT; + } + ring->write_tail = ring_write_tail; + if (IS_HASWELL(dev)) + ring->dispatch_execbuffer = hsw_ring_dispatch_execbuffer; + else if (INTEL_INFO(dev)->gen >= 6) + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + else if (INTEL_INFO(dev)->gen >= 4) + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + else if (IS_I830(dev) || IS_845G(dev)) + ring->dispatch_execbuffer = i830_dispatch_execbuffer; + else + ring->dispatch_execbuffer = i915_dispatch_execbuffer; + ring->init = init_render_ring; + ring->cleanup = render_ring_cleanup; + + return intel_init_ring_buffer(dev, ring); +} + +int intel_render_ring_init_dri(struct drm_device *dev, u64 start, u32 size) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + ring->name = "render ring"; + ring->id = RCS; + ring->mmio_base = RENDER_RING_BASE; + + if (INTEL_INFO(dev)->gen >= 6) { + /* non-kms not supported on gen6+ */ + return -ENODEV; + } + + /* Note: gem is not supported on gen5/ilk without kms (the corresponding + * gem_init ioctl returns with -ENODEV). Hence we do not need to set up + * the special gen5 functions. */ + ring->add_request = i9xx_add_request; + if (INTEL_INFO(dev)->gen < 4) + ring->flush = gen2_render_ring_flush; + else + ring->flush = gen4_render_ring_flush; + ring->get_seqno = ring_get_seqno; + if (IS_GEN2(dev)) { + ring->irq_get = i8xx_ring_get_irq; + ring->irq_put = i8xx_ring_put_irq; + } else { + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->irq_enable_mask = I915_USER_INTERRUPT; + ring->write_tail = ring_write_tail; + if (INTEL_INFO(dev)->gen >= 4) + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + else if (IS_I830(dev) || IS_845G(dev)) + ring->dispatch_execbuffer = i830_dispatch_execbuffer; + else + ring->dispatch_execbuffer = i915_dispatch_execbuffer; + ring->init = init_render_ring; + ring->cleanup = render_ring_cleanup; + + ring->dev = dev; + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); + + ring->size = size; + ring->effective_size = ring->size; + if (IS_I830(ring->dev) || IS_845G(ring->dev)) + ring->effective_size -= 128; + + ring->virtual_start = ioremap_wc(start, size); + if (ring->virtual_start == NULL) { + DRM_ERROR("can not ioremap virtual address for" + " ring buffer\n"); + return -ENOMEM; + } + + if (!I915_NEED_GFX_HWS(dev)) { + ret = init_phys_hws_pga(ring); + if (ret) + return ret; + } + + return 0; +} + +int intel_init_bsd_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[VCS]; + + ring->name = "bsd ring"; + ring->id = VCS; + + ring->write_tail = ring_write_tail; + if (IS_GEN6(dev) || IS_GEN7(dev)) { + ring->mmio_base = GEN6_BSD_RING_BASE; + /* gen6 bsd needs a special wa for tail updates */ + if (IS_GEN6(dev)) + ring->write_tail = gen6_bsd_ring_write_tail; + ring->flush = gen6_ring_flush; + ring->add_request = gen6_add_request; + ring->get_seqno = gen6_ring_get_seqno; + ring->irq_enable_mask = GEN6_BSD_USER_INTERRUPT; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_VR; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_INVALID; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_VB; + ring->signal_mbox[0] = GEN6_RVSYNC; + ring->signal_mbox[1] = GEN6_BVSYNC; + } else { + ring->mmio_base = BSD_RING_BASE; + ring->flush = bsd_ring_flush; + ring->add_request = i9xx_add_request; + ring->get_seqno = ring_get_seqno; + if (IS_GEN5(dev)) { + ring->irq_enable_mask = GT_BSD_USER_INTERRUPT; + ring->irq_get = gen5_ring_get_irq; + ring->irq_put = gen5_ring_put_irq; + } else { + ring->irq_enable_mask = I915_BSD_USER_INTERRUPT; + ring->irq_get = i9xx_ring_get_irq; + ring->irq_put = i9xx_ring_put_irq; + } + ring->dispatch_execbuffer = i965_dispatch_execbuffer; + } + ring->init = init_ring_common; + + return intel_init_ring_buffer(dev, ring); +} + +int intel_init_blt_ring_buffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[BCS]; + + ring->name = "blitter ring"; + ring->id = BCS; + + ring->mmio_base = BLT_RING_BASE; + ring->write_tail = ring_write_tail; + ring->flush = blt_ring_flush; + ring->add_request = gen6_add_request; + ring->get_seqno = gen6_ring_get_seqno; + ring->irq_enable_mask = GEN6_BLITTER_USER_INTERRUPT; + ring->irq_get = gen6_ring_get_irq; + ring->irq_put = gen6_ring_put_irq; + ring->dispatch_execbuffer = gen6_ring_dispatch_execbuffer; + ring->sync_to = gen6_ring_sync; + ring->semaphore_register[0] = MI_SEMAPHORE_SYNC_BR; + ring->semaphore_register[1] = MI_SEMAPHORE_SYNC_BV; + ring->semaphore_register[2] = MI_SEMAPHORE_SYNC_INVALID; + ring->signal_mbox[0] = GEN6_RBSYNC; + ring->signal_mbox[1] = GEN6_VBSYNC; + ring->init = init_ring_common; + + return intel_init_ring_buffer(dev, ring); +} + +int +intel_ring_flush_all_caches(struct intel_ring_buffer *ring) +{ + int ret; + + if (!ring->gpu_caches_dirty) + return 0; + + ret = ring->flush(ring, 0, I915_GEM_GPU_DOMAINS); + if (ret) + return ret; + + trace_i915_gem_ring_flush(ring, 0, I915_GEM_GPU_DOMAINS); + + ring->gpu_caches_dirty = false; + return 0; +} + +int +intel_ring_invalidate_all_caches(struct intel_ring_buffer *ring) +{ + uint32_t flush_domains; + int ret; + + flush_domains = 0; + if (ring->gpu_caches_dirty) + flush_domains = I915_GEM_GPU_DOMAINS; + + ret = ring->flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); + if (ret) + return ret; + + trace_i915_gem_ring_flush(ring, I915_GEM_GPU_DOMAINS, flush_domains); + + ring->gpu_caches_dirty = false; + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/i915_ioc32.c +++ linux-3.5.0/ubuntu/i915/i915_ioc32.c @@ -0,0 +1,222 @@ +/** + * \file i915_ioc32.c + * + * 32-bit ioctl compatibility routines for the i915 DRM. + * + * \author Alan Hourihane + * + * + * Copyright (C) Paul Mackerras 2005 + * Copyright (C) Alan Hourihane 2005 + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR 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 "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" + +typedef struct _drm_i915_batchbuffer32 { + int start; /* agp offset */ + int used; /* nr bytes in use */ + int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */ + int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */ + int num_cliprects; /* mulitpass with multiple cliprects? */ + u32 cliprects; /* pointer to userspace cliprects */ +} drm_i915_batchbuffer32_t; + +static int compat_i915_batchbuffer(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_batchbuffer32_t batchbuffer32; + drm_i915_batchbuffer_t __user *batchbuffer; + + if (copy_from_user + (&batchbuffer32, (void __user *)arg, sizeof(batchbuffer32))) + return -EFAULT; + + batchbuffer = compat_alloc_user_space(sizeof(*batchbuffer)); + if (!access_ok(VERIFY_WRITE, batchbuffer, sizeof(*batchbuffer)) + || __put_user(batchbuffer32.start, &batchbuffer->start) + || __put_user(batchbuffer32.used, &batchbuffer->used) + || __put_user(batchbuffer32.DR1, &batchbuffer->DR1) + || __put_user(batchbuffer32.DR4, &batchbuffer->DR4) + || __put_user(batchbuffer32.num_cliprects, + &batchbuffer->num_cliprects) + || __put_user((int __user *)(unsigned long)batchbuffer32.cliprects, + &batchbuffer->cliprects)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_BATCHBUFFER, + (unsigned long)batchbuffer); +} + +typedef struct _drm_i915_cmdbuffer32 { + u32 buf; /* pointer to userspace command buffer */ + int sz; /* nr bytes in buf */ + int DR1; /* hw flags for GFX_OP_DRAWRECT_INFO */ + int DR4; /* window origin for GFX_OP_DRAWRECT_INFO */ + int num_cliprects; /* mulitpass with multiple cliprects? */ + u32 cliprects; /* pointer to userspace cliprects */ +} drm_i915_cmdbuffer32_t; + +static int compat_i915_cmdbuffer(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_cmdbuffer32_t cmdbuffer32; + drm_i915_cmdbuffer_t __user *cmdbuffer; + + if (copy_from_user + (&cmdbuffer32, (void __user *)arg, sizeof(cmdbuffer32))) + return -EFAULT; + + cmdbuffer = compat_alloc_user_space(sizeof(*cmdbuffer)); + if (!access_ok(VERIFY_WRITE, cmdbuffer, sizeof(*cmdbuffer)) + || __put_user((int __user *)(unsigned long)cmdbuffer32.buf, + &cmdbuffer->buf) + || __put_user(cmdbuffer32.sz, &cmdbuffer->sz) + || __put_user(cmdbuffer32.DR1, &cmdbuffer->DR1) + || __put_user(cmdbuffer32.DR4, &cmdbuffer->DR4) + || __put_user(cmdbuffer32.num_cliprects, &cmdbuffer->num_cliprects) + || __put_user((int __user *)(unsigned long)cmdbuffer32.cliprects, + &cmdbuffer->cliprects)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_CMDBUFFER, + (unsigned long)cmdbuffer); +} + +typedef struct drm_i915_irq_emit32 { + u32 irq_seq; +} drm_i915_irq_emit32_t; + +static int compat_i915_irq_emit(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_irq_emit32_t req32; + drm_i915_irq_emit_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user((int __user *)(unsigned long)req32.irq_seq, + &request->irq_seq)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_IRQ_EMIT, + (unsigned long)request); +} +typedef struct drm_i915_getparam32 { + int param; + u32 value; +} drm_i915_getparam32_t; + +static int compat_i915_getparam(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_getparam32_t req32; + drm_i915_getparam_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user(req32.param, &request->param) + || __put_user((void __user *)(unsigned long)req32.value, + &request->value)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_GETPARAM, + (unsigned long)request); +} + +typedef struct drm_i915_mem_alloc32 { + int region; + int alignment; + int size; + u32 region_offset; /* offset from start of fb or agp */ +} drm_i915_mem_alloc32_t; + +static int compat_i915_alloc(struct file *file, unsigned int cmd, + unsigned long arg) +{ + drm_i915_mem_alloc32_t req32; + drm_i915_mem_alloc_t __user *request; + + if (copy_from_user(&req32, (void __user *)arg, sizeof(req32))) + return -EFAULT; + + request = compat_alloc_user_space(sizeof(*request)); + if (!access_ok(VERIFY_WRITE, request, sizeof(*request)) + || __put_user(req32.region, &request->region) + || __put_user(req32.alignment, &request->alignment) + || __put_user(req32.size, &request->size) + || __put_user((void __user *)(unsigned long)req32.region_offset, + &request->region_offset)) + return -EFAULT; + + return drm_ioctl(file, DRM_IOCTL_I915_ALLOC, + (unsigned long)request); +} + +static drm_ioctl_compat_t *i915_compat_ioctls[] = { + [DRM_I915_BATCHBUFFER] = compat_i915_batchbuffer, + [DRM_I915_CMDBUFFER] = compat_i915_cmdbuffer, + [DRM_I915_GETPARAM] = compat_i915_getparam, + [DRM_I915_IRQ_EMIT] = compat_i915_irq_emit, + [DRM_I915_ALLOC] = compat_i915_alloc +}; + +#ifdef CONFIG_COMPAT +/** + * Called whenever a 32-bit process running under a 64-bit kernel + * performs an ioctl on /dev/dri/card. + * + * \param filp file pointer. + * \param cmd command. + * \param arg user argument. + * \return zero on success or negative number on failure. + */ +long i915_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +{ + unsigned int nr = DRM_IOCTL_NR(cmd); + drm_ioctl_compat_t *fn = NULL; + int ret; + + if (nr < DRM_COMMAND_BASE) + return drm_compat_ioctl(filp, cmd, arg); + + if (nr < DRM_COMMAND_BASE + DRM_ARRAY_SIZE(i915_compat_ioctls)) + fn = i915_compat_ioctls[nr - DRM_COMMAND_BASE]; + + if (fn != NULL) + ret = (*fn) (filp, cmd, arg); + else + ret = drm_ioctl(filp, cmd, arg); + + return ret; +} +#endif --- linux-3.5.0.orig/ubuntu/i915/i915_drv.h +++ linux-3.5.0/ubuntu/i915/i915_drv.h @@ -0,0 +1,1735 @@ +/* i915_drv.h -- Private header for the I915 driver -*- linux-c -*- + */ +/* + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + */ + +#ifndef _I915_DRV_H_ +#define _I915_DRV_H_ + +#include "i915_reg.h" +#include "intel_bios.h" +#include "intel_ringbuffer.h" +#include +#include +#include +#include +#include +#include +#include + +/* General customization: + */ + +#define DRIVER_AUTHOR "Tungsten Graphics, Inc." + +#define DRIVER_NAME "i915" +#define DRIVER_DESC "Intel Graphics" +#define DRIVER_DATE "20080730" + +enum pipe { + PIPE_A = 0, + PIPE_B, + PIPE_C, + I915_MAX_PIPES +}; +#define pipe_name(p) ((p) + 'A') + +enum transcoder { + TRANSCODER_A = 0, + TRANSCODER_B, + TRANSCODER_C, + TRANSCODER_EDP = 0xF, +}; +#define transcoder_name(t) ((t) + 'A') + +enum plane { + PLANE_A = 0, + PLANE_B, + PLANE_C, +}; +#define plane_name(p) ((p) + 'A') + +enum port { + PORT_A = 0, + PORT_B, + PORT_C, + PORT_D, + PORT_E, + I915_MAX_PORTS +}; +#define port_name(p) ((p) + 'A') + +#define I915_GEM_GPU_DOMAINS (~(I915_GEM_DOMAIN_CPU | I915_GEM_DOMAIN_GTT)) + +#define for_each_pipe(p) for ((p) = 0; (p) < dev_priv->num_pipe; (p)++) + +#define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \ + list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \ + if ((intel_encoder)->base.crtc == (__crtc)) + +struct intel_pch_pll { + int refcount; /* count of number of CRTCs sharing this PLL */ + int active; /* count of number of active CRTCs (i.e. DPMS on) */ + bool on; /* is the PLL actually active? Disabled during modeset */ + int pll_reg; + int fp0_reg; + int fp1_reg; +}; +#define I915_NUM_PLLS 2 + +struct intel_ddi_plls { + int spll_refcount; + int wrpll1_refcount; + int wrpll2_refcount; +}; + +/* Interface history: + * + * 1.1: Original. + * 1.2: Add Power Management + * 1.3: Add vblank support + * 1.4: Fix cmdbuffer path, add heap destroy + * 1.5: Add vblank pipe configuration + * 1.6: - New ioctl for scheduling buffer swaps on vertical blank + * - Support vertical blank on secondary display pipe + */ +#define DRIVER_MAJOR 1 +#define DRIVER_MINOR 6 +#define DRIVER_PATCHLEVEL 0 + +#define WATCH_COHERENCY 0 +#define WATCH_LISTS 0 +#define WATCH_GTT 0 + +#define I915_GEM_PHYS_CURSOR_0 1 +#define I915_GEM_PHYS_CURSOR_1 2 +#define I915_GEM_PHYS_OVERLAY_REGS 3 +#define I915_MAX_PHYS_OBJECT (I915_GEM_PHYS_OVERLAY_REGS) + +struct drm_i915_gem_phys_object { + int id; + struct page **page_list; + drm_dma_handle_t *handle; + struct drm_i915_gem_object *cur_obj; +}; + +struct opregion_header; +struct opregion_acpi; +struct opregion_swsci; +struct opregion_asle; +struct drm_i915_private; + +struct intel_opregion { + struct opregion_header __iomem *header; + struct opregion_acpi __iomem *acpi; + struct opregion_swsci __iomem *swsci; + struct opregion_asle __iomem *asle; + void __iomem *vbt; + u32 __iomem *lid_state; +}; +#define OPREGION_SIZE (8*1024) + +struct intel_overlay; +struct intel_overlay_error_state; + +struct drm_i915_master_private { + drm_local_map_t *sarea; + struct _drm_i915_sarea *sarea_priv; +}; +#define I915_FENCE_REG_NONE -1 +#define I915_MAX_NUM_FENCES 16 +/* 16 fences + sign bit for FENCE_REG_NONE */ +#define I915_MAX_NUM_FENCE_BITS 5 + +struct drm_i915_fence_reg { + struct list_head lru_list; + struct drm_i915_gem_object *obj; + int pin_count; +}; + +struct sdvo_device_mapping { + u8 initialized; + u8 dvo_port; + u8 slave_addr; + u8 dvo_wiring; + u8 i2c_pin; + u8 ddc_pin; +}; + +struct intel_display_error_state; + +struct drm_i915_error_state { + struct kref ref; + u32 eir; + u32 pgtbl_er; + u32 ier; + u32 ccid; + bool waiting[I915_NUM_RINGS]; + u32 pipestat[I915_MAX_PIPES]; + u32 tail[I915_NUM_RINGS]; + u32 head[I915_NUM_RINGS]; + u32 ipeir[I915_NUM_RINGS]; + u32 ipehr[I915_NUM_RINGS]; + u32 instdone[I915_NUM_RINGS]; + u32 acthd[I915_NUM_RINGS]; + u32 semaphore_mboxes[I915_NUM_RINGS][I915_NUM_RINGS - 1]; + u32 rc_psmi[I915_NUM_RINGS]; /* sleep state */ + /* our own tracking of ring head and tail */ + u32 cpu_ring_head[I915_NUM_RINGS]; + u32 cpu_ring_tail[I915_NUM_RINGS]; + u32 error; /* gen6+ */ + u32 err_int; /* gen7 */ + u32 instpm[I915_NUM_RINGS]; + u32 instps[I915_NUM_RINGS]; + u32 extra_instdone[I915_NUM_INSTDONE_REG]; + u32 seqno[I915_NUM_RINGS]; + u64 bbaddr; + u32 fault_reg[I915_NUM_RINGS]; + u32 done_reg; + u32 faddr[I915_NUM_RINGS]; + u64 fence[I915_MAX_NUM_FENCES]; + struct timeval time; + struct drm_i915_error_ring { + struct drm_i915_error_object { + int page_count; + u32 gtt_offset; + u32 *pages[0]; + } *ringbuffer, *batchbuffer; + struct drm_i915_error_request { + long jiffies; + u32 seqno; + u32 tail; + } *requests; + int num_requests; + } ring[I915_NUM_RINGS]; + struct drm_i915_error_buffer { + u32 size; + u32 name; + u32 rseqno, wseqno; + u32 gtt_offset; + u32 read_domains; + u32 write_domain; + s32 fence_reg:I915_MAX_NUM_FENCE_BITS; + s32 pinned:2; + u32 tiling:2; + u32 dirty:1; + u32 purgeable:1; + s32 ring:4; + u32 cache_level:2; + } *active_bo, *pinned_bo; + u32 active_bo_count, pinned_bo_count; + struct intel_overlay_error_state *overlay; + struct intel_display_error_state *display; +}; + +struct drm_i915_display_funcs { + bool (*fbc_enabled)(struct drm_device *dev); + void (*enable_fbc)(struct drm_crtc *crtc, unsigned long interval); + void (*disable_fbc)(struct drm_device *dev); + int (*get_display_clock_speed)(struct drm_device *dev); + int (*get_fifo_size)(struct drm_device *dev, int plane); + void (*update_wm)(struct drm_device *dev); + void (*update_sprite_wm)(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size); + void (*update_linetime_wm)(struct drm_device *dev, int pipe, + struct drm_display_mode *mode); + void (*modeset_global_resources)(struct drm_device *dev); + int (*crtc_mode_set)(struct drm_crtc *crtc, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode, + int x, int y, + struct drm_framebuffer *old_fb); + void (*crtc_enable)(struct drm_crtc *crtc); + void (*crtc_disable)(struct drm_crtc *crtc); + void (*off)(struct drm_crtc *crtc); + void (*write_eld)(struct drm_connector *connector, + struct drm_crtc *crtc); + void (*fdi_link_train)(struct drm_crtc *crtc); + void (*init_clock_gating)(struct drm_device *dev); + int (*queue_flip)(struct drm_device *dev, struct drm_crtc *crtc, + struct drm_framebuffer *fb, + struct drm_i915_gem_object *obj); + int (*update_plane)(struct drm_crtc *crtc, struct drm_framebuffer *fb, + int x, int y); + /* clock updates for mode set */ + /* cursor updates */ + /* render clock increase/decrease */ + /* display clock increase/decrease */ + /* pll clock increase/decrease */ +}; + +struct drm_i915_gt_funcs { + void (*force_wake_get)(struct drm_i915_private *dev_priv); + void (*force_wake_put)(struct drm_i915_private *dev_priv); +}; + +#define DEV_INFO_FLAGS \ + DEV_INFO_FLAG(is_mobile) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i85x) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i915g) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_i945gm) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_g33) DEV_INFO_SEP \ + DEV_INFO_FLAG(need_gfx_hws) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_g4x) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_pineview) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_broadwater) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_crestline) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_ivybridge) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_valleyview) DEV_INFO_SEP \ + DEV_INFO_FLAG(is_haswell) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_force_wake) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_fbc) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_pipe_cxsr) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_hotplug) DEV_INFO_SEP \ + DEV_INFO_FLAG(cursor_needs_physical) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_overlay) DEV_INFO_SEP \ + DEV_INFO_FLAG(overlay_needs_physical) DEV_INFO_SEP \ + DEV_INFO_FLAG(supports_tv) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_bsd_ring) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_blt_ring) DEV_INFO_SEP \ + DEV_INFO_FLAG(has_llc) + +struct intel_device_info { + u8 gen; + u8 is_mobile:1; + u8 is_i85x:1; + u8 is_i915g:1; + u8 is_i945gm:1; + u8 is_g33:1; + u8 need_gfx_hws:1; + u8 is_g4x:1; + u8 is_pineview:1; + u8 is_broadwater:1; + u8 is_crestline:1; + u8 is_ivybridge:1; + u8 is_valleyview:1; + u8 has_force_wake:1; + u8 is_haswell:1; + u8 has_fbc:1; + u8 has_pipe_cxsr:1; + u8 has_hotplug:1; + u8 cursor_needs_physical:1; + u8 has_overlay:1; + u8 overlay_needs_physical:1; + u8 supports_tv:1; + u8 has_bsd_ring:1; + u8 has_blt_ring:1; + u8 has_llc:1; +}; + +#define I915_PPGTT_PD_ENTRIES 512 +#define I915_PPGTT_PT_ENTRIES 1024 +struct i915_hw_ppgtt { + struct drm_device *dev; + unsigned num_pd_entries; + struct page **pt_pages; + uint32_t pd_offset; + dma_addr_t *pt_dma_addr; + dma_addr_t scratch_page_dma_addr; +}; + + +/* This must match up with the value previously used for execbuf2.rsvd1. */ +#define DEFAULT_CONTEXT_ID 0 +struct i915_hw_context { + int id; + bool is_initialized; + struct drm_i915_file_private *file_priv; + struct intel_ring_buffer *ring; + struct drm_i915_gem_object *obj; +}; + +enum no_fbc_reason { + FBC_NO_OUTPUT, /* no outputs enabled to compress */ + FBC_STOLEN_TOO_SMALL, /* not enough space to hold compressed buffers */ + FBC_UNSUPPORTED_MODE, /* interlace or doublescanned mode */ + FBC_MODE_TOO_LARGE, /* mode too large for compression */ + FBC_BAD_PLANE, /* fbc not supported on plane */ + FBC_NOT_TILED, /* buffer not tiled */ + FBC_MULTIPLE_PIPES, /* more than one pipe active */ + FBC_MODULE_PARAM, +}; + +enum intel_pch { + PCH_NONE = 0, /* No PCH present */ + PCH_IBX, /* Ibexpeak PCH */ + PCH_CPT, /* Cougarpoint PCH */ + PCH_LPT, /* Lynxpoint PCH */ +}; + +enum intel_sbi_destination { + SBI_ICLK, + SBI_MPHY, +}; + +#define QUIRK_PIPEA_FORCE (1<<0) +#define QUIRK_LVDS_SSC_DISABLE (1<<1) +#define QUIRK_INVERT_BRIGHTNESS (1<<2) + +struct intel_fbdev; +struct intel_fbc_work; + +struct intel_gmbus { + struct i2c_adapter adapter; + u32 force_bit; + u32 reg0; + u32 gpio_reg; + struct i2c_algo_bit_data bit_algo; + struct drm_i915_private *dev_priv; +}; + +struct i915_suspend_saved_registers { + u8 saveLBB; + u32 saveDSPACNTR; + u32 saveDSPBCNTR; + u32 saveDSPARB; + u32 savePIPEACONF; + u32 savePIPEBCONF; + u32 savePIPEASRC; + u32 savePIPEBSRC; + u32 saveFPA0; + u32 saveFPA1; + u32 saveDPLL_A; + u32 saveDPLL_A_MD; + u32 saveHTOTAL_A; + u32 saveHBLANK_A; + u32 saveHSYNC_A; + u32 saveVTOTAL_A; + u32 saveVBLANK_A; + u32 saveVSYNC_A; + u32 saveBCLRPAT_A; + u32 saveTRANSACONF; + u32 saveTRANS_HTOTAL_A; + u32 saveTRANS_HBLANK_A; + u32 saveTRANS_HSYNC_A; + u32 saveTRANS_VTOTAL_A; + u32 saveTRANS_VBLANK_A; + u32 saveTRANS_VSYNC_A; + u32 savePIPEASTAT; + u32 saveDSPASTRIDE; + u32 saveDSPASIZE; + u32 saveDSPAPOS; + u32 saveDSPAADDR; + u32 saveDSPASURF; + u32 saveDSPATILEOFF; + u32 savePFIT_PGM_RATIOS; + u32 saveBLC_HIST_CTL; + u32 saveBLC_PWM_CTL; + u32 saveBLC_PWM_CTL2; + u32 saveBLC_CPU_PWM_CTL; + u32 saveBLC_CPU_PWM_CTL2; + u32 saveFPB0; + u32 saveFPB1; + u32 saveDPLL_B; + u32 saveDPLL_B_MD; + u32 saveHTOTAL_B; + u32 saveHBLANK_B; + u32 saveHSYNC_B; + u32 saveVTOTAL_B; + u32 saveVBLANK_B; + u32 saveVSYNC_B; + u32 saveBCLRPAT_B; + u32 saveTRANSBCONF; + u32 saveTRANS_HTOTAL_B; + u32 saveTRANS_HBLANK_B; + u32 saveTRANS_HSYNC_B; + u32 saveTRANS_VTOTAL_B; + u32 saveTRANS_VBLANK_B; + u32 saveTRANS_VSYNC_B; + u32 savePIPEBSTAT; + u32 saveDSPBSTRIDE; + u32 saveDSPBSIZE; + u32 saveDSPBPOS; + u32 saveDSPBADDR; + u32 saveDSPBSURF; + u32 saveDSPBTILEOFF; + u32 saveVGA0; + u32 saveVGA1; + u32 saveVGA_PD; + u32 saveVGACNTRL; + u32 saveADPA; + u32 saveLVDS; + u32 savePP_ON_DELAYS; + u32 savePP_OFF_DELAYS; + u32 saveDVOA; + u32 saveDVOB; + u32 saveDVOC; + u32 savePP_ON; + u32 savePP_OFF; + u32 savePP_CONTROL; + u32 savePP_DIVISOR; + u32 savePFIT_CONTROL; + u32 save_palette_a[256]; + u32 save_palette_b[256]; + u32 saveDPFC_CB_BASE; + u32 saveFBC_CFB_BASE; + u32 saveFBC_LL_BASE; + u32 saveFBC_CONTROL; + u32 saveFBC_CONTROL2; + u32 saveIER; + u32 saveIIR; + u32 saveIMR; + u32 saveDEIER; + u32 saveDEIMR; + u32 saveGTIER; + u32 saveGTIMR; + u32 saveFDI_RXA_IMR; + u32 saveFDI_RXB_IMR; + u32 saveCACHE_MODE_0; + u32 saveMI_ARB_STATE; + u32 saveSWF0[16]; + u32 saveSWF1[16]; + u32 saveSWF2[3]; + u8 saveMSR; + u8 saveSR[8]; + u8 saveGR[25]; + u8 saveAR_INDEX; + u8 saveAR[21]; + u8 saveDACMASK; + u8 saveCR[37]; + uint64_t saveFENCE[I915_MAX_NUM_FENCES]; + u32 saveCURACNTR; + u32 saveCURAPOS; + u32 saveCURABASE; + u32 saveCURBCNTR; + u32 saveCURBPOS; + u32 saveCURBBASE; + u32 saveCURSIZE; + u32 saveDP_B; + u32 saveDP_C; + u32 saveDP_D; + u32 savePIPEA_GMCH_DATA_M; + u32 savePIPEB_GMCH_DATA_M; + u32 savePIPEA_GMCH_DATA_N; + u32 savePIPEB_GMCH_DATA_N; + u32 savePIPEA_DP_LINK_M; + u32 savePIPEB_DP_LINK_M; + u32 savePIPEA_DP_LINK_N; + u32 savePIPEB_DP_LINK_N; + u32 saveFDI_RXA_CTL; + u32 saveFDI_TXA_CTL; + u32 saveFDI_RXB_CTL; + u32 saveFDI_TXB_CTL; + u32 savePFA_CTL_1; + u32 savePFB_CTL_1; + u32 savePFA_WIN_SZ; + u32 savePFB_WIN_SZ; + u32 savePFA_WIN_POS; + u32 savePFB_WIN_POS; + u32 savePCH_DREF_CONTROL; + u32 saveDISP_ARB_CTL; + u32 savePIPEA_DATA_M1; + u32 savePIPEA_DATA_N1; + u32 savePIPEA_LINK_M1; + u32 savePIPEA_LINK_N1; + u32 savePIPEB_DATA_M1; + u32 savePIPEB_DATA_N1; + u32 savePIPEB_LINK_M1; + u32 savePIPEB_LINK_N1; + u32 saveMCHBAR_RENDER_STANDBY; + u32 savePCH_PORT_HOTPLUG; +}; + +struct intel_gen6_power_mgmt { + struct work_struct work; + u32 pm_iir; + /* lock - irqsave spinlock that protectects the work_struct and + * pm_iir. */ + spinlock_t lock; + + /* The below variables an all the rps hw state are protected by + * dev->struct mutext. */ + u8 cur_delay; + u8 min_delay; + u8 max_delay; + + struct delayed_work delayed_resume_work; + + /* + * Protects RPS/RC6 register access and PCU communication. + * Must be taken after struct_mutex if nested. + */ + struct mutex hw_lock; +}; + +struct intel_ilk_power_mgmt { + u8 cur_delay; + u8 min_delay; + u8 max_delay; + u8 fmax; + u8 fstart; + + u64 last_count1; + unsigned long last_time1; + unsigned long chipset_power; + u64 last_count2; + struct timespec last_time2; + unsigned long gfx_power; + u8 corr; + + int c_m; + int r_t; + + struct drm_i915_gem_object *pwrctx; + struct drm_i915_gem_object *renderctx; +}; + +struct i915_dri1_state { + unsigned allow_batchbuffer : 1; + u32 __iomem *gfx_hws_cpu_addr; + + unsigned int cpp; + int back_offset; + int front_offset; + int current_page; + int page_flipping; + + uint32_t counter; +}; + +struct intel_l3_parity { + u32 *remap_info; + struct work_struct error_work; +}; + +typedef struct drm_i915_private { + struct drm_device *dev; + + const struct intel_device_info *info; + + int relative_constants_mode; + + void __iomem *regs; + + struct drm_i915_gt_funcs gt; + /** gt_fifo_count and the subsequent register write are synchronized + * with dev->struct_mutex. */ + unsigned gt_fifo_count; + /** forcewake_count is protected by gt_lock */ + unsigned forcewake_count; + /** gt_lock is also taken in irq contexts. */ + struct spinlock gt_lock; + + struct intel_gmbus gmbus[GMBUS_NUM_PORTS]; + + /** gmbus_mutex protects against concurrent usage of the single hw gmbus + * controller on different i2c buses. */ + struct mutex gmbus_mutex; + + /** + * Base address of the gmbus and gpio block. + */ + uint32_t gpio_mmio_base; + + struct pci_dev *bridge_dev; + struct intel_ring_buffer ring[I915_NUM_RINGS]; + uint32_t next_seqno; + + drm_dma_handle_t *status_page_dmah; + struct resource mch_res; + + atomic_t irq_received; + + /* protects the irq masks */ + spinlock_t irq_lock; + + /* DPIO indirect register protection */ + spinlock_t dpio_lock; + + /** Cached value of IMR to avoid reads in updating the bitfield */ + u32 pipestat[2]; + u32 irq_mask; + u32 gt_irq_mask; + u32 pch_irq_mask; + + u32 hotplug_supported_mask; + struct work_struct hotplug_work; + + int num_pipe; + int num_pch_pll; + + /* For hangcheck timer */ +#define DRM_I915_HANGCHECK_PERIOD 1500 /* in ms */ +#define DRM_I915_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_I915_HANGCHECK_PERIOD) + struct timer_list hangcheck_timer; + int hangcheck_count; + uint32_t last_acthd[I915_NUM_RINGS]; + uint32_t prev_instdone[I915_NUM_INSTDONE_REG]; + + unsigned int stop_rings; + + unsigned long cfb_size; + unsigned int cfb_fb; + enum plane cfb_plane; + int cfb_y; + struct intel_fbc_work *fbc_work; + + struct intel_opregion opregion; + + /* overlay */ + struct intel_overlay *overlay; + bool sprite_scaling_enabled; + + /* LVDS info */ + int backlight_level; /* restore backlight to this value */ + bool backlight_enabled; + struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */ + struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */ + + /* Feature bits from the VBIOS */ + unsigned int int_tv_support:1; + unsigned int lvds_dither:1; + unsigned int lvds_vbt:1; + unsigned int int_crt_support:1; + unsigned int lvds_use_ssc:1; + unsigned int display_clock_mode:1; + int lvds_ssc_freq; + unsigned int bios_lvds_val; /* initial [PCH_]LVDS reg val in VBIOS */ + unsigned int lvds_val; /* used for checking LVDS channel mode */ + struct { + int rate; + int lanes; + int preemphasis; + int vswing; + + bool initialized; + bool support; + int bpp; + struct edp_power_seq pps; + } edp; + bool no_aux_handshake; + + int crt_ddc_pin; + struct drm_i915_fence_reg fence_regs[I915_MAX_NUM_FENCES]; /* assume 965 */ + int fence_reg_start; /* 4 if userland hasn't ioctl'd us yet */ + int num_fence_regs; /* 8 on pre-965, 16 otherwise */ + + unsigned int fsb_freq, mem_freq, is_ddr3; + + spinlock_t error_lock; + /* Protected by dev->error_lock. */ + struct drm_i915_error_state *first_error; + struct work_struct error_work; + struct completion error_completion; + struct workqueue_struct *wq; + + /* Display functions */ + struct drm_i915_display_funcs display; + + /* PCH chipset type */ + enum intel_pch pch_type; + unsigned short pch_id; + + unsigned long quirks; + + /* Register state */ + bool modeset_on_lid; + + struct { + /** Bridge to intel-gtt-ko */ + struct intel_gtt *gtt; + /** Memory allocator for GTT stolen memory */ + struct drm_mm_hsw stolen; + /** Memory allocator for GTT */ + struct drm_mm_hsw gtt_space; + /** List of all objects in gtt_space. Used to restore gtt + * mappings on resume */ + struct list_head bound_list; + /** + * List of objects which are not bound to the GTT (thus + * are idle and not used by the GPU) but still have + * (presumably uncached) pages still attached. + */ + struct list_head unbound_list; + + /** Usable portion of the GTT for GEM */ + unsigned long gtt_start; + unsigned long gtt_mappable_end; + unsigned long gtt_end; + + struct io_mapping *gtt_mapping; + phys_addr_t gtt_base_addr; + int gtt_mtrr; + + /** PPGTT used for aliasing the PPGTT with the GTT */ + struct i915_hw_ppgtt *aliasing_ppgtt; + + struct shrinker inactive_shrinker; + + /** + * List of objects currently involved in rendering. + * + * Includes buffers having the contents of their GPU caches + * flushed, not necessarily primitives. last_rendering_seqno + * represents when the rendering involved will be completed. + * + * A reference is held on the buffer while on this list. + */ + struct list_head active_list; + + /** + * LRU list of objects which are not in the ringbuffer and + * are ready to unbind, but are still in the GTT. + * + * last_rendering_seqno is 0 while an object is in this list. + * + * A reference is not held on the buffer while on this list, + * as merely being GTT-bound shouldn't prevent its being + * freed, and we'll pull it off the list in the free path. + */ + struct list_head inactive_list; + + /** LRU list of objects with fence regs on them. */ + struct list_head fence_list; + + /** + * We leave the user IRQ off as much as possible, + * but this means that requests will finish and never + * be retired once the system goes idle. Set a timer to + * fire periodically while the ring is running. When it + * fires, go retire requests. + */ + struct delayed_work retire_work; + + /** + * Are we in a non-interruptible section of code like + * modesetting? + */ + bool interruptible; + + /** + * Flag if the X Server, and thus DRM, is not currently in + * control of the device. + * + * This is set between LeaveVT and EnterVT. It needs to be + * replaced with a semaphore. It also needs to be + * transitioned away from for kernel modesetting. + */ + int suspended; + + /** + * Flag if the hardware appears to be wedged. + * + * This is set when attempts to idle the device timeout. + * It prevents command submission from occurring and makes + * every pending request fail + */ + atomic_t wedged; + + /** Bit 6 swizzling required for X tiling */ + uint32_t bit_6_swizzle_x; + /** Bit 6 swizzling required for Y tiling */ + uint32_t bit_6_swizzle_y; + + /* storage for physical objects */ + struct drm_i915_gem_phys_object *phys_objs[I915_MAX_PHYS_OBJECT]; + + /* accounting, useful for userland debugging */ + size_t gtt_total; + size_t mappable_gtt_total; + size_t object_memory; + u32 object_count; + } mm; + + /* Kernel Modesetting */ + + struct sdvo_device_mapping sdvo_mappings[2]; + /* indicate whether the LVDS_BORDER should be enabled or not */ + unsigned int lvds_border_bits; + /* Panel fitter placement and size for Ironlake+ */ + u32 pch_pf_pos, pch_pf_size; + + struct drm_crtc *plane_to_crtc_mapping[3]; + struct drm_crtc *pipe_to_crtc_mapping[3]; + wait_queue_head_t pending_flip_queue; + + struct intel_pch_pll pch_plls[I915_NUM_PLLS]; + struct intel_ddi_plls ddi_plls; + + /* Reclocking support */ + bool render_reclock_avail; + bool lvds_downclock_avail; + /* indicates the reduced downclock for LVDS*/ + int lvds_downclock; + u16 orig_clock; + int child_dev_num; + struct child_device_config *child_dev; + + bool mchbar_need_disable; + + struct intel_l3_parity l3_parity; + + /* gen6+ rps state */ + struct intel_gen6_power_mgmt rps; + + /* ilk-only ips/rps state. Everything in here is protected by the global + * mchdev_lock in intel_pm.c */ + struct intel_ilk_power_mgmt ips; + + enum no_fbc_reason no_fbc_reason; + + struct drm_mm_node_hsw *compressed_fb; + struct drm_mm_node_hsw *compressed_llb; + + unsigned long last_gpu_reset; + + /* list of fbdev register on this device */ + struct intel_fbdev *fbdev; + + /* + * The console may be contended at resume, but we don't + * want it to block on it. + */ + struct work_struct console_resume_work; + + struct backlight_device *backlight; + + struct drm_property *broadcast_rgb_property; + struct drm_property *force_audio_property; + + bool hw_contexts_disabled; + uint32_t hw_context_size; + + bool fdi_rx_polarity_reversed; + + struct i915_suspend_saved_registers regfile; + + /* Old dri1 support infrastructure, beware the dragons ya fools entering + * here! */ + struct i915_dri1_state dri1; +} drm_i915_private_t; + +/* Iterate over initialised rings */ +#define for_each_ring(ring__, dev_priv__, i__) \ + for ((i__) = 0; (i__) < I915_NUM_RINGS; (i__)++) \ + if (((ring__) = &(dev_priv__)->ring[(i__)]), intel_ring_initialized((ring__))) + +enum hdmi_force_audio { + HDMI_AUDIO_OFF_DVI = -2, /* no aux data for HDMI-DVI converter */ + HDMI_AUDIO_OFF, /* force turn off HDMI audio */ + HDMI_AUDIO_AUTO, /* trust EDID */ + HDMI_AUDIO_ON, /* force turn on HDMI audio */ +}; + +enum i915_cache_level { + I915_CACHE_NONE = 0, + I915_CACHE_LLC, + I915_CACHE_LLC_MLC, /* gen6+, in docs at least! */ +}; + +struct drm_i915_gem_object_ops { + /* Interface between the GEM object and its backing storage. + * get_pages() is called once prior to the use of the associated set + * of pages before to binding them into the GTT, and put_pages() is + * called after we no longer need them. As we expect there to be + * associated cost with migrating pages between the backing storage + * and making them available for the GPU (e.g. clflush), we may hold + * onto the pages after they are no longer referenced by the GPU + * in case they may be used again shortly (for example migrating the + * pages to a different memory domain within the GTT). put_pages() + * will therefore most likely be called when the object itself is + * being released or under memory pressure (where we attempt to + * reap pages for the shrinker). + */ + int (*get_pages)(struct drm_i915_gem_object *); + void (*put_pages)(struct drm_i915_gem_object *); +}; + +struct drm_i915_gem_object { + struct drm_gem_object base; + + const struct drm_i915_gem_object_ops *ops; + + /** Current space allocated to this object in the GTT, if any. */ + struct drm_mm_node_hsw *gtt_space; + struct list_head gtt_list; + + /** This object's place on the active/inactive lists */ + struct list_head ring_list; + struct list_head mm_list; + /** This object's place in the batchbuffer or on the eviction list */ + struct list_head exec_list; + + /** + * This is set if the object is on the active lists (has pending + * rendering and so a non-zero seqno), and is not set if it i s on + * inactive (ready to be unbound) list. + */ + unsigned int active:1; + + /** + * This is set if the object has been written to since last bound + * to the GTT + */ + unsigned int dirty:1; + + /** + * Fence register bits (if any) for this object. Will be set + * as needed when mapped into the GTT. + * Protected by dev->struct_mutex. + */ + signed int fence_reg:I915_MAX_NUM_FENCE_BITS; + + /** + * Advice: are the backing pages purgeable? + */ + unsigned int madv:2; + + /** + * Current tiling mode for the object. + */ + unsigned int tiling_mode:2; + /** + * Whether the tiling parameters for the currently associated fence + * register have changed. Note that for the purposes of tracking + * tiling changes we also treat the unfenced register, the register + * slot that the object occupies whilst it executes a fenced + * command (such as BLT on gen2/3), as a "fence". + */ + unsigned int fence_dirty:1; + + /** How many users have pinned this object in GTT space. The following + * users can each hold at most one reference: pwrite/pread, pin_ioctl + * (via user_pin_count), execbuffer (objects are not allowed multiple + * times for the same batchbuffer), and the framebuffer code. When + * switching/pageflipping, the framebuffer code has at most two buffers + * pinned per crtc. + * + * In the worst case this is 1 + 1 + 1 + 2*2 = 7. That would fit into 3 + * bits with absolutely no headroom. So use 4 bits. */ + unsigned int pin_count:4; +#define DRM_I915_GEM_OBJECT_MAX_PIN_COUNT 0xf + + /** + * Is the object at the current location in the gtt mappable and + * fenceable? Used to avoid costly recalculations. + */ + unsigned int map_and_fenceable:1; + + /** + * Whether the current gtt mapping needs to be mappable (and isn't just + * mappable by accident). Track pin and fault separate for a more + * accurate mappable working set. + */ + unsigned int fault_mappable:1; + unsigned int pin_mappable:1; + + /* + * Is the GPU currently using a fence to access this buffer, + */ + unsigned int pending_fenced_gpu_access:1; + unsigned int fenced_gpu_access:1; + + unsigned int cache_level:2; + + unsigned int has_aliasing_ppgtt_mapping:1; + unsigned int has_global_gtt_mapping:1; + unsigned int has_dma_mapping:1; + + struct sg_table *pages; + int pages_pin_count; + + /* prime dma-buf support */ + void *dma_buf_vmapping; + int vmapping_count; + + /** + * Used for performing relocations during execbuffer insertion. + */ + struct hlist_node exec_node; + unsigned long exec_handle; + struct drm_i915_gem_exec_object2 *exec_entry; + + /** + * Current offset of the object in GTT space. + * + * This is the same as gtt_space->start + */ + uint32_t gtt_offset; + + struct intel_ring_buffer *ring; + + /** Breadcrumb of last rendering to the buffer. */ + uint32_t last_read_seqno; + uint32_t last_write_seqno; + /** Breadcrumb of last fenced GPU access to the buffer. */ + uint32_t last_fenced_seqno; + + /** Current tiling stride for the object, if it's tiled. */ + uint32_t stride; + + /** Record of address bit 17 of each page at last unbind. */ + unsigned long *bit_17; + + /** User space pin count and filp owning the pin */ + uint32_t user_pin_count; + struct drm_file *pin_filp; + + /** for phy allocated objects */ + struct drm_i915_gem_phys_object *phys_obj; + + /** + * Number of crtcs where this object is currently the fb, but + * will be page flipped away on the next vblank. When it + * reaches 0, dev_priv->pending_flip_queue will be woken up. + */ + atomic_t pending_flip; +}; + +#define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base) + +/** + * Request queue structure. + * + * The request queue allows us to note sequence numbers that have been emitted + * and may be associated with active buffers to be retired. + * + * By keeping this list, we can avoid having to do questionable + * sequence-number comparisons on buffer last_rendering_seqnos, and associate + * an emission time with seqnos for tracking how far ahead of the GPU we are. + */ +struct drm_i915_gem_request { + /** On Which ring this request was generated */ + struct intel_ring_buffer *ring; + + /** GEM sequence number associated with this request. */ + uint32_t seqno; + + /** Postion in the ringbuffer of the end of the request */ + u32 tail; + + /** Time at which this request was emitted, in jiffies. */ + unsigned long emitted_jiffies; + + /** global list entry for this request */ + struct list_head list; + + struct drm_i915_file_private *file_priv; + /** file_priv list entry for this request */ + struct list_head client_list; +}; + +struct drm_i915_file_private { + struct { + struct spinlock lock; + struct list_head request_list; + } mm; + struct idr context_idr; +}; + +#define INTEL_INFO(dev) (((struct drm_i915_private *) (dev)->dev_private)->info) + +#define IS_I830(dev) ((dev)->pci_device == 0x3577) +#define IS_845G(dev) ((dev)->pci_device == 0x2562) +#define IS_I85X(dev) (INTEL_INFO(dev)->is_i85x) +#define IS_I865G(dev) ((dev)->pci_device == 0x2572) +#define IS_I915G(dev) (INTEL_INFO(dev)->is_i915g) +#define IS_I915GM(dev) ((dev)->pci_device == 0x2592) +#define IS_I945G(dev) ((dev)->pci_device == 0x2772) +#define IS_I945GM(dev) (INTEL_INFO(dev)->is_i945gm) +#define IS_BROADWATER(dev) (INTEL_INFO(dev)->is_broadwater) +#define IS_CRESTLINE(dev) (INTEL_INFO(dev)->is_crestline) +#define IS_GM45(dev) ((dev)->pci_device == 0x2A42) +#define IS_G4X(dev) (INTEL_INFO(dev)->is_g4x) +#define IS_PINEVIEW_G(dev) ((dev)->pci_device == 0xa001) +#define IS_PINEVIEW_M(dev) ((dev)->pci_device == 0xa011) +#define IS_PINEVIEW(dev) (INTEL_INFO(dev)->is_pineview) +#define IS_G33(dev) (INTEL_INFO(dev)->is_g33) +#define IS_IRONLAKE_D(dev) ((dev)->pci_device == 0x0042) +#define IS_IRONLAKE_M(dev) ((dev)->pci_device == 0x0046) +#define IS_IVYBRIDGE(dev) (INTEL_INFO(dev)->is_ivybridge) +#define IS_IVB_GT1(dev) ((dev)->pci_device == 0x0156 || \ + (dev)->pci_device == 0x0152 || \ + (dev)->pci_device == 0x015a) +#define IS_VALLEYVIEW(dev) (INTEL_INFO(dev)->is_valleyview) +#define IS_HASWELL(dev) (INTEL_INFO(dev)->is_haswell) +#define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile) +#define IS_ULT(dev) (IS_HASWELL(dev) && \ + ((dev)->pci_device & 0xFF00) == 0x0A00) + +/* + * The genX designation typically refers to the render engine, so render + * capability related checks should use IS_GEN, while display and other checks + * have their own (e.g. HAS_PCH_SPLIT for ILK+ display, IS_foo for particular + * chips, etc.). + */ +#define IS_GEN2(dev) (INTEL_INFO(dev)->gen == 2) +#define IS_GEN3(dev) (INTEL_INFO(dev)->gen == 3) +#define IS_GEN4(dev) (INTEL_INFO(dev)->gen == 4) +#define IS_GEN5(dev) (INTEL_INFO(dev)->gen == 5) +#define IS_GEN6(dev) (INTEL_INFO(dev)->gen == 6) +#define IS_GEN7(dev) (INTEL_INFO(dev)->gen == 7) + +#define HAS_BSD(dev) (INTEL_INFO(dev)->has_bsd_ring) +#define HAS_BLT(dev) (INTEL_INFO(dev)->has_blt_ring) +#define HAS_LLC(dev) (INTEL_INFO(dev)->has_llc) +#define I915_NEED_GFX_HWS(dev) (INTEL_INFO(dev)->need_gfx_hws) + +#define HAS_HW_CONTEXTS(dev) (INTEL_INFO(dev)->gen >= 6) +#define HAS_ALIASING_PPGTT(dev) (INTEL_INFO(dev)->gen >=6 && !IS_VALLEYVIEW(dev)) + +#define HAS_OVERLAY(dev) (INTEL_INFO(dev)->has_overlay) +#define OVERLAY_NEEDS_PHYSICAL(dev) (INTEL_INFO(dev)->overlay_needs_physical) + +/* With the 945 and later, Y tiling got adjusted so that it was 32 128-byte + * rows, which changed the alignment requirements and fence programming. + */ +#define HAS_128_BYTE_Y_TILING(dev) (!IS_GEN2(dev) && !(IS_I915G(dev) || \ + IS_I915GM(dev))) +#define SUPPORTS_DIGITAL_OUTPUTS(dev) (!IS_GEN2(dev) && !IS_PINEVIEW(dev)) +#define SUPPORTS_INTEGRATED_HDMI(dev) (IS_G4X(dev) || IS_GEN5(dev)) +#define SUPPORTS_INTEGRATED_DP(dev) (IS_G4X(dev) || IS_GEN5(dev)) +#define SUPPORTS_EDP(dev) (IS_IRONLAKE_M(dev)) +#define SUPPORTS_TV(dev) (INTEL_INFO(dev)->supports_tv) +#define I915_HAS_HOTPLUG(dev) (INTEL_INFO(dev)->has_hotplug) +/* dsparb controlled by hw only */ +#define DSPARB_HWCONTROL(dev) (IS_G4X(dev) || IS_IRONLAKE(dev)) + +#define HAS_FW_BLC(dev) (INTEL_INFO(dev)->gen > 2) +#define HAS_PIPE_CXSR(dev) (INTEL_INFO(dev)->has_pipe_cxsr) +#define I915_HAS_FBC(dev) (INTEL_INFO(dev)->has_fbc) + +#define HAS_PIPE_CONTROL(dev) (INTEL_INFO(dev)->gen >= 5) + +#define INTEL_PCH_DEVICE_ID_MASK 0xff00 +#define INTEL_PCH_IBX_DEVICE_ID_TYPE 0x3b00 +#define INTEL_PCH_CPT_DEVICE_ID_TYPE 0x1c00 +#define INTEL_PCH_PPT_DEVICE_ID_TYPE 0x1e00 +#define INTEL_PCH_LPT_DEVICE_ID_TYPE 0x8c00 +#define INTEL_PCH_LPT_LP_DEVICE_ID_TYPE 0x9c00 + +#define INTEL_PCH_TYPE(dev) (((struct drm_i915_private *)(dev)->dev_private)->pch_type) +#define HAS_PCH_LPT(dev) (INTEL_PCH_TYPE(dev) == PCH_LPT) +#define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT) +#define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX) +#define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE) + +#define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake) + +#define HAS_L3_GPU_CACHE(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + +#define GT_FREQUENCY_MULTIPLIER 50 + +#include "i915_trace.h" + +/** + * RC6 is a special power stage which allows the GPU to enter an very + * low-voltage mode when idle, using down to 0V while at this stage. This + * stage is entered automatically when the GPU is idle when RC6 support is + * enabled, and as soon as new workload arises GPU wakes up automatically as well. + * + * There are different RC6 modes available in Intel GPU, which differentiate + * among each other with the latency required to enter and leave RC6 and + * voltage consumed by the GPU in different states. + * + * The combination of the following flags define which states GPU is allowed + * to enter, while RC6 is the normal RC6 state, RC6p is the deep RC6, and + * RC6pp is deepest RC6. Their support by hardware varies according to the + * GPU, BIOS, chipset and platform. RC6 is usually the safest one and the one + * which brings the most power savings; deeper states save more power, but + * require higher latency to switch to and wake up. + */ +#define INTEL_RC6_ENABLE (1<<0) +#define INTEL_RC6p_ENABLE (1<<1) +#define INTEL_RC6pp_ENABLE (1<<2) + +extern struct drm_ioctl_desc i915_ioctls[]; +extern int i915_max_ioctl; +extern unsigned int i915_fbpercrtc __always_unused; +extern int i915_panel_ignore_lid __read_mostly; +extern unsigned int i915_powersave __read_mostly; +extern int i915_semaphores __read_mostly; +extern unsigned int i915_lvds_downclock __read_mostly; +extern int i915_lvds_channel_mode __read_mostly; +extern int i915_panel_use_ssc __read_mostly; +extern int i915_vbt_sdvo_panel_type __read_mostly; +extern int i915_enable_rc6 __read_mostly; +extern int i915_enable_fbc __read_mostly; +extern bool i915_enable_hangcheck __read_mostly; +extern int i915_enable_ppgtt __read_mostly; + +extern int i915_suspend(struct drm_device *dev, pm_message_t state); +extern int i915_resume(struct drm_device *dev); +extern int i915_master_create(struct drm_device *dev, struct drm_master *master); +extern void i915_master_destroy(struct drm_device *dev, struct drm_master *master); + + /* i915_dma.c */ +void i915_update_dri1_breadcrumb(struct drm_device *dev); +extern void i915_kernel_lost_context(struct drm_device * dev); +extern int i915_driver_load(struct drm_device *, unsigned long flags); +extern int i915_driver_unload(struct drm_device *); +extern int i915_driver_open(struct drm_device *dev, struct drm_file *file_priv); +extern void i915_driver_lastclose(struct drm_device * dev); +extern void i915_driver_preclose(struct drm_device *dev, + struct drm_file *file_priv); +extern void i915_driver_postclose(struct drm_device *dev, + struct drm_file *file_priv); +extern int i915_driver_device_is_agp(struct drm_device * dev); +#ifdef CONFIG_COMPAT +extern long i915_compat_ioctl(struct file *filp, unsigned int cmd, + unsigned long arg); +#endif +extern int i915_emit_box(struct drm_device *dev, + struct drm_clip_rect *box, + int DR1, int DR4); +extern int intel_gpu_reset(struct drm_device *dev); +extern int i915_reset(struct drm_device *dev); +extern unsigned long i915_chipset_val(struct drm_i915_private *dev_priv); +extern unsigned long i915_mch_val(struct drm_i915_private *dev_priv); +extern unsigned long i915_gfx_val(struct drm_i915_private *dev_priv); +extern void i915_update_gfx_val(struct drm_i915_private *dev_priv); + +extern void intel_console_resume(struct work_struct *work); + +/* i915_irq.c */ +void i915_hangcheck_elapsed(unsigned long data); +void i915_handle_error(struct drm_device *dev, bool wedged); + +extern void intel_irq_init(struct drm_device *dev); +extern void intel_gt_init(struct drm_device *dev); +extern void intel_gt_reset(struct drm_device *dev); + +void i915_error_state_free(struct kref *error_ref); + +void +i915_enable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask); + +void +i915_disable_pipestat(drm_i915_private_t *dev_priv, int pipe, u32 mask); + +void intel_enable_asle(struct drm_device *dev); + +#ifdef CONFIG_DEBUG_FS +extern void i915_destroy_error_state(struct drm_device *dev); +#else +#define i915_destroy_error_state(x) +#endif + + +/* i915_gem.c */ +int i915_gem_init_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pread_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_mmap_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_execbuffer2(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_pin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_unpin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_busy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_throttle_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_madvise_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_entervt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_leavevt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_set_tiling(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_tiling(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +int i915_gem_wait_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv); +void i915_gem_load(struct drm_device *dev); +int i915_gem_init_object(struct drm_gem_object *obj); +void i915_gem_object_init(struct drm_i915_gem_object *obj, + const struct drm_i915_gem_object_ops *ops); +struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, + size_t size); +void i915_gem_free_object(struct drm_gem_object *obj); +int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj, + uint32_t alignment, + bool map_and_fenceable, + bool nonblocking); +void i915_gem_object_unpin(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_unbind(struct drm_i915_gem_object *obj); +void i915_gem_release_mmap(struct drm_i915_gem_object *obj); +void i915_gem_lastclose(struct drm_device *dev); + +int __must_check i915_gem_object_get_pages(struct drm_i915_gem_object *obj); +static inline struct page *i915_gem_object_get_page(struct drm_i915_gem_object *obj, int n) +{ + struct scatterlist *sg = obj->pages->sgl; + int nents = obj->pages->nents; + while (nents > SG_MAX_SINGLE_ALLOC) { + if (n < SG_MAX_SINGLE_ALLOC - 1) + break; + + sg = sg_chain_ptr(sg + SG_MAX_SINGLE_ALLOC - 1); + n -= SG_MAX_SINGLE_ALLOC - 1; + nents -= SG_MAX_SINGLE_ALLOC - 1; + } + return sg_page(sg+n); +} +static inline void i915_gem_object_pin_pages(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pages == NULL); + obj->pages_pin_count++; +} +static inline void i915_gem_object_unpin_pages(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pages_pin_count == 0); + obj->pages_pin_count--; +} + +int __must_check i915_mutex_lock_interruptible(struct drm_device *dev); +int i915_gem_object_sync(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *to); +void i915_gem_object_move_to_active(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring, + u32 seqno); + +int i915_gem_dumb_create(struct drm_file *file_priv, + struct drm_device *dev, + struct drm_mode_create_dumb *args); +int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev, + uint32_t handle, uint64_t *offset); +int i915_gem_dumb_destroy(struct drm_file *file_priv, struct drm_device *dev, + uint32_t handle); +/** + * Returns true if seq1 is later than seq2. + */ +static inline bool +i915_seqno_passed(uint32_t seq1, uint32_t seq2) +{ + return (int32_t)(seq1 - seq2) >= 0; +} + +u32 i915_gem_next_request_seqno(struct intel_ring_buffer *ring); + +int __must_check i915_gem_object_get_fence(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_put_fence(struct drm_i915_gem_object *obj); + +static inline bool +i915_gem_object_pin_fence(struct drm_i915_gem_object *obj) +{ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + dev_priv->fence_regs[obj->fence_reg].pin_count++; + return true; + } else + return false; +} + +static inline void +i915_gem_object_unpin_fence(struct drm_i915_gem_object *obj) +{ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + dev_priv->fence_regs[obj->fence_reg].pin_count--; + } +} + +void i915_gem_retire_requests(struct drm_device *dev); +void i915_gem_retire_requests_ring(struct intel_ring_buffer *ring); +int __must_check i915_gem_check_wedge(struct drm_i915_private *dev_priv, + bool interruptible); + +void i915_gem_reset(struct drm_device *dev); +void i915_gem_clflush_object(struct drm_i915_gem_object *obj); +int __must_check i915_gem_object_set_domain(struct drm_i915_gem_object *obj, + uint32_t read_domains, + uint32_t write_domain); +int __must_check i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj); +int __must_check i915_gem_init(struct drm_device *dev); +int __must_check i915_gem_init_hw(struct drm_device *dev); +void i915_gem_l3_remap(struct drm_device *dev); +void i915_gem_init_swizzling(struct drm_device *dev); +void i915_gem_init_ppgtt(struct drm_device *dev); +void i915_gem_cleanup_ringbuffer(struct drm_device *dev); +int __must_check i915_gpu_idle(struct drm_device *dev); +int __must_check i915_gem_idle(struct drm_device *dev); +int i915_add_request(struct intel_ring_buffer *ring, + struct drm_file *file, + u32 *seqno); +int __must_check i915_wait_seqno(struct intel_ring_buffer *ring, + uint32_t seqno); +int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); +int __must_check +i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, + bool write); +int __must_check +i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write); +int __must_check +i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj, + u32 alignment, + struct intel_ring_buffer *pipelined); +int i915_gem_attach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj, + int id, + int align); +void i915_gem_detach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj); +void i915_gem_free_all_phys_object(struct drm_device *dev); +void i915_gem_release(struct drm_device *dev, struct drm_file *file); + +uint32_t +i915_gem_get_unfenced_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode); + +int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); + +struct drm_gem_object *i915_gem_prime_import(struct drm_device *dev, + struct dma_buf *dma_buf); + +struct dma_buf *i915_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *gem_obj, int flags); + +/* i915_gem_context.c */ +void i915_gem_context_init(struct drm_device *dev); +void i915_gem_context_fini(struct drm_device *dev); +void i915_gem_context_close(struct drm_device *dev, struct drm_file *file); +int i915_switch_context(struct intel_ring_buffer *ring, + struct drm_file *file, int to_id); +int i915_gem_context_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); +int i915_gem_context_destroy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file); + +/* i915_gem_gtt.c */ +int __must_check i915_gem_init_aliasing_ppgtt(struct drm_device *dev); +void i915_gem_cleanup_aliasing_ppgtt(struct drm_device *dev); +void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); +void i915_ppgtt_unbind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj); + +void i915_gem_restore_gtt_mappings(struct drm_device *dev); +int __must_check i915_gem_gtt_prepare_object(struct drm_i915_gem_object *obj); +void i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level); +void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj); +void i915_gem_gtt_finish_object(struct drm_i915_gem_object *obj); +void i915_gem_init_global_gtt(struct drm_device *dev, + unsigned long start, + unsigned long mappable_end, + unsigned long end); +int i915_gem_gtt_init(struct drm_device *dev); +void i915_gem_gtt_fini(struct drm_device *dev); +static inline void i915_gem_chipset_flush(struct drm_device *dev) +{ + if (INTEL_INFO(dev)->gen < 6) + intel_gtt_chipset_flush(); +} + + +/* i915_gem_evict.c */ +int __must_check i915_gem_evict_something(struct drm_device *dev, int min_size, + unsigned alignment, + unsigned cache_level, + bool mappable, + bool nonblock); +int i915_gem_evict_everything(struct drm_device *dev); + +/* i915_gem_stolen.c */ +int i915_gem_init_stolen(struct drm_device *dev); +void i915_gem_cleanup_stolen(struct drm_device *dev); + +/* i915_gem_tiling.c */ +void i915_gem_detect_bit_6_swizzle(struct drm_device *dev); +void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj); +void i915_gem_object_save_bit_17_swizzle(struct drm_i915_gem_object *obj); + +/* i915_gem_debug.c */ +void i915_gem_dump_object(struct drm_i915_gem_object *obj, int len, + const char *where, uint32_t mark); +#if WATCH_LISTS +int i915_verify_lists(struct drm_device *dev); +#else +#define i915_verify_lists(dev) 0 +#endif +void i915_gem_object_check_coherency(struct drm_i915_gem_object *obj, + int handle); +void i915_gem_dump_object(struct drm_i915_gem_object *obj, int len, + const char *where, uint32_t mark); + +/* i915_debugfs.c */ +int i915_debugfs_init(struct drm_minor *minor); +void i915_debugfs_cleanup(struct drm_minor *minor); + +/* i915_suspend.c */ +extern int i915_save_state(struct drm_device *dev); +extern int i915_restore_state(struct drm_device *dev); + +/* i915_suspend.c */ +extern int i915_save_state(struct drm_device *dev); +extern int i915_restore_state(struct drm_device *dev); + +/* i915_sysfs.c */ +void i915_setup_sysfs(struct drm_device *dev_priv); +void i915_teardown_sysfs(struct drm_device *dev_priv); + +/* intel_i2c.c */ +extern int intel_setup_gmbus(struct drm_device *dev); +extern void intel_teardown_gmbus(struct drm_device *dev); +extern inline bool intel_gmbus_is_port_valid(unsigned port) +{ + return (port >= GMBUS_PORT_SSC && port <= GMBUS_PORT_DPD); +} + +extern struct i2c_adapter *intel_gmbus_get_adapter( + struct drm_i915_private *dev_priv, unsigned port); +extern void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed); +extern void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit); +extern inline bool intel_gmbus_is_forced_bit(struct i2c_adapter *adapter) +{ + return container_of(adapter, struct intel_gmbus, adapter)->force_bit; +} +extern void intel_i2c_reset(struct drm_device *dev); + +/* intel_opregion.c */ +extern int intel_opregion_setup(struct drm_device *dev); +#ifdef CONFIG_ACPI +extern void intel_opregion_init(struct drm_device *dev); +extern void intel_opregion_fini(struct drm_device *dev); +extern void intel_opregion_asle_intr(struct drm_device *dev); +extern void intel_opregion_gse_intr(struct drm_device *dev); +extern void intel_opregion_enable_asle(struct drm_device *dev); +#else +static inline void intel_opregion_init(struct drm_device *dev) { return; } +static inline void intel_opregion_fini(struct drm_device *dev) { return; } +static inline void intel_opregion_asle_intr(struct drm_device *dev) { return; } +static inline void intel_opregion_gse_intr(struct drm_device *dev) { return; } +static inline void intel_opregion_enable_asle(struct drm_device *dev) { return; } +#endif + +/* intel_acpi.c */ +#ifdef CONFIG_ACPI +extern void intel_register_dsm_handler(void); +extern void intel_unregister_dsm_handler(void); +#else +static inline void intel_register_dsm_handler(void) { return; } +static inline void intel_unregister_dsm_handler(void) { return; } +#endif /* CONFIG_ACPI */ + +/* modesetting */ +extern void intel_modeset_init_hw(struct drm_device *dev); +extern void intel_modeset_init(struct drm_device *dev); +extern void intel_modeset_gem_init(struct drm_device *dev); +extern void intel_modeset_cleanup(struct drm_device *dev); +extern int intel_modeset_vga_set_state(struct drm_device *dev, bool state); +extern void intel_modeset_setup_hw_state(struct drm_device *dev); +extern bool intel_fbc_enabled(struct drm_device *dev); +extern void intel_disable_fbc(struct drm_device *dev); +extern bool ironlake_set_drps(struct drm_device *dev, u8 val); +extern void intel_init_pch_refclk(struct drm_device *dev); +extern void gen6_set_rps(struct drm_device *dev, u8 val); +extern void intel_detect_pch(struct drm_device *dev); +extern int intel_trans_dp_port_sel(struct drm_crtc *crtc); +extern int intel_enable_rc6(const struct drm_device *dev); + +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); + +/* overlay */ +#ifdef CONFIG_DEBUG_FS +extern struct intel_overlay_error_state *intel_overlay_capture_error_state(struct drm_device *dev); +extern void intel_overlay_print_error_state(struct seq_file *m, struct intel_overlay_error_state *error); + +extern struct intel_display_error_state *intel_display_capture_error_state(struct drm_device *dev); +extern void intel_display_print_error_state(struct seq_file *m, + struct drm_device *dev, + struct intel_display_error_state *error); +#endif + +/* On SNB platform, before reading ring registers forcewake bit + * must be set to prevent GT core from power down and stale values being + * returned. + */ +void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv); +void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv); +int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv); + +int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val); +int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val); + +#define __i915_read(x, y) \ + u##x i915_read##x(struct drm_i915_private *dev_priv, u32 reg); + +__i915_read(8, b) +__i915_read(16, w) +__i915_read(32, l) +__i915_read(64, q) +#undef __i915_read + +#define __i915_write(x, y) \ + void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val); + +__i915_write(8, b) +__i915_write(16, w) +__i915_write(32, l) +__i915_write(64, q) +#undef __i915_write + +#define I915_READ8(reg) i915_read8(dev_priv, (reg)) +#define I915_WRITE8(reg, val) i915_write8(dev_priv, (reg), (val)) + +#define I915_READ16(reg) i915_read16(dev_priv, (reg)) +#define I915_WRITE16(reg, val) i915_write16(dev_priv, (reg), (val)) +#define I915_READ16_NOTRACE(reg) readw(dev_priv->regs + (reg)) +#define I915_WRITE16_NOTRACE(reg, val) writew(val, dev_priv->regs + (reg)) + +#define I915_READ(reg) i915_read32(dev_priv, (reg)) +#define I915_WRITE(reg, val) i915_write32(dev_priv, (reg), (val)) +#define I915_READ_NOTRACE(reg) readl(dev_priv->regs + (reg)) +#define I915_WRITE_NOTRACE(reg, val) writel(val, dev_priv->regs + (reg)) + +#define I915_WRITE64(reg, val) i915_write64(dev_priv, (reg), (val)) +#define I915_READ64(reg) i915_read64(dev_priv, (reg)) + +#define POSTING_READ(reg) (void)I915_READ_NOTRACE(reg) +#define POSTING_READ16(reg) (void)I915_READ16_NOTRACE(reg) + + +#endif --- linux-3.5.0.orig/ubuntu/i915/intel_lvds.c +++ linux-3.5.0/ubuntu/i915/intel_lvds.c @@ -0,0 +1,1145 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * Copyright (c) 2006 Dave Airlie + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Dave Airlie + * Jesse Barnes + */ + +#include +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include + +/* Private structure for the integrated LVDS support */ +struct intel_lvds_connector { + struct intel_connector base; + + struct notifier_block lid_notifier; +}; + +struct intel_lvds_encoder { + struct intel_encoder base; + + u32 pfit_control; + u32 pfit_pgm_ratios; + bool pfit_dirty; + + struct intel_lvds_connector *attached_connector; +}; + +static struct intel_lvds_encoder *to_lvds_encoder(struct drm_encoder *encoder) +{ + return container_of(encoder, struct intel_lvds_encoder, base.base); +} + +static struct intel_lvds_connector *to_lvds_connector(struct drm_connector *connector) +{ + return container_of(connector, struct intel_lvds_connector, base.base); +} + +static bool intel_lvds_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 lvds_reg, tmp; + + if (HAS_PCH_SPLIT(dev)) { + lvds_reg = PCH_LVDS; + } else { + lvds_reg = LVDS; + } + + tmp = I915_READ(lvds_reg); + + if (!(tmp & LVDS_PORT_EN)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +/** + * Sets the power state for the panel. + */ +static void intel_enable_lvds(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(&encoder->base); + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->base.crtc); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 ctl_reg, lvds_reg, stat_reg; + + if (HAS_PCH_SPLIT(dev)) { + ctl_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + stat_reg = PCH_PP_STATUS; + } else { + ctl_reg = PP_CONTROL; + lvds_reg = LVDS; + stat_reg = PP_STATUS; + } + + I915_WRITE(lvds_reg, I915_READ(lvds_reg) | LVDS_PORT_EN); + + if (lvds_encoder->pfit_dirty) { + /* + * Enable automatic panel scaling so that non-native modes + * fill the screen. The panel fitter should only be + * adjusted whilst the pipe is disabled, according to + * register description and PRM. + */ + DRM_DEBUG_KMS("applying panel-fitter: %x, %x\n", + lvds_encoder->pfit_control, + lvds_encoder->pfit_pgm_ratios); + + I915_WRITE(PFIT_PGM_RATIOS, lvds_encoder->pfit_pgm_ratios); + I915_WRITE(PFIT_CONTROL, lvds_encoder->pfit_control); + lvds_encoder->pfit_dirty = false; + } + + I915_WRITE(ctl_reg, I915_READ(ctl_reg) | POWER_TARGET_ON); + POSTING_READ(lvds_reg); + if (wait_for((I915_READ(stat_reg) & PP_ON) != 0, 1000)) + DRM_ERROR("timed out waiting for panel to power on\n"); + + intel_panel_enable_backlight(dev, intel_crtc->pipe); +} + +static void intel_disable_lvds(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(&encoder->base); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 ctl_reg, lvds_reg, stat_reg; + + if (HAS_PCH_SPLIT(dev)) { + ctl_reg = PCH_PP_CONTROL; + lvds_reg = PCH_LVDS; + stat_reg = PCH_PP_STATUS; + } else { + ctl_reg = PP_CONTROL; + lvds_reg = LVDS; + stat_reg = PP_STATUS; + } + + intel_panel_disable_backlight(dev); + + I915_WRITE(ctl_reg, I915_READ(ctl_reg) & ~POWER_TARGET_ON); + if (wait_for((I915_READ(stat_reg) & PP_ON) == 0, 1000)) + DRM_ERROR("timed out waiting for panel to power off\n"); + + if (lvds_encoder->pfit_control) { + I915_WRITE(PFIT_CONTROL, 0); + lvds_encoder->pfit_dirty = true; + } + + I915_WRITE(lvds_reg, I915_READ(lvds_reg) & ~LVDS_PORT_EN); + POSTING_READ(lvds_reg); +} + +static int intel_lvds_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode; + + if (mode->hdisplay > fixed_mode->hdisplay) + return MODE_PANEL; + if (mode->vdisplay > fixed_mode->vdisplay) + return MODE_PANEL; + + return MODE_OK; +} + +static void +centre_horizontally(struct drm_display_mode *mode, + int width) +{ + u32 border, sync_pos, blank_width, sync_width; + + /* keep the hsync and hblank widths constant */ + sync_width = mode->crtc_hsync_end - mode->crtc_hsync_start; + blank_width = mode->crtc_hblank_end - mode->crtc_hblank_start; + sync_pos = (blank_width - sync_width + 1) / 2; + + border = (mode->hdisplay - width + 1) / 2; + border += border & 1; /* make the border even */ + + mode->crtc_hdisplay = width; + mode->crtc_hblank_start = width + border; + mode->crtc_hblank_end = mode->crtc_hblank_start + blank_width; + + mode->crtc_hsync_start = mode->crtc_hblank_start + sync_pos; + mode->crtc_hsync_end = mode->crtc_hsync_start + sync_width; + + mode->private_flags |= INTEL_MODE_CRTC_TIMINGS_SET; +} + +static void +centre_vertically(struct drm_display_mode *mode, + int height) +{ + u32 border, sync_pos, blank_width, sync_width; + + /* keep the vsync and vblank widths constant */ + sync_width = mode->crtc_vsync_end - mode->crtc_vsync_start; + blank_width = mode->crtc_vblank_end - mode->crtc_vblank_start; + sync_pos = (blank_width - sync_width + 1) / 2; + + border = (mode->vdisplay - height + 1) / 2; + + mode->crtc_vdisplay = height; + mode->crtc_vblank_start = height + border; + mode->crtc_vblank_end = mode->crtc_vblank_start + blank_width; + + mode->crtc_vsync_start = mode->crtc_vblank_start + sync_pos; + mode->crtc_vsync_end = mode->crtc_vsync_start + sync_width; + + mode->private_flags |= INTEL_MODE_CRTC_TIMINGS_SET; +} + +static inline u32 panel_fitter_scaling(u32 source, u32 target) +{ + /* + * Floating point operation is not supported. So the FACTOR + * is defined, which can avoid the floating point computation + * when calculating the panel ratio. + */ +#define ACCURACY 12 +#define FACTOR (1 << ACCURACY) + u32 ratio = source * FACTOR / target; + return (FACTOR * ratio + FACTOR/2) / FACTOR; +} + +static bool intel_lvds_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_lvds_encoder *lvds_encoder = to_lvds_encoder(encoder); + struct intel_connector *intel_connector = + &lvds_encoder->attached_connector->base; + struct intel_crtc *intel_crtc = lvds_encoder->base.new_crtc; + u32 pfit_control = 0, pfit_pgm_ratios = 0, border = 0; + int pipe; + + /* Should never happen!! */ + if (INTEL_INFO(dev)->gen < 4 && intel_crtc->pipe == 0) { + DRM_ERROR("Can't support LVDS on pipe A\n"); + return false; + } + + if (intel_encoder_check_is_cloned(&lvds_encoder->base)) + return false; + + /* + * We have timings from the BIOS for the panel, put them in + * to the adjusted mode. The CRTC will be set up for this mode, + * with the panel scaling set up to source from the H/VDisplay + * of the original mode. + */ + intel_fixed_panel_mode(intel_connector->panel.fixed_mode, + adjusted_mode); + + if (HAS_PCH_SPLIT(dev)) { + intel_pch_panel_fitting(dev, + intel_connector->panel.fitting_mode, + mode, adjusted_mode); + return true; + } + + /* Native modes don't need fitting */ + if (adjusted_mode->hdisplay == mode->hdisplay && + adjusted_mode->vdisplay == mode->vdisplay) + goto out; + + /* 965+ wants fuzzy fitting */ + if (INTEL_INFO(dev)->gen >= 4) + pfit_control |= ((intel_crtc->pipe << PFIT_PIPE_SHIFT) | + PFIT_FILTER_FUZZY); + + /* + * Enable automatic panel scaling for non-native modes so that they fill + * the screen. Should be enabled before the pipe is enabled, according + * to register description and PRM. + * Change the value here to see the borders for debugging + */ + for_each_pipe(pipe) + I915_WRITE(BCLRPAT(pipe), 0); + + drm_mode_set_crtcinfo(adjusted_mode, 0); + + switch (intel_connector->panel.fitting_mode) { + case DRM_MODE_SCALE_CENTER: + /* + * For centered modes, we have to calculate border widths & + * heights and modify the values programmed into the CRTC. + */ + centre_horizontally(adjusted_mode, mode->hdisplay); + centre_vertically(adjusted_mode, mode->vdisplay); + border = LVDS_BORDER_ENABLE; + break; + + case DRM_MODE_SCALE_ASPECT: + /* Scale but preserve the aspect ratio */ + if (INTEL_INFO(dev)->gen >= 4) { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + + /* 965+ is easy, it does everything in hw */ + if (scaled_width > scaled_height) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_PILLAR; + else if (scaled_width < scaled_height) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_LETTER; + else if (adjusted_mode->hdisplay != mode->hdisplay) + pfit_control |= PFIT_ENABLE | PFIT_SCALING_AUTO; + } else { + u32 scaled_width = adjusted_mode->hdisplay * mode->vdisplay; + u32 scaled_height = mode->hdisplay * adjusted_mode->vdisplay; + /* + * For earlier chips we have to calculate the scaling + * ratio by hand and program it into the + * PFIT_PGM_RATIO register + */ + if (scaled_width > scaled_height) { /* pillar */ + centre_horizontally(adjusted_mode, scaled_height / mode->vdisplay); + + border = LVDS_BORDER_ENABLE; + if (mode->vdisplay != adjusted_mode->vdisplay) { + u32 bits = panel_fitter_scaling(mode->vdisplay, adjusted_mode->vdisplay); + pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT | + bits << PFIT_VERT_SCALE_SHIFT); + pfit_control |= (PFIT_ENABLE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + } else if (scaled_width < scaled_height) { /* letter */ + centre_vertically(adjusted_mode, scaled_width / mode->hdisplay); + + border = LVDS_BORDER_ENABLE; + if (mode->hdisplay != adjusted_mode->hdisplay) { + u32 bits = panel_fitter_scaling(mode->hdisplay, adjusted_mode->hdisplay); + pfit_pgm_ratios |= (bits << PFIT_HORIZ_SCALE_SHIFT | + bits << PFIT_VERT_SCALE_SHIFT); + pfit_control |= (PFIT_ENABLE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + } else + /* Aspects match, Let hw scale both directions */ + pfit_control |= (PFIT_ENABLE | + VERT_AUTO_SCALE | HORIZ_AUTO_SCALE | + VERT_INTERP_BILINEAR | + HORIZ_INTERP_BILINEAR); + } + break; + + case DRM_MODE_SCALE_FULLSCREEN: + /* + * Full scaling, even if it changes the aspect ratio. + * Fortunately this is all done for us in hw. + */ + if (mode->vdisplay != adjusted_mode->vdisplay || + mode->hdisplay != adjusted_mode->hdisplay) { + pfit_control |= PFIT_ENABLE; + if (INTEL_INFO(dev)->gen >= 4) + pfit_control |= PFIT_SCALING_AUTO; + else + pfit_control |= (VERT_AUTO_SCALE | + VERT_INTERP_BILINEAR | + HORIZ_AUTO_SCALE | + HORIZ_INTERP_BILINEAR); + } + break; + + default: + break; + } + +out: + /* If not enabling scaling, be consistent and always use 0. */ + if ((pfit_control & PFIT_ENABLE) == 0) { + pfit_control = 0; + pfit_pgm_ratios = 0; + } + + /* Make sure pre-965 set dither correctly */ + if (INTEL_INFO(dev)->gen < 4 && dev_priv->lvds_dither) + pfit_control |= PANEL_8TO6_DITHER_ENABLE; + + if (pfit_control != lvds_encoder->pfit_control || + pfit_pgm_ratios != lvds_encoder->pfit_pgm_ratios) { + lvds_encoder->pfit_control = pfit_control; + lvds_encoder->pfit_pgm_ratios = pfit_pgm_ratios; + lvds_encoder->pfit_dirty = true; + } + dev_priv->lvds_border_bits = border; + + /* + * XXX: It would be nice to support lower refresh rates on the + * panels to reduce power consumption, and perhaps match the + * user's requested refresh rate. + */ + + return true; +} + +static void intel_lvds_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + /* + * The LVDS pin pair will already have been turned on in the + * intel_crtc_mode_set since it has a large impact on the DPLL + * settings. + */ +} + +/** + * Detect the LVDS connection. + * + * Since LVDS doesn't have hotlug, we use the lid as a proxy. Open means + * connected and closed means disconnected. We also send hotplug events as + * needed, using lid status notification from the input layer. + */ +static enum drm_connector_status +intel_lvds_detect(struct drm_connector *connector, bool force) +{ + struct drm_device *dev = connector->dev; + enum drm_connector_status status; + + status = intel_panel_detect(dev); + if (status != connector_status_unknown) + return status; + + return connector_status_connected; +} + +/** + * Return the list of DDC modes if available, or the BIOS fixed mode otherwise. + */ +static int intel_lvds_get_modes(struct drm_connector *connector) +{ + struct intel_lvds_connector *lvds_connector = to_lvds_connector(connector); + struct drm_device *dev = connector->dev; + struct drm_display_mode *mode; + + /* use cached edid if we have one */ + if (!IS_ERR_OR_NULL(lvds_connector->base.edid)) + return drm_add_edid_modes(connector, lvds_connector->base.edid); + + mode = drm_mode_duplicate(dev, lvds_connector->base.panel.fixed_mode); + if (mode == NULL) + return 0; + + drm_mode_probed_add(connector, mode); + return 1; +} + +static int intel_no_modeset_on_lid_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping forced modeset for %s\n", id->ident); + return 1; +} + +/* The GPU hangs up on these systems if modeset is performed on LID open */ +static const struct dmi_system_id intel_no_modeset_on_lid[] = { + { + .callback = intel_no_modeset_on_lid_dmi_callback, + .ident = "Toshiba Tecra A11", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"), + DMI_MATCH(DMI_PRODUCT_NAME, "TECRA A11"), + }, + }, + + { } /* terminating entry */ +}; + +/* + * Lid events. Note the use of 'modeset_on_lid': + * - we set it on lid close, and reset it on open + * - we use it as a "only once" bit (ie we ignore + * duplicate events where it was already properly + * set/reset) + * - the suspend/resume paths will also set it to + * zero, since they restore the mode ("lid open"). + */ +static int intel_lid_notify(struct notifier_block *nb, unsigned long val, + void *unused) +{ + struct intel_lvds_connector *lvds_connector = + container_of(nb, struct intel_lvds_connector, lid_notifier); + struct drm_connector *connector = &lvds_connector->base.base; + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev->switch_power_state != DRM_SWITCH_POWER_ON) + return NOTIFY_OK; + + /* + * check and update the status of LVDS connector after receiving + * the LID nofication event. + */ + connector->status = connector->funcs->detect(connector, false); + + /* Don't force modeset on machines where it causes a GPU lockup */ + if (dmi_check_system(intel_no_modeset_on_lid)) + return NOTIFY_OK; + if (!acpi_lid_open()) { + dev_priv->modeset_on_lid = 1; + return NOTIFY_OK; + } + + if (!dev_priv->modeset_on_lid) + return NOTIFY_OK; + + dev_priv->modeset_on_lid = 0; + + mutex_lock(&dev->mode_config.mutex); + intel_modeset_check_state(dev); + mutex_unlock(&dev->mode_config.mutex); + + return NOTIFY_OK; +} + +/** + * intel_lvds_destroy - unregister and free LVDS structures + * @connector: connector to free + * + * Unregister the DDC bus for this connector then free the driver private + * structure. + */ +static void intel_lvds_destroy(struct drm_connector *connector) +{ + struct intel_lvds_connector *lvds_connector = + to_lvds_connector(connector); + + if (lvds_connector->lid_notifier.notifier_call) + acpi_lid_notifier_unregister(&lvds_connector->lid_notifier); + + if (!IS_ERR_OR_NULL(lvds_connector->base.edid)) + kfree(lvds_connector->base.edid); + + intel_panel_destroy_backlight(connector->dev); + intel_panel_fini(&lvds_connector->base.panel); + + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static int intel_lvds_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t value) +{ + struct intel_connector *intel_connector = to_intel_connector(connector); + struct drm_device *dev = connector->dev; + + if (property == dev->mode_config.scaling_mode_property) { + struct drm_crtc *crtc; + + if (value == DRM_MODE_SCALE_NONE) { + DRM_DEBUG_KMS("no scaling not supported\n"); + return -EINVAL; + } + + if (intel_connector->panel.fitting_mode == value) { + /* the LVDS scaling property is not changed */ + return 0; + } + intel_connector->panel.fitting_mode = value; + + crtc = intel_attached_encoder(connector)->base.crtc; + if (crtc && crtc->enabled) { + /* + * If the CRTC is enabled, the display will be changed + * according to the new panel fitting mode. + */ + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + } + + return 0; +} + +static const struct drm_encoder_helper_funcs intel_lvds_helper_funcs = { + .mode_fixup = intel_lvds_mode_fixup, + .mode_set = intel_lvds_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_helper_funcs intel_lvds_connector_helper_funcs = { + .get_modes = intel_lvds_get_modes, + .mode_valid = intel_lvds_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_connector_funcs intel_lvds_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_lvds_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_lvds_set_property, + .destroy = intel_lvds_destroy, +}; + +static const struct drm_encoder_funcs intel_lvds_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static int __init intel_no_lvds_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping LVDS initialization for %s\n", id->ident); + return 1; +} + +/* These systems claim to have LVDS, but really don't */ +static const struct dmi_system_id intel_no_lvds[] = { + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Apple Mac Mini (Core series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple"), + DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Apple Mac Mini (Core 2 series)", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Apple"), + DMI_MATCH(DMI_PRODUCT_NAME, "Macmini2,1"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "MSI IM-945GSE-A", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MSI"), + DMI_MATCH(DMI_PRODUCT_NAME, "A9830IMS"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Dell Studio Hybrid", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "Studio Hybrid 140g"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Dell OptiPlex FX170", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex FX170"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen Mini PC", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "AOpen"), + DMI_MATCH(DMI_PRODUCT_NAME, "i965GMx-IF"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen Mini PC MP915", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i915GMx-F"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen i915GMm-HFS", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i915GMm-HFS"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "AOpen i45GMx-I", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "AOpen"), + DMI_MATCH(DMI_BOARD_NAME, "i45GMx-I"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Aopen i945GTt-VFA", + .matches = { + DMI_MATCH(DMI_PRODUCT_VERSION, "AO00001JW"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Clientron U800", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), + DMI_MATCH(DMI_PRODUCT_NAME, "U800"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Clientron E830", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Clientron"), + DMI_MATCH(DMI_PRODUCT_NAME, "E830"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Asus EeeBox PC EB1007", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "EB1007"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Asus AT5NM10T-I", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer INC."), + DMI_MATCH(DMI_BOARD_NAME, "AT5NM10T-I"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard HP t5740e Thin Client", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP t5740e Thin Client"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard t5745", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "hp t5745"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Hewlett-Packard st5747", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "hp st5747"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "MSI Wind Box DC500", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), + DMI_MATCH(DMI_BOARD_NAME, "MS-7469"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "ZOTAC ZBOXSD-ID12/ID13", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "ZOTAC"), + DMI_MATCH(DMI_BOARD_NAME, "ZBOXSD-ID12/ID13"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Gigabyte GA-D525TUD", + .matches = { + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co., Ltd."), + DMI_MATCH(DMI_BOARD_NAME, "D525TUD"), + }, + }, + { + .callback = intel_no_lvds_dmi_callback, + .ident = "Supermicro X7SPA-H", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), + DMI_MATCH(DMI_PRODUCT_NAME, "X7SPA-H"), + }, + }, + + { } /* terminating entry */ +}; + +/** + * intel_find_lvds_downclock - find the reduced downclock for LVDS in EDID + * @dev: drm device + * @connector: LVDS connector + * + * Find the reduced downclock for LVDS in EDID. + */ +static void intel_find_lvds_downclock(struct drm_device *dev, + struct drm_display_mode *fixed_mode, + struct drm_connector *connector) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_display_mode *scan; + int temp_downclock; + + temp_downclock = fixed_mode->clock; + list_for_each_entry(scan, &connector->probed_modes, head) { + /* + * If one mode has the same resolution with the fixed_panel + * mode while they have the different refresh rate, it means + * that the reduced downclock is found for the LVDS. In such + * case we can set the different FPx0/1 to dynamically select + * between low and high frequency. + */ + if (scan->hdisplay == fixed_mode->hdisplay && + scan->hsync_start == fixed_mode->hsync_start && + scan->hsync_end == fixed_mode->hsync_end && + scan->htotal == fixed_mode->htotal && + scan->vdisplay == fixed_mode->vdisplay && + scan->vsync_start == fixed_mode->vsync_start && + scan->vsync_end == fixed_mode->vsync_end && + scan->vtotal == fixed_mode->vtotal) { + if (scan->clock < temp_downclock) { + /* + * The downclock is already found. But we + * expect to find the lower downclock. + */ + temp_downclock = scan->clock; + } + } + } + if (temp_downclock < fixed_mode->clock && i915_lvds_downclock) { + /* We found the downclock for LVDS. */ + dev_priv->lvds_downclock_avail = 1; + dev_priv->lvds_downclock = temp_downclock; + DRM_DEBUG_KMS("LVDS downclock is found in EDID. " + "Normal clock %dKhz, downclock %dKhz\n", + fixed_mode->clock, temp_downclock); + } +} + +/* + * Enumerate the child dev array parsed from VBT to check whether + * the LVDS is present. + * If it is present, return 1. + * If it is not present, return false. + * If no child dev is parsed from VBT, it assumes that the LVDS is present. + */ +static bool lvds_is_present_in_vbt(struct drm_device *dev, + u8 *i2c_pin) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + if (!dev_priv->child_dev_num) + return true; + + for (i = 0; i < dev_priv->child_dev_num; i++) { + struct child_device_config *child = dev_priv->child_dev + i; + + /* If the device type is not LFP, continue. + * We have to check both the new identifiers as well as the + * old for compatibility with some BIOSes. + */ + if (child->device_type != DEVICE_TYPE_INT_LFP && + child->device_type != DEVICE_TYPE_LFP) + continue; + + if (intel_gmbus_is_port_valid(child->i2c_pin)) + *i2c_pin = child->i2c_pin; + + /* However, we cannot trust the BIOS writers to populate + * the VBT correctly. Since LVDS requires additional + * information from AIM blocks, a non-zero addin offset is + * a good indicator that the LVDS is actually present. + */ + if (child->addin_offset) + return true; + + /* But even then some BIOS writers perform some black magic + * and instantiate the device without reference to any + * additional data. Trust that if the VBT was written into + * the OpRegion then they have validated the LVDS's existence. + */ + if (dev_priv->opregion.vbt) + return true; + } + + return false; +} + +static bool intel_lvds_supported(struct drm_device *dev) +{ + /* With the introduction of the PCH we gained a dedicated + * LVDS presence pin, use it. */ + if (HAS_PCH_SPLIT(dev)) + return true; + + /* Otherwise LVDS was only attached to mobile products, + * except for the inglorious 830gm */ + return IS_MOBILE(dev) && !IS_I830(dev); +} + +/** + * intel_lvds_init - setup LVDS connectors on this device + * @dev: drm device + * + * Create the connector, register the LVDS DDC bus, and try to figure out what + * modes we can display on the LVDS panel (if present). + */ +bool intel_lvds_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_lvds_encoder *lvds_encoder; + struct intel_encoder *intel_encoder; + struct intel_lvds_connector *lvds_connector; + struct intel_connector *intel_connector; + struct drm_connector *connector; + struct drm_encoder *encoder; + struct drm_display_mode *scan; /* *modes, *bios_mode; */ + struct drm_display_mode *fixed_mode = NULL; + struct edid *edid; + struct drm_crtc *crtc; + u32 lvds; + int pipe; + u8 pin; + + if (!intel_lvds_supported(dev)) + return false; + + /* Skip init on machines we know falsely report LVDS */ + if (dmi_check_system(intel_no_lvds)) + return false; + + pin = GMBUS_PORT_PANEL; + if (!lvds_is_present_in_vbt(dev, &pin)) { + DRM_DEBUG_KMS("LVDS is not present in VBT\n"); + return false; + } + + if (HAS_PCH_SPLIT(dev)) { + if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0) + return false; + if (dev_priv->edp.support) { + DRM_DEBUG_KMS("disable LVDS for eDP support\n"); + return false; + } + } + + lvds_encoder = kzalloc(sizeof(struct intel_lvds_encoder), GFP_KERNEL); + if (!lvds_encoder) + return false; + + lvds_connector = kzalloc(sizeof(struct intel_lvds_connector), GFP_KERNEL); + if (!lvds_connector) { + kfree(lvds_encoder); + return false; + } + + lvds_encoder->attached_connector = lvds_connector; + + if (!HAS_PCH_SPLIT(dev)) { + lvds_encoder->pfit_control = I915_READ(PFIT_CONTROL); + } + + intel_encoder = &lvds_encoder->base; + encoder = &intel_encoder->base; + intel_connector = &lvds_connector->base; + connector = &intel_connector->base; + drm_connector_init(dev, &intel_connector->base, &intel_lvds_connector_funcs, + DRM_MODE_CONNECTOR_LVDS); + + drm_encoder_init(dev, &intel_encoder->base, &intel_lvds_enc_funcs, + DRM_MODE_ENCODER_LVDS); + + intel_encoder->enable = intel_enable_lvds; + intel_encoder->disable = intel_disable_lvds; + intel_encoder->get_hw_state = intel_lvds_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_connector_attach_encoder(intel_connector, intel_encoder); + intel_encoder->type = INTEL_OUTPUT_LVDS; + + intel_encoder->cloneable = false; + if (HAS_PCH_SPLIT(dev)) + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + else if (IS_GEN4(dev)) + intel_encoder->crtc_mask = (1 << 0) | (1 << 1); + else + intel_encoder->crtc_mask = (1 << 1); + + drm_encoder_helper_add(encoder, &intel_lvds_helper_funcs); + drm_connector_helper_add(connector, &intel_lvds_connector_helper_funcs); + connector->display_info.subpixel_order = SubPixelHorizontalRGB; + connector->interlace_allowed = false; + connector->doublescan_allowed = false; + + /* create the scaling mode property */ + drm_mode_create_scaling_mode_property(dev); + drm_connector_attach_property(&intel_connector->base, + dev->mode_config.scaling_mode_property, + DRM_MODE_SCALE_ASPECT); + intel_connector->panel.fitting_mode = DRM_MODE_SCALE_ASPECT; + /* + * LVDS discovery: + * 1) check for EDID on DDC + * 2) check for VBT data + * 3) check to see if LVDS is already on + * if none of the above, no panel + * 4) make sure lid is open + * if closed, act like it's not there for now + */ + + /* + * Attempt to get the fixed panel mode from DDC. Assume that the + * preferred mode is the right one. + */ + edid = drm_get_edid(connector, intel_gmbus_get_adapter(dev_priv, pin)); + if (edid) { + if (drm_add_edid_modes(connector, edid)) { + drm_mode_connector_update_edid_property(connector, + edid); + } else { + kfree(edid); + edid = ERR_PTR(-EINVAL); + } + } else { + edid = ERR_PTR(-ENOENT); + } + lvds_connector->base.edid = edid; + + if (IS_ERR_OR_NULL(edid)) { + /* Didn't get an EDID, so + * Set wide sync ranges so we get all modes + * handed to valid_mode for checking + */ + connector->display_info.min_vfreq = 0; + connector->display_info.max_vfreq = 200; + connector->display_info.min_hfreq = 0; + connector->display_info.max_hfreq = 200; + } + + list_for_each_entry(scan, &connector->probed_modes, head) { + if (scan->type & DRM_MODE_TYPE_PREFERRED) { + DRM_DEBUG_KMS("using preferred mode from EDID: "); + drm_mode_debug_printmodeline(scan); + + fixed_mode = drm_mode_duplicate(dev, scan); + if (fixed_mode) { + intel_find_lvds_downclock(dev, fixed_mode, + connector); + goto out; + } + } + } + + /* Failed to get EDID, what about VBT? */ + if (dev_priv->lfp_lvds_vbt_mode) { + DRM_DEBUG_KMS("using mode from VBT: "); + drm_mode_debug_printmodeline(dev_priv->lfp_lvds_vbt_mode); + + fixed_mode = drm_mode_duplicate(dev, dev_priv->lfp_lvds_vbt_mode); + if (fixed_mode) { + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + goto out; + } + } + + /* + * If we didn't get EDID, try checking if the panel is already turned + * on. If so, assume that whatever is currently programmed is the + * correct mode. + */ + + /* Ironlake: FIXME if still fail, not try pipe mode now */ + if (HAS_PCH_SPLIT(dev)) + goto failed; + + lvds = I915_READ(LVDS); + pipe = (lvds & LVDS_PIPEB_SELECT) ? 1 : 0; + crtc = intel_get_crtc_for_pipe(dev, pipe); + + if (crtc && (lvds & LVDS_PORT_EN)) { + fixed_mode = intel_crtc_mode_get(dev, crtc); + if (fixed_mode) { + DRM_DEBUG_KMS("using current (BIOS) mode: "); + drm_mode_debug_printmodeline(fixed_mode); + fixed_mode->type |= DRM_MODE_TYPE_PREFERRED; + goto out; + } + } + + /* If we still don't have a mode after all that, give up. */ + if (!fixed_mode) + goto failed; + +out: + /* + * 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"); + lvds_connector->lid_notifier.notifier_call = NULL; + } + drm_sysfs_connector_add(connector); + + intel_panel_init(&intel_connector->panel, fixed_mode); + intel_panel_setup_backlight(connector); + + return true; + +failed: + DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); + drm_connector_cleanup(connector); + drm_encoder_cleanup(encoder); + if (fixed_mode) + drm_mode_destroy(dev, fixed_mode); + kfree(lvds_encoder); + kfree(lvds_connector); + return false; +} --- linux-3.5.0.orig/ubuntu/i915/intel_crt.c +++ linux-3.5.0/ubuntu/i915/intel_crt.c @@ -0,0 +1,810 @@ +/* + * Copyright © 2006-2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + */ + +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_crtc_helper.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +/* Here's the desired hotplug mode */ +#define ADPA_HOTPLUG_BITS (ADPA_CRT_HOTPLUG_PERIOD_128 | \ + ADPA_CRT_HOTPLUG_WARMUP_10MS | \ + ADPA_CRT_HOTPLUG_SAMPLE_4S | \ + ADPA_CRT_HOTPLUG_VOLTAGE_50 | \ + ADPA_CRT_HOTPLUG_VOLREF_325MV | \ + ADPA_CRT_HOTPLUG_ENABLE) + +struct intel_crt { + struct intel_encoder base; + bool force_hotplug_required; + u32 adpa_reg; +}; + +static struct intel_crt *intel_attached_crt(struct drm_connector *connector) +{ + return container_of(intel_attached_encoder(connector), + struct intel_crt, base); +} + +static struct intel_crt *intel_encoder_to_crt(struct intel_encoder *encoder) +{ + return container_of(encoder, struct intel_crt, base); +} + +static bool intel_crt_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 tmp; + + tmp = I915_READ(crt->adpa_reg); + + if (!(tmp & ADPA_DAC_ENABLE)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_disable_crt(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 temp; + + temp = I915_READ(crt->adpa_reg); + temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE); + temp &= ~ADPA_DAC_ENABLE; + I915_WRITE(crt->adpa_reg, temp); +} + +static void intel_enable_crt(struct intel_encoder *encoder) +{ + struct drm_i915_private *dev_priv = encoder->base.dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 temp; + + temp = I915_READ(crt->adpa_reg); + temp |= ADPA_DAC_ENABLE; + I915_WRITE(crt->adpa_reg, temp); +} + +/* Note: The caller is required to filter out dpms modes not supported by the + * platform. */ +static void intel_crt_set_dpms(struct intel_encoder *encoder, int mode) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_encoder_to_crt(encoder); + u32 temp; + + temp = I915_READ(crt->adpa_reg); + temp &= ~(ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE); + temp &= ~ADPA_DAC_ENABLE; + + switch (mode) { + case DRM_MODE_DPMS_ON: + temp |= ADPA_DAC_ENABLE; + break; + case DRM_MODE_DPMS_STANDBY: + temp |= ADPA_DAC_ENABLE | ADPA_HSYNC_CNTL_DISABLE; + break; + case DRM_MODE_DPMS_SUSPEND: + temp |= ADPA_DAC_ENABLE | ADPA_VSYNC_CNTL_DISABLE; + break; + case DRM_MODE_DPMS_OFF: + temp |= ADPA_HSYNC_CNTL_DISABLE | ADPA_VSYNC_CNTL_DISABLE; + break; + } + + I915_WRITE(crt->adpa_reg, temp); +} + +static void intel_crt_dpms(struct drm_connector *connector, int mode) +{ + struct drm_device *dev = connector->dev; + struct intel_encoder *encoder = intel_attached_encoder(connector); + struct drm_crtc *crtc; + int old_dpms; + + /* PCH platforms and VLV only support on/off. */ + if (INTEL_INFO(dev)->gen >= 5 && mode != DRM_MODE_DPMS_ON) + mode = DRM_MODE_DPMS_OFF; + + if (mode == connector->dpms) + return; + + old_dpms = connector->dpms; + connector->dpms = mode; + + /* Only need to change hw state when actually enabled */ + crtc = encoder->base.crtc; + if (!crtc) { + encoder->connectors_active = false; + return; + } + + /* We need the pipe to run for anything but OFF. */ + if (mode == DRM_MODE_DPMS_OFF) + encoder->connectors_active = false; + else + encoder->connectors_active = true; + + if (mode < old_dpms) { + /* From off to on, enable the pipe first. */ + intel_crtc_update_dpms(crtc); + + intel_crt_set_dpms(encoder, mode); + } else { + intel_crt_set_dpms(encoder, mode); + + intel_crtc_update_dpms(crtc); + } + + intel_modeset_check_state(connector->dev); +} + +static int intel_crt_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + struct drm_device *dev = connector->dev; + + int max_clock = 0; + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + if (mode->clock < 25000) + return MODE_CLOCK_LOW; + + if (IS_GEN2(dev)) + max_clock = 350000; + else + max_clock = 400000; + if (mode->clock > max_clock) + return MODE_CLOCK_HIGH; + + /* The FDI receiver on LPT only supports 8bpc and only has 2 lanes. */ + if (HAS_PCH_LPT(dev) && + (ironlake_get_lanes_required(mode->clock, 270000, 24) > 2)) + return MODE_CLOCK_HIGH; + + return MODE_OK; +} + +static bool intel_crt_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + return true; +} + +static void intel_crt_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + + struct drm_device *dev = encoder->dev; + struct drm_crtc *crtc = encoder->crtc; + struct intel_crt *crt = + intel_encoder_to_crt(to_intel_encoder(encoder)); + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + + if (HAS_PCH_SPLIT(dev)) + adpa = ADPA_HOTPLUG_BITS; + else + adpa = 0; + + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + adpa |= ADPA_HSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + adpa |= ADPA_VSYNC_ACTIVE_HIGH; + + /* For CPT allow 3 pipe config, for others just use A or B */ + if (HAS_PCH_LPT(dev)) + ; /* Those bits don't exist here */ + else if (HAS_PCH_CPT(dev)) + adpa |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); + else if (intel_crtc->pipe == 0) + adpa |= ADPA_PIPE_A_SELECT; + else + adpa |= ADPA_PIPE_B_SELECT; + + if (!HAS_PCH_SPLIT(dev)) + I915_WRITE(BCLRPAT(intel_crtc->pipe), 0); + + I915_WRITE(crt->adpa_reg, adpa); +} + +static bool intel_ironlake_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct intel_crt *crt = intel_attached_crt(connector); + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + bool ret; + + /* The first time through, trigger an explicit detection cycle */ + if (crt->force_hotplug_required) { + bool turn_off_dac = HAS_PCH_SPLIT(dev); + u32 save_adpa; + + crt->force_hotplug_required = 0; + + save_adpa = adpa = I915_READ(PCH_ADPA); + DRM_DEBUG_KMS("trigger hotplug detect cycle: adpa=0x%x\n", adpa); + + adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER; + if (turn_off_dac) + adpa &= ~ADPA_DAC_ENABLE; + + I915_WRITE(PCH_ADPA, adpa); + + if (wait_for((I915_READ(PCH_ADPA) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, + 1000)) + DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); + + if (turn_off_dac) { + I915_WRITE(PCH_ADPA, save_adpa); + POSTING_READ(PCH_ADPA); + } + } + + /* Check the status to see if both blue and green are on now */ + adpa = I915_READ(PCH_ADPA); + if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0) + ret = true; + else + ret = false; + DRM_DEBUG_KMS("ironlake hotplug adpa=0x%x, result %d\n", adpa, ret); + + return ret; +} + +static bool valleyview_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 adpa; + bool ret; + u32 save_adpa; + + save_adpa = adpa = I915_READ(ADPA); + DRM_DEBUG_KMS("trigger hotplug detect cycle: adpa=0x%x\n", adpa); + + adpa |= ADPA_CRT_HOTPLUG_FORCE_TRIGGER; + + I915_WRITE(ADPA, adpa); + + if (wait_for((I915_READ(ADPA) & ADPA_CRT_HOTPLUG_FORCE_TRIGGER) == 0, + 1000)) { + DRM_DEBUG_KMS("timed out waiting for FORCE_TRIGGER"); + I915_WRITE(ADPA, save_adpa); + } + + /* Check the status to see if both blue and green are on now */ + adpa = I915_READ(ADPA); + if ((adpa & ADPA_CRT_HOTPLUG_MONITOR_MASK) != 0) + ret = true; + else + ret = false; + + DRM_DEBUG_KMS("valleyview hotplug adpa=0x%x, result %d\n", adpa, ret); + + /* FIXME: debug force function and remove */ + ret = true; + + return ret; +} + +/** + * Uses CRT_HOTPLUG_EN and CRT_HOTPLUG_STAT to detect CRT presence. + * + * Not for i915G/i915GM + * + * \return true if CRT is connected. + * \return false if CRT is disconnected. + */ +static bool intel_crt_detect_hotplug(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 hotplug_en, orig, stat; + bool ret = false; + int i, tries = 0; + + if (HAS_PCH_SPLIT(dev)) + return intel_ironlake_crt_detect_hotplug(connector); + + if (IS_VALLEYVIEW(dev)) + return valleyview_crt_detect_hotplug(connector); + + /* + * On 4 series desktop, CRT detect sequence need to be done twice + * to get a reliable result. + */ + + if (IS_G4X(dev) && !IS_GM45(dev)) + tries = 2; + else + tries = 1; + hotplug_en = orig = I915_READ(PORT_HOTPLUG_EN); + hotplug_en |= CRT_HOTPLUG_FORCE_DETECT; + + for (i = 0; i < tries ; i++) { + /* turn on the FORCE_DETECT */ + I915_WRITE(PORT_HOTPLUG_EN, hotplug_en); + /* wait for FORCE_DETECT to go off */ + if (wait_for((I915_READ(PORT_HOTPLUG_EN) & + CRT_HOTPLUG_FORCE_DETECT) == 0, + 1000)) + DRM_DEBUG_KMS("timed out waiting for FORCE_DETECT to go off"); + } + + stat = I915_READ(PORT_HOTPLUG_STAT); + if ((stat & CRT_HOTPLUG_MONITOR_MASK) != CRT_HOTPLUG_MONITOR_NONE) + ret = true; + + /* clear the interrupt we just generated, if any */ + I915_WRITE(PORT_HOTPLUG_STAT, CRT_HOTPLUG_INT_STATUS); + + /* and put the bits back */ + I915_WRITE(PORT_HOTPLUG_EN, orig); + + return ret; +} + +static struct edid *intel_crt_get_edid(struct drm_connector *connector, + struct i2c_adapter *i2c) +{ + struct edid *edid; + + edid = drm_get_edid(connector, i2c); + + if (!edid && !intel_gmbus_is_forced_bit(i2c)) { + DRM_DEBUG_KMS("CRT GMBUS EDID read failed, retry using GPIO bit-banging\n"); + intel_gmbus_force_bit(i2c, true); + edid = drm_get_edid(connector, i2c); + intel_gmbus_force_bit(i2c, false); + } + + return edid; +} + +/* local version of intel_ddc_get_modes() to use intel_crt_get_edid() */ +static int intel_crt_ddc_get_modes(struct drm_connector *connector, + struct i2c_adapter *adapter) +{ + struct edid *edid; + int ret; + + edid = intel_crt_get_edid(connector, adapter); + if (!edid) + return 0; + + ret = intel_connector_update_modes(connector, edid); + kfree(edid); + + return ret; +} + +static bool intel_crt_detect_ddc(struct drm_connector *connector) +{ + struct intel_crt *crt = intel_attached_crt(connector); + struct drm_i915_private *dev_priv = crt->base.base.dev->dev_private; + struct edid *edid; + struct i2c_adapter *i2c; + + BUG_ON(crt->base.type != INTEL_OUTPUT_ANALOG); + + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + edid = intel_crt_get_edid(connector, i2c); + + if (edid) { + bool is_digital = edid->input & DRM_EDID_INPUT_DIGITAL; + + /* + * This may be a DVI-I connector with a shared DDC + * link between analog and digital outputs, so we + * have to check the EDID input spec of the attached device. + */ + if (!is_digital) { + DRM_DEBUG_KMS("CRT detected via DDC:0x50 [EDID]\n"); + return true; + } + + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [EDID reports a digital panel]\n"); + } else { + DRM_DEBUG_KMS("CRT not detected via DDC:0x50 [no valid EDID found]\n"); + } + + kfree(edid); + + return false; +} + +static enum drm_connector_status +intel_crt_load_detect(struct intel_crt *crt) +{ + struct drm_device *dev = crt->base.base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t pipe = to_intel_crtc(crt->base.base.crtc)->pipe; + uint32_t save_bclrpat; + uint32_t save_vtotal; + uint32_t vtotal, vactive; + uint32_t vsample; + uint32_t vblank, vblank_start, vblank_end; + uint32_t dsl; + uint32_t bclrpat_reg; + uint32_t vtotal_reg; + uint32_t vblank_reg; + uint32_t vsync_reg; + uint32_t pipeconf_reg; + uint32_t pipe_dsl_reg; + uint8_t st00; + enum drm_connector_status status; + + DRM_DEBUG_KMS("starting load-detect on CRT\n"); + + bclrpat_reg = BCLRPAT(pipe); + vtotal_reg = VTOTAL(pipe); + vblank_reg = VBLANK(pipe); + vsync_reg = VSYNC(pipe); + pipeconf_reg = PIPECONF(pipe); + pipe_dsl_reg = PIPEDSL(pipe); + + save_bclrpat = I915_READ(bclrpat_reg); + save_vtotal = I915_READ(vtotal_reg); + vblank = I915_READ(vblank_reg); + + vtotal = ((save_vtotal >> 16) & 0xfff) + 1; + vactive = (save_vtotal & 0x7ff) + 1; + + vblank_start = (vblank & 0xfff) + 1; + vblank_end = ((vblank >> 16) & 0xfff) + 1; + + /* Set the border color to purple. */ + I915_WRITE(bclrpat_reg, 0x500050); + + if (!IS_GEN2(dev)) { + uint32_t pipeconf = I915_READ(pipeconf_reg); + I915_WRITE(pipeconf_reg, pipeconf | PIPECONF_FORCE_BORDER); + POSTING_READ(pipeconf_reg); + /* Wait for next Vblank to substitue + * border color for Color info */ + intel_wait_for_vblank(dev, pipe); + st00 = I915_READ8(VGA_MSR_WRITE); + status = ((st00 & (1 << 4)) != 0) ? + connector_status_connected : + connector_status_disconnected; + + I915_WRITE(pipeconf_reg, pipeconf); + } else { + bool restore_vblank = false; + int count, detect; + + /* + * If there isn't any border, add some. + * Yes, this will flicker + */ + if (vblank_start <= vactive && vblank_end >= vtotal) { + uint32_t vsync = I915_READ(vsync_reg); + uint32_t vsync_start = (vsync & 0xffff) + 1; + + vblank_start = vsync_start; + I915_WRITE(vblank_reg, + (vblank_start - 1) | + ((vblank_end - 1) << 16)); + restore_vblank = true; + } + /* sample in the vertical border, selecting the larger one */ + if (vblank_start - vactive >= vtotal - vblank_end) + vsample = (vblank_start + vactive) >> 1; + else + vsample = (vtotal + vblank_end) >> 1; + + /* + * Wait for the border to be displayed + */ + while (I915_READ(pipe_dsl_reg) >= vactive) + ; + while ((dsl = I915_READ(pipe_dsl_reg)) <= vsample) + ; + /* + * Watch ST00 for an entire scanline + */ + detect = 0; + count = 0; + do { + count++; + /* Read the ST00 VGA status register */ + st00 = I915_READ8(VGA_MSR_WRITE); + if (st00 & (1 << 4)) + detect++; + } while ((I915_READ(pipe_dsl_reg) == dsl)); + + /* restore vblank if necessary */ + if (restore_vblank) + I915_WRITE(vblank_reg, vblank); + /* + * If more than 3/4 of the scanline detected a monitor, + * then it is assumed to be present. This works even on i830, + * where there isn't any way to force the border color across + * the screen + */ + status = detect * 4 > count * 3 ? + connector_status_connected : + connector_status_disconnected; + } + + /* Restore previous settings */ + I915_WRITE(bclrpat_reg, save_bclrpat); + + return status; +} + +static enum drm_connector_status +intel_crt_detect(struct drm_connector *connector, bool force) +{ + struct drm_device *dev = connector->dev; + struct intel_crt *crt = intel_attached_crt(connector); + enum drm_connector_status status; + struct intel_load_detect_pipe tmp; + + if (I915_HAS_HOTPLUG(dev)) { + /* We can not rely on the HPD pin always being correctly wired + * up, for example many KVM do not pass it through, and so + * only trust an assertion that the monitor is connected. + */ + if (intel_crt_detect_hotplug(connector)) { + DRM_DEBUG_KMS("CRT detected via hotplug\n"); + return connector_status_connected; + } else + DRM_DEBUG_KMS("CRT not detected via hotplug\n"); + } + + if (intel_crt_detect_ddc(connector)) + return connector_status_connected; + + /* Load detection is broken on HPD capable machines. Whoever wants a + * broken monitor (without edid) to work behind a broken kvm (that fails + * to have the right resistors for HP detection) needs to fix this up. + * For now just bail out. */ + if (I915_HAS_HOTPLUG(dev)) + return connector_status_disconnected; + + if (!force) + return connector->status; + + /* for pre-945g platforms use load detect */ + if (intel_get_load_detect_pipe(connector, NULL, &tmp)) { + if (intel_crt_detect_ddc(connector)) + status = connector_status_connected; + else + status = intel_crt_load_detect(crt); + intel_release_load_detect_pipe(connector, &tmp); + } else + status = connector_status_unknown; + + return status; +} + +static void intel_crt_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static int intel_crt_get_modes(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + int ret; + struct i2c_adapter *i2c; + + i2c = intel_gmbus_get_adapter(dev_priv, dev_priv->crt_ddc_pin); + ret = intel_crt_ddc_get_modes(connector, i2c); + if (ret || !IS_G4X(dev)) + return ret; + + /* Try to probe digital port for output in DVI-I -> VGA mode. */ + i2c = intel_gmbus_get_adapter(dev_priv, GMBUS_PORT_DPB); + return intel_crt_ddc_get_modes(connector, i2c); +} + +static int intel_crt_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t value) +{ + return 0; +} + +static void intel_crt_reset(struct drm_connector *connector) +{ + struct drm_device *dev = connector->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crt *crt = intel_attached_crt(connector); + + if (HAS_PCH_SPLIT(dev)) { + u32 adpa; + + adpa = I915_READ(PCH_ADPA); + adpa &= ~ADPA_CRT_HOTPLUG_MASK; + adpa |= ADPA_HOTPLUG_BITS; + I915_WRITE(PCH_ADPA, adpa); + POSTING_READ(PCH_ADPA); + + DRM_DEBUG_KMS("pch crt adpa set to 0x%x\n", adpa); + crt->force_hotplug_required = 1; + } + +} + +/* + * Routines for controlling stuff on the analog port + */ + +static const struct drm_encoder_helper_funcs crt_encoder_funcs = { + .mode_fixup = intel_crt_mode_fixup, + .mode_set = intel_crt_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_crt_connector_funcs = { + .reset = intel_crt_reset, + .dpms = intel_crt_dpms, + .detect = intel_crt_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .destroy = intel_crt_destroy, + .set_property = intel_crt_set_property, +}; + +static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs = { + .mode_valid = intel_crt_mode_valid, + .get_modes = intel_crt_get_modes, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_crt_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) +{ + DRM_INFO("Skipping CRT initialization for %s\n", id->ident); + return 1; +} + +static const struct dmi_system_id intel_no_crt[] = { + { + .callback = intel_no_crt_dmi_callback, + .ident = "ACER ZGB", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ACER"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), + }, + }, + { } +}; + +void intel_crt_init(struct drm_device *dev) +{ + struct drm_connector *connector; + struct intel_crt *crt; + struct intel_connector *intel_connector; + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Skip machines without VGA that falsely report hotplug events */ + if (dmi_check_system(intel_no_crt)) + return; + + crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL); + if (!crt) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(crt); + return; + } + + connector = &intel_connector->base; + drm_connector_init(dev, &intel_connector->base, + &intel_crt_connector_funcs, DRM_MODE_CONNECTOR_VGA); + + drm_encoder_init(dev, &crt->base.base, &intel_crt_enc_funcs, + DRM_MODE_ENCODER_DAC); + + intel_connector_attach_encoder(intel_connector, &crt->base); + + crt->base.type = INTEL_OUTPUT_ANALOG; + crt->base.cloneable = true; + if (IS_I830(dev)) + crt->base.crtc_mask = (1 << 0); + else + crt->base.crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + + if (IS_GEN2(dev)) + connector->interlace_allowed = 0; + else + connector->interlace_allowed = 1; + connector->doublescan_allowed = 0; + + if (HAS_PCH_SPLIT(dev)) + crt->adpa_reg = PCH_ADPA; + else if (IS_VALLEYVIEW(dev)) + crt->adpa_reg = VLV_ADPA; + else + crt->adpa_reg = ADPA; + + crt->base.disable = intel_disable_crt; + crt->base.enable = intel_enable_crt; + if (IS_HASWELL(dev)) + crt->base.get_hw_state = intel_ddi_get_hw_state; + else + crt->base.get_hw_state = intel_crt_get_hw_state; + intel_connector->get_hw_state = intel_connector_get_hw_state; + + drm_encoder_helper_add(&crt->base.base, &crt_encoder_funcs); + drm_connector_helper_add(connector, &intel_crt_connector_helper_funcs); + + drm_sysfs_connector_add(connector); + + if (I915_HAS_HOTPLUG(dev)) + connector->polled = DRM_CONNECTOR_POLL_HPD; + else + connector->polled = DRM_CONNECTOR_POLL_CONNECT; + + /* + * Configure the automatic hotplug detection stuff + */ + crt->force_hotplug_required = 0; + + dev_priv->hotplug_supported_mask |= CRT_HOTPLUG_INT_STATUS; + + /* + * TODO: find a proper way to discover whether we need to set the + * polarity reversal bit or not, instead of relying on the BIOS. + */ + if (HAS_PCH_LPT(dev)) + dev_priv->fdi_rx_polarity_reversed = + !!(I915_READ(_FDI_RXA_CTL) & FDI_RX_POLARITY_REVERSED_LPT); +} --- linux-3.5.0.orig/ubuntu/i915/intel_bios.h +++ linux-3.5.0/ubuntu/i915/intel_bios.h @@ -0,0 +1,619 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#ifndef _I830_BIOS_H_ +#define _I830_BIOS_H_ + +#include "drmP.h" + +struct vbt_header { + u8 signature[20]; /**< Always starts with 'VBT$' */ + u16 version; /**< decimal */ + u16 header_size; /**< in bytes */ + u16 vbt_size; /**< in bytes */ + u8 vbt_checksum; + u8 reserved0; + u32 bdb_offset; /**< from beginning of VBT */ + u32 aim_offset[4]; /**< from beginning of VBT */ +} __attribute__((packed)); + +struct bdb_header { + u8 signature[16]; /**< Always 'BIOS_DATA_BLOCK' */ + u16 version; /**< decimal */ + u16 header_size; /**< in bytes */ + u16 bdb_size; /**< in bytes */ +}; + +/* strictly speaking, this is a "skip" block, but it has interesting info */ +struct vbios_data { + u8 type; /* 0 == desktop, 1 == mobile */ + u8 relstage; + u8 chipset; + u8 lvds_present:1; + u8 tv_present:1; + u8 rsvd2:6; /* finish byte */ + u8 rsvd3[4]; + u8 signon[155]; + u8 copyright[61]; + u16 code_segment; + u8 dos_boot_mode; + u8 bandwidth_percent; + u8 rsvd4; /* popup memory size */ + u8 resize_pci_bios; + u8 rsvd5; /* is crt already on ddc2 */ +} __attribute__((packed)); + +/* + * There are several types of BIOS data blocks (BDBs), each block has + * an ID and size in the first 3 bytes (ID in first, size in next 2). + * Known types are listed below. + */ +#define BDB_GENERAL_FEATURES 1 +#define BDB_GENERAL_DEFINITIONS 2 +#define BDB_OLD_TOGGLE_LIST 3 +#define BDB_MODE_SUPPORT_LIST 4 +#define BDB_GENERIC_MODE_TABLE 5 +#define BDB_EXT_MMIO_REGS 6 +#define BDB_SWF_IO 7 +#define BDB_SWF_MMIO 8 +#define BDB_DOT_CLOCK_TABLE 9 +#define BDB_MODE_REMOVAL_TABLE 10 +#define BDB_CHILD_DEVICE_TABLE 11 +#define BDB_DRIVER_FEATURES 12 +#define BDB_DRIVER_PERSISTENCE 13 +#define BDB_EXT_TABLE_PTRS 14 +#define BDB_DOT_CLOCK_OVERRIDE 15 +#define BDB_DISPLAY_SELECT 16 +/* 17 rsvd */ +#define BDB_DRIVER_ROTATION 18 +#define BDB_DISPLAY_REMOVE 19 +#define BDB_OEM_CUSTOM 20 +#define BDB_EFP_LIST 21 /* workarounds for VGA hsync/vsync */ +#define BDB_SDVO_LVDS_OPTIONS 22 +#define BDB_SDVO_PANEL_DTDS 23 +#define BDB_SDVO_LVDS_PNP_IDS 24 +#define BDB_SDVO_LVDS_POWER_SEQ 25 +#define BDB_TV_OPTIONS 26 +#define BDB_EDP 27 +#define BDB_LVDS_OPTIONS 40 +#define BDB_LVDS_LFP_DATA_PTRS 41 +#define BDB_LVDS_LFP_DATA 42 +#define BDB_LVDS_BACKLIGHT 43 +#define BDB_LVDS_POWER 44 +#define BDB_SKIP 254 /* VBIOS private block, ignore */ + +struct bdb_general_features { + /* bits 1 */ + u8 panel_fitting:2; + u8 flexaim:1; + u8 msg_enable:1; + u8 clear_screen:3; + u8 color_flip:1; + + /* bits 2 */ + u8 download_ext_vbt:1; + u8 enable_ssc:1; + u8 ssc_freq:1; + u8 enable_lfp_on_override:1; + u8 disable_ssc_ddt:1; + u8 rsvd7:1; + u8 display_clock_mode:1; + u8 rsvd8:1; /* finish byte */ + + /* bits 3 */ + u8 disable_smooth_vision:1; + u8 single_dvi:1; + u8 rsvd9:6; /* finish byte */ + + /* bits 4 */ + u8 legacy_monitor_detect; + + /* bits 5 */ + u8 int_crt_support:1; + u8 int_tv_support:1; + u8 int_efp_support:1; + u8 dp_ssc_enb:1; /* PCH attached eDP supports SSC */ + u8 dp_ssc_freq:1; /* SSC freq for PCH attached eDP */ + u8 rsvd11:3; /* finish byte */ +} __attribute__((packed)); + +/* pre-915 */ +#define GPIO_PIN_DVI_LVDS 0x03 /* "DVI/LVDS DDC GPIO pins" */ +#define GPIO_PIN_ADD_I2C 0x05 /* "ADDCARD I2C GPIO pins" */ +#define GPIO_PIN_ADD_DDC 0x04 /* "ADDCARD DDC GPIO pins" */ +#define GPIO_PIN_ADD_DDC_I2C 0x06 /* "ADDCARD DDC/I2C GPIO pins" */ + +/* Pre 915 */ +#define DEVICE_TYPE_NONE 0x00 +#define DEVICE_TYPE_CRT 0x01 +#define DEVICE_TYPE_TV 0x09 +#define DEVICE_TYPE_EFP 0x12 +#define DEVICE_TYPE_LFP 0x22 +/* On 915+ */ +#define DEVICE_TYPE_CRT_DPMS 0x6001 +#define DEVICE_TYPE_CRT_DPMS_HOTPLUG 0x4001 +#define DEVICE_TYPE_TV_COMPOSITE 0x0209 +#define DEVICE_TYPE_TV_MACROVISION 0x0289 +#define DEVICE_TYPE_TV_RF_COMPOSITE 0x020c +#define DEVICE_TYPE_TV_SVIDEO_COMPOSITE 0x0609 +#define DEVICE_TYPE_TV_SCART 0x0209 +#define DEVICE_TYPE_TV_CODEC_HOTPLUG_PWR 0x6009 +#define DEVICE_TYPE_EFP_HOTPLUG_PWR 0x6012 +#define DEVICE_TYPE_EFP_DVI_HOTPLUG_PWR 0x6052 +#define DEVICE_TYPE_EFP_DVI_I 0x6053 +#define DEVICE_TYPE_EFP_DVI_D_DUAL 0x6152 +#define DEVICE_TYPE_EFP_DVI_D_HDCP 0x60d2 +#define DEVICE_TYPE_OPENLDI_HOTPLUG_PWR 0x6062 +#define DEVICE_TYPE_OPENLDI_DUALPIX 0x6162 +#define DEVICE_TYPE_LFP_PANELLINK 0x5012 +#define DEVICE_TYPE_LFP_CMOS_PWR 0x5042 +#define DEVICE_TYPE_LFP_LVDS_PWR 0x5062 +#define DEVICE_TYPE_LFP_LVDS_DUAL 0x5162 +#define DEVICE_TYPE_LFP_LVDS_DUAL_HDCP 0x51e2 + +#define DEVICE_CFG_NONE 0x00 +#define DEVICE_CFG_12BIT_DVOB 0x01 +#define DEVICE_CFG_12BIT_DVOC 0x02 +#define DEVICE_CFG_24BIT_DVOBC 0x09 +#define DEVICE_CFG_24BIT_DVOCB 0x0a +#define DEVICE_CFG_DUAL_DVOB 0x11 +#define DEVICE_CFG_DUAL_DVOC 0x12 +#define DEVICE_CFG_DUAL_DVOBC 0x13 +#define DEVICE_CFG_DUAL_LINK_DVOBC 0x19 +#define DEVICE_CFG_DUAL_LINK_DVOCB 0x1a + +#define DEVICE_WIRE_NONE 0x00 +#define DEVICE_WIRE_DVOB 0x01 +#define DEVICE_WIRE_DVOC 0x02 +#define DEVICE_WIRE_DVOBC 0x03 +#define DEVICE_WIRE_DVOBB 0x05 +#define DEVICE_WIRE_DVOCC 0x06 +#define DEVICE_WIRE_DVOB_MASTER 0x0d +#define DEVICE_WIRE_DVOC_MASTER 0x0e + +#define DEVICE_PORT_DVOA 0x00 /* none on 845+ */ +#define DEVICE_PORT_DVOB 0x01 +#define DEVICE_PORT_DVOC 0x02 + +struct child_device_config { + u16 handle; + u16 device_type; + u8 device_id[10]; /* ascii string */ + u16 addin_offset; + u8 dvo_port; /* See Device_PORT_* above */ + u8 i2c_pin; + u8 slave_addr; + u8 ddc_pin; + u16 edid_ptr; + u8 dvo_cfg; /* See DEVICE_CFG_* above */ + u8 dvo2_port; + u8 i2c2_pin; + u8 slave2_addr; + u8 ddc2_pin; + u8 capabilities; + u8 dvo_wiring;/* See DEVICE_WIRE_* above */ + u8 dvo2_wiring; + u16 extended_type; + u8 dvo_function; +} __attribute__((packed)); + +struct bdb_general_definitions { + /* DDC GPIO */ + u8 crt_ddc_gmbus_pin; + + /* DPMS bits */ + u8 dpms_acpi:1; + u8 skip_boot_crt_detect:1; + u8 dpms_aim:1; + u8 rsvd1:5; /* finish byte */ + + /* boot device bits */ + u8 boot_display[2]; + u8 child_dev_size; + + /* + * Device info: + * If TV is present, it'll be at devices[0]. + * LVDS will be next, either devices[0] or [1], if present. + * On some platforms the number of device is 6. But could be as few as + * 4 if both TV and LVDS are missing. + * And the device num is related with the size of general definition + * block. It is obtained by using the following formula: + * number = (block_size - sizeof(bdb_general_definitions))/ + * sizeof(child_device_config); + */ + struct child_device_config devices[0]; +} __attribute__((packed)); + +struct bdb_lvds_options { + u8 panel_type; + u8 rsvd1; + /* LVDS capabilities, stored in a dword */ + u8 pfit_mode:2; + u8 pfit_text_mode_enhanced:1; + u8 pfit_gfx_mode_enhanced:1; + u8 pfit_ratio_auto:1; + u8 pixel_dither:1; + u8 lvds_edid:1; + u8 rsvd2:1; + u8 rsvd4; +} __attribute__((packed)); + +/* LFP pointer table contains entries to the struct below */ +struct bdb_lvds_lfp_data_ptr { + u16 fp_timing_offset; /* offsets are from start of bdb */ + u8 fp_table_size; + u16 dvo_timing_offset; + u8 dvo_table_size; + u16 panel_pnp_id_offset; + u8 pnp_table_size; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data_ptrs { + u8 lvds_entries; /* followed by one or more lvds_data_ptr structs */ + struct bdb_lvds_lfp_data_ptr ptr[16]; +} __attribute__((packed)); + +/* LFP data has 3 blocks per entry */ +struct lvds_fp_timing { + u16 x_res; + u16 y_res; + u32 lvds_reg; + u32 lvds_reg_val; + u32 pp_on_reg; + u32 pp_on_reg_val; + u32 pp_off_reg; + u32 pp_off_reg_val; + u32 pp_cycle_reg; + u32 pp_cycle_reg_val; + u32 pfit_reg; + u32 pfit_reg_val; + u16 terminator; +} __attribute__((packed)); + +struct lvds_dvo_timing { + u16 clock; /**< In 10khz */ + u8 hactive_lo; + u8 hblank_lo; + u8 hblank_hi:4; + u8 hactive_hi:4; + u8 vactive_lo; + u8 vblank_lo; + u8 vblank_hi:4; + u8 vactive_hi:4; + u8 hsync_off_lo; + u8 hsync_pulse_width; + u8 vsync_pulse_width:4; + u8 vsync_off:4; + u8 rsvd0:6; + u8 hsync_off_hi:2; + u8 h_image; + u8 v_image; + u8 max_hv; + u8 h_border; + u8 v_border; + u8 rsvd1:3; + u8 digital:2; + u8 vsync_positive:1; + u8 hsync_positive:1; + u8 rsvd2:1; +} __attribute__((packed)); + +struct lvds_pnp_id { + u16 mfg_name; + u16 product_code; + u32 serial; + u8 mfg_week; + u8 mfg_year; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data_entry { + struct lvds_fp_timing fp_timing; + struct lvds_dvo_timing dvo_timing; + struct lvds_pnp_id pnp_id; +} __attribute__((packed)); + +struct bdb_lvds_lfp_data { + struct bdb_lvds_lfp_data_entry data[16]; +} __attribute__((packed)); + +struct aimdb_header { + char signature[16]; + char oem_device[20]; + u16 aimdb_version; + u16 aimdb_header_size; + u16 aimdb_size; +} __attribute__((packed)); + +struct aimdb_block { + u8 aimdb_id; + u16 aimdb_size; +} __attribute__((packed)); + +struct vch_panel_data { + u16 fp_timing_offset; + u8 fp_timing_size; + u16 dvo_timing_offset; + u8 dvo_timing_size; + u16 text_fitting_offset; + u8 text_fitting_size; + u16 graphics_fitting_offset; + u8 graphics_fitting_size; +} __attribute__((packed)); + +struct vch_bdb_22 { + struct aimdb_block aimdb_block; + struct vch_panel_data panels[16]; +} __attribute__((packed)); + +struct bdb_sdvo_lvds_options { + u8 panel_backlight; + u8 h40_set_panel_type; + u8 panel_type; + u8 ssc_clk_freq; + u16 als_low_trip; + u16 als_high_trip; + u8 sclalarcoeff_tab_row_num; + u8 sclalarcoeff_tab_row_size; + u8 coefficient[8]; + u8 panel_misc_bits_1; + u8 panel_misc_bits_2; + u8 panel_misc_bits_3; + u8 panel_misc_bits_4; +} __attribute__((packed)); + + +#define BDB_DRIVER_FEATURE_NO_LVDS 0 +#define BDB_DRIVER_FEATURE_INT_LVDS 1 +#define BDB_DRIVER_FEATURE_SDVO_LVDS 2 +#define BDB_DRIVER_FEATURE_EDP 3 + +struct bdb_driver_features { + u8 boot_dev_algorithm:1; + u8 block_display_switch:1; + u8 allow_display_switch:1; + u8 hotplug_dvo:1; + u8 dual_view_zoom:1; + u8 int15h_hook:1; + u8 sprite_in_clone:1; + u8 primary_lfp_id:1; + + u16 boot_mode_x; + u16 boot_mode_y; + u8 boot_mode_bpp; + u8 boot_mode_refresh; + + u16 enable_lfp_primary:1; + u16 selective_mode_pruning:1; + u16 dual_frequency:1; + u16 render_clock_freq:1; /* 0: high freq; 1: low freq */ + u16 nt_clone_support:1; + u16 power_scheme_ui:1; /* 0: CUI; 1: 3rd party */ + u16 sprite_display_assign:1; /* 0: secondary; 1: primary */ + u16 cui_aspect_scaling:1; + u16 preserve_aspect_ratio:1; + u16 sdvo_device_power_down:1; + u16 crt_hotplug:1; + u16 lvds_config:2; + u16 tv_hotplug:1; + u16 hdmi_config:2; + + u8 static_display:1; + u8 reserved2:7; + u16 legacy_crt_max_x; + u16 legacy_crt_max_y; + u8 legacy_crt_max_refresh; + + u8 hdmi_termination; + u8 custom_vbt_version; +} __attribute__((packed)); + +#define EDP_18BPP 0 +#define EDP_24BPP 1 +#define EDP_30BPP 2 +#define EDP_RATE_1_62 0 +#define EDP_RATE_2_7 1 +#define EDP_LANE_1 0 +#define EDP_LANE_2 1 +#define EDP_LANE_4 3 +#define EDP_PREEMPHASIS_NONE 0 +#define EDP_PREEMPHASIS_3_5dB 1 +#define EDP_PREEMPHASIS_6dB 2 +#define EDP_PREEMPHASIS_9_5dB 3 +#define EDP_VSWING_0_4V 0 +#define EDP_VSWING_0_6V 1 +#define EDP_VSWING_0_8V 2 +#define EDP_VSWING_1_2V 3 + +struct edp_power_seq { + u16 t1_t3; + u16 t8; + u16 t9; + u16 t10; + u16 t11_t12; +} __attribute__ ((packed)); + +struct edp_link_params { + u8 rate:4; + u8 lanes:4; + u8 preemphasis:4; + u8 vswing:4; +} __attribute__ ((packed)); + +struct bdb_edp { + struct edp_power_seq power_seqs[16]; + u32 color_depth; + struct edp_link_params link_params[16]; + u32 sdrrs_msa_timing_delay; + + /* ith bit indicates enabled/disabled for (i+1)th panel */ + u16 edp_s3d_feature; + u16 edp_t3_optimization; +} __attribute__ ((packed)); + +void intel_setup_bios(struct drm_device *dev); +int intel_parse_bios(struct drm_device *dev); + +/* + * Driver<->VBIOS interaction occurs through scratch bits in + * GR18 & SWF*. + */ + +/* GR18 bits are set on display switch and hotkey events */ +#define GR18_DRIVER_SWITCH_EN (1<<7) /* 0: VBIOS control, 1: driver control */ +#define GR18_HOTKEY_MASK 0x78 /* See also SWF4 15:0 */ +#define GR18_HK_NONE (0x0<<3) +#define GR18_HK_LFP_STRETCH (0x1<<3) +#define GR18_HK_TOGGLE_DISP (0x2<<3) +#define GR18_HK_DISP_SWITCH (0x4<<3) /* see SWF14 15:0 for what to enable */ +#define GR18_HK_POPUP_DISABLED (0x6<<3) +#define GR18_HK_POPUP_ENABLED (0x7<<3) +#define GR18_HK_PFIT (0x8<<3) +#define GR18_HK_APM_CHANGE (0xa<<3) +#define GR18_HK_MULTIPLE (0xc<<3) +#define GR18_USER_INT_EN (1<<2) +#define GR18_A0000_FLUSH_EN (1<<1) +#define GR18_SMM_EN (1<<0) + +/* Set by driver, cleared by VBIOS */ +#define SWF00_YRES_SHIFT 16 +#define SWF00_XRES_SHIFT 0 +#define SWF00_RES_MASK 0xffff + +/* Set by VBIOS at boot time and driver at runtime */ +#define SWF01_TV2_FORMAT_SHIFT 8 +#define SWF01_TV1_FORMAT_SHIFT 0 +#define SWF01_TV_FORMAT_MASK 0xffff + +#define SWF10_VBIOS_BLC_I2C_EN (1<<29) +#define SWF10_GTT_OVERRIDE_EN (1<<28) +#define SWF10_LFP_DPMS_OVR (1<<27) /* override DPMS on display switch */ +#define SWF10_ACTIVE_TOGGLE_LIST_MASK (7<<24) +#define SWF10_OLD_TOGGLE 0x0 +#define SWF10_TOGGLE_LIST_1 0x1 +#define SWF10_TOGGLE_LIST_2 0x2 +#define SWF10_TOGGLE_LIST_3 0x3 +#define SWF10_TOGGLE_LIST_4 0x4 +#define SWF10_PANNING_EN (1<<23) +#define SWF10_DRIVER_LOADED (1<<22) +#define SWF10_EXTENDED_DESKTOP (1<<21) +#define SWF10_EXCLUSIVE_MODE (1<<20) +#define SWF10_OVERLAY_EN (1<<19) +#define SWF10_PLANEB_HOLDOFF (1<<18) +#define SWF10_PLANEA_HOLDOFF (1<<17) +#define SWF10_VGA_HOLDOFF (1<<16) +#define SWF10_ACTIVE_DISP_MASK 0xffff +#define SWF10_PIPEB_LFP2 (1<<15) +#define SWF10_PIPEB_EFP2 (1<<14) +#define SWF10_PIPEB_TV2 (1<<13) +#define SWF10_PIPEB_CRT2 (1<<12) +#define SWF10_PIPEB_LFP (1<<11) +#define SWF10_PIPEB_EFP (1<<10) +#define SWF10_PIPEB_TV (1<<9) +#define SWF10_PIPEB_CRT (1<<8) +#define SWF10_PIPEA_LFP2 (1<<7) +#define SWF10_PIPEA_EFP2 (1<<6) +#define SWF10_PIPEA_TV2 (1<<5) +#define SWF10_PIPEA_CRT2 (1<<4) +#define SWF10_PIPEA_LFP (1<<3) +#define SWF10_PIPEA_EFP (1<<2) +#define SWF10_PIPEA_TV (1<<1) +#define SWF10_PIPEA_CRT (1<<0) + +#define SWF11_MEMORY_SIZE_SHIFT 16 +#define SWF11_SV_TEST_EN (1<<15) +#define SWF11_IS_AGP (1<<14) +#define SWF11_DISPLAY_HOLDOFF (1<<13) +#define SWF11_DPMS_REDUCED (1<<12) +#define SWF11_IS_VBE_MODE (1<<11) +#define SWF11_PIPEB_ACCESS (1<<10) /* 0 here means pipe a */ +#define SWF11_DPMS_MASK 0x07 +#define SWF11_DPMS_OFF (1<<2) +#define SWF11_DPMS_SUSPEND (1<<1) +#define SWF11_DPMS_STANDBY (1<<0) +#define SWF11_DPMS_ON 0 + +#define SWF14_GFX_PFIT_EN (1<<31) +#define SWF14_TEXT_PFIT_EN (1<<30) +#define SWF14_LID_STATUS_CLOSED (1<<29) /* 0 here means open */ +#define SWF14_POPUP_EN (1<<28) +#define SWF14_DISPLAY_HOLDOFF (1<<27) +#define SWF14_DISP_DETECT_EN (1<<26) +#define SWF14_DOCKING_STATUS_DOCKED (1<<25) /* 0 here means undocked */ +#define SWF14_DRIVER_STATUS (1<<24) +#define SWF14_OS_TYPE_WIN9X (1<<23) +#define SWF14_OS_TYPE_WINNT (1<<22) +/* 21:19 rsvd */ +#define SWF14_PM_TYPE_MASK 0x00070000 +#define SWF14_PM_ACPI_VIDEO (0x4 << 16) +#define SWF14_PM_ACPI (0x3 << 16) +#define SWF14_PM_APM_12 (0x2 << 16) +#define SWF14_PM_APM_11 (0x1 << 16) +#define SWF14_HK_REQUEST_MASK 0x0000ffff /* see GR18 6:3 for event type */ + /* if GR18 indicates a display switch */ +#define SWF14_DS_PIPEB_LFP2_EN (1<<15) +#define SWF14_DS_PIPEB_EFP2_EN (1<<14) +#define SWF14_DS_PIPEB_TV2_EN (1<<13) +#define SWF14_DS_PIPEB_CRT2_EN (1<<12) +#define SWF14_DS_PIPEB_LFP_EN (1<<11) +#define SWF14_DS_PIPEB_EFP_EN (1<<10) +#define SWF14_DS_PIPEB_TV_EN (1<<9) +#define SWF14_DS_PIPEB_CRT_EN (1<<8) +#define SWF14_DS_PIPEA_LFP2_EN (1<<7) +#define SWF14_DS_PIPEA_EFP2_EN (1<<6) +#define SWF14_DS_PIPEA_TV2_EN (1<<5) +#define SWF14_DS_PIPEA_CRT2_EN (1<<4) +#define SWF14_DS_PIPEA_LFP_EN (1<<3) +#define SWF14_DS_PIPEA_EFP_EN (1<<2) +#define SWF14_DS_PIPEA_TV_EN (1<<1) +#define SWF14_DS_PIPEA_CRT_EN (1<<0) + /* if GR18 indicates a panel fitting request */ +#define SWF14_PFIT_EN (1<<0) /* 0 means disable */ + /* if GR18 indicates an APM change request */ +#define SWF14_APM_HIBERNATE 0x4 +#define SWF14_APM_SUSPEND 0x3 +#define SWF14_APM_STANDBY 0x1 +#define SWF14_APM_RESTORE 0x0 + +/* Add the device class for LFP, TV, HDMI */ +#define DEVICE_TYPE_INT_LFP 0x1022 +#define DEVICE_TYPE_INT_TV 0x1009 +#define DEVICE_TYPE_HDMI 0x60D2 +#define DEVICE_TYPE_DP 0x68C6 +#define DEVICE_TYPE_eDP 0x78C6 + +/* define the DVO port for HDMI output type */ +#define DVO_B 1 +#define DVO_C 2 +#define DVO_D 3 + +/* define the PORT for DP output type */ +#define PORT_IDPB 7 +#define PORT_IDPC 8 +#define PORT_IDPD 9 + +#endif /* _I830_BIOS_H_ */ --- linux-3.5.0.orig/ubuntu/i915/i915_gem_execbuffer.c +++ linux-3.5.0/ubuntu/i915/i915_gem_execbuffer.c @@ -0,0 +1,1222 @@ +/* + * Copyright © 2008,2010 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" +#include + +struct eb_objects { + int and; + struct hlist_head buckets[0]; +}; + +static struct eb_objects * +eb_create(int size) +{ + struct eb_objects *eb; + int count = PAGE_SIZE / sizeof(struct hlist_head) / 2; + BUILD_BUG_ON(!is_power_of_2(PAGE_SIZE / sizeof(struct hlist_head))); + while (count > size) + count >>= 1; + eb = kzalloc(count*sizeof(struct hlist_head) + + sizeof(struct eb_objects), + GFP_KERNEL); + if (eb == NULL) + return eb; + + eb->and = count - 1; + return eb; +} + +static void +eb_reset(struct eb_objects *eb) +{ + memset(eb->buckets, 0, (eb->and+1)*sizeof(struct hlist_head)); +} + +static void +eb_add_object(struct eb_objects *eb, struct drm_i915_gem_object *obj) +{ + hlist_add_head(&obj->exec_node, + &eb->buckets[obj->exec_handle & eb->and]); +} + +static struct drm_i915_gem_object * +eb_get_object(struct eb_objects *eb, unsigned long handle) +{ + struct hlist_head *head; + struct hlist_node *node; + struct drm_i915_gem_object *obj; + + head = &eb->buckets[handle & eb->and]; + hlist_for_each(node, head) { + obj = hlist_entry(node, struct drm_i915_gem_object, exec_node); + if (obj->exec_handle == handle) + return obj; + } + + return NULL; +} + +static void +eb_destroy(struct eb_objects *eb) +{ + kfree(eb); +} + +static inline int use_cpu_reloc(struct drm_i915_gem_object *obj) +{ + return (obj->base.write_domain == I915_GEM_DOMAIN_CPU || + !obj->map_and_fenceable || + obj->cache_level != I915_CACHE_NONE); +} + +static int +i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj, + struct eb_objects *eb, + struct drm_i915_gem_relocation_entry *reloc) +{ + struct drm_device *dev = obj->base.dev; + struct drm_gem_object *target_obj; + struct drm_i915_gem_object *target_i915_obj; + uint32_t target_offset; + int ret = -EINVAL; + + /* we've already hold a reference to all valid objects */ + target_obj = &eb_get_object(eb, reloc->target_handle)->base; + if (unlikely(target_obj == NULL)) + return -ENOENT; + + target_i915_obj = to_intel_bo(target_obj); + target_offset = target_i915_obj->gtt_offset; + + /* Sandybridge PPGTT errata: We need a global gtt mapping for MI and + * pipe_control writes because the gpu doesn't properly redirect them + * through the ppgtt for non_secure batchbuffers. */ + if (unlikely(IS_GEN6(dev) && + reloc->write_domain == I915_GEM_DOMAIN_INSTRUCTION && + !target_i915_obj->has_global_gtt_mapping)) { + i915_gem_gtt_bind_object(target_i915_obj, + target_i915_obj->cache_level); + } + + /* Validate that the target is in a valid r/w GPU domain */ + if (unlikely(reloc->write_domain & (reloc->write_domain - 1))) { + DRM_DEBUG("reloc with multiple write domains: " + "obj %p target %d offset %d " + "read %08x write %08x", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->read_domains, + reloc->write_domain); + return ret; + } + if (unlikely((reloc->write_domain | reloc->read_domains) + & ~I915_GEM_GPU_DOMAINS)) { + DRM_DEBUG("reloc with read/write non-GPU domains: " + "obj %p target %d offset %d " + "read %08x write %08x", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->read_domains, + reloc->write_domain); + return ret; + } + if (unlikely(reloc->write_domain && target_obj->pending_write_domain && + reloc->write_domain != target_obj->pending_write_domain)) { + DRM_DEBUG("Write domain conflict: " + "obj %p target %d offset %d " + "new %08x old %08x\n", + obj, reloc->target_handle, + (int) reloc->offset, + reloc->write_domain, + target_obj->pending_write_domain); + return ret; + } + + target_obj->pending_read_domains |= reloc->read_domains; + target_obj->pending_write_domain |= reloc->write_domain; + + /* If the relocation already has the right value in it, no + * more work needs to be done. + */ + if (target_offset == reloc->presumed_offset) + return 0; + + /* Check that the relocation address is valid... */ + if (unlikely(reloc->offset > obj->base.size - 4)) { + DRM_DEBUG("Relocation beyond object bounds: " + "obj %p target %d offset %d size %d.\n", + obj, reloc->target_handle, + (int) reloc->offset, + (int) obj->base.size); + return ret; + } + if (unlikely(reloc->offset & 3)) { + DRM_DEBUG("Relocation not 4-byte aligned: " + "obj %p target %d offset %d.\n", + obj, reloc->target_handle, + (int) reloc->offset); + return ret; + } + + /* We can't wait for rendering with pagefaults disabled */ + if (obj->active && in_atomic()) + return -EFAULT; + + reloc->delta += target_offset; + if (use_cpu_reloc(obj)) { + uint32_t page_offset = reloc->offset & ~PAGE_MASK; + char *vaddr; + + ret = i915_gem_object_set_to_cpu_domain(obj, 1); + if (ret) + return ret; + + vaddr = kmap_atomic(i915_gem_object_get_page(obj, + reloc->offset >> PAGE_SHIFT)); + *(uint32_t *)(vaddr + page_offset) = reloc->delta; + kunmap_atomic(vaddr); + } else { + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t __iomem *reloc_entry; + void __iomem *reloc_page; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + return ret; + + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + + /* Map the page containing the relocation we're going to perform. */ + reloc->offset += obj->gtt_offset; + reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, + reloc->offset & PAGE_MASK); + reloc_entry = (uint32_t __iomem *) + (reloc_page + (reloc->offset & ~PAGE_MASK)); + iowrite32(reloc->delta, reloc_entry); + io_mapping_unmap_atomic(reloc_page); + } + + /* and update the user's relocation entry */ + reloc->presumed_offset = target_offset; + + return 0; +} + +static int +i915_gem_execbuffer_relocate_object(struct drm_i915_gem_object *obj, + struct eb_objects *eb) +{ +#define N_RELOC(x) ((x) / sizeof(struct drm_i915_gem_relocation_entry)) + struct drm_i915_gem_relocation_entry stack_reloc[N_RELOC(512)]; + struct drm_i915_gem_relocation_entry __user *user_relocs; + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + int remain, ret; + + user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr; + + remain = entry->relocation_count; + while (remain) { + struct drm_i915_gem_relocation_entry *r = stack_reloc; + int count = remain; + if (count > ARRAY_SIZE(stack_reloc)) + count = ARRAY_SIZE(stack_reloc); + remain -= count; + + if (__copy_from_user_inatomic(r, user_relocs, count*sizeof(r[0]))) + return -EFAULT; + + do { + u64 offset = r->presumed_offset; + + ret = i915_gem_execbuffer_relocate_entry(obj, eb, r); + if (ret) + return ret; + + if (r->presumed_offset != offset && + __copy_to_user_inatomic(&user_relocs->presumed_offset, + &r->presumed_offset, + sizeof(r->presumed_offset))) { + return -EFAULT; + } + + user_relocs++; + r++; + } while (--count); + } + + return 0; +#undef N_RELOC +} + +static int +i915_gem_execbuffer_relocate_object_slow(struct drm_i915_gem_object *obj, + struct eb_objects *eb, + struct drm_i915_gem_relocation_entry *relocs) +{ + const struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + int i, ret; + + for (i = 0; i < entry->relocation_count; i++) { + ret = i915_gem_execbuffer_relocate_entry(obj, eb, &relocs[i]); + if (ret) + return ret; + } + + return 0; +} + +static int +i915_gem_execbuffer_relocate(struct drm_device *dev, + struct eb_objects *eb, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + int ret = 0; + + /* This is the fast path and we cannot handle a pagefault whilst + * holding the struct mutex lest the user pass in the relocations + * contained within a mmaped bo. For in such a case we, the page + * fault handler would call i915_gem_fault() and we would try to + * acquire the struct mutex again. Obviously this is bad and so + * lockdep complains vehemently. + */ + pagefault_disable(); + list_for_each_entry(obj, objects, exec_list) { + ret = i915_gem_execbuffer_relocate_object(obj, eb); + if (ret) + break; + } + pagefault_enable(); + + return ret; +} + +#define __EXEC_OBJECT_HAS_PIN (1<<31) +#define __EXEC_OBJECT_HAS_FENCE (1<<30) + +static int +need_reloc_mappable(struct drm_i915_gem_object *obj) +{ + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + return entry->relocation_count && !use_cpu_reloc(obj); +} + +static int +i915_gem_execbuffer_reserve_object(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + bool has_fenced_gpu_access = INTEL_INFO(ring->dev)->gen < 4; + bool need_fence, need_mappable; + int ret; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + ret = i915_gem_object_pin(obj, entry->alignment, need_mappable, false); + if (ret) + return ret; + + entry->flags |= __EXEC_OBJECT_HAS_PIN; + + if (has_fenced_gpu_access) { + if (entry->flags & EXEC_OBJECT_NEEDS_FENCE) { + ret = i915_gem_object_get_fence(obj); + if (ret) + return ret; + + if (i915_gem_object_pin_fence(obj)) + entry->flags |= __EXEC_OBJECT_HAS_FENCE; + + obj->pending_fenced_gpu_access = true; + } + } + + /* Ensure ppgtt mapping exists if needed */ + if (dev_priv->mm.aliasing_ppgtt && !obj->has_aliasing_ppgtt_mapping) { + i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt, + obj, obj->cache_level); + + obj->has_aliasing_ppgtt_mapping = 1; + } + + entry->offset = obj->gtt_offset; + return 0; +} + +static void +i915_gem_execbuffer_unreserve_object(struct drm_i915_gem_object *obj) +{ + struct drm_i915_gem_exec_object2 *entry; + + if (!obj->gtt_space) + return; + + entry = obj->exec_entry; + + if (entry->flags & __EXEC_OBJECT_HAS_FENCE) + i915_gem_object_unpin_fence(obj); + + if (entry->flags & __EXEC_OBJECT_HAS_PIN) + i915_gem_object_unpin(obj); + + entry->flags &= ~(__EXEC_OBJECT_HAS_FENCE | __EXEC_OBJECT_HAS_PIN); +} + +static int +i915_gem_execbuffer_reserve(struct intel_ring_buffer *ring, + struct drm_file *file, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + struct list_head ordered_objects; + bool has_fenced_gpu_access = INTEL_INFO(ring->dev)->gen < 4; + int retry; + + INIT_LIST_HEAD(&ordered_objects); + while (!list_empty(objects)) { + struct drm_i915_gem_exec_object2 *entry; + bool need_fence, need_mappable; + + obj = list_first_entry(objects, + struct drm_i915_gem_object, + exec_list); + entry = obj->exec_entry; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + if (need_mappable) + list_move(&obj->exec_list, &ordered_objects); + else + list_move_tail(&obj->exec_list, &ordered_objects); + + obj->base.pending_read_domains = 0; + obj->base.pending_write_domain = 0; + obj->pending_fenced_gpu_access = false; + } + list_splice(&ordered_objects, objects); + + /* Attempt to pin all of the buffers into the GTT. + * This is done in 3 phases: + * + * 1a. Unbind all objects that do not match the GTT constraints for + * the execbuffer (fenceable, mappable, alignment etc). + * 1b. Increment pin count for already bound objects. + * 2. Bind new objects. + * 3. Decrement pin count. + * + * This avoid unnecessary unbinding of later objects in order to make + * room for the earlier objects *unless* we need to defragment. + */ + retry = 0; + do { + int ret = 0; + + /* Unbind any ill-fitting objects or pin. */ + list_for_each_entry(obj, objects, exec_list) { + struct drm_i915_gem_exec_object2 *entry = obj->exec_entry; + bool need_fence, need_mappable; + + if (!obj->gtt_space) + continue; + + need_fence = + has_fenced_gpu_access && + entry->flags & EXEC_OBJECT_NEEDS_FENCE && + obj->tiling_mode != I915_TILING_NONE; + need_mappable = need_fence || need_reloc_mappable(obj); + + if ((entry->alignment && obj->gtt_offset & (entry->alignment - 1)) || + (need_mappable && !obj->map_and_fenceable)) + ret = i915_gem_object_unbind(obj); + else + ret = i915_gem_execbuffer_reserve_object(obj, ring); + if (ret) + goto err; + } + + /* Bind fresh objects */ + list_for_each_entry(obj, objects, exec_list) { + if (obj->gtt_space) + continue; + + ret = i915_gem_execbuffer_reserve_object(obj, ring); + if (ret) + goto err; + } + +err: /* Decrement pin count for bound objects */ + list_for_each_entry(obj, objects, exec_list) + i915_gem_execbuffer_unreserve_object(obj); + + if (ret != -ENOSPC || retry++) + return ret; + + ret = i915_gem_evict_everything(ring->dev); + if (ret) + return ret; + } while (1); +} + +static int +i915_gem_execbuffer_relocate_slow(struct drm_device *dev, + struct drm_file *file, + struct intel_ring_buffer *ring, + struct list_head *objects, + struct eb_objects *eb, + struct drm_i915_gem_exec_object2 *exec, + int count) +{ + struct drm_i915_gem_relocation_entry *reloc; + struct drm_i915_gem_object *obj; + int *reloc_offset; + int i, total, ret; + + /* We may process another execbuffer during the unlock... */ + while (!list_empty(objects)) { + obj = list_first_entry(objects, + struct drm_i915_gem_object, + exec_list); + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + mutex_unlock(&dev->struct_mutex); + + total = 0; + for (i = 0; i < count; i++) + total += exec[i].relocation_count; + + reloc_offset = drm_malloc_ab(count, sizeof(*reloc_offset)); + reloc = drm_malloc_ab(total, sizeof(*reloc)); + if (reloc == NULL || reloc_offset == NULL) { + drm_free_large(reloc); + drm_free_large(reloc_offset); + mutex_lock(&dev->struct_mutex); + return -ENOMEM; + } + + total = 0; + for (i = 0; i < count; i++) { + struct drm_i915_gem_relocation_entry __user *user_relocs; + + user_relocs = (void __user *)(uintptr_t)exec[i].relocs_ptr; + + if (copy_from_user(reloc+total, user_relocs, + exec[i].relocation_count * sizeof(*reloc))) { + ret = -EFAULT; + mutex_lock(&dev->struct_mutex); + goto err; + } + + reloc_offset[i] = total; + total += exec[i].relocation_count; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) { + mutex_lock(&dev->struct_mutex); + goto err; + } + + /* reacquire the objects */ + eb_reset(eb); + for (i = 0; i < count; i++) { + obj = to_intel_bo(drm_gem_object_lookup(dev, file, + exec[i].handle)); + if (&obj->base == NULL) { + DRM_DEBUG("Invalid object handle %d at index %d\n", + exec[i].handle, i); + ret = -ENOENT; + goto err; + } + + list_add_tail(&obj->exec_list, objects); + obj->exec_handle = exec[i].handle; + obj->exec_entry = &exec[i]; + eb_add_object(eb, obj); + } + + ret = i915_gem_execbuffer_reserve(ring, file, objects); + if (ret) + goto err; + + list_for_each_entry(obj, objects, exec_list) { + int offset = obj->exec_entry - exec; + ret = i915_gem_execbuffer_relocate_object_slow(obj, eb, + reloc + reloc_offset[offset]); + if (ret) + goto err; + } + + /* Leave the user relocations as are, this is the painfully slow path, + * and we want to avoid the complication of dropping the lock whilst + * having buffers reserved in the aperture and so causing spurious + * ENOSPC for random operations. + */ + +err: + drm_free_large(reloc); + drm_free_large(reloc_offset); + return ret; +} + +static int +i915_gem_execbuffer_wait_for_flips(struct intel_ring_buffer *ring, u32 flips) +{ + u32 plane, flip_mask; + int ret; + + /* Check for any pending flips. As we only maintain a flip queue depth + * of 1, we can simply insert a WAIT for the next display flip prior + * to executing the batch and avoid stalling the CPU. + */ + + for (plane = 0; flips >> plane; plane++) { + if (((flips >> plane) & 1) == 0) + continue; + + if (plane) + flip_mask = MI_WAIT_FOR_PLANE_B_FLIP; + else + flip_mask = MI_WAIT_FOR_PLANE_A_FLIP; + + ret = intel_ring_begin(ring, 2); + if (ret) + return ret; + + intel_ring_emit(ring, MI_WAIT_FOR_EVENT | flip_mask); + intel_ring_emit(ring, MI_NOOP); + intel_ring_advance(ring); + } + + return 0; +} + +static int +i915_gem_execbuffer_move_to_gpu(struct intel_ring_buffer *ring, + struct list_head *objects) +{ + struct drm_i915_gem_object *obj; + uint32_t flush_domains = 0; + uint32_t flips = 0; + int ret; + + list_for_each_entry(obj, objects, exec_list) { + ret = i915_gem_object_sync(obj, ring); + if (ret) + return ret; + + if (obj->base.write_domain & I915_GEM_DOMAIN_CPU) + i915_gem_clflush_object(obj); + + if (obj->base.pending_write_domain) + flips |= atomic_read(&obj->pending_flip); + + flush_domains |= obj->base.write_domain; + } + + if (flips) { + ret = i915_gem_execbuffer_wait_for_flips(ring, flips); + if (ret) + return ret; + } + + if (flush_domains & I915_GEM_DOMAIN_CPU) + i915_gem_chipset_flush(ring->dev); + + if (flush_domains & I915_GEM_DOMAIN_GTT) + wmb(); + + /* Unconditionally invalidate gpu caches and ensure that we do flush + * any residual writes from the previous batch. + */ + return intel_ring_invalidate_all_caches(ring); +} + +static bool +i915_gem_check_execbuffer(struct drm_i915_gem_execbuffer2 *exec) +{ + return ((exec->batch_start_offset | exec->batch_len) & 0x7) == 0; +} + +static int +validate_exec_list(struct drm_i915_gem_exec_object2 *exec, + int count) +{ + int i; + + for (i = 0; i < count; i++) { + char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr; + int length; /* limited by fault_in_pages_readable() */ + + /* First check for malicious input causing overflow */ + if (exec[i].relocation_count > + INT_MAX / sizeof(struct drm_i915_gem_relocation_entry)) + return -EINVAL; + + length = exec[i].relocation_count * + sizeof(struct drm_i915_gem_relocation_entry); + if (!access_ok(VERIFY_READ, ptr, length)) + return -EFAULT; + + /* we may also need to update the presumed offsets */ + if (!access_ok(VERIFY_WRITE, ptr, length)) + return -EFAULT; + + if (fault_in_multipages_readable(ptr, length)) + return -EFAULT; + } + + return 0; +} + +static void +i915_gem_execbuffer_move_to_active(struct list_head *objects, + struct intel_ring_buffer *ring, + u32 seqno) +{ + struct drm_i915_gem_object *obj; + + list_for_each_entry(obj, objects, exec_list) { + u32 old_read = obj->base.read_domains; + u32 old_write = obj->base.write_domain; + + obj->base.read_domains = obj->base.pending_read_domains; + obj->base.write_domain = obj->base.pending_write_domain; + obj->fenced_gpu_access = obj->pending_fenced_gpu_access; + + i915_gem_object_move_to_active(obj, ring, seqno); + if (obj->base.write_domain) { + obj->dirty = 1; + obj->last_write_seqno = seqno; + if (obj->pin_count) /* check for potential scanout */ + intel_mark_fb_busy(obj); + } + + trace_i915_gem_object_change_domain(obj, old_read, old_write); + } +} + +static void +i915_gem_execbuffer_retire_commands(struct drm_device *dev, + struct drm_file *file, + struct intel_ring_buffer *ring) +{ + /* Unconditionally force add_request to emit a full flush. */ + ring->gpu_caches_dirty = true; + + /* Add a breadcrumb for the completion of the batch buffer */ + (void)i915_add_request(ring, file, NULL); +} + +static int +i915_reset_gen7_sol_offsets(struct drm_device *dev, + struct intel_ring_buffer *ring) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret, i; + + if (!IS_GEN7(dev) || ring != &dev_priv->ring[RCS]) + return 0; + + ret = intel_ring_begin(ring, 4 * 3); + if (ret) + return ret; + + for (i = 0; i < 4; i++) { + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, GEN7_SO_WRITE_OFFSET(i)); + intel_ring_emit(ring, 0); + } + + intel_ring_advance(ring); + + return 0; +} + +static int +i915_gem_do_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file, + struct drm_i915_gem_execbuffer2 *args, + struct drm_i915_gem_exec_object2 *exec) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct list_head objects; + struct eb_objects *eb; + struct drm_i915_gem_object *batch_obj; + struct drm_clip_rect *cliprects = NULL; + struct intel_ring_buffer *ring; + u32 ctx_id = i915_execbuffer2_get_context_id(*args); + u32 exec_start, exec_len; + u32 seqno; + u32 mask; + u32 flags; + int ret, mode, i; + + if (!i915_gem_check_execbuffer(args)) { + DRM_DEBUG("execbuf with invalid offset/length\n"); + return -EINVAL; + } + + ret = validate_exec_list(exec, args->buffer_count); + if (ret) + return ret; + + flags = 0; + if (args->flags & I915_EXEC_SECURE) { + if (!file->is_master || !capable(CAP_SYS_ADMIN)) + return -EPERM; + + flags |= I915_DISPATCH_SECURE; + } + + switch (args->flags & I915_EXEC_RING_MASK) { + case I915_EXEC_DEFAULT: + case I915_EXEC_RENDER: + ring = &dev_priv->ring[RCS]; + break; + case I915_EXEC_BSD: + ring = &dev_priv->ring[VCS]; + if (ctx_id != 0) { + DRM_DEBUG("Ring %s doesn't support contexts\n", + ring->name); + return -EPERM; + } + break; + case I915_EXEC_BLT: + ring = &dev_priv->ring[BCS]; + if (ctx_id != 0) { + DRM_DEBUG("Ring %s doesn't support contexts\n", + ring->name); + return -EPERM; + } + break; + default: + DRM_DEBUG("execbuf with unknown ring: %d\n", + (int)(args->flags & I915_EXEC_RING_MASK)); + return -EINVAL; + } + if (!intel_ring_initialized(ring)) { + DRM_DEBUG("execbuf with invalid ring: %d\n", + (int)(args->flags & I915_EXEC_RING_MASK)); + return -EINVAL; + } + + mode = args->flags & I915_EXEC_CONSTANTS_MASK; + mask = I915_EXEC_CONSTANTS_MASK; + switch (mode) { + case I915_EXEC_CONSTANTS_REL_GENERAL: + case I915_EXEC_CONSTANTS_ABSOLUTE: + case I915_EXEC_CONSTANTS_REL_SURFACE: + if (ring == &dev_priv->ring[RCS] && + mode != dev_priv->relative_constants_mode) { + if (INTEL_INFO(dev)->gen < 4) + return -EINVAL; + + if (INTEL_INFO(dev)->gen > 5 && + mode == I915_EXEC_CONSTANTS_REL_SURFACE) + return -EINVAL; + + /* The HW changed the meaning on this bit on gen6 */ + if (INTEL_INFO(dev)->gen >= 6) + mask &= ~I915_EXEC_CONSTANTS_REL_SURFACE; + } + break; + default: + DRM_DEBUG("execbuf with unknown constants: %d\n", mode); + return -EINVAL; + } + + if (args->buffer_count < 1) { + DRM_DEBUG("execbuf with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + if (args->num_cliprects != 0) { + if (ring != &dev_priv->ring[RCS]) { + DRM_DEBUG("clip rectangles are only valid with the render ring\n"); + return -EINVAL; + } + + if (INTEL_INFO(dev)->gen >= 5) { + DRM_DEBUG("clip rectangles are only valid on pre-gen5\n"); + return -EINVAL; + } + + if (args->num_cliprects > UINT_MAX / sizeof(*cliprects)) { + DRM_DEBUG("execbuf with %u cliprects\n", + args->num_cliprects); + return -EINVAL; + } + + cliprects = kmalloc(args->num_cliprects * sizeof(*cliprects), + GFP_KERNEL); + if (cliprects == NULL) { + ret = -ENOMEM; + goto pre_mutex_err; + } + + if (copy_from_user(cliprects, + (struct drm_clip_rect __user *)(uintptr_t) + args->cliprects_ptr, + sizeof(*cliprects)*args->num_cliprects)) { + ret = -EFAULT; + goto pre_mutex_err; + } + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto pre_mutex_err; + + if (dev_priv->mm.suspended) { + mutex_unlock(&dev->struct_mutex); + ret = -EBUSY; + goto pre_mutex_err; + } + + eb = eb_create(args->buffer_count); + if (eb == NULL) { + mutex_unlock(&dev->struct_mutex); + ret = -ENOMEM; + goto pre_mutex_err; + } + + /* Look up object handles */ + INIT_LIST_HEAD(&objects); + for (i = 0; i < args->buffer_count; i++) { + struct drm_i915_gem_object *obj; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, + exec[i].handle)); + if (&obj->base == NULL) { + DRM_DEBUG("Invalid object handle %d at index %d\n", + exec[i].handle, i); + /* prevent error path from reading uninitialized data */ + ret = -ENOENT; + goto err; + } + + if (!list_empty(&obj->exec_list)) { + DRM_DEBUG("Object %p [handle %d, index %d] appears more than once in object list\n", + obj, exec[i].handle, i); + ret = -EINVAL; + goto err; + } + + list_add_tail(&obj->exec_list, &objects); + obj->exec_handle = exec[i].handle; + obj->exec_entry = &exec[i]; + eb_add_object(eb, obj); + } + + /* take note of the batch buffer before we might reorder the lists */ + batch_obj = list_entry(objects.prev, + struct drm_i915_gem_object, + exec_list); + + /* Move the objects en-masse into the GTT, evicting if necessary. */ + ret = i915_gem_execbuffer_reserve(ring, file, &objects); + if (ret) + goto err; + + /* The objects are in their final locations, apply the relocations. */ + ret = i915_gem_execbuffer_relocate(dev, eb, &objects); + if (ret) { + if (ret == -EFAULT) { + ret = i915_gem_execbuffer_relocate_slow(dev, file, ring, + &objects, eb, + exec, + args->buffer_count); + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + } + if (ret) + goto err; + } + + /* Set the pending read domains for the batch buffer to COMMAND */ + if (batch_obj->base.pending_write_domain) { + DRM_DEBUG("Attempting to use self-modifying batch buffer\n"); + ret = -EINVAL; + goto err; + } + batch_obj->base.pending_read_domains |= I915_GEM_DOMAIN_COMMAND; + + /* snb/ivb/vlv conflate the "batch in ppgtt" bit with the "non-secure + * batch" bit. Hence we need to pin secure batches into the global gtt. + * hsw should have this fixed, but let's be paranoid and do it + * unconditionally for now. */ + if (flags & I915_DISPATCH_SECURE && !batch_obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(batch_obj, batch_obj->cache_level); + + ret = i915_gem_execbuffer_move_to_gpu(ring, &objects); + if (ret) + goto err; + + seqno = i915_gem_next_request_seqno(ring); + for (i = 0; i < ARRAY_SIZE(ring->sync_seqno); i++) { + if (seqno < ring->sync_seqno[i]) { + /* The GPU can not handle its semaphore value wrapping, + * so every billion or so execbuffers, we need to stall + * the GPU in order to reset the counters. + */ + ret = i915_gpu_idle(dev); + if (ret) + goto err; + i915_gem_retire_requests(dev); + + BUG_ON(ring->sync_seqno[i]); + } + } + + ret = i915_switch_context(ring, file, ctx_id); + if (ret) + goto err; + + if (ring == &dev_priv->ring[RCS] && + mode != dev_priv->relative_constants_mode) { + ret = intel_ring_begin(ring, 4); + if (ret) + goto err; + + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_LOAD_REGISTER_IMM(1)); + intel_ring_emit(ring, INSTPM); + intel_ring_emit(ring, mask << 16 | mode); + intel_ring_advance(ring); + + dev_priv->relative_constants_mode = mode; + } + + if (args->flags & I915_EXEC_GEN7_SOL_RESET) { + ret = i915_reset_gen7_sol_offsets(dev, ring); + if (ret) + goto err; + } + + trace_i915_gem_ring_dispatch(ring, seqno, flags); + + exec_start = batch_obj->gtt_offset + args->batch_start_offset; + exec_len = args->batch_len; + if (cliprects) { + for (i = 0; i < args->num_cliprects; i++) { + ret = i915_emit_box(dev, &cliprects[i], + args->DR1, args->DR4); + if (ret) + goto err; + + ret = ring->dispatch_execbuffer(ring, + exec_start, exec_len, + flags); + if (ret) + goto err; + } + } else { + ret = ring->dispatch_execbuffer(ring, + exec_start, exec_len, + flags); + if (ret) + goto err; + } + + i915_gem_execbuffer_move_to_active(&objects, ring, seqno); + i915_gem_execbuffer_retire_commands(dev, file, ring); + +err: + eb_destroy(eb); + while (!list_empty(&objects)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&objects, + struct drm_i915_gem_object, + exec_list); + list_del_init(&obj->exec_list); + drm_gem_object_unreference(&obj->base); + } + + mutex_unlock(&dev->struct_mutex); + +pre_mutex_err: + kfree(cliprects); + return ret; +} + +/* + * Legacy execbuffer just creates an exec2 list from the original exec object + * list array and passes it to the real function. + */ +int +i915_gem_execbuffer(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_execbuffer *args = data; + struct drm_i915_gem_execbuffer2 exec2; + struct drm_i915_gem_exec_object *exec_list = NULL; + struct drm_i915_gem_exec_object2 *exec2_list = NULL; + int ret, i; + + if (args->buffer_count < 1) { + DRM_DEBUG("execbuf with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + /* Copy in the exec list from userland */ + exec_list = drm_malloc_ab(sizeof(*exec_list), args->buffer_count); + exec2_list = drm_malloc_ab(sizeof(*exec2_list), args->buffer_count); + if (exec_list == NULL || exec2_list == NULL) { + DRM_DEBUG("Failed to allocate exec list for %d buffers\n", + args->buffer_count); + drm_free_large(exec_list); + drm_free_large(exec2_list); + return -ENOMEM; + } + ret = copy_from_user(exec_list, + (void __user *)(uintptr_t)args->buffers_ptr, + sizeof(*exec_list) * args->buffer_count); + if (ret != 0) { + DRM_DEBUG("copy %d exec entries failed %d\n", + args->buffer_count, ret); + drm_free_large(exec_list); + drm_free_large(exec2_list); + return -EFAULT; + } + + for (i = 0; i < args->buffer_count; i++) { + exec2_list[i].handle = exec_list[i].handle; + exec2_list[i].relocation_count = exec_list[i].relocation_count; + exec2_list[i].relocs_ptr = exec_list[i].relocs_ptr; + exec2_list[i].alignment = exec_list[i].alignment; + exec2_list[i].offset = exec_list[i].offset; + if (INTEL_INFO(dev)->gen < 4) + exec2_list[i].flags = EXEC_OBJECT_NEEDS_FENCE; + else + exec2_list[i].flags = 0; + } + + exec2.buffers_ptr = args->buffers_ptr; + exec2.buffer_count = args->buffer_count; + exec2.batch_start_offset = args->batch_start_offset; + exec2.batch_len = args->batch_len; + exec2.DR1 = args->DR1; + exec2.DR4 = args->DR4; + exec2.num_cliprects = args->num_cliprects; + exec2.cliprects_ptr = args->cliprects_ptr; + exec2.flags = I915_EXEC_RENDER; + i915_execbuffer2_set_context_id(exec2, 0); + + ret = i915_gem_do_execbuffer(dev, data, file, &exec2, exec2_list); + if (!ret) { + /* 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((void __user *)(uintptr_t)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); + } + } + + drm_free_large(exec_list); + drm_free_large(exec2_list); + return ret; +} + +int +i915_gem_execbuffer2(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_execbuffer2 *args = data; + struct drm_i915_gem_exec_object2 *exec2_list = NULL; + int ret; + + if (args->buffer_count < 1 || + args->buffer_count > UINT_MAX / sizeof(*exec2_list)) { + DRM_DEBUG("execbuf2 with %d buffers\n", args->buffer_count); + return -EINVAL; + } + + exec2_list = kmalloc(sizeof(*exec2_list)*args->buffer_count, + GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY); + if (exec2_list == NULL) + exec2_list = drm_malloc_ab(sizeof(*exec2_list), + args->buffer_count); + if (exec2_list == NULL) { + DRM_DEBUG("Failed to allocate exec list for %d buffers\n", + args->buffer_count); + return -ENOMEM; + } + ret = copy_from_user(exec2_list, + (struct drm_i915_relocation_entry __user *) + (uintptr_t) args->buffers_ptr, + sizeof(*exec2_list) * args->buffer_count); + if (ret != 0) { + DRM_DEBUG("copy %d exec entries failed %d\n", + args->buffer_count, ret); + drm_free_large(exec2_list); + return -EFAULT; + } + + ret = i915_gem_do_execbuffer(dev, data, file, args, exec2_list); + if (!ret) { + /* Copy the new buffer offsets back to the user's exec list. */ + ret = copy_to_user((void __user *)(uintptr_t)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); + } + } + + drm_free_large(exec2_list); + return ret; +} --- linux-3.5.0.orig/ubuntu/i915/intel_i2c.c +++ linux-3.5.0/ubuntu/i915/intel_i2c.c @@ -0,0 +1,551 @@ +/* + * Copyright (c) 2006 Dave Airlie + * Copyright © 2006-2008,2010 Intel Corporation + * Jesse Barnes + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Chris Wilson + */ +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +struct gmbus_port { + const char *name; + int reg; +}; + +static const struct gmbus_port gmbus_ports[] = { + { "ssc", GPIOB }, + { "vga", GPIOA }, + { "panel", GPIOC }, + { "dpc", GPIOD }, + { "dpb", GPIOE }, + { "dpd", GPIOF }, +}; + +/* Intel GPIO access functions */ + +#define I2C_RISEFALL_TIME 10 + +static inline struct intel_gmbus * +to_intel_gmbus(struct i2c_adapter *i2c) +{ + return container_of(i2c, struct intel_gmbus, adapter); +} + +void +intel_i2c_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + I915_WRITE(dev_priv->gpio_mmio_base + GMBUS0, 0); +} + +static void intel_i2c_quirk_set(struct drm_i915_private *dev_priv, bool enable) +{ + u32 val; + + /* When using bit bashing for I2C, this bit needs to be set to 1 */ + if (!IS_PINEVIEW(dev_priv->dev)) + return; + + val = I915_READ(DSPCLK_GATE_D); + if (enable) + val |= DPCUNIT_CLOCK_GATE_DISABLE; + else + val &= ~DPCUNIT_CLOCK_GATE_DISABLE; + I915_WRITE(DSPCLK_GATE_D, val); +} + +static u32 get_reserved(struct intel_gmbus *bus) +{ + struct drm_i915_private *dev_priv = bus->dev_priv; + struct drm_device *dev = dev_priv->dev; + u32 reserved = 0; + + /* On most chips, these bits must be preserved in software. */ + if (!IS_I830(dev) && !IS_845G(dev)) + reserved = I915_READ_NOTRACE(bus->gpio_reg) & + (GPIO_DATA_PULLUP_DISABLE | + GPIO_CLOCK_PULLUP_DISABLE); + + return reserved; +} + +static int get_clock(void *data) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_CLOCK_DIR_MASK); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved); + return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_CLOCK_VAL_IN) != 0; +} + +static int get_data(void *data) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); + I915_WRITE_NOTRACE(bus->gpio_reg, reserved); + return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; +} + +static void set_clock(void *data, int state_high) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + u32 clock_bits; + + if (state_high) + clock_bits = GPIO_CLOCK_DIR_IN | GPIO_CLOCK_DIR_MASK; + else + clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK | + GPIO_CLOCK_VAL_MASK; + + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | clock_bits); + POSTING_READ(bus->gpio_reg); +} + +static void set_data(void *data, int state_high) +{ + struct intel_gmbus *bus = data; + struct drm_i915_private *dev_priv = bus->dev_priv; + u32 reserved = get_reserved(bus); + u32 data_bits; + + if (state_high) + data_bits = GPIO_DATA_DIR_IN | GPIO_DATA_DIR_MASK; + else + data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | + GPIO_DATA_VAL_MASK; + + I915_WRITE_NOTRACE(bus->gpio_reg, reserved | data_bits); + POSTING_READ(bus->gpio_reg); +} + +static int +intel_gpio_pre_xfer(struct i2c_adapter *adapter) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + intel_i2c_reset(dev_priv->dev); + intel_i2c_quirk_set(dev_priv, true); + set_data(bus, 1); + set_clock(bus, 1); + udelay(I2C_RISEFALL_TIME); + return 0; +} + +static void +intel_gpio_post_xfer(struct i2c_adapter *adapter) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + + set_data(bus, 1); + set_clock(bus, 1); + intel_i2c_quirk_set(dev_priv, false); +} + +static void +intel_gpio_setup(struct intel_gmbus *bus, u32 pin) +{ + struct drm_i915_private *dev_priv = bus->dev_priv; + struct i2c_algo_bit_data *algo; + + algo = &bus->bit_algo; + + /* -1 to map pin pair to gmbus index */ + bus->gpio_reg = dev_priv->gpio_mmio_base + gmbus_ports[pin - 1].reg; + + bus->adapter.algo_data = algo; + algo->setsda = set_data; + algo->setscl = set_clock; + algo->getsda = get_data; + algo->getscl = get_clock; + algo->pre_xfer = intel_gpio_pre_xfer; + algo->post_xfer = intel_gpio_post_xfer; + algo->udelay = I2C_RISEFALL_TIME; + algo->timeout = usecs_to_jiffies(2200); + algo->data = bus; +} + +static int +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; + + I915_WRITE(GMBUS1 + reg_offset, + gmbus1_index | + GMBUS_CYCLE_WAIT | + (len << GMBUS_BYTE_COUNT_SHIFT) | + (msg->addr << GMBUS_SLAVE_ADDR_SHIFT) | + GMBUS_SLAVE_READ | GMBUS_SW_RDY); + while (len) { + int ret; + u32 val, loop = 0; + u32 gmbus2; + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_RDY), + 50); + if (ret) + return -ETIMEDOUT; + if (gmbus2 & GMBUS_SATOER) + return -ENXIO; + + val = I915_READ(GMBUS3 + reg_offset); + do { + *buf++ = val & 0xff; + val >>= 8; + } while (--len && ++loop < 4); + } + + return 0; +} + +static int +gmbus_xfer_write(struct drm_i915_private *dev_priv, struct i2c_msg *msg) +{ + int reg_offset = dev_priv->gpio_mmio_base; + u16 len = msg->len; + u8 *buf = msg->buf; + u32 val, loop; + + val = loop = 0; + while (len && loop < 4) { + val |= *buf++ << (8 * loop++); + len -= 1; + } + + 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) | + GMBUS_SLAVE_WRITE | GMBUS_SW_RDY); + while (len) { + int ret; + u32 gmbus2; + + val = loop = 0; + do { + val |= *buf++ << (8 * loop); + } while (--len && ++loop < 4); + + I915_WRITE(GMBUS3 + reg_offset, val); + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_RDY), + 50); + if (ret) + return -ETIMEDOUT; + if (gmbus2 & GMBUS_SATOER) + return -ENXIO; + } + return 0; +} + +/* + * The gmbus controller can combine a 1 or 2 byte write with a read that + * immediately follows it by using an "INDEX" cycle. + */ +static bool +gmbus_is_index_read(struct i2c_msg *msgs, int i, int num) +{ + return (i + 1 < num && + !(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 && + (msgs[i + 1].flags & I2C_M_RD)); +} + +static int +gmbus_xfer_index_read(struct drm_i915_private *dev_priv, struct i2c_msg *msgs) +{ + int reg_offset = dev_priv->gpio_mmio_base; + u32 gmbus1_index = 0; + u32 gmbus5 = 0; + int ret; + + if (msgs[0].len == 2) + gmbus5 = GMBUS_2BYTE_INDEX_EN | + msgs[0].buf[1] | (msgs[0].buf[0] << 8); + if (msgs[0].len == 1) + gmbus1_index = GMBUS_CYCLE_INDEX | + (msgs[0].buf[0] << GMBUS_SLAVE_INDEX_SHIFT); + + /* GMBUS5 holds 16-bit index */ + if (gmbus5) + I915_WRITE(GMBUS5 + reg_offset, gmbus5); + + ret = gmbus_xfer_read(dev_priv, &msgs[1], gmbus1_index); + + /* Clear GMBUS5 after each index transfer */ + if (gmbus5) + I915_WRITE(GMBUS5 + reg_offset, 0); + + return ret; +} + +static int +gmbus_xfer(struct i2c_adapter *adapter, + struct i2c_msg *msgs, + int num) +{ + struct intel_gmbus *bus = container_of(adapter, + struct intel_gmbus, + adapter); + struct drm_i915_private *dev_priv = bus->dev_priv; + int i, reg_offset; + int ret = 0; + + mutex_lock(&dev_priv->gmbus_mutex); + + if (bus->force_bit) { + ret = i2c_bit_algo.master_xfer(adapter, msgs, num); + goto out; + } + + reg_offset = dev_priv->gpio_mmio_base; + + I915_WRITE(GMBUS0 + reg_offset, bus->reg0); + + for (i = 0; i < num; i++) { + u32 gmbus2; + + 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 */ + } else if (msgs[i].flags & I2C_M_RD) { + ret = gmbus_xfer_read(dev_priv, &msgs[i], 0); + } else { + ret = gmbus_xfer_write(dev_priv, &msgs[i]); + } + + if (ret == -ETIMEDOUT) + goto timeout; + if (ret == -ENXIO) + goto clear_err; + + ret = wait_for((gmbus2 = I915_READ(GMBUS2 + reg_offset)) & + (GMBUS_SATOER | GMBUS_HW_WAIT_PHASE), + 50); + if (ret) + goto timeout; + if (gmbus2 & GMBUS_SATOER) + goto clear_err; + } + + /* Generate a STOP condition on the bus. Note that gmbus can't generata + * a STOP on the very first cycle. To simplify the code we + * unconditionally generate the STOP condition with an additional gmbus + * cycle. */ + I915_WRITE(GMBUS1 + reg_offset, GMBUS_CYCLE_STOP | GMBUS_SW_RDY); + + /* Mark the GMBUS interface as disabled after waiting for idle. + * We will re-enable it at the start of the next xfer, + * till then let it sleep. + */ + if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, + 10)) { + DRM_DEBUG_KMS("GMBUS [%s] timed out waiting for idle\n", + adapter->name); + ret = -ETIMEDOUT; + } + I915_WRITE(GMBUS0 + reg_offset, 0); + ret = ret ?: i; + goto out; + +clear_err: + /* + * Wait for bus to IDLE before clearing NAK. + * If we clear the NAK while bus is still active, then it will stay + * active and the next transaction may fail. + * + * If no ACK is received during the address phase of a transaction, the + * adapter must report -ENXIO. It is not clear what to return if no ACK + * is received at other times. But we have to be careful to not return + * spurious -ENXIO because that will prevent i2c and drm edid functions + * from retrying. So return -ENXIO only when gmbus properly quiescents - + * timing out seems to happen when there _is_ a ddc chip present, but + * it's slow responding and only answers on the 2nd retry. + */ + ret = -ENXIO; + if (wait_for((I915_READ(GMBUS2 + reg_offset) & GMBUS_ACTIVE) == 0, + 10)) { + DRM_DEBUG_KMS("GMBUS [%s] timed out after NAK\n", + adapter->name); + ret = -ETIMEDOUT; + } + + /* Toggle the Software Clear Interrupt bit. This has the effect + * of resetting the GMBUS controller and so clearing the + * BUS_ERROR raised by the slave's NAK. + */ + I915_WRITE(GMBUS1 + reg_offset, GMBUS_SW_CLR_INT); + I915_WRITE(GMBUS1 + reg_offset, 0); + I915_WRITE(GMBUS0 + reg_offset, 0); + + DRM_DEBUG_KMS("GMBUS [%s] NAK for addr: %04x %c(%d)\n", + adapter->name, msgs[i].addr, + (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); + + goto out; + +timeout: + DRM_INFO("GMBUS [%s] timed out, falling back to bit banging on pin %d\n", + bus->adapter.name, bus->reg0 & 0xff); + I915_WRITE(GMBUS0 + reg_offset, 0); + + /* Hardware may not support GMBUS over these pins? Try GPIO bitbanging instead. */ + bus->force_bit = 1; + ret = i2c_bit_algo.master_xfer(adapter, msgs, num); + +out: + mutex_unlock(&dev_priv->gmbus_mutex); + return ret; +} + +static u32 gmbus_func(struct i2c_adapter *adapter) +{ + return i2c_bit_algo.functionality(adapter) & + (I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL | + /* I2C_FUNC_10BIT_ADDR | */ + I2C_FUNC_SMBUS_READ_BLOCK_DATA | + I2C_FUNC_SMBUS_BLOCK_PROC_CALL); +} + +static const struct i2c_algorithm gmbus_algorithm = { + .master_xfer = gmbus_xfer, + .functionality = gmbus_func +}; + +/** + * intel_gmbus_setup - instantiate all Intel i2c GMBuses + * @dev: DRM device + */ +int intel_setup_gmbus(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int ret, i; + + if (HAS_PCH_SPLIT(dev)) + dev_priv->gpio_mmio_base = PCH_GPIOA - GPIOA; + else + dev_priv->gpio_mmio_base = 0; + + mutex_init(&dev_priv->gmbus_mutex); + + for (i = 0; i < GMBUS_NUM_PORTS; i++) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + u32 port = i + 1; /* +1 to map gmbus index to pin pair */ + + bus->adapter.owner = THIS_MODULE; + bus->adapter.class = I2C_CLASS_DDC; + snprintf(bus->adapter.name, + sizeof(bus->adapter.name), + "i915 gmbus %s", + gmbus_ports[i].name); + + bus->adapter.dev.parent = &dev->pdev->dev; + bus->dev_priv = dev_priv; + + bus->adapter.algo = &gmbus_algorithm; + + /* By default use a conservative clock rate */ + bus->reg0 = port | GMBUS_RATE_100KHZ; + + /* gmbus seems to be broken on i830 */ + if (IS_I830(dev)) + bus->force_bit = 1; + + intel_gpio_setup(bus, port); + + ret = i2c_add_adapter(&bus->adapter); + if (ret) + goto err; + } + + intel_i2c_reset(dev_priv->dev); + + return 0; + +err: + while (--i) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + i2c_del_adapter(&bus->adapter); + } + return ret; +} + +struct i2c_adapter *intel_gmbus_get_adapter(struct drm_i915_private *dev_priv, + unsigned port) +{ + WARN_ON(!intel_gmbus_is_port_valid(port)); + /* -1 to map pin pair to gmbus index */ + return (intel_gmbus_is_port_valid(port)) ? + &dev_priv->gmbus[port - 1].adapter : NULL; +} + +void intel_gmbus_set_speed(struct i2c_adapter *adapter, int speed) +{ + struct intel_gmbus *bus = to_intel_gmbus(adapter); + + bus->reg0 = (bus->reg0 & ~(0x3 << 8)) | speed; +} + +void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit) +{ + struct intel_gmbus *bus = to_intel_gmbus(adapter); + + bus->force_bit += force_bit ? 1 : -1; + DRM_DEBUG_KMS("%sabling bit-banging on %s. force bit now %d\n", + force_bit ? "en" : "dis", adapter->name, + bus->force_bit); +} + +void intel_teardown_gmbus(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + for (i = 0; i < GMBUS_NUM_PORTS; i++) { + struct intel_gmbus *bus = &dev_priv->gmbus[i]; + i2c_del_adapter(&bus->adapter); + } +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem_gtt.c +++ linux-3.5.0/ubuntu/i915/i915_gem_gtt.c @@ -0,0 +1,705 @@ +/* + * Copyright © 2010 Daniel Vetter + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" + +typedef uint32_t gtt_pte_t; + +/* PPGTT stuff */ +#define GEN6_GTT_ADDR_ENCODE(addr) ((addr) | (((addr) >> 28) & 0xff0)) + +#define GEN6_PDE_VALID (1 << 0) +/* gen6+ has bit 11-4 for physical addr bit 39-32 */ +#define GEN6_PDE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) + +#define GEN6_PTE_VALID (1 << 0) +#define GEN6_PTE_UNCACHED (1 << 1) +#define HSW_PTE_UNCACHED (0) +#define GEN6_PTE_CACHE_LLC (2 << 1) +#define GEN6_PTE_CACHE_LLC_MLC (3 << 1) +#define GEN6_PTE_ADDR_ENCODE(addr) GEN6_GTT_ADDR_ENCODE(addr) + +static inline gtt_pte_t pte_encode(struct drm_device *dev, + dma_addr_t addr, + enum i915_cache_level level) +{ + gtt_pte_t pte = GEN6_PTE_VALID; + pte |= GEN6_PTE_ADDR_ENCODE(addr); + + switch (level) { + case I915_CACHE_LLC_MLC: + /* Haswell doesn't set L3 this way */ + if (IS_HASWELL(dev)) + pte |= GEN6_PTE_CACHE_LLC; + else + pte |= GEN6_PTE_CACHE_LLC_MLC; + break; + case I915_CACHE_LLC: + pte |= GEN6_PTE_CACHE_LLC; + break; + case I915_CACHE_NONE: + if (IS_HASWELL(dev)) + pte |= HSW_PTE_UNCACHED; + else + pte |= GEN6_PTE_UNCACHED; + break; + default: + BUG(); + } + + + return pte; +} + +/* PPGTT support for Sandybdrige/Gen6 and later */ +static void i915_ppgtt_clear_range(struct i915_hw_ppgtt *ppgtt, + unsigned first_entry, + unsigned num_entries) +{ + gtt_pte_t *pt_vaddr; + gtt_pte_t scratch_pte; + unsigned act_pd = first_entry / I915_PPGTT_PT_ENTRIES; + unsigned first_pte = first_entry % I915_PPGTT_PT_ENTRIES; + unsigned last_pte, i; + + scratch_pte = pte_encode(ppgtt->dev, ppgtt->scratch_page_dma_addr, + I915_CACHE_LLC); + + while (num_entries) { + last_pte = first_pte + num_entries; + if (last_pte > I915_PPGTT_PT_ENTRIES) + last_pte = I915_PPGTT_PT_ENTRIES; + + pt_vaddr = kmap_atomic(ppgtt->pt_pages[act_pd]); + + for (i = first_pte; i < last_pte; i++) + pt_vaddr[i] = scratch_pte; + + kunmap_atomic(pt_vaddr); + + num_entries -= last_pte - first_pte; + first_pte = 0; + act_pd++; + } +} + +int i915_gem_init_aliasing_ppgtt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_ppgtt *ppgtt; + unsigned first_pd_entry_in_global_pt; + int i; + int ret = -ENOMEM; + + /* ppgtt PDEs reside in the global gtt pagetable, which has 512*1024 + * entries. For aliasing ppgtt support we just steal them at the end for + * now. */ + first_pd_entry_in_global_pt = dev_priv->mm.gtt->gtt_total_entries - I915_PPGTT_PD_ENTRIES; + + ppgtt = kzalloc(sizeof(*ppgtt), GFP_KERNEL); + if (!ppgtt) + return ret; + + ppgtt->dev = dev; + ppgtt->num_pd_entries = I915_PPGTT_PD_ENTRIES; + ppgtt->pt_pages = kzalloc(sizeof(struct page *)*ppgtt->num_pd_entries, + GFP_KERNEL); + if (!ppgtt->pt_pages) + goto err_ppgtt; + + for (i = 0; i < ppgtt->num_pd_entries; i++) { + ppgtt->pt_pages[i] = alloc_page(GFP_KERNEL); + if (!ppgtt->pt_pages[i]) + goto err_pt_alloc; + } + + if (dev_priv->mm.gtt->needs_dmar) { + ppgtt->pt_dma_addr = kzalloc(sizeof(dma_addr_t) + *ppgtt->num_pd_entries, + GFP_KERNEL); + if (!ppgtt->pt_dma_addr) + goto err_pt_alloc; + + for (i = 0; i < ppgtt->num_pd_entries; i++) { + dma_addr_t pt_addr; + + pt_addr = pci_map_page(dev->pdev, ppgtt->pt_pages[i], + 0, 4096, + PCI_DMA_BIDIRECTIONAL); + + if (pci_dma_mapping_error(dev->pdev, + pt_addr)) { + ret = -EIO; + goto err_pd_pin; + + } + ppgtt->pt_dma_addr[i] = pt_addr; + } + } + + ppgtt->scratch_page_dma_addr = dev_priv->mm.gtt->scratch_page_dma; + + i915_ppgtt_clear_range(ppgtt, 0, + ppgtt->num_pd_entries*I915_PPGTT_PT_ENTRIES); + + ppgtt->pd_offset = (first_pd_entry_in_global_pt)*sizeof(gtt_pte_t); + + dev_priv->mm.aliasing_ppgtt = ppgtt; + + return 0; + +err_pd_pin: + if (ppgtt->pt_dma_addr) { + for (i--; i >= 0; i--) + pci_unmap_page(dev->pdev, ppgtt->pt_dma_addr[i], + 4096, PCI_DMA_BIDIRECTIONAL); + } +err_pt_alloc: + kfree(ppgtt->pt_dma_addr); + for (i = 0; i < ppgtt->num_pd_entries; i++) { + if (ppgtt->pt_pages[i]) + __free_page(ppgtt->pt_pages[i]); + } + kfree(ppgtt->pt_pages); +err_ppgtt: + kfree(ppgtt); + + return ret; +} + +void i915_gem_cleanup_aliasing_ppgtt(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + int i; + + if (!ppgtt) + return; + + if (ppgtt->pt_dma_addr) { + for (i = 0; i < ppgtt->num_pd_entries; i++) + pci_unmap_page(dev->pdev, ppgtt->pt_dma_addr[i], + 4096, PCI_DMA_BIDIRECTIONAL); + } + + kfree(ppgtt->pt_dma_addr); + for (i = 0; i < ppgtt->num_pd_entries; i++) + __free_page(ppgtt->pt_pages[i]); + kfree(ppgtt->pt_pages); + kfree(ppgtt); +} + +static void i915_ppgtt_insert_sg_entries(struct i915_hw_ppgtt *ppgtt, + const struct sg_table *pages, + unsigned first_entry, + enum i915_cache_level cache_level) +{ + gtt_pte_t *pt_vaddr; + unsigned act_pd = first_entry / I915_PPGTT_PT_ENTRIES; + unsigned first_pte = first_entry % I915_PPGTT_PT_ENTRIES; + unsigned i, j, m, segment_len; + dma_addr_t page_addr; + struct scatterlist *sg; + + /* init sg walking */ + sg = pages->sgl; + i = 0; + segment_len = sg_dma_len(sg) >> PAGE_SHIFT; + m = 0; + + while (i < pages->nents) { + pt_vaddr = kmap_atomic(ppgtt->pt_pages[act_pd]); + + for (j = first_pte; j < I915_PPGTT_PT_ENTRIES; j++) { + page_addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + pt_vaddr[j] = pte_encode(ppgtt->dev, page_addr, + cache_level); + + /* grab the next page */ + if (++m == segment_len) { + if (++i == pages->nents) + break; + + sg = sg_next(sg); + segment_len = sg_dma_len(sg) >> PAGE_SHIFT; + m = 0; + } + } + + kunmap_atomic(pt_vaddr); + + first_pte = 0; + act_pd++; + } +} + +void i915_ppgtt_bind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + i915_ppgtt_insert_sg_entries(ppgtt, + obj->pages, + obj->gtt_space->start >> PAGE_SHIFT, + cache_level); +} + +void i915_ppgtt_unbind_object(struct i915_hw_ppgtt *ppgtt, + struct drm_i915_gem_object *obj) +{ + i915_ppgtt_clear_range(ppgtt, + obj->gtt_space->start >> PAGE_SHIFT, + obj->base.size >> PAGE_SHIFT); +} + +void i915_gem_init_ppgtt(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t pd_offset; + struct intel_ring_buffer *ring; + struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; + uint32_t __iomem *pd_addr; + uint32_t pd_entry; + int i; + + if (!dev_priv->mm.aliasing_ppgtt) + return; + + + pd_addr = dev_priv->mm.gtt->gtt + ppgtt->pd_offset/sizeof(uint32_t); + for (i = 0; i < ppgtt->num_pd_entries; i++) { + dma_addr_t pt_addr; + + if (dev_priv->mm.gtt->needs_dmar) + pt_addr = ppgtt->pt_dma_addr[i]; + else + pt_addr = page_to_phys(ppgtt->pt_pages[i]); + + pd_entry = GEN6_PDE_ADDR_ENCODE(pt_addr); + pd_entry |= GEN6_PDE_VALID; + + writel(pd_entry, pd_addr + i); + } + readl(pd_addr); + + pd_offset = ppgtt->pd_offset; + pd_offset /= 64; /* in cachelines, */ + pd_offset <<= 16; + + if (INTEL_INFO(dev)->gen == 6) { + uint32_t ecochk, gab_ctl, ecobits; + + ecobits = I915_READ(GAC_ECO_BITS); + I915_WRITE(GAC_ECO_BITS, ecobits | ECOBITS_PPGTT_CACHE64B); + + gab_ctl = I915_READ(GAB_CTL); + I915_WRITE(GAB_CTL, gab_ctl | GAB_CTL_CONT_AFTER_PAGEFAULT); + + ecochk = I915_READ(GAM_ECOCHK); + I915_WRITE(GAM_ECOCHK, ecochk | ECOCHK_SNB_BIT | + ECOCHK_PPGTT_CACHE64B); + I915_WRITE(GFX_MODE, _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE)); + } else if (INTEL_INFO(dev)->gen >= 7) { + I915_WRITE(GAM_ECOCHK, ECOCHK_PPGTT_CACHE64B); + /* GFX_MODE is per-ring on gen7+ */ + } + + for_each_ring(ring, dev_priv, i) { + if (INTEL_INFO(dev)->gen >= 7) + I915_WRITE(RING_MODE_GEN7(ring), + _MASKED_BIT_ENABLE(GFX_PPGTT_ENABLE)); + + I915_WRITE(RING_PP_DIR_DCLV(ring), PP_DIR_DCLV_2G); + I915_WRITE(RING_PP_DIR_BASE(ring), pd_offset); + } +} + +static bool do_idling(struct drm_i915_private *dev_priv) +{ + bool ret = dev_priv->mm.interruptible; + + if (unlikely(dev_priv->mm.gtt->do_idle_maps)) { + dev_priv->mm.interruptible = false; + if (i915_gpu_idle(dev_priv->dev)) { + DRM_ERROR("Couldn't idle GPU\n"); + /* Wait a bit, in hopes it avoids the hang */ + udelay(10); + } + } + + return ret; +} + +static void undo_idling(struct drm_i915_private *dev_priv, bool interruptible) +{ + if (unlikely(dev_priv->mm.gtt->do_idle_maps)) + dev_priv->mm.interruptible = interruptible; +} + + +static void i915_ggtt_clear_range(struct drm_device *dev, + unsigned first_entry, + unsigned num_entries) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + gtt_pte_t scratch_pte; + gtt_pte_t __iomem *gtt_base = dev_priv->mm.gtt->gtt + first_entry; + const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry; + int i; + + if (INTEL_INFO(dev)->gen < 6) { + intel_gtt_clear_range(first_entry, num_entries); + return; + } + + if (WARN(num_entries > max_entries, + "First entry = %d; Num entries = %d (max=%d)\n", + first_entry, num_entries, max_entries)) + num_entries = max_entries; + + scratch_pte = pte_encode(dev, dev_priv->mm.gtt->scratch_page_dma, I915_CACHE_LLC); + for (i = 0; i < num_entries; i++) + iowrite32(scratch_pte, >t_base[i]); + readl(gtt_base); +} + +void i915_gem_restore_gtt_mappings(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + + /* First fill our portion of the GTT with scratch pages */ + i915_ggtt_clear_range(dev, dev_priv->mm.gtt_start / PAGE_SIZE, + (dev_priv->mm.gtt_end - dev_priv->mm.gtt_start) / PAGE_SIZE); + + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) { + i915_gem_clflush_object(obj); + i915_gem_gtt_bind_object(obj, obj->cache_level); + } + + i915_gem_chipset_flush(dev); +} + +int i915_gem_gtt_prepare_object(struct drm_i915_gem_object *obj) +{ + if (obj->has_dma_mapping) + return 0; + + if (!dma_map_sg(&obj->base.dev->pdev->dev, + obj->pages->sgl, obj->pages->nents, + PCI_DMA_BIDIRECTIONAL)) + return -ENOSPC; + + return 0; +} + +/* + * Binds an object into the global gtt with the specified cache level. The object + * will be accessible to the GPU via commands whose operands reference offsets + * within the global GTT as well as accessible by the GPU through the GMADR + * mapped BAR (dev_priv->mm.gtt->gtt). + */ +static void gen6_ggtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level level) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct sg_table *st = obj->pages; + struct scatterlist *sg = st->sgl; + const int first_entry = obj->gtt_space->start >> PAGE_SHIFT; + const int max_entries = dev_priv->mm.gtt->gtt_total_entries - first_entry; + gtt_pte_t __iomem *gtt_entries = dev_priv->mm.gtt->gtt + first_entry; + int unused, i = 0; + unsigned int len, m = 0; + dma_addr_t addr; + + for_each_sg(st->sgl, sg, st->nents, unused) { + len = sg_dma_len(sg) >> PAGE_SHIFT; + for (m = 0; m < len; m++) { + addr = sg_dma_address(sg) + (m << PAGE_SHIFT); + iowrite32(pte_encode(dev, addr, level), >t_entries[i]); + i++; + } + } + + BUG_ON(i > max_entries); + BUG_ON(i != obj->base.size / PAGE_SIZE); + + /* XXX: This serves as a posting read to make sure that the PTE has + * actually been updated. There is some concern that even though + * registers and PTEs are within the same BAR that they are potentially + * of NUMA access patterns. Therefore, even with the way we assume + * hardware should work, we must keep this posting read for paranoia. + */ + if (i != 0) + WARN_ON(readl(>t_entries[i-1]) != pte_encode(dev, addr, level)); + + /* This next bit makes the above posting read even more important. We + * want to flush the TLBs only after we're certain all the PTE updates + * have finished. + */ + I915_WRITE(GFX_FLSH_CNTL_GEN6, GFX_FLSH_CNTL_EN); + POSTING_READ(GFX_FLSH_CNTL_GEN6); +} + +void i915_gem_gtt_bind_object(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + struct drm_device *dev = obj->base.dev; + if (INTEL_INFO(dev)->gen < 6) { + unsigned int flags = (cache_level == I915_CACHE_NONE) ? + AGP_USER_MEMORY : AGP_USER_CACHED_MEMORY; + intel_gtt_insert_sg_entries_hsw(obj->pages, + obj->gtt_space->start >> PAGE_SHIFT, + flags); + } else { + gen6_ggtt_bind_object(obj, cache_level); + } + + obj->has_global_gtt_mapping = 1; +} + +void i915_gem_gtt_unbind_object(struct drm_i915_gem_object *obj) +{ + i915_ggtt_clear_range(obj->base.dev, + obj->gtt_space->start >> PAGE_SHIFT, + obj->base.size >> PAGE_SHIFT); + + obj->has_global_gtt_mapping = 0; +} + +void i915_gem_gtt_finish_object(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool interruptible; + + interruptible = do_idling(dev_priv); + + if (!obj->has_dma_mapping) + dma_unmap_sg(&dev->pdev->dev, + obj->pages->sgl, obj->pages->nents, + PCI_DMA_BIDIRECTIONAL); + + undo_idling(dev_priv, interruptible); +} + +static void i915_gtt_color_adjust(struct drm_mm_node_hsw *node, + unsigned long color, + unsigned long *start, + unsigned long *end) +{ + if (node->color != color) + *start += 4096; + + if (!list_empty(&node->node_list)) { + node = list_entry(node->node_list.next, + struct drm_mm_node_hsw, + node_list); + if (node->allocated && node->color != color) + *end -= 4096; + } +} + +void i915_gem_init_global_gtt(struct drm_device *dev, + unsigned long start, + unsigned long mappable_end, + unsigned long end) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + /* Substract the guard page ... */ + drm_mm_init_hsw(&dev_priv->mm.gtt_space, start, end - start - PAGE_SIZE); + if (!HAS_LLC(dev)) + dev_priv->mm.gtt_space.color_adjust = i915_gtt_color_adjust; + + dev_priv->mm.gtt_start = start; + dev_priv->mm.gtt_mappable_end = mappable_end; + dev_priv->mm.gtt_end = end; + dev_priv->mm.gtt_total = end - start; + dev_priv->mm.mappable_gtt_total = min(end, mappable_end) - start; + + /* ... but ensure that we clear the entire range. */ + i915_ggtt_clear_range(dev, start / PAGE_SIZE, (end-start) / PAGE_SIZE); +} + +static int setup_scratch_page(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct page *page; + dma_addr_t dma_addr; + + page = alloc_page(GFP_KERNEL | GFP_DMA32 | __GFP_ZERO); + if (page == NULL) + return -ENOMEM; + get_page(page); + set_pages_uc(page, 1); + +#ifdef CONFIG_INTEL_IOMMU + dma_addr = pci_map_page(dev->pdev, page, 0, PAGE_SIZE, + PCI_DMA_BIDIRECTIONAL); + if (pci_dma_mapping_error(dev->pdev, dma_addr)) + return -EINVAL; +#else + dma_addr = page_to_phys(page); +#endif + dev_priv->mm.gtt->scratch_page = page; + dev_priv->mm.gtt->scratch_page_dma = dma_addr; + + return 0; +} + +static void teardown_scratch_page(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + set_pages_wb(dev_priv->mm.gtt->scratch_page, 1); + pci_unmap_page(dev->pdev, dev_priv->mm.gtt->scratch_page_dma, + PAGE_SIZE, PCI_DMA_BIDIRECTIONAL); + put_page(dev_priv->mm.gtt->scratch_page); + __free_page(dev_priv->mm.gtt->scratch_page); +} + +static inline unsigned int gen6_get_total_gtt_size(u16 snb_gmch_ctl) +{ + snb_gmch_ctl >>= SNB_GMCH_GGMS_SHIFT; + snb_gmch_ctl &= SNB_GMCH_GGMS_MASK; + return snb_gmch_ctl << 20; +} + +static inline unsigned int gen6_get_stolen_size(u16 snb_gmch_ctl) +{ + snb_gmch_ctl >>= SNB_GMCH_GMS_SHIFT; + snb_gmch_ctl &= SNB_GMCH_GMS_MASK; + return snb_gmch_ctl << 25; /* 32 MB units */ +} + +static inline unsigned int gen7_get_stolen_size(u16 snb_gmch_ctl) +{ + static const int stolen_decoder[] = { + 0, 0, 0, 0, 0, 32, 48, 64, 128, 256, 96, 160, 224, 352}; + snb_gmch_ctl >>= IVB_GMCH_GMS_SHIFT; + snb_gmch_ctl &= IVB_GMCH_GMS_MASK; + return stolen_decoder[snb_gmch_ctl] << 20; +} + +int i915_gem_gtt_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + phys_addr_t gtt_bus_addr; + u16 snb_gmch_ctl; + int ret; + + /* On modern platforms we need not worry ourself with the legacy + * hostbridge query stuff. Skip it entirely + */ + if (INTEL_INFO(dev)->gen < 6) { + ret = intel_gmch_probe(dev_priv->bridge_dev, dev->pdev, NULL); + if (!ret) { + DRM_ERROR("failed to set up gmch\n"); + return -EIO; + } + + dev_priv->mm.gtt = intel_gtt_get(); + if (!dev_priv->mm.gtt) { + DRM_ERROR("Failed to initialize GTT\n"); + intel_gmch_remove(); + return -ENODEV; + } + return 0; + } + + dev_priv->mm.gtt = kzalloc(sizeof(*dev_priv->mm.gtt), GFP_KERNEL); + if (!dev_priv->mm.gtt) + return -ENOMEM; + + if (!pci_set_dma_mask(dev->pdev, DMA_BIT_MASK(40))) + pci_set_consistent_dma_mask(dev->pdev, DMA_BIT_MASK(40)); + + /* For GEN6+ the PTEs for the ggtt live at 2MB + BAR0 */ + gtt_bus_addr = pci_resource_start(dev->pdev, 0) + (2<<20); + dev_priv->mm.gtt->gma_bus_addr = pci_resource_start(dev->pdev, 2); + + /* i9xx_setup */ + pci_read_config_word(dev->pdev, SNB_GMCH_CTRL, &snb_gmch_ctl); + dev_priv->mm.gtt->gtt_total_entries = + gen6_get_total_gtt_size(snb_gmch_ctl) / sizeof(gtt_pte_t); + if (INTEL_INFO(dev)->gen < 7) + dev_priv->mm.gtt->stolen_size = gen6_get_stolen_size(snb_gmch_ctl); + else + dev_priv->mm.gtt->stolen_size = gen7_get_stolen_size(snb_gmch_ctl); + + dev_priv->mm.gtt->gtt_mappable_entries = pci_resource_len(dev->pdev, 2) >> PAGE_SHIFT; + /* 64/512MB is the current min/max we actually know of, but this is just a + * coarse sanity check. + */ + if ((dev_priv->mm.gtt->gtt_mappable_entries >> 8) < 64 || + dev_priv->mm.gtt->gtt_mappable_entries > dev_priv->mm.gtt->gtt_total_entries) { + DRM_ERROR("Unknown GMADR entries (%d)\n", + dev_priv->mm.gtt->gtt_mappable_entries); + ret = -ENXIO; + goto err_out; + } + + ret = setup_scratch_page(dev); + if (ret) { + DRM_ERROR("Scratch setup failed\n"); + goto err_out; + } + + dev_priv->mm.gtt->gtt = ioremap_wc(gtt_bus_addr, + dev_priv->mm.gtt->gtt_total_entries * sizeof(gtt_pte_t)); + if (!dev_priv->mm.gtt->gtt) { + DRM_ERROR("Failed to map the gtt page table\n"); + teardown_scratch_page(dev); + ret = -ENOMEM; + goto err_out; + } + + /* GMADR is the PCI aperture used by SW to access tiled GFX surfaces in a linear fashion. */ + DRM_INFO("Memory usable by graphics device = %dM\n", dev_priv->mm.gtt->gtt_total_entries >> 8); + DRM_DEBUG_DRIVER("GMADR size = %dM\n", dev_priv->mm.gtt->gtt_mappable_entries >> 8); + DRM_DEBUG_DRIVER("GTT stolen size = %dM\n", dev_priv->mm.gtt->stolen_size >> 20); + + return 0; + +err_out: + kfree(dev_priv->mm.gtt); + if (INTEL_INFO(dev)->gen < 6) + intel_gmch_remove(); + return ret; +} + +void i915_gem_gtt_fini(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + iounmap(dev_priv->mm.gtt->gtt); + teardown_scratch_page(dev); + if (INTEL_INFO(dev)->gen < 6) + intel_gmch_remove(); + kfree(dev_priv->mm.gtt); +} --- linux-3.5.0.orig/ubuntu/i915/i915_trace.h +++ linux-3.5.0/ubuntu/i915/i915_trace.h @@ -0,0 +1,455 @@ +#if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) +#define _I915_TRACE_H_ + +#include +#include +#include + +#include +#include "i915_drv.h" +#include "intel_ringbuffer.h" + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM i915 +#define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM) +#define TRACE_INCLUDE_FILE i915_trace + +/* object tracking */ + +TRACE_EVENT(i915_gem_object_create, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, size) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->size = obj->base.size; + ), + + TP_printk("obj=%p, size=%u", __entry->obj, __entry->size) +); + +TRACE_EVENT(i915_gem_object_bind, + TP_PROTO(struct drm_i915_gem_object *obj, bool mappable), + TP_ARGS(obj, mappable), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, size) + __field(bool, mappable) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = obj->gtt_space->start; + __entry->size = obj->gtt_space->size; + __entry->mappable = mappable; + ), + + TP_printk("obj=%p, offset=%08x size=%x%s", + __entry->obj, __entry->offset, __entry->size, + __entry->mappable ? ", mappable" : "") +); + +TRACE_EVENT(i915_gem_object_unbind, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, size) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = obj->gtt_space->start; + __entry->size = obj->gtt_space->size; + ), + + TP_printk("obj=%p, offset=%08x size=%x", + __entry->obj, __entry->offset, __entry->size) +); + +TRACE_EVENT(i915_gem_object_change_domain, + TP_PROTO(struct drm_i915_gem_object *obj, u32 old_read, u32 old_write), + TP_ARGS(obj, old_read, old_write), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, read_domains) + __field(u32, write_domain) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->read_domains = obj->base.read_domains | (old_read << 16); + __entry->write_domain = obj->base.write_domain | (old_write << 16); + ), + + TP_printk("obj=%p, read=%02x=>%02x, write=%02x=>%02x", + __entry->obj, + __entry->read_domains >> 16, + __entry->read_domains & 0xffff, + __entry->write_domain >> 16, + __entry->write_domain & 0xffff) +); + +TRACE_EVENT(i915_gem_object_pwrite, + TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len), + TP_ARGS(obj, offset, len), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, len) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("obj=%p, offset=%u, len=%u", + __entry->obj, __entry->offset, __entry->len) +); + +TRACE_EVENT(i915_gem_object_pread, + TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len), + TP_ARGS(obj, offset, len), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, offset) + __field(u32, len) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("obj=%p, offset=%u, len=%u", + __entry->obj, __entry->offset, __entry->len) +); + +TRACE_EVENT(i915_gem_object_fault, + TP_PROTO(struct drm_i915_gem_object *obj, u32 index, bool gtt, bool write), + TP_ARGS(obj, index, gtt, write), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + __field(u32, index) + __field(bool, gtt) + __field(bool, write) + ), + + TP_fast_assign( + __entry->obj = obj; + __entry->index = index; + __entry->gtt = gtt; + __entry->write = write; + ), + + TP_printk("obj=%p, %s index=%u %s", + __entry->obj, + __entry->gtt ? "GTT" : "CPU", + __entry->index, + __entry->write ? ", writable" : "") +); + +DECLARE_EVENT_CLASS(i915_gem_object, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj), + + TP_STRUCT__entry( + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->obj = obj; + ), + + TP_printk("obj=%p", __entry->obj) +); + +DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj) +); + +DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy, + TP_PROTO(struct drm_i915_gem_object *obj), + TP_ARGS(obj) +); + +TRACE_EVENT(i915_gem_evict, + TP_PROTO(struct drm_device *dev, u32 size, u32 align, bool mappable), + TP_ARGS(dev, size, align, mappable), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, size) + __field(u32, align) + __field(bool, mappable) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + __entry->size = size; + __entry->align = align; + __entry->mappable = mappable; + ), + + TP_printk("dev=%d, size=%d, align=%d %s", + __entry->dev, __entry->size, __entry->align, + __entry->mappable ? ", mappable" : "") +); + +TRACE_EVENT(i915_gem_evict_everything, + TP_PROTO(struct drm_device *dev), + TP_ARGS(dev), + + TP_STRUCT__entry( + __field(u32, dev) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + ), + + TP_printk("dev=%d", __entry->dev) +); + +TRACE_EVENT(i915_gem_ring_dispatch, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno, u32 flags), + TP_ARGS(ring, seqno, flags), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + __field(u32, flags) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + __entry->flags = flags; + i915_trace_irq_get(ring, seqno); + ), + + TP_printk("dev=%u, ring=%u, seqno=%u, flags=%x", + __entry->dev, __entry->ring, __entry->seqno, __entry->flags) +); + +TRACE_EVENT(i915_gem_ring_flush, + TP_PROTO(struct intel_ring_buffer *ring, u32 invalidate, u32 flush), + TP_ARGS(ring, invalidate, flush), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, invalidate) + __field(u32, flush) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->invalidate = invalidate; + __entry->flush = flush; + ), + + TP_printk("dev=%u, ring=%x, invalidate=%04x, flush=%04x", + __entry->dev, __entry->ring, + __entry->invalidate, __entry->flush) +); + +DECLARE_EVENT_CLASS(i915_gem_request, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + ), + + TP_printk("dev=%u, ring=%u, seqno=%u", + __entry->dev, __entry->ring, __entry->seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_add, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_complete, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_retire, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +TRACE_EVENT(i915_gem_request_wait_begin, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + __field(u32, seqno) + __field(bool, blocking) + ), + + /* NB: the blocking information is racy since mutex_is_locked + * doesn't check that the current thread holds the lock. The only + * other option would be to pass the boolean information of whether + * or not the class was blocking down through the stack which is + * less desirable. + */ + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + __entry->seqno = seqno; + __entry->blocking = mutex_is_locked(&ring->dev->struct_mutex); + ), + + TP_printk("dev=%u, ring=%u, seqno=%u, blocking=%s", + __entry->dev, __entry->ring, __entry->seqno, + __entry->blocking ? "yes (NB)" : "no") +); + +DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end, + TP_PROTO(struct intel_ring_buffer *ring, u32 seqno), + TP_ARGS(ring, seqno) +); + +DECLARE_EVENT_CLASS(i915_ring, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u32, ring) + ), + + TP_fast_assign( + __entry->dev = ring->dev->primary->index; + __entry->ring = ring->id; + ), + + TP_printk("dev=%u, ring=%u", __entry->dev, __entry->ring) +); + +DEFINE_EVENT(i915_ring, i915_ring_wait_begin, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring) +); + +DEFINE_EVENT(i915_ring, i915_ring_wait_end, + TP_PROTO(struct intel_ring_buffer *ring), + TP_ARGS(ring) +); + +TRACE_EVENT(i915_flip_request, + TP_PROTO(int plane, struct drm_i915_gem_object *obj), + + TP_ARGS(plane, obj), + + TP_STRUCT__entry( + __field(int, plane) + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->plane = plane; + __entry->obj = obj; + ), + + TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj) +); + +TRACE_EVENT(i915_flip_complete, + TP_PROTO(int plane, struct drm_i915_gem_object *obj), + + TP_ARGS(plane, obj), + + TP_STRUCT__entry( + __field(int, plane) + __field(struct drm_i915_gem_object *, obj) + ), + + TP_fast_assign( + __entry->plane = plane; + __entry->obj = obj; + ), + + TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj) +); + +TRACE_EVENT(i915_reg_rw, + TP_PROTO(bool write, u32 reg, u64 val, int len), + + TP_ARGS(write, reg, val, len), + + TP_STRUCT__entry( + __field(u64, val) + __field(u32, reg) + __field(u16, write) + __field(u16, len) + ), + + TP_fast_assign( + __entry->val = (u64)val; + __entry->reg = reg; + __entry->write = write; + __entry->len = len; + ), + + TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)", + __entry->write ? "write" : "read", + __entry->reg, __entry->len, + (u32)(__entry->val & 0xffffffff), + (u32)(__entry->val >> 32)) +); + +TRACE_EVENT(intel_gpu_freq_change, + TP_PROTO(u32 freq), + TP_ARGS(freq), + + TP_STRUCT__entry( + __field(u32, freq) + ), + + TP_fast_assign( + __entry->freq = freq; + ), + + TP_printk("new_freq=%u", __entry->freq) +); + +#endif /* _I915_TRACE_H_ */ + +/* This part must be outside protection */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#include --- linux-3.5.0.orig/ubuntu/i915/intel_hdmi.c +++ linux-3.5.0/ubuntu/i915/intel_hdmi.c @@ -0,0 +1,1072 @@ +/* + * Copyright 2006 Dave Airlie + * Copyright © 2006-2009 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * Jesse Barnes + */ + +#include +#include +#include +#include "drmP.h" +#include "drm.h" +#include "drm_crtc.h" +#include "drm_edid.h" +#include "intel_drv.h" +#include "i915_drm.h" +#include "i915_drv.h" + +static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi) +{ + return hdmi_to_dig_port(intel_hdmi)->base.base.dev; +} + +static void +assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi) +{ + struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t enabled_bits; + + enabled_bits = IS_HASWELL(dev) ? DDI_BUF_CTL_ENABLE : SDVO_ENABLE; + + WARN(I915_READ(intel_hdmi->sdvox_reg) & enabled_bits, + "HDMI port enabled, expecting disabled\n"); +} + +struct intel_hdmi *enc_to_intel_hdmi(struct drm_encoder *encoder) +{ + struct intel_digital_port *intel_dig_port = + container_of(encoder, struct intel_digital_port, base.base); + return &intel_dig_port->hdmi; +} + +static struct intel_hdmi *intel_attached_hdmi(struct drm_connector *connector) +{ + return enc_to_intel_hdmi(&intel_attached_encoder(connector)->base); +} + +void intel_dip_infoframe_csum(struct dip_infoframe *frame) +{ + uint8_t *data = (uint8_t *)frame; + uint8_t sum = 0; + unsigned i; + + frame->checksum = 0; + frame->ecc = 0; + + for (i = 0; i < frame->len + DIP_HEADER_SIZE; i++) + sum += data[i]; + + frame->checksum = 0x100 - sum; +} + +static u32 g4x_infoframe_index(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_SELECT_AVI; + case DIP_TYPE_SPD: + return VIDEO_DIP_SELECT_SPD; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 g4x_infoframe_enable(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_ENABLE_AVI; + case DIP_TYPE_SPD: + return VIDEO_DIP_ENABLE_SPD; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 hsw_infoframe_enable(struct dip_infoframe *frame) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return VIDEO_DIP_ENABLE_AVI_HSW; + case DIP_TYPE_SPD: + return VIDEO_DIP_ENABLE_SPD_HSW; + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static u32 hsw_infoframe_data_reg(struct dip_infoframe *frame, enum pipe pipe) +{ + switch (frame->type) { + case DIP_TYPE_AVI: + return HSW_TVIDEO_DIP_AVI_DATA(pipe); + case DIP_TYPE_SPD: + return HSW_TVIDEO_DIP_SPD_DATA(pipe); + default: + DRM_DEBUG_DRIVER("unknown info frame type %d\n", frame->type); + return 0; + } +} + +static void g4x_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + u32 val = I915_READ(VIDEO_DIP_CTL); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(VIDEO_DIP_CTL, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(VIDEO_DIP_DATA, *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VIDEO_DIP_DATA, 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(VIDEO_DIP_CTL, val); + POSTING_READ(VIDEO_DIP_CTL); +} + +static void ibx_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void cpt_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + /* The DIP control register spec says that we need to update the AVI + * infoframe without clearing its enable bit */ + if (frame->type != DIP_TYPE_AVI) + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void vlv_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + int reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); + unsigned i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(reg); + + WARN(!(val & VIDEO_DIP_ENABLE), "Writing DIP with CTL reg disabled\n"); + + val &= ~(VIDEO_DIP_SELECT_MASK | 0xf); /* clear DIP data offset */ + val |= g4x_infoframe_index(frame); + + val &= ~g4x_infoframe_enable(frame); + + I915_WRITE(reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(VLV_TVIDEO_DIP_DATA(intel_crtc->pipe), 0); + mmiowb(); + + val |= g4x_infoframe_enable(frame); + val &= ~VIDEO_DIP_FREQ_MASK; + val |= VIDEO_DIP_FREQ_VSYNC; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void hsw_write_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + uint32_t *data = (uint32_t *)frame; + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + u32 ctl_reg = HSW_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 data_reg = hsw_infoframe_data_reg(frame, intel_crtc->pipe); + unsigned int i, len = DIP_HEADER_SIZE + frame->len; + u32 val = I915_READ(ctl_reg); + + if (data_reg == 0) + return; + + val &= ~hsw_infoframe_enable(frame); + I915_WRITE(ctl_reg, val); + + mmiowb(); + for (i = 0; i < len; i += 4) { + I915_WRITE(data_reg + i, *data); + data++; + } + /* Write every possible data byte to force correct ECC calculation. */ + for (; i < VIDEO_DIP_DATA_SIZE; i += 4) + I915_WRITE(data_reg + i, 0); + mmiowb(); + + val |= hsw_infoframe_enable(frame); + I915_WRITE(ctl_reg, val); + POSTING_READ(ctl_reg); +} + +static void intel_set_infoframe(struct drm_encoder *encoder, + struct dip_infoframe *frame) +{ + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + + intel_dip_infoframe_csum(frame); + intel_hdmi->write_infoframe(encoder, frame); +} + +static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct dip_infoframe avi_if = { + .type = DIP_TYPE_AVI, + .ver = DIP_VERSION_AVI, + .len = DIP_LEN_AVI, + }; + + if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) + avi_if.body.avi.YQ_CN_PR |= DIP_AVI_PR_2; + + intel_set_infoframe(encoder, &avi_if); +} + +static void intel_hdmi_set_spd_infoframe(struct drm_encoder *encoder) +{ + struct dip_infoframe spd_if; + + memset(&spd_if, 0, sizeof(spd_if)); + spd_if.type = DIP_TYPE_SPD; + spd_if.ver = DIP_VERSION_SPD; + spd_if.len = DIP_LEN_SPD; + strcpy(spd_if.body.spd.vn, "Intel"); + strcpy(spd_if.body.spd.pd, "Integrated gfx"); + spd_if.body.spd.sdi = DIP_SPD_PC; + + intel_set_infoframe(encoder, &spd_if); +} + +static void g4x_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = VIDEO_DIP_CTL; + u32 val = I915_READ(reg); + u32 port; + + assert_hdmi_port_disabled(intel_hdmi); + + /* If the registers were not initialized yet, they might be zeroes, + * which means we're selecting the AVI DIP and we're setting its + * frequency to once. This seems to really confuse the HW and make + * things stop working (the register spec says the AVI always needs to + * be sent every VSync). So here we avoid writing to the register more + * than we need and also explicitly select the AVI DIP and explicitly + * set its frequency to every VSync. Avoiding to write it twice seems to + * be enough to solve the problem, but being defensive shouldn't hurt us + * either. */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + switch (intel_hdmi->sdvox_reg) { + case SDVOB: + port = VIDEO_DIP_PORT_B; + break; + case SDVOC: + port = VIDEO_DIP_PORT_C; + break; + default: + BUG(); + return; + } + + if (port != (val & VIDEO_DIP_PORT_MASK)) { + if (val & VIDEO_DIP_ENABLE) { + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + } + val &= ~VIDEO_DIP_PORT_MASK; + val |= port; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~VIDEO_DIP_ENABLE_VENDOR; + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void ibx_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + u32 port; + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + switch (intel_hdmi->sdvox_reg) { + case HDMIB: + port = VIDEO_DIP_PORT_B; + break; + case HDMIC: + port = VIDEO_DIP_PORT_C; + break; + case HDMID: + port = VIDEO_DIP_PORT_D; + break; + default: + BUG(); + return; + } + + if (port != (val & VIDEO_DIP_PORT_MASK)) { + if (val & VIDEO_DIP_ENABLE) { + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + } + val &= ~VIDEO_DIP_PORT_MASK; + val |= port; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void cpt_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~(VIDEO_DIP_ENABLE | VIDEO_DIP_ENABLE_AVI); + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + /* Set both together, unset both together: see the spec. */ + val |= VIDEO_DIP_ENABLE | VIDEO_DIP_ENABLE_AVI; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void vlv_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = VLV_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + /* See the big comment in g4x_set_infoframes() */ + val |= VIDEO_DIP_SELECT_AVI | VIDEO_DIP_FREQ_VSYNC; + + if (!intel_hdmi->has_hdmi_sink) { + if (!(val & VIDEO_DIP_ENABLE)) + return; + val &= ~VIDEO_DIP_ENABLE; + I915_WRITE(reg, val); + POSTING_READ(reg); + return; + } + + val |= VIDEO_DIP_ENABLE; + val &= ~(VIDEO_DIP_ENABLE_VENDOR | VIDEO_DIP_ENABLE_GAMUT | + VIDEO_DIP_ENABLE_GCP); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void hsw_set_infoframes(struct drm_encoder *encoder, + struct drm_display_mode *adjusted_mode) +{ + struct drm_i915_private *dev_priv = encoder->dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 reg = HSW_TVIDEO_DIP_CTL(intel_crtc->pipe); + u32 val = I915_READ(reg); + + assert_hdmi_port_disabled(intel_hdmi); + + if (!intel_hdmi->has_hdmi_sink) { + I915_WRITE(reg, 0); + POSTING_READ(reg); + return; + } + + val &= ~(VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_GCP_HSW | + VIDEO_DIP_ENABLE_VS_HSW | VIDEO_DIP_ENABLE_GMP_HSW); + + I915_WRITE(reg, val); + POSTING_READ(reg); + + intel_hdmi_set_avi_infoframe(encoder, adjusted_mode); + intel_hdmi_set_spd_infoframe(encoder); +} + +static void intel_hdmi_mode_set(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + struct drm_device *dev = encoder->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_crtc *intel_crtc = to_intel_crtc(encoder->crtc); + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(encoder); + u32 sdvox; + + sdvox = SDVO_ENCODING_HDMI; + if (!HAS_PCH_SPLIT(dev)) + sdvox |= intel_hdmi->color_range; + if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC) + sdvox |= SDVO_VSYNC_ACTIVE_HIGH; + if (adjusted_mode->flags & DRM_MODE_FLAG_PHSYNC) + sdvox |= SDVO_HSYNC_ACTIVE_HIGH; + + if (intel_crtc->bpp > 24) + sdvox |= COLOR_FORMAT_12bpc; + else + sdvox |= COLOR_FORMAT_8bpc; + + /* Required on CPT */ + if (intel_hdmi->has_hdmi_sink && HAS_PCH_CPT(dev)) + sdvox |= HDMI_MODE_SELECT; + + if (intel_hdmi->has_audio) { + DRM_DEBUG_DRIVER("Enabling HDMI audio on pipe %c\n", + pipe_name(intel_crtc->pipe)); + sdvox |= SDVO_AUDIO_ENABLE; + sdvox |= SDVO_NULL_PACKETS_DURING_VSYNC; + intel_write_eld(encoder, adjusted_mode); + } + + if (HAS_PCH_CPT(dev)) + sdvox |= PORT_TRANS_SEL_CPT(intel_crtc->pipe); + else if (intel_crtc->pipe == PIPE_B) + sdvox |= SDVO_PIPE_B_SELECT; + + I915_WRITE(intel_hdmi->sdvox_reg, sdvox); + POSTING_READ(intel_hdmi->sdvox_reg); + + intel_hdmi->set_infoframes(encoder, adjusted_mode); +} + +static bool intel_hdmi_get_hw_state(struct intel_encoder *encoder, + enum pipe *pipe) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 tmp; + + tmp = I915_READ(intel_hdmi->sdvox_reg); + + if (!(tmp & SDVO_ENABLE)) + return false; + + if (HAS_PCH_CPT(dev)) + *pipe = PORT_TO_PIPE_CPT(tmp); + else + *pipe = PORT_TO_PIPE(tmp); + + return true; +} + +static void intel_enable_hdmi(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 temp; + u32 enable_bits = SDVO_ENABLE; + + if (intel_hdmi->has_audio) + enable_bits |= SDVO_AUDIO_ENABLE; + + temp = I915_READ(intel_hdmi->sdvox_reg); + + /* HW workaround for IBX, we need to move the port to transcoder A + * before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + /* Restore the transcoder select bit. */ + if (pipe == PIPE_B) + enable_bits |= SDVO_PIPE_B_SELECT; + } + + /* HW workaround, need to toggle enable bit off and on for 12bpc, but + * we do this anyway which shows more stable in testing. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->sdvox_reg); + } + + temp |= enable_bits; + + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* HW workaround, need to write this twice for issue that may result + * in first write getting masked. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + } +} + +static void intel_disable_hdmi(struct intel_encoder *encoder) +{ + struct drm_device *dev = encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_hdmi *intel_hdmi = enc_to_intel_hdmi(&encoder->base); + u32 temp; + u32 enable_bits = SDVO_ENABLE | SDVO_AUDIO_ENABLE; + + temp = I915_READ(intel_hdmi->sdvox_reg); + + /* HW workaround for IBX, we need to move the port to transcoder A + * before disabling it. */ + if (HAS_PCH_IBX(dev)) { + struct drm_crtc *crtc = encoder->base.crtc; + int pipe = crtc ? to_intel_crtc(crtc)->pipe : -1; + + if (temp & SDVO_PIPE_B_SELECT) { + temp &= ~SDVO_PIPE_B_SELECT; + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* Again we need to write this twice. */ + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* Transcoder selection bits only update + * effectively on vblank. */ + if (crtc) + intel_wait_for_vblank(dev, pipe); + else + msleep(50); + } + } + + /* HW workaround, need to toggle enable bit off and on for 12bpc, but + * we do this anyway which shows more stable in testing. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp & ~SDVO_ENABLE); + POSTING_READ(intel_hdmi->sdvox_reg); + } + + temp &= ~enable_bits; + + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + + /* HW workaround, need to write this twice for issue that may result + * in first write getting masked. + */ + if (HAS_PCH_SPLIT(dev)) { + I915_WRITE(intel_hdmi->sdvox_reg, temp); + POSTING_READ(intel_hdmi->sdvox_reg); + } +} + +static int intel_hdmi_mode_valid(struct drm_connector *connector, + struct drm_display_mode *mode) +{ + if (mode->clock > 165000) + return MODE_CLOCK_HIGH; + if (mode->clock < 20000) + return MODE_CLOCK_LOW; + + if (mode->flags & DRM_MODE_FLAG_DBLSCAN) + return MODE_NO_DBLESCAN; + + return MODE_OK; +} + +bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, + struct drm_display_mode *mode, + struct drm_display_mode *adjusted_mode) +{ + return true; +} + +static bool g4x_hdmi_connected(struct intel_hdmi *intel_hdmi) +{ + struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi); + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t bit; + + switch (intel_hdmi->sdvox_reg) { + case SDVOB: + bit = HDMIB_HOTPLUG_LIVE_STATUS; + break; + case SDVOC: + bit = HDMIC_HOTPLUG_LIVE_STATUS; + break; + default: + bit = 0; + break; + } + + return I915_READ(PORT_HOTPLUG_STAT) & bit; +} + +static enum drm_connector_status +intel_hdmi_detect(struct drm_connector *connector, bool force) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct intel_digital_port *intel_dig_port = + hdmi_to_dig_port(intel_hdmi); + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct edid *edid; + enum drm_connector_status status = connector_status_disconnected; + + if (IS_G4X(connector->dev) && !g4x_hdmi_connected(intel_hdmi)) + return status; + + intel_hdmi->has_hdmi_sink = false; + intel_hdmi->has_audio = false; + edid = drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); + + if (edid) { + if (edid->input & DRM_EDID_INPUT_DIGITAL) { + status = connector_status_connected; + if (intel_hdmi->force_audio != HDMI_AUDIO_OFF_DVI) + intel_hdmi->has_hdmi_sink = + drm_detect_hdmi_monitor(edid); + intel_hdmi->has_audio = drm_detect_monitor_audio(edid); + } + kfree(edid); + } + + if (status == connector_status_connected) { + if (intel_hdmi->force_audio != HDMI_AUDIO_AUTO) + intel_hdmi->has_audio = + (intel_hdmi->force_audio == HDMI_AUDIO_ON); + intel_encoder->type = INTEL_OUTPUT_HDMI; + } + + return status; +} + +static int intel_hdmi_get_modes(struct drm_connector *connector) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + + /* We should parse the EDID data and find out if it's an HDMI sink so + * we can send audio to it. + */ + + return intel_ddc_get_modes(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); +} + +static bool +intel_hdmi_detect_audio(struct drm_connector *connector) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + struct edid *edid; + bool has_audio = false; + + edid = drm_get_edid(connector, + intel_gmbus_get_adapter(dev_priv, + intel_hdmi->ddc_bus)); + if (edid) { + if (edid->input & DRM_EDID_INPUT_DIGITAL) + has_audio = drm_detect_monitor_audio(edid); + kfree(edid); + } + + return has_audio; +} + +static int +intel_hdmi_set_property(struct drm_connector *connector, + struct drm_property *property, + uint64_t val) +{ + struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector); + struct intel_digital_port *intel_dig_port = + hdmi_to_dig_port(intel_hdmi); + struct drm_i915_private *dev_priv = connector->dev->dev_private; + int ret; + + ret = drm_connector_property_set_value(connector, property, val); + if (ret) + return ret; + + if (property == dev_priv->force_audio_property) { + enum hdmi_force_audio i = val; + bool has_audio; + + if (i == intel_hdmi->force_audio) + return 0; + + intel_hdmi->force_audio = i; + + if (i == HDMI_AUDIO_AUTO) + has_audio = intel_hdmi_detect_audio(connector); + else + has_audio = (i == HDMI_AUDIO_ON); + + if (i == HDMI_AUDIO_OFF_DVI) + intel_hdmi->has_hdmi_sink = 0; + + intel_hdmi->has_audio = has_audio; + goto done; + } + + if (property == dev_priv->broadcast_rgb_property) { + if (val == !!intel_hdmi->color_range) + return 0; + + intel_hdmi->color_range = val ? SDVO_COLOR_RANGE_16_235 : 0; + goto done; + } + + return -EINVAL; + +done: + if (intel_dig_port->base.base.crtc) { + struct drm_crtc *crtc = intel_dig_port->base.base.crtc; + intel_set_mode(crtc, &crtc->mode, + crtc->x, crtc->y, crtc->fb); + } + + return 0; +} + +static void intel_hdmi_destroy(struct drm_connector *connector) +{ + drm_sysfs_connector_remove(connector); + drm_connector_cleanup(connector); + kfree(connector); +} + +static const struct drm_encoder_helper_funcs intel_hdmi_helper_funcs = { + .mode_fixup = intel_hdmi_mode_fixup, + .mode_set = intel_hdmi_mode_set, + .disable = intel_encoder_noop, +}; + +static const struct drm_connector_funcs intel_hdmi_connector_funcs = { + .dpms = intel_connector_dpms, + .detect = intel_hdmi_detect, + .fill_modes = drm_helper_probe_single_connector_modes, + .set_property = intel_hdmi_set_property, + .destroy = intel_hdmi_destroy, +}; + +static const struct drm_connector_helper_funcs intel_hdmi_connector_helper_funcs = { + .get_modes = intel_hdmi_get_modes, + .mode_valid = intel_hdmi_mode_valid, + .best_encoder = intel_best_encoder, +}; + +static const struct drm_encoder_funcs intel_hdmi_enc_funcs = { + .destroy = intel_encoder_destroy, +}; + +static void +intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector) +{ + intel_attach_force_audio_property(connector); + intel_attach_broadcast_rgb_property(connector); +} + +void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, + struct intel_connector *intel_connector) +{ + struct drm_connector *connector = &intel_connector->base; + struct intel_hdmi *intel_hdmi = &intel_dig_port->hdmi; + struct intel_encoder *intel_encoder = &intel_dig_port->base; + struct drm_device *dev = intel_encoder->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + enum port port = intel_dig_port->port; + + drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, + DRM_MODE_CONNECTOR_HDMIA); + drm_connector_helper_add(connector, &intel_hdmi_connector_helper_funcs); + + connector->polled = DRM_CONNECTOR_POLL_HPD; + connector->interlace_allowed = 1; + connector->doublescan_allowed = 0; + + switch (port) { + case PORT_B: + intel_hdmi->ddc_bus = GMBUS_PORT_DPB; + dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS; + break; + case PORT_C: + intel_hdmi->ddc_bus = GMBUS_PORT_DPC; + dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS; + break; + case PORT_D: + intel_hdmi->ddc_bus = GMBUS_PORT_DPD; + dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS; + break; + case PORT_A: + /* Internal port only for eDP. */ + default: + BUG(); + } + + if (!HAS_PCH_SPLIT(dev)) { + intel_hdmi->write_infoframe = g4x_write_infoframe; + intel_hdmi->set_infoframes = g4x_set_infoframes; + } else if (IS_VALLEYVIEW(dev)) { + intel_hdmi->write_infoframe = vlv_write_infoframe; + intel_hdmi->set_infoframes = vlv_set_infoframes; + } else if (IS_HASWELL(dev)) { + intel_hdmi->write_infoframe = hsw_write_infoframe; + intel_hdmi->set_infoframes = hsw_set_infoframes; + } else if (HAS_PCH_IBX(dev)) { + intel_hdmi->write_infoframe = ibx_write_infoframe; + intel_hdmi->set_infoframes = ibx_set_infoframes; + } else { + intel_hdmi->write_infoframe = cpt_write_infoframe; + intel_hdmi->set_infoframes = cpt_set_infoframes; + } + + if (IS_HASWELL(dev)) + intel_connector->get_hw_state = intel_ddi_connector_get_hw_state; + else + intel_connector->get_hw_state = intel_connector_get_hw_state; + + intel_hdmi_add_properties(intel_hdmi, connector); + + intel_connector_attach_encoder(intel_connector, intel_encoder); + drm_sysfs_connector_add(connector); + + /* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written + * 0xd. Failure to do so will result in spurious interrupts being + * generated on the port when a cable is not attached. + */ + if (IS_G4X(dev) && !IS_GM45(dev)) { + u32 temp = I915_READ(PEG_BAND_GAP_DATA); + I915_WRITE(PEG_BAND_GAP_DATA, (temp & ~0xf) | 0xd); + } +} + +void intel_hdmi_init(struct drm_device *dev, int sdvox_reg, enum port port) +{ + struct intel_digital_port *intel_dig_port; + struct intel_encoder *intel_encoder; + struct drm_encoder *encoder; + struct intel_connector *intel_connector; + + intel_dig_port = kzalloc(sizeof(struct intel_digital_port), GFP_KERNEL); + if (!intel_dig_port) + return; + + intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); + if (!intel_connector) { + kfree(intel_dig_port); + return; + } + + intel_encoder = &intel_dig_port->base; + encoder = &intel_encoder->base; + + drm_encoder_init(dev, &intel_encoder->base, &intel_hdmi_enc_funcs, + DRM_MODE_ENCODER_TMDS); + drm_encoder_helper_add(&intel_encoder->base, &intel_hdmi_helper_funcs); + + intel_encoder->enable = intel_enable_hdmi; + intel_encoder->disable = intel_disable_hdmi; + intel_encoder->get_hw_state = intel_hdmi_get_hw_state; + + intel_encoder->type = INTEL_OUTPUT_HDMI; + intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2); + intel_encoder->cloneable = false; + + intel_dig_port->port = port; + intel_dig_port->hdmi.sdvox_reg = sdvox_reg; + intel_dig_port->dp.output_reg = 0; + + intel_hdmi_init_connector(intel_dig_port, intel_connector); +} --- linux-3.5.0.orig/ubuntu/i915/intel_pm.c +++ linux-3.5.0/ubuntu/i915/intel_pm.c @@ -0,0 +1,4315 @@ +/* + * Copyright © 2012 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eugeni Dodonov + * + */ + +#include +#include "i915_drv.h" +#include "intel_drv.h" +#include "../../drivers/platform/x86/intel_ips.h" +#include + +#define FORCEWAKE_ACK_TIMEOUT_MS 2 + +/* FBC, or Frame Buffer Compression, is a technique employed to compress the + * framebuffer contents in-memory, aiming at reducing the required bandwidth + * during in-memory transfers and, therefore, reduce the power packet. + * + * The benefits of FBC are mostly visible with solid backgrounds and + * variation-less patterns. + * + * FBC-related functionality can be enabled by the means of the + * i915.i915_enable_fbc parameter + */ + +static void i8xx_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 fbc_ctl; + + /* Disable compression */ + fbc_ctl = I915_READ(FBC_CONTROL); + if ((fbc_ctl & FBC_CTL_EN) == 0) + return; + + fbc_ctl &= ~FBC_CTL_EN; + I915_WRITE(FBC_CONTROL, fbc_ctl); + + /* Wait for compressing bit to clear */ + if (wait_for((I915_READ(FBC_STATUS) & FBC_STAT_COMPRESSING) == 0, 10)) { + DRM_DEBUG_KMS("FBC idle timed out\n"); + return; + } + + DRM_DEBUG_KMS("disabled FBC\n"); +} + +static void i8xx_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int cfb_pitch; + int plane, i; + u32 fbc_ctl, fbc_ctl2; + + cfb_pitch = dev_priv->cfb_size / FBC_LL_SIZE; + if (fb->pitches[0] < cfb_pitch) + cfb_pitch = fb->pitches[0]; + + /* FBC_CTL wants 64B units */ + cfb_pitch = (cfb_pitch / 64) - 1; + plane = intel_crtc->plane == 0 ? FBC_CTL_PLANEA : FBC_CTL_PLANEB; + + /* Clear old tags */ + for (i = 0; i < (FBC_LL_SIZE / 32) + 1; i++) + I915_WRITE(FBC_TAG + (i * 4), 0); + + /* Set it up... */ + fbc_ctl2 = FBC_CTL_FENCE_DBL | FBC_CTL_IDLE_IMM | FBC_CTL_CPU_FENCE; + fbc_ctl2 |= plane; + I915_WRITE(FBC_CONTROL2, fbc_ctl2); + I915_WRITE(FBC_FENCE_OFF, crtc->y); + + /* enable it... */ + fbc_ctl = FBC_CTL_EN | FBC_CTL_PERIODIC; + if (IS_I945GM(dev)) + fbc_ctl |= FBC_CTL_C3_IDLE; /* 945 needs special SR handling */ + fbc_ctl |= (cfb_pitch & 0xff) << FBC_CTL_STRIDE_SHIFT; + fbc_ctl |= (interval & 0x2fff) << FBC_CTL_INTERVAL_SHIFT; + fbc_ctl |= obj->fence_reg; + I915_WRITE(FBC_CONTROL, fbc_ctl); + + DRM_DEBUG_KMS("enabled FBC, pitch %d, yoff %d, plane %d, ", + cfb_pitch, crtc->y, intel_crtc->plane); +} + +static bool i8xx_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(FBC_CONTROL) & FBC_CTL_EN; +} + +static void g4x_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int plane = intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : DPFC_CTL_PLANEB; + unsigned long stall_watermark = 200; + u32 dpfc_ctl; + + dpfc_ctl = plane | DPFC_SR_EN | DPFC_CTL_LIMIT_1X; + dpfc_ctl |= DPFC_CTL_FENCE_EN | obj->fence_reg; + I915_WRITE(DPFC_CHICKEN, DPFC_HT_MODIFY); + + I915_WRITE(DPFC_RECOMP_CTL, DPFC_RECOMP_STALL_EN | + (stall_watermark << DPFC_RECOMP_STALL_WM_SHIFT) | + (interval << DPFC_RECOMP_TIMER_COUNT_SHIFT)); + I915_WRITE(DPFC_FENCE_YOFF, crtc->y); + + /* enable it... */ + I915_WRITE(DPFC_CONTROL, I915_READ(DPFC_CONTROL) | DPFC_CTL_EN); + + DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane); +} + +static void g4x_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpfc_ctl; + + /* Disable compression */ + dpfc_ctl = I915_READ(DPFC_CONTROL); + if (dpfc_ctl & DPFC_CTL_EN) { + dpfc_ctl &= ~DPFC_CTL_EN; + I915_WRITE(DPFC_CONTROL, dpfc_ctl); + + DRM_DEBUG_KMS("disabled FBC\n"); + } +} + +static bool g4x_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(DPFC_CONTROL) & DPFC_CTL_EN; +} + +static void sandybridge_blit_fbc_update(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 blt_ecoskpd; + + /* Make sure blitter notifies FBC of writes */ + gen6_gt_force_wake_get(dev_priv); + blt_ecoskpd = I915_READ(GEN6_BLITTER_ECOSKPD); + blt_ecoskpd |= GEN6_BLITTER_FBC_NOTIFY << + GEN6_BLITTER_LOCK_SHIFT; + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + blt_ecoskpd |= GEN6_BLITTER_FBC_NOTIFY; + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + blt_ecoskpd &= ~(GEN6_BLITTER_FBC_NOTIFY << + GEN6_BLITTER_LOCK_SHIFT); + I915_WRITE(GEN6_BLITTER_ECOSKPD, blt_ecoskpd); + POSTING_READ(GEN6_BLITTER_ECOSKPD); + gen6_gt_force_wake_put(dev_priv); +} + +static void ironlake_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_framebuffer *fb = crtc->fb; + struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb); + struct drm_i915_gem_object *obj = intel_fb->obj; + struct intel_crtc *intel_crtc = to_intel_crtc(crtc); + int plane = intel_crtc->plane == 0 ? DPFC_CTL_PLANEA : DPFC_CTL_PLANEB; + unsigned long stall_watermark = 200; + u32 dpfc_ctl; + + dpfc_ctl = I915_READ(ILK_DPFC_CONTROL); + dpfc_ctl &= DPFC_RESERVED; + dpfc_ctl |= (plane | DPFC_CTL_LIMIT_1X); + /* Set persistent mode for front-buffer rendering, ala X. */ + dpfc_ctl |= DPFC_CTL_PERSISTENT_MODE; + dpfc_ctl |= (DPFC_CTL_FENCE_EN | obj->fence_reg); + I915_WRITE(ILK_DPFC_CHICKEN, DPFC_HT_MODIFY); + + I915_WRITE(ILK_DPFC_RECOMP_CTL, DPFC_RECOMP_STALL_EN | + (stall_watermark << DPFC_RECOMP_STALL_WM_SHIFT) | + (interval << DPFC_RECOMP_TIMER_COUNT_SHIFT)); + I915_WRITE(ILK_DPFC_FENCE_YOFF, crtc->y); + I915_WRITE(ILK_FBC_RT_BASE, obj->gtt_offset | ILK_FBC_RT_VALID); + /* enable it... */ + I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl | DPFC_CTL_EN); + + if (IS_GEN6(dev)) { + I915_WRITE(SNB_DPFC_CTL_SA, + SNB_CPU_FENCE_ENABLE | obj->fence_reg); + I915_WRITE(DPFC_CPU_FENCE_OFFSET, crtc->y); + sandybridge_blit_fbc_update(dev); + } + + DRM_DEBUG_KMS("enabled fbc on plane %d\n", intel_crtc->plane); +} + +static void ironlake_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dpfc_ctl; + + /* Disable compression */ + dpfc_ctl = I915_READ(ILK_DPFC_CONTROL); + if (dpfc_ctl & DPFC_CTL_EN) { + dpfc_ctl &= ~DPFC_CTL_EN; + I915_WRITE(ILK_DPFC_CONTROL, dpfc_ctl); + + DRM_DEBUG_KMS("disabled FBC\n"); + } +} + +static bool ironlake_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + return I915_READ(ILK_DPFC_CONTROL) & DPFC_CTL_EN; +} + +bool intel_fbc_enabled(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!dev_priv->display.fbc_enabled) + return false; + + return dev_priv->display.fbc_enabled(dev); +} + +static void intel_fbc_work_fn(struct work_struct *__work) +{ + struct intel_fbc_work *work = + container_of(to_delayed_work(__work), + struct intel_fbc_work, work); + struct drm_device *dev = work->crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + mutex_lock(&dev->struct_mutex); + if (work == dev_priv->fbc_work) { + /* Double check that we haven't switched fb without cancelling + * the prior work. + */ + if (work->crtc->fb == work->fb) { + dev_priv->display.enable_fbc(work->crtc, + work->interval); + + dev_priv->cfb_plane = to_intel_crtc(work->crtc)->plane; + dev_priv->cfb_fb = work->crtc->fb->base.id; + dev_priv->cfb_y = work->crtc->y; + } + + dev_priv->fbc_work = NULL; + } + mutex_unlock(&dev->struct_mutex); + + kfree(work); +} + +static void intel_cancel_fbc_work(struct drm_i915_private *dev_priv) +{ + if (dev_priv->fbc_work == NULL) + return; + + DRM_DEBUG_KMS("cancelling pending FBC enable\n"); + + /* Synchronisation is provided by struct_mutex and checking of + * dev_priv->fbc_work, so we can perform the cancellation + * entirely asynchronously. + */ + if (cancel_delayed_work(&dev_priv->fbc_work->work)) + /* tasklet was killed before being run, clean up */ + kfree(dev_priv->fbc_work); + + /* Mark the work as no longer wanted so that if it does + * wake-up (because the work was already running and waiting + * for our mutex), it will discover that is no longer + * necessary to run. + */ + dev_priv->fbc_work = NULL; +} + +void intel_enable_fbc(struct drm_crtc *crtc, unsigned long interval) +{ + struct intel_fbc_work *work; + struct drm_device *dev = crtc->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + if (!dev_priv->display.enable_fbc) + return; + + intel_cancel_fbc_work(dev_priv); + + work = kzalloc(sizeof *work, GFP_KERNEL); + if (work == NULL) { + dev_priv->display.enable_fbc(crtc, interval); + return; + } + + work->crtc = crtc; + work->fb = crtc->fb; + work->interval = interval; + INIT_DELAYED_WORK(&work->work, intel_fbc_work_fn); + + dev_priv->fbc_work = work; + + DRM_DEBUG_KMS("scheduling delayed FBC enable\n"); + + /* Delay the actual enabling to let pageflipping cease and the + * display to settle before starting the compression. Note that + * this delay also serves a second purpose: it allows for a + * vblank to pass after disabling the FBC before we attempt + * to modify the control registers. + * + * A more complicated solution would involve tracking vblanks + * following the termination of the page-flipping sequence + * and indeed performing the enable as a co-routine and not + * waiting synchronously upon the vblank. + */ + schedule_delayed_work(&work->work, msecs_to_jiffies(50)); +} + +void intel_disable_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + intel_cancel_fbc_work(dev_priv); + + if (!dev_priv->display.disable_fbc) + return; + + dev_priv->display.disable_fbc(dev); + dev_priv->cfb_plane = -1; +} + +/** + * intel_update_fbc - enable/disable FBC as needed + * @dev: the drm_device + * + * Set up the framebuffer compression hardware at mode set time. We + * enable it if possible: + * - plane A only (on pre-965) + * - no pixel mulitply/line duplication + * - no alpha buffer discard + * - no dual wide + * - framebuffer <= 2048 in width, 1536 in height + * + * We can't assume that any compression will take place (worst case), + * so the compressed buffer has to be the same size as the uncompressed + * one. It also must reside (along with the line length buffer) in + * stolen memory. + * + * We need to enable/disable FBC on a global basis. + */ +void intel_update_fbc(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc = NULL, *tmp_crtc; + struct intel_crtc *intel_crtc; + struct drm_framebuffer *fb; + struct intel_framebuffer *intel_fb; + struct drm_i915_gem_object *obj; + int enable_fbc; + + if (!i915_powersave) + return; + + if (!I915_HAS_FBC(dev)) + return; + + /* + * If FBC is already on, we just have to verify that we can + * keep it that way... + * Need to disable if: + * - more than one pipe is active + * - changing FBC params (stride, fence, mode) + * - new fb is too large to fit in compressed buffer + * - going to an unsupported config (interlace, pixel multiply, etc.) + */ + list_for_each_entry(tmp_crtc, &dev->mode_config.crtc_list, head) { + if (tmp_crtc->enabled && + !to_intel_crtc(tmp_crtc)->primary_disabled && + tmp_crtc->fb) { + if (crtc) { + DRM_DEBUG_KMS("more than one pipe active, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_MULTIPLE_PIPES; + goto out_disable; + } + crtc = tmp_crtc; + } + } + + if (!crtc || crtc->fb == NULL) { + DRM_DEBUG_KMS("no output, disabling\n"); + dev_priv->no_fbc_reason = FBC_NO_OUTPUT; + goto out_disable; + } + + intel_crtc = to_intel_crtc(crtc); + fb = crtc->fb; + intel_fb = to_intel_framebuffer(fb); + obj = intel_fb->obj; + + enable_fbc = i915_enable_fbc; + if (enable_fbc < 0) { + DRM_DEBUG_KMS("fbc set to per-chip default\n"); + enable_fbc = 1; + if (INTEL_INFO(dev)->gen <= 6) + enable_fbc = 0; + } + if (!enable_fbc) { + DRM_DEBUG_KMS("fbc disabled per module param\n"); + dev_priv->no_fbc_reason = FBC_MODULE_PARAM; + goto out_disable; + } + if (intel_fb->obj->base.size > dev_priv->cfb_size) { + DRM_DEBUG_KMS("framebuffer too large, disabling " + "compression\n"); + dev_priv->no_fbc_reason = FBC_STOLEN_TOO_SMALL; + goto out_disable; + } + if ((crtc->mode.flags & DRM_MODE_FLAG_INTERLACE) || + (crtc->mode.flags & DRM_MODE_FLAG_DBLSCAN)) { + DRM_DEBUG_KMS("mode incompatible with compression, " + "disabling\n"); + dev_priv->no_fbc_reason = FBC_UNSUPPORTED_MODE; + goto out_disable; + } + if ((crtc->mode.hdisplay > 2048) || + (crtc->mode.vdisplay > 1536)) { + DRM_DEBUG_KMS("mode too large for compression, disabling\n"); + dev_priv->no_fbc_reason = FBC_MODE_TOO_LARGE; + goto out_disable; + } + if ((IS_I915GM(dev) || IS_I945GM(dev)) && intel_crtc->plane != 0) { + DRM_DEBUG_KMS("plane not 0, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_BAD_PLANE; + goto out_disable; + } + + /* The use of a CPU fence is mandatory in order to detect writes + * by the CPU to the scanout and trigger updates to the FBC. + */ + if (obj->tiling_mode != I915_TILING_X || + obj->fence_reg == I915_FENCE_REG_NONE) { + DRM_DEBUG_KMS("framebuffer not tiled or fenced, disabling compression\n"); + dev_priv->no_fbc_reason = FBC_NOT_TILED; + goto out_disable; + } + + /* If the kernel debugger is active, always disable compression */ + if (in_dbg_master()) + goto out_disable; + + /* If the scanout has not changed, don't modify the FBC settings. + * Note that we make the fundamental assumption that the fb->obj + * cannot be unpinned (and have its GTT offset and fence revoked) + * without first being decoupled from the scanout and FBC disabled. + */ + if (dev_priv->cfb_plane == intel_crtc->plane && + dev_priv->cfb_fb == fb->base.id && + dev_priv->cfb_y == crtc->y) + return; + + if (intel_fbc_enabled(dev)) { + /* We update FBC along two paths, after changing fb/crtc + * configuration (modeswitching) and after page-flipping + * finishes. For the latter, we know that not only did + * we disable the FBC at the start of the page-flip + * sequence, but also more than one vblank has passed. + * + * For the former case of modeswitching, it is possible + * to switch between two FBC valid configurations + * instantaneously so we do need to disable the FBC + * before we can modify its control registers. We also + * have to wait for the next vblank for that to take + * effect. However, since we delay enabling FBC we can + * assume that a vblank has passed since disabling and + * that we can safely alter the registers in the deferred + * callback. + * + * In the scenario that we go from a valid to invalid + * and then back to valid FBC configuration we have + * no strict enforcement that a vblank occurred since + * disabling the FBC. However, along all current pipe + * disabling paths we do need to wait for a vblank at + * some point. And we wait before enabling FBC anyway. + */ + DRM_DEBUG_KMS("disabling active FBC for update\n"); + intel_disable_fbc(dev); + } + + intel_enable_fbc(crtc, 500); + return; + +out_disable: + /* Multiple disables should be harmless */ + if (intel_fbc_enabled(dev)) { + DRM_DEBUG_KMS("unsupported config, disabling FBC\n"); + intel_disable_fbc(dev); + } +} + +static void i915_pineview_get_mem_freq(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 tmp; + + tmp = I915_READ(CLKCFG); + + switch (tmp & CLKCFG_FSB_MASK) { + case CLKCFG_FSB_533: + dev_priv->fsb_freq = 533; /* 133*4 */ + break; + case CLKCFG_FSB_800: + dev_priv->fsb_freq = 800; /* 200*4 */ + break; + case CLKCFG_FSB_667: + dev_priv->fsb_freq = 667; /* 167*4 */ + break; + case CLKCFG_FSB_400: + dev_priv->fsb_freq = 400; /* 100*4 */ + break; + } + + switch (tmp & CLKCFG_MEM_MASK) { + case CLKCFG_MEM_533: + dev_priv->mem_freq = 533; + break; + case CLKCFG_MEM_667: + dev_priv->mem_freq = 667; + break; + case CLKCFG_MEM_800: + dev_priv->mem_freq = 800; + break; + } + + /* detect pineview DDR3 setting */ + tmp = I915_READ(CSHRDDR3CTL); + dev_priv->is_ddr3 = (tmp & CSHRDDR3CTL_DDR3) ? 1 : 0; +} + +static void i915_ironlake_get_mem_freq(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u16 ddrpll, csipll; + + ddrpll = I915_READ16(DDRMPLL1); + csipll = I915_READ16(CSIPLL0); + + switch (ddrpll & 0xff) { + case 0xc: + dev_priv->mem_freq = 800; + break; + case 0x10: + dev_priv->mem_freq = 1066; + break; + case 0x14: + dev_priv->mem_freq = 1333; + break; + case 0x18: + dev_priv->mem_freq = 1600; + break; + default: + DRM_DEBUG_DRIVER("unknown memory frequency 0x%02x\n", + ddrpll & 0xff); + dev_priv->mem_freq = 0; + break; + } + + dev_priv->ips.r_t = dev_priv->mem_freq; + + switch (csipll & 0x3ff) { + case 0x00c: + dev_priv->fsb_freq = 3200; + break; + case 0x00e: + dev_priv->fsb_freq = 3733; + break; + case 0x010: + dev_priv->fsb_freq = 4266; + break; + case 0x012: + dev_priv->fsb_freq = 4800; + break; + case 0x014: + dev_priv->fsb_freq = 5333; + break; + case 0x016: + dev_priv->fsb_freq = 5866; + break; + case 0x018: + dev_priv->fsb_freq = 6400; + break; + default: + DRM_DEBUG_DRIVER("unknown fsb frequency 0x%04x\n", + csipll & 0x3ff); + dev_priv->fsb_freq = 0; + break; + } + + if (dev_priv->fsb_freq == 3200) { + dev_priv->ips.c_m = 0; + } else if (dev_priv->fsb_freq > 3200 && dev_priv->fsb_freq <= 4800) { + dev_priv->ips.c_m = 1; + } else { + dev_priv->ips.c_m = 2; + } +} + +static const struct cxsr_latency cxsr_latency_table[] = { + {1, 0, 800, 400, 3382, 33382, 3983, 33983}, /* DDR2-400 SC */ + {1, 0, 800, 667, 3354, 33354, 3807, 33807}, /* DDR2-667 SC */ + {1, 0, 800, 800, 3347, 33347, 3763, 33763}, /* DDR2-800 SC */ + {1, 1, 800, 667, 6420, 36420, 6873, 36873}, /* DDR3-667 SC */ + {1, 1, 800, 800, 5902, 35902, 6318, 36318}, /* DDR3-800 SC */ + + {1, 0, 667, 400, 3400, 33400, 4021, 34021}, /* DDR2-400 SC */ + {1, 0, 667, 667, 3372, 33372, 3845, 33845}, /* DDR2-667 SC */ + {1, 0, 667, 800, 3386, 33386, 3822, 33822}, /* DDR2-800 SC */ + {1, 1, 667, 667, 6438, 36438, 6911, 36911}, /* DDR3-667 SC */ + {1, 1, 667, 800, 5941, 35941, 6377, 36377}, /* DDR3-800 SC */ + + {1, 0, 400, 400, 3472, 33472, 4173, 34173}, /* DDR2-400 SC */ + {1, 0, 400, 667, 3443, 33443, 3996, 33996}, /* DDR2-667 SC */ + {1, 0, 400, 800, 3430, 33430, 3946, 33946}, /* DDR2-800 SC */ + {1, 1, 400, 667, 6509, 36509, 7062, 37062}, /* DDR3-667 SC */ + {1, 1, 400, 800, 5985, 35985, 6501, 36501}, /* DDR3-800 SC */ + + {0, 0, 800, 400, 3438, 33438, 4065, 34065}, /* DDR2-400 SC */ + {0, 0, 800, 667, 3410, 33410, 3889, 33889}, /* DDR2-667 SC */ + {0, 0, 800, 800, 3403, 33403, 3845, 33845}, /* DDR2-800 SC */ + {0, 1, 800, 667, 6476, 36476, 6955, 36955}, /* DDR3-667 SC */ + {0, 1, 800, 800, 5958, 35958, 6400, 36400}, /* DDR3-800 SC */ + + {0, 0, 667, 400, 3456, 33456, 4103, 34106}, /* DDR2-400 SC */ + {0, 0, 667, 667, 3428, 33428, 3927, 33927}, /* DDR2-667 SC */ + {0, 0, 667, 800, 3443, 33443, 3905, 33905}, /* DDR2-800 SC */ + {0, 1, 667, 667, 6494, 36494, 6993, 36993}, /* DDR3-667 SC */ + {0, 1, 667, 800, 5998, 35998, 6460, 36460}, /* DDR3-800 SC */ + + {0, 0, 400, 400, 3528, 33528, 4255, 34255}, /* DDR2-400 SC */ + {0, 0, 400, 667, 3500, 33500, 4079, 34079}, /* DDR2-667 SC */ + {0, 0, 400, 800, 3487, 33487, 4029, 34029}, /* DDR2-800 SC */ + {0, 1, 400, 667, 6566, 36566, 7145, 37145}, /* DDR3-667 SC */ + {0, 1, 400, 800, 6042, 36042, 6584, 36584}, /* DDR3-800 SC */ +}; + +static const struct cxsr_latency *intel_get_cxsr_latency(int is_desktop, + int is_ddr3, + int fsb, + int mem) +{ + const struct cxsr_latency *latency; + int i; + + if (fsb == 0 || mem == 0) + return NULL; + + for (i = 0; i < ARRAY_SIZE(cxsr_latency_table); i++) { + latency = &cxsr_latency_table[i]; + if (is_desktop == latency->is_desktop && + is_ddr3 == latency->is_ddr3 && + fsb == latency->fsb_freq && mem == latency->mem_freq) + return latency; + } + + DRM_DEBUG_KMS("Unknown FSB/MEM found, disable CxSR\n"); + + return NULL; +} + +static void pineview_disable_cxsr(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* deactivate cxsr */ + I915_WRITE(DSPFW3, I915_READ(DSPFW3) & ~PINEVIEW_SELF_REFRESH_EN); +} + +/* + * Latency for FIFO fetches is dependent on several factors: + * - memory configuration (speed, channels) + * - chipset + * - current MCH state + * It can be fairly high in some situations, so here we assume a fairly + * pessimal value. It's a tradeoff between extra memory fetches (if we + * set this value too high, the FIFO will fetch frequently to stay full) + * and power consumption (set it too low to save power and we might see + * FIFO underruns and display "flicker"). + * + * A value of 5us seems to be a good balance; safe for very low end + * platforms but not overly aggressive on lower latency configs. + */ +static const int latency_ns = 5000; + +static int i9xx_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + if (plane) + size = ((dsparb >> DSPARB_CSTART_SHIFT) & 0x7f) - size; + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +static int i85x_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x1ff; + if (plane) + size = ((dsparb >> DSPARB_BEND_SHIFT) & 0x1ff) - size; + size >>= 1; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +static int i845_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + size >>= 2; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", + size); + + return size; +} + +static int i830_get_fifo_size(struct drm_device *dev, int plane) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dsparb = I915_READ(DSPARB); + int size; + + size = dsparb & 0x7f; + size >>= 1; /* Convert to cachelines */ + + DRM_DEBUG_KMS("FIFO size - (0x%08x) %s: %d\n", dsparb, + plane ? "B" : "A", size); + + return size; +} + +/* Pineview has different values for various configs */ +static const struct intel_watermark_params pineview_display_wm = { + PINEVIEW_DISPLAY_FIFO, + PINEVIEW_MAX_WM, + PINEVIEW_DFT_WM, + PINEVIEW_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params pineview_display_hplloff_wm = { + PINEVIEW_DISPLAY_FIFO, + PINEVIEW_MAX_WM, + PINEVIEW_DFT_HPLLOFF_WM, + PINEVIEW_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params pineview_cursor_wm = { + PINEVIEW_CURSOR_FIFO, + PINEVIEW_CURSOR_MAX_WM, + PINEVIEW_CURSOR_DFT_WM, + PINEVIEW_CURSOR_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params pineview_cursor_hplloff_wm = { + PINEVIEW_CURSOR_FIFO, + PINEVIEW_CURSOR_MAX_WM, + PINEVIEW_CURSOR_DFT_WM, + PINEVIEW_CURSOR_GUARD_WM, + PINEVIEW_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params g4x_wm_info = { + G4X_FIFO_SIZE, + G4X_MAX_WM, + G4X_MAX_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params g4x_cursor_wm_info = { + I965_CURSOR_FIFO, + I965_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params valleyview_wm_info = { + VALLEYVIEW_FIFO_SIZE, + VALLEYVIEW_MAX_WM, + VALLEYVIEW_MAX_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params valleyview_cursor_wm_info = { + I965_CURSOR_FIFO, + VALLEYVIEW_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + G4X_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params i965_cursor_wm_info = { + I965_CURSOR_FIFO, + I965_CURSOR_MAX_WM, + I965_CURSOR_DFT_WM, + 2, + I915_FIFO_LINE_SIZE, +}; +static const struct intel_watermark_params i945_wm_info = { + I945_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I915_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i915_wm_info = { + I915_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I915_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i855_wm_info = { + I855GM_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I830_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params i830_wm_info = { + I830_FIFO_SIZE, + I915_MAX_WM, + 1, + 2, + I830_FIFO_LINE_SIZE +}; + +static const struct intel_watermark_params ironlake_display_wm_info = { + ILK_DISPLAY_FIFO, + ILK_DISPLAY_MAXWM, + ILK_DISPLAY_DFTWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_cursor_wm_info = { + ILK_CURSOR_FIFO, + ILK_CURSOR_MAXWM, + ILK_CURSOR_DFTWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_display_srwm_info = { + ILK_DISPLAY_SR_FIFO, + ILK_DISPLAY_MAX_SRWM, + ILK_DISPLAY_DFT_SRWM, + 2, + ILK_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params ironlake_cursor_srwm_info = { + ILK_CURSOR_SR_FIFO, + ILK_CURSOR_MAX_SRWM, + ILK_CURSOR_DFT_SRWM, + 2, + ILK_FIFO_LINE_SIZE +}; + +static const struct intel_watermark_params sandybridge_display_wm_info = { + SNB_DISPLAY_FIFO, + SNB_DISPLAY_MAXWM, + SNB_DISPLAY_DFTWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_cursor_wm_info = { + SNB_CURSOR_FIFO, + SNB_CURSOR_MAXWM, + SNB_CURSOR_DFTWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_display_srwm_info = { + SNB_DISPLAY_SR_FIFO, + SNB_DISPLAY_MAX_SRWM, + SNB_DISPLAY_DFT_SRWM, + 2, + SNB_FIFO_LINE_SIZE +}; +static const struct intel_watermark_params sandybridge_cursor_srwm_info = { + SNB_CURSOR_SR_FIFO, + SNB_CURSOR_MAX_SRWM, + SNB_CURSOR_DFT_SRWM, + 2, + SNB_FIFO_LINE_SIZE +}; + + +/** + * intel_calculate_wm - calculate watermark level + * @clock_in_khz: pixel clock + * @wm: chip FIFO params + * @pixel_size: display pixel size + * @latency_ns: memory latency for the platform + * + * Calculate the watermark level (the level at which the display plane will + * start fetching from memory again). Each chip has a different display + * FIFO size and allocation, so the caller needs to figure that out and pass + * in the correct intel_watermark_params structure. + * + * As the pixel clock runs, the FIFO will be drained at a rate that depends + * on the pixel size. When it reaches the watermark level, it'll start + * fetching FIFO line sized based chunks from memory until the FIFO fills + * past the watermark point. If the FIFO drains completely, a FIFO underrun + * will occur, and a display engine hang could result. + */ +static unsigned long intel_calculate_wm(unsigned long clock_in_khz, + const struct intel_watermark_params *wm, + int fifo_size, + int pixel_size, + unsigned long latency_ns) +{ + long entries_required, wm_size; + + /* + * Note: we need to make sure we don't overflow for various clock & + * latency values. + * clocks go from a few thousand to several hundred thousand. + * latency is usually a few thousand + */ + entries_required = ((clock_in_khz / 1000) * pixel_size * latency_ns) / + 1000; + entries_required = DIV_ROUND_UP(entries_required, wm->cacheline_size); + + DRM_DEBUG_KMS("FIFO entries required for mode: %ld\n", entries_required); + + wm_size = fifo_size - (entries_required + wm->guard_size); + + DRM_DEBUG_KMS("FIFO watermark level: %ld\n", wm_size); + + /* Don't promote wm_size to unsigned... */ + if (wm_size > (long)wm->max_wm) + wm_size = wm->max_wm; + if (wm_size <= 0) + wm_size = wm->default_wm; + return wm_size; +} + +static struct drm_crtc *single_enabled_crtc(struct drm_device *dev) +{ + struct drm_crtc *crtc, *enabled = NULL; + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + if (crtc->enabled && crtc->fb) { + if (enabled) + return NULL; + enabled = crtc; + } + } + + return enabled; +} + +static void pineview_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + const struct cxsr_latency *latency; + u32 reg; + unsigned long wm; + + latency = intel_get_cxsr_latency(IS_PINEVIEW_G(dev), dev_priv->is_ddr3, + dev_priv->fsb_freq, dev_priv->mem_freq); + if (!latency) { + DRM_DEBUG_KMS("Unknown FSB/MEM found, disable CxSR\n"); + pineview_disable_cxsr(dev); + return; + } + + crtc = single_enabled_crtc(dev); + if (crtc) { + int clock = crtc->mode.clock; + int pixel_size = crtc->fb->bits_per_pixel / 8; + + /* Display SR */ + wm = intel_calculate_wm(clock, &pineview_display_wm, + pineview_display_wm.fifo_size, + pixel_size, latency->display_sr); + reg = I915_READ(DSPFW1); + reg &= ~DSPFW_SR_MASK; + reg |= wm << DSPFW_SR_SHIFT; + I915_WRITE(DSPFW1, reg); + DRM_DEBUG_KMS("DSPFW1 register is %x\n", reg); + + /* cursor SR */ + wm = intel_calculate_wm(clock, &pineview_cursor_wm, + pineview_display_wm.fifo_size, + pixel_size, latency->cursor_sr); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_CURSOR_SR_MASK; + reg |= (wm & 0x3f) << DSPFW_CURSOR_SR_SHIFT; + I915_WRITE(DSPFW3, reg); + + /* Display HPLL off SR */ + wm = intel_calculate_wm(clock, &pineview_display_hplloff_wm, + pineview_display_hplloff_wm.fifo_size, + pixel_size, latency->display_hpll_disable); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_HPLL_SR_MASK; + reg |= wm & DSPFW_HPLL_SR_MASK; + I915_WRITE(DSPFW3, reg); + + /* cursor HPLL off SR */ + wm = intel_calculate_wm(clock, &pineview_cursor_hplloff_wm, + pineview_display_hplloff_wm.fifo_size, + pixel_size, latency->cursor_hpll_disable); + reg = I915_READ(DSPFW3); + reg &= ~DSPFW_HPLL_CURSOR_MASK; + reg |= (wm & 0x3f) << DSPFW_HPLL_CURSOR_SHIFT; + I915_WRITE(DSPFW3, reg); + DRM_DEBUG_KMS("DSPFW3 register is %x\n", reg); + + /* activate cxsr */ + I915_WRITE(DSPFW3, + I915_READ(DSPFW3) | PINEVIEW_SELF_REFRESH_EN); + DRM_DEBUG_KMS("Self-refresh is enabled\n"); + } else { + pineview_disable_cxsr(dev); + DRM_DEBUG_KMS("Self-refresh is disabled\n"); + } +} + +static bool g4x_compute_wm0(struct drm_device *dev, + int plane, + const struct intel_watermark_params *display, + int display_latency_ns, + const struct intel_watermark_params *cursor, + int cursor_latency_ns, + int *plane_wm, + int *cursor_wm) +{ + struct drm_crtc *crtc; + int htotal, hdisplay, clock, pixel_size; + int line_time_us, line_count; + int entries, tlb_miss; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (crtc->fb == NULL || !crtc->enabled) { + *cursor_wm = cursor->guard_size; + *plane_wm = display->guard_size; + return false; + } + + htotal = crtc->mode.htotal; + hdisplay = crtc->mode.hdisplay; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + /* Use the small buffer method to calculate plane watermark */ + entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000; + tlb_miss = display->fifo_size*display->cacheline_size - hdisplay * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, display->cacheline_size); + *plane_wm = entries + display->guard_size; + if (*plane_wm > (int)display->max_wm) + *plane_wm = display->max_wm; + + /* Use the large buffer method to calculate cursor watermark */ + line_time_us = ((htotal * 1000) / clock); + line_count = (cursor_latency_ns / line_time_us + 1000) / 1000; + entries = line_count * 64 * pixel_size; + tlb_miss = cursor->fifo_size*cursor->cacheline_size - hdisplay * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + if (*cursor_wm > (int)cursor->max_wm) + *cursor_wm = (int)cursor->max_wm; + + return true; +} + +/* + * Check the wm result. + * + * If any calculated watermark values is larger than the maximum value that + * can be programmed into the associated watermark register, that watermark + * must be disabled. + */ +static bool g4x_check_srwm(struct drm_device *dev, + int display_wm, int cursor_wm, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor) +{ + DRM_DEBUG_KMS("SR watermark: display plane %d, cursor %d\n", + display_wm, cursor_wm); + + if (display_wm > display->max_wm) { + DRM_DEBUG_KMS("display watermark is too large(%d/%ld), disabling\n", + display_wm, display->max_wm); + return false; + } + + if (cursor_wm > cursor->max_wm) { + DRM_DEBUG_KMS("cursor watermark is too large(%d/%ld), disabling\n", + cursor_wm, cursor->max_wm); + return false; + } + + if (!(display_wm || cursor_wm)) { + DRM_DEBUG_KMS("SR latency is 0, disabling\n"); + return false; + } + + return true; +} + +static bool g4x_compute_srwm(struct drm_device *dev, + int plane, + int latency_ns, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor, + int *display_wm, int *cursor_wm) +{ + struct drm_crtc *crtc; + int hdisplay, htotal, pixel_size, clock; + unsigned long line_time_us; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *display_wm = *cursor_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + hdisplay = crtc->mode.hdisplay; + htotal = crtc->mode.htotal; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + line_time_us = (htotal * 1000) / clock; + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = hdisplay * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *display_wm = entries + display->guard_size; + + /* calculate the self-refresh watermark for display cursor */ + entries = line_count * pixel_size * 64; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + + return g4x_check_srwm(dev, + *display_wm, *cursor_wm, + display, cursor); +} + +static bool vlv_compute_drain_latency(struct drm_device *dev, + int plane, + int *plane_prec_mult, + int *plane_dl, + int *cursor_prec_mult, + int *cursor_dl) +{ + struct drm_crtc *crtc; + int clock, pixel_size; + int entries; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (crtc->fb == NULL || !crtc->enabled) + return false; + + clock = crtc->mode.clock; /* VESA DOT Clock */ + pixel_size = crtc->fb->bits_per_pixel / 8; /* BPP */ + + entries = (clock / 1000) * pixel_size; + *plane_prec_mult = (entries > 256) ? + DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16; + *plane_dl = (64 * (*plane_prec_mult) * 4) / ((clock / 1000) * + pixel_size); + + entries = (clock / 1000) * 4; /* BPP is always 4 for cursor */ + *cursor_prec_mult = (entries > 256) ? + DRAIN_LATENCY_PRECISION_32 : DRAIN_LATENCY_PRECISION_16; + *cursor_dl = (64 * (*cursor_prec_mult) * 4) / ((clock / 1000) * 4); + + return true; +} + +/* + * Update drain latency registers of memory arbiter + * + * Valleyview SoC has a new memory arbiter and needs drain latency registers + * to be programmed. Each plane has a drain latency multiplier and a drain + * latency value. + */ + +static void vlv_update_drain_latency(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_prec, planea_dl, planeb_prec, planeb_dl; + int cursora_prec, cursora_dl, cursorb_prec, cursorb_dl; + int plane_prec_mult, cursor_prec_mult; /* Precision multiplier is + either 16 or 32 */ + + /* For plane A, Cursor A */ + if (vlv_compute_drain_latency(dev, 0, &plane_prec_mult, &planea_dl, + &cursor_prec_mult, &cursora_dl)) { + cursora_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_CURSORA_PRECISION_32 : DDL_CURSORA_PRECISION_16; + planea_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_PLANEA_PRECISION_32 : DDL_PLANEA_PRECISION_16; + + I915_WRITE(VLV_DDL1, cursora_prec | + (cursora_dl << DDL_CURSORA_SHIFT) | + planea_prec | planea_dl); + } + + /* For plane B, Cursor B */ + if (vlv_compute_drain_latency(dev, 1, &plane_prec_mult, &planeb_dl, + &cursor_prec_mult, &cursorb_dl)) { + cursorb_prec = (cursor_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_CURSORB_PRECISION_32 : DDL_CURSORB_PRECISION_16; + planeb_prec = (plane_prec_mult == DRAIN_LATENCY_PRECISION_32) ? + DDL_PLANEB_PRECISION_32 : DDL_PLANEB_PRECISION_16; + + I915_WRITE(VLV_DDL2, cursorb_prec | + (cursorb_dl << DDL_CURSORB_SHIFT) | + planeb_prec | planeb_dl); + } +} + +#define single_plane_enabled(mask) is_power_of_2(mask) + +static void valleyview_update_wm(struct drm_device *dev) +{ + static const int sr_latency_ns = 12000; + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_wm, planeb_wm, cursora_wm, cursorb_wm; + int plane_sr, cursor_sr; + unsigned int enabled = 0; + + vlv_update_drain_latency(dev); + + if (g4x_compute_wm0(dev, 0, + &valleyview_wm_info, latency_ns, + &valleyview_cursor_wm_info, latency_ns, + &planea_wm, &cursora_wm)) + enabled |= 1; + + if (g4x_compute_wm0(dev, 1, + &valleyview_wm_info, latency_ns, + &valleyview_cursor_wm_info, latency_ns, + &planeb_wm, &cursorb_wm)) + enabled |= 2; + + plane_sr = cursor_sr = 0; + if (single_plane_enabled(enabled) && + g4x_compute_srwm(dev, ffs(enabled) - 1, + sr_latency_ns, + &valleyview_wm_info, + &valleyview_cursor_wm_info, + &plane_sr, &cursor_sr)) + I915_WRITE(FW_BLC_SELF_VLV, FW_CSPWRDWNEN); + else + I915_WRITE(FW_BLC_SELF_VLV, + I915_READ(FW_BLC_SELF_VLV) & ~FW_CSPWRDWNEN); + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: plane=%d, cursor=%d, B: plane=%d, cursor=%d, SR: plane=%d, cursor=%d\n", + planea_wm, cursora_wm, + planeb_wm, cursorb_wm, + plane_sr, cursor_sr); + + I915_WRITE(DSPFW1, + (plane_sr << DSPFW_SR_SHIFT) | + (cursorb_wm << DSPFW_CURSORB_SHIFT) | + (planeb_wm << DSPFW_PLANEB_SHIFT) | + planea_wm); + I915_WRITE(DSPFW2, + (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) | + (cursora_wm << DSPFW_CURSORA_SHIFT)); + I915_WRITE(DSPFW3, + (I915_READ(DSPFW3) | (cursor_sr << DSPFW_CURSOR_SR_SHIFT))); +} + +static void g4x_update_wm(struct drm_device *dev) +{ + static const int sr_latency_ns = 12000; + struct drm_i915_private *dev_priv = dev->dev_private; + int planea_wm, planeb_wm, cursora_wm, cursorb_wm; + int plane_sr, cursor_sr; + unsigned int enabled = 0; + + if (g4x_compute_wm0(dev, 0, + &g4x_wm_info, latency_ns, + &g4x_cursor_wm_info, latency_ns, + &planea_wm, &cursora_wm)) + enabled |= 1; + + if (g4x_compute_wm0(dev, 1, + &g4x_wm_info, latency_ns, + &g4x_cursor_wm_info, latency_ns, + &planeb_wm, &cursorb_wm)) + enabled |= 2; + + plane_sr = cursor_sr = 0; + if (single_plane_enabled(enabled) && + g4x_compute_srwm(dev, ffs(enabled) - 1, + sr_latency_ns, + &g4x_wm_info, + &g4x_cursor_wm_info, + &plane_sr, &cursor_sr)) + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); + else + I915_WRITE(FW_BLC_SELF, + I915_READ(FW_BLC_SELF) & ~FW_BLC_SELF_EN); + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: plane=%d, cursor=%d, B: plane=%d, cursor=%d, SR: plane=%d, cursor=%d\n", + planea_wm, cursora_wm, + planeb_wm, cursorb_wm, + plane_sr, cursor_sr); + + I915_WRITE(DSPFW1, + (plane_sr << DSPFW_SR_SHIFT) | + (cursorb_wm << DSPFW_CURSORB_SHIFT) | + (planeb_wm << DSPFW_PLANEB_SHIFT) | + planea_wm); + I915_WRITE(DSPFW2, + (I915_READ(DSPFW2) & DSPFW_CURSORA_MASK) | + (cursora_wm << DSPFW_CURSORA_SHIFT)); + /* HPLL off in SR has some issues on G4x... disable it */ + I915_WRITE(DSPFW3, + (I915_READ(DSPFW3) & ~DSPFW_HPLL_SR_EN) | + (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); +} + +static void i965_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + int srwm = 1; + int cursor_sr = 16; + + /* Calc sr entries for one plane configs */ + crtc = single_enabled_crtc(dev); + if (crtc) { + /* self-refresh has much higher latency */ + static const int sr_latency_ns = 12000; + int clock = crtc->mode.clock; + int htotal = crtc->mode.htotal; + int hdisplay = crtc->mode.hdisplay; + int pixel_size = crtc->fb->bits_per_pixel / 8; + unsigned long line_time_us; + int entries; + + line_time_us = ((htotal * 1000) / clock); + + /* Use ns/us then divide to preserve precision */ + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * hdisplay; + entries = DIV_ROUND_UP(entries, I915_FIFO_LINE_SIZE); + srwm = I965_FIFO_SIZE - entries; + if (srwm < 0) + srwm = 1; + srwm &= 0x1ff; + DRM_DEBUG_KMS("self-refresh entries: %d, wm: %d\n", + entries, srwm); + + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * 64; + entries = DIV_ROUND_UP(entries, + i965_cursor_wm_info.cacheline_size); + cursor_sr = i965_cursor_wm_info.fifo_size - + (entries + i965_cursor_wm_info.guard_size); + + if (cursor_sr > i965_cursor_wm_info.max_wm) + cursor_sr = i965_cursor_wm_info.max_wm; + + DRM_DEBUG_KMS("self-refresh watermark: display plane %d " + "cursor %d\n", srwm, cursor_sr); + + if (IS_CRESTLINE(dev)) + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN); + } else { + /* Turn off self refresh if both pipes are enabled */ + if (IS_CRESTLINE(dev)) + I915_WRITE(FW_BLC_SELF, I915_READ(FW_BLC_SELF) + & ~FW_BLC_SELF_EN); + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: 8, B: 8, C: 8, SR %d\n", + srwm); + + /* 965 has limitations... */ + I915_WRITE(DSPFW1, (srwm << DSPFW_SR_SHIFT) | + (8 << 16) | (8 << 8) | (8 << 0)); + I915_WRITE(DSPFW2, (8 << 8) | (8 << 0)); + /* update cursor SR watermark */ + I915_WRITE(DSPFW3, (cursor_sr << DSPFW_CURSOR_SR_SHIFT)); +} + +static void i9xx_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + const struct intel_watermark_params *wm_info; + uint32_t fwater_lo; + uint32_t fwater_hi; + int cwm, srwm = 1; + int fifo_size; + int planea_wm, planeb_wm; + struct drm_crtc *crtc, *enabled = NULL; + + if (IS_I945GM(dev)) + wm_info = &i945_wm_info; + else if (!IS_GEN2(dev)) + wm_info = &i915_wm_info; + else + wm_info = &i855_wm_info; + + fifo_size = dev_priv->display.get_fifo_size(dev, 0); + crtc = intel_get_crtc_for_plane(dev, 0); + if (crtc->enabled && crtc->fb) { + int cpp = crtc->fb->bits_per_pixel / 8; + if (IS_GEN2(dev)) + cpp = 4; + + planea_wm = intel_calculate_wm(crtc->mode.clock, + wm_info, fifo_size, cpp, + latency_ns); + enabled = crtc; + } else + planea_wm = fifo_size - wm_info->guard_size; + + fifo_size = dev_priv->display.get_fifo_size(dev, 1); + crtc = intel_get_crtc_for_plane(dev, 1); + if (crtc->enabled && crtc->fb) { + int cpp = crtc->fb->bits_per_pixel / 8; + if (IS_GEN2(dev)) + cpp = 4; + + planeb_wm = intel_calculate_wm(crtc->mode.clock, + wm_info, fifo_size, cpp, + latency_ns); + if (enabled == NULL) + enabled = crtc; + else + enabled = NULL; + } else + planeb_wm = fifo_size - wm_info->guard_size; + + DRM_DEBUG_KMS("FIFO watermarks - A: %d, B: %d\n", planea_wm, planeb_wm); + + /* + * Overlay gets an aggressive default since video jitter is bad. + */ + cwm = 2; + + /* Play safe and disable self-refresh before adjusting watermarks. */ + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, FW_BLC_SELF_EN_MASK | 0); + else if (IS_I915GM(dev)) + I915_WRITE(INSTPM, I915_READ(INSTPM) & ~INSTPM_SELF_EN); + + /* Calc sr entries for one plane configs */ + if (HAS_FW_BLC(dev) && enabled) { + /* self-refresh has much higher latency */ + static const int sr_latency_ns = 6000; + int clock = enabled->mode.clock; + int htotal = enabled->mode.htotal; + int hdisplay = enabled->mode.hdisplay; + int pixel_size = enabled->fb->bits_per_pixel / 8; + unsigned long line_time_us; + int entries; + + line_time_us = (htotal * 1000) / clock; + + /* Use ns/us then divide to preserve precision */ + entries = (((sr_latency_ns / line_time_us) + 1000) / 1000) * + pixel_size * hdisplay; + entries = DIV_ROUND_UP(entries, wm_info->cacheline_size); + DRM_DEBUG_KMS("self-refresh entries: %d\n", entries); + srwm = wm_info->fifo_size - entries; + if (srwm < 0) + srwm = 1; + + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, + FW_BLC_SELF_FIFO_MASK | (srwm & 0xff)); + else if (IS_I915GM(dev)) + I915_WRITE(FW_BLC_SELF, srwm & 0x3f); + } + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d, B: %d, C: %d, SR %d\n", + planea_wm, planeb_wm, cwm, srwm); + + fwater_lo = ((planeb_wm & 0x3f) << 16) | (planea_wm & 0x3f); + fwater_hi = (cwm & 0x1f); + + /* Set request length to 8 cachelines per fetch */ + fwater_lo = fwater_lo | (1 << 24) | (1 << 8); + fwater_hi = fwater_hi | (1 << 8); + + I915_WRITE(FW_BLC, fwater_lo); + I915_WRITE(FW_BLC2, fwater_hi); + + if (HAS_FW_BLC(dev)) { + if (enabled) { + if (IS_I945G(dev) || IS_I945GM(dev)) + I915_WRITE(FW_BLC_SELF, + FW_BLC_SELF_EN_MASK | FW_BLC_SELF_EN); + else if (IS_I915GM(dev)) + I915_WRITE(INSTPM, I915_READ(INSTPM) | INSTPM_SELF_EN); + DRM_DEBUG_KMS("memory self refresh enabled\n"); + } else + DRM_DEBUG_KMS("memory self refresh disabled\n"); + } +} + +static void i830_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_crtc *crtc; + uint32_t fwater_lo; + int planea_wm; + + crtc = single_enabled_crtc(dev); + if (crtc == NULL) + return; + + planea_wm = intel_calculate_wm(crtc->mode.clock, &i830_wm_info, + dev_priv->display.get_fifo_size(dev, 0), + 4, latency_ns); + fwater_lo = I915_READ(FW_BLC) & ~0xfff; + fwater_lo |= (3<<8) | planea_wm; + + DRM_DEBUG_KMS("Setting FIFO watermarks - A: %d\n", planea_wm); + + I915_WRITE(FW_BLC, fwater_lo); +} + +#define ILK_LP0_PLANE_LATENCY 700 +#define ILK_LP0_CURSOR_LATENCY 1300 + +/* + * Check the wm result. + * + * If any calculated watermark values is larger than the maximum value that + * can be programmed into the associated watermark register, that watermark + * must be disabled. + */ +static bool ironlake_check_srwm(struct drm_device *dev, int level, + int fbc_wm, int display_wm, int cursor_wm, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + DRM_DEBUG_KMS("watermark %d: display plane %d, fbc lines %d," + " cursor %d\n", level, display_wm, fbc_wm, cursor_wm); + + if (fbc_wm > SNB_FBC_MAX_SRWM) { + DRM_DEBUG_KMS("fbc watermark(%d) is too large(%d), disabling wm%d+\n", + fbc_wm, SNB_FBC_MAX_SRWM, level); + + /* fbc has it's own way to disable FBC WM */ + I915_WRITE(DISP_ARB_CTL, + I915_READ(DISP_ARB_CTL) | DISP_FBC_WM_DIS); + return false; + } + + if (display_wm > display->max_wm) { + DRM_DEBUG_KMS("display watermark(%d) is too large(%d), disabling wm%d+\n", + display_wm, SNB_DISPLAY_MAX_SRWM, level); + return false; + } + + if (cursor_wm > cursor->max_wm) { + DRM_DEBUG_KMS("cursor watermark(%d) is too large(%d), disabling wm%d+\n", + cursor_wm, SNB_CURSOR_MAX_SRWM, level); + return false; + } + + if (!(fbc_wm || display_wm || cursor_wm)) { + DRM_DEBUG_KMS("latency %d is 0, disabling wm%d+\n", level, level); + return false; + } + + return true; +} + +/* + * Compute watermark values of WM[1-3], + */ +static bool ironlake_compute_srwm(struct drm_device *dev, int level, int plane, + int latency_ns, + const struct intel_watermark_params *display, + const struct intel_watermark_params *cursor, + int *fbc_wm, int *display_wm, int *cursor_wm) +{ + struct drm_crtc *crtc; + unsigned long line_time_us; + int hdisplay, htotal, pixel_size, clock; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *fbc_wm = *display_wm = *cursor_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + hdisplay = crtc->mode.hdisplay; + htotal = crtc->mode.htotal; + clock = crtc->mode.clock; + pixel_size = crtc->fb->bits_per_pixel / 8; + + line_time_us = (htotal * 1000) / clock; + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = hdisplay * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *display_wm = entries + display->guard_size; + + /* + * Spec says: + * FBC WM = ((Final Primary WM * 64) / number of bytes per line) + 2 + */ + *fbc_wm = DIV_ROUND_UP(*display_wm * 64, line_size) + 2; + + /* calculate the self-refresh watermark for display cursor */ + entries = line_count * pixel_size * 64; + entries = DIV_ROUND_UP(entries, cursor->cacheline_size); + *cursor_wm = entries + cursor->guard_size; + + return ironlake_check_srwm(dev, level, + *fbc_wm, *display_wm, *cursor_wm, + display, cursor); +} + +static void ironlake_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int fbc_wm, plane_wm, cursor_wm; + unsigned int enabled; + + enabled = 0; + if (g4x_compute_wm0(dev, 0, + &ironlake_display_wm_info, + ILK_LP0_PLANE_LATENCY, + &ironlake_cursor_wm_info, + ILK_LP0_CURSOR_LATENCY, + &plane_wm, &cursor_wm)) { + I915_WRITE(WM0_PIPEA_ILK, + (plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm); + DRM_DEBUG_KMS("FIFO watermarks For pipe A -" + " plane %d, " "cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 1; + } + + if (g4x_compute_wm0(dev, 1, + &ironlake_display_wm_info, + ILK_LP0_PLANE_LATENCY, + &ironlake_cursor_wm_info, + ILK_LP0_CURSOR_LATENCY, + &plane_wm, &cursor_wm)) { + I915_WRITE(WM0_PIPEB_ILK, + (plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm); + DRM_DEBUG_KMS("FIFO watermarks For pipe B -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 2; + } + + /* + * Calculate and update the self-refresh watermark only when one + * display plane is used. + */ + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + if (!single_plane_enabled(enabled)) + return; + enabled = ffs(enabled) - 1; + + /* WM1 */ + if (!ironlake_compute_srwm(dev, 1, enabled, + ILK_READ_WM1_LATENCY() * 500, + &ironlake_display_srwm_info, + &ironlake_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM1_LP_ILK, + WM1_LP_SR_EN | + (ILK_READ_WM1_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM2 */ + if (!ironlake_compute_srwm(dev, 2, enabled, + ILK_READ_WM2_LATENCY() * 500, + &ironlake_display_srwm_info, + &ironlake_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM2_LP_ILK, + WM2_LP_EN | + (ILK_READ_WM2_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* + * WM3 is unsupported on ILK, probably because we don't have latency + * data for that power state + */ +} + +static void sandybridge_update_wm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int latency = SNB_READ_WM0_LATENCY() * 100; /* In unit 0.1us */ + u32 val; + int fbc_wm, plane_wm, cursor_wm; + unsigned int enabled; + + enabled = 0; + if (g4x_compute_wm0(dev, 0, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEA_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEA_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe A -" + " plane %d, " "cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 1; + } + + if (g4x_compute_wm0(dev, 1, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEB_ILK); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEB_ILK, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe B -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 2; + } + + if ((dev_priv->num_pipe == 3) && + g4x_compute_wm0(dev, 2, + &sandybridge_display_wm_info, latency, + &sandybridge_cursor_wm_info, latency, + &plane_wm, &cursor_wm)) { + val = I915_READ(WM0_PIPEC_IVB); + val &= ~(WM0_PIPE_PLANE_MASK | WM0_PIPE_CURSOR_MASK); + I915_WRITE(WM0_PIPEC_IVB, val | + ((plane_wm << WM0_PIPE_PLANE_SHIFT) | cursor_wm)); + DRM_DEBUG_KMS("FIFO watermarks For pipe C -" + " plane %d, cursor: %d\n", + plane_wm, cursor_wm); + enabled |= 3; + } + + /* + * Calculate and update the self-refresh watermark only when one + * display plane is used. + * + * SNB support 3 levels of watermark. + * + * WM1/WM2/WM2 watermarks have to be enabled in the ascending order, + * and disabled in the descending order + * + */ + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + if (!single_plane_enabled(enabled) || + dev_priv->sprite_scaling_enabled) + return; + enabled = ffs(enabled) - 1; + + /* WM1 */ + if (!ironlake_compute_srwm(dev, 1, enabled, + SNB_READ_WM1_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM1_LP_ILK, + WM1_LP_SR_EN | + (SNB_READ_WM1_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM2 */ + if (!ironlake_compute_srwm(dev, 2, enabled, + SNB_READ_WM2_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM2_LP_ILK, + WM2_LP_EN | + (SNB_READ_WM2_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); + + /* WM3 */ + if (!ironlake_compute_srwm(dev, 3, enabled, + SNB_READ_WM3_LATENCY() * 500, + &sandybridge_display_srwm_info, + &sandybridge_cursor_srwm_info, + &fbc_wm, &plane_wm, &cursor_wm)) + return; + + I915_WRITE(WM3_LP_ILK, + WM3_LP_EN | + (SNB_READ_WM3_LATENCY() << WM1_LP_LATENCY_SHIFT) | + (fbc_wm << WM1_LP_FBC_SHIFT) | + (plane_wm << WM1_LP_SR_SHIFT) | + cursor_wm); +} + +static void +haswell_update_linetime_wm(struct drm_device *dev, int pipe, + struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 temp; + + temp = I915_READ(PIPE_WM_LINETIME(pipe)); + temp &= ~PIPE_WM_LINETIME_MASK; + + /* The WM are computed with base on how long it takes to fill a single + * row at the given clock rate, multiplied by 8. + * */ + temp |= PIPE_WM_LINETIME_TIME( + ((mode->crtc_hdisplay * 1000) / mode->clock) * 8); + + /* IPS watermarks are only used by pipe A, and are ignored by + * pipes B and C. They are calculated similarly to the common + * linetime values, except that we are using CD clock frequency + * in MHz instead of pixel rate for the division. + * + * This is a placeholder for the IPS watermark calculation code. + */ + + I915_WRITE(PIPE_WM_LINETIME(pipe), temp); +} + +static bool +sandybridge_compute_sprite_wm(struct drm_device *dev, int plane, + uint32_t sprite_width, int pixel_size, + const struct intel_watermark_params *display, + int display_latency_ns, int *sprite_wm) +{ + struct drm_crtc *crtc; + int clock; + int entries, tlb_miss; + + crtc = intel_get_crtc_for_plane(dev, plane); + if (crtc->fb == NULL || !crtc->enabled) { + *sprite_wm = display->guard_size; + return false; + } + + clock = crtc->mode.clock; + + /* Use the small buffer method to calculate the sprite watermark */ + entries = ((clock * pixel_size / 1000) * display_latency_ns) / 1000; + tlb_miss = display->fifo_size*display->cacheline_size - + sprite_width * 8; + if (tlb_miss > 0) + entries += tlb_miss; + entries = DIV_ROUND_UP(entries, display->cacheline_size); + *sprite_wm = entries + display->guard_size; + if (*sprite_wm > (int)display->max_wm) + *sprite_wm = display->max_wm; + + return true; +} + +static bool +sandybridge_compute_sprite_srwm(struct drm_device *dev, int plane, + uint32_t sprite_width, int pixel_size, + const struct intel_watermark_params *display, + int latency_ns, int *sprite_wm) +{ + struct drm_crtc *crtc; + unsigned long line_time_us; + int clock; + int line_count, line_size; + int small, large; + int entries; + + if (!latency_ns) { + *sprite_wm = 0; + return false; + } + + crtc = intel_get_crtc_for_plane(dev, plane); + clock = crtc->mode.clock; + if (!clock) { + *sprite_wm = 0; + return false; + } + + line_time_us = (sprite_width * 1000) / clock; + if (!line_time_us) { + *sprite_wm = 0; + return false; + } + + line_count = (latency_ns / line_time_us + 1000) / 1000; + line_size = sprite_width * pixel_size; + + /* Use the minimum of the small and large buffer method for primary */ + small = ((clock * pixel_size / 1000) * latency_ns) / 1000; + large = line_count * line_size; + + entries = DIV_ROUND_UP(min(small, large), display->cacheline_size); + *sprite_wm = entries + display->guard_size; + + return *sprite_wm > 0x3ff ? false : true; +} + +static void sandybridge_update_sprite_wm(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int latency = SNB_READ_WM0_LATENCY() * 100; /* In unit 0.1us */ + u32 val; + int sprite_wm, reg; + int ret; + + switch (pipe) { + case 0: + reg = WM0_PIPEA_ILK; + break; + case 1: + reg = WM0_PIPEB_ILK; + break; + case 2: + reg = WM0_PIPEC_IVB; + break; + default: + return; /* bad pipe */ + } + + ret = sandybridge_compute_sprite_wm(dev, pipe, sprite_width, pixel_size, + &sandybridge_display_wm_info, + latency, &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite wm for pipe %d\n", + pipe); + return; + } + + val = I915_READ(reg); + val &= ~WM0_PIPE_SPRITE_MASK; + I915_WRITE(reg, val | (sprite_wm << WM0_PIPE_SPRITE_SHIFT)); + DRM_DEBUG_KMS("sprite watermarks For pipe %d - %d\n", pipe, sprite_wm); + + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM1_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp1 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM1S_LP_ILK, sprite_wm); + + /* Only IVB has two more LP watermarks for sprite */ + if (!IS_IVYBRIDGE(dev)) + return; + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM2_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp2 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM2S_LP_IVB, sprite_wm); + + ret = sandybridge_compute_sprite_srwm(dev, pipe, sprite_width, + pixel_size, + &sandybridge_display_srwm_info, + SNB_READ_WM3_LATENCY() * 500, + &sprite_wm); + if (!ret) { + DRM_DEBUG_KMS("failed to compute sprite lp3 wm on pipe %d\n", + pipe); + return; + } + I915_WRITE(WM3S_LP_IVB, sprite_wm); +} + +/** + * intel_update_watermarks - update FIFO watermark values based on current modes + * + * Calculate watermark values for the various WM regs based on current mode + * and plane configuration. + * + * There are several cases to deal with here: + * - normal (i.e. non-self-refresh) + * - self-refresh (SR) mode + * - lines are large relative to FIFO size (buffer can hold up to 2) + * - lines are small relative to FIFO size (buffer can hold more than 2 + * lines), so need to account for TLB latency + * + * The normal calculation is: + * watermark = dotclock * bytes per pixel * latency + * where latency is platform & configuration dependent (we assume pessimal + * values here). + * + * The SR calculation is: + * watermark = (trunc(latency/line time)+1) * surface width * + * bytes per pixel + * where + * line time = htotal / dotclock + * surface width = hdisplay for normal plane and 64 for cursor + * and latency is assumed to be high, as above. + * + * The final value programmed to the register should always be rounded up, + * and include an extra 2 entries to account for clock crossings. + * + * We don't use the sprite, so we can ignore that. And on Crestline we have + * to set the non-SR watermarks to 8. + */ +void intel_update_watermarks(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_wm) + dev_priv->display.update_wm(dev); +} + +void intel_update_linetime_watermarks(struct drm_device *dev, + int pipe, struct drm_display_mode *mode) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_linetime_wm) + dev_priv->display.update_linetime_wm(dev, pipe, mode); +} + +void intel_update_sprite_watermarks(struct drm_device *dev, int pipe, + uint32_t sprite_width, int pixel_size) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->display.update_sprite_wm) + dev_priv->display.update_sprite_wm(dev, pipe, sprite_width, + pixel_size); +} + +static struct drm_i915_gem_object * +intel_alloc_context_page(struct drm_device *dev) +{ + struct drm_i915_gem_object *ctx; + int ret; + + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + + ctx = i915_gem_alloc_object(dev, 4096); + if (!ctx) { + DRM_DEBUG("failed to alloc power context, RC6 disabled\n"); + return NULL; + } + + ret = i915_gem_object_pin(ctx, 4096, true, false); + if (ret) { + DRM_ERROR("failed to pin power context: %d\n", ret); + goto err_unref; + } + + ret = i915_gem_object_set_to_gtt_domain(ctx, 1); + if (ret) { + DRM_ERROR("failed to set-domain on power context: %d\n", ret); + goto err_unpin; + } + + return ctx; + +err_unpin: + i915_gem_object_unpin(ctx); +err_unref: + drm_gem_object_unreference(&ctx->base); + mutex_unlock(&dev->struct_mutex); + return NULL; +} + +/** + * Lock protecting IPS related data structures + */ +DEFINE_SPINLOCK(mchdev_lock); + +/* Global for IPS driver to get at the current i915 device. Protected by + * mchdev_lock. */ +static struct drm_i915_private *i915_mch_dev; + +bool ironlake_set_drps(struct drm_device *dev, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 rgvswctl; + + assert_spin_locked(&mchdev_lock); + + rgvswctl = I915_READ16(MEMSWCTL); + if (rgvswctl & MEMCTL_CMD_STS) { + DRM_DEBUG("gpu busy, RCS change rejected\n"); + return false; /* still busy with another command */ + } + + rgvswctl = (MEMCTL_CMD_CHFREQ << MEMCTL_CMD_SHIFT) | + (val << MEMCTL_FREQ_SHIFT) | MEMCTL_SFCAVM; + I915_WRITE16(MEMSWCTL, rgvswctl); + POSTING_READ16(MEMSWCTL); + + rgvswctl |= MEMCTL_CMD_STS; + I915_WRITE16(MEMSWCTL, rgvswctl); + + return true; +} + +static void ironlake_enable_drps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 rgvmodectl = I915_READ(MEMMODECTL); + u8 fmax, fmin, fstart, vstart; + + spin_lock_irq(&mchdev_lock); + + /* Enable temp reporting */ + I915_WRITE16(PMMISC, I915_READ(PMMISC) | MCPPCE_EN); + I915_WRITE16(TSC1, I915_READ(TSC1) | TSE); + + /* 100ms RC evaluation intervals */ + I915_WRITE(RCUPEI, 100000); + I915_WRITE(RCDNEI, 100000); + + /* Set max/min thresholds to 90ms and 80ms respectively */ + I915_WRITE(RCBMAXAVG, 90000); + I915_WRITE(RCBMINAVG, 80000); + + I915_WRITE(MEMIHYST, 1); + + /* Set up min, max, and cur for interrupt handling */ + fmax = (rgvmodectl & MEMMODE_FMAX_MASK) >> MEMMODE_FMAX_SHIFT; + fmin = (rgvmodectl & MEMMODE_FMIN_MASK); + fstart = (rgvmodectl & MEMMODE_FSTART_MASK) >> + MEMMODE_FSTART_SHIFT; + + vstart = (I915_READ(PXVFREQ_BASE + (fstart * 4)) & PXVFREQ_PX_MASK) >> + PXVFREQ_PX_SHIFT; + + dev_priv->ips.fmax = fmax; /* IPS callback will increase this */ + dev_priv->ips.fstart = fstart; + + dev_priv->ips.max_delay = fstart; + dev_priv->ips.min_delay = fmin; + dev_priv->ips.cur_delay = fstart; + + DRM_DEBUG_DRIVER("fmax: %d, fmin: %d, fstart: %d\n", + fmax, fmin, fstart); + + I915_WRITE(MEMINTREN, MEMINT_CX_SUPR_EN | MEMINT_EVAL_CHG_EN); + + /* + * Interrupts will be enabled in ironlake_irq_postinstall + */ + + I915_WRITE(VIDSTART, vstart); + POSTING_READ(VIDSTART); + + rgvmodectl |= MEMMODE_SWMODE_EN; + I915_WRITE(MEMMODECTL, rgvmodectl); + + if (wait_for_atomic((I915_READ(MEMSWCTL) & MEMCTL_CMD_STS) == 0, 10)) + DRM_ERROR("stuck trying to change perf mode\n"); + mdelay(1); + + ironlake_set_drps(dev, fstart); + + dev_priv->ips.last_count1 = I915_READ(0x112e4) + I915_READ(0x112e8) + + I915_READ(0x112e0); + dev_priv->ips.last_time1 = jiffies_to_msecs(jiffies); + dev_priv->ips.last_count2 = I915_READ(0x112f4); + getrawmonotonic(&dev_priv->ips.last_time2); + + spin_unlock_irq(&mchdev_lock); +} + +static void ironlake_disable_drps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u16 rgvswctl; + + spin_lock_irq(&mchdev_lock); + + rgvswctl = I915_READ16(MEMSWCTL); + + /* Ack interrupts, disable EFC interrupt */ + I915_WRITE(MEMINTREN, I915_READ(MEMINTREN) & ~MEMINT_EVAL_CHG_EN); + I915_WRITE(MEMINTRSTS, MEMINT_EVAL_CHG); + I915_WRITE(DEIER, I915_READ(DEIER) & ~DE_PCU_EVENT); + I915_WRITE(DEIIR, DE_PCU_EVENT); + I915_WRITE(DEIMR, I915_READ(DEIMR) | DE_PCU_EVENT); + + /* Go back to the starting frequency */ + ironlake_set_drps(dev, dev_priv->ips.fstart); + mdelay(1); + rgvswctl |= MEMCTL_CMD_STS; + I915_WRITE(MEMSWCTL, rgvswctl); + mdelay(1); + + spin_unlock_irq(&mchdev_lock); +} + +/* There's a funny hw issue where the hw returns all 0 when reading from + * GEN6_RP_INTERRUPT_LIMITS. Hence we always need to compute the desired value + * ourselves, instead of doing a rmw cycle (which might result in us clearing + * all limits and the gpu stuck at whatever frequency it is at atm). + */ +static u32 gen6_rps_limits(struct drm_i915_private *dev_priv, u8 *val) +{ + u32 limits; + + limits = 0; + + if (*val >= dev_priv->rps.max_delay) + *val = dev_priv->rps.max_delay; + limits |= dev_priv->rps.max_delay << 24; + + /* Only set the down limit when we've reached the lowest level to avoid + * getting more interrupts, otherwise leave this clear. This prevents a + * race in the hw when coming out of rc6: There's a tiny window where + * the hw runs at the minimal clock before selecting the desired + * frequency, if the down threshold expires in that window we will not + * receive a down interrupt. */ + if (*val <= dev_priv->rps.min_delay) { + *val = dev_priv->rps.min_delay; + limits |= dev_priv->rps.min_delay << 16; + } + + return limits; +} + +void gen6_set_rps(struct drm_device *dev, u8 val) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 limits = gen6_rps_limits(dev_priv, &val); + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + WARN_ON(val > dev_priv->rps.max_delay); + WARN_ON(val < dev_priv->rps.min_delay); + + if (val == dev_priv->rps.cur_delay) + return; + + I915_WRITE(GEN6_RPNSWREQ, + GEN6_FREQUENCY(val) | + GEN6_OFFSET(0) | + GEN6_AGGRESSIVE_TURBO); + + /* Make sure we continue to get interrupts + * until we hit the minimum or maximum frequencies. + */ + I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, limits); + + POSTING_READ(GEN6_RPNSWREQ); + + dev_priv->rps.cur_delay = val; + + trace_intel_gpu_freq_change(val * 50); +} + +static void gen6_disable_rps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(GEN6_RC_CONTROL, 0); + I915_WRITE(GEN6_RPNSWREQ, 1 << 31); + I915_WRITE(GEN6_PMINTRMSK, 0xffffffff); + I915_WRITE(GEN6_PMIER, 0); + /* Complete PM interrupt masking here doesn't race with the rps work + * item again unmasking PM interrupts because that is using a different + * register (PMIMR) to mask PM interrupts. The only risk is in leaving + * stale bits in PMIIR and PMIMR which gen6_enable_rps will clean up. */ + + spin_lock_irq(&dev_priv->rps.lock); + dev_priv->rps.pm_iir = 0; + spin_unlock_irq(&dev_priv->rps.lock); + + I915_WRITE(GEN6_PMIIR, I915_READ(GEN6_PMIIR)); +} + +int intel_enable_rc6(const struct drm_device *dev) +{ + /* Respect the kernel parameter if it is set */ + if (i915_enable_rc6 >= 0) + return i915_enable_rc6; + + /* Disable RC6 on Ironlake */ + if (INTEL_INFO(dev)->gen == 5) + return 0; + + if (IS_HASWELL(dev)) { + DRM_DEBUG_DRIVER("Haswell: only RC6 available\n"); + return INTEL_RC6_ENABLE; + } + + /* snb/ivb have more than one rc6 state. */ + if (INTEL_INFO(dev)->gen == 6) { + DRM_DEBUG_DRIVER("Sandybridge: deep RC6 disabled\n"); + return INTEL_RC6_ENABLE; + } + + DRM_DEBUG_DRIVER("RC6 and deep RC6 enabled\n"); + return (INTEL_RC6_ENABLE | INTEL_RC6p_ENABLE); +} + +static void gen6_enable_rps(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + u32 rp_state_cap; + u32 gt_perf_status; + u32 rc6vids, pcu_mbox, rc6_mask = 0; + u32 gtfifodbg; + int rc6_mode; + int i, ret; + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + /* Here begins a magic sequence of register writes to enable + * auto-downclocking. + * + * Perhaps there might be some value in exposing these to + * userspace... + */ + I915_WRITE(GEN6_RC_STATE, 0); + + /* Clear the DBG now so we don't confuse earlier errors */ + if ((gtfifodbg = I915_READ(GTFIFODBG))) { + DRM_ERROR("GT fifo had a previous error %x\n", gtfifodbg); + I915_WRITE(GTFIFODBG, gtfifodbg); + } + + gen6_gt_force_wake_get(dev_priv); + + rp_state_cap = I915_READ(GEN6_RP_STATE_CAP); + gt_perf_status = I915_READ(GEN6_GT_PERF_STATUS); + + /* In units of 100MHz */ + dev_priv->rps.max_delay = rp_state_cap & 0xff; + dev_priv->rps.min_delay = (rp_state_cap & 0xff0000) >> 16; + dev_priv->rps.cur_delay = 0; + + /* disable the counters and set deterministic thresholds */ + I915_WRITE(GEN6_RC_CONTROL, 0); + + I915_WRITE(GEN6_RC1_WAKE_RATE_LIMIT, 1000 << 16); + I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 40 << 16 | 30); + I915_WRITE(GEN6_RC6pp_WAKE_RATE_LIMIT, 30); + I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000); + I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25); + + for_each_ring(ring, dev_priv, i) + I915_WRITE(RING_MAX_IDLE(ring->mmio_base), 10); + + I915_WRITE(GEN6_RC_SLEEP, 0); + I915_WRITE(GEN6_RC1e_THRESHOLD, 1000); + I915_WRITE(GEN6_RC6_THRESHOLD, 50000); + I915_WRITE(GEN6_RC6p_THRESHOLD, 100000); + I915_WRITE(GEN6_RC6pp_THRESHOLD, 64000); /* unused */ + + /* Check if we are enabling RC6 */ + rc6_mode = intel_enable_rc6(dev_priv->dev); + if (rc6_mode & INTEL_RC6_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6_ENABLE; + + /* We don't use those on Haswell */ + if (!IS_HASWELL(dev)) { + if (rc6_mode & INTEL_RC6p_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6p_ENABLE; + + if (rc6_mode & INTEL_RC6pp_ENABLE) + rc6_mask |= GEN6_RC_CTL_RC6pp_ENABLE; + } + + DRM_INFO("Enabling RC6 states: RC6 %s, RC6p %s, RC6pp %s\n", + (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6p_ENABLE) ? "on" : "off", + (rc6_mask & GEN6_RC_CTL_RC6pp_ENABLE) ? "on" : "off"); + + I915_WRITE(GEN6_RC_CONTROL, + rc6_mask | + GEN6_RC_CTL_EI_MODE(1) | + GEN6_RC_CTL_HW_ENABLE); + + I915_WRITE(GEN6_RPNSWREQ, + GEN6_FREQUENCY(10) | + GEN6_OFFSET(0) | + GEN6_AGGRESSIVE_TURBO); + I915_WRITE(GEN6_RC_VIDEO_FREQ, + GEN6_FREQUENCY(12)); + + I915_WRITE(GEN6_RP_DOWN_TIMEOUT, 1000000); + I915_WRITE(GEN6_RP_INTERRUPT_LIMITS, + dev_priv->rps.max_delay << 24 | + dev_priv->rps.min_delay << 16); + + I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400); + I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000); + I915_WRITE(GEN6_RP_UP_EI, 66000); + I915_WRITE(GEN6_RP_DOWN_EI, 350000); + + I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10); + I915_WRITE(GEN6_RP_CONTROL, + GEN6_RP_MEDIA_TURBO | + GEN6_RP_MEDIA_HW_NORMAL_MODE | + GEN6_RP_MEDIA_IS_GFX | + GEN6_RP_ENABLE | + GEN6_RP_UP_BUSY_AVG | + (IS_HASWELL(dev) ? GEN7_RP_DOWN_IDLE_AVG : GEN6_RP_DOWN_IDLE_CONT)); + + ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_MIN_FREQ_TABLE, 0); + if (!ret) { + pcu_mbox = 0; + ret = sandybridge_pcode_read(dev_priv, GEN6_READ_OC_PARAMS, &pcu_mbox); + if (ret && pcu_mbox & (1<<31)) { /* OC supported */ + dev_priv->rps.max_delay = pcu_mbox & 0xff; + DRM_DEBUG_DRIVER("overclocking supported, adjusting frequency max to %dMHz\n", pcu_mbox * 50); + } + } else { + DRM_DEBUG_DRIVER("Failed to set the min frequency\n"); + } + + gen6_set_rps(dev_priv->dev, (gt_perf_status & 0xff00) >> 8); + + /* requires MSI enabled */ + I915_WRITE(GEN6_PMIER, GEN6_PM_DEFERRED_EVENTS); + spin_lock_irq(&dev_priv->rps.lock); + WARN_ON(dev_priv->rps.pm_iir != 0); + I915_WRITE(GEN6_PMIMR, 0); + spin_unlock_irq(&dev_priv->rps.lock); + /* enable all PM interrupts */ + I915_WRITE(GEN6_PMINTRMSK, 0); + + rc6vids = 0; + ret = sandybridge_pcode_read(dev_priv, GEN6_PCODE_READ_RC6VIDS, &rc6vids); + if (IS_GEN6(dev) && ret) { + DRM_DEBUG_DRIVER("Couldn't check for BIOS workaround\n"); + } else if (IS_GEN6(dev) && (GEN6_DECODE_RC6_VID(rc6vids & 0xff) < 450)) { + DRM_DEBUG_DRIVER("You should update your BIOS. Correcting minimum rc6 voltage (%dmV->%dmV)\n", + GEN6_DECODE_RC6_VID(rc6vids & 0xff), 450); + rc6vids &= 0xffff00; + rc6vids |= GEN6_ENCODE_RC6_VID(450); + ret = sandybridge_pcode_write(dev_priv, GEN6_PCODE_WRITE_RC6VIDS, rc6vids); + if (ret) + DRM_ERROR("Couldn't fix incorrect rc6 voltage\n"); + } + + gen6_gt_force_wake_put(dev_priv); +} + +static void gen6_update_ring_freq(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int min_freq = 15; + int gpu_freq; + unsigned int ia_freq, max_ia_freq; + int scaling_factor = 180; + + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + max_ia_freq = cpufreq_quick_get_max(0); + /* + * Default to measured freq if none found, PCU will ensure we don't go + * over + */ + if (!max_ia_freq) + max_ia_freq = tsc_khz; + + /* Convert from kHz to MHz */ + max_ia_freq /= 1000; + + /* + * For each potential GPU frequency, load a ring frequency we'd like + * to use for memory access. We do this by specifying the IA frequency + * the PCU should use as a reference to determine the ring frequency. + */ + for (gpu_freq = dev_priv->rps.max_delay; gpu_freq >= dev_priv->rps.min_delay; + gpu_freq--) { + int diff = dev_priv->rps.max_delay - gpu_freq; + + /* + * For GPU frequencies less than 750MHz, just use the lowest + * ring freq. + */ + if (gpu_freq < min_freq) + ia_freq = 800; + else + ia_freq = max_ia_freq - ((diff * scaling_factor) / 2); + ia_freq = DIV_ROUND_CLOSEST(ia_freq, 100); + ia_freq <<= GEN6_PCODE_FREQ_IA_RATIO_SHIFT; + + sandybridge_pcode_write(dev_priv, + GEN6_PCODE_WRITE_MIN_FREQ_TABLE, + ia_freq | gpu_freq); + } +} + +void ironlake_teardown_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->ips.renderctx) { + i915_gem_object_unpin(dev_priv->ips.renderctx); + drm_gem_object_unreference(&dev_priv->ips.renderctx->base); + dev_priv->ips.renderctx = NULL; + } + + if (dev_priv->ips.pwrctx) { + i915_gem_object_unpin(dev_priv->ips.pwrctx); + drm_gem_object_unreference(&dev_priv->ips.pwrctx->base); + dev_priv->ips.pwrctx = NULL; + } +} + +static void ironlake_disable_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (I915_READ(PWRCTXA)) { + /* Wake the GPU, prevent RC6, then restore RSTDBYCTL */ + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) | RCX_SW_EXIT); + wait_for(((I915_READ(RSTDBYCTL) & RSX_STATUS_MASK) == RSX_STATUS_ON), + 50); + + I915_WRITE(PWRCTXA, 0); + POSTING_READ(PWRCTXA); + + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT); + POSTING_READ(RSTDBYCTL); + } +} + +static int ironlake_setup_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (dev_priv->ips.renderctx == NULL) + dev_priv->ips.renderctx = intel_alloc_context_page(dev); + if (!dev_priv->ips.renderctx) + return -ENOMEM; + + if (dev_priv->ips.pwrctx == NULL) + dev_priv->ips.pwrctx = intel_alloc_context_page(dev); + if (!dev_priv->ips.pwrctx) { + ironlake_teardown_rc6(dev); + return -ENOMEM; + } + + return 0; +} + +static void ironlake_enable_rc6(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = &dev_priv->ring[RCS]; + int ret; + + /* rc6 disabled by default due to repeated reports of hanging during + * boot and resume. + */ + if (!intel_enable_rc6(dev)) + return; + + WARN_ON(!mutex_is_locked(&dev->struct_mutex)); + + ret = ironlake_setup_rc6(dev); + if (ret) + return; + + /* + * GPU can automatically power down the render unit if given a page + * to save state. + */ + ret = intel_ring_begin(ring, 6); + if (ret) { + ironlake_teardown_rc6(dev); + return; + } + + intel_ring_emit(ring, MI_SUSPEND_FLUSH | MI_SUSPEND_FLUSH_EN); + intel_ring_emit(ring, MI_SET_CONTEXT); + intel_ring_emit(ring, dev_priv->ips.renderctx->gtt_offset | + MI_MM_SPACE_GTT | + MI_SAVE_EXT_STATE_EN | + MI_RESTORE_EXT_STATE_EN | + MI_RESTORE_INHIBIT); + intel_ring_emit(ring, MI_SUSPEND_FLUSH); + intel_ring_emit(ring, MI_NOOP); + intel_ring_emit(ring, MI_FLUSH); + intel_ring_advance(ring); + + /* + * Wait for the command parser to advance past MI_SET_CONTEXT. The HW + * does an implicit flush, combined with MI_FLUSH above, it should be + * safe to assume that renderctx is valid + */ + ret = intel_wait_ring_idle(ring); + if (ret) { + DRM_ERROR("failed to enable ironlake power power savings\n"); + ironlake_teardown_rc6(dev); + return; + } + + I915_WRITE(PWRCTXA, dev_priv->ips.pwrctx->gtt_offset | PWRCTX_EN); + I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT); +} + +static unsigned long intel_pxfreq(u32 vidfreq) +{ + unsigned long freq; + int div = (vidfreq & 0x3f0000) >> 16; + int post = (vidfreq & 0x3000) >> 12; + int pre = (vidfreq & 0x7); + + if (!pre) + return 0; + + freq = ((div * 133333) / ((1<ips.last_time1; + + /* Prevent division-by-zero if we are asking too fast. + * Also, we don't get interesting results if we are polling + * faster than once in 10ms, so just return the saved value + * in such cases. + */ + if (diff1 <= 10) + return dev_priv->ips.chipset_power; + + count1 = I915_READ(DMIEC); + count2 = I915_READ(DDREC); + count3 = I915_READ(CSIEC); + + total_count = count1 + count2 + count3; + + /* FIXME: handle per-counter overflow */ + if (total_count < dev_priv->ips.last_count1) { + diff = ~0UL - dev_priv->ips.last_count1; + diff += total_count; + } else { + diff = total_count - dev_priv->ips.last_count1; + } + + for (i = 0; i < ARRAY_SIZE(cparams); i++) { + if (cparams[i].i == dev_priv->ips.c_m && + cparams[i].t == dev_priv->ips.r_t) { + m = cparams[i].m; + c = cparams[i].c; + break; + } + } + + diff = div_u64(diff, diff1); + ret = ((m * diff) + c); + ret = div_u64(ret, 10); + + dev_priv->ips.last_count1 = total_count; + dev_priv->ips.last_time1 = now; + + dev_priv->ips.chipset_power = ret; + + return ret; +} + +unsigned long i915_chipset_val(struct drm_i915_private *dev_priv) +{ + unsigned long val; + + if (dev_priv->info->gen != 5) + return 0; + + spin_lock_irq(&mchdev_lock); + + val = __i915_chipset_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); + + return val; +} + +unsigned long i915_mch_val(struct drm_i915_private *dev_priv) +{ + unsigned long m, x, b; + u32 tsfs; + + tsfs = I915_READ(TSFS); + + m = ((tsfs & TSFS_SLOPE_MASK) >> TSFS_SLOPE_SHIFT); + x = I915_READ8(TR1); + + b = tsfs & TSFS_INTR_MASK; + + return ((m * x) / 127) - b; +} + +static u16 pvid_to_extvid(struct drm_i915_private *dev_priv, u8 pxvid) +{ + static const struct v_table { + u16 vd; /* in .1 mil */ + u16 vm; /* in .1 mil */ + } v_table[] = { + { 0, 0, }, + { 375, 0, }, + { 500, 0, }, + { 625, 0, }, + { 750, 0, }, + { 875, 0, }, + { 1000, 0, }, + { 1125, 0, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4125, 3000, }, + { 4250, 3125, }, + { 4375, 3250, }, + { 4500, 3375, }, + { 4625, 3500, }, + { 4750, 3625, }, + { 4875, 3750, }, + { 5000, 3875, }, + { 5125, 4000, }, + { 5250, 4125, }, + { 5375, 4250, }, + { 5500, 4375, }, + { 5625, 4500, }, + { 5750, 4625, }, + { 5875, 4750, }, + { 6000, 4875, }, + { 6125, 5000, }, + { 6250, 5125, }, + { 6375, 5250, }, + { 6500, 5375, }, + { 6625, 5500, }, + { 6750, 5625, }, + { 6875, 5750, }, + { 7000, 5875, }, + { 7125, 6000, }, + { 7250, 6125, }, + { 7375, 6250, }, + { 7500, 6375, }, + { 7625, 6500, }, + { 7750, 6625, }, + { 7875, 6750, }, + { 8000, 6875, }, + { 8125, 7000, }, + { 8250, 7125, }, + { 8375, 7250, }, + { 8500, 7375, }, + { 8625, 7500, }, + { 8750, 7625, }, + { 8875, 7750, }, + { 9000, 7875, }, + { 9125, 8000, }, + { 9250, 8125, }, + { 9375, 8250, }, + { 9500, 8375, }, + { 9625, 8500, }, + { 9750, 8625, }, + { 9875, 8750, }, + { 10000, 8875, }, + { 10125, 9000, }, + { 10250, 9125, }, + { 10375, 9250, }, + { 10500, 9375, }, + { 10625, 9500, }, + { 10750, 9625, }, + { 10875, 9750, }, + { 11000, 9875, }, + { 11125, 10000, }, + { 11250, 10125, }, + { 11375, 10250, }, + { 11500, 10375, }, + { 11625, 10500, }, + { 11750, 10625, }, + { 11875, 10750, }, + { 12000, 10875, }, + { 12125, 11000, }, + { 12250, 11125, }, + { 12375, 11250, }, + { 12500, 11375, }, + { 12625, 11500, }, + { 12750, 11625, }, + { 12875, 11750, }, + { 13000, 11875, }, + { 13125, 12000, }, + { 13250, 12125, }, + { 13375, 12250, }, + { 13500, 12375, }, + { 13625, 12500, }, + { 13750, 12625, }, + { 13875, 12750, }, + { 14000, 12875, }, + { 14125, 13000, }, + { 14250, 13125, }, + { 14375, 13250, }, + { 14500, 13375, }, + { 14625, 13500, }, + { 14750, 13625, }, + { 14875, 13750, }, + { 15000, 13875, }, + { 15125, 14000, }, + { 15250, 14125, }, + { 15375, 14250, }, + { 15500, 14375, }, + { 15625, 14500, }, + { 15750, 14625, }, + { 15875, 14750, }, + { 16000, 14875, }, + { 16125, 15000, }, + }; + if (dev_priv->info->is_mobile) + return v_table[pxvid].vm; + else + return v_table[pxvid].vd; +} + +static void __i915_update_gfx_val(struct drm_i915_private *dev_priv) +{ + struct timespec now, diff1; + u64 diff; + unsigned long diffms; + u32 count; + + assert_spin_locked(&mchdev_lock); + + getrawmonotonic(&now); + diff1 = timespec_sub(now, dev_priv->ips.last_time2); + + /* Don't divide by 0 */ + diffms = diff1.tv_sec * 1000 + diff1.tv_nsec / 1000000; + if (!diffms) + return; + + count = I915_READ(GFXEC); + + if (count < dev_priv->ips.last_count2) { + diff = ~0UL - dev_priv->ips.last_count2; + diff += count; + } else { + diff = count - dev_priv->ips.last_count2; + } + + dev_priv->ips.last_count2 = count; + dev_priv->ips.last_time2 = now; + + /* More magic constants... */ + diff = diff * 1181; + diff = div_u64(diff, diffms * 10); + dev_priv->ips.gfx_power = diff; +} + +void i915_update_gfx_val(struct drm_i915_private *dev_priv) +{ + if (dev_priv->info->gen != 5) + return; + + spin_lock_irq(&mchdev_lock); + + __i915_update_gfx_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); +} + +static unsigned long __i915_gfx_val(struct drm_i915_private *dev_priv) +{ + unsigned long t, corr, state1, corr2, state2; + u32 pxvid, ext_v; + + assert_spin_locked(&mchdev_lock); + + pxvid = I915_READ(PXVFREQ_BASE + (dev_priv->rps.cur_delay * 4)); + pxvid = (pxvid >> 24) & 0x7f; + ext_v = pvid_to_extvid(dev_priv, pxvid); + + state1 = ext_v; + + t = i915_mch_val(dev_priv); + + /* Revel in the empirically derived constants */ + + /* Correction factor in 1/100000 units */ + if (t > 80) + corr = ((t * 2349) + 135940); + else if (t >= 50) + corr = ((t * 964) + 29317); + else /* < 50 */ + corr = ((t * 301) + 1004); + + corr = corr * ((150142 * state1) / 10000 - 78642); + corr /= 100000; + corr2 = (corr * dev_priv->ips.corr); + + state2 = (corr2 * state1) / 10000; + state2 /= 100; /* convert to mW */ + + __i915_update_gfx_val(dev_priv); + + return dev_priv->ips.gfx_power + state2; +} + +unsigned long i915_gfx_val(struct drm_i915_private *dev_priv) +{ + unsigned long val; + + if (dev_priv->info->gen != 5) + return 0; + + spin_lock_irq(&mchdev_lock); + + val = __i915_gfx_val(dev_priv); + + spin_unlock_irq(&mchdev_lock); + + return val; +} + +/** + * i915_hsw_read_mch_val - return value for IPS use + * + * Calculate and return a value for the IPS driver to use when deciding whether + * we have thermal and power headroom to increase CPU or GPU power budget. + */ +unsigned long i915_hsw_read_mch_val(void) +{ + struct drm_i915_private *dev_priv; + unsigned long chipset_val, graphics_val, ret = 0; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) + goto out_unlock; + dev_priv = i915_mch_dev; + + chipset_val = __i915_chipset_val(dev_priv); + graphics_val = __i915_gfx_val(dev_priv); + + ret = chipset_val + graphics_val; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_hsw_read_mch_val); + +/** + * i915_hsw_gpu_raise - raise GPU frequency limit + * + * Raise the limit; IPS indicates we have thermal headroom. + */ +bool i915_hsw_gpu_raise(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + if (dev_priv->ips.max_delay > dev_priv->ips.fmax) + dev_priv->ips.max_delay--; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_hsw_gpu_raise); + +/** + * i915_hsw_gpu_lower - lower GPU frequency limit + * + * IPS indicates we're close to a thermal limit, so throttle back the GPU + * frequency maximum. + */ +bool i915_hsw_gpu_lower(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + if (dev_priv->ips.max_delay < dev_priv->ips.min_delay) + dev_priv->ips.max_delay++; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_hsw_gpu_lower); + +/** + * i915_gpu_busy - indicate GPU business to IPS + * + * Tell the IPS driver whether or not the GPU is busy. + */ +bool i915_hsw_gpu_busy(void) +{ + struct drm_i915_private *dev_priv; + struct intel_ring_buffer *ring; + bool ret = false; + int i; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) + goto out_unlock; + dev_priv = i915_mch_dev; + + for_each_ring(ring, dev_priv, i) + ret |= !list_empty(&ring->request_list); + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_hsw_gpu_busy); + +/** + * i915_hsw_gpu_turbo_disable - disable graphics turbo + * + * Disable graphics turbo by resetting the max frequency and setting the + * current frequency to the default. + */ +bool i915_hsw_gpu_turbo_disable(void) +{ + struct drm_i915_private *dev_priv; + bool ret = true; + + spin_lock_irq(&mchdev_lock); + if (!i915_mch_dev) { + ret = false; + goto out_unlock; + } + dev_priv = i915_mch_dev; + + dev_priv->ips.max_delay = dev_priv->ips.fstart; + + if (!ironlake_set_drps(dev_priv->dev, dev_priv->ips.fstart)) + ret = false; + +out_unlock: + spin_unlock_irq(&mchdev_lock); + + return ret; +} +EXPORT_SYMBOL_GPL(i915_hsw_gpu_turbo_disable); + +/** + * Tells the intel_ips driver that the i915 driver is now loaded, if + * IPS got loaded first. + * + * This awkward dance is so that neither module has to depend on the + * other in order for IPS to do the appropriate communication of + * GPU turbo limits to i915. + */ +static void +ips_ping_for_i915_load(void) +{ + void (*link)(void); + + link = symbol_get(ips_link_to_i915_driver); + if (link) { + link(); + symbol_put(ips_link_to_i915_driver); + } +} + +void intel_gpu_ips_init(struct drm_i915_private *dev_priv) +{ + /* We only register the i915 ips part with intel-ips once everything is + * set up, to avoid intel-ips sneaking in and reading bogus values. */ + spin_lock_irq(&mchdev_lock); + i915_mch_dev = dev_priv; + spin_unlock_irq(&mchdev_lock); + + ips_ping_for_i915_load(); +} + +void intel_gpu_ips_teardown(void) +{ + spin_lock_irq(&mchdev_lock); + i915_mch_dev = NULL; + spin_unlock_irq(&mchdev_lock); +} +static void intel_init_emon(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 lcfuse; + u8 pxw[16]; + int i; + + /* Disable to program */ + I915_WRITE(ECR, 0); + POSTING_READ(ECR); + + /* Program energy weights for various events */ + I915_WRITE(SDEW, 0x15040d00); + I915_WRITE(CSIEW0, 0x007f0000); + I915_WRITE(CSIEW1, 0x1e220004); + I915_WRITE(CSIEW2, 0x04000004); + + for (i = 0; i < 5; i++) + I915_WRITE(PEW + (i * 4), 0); + for (i = 0; i < 3; i++) + I915_WRITE(DEW + (i * 4), 0); + + /* Program P-state weights to account for frequency power adjustment */ + for (i = 0; i < 16; i++) { + u32 pxvidfreq = I915_READ(PXVFREQ_BASE + (i * 4)); + unsigned long freq = intel_pxfreq(pxvidfreq); + unsigned long vid = (pxvidfreq & PXVFREQ_PX_MASK) >> + PXVFREQ_PX_SHIFT; + unsigned long val; + + val = vid * vid; + val *= (freq / 1000); + val *= 255; + val /= (127*127*900); + if (val > 0xff) + DRM_ERROR("bad pxval: %ld\n", val); + pxw[i] = val; + } + /* Render standby states get 0 weight */ + pxw[14] = 0; + pxw[15] = 0; + + for (i = 0; i < 4; i++) { + u32 val = (pxw[i*4] << 24) | (pxw[(i*4)+1] << 16) | + (pxw[(i*4)+2] << 8) | (pxw[(i*4)+3]); + I915_WRITE(PXW + (i * 4), val); + } + + /* Adjust magic regs to magic values (more experimental results) */ + I915_WRITE(OGW0, 0); + I915_WRITE(OGW1, 0); + I915_WRITE(EG0, 0x00007f00); + I915_WRITE(EG1, 0x0000000e); + I915_WRITE(EG2, 0x000e0000); + I915_WRITE(EG3, 0x68000300); + I915_WRITE(EG4, 0x42000000); + I915_WRITE(EG5, 0x00140031); + I915_WRITE(EG6, 0); + I915_WRITE(EG7, 0); + + for (i = 0; i < 8; i++) + I915_WRITE(PXWL + (i * 4), 0); + + /* Enable PMON + select events */ + I915_WRITE(ECR, 0x80000019); + + lcfuse = I915_READ(LCFUSE02); + + dev_priv->ips.corr = (lcfuse & LCFUSE_HIV_MASK); +} + +void intel_disable_gt_powersave(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_IRONLAKE_M(dev)) { + ironlake_disable_drps(dev); + ironlake_disable_rc6(dev); + } else if (INTEL_INFO(dev)->gen >= 6 && !IS_VALLEYVIEW(dev)) { + cancel_delayed_work_sync(&dev_priv->rps.delayed_resume_work); + mutex_lock(&dev_priv->rps.hw_lock); + gen6_disable_rps(dev); + mutex_unlock(&dev_priv->rps.hw_lock); + } +} + +static void intel_gen6_powersave_work(struct work_struct *work) +{ + struct drm_i915_private *dev_priv = + container_of(work, struct drm_i915_private, + rps.delayed_resume_work.work); + struct drm_device *dev = dev_priv->dev; + + mutex_lock(&dev_priv->rps.hw_lock); + gen6_enable_rps(dev); + gen6_update_ring_freq(dev); + mutex_unlock(&dev_priv->rps.hw_lock); +} + +void intel_enable_gt_powersave(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_IRONLAKE_M(dev)) { + ironlake_enable_drps(dev); + ironlake_enable_rc6(dev); + intel_init_emon(dev); + } else if ((IS_GEN6(dev) || IS_GEN7(dev)) && !IS_VALLEYVIEW(dev)) { + /* + * PCU communication is slow and this doesn't need to be + * done at any specific time, so do this out of our fast path + * to make resume and init faster. + */ + schedule_delayed_work(&dev_priv->rps.delayed_resume_work, + round_jiffies_up_relative(HZ)); + } +} + +static void ibx_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* + * On Ibex Peak and Cougar Point, we need to disable clock + * gating for the panel power sequencer or it will fail to + * start up when no ports are active. + */ + I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE); +} + +static void ironlake_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dspclk_gate = ILK_VRHUNIT_CLOCK_GATE_DISABLE; + + /* Required for FBC */ + dspclk_gate |= ILK_DPFCRUNIT_CLOCK_GATE_DISABLE | + ILK_DPFCUNIT_CLOCK_GATE_DISABLE | + ILK_DPFDUNIT_CLOCK_GATE_ENABLE; + + I915_WRITE(PCH_3DCGDIS0, + MARIUNIT_CLOCK_GATE_DISABLE | + SVSMUNIT_CLOCK_GATE_DISABLE); + I915_WRITE(PCH_3DCGDIS1, + VFMUNIT_CLOCK_GATE_DISABLE); + + /* + * According to the spec the following bits should be set in + * order to enable memory self-refresh + * The bit 22/21 of 0x42004 + * The bit 5 of 0x42020 + * The bit 15 of 0x45000 + */ + I915_WRITE(ILK_DISPLAY_CHICKEN2, + (I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE | ILK_VSDPFD_FULL)); + dspclk_gate |= ILK_DPARBUNIT_CLOCK_GATE_ENABLE; + I915_WRITE(DISP_ARB_CTL, + (I915_READ(DISP_ARB_CTL) | + DISP_FBC_WM_DIS)); + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* + * Based on the document from hardware guys the following bits + * should be set unconditionally in order to enable FBC. + * The bit 22 of 0x42000 + * The bit 22 of 0x42004 + * The bit 7,8,9 of 0x42020. + */ + if (IS_IRONLAKE_M(dev)) { + I915_WRITE(ILK_DISPLAY_CHICKEN1, + I915_READ(ILK_DISPLAY_CHICKEN1) | + ILK_FBCQ_DIS); + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE); + } + + I915_WRITE(ILK_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_ELPIN_409_SELECT); + I915_WRITE(_3D_CHICKEN2, + _3D_CHICKEN2_WM_READ_PIPELINED << 16 | + _3D_CHICKEN2_WM_READ_PIPELINED); + + /* WaDisableRenderCachePipelinedFlush */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); + + ibx_init_clock_gating(dev); +} + +static void cpt_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + + /* + * On Ibex Peak and Cougar Point, we need to disable clock + * gating for the panel power sequencer or it will fail to + * start up when no ports are active. + */ + I915_WRITE(SOUTH_DSPCLK_GATE_D, PCH_DPLSUNIT_CLOCK_GATE_DISABLE); + I915_WRITE(SOUTH_CHICKEN2, I915_READ(SOUTH_CHICKEN2) | + DPLS_EDP_PPS_FIX_DIS); + /* WADP0ClockGatingDisable */ + for_each_pipe(pipe) { + I915_WRITE(TRANS_CHICKEN1(pipe), + TRANS_CHICKEN1_DP0UNIT_GC_DISABLE); + } +} + +static void gen6_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t dspclk_gate = ILK_VRHUNIT_CLOCK_GATE_DISABLE; + + I915_WRITE(ILK_DSPCLK_GATE_D, dspclk_gate); + + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_ELPIN_409_SELECT); + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_DISABLE(CM0_STC_EVICT_DISABLE_LRA_SNB)); + + I915_WRITE(GEN6_UCGCTL1, + I915_READ(GEN6_UCGCTL1) | + GEN6_BLBUNIT_CLOCK_GATE_DISABLE | + GEN6_CSUNIT_CLOCK_GATE_DISABLE); + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * Also apply WaDisableVDSUnitClockGating and + * WaDisableRCPBUnitClockGating. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN7_VDSUNIT_CLOCK_GATE_DISABLE | + GEN6_RCPBUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + /* Bspec says we need to always set all mask bits. */ + I915_WRITE(_3D_CHICKEN3, (0xFFFF << 16) | + _3D_CHICKEN3_SF_DISABLE_FASTCLIP_CULL); + + /* + * According to the spec the following bits should be + * set in order to enable memory self-refresh and fbc: + * The bit21 and bit22 of 0x42000 + * The bit21 and bit22 of 0x42004 + * The bit5 and bit7 of 0x42020 + * The bit14 of 0x70180 + * The bit14 of 0x71180 + */ + I915_WRITE(ILK_DISPLAY_CHICKEN1, + I915_READ(ILK_DISPLAY_CHICKEN1) | + ILK_FBCQ_DIS | ILK_PABSTRETCH_DIS); + I915_WRITE(ILK_DISPLAY_CHICKEN2, + I915_READ(ILK_DISPLAY_CHICKEN2) | + ILK_DPARB_GATE | ILK_VSDPFD_FULL); + I915_WRITE(ILK_DSPCLK_GATE_D, + I915_READ(ILK_DSPCLK_GATE_D) | + ILK_DPARBUNIT_CLOCK_GATE_ENABLE | + ILK_DPFDUNIT_CLOCK_GATE_ENABLE); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + /* The default value should be 0x200 according to docs, but the two + * platforms I checked have a 0 for this. (Maybe BIOS overrides?) */ + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_DISABLE(0xffff)); + I915_WRITE(GEN6_GT_MODE, _MASKED_BIT_ENABLE(GEN6_GT_MODE_HI)); + + cpt_init_clock_gating(dev); +} + +static void gen7_setup_fixed_func_scheduler(struct drm_i915_private *dev_priv) +{ + uint32_t reg = I915_READ(GEN7_FF_THREAD_MODE); + + reg &= ~GEN7_FF_SCHED_MASK; + reg |= GEN7_FF_TS_SCHED_HW; + reg |= GEN7_FF_VS_SCHED_HW; + reg |= GEN7_FF_DS_SCHED_HW; + + I915_WRITE(GEN7_FF_THREAD_MODE, reg); +} + +static void lpt_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* + * TODO: this bit should only be enabled when really needed, then + * disabled when not needed anymore in order to save power. + */ + if (dev_priv->pch_id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE) + I915_WRITE(SOUTH_DSPCLK_GATE_D, + I915_READ(SOUTH_DSPCLK_GATE_D) | + PCH_LP_PARTITION_LEVEL_DISABLE); +} + +static void haswell_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + /* According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, GEN6_RCZUNIT_CLOCK_GATE_DISABLE); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + /* XXX: This is a workaround for early silicon revisions and should be + * removed later. + */ + I915_WRITE(WM_DBG, + I915_READ(WM_DBG) | + WM_DBG_DISALLOW_MULTIPLE_LP | + WM_DBG_DISALLOW_SPRITE | + WM_DBG_DISALLOW_MAXFIFO); + + lpt_init_clock_gating(dev); +} + +static void ivybridge_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + uint32_t snpcr; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(ILK_DSPCLK_GATE_D, ILK_VRHUNIT_CLOCK_GATE_DISABLE); + + /* WaDisableEarlyCull */ + I915_WRITE(_3D_CHICKEN3, + _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); + + /* WaDisableBackToBackFlipFix */ + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + /* WaDisablePSDDualDispatchEnable */ + if (IS_IVB_GT1(dev)) + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + else + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1_GT2, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, + GEN7_WA_FOR_GEN7_L3_CONTROL); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, + GEN7_WA_L3_CHICKEN_MODE); + if (IS_IVB_GT1(dev)) + I915_WRITE(GEN7_ROW_CHICKEN2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + else + I915_WRITE(GEN7_ROW_CHICKEN2_GT2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN6_RCZUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + gen7_setup_fixed_func_scheduler(dev_priv); + + /* WaDisable4x2SubspanOptimization */ + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); + snpcr &= ~GEN6_MBC_SNPCR_MASK; + snpcr |= GEN6_MBC_SNPCR_MED; + I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr); + + cpt_init_clock_gating(dev); +} + +static void valleyview_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int pipe; + + I915_WRITE(WM3_LP_ILK, 0); + I915_WRITE(WM2_LP_ILK, 0); + I915_WRITE(WM1_LP_ILK, 0); + + I915_WRITE(ILK_DSPCLK_GATE_D, ILK_VRHUNIT_CLOCK_GATE_DISABLE); + + /* WaDisableEarlyCull */ + I915_WRITE(_3D_CHICKEN3, + _MASKED_BIT_ENABLE(_3D_CHICKEN_SF_DISABLE_OBJEND_CULL)); + + /* WaDisableBackToBackFlipFix */ + I915_WRITE(IVB_CHICKEN3, + CHICKEN3_DGMG_REQ_OUT_FIX_DISABLE | + CHICKEN3_DGMG_DONE_FIX_DISABLE); + + I915_WRITE(GEN7_HALF_SLICE_CHICKEN1, + _MASKED_BIT_ENABLE(GEN7_PSD_SINGLE_PORT_DISPATCH_ENABLE)); + + /* Apply the WaDisableRHWOOptimizationForRenderHang workaround. */ + I915_WRITE(GEN7_COMMON_SLICE_CHICKEN1, + GEN7_CSC1_RHWO_OPT_DISABLE_IN_RCC); + + /* WaApplyL3ControlAndL3ChickenMode requires those two on Ivy Bridge */ + I915_WRITE(GEN7_L3CNTLREG1, I915_READ(GEN7_L3CNTLREG1) | GEN7_L3AGDIS); + I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER, GEN7_WA_L3_CHICKEN_MODE); + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* WaDisableDopClockGating */ + I915_WRITE(GEN7_ROW_CHICKEN2, + _MASKED_BIT_ENABLE(DOP_CLOCK_GATING_DISABLE)); + + /* WaForceL3Serialization */ + I915_WRITE(GEN7_L3SQCREG4, I915_READ(GEN7_L3SQCREG4) & + ~L3SQ_URB_READ_CAM_MATCH_DISABLE); + + /* This is required by WaCatErrorRejectionIssue */ + I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG, + I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) | + GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB); + + /* WaMbcDriverBootEnable */ + I915_WRITE(GEN6_MBCTL, I915_READ(GEN6_MBCTL) | + GEN6_MBCTL_ENABLE_BOOT_FETCH); + + + /* According to the BSpec vol1g, bit 12 (RCPBUNIT) clock + * gating disable must be set. Failure to set it results in + * flickering pixels due to Z write ordering failures after + * some amount of runtime in the Mesa "fire" demo, and Unigine + * Sanctuary and Tropics, and apparently anything else with + * alpha test or pixel discard. + * + * According to the spec, bit 11 (RCCUNIT) must also be set, + * but we didn't debug actual testcases to find it out. + * + * According to the spec, bit 13 (RCZUNIT) must be set on IVB. + * This implements the WaDisableRCZUnitClockGating workaround. + * + * Also apply WaDisableVDSUnitClockGating and + * WaDisableRCPBUnitClockGating. + */ + I915_WRITE(GEN6_UCGCTL2, + GEN7_VDSUNIT_CLOCK_GATE_DISABLE | + GEN7_TDLUNIT_CLOCK_GATE_DISABLE | + GEN6_RCZUNIT_CLOCK_GATE_DISABLE | + GEN6_RCPBUNIT_CLOCK_GATE_DISABLE | + GEN6_RCCUNIT_CLOCK_GATE_DISABLE); + + I915_WRITE(GEN7_UCGCTL4, GEN7_L3BANK2X_CLOCK_GATE_DISABLE); + + for_each_pipe(pipe) { + I915_WRITE(DSPCNTR(pipe), + I915_READ(DSPCNTR(pipe)) | + DISPPLANE_TRICKLE_FEED_DISABLE); + intel_flush_display_plane(dev_priv, pipe); + } + + I915_WRITE(CACHE_MODE_1, + _MASKED_BIT_ENABLE(PIXEL_SUBSPAN_COLLECT_OPT_DISABLE)); + + /* + * On ValleyView, the GUnit needs to signal the GT + * when flip and other events complete. So enable + * all the GUnit->GT interrupts here + */ + I915_WRITE(VLV_DPFLIPSTAT, PIPEB_LINE_COMPARE_INT_EN | + PIPEB_HLINE_INT_EN | PIPEB_VBLANK_INT_EN | + SPRITED_FLIPDONE_INT_EN | SPRITEC_FLIPDONE_INT_EN | + PLANEB_FLIPDONE_INT_EN | PIPEA_LINE_COMPARE_INT_EN | + PIPEA_HLINE_INT_EN | PIPEA_VBLANK_INT_EN | + SPRITEB_FLIPDONE_INT_EN | SPRITEA_FLIPDONE_INT_EN | + PLANEA_FLIPDONE_INT_EN); + + /* + * WaDisableVLVClockGating_VBIIssue + * Disable clock gating on th GCFG unit to prevent a delay + * in the reporting of vblank events. + */ + I915_WRITE(VLV_GUNIT_CLOCK_GATE, GCFG_DIS); +} + +static void g4x_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + uint32_t dspclk_gate; + + I915_WRITE(RENCLK_GATE_D1, 0); + I915_WRITE(RENCLK_GATE_D2, VF_UNIT_CLOCK_GATE_DISABLE | + GS_UNIT_CLOCK_GATE_DISABLE | + CL_UNIT_CLOCK_GATE_DISABLE); + I915_WRITE(RAMCLK_GATE_D, 0); + dspclk_gate = VRHUNIT_CLOCK_GATE_DISABLE | + OVRUNIT_CLOCK_GATE_DISABLE | + OVCUNIT_CLOCK_GATE_DISABLE; + if (IS_GM45(dev)) + dspclk_gate |= DSSUNIT_CLOCK_GATE_DISABLE; + I915_WRITE(DSPCLK_GATE_D, dspclk_gate); + + /* WaDisableRenderCachePipelinedFlush */ + I915_WRITE(CACHE_MODE_0, + _MASKED_BIT_ENABLE(CM0_PIPELINED_RENDER_FLUSH_DISABLE)); +} + +static void crestline_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, I965_RCC_CLOCK_GATE_DISABLE); + I915_WRITE(RENCLK_GATE_D2, 0); + I915_WRITE(DSPCLK_GATE_D, 0); + I915_WRITE(RAMCLK_GATE_D, 0); + I915_WRITE16(DEUC, 0); +} + +static void broadwater_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, I965_RCZ_CLOCK_GATE_DISABLE | + I965_RCC_CLOCK_GATE_DISABLE | + I965_RCPB_CLOCK_GATE_DISABLE | + I965_ISC_CLOCK_GATE_DISABLE | + I965_FBC_CLOCK_GATE_DISABLE); + I915_WRITE(RENCLK_GATE_D2, 0); +} + +static void gen3_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + u32 dstate = I915_READ(D_STATE); + + dstate |= DSTATE_PLL_D3_OFF | DSTATE_GFX_CLOCK_GATING | + DSTATE_DOT_CLOCK_GATING; + I915_WRITE(D_STATE, dstate); + + if (IS_PINEVIEW(dev)) + I915_WRITE(ECOSKPD, _MASKED_BIT_ENABLE(ECO_GATING_CX_ONLY)); + + /* IIR "flip pending" means done if this bit is set */ + I915_WRITE(ECOSKPD, _MASKED_BIT_DISABLE(ECO_FLIP_DONE)); +} + +static void i85x_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(RENCLK_GATE_D1, SV_CLOCK_GATE_DISABLE); +} + +static void i830_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + I915_WRITE(DSPCLK_GATE_D, OVRUNIT_CLOCK_GATE_DISABLE); +} + +void intel_init_clock_gating(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + dev_priv->display.init_clock_gating(dev); +} + +/* Starting with Haswell, we have different power wells for + * different parts of the GPU. This attempts to enable them all. + */ +void intel_init_power_wells(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long power_wells[] = { + HSW_PWR_WELL_CTL1, + HSW_PWR_WELL_CTL2, + HSW_PWR_WELL_CTL4 + }; + int i; + + if (!IS_HASWELL(dev)) + return; + + mutex_lock(&dev->struct_mutex); + + for (i = 0; i < ARRAY_SIZE(power_wells); i++) { + int well = I915_READ(power_wells[i]); + + if ((well & HSW_PWR_WELL_STATE) == 0) { + I915_WRITE(power_wells[i], well & HSW_PWR_WELL_ENABLE); + if (wait_for((I915_READ(power_wells[i]) & HSW_PWR_WELL_STATE), 20)) + DRM_ERROR("Error enabling power well %lx\n", power_wells[i]); + } + } + + mutex_unlock(&dev->struct_mutex); +} + +/* Set up chip specific power management-related functions */ +void intel_init_pm(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (I915_HAS_FBC(dev)) { + if (HAS_PCH_SPLIT(dev)) { + dev_priv->display.fbc_enabled = ironlake_fbc_enabled; + dev_priv->display.enable_fbc = ironlake_enable_fbc; + dev_priv->display.disable_fbc = ironlake_disable_fbc; + } else if (IS_GM45(dev)) { + dev_priv->display.fbc_enabled = g4x_fbc_enabled; + dev_priv->display.enable_fbc = g4x_enable_fbc; + dev_priv->display.disable_fbc = g4x_disable_fbc; + } else if (IS_CRESTLINE(dev)) { + dev_priv->display.fbc_enabled = i8xx_fbc_enabled; + dev_priv->display.enable_fbc = i8xx_enable_fbc; + dev_priv->display.disable_fbc = i8xx_disable_fbc; + } + /* 855GM needs testing */ + } + + /* For cxsr */ + if (IS_PINEVIEW(dev)) + i915_pineview_get_mem_freq(dev); + else if (IS_GEN5(dev)) + i915_ironlake_get_mem_freq(dev); + + /* For FIFO watermark updates */ + if (HAS_PCH_SPLIT(dev)) { + if (IS_GEN5(dev)) { + if (I915_READ(MLTR_ILK) & ILK_SRLT_MASK) + dev_priv->display.update_wm = ironlake_update_wm; + else { + DRM_DEBUG_KMS("Failed to get proper latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = ironlake_init_clock_gating; + } else if (IS_GEN6(dev)) { + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = sandybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = gen6_init_clock_gating; + } else if (IS_IVYBRIDGE(dev)) { + /* FIXME: detect B0+ stepping and use auto training */ + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = sandybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = ivybridge_init_clock_gating; + } else if (IS_HASWELL(dev)) { + if (SNB_READ_WM0_LATENCY()) { + dev_priv->display.update_wm = sandybridge_update_wm; + dev_priv->display.update_sprite_wm = sandybridge_update_sprite_wm; + dev_priv->display.update_linetime_wm = haswell_update_linetime_wm; + } else { + DRM_DEBUG_KMS("Failed to read display plane latency. " + "Disable CxSR\n"); + dev_priv->display.update_wm = NULL; + } + dev_priv->display.init_clock_gating = haswell_init_clock_gating; + } else + dev_priv->display.update_wm = NULL; + } else if (IS_VALLEYVIEW(dev)) { + dev_priv->display.update_wm = valleyview_update_wm; + dev_priv->display.init_clock_gating = + valleyview_init_clock_gating; + } else if (IS_PINEVIEW(dev)) { + if (!intel_get_cxsr_latency(IS_PINEVIEW_G(dev), + dev_priv->is_ddr3, + dev_priv->fsb_freq, + dev_priv->mem_freq)) { + DRM_INFO("failed to find known CxSR latency " + "(found ddr%s fsb freq %d, mem freq %d), " + "disabling CxSR\n", + (dev_priv->is_ddr3 == 1) ? "3" : "2", + dev_priv->fsb_freq, dev_priv->mem_freq); + /* Disable CxSR and never update its watermark again */ + pineview_disable_cxsr(dev); + dev_priv->display.update_wm = NULL; + } else + dev_priv->display.update_wm = pineview_update_wm; + dev_priv->display.init_clock_gating = gen3_init_clock_gating; + } else if (IS_G4X(dev)) { + dev_priv->display.update_wm = g4x_update_wm; + dev_priv->display.init_clock_gating = g4x_init_clock_gating; + } else if (IS_GEN4(dev)) { + dev_priv->display.update_wm = i965_update_wm; + if (IS_CRESTLINE(dev)) + dev_priv->display.init_clock_gating = crestline_init_clock_gating; + else if (IS_BROADWATER(dev)) + dev_priv->display.init_clock_gating = broadwater_init_clock_gating; + } else if (IS_GEN3(dev)) { + dev_priv->display.update_wm = i9xx_update_wm; + dev_priv->display.get_fifo_size = i9xx_get_fifo_size; + dev_priv->display.init_clock_gating = gen3_init_clock_gating; + } else if (IS_I865G(dev)) { + dev_priv->display.update_wm = i830_update_wm; + dev_priv->display.init_clock_gating = i85x_init_clock_gating; + dev_priv->display.get_fifo_size = i830_get_fifo_size; + } else if (IS_I85X(dev)) { + dev_priv->display.update_wm = i9xx_update_wm; + dev_priv->display.get_fifo_size = i85x_get_fifo_size; + dev_priv->display.init_clock_gating = i85x_init_clock_gating; + } else { + dev_priv->display.update_wm = i830_update_wm; + dev_priv->display.init_clock_gating = i830_init_clock_gating; + if (IS_845G(dev)) + dev_priv->display.get_fifo_size = i845_get_fifo_size; + else + dev_priv->display.get_fifo_size = i830_get_fifo_size; + } +} + +static void __gen6_gt_wait_for_thread_c0(struct drm_i915_private *dev_priv) +{ + u32 gt_thread_status_mask; + + if (IS_HASWELL(dev_priv->dev)) + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK_HSW; + else + gt_thread_status_mask = GEN6_GT_THREAD_STATUS_CORE_MASK; + + /* w/a for a sporadic read returning 0 by waiting for the GT + * thread to wake up. + */ + if (wait_for_atomic_us((I915_READ_NOTRACE(GEN6_GT_THREAD_STATUS_REG) & gt_thread_status_mask) == 0, 500)) + DRM_ERROR("GT thread status wait timed out\n"); +} + +static void __gen6_gt_force_wake_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE, 0); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ +} + +static void __gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) +{ + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_ACK; + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE, FORCEWAKE_KERNEL); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +static void __gen6_gt_force_wake_mt_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_DISABLE(0xffff)); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ +} + +static void __gen6_gt_force_wake_mt_get(struct drm_i915_private *dev_priv) +{ + u32 forcewake_ack; + + if (IS_HASWELL(dev_priv->dev)) + forcewake_ack = FORCEWAKE_ACK_HSW; + else + forcewake_ack = FORCEWAKE_MT_ACK; + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_ENABLE(FORCEWAKE_KERNEL)); + POSTING_READ(ECOBUS); /* something from same cacheline, but !FORCEWAKE */ + + if (wait_for_atomic((I915_READ_NOTRACE(forcewake_ack) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +/* + * Generally this is called implicitly by the register read function. However, + * if some sequence requires the GT to not power down then this function should + * be called at the beginning of the sequence followed by a call to + * gen6_gt_force_wake_put() at the end of the sequence. + */ +void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) +{ + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + if (dev_priv->forcewake_count++ == 0) + dev_priv->gt.force_wake_get(dev_priv); + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); +} + +void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv) +{ + u32 gtfifodbg; + gtfifodbg = I915_READ_NOTRACE(GTFIFODBG); + if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK, + "MMIO read or write has been dropped %x\n", gtfifodbg)) + I915_WRITE_NOTRACE(GTFIFODBG, GT_FIFO_CPU_ERROR_MASK); +} + +static void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE, 0); + /* gen6_gt_check_fifodbg doubles as the POSTING_READ */ + gen6_gt_check_fifodbg(dev_priv); +} + +static void __gen6_gt_force_wake_mt_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_MT, _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL)); + /* gen6_gt_check_fifodbg doubles as the POSTING_READ */ + gen6_gt_check_fifodbg(dev_priv); +} + +/* + * see gen6_gt_force_wake_get() + */ +void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) +{ + unsigned long irqflags; + + spin_lock_irqsave(&dev_priv->gt_lock, irqflags); + if (--dev_priv->forcewake_count == 0) + dev_priv->gt.force_wake_put(dev_priv); + spin_unlock_irqrestore(&dev_priv->gt_lock, irqflags); +} + +int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv) +{ + int ret = 0; + + if (dev_priv->gt_fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES) { + int loop = 500; + u32 fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) { + udelay(10); + fifo = I915_READ_NOTRACE(GT_FIFO_FREE_ENTRIES); + } + if (WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES)) + ++ret; + dev_priv->gt_fifo_count = fifo; + } + dev_priv->gt_fifo_count--; + + return ret; +} + +static void vlv_force_wake_reset(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_DISABLE(0xffff)); +} + +static void vlv_force_wake_get(struct drm_i915_private *dev_priv) +{ + if (wait_for_atomic((I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1) == 0, + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake old ack to clear.\n"); + + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_ENABLE(FORCEWAKE_KERNEL)); + + if (wait_for_atomic((I915_READ_NOTRACE(FORCEWAKE_ACK_VLV) & 1), + FORCEWAKE_ACK_TIMEOUT_MS)) + DRM_ERROR("Timed out waiting for forcewake to ack request.\n"); + + __gen6_gt_wait_for_thread_c0(dev_priv); +} + +static void vlv_force_wake_put(struct drm_i915_private *dev_priv) +{ + I915_WRITE_NOTRACE(FORCEWAKE_VLV, _MASKED_BIT_DISABLE(FORCEWAKE_KERNEL)); + /* The below doubles as a POSTING_READ */ + gen6_gt_check_fifodbg(dev_priv); +} + +void intel_gt_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + if (IS_VALLEYVIEW(dev)) { + vlv_force_wake_reset(dev_priv); + } else if (INTEL_INFO(dev)->gen >= 6) { + __gen6_gt_force_wake_reset(dev_priv); + if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) + __gen6_gt_force_wake_mt_reset(dev_priv); + } +} + +void intel_gt_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + spin_lock_init(&dev_priv->gt_lock); + + intel_gt_reset(dev); + + if (IS_VALLEYVIEW(dev)) { + dev_priv->gt.force_wake_get = vlv_force_wake_get; + dev_priv->gt.force_wake_put = vlv_force_wake_put; + } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { + dev_priv->gt.force_wake_get = __gen6_gt_force_wake_mt_get; + dev_priv->gt.force_wake_put = __gen6_gt_force_wake_mt_put; + } else if (IS_GEN6(dev)) { + dev_priv->gt.force_wake_get = __gen6_gt_force_wake_get; + dev_priv->gt.force_wake_put = __gen6_gt_force_wake_put; + } + INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work, + intel_gen6_powersave_work); +} + +int sandybridge_pcode_read(struct drm_i915_private *dev_priv, u8 mbox, u32 *val) +{ + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + if (I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) { + DRM_DEBUG_DRIVER("warning: pcode (read) mailbox access failed\n"); + return -EAGAIN; + } + + I915_WRITE(GEN6_PCODE_DATA, *val); + I915_WRITE(GEN6_PCODE_MAILBOX, GEN6_PCODE_READY | mbox); + + if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, + 500)) { + DRM_ERROR("timeout waiting for pcode read (%d) to finish\n", mbox); + return -ETIMEDOUT; + } + + *val = I915_READ(GEN6_PCODE_DATA); + I915_WRITE(GEN6_PCODE_DATA, 0); + + return 0; +} + +int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val) +{ + WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock)); + + if (I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) { + DRM_DEBUG_DRIVER("warning: pcode (write) mailbox access failed\n"); + return -EAGAIN; + } + + I915_WRITE(GEN6_PCODE_DATA, val); + I915_WRITE(GEN6_PCODE_MAILBOX, GEN6_PCODE_READY | mbox); + + if (wait_for((I915_READ(GEN6_PCODE_MAILBOX) & GEN6_PCODE_READY) == 0, + 500)) { + DRM_ERROR("timeout waiting for pcode write (%d) to finish\n", mbox); + return -ETIMEDOUT; + } + + I915_WRITE(GEN6_PCODE_DATA, 0); + + return 0; +} --- linux-3.5.0.orig/ubuntu/i915/i915_gem.c +++ linux-3.5.0/ubuntu/i915/i915_gem.c @@ -0,0 +1,4396 @@ +/* + * Copyright © 2008 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "i915_trace.h" +#include "intel_drv.h" +#include +#include +#include +#include +#include + +static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj); +static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj); +static __must_check int i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj, + unsigned alignment, + bool map_and_fenceable, + bool nonblocking); +static int i915_gem_phys_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file); + +static void i915_gem_write_fence(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj); +static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, + struct drm_i915_fence_reg *fence, + bool enable); + +static int i915_gem_inactive_shrink(struct shrinker *shrinker, + struct shrink_control *sc); +static long i915_gem_purge(struct drm_i915_private *dev_priv, long target); +static void i915_gem_shrink_all(struct drm_i915_private *dev_priv); +static void i915_gem_object_truncate(struct drm_i915_gem_object *obj); + +static inline void i915_gem_object_fence_lost(struct drm_i915_gem_object *obj) +{ + if (obj->tiling_mode) + i915_gem_release_mmap(obj); + + /* As we do not have an associated fence register, we will force + * a tiling change if we ever need to acquire one. + */ + obj->fence_dirty = false; + obj->fence_reg = I915_FENCE_REG_NONE; +} + +/* some bookkeeping */ +static void i915_gem_info_add_obj(struct drm_i915_private *dev_priv, + size_t size) +{ + dev_priv->mm.object_count++; + dev_priv->mm.object_memory += size; +} + +static void i915_gem_info_remove_obj(struct drm_i915_private *dev_priv, + size_t size) +{ + dev_priv->mm.object_count--; + dev_priv->mm.object_memory -= size; +} + +static int +i915_gem_wait_for_error(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct completion *x = &dev_priv->error_completion; + unsigned long flags; + int ret; + + if (!atomic_read(&dev_priv->mm.wedged)) + return 0; + + /* + * Only wait 10 seconds for the gpu reset to complete to avoid hanging + * userspace. If it takes that long something really bad is going on and + * we should simply try to bail out and fail as gracefully as possible. + */ + ret = wait_for_completion_interruptible_timeout(x, 10*HZ); + if (ret == 0) { + DRM_ERROR("Timed out waiting for the gpu reset to complete\n"); + return -EIO; + } else if (ret < 0) { + return ret; + } + + if (atomic_read(&dev_priv->mm.wedged)) { + /* GPU is hung, bump the completion count to account for + * the token we just consumed so that we never hit zero and + * end up waiting upon a subsequent completion event that + * will never happen. + */ + spin_lock_irqsave(&x->wait.lock, flags); + x->done++; + spin_unlock_irqrestore(&x->wait.lock, flags); + } + return 0; +} + +int i915_mutex_lock_interruptible(struct drm_device *dev) +{ + int ret; + + ret = i915_gem_wait_for_error(dev); + if (ret) + return ret; + + ret = mutex_lock_interruptible(&dev->struct_mutex); + if (ret) + return ret; + + WARN_ON(i915_verify_lists(dev)); + return 0; +} + +static inline bool +i915_gem_object_is_inactive(struct drm_i915_gem_object *obj) +{ + return obj->gtt_space && !obj->active; +} + +int +i915_gem_init_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_init *args = data; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return -ENODEV; + + if (args->gtt_start >= args->gtt_end || + (args->gtt_end | args->gtt_start) & (PAGE_SIZE - 1)) + return -EINVAL; + + /* GEM with user mode setting was never supported on ilk and later. */ + if (INTEL_INFO(dev)->gen >= 5) + return -ENODEV; + + mutex_lock(&dev->struct_mutex); + i915_gem_init_global_gtt(dev, args->gtt_start, + args->gtt_end, args->gtt_end); + mutex_unlock(&dev->struct_mutex); + + return 0; +} + +int +i915_gem_get_aperture_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_get_aperture *args = data; + struct drm_i915_gem_object *obj; + size_t pinned; + + pinned = 0; + mutex_lock(&dev->struct_mutex); + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) + if (obj->pin_count) + pinned += obj->gtt_space->size; + mutex_unlock(&dev->struct_mutex); + + args->aper_size = dev_priv->mm.gtt_total; + args->aper_available_size = args->aper_size - pinned; + + return 0; +} + +static int +i915_gem_create(struct drm_file *file, + struct drm_device *dev, + uint64_t size, + uint32_t *handle_p) +{ + struct drm_i915_gem_object *obj; + int ret; + u32 handle; + + size = roundup(size, PAGE_SIZE); + if (size == 0) + return -EINVAL; + + /* Allocate the new object */ + obj = i915_gem_alloc_object(dev, size); + if (obj == NULL) + return -ENOMEM; + + ret = drm_gem_handle_create(file, &obj->base, &handle); + if (ret) { + drm_gem_object_release(&obj->base); + i915_gem_info_remove_obj(dev->dev_private, obj->base.size); + kfree(obj); + return ret; + } + + /* drop reference from allocate - handle holds it now */ + drm_gem_object_unreference(&obj->base); + trace_i915_gem_object_create(obj); + + *handle_p = handle; + return 0; +} + +int +i915_gem_dumb_create(struct drm_file *file, + struct drm_device *dev, + struct drm_mode_create_dumb *args) +{ + /* have to work out size/pitch and return them */ + args->pitch = ALIGN(args->width * ((args->bpp + 7) / 8), 64); + args->size = args->pitch * args->height; + return i915_gem_create(file, dev, + args->size, &args->handle); +} + +int i915_gem_dumb_destroy(struct drm_file *file, + struct drm_device *dev, + uint32_t handle) +{ + return drm_gem_handle_delete(file, handle); +} + +/** + * Creates a new mm object and returns a handle to it. + */ +int +i915_gem_create_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_create *args = data; + + return i915_gem_create(file, dev, + args->size, &args->handle); +} + +static int i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + + return dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_9_10_17 && + obj->tiling_mode != I915_TILING_NONE; +} + +static inline int +__copy_to_user_swizzled(char __user *cpu_vaddr, + const char *gpu_vaddr, int gpu_offset, + int length) +{ + int ret, cpu_offset = 0; + + while (length > 0) { + int cacheline_end = ALIGN(gpu_offset + 1, 64); + int this_length = min(cacheline_end - gpu_offset, length); + int swizzled_gpu_offset = gpu_offset ^ 64; + + ret = __copy_to_user(cpu_vaddr + cpu_offset, + gpu_vaddr + swizzled_gpu_offset, + this_length); + if (ret) + return ret + length; + + cpu_offset += this_length; + gpu_offset += this_length; + length -= this_length; + } + + return 0; +} + +static inline int +__copy_from_user_swizzled(char *gpu_vaddr, int gpu_offset, + const char __user *cpu_vaddr, + int length) +{ + int ret, cpu_offset = 0; + + while (length > 0) { + int cacheline_end = ALIGN(gpu_offset + 1, 64); + int this_length = min(cacheline_end - gpu_offset, length); + int swizzled_gpu_offset = gpu_offset ^ 64; + + ret = __copy_from_user(gpu_vaddr + swizzled_gpu_offset, + cpu_vaddr + cpu_offset, + this_length); + if (ret) + return ret + length; + + cpu_offset += this_length; + gpu_offset += this_length; + length -= this_length; + } + + return 0; +} + +/* Per-page copy function for the shmem pread fastpath. + * Flushes invalid cachelines before reading the target if + * needs_clflush is set. */ +static int +shmem_pread_fast(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, bool needs_clflush) +{ + char *vaddr; + int ret; + + if (unlikely(page_do_bit17_swizzling)) + return -EINVAL; + + vaddr = kmap_atomic(page); + if (needs_clflush) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + ret = __copy_to_user_inatomic(user_data, + vaddr + shmem_page_offset, + page_length); + kunmap_atomic(vaddr); + + return ret ? -EFAULT : 0; +} + +static void +shmem_clflush_swizzled_range(char *addr, unsigned long length, + bool swizzled) +{ + if (unlikely(swizzled)) { + unsigned long start = (unsigned long) addr; + unsigned long end = (unsigned long) addr + length; + + /* For swizzling simply ensure that we always flush both + * channels. Lame, but simple and it works. Swizzled + * pwrite/pread is far from a hotpath - current userspace + * doesn't use it at all. */ + start = round_down(start, 128); + end = round_up(end, 128); + + drm_clflush_virt_range((void *)start, end - start); + } else { + drm_clflush_virt_range(addr, length); + } + +} + +/* Only difference to the fast-path function is that this can handle bit17 + * and uses non-atomic copy and kmap functions. */ +static int +shmem_pread_slow(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, bool needs_clflush) +{ + char *vaddr; + int ret; + + vaddr = kmap(page); + if (needs_clflush) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + + if (page_do_bit17_swizzling) + ret = __copy_to_user_swizzled(user_data, + vaddr, shmem_page_offset, + page_length); + else + ret = __copy_to_user(user_data, + vaddr + shmem_page_offset, + page_length); + kunmap(page); + + return ret ? - EFAULT : 0; +} + +static int +i915_gem_shmem_pread(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pread *args, + struct drm_file *file) +{ + char __user *user_data; + ssize_t remain; + loff_t offset; + int shmem_page_offset, page_length, ret = 0; + int obj_do_bit17_swizzling, page_do_bit17_swizzling; + int hit_slowpath = 0; + int prefaulted = 0; + int needs_clflush = 0; + struct scatterlist *sg; + int i; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj); + + if (!(obj->base.read_domains & I915_GEM_DOMAIN_CPU)) { + /* If we're not in the cpu read domain, set ourself into the gtt + * read domain and manually flush cachelines (if required). This + * optimizes for the case when the gpu will dirty the data + * anyway again before the next pread happens. */ + if (obj->cache_level == I915_CACHE_NONE) + needs_clflush = 1; + if (obj->gtt_space) { + ret = i915_gem_object_set_to_gtt_domain(obj, false); + if (ret) + return ret; + } + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + offset = args->offset; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) { + struct page *page; + + if (i < offset >> PAGE_SHIFT) + continue; + + if (remain <= 0) + break; + + /* Operation in this page + * + * shmem_page_offset = offset within page in shmem file + * page_length = bytes to copy for this page + */ + shmem_page_offset = offset_in_page(offset); + page_length = remain; + if ((shmem_page_offset + page_length) > PAGE_SIZE) + page_length = PAGE_SIZE - shmem_page_offset; + + page = sg_page(sg); + page_do_bit17_swizzling = obj_do_bit17_swizzling && + (page_to_phys(page) & (1 << 17)) != 0; + + ret = shmem_pread_fast(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + needs_clflush); + if (ret == 0) + goto next_page; + + hit_slowpath = 1; + mutex_unlock(&dev->struct_mutex); + + if (!prefaulted) { + ret = fault_in_multipages_writeable(user_data, remain); + /* Userspace is tricking us, but we've already clobbered + * its pages with the prefault and promised to write the + * data up to the first fault. Hence ignore any errors + * and just continue. */ + (void)ret; + prefaulted = 1; + } + + ret = shmem_pread_slow(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + needs_clflush); + + mutex_lock(&dev->struct_mutex); + +next_page: + mark_page_accessed(page); + + if (ret) + goto out; + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out: + i915_gem_object_unpin_pages(obj); + + if (hit_slowpath) { + /* Fixup: Kill any reinstated backing storage pages */ + if (obj->madv == __I915_MADV_PURGED) + i915_gem_object_truncate(obj); + } + + return ret; +} + +/** + * Reads data from the object referenced by handle. + * + * On error, the contents of *data are undefined. + */ +int +i915_gem_pread_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pread *args = data; + struct drm_i915_gem_object *obj; + int ret = 0; + + if (args->size == 0) + return 0; + + if (!access_ok(VERIFY_WRITE, + (char __user *)(uintptr_t)args->data_ptr, + args->size)) + return -EFAULT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Bounds check source. */ + if (args->offset > obj->base.size || + args->size > obj->base.size - args->offset) { + ret = -EINVAL; + goto out; + } + + /* prime objects have no backing filp to GEM pread/pwrite + * pages from. + */ + if (!obj->base.filp) { + ret = -EINVAL; + goto out; + } + + trace_i915_gem_object_pread(obj, args->offset, args->size); + + ret = i915_gem_shmem_pread(dev, obj, args, file); + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/* This is the fast write path which cannot handle + * page faults in the source data + */ + +static inline int +fast_user_write(struct io_mapping *mapping, + loff_t page_base, int page_offset, + char __user *user_data, + int length) +{ + void __iomem *vaddr_atomic; + void *vaddr; + unsigned long unwritten; + + vaddr_atomic = io_mapping_map_atomic_wc(mapping, page_base); + /* We can use the cpu mem copy function because this is X86. */ + vaddr = (void __force*)vaddr_atomic + page_offset; + unwritten = __copy_from_user_inatomic_nocache(vaddr, + user_data, length); + io_mapping_unmap_atomic(vaddr_atomic); + return unwritten; +} + +/** + * This is the fast pwrite path, where we copy the data directly from the + * user into the GTT, uncached. + */ +static int +i915_gem_gtt_pwrite_fast(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + ssize_t remain; + loff_t offset, page_base; + char __user *user_data; + int page_offset, page_length, ret; + + ret = i915_gem_object_pin(obj, 0, true, true); + if (ret) + goto out; + + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + goto out_unpin; + + ret = i915_gem_object_put_fence(obj); + if (ret) + goto out_unpin; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + offset = obj->gtt_offset + args->offset; + + while (remain > 0) { + /* Operation in this page + * + * page_base = page offset within aperture + * page_offset = offset within page + * page_length = bytes to copy for this page + */ + page_base = offset & PAGE_MASK; + page_offset = offset_in_page(offset); + page_length = remain; + if ((page_offset + remain) > PAGE_SIZE) + page_length = PAGE_SIZE - page_offset; + + /* If we get a fault while copying data, then (presumably) our + * source page isn't available. Return the error and we'll + * retry in the slow path. + */ + if (fast_user_write(dev_priv->mm.gtt_mapping, page_base, + page_offset, user_data, page_length)) { + ret = -EFAULT; + goto out_unpin; + } + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out_unpin: + i915_gem_object_unpin(obj); +out: + return ret; +} + +/* Per-page copy function for the shmem pwrite fastpath. + * Flushes invalid cachelines before writing to the target if + * needs_clflush_before is set and flushes out any written cachelines after + * writing if needs_clflush is set. */ +static int +shmem_pwrite_fast(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, + bool needs_clflush_before, + bool needs_clflush_after) +{ + char *vaddr; + int ret; + + if (unlikely(page_do_bit17_swizzling)) + return -EINVAL; + + vaddr = kmap_atomic(page); + if (needs_clflush_before) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + ret = __copy_from_user_inatomic_nocache(vaddr + shmem_page_offset, + user_data, + page_length); + if (needs_clflush_after) + drm_clflush_virt_range(vaddr + shmem_page_offset, + page_length); + kunmap_atomic(vaddr); + + return ret ? -EFAULT : 0; +} + +/* Only difference to the fast-path function is that this can handle bit17 + * and uses non-atomic copy and kmap functions. */ +static int +shmem_pwrite_slow(struct page *page, int shmem_page_offset, int page_length, + char __user *user_data, + bool page_do_bit17_swizzling, + bool needs_clflush_before, + bool needs_clflush_after) +{ + char *vaddr; + int ret; + + vaddr = kmap(page); + if (unlikely(needs_clflush_before || page_do_bit17_swizzling)) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + if (page_do_bit17_swizzling) + ret = __copy_from_user_swizzled(vaddr, shmem_page_offset, + user_data, + page_length); + else + ret = __copy_from_user(vaddr + shmem_page_offset, + user_data, + page_length); + if (needs_clflush_after) + shmem_clflush_swizzled_range(vaddr + shmem_page_offset, + page_length, + page_do_bit17_swizzling); + kunmap(page); + + return ret ? -EFAULT : 0; +} + +static int +i915_gem_shmem_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file) +{ + ssize_t remain; + loff_t offset; + char __user *user_data; + int shmem_page_offset, page_length, ret = 0; + int obj_do_bit17_swizzling, page_do_bit17_swizzling; + int hit_slowpath = 0; + int needs_clflush_after = 0; + int needs_clflush_before = 0; + int i; + struct scatterlist *sg; + + user_data = (char __user *) (uintptr_t) args->data_ptr; + remain = args->size; + + obj_do_bit17_swizzling = i915_gem_object_needs_bit17_swizzle(obj); + + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + /* If we're not in the cpu write domain, set ourself into the gtt + * write domain and manually flush cachelines (if required). This + * optimizes for the case when the gpu will use the data + * right away and we therefore have to clflush anyway. */ + if (obj->cache_level == I915_CACHE_NONE) + needs_clflush_after = 1; + if (obj->gtt_space) { + ret = i915_gem_object_set_to_gtt_domain(obj, true); + if (ret) + return ret; + } + } + /* Same trick applies for invalidate partially written cachelines before + * writing. */ + if (!(obj->base.read_domains & I915_GEM_DOMAIN_CPU) + && obj->cache_level == I915_CACHE_NONE) + needs_clflush_before = 1; + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + offset = args->offset; + obj->dirty = 1; + + for_each_sg(obj->pages->sgl, sg, obj->pages->nents, i) { + struct page *page; + int partial_cacheline_write; + + if (i < offset >> PAGE_SHIFT) + continue; + + if (remain <= 0) + break; + + /* Operation in this page + * + * shmem_page_offset = offset within page in shmem file + * page_length = bytes to copy for this page + */ + shmem_page_offset = offset_in_page(offset); + + page_length = remain; + if ((shmem_page_offset + page_length) > PAGE_SIZE) + page_length = PAGE_SIZE - shmem_page_offset; + + /* If we don't overwrite a cacheline completely we need to be + * careful to have up-to-date data by first clflushing. Don't + * overcomplicate things and flush the entire patch. */ + partial_cacheline_write = needs_clflush_before && + ((shmem_page_offset | page_length) + & (boot_cpu_data.x86_clflush_size - 1)); + + page = sg_page(sg); + page_do_bit17_swizzling = obj_do_bit17_swizzling && + (page_to_phys(page) & (1 << 17)) != 0; + + ret = shmem_pwrite_fast(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + partial_cacheline_write, + needs_clflush_after); + if (ret == 0) + goto next_page; + + hit_slowpath = 1; + mutex_unlock(&dev->struct_mutex); + ret = shmem_pwrite_slow(page, shmem_page_offset, page_length, + user_data, page_do_bit17_swizzling, + partial_cacheline_write, + needs_clflush_after); + + mutex_lock(&dev->struct_mutex); + +next_page: + set_page_dirty(page); + mark_page_accessed(page); + + if (ret) + goto out; + + remain -= page_length; + user_data += page_length; + offset += page_length; + } + +out: + i915_gem_object_unpin_pages(obj); + + if (hit_slowpath) { + /* Fixup: Kill any reinstated backing storage pages */ + if (obj->madv == __I915_MADV_PURGED) + i915_gem_object_truncate(obj); + /* and flush dirty cachelines in case the object isn't in the cpu write + * domain anymore. */ + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + i915_gem_clflush_object(obj); + i915_gem_chipset_flush(dev); + } + } + + if (needs_clflush_after) + i915_gem_chipset_flush(dev); + + return ret; +} + +/** + * Writes data to the object referenced by handle. + * + * On error, the contents of the buffer that were to be modified are undefined. + */ +int +i915_gem_pwrite_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pwrite *args = data; + struct drm_i915_gem_object *obj; + int ret; + + if (args->size == 0) + return 0; + + if (!access_ok(VERIFY_READ, + (char __user *)(uintptr_t)args->data_ptr, + args->size)) + return -EFAULT; + + ret = fault_in_multipages_readable((char __user *)(uintptr_t)args->data_ptr, + args->size); + if (ret) + return -EFAULT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Bounds check destination. */ + if (args->offset > obj->base.size || + args->size > obj->base.size - args->offset) { + ret = -EINVAL; + goto out; + } + + /* prime objects have no backing filp to GEM pread/pwrite + * pages from. + */ + if (!obj->base.filp) { + ret = -EINVAL; + goto out; + } + + trace_i915_gem_object_pwrite(obj, args->offset, args->size); + + ret = -EFAULT; + /* We can only do the GTT pwrite on untiled buffers, as otherwise + * it would end up going through the fenced access, and we'll get + * different detiling behavior between reading and writing. + * pread/pwrite currently are reading and writing from the CPU + * perspective, requiring manual detiling by the client. + */ + if (obj->phys_obj) { + ret = i915_gem_phys_pwrite(dev, obj, args, file); + goto out; + } + + if (obj->cache_level == I915_CACHE_NONE && + obj->tiling_mode == I915_TILING_NONE && + obj->base.write_domain != I915_GEM_DOMAIN_CPU) { + ret = i915_gem_gtt_pwrite_fast(dev, obj, args, file); + /* Note that the gtt paths might fail with non-page-backed user + * pointers (e.g. gtt mappings when moving data between + * textures). Fallback to the shmem path in that case. */ + } + + if (ret == -EFAULT || ret == -ENOSPC) + ret = i915_gem_shmem_pwrite(dev, obj, args, file); + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_check_wedge(struct drm_i915_private *dev_priv, + bool interruptible) +{ + if (atomic_read(&dev_priv->mm.wedged)) { + struct completion *x = &dev_priv->error_completion; + bool recovery_complete; + unsigned long flags; + + /* Give the error handler a chance to run. */ + spin_lock_irqsave(&x->wait.lock, flags); + recovery_complete = x->done > 0; + spin_unlock_irqrestore(&x->wait.lock, flags); + + /* Non-interruptible callers can't handle -EAGAIN, hence return + * -EIO unconditionally for these. */ + if (!interruptible) + return -EIO; + + /* Recovery complete, but still wedged means reset failure. */ + if (recovery_complete) + return -EIO; + + return -EAGAIN; + } + + return 0; +} + +/* + * Compare seqno against outstanding lazy request. Emit a request if they are + * equal. + */ +static int +i915_gem_check_olr(struct intel_ring_buffer *ring, u32 seqno) +{ + int ret; + + BUG_ON(!mutex_is_locked(&ring->dev->struct_mutex)); + + ret = 0; + if (seqno == ring->outstanding_lazy_request) + ret = i915_add_request(ring, NULL, NULL); + + return ret; +} + +/** + * __wait_seqno - wait until execution of seqno has finished + * @ring: the ring expected to report seqno + * @seqno: duh! + * @interruptible: do an interruptible wait (normally yes) + * @timeout: in - how long to wait (NULL forever); out - how much time remaining + * + * Returns 0 if the seqno was found within the alloted time. Else returns the + * errno with remaining time filled in timeout argument. + */ +static int __wait_seqno(struct intel_ring_buffer *ring, u32 seqno, + bool interruptible, struct timespec *timeout) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + struct timespec before, now, wait_time={1,0}; + unsigned long timeout_jiffies; + long end; + bool wait_forever = true; + int ret; + + if (i915_seqno_passed(ring->get_seqno(ring, true), seqno)) + return 0; + + trace_i915_gem_request_wait_begin(ring, seqno); + + if (timeout != NULL) { + wait_time = *timeout; + wait_forever = false; + } + + timeout_jiffies = timespec_to_jiffies(&wait_time); + + if (WARN_ON(!ring->irq_get(ring))) + return -ENODEV; + + /* Record current time in case interrupted by signal, or wedged * */ + getrawmonotonic(&before); + +#define EXIT_COND \ + (i915_seqno_passed(ring->get_seqno(ring, false), seqno) || \ + atomic_read(&dev_priv->mm.wedged)) + do { + if (interruptible) + end = wait_event_interruptible_timeout(ring->irq_queue, + EXIT_COND, + timeout_jiffies); + else + end = wait_event_timeout(ring->irq_queue, EXIT_COND, + timeout_jiffies); + + ret = i915_gem_check_wedge(dev_priv, interruptible); + if (ret) + end = ret; + } while (end == 0 && wait_forever); + + getrawmonotonic(&now); + + ring->irq_put(ring); + trace_i915_gem_request_wait_end(ring, seqno); +#undef EXIT_COND + + if (timeout) { + struct timespec sleep_time = timespec_sub(now, before); + *timeout = timespec_sub(*timeout, sleep_time); + } + + switch (end) { + case -EIO: + case -EAGAIN: /* Wedged */ + case -ERESTARTSYS: /* Signal */ + return (int)end; + case 0: /* Timeout */ + if (timeout) + set_normalized_timespec(timeout, 0, 0); + return -ETIME; + default: /* Completed */ + WARN_ON(end < 0); /* We're not aware of other errors */ + return 0; + } +} + +/** + * Waits for a sequence number to be signaled, and cleans up the + * request and object lists appropriately for that event. + */ +int +i915_wait_seqno(struct intel_ring_buffer *ring, uint32_t seqno) +{ + struct drm_device *dev = ring->dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool interruptible = dev_priv->mm.interruptible; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(seqno == 0); + + ret = i915_gem_check_wedge(dev_priv, interruptible); + if (ret) + return ret; + + ret = i915_gem_check_olr(ring, seqno); + if (ret) + return ret; + + return __wait_seqno(ring, seqno, interruptible, NULL); +} + +/** + * Ensures that all rendering to the object has completed and the object is + * safe to unbind from the GTT or access from the CPU. + */ +static __must_check int +i915_gem_object_wait_rendering(struct drm_i915_gem_object *obj, + bool readonly) +{ + struct intel_ring_buffer *ring = obj->ring; + u32 seqno; + int ret; + + seqno = readonly ? obj->last_write_seqno : obj->last_read_seqno; + if (seqno == 0) + return 0; + + ret = i915_wait_seqno(ring, seqno); + if (ret) + return ret; + + i915_gem_retire_requests_ring(ring); + + /* Manually manage the write flush as we may have not yet + * retired the buffer. + */ + if (obj->last_write_seqno && + i915_seqno_passed(seqno, obj->last_write_seqno)) { + obj->last_write_seqno = 0; + obj->base.write_domain &= ~I915_GEM_GPU_DOMAINS; + } + + return 0; +} + +/* A nonblocking variant of the above wait. This is a highly dangerous routine + * as the object state may change during this call. + */ +static __must_check int +i915_gem_object_wait_rendering__nonblocking(struct drm_i915_gem_object *obj, + bool readonly) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring = obj->ring; + u32 seqno; + int ret; + + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); + BUG_ON(!dev_priv->mm.interruptible); + + seqno = readonly ? obj->last_write_seqno : obj->last_read_seqno; + if (seqno == 0) + return 0; + + ret = i915_gem_check_wedge(dev_priv, true); + if (ret) + return ret; + + ret = i915_gem_check_olr(ring, seqno); + if (ret) + return ret; + + mutex_unlock(&dev->struct_mutex); + ret = __wait_seqno(ring, seqno, true, NULL); + mutex_lock(&dev->struct_mutex); + + i915_gem_retire_requests_ring(ring); + + /* Manually manage the write flush as we may have not yet + * retired the buffer. + */ + if (obj->last_write_seqno && + i915_seqno_passed(seqno, obj->last_write_seqno)) { + obj->last_write_seqno = 0; + obj->base.write_domain &= ~I915_GEM_GPU_DOMAINS; + } + + return ret; +} + +/** + * Called when user space prepares to use an object with the CPU, either + * through the mmap ioctl's mapping or a GTT mapping. + */ +int +i915_gem_set_domain_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_set_domain *args = data; + struct drm_i915_gem_object *obj; + uint32_t read_domains = args->read_domains; + uint32_t write_domain = args->write_domain; + int ret; + + /* Only handle setting domains to types used by the CPU. */ + if (write_domain & I915_GEM_GPU_DOMAINS) + return -EINVAL; + + if (read_domains & I915_GEM_GPU_DOMAINS) + return -EINVAL; + + /* Having something in the write domain implies it's in the read + * domain, and only that read domain. Enforce that in the request. + */ + if (write_domain != 0 && read_domains != write_domain) + return -EINVAL; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Try to flush the object off the GPU without holding the lock. + * We will repeat the flush holding the lock in the normal manner + * to catch cases where we are gazumped. + */ + ret = i915_gem_object_wait_rendering__nonblocking(obj, !write_domain); + if (ret) + goto unref; + + if (read_domains & I915_GEM_DOMAIN_GTT) { + ret = i915_gem_object_set_to_gtt_domain(obj, write_domain != 0); + + /* Silently promote "you're not bound, there was nothing to do" + * to success, since the client was just asking us to + * make sure everything was done. + */ + if (ret == -EINVAL) + ret = 0; + } else { + ret = i915_gem_object_set_to_cpu_domain(obj, write_domain != 0); + } + +unref: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * Called when user space has done writes to this buffer + */ +int +i915_gem_sw_finish_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_sw_finish *args = data; + struct drm_i915_gem_object *obj; + int ret = 0; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Pinned buffers may be scanout, so flush the cache */ + if (obj->pin_count) + i915_gem_object_flush_cpu_write_domain(obj); + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * Maps the contents of an object, returning the address it is mapped + * into. + * + * While the mapping holds a reference on the contents of the object, it doesn't + * imply a ref on the object itself. + */ +int +i915_gem_mmap_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_mmap *args = data; + struct drm_gem_object *obj; + unsigned long addr; + + obj = drm_gem_object_lookup(dev, file, args->handle); + if (obj == NULL) + return -ENOENT; + + /* prime objects have no backing filp to GEM mmap + * pages from. + */ + if (!obj->filp) { + drm_gem_object_unreference_unlocked(obj); + return -EINVAL; + } + + addr = vm_mmap(obj->filp, 0, args->size, + PROT_READ | PROT_WRITE, MAP_SHARED, + args->offset); + drm_gem_object_unreference_unlocked(obj); + if (IS_ERR((void *)addr)) + return addr; + + args->addr_ptr = (uint64_t) addr; + + return 0; +} + +/** + * i915_gem_fault - fault a page into the GTT + * vma: VMA in question + * vmf: fault info + * + * The fault handler is set up by drm_gem_mmap() when a object is GTT mapped + * from userspace. The fault handler takes care of binding the object to + * the GTT (if needed), allocating and programming a fence register (again, + * only if needed based on whether the old reg is still valid or the object + * is tiled) and inserting a new PTE into the faulting process. + * + * Note that the faulting process may involve evicting existing objects + * from the GTT and/or fence registers to make room. So performance may + * suffer if the GTT working set is large or there are few fence registers + * left. + */ +int i915_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) +{ + struct drm_i915_gem_object *obj = to_intel_bo(vma->vm_private_data); + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + pgoff_t page_offset; + unsigned long pfn; + int ret = 0; + bool write = !!(vmf->flags & FAULT_FLAG_WRITE); + + /* We don't use vmf->pgoff since that has the fake offset */ + page_offset = ((unsigned long)vmf->virtual_address - vma->vm_start) >> + PAGE_SHIFT; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + goto out; + + trace_i915_gem_object_fault(obj, page_offset, true, write); + + /* Now bind it into the GTT if needed */ + ret = i915_gem_object_pin(obj, 0, true, false); + if (ret) + goto unlock; + + ret = i915_gem_object_set_to_gtt_domain(obj, write); + if (ret) + goto unpin; + + ret = i915_gem_object_get_fence(obj); + if (ret) + goto unpin; + + obj->fault_mappable = true; + + pfn = ((dev_priv->mm.gtt_base_addr + obj->gtt_offset) >> PAGE_SHIFT) + + page_offset; + + /* Finally, remap it using the new GTT offset */ + ret = vm_insert_pfn(vma, (unsigned long)vmf->virtual_address, pfn); +unpin: + i915_gem_object_unpin(obj); +unlock: + mutex_unlock(&dev->struct_mutex); +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 (!atomic_read(&dev_priv->mm.wedged)) + return VM_FAULT_SIGBUS; + case -EAGAIN: + /* Give the error handler a chance to run and move the + * objects off the GPU active list. Next time we service the + * fault, we should be able to transition the page into the + * GTT without touching the GPU (and so avoid further + * EIO/EGAIN). If the GPU is wedged, then there is no issue + * with coherency, just lost writes. + */ + set_need_resched(); + case 0: + case -ERESTARTSYS: + case -EINTR: + case -EBUSY: + /* + * EBUSY is ok: this just means that another thread + * already did the job. + */ + return VM_FAULT_NOPAGE; + case -ENOMEM: + return VM_FAULT_OOM; + case -ENOSPC: + return VM_FAULT_SIGBUS; + default: + WARN_ONCE(ret, "unhandled error in i915_gem_fault: %i\n", ret); + return VM_FAULT_SIGBUS; + } +} + +/** + * i915_gem_release_mmap - remove physical page mappings + * @obj: obj in question + * + * Preserve the reservation of the mmapping with the DRM core code, but + * relinquish ownership of the pages back to the system. + * + * It is vital that we remove the page mapping if we have mapped a tiled + * object through the GTT and then lose the fence register due to + * resource pressure. Similarly if the object has been moved out of the + * aperture, than pages mapped into userspace must be revoked. Removing the + * mapping will then trigger a page fault on the next user access, allowing + * fixup by i915_gem_fault(). + */ +void +i915_gem_release_mmap(struct drm_i915_gem_object *obj) +{ + if (!obj->fault_mappable) + return; + + if (obj->base.dev->dev_mapping) + unmap_mapping_range(obj->base.dev->dev_mapping, + (loff_t)obj->base.map_list.hash.key<base.size, 1); + + obj->fault_mappable = false; +} + +static uint32_t +i915_gem_get_gtt_size(struct drm_device *dev, uint32_t size, int tiling_mode) +{ + uint32_t gtt_size; + + if (INTEL_INFO(dev)->gen >= 4 || + tiling_mode == I915_TILING_NONE) + return size; + + /* Previous chips need a power-of-two fence region when tiling */ + if (INTEL_INFO(dev)->gen == 3) + gtt_size = 1024*1024; + else + gtt_size = 512*1024; + + while (gtt_size < size) + gtt_size <<= 1; + + return gtt_size; +} + +/** + * i915_gem_get_gtt_alignment - return required GTT alignment for an object + * @obj: object to check + * + * Return the required GTT alignment for an object, taking into account + * potential fence register mapping. + */ +static uint32_t +i915_gem_get_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode) +{ + /* + * Minimum alignment is 4k (GTT page size), but might be greater + * if a fence register is needed for the object. + */ + if (INTEL_INFO(dev)->gen >= 4 || + tiling_mode == I915_TILING_NONE) + return 4096; + + /* + * Previous chips need to be aligned to the size of the smallest + * fence register that can contain the object. + */ + return i915_gem_get_gtt_size(dev, size, tiling_mode); +} + +/** + * i915_gem_get_unfenced_gtt_alignment - return required GTT alignment for an + * unfenced object + * @dev: the device + * @size: size of the object + * @tiling_mode: tiling mode of the object + * + * Return the required GTT alignment for an object, only taking into account + * unfenced tiled surface requirements. + */ +uint32_t +i915_gem_get_unfenced_gtt_alignment(struct drm_device *dev, + uint32_t size, + int tiling_mode) +{ + /* + * Minimum alignment is 4k (GTT page size) for sane hw. + */ + if (INTEL_INFO(dev)->gen >= 4 || IS_G33(dev) || + tiling_mode == I915_TILING_NONE) + return 4096; + + /* Previous hardware however needs to be aligned to a power-of-two + * tile height. The simplest method for determining this is to reuse + * the power-of-tile object size. + */ + return i915_gem_get_gtt_size(dev, size, tiling_mode); +} + +static int i915_gem_object_create_mmap_offset(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int ret; + + if (obj->base.map_list.map) + return 0; + + ret = drm_gem_create_mmap_offset(&obj->base); + if (ret != -ENOSPC) + return ret; + + /* Badly fragmented mmap space? The only way we can recover + * space is by destroying unwanted objects. We can't randomly release + * mmap_offsets as userspace expects them to be persistent for the + * lifetime of the objects. The closest we can is to release the + * offsets on purgeable objects by truncating it and marking it purged, + * which prevents userspace from ever using that object again. + */ + i915_gem_purge(dev_priv, obj->base.size >> PAGE_SHIFT); + ret = drm_gem_create_mmap_offset(&obj->base); + if (ret != -ENOSPC) + return ret; + + i915_gem_shrink_all(dev_priv); + return drm_gem_create_mmap_offset(&obj->base); +} + +static void i915_gem_object_free_mmap_offset(struct drm_i915_gem_object *obj) +{ + if (!obj->base.map_list.map) + return; + + drm_gem_free_mmap_offset(&obj->base); +} + +int +i915_gem_mmap_gtt(struct drm_file *file, + struct drm_device *dev, + uint32_t handle, + uint64_t *offset) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->base.size > dev_priv->mm.gtt_mappable_end) { + ret = -E2BIG; + goto out; + } + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to mmap a purgeable buffer\n"); + ret = -EINVAL; + goto out; + } + + ret = i915_gem_object_create_mmap_offset(obj); + if (ret) + goto out; + + *offset = (u64)obj->base.map_list.hash.key << PAGE_SHIFT; + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * i915_gem_mmap_gtt_ioctl - prepare an object for GTT mmap'ing + * @dev: DRM device + * @data: GTT mapping ioctl data + * @file: GEM object info + * + * Simply returns the fake offset to userspace so it can mmap it. + * The mmap call will end up in drm_gem_mmap(), which will set things + * up so we can get faults in the handler above. + * + * The fault handler will take care of binding the object into the GTT + * (since it may have been evicted to make room for something), allocating + * a fence register, and mapping the appropriate aperture address into + * userspace. + */ +int +i915_gem_mmap_gtt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_mmap_gtt *args = data; + + return i915_gem_mmap_gtt(file, dev, args->handle, &args->offset); +} + +/* Immediately discard the backing storage */ +static void +i915_gem_object_truncate(struct drm_i915_gem_object *obj) +{ + struct inode *inode; + + i915_gem_object_free_mmap_offset(obj); + + if (obj->base.filp == NULL) + return; + + /* Our goal here is to return as much of the memory as + * is possible back to the system as we are called from OOM. + * To do this we must instruct the shmfs to drop all of its + * backing pages, *now*. + */ + inode = obj->base.filp->f_path.dentry->d_inode; + shmem_truncate_range(inode, 0, (loff_t)-1); + + obj->madv = __I915_MADV_PURGED; +} + +static inline int +i915_gem_object_is_purgeable(struct drm_i915_gem_object *obj) +{ + return obj->madv == I915_MADV_DONTNEED; +} + +static void +i915_gem_object_put_pages_gtt(struct drm_i915_gem_object *obj) +{ + int page_count = obj->base.size / PAGE_SIZE; + struct scatterlist *sg; + int ret, i; + + BUG_ON(obj->madv == __I915_MADV_PURGED); + + ret = i915_gem_object_set_to_cpu_domain(obj, true); + if (ret) { + /* In the event of a disaster, abandon all caches and + * hope for the best. + */ + WARN_ON(ret != -EIO); + i915_gem_clflush_object(obj); + obj->base.read_domains = obj->base.write_domain = I915_GEM_DOMAIN_CPU; + } + + if (i915_gem_object_needs_bit17_swizzle(obj)) + i915_gem_object_save_bit_17_swizzle(obj); + + if (obj->madv == I915_MADV_DONTNEED) + obj->dirty = 0; + + for_each_sg(obj->pages->sgl, sg, page_count, i) { + struct page *page = sg_page(sg); + + if (obj->dirty) + set_page_dirty(page); + + if (obj->madv == I915_MADV_WILLNEED) + mark_page_accessed(page); + + page_cache_release(page); + } + obj->dirty = 0; + + sg_free_table(obj->pages); + kfree(obj->pages); +} + +static int +i915_gem_object_put_pages(struct drm_i915_gem_object *obj) +{ + const struct drm_i915_gem_object_ops *ops = obj->ops; + + if (obj->pages == NULL) + return 0; + + BUG_ON(obj->gtt_space); + + if (obj->pages_pin_count) + return -EBUSY; + + ops->put_pages(obj); + obj->pages = NULL; + + list_del(&obj->gtt_list); + if (i915_gem_object_is_purgeable(obj)) + i915_gem_object_truncate(obj); + + return 0; +} + +static long +i915_gem_purge(struct drm_i915_private *dev_priv, long target) +{ + struct drm_i915_gem_object *obj, *next; + long count = 0; + + list_for_each_entry_safe(obj, next, + &dev_priv->mm.unbound_list, + gtt_list) { + if (i915_gem_object_is_purgeable(obj) && + i915_gem_object_put_pages(obj) == 0) { + count += obj->base.size >> PAGE_SHIFT; + if (count >= target) + return count; + } + } + + list_for_each_entry_safe(obj, next, + &dev_priv->mm.inactive_list, + mm_list) { + if (i915_gem_object_is_purgeable(obj) && + i915_gem_object_unbind(obj) == 0 && + i915_gem_object_put_pages(obj) == 0) { + count += obj->base.size >> PAGE_SHIFT; + if (count >= target) + return count; + } + } + + return count; +} + +static void +i915_gem_shrink_all(struct drm_i915_private *dev_priv) +{ + struct drm_i915_gem_object *obj, *next; + + i915_gem_evict_everything(dev_priv->dev); + + list_for_each_entry_safe(obj, next, &dev_priv->mm.unbound_list, gtt_list) + i915_gem_object_put_pages(obj); +} + +static int +i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int page_count, i; + struct address_space *mapping; + struct sg_table *st; + struct scatterlist *sg; + struct page *page; + gfp_t gfp; + + /* Assert that the object is not currently in any GPU domain. As it + * wasn't in the GTT, there shouldn't be any way it could have been in + * a GPU cache + */ + BUG_ON(obj->base.read_domains & I915_GEM_GPU_DOMAINS); + BUG_ON(obj->base.write_domain & I915_GEM_GPU_DOMAINS); + + st = kmalloc(sizeof(*st), GFP_KERNEL); + if (st == NULL) + return -ENOMEM; + + page_count = obj->base.size / PAGE_SIZE; + if (sg_alloc_table(st, page_count, GFP_KERNEL)) { + sg_free_table(st); + kfree(st); + return -ENOMEM; + } + + /* Get the list of pages out of our struct file. They'll be pinned + * at this point until we release them. + * + * Fail silently without starting the shrinker + */ + mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + gfp = mapping_gfp_mask(mapping); + gfp |= __GFP_NORETRY | __GFP_NOWARN; + gfp &= ~(__GFP_IO | __GFP_WAIT); + for_each_sg(st->sgl, sg, page_count, i) { + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + if (IS_ERR(page)) { + i915_gem_purge(dev_priv, page_count); + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + } + if (IS_ERR(page)) { + /* We've tried hard to allocate the memory by reaping + * our own buffer, now let the real VM do its job and + * go down in flames if truly OOM. + */ + gfp &= ~(__GFP_NORETRY | __GFP_NOWARN); + gfp |= __GFP_IO | __GFP_WAIT; + + i915_gem_shrink_all(dev_priv); + page = shmem_read_mapping_page_gfp(mapping, i, gfp); + if (IS_ERR(page)) + goto err_pages; + + gfp |= __GFP_NORETRY | __GFP_NOWARN; + gfp &= ~(__GFP_IO | __GFP_WAIT); + } + + sg_set_page(sg, page, PAGE_SIZE, 0); + } + + obj->pages = st; + + if (i915_gem_object_needs_bit17_swizzle(obj)) + i915_gem_object_do_bit_17_swizzle(obj); + + return 0; + +err_pages: + for_each_sg(st->sgl, sg, i, page_count) + page_cache_release(sg_page(sg)); + sg_free_table(st); + kfree(st); + return PTR_ERR(page); +} + +/* Ensure that the associated pages are gathered from the backing storage + * and pinned into our object. i915_gem_object_get_pages() may be called + * multiple times before they are released by a single call to + * i915_gem_object_put_pages() - once the pages are no longer referenced + * either as a result of memory pressure (reaping pages under the shrinker) + * or as the object is itself released. + */ +int +i915_gem_object_get_pages(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + const struct drm_i915_gem_object_ops *ops = obj->ops; + int ret; + + if (obj->pages) + return 0; + + BUG_ON(obj->pages_pin_count); + + ret = ops->get_pages(obj); + if (ret) + return ret; + + list_add_tail(&obj->gtt_list, &dev_priv->mm.unbound_list); + return 0; +} + +void +i915_gem_object_move_to_active(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *ring, + u32 seqno) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + BUG_ON(ring == NULL); + obj->ring = ring; + + /* Add a reference if we're newly entering the active list. */ + if (!obj->active) { + drm_gem_object_reference(&obj->base); + obj->active = 1; + } + + /* Move from whatever list we were on to the tail of execution. */ + list_move_tail(&obj->mm_list, &dev_priv->mm.active_list); + list_move_tail(&obj->ring_list, &ring->active_list); + + obj->last_read_seqno = seqno; + + if (obj->fenced_gpu_access) { + obj->last_fenced_seqno = seqno; + + /* Bump MRU to take account of the delayed flush */ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + struct drm_i915_fence_reg *reg; + + reg = &dev_priv->fence_regs[obj->fence_reg]; + list_move_tail(®->lru_list, + &dev_priv->mm.fence_list); + } + } +} + +static void +i915_gem_object_move_to_inactive(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + + BUG_ON(obj->base.write_domain & ~I915_GEM_GPU_DOMAINS); + BUG_ON(!obj->active); + + if (obj->pin_count) /* are we a framebuffer? */ + intel_mark_fb_idle(obj); + + list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + list_del_init(&obj->ring_list); + obj->ring = NULL; + + obj->last_read_seqno = 0; + obj->last_write_seqno = 0; + obj->base.write_domain = 0; + + obj->last_fenced_seqno = 0; + obj->fenced_gpu_access = false; + + obj->active = 0; + drm_gem_object_unreference(&obj->base); + + WARN_ON(i915_verify_lists(dev)); +} + +static u32 +i915_gem_get_seqno(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 seqno = dev_priv->next_seqno; + + /* reserve 0 for non-seqno */ + if (++dev_priv->next_seqno == 0) + dev_priv->next_seqno = 1; + + return seqno; +} + +u32 +i915_gem_next_request_seqno(struct intel_ring_buffer *ring) +{ + if (ring->outstanding_lazy_request == 0) + ring->outstanding_lazy_request = i915_gem_get_seqno(ring->dev); + + return ring->outstanding_lazy_request; +} + +int +i915_add_request(struct intel_ring_buffer *ring, + struct drm_file *file, + u32 *out_seqno) +{ + drm_i915_private_t *dev_priv = ring->dev->dev_private; + struct drm_i915_gem_request *request; + u32 request_ring_position; + u32 seqno; + int was_empty; + int ret; + + /* + * Emit any outstanding flushes - execbuf can fail to emit the flush + * after having emitted the batchbuffer command. Hence we need to fix + * things up similar to emitting the lazy request. The difference here + * is that the flush _must_ happen before the next request, no matter + * what. + */ + ret = intel_ring_flush_all_caches(ring); + if (ret) + return ret; + + request = kmalloc(sizeof(*request), GFP_KERNEL); + if (request == NULL) + return -ENOMEM; + + seqno = i915_gem_next_request_seqno(ring); + + /* Record the position of the start of the request so that + * should we detect the updated seqno part-way through the + * GPU processing the request, we never over-estimate the + * position of the head. + */ + request_ring_position = intel_ring_get_tail(ring); + + ret = ring->add_request(ring, &seqno); + if (ret) { + kfree(request); + return ret; + } + + trace_i915_gem_request_add(ring, seqno); + + request->seqno = seqno; + request->ring = ring; + request->tail = request_ring_position; + request->emitted_jiffies = jiffies; + was_empty = list_empty(&ring->request_list); + list_add_tail(&request->list, &ring->request_list); + request->file_priv = NULL; + + if (file) { + struct drm_i915_file_private *file_priv = file->driver_priv; + + spin_lock(&file_priv->mm.lock); + request->file_priv = file_priv; + list_add_tail(&request->client_list, + &file_priv->mm.request_list); + spin_unlock(&file_priv->mm.lock); + } + + ring->outstanding_lazy_request = 0; + + if (!dev_priv->mm.suspended) { + if (i915_enable_hangcheck) { + mod_timer(&dev_priv->hangcheck_timer, + round_jiffies_up(jiffies + DRM_I915_HANGCHECK_JIFFIES)); + } + if (was_empty) { + queue_delayed_work(dev_priv->wq, + &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + intel_mark_busy(dev_priv->dev); + } + } + + if (out_seqno) + *out_seqno = seqno; + return 0; +} + +static inline void +i915_gem_request_remove_from_client(struct drm_i915_gem_request *request) +{ + struct drm_i915_file_private *file_priv = request->file_priv; + + if (!file_priv) + return; + + spin_lock(&file_priv->mm.lock); + if (request->file_priv) { + list_del(&request->client_list); + request->file_priv = NULL; + } + spin_unlock(&file_priv->mm.lock); +} + +static void i915_gem_reset_ring_lists(struct drm_i915_private *dev_priv, + struct intel_ring_buffer *ring) +{ + while (!list_empty(&ring->request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&ring->request_list, + struct drm_i915_gem_request, + list); + + list_del(&request->list); + i915_gem_request_remove_from_client(request); + kfree(request); + } + + while (!list_empty(&ring->active_list)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&ring->active_list, + struct drm_i915_gem_object, + ring_list); + + i915_gem_object_move_to_inactive(obj); + } +} + +static void i915_gem_reset_fences(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + int i; + + for (i = 0; i < dev_priv->num_fence_regs; i++) { + struct drm_i915_fence_reg *reg = &dev_priv->fence_regs[i]; + + i915_gem_write_fence(dev, i, NULL); + + if (reg->obj) + i915_gem_object_fence_lost(reg->obj); + + reg->pin_count = 0; + reg->obj = NULL; + INIT_LIST_HEAD(®->lru_list); + } + + INIT_LIST_HEAD(&dev_priv->mm.fence_list); +} + +void i915_gem_reset(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + i915_gem_reset_ring_lists(dev_priv, ring); + + /* Move everything out of the GPU domains to ensure we do any + * necessary invalidation upon reuse. + */ + list_for_each_entry(obj, + &dev_priv->mm.inactive_list, + mm_list) + { + obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS; + } + + /* The fence registers are invalidated so clear them out */ + i915_gem_reset_fences(dev); +} + +/** + * This function clears the request list as sequence numbers are passed. + */ +void +i915_gem_retire_requests_ring(struct intel_ring_buffer *ring) +{ + uint32_t seqno; + int i; + + if (list_empty(&ring->request_list)) + return; + + WARN_ON(i915_verify_lists(ring->dev)); + + seqno = ring->get_seqno(ring, true); + + for (i = 0; i < ARRAY_SIZE(ring->sync_seqno); i++) + if (seqno >= ring->sync_seqno[i]) + ring->sync_seqno[i] = 0; + + while (!list_empty(&ring->request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&ring->request_list, + struct drm_i915_gem_request, + list); + + if (!i915_seqno_passed(seqno, request->seqno)) + break; + + trace_i915_gem_request_retire(ring, request->seqno); + /* We know the GPU must have read the request to have + * sent us the seqno + interrupt, so use the position + * of tail of the request to update the last known position + * of the GPU head. + */ + ring->last_retired_head = request->tail; + + list_del(&request->list); + i915_gem_request_remove_from_client(request); + kfree(request); + } + + /* Move any buffers on the active list that are no longer referenced + * by the ringbuffer to the flushing/inactive lists as appropriate. + */ + while (!list_empty(&ring->active_list)) { + struct drm_i915_gem_object *obj; + + obj = list_first_entry(&ring->active_list, + struct drm_i915_gem_object, + ring_list); + + if (!i915_seqno_passed(seqno, obj->last_read_seqno)) + break; + + i915_gem_object_move_to_inactive(obj); + } + + if (unlikely(ring->trace_irq_seqno && + i915_seqno_passed(seqno, ring->trace_irq_seqno))) { + ring->irq_put(ring); + ring->trace_irq_seqno = 0; + } + + WARN_ON(i915_verify_lists(ring->dev)); +} + +void +i915_gem_retire_requests(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + i915_gem_retire_requests_ring(ring); +} + +static void +i915_gem_retire_work_handler(struct work_struct *work) +{ + drm_i915_private_t *dev_priv; + struct drm_device *dev; + struct intel_ring_buffer *ring; + bool idle; + int i; + + dev_priv = container_of(work, drm_i915_private_t, + mm.retire_work.work); + dev = dev_priv->dev; + + /* Come back later if the device is busy... */ + if (!mutex_trylock(&dev->struct_mutex)) { + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + return; + } + + i915_gem_retire_requests(dev); + + /* Send a periodic flush down the ring so we don't hold onto GEM + * objects indefinitely. + */ + idle = true; + for_each_ring(ring, dev_priv, i) { + if (ring->gpu_caches_dirty) + i915_add_request(ring, NULL, NULL); + + idle &= list_empty(&ring->request_list); + } + + if (!dev_priv->mm.suspended && !idle) + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, + round_jiffies_up_relative(HZ)); + if (idle) + intel_mark_idle(dev); + + mutex_unlock(&dev->struct_mutex); +} + +/** + * Ensures that an object will eventually get non-busy by flushing any required + * write domains, emitting any outstanding lazy request and retiring and + * completed requests. + */ +static int +i915_gem_object_flush_active(struct drm_i915_gem_object *obj) +{ + int ret; + + if (obj->active) { + ret = i915_gem_check_olr(obj->ring, obj->last_read_seqno); + if (ret) + return ret; + + i915_gem_retire_requests_ring(obj->ring); + } + + return 0; +} + +/** + * i915_gem_wait_ioctl - implements DRM_IOCTL_I915_GEM_WAIT + * @DRM_IOCTL_ARGS: standard ioctl arguments + * + * Returns 0 if successful, else an error is returned with the remaining time in + * the timeout parameter. + * -ETIME: object is still busy after timeout + * -ERESTARTSYS: signal interrupted the wait + * -ENONENT: object doesn't exist + * Also possible, but rare: + * -EAGAIN: GPU wedged + * -ENOMEM: damn + * -ENODEV: Internal IRQ fail + * -E?: The add request failed + * + * The wait ioctl with a timeout of 0 reimplements the busy ioctl. With any + * non-zero timeout parameter the wait ioctl will wait for the given number of + * nanoseconds on an object becoming unbusy. Since the wait itself does so + * without holding struct_mutex the object may become re-busied before this + * function completes. A similar but shorter * race condition exists in the busy + * ioctl + */ +int +i915_gem_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file) +{ + struct drm_i915_gem_wait *args = data; + struct drm_i915_gem_object *obj; + struct intel_ring_buffer *ring = NULL; + struct timespec timeout_stack, *timeout = NULL; + u32 seqno = 0; + int ret = 0; + + if (args->timeout_ns >= 0) { + timeout_stack = ns_to_timespec(args->timeout_ns); + timeout = &timeout_stack; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->bo_handle)); + if (&obj->base == NULL) { + mutex_unlock(&dev->struct_mutex); + return -ENOENT; + } + + /* Need to make sure the object gets inactive eventually. */ + ret = i915_gem_object_flush_active(obj); + if (ret) + goto out; + + if (obj->active) { + seqno = obj->last_read_seqno; + ring = obj->ring; + } + + if (seqno == 0) + goto out; + + /* Do this after OLR check to make sure we make forward progress polling + * on this IOCTL with a 0 timeout (like busy ioctl) + */ + if (!args->timeout_ns) { + ret = -ETIME; + goto out; + } + + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + + ret = __wait_seqno(ring, seqno, true, timeout); + if (timeout) { + WARN_ON(!timespec_valid(timeout)); + args->timeout_ns = timespec_to_ns(timeout); + } + return ret; + +out: + drm_gem_object_unreference(&obj->base); + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/** + * i915_gem_object_sync - sync an object to a ring. + * + * @obj: object which may be in use on another ring. + * @to: ring we wish to use the object on. May be NULL. + * + * This code is meant to abstract object synchronization with the GPU. + * Calling with NULL implies synchronizing the object with the CPU + * rather than a particular GPU ring. + * + * Returns 0 if successful, else propagates up the lower layer error. + */ +int +i915_gem_object_sync(struct drm_i915_gem_object *obj, + struct intel_ring_buffer *to) +{ + struct intel_ring_buffer *from = obj->ring; + u32 seqno; + int ret, idx; + + if (from == NULL || to == from) + return 0; + + if (to == NULL || !i915_semaphore_is_enabled(obj->base.dev)) + return i915_gem_object_wait_rendering(obj, false); + + idx = intel_ring_sync_index(from, to); + + seqno = obj->last_read_seqno; + if (seqno <= from->sync_seqno[idx]) + return 0; + + ret = i915_gem_check_olr(obj->ring, seqno); + if (ret) + return ret; + + ret = to->sync_to(to, from, seqno); + if (!ret) + from->sync_seqno[idx] = seqno; + + return ret; +} + +static void i915_gem_object_finish_gtt(struct drm_i915_gem_object *obj) +{ + u32 old_write_domain, old_read_domains; + + /* Act a barrier for all accesses through the GTT */ + mb(); + + /* Force a pagefault for domain tracking on next user access */ + i915_gem_release_mmap(obj); + + if ((obj->base.read_domains & I915_GEM_DOMAIN_GTT) == 0) + return; + + old_read_domains = obj->base.read_domains; + old_write_domain = obj->base.write_domain; + + obj->base.read_domains &= ~I915_GEM_DOMAIN_GTT; + obj->base.write_domain &= ~I915_GEM_DOMAIN_GTT; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); +} + +/** + * Unbinds an object from the GTT aperture. + */ +int +i915_gem_object_unbind(struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + int ret = 0; + + if (obj->gtt_space == NULL) + return 0; + + if (obj->pin_count) + return -EBUSY; + + BUG_ON(obj->pages == NULL); + + ret = i915_gem_object_finish_gpu(obj); + if (ret) + return ret; + /* Continue on if we fail due to EIO, the GPU is hung so we + * should be safe and we need to cleanup or else we might + * cause memory corruption through use-after-free. + */ + + i915_gem_object_finish_gtt(obj); + + /* release the fence reg _after_ flushing */ + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + + trace_i915_gem_object_unbind(obj); + + if (obj->has_global_gtt_mapping) + i915_gem_gtt_unbind_object(obj); + if (obj->has_aliasing_ppgtt_mapping) { + i915_ppgtt_unbind_object(dev_priv->mm.aliasing_ppgtt, obj); + obj->has_aliasing_ppgtt_mapping = 0; + } + i915_gem_gtt_finish_object(obj); + + list_del(&obj->mm_list); + list_move_tail(&obj->gtt_list, &dev_priv->mm.unbound_list); + /* Avoid an unnecessary call to unbind on rebind. */ + obj->map_and_fenceable = true; + + drm_mm_put_block_hsw(obj->gtt_space); + obj->gtt_space = NULL; + obj->gtt_offset = 0; + + return 0; +} + +static int i915_ring_idle(struct intel_ring_buffer *ring) +{ + if (list_empty(&ring->active_list)) + return 0; + + return i915_wait_seqno(ring, i915_gem_next_request_seqno(ring)); +} + +int i915_gpu_idle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int ret, i; + + /* Flush everything onto the inactive list. */ + for_each_ring(ring, dev_priv, i) { + ret = i915_switch_context(ring, NULL, DEFAULT_CONTEXT_ID); + if (ret) + return ret; + + ret = i915_ring_idle(ring); + if (ret) + return ret; + } + + return 0; +} + +static void sandybridge_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint64_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + + val = (uint64_t)((obj->gtt_offset + size - 4096) & + 0xfffff000) << 32; + val |= obj->gtt_offset & 0xfffff000; + val |= (uint64_t)((obj->stride / 128) - 1) << + SANDYBRIDGE_FENCE_PITCH_SHIFT; + + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I965_FENCE_TILING_Y_SHIFT; + val |= I965_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + reg * 8, val); + POSTING_READ(FENCE_REG_SANDYBRIDGE_0 + reg * 8); +} + +static void i965_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint64_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + + val = (uint64_t)((obj->gtt_offset + size - 4096) & + 0xfffff000) << 32; + val |= obj->gtt_offset & 0xfffff000; + val |= ((obj->stride / 128) - 1) << I965_FENCE_PITCH_SHIFT; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I965_FENCE_TILING_Y_SHIFT; + val |= I965_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE64(FENCE_REG_965_0 + reg * 8, val); + POSTING_READ(FENCE_REG_965_0 + reg * 8); +} + +static void i915_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 val; + + if (obj) { + u32 size = obj->gtt_space->size; + int pitch_val; + int tile_width; + + WARN((obj->gtt_offset & ~I915_FENCE_START_MASK) || + (size & -size) != size || + (obj->gtt_offset & (size - 1)), + "object 0x%08x [fenceable? %d] not 1M or pot-size (0x%08x) aligned\n", + obj->gtt_offset, obj->map_and_fenceable, size); + + if (obj->tiling_mode == I915_TILING_Y && HAS_128_BYTE_Y_TILING(dev)) + tile_width = 128; + else + tile_width = 512; + + /* Note: pitch better be a power of two tile widths */ + pitch_val = obj->stride / tile_width; + pitch_val = ffs(pitch_val) - 1; + + val = obj->gtt_offset; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I830_FENCE_TILING_Y_SHIFT; + val |= I915_FENCE_SIZE_BITS(size); + val |= pitch_val << I830_FENCE_PITCH_SHIFT; + val |= I830_FENCE_REG_VALID; + } else + val = 0; + + if (reg < 8) + reg = FENCE_REG_830_0 + reg * 4; + else + reg = FENCE_REG_945_8 + (reg - 8) * 4; + + I915_WRITE(reg, val); + POSTING_READ(reg); +} + +static void i830_write_fence_reg(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + uint32_t val; + + if (obj) { + u32 size = obj->gtt_space->size; + uint32_t pitch_val; + + WARN((obj->gtt_offset & ~I830_FENCE_START_MASK) || + (size & -size) != size || + (obj->gtt_offset & (size - 1)), + "object 0x%08x not 512K or pot-size 0x%08x aligned\n", + obj->gtt_offset, size); + + pitch_val = obj->stride / 128; + pitch_val = ffs(pitch_val) - 1; + + val = obj->gtt_offset; + if (obj->tiling_mode == I915_TILING_Y) + val |= 1 << I830_FENCE_TILING_Y_SHIFT; + val |= I830_FENCE_SIZE_BITS(size); + val |= pitch_val << I830_FENCE_PITCH_SHIFT; + val |= I830_FENCE_REG_VALID; + } else + val = 0; + + I915_WRITE(FENCE_REG_830_0 + reg * 4, val); + POSTING_READ(FENCE_REG_830_0 + reg * 4); +} + +static void i915_gem_write_fence(struct drm_device *dev, int reg, + struct drm_i915_gem_object *obj) +{ + switch (INTEL_INFO(dev)->gen) { + case 7: + case 6: sandybridge_write_fence_reg(dev, reg, obj); break; + case 5: + case 4: i965_write_fence_reg(dev, reg, obj); break; + case 3: i915_write_fence_reg(dev, reg, obj); break; + case 2: i830_write_fence_reg(dev, reg, obj); break; + default: break; + } +} + +static inline int fence_number(struct drm_i915_private *dev_priv, + struct drm_i915_fence_reg *fence) +{ + return fence - dev_priv->fence_regs; +} + +static void i915_gem_object_update_fence(struct drm_i915_gem_object *obj, + struct drm_i915_fence_reg *fence, + bool enable) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int reg = fence_number(dev_priv, fence); + + i915_gem_write_fence(obj->base.dev, reg, enable ? obj : NULL); + + if (enable) { + obj->fence_reg = reg; + fence->obj = obj; + list_move_tail(&fence->lru_list, &dev_priv->mm.fence_list); + } else { + obj->fence_reg = I915_FENCE_REG_NONE; + fence->obj = NULL; + list_del_init(&fence->lru_list); + } +} + +static int +i915_gem_object_flush_fence(struct drm_i915_gem_object *obj) +{ + if (obj->last_fenced_seqno) { + int ret = i915_wait_seqno(obj->ring, obj->last_fenced_seqno); + if (ret) + return ret; + + obj->last_fenced_seqno = 0; + } + + /* Ensure that all CPU reads are completed before installing a fence + * and all writes before removing the fence. + */ + if (obj->base.read_domains & I915_GEM_DOMAIN_GTT) + mb(); + + obj->fenced_gpu_access = false; + return 0; +} + +int +i915_gem_object_put_fence(struct drm_i915_gem_object *obj) +{ + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + int ret; + + ret = i915_gem_object_flush_fence(obj); + if (ret) + return ret; + + if (obj->fence_reg == I915_FENCE_REG_NONE) + return 0; + + i915_gem_object_update_fence(obj, + &dev_priv->fence_regs[obj->fence_reg], + false); + i915_gem_object_fence_lost(obj); + + return 0; +} + +static struct drm_i915_fence_reg * +i915_find_fence_reg(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_fence_reg *reg, *avail; + int i; + + /* First try to find a free reg */ + avail = NULL; + for (i = dev_priv->fence_reg_start; i < dev_priv->num_fence_regs; i++) { + reg = &dev_priv->fence_regs[i]; + if (!reg->obj) + return reg; + + if (!reg->pin_count) + avail = reg; + } + + if (avail == NULL) + return NULL; + + /* None available, try to steal one or wait for a user to finish */ + list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) { + if (reg->pin_count) + continue; + + return reg; + } + + return NULL; +} + +/** + * i915_gem_object_get_fence - set up fencing for an object + * @obj: object to map through a fence reg + * + * When mapping objects through the GTT, userspace wants to be able to write + * to them without having to worry about swizzling if the object is tiled. + * This function walks the fence regs looking for a free one for @obj, + * stealing one if it can't find any. + * + * It then sets up the reg based on the object's properties: address, pitch + * and tiling format. + * + * For an untiled surface, this removes any existing fence. + */ +int +i915_gem_object_get_fence(struct drm_i915_gem_object *obj) +{ + struct drm_device *dev = obj->base.dev; + struct drm_i915_private *dev_priv = dev->dev_private; + bool enable = obj->tiling_mode != I915_TILING_NONE; + struct drm_i915_fence_reg *reg; + int ret; + + /* Have we updated the tiling parameters upon the object and so + * will need to serialise the write to the associated fence register? + */ + if (obj->fence_dirty) { + ret = i915_gem_object_flush_fence(obj); + if (ret) + return ret; + } + + /* Just update our place in the LRU if our fence is getting reused. */ + if (obj->fence_reg != I915_FENCE_REG_NONE) { + reg = &dev_priv->fence_regs[obj->fence_reg]; + if (!obj->fence_dirty) { + list_move_tail(®->lru_list, + &dev_priv->mm.fence_list); + return 0; + } + } else if (enable) { + reg = i915_find_fence_reg(dev); + if (reg == NULL) + return -EDEADLK; + + if (reg->obj) { + struct drm_i915_gem_object *old = reg->obj; + + ret = i915_gem_object_flush_fence(old); + if (ret) + return ret; + + i915_gem_object_fence_lost(old); + } + } else + return 0; + + i915_gem_object_update_fence(obj, reg, enable); + obj->fence_dirty = false; + + return 0; +} + +static bool i915_gem_valid_gtt_space(struct drm_device *dev, + struct drm_mm_node_hsw *gtt_space, + unsigned long cache_level) +{ + struct drm_mm_node_hsw *other; + + /* On non-LLC machines we have to be careful when putting differing + * types of snoopable memory together to avoid the prefetcher + * crossing memory domains and dieing. + */ + if (HAS_LLC(dev)) + return true; + + if (gtt_space == NULL) + return true; + + if (list_empty(>t_space->node_list)) + return true; + + other = list_entry(gtt_space->node_list.prev, struct drm_mm_node_hsw, node_list); + if (other->allocated && !other->hole_follows && other->color != cache_level) + return false; + + other = list_entry(gtt_space->node_list.next, struct drm_mm_node_hsw, node_list); + if (other->allocated && !gtt_space->hole_follows && other->color != cache_level) + return false; + + return true; +} + +static void i915_gem_verify_gtt(struct drm_device *dev) +{ +#if WATCH_GTT + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_gem_object *obj; + int err = 0; + + list_for_each_entry(obj, &dev_priv->mm.gtt_list, gtt_list) { + if (obj->gtt_space == NULL) { + printk(KERN_ERR "object found on GTT list with no space reserved\n"); + err++; + continue; + } + + if (obj->cache_level != obj->gtt_space->color) { + printk(KERN_ERR "object reserved space [%08lx, %08lx] with wrong color, cache_level=%x, color=%lx\n", + obj->gtt_space->start, + obj->gtt_space->start + obj->gtt_space->size, + obj->cache_level, + obj->gtt_space->color); + err++; + continue; + } + + if (!i915_gem_valid_gtt_space(dev, + obj->gtt_space, + obj->cache_level)) { + printk(KERN_ERR "invalid GTT space found at [%08lx, %08lx] - color=%x\n", + obj->gtt_space->start, + obj->gtt_space->start + obj->gtt_space->size, + obj->cache_level); + err++; + continue; + } + } + + WARN_ON(err); +#endif +} + +/** + * Finds free space in the GTT aperture and binds the object there. + */ +static int +i915_gem_object_bind_to_gtt(struct drm_i915_gem_object *obj, + unsigned alignment, + bool map_and_fenceable, + bool nonblocking) +{ + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_mm_node_hsw *free_space; + u32 size, fence_size, fence_alignment, unfenced_alignment; + bool mappable, fenceable; + int ret; + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to bind a purgeable object\n"); + return -EINVAL; + } + + fence_size = i915_gem_get_gtt_size(dev, + obj->base.size, + obj->tiling_mode); + fence_alignment = i915_gem_get_gtt_alignment(dev, + obj->base.size, + obj->tiling_mode); + unfenced_alignment = + i915_gem_get_unfenced_gtt_alignment(dev, + obj->base.size, + obj->tiling_mode); + + if (alignment == 0) + alignment = map_and_fenceable ? fence_alignment : + unfenced_alignment; + if (map_and_fenceable && alignment & (fence_alignment - 1)) { + DRM_ERROR("Invalid object alignment requested %u\n", alignment); + return -EINVAL; + } + + size = map_and_fenceable ? fence_size : obj->base.size; + + /* If the object is bigger than the entire aperture, reject it early + * before evicting everything in a vain attempt to find space. + */ + if (obj->base.size > + (map_and_fenceable ? dev_priv->mm.gtt_mappable_end : dev_priv->mm.gtt_total)) { + DRM_ERROR("Attempting to bind an object larger than the aperture\n"); + return -E2BIG; + } + + ret = i915_gem_object_get_pages(obj); + if (ret) + return ret; + + i915_gem_object_pin_pages(obj); + + search_free: + if (map_and_fenceable) + free_space = drm_mm_search_free_in_range_color_hsw(&dev_priv->mm.gtt_space, + size, alignment, obj->cache_level, + 0, dev_priv->mm.gtt_mappable_end, + false); + else + free_space = drm_mm_search_free_color_hsw(&dev_priv->mm.gtt_space, + size, alignment, obj->cache_level, + false); + + if (free_space != NULL) { + if (map_and_fenceable) + free_space = + drm_mm_get_block_range_generic_hsw(free_space, + size, alignment, obj->cache_level, + 0, dev_priv->mm.gtt_mappable_end, + false); + else + free_space = + drm_mm_get_block_generic_hsw(free_space, + size, alignment, obj->cache_level, + false); + } + if (free_space == NULL) { + ret = i915_gem_evict_something(dev, size, alignment, + obj->cache_level, + map_and_fenceable, + nonblocking); + if (ret) { + i915_gem_object_unpin_pages(obj); + return ret; + } + + goto search_free; + } + if (WARN_ON(!i915_gem_valid_gtt_space(dev, + free_space, + obj->cache_level))) { + i915_gem_object_unpin_pages(obj); + drm_mm_put_block_hsw(free_space); + return -EINVAL; + } + + ret = i915_gem_gtt_prepare_object(obj); + if (ret) { + i915_gem_object_unpin_pages(obj); + drm_mm_put_block_hsw(free_space); + return ret; + } + + list_move_tail(&obj->gtt_list, &dev_priv->mm.bound_list); + list_add_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + obj->gtt_space = free_space; + obj->gtt_offset = free_space->start; + + fenceable = + free_space->size == fence_size && + (free_space->start & (fence_alignment - 1)) == 0; + + mappable = + obj->gtt_offset + obj->base.size <= dev_priv->mm.gtt_mappable_end; + + obj->map_and_fenceable = mappable && fenceable; + + i915_gem_object_unpin_pages(obj); + trace_i915_gem_object_bind(obj, map_and_fenceable); + i915_gem_verify_gtt(dev); + return 0; +} + +void +i915_gem_clflush_object(struct drm_i915_gem_object *obj) +{ + /* If we don't have a page list set up, then we're not pinned + * to GPU, and we can ignore the cache flush because it'll happen + * again at bind time. + */ + if (obj->pages == NULL) + return; + + /* If the GPU is snooping the contents of the CPU cache, + * we do not need to manually clear the CPU cache lines. However, + * the caches are only snooped when the render cache is + * flushed/invalidated. As we always have to emit invalidations + * and flushes when moving into and out of the RENDER domain, correct + * snooping behaviour occurs naturally as the result of our domain + * tracking. + */ + if (obj->cache_level != I915_CACHE_NONE) + return; + + trace_i915_gem_object_clflush(obj); + + drm_clflush_sg(obj->pages); +} + +/** Flushes the GTT write domain for the object if it's dirty. */ +static void +i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj) +{ + uint32_t old_write_domain; + + if (obj->base.write_domain != I915_GEM_DOMAIN_GTT) + return; + + /* No actual flushing is required for the GTT write domain. Writes + * to it immediately go to main memory as far as we know, so there's + * no chipset flush. It also doesn't land in render cache. + * + * However, we do have to enforce the order so that all writes through + * the GTT land before any writes to the device, such as updates to + * the GATT itself. + */ + wmb(); + + old_write_domain = obj->base.write_domain; + obj->base.write_domain = 0; + + trace_i915_gem_object_change_domain(obj, + obj->base.read_domains, + old_write_domain); +} + +/** Flushes the CPU write domain for the object if it's dirty. */ +static void +i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj) +{ + uint32_t old_write_domain; + + if (obj->base.write_domain != I915_GEM_DOMAIN_CPU) + return; + + i915_gem_clflush_object(obj); + i915_gem_chipset_flush(obj->base.dev); + old_write_domain = obj->base.write_domain; + obj->base.write_domain = 0; + + trace_i915_gem_object_change_domain(obj, + obj->base.read_domains, + old_write_domain); +} + +/** + * Moves a single object to the GTT read, and possibly write domain. + * + * This function returns when the move is complete, including waiting on + * flushes to occur. + */ +int +i915_gem_object_set_to_gtt_domain(struct drm_i915_gem_object *obj, bool write) +{ + drm_i915_private_t *dev_priv = obj->base.dev->dev_private; + uint32_t old_write_domain, old_read_domains; + int ret; + + /* Not valid to be called on unbound objects. */ + if (obj->gtt_space == NULL) + return -EINVAL; + + if (obj->base.write_domain == I915_GEM_DOMAIN_GTT) + return 0; + + ret = i915_gem_object_wait_rendering(obj, !write); + if (ret) + return ret; + + i915_gem_object_flush_cpu_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + BUG_ON((obj->base.write_domain & ~I915_GEM_DOMAIN_GTT) != 0); + obj->base.read_domains |= I915_GEM_DOMAIN_GTT; + if (write) { + obj->base.read_domains = I915_GEM_DOMAIN_GTT; + obj->base.write_domain = I915_GEM_DOMAIN_GTT; + obj->dirty = 1; + } + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + /* And bump the LRU for this access */ + if (i915_gem_object_is_inactive(obj)) + list_move_tail(&obj->mm_list, &dev_priv->mm.inactive_list); + + return 0; +} + +int i915_gem_object_set_cache_level(struct drm_i915_gem_object *obj, + enum i915_cache_level cache_level) +{ + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (obj->cache_level == cache_level) + return 0; + + if (obj->pin_count) { + DRM_DEBUG("can not change the cache level of pinned objects\n"); + return -EBUSY; + } + + if (!i915_gem_valid_gtt_space(dev, obj->gtt_space, cache_level)) { + ret = i915_gem_object_unbind(obj); + if (ret) + return ret; + } + + if (obj->gtt_space) { + ret = i915_gem_object_finish_gpu(obj); + if (ret) + return ret; + + i915_gem_object_finish_gtt(obj); + + /* Before SandyBridge, you could not use tiling or fence + * registers with snooped memory, so relinquish any fences + * currently pointing to our region in the aperture. + */ + if (INTEL_INFO(dev)->gen < 6) { + ret = i915_gem_object_put_fence(obj); + if (ret) + return ret; + } + + if (obj->has_global_gtt_mapping) + i915_gem_gtt_bind_object(obj, cache_level); + if (obj->has_aliasing_ppgtt_mapping) + i915_ppgtt_bind_object(dev_priv->mm.aliasing_ppgtt, + obj, cache_level); + + obj->gtt_space->color = cache_level; + } + + if (cache_level == I915_CACHE_NONE) { + u32 old_read_domains, old_write_domain; + + /* If we're coming from LLC cached, then we haven't + * actually been tracking whether the data is in the + * CPU cache or not, since we only allow one bit set + * in obj->write_domain and have been skipping the clflushes. + * Just set it to the CPU cache for now. + */ + WARN_ON(obj->base.write_domain & ~I915_GEM_DOMAIN_CPU); + WARN_ON(obj->base.read_domains & ~I915_GEM_DOMAIN_CPU); + + old_read_domains = obj->base.read_domains; + old_write_domain = obj->base.write_domain; + + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + } + + obj->cache_level = cache_level; + i915_gem_verify_gtt(dev); + return 0; +} + +int i915_gem_get_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_caching *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + args->caching = obj->cache_level != I915_CACHE_NONE; + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int i915_gem_set_caching_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_caching *args = data; + struct drm_i915_gem_object *obj; + enum i915_cache_level level; + int ret; + + switch (args->caching) { + case I915_CACHING_NONE: + level = I915_CACHE_NONE; + break; + case I915_CACHING_CACHED: + level = I915_CACHE_LLC; + break; + default: + return -EINVAL; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + ret = i915_gem_object_set_cache_level(obj, level); + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +/* + * Prepare buffer for display plane (scanout, cursors, etc). + * Can be called from an uninterruptible phase (modesetting) and allows + * any flushes to be pipelined (for pageflips). + */ +int +i915_gem_object_pin_to_display_plane(struct drm_i915_gem_object *obj, + u32 alignment, + struct intel_ring_buffer *pipelined) +{ + u32 old_read_domains, old_write_domain; + int ret; + + if (pipelined != obj->ring) { + ret = i915_gem_object_sync(obj, pipelined); + if (ret) + return ret; + } + + /* The display engine is not coherent with the LLC cache on gen6. As + * a result, we make sure that the pinning that is about to occur is + * done with uncached PTEs. This is lowest common denominator for all + * chipsets. + * + * However for gen6+, we could do better by using the GFDT bit instead + * of uncaching, which would allow us to flush all the LLC-cached data + * with that bit in the PTE to main memory with just one PIPE_CONTROL. + */ + ret = i915_gem_object_set_cache_level(obj, I915_CACHE_NONE); + if (ret) + return ret; + + /* As the user may map the buffer once pinned in the display plane + * (e.g. libkms for the bootup splash), we have to ensure that we + * always use map_and_fenceable for all scanout buffers. + */ + ret = i915_gem_object_pin(obj, alignment, true, false); + if (ret) + return ret; + + i915_gem_object_flush_cpu_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + obj->base.write_domain = 0; + obj->base.read_domains |= I915_GEM_DOMAIN_GTT; + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + return 0; +} + +int +i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj) +{ + int ret; + + if ((obj->base.read_domains & I915_GEM_GPU_DOMAINS) == 0) + return 0; + + ret = i915_gem_object_wait_rendering(obj, false); + if (ret) + return ret; + + /* Ensure that we invalidate the GPU's caches and TLBs. */ + obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS; + return 0; +} + +/** + * Moves a single object to the CPU read, and possibly write domain. + * + * This function returns when the move is complete, including waiting on + * flushes to occur. + */ +int +i915_gem_object_set_to_cpu_domain(struct drm_i915_gem_object *obj, bool write) +{ + uint32_t old_write_domain, old_read_domains; + int ret; + + if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) + return 0; + + ret = i915_gem_object_wait_rendering(obj, !write); + if (ret) + return ret; + + i915_gem_object_flush_gtt_write_domain(obj); + + old_write_domain = obj->base.write_domain; + old_read_domains = obj->base.read_domains; + + /* Flush the CPU cache if it's still invalid. */ + if ((obj->base.read_domains & I915_GEM_DOMAIN_CPU) == 0) { + i915_gem_clflush_object(obj); + + obj->base.read_domains |= I915_GEM_DOMAIN_CPU; + } + + /* It should now be out of any other write domains, and we can update + * the domain values for our changes. + */ + BUG_ON((obj->base.write_domain & ~I915_GEM_DOMAIN_CPU) != 0); + + /* If we're writing through the CPU, then the GPU read domains will + * need to be invalidated at next use. + */ + if (write) { + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + } + + trace_i915_gem_object_change_domain(obj, + old_read_domains, + old_write_domain); + + return 0; +} + +/* Throttle our rendering by waiting until the ring has completed our requests + * emitted over 20 msec ago. + * + * Note that if we were to use the current jiffies each time around the loop, + * we wouldn't escape the function with any frames outstanding if the time to + * render a frame was over 20ms. + * + * This should get us reasonable parallelism between CPU and GPU but also + * relatively low latency when blocking on a particular request to finish. + */ +static int +i915_gem_ring_throttle(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct drm_i915_file_private *file_priv = file->driver_priv; + unsigned long recent_enough = jiffies - msecs_to_jiffies(20); + struct drm_i915_gem_request *request; + struct intel_ring_buffer *ring = NULL; + u32 seqno = 0; + int ret; + + if (atomic_read(&dev_priv->mm.wedged)) + return -EIO; + + spin_lock(&file_priv->mm.lock); + list_for_each_entry(request, &file_priv->mm.request_list, client_list) { + if (time_after_eq(request->emitted_jiffies, recent_enough)) + break; + + ring = request->ring; + seqno = request->seqno; + } + spin_unlock(&file_priv->mm.lock); + + if (seqno == 0) + return 0; + + ret = __wait_seqno(ring, seqno, true, NULL); + if (ret == 0) + queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, 0); + + return ret; +} + +int +i915_gem_object_pin(struct drm_i915_gem_object *obj, + uint32_t alignment, + bool map_and_fenceable, + bool nonblocking) +{ + int ret; + + if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) + return -EBUSY; + + if (obj->gtt_space != NULL) { + if ((alignment && obj->gtt_offset & (alignment - 1)) || + (map_and_fenceable && !obj->map_and_fenceable)) { + WARN(obj->pin_count, + "bo is already pinned with incorrect alignment:" + " offset=%x, req.alignment=%x, req.map_and_fenceable=%d," + " obj->map_and_fenceable=%d\n", + obj->gtt_offset, alignment, + map_and_fenceable, + obj->map_and_fenceable); + ret = i915_gem_object_unbind(obj); + if (ret) + return ret; + } + } + + if (obj->gtt_space == NULL) { + struct drm_i915_private *dev_priv = obj->base.dev->dev_private; + + ret = i915_gem_object_bind_to_gtt(obj, alignment, + map_and_fenceable, + nonblocking); + if (ret) + return ret; + + if (!dev_priv->mm.aliasing_ppgtt) + i915_gem_gtt_bind_object(obj, obj->cache_level); + } + + if (!obj->has_global_gtt_mapping && map_and_fenceable) + i915_gem_gtt_bind_object(obj, obj->cache_level); + + obj->pin_count++; + obj->pin_mappable |= map_and_fenceable; + + return 0; +} + +void +i915_gem_object_unpin(struct drm_i915_gem_object *obj) +{ + BUG_ON(obj->pin_count == 0); + BUG_ON(obj->gtt_space == NULL); + + if (--obj->pin_count == 0) + obj->pin_mappable = false; +} + +int +i915_gem_pin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pin *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->madv != I915_MADV_WILLNEED) { + DRM_ERROR("Attempting to pin a purgeable buffer\n"); + ret = -EINVAL; + goto out; + } + + if (obj->pin_filp != NULL && obj->pin_filp != file) { + DRM_ERROR("Already pinned in i915_gem_pin_ioctl(): %d\n", + args->handle); + ret = -EINVAL; + goto out; + } + + obj->user_pin_count++; + obj->pin_filp = file; + if (obj->user_pin_count == 1) { + ret = i915_gem_object_pin(obj, args->alignment, true, false); + if (ret) + goto out; + } + + /* XXX - flush the CPU caches for pinned objects + * as the X server doesn't manage domains yet + */ + i915_gem_object_flush_cpu_write_domain(obj); + args->offset = obj->gtt_offset; +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_unpin_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_pin *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->pin_filp != file) { + DRM_ERROR("Not pinned by caller in i915_gem_pin_ioctl(): %d\n", + args->handle); + ret = -EINVAL; + goto out; + } + obj->user_pin_count--; + if (obj->user_pin_count == 0) { + obj->pin_filp = NULL; + i915_gem_object_unpin(obj); + } + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_busy_ioctl(struct drm_device *dev, void *data, + struct drm_file *file) +{ + struct drm_i915_gem_busy *args = data; + struct drm_i915_gem_object *obj; + int ret; + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + /* Count all active objects as busy, even if they are currently not used + * by the gpu. Users of this interface expect objects to eventually + * become non-busy without any further actions, therefore emit any + * necessary flushes here. + */ + ret = i915_gem_object_flush_active(obj); + + args->busy = obj->active; + if (obj->ring) { + BUILD_BUG_ON(I915_NUM_RINGS > 16); + args->busy |= intel_ring_flag(obj->ring) << 16; + } + + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +int +i915_gem_throttle_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + return i915_gem_ring_throttle(dev, file_priv); +} + +int +i915_gem_madvise_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + struct drm_i915_gem_madvise *args = data; + struct drm_i915_gem_object *obj; + int ret; + + switch (args->madv) { + case I915_MADV_DONTNEED: + case I915_MADV_WILLNEED: + break; + default: + return -EINVAL; + } + + ret = i915_mutex_lock_interruptible(dev); + if (ret) + return ret; + + obj = to_intel_bo(drm_gem_object_lookup(dev, file_priv, args->handle)); + if (&obj->base == NULL) { + ret = -ENOENT; + goto unlock; + } + + if (obj->pin_count) { + ret = -EINVAL; + goto out; + } + + if (obj->madv != __I915_MADV_PURGED) + obj->madv = args->madv; + + /* if the object is no longer attached, discard its backing storage */ + if (i915_gem_object_is_purgeable(obj) && obj->pages == NULL) + i915_gem_object_truncate(obj); + + args->retained = obj->madv != __I915_MADV_PURGED; + +out: + drm_gem_object_unreference(&obj->base); +unlock: + mutex_unlock(&dev->struct_mutex); + return ret; +} + +void i915_gem_object_init(struct drm_i915_gem_object *obj, + const struct drm_i915_gem_object_ops *ops) +{ + INIT_LIST_HEAD(&obj->mm_list); + INIT_LIST_HEAD(&obj->gtt_list); + INIT_LIST_HEAD(&obj->ring_list); + INIT_LIST_HEAD(&obj->exec_list); + + obj->ops = ops; + + obj->fence_reg = I915_FENCE_REG_NONE; + obj->madv = I915_MADV_WILLNEED; + /* Avoid an unnecessary call to unbind on the first bind. */ + obj->map_and_fenceable = true; + + i915_gem_info_add_obj(obj->base.dev->dev_private, obj->base.size); +} + +static const struct drm_i915_gem_object_ops i915_gem_object_ops = { + .get_pages = i915_gem_object_get_pages_gtt, + .put_pages = i915_gem_object_put_pages_gtt, +}; + +struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev, + size_t size) +{ + struct drm_i915_gem_object *obj; + struct address_space *mapping; + u32 mask; + + obj = kzalloc(sizeof(*obj), GFP_KERNEL); + if (obj == NULL) + return NULL; + + if (drm_gem_object_init(dev, &obj->base, size) != 0) { + kfree(obj); + return NULL; + } + + mask = GFP_HIGHUSER | __GFP_RECLAIMABLE; + if (IS_CRESTLINE(dev) || IS_BROADWATER(dev)) { + /* 965gm cannot relocate objects above 4GiB. */ + mask &= ~__GFP_HIGHMEM; + mask |= __GFP_DMA32; + } + + mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + mapping_set_gfp_mask(mapping, mask); + + i915_gem_object_init(obj, &i915_gem_object_ops); + + obj->base.write_domain = I915_GEM_DOMAIN_CPU; + obj->base.read_domains = I915_GEM_DOMAIN_CPU; + + if (HAS_LLC(dev)) { + /* On some devices, we can have the GPU use the LLC (the CPU + * cache) for about a 10% performance improvement + * compared to uncached. Graphics requests other than + * display scanout are coherent with the CPU in + * accessing this cache. This means in this mode we + * don't need to clflush on the CPU side, and on the + * GPU side we only need to flush internal caches to + * get data visible to the CPU. + * + * However, we maintain the display planes as UC, and so + * need to rebind when first used as such. + */ + obj->cache_level = I915_CACHE_LLC; + } else + obj->cache_level = I915_CACHE_NONE; + + return obj; +} + +int i915_gem_init_object(struct drm_gem_object *obj) +{ + BUG(); + + return 0; +} + +void i915_gem_free_object(struct drm_gem_object *gem_obj) +{ + struct drm_i915_gem_object *obj = to_intel_bo(gem_obj); + struct drm_device *dev = obj->base.dev; + drm_i915_private_t *dev_priv = dev->dev_private; + + trace_i915_gem_object_destroy(obj); + + if (obj->phys_obj) + i915_gem_detach_phys_object(dev, obj); + + obj->pin_count = 0; + if (WARN_ON(i915_gem_object_unbind(obj) == -ERESTARTSYS)) { + bool was_interruptible; + + was_interruptible = dev_priv->mm.interruptible; + dev_priv->mm.interruptible = false; + + WARN_ON(i915_gem_object_unbind(obj)); + + dev_priv->mm.interruptible = was_interruptible; + } + + obj->pages_pin_count = 0; + i915_gem_object_put_pages(obj); + i915_gem_object_free_mmap_offset(obj); + + BUG_ON(obj->pages); + + if (obj->base.import_attach) + drm_prime_gem_destroy(&obj->base, NULL); + + drm_gem_object_release(&obj->base); + i915_gem_info_remove_obj(dev_priv, obj->base.size); + + kfree(obj->bit_17); + kfree(obj); +} + +int +i915_gem_idle(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + mutex_lock(&dev->struct_mutex); + + if (dev_priv->mm.suspended) { + mutex_unlock(&dev->struct_mutex); + return 0; + } + + ret = i915_gpu_idle(dev); + if (ret) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + i915_gem_retire_requests(dev); + + /* Under UMS, be paranoid and evict. */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + i915_gem_evict_everything(dev); + + i915_gem_reset_fences(dev); + + /* Hack! Don't let anybody do execbuf while we don't control the chip. + * We need to replace this with a semaphore, or something. + * And not confound mm.suspended! + */ + dev_priv->mm.suspended = 1; + del_timer_sync(&dev_priv->hangcheck_timer); + + i915_kernel_lost_context(dev); + i915_gem_cleanup_ringbuffer(dev); + + mutex_unlock(&dev->struct_mutex); + + /* Cancel the retire work handler, which should be idle now. */ + cancel_delayed_work_sync(&dev_priv->mm.retire_work); + + return 0; +} + +void i915_gem_l3_remap(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + u32 misccpctl; + int i; + + if (!IS_IVYBRIDGE(dev)) + return; + + if (!dev_priv->l3_parity.remap_info) + return; + + misccpctl = I915_READ(GEN7_MISCCPCTL); + I915_WRITE(GEN7_MISCCPCTL, misccpctl & ~GEN7_DOP_CLOCK_GATE_ENABLE); + POSTING_READ(GEN7_MISCCPCTL); + + for (i = 0; i < GEN7_L3LOG_SIZE; i += 4) { + u32 remap = I915_READ(GEN7_L3LOG_BASE + i); + if (remap && remap != dev_priv->l3_parity.remap_info[i/4]) + DRM_DEBUG("0x%x was already programmed to %x\n", + GEN7_L3LOG_BASE + i, remap); + if (remap && !dev_priv->l3_parity.remap_info[i/4]) + DRM_DEBUG_DRIVER("Clearing remapped register\n"); + I915_WRITE(GEN7_L3LOG_BASE + i, dev_priv->l3_parity.remap_info[i/4]); + } + + /* Make sure all the writes land before disabling dop clock gating */ + POSTING_READ(GEN7_L3LOG_BASE); + + I915_WRITE(GEN7_MISCCPCTL, misccpctl); +} + +void i915_gem_init_swizzling(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + + if (INTEL_INFO(dev)->gen < 5 || + dev_priv->mm.bit_6_swizzle_x == I915_BIT_6_SWIZZLE_NONE) + return; + + I915_WRITE(DISP_ARB_CTL, I915_READ(DISP_ARB_CTL) | + DISP_TILE_SURFACE_SWIZZLING); + + if (IS_GEN5(dev)) + return; + + I915_WRITE(TILECTL, I915_READ(TILECTL) | TILECTL_SWZCTL); + if (IS_GEN6(dev)) + I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_SNB)); + else + I915_WRITE(ARB_MODE, _MASKED_BIT_ENABLE(ARB_MODE_SWIZZLE_IVB)); +} + +static bool +intel_enable_blt(struct drm_device *dev) +{ + if (!HAS_BLT(dev)) + return false; + + /* The blitter was dysfunctional on early prototypes */ + if (IS_GEN6(dev) && dev->pdev->revision < 8) { + DRM_INFO("BLT not supported on this pre-production hardware;" + " graphics performance will be degraded.\n"); + return false; + } + + return true; +} + +int +i915_gem_init_hw(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (INTEL_INFO(dev)->gen < 6 && !intel_enable_gtt()) + return -EIO; + + if (IS_HASWELL(dev) && (I915_READ(0x120010) == 1)) + I915_WRITE(0x9008, I915_READ(0x9008) | 0xf0000); + + i915_gem_l3_remap(dev); + + i915_gem_init_swizzling(dev); + + ret = intel_init_render_ring_buffer(dev); + if (ret) + return ret; + + if (HAS_BSD(dev)) { + ret = intel_init_bsd_ring_buffer(dev); + if (ret) + goto cleanup_render_ring; + } + + if (intel_enable_blt(dev)) { + ret = intel_init_blt_ring_buffer(dev); + if (ret) + goto cleanup_bsd_ring; + } + + dev_priv->next_seqno = 1; + + /* + * XXX: There was some w/a described somewhere suggesting loading + * contexts before PPGTT. + */ + i915_gem_context_init(dev); + i915_gem_init_ppgtt(dev); + + return 0; + +cleanup_bsd_ring: + intel_cleanup_ring_buffer(&dev_priv->ring[VCS]); +cleanup_render_ring: + intel_cleanup_ring_buffer(&dev_priv->ring[RCS]); + return ret; +} + +static bool +intel_enable_ppgtt(struct drm_device *dev) +{ + if (i915_enable_ppgtt >= 0) + return i915_enable_ppgtt; + +#ifdef CONFIG_INTEL_IOMMU + /* Disable ppgtt on SNB if VT-d is on. */ + if (INTEL_INFO(dev)->gen == 6 && intel_iommu_gfx_mapped) + return false; +#endif + + return true; +} + +int i915_gem_init(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + unsigned long gtt_size, mappable_size; + int ret; + + gtt_size = dev_priv->mm.gtt->gtt_total_entries << PAGE_SHIFT; + mappable_size = dev_priv->mm.gtt->gtt_mappable_entries << PAGE_SHIFT; + + mutex_lock(&dev->struct_mutex); + if (intel_enable_ppgtt(dev) && HAS_ALIASING_PPGTT(dev)) { + /* PPGTT pdes are stolen from global gtt ptes, so shrink the + * aperture accordingly when using aliasing ppgtt. */ + gtt_size -= I915_PPGTT_PD_ENTRIES*PAGE_SIZE; + + i915_gem_init_global_gtt(dev, 0, mappable_size, gtt_size); + + ret = i915_gem_init_aliasing_ppgtt(dev); + if (ret) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + } else { + /* Let GEM Manage all of the aperture. + * + * However, leave one page at the end still bound to the scratch + * page. There are a number of places where the hardware + * apparently prefetches past the end of the object, and we've + * seen multiple hangs with the GPU head pointer stuck in a + * batchbuffer bound at the last page of the aperture. One page + * should be enough to keep any prefetching inside of the + * aperture. + */ + i915_gem_init_global_gtt(dev, 0, mappable_size, + gtt_size); + } + + ret = i915_gem_init_hw(dev); + mutex_unlock(&dev->struct_mutex); + if (ret) { + i915_gem_cleanup_aliasing_ppgtt(dev); + return ret; + } + + /* Allow hardware batchbuffers unless told otherwise, but not for KMS. */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + dev_priv->dri1.allow_batchbuffer = 1; + return 0; +} + +void +i915_gem_cleanup_ringbuffer(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct intel_ring_buffer *ring; + int i; + + for_each_ring(ring, dev_priv, i) + intel_cleanup_ring_buffer(ring); +} + +int +i915_gem_entervt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return 0; + + if (atomic_read(&dev_priv->mm.wedged)) { + DRM_ERROR("Reenabling wedged hardware, good luck\n"); + atomic_set(&dev_priv->mm.wedged, 0); + } + + mutex_lock(&dev->struct_mutex); + dev_priv->mm.suspended = 0; + + ret = i915_gem_init_hw(dev); + if (ret != 0) { + mutex_unlock(&dev->struct_mutex); + return ret; + } + + BUG_ON(!list_empty(&dev_priv->mm.active_list)); + mutex_unlock(&dev->struct_mutex); + + ret = drm_irq_install(dev); + if (ret) + goto cleanup_ringbuffer; + + return 0; + +cleanup_ringbuffer: + mutex_lock(&dev->struct_mutex); + i915_gem_cleanup_ringbuffer(dev); + dev_priv->mm.suspended = 1; + mutex_unlock(&dev->struct_mutex); + + return ret; +} + +int +i915_gem_leavevt_ioctl(struct drm_device *dev, void *data, + struct drm_file *file_priv) +{ + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return 0; + + drm_irq_uninstall(dev); + return i915_gem_idle(dev); +} + +void +i915_gem_lastclose(struct drm_device *dev) +{ + int ret; + + if (drm_core_check_feature(dev, DRIVER_MODESET)) + return; + + ret = i915_gem_idle(dev); + if (ret) + DRM_ERROR("failed to idle hardware: %d\n", ret); +} + +static void +init_ring_lists(struct intel_ring_buffer *ring) +{ + INIT_LIST_HEAD(&ring->active_list); + INIT_LIST_HEAD(&ring->request_list); +} + +void +i915_gem_load(struct drm_device *dev) +{ + int i; + drm_i915_private_t *dev_priv = dev->dev_private; + + INIT_LIST_HEAD(&dev_priv->mm.active_list); + INIT_LIST_HEAD(&dev_priv->mm.inactive_list); + INIT_LIST_HEAD(&dev_priv->mm.unbound_list); + INIT_LIST_HEAD(&dev_priv->mm.bound_list); + INIT_LIST_HEAD(&dev_priv->mm.fence_list); + for (i = 0; i < I915_NUM_RINGS; i++) + init_ring_lists(&dev_priv->ring[i]); + for (i = 0; i < I915_MAX_NUM_FENCES; i++) + INIT_LIST_HEAD(&dev_priv->fence_regs[i].lru_list); + INIT_DELAYED_WORK(&dev_priv->mm.retire_work, + i915_gem_retire_work_handler); + init_completion(&dev_priv->error_completion); + + /* On GEN3 we really need to make sure the ARB C3 LP bit is set */ + if (IS_GEN3(dev)) { + I915_WRITE(MI_ARB_STATE, + _MASKED_BIT_ENABLE(MI_ARB_C3_LP_WRITE_ENABLE)); + } + + dev_priv->relative_constants_mode = I915_EXEC_CONSTANTS_REL_GENERAL; + + /* Old X drivers will take 0-2 for front, back, depth buffers */ + if (!drm_core_check_feature(dev, DRIVER_MODESET)) + dev_priv->fence_reg_start = 3; + + if (INTEL_INFO(dev)->gen >= 4 || IS_I945G(dev) || IS_I945GM(dev) || IS_G33(dev)) + dev_priv->num_fence_regs = 16; + else + dev_priv->num_fence_regs = 8; + + /* Initialize fence registers to zero */ + i915_gem_reset_fences(dev); + + i915_gem_detect_bit_6_swizzle(dev); + init_waitqueue_head(&dev_priv->pending_flip_queue); + + dev_priv->mm.interruptible = true; + + dev_priv->mm.inactive_shrinker.shrink = i915_gem_inactive_shrink; + dev_priv->mm.inactive_shrinker.seeks = DEFAULT_SEEKS; + register_shrinker(&dev_priv->mm.inactive_shrinker); +} + +/* + * Create a physically contiguous memory object for this object + * e.g. for cursor + overlay regs + */ +static int i915_gem_init_phys_object(struct drm_device *dev, + int id, int size, int align) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_phys_object *phys_obj; + int ret; + + if (dev_priv->mm.phys_objs[id - 1] || !size) + return 0; + + phys_obj = kzalloc(sizeof(struct drm_i915_gem_phys_object), GFP_KERNEL); + if (!phys_obj) + return -ENOMEM; + + phys_obj->id = id; + + phys_obj->handle = drm_pci_alloc(dev, size, align); + if (!phys_obj->handle) { + ret = -ENOMEM; + goto kfree_obj; + } +#ifdef CONFIG_X86 + set_memory_wc((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); +#endif + + dev_priv->mm.phys_objs[id - 1] = phys_obj; + + return 0; +kfree_obj: + kfree(phys_obj); + return ret; +} + +static void i915_gem_free_phys_object(struct drm_device *dev, int id) +{ + drm_i915_private_t *dev_priv = dev->dev_private; + struct drm_i915_gem_phys_object *phys_obj; + + if (!dev_priv->mm.phys_objs[id - 1]) + return; + + phys_obj = dev_priv->mm.phys_objs[id - 1]; + if (phys_obj->cur_obj) { + i915_gem_detach_phys_object(dev, phys_obj->cur_obj); + } + +#ifdef CONFIG_X86 + set_memory_wb((unsigned long)phys_obj->handle->vaddr, phys_obj->handle->size / PAGE_SIZE); +#endif + drm_pci_free(dev, phys_obj->handle); + kfree(phys_obj); + dev_priv->mm.phys_objs[id - 1] = NULL; +} + +void i915_gem_free_all_phys_object(struct drm_device *dev) +{ + int i; + + for (i = I915_GEM_PHYS_CURSOR_0; i <= I915_MAX_PHYS_OBJECT; i++) + i915_gem_free_phys_object(dev, i); +} + +void i915_gem_detach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj) +{ + struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + char *vaddr; + int i; + int page_count; + + if (!obj->phys_obj) + return; + vaddr = obj->phys_obj->handle->vaddr; + + page_count = obj->base.size / PAGE_SIZE; + for (i = 0; i < page_count; i++) { + struct page *page = shmem_read_mapping_page(mapping, i); + if (!IS_ERR(page)) { + char *dst = kmap_atomic(page); + memcpy(dst, vaddr + i*PAGE_SIZE, PAGE_SIZE); + kunmap_atomic(dst); + + drm_clflush_pages(&page, 1); + + set_page_dirty(page); + mark_page_accessed(page); + page_cache_release(page); + } + } + i915_gem_chipset_flush(dev); + + obj->phys_obj->cur_obj = NULL; + obj->phys_obj = NULL; +} + +int +i915_gem_attach_phys_object(struct drm_device *dev, + struct drm_i915_gem_object *obj, + int id, + int align) +{ + struct address_space *mapping = obj->base.filp->f_path.dentry->d_inode->i_mapping; + drm_i915_private_t *dev_priv = dev->dev_private; + int ret = 0; + int page_count; + int i; + + if (id > I915_MAX_PHYS_OBJECT) + return -EINVAL; + + if (obj->phys_obj) { + if (obj->phys_obj->id == id) + return 0; + i915_gem_detach_phys_object(dev, obj); + } + + /* create a new object */ + if (!dev_priv->mm.phys_objs[id - 1]) { + ret = i915_gem_init_phys_object(dev, id, + obj->base.size, align); + if (ret) { + DRM_ERROR("failed to init phys object %d size: %zu\n", + id, obj->base.size); + return ret; + } + } + + /* bind to the object */ + obj->phys_obj = dev_priv->mm.phys_objs[id - 1]; + obj->phys_obj->cur_obj = obj; + + page_count = obj->base.size / PAGE_SIZE; + + for (i = 0; i < page_count; i++) { + struct page *page; + char *dst, *src; + + page = shmem_read_mapping_page(mapping, i); + if (IS_ERR(page)) + return PTR_ERR(page); + + src = kmap_atomic(page); + dst = obj->phys_obj->handle->vaddr + (i * PAGE_SIZE); + memcpy(dst, src, PAGE_SIZE); + kunmap_atomic(src); + + mark_page_accessed(page); + page_cache_release(page); + } + + return 0; +} + +static int +i915_gem_phys_pwrite(struct drm_device *dev, + struct drm_i915_gem_object *obj, + struct drm_i915_gem_pwrite *args, + struct drm_file *file_priv) +{ + void *vaddr = obj->phys_obj->handle->vaddr + args->offset; + char __user *user_data = (char __user *) (uintptr_t) args->data_ptr; + + if (__copy_from_user_inatomic_nocache(vaddr, user_data, args->size)) { + unsigned long unwritten; + + /* The physical object once assigned is fixed for the lifetime + * of the obj, so we can safely drop the lock and continue + * to access vaddr. + */ + mutex_unlock(&dev->struct_mutex); + unwritten = copy_from_user(vaddr, user_data, args->size); + mutex_lock(&dev->struct_mutex); + if (unwritten) + return -EFAULT; + } + + i915_gem_chipset_flush(dev); + return 0; +} + +void i915_gem_release(struct drm_device *dev, struct drm_file *file) +{ + struct drm_i915_file_private *file_priv = file->driver_priv; + + /* Clean up our request list when the client is going away, so that + * later retire_requests won't dereference our soon-to-be-gone + * file_priv. + */ + spin_lock(&file_priv->mm.lock); + while (!list_empty(&file_priv->mm.request_list)) { + struct drm_i915_gem_request *request; + + request = list_first_entry(&file_priv->mm.request_list, + struct drm_i915_gem_request, + client_list); + list_del(&request->client_list); + request->file_priv = NULL; + } + spin_unlock(&file_priv->mm.lock); +} + +static bool mutex_is_locked_by(struct mutex *mutex, struct task_struct *task) +{ + if (!mutex_is_locked(mutex)) + return false; + +#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 */ + return false; +#endif +} + +static int +i915_gem_inactive_shrink(struct shrinker *shrinker, struct shrink_control *sc) +{ + struct drm_i915_private *dev_priv = + container_of(shrinker, + struct drm_i915_private, + mm.inactive_shrinker); + struct drm_device *dev = dev_priv->dev; + struct drm_i915_gem_object *obj; + int nr_to_scan = sc->nr_to_scan; + bool unlock = true; + int cnt; + + if (!mutex_trylock(&dev->struct_mutex)) { + if (!mutex_is_locked_by(&dev->struct_mutex, current)) + return 0; + + unlock = false; + } + + if (nr_to_scan) { + nr_to_scan -= i915_gem_purge(dev_priv, nr_to_scan); + if (nr_to_scan > 0) + i915_gem_shrink_all(dev_priv); + } + + cnt = 0; + list_for_each_entry(obj, &dev_priv->mm.unbound_list, gtt_list) + if (obj->pages_pin_count == 0) + cnt += obj->base.size >> PAGE_SHIFT; + list_for_each_entry(obj, &dev_priv->mm.bound_list, gtt_list) + if (obj->pin_count == 0 && obj->pages_pin_count == 0) + cnt += obj->base.size >> PAGE_SHIFT; + + if (unlock) + mutex_unlock(&dev->struct_mutex); + return cnt; +} --- linux-3.5.0.orig/ubuntu/i915/intel_bios.c +++ linux-3.5.0/ubuntu/i915/intel_bios.c @@ -0,0 +1,767 @@ +/* + * Copyright © 2006 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ +#include +#include +#include "drmP.h" +#include "drm.h" +#include "i915_drm.h" +#include "i915_drv.h" +#include "intel_bios.h" + +#define SLAVE_ADDR1 0x70 +#define SLAVE_ADDR2 0x72 + +static int panel_type; + +static void * +find_section(struct bdb_header *bdb, int section_id) +{ + u8 *base = (u8 *)bdb; + int index = 0; + u16 total, current_size; + u8 current_id; + + /* skip to first section */ + index += bdb->header_size; + total = bdb->bdb_size; + + /* walk the sections looking for section_id */ + while (index < total) { + current_id = *(base + index); + index++; + current_size = *((u16 *)(base + index)); + index += 2; + if (current_id == section_id) + return base + index; + index += current_size; + } + + return NULL; +} + +static u16 +get_blocksize(void *p) +{ + u16 *block_ptr, block_size; + + block_ptr = (u16 *)((char *)p - 2); + block_size = *block_ptr; + return block_size; +} + +static void +fill_detail_timing_data(struct drm_display_mode *panel_fixed_mode, + const struct lvds_dvo_timing *dvo_timing) +{ + panel_fixed_mode->hdisplay = (dvo_timing->hactive_hi << 8) | + dvo_timing->hactive_lo; + panel_fixed_mode->hsync_start = panel_fixed_mode->hdisplay + + ((dvo_timing->hsync_off_hi << 8) | dvo_timing->hsync_off_lo); + panel_fixed_mode->hsync_end = panel_fixed_mode->hsync_start + + dvo_timing->hsync_pulse_width; + panel_fixed_mode->htotal = panel_fixed_mode->hdisplay + + ((dvo_timing->hblank_hi << 8) | dvo_timing->hblank_lo); + + panel_fixed_mode->vdisplay = (dvo_timing->vactive_hi << 8) | + dvo_timing->vactive_lo; + panel_fixed_mode->vsync_start = panel_fixed_mode->vdisplay + + dvo_timing->vsync_off; + panel_fixed_mode->vsync_end = panel_fixed_mode->vsync_start + + dvo_timing->vsync_pulse_width; + panel_fixed_mode->vtotal = panel_fixed_mode->vdisplay + + ((dvo_timing->vblank_hi << 8) | dvo_timing->vblank_lo); + panel_fixed_mode->clock = dvo_timing->clock * 10; + panel_fixed_mode->type = DRM_MODE_TYPE_PREFERRED; + + if (dvo_timing->hsync_positive) + panel_fixed_mode->flags |= DRM_MODE_FLAG_PHSYNC; + else + panel_fixed_mode->flags |= DRM_MODE_FLAG_NHSYNC; + + if (dvo_timing->vsync_positive) + panel_fixed_mode->flags |= DRM_MODE_FLAG_PVSYNC; + else + panel_fixed_mode->flags |= DRM_MODE_FLAG_NVSYNC; + + /* Some VBTs have bogus h/vtotal values */ + if (panel_fixed_mode->hsync_end > panel_fixed_mode->htotal) + panel_fixed_mode->htotal = panel_fixed_mode->hsync_end + 1; + if (panel_fixed_mode->vsync_end > panel_fixed_mode->vtotal) + panel_fixed_mode->vtotal = panel_fixed_mode->vsync_end + 1; + + drm_mode_set_name(panel_fixed_mode); +} + +static bool +lvds_dvo_timing_equal_size(const struct lvds_dvo_timing *a, + const struct lvds_dvo_timing *b) +{ + if (a->hactive_hi != b->hactive_hi || + a->hactive_lo != b->hactive_lo) + return false; + + if (a->hsync_off_hi != b->hsync_off_hi || + a->hsync_off_lo != b->hsync_off_lo) + return false; + + if (a->hsync_pulse_width != b->hsync_pulse_width) + return false; + + if (a->hblank_hi != b->hblank_hi || + a->hblank_lo != b->hblank_lo) + return false; + + if (a->vactive_hi != b->vactive_hi || + a->vactive_lo != b->vactive_lo) + return false; + + if (a->vsync_off != b->vsync_off) + return false; + + if (a->vsync_pulse_width != b->vsync_pulse_width) + return false; + + if (a->vblank_hi != b->vblank_hi || + a->vblank_lo != b->vblank_lo) + return false; + + return true; +} + +static const struct lvds_dvo_timing * +get_lvds_dvo_timing(const struct bdb_lvds_lfp_data *lvds_lfp_data, + const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs, + int index) +{ + /* + * the size of fp_timing varies on the different platform. + * So calculate the DVO timing relative offset in LVDS data + * entry to get the DVO timing entry + */ + + int lfp_data_size = + lvds_lfp_data_ptrs->ptr[1].dvo_timing_offset - + lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset; + int dvo_timing_offset = + lvds_lfp_data_ptrs->ptr[0].dvo_timing_offset - + lvds_lfp_data_ptrs->ptr[0].fp_timing_offset; + char *entry = (char *)lvds_lfp_data->data + lfp_data_size * index; + + return (struct lvds_dvo_timing *)(entry + dvo_timing_offset); +} + +/* get lvds_fp_timing entry + * this function may return NULL if the corresponding entry is invalid + */ +static const struct lvds_fp_timing * +get_lvds_fp_timing(const struct bdb_header *bdb, + const struct bdb_lvds_lfp_data *data, + const struct bdb_lvds_lfp_data_ptrs *ptrs, + int index) +{ + size_t data_ofs = (const u8 *)data - (const u8 *)bdb; + u16 data_size = ((const u16 *)data)[-1]; /* stored in header */ + size_t ofs; + + if (index >= ARRAY_SIZE(ptrs->ptr)) + return NULL; + ofs = ptrs->ptr[index].fp_timing_offset; + if (ofs < data_ofs || + ofs + sizeof(struct lvds_fp_timing) > data_ofs + data_size) + return NULL; + return (const struct lvds_fp_timing *)((const u8 *)bdb + ofs); +} + +/* Try to find integrated panel data */ +static void +parse_lfp_panel_data(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + const struct bdb_lvds_options *lvds_options; + const struct bdb_lvds_lfp_data *lvds_lfp_data; + const struct bdb_lvds_lfp_data_ptrs *lvds_lfp_data_ptrs; + const struct lvds_dvo_timing *panel_dvo_timing; + const struct lvds_fp_timing *fp_timing; + struct drm_display_mode *panel_fixed_mode; + int i, downclock; + + lvds_options = find_section(bdb, BDB_LVDS_OPTIONS); + if (!lvds_options) + return; + + dev_priv->lvds_dither = lvds_options->pixel_dither; + if (lvds_options->panel_type == 0xff) + return; + + panel_type = lvds_options->panel_type; + + lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA); + if (!lvds_lfp_data) + return; + + lvds_lfp_data_ptrs = find_section(bdb, BDB_LVDS_LFP_DATA_PTRS); + if (!lvds_lfp_data_ptrs) + return; + + dev_priv->lvds_vbt = 1; + + panel_dvo_timing = get_lvds_dvo_timing(lvds_lfp_data, + lvds_lfp_data_ptrs, + lvds_options->panel_type); + + panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL); + if (!panel_fixed_mode) + return; + + fill_detail_timing_data(panel_fixed_mode, panel_dvo_timing); + + dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode; + + DRM_DEBUG_KMS("Found panel mode in BIOS VBT tables:\n"); + drm_mode_debug_printmodeline(panel_fixed_mode); + + /* + * Iterate over the LVDS panel timing info to find the lowest clock + * for the native resolution. + */ + downclock = panel_dvo_timing->clock; + for (i = 0; i < 16; i++) { + const struct lvds_dvo_timing *dvo_timing; + + dvo_timing = get_lvds_dvo_timing(lvds_lfp_data, + lvds_lfp_data_ptrs, + i); + if (lvds_dvo_timing_equal_size(dvo_timing, panel_dvo_timing) && + dvo_timing->clock < downclock) + downclock = dvo_timing->clock; + } + + if (downclock < panel_dvo_timing->clock && i915_lvds_downclock) { + dev_priv->lvds_downclock_avail = 1; + dev_priv->lvds_downclock = downclock * 10; + DRM_DEBUG_KMS("LVDS downclock is found in VBT. " + "Normal Clock %dKHz, downclock %dKHz\n", + panel_fixed_mode->clock, 10*downclock); + } + + fp_timing = get_lvds_fp_timing(bdb, lvds_lfp_data, + lvds_lfp_data_ptrs, + lvds_options->panel_type); + if (fp_timing) { + /* check the resolution, just to be sure */ + if (fp_timing->x_res == panel_fixed_mode->hdisplay && + fp_timing->y_res == panel_fixed_mode->vdisplay) { + dev_priv->bios_lvds_val = fp_timing->lvds_reg_val; + DRM_DEBUG_KMS("VBT initial LVDS value %x\n", + dev_priv->bios_lvds_val); + } + } +} + +/* Try to find sdvo panel data */ +static void +parse_sdvo_panel_data(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct lvds_dvo_timing *dvo_timing; + struct drm_display_mode *panel_fixed_mode; + int index; + + index = i915_vbt_sdvo_panel_type; + if (index == -2) { + DRM_DEBUG_KMS("Ignore SDVO panel mode from BIOS VBT tables.\n"); + return; + } + + if (index == -1) { + struct bdb_sdvo_lvds_options *sdvo_lvds_options; + + sdvo_lvds_options = find_section(bdb, BDB_SDVO_LVDS_OPTIONS); + if (!sdvo_lvds_options) + return; + + index = sdvo_lvds_options->panel_type; + } + + dvo_timing = find_section(bdb, BDB_SDVO_PANEL_DTDS); + if (!dvo_timing) + return; + + panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL); + if (!panel_fixed_mode) + return; + + fill_detail_timing_data(panel_fixed_mode, dvo_timing + index); + + dev_priv->sdvo_lvds_vbt_mode = panel_fixed_mode; + + DRM_DEBUG_KMS("Found SDVO panel mode in BIOS VBT tables:\n"); + drm_mode_debug_printmodeline(panel_fixed_mode); +} + +static int intel_bios_ssc_frequency(struct drm_device *dev, + bool alternate) +{ + switch (INTEL_INFO(dev)->gen) { + case 2: + return alternate ? 66 : 48; + case 3: + case 4: + return alternate ? 100 : 96; + default: + return alternate ? 100 : 120; + } +} + +static void +parse_general_features(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct drm_device *dev = dev_priv->dev; + struct bdb_general_features *general; + + general = find_section(bdb, BDB_GENERAL_FEATURES); + if (general) { + dev_priv->int_tv_support = general->int_tv_support; + dev_priv->int_crt_support = general->int_crt_support; + dev_priv->lvds_use_ssc = general->enable_ssc; + dev_priv->lvds_ssc_freq = + intel_bios_ssc_frequency(dev, general->ssc_freq); + dev_priv->display_clock_mode = general->display_clock_mode; + DRM_DEBUG_KMS("BDB_GENERAL_FEATURES int_tv_support %d int_crt_support %d lvds_use_ssc %d lvds_ssc_freq %d display_clock_mode %d\n", + dev_priv->int_tv_support, + dev_priv->int_crt_support, + dev_priv->lvds_use_ssc, + dev_priv->lvds_ssc_freq, + dev_priv->display_clock_mode); + } +} + +static void +parse_general_definitions(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct bdb_general_definitions *general; + + general = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (general) { + u16 block_size = get_blocksize(general); + if (block_size >= sizeof(*general)) { + int bus_pin = general->crt_ddc_gmbus_pin; + DRM_DEBUG_KMS("crt_ddc_bus_pin: %d\n", bus_pin); + if (intel_gmbus_is_port_valid(bus_pin)) + dev_priv->crt_ddc_pin = bus_pin; + } else { + DRM_DEBUG_KMS("BDB_GD too small (%d). Invalid.\n", + block_size); + } + } +} + +static void +parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct sdvo_device_mapping *p_mapping; + struct bdb_general_definitions *p_defs; + struct child_device_config *p_child; + int i, child_device_num, count; + u16 block_size; + + p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (!p_defs) { + DRM_DEBUG_KMS("No general definition block is found, unable to construct sdvo mapping.\n"); + return; + } + /* judge whether the size of child device meets the requirements. + * If the child device size obtained from general definition block + * is different with sizeof(struct child_device_config), skip the + * parsing of sdvo device info + */ + if (p_defs->child_dev_size != sizeof(*p_child)) { + /* different child dev size . Ignore it */ + DRM_DEBUG_KMS("different child size is found. Invalid.\n"); + return; + } + /* get the block size of general definitions */ + block_size = get_blocksize(p_defs); + /* get the number of child device */ + child_device_num = (block_size - sizeof(*p_defs)) / + sizeof(*p_child); + count = 0; + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + if (p_child->slave_addr != SLAVE_ADDR1 && + p_child->slave_addr != SLAVE_ADDR2) { + /* + * If the slave address is neither 0x70 nor 0x72, + * it is not a SDVO device. Skip it. + */ + continue; + } + if (p_child->dvo_port != DEVICE_PORT_DVOB && + p_child->dvo_port != DEVICE_PORT_DVOC) { + /* skip the incorrect SDVO port */ + DRM_DEBUG_KMS("Incorrect SDVO port. Skip it\n"); + continue; + } + DRM_DEBUG_KMS("the SDVO device with slave addr %2x is found on" + " %s port\n", + p_child->slave_addr, + (p_child->dvo_port == DEVICE_PORT_DVOB) ? + "SDVOB" : "SDVOC"); + p_mapping = &(dev_priv->sdvo_mappings[p_child->dvo_port - 1]); + if (!p_mapping->initialized) { + p_mapping->dvo_port = p_child->dvo_port; + p_mapping->slave_addr = p_child->slave_addr; + p_mapping->dvo_wiring = p_child->dvo_wiring; + p_mapping->ddc_pin = p_child->ddc_pin; + p_mapping->i2c_pin = p_child->i2c_pin; + p_mapping->initialized = 1; + DRM_DEBUG_KMS("SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n", + p_mapping->dvo_port, + p_mapping->slave_addr, + p_mapping->dvo_wiring, + p_mapping->ddc_pin, + p_mapping->i2c_pin); + } else { + DRM_DEBUG_KMS("Maybe one SDVO port is shared by " + "two SDVO device.\n"); + } + if (p_child->slave2_addr) { + /* Maybe this is a SDVO device with multiple inputs */ + /* And the mapping info is not added */ + DRM_DEBUG_KMS("there exists the slave2_addr. Maybe this" + " is a SDVO device with multiple inputs.\n"); + } + count++; + } + + if (!count) { + /* No SDVO device info is found */ + DRM_DEBUG_KMS("No SDVO device info is found in VBT\n"); + } + return; +} + +static void +parse_driver_features(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct drm_device *dev = dev_priv->dev; + struct bdb_driver_features *driver; + + driver = find_section(bdb, BDB_DRIVER_FEATURES); + if (!driver) + return; + + if (SUPPORTS_EDP(dev) && + driver->lvds_config == BDB_DRIVER_FEATURE_EDP) + dev_priv->edp.support = 1; + + if (driver->dual_frequency) + dev_priv->render_reclock_avail = true; +} + +static void +parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb) +{ + struct bdb_edp *edp; + struct edp_power_seq *edp_pps; + struct edp_link_params *edp_link_params; + + edp = find_section(bdb, BDB_EDP); + if (!edp) { + if (SUPPORTS_EDP(dev_priv->dev) && dev_priv->edp.support) + DRM_DEBUG_KMS("No eDP BDB found but eDP panel supported.\n"); + return; + } + + switch ((edp->color_depth >> (panel_type * 2)) & 3) { + case EDP_18BPP: + dev_priv->edp.bpp = 18; + break; + case EDP_24BPP: + dev_priv->edp.bpp = 24; + break; + case EDP_30BPP: + dev_priv->edp.bpp = 30; + break; + } + + /* Get the eDP sequencing and link info */ + edp_pps = &edp->power_seqs[panel_type]; + edp_link_params = &edp->link_params[panel_type]; + + dev_priv->edp.pps = *edp_pps; + + dev_priv->edp.rate = edp_link_params->rate ? DP_LINK_BW_2_7 : + DP_LINK_BW_1_62; + switch (edp_link_params->lanes) { + case 0: + dev_priv->edp.lanes = 1; + break; + case 1: + dev_priv->edp.lanes = 2; + break; + case 3: + default: + dev_priv->edp.lanes = 4; + break; + } + switch (edp_link_params->preemphasis) { + case 0: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_0; + break; + case 1: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_3_5; + break; + case 2: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_6; + break; + case 3: + dev_priv->edp.preemphasis = DP_TRAIN_PRE_EMPHASIS_9_5; + break; + } + switch (edp_link_params->vswing) { + case 0: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_400; + break; + case 1: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_600; + break; + case 2: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_800; + break; + case 3: + dev_priv->edp.vswing = DP_TRAIN_VOLTAGE_SWING_1200; + break; + } +} + +static void +parse_device_mapping(struct drm_i915_private *dev_priv, + struct bdb_header *bdb) +{ + struct bdb_general_definitions *p_defs; + struct child_device_config *p_child, *child_dev_ptr; + int i, child_device_num, count; + u16 block_size; + + p_defs = find_section(bdb, BDB_GENERAL_DEFINITIONS); + if (!p_defs) { + DRM_DEBUG_KMS("No general definition block is found, no devices defined.\n"); + return; + } + /* judge whether the size of child device meets the requirements. + * If the child device size obtained from general definition block + * is different with sizeof(struct child_device_config), skip the + * parsing of sdvo device info + */ + if (p_defs->child_dev_size != sizeof(*p_child)) { + /* different child dev size . Ignore it */ + DRM_DEBUG_KMS("different child size is found. Invalid.\n"); + return; + } + /* get the block size of general definitions */ + block_size = get_blocksize(p_defs); + /* get the number of child device */ + child_device_num = (block_size - sizeof(*p_defs)) / + sizeof(*p_child); + count = 0; + /* get the number of child device that is present */ + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + count++; + } + if (!count) { + DRM_DEBUG_KMS("no child dev is parsed from VBT\n"); + return; + } + dev_priv->child_dev = kcalloc(count, sizeof(*p_child), GFP_KERNEL); + if (!dev_priv->child_dev) { + DRM_DEBUG_KMS("No memory space for child device\n"); + return; + } + + dev_priv->child_dev_num = count; + count = 0; + for (i = 0; i < child_device_num; i++) { + p_child = &(p_defs->devices[i]); + if (!p_child->device_type) { + /* skip the device block if device type is invalid */ + continue; + } + child_dev_ptr = dev_priv->child_dev + count; + count++; + memcpy((void *)child_dev_ptr, (void *)p_child, + sizeof(*p_child)); + } + return; +} + +static void +init_vbt_defaults(struct drm_i915_private *dev_priv) +{ + struct drm_device *dev = dev_priv->dev; + + dev_priv->crt_ddc_pin = GMBUS_PORT_VGADDC; + + /* LFP panel data */ + dev_priv->lvds_dither = 1; + dev_priv->lvds_vbt = 0; + + /* SDVO panel data */ + dev_priv->sdvo_lvds_vbt_mode = NULL; + + /* general features */ + dev_priv->int_tv_support = 1; + dev_priv->int_crt_support = 1; + + /* Default to using SSC */ + dev_priv->lvds_use_ssc = 1; + dev_priv->lvds_ssc_freq = intel_bios_ssc_frequency(dev, 1); + DRM_DEBUG_KMS("Set default to SSC at %dMHz\n", dev_priv->lvds_ssc_freq); +} + +static int __init 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", + id->ident); + return 1; +} + +static const struct dmi_system_id intel_no_opregion_vbt[] = { + { + .callback = intel_no_opregion_vbt_callback, + .ident = "ThinkCentre A57", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "97027RG"), + }, + }, + { } +}; + +/** + * intel_parse_bios - find VBT and initialize settings from the BIOS + * @dev: DRM device + * + * Loads the Video BIOS and checks that the VBT exists. Sets scratch registers + * to appropriate values. + * + * Returns 0 on success, nonzero on failure. + */ +int +intel_parse_bios(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + struct pci_dev *pdev = dev->pdev; + struct bdb_header *bdb = NULL; + u8 __iomem *bios = NULL; + + init_vbt_defaults(dev_priv); + + /* XXX Should this validation be moved to intel_opregion.c? */ + if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt) { + struct vbt_header *vbt = dev_priv->opregion.vbt; + if (memcmp(vbt->signature, "$VBT", 4) == 0) { + DRM_DEBUG_KMS("Using VBT from OpRegion: %20s\n", + vbt->signature); + bdb = (struct bdb_header *)((char *)vbt + vbt->bdb_offset); + } else + dev_priv->opregion.vbt = NULL; + } + + if (bdb == NULL) { + struct vbt_header *vbt = NULL; + size_t size; + int i; + + bios = pci_map_rom(pdev, &size); + if (!bios) + return -1; + + /* Scour memory looking for the VBT signature */ + for (i = 0; i + 4 < size; i++) { + if (!memcmp(bios + i, "$VBT", 4)) { + vbt = (struct vbt_header *)(bios + i); + break; + } + } + + if (!vbt) { + DRM_DEBUG_DRIVER("VBT signature missing\n"); + pci_unmap_rom(pdev, bios); + return -1; + } + + bdb = (struct bdb_header *)(bios + i + vbt->bdb_offset); + } + + /* Grab useful general definitions */ + parse_general_features(dev_priv, bdb); + parse_general_definitions(dev_priv, bdb); + parse_lfp_panel_data(dev_priv, bdb); + parse_sdvo_panel_data(dev_priv, bdb); + parse_sdvo_device_mapping(dev_priv, bdb); + parse_device_mapping(dev_priv, bdb); + parse_driver_features(dev_priv, bdb); + parse_edp(dev_priv, bdb); + + if (bios) + pci_unmap_rom(pdev, bios); + + return 0; +} + +/* Ensure that vital registers have been initialised, even if the BIOS + * is absent or just failing to do its job. + */ +void intel_setup_bios(struct drm_device *dev) +{ + struct drm_i915_private *dev_priv = dev->dev_private; + + /* Set the Panel Power On/Off timings if uninitialized. */ + if (!HAS_PCH_SPLIT(dev) && + I915_READ(PP_ON_DELAYS) == 0 && I915_READ(PP_OFF_DELAYS) == 0) { + /* Set T2 to 40ms and T5 to 200ms */ + I915_WRITE(PP_ON_DELAYS, 0x019007d0); + + /* Set T3 to 35ms and Tx to 200ms */ + I915_WRITE(PP_OFF_DELAYS, 0x015e07d0); + } +} --- linux-3.5.0.orig/ubuntu/dm-raid4-5/Kconfig +++ linux-3.5.0/ubuntu/dm-raid4-5/Kconfig @@ -0,0 +1,6 @@ +config DM_RAID45 + tristate "RAID 4/5 target (EXPERIMENTAL)" + depends on BLK_DEV_DM && XOR_BLOCKS && EXPERIMENTAL + default m + ---help--- + A target that supports RAID4 and RAID5 mappings. --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-region-hash.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-region-hash.h @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * Device-Mapper dirty region hash interface. + * + * This file is released under the GPL. + */ + +#ifndef DM_REGION_HASH_H +#define DM_REGION_HASH_H + +#include + +/*----------------------------------------------------------------- + * Region hash + *----------------------------------------------------------------*/ +struct dm_region_hash; +struct dm_region; + +/* + * States a region can have. + */ +enum dm_rh_region_states { + DM_RH_CLEAN = 0x01, /* No writes in flight. */ + DM_RH_DIRTY = 0x02, /* Writes in flight. */ + DM_RH_NOSYNC = 0x04, /* Out of sync. */ + DM_RH_RECOVERING = 0x08, /* Under resynchronization. */ +}; + +/* + * Region hash create/destroy. + */ +struct bio_list; +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions); +void dm_region_hash_destroy(struct dm_region_hash *rh); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh); + +/* + * Conversion functions. + */ +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio); +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region); +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector); +void *dm_rh_region_context(struct dm_region *reg); + +/* + * Get region size and key (ie. number of the region). + */ +sector_t dm_rh_get_region_size(struct dm_region_hash *rh); +region_t dm_rh_get_region_key(struct dm_region *reg); + +/* + * Get/set/update region state (and dirty log). + * + */ +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block); +void dm_rh_set_state(struct dm_region_hash *rh, region_t region, + enum dm_rh_region_states state, int may_block); + +/* Non-zero errors_handled leaves the state of the region NOSYNC */ +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled); + +/* Flush the region hash and dirty log. */ +int dm_rh_flush(struct dm_region_hash *rh); + +/* Inc/dec pending count on regions. */ +void dm_rh_inc(struct dm_region_hash *rh, region_t region); +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios); +void dm_rh_dec(struct dm_region_hash *rh, region_t region); + +/* Delay bios on regions. */ +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio); +void dm_rh_delay_by_region(struct dm_region_hash *rh, struct bio *bio, + region_t region); + +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error); + +/* + * Region recovery control. + */ + +/* Prepare some regions for recovery by starting to quiesce them. */ +void dm_rh_recovery_prepare(struct dm_region_hash *rh); + +/* Try fetching a quiesced region for recovery. */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh); + +/* Report recovery end on a region. */ +void dm_rh_recovery_end(struct dm_region *reg, int error); + +/* Returns number of regions with recovery work outstanding. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh); + +/* Start/stop recovery. */ +void dm_rh_start_recovery(struct dm_region_hash *rh); +void dm_rh_stop_recovery(struct dm_region_hash *rh); + +#endif /* DM_REGION_HASH_H */ --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-memcache.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-memcache.h @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#ifndef _DM_MEM_CACHE_H +#define _DM_MEM_CACHE_H + +#define DM_MEM_CACHE_H_VERSION "0.1" + +#include "dm.h" +#include + +static inline struct page_list *pl_elem(struct page_list *pl, unsigned p) +{ + while (pl && p--) + pl = pl->next; + + return pl; +} + +struct dm_mem_cache_object { + struct page_list *pl; /* Dynamically allocated array */ + void *private; /* Caller context reference */ +}; + +struct dm_mem_cache_client; + +/* + * Create/destroy dm memory cache client resources. + * + * On creation, a number of @objects with @chunks of + * @pages_per_chunk pages will be allocated. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk); +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *client); + +/* + * Grow/shrink a dm memory cache client resources + * by @objetcs amount of objects. + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *client, unsigned objects); +int dm_mem_cache_shrink(struct dm_mem_cache_client *client, unsigned objects); + +/* + * Allocate/free a memory object + * + * On allocation one object with an amount of chunks and + * an amount of pages per chunk will be returned on success. + */ +struct dm_mem_cache_object * +dm_mem_cache_alloc(struct dm_mem_cache_client *client); +void dm_mem_cache_free(struct dm_mem_cache_client *client, + struct dm_mem_cache_object *object); + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-message.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-message.c @@ -0,0 +1,184 @@ +/* + * Copyright (C) 2007,2008 Red Hat Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + * device-mapper message parser. + * + */ + +#include "dm.h" +#include "dm-message.h" +#include +#include + +#define DM_MSG_PREFIX "dm_message" + +/* Basename of a path. */ +static inline char * +basename(char *s) +{ + char *p = strrchr(s, '/'); + + return p ? p + 1 : s; +} + +/* Get an argument depending on type. */ +static void +message_arguments(struct dm_msg *msg, int argc, char **argv) +{ + + if (argc) { + int i; + struct dm_message_argument *args = msg->spec->args; + + for (i = 0; i < args->num_args; i++) { + int r; + unsigned long **ptr = args->ptr; + enum dm_message_argument_type type = args->types[i]; + + switch (type) { + case dm_msg_base_t: + ((char **) ptr)[i] = basename(argv[i]); + break; + + case dm_msg_str_t: + ((char **) ptr)[i] = argv[i]; + break; + + case dm_msg_int_t: + r = sscanf(argv[i], "%d", ((int **) ptr)[i]); + goto check; + + case dm_msg_uint_t: + r = sscanf(argv[i], "%u", + ((unsigned **) ptr)[i]); + goto check; + + case dm_msg_uint64_t: + r = sscanf(argv[i], "%llu", + ((unsigned long long **) ptr)[i]); + +check: + if (r != 1) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_arg, &msg->ret); + } + } + } + } +} + +/* Parse message options. */ +static void +message_options_parse(struct dm_msg *msg, int argc, char **argv) +{ + int hit = 0; + unsigned long *action; + size_t l1 = strlen(*argv), l_hit = 0; + struct dm_message_option *o = msg->spec->options; + char **option, **option_end = o->options + o->num_options; + + for (option = o->options, action = o->actions; + option < option_end; option++, action++) { + size_t l2 = strlen(*option); + + if (!strnicmp(*argv, *option, min(l1, l2))) { + hit++; + l_hit = l2; + set_bit(*action, &msg->action); + } + } + + /* Assume error. */ + msg->ret = 0; + set_bit(dm_msg_ret_option, &msg->ret); + if (!hit || l1 > l_hit) + set_bit(dm_msg_ret_undef, &msg->ret); /* Undefined option. */ + else if (hit > 1) + set_bit(dm_msg_ret_ambiguous, &msg->ret); /* Ambiguous option.*/ + else { + clear_bit(dm_msg_ret_option, &msg->ret); /* Option OK. */ + message_arguments(msg, --argc, ++argv); + } +} + +static inline void +print_ret(const char *caller, unsigned long ret) +{ + struct { + unsigned long err; + const char *err_str; + } static err_msg[] = { + { dm_msg_ret_ambiguous, "message ambiguous" }, + { dm_msg_ret_inval, "message invalid" }, + { dm_msg_ret_undef, "message undefined" }, + { dm_msg_ret_arg, "message argument" }, + { dm_msg_ret_argcount, "message argument count" }, + { dm_msg_ret_option, "option" }, + }, *e = ARRAY_END(err_msg); + + while (e-- > err_msg) { + if (test_bit(e->err, &ret)) + DMERR("%s %s", caller, e->err_str); + } +} + +/* Parse a message action. */ +int +dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv) +{ + int hit = 0; + size_t l1, l_hit = 0; + struct dm_msg_spec *s, *s_hit = NULL, + *s_end = msg->specs + msg->num_specs; + + if (argc < 2) + return -EINVAL; + + l1 = strlen(*argv); + for (s = msg->specs; s < s_end; s++) { + size_t l2 = strlen(s->cmd); + + if (!strnicmp(*argv, s->cmd, min(l1, l2))) { + hit++; + l_hit = l2; + s_hit = s; + } + } + + msg->ret = 0; + if (!hit || l1 > l_hit) /* No hit or message string too long. */ + set_bit(dm_msg_ret_undef, &msg->ret); + else if (hit > 1) /* Ambiguous message. */ + set_bit(dm_msg_ret_ambiguous, &msg->ret); + else if (argc - 2 != s_hit->args->num_args) { + set_bit(dm_msg_ret_undef, &msg->ret); + set_bit(dm_msg_ret_argcount, &msg->ret); + } + + if (msg->ret) + goto bad; + + msg->action = 0; + msg->spec = s_hit; + set_bit(s_hit->action, &msg->action); + message_options_parse(msg, --argc, ++argv); + + if (!msg->ret) + return msg->spec->f(msg, context); + +bad: + print_ret(caller, msg->ret); + return -EINVAL; +} +EXPORT_SYMBOL(dm_message_parse); + +MODULE_DESCRIPTION(DM_NAME " device-mapper target message parser"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/Makefile +++ linux-3.5.0/ubuntu/dm-raid4-5/Makefile @@ -0,0 +1,4 @@ +EXTRA_CFLAGS += -I$(srctree)/drivers/md + +obj-$(CONFIG_DM_RAID45) := dm-raid45.o +dm-raid45-objs := dm-raid4-5.o dm-memcache.o dm-region-hash.o dm-message.o --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-memcache.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-memcache.c @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * Device-mapper memory object handling: + * + * o allocate/free total_pages in a per client page pool. + * + * o allocate/free memory objects with chunks (1..n) of + * pages_per_chunk pages hanging off. + * + * This file is released under the GPL. + */ + +#define DM_MEM_CACHE_VERSION "0.2" + +#include "dm.h" +#include "dm-memcache.h" +#include +#include +#include + +struct dm_mem_cache_client { + spinlock_t lock; + mempool_t *objs_pool; + struct page_list *free_list; + unsigned objects; + unsigned chunks; + unsigned pages_per_chunk; + unsigned free_pages; + unsigned total_pages; +}; + +/* + * Free pages and page_list elements of client. + */ +static void free_cache_pages(struct page_list *list) +{ + while (list) { + struct page_list *pl = list; + + list = pl->next; + BUG_ON(!pl->page); + __free_page(pl->page); + kfree(pl); + } +} + +/* + * Alloc number of pages and page_list elements as required by client. + */ +static struct page_list *alloc_cache_pages(unsigned pages) +{ + struct page_list *pl, *ret = NULL; + struct page *page; + + while (pages--) { + page = alloc_page(GFP_NOIO); + if (!page) + goto err; + + pl = kmalloc(sizeof(*pl), GFP_NOIO); + if (!pl) { + __free_page(page); + goto err; + } + + pl->page = page; + pl->next = ret; + ret = pl; + } + + return ret; + +err: + free_cache_pages(ret); + return NULL; +} + +/* + * Allocate page_list elements from the pool to chunks of the memory object. + */ +static void alloc_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + unsigned p = cl->pages_per_chunk; + + obj[chunks].pl = NULL; + + while (p--) { + struct page_list *pl; + + /* Take next element from free list */ + spin_lock(&cl->lock); + pl = cl->free_list; + BUG_ON(!pl); + cl->free_list = pl->next; + spin_unlock(&cl->lock); + + pl->next = obj[chunks].pl; + obj[chunks].pl = pl; + } + } + + local_irq_restore(flags); +} + +/* + * Free page_list elements putting them back onto free list + */ +static void free_chunks(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + unsigned chunks = cl->chunks; + unsigned long flags; + struct page_list *next, *pl; + + local_irq_save(flags); + local_irq_disable(); + while (chunks--) { + for (pl = obj[chunks].pl; pl; pl = next) { + next = pl->next; + + spin_lock(&cl->lock); + pl->next = cl->free_list; + cl->free_list = pl; + cl->free_pages++; + spin_unlock(&cl->lock); + } + } + + local_irq_restore(flags); +} + +/* + * Create/destroy dm memory cache client resources. + */ +struct dm_mem_cache_client * +dm_mem_cache_client_create(unsigned objects, unsigned chunks, + unsigned pages_per_chunk) +{ + unsigned total_pages = objects * chunks * pages_per_chunk; + struct dm_mem_cache_client *client; + + BUG_ON(!total_pages); + client = kzalloc(sizeof(*client), GFP_KERNEL); + if (!client) + return ERR_PTR(-ENOMEM); + + client->objs_pool = mempool_create_kmalloc_pool(objects, + chunks * sizeof(struct dm_mem_cache_object)); + if (!client->objs_pool) + goto err; + + client->free_list = alloc_cache_pages(total_pages); + if (!client->free_list) + goto err1; + + spin_lock_init(&client->lock); + client->objects = objects; + client->chunks = chunks; + client->pages_per_chunk = pages_per_chunk; + client->free_pages = client->total_pages = total_pages; + return client; + +err1: + mempool_destroy(client->objs_pool); +err: + kfree(client); + return ERR_PTR(-ENOMEM); +} +EXPORT_SYMBOL(dm_mem_cache_client_create); + +void dm_mem_cache_client_destroy(struct dm_mem_cache_client *cl) +{ + BUG_ON(cl->free_pages != cl->total_pages); + free_cache_pages(cl->free_list); + mempool_destroy(cl->objs_pool); + kfree(cl); +} +EXPORT_SYMBOL(dm_mem_cache_client_destroy); + +/* + * Grow a clients cache by an amount of pages. + * + * Don't call from interrupt context! + */ +int dm_mem_cache_grow(struct dm_mem_cache_client *cl, unsigned objects) +{ + unsigned pages = objects * cl->chunks * cl->pages_per_chunk; + struct page_list *pl, *last; + + BUG_ON(!pages); + pl = alloc_cache_pages(pages); + if (!pl) + return -ENOMEM; + + last = pl; + while (last->next) + last = last->next; + + spin_lock_irq(&cl->lock); + last->next = cl->free_list; + cl->free_list = pl; + cl->free_pages += pages; + cl->total_pages += pages; + cl->objects++; + spin_unlock_irq(&cl->lock); + + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + return 0; +} +EXPORT_SYMBOL(dm_mem_cache_grow); + +/* Shrink a clients cache by an amount of pages */ +int dm_mem_cache_shrink(struct dm_mem_cache_client *cl, unsigned objects) +{ + int r; + unsigned pages = objects * cl->chunks * cl->pages_per_chunk, p = pages; + unsigned long flags; + struct page_list *last = NULL, *pl, *pos; + + BUG_ON(!pages); + + spin_lock_irqsave(&cl->lock, flags); + pl = pos = cl->free_list; + while (p-- && pos->next) { + last = pos; + pos = pos->next; + } + + if (++p) + r = -ENOMEM; + else { + r = 0; + cl->free_list = pos; + cl->free_pages -= pages; + cl->total_pages -= pages; + cl->objects--; + last->next = NULL; + } + spin_unlock_irqrestore(&cl->lock, flags); + + if (!r) { + free_cache_pages(pl); + mempool_resize(cl->objs_pool, cl->objects, GFP_NOIO); + } + + return r; +} +EXPORT_SYMBOL(dm_mem_cache_shrink); + +/* + * Allocate/free a memory object + * + * Can be called from interrupt context + */ +struct dm_mem_cache_object *dm_mem_cache_alloc(struct dm_mem_cache_client *cl) +{ + int r = 0; + unsigned pages = cl->chunks * cl->pages_per_chunk; + unsigned long flags; + struct dm_mem_cache_object *obj; + + obj = mempool_alloc(cl->objs_pool, GFP_NOIO); + if (!obj) + return ERR_PTR(-ENOMEM); + + spin_lock_irqsave(&cl->lock, flags); + if (pages > cl->free_pages) + r = -ENOMEM; + else + cl->free_pages -= pages; + spin_unlock_irqrestore(&cl->lock, flags); + + if (r) { + mempool_free(obj, cl->objs_pool); + return ERR_PTR(r); + } + + alloc_chunks(cl, obj); + return obj; +} +EXPORT_SYMBOL(dm_mem_cache_alloc); + +void dm_mem_cache_free(struct dm_mem_cache_client *cl, + struct dm_mem_cache_object *obj) +{ + free_chunks(cl, obj); + mempool_free(obj, cl->objs_pool); +} +EXPORT_SYMBOL(dm_mem_cache_free); + +MODULE_DESCRIPTION(DM_NAME " dm memory cache"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid4-5.c @@ -0,0 +1,4539 @@ +/*[A[A + * Copyright (C) 2005-2009 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * This file is released under the GPL. + * + * + * Linux 2.6 Device Mapper RAID4 and RAID5 target. + * + * Supports: + * o RAID4 with dedicated and selectable parity device + * o RAID5 with rotating parity (left+right, symmetric+asymmetric) + * o recovery of out of sync device for initial + * RAID set creation or after dead drive replacement + * o run time optimization of xor algorithm used to calculate parity + * + * + * Thanks to MD for: + * o the raid address calculation algorithm + * o the base of the biovec <-> page list copier. + * + * + * Uses region hash to keep track of how many writes are in flight to + * regions in order to use dirty log to keep state of regions to recover: + * + * o clean regions (those which are synchronized + * and don't have write io in flight) + * o dirty regions (those with write io in flight) + * + * + * On startup, any dirty regions are migrated to the + * 'nosync' state and are subject to recovery by the daemon. + * + * See raid_ctr() for table definition. + * + * FIXME: recovery bandwidth + */ + +static const char *version = "v0.2594b"; + +#include "dm.h" +#include "dm-memcache.h" +#include "dm-message.h" +#include "dm-raid45.h" + +#include +#include +#include + +#include +#include +#include +#include "dm-region-hash.h" + +#include +#include + +/* + * Configurable parameters + */ + +/* Minimum/maximum and default # of selectable stripes. */ +#define STRIPES_MIN 8 +#define STRIPES_MAX 16384 +#define STRIPES_DEFAULT 80 + +/* Maximum and default chunk size in sectors if not set in constructor. */ +#define CHUNK_SIZE_MIN 8 +#define CHUNK_SIZE_MAX 16384 +#define CHUNK_SIZE_DEFAULT 64 + +/* Default io size in sectors if not set in constructor. */ +#define IO_SIZE_MIN CHUNK_SIZE_MIN +#define IO_SIZE_DEFAULT IO_SIZE_MIN + +/* Recover io size default in sectors. */ +#define RECOVER_IO_SIZE_MIN 64 +#define RECOVER_IO_SIZE_DEFAULT 256 + +/* Default, minimum and maximum percentage of recover io bandwidth. */ +#define BANDWIDTH_DEFAULT 10 +#define BANDWIDTH_MIN 1 +#define BANDWIDTH_MAX 100 + +/* # of parallel recovered regions */ +#define RECOVERY_STRIPES_MIN 1 +#define RECOVERY_STRIPES_MAX 64 +#define RECOVERY_STRIPES_DEFAULT RECOVERY_STRIPES_MIN +/* + * END Configurable parameters + */ + +#define TARGET "dm-raid45" +#define DAEMON "kraid45d" +#define DM_MSG_PREFIX TARGET + +#define SECTORS_PER_PAGE (PAGE_SIZE >> SECTOR_SHIFT) + +/* Amount/size for __xor(). */ +#define XOR_SIZE PAGE_SIZE + +/* Check value in range. */ +#define range_ok(i, min, max) (i >= min && i <= max) + +/* Check argument is power of 2. */ +#define POWER_OF_2(a) (!(a & (a - 1))) + +/* Structure access macros. */ +/* Derive raid_set from stripe_cache pointer. */ +#define RS(x) container_of(x, struct raid_set, sc) + +/* Page reference. */ +#define PAGE(stripe, p) ((stripe)->obj[p].pl->page) + +/* Stripe chunk reference. */ +#define CHUNK(stripe, p) ((stripe)->chunk + p) + +/* Bio list reference. */ +#define BL(stripe, p, rw) (stripe->chunk[p].bl + rw) +#define BL_CHUNK(chunk, rw) (chunk->bl + rw) + +/* Page list reference. */ +#define PL(stripe, p) (stripe->obj[p].pl) +/* END: structure access macros. */ + +/* Factor out to dm-bio-list.h */ +static inline void bio_list_push(struct bio_list *bl, struct bio *bio) +{ + bio->bi_next = bl->head; + bl->head = bio; + + if (!bl->tail) + bl->tail = bio; +} + +/* Factor out to dm.h */ +#define TI_ERR_RET(str, ret) \ + do { ti->error = str; return ret; } while (0); +#define TI_ERR(str) TI_ERR_RET(str, -EINVAL) + +/* Macro to define access IO flags access inline functions. */ +#define BITOPS(name, what, var, flag) \ +static inline int TestClear ## name ## what(struct var *v) \ +{ return test_and_clear_bit(flag, &v->io.flags); } \ +static inline int TestSet ## name ## what(struct var *v) \ +{ return test_and_set_bit(flag, &v->io.flags); } \ +static inline void Clear ## name ## what(struct var *v) \ +{ clear_bit(flag, &v->io.flags); } \ +static inline void Set ## name ## what(struct var *v) \ +{ set_bit(flag, &v->io.flags); } \ +static inline int name ## what(struct var *v) \ +{ return test_bit(flag, &v->io.flags); } + +/*----------------------------------------------------------------- + * Stripe cache + * + * Cache for all reads and writes to raid sets (operational or degraded) + * + * We need to run all data to and from a RAID set through this cache, + * because parity chunks need to get calculated from data chunks + * or, in the degraded/resynchronization case, missing chunks need + * to be reconstructed using the other chunks of the stripe. + *---------------------------------------------------------------*/ +/* A chunk within a stripe (holds bios hanging off). */ +/* IO status flags for chunks of a stripe. */ +enum chunk_flags { + CHUNK_DIRTY, /* Pages of chunk dirty; need writing. */ + CHUNK_ERROR, /* IO error on any chunk page. */ + CHUNK_IO, /* Allow/prohibit IO on chunk pages. */ + CHUNK_LOCKED, /* Chunk pages locked during IO. */ + CHUNK_MUST_IO, /* Chunk must io. */ + CHUNK_UNLOCK, /* Enforce chunk unlock. */ + CHUNK_UPTODATE, /* Chunk pages are uptodate. */ +}; + +/* + * This does not work anymore with __REQ_* values being enums + * +#if READ != 0 || WRITE != 1 +#error dm-raid45: READ/WRITE != 0/1 used as index!!! +#endif +*/ + +enum bl_type { + WRITE_QUEUED = WRITE + 1, + WRITE_MERGED, + NR_BL_TYPES, /* Must be last one! */ +}; +struct stripe_chunk { + atomic_t cnt; /* Reference count. */ + struct stripe *stripe; /* Backpointer to stripe for endio(). */ + /* Bio lists for reads, writes, and writes merged. */ + struct bio_list bl[NR_BL_TYPES]; + struct { + unsigned long flags; /* IO status flags. */ + } io; +}; + +/* Define chunk bit operations. */ +BITOPS(Chunk, Dirty, stripe_chunk, CHUNK_DIRTY) +BITOPS(Chunk, Error, stripe_chunk, CHUNK_ERROR) +BITOPS(Chunk, Io, stripe_chunk, CHUNK_IO) +BITOPS(Chunk, Locked, stripe_chunk, CHUNK_LOCKED) +BITOPS(Chunk, MustIo, stripe_chunk, CHUNK_MUST_IO) +BITOPS(Chunk, Unlock, stripe_chunk, CHUNK_UNLOCK) +BITOPS(Chunk, Uptodate, stripe_chunk, CHUNK_UPTODATE) + +/* + * Stripe linked list indexes. Keep order, because the stripe + * and the stripe cache rely on the first 3! + */ +enum list_types { + LIST_FLUSH, /* Stripes to flush for io. */ + LIST_ENDIO, /* Stripes to endio. */ + LIST_LRU, /* Least recently used stripes. */ + SC_NR_LISTS, /* # of lists in stripe cache. */ + LIST_HASH = SC_NR_LISTS, /* Hashed stripes. */ + LIST_RECOVER = LIST_HASH, /* For recovery type stripes only. */ + STRIPE_NR_LISTS,/* To size array in struct stripe. */ +}; + +/* Adressing region recovery. */ +struct recover_addr { + struct dm_region *reg; /* Actual region to recover. */ + sector_t pos; /* Position within region to recover. */ + sector_t end; /* End of region to recover. */ +}; + +/* A stripe: the io object to handle all reads and writes to a RAID set. */ +struct stripe { + atomic_t cnt; /* Reference count. */ + struct stripe_cache *sc; /* Backpointer to stripe cache. */ + + /* + * 4 linked lists: + * o io list to flush io + * o endio list + * o LRU list to put stripes w/o reference count on + * o stripe cache hash + */ + struct list_head lists[STRIPE_NR_LISTS]; + + sector_t key; /* Hash key. */ + region_t region; /* Region stripe is mapped to. */ + + struct { + unsigned long flags; /* Stripe state flags (see below). */ + + /* + * Pending ios in flight: + * + * used to control move of stripe to endio list + */ + atomic_t pending; + + /* Sectors to read and write for multi page stripe sets. */ + unsigned size; + } io; + + /* Address region recovery. */ + struct recover_addr *recover; + + /* Lock on stripe (Future: for clustering). */ + void *lock; + + struct { + unsigned short parity; /* Parity chunk index. */ + short recover; /* Recovery chunk index. */ + } idx; + + /* + * This stripe's memory cache object (dm-mem-cache); + * i.e. the io chunk pages. + */ + struct dm_mem_cache_object *obj; + + /* Array of stripe sets (dynamically allocated). */ + struct stripe_chunk chunk[0]; +}; + +/* States stripes can be in (flags field). */ +enum stripe_states { + STRIPE_ERROR, /* io error on stripe. */ + STRIPE_MERGED, /* Writes got merged to be written. */ + STRIPE_RBW, /* Read-before-write stripe. */ + STRIPE_RECONSTRUCT, /* Reconstruct of a missing chunk required. */ + STRIPE_RECONSTRUCTED, /* Reconstructed of a missing chunk. */ + STRIPE_RECOVER, /* Stripe used for RAID set recovery. */ +}; + +/* Define stripe bit operations. */ +BITOPS(Stripe, Error, stripe, STRIPE_ERROR) +BITOPS(Stripe, Merged, stripe, STRIPE_MERGED) +BITOPS(Stripe, RBW, stripe, STRIPE_RBW) +BITOPS(Stripe, Reconstruct, stripe, STRIPE_RECONSTRUCT) +BITOPS(Stripe, Reconstructed, stripe, STRIPE_RECONSTRUCTED) +BITOPS(Stripe, Recover, stripe, STRIPE_RECOVER) + +/* A stripe hash. */ +struct stripe_hash { + struct list_head *hash; + unsigned buckets; + unsigned mask; + unsigned prime; + unsigned shift; +}; + +enum sc_lock_types { + LOCK_ENDIO, /* Protect endio list. */ + LOCK_LRU, /* Protect LRU list. */ + NR_LOCKS, /* To size array in struct stripe_cache. */ +}; + +/* A stripe cache. */ +struct stripe_cache { + /* Stripe hash. */ + struct stripe_hash hash; + + spinlock_t locks[NR_LOCKS]; /* Locks to protect lists. */ + + /* Stripes with io to flush, stripes to endio and LRU lists. */ + struct list_head lists[SC_NR_LISTS]; + + /* Slab cache to allocate stripes from. */ + struct { + struct kmem_cache *cache; /* Cache itself. */ + char name[32]; /* Unique name. */ + } kc; + + struct dm_io_client *dm_io_client; /* dm-io client resource context. */ + + /* dm-mem-cache client resource context. */ + struct dm_mem_cache_client *mem_cache_client; + + int stripes_parm; /* # stripes parameter from constructor. */ + atomic_t stripes; /* actual # of stripes in cache. */ + atomic_t stripes_to_set; /* # of stripes to resize cache to. */ + atomic_t stripes_last; /* last # of stripes in cache. */ + atomic_t active_stripes; /* actual # of active stripes in cache. */ + + /* REMOVEME: */ + atomic_t active_stripes_max; /* actual # of active stripes in cache. */ +}; + +/* Flag specs for raid_dev */ ; +enum raid_dev_flags { + DEV_FAILED, /* Device failed. */ + DEV_IO_QUEUED, /* Io got queued to device. */ +}; + +/* The raid device in a set. */ +struct raid_dev { + struct dm_dev *dev; + sector_t start; /* Offset to map to. */ + struct { /* Using struct to be able to BITOPS(). */ + unsigned long flags; /* raid_dev_flags. */ + } io; +}; + +BITOPS(Dev, Failed, raid_dev, DEV_FAILED) +BITOPS(Dev, IoQueued, raid_dev, DEV_IO_QUEUED) + +/* Flags spec for raid_set. */ +enum raid_set_flags { + RS_CHECK_OVERWRITE, /* Check for chunk overwrites. */ + RS_DEAD, /* RAID set inoperational. */ + RS_DEGRADED, /* Io errors on RAID device. */ + RS_DEVEL_STATS, /* REMOVEME: display status information. */ + RS_RECOVER, /* Do recovery. */ + RS_RECOVERY_BANDWIDTH, /* Allow recovery bandwidth (delayed bios). */ + RS_SC_BUSY, /* Stripe cache busy -> send an event. */ + RS_SUSPEND, /* Suspend RAID set. */ +}; + +/* REMOVEME: devel stats counters. */ +enum stats_types { + S_BIOS_READ, + S_BIOS_ADDED_READ, + S_BIOS_ENDIO_READ, + S_BIOS_WRITE, + S_BIOS_ADDED_WRITE, + S_BIOS_ENDIO_WRITE, + S_CAN_MERGE, + S_CANT_MERGE, + S_CONGESTED, + S_DM_IO_READ, + S_DM_IO_WRITE, + S_BANDWIDTH, + S_BARRIER, + S_BIO_COPY_PL_NEXT, + S_DEGRADED, + S_DELAYED_BIOS, + S_FLUSHS, + S_HITS_1ST, + S_IOS_POST, + S_INSCACHE, + S_MAX_LOOKUP, + S_CHUNK_LOCKED, + S_NO_BANDWIDTH, + S_NOT_CONGESTED, + S_NO_RW, + S_NOSYNC, + S_OVERWRITE, + S_PROHIBITCHUNKIO, + S_RECONSTRUCT_EI, + S_RECONSTRUCT_DEV, + S_RECONSTRUCT_SET, + S_RECONSTRUCTED, + S_REQUEUE, + S_STRIPE_ERROR, + S_SUM_DELAYED_BIOS, + S_XORS, + S_NR_STATS, /* # of stats counters. Must be last! */ +}; + +/* Status type -> string mappings. */ +struct stats_map { + const enum stats_types type; + const char *str; +}; + +static struct stats_map stats_map[] = { + { S_BIOS_READ, "r=" }, + { S_BIOS_ADDED_READ, "/" }, + { S_BIOS_ENDIO_READ, "/" }, + { S_BIOS_WRITE, " w=" }, + { S_BIOS_ADDED_WRITE, "/" }, + { S_BIOS_ENDIO_WRITE, "/" }, + { S_DM_IO_READ, " rc=" }, + { S_DM_IO_WRITE, " wc=" }, + { S_BANDWIDTH, "\nbw=" }, + { S_NO_BANDWIDTH, " no_bw=" }, + { S_BARRIER, "\nbarrier=" }, + { S_BIO_COPY_PL_NEXT, "\nbio_cp_next=" }, + { S_CAN_MERGE, "\nmerge=" }, + { S_CANT_MERGE, "/no_merge=" }, + { S_CHUNK_LOCKED, "\nchunk_locked=" }, + { S_CONGESTED, "\ncgst=" }, + { S_NOT_CONGESTED, "/not_cgst=" }, + { S_DEGRADED, "\ndegraded=" }, + { S_DELAYED_BIOS, "\ndel_bios=" }, + { S_SUM_DELAYED_BIOS, "/sum_del_bios=" }, + { S_FLUSHS, "\nflushs=" }, + { S_HITS_1ST, "\nhits_1st=" }, + { S_IOS_POST, " ios_post=" }, + { S_INSCACHE, " inscache=" }, + { S_MAX_LOOKUP, " maxlookup=" }, + { S_NO_RW, "\nno_rw=" }, + { S_NOSYNC, " nosync=" }, + { S_OVERWRITE, " ovr=" }, + { S_PROHIBITCHUNKIO, " prhbt_io=" }, + { S_RECONSTRUCT_EI, "\nrec_ei=" }, + { S_RECONSTRUCT_DEV, " rec_dev=" }, + { S_RECONSTRUCT_SET, " rec_set=" }, + { S_RECONSTRUCTED, " rec=" }, + { S_REQUEUE, " requeue=" }, + { S_STRIPE_ERROR, " stripe_err=" }, + { S_XORS, " xors=" }, +}; + +/* + * A RAID set. + */ +#define dm_rh_client dm_region_hash +enum count_type { IO_WORK = 0, IO_RECOVER, IO_NR_COUNT }; +typedef void (*xor_function_t)(unsigned count, unsigned long **data); +struct raid_set { + struct dm_target *ti; /* Target pointer. */ + + struct { + unsigned long flags; /* State flags. */ + struct mutex in_lock; /* Protects central input list below. */ + struct bio_list in; /* Pending ios (central input list). */ + struct bio_list work; /* ios work set. */ + wait_queue_head_t suspendq; /* suspend synchronization. */ + atomic_t in_process; /* counter of queued bios (suspendq). */ + atomic_t in_process_max;/* counter of queued bios max. */ + + /* io work. */ + struct workqueue_struct *wq; + struct delayed_work dws_do_raid; /* For main worker. */ + struct work_struct ws_do_table_event; /* For event worker. */ + } io; + + /* Stripe locking abstraction. */ + struct dm_raid45_locking_type *locking; + + struct stripe_cache sc; /* Stripe cache for this set. */ + + /* Xor optimization. */ + struct { + struct xor_func *f; + unsigned chunks; + unsigned speed; + } xor; + + /* Recovery parameters. */ + struct recover { + struct dm_dirty_log *dl; /* Dirty log. */ + struct dm_rh_client *rh; /* Region hash. */ + + struct dm_io_client *dm_io_client; /* recovery dm-io client. */ + /* dm-mem-cache client resource context for recovery stripes. */ + struct dm_mem_cache_client *mem_cache_client; + + struct list_head stripes; /* List of recovery stripes. */ + + region_t nr_regions; + region_t nr_regions_to_recover; + region_t nr_regions_recovered; + unsigned long start_jiffies; + unsigned long end_jiffies; + + unsigned bandwidth; /* Recovery bandwidth [%]. */ + unsigned bandwidth_work; /* Recovery bandwidth [factor]. */ + unsigned bandwidth_parm; /* " constructor parm. */ + unsigned io_size; /* recovery io size <= region size. */ + unsigned io_size_parm; /* recovery io size ctr parameter. */ + unsigned recovery; /* Recovery allowed/prohibited. */ + unsigned recovery_stripes; /* # of parallel recovery stripes. */ + + /* recovery io throttling. */ + atomic_t io_count[IO_NR_COUNT]; /* counter recover/regular io.*/ + unsigned long last_jiffies; + } recover; + + /* RAID set parameters. */ + struct { + struct raid_type *raid_type; /* RAID type (eg, RAID4). */ + unsigned raid_parms; /* # variable raid parameters. */ + + unsigned chunk_size; /* Sectors per chunk. */ + unsigned chunk_size_parm; + unsigned chunk_shift; /* rsector chunk size shift. */ + + unsigned io_size; /* Sectors per io. */ + unsigned io_size_parm; + unsigned io_mask; /* Mask for bio_copy_page_list(). */ + unsigned io_inv_mask; /* Mask for raid_address(). */ + + sector_t sectors_per_dev; /* Sectors per device. */ + + atomic_t failed_devs; /* Amount of devices failed. */ + + /* Index of device to initialize. */ + int dev_to_init; + int dev_to_init_parm; + + /* Raid devices dynamically allocated. */ + unsigned raid_devs; /* # of RAID devices below. */ + unsigned data_devs; /* # of RAID data devices. */ + + int ei; /* index of failed RAID device. */ + + /* Index of dedicated parity device (i.e. RAID4). */ + int pi; + int pi_parm; /* constructor parm for status output. */ + } set; + + /* REMOVEME: devel stats counters. */ + atomic_t stats[S_NR_STATS]; + + /* Dynamically allocated temporary pointers for xor(). */ + unsigned long **data; + + /* Dynamically allocated RAID devices. Alignment? */ + struct raid_dev dev[0]; +}; + +/* Define RAID set bit operations. */ +BITOPS(RS, Bandwidth, raid_set, RS_RECOVERY_BANDWIDTH) +BITOPS(RS, CheckOverwrite, raid_set, RS_CHECK_OVERWRITE) +BITOPS(RS, Dead, raid_set, RS_DEAD) +BITOPS(RS, Degraded, raid_set, RS_DEGRADED) +BITOPS(RS, DevelStats, raid_set, RS_DEVEL_STATS) +BITOPS(RS, Recover, raid_set, RS_RECOVER) +BITOPS(RS, ScBusy, raid_set, RS_SC_BUSY) +BITOPS(RS, Suspend, raid_set, RS_SUSPEND) +#undef BITOPS + +/*----------------------------------------------------------------- + * Raid-4/5 set structures. + *---------------------------------------------------------------*/ +/* RAID level definitions. */ +enum raid_level { + raid4, + raid5, +}; + +/* Symmetric/Asymmetric, Left/Right parity rotating algorithms. */ +enum raid_algorithm { + none, + left_asym, + right_asym, + left_sym, + right_sym, +}; + +struct raid_type { + const char *name; /* RAID algorithm. */ + const char *descr; /* Descriptor text for logging. */ + const unsigned parity_devs; /* # of parity devices. */ + const unsigned minimal_devs; /* minimal # of devices in set. */ + const enum raid_level level; /* RAID level. */ + const enum raid_algorithm algorithm; /* RAID algorithm. */ +}; + +/* Supported raid types and properties. */ +static struct raid_type raid_types[] = { + {"raid4", "RAID4 (dedicated parity disk)", 1, 3, raid4, none}, + {"raid5_la", "RAID5 (left asymmetric)", 1, 3, raid5, left_asym}, + {"raid5_ra", "RAID5 (right asymmetric)", 1, 3, raid5, right_asym}, + {"raid5_ls", "RAID5 (left symmetric)", 1, 3, raid5, left_sym}, + {"raid5_rs", "RAID5 (right symmetric)", 1, 3, raid5, right_sym}, +}; + +/* Address as calculated by raid_address(). */ +struct raid_address { + sector_t key; /* Hash key (address of stripe % chunk_size). */ + unsigned di, pi; /* Data and parity disks index. */ +}; + +/* REMOVEME: reset statistics counters. */ +static void stats_reset(struct raid_set *rs) +{ + unsigned s = S_NR_STATS; + + while (s--) + atomic_set(rs->stats + s, 0); +} + +/*---------------------------------------------------------------- + * RAID set management routines. + *--------------------------------------------------------------*/ +/* + * Begin small helper functions. + */ +/* No need to be called from region hash indirectly at dm_rh_dec(). */ +static void wake_dummy(void *context) {} + +/* Return # of io reference. */ +static int io_ref(struct raid_set *rs) +{ + return atomic_read(&rs->io.in_process); +} + +/* Get an io reference. */ +static void io_get(struct raid_set *rs) +{ + int p = atomic_inc_return(&rs->io.in_process); + + if (p > atomic_read(&rs->io.in_process_max)) + atomic_set(&rs->io.in_process_max, p); /* REMOVEME: max. */ +} + +/* Put the io reference and conditionally wake io waiters. */ +static void io_put(struct raid_set *rs) +{ + /* Intel: rebuild data corrupter? */ + if (atomic_dec_and_test(&rs->io.in_process)) + wake_up(&rs->io.suspendq); + else + BUG_ON(io_ref(rs) < 0); +} + +/* Wait until all io has been processed. */ +static void wait_ios(struct raid_set *rs) +{ + wait_event(rs->io.suspendq, !io_ref(rs)); +} + +/* Queue (optionally delayed) io work. */ +static void wake_do_raid_delayed(struct raid_set *rs, unsigned long delay) +{ + queue_delayed_work(rs->io.wq, &rs->io.dws_do_raid, delay); +} + +/* Queue io work immediately (called from region hash too). */ +static void wake_do_raid(void *context) +{ + struct raid_set *rs = context; + + queue_work(rs->io.wq, &rs->io.dws_do_raid.work); +} + +/* Calculate device sector offset. */ +static sector_t _sector(struct raid_set *rs, struct bio *bio) +{ + sector_t sector = bio->bi_sector; + + sector_div(sector, rs->set.data_devs); + return sector; +} + +/* Return # of active stripes in stripe cache. */ +static int sc_active(struct stripe_cache *sc) +{ + return atomic_read(&sc->active_stripes); +} + +/* Stripe cache busy indicator. */ +static int sc_busy(struct raid_set *rs) +{ + return sc_active(&rs->sc) > + atomic_read(&rs->sc.stripes) - (STRIPES_MIN / 2); +} + +/* Set chunks states. */ +enum chunk_dirty_type { CLEAN, DIRTY, ERROR }; +static void chunk_set(struct stripe_chunk *chunk, enum chunk_dirty_type type) +{ + switch (type) { + case CLEAN: + ClearChunkDirty(chunk); + break; + case DIRTY: + SetChunkDirty(chunk); + break; + case ERROR: + SetChunkError(chunk); + SetStripeError(chunk->stripe); + return; + default: + BUG(); + } + + SetChunkUptodate(chunk); + SetChunkIo(chunk); + ClearChunkError(chunk); +} + +/* Return region state for a sector. */ +static int region_state(struct raid_set *rs, sector_t sector, + enum dm_rh_region_states state) +{ + struct dm_rh_client *rh = rs->recover.rh; + region_t region = dm_rh_sector_to_region(rh, sector); + + return !!(dm_rh_get_state(rh, region, 1) & state); +} + +/* + * Return true in case a chunk should be read/written + * + * Conditions to read/write: + * o chunk not uptodate + * o chunk dirty + * + * Conditios to avoid io: + * o io already ongoing on chunk + * o io explitely prohibited + */ +static int chunk_io(struct stripe_chunk *chunk) +{ + /* 2nd run optimization (flag set below on first run). */ + if (TestClearChunkMustIo(chunk)) + return 1; + + /* Avoid io if prohibited or a locked chunk. */ + if (!ChunkIo(chunk) || ChunkLocked(chunk)) + return 0; + + if (!ChunkUptodate(chunk) || ChunkDirty(chunk)) { + SetChunkMustIo(chunk); /* 2nd run optimization. */ + return 1; + } + + return 0; +} + +/* Call a function on each chunk needing io unless device failed. */ +static unsigned for_each_io_dev(struct stripe *stripe, + void (*f_io)(struct stripe *stripe, unsigned p)) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p, r = 0; + + for (p = 0; p < rs->set.raid_devs; p++) { + if (chunk_io(CHUNK(stripe, p)) && !DevFailed(rs->dev + p)) { + f_io(stripe, p); + r++; + } + } + + return r; +} + +/* + * Index of device to calculate parity on. + * + * Either the parity device index *or* the selected + * device to init after a spare replacement. + */ +static int dev_for_parity(struct stripe *stripe, int *sync) +{ + struct raid_set *rs = RS(stripe->sc); + int r = region_state(rs, stripe->key, DM_RH_NOSYNC | DM_RH_RECOVERING); + + *sync = !r; + + /* Reconstruct a particular device ?. */ + if (r && rs->set.dev_to_init > -1) + return rs->set.dev_to_init; + else if (rs->set.raid_type->level == raid4) + return rs->set.pi; + else if (!StripeRecover(stripe)) + return stripe->idx.parity; + else + return -1; +} + +/* RAID set congested function. */ +static int rs_congested(void *congested_data, int bdi_bits) +{ + int r; + unsigned p; + struct raid_set *rs = congested_data; + + if (sc_busy(rs) || RSSuspend(rs)) + r = 1; + else for (r = 0, p = rs->set.raid_devs; !r && p--; ) { + /* If any of our component devices are overloaded. */ + struct request_queue *q = bdev_get_queue(rs->dev[p].dev->bdev); + + r |= bdi_congested(&q->backing_dev_info, bdi_bits); + } + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (r ? S_CONGESTED : S_NOT_CONGESTED)); + return r; +} + +/* RAID device degrade check. */ +static void rs_check_degrade_dev(struct raid_set *rs, + struct stripe *stripe, unsigned p) +{ + if (TestSetDevFailed(rs->dev + p)) + return; + + /* Through an event in case of member device errors. */ + if (atomic_inc_return(&rs->set.failed_devs) > + rs->set.raid_type->parity_devs && + !TestSetRSDead(rs)) { + /* Display RAID set dead message once. */ + unsigned p; + char buf[BDEVNAME_SIZE]; + + DMERR("FATAL: too many devices failed -> RAID set broken"); + for (p = 0; p < rs->set.raid_devs; p++) { + if (DevFailed(rs->dev + p)) + DMERR("device /dev/%s failed", + bdevname(rs->dev[p].dev->bdev, buf)); + } + } + + /* Only log the first member error. */ + if (!TestSetRSDegraded(rs)) { + char buf[BDEVNAME_SIZE]; + + /* Store index for recovery. */ + rs->set.ei = p; + DMERR("CRITICAL: %sio error on device /dev/%s " + "in region=%llu; DEGRADING RAID set\n", + stripe ? "" : "FAKED ", + bdevname(rs->dev[p].dev->bdev, buf), + (unsigned long long) (stripe ? stripe->key : 0)); + DMERR("further device error messages suppressed"); + } + + schedule_work(&rs->io.ws_do_table_event); +} + +/* RAID set degrade check. */ +static void rs_check_degrade(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + if (ChunkError(CHUNK(stripe, p))) + rs_check_degrade_dev(rs, stripe, p); + } +} + +/* Lookup a RAID device by name or by major:minor number. */ +static int raid_dev_lookup(struct raid_set *rs, struct raid_dev *dev_lookup) +{ + unsigned p; + struct raid_dev *dev; + + /* + * Must be an incremental loop, because the device array + * can have empty slots still on calls from raid_ctr() + */ + for (dev = rs->dev, p = 0; + dev->dev && p < rs->set.raid_devs; + dev++, p++) { + if (dev_lookup->dev->bdev->bd_dev == dev->dev->bdev->bd_dev) + return p; + } + + return -ENODEV; +} +/* + * End small helper functions. + */ + +/* + * Stripe hash functions + */ +/* Initialize/destroy stripe hash. */ +static int hash_init(struct stripe_hash *hash, unsigned stripes) +{ + unsigned buckets = 2, max_buckets = stripes >> 1; + static unsigned hash_primes[] = { + /* Table of primes for hash_fn/table size optimization. */ + 1, 2, 3, 7, 13, 27, 53, 97, 193, 389, 769, + 1543, 3079, 6151, 12289, 24593, 49157, 98317, + }; + + /* Calculate number of buckets (2^^n <= stripes / 2). */ + while (buckets < max_buckets) + buckets <<= 1; + + /* Allocate stripe hash buckets. */ + hash->hash = vmalloc(buckets * sizeof(*hash->hash)); + if (!hash->hash) + return -ENOMEM; + + hash->buckets = buckets; + hash->mask = buckets - 1; + hash->shift = ffs(buckets); + if (hash->shift > ARRAY_SIZE(hash_primes)) + hash->shift = ARRAY_SIZE(hash_primes) - 1; + + BUG_ON(hash->shift < 2); + hash->prime = hash_primes[hash->shift]; + + /* Initialize buckets. */ + while (buckets--) + INIT_LIST_HEAD(hash->hash + buckets); + return 0; +} + +static void hash_exit(struct stripe_hash *hash) +{ + if (hash->hash) { + vfree(hash->hash); + hash->hash = NULL; + } +} + +static unsigned hash_fn(struct stripe_hash *hash, sector_t key) +{ + return (unsigned) (((key * hash->prime) >> hash->shift) & hash->mask); +} + +static struct list_head *hash_bucket(struct stripe_hash *hash, sector_t key) +{ + return hash->hash + hash_fn(hash, key); +} + +/* Insert an entry into a hash. */ +static void stripe_insert(struct stripe_hash *hash, struct stripe *stripe) +{ + list_add(stripe->lists + LIST_HASH, hash_bucket(hash, stripe->key)); +} + +/* Lookup an entry in the stripe hash. */ +static struct stripe *stripe_lookup(struct stripe_cache *sc, sector_t key) +{ + unsigned look = 0; + struct stripe *stripe; + struct list_head *bucket = hash_bucket(&sc->hash, key); + + list_for_each_entry(stripe, bucket, lists[LIST_HASH]) { + look++; + + if (stripe->key == key) { + /* REMOVEME: statisics. */ + if (look > atomic_read(RS(sc)->stats + S_MAX_LOOKUP)) + atomic_set(RS(sc)->stats + S_MAX_LOOKUP, look); + return stripe; + } + } + + return NULL; +} + +/* Resize the stripe cache hash on size changes. */ +static int sc_hash_resize(struct stripe_cache *sc) +{ + /* Resize indicated ? */ + if (atomic_read(&sc->stripes) != atomic_read(&sc->stripes_last)) { + int r; + struct stripe_hash hash; + + r = hash_init(&hash, atomic_read(&sc->stripes)); + if (r) + return r; + + if (sc->hash.hash) { + unsigned b = sc->hash.buckets; + struct list_head *pos, *tmp; + + /* Walk old buckets and insert into new. */ + while (b--) { + list_for_each_safe(pos, tmp, sc->hash.hash + b) + stripe_insert(&hash, + list_entry(pos, struct stripe, + lists[LIST_HASH])); + } + + } + + hash_exit(&sc->hash); + memcpy(&sc->hash, &hash, sizeof(sc->hash)); + atomic_set(&sc->stripes_last, atomic_read(&sc->stripes)); + } + + return 0; +} +/* End hash stripe hash function. */ + +/* List add, delete, push and pop functions. */ +/* Add stripe to flush list. */ +#define DEL_LIST(lh) \ + if (!list_empty(lh)) \ + list_del_init(lh); + +/* Delete stripe from hash. */ +static void stripe_hash_del(struct stripe *stripe) +{ + DEL_LIST(stripe->lists + LIST_HASH); +} + +/* Return stripe reference count. */ +static inline int stripe_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->cnt); +} + +static void stripe_flush_add(struct stripe *stripe) +{ + struct stripe_cache *sc = stripe->sc; + struct list_head *lh = stripe->lists + LIST_FLUSH; + + if (!StripeReconstruct(stripe) && list_empty(lh)) + list_add_tail(lh, sc->lists + LIST_FLUSH); +} + +/* + * Add stripe to LRU (inactive) list. + * + * Need lock, because of concurrent access from message interface. + */ +static void stripe_lru_add(struct stripe *stripe) +{ + if (!StripeRecover(stripe)) { + unsigned long flags; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + spin_lock_irqsave(lock, flags); + if (list_empty(lh)) + list_add_tail(lh, stripe->sc->lists + LIST_LRU); + spin_unlock_irqrestore(lock, flags); + } +} + +#define POP_LIST(list) \ + do { \ + if (list_empty(sc->lists + (list))) \ + stripe = NULL; \ + else { \ + stripe = list_first_entry(sc->lists + (list), \ + struct stripe, \ + lists[(list)]); \ + list_del_init(stripe->lists + (list)); \ + } \ + } while (0); + +/* Pop an available stripe off the LRU list. */ +static struct stripe *stripe_lru_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_LRU; + + spin_lock_irq(lock); + POP_LIST(LIST_LRU); + spin_unlock_irq(lock); + + return stripe; +} + +/* Pop an available stripe off the io list. */ +static struct stripe *stripe_io_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + + POP_LIST(LIST_FLUSH); + return stripe; +} + +/* Push a stripe safely onto the endio list to be handled by do_endios(). */ +static void stripe_endio_push(struct stripe *stripe) +{ + unsigned long flags; + struct stripe_cache *sc = stripe->sc; + struct list_head *stripe_list = stripe->lists + LIST_ENDIO, + *sc_list = sc->lists + LIST_ENDIO; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with do_endios(). */ + spin_lock_irqsave(lock, flags); + if (list_empty(stripe_list)) + list_add_tail(stripe_list, sc_list); + spin_unlock_irqrestore(lock, flags); + + wake_do_raid(RS(sc)); /* Wake myself. */ +} + +/* Pop a stripe off safely off the endio list. */ +static struct stripe *stripe_endio_pop(struct stripe_cache *sc) +{ + struct stripe *stripe; + spinlock_t *lock = sc->locks + LOCK_ENDIO; + + /* This runs in parallel with endio(). */ + spin_lock_irq(lock); + POP_LIST(LIST_ENDIO) + spin_unlock_irq(lock); + return stripe; +} +#undef POP_LIST + +/* + * Stripe cache locking functions + */ +/* Dummy lock function for single host RAID4+5. */ +static void *no_lock(sector_t key, enum dm_lock_type type) +{ + return &no_lock; +} + +/* Dummy unlock function for single host RAID4+5. */ +static void no_unlock(void *lock_handle) +{ +} + +/* No locking (for single host RAID 4+5). */ +static struct dm_raid45_locking_type locking_none = { + .lock = no_lock, + .unlock = no_unlock, +}; + +/* Lock a stripe (for clustering). */ +static int +stripe_lock(struct stripe *stripe, int rw, sector_t key) +{ + stripe->lock = RS(stripe->sc)->locking->lock(key, rw == READ ? DM_RAID45_SHARED : DM_RAID45_EX); + return stripe->lock ? 0 : -EPERM; +} + +/* Unlock a stripe (for clustering). */ +static void stripe_unlock(struct stripe *stripe) +{ + RS(stripe->sc)->locking->unlock(stripe->lock); + stripe->lock = NULL; +} + +/* Test io pending on stripe. */ +static int stripe_io_ref(struct stripe *stripe) +{ + return atomic_read(&stripe->io.pending); +} + +static void stripe_io_get(struct stripe *stripe) +{ + if (atomic_inc_return(&stripe->io.pending) == 1) + /* REMOVEME: statistics */ + atomic_inc(&stripe->sc->active_stripes); + else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +static void stripe_io_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->io.pending)) { + if (unlikely(StripeRecover(stripe))) + /* Don't put recovery stripe on endio list. */ + wake_do_raid(RS(stripe->sc)); + else + /* Add regular stripe to endio list and wake daemon. */ + stripe_endio_push(stripe); + + /* REMOVEME: statistics */ + atomic_dec(&stripe->sc->active_stripes); + } else + BUG_ON(stripe_io_ref(stripe) < 0); +} + +/* Take stripe reference out. */ +static int stripe_get(struct stripe *stripe) +{ + int r; + struct list_head *lh = stripe->lists + LIST_LRU; + spinlock_t *lock = stripe->sc->locks + LOCK_LRU; + + /* Delete stripe from LRU (inactive) list if on. */ + spin_lock_irq(lock); + DEL_LIST(lh); + spin_unlock_irq(lock); + + BUG_ON(stripe_ref(stripe) < 0); + + /* Lock stripe on first reference */ + r = (atomic_inc_return(&stripe->cnt) == 1) ? + stripe_lock(stripe, WRITE, stripe->key) : 0; + + return r; +} +#undef DEL_LIST + +/* Return references on a chunk. */ +static int chunk_ref(struct stripe_chunk *chunk) +{ + return atomic_read(&chunk->cnt); +} + +/* Take out reference on a chunk. */ +static int chunk_get(struct stripe_chunk *chunk) +{ + return atomic_inc_return(&chunk->cnt); +} + +/* Drop reference on a chunk. */ +static void chunk_put(struct stripe_chunk *chunk) +{ + BUG_ON(atomic_dec_return(&chunk->cnt) < 0); +} + +/* + * Drop reference on a stripe. + * + * Move it to list of LRU stripes if zero. + */ +static void stripe_put(struct stripe *stripe) +{ + if (atomic_dec_and_test(&stripe->cnt)) { + BUG_ON(stripe_io_ref(stripe)); + stripe_unlock(stripe); + } else + BUG_ON(stripe_ref(stripe) < 0); +} + +/* Helper needed by for_each_io_dev(). */ +static void stripe_get_references(struct stripe *stripe, unsigned p) +{ + + /* + * Another one to reference the stripe in + * order to protect vs. LRU list moves. + */ + io_get(RS(stripe->sc)); /* Global io references. */ + stripe_get(stripe); + stripe_io_get(stripe); /* One for each chunk io. */ +} + +/* Helper for endio() to put all take references. */ +static void stripe_put_references(struct stripe *stripe) +{ + stripe_io_put(stripe); /* One for each chunk io. */ + stripe_put(stripe); + io_put(RS(stripe->sc)); +} + +/* + * Stripe cache functions. + */ +/* + * Invalidate all chunks (i.e. their pages) of a stripe. + * + * I only keep state for the whole chunk. + */ +static inline void stripe_chunk_invalidate(struct stripe_chunk *chunk) +{ + chunk->io.flags = 0; +} + +static void +stripe_chunks_invalidate(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + stripe_chunk_invalidate(CHUNK(stripe, p)); +} + +/* Prepare stripe for (re)use. */ +static void stripe_invalidate(struct stripe *stripe) +{ + stripe->io.flags = 0; + stripe->idx.parity = stripe->idx.recover = -1; + stripe_chunks_invalidate(stripe); +} + +/* + * Allow io on all chunks of a stripe. + * If not set, IO will not occur; i.e. it's prohibited. + * + * Actual IO submission for allowed chunks depends + * on their !uptodate or dirty state. + */ +static void stripe_allow_io(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) + SetChunkIo(CHUNK(stripe, p)); +} + +/* Initialize a stripe. */ +static void stripe_init(struct stripe_cache *sc, struct stripe *stripe) +{ + unsigned i, p = RS(sc)->set.raid_devs; + + /* Work all io chunks. */ + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + + atomic_set(&chunk->cnt, 0); + chunk->stripe = stripe; + i = ARRAY_SIZE(chunk->bl); + while (i--) + bio_list_init(chunk->bl + i); + } + + stripe->sc = sc; + + + i = ARRAY_SIZE(stripe->lists); + while (i--) + INIT_LIST_HEAD(stripe->lists + i); + + stripe->io.size = RS(sc)->set.io_size; + atomic_set(&stripe->cnt, 0); + atomic_set(&stripe->io.pending, 0); + stripe_invalidate(stripe); +} + +/* Number of pages per chunk. */ +static inline unsigned chunk_pages(unsigned sectors) +{ + return dm_div_up(sectors, SECTORS_PER_PAGE); +} + +/* Number of pages per stripe. */ +static inline unsigned stripe_pages(struct raid_set *rs, unsigned io_size) +{ + return chunk_pages(io_size) * rs->set.raid_devs; +} + +/* Initialize part of page_list (recovery). */ +static void stripe_zero_pl_part(struct stripe *stripe, int p, + unsigned start, unsigned count) +{ + unsigned o = start / SECTORS_PER_PAGE, pages = chunk_pages(count); + /* Get offset into the page_list. */ + struct page_list *pl = pl_elem(PL(stripe, p), o); + + BUG_ON(!pl); + while (pl && pages--) { + BUG_ON(!pl->page); + memset(page_address(pl->page), 0, PAGE_SIZE); + pl = pl->next; + } +} + +/* Initialize parity chunk of stripe. */ +static void stripe_zero_chunk(struct stripe *stripe, int p) +{ + if (p > -1) + stripe_zero_pl_part(stripe, p, 0, stripe->io.size); +} + +/* Return dynamic stripe structure size. */ +static size_t stripe_size(struct raid_set *rs) +{ + return sizeof(struct stripe) + + rs->set.raid_devs * sizeof(struct stripe_chunk); +} + +/* Allocate a stripe and its memory object. */ +/* XXX adjust to cope with stripe cache and recovery stripe caches. */ +enum grow { SC_GROW, SC_KEEP }; +static struct stripe *stripe_alloc(struct stripe_cache *sc, + struct dm_mem_cache_client *mc, + enum grow grow) +{ + int r; + struct stripe *stripe; + + stripe = kmem_cache_zalloc(sc->kc.cache, GFP_KERNEL); + if (stripe) { + /* Grow the dm-mem-cache by one object. */ + if (grow == SC_GROW) { + r = dm_mem_cache_grow(mc, 1); + if (r) + goto err_free; + } + + stripe->obj = dm_mem_cache_alloc(mc); + if (!stripe->obj) + goto err_shrink; + + stripe_init(sc, stripe); + } + + return stripe; + +err_shrink: + if (grow == SC_GROW) + dm_mem_cache_shrink(mc, 1); +err_free: + kmem_cache_free(sc->kc.cache, stripe); + return NULL; +} + +/* + * Free a stripes memory object, shrink the + * memory cache and free the stripe itself. + */ +static void stripe_free(struct stripe *stripe, struct dm_mem_cache_client *mc) +{ + dm_mem_cache_free(mc, stripe->obj); + dm_mem_cache_shrink(mc, 1); + kmem_cache_free(stripe->sc->kc.cache, stripe); +} + +/* Free the recovery stripe. */ +static void stripe_recover_free(struct raid_set *rs) +{ + struct recover *rec = &rs->recover; + struct dm_mem_cache_client *mc; + + mc = rec->mem_cache_client; + rec->mem_cache_client = NULL; + if (mc) { + struct stripe *stripe; + + while (!list_empty(&rec->stripes)) { + stripe = list_first_entry(&rec->stripes, struct stripe, + lists[LIST_RECOVER]); + list_del(stripe->lists + LIST_RECOVER); + kfree(stripe->recover); + stripe_free(stripe, mc); + } + + dm_mem_cache_client_destroy(mc); + dm_io_client_destroy(rec->dm_io_client); + rec->dm_io_client = NULL; + } +} + +/* Grow stripe cache. */ +static int sc_grow(struct stripe_cache *sc, unsigned stripes, enum grow grow) +{ + int r = 0; + + /* Try to allocate this many (additional) stripes. */ + while (stripes--) { + struct stripe *stripe = + stripe_alloc(sc, sc->mem_cache_client, grow); + + if (likely(stripe)) { + stripe_lru_add(stripe); + atomic_inc(&sc->stripes); + } else { + r = -ENOMEM; + break; + } + } + + return r ? r : sc_hash_resize(sc); +} + +/* Shrink stripe cache. */ +static int sc_shrink(struct stripe_cache *sc, unsigned stripes) +{ + int r = 0; + + /* Try to get unused stripe from LRU list. */ + while (stripes--) { + struct stripe *stripe; + + stripe = stripe_lru_pop(sc); + if (stripe) { + /* An LRU stripe may never have ios pending! */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); + atomic_dec(&sc->stripes); + /* Remove from hash if on before deletion. */ + stripe_hash_del(stripe); + stripe_free(stripe, sc->mem_cache_client); + } else { + r = -ENOENT; + break; + } + } + + /* Check if stats are still sane. */ + if (atomic_read(&sc->active_stripes_max) > + atomic_read(&sc->stripes)) + atomic_set(&sc->active_stripes_max, 0); + + if (r) + return r; + + return atomic_read(&sc->stripes) ? sc_hash_resize(sc) : 0; +} + +/* Create stripe cache and recovery. */ +static int sc_init(struct raid_set *rs, unsigned stripes) +{ + unsigned i, r, rstripes; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + struct recover *rec = &rs->recover; + struct mapped_device *md; + struct gendisk *disk; + + /* Initialize lists and locks. */ + i = ARRAY_SIZE(sc->lists); + while (i--) + INIT_LIST_HEAD(sc->lists + i); + + INIT_LIST_HEAD(&rec->stripes); + + /* Initialize endio and LRU list locks. */ + i = NR_LOCKS; + while (i--) + spin_lock_init(sc->locks + i); + + /* Initialize atomic variables. */ + atomic_set(&sc->stripes, 0); + atomic_set(&sc->stripes_to_set, 0); + atomic_set(&sc->active_stripes, 0); + atomic_set(&sc->active_stripes_max, 0); /* REMOVEME: statistics. */ + + /* + * We need a runtime unique # to suffix the kmem cache name + * because we'll have one for each active RAID set. + */ + md = dm_table_get_md(rs->ti->table); + disk = dm_disk(md); + sprintf(sc->kc.name, "%s-%d", TARGET, disk->first_minor); + dm_put(md); + sc->kc.cache = kmem_cache_create(sc->kc.name, stripe_size(rs), + 0, 0, NULL); + if (!sc->kc.cache) + return -ENOMEM; + + /* Create memory cache client context for RAID stripe cache. */ + sc->mem_cache_client = + dm_mem_cache_client_create(stripes, rs->set.raid_devs, + chunk_pages(rs->set.io_size)); + if (IS_ERR(sc->mem_cache_client)) + return PTR_ERR(sc->mem_cache_client); + + /* Create memory cache client context for RAID recovery stripe(s). */ + rstripes = rec->recovery_stripes; + rec->mem_cache_client = + dm_mem_cache_client_create(rstripes, rs->set.raid_devs, + chunk_pages(rec->io_size)); + if (IS_ERR(rec->mem_cache_client)) + return PTR_ERR(rec->mem_cache_client); + + /* Create dm-io client context for IO stripes. */ + sc->dm_io_client = + dm_io_client_create(); + if (IS_ERR(sc->dm_io_client)) + return PTR_ERR(sc->dm_io_client); + + /* FIXME: intermingeled with stripe cache initialization. */ + /* Create dm-io client context for recovery stripes. */ + rec->dm_io_client = + dm_io_client_create(); + if (IS_ERR(rec->dm_io_client)) + return PTR_ERR(rec->dm_io_client); + + /* Allocate stripes for set recovery. */ + while (rstripes--) { + stripe = stripe_alloc(sc, rec->mem_cache_client, SC_KEEP); + if (!stripe) + return -ENOMEM; + + stripe->recover = kzalloc(sizeof(*stripe->recover), GFP_KERNEL); + if (!stripe->recover) { + stripe_free(stripe, rec->mem_cache_client); + return -ENOMEM; + } + + SetStripeRecover(stripe); + stripe->io.size = rec->io_size; + list_add_tail(stripe->lists + LIST_RECOVER, &rec->stripes); + /* Don't add recovery stripes to LRU list! */ + } + + /* + * Allocate the stripe objetcs from the + * cache and add them to the LRU list. + */ + r = sc_grow(sc, stripes, SC_KEEP); + if (!r) + atomic_set(&sc->stripes_last, stripes); + + return r; +} + +/* Destroy the stripe cache. */ +static void sc_exit(struct stripe_cache *sc) +{ + struct raid_set *rs = RS(sc); + + if (sc->kc.cache) { + stripe_recover_free(rs); + BUG_ON(sc_shrink(sc, atomic_read(&sc->stripes))); + kmem_cache_destroy(sc->kc.cache); + sc->kc.cache = NULL; + + if (sc->mem_cache_client && !IS_ERR(sc->mem_cache_client)) + dm_mem_cache_client_destroy(sc->mem_cache_client); + + if (sc->dm_io_client && !IS_ERR(sc->dm_io_client)) + dm_io_client_destroy(sc->dm_io_client); + + hash_exit(&sc->hash); + } +} + +/* + * Calculate RAID address + * + * Delivers tuple with the index of the data disk holding the chunk + * in the set, the parity disks index and the start of the stripe + * within the address space of the set (used as the stripe cache hash key). + */ +/* thx MD. */ +static struct raid_address *raid_address(struct raid_set *rs, sector_t sector, + struct raid_address *addr) +{ + sector_t stripe, tmp; + + /* + * chunk_number = sector / chunk_size + * stripe_number = chunk_number / data_devs + * di = stripe % data_devs; + */ + stripe = sector >> rs->set.chunk_shift; + addr->di = sector_div(stripe, rs->set.data_devs); + + switch (rs->set.raid_type->level) { + case raid4: + addr->pi = rs->set.pi; + goto check_shift_di; + case raid5: + tmp = stripe; + addr->pi = sector_div(tmp, rs->set.raid_devs); + + switch (rs->set.raid_type->algorithm) { + case left_asym: /* Left asymmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_asym: /* Right asymmetric. */ +check_shift_di: + if (addr->di >= addr->pi) + addr->di++; + break; + case left_sym: /* Left symmetric. */ + addr->pi = rs->set.data_devs - addr->pi; + case right_sym: /* Right symmetric. */ + addr->di = (addr->pi + addr->di + 1) % + rs->set.raid_devs; + break; + case none: /* Ain't happen: RAID4 algorithm placeholder. */ + BUG(); + } + } + + /* + * Start offset of the stripes chunk on any single device of the RAID + * set, adjusted in case io size differs from chunk size. + */ + addr->key = (stripe << rs->set.chunk_shift) + + (sector & rs->set.io_inv_mask); + return addr; +} + +/* + * Copy data across between stripe pages and bio vectors. + * + * Pay attention to data alignment in stripe and bio pages. + */ +static void bio_copy_page_list(int rw, struct stripe *stripe, + struct page_list *pl, struct bio *bio) +{ + unsigned i, page_offset; + void *page_addr; + struct raid_set *rs = RS(stripe->sc); + struct bio_vec *bv; + + /* Get start page in page list for this sector. */ + i = (bio->bi_sector & rs->set.io_mask) / SECTORS_PER_PAGE; + pl = pl_elem(pl, i); + BUG_ON(!pl); + BUG_ON(!pl->page); + + page_addr = page_address(pl->page); + page_offset = to_bytes(bio->bi_sector & (SECTORS_PER_PAGE - 1)); + + /* Walk all segments and copy data across between bio_vecs and pages. */ + bio_for_each_segment(bv, bio, i) { + int len = bv->bv_len, size; + unsigned bio_offset = 0; + void *bio_addr = __bio_kmap_atomic(bio, i, KM_USER0); +redo: + size = (page_offset + len > PAGE_SIZE) ? + PAGE_SIZE - page_offset : len; + + if (rw == READ) + memcpy(bio_addr + bio_offset, + page_addr + page_offset, size); + else + memcpy(page_addr + page_offset, + bio_addr + bio_offset, size); + + page_offset += size; + if (page_offset == PAGE_SIZE) { + /* + * We reached the end of the chunk page -> + * need to refer to the next one to copy more data. + */ + len -= size; + if (len) { + /* Get next page. */ + pl = pl->next; + BUG_ON(!pl); + BUG_ON(!pl->page); + page_addr = page_address(pl->page); + page_offset = 0; + bio_offset += size; + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIO_COPY_PL_NEXT); + goto redo; + } + } + + __bio_kunmap_atomic(bio_addr, KM_USER0); + } +} + +/* + * Xor optimization macros. + */ +/* Xor data pointer declaration and initialization macros. */ +#define DECLARE_2 unsigned long *d0 = data[0], *d1 = data[1] +#define DECLARE_3 DECLARE_2, *d2 = data[2] +#define DECLARE_4 DECLARE_3, *d3 = data[3] +#define DECLARE_5 DECLARE_4, *d4 = data[4] +#define DECLARE_6 DECLARE_5, *d5 = data[5] +#define DECLARE_7 DECLARE_6, *d6 = data[6] +#define DECLARE_8 DECLARE_7, *d7 = data[7] + +/* Xor unrole macros. */ +#define D2(n) d0[n] = d0[n] ^ d1[n] +#define D3(n) D2(n) ^ d2[n] +#define D4(n) D3(n) ^ d3[n] +#define D5(n) D4(n) ^ d4[n] +#define D6(n) D5(n) ^ d5[n] +#define D7(n) D6(n) ^ d6[n] +#define D8(n) D7(n) ^ d7[n] + +#define X_2(macro, offset) macro(offset); macro(offset + 1); +#define X_4(macro, offset) X_2(macro, offset); X_2(macro, offset + 2); +#define X_8(macro, offset) X_4(macro, offset); X_4(macro, offset + 4); +#define X_16(macro, offset) X_8(macro, offset); X_8(macro, offset + 8); +#define X_32(macro, offset) X_16(macro, offset); X_16(macro, offset + 16); +#define X_64(macro, offset) X_32(macro, offset); X_32(macro, offset + 32); + +/* Define a _xor_#chunks_#xors_per_run() function. */ +#define _XOR(chunks, xors_per_run) \ +static void _xor ## chunks ## _ ## xors_per_run(unsigned long **data) \ +{ \ + unsigned end = XOR_SIZE / sizeof(data[0]), i; \ + DECLARE_ ## chunks; \ +\ + for (i = 0; i < end; i += xors_per_run) { \ + X_ ## xors_per_run(D ## chunks, i); \ + } \ +} + +/* Define xor functions for 2 - 8 chunks and xors per run. */ +#define MAKE_XOR_PER_RUN(xors_per_run) \ + _XOR(2, xors_per_run); _XOR(3, xors_per_run); \ + _XOR(4, xors_per_run); _XOR(5, xors_per_run); \ + _XOR(6, xors_per_run); _XOR(7, xors_per_run); \ + _XOR(8, xors_per_run); + +MAKE_XOR_PER_RUN(8) /* Define _xor_*_8() functions. */ +MAKE_XOR_PER_RUN(16) /* Define _xor_*_16() functions. */ +MAKE_XOR_PER_RUN(32) /* Define _xor_*_32() functions. */ +MAKE_XOR_PER_RUN(64) /* Define _xor_*_64() functions. */ + +#define MAKE_XOR(xors_per_run) \ +struct { \ + void (*f)(unsigned long **); \ +} static xor_funcs ## xors_per_run[] = { \ + { NULL }, /* NULL pointers to optimize indexing in xor(). */ \ + { NULL }, \ + { _xor2_ ## xors_per_run }, \ + { _xor3_ ## xors_per_run }, \ + { _xor4_ ## xors_per_run }, \ + { _xor5_ ## xors_per_run }, \ + { _xor6_ ## xors_per_run }, \ + { _xor7_ ## xors_per_run }, \ + { _xor8_ ## xors_per_run }, \ +}; \ +\ +static void xor_ ## xors_per_run(unsigned n, unsigned long **data) \ +{ \ + /* Call respective function for amount of chunks. */ \ + xor_funcs ## xors_per_run[n].f(data); \ +} + +/* Define xor_8() - xor_64 functions. */ +MAKE_XOR(8) +MAKE_XOR(16) +MAKE_XOR(32) +MAKE_XOR(64) + +/* Maximum number of chunks, which can be xor'ed in one go. */ +#define XOR_CHUNKS_MAX (ARRAY_SIZE(xor_funcs8) - 1) + +static void xor_blocks_wrapper(unsigned n, unsigned long **data) +{ + BUG_ON(n < 2 || n > MAX_XOR_BLOCKS + 1); + xor_blocks(n - 1, XOR_SIZE, (void *) data[0], (void **) data + 1); +} + +struct xor_func { + xor_function_t f; + const char *name; +} static xor_funcs[] = { + { xor_8, "xor_8" }, + { xor_16, "xor_16" }, + { xor_32, "xor_32" }, + { xor_64, "xor_64" }, + { xor_blocks_wrapper, "xor_blocks" }, +}; + +/* + * Check, if chunk has to be xored in/out: + * + * o if writes are queued + * o if writes are merged + * o if stripe is to be reconstructed + * o if recovery stripe + */ +static inline int chunk_must_xor(struct stripe_chunk *chunk) +{ + if (ChunkUptodate(chunk)) { + BUG_ON(!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) && + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))); + + if (!bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED)) || + !bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) + return 1; + + if (StripeReconstruct(chunk->stripe) || + StripeRecover(chunk->stripe)) + return 1; + } + + return 0; +} + +/* + * Calculate crc. + * + * This indexes into the chunks of a stripe and their pages. + * + * All chunks will be xored into the indexed (@pi) + * chunk in maximum groups of xor.chunks. + * + */ +static void xor(struct stripe *stripe, unsigned pi, unsigned sector) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned max_chunks = rs->xor.chunks, n = 1, + o = sector / SECTORS_PER_PAGE, /* Offset into the page_list. */ + p = rs->set.raid_devs; + unsigned long **d = rs->data; + xor_function_t xor_f = rs->xor.f->f; + + BUG_ON(sector > stripe->io.size); + + /* Address of parity page to xor into. */ + d[0] = page_address(pl_elem(PL(stripe, pi), o)->page); + + while (p--) { + /* Preset pointers to data pages. */ + if (p != pi && chunk_must_xor(CHUNK(stripe, p))) + d[n++] = page_address(pl_elem(PL(stripe, p), o)->page); + + /* If max chunks -> xor. */ + if (n == max_chunks) { + xor_f(n, d); + n = 1; + } + } + + /* If chunks -> xor. */ + if (n > 1) + xor_f(n, d); +} + +/* Common xor loop through all stripe page lists. */ +static void common_xor(struct stripe *stripe, sector_t count, + unsigned off, unsigned pi) +{ + unsigned sector; + + BUG_ON(!count); + for (sector = off; sector < count; sector += SECTORS_PER_PAGE) + xor(stripe, pi, sector); + + /* Set parity page uptodate and clean. */ + chunk_set(CHUNK(stripe, pi), CLEAN); + atomic_inc(RS(stripe->sc)->stats + S_XORS); /* REMOVEME: statistics. */ +} + +/* + * Calculate parity sectors on intact stripes. + * + * Need to calculate raid address for recover stripe, because its + * chunk sizes differs and is typically larger than io chunk size. + */ +static void parity_xor(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunk_size = rs->set.chunk_size, io_size = stripe->io.size, + xor_size = chunk_size > io_size ? io_size : chunk_size; + sector_t off; + + /* This can be the recover stripe with a larger io size. */ + for (off = 0; off < io_size; off += xor_size) { + /* + * Recover stripe is likely bigger than regular io + * ones and has no precalculated parity disk index -> + * need to calculate RAID address. + */ + if (unlikely(StripeRecover(stripe))) { + struct raid_address addr; + + raid_address(rs, + (stripe->key + off) * rs->set.data_devs, + &addr); + stripe->idx.parity = addr.pi; + stripe_zero_pl_part(stripe, addr.pi, off, xor_size); + } + + common_xor(stripe, xor_size, off, stripe->idx.parity); + chunk_set(CHUNK(stripe, stripe->idx.parity), DIRTY); + } +} + +/* Reconstruct missing chunk. */ +static void stripe_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + int p = rs->set.raid_devs, pr = stripe->idx.recover; + + BUG_ON(pr < 0); + + /* Check if all but the chunk to be reconstructed are uptodate. */ + while (p--) + BUG_ON(p != pr && !ChunkUptodate(CHUNK(stripe, p))); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (RSDegraded(rs) ? S_RECONSTRUCT_EI : + S_RECONSTRUCT_DEV)); + /* Zero chunk to be reconstructed. */ + stripe_zero_chunk(stripe, pr); + common_xor(stripe, stripe->io.size, 0, pr); + stripe->idx.recover = -1; +} + +/* + * Recovery io throttling + */ +/* Conditionally reset io counters. */ +static int recover_io_reset(struct raid_set *rs) +{ + unsigned long j = jiffies; + + /* Pay attention to jiffies overflows. */ + if (j > rs->recover.last_jiffies + HZ / 20 || + j < rs->recover.last_jiffies) { + atomic_set(rs->recover.io_count + IO_WORK, 0); + atomic_set(rs->recover.io_count + IO_RECOVER, 0); + rs->recover.last_jiffies = j; + return 1; + } + + return 0; +} + +/* Count ios. */ +static void recover_io_count(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + recover_io_reset(rs); + atomic_inc(rs->recover.io_count + + (StripeRecover(stripe) ? IO_RECOVER : IO_WORK)); +} + +/* Try getting a stripe either from the hash or from the LRU list. */ +static struct stripe *stripe_find(struct raid_set *rs, + struct raid_address *addr) +{ + int r; + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + + /* Try stripe from hash. */ + stripe = stripe_lookup(sc, addr->key); + if (stripe) { + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + atomic_inc(rs->stats + S_HITS_1ST); /* REMOVEME: statistics. */ + } else { + /* Not in hash -> try to get an LRU stripe. */ + stripe = stripe_lru_pop(sc); + if (stripe) { + /* + * An LRU stripe may not be referenced + * and may never have ios pending! + */ + BUG_ON(stripe_ref(stripe)); + BUG_ON(stripe_io_ref(stripe)); + + /* Remove from hash if on before reuse. */ + stripe_hash_del(stripe); + + /* Invalidate before reinserting with changed key. */ + stripe_invalidate(stripe); + + stripe->key = addr->key; + stripe->region = dm_rh_sector_to_region(rs->recover.rh, + addr->key); + stripe->idx.parity = addr->pi; + r = stripe_get(stripe); + if (r) + goto get_lock_failed; + + /* Insert stripe into the stripe hash. */ + stripe_insert(&sc->hash, stripe); + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_INSCACHE); + } + } + + return stripe; + +get_lock_failed: + stripe_put(stripe); + return NULL; +} + +/* + * Process end io + * + * I need to do it here because I can't in interrupt + */ +/* End io all bios on a bio list. */ +static void bio_list_endio(struct stripe *stripe, struct bio_list *bl, + int p, int error) +{ + struct raid_set *rs = RS(stripe->sc); + struct bio *bio; + struct page_list *pl = PL(stripe, p); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Update region counters. */ + while ((bio = bio_list_pop(bl))) { + if (bio_data_dir(bio) == WRITE) + /* Drop io pending count for any writes. */ + dm_rh_dec(rs->recover.rh, stripe->region); + else if (!error) + /* Copy data accross. */ + bio_copy_page_list(READ, stripe, pl, bio); + + bio_endio(bio, error); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_ENDIO_READ : S_BIOS_ENDIO_WRITE)); + + chunk_put(chunk); + stripe_put(stripe); + io_put(rs); /* Wake any suspend waiters on last bio. */ + } +} + +/* + * End io all reads/writes on a stripe copying + * read data accross from stripe to bios and + * decrementing region counters for writes. + * + * Processing of ios depeding on state: + * o no chunk error -> endio ok + * o degraded: + * - chunk error and read -> ignore to be requeued + * - chunk error and write -> endio ok + * o dead (more than parity_devs failed) and chunk_error-> endio failed + */ +static void stripe_endio(int rw, struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + int write = (rw != READ); + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *bl; + + BUG_ON(ChunkLocked(chunk)); + + bl = BL_CHUNK(chunk, rw); + if (bio_list_empty(bl)) + continue; + + if (unlikely(ChunkError(chunk) || !ChunkUptodate(chunk))) { + /* RAID set dead. */ + if (unlikely(RSDead(rs))) + bio_list_endio(stripe, bl, p, -EIO); + /* RAID set degraded. */ + else if (write) + bio_list_endio(stripe, bl, p, 0); + } else { + BUG_ON(!RSDegraded(rs) && ChunkDirty(chunk)); + bio_list_endio(stripe, bl, p, 0); + } + } +} + +/* Fail all ios hanging off all bio lists of a stripe. */ +static void stripe_fail_io(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned p = rs->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + int i = ARRAY_SIZE(chunk->bl); + + /* Fail all bios on all bio lists of the stripe. */ + while (i--) { + struct bio_list *bl = chunk->bl + i; + + if (!bio_list_empty(bl)) + bio_list_endio(stripe, bl, p, -EIO); + } + } + + /* Put stripe on LRU list. */ + BUG_ON(stripe_io_ref(stripe)); + BUG_ON(stripe_ref(stripe)); +} + +/* Unlock all required chunks. */ +static void stripe_chunks_unlock(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + struct stripe_chunk *chunk; + + while (p--) { + chunk = CHUNK(stripe, p); + + if (TestClearChunkUnlock(chunk)) + ClearChunkLocked(chunk); + } +} + +/* + * Queue reads and writes to a stripe by hanging + * their bios off the stripesets read/write lists. + */ +static int stripe_queue_bio(struct raid_set *rs, struct bio *bio, + struct bio_list *reject) +{ + struct raid_address addr; + struct stripe *stripe; + + stripe = stripe_find(rs, raid_address(rs, bio->bi_sector, &addr)); + if (stripe) { + int r = 0, rw = bio_data_dir(bio); + + /* Distinguish reads and writes. */ + bio_list_add(BL(stripe, addr.di, rw), bio); + + if (rw == READ) + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_READ); + else { + /* Inrement pending write count on region. */ + dm_rh_inc(rs->recover.rh, stripe->region); + r = 1; + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BIOS_ADDED_WRITE); + } + + /* + * Put on io (flush) list in case of + * initial bio queued to chunk. + */ + if (chunk_get(CHUNK(stripe, addr.di)) == 1) + stripe_flush_add(stripe); + + return r; + } + + /* Got no stripe from cache or failed to lock it -> reject bio. */ + bio_list_add(reject, bio); + atomic_inc(rs->stats + S_IOS_POST); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Handle all stripes by handing them to the daemon, because we can't + * map their chunk pages to copy the data in interrupt context. + * + * We don't want to handle them here either, while interrupts are disabled. + */ + +/* Read/write endio function for dm-io (interrupt context). */ +static void endio(unsigned long error, void *context) +{ + struct stripe_chunk *chunk = context; + + if (unlikely(error)) { + chunk_set(chunk, ERROR); + /* REMOVEME: statistics. */ + atomic_inc(RS(chunk->stripe->sc)->stats + S_STRIPE_ERROR); + } else + chunk_set(chunk, CLEAN); + + /* + * For recovery stripes, I need to reset locked locked + * here, because those aren't processed in do_endios(). + */ + if (unlikely(StripeRecover(chunk->stripe))) + ClearChunkLocked(chunk); + else + SetChunkUnlock(chunk); + + /* Indirectly puts stripe on cache's endio list via stripe_io_put(). */ + stripe_put_references(chunk->stripe); +} + +/* Read/Write a chunk asynchronously. */ +static void stripe_chunk_rw(struct stripe *stripe, unsigned p) +{ + struct stripe_cache *sc = stripe->sc; + struct raid_set *rs = RS(sc); + struct dm_mem_cache_object *obj = stripe->obj + p; + struct page_list *pl = obj->pl; + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct raid_dev *dev = rs->dev + p; + struct dm_io_region io = { + .bdev = dev->dev->bdev, + .sector = stripe->key, + .count = stripe->io.size, + }; + struct dm_io_request control = { + .bi_rw = ChunkDirty(chunk) ? WRITE : READ, + .mem = { + .type = DM_IO_PAGE_LIST, + .ptr.pl = pl, + .offset = 0, + }, + .notify = { + .fn = endio, + .context = chunk, + }, + .client = StripeRecover(stripe) ? rs->recover.dm_io_client : + sc->dm_io_client, + }; + + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk) && ChunkDirty(chunk)); + BUG_ON(ChunkUptodate(chunk) && !ChunkDirty(chunk)); + + /* + * Don't rw past end of device, which can happen, because + * typically sectors_per_dev isn't divisible by io_size. + */ + if (unlikely(io.sector + io.count > rs->set.sectors_per_dev)) + io.count = rs->set.sectors_per_dev - io.sector; + + BUG_ON(!io.count); + io.sector += dev->start; /* Add . */ + if (RSRecover(rs)) + recover_io_count(stripe); /* Recovery io accounting. */ + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (ChunkDirty(chunk) ? S_DM_IO_WRITE : + S_DM_IO_READ)); + SetChunkLocked(chunk); + SetDevIoQueued(dev); + BUG_ON(dm_io(&control, 1, &io, NULL)); +} + +/* + * Write dirty or read not uptodate page lists of a stripe. + */ +static int stripe_chunks_rw(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Increment the pending count on the stripe + * first, so that we don't race in endio(). + * + * An inc (IO) is needed for any chunk unless !ChunkIo(chunk): + * + * o not uptodate + * o dirtied by writes merged + * o dirtied by parity calculations + */ + r = for_each_io_dev(stripe, stripe_get_references); + if (r) { + /* Io needed: chunks are either not uptodate or dirty. */ + int max; /* REMOVEME: */ + struct stripe_cache *sc = &rs->sc; + + /* Submit actual io. */ + for_each_io_dev(stripe, stripe_chunk_rw); + + /* REMOVEME: statistics */ + max = sc_active(sc); + if (atomic_read(&sc->active_stripes_max) < max) + atomic_set(&sc->active_stripes_max, max); + + atomic_inc(rs->stats + S_FLUSHS); + /* END REMOVEME: statistics */ + } + + return r; +} + +/* Merge in all writes hence dirtying respective chunks. */ +static void stripe_merge_writes(struct stripe *stripe) +{ + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE_QUEUED); + + if (!bio_list_empty(write)) { + struct bio *bio; + struct page_list *pl = stripe->obj[p].pl; + + /* + * We can play with the lists without holding a lock, + * because it is just us accessing them anyway. + */ + bio_list_for_each(bio, write) + bio_copy_page_list(WRITE, stripe, pl, bio); + + bio_list_merge(BL_CHUNK(chunk, WRITE_MERGED), write); + bio_list_init(write); + chunk_set(chunk, DIRTY); + } + } +} + +/* Queue all writes to get merged. */ +static int stripe_queue_writes(struct stripe *stripe) +{ + int r = 0; + unsigned p = RS(stripe->sc)->set.raid_devs; + + while (p--) { + struct stripe_chunk *chunk = CHUNK(stripe, p); + struct bio_list *write = BL_CHUNK(chunk, WRITE); + + if (!bio_list_empty(write)) { + bio_list_merge(BL_CHUNK(chunk, WRITE_QUEUED), write); + bio_list_init(write); +SetChunkIo(chunk); + r = 1; + } + } + + return r; +} + + +/* Check, if a chunk gets completely overwritten. */ +static int stripe_check_chunk_overwrite(struct stripe *stripe, unsigned p) +{ + unsigned sectors = 0; + struct bio *bio; + struct bio_list *bl = BL(stripe, p, WRITE_QUEUED); + + bio_list_for_each(bio, bl) + sectors += bio_sectors(bio); + + BUG_ON(sectors > RS(stripe->sc)->set.io_size); + return sectors == RS(stripe->sc)->set.io_size; +} + +/* + * Avoid io on broken/reconstructed drive in order to + * reconstruct date on endio. + * + * (*1*) We set StripeReconstruct() in here, so that _do_endios() + * will trigger a reconstruct call before resetting it. + */ +static int stripe_chunk_set_io_flags(struct stripe *stripe, int pr) +{ + struct stripe_chunk *chunk = CHUNK(stripe, pr); + + /* + * Allow io on all chunks but the indexed one, + * because we're either degraded or prohibit it + * on the one for later reconstruction. + */ + /* Includes ClearChunkIo(), ClearChunkUptodate(). */ + stripe_chunk_invalidate(chunk); + stripe->idx.recover = pr; + SetStripeReconstruct(stripe); + + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + return -EPERM; +} + +/* Chunk locked/uptodate and device failed tests. */ +static struct stripe_chunk * +stripe_chunk_check(struct stripe *stripe, unsigned p, unsigned *chunks_uptodate) +{ + struct raid_set *rs = RS(stripe->sc); + struct stripe_chunk *chunk = CHUNK(stripe, p); + + /* Can't access active chunks. */ + if (ChunkLocked(chunk)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_CHUNK_LOCKED); + return NULL; + } + + /* Can't access broken devive. */ + if (ChunkError(chunk) || DevFailed(rs->dev + p)) + return NULL; + + /* Can access uptodate chunks. */ + if (ChunkUptodate(chunk)) { + (*chunks_uptodate)++; + return NULL; + } + + return chunk; +} + +/* + * Degraded/reconstruction mode. + * + * Check stripe state to figure which chunks don't need IO. + * + * Returns 0 for fully operational, -EPERM for degraded/resynchronizing. + */ +static int stripe_check_reconstruct(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + + if (RSDead(rs)) { + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + stripe_allow_io(stripe); + return 0; + } + + /* Avoid further reconstruction setting, when already set. */ + if (StripeReconstruct(stripe)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_RECONSTRUCT_SET); + return -EBUSY; + } + + /* Initially allow io on all chunks. */ + stripe_allow_io(stripe); + + /* Return if stripe is already reconstructed. */ + if (StripeReconstructed(stripe)) { + atomic_inc(rs->stats + S_RECONSTRUCTED); + return 0; + } + + /* + * Degraded/reconstruction mode (device failed) -> + * avoid io on the failed device. + */ + if (unlikely(RSDegraded(rs))) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_DEGRADED); + /* Allow IO on all devices but the dead one. */ + BUG_ON(rs->set.ei < 0); + return stripe_chunk_set_io_flags(stripe, rs->set.ei); + } else { + int sync, pi = dev_for_parity(stripe, &sync); + + /* + * Reconstruction mode (ie. a particular (replaced) device or + * some (rotating) parity chunk is being resynchronized) -> + * o make sure all needed chunks are read in + * o writes are allowed to go through + */ + if (!sync) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NOSYNC); + /* Allow IO on all devs but the one to reconstruct. */ + return stripe_chunk_set_io_flags(stripe, pi); + } + } + + return 0; +} + +/* + * Check, if stripe is ready to merge writes. + * I.e. if all chunks present to allow to merge bios. + * + * We prohibit io on: + * + * o chunks without bios + * o chunks which get completely written over + */ +static int stripe_merge_possible(struct stripe *stripe, int nosync) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned chunks_overwrite = 0, chunks_prohibited = 0, + chunks_uptodate = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk; + + /* Prohibit io on broken devices. */ + if (DevFailed(rs->dev + p)) { + chunk = CHUNK(stripe, p); + goto prohibit_io; + } + + /* We can't optimize any further if no chunk. */ + chunk = stripe_chunk_check(stripe, p, &chunks_uptodate); + if (!chunk || nosync) + continue; + + /* + * We have a chunk, which is not uptodate. + * + * If this is not parity and we don't have + * reads queued, we can optimize further. + */ + if (p != stripe->idx.parity && + bio_list_empty(BL_CHUNK(chunk, READ)) && + bio_list_empty(BL_CHUNK(chunk, WRITE_MERGED))) { + if (bio_list_empty(BL_CHUNK(chunk, WRITE_QUEUED))) + goto prohibit_io; + else if (RSCheckOverwrite(rs) && + stripe_check_chunk_overwrite(stripe, p)) + /* Completely overwritten chunk. */ + chunks_overwrite++; + } + + /* Allow io for chunks with bios and overwritten ones. */ + SetChunkIo(chunk); + continue; + +prohibit_io: + /* No io for broken devices or for chunks w/o bios. */ + ClearChunkIo(chunk); + chunks_prohibited++; + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + + /* All data chunks will get written over. */ + if (chunks_overwrite == rs->set.data_devs) + atomic_inc(rs->stats + S_OVERWRITE); /* REMOVEME: statistics.*/ + else if (chunks_uptodate + chunks_prohibited < rs->set.raid_devs) { + /* We don't have enough chunks to merge. */ + atomic_inc(rs->stats + S_CANT_MERGE); /* REMOVEME: statistics.*/ + return -EPERM; + } + + /* + * If we have all chunks up to date or overwrite them, we + * just zero the parity chunk and let stripe_rw() recreate it. + */ + if (chunks_uptodate == rs->set.raid_devs || + chunks_overwrite == rs->set.data_devs) { + stripe_zero_chunk(stripe, stripe->idx.parity); + BUG_ON(StripeReconstruct(stripe)); + SetStripeReconstruct(stripe); /* Enforce xor in caller. */ + } else { + /* + * With less chunks, we xor parity out. + * + * (*4*) We rely on !StripeReconstruct() in chunk_must_xor(), + * so that only chunks with queued or merged writes + * are being xored. + */ + parity_xor(stripe); + } + + /* + * We do have enough chunks to merge. + * All chunks are uptodate or get written over. + */ + atomic_inc(rs->stats + S_CAN_MERGE); /* REMOVEME: statistics. */ + return 0; +} + +/* + * Avoid reading chunks in case we're fully operational. + * + * We prohibit io on any chunks without bios but the parity chunk. + */ +static void stripe_avoid_reads(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + unsigned dummy = 0, p = rs->set.raid_devs; + + /* Walk all chunks. */ + while (p--) { + struct stripe_chunk *chunk = + stripe_chunk_check(stripe, p, &dummy); + + if (!chunk) + continue; + + /* If parity or any bios pending -> allow io. */ + if (chunk_ref(chunk) || p == stripe->idx.parity) + SetChunkIo(chunk); + else { + ClearChunkIo(chunk); + /* REMOVEME: statistics. */ + atomic_inc(RS(stripe->sc)->stats + S_PROHIBITCHUNKIO); + } + } +} + +/* + * Read/write a stripe. + * + * All stripe read/write activity goes through this function + * unless recovery, which has to call stripe_chunk_rw() directly. + * + * Make sure we don't try already merged stripes in order + * to avoid data corruption. + * + * Check the state of the RAID set and if degraded (or + * resynchronizing for reads), read in all other chunks but + * the one on the dead/resynchronizing device in order to be + * able to reconstruct the missing one in _do_endios(). + * + * Can be called on active stripes in order + * to dispatch new io on inactive chunks. + * + * States to cover: + * o stripe to read and/or write + * o stripe with error to reconstruct + */ +static void stripe_rw(struct stripe *stripe) +{ + int nosync, r; + struct raid_set *rs = RS(stripe->sc); + + /* + * Check, if a chunk needs to be reconstructed + * because of a degraded set or a region out of sync. + */ + nosync = stripe_check_reconstruct(stripe); + switch (nosync) { + case -EBUSY: + return; /* Wait for stripe reconstruction to finish. */ + case -EPERM: + goto io; + } + + /* + * If we don't have merged writes pending, we can schedule + * queued writes to be merged next without corrupting data. + */ + if (!StripeMerged(stripe)) { + r = stripe_queue_writes(stripe); + if (r) + /* Writes got queued -> flag RBW. */ + SetStripeRBW(stripe); + } + + /* + * Merge all writes hanging off uptodate/overwritten + * chunks of the stripe. + */ + if (StripeRBW(stripe)) { + r = stripe_merge_possible(stripe, nosync); + if (!r) { /* Merge possible. */ + struct stripe_chunk *chunk; + + /* + * I rely on valid parity in order + * to xor a fraction of chunks out + * of parity and back in. + */ + stripe_merge_writes(stripe); /* Merge writes in. */ + parity_xor(stripe); /* Update parity. */ + ClearStripeReconstruct(stripe); /* Reset xor enforce. */ + SetStripeMerged(stripe); /* Writes merged. */ + ClearStripeRBW(stripe); /* Disable RBW. */ + + /* + * REMOVEME: sanity check on parity chunk + * states after writes got merged. + */ + chunk = CHUNK(stripe, stripe->idx.parity); + BUG_ON(ChunkLocked(chunk)); + BUG_ON(!ChunkUptodate(chunk)); + BUG_ON(!ChunkDirty(chunk)); + BUG_ON(!ChunkIo(chunk)); + } + } else if (!nosync && !StripeMerged(stripe)) + /* Read avoidance if not degraded/resynchronizing/merged. */ + stripe_avoid_reads(stripe); + +io: + /* Now submit any reads/writes for non-uptodate or dirty chunks. */ + r = stripe_chunks_rw(stripe); + if (!r) { + /* + * No io submitted because of chunk io + * prohibited or locked chunks/failed devices + * -> push to end io list for processing. + */ + stripe_endio_push(stripe); + atomic_inc(rs->stats + S_NO_RW); /* REMOVEME: statistics. */ + } +} + +/* + * Recovery functions + */ +/* Read a stripe off a raid set for recovery. */ +static int stripe_recover_read(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* Invalidate all chunks so that they get read in. */ + stripe_chunks_invalidate(stripe); + stripe_allow_io(stripe); /* Allow io on all recovery chunks. */ + + /* + * If we are reconstructing a perticular device, we can avoid + * reading the respective chunk in, because we're going to + * reconstruct it anyway. + * + * We can't do that for resynchronization of rotating parity, + * because the recovery stripe chunk size is typically larger + * than the sets chunk size. + */ + if (pi > -1) + ClearChunkIo(CHUNK(stripe, pi)); + + return stripe_chunks_rw(stripe); +} + +/* Write a stripe to a raid set for recovery. */ +static int stripe_recover_write(struct stripe *stripe, int pi) +{ + BUG_ON(stripe_io_ref(stripe)); + + /* + * If this is a reconstruct of a particular device, then + * reconstruct the respective chunk, else create parity chunk. + */ + if (pi > -1) { + stripe_zero_chunk(stripe, pi); + common_xor(stripe, stripe->io.size, 0, pi); + chunk_set(CHUNK(stripe, pi), DIRTY); + } else + parity_xor(stripe); + + return stripe_chunks_rw(stripe); +} + +/* Read/write a recovery stripe. */ +static int stripe_recover_rw(struct stripe *stripe) +{ + int r = 0, sync = 0; + + /* Read/write flip-flop. */ + if (TestClearStripeRBW(stripe)) { + SetStripeMerged(stripe); + stripe->key = stripe->recover->pos; + r = stripe_recover_read(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } else if (TestClearStripeMerged(stripe)) { + r = stripe_recover_write(stripe, dev_for_parity(stripe, &sync)); + BUG_ON(!r); + } + + BUG_ON(sync); + return r; +} + +/* Recover bandwidth available ?. */ +static int recover_bandwidth(struct raid_set *rs) +{ + int r, work; + + /* On reset or when bios delayed -> allow recovery. */ + r = recover_io_reset(rs); + if (r || RSBandwidth(rs)) + goto out; + + work = atomic_read(rs->recover.io_count + IO_WORK); + if (work) { + /* Pay attention to larger recover stripe size. */ + int recover = atomic_read(rs->recover.io_count + IO_RECOVER) * + rs->recover.io_size / rs->set.io_size; + + /* + * Don't use more than given bandwidth + * of the work io for recovery. + */ + if (recover > work / rs->recover.bandwidth_work) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_NO_BANDWIDTH); + return 0; + } + } + +out: + atomic_inc(rs->stats + S_BANDWIDTH); /* REMOVEME: statistics. */ + return 1; +} + +/* Try to get a region to recover. */ +static int stripe_recover_get_region(struct stripe *stripe) +{ + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + struct recover_addr *addr = stripe->recover; + struct dm_dirty_log *dl = rec->dl; + struct dm_rh_client *rh = rec->rh; + + BUG_ON(!dl); + BUG_ON(!rh); + + /* Return, that we have region first to finish it during suspension. */ + if (addr->reg) + return 1; + + if (RSSuspend(rs)) + return -EPERM; + + if (dl->type->get_sync_count(dl) >= rec->nr_regions) + return -ENOENT; + + /* If we don't have enough bandwidth, we don't proceed recovering. */ + if (!recover_bandwidth(rs)) + return -EAGAIN; + + /* Start quiescing a region. */ + dm_rh_recovery_prepare(rh); + addr->reg = dm_rh_recovery_start(rh); + if (!addr->reg) + return -EAGAIN; + + addr->pos = dm_rh_region_to_sector(rh, dm_rh_get_region_key(addr->reg)); + addr->end = addr->pos + dm_rh_get_region_size(rh); + + /* + * Take one global io reference out for the + * whole region, which is going to be released + * when the region is completely done with. + */ + io_get(rs); + return 0; +} + +/* Update region hash state. */ +enum recover_type { REC_FAILURE = 0, REC_SUCCESS = 1 }; +static void recover_rh_update(struct stripe *stripe, enum recover_type success) +{ + struct recover_addr *addr = stripe->recover; + struct raid_set *rs = RS(stripe->sc); + struct recover *rec = &rs->recover; + + if (!addr->reg) { + DMERR("%s- Called w/o region", __func__); + return; + } + + dm_rh_recovery_end(addr->reg, success); + if (success) + rec->nr_regions_recovered++; + + addr->reg = NULL; + + /* + * Completely done with this region -> + * release the 1st io reference. + */ + io_put(rs); +} + +/* Set start of recovery state. */ +static void set_start_recovery(struct raid_set *rs) +{ + /* Initialize recovery. */ + rs->recover.start_jiffies = jiffies; + rs->recover.end_jiffies = 0; +} + +/* Set end of recovery state. */ +static void set_end_recovery(struct raid_set *rs) +{ + ClearRSRecover(rs); + rs->set.dev_to_init = -1; + + /* Check for jiffies overrun. */ + rs->recover.end_jiffies = jiffies; + if (rs->recover.end_jiffies < rs->recover.start_jiffies) + rs->recover.end_jiffies = ~0; +} + +/* Handle recovery on one recovery stripe. */ +static int _do_recovery(struct stripe *stripe) +{ + int r; + struct raid_set *rs = RS(stripe->sc); + struct recover_addr *addr = stripe->recover; + + /* If recovery is active -> return. */ + if (stripe_io_ref(stripe)) + return 1; + + /* IO error is fatal for recovery -> stop it. */ + if (unlikely(StripeError(stripe))) + goto err; + + /* Recovery end required. */ + if (!RSRecover(rs)) + goto err; + + /* Get a region to recover. */ + r = stripe_recover_get_region(stripe); + switch (r) { + case 0: /* Got a new region: flag initial read before write. */ + SetStripeRBW(stripe); + case 1: /* Have a region in the works. */ + break; + case -EAGAIN: + /* No bandwidth/quiesced region yet, try later. */ + if (!io_ref(rs)) + wake_do_raid_delayed(rs, HZ / 4); + case -EPERM: + /* Suspend. */ + return 1; + case -ENOENT: /* No more regions to recover. */ + schedule_work(&rs->io.ws_do_table_event); + return 0; + default: + BUG(); + } + + /* Read/write a recover stripe. */ + r = stripe_recover_rw(stripe); + if (r) + /* IO initiated. */ + return 1; + + /* Read and write finished-> update recovery position within region. */ + addr->pos += stripe->io.size; + + /* If we're at end of region, update region hash. */ + if (addr->pos >= addr->end || + addr->pos >= rs->set.sectors_per_dev) + recover_rh_update(stripe, REC_SUCCESS); + else + /* Prepare to read next region segment. */ + SetStripeRBW(stripe); + + /* Schedule myself for another round... */ + wake_do_raid(rs); + return 1; + +err: + /* FIXME: rather try recovering other regions on error? */ + rs_check_degrade(stripe); + recover_rh_update(stripe, REC_FAILURE); + + /* Check state of partially recovered array. */ + if (RSDegraded(rs) && !RSDead(rs) && + rs->set.dev_to_init != -1 && + rs->set.ei != rs->set.dev_to_init) + /* Broken drive != drive to recover -> FATAL. */ + SetRSDead(rs); + + if (StripeError(stripe)) { + char buf[BDEVNAME_SIZE]; + + DMERR("stopping recovery due to " + "ERROR on /dev/%s, stripe at offset %llu", + bdevname(rs->dev[rs->set.ei].dev->bdev, buf), + (unsigned long long) stripe->key); + + } + + /* Make sure, that all quiesced regions get released. */ + while (addr->reg) { + dm_rh_recovery_end(addr->reg, -EIO); + addr->reg = dm_rh_recovery_start(rs->recover.rh); + } + + return 0; +} + +/* Called by main io daemon to recover regions. */ +static void do_recovery(struct raid_set *rs) +{ + if (RSRecover(rs)) { + int r = 0; + struct stripe *stripe; + + list_for_each_entry(stripe, &rs->recover.stripes, + lists[LIST_RECOVER]) + r += _do_recovery(stripe); + + if (!r) { + set_end_recovery(rs); + stripe_recover_free(rs); + } + } +} + +/* + * END recovery functions + */ + +/* End io process all stripes handed in by endio() callback. */ +static void _do_endios(struct raid_set *rs, struct stripe *stripe, + struct list_head *flush_list) +{ + /* First unlock all required chunks. */ + stripe_chunks_unlock(stripe); + + /* + * If an io error on a stripe occured, degrade the RAID set + * and try to endio as many bios as possible. If any bios can't + * be endio processed, requeue the stripe (stripe_ref() != 0). + */ + if (TestClearStripeError(stripe)) { + /* + * FIXME: if read, rewrite the failed chunk after reconstruction + * in order to trigger disk bad sector relocation. + */ + rs_check_degrade(stripe); /* Resets ChunkError(). */ + ClearStripeReconstruct(stripe); + ClearStripeReconstructed(stripe); + } + + /* Got to reconstruct a missing chunk. */ + if (StripeReconstruct(stripe)) { + /* + * (*2*) We use StripeReconstruct() to allow for + * all chunks to be xored into the reconstructed + * one (see chunk_must_xor()). + */ + stripe_reconstruct(stripe); + + /* + * (*3*) Now we reset StripeReconstruct() and flag + * StripeReconstructed() to show to stripe_rw(), + * that we have reconstructed a missing chunk. + */ + ClearStripeReconstruct(stripe); + SetStripeReconstructed(stripe); + + /* FIXME: reschedule to be written in case of read. */ + // if (!StripeRBW(stripe)) { + // chunk_set(CHUNK(stripe, pr), DIRTY); + // stripe_chunks_rw(stripe); + // } + } + + /* + * Now that we eventually got a complete stripe, we + * can process the rest of the end ios on reads. + */ + stripe_endio(READ, stripe); + + /* End io all merged writes. */ + if (TestClearStripeMerged(stripe)) + stripe_endio(WRITE_MERGED, stripe); + + /* If RAID set is dead -> fail any ios to dead drives. */ + if (RSDead(rs)) { + DMERR_LIMIT("RAID set dead: failing ios to dead devices"); + stripe_fail_io(stripe); + } + + /* + * We have stripe references still, + * beacuse of read befeore writes or IO errors -> + * got to put on flush list for processing. + */ + if (stripe_ref(stripe)) { + BUG_ON(!list_empty(stripe->lists + LIST_LRU)); + list_add_tail(stripe->lists + LIST_FLUSH, flush_list); + atomic_inc(rs->stats + S_REQUEUE); /* REMOVEME: statistics. */ + } else + stripe_lru_add(stripe); +} + +/* Pop any endio stripes off of the endio list and belabour them. */ +static void do_endios(struct raid_set *rs) +{ + struct stripe_cache *sc = &rs->sc; + struct stripe *stripe; + /* IO flush list for sorted requeued stripes. */ + struct list_head flush_list; + + INIT_LIST_HEAD(&flush_list); + + while ((stripe = stripe_endio_pop(sc))) { + /* Avoid endio on stripes with newly io'ed chunks. */ + if (!stripe_io_ref(stripe)) + _do_endios(rs, stripe, &flush_list); + } + + /* + * Insert any requeued stripes in the proper + * order at the beginning of the io (flush) list. + */ + list_splice(&flush_list, sc->lists + LIST_FLUSH); +} + +/* Flush any stripes on the io list. */ +static void do_flush(struct raid_set *rs) +{ + struct stripe *stripe; + + while ((stripe = stripe_io_pop(&rs->sc))) + stripe_rw(stripe); /* Read/write stripe. */ +} + +/* Stripe cache resizing. */ +static void do_sc_resize(struct raid_set *rs) +{ + unsigned set = atomic_read(&rs->sc.stripes_to_set); + + if (set) { + unsigned cur = atomic_read(&rs->sc.stripes); + int r = (set > cur) ? sc_grow(&rs->sc, set - cur, SC_GROW) : + sc_shrink(&rs->sc, cur - set); + + /* Flag end of resizeing if ok. */ + if (!r) + atomic_set(&rs->sc.stripes_to_set, 0); + } +} + +/* + * Process all ios + * + * We do different things with the io depending + * on the state of the region that it is in: + * + * o reads: hang off stripe cache or postpone if full + * + * o writes: + * + * CLEAN/DIRTY/NOSYNC: increment pending and hang io off stripe's stripe set. + * In case stripe cache is full or busy, postpone the io. + * + * RECOVERING: delay the io until recovery of the region completes. + * + */ +static void do_ios(struct raid_set *rs, struct bio_list *ios) +{ + int r; + unsigned flush = 0, delay = 0; + sector_t sector; + struct dm_rh_client *rh = rs->recover.rh; + struct bio *bio; + struct bio_list reject; + + bio_list_init(&reject); + + /* + * Classify each io: + * o delay writes to recovering regions (let reads go through) + * o queue io to all other regions + */ + while ((bio = bio_list_pop(ios))) { + /* + * In case we get a barrier bio, push it back onto + * the input queue unless all work queues are empty + * and the stripe cache is inactive. + */ + if (unlikely(bio->bi_rw & REQ_FLUSH)) { + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + S_BARRIER); + if (delay || + !list_empty(rs->sc.lists + LIST_FLUSH) || + !bio_list_empty(&reject) || + sc_active(&rs->sc)) { + bio_list_push(ios, bio); + break; + } + } + + /* Check for recovering regions. */ + sector = _sector(rs, bio); + r = region_state(rs, sector, DM_RH_RECOVERING); + if (unlikely(r && bio_data_dir(bio) == WRITE)) { + delay++; + /* Wait writing to recovering regions. */ + dm_rh_delay_by_region(rh, bio, + dm_rh_sector_to_region(rh, + sector)); + /* REMOVEME: statistics.*/ + atomic_inc(rs->stats + S_DELAYED_BIOS); + atomic_inc(rs->stats + S_SUM_DELAYED_BIOS); + + /* Force bandwidth tests in recovery. */ + SetRSBandwidth(rs); + } else { + /* + * Process ios to non-recovering regions by queueing + * them to stripes (does dm_rh_inc()) for writes). + */ + flush += stripe_queue_bio(rs, bio, &reject); + } + } + + if (flush) { + /* FIXME: better error handling. */ + r = dm_rh_flush(rh); /* Writes got queued -> flush dirty log. */ + if (r) + DMERR_LIMIT("dirty log flush"); + } + + /* Merge any rejected bios back to the head of the input list. */ + bio_list_merge_head(ios, &reject); +} + +/* Send an event in case we're getting too busy. */ +static void do_busy_event(struct raid_set *rs) +{ + if (sc_busy(rs)) { + if (!TestSetRSScBusy(rs)) + schedule_work(&rs->io.ws_do_table_event); + } + + ClearRSScBusy(rs); +} + +/* Throw an event. */ +static void do_table_event(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.ws_do_table_event); + dm_table_event(rs->ti->table); +} + + +/*----------------------------------------------------------------- + * RAID daemon + *---------------------------------------------------------------*/ +/* + * o belabour all end ios + * o update the region hash states + * o optionally shrink the stripe cache + * o optionally do recovery + * o unplug any component raid devices with queued bios + * o grab the input queue + * o work an all requeued or new ios and perform stripe cache flushs + * o unplug any component raid devices with queued bios + * o check, if the stripe cache gets too busy and throw an event if so + */ +static void do_raid(struct work_struct *ws) +{ + struct raid_set *rs = container_of(ws, struct raid_set, + io.dws_do_raid.work); + struct bio_list *ios = &rs->io.work, *ios_in = &rs->io.in; + struct blk_plug plug; + + /* + * We always need to end io, so that ios can get errored in + * case the set failed and the region counters get decremented + * before we update region hash states and go any further. + */ + do_endios(rs); + dm_rh_update_states(rs->recover.rh, 1); + + /* + * Now that we've end io'd, which may have put stripes on the LRU list + * to allow for shrinking, we resize the stripe cache if requested. + */ + do_sc_resize(rs); + + /* Try to recover regions. */ + blk_start_plug(&plug); + do_recovery(rs); + blk_finish_plug(&plug); /* Unplug the queue */ + + /* Quickly grab all new ios queued and add them to the work list. */ + mutex_lock(&rs->io.in_lock); + bio_list_merge(ios, ios_in); + bio_list_init(ios_in); + mutex_unlock(&rs->io.in_lock); + + blk_start_plug(&plug); + if (!bio_list_empty(ios)) + do_ios(rs, ios); /* Got ios to work into the cache. */ + + do_flush(rs); /* Flush any stripes on io list. */ + blk_finish_plug(&plug); /* Unplug the queue */ + do_busy_event(rs); /* Check if we got too busy. */ +} + +/* + * Callback for region hash to dispatch + * delayed bios queued to recovered regions + * (gets called via dm_rh_update_states()). + */ +static void dispatch_delayed_bios(void *context, struct bio_list *bl) +{ + struct raid_set *rs = context; + struct bio *bio; + + /* REMOVEME: statistics; decrement pending delayed bios counter. */ + bio_list_for_each(bio, bl) + atomic_dec(rs->stats + S_DELAYED_BIOS); + + /* Merge region hash private list to work list. */ + bio_list_merge_head(&rs->io.work, bl); + bio_list_init(bl); + ClearRSBandwidth(rs); +} + +/************************************************************* + * Constructor helpers + *************************************************************/ +/* Calculate MB/sec. */ +static unsigned mbpers(struct raid_set *rs, unsigned speed) +{ + return to_bytes(speed * rs->set.data_devs * + rs->recover.io_size * HZ >> 10) >> 10; +} + +/* + * Discover fastest xor algorithm and # of chunks combination. + */ +/* Calculate speed for algorithm and # of chunks. */ +static unsigned xor_speed(struct stripe *stripe) +{ + unsigned r = 0; + unsigned long j; + + /* Wait for next tick. */ + for (j = jiffies; j == jiffies; ) + ; + + /* Do xors for a full tick. */ + for (j = jiffies; j == jiffies; ) { + mb(); + common_xor(stripe, stripe->io.size, 0, 0); + mb(); + r++; + } + + return r; +} + +/* Optimize xor algorithm for this RAID set. */ +static unsigned xor_optimize(struct raid_set *rs) +{ + unsigned chunks_max = 2, p = rs->set.raid_devs, speed_max = 0; + struct xor_func *f = ARRAY_END(xor_funcs), *f_max = NULL; + struct stripe *stripe; + + BUG_ON(list_empty(&rs->recover.stripes)); + stripe = list_first_entry(&rs->recover.stripes, struct stripe, + lists[LIST_RECOVER]); + + /* Must set uptodate so that xor() will belabour chunks. */ + while (p--) + SetChunkUptodate(CHUNK(stripe, p)); + + /* Try all xor functions. */ + while (f-- > xor_funcs) { + unsigned speed; + + /* Set actual xor function for common_xor(). */ + rs->xor.f = f; + rs->xor.chunks = (f->f == xor_blocks_wrapper ? + (MAX_XOR_BLOCKS + 1) : XOR_CHUNKS_MAX) + 1; + + while (rs->xor.chunks-- > 2) { + speed = xor_speed(stripe); + if (speed > speed_max) { + speed_max = speed; + chunks_max = rs->xor.chunks; + f_max = f; + } + } + } + + /* Memorize optimum parameters. */ + rs->xor.f = f_max; + rs->xor.chunks = chunks_max; + return speed_max; +} + +/* + * Allocate a RAID context (a RAID set) + */ +/* Structure for variable RAID parameters. */ +struct variable_parms { + int bandwidth; + int bandwidth_parm; + int chunk_size; + int chunk_size_parm; + int io_size; + int io_size_parm; + int stripes; + int stripes_parm; + int recover_io_size; + int recover_io_size_parm; + int raid_parms; + int recovery; + int recovery_stripes; + int recovery_stripes_parm; +}; + +static struct raid_set * +context_alloc(struct raid_type *raid_type, struct variable_parms *p, + unsigned raid_devs, sector_t sectors_per_dev, + struct dm_target *ti, unsigned dl_parms, char **argv) +{ + int r; + size_t len; + sector_t region_size, ti_len; + struct raid_set *rs = NULL; + struct dm_dirty_log *dl; + struct recover *rec; + + /* + * Create the dirty log + * + * We need to change length for the dirty log constructor, + * because we want an amount of regions for all stripes derived + * from the single device size, so that we can keep region + * size = 2^^n independant of the number of devices + */ + ti_len = ti->len; + ti->len = sectors_per_dev; + dl = dm_dirty_log_create(argv[0], ti, NULL, dl_parms, argv + 2); + ti->len = ti_len; + if (!dl) + goto bad_dirty_log; + + /* Chunk size *must* be smaller than region size. */ + region_size = dl->type->get_region_size(dl); + if (p->chunk_size > region_size) + goto bad_chunk_size; + + /* Recover io size *must* be smaller than region size as well. */ + if (p->recover_io_size > region_size) + goto bad_recover_io_size; + + /* Size and allocate the RAID set structure. */ + len = sizeof(*rs->data) + sizeof(*rs->dev); + if (dm_array_too_big(sizeof(*rs), len, raid_devs)) + goto bad_array; + + len = sizeof(*rs) + raid_devs * len; + rs = kzalloc(len, GFP_KERNEL); + if (!rs) + goto bad_alloc; + + rec = &rs->recover; + atomic_set(&rs->io.in_process, 0); + atomic_set(&rs->io.in_process_max, 0); + rec->io_size = p->recover_io_size; + + /* Pointer to data array. */ + rs->data = (unsigned long **) + ((void *) rs->dev + raid_devs * sizeof(*rs->dev)); + rec->dl = dl; + rs->set.raid_devs = raid_devs; + rs->set.data_devs = raid_devs - raid_type->parity_devs; + rs->set.raid_type = raid_type; + + rs->set.raid_parms = p->raid_parms; + rs->set.chunk_size_parm = p->chunk_size_parm; + rs->set.io_size_parm = p->io_size_parm; + rs->sc.stripes_parm = p->stripes_parm; + rec->io_size_parm = p->recover_io_size_parm; + rec->bandwidth_parm = p->bandwidth_parm; + rec->recovery = p->recovery; + rec->recovery_stripes = p->recovery_stripes; + + /* + * Set chunk and io size and respective shifts + * (used to avoid divisions) + */ + rs->set.chunk_size = p->chunk_size; + rs->set.chunk_shift = ffs(p->chunk_size) - 1; + + rs->set.io_size = p->io_size; + rs->set.io_mask = p->io_size - 1; + /* Mask to adjust address key in case io_size != chunk_size. */ + rs->set.io_inv_mask = (p->chunk_size - 1) & ~rs->set.io_mask; + + rs->set.sectors_per_dev = sectors_per_dev; + + rs->set.ei = -1; /* Indicate no failed device. */ + atomic_set(&rs->set.failed_devs, 0); + + rs->ti = ti; + + atomic_set(rec->io_count + IO_WORK, 0); + atomic_set(rec->io_count + IO_RECOVER, 0); + + /* Initialize io lock and queues. */ + mutex_init(&rs->io.in_lock); + bio_list_init(&rs->io.in); + bio_list_init(&rs->io.work); + + init_waitqueue_head(&rs->io.suspendq); /* Suspend waiters (dm-io). */ + + rec->nr_regions = dm_sector_div_up(sectors_per_dev, region_size); + rec->rh = dm_region_hash_create(rs, dispatch_delayed_bios, + wake_dummy, wake_do_raid, 0, p->recovery_stripes, + dl, region_size, rec->nr_regions); + if (IS_ERR(rec->rh)) + goto bad_rh; + + /* Initialize stripe cache. */ + r = sc_init(rs, p->stripes); + if (r) + goto bad_sc; + + /* REMOVEME: statistics. */ + stats_reset(rs); + ClearRSDevelStats(rs); /* Disnable development status. */ + return rs; + +bad_dirty_log: + TI_ERR_RET("Error creating dirty log", ERR_PTR(-ENOMEM)); + +bad_chunk_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Chunk size larger than region size", ERR_PTR(-EINVAL)); + +bad_recover_io_size: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Recover stripe io size larger than region size", + ERR_PTR(-EINVAL)); + +bad_array: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Arry too big", ERR_PTR(-EINVAL)); + +bad_alloc: + dm_dirty_log_destroy(dl); + TI_ERR_RET("Cannot allocate raid context", ERR_PTR(-ENOMEM)); + +bad_rh: + dm_dirty_log_destroy(dl); + ti->error = DM_MSG_PREFIX "Error creating dirty region hash"; + goto free_rs; + +bad_sc: + dm_region_hash_destroy(rec->rh); /* Destroys dirty log too. */ + sc_exit(&rs->sc); + ti->error = DM_MSG_PREFIX "Error creating stripe cache"; +free_rs: + kfree(rs); + return ERR_PTR(-ENOMEM); +} + +/* Free a RAID context (a RAID set). */ +static void context_free(struct raid_set *rs, unsigned p) +{ + while (p--) + dm_put_device(rs->ti, rs->dev[p].dev); + + sc_exit(&rs->sc); + dm_region_hash_destroy(rs->recover.rh); /* Destroys dirty log too. */ + kfree(rs); +} + +/* Create work queue and initialize delayed work. */ +static int rs_workqueue_init(struct raid_set *rs) +{ + struct dm_target *ti = rs->ti; + + rs->io.wq = create_singlethread_workqueue(DAEMON); + if (!rs->io.wq) + TI_ERR_RET("failed to create " DAEMON, -ENOMEM); + + INIT_DELAYED_WORK(&rs->io.dws_do_raid, do_raid); + INIT_WORK(&rs->io.ws_do_table_event, do_table_event); + return 0; +} + +/* Return pointer to raid_type structure for raid name. */ +static struct raid_type *get_raid_type(char *name) +{ + struct raid_type *r = ARRAY_END(raid_types); + + while (r-- > raid_types) { + if (!strcmp(r->name, name)) + return r; + } + + return NULL; +} + +/* FIXME: factor out to dm core. */ +static int multiple(sector_t a, sector_t b, sector_t *n) +{ + sector_t r = a; + + sector_div(r, b); + *n = r; + return a == r * b; +} + +/* Log RAID set information to kernel log. */ +static void rs_log(struct raid_set *rs, unsigned speed) +{ + unsigned p; + char buf[BDEVNAME_SIZE]; + + for (p = 0; p < rs->set.raid_devs; p++) + DMINFO("/dev/%s is raid disk %u%s", + bdevname(rs->dev[p].dev->bdev, buf), p, + (p == rs->set.pi) ? " (parity)" : ""); + + DMINFO("%d/%d/%d sectors chunk/io/recovery size, %u stripes\n" + "algorithm \"%s\", %u chunks with %uMB/s\n" + "%s set with net %u/%u devices", + rs->set.chunk_size, rs->set.io_size, rs->recover.io_size, + atomic_read(&rs->sc.stripes), + rs->xor.f->name, rs->xor.chunks, mbpers(rs, speed), + rs->set.raid_type->descr, rs->set.data_devs, rs->set.raid_devs); +} + +/* Get all devices and offsets. */ +static int dev_parms(struct raid_set *rs, char **argv, int *p) +{ + struct dm_target *ti = rs->ti; + + for (*p = 0; *p < rs->set.raid_devs; (*p)++, argv += 2) { + int r; + unsigned long long tmp; + struct raid_dev *dev = rs->dev + *p; + + /* Get offset and device. */ + if (sscanf(argv[1], "%llu", &tmp) != 1 || + tmp > rs->set.sectors_per_dev) + TI_ERR("Invalid RAID device offset parameter"); + + dev->start = tmp; + r = dm_get_device(ti, *argv, dm_table_get_mode(ti->table), &dev->dev); + if (r) + TI_ERR_RET("RAID device lookup failure", r); + + r = raid_dev_lookup(rs, dev); + if (r != -ENODEV && r < *p) { + (*p)++; /* Ensure dm_put_device() on actual device. */ + TI_ERR_RET("Duplicate RAID device", -ENXIO); + } + } + + return 0; +} + +/* Set recovery bandwidth. */ +static void +recover_set_bandwidth(struct raid_set *rs, unsigned bandwidth) +{ + rs->recover.bandwidth = bandwidth; + rs->recover.bandwidth_work = 100 / bandwidth; +} + +/* Handle variable number of RAID parameters. */ +static int get_raid_variable_parms(struct dm_target *ti, char **argv, + struct variable_parms *vp) +{ + int p, value; + struct { + int action; /* -1: skip, 0: no pwer2 check, 1: power2 check */ + char *errmsg; + int min, max; + int *var, *var2, *var3; + } argctr[] = { + { 1, + "Invalid chunk size; must be -1 or 2^^n and <= 16384", + IO_SIZE_MIN, CHUNK_SIZE_MAX, + &vp->chunk_size_parm, &vp->chunk_size, &vp->io_size }, + { 0, + "Invalid number of stripes: must be -1 or >= 8 and <= 16384", + STRIPES_MIN, STRIPES_MAX, + &vp->stripes_parm, &vp->stripes, NULL }, + { 1, + "Invalid io size; must -1 or >= 8, 2^^n and less equal " + "min(BIO_MAX_SECTORS/2, chunk size)", + IO_SIZE_MIN, 0, /* Needs to be updated in loop below. */ + &vp->io_size_parm, &vp->io_size, NULL }, + { 1, + "Invalid recovery io size; must be -1 or " + "2^^n and less equal BIO_MAX_SECTORS/2", + RECOVER_IO_SIZE_MIN, BIO_MAX_SECTORS / 2, + &vp->recover_io_size_parm, &vp->recover_io_size, NULL }, + { 0, + "Invalid recovery bandwidth percentage; " + "must be -1 or > 0 and <= 100", + BANDWIDTH_MIN, BANDWIDTH_MAX, + &vp->bandwidth_parm, &vp->bandwidth, NULL }, + /* Handle sync argument seperately in loop. */ + { -1, + "Invalid recovery switch; must be \"sync\" or \"nosync\"" }, + { 0, + "Invalid number of recovery stripes;" + "must be -1, > 0 and <= 16384", + RECOVERY_STRIPES_MIN, RECOVERY_STRIPES_MAX, + &vp->recovery_stripes_parm, &vp->recovery_stripes, NULL }, + }, *varp; + + /* Fetch # of variable raid parameters. */ + if (sscanf(*(argv++), "%d", &vp->raid_parms) != 1 || + !range_ok(vp->raid_parms, 0, 7)) + TI_ERR("Bad variable raid parameters number"); + + /* Preset variable RAID parameters. */ + vp->chunk_size = CHUNK_SIZE_DEFAULT; + vp->io_size = IO_SIZE_DEFAULT; + vp->stripes = STRIPES_DEFAULT; + vp->recover_io_size = RECOVER_IO_SIZE_DEFAULT; + vp->bandwidth = BANDWIDTH_DEFAULT; + vp->recovery = 1; + vp->recovery_stripes = RECOVERY_STRIPES_DEFAULT; + + /* Walk the array of argument constraints for all given ones. */ + for (p = 0, varp = argctr; p < vp->raid_parms; p++, varp++) { + BUG_ON(varp >= ARRAY_END(argctr)); + + /* Special case for "[no]sync" string argument. */ + if (varp->action < 0) { + if (!strcmp(*argv, "sync")) + ; + else if (!strcmp(*argv, "nosync")) + vp->recovery = 0; + else + TI_ERR(varp->errmsg); + + argv++; + continue; + } + + /* + * Special case for io_size depending + * on previously set chunk size. + */ + if (p == 2) + varp->max = min(BIO_MAX_SECTORS / 2, vp->chunk_size); + + if (sscanf(*(argv++), "%d", &value) != 1 || + (value != -1 && + ((varp->action && !POWER_OF_2(value)) || + !range_ok(value, varp->min, varp->max)))) + TI_ERR(varp->errmsg); + + *varp->var = value; + if (value != -1) { + if (varp->var2) + *varp->var2 = value; + if (varp->var3) + *varp->var3 = value; + } + } + + return 0; +} + +/* Parse optional locking parameters. */ +static int get_raid_locking_parms(struct dm_target *ti, char **argv, + int *locking_parms, + struct dm_raid45_locking_type **locking_type) +{ + if (!strnicmp(argv[0], "locking", strlen(argv[0]))) { + char *lckstr = argv[1]; + size_t lcksz = strlen(lckstr); + + if (!strnicmp(lckstr, "none", lcksz)) { + *locking_type = &locking_none; + *locking_parms = 2; + } else if (!strnicmp(lckstr, "cluster", lcksz)) { + DMERR("locking type \"%s\" not yet implemented", + lckstr); + return -EINVAL; + } else { + DMERR("unknown locking type \"%s\"", lckstr); + return -EINVAL; + } + } + + *locking_parms = 0; + *locking_type = &locking_none; + return 0; +} + +/* Set backing device read ahead properties of RAID set. */ +static void rs_set_read_ahead(struct raid_set *rs, + unsigned sectors, unsigned stripes) +{ + unsigned ra_pages = dm_div_up(sectors, SECTORS_PER_PAGE); + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set read-ahead for the RAID set and the component devices. */ + if (ra_pages) { + unsigned p = rs->set.raid_devs; + + bdi->ra_pages = stripes * ra_pages * rs->set.data_devs; + + while (p--) { + struct request_queue *q = + bdev_get_queue(rs->dev[p].dev->bdev); + + q->backing_dev_info.ra_pages = ra_pages; + } + } + + dm_put(md); +} + +/* Set congested function. */ +static void rs_set_congested_fn(struct raid_set *rs) +{ + struct mapped_device *md = dm_table_get_md(rs->ti->table); + struct backing_dev_info *bdi = &dm_disk(md)->queue->backing_dev_info; + + /* Set congested function and data. */ + bdi->congested_fn = rs_congested; + bdi->congested_data = rs; + dm_put(md); +} + +/* + * Construct a RAID4/5 mapping: + * + * log_type #log_params \ + * raid_type [#parity_dev] #raid_variable_params \ + * [locking "none"/"cluster"] + * #raid_devs #dev_to_initialize [ ]{3,} + * + * log_type = "core"/"disk", + * #log_params = 1-3 (1-2 for core dirty log type, 3 for disk dirty log only) + * log_params = [dirty_log_path] region_size [[no]sync]) + * + * raid_type = "raid4", "raid5_la", "raid5_ra", "raid5_ls", "raid5_rs" + * + * #parity_dev = N if raid_type = "raid4" + * o N = -1: pick default = last device + * o N >= 0 and < #raid_devs: parity device index + * + * #raid_variable_params = 0-7; raid_params (-1 = default): + * [chunk_size [#stripes [io_size [recover_io_size \ + * [%recovery_bandwidth [recovery_switch [#recovery_stripes]]]]]]] + * o chunk_size (unit to calculate drive addresses; must be 2^^n, > 8 + * and <= CHUNK_SIZE_MAX) + * o #stripes is number of stripes allocated to stripe cache + * (must be > 1 and < STRIPES_MAX) + * o io_size (io unit size per device in sectors; must be 2^^n and > 8) + * o recover_io_size (io unit size per device for recovery in sectors; + must be 2^^n, > SECTORS_PER_PAGE and <= region_size) + * o %recovery_bandwith is the maximum amount spend for recovery during + * application io (1-100%) + * o recovery switch = [sync|nosync] + * o #recovery_stripes is the number of recovery stripes used for + * parallel recovery of the RAID set + * If raid_variable_params = 0, defaults will be used. + * Any raid_variable_param can be set to -1 to apply a default + * + * #raid_devs = N (N >= 3) + * + * #dev_to_initialize = N + * -1: initialize parity on all devices + * >= 0 and < #raid_devs: initialize raid_path; used to force reconstruction + * of a failed devices content after replacement + * + * = device_path (eg, /dev/sdd1) + * = begin at offset on + * + */ +#define MIN_PARMS 13 +static int raid_ctr(struct dm_target *ti, unsigned argc, char **argv) +{ + int dev_to_init, dl_parms, i, locking_parms, + parity_parm, pi = -1, r, raid_devs; + unsigned speed; + sector_t tmp, sectors_per_dev; + struct dm_raid45_locking_type *locking; + struct raid_set *rs; + struct raid_type *raid_type; + struct variable_parms parms; + + /* Ensure minimum number of parameters. */ + if (argc < MIN_PARMS) + TI_ERR("Not enough parameters"); + + /* Fetch # of dirty log parameters. */ + if (sscanf(argv[1], "%d", &dl_parms) != 1 || + !range_ok(dl_parms, 1, 4711)) /* ;-) */ + TI_ERR("Bad dirty log parameters number"); + + /* Check raid_type. */ + raid_type = get_raid_type(argv[dl_parms + 2]); + if (!raid_type) + TI_ERR("Bad raid type"); + + /* In case of RAID4, parity drive is selectable. */ + parity_parm = !!(raid_type->level == raid4); + + /* Handle variable number of RAID parameters. */ + r = get_raid_variable_parms(ti, argv + dl_parms + parity_parm + 3, + &parms); + if (r) + return r; + + /* Handle any locking parameters. */ + r = get_raid_locking_parms(ti, + argv + dl_parms + parity_parm + + parms.raid_parms + 4, + &locking_parms, &locking); + if (r) + return r; + + /* # of raid devices. */ + i = dl_parms + parity_parm + parms.raid_parms + locking_parms + 4; + if (sscanf(argv[i], "%d", &raid_devs) != 1 || + raid_devs < raid_type->minimal_devs) + TI_ERR("Invalid number of raid devices"); + + /* In case of RAID4, check parity drive index is in limits. */ + if (raid_type->level == raid4) { + /* Fetch index of parity device. */ + if (sscanf(argv[dl_parms + 3], "%d", &pi) != 1 || + (pi != -1 && !range_ok(pi, 0, raid_devs - 1))) + TI_ERR("Invalid RAID4 parity device index"); + } + + /* + * Index of device to initialize starts at 0 + * + * o -1 -> don't initialize a selected device; + * initialize parity conforming to algorithm + * o 0..raid_devs-1 -> initialize respective device + * (used for reconstruction of a replaced device) + */ + if (sscanf(argv[dl_parms + parity_parm + parms.raid_parms + + locking_parms + 5], "%d", &dev_to_init) != 1 || + !range_ok(dev_to_init, -1, raid_devs - 1)) + TI_ERR("Invalid number for raid device to initialize"); + + /* Check # of raid device arguments. */ + if (argc - dl_parms - parity_parm - parms.raid_parms - 6 != + 2 * raid_devs) + TI_ERR("Wrong number of raid device/offset arguments"); + + /* + * Check that the table length is devisable + * w/o rest by (raid_devs - parity_devs) + */ + if (!multiple(ti->len, raid_devs - raid_type->parity_devs, + §ors_per_dev)) + TI_ERR("Target length not divisible by number of data devices"); + + /* + * Check that the device size is + * devisable w/o rest by chunk size + */ + if (!multiple(sectors_per_dev, parms.chunk_size, &tmp)) + TI_ERR("Device length not divisible by chunk_size"); + + /**************************************************************** + * Now that we checked the constructor arguments -> + * let's allocate the RAID set + ****************************************************************/ + rs = context_alloc(raid_type, &parms, raid_devs, sectors_per_dev, + ti, dl_parms, argv); + if (IS_ERR(rs)) + return PTR_ERR(rs); + + + rs->set.dev_to_init = rs->set.dev_to_init_parm = dev_to_init; + rs->set.pi = rs->set.pi_parm = pi; + + /* Set RAID4 parity drive index. */ + if (raid_type->level == raid4) + rs->set.pi = (pi == -1) ? rs->set.data_devs : pi; + + recover_set_bandwidth(rs, parms.bandwidth); + + /* Use locking type to lock stripe access. */ + rs->locking = locking; + + /* Get the device/offset tupels. */ + argv += dl_parms + 6 + parity_parm + parms.raid_parms; + r = dev_parms(rs, argv, &i); + if (r) + goto err; + + /* Set backing device information (eg. read ahead). */ + rs_set_read_ahead(rs, 2 * rs->set.chunk_size, 4 /* stripes */); + rs_set_congested_fn(rs); /* Set congested function. */ + SetRSCheckOverwrite(rs); /* Allow chunk overwrite checks. */ + speed = xor_optimize(rs); /* Select best xor algorithm. */ + + /* Set for recovery of any nosync regions. */ + if (parms.recovery) + SetRSRecover(rs); + else { + /* + * Need to free recovery stripe(s) here in case + * of nosync, because xor_optimize uses one. + */ + set_start_recovery(rs); + set_end_recovery(rs); + stripe_recover_free(rs); + } + + /* + * Make sure that dm core only hands maximum io size + * length down and pays attention to io boundaries. + */ + ti->split_io = rs->set.io_size; + ti->private = rs; + + /* Initialize work queue to handle this RAID set's io. */ + r = rs_workqueue_init(rs); + if (r) + goto err; + + rs_log(rs, speed); /* Log information about RAID set. */ + return 0; + +err: + context_free(rs, i); + return r; +} + +/* + * Destruct a raid mapping + */ +static void raid_dtr(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + + destroy_workqueue(rs->io.wq); + context_free(rs, rs->set.raid_devs); +} + +/* Raid mapping function. */ +static int raid_map(struct dm_target *ti, struct bio *bio, + union map_info *map_context) +{ + /* I don't want to waste stripe cache capacity. */ + if (bio_rw(bio) == READA) + return -EIO; + else { + struct raid_set *rs = ti->private; + + /* + * Get io reference to be waiting for to drop + * to zero on device suspension/destruction. + */ + io_get(rs); + bio->bi_sector -= ti->begin; /* Remap sector. */ + + /* Queue io to RAID set. */ + mutex_lock(&rs->io.in_lock); + bio_list_add(&rs->io.in, bio); + mutex_unlock(&rs->io.in_lock); + + /* Wake daemon to process input list. */ + wake_do_raid(rs); + + /* REMOVEME: statistics. */ + atomic_inc(rs->stats + (bio_data_dir(bio) == READ ? + S_BIOS_READ : S_BIOS_WRITE)); + return DM_MAPIO_SUBMITTED; /* Handle later. */ + } +} + +/* Device suspend. */ +static void raid_presuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + SetRSSuspend(rs); + + if (RSRecover(rs)) + dm_rh_stop_recovery(rs->recover.rh); + + cancel_delayed_work(&rs->io.dws_do_raid); + flush_workqueue(rs->io.wq); + wait_ios(rs); /* Wait for completion of all ios being processed. */ + + if (dl->type->presuspend && dl->type->presuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log presuspend failed"); +} + +static void raid_postsuspend(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct dm_dirty_log *dl = rs->recover.dl; + + if (dl->type->postsuspend && dl->type->postsuspend(dl)) + /* FIXME: need better error handling. */ + DMWARN("log postsuspend failed"); + +} + +/* Device resume. */ +static void raid_resume(struct dm_target *ti) +{ + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct dm_dirty_log *dl = rec->dl; + + if (dl->type->resume && dl->type->resume(dl)) + /* Resume dirty log. */ + /* FIXME: need better error handling. */ + DMWARN("log resume failed"); + + rec->nr_regions_to_recover = + rec->nr_regions - dl->type->get_sync_count(dl); + + /* Restart any unfinished recovery. */ + if (RSRecover(rs)) { + set_start_recovery(rs); + dm_rh_start_recovery(rec->rh); + } + + ClearRSSuspend(rs); + wake_do_raid(rs); +} + +/* Return stripe cache size. */ +static unsigned sc_size(struct raid_set *rs) +{ + return to_sector(atomic_read(&rs->sc.stripes) * + (sizeof(struct stripe) + + (sizeof(struct stripe_chunk) + + (sizeof(struct page_list) + + to_bytes(rs->set.io_size) * + rs->set.raid_devs)) + + (rs->recover.end_jiffies ? + 0 : rs->recover.recovery_stripes * + to_bytes(rs->set.raid_devs * rs->recover.io_size)))); +} + +/* REMOVEME: status output for development. */ +static void raid_devel_stats(struct dm_target *ti, char *result, + unsigned *size, unsigned maxlen) +{ + unsigned sz = *size; + unsigned long j; + char buf[BDEVNAME_SIZE], *p; + struct stats_map *sm; + struct raid_set *rs = ti->private; + struct recover *rec = &rs->recover; + struct timespec ts; + + DMEMIT("%s %s %u\n", version, rs->xor.f->name, rs->xor.chunks); + DMEMIT("act_ios=%d ", io_ref(rs)); + DMEMIT("act_ios_max=%d\n", atomic_read(&rs->io.in_process_max)); + DMEMIT("act_stripes=%d ", sc_active(&rs->sc)); + DMEMIT("act_stripes_max=%d\n", + atomic_read(&rs->sc.active_stripes_max)); + + for (sm = stats_map; sm < ARRAY_END(stats_map); sm++) + DMEMIT("%s%d", sm->str, atomic_read(rs->stats + sm->type)); + + DMEMIT(" checkovr=%s\n", RSCheckOverwrite(rs) ? "on" : "off"); + DMEMIT("sc=%u/%u/%u/%u/%u/%u/%u\n", rs->set.chunk_size, + atomic_read(&rs->sc.stripes), rs->set.io_size, + rec->recovery_stripes, rec->io_size, rs->sc.hash.buckets, + sc_size(rs)); + + j = (rec->end_jiffies ? rec->end_jiffies : jiffies) - + rec->start_jiffies; + jiffies_to_timespec(j, &ts); + sprintf(buf, "%ld.%ld", ts.tv_sec, ts.tv_nsec); + p = strchr(buf, '.'); + p[3] = 0; + + DMEMIT("rg=%llu/%llu/%llu/%u %s\n", + (unsigned long long) rec->nr_regions_recovered, + (unsigned long long) rec->nr_regions_to_recover, + (unsigned long long) rec->nr_regions, rec->bandwidth, buf); + + *size = sz; +} + +static int raid_status(struct dm_target *ti, status_type_t type, + char *result, unsigned maxlen) +{ + unsigned p, sz = 0; + char buf[BDEVNAME_SIZE]; + struct raid_set *rs = ti->private; + int raid_parms[] = { + rs->set.chunk_size_parm, + rs->sc.stripes_parm, + rs->set.io_size_parm, + rs->recover.io_size_parm, + rs->recover.bandwidth_parm, + -2, + rs->recover.recovery_stripes, + }; + + switch (type) { + case STATUSTYPE_INFO: + /* REMOVEME: statistics. */ + if (RSDevelStats(rs)) + raid_devel_stats(ti, result, &sz, maxlen); + + DMEMIT("%u ", rs->set.raid_devs); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev)); + + DMEMIT("1 "); + for (p = 0; p < rs->set.raid_devs; p++) { + DMEMIT("%c", !DevFailed(rs->dev + p) ? 'A' : 'D'); + + if (p == rs->set.pi) + DMEMIT("p"); + + if (rs->set.dev_to_init == p) + DMEMIT("i"); + } + + break; + case STATUSTYPE_TABLE: + sz = rs->recover.dl->type->status(rs->recover.dl, type, + result, maxlen); + DMEMIT("%s %u ", rs->set.raid_type->name, + rs->set.raid_parms); + + for (p = 0; p < rs->set.raid_parms; p++) { + if (raid_parms[p] > -2) + DMEMIT("%d ", raid_parms[p]); + else + DMEMIT("%s ", rs->recover.recovery ? + "sync" : "nosync"); + } + + DMEMIT("%u %d ", rs->set.raid_devs, rs->set.dev_to_init); + + for (p = 0; p < rs->set.raid_devs; p++) + DMEMIT("%s %llu ", + format_dev_t(buf, rs->dev[p].dev->bdev->bd_dev), + (unsigned long long) rs->dev[p].start); + } + + return 0; +} + +/* + * Message interface + */ +enum raid_msg_actions { + act_bw, /* Recovery bandwidth switch. */ + act_dev, /* Device failure switch. */ + act_overwrite, /* Stripe overwrite check. */ + act_stats, /* Development statistics switch. */ + act_sc, /* Stripe cache switch. */ + + act_on, /* Set entity on. */ + act_off, /* Set entity off. */ + act_reset, /* Reset entity. */ + + act_set = act_on, /* Set # absolute. */ + act_grow = act_off, /* Grow # by an amount. */ + act_shrink = act_reset, /* Shrink # by an amount. */ +}; + +/* Turn a delta into an absolute value. */ +static int _absolute(unsigned long action, int act, int r) +{ + /* Make delta absolute. */ + if (test_bit(act_set, &action)) + ; + else if (test_bit(act_grow, &action)) + r += act; + else if (test_bit(act_shrink, &action)) + r = act - r; + else + r = -EINVAL; + + return r; +} + + /* Change recovery io bandwidth. */ +static int bandwidth_change(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + int act = rs->recover.bandwidth; + int bandwidth = DM_MSG_INT_ARG(msg); + + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + /* Make delta bandwidth absolute. */ + bandwidth = _absolute(msg->action, act, bandwidth); + + /* Check range. */ + if (range_ok(bandwidth, BANDWIDTH_MIN, BANDWIDTH_MAX)) { + recover_set_bandwidth(rs, bandwidth); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Set/reset development feature flags. */ +static int devel_flags(struct dm_msg *msg, void *context) +{ + struct raid_set *rs = context; + + if (test_bit(act_on, &msg->action)) + return test_and_set_bit(msg->spec->parm, + &rs->io.flags) ? -EPERM : 0; + else if (test_bit(act_off, &msg->action)) + return test_and_clear_bit(msg->spec->parm, + &rs->io.flags) ? 0 : -EPERM; + else if (test_bit(act_reset, &msg->action)) { + if (test_bit(act_stats, &msg->action)) { + stats_reset(rs); + goto on; + } else if (test_bit(act_overwrite, &msg->action)) { +on: + set_bit(msg->spec->parm, &rs->io.flags); + return 0; + } + } + + return -EINVAL; +} + +/* Resize the stripe cache. */ +static int sc_resize(struct dm_msg *msg, void *context) +{ + int act, stripes; + struct raid_set *rs = context; + + /* Deny permission in case the daemon is still resizing!. */ + if (atomic_read(&rs->sc.stripes_to_set)) + return -EPERM; + + stripes = DM_MSG_INT_ARG(msg); + if (stripes > 0) { + act = atomic_read(&rs->sc.stripes); + + /* Make delta stripes absolute. */ + stripes = _absolute(msg->action, act, stripes); + + /* + * Check range and that the # of stripes changes. + * We leave the resizing to the wroker. + */ + if (range_ok(stripes, STRIPES_MIN, STRIPES_MAX) && + stripes != atomic_read(&rs->sc.stripes)) { + atomic_set(&rs->sc.stripes_to_set, stripes); + wake_do_raid(rs); + return 0; + } + } + + set_bit(dm_msg_ret_arg, &msg->ret); + set_bit(dm_msg_ret_inval, &msg->ret); + return -EINVAL; +} + +/* Parse the RAID message action. */ +/* + * 'ba[ndwidth] {se[t],g[row],sh[rink]} #' # e.g 'ba se 50' + * "o[verwrite] {on,of[f],r[eset]}' # e.g. 'o of' + * 'sta[tistics] {on,of[f],r[eset]}' # e.g. 'stat of' + * 'str[ipecache] {se[t],g[row],sh[rink]} #' # e.g. 'stripe set 1024' + * + */ +static int raid_message(struct dm_target *ti, unsigned argc, char **argv) +{ + /* Variables to store the parsed parameters im. */ + static int i[2]; + static unsigned long *i_arg[] = { + (unsigned long *) i + 0, + (unsigned long *) i + 1, + }; + + /* Declare all message option strings. */ + static char *str_sgs[] = { "set", "grow", "shrink" }; + static char *str_oor[] = { "on", "off", "reset" }; + + /* Declare all actions. */ + static unsigned long act_sgs[] = { act_set, act_grow, act_shrink }; + static unsigned long act_oor[] = { act_on, act_off, act_reset }; + + /* Bandwidth option. */ + static struct dm_message_option bw_opt = { 3, str_sgs, act_sgs }; + static struct dm_message_argument bw_args = { + 1, i_arg, { dm_msg_int_t } + }; + + static struct dm_message_argument null_args = { + 0, NULL, { dm_msg_int_t } + }; + + /* Overwrite and statistics option. */ + static struct dm_message_option ovr_stats_opt = { 3, str_oor, act_oor }; + + /* Sripecache option. */ + static struct dm_message_option stripe_opt = { 3, str_sgs, act_sgs }; + + /* Declare messages. */ + static struct dm_msg_spec specs[] = { + { "bandwidth", act_bw, &bw_opt, &bw_args, + 0, bandwidth_change }, + { "overwrite", act_overwrite, &ovr_stats_opt, &null_args, + RS_CHECK_OVERWRITE, devel_flags }, + { "statistics", act_stats, &ovr_stats_opt, &null_args, + RS_DEVEL_STATS, devel_flags }, + { "stripecache", act_sc, &stripe_opt, &bw_args, + 0, sc_resize }, + }; + + /* The message for the parser. */ + struct dm_msg msg = { + .num_specs = ARRAY_SIZE(specs), + .specs = specs, + }; + + return dm_message_parse(TARGET, &msg, ti->private, argc, argv); +} +/* + * END message interface + */ + +static struct target_type raid_target = { + .name = "raid45", + .version = {1, 0, 0}, + .module = THIS_MODULE, + .ctr = raid_ctr, + .dtr = raid_dtr, + .map = raid_map, + .presuspend = raid_presuspend, + .postsuspend = raid_postsuspend, + .resume = raid_resume, + .status = raid_status, + .message = raid_message, +}; + +static void init_exit(const char *bad_msg, const char *good_msg, int r) +{ + if (r) + DMERR("Failed to %sregister target [%d]", bad_msg, r); + else + DMINFO("%s %s", good_msg, version); +} + +static int __init dm_raid_init(void) +{ + int r = dm_register_target(&raid_target); + + init_exit("", "initialized", r); + return r; +} + +static void __exit dm_raid_exit(void) +{ + dm_unregister_target(&raid_target); + init_exit("un", "exit", 0); +} + +/* Module hooks. */ +module_init(dm_raid_init); +module_exit(dm_raid_exit); + +MODULE_DESCRIPTION(DM_NAME " raid4/5 target"); +MODULE_AUTHOR("Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("dm-raid4"); +MODULE_ALIAS("dm-raid5"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid4-5.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid4-5.h @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2006 Red Hat GmbH + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) ptr, str, strlen(ptr) + +enum lock_type { RAID45_EX, RAID45_SHARED }; + +struct dmraid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); + +}; + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/BOM +++ linux-3.5.0/ubuntu/dm-raid4-5/BOM @@ -0,0 +1,3 @@ +Downloaded from: http://people.redhat.com/~heinzm/sw/dm/dm-raid45/ +Current Version: 2009.04.24 (2.6.30-rc3) +Comments: All of the patches to dmraid1/dm-log, etc are upstream. --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-message.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-message.h @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2007,2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen + * + * General device-mapper message interface argument parser. + * + * This file is released under the GPL. + * + */ + +#ifndef DM_MESSAGE_H +#define DM_MESSAGE_H + +/* Factor out to dm.h. */ +/* Reference to array end. */ +#define ARRAY_END(a) ((a) + ARRAY_SIZE(a)) + +/* Message return bits. */ +enum dm_message_return { + dm_msg_ret_ambiguous, /* Action ambiguous. */ + dm_msg_ret_inval, /* Action invalid. */ + dm_msg_ret_undef, /* Action undefined. */ + + dm_msg_ret_option, /* Option error. */ + dm_msg_ret_arg, /* Argument error. */ + dm_msg_ret_argcount, /* Argument count error. */ +}; + +/* Message argument type conversions. */ +enum dm_message_argument_type { + dm_msg_base_t, /* Basename string. */ + dm_msg_str_t, /* String. */ + dm_msg_int_t, /* Signed int. */ + dm_msg_uint_t, /* Unsigned int. */ + dm_msg_uint64_t, /* Unsigned int 64. */ +}; + +/* A message option. */ +struct dm_message_option { + unsigned num_options; + char **options; + unsigned long *actions; +}; + +/* Message arguments and types. */ +struct dm_message_argument { + unsigned num_args; + unsigned long **ptr; + enum dm_message_argument_type types[]; +}; + +/* Client message. */ +struct dm_msg { + unsigned long action; /* Identified action. */ + unsigned long ret; /* Return bits. */ + unsigned num_specs; /* # of sepcifications listed. */ + struct dm_msg_spec *specs; /* Specification list. */ + struct dm_msg_spec *spec; /* Specification selected. */ +}; + +/* Secification of the message. */ +struct dm_msg_spec { + const char *cmd; /* Name of the command (i.e. 'bandwidth'). */ + unsigned long action; + struct dm_message_option *options; + struct dm_message_argument *args; + unsigned long parm; /* Parameter to pass through to callback. */ + /* Function to process for action. */ + int (*f) (struct dm_msg *msg, void *context); +}; + +/* Parameter access macros. */ +#define DM_MSG_PARM(msg) ((msg)->spec->parm) + +#define DM_MSG_STR_ARGS(msg, idx) ((char *) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_INT_ARGS(msg, idx) ((int) *(msg)->spec->args->ptr[idx]) +#define DM_MSG_UINT_ARGS(msg, idx) ((unsigned) DM_MSG_INT_ARG(msg, idx)) +#define DM_MSG_UINT64_ARGS(msg, idx) ((uint64_t) *(msg)->spec->args->ptr[idx]) + +#define DM_MSG_STR_ARG(msg) DM_MSG_STR_ARGS(msg, 0) +#define DM_MSG_INT_ARG(msg) DM_MSG_INT_ARGS(msg, 0) +#define DM_MSG_UINT_ARG(msg) DM_MSG_UINT_ARGS(msg, 0) +#define DM_MSG_UINT64_ARG(msg) DM_MSG_UINT64_ARGS(msg, 0) + + +/* Parse a message and its options and optionally call a function back. */ +int dm_message_parse(const char *caller, struct dm_msg *msg, void *context, + int argc, char **argv); + +#endif --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-region-hash.c +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-region-hash.c @@ -0,0 +1,719 @@ +/* + * Copyright (C) 2003 Sistina Software Limited. + * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. + * + * This file is released under the GPL. + */ + +#include +#include "dm-region-hash.h" + +#include +#include +#include +#include +#include + +#include "dm.h" + +#define DM_MSG_PREFIX "region hash" + +/*----------------------------------------------------------------- + * Region hash + * + * The mirror splits itself up into discrete regions. Each + * region can be in one of three states: clean, dirty, + * nosync. There is no need to put clean regions in the hash. + * + * In addition to being present in the hash table a region _may_ + * be present on one of three lists. + * + * clean_regions: Regions on this list have no io pending to + * them, they are in sync, we are no longer interested in them, + * they are dull. dm_rh_update_states() will remove them from the + * hash table. + * + * quiesced_regions: These regions have been spun down, ready + * for recovery. rh_recovery_start() will remove regions from + * this list and hand them to kmirrord, which will schedule the + * recovery io with kcopyd. + * + * recovered_regions: Regions that kcopyd has successfully + * recovered. dm_rh_update_states() will now schedule any delayed + * io, up the recovery_count, and remove the region from the + * hash. + * + * There are 2 locks: + * A rw spin lock 'hash_lock' protects just the hash table, + * this is never held in write mode from interrupt context, + * which I believe means that we only have to disable irqs when + * doing a write lock. + * + * An ordinary spin lock 'region_lock' that protects the three + * lists in the region_hash, with the 'state', 'list' and + * 'delayed_bios' fields of the regions. This is used from irq + * context, so all other uses will have to suspend local irqs. + *---------------------------------------------------------------*/ +struct dm_region_hash { + uint32_t region_size; + unsigned region_shift; + + /* holds persistent region state */ + struct dm_dirty_log *log; + + /* hash table */ + rwlock_t hash_lock; + mempool_t *region_pool; + unsigned mask; + unsigned nr_buckets; + unsigned prime; + unsigned shift; + struct list_head *buckets; + + unsigned max_recovery; /* Max # of regions to recover in parallel */ + + spinlock_t region_lock; + atomic_t recovery_in_flight; + struct semaphore recovery_count; + struct list_head clean_regions; + struct list_head quiesced_regions; + struct list_head recovered_regions; + struct list_head failed_recovered_regions; + + void *context; + sector_t target_begin; + + /* Callback function to schedule bios writes */ + void (*dispatch_bios)(void *context, struct bio_list *bios); + + /* Callback function to wakeup callers worker thread. */ + void (*wakeup_workers)(void *context); + + /* Callback function to wakeup callers recovery waiters. */ + void (*wakeup_all_recovery_waiters)(void *context); +}; + +struct dm_region { + struct dm_region_hash *rh; /* FIXME: can we get rid of this ? */ + region_t key; + int state; + + struct list_head hash_list; + struct list_head list; + + atomic_t pending; + struct bio_list delayed_bios; +}; + +/* + * Conversion fns + */ +region_t dm_rh_sector_to_region(struct dm_region_hash *rh, sector_t sector) +{ + return sector >> rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_sector_to_region); + +sector_t dm_rh_region_to_sector(struct dm_region_hash *rh, region_t region) +{ + return region << rh->region_shift; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_to_sector); + +region_t dm_rh_bio_to_region(struct dm_region_hash *rh, struct bio *bio) +{ + return dm_rh_sector_to_region(rh, bio->bi_sector - rh->target_begin); +} +// EXPORT_SYMBOL_GPL(dm_rh_bio_to_region); + +void *dm_rh_region_context(struct dm_region *reg) +{ + return reg->rh->context; +} +// EXPORT_SYMBOL_GPL(dm_rh_region_context); + +region_t dm_rh_get_region_key(struct dm_region *reg) +{ + return reg->key; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_key); + +sector_t dm_rh_get_region_size(struct dm_region_hash *rh) +{ + return rh->region_size; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_region_size); + +/* + * FIXME: shall we pass in a structure instead of all these args to + * dm_region_hash_create()???? + */ +#define RH_HASH_MULT 2654435387U +#define RH_HASH_SHIFT 12 + +#define MIN_REGIONS 64 +struct dm_region_hash *dm_region_hash_create( + void *context, void (*dispatch_bios)(void *context, + struct bio_list *bios), + void (*wakeup_workers)(void *context), + void (*wakeup_all_recovery_waiters)(void *context), + sector_t target_begin, unsigned max_recovery, + struct dm_dirty_log *log, uint32_t region_size, + region_t nr_regions) +{ + struct dm_region_hash *rh; + unsigned nr_buckets, max_buckets; + size_t i; + + /* + * Calculate a suitable number of buckets for our hash + * table. + */ + max_buckets = nr_regions >> 6; + for (nr_buckets = 128u; nr_buckets < max_buckets; nr_buckets <<= 1) + ; + nr_buckets >>= 1; + + rh = kmalloc(sizeof(*rh), GFP_KERNEL); + if (!rh) { + DMERR("unable to allocate region hash memory"); + return ERR_PTR(-ENOMEM); + } + + rh->context = context; + rh->dispatch_bios = dispatch_bios; + rh->wakeup_workers = wakeup_workers; + rh->wakeup_all_recovery_waiters = wakeup_all_recovery_waiters; + rh->target_begin = target_begin; + rh->max_recovery = max_recovery; + rh->log = log; + rh->region_size = region_size; + rh->region_shift = ffs(region_size) - 1; + rwlock_init(&rh->hash_lock); + rh->mask = nr_buckets - 1; + rh->nr_buckets = nr_buckets; + + rh->shift = RH_HASH_SHIFT; + rh->prime = RH_HASH_MULT; + + rh->buckets = vmalloc(nr_buckets * sizeof(*rh->buckets)); + if (!rh->buckets) { + DMERR("unable to allocate region hash bucket memory"); + kfree(rh); + return ERR_PTR(-ENOMEM); + } + + for (i = 0; i < nr_buckets; i++) + INIT_LIST_HEAD(rh->buckets + i); + + spin_lock_init(&rh->region_lock); + sema_init(&rh->recovery_count, 0); + atomic_set(&rh->recovery_in_flight, 0); + INIT_LIST_HEAD(&rh->clean_regions); + INIT_LIST_HEAD(&rh->quiesced_regions); + INIT_LIST_HEAD(&rh->recovered_regions); + INIT_LIST_HEAD(&rh->failed_recovered_regions); + + rh->region_pool = mempool_create_kmalloc_pool(MIN_REGIONS, + sizeof(struct dm_region)); + if (!rh->region_pool) { + vfree(rh->buckets); + kfree(rh); + rh = ERR_PTR(-ENOMEM); + } + + return rh; +} +// EXPORT_SYMBOL_GPL(dm_region_hash_create); + +void dm_region_hash_destroy(struct dm_region_hash *rh) +{ + unsigned h; + struct dm_region *reg, *nreg; + + BUG_ON(!list_empty(&rh->quiesced_regions)); + for (h = 0; h < rh->nr_buckets; h++) { + list_for_each_entry_safe(reg, nreg, rh->buckets + h, + hash_list) { + BUG_ON(atomic_read(®->pending)); + mempool_free(reg, rh->region_pool); + } + } + + if (rh->log) + dm_dirty_log_destroy(rh->log); + + if (rh->region_pool) + mempool_destroy(rh->region_pool); + + vfree(rh->buckets); + kfree(rh); +} +// EXPORT_SYMBOL_GPL(dm_region_hash_destroy); + +struct dm_dirty_log *dm_rh_dirty_log(struct dm_region_hash *rh) +{ + return rh->log; +} +// EXPORT_SYMBOL_GPL(dm_rh_dirty_log); + +static unsigned rh_hash(struct dm_region_hash *rh, region_t region) +{ + return (unsigned) ((region * rh->prime) >> rh->shift) & rh->mask; +} + +static struct dm_region *__rh_lookup(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + struct list_head *bucket = rh->buckets + rh_hash(rh, region); + + list_for_each_entry(reg, bucket, hash_list) + if (reg->key == region) + return reg; + + return NULL; +} + +static void __rh_insert(struct dm_region_hash *rh, struct dm_region *reg) +{ + list_add(®->hash_list, rh->buckets + rh_hash(rh, reg->key)); +} + +static struct dm_region *__rh_alloc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg, *nreg; + + nreg = mempool_alloc(rh->region_pool, GFP_ATOMIC); + if (unlikely(!nreg)) + nreg = kmalloc(sizeof(*nreg), GFP_NOIO | __GFP_NOFAIL); + + nreg->state = rh->log->type->in_sync(rh->log, region, 1) ? + DM_RH_CLEAN : DM_RH_NOSYNC; + nreg->rh = rh; + nreg->key = region; + INIT_LIST_HEAD(&nreg->list); + atomic_set(&nreg->pending, 0); + bio_list_init(&nreg->delayed_bios); + + write_lock_irq(&rh->hash_lock); + reg = __rh_lookup(rh, region); + if (reg) + /* We lost the race. */ + mempool_free(nreg, rh->region_pool); + else { + __rh_insert(rh, nreg); + if (nreg->state == DM_RH_CLEAN) { + spin_lock(&rh->region_lock); + list_add(&nreg->list, &rh->clean_regions); + spin_unlock(&rh->region_lock); + } + + reg = nreg; + } + write_unlock_irq(&rh->hash_lock); + + return reg; +} + +static struct dm_region *__rh_find(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + reg = __rh_lookup(rh, region); + if (!reg) { + read_unlock(&rh->hash_lock); + reg = __rh_alloc(rh, region); + read_lock(&rh->hash_lock); + } + + return reg; +} + +int dm_rh_get_state(struct dm_region_hash *rh, region_t region, int may_block) +{ + int r; + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + if (reg) + return reg->state; + + /* + * The region wasn't in the hash, so we fall back to the + * dirty log. + */ + r = rh->log->type->in_sync(rh->log, region, may_block); + + /* + * Any error from the dirty log (eg. -EWOULDBLOCK) gets + * taken as a DM_RH_NOSYNC + */ + return r == 1 ? DM_RH_CLEAN : DM_RH_NOSYNC; +} +// EXPORT_SYMBOL_GPL(dm_rh_get_state); + +static void complete_resync_work(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + rh->log->type->set_region_sync(rh->log, reg->key, success); + + /* + * Dispatch the bios before we call 'wake_up_all'. + * This is important because if we are suspending, + * we want to know that recovery is complete and + * the work queue is flushed. If we wake_up_all + * before we dispatch_bios (queue bios and call wake()), + * then we risk suspending before the work queue + * has been properly flushed. + */ + rh->dispatch_bios(rh->context, ®->delayed_bios); + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); + up(&rh->recovery_count); +} + +/* dm_rh_mark_nosync + * @ms + * @bio + * @done + * @error + * + * The bio was written on some mirror(s) but failed on other mirror(s). + * We can successfully endio the bio but should avoid the region being + * marked clean by setting the state DM_RH_NOSYNC. + * + * This function is _not_ safe in interrupt context! + */ +void dm_rh_mark_nosync(struct dm_region_hash *rh, + struct bio *bio, unsigned done, int error) +{ + unsigned long flags; + struct dm_dirty_log *log = rh->log; + struct dm_region *reg; + region_t region = dm_rh_bio_to_region(rh, bio); + int recovering = 0; + + /* We must inform the log that the sync count has changed. */ + log->type->set_region_sync(log, region, 0); + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + /* region hash entry should exist because write was in-flight */ + BUG_ON(!reg); + BUG_ON(!list_empty(®->list)); + + spin_lock_irqsave(&rh->region_lock, flags); + /* + * Possible cases: + * 1) DM_RH_DIRTY + * 2) DM_RH_NOSYNC: was dirty, other preceeding writes failed + * 3) DM_RH_RECOVERING: flushing pending writes + * Either case, the region should have not been connected to list. + */ + recovering = (reg->state == DM_RH_RECOVERING); + reg->state = DM_RH_NOSYNC; + BUG_ON(!list_empty(®->list)); + spin_unlock_irqrestore(&rh->region_lock, flags); + + bio_endio(bio, error); + if (recovering) + complete_resync_work(reg, 0); +} +// EXPORT_SYMBOL_GPL(dm_rh_mark_nosync); + +void dm_rh_update_states(struct dm_region_hash *rh, int errors_handled) +{ + struct dm_region *reg, *next; + + LIST_HEAD(clean); + LIST_HEAD(recovered); + LIST_HEAD(failed_recovered); + + /* + * Quickly grab the lists. + */ + write_lock_irq(&rh->hash_lock); + spin_lock(&rh->region_lock); + if (!list_empty(&rh->clean_regions)) { + list_splice_init(&rh->clean_regions, &clean); + + list_for_each_entry(reg, &clean, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->recovered_regions)) { + list_splice_init(&rh->recovered_regions, &recovered); + + list_for_each_entry(reg, &recovered, list) + list_del(®->hash_list); + } + + if (!list_empty(&rh->failed_recovered_regions)) { + list_splice_init(&rh->failed_recovered_regions, + &failed_recovered); + + list_for_each_entry(reg, &failed_recovered, list) + list_del(®->hash_list); + } + + spin_unlock(&rh->region_lock); + write_unlock_irq(&rh->hash_lock); + + /* + * All the regions on the recovered and clean lists have + * now been pulled out of the system, so no need to do + * any more locking. + */ + list_for_each_entry_safe(reg, next, &recovered, list) { + rh->log->type->clear_region(rh->log, reg->key); + complete_resync_work(reg, 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &failed_recovered, list) { + complete_resync_work(reg, errors_handled ? 0 : 1); + mempool_free(reg, rh->region_pool); + } + + list_for_each_entry_safe(reg, next, &clean, list) { + rh->log->type->clear_region(rh->log, reg->key); + mempool_free(reg, rh->region_pool); + } + + rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_update_states); + +void dm_rh_inc(struct dm_region_hash *rh, region_t region) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + + spin_lock_irq(&rh->region_lock); + atomic_inc(®->pending); + + if (reg->state == DM_RH_CLEAN) { + reg->state = DM_RH_DIRTY; + list_del_init(®->list); /* take off the clean list */ + spin_unlock_irq(&rh->region_lock); + + rh->log->type->mark_region(rh->log, reg->key); + } else + spin_unlock_irq(&rh->region_lock); + + + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc); + +void dm_rh_inc_pending(struct dm_region_hash *rh, struct bio_list *bios) +{ + struct bio *bio; + + for (bio = bios->head; bio; bio = bio->bi_next) + dm_rh_inc(rh, dm_rh_bio_to_region(rh, bio)); +} +// EXPORT_SYMBOL_GPL(dm_rh_inc_pending); + +void dm_rh_dec(struct dm_region_hash *rh, region_t region) +{ + unsigned long flags; + struct dm_region *reg; + int should_wake = 0; + + read_lock(&rh->hash_lock); + reg = __rh_lookup(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irqsave(&rh->region_lock, flags); + if (atomic_dec_and_test(®->pending)) { + /* + * There is no pending I/O for this region. + * We can move the region to corresponding list for next action. + * At this point, the region is not yet connected to any list. + * + * If the state is DM_RH_NOSYNC, the region should be kept off + * from clean list. + * The hash entry for DM_RH_NOSYNC will remain in memory + * until the region is recovered or the map is reloaded. + */ + + /* do nothing for DM_RH_NOSYNC */ + if (reg->state == DM_RH_RECOVERING) { + list_add_tail(®->list, &rh->quiesced_regions); + } else if (reg->state == DM_RH_DIRTY) { + reg->state = DM_RH_CLEAN; + list_add(®->list, &rh->clean_regions); + } + should_wake = 1; + } + spin_unlock_irqrestore(&rh->region_lock, flags); + + if (should_wake) + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_dec); + +/* + * Starts quiescing a region in preparation for recovery. + */ +static int __rh_recovery_prepare(struct dm_region_hash *rh) +{ + int r; + region_t region; + struct dm_region *reg; + + /* + * Ask the dirty log what's next. + */ + r = rh->log->type->get_resync_work(rh->log, ®ion); + if (r <= 0) + return r; + + /* + * Get this region, and start it quiescing by setting the + * recovering flag. + */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + read_unlock(&rh->hash_lock); + + spin_lock_irq(&rh->region_lock); + reg->state = DM_RH_RECOVERING; + + /* Already quiesced ? */ + if (atomic_read(®->pending)) + list_del_init(®->list); + else + list_move(®->list, &rh->quiesced_regions); + + spin_unlock_irq(&rh->region_lock); + + return 1; +} + +void dm_rh_recovery_prepare(struct dm_region_hash *rh) +{ + /* Extra reference to avoid race with dm_rh_stop_recovery */ + atomic_inc(&rh->recovery_in_flight); + + while (!down_trylock(&rh->recovery_count)) { + atomic_inc(&rh->recovery_in_flight); + if (__rh_recovery_prepare(rh) <= 0) { + atomic_dec(&rh->recovery_in_flight); + up(&rh->recovery_count); + break; + } + } + + /* Drop the extra reference */ + if (atomic_dec_and_test(&rh->recovery_in_flight)) + rh->wakeup_all_recovery_waiters(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_prepare); + +/* + * Returns any quiesced regions. + */ +struct dm_region *dm_rh_recovery_start(struct dm_region_hash *rh) +{ + struct dm_region *reg = NULL; + + spin_lock_irq(&rh->region_lock); + if (!list_empty(&rh->quiesced_regions)) { + reg = list_entry(rh->quiesced_regions.next, + struct dm_region, list); + list_del_init(®->list); /* remove from the quiesced list */ + } + spin_unlock_irq(&rh->region_lock); + + return reg; +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_start); + +void dm_rh_recovery_end(struct dm_region *reg, int success) +{ + struct dm_region_hash *rh = reg->rh; + + spin_lock_irq(&rh->region_lock); + if (success) + list_add(®->list, ®->rh->recovered_regions); + else { + reg->state = DM_RH_NOSYNC; + list_add(®->list, ®->rh->failed_recovered_regions); + } + spin_unlock_irq(&rh->region_lock); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_end); + +/* Return recovery in flight count. */ +int dm_rh_recovery_in_flight(struct dm_region_hash *rh) +{ + return atomic_read(&rh->recovery_in_flight); +} +// EXPORT_SYMBOL_GPL(dm_rh_recovery_in_flight); + +int dm_rh_flush(struct dm_region_hash *rh) +{ + return rh->log->type->flush(rh->log); +} +// EXPORT_SYMBOL_GPL(dm_rh_flush); + +void dm_rh_delay(struct dm_region_hash *rh, struct bio *bio) +{ + struct dm_region *reg; + + read_lock(&rh->hash_lock); + reg = __rh_find(rh, dm_rh_bio_to_region(rh, bio)); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay); + +void dm_rh_delay_by_region(struct dm_region_hash *rh, + struct bio *bio, region_t region) +{ + struct dm_region *reg; + + /* FIXME: locking. */ + read_lock(&rh->hash_lock); + reg = __rh_find(rh, region); + bio_list_add(®->delayed_bios, bio); + read_unlock(&rh->hash_lock); +} +// EXPORT_SYMBOL_GPL(dm_rh_delay_by_region); + +void dm_rh_stop_recovery(struct dm_region_hash *rh) +{ + int i; + + /* wait for any recovering regions */ + for (i = 0; i < rh->max_recovery; i++) + down(&rh->recovery_count); +} +// EXPORT_SYMBOL_GPL(dm_rh_stop_recovery); + +void dm_rh_start_recovery(struct dm_region_hash *rh) +{ + int i; + + for (i = 0; i < rh->max_recovery; i++) + up(&rh->recovery_count); + + rh->wakeup_workers(rh->context); +} +// EXPORT_SYMBOL_GPL(dm_rh_start_recovery); + +MODULE_DESCRIPTION(DM_NAME " region hash"); +MODULE_AUTHOR("Joe Thornber/Heinz Mauelshagen "); +MODULE_LICENSE("GPL"); --- linux-3.5.0.orig/ubuntu/dm-raid4-5/dm-raid45.h +++ linux-3.5.0/ubuntu/dm-raid4-5/dm-raid45.h @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2006-2008 Red Hat, Inc. All rights reserved. + * + * Module Author: Heinz Mauelshagen (Mauelshagen@RedHat.com) + * + * Locking definitions for the device-mapper RAID45 target. + * + * This file is released under the GPL. + * + */ + +#ifndef _DM_RAID45_H +#define _DM_RAID45_H + +/* Factor out to dm.h! */ +#define STR_LEN(ptr, str) (ptr), (str), strlen((ptr)) + +enum dm_lock_type { DM_RAID45_EX, DM_RAID45_SHARED }; + +struct dm_raid45_locking_type { + /* Request a lock on a stripe. */ + void* (*lock)(sector_t key, enum dm_lock_type type); + + /* Release a lock on a stripe. */ + void (*unlock)(void *lock_handle); +}; + +#endif --- linux-3.5.0.orig/Documentation/stable_kernel_rules.txt +++ linux-3.5.0/Documentation/stable_kernel_rules.txt @@ -1,4 +1,4 @@ -Everything you ever wanted to know about Linux 2.6 -stable releases. +Everything you ever wanted to know about Linux -stable releases. Rules on what kind of patches are accepted, and which ones are not, into the "-stable" tree: @@ -42,10 +42,10 @@ cherry-picked than this can be specified in the following format in the sign-off area: - Cc: # .32.x: a1f84a3: sched: Check for idle - Cc: # .32.x: 1b9508f: sched: Rate-limit newidle - Cc: # .32.x: fd21073: sched: Fix affinity logic - Cc: # .32.x + Cc: # 3.3.x: a1f84a3: sched: Check for idle + Cc: # 3.3.x: 1b9508f: sched: Rate-limit newidle + Cc: # 3.3.x: fd21073: sched: Fix affinity logic + Cc: # 3.3.x Signed-off-by: Ingo Molnar The tag sequence has the meaning of: @@ -79,6 +79,15 @@ security kernel team, and not go through the normal review cycle. Contact the kernel security team for more details on this procedure. +Trees: + + - The queues of patches, for both completed versions and in progress + versions can be found at: + http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git + - The finalized and tagged releases of all stable kernels can be found + in separate branches per version at: + http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git + Review committee: --- linux-3.5.0.orig/Documentation/kernel-parameters.txt +++ linux-3.5.0/Documentation/kernel-parameters.txt @@ -252,12 +252,15 @@ For broken nForce2 BIOS resulting in XT-PIC timer. acpi_sleep= [HW,ACPI] Sleep options - Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig, + Format: { s3_bios, s3_mode, s3_beep, s3_leds, s4_nohwsig, old_ordering, nonvs, sci_force_enable } See Documentation/power/video.txt for information on s3_bios and s3_mode. s3_beep is for debugging; it makes the PC's speaker beep as soon as the kernel's real-mode entry point is called. + s3_leds is for debugging; it flashes the keyboard LEDs + 3 times as soon as the kernel's real-mode entry point is + called. s4_nohwsig prevents ACPI hardware signature from being used during resume from hibernation. old_ordering causes the ACPI 1.0 ordering of the _PTS @@ -585,6 +588,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 --- linux-3.5.0.orig/Documentation/DMA-attributes.txt +++ linux-3.5.0/Documentation/DMA-attributes.txt @@ -49,3 +49,45 @@ consistent or non-consistent memory as it sees fit. By using this API, you are guaranteeing to the platform that you have all the correct and necessary sync points for this memory in the driver. + +DMA_ATTR_NO_KERNEL_MAPPING +-------------------------- + +DMA_ATTR_NO_KERNEL_MAPPING lets the platform to avoid creating a kernel +virtual mapping for the allocated buffer. On some architectures creating +such mapping is non-trivial task and consumes very limited resources +(like kernel virtual address space or dma consistent address space). +Buffers allocated with this attribute can be only passed to user space +by calling dma_mmap_attrs(). By using this API, you are guaranteeing +that you won't dereference the pointer returned by dma_alloc_attr(). You +can threat it as a cookie that must be passed to dma_mmap_attrs() and +dma_free_attrs(). Make sure that both of these also get this attribute +set on each call. + +Since it is optional for platforms to implement +DMA_ATTR_NO_KERNEL_MAPPING, those that do not will simply ignore the +attribute and exhibit default behavior. + +DMA_ATTR_SKIP_CPU_SYNC +---------------------- + +By default dma_map_{single,page,sg} functions family transfer a given +buffer from CPU domain to device domain. Some advanced use cases might +require sharing a buffer between more than one device. This requires +having a mapping created separately for each device and is usually +performed by calling dma_map_{single,page,sg} function more than once +for the given buffer with device pointer to each device taking part in +the buffer sharing. The first call transfers a buffer from 'CPU' domain +to 'device' domain, what synchronizes CPU caches for the given region +(usually it means that the cache has been flushed or invalidated +depending on the dma direction). However, next calls to +dma_map_{single,page,sg}() for other devices will perform exactly the +same sychronization operation on the CPU cache. CPU cache sychronization +might be a time consuming operation, especially if the buffers are +large, so it is highly recommended to avoid it if possible. +DMA_ATTR_SKIP_CPU_SYNC allows platform code to skip synchronization of +the CPU cache for the given buffer assuming that it has been already +transferred to 'device' domain. This attribute can be also used for +dma_unmap_{single,page,sg} functions family to force buffer to stay in +device domain after releasing a mapping for it. Use this attribute with +care! --- linux-3.5.0.orig/Documentation/filesystems/overlayfs.txt +++ linux-3.5.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 involved 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 is 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 vaid 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 inconsitent 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.5.0.orig/Documentation/filesystems/Locking +++ linux-3.5.0/Documentation/filesystems/Locking @@ -62,6 +62,7 @@ int (*removexattr) (struct dentry *, const char *); int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); void (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open)(struct dentry *,struct file *,const struct cred *); locking rules: all may block @@ -89,7 +90,7 @@ removexattr: yes fiemap: no update_time: no - +open: no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on victim. cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. --- linux-3.5.0.orig/Documentation/filesystems/vfs.txt +++ linux-3.5.0/Documentation/filesystems/vfs.txt @@ -364,6 +364,8 @@ ssize_t (*listxattr) (struct dentry *, char *, size_t); int (*removexattr) (struct dentry *, const char *); void (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open) (struct dentry *, struct file *, + const struct cred *); }; Again, all methods are called without any locks being held, unless @@ -476,6 +478,12 @@ an inode. If this is not defined the VFS will update the inode itself and call mark_inode_dirty_sync. + open: this is an alternative to f_op->open(), the difference is that this + method may return any open 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. + The Address Space Object ======================== --- linux-3.5.0.orig/Documentation/filesystems/efivarfs.txt +++ linux-3.5.0/Documentation/filesystems/efivarfs.txt @@ -0,0 +1,16 @@ + +efivarfs - a (U)EFI variable filesystem + +The efivarfs filesystem was created to address the shortcomings of +using entries in sysfs to maintain EFI variables. The old sysfs EFI +variables code only supported variables of up to 1024 bytes. This +limitation existed in version 0.99 of the EFI specification, but was +removed before any full releases. Since variables can now be larger +than a single page, sysfs isn't the best interface for this. + +Variables can be created, deleted and modified with the efivarfs +filesystem. + +efivarfs is typically mounted like this, + + mount -t efivarfs none /sys/firmware/efi/efivars --- linux-3.5.0.orig/Documentation/filesystems/00-INDEX +++ linux-3.5.0/Documentation/filesystems/00-INDEX @@ -38,6 +38,8 @@ - example program for dnotify ecryptfs.txt - docs on eCryptfs: stacked cryptographic filesystem for Linux. +efivarfs.txt + - info for the efivarfs filesystem. exofs.txt - info, usage, mount options, design about EXOFS. ext2.txt --- linux-3.5.0.orig/Documentation/power/runtime_pm.txt +++ linux-3.5.0/Documentation/power/runtime_pm.txt @@ -642,12 +642,13 @@ * During system suspend it calls pm_runtime_get_noresume() and pm_runtime_barrier() for every device right before executing the subsystem-level .suspend() callback for it. In addition to that it calls - pm_runtime_disable() for every device right after executing the - subsystem-level .suspend() callback for it. + __pm_runtime_disable() with 'false' as the second argument for every device + right before executing the subsystem-level .suspend_late() callback for it. * During system resume it calls pm_runtime_enable() and pm_runtime_put_sync() - for every device right before and right after executing the subsystem-level - .resume() callback for it, respectively. + for every device right after executing the subsystem-level .resume_early() + callback and right after executing the subsystem-level .resume() callback + for it, respectively. 7. Generic subsystem callbacks --- linux-3.5.0.orig/Documentation/devicetree/bindings/ata/ahci-platform.txt +++ linux-3.5.0/Documentation/devicetree/bindings/ata/ahci-platform.txt @@ -8,9 +8,18 @@ - interrupts : - reg : +Optional properties: +- dma-coherent : Present if dma operations are coherent +- calxeda,port-phys: phandle-combophy and lane assignment, which maps each + SATA port to a combophy and a lane within that + combophy + Example: sata@ffe08000 { compatible = "calxeda,hb-ahci"; reg = <0xffe08000 0x1000>; interrupts = <115>; + calxeda,port-phys = <&combophy5 0 &combophy0 0 &combophy0 1 + &combophy0 2 &combophy0 3>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/dma/arm-pl330.txt +++ linux-3.5.0/Documentation/devicetree/bindings/dma/arm-pl330.txt @@ -9,6 +9,9 @@ region. - interrupts: interrupt number to the cpu. +Optional properties: +- dma-coherent : Present if dma operations are coherent + Example: pdma0: pdma@12680000 { --- linux-3.5.0.orig/Documentation/devicetree/bindings/net/calxeda-xgmac.txt +++ linux-3.5.0/Documentation/devicetree/bindings/net/calxeda-xgmac.txt @@ -6,6 +6,9 @@ - interrupts : Should contain 3 xgmac interrupts. The 1st is main interrupt. The 2nd is pwr mgt interrupt. The 3rd is low power state interrupt. +Optional properties: +- dma-coherent : Present if dma operations are coherent + Example: ethernet@fff50000 { --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/atmel-at91.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/atmel-at91.txt @@ -8,7 +8,7 @@ shared across all System Controller members. TC/TCLIB Timer required properties: -- compatible: Should be "atmel,-pit". +- compatible: Should be "atmel,-tcb". can be "at91rm9200" or "at91sam9x5" - reg: Should contain registers location and length - interrupts: Should contain all interrupts for the TC block --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/combophy.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/combophy.txt @@ -0,0 +1,17 @@ +Calxeda Highbank Combination Phys for SATA + +Properties: +- compatible : Should be "calxeda,hb-combophy" +- #phy-cells: Should be 1. +- reg : Address and size for Combination Phy registers. +- phydev: device ID for programming the combophy. + +Example: + + combophy5: combo-phy@fff5d000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff5d000 0x1000>; + phydev = <31>; + }; + --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt @@ -0,0 +1,14 @@ +Calxeda DDR memory controller + +Properties: +- compatible : Should be "calxeda,hb-ddr-ctrl" +- reg : Address and size for DDR controller registers. +- interrupts : Interrupt for DDR controller. + +Example: + + memory-controller@fff00000 { + compatible = "calxeda,hb-ddr-ctrl"; + reg = <0xfff00000 0x1000>; + interrupts = <0 91 4>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt +++ linux-3.5.0/Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt @@ -0,0 +1,15 @@ +Calxeda Highbank L2 cache ECC + +Properties: +- compatible : Should be "calxeda,hb-sregs-l2-ecc" +- reg : Address and size for ECC error interrupt clear registers. +- interrupts : Should be single bit error interrupt, then double bit error + interrupt. + +Example: + + sregs@fff3c200 { + compatible = "calxeda,hb-sregs-l2-ecc"; + reg = <0xfff3c200 0x100>; + interrupts = <0 71 4 0 72 4>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt +++ linux-3.5.0/Documentation/devicetree/bindings/pinctrl/nvidia,tegra30-pinmux.txt @@ -83,7 +83,7 @@ drive groups: These all support nvidia,pull-down-strength, nvidia,pull-up-strength, - nvidia,slew_rate-rising, nvidia,slew_rate-falling. Most but not all + nvidia,slew-rate-rising, nvidia,slew-rate-falling. Most but not all support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode. ao1, ao2, at1, at2, at3, at4, at5, cdev1, cdev2, cec, crt, csus, dap1, --- linux-3.5.0.orig/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt +++ linux-3.5.0/Documentation/devicetree/bindings/pinctrl/nvidia,tegra20-pinmux.txt @@ -93,7 +93,7 @@ With some exceptions, these support nvidia,high-speed-mode, nvidia,schmitt, nvidia,low-power-mode, nvidia,pull-down-strength, - nvidia,pull-up-strength, nvidia,slew_rate-rising, nvidia,slew_rate-falling. + nvidia,pull-up-strength, nvidia,slew-rate-rising, nvidia,slew-rate-falling. drive_ao1, drive_ao2, drive_at1, drive_at2, drive_cdev1, drive_cdev2, drive_csus, drive_dap1, drive_dap2, drive_dap3, drive_dap4, drive_dbg, --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/clock-bindings.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/clock-bindings.txt @@ -0,0 +1,117 @@ +This binding is a work-in-progress, and are based on some experimental +work by benh[1]. + +Sources of clock signal can be represented by any node in the device +tree. Those nodes are designated as clock providers. Clock consumer +nodes use a phandle and clock specifier pair to connect clock provider +outputs to clock inputs. Similar to the gpio specifiers, a clock +specifier is an array of one more more cells identifying the clock +output on a device. The length of a clock specifier is defined by the +value of a #clock-cells property in the clock provider node. + +[1] http://patchwork.ozlabs.org/patch/31551/ + +==Clock providers== + +Required properties: +#clock-cells: Number of cells in a clock specifier; Typically 0 for nodes + with a single clock output and 1 for nodes with multiple + clock outputs. + +Optional properties: +clock-output-names: Recommended to be a list of strings of clock output signal + names indexed by the first cell in the clock specifier. + However, the meaning of clock-output-names is domain + specific to the clock provider, and is only provided to + encourage using the same meaning for the majority of clock + providers. This format may not work for clock providers + using a complex clock specifier format. In those cases it + is recommended to omit this property and create a binding + specific names property. + + Clock consumer nodes must never directly reference + the provider's clock-output-names property. + +For example: + + oscillator { + #clock-cells = <1>; + clock-output-names = "ckil", "ckih"; + }; + +- this node defines a device with two clock outputs, the first named + "ckil" and the second named "ckih". Consumer nodes always reference + clocks by index. The names should reflect the clock output signal + names for the device. + +==Clock consumers== + +Required properties: +clocks: List of phandle and clock specifier pairs, one pair + for each clock input to the device. Note: if the + clock provider specifies '0' for #clock-cells, then + only the phandle portion of the pair will appear. + +Optional properties: +clock-names: List of clock input name strings sorted in the same + order as the clocks property. Consumers drivers + will use clock-names to match clock input names + with clocks specifiers. +clock-ranges: Empty property indicating that child nodes can inherit named + clocks from this node. Useful for bus nodes to provide a + clock to their children. + +For example: + + device { + clocks = <&osc 1>, <&ref 0>; + clock-names = "baud", "register"; + }; + + +This represents a device with two clock inputs, named "baud" and "register". +The baud clock is connected to output 1 of the &osc device, and the register +clock is connected to output 0 of the &ref. + +==Example== + + /* external oscillator */ + osc: oscillator { + compatible = "fixed-clock"; + #clock-cells = <1>; + clock-frequency = <32678>; + clock-output-names = "osc"; + }; + + /* phase-locked-loop device, generates a higher frequency clock + * from the external oscillator reference */ + pll: pll@4c000 { + compatible = "vendor,some-pll-interface" + #clock-cells = <1>; + clocks = <&osc 0>; + clock-names = "ref"; + reg = <0x4c000 0x1000>; + clock-output-names = "pll", "pll-switched"; + }; + + /* UART, using the low frequency oscillator for the baud clock, + * and the high frequency switched PLL output for register + * clocking */ + uart@a000 { + compatible = "fsl,imx-uart"; + reg = <0xa000 0x1000>; + interrupts = <33>; + clocks = <&osc 0>, <&pll 1>; + clock-names = "baud", "register"; + }; + +This DT fragment defines three devices: an external oscillator to provide a +low-frequency reference clock, a PLL device to generate a higher frequency +clock signal, and a UART. + +* The oscillator is fixed-frequency, and provides one clock output, named "osc". +* The PLL is both a clock provider and a clock consumer. It uses the clock + signal generated by the external oscillator, and provides two output signals + ("pll" and "pll-switched"). +* The UART has its baud clock connected the external oscillator and its + register clock connected to the PLL clock (the "pll-switched" signal) --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/fixed-clock.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/fixed-clock.txt @@ -0,0 +1,21 @@ +Binding for simple fixed-rate clock sources. + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be "fixed-clock". +- #clock-cells : from common clock binding; shall be set to 0. +- clock-frequency : frequency of clock in Hz. Should be a single cell. + +Optional properties: +- gpios : From common gpio binding; gpio connection to clock enable pin. +- clock-output-names : From common clock binding. + +Example: + clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <1000000000>; + }; --- linux-3.5.0.orig/Documentation/devicetree/bindings/clock/calxeda.txt +++ linux-3.5.0/Documentation/devicetree/bindings/clock/calxeda.txt @@ -0,0 +1,17 @@ +Device Tree Clock bindings for Calxeda highbank platform + +This binding uses the common clock binding[1]. + +[1] Documentation/devicetree/bindings/clock/clock-bindings.txt + +Required properties: +- compatible : shall be one of the following: + "calxeda,hb-pll-clock" - for a PLL clock + "calxeda,hb-a9periph-clock" - The A9 peripheral clock divided from the + A9 clock. + "calxeda,hb-a9bus-clock" - The A9 bus clock divided from the A9 clock. + "calxeda,hb-emmc-clock" - Divided clock for MMC/SD controller. +- reg : shall be the control register offset from SYSREGs base for the clock. +- clocks : shall be the input parent clock phandle for the clock. This is + either an oscillator or a pll output. +- #clock-cells : from common clock binding; shall be set to 0. --- linux-3.5.0.orig/Documentation/serial/00-INDEX +++ linux-3.5.0/Documentation/serial/00-INDEX @@ -2,8 +2,6 @@ - this file. README.cycladesZ - info on Cyclades-Z firmware loading. -computone.txt - - info on Computone Intelliport II/Plus Multiport Serial Driver. digiepca.txt - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards. hayes-esp.txt --- linux-3.5.0.orig/Documentation/cgroups/memory.txt +++ linux-3.5.0/Documentation/cgroups/memory.txt @@ -464,6 +464,10 @@ 5.3 swappiness Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only. +Please note that unlike the global swappiness, memcg knob set to 0 +really prevents from any swapping even if there is a swap storage +available. This might lead to memcg OOM killer if there are no file +pages to reclaim. Following cgroups' swappiness can't be changed. - root cgroup (uses /proc/sys/vm/swappiness). --- linux-3.5.0.orig/Documentation/dvb/get_dvb_firmware +++ linux-3.5.0/Documentation/dvb/get_dvb_firmware @@ -116,7 +116,7 @@ sub tda10046 { my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip"; - my $url = "http://www.tt-download.com/download/updates/219/$sourcefile"; + my $url = "http://technotrend.com.ua/download/software/219/$sourcefile"; my $hash = "6a7e1e2f2644b162ff0502367553c72d"; my $outfile = "dvb-fe-tda10046.fw"; my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); --- linux-3.5.0.orig/Documentation/sound/alsa/HD-Audio-Models.txt +++ linux-3.5.0/Documentation/sound/alsa/HD-Audio-Models.txt @@ -21,10 +21,11 @@ ========== N/A -ALC269 +ALC269/270/275/276/280/282 ====== laptop-amic Laptops with analog-mic input laptop-dmic Laptops with digital-mic input + lenovo-dock Enables docking station I/O for some Lenovos ALC662/663/272 ============== @@ -46,6 +47,7 @@ acer-aspire-4930g Acer Aspire 4930G/5930G/6530G/6930G/7730G acer-aspire-8930g Acer Aspire 8330G/6935G acer-aspire Acer Aspire others + no-primary-hp VAIO Z workaround (for fixed speaker DAC) ALC861/660 ========== --- linux-3.5.0.orig/Documentation/security/Yama.txt +++ linux-3.5.0/Documentation/security/Yama.txt @@ -5,10 +5,54 @@ Yama is controlled through sysctl in /proc/sys/kernel/yama: +- protected_sticky_symlinks +- protected_nonaccess_hardlinks - ptrace_scope ============================================================== +protected_sticky_symlinks: + +A long-standing class of security issues is the symlink-based +time-of-check-time-of-use race, most commonly seen in world-writable +directories like /tmp. The common method of exploitation of this flaw +is to cross privilege boundaries when following a given symlink (i.e. a +root process follows a symlink belonging to another user). For a likely +incomplete list of hundreds of examples across the years, please see: +http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp + +When set to "0", symlink following behavior is unrestricted. + +When set to "1" symlinks are permitted to be followed only when outside +a sticky world-writable directory, or when the uid of the symlink and +follower match, or when the directory owner matches the symlink's owner. + +This protection is based on the restrictions in Openwall and grsecurity. + +============================================================== + +protected_nonaccess_hardlinks: + +Hardlinks can be abused in a similar fashion to symlinks in sticky +world-writable directories, but their weakness is not limited to +just that scenario. For example, if /etc and /home are on the same +partition, a regular user can create a hardlink to /etc/shadow in their +home directory. While it retains the original owner and permissions, +it is possible for privileged programs that are otherwise symlink-safe +to mistakenly access the file through its hardlink. Additionally, a very +minor untraceable quota-bypassing local denial of service is possible by +an attacker exhausting disk space by filling a world-writable directory +with hardlinks. + +When set to "0", hardlink creation behavior is unrestricted. + +When set to "1", hardlinks cannot be created to files that a given user +would be unable to read and write originally, or are otherwise sensitive. + +This protection is based on the restrictions in Openwall and grsecurity. + +============================================================== + ptrace_scope: As Linux grows in popularity, it will become a larger target for @@ -46,14 +90,13 @@ so that any otherwise allowed process (even those in external pid namespaces) may attach. -These restrictions do not change how ptrace via PTRACE_TRACEME operates. - -The sysctl settings are: +The sysctl settings (writable only with CAP_SYS_PTRACE) are: 0 - classic ptrace permissions: a process can PTRACE_ATTACH to any other process running under the same uid, as long as it is dumpable (i.e. did not transition uids, start privileged, or have called - prctl(PR_SET_DUMPABLE...) already). + prctl(PR_SET_DUMPABLE...) already). Similarly, PTRACE_TRACEME is + unchanged. 1 - restricted ptrace: a process must have a predefined relationship with the inferior it wants to call PTRACE_ATTACH on. By default, @@ -61,12 +104,13 @@ classic criteria is also met. To change the relationship, an inferior can call prctl(PR_SET_PTRACER, debugger, ...) to declare an allowed debugger PID to call PTRACE_ATTACH on the inferior. + Using PTRACE_TRACEME is unchanged. 2 - admin-only attach: only processes with CAP_SYS_PTRACE may use ptrace - with PTRACE_ATTACH. + with PTRACE_ATTACH, or through children calling PTRACE_TRACEME. -3 - no attach: no processes may use ptrace with PTRACE_ATTACH. Once set, - this sysctl cannot be changed to a lower value. +3 - no attach: no processes may use ptrace with PTRACE_ATTACH nor via + PTRACE_TRACEME. Once set, this sysctl value cannot be changed. The original children-only logic was based on the restrictions in grsecurity. --- linux-3.5.0.orig/Documentation/hwmon/coretemp +++ linux-3.5.0/Documentation/hwmon/coretemp @@ -105,6 +105,7 @@ 330/230 125 E680/660/640/620 90 E680T/660T/640T/620T 110 + CE4170/4150/4110 110 45nm Core2 Processors Solo ULV SU3500/3300 100 --- linux-3.5.0.orig/Documentation/networking/ip-sysctl.txt +++ linux-3.5.0/Documentation/networking/ip-sysctl.txt @@ -551,6 +551,11 @@ Documentation/networking/tcp-thin.txt Default: 0 +tcp_challenge_ack_limit - INTEGER + Limits number of Challenge ACK sent per second, as recommended + in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks) + Default: 100 + UDP variables: udp_mem - vector of 3 INTEGERs: min, pressure, max --- linux-3.5.0.orig/Documentation/i2c/busses/i2c-i801 +++ linux-3.5.0/Documentation/i2c/busses/i2c-i801 @@ -21,6 +21,7 @@ * Intel DH89xxCC (PCH) * Intel Panther Point (PCH) * Intel Lynx Point (PCH) + * Intel Lynx Point-LP (PCH) Datasheets: Publicly available at the Intel website On Intel Patsburg and later chipsets, both the normal host SMBus controller --- linux-3.5.0.orig/Documentation/x86/boot.txt +++ linux-3.5.0/Documentation/x86/boot.txt @@ -54,6 +54,9 @@ beyond the kernel_alignment added, new init_size and pref_address fields. Added extended boot loader IDs. +Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover + protocol entry point. + **** MEMORY LAYOUT The traditional memory map for the kernel loader, used for Image or @@ -189,6 +192,7 @@ of struct setup_data 0258/8 2.10+ pref_address Preferred loading address 0260/4 2.10+ init_size Linear memory required during initialization +0264/4 2.11+ handover_offset Offset of handover entry point (1) For backwards compatibility, if the setup_sects field contains 0, the real value is 4. @@ -690,6 +694,16 @@ else runtime_start = pref_address +Field name: handover_offset +Type: read +Offset/size: 0x264/4 + + This field is the offset from the beginning of the kernel image to + the EFI handover protocol entry point. Boot loaders using the EFI + handover protocol to boot the kernel should jump to this offset. + + See EFI HANDOVER PROTOCOL below for more details. + **** THE IMAGE CHECKSUM @@ -1010,3 +1024,30 @@ must have read/write permission; CS must be __BOOT_CS and DS, ES, SS must be __BOOT_DS; interrupt must be disabled; %esi must hold the base address of the struct boot_params; %ebp, %edi and %ebx must be zero. + +**** EFI HANDOVER PROTOCOL + +This protocol allows boot loaders to defer initialisation to the EFI +boot stub. The boot loader is required to load the kernel/initrd(s) +from the boot media and jump to the EFI handover protocol entry point +which is hdr->handover_offset bytes from the beginning of +startup_{32,64}. + +The function prototype for the handover entry point looks like this, + + efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp) + +'handle' is the EFI image handle passed to the boot loader by the EFI +firmware, 'table' is the EFI system table - these are the first two +arguments of the "handoff state" as described in section 2.3 of the +UEFI specification. 'bp' is the boot loader-allocated boot params. + +The boot loader *must* fill out the following fields in bp, + + o hdr.code32_start + o hdr.cmd_line_ptr + o hdr.cmdline_size + o hdr.ramdisk_image (if applicable) + o hdr.ramdisk_size (if applicable) + +All other fields should be zero. --- linux-3.5.0.orig/sound/aoa/codecs/onyx.c +++ linux-3.5.0/sound/aoa/codecs/onyx.c @@ -997,45 +997,10 @@ onyx->codec.soundbus_dev->detach_codec(onyx->codec.soundbus_dev, onyx); } -static int onyx_create(struct i2c_adapter *adapter, - struct device_node *node, - int addr) -{ - struct i2c_board_info info; - struct i2c_client *client; - - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "aoa_codec_onyx", I2C_NAME_SIZE); - info.addr = addr; - info.platform_data = node; - client = i2c_new_device(adapter, &info); - if (!client) - return -ENODEV; - - /* - * We know the driver is already loaded, so the device should be - * already bound. If not it means binding failed, which suggests - * the device doesn't really exist and should be deleted. - * Ideally this would be replaced by better checks _before_ - * instantiating the device. - */ - if (!client->driver) { - i2c_unregister_device(client); - return -ENODEV; - } - - /* - * Let i2c-core delete that device on driver removal. - * This is safe because i2c-core holds the core_lock mutex for us. - */ - list_add_tail(&client->detected, &client->driver->clients); - return 0; -} - static int onyx_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct device_node *node = client->dev.platform_data; + struct device_node *node = client->dev.of_node; struct onyx *onyx; u8 dummy; @@ -1071,40 +1036,6 @@ return -ENODEV; } -static int onyx_i2c_attach(struct i2c_adapter *adapter) -{ - struct device_node *busnode, *dev = NULL; - struct pmac_i2c_bus *bus; - - bus = pmac_i2c_adapter_to_bus(adapter); - if (bus == NULL) - return -ENODEV; - busnode = pmac_i2c_get_bus_node(bus); - - while ((dev = of_get_next_child(busnode, dev)) != NULL) { - if (of_device_is_compatible(dev, "pcm3052")) { - const u32 *addr; - printk(KERN_DEBUG PFX "found pcm3052\n"); - addr = of_get_property(dev, "reg", NULL); - if (!addr) - return -ENODEV; - return onyx_create(adapter, dev, (*addr)>>1); - } - } - - /* if that didn't work, try desperate mode for older - * machines that have stuff missing from the device tree */ - - if (!of_device_is_compatible(busnode, "k2-i2c")) - return -ENODEV; - - printk(KERN_DEBUG PFX "found k2-i2c, checking if onyx chip is on it\n"); - /* probe both possible addresses for the onyx chip */ - if (onyx_create(adapter, NULL, 0x46) == 0) - return 0; - return onyx_create(adapter, NULL, 0x47); -} - static int onyx_i2c_remove(struct i2c_client *client) { struct onyx *onyx = i2c_get_clientdata(client); @@ -1117,16 +1048,16 @@ } static const struct i2c_device_id onyx_i2c_id[] = { - { "aoa_codec_onyx", 0 }, + { "MAC,pcm3052", 0 }, { } }; +MODULE_DEVICE_TABLE(i2c,onyx_i2c_id); static struct i2c_driver onyx_driver = { .driver = { .name = "aoa_codec_onyx", .owner = THIS_MODULE, }, - .attach_adapter = onyx_i2c_attach, .probe = onyx_i2c_probe, .remove = onyx_i2c_remove, .id_table = onyx_i2c_id, --- linux-3.5.0.orig/sound/aoa/codecs/tas.c +++ linux-3.5.0/sound/aoa/codecs/tas.c @@ -883,43 +883,10 @@ } -static int tas_create(struct i2c_adapter *adapter, - struct device_node *node, - int addr) -{ - struct i2c_board_info info; - struct i2c_client *client; - - memset(&info, 0, sizeof(struct i2c_board_info)); - strlcpy(info.type, "aoa_codec_tas", I2C_NAME_SIZE); - info.addr = addr; - info.platform_data = node; - - client = i2c_new_device(adapter, &info); - if (!client) - return -ENODEV; - /* - * We know the driver is already loaded, so the device should be - * already bound. If not it means binding failed, and then there - * is no point in keeping the device instantiated. - */ - if (!client->driver) { - i2c_unregister_device(client); - return -ENODEV; - } - - /* - * Let i2c-core delete that device on driver removal. - * This is safe because i2c-core holds the core_lock mutex for us. - */ - list_add_tail(&client->detected, &client->driver->clients); - return 0; -} - static int tas_i2c_probe(struct i2c_client *client, const struct i2c_device_id *id) { - struct device_node *node = client->dev.platform_data; + struct device_node *node = client->dev.of_node; struct tas *tas; tas = kzalloc(sizeof(struct tas), GFP_KERNEL); @@ -953,47 +920,6 @@ return -EINVAL; } -static int tas_i2c_attach(struct i2c_adapter *adapter) -{ - struct device_node *busnode, *dev = NULL; - struct pmac_i2c_bus *bus; - - bus = pmac_i2c_adapter_to_bus(adapter); - if (bus == NULL) - return -ENODEV; - busnode = pmac_i2c_get_bus_node(bus); - - while ((dev = of_get_next_child(busnode, dev)) != NULL) { - if (of_device_is_compatible(dev, "tas3004")) { - const u32 *addr; - printk(KERN_DEBUG PFX "found tas3004\n"); - addr = of_get_property(dev, "reg", NULL); - if (!addr) - continue; - return tas_create(adapter, dev, ((*addr) >> 1) & 0x7f); - } - /* older machines have no 'codec' node with a 'compatible' - * property that says 'tas3004', they just have a 'deq' - * node without any such property... */ - if (strcmp(dev->name, "deq") == 0) { - const u32 *_addr; - u32 addr; - printk(KERN_DEBUG PFX "found 'deq' node\n"); - _addr = of_get_property(dev, "i2c-address", NULL); - if (!_addr) - continue; - addr = ((*_addr) >> 1) & 0x7f; - /* now, if the address doesn't match any of the two - * that a tas3004 can have, we cannot handle this. - * I doubt it ever happens but hey. */ - if (addr != 0x34 && addr != 0x35) - continue; - return tas_create(adapter, dev, addr); - } - } - return -ENODEV; -} - static int tas_i2c_remove(struct i2c_client *client) { struct tas *tas = i2c_get_clientdata(client); @@ -1011,16 +937,16 @@ } static const struct i2c_device_id tas_i2c_id[] = { - { "aoa_codec_tas", 0 }, + { "MAC,tas3004", 0 }, { } }; +MODULE_DEVICE_TABLE(i2c,tas_i2c_id); static struct i2c_driver tas_driver = { .driver = { .name = "aoa_codec_tas", .owner = THIS_MODULE, }, - .attach_adapter = tas_i2c_attach, .probe = tas_i2c_probe, .remove = tas_i2c_remove, .id_table = tas_i2c_id, --- linux-3.5.0.orig/sound/usb/pcm.c +++ linux-3.5.0/sound/usb/pcm.c @@ -71,6 +71,8 @@ unsigned int hwptr_done; subs = (struct snd_usb_substream *)substream->runtime->private_data; + if (subs->stream->chip->shutdown) + return SNDRV_PCM_POS_XRUN; spin_lock(&subs->lock); hwptr_done = subs->hwptr_done; substream->runtime->delay = snd_usb_pcm_delay(subs, @@ -212,7 +214,7 @@ } } -static int start_endpoints(struct snd_usb_substream *subs) +static int start_endpoints(struct snd_usb_substream *subs, int can_sleep) { int err; @@ -225,7 +227,7 @@ snd_printdd(KERN_DEBUG "Starting data EP @%p\n", ep); ep->data_subs = subs; - err = snd_usb_endpoint_start(ep); + err = snd_usb_endpoint_start(ep, can_sleep); if (err < 0) { clear_bit(SUBSTREAM_FLAG_DATA_EP_STARTED, &subs->flags); return err; @@ -236,10 +238,25 @@ !test_and_set_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags)) { struct snd_usb_endpoint *ep = subs->sync_endpoint; + if (subs->data_endpoint->iface != subs->sync_endpoint->iface || + subs->data_endpoint->alt_idx != subs->sync_endpoint->alt_idx) { + err = usb_set_interface(subs->dev, + subs->sync_endpoint->iface, + subs->sync_endpoint->alt_idx); + if (err < 0) { + snd_printk(KERN_ERR + "%d:%d:%d: cannot set interface (%d)\n", + subs->dev->devnum, + subs->sync_endpoint->iface, + subs->sync_endpoint->alt_idx, err); + return -EIO; + } + } + snd_printdd(KERN_DEBUG "Starting sync EP @%p\n", ep); ep->sync_slave = subs->data_endpoint; - err = snd_usb_endpoint_start(ep); + err = snd_usb_endpoint_start(ep, can_sleep); if (err < 0) { clear_bit(SUBSTREAM_FLAG_SYNC_EP_STARTED, &subs->flags); return err; @@ -456,8 +473,14 @@ changed = subs->cur_audiofmt != fmt || subs->period_bytes != params_period_bytes(hw_params) || subs->cur_rate != rate; + + down_read(&subs->stream->chip->shutdown_rwsem); + if (subs->stream->chip->shutdown) { + ret = -ENODEV; + goto unlock; + } if ((ret = set_format(subs, fmt)) < 0) - return ret; + goto unlock; if (subs->cur_rate != rate) { struct usb_host_interface *alts; @@ -466,12 +489,11 @@ alts = &iface->altsetting[fmt->altset_idx]; ret = snd_usb_init_sample_rate(subs->stream->chip, fmt->iface, alts, fmt, rate); if (ret < 0) - return ret; + goto unlock; subs->cur_rate = rate; } if (changed) { - mutex_lock(&subs->stream->chip->shutdown_mutex); /* format changed */ stop_endpoints(subs, 0, 0, 0); ret = snd_usb_endpoint_set_params(subs->data_endpoint, hw_params, fmt, @@ -482,8 +504,6 @@ if (subs->sync_endpoint) ret = snd_usb_endpoint_set_params(subs->sync_endpoint, hw_params, fmt, NULL); -unlock: - mutex_unlock(&subs->stream->chip->shutdown_mutex); } if (ret == 0) { @@ -491,6 +511,8 @@ subs->altset_idx = fmt->altset_idx; } +unlock: + up_read(&subs->stream->chip->shutdown_rwsem); return ret; } @@ -506,10 +528,12 @@ subs->cur_audiofmt = NULL; subs->cur_rate = 0; subs->period_bytes = 0; - mutex_lock(&subs->stream->chip->shutdown_mutex); - stop_endpoints(subs, 0, 1, 1); - deactivate_endpoints(subs); - mutex_unlock(&subs->stream->chip->shutdown_mutex); + down_read(&subs->stream->chip->shutdown_rwsem); + if (!subs->stream->chip->shutdown) { + stop_endpoints(subs, 0, 1, 1); + deactivate_endpoints(subs); + } + up_read(&subs->stream->chip->shutdown_rwsem); return snd_pcm_lib_free_vmalloc_buffer(substream); } @@ -522,14 +546,22 @@ { struct snd_pcm_runtime *runtime = substream->runtime; struct snd_usb_substream *subs = runtime->private_data; + int ret = 0; if (! subs->cur_audiofmt) { snd_printk(KERN_ERR "usbaudio: no format is specified!\n"); return -ENXIO; } - if (snd_BUG_ON(!subs->data_endpoint)) - return -EIO; + down_read(&subs->stream->chip->shutdown_rwsem); + if (subs->stream->chip->shutdown) { + ret = -ENODEV; + goto unlock; + } + if (snd_BUG_ON(!subs->data_endpoint)) { + ret = -EIO; + goto unlock; + } /* some unit conversions in runtime */ subs->data_endpoint->maxframesize = @@ -547,9 +579,11 @@ /* for playback, submit the URBs now; otherwise, the first hwptr_done * updates for all URBs would happen at the same time when starting */ if (subs->direction == SNDRV_PCM_STREAM_PLAYBACK) - return start_endpoints(subs); + ret = start_endpoints(subs, 1); - return 0; + unlock: + up_read(&subs->stream->chip->shutdown_rwsem); + return ret; } static struct snd_pcm_hardware snd_usb_hardware = @@ -602,7 +636,7 @@ return 0; } /* check whether the period time is >= the data packet interval */ - if (snd_usb_get_speed(subs->dev) != USB_SPEED_FULL) { + if (subs->speed != USB_SPEED_FULL) { ptime = 125 * (1 << fp->datainterval); if (ptime > pt->max || (ptime == pt->max && pt->openmax)) { hwc_debug(" > check: ptime %u > max %u\n", ptime, pt->max); @@ -880,7 +914,7 @@ return err; param_period_time_if_needed = SNDRV_PCM_HW_PARAM_PERIOD_TIME; - if (snd_usb_get_speed(subs->dev) == USB_SPEED_FULL) + if (subs->speed == USB_SPEED_FULL) /* full speed devices have fixed data packet interval */ ptmin = 1000; if (ptmin == 1000) @@ -1029,6 +1063,7 @@ struct urb *urb) { struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; + struct snd_usb_endpoint *ep = subs->data_endpoint; struct snd_urb_ctx *ctx = urb->context; unsigned int counts, frames, bytes; int i, stride, period_elapsed = 0; @@ -1040,7 +1075,11 @@ urb->number_of_packets = 0; spin_lock_irqsave(&subs->lock, flags); for (i = 0; i < ctx->packets; i++) { - counts = ctx->packet_size[i]; + if (ctx->packet_size[i]) + counts = ctx->packet_size[i]; + else + counts = snd_usb_endpoint_next_packet_size(ep); + /* set up descriptor */ urb->iso_frame_desc[i].offset = frames * stride; urb->iso_frame_desc[i].length = counts * stride; @@ -1091,7 +1130,16 @@ subs->hwptr_done += bytes; if (subs->hwptr_done >= runtime->buffer_size * stride) subs->hwptr_done -= runtime->buffer_size * stride; + + /* update delay with exact number of samples queued */ + runtime->delay = subs->last_delay; runtime->delay += frames; + subs->last_delay = runtime->delay; + + /* realign last_frame_number */ + subs->last_frame_number = usb_get_current_frame_number(subs->dev); + subs->last_frame_number &= 0xFF; /* keep 8 LSBs */ + spin_unlock_irqrestore(&subs->lock, flags); urb->transfer_buffer_length = bytes; if (period_elapsed) @@ -1109,12 +1157,32 @@ struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; int stride = runtime->frame_bits >> 3; int processed = urb->transfer_buffer_length / stride; + int est_delay; + + /* ignore the delay accounting when procssed=0 is given, i.e. + * silent payloads are procssed before handling the actual data + */ + if (!processed) + return; spin_lock_irqsave(&subs->lock, flags); - if (processed > runtime->delay) - runtime->delay = 0; + est_delay = snd_usb_pcm_delay(subs, runtime->rate); + /* update delay with exact number of samples played */ + if (processed > subs->last_delay) + subs->last_delay = 0; else - runtime->delay -= processed; + subs->last_delay -= processed; + runtime->delay = subs->last_delay; + + /* + * Report when delay estimate is off by more than 2ms. + * The error should be lower than 2ms since the estimate relies + * on two reads of a counter updated every ms. + */ + if (abs(est_delay - subs->last_delay) * 1000 > runtime->rate * 2) + snd_printk(KERN_DEBUG "delay: estimated %d, actual %d\n", + est_delay, subs->last_delay); + spin_unlock_irqrestore(&subs->lock, flags); } @@ -1172,7 +1240,7 @@ switch (cmd) { case SNDRV_PCM_TRIGGER_START: - err = start_endpoints(subs); + err = start_endpoints(subs, 0); if (err < 0) return err; --- linux-3.5.0.orig/sound/usb/clock.c +++ linux-3.5.0/sound/usb/clock.c @@ -111,7 +111,8 @@ return 0; /* If a clock source can't tell us whether it's valid, we assume it is */ - if (!uac2_control_is_readable(cs_desc->bmControls, UAC2_CS_CONTROL_CLOCK_VALID)) + if (!uac2_control_is_readable(cs_desc->bmControls, + UAC2_CS_CONTROL_CLOCK_VALID - 1)) return 1; err = snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), UAC2_CS_CUR, --- linux-3.5.0.orig/sound/usb/endpoint.h +++ linux-3.5.0/sound/usb/endpoint.h @@ -13,7 +13,7 @@ struct audioformat *fmt, struct snd_usb_endpoint *sync_ep); -int snd_usb_endpoint_start(struct snd_usb_endpoint *ep); +int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep); void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep, int force, int can_sleep, int wait); int snd_usb_endpoint_activate(struct snd_usb_endpoint *ep); @@ -21,6 +21,7 @@ void snd_usb_endpoint_free(struct list_head *head); int snd_usb_endpoint_implict_feedback_sink(struct snd_usb_endpoint *ep); +int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep); void snd_usb_handle_sync_urb(struct snd_usb_endpoint *ep, struct snd_usb_endpoint *sender, --- linux-3.5.0.orig/sound/usb/card.h +++ linux-3.5.0/sound/usb/card.h @@ -123,6 +123,7 @@ struct snd_usb_endpoint *data_endpoint; struct snd_usb_endpoint *sync_endpoint; unsigned long flags; + unsigned int speed; /* USB_SPEED_XXX */ u64 formats; /* format bitmasks (all or'ed) */ unsigned int num_formats; /* number of supported audio formats (list) */ --- linux-3.5.0.orig/sound/usb/card.c +++ linux-3.5.0/sound/usb/card.c @@ -339,7 +339,7 @@ } mutex_init(&chip->mutex); - mutex_init(&chip->shutdown_mutex); + init_rwsem(&chip->shutdown_rwsem); chip->index = idx; chip->dev = dev; chip->card = card; @@ -553,15 +553,17 @@ struct snd_usb_audio *chip) { struct snd_card *card; - struct list_head *p; + struct list_head *p, *n; if (chip == (void *)-1L) return; card = chip->card; - mutex_lock(®ister_mutex); - mutex_lock(&chip->shutdown_mutex); + down_write(&chip->shutdown_rwsem); chip->shutdown = 1; + up_write(&chip->shutdown_rwsem); + + mutex_lock(®ister_mutex); chip->num_interfaces--; if (chip->num_interfaces <= 0) { snd_card_disconnect(card); @@ -570,7 +572,7 @@ snd_usb_stream_disconnect(p); } /* release the endpoint resources */ - list_for_each(p, &chip->ep_list) { + list_for_each_safe(p, n, &chip->ep_list) { snd_usb_endpoint_free(p); } /* release the midi resources */ @@ -582,11 +584,9 @@ snd_usb_mixer_disconnect(p); } usb_chip[chip->index] = NULL; - mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); snd_card_free_when_closed(card); } else { - mutex_unlock(&chip->shutdown_mutex); mutex_unlock(®ister_mutex); } } @@ -618,16 +618,20 @@ { int err = -ENODEV; + down_read(&chip->shutdown_rwsem); if (!chip->shutdown && !chip->probing) err = usb_autopm_get_interface(chip->pm_intf); + up_read(&chip->shutdown_rwsem); return err; } void snd_usb_autosuspend(struct snd_usb_audio *chip) { + down_read(&chip->shutdown_rwsem); if (!chip->shutdown && !chip->probing) usb_autopm_put_interface(chip->pm_intf); + up_read(&chip->shutdown_rwsem); } static int usb_audio_suspend(struct usb_interface *intf, pm_message_t message) --- linux-3.5.0.orig/sound/usb/stream.c +++ linux-3.5.0/sound/usb/stream.c @@ -90,6 +90,7 @@ subs->direction = stream; subs->dev = as->chip->dev; subs->txfr_quirk = as->chip->txfr_quirk; + subs->speed = snd_usb_get_speed(subs->dev); snd_usb_set_pcm_ops(as->pcm, stream); --- linux-3.5.0.orig/sound/usb/quirks-table.h +++ linux-3.5.0/sound/usb/quirks-table.h @@ -1658,7 +1658,7 @@ .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { /* .vendor_name = "Roland", */ /* .product_name = "A-PRO", */ - .ifnum = 1, + .ifnum = 0, .type = QUIRK_MIDI_FIXED_ENDPOINT, .data = & (const struct snd_usb_midi_endpoint_info) { .out_cables = 0x0003, @@ -2781,6 +2781,59 @@ } }, +/* Microsoft XboxLive Headset/Xbox Communicator */ +{ + USB_DEVICE(0x045e, 0x0283), + .bInterfaceClass = USB_CLASS_PER_INTERFACE, + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "Microsoft", + .product_name = "XboxLive Headset/Xbox Communicator", + .ifnum = QUIRK_ANY_INTERFACE, + .type = QUIRK_COMPOSITE, + .data = &(const struct snd_usb_audio_quirk[]) { + { + /* playback */ + .ifnum = 0, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 1, + .iface = 0, + .altsetting = 0, + .altset_idx = 0, + .attributes = 0, + .endpoint = 0x04, + .ep_attr = 0x05, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 22050, + .rate_max = 22050 + } + }, + { + /* capture */ + .ifnum = 1, + .type = QUIRK_AUDIO_FIXED_ENDPOINT, + .data = &(const struct audioformat) { + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels = 1, + .iface = 1, + .altsetting = 0, + .altset_idx = 0, + .attributes = 0, + .endpoint = 0x85, + .ep_attr = 0x05, + .rates = SNDRV_PCM_RATE_CONTINUOUS, + .rate_min = 16000, + .rate_max = 16000 + } + }, + { + .ifnum = -1 + } + } + } +}, + { /* * Some USB MIDI devices don't have an audio control interface, --- linux-3.5.0.orig/sound/usb/proc.c +++ linux-3.5.0/sound/usb/proc.c @@ -108,7 +108,7 @@ } snd_iprintf(buffer, "\n"); } - if (snd_usb_get_speed(subs->dev) != USB_SPEED_FULL) + if (subs->speed != USB_SPEED_FULL) snd_iprintf(buffer, " Data packet interval: %d us\n", 125 * (1 << fp->datainterval)); // snd_iprintf(buffer, " Max Packet Size = %d\n", fp->maxpacksize); @@ -124,7 +124,7 @@ return; snd_iprintf(buffer, " Packet Size = %d\n", ep->curpacksize); snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n", - snd_usb_get_speed(subs->dev) == USB_SPEED_FULL + subs->speed == USB_SPEED_FULL ? get_full_speed_hz(ep->freqm) : get_high_speed_hz(ep->freqm), ep->freqm >> 16, ep->freqm & 0xffff); --- linux-3.5.0.orig/sound/usb/midi.c +++ linux-3.5.0/sound/usb/midi.c @@ -116,6 +116,7 @@ struct list_head list; struct timer_list error_timer; spinlock_t disc_lock; + struct rw_semaphore disc_rwsem; struct mutex mutex; u32 usb_id; int next_midi_device; @@ -125,8 +126,10 @@ struct snd_usb_midi_in_endpoint *in; } endpoints[MIDI_MAX_ENDPOINTS]; unsigned long input_triggered; - unsigned int opened; + bool autopm_reference; + unsigned int opened[2]; unsigned char disconnected; + unsigned char input_running; struct snd_kcontrol *roland_load_ctl; }; @@ -1032,29 +1035,58 @@ snd_usbmidi_input_start(&umidi->list); } -static void substream_open(struct snd_rawmidi_substream *substream, int open) +static int substream_open(struct snd_rawmidi_substream *substream, int dir, + int open) { struct snd_usb_midi* umidi = substream->rmidi->private_data; struct snd_kcontrol *ctl; + int err; + + down_read(&umidi->disc_rwsem); + if (umidi->disconnected) { + up_read(&umidi->disc_rwsem); + return open ? -ENODEV : 0; + } mutex_lock(&umidi->mutex); if (open) { - if (umidi->opened++ == 0 && umidi->roland_load_ctl) { - ctl = umidi->roland_load_ctl; - ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; - snd_ctl_notify(umidi->card, + if (!umidi->opened[0] && !umidi->opened[1]) { + err = usb_autopm_get_interface(umidi->iface); + umidi->autopm_reference = err >= 0; + if (err < 0 && err != -EACCES) { + mutex_unlock(&umidi->mutex); + up_read(&umidi->disc_rwsem); + return -EIO; + } + if (umidi->roland_load_ctl) { + ctl = umidi->roland_load_ctl; + ctl->vd[0].access |= SNDRV_CTL_ELEM_ACCESS_INACTIVE; + snd_ctl_notify(umidi->card, SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); - update_roland_altsetting(umidi); + update_roland_altsetting(umidi); + } } + umidi->opened[dir]++; + if (umidi->opened[1]) + snd_usbmidi_input_start(&umidi->list); } else { - if (--umidi->opened == 0 && umidi->roland_load_ctl) { - ctl = umidi->roland_load_ctl; - ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; - snd_ctl_notify(umidi->card, + umidi->opened[dir]--; + if (!umidi->opened[1]) + snd_usbmidi_input_stop(&umidi->list); + if (!umidi->opened[0] && !umidi->opened[1]) { + if (umidi->roland_load_ctl) { + ctl = umidi->roland_load_ctl; + ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE; + snd_ctl_notify(umidi->card, SNDRV_CTL_EVENT_MASK_INFO, &ctl->id); + } + if (umidi->autopm_reference) + usb_autopm_put_interface(umidi->iface); } } mutex_unlock(&umidi->mutex); + up_read(&umidi->disc_rwsem); + return 0; } static int snd_usbmidi_output_open(struct snd_rawmidi_substream *substream) @@ -1062,7 +1094,6 @@ struct snd_usb_midi* umidi = substream->rmidi->private_data; struct usbmidi_out_port* port = NULL; int i, j; - int err; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) if (umidi->endpoints[i].out) @@ -1075,22 +1106,15 @@ snd_BUG(); return -ENXIO; } - err = usb_autopm_get_interface(umidi->iface); - if (err < 0) - return -EIO; + substream->runtime->private_data = port; port->state = STATE_UNKNOWN; - substream_open(substream, 1); - return 0; + return substream_open(substream, 0, 1); } static int snd_usbmidi_output_close(struct snd_rawmidi_substream *substream) { - struct snd_usb_midi* umidi = substream->rmidi->private_data; - - substream_open(substream, 0); - usb_autopm_put_interface(umidi->iface); - return 0; + return substream_open(substream, 0, 0); } static void snd_usbmidi_output_trigger(struct snd_rawmidi_substream *substream, int up) @@ -1143,14 +1167,12 @@ static int snd_usbmidi_input_open(struct snd_rawmidi_substream *substream) { - substream_open(substream, 1); - return 0; + return substream_open(substream, 1, 1); } static int snd_usbmidi_input_close(struct snd_rawmidi_substream *substream) { - substream_open(substream, 0); - return 0; + return substream_open(substream, 1, 0); } static void snd_usbmidi_input_trigger(struct snd_rawmidi_substream *substream, int up) @@ -1399,9 +1421,12 @@ * a timer may submit an URB. To reliably break the cycle * a flag under lock must be used */ + down_write(&umidi->disc_rwsem); spin_lock_irq(&umidi->disc_lock); umidi->disconnected = 1; spin_unlock_irq(&umidi->disc_lock); + up_write(&umidi->disc_rwsem); + for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; if (ep->out) @@ -2056,12 +2081,15 @@ unsigned int i, j; umidi = list_entry(p, struct snd_usb_midi, list); + if (!umidi->input_running) + return; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) { struct snd_usb_midi_endpoint* ep = &umidi->endpoints[i]; if (ep->in) for (j = 0; j < INPUT_URBS; ++j) usb_kill_urb(ep->in->urbs[j]); } + umidi->input_running = 0; } static void snd_usbmidi_input_start_ep(struct snd_usb_midi_in_endpoint* ep) @@ -2086,8 +2114,11 @@ int i; umidi = list_entry(p, struct snd_usb_midi, list); + if (umidi->input_running || !umidi->opened[1]) + return; for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) snd_usbmidi_input_start_ep(umidi->endpoints[i].in); + umidi->input_running = 1; } /* @@ -2113,6 +2144,7 @@ umidi->usb_protocol_ops = &snd_usbmidi_standard_ops; init_timer(&umidi->error_timer); spin_lock_init(&umidi->disc_lock); + init_rwsem(&umidi->disc_rwsem); mutex_init(&umidi->mutex); umidi->usb_id = USB_ID(le16_to_cpu(umidi->dev->descriptor.idVendor), le16_to_cpu(umidi->dev->descriptor.idProduct)); @@ -2225,9 +2257,6 @@ } list_add_tail(&umidi->list, midi_list); - - for (i = 0; i < MIDI_MAX_ENDPOINTS; ++i) - snd_usbmidi_input_start_ep(umidi->endpoints[i].in); return 0; } --- linux-3.5.0.orig/sound/usb/quirks.c +++ linux-3.5.0/sound/usb/quirks.c @@ -387,11 +387,13 @@ * rules */ err = usb_driver_set_configuration(dev, 2); - if (err < 0) { + if (err < 0) snd_printdd("error usb_driver_set_configuration: %d\n", err); - return -ENODEV; - } + /* Always return an error, so that we stop creating a device + that will just be destroyed and recreated with a new + configuration */ + return -ENODEV; } else snd_printk(KERN_INFO "usb-audio: Fast Track Pro config OK\n"); --- linux-3.5.0.orig/sound/usb/endpoint.c +++ linux-3.5.0/sound/usb/endpoint.c @@ -141,7 +141,7 @@ * * For implicit feedback, next_packet_size() is unused. */ -static int next_packet_size(struct snd_usb_endpoint *ep) +int snd_usb_endpoint_next_packet_size(struct snd_usb_endpoint *ep) { unsigned long flags; int ret; @@ -177,15 +177,6 @@ ep->retire_data_urb(ep->data_subs, urb); } -static void prepare_outbound_urb_sizes(struct snd_usb_endpoint *ep, - struct snd_urb_ctx *ctx) -{ - int i; - - for (i = 0; i < ctx->packets; ++i) - ctx->packet_size[i] = next_packet_size(ep); -} - /* * Prepare a PLAYBACK urb for submission to the bus. */ @@ -206,7 +197,13 @@ /* no data provider, so send silence */ unsigned int offs = 0; for (i = 0; i < ctx->packets; ++i) { - int counts = ctx->packet_size[i]; + int counts; + + if (ctx->packet_size[i]) + counts = ctx->packet_size[i]; + else + counts = snd_usb_endpoint_next_packet_size(ep); + urb->iso_frame_desc[i].offset = offs * ep->stride; urb->iso_frame_desc[i].length = counts * ep->stride; offs += counts; @@ -370,7 +367,6 @@ goto exit_clear; } - prepare_outbound_urb_sizes(ep, ctx); prepare_outbound_urb(ep, ctx); } else { retire_inbound_urb(ep, ctx); @@ -799,7 +795,9 @@ /** * snd_usb_endpoint_start: start an snd_usb_endpoint * - * @ep: the endpoint to start + * @ep: the endpoint to start + * @can_sleep: flag indicating whether the operation is executed in + * non-atomic context * * A call to this function will increment the use count of the endpoint. * In case it is not already running, the URBs for this endpoint will be @@ -809,7 +807,7 @@ * * Returns an error if the URB submission failed, 0 in all other cases. */ -int snd_usb_endpoint_start(struct snd_usb_endpoint *ep) +int snd_usb_endpoint_start(struct snd_usb_endpoint *ep, int can_sleep) { int err; unsigned int i; @@ -822,8 +820,9 @@ return 0; /* just to be sure */ - deactivate_urbs(ep, 0, 1); - wait_clear_urbs(ep); + deactivate_urbs(ep, 0, can_sleep); + if (can_sleep) + wait_clear_urbs(ep); ep->active_mask = 0; ep->unlink_mask = 0; @@ -854,7 +853,6 @@ goto __error; if (usb_pipeout(ep->pipe)) { - prepare_outbound_urb_sizes(ep, urb->context); prepare_outbound_urb(ep, urb->context); } else { prepare_inbound_urb(ep, urb->context); --- linux-3.5.0.orig/sound/usb/usbaudio.h +++ linux-3.5.0/sound/usb/usbaudio.h @@ -37,7 +37,7 @@ struct usb_interface *pm_intf; u32 usb_id; struct mutex mutex; - struct mutex shutdown_mutex; + struct rw_semaphore shutdown_rwsem; unsigned int shutdown:1; unsigned int probing:1; unsigned int autosuspended:1; --- linux-3.5.0.orig/sound/usb/mixer_quirks.c +++ linux-3.5.0/sound/usb/mixer_quirks.c @@ -257,6 +257,11 @@ if (value > 1) return -EINVAL; changed = value != mixer->audigy2nx_leds[index]; + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) { + err = -ENODEV; + goto out; + } if (mixer->chip->usb_id == USB_ID(0x041e, 0x3042)) err = snd_usb_ctl_msg(mixer->chip->dev, usb_sndctrlpipe(mixer->chip->dev, 0), 0x24, @@ -273,6 +278,8 @@ usb_sndctrlpipe(mixer->chip->dev, 0), 0x24, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, value, index + 2, NULL, 0); + out: + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; mixer->audigy2nx_leds[index] = value; @@ -366,11 +373,16 @@ for (i = 0; jacks[i].name; ++i) { snd_iprintf(buffer, "%s: ", jacks[i].name); - err = snd_usb_ctl_msg(mixer->chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = 0; + else + err = snd_usb_ctl_msg(mixer->chip->dev, usb_rcvctrlpipe(mixer->chip->dev, 0), UAC_GET_MEM, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 0, jacks[i].unitid << 8, buf, 3); + up_read(&mixer->chip->shutdown_rwsem); if (err == 3 && (buf[0] == 3 || buf[0] == 6)) snd_iprintf(buffer, "%02x %02x\n", buf[1], buf[2]); else @@ -400,10 +412,15 @@ else new_status = old_status & ~0x02; changed = new_status != old_status; - err = snd_usb_ctl_msg(mixer->chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(mixer->chip->dev, usb_sndctrlpipe(mixer->chip->dev, 0), 0x08, USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER, 50, 0, &new_status, 1); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; mixer->xonar_u1_status = new_status; @@ -442,11 +459,17 @@ u8 bRequest = (kcontrol->private_value >> 16) & 0xff; u16 wIndex = kcontrol->private_value & 0xffff; u8 tmp; + int ret; - int ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + ret = -ENODEV; + else + ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), bRequest, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN, 0, cpu_to_le16(wIndex), &tmp, sizeof(tmp), 1000); + up_read(&mixer->chip->shutdown_rwsem); if (ret < 0) { snd_printk(KERN_ERR @@ -467,11 +490,17 @@ u8 bRequest = (kcontrol->private_value >> 16) & 0xff; u16 wIndex = kcontrol->private_value & 0xffff; u16 wValue = ucontrol->value.integer.value[0]; + int ret; - int ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + ret = -ENODEV; + else + ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), bRequest, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT, cpu_to_le16(wValue), cpu_to_le16(wIndex), NULL, 0, 1000); + up_read(&mixer->chip->shutdown_rwsem); if (ret < 0) { snd_printk(KERN_ERR @@ -630,11 +659,16 @@ return -EINVAL; - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), UAC_GET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; @@ -677,11 +711,16 @@ if (!pval->is_cached) { /* Read current value */ - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), UAC_GET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; @@ -693,11 +732,16 @@ if (cur_val != new_val) { value[0] = new_val; value[1] = 0; - err = snd_usb_ctl_msg(chip->dev, + down_read(&mixer->chip->shutdown_rwsem); + if (mixer->chip->shutdown) + err = -ENODEV; + else + err = snd_usb_ctl_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0), UAC_SET_CUR, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, validx << 8, snd_usb_ctrl_intf(chip) | (id << 8), value, val_len); + up_read(&mixer->chip->shutdown_rwsem); if (err < 0) return err; --- linux-3.5.0.orig/sound/usb/mixer.c +++ linux-3.5.0/sound/usb/mixer.c @@ -287,25 +287,32 @@ unsigned char buf[2]; int val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1; int timeout = 10; - int err; + int idx = 0, err; err = snd_usb_autoresume(cval->mixer->chip); if (err < 0) return -EIO; + down_read(&chip->shutdown_rwsem); while (timeout-- > 0) { + if (chip->shutdown) + break; + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); if (snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), request, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, val_len) >= val_len) { + validx, idx, buf, val_len) >= val_len) { *value_ret = convert_signed_value(cval, snd_usb_combine_bytes(buf, val_len)); - snd_usb_autosuspend(cval->mixer->chip); - return 0; + err = 0; + goto out; } } - snd_usb_autosuspend(cval->mixer->chip); snd_printdd(KERN_ERR "cannot get ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type); - return -EINVAL; + request, validx, idx, cval->val_type); + err = -EINVAL; + + out: + up_read(&chip->shutdown_rwsem); + snd_usb_autosuspend(cval->mixer->chip); + return err; } static int get_ctl_value_v2(struct usb_mixer_elem_info *cval, int request, int validx, int *value_ret) @@ -313,7 +320,7 @@ struct snd_usb_audio *chip = cval->mixer->chip; unsigned char buf[2 + 3*sizeof(__u16)]; /* enough space for one range */ unsigned char *val; - int ret, size; + int idx = 0, ret, size; __u8 bRequest; if (request == UAC_GET_CUR) { @@ -330,16 +337,22 @@ if (ret) goto error; - ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest, + down_read(&chip->shutdown_rwsem); + if (chip->shutdown) + ret = -ENODEV; + else { + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); + ret = snd_usb_ctl_msg(chip->dev, usb_rcvctrlpipe(chip->dev, 0), bRequest, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_IN, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, size); + validx, idx, buf, size); + } + up_read(&chip->shutdown_rwsem); snd_usb_autosuspend(chip); if (ret < 0) { error: snd_printk(KERN_ERR "cannot get ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type); + request, validx, idx, cval->val_type); return ret; } @@ -417,7 +430,7 @@ { struct snd_usb_audio *chip = cval->mixer->chip; unsigned char buf[2]; - int val_len, err, timeout = 10; + int idx = 0, val_len, err, timeout = 10; if (cval->mixer->protocol == UAC_VERSION_1) { val_len = cval->val_type >= USB_MIXER_S16 ? 2 : 1; @@ -440,19 +453,27 @@ err = snd_usb_autoresume(chip); if (err < 0) return -EIO; - while (timeout-- > 0) + down_read(&chip->shutdown_rwsem); + while (timeout-- > 0) { + if (chip->shutdown) + break; + idx = snd_usb_ctrl_intf(chip) | (cval->id << 8); if (snd_usb_ctl_msg(chip->dev, usb_sndctrlpipe(chip->dev, 0), request, USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, - validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), - buf, val_len) >= 0) { - snd_usb_autosuspend(chip); - return 0; + validx, idx, buf, val_len) >= 0) { + err = 0; + goto out; } - snd_usb_autosuspend(chip); + } snd_printdd(KERN_ERR "cannot set ctl value: req = %#x, wValue = %#x, wIndex = %#x, type = %d, data = %#x/%#x\n", - request, validx, snd_usb_ctrl_intf(chip) | (cval->id << 8), cval->val_type, buf[0], buf[1]); - return -EINVAL; + request, validx, idx, cval->val_type, buf[0], buf[1]); + err = -EINVAL; + + out: + up_read(&chip->shutdown_rwsem); + snd_usb_autosuspend(chip); + return err; } static int set_cur_ctl_value(struct usb_mixer_elem_info *cval, int validx, int value) @@ -1238,16 +1259,23 @@ } channels = (hdr->bLength - 7) / csize - 1; bmaControls = hdr->bmaControls; + if (hdr->bLength < 7 + csize) { + snd_printk(KERN_ERR "usbaudio: unit %u: " + "invalid UAC_FEATURE_UNIT descriptor\n", + unitid); + return -EINVAL; + } } else { struct uac2_feature_unit_descriptor *ftr = _ftr; csize = 4; channels = (hdr->bLength - 6) / 4 - 1; bmaControls = ftr->bmaControls; - } - - if (hdr->bLength < 7 || !csize || hdr->bLength < 7 + csize) { - snd_printk(KERN_ERR "usbaudio: unit %u: invalid UAC_FEATURE_UNIT descriptor\n", unitid); - return -EINVAL; + if (hdr->bLength < 6 + csize) { + snd_printk(KERN_ERR "usbaudio: unit %u: " + "invalid UAC_FEATURE_UNIT descriptor\n", + unitid); + return -EINVAL; + } } /* parse the source unit */ @@ -1267,6 +1295,13 @@ /* disable non-functional volume control */ master_bits &= ~UAC_CONTROL_BIT(UAC_FU_VOLUME); break; + case USB_ID(0x1130, 0xf211): + snd_printk(KERN_INFO + "usbmixer: volume control quirk for Tenx TP6911 Audio Headset\n"); + /* disable non-functional volume control */ + channels = 0; + break; + } if (channels > 0) first_ch_bits = snd_usb_combine_bytes(bmaControls + csize, csize); --- linux-3.5.0.orig/sound/soc/soc-dapm.c +++ linux-3.5.0/sound/soc/soc-dapm.c @@ -1570,7 +1570,15 @@ } list_for_each_entry(w, &card->widgets, list) { - list_del_init(&w->dirty); + switch (w->id) { + case snd_soc_dapm_pre: + case snd_soc_dapm_post: + /* These widgets always need to be powered */ + break; + default: + list_del_init(&w->dirty); + break; + } if (w->power) { d = w->dapm; @@ -3538,10 +3546,13 @@ static void soc_dapm_shutdown_codec(struct snd_soc_dapm_context *dapm) { + struct snd_soc_card *card = dapm->card; struct snd_soc_dapm_widget *w; LIST_HEAD(down_list); int powerdown = 0; + mutex_lock(&card->dapm_mutex); + list_for_each_entry(w, &dapm->card->widgets, list) { if (w->dapm != dapm) continue; @@ -3564,6 +3575,8 @@ snd_soc_dapm_set_bias_level(dapm, SND_SOC_BIAS_STANDBY); } + + mutex_unlock(&card->dapm_mutex); } /* @@ -3573,7 +3586,7 @@ { struct snd_soc_codec *codec; - list_for_each_entry(codec, &card->codec_dev_list, list) { + list_for_each_entry(codec, &card->codec_dev_list, card_list) { soc_dapm_shutdown_codec(&codec->dapm); if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY) snd_soc_dapm_set_bias_level(&codec->dapm, --- linux-3.5.0.orig/sound/soc/Makefile +++ linux-3.5.0/sound/soc/Makefile @@ -1,8 +1,9 @@ snd-soc-core-objs := soc-core.o soc-dapm.o soc-jack.o soc-cache.o soc-utils.o snd-soc-core-objs += soc-pcm.o soc-io.o -snd-soc-dmaengine-pcm-objs := soc-dmaengine-pcm.o -obj-$(CONFIG_SND_SOC_DMAENGINE_PCM) += snd-soc-dmaengine-pcm.o +ifneq ($(CONFIG_SND_SOC_DMAENGINE_PCM),) +snd-soc-core-objs += soc-dmaengine-pcm.o +endif obj-$(CONFIG_SND_SOC) += snd-soc-core.o obj-$(CONFIG_SND_SOC) += codecs/ --- linux-3.5.0.orig/sound/soc/soc-core.c +++ linux-3.5.0/sound/soc/soc-core.c @@ -2692,8 +2692,9 @@ val = (ucontrol->value.integer.value[0] + min) & mask; val = val << shift; - if (snd_soc_update_bits_locked(codec, reg, val_mask, val)) - return err; + err = snd_soc_update_bits_locked(codec, reg, val_mask, val); + if (err < 0) + return err; if (snd_soc_volsw_is_stereo(mc)) { val_mask = mask << rshift; --- linux-3.5.0.orig/sound/soc/soc-pcm.c +++ linux-3.5.0/sound/soc/soc-pcm.c @@ -1240,6 +1240,7 @@ if ((be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_PARAMS) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PREPARE) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_HW_FREE) && + (be->dpcm[stream].state != SND_SOC_DPCM_STATE_PAUSED) && (be->dpcm[stream].state != SND_SOC_DPCM_STATE_STOP)) continue; --- linux-3.5.0.orig/sound/soc/tegra/tegra_alc5632.c +++ linux-3.5.0/sound/soc/tegra/tegra_alc5632.c @@ -92,7 +92,6 @@ .name = "Headset detection", .report = SND_JACK_HEADSET, .debounce_time = 150, - .invert = 1, }; static const struct snd_soc_dapm_widget tegra_alc5632_dapm_widgets[] = { --- linux-3.5.0.orig/sound/soc/sh/fsi.c +++ linux-3.5.0/sound/soc/sh/fsi.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -223,7 +224,7 @@ */ struct dma_chan *chan; struct sh_dmae_slave slave; /* see fsi_handler_init() */ - struct tasklet_struct tasklet; + struct work_struct work; dma_addr_t dma; }; @@ -1085,9 +1086,9 @@ snd_pcm_period_elapsed(io->substream); } -static void fsi_dma_do_tasklet(unsigned long data) +static void fsi_dma_do_work(struct work_struct *work) { - struct fsi_stream *io = (struct fsi_stream *)data; + struct fsi_stream *io = container_of(work, struct fsi_stream, work); struct fsi_priv *fsi = fsi_stream_to_priv(io); struct dma_chan *chan; struct snd_soc_dai *dai; @@ -1140,7 +1141,7 @@ * FIXME * * In DMAEngine case, codec and FSI cannot be started simultaneously - * since FSI is using tasklet. + * since FSI is using the scheduler work queue. * Therefore, in capture case, probably FSI FIFO will have got * overflow error in this point. * in that case, DMA cannot start transfer until error was cleared. @@ -1164,7 +1165,7 @@ static int fsi_dma_transfer(struct fsi_priv *fsi, struct fsi_stream *io) { - tasklet_schedule(&io->tasklet); + schedule_work(&io->work); return 0; } @@ -1195,14 +1196,14 @@ if (!io->chan) return -EIO; - tasklet_init(&io->tasklet, fsi_dma_do_tasklet, (unsigned long)io); + INIT_WORK(&io->work, fsi_dma_do_work); return 0; } static int fsi_dma_remove(struct fsi_priv *fsi, struct fsi_stream *io) { - tasklet_kill(&io->tasklet); + cancel_work_sync(&io->work); fsi_stream_stop(fsi, io); --- linux-3.5.0.orig/sound/soc/samsung/dma.c +++ linux-3.5.0/sound/soc/samsung/dma.c @@ -34,9 +34,7 @@ .info = SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER | SNDRV_PCM_INFO_MMAP | - SNDRV_PCM_INFO_MMAP_VALID | - SNDRV_PCM_INFO_PAUSE | - SNDRV_PCM_INFO_RESUME, + SNDRV_PCM_INFO_MMAP_VALID, .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U8 | @@ -246,15 +244,11 @@ switch (cmd) { case SNDRV_PCM_TRIGGER_START: - case SNDRV_PCM_TRIGGER_RESUME: - case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: prtd->state |= ST_RUNNING; prtd->params->ops->trigger(prtd->params->ch); break; case SNDRV_PCM_TRIGGER_STOP: - case SNDRV_PCM_TRIGGER_SUSPEND: - case SNDRV_PCM_TRIGGER_PAUSE_PUSH: prtd->state &= ~ST_RUNNING; prtd->params->ops->stop(prtd->params->ch); break; --- linux-3.5.0.orig/sound/soc/codecs/cs42l52.c +++ linux-3.5.0/sound/soc/codecs/cs42l52.c @@ -775,7 +775,6 @@ { struct snd_soc_codec *codec = codec_dai->codec; struct cs42l52_private *cs42l52 = snd_soc_codec_get_drvdata(codec); - int ret = 0; u8 iface = 0; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -824,7 +823,7 @@ case SND_SOC_DAIFMT_NB_IF: break; default: - ret = -EINVAL; + return -EINVAL; } cs42l52->config.format = iface; snd_soc_write(codec, CS42L52_IFACE_CTL1, cs42l52->config.format); --- linux-3.5.0.orig/sound/soc/codecs/wm8994.c +++ linux-3.5.0/sound/soc/codecs/wm8994.c @@ -2649,7 +2649,7 @@ return -EINVAL; } - bclk_rate = params_rate(params) * 2; + bclk_rate = params_rate(params) * 4; switch (params_format(params)) { case SNDRV_PCM_FORMAT_S16_LE: bclk_rate *= 16; @@ -3783,17 +3783,8 @@ wm8994->hubs.no_cache_dac_hp_direct = true; wm8994->fll_byp = true; - switch (wm8994->revision) { - case 0: - case 1: - case 2: - case 3: - wm8994->hubs.dcs_codes_l = -9; - wm8994->hubs.dcs_codes_r = -7; - break; - default: - break; - } + wm8994->hubs.dcs_codes_l = -9; + wm8994->hubs.dcs_codes_r = -7; snd_soc_update_bits(codec, WM8994_ANALOGUE_HP_1, WM1811_HPOUT1_ATTN, WM1811_HPOUT1_ATTN); --- linux-3.5.0.orig/sound/soc/codecs/wm9712.c +++ linux-3.5.0/sound/soc/codecs/wm9712.c @@ -146,7 +146,7 @@ SOC_SINGLE("Bass Volume", AC97_MASTER_TONE, 8, 15, 1), SOC_SINGLE("Treble Volume", AC97_MASTER_TONE, 0, 15, 1), -SOC_SINGLE("Capture ADC Switch", AC97_REC_GAIN, 15, 1, 1), +SOC_SINGLE("Capture Switch", AC97_REC_GAIN, 15, 1, 1), SOC_ENUM("Capture Volume Steps", wm9712_enum[6]), SOC_DOUBLE("Capture Volume", AC97_REC_GAIN, 8, 0, 63, 1), SOC_SINGLE("Capture ZC Switch", AC97_REC_GAIN, 7, 1, 0), @@ -272,7 +272,7 @@ /* Mic select */ static const struct snd_kcontrol_new wm9712_mic_src_controls = -SOC_DAPM_ENUM("Route", wm9712_enum[7]); +SOC_DAPM_ENUM("Mic Source Select", wm9712_enum[7]); /* diff select */ static const struct snd_kcontrol_new wm9712_diff_sel_controls = @@ -291,7 +291,9 @@ &wm9712_capture_selectl_controls), SND_SOC_DAPM_MUX("Right Capture Select", SND_SOC_NOPM, 0, 0, &wm9712_capture_selectr_controls), -SND_SOC_DAPM_MUX("Mic Select Source", SND_SOC_NOPM, 0, 0, +SND_SOC_DAPM_MUX("Left Mic Select Source", SND_SOC_NOPM, 0, 0, + &wm9712_mic_src_controls), +SND_SOC_DAPM_MUX("Right Mic Select Source", SND_SOC_NOPM, 0, 0, &wm9712_mic_src_controls), SND_SOC_DAPM_MUX("Differential Source", SND_SOC_NOPM, 0, 0, &wm9712_diff_sel_controls), @@ -319,6 +321,7 @@ SND_SOC_DAPM_PGA("Line PGA", AC97_INT_PAGING, 2, 1, NULL, 0), SND_SOC_DAPM_PGA("Phone PGA", AC97_INT_PAGING, 1, 1, NULL, 0), SND_SOC_DAPM_PGA("Mic PGA", AC97_INT_PAGING, 0, 1, NULL, 0), +SND_SOC_DAPM_PGA("Differential Mic", SND_SOC_NOPM, 0, 0, NULL, 0), SND_SOC_DAPM_MICBIAS("Mic Bias", AC97_INT_PAGING, 10, 1), SND_SOC_DAPM_OUTPUT("MONOOUT"), SND_SOC_DAPM_OUTPUT("HPOUTL"), @@ -379,6 +382,18 @@ {"Mic PGA", NULL, "MIC1"}, {"Mic PGA", NULL, "MIC2"}, + /* microphones */ + {"Differential Mic", NULL, "MIC1"}, + {"Differential Mic", NULL, "MIC2"}, + {"Left Mic Select Source", "Mic 1", "MIC1"}, + {"Left Mic Select Source", "Mic 2", "MIC2"}, + {"Left Mic Select Source", "Stereo", "MIC1"}, + {"Left Mic Select Source", "Differential", "Differential Mic"}, + {"Right Mic Select Source", "Mic 1", "MIC1"}, + {"Right Mic Select Source", "Mic 2", "MIC2"}, + {"Right Mic Select Source", "Stereo", "MIC2"}, + {"Right Mic Select Source", "Differential", "Differential Mic"}, + /* left capture selector */ {"Left Capture Select", "Mic", "MIC1"}, {"Left Capture Select", "Speaker Mixer", "Speaker Mixer"}, --- linux-3.5.0.orig/sound/soc/codecs/wm5100.c +++ linux-3.5.0/sound/soc/codecs/wm5100.c @@ -1279,15 +1279,9 @@ case SND_SOC_DAIFMT_DSP_A: mask = 0; break; - case SND_SOC_DAIFMT_DSP_B: - mask = 1; - break; case SND_SOC_DAIFMT_I2S: mask = 2; break; - case SND_SOC_DAIFMT_LEFT_J: - mask = 3; - break; default: dev_err(codec->dev, "Unsupported DAI format %d\n", fmt & SND_SOC_DAIFMT_FORMAT_MASK); --- linux-3.5.0.orig/sound/soc/codecs/wm_hubs.c +++ linux-3.5.0/sound/soc/codecs/wm_hubs.c @@ -634,6 +634,11 @@ snd_soc_update_bits(codec, WM8993_CLASS_W_0, WM8993_CP_DYN_V | WM8993_CP_DYN_FREQ, enable); + + snd_soc_write(codec, WM8993_LEFT_OUTPUT_VOLUME, + snd_soc_read(codec, WM8993_LEFT_OUTPUT_VOLUME)); + snd_soc_write(codec, WM8993_RIGHT_OUTPUT_VOLUME, + snd_soc_read(codec, WM8993_RIGHT_OUTPUT_VOLUME)); } EXPORT_SYMBOL_GPL(wm_hubs_update_class_w); --- linux-3.5.0.orig/sound/soc/codecs/wm8978.c +++ linux-3.5.0/sound/soc/codecs/wm8978.c @@ -782,7 +782,7 @@ wm8978->mclk_idx = -1; f_sel = wm8978->f_mclk; } else { - if (!wm8978->f_pllout) { + if (!wm8978->f_opclk) { /* We only enter here, if OPCLK is not used */ int ret = wm8978_configure_pll(codec); if (ret < 0) --- linux-3.5.0.orig/sound/soc/codecs/wm2200.c +++ linux-3.5.0/sound/soc/codecs/wm2200.c @@ -897,8 +897,6 @@ "EQR", "LHPF1", "LHPF2", - "LHPF3", - "LHPF4", "DSP1.1", "DSP1.2", "DSP1.3", @@ -931,7 +929,6 @@ 0x25, 0x50, /* EQ */ 0x51, - 0x52, 0x60, /* LHPF1 */ 0x61, /* LHPF2 */ 0x68, /* DSP1 */ @@ -993,9 +990,9 @@ SOC_DOUBLE_R("IN1 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, WM2200_ADC_DIGITAL_VOLUME_1R, WM2200_IN1L_MUTE_SHIFT, 1, 1), -SOC_DOUBLE_R("IN2 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, +SOC_DOUBLE_R("IN2 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_2L, WM2200_ADC_DIGITAL_VOLUME_2R, WM2200_IN2L_MUTE_SHIFT, 1, 1), -SOC_DOUBLE_R("IN3 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_1L, +SOC_DOUBLE_R("IN3 Digital Switch", WM2200_ADC_DIGITAL_VOLUME_3L, WM2200_ADC_DIGITAL_VOLUME_3R, WM2200_IN3L_MUTE_SHIFT, 1, 1), SOC_DOUBLE_R_TLV("IN1 Digital Volume", WM2200_ADC_DIGITAL_VOLUME_1L, @@ -1028,7 +1025,7 @@ WM2200_DAC_DIGITAL_VOLUME_2R, WM2200_OUT2L_VOL_SHIFT, 0x9f, 0, digital_tlv), SOC_DOUBLE("OUT2 Switch", WM2200_PDM_1, WM2200_SPK1L_MUTE_SHIFT, - WM2200_SPK1R_MUTE_SHIFT, 1, 0), + WM2200_SPK1R_MUTE_SHIFT, 1, 1), }; WM2200_MIXER_ENUMS(OUT1L, WM2200_OUT1LMIX_INPUT_1_SOURCE); @@ -1380,15 +1377,9 @@ case SND_SOC_DAIFMT_DSP_A: fmt_val = 0; break; - case SND_SOC_DAIFMT_DSP_B: - fmt_val = 1; - break; case SND_SOC_DAIFMT_I2S: fmt_val = 2; break; - case SND_SOC_DAIFMT_LEFT_J: - fmt_val = 3; - break; default: dev_err(codec->dev, "Unsupported DAI format %d\n", fmt & SND_SOC_DAIFMT_FORMAT_MASK); @@ -1440,7 +1431,7 @@ WM2200_AIF1TX_LRCLK_MSTR | WM2200_AIF1TX_LRCLK_INV, lrclk); snd_soc_update_bits(codec, WM2200_AUDIO_IF_1_5, - WM2200_AIF1_FMT_MASK << 1, fmt_val << 1); + WM2200_AIF1_FMT_MASK, fmt_val); return 0; } @@ -2091,6 +2082,7 @@ switch (wm2200->rev) { case 0: + case 1: ret = regmap_register_patch(wm2200->regmap, wm2200_reva_patch, ARRAY_SIZE(wm2200_reva_patch)); if (ret != 0) { --- linux-3.5.0.orig/sound/soc/codecs/sigmadsp.c +++ linux-3.5.0/sound/soc/codecs/sigmadsp.c @@ -225,7 +225,7 @@ static int sigma_action_write_regmap(void *control_data, const struct sigma_action *sa, size_t len) { - return regmap_raw_write(control_data, le16_to_cpu(sa->addr), + return regmap_raw_write(control_data, be16_to_cpu(sa->addr), sa->payload, len - 2); } --- linux-3.5.0.orig/sound/soc/codecs/wm8962.c +++ linux-3.5.0/sound/soc/codecs/wm8962.c @@ -2501,6 +2501,9 @@ /* VMID 2*250k */ snd_soc_update_bits(codec, WM8962_PWR_MGMT_1, WM8962_VMID_SEL_MASK, 0x100); + + if (codec->dapm.bias_level == SND_SOC_BIAS_OFF) + msleep(100); break; case SND_SOC_BIAS_OFF: @@ -3722,6 +3725,9 @@ } regcache_cache_only(wm8962->regmap, false); + + wm8962_reset(wm8962); + regcache_sync(wm8962->regmap); regmap_update_bits(wm8962->regmap, WM8962_ANTI_POP, --- linux-3.5.0.orig/sound/soc/codecs/wm2000.c +++ linux-3.5.0/sound/soc/codecs/wm2000.c @@ -188,9 +188,9 @@ ret = wm2000_read(i2c, WM2000_REG_SPEECH_CLARITY); if (wm2000->speech_clarity) - ret &= ~WM2000_SPEECH_CLARITY; - else ret |= WM2000_SPEECH_CLARITY; + else + ret &= ~WM2000_SPEECH_CLARITY; wm2000_write(i2c, WM2000_REG_SPEECH_CLARITY, ret); wm2000_write(i2c, WM2000_REG_SYS_START0, 0x33); @@ -675,7 +675,7 @@ #endif static const struct regmap_config wm2000_regmap = { - .reg_bits = 8, + .reg_bits = 16, .val_bits = 8, }; --- linux-3.5.0.orig/sound/soc/omap/mcbsp.c +++ linux-3.5.0/sound/soc/omap/mcbsp.c @@ -745,7 +745,7 @@ { const char *signal, *src; - if (mcbsp->pdata->mux_signal) + if (!mcbsp->pdata->mux_signal) return -EINVAL; switch (mux) { --- linux-3.5.0.orig/sound/drivers/aloop.c +++ linux-3.5.0/sound/drivers/aloop.c @@ -120,6 +120,7 @@ unsigned int last_drift; unsigned long last_jiffies; struct timer_list timer; + spinlock_t timer_lock; }; static struct platform_device *devices[SNDRV_CARDS]; @@ -170,6 +171,7 @@ unsigned long tick; unsigned int rate_shift = get_rate_shift(dpcm); + spin_lock(&dpcm->timer_lock); if (rate_shift != dpcm->pcm_rate_shift) { dpcm->pcm_rate_shift = rate_shift; dpcm->period_size_frac = frac_pos(dpcm, dpcm->pcm_period_size); @@ -182,12 +184,15 @@ tick = (tick + dpcm->pcm_bps - 1) / dpcm->pcm_bps; dpcm->timer.expires = jiffies + tick; add_timer(&dpcm->timer); + spin_unlock(&dpcm->timer_lock); } static inline void loopback_timer_stop(struct loopback_pcm *dpcm) { + spin_lock(&dpcm->timer_lock); del_timer(&dpcm->timer); dpcm->timer.expires = 0; + spin_unlock(&dpcm->timer_lock); } #define CABLE_VALID_PLAYBACK (1 << SNDRV_PCM_STREAM_PLAYBACK) @@ -284,12 +289,14 @@ loopback_active_notify(dpcm); break; case SNDRV_PCM_TRIGGER_PAUSE_PUSH: + case SNDRV_PCM_TRIGGER_SUSPEND: spin_lock(&cable->lock); cable->pause |= stream; spin_unlock(&cable->lock); loopback_timer_stop(dpcm); break; case SNDRV_PCM_TRIGGER_PAUSE_RELEASE: + case SNDRV_PCM_TRIGGER_RESUME: spin_lock(&cable->lock); dpcm->last_jiffies = jiffies; cable->pause &= ~stream; @@ -555,7 +562,8 @@ static struct snd_pcm_hardware loopback_pcm_hardware = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_MMAP | - SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE), + SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE | + SNDRV_PCM_INFO_RESUME), .formats = (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE | SNDRV_PCM_FMTBIT_FLOAT_LE | SNDRV_PCM_FMTBIT_FLOAT_BE), @@ -667,6 +675,7 @@ dpcm->substream = substream; setup_timer(&dpcm->timer, loopback_timer_function, (unsigned long)dpcm); + spin_lock_init(&dpcm->timer_lock); cable = loopback->cables[substream->number][dev]; if (!cable) { --- linux-3.5.0.orig/sound/drivers/mpu401/mpu401_uart.c +++ linux-3.5.0/sound/drivers/mpu401/mpu401_uart.c @@ -554,6 +554,7 @@ spin_lock_init(&mpu->output_lock); spin_lock_init(&mpu->timer_lock); mpu->hardware = hardware; + mpu->irq = -1; if (! (info_flags & MPU401_INFO_INTEGRATED)) { int res_size = hardware == MPU401_HW_PC98II ? 4 : 2; mpu->res = request_region(port, res_size, "MPU401 UART"); --- linux-3.5.0.orig/sound/pci/rme32.c +++ linux-3.5.0/sound/pci/rme32.c @@ -1017,7 +1017,7 @@ spin_lock_irq(&rme32->lock); rme32->capture_substream = NULL; rme32->capture_periodsize = 0; - spin_unlock(&rme32->lock); + spin_unlock_irq(&rme32->lock); return 0; } --- linux-3.5.0.orig/sound/pci/hda/hda_proc.c +++ linux-3.5.0/sound/pci/hda/hda_proc.c @@ -412,7 +412,7 @@ if (digi1 & AC_DIG1_EMPHASIS) snd_iprintf(buffer, " Preemphasis"); if (digi1 & AC_DIG1_COPYRIGHT) - snd_iprintf(buffer, " Copyright"); + snd_iprintf(buffer, " Non-Copyright"); if (digi1 & AC_DIG1_NONAUDIO) snd_iprintf(buffer, " Non-Audio"); if (digi1 & AC_DIG1_PROFESSIONAL) --- linux-3.5.0.orig/sound/pci/hda/patch_via.c +++ linux-3.5.0/sound/pci/hda/patch_via.c @@ -118,6 +118,8 @@ }; struct via_spec { + struct hda_gen_spec gen; + /* codec parameterization */ const struct snd_kcontrol_new *mixers[6]; unsigned int num_mixers; @@ -246,6 +248,7 @@ /* VT1708BCE & VT1708S are almost same */ if (spec->codec_type == VT1708BCE) spec->codec_type = VT1708S; + snd_hda_gen_init(&spec->gen); return spec; } @@ -1628,6 +1631,7 @@ vt1708_stop_hp_work(spec); kfree(spec->bind_cap_vol); kfree(spec->bind_cap_sw); + snd_hda_gen_free(&spec->gen); kfree(spec); } @@ -1672,7 +1676,8 @@ struct via_spec *spec = codec->spec; if (!spec->hp_independent_mode && spec->autocfg.hp_pins[0] && - (spec->codec_type != VT1708 || spec->vt1708_jack_detect)) + (spec->codec_type != VT1708 || spec->vt1708_jack_detect) && + is_jack_detectable(codec, spec->autocfg.hp_pins[0])) present = snd_hda_jack_detect(codec, spec->autocfg.hp_pins[0]); if (spec->smart51_enabled) @@ -1752,6 +1757,14 @@ { struct via_spec *spec = codec->spec; vt1708_stop_hp_work(spec); + + if (spec->codec_type == VT1802) { + /* Fix pop noise on headphones */ + int i; + for (i = 0; i < spec->autocfg.hp_outs; i++) + snd_hda_set_pin_ctl(codec, spec->autocfg.hp_pins[i], 0); + } + return 0; } #endif @@ -1862,11 +1875,11 @@ { struct via_spec *spec = codec->spec; const struct auto_pin_cfg *cfg = &spec->autocfg; - int i, dac_num; + int i; hda_nid_t nid; + spec->multiout.num_dacs = 0; spec->multiout.dac_nids = spec->private_dac_nids; - dac_num = 0; for (i = 0; i < cfg->line_outs; i++) { hda_nid_t dac = 0; nid = cfg->line_out_pins[i]; @@ -1877,16 +1890,13 @@ if (!i && parse_output_path(codec, nid, dac, 1, &spec->out_mix_path)) dac = spec->out_mix_path.path[0]; - if (dac) { - spec->private_dac_nids[i] = dac; - dac_num++; - } + if (dac) + spec->private_dac_nids[spec->multiout.num_dacs++] = dac; } if (!spec->out_path[0].depth && spec->out_mix_path.depth) { spec->out_path[0] = spec->out_mix_path; spec->out_mix_path.depth = 0; } - spec->multiout.num_dacs = dac_num; return 0; } @@ -3226,7 +3236,7 @@ { struct via_spec *spec = codec->spec; int imux_is_smixer; - unsigned int parm; + unsigned int parm, parm2; /* MUX6 (1eh) = stereo mixer */ imux_is_smixer = snd_hda_codec_read(codec, 0x1e, 0, AC_VERB_GET_CONNECT_SEL, 0x00) == 5; @@ -3249,7 +3259,7 @@ parm = AC_PWRST_D3; set_pin_power_state(codec, 0x27, &parm); update_power_state(codec, 0x1a, parm); - update_power_state(codec, 0xb, parm); + parm2 = parm; /* for pin 0x0b */ /* PW2 (26h), AOW2 (ah) */ parm = AC_PWRST_D3; @@ -3264,6 +3274,9 @@ if (!spec->hp_independent_mode) /* check for redirected HP */ set_pin_power_state(codec, 0x28, &parm); update_power_state(codec, 0x8, parm); + if (!spec->hp_independent_mode && parm2 != AC_PWRST_D3) + parm = parm2; + update_power_state(codec, 0xb, parm); /* MW9 (21h), Mw2 (1ah), AOW0 (8h) */ update_power_state(codec, 0x21, imux_is_smixer ? AC_PWRST_D0 : parm); @@ -3658,6 +3671,44 @@ update_power_state(codec, 0x21, AC_PWRST_D3); } +/* + * pin fix-up + */ +enum { + VIA_FIXUP_INTMIC_BOOST, +}; + +static void via_fixup_intmic_boost(struct hda_codec *codec, + const struct hda_fixup *fix, int action) +{ + if (action == HDA_FIXUP_ACT_PRE_PROBE) + override_mic_boost(codec, 0x30, 0, 2, 40); +} + +static const struct hda_fixup via_fixups[] = { + [VIA_FIXUP_INTMIC_BOOST] = { + .type = HDA_FIXUP_FUNC, + .v.func = via_fixup_intmic_boost, + }, +}; + +static const struct snd_pci_quirk vt2002p_fixups[] = { + SND_PCI_QUIRK(0x1043, 0x8532, "Asus X202E", VIA_FIXUP_INTMIC_BOOST), + {} +}; + +/* NIDs 0x24 and 0x33 on VT1802 have connections to non-existing NID 0x3e + * Replace this with mixer NID 0x1c + */ +static void fix_vt1802_connections(struct hda_codec *codec) +{ + static hda_nid_t conn_24[] = { 0x14, 0x1c }; + static hda_nid_t conn_33[] = { 0x1c }; + + snd_hda_override_conn_list(codec, 0x24, ARRAY_SIZE(conn_24), conn_24); + snd_hda_override_conn_list(codec, 0x33, ARRAY_SIZE(conn_33), conn_33); +} + /* patch for vt2002P */ static int patch_vt2002P(struct hda_codec *codec) { @@ -3672,8 +3723,13 @@ spec->aa_mix_nid = 0x21; override_mic_boost(codec, 0x2b, 0, 3, 40); override_mic_boost(codec, 0x29, 0, 3, 40); + if (spec->codec_type == VT1802) + fix_vt1802_connections(codec); add_secret_dac_path(codec); + snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups); + snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE); + /* automatic parse from the BIOS config */ err = via_parse_auto_config(codec); if (err < 0) { --- linux-3.5.0.orig/sound/pci/hda/patch_sigmatel.c +++ linux-3.5.0/sound/pci/hda/patch_sigmatel.c @@ -101,6 +101,8 @@ STAC_92HD83XXX_HP_cNB11_INTQUAD, STAC_HP_DV7_4000, STAC_HP_ZEPHYR, + STAC_92HD83XXX_HP_LED, + STAC_92HD83XXX_HP_INV_LED, STAC_92HD83XXX_MODELS }; @@ -1073,7 +1075,7 @@ static const char * const slave_pfxs[] = { "Front", "Surround", "Center", "LFE", "Side", - "Headphone", "Speaker", "IEC958", + "Headphone", "Speaker", "IEC958", "PCM", NULL }; @@ -1675,6 +1677,8 @@ [STAC_92HD83XXX_HP_cNB11_INTQUAD] = "hp_cNB11_intquad", [STAC_HP_DV7_4000] = "hp-dv7-4000", [STAC_HP_ZEPHYR] = "hp-zephyr", + [STAC_92HD83XXX_HP_LED] = "hp-led", + [STAC_92HD83XXX_HP_INV_LED] = "hp-inv-led", }; static const struct snd_pci_quirk stac92hd83xxx_cfg_tbl[] = { @@ -1694,7 +1698,7 @@ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1658, "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1659, - "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), + "HP Pavilion dv7", STAC_HP_DV7_4000), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165A, "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x165B, @@ -1729,6 +1733,8 @@ "HP", STAC_92HD83XXX_HP_cNB11_INTQUAD), SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3561, "HP", STAC_HP_ZEPHYR), + SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x3660, + "HP Mini", STAC_92HD83XXX_HP_LED), {} /* terminator */ }; @@ -3220,9 +3226,12 @@ idx = i; break; case AUTO_PIN_SPEAKER_OUT: - name = "Speaker"; - idx = i; - break; + if (num_outs <= 1) { + name = "Speaker"; + idx = i; + break; + } + /* Fall through in case of multi speaker outs */ default: name = chname[i]; idx = 0; @@ -4266,7 +4275,8 @@ unsigned int gpio; int i; - snd_hda_sequence_write(codec, spec->init); + if (spec->init) + snd_hda_sequence_write(codec, spec->init); /* power down adcs initially */ if (spec->powerdown_adcs) @@ -4414,7 +4424,12 @@ snd_hda_jack_report_sync(codec); /* sync mute LED */ - snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + if (spec->gpio_led) { + if (spec->vmaster_mute.hook) + snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + else /* the very first init call doesn't have vmaster yet */ + stac92xx_update_led_status(codec, false); + } /* sync the power-map */ if (spec->num_pwrs) @@ -4531,6 +4546,9 @@ struct auto_pin_cfg *cfg = &spec->autocfg; int i; + if (cfg->speaker_outs == 0) + return; + for (i = 0; i < cfg->line_outs; i++) { if (presence) break; @@ -5507,6 +5525,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) { struct sigmatel_spec *spec; + int default_polarity = -1; /* no default cfg */ int err; spec = kzalloc(sizeof(*spec), GFP_KERNEL); @@ -5555,9 +5574,15 @@ case STAC_HP_ZEPHYR: spec->init = stac92hd83xxx_hp_zephyr_init; break; + case STAC_92HD83XXX_HP_LED: + default_polarity = 0; + break; + case STAC_92HD83XXX_HP_INV_LED: + default_polarity = 1; + break; } - if (find_mute_led_cfg(codec, -1/*no default cfg*/)) + if (find_mute_led_cfg(codec, default_polarity)) snd_printd("mute LED gpio %d polarity %d\n", spec->gpio_led, spec->gpio_led_polarity); @@ -5730,7 +5755,6 @@ /* fallthru */ case 0x111d76b4: /* 6 Port without Analog Mixer */ case 0x111d76b5: - spec->init = stac92hd71bxx_core_init; codec->slave_dig_outs = stac92hd71bxx_slave_dig_outs; spec->num_dmics = stac92xx_connected_ports(codec, stac92hd71bxx_dmic_nids, @@ -5755,7 +5779,6 @@ spec->stream_delay = 40; /* 40 milliseconds */ /* disable VSW */ - spec->init = stac92hd71bxx_core_init; unmute_init++; snd_hda_codec_set_pincfg(codec, 0x0f, 0x40f000f0); snd_hda_codec_set_pincfg(codec, 0x19, 0x40f000f3); @@ -5770,7 +5793,6 @@ /* fallthru */ default: - spec->init = stac92hd71bxx_core_init; codec->slave_dig_outs = stac92hd71bxx_slave_dig_outs; spec->num_dmics = stac92xx_connected_ports(codec, stac92hd71bxx_dmic_nids, @@ -5778,6 +5800,9 @@ break; } + if (get_wcaps_type(get_wcaps(codec, 0x28)) == AC_WID_VOL_KNB) + spec->init = stac92hd71bxx_core_init; + if (get_wcaps(codec, 0xa) & AC_WCAP_IN_AMP) snd_hda_sequence_write_cache(codec, unmute_init); --- linux-3.5.0.orig/sound/pci/hda/patch_analog.c +++ linux-3.5.0/sound/pci/hda/patch_analog.c @@ -545,6 +545,7 @@ if (spec->multiout.dig_out_nid) { info++; codec->num_pcms++; + codec->spdif_status_reset = 1; info->name = "AD198x Digital"; info->pcm_type = HDA_PCM_TYPE_SPDIF; info->stream[SNDRV_PCM_STREAM_PLAYBACK] = ad198x_pcm_digital_playback; --- linux-3.5.0.orig/sound/pci/hda/patch_conexant.c +++ linux-3.5.0/sound/pci/hda/patch_conexant.c @@ -553,24 +553,12 @@ return 0; } -#ifdef CONFIG_SND_HDA_POWER_SAVE -static int conexant_suspend(struct hda_codec *codec, pm_message_t state) -{ - snd_hda_shutup_pins(codec); - return 0; -} -#endif - static const struct hda_codec_ops conexant_patch_ops = { .build_controls = conexant_build_controls, .build_pcms = conexant_build_pcms, .init = conexant_init, .free = conexant_free, .set_power_state = conexant_set_power, -#ifdef CONFIG_SND_HDA_POWER_SAVE - .suspend = conexant_suspend, -#endif - .reboot_notify = snd_hda_shutup_pins, }; #ifdef CONFIG_SND_HDA_INPUT_BEEP @@ -2972,7 +2960,6 @@ SND_PCI_QUIRK(0x1028, 0x02d8, "Dell Vostro", CXT5066_DELL_VOSTRO), SND_PCI_QUIRK(0x1028, 0x02f5, "Dell Vostro 320", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x0401, "Dell Vostro 1014", CXT5066_DELL_VOSTRO), - SND_PCI_QUIRK(0x1028, 0x0402, "Dell Vostro", CXT5066_DELL_VOSTRO), SND_PCI_QUIRK(0x1028, 0x0408, "Dell Inspiron One 19T", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x050f, "Dell Inspiron", CXT5066_IDEAPAD), SND_PCI_QUIRK(0x1028, 0x0510, "Dell Vostro", CXT5066_IDEAPAD), @@ -3546,8 +3533,9 @@ hda_nid_t pin, hda_nid_t *srcp, bool do_select, int depth) { + struct conexant_spec *spec = codec->spec; hda_nid_t conn[HDA_MAX_NUM_INPUTS]; - int i, nums; + int startidx, i, nums; switch (get_wcaps_type(get_wcaps(codec, mux))) { case AC_WID_AUD_IN: @@ -3571,14 +3559,25 @@ depth++; if (depth == 2) return -1; + + /* Try to rotate around connections to avoid one boost controlling + another input path as well */ + startidx = 0; + for (i = 0; i < spec->private_imux.num_items; i++) + if (spec->imux_info[i].pin == pin) { + startidx = i; + break; + } + for (i = 0; i < nums; i++) { - int ret = __select_input_connection(codec, conn[i], pin, srcp, + int j = (i + startidx) % nums; + int ret = __select_input_connection(codec, conn[j], pin, srcp, do_select, depth); if (ret >= 0) { if (do_select) snd_hda_codec_write(codec, mux, 0, - AC_VERB_SET_CONNECT_SEL, i); - return i; + AC_VERB_SET_CONNECT_SEL, j); + return j; } } return -1; @@ -4268,7 +4267,7 @@ if (get_wcaps(codec, mux) & AC_WCAP_OUT_AMP) { spec->imux_info[idx].boost = mux; - return cx_auto_add_volume(codec, label, " Boost", 0, + return cx_auto_add_volume(codec, label, " Boost", cidx, mux, HDA_OUTPUT); } return 0; @@ -4402,10 +4401,6 @@ .init = cx_auto_init, .free = conexant_free, .unsol_event = cx_auto_unsol_event, -#ifdef CONFIG_SND_HDA_POWER_SAVE - .suspend = conexant_suspend, -#endif - .reboot_notify = snd_hda_shutup_pins, }; /* @@ -4462,12 +4457,14 @@ }; static const struct snd_pci_quirk cxt5066_fixups[] = { + SND_PCI_QUIRK(0x1025, 0x0543, "Acer Aspire One 522", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x215e, "Lenovo T410", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x215f, "Lenovo T510", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x21ce, "Lenovo T420", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x21cf, "Lenovo T520", CXT_PINCFG_LENOVO_TP410), SND_PCI_QUIRK(0x17aa, 0x3975, "Lenovo U300s", CXT_FIXUP_STEREO_DMIC), + SND_PCI_QUIRK(0x17aa, 0x3977, "Lenovo IdeaPad U310", CXT_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x17aa, 0x397b, "Lenovo S205", CXT_FIXUP_STEREO_DMIC), {} }; @@ -4603,6 +4600,12 @@ .patch = patch_conexant_auto }, { .id = 0x14f15111, .name = "CX20753/4", .patch = patch_conexant_auto }, + { .id = 0x14f15113, .name = "CX20755", + .patch = patch_conexant_auto }, + { .id = 0x14f15114, .name = "CX20756", + .patch = patch_conexant_auto }, + { .id = 0x14f15115, .name = "CX20757", + .patch = patch_conexant_auto }, {} /* terminator */ }; @@ -4626,6 +4629,9 @@ MODULE_ALIAS("snd-hda-codec-id:14f1510f"); MODULE_ALIAS("snd-hda-codec-id:14f15110"); MODULE_ALIAS("snd-hda-codec-id:14f15111"); +MODULE_ALIAS("snd-hda-codec-id:14f15113"); +MODULE_ALIAS("snd-hda-codec-id:14f15114"); +MODULE_ALIAS("snd-hda-codec-id:14f15115"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Conexant HD-audio codec"); --- linux-3.5.0.orig/sound/pci/hda/hda_jack.c +++ linux-3.5.0/sound/pci/hda/hda_jack.c @@ -127,10 +127,15 @@ static void jack_detect_update(struct hda_codec *codec, struct hda_jack_tbl *jack) { - if (jack->jack_dirty || !jack->jack_detect) { + if (!jack->jack_dirty) + return; + + if (jack->phantom_jack) + jack->pin_sense = AC_PINSENSE_PRESENCE; + else jack->pin_sense = read_pin_sense(codec, jack->nid); - jack->jack_dirty = 0; - } + + jack->jack_dirty = 0; } /** @@ -264,8 +269,8 @@ * This assigns a jack-detection kctl to the given pin. The kcontrol * will have the given name and index. */ -int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, - const char *name, int idx) +static int __snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, + const char *name, int idx, bool phantom_jack) { struct hda_jack_tbl *jack; struct snd_kcontrol *kctl; @@ -283,19 +288,30 @@ if (err < 0) return err; jack->kctl = kctl; + jack->phantom_jack = !!phantom_jack; + state = snd_hda_jack_detect(codec, nid); snd_kctl_jack_report(codec->bus->card, kctl, state); #ifdef CONFIG_SND_HDA_INPUT_JACK - jack->type = get_input_jack_type(codec, nid); - err = snd_jack_new(codec->bus->card, name, jack->type, &jack->jack); - if (err < 0) - return err; - jack->jack->private_data = jack; - jack->jack->private_free = hda_free_jack_priv; - snd_jack_report(jack->jack, state ? jack->type : 0); + if (!phantom_jack) { + jack->type = get_input_jack_type(codec, nid); + err = snd_jack_new(codec->bus->card, name, jack->type, + &jack->jack); + if (err < 0) + return err; + jack->jack->private_data = jack; + jack->jack->private_free = hda_free_jack_priv; + snd_jack_report(jack->jack, state ? jack->type : 0); + } #endif return 0; } + +int snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid, + const char *name, int idx) +{ + return __snd_hda_jack_add_kctl(codec, nid, name, idx, false); +} EXPORT_SYMBOL_HDA(snd_hda_jack_add_kctl); static int add_jack_kctl(struct hda_codec *codec, hda_nid_t nid, @@ -305,25 +321,32 @@ unsigned int def_conf, conn; char name[44]; int idx, err; + bool phantom_jack; if (!nid) return 0; - if (!is_jack_detectable(codec, nid)) - return 0; def_conf = snd_hda_codec_get_pincfg(codec, nid); conn = get_defcfg_connect(def_conf); - if (conn != AC_JACK_PORT_COMPLEX) + if (conn == AC_JACK_PORT_NONE) return 0; + phantom_jack = (conn != AC_JACK_PORT_COMPLEX) || + !is_jack_detectable(codec, nid); snd_hda_get_pin_label(codec, nid, cfg, name, sizeof(name), &idx); + if (phantom_jack) + /* Example final name: "Internal Mic Phantom Jack" */ + strncat(name, " Phantom", sizeof(name) - strlen(name) - 1); if (!strcmp(name, lastname) && idx == *lastidx) idx++; - strncpy(lastname, name, 44); + strncpy(lastname, name, sizeof(name)); *lastidx = idx; - err = snd_hda_jack_add_kctl(codec, nid, name, idx); + err = __snd_hda_jack_add_kctl(codec, nid, name, idx, phantom_jack); if (err < 0) return err; - return snd_hda_jack_detect_enable(codec, nid, 0); + + if (!phantom_jack) + return snd_hda_jack_detect_enable(codec, nid, 0); + return 0; } /** --- linux-3.5.0.orig/sound/pci/hda/hda_jack.h +++ linux-3.5.0/sound/pci/hda/hda_jack.h @@ -23,6 +23,7 @@ unsigned int pin_sense; /* cached pin-sense value */ unsigned int jack_detect:1; /* capable of jack-detection? */ unsigned int jack_dirty:1; /* needs to update? */ + unsigned int phantom_jack:1; /* a fixed, always present port? */ struct snd_kcontrol *kctl; /* assigned kctl for jack-detection */ #ifdef CONFIG_SND_HDA_INPUT_JACK int type; --- linux-3.5.0.orig/sound/pci/hda/patch_hdmi.c +++ linux-3.5.0/sound/pci/hda/patch_hdmi.c @@ -425,9 +425,11 @@ if (get_wcaps(codec, pin_nid) & AC_WCAP_OUT_AMP) snd_hda_codec_write(codec, pin_nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE); - /* Disable pin out until stream is active*/ + /* Enable pin out: some machines with GM965 gets broken output when + * the pin is disabled or changed while using with HDMI + */ snd_hda_codec_write(codec, pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, 0); + AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); } static int hdmi_get_channel_count(struct hda_codec *codec, hda_nid_t cvt_nid) @@ -876,7 +878,6 @@ struct hdmi_spec_per_pin *per_pin; struct hdmi_eld *eld; struct hdmi_spec_per_cvt *per_cvt = NULL; - int pinctl; /* Validate hinfo */ pin_idx = hinfo_to_pin_index(spec, hinfo); @@ -912,11 +913,6 @@ snd_hda_codec_write(codec, per_pin->pin_nid, 0, AC_VERB_SET_CONNECT_SEL, mux_idx); - pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0, - AC_VERB_GET_PIN_WIDGET_CONTROL, 0); - snd_hda_codec_write(codec, per_pin->pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, - pinctl | PIN_OUT); snd_hda_spdif_ctls_assign(codec, pin_idx, per_cvt->cvt_nid); /* Initially set the converter's capabilities */ @@ -930,8 +926,12 @@ if (!static_hdmi_pcm && eld->eld_valid) { snd_hdmi_eld_update_pcm_info(eld, hinfo); if (hinfo->channels_min > hinfo->channels_max || - !hinfo->rates || !hinfo->formats) + !hinfo->rates || !hinfo->formats) { + per_cvt->assigned = 0; + hinfo->nid = 0; + snd_hda_spdif_ctls_unassign(codec, pin_idx); return -ENODEV; + } } /* Store the updated parameters */ @@ -995,6 +995,7 @@ "HDMI status: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n", codec->addr, pin_nid, eld->monitor_present, eld_valid); + eld->eld_valid = false; if (eld_valid) { if (!snd_hdmi_get_eld(eld, codec, pin_nid)) snd_hdmi_show_eld(eld); @@ -1169,7 +1170,6 @@ int cvt_idx, pin_idx; struct hdmi_spec_per_cvt *per_cvt; struct hdmi_spec_per_pin *per_pin; - int pinctl; snd_hda_codec_cleanup_stream(codec, hinfo->nid); @@ -1188,11 +1188,6 @@ return -EINVAL; per_pin = &spec->pins[pin_idx]; - pinctl = snd_hda_codec_read(codec, per_pin->pin_nid, 0, - AC_VERB_GET_PIN_WIDGET_CONTROL, 0); - snd_hda_codec_write(codec, per_pin->pin_nid, 0, - AC_VERB_SET_PIN_WIDGET_CONTROL, - pinctl & ~PIN_OUT); snd_hda_spdif_ctls_unassign(codec, pin_idx); } @@ -1323,6 +1318,30 @@ .unsol_event = hdmi_unsol_event, }; +static void intel_haswell_fixup_connect_list(struct hda_codec *codec) +{ + unsigned int vendor_param; + hda_nid_t list[3] = {0x2, 0x3, 0x4}; + + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); + if (vendor_param == -1 || vendor_param & 0x02) + return; + + /* enable DP1.2 mode */ + vendor_param |= 0x02; + snd_hda_codec_read(codec, 0x08, 0, 0x781, vendor_param); + + vendor_param = snd_hda_codec_read(codec, 0x08, 0, 0xf81, 0); + if (vendor_param == -1 || !(vendor_param & 0x02)) + return; + + /* override 3 pins connection list */ + snd_hda_override_conn_list(codec, 0x05, 3, list); + snd_hda_override_conn_list(codec, 0x06, 3, list); + snd_hda_override_conn_list(codec, 0x07, 3, list); +} + + static int patch_generic_hdmi(struct hda_codec *codec) { struct hdmi_spec *spec; @@ -1332,6 +1351,10 @@ return -ENOMEM; codec->spec = spec; + + if (codec->vendor_id == 0x80862807) + intel_haswell_fixup_connect_list(codec); + if (hdmi_parse_codec(codec) < 0) { codec->spec = NULL; kfree(spec); @@ -1911,6 +1934,7 @@ { .id = 0x80862804, .name = "IbexPeak HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862805, .name = "CougarPoint HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862806, .name = "PantherPoint HDMI", .patch = patch_generic_hdmi }, +{ .id = 0x80862807, .name = "Haswell HDMI", .patch = patch_generic_hdmi }, { .id = 0x80862880, .name = "CedarTrail HDMI", .patch = patch_generic_hdmi }, { .id = 0x808629fb, .name = "Crestline HDMI", .patch = patch_generic_hdmi }, {} /* terminator */ @@ -1958,6 +1982,7 @@ MODULE_ALIAS("snd-hda-codec-id:80862804"); MODULE_ALIAS("snd-hda-codec-id:80862805"); MODULE_ALIAS("snd-hda-codec-id:80862806"); +MODULE_ALIAS("snd-hda-codec-id:80862807"); MODULE_ALIAS("snd-hda-codec-id:80862880"); MODULE_ALIAS("snd-hda-codec-id:808629fb"); --- linux-3.5.0.orig/sound/pci/hda/patch_ca0132.c +++ linux-3.5.0/sound/pci/hda/patch_ca0132.c @@ -275,6 +275,10 @@ int type = dir ? HDA_INPUT : HDA_OUTPUT; struct snd_kcontrol_new knew = HDA_CODEC_MUTE_MONO(namestr, nid, chan, 0, type); + if ((query_amp_caps(codec, nid, type) & AC_AMPCAP_MUTE) == 0) { + snd_printdd("Skipping '%s %s Switch' (no mute on node 0x%x)\n", pfx, dirstr[dir], nid); + return 0; + } sprintf(namestr, "%s %s Switch", pfx, dirstr[dir]); return snd_hda_ctl_add(codec, nid, snd_ctl_new1(&knew, codec)); } @@ -286,6 +290,10 @@ int type = dir ? HDA_INPUT : HDA_OUTPUT; struct snd_kcontrol_new knew = HDA_CODEC_VOLUME_MONO(namestr, nid, chan, 0, type); + if ((query_amp_caps(codec, nid, type) & AC_AMPCAP_NUM_STEPS) == 0) { + snd_printdd("Skipping '%s %s Volume' (no amp on node 0x%x)\n", pfx, dirstr[dir], nid); + return 0; + } sprintf(namestr, "%s %s Volume", pfx, dirstr[dir]); return snd_hda_ctl_add(codec, nid, snd_ctl_new1(&knew, codec)); } --- linux-3.5.0.orig/sound/pci/hda/patch_cirrus.c +++ linux-3.5.0/sound/pci/hda/patch_cirrus.c @@ -96,8 +96,8 @@ #define CS420X_VENDOR_NID 0x11 #define CS_DIG_OUT1_PIN_NID 0x10 #define CS_DIG_OUT2_PIN_NID 0x15 -#define CS_DMIC1_PIN_NID 0x12 -#define CS_DMIC2_PIN_NID 0x0e +#define CS_DMIC1_PIN_NID 0x0e +#define CS_DMIC2_PIN_NID 0x12 /* coef indices */ #define IDX_SPDIF_STAT 0x0000 @@ -461,6 +461,7 @@ memcpy(cfg->speaker_pins, cfg->line_out_pins, sizeof(cfg->speaker_pins)); cfg->line_outs = 0; + memset(cfg->line_out_pins, 0, sizeof(cfg->line_out_pins)); } return 0; @@ -1074,14 +1075,18 @@ cs_automic(codec); coef = 0x000a; /* ADC1/2 - Digital and Analog Soft Ramp */ + cs_vendor_coef_set(codec, IDX_ADC_CFG, coef); + + coef = cs_vendor_coef_get(codec, IDX_BEEP_CFG); if (is_active_pin(codec, CS_DMIC2_PIN_NID)) - coef |= 0x0500; /* DMIC2 2 chan on, GPIO1 off */ + coef |= 1 << 4; /* DMIC2 2 chan on, GPIO1 off */ if (is_active_pin(codec, CS_DMIC1_PIN_NID)) - coef |= 0x1800; /* DMIC1 2 chan on, GPIO0 off + coef |= 1 << 3; /* DMIC1 2 chan on, GPIO0 off * No effect if SPDIF_OUT2 is * selected in IDX_SPDIF_CTL. */ - cs_vendor_coef_set(codec, IDX_ADC_CFG, coef); + + cs_vendor_coef_set(codec, IDX_BEEP_CFG, coef); } else { if (spec->mic_detect) cs_automic(codec); @@ -1102,7 +1107,7 @@ | 0x0400 /* Disable Coefficient Auto increment */ )}, /* Beep */ - {0x11, AC_VERB_SET_COEF_INDEX, IDX_DAC_CFG}, + {0x11, AC_VERB_SET_COEF_INDEX, IDX_BEEP_CFG}, {0x11, AC_VERB_SET_PROC_COEF, 0x0007}, /* Enable Beep thru DAC1/2/3 */ {} /* terminator */ @@ -1417,7 +1422,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } @@ -1974,7 +1979,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } @@ -1999,7 +2004,7 @@ return 0; error: - kfree(codec->spec); + cs_free(codec); codec->spec = NULL; return err; } --- linux-3.5.0.orig/sound/pci/hda/hda_intel.c +++ linux-3.5.0/sound/pci/hda/hda_intel.c @@ -151,6 +151,8 @@ "{Intel, CPT}," "{Intel, PPT}," "{Intel, LPT}," + "{Intel, LPT_LP}," + "{Intel, HPT}," "{Intel, PBG}," "{Intel, SCH}," "{ATI, SB450}," @@ -485,6 +487,7 @@ /* VGA-switcheroo setup */ unsigned int use_vga_switcheroo:1; + unsigned int vga_switcheroo_registered:1; unsigned int init_failed:1; /* delayed init failed */ unsigned int disabled:1; /* disabled by VGA-switcher */ @@ -616,29 +619,43 @@ #define get_azx_dev(substream) (substream->runtime->private_data) #ifdef CONFIG_X86 -static void __mark_pages_wc(struct azx *chip, void *addr, size_t size, bool on) +static void __mark_pages_wc(struct azx *chip, struct snd_dma_buffer *dmab, bool on) { + int pages; + if (azx_snoop(chip)) return; - if (addr && size) { - int pages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; + if (!dmab || !dmab->area || !dmab->bytes) + return; + +#ifdef CONFIG_SND_DMA_SGBUF + if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_SG) { + struct snd_sg_buf *sgbuf = dmab->private_data; if (on) - set_memory_wc((unsigned long)addr, pages); + set_pages_array_wc(sgbuf->page_table, sgbuf->pages); else - set_memory_wb((unsigned long)addr, pages); + set_pages_array_wb(sgbuf->page_table, sgbuf->pages); + return; } +#endif + + pages = (dmab->bytes + PAGE_SIZE - 1) >> PAGE_SHIFT; + if (on) + set_memory_wc((unsigned long)dmab->area, pages); + else + set_memory_wb((unsigned long)dmab->area, pages); } static inline void mark_pages_wc(struct azx *chip, struct snd_dma_buffer *buf, bool on) { - __mark_pages_wc(chip, buf->area, buf->bytes, on); + __mark_pages_wc(chip, buf, on); } static inline void mark_runtime_wc(struct azx *chip, struct azx_dev *azx_dev, - struct snd_pcm_runtime *runtime, bool on) + struct snd_pcm_substream *substream, bool on) { if (azx_dev->wc_marked != on) { - __mark_pages_wc(chip, runtime->dma_area, runtime->dma_bytes, on); + __mark_pages_wc(chip, substream->runtime->dma_buffer_p, on); azx_dev->wc_marked = on; } } @@ -649,7 +666,7 @@ { } static inline void mark_runtime_wc(struct azx *chip, struct azx_dev *azx_dev, - struct snd_pcm_runtime *runtime, bool on) + struct snd_pcm_substream *substream, bool on) { } #endif @@ -1822,11 +1839,10 @@ { struct azx_pcm *apcm = snd_pcm_substream_chip(substream); struct azx *chip = apcm->chip; - struct snd_pcm_runtime *runtime = substream->runtime; struct azx_dev *azx_dev = get_azx_dev(substream); int ret; - mark_runtime_wc(chip, azx_dev, runtime, false); + mark_runtime_wc(chip, azx_dev, substream, false); azx_dev->bufsize = 0; azx_dev->period_bytes = 0; azx_dev->format_val = 0; @@ -1834,7 +1850,7 @@ params_buffer_bytes(hw_params)); if (ret < 0) return ret; - mark_runtime_wc(chip, azx_dev, runtime, true); + mark_runtime_wc(chip, azx_dev, substream, true); return ret; } @@ -1843,7 +1859,6 @@ struct azx_pcm *apcm = snd_pcm_substream_chip(substream); struct azx_dev *azx_dev = get_azx_dev(substream); struct azx *chip = apcm->chip; - struct snd_pcm_runtime *runtime = substream->runtime; struct hda_pcm_stream *hinfo = apcm->hinfo[substream->stream]; /* reset BDL address */ @@ -1856,7 +1871,7 @@ snd_hda_codec_cleanup(apcm->codec, hinfo, substream); - mark_runtime_wc(chip, azx_dev, runtime, false); + mark_runtime_wc(chip, azx_dev, substream, false); return snd_pcm_lib_free_pages(substream); } @@ -2523,7 +2538,9 @@ if (disabled) { azx_suspend(pci, PMSG_FREEZE); chip->disabled = true; - snd_hda_lock_devices(chip->bus); + if (snd_hda_lock_devices(chip->bus)) + snd_printk(KERN_WARNING SFX + "Cannot lock devices!\n"); } else { snd_hda_unlock_devices(chip->bus); chip->disabled = false; @@ -2566,14 +2583,20 @@ static int __devinit register_vga_switcheroo(struct azx *chip) { + int err; + if (!chip->use_vga_switcheroo) return 0; /* FIXME: currently only handling DIS controller * is there any machine with two switchable HDMI audio controllers? */ - return vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops, + err = vga_switcheroo_register_audio_client(chip->pci, &azx_vs_ops, VGA_SWITCHEROO_DIS, chip->bus != NULL); + if (err < 0) + return err; + chip->vga_switcheroo_registered = 1; + return 0; } #else #define init_vga_switcheroo(chip) /* NOP */ @@ -2593,7 +2616,8 @@ if (use_vga_switcheroo(chip)) { if (chip->disabled && chip->bus) snd_hda_unlock_devices(chip->bus); - vga_switcheroo_unregister_client(chip->pci); + if (chip->vga_switcheroo_registered) + vga_switcheroo_unregister_client(chip->pci); } if (chip->initialized) { @@ -2935,14 +2959,6 @@ } ok: - err = register_vga_switcheroo(chip); - if (err < 0) { - snd_printk(KERN_ERR SFX - "Error registering VGA-switcheroo client\n"); - azx_free(chip); - return err; - } - err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); if (err < 0) { snd_printk(KERN_ERR SFX "Error creating device [card]!\n"); @@ -3169,6 +3185,13 @@ pci_set_drvdata(pci, card); + err = register_vga_switcheroo(chip); + if (err < 0) { + snd_printk(KERN_ERR SFX + "Error registering VGA-switcheroo client\n"); + goto out_free; + } + dev++; return 0; @@ -3256,6 +3279,21 @@ { PCI_DEVICE(0x8086, 0x8c20), .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE}, + /* Lynx Point-LP */ + { PCI_DEVICE(0x8086, 0x9c20), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + /* Lynx Point-LP */ + { PCI_DEVICE(0x8086, 0x9c21), + .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + /* Haswell */ + { PCI_DEVICE(0x8086, 0x0c0c), + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, + { PCI_DEVICE(0x8086, 0x0d0c), + .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | + AZX_DCAPS_BUFSIZE | AZX_DCAPS_POSFIX_LPIB }, /* SCH */ { PCI_DEVICE(0x8086, 0x811b), .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_SCH_SNOOP | --- linux-3.5.0.orig/sound/pci/hda/patch_realtek.c +++ linux-3.5.0/sound/pci/hda/patch_realtek.c @@ -170,10 +170,10 @@ hda_nid_t imux_pins[HDA_MAX_NUM_INPUTS]; unsigned int dyn_adc_idx[HDA_MAX_NUM_INPUTS]; int int_mic_idx, ext_mic_idx, dock_mic_idx; /* for auto-mic */ + hda_nid_t inv_dmic_pin; /* hooks */ void (*init_hook)(struct hda_codec *codec); - void (*unsol_event)(struct hda_codec *codec, unsigned int res); #ifdef CONFIG_SND_HDA_POWER_SAVE void (*power_hook)(struct hda_codec *codec); #endif @@ -201,6 +201,9 @@ unsigned int vol_in_capsrc:1; /* use capsrc volume (ADC has no vol) */ unsigned int parse_flags; /* passed to snd_hda_parse_pin_defcfg() */ unsigned int shared_mic_hp:1; /* HP/Mic-in sharing */ + unsigned int no_primary_hp:1; /* Don't prefer HP pins to speaker pins */ + unsigned int inv_dmic_fixup:1; /* has inverted digital-mic workaround */ + unsigned int inv_dmic_muted:1; /* R-ch of inv d-mic is muted? */ /* auto-mute control */ int automute_mode; @@ -298,6 +301,39 @@ } static void call_update_outputs(struct hda_codec *codec); +static void alc_inv_dmic_sync(struct hda_codec *codec, bool force); + +/* for shared I/O, change the pin-control accordingly */ +static void update_shared_mic_hp(struct hda_codec *codec, bool set_as_mic) +{ + struct alc_spec *spec = codec->spec; + unsigned int val; + hda_nid_t pin = spec->autocfg.inputs[1].pin; + /* NOTE: this assumes that there are only two inputs, the + * first is the real internal mic and the second is HP/mic jack. + */ + + val = snd_hda_get_default_vref(codec, pin); + + /* This pin does not have vref caps - let's enable vref on pin 0x18 + instead, as suggested by Realtek */ + if (val == AC_PINCTL_VREF_HIZ) { + const hda_nid_t vref_pin = 0x18; + /* Sanity check pin 0x18 */ + if (get_wcaps_type(get_wcaps(codec, vref_pin)) == AC_WID_PIN && + get_defcfg_connect(snd_hda_codec_get_pincfg(codec, vref_pin)) == AC_JACK_PORT_NONE) { + unsigned int vref_val = snd_hda_get_default_vref(codec, vref_pin); + if (vref_val != AC_PINCTL_VREF_HIZ) + snd_hda_set_pin_ctl(codec, vref_pin, PIN_IN | (set_as_mic ? vref_val : 0)); + } + } + + val = set_as_mic ? val | PIN_IN : PIN_HP; + snd_hda_set_pin_ctl(codec, pin, val); + + spec->automute_speaker = !set_as_mic; + call_update_outputs(codec); +} /* select the given imux item; either unmute exclusively or select the route */ static int alc_mux_select(struct hda_codec *codec, unsigned int adc_idx, @@ -325,21 +361,8 @@ return 0; spec->cur_mux[adc_idx] = idx; - /* for shared I/O, change the pin-control accordingly */ - if (spec->shared_mic_hp) { - unsigned int val; - hda_nid_t pin = spec->autocfg.inputs[1].pin; - /* NOTE: this assumes that there are only two inputs, the - * first is the real internal mic and the second is HP jack. - */ - if (spec->cur_mux[adc_idx]) - val = snd_hda_get_default_vref(codec, pin) | PIN_IN; - else - val = PIN_HP; - snd_hda_set_pin_ctl(codec, pin, val); - spec->automute_speaker = !spec->cur_mux[adc_idx]; - call_update_outputs(codec); - } + if (spec->shared_mic_hp) + update_shared_mic_hp(codec, spec->cur_mux[adc_idx]); if (spec->dyn_adc_switch) { alc_dyn_adc_pcm_resetup(codec, idx); @@ -368,6 +391,7 @@ AC_VERB_SET_CONNECT_SEL, imux->items[idx].index); } + alc_inv_dmic_sync(codec, true); return 1; } @@ -587,6 +611,8 @@ { struct alc_spec *spec = codec->spec; + if (spec->autocfg.line_out_type == AUTO_PIN_SPEAKER_OUT) + return; /* check LO jack only when it's different from HP */ if (spec->autocfg.line_out_pins[0] == spec->autocfg.hp_pins[0]) return; @@ -664,7 +690,7 @@ } /* unsolicited event for HP jack sensing */ -static void alc_sku_unsol_event(struct hda_codec *codec, unsigned int res) +static void alc_unsol_event(struct hda_codec *codec, unsigned int res) { int action; @@ -1000,11 +1026,9 @@ spec->automute_lo = spec->automute_lo_possible; spec->automute_speaker = spec->automute_speaker_possible; - if (spec->automute_speaker_possible || spec->automute_lo_possible) { + if (spec->automute_speaker_possible || spec->automute_lo_possible) /* create a control for automute mode */ alc_add_automute_mode_enum(codec); - spec->unsol_event = alc_sku_unsol_event; - } } /* return the position of NID in the list, or -1 if not found */ @@ -1167,7 +1191,6 @@ snd_printdd("realtek: Enable auto-mic switch on NID 0x%x/0x%x/0x%x\n", ext, fixed, dock); - spec->unsol_event = alc_sku_unsol_event; } /* check the availabilities of auto-mute and auto-mic switches */ @@ -1556,14 +1579,14 @@ static int alc_cap_getput_caller(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol, - getput_call_t func, bool check_adc_switch) + getput_call_t func, bool is_put) { struct hda_codec *codec = snd_kcontrol_chip(kcontrol); struct alc_spec *spec = codec->spec; int i, err = 0; mutex_lock(&codec->control_mutex); - if (check_adc_switch && spec->dyn_adc_switch) { + if (is_put && spec->dyn_adc_switch) { for (i = 0; i < spec->num_adc_nids; i++) { kcontrol->private_value = HDA_COMPOSE_AMP_VAL(spec->adc_nids[i], @@ -1584,6 +1607,8 @@ 3, 0, HDA_INPUT); err = func(kcontrol, ucontrol); } + if (err >= 0 && is_put) + alc_inv_dmic_sync(codec, false); error: mutex_unlock(&codec->control_mutex); return err; @@ -1676,6 +1701,108 @@ DEFINE_CAPMIX_NOSRC(3); /* + * Inverted digital-mic handling + * + * First off, it's a bit tricky. The "Inverted Internal Mic Capture Switch" + * gives the additional mute only to the right channel of the digital mic + * capture stream. This is a workaround for avoiding the almost silence + * by summing the stereo stream from some (known to be ForteMedia) + * digital mic unit. + * + * The logic is to call alc_inv_dmic_sync() after each action (possibly) + * modifying ADC amp. When the mute flag is set, it mutes the R-channel + * without caching so that the cache can still keep the original value. + * The cached value is then restored when the flag is set off or any other + * than d-mic is used as the current input source. + */ +static void alc_inv_dmic_sync(struct hda_codec *codec, bool force) +{ + struct alc_spec *spec = codec->spec; + int i; + + if (!spec->inv_dmic_fixup) + return; + if (!spec->inv_dmic_muted && !force) + return; + for (i = 0; i < spec->num_adc_nids; i++) { + int src = spec->dyn_adc_switch ? 0 : i; + bool dmic_fixup = false; + hda_nid_t nid; + int parm, dir, v; + + if (spec->inv_dmic_muted && + spec->imux_pins[spec->cur_mux[src]] == spec->inv_dmic_pin) + dmic_fixup = true; + if (!dmic_fixup && !force) + continue; + if (spec->vol_in_capsrc) { + nid = spec->capsrc_nids[i]; + parm = AC_AMP_SET_RIGHT | AC_AMP_SET_OUTPUT; + dir = HDA_OUTPUT; + } else { + nid = spec->adc_nids[i]; + parm = AC_AMP_SET_RIGHT | AC_AMP_SET_INPUT; + dir = HDA_INPUT; + } + /* we care only right channel */ + v = snd_hda_codec_amp_read(codec, nid, 1, dir, 0); + if (v & 0x80) /* if already muted, we don't need to touch */ + continue; + if (dmic_fixup) /* add mute for d-mic */ + v |= 0x80; + snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE, + parm | v); + } +} + +static int alc_inv_dmic_sw_get(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct hda_codec *codec = snd_kcontrol_chip(kcontrol); + struct alc_spec *spec = codec->spec; + + ucontrol->value.integer.value[0] = !spec->inv_dmic_muted; + return 0; +} + +static int alc_inv_dmic_sw_put(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) +{ + struct hda_codec *codec = snd_kcontrol_chip(kcontrol); + struct alc_spec *spec = codec->spec; + unsigned int val = !ucontrol->value.integer.value[0]; + + if (val == spec->inv_dmic_muted) + return 0; + spec->inv_dmic_muted = val; + alc_inv_dmic_sync(codec, true); + return 0; +} + +static const struct snd_kcontrol_new alc_inv_dmic_sw = { + .iface = SNDRV_CTL_ELEM_IFACE_MIXER, + .info = snd_ctl_boolean_mono_info, + .get = alc_inv_dmic_sw_get, + .put = alc_inv_dmic_sw_put, +}; + +static int alc_add_inv_dmic_mixer(struct hda_codec *codec, hda_nid_t nid) +{ + struct alc_spec *spec = codec->spec; + struct snd_kcontrol_new *knew = alc_kcontrol_new(spec); + if (!knew) + return -ENOMEM; + *knew = alc_inv_dmic_sw; + knew->name = kstrdup("Inverted Internal Mic Capture Switch", GFP_KERNEL); + if (!knew->name) + return -ENOMEM; + spec->inv_dmic_fixup = 1; + spec->inv_dmic_muted = 0; + spec->inv_dmic_pin = nid; + return 0; +} + +/* * virtual master controls */ @@ -1865,13 +1992,31 @@ return 0; } -static int alc_build_controls(struct hda_codec *codec) +static int alc_build_jacks(struct hda_codec *codec) { struct alc_spec *spec = codec->spec; + + if (spec->shared_mic_hp) { + int err; + int nid = spec->autocfg.inputs[1].pin; + err = snd_hda_jack_add_kctl(codec, nid, "Headphone Mic", 0); + if (err < 0) + return err; + err = snd_hda_jack_detect_enable(codec, nid, 0); + if (err < 0) + return err; + } + + return snd_hda_jack_add_kctls(codec, &spec->autocfg); +} + +static int alc_build_controls(struct hda_codec *codec) +{ int err = __alc_build_controls(codec); if (err < 0) return err; - err = snd_hda_jack_add_kctls(codec, &spec->autocfg); + + err = alc_build_jacks(codec); if (err < 0) return err; alc_apply_fixup(codec, ALC_FIXUP_ACT_BUILD); @@ -1908,14 +2053,6 @@ return 0; } -static void alc_unsol_event(struct hda_codec *codec, unsigned int res) -{ - struct alc_spec *spec = codec->spec; - - if (spec->unsol_event) - spec->unsol_event(codec, res); -} - #ifdef CONFIG_SND_HDA_POWER_SAVE static int alc_check_power_status(struct hda_codec *codec, hda_nid_t nid) { @@ -2317,6 +2454,7 @@ codec->patch_ops.init(codec); snd_hda_codec_resume_amp(codec); snd_hda_codec_resume_cache(codec); + alc_inv_dmic_sync(codec, true); hda_call_check_power_status(codec, 0x01); return 0; } @@ -2483,8 +2621,10 @@ return "PCM"; break; } - if (snd_BUG_ON(ch >= ARRAY_SIZE(channel_name))) + if (ch >= ARRAY_SIZE(channel_name)) { + snd_BUG(); return "PCM"; + } return channel_name[ch]; } @@ -4116,14 +4256,12 @@ */ static void alc_auto_init_std(struct hda_codec *codec) { - struct alc_spec *spec = codec->spec; alc_auto_init_multi_out(codec); alc_auto_init_extra_out(codec); alc_auto_init_analog_input(codec); alc_auto_init_input_src(codec); alc_auto_init_digital(codec); - if (spec->unsol_event) - alc_inithook(codec); + alc_inithook(codec); } /* @@ -4182,7 +4320,8 @@ return 0; /* can't find valid BIOS pin config */ } - if (cfg->line_out_type == AUTO_PIN_SPEAKER_OUT && + if (!spec->no_primary_hp && + cfg->line_out_type == AUTO_PIN_SPEAKER_OUT && cfg->line_outs <= cfg->hp_outs) { /* use HP as primary out */ cfg->speaker_outs = cfg->line_outs; @@ -4571,6 +4710,7 @@ SND_PCI_QUIRK(0x1584, 0x9077, "Uniwill P53", ALC880_FIXUP_VOL_KNOB), SND_PCI_QUIRK(0x161f, 0x203d, "W810", ALC880_FIXUP_W810), SND_PCI_QUIRK(0x161f, 0x205d, "Medion Rim 2150", ALC880_FIXUP_MEDION_RIM), + SND_PCI_QUIRK(0x1631, 0xe011, "PB 13201056", ALC880_FIXUP_6ST), SND_PCI_QUIRK(0x1734, 0x107c, "FSC F1734", ALC880_FIXUP_F1734), SND_PCI_QUIRK(0x1734, 0x1094, "FSC Amilo M1451G", ALC880_FIXUP_FUJITSU), SND_PCI_QUIRK(0x1734, 0x10ac, "FSC AMILO Xi 1526", ALC880_FIXUP_F1734), @@ -4724,7 +4864,6 @@ spec->automute_speaker = 1; spec->autocfg.hp_pins[0] = 0x0f; /* copy it for automute */ snd_hda_jack_detect_enable(codec, 0x0f, ALC_HP_EVENT); - spec->unsol_event = alc_sku_unsol_event; snd_hda_gen_add_verbs(&spec->gen, alc_gpio1_init_verbs); } } @@ -4909,6 +5048,7 @@ ALC889_FIXUP_DAC_ROUTE, ALC889_FIXUP_MBP_VREF, ALC889_FIXUP_IMAC91_VREF, + ALC882_FIXUP_NO_PRIMARY_HP, }; static void alc889_fixup_coef(struct hda_codec *codec, @@ -5030,6 +5170,17 @@ spec->keep_vref_in_automute = 1; } +/* Don't take HP output as primary + * strangely, the speaker output doesn't work on VAIO Z through DAC 0x05 + */ +static void alc882_fixup_no_primary_hp(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + if (action == ALC_FIXUP_ACT_PRE_PROBE) + spec->no_primary_hp = 1; +} + static const struct alc_fixup alc882_fixups[] = { [ALC882_FIXUP_ABIT_AW9D_MAX] = { .type = ALC_FIXUP_PINS, @@ -5212,6 +5363,10 @@ .chained = true, .chain_id = ALC882_FIXUP_GPIO1, }, + [ALC882_FIXUP_NO_PRIMARY_HP] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc882_fixup_no_primary_hp, + }, }; static const struct snd_pci_quirk alc882_fixup_tbl[] = { @@ -5246,6 +5401,8 @@ SND_PCI_QUIRK(0x1043, 0x1971, "Asus W2JC", ALC882_FIXUP_ASUS_W2JC), SND_PCI_QUIRK(0x1043, 0x835f, "Asus Eee 1601", ALC888_FIXUP_EEE1601), SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), + SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP), + SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP), /* All Apple entries are in codec SSIDs */ SND_PCI_QUIRK(0x106b, 0x00a0, "MacBookPro 3,1", ALC889_FIXUP_MBP_VREF), @@ -5266,6 +5423,7 @@ SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO), + SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF), SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF), @@ -5286,6 +5444,7 @@ {.id = ALC882_FIXUP_ACER_ASPIRE_4930G, .name = "acer-aspire-4930g"}, {.id = ALC882_FIXUP_ACER_ASPIRE_8930G, .name = "acer-aspire-8930g"}, {.id = ALC883_FIXUP_ACER_EAPD, .name = "acer-aspire"}, + {.id = ALC882_FIXUP_NO_PRIMARY_HP, .name = "no-primary-hp"}, {} }; @@ -5522,6 +5681,33 @@ { } }; +enum { + ALC268_FIXUP_HP_EAPD, +}; + +static const struct alc_fixup alc268_fixups[] = { + [ALC268_FIXUP_HP_EAPD] = { + .type = ALC_FIXUP_VERBS, + .v.verbs = (const struct hda_verb[]) { + {0x15, AC_VERB_SET_EAPD_BTLENABLE, 0}, + {} + } + }, +}; + +static const struct alc_model_fixup alc268_fixup_models[] = { + {.id = ALC268_FIXUP_HP_EAPD, .name = "hp-eapd"}, + {} +}; + +static const struct snd_pci_quirk alc268_fixup_tbl[] = { + /* below is codec SSID since multiple Toshiba laptops have the + * same PCI SSID 1179:ff00 + */ + SND_PCI_QUIRK(0x1179, 0xff06, "Toshiba P200", ALC268_FIXUP_HP_EAPD), + {} +}; + /* * BIOS auto configuration */ @@ -5553,6 +5739,9 @@ spec = codec->spec; + alc_pick_fixup(codec, alc268_fixup_models, alc268_fixup_tbl, alc268_fixups); + alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); + /* automatic parse from the BIOS config */ err = alc268_parse_auto_config(codec); if (err < 0) @@ -5582,6 +5771,8 @@ codec->patch_ops = alc_patch_ops; spec->shutup = alc_eapd_shutup; + alc_apply_fixup(codec, ALC_FIXUP_ACT_PROBE); + return 0; error: @@ -5649,7 +5840,7 @@ return alc_parse_auto_config(codec, alc269_ignore, ssids); } -static void alc269_toggle_power_output(struct hda_codec *codec, int power_up) +static void alc269vb_toggle_power_output(struct hda_codec *codec, int power_up) { int val = alc_read_coef_idx(codec, 0x04); if (power_up) @@ -5666,10 +5857,10 @@ if (spec->codec_variant != ALC269_TYPE_ALC269VB) return; - if ((alc_get_coef0(codec) & 0x00ff) == 0x017) - alc269_toggle_power_output(codec, 0); - if ((alc_get_coef0(codec) & 0x00ff) == 0x018) { - alc269_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && + (alc_get_coef0(codec) & 0x00ff) == 0x018) { msleep(150); } } @@ -5679,24 +5870,22 @@ { struct alc_spec *spec = codec->spec; - if (spec->codec_variant == ALC269_TYPE_ALC269VB || + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 0); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && (alc_get_coef0(codec) & 0x00ff) == 0x018) { - alc269_toggle_power_output(codec, 0); msleep(150); } codec->patch_ops.init(codec); - if (spec->codec_variant == ALC269_TYPE_ALC269VB || + if (spec->codec_variant == ALC269_TYPE_ALC269VB) + alc269vb_toggle_power_output(codec, 1); + if (spec->codec_variant == ALC269_TYPE_ALC269VB && (alc_get_coef0(codec) & 0x00ff) == 0x017) { - alc269_toggle_power_output(codec, 1); msleep(200); } - if (spec->codec_variant == ALC269_TYPE_ALC269VB || - (alc_get_coef0(codec) & 0x00ff) == 0x018) - alc269_toggle_power_output(codec, 1); - snd_hda_codec_resume_amp(codec); snd_hda_codec_resume_cache(codec); hda_call_check_power_status(codec, 0x01); @@ -5704,6 +5893,15 @@ } #endif /* CONFIG_PM */ +static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + + if (action == ALC_FIXUP_ACT_PRE_PROBE) + spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP; +} + static void alc269_fixup_hweq(struct hda_codec *codec, const struct alc_fixup *fix, int action) { @@ -5787,6 +5985,30 @@ spec->automute_hook = alc269_quanta_automute; } +/* update mute-LED according to the speaker mute state via mic1 VREF pin */ +static void alc269_fixup_mic1_mute_hook(void *private_data, int enabled) +{ + struct hda_codec *codec = private_data; + unsigned int pinval = AC_PINCTL_IN_EN + (enabled ? + AC_PINCTL_VREF_HIZ : AC_PINCTL_VREF_80); + snd_hda_set_pin_ctl_cache(codec, 0x18, pinval); +} + +static void alc269_fixup_mic1_mute(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + struct alc_spec *spec = codec->spec; + switch (action) { + case ALC_FIXUP_ACT_BUILD: + spec->vmaster_mute.hook = alc269_fixup_mic1_mute_hook; + snd_hda_add_vmaster_hook(codec, &spec->vmaster_mute, true); + /* fallthru */ + case ALC_FIXUP_ACT_INIT: + snd_hda_sync_vmaster_hook(&spec->vmaster_mute); + break; + } +} + /* update mute-LED according to the speaker mute state via mic2 VREF pin */ static void alc269_fixup_mic2_mute_hook(void *private_data, int enabled) { @@ -5810,6 +6032,14 @@ } } +static void alc269_fixup_inv_dmic(struct hda_codec *codec, + const struct alc_fixup *fix, int action) +{ + if (action == ALC_FIXUP_ACT_PROBE) + alc_add_inv_dmic_mixer(codec, 0x12); +} + + enum { ALC269_FIXUP_SONY_VAIO, ALC275_FIXUP_SONY_VAIO_GPIO2, @@ -5827,7 +6057,11 @@ ALC269_FIXUP_DMIC, ALC269VB_FIXUP_AMIC, ALC269VB_FIXUP_DMIC, + ALC269_FIXUP_MIC1_MUTE_LED, ALC269_FIXUP_MIC2_MUTE_LED, + ALC269_FIXUP_LENOVO_DOCK, + ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT, + ALC269_FIXUP_INV_DMIC, }; static const struct alc_fixup alc269_fixups[] = { @@ -5889,6 +6123,8 @@ [ALC269_FIXUP_PCM_44K] = { .type = ALC_FIXUP_FUNC, .v.func = alc269_fixup_pcm_44k, + .chained = true, + .chain_id = ALC269_FIXUP_QUANTA_MUTE }, [ALC269_FIXUP_STEREO_DMIC] = { .type = ALC_FIXUP_FUNC, @@ -5948,16 +6184,43 @@ { } }, }, + [ALC269_FIXUP_MIC1_MUTE_LED] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_mic1_mute, + }, [ALC269_FIXUP_MIC2_MUTE_LED] = { .type = ALC_FIXUP_FUNC, .v.func = alc269_fixup_mic2_mute, }, + [ALC269_FIXUP_LENOVO_DOCK] = { + .type = ALC_FIXUP_PINS, + .v.pins = (const struct alc_pincfg[]) { + { 0x19, 0x23a11040 }, /* dock mic */ + { 0x1b, 0x2121103f }, /* dock headphone */ + { } + }, + .chained = true, + .chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT + }, + [ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_pincfg_no_hp_to_lineout, + }, + [ALC269_FIXUP_INV_DMIC] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc269_fixup_inv_dmic, + }, }; static const struct snd_pci_quirk alc269_fixup_tbl[] = { + SND_PCI_QUIRK(0x1025, 0x029b, "Acer 1810TZ", ALC269_FIXUP_INV_DMIC), + SND_PCI_QUIRK(0x1025, 0x0349, "Acer AOD260", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_MIC2_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x1972, "HP Pavilion 17", ALC269_FIXUP_MIC1_MUTE_LED), + SND_PCI_QUIRK(0x103c, 0x1977, "HP Pavilion 14", ALC269_FIXUP_MIC1_MUTE_LED), SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_DMIC), SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW), + SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC), SND_PCI_QUIRK(0x1043, 0x834a, "ASUS S101", ALC269_FIXUP_STEREO_DMIC), @@ -5975,8 +6238,12 @@ SND_PCI_QUIRK(0x17aa, 0x21b8, "Thinkpad Edge 14", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE), SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE), - SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_QUANTA_MUTE), - SND_PCI_QUIRK(0x17aa, 0x3bf8, "Lenovo Ideapd", ALC269_FIXUP_PCM_44K), + SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21f3, "Thinkpad T430", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK), + SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K), SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD), #if 0 @@ -6033,6 +6300,7 @@ static const struct alc_model_fixup alc269_fixup_models[] = { {.id = ALC269_FIXUP_AMIC, .name = "laptop-amic"}, {.id = ALC269_FIXUP_DMIC, .name = "laptop-dmic"}, + {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"}, {} }; @@ -6094,6 +6362,12 @@ spec = codec->spec; + alc_pick_fixup(codec, alc269_fixup_models, + alc269_fixup_tbl, alc269_fixups); + alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); + + alc_auto_parse_customize_define(codec); + if (codec->vendor_id == 0x10ec0269) { spec->codec_variant = ALC269_TYPE_ALC269VA; switch (alc_get_coef0(codec) & 0x00f0) { @@ -6121,12 +6395,6 @@ alc269_fill_coef(codec); } - alc_pick_fixup(codec, alc269_fixup_models, - alc269_fixup_tbl, alc269_fixups); - alc_apply_fixup(codec, ALC_FIXUP_ACT_PRE_PROBE); - - alc_auto_parse_customize_define(codec); - /* automatic parse from the BIOS config */ err = alc269_parse_auto_config(codec); if (err < 0) @@ -6300,8 +6568,8 @@ const struct alc_fixup *fix, int action) { if (action == ALC_FIXUP_ACT_PRE_PROBE) { - snd_hda_override_pin_caps(codec, 0x18, 0x00001714); - snd_hda_override_pin_caps(codec, 0x19, 0x0000171c); + snd_hda_override_pin_caps(codec, 0x18, 0x00000734); + snd_hda_override_pin_caps(codec, 0x19, 0x0000073c); } } @@ -6426,6 +6694,8 @@ "hda_codec: failed to override amp caps for NID 0x2\n"); } +#define alc662_fixup_inv_dmic alc269_fixup_inv_dmic + enum { ALC662_FIXUP_ASPIRE, ALC662_FIXUP_IDEAPAD, @@ -6443,6 +6713,7 @@ ALC662_FIXUP_ASUS_MODE8, ALC662_FIXUP_NO_JACK_DETECT, ALC662_FIXUP_ZOTAC_Z68, + ALC662_FIXUP_INV_DMIC, }; static const struct alc_fixup alc662_fixups[] = { @@ -6599,12 +6870,17 @@ { } } }, + [ALC662_FIXUP_INV_DMIC] = { + .type = ALC_FIXUP_FUNC, + .v.func = alc662_fixup_inv_dmic, + }, }; static const struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x1019, 0x9087, "ECS", ALC662_FIXUP_ASUS_MODE2), SND_PCI_QUIRK(0x1025, 0x0308, "Acer Aspire 8942G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x1025, 0x031c, "Gateway NV79", ALC662_FIXUP_SKU_IGNORE), + SND_PCI_QUIRK(0x1025, 0x0349, "eMachines eM250", ALC662_FIXUP_INV_DMIC), SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT), @@ -6831,6 +7107,10 @@ { .id = 0x10ec0275, .name = "ALC275", .patch = patch_alc269 }, { .id = 0x10ec0276, .name = "ALC276", .patch = patch_alc269 }, { .id = 0x10ec0280, .name = "ALC280", .patch = patch_alc269 }, + { .id = 0x10ec0282, .name = "ALC282", .patch = patch_alc269 }, + { .id = 0x10ec0283, .name = "ALC283", .patch = patch_alc269 }, + { .id = 0x10ec0290, .name = "ALC290", .patch = patch_alc269 }, + { .id = 0x10ec0292, .name = "ALC292", .patch = patch_alc269 }, { .id = 0x10ec0861, .rev = 0x100340, .name = "ALC660", .patch = patch_alc861 }, { .id = 0x10ec0660, .name = "ALC660-VD", .patch = patch_alc861vd }, @@ -6844,6 +7124,7 @@ .patch = patch_alc662 }, { .id = 0x10ec0663, .name = "ALC663", .patch = patch_alc662 }, { .id = 0x10ec0665, .name = "ALC665", .patch = patch_alc662 }, + { .id = 0x10ec0668, .name = "ALC668", .patch = patch_alc662 }, { .id = 0x10ec0670, .name = "ALC670", .patch = patch_alc662 }, { .id = 0x10ec0680, .name = "ALC680", .patch = patch_alc680 }, { .id = 0x10ec0880, .name = "ALC880", .patch = patch_alc880 }, @@ -6861,6 +7142,7 @@ { .id = 0x10ec0889, .name = "ALC889", .patch = patch_alc882 }, { .id = 0x10ec0892, .name = "ALC892", .patch = patch_alc662 }, { .id = 0x10ec0899, .name = "ALC898", .patch = patch_alc882 }, + { .id = 0x10ec0900, .name = "ALC1150", .patch = patch_alc882 }, {} /* terminator */ }; --- linux-3.5.0.orig/sound/pci/hda/hda_codec.c +++ linux-3.5.0/sound/pci/hda/hda_codec.c @@ -2325,6 +2325,7 @@ } if (codec->patch_ops.free) codec->patch_ops.free(codec); + memset(&codec->patch_ops, 0, sizeof(codec->patch_ops)); snd_hda_jack_tbl_clear(codec); codec->proc_widget_hook = NULL; codec->spec = NULL; @@ -2340,7 +2341,6 @@ codec->num_pcms = 0; codec->pcm_info = NULL; codec->preset = NULL; - memset(&codec->patch_ops, 0, sizeof(codec->patch_ops)); codec->slave_dig_outs = NULL; codec->spdif_status_reset = 0; module_put(codec->owner); @@ -3542,7 +3542,7 @@ /* * call suspend and power-down; used both from PM and power-save */ -static void hda_call_codec_suspend(struct hda_codec *codec) +static void hda_call_codec_suspend(struct hda_codec *codec, bool in_wq) { if (codec->patch_ops.suspend) codec->patch_ops.suspend(codec, PMSG_SUSPEND); @@ -3551,7 +3551,9 @@ codec->afg ? codec->afg : codec->mfg, AC_PWRST_D3); #ifdef CONFIG_SND_HDA_POWER_SAVE - cancel_delayed_work(&codec->power_work); + /* Cancel delayed work if we aren't currently running from it. */ + if (!in_wq) + cancel_delayed_work_sync(&codec->power_work); spin_lock(&codec->power_lock); snd_hda_update_power_acct(codec); trace_hda_power_down(codec); @@ -4372,7 +4374,7 @@ } spin_unlock(&codec->power_lock); - hda_call_codec_suspend(codec); + hda_call_codec_suspend(codec, true); if (bus->ops.pm_notify) bus->ops.pm_notify(bus); } @@ -4418,6 +4420,15 @@ cancel_delayed_work_sync(&codec->power_work); spin_lock(&codec->power_lock); + /* If the power down delayed work was cancelled above before starting, + * then there is no need to go through power up here. + */ + if (codec->power_on) { + if (codec->power_transition < 0) + codec->power_transition = 0; + spin_unlock(&codec->power_lock); + return; + } trace_hda_power_up(codec); snd_hda_update_power_acct(codec); codec->power_on = 1; @@ -5029,7 +5040,7 @@ list_for_each_entry(codec, &bus->codec_list, list) { if (hda_codec_is_power_on(codec)) - hda_call_codec_suspend(codec); + hda_call_codec_suspend(codec, false); } return 0; } --- linux-3.5.0.orig/sound/pci/ice1712/prodigy_hifi.c +++ linux-3.5.0/sound/pci/ice1712/prodigy_hifi.c @@ -297,6 +297,7 @@ } static const DECLARE_TLV_DB_SCALE(db_scale_wm_dac, -12700, 100, 1); +static const DECLARE_TLV_DB_LINEAR(ak4396_db_scale, TLV_DB_GAIN_MUTE, 0); static struct snd_kcontrol_new prodigy_hd2_controls[] __devinitdata = { { @@ -307,7 +308,7 @@ .info = ak4396_dac_vol_info, .get = ak4396_dac_vol_get, .put = ak4396_dac_vol_put, - .tlv = { .p = db_scale_wm_dac }, + .tlv = { .p = ak4396_db_scale }, }, }; --- linux-3.5.0.orig/sound/pci/ali5451/ali5451.c +++ linux-3.5.0/sound/pci/ali5451/ali5451.c @@ -1435,7 +1435,7 @@ spin_lock(&codec->reg_lock); if (!pvoice->running) { - spin_unlock_irq(&codec->reg_lock); + spin_unlock(&codec->reg_lock); return 0; } outb(pvoice->number, ALI_REG(codec, ALI_GC_CIR)); --- linux-3.5.0.orig/sound/arm/pxa2xx-ac97-lib.c +++ linux-3.5.0/sound/arm/pxa2xx-ac97-lib.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -148,6 +149,8 @@ static inline void pxa_ac97_cold_pxa27x(void) { + unsigned int timeout; + GCR &= GCR_COLD_RST; /* clear everything but nCRST */ GCR &= ~GCR_COLD_RST; /* then assert nCRST */ @@ -157,8 +160,10 @@ clk_enable(ac97conf_clk); udelay(5); clk_disable(ac97conf_clk); - GCR = GCR_COLD_RST; - udelay(50); + GCR = GCR_COLD_RST | GCR_WARM_RST; + timeout = 100; /* wait for the codec-ready bit to be set */ + while (!((GSR | gsr_bits) & (GSR_PCR | GSR_SCR)) && timeout--) + mdelay(1); } #endif @@ -340,8 +345,21 @@ } if (cpu_is_pxa27x()) { - /* Use GPIO 113 as AC97 Reset on Bulverde */ + /* + * This gpio is needed for a work-around to a bug in the ac97 + * controller during warm reset. The direction and level is set + * here so that it is an output driven high when switching from + * AC97_nRESET alt function to generic gpio. + */ + ret = gpio_request_one(reset_gpio, GPIOF_OUT_INIT_HIGH, + "pxa27x ac97 reset"); + if (ret < 0) { + pr_err("%s: gpio_request_one() failed: %d\n", + __func__, ret); + goto err_conf; + } pxa27x_assert_ac97reset(reset_gpio, 0); + ac97conf_clk = clk_get(&dev->dev, "AC97CONFCLK"); if (IS_ERR(ac97conf_clk)) { ret = PTR_ERR(ac97conf_clk); @@ -384,6 +402,8 @@ void pxa2xx_ac97_hw_remove(struct platform_device *dev) { + if (cpu_is_pxa27x()) + gpio_free(reset_gpio); GCR |= GCR_ACLINK_OFF; free_irq(IRQ_AC97, NULL); if (ac97conf_clk) { --- linux-3.5.0.orig/sound/core/pcm.c +++ linux-3.5.0/sound/core/pcm.c @@ -1086,11 +1086,19 @@ if (list_empty(&pcm->list)) goto unlock; + mutex_lock(&pcm->open_mutex); + wake_up(&pcm->open_wait); list_del_init(&pcm->list); for (cidx = 0; cidx < 2; cidx++) - for (substream = pcm->streams[cidx].substream; substream; substream = substream->next) - if (substream->runtime) + for (substream = pcm->streams[cidx].substream; substream; substream = substream->next) { + snd_pcm_stream_lock_irq(substream); + if (substream->runtime) { substream->runtime->status->state = SNDRV_PCM_STATE_DISCONNECTED; + wake_up(&substream->runtime->sleep); + wake_up(&substream->runtime->tsleep); + } + snd_pcm_stream_unlock_irq(substream); + } list_for_each_entry(notify, &snd_pcm_notify_list, list) { notify->n_disconnect(pcm); } @@ -1106,6 +1114,7 @@ } snd_unregister_device(devtype, pcm->card, pcm->device); } + mutex_unlock(&pcm->open_mutex); unlock: mutex_unlock(®ister_mutex); return 0; --- linux-3.5.0.orig/sound/core/compress_offload.c +++ linux-3.5.0/sound/core/compress_offload.c @@ -102,12 +102,15 @@ if (dirn != compr->direction) { pr_err("this device doesn't support this direction\n"); + snd_card_unref(compr->card); return -EINVAL; } data = kzalloc(sizeof(*data), GFP_KERNEL); - if (!data) + if (!data) { + snd_card_unref(compr->card); return -ENOMEM; + } data->stream.ops = compr->ops; data->stream.direction = dirn; data->stream.private_data = compr->private_data; @@ -115,6 +118,7 @@ runtime = kzalloc(sizeof(*runtime), GFP_KERNEL); if (!runtime) { kfree(data); + snd_card_unref(compr->card); return -ENOMEM; } runtime->state = SNDRV_PCM_STATE_OPEN; @@ -128,7 +132,8 @@ kfree(runtime); kfree(data); } - return ret; + snd_card_unref(compr->card); + return 0; } static int snd_compr_free(struct inode *inode, struct file *f) --- linux-3.5.0.orig/sound/core/hwdep.c +++ linux-3.5.0/sound/core/hwdep.c @@ -100,8 +100,10 @@ if (hw == NULL) return -ENODEV; - if (!try_module_get(hw->card->module)) + if (!try_module_get(hw->card->module)) { + snd_card_unref(hw->card); return -EFAULT; + } init_waitqueue_entry(&wait, current); add_wait_queue(&hw->open_wait, &wait); @@ -129,6 +131,10 @@ mutex_unlock(&hw->open_mutex); schedule(); mutex_lock(&hw->open_mutex); + if (hw->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -148,6 +154,7 @@ mutex_unlock(&hw->open_mutex); if (err < 0) module_put(hw->card->module); + snd_card_unref(hw->card); return err; } @@ -459,12 +466,15 @@ mutex_unlock(®ister_mutex); return -EINVAL; } + mutex_lock(&hwdep->open_mutex); + wake_up(&hwdep->open_wait); #ifdef CONFIG_SND_OSSEMUL if (hwdep->ossreg) snd_unregister_oss_device(hwdep->oss_type, hwdep->card, hwdep->device); #endif snd_unregister_device(SNDRV_DEVICE_TYPE_HWDEP, hwdep->card, hwdep->device); list_del_init(&hwdep->list); + mutex_unlock(&hwdep->open_mutex); mutex_unlock(®ister_mutex); return 0; } --- linux-3.5.0.orig/sound/core/init.c +++ linux-3.5.0/sound/core/init.c @@ -213,6 +213,7 @@ spin_lock_init(&card->files_lock); INIT_LIST_HEAD(&card->files_list); init_waitqueue_head(&card->shutdown_sleep); + atomic_set(&card->refcount, 0); #ifdef CONFIG_PM mutex_init(&card->power_lock); init_waitqueue_head(&card->power_sleep); @@ -446,21 +447,36 @@ return 0; } +/** + * snd_card_unref - release the reference counter + * @card: the card instance + * + * Decrements the reference counter. When it reaches to zero, wake up + * the sleeper and call the destructor if needed. + */ +void snd_card_unref(struct snd_card *card) +{ + if (atomic_dec_and_test(&card->refcount)) { + wake_up(&card->shutdown_sleep); + if (card->free_on_last_close) + snd_card_do_free(card); + } +} +EXPORT_SYMBOL(snd_card_unref); + int snd_card_free_when_closed(struct snd_card *card) { - int free_now = 0; - int ret = snd_card_disconnect(card); - if (ret) - return ret; + int ret; - spin_lock(&card->files_lock); - if (list_empty(&card->files_list)) - free_now = 1; - else - card->free_on_last_close = 1; - spin_unlock(&card->files_lock); + atomic_inc(&card->refcount); + ret = snd_card_disconnect(card); + if (ret) { + atomic_dec(&card->refcount); + return ret; + } - if (free_now) + card->free_on_last_close = 1; + if (atomic_dec_and_test(&card->refcount)) snd_card_do_free(card); return 0; } @@ -474,7 +490,7 @@ return ret; /* wait, until all devices are ready for the free operation */ - wait_event(card->shutdown_sleep, list_empty(&card->files_list)); + wait_event(card->shutdown_sleep, !atomic_read(&card->refcount)); snd_card_do_free(card); return 0; } @@ -886,6 +902,7 @@ return -ENODEV; } list_add(&mfile->list, &card->files_list); + atomic_inc(&card->refcount); spin_unlock(&card->files_lock); return 0; } @@ -908,7 +925,6 @@ int snd_card_file_remove(struct snd_card *card, struct file *file) { struct snd_monitor_file *mfile, *found = NULL; - int last_close = 0; spin_lock(&card->files_lock); list_for_each_entry(mfile, &card->files_list, list) { @@ -923,19 +939,13 @@ break; } } - if (list_empty(&card->files_list)) - last_close = 1; spin_unlock(&card->files_lock); - if (last_close) { - wake_up(&card->shutdown_sleep); - if (card->free_on_last_close) - snd_card_do_free(card); - } if (!found) { snd_printk(KERN_ERR "ALSA card file remove problem (%p)\n", file); return -ENOENT; } kfree(found); + snd_card_unref(card); return 0; } --- linux-3.5.0.orig/sound/core/sound_oss.c +++ linux-3.5.0/sound/core/sound_oss.c @@ -40,6 +40,9 @@ static struct snd_minor *snd_oss_minors[SNDRV_OSS_MINORS]; static DEFINE_MUTEX(sound_oss_mutex); +/* NOTE: This function increments the refcount of the associated card like + * snd_lookup_minor_data(); the caller must call snd_card_unref() appropriately + */ void *snd_lookup_oss_minor_data(unsigned int minor, int type) { struct snd_minor *mreg; @@ -49,9 +52,11 @@ return NULL; mutex_lock(&sound_oss_mutex); mreg = snd_oss_minors[minor]; - if (mreg && mreg->type == type) + if (mreg && mreg->type == type) { private_data = mreg->private_data; - else + if (private_data && mreg->card_ptr) + atomic_inc(&mreg->card_ptr->refcount); + } else private_data = NULL; mutex_unlock(&sound_oss_mutex); return private_data; @@ -123,6 +128,7 @@ preg->device = dev; preg->f_ops = f_ops; preg->private_data = private_data; + preg->card_ptr = card; mutex_lock(&sound_oss_mutex); snd_oss_minors[minor] = preg; minor_unit = SNDRV_MINOR_OSS_DEVICE(minor); --- linux-3.5.0.orig/sound/core/pcm_native.c +++ linux-3.5.0/sound/core/pcm_native.c @@ -369,6 +369,14 @@ return usecs; } +static void snd_pcm_set_state(struct snd_pcm_substream *substream, int state) +{ + snd_pcm_stream_lock_irq(substream); + if (substream->runtime->status->state != SNDRV_PCM_STATE_DISCONNECTED) + substream->runtime->status->state = state; + snd_pcm_stream_unlock_irq(substream); +} + static int snd_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params) { @@ -452,7 +460,7 @@ runtime->boundary *= 2; snd_pcm_timer_resolution_change(substream); - runtime->status->state = SNDRV_PCM_STATE_SETUP; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_SETUP); if (pm_qos_request_active(&substream->latency_pm_qos_req)) pm_qos_remove_request(&substream->latency_pm_qos_req); @@ -464,7 +472,7 @@ /* hardware might be unusable from this time, so we force application to retry to set the correct hardware parameter settings */ - runtime->status->state = SNDRV_PCM_STATE_OPEN; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_OPEN); if (substream->ops->hw_free != NULL) substream->ops->hw_free(substream); return err; @@ -512,7 +520,7 @@ return -EBADFD; if (substream->ops->hw_free) result = substream->ops->hw_free(substream); - runtime->status->state = SNDRV_PCM_STATE_OPEN; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_OPEN); pm_qos_remove_request(&substream->latency_pm_qos_req); return result; } @@ -1320,7 +1328,7 @@ { struct snd_pcm_runtime *runtime = substream->runtime; runtime->control->appl_ptr = runtime->status->hw_ptr; - runtime->status->state = SNDRV_PCM_STATE_PREPARED; + snd_pcm_set_state(substream, SNDRV_PCM_STATE_PREPARED); } static struct action_ops snd_pcm_action_prepare = { @@ -1510,6 +1518,10 @@ down_read(&snd_pcm_link_rwsem); snd_pcm_stream_lock_irq(substream); remove_wait_queue(&to_check->sleep, &wait); + if (card->shutdown) { + result = -ENODEV; + break; + } if (tout == 0) { if (substream->runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) result = -ESTRPIPE; @@ -1633,6 +1645,7 @@ write_unlock_irq(&snd_pcm_link_rwlock); up_write(&snd_pcm_link_rwsem); _nolock: + snd_card_unref(substream1->pcm->card); fput(file); if (res < 0) kfree(group); @@ -2107,7 +2120,10 @@ return err; pcm = snd_lookup_minor_data(iminor(inode), SNDRV_DEVICE_TYPE_PCM_PLAYBACK); - return snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_PLAYBACK); + err = snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_PLAYBACK); + if (pcm) + snd_card_unref(pcm->card); + return err; } static int snd_pcm_capture_open(struct inode *inode, struct file *file) @@ -2118,7 +2134,10 @@ return err; pcm = snd_lookup_minor_data(iminor(inode), SNDRV_DEVICE_TYPE_PCM_CAPTURE); - return snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_CAPTURE); + err = snd_pcm_open(file, pcm, SNDRV_PCM_STREAM_CAPTURE); + if (pcm) + snd_card_unref(pcm->card); + return err; } static int snd_pcm_open(struct file *file, struct snd_pcm *pcm, int stream) @@ -2155,6 +2174,10 @@ mutex_unlock(&pcm->open_mutex); schedule(); mutex_lock(&pcm->open_mutex); + if (pcm->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; --- linux-3.5.0.orig/sound/core/sound.c +++ linux-3.5.0/sound/core/sound.c @@ -99,6 +99,10 @@ * * Checks that a minor device with the specified type is registered, and returns * its user data pointer. + * + * This function increments the reference counter of the card instance + * if an associated instance with the given minor number and type is found. + * The caller must call snd_card_unref() appropriately later. */ void *snd_lookup_minor_data(unsigned int minor, int type) { @@ -109,9 +113,11 @@ return NULL; mutex_lock(&sound_mutex); mreg = snd_minors[minor]; - if (mreg && mreg->type == type) + if (mreg && mreg->type == type) { private_data = mreg->private_data; - else + if (private_data && mreg->card_ptr) + atomic_inc(&mreg->card_ptr->refcount); + } else private_data = NULL; mutex_unlock(&sound_mutex); return private_data; @@ -276,6 +282,7 @@ preg->device = dev; preg->f_ops = f_ops; preg->private_data = private_data; + preg->card_ptr = card; mutex_lock(&sound_mutex); #ifdef CONFIG_SND_DYNAMIC_MINORS minor = snd_find_free_minor(type); --- linux-3.5.0.orig/sound/core/rawmidi.c +++ linux-3.5.0/sound/core/rawmidi.c @@ -379,8 +379,10 @@ if (rmidi == NULL) return -ENODEV; - if (!try_module_get(rmidi->card->module)) + if (!try_module_get(rmidi->card->module)) { + snd_card_unref(rmidi->card); return -ENXIO; + } mutex_lock(&rmidi->open_mutex); card = rmidi->card; @@ -422,6 +424,10 @@ mutex_unlock(&rmidi->open_mutex); schedule(); mutex_lock(&rmidi->open_mutex); + if (rmidi->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -440,6 +446,7 @@ #endif file->private_data = rawmidi_file; mutex_unlock(&rmidi->open_mutex); + snd_card_unref(rmidi->card); return 0; __error: @@ -447,6 +454,7 @@ __error_card: mutex_unlock(&rmidi->open_mutex); module_put(rmidi->card->module); + snd_card_unref(rmidi->card); return err; } @@ -991,6 +999,8 @@ spin_unlock_irq(&runtime->lock); schedule(); remove_wait_queue(&runtime->sleep, &wait); + if (rfile->rmidi->card->shutdown) + return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; if (!runtime->avail) @@ -1234,6 +1244,8 @@ spin_unlock_irq(&runtime->lock); timeout = schedule_timeout(30 * HZ); remove_wait_queue(&runtime->sleep, &wait); + if (rfile->rmidi->card->shutdown) + return -ENODEV; if (signal_pending(current)) return result > 0 ? result : -ERESTARTSYS; if (!runtime->avail && !timeout) @@ -1609,9 +1621,20 @@ static int snd_rawmidi_dev_disconnect(struct snd_device *device) { struct snd_rawmidi *rmidi = device->device_data; + int dir; mutex_lock(®ister_mutex); + mutex_lock(&rmidi->open_mutex); + wake_up(&rmidi->open_wait); list_del_init(&rmidi->list); + for (dir = 0; dir < 2; dir++) { + struct snd_rawmidi_substream *s; + list_for_each_entry(s, &rmidi->streams[dir].substreams, list) { + if (s->runtime) + wake_up(&s->runtime->sleep); + } + } + #ifdef CONFIG_SND_OSSEMUL if (rmidi->ossreg) { if ((int)rmidi->device == midi_map[rmidi->card->number]) { @@ -1626,6 +1649,7 @@ } #endif /* CONFIG_SND_OSSEMUL */ snd_unregister_device(SNDRV_DEVICE_TYPE_RAWMIDI, rmidi->card, rmidi->device); + mutex_unlock(&rmidi->open_mutex); mutex_unlock(®ister_mutex); return 0; } --- linux-3.5.0.orig/sound/core/control.c +++ linux-3.5.0/sound/core/control.c @@ -86,6 +86,7 @@ write_lock_irqsave(&card->ctl_files_rwlock, flags); list_add_tail(&ctl->list, &card->ctl_files); write_unlock_irqrestore(&card->ctl_files_rwlock, flags); + snd_card_unref(card); return 0; __error: @@ -93,6 +94,8 @@ __error2: snd_card_file_remove(card, file); __error1: + if (card) + snd_card_unref(card); return err; } @@ -1433,6 +1436,8 @@ spin_unlock_irq(&ctl->read_lock); schedule(); remove_wait_queue(&ctl->change_sleep, &wait); + if (ctl->card->shutdown) + return -ENODEV; if (signal_pending(current)) return -ERESTARTSYS; spin_lock_irq(&ctl->read_lock); --- linux-3.5.0.orig/sound/core/oss/mixer_oss.c +++ linux-3.5.0/sound/core/oss/mixer_oss.c @@ -52,14 +52,19 @@ SNDRV_OSS_DEVICE_TYPE_MIXER); if (card == NULL) return -ENODEV; - if (card->mixer_oss == NULL) + if (card->mixer_oss == NULL) { + snd_card_unref(card); return -ENODEV; + } err = snd_card_file_add(card, file); - if (err < 0) + if (err < 0) { + snd_card_unref(card); return err; + } fmixer = kzalloc(sizeof(*fmixer), GFP_KERNEL); if (fmixer == NULL) { snd_card_file_remove(card, file); + snd_card_unref(card); return -ENOMEM; } fmixer->card = card; @@ -68,8 +73,10 @@ if (!try_module_get(card->module)) { kfree(fmixer); snd_card_file_remove(card, file); + snd_card_unref(card); return -EFAULT; } + snd_card_unref(card); return 0; } --- linux-3.5.0.orig/sound/core/oss/pcm_oss.c +++ linux-3.5.0/sound/core/oss/pcm_oss.c @@ -2441,6 +2441,10 @@ mutex_unlock(&pcm->open_mutex); schedule(); mutex_lock(&pcm->open_mutex); + if (pcm->card->shutdown) { + err = -ENODEV; + break; + } if (signal_pending(current)) { err = -ERESTARTSYS; break; @@ -2450,6 +2454,7 @@ mutex_unlock(&pcm->open_mutex); if (err < 0) goto __error; + snd_card_unref(pcm->card); return err; __error: @@ -2457,6 +2462,8 @@ __error2: snd_card_file_remove(pcm->card, file); __error1: + if (pcm) + snd_card_unref(pcm->card); return err; } --- linux-3.5.0.orig/block/blk-core.c +++ linux-3.5.0/block/blk-core.c @@ -598,8 +598,8 @@ /* * A queue starts its life with bypass turned on to avoid * unnecessary bypass on/off overhead and nasty surprises during - * init. The initial bypass will be finished at the end of - * blk_init_allocated_queue(). + * init. The initial bypass will be finished when the queue is + * registered by blk_register_queue(). */ q->bypass_depth = 1; __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags); @@ -686,7 +686,7 @@ q->request_fn = rfn; q->prep_rq_fn = NULL; q->unprep_rq_fn = NULL; - q->queue_flags = QUEUE_FLAG_DEFAULT; + q->queue_flags |= QUEUE_FLAG_DEFAULT; /* Override internal queue lock with supplied lock pointer */ if (lock) @@ -702,11 +702,6 @@ /* init elevator */ if (elevator_init(q, NULL)) return NULL; - - blk_queue_congestion_threshold(q); - - /* all done, end the initial bypass */ - blk_queue_bypass_end(q); return q; } EXPORT_SYMBOL(blk_init_allocated_queue); --- linux-3.5.0.orig/block/scsi_ioctl.c +++ linux-3.5.0/block/scsi_ioctl.c @@ -27,6 +27,9 @@ #include #include #include +#include +#include +#include #include #include @@ -710,8 +713,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.5.0.orig/block/blk-ioc.c +++ linux-3.5.0/block/blk-ioc.c @@ -244,6 +244,7 @@ /* initialize */ atomic_long_set(&ioc->refcount, 1); + atomic_set(&ioc->nr_tasks, 1); atomic_set(&ioc->active_ref, 1); spin_lock_init(&ioc->lock); INIT_RADIX_TREE(&ioc->icq_tree, GFP_ATOMIC | __GFP_HIGH); --- linux-3.5.0.orig/block/blk-sysfs.c +++ linux-3.5.0/block/blk-sysfs.c @@ -523,6 +523,12 @@ if (WARN_ON(!q)) return -ENXIO; + /* + * Initialization must be complete by now. Finish the initial + * bypass from queue allocation. + */ + blk_queue_bypass_end(q); + ret = blk_trace_init_sysfs(dev); if (ret) return ret; --- linux-3.5.0.orig/block/blk-exec.c +++ linux-3.5.0/block/blk-exec.c @@ -49,8 +49,16 @@ rq_end_io_fn *done) { int where = at_head ? ELEVATOR_INSERT_FRONT : ELEVATOR_INSERT_BACK; + bool is_pm_resume; WARN_ON(irqs_disabled()); + + /* + * need to check this before __blk_run_queue(), because rq can + * be freed before that returns. + */ + is_pm_resume = rq->cmd_type == REQ_TYPE_PM_RESUME; + spin_lock_irq(q->queue_lock); if (unlikely(blk_queue_dead(q))) { @@ -66,7 +74,7 @@ __elv_add_request(q, rq, where); __blk_run_queue(q); /* the queue is stopped so it won't be run */ - if (rq->cmd_type == REQ_TYPE_PM_RESUME) + if (is_pm_resume) q->request_fn(q); spin_unlock_irq(q->queue_lock); } --- linux-3.5.0.orig/security/security.c +++ linux-3.5.0/security/security.c @@ -136,11 +136,19 @@ int security_ptrace_access_check(struct task_struct *child, unsigned int mode) { + int rc; + rc = yama_ptrace_access_check(child, mode); + if (rc) + return rc; return security_ops->ptrace_access_check(child, mode); } int security_ptrace_traceme(struct task_struct *parent) { + int rc; + rc = yama_ptrace_traceme(parent); + if (rc) + return rc; return security_ops->ptrace_traceme(parent); } @@ -384,6 +392,7 @@ return 0; return security_ops->path_rmdir(dir, dentry); } +EXPORT_SYMBOL(security_path_rmdir); int security_path_unlink(struct path *dir, struct dentry *dentry) { @@ -400,14 +409,20 @@ return 0; return security_ops->path_symlink(dir, dentry, old_name); } +EXPORT_SYMBOL(security_path_symlink); int security_path_link(struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) { + int rc; if (unlikely(IS_PRIVATE(old_dentry->d_inode))) return 0; + rc = yama_path_link(old_dentry, new_dir, new_dentry); + if (rc) + return rc; return security_ops->path_link(old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL(security_path_link); int security_path_rename(struct path *old_dir, struct dentry *old_dentry, struct path *new_dir, struct dentry *new_dentry) @@ -426,6 +441,7 @@ return 0; return security_ops->path_truncate(path); } +EXPORT_SYMBOL(security_path_truncate); int security_path_chmod(struct path *path, umode_t mode) { @@ -433,6 +449,7 @@ return 0; return security_ops->path_chmod(path, mode); } +EXPORT_SYMBOL(security_path_chmod); int security_path_chown(struct path *path, uid_t uid, gid_t gid) { @@ -440,6 +457,7 @@ return 0; return security_ops->path_chown(path, uid, gid); } +EXPORT_SYMBOL(security_path_chown); int security_path_chroot(struct path *path) { @@ -516,11 +534,16 @@ return 0; return security_ops->inode_readlink(dentry); } +EXPORT_SYMBOL(security_inode_readlink); int security_inode_follow_link(struct dentry *dentry, struct nameidata *nd) { + int rc; if (unlikely(IS_PRIVATE(dentry->d_inode))) return 0; + rc = yama_inode_follow_link(dentry, nd); + if (rc) + return rc; return security_ops->inode_follow_link(dentry, nd); } @@ -530,6 +553,7 @@ return 0; return security_ops->inode_permission(inode, mask); } +EXPORT_SYMBOL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -645,6 +669,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL(security_file_permission); int security_file_alloc(struct file *file) { @@ -705,6 +730,7 @@ return ret; return ima_file_mmap(file, prot); } +EXPORT_SYMBOL(security_mmap_file); int security_mmap_addr(unsigned long addr) { @@ -761,6 +787,7 @@ void security_task_free(struct task_struct *task) { + yama_task_free(task); security_ops->task_free(task); } @@ -876,6 +903,10 @@ int security_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) { + int rc; + rc = yama_task_prctl(option, arg2, arg3, arg4, arg5); + if (rc != -ENOSYS) + return rc; return security_ops->task_prctl(option, arg2, arg3, arg4, arg5); } --- linux-3.5.0.orig/security/device_cgroup.c +++ linux-3.5.0/security/device_cgroup.c @@ -7,12 +7,14 @@ #include #include #include +#include #include #include #include #include #include #include +#include #define ACC_MKNOD 1 #define ACC_READ 2 @@ -493,6 +495,7 @@ return -EPERM; } +EXPORT_SYMBOL(__devcgroup_inode_permission); int devcgroup_inode_mknod(int mode, dev_t dev) { --- linux-3.5.0.orig/security/commoncap.c +++ linux-3.5.0/security/commoncap.c @@ -979,9 +979,11 @@ } return ret; } +EXPORT_SYMBOL(cap_mmap_addr); int cap_mmap_file(struct file *file, unsigned long reqprot, unsigned long prot, unsigned long flags) { return 0; } +EXPORT_SYMBOL(cap_mmap_file); --- linux-3.5.0.orig/security/apparmor/apparmorfs.c +++ linux-3.5.0/security/apparmor/apparmorfs.c @@ -182,6 +182,232 @@ .release = single_release, }; +/** + * __next_namespace - find the next namespace to list + * @root: root namespace to stop search at (NOT NULL) + * @ns: current ns position (NOT NULL) + * + * Find the next namespace from @ns under @root and handle all locking needed + * while switching current namespace. + * + * Returns: next namespace or NULL if at last namespace under @root + * NOTE: will not unlock root->lock + */ +static struct aa_namespace *__next_namespace(struct aa_namespace *root, + struct aa_namespace *ns) +{ + struct aa_namespace *parent; + + /* is next namespace a child */ + if (!list_empty(&ns->sub_ns)) { + struct aa_namespace *next; + next = list_first_entry(&ns->sub_ns, typeof(*ns), base.list); + read_lock(&next->lock); + return next; + } + + /* check if the next ns is a sibling, parent, gp, .. */ + parent = ns->parent; + while (parent) { + read_unlock(&ns->lock); + list_for_each_entry_continue(ns, &parent->sub_ns, base.list) { + read_lock(&ns->lock); + return ns; + } + if (parent == root) + return NULL; + ns = parent; + parent = parent->parent; + } + + return NULL; +} + +/** + * __first_profile - find the first profile in a namespace + * @root: namespace that is root of profiles being displayed (NOT NULL) + * @ns: namespace to start in (NOT NULL) + * + * Returns: unrefcounted profile or NULL if no profile + */ +static struct aa_profile *__first_profile(struct aa_namespace *root, + struct aa_namespace *ns) +{ + for ( ; ns; ns = __next_namespace(root, ns)) { + if (!list_empty(&ns->base.profiles)) + return list_first_entry(&ns->base.profiles, + struct aa_profile, base.list); + } + return NULL; +} + +/** + * __next_profile - step to the next profile in a profile tree + * @profile: current profile in tree (NOT NULL) + * + * Perform a depth first taversal on the profile tree in a namespace + * + * Returns: next profile or NULL if done + * Requires: profile->ns.lock to be held + */ +static struct aa_profile *__next_profile(struct aa_profile *p) +{ + struct aa_profile *parent; + struct aa_namespace *ns = p->ns; + + /* is next profile a child */ + if (!list_empty(&p->base.profiles)) + return list_first_entry(&p->base.profiles, typeof(*p), + base.list); + + /* is next profile a sibling, parent sibling, gp, subling, .. */ + parent = p->parent; + while (parent) { + list_for_each_entry_continue(p, &parent->base.profiles, + base.list) + return p; + p = parent; + parent = parent->parent; + } + + /* is next another profile in the namespace */ + list_for_each_entry_continue(p, &ns->base.profiles, base.list) + return p; + + return NULL; +} + +/** + * next_profile - step to the next profile in where ever it may be + * @root: root namespace (NOT NULL) + * @profile: current profile (NOT NULL) + * + * Returns: next profile or NULL if there isn't one + */ +static struct aa_profile *next_profile(struct aa_namespace *root, + struct aa_profile *profile) +{ + struct aa_profile *next = __next_profile(profile); + if (next) + return next; + + /* finished all profiles in namespace move to next namespace */ + return __first_profile(root, __next_namespace(root, profile->ns)); +} + +/** + * p_start - start a depth first traversal of profile tree + * @f: seq_file to fill + * @pos: current position + * + * Returns: first profile under current namespace or NULL if none found + * + * acquires first ns->lock + */ +static void *p_start(struct seq_file *f, loff_t *pos) + __acquires(root->lock) +{ + struct aa_profile *profile = NULL; + struct aa_namespace *root = aa_current_profile()->ns; + loff_t l = *pos; + f->private = aa_get_namespace(root); + + + /* find the first profile */ + read_lock(&root->lock); + profile = __first_profile(root, root); + + /* skip to position */ + for (; profile && l > 0; l--) + profile = next_profile(root, profile); + + return profile; +} + +/** + * p_next - read the next profile entry + * @f: seq_file to fill + * @p: profile previously returned + * @pos: current position + * + * Returns: next profile after @p or NULL if none + * + * may acquire/release locks in namespace tree as necessary + */ +static void *p_next(struct seq_file *f, void *p, loff_t *pos) +{ + struct aa_profile *profile = p; + struct aa_namespace *root = f->private; + (*pos)++; + + return next_profile(root, profile); +} + +/** + * p_stop - stop depth first traversal + * @f: seq_file we are filling + * @p: the last profile writen + * + * Release all locking done by p_start/p_next on namespace tree + */ +static void p_stop(struct seq_file *f, void *p) + __releases(root->lock) +{ + struct aa_profile *profile = p; + struct aa_namespace *root = f->private, *ns; + + if (profile) { + for (ns = profile->ns; ns && ns != root; ns = ns->parent) + read_unlock(&ns->lock); + } + read_unlock(&root->lock); + aa_put_namespace(root); +} + +/** + * seq_show_profile - show a profile entry + * @f: seq_file to file + * @p: current position (profile) (NOT NULL) + * + * Returns: error on failure + */ +static int seq_show_profile(struct seq_file *f, void *p) +{ + struct aa_profile *profile = (struct aa_profile *)p; + struct aa_namespace *root = f->private; + + if (profile->ns != root) + seq_printf(f, ":%s://", aa_ns_name(root, profile->ns)); + seq_printf(f, "%s (%s)\n", profile->base.hname, + COMPLAIN_MODE(profile) ? "complain" : "enforce"); + + return 0; +} + +static const struct seq_operations aa_fs_profiles_op = { + .start = p_start, + .next = p_next, + .stop = p_stop, + .show = seq_show_profile, +}; + +static int profiles_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &aa_fs_profiles_op); +} + +static int profiles_release(struct inode *inode, struct file *file) +{ + return seq_release(inode, file); +} + +const struct file_operations aa_fs_profiles_fops = { + .open = profiles_open, + .read = seq_read, + .llseek = seq_lseek, + .release = profiles_release, +}; + /** Base file system setup **/ static struct aa_fs_entry aa_fs_entry_file[] = { @@ -198,9 +424,23 @@ { } }; +static struct aa_fs_entry aa_fs_entry_mount[] = { + AA_FS_FILE_STRING("mask", "mount umount"), + { } +}; + +static struct aa_fs_entry aa_fs_entry_namespaces[] = { + AA_FS_FILE_BOOLEAN("profile", 1), + AA_FS_FILE_BOOLEAN("pivot_root", 1), + { } +}; + static struct aa_fs_entry aa_fs_entry_features[] = { AA_FS_DIR("domain", aa_fs_entry_domain), AA_FS_DIR("file", aa_fs_entry_file), + AA_FS_DIR("network", aa_fs_entry_network), + AA_FS_DIR("mount", aa_fs_entry_mount), + AA_FS_DIR("namespaces", aa_fs_entry_namespaces), AA_FS_FILE_U64("capability", VFS_CAP_FLAGS_MASK), AA_FS_DIR("rlimit", aa_fs_entry_rlimit), { } @@ -210,6 +450,7 @@ AA_FS_FILE_FOPS(".load", 0640, &aa_fs_profile_load), AA_FS_FILE_FOPS(".replace", 0640, &aa_fs_profile_replace), AA_FS_FILE_FOPS(".remove", 0640, &aa_fs_profile_remove), + AA_FS_FILE_FOPS("profiles", 0640, &aa_fs_profiles_fops), AA_FS_DIR("features", aa_fs_entry_features), { } }; --- linux-3.5.0.orig/security/apparmor/net.c +++ linux-3.5.0/security/apparmor/net.c @@ -0,0 +1,162 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/net.h" +#include "include/policy.h" + +#include "net_names.h" + +struct aa_fs_entry aa_fs_entry_network[] = { + AA_FS_FILE_STRING("af_mask", AA_FS_AF_MASK), + { } +}; + +/* audit callback for net specific fields */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + audit_log_format(ab, " family="); + if (address_family_names[sa->u.net->family]) { + audit_log_string(ab, address_family_names[sa->u.net->family]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->u.net->family); + } + audit_log_format(ab, " sock_type="); + if (sock_type_names[sa->aad->net.type]) { + audit_log_string(ab, sock_type_names[sa->aad->net.type]); + } else { + audit_log_format(ab, "\"unknown(%d)\"", sa->aad->net.type); + } + audit_log_format(ab, " protocol=%d", sa->aad->net.protocol); +} + +/** + * audit_net - audit network access + * @profile: profile being enforced (NOT NULL) + * @op: operation being checked + * @family: network family + * @type: network type + * @protocol: network protocol + * @sk: socket auditing is being applied to + * @error: error code for failure else 0 + * + * Returns: %0 or sa->error else other errorcode on failure + */ +static int audit_net(struct aa_profile *profile, int op, u16 family, int type, + int protocol, struct sock *sk, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + struct common_audit_data sa; + struct apparmor_audit_data aad = { }; + struct lsm_network_audit net = { }; + if (sk) { + sa.type = LSM_AUDIT_DATA_NET; + } else { + sa.type = LSM_AUDIT_DATA_NONE; + } + /* todo fill in socket addr info */ + sa.aad = &aad; + sa.u.net = &net; + sa.aad->op = op, + sa.u.net->family = family; + sa.u.net->sk = sk; + sa.aad->net.type = type; + sa.aad->net.protocol = protocol; + sa.aad->error = error; + + if (likely(!sa.aad->error)) { + u16 audit_mask = profile->net.audit[sa.u.net->family]; + if (likely((AUDIT_MODE(profile) != AUDIT_ALL) && + !(1 << sa.aad->net.type & audit_mask))) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + u16 quiet_mask = profile->net.quiet[sa.u.net->family]; + u16 kill_mask = 0; + u16 denied = (1 << sa.aad->net.type) & ~quiet_mask; + + if (denied & kill_mask) + audit_type = AUDIT_APPARMOR_KILL; + + if ((denied & quiet_mask) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + return COMPLAIN_MODE(profile) ? 0 : sa.aad->error; + } + + return aa_audit(audit_type, profile, GFP_KERNEL, &sa, audit_cb); +} + +/** + * aa_net_perm - very course network access check + * @op: operation being checked + * @profile: profile being enforced (NOT NULL) + * @family: network family + * @type: network type + * @protocol: network protocol + * + * Returns: %0 else error if permission denied + */ +int aa_net_perm(int op, struct aa_profile *profile, u16 family, int type, + int protocol, struct sock *sk) +{ + u16 family_mask; + int error; + + if ((family < 0) || (family >= AF_MAX)) + return -EINVAL; + + if ((type < 0) || (type >= SOCK_MAX)) + return -EINVAL; + + /* unix domain and netlink sockets are handled by ipc */ + if (family == AF_UNIX || family == AF_NETLINK) + return 0; + + family_mask = profile->net.allow[family]; + + error = (family_mask & (1 << type)) ? 0 : -EACCES; + + return audit_net(profile, op, family, type, protocol, sk, error); +} + +/** + * aa_revalidate_sk - Revalidate access to a sock + * @op: operation being checked + * @sk: sock being revalidated (NOT NULL) + * + * Returns: %0 else error if permission denied + */ +int aa_revalidate_sk(int op, struct sock *sk) +{ + struct aa_profile *profile; + int error = 0; + + /* aa_revalidate_sk should not be called from interrupt context + * don't mediate these calls as they are not task related + */ + if (in_interrupt()) + return 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_net_perm(op, profile, sk->sk_family, sk->sk_type, + sk->sk_protocol, sk); + + return error; +} --- linux-3.5.0.orig/security/apparmor/Makefile +++ linux-3.5.0/security/apparmor/Makefile @@ -4,10 +4,9 @@ apparmor-y := apparmorfs.o audit.o capability.o context.o ipc.o lib.o match.o \ path.o domain.o policy.o policy_unpack.o procattr.o lsm.o \ - resource.o sid.o file.o - -clean-files := capability_names.h rlim_names.h + resource.o sid.o file.o mount.o net.o +clean-files := capability_names.h rlim_names.h net_names.h # Build a lower case string table of capability names # Transforms lines from @@ -20,6 +19,38 @@ -e 's/^\#define[ \t]+CAP_([A-Z0-9_]+)[ \t]+([0-9]+)/[\2] = "\L\1",/p';\ echo "};" >> $@ +# Build a lower case string table of address family names +# Transform lines from +# define AF_LOCAL 1 /* POSIX name for AF_UNIX */ +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# [1] = "local", +# [2] = "inet", +# +# and build the securityfs entries for the mapping. +# Transforms lines from +# #define AF_INET 2 /* Internet IP Protocol */ +# to +# #define AA_FS_AF_MASK "local inet" +quiet_cmd_make-af = GEN $@ +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ;\ + sed $< >>$@ -r -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e \ + 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ ;\ + echo -n '\#define AA_FS_AF_MASK "' >> $@ ;\ + sed -r -n 's/^\#define[ \t]+AF_([A-Z0-9_]+)[ \t]+([0-9]+)(.*)/\L\1/p'\ + $< | tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ + +# Build a lower case string table of sock type names +# Transform lines from +# SOCK_STREAM = 1, +# to +# [1] = "stream", +quiet_cmd_make-sock = GEN $@ +cmd_make-sock = echo "static const char *sock_type_names[] = {" >> $@ ;\ + sed $^ >>$@ -r -n \ + -e 's/^\tSOCK_([A-Z0-9_]+)[\t]+=[ \t]+([0-9]+)(.*)/[\2] = "\L\1",/p';\ + echo "};" >> $@ # Build a lower case string table of rlimit names. # Transforms lines from @@ -56,6 +87,7 @@ tr '\n' ' ' | sed -e 's/ $$/"\n/' >> $@ $(obj)/capability.o : $(obj)/capability_names.h +$(obj)/net.o : $(obj)/net_names.h $(obj)/resource.o : $(obj)/rlim_names.h $(obj)/capability_names.h : $(srctree)/include/linux/capability.h \ $(src)/Makefile @@ -63,3 +95,8 @@ $(obj)/rlim_names.h : $(srctree)/include/asm-generic/resource.h \ $(src)/Makefile $(call cmd,make-rlim) +$(obj)/net_names.h : $(srctree)/include/linux/socket.h \ + $(srctree)/include/linux/net.h \ + $(src)/Makefile + $(call cmd,make-af) + $(call cmd,make-sock) --- linux-3.5.0.orig/security/apparmor/mount.c +++ linux-3.5.0/security/apparmor/mount.c @@ -0,0 +1,620 @@ +/* + * AppArmor security module + * + * This file contains AppArmor mediation of files + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#include +#include +#include + +#include "include/apparmor.h" +#include "include/audit.h" +#include "include/context.h" +#include "include/domain.h" +#include "include/file.h" +#include "include/match.h" +#include "include/mount.h" +#include "include/path.h" +#include "include/policy.h" + + +static void audit_mnt_flags(struct audit_buffer *ab, unsigned long flags) +{ + if (flags & MS_RDONLY) + audit_log_format(ab, "ro"); + else + audit_log_format(ab, "rw"); + if (flags & MS_NOSUID) + audit_log_format(ab, ", nosuid"); + if (flags & MS_NODEV) + audit_log_format(ab, ", nodev"); + if (flags & MS_NOEXEC) + audit_log_format(ab, ", noexec"); + if (flags & MS_SYNCHRONOUS) + audit_log_format(ab, ", sync"); + if (flags & MS_REMOUNT) + audit_log_format(ab, ", remount"); + if (flags & MS_MANDLOCK) + audit_log_format(ab, ", mand"); + if (flags & MS_DIRSYNC) + audit_log_format(ab, ", dirsync"); + if (flags & MS_NOATIME) + audit_log_format(ab, ", noatime"); + if (flags & MS_NODIRATIME) + audit_log_format(ab, ", nodiratime"); + if (flags & MS_BIND) + audit_log_format(ab, flags & MS_REC ? ", rbind" : ", bind"); + if (flags & MS_MOVE) + audit_log_format(ab, ", move"); + if (flags & MS_SILENT) + audit_log_format(ab, ", silent"); + if (flags & MS_POSIXACL) + audit_log_format(ab, ", acl"); + if (flags & MS_UNBINDABLE) + audit_log_format(ab, flags & MS_REC ? ", runbindable" : + ", unbindable"); + if (flags & MS_PRIVATE) + audit_log_format(ab, flags & MS_REC ? ", rprivate" : + ", private"); + if (flags & MS_SLAVE) + audit_log_format(ab, flags & MS_REC ? ", rslave" : + ", slave"); + if (flags & MS_SHARED) + audit_log_format(ab, flags & MS_REC ? ", rshared" : + ", shared"); + if (flags & MS_RELATIME) + audit_log_format(ab, ", relatime"); + if (flags & MS_I_VERSION) + audit_log_format(ab, ", iversion"); + if (flags & MS_STRICTATIME) + audit_log_format(ab, ", strictatime"); + if (flags & MS_NOUSER) + audit_log_format(ab, ", nouser"); +} + +/** + * audit_cb - call back for mount specific audit fields + * @ab: audit_buffer (NOT NULL) + * @va: audit struct to audit values of (NOT NULL) + */ +static void audit_cb(struct audit_buffer *ab, void *va) +{ + struct common_audit_data *sa = va; + + if (sa->aad->mnt.type) { + audit_log_format(ab, " fstype="); + audit_log_untrustedstring(ab, sa->aad->mnt.type); + } + if (sa->aad->mnt.src_name) { + audit_log_format(ab, " srcname="); + audit_log_untrustedstring(ab, sa->aad->mnt.src_name); + } + if (sa->aad->mnt.trans) { + audit_log_format(ab, " trans="); + audit_log_untrustedstring(ab, sa->aad->mnt.trans); + } + if (sa->aad->mnt.flags || sa->aad->op == OP_MOUNT) { + audit_log_format(ab, " flags=\""); + audit_mnt_flags(ab, sa->aad->mnt.flags); + audit_log_format(ab, "\""); + } + if (sa->aad->mnt.data) { + audit_log_format(ab, " options="); + audit_log_untrustedstring(ab, sa->aad->mnt.data); + } +} + +/** + * audit_mount - handle the auditing of mount operations + * @profile: the profile being enforced (NOT NULL) + * @gfp: allocation flags + * @op: operation being mediated (NOT NULL) + * @name: name of object being mediated (MAYBE NULL) + * @src_name: src_name of object being mediated (MAYBE_NULL) + * @type: type of filesystem (MAYBE_NULL) + * @trans: name of trans (MAYBE NULL) + * @flags: filesystem idependent mount flags + * @data: filesystem mount flags + * @request: permissions requested + * @perms: the permissions computed for the request (NOT NULL) + * @info: extra information message (MAYBE NULL) + * @error: 0 if operation allowed else failure error code + * + * Returns: %0 or error on failure + */ +static int audit_mount(struct aa_profile *profile, gfp_t gfp, int op, + const char *name, const char *src_name, + const char *type, const char *trans, + unsigned long flags, const void *data, u32 request, + struct file_perms *perms, const char *info, int error) +{ + int audit_type = AUDIT_APPARMOR_AUTO; + struct common_audit_data sa; + struct apparmor_audit_data aad = { }; + + if (likely(!error)) { + u32 mask = perms->audit; + + if (unlikely(AUDIT_MODE(profile) == AUDIT_ALL)) + mask = 0xffff; + + /* mask off perms that are not being force audited */ + request &= mask; + + if (likely(!request)) + return 0; + audit_type = AUDIT_APPARMOR_AUDIT; + } else { + /* only report permissions that were denied */ + request = request & ~perms->allow; + + if (request & perms->kill) + audit_type = AUDIT_APPARMOR_KILL; + + /* quiet known rejects, assumes quiet and kill do not overlap */ + if ((request & perms->quiet) && + AUDIT_MODE(profile) != AUDIT_NOQUIET && + AUDIT_MODE(profile) != AUDIT_ALL) + request &= ~perms->quiet; + + if (!request) + return COMPLAIN_MODE(profile) ? + complain_error(error) : error; + } + + sa.type = LSM_AUDIT_DATA_NONE; + sa.aad = &aad; + sa.aad->op = op; + sa.aad->name = name; + sa.aad->mnt.src_name = src_name; + sa.aad->mnt.type = type; + sa.aad->mnt.trans = trans; + sa.aad->mnt.flags = flags; + if (data && (perms->audit & AA_AUDIT_DATA)) + sa.aad->mnt.data = data; + sa.aad->info = info; + sa.aad->error = error; + + return aa_audit(audit_type, profile, gfp, &sa, audit_cb); +} + +/** + * match_mnt_flags - Do an ordered match on mount flags + * @dfa: dfa to match against + * @state: state to start in + * @flags: mount flags to match against + * + * Mount flags are encoded as an ordered match. This is done instead of + * checking against a simple bitmask, to allow for logical operations + * on the flags. + * + * Returns: next state after flags match + */ +static unsigned int match_mnt_flags(struct aa_dfa *dfa, unsigned int state, + unsigned long flags) +{ + unsigned int i; + + for (i = 0; i <= 31 ; ++i) { + if ((1 << i) & flags) + state = aa_dfa_next(dfa, state, i + 1); + } + + return state; +} + +/** + * compute_mnt_perms - compute mount permission associated with @state + * @dfa: dfa to match against (NOT NULL) + * @state: state match finished in + * + * Returns: mount permissions + */ +static struct file_perms compute_mnt_perms(struct aa_dfa *dfa, + unsigned int state) +{ + struct file_perms perms; + + perms.kill = 0; + perms.allow = dfa_user_allow(dfa, state); + perms.audit = dfa_user_audit(dfa, state); + perms.quiet = dfa_user_quiet(dfa, state); + perms.xindex = dfa_user_xindex(dfa, state); + + return perms; +} + +static const char const *mnt_info_table[] = { + "match succeeded", + "failed mntpnt match", + "failed srcname match", + "failed type match", + "failed flags match", + "failed data match" +}; + +/* + * Returns 0 on success else element that match failed in, this is the + * index into the mnt_info_table above + */ +static int do_match_mnt(struct aa_dfa *dfa, unsigned int start, + const char *mntpnt, const char *devname, + const char *type, unsigned long flags, + void *data, bool binary, struct file_perms *perms) +{ + unsigned int state; + + state = aa_dfa_match(dfa, start, mntpnt); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 1; + + if (devname) + state = aa_dfa_match(dfa, state, devname); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 2; + + if (type) + state = aa_dfa_match(dfa, state, type); + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 3; + + state = match_mnt_flags(dfa, state, flags); + if (!state) + return 4; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + + /* only match data if not binary and the DFA flags data is expected */ + if (data && !binary && (perms->allow & AA_CONT_MATCH)) { + state = aa_dfa_null_transition(dfa, state); + if (!state) + return 4; + + state = aa_dfa_match(dfa, state, data); + if (!state) + return 5; + *perms = compute_mnt_perms(dfa, state); + if (perms->allow & AA_MAY_MOUNT) + return 0; + } + + /* failed at end of flags match */ + return 4; +} + +/** + * match_mnt - handle path matching for mount + * @profile: the confining profile + * @mntpnt: string for the mntpnt (NOT NULL) + * @devname: string for the devname/src_name (MAYBE NULL) + * @type: string for the dev type (MAYBE NULL) + * @flags: mount flags to match + * @data: fs mount data (MAYBE NULL) + * @binary: whether @data is binary + * @perms: Returns: permission found by the match + * @info: Returns: infomation string about the match for logging + * + * Returns: 0 on success else error + */ +static int match_mnt(struct aa_profile *profile, const char *mntpnt, + const char *devname, const char *type, + unsigned long flags, void *data, bool binary, + struct file_perms *perms, const char **info) +{ + int pos; + + if (!profile->policy.dfa) + return -EACCES; + + pos = do_match_mnt(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + mntpnt, devname, type, flags, data, binary, perms); + if (pos) { + *info = mnt_info_table[pos]; + return -EACCES; + } + + return 0; +} + +static int path_flags(struct aa_profile *profile, struct path *path) +{ + return profile->path_flags | + S_ISDIR(path->dentry->d_inode->i_mode) ? PATH_IS_DIR : 0; +} + +int aa_remount(struct aa_profile *profile, struct path *path, + unsigned long flags, void *data) +{ + struct file_perms perms = { }; + const char *name, *info = NULL; + char *buffer = NULL; + int binary, error; + + binary = path->dentry->d_sb->s_type->fs_flags & FS_BINARY_MOUNTDATA; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, NULL, NULL, flags, data, binary, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL, + NULL, flags, data, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + + return error; +} + +int aa_bind_mount(struct aa_profile *profile, struct path *path, + const char *dev_name, unsigned long flags) +{ + struct file_perms perms = { }; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!dev_name || !*dev_name) + return -EINVAL; + + flags &= MS_REC | MS_BIND; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = kern_path(dev_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path); + if (error) + goto audit; + + error = aa_path_name(&old_path, path_flags(profile, &old_path), + &old_buffer, &old_name, &info); + path_put(&old_path); + if (error) + goto audit; + + error = match_mnt(profile, name, old_name, NULL, flags, NULL, 0, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name, + NULL, NULL, flags, NULL, AA_MAY_MOUNT, &perms, + info, error); + kfree(buffer); + kfree(old_buffer); + + return error; +} + +int aa_mount_change_type(struct aa_profile *profile, struct path *path, + unsigned long flags) +{ + struct file_perms perms = { }; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + /* These are the flags allowed by do_change_type() */ + flags &= (MS_REC | MS_SILENT | MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE); + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, NULL, NULL, flags, NULL, 0, &perms, + &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, NULL, NULL, + NULL, flags, NULL, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + + return error; +} + +int aa_move_mount(struct aa_profile *profile, struct path *path, + const char *orig_name) +{ + struct file_perms perms = { }; + char *buffer = NULL, *old_buffer = NULL; + const char *name, *old_name = NULL, *info = NULL; + struct path old_path; + int error; + + if (!orig_name || !*orig_name) + return -EINVAL; + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = kern_path(orig_name, LOOKUP_FOLLOW, &old_path); + if (error) + goto audit; + + error = aa_path_name(&old_path, path_flags(profile, &old_path), + &old_buffer, &old_name, &info); + path_put(&old_path); + if (error) + goto audit; + + error = match_mnt(profile, name, old_name, NULL, MS_MOVE, NULL, 0, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, old_name, + NULL, NULL, MS_MOVE, NULL, AA_MAY_MOUNT, &perms, + info, error); + kfree(buffer); + kfree(old_buffer); + + return error; +} + +int aa_new_mount(struct aa_profile *profile, const char *orig_dev_name, + struct path *path, const char *type, unsigned long flags, + void *data) +{ + struct file_perms perms = { }; + char *buffer = NULL, *dev_buffer = NULL; + const char *name = NULL, *dev_name = NULL, *info = NULL; + int binary = 1; + int error; + + dev_name = orig_dev_name; + if (type) { + int requires_dev; + struct file_system_type *fstype = get_fs_type(type); + if (!fstype) + return -ENODEV; + + binary = fstype->fs_flags & FS_BINARY_MOUNTDATA; + requires_dev = fstype->fs_flags & FS_REQUIRES_DEV; + put_filesystem(fstype); + + if (requires_dev) { + struct path dev_path; + + if (!dev_name || !*dev_name) { + error = -ENOENT; + goto out; + } + + error = kern_path(dev_name, LOOKUP_FOLLOW, &dev_path); + if (error) + goto audit; + + error = aa_path_name(&dev_path, + path_flags(profile, &dev_path), + &dev_buffer, &dev_name, &info); + path_put(&dev_path); + if (error) + goto audit; + } + } + + error = aa_path_name(path, path_flags(profile, path), &buffer, &name, + &info); + if (error) + goto audit; + + error = match_mnt(profile, name, dev_name, type, flags, data, binary, + &perms, &info); + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_MOUNT, name, dev_name, + type, NULL, flags, data, AA_MAY_MOUNT, &perms, info, + error); + kfree(buffer); + kfree(dev_buffer); + +out: + return error; + +} + +int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags) +{ + struct file_perms perms = { }; + char *buffer = NULL; + const char *name, *info = NULL; + int error; + + struct path path = { mnt, mnt->mnt_root }; + error = aa_path_name(&path, path_flags(profile, &path), &buffer, &name, + &info); + if (error) + goto audit; + + if (!error && profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + name); + perms = compute_mnt_perms(profile->policy.dfa, state); + } + + if (AA_MAY_UMOUNT & ~perms.allow) + error = -EACCES; + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_UMOUNT, name, NULL, NULL, + NULL, 0, NULL, AA_MAY_UMOUNT, &perms, info, error); + kfree(buffer); + + return error; +} + +int aa_pivotroot(struct aa_profile *profile, struct path *old_path, + struct path *new_path) +{ + struct file_perms perms = { }; + struct aa_profile *target = NULL; + char *old_buffer = NULL, *new_buffer = NULL; + const char *old_name, *new_name = NULL, *info = NULL; + int error; + + error = aa_path_name(old_path, path_flags(profile, old_path), + &old_buffer, &old_name, &info); + if (error) + goto audit; + + error = aa_path_name(new_path, path_flags(profile, new_path), + &new_buffer, &new_name, &info); + if (error) + goto audit; + + if (profile->policy.dfa) { + unsigned int state; + state = aa_dfa_match(profile->policy.dfa, + profile->policy.start[AA_CLASS_MOUNT], + new_name); + state = aa_dfa_null_transition(profile->policy.dfa, state); + state = aa_dfa_match(profile->policy.dfa, state, old_name); + perms = compute_mnt_perms(profile->policy.dfa, state); + } + + if (AA_MAY_PIVOTROOT & perms.allow) { + if ((perms.xindex & AA_X_TYPE_MASK) == AA_X_TABLE) { + target = x_table_lookup(profile, perms.xindex); + if (!target) + error = -ENOENT; + else + error = aa_replace_current_profile(target); + } + } else + error = -EACCES; + +audit: + error = audit_mount(profile, GFP_KERNEL, OP_PIVOTROOT, new_name, + old_name, NULL, target ? target->base.name : NULL, + 0, NULL, AA_MAY_PIVOTROOT, &perms, info, error); + aa_put_profile(target); + kfree(old_buffer); + kfree(new_buffer); + + return error; +} --- linux-3.5.0.orig/security/apparmor/policy_unpack.c +++ linux-3.5.0/security/apparmor/policy_unpack.c @@ -193,6 +193,19 @@ return 0; } +static bool unpack_u16(struct aa_ext *e, u16 *data, const char *name) +{ + if (unpack_nameX(e, AA_U16, name)) { + if (!inbounds(e, sizeof(u16))) + return 0; + if (data) + *data = le16_to_cpu(get_unaligned((u16 *) e->pos)); + e->pos += sizeof(u16); + return 1; + } + return 0; +} + static bool unpack_u32(struct aa_ext *e, u32 *data, const char *name) { if (unpack_nameX(e, AA_U32, name)) { @@ -471,6 +484,7 @@ { struct aa_profile *profile = NULL; const char *name = NULL; + size_t size = 0; int i, error = -EPROTO; kernel_cap_t tmpcap; u32 tmp; @@ -564,6 +578,38 @@ if (!unpack_rlimits(e, profile)) goto fail; + size = unpack_array(e, "net_allowed_af"); + if (size) { + + for (i = 0; i < size; i++) { + /* discard extraneous rules that this kernel will + * never request + */ + if (i >= AF_MAX) { + u16 tmp; + if (!unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL) || + !unpack_u16(e, &tmp, NULL)) + goto fail; + continue; + } + if (!unpack_u16(e, &profile->net.allow[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.audit[i], NULL)) + goto fail; + if (!unpack_u16(e, &profile->net.quiet[i], NULL)) + goto fail; + } + if (!unpack_nameX(e, AA_ARRAYEND, NULL)) + goto fail; + } + /* + * allow unix domain and netlink sockets they are handled + * by IPC + */ + profile->net.allow[AF_UNIX] = 0xffff; + profile->net.allow[AF_NETLINK] = 0xffff; + if (unpack_nameX(e, AA_STRUCT, "policydb")) { /* generic policy dfa - optional and may be NULL */ profile->policy.dfa = unpack_dfa(e); --- linux-3.5.0.orig/security/apparmor/domain.c +++ linux-3.5.0/security/apparmor/domain.c @@ -242,7 +242,7 @@ * * Returns: refcounted profile, or NULL on failure (MAYBE NULL) */ -static struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex) { struct aa_profile *new_profile = NULL; struct aa_namespace *ns = profile->ns; @@ -360,6 +360,10 @@ if (bprm->cred_prepared) return 0; + /* XXX: no_new_privs is not usable with AppArmor yet */ + if (bprm->unsafe & LSM_UNSAFE_NO_NEW_PRIVS) + return -EPERM; + cxt = bprm->cred->security; BUG_ON(!cxt); --- linux-3.5.0.orig/security/apparmor/lsm.c +++ linux-3.5.0/security/apparmor/lsm.c @@ -32,9 +32,11 @@ #include "include/context.h" #include "include/file.h" #include "include/ipc.h" +#include "include/net.h" #include "include/path.h" #include "include/policy.h" #include "include/procattr.h" +#include "include/mount.h" /* Flag indicating whether initialization completed */ int apparmor_initialized __initdata; @@ -503,6 +505,60 @@ !(vma->vm_flags & VM_SHARED) ? MAP_PRIVATE : 0); } +static int apparmor_sb_mount(char *dev_name, struct path *path, char *type, + unsigned long flags, void *data) +{ + struct aa_profile *profile; + int error = 0; + + /* Discard magic */ + if ((flags & MS_MGC_MSK) == MS_MGC_VAL) + flags &= ~MS_MGC_MSK; + + flags &= ~AA_MS_IGNORE_MASK; + + profile = __aa_current_profile(); + if (!unconfined(profile)) { + if (flags & MS_REMOUNT) + error = aa_remount(profile, path, flags, data); + else if (flags & MS_BIND) + error = aa_bind_mount(profile, path, dev_name, flags); + else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | + MS_UNBINDABLE)) + error = aa_mount_change_type(profile, path, flags); + else if (flags & MS_MOVE) + error = aa_move_mount(profile, path, dev_name); + else + error = aa_new_mount(profile, dev_name, path, type, + flags, data); + } + return error; +} + +static int apparmor_sb_umount(struct vfsmount *mnt, int flags) +{ + struct aa_profile *profile; + int error = 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_umount(profile, mnt, flags); + + return error; +} + +static int apparmor_sb_pivotroot(struct path *old_path, struct path *new_path) +{ + struct aa_profile *profile; + int error = 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_pivotroot(profile, old_path, new_path); + + return error; +} + static int apparmor_getprocattr(struct task_struct *task, char *name, char **value) { @@ -614,6 +670,104 @@ return error; } +static int apparmor_socket_create(int family, int type, int protocol, int kern) +{ + struct aa_profile *profile; + int error = 0; + + if (kern) + return 0; + + profile = __aa_current_profile(); + if (!unconfined(profile)) + error = aa_net_perm(OP_CREATE, profile, family, type, protocol, + NULL); + return error; +} + +static int apparmor_socket_bind(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_BIND, sk); +} + +static int apparmor_socket_connect(struct socket *sock, + struct sockaddr *address, int addrlen) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_CONNECT, sk); +} + +static int apparmor_socket_listen(struct socket *sock, int backlog) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_LISTEN, sk); +} + +static int apparmor_socket_accept(struct socket *sock, struct socket *newsock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_ACCEPT, sk); +} + +static int apparmor_socket_sendmsg(struct socket *sock, + struct msghdr *msg, int size) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SENDMSG, sk); +} + +static int apparmor_socket_recvmsg(struct socket *sock, + struct msghdr *msg, int size, int flags) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_RECVMSG, sk); +} + +static int apparmor_socket_getsockname(struct socket *sock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETSOCKNAME, sk); +} + +static int apparmor_socket_getpeername(struct socket *sock) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETPEERNAME, sk); +} + +static int apparmor_socket_getsockopt(struct socket *sock, int level, + int optname) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_GETSOCKOPT, sk); +} + +static int apparmor_socket_setsockopt(struct socket *sock, int level, + int optname) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SETSOCKOPT, sk); +} + +static int apparmor_socket_shutdown(struct socket *sock, int how) +{ + struct sock *sk = sock->sk; + + return aa_revalidate_sk(OP_SOCK_SHUTDOWN, sk); +} + static struct security_operations apparmor_ops = { .name = "apparmor", @@ -622,6 +776,10 @@ .capget = apparmor_capget, .capable = apparmor_capable, + .sb_mount = apparmor_sb_mount, + .sb_umount = apparmor_sb_umount, + .sb_pivotroot = apparmor_sb_pivotroot, + .path_link = apparmor_path_link, .path_unlink = apparmor_path_unlink, .path_symlink = apparmor_path_symlink, @@ -646,6 +804,19 @@ .getprocattr = apparmor_getprocattr, .setprocattr = apparmor_setprocattr, + .socket_create = apparmor_socket_create, + .socket_bind = apparmor_socket_bind, + .socket_connect = apparmor_socket_connect, + .socket_listen = apparmor_socket_listen, + .socket_accept = apparmor_socket_accept, + .socket_sendmsg = apparmor_socket_sendmsg, + .socket_recvmsg = apparmor_socket_recvmsg, + .socket_getsockname = apparmor_socket_getsockname, + .socket_getpeername = apparmor_socket_getpeername, + .socket_getsockopt = apparmor_socket_getsockopt, + .socket_setsockopt = apparmor_socket_setsockopt, + .socket_shutdown = apparmor_socket_shutdown, + .cred_alloc_blank = apparmor_cred_alloc_blank, .cred_free = apparmor_cred_free, .cred_prepare = apparmor_cred_prepare, --- linux-3.5.0.orig/security/apparmor/audit.c +++ linux-3.5.0/security/apparmor/audit.c @@ -44,6 +44,10 @@ "file_mmap", "file_mprotect", + "pivotroot", + "mount", + "umount", + "create", "post_create", "bind", --- linux-3.5.0.orig/security/apparmor/policy.c +++ linux-3.5.0/security/apparmor/policy.c @@ -724,6 +724,8 @@ */ static void free_profile(struct aa_profile *profile) { + struct aa_profile *p; + AA_DEBUG("%s(%p)\n", __func__, profile); if (!profile) @@ -745,13 +747,34 @@ aa_free_file_rules(&profile->file); aa_free_cap_rules(&profile->caps); + aa_free_net_rules(&profile->net); aa_free_rlimit_rules(&profile->rlimits); aa_free_sid(profile->sid); aa_put_dfa(profile->xmatch); aa_put_dfa(profile->policy.dfa); - aa_put_profile(profile->replacedby); + /* put the profile reference, but not via put_profile/kref_put + * replacedby can form a long chain that can result in cascading + * frees that blows the stack lp#1056078. The long chain creation + * should be addressed in profile replacement. + * This just addresses recursion of free_profile causing the + * stack to blow. + */ + for (p = profile->replacedby; p; ) { + if (atomic_dec_and_test(&p->base.count.refcount)) { + /* no more refs on p, grab its replacedby */ + struct aa_profile *next = p->replacedby; + /* break the chain */ + p->replacedby = NULL; + /* now free p, chain is broken */ + free_profile(p); + + /* follow up with next profile in the chain */ + p = next; + } else + break; + } kzfree(profile); } --- linux-3.5.0.orig/security/apparmor/include/audit.h +++ linux-3.5.0/security/apparmor/include/audit.h @@ -73,6 +73,10 @@ OP_FMMAP, OP_FMPROT, + OP_PIVOTROOT, + OP_MOUNT, + OP_UMOUNT, + OP_CREATE, OP_POST_CREATE, OP_BIND, @@ -122,11 +126,22 @@ unsigned long max; } rlim; struct { + const char *src_name; + const char *type; + const char *trans; + const char *data; + unsigned long flags; + } mnt; + struct { const char *target; u32 request; u32 denied; uid_t ouid; } fs; + struct { + int type, protocol; + struct sock *sk; + } net; }; }; --- linux-3.5.0.orig/security/apparmor/include/net.h +++ linux-3.5.0/security/apparmor/include/net.h @@ -0,0 +1,44 @@ +/* + * AppArmor security module + * + * This file contains AppArmor network mediation definitions. + * + * Copyright (C) 1998-2008 Novell/SUSE + * Copyright 2009-2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_NET_H +#define __AA_NET_H + +#include + +#include "apparmorfs.h" + +/* struct aa_net - network confinement data + * @allowed: basic network families permissions + * @audit_network: which network permissions to force audit + * @quiet_network: which network permissions to quiet rejects + */ +struct aa_net { + u16 allow[AF_MAX]; + u16 audit[AF_MAX]; + u16 quiet[AF_MAX]; +}; + +extern struct aa_fs_entry aa_fs_entry_network[]; + +extern int aa_net_perm(int op, struct aa_profile *profile, u16 family, + int type, int protocol, struct sock *sk); +extern int aa_revalidate_sk(int op, struct sock *sk); + +static inline void aa_free_net_rules(struct aa_net *new) +{ + /* NOP */ +} + +#endif /* __AA_NET_H */ --- linux-3.5.0.orig/security/apparmor/include/mount.h +++ linux-3.5.0/security/apparmor/include/mount.h @@ -0,0 +1,54 @@ +/* + * AppArmor security module + * + * This file contains AppArmor file mediation function definitions. + * + * Copyright 2012 Canonical Ltd. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation, version 2 of the + * License. + */ + +#ifndef __AA_MOUNT_H +#define __AA_MOUNT_H + +#include +#include + +#include "domain.h" +#include "policy.h" + +/* mount perms */ +#define AA_MAY_PIVOTROOT 0x01 +#define AA_MAY_MOUNT 0x02 +#define AA_MAY_UMOUNT 0x04 +#define AA_AUDIT_DATA 0x40 +#define AA_CONT_MATCH 0x40 + +#define AA_MS_IGNORE_MASK (MS_KERNMOUNT | MS_NOSEC | MS_ACTIVE | MS_BORN) + +int aa_remount(struct aa_profile *profile, struct path *path, + unsigned long flags, void *data); + +int aa_bind_mount(struct aa_profile *profile, struct path *path, + const char *old_name, unsigned long flags); + + +int aa_mount_change_type(struct aa_profile *profile, struct path *path, + unsigned long flags); + +int aa_move_mount(struct aa_profile *profile, struct path *path, + const char *old_name); + +int aa_new_mount(struct aa_profile *profile, const char *dev_name, + struct path *path, const char *type, unsigned long flags, + void *data); + +int aa_umount(struct aa_profile *profile, struct vfsmount *mnt, int flags); + +int aa_pivotroot(struct aa_profile *profile, struct path *old_path, + struct path *new_path); + +#endif /* __AA_MOUNT_H */ --- linux-3.5.0.orig/security/apparmor/include/policy.h +++ linux-3.5.0/security/apparmor/include/policy.h @@ -27,6 +27,7 @@ #include "capability.h" #include "domain.h" #include "file.h" +#include "net.h" #include "resource.h" extern const char *const profile_mode_names[]; @@ -157,6 +158,7 @@ * @policy: general match rules governing policy * @file: The set of rules governing basic file access and domain transitions * @caps: capabilities for the profile + * @net: network controls for the profile * @rlimits: rlimits for the profile * * The AppArmor profile contains the basic confinement data. Each profile @@ -194,6 +196,7 @@ struct aa_policydb policy; struct aa_file_rules file; struct aa_caps caps; + struct aa_net net; struct aa_rlimit rlimits; }; --- linux-3.5.0.orig/security/apparmor/include/apparmor.h +++ linux-3.5.0/security/apparmor/include/apparmor.h @@ -29,8 +29,9 @@ #define AA_CLASS_NET 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 +#define AA_CLASS_MOUNT 7 -#define AA_CLASS_LAST AA_CLASS_DOMAIN +#define AA_CLASS_LAST AA_CLASS_MOUNT /* Control parameters settable through module/boot flags */ extern enum audit_mode aa_g_audit; --- linux-3.5.0.orig/security/apparmor/include/domain.h +++ linux-3.5.0/security/apparmor/include/domain.h @@ -23,6 +23,8 @@ char **table; }; +struct aa_profile *x_table_lookup(struct aa_profile *profile, u32 xindex); + int apparmor_bprm_set_creds(struct linux_binprm *bprm); int apparmor_bprm_secureexec(struct linux_binprm *bprm); void apparmor_bprm_committing_creds(struct linux_binprm *bprm); --- linux-3.5.0.orig/security/integrity/evm/evm_crypto.c +++ linux-3.5.0/security/integrity/evm/evm_crypto.c @@ -205,9 +205,9 @@ rc = __vfs_setxattr_noperm(dentry, XATTR_NAME_EVM, &xattr_data, sizeof(xattr_data), 0); - } - else if (rc == -ENODATA) + } else if (rc == -ENODATA && inode->i_op->removexattr) { rc = inode->i_op->removexattr(dentry, XATTR_NAME_EVM); + } return rc; } --- linux-3.5.0.orig/security/selinux/netnode.c +++ linux-3.5.0/security/selinux/netnode.c @@ -174,7 +174,8 @@ if (sel_netnode_hash[idx].size == SEL_NETNODE_HASH_BKT_LIMIT) { struct sel_netnode *tail; tail = list_entry( - rcu_dereference(sel_netnode_hash[idx].list.prev), + rcu_dereference_protected(sel_netnode_hash[idx].list.prev, + lockdep_is_held(&sel_netnode_lock)), struct sel_netnode, list); list_del_rcu(&tail->list); kfree_rcu(tail, rcu); --- linux-3.5.0.orig/security/selinux/hooks.c +++ linux-3.5.0/security/selinux/hooks.c @@ -2129,7 +2129,7 @@ int fd; j++; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; fdt = files_fdtable(files); if (i >= fdt->max_fds) break; @@ -2792,11 +2792,16 @@ /* We strip a nul only if it is at the end, otherwise the * context contains a nul and we should audit that */ - str = value; - if (str[size - 1] == '\0') - audit_size = size - 1; - else - audit_size = size; + if (value) { + str = value; + if (str[size - 1] == '\0') + audit_size = size - 1; + else + audit_size = size; + } else { + str = ""; + audit_size = 0; + } ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR); audit_log_format(ab, "op=setxattr invalid_context="); audit_log_n_untrustedstring(ab, value, audit_size); --- linux-3.5.0.orig/security/smack/smackfs.c +++ linux-3.5.0/security/smack/smackfs.c @@ -325,11 +325,11 @@ int datalen; int rc = -1; - /* - * This is probably inefficient, but safe. - */ + /* This is inefficient */ datalen = strlen(data); - subject = kzalloc(datalen, GFP_KERNEL); + + /* Our first element can be 64 + \0 with no spaces */ + subject = kzalloc(datalen + 1, GFP_KERNEL); if (subject == NULL) return -1; object = kzalloc(datalen, GFP_KERNEL); --- linux-3.5.0.orig/security/yama/yama_lsm.c +++ linux-3.5.0/security/yama/yama_lsm.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -24,6 +25,8 @@ #define YAMA_SCOPE_NO_ATTACH 3 static int ptrace_scope = YAMA_SCOPE_RELATIONAL; +static int protected_sticky_symlinks = 1; +static int protected_nonaccess_hardlinks = 1; /* describe a ptrace relationship for potential exception */ struct ptrace_relation { @@ -100,7 +103,7 @@ * yama_task_free - check for task_pid to remove from exception list * @task: task being removed */ -static void yama_task_free(struct task_struct *task) +void yama_task_free(struct task_struct *task) { yama_ptracer_del(task, task); } @@ -116,7 +119,7 @@ * Return 0 on success, -ve on error. -ENOSYS is returned when Yama * does not handle the given option. */ -static int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, +int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5) { int rc; @@ -143,7 +146,7 @@ if (arg2 == 0) { yama_ptracer_del(NULL, myself); rc = 0; - } else if (arg2 == PR_SET_PTRACER_ANY) { + } else if (arg2 == PR_SET_PTRACER_ANY || (int)arg2 == -1) { rc = yama_ptracer_add(NULL, myself); } else { struct task_struct *tracer; @@ -243,7 +246,7 @@ * * Returns 0 if following the ptrace is allowed, -ve on error. */ -static int yama_ptrace_access_check(struct task_struct *child, +int yama_ptrace_access_check(struct task_struct *child, unsigned int mode) { int rc; @@ -279,24 +282,163 @@ } if (rc) { - char name[sizeof(current->comm)]; printk_ratelimited(KERN_NOTICE "ptrace of pid %d was attempted by: %s (pid %d)\n", - child->pid, + child->pid, current->comm, current->pid); + } + + return rc; +} + +/** + * yama_ptrace_traceme - validate PTRACE_TRACEME calls + * @parent: task that will become the ptracer of the current task + * + * Returns 0 if following the ptrace is allowed, -ve on error. + */ +int yama_ptrace_traceme(struct task_struct *parent) +{ + int rc; + + /* If standard caps disallows it, so does Yama. We should + * only tighten restrictions further. + */ + rc = cap_ptrace_traceme(parent); + if (rc) + return rc; + + /* Only disallow PTRACE_TRACEME on more aggressive settings. */ + switch (ptrace_scope) { + case YAMA_SCOPE_CAPABILITY: + if (!ns_capable(task_user_ns(parent), CAP_SYS_PTRACE)) + rc = -EPERM; + break; + case YAMA_SCOPE_NO_ATTACH: + rc = -EPERM; + break; + } + + if (rc) { + printk_ratelimited(KERN_NOTICE + "ptraceme of pid %d was attempted by: %s (pid %d)\n", + current->pid, parent->comm, parent->pid); + } + + return rc; +} + +/** + * yama_inode_follow_link - check for symlinks in sticky world-writeable dirs + * @dentry: The inode/dentry of the symlink + * @nameidata: The path data of the symlink + * + * In the case of the protected_sticky_symlinks sysctl being enabled, + * CAP_DAC_OVERRIDE needs to be specifically ignored if the symlink is + * in a sticky world-writable directory. This is to protect privileged + * processes from failing races against path names that may change out + * from under them by way of other users creating malicious symlinks. + * It will permit symlinks to only be followed when outside a sticky + * world-writable directory, or when the uid of the symlink and follower + * match, or when the directory owner matches the symlink's owner. + * + * Returns 0 if following the symlink is allowed, -ve on error. + */ +int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata) +{ + int rc = 0; + const struct inode *parent; + const struct inode *inode; + const struct cred *cred; + + if (!protected_sticky_symlinks) + return 0; + + /* if inode isn't a symlink, don't try to evaluate blocking it */ + inode = dentry->d_inode; + if (!S_ISLNK(inode->i_mode)) + return 0; + + /* owner and follower match? */ + cred = current_cred(); + if (cred->fsuid == inode->i_uid) + return 0; + + /* check parent directory mode and owner */ + spin_lock(&dentry->d_lock); + parent = dentry->d_parent->d_inode; + if ((parent->i_mode & (S_ISVTX|S_IWOTH)) == (S_ISVTX|S_IWOTH) && + parent->i_uid != inode->i_uid) { + rc = -EACCES; + } + spin_unlock(&dentry->d_lock); + + if (rc) { + char name[sizeof(current->comm)]; + printk_ratelimited(KERN_NOTICE "non-matching-uid symlink " + "following attempted in sticky world-writable " + "directory by %s (fsuid %d != %d)\n", get_task_comm(name, current), - current->pid); + cred->fsuid, inode->i_uid); } return rc; } -static struct security_operations yama_ops = { - .name = "yama", +static int yama_generic_permission(struct inode *inode, int mask) +{ + int retval; - .ptrace_access_check = yama_ptrace_access_check, - .task_prctl = yama_task_prctl, - .task_free = yama_task_free, -}; + if (inode->i_op->permission) + retval = inode->i_op->permission(inode, mask); + else + retval = generic_permission(inode, mask); + return retval; +} + +/** + * yama_path_link - verify that hardlinking is allowed + * @old_dentry: the source inode/dentry to hardlink from + * @new_dir: target directory + * @new_dentry: the target inode/dentry to hardlink to + * + * Block hardlink when all of: + * - fsuid does not match inode + * - not CAP_FOWNER + * - and at least one of: + * - inode is not a regular file + * - inode is setuid + * - inode is setgid and group-exec + * - access failure for read and write + * + * Returns 0 if successful, -ve on error. + */ +int yama_path_link(struct dentry *old_dentry, struct path *new_dir, + struct dentry *new_dentry) +{ + int rc = 0; + struct inode *inode = old_dentry->d_inode; + const int mode = inode->i_mode; + const struct cred *cred = current_cred(); + + if (!protected_nonaccess_hardlinks) + return 0; + + if (cred->fsuid != inode->i_uid && + (!S_ISREG(mode) || (mode & S_ISUID) || + ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) || + (yama_generic_permission(inode, MAY_READ | MAY_WRITE))) && + !capable(CAP_FOWNER)) { + char name[sizeof(current->comm)]; + printk_ratelimited(KERN_NOTICE "non-accessible hardlink" + " creation was attempted by: %s (fsuid %d)\n", + get_task_comm(name, current), + cred->fsuid); + rc = -EPERM; + } + + return rc; +} #ifdef CONFIG_SYSCTL static int yama_dointvec_minmax(struct ctl_table *table, int write, @@ -319,6 +461,7 @@ } static int zero; +static int one = 1; static int max_scope = YAMA_SCOPE_NO_ATTACH; struct ctl_path yama_sysctl_path[] = { @@ -329,6 +472,24 @@ static struct ctl_table yama_sysctl_table[] = { { + .procname = "protected_sticky_symlinks", + .data = &protected_sticky_symlinks, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &zero, + .extra2 = &one, + }, + { + .procname = "protected_nonaccess_hardlinks", + .data = &protected_nonaccess_hardlinks, + .maxlen = sizeof(int), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = &zero, + .extra2 = &one, + }, + { .procname = "ptrace_scope", .data = &ptrace_scope, .maxlen = sizeof(int), @@ -343,14 +504,8 @@ static __init int yama_init(void) { - if (!security_module_enable(&yama_ops)) - return 0; - printk(KERN_INFO "Yama: becoming mindful.\n"); - if (register_security(&yama_ops)) - panic("Yama: kernel registration failed.\n"); - #ifdef CONFIG_SYSCTL if (!register_sysctl_paths(yama_sysctl_path, yama_sysctl_table)) panic("Yama: sysctl registration failed.\n"); --- linux-3.5.0.orig/security/yama/Kconfig +++ linux-3.5.0/security/yama/Kconfig @@ -7,7 +7,8 @@ help This selects Yama, which extends DAC support with additional system-wide security settings beyond regular Linux discretionary - access controls. Currently available is ptrace scope restriction. - Further information can be found in Documentation/security/Yama.txt. + access controls. Currently available are symlink, hardlink, and + ptrace scope restrictions. Further information can be found in + Documentation/security/Yama.txt. If you are unsure how to answer this question, answer N. --- linux-3.5.0.orig/security/keys/process_keys.c +++ linux-3.5.0/security/keys/process_keys.c @@ -54,7 +54,7 @@ kenter("%p{%u}", user, user->uid); - if (user->uid_keyring) { + if (user->uid_keyring && user->session_keyring) { kleave(" = 0 [exist]"); return 0; } --- linux-3.5.0.orig/debian.master/control +++ linux-3.5.0/debian.master/control @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.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.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.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.5.0 + This package provides the various documents in the 3.5.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-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-27 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +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-3.5.0-27 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-27 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-27 on + 32 bit x86. + + +Package: linux-image-3.5.0-27-generic +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 | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 32 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 32 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-image-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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-image-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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-image-3.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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-image-3.5.0-27-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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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. --- linux-3.5.0.orig/debian.master/changelog.historical +++ linux-3.5.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.5.0.orig/debian.master/copyright +++ linux-3.5.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.5.0.orig/debian.master/control.stub.in +++ linux-3.5.0/debian.master/control.stub.in @@ -0,0 +1,93 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +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-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: SRCPKGNAME-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version PKGVER + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER. + +Package: linux-headers-PKGVER-ABINUM +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: SRCPKGNAME-headers, SRCPKGNAME-headers-3 +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 powerpc ppc64 armel armhf +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: linux-tools-PKGVER-ABINUM +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version PKGVER-ABINUM + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version PKGVER-ABINUM on + =HUMAN=. + --- linux-3.5.0.orig/debian.master/changelog +++ linux-3.5.0/debian.master/changelog @@ -0,0 +1,12146 @@ +linux (3.5.0-27.46) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1159991 + + [ Steve Conklin ] + + * Start New Release + + [ Upstream Kernel Changes ] + + * crypto: user - fix info leaks in report API + - LP: #1156790, #1156795, #1156799 + - CVE-2013-2546 + * brcmsmac: fix mismatch in number of custom regulatory rules + - LP: #1156769 + + [ Xiangliang Yu ] + + * SAUCE: PCI: define macro for marvell vendor ID + - LP: #1159863 + * SAUCE: PCI: fix system hang issue of Marvell SATA host controller + - LP: #1159863 + + -- Steve Conklin Mon, 25 Mar 2013 14:32:06 -0500 + +linux (3.5.0-27.45) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 15:26:20 -0500 + +linux (3.5.0-27.44) quantal-proposed; urgency=low + + [Steve Conklin] + + * no change + + -- Steve Conklin Tue, 19 Mar 2013 10:26:04 -0500 + +linux (3.5.0-27.43) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1156821 + + [ Adam Lee ] + + * SAUCE: Bluetooth: Add support for 04ca:2007 + - LP: #1153448 + + [ Andy Whitcroft ] + + * [Config] re-disable CONFIG_SOUND_OSS_PRECLAIM + - LP: #1105230 + + [ Brad Figg ] + + * Start new release + + [ Kamal Mostafa ] + + * SAUCE: alx: use github.com/qca/alx repo + - LP: #1154238 + + [ Luis Henriques ] + + * [Config] CONFIG_NFS_V4_1=y + - LP: #1111416 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #1154238 + + [ Upstream Kernel Changes ] + + * Revert "drm: Add EDID_QUIRK_FORCE_REDUCED_BLANKING for ASUS VW222S" + - LP: #1144961 + * genirq: Avoid deadlock in spurious handling + - LP: #1144961 + * KVM: s390: Handle hosts not supporting s390-virtio. + - LP: #1144961 + * v4l: Reset subdev v4l2_dev field to NULL if registration fails + - LP: #1144961 + * powerpc/eeh: Fix crash when adding a device in a slot with DDW + - LP: #1144961 + * pcmcia/vrc4171: Add missing spinlock init + - LP: #1144961 + * USB: DWC3: Generate interrupt on each TRB as default option + - LP: #1144961 + * usb: dwc3: gadget: fix skip LINK_TRB on ISOC + - LP: #1144961 + * usb: dwc3: gadget: req->queued must be forced to false in cleanup + - LP: #1144961 + * Purge existing TLB entries in set_pte_at and ptep_set_wrprotect + - LP: #1144961 + * ARM: PXA3xx: program the CSMSADRCFG register + - LP: #1144961 + * ab8500-chargalg: Only root should have write permission on sysfs file + - LP: #1144961 + * USB: option: add and update Alcatel modems + - LP: #1144961 + * uprobes/powerpc: Add dependency on single step emulation + - LP: #1144961 + * drivers/video: fsl-diu-fb: fix pixel formats for 24 and 16 bpp + - LP: #1144961 + * s390/kvm: Fix store status for ACRS/FPRS + - LP: #1144961 + * staging: comedi: disallow COMEDI_DEVCONFIG on non-board minors + - LP: #1144961 + * ALSA: usb-audio: fix Roland A-PRO support + - LP: #1144961 + * x86-32, mm: Rip out x86_32 NUMA remapping code + - LP: #1144961 + * x86-32, mm: Remove reference to resume_map_numa_kva() + - LP: #1144961 + * x86-32, mm: Remove reference to alloc_remap() + - LP: #1144961 + * ALSA: hda - Release assigned pin/cvt at error path of hdmi_pcm_open() + - LP: #1144961 + * ab8500_btemp: Demote initcall sequence + - LP: #1144961 + * Driver core: treat unregistered bus_types as having no devices + - LP: #1144961 + * ALSA: aloop: Fix Oops while PM resume + - LP: #1144961 + * ASoC: wm2200: correct IN2L and IN3L digital mute + - LP: #1144961 + * tty: set_termios/set_termiox should not return -EINTR + - LP: #1144961 + * ARM: i.MX25: clk: parent per5_clk to AHB clock + - LP: #1144961 + * hrtimer: Prevent hrtimer_enqueue_reprogram race + - LP: #1144961 + * staging: comedi: check s->async for poll(), read() and write() + - LP: #1144961 + * ACPI: Add DMI entry for Sony VGN-FW41E_H + - LP: #1144961 + * timeconst.pl: Eliminate Perl warning + - LP: #1144961 + * p54usb: corrected USB ID for T-Com Sinus 154 data II + - LP: #1144961 + * rtlwifi: rtl8192cu: Fix NULL dereference BUG when using new_id + - LP: #1144961 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1144961 + * USB: storage: properly handle the endian issues of idProduct + - LP: #1144961 + * ALSA: rme32.c irq enabling after spin_lock_irq + - LP: #1144961 + * ALSA: ali5451: remove irq enabling in pointer callback + - LP: #1144961 + * ARM: 7643/1: sched: correct update_sched_clock() + - LP: #1144961 + * ALSA: hda - Workaround for silent output on Sony Vaio VGC-LN51JGB with + ALC889 + - LP: #1144961 + * x86: Hyper-V: register clocksource only if its advertised + - LP: #1144961 + * USB: option: add Yota / Megafon M100-1 4g modem + - LP: #1144961 + * USB: serial: fix null-pointer dereferences on disconnect + - LP: #1144961 + * idr: idr_for_each_entry() macro + - LP: #1144961 + * pps: Add pps_lookup_dev() function + - LP: #1144961 + * pps: Use pps_lookup_dev to reduce ldisc coupling + - LP: #1144961 + * pps: Fix a use-after free bug when unregistering a source. + - LP: #1144961 + * USB: option: add Huawei "ACM" devices using protocol = vendor + - LP: #1144961 + * ARM: samsung: fix assembly syntax for new gas + - LP: #1144961 + * USB: ehci-omap: Don't free gpios that we didn't request + - LP: #1144961 + * USB: ehci-omap: Fix autoloading of module + - LP: #1144961 + * USB: usb-storage: unusual_devs update for Super TOP SATA bridge + - LP: #1144961 + * perf tools: Fix build with bison 2.3 and older. + - LP: #1144961 + * serial: imx: Fix recursive locking bug + - LP: #1144961 + * posix-cpu-timers: Fix nanosleep task_struct leak + - LP: #1144961 + * drivercore: Fix ordering between deferred_probe and exiting initcalls + - LP: #1144961 + * NFSv4.1: Don't decode skipped layoutgets + - LP: #1144961 + * umount oops when remove blocklayoutdriver first + - LP: #1144961 + * HID: wiimote: fix nunchuck button parser + - LP: #1144961 + * cgroup: fix exit() vs rmdir() race + - LP: #1144961 + * cpuset: fix cpuset_print_task_mems_allowed() vs rename() race + - LP: #1144961 + * rtlwifi: usb: allocate URB control message setup_packet and data buffer + separately + - LP: #1144961 + * b43: Increase number of RX DMA slots + - LP: #1144961 + * futex: Revert "futex: Mark get_robust_list as deprecated" + - LP: #1144961 + * NLM: Ensure that we resend all pending blocking locks after a reclaim + - LP: #1144961 + * ALSA: hda - hdmi: ELD shouldn't be valid after unplug + - LP: #1144961 + * xen: close evtchn port if binding to irq fails + - LP: #1144961 + * xen: Send spinlock IPI to all waiters + - LP: #1011792, #1144961 + * ALSA: usb: Fix Processing Unit Descriptor parsers + - LP: #1144961 + * inotify: remove broken mask checks causing unmount to be EINVAL + - LP: #1144961 + * fs/block_dev.c: page cache wrongly left invalidated after + revalidate_disk() + - LP: #1144961 + * ocfs2: unlock super lock if lockres refresh failed + - LP: #1144961 + * drivers/video/backlight/adp88?0_bl.c: fix resume + - LP: #1144961 + * powerpc/kexec: Disable hard IRQ before kexec + - LP: #1144961 + * mm: mmu_notifier: have mmu_notifiers use a global SRCU so they may + safely schedule + - LP: #1144961 + * mm: mmu_notifier: make the mmu_notifier srcu static + - LP: #1144961 + * mmu_notifier_unregister NULL Pointer deref and multiple ->release() + callouts + - LP: #1144961 + * mm/fadvise.c: drain all pagevecs if POSIX_FADV_DONTNEED fails to + discard all pages + - LP: #1144961 + * tmpfs: fix use-after-free of mempolicy object + - LP: #1144961 + * dca: check against empty dca_domains list before unregister provider + - LP: #1144961 + * ext4: return ENOMEM if sb_getblk() fails + - LP: #1144961 + * ext4: check bh in ext4_read_block_bitmap() + - LP: #1144961 + * quota: autoload the quota_v2 module for QFMT_VFS_V1 quota format + - LP: #1144961 + * ext4: fix possible use-after-free with AIO + - LP: #1144961 + * drm/i915: Fix CAGF for HSW + - LP: #1144961 + * ext4: fix race in ext4_mb_add_n_trim() + - LP: #1144961 + * UBIFS: fix use of freed ubifs_orphan objects + - LP: #1144961 + * UBIFS: fix double free of ubifs_orphan objects + - LP: #1144961 + * drm/radeon/dce6: fix display powergating + - LP: #1144961 + * vgacon/vt: clear buffer attributes when we load a 512 character font + (v2) + - LP: #1144961 + * fbcon: don't lose the console font across generic->chip driver switch + - LP: #1144961 + * drm/usb: bind driver to correct device + - LP: #1144961 + * drm/udl: make usage as a console safer + - LP: #1144961 + * drm/udl: disable fb_defio by default + - LP: #1144961 + * fb: rework locking to fix lock ordering on takeover + - LP: #1144961 + * fb: Yet another band-aid for fixing lockdep mess + - LP: #1144961 + * ext4: fix xattr block allocation/release with bigalloc + - LP: #1144961 + * target: Fix lookup of dynamic NodeACLs during cached demo-mode + operation + - LP: #1144961 + * target: Add missing mapped_lun bounds checking during make_mappedlun + setup + - LP: #1144961 + * ftrace: Call ftrace cleanup module notifier after all other notifiers + - LP: #1144961 + * drm: don't add inferred modes for monitors that don't support them + - LP: #1144961 + * drm/i915: disable shared panel fitter for pipe + - LP: #1144961 + * drm: Fill depth/bits_per_pixel for C8 format + - LP: #1144961 + * drm: Use C8 instead of RGB332 when determining the format from + depth/bpp + - LP: #1144961 + * drm/i915: add missing \n to UTS_RELEASE in the error_state + - LP: #1144961 + * drm/i915: Set i9xx sdvo clock limits according to specifications + - LP: #1144961 + * drm/i915: inverted brightness quirk for Acer Aspire 4736Z + - LP: #1144961 + * intel/iommu: force writebuffer-flush quirk on Gen 4 Chipsets + - LP: #1144961 + * drm/radeon: remove overzealous warning in hdmi handling + - LP: #1144961 + * x86, efi: Make "noefi" really disable EFI runtime serivces + - LP: #1144961 + * posix-timer: Don't call idr_find() with out-of-range ID + - LP: #1144961 + * ext4: fix free clusters calculation in bigalloc filesystem + - LP: #1144961 + * fs: Fix possible use-after-free with AIO + - LP: #1144961 + * mmc: sdhci-esdhc-imx: fix host version read + - LP: #1144961 + * b43: Fix lockdep splat on module unload + - LP: #1144961 + * ocfs2: fix possible use-after-free with AIO + - LP: #1144961 + * x86/xen: don't assume %ds is usable in xen_iret for 32-bit PVOPS. + - LP: #1144961 + * igb: Remove artificial restriction on RQDPC stat reading + - LP: #1144961 + * ptrace/x86: Introduce set_task_blockstep() helper + - LP: #1144961 + * ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic + - LP: #1144961 + * sunvdc: Fix off-by-one in generic_request(). + - LP: #1144961 + * sparc64: Fix gfp_flags setting in tsb_grow(). + - LP: #1144961 + * bridge: set priority of STP packets + - LP: #1144961 + * xen-netback: correctly return errors from netbk_count_requests() + - LP: #1144961 + * xen-netback: cancel the credit timer when taking the vif down + - LP: #1144961 + * net: fix a compile error when SOCK_REFCNT_DEBUG is enabled + - LP: #1144961 + * ipv4: fix a bug in ping_err(). + - LP: #1144961 + * ipv6: use a stronger hash for tcp + - LP: #1144961 + * ARM: 7635/1: versatile: fix the PCI IRQ regression + - LP: #1144961 + * staging: vt6656: Fix URB submitted while active warning. + - LP: #1144961 + * vlan: adjust vlan_set_encap_proto() for its callers + - LP: #1144961 + * gpio/ich: Add missing spinlock init + - LP: #1144961 + * staging: comedi: ni_labpc: set up command4 register *after* command3 + - LP: #1144961 + * staging: comedi: ni_labpc: correct differential channel sequence for AI + commands + - LP: #1144961 + * tty: Prevent deadlock in n_gsm driver + - LP: #1144961 + * Linux 3.5.7.7 + - LP: #1144961 + * i915_hsw: don't send DP "idle" pattern before "normal" on HSW PORT_A + - LP: #1138700 + * mfd: rtsx: Optimize card detect flow + - LP: #1148892 + * mfd: rtsx: Fix issue that booting OS with SD card inserted + - LP: #1148892 + * drm/radeon: add new AMD ACPI header and update relevant code (v2) + - LP: #1110219 + * drm/radeon: add a license header to radeon_apci.c + - LP: #1110219 + * drm/radeon: track whether the GPU controls the backlight (v2) + - LP: #1110219 + * drm/radeon: rework legacy backlight control + - LP: #1110219 + * drm/radeon: add backlight control for atom devices (v2) + - LP: #1110219 + * drm/radeon: refactor radeon_atif_call + - LP: #1110219 + * drm/radeon: implement radeon_atif_verify_interface + - LP: #1110219 + * drm/radeon: implement wrapper for GET_SYSTEM_PARAMS + - LP: #1110219 + * drm/radeon: implement handler for ACPI event + - LP: #1110219 + * drm/radeon: re-organize the acpi notifier callback + - LP: #1110219 + * ACPI video: allow events handlers to veto the keypress + - LP: #1110219 + * drm/radeon: block the keypress on ATIF events + - LP: #1110219 + * keys: fix race with concurrent install_user_keyrings() + - LP: #1152788 + - CVE-2013-1792 + * mfd: rtsx: Add clock divider hook + - LP: #1153618 + * mfd: rtsx: Implement driving adjustment to device-dependent callbacks + - LP: #1153618 + * mfd: rtsx: Support RTS5227 + - LP: #1153618 + * mmc: rtsx: remove driving adjustment + - LP: #1153618 + * x86/apic: Remove noisy zero-mask warning from + default_send_IPI_mask_logical() + - LP: #1100202 + * signal: always clear sa_restorer on execve + - LP: #1153813 + - CVE-2013-0914 + + -- Steve Conklin Mon, 18 Mar 2013 13:39:54 -0500 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.42) quantal-proposed; urgency=low + + [Steve Conklin] + + * Release Tracking Bug + - LP: #1152715 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094, #1147678 + + -- Steve Conklin Fri, 08 Mar 2013 12:50:52 -0600 + +linux (3.5.0-26.40) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1133429 + + [ Andy Whitcroft ] + + * ubuntu: overlayfs -- fix missmerge of vfs_open changes + - LP: #1122094 + + [ Ian Campbell ] + + * SAUCE: xen/netback: shutdown the ring if it contains garbage. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: netback: correct netbk_tx_err to handle wrap around. + - LP: #1117325 + - CVE-2013-0216 + * SAUCE: xen/netback: don't leak pages on failure in + xen_netbk_tx_check_gop. + - LP: #1117331 + - CVE-2013-0217 + * SAUCE: xen/netback: free already allocated memory on failure in + xen_netbk_get_requests + - LP: #1117331 + - CVE-2013-0217 + + [ Jan Beulich ] + + * SAUCE: xen-pciback: rate limit error messages from + xen_pcibk_enable_msi{, x}() + - LP: #1117336 + - CVE-2013-0231 + + [ Tim Gardner ] + + * [Config] CONFIG_SATA_AHCI=m + - LP: #1056563 + * SAUCE: rt2x00: rt2x00pci_regbusy_read() - only print register access + failure once + - LP: #1128840 + + [ Upstream Kernel Changes ] + + * Revert "USB: Handle warm reset failure on empty port." + - LP: #1131944 + * xen: Fix stack corruption in xen_failsafe_callback for 32bit PVOPS + guests. + - LP: #1102374 + - CVE-2013-0190 + * virtio-blk: Don't free ida when disk is in use + - LP: #1119885 + * ioat: Fix DMA memory sync direction correct flag + - LP: #1119885 + * PCI: pciehp: Use per-slot workqueues to avoid deadlock + - LP: #1119885 + * PCI/AER: pci_get_domain_bus_and_slot() call missing required + pci_dev_put() + - LP: #1119885 + * xen/grant-table: correctly initialize grant table version 1 + - LP: #1119885 + * serial:ifx6x60:Delete SPI timer when shut down port + - LP: #1119885 + * tty: 8250_dw: Fix inverted arguments to serial_out in IRQ handler + - LP: #1119885 + * drm/i915: Invalidate the relocation presumed_offsets along the slow + path + - LP: #1119885 + * ARM: 7627/1: Predicate preempt logic on PREEMP_COUNT not PREEMPT alone + - LP: #1119885 + * staging: vt6656: Fix inconsistent structure packing + - LP: #1119885 + * 8250/16?50: Add support for Broadcom TruManage redirected serial port + - LP: #1119885 + * KVM: PPC: Emulate dcbf + - LP: #1119885 + * staging: wlan-ng: Fix clamping of returned SSID length + - LP: #1119885 + * USB: option: blacklist network interface on ONDA MT8205 4G LTE + - LP: #1119885 + * USB: option: add TP-LINK HSUPA Modem MA180 + - LP: #1119885 + * ALSA: hda - Fix mute led for another HP machine + - LP: #1096789, #1119885 + * usb: dwc3: gadget: fix ep->maxburst for ep0 + - LP: #1119885 + * ACPI / cpuidle: Fix NULL pointer issues when cpuidle is disabled + - LP: #1119885 + * ACPI / processor: Get power info before updating the C-states + - LP: #1119885 + * ARM: DMA: Fix struct page iterator in dma_cache_maint() to work with + sparsemem + - LP: #1119885 + * evm: checking if removexattr is not a NULL + - LP: #1119885 + * ALSA: hda - Add Conexant CX20755/20756/20757 codec IDs + - LP: #1119885 + * ftrace: Be first to run code modification on modules + - LP: #1119885 + * i2c: mxs: Fix type of error code + - LP: #1119885 + * USB: UHCI: fix IRQ race during initialization + - LP: #1119885 + * async: fix __lowest_in_progress() + - LP: #1119885 + * fs/cifs/cifs_dfs_ref.c: fix potential memory leakage + - LP: #1119885 + * ARM: at91: rm9200: remake the BGA as default version + - LP: #1119885 + * Bluetooth: Fix sending HCI commands after reset + - LP: #1119885 + * Bluetooth: Fix incorrect strncpy() in hidp_setup_hid() + - LP: #1119885 + * ath9k_htc: Fix memory leak + - LP: #1119885 + * ath9k: do not link receive buffers during flush + - LP: #1119885 + * ath9k: add a better fix for the rx tasklet vs rx flush race + - LP: #1119885 + * ath9k: fix rx flush handling + - LP: #1119885 + * brcmsmac: increase timer reference count for new timers only + - LP: #1119885 + * ath9k: remove sc->rx.rxbuflock to fix a deadlock + - LP: #1119885 + * ath9k: disable the tasklet before taking the PCU lock + - LP: #1119885 + * ASoC: wm2200: correct mixer values and text + - LP: #1119885 + * mac80211: fix FT roaming + - LP: #1119885 + * mac80211: synchronize scan off/on-channel and PS states + - LP: #1119885 + * efi, x86: Pass a proper identity mapping in efi_call_phys_prelog + - LP: #1119885 + * iwlegacy: fix IBSS cleanup + - LP: #1119885 + * ath9k_hw: fix calibration issues on chainmask that don't include chain + 0 + - LP: #1119885 + * ath9k_hw: fix chain swap setting when setting rx chainmask to 5 + - LP: #1119885 + * mwifiex: fix typo in PCIe adapter NULL check + - LP: #1119885 + * drm/i915: Disable AsyncFlip performance optimisations + - LP: #1119885 + * drm/i915: GFX_MODE Flush TLB Invalidate Mode must be '1' for scanline + waits + - LP: #1119885 + * iommu/intel: disable DMAR for g4x integrated gfx + - LP: #1119885 + * drm/i915: dump UTS_RELEASE into the error_state + - LP: #1119885 + * ALSA: hda - Add a fixup for Packard-Bell desktop with ALC880 + - LP: #1119885 + * drm/radeon: fix cursor corruption on DCE6 and newer + - LP: #1119885 + * radeon_display: Use pointer return error codes + - LP: #1119885 + * drm/radeon: fix error path in kpage allocation + - LP: #1119885 + * drm/radeon: fix a rare case of double kfree + - LP: #1119885 + * x86/msr: Add capabilities check + - LP: #1119885 + * x86, efi: Set runtime_version to the EFI spec revision + - LP: #1119885 + * can: c_can: fix invalid error codes + - LP: #1119885 + * can: ti_hecc: fix invalid error codes + - LP: #1119885 + * can: pch_can: fix invalid error codes + - LP: #1119885 + * ALSA: usb-audio: fix invalid length check for RME and other UAC 2 + devices + - LP: #1119885 + * smp: Fix SMP function call empty cpu mask race + - LP: #1119885 + * IOMMU, AMD Family15h Model10-1Fh erratum 746 Workaround + - LP: #1119885 + * xfs: Fix possible use-after-free with AIO + - LP: #1119885 + * powerpc/book3e: Disable interrupt after preempt_schedule_irq + - LP: #1119885 + * ALSA: hda - Fix non-snoop page handling + - LP: #1119885 + * EDAC: Test correct variable in ->store function + - LP: #1119885 + * NFS: Fix error reporting in nfs_xdev_mount + - LP: #1119885 + * NFS: Don't silently fail setattr() requests on mountpoints + - LP: #1119885 + * NFSv4.1: Handle NFS4ERR_DELAY when resetting the NFSv4.1 session + - LP: #1119885 + * drivers/firmware/dmi_scan.c: check dmi version when get system uuid + - LP: #1119885 + * drivers/firmware/dmi_scan.c: fetch dmi version from SMBIOS if it exists + - LP: #1119885 + * ahci: Add support for Enmotus Bobcat device. + - LP: #1119885 + * ahci: Fix lack of command retry after a success error handler. + - LP: #1119885 + * x86/Sandy Bridge: mark arrays in __init functions as __initconst + - LP: #1119885 + * x86/Sandy Bridge: Sandy Bridge workaround depends on CONFIG_PCI + - LP: #1119885 + * drm/i915: Implement WaDisableHiZPlanesWhenMSAAEnabled + - LP: #1119885 + * ahci: Add identifiers for ASM106x devices + - LP: #1119885 + * module: fix symbol waiting when module fails before init + - LP: #1119885 + * module: wait when loading a module which is currently initializing. + - LP: #1119885 + * module: add new state MODULE_STATE_UNFORMED. + - LP: #1119885 + * module: put modules in list much earlier. + - LP: #1119885 + * module: fix missing module_mutex unlock + - LP: #1119885 + * intel_idle: Don't register CPU notifier if we are not running. + - LP: #1119885 + * xfs: fix periodic log flushing + - LP: #1119885 + * gspca_kinect: add Kinect for Windows USB id + - LP: #1119885 + * ARM: 7628/1: head.S: map one extra section for the ATAG/DTB area + - LP: #1119885 + * Linux 3.5.7.5 + - LP: #1119885 + * net: fix infinite loop in __skb_recv_datagram() + - LP: #1129184 + - CVE-2013-0290 + * vhost: fix length for cross region descriptor + - LP: #1130951 + - CVE-2013-0311 + * xhci: Fix isoc TD encoding. + - LP: #1131944 + * xhci: Fix TD size for isochronous URBs. + - LP: #1131944 + * drivers: xhci: fix incorrect bit test + - LP: #1131944 + * USB: XHCI: fix memory leak of URB-private data + - LP: #1131944 + * usb: Prevent dead ports when xhci is not enabled + - LP: #1131944 + * usb: Using correct way to clear usb3.0 device's remote wakeup feature. + - LP: #1131944 + * sched/rt: Use root_domain of rt_rq not current processor + - LP: #1131944 + * USB: EHCI: fix timer bug affecting port resume + - LP: #1131944 + * regulator: max8998: fix incorrect min_uV value for ldo10 + - LP: #1131944 + * drm/radeon: fix MC blackout on evergreen+ + - LP: #1131944 + * drm/radeon: add WAIT_UNTIL to the non-VM safe regs list for cayman/TN + - LP: #1131944 + * rtlwifi: Fix the usage of the wrong variable in usb.c + - LP: #1131944 + * e1000e: enable ECC on I217/I218 to catch packet buffer memory errors + - LP: #1131944 + * drm/radeon: add quirk for RV100 board + - LP: #1131944 + * USB: qcserial: add Telit Gobi QDL device + - LP: #1131944 + * USB: option: add support for Telit LE920 + - LP: #1131944 + * drm/radeon: fix backend map setup on 1 RB sumo boards + - LP: #1131944 + * drm/radeon: protect against div by 0 in backend setup + - LP: #1131944 + * mwifiex: fix incomplete scan in case of IE parsing error + - LP: #1131944 + * USB: EHCI: fix bug in scheduling periodic split transfers + - LP: #1131944 + * x86-64: Replace left over sti/cli in ia32 audit exit code + - LP: #1131944 + * drm/radeon/evergreen+: wait for the MC to settle after MC blackout + - LP: #1131944 + * Bluetooth: Fix handling of unexpected SMP PDUs + - LP: #1131944 + * drm/radeon: Calling object_unrefer() when creating fb failure + - LP: #1131944 + * drm/radeon: prevent crash in the ring space allocation + - LP: #1131944 + * target: Fix divide by zero bug in fabric_max_sectors for unconfigured + devices + - LP: #1131944 + * digsig: Fix memory leakage in digsig_verify_rsa() + - LP: #1131944 + * can: c_can: Set reserved bit in IFx_MASK2 to 1 on write + - LP: #1131944 + * USB: ftdi_sio: add PID/VID entries for ELV WS 300 PC II + - LP: #1131944 + * USB: option: add Changhong CH690 + - LP: #1131944 + * USB: ftdi_sio: add Zolix FTDI PID + - LP: #1131944 + * USB: storage: Define a new macro for USB storage match rules + - LP: #1131944 + * USB: storage: optimize to match the Huawei USB storage devices and + support new switch command + - LP: #1131944 + * rtlwifi: Fix scheduling while atomic bug + - LP: #1131944 + * nilfs2: fix fix very long mount time issue + - LP: #1131944 + * mm/hugetlb: set PTE as huge in hugetlb_change_protection and + remove_migration_pte + - LP: #1131944 + * drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq + handler + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: fix the missing operation on enable + - LP: #1131944 + * virtio_console: Don't access uninitialized data. + - LP: #1131944 + * HID: usbhid: quirk for Formosa IR receiver + - LP: #1131944 + * kernel/resource.c: fix stack overflow in __reserve_region_with_split() + - LP: #1131944 + * net: prevent setting ttl=0 via IP_TTL + - LP: #1131944 + * ipv6: fix the noflags test in addrconf_get_prefix_route + - LP: #1131944 + * MAINTAINERS: Stephen Hemminger email change + - LP: #1131944 + * ipv6: fix header length calculation in ip6_append_data() + - LP: #1131944 + * macvlan: fix macvlan_get_size() + - LP: #1131944 + * net: calxedaxgmac: throw away overrun frames + - LP: #1131944 + * net/mlx4_en: Fix bridged vSwitch configuration for non SRIOV mode + - LP: #1131944 + * net/mlx4_core: Set number of msix vectors under SRIOV mode to firmware + defaults + - LP: #1131944 + * isdn/gigaset: fix zero size border case in debug dump + - LP: #1131944 + * netxen: fix off by one bug in netxen_release_tx_buffer() + - LP: #1131944 + * r8169: remove the obsolete and incorrect AMD workaround + - LP: #1131944 + * net: loopback: fix a dst refcounting issue + - LP: #1131944 + * pktgen: correctly handle failures when adding a device + - LP: #1131944 + * ipv6: do not create neighbor entries for local delivery + - LP: #1131944 + * via-rhine: Fix bugs in NAPI support. + - LP: #1131944 + * packet: fix leakage of tx_ring memory + - LP: #1131944 + * atm/iphase: rename fregt_t -> ffreg_t + - LP: #1131944 + * sctp: refactor sctp_outq_teardown to insure proper re-initalization + - LP: #1131944 + * net: sctp: sctp_setsockopt_auth_key: use kzfree instead of kfree + - LP: #1131944 + * net: sctp: sctp_endpoint_free: zero out secret key data + - LP: #1131944 + * tcp: frto should not set snd_cwnd to 0 + - LP: #1131944 + * tcp: fix for zero packets_in_flight was too broad + - LP: #1131944 + * tg3: Avoid null pointer dereference in tg3_interrupt in netconsole mode + - LP: #1131944 + * tg3: Fix crc errors on jumbo frame receive + - LP: #1131944 + * s390/timer: avoid overflow when programming clock comparator + - LP: #1131944 + * x86: Do not leak kernel page mapping locations + - LP: #1131944 + * x86/apic: Work around boot failure on HP ProLiant DL980 G7 Server + systems + - LP: #1131944 + * drivers/rtc/rtc-pl031.c: restore ST variant functionality + - LP: #1131944 + * mm: don't overwrite mm->def_flags in do_mlockall() + - LP: #1131944 + * x86/mm: Check if PUD is large when validating a kernel address + - LP: #1131944 + * PCI/PM: Clean up PME state when removing a device + - LP: #1131944 + * efi: Clear EFI_RUNTIME_SERVICES rather than EFI_BOOT by "noefi" boot + parameter + - LP: #1131944 + * mm: fix pageblock bitmap allocation + - LP: #1131944 + * Linux 3.5.7.6 + - LP: #1131944 + + -- Brad Figg Tue, 26 Feb 2013 08:44:21 -0800 + +linux (3.5.0-25.39) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1132885 + + [ Upstream Kernel Changes ] + + * sock_diag: Fix out-of-bounds access to sock_diag_handlers[] + + -- Brad Figg Mon, 25 Feb 2013 09:04:12 -0800 + +linux (3.5.0-25.38) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1129472 + + [ Upstream Kernel Changes ] + + * ptrace: introduce signal_wake_up_state() and ptrace_signal_wake_up() + - LP: #1119885, #1129192 + - CVE-2013-0871 + * ptrace: ensure arch_ptrace/ptrace_request can never race with SIGKILL + - LP: #1119885, #1129192 + - CVE-2013-0871 + * wake_up_process() should be never used to wakeup a TASK_STOPPED/TRACED + task + - LP: #1119885, #1129192 + - CVE-2013-0871 + + -- Luis Henriques Mon, 18 Feb 2013 21:57:04 +0000 + +linux (3.5.0-24.37) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1117492 + + [ Tim Gardner ] + + * [Config] CONFIG_ALX=m for x86 only + - LP: #927782 + + -- Luis Henriques Wed, 06 Feb 2013 17:29:44 +0000 + +linux (3.5.0-24.36) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1116501 + + [ Adam Lee ] + + * [Config] Enable RTSX_PCI modules + - LP: #1057089 + + [ Andy Whitcroft ] + + * [Config] enable various HVC consoles + - LP: #1102206 + + [ Brad Figg ] + + * Revert "SAUCE: samsung-laptop: disable in UEFI mode" + - LP: #1111689 + + [ Herton Ronaldo Krzesinski ] + + * [Config] updateconfigs for 3.5.7.3 stable update + * d-i: Add mellanox ethernet drivers to nic-modules + - LP: #1015339 + + [ Kamal Mostafa ] + + * SAUCE: alx driver import script + - LP: #927782 + + [ Qualcomm Atheros, Inc ] + + * SAUCE: alx: Update to heads/master + - LP: #927782 + + [ Seth Forshee ] + + * SAUCE: samsung-laptop: Add quirk for broken acpi_video backlight on + N250P + - LP: #1086921 + + [ Stefan Bader ] + + * (config) Move 9p modules into generic package + - LP: #1107658 + + [ Tim Gardner ] + + * [debian] Remove dangling symlink from headers package + - LP: #1112442 + * [config] CONFIG_ALX=m + - LP: #927782 + * [Config] Add alx to d-i nic-modules + - LP: #927782 + + [ Upstream Kernel Changes ] + + * Revert "8139cp: revert "set ring address before enabling receiver"" + - LP: #1102417 + * Revert "ath9k_hw: Update AR9003 high_power tx gain table" + - LP: #1102417 + * Revert "drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13" + - LP: #1102417 + * Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat + codecs" + - LP: #1106966, #886975 + * be2net: don't call vid_config() when there's no vlan config + - LP: #1083088 + * be2net: cleanup be_vid_config() + - LP: #1083088 + * be2net: do not modify PCI MaxReadReq size + - LP: #1083088 + * be2net: fix reporting number of actual rx queues + - LP: #1083088 + * be2net: do not use SCRATCHPAD register + - LP: #1083088 + * be2net: Fix driver load for VFs for Lancer + - LP: #1083088 + * be2net: Explicitly clear the reserved field in the Tx Descriptor + - LP: #1083088 + * be2net: Regression bug wherein VFs creation broken for multiple cards. + - LP: #1083088 + * be2net: Fix to trim skb for padded vlan packets to workaround an ASIC + Bug + - LP: #1083088 + * be2net: Fix Endian + - LP: #1083088 + * be2net: Fix error while toggling autoneg of pause parameters + - LP: #1083088 + * be2net : Fix die temperature stat for Lancer + - LP: #1083088 + * be2net: Fix initialization sequence for Lancer + - LP: #1083088 + * be2net: Activate new FW after FW download for Lancer + - LP: #1083088 + * be2net: Fix cleanup path when EQ creation fails + - LP: #1083088 + * be2net: Enable RSS UDP hashing for Lancer and Skyhawk + - LP: #1083088 + * be2net: dont pull too much data in skb linear part + - LP: #1083088 + * be2net: Fix VF driver load for Lancer + - LP: #1083088 + * be2net: Ignore physical link async event for Lancer + - LP: #1083088 + * be2net: Fix to parse RSS hash from Receive completions correctly. + - LP: #1083088 + * netpoll: revert 6bdb7fe3104 and fix be_poll() instead + - LP: #1083088 + * be2net: create RSS rings even in multi-channel configs + - LP: #1083088 + * be2net: fix max VFs reported by HW + - LP: #1083088 + * be2net: fix FW default for VF tx-rate + - LP: #1083088 + * be2net: fixup malloc/free of adapter->pmac_id + - LP: #1083088 + * be2net: fix wrong handling of be_setup() failure in be_probe() + - LP: #1083088 + * be2net: cleanup code related to be_link_status_query() + - LP: #1083088 + * be2net: fix vfs enumeration + - LP: #1083088 + * be2net: Remove code that stops further access to BE NIC based on UE + bits + - LP: #1083088 + * mtip32xx: Add support for new devices + - LP: #1099913 + * mtip32xx: Handle NCQ commands during the security locked state + - LP: #1099913 + * mtip32xx: Increase timeout for standby command + - LP: #1099913 + * mtip32xx: Proper reporting of write protect status on big-endian + - LP: #1099913 + * mtip32xx: Change printk to pr_xxxx + - LP: #1099913 + * mtip32xx: Remove dead code + - LP: #1099913 + * mtip32xx: fix user_buffer check in exec_drive_command + - LP: #1099913 + * mtip32xx:Added appropriate timeout value for secure erase + - LP: #1099913 + * mtip32xx: fix potential crash on SEC_ERASE_UNIT + - LP: #1099913 + * mtip32xx: Fix to make lba address correct in big-endian systems + - LP: #1099913 + * mtip32xx: Fix incorrect mask used for erase mode + - LP: #1099913 + * mtip32xx: fix shift larger than type warning + - LP: #1099913 + * mtip32xx: fix potential NULL pointer dereference in + mtip_timeout_function() + - LP: #1099913 + * mtip32xx: Fix padding issue + - LP: #1099913 + * KVM: PPC: e500: fix allocation size error on g2h_tlb1_map + - LP: #1102417 + * s390/kvm: dont announce RRBM support + - LP: #1102417 + * cgroup: cgroup_subsys->fork() should be called after the task is added + to css_set + - LP: #1102417 + * freezer: add missing mb's to freezer_count() and freezer_should_skip() + - LP: #1102417 + * ath9k_hw: Enable hw PLL power save for AR9462 + - LP: #1102417 + * usb: gadget: tcm_usb_gadget: NULL terminate the FS descriptor list + - LP: #1102417 + * usb: gadget: network: fix bind() error path + - LP: #1102417 + * usb: gadget: midi: free hs descriptors + - LP: #1102417 + * usb: gadget: phonet: free requests in pn_bind()'s error path + - LP: #1102417 + * usb: gadget: uvc: fix error path in uvc_function_bind() + - LP: #1102417 + * x86: hpet: Fix masking of MSI interrupts + - LP: #1102417 + * usb: musb: cppi_dma: export cppi_interrupt() + - LP: #1102417 + * iscsi-target: Fix bug in handling of ExpStatSN ACK during u32 + wrap-around + - LP: #1102417 + * iscsi-target: Always send a response before terminating iSCSI + connection + - LP: #1102417 + * SUNRPC: Fix validity issues with rpc_pipefs sb->s_fs_info + - LP: #1102417 + * ext4: fix memory leak in ext4_xattr_set_acl()'s error path + - LP: #1102417 + * ARM: mm: use pteval_t to represent page protection values + - LP: #1102417 + * perf test: fix a build error on builtin-test + - LP: #1102417 + * USB: fix endpoint-disabling for failed config changes + - LP: #1102417 + * genirq: Always force thread affinity + - LP: #1102417 + * xhci: Fix conditional check in bandwidth calculation. + - LP: #1102417 + * xHCI: Fix TD Size calculation on 1.0 hosts. + - LP: #1102417 + * xhci: fix null-pointer dereference when destroying half-built segment + rings + - LP: #1102417 + * xhci: Extend Fresco Logic MSI quirk. + - LP: #1102417 + * usb: host: xhci: Stricter conditional for Z1 system models for + Compliance Mode Patch + - LP: #1102417 + * Staging: bcm: Add two products and remove an existing product. + - LP: #1102417 + * rcu: Fix batch-limit size problem + - LP: #1102417 + * ext4: init pagevec in ext4_da_block_invalidatepages + - LP: #1102417 + * powerpc: Fix CONFIG_RELOCATABLE=y CONFIG_CRASH_DUMP=n build + - LP: #1102417 + * ftrace: Clear bits properly in reset_iter_read() + - LP: #1102417 + * cdc-acm: implement TIOCSSERIAL to avoid blocking close(2) + - LP: #1102417 + * ACPI / battery: Correct battery capacity values on Thinkpads + - LP: #1102417 + * cgroup: remove incorrect dget/dput() pair in cgroup_create_dir() + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [04ca, 2003] + - LP: #1102417 + * Bluetooth: Add support for BCM20702A0 [0b05, 17b5] + - LP: #1102417 + * regulator: wm831x: Set the new rather than old value for DVS VSEL + - LP: #1102417 + * drm: fix documentation for drm_crtc_set_mode() + - LP: #1102417 + * mfd: Only unregister platform devices allocated by the mfd core + - LP: #1102417 + * NFS: Add sequence_priviliged_ops for nfs4_proc_sequence() + - LP: #1102417 + * drm/i915: make the panel fitter work on pipes B and C on IVB + - LP: #1102417 + * USB: add new zte 3g-dongle's pid to option.c + - LP: #1102417 + * ACPI / PM: Add Sony Vaio VPCEB1S1E to nonvs blacklist. + - LP: #1102417 + * mfd: wm8994: Add support for WM1811 rev E + - LP: #1102417 + * 8139cp: set ring address after enabling C+ mode + - LP: #1102417 + * USB: OHCI: workaround for hardware bug: retired TDs not added to the + Done Queue + - LP: #1102417 + * USB: option: blacklist network interface on Huawei E173 + - LP: #1102417 + * USB: cp210x: add Virtenio Preon32 device id + - LP: #1102417 + * usb: ftdi_sio: fixup BeagleBone A5+ quirk + - LP: #1102417 + * USB: ftdi_sio: Add support for Newport AGILIS motor drivers + - LP: #1102417 + * qla2xxx: Look up LUN for abort requests + - LP: #1102417 + * iscsit: use GFP_ATOMIC under spin lock + - LP: #1102417 + * ASoC: wm8994: Use the same DCS codes for all WM1811 variants + - LP: #1102417 + * sata_promise: fix hardreset lockdep error + - LP: #1102417 + * xhci: Add Lynx Point LP to list of Intel switchable hosts + - LP: #1102417 + * USB: mark uas driver as BROKEN + - LP: #1102417 + * can: Do not call dev_put if restart timer is running upon close + - LP: #1102417 + * mlx4_core: Fix potential deadlock in mlx4_eq_int() + - LP: #1102417 + * xfs: fix stray dquot unlock when reclaiming dquots + - LP: #1102417 + * KVM: Fix user memslot overlap check + - LP: #1102417 + * ext4: fix possible use after free with metadata csum + - LP: #1102417 + * prevent stack buffer overflow in host_reset + - LP: #1102417 + * mvsas: fix undefined bit shift + - LP: #1102417 + * qla2xxx: Test and clear FCPORT_UPDATE_NEEDED atomically. + - LP: #1102417 + * ACPI: do acpisleep dmi check when CONFIG_ACPI_SLEEP is set + - LP: #1102417 + * ACPI / PNP: Do not crash due to stale pointer use during system resume + - LP: #1102417 + * ring-buffer: Fix NULL pointer if rb_set_head_page() fails + - LP: #1102417 + * firewire: net: Fix handling of fragmented multicast/broadcast packets. + - LP: #1102417 + * HID: Add Apple wireless keyboard 2011 ANSI to special driver list + - LP: #1102417 + * libata: set dma_mode to 0xff in reset + - LP: #1102417 + * s390/cio: fix pgid reserved check + - LP: #1102417 + * Bluetooth: Add missing lock nesting notation + - LP: #1102417 + * Bluetooth: cancel power_on work when unregistering the device + - LP: #1102417 + * Input: wacom - fix touch support for Bamboo Fun CTH-461 + - LP: #1102417 + * ALSA: usb-audio: Avoid autopm calls after disconnection + - LP: #1102417 + * ALSA: usb-audio: Fix missing autopm for MIDI input + - LP: #1102417 + * ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 + - LP: #1102417 + * mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL + - LP: #1102417 + * Revert: "rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe + fails" + - LP: #1102417 + * x86,AMD: Power driver support for AMD's family 16h processors + - LP: #1102417 + * target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping + - LP: #1102417 + * drm/i915: Close race between processing unpin task and queueing the + flip + - LP: #1102417 + * cgroup_rm_file: don't delete the uncreated files + - LP: #1102417 + * pnpacpi: fix incorrect TEST_ALPHA() test + - LP: #1102417 + * drm/radeon: stop page faults from hanging the system (v2) + - LP: #1102417 + * drm/radeon/dce32+: use fractional fb dividers for high clocks + - LP: #1102417 + * drm/radeon: fix eDP clk and lane setup for scaled modes + - LP: #1102417 + * regmap: debugfs: Avoid overflows for very small reads + - LP: #1102417 + * b43legacy: Fix firmware loading when driver is built into the kernel + - LP: #1102417 + * ath9k: ar9003: fix OTP register offsets for AR9340 + - LP: #1102417 + * bcma: mips: fix clearing device IRQ + - LP: #1102417 + * ath9k_hw: Fix signal strength / channel noise reporting + - LP: #1102417 + * ath5k: fix tx path skb leaks + - LP: #1102417 + * b43: fix tx path skb leaks + - LP: #1102417 + * drm/i915: drop buggy write to FDI_RX_CHICKEN register + - LP: #1102417 + * drm/i915: disable cpt phase pointer fdi rx workaround + - LP: #1102417 + * iwlwifi: silently ignore fw flaws in Tx path + - LP: #1102417 + * iwlwifi: don't handle masked interrupt + - LP: #1102417 + * mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls + - LP: #1102417 + * nfs: don't extend writes to cover entire page if pagecache is invalid + - LP: #1102417 + * solos-pci: fix double-free of TX skb in DMA mode + - LP: #1102417 + * ALSA: hda - Add stereo-dmic fixup for Acer Aspire One 522 + - LP: #1102417 + * nfs: don't zero out the rest of the page if we hit the EOF on a DIO + READ + - LP: #1102417 + * drm/radeon: fix amd afusion gpu setup aka sumo v2 + - LP: #1102417 + * NFS: avoid NULL dereference in nfs_destroy_server + - LP: #1102417 + * sbp-target: fix error path in sbp_make_tpg() + - LP: #1102417 + * target/tcm_fc: fix the lockdep warning due to inconsistent lock state + - LP: #1102417 + * MIPS: Fix poweroff failure when HOTPLUG_CPU configured. + - LP: #1102417 + * fix Null pointer dereference on disk error + - LP: #1102417 + * NFS: Fix calls to drop_nlink() + - LP: #1102417 + * Input: walkera0701 - fix crash on startup + - LP: #1102417 + * SUNRPC: continue run over clients list on PipeFS event instead of break + - LP: #1102417 + * proc: pid/status: show all supplementary groups + - LP: #1102417 + * CRIS: fix I/O macros + - LP: #1102417 + * virtio: force vring descriptors to be allocated from lowmem + - LP: #1102417 + * nfs: fix wrong object type in lockowner_slab + - LP: #1102417 + * jffs2: hold erase_completion_lock on exit + - LP: #1102417 + * nfsd: fix v4 reply caching + - LP: #1102417 + * mtd cs553x_nand: Initialise ecc.strength before nand_scan() + - LP: #1102417 + * kbuild: Do not remove vmlinux when cleaning external module + - LP: #1102417 + * ASoC: sigmadsp: Fix endianness conversion issue + - LP: #1102417 + * nfsd: avoid permission checks on EXCLUSIVE_CREATE replay + - LP: #1102417 + * x86, 8042: Enable A20 using KBC to fix S3 resume on some MSI laptops + - LP: #1102417 + * mtd: nand: gpmi: reset BCH earlier, too, to avoid NAND startup problems + - LP: #1102417 + * ALSA: hda - Fix pin configuration of HP Pavilion dv7 + - LP: #1102417 + * ALSA: hda - Always turn on pins for HDMI/DP + - LP: #1102417 + * OMAP: board-files: fix i2c_bus for tfp410 + - LP: #1102417 + * i2400m: add Intel 6150 device IDs + - LP: #1102417 + * ALSA: hda - Fix the wrong pincaps set in ALC861VD dallas/hp fixup + - LP: #1102417 + * nfsd4: fix oops on unusual readlike compound + - LP: #1102417 + * qmi_wwan/cdc_ether: add Dell Wireless 5800 (Novatel E362) USB IDs + - LP: #1102417 + * ARM: missing ->mmap_sem around find_vma() in swp_emulate.c + - LP: #1102417 + * ARM: 7607/1: realview: fix private peripheral memory base for EB rev. B + boards + - LP: #1102417 + * cifs: don't compare uniqueids in cifs_prime_dcache unless server inode + numbers are in use + - LP: #1102417 + * intel-iommu: Free old page tables before creating superpage + - LP: #1102417 + * vfs: d_obtain_alias() needs to use "/" as default name. + - LP: #1102417 + * mm: fix calculation of dirtyable memory + - LP: #1102417 + * SGI-XP: handle non-fatal traps + - LP: #1102417 + * dm persistent data: rename node to btree_node + - LP: #1102417 + * dm ioctl: prevent unsafe change to dm_ioctl data_size + - LP: #1102417 + * sis900: fix sis900_set_mode call parameters. + - LP: #1102417 + * ne2000: add the right platform device + - LP: #1102417 + * irda: sir_dev: Fix copy/paste typo + - LP: #1102417 + * ipv4: ip_check_defrag must not modify skb before unsharing + - LP: #1102417 + * inet_diag: fix oops for IPv4 AF_INET6 TCP SYN-RECV state + - LP: #1102417 + * inet_diag: validate byte code to prevent oops in inet_diag_bc_run() + - LP: #1102417 + * inet_diag: avoid unsafe and nonsensical prefix matches in + inet_diag_bc_run() + - LP: #1102417 + * inet_diag: validate port comparison byte code to prevent unsafe reads + - LP: #1102417 + * usb/ipheth: Add iPhone 5 support + - LP: #1102417 + * bonding: fix race condition in bonding_store_slaves_active + - LP: #1102417 + * sctp: fix memory leak in sctp_datamsg_from_user() when copy from user + space fails + - LP: #1102417 + * sctp: fix -ENOMEM result with invalid user space pointer in sendto() + syscall + - LP: #1102417 + * udf: fix memory leak while allocating blocks during write + - LP: #1102417 + * udf: don't increment lenExtents while writing to a hole + - LP: #1102417 + * staging: vt6656: [BUG] out of bound array reference in RFbSetPower. + - LP: #1102417 + * staging: vt6656: 64 bit fixes: use u32 for QWORD definition. + - LP: #1102417 + * staging: vt6656: 64 bit fixes : correct all type sizes + - LP: #1102417 + * staging: vt6656: 64 bit fixes: fix long warning messages. + - LP: #1102417 + * staging: vt6656: 64bit fixes: key.c/h change unsigned long to u32 + - LP: #1102417 + * staging: vt6656: 64bit fixes: vCommandTimerWait change calculation of + timer. + - LP: #1102417 + * drm/i915: Flush outstanding unpin tasks before pageflipping + - LP: #1094173, #1102417 + * ext4: fix extent tree corruption caused by hole punch + - LP: #1102417 + * ext4: check dioread_nolock on remount + - LP: #1102417 + * drm/i915: fix flags in dma buf exporting + - LP: #1102417 + * jbd2: fix assertion failure in jbd2_journal_flush() + - LP: #1102417 + * drm/radeon: add WAIT_UNTIL to evergreen VM safe reg list + - LP: #1102417 + * hwmon: (lm73} Detect and report i2c bus errors + - LP: #1102417 + * ext4: do not try to write superblock on ro remount w/o journal + - LP: #1102417 + * PCI: Work around Stratus ftServer broken PCIe hierarchy (fix DMI check) + - LP: #1102417 + * PCI: Reduce Ricoh 0xe822 SD card reader base clock frequency to 50MHz + - LP: #1102417 + * mm: Fix PageHead when !CONFIG_PAGEFLAGS_EXTENDED + - LP: #1102417 + * tmpfs mempolicy: fix /proc/mounts corrupting memory + - LP: #1102417 + * epoll: prevent missed events on EPOLL_CTL_MOD + - LP: #1102417 + * drm/i915: add some barriers when changing DIPs + - LP: #1102417 + * drm/i915: make sure we write all the DIP data bytes + - LP: #1102417 + * RDMA/nes: Fix for terminate timer crash + - LP: #1102417 + * RDMA/nes: Fix for crash when registering zero length MR for CQ + - LP: #1102417 + * sparc: huge_ptep_set_* functions need to call set_huge_pte_at() + - LP: #1102417 + * batman-adv: fix random jitter calculation + - LP: #1102417 + * inet: Fix kmemleak in tcp_v4/6_syn_recv_sock and + dccp_v4/6_request_recv_sock + - LP: #1102417 + * net: sched: integer overflow fix + - LP: #1102417 + * tcp: fix MSG_SENDPAGE_NOTLAST logic + - LP: #1102417 + * tcp: implement RFC 5961 3.2 + - LP: #1102417 + * tcp: implement RFC 5961 4.2 + - LP: #1102417 + * tcp: refine SYN handling in tcp_validate_incoming + - LP: #1102417 + * tcp: tcp_replace_ts_recent() should not be called from + tcp_validate_incoming() + - LP: #1102417 + * tcp: RFC 5961 5.2 Blind Data Injection Attack Mitigation + - LP: #1102417 + * ACPI : do not use Lid and Sleep button for S5 wakeup + - LP: #1102417 + * aoe: do not call bdi_init after blk_alloc_queue + - LP: #1102417 + * Input: sentelic - only report position of first finger as ST + coordinates + - LP: #1102417 + * Input: gpio_keys - defer probing if GPIO probing is deferred + - LP: #1102417 + * cifs: adjust sequence number downward after signing NT_CANCEL request + - LP: #1102417 + * rtlwifi: fix incorrect use of usb_alloc_coherent with usb_control_msg + - LP: #1102417 + * p54usb: add USB ID for T-Com Sinus 154 data II + - LP: #1102417 + * ath9k_hw: Fix RX gain initvals for AR9485 + - LP: #1102417 + * p54usb: add USBIDs for two more p54usb devices + - LP: #1102417 + * powerpc/vdso: Remove redundant locking in update_vsyscall_tz() + - LP: #1102417 + * powerpc: Add missing NULL terminator to avoid boot panic on PPC40x + - LP: #1102417 + * drm/radeon: add connector table for Mac G4 Silver + - LP: #1102417 + * drm/radeon: Properly handle DDC probe for DP bridges + - LP: #1102417 + * drm/nouveau: fix init with agpgart-uninorth + - LP: #1102417 + * video: mxsfb: fix crash when unblanking the display + - LP: #1102417 + * nfs: fix null checking in nfs_get_option_str() + - LP: #1102417 + * SUNRPC: Ensure that we free the rpc_task after cleanups are done + - LP: #1102417 + * NFS: Ensure that we free the rpc_task after read and write cleanups are + done + - LP: #1102417 + * ACPI / scan: Do not use dummy HID for system bus ACPI nodes + - LP: #1102417 + * mm: limit mmu_gather batching to fix soft lockups on !CONFIG_PREEMPT + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: correct handling of CR_24H bitfield + - LP: #1102417 + * drivers/rtc/rtc-vt8500.c: fix handling of data passed in struct + rtc_time + - LP: #1102417 + * printk: fix incorrect length from print_time() when seconds > 99999 + - LP: #1102417 + * PM: Move disabling/enabling runtime PM to late suspend/early resume + - LP: #1102417 + * signals: sys_ssetmask() uses uninitialized newmask + - LP: #1102417 + * ext4: release buffer in failed path in dx_probe() + - LP: #1102417 + * ALSA: hda - add mute LED for HP Pavilion 17 (Realtek codec) + - LP: #1096789, #1102417 + * drm/prime: drop reference on imported dma-buf come from gem + - LP: #1102417 + * i915: ensure that VGA plane is disabled + - LP: #1102417 + * mvsas: Fix oops when ata commond timeout. + - LP: #1102417 + * staging: comedi: Kconfig: COMEDI_NI_AT_A2150 should select COMEDI_FC + - LP: #1102417 + * iscsi-target: Fix CmdSN comparison (use cmd->cmd_sn instead of + cmd->stat_sn) + - LP: #1102417 + * Linux 3.5.7.3 + - LP: #1102417 + * usb: gadget: dummy: fix enumeration with g_multi + - LP: #1106966 + * usb: musb: core: print new line in the driver banner again + - LP: #1106966 + * ASoC: pcm: allow backend hardware to be freed in pause state + - LP: #1106966 + * ASoC: wm2200: Fix setting dai format in wm2200_set_fmt + - LP: #1106966 + * mac80211: fix ibss scanning + - LP: #1106966 + * mac80211: use del_timer_sync for final sta cleanup timer deletion + - LP: #1106966 + * mac80211: fix dtim_period in hidden SSID AP association + - LP: #1106966 + * xhci: Handle HS bulk/ctrl endpoints that don't NAK. + - LP: #1106966 + * USB: Handle auto-transition from hot to warm reset. + - LP: #1106966 + * USB: Ignore xHCI Reset Device status. + - LP: #1106966 + * USB: Allow USB 3.0 ports to be disabled. + - LP: #1106966 + * USB: Increase reset timeout. + - LP: #1106966 + * USB: Ignore port state until reset completes. + - LP: #1106966 + * USB: Handle warm reset failure on empty port. + - LP: #1106966 + * xhci: Avoid "dead ports", add roothub port polling. + - LP: #1106966 + * ASoC: wm2200: Remove DSP B and left justified AIF modes + - LP: #1106966 + * ASoC: wm5100: Remove DSP B and left justified formats + - LP: #1106966 + * mwifiex: check wait_event_interruptible return value + - LP: #1106966 + * ASoC: wm2000: Fix sense of speech clarity enable + - LP: #1106966 + * drm/i915; Only increment the user-pin-count after successfully pinning + the bo + - LP: #1106966 + * samsung-laptop: Add quirk for broken acpi_video backlight on N250P + - LP: #1086921, #1106966 + * sony-laptop: fix SNC buffer calls when SN06 returns Integers + - LP: #1106966 + * staging: r8712u: Add new device ID + - LP: #1106966 + * b43: Fix firmware loading when driver is built into the kernel + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_init() + - LP: #1106966 + * staging: speakup: avoid out-of-range access in synth_add() + - LP: #1106966 + * staging: comedi: fix minimum AO period for NI 625x and NI 628x + - LP: #1106966 + * staging: comedi: prevent auto-unconfig of manually configured devices + - LP: #1106966 + * staging: comedi: comedi_test: fix race when cancelling command + - LP: #1106966 + * regulator: max8997: Use uV in voltage_map_desc + - LP: #1106966 + * regulator: max8998: Convert to regulator_list_voltage_linear() + - LP: #1106966 + * regulator: max8998: Convert to set_voltage_sel and + regulator_map_voltage_linear + - LP: #1106966 + * regulator: max8998: Use uV in voltage_map_desc + - LP: #1106966 + * ALSA: pxa27x: fix ac97 cold reset + - LP: #1106966 + * ALSA: pxa27x: fix ac97 warm reset + - LP: #1106966 + * SUNRPC: Ensure we release the socket write lock if the rpc_task exits + early + - LP: #1106966 + * target: use correct sense code for LUN communication failure + - LP: #1106966 + * regulator: max8998: Ensure enough delay time for + max8998_set_voltage_buck_time_sel + - LP: #1106966 + * tcm_fc: Do not indicate retry capability to initiators + - LP: #1106966 + * tcm_fc: Do not report target role when target is not defined + - LP: #1106966 + * target: Fix use-after-free in LUN RESET handling + - LP: #1106966 + * target: Release se_cmd when LUN lookup fails for TMR + - LP: #1106966 + * sh: Fix FDPIC binary loader + - LP: #1106966 + * USB: option: Add new MEDIATEK PID support + - LP: #1106966 + * USB: option: blacklist network interface on ZTE MF880 + - LP: #1106966 + * USB: option: add Telekom Speedstick LTE II + - LP: #1106966 + * USB: option: add Nexpring NP10T terminal id + - LP: #1106966 + * Add CDC-ACM support for the CX93010-2x UCMxx USB Modem + - LP: #1106966 + * USB: cdc-acm: Add support for "PSC Scanning, Magellan 800i" + - LP: #1106966 + * USB: hub: handle claim of enabled remote wakeup after reset + - LP: #1106966 + * mm: compaction: fix echo 1 > compact_memory return error issue + - LP: #1106966 + * mm: use aligned zone start for pfn_to_bitidx calculation + - LP: #1106966 + * mm: bootmem: fix free_all_bootmem_core() with odd bitmap alignment + - LP: #1106966 + * audit: create explicit AUDIT_SECCOMP event type + - LP: #1106966 + * USB: Add device quirk for Microsoft VX700 webcam + - LP: #1106966 + * drm/nouveau: fix blank LVDS screen regression on pre-nv50 cards + - LP: #1106966 + * drm/nv17-50: restore fence buffer on resume + - LP: #1106966 + * usb: ftdi_sio: Crucible Technologies COMET Caller ID - pid added + - LP: #1106966 + * udldrmfb: Fix EDID not working with monitors with EDID extension blocks + - LP: #1106966 + * udldrmfb: udl_get_edid: usb_control_msg buffer must not be on the stack + - LP: #1106966 + * udldrmfb: udl_get_edid: drop unneeded i-- + - LP: #1106966 + * s390/time: fix sched_clock() overflow + - LP: #1106966 + * rt2800usb: Add support for 2001:3c1e (D-Link DWA-125 rev B1) USB Wi-Fi + adapter + - LP: #1085351, #1106966 + * drm/radeon: fix NULL pointer dereference in UMS mode + - LP: #1106966 + * drm/radeon: fix a bogus kfree + - LP: #1106966 + * ALSA: usb - fix race in creation of M-Audio Fast track pro driver + - LP: #1095315, #1106966 + * x86/Sandy Bridge: reserve pages when integrated graphics is present + - LP: #1106966 + * USB: io_ti: Fix NULL dereference in chase_port() + - LP: #1106966 + * intel-iommu: Prevent devices with RMRRs from being placed into SI + Domain + - LP: #1106966 + * igb: release already assigned MSI-X interrupts if setup fails + - LP: #1106966 + * usb: chipidea: Allow disabling streaming not only in udc mode + - LP: #1106966 + * sd: Reshuffle init_sd to avoid crash + - LP: #1106966 + * Linux 3.5.7.4 + - LP: #1106966 + * HID: Add suport for the brightness control keys on HP keyboards + - LP: #1007575 + * efi: Make 'efi_enabled' a function to query EFI facilities + - LP: #1111689 + * samsung-laptop: Disable on EFI hardware + - LP: #1111689 + * inotify, fanotify: replace fsnotify_put_group() with + fsnotify_destroy_group() + - LP: #1110605 + * fsnotify: introduce fsnotify_get_group() + - LP: #1110605 + * fsnotify: use reference counting for groups + - LP: #1110605 + * fsnotify: take groups mark_lock before mark lock + - LP: #1110605 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1110605 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1110605 + * audit: clean up refcounting in audit-tree + - LP: #1110605 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1110605 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1110605 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1110605 + * fsnotify: change locking order + - LP: #1110605 + * drivers/mfd: Add realtek pcie card reader driver + - LP: #1057089 + * mfd: rtsx: Add output voltage switch hook + - LP: #1057089 + * mfd: rtsx: Fix oops when rtsx_pci_sdmmc is not probed + - LP: #1057089 + * mmc: Add realtek pcie sdmmc host driver + - LP: #1057089 + * mmc: rtsx: Remove a duplicate command in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Configure SD_CFG2 register in sd_rw_multi + - LP: #1057089 + * mmc: rtsx: Explicitely include slab.h in rtsx_pci_sdmmc.c + - LP: #1057089 + * mmc: rtsx: Call MFD hook to switch output voltage + - LP: #1057089 + * drivers/memstick: Add realtek pcie memstick host driver + - LP: #1057089 + + -- Luis Henriques Wed, 06 Feb 2013 10:41:09 +0000 + +linux (3.5.0-23.35) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1103932 + + [ Upstream Kernel Changes ] + + * Revert "fsnotify: change locking order" + - LP: #1101666 + * Revert "fsnotify: dont put marks on temporary list when clearing marks + by group" + - LP: #1101666 + * Revert "fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark()" + - LP: #1101666 + * Revert "fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1101666 + * Revert "fsnotify: use a mutex instead of a spinlock to protect a groups + mark list" + - LP: #1101666 + * Revert "fanotify: add an extra flag to mark_remove_from_mask that + indicates wheather a mark should be destroyed" + - LP: #1101666 + * Revert "fsnotify: take groups mark_lock before mark lock" + - LP: #1101666 + * Revert "fsnotify: use reference counting for groups" + - LP: #1101666 + * Revert "fsnotify: introduce fsnotify_get_group()" + - LP: #1101666 + * radeon/kms: force rn50 chip to always report connected on analog output + - LP: #1103320 + + -- Luis Henriques Thu, 24 Jan 2013 11:06:25 +0000 + +linux (3.5.0-22.34) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1097343 + + [ Chris J Arges ] + + * Revert "SAUCE: fsnotify: dont put marks on temporary list when clearing + marks by group" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce locked versions of + fsnotify_add_mark() and fsnotify_remove_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: pass group to fsnotify_destroy_mark()" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use a mutex instead of a spinlock to protect a + groups mark list" + - LP: #1096137 + * Revert "SAUCE: fanotify: add an extra flag to mark_remove_from_mask + that indicates wheather a mark should be destroyed" + - LP: #1096137 + * Revert "SAUCE: fsnotify: take groups mark_lock before mark lock" + - LP: #1096137 + * Revert "SAUCE: fsnotify: use reference counting for groups" + - LP: #1096137 + * Revert "SAUCE: fsnotify: introduce fsnotify_get_group()" + - LP: #1096137 + + [ Upstream Kernel Changes ] + + * fsnotify: introduce fsnotify_get_group() + - LP: #1096137 + * fsnotify: use reference counting for groups + - LP: #1096137 + * fsnotify: take groups mark_lock before mark lock + - LP: #1096137 + * fanotify: add an extra flag to mark_remove_from_mask that indicates + wheather a mark should be destroyed + - LP: #1096137 + * fsnotify: use a mutex instead of a spinlock to protect a groups mark + list + - LP: #1096137 + * fsnotify: pass group to fsnotify_destroy_mark() + - LP: #1096137 + * fsnotify: introduce locked versions of fsnotify_add_mark() and + fsnotify_remove_mark() + - LP: #1096137 + * fsnotify: dont put marks on temporary list when clearing marks by group + - LP: #1096137 + * fsnotify: change locking order + - LP: #1096137 + + -- Luis Henriques Tue, 08 Jan 2013 17:54:01 +0000 + +linux (3.5.0-22.33) quantal-proposed; urgency=low + + [Brad Figg] + + * Release Tracking Bug + - LP: #1095349 + + [ Chris J Arges ] + + * SAUCE: add eeprom_bad_csum_allow module parameter + - LP: #1070182 + + [ Colin Ian King ] + + * SAUCE: samsung-laptop: disable in UEFI mode + - LP: #1040557 + + [ Kees Cook ] + + * SAUCE: exec: do not leave bprm->interp on stack + - LP: #1068888 + - CVE-2012-4530 + + [ Leann Ogasawara ] + + * Add ceph to linux-image for virtual instances + - LP: #1063784 + + [ Lino Sanfilippo ] + + * 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 + + [ Tomas Hozza ] + + * SAUCE: tools: hv: Netlink source address validation allows DoS + - LP: #1084777 + - CVE-2012-5532 + + [ Upstream Kernel Changes ] + + * Revert "Staging: Android alarm: IOCTL command encoding fix" + - LP: #1091251 + * Revert "sched, autogroup: Stop going ahead if autogroup is disabled" + - LP: #1091251 + * Revert "serial: omap: fix software flow control" + - LP: #1091251 + * drm/i915: EBUSY status handling added to i915_gem_fault(). + - LP: #1087302 + * MISC: hpilo, remove pci_disable_device + - LP: #1087860 + * asix: Adds support for Lenovo 10/100 USB dongle. + - LP: #1087480 + * hpsa: gen8plus Smart Array IDs + - LP: #1089623 + * KVM: x86: invalid opcode oops on SET_SREGS with OSXSAVE bit set + (CVE-2012-4461) + - LP: #1089604 + - CVE-2012-4461 + * gpio-timberdale: fix a potential wrapping issue + - LP: #1091251 + * cfg80211: fix antenna gain handling + - LP: #1091251 + * drm/i915: fix overlay on i830M + - LP: #1091251 + * drm/i915: clear the entire sdvo infoframe buffer + - LP: #1091251 + * mac80211: use blacklist for duplicate IE check + - LP: #1091251 + * mac80211: Only process mesh config header on frames that RA_MATCH + - LP: #1091251 + * mac80211: don't inspect Sequence Control field on control frames + - LP: #1091251 + * gpiolib: Don't return -EPROBE_DEFER to sysfs, or for invalid gpios + - LP: #1091251 + * qla2xxx: Update target lookup session tables when a target session + changes + - LP: #1091251 + * mac80211: fix SSID copy on IBSS JOIN + - LP: #1091251 + * wireless: drop invalid mesh address extension frames + - LP: #1091251 + * mac80211: check management frame header length + - LP: #1091251 + * mac80211: verify that skb data is present + - LP: #1091251 + * mac80211: make sure data is accessible in EAPOL check + - LP: #1091251 + * target: Fix double-free of se_cmd in target_complete_tmr_failure + - LP: #1091251 + * ext4: fix unjournaled inode bitmap modification + - LP: #1091251 + * ath9k: fix stale pointers potentially causing access to free'd skbs + - LP: #1091251 + * floppy: don't call alloc_ordered_workqueue inside the alloc_disk loop + - LP: #1091251 + * floppy: do put_disk on current dr if blk_init_queue fails + - LP: #1091251 + * floppy: properly handle failure on add_disk loop + - LP: #1091251 + * ALSA: PCM: Fix some races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection + - LP: #1091251 + * ALSA: usb-audio: Use rwsem for disconnect protection + - LP: #1091251 + * ALSA: usb-audio: Fix races at disconnection in mixer_quirks.c + - LP: #1091251 + * ALSA: Add a reference counter to card instance + - LP: #1091251 + * ALSA: Avoid endless sleep after disconnect + - LP: #1091251 + * xen/gntdev: don't leak memory from IOCTL_GNTDEV_MAP_GRANT_REF + - LP: #1091251 + * rt2800: validate step value for temperature compensation + - LP: #1091251 + * ath9k: Test for TID only in BlockAcks while checking tx status + - LP: #1091251 + * md/raid1: Fix assembling of arrays containing Replacements. + - LP: #1091251 + * Input: tsc40 - remove wrong announcement of pressure support + - LP: #1091251 + * HID: microsoft: fix invalid rdesc for 3k kbd + - LP: #1091251 + * xen/mmu: Use Xen specific TLB flush instead of the generic one. + - LP: #1091251 + * NFS: Wait for session recovery to finish before returning + - LP: #1091251 + * NFSv4.1: We must release the sequence id when we fail to get a session + slot + - LP: #1091251 + * NFSv4: nfs4_locku_done must release the sequence id + - LP: #1091251 + * NFS: fix bug in legacy DNS resolver. + - LP: #1091251 + * nfsv3: Make v3 mounts fail with ETIMEDOUTs instead EIO on mountd + timeouts + - LP: #1091251 + * nfs: Show original device name verbatim in /proc/*/mount{s,info} + - LP: #1091251 + * target: Don't return success from module_init() if setup fails + - LP: #1091251 + * target: Avoid integer overflow in se_dev_align_max_sectors() + - LP: #1091251 + * iscsi-target: Fix missed wakeup race in TX thread + - LP: #1091251 + * target: Fix incorrect usage of nested IRQ spinlocks in ABORT_TASK path + - LP: #1091251 + * DRM/Radeon: Fix Load Detection on legacy primary DAC. + - LP: #1091251 + * ixgbe: PTP get_ts_info missing software support + - LP: #1091251 + * drm/udl: fix stride issues scanning out stride != width*bpp + - LP: #1091251 + * crypto: cryptd - disable softirqs in cryptd_queue_worker to prevent + data corruption + - LP: #1091251 + * module: fix out-by-one error in kallsyms + - LP: #1091251 + * cifs: fix potential buffer overrun in cifs.idmap handling code + - LP: #1091251 + * ptp: update adjfreq callback description + - LP: #1091251 + * ALSA: hda: Cirrus: Fix coefficient index for beep configuration + - LP: #1091251 + * ALSA: HDA: Fix digital microphone on CS420x + - LP: #1091251 + * ALSA: hda - Force to reset IEC958 status bits for AD codecs + - LP: #1091251, #359361 + * hwmon: (w83627ehf) Force initial bank selection + - LP: #1091251 + * drm: restore open_count if drm_setup fails + - LP: #1091251 + * ALSA: hda - Fix empty DAC filling in patch_via.c + - LP: #1091251 + * ALSA: hda - Fix invalid connections in VT1802 codec + - LP: #1091251 + * xen/events: fix RCU warning, or Call idle notifier after irq_enter() + - LP: #1091251 + * mmc: sdhci: fix NULL dereference in sdhci_request() tuning + - LP: #1091251 + * ALSA: hda - Improve HP depop when system enter to S3 + - LP: #1091251 + * ALSA: hda - Add new codec ALC668 and ALC900 (default name ALC1150) + - LP: #1091251 + * ALSA: Fix card refcount unbalance + - LP: #1091251 + * drm/radeon/cayman: add some missing regs to the VM reg checker + - LP: #1091251 + * drm/radeon/si: add some missing regs to the VM reg checker + - LP: #1091251 + * xfs: fix buffer shudown reference count mismatch + - LP: #1091251 + * xfs: fix reading of wrapped log data + - LP: #1091251 + * virtio: Don't access index after unregister. + - LP: #1091251 + * fanotify: fix missing break + - LP: #1091251 + * mm: bugfix: set current->reclaim_state to NULL while returning from + kswapd() + - LP: #1091251 + * drm/vmwgfx: Fix hibernation device reset + - LP: #1091251 + * drm/vmwgfx: Fix a case where the code would BUG when trying to pin GMR + memory + - LP: #1091251 + * UBIFS: introduce categorized lprops counter + - LP: #1091251 + * UBIFS: fix mounting problems after power cuts + - LP: #1091251 + * USB: usb_wwan: fix bulk-urb allocation + - LP: #1091251 + * ARM: dt: tegra: fix length of pad control and mux registers + - LP: #1091251 + * futex: Handle futex_pi OWNER_DIED take over correctly + - LP: #1091251 + * mac80211: sync acccess to tx_filtered/ps_tx_buf queues + - LP: #1091251 + * iwlwifi: handle DMA mapping failures + - LP: #1091251 + * ASoC: wm8978: pll incorrectly configured when codec is master + - LP: #1091251 + * ASoC: cs42l52: fix the return value of cs42l52_set_fmt() + - LP: #1091251 + * Bluetooth: Fix having bogus entries in mgmt_read_index_list reply + - LP: #1091251 + * mac80211: don't send null data packet when not associated + - LP: #1091251 + * ASoC: dapm: Use card_list during DAPM shutdown + - LP: #1091251 + * ASoC: core: Double control update err for snd_soc_put_volsw_sx + - LP: #1091251 + * mac80211: call skb_dequeue/ieee80211_free_txskb instead of + __skb_queue_purge + - LP: #1091251 + * ALSA: hda - Add a missing quirk entry for iMac 9,1 + - LP: #1091251 + * s390/signal: set correct address space control + - LP: #1091251 + * wireless: allow 40 MHz on world roaming channels 12/13 + - LP: #1091251 + * drm/i915/sdvo: clean up connectors on intel_sdvo_init() failures + - LP: #1091251 + * s390/gup: add missing TASK_SIZE check to get_user_pages_fast() + - LP: #1091251 + * USB: option: add Novatel E362 and Dell Wireless 5800 USB IDs + - LP: #1091251 + * USB: option: add Alcatel X220/X500D USB IDs + - LP: #1091251 + * i2c-mux-pinctrl: Fix probe error path + - LP: #1091251 + * ALSA: usb-audio: Fix mutex deadlock at disconnection + - LP: #1091251 + * drm/radeon: fix logic error in atombios_encoders.c + - LP: #1091251 + * ttm: Clear the ttm page allocated from high memory zone correctly + - LP: #1091251 + * ARM: imx: ehci: fix host power mask bit + - LP: #1091251 + * memcg: oom: fix totalpages calculation for memory.swappiness==0 + - LP: #1091251 + * memcg: fix hotplugged memory zone oops + - LP: #1091251 + * tmpfs: fix shmem_getpage_gfp() VM_BUG_ON + - LP: #1091251 + * tmpfs: change final i_blocks BUG to WARNING + - LP: #1091251 + * mtd: ofpart: Fix incorrect NULL check in parse_ofoldpart_partitions() + - LP: #1091251 + * mtd: slram: invalid checking of absolute end address + - LP: #1091251 + * jffs2: Fix lock acquisition order bug in jffs2_write_begin + - LP: #1091251 + * isci: copy fis 0x34 response into proper buffer + - LP: #1091251 + * mac80211: deinitialize ibss-internals after emptiness check + - LP: #1091251 + * iwlwifi: fix monitor mode FCS flag + - LP: #1091251 + * fix virtual aliasing issue in get_shared_area() + - LP: #1091251 + * rtlwifi: rtl8192cu: Add new USB ID + - LP: #1091251 + * mwifiex: fix system hang issue in cmd timeout error case + - LP: #1091251 + * mwifiex: report error to MMC core if we cannot suspend + - LP: #1091251 + * xfs: drop buffer io reference when a bad bio is built + - LP: #1091251 + * m68k: fix sigset_t accessor functions + - LP: #1091251 + * ALSA: ua101, usx2y: fix broken MIDI output + - LP: #1091251 + * sparc64: not any error from do_sigaltstack() should fail rt_sigreturn() + - LP: #1091251 + * reiserfs: Fix lock ordering during remount + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_on() with write lock + - LP: #1091251 + * reiserfs: Protect reiserfs_quota_write() with write lock + - LP: #1091251 + * reiserfs: Move quota calls out of write lock + - LP: #1091251 + * md: Reassigned the parameters if read_seqretry returned true in func + md_is_badblock. + - LP: #1091251 + * md: Avoid write invalid address if read_seqretry returned true. + - LP: #1091251 + * drm/radeon/dce4+: don't use radeon_crtc for vblank callback + - LP: #1091251 + * drm/radeon: properly handle mc_stop/mc_resume on evergreen+ (v2) + - LP: #1091251 + * drm/radeon: properly track the crtc not_enabled case + evergreen_mc_stop() + - LP: #1091251 + * radeon: add AGPMode 1 quirk for RV250 + - LP: #1091251 + * x86, efi: Fix processor-specific memcpy() build error + - LP: #1091251 + * x86-32: Fix invalid stack address while in softirq + - LP: #1091251 + * x86-32: Export kernel_stack_pointer() for modules + - LP: #1091251 + * x86, microcode, AMD: Add support for family 16h processors + - LP: #1091251 + * ALSA: hda - Add new codec ALC283 ALC290 support + - LP: #1091251 + * ALSA: hda - Add support for Realtek ALC292 + - LP: #1081466, #1091251 + * selinux: fix sel_netnode_insert() suspicious rcu dereference + - LP: #1091251 + * drm/radeon: add new SI pci id + - LP: #1091251 + * md/raid10: close race that lose writes lost when replacement completes. + - LP: #1091251 + * md/raid10: decrement correct pending counter when writing to + replacement. + - LP: #1091251 + * fix user-triggerable panic on parisc + - LP: #1091251 + * dm: fix deadlock with request based dm and queue request_fn recursion + - LP: #1091251 + * block: Don't access request after it might be freed + - LP: #1091251 + * PM / QoS: fix wrong error-checking condition + - LP: #1091251 + * i7300_edac: Fix error flag testing + - LP: #1091251 + * iwlwifi: fix the basic CCK rates calculation + - LP: #1091251 + * Dove: Attempt to fix PMU/RTC interrupts + - LP: #1091251 + * Dove: Fix irq_to_pmu() + - LP: #1091251 + * ARM: Kirkwood: Update PCI-E fixup + - LP: #1091251 + * jbd: Fix lock ordering bug in journal_unmap_buffer() + - LP: #1091251 + * can: peak_usb: fix hwtstamp assignment + - LP: #1091251 + * can: bcm: initialize ifindex for timeouts without previous frame + reception + - LP: #1091251 + * writeback: put unused inodes to LRU after writeback completion + - LP: #1091251 + * futex: avoid wake_futex() for a PI futex_q + - LP: #1091251 + * mm/vmemmap: fix wrong use of virt_to_page + - LP: #1091251 + * mm: vmscan: fix endless loop in kswapd balancing + - LP: #1091251 + * mm: soft offline: split thp at the beginning of soft_offline_page() + - LP: #1091251 + * x86, fpu: Avoid FPU lazy restore after suspend + - LP: #1091251 + * workqueue: exit rescuer_thread() as TASK_RUNNING + - LP: #1091251 + * Revert misapplied "mmc: sh-mmcif: avoid oops on spurious interrupts" + - LP: #1091251 + * mmc: sh-mmcif: avoid oops on spurious interrupts (second try) + - LP: #1091251 + * tmpfs: fix shared mempolicy leak + - LP: #1091251 + * HID: microsoft: do not use compound literal - fix build + - LP: #1091251 + * ACPI video: Ignore errors after _DOD evaluation. + - LP: #1091251 + * SUNRPC: Fix a UDP transport regression + - LP: #1091251 + * SUNRPC: Set alloc_slot for backchannel tcp ops + - LP: #1091251 + * sparc64: fix ptrace interaction with force_successful_syscall_return() + - LP: #1091251 + * sparc64: Like x86 we should check current->mm during perf backtrace + generation. + - LP: #1091251 + * sparc64: Fix bit twiddling in sparc_pmu_enable_event(). + - LP: #1091251 + * sparc64: do not clobber personality flags in sys_sparc64_personality() + - LP: #1091251 + * sparc64: Be less verbose during vmemmap population. + - LP: #1091251 + * netlink: add reference of module in netlink_dump_start + - LP: #1091251 + * infiniband: pass rdma_cm module to netlink_dump_start + - LP: #1091251 + * net: remove skb recycling + - LP: #1091251 + * net: Fix skb_under_panic oops in neigh_resolve_output + - LP: #1091251 + * skge: Add DMA mask quirk for Marvell 88E8001 on ASUS P5NSLI motherboard + - LP: #1091251 + * vlan: don't deliver frames for unknown vlans to protocols + - LP: #1091251 + * RDS: fix rds-ping spinlock recursion + - LP: #1091251 + * tcp: resets are misrouted + - LP: #1091251 + * ipv6: addrconf: fix /proc/net/if_inet6 + - LP: #1091251 + * drm/i915: Use cpu relocations if the object is in the GTT but not + mappable + - LP: #1091251 + * floppy: destroy floppy workqueue before cleaning up the queue + - LP: #1091251 + * drm/nouveau: silence modesetting spam on pre-gf8 chipsets + - LP: #1091251 + * drm/nouveau: fix suspend/resume when in headless mode + - LP: #1091251 + * drm/nouveau: headless mode by default if pci class != vga display + - LP: #1091251 + * sky2: Fix for interrupt handler + - LP: #1091251 + * batman-adv: Fix broadcast packet CRC calculation + - LP: #1091251 + * drm/radeon: fix typo in evergreen_mc_resume() + - LP: #1091251 + * GFS2: Test bufdata with buffer locked and gfs2_log_lock held + - LP: #1091251 + * USB: mos7840: remove unused variable + - LP: #1091251 + * sctp: fix call to SCTP_CMD_PROCESS_SACK in sctp_cmd_interpreter() + - LP: #1091251 + * netlink: use kfree_rcu() in netlink_release() + - LP: #1091251 + * tcp: fix FIONREAD/SIOCINQ + - LP: #1091251 + * ipv6: Set default hoplimit as zero. + - LP: #1091251 + * net: usb: Fix memory leak on Tx data path + - LP: #1091251 + * drivers/net/ethernet/nxp/lpc_eth.c: Call mdiobus_unregister before + mdiobus_free + - LP: #1091251 + * l2tp: fix oops in l2tp_eth_create() error path + - LP: #1091251 + * tcp-repair: Handle zero-length data put in rcv queue + - LP: #1091251 + * net: inet_diag -- Return error code if protocol handler is missed + - LP: #1091251 + * af-packet: fix oops when socket is not present + - LP: #1091251 + * ipv6: send unsolicited neighbour advertisements to all-nodes + - LP: #1091251 + * r8169: allow multicast packets on sub-8168f chipset. + - LP: #1091251 + * r8169: Fix WoL on RTL8168d/8111d. + - LP: #1091251 + * r8169: use unlimited DMA burst for TX + - LP: #1091251 + * netfilter: Mark SYN/ACK packets as invalid from original direction + - LP: #1091251 + * netfilter: Validate the sequence number of dataless ACK packets as well + - LP: #1091251 + * netfilter: nf_nat: don't check for port change on ICMP tuples + - LP: #1091251 + * ipv4: avoid undefined behavior in do_ip_setsockopt() + - LP: #1091251 + * ipv6: setsockopt(IPIPPROTO_IPV6, IPV6_MINHOPCOUNT) forgot to set return + value + - LP: #1091251 + * net: correct check in dev_addr_del() + - LP: #1091251 + * net-rps: Fix brokeness causing OOO packets + - LP: #1091251 + * tcp: fix retransmission in repair mode + - LP: #1091251 + * GFS2: Don't call file_accessed() with a shared glock + - LP: #1091251 + * get_dvb_firmware: fix download site for tda10046 firmware + - LP: #1091251 + * ixgbe: add support for X540-AT1 + - LP: #1091251 + * fimc-lite: Don't use mutex_lock_interruptible() in device release() + - LP: #1091251 + * NFC: pn533: Fix use after free + - LP: #1091251 + * NFC: pn533: Fix mem leak in pn533_in_dep_link_up + - LP: #1091251 + * HID: add quirk for Freescale i.MX28 ROM recovery + - LP: #1091251 + * NFC: Fix nfc_llcp_local chained list insertion + - LP: #1091251 + * bas_gigaset: fix pre_reset handling + - LP: #1091251 + * watchdog: using u64 in get_sample_period() + - LP: #1091251 + * sata_svw: check DMA start bit before reset + - LP: #1091251 + * bnx2x: remove redundant warning log + - LP: #1091251 + * x86, amd: Disable way access filter on Piledriver CPUs + - LP: #1091251 + * telephony: ijx: buffer overflow in ixj_write_cid() + - LP: #1091251 + * i915: Quirk no_lvds on Gigabyte GA-D525TUD ITX motherboard + - LP: #1091251 + * drm/i915: Add no-lvds quirk for Supermicro X7SPA-H + - LP: #1091251 + * ACPI: missing break + - LP: #1091251 + * 8139cp: revert "set ring address before enabling receiver" + - LP: #1091251 + * ASoC: dmaengine: Correct Makefile when sound is built as module + - LP: #1091251 + * i82975x_edac: Fix dimm label initialization + - LP: #1091251 + * drm/i915: do not ignore eDP bpc settings from vbt + - LP: #1091251 + * drm/i915: do not default to 18 bpp for eDP if missing from VBT + - LP: #1091251 + * Input: matrix-keymap - provide proper module license + - LP: #1091251 + * Linux 3.5.7.2 + - LP: #1091251 + * exec: use -ELOOP for max recursion depth + - LP: #1068888 + - CVE-2012-4530 + * ALSA: hda - bug fix for invalid connection list of Haswell HDMI codec + pins + - LP: #1095242 + + -- Brad Figg Wed, 02 Jan 2013 12:24:40 -0800 + +linux (3.5.0-21.32) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * Release Tracking Bug + - LP: #1088979 + * SAUCE: i915_hsw: move i915_hsw_enabled symbol to intel_ips + - LP: #1087622 + + -- Luis Henriques Tue, 11 Dec 2012 16:55:32 +0000 + +linux (3.5.0-20.31) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1086759 + + [ Ben Widawsky ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_WAIT_TIMEOUT + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_CONTEXT_[CREATE,DESTROY] + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: add register read IOCTL + - LP: #1085245 + * SAUCE: i915_hsw: Include #define i915_execbuffer2_[set,get]_context_id + - LP: #1085245 + + [ Chris Wilson ] + + * SAUCE: i915_hsw: Include #define I915_GEM_PARAM_HAS_SEMAPHORES + - LP: #1085245 + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_SECURE_BATCHES + - LP: #1085245 + + [ Daniel Vetter ] + + * SAUCE: i915_hsw: drm/i915: call intel_enable_gtt + - LP: #1085245 + * SAUCE: i915_hsw: drm: add helper to sort panels to the head of the + connector list + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link bw helpers + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract drm_dp_max_lane_count helper + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_channel_eq_ok + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract helpers to compute new training values + from sink request + - LP: #1085245 + * SAUCE: i915_hsw: drm: dp helper: extract drm_dp_clock_recovery_ok + - LP: #1085245 + + [ Dave Airlie ] + + * SAUCE: i915_hsw: Include #define I915_PARAM_HAS_PRIME_VMAP_FLUSH + - LP: #1085245 + + [ Leann Ogasawara ] + + * SAUCE: i915_hsw: Provide an ubuntu/i915 driver for Haswell graphics + - LP: #1085245 + * SAUCE: i915_hsw: Revert "drm: Make the .mode_fixup() operations mode + argument a const pointer" for ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Rename ubuntu/i915 driver i915_hsw + - LP: #1085245 + * SAUCE: i915_hsw: Only support Haswell with ubuntu/i915 driver + - LP: #1085245 + * SAUCE: i915_hsw: Include #define DRM_I915_GEM_WAIT + - LP: #1085245 + * SAUCE: i915_hsw: drm: extract dp link train delay functions from radeon + - LP: #1085245 + * SAUCE: i915_hsw: drm/dp: Update DPCD defines + - LP: #1085245 + * SAUCE: i915_hsw: Update intel_ips.h file location + - LP: #1085245 + * SAUCE: i915_hsw: Provide updated drm_mm.h and drm_mm.c for ubuntu/i915 + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Replace the array of pages with a + scatterlist + - LP: #1085245 + * SAUCE: i915_hsw: drm/i915: Stop using AGP layer for GEN6+ + - LP: #1085245 + * SAUCE: i915_hsw: Add i915_hsw_gpu_*() calls for ubuntu/i915 + - LP: #1085245 + * i915_hsw: [Config] Enable CONFIG_DRM_I915_HSW=m + - LP: #1085245 + + [ Paulo Zanoni ] + + * SAUCE: drm/i915: fix hsw_fdi_link_train "retry" code + - LP: #1085245 + * SAUCE: drm/i915: reject modes the LPT FDI receiver can't handle + - LP: #1085245 + * SAUCE: drm/i915: add support for mPHY destination on intel_sbi_{read, + write} + - LP: #1085245 + * SAUCE: drm/i915: add lpt_init_pch_refclk + - LP: #1085245 + * SAUCE: drm/i915: set the LPT FDI RX polarity reversal bit when needed + - LP: #1085245 + + [ Tim Gardner ] + + * Revert "SAUCE: SECCOMP: audit: always report seccomp violations" + - LP: #1079469 + + [ Upstream Kernel Changes ] + + * Revert "cgroup: Drop task_lock(parent) on cgroup_fork()" + - LP: #1084539 + * Revert "cgroup: Remove task_lock() from cgroup_post_fork()" + - LP: #1084539 + * Revert "x86/mm: Fix the size calculation of mapping tables" + - LP: #1084539 + * Revert "SUNRPC: Ensure we close the socket on EPIPE errors too..." + - LP: #1084539 + * Revert "ath9k_hw: Updated AR9003 tx gain table for 5GHz" + - LP: #1084539 + * Revert "sched: Add missing call to calc_load_exit_idle()" + - LP: #1084539 + * net: fix secpath kmemleak + - LP: #1065434 + * seccomp: forcing auditing of kill condition + - LP: #1079469 + * e1000e: add device IDs for i218 + - LP: #1081796 + * bonding: Bonding driver does not consider the gso_max_size/gso_max_segs + setting of slave devices. + - LP: #1078184 + * mm/hotplug: correctly add new zone to all other nodes' zone lists + - LP: #1079860 + - CVE-2012-5517 + * xen: enable platform-pci only in a Xen guest + - LP: #1081054 + * udf: fix retun value on error path in udf_load_logicalvol + - LP: #1084539 + * usb: gadget: at91_udc: fix dt support + - LP: #1084539 + * netfilter: nf_nat_sip: fix incorrect handling of EBUSY for RTCP + expectation + - LP: #1084539 + * netfilter: nf_nat_sip: fix via header translation with multiple + parameters + - LP: #1084539 + * netfilter: nf_ct_expect: fix possible access to uninitialized timer + - LP: #1084539 + * netfilter: xt_limit: have r->cost != 0 case work + - LP: #1084539 + * netfilter: nf_conntrack: fix racy timer handling with reliable events + - LP: #1084539 + * netfilter: nfnetlink_log: fix NLA_PUT macro removal bug + - LP: #1084539 + * MIPS: ath79: Fix CPU/DDR frequency calculation for SRIF PLLs + - LP: #1084539 + * jbd: Fix assertion failure in commit code due to lacking transaction + credits + - LP: #1084539 + * nfsd4: fix nfs4 stateid leak + - LP: #1084539 + * NFSD: pass null terminated buf to kstrtouint() + - LP: #1084539 + * mfd: 88pm860x: Move _IO resources out of ioport_ioresource + - LP: #1084539 + * target: support zero allocation length in INQUIRY + - LP: #1084539 + * target: fix truncation of mode data, support zero allocation length + - LP: #1084539 + * target: fix return code in target_core_init_configfs error path + - LP: #1084539 + * powerpc/eeh: Lock module while handling EEH event + - LP: #1084539 + * SUNRPC: Ensure that the TCP socket is closed when in CLOSE_WAIT + - LP: #1084539 + * ext4: remove erroneous ext4_superblock_csum_set() in update_backups() + - LP: #1084539 + * block: remove the duplicated setting for congestion_threshold + - LP: #1084539 + * block: lift the initial queue bypass mode on blk_register_queue() + instead of blk_init_allocated_queue() + - LP: #1084539 + * block: fix request_queue->flags initialization + - LP: #1084539 + * viafb: don't touch clock state on OLPC XO-1.5 + - LP: #1084539 + * qla2xxx: Fix endianness of task management response code + - LP: #1084539 + * iscsi-target: Correctly set 0xffffffff field within ISCSI_OP_REJECT PDU + - LP: #1084539 + * drm/i915: use adjusted_mode instead of mode for checking the 6bpc force + flag + - LP: #1084539 + * kbuild: Do not package /boot and /lib in make tar-pkg + - LP: #1084539 + * module: taint kernel when lve module is loaded + - LP: #1084539 + * mtd: nand: allow NAND_NO_SUBPAGE_WRITE to be set from driver + - LP: #1084539 + * nfsd4: don't pin clientids to pseudoflavors + - LP: #1084539 + * lockd: use rpc client's cl_nodename for id encoding + - LP: #1084539 + * pnfsblock: fix partial page buffer wirte + - LP: #1084539 + * pnfsblock: fix non-aligned DIO read + - LP: #1084539 + * pnfsblock: fix non-aligned DIO write + - LP: #1084539 + * target/file: Re-enable optional fd_buffered_io=1 operation + - LP: #1084539 + * iscsi-target: Add explicit set of cache_dynamic_acls=1 for TPG + demo-mode + - LP: #1084539 + * iscsit: remove incorrect unlock in iscsit_build_sendtargets_resp + - LP: #1084539 + * iscsi-target: Bump defaults for nopin_timeout + nopin_response_timeout + values + - LP: #1084539 + * drivers/dma/dmaengine.c: lower the priority of 'failed to get' dma + channel message + - LP: #1084539 + * ath9k: use ieee80211_free_txskb + - LP: #1084539 + * ALSA: hda - Fix hang caused by race during suspend. + - LP: #1084539 + * ACPI: EC: Make the GPE storm threshold a module parameter + - LP: #1084539 + * ACPI: EC: Add a quirk for CLEVO M720T/M730T laptop + - LP: #1084539 + * mmc: sdhci-s3c: fix the wrong number of max bus clocks + - LP: #1084539 + * mac80211: use ieee80211_free_txskb to fix possible skb leaks + - LP: #1084539 + * ARM: OMAP: counter: add locking to read_persistent_clock + - LP: #1084539 + * ARM: vfp: fix saving d16-d31 vfp registers on v6+ kernels + - LP: #1084539 + * scsi_debug: Fix off-by-one bug when unmapping region + - LP: #1084539 + * storvsc: Account for in-transit packets in the RESET path + - LP: #1084539 + * firewire: cdev: fix user memory corruption (i386 userland on amd64 + kernel) + - LP: #1084539 + * timers: Fix endless looping between cascade() and internal_add_timer() + - LP: #1084539 + * timekeeping: Cast raw_interval to u64 to avoid shift overflow + - LP: #1084539 + * video/udlfb: fix line counting in fb_write + - LP: #1084539 + * tmpfs,ceph,gfs2,isofs,reiserfs,xfs: fix fh_len checking + - LP: #1084539 + * ALSA: hda - Add missing hda_gen_spec to struct via_spec + - LP: #1084539 + * ALSA: hda - Fix memory leaks at error path in patch_cirrus.c + - LP: #1084539 + * autofs4 - fix reset pending flag on mount fail + - LP: #1084539 + * pktgen: fix crash when generating IPv6 packets + - LP: #1084539 + * md/raid10: use correct limit variable + - LP: #1084539 + * mips,kgdb: fix recursive page fault with CONFIG_KPROBES + - LP: #1084539 + * kdb,vt_console: Fix missed data due to pager overruns + - LP: #1084539 + * xen/bootup: allow read_tscp call for Xen PV guests. + - LP: #1084539 + * xen/bootup: allow {read|write}_cr8 pvops call. + - LP: #1084539 + * libceph: eliminate connection state "DEAD" + - LP: #1084539 + * libceph: kill bad_proto ceph connection op + - LP: #1084539 + * libceph: rename socket callbacks + - LP: #1084539 + * libceph: rename kvec_reset and kvec_add functions + - LP: #1084539 + * libceph: embed ceph messenger structure in ceph_client + - LP: #1084539 + * libceph: start separating connection flags from state + - LP: #1084539 + * libceph: start tracking connection socket state + - LP: #1084539 + * libceph: provide osd number when creating osd + - LP: #1084539 + * libceph: set CLOSED state bit in con_init + - LP: #1084539 + * libceph: embed ceph connection structure in mon_client + - LP: #1084539 + * libceph: drop connection refcounting for mon_client + - LP: #1084539 + * libceph: init monitor connection when opening + - LP: #1084539 + * libceph: fully initialize connection in con_init() + - LP: #1084539 + * libceph: tweak ceph_alloc_msg() + - LP: #1084539 + * libceph: have messages point to their connection + - LP: #1084539 + * libceph: have messages take a connection reference + - LP: #1084539 + * libceph: make ceph_con_revoke() a msg operation + - LP: #1084539 + * libceph: make ceph_con_revoke_message() a msg op + - LP: #1084539 + * libceph: fix overflow in __decode_pool_names() + - LP: #1084539 + * libceph: fix overflow in osdmap_decode() + - LP: #1084539 + * libceph: fix overflow in osdmap_apply_incremental() + - LP: #1084539 + * libceph: transition socket state prior to actual connect + - LP: #1084539 + * libceph: fix NULL dereference in reset_connection() + - LP: #1084539 + * libceph: use con get/put methods + - LP: #1084539 + * libceph: drop ceph_con_get/put helpers and nref member + - LP: #1084539 + * libceph: encapsulate out message data setup + - LP: #1084539 + * libceph: encapsulate advancing msg page + - LP: #1084539 + * libceph: don't mark footer complete before it is + - LP: #1084539 + * libceph: move init_bio_*() functions up + - LP: #1084539 + * libceph: move init of bio_iter + - LP: #1084539 + * libceph: don't use bio_iter as a flag + - LP: #1084539 + * libceph: SOCK_CLOSED is a flag, not a state + - LP: #1084539 + * libceph: don't change socket state on sock event + - LP: #1084539 + * libceph: just set SOCK_CLOSED when state changes + - LP: #1084539 + * libceph: don't touch con state in con_close_socket() + - LP: #1084539 + * libceph: clear CONNECTING in ceph_con_close() + - LP: #1084539 + * libceph: clear NEGOTIATING when done + - LP: #1084539 + * libceph: define and use an explicit CONNECTED state + - LP: #1084539 + * libceph: separate banner and connect writes + - LP: #1084539 + * libceph: distinguish two phases of connect sequence + - LP: #1084539 + * libceph: small changes to messenger.c + - LP: #1084539 + * libceph: add some fine ASCII art + - LP: #1084539 + * libceph: set peer name on con_open, not init + - LP: #1084539 + * libceph: initialize mon_client con only once + - LP: #1084539 + * libceph: allow sock transition from CONNECTING to CLOSED + - LP: #1084539 + * libceph: initialize msgpool message types + - LP: #1084539 + * libceph: prevent the race of incoming work during teardown + - LP: #1084539 + * libceph: report socket read/write error message + - LP: #1084539 + * libceph: fix mutex coverage for ceph_con_close + - LP: #1084539 + * libceph: resubmit linger ops when pg mapping changes + - LP: #1084539 + * libceph: (re)initialize bio_iter on start of message receive + - LP: #1084539 + * libceph: protect ceph_con_open() with mutex + - LP: #1084539 + * libceph: reset connection retry on successfully negotiation + - LP: #1084539 + * libceph: fix fault locking; close socket on lossy fault + - LP: #1084539 + * libceph: move msgr clear_standby under con mutex protection + - LP: #1084539 + * libceph: move ceph_con_send() closed check under the con mutex + - LP: #1084539 + * libceph: drop gratuitous socket close calls in con_work + - LP: #1084539 + * libceph: close socket directly from ceph_con_close() + - LP: #1084539 + * libceph: drop unnecessary CLOSED check in socket state change callback + - LP: #1084539 + * libceph: replace connection state bits with states + - LP: #1084539 + * libceph: clean up con flags + - LP: #1084539 + * libceph: clear all flags on con_close + - LP: #1084539 + * libceph: fix handling of immediate socket connect failure + - LP: #1084539 + * libceph: revoke mon_client messages on session restart + - LP: #1084539 + * libceph: verify state after retaking con lock after dispatch + - LP: #1084539 + * libceph: avoid dropping con mutex before fault + - LP: #1084539 + * libceph: change ceph_con_in_msg_alloc convention to be less weird + - LP: #1084539 + * libceph: recheck con state after allocating incoming message + - LP: #1084539 + * libceph: fix crypto key null deref, memory leak + - LP: #1084539 + * libceph: delay debugfs initialization until we learn global_id + - LP: #1084539 + * libceph: avoid truncation due to racing banners + - LP: #1084539 + * libceph: only kunmap kmapped pages + - LP: #1084539 + * rbd: reset BACKOFF if unable to re-queue + - LP: #1084539 + * libceph: avoid NULL kref_put when osd reset races with alloc_msg + - LP: #1084539 + * ceph: fix dentry reference leak in encode_fh() + - LP: #1084539 + * ceph: Fix oops when handling mdsmap that decreases max_mds + - LP: #1084539 + * libceph: check for invalid mapping + - LP: #1084539 + * ceph: avoid 32-bit page index overflow + - LP: #1084539 + * ASoC: wm2200: Use rev A register patches on rev B + - LP: #1084539 + * ASoC: wm2200: Fix non-inverted OUT2 mute control + - LP: #1084539 + * drm/i915: remove useless BUG_ON which caused a regression in 3.5. + - LP: #1084539 + * USB: Enable LPM after a failed probe. + - LP: #1084539 + * usb: Don't enable LPM if the exit latency is zero. + - LP: #1084539 + * usb: Send Set SEL before enabling parent U1/U2 timeout. + - LP: #1084539 + * ASoC: fsi: don't reschedule DMA from an atomic context + - LP: #1084539 + * drm/i915: Set guardband clipping workaround bit in the right register. + - LP: #1084539 + * pcmcia: sharpsl: don't discard sharpsl_pcmcia_ops + - LP: #1084539 + * hwmon: (coretemp) Add support for Atom CE4110/4150/4170 + - LP: #1084539 + * ALSA: hda - Fix registration race of VGA switcheroo + - LP: #1084539 + * usb: dwc3: gadget: fix 'endpoint always busy' bug + - LP: #1084539 + * usb: musb: am35xx: drop spurious unplugging a device + - LP: #1084539 + * drm/radeon: Don't destroy I2C Bus Rec in radeon_ext_tmds_enc_destroy(). + - LP: #1084539 + * ALSA: hda - Always check array bounds in alc_get_line_out_pfx + - LP: #1084539 + * NLM: nlm_lookup_file() may return NLMv4-specific error codes + - LP: #1084539 + * x86: Exclude E820_RESERVED regions and memory holes above 4 GB from + direct mapping. + - LP: #1084539 + * SUNRPC: Prevent kernel stack corruption on long values of flush + - LP: #1084539 + * USB: cdc-acm: fix pipe type of write endpoint + - LP: #1084539 + * usb: acm: fix the computation of the number of data bits + - LP: #1084539 + * usb: host: xhci: New system added for Compliance Mode Patch on + SN65LVPE502CP + - LP: #1084539 + * USB: option: blacklist net interface on ZTE devices + - LP: #1084539 + * USB: option: add more ZTE devices + - LP: #1084539 + * ext4: race-condition protection for + ext4_convert_unwritten_extents_endio + - LP: #1084539 + * ext4: fix metadata checksum calculation for the superblock + - LP: #1084539 + * nohz: Fix idle ticks in cpu summary line of /proc/stat + - LP: #1084539 + * ring-buffer: Check for uninitialized cpu buffer before resizing + - LP: #1084539 + * Bluetooth: SMP: Fix setting unknown auth_req bits + - LP: #1084539 + * oprofile, x86: Fix wrapping bug in op_x86_get_ctrl() + - LP: #1084539 + * cfg80211/mac80211: avoid state mishmash on deauth + - LP: #1084539 + * mac80211: check if key has TKIP type before updating IV + - LP: #1084539 + * mac80211: use ieee80211_free_txskb in a few more places + - LP: #1084539 + * bcma: fix unregistration of cores + - LP: #1084539 + * net/wireless: ipw2200: Fix panic occurring in + ipw_handle_promiscuous_tx() + - LP: #1084539 + * iwlwifi: fix 6000 series channel switch command + - LP: #1084539 + * cgroup: notify_on_release may not be triggered in some cases + - LP: #1084539 + * dt: Document: correct tegra20/30 pinctrl slew-rate name + - LP: #1084539 + * pinctrl: tegra: set low power mode bank width to 2 + - LP: #1084539 + * pinctrl: tegra: correct bank for pingroup and drv pingroup + - LP: #1084539 + * s390: fix linker script for 31 bit builds + - LP: #1084539 + * pinctrl: remove mutex lock in groups show + - LP: #1084539 + * xen/x86: don't corrupt %eip when returning from a signal handler + - LP: #1084539 + * ALSA: hda - Fix silent headphone output from Toshiba P200 + - LP: #1084539 + * ext4: Checksum the block bitmap properly with bigalloc enabled + - LP: #1084539 + * ARM: 7559/1: smp: switch away from the idmap before updating + init_mm.mm_count + - LP: #1084539 + * usb hub: send clear_tt_buffer_complete events when canceling TT clear + work + - LP: #1084539 + * staging: comedi: amplc_pc236: fix invalid register access during detach + - LP: #1084539 + * Staging: android: binder: Fix memory leak on thread/process exit + - LP: #1084539 + * Staging: android: binder: Allow using highmem for binder buffers + - LP: #1084539 + * ext4: Avoid underflow in ext4_trim_fs() + - LP: #1084539 + * cpufreq / powernow-k8: Remove usage of smp_processor_id() in + preemptible code + - LP: #1084539 + * extcon: Unregister compat class at module unload to fix oops + - LP: #1084539 + * extcon: unregister compat link on cleanup + - LP: #1084539 + * pinctrl: fix missing unlock on error in pinctrl_groups_show() + - LP: #1084539 + * arch/tile: avoid generating .eh_frame information in modules + - LP: #1084539 + * drm/radeon: add some new SI PCI ids + - LP: #1084539 + * drm/radeon: add error output if VM CS fails on cayman + - LP: #1084539 + * xhci: endianness xhci_calculate_intel_u2_timeout + - LP: #1084539 + * xhci: fix integer overflow + - LP: #1084539 + * dmaengine: imx-dma: fix missing unlock on error in imxdma_xfer_desc() + - LP: #1084539 + * x86-64: Fix page table accounting + - LP: #1084539 + * dmaengine: sirf: fix a typo in dma_prep_interleaved + - LP: #1084539 + * dmaengine: sirf: fix a typo in moving running dma_desc to active queue + - LP: #1084539 + * amd64_edac:__amd64_set_scrub_rate(): avoid overindexing scrubrates[] + - LP: #1084539 + * SUNRPC: Clear the connect flag when socket state is TCP_CLOSE_WAIT + - LP: #1084539 + * SUNRPC: Prevent races in xs_abort_connection() + - LP: #1084539 + * SUNRPC: Get rid of the xs_error_report socket callback + - LP: #1084539 + * iommu/tegra: smmu: Fix deadly typo + - LP: #1084539 + * ARM: at91/tc: fix typo in the DT document + - LP: #1084539 + * ARM: at91: at91sam9g10: fix SOC type detection + - LP: #1084539 + * ARM: at91/i2c: change id to let i2c-gpio work + - LP: #1084539 + * b43: Fix oops on unload when firmware not found + - LP: #1084539 + * USB: serial: Fix memory leak in sierra_release() + - LP: #1084539 + * x86, mm: Trim memory in memblock to be page aligned + - LP: #1084539 + * x86, mm: Use memblock memory loop instead of e820_RAM + - LP: #1084539 + * usb-storage: add unusual_devs entry for Casio EX-N1 digital camera + - LP: #1084539 + * Drivers: hv: Cleanup error handling in vmbus_open() + - LP: #1084539 + * sysfs: sysfs_pathname/sysfs_add_one: Use strlcat() instead of strcat() + - LP: #1084539 + * vhost: fix mergeable bufs on BE hosts + - LP: #1084539 + * USB: metro-usb: fix io after disconnect + - LP: #1084539 + * USB: whiteheat: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix memory leak in error path + - LP: #1084539 + * USB: quatech2: fix io after disconnect + - LP: #1084539 + * USB: opticon: fix DMA from stack + - LP: #1084539 + * USB: opticon: fix memory leak in error path + - LP: #1084539 + * USB: mct_u232: fix broken close + - LP: #1084539 + * USB: sierra: fix memory leak in attach error path + - LP: #1084539 + * USB: sierra: fix memory leak in probe error path + - LP: #1084539 + * USB: mos7840: fix urb leak at release + - LP: #1084539 + * USB: mos7840: fix port-device leak in error path + - LP: #1084539 + * USB: mos7840: remove NULL-urb submission + - LP: #1084539 + * USB: mos7840: remove invalid disconnect handling + - LP: #1084539 + * ehci: fix Lucid nohandoff pci quirk to be more generic with BIOS + versions + - LP: #1084539 + * ehci: Add yet-another Lucid nohandoff pci quirk + - LP: #1084539 + * xhci: Fix potential NULL ptr deref in command cancellation. + - LP: #1084539 + * freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD + - LP: #1084539 + * mm: fix XFS oops due to dirty pages without buffers on s390 + - LP: #1084539 + * genalloc: stop crashing the system when destroying a pool + - LP: #1084539 + * drivers/rtc/rtc-imxdi.c: add missing spin lock initialization + - LP: #1084539 + * gen_init_cpio: avoid stack overflow when expanding + - LP: #1084539 + * fs/compat_ioctl.c: VIDEO_SET_SPU_PALETTE missing error check + - LP: #1084539 + * qmi_wwan/cdc_ether: move Novatel 551 and E362 to qmi_wwan + - LP: #1084539 + * efi: Defer freeing boot services memory until after ACPI init + - LP: #1084539 + * x86: efi: Turn off efi_enabled after setup on mixed fw/kernel + - LP: #1082059, #1084539 + * target: Re-add explict zeroing of INQUIRY bounce buffer memory + - LP: #1084539 + * ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and + CONFIG_VFPv3 set + - LP: #1084539 + * libceph: drop declaration of ceph_con_get() + - LP: #1084539 + * x86, mm: Find_early_table_space based on ranges that are actually being + mapped + - LP: #1084539 + * x86, mm: Undo incorrect revert in arch/x86/mm/init.c + - LP: #1084539 + * Linux 3.5.7.1 + - LP: #1084539 + * ALSA: hda - Cirrus: Correctly clear line_out_pins when moving to + speaker + - LP: #1076840 + * Bluetooth: ath3k: Add support for VAIO VPCEH [0489:e027] + - LP: #898826 + * i915_hsw: drm/i915: Reserve ioctl numbers for set/get_caching + - LP: #1085245 + * i915_hsw: drm: Export drm_probe_ddc() + - LP: #1085245 + * i915_hsw: drm: remove the raw_edid field from struct drm_display_info + - LP: #1085245 + * i915_hsw: drm/i915: fix hsw uncached pte + - LP: #1085245 + * i915_hsw: drm/fb-helper: delay hotplug handling when partially bound + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_crtc_helper_set_config + - LP: #1085245 + * i915_hsw: drm/fb-helper: don't clobber output routing in setup_crtcs + - LP: #1085245 + * i915_hsw: drm/fb helper: don't call drm_helper_connector_dpms directly + - LP: #1085245 + * i915_hsw: drm/edid: Fix potential memory leak in edid_load() + - LP: #1085245 + + -- Luis Henriques Wed, 05 Dec 2012 11:53:06 +0000 + +linux (3.5.0-19.30) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1078041 + + [ Andy Whitcroft ] + + * [Config] update Vcs-git: to point to quantal + - LP: #1069204 + + [ Joseph Salisbury ] + + * SAUCE: ALSA: hda - add quirk for Thinkpad T430 + - LP: #1060372 + + [ Tim Gardner ] + + * [Config] CONFIG_USB_OTG=n for all but armel/armhf + - LP: #1047527 + * [Config] remove ndiswrapper from Provides: + - LP: #1076395 + * [Config] ONFIG_AMD_IOMMU_V2=m + - LP: #1071520 + + [ Upstream Kernel Changes ] + + * kernel/sys.c: fix stack memory content leak via UNAME26 + - LP: #1065622, #1060521 + - CVE-2012-0957 + * use clamp_t in UNAME26 fix + - LP: #1065622, #1060521 + - CVE-2012-0957 + * net: fix divide by zero in tcp algorithm illinois + - LP: #1077091 + - CVE-2012-4565 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Add a load_firmware callback to struct hci_dev + - LP: #1065400 + * SAUCE: Bluetooth: Implement broadcom patchram firmware loader + - LP: #1065400 + * SAUCE: Bluetooth: Add support for 13d3:3388 and 13d3:3389 + - LP: #1065400 + + -- Luis Henriques Tue, 13 Nov 2012 15:49:15 +0000 + +linux (3.5.0-18.29) quantal-proposed; urgency=low + + [Luis Henriques] + + * Release Tracking Bug + - LP: #1068224 + + [ Andy Whitcroft ] + + * [packaging] do not fail secure copy on older kernels + * SAUCE: efivarfs: efivarfs_file_read ensure we free data in error paths + - LP: #1063061 + * SAUCE: efivars: efivarfs_create() ensure we drop our reference on inode + on error + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() fix inode reference counts + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we free our temporary + name + - LP: #1063061 + * SAUCE: efivarfs: efivarfs_fill_super() ensure we clean up correctly on + error + - LP: #1063061 + * [Config] add fs/udf to linux-image to support DVD/CD formats in virtual + instances + - LP: #1066921 + + [ Jeremy Kerr ] + + * SAUCE: efi: Handle deletions and size changes in efivarfs_write_file + - LP: #1063061 + * SAUCE: efivarfs: Implement exclusive access for {get, set}_variable + - LP: #1063061 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad list additional contributors + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix lost sync upon palm contact + - LP: #1048258 + * SAUCE: input: Cypress PS/2 Trackpad fix taps turning into hardware + clicks + - LP: #1064086 + + [ Leann Ogasawara ] + + * Revert "SAUCE: ext4: fix crash when accessing /proc/mounts + concurrently" + - LP: #1066176 + * Revert "SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec" + - LP: #1066176 + + [ Lee, Chun-Yi ] + + * SAUCE: efi: add efivars kobject to efi sysfs folder + - LP: #1063061 + + [ Matt Fleming ] + + * SAUCE: efivarfs: Add documentation for the EFI variable filesystem + - LP: #1063061 + + [ Matthew Garrett ] + + * SAUCE: efi: Add support for a UEFI variable filesystem + - LP: #1063061 + + [ Sarveshwar Bandi ] + + * SAUCE: bridge: Pull ip header into skb->data before looking into ip + header. + - LP: #1065150 + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: correctly order the ring init sequence" + - LP: #1066176 + * vfs: dcache: fix deadlock in tree traversal + - LP: #1063761 + * dm mpath: only retry ioctl when no paths if queue_if_no_path set + - LP: #1063761 + * dm: handle requests beyond end of device instead of using BUG_ON + - LP: #1063761 + * dm table: clear add_random unless all devices have it set + - LP: #1063761 + * dm verity: fix overflow check + - LP: #1063761 + * usb: gadget: make g_printer enumerate again + - LP: #1063761 + * usb: gadget: initialize the strings in tcm_usb_gadget properly + - LP: #1063761 + * USB: option: blacklist QMI interface on ZTE MF683 + - LP: #1063761 + * USB: ftdi_sio: add TIAO USB Multi-Protocol Adapter (TUMPA) support + - LP: #1063761 + * USB: qcaux: add Pantech vendor class match + - LP: #1063761 + * usb: host: xhci: Fix Null pointer dereferencing with 71c731a for + non-x86 systems + - LP: #1063761 + * USB: serial: fix up bug with missing {} + - LP: #1063761 + * staging: speakup_soft: Fix reading of init string + - LP: #1063761 + * tty: keyboard.c: Remove locking from vt_get_leds. + - LP: #1063761 + * staging: r8712u: Do not queue cloned skb + - LP: #1063761 + * staging: comedi: s626: don't dereference insn->data + - LP: #1063761 + * staging: comedi: jr3_pci: fix iomem dereference + - LP: #1063761 + * staging: comedi: don't dereference user memory for INSN_INTTRIG + - LP: #1063761 + * staging: comedi: fix memory leak for saved channel list + - LP: #1063761 + * Remove BUG_ON from n_tty_read() + - LP: #1063761 + * TTY: ttyprintk, don't touch behind tty->write_buf + - LP: #1063761 + * serial: omap: fix software flow control + - LP: #1063761 + * serial: pl011: handle corruption at high clock speeds + - LP: #1063761 + * serial: set correct baud_base for EXSYS EX-41092 Dual 16950 + - LP: #1063761 + * tools/hv: Fix file handle leak + - LP: #1063761 + * tools/hv: Fix exit() error code + - LP: #1063761 + * tools/hv: Check for read/write errors + - LP: #1063761 + * b43legacy: Fix crash on unload when firmware not available + - LP: #1063761 + * firmware: Add missing attributes to EFI variable attribute print out + from sysfs + - LP: #1063761 + * xhci: Intel Panther Point BEI quirk. + - LP: #1063761 + * xHCI: add cmd_ring_state + - LP: #1063761 + * xHCI: add aborting command ring function + - LP: #1063761 + * xHCI: cancel command after command timeout + - LP: #1063761 + * xHCI: handle command after aborting the command ring + - LP: #1063761 + * Increase XHCI suspend timeout to 16ms + - LP: #1063761 + * HID: keep dev_rdesc unmodified and use it for comparisons + - LP: #1049623, #1063761 + * ath9k: Disable ASPM only for AR9285 + - LP: #1063761 + * xen/pciback: Restore the PCI config space after an FLR. + - LP: #1063761 + * coredump: prevent double-free on an error path in core dumper + - LP: #1063761 + * n_gsm.c: Implement 3GPP27.010 DLC start-up procedure in MUX + - LP: #1063761 + * n_gsm: uplink SKBs accumulate on list + - LP: #1063761 + * n_gsm: added interlocking for gsm_data_lock for certain code paths + - LP: #1063761 + * n_gsm: memory leak in uplink error path + - LP: #1063761 + * UBI: fix autoresize handling in R/O mode + - LP: #1063761 + * UBI: erase free PEB with bitflip in EC header + - LP: #1063761 + * Yama: handle 32-bit userspace prctl + - LP: #1063761 + * SCSI: ibmvscsi: Fix host config length field overflow + - LP: #1063761 + * SCSI: hpsa: Use LUN reset instead of target reset + - LP: #1063761 + * can: mscan-mpc5xxx: fix return value check in mpc512x_can_get_clock() + - LP: #1063761 + * remoteproc: select VIRTIO to avoid build breakage + - LP: #1063761 + * remoteproc: fix a potential NULL-dereference on cleanup + - LP: #1063761 + * IPoIB: Fix use-after-free of multicast object + - LP: #1063761 + * IB/srp: Fix use-after-free in srp_reset_req() + - LP: #1063761 + * IB/srp: Avoid having aborted requests hang + - LP: #1063761 + * isci: fix isci_pci_probe() generates warning on efi failure path + - LP: #1063761 + * x86/alternatives: Fix p6 nops on non-modular kernels + - LP: #1063761 + * SCSI: scsi_remove_target: fix softlockup regression on hot remove + - LP: #1063761 + * SCSI: scsi_dh_alua: Enable STPG for unavailable ports + - LP: #1063761 + * Linux 3.5.6 + - LP: #1063761 + * au0828: fix case where STREAMOFF being called on stopped stream causes + BUG() + - LP: #1062917 + * ALSA: hda - do not detect jack on internal speakers for Realtek + - LP: #1064621 + * HID: Remove QUANTA from special drivers list + - LP: #1064921 + * drm/i915: no lvds quirk for Zotac ZDBOX SD ID12/ID13 + - LP: #1064924 + * Revert dyndbg: fix for SOH in logging messages + - LP: #1066176 + * mn10300: only add -mmem-funcs to KBUILD_CFLAGS if gcc supports it + - LP: #1066176 + * kbuild: make: fix if_changed when command contains backslashes + - LP: #1066176 + * kbuild: Fix gcc -x syntax + - LP: #1066176 + * slab: fix the DEADLOCK issue on l3 alien lock + - LP: #1066176 + * intel-iommu: Default to non-coherent for domains unattached to iommus + - LP: #1066176 + * ARM: 7548/1: include linux/sched.h in syscall.h + - LP: #1066176 + * em28xx: Make all em28xx extensions to be initialized asynchronously + - LP: #1066176 + * media: rc: ite-cir: Initialise ite_dev::rdev earlier + - LP: #1066176 + * media: gspca_pac7302: add support for device 1ae7:2001 Speedlink Snappy + Microphone SL-6825-SBK + - LP: #1066176 + * ACPI: run _OSC after ACPI_FULL_INITIALIZATION + - LP: #1066176 + * PCI: acpiphp: check whether _ADR evaluation succeeded + - LP: #1066176 + * mfd: max8925: Move _IO resources out of ioport_ioresource + - LP: #1066176 + * lib/gcd.c: prevent possible div by 0 + - LP: #1066176 + * kernel/sys.c: call disable_nonboot_cpus() in kernel_restart() + - LP: #1066176 + * drivers/scsi/atp870u.c: fix bad use of udelay + - LP: #1066176 + * lguest: fix occasional crash in example launcher. + - LP: #1066176 + * powerpc/eeh: Fix crash on converting OF node to edev + - LP: #1066176 + * ixgbe: fix PTP ethtool timestamping function + - LP: #1066176 + * rapidio/rionet: fix multicast packet transmit logic + - LP: #1066176 + * PM / Sleep: use resume event when call dpm_resume_early + - LP: #1066176 + * workqueue: add missing smp_wmb() in process_one_work() + - LP: #1066176 + * jbd2: don't write superblock when if its empty + - LP: #1066176 + * localmodconfig: Fix localyesconfig to set to 'y' not 'm' + - LP: #1066176 + * bnx2x: fix rx checksum validation for IPv6 + - LP: #1066176 + * tcp: fix regression in urgent data handling + - LP: #1066176 + * xfrm: Workaround incompatibility of ESN and async crypto + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL + - LP: #1066176 + * xfrm_user: return error pointer instead of NULL #2 + - LP: #1066176 + * xfrm: fix a read lock imbalance in make_blackhole + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_auth() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_state() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_policy() + - LP: #1066176 + * xfrm_user: fix info leak in copy_to_user_tmpl() + - LP: #1066176 + * xfrm_user: don't copy esn replay window twice for new states + - LP: #1066176 + * net: ethernet: davinci_cpdma: decrease the desc count when cleaning up + the remaining packets + - LP: #1066176 + * ixp4xx_hss: fix build failure due to missing linux/module.h inclusion + - LP: #1066176 + * netxen: check for root bus in netxen_mask_aer_correctable + - LP: #1066176 + * net-sched: sch_cbq: avoid infinite loop + - LP: #1066176 + * pkt_sched: fix virtual-start-time update in QFQ + - LP: #1066176 + * sierra_net: Endianess bug fix. + - LP: #1066176 + * 8021q: fix mac_len recomputation in vlan_untag() + - LP: #1066176 + * batman-adv: make batadv_test_bit() return 0 or 1 only + - LP: #1066176 + * ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt + - LP: #1066176 + * ipv6: del unreachable route when an addr is deleted on lo + - LP: #1066176 + * ipv6: fix return value check in fib6_add() + - LP: #1066176 + * tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero + - LP: #1066176 + * sctp: Don't charge for data in sndbuf again when transmitting packet + - LP: #1066176 + * pppoe: drop PPPOX_ZOMBIEs in pppoe_release + - LP: #1066176 + * net: small bug on rxhash calculation + - LP: #1066176 + * net: guard tcp_set_keepalive() to tcp sockets + - LP: #1066176 + * ipv4: raw: fix icmp_filter() + - LP: #1066176 + * ipv6: raw: fix icmpv6_filter() + - LP: #1066176 + * ipv6: mip6: fix mip6_mh_filter() + - LP: #1066176 + * l2tp: fix a typo in l2tp_eth_dev_recv() + - LP: #1066176 + * netrom: copy_datagram_iovec can fail + - LP: #1066176 + * net: do not disable sg for packets requiring no checksum + - LP: #1066176 + * aoe: assert AoE packets marked as requiring no checksum + - LP: #1066176 + * drm/savage: re-add busmaster enable, regression fix + - LP: #1066176 + * SCSI: zfcp: Adapt to new FC_PORTSPEED semantics + - LP: #1066176 + * SCSI: zfcp: Make trace record tags unique + - LP: #1066176 + * SCSI: zfcp: Bounds checking for deferred error trace + - LP: #1066176 + * SCSI: zfcp: Do not wakeup while suspended + - LP: #1066176 + * SCSI: zfcp: remove invalid reference to list iterator variable + - LP: #1066176 + * SCSI: zfcp: restore refcount check on port_remove + - LP: #1066176 + * SCSI: zfcp: only access zfcp_scsi_dev for valid scsi_device + - LP: #1066176 + * PCI: Check P2P bridge for invalid secondary/subordinate range + - LP: #1066176 + * ext4: ignore last group w/o enough space when resizing instead of + BUG'ing + - LP: #1066176 + * ext4: don't copy non-existent gdt blocks when resizing + - LP: #1066176 + * ext4: avoid duplicate writes of the backup bg descriptor blocks + - LP: #1066176 + * ext4: fix potential deadlock in ext4_nonda_switch() + - LP: #1066176 + * ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1066176 + * ext4: move_extent code cleanup + - LP: #1066176 + * ext4: online defrag is not supported for journaled files + - LP: #1066176 + * ext4: always set i_op in ext4_mknod() + - LP: #1066176 + * ext4: fix fdatasync() for files with only i_size changes + - LP: #1066176 + * xfrm_user: ensure user supplied esn replay window is valid + - LP: #1066176 + * ASoC: wm_hubs: Ensure volume updates are handled during class W startup + - LP: #1066176 + * ASoC: wm9712: Fix name of Capture Switch + - LP: #1066176 + * kpageflags: fix wrong KPF_THP on non-huge compound pages + - LP: #1066176 + * hugetlb: do not use vma_hugecache_offset() for vma_prio_tree_foreach + - LP: #1066176 + * mm: fix invalidate_complete_page2() lock ordering + - LP: #1066176 + * mm: thp: fix pmd_present for split_huge_page and PROT_NONE with THP + - LP: #1066176 + * MIPS: ath79: use correct fractional dividers for {CPU,DDR}_PLL on + AR934x + - LP: #1066176 + * drm/i915: prevent possible pin leak on error path + - LP: #1066176 + * ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310 + - LP: #1066176 + * ALSA: aloop - add locking to timer access + - LP: #1066176 + * ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690, #1066176 + * ALSA: hda - limit internal mic boost for Asus X202E + - LP: #1052460, #1066176 + * ALSA: usb - disable broken hw volume for Tenx TP6911 + - LP: #1066176, #559939 + * ALSA: USB: Support for (original) Xbox Communicator + - LP: #1066176 + * drm/nvc0/fence: restore pre-suspend fence buffer context on resume + - LP: #1066176 + * drm: Destroy the planes prior to destroying the associated CRTC + - LP: #1066176 + * drm/radeon: only adjust default clocks on NI GPUs + - LP: #1066176 + * drm/radeon: Add MSI quirk for gateway RS690 + - LP: #1066176 + * drm/radeon: force MSIs on RS690 asics + - LP: #1066176 + * drm/i915: Flush the pending flips on the CRTC before modification + - LP: #1066176 + * drm/i915: call drm_handle_vblank before finish_page_flip + - LP: #1066176 + * drm/i915: Fix GT_MODE default value + - LP: #1066176 + * ia64: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * h8300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * parisc: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * xtensa: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * frv: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * mn10300: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m68k: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * alpha: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * cris: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * m32r: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * score: Add missing RCU idle APIs on idle loop + - LP: #1066176 + * rcu: Fix day-one dyntick-idle stall-warning bug + - LP: #1066176 + * revert "mm: mempolicy: Let vma_merge and vma_split handle + vma->vm_policy linkages" + - LP: #1066176 + * mempolicy: remove mempolicy sharing + - LP: #1066176 + * mempolicy: fix a race in shared_policy_replace() + - LP: #1066176 + * mempolicy: fix refcount leak in mpol_set_shared_policy() + - LP: #1066176 + * mempolicy: fix a memory corruption by refcount imbalance in + alloc_pages_vma() + - LP: #1066176 + * efi: Build EFI stub with EFI-appropriate options + - LP: #1066176 + * efi: initialize efi.runtime_version to make + query_variable_info/update_capsule workable + - LP: #1066176 + * CPU hotplug, cpusets, suspend: Don't modify cpusets during + suspend/resume + - LP: #1066176 + * mtd: mtdpart: break it as soon as we parse out the partitions + - LP: #1066176 + * mtd: autcpu12-nvram: Fix compile breakage + - LP: #1066176 + * mtd: nandsim: bugfix: fail if overridesize is too big + - LP: #1066176 + * mtd: nand: Use the mirror BBT descriptor when reading its version + - LP: #1066176 + * mtd: omap2: fix omap_nand_remove segfault + - LP: #1066176 + * mtd: omap2: fix module loading + - LP: #1066176 + * mmc: omap_hsmmc: Pass on the suspend failure to the PM core + - LP: #1066176 + * mmc: sh-mmcif: avoid oops on spurious interrupts + - LP: #1066176 + * JFFS2: fix unmount regression + - LP: #1066176 + * JFFS2: don't fail on bitflips in OOB + - LP: #1066176 + * cifs: reinstate the forcegid option + - LP: #1066176 + * Convert properly UTF-8 to UTF-16 + - LP: #1066176 + * Linux 3.5.7 + - LP: #1066176 + + -- Luis Henriques Thu, 18 Oct 2012 17:43:41 +0100 + +linux (3.5.0-17.28) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] we already have a valid src_pkg_name + * [packaging] allow us to select which builds have uefi signed versions + + [ James M Leddy ] + + * SAUCE: input: fix weird issue of synaptics psmouse sync lost after + resume + - LP: #717970 + + [ Paolo Pisati ] + + * SAUCE: omap3 clocks .dev_id = NULL + - LP: #1061599 + * [Config] omap: disable USB_[EHCI|OHCI]_HCD_PLATFORM + - LP: #1061599 + * [Config] omap: enforce USB_[EHCI|OHCI]_HCD_PLATFORM=n + - LP: #1061599 + + [ Stefan Bader ] + + * SAUCE: net/ipv4: Always flush route cache on unregister batch call + - LP: #1021471 + + [ Upstream Kernel Changes ] + + * Bluetooth: Add USB_VENDOR_AND_INTERFACE_INFO() for Broadcom/Foxconn + - LP: #1030233 + + [ Wen-chien Jesse Sung ] + + * SAUCE: Bluetooth: Remove rules for matching Broadcom vendor specific + IDs + - LP: #1030233 + + -- Leann Ogasawara Tue, 09 Oct 2012 11:23:41 -0700 + +linux (3.5.0-17.27) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [packaging] add custom upload for the kernel binary package + + -- Andy Whitcroft Thu, 04 Oct 2012 22:14:01 +0100 + +linux (3.5.0-17.26) quantal-proposed; urgency=low + + [ David Henningsson ] + + * SAUCE: ALSA: hda - fix indices on boost volume on Conexant + - LP: #1059523 + + [ Leann Ogasawara ] + + * [Config] Build in CONFIG_X86_PCC_CPUFREQ=y + - LP: #1061126 + + [ Rob Herring ] + + * Revert "SAUCE: ahci_platform: add custom hard reset for Calxeda ahci + ctrlr" + - LP: #1059432 + * Revert "SAUCE: net: calxedaxgmac: add write barriers around setting + owner bit" + - LP: #1059432 + * Revert "SAUCE: ARM: highbank: use writel_relaxed variant for pwr + requests" + - LP: #1059432 + * Revert "SAUCE: force DMA buffers to non-bufferable on highbank" + - LP: #1059432 + * Revert "SAUCE: input: add a key driver for highbank" + - LP: #1059432 + * [Config] Align highbank config with amd64-generic and add new configs + - LP: #1059432 + * SAUCE: net: calxedaxgmac: enable operate on 2nd frame mode + - LP: #1059432 + * SAUCE: net: calxedaxgmac: remove explicit rx dma buffer polling + - LP: #1059432 + * SAUCE: net: calxedaxgmac: use relaxed i/o accessors in rx and tx paths + - LP: #1059432 + * SAUCE: net: calxedaxgmac: drop some unnecessary register writes + - LP: #1059432 + * SAUCE: net: calxedaxgmac: rework transmit ring handling + - LP: #1059432 + * SAUCE: ARM: highbank: retry wfi on reset request + - LP: #1059432 + + [ Tim Gardner ] + + * [Config] TIDSPBRIDGE=m + - LP: #1058022 + * rebase to v3.5.5 + + [ Upstream Kernel Changes ] + + * common: DMA-mapping: add DMA_ATTR_NO_KERNEL_MAPPING attribute + - LP: #1059432 + * common: DMA-mapping: add DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: dma-mapping: add support for DMA_ATTR_SKIP_CPU_SYNC attribute + - LP: #1059432 + * ARM: add coherent dma ops + - LP: #1059432 + * ARM: add coherent iommu dma ops + - LP: #1059432 + * ARM: highbank: add coherent DMA setup + - LP: #1059432 + * sata: add platform driver for Calxeda AHCI controller + - LP: #1059432 + * xhci: Rate-limit XHCI_TRUST_TX_LENGTH quirk warning. + - LP: #1039478 + * agp/intel-gtt: remove dead code + - LP: #1011440 + * drm/i915: stop using dev->agp->base + - LP: #1011440 + * agp/intel-gtt: don't require the agp bridge on setup + - LP: #1011440 + * drm/i915 + agp/intel-gtt: prep work for direct setup + - LP: #1011440 + * agp/intel-gtt: move gart base addres setup + - LP: #1011440 + * drm/i915: don't use dev->agp + - LP: #1011440 + * drm/i915: disable drm agp support for !gen3 with kms enabled + - LP: #1011440 + * agp/intel-agp: remove snb+ host bridge pciids + - LP: #1011440 + * rebase to v3.5.5 + - LP: #1000424 + + -- Leann Ogasawara Wed, 03 Oct 2012 11:11:18 -0700 + +linux (3.5.0-16.25) quantal-proposed; urgency=low + + [ git@status.e4ward.com ] + + * SAUCE: input: Cypress PS/2 Trackpad fix multi-source, double-click + - LP: #1055788 + + [ Tim Gardner ] + + * [Config] revert '[Config] enable CONFIG_X86_X32=y' + - LP: #1041883 + + [ Upstream Kernel Changes ] + + * vmwgfx: corruption in vmw_event_fence_action_create() + * drm/nvd0/disp: hopefully fix selection of 6/8bpc mode on DP outputs + - LP: #1058088 + * drm/nv50-/gpio: initialise to vbios defaults during init + - LP: #1058088 + * igb: A fix to VF TX rate limit + - LP: #1058188 + * igb: Add switch case for supported hardware to igb_ptp_remove. + - LP: #1058188 + * igb: Support the get_ts_info ethtool method. + - LP: #1058188 + * igb: Streamline RSS queue and queue pairing assignment logic. + - LP: #1058188 + * igb: Update firmware info output + - LP: #1058188 + * igb: Version bump + - LP: #1058188 + * igb: reset PHY in the link_up process to recover PHY setting after + power down. + - LP: #1058188 + * igb: Fix for failure to init on some 82576 devices. + - LP: #1058188 + * igb: correct hardware type (i210/i211) check in igb_loopback_test() + - LP: #1058188 + * igb: don't break user visible strings over multiple lines in + igb_ethtool.c + - LP: #1058188 + * igb: add delay to allow igb loopback test to succeed on 8086:10c9 + - LP: #1058188 + * igb: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058188 + * igb: Fix register defines for all non-82575 hardware + - LP: #1058188 + * e1000e: use more informative logging macros when netdev not yet + registered + - LP: #1058219 + * e1000e: Cleanup code logic in e1000_check_for_serdes_link_82571() + - LP: #1058219 + * e1000e: Program the correct register for ITR when using MSI-X. + - LP: #1058219 + * e1000e: advertise transmit time stamping + - LP: #1058219 + * e1000e: 82571 Tx Data Corruption during Tx hang recovery + - LP: #1058219 + * e1000e: fix panic while dumping packets on Tx hang with IOMMU + - LP: #1058219 + * e1000: Combining Bitwise OR in one expression. + - LP: #1058221 + * e1000: advertise transmit time stamping + - LP: #1058221 + * e1000: Small packets may get corrupted during padding by HW + - LP: #1058221 + * sched: Fix migration thread runtime bogosity + - LP: #1057593 + * ACER: Add support for accelerometer sensor + - LP: #1055433 + * ACER: Fix Smatch double-free issue + - LP: #1055433 + + [ Wen-chien Jesse Sung ] + + * SAUCE: HID: ntrig: change default value of logical/physical + width/height to 1 + - LP: #1044248 + + -- Leann Ogasawara Fri, 28 Sep 2012 14:07:41 -0700 + +linux (3.5.0-16.24) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: ata_piix: add a disable_driver option + - LP: #994870 + + [ Christian König ] + + * (pre-stable) drm/radeon: make 64bit fences more robust v3 (3.5 stable) + - LP: #1029582 + + [ David Henningsson ] + + * SAUCE: ALSA: hda - use both input paths on Conexant auto parser + - LP: #1037642 + * SAUCE: ALSA: hda - fix control names for multiple speaker out on + IDT/STAC + - LP: #1046734 + + [ Herton Ronaldo Krzesinski ] + + * SAUCE: ALSA: hda/via - don't report presence on HPs with no presence + support + - LP: #1052499 + * SAUCE: ext4: fix crash when accessing /proc/mounts concurrently + - LP: #1053019 + * SAUCE: ALSA: hda/realtek - Fix detection of ALC271X codec + - LP: #1006690 + + [ Kyle Fazzari ] + + * SAUCE: input: Cypress PS/2 Trackpad fix disabling tap-to-click + - LP: #1048816 + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_AST + - LP: #1053290 + + [ Stefan Bader ] + + * [Config] Disable the Cirrus QEMU drm driver + - LP: #1038055 + + [ Upstream Kernel Changes ] + + * Revert "KVM: VMX: Fix KVM_SET_SREGS with big real mode segments" + - LP: #1045027 + * x86, efi: Handover Protocol + * drm/i915: HDMI - Clear Audio Enable bit for Hot Plug + - LP: #1056729 + * UBUNTU SAUCE: apparmor: fix IRQ stack overflow + - LP: #1056078 + * drm/nouveau: fix booting with plymouth + dumb support + - LP: #1043518 + * ALSA: hda - Add DeviceID for Haswell HDA + - LP: #1057698 + * ALSA: hda - add Haswell HDMI codec id + - LP: #1057698 + * ALSA: hda - Fix driver type of Haswell controller to AZX_DRIVER_SCH + - LP: #1057698 + * ALSA: hda_intel: Add Device IDs for Intel Lynx Point-LP PCH + - LP: #1011438, #1057698 + + [ Wang Xingchao ] + + * SAUCE: ALSA: hda - Add another pci id for Haswell board + - LP: #1057698 + + [ Wen-chien Jesse Sung ] + + * SAUCE: drm/i915: Explicitly disable RC6 for certain models + - LP: #1002170, #1008867 + + -- Leann Ogasawara Thu, 27 Sep 2012 13:55:52 -0700 + +linux (3.5.0-15.23) quantal; urgency=low + + [ Upstream Kernel Changes ] + + * Revert "drm/i915: don't forget the PCH backlight registers" + - LP: #1053269, #1055231, #1055665 + * Revert "drm/i915: fix up PCH backlight #define mixup" + - LP: #1053269, #1055665 + * Revert "drm/i915: allow pipe A for lvds on gen4" + - LP: #1053269, #1055665 + * Revert "drm/i915: properly enable the blc controller on the right pipe" + - LP: #1053269, #1055665 + * Revert "drm/i915: clear up backlight #define confusion on gen4+" + - LP: #1053269, #1055665 + * Revert "drm/i915: pnv has a backlight polarity control bit, too" + - LP: #1053269, #1055665 + + -- Leann Ogasawara Mon, 24 Sep 2012 12:33:26 -0700 + +linux (3.5.0-15.22) quantal; urgency=low + + * fix regressions introduced by the last batch of i915 patches. + + [ Upstream Kernel Changes ] + + * drm/i915: fix up PCH backlight #define mixup + - LP: #954661 + * drm/i915: don't forget the PCH backlight registers + - LP: #954661 + + -- Tim Gardner Wed, 19 Sep 2012 13:32:19 -0600 + +linux (3.5.0-15.21) quantal; urgency=low + + [ Tim Gardner ] + + * ubuntu: AUFS -- update to 18e455787597579fe144cdb2f18aa6a0a32c46a4 + * [Config] Enable aufs + - LP: #908784 + + [ Upstream Kernel Changes ] + + * eCryptfs: check for eCryptfs cipher support at mount + - LP: #338914 + * drm/i915: pnv has a backlight polarity control bit, too + - LP: #954661 + * drm/i915: clear up backlight #define confusion on gen4+ + - LP: #954661 + * drm/i915: properly enable the blc controller on the right pipe + - LP: #954661 + * drm/i915: allow pipe A for lvds on gen4 + - LP: #954661 + + -- Tim Gardner Tue, 18 Sep 2012 08:37:51 -0400 + +linux (3.5.0-15.20) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.4 + * SAUCE: CONFIG_HID_BATTERY_STRENGTH=y + - LP: #1003090 + + [ Upstream Kernel Changes ] + + * eCryptfs: Copy up attributes of the lower target inode after rename + - LP: #561129 + * eCryptfs: Write out all dirty pages just before releasing the lower + file + - LP: #1047261 + * eCryptfs: Call lower ->flush() from ecryptfs_flush() + - LP: #1047261 + * af_netlink: force credentials passing [CVE-2012-3520] + - LP: #1052097 + - CVE-2012-3520 + * drm/i915: clarify IBX dp workaround + - LP: #1011440 + * drm/i915: Implement w/a for sporadic read failures on waking from rc6 + - LP: #1011440 + * drm/i915: support Haswell force waking + - LP: #1011440 + * drm/i915: add RPS configuration for Haswell + - LP: #1011440 + * drm/i915: enable RC6 by default on Haswell + - LP: #1011440 + * drm/i915: introduce haswell_init_clock_gating + - LP: #1011440 + * drm/i915: enable RC6 workaround on Haswell + - LP: #1011440 + * drm/i915: re-initialize DDI buffer translations after resume + - LP: #1011440 + * drm/i915: fix PIPE_DDI_PORT_MASK + - LP: #1011440 + * drm/i915: try to train DP even harder + - LP: #1011440 + * drm/i915: add more Haswell PCI IDs + - LP: #1011440 + * rebase to v3.5.4 + - LP: #1038651 + + -- Leann Ogasawara Mon, 17 Sep 2012 13:41:39 -0700 + +linux (3.5.0-14.19) quantal; urgency=low + + [ Tim Gardner ] + + * [Config] Fix debug FTBS on non-x86 + + -- Tim Gardner Fri, 14 Sep 2012 13:06:02 -0600 + +linux (3.5.0-14.18) quantal; urgency=low + + [ Tim Gardner ] + + * SAUCE: Add 'used' to the video_cards structure attributes + - LP: #1049650 + + -- Tim Gardner Fri, 14 Sep 2012 10:58:40 -0400 + +linux (3.5.0-14.17) quantal; urgency=low + + [ Keng-Yu Lin ] + + * SAUCE: Intel xhci: Only switch the switchable ports + - LP: #1034814 + + -- Leann Ogasawara Wed, 12 Sep 2012 08:34:21 -0700 + +linux (3.5.0-14.16) quantal-proposed; urgency=low + + [ Bernhard Froemel ] + + * SAUCE: apple-gmux: Fix index read functions + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad move PSMOUSE_CYPRESS enum + - LP: #1041594 + + [ Seth Forshee ] + + * SAUCE: Input: synaptics - Adjust threshold for treating position values + as negative + - LP: #1046512 + + [ Upstream Kernel Changes ] + + * mei: check for error codes that mei_flow_ctrl_creds retuns + * mei: make mei_write_message more readable + * mei: mei_irq_thread_write_handler check for overflow + * mei: group wd_interface_reg with watchdog variables within struct + mei_device + * mei: don't query HCSR for host buffer depth + * mei: revamp host buffer interface function + * mei: mei_device can be const for mei register access functions + * mei: remove write only wariable wd_due_counter + * mei: mei_wd_host_init: update the comment + * mei: introduce mei_data2slots wrapper + * mei: streamline the _mei_irq_thread_close/ioctol functions + * mei: mei_irq_thread_write_handler - line break fix + * mei: use module_pci_driver + * mei: fix device stall after wd is stopped + + -- Leann Ogasawara Mon, 10 Sep 2012 13:05:18 -0700 + +linux (3.5.0-14.15) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * SAUCE: fs: d_revalidate methods may be passed a NULL nameidata + - LP: #1038075 + + [ Dave Airlie ] + + * SAUCE: drm/vmwgfx: add MODULE_DEVICE_TABLE so vmwgfx loads at boot + - LP: #1039157 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEVPTS_MULTIPLE_INSTANCES for highbank + - LP: #1038259 + + [ Tim Gardner ] + + * SAUCE: wlcore: Declare MODULE_FIRMWARE usage + - LP: #1042918 + + [ Upstream Kernel Changes ] + + * asus-nb-wmi: add some video toggle keys + - LP: #1022427 + * [media] uvcvideo: Fix frame drop in bulk video stream + * [media] uvcvideo: Fix alternate setting selection + * Input: wacom - add support to Cintiq 22HD + - LP: #1043733 + * ALSA: HDA: Create phantom jacks for fixed inputs and outputs + * ALSA: HDA: Support single 3-pin jack without VREF on the actual pin + - LP: #1018262 + * ALSA: hda - give 3-pin jack the name "Headphone Mic Jack" + * ALSA: hda - Do not set GPIOs for speakers on IDT if there are no + speakers + - LP: #1040077 + * ALSA: hda - Fix pop noise in headphones on S3 for Asus X55A, X55V + - LP: #1034779 + * ALSA: hda - Always call standard unsolicited event for Realtek codecs + - LP: #1021192 + * ALSA: hda - Add the inverted digital mic workaround to Realtek codecs + * ALSA: hda - Add inverted mic quirks for Asus U41SV, Acer 1810TZ and + AOD260 + - LP: #1006089, #996611, #997227 + * ALSA: hda - don't create dysfunctional mixer controls for ca0132 + - LP: #1038651 + * ALSA: hda - Don't send invalid volume knob command on IDT 92hd75bxx + + -- Leann Ogasawara Thu, 06 Sep 2012 10:06:28 -0700 + +linux (3.5.0-13.14) quantal; urgency=low + + [ Leann Ogasawara ] + + * [Config] Disable CONFIG_DRM_MGAG200 + - LP: #1042903 + + [ Upstream Kernel Changes ] + + * [media] uvcvideo: Reset the bytesused field when recycling an erroneous + buffer + - LP: #1042809 + + -- Tim Gardner Tue, 28 Aug 2012 08:43:55 -0400 + +linux (3.5.0-13.13) quantal-proposed; urgency=low + + [ Tim Gardner ] + + * rebase to v3.5.3 + * [Config] Add smsc{79}5xx to nic-usb-modules + - LP: #1041397 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.3 + + -- Leann Ogasawara Mon, 27 Aug 2012 11:29:08 -0700 + +linux (3.5.0-12.12) quantal-proposed; urgency=low + + [ Luis Henriques ] + + * [Config] Fix typo on control.stub.in + + [ Ricardo Salveti de Araujo ] + + * [Config] installing omapdrm specific headers for external drivers + - LP: #1038846 + + [ Seth Forshee ] + + * SAUCE: apple-gmux: Fix port address calculation in gmux_pio_write32() + + [ Stefan Bader ] + + * SAUCE: (no-up) x86/mm: Fix 64bit size of mapping tables + - LP: #1022561 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove sb16 files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * net: Allow driver to limit number of GSO segments per skb + - LP: #1037456 + - CVE-2012-3412 + * sfc: Fix maximum number of TSO segments and minimum TX queue size + - LP: #1037456 + - CVE-2012-3412 + * tcp: Apply device TSO segment limit earlier + - LP: #1037456 + - CVE-2012-3412 + * cfg80211: add channel flag to prohibit OFDM operation + * brcmsmac: use channel flags to restrict OFDM + * gmux: Add generic write32 function + * apple_gmux: Add support for newer hardware + * apple_gmux: Fix ACPI video unregister + * apple-gmux: Fix kconfig dependencies + * vga_switcheroo: Don't require handler init callback + * vga_switcheroo: Remove assumptions about registration/unregistration + ordering + * apple-gmux: Add display mux support + * mei: add mei_quirk_probe function + - LP: #1041164 + * mutex: Place lock in contended state after fastpath_lock failure + - LP: #1041114 + + -- Leann Ogasawara Fri, 24 Aug 2012 07:13:00 -0700 + +linux (3.5.0-11.11) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] enable CONFIG_X86_X32=y + + [ Cypress Semiconductor Corporation ] + + * SAUCE: input: Cypress PS/2 Trackpad mouse driver + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad link driver into psmouse-base + - LP: #978807 + + [ Dann Frazier ] + + * [Config] compile the rtc-pl031 driver as static on the highbank kernel + flavour + - LP: #1035110 + + [ Ike Panhc ] + + * [Config] Enable CONFIG_DEBUG_HIGHBANK_UART for highbank + - LP: #1034781 + + [ Kamal Mostafa ] + + * SAUCE: input: Cypress PS/2 Trackpad code style cleanup + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad eliminate dead code + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad fix no-config stubs + - LP: #978807 + * SAUCE: input: Cypress PS/2 Trackpad set default debug_level=0 + - LP: #978807 + * SAUCE: [Config] add MOUSE_PS2_CYPRESS=y + - LP: #978807 + + [ Kees Cook ] + + * SAUCE: Yama: access task_struct->comm directly + * SAUCE: Yama: add link restrictions + * SAUCE: security: unconditionally chain to Yama LSM + + [ Seth Forshee ] + + * SAUCE: (drop after 3.6) irq_remap: disable IRQ remapping if any IOAPIC + lacks an IOMMU + - LP: #1034459 + + [ Stefan Bader ] + + * (config) Enable getabis to use local package copies + + [ Tim Gardner ] + + * rebase to v3.5.2 + + [ Upstream Kernel Changes ] + + * rds: set correct msg_namelen + - LP: #1031112 + - CVE-2012-2340 + * rebase to v3.5.2 + - LP: #1027789 + - LP: #1001251 + + -- Leann Ogasawara Thu, 16 Aug 2012 08:52:09 -0700 + +linux (3.5.0-10.10) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * rebase to v3.5.1 + + [ Leann Ogasawara ] + + * [Config] Enable CONFIG_AFS_FSCACHE=y + - LP: #728977 + + [ Tim Gardner ] + + * SAUCE: firmware: Remove emi62 files duplicated in linux-firmware + * SAUCE: firmware: Remove tehuti files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * overlayfs: copy up i_uid/i_gid from the underlying inode + - LP: #944386 + * hwmon: (applesmc) Shorten minimum wait time + - LP: #1034449 + * hwmon: (applesmc) Decode and act on read/write status codes + - LP: #1034449 + + [ Upstream Kernel Changes ] + + * rebase to v3.5.1 + - LP: #1026953 + - LP: #1025377 + + -- Leann Ogasawara Sun, 12 Aug 2012 13:16:43 -0700 + +linux (3.5.0-9.9) quantal-proposed; urgency=low + + [ Daniel P. Berrange ] + + * SAUCE: (drop after 3.6) Forbid invocation of kexec_load() outside + initial PID namespace + - LP: #1034125 + + [ Douglas Bagnall ] + + * SAUCE: Unlock the rc_dev lock when the raw device is missing + - LP: #1015836 + + [ Ike Panhc ] + + * [Config] Enable EDAC/CLK for highbank + - LP: #1008345 + + [ Leann Ogasawara ] + + * Revert "ubuntu: AUFS -- reenable" + + [ Rob Herring ] + + * SAUCE: net: calxedaxgmac: add write barriers around setting owner bit + - LP: #1008345 + * SAUCE: ARM smp_twd: add back "arm,smp-twd" compatible property + - LP: #1008345 + * SAUCE: ARM: highbank: add soft power and reset key event handling + - LP: #1008345 + * SAUCE: ARM: highbank: use writel_relaxed variant for pwr requests + - LP: #1008345 + * SAUCE: ahci: un-staticize ahci_dev_classify + - LP: #1008345 + * SAUCE: ahci_platform: add custom hard reset for Calxeda ahci ctrlr + - LP: #1008345 + + [ Upstream Kernel Changes ] + + * rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb. + - LP: #871904 + * Avoid sysfs oops when an rc_dev's raw device is absent + - LP: #1015836 + * eCryptfs: Copy up POSIX ACL and read-only flags from lower mount + * clk: add DT clock binding support + - LP: #1008345 + * clk: add DT fixed-clock binding support + - LP: #1008345 + * clk: add highbank clock support + * edac: add support for Calxeda highbank memory controller + - LP: #1008345 + * edac: add support for Calxeda highbank L2 cache ecc + - LP: #1008345 + * net: calxedaxgmac: enable rx cut-thru mode + - LP: #1008345 + * net: calxedaxgmac: fix hang on rx refill + - LP: #1008345 + * eCryptfs: Revert to a writethrough cache model + - LP: #1034012 + * eCryptfs: Initialize empty lower files when opening them + - LP: #911507 + * eCryptfs: Unlink lower inode when ecryptfs_create() fails + - LP: #872905 + + -- Leann Ogasawara Wed, 08 Aug 2012 08:39:42 -0700 + +linux (3.5.0-8.8) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * 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 -- fix undefined __devcgroup_inode_permission + * 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 + * ubuntu: AUFS -- adapt to the new changelog handling + * ubuntu: AUFS -- sort out the relative header paths + * ubuntu: AUFS -- update to d266b0c5d0693d6383976ee54b9e2c0fa9a3f5b0 + * ubuntu: AUFS -- aufs3-base.patch + * ubuntu: AUFS -- aufs3-standalone.patch + * ubuntu: AUFS -- update to 4a5e660ed7f5c1d0467c81c535d0fedcfe62d15f + * ubuntu: AUFS -- reenable + + [ Chris Van Hoof ] + + * [Config] Add cifs support to the nfs-modules list + - LP: #1031398 + + [ Ilan Peer ] + + * (pre-stable) iwlwifi: Check BSS ctx active before call mac80211 + - LP: #1021086 + + [ John Johansen ] + + * SAUCE: Update aufs for build failure caused by apparmor backport + + [ Tim Gardner ] + + * SAUCE: firmware: Remove ess files duplicated in linux-firmware + * SAUCE: firmware: Remove kaweth files duplicated in linux-firmware + * SAUCE: firmware: Remove obsolete Chelsio cxgb3 firmware + * SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware + * SAUCE: firmware: Remove edgeport files duplicated in linux-firmware + * SAUCE: firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware + * SAUCE: firmware: Remove adaptec files duplicated in linux-firmware + * SAUCE: firmware: Remove advansys files duplicated in linux-firmware + * SAUCE: firmware: Remove ambassador files duplicated in linux-firmware + * SAUCE: firmware: Remove av7110 files duplicated in linux-firmware + * SAUCE: cpia2: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove cpia2 files duplicated in linux-firmware + * SAUCE: firmware: Remove korg files duplicated in linux-firmware + * SAUCE: firmware: Remove matrox files duplicated in linux-firmware + * SAUCE: firmware: Remove r128 files duplicated in linux-firmware + * SAUCE: firmware: Remove radeon files duplicated in linux-firmware + + [ Upstream Kernel Changes ] + + * intel_idle: initial IVB support + * KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT + Dirty bit + * KVM: VMX: Use EPT Access bit in response to memory notifiers + * KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit + in EPTP + * KVM: VMX: Add parameter to control A/D bits support, default is on + * KVM: VMX: Add EPT A/D bits definitions + * KVM: VMX: Implement PCID/INVPCID for guests with EPT + * xhci: Export Latency Tolerance Messaging capabilities. + * USB: Fix LPM disable/enable during device reset. + * usb: convert port_owners type from void * to struct dev_state * + * USB: Disable LPM while the device is unconfigured. + * USB: Fix LPM disable count mismatch on driver unbind. + * USB: Enable Latency Tolerance Messaging (LTM). + * drm/i915: enable parity error interrupts + * drm/i915: Dynamic Parity Detection handling + * drm/i915: l3 parity sysfs interface + * drm/i915: remap l3 on hw init + * drm/i915: initialize the parity work only once + * drm/i915: ivybridge_handle_parity_error should be static + + -- Leann Ogasawara Fri, 03 Aug 2012 13:33:27 -0700 + +linux (3.5.0-7.7) quantal-proposed; urgency=low + + [ Andy Whitcroft ] + + * [Config] CONFIG_X86_POWERNOW_K6=m + * [Config] CONFIG_X86_POWERNOW_K7=m + * [Config] CONFIG_X86_LONGHAUL=m + * [Config] CONFIG_X86_LONGRUN=m + * [Config] CONFIG_X86_GX_SUSPMOD=m + * [Config] CONFIG_X86_CPUFREQ_NFORCE2=m + * SAUCE: rds_ib_send() -- prevent local pings triggering BUG_ON() + - LP: #1016299 + - CVE-2012-2372 + * [Config] enable CONFIG_VFAT_FS=y for EFI systems + * [Config] CONFIG_USB_G_MULTI=n on highbank + * [Config] annotate: CONFIG_USB_INVENTRA_DMA OMAP2 specific + * [Config] CONFIG_WAN_ROUTER disable for arm + * add support for generating binary device trees and install them in + /lib/firmware + - LP: #1030600 + * [Config] add dtb_file configuration for highbank + - LP: #1030600 + + [ Tim Gardner ] + + * SAUCE: ene_ub6250: Use macros for firmware names + * SAUCE: s2255drv: Add MODULE_FIRMWARE statement + * SAUCE: xc5000: Add MODULE_FIRMWARE statements + * SAUCE: firmware: remove computone driver firmware and documentation + * SAUCE: lgs8gxx: Declare MODULE_FIRMWARE usage + * SAUCE: firmware: Remove obsolete Myricom firmware + * SAUCE: staging rtl8192e: Declare MODULE_FIRMWARE usage + * SAUCE: tlg2300: Declare MODULE_FIRMWARE usage + * SAUCE: ueagle-atm: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxfast: Declare MODULE_FIRMWARE usage + * SAUCE: usbdux: Declare MODULE_FIRMWARE usage + * SAUCE: usbduxsigma: Declare MODULE_FIRMWARE usage + * SAUCE: cx25840: Declare MODULE_FIRMWARE usage + * SAUCE: cx18: Declare MODULE_FIRMWARE usage + * SAUCE: ivtv: Declare MODULE_FIRMWARE usage + * SAUCE: cx231xx: Declare MODULE_FIRMWARE usage + * SAUCE: cx23885: Declare MODULE_FIRMWARE usage + * SAUCE: pvrusb2: Declare MODULE_FIRMWARE usage + * SAUCE: vxge: Declare MODULE_FIRMWARE usage + + [ Upstream Kernel Changes ] + + * mac80211: fix crash with single-queue drivers + - LP: #1022351 + + -- Leann Ogasawara Mon, 30 Jul 2012 11:11:05 -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.5.0.orig/debian.master/NOTES +++ linux-3.5.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.5.0.orig/debian.master/control.stub +++ linux-3.5.0/debian.master/control.stub @@ -0,0 +1,473 @@ +Source: linux +Section: devel +Priority: optional +Maintainer: Ubuntu Kernel Team +Standards-Version: 3.8.4.0 +Build-Depends: debhelper (>= 5), cpio, module-init-tools, kernel-wedge (>= 2.24ubuntu1), makedumpfile [amd64 i386], device-tree-compiler [powerpc], libelf-dev, libnewt-dev, binutils-dev, rsync, libdw-dev, dpkg (>= 1.16.0~ubuntu4), util-linux, pkg-config, flex, bison +Build-Depends-Indep: xmlto, docbook-utils, ghostscript, transfig, bzip2, sharutils, asciidoc +Build-Conflicts: findutils (= 4.4.1-1ubuntu1) +Vcs-Git: http://kernel.ubuntu.com/git-repos/ubuntu/ubuntu-quantal.git + +Package: linux-source-3.5.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.5.0 with Ubuntu patches + This package provides the source code for the Linux kernel version + 3.5.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.5.0 + This package provides the various documents in the 3.5.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-tools-common +Architecture: all +Section: kernel +Priority: optional +Depends: ${misc:Depends} +Replaces: linux-tools (<= 2.6.32-16.25) +Description: Linux kernel version specific tools for version 3.5.0 + This package provides the architecture independent parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0. + +Package: linux-headers-3.5.0-27 +Architecture: all +Section: devel +Priority: optional +Depends: ${misc:Depends}, coreutils | fileutils (>= 4.0) +Provides: linux-headers, linux-headers-3 +Description: Header files related to Linux kernel version 3.5.0 + This package provides kernel header files for version 3.5.0, for sites + that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details + +Package: linux-libc-dev +Architecture: i386 amd64 powerpc ppc64 armel armhf +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-3.5.0-27 +Architecture: i386 amd64 powerpc ppc64 armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-tools-common +Description: Linux kernel version specific tools for version 3.5.0-27 + This package provides the architecture dependant parts for kernel + version locked tools (such as perf and x86_energy_perf_policy) for + version 3.5.0-27 on + 32 bit x86. + + +Package: linux-image-3.5.0-27-generic +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 | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1) +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-generic, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32 bit x86 SMP + This package contains the Linux kernel image for version 3.5.0 on + 32 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.5.0-27-generic +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32 bit x86 SMP + This package provides kernel header files for version 3.5.0 on + 32 bit x86 SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-generic-dbgsym +Architecture: i386 amd64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32 bit x86 SMP + This package provides a kernel debug image for version 3.5.0 on + 32 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-image-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-highbank +Architecture: armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-highbank, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on Calxeda highbank ARM Server + This package contains the Linux kernel image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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 Calxeda highbank processors. + . + Targeted towards Calxeda highbank ARM Server + . + You likely do not want to install this package directly. Instead, install + the linux-highbank meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-highbank +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on Calxeda highbank ARM Server + This package provides kernel header files for version 3.5.0 on + Calxeda highbank ARM Server. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-highbank-dbgsym +Architecture: armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on Calxeda highbank ARM Server + This package provides a kernel debug image for version 3.5.0 on + Calxeda highbank ARM Server. + . + 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-image-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Pre-Depends: dpkg (>= 1.10.24) +Provides: linux-image, linux-image-3.0, fuse-module, +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 +Suggests: fdutils, linux-doc-3.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-image-extra-3.5.0-27-omap +Architecture: armel armhf +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-omap, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package contains the Linux kernel image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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 TI OMAP3 processors. + . + Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc. + . + You likely do not want to install this package directly. Instead, install + the linux-omap meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-3.5.0-27-omap +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides kernel header files for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-omap-dbgsym +Architecture: armel armhf +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on TI OMAP3-based 32 bit x86 systems + This package provides a kernel debug image for version 3.5.0 on + TI OMAP3-based 32 bit x86 systems. + . + 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-image-3.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc64-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 64-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc64-smp +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 64-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 64-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc64-smp-dbgsym +Architecture: powerpc ppc64 +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 64-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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-image-3.5.0-27-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.5.0 | linux-source-3.5.0, linux-tools +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: kernel +Priority: optional +Depends: ${misc:Depends}, ${shlibs:Depends}, linux-image-3.5.0-27-powerpc-smp, crda (>=1.1.1-1ubuntu2) | wireless-crda +Description: Linux kernel image for version 3.5.0 on 32-bit PowerPC SMP + This package contains the Linux kernel image for version 3.5.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.5.0-27-powerpc-smp +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends}, linux-headers-3.5.0-27, ${shlibs:Depends} +Provides: linux-headers, linux-headers-3.0 +Description: Linux kernel headers for version 3.5.0 on 32-bit PowerPC SMP + This package provides kernel header files for version 3.5.0 on + 32-bit PowerPC SMP. + . + This is for sites that want the latest kernel headers. Please read + /usr/share/doc/linux-headers-3.5.0-27/debian.README.gz for details. + +Package: linux-image-3.5.0-27-powerpc-smp-dbgsym +Architecture: powerpc +Section: devel +Priority: optional +Depends: ${misc:Depends} +Provides: linux-debug +Description: Linux kernel debug image for version 3.5.0 on 32-bit PowerPC SMP + This package provides a kernel debug image for version 3.5.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. --- linux-3.5.0.orig/debian.master/etc/getabis +++ linux-3.5.0/debian.master/etc/getabis @@ -0,0 +1,17 @@ +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 armel omap +getall armhf omap highbank +getall amd64 generic +getall i386 generic + +# Ports arches and flavours. +getall powerpc powerpc-smp powerpc64-smp --- linux-3.5.0.orig/debian.master/etc/kernelconfig +++ linux-3.5.0/debian.master/etc/kernelconfig @@ -0,0 +1,7 @@ +if [ "$variant" = "ports" ]; then + archs="" + family='ports' +else + archs="amd64 i386 armel armhf powerpc ppc64" + family='ubuntu' +fi --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/abiname +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/abiname @@ -0,0 +1 @@ +27 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/fwinfo +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/fwinfo @@ -0,0 +1,587 @@ +firmware: 3826.arm +firmware: 3com/typhoon.bin +firmware: 6fire/dmx6fireap.ihx +firmware: 6fire/dmx6firecf.bin +firmware: 6fire/dmx6firel2.ihx +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: 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: ath3k-1.fw +firmware: ath6k/AR6003/hw2.0/athwlan.bin.z77 +firmware: ath6k/AR6003/hw2.0/bdata.bin +firmware: ath6k/AR6003/hw2.0/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.0/data.patch.bin +firmware: ath6k/AR6003/hw2.0/otp.bin.z77 +firmware: ath6k/AR6003/hw2.1.1/athwlan.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.bin +firmware: ath6k/AR6003/hw2.1.1/bdata.SD31.bin +firmware: ath6k/AR6003/hw2.1.1/data.patch.bin +firmware: ath6k/AR6003/hw2.1.1/otp.bin +firmware: ath6k/AR6004/hw1.0/bdata.bin +firmware: ath6k/AR6004/hw1.0/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.0/fw.ram.bin +firmware: ath6k/AR6004/hw1.1/bdata.bin +firmware: ath6k/AR6004/hw1.1/bdata.DB132.bin +firmware: ath6k/AR6004/hw1.1/fw.ram.bin +firmware: ath6k/AR6004/hw1.2/bdata.bin +firmware: ath6k/AR6004/hw1.2/fw.ram.bin +firmware: atmel_at76c502_3com.bin +firmware: atmel_at76c502_3com-wpa.bin +firmware: atmel_at76c502.bin +firmware: atmel_at76c502d.bin +firmware: atmel_at76c502d-wpa.bin +firmware: atmel_at76c502e.bin +firmware: atmel_at76c502e-wpa.bin +firmware: atmel_at76c502-wpa.bin +firmware: atmel_at76c503-i3861.bin +firmware: atmel_at76c503-i3863.bin +firmware: atmel_at76c503-rfmd-acc.bin +firmware: atmel_at76c503-rfmd.bin +firmware: atmel_at76c504_2958.bin +firmware: atmel_at76c504_2958-wpa.bin +firmware: atmel_at76c504a_2958.bin +firmware: atmel_at76c504a_2958-wpa.bin +firmware: atmel_at76c504.bin +firmware: atmel_at76c504-wpa.bin +firmware: atmel_at76c505amx-rfmd.bin +firmware: atmel_at76c505a-rfmd2958.bin +firmware: atmel_at76c505-rfmd2958.bin +firmware: atmel_at76c505-rfmd.bin +firmware: atmel_at76c506.bin +firmware: atmel_at76c506-wpa.bin +firmware: atmsar11.fw +firmware: av7110/bootcode.bin +firmware: b43legacy/ucode2.fw +firmware: b43legacy/ucode4.fw +firmware: b43/ucode11.fw +firmware: b43/ucode13.fw +firmware: b43/ucode14.fw +firmware: b43/ucode15.fw +firmware: b43/ucode16_mimo.fw +firmware: b43/ucode5.fw +firmware: b43/ucode9.fw +firmware: BCM2033-FW.bin +firmware: BCM2033-MD.hex +firmware: bfubase.frm +firmware: bnx2/bnx2-mips-06-6.2.3.fw +firmware: bnx2/bnx2-mips-09-6.2.1b.fw +firmware: bnx2/bnx2-rv2p-06-6.0.15.fw +firmware: bnx2/bnx2-rv2p-09-6.0.17.fw +firmware: bnx2/bnx2-rv2p-09ax-6.0.17.fw +firmware: bnx2x/bnx2x-e1-7.2.51.0.fw +firmware: bnx2x/bnx2x-e1h-7.2.51.0.fw +firmware: bnx2x/bnx2x-e2-7.2.51.0.fw +firmware: brcm/brcmfmac43236b.bin +firmware: brcm/brcmfmac-sdio.bin +firmware: brcm/brcmfmac-sdio.txt +firmware: BT3CPCC.bin +firmware: c218tunx.cod +firmware: c320tunx.cod +firmware: carl9170-1.fw +firmware: cbfw.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: comedi/jr3pci.idm +firmware: cp204unx.cod +firmware: cpia2/stv0672_vp4.bin +firmware: ct2fw.bin +firmware: ctfw.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: cyzfirm.bin +firmware: dvb-fe-xc5000-1.6.114.fw +firmware: dvb-fe-xc5000c-41.024.5.fw +firmware: dvb-usb-dib0700-1.20.fw +firmware: e100/d101m_ucode.bin +firmware: e100/d101s_ucode.bin +firmware: e100/d102e_ucode.bin +firmware: ea/3g_asic.fw +firmware: ea/darla20_dsp.fw +firmware: ea/darla24_dsp.fw +firmware: ea/echo3g_dsp.fw +firmware: ea/gina20_dsp.fw +firmware: ea/gina24_301_asic.fw +firmware: ea/gina24_301_dsp.fw +firmware: ea/gina24_361_asic.fw +firmware: ea/gina24_361_dsp.fw +firmware: ea/indigo_dj_dsp.fw +firmware: ea/indigo_djx_dsp.fw +firmware: ea/indigo_dsp.fw +firmware: ea/indigo_io_dsp.fw +firmware: ea/indigo_iox_dsp.fw +firmware: ea/layla20_asic.fw +firmware: ea/layla20_dsp.fw +firmware: ea/layla24_1_asic.fw +firmware: ea/layla24_2A_asic.fw +firmware: ea/layla24_2S_asic.fw +firmware: ea/layla24_dsp.fw +firmware: ea/loader_dsp.fw +firmware: ea/mia_dsp.fw +firmware: ea/mona_2_asic.fw +firmware: ea/mona_301_1_asic_48.fw +firmware: ea/mona_301_1_asic_96.fw +firmware: ea/mona_301_dsp.fw +firmware: ea/mona_361_1_asic_48.fw +firmware: ea/mona_361_1_asic_96.fw +firmware: ea/mona_361_dsp.fw +firmware: edgeport/boot2.fw +firmware: edgeport/boot.fw +firmware: edgeport/down2.fw +firmware: edgeport/down3.bin +firmware: edgeport/down.fw +firmware: emi26/bitstream.fw +firmware: emi26/firmware.fw +firmware: emi26/loader.fw +firmware: emi62/bitstream.fw +firmware: emi62/loader.fw +firmware: emi62/spdif.fw +firmware: emu/audio_dock.fw +firmware: emu/emu0404.fw +firmware: emu/emu1010b.fw +firmware: emu/emu1010_notebook.fw +firmware: emu/hana.fw +firmware: emu/micro_dock.fw +firmware: ene-ub6250/ms_init.bin +firmware: ene-ub6250/msp_rdwr.bin +firmware: ene-ub6250/ms_rdwr.bin +firmware: ene-ub6250/sd_init1.bin +firmware: ene-ub6250/sd_init2.bin +firmware: ene-ub6250/sd_rdwr.bin +firmware: ess/maestro3_assp_kernel.fw +firmware: ess/maestro3_assp_minisrc.fw +firmware: f2255usb.bin +firmware: fw.ram.bin +firmware: go7007fw.bin +firmware: go7007tv.bin +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-sdio-1.3.sbcf +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.fw +firmware: ipw2100-1.3-i.fw +firmware: ipw2100-1.3-p.fw +firmware: ipw2200-bss.fw +firmware: ipw2200-ibss.fw +firmware: ipw2200-sniffer.fw +firmware: isci/isci_firmware.bin +firmware: isdn/ISAR.BIN +firmware: isi4608.bin +firmware: isi4616.bin +firmware: isi608.bin +firmware: isi608em.bin +firmware: isi616em.bin +firmware: isight.fw +firmware: isl3886pci +firmware: isl3886usb +firmware: isl3887usb +firmware: iwlwifi-1000-5.ucode +firmware: iwlwifi-100-5.ucode +firmware: iwlwifi-105-6.ucode +firmware: iwlwifi-135-6.ucode +firmware: iwlwifi-2000-6.ucode +firmware: iwlwifi-2030-6.ucode +firmware: iwlwifi-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: iwmc3200top.1.fw +firmware: iwmc3200wifi-calib-sdio.bin +firmware: iwmc3200wifi-lmac-sdio.bin +firmware: iwmc3200wifi-umac-sdio.bin +firmware: kaweth/new_code.bin +firmware: kaweth/new_code_fix.bin +firmware: kaweth/trigger_code.bin +firmware: kaweth/trigger_code_fix.bin +firmware: keyspan/mpr.fw +firmware: keyspan_pda/keyspan_pda.fw +firmware: keyspan_pda/xircom_pgs.fw +firmware: keyspan/usa18x.fw +firmware: keyspan/usa19.fw +firmware: keyspan/usa19qi.fw +firmware: keyspan/usa19qw.fw +firmware: keyspan/usa19w.fw +firmware: keyspan/usa28.fw +firmware: keyspan/usa28xa.fw +firmware: keyspan/usa28xb.fw +firmware: keyspan/usa28x.fw +firmware: keyspan/usa49w.fw +firmware: keyspan/usa49wlc.fw +firmware: korg/k1212.dsp +firmware: lbtf_usb.bin +firmware: lgs8g75.fw +firmware: libertas/cf8305.bin +firmware: libertas/cf8381.bin +firmware: libertas/cf8381_helper.bin +firmware: libertas/cf8385.bin +firmware: libertas/cf8385_helper.bin +firmware: libertas_cs.fw +firmware: libertas_cs_helper.fw +firmware: libertas/gspi8385.bin +firmware: libertas/gspi8385_helper.bin +firmware: libertas/gspi8385_hlp.bin +firmware: libertas/gspi8686.bin +firmware: libertas/gspi8686_hlp.bin +firmware: libertas/gspi8686_v9.bin +firmware: libertas/gspi8686_v9_helper.bin +firmware: libertas/gspi8688.bin +firmware: libertas/gspi8688_helper.bin +firmware: libertas/sd8385.bin +firmware: libertas/sd8385_helper.bin +firmware: libertas/sd8686_v8.bin +firmware: libertas/sd8686_v8_helper.bin +firmware: libertas/sd8686_v9.bin +firmware: libertas/sd8686_v9_helper.bin +firmware: libertas/sd8688.bin +firmware: libertas/sd8688_helper.bin +firmware: libertas/usb8388.bin +firmware: libertas/usb8388_v5.bin +firmware: libertas/usb8388_v9.bin +firmware: libertas/usb8682.bin +firmware: matrox/g200_warp.fw +firmware: matrox/g400_warp.fw +firmware: mixart/miXart8AES.xlx +firmware: mixart/miXart8.elf +firmware: mixart/miXart8.xlx +firmware: mrvl/pcie8766_uapsta.bin +firmware: mrvl/sd8786_uapsta.bin +firmware: mrvl/sd8787_uapsta.bin +firmware: mrvl/sd8797_uapsta.bin +firmware: mrvl/usb8797_uapsta.bin +firmware: mts_cdma.fw +firmware: mts_edge.fw +firmware: mts_gsm.fw +firmware: mts_mt9234mu.fw +firmware: mts_mt9234zba.fw +firmware: mwl8k/fmimage_8363.fw +firmware: mwl8k/fmimage_8366_ap-2.fw +firmware: mwl8k/fmimage_8366.fw +firmware: mwl8k/fmimage_8687.fw +firmware: mwl8k/helper_8363.fw +firmware: mwl8k/helper_8366.fw +firmware: mwl8k/helper_8687.fw +firmware: myri10ge_ethp_z8e.dat +firmware: myri10ge_eth_z8e.dat +firmware: myri10ge_rss_ethp_z8e.dat +firmware: myri10ge_rss_eth_z8e.dat +firmware: orinoco_ezusb_fw +firmware: ositech/Xilinx7OD.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/BTC_rlc.bin +firmware: radeon/CAICOS_mc.bin +firmware: radeon/CAICOS_me.bin +firmware: radeon/CAICOS_pfp.bin +firmware: radeon/CAYMAN_mc.bin +firmware: radeon/CAYMAN_me.bin +firmware: radeon/CAYMAN_pfp.bin +firmware: radeon/CAYMAN_rlc.bin +firmware: radeon/CEDAR_me.bin +firmware: radeon/CEDAR_pfp.bin +firmware: radeon/CEDAR_rlc.bin +firmware: radeon/CYPRESS_me.bin +firmware: radeon/CYPRESS_pfp.bin +firmware: radeon/CYPRESS_rlc.bin +firmware: radeon/JUNIPER_me.bin +firmware: radeon/JUNIPER_pfp.bin +firmware: radeon/JUNIPER_rlc.bin +firmware: radeon/PALM_me.bin +firmware: radeon/PALM_pfp.bin +firmware: radeon/PITCAIRN_ce.bin +firmware: radeon/PITCAIRN_mc.bin +firmware: radeon/PITCAIRN_me.bin +firmware: radeon/PITCAIRN_pfp.bin +firmware: radeon/PITCAIRN_rlc.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/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/RV730_me.bin +firmware: radeon/RV730_pfp.bin +firmware: radeon/RV770_me.bin +firmware: radeon/RV770_pfp.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/TAHITI_ce.bin +firmware: radeon/TAHITI_mc.bin +firmware: radeon/TAHITI_me.bin +firmware: radeon/TAHITI_pfp.bin +firmware: radeon/TAHITI_rlc.bin +firmware: radeon/TURKS_mc.bin +firmware: radeon/TURKS_me.bin +firmware: radeon/TURKS_pfp.bin +firmware: radeon/VERDE_ce.bin +firmware: radeon/VERDE_mc.bin +firmware: radeon/VERDE_me.bin +firmware: radeon/VERDE_pfp.bin +firmware: radeon/VERDE_rlc.bin +firmware: riptide.hex +firmware: rt2561.bin +firmware: rt2561s.bin +firmware: rt2661.bin +firmware: rt2860.bin +firmware: rt2870.bin +firmware: rt73.bin +firmware: RTL8192E/boot.img +firmware: RTL8192E/data.img +firmware: RTL8192E/main.img +firmware: RTL8192U/boot.img +firmware: RTL8192U/data.img +firmware: RTL8192U/main.img +firmware: rtl_nic/rtl8105e-1.fw +firmware: rtl_nic/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/rtl8402-1.fw +firmware: rtl_nic/rtl8411-1.fw +firmware: rtlwifi/rtl8192cfw.bin +firmware: rtlwifi/rtl8192cfwU_B.bin +firmware: rtlwifi/rtl8192cfwU.bin +firmware: rtlwifi/rtl8192cufw.bin +firmware: rtlwifi/rtl8192defw.bin +firmware: rtlwifi/rtl8192sefw.bin +firmware: rtlwifi/rtl8712u.bin +firmware: s2250.fw +firmware: s2250_loader.fw +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: sndscape.co0 +firmware: sndscape.co1 +firmware: sndscape.co2 +firmware: sndscape.co3 +firmware: sndscape.co4 +firmware: softing-4.6/bcard2.bin +firmware: softing-4.6/bcard.bin +firmware: softing-4.6/cancard.bin +firmware: softing-4.6/cancrd2.bin +firmware: softing-4.6/cansja.bin +firmware: softing-4.6/ldcard2.bin +firmware: softing-4.6/ldcard.bin +firmware: solos-db-FPGA.bin +firmware: solos-Firmware.bin +firmware: solos-FPGA.bin +firmware: sun/cassini.bin +firmware: symbol_sp24t_prim_fw +firmware: symbol_sp24t_sec_fw +firmware: tehuti/bdx.bin +firmware: ti_3410.fw +firmware: ti_5052.fw +firmware: ti-connectivity/wl1271-nvs.bin +firmware: ti-connectivity/wl127x-fw-4-mr.bin +firmware: ti-connectivity/wl127x-fw-4-plt.bin +firmware: ti-connectivity/wl127x-fw-4-sr.bin +firmware: ti-connectivity/wl128x-fw-4-mr.bin +firmware: ti-connectivity/wl128x-fw-4-plt.bin +firmware: ti-connectivity/wl128x-fw-4-sr.bin +firmware: tigon/tg3.bin +firmware: tigon/tg3_tso5.bin +firmware: tigon/tg3_tso.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/adi930.fw +firmware: ueagle-atm/CMV4i.bin +firmware: ueagle-atm/CMV4i.bin.v2 +firmware: ueagle-atm/CMV4p.bin +firmware: ueagle-atm/CMV4p.bin.v2 +firmware: ueagle-atm/CMV9i.bin +firmware: ueagle-atm/CMV9i.bin.v2 +firmware: ueagle-atm/CMV9p.bin +firmware: ueagle-atm/CMV9p.bin.v2 +firmware: ueagle-atm/CMVei.bin +firmware: ueagle-atm/CMVei.bin.v2 +firmware: ueagle-atm/CMVep.bin +firmware: ueagle-atm/CMVep.bin.v2 +firmware: ueagle-atm/DSP4i.bin +firmware: ueagle-atm/DSP4p.bin +firmware: ueagle-atm/DSP9i.bin +firmware: ueagle-atm/DSP9p.bin +firmware: ueagle-atm/DSPei.bin +firmware: ueagle-atm/DSPep.bin +firmware: ueagle-atm/eagle.fw +firmware: ueagle-atm/eagleI.fw +firmware: ueagle-atm/eagleII.fw +firmware: ueagle-atm/eagleIII.fw +firmware: ueagle-atm/eagleIV.fw +firmware: usb8388.bin +firmware: usbduxfast_firmware.bin +firmware: usbdux_firmware.bin +firmware: usbduxsigma_firmware.bin +firmware: v4l-cx231xx-avcore-01.fw +firmware: v4l-cx23418-apu.fw +firmware: v4l-cx23418-cpu.fw +firmware: v4l-cx23418-dig.fw +firmware: v4l-cx2341x-dec.fw +firmware: v4l-cx2341x-enc.fw +firmware: v4l-cx2341x-init.mpg +firmware: v4l-cx23885-avcore-01.fw +firmware: v4l-cx23885-enc.fw +firmware: v4l-cx25840.fw +firmware: v4l-pvrusb2-24xxx-01.fw +firmware: v4l-pvrusb2-29xxx-01.fw +firmware: v4l-pvrusb2-73xxx-01.fw +firmware: vicam/firmware.fw +firmware: vx/bd56002.boot +firmware: vx/bd563s3.boot +firmware: vx/bd563v2.boot +firmware: vx/bx_1_vp4.b56 +firmware: vx/bx_1_vxp.b56 +firmware: vxge/X3fw.ncf +firmware: vxge/X3fw-pxe.ncf +firmware: vx/l_1_v22.d56 +firmware: vx/l_1_vp4.d56 +firmware: vx/l_1_vx2.d56 +firmware: vx/l_1_vxp.d56 +firmware: vx/x1_1_vp4.xlx +firmware: vx/x1_1_vx2.xlx +firmware: vx/x1_1_vxp.xlx +firmware: vx/x1_2_v22.xlx +firmware: wavefront.os +firmware: whiteheat.fw +firmware: whiteheat_loader.fw +firmware: wl1251-fw.bin +firmware: xc3028-v27.fw +firmware: yam/1200.bin +firmware: yam/9600.bin +firmware: yamaha/ds1_ctrl.fw +firmware: yamaha/ds1_dsp.fw +firmware: yamaha/ds1e_ctrl.fw +firmware: yamaha/yss225_registers.bin +firmware: zd1201-ap.fw +firmware: zd1201.fw +firmware: zd1211/zd1211b_ub +firmware: zd1211/zd1211b_uphr +firmware: zd1211/zd1211b_ur +firmware: zd1211/zd1211_ub +firmware: zd1211/zd1211_uphr +firmware: zd1211/zd1211_ur --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/highbank.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/highbank.modules @@ -0,0 +1,2308 @@ +6lowpan +8021q +8250 +8250_dw +9p +9pnet +a3d +a8293 +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +batman-adv +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpck +bpck6 +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfbcopyarea +cfbfillrect +cfbimgblt +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cobra +coda +comm +configfs +cordic +core +cp210x +cpia2 +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlm +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +dstr +dummy +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 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dynapro +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +epat +epia +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +extcon_class +extcon_gpio +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fit2 +fit3 +fm_drv +freevxfs +friq +frpw +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio_vbus +g_printer +gre +grip +grip_mp +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdpvr +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +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_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbic +kbtab +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ktti +kxsd9 +kxtj9 +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-atmel-pwm +leds-bd2802 +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8952 +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 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mk712 +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nand +nand_bch +nand_ecc +nand_ids +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +nilfs2 +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +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 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +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 +pcrypt +pd +pda_power +peak_usb +pegasus +penmount +pf +pg +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +serio_raw +sermouse +serpent_generic +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-page-alloc +snd-pcm +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-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-timer +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softing +soundcore +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 +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tca6416-keypad +tca8418_keypad +tcm825x +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl6030-pwm +twl6030-usb +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +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 +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w83627ehf +w83627hf +w83781d +w83791d +w83792d +w83793 +w83795 +w83l785ts +w83l786ng +w90p910_ts +wacom +wacom_i2c +wacom_w8001 +walkera0701 +warrior +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm8400-regulator +wm8739 +wm8775 +wm97xx-ts +wp512 +x25 +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/highbank.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/highbank.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/omap.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/omap.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/omap.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/omap.modules @@ -0,0 +1,2432 @@ +6lowpan +6pack +8021q +8250_dw +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +a3d +a8293 +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amba-pl011 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax25 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm5974 +bcma +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cmtp +cobra +coda +configfs +cordic +core +cp210x +cpia2 +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +davinci_cpdma +davinci_mdio +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlci +dlm +dm644x_ccdc +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +dummy +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 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dw_wdt +dynapro +easycap +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +emif +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fm_drv +freevxfs +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +hfc4s8s_l1 +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_st5481 +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-designware-core +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +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_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1301_omap +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +kxsd9 +kxtj9 +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mailbox +mailbox_mach +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max63xx_wdt +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +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 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mk712 +mkiss +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +netrom +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +n_hdlc +nilfs2 +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 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +of_serial +old_belkin-sir +omap +omap2 +omap2430 +omap4-keypad +omap-aes +omap_hdq +omap-sham +omap-vout +omap_wdt +omfs +omninet +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +panel-acx565akm +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11-01b +panel-picodlp +parkbd +parport +parport_ax88796 +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcwd_usb +pda_power +peak_usb +pegasus +penmount +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +ser_gigaset +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-igep0020 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-omap3evm +snd-soc-omap3pandora +snd-soc-overo +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sdp3430 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-soc-zoom2 +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +sp805_wdt +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 +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-omap2-mcspi +spi-pl022 +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test-kstrtox +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +tidspbridge +ti_hecc +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_tscadc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +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 +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpfe_capture +vpss +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +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 +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgmac +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/highbank +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/highbank @@ -0,0 +1,9934 @@ +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_free_64k +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_4k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_4k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_64k_bbe +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_init_64k_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_lle +EXPORT_SYMBOL crypto/gf128mul 0x00000000 gf128mul_x_ble +EXPORT_SYMBOL crypto/xor 0x00000000 xor_blocks +EXPORT_SYMBOL drivers/bcma/bcma 0x00000000 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_disk_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x00000000 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0x00000000 pi_write_regr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x00000000 ipmi_validate_addr +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 __nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x00000000 nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x00000000 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_clflush_virt_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_insert_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00000000 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00000000 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x00000000 drm_usb_init +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x00000000 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x00000000 vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x00000000 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x00000000 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x00000000 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x00000000 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x00000000 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x00000000 iio_kfifo_free +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x00000000 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x00000000 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x00000000 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x00000000 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_init +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x00000000 cma3000_suspend +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x00000000 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x00000000 ad7879_remove +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x00000000 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x00000000 dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0x00000000 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x00000000 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x00000000 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x00000000 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x00000000 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x00000000 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x00000000 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x00000000 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x00000000 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x00000000 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x00000000 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x00000000 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x00000000 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x00000000 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x00000000 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x00000000 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x00000000 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x00000000 timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x00000000 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x00000000 rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x00000000 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x00000000 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0x00000000 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x00000000 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x00000000 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x00000000 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x00000000 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x00000000 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x00000000 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x00000000 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x00000000 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x00000000 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x00000000 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x00000000 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x00000000 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x00000000 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x00000000 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x00000000 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00000000 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x00000000 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x00000000 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x00000000 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x00000000 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x00000000 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x00000000 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x00000000 systime +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x00000000 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x00000000 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x00000000 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x00000000 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x00000000 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x00000000 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x00000000 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0x00000000 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x00000000 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x00000000 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x00000000 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x00000000 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x00000000 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x00000000 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x00000000 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x00000000 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x00000000 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x00000000 lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x00000000 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x00000000 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x00000000 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0x00000000 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x00000000 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x00000000 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x00000000 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x00000000 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x00000000 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x00000000 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x00000000 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0x00000000 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x00000000 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x00000000 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x00000000 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x00000000 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x00000000 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x00000000 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x00000000 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x00000000 s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x00000000 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x00000000 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x00000000 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x00000000 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x00000000 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x00000000 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x00000000 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x00000000 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x00000000 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x00000000 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x00000000 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x00000000 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x00000000 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x00000000 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x00000000 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x00000000 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x00000000 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x00000000 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0x00000000 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x00000000 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x00000000 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x00000000 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x00000000 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x00000000 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x00000000 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x00000000 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x00000000 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x00000000 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x00000000 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0x00000000 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x00000000 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x00000000 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x00000000 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x00000000 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x00000000 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x00000000 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x00000000 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x00000000 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0x00000000 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x00000000 cx2341x_update +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x00000000 gspca_suspend +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x00000000 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x00000000 soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x00000000 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/tveeprom 0x00000000 tveeprom_read +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x00000000 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x00000000 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x00000000 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x00000000 video_usercopy +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x00000000 memstick_unregister_driver +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x00000000 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x00000000 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x00000000 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x00000000 tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_config +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x00000000 pwm_request +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x00000000 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x00000000 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x00000000 altera_init +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 __pwm_channel_onoff +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_free +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_channel_handler +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_clk_alloc +EXPORT_SYMBOL drivers/misc/atmel_pwm 0x00000000 pwm_clk_free +EXPORT_SYMBOL drivers/misc/c2port/core 0x00000000 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x00000000 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x00000000 dw_mci_suspend +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x00000000 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x00000000 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x00000000 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x00000000 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x00000000 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x00000000 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x00000000 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00000000 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x00000000 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x00000000 nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x00000000 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x00000000 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x00000000 onenand_scan_bbt +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x00000000 sirdev_write_complete +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x00000000 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x00000000 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0x00000000 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x00000000 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x00000000 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x00000000 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00000000 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x00000000 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x00000000 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x00000000 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00000000 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x00000000 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x00000000 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x00000000 parport_write +EXPORT_SYMBOL drivers/parport/parport_pc 0x00000000 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x00000000 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x00000000 pps_unregister_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x00000000 libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x00000000 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x00000000 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x00000000 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x00000000 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x00000000 spi_schedule_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x00000000 ssb_set_devtypedata +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x00000000 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x00000000 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x00000000 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x00000000 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x00000000 phone_register_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x00000000 phone_unregister_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x00000000 transport_wait_for_tasks +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_do_pm +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x00000000 serial8250_unregister_port +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x00000000 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x00000000 sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x00000000 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x00000000 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x00000000 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x00000000 genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x00000000 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0x00000000 lcd_device_unregister +EXPORT_SYMBOL drivers/video/cfbcopyarea 0x00000000 cfb_copyarea +EXPORT_SYMBOL drivers/video/cfbfillrect 0x00000000 cfb_fillrect +EXPORT_SYMBOL drivers/video/cfbimgblt 0x00000000 cfb_imageblit +EXPORT_SYMBOL drivers/video/output 0x00000000 video_output_register +EXPORT_SYMBOL drivers/video/output 0x00000000 video_output_unregister +EXPORT_SYMBOL drivers/video/syscopyarea 0x00000000 sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x00000000 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x00000000 sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x00000000 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x00000000 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x00000000 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0x00000000 w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_fini +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0x00000000 ulist_reinit +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x00000000 configfs_unregister_subsystem +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x00000000 fscache_withdraw_cache +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_get_whotype +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_new +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/nfsd/nfsd 0x00000000 nfs4_acl_write_who +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x00000000 qtree_write_dquot +EXPORT_SYMBOL lib/cordic 0x00000000 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x00000000 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x00000000 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0x00000000 crc_itu_t +EXPORT_SYMBOL lib/crc-itu-t 0x00000000 crc_itu_t_table +EXPORT_SYMBOL lib/crc7 0x00000000 crc7 +EXPORT_SYMBOL lib/crc7 0x00000000 crc7_syndrome_table +EXPORT_SYMBOL lib/crc8 0x00000000 crc8 +EXPORT_SYMBOL lib/crc8 0x00000000 crc8_populate_lsb +EXPORT_SYMBOL lib/crc8 0x00000000 crc8_populate_msb +EXPORT_SYMBOL lib/libcrc32c 0x00000000 crc32c +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_create +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_del +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_find +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_get +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_put +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_set +EXPORT_SYMBOL lib/lru_cache 0x00000000 lc_try_get +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_empty_zero_page +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfexi +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfexp +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfinv +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_gfmul +EXPORT_SYMBOL lib/raid6/raid6_pq 0x00000000 raid6_vgfmul +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateEnd +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x00000000 zlib_deflate_workspacesize +EXPORT_SYMBOL net/802/p8022 0x00000000 register_8022_client +EXPORT_SYMBOL net/802/p8022 0x00000000 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x00000000 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0x00000000 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x00000000 register_snap_client +EXPORT_SYMBOL net/802/psnap 0x00000000 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x00000000 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x00000000 v9fs_unregister_trans +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x00000000 atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_charge +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0x00000000 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x00000000 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x00000000 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x00000000 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0x00000000 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_hash +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x00000000 vcc_sklist_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x00000000 hci_unregister_dev +EXPORT_SYMBOL net/bridge/bridge 0x00000000 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x00000000 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x00000000 caif_free_client +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x00000000 cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0x00000000 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x00000000 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x00000000 can_ioctl +EXPORT_SYMBOL net/can/can 0x00000000 can_proto_register +EXPORT_SYMBOL net/can/can 0x00000000 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x00000000 can_rx_register +EXPORT_SYMBOL net/can/can 0x00000000 can_rx_unregister +EXPORT_SYMBOL net/can/can 0x00000000 can_send +EXPORT_SYMBOL net/ceph/libceph 0x00000000 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x00000000 ceph_zero_page_vector_range +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x00000000 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x00000000 wpan_phy_unregister +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x00000000 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x00000000 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/tunnel4 0x00000000 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x00000000 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x00000000 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x00000000 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x00000000 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x00000000 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x00000000 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x00000000 ircomm_open +EXPORT_SYMBOL net/irda/irda 0x00000000 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x00000000 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x00000000 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_find +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_new +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x00000000 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x00000000 irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_close +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x00000000 iriap_open +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x00000000 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0x00000000 irlap_close +EXPORT_SYMBOL net/irda/irda 0x00000000 irlap_open +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x00000000 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x00000000 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x00000000 proc_irda +EXPORT_SYMBOL net/l2tp/l2tp_core 0x00000000 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x00000000 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x00000000 llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x00000000 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x00000000 xt_unregister_targets +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x00000000 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0x00000000 nci_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x00000000 nfc_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x00000000 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x00000000 pn_sock_unhash +EXPORT_SYMBOL net/rds/rds 0x00000000 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x00000000 rxrpc_kernel_send_data +EXPORT_SYMBOL net/sctp/sctp 0x00000000 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x00000000 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x00000000 wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0x00000000 wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x00000000 wiphy_unregister +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x00000000 print_ssid +EXPORT_SYMBOL sound/ac97_bus 0x00000000 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x00000000 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0x00000000 snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_autoload_lock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_load_drivers +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x00000000 snd_seq_device_unregister_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x00000000 snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x00000000 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x00000000 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x00000000 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0x00000000 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x00000000 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_create +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_cards +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_component_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_device_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_major +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x00000000 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd-hwdep 0x00000000 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x00000000 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_big_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x00000000 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x00000000 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x00000000 snd_timer_stop +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x00000000 snd_mpu401_uart_new +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x00000000 snd_ac97_write_cache +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x00000000 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x00000000 sound_class +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_midi +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x00000000 unregister_sound_special +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_disconnect +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x00000000 snd_usbmidi_input_stop +EXPORT_SYMBOL vmlinux 0x00000000 I_BDEV +EXPORT_SYMBOL vmlinux 0x00000000 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x00000000 ___ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x00000000 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_skb +EXPORT_SYMBOL vmlinux 0x00000000 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x00000000 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x00000000 __arm_iounmap +EXPORT_SYMBOL vmlinux 0x00000000 __ashldi3 +EXPORT_SYMBOL vmlinux 0x00000000 __ashrdi3 +EXPORT_SYMBOL vmlinux 0x00000000 __bad_xchg +EXPORT_SYMBOL vmlinux 0x00000000 __bdevname +EXPORT_SYMBOL vmlinux 0x00000000 __bforget +EXPORT_SYMBOL vmlinux 0x00000000 __bio_clone +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_and +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_complement +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_equal +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_full +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_intersects +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_or +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_parse +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x00000000 __bitmap_xor +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x00000000 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x00000000 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0x00000000 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x00000000 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x00000000 __block_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x00000000 __bread +EXPORT_SYMBOL vmlinux 0x00000000 __breadahead +EXPORT_SYMBOL vmlinux 0x00000000 __break_lease +EXPORT_SYMBOL vmlinux 0x00000000 __brelse +EXPORT_SYMBOL vmlinux 0x00000000 __cap_empty_set +EXPORT_SYMBOL vmlinux 0x00000000 __check_region +EXPORT_SYMBOL vmlinux 0x00000000 __clear_user +EXPORT_SYMBOL vmlinux 0x00000000 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x00000000 __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x00000000 __const_udelay +EXPORT_SYMBOL vmlinux 0x00000000 __copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __copy_to_user +EXPORT_SYMBOL vmlinux 0x00000000 __crc32c_le +EXPORT_SYMBOL vmlinux 0x00000000 __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x00000000 __d_drop +EXPORT_SYMBOL vmlinux 0x00000000 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __destroy_inode +EXPORT_SYMBOL vmlinux 0x00000000 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x00000000 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x00000000 __dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00000000 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 __devm_release_region +EXPORT_SYMBOL vmlinux 0x00000000 __devm_request_region +EXPORT_SYMBOL vmlinux 0x00000000 __div0 +EXPORT_SYMBOL vmlinux 0x00000000 __div64_32 +EXPORT_SYMBOL vmlinux 0x00000000 __divsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __do_div64 +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x00000000 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x00000000 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x00000000 __dst_free +EXPORT_SYMBOL vmlinux 0x00000000 __elv_add_request +EXPORT_SYMBOL vmlinux 0x00000000 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x00000000 __f_setown +EXPORT_SYMBOL vmlinux 0x00000000 __find_get_block +EXPORT_SYMBOL vmlinux 0x00000000 __first_cpu +EXPORT_SYMBOL vmlinux 0x00000000 __free_pages +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_init +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_load +EXPORT_SYMBOL vmlinux 0x00000000 __frontswap_store +EXPORT_SYMBOL vmlinux 0x00000000 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x00000000 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x00000000 __get_free_pages +EXPORT_SYMBOL vmlinux 0x00000000 __get_page_tail +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_1 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_2 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_4 +EXPORT_SYMBOL vmlinux 0x00000000 __get_user_pages +EXPORT_SYMBOL vmlinux 0x00000000 __getblk +EXPORT_SYMBOL vmlinux 0x00000000 __gnu_mcount_nc +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_init +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x00000000 __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x00000000 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __inet6_hash +EXPORT_SYMBOL vmlinux 0x00000000 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x00000000 __init_rwsem +EXPORT_SYMBOL vmlinux 0x00000000 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x00000000 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x00000000 __invalidate_device +EXPORT_SYMBOL vmlinux 0x00000000 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x00000000 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x00000000 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 __irq_regs +EXPORT_SYMBOL vmlinux 0x00000000 __kernel_param_lock +EXPORT_SYMBOL vmlinux 0x00000000 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_free +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_in +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_init +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x00000000 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x00000000 __kfree_skb +EXPORT_SYMBOL vmlinux 0x00000000 __kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x00000000 __krealloc +EXPORT_SYMBOL vmlinux 0x00000000 __kunmap_atomic +EXPORT_SYMBOL vmlinux 0x00000000 __lock_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __lock_page +EXPORT_SYMBOL vmlinux 0x00000000 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x00000000 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x00000000 __lshrdi3 +EXPORT_SYMBOL vmlinux 0x00000000 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x00000000 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x00000000 __memzero +EXPORT_SYMBOL vmlinux 0x00000000 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x00000000 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 __modsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __module_get +EXPORT_SYMBOL vmlinux 0x00000000 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x00000000 __muldi3 +EXPORT_SYMBOL vmlinux 0x00000000 __mutex_init +EXPORT_SYMBOL vmlinux 0x00000000 __napi_complete +EXPORT_SYMBOL vmlinux 0x00000000 __napi_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x00000000 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x00000000 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x00000000 __netdev_printk +EXPORT_SYMBOL vmlinux 0x00000000 __netif_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x00000000 __next_cpu +EXPORT_SYMBOL vmlinux 0x00000000 __nla_put +EXPORT_SYMBOL vmlinux 0x00000000 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 __nla_reserve +EXPORT_SYMBOL vmlinux 0x00000000 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x00000000 __page_symlink +EXPORT_SYMBOL vmlinux 0x00000000 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x00000000 __pagevec_release +EXPORT_SYMBOL vmlinux 0x00000000 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x00000000 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x00000000 __print_symbol +EXPORT_SYMBOL vmlinux 0x00000000 __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 __ps2_command +EXPORT_SYMBOL vmlinux 0x00000000 __pskb_copy +EXPORT_SYMBOL vmlinux 0x00000000 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x00000000 __put_cred +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_1 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_2 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_4 +EXPORT_SYMBOL vmlinux 0x00000000 __put_user_8 +EXPORT_SYMBOL vmlinux 0x00000000 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x00000000 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x00000000 __quota_error +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsb +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsl +EXPORT_SYMBOL vmlinux 0x00000000 __raw_readsw +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesb +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesl +EXPORT_SYMBOL vmlinux 0x00000000 __raw_writesw +EXPORT_SYMBOL vmlinux 0x00000000 __readwrite_bug +EXPORT_SYMBOL vmlinux 0x00000000 __refrigerator +EXPORT_SYMBOL vmlinux 0x00000000 __register_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 __register_chrdev +EXPORT_SYMBOL vmlinux 0x00000000 __release_region +EXPORT_SYMBOL vmlinux 0x00000000 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x00000000 __request_module +EXPORT_SYMBOL vmlinux 0x00000000 __request_region +EXPORT_SYMBOL vmlinux 0x00000000 __rta_fill +EXPORT_SYMBOL vmlinux 0x00000000 __scm_destroy +EXPORT_SYMBOL vmlinux 0x00000000 __scm_send +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_print_command +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x00000000 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x00000000 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x00000000 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x00000000 __seq_open_private +EXPORT_SYMBOL vmlinux 0x00000000 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 __serio_register_port +EXPORT_SYMBOL vmlinux 0x00000000 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x00000000 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0x00000000 __set_personality +EXPORT_SYMBOL vmlinux 0x00000000 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x00000000 __sg_free_table +EXPORT_SYMBOL vmlinux 0x00000000 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x00000000 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x00000000 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x00000000 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x00000000 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x00000000 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x00000000 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x00000000 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x00000000 __sock_create +EXPORT_SYMBOL vmlinux 0x00000000 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x00000000 __stack_chk_fail +EXPORT_SYMBOL vmlinux 0x00000000 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x00000000 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x00000000 __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 __strnlen_user +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x00000000 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0x00000000 __symbol_put +EXPORT_SYMBOL vmlinux 0x00000000 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0x00000000 __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x00000000 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x00000000 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x00000000 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x00000000 __udelay +EXPORT_SYMBOL vmlinux 0x00000000 __udivsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __umodsi3 +EXPORT_SYMBOL vmlinux 0x00000000 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x00000000 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x00000000 __vmalloc +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x00000000 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x00000000 __wake_up +EXPORT_SYMBOL vmlinux 0x00000000 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x00000000 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x00000000 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x00000000 _change_bit +EXPORT_SYMBOL vmlinux 0x00000000 _clear_bit +EXPORT_SYMBOL vmlinux 0x00000000 _cond_resched +EXPORT_SYMBOL vmlinux 0x00000000 _ctype +EXPORT_SYMBOL vmlinux 0x00000000 _dev_info +EXPORT_SYMBOL vmlinux 0x00000000 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x00000000 _kstrtol +EXPORT_SYMBOL vmlinux 0x00000000 _kstrtoul +EXPORT_SYMBOL vmlinux 0x00000000 _local_bh_enable +EXPORT_SYMBOL vmlinux 0x00000000 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x00000000 _memcpy_toio +EXPORT_SYMBOL vmlinux 0x00000000 _memset_io +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x00000000 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x00000000 _set_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_change_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x00000000 _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x00000000 abort +EXPORT_SYMBOL vmlinux 0x00000000 abort_creds +EXPORT_SYMBOL vmlinux 0x00000000 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x00000000 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x00000000 account_page_redirty +EXPORT_SYMBOL vmlinux 0x00000000 account_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 add_device_randomness +EXPORT_SYMBOL vmlinux 0x00000000 add_disk +EXPORT_SYMBOL vmlinux 0x00000000 add_taint +EXPORT_SYMBOL vmlinux 0x00000000 add_timer +EXPORT_SYMBOL vmlinux 0x00000000 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x00000000 add_wait_queue +EXPORT_SYMBOL vmlinux 0x00000000 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x00000000 address_space_init_once +EXPORT_SYMBOL vmlinux 0x00000000 adjust_resource +EXPORT_SYMBOL vmlinux 0x00000000 aio_complete +EXPORT_SYMBOL vmlinux 0x00000000 aio_put_req +EXPORT_SYMBOL vmlinux 0x00000000 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x00000000 alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x00000000 alloc_disk +EXPORT_SYMBOL vmlinux 0x00000000 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x00000000 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x00000000 alloc_file +EXPORT_SYMBOL vmlinux 0x00000000 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x00000000 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x00000000 allocate_resource +EXPORT_SYMBOL vmlinux 0x00000000 allow_signal +EXPORT_SYMBOL vmlinux 0x00000000 amba_device_register +EXPORT_SYMBOL vmlinux 0x00000000 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 amba_driver_register +EXPORT_SYMBOL vmlinux 0x00000000 amba_driver_unregister +EXPORT_SYMBOL vmlinux 0x00000000 amba_find_device +EXPORT_SYMBOL vmlinux 0x00000000 amba_release_regions +EXPORT_SYMBOL vmlinux 0x00000000 amba_request_regions +EXPORT_SYMBOL vmlinux 0x00000000 argv_free +EXPORT_SYMBOL vmlinux 0x00000000 argv_split +EXPORT_SYMBOL vmlinux 0x00000000 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x00000000 arm_dma_ops +EXPORT_SYMBOL vmlinux 0x00000000 arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0x00000000 arp_create +EXPORT_SYMBOL vmlinux 0x00000000 arp_find +EXPORT_SYMBOL vmlinux 0x00000000 arp_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 arp_send +EXPORT_SYMBOL vmlinux 0x00000000 arp_tbl +EXPORT_SYMBOL vmlinux 0x00000000 arp_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_link_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_port_printk +EXPORT_SYMBOL vmlinux 0x00000000 ata_print_version +EXPORT_SYMBOL vmlinux 0x00000000 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x00000000 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x00000000 audit_log +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_end +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_format +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_secctx +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_start +EXPORT_SYMBOL vmlinux 0x00000000 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x00000000 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0x00000000 avenrun +EXPORT_SYMBOL vmlinux 0x00000000 backlight_device_register +EXPORT_SYMBOL vmlinux 0x00000000 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 backlight_force_update +EXPORT_SYMBOL vmlinux 0x00000000 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x00000000 bcd2bin +EXPORT_SYMBOL vmlinux 0x00000000 bd_set_size +EXPORT_SYMBOL vmlinux 0x00000000 bdev_read_only +EXPORT_SYMBOL vmlinux 0x00000000 bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 bdevname +EXPORT_SYMBOL vmlinux 0x00000000 bdget +EXPORT_SYMBOL vmlinux 0x00000000 bdget_disk +EXPORT_SYMBOL vmlinux 0x00000000 bdi_destroy +EXPORT_SYMBOL vmlinux 0x00000000 bdi_init +EXPORT_SYMBOL vmlinux 0x00000000 bdi_register +EXPORT_SYMBOL vmlinux 0x00000000 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x00000000 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x00000000 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x00000000 bdi_unregister +EXPORT_SYMBOL vmlinux 0x00000000 bdput +EXPORT_SYMBOL vmlinux 0x00000000 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x00000000 bh_submit_read +EXPORT_SYMBOL vmlinux 0x00000000 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x00000000 bin2bcd +EXPORT_SYMBOL vmlinux 0x00000000 bio_add_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_alloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x00000000 bio_clone +EXPORT_SYMBOL vmlinux 0x00000000 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x00000000 bio_copy_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_endio +EXPORT_SYMBOL vmlinux 0x00000000 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x00000000 bio_free +EXPORT_SYMBOL vmlinux 0x00000000 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x00000000 bio_init +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x00000000 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x00000000 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 bio_map_kern +EXPORT_SYMBOL vmlinux 0x00000000 bio_map_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_pair_release +EXPORT_SYMBOL vmlinux 0x00000000 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x00000000 bio_put +EXPORT_SYMBOL vmlinux 0x00000000 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x00000000 bio_split +EXPORT_SYMBOL vmlinux 0x00000000 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x00000000 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x00000000 bioset_create +EXPORT_SYMBOL vmlinux 0x00000000 bioset_free +EXPORT_SYMBOL vmlinux 0x00000000 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x00000000 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x00000000 bit_waitqueue +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_bitremap +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_clear +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_fold +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_onto +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_remap +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_set +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x00000000 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x00000000 bitrev16 +EXPORT_SYMBOL vmlinux 0x00000000 bitrev32 +EXPORT_SYMBOL vmlinux 0x00000000 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x00000000 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_complete_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x00000000 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x00000000 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_finish_plug +EXPORT_SYMBOL vmlinux 0x00000000 blk_free_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_get_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x00000000 blk_init_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x00000000 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x00000000 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0x00000000 blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x00000000 blk_make_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x00000000 blk_peek_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_put_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_put_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x00000000 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x00000000 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x00000000 blk_register_region +EXPORT_SYMBOL vmlinux 0x00000000 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_init +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x00000000 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x00000000 blk_run_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x00000000 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_plug +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_start_request +EXPORT_SYMBOL vmlinux 0x00000000 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x00000000 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x00000000 blk_verify_command +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x00000000 blkdev_put +EXPORT_SYMBOL vmlinux 0x00000000 block_all_signals +EXPORT_SYMBOL vmlinux 0x00000000 block_commit_write +EXPORT_SYMBOL vmlinux 0x00000000 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x00000000 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x00000000 block_read_full_page +EXPORT_SYMBOL vmlinux 0x00000000 block_truncate_page +EXPORT_SYMBOL vmlinux 0x00000000 block_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 block_write_end +EXPORT_SYMBOL vmlinux 0x00000000 block_write_full_page +EXPORT_SYMBOL vmlinux 0x00000000 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x00000000 bmap +EXPORT_SYMBOL vmlinux 0x00000000 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0x00000000 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x00000000 brioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 bsearch +EXPORT_SYMBOL vmlinux 0x00000000 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x00000000 build_skb +EXPORT_SYMBOL vmlinux 0x00000000 cacheid +EXPORT_SYMBOL vmlinux 0x00000000 cad_pid +EXPORT_SYMBOL vmlinux 0x00000000 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x00000000 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x00000000 can_do_mlock +EXPORT_SYMBOL vmlinux 0x00000000 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x00000000 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x00000000 cap_mmap_addr +EXPORT_SYMBOL vmlinux 0x00000000 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x00000000 capable +EXPORT_SYMBOL vmlinux 0x00000000 cdev_add +EXPORT_SYMBOL vmlinux 0x00000000 cdev_alloc +EXPORT_SYMBOL vmlinux 0x00000000 cdev_del +EXPORT_SYMBOL vmlinux 0x00000000 cdev_init +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_open +EXPORT_SYMBOL vmlinux 0x00000000 cdrom_release +EXPORT_SYMBOL vmlinux 0x00000000 check_disk_change +EXPORT_SYMBOL vmlinux 0x00000000 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x00000000 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x00000000 clear_inode +EXPORT_SYMBOL vmlinux 0x00000000 clear_nlink +EXPORT_SYMBOL vmlinux 0x00000000 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x00000000 clk_add_alias +EXPORT_SYMBOL vmlinux 0x00000000 clk_get +EXPORT_SYMBOL vmlinux 0x00000000 clk_get_sys +EXPORT_SYMBOL vmlinux 0x00000000 clk_put +EXPORT_SYMBOL vmlinux 0x00000000 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_add +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_alloc +EXPORT_SYMBOL vmlinux 0x00000000 clkdev_drop +EXPORT_SYMBOL vmlinux 0x00000000 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_register +EXPORT_SYMBOL vmlinux 0x00000000 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x00000000 color_table +EXPORT_SYMBOL vmlinux 0x00000000 commit_creds +EXPORT_SYMBOL vmlinux 0x00000000 complete +EXPORT_SYMBOL vmlinux 0x00000000 complete_all +EXPORT_SYMBOL vmlinux 0x00000000 complete_and_exit +EXPORT_SYMBOL vmlinux 0x00000000 complete_request_key +EXPORT_SYMBOL vmlinux 0x00000000 completion_done +EXPORT_SYMBOL vmlinux 0x00000000 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x00000000 con_is_bound +EXPORT_SYMBOL vmlinux 0x00000000 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x00000000 congestion_wait +EXPORT_SYMBOL vmlinux 0x00000000 console_blank_hook +EXPORT_SYMBOL vmlinux 0x00000000 console_blanked +EXPORT_SYMBOL vmlinux 0x00000000 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0x00000000 console_lock +EXPORT_SYMBOL vmlinux 0x00000000 console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x00000000 console_start +EXPORT_SYMBOL vmlinux 0x00000000 console_stop +EXPORT_SYMBOL vmlinux 0x00000000 console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x00000000 console_trylock +EXPORT_SYMBOL vmlinux 0x00000000 console_unlock +EXPORT_SYMBOL vmlinux 0x00000000 consume_skb +EXPORT_SYMBOL vmlinux 0x00000000 cont_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 contig_page_data +EXPORT_SYMBOL vmlinux 0x00000000 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 copy_page +EXPORT_SYMBOL vmlinux 0x00000000 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x00000000 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x00000000 cpu_cache +EXPORT_SYMBOL vmlinux 0x00000000 cpu_down +EXPORT_SYMBOL vmlinux 0x00000000 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x00000000 cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x00000000 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x00000000 cpu_tlb +EXPORT_SYMBOL vmlinux 0x00000000 cpu_user +EXPORT_SYMBOL vmlinux 0x00000000 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0x00000000 cpu_v7_set_pte_ext +EXPORT_SYMBOL vmlinux 0x00000000 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x00000000 crc16 +EXPORT_SYMBOL vmlinux 0x00000000 crc16_table +EXPORT_SYMBOL vmlinux 0x00000000 crc32_be +EXPORT_SYMBOL vmlinux 0x00000000 crc32_le +EXPORT_SYMBOL vmlinux 0x00000000 crc_t10dif +EXPORT_SYMBOL vmlinux 0x00000000 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x00000000 create_proc_entry +EXPORT_SYMBOL vmlinux 0x00000000 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00000000 csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x00000000 current_fs_time +EXPORT_SYMBOL vmlinux 0x00000000 current_kernel_time +EXPORT_SYMBOL vmlinux 0x00000000 current_umask +EXPORT_SYMBOL vmlinux 0x00000000 d_add_ci +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc_name +EXPORT_SYMBOL vmlinux 0x00000000 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x00000000 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0x00000000 d_delete +EXPORT_SYMBOL vmlinux 0x00000000 d_drop +EXPORT_SYMBOL vmlinux 0x00000000 d_find_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_genocide +EXPORT_SYMBOL vmlinux 0x00000000 d_instantiate +EXPORT_SYMBOL vmlinux 0x00000000 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x00000000 d_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 d_lookup +EXPORT_SYMBOL vmlinux 0x00000000 d_make_root +EXPORT_SYMBOL vmlinux 0x00000000 d_move +EXPORT_SYMBOL vmlinux 0x00000000 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_path +EXPORT_SYMBOL vmlinux 0x00000000 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x00000000 d_rehash +EXPORT_SYMBOL vmlinux 0x00000000 d_set_d_op +EXPORT_SYMBOL vmlinux 0x00000000 d_splice_alias +EXPORT_SYMBOL vmlinux 0x00000000 d_validate +EXPORT_SYMBOL vmlinux 0x00000000 daemonize +EXPORT_SYMBOL vmlinux 0x00000000 datagram_poll +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x00000000 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x00000000 dcache_readdir +EXPORT_SYMBOL vmlinux 0x00000000 dcb_getapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x00000000 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x00000000 dcb_setapp +EXPORT_SYMBOL vmlinux 0x00000000 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x00000000 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x00000000 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x00000000 deactivate_super +EXPORT_SYMBOL vmlinux 0x00000000 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 default_blu +EXPORT_SYMBOL vmlinux 0x00000000 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 default_grn +EXPORT_SYMBOL vmlinux 0x00000000 default_llseek +EXPORT_SYMBOL vmlinux 0x00000000 default_red +EXPORT_SYMBOL vmlinux 0x00000000 default_wake_function +EXPORT_SYMBOL vmlinux 0x00000000 del_gendisk +EXPORT_SYMBOL vmlinux 0x00000000 del_timer +EXPORT_SYMBOL vmlinux 0x00000000 del_timer_sync +EXPORT_SYMBOL vmlinux 0x00000000 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x00000000 dentry_open +EXPORT_SYMBOL vmlinux 0x00000000 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x00000000 dentry_unhash +EXPORT_SYMBOL vmlinux 0x00000000 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x00000000 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x00000000 dev_activate +EXPORT_SYMBOL vmlinux 0x00000000 dev_add_pack +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_addr_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_alert +EXPORT_SYMBOL vmlinux 0x00000000 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_base_lock +EXPORT_SYMBOL vmlinux 0x00000000 dev_change_flags +EXPORT_SYMBOL vmlinux 0x00000000 dev_close +EXPORT_SYMBOL vmlinux 0x00000000 dev_crit +EXPORT_SYMBOL vmlinux 0x00000000 dev_deactivate +EXPORT_SYMBOL vmlinux 0x00000000 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x00000000 dev_driver_string +EXPORT_SYMBOL vmlinux 0x00000000 dev_emerg +EXPORT_SYMBOL vmlinux 0x00000000 dev_err +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_index +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_flags +EXPORT_SYMBOL vmlinux 0x00000000 dev_get_stats +EXPORT_SYMBOL vmlinux 0x00000000 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x00000000 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x00000000 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 dev_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x00000000 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x00000000 dev_load +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x00000000 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x00000000 dev_notice +EXPORT_SYMBOL vmlinux 0x00000000 dev_open +EXPORT_SYMBOL vmlinux 0x00000000 dev_printk +EXPORT_SYMBOL vmlinux 0x00000000 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x00000000 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_group +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x00000000 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x00000000 dev_trans_start +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_add +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_del +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_init +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x00000000 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x00000000 dev_valid_name +EXPORT_SYMBOL vmlinux 0x00000000 dev_warn +EXPORT_SYMBOL vmlinux 0x00000000 devm_clk_get +EXPORT_SYMBOL vmlinux 0x00000000 devm_clk_put +EXPORT_SYMBOL vmlinux 0x00000000 devm_free_irq +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x00000000 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x00000000 devm_iounmap +EXPORT_SYMBOL vmlinux 0x00000000 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x00000000 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x00000000 dget_parent +EXPORT_SYMBOL vmlinux 0x00000000 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x00000000 disable_hlt +EXPORT_SYMBOL vmlinux 0x00000000 disable_irq +EXPORT_SYMBOL vmlinux 0x00000000 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x00000000 disallow_signal +EXPORT_SYMBOL vmlinux 0x00000000 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x00000000 div64_s64 +EXPORT_SYMBOL vmlinux 0x00000000 div64_u64 +EXPORT_SYMBOL vmlinux 0x00000000 div_s64_rem +EXPORT_SYMBOL vmlinux 0x00000000 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 dm_consume_args +EXPORT_SYMBOL vmlinux 0x00000000 dm_get_device +EXPORT_SYMBOL vmlinux 0x00000000 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x00000000 dm_io +EXPORT_SYMBOL vmlinux 0x00000000 dm_io_client_create +EXPORT_SYMBOL vmlinux 0x00000000 dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x00000000 dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x00000000 dm_put_device +EXPORT_SYMBOL vmlinux 0x00000000 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x00000000 dm_read_arg +EXPORT_SYMBOL vmlinux 0x00000000 dm_read_arg_group +EXPORT_SYMBOL vmlinux 0x00000000 dm_register_target +EXPORT_SYMBOL vmlinux 0x00000000 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_event +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_get_size +EXPORT_SYMBOL vmlinux 0x00000000 dm_table_put +EXPORT_SYMBOL vmlinux 0x00000000 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x00000000 dm_vcalloc +EXPORT_SYMBOL vmlinux 0x00000000 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x00000000 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x00000000 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x00000000 dma_find_channel +EXPORT_SYMBOL vmlinux 0x00000000 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x00000000 dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x00000000 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_create +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dma_pool_free +EXPORT_SYMBOL vmlinux 0x00000000 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x00000000 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dma_supported +EXPORT_SYMBOL vmlinux 0x00000000 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x00000000 dmaengine_get +EXPORT_SYMBOL vmlinux 0x00000000 dmaengine_put +EXPORT_SYMBOL vmlinux 0x00000000 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x00000000 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x00000000 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x00000000 dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x00000000 dns_query +EXPORT_SYMBOL vmlinux 0x00000000 do_SAK +EXPORT_SYMBOL vmlinux 0x00000000 do_blank_screen +EXPORT_SYMBOL vmlinux 0x00000000 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x00000000 do_settimeofday +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_direct +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_from +EXPORT_SYMBOL vmlinux 0x00000000 do_splice_to +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_read +EXPORT_SYMBOL vmlinux 0x00000000 do_sync_write +EXPORT_SYMBOL vmlinux 0x00000000 do_truncate +EXPORT_SYMBOL vmlinux 0x00000000 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x00000000 down +EXPORT_SYMBOL vmlinux 0x00000000 down_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 down_killable +EXPORT_SYMBOL vmlinux 0x00000000 down_read +EXPORT_SYMBOL vmlinux 0x00000000 down_read_trylock +EXPORT_SYMBOL vmlinux 0x00000000 down_timeout +EXPORT_SYMBOL vmlinux 0x00000000 down_trylock +EXPORT_SYMBOL vmlinux 0x00000000 down_write +EXPORT_SYMBOL vmlinux 0x00000000 down_write_trylock +EXPORT_SYMBOL vmlinux 0x00000000 downgrade_write +EXPORT_SYMBOL vmlinux 0x00000000 dput +EXPORT_SYMBOL vmlinux 0x00000000 dq_data_lock +EXPORT_SYMBOL vmlinux 0x00000000 dqget +EXPORT_SYMBOL vmlinux 0x00000000 dql_completed +EXPORT_SYMBOL vmlinux 0x00000000 dql_init +EXPORT_SYMBOL vmlinux 0x00000000 dql_reset +EXPORT_SYMBOL vmlinux 0x00000000 dqput +EXPORT_SYMBOL vmlinux 0x00000000 dqstats +EXPORT_SYMBOL vmlinux 0x00000000 dquot_acquire +EXPORT_SYMBOL vmlinux 0x00000000 dquot_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x00000000 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x00000000 dquot_commit +EXPORT_SYMBOL vmlinux 0x00000000 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x00000000 dquot_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dquot_disable +EXPORT_SYMBOL vmlinux 0x00000000 dquot_drop +EXPORT_SYMBOL vmlinux 0x00000000 dquot_enable +EXPORT_SYMBOL vmlinux 0x00000000 dquot_file_open +EXPORT_SYMBOL vmlinux 0x00000000 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x00000000 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x00000000 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x00000000 dquot_initialize +EXPORT_SYMBOL vmlinux 0x00000000 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x00000000 dquot_operations +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_on +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x00000000 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x00000000 dquot_release +EXPORT_SYMBOL vmlinux 0x00000000 dquot_resume +EXPORT_SYMBOL vmlinux 0x00000000 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x00000000 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x00000000 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x00000000 dquot_transfer +EXPORT_SYMBOL vmlinux 0x00000000 drop_nlink +EXPORT_SYMBOL vmlinux 0x00000000 drop_super +EXPORT_SYMBOL vmlinux 0x00000000 dst_alloc +EXPORT_SYMBOL vmlinux 0x00000000 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x00000000 dst_destroy +EXPORT_SYMBOL vmlinux 0x00000000 dst_discard +EXPORT_SYMBOL vmlinux 0x00000000 dst_release +EXPORT_SYMBOL vmlinux 0x00000000 dump_fpu +EXPORT_SYMBOL vmlinux 0x00000000 dump_seek +EXPORT_SYMBOL vmlinux 0x00000000 dump_stack +EXPORT_SYMBOL vmlinux 0x00000000 dump_write +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0x00000000 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x00000000 edac_mc_find +EXPORT_SYMBOL vmlinux 0x00000000 elevator_change +EXPORT_SYMBOL vmlinux 0x00000000 elevator_exit +EXPORT_SYMBOL vmlinux 0x00000000 elevator_init +EXPORT_SYMBOL vmlinux 0x00000000 elf_check_arch +EXPORT_SYMBOL vmlinux 0x00000000 elf_hwcap +EXPORT_SYMBOL vmlinux 0x00000000 elf_platform +EXPORT_SYMBOL vmlinux 0x00000000 elf_set_personality +EXPORT_SYMBOL vmlinux 0x00000000 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x00000000 elv_add_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x00000000 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_add +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_del +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_find +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x00000000 elv_register_queue +EXPORT_SYMBOL vmlinux 0x00000000 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x00000000 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x00000000 empty_aops +EXPORT_SYMBOL vmlinux 0x00000000 empty_zero_page +EXPORT_SYMBOL vmlinux 0x00000000 enable_hlt +EXPORT_SYMBOL vmlinux 0x00000000 enable_irq +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x00000000 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 end_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x00000000 eth_header +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_cache +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x00000000 eth_header_parse +EXPORT_SYMBOL vmlinux 0x00000000 eth_mac_addr +EXPORT_SYMBOL vmlinux 0x00000000 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x00000000 eth_type_trans +EXPORT_SYMBOL vmlinux 0x00000000 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x00000000 ether_setup +EXPORT_SYMBOL vmlinux 0x00000000 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x00000000 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x00000000 ewma_add +EXPORT_SYMBOL vmlinux 0x00000000 ewma_init +EXPORT_SYMBOL vmlinux 0x00000000 f_setown +EXPORT_SYMBOL vmlinux 0x00000000 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 fasync_helper +EXPORT_SYMBOL vmlinux 0x00000000 fb_add_videomode +EXPORT_SYMBOL vmlinux 0x00000000 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_blank +EXPORT_SYMBOL vmlinux 0x00000000 fb_class +EXPORT_SYMBOL vmlinux 0x00000000 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_default_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x00000000 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x00000000 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_best_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0x00000000 fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_get_options +EXPORT_SYMBOL vmlinux 0x00000000 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0x00000000 fb_match_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0x00000000 fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x00000000 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x00000000 fb_pan_display +EXPORT_SYMBOL vmlinux 0x00000000 fb_parse_edid +EXPORT_SYMBOL vmlinux 0x00000000 fb_register_client +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x00000000 fb_set_var +EXPORT_SYMBOL vmlinux 0x00000000 fb_show_logo +EXPORT_SYMBOL vmlinux 0x00000000 fb_unregister_client +EXPORT_SYMBOL vmlinux 0x00000000 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x00000000 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0x00000000 fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0x00000000 fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x00000000 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x00000000 fd_install +EXPORT_SYMBOL vmlinux 0x00000000 fg_console +EXPORT_SYMBOL vmlinux 0x00000000 fget +EXPORT_SYMBOL vmlinux 0x00000000 fget_raw +EXPORT_SYMBOL vmlinux 0x00000000 fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x00000000 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x00000000 fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x00000000 fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0x00000000 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x00000000 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x00000000 file_open_root +EXPORT_SYMBOL vmlinux 0x00000000 file_remove_suid +EXPORT_SYMBOL vmlinux 0x00000000 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x00000000 file_update_time +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fault +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x00000000 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x00000000 filemap_flush +EXPORT_SYMBOL vmlinux 0x00000000 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x00000000 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x00000000 files_lglock +EXPORT_SYMBOL vmlinux 0x00000000 filp_close +EXPORT_SYMBOL vmlinux 0x00000000 filp_open +EXPORT_SYMBOL vmlinux 0x00000000 find_font +EXPORT_SYMBOL vmlinux 0x00000000 find_get_page +EXPORT_SYMBOL vmlinux 0x00000000 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x00000000 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x00000000 find_inode_number +EXPORT_SYMBOL vmlinux 0x00000000 find_last_bit +EXPORT_SYMBOL vmlinux 0x00000000 find_lock_page +EXPORT_SYMBOL vmlinux 0x00000000 find_or_create_page +EXPORT_SYMBOL vmlinux 0x00000000 find_vma +EXPORT_SYMBOL vmlinux 0x00000000 finish_wait +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_clear +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_free +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_get +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_put +EXPORT_SYMBOL vmlinux 0x00000000 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x00000000 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x00000000 flow_cache_genid +EXPORT_SYMBOL vmlinux 0x00000000 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x00000000 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x00000000 flush_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x00000000 flush_old_exec +EXPORT_SYMBOL vmlinux 0x00000000 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x00000000 flush_signals +EXPORT_SYMBOL vmlinux 0x00000000 follow_down +EXPORT_SYMBOL vmlinux 0x00000000 follow_down_one +EXPORT_SYMBOL vmlinux 0x00000000 follow_pfn +EXPORT_SYMBOL vmlinux 0x00000000 follow_up +EXPORT_SYMBOL vmlinux 0x00000000 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x00000000 force_sig +EXPORT_SYMBOL vmlinux 0x00000000 fput +EXPORT_SYMBOL vmlinux 0x00000000 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x00000000 framebuffer_release +EXPORT_SYMBOL vmlinux 0x00000000 free_anon_bdev +EXPORT_SYMBOL vmlinux 0x00000000 free_buffer_head +EXPORT_SYMBOL vmlinux 0x00000000 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x00000000 free_irq +EXPORT_SYMBOL vmlinux 0x00000000 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x00000000 free_netdev +EXPORT_SYMBOL vmlinux 0x00000000 free_pages +EXPORT_SYMBOL vmlinux 0x00000000 free_pages_exact +EXPORT_SYMBOL vmlinux 0x00000000 free_task +EXPORT_SYMBOL vmlinux 0x00000000 freeze_bdev +EXPORT_SYMBOL vmlinux 0x00000000 freeze_super +EXPORT_SYMBOL vmlinux 0x00000000 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_shrink +EXPORT_SYMBOL vmlinux 0x00000000 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0x00000000 fs_overflowgid +EXPORT_SYMBOL vmlinux 0x00000000 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x00000000 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x00000000 fsync_bdev +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x00000000 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x00000000 full_name_hash +EXPORT_SYMBOL vmlinux 0x00000000 gen_estimator_active +EXPORT_SYMBOL vmlinux 0x00000000 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0x00000000 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x00000000 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x00000000 generate_random_uuid +EXPORT_SYMBOL vmlinux 0x00000000 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x00000000 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x00000000 generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x00000000 generic_delete_inode +EXPORT_SYMBOL vmlinux 0x00000000 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_open +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x00000000 generic_fillattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_getxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_listxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_make_request +EXPORT_SYMBOL vmlinux 0x00000000 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 generic_permission +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x00000000 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x00000000 generic_read_dir +EXPORT_SYMBOL vmlinux 0x00000000 generic_readlink +EXPORT_SYMBOL vmlinux 0x00000000 generic_removexattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x00000000 generic_segment_checks +EXPORT_SYMBOL vmlinux 0x00000000 generic_setlease +EXPORT_SYMBOL vmlinux 0x00000000 generic_setxattr +EXPORT_SYMBOL vmlinux 0x00000000 generic_show_options +EXPORT_SYMBOL vmlinux 0x00000000 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x00000000 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_checks +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_end +EXPORT_SYMBOL vmlinux 0x00000000 generic_write_sync +EXPORT_SYMBOL vmlinux 0x00000000 generic_writepages +EXPORT_SYMBOL vmlinux 0x00000000 genl_lock +EXPORT_SYMBOL vmlinux 0x00000000 genl_notify +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_family +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x00000000 genl_register_ops +EXPORT_SYMBOL vmlinux 0x00000000 genl_unlock +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x00000000 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x00000000 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x00000000 genlmsg_put +EXPORT_SYMBOL vmlinux 0x00000000 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x00000000 genphy_read_status +EXPORT_SYMBOL vmlinux 0x00000000 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x00000000 genphy_resume +EXPORT_SYMBOL vmlinux 0x00000000 genphy_suspend +EXPORT_SYMBOL vmlinux 0x00000000 genphy_update_link +EXPORT_SYMBOL vmlinux 0x00000000 get_anon_bdev +EXPORT_SYMBOL vmlinux 0x00000000 get_default_font +EXPORT_SYMBOL vmlinux 0x00000000 get_disk +EXPORT_SYMBOL vmlinux 0x00000000 get_fs_type +EXPORT_SYMBOL vmlinux 0x00000000 get_gendisk +EXPORT_SYMBOL vmlinux 0x00000000 get_io_context +EXPORT_SYMBOL vmlinux 0x00000000 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x00000000 get_mem_type +EXPORT_SYMBOL vmlinux 0x00000000 get_next_ino +EXPORT_SYMBOL vmlinux 0x00000000 get_option +EXPORT_SYMBOL vmlinux 0x00000000 get_options +EXPORT_SYMBOL vmlinux 0x00000000 get_phy_device +EXPORT_SYMBOL vmlinux 0x00000000 get_random_bytes +EXPORT_SYMBOL vmlinux 0x00000000 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x00000000 get_seconds +EXPORT_SYMBOL vmlinux 0x00000000 get_super +EXPORT_SYMBOL vmlinux 0x00000000 get_super_thawed +EXPORT_SYMBOL vmlinux 0x00000000 get_task_io_context +EXPORT_SYMBOL vmlinux 0x00000000 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x00000000 get_unused_fd +EXPORT_SYMBOL vmlinux 0x00000000 get_user_pages +EXPORT_SYMBOL vmlinux 0x00000000 get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x00000000 getname +EXPORT_SYMBOL vmlinux 0x00000000 getnstimeofday +EXPORT_SYMBOL vmlinux 0x00000000 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x00000000 give_up_console +EXPORT_SYMBOL vmlinux 0x00000000 global_cursor_default +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x00000000 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x00000000 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x00000000 grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 groups_alloc +EXPORT_SYMBOL vmlinux 0x00000000 groups_free +EXPORT_SYMBOL vmlinux 0x00000000 half_md4_transform +EXPORT_SYMBOL vmlinux 0x00000000 handle_edge_irq +EXPORT_SYMBOL vmlinux 0x00000000 handle_sysrq +EXPORT_SYMBOL vmlinux 0x00000000 have_submounts +EXPORT_SYMBOL vmlinux 0x00000000 hex2bin +EXPORT_SYMBOL vmlinux 0x00000000 hex_asc +EXPORT_SYMBOL vmlinux 0x00000000 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 hex_to_bin +EXPORT_SYMBOL vmlinux 0x00000000 high_memory +EXPORT_SYMBOL vmlinux 0x00000000 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x00000000 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x00000000 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x00000000 i2c_master_send +EXPORT_SYMBOL vmlinux 0x00000000 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 i2c_release_client +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x00000000 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x00000000 i2c_transfer +EXPORT_SYMBOL vmlinux 0x00000000 i2c_use_client +EXPORT_SYMBOL vmlinux 0x00000000 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x00000000 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x00000000 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x00000000 icmp_send +EXPORT_SYMBOL vmlinux 0x00000000 icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x00000000 icmpv6_send +EXPORT_SYMBOL vmlinux 0x00000000 ida_destroy +EXPORT_SYMBOL vmlinux 0x00000000 ida_get_new +EXPORT_SYMBOL vmlinux 0x00000000 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x00000000 ida_init +EXPORT_SYMBOL vmlinux 0x00000000 ida_pre_get +EXPORT_SYMBOL vmlinux 0x00000000 ida_remove +EXPORT_SYMBOL vmlinux 0x00000000 ida_simple_get +EXPORT_SYMBOL vmlinux 0x00000000 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x00000000 idr_destroy +EXPORT_SYMBOL vmlinux 0x00000000 idr_find +EXPORT_SYMBOL vmlinux 0x00000000 idr_for_each +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_new +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x00000000 idr_get_next +EXPORT_SYMBOL vmlinux 0x00000000 idr_init +EXPORT_SYMBOL vmlinux 0x00000000 idr_pre_get +EXPORT_SYMBOL vmlinux 0x00000000 idr_remove +EXPORT_SYMBOL vmlinux 0x00000000 idr_remove_all +EXPORT_SYMBOL vmlinux 0x00000000 idr_replace +EXPORT_SYMBOL vmlinux 0x00000000 ifla_policy +EXPORT_SYMBOL vmlinux 0x00000000 iget5_locked +EXPORT_SYMBOL vmlinux 0x00000000 iget_failed +EXPORT_SYMBOL vmlinux 0x00000000 iget_locked +EXPORT_SYMBOL vmlinux 0x00000000 igrab +EXPORT_SYMBOL vmlinux 0x00000000 ihold +EXPORT_SYMBOL vmlinux 0x00000000 ilookup +EXPORT_SYMBOL vmlinux 0x00000000 ilookup5 +EXPORT_SYMBOL vmlinux 0x00000000 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x00000000 in4_pton +EXPORT_SYMBOL vmlinux 0x00000000 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x00000000 in6_pton +EXPORT_SYMBOL vmlinux 0x00000000 in_aton +EXPORT_SYMBOL vmlinux 0x00000000 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x00000000 in_egroup_p +EXPORT_SYMBOL vmlinux 0x00000000 in_group_p +EXPORT_SYMBOL vmlinux 0x00000000 in_lock_functions +EXPORT_SYMBOL vmlinux 0x00000000 inc_nlink +EXPORT_SYMBOL vmlinux 0x00000000 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet6_bind +EXPORT_SYMBOL vmlinux 0x00000000 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet6_getname +EXPORT_SYMBOL vmlinux 0x00000000 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet6_release +EXPORT_SYMBOL vmlinux 0x00000000 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet_accept +EXPORT_SYMBOL vmlinux 0x00000000 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 inet_bind +EXPORT_SYMBOL vmlinux 0x00000000 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x00000000 inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x00000000 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x00000000 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x00000000 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x00000000 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x00000000 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_find +EXPORT_SYMBOL vmlinux 0x00000000 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_init +EXPORT_SYMBOL vmlinux 0x00000000 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x00000000 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x00000000 inet_getname +EXPORT_SYMBOL vmlinux 0x00000000 inet_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 inet_listen +EXPORT_SYMBOL vmlinux 0x00000000 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x00000000 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x00000000 inet_put_port +EXPORT_SYMBOL vmlinux 0x00000000 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inet_release +EXPORT_SYMBOL vmlinux 0x00000000 inet_select_addr +EXPORT_SYMBOL vmlinux 0x00000000 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 inet_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 inet_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x00000000 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x00000000 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x00000000 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x00000000 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x00000000 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x00000000 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x00000000 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x00000000 init_buffer +EXPORT_SYMBOL vmlinux 0x00000000 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x00000000 init_net +EXPORT_SYMBOL vmlinux 0x00000000 init_special_inode +EXPORT_SYMBOL vmlinux 0x00000000 init_task +EXPORT_SYMBOL vmlinux 0x00000000 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x00000000 init_timer_key +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_change_ok +EXPORT_SYMBOL vmlinux 0x00000000 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_dio_done +EXPORT_SYMBOL vmlinux 0x00000000 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x00000000 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_always +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_once +EXPORT_SYMBOL vmlinux 0x00000000 inode_init_owner +EXPORT_SYMBOL vmlinux 0x00000000 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x00000000 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x00000000 inode_only_permission +EXPORT_SYMBOL vmlinux 0x00000000 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x00000000 inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x00000000 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x00000000 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x00000000 inode_wait +EXPORT_SYMBOL vmlinux 0x00000000 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x00000000 input_allocate_device +EXPORT_SYMBOL vmlinux 0x00000000 input_close_device +EXPORT_SYMBOL vmlinux 0x00000000 input_event +EXPORT_SYMBOL vmlinux 0x00000000 input_flush_device +EXPORT_SYMBOL vmlinux 0x00000000 input_free_device +EXPORT_SYMBOL vmlinux 0x00000000 input_get_keycode +EXPORT_SYMBOL vmlinux 0x00000000 input_grab_device +EXPORT_SYMBOL vmlinux 0x00000000 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_inject_event +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x00000000 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x00000000 input_open_device +EXPORT_SYMBOL vmlinux 0x00000000 input_register_device +EXPORT_SYMBOL vmlinux 0x00000000 input_register_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_register_handler +EXPORT_SYMBOL vmlinux 0x00000000 input_release_device +EXPORT_SYMBOL vmlinux 0x00000000 input_reset_device +EXPORT_SYMBOL vmlinux 0x00000000 input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x00000000 input_set_abs_params +EXPORT_SYMBOL vmlinux 0x00000000 input_set_capability +EXPORT_SYMBOL vmlinux 0x00000000 input_set_keycode +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_device +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x00000000 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x00000000 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x00000000 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x00000000 install_exec_creds +EXPORT_SYMBOL vmlinux 0x00000000 int_sqrt +EXPORT_SYMBOL vmlinux 0x00000000 int_to_scsilun +EXPORT_SYMBOL vmlinux 0x00000000 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x00000000 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x00000000 invalidate_partition +EXPORT_SYMBOL vmlinux 0x00000000 io_schedule +EXPORT_SYMBOL vmlinux 0x00000000 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x00000000 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x00000000 iomem_resource +EXPORT_SYMBOL vmlinux 0x00000000 ioport_map +EXPORT_SYMBOL vmlinux 0x00000000 ioport_resource +EXPORT_SYMBOL vmlinux 0x00000000 ioport_unmap +EXPORT_SYMBOL vmlinux 0x00000000 ioremap_page +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x00000000 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x00000000 iov_shorten +EXPORT_SYMBOL vmlinux 0x00000000 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x00000000 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x00000000 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x00000000 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x00000000 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ip6_route_output +EXPORT_SYMBOL vmlinux 0x00000000 ip6_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x00000000 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x00000000 ip_defrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_fragment +EXPORT_SYMBOL vmlinux 0x00000000 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x00000000 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x00000000 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x00000000 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x00000000 ip_options_compile +EXPORT_SYMBOL vmlinux 0x00000000 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x00000000 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x00000000 ip_route_input_common +EXPORT_SYMBOL vmlinux 0x00000000 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ip_send_check +EXPORT_SYMBOL vmlinux 0x00000000 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ip_tos2prio +EXPORT_SYMBOL vmlinux 0x00000000 ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x00000000 ipc_call_fast +EXPORT_SYMBOL vmlinux 0x00000000 ipc_call_slow +EXPORT_SYMBOL vmlinux 0x00000000 iput +EXPORT_SYMBOL vmlinux 0x00000000 ipv4_config +EXPORT_SYMBOL vmlinux 0x00000000 ipv4_specific +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x00000000 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_chip +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x00000000 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0x00000000 irq_stat +EXPORT_SYMBOL vmlinux 0x00000000 irq_to_desc +EXPORT_SYMBOL vmlinux 0x00000000 is_bad_inode +EXPORT_SYMBOL vmlinux 0x00000000 is_container_init +EXPORT_SYMBOL vmlinux 0x00000000 iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0x00000000 iterate_mounts +EXPORT_SYMBOL vmlinux 0x00000000 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x00000000 iunique +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x00000000 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x00000000 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x00000000 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x00000000 jiffies +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_64 +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x00000000 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x00000000 journal_abort +EXPORT_SYMBOL vmlinux 0x00000000 journal_ack_err +EXPORT_SYMBOL vmlinux 0x00000000 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x00000000 journal_check_available_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_check_used_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_clear_err +EXPORT_SYMBOL vmlinux 0x00000000 journal_create +EXPORT_SYMBOL vmlinux 0x00000000 journal_destroy +EXPORT_SYMBOL vmlinux 0x00000000 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x00000000 journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x00000000 journal_errno +EXPORT_SYMBOL vmlinux 0x00000000 journal_extend +EXPORT_SYMBOL vmlinux 0x00000000 journal_flush +EXPORT_SYMBOL vmlinux 0x00000000 journal_force_commit +EXPORT_SYMBOL vmlinux 0x00000000 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x00000000 journal_forget +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x00000000 journal_init_dev +EXPORT_SYMBOL vmlinux 0x00000000 journal_init_inode +EXPORT_SYMBOL vmlinux 0x00000000 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x00000000 journal_load +EXPORT_SYMBOL vmlinux 0x00000000 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x00000000 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x00000000 journal_restart +EXPORT_SYMBOL vmlinux 0x00000000 journal_revoke +EXPORT_SYMBOL vmlinux 0x00000000 journal_set_features +EXPORT_SYMBOL vmlinux 0x00000000 journal_start +EXPORT_SYMBOL vmlinux 0x00000000 journal_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 journal_stop +EXPORT_SYMBOL vmlinux 0x00000000 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x00000000 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x00000000 journal_update_format +EXPORT_SYMBOL vmlinux 0x00000000 journal_wipe +EXPORT_SYMBOL vmlinux 0x00000000 kasprintf +EXPORT_SYMBOL vmlinux 0x00000000 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x00000000 kd_mksound +EXPORT_SYMBOL vmlinux 0x00000000 kdb_current_task +EXPORT_SYMBOL vmlinux 0x00000000 kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x00000000 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x00000000 kern_path +EXPORT_SYMBOL vmlinux 0x00000000 kern_path_create +EXPORT_SYMBOL vmlinux 0x00000000 kern_unmount +EXPORT_SYMBOL vmlinux 0x00000000 kernel_accept +EXPORT_SYMBOL vmlinux 0x00000000 kernel_bind +EXPORT_SYMBOL vmlinux 0x00000000 kernel_connect +EXPORT_SYMBOL vmlinux 0x00000000 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x00000000 kernel_execve +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x00000000 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 kernel_listen +EXPORT_SYMBOL vmlinux 0x00000000 kernel_read +EXPORT_SYMBOL vmlinux 0x00000000 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 kernel_thread +EXPORT_SYMBOL vmlinux 0x00000000 key_alloc +EXPORT_SYMBOL vmlinux 0x00000000 key_create_or_update +EXPORT_SYMBOL vmlinux 0x00000000 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x00000000 key_invalidate +EXPORT_SYMBOL vmlinux 0x00000000 key_link +EXPORT_SYMBOL vmlinux 0x00000000 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x00000000 key_put +EXPORT_SYMBOL vmlinux 0x00000000 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x00000000 key_revoke +EXPORT_SYMBOL vmlinux 0x00000000 key_task_permission +EXPORT_SYMBOL vmlinux 0x00000000 key_type_keyring +EXPORT_SYMBOL vmlinux 0x00000000 key_unlink +EXPORT_SYMBOL vmlinux 0x00000000 key_update +EXPORT_SYMBOL vmlinux 0x00000000 key_validate +EXPORT_SYMBOL vmlinux 0x00000000 keyring_clear +EXPORT_SYMBOL vmlinux 0x00000000 keyring_search +EXPORT_SYMBOL vmlinux 0x00000000 kfree +EXPORT_SYMBOL vmlinux 0x00000000 kfree_skb +EXPORT_SYMBOL vmlinux 0x00000000 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x00000000 kick_iocb +EXPORT_SYMBOL vmlinux 0x00000000 kill_anon_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_bdev +EXPORT_SYMBOL vmlinux 0x00000000 kill_block_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_fasync +EXPORT_SYMBOL vmlinux 0x00000000 kill_litter_super +EXPORT_SYMBOL vmlinux 0x00000000 kill_pgrp +EXPORT_SYMBOL vmlinux 0x00000000 kill_pid +EXPORT_SYMBOL vmlinux 0x00000000 km_new_mapping +EXPORT_SYMBOL vmlinux 0x00000000 km_policy_expired +EXPORT_SYMBOL vmlinux 0x00000000 km_policy_notify +EXPORT_SYMBOL vmlinux 0x00000000 km_query +EXPORT_SYMBOL vmlinux 0x00000000 km_report +EXPORT_SYMBOL vmlinux 0x00000000 km_state_expired +EXPORT_SYMBOL vmlinux 0x00000000 km_state_notify +EXPORT_SYMBOL vmlinux 0x00000000 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x00000000 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x00000000 kmap +EXPORT_SYMBOL vmlinux 0x00000000 kmap_atomic +EXPORT_SYMBOL vmlinux 0x00000000 kmap_high +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x00000000 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x00000000 kmemdup +EXPORT_SYMBOL vmlinux 0x00000000 kobject_add +EXPORT_SYMBOL vmlinux 0x00000000 kobject_del +EXPORT_SYMBOL vmlinux 0x00000000 kobject_get +EXPORT_SYMBOL vmlinux 0x00000000 kobject_init +EXPORT_SYMBOL vmlinux 0x00000000 kobject_put +EXPORT_SYMBOL vmlinux 0x00000000 kobject_set_name +EXPORT_SYMBOL vmlinux 0x00000000 krealloc +EXPORT_SYMBOL vmlinux 0x00000000 kset_register +EXPORT_SYMBOL vmlinux 0x00000000 kset_unregister +EXPORT_SYMBOL vmlinux 0x00000000 ksize +EXPORT_SYMBOL vmlinux 0x00000000 kstat +EXPORT_SYMBOL vmlinux 0x00000000 kstrdup +EXPORT_SYMBOL vmlinux 0x00000000 kstrndup +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoint +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoll +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos16 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos8 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou16 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou8 +EXPORT_SYMBOL vmlinux 0x00000000 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtouint +EXPORT_SYMBOL vmlinux 0x00000000 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoull +EXPORT_SYMBOL vmlinux 0x00000000 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x00000000 kthread_bind +EXPORT_SYMBOL vmlinux 0x00000000 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x00000000 kthread_should_stop +EXPORT_SYMBOL vmlinux 0x00000000 kthread_stop +EXPORT_SYMBOL vmlinux 0x00000000 kunmap +EXPORT_SYMBOL vmlinux 0x00000000 kunmap_high +EXPORT_SYMBOL vmlinux 0x00000000 kvasprintf +EXPORT_SYMBOL vmlinux 0x00000000 kzfree +EXPORT_SYMBOL vmlinux 0x00000000 laptop_mode +EXPORT_SYMBOL vmlinux 0x00000000 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x00000000 lease_modify +EXPORT_SYMBOL vmlinux 0x00000000 led_blink_set +EXPORT_SYMBOL vmlinux 0x00000000 led_brightness_set +EXPORT_SYMBOL vmlinux 0x00000000 lg_global_lock +EXPORT_SYMBOL vmlinux 0x00000000 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_lock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x00000000 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x00000000 lg_lock_init +EXPORT_SYMBOL vmlinux 0x00000000 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x00000000 list_sort +EXPORT_SYMBOL vmlinux 0x00000000 ll_rw_block +EXPORT_SYMBOL vmlinux 0x00000000 load_nls +EXPORT_SYMBOL vmlinux 0x00000000 load_nls_default +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_disable +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_enable +EXPORT_SYMBOL vmlinux 0x00000000 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0x00000000 lock_fb_info +EXPORT_SYMBOL vmlinux 0x00000000 lock_may_read +EXPORT_SYMBOL vmlinux 0x00000000 lock_may_write +EXPORT_SYMBOL vmlinux 0x00000000 lock_rename +EXPORT_SYMBOL vmlinux 0x00000000 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x00000000 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x00000000 lock_super +EXPORT_SYMBOL vmlinux 0x00000000 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_delete_block +EXPORT_SYMBOL vmlinux 0x00000000 locks_free_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_init_lock +EXPORT_SYMBOL vmlinux 0x00000000 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x00000000 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x00000000 log_start_commit +EXPORT_SYMBOL vmlinux 0x00000000 log_wait_commit +EXPORT_SYMBOL vmlinux 0x00000000 lookup_bdev +EXPORT_SYMBOL vmlinux 0x00000000 lookup_hash +EXPORT_SYMBOL vmlinux 0x00000000 lookup_one_len +EXPORT_SYMBOL vmlinux 0x00000000 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x00000000 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0x00000000 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0x00000000 lro_flush_all +EXPORT_SYMBOL vmlinux 0x00000000 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x00000000 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x00000000 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 mac_pton +EXPORT_SYMBOL vmlinux 0x00000000 make_EII_client +EXPORT_SYMBOL vmlinux 0x00000000 make_bad_inode +EXPORT_SYMBOL vmlinux 0x00000000 mangle_path +EXPORT_SYMBOL vmlinux 0x00000000 mapping_tagged +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x00000000 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x00000000 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x00000000 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x00000000 match_hex +EXPORT_SYMBOL vmlinux 0x00000000 match_int +EXPORT_SYMBOL vmlinux 0x00000000 match_octal +EXPORT_SYMBOL vmlinux 0x00000000 match_strdup +EXPORT_SYMBOL vmlinux 0x00000000 match_strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 match_token +EXPORT_SYMBOL vmlinux 0x00000000 max_mapnr +EXPORT_SYMBOL vmlinux 0x00000000 may_umount +EXPORT_SYMBOL vmlinux 0x00000000 may_umount_tree +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_create +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x00000000 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x00000000 mcount +EXPORT_SYMBOL vmlinux 0x00000000 md5_transform +EXPORT_SYMBOL vmlinux 0x00000000 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x00000000 md_check_recovery +EXPORT_SYMBOL vmlinux 0x00000000 md_done_sync +EXPORT_SYMBOL vmlinux 0x00000000 md_error +EXPORT_SYMBOL vmlinux 0x00000000 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x00000000 md_flush_request +EXPORT_SYMBOL vmlinux 0x00000000 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x00000000 md_integrity_register +EXPORT_SYMBOL vmlinux 0x00000000 md_register_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x00000000 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x00000000 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x00000000 md_write_end +EXPORT_SYMBOL vmlinux 0x00000000 md_write_start +EXPORT_SYMBOL vmlinux 0x00000000 mddev_congested +EXPORT_SYMBOL vmlinux 0x00000000 mdio_bus_type +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_free +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_read +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_register +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x00000000 mdiobus_write +EXPORT_SYMBOL vmlinux 0x00000000 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x00000000 mem_map +EXPORT_SYMBOL vmlinux 0x00000000 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x00000000 memchr +EXPORT_SYMBOL vmlinux 0x00000000 memchr_inv +EXPORT_SYMBOL vmlinux 0x00000000 memcmp +EXPORT_SYMBOL vmlinux 0x00000000 memcpy +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x00000000 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x00000000 memdup_user +EXPORT_SYMBOL vmlinux 0x00000000 memmove +EXPORT_SYMBOL vmlinux 0x00000000 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 memparse +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x00000000 mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x00000000 mempool_create +EXPORT_SYMBOL vmlinux 0x00000000 mempool_create_node +EXPORT_SYMBOL vmlinux 0x00000000 mempool_destroy +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free_pages +EXPORT_SYMBOL vmlinux 0x00000000 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x00000000 mempool_kfree +EXPORT_SYMBOL vmlinux 0x00000000 mempool_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 mempool_resize +EXPORT_SYMBOL vmlinux 0x00000000 memscan +EXPORT_SYMBOL vmlinux 0x00000000 memset +EXPORT_SYMBOL vmlinux 0x00000000 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x00000000 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x00000000 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x00000000 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x00000000 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x00000000 migrate_page +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_link +EXPORT_SYMBOL vmlinux 0x00000000 mii_check_media +EXPORT_SYMBOL vmlinux 0x00000000 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x00000000 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x00000000 mii_link_ok +EXPORT_SYMBOL vmlinux 0x00000000 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x00000000 misc_deregister +EXPORT_SYMBOL vmlinux 0x00000000 misc_register +EXPORT_SYMBOL vmlinux 0x00000000 mktime +EXPORT_SYMBOL vmlinux 0x00000000 mmc_add_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x00000000 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x00000000 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x00000000 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x00000000 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x00000000 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x00000000 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x00000000 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x00000000 mmc_erase +EXPORT_SYMBOL vmlinux 0x00000000 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x00000000 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x00000000 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x00000000 mmc_free_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x00000000 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x00000000 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x00000000 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0x00000000 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x00000000 mmc_release_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_request_done +EXPORT_SYMBOL vmlinux 0x00000000 mmc_resume_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x00000000 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x00000000 mmc_start_req +EXPORT_SYMBOL vmlinux 0x00000000 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x00000000 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x00000000 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x00000000 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x00000000 mnt_pin +EXPORT_SYMBOL vmlinux 0x00000000 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x00000000 mnt_unpin +EXPORT_SYMBOL vmlinux 0x00000000 mntget +EXPORT_SYMBOL vmlinux 0x00000000 mntput +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer_pending +EXPORT_SYMBOL vmlinux 0x00000000 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x00000000 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x00000000 module_put +EXPORT_SYMBOL vmlinux 0x00000000 module_refcount +EXPORT_SYMBOL vmlinux 0x00000000 mount_bdev +EXPORT_SYMBOL vmlinux 0x00000000 mount_nodev +EXPORT_SYMBOL vmlinux 0x00000000 mount_ns +EXPORT_SYMBOL vmlinux 0x00000000 mount_pseudo +EXPORT_SYMBOL vmlinux 0x00000000 mount_single +EXPORT_SYMBOL vmlinux 0x00000000 mount_subtree +EXPORT_SYMBOL vmlinux 0x00000000 mpage_readpage +EXPORT_SYMBOL vmlinux 0x00000000 mpage_readpages +EXPORT_SYMBOL vmlinux 0x00000000 mpage_writepage +EXPORT_SYMBOL vmlinux 0x00000000 mpage_writepages +EXPORT_SYMBOL vmlinux 0x00000000 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 msleep +EXPORT_SYMBOL vmlinux 0x00000000 msleep_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x00000000 mutex_trylock +EXPORT_SYMBOL vmlinux 0x00000000 mutex_unlock +EXPORT_SYMBOL vmlinux 0x00000000 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x00000000 names_cachep +EXPORT_SYMBOL vmlinux 0x00000000 napi_complete +EXPORT_SYMBOL vmlinux 0x00000000 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x00000000 napi_get_frags +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x00000000 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x00000000 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x00000000 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x00000000 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x00000000 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_create +EXPORT_SYMBOL vmlinux 0x00000000 neigh_destroy +EXPORT_SYMBOL vmlinux 0x00000000 neigh_direct_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x00000000 neigh_for_each +EXPORT_SYMBOL vmlinux 0x00000000 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x00000000 neigh_lookup +EXPORT_SYMBOL vmlinux 0x00000000 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x00000000 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x00000000 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x00000000 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x00000000 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x00000000 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x00000000 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x00000000 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x00000000 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x00000000 neigh_table_init +EXPORT_SYMBOL vmlinux 0x00000000 neigh_update +EXPORT_SYMBOL vmlinux 0x00000000 net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x00000000 net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 net_msg_warn +EXPORT_SYMBOL vmlinux 0x00000000 net_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 netdev_alert +EXPORT_SYMBOL vmlinux 0x00000000 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x00000000 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x00000000 netdev_change_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x00000000 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x00000000 netdev_crit +EXPORT_SYMBOL vmlinux 0x00000000 netdev_emerg +EXPORT_SYMBOL vmlinux 0x00000000 netdev_err +EXPORT_SYMBOL vmlinux 0x00000000 netdev_features_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_info +EXPORT_SYMBOL vmlinux 0x00000000 netdev_notice +EXPORT_SYMBOL vmlinux 0x00000000 netdev_printk +EXPORT_SYMBOL vmlinux 0x00000000 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x00000000 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x00000000 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x00000000 netdev_set_master +EXPORT_SYMBOL vmlinux 0x00000000 netdev_state_change +EXPORT_SYMBOL vmlinux 0x00000000 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0x00000000 netdev_update_features +EXPORT_SYMBOL vmlinux 0x00000000 netdev_warn +EXPORT_SYMBOL vmlinux 0x00000000 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x00000000 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x00000000 netif_device_attach +EXPORT_SYMBOL vmlinux 0x00000000 netif_device_detach +EXPORT_SYMBOL vmlinux 0x00000000 netif_napi_add +EXPORT_SYMBOL vmlinux 0x00000000 netif_napi_del +EXPORT_SYMBOL vmlinux 0x00000000 netif_notify_peers +EXPORT_SYMBOL vmlinux 0x00000000 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 netif_rx +EXPORT_SYMBOL vmlinux 0x00000000 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x00000000 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x00000000 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x00000000 netif_skb_features +EXPORT_SYMBOL vmlinux 0x00000000 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x00000000 netlink_ack +EXPORT_SYMBOL vmlinux 0x00000000 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x00000000 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x00000000 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x00000000 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x00000000 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 netlink_register_notifier +EXPORT_SYMBOL vmlinux 0x00000000 netlink_set_err +EXPORT_SYMBOL vmlinux 0x00000000 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x00000000 netlink_unicast +EXPORT_SYMBOL vmlinux 0x00000000 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_setup +EXPORT_SYMBOL vmlinux 0x00000000 netpoll_trap +EXPORT_SYMBOL vmlinux 0x00000000 new_inode +EXPORT_SYMBOL vmlinux 0x00000000 nf_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x00000000 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x00000000 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x00000000 nf_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x00000000 nf_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0x00000000 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x00000000 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_packet +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_register +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x00000000 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_hook +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x00000000 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_reinject +EXPORT_SYMBOL vmlinux 0x00000000 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x00000000 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x00000000 nla_append +EXPORT_SYMBOL vmlinux 0x00000000 nla_find +EXPORT_SYMBOL vmlinux 0x00000000 nla_memcmp +EXPORT_SYMBOL vmlinux 0x00000000 nla_memcpy +EXPORT_SYMBOL vmlinux 0x00000000 nla_parse +EXPORT_SYMBOL vmlinux 0x00000000 nla_policy_len +EXPORT_SYMBOL vmlinux 0x00000000 nla_put +EXPORT_SYMBOL vmlinux 0x00000000 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 nla_reserve +EXPORT_SYMBOL vmlinux 0x00000000 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x00000000 nla_strcmp +EXPORT_SYMBOL vmlinux 0x00000000 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 nla_validate +EXPORT_SYMBOL vmlinux 0x00000000 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x00000000 no_llseek +EXPORT_SYMBOL vmlinux 0x00000000 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x00000000 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 nobh_write_end +EXPORT_SYMBOL vmlinux 0x00000000 nobh_writepage +EXPORT_SYMBOL vmlinux 0x00000000 node_states +EXPORT_SYMBOL vmlinux 0x00000000 nonseekable_open +EXPORT_SYMBOL vmlinux 0x00000000 noop_fsync +EXPORT_SYMBOL vmlinux 0x00000000 noop_llseek +EXPORT_SYMBOL vmlinux 0x00000000 noop_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 notify_change +EXPORT_SYMBOL vmlinux 0x00000000 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0x00000000 ns_capable +EXPORT_SYMBOL vmlinux 0x00000000 ns_to_timespec +EXPORT_SYMBOL vmlinux 0x00000000 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x00000000 num_physpages +EXPORT_SYMBOL vmlinux 0x00000000 num_registered_fb +EXPORT_SYMBOL vmlinux 0x00000000 of_clk_get +EXPORT_SYMBOL vmlinux 0x00000000 of_clk_get_by_name +EXPORT_SYMBOL vmlinux 0x00000000 of_dev_get +EXPORT_SYMBOL vmlinux 0x00000000 of_dev_put +EXPORT_SYMBOL vmlinux 0x00000000 of_device_alloc +EXPORT_SYMBOL vmlinux 0x00000000 of_device_is_available +EXPORT_SYMBOL vmlinux 0x00000000 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x00000000 of_device_register +EXPORT_SYMBOL vmlinux 0x00000000 of_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x00000000 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x00000000 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x00000000 of_find_property +EXPORT_SYMBOL vmlinux 0x00000000 of_get_address +EXPORT_SYMBOL vmlinux 0x00000000 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x00000000 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x00000000 of_get_next_child +EXPORT_SYMBOL vmlinux 0x00000000 of_get_parent +EXPORT_SYMBOL vmlinux 0x00000000 of_get_property +EXPORT_SYMBOL vmlinux 0x00000000 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0x00000000 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x00000000 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x00000000 of_iomap +EXPORT_SYMBOL vmlinux 0x00000000 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0x00000000 of_match_device +EXPORT_SYMBOL vmlinux 0x00000000 of_match_node +EXPORT_SYMBOL vmlinux 0x00000000 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x00000000 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x00000000 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x00000000 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x00000000 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x00000000 of_parse_phandle +EXPORT_SYMBOL vmlinux 0x00000000 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_connect +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x00000000 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x00000000 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x00000000 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x00000000 of_translate_address +EXPORT_SYMBOL vmlinux 0x00000000 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0x00000000 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x00000000 oops_in_progress +EXPORT_SYMBOL vmlinux 0x00000000 open_exec +EXPORT_SYMBOL vmlinux 0x00000000 otg_state_string +EXPORT_SYMBOL vmlinux 0x00000000 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0x00000000 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x00000000 outer_cache +EXPORT_SYMBOL vmlinux 0x00000000 overflowgid +EXPORT_SYMBOL vmlinux 0x00000000 overflowuid +EXPORT_SYMBOL vmlinux 0x00000000 override_creds +EXPORT_SYMBOL vmlinux 0x00000000 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x00000000 padata_alloc +EXPORT_SYMBOL vmlinux 0x00000000 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x00000000 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x00000000 padata_do_serial +EXPORT_SYMBOL vmlinux 0x00000000 padata_free +EXPORT_SYMBOL vmlinux 0x00000000 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x00000000 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x00000000 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x00000000 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x00000000 padata_start +EXPORT_SYMBOL vmlinux 0x00000000 padata_stop +EXPORT_SYMBOL vmlinux 0x00000000 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x00000000 page_address +EXPORT_SYMBOL vmlinux 0x00000000 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x00000000 page_put_link +EXPORT_SYMBOL vmlinux 0x00000000 page_readlink +EXPORT_SYMBOL vmlinux 0x00000000 page_symlink +EXPORT_SYMBOL vmlinux 0x00000000 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x00000000 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x00000000 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x00000000 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x00000000 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x00000000 panic +EXPORT_SYMBOL vmlinux 0x00000000 panic_blink +EXPORT_SYMBOL vmlinux 0x00000000 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x00000000 param_array_ops +EXPORT_SYMBOL vmlinux 0x00000000 param_get_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_get_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_get_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_get_int +EXPORT_SYMBOL vmlinux 0x00000000 param_get_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_get_long +EXPORT_SYMBOL vmlinux 0x00000000 param_get_short +EXPORT_SYMBOL vmlinux 0x00000000 param_get_string +EXPORT_SYMBOL vmlinux 0x00000000 param_get_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_get_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_get_ushort +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_bint +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_int +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_long +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_short +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_string +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x00000000 param_set_bint +EXPORT_SYMBOL vmlinux 0x00000000 param_set_bool +EXPORT_SYMBOL vmlinux 0x00000000 param_set_byte +EXPORT_SYMBOL vmlinux 0x00000000 param_set_charp +EXPORT_SYMBOL vmlinux 0x00000000 param_set_copystring +EXPORT_SYMBOL vmlinux 0x00000000 param_set_int +EXPORT_SYMBOL vmlinux 0x00000000 param_set_invbool +EXPORT_SYMBOL vmlinux 0x00000000 param_set_long +EXPORT_SYMBOL vmlinux 0x00000000 param_set_short +EXPORT_SYMBOL vmlinux 0x00000000 param_set_uint +EXPORT_SYMBOL vmlinux 0x00000000 param_set_ulong +EXPORT_SYMBOL vmlinux 0x00000000 param_set_ushort +EXPORT_SYMBOL vmlinux 0x00000000 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x00000000 path_get +EXPORT_SYMBOL vmlinux 0x00000000 path_is_under +EXPORT_SYMBOL vmlinux 0x00000000 path_put +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x00000000 percpu_counter_set +EXPORT_SYMBOL vmlinux 0x00000000 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x00000000 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x00000000 pfn_valid +EXPORT_SYMBOL vmlinux 0x00000000 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x00000000 pgprot_user +EXPORT_SYMBOL vmlinux 0x00000000 phy_attach +EXPORT_SYMBOL vmlinux 0x00000000 phy_connect +EXPORT_SYMBOL vmlinux 0x00000000 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x00000000 phy_detach +EXPORT_SYMBOL vmlinux 0x00000000 phy_device_free +EXPORT_SYMBOL vmlinux 0x00000000 phy_device_register +EXPORT_SYMBOL vmlinux 0x00000000 phy_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 phy_driver_register +EXPORT_SYMBOL vmlinux 0x00000000 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x00000000 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x00000000 phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x00000000 phy_find_first +EXPORT_SYMBOL vmlinux 0x00000000 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 phy_print_status +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x00000000 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x00000000 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x00000000 phy_start +EXPORT_SYMBOL vmlinux 0x00000000 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x00000000 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x00000000 phy_stop +EXPORT_SYMBOL vmlinux 0x00000000 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x00000000 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x00000000 pid_task +EXPORT_SYMBOL vmlinux 0x00000000 ping_prot +EXPORT_SYMBOL vmlinux 0x00000000 pipe_lock +EXPORT_SYMBOL vmlinux 0x00000000 pipe_to_file +EXPORT_SYMBOL vmlinux 0x00000000 pipe_unlock +EXPORT_SYMBOL vmlinux 0x00000000 pl330_filter +EXPORT_SYMBOL vmlinux 0x00000000 pm_idle +EXPORT_SYMBOL vmlinux 0x00000000 pm_power_off +EXPORT_SYMBOL vmlinux 0x00000000 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x00000000 pm_suspend +EXPORT_SYMBOL vmlinux 0x00000000 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x00000000 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x00000000 poll_freewait +EXPORT_SYMBOL vmlinux 0x00000000 poll_initwait +EXPORT_SYMBOL vmlinux 0x00000000 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_chmod +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_create +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_init +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x00000000 posix_acl_valid +EXPORT_SYMBOL vmlinux 0x00000000 posix_lock_file +EXPORT_SYMBOL vmlinux 0x00000000 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x00000000 posix_test_lock +EXPORT_SYMBOL vmlinux 0x00000000 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x00000000 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x00000000 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x00000000 ppp_input +EXPORT_SYMBOL vmlinux 0x00000000 ppp_input_error +EXPORT_SYMBOL vmlinux 0x00000000 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x00000000 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x00000000 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x00000000 prandom32 +EXPORT_SYMBOL vmlinux 0x00000000 prepare_binprm +EXPORT_SYMBOL vmlinux 0x00000000 prepare_creds +EXPORT_SYMBOL vmlinux 0x00000000 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x00000000 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x00000000 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x00000000 print_hex_dump +EXPORT_SYMBOL vmlinux 0x00000000 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x00000000 printk +EXPORT_SYMBOL vmlinux 0x00000000 printk_emit +EXPORT_SYMBOL vmlinux 0x00000000 printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_mask +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_off +EXPORT_SYMBOL vmlinux 0x00000000 probe_irq_on +EXPORT_SYMBOL vmlinux 0x00000000 proc_create_data +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 proc_dostring +EXPORT_SYMBOL vmlinux 0x00000000 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x00000000 proc_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x00000000 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x00000000 proc_symlink +EXPORT_SYMBOL vmlinux 0x00000000 processor_id +EXPORT_SYMBOL vmlinux 0x00000000 profile_pc +EXPORT_SYMBOL vmlinux 0x00000000 proto_register +EXPORT_SYMBOL vmlinux 0x00000000 proto_unregister +EXPORT_SYMBOL vmlinux 0x00000000 ps2_begin_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x00000000 ps2_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_drain +EXPORT_SYMBOL vmlinux 0x00000000 ps2_end_command +EXPORT_SYMBOL vmlinux 0x00000000 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x00000000 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x00000000 ps2_init +EXPORT_SYMBOL vmlinux 0x00000000 ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x00000000 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x00000000 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x00000000 put_cmsg +EXPORT_SYMBOL vmlinux 0x00000000 put_disk +EXPORT_SYMBOL vmlinux 0x00000000 put_io_context +EXPORT_SYMBOL vmlinux 0x00000000 put_page +EXPORT_SYMBOL vmlinux 0x00000000 put_pages_list +EXPORT_SYMBOL vmlinux 0x00000000 put_tty_driver +EXPORT_SYMBOL vmlinux 0x00000000 put_unused_fd +EXPORT_SYMBOL vmlinux 0x00000000 putname +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_reset +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x00000000 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_insert +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x00000000 radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x00000000 random32 +EXPORT_SYMBOL vmlinux 0x00000000 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x00000000 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0x00000000 rb_augment_insert +EXPORT_SYMBOL vmlinux 0x00000000 rb_erase +EXPORT_SYMBOL vmlinux 0x00000000 rb_first +EXPORT_SYMBOL vmlinux 0x00000000 rb_insert_color +EXPORT_SYMBOL vmlinux 0x00000000 rb_last +EXPORT_SYMBOL vmlinux 0x00000000 rb_next +EXPORT_SYMBOL vmlinux 0x00000000 rb_prev +EXPORT_SYMBOL vmlinux 0x00000000 rb_replace_node +EXPORT_SYMBOL vmlinux 0x00000000 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x00000000 read_cache_pages +EXPORT_SYMBOL vmlinux 0x00000000 read_dev_sector +EXPORT_SYMBOL vmlinux 0x00000000 recalc_sigpending +EXPORT_SYMBOL vmlinux 0x00000000 reciprocal_value +EXPORT_SYMBOL vmlinux 0x00000000 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x00000000 redraw_screen +EXPORT_SYMBOL vmlinux 0x00000000 register_blkdev +EXPORT_SYMBOL vmlinux 0x00000000 register_cdrom +EXPORT_SYMBOL vmlinux 0x00000000 register_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 register_con_driver +EXPORT_SYMBOL vmlinux 0x00000000 register_console +EXPORT_SYMBOL vmlinux 0x00000000 register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 register_filesystem +EXPORT_SYMBOL vmlinux 0x00000000 register_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 register_gifconf +EXPORT_SYMBOL vmlinux 0x00000000 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_key_type +EXPORT_SYMBOL vmlinux 0x00000000 register_md_personality +EXPORT_SYMBOL vmlinux 0x00000000 register_module_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_netdev +EXPORT_SYMBOL vmlinux 0x00000000 register_netdevice +EXPORT_SYMBOL vmlinux 0x00000000 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_nls +EXPORT_SYMBOL vmlinux 0x00000000 register_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 register_quota_format +EXPORT_SYMBOL vmlinux 0x00000000 register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x00000000 register_shrinker +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x00000000 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x00000000 register_sysrq_key +EXPORT_SYMBOL vmlinux 0x00000000 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x00000000 registered_fb +EXPORT_SYMBOL vmlinux 0x00000000 release_firmware +EXPORT_SYMBOL vmlinux 0x00000000 release_pages +EXPORT_SYMBOL vmlinux 0x00000000 release_resource +EXPORT_SYMBOL vmlinux 0x00000000 release_sock +EXPORT_SYMBOL vmlinux 0x00000000 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x00000000 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x00000000 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x00000000 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0x00000000 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x00000000 remove_wait_queue +EXPORT_SYMBOL vmlinux 0x00000000 rename_lock +EXPORT_SYMBOL vmlinux 0x00000000 replace_mount_options +EXPORT_SYMBOL vmlinux 0x00000000 request_firmware +EXPORT_SYMBOL vmlinux 0x00000000 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x00000000 request_key +EXPORT_SYMBOL vmlinux 0x00000000 request_key_async +EXPORT_SYMBOL vmlinux 0x00000000 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x00000000 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x00000000 request_resource +EXPORT_SYMBOL vmlinux 0x00000000 request_threaded_irq +EXPORT_SYMBOL vmlinux 0x00000000 reset_devices +EXPORT_SYMBOL vmlinux 0x00000000 revalidate_disk +EXPORT_SYMBOL vmlinux 0x00000000 revert_creds +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_blocked +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_destroy +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_register +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x00000000 rfkill_unregister +EXPORT_SYMBOL vmlinux 0x00000000 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x00000000 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0x00000000 rt6_lookup +EXPORT_SYMBOL vmlinux 0x00000000 rtc_lock +EXPORT_SYMBOL vmlinux 0x00000000 rtc_month_days +EXPORT_SYMBOL vmlinux 0x00000000 rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0x00000000 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0x00000000 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x00000000 rtc_year_days +EXPORT_SYMBOL vmlinux 0x00000000 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_lock +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_notify +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_trylock +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x00000000 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x00000000 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0x00000000 save_mount_options +EXPORT_SYMBOL vmlinux 0x00000000 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 schedule +EXPORT_SYMBOL vmlinux 0x00000000 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00000000 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0x00000000 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0x00000000 schedule_work +EXPORT_SYMBOL vmlinux 0x00000000 schedule_work_on +EXPORT_SYMBOL vmlinux 0x00000000 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x00000000 scm_fp_dup +EXPORT_SYMBOL vmlinux 0x00000000 scnprintf +EXPORT_SYMBOL vmlinux 0x00000000 scsi_add_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x00000000 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x00000000 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x00000000 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x00000000 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x00000000 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x00000000 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_get +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_put +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x00000000 scsi_device_type +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x00000000 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_execute +EXPORT_SYMBOL vmlinux 0x00000000 scsi_execute_req +EXPORT_SYMBOL vmlinux 0x00000000 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x00000000 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_free_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x00000000 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_get +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_put +EXPORT_SYMBOL vmlinux 0x00000000 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x00000000 scsi_init_io +EXPORT_SYMBOL vmlinux 0x00000000 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x00000000 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_partsize +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x00000000 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_result +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_print_status +EXPORT_SYMBOL vmlinux 0x00000000 scsi_put_command +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x00000000 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x00000000 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x00000000 scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x00000000 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x00000000 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x00000000 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x00000000 scsi_scan_target +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x00000000 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x00000000 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x00000000 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_result +EXPORT_SYMBOL vmlinux 0x00000000 scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x00000000 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x00000000 scsi_target_resume +EXPORT_SYMBOL vmlinux 0x00000000 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x00000000 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x00000000 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x00000000 scsi_unregister +EXPORT_SYMBOL vmlinux 0x00000000 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x00000000 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x00000000 search_binary_handler +EXPORT_SYMBOL vmlinux 0x00000000 secpath_dup +EXPORT_SYMBOL vmlinux 0x00000000 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x00000000 security_d_instantiate +EXPORT_SYMBOL vmlinux 0x00000000 security_file_permission +EXPORT_SYMBOL vmlinux 0x00000000 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_permission +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x00000000 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x00000000 security_mmap_file +EXPORT_SYMBOL vmlinux 0x00000000 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x00000000 security_path_chmod +EXPORT_SYMBOL vmlinux 0x00000000 security_path_chown +EXPORT_SYMBOL vmlinux 0x00000000 security_path_link +EXPORT_SYMBOL vmlinux 0x00000000 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 security_path_mknod +EXPORT_SYMBOL vmlinux 0x00000000 security_path_rename +EXPORT_SYMBOL vmlinux 0x00000000 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 security_path_symlink +EXPORT_SYMBOL vmlinux 0x00000000 security_path_truncate +EXPORT_SYMBOL vmlinux 0x00000000 security_path_unlink +EXPORT_SYMBOL vmlinux 0x00000000 security_release_secctx +EXPORT_SYMBOL vmlinux 0x00000000 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x00000000 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x00000000 security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x00000000 security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x00000000 security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x00000000 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x00000000 security_sk_clone +EXPORT_SYMBOL vmlinux 0x00000000 security_sock_graft +EXPORT_SYMBOL vmlinux 0x00000000 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0x00000000 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x00000000 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x00000000 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x00000000 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x00000000 send_remote_softirq +EXPORT_SYMBOL vmlinux 0x00000000 send_sig +EXPORT_SYMBOL vmlinux 0x00000000 send_sig_info +EXPORT_SYMBOL vmlinux 0x00000000 seq_bitmap +EXPORT_SYMBOL vmlinux 0x00000000 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x00000000 seq_escape +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_next +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_next +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_start +EXPORT_SYMBOL vmlinux 0x00000000 seq_list_start_head +EXPORT_SYMBOL vmlinux 0x00000000 seq_lseek +EXPORT_SYMBOL vmlinux 0x00000000 seq_open +EXPORT_SYMBOL vmlinux 0x00000000 seq_open_private +EXPORT_SYMBOL vmlinux 0x00000000 seq_path +EXPORT_SYMBOL vmlinux 0x00000000 seq_printf +EXPORT_SYMBOL vmlinux 0x00000000 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x00000000 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x00000000 seq_putc +EXPORT_SYMBOL vmlinux 0x00000000 seq_puts +EXPORT_SYMBOL vmlinux 0x00000000 seq_read +EXPORT_SYMBOL vmlinux 0x00000000 seq_release +EXPORT_SYMBOL vmlinux 0x00000000 seq_release_private +EXPORT_SYMBOL vmlinux 0x00000000 seq_write +EXPORT_SYMBOL vmlinux 0x00000000 serio_close +EXPORT_SYMBOL vmlinux 0x00000000 serio_interrupt +EXPORT_SYMBOL vmlinux 0x00000000 serio_open +EXPORT_SYMBOL vmlinux 0x00000000 serio_reconnect +EXPORT_SYMBOL vmlinux 0x00000000 serio_rescan +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x00000000 set_anon_super +EXPORT_SYMBOL vmlinux 0x00000000 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x00000000 set_bh_page +EXPORT_SYMBOL vmlinux 0x00000000 set_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 set_blocksize +EXPORT_SYMBOL vmlinux 0x00000000 set_create_files_as +EXPORT_SYMBOL vmlinux 0x00000000 set_current_groups +EXPORT_SYMBOL vmlinux 0x00000000 set_device_ro +EXPORT_SYMBOL vmlinux 0x00000000 set_disk_ro +EXPORT_SYMBOL vmlinux 0x00000000 set_freezable +EXPORT_SYMBOL vmlinux 0x00000000 set_groups +EXPORT_SYMBOL vmlinux 0x00000000 set_nlink +EXPORT_SYMBOL vmlinux 0x00000000 set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x00000000 set_page_dirty +EXPORT_SYMBOL vmlinux 0x00000000 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x00000000 set_security_override +EXPORT_SYMBOL vmlinux 0x00000000 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x00000000 set_user_nice +EXPORT_SYMBOL vmlinux 0x00000000 setattr_copy +EXPORT_SYMBOL vmlinux 0x00000000 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x00000000 setup_max_cpus +EXPORT_SYMBOL vmlinux 0x00000000 setup_new_exec +EXPORT_SYMBOL vmlinux 0x00000000 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sg_free_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_init_one +EXPORT_SYMBOL vmlinux 0x00000000 sg_init_table +EXPORT_SYMBOL vmlinux 0x00000000 sg_last +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_next +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_start +EXPORT_SYMBOL vmlinux 0x00000000 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x00000000 sg_next +EXPORT_SYMBOL vmlinux 0x00000000 sget +EXPORT_SYMBOL vmlinux 0x00000000 sha_transform +EXPORT_SYMBOL vmlinux 0x00000000 should_remove_suid +EXPORT_SYMBOL vmlinux 0x00000000 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0x00000000 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x00000000 si_meminfo +EXPORT_SYMBOL vmlinux 0x00000000 sigprocmask +EXPORT_SYMBOL vmlinux 0x00000000 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x00000000 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x00000000 simple_empty +EXPORT_SYMBOL vmlinux 0x00000000 simple_fill_super +EXPORT_SYMBOL vmlinux 0x00000000 simple_getattr +EXPORT_SYMBOL vmlinux 0x00000000 simple_link +EXPORT_SYMBOL vmlinux 0x00000000 simple_lookup +EXPORT_SYMBOL vmlinux 0x00000000 simple_open +EXPORT_SYMBOL vmlinux 0x00000000 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x00000000 simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x00000000 simple_readpage +EXPORT_SYMBOL vmlinux 0x00000000 simple_release_fs +EXPORT_SYMBOL vmlinux 0x00000000 simple_rename +EXPORT_SYMBOL vmlinux 0x00000000 simple_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 simple_setattr +EXPORT_SYMBOL vmlinux 0x00000000 simple_statfs +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtol +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoll +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoul +EXPORT_SYMBOL vmlinux 0x00000000 simple_strtoull +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_read +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_release +EXPORT_SYMBOL vmlinux 0x00000000 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x00000000 simple_unlink +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_begin +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_end +EXPORT_SYMBOL vmlinux 0x00000000 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x00000000 single_open +EXPORT_SYMBOL vmlinux 0x00000000 single_release +EXPORT_SYMBOL vmlinux 0x00000000 sk_alloc +EXPORT_SYMBOL vmlinux 0x00000000 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_common_release +EXPORT_SYMBOL vmlinux 0x00000000 sk_dst_check +EXPORT_SYMBOL vmlinux 0x00000000 sk_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x00000000 sk_free +EXPORT_SYMBOL vmlinux 0x00000000 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x00000000 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x00000000 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x00000000 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x00000000 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x00000000 sk_run_filter +EXPORT_SYMBOL vmlinux 0x00000000 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x00000000 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_error +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x00000000 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x00000000 sk_wait_data +EXPORT_SYMBOL vmlinux 0x00000000 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x00000000 skb_append +EXPORT_SYMBOL vmlinux 0x00000000 skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x00000000 skb_checksum +EXPORT_SYMBOL vmlinux 0x00000000 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x00000000 skb_clone +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00000000 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x00000000 skb_dequeue +EXPORT_SYMBOL vmlinux 0x00000000 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x00000000 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x00000000 skb_find_text +EXPORT_SYMBOL vmlinux 0x00000000 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x00000000 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x00000000 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x00000000 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x00000000 skb_insert +EXPORT_SYMBOL vmlinux 0x00000000 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_make_writable +EXPORT_SYMBOL vmlinux 0x00000000 skb_pad +EXPORT_SYMBOL vmlinux 0x00000000 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_pull +EXPORT_SYMBOL vmlinux 0x00000000 skb_push +EXPORT_SYMBOL vmlinux 0x00000000 skb_put +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_head +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x00000000 skb_queue_tail +EXPORT_SYMBOL vmlinux 0x00000000 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x00000000 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x00000000 skb_seq_read +EXPORT_SYMBOL vmlinux 0x00000000 skb_split +EXPORT_SYMBOL vmlinux 0x00000000 skb_store_bits +EXPORT_SYMBOL vmlinux 0x00000000 skb_trim +EXPORT_SYMBOL vmlinux 0x00000000 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x00000000 skb_unlink +EXPORT_SYMBOL vmlinux 0x00000000 skip_spaces +EXPORT_SYMBOL vmlinux 0x00000000 sleep_on +EXPORT_SYMBOL vmlinux 0x00000000 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x00000000 slhc_compress +EXPORT_SYMBOL vmlinux 0x00000000 slhc_free +EXPORT_SYMBOL vmlinux 0x00000000 slhc_init +EXPORT_SYMBOL vmlinux 0x00000000 slhc_remember +EXPORT_SYMBOL vmlinux 0x00000000 slhc_toss +EXPORT_SYMBOL vmlinux 0x00000000 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x00000000 smp_call_function_single +EXPORT_SYMBOL vmlinux 0x00000000 snprintf +EXPORT_SYMBOL vmlinux 0x00000000 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x00000000 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_create +EXPORT_SYMBOL vmlinux 0x00000000 sock_create_kern +EXPORT_SYMBOL vmlinux 0x00000000 sock_create_lite +EXPORT_SYMBOL vmlinux 0x00000000 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x00000000 sock_i_ino +EXPORT_SYMBOL vmlinux 0x00000000 sock_i_uid +EXPORT_SYMBOL vmlinux 0x00000000 sock_init_data +EXPORT_SYMBOL vmlinux 0x00000000 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x00000000 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x00000000 sock_map_fd +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_accept +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_bind +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_connect +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_getname +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_listen +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_poll +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x00000000 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x00000000 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_register +EXPORT_SYMBOL vmlinux 0x00000000 sock_release +EXPORT_SYMBOL vmlinux 0x00000000 sock_rfree +EXPORT_SYMBOL vmlinux 0x00000000 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x00000000 sock_unregister +EXPORT_SYMBOL vmlinux 0x00000000 sock_update_classid +EXPORT_SYMBOL vmlinux 0x00000000 sock_wake_async +EXPORT_SYMBOL vmlinux 0x00000000 sock_wfree +EXPORT_SYMBOL vmlinux 0x00000000 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x00000000 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x00000000 soft_cursor +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00000000 softnet_data +EXPORT_SYMBOL vmlinux 0x00000000 sort +EXPORT_SYMBOL vmlinux 0x00000000 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x00000000 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x00000000 sprintf +EXPORT_SYMBOL vmlinux 0x00000000 srandom32 +EXPORT_SYMBOL vmlinux 0x00000000 sscanf +EXPORT_SYMBOL vmlinux 0x00000000 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x00000000 start_tty +EXPORT_SYMBOL vmlinux 0x00000000 stop_tty +EXPORT_SYMBOL vmlinux 0x00000000 strcasecmp +EXPORT_SYMBOL vmlinux 0x00000000 strcat +EXPORT_SYMBOL vmlinux 0x00000000 strchr +EXPORT_SYMBOL vmlinux 0x00000000 strcmp +EXPORT_SYMBOL vmlinux 0x00000000 strcpy +EXPORT_SYMBOL vmlinux 0x00000000 strcspn +EXPORT_SYMBOL vmlinux 0x00000000 strim +EXPORT_SYMBOL vmlinux 0x00000000 string_get_size +EXPORT_SYMBOL vmlinux 0x00000000 strlcat +EXPORT_SYMBOL vmlinux 0x00000000 strlcpy +EXPORT_SYMBOL vmlinux 0x00000000 strlen +EXPORT_SYMBOL vmlinux 0x00000000 strncasecmp +EXPORT_SYMBOL vmlinux 0x00000000 strncat +EXPORT_SYMBOL vmlinux 0x00000000 strnchr +EXPORT_SYMBOL vmlinux 0x00000000 strncmp +EXPORT_SYMBOL vmlinux 0x00000000 strncpy +EXPORT_SYMBOL vmlinux 0x00000000 strndup_user +EXPORT_SYMBOL vmlinux 0x00000000 strnicmp +EXPORT_SYMBOL vmlinux 0x00000000 strnlen +EXPORT_SYMBOL vmlinux 0x00000000 strnstr +EXPORT_SYMBOL vmlinux 0x00000000 strpbrk +EXPORT_SYMBOL vmlinux 0x00000000 strrchr +EXPORT_SYMBOL vmlinux 0x00000000 strsep +EXPORT_SYMBOL vmlinux 0x00000000 strspn +EXPORT_SYMBOL vmlinux 0x00000000 strstr +EXPORT_SYMBOL vmlinux 0x00000000 strtobool +EXPORT_SYMBOL vmlinux 0x00000000 submit_bh +EXPORT_SYMBOL vmlinux 0x00000000 submit_bio +EXPORT_SYMBOL vmlinux 0x00000000 sync_blockdev +EXPORT_SYMBOL vmlinux 0x00000000 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 sync_inode +EXPORT_SYMBOL vmlinux 0x00000000 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x00000000 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x00000000 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x00000000 synchronize_irq +EXPORT_SYMBOL vmlinux 0x00000000 synchronize_net +EXPORT_SYMBOL vmlinux 0x00000000 syncookie_secret +EXPORT_SYMBOL vmlinux 0x00000000 sys_close +EXPORT_SYMBOL vmlinux 0x00000000 sys_tz +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x00000000 sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0x00000000 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x00000000 sysfs_streq +EXPORT_SYMBOL vmlinux 0x00000000 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x00000000 system_rev +EXPORT_SYMBOL vmlinux 0x00000000 system_serial_high +EXPORT_SYMBOL vmlinux 0x00000000 system_serial_low +EXPORT_SYMBOL vmlinux 0x00000000 system_state +EXPORT_SYMBOL vmlinux 0x00000000 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x00000000 take_over_console +EXPORT_SYMBOL vmlinux 0x00000000 task_nice +EXPORT_SYMBOL vmlinux 0x00000000 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x00000000 tasklet_init +EXPORT_SYMBOL vmlinux 0x00000000 tasklet_kill +EXPORT_SYMBOL vmlinux 0x00000000 tc_classify +EXPORT_SYMBOL vmlinux 0x00000000 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x00000000 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x00000000 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x00000000 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_register +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x00000000 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x00000000 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x00000000 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x00000000 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x00000000 tcf_register_action +EXPORT_SYMBOL vmlinux 0x00000000 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x00000000 tcp_check_req +EXPORT_SYMBOL vmlinux 0x00000000 tcp_child_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_close +EXPORT_SYMBOL vmlinux 0x00000000 tcp_connect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0x00000000 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x00000000 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x00000000 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x00000000 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x00000000 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x00000000 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x00000000 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x00000000 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x00000000 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x00000000 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x00000000 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x00000000 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x00000000 tcp_poll +EXPORT_SYMBOL vmlinux 0x00000000 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x00000000 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x00000000 tcp_prot +EXPORT_SYMBOL vmlinux 0x00000000 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x00000000 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x00000000 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x00000000 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x00000000 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x00000000 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x00000000 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x00000000 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x00000000 tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x00000000 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x00000000 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x00000000 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x00000000 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x00000000 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x00000000 test_taint +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_register +EXPORT_SYMBOL vmlinux 0x00000000 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thaw_bdev +EXPORT_SYMBOL vmlinux 0x00000000 thaw_super +EXPORT_SYMBOL vmlinux 0x00000000 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x00000000 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x00000000 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x00000000 time_to_tm +EXPORT_SYMBOL vmlinux 0x00000000 timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0x00000000 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 timespec_trunc +EXPORT_SYMBOL vmlinux 0x00000000 timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 totalhigh_pages +EXPORT_SYMBOL vmlinux 0x00000000 totalram_pages +EXPORT_SYMBOL vmlinux 0x00000000 touch_atime +EXPORT_SYMBOL vmlinux 0x00000000 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x00000000 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x00000000 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x00000000 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x00000000 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x00000000 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x00000000 truncate_setsize +EXPORT_SYMBOL vmlinux 0x00000000 try_module_get +EXPORT_SYMBOL vmlinux 0x00000000 try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x00000000 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x00000000 try_to_release_page +EXPORT_SYMBOL vmlinux 0x00000000 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x00000000 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x00000000 tty_check_change +EXPORT_SYMBOL vmlinux 0x00000000 tty_devnum +EXPORT_SYMBOL vmlinux 0x00000000 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x00000000 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x00000000 tty_free_termios +EXPORT_SYMBOL vmlinux 0x00000000 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_hangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x00000000 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x00000000 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x00000000 tty_kref_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_lock +EXPORT_SYMBOL vmlinux 0x00000000 tty_mutex +EXPORT_SYMBOL vmlinux 0x00000000 tty_name +EXPORT_SYMBOL vmlinux 0x00000000 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x00000000 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_init +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_open +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_put +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x00000000 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_device +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x00000000 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x00000000 tty_set_operations +EXPORT_SYMBOL vmlinux 0x00000000 tty_shutdown +EXPORT_SYMBOL vmlinux 0x00000000 tty_std_termios +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x00000000 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 tty_throttle +EXPORT_SYMBOL vmlinux 0x00000000 tty_unlock +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0x00000000 tty_unthrottle +EXPORT_SYMBOL vmlinux 0x00000000 tty_vhangup +EXPORT_SYMBOL vmlinux 0x00000000 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x00000000 tty_write_room +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x00000000 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_read +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_write +EXPORT_SYMBOL vmlinux 0x00000000 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x00000000 twl_rev +EXPORT_SYMBOL vmlinux 0x00000000 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x00000000 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x00000000 uart_match_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_register_driver +EXPORT_SYMBOL vmlinux 0x00000000 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_resume_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x00000000 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x00000000 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x00000000 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x00000000 udp_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x00000000 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x00000000 udp_ioctl +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x00000000 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x00000000 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x00000000 udp_poll +EXPORT_SYMBOL vmlinux 0x00000000 udp_proc_register +EXPORT_SYMBOL vmlinux 0x00000000 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x00000000 udp_prot +EXPORT_SYMBOL vmlinux 0x00000000 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x00000000 udp_seq_open +EXPORT_SYMBOL vmlinux 0x00000000 udp_table +EXPORT_SYMBOL vmlinux 0x00000000 udplite_prot +EXPORT_SYMBOL vmlinux 0x00000000 udplite_table +EXPORT_SYMBOL vmlinux 0x00000000 udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x00000000 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x00000000 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 unload_nls +EXPORT_SYMBOL vmlinux 0x00000000 unlock_buffer +EXPORT_SYMBOL vmlinux 0x00000000 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x00000000 unlock_page +EXPORT_SYMBOL vmlinux 0x00000000 unlock_rename +EXPORT_SYMBOL vmlinux 0x00000000 unlock_super +EXPORT_SYMBOL vmlinux 0x00000000 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x00000000 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x00000000 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x00000000 unregister_blkdev +EXPORT_SYMBOL vmlinux 0x00000000 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x00000000 unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x00000000 unregister_con_driver +EXPORT_SYMBOL vmlinux 0x00000000 unregister_console +EXPORT_SYMBOL vmlinux 0x00000000 unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x00000000 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x00000000 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x00000000 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_key_type +EXPORT_SYMBOL vmlinux 0x00000000 unregister_md_personality +EXPORT_SYMBOL vmlinux 0x00000000 unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdev +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x00000000 unregister_nls +EXPORT_SYMBOL vmlinux 0x00000000 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x00000000 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x00000000 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x00000000 unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00000000 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x00000000 unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0x00000000 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x00000000 up +EXPORT_SYMBOL vmlinux 0x00000000 up_read +EXPORT_SYMBOL vmlinux 0x00000000 up_write +EXPORT_SYMBOL vmlinux 0x00000000 update_region +EXPORT_SYMBOL vmlinux 0x00000000 update_time +EXPORT_SYMBOL vmlinux 0x00000000 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usb_nop_xceiv_register +EXPORT_SYMBOL vmlinux 0x00000000 usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0x00000000 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x00000000 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x00000000 user_path_at +EXPORT_SYMBOL vmlinux 0x00000000 user_path_create +EXPORT_SYMBOL vmlinux 0x00000000 user_revoke +EXPORT_SYMBOL vmlinux 0x00000000 usleep_range +EXPORT_SYMBOL vmlinux 0x00000000 utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x00000000 utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0x00000000 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0x00000000 utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0x00000000 vc_cons +EXPORT_SYMBOL vmlinux 0x00000000 vc_resize +EXPORT_SYMBOL vmlinux 0x00000000 verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x00000000 vesa_modes +EXPORT_SYMBOL vmlinux 0x00000000 vfree +EXPORT_SYMBOL vmlinux 0x00000000 vfs_create +EXPORT_SYMBOL vmlinux 0x00000000 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fstat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fstatat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync +EXPORT_SYMBOL vmlinux 0x00000000 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x00000000 vfs_getattr +EXPORT_SYMBOL vmlinux 0x00000000 vfs_link +EXPORT_SYMBOL vmlinux 0x00000000 vfs_llseek +EXPORT_SYMBOL vmlinux 0x00000000 vfs_lstat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_mkdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_mknod +EXPORT_SYMBOL vmlinux 0x00000000 vfs_open +EXPORT_SYMBOL vmlinux 0x00000000 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x00000000 vfs_read +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_readv +EXPORT_SYMBOL vmlinux 0x00000000 vfs_rename +EXPORT_SYMBOL vmlinux 0x00000000 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x00000000 vfs_stat +EXPORT_SYMBOL vmlinux 0x00000000 vfs_statfs +EXPORT_SYMBOL vmlinux 0x00000000 vfs_symlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_unlink +EXPORT_SYMBOL vmlinux 0x00000000 vfs_write +EXPORT_SYMBOL vmlinux 0x00000000 vfs_writev +EXPORT_SYMBOL vmlinux 0x00000000 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x00000000 vga_base +EXPORT_SYMBOL vmlinux 0x00000000 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x00000000 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x00000000 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vid_add +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x00000000 vm_brk +EXPORT_SYMBOL vmlinux 0x00000000 vm_event_states +EXPORT_SYMBOL vmlinux 0x00000000 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_page +EXPORT_SYMBOL vmlinux 0x00000000 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x00000000 vm_map_ram +EXPORT_SYMBOL vmlinux 0x00000000 vm_mmap +EXPORT_SYMBOL vmlinux 0x00000000 vm_munmap +EXPORT_SYMBOL vmlinux 0x00000000 vm_stat +EXPORT_SYMBOL vmlinux 0x00000000 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_32 +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x00000000 vmalloc_user +EXPORT_SYMBOL vmlinux 0x00000000 vmap +EXPORT_SYMBOL vmlinux 0x00000000 vmtruncate +EXPORT_SYMBOL vmlinux 0x00000000 vprintk +EXPORT_SYMBOL vmlinux 0x00000000 vprintk_emit +EXPORT_SYMBOL vmlinux 0x00000000 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x00000000 vscnprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsnprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsprintf +EXPORT_SYMBOL vmlinux 0x00000000 vsscanf +EXPORT_SYMBOL vmlinux 0x00000000 vunmap +EXPORT_SYMBOL vmlinux 0x00000000 vzalloc +EXPORT_SYMBOL vmlinux 0x00000000 vzalloc_node +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x00000000 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x00000000 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x00000000 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x00000000 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x00000000 wake_bit_function +EXPORT_SYMBOL vmlinux 0x00000000 wake_up_bit +EXPORT_SYMBOL vmlinux 0x00000000 wake_up_process +EXPORT_SYMBOL vmlinux 0x00000000 walk_stackframe +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x00000000 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x00000000 wireless_send_event +EXPORT_SYMBOL vmlinux 0x00000000 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x00000000 wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0x00000000 would_dump +EXPORT_SYMBOL vmlinux 0x00000000 write_cache_pages +EXPORT_SYMBOL vmlinux 0x00000000 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x00000000 write_inode_now +EXPORT_SYMBOL vmlinux 0x00000000 write_one_page +EXPORT_SYMBOL vmlinux 0x00000000 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x00000000 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x00000000 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x00000000 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_input +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x00000000 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_end +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_init +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_reset +EXPORT_SYMBOL vmlinux 0x00000000 xz_dec_run +EXPORT_SYMBOL vmlinux 0x00000000 yield +EXPORT_SYMBOL vmlinux 0x00000000 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x00000000 zlib_inflate_workspacesize +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x00000000 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x00000000 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x00000000 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x00000000 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x00000000 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x00000000 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x00000000 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x00000000 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x00000000 async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x00000000 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x00000000 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0x00000000 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_crypt +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x00000000 lrw_init_table +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_decrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_encrypt +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 __serpent_setkey +EXPORT_SYMBOL_GPL crypto/serpent_generic 0x00000000 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x00000000 __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x00000000 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x00000000 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x00000000 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x00000000 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x00000000 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x00000000 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x00000000 extcon_update_state +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x00000000 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x00000000 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x00000000 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x00000000 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00000000 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x00000000 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00000000 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x00000000 roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x00000000 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x00000000 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x00000000 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x00000000 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x00000000 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x00000000 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x00000000 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x00000000 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x00000000 iio_update_demux +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x00000000 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x00000000 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x00000000 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00000000 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x00000000 dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00000000 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00000000 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x00000000 dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_create_non_blocking_clone +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_shadow_block +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x00000000 dm_tm_unlock +EXPORT_SYMBOL_GPL drivers/md/raid1 0x00000000 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x00000000 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x00000000 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x00000000 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x00000000 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x00000000 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x00000000 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x00000000 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x00000000 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x00000000 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x00000000 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x00000000 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x00000000 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x00000000 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x00000000 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x00000000 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0x00000000 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x00000000 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x00000000 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x00000000 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x00000000 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x00000000 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x00000000 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x00000000 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x00000000 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00000000 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x00000000 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x00000000 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x00000000 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x00000000 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x00000000 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x00000000 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00000000 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x00000000 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x00000000 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x00000000 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x00000000 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x00000000 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x00000000 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x00000000 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x00000000 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00000000 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x00000000 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x00000000 twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x00000000 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_multiread +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_read +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_wren +EXPORT_SYMBOL_GPL drivers/misc/eeprom/eeprom_93cx6 0x00000000 eeprom_93cx6_write +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x00000000 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x00000000 lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x00000000 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x00000000 st_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x00000000 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x00000000 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x00000000 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x00000000 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x00000000 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x00000000 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x00000000 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x00000000 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x00000000 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x00000000 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00000000 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00000000 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x00000000 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x00000000 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x00000000 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x00000000 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x00000000 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x00000000 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x00000000 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x00000000 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x00000000 mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x00000000 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x00000000 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x00000000 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x00000000 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00000000 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x00000000 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x00000000 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x00000000 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x00000000 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x00000000 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00000000 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x00000000 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x00000000 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x00000000 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x00000000 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x00000000 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x00000000 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x00000000 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x00000000 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x00000000 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x00000000 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x00000000 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x00000000 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x00000000 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x00000000 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00000000 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x00000000 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_sync_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_spi 0x00000000 spi_populate_width_msg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x00000000 srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x00000000 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x00000000 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x00000000 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x00000000 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x00000000 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x00000000 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 speakup_start_ttys +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_printf +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x00000000 synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x00000000 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x00000000 n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x00000000 serial8250_tx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x00000000 max3107_suspend +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x00000000 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x00000000 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x00000000 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x00000000 dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x00000000 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x00000000 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x00000000 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x00000000 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00000000 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x00000000 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x00000000 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x00000000 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x00000000 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x00000000 fb_sys_write +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x00000000 w1_write_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x00000000 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x00000000 fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x00000000 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x00000000 put_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x00000000 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x00000000 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x00000000 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_errmsg +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_errname +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x00000000 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_connect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_connect_agnostic +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_disconnect +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_hangup +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_cluster_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_dump_lksb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lock_status +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lvb +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_lvb_valid +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_dlm_unlock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_set_max_proto_version +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_glue_unregister +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x00000000 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL lib/bch 0x00000000 decode_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 encode_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 free_bch +EXPORT_SYMBOL_GPL lib/bch 0x00000000 init_bch +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_2data_recov +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_call +EXPORT_SYMBOL_GPL lib/raid6/raid6_pq 0x00000000 raid6_datap_recov +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 decode_rs16 +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 free_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 init_rs +EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x00000000 init_rs_non_canonical +EXPORT_SYMBOL_GPL net/802/stp 0x00000000 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x00000000 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x00000000 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0x00000000 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x00000000 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0x00000000 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/bluetooth/bluetooth 0x00000000 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x00000000 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x00000000 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x00000000 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x00000000 unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00000000 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0x00000000 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x00000000 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x00000000 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x00000000 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x00000000 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x00000000 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x00000000 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x00000000 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x00000000 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x00000000 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x00000000 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x00000000 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x00000000 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x00000000 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_netmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_get +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x00000000 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x00000000 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x00000000 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x00000000 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x00000000 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x00000000 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x00000000 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x00000000 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x00000000 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x00000000 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x00000000 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x00000000 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x00000000 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x00000000 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00000000 nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x00000000 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x00000000 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x00000000 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00000000 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x00000000 xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x00000000 rds_wq +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x00000000 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x00000000 rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_make_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x00000000 svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00000000 xprt_write_space +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x00000000 wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x00000000 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00000000 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x00000000 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x00000000 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x00000000 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x00000000 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x00000000 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x00000000 l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x00000000 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x00000000 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x00000000 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x00000000 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x00000000 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x00000000 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x00000000 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x00000000 wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00000000 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clk_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x00000000 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_check_ready +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_do_softreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_ignore_sss +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_init_controller +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_kick_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_port_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_print_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_reset_controller +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_reset_em +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_save_initial_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_set_em_messages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_shost_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_start_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ahci_stop_engine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alg_test +EXPORT_SYMBOL_GPL vmlinux 0x00000000 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x00000000 arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_divider_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_fixed_factor_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_fixed_rate_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_gate_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_mux_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_round_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_set_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_set_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x00000000 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x00000000 crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x00000000 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debug_locks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_move +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0x00000000 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_alloc_index +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_del_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_handle_ce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_device_handle_ue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_layer_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_add_mc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_mem_types +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 event_storage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x00000000 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x00000000 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x00000000 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_mci_by_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x00000000 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x00000000 getboottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_clear_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_disable_int +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_isr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_dw_xfer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_class +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x00000000 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x00000000 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x00000000 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lcm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0x00000000 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x00000000 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_run +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mmput +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x00000000 monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x00000000 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_add_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_del_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_get_from_provider +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_get_parent_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_clk_src_simple_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_fixed_clk_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x00000000 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x00000000 otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x00000000 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x00000000 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x00000000 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x00000000 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 return_address +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x00000000 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x00000000 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x00000000 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_get_of_property +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x00000000 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x00000000 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0x00000000 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x00000000 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x00000000 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x00000000 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x00000000 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x00000000 static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x00000000 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x00000000 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x00000000 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x00000000 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x00000000 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x00000000 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_match +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 user_update +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0x00000000 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0x00000000 vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x00000000 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0x00000000 workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0x00000000 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x00000000 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x00000000 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x00000000 zap_vma_ptes --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armhf/omap +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armhf/omap @@ -0,0 +1,10350 @@ +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x13e5ff7c omap_mbox_msg_send +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x16eee29b omap_mbox_register +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x849d64bb omap_mbox_get +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xc3453d67 omap_mbox_put +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xdbc75fe3 omap_mbox_unregister +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 0xa0439f1c bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x714ea5c9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb92b9cd5 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc5c83467 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2cdf707 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0235af6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2e74f758 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x68dd020b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8bf3275d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0xaa3c3cf8 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb72c38c5 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xc3d0c9a2 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/pl330 0xbdd17dd1 pl330_filter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0060546c drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006c1ef8 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0285e5a8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a77f75 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x035cd71b drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x047db860 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a3af60 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8306d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0587de38 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x075386e7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e15c30 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd0e418 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d3cdf26 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e7433b6 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8dc681 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10696ac8 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b09bfa drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11073671 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1128ae3e drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1225741b drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1387c10c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a3b414 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187e37dc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19bfca83 drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c73af75 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d49aba8 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d696b88 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x211eab87 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2143f155 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cc953e drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24795a66 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b59a9a drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d5ab16 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d6581e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cad8c36 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cfce9de drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d807df8 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ebe5eb2 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0a366f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31389d0a drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31637354 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x316ce026 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c32fcb drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x331b069f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3345496d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37cd8b5a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38954afd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3901fdec drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393c6934 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c8ec8d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a6f9c71 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aac3130 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b69d5ed drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cec9166 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423dcca1 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4323a70a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434a6b41 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44d209d5 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x461456ab drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48eb5969 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49158f33 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x491d291f drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4945a3ca drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497b8956 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab691c3 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aeef5a3 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4afa0c15 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4badb0a5 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 0x4f5de301 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5165455b drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566d5865 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58da9909 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c126ce6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dbdc659 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e702501 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eb7510b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dce832 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d5ffca drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65dc65b3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680fa42c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c5d096 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6978511a drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7fb5e3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e0771 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74695644 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75ddd02d drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768fa481 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x771b5fe9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7832825c drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79de4b45 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7adcd32f drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4797cc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b650615 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ae84ef drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8215a1a5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83b0d031 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840ffb0d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x851c1ded drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8579febd drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87530f3d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x878072a5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e9fe78 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8909381f drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89586ed8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a35be05 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6a5ff5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0b4b57 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6b6b6d drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc89459 drm_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 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908d6be2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92689148 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95232db1 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95675b02 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0b35d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9fd0b2 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4edb20a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa506bb1e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa562ecf0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a09d50 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d88b40 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa604b764 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7179c31 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa914f465 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc68ace drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacbe2969 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4b77dc drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb024bcb2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb110a287 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24d01f5 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb42dda7e drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51d4aac drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77a0f72 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89ebf9c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd2dad35 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd6f1fd5 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf696f2f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfbebd3e drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd36329 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33a4be0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e4cb99 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4259c55 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc44030f6 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc463da93 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc732ad3c drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8231556 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91a1d16 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb88fff2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbda0d67 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1ef400 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfce3985 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd106ef19 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2721d6d drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5233a6b drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5cc9054 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7d4d559 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88db039 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a61608 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc63c32b drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdf36bb drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde64898a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfeb1409 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0406bd4 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe181f7ab drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4d8d4ac drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe532ac34 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe626479a drm_ioctl +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 0xe8298af8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e66240 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94bf7f2 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec2c6818 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee8a71c4 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c803c3 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c91262 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b6c638 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4babc53 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe77711 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc7f9aee drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7ec5ef drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffccb806 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x083d750c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b4fad96 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13f43665 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e33be4 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17dd8d26 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ab47e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cf76339 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a7ef66a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41e0a579 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47d04aec drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x489a33b7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48d58304 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x492544f1 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63c19003 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b420d49 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b9aa65e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e87ecbd drm_helper_resume_force_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 0x8441eee0 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8447f2d1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8505d905 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8594ecae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9123181f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ed1ebda drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac68c885 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfd1e4ac drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc44008b4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc747498a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6e6feb5 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4e25f6 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37e153f drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf527670e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb66ef17 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x3d41d164 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7c59dec6 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x97235d18 drm_get_usb_dev +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 0x1262ebcd 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 0x01fb8bce i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x5301cc63 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe49cbcbb i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3436c5ee i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa3078692 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x177e9981 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2caf16a4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3d9cf42f iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x46ab79b7 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4cc75a5e iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5cf690f5 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x5fe927e2 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x6a08a14c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x6b069003 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6b0729dc iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x75b533e4 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x82bca169 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8871b32e iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x90ea0377 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x91bc0a3b iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa57ab762 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6bf5879 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xaf0a8f8b iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb74b6aba iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbbab385b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xc7fa0bdc iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xebcbafdf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xf4491e2a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf4e947ee iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa3d6266c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf31bfc97 iio_kfifo_allocate +EXPORT_SYMBOL drivers/input/gameport/gameport 0x02347604 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x43265263 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5602be9b gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x62fcf043 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x978266e8 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9907d492 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed8baf43 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf28928aa gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf9c43465 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0cb6caf5 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2309b44e input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb7e1a448 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd4ffa98a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc4df77ab matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x17c7c2b9 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7866d5f4 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7ee705c2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef7a5879 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 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd5c9b50d cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x13867411 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7cc3fddb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8802123a sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa8620f71 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb3b619c3 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbf0df5e8 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x6c0207e8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x923eb0ba 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 0x13005998 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1990dc8d capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1b8d4632 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x337e60ef capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3cb74ac9 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x40d15df4 attach_capi_ctr +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 0x647754fd capi_ctr_resume_output +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 0x8521b19d capi20_put_message +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 0xaec8f006 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd05a0615 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/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 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 0xf804fbdb hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1a9edca2 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x74e78d96 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe643a5e4 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 0x055be6ce get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x10a75f2e mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12cde685 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x16aee51e mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x16ddd6e1 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x21519c1b mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x21882bfd bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a2de6aa mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f3a4311 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45bcf160 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x497cf483 mISDN_ctrl_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 0x5628828f mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5813fdfa bchannel_senddata +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 0x69831a4b recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7335e5ee recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8010fca3 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d8bc8ec mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x913d8bd4 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d7607b4 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb0327233 recv_Bchannel_skb +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 0xdc06dc30 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xddd937e1 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 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd92591f 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/dm-log 0x393f59af dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7efcc2ee dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc6a5be42 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xfa42a911 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x22cdbfba dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2490901e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e87c42b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6624ffbc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x67e2b910 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc3a3d512 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x13319403 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x33bc4fae fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa0f304ba max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xdcbfa503 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x79291b35 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x98c7c064 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x2e9a5910 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x6462e5e4 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x6848fd7e tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x6923136e tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x6f563389 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x60d54087 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8c9887fd xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2307a301 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x05d01c89 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1f7b27a4 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2af509c4 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3dcc67eb flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x41c941ea flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x591c0471 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x59e90e30 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x604f68f4 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x742373a9 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa2586521 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd32bdf03 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd8f14276 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xdbfaa261 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c98f0ae dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1f363415 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x258aaf68 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f2786d0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x335fa807 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x35c754a3 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f0c426f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x518c4119 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x542877ea dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6131d762 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6225816a dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x66e6d383 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x687066ad dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6c7577a0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x746b02ad dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7a854509 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x83a2ef94 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x883c17c6 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x90b3c91f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x961239a7 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x98d95870 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9ae3f6da dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xae55024a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3297434 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xba616e61 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbfe37d06 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc28df96e dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe2580c5c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9164bec dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xec9a09d4 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xed9e5ee7 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf487376d dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf5f9b07a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfb25f454 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfd1885bd dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x27cfeeca dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x758da59b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8393aeb4 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8e124dd0 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x98b1e696 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xa188b41a dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xeec875af dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xeda1384f af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x19a923b6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1b782e2d dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1ef3ef6a dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5ae9295e dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x70b0593f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xa1e13e9d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xae8d28a2 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb293ccef dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd07d2110 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xef65a93d dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xfd3365f0 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0xe19de7c7 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf6f61250 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x43d2e5f0 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xccbcf856 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x11b0711f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x29711556 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x2a247cdd au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x59fed5a0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x8b7fe401 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xae3935fc au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xaf2dcbbf au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf858bf3e au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x45849b05 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6e7a42dc bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x34c4a817 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x8fa2912d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x7b6bc589 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x72f1e393 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xd984475c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x36eb9209 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x4eb17599 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x69c16635 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xf1b6d7e8 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39732d0b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x859b9d66 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8ce58e6c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9543d443 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe181d0ed dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x21add01c dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2513bde1 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x30c01d60 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4cc5ff49 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x54bc864a dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7798ae01 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7e4ecfee dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9ed95484 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafb6a46d dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbbc5ece1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc07eb9de dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcc82be17 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd2491654 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xea31e655 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xf9331e85 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xaa6ec7ff dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x268a8973 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x543f4b82 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x5a30af99 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9e6066f7 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xb27f19fd dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xba33af2d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x449aa6eb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x920f2531 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x93fc9b7a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xbeefa300 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x02aa8e95 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x084e4453 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37f8056b dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x40753891 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5274bb05 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x56cc0972 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cbd6a5e dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x62c876d7 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8aed8938 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9fa5c44f dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc09c4a86 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6b65100 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd9c4dcfd dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe6ed6840 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfbc4b404 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1bd13fcc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x21945e37 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x25f397d8 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c814b88 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3f951716 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x477d97e9 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e557ece dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x581f00da dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa16f3ca9 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa1b46b05 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae15401b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb79d60e5 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbcabd0ea dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbd8a3498 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcd0e32c0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd82974d9 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdc815e57 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe6b6bdd1 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe91fff18 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x378ca184 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x37e88b87 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x3eef19f3 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x4b8f6169 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x53c06d19 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x54779f9e dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x590a5884 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x637e0d61 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x6492fb4f dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa109ed1e dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa663e763 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xc87ce035 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xd6f9b54a dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xfedaa2e0 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1d487f7f dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x253d3307 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5ec442a5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x9717ce4f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xb9b7f1c8 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x6daee061 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xe4e0984b drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0xf11a32f6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x636905ba ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x86a9d32e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x4c3b91d0 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x396418f9 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb361220f isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x45dc56cd isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x5d94e2f5 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xb2875c0e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe9ff3f21 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x27778208 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xf0bb9071 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x0f46457e lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x6c127e65 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x8686fdcb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x141e3b0b lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x9ce94bde lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x15a351cb lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xdc50a1f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe0748db4 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x7006484e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x12e74b84 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x7b121383 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf621f83f mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xb31c2b72 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x64cef4da nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x7bffbc1d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xf889714f or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x0ee05508 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x32b13dac rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xcf994fda rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6f717925 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x8e7a842c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9e384e08 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xfe01aad2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x1cb2eafd s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x68599ecd s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xad579095 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x3a993e92 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x9d399727 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x20afca7e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xae5c1dbc stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xd26b5e18 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0xcda4a363 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x783555a0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xa3efcc0a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x09aead6c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x93643543 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x548df548 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xd88b5451 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xecd7255c stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xe88b348e stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x88528572 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x221a2a72 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xc17ab9b5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x8ed3a496 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x9259eeaa tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xf260a725 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x67369410 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xa34a4fbd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x41a3e8bc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xbb3c1553 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xd5f987e7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x35c7bbf2 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe6900c79 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xedf90595 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xee189c4c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x4db9c612 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfa0e89c1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0317ead0 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xe28e8ad2 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x06533d19 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ab8aea4 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x30bffc04 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6fed1805 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x92d4ce0c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb39dacb0 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8c5ce77 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf00f4027 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x33f11c3c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaf95f719 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x4c4c7ada cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xe17a6ebb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4e676f6a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7586b17a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd187dfb1 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd8a3779a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0x58c8cd06 vpfe_register_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0xc983fcd8 vpfe_unregister_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x088ccec9 vpss_select_ccdc_source +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x319709a6 vpss_clear_wbl_overflow +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x54146824 dm365_vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x6e5b5413 vpss_enable_clock +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x749bf2c9 dm365_vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x09d9afc1 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x2e6850c9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x14d6cceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e35c5af gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x49485ded gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5f9a575f gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x65cfbddf gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84c0b639 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x90207409 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x9400bba2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3d49d0e4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x423da71f soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x59c21783 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x66cbd6d2 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9667c6d2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa11000f4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x6196852c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x91e3a248 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xa7eccb7e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x475a8d7c tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0x8713fbb1 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x8deca363 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xad781961 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x3f72b910 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x6919be09 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xccecb1c7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x333c1b7e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x38009a02 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39364062 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x41354716 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6b87d289 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x82e8269f videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xce7e45f8 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0d99a55b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x13355c3d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x16310292 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x1e335a16 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x24fa8064 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x28e32207 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x2def4f2f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x33cd0d02 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x358bfe3a video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4904e326 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4af15a06 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x55213c57 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5b835d3a v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x641c4671 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x64ce2bc0 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x65f0f5e2 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x6875771c video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x6f5aa18f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x7155f80c v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x77637058 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x7771ebfb v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x835b6025 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x85b37974 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x91a9ad54 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x96c3a076 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xa2342123 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb85f8e3b v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xb99a3054 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc321d7bf v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce04ea62 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xd353b2b0 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xd6eaab33 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xd785a33c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xdd0462e6 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe0e4d2c7 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe1155fda v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe2f064aa v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe61dedb1 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe72ab1af v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xe7ec83b8 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xec4bc368 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf1e00e94 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf321cc5e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb959f0c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/memstick/core/memstick 0x05b9d4ca memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0cf90081 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2090096d memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x22476e5e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51f6b925 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x63873823 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x656cd812 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x779faba5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9658abed memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5a65469 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xddfa39c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf844510d memstick_resume_host +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8bfd1dae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc46a54bc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c89d32a mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x13862de2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cffda0e mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x41c27171 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f7d36c8 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7cae2548 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ac37a25 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xafac418e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4b2e23a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0e41389 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe2795a05 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe36e72c4 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfab5deef mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1d247422 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb0770a5e tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc4dbd370 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x441bbefa ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa9970e3b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +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 0x1007174f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0b2a070 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x17dae94e dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x534b807f dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x8fe02703 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xde39e2a9 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x2e110b06 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7fcd79b5 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8155e046 tmio_mmc_host_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa8172124 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbb0a6e4c tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdc583b00 tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x38608e3f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x528db246 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd794b137 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x7e3a7ed9 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x06e7bd27 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8d282c57 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe5e3dcab flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfb96e658 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfc6236e6 onenand_addr +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1776e97b hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x218445cc hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9573b8b2 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe4e55262 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeef2b350 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0079a4fe sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x36920f77 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x70afd9e6 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9910233e sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9f7e5526 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaef08974 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbf0771a4 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc35f96f6 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe0a89cf0 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec698386 sirdev_receive +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x66ca2feb alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6e5e78ad free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9dd55816 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa190fb00 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa5243dee register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wan/hdlc 0x055c2ae5 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x38e8ee00 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3bebc1aa register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7babb530 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8fefc6f8 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x97c66a2c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x97dfe738 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0404fc4 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd1b84d8c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf31ebf52 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfe792cba hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x34a785c3 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4033c159 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x608da6a7 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x892f51ea ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa141c1c7 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xae56f5ed ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb0952071 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd9447e82 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdbf67c64 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe0514660 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x011fc259 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x162b58a3 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x23ce39f9 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4cb66de5 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x76f17bd7 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 0x94c65127 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c63867e ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c668858 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xda370224 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdabe5e09 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1012a39b ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x28939b1d ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x531f043a ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdfc6cf00 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x010a01bf ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0488eb7b ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04cedbda ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05bfd9bc ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x077f9c99 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09d95f59 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a4f3bf0 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11023c3f ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x114f30b1 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x164b0d71 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17b6c445 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bd5c929 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dcad427 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f38ddff ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f3cb578 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f8c6e22 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2450c0d8 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26d7bf29 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x284f7f43 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29ee0056 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bce8c89 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c930282 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3054070b ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38fdbd8a ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e344720 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4457fcb8 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46244cda ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e046e07 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e0985c5 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f5d5bcb ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5179cea1 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52e73fb0 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5330aca4 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b0faa74 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cceee48 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63ce9f95 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6838bcfb ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6890c456 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6acfa5a8 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ee118b3 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x793c9810 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b365756 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8526d4a9 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a35285c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bb35a78 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bfbd8c3 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8de991ae ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f1353a8 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fc383bb ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93637813 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97eb7fa2 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99c7b668 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b03d620 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d208c1d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e1bac1d ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f5d0875 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa06509c4 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0bfa79e ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa78d4534 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8b922da ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab611f1c ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab736a84 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf1899f7 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2d1da4f ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3b49ab5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb96e17b5 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9736896 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99c68c0 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba7055e9 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe64323a ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc64ef905 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc72cecc1 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbfc1030 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce3332b2 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf62d4d4 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf72742b ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd16495f1 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd510fdd1 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5da7771 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd87945ae ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9b88a7e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe00f2e33 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0bf74d6 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1dadea3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2e256b9 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5e5091b ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7e66051 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5f9a3ce ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa5e2448 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb672fbf ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff19bd39 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff8542b1 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x4fd413c3 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x8ad65a88 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x02f71c29 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1623b6e9 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x171026cd brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x185dd121 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x257293cd brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x63ad5a42 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7478dc38 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a7d60b4 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9b290caa brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa252a286 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaba377bd brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf80cba67 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x01e9525a hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x11e080c5 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x162edaf4 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1648e5cb hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1bb26799 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e423403 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x242c2bd6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x394c1224 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6362e42b hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d681e4d hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x73086be7 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7b20428e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7fc5aed3 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86db6c88 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91bae558 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x997e88ad hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1e9b5ae 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 0xb83ebc08 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc52cfb54 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5429d54 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5c12382 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd8e0ebe3 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeb9c0ea6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xedd47bf0 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf82a367f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x04eb75dc rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06598eff _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06a38a48 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0f6aa38d _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19196652 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25cac8f6 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x38211217 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b5b6d74 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3c2a8bac rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dc85e03 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4085d320 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x492edf77 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4952e005 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bfaeb67 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5189a303 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x576a9eb6 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ddeb26c rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6754b886 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68d95234 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x692c745b _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7363f66f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79ee41ab rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82c05299 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x831311e5 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x861757cd rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8989662e rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e577f9d rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a52de2f _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d4fe1a1 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2395d57 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa9e5c590 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaba404d6 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0d4be0a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3d68247 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb7882316 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc2c08d9 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc0c8981f _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7381093 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7b3159a rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb2a433a rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd795c3a0 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeadd6bae rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0095d2c5 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0d713e3f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x222a2988 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2a65d795 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2b06ef4a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2be84271 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x52ccd3d7 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60641073 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6ffb1d04 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x775f219e rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8994a28a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8a33773a rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8c6a5d47 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9719d3f7 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xae3f0ab1 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcd253de8 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xceb0e0d3 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd80e8734 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe51429f5 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe55b687f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x73aaf8a5 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbc2ec7ef wl1271_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x07025813 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x196a9d55 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2222aeeb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x27941c97 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3c586e06 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x47fd01b6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4cda7720 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6103e005 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6201f390 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x66fe4867 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x68566f0c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7796a171 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x7efc06d7 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x83e749c1 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x8d5122b9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x8fa9d741 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9825b188 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9f54266b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa3ebc751 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xa45527cb parport_release +EXPORT_SYMBOL drivers/parport/parport 0xaf7c2264 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3dede9a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb832abe9 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xc83093cd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc84b1df3 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xd890b52d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xeb261256 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xf030e747 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xf2c83d97 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfbf102f3 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pps/pps_core 0x19727db5 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2c74c673 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x610b0a1f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb67659e5 pps_register_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2368ac36 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2854c509 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41a7515e fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4470f5ce fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x66b2d52e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7b49d284 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9c3e4404 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb57e7f0e fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda770d9a fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf1c7ed6e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xffadc5be fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08feb8f0 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x091e90ff fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12ce9ffe libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13a98449 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13ee695f fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148994fe fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x221a0077 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x270a589f fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x285f6b87 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2bec3654 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ef91642 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fd0f0f1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x312a70f9 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38e94653 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x475c9936 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f37b9ac fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5aeab927 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x614704e4 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x653995e5 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fc885a fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e54d68e fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f8867da fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7616f652 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7b4ad659 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eddf5bf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x832fe7f0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83365583 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87d4617c fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a191dc4 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8aca745d fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c3ec510 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x901caebc fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92dd3161 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aa87554 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ee755b1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fbdeac3 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa01db5a9 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa128ffd0 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa75eda00 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8c66fca fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba674f93 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbfa667b3 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc9f35e1 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4055e5c _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd464e772 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4bda3bf fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe02d7f4d fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4a75d6a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xecc49efb fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff216899 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x04c30cc2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3b3e439e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xed222aad raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x06c7c950 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20a0af44 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2123eeb7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31d706eb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ba20b6c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99eb5817 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a983ade fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0e18ff7 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbbebf927 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd195b5f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xddd2b14e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe37a250b fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4d0319c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09b0b079 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11687b0f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118d274c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x14903952 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x168870c6 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2284443b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27012824 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4390f019 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8e7e5f sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6016cf9a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65d67ef8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70a24585 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86615c59 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x870a8e56 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f03c761 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cb57746 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa210e9b0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa2c86117 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaab3b39d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab91abfc scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0de1f6a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc29021df sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca23df82 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca386ae8 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb600f19 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6c6b86 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe92cc9b5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea75b4ce sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1fe83597 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2cb70380 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42001568 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7453b901 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb39e7bd3 spi_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x0409018c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x18af45c7 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2a7bdb50 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2cd84326 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x583ed935 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5e0b93fe ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5ef81631 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x72bc6f8b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8d8cc33c ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x9bced4e1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa92908f3 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xab3940a5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xae4a7a05 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf20c559 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc33eae7f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc70da9d2 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe4051e90 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe51c25de ssb_commit_settings +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x9234183f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xcab774f1 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe006ab35 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xed8a9888 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x64d71cc6 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xe8520719 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x5a79888e phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xc69b8f8f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x00a576bb transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x0162f84c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x022e4f24 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x079cef8f fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x12934f9b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x1369e96f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1406fae7 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ec26288 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x246cf711 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f9e6d8f sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x337dd862 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x406b910e transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x45312f98 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4591c7c3 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x486c4429 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c63220c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x4cc04a3a transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x56f29f3c core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ab462c3 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b67317a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cb2c3fd core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a067c82 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b3bdcfb target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x728682a4 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x75440648 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7602e120 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x77324851 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x774cc0b5 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x79092561 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7fd8cb5e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x80a78840 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x826cd371 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86c2abbf fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x87ba5c27 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8becb731 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x98c21966 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x99a4bd56 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d1f5f19 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d987eef transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fa9835f core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2cbeb70 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa0d9235 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb78dd57e sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbf63686 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcdf0044 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7180063 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf12a0b4 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf8d2131 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0cd1413 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd188696f transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6a96aea sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xd85849a1 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4b3ee2c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xebadbea1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xecd595f5 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1d5a345 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3882ad9 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf46b3133 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf859bcec transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9e7ccf2 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa35e288 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x672b702c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xa0bf53bf sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x000df614 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3f65541b usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x759877a5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c42f63e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9a22b765 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaaf48945 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xac63b23a usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb03be8ab usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcfcb22c9 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd67c499c usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe042e5d9 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfc1d472e usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfcd07be4 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfdd9a6bb usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfe62122b usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7a799718 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8d5b91bc usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07c7dd3d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf5d673a1 lcd_device_register +EXPORT_SYMBOL drivers/video/output 0xaba46453 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xb3722d93 video_output_register +EXPORT_SYMBOL drivers/video/syscopyarea 0x7097ec1f sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xce1817f2 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xb31f1fbd sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9f38d657 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa0d41cc6 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0e66e0a w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf453b7ca w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0be3eb64 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xcfb43bea w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfc1d6660 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1342fd70 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b0c45bd w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe57b8d6 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x25547c11 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xc15ae288 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe125283 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe388128 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x1074bf38 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x15b33ac4 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3be87079 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x3bf16352 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x6ba63918 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7475e5f5 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8370eef1 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9d9e348f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa4fd2c3b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xab64fc36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf0d1b8c3 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xfb52e8bf config_item_get +EXPORT_SYMBOL fs/fscache/fscache 0x0663e0fc __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0cd0d4b5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x21894c41 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x30447263 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x31731797 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x33e57046 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x33f4f96d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x394c16e9 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x3ea188b8 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x508a5d08 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x63d09275 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x72ce6d40 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8f8d757d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x918ce891 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x941e6b42 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x976cdb76 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa44cf5f4 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xc0b8c9ac fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcd7e35a3 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd8d5bfa7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe3b3f03a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe8462631 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf112e607 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4191ed6 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4768489 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5d31fdc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xfb5317b2 fscache_mark_pages_cached +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1c433e1b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x744c7ac0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x802e86a0 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe1b68d98 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf78a229b 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 0x0ea7c60a lc_del +EXPORT_SYMBOL lib/lru_cache 0x236f6654 lc_create +EXPORT_SYMBOL lib/lru_cache 0x4308237d lc_get +EXPORT_SYMBOL lib/lru_cache 0x58f461a7 lc_set +EXPORT_SYMBOL lib/lru_cache 0x604890a6 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x617b0ecd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x78e92b13 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x831045dd lc_reset +EXPORT_SYMBOL lib/lru_cache 0x9a21924a lc_put +EXPORT_SYMBOL lib/lru_cache 0xc388d3ac lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xcea4d17e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xcf5f0864 lc_find +EXPORT_SYMBOL lib/lru_cache 0xdd7a727f lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xed91c002 lc_element_by_index +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 lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x04b67ea1 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd54fdcd3 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x225e0f04 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xcc9eae8d destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x99940db7 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfb612139 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02c04dbd p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x04f60844 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x07013c09 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x10ecceee p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x214be670 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x22b90756 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2342974e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x2a27a057 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x2a941566 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x2ec54d62 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x380e14a2 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x38f25524 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x39187e40 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3c3c4b78 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x48b84c3e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x4ec52be7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x5151fed9 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x51b09a2f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5709eb50 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5bc5c3d8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x75b49540 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x7ab52012 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x80c084f7 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8f01d92c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96ad23b6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x993fcd76 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9bc81f64 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa99eba8a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb05010a5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xbf52c7a4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc065b2c0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xc43f7b40 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc98f5e5d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc9f26a32 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd4d05d10 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd742340e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdb478d17 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xdc7240d5 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe1089681 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe1b69bac p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe38c9ce6 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeb2a10ff p9_client_getlock_dotl +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 0x6982c516 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x8ae38fb3 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x9b0923bc atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa137f77d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x1adcbe67 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x1cff0cdb register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2ed7b910 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x5075b13e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x51e2c365 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x56911c65 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x58d7357c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x6ba65a8a deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x875d0ce5 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x91fdad79 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb297008c atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xba9c69ad vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5eab1ab vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf687d401 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf7da1c1a atm_charge +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53d36be0 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5be29edd ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8aa0f9ec ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xbeeb2c09 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd6b26604 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xda9cd527 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xdab1897a ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xe58c26ad ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xfdbc048c ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0dc013d0 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x10f5de0e hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bd40b50 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2434dc5b hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25643045 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b8cae58 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d9445bb bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x337a4422 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34c1883c hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3761b51b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b3647a8 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b6515d9 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d0108b0 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67f5579a hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74af5149 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x78c5ee15 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79225546 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8ce35f bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c2c26c9 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84734398 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x860f1e39 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x94cd61fa hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c2186e9 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa25254ca bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb024f87a hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb675af8d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc570fc7 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc06e6179 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4a3723d bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc92ad457 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2339681 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2c8f5b3 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7656237 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda07b888 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe1cf16af hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe4c05b1d hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe793545b hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec709810 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bridge/bridge 0xf4a28ccd br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2631323b ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa3bc08bc ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb488893b ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x191d22c9 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3cc6f817 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5e02afdc caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x73cb3e6b caif_connect_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 0xb36d5122 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x4d2620e5 can_rx_register +EXPORT_SYMBOL net/can/can 0x54742638 can_send +EXPORT_SYMBOL net/can/can 0xa1e5d0e5 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa5ae63b0 can_proto_register +EXPORT_SYMBOL net/can/can 0xdba27ab7 can_ioctl +EXPORT_SYMBOL net/can/can 0xfa644942 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x0406dafd ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x06842c3e ceph_release_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 0x10bed75d ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x13613ed4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1677df52 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x16ef3176 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x19b0e182 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x1bcd96fe ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1d94ecc5 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x1e3b9fec ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x302d9f86 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x32ac2e04 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e0978b0 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42728f99 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53f8cf23 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58845a64 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5f5e144b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x668ee754 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6c1a4594 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x6c67f3cd ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x77ee925b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x790605a6 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x7f3e3711 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x8866188a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8e6f752d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x947ddbad ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x95eb60eb ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x96036809 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x98aa5e18 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x993bbc8a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x9beef883 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2e65b1d ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb445db55 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb879299c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xbcf891cf ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xbd455b2c ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc08da5ac ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4bba83b ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1482a0e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd2b8544f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xde2c47c5 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe40e07c1 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xeddf6e2c ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xf40b6c13 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xf95e802e ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfdbd62fc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xff5809c7 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xff7923a0 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xbe447095 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x04829c61 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x42593cdf ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4bc41d74 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x50511ae0 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5631f807 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6d3506f1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x780c0f2b ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x811c6711 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x855799db ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9a53305e wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa583d783 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb952313c ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd00042f9 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x151c0236 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xacd9186e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf829719b arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0ee3a121 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xec548e8e ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf69d50b1 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x1e9b0785 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x24d5fa24 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x3ae43807 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x4e5051b6 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x7d47e6a0 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xaef38d69 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xe5d21517 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/tunnel4 0x80b9041b xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xddcaef62 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x79f63b0a ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x7d420e9b ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb8f9089d ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xcf128566 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x4a2f182a xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x6932a5ca xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x286e8d8e xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x58c91bc7 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x08646797 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x22306a29 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x52d5f612 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x550ce53d ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x638adf0d ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa02fa8a1 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa7ce69af ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcd034aed ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x051d165c irttp_dup +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x070ec814 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x11ebbf0e irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x162df9d7 iriap_close +EXPORT_SYMBOL net/irda/irda 0x185f1187 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x1f34c235 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x22caf86e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x2d3765bc hashbin_find +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3e1dcac3 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x4479ef51 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x4495119f async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x538d5d22 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x572583cf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x5f55c3a2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x5fe3a967 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x69c2b7cf irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6f4b308c alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70b1e8db irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x74c6eb16 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7aa1ddbc irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7de04a81 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x80da7829 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x91aff271 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x965c47ed proc_irda +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9f04bb63 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa014e08f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xa12d9693 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa9726385 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xb5c93e6b irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb710786e 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 0xbf285a4c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xc1794f12 irlap_close +EXPORT_SYMBOL net/irda/irda 0xc3a512dd hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc5461e83 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xc9c45d51 iriap_open +EXPORT_SYMBOL net/irda/irda 0xcfc32e9a irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xcff16086 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xd115a3b7 irlap_open +EXPORT_SYMBOL net/irda/irda 0xdc690886 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe2c5e2df irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xedf805a9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0xef16660b hashbin_new +EXPORT_SYMBOL net/l2tp/l2tp_core 0x5c762c63 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1a1c1305 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x3e633310 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x4888d6bf lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x61a8df1c lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x678c9cb4 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x73cc9b75 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xe030deca lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xea48e075 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x1a635c35 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3aada98d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5b458824 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x5e85fc5a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x831d38a0 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x9656f8a0 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xc67d7e79 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xeb0b41fb llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x00f410d3 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x08d4cbd7 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x0fa1ac35 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x18c1d937 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x24e98921 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x25977914 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x27a0aecc ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2ca159b5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x35b999a2 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x3b36caef ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x45ff6dd8 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x46403b90 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4989fcf7 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d271dd4 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5fa11fee ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x6068c39b ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x62d12f08 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6bb30674 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6f635be5 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x7741bfeb ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7e70a9af __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7f0aa7fe ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x85d15839 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8bad1a22 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x8c33b8bf ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x9084d19b rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97a328bf ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x997206b1 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9a9a4ee2 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x9c65dd28 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9fed057f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa5c0feb9 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e68e17 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa82e60ed ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc07dda3c __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc9c271e6 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd7a6ab3d ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9847a79 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdb24847f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdeabc510 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe0009bf4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe127bcab ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe7c1a853 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf27eed55 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf49509eb ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf88f320d ieee80211_napi_schedule +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x133407f6 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1fa54739 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2336dda6 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x26bbbff5 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4fedc97d unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5a5214f0 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7d7fa9a4 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9e82928b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7df0351 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce425516 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd3d19fa8 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5ea02fb unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda45286d ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe7d51c2a ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x77181a46 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb1893a3a nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xde2c01aa __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc924bfe8 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x00963739 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0b83e247 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x1ffb2206 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3ce7b659 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x414b0b13 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x605cba69 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6ced8f54 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x844f188a xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xaa4b6579 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe3902cc1 xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x018b3019 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0398803a nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x0e5582fd nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2054396b nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x38b876f5 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x49c1bfdd nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x4c47cca8 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x4eedc996 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x53df246a nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x5b0bb163 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x61f21ea6 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x63f178d2 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x678c7915 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7433da25 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x750d4121 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x7f884e1d nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x997fa452 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa46a362c nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xb355456b nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xda7e9cda nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf39086b0 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x12b096b5 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6ca65bed nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x72e7d3cb nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xa1fad6c6 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xea871d17 nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x17501803 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x220f34c6 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3acdf86a nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x7d3a94c4 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x974df7ae nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xa425d650 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb548c89a nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xbb2ff88f nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xc75d47c9 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xf07a0e58 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xf5d13287 nfc_targets_found +EXPORT_SYMBOL net/phonet/phonet 0x0b24ce2a pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x5ecfe4bf phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x6693df5b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x6fa12272 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xbfa4ee4b phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xd31c565d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe51b9ec8 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe7ba2ba7 pn_sock_hash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x172b7cad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1c3a2bd9 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3089fd18 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x41f50c0c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x47c2cdd9 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x636051e6 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6830d0e7 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x85732bb6 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x94f02255 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9866ceae rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb10ccd25 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb18d2835 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd81dcdfe rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe595862f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf0afad85 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x6c0b9e49 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3a37bf21 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0c0ad032 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xb0657d5e wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x095483ef cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09edf86c cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x0a75fecd cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x15f56960 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x16aff329 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x187b6ad2 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1d2ba3ad cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x1d9f0ba4 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2d7c32d1 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x2fed6eae cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x34ef99ff cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x370fcffe cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x45933fbd cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x465233c2 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x4f43d697 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x5094ce50 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x50bd68d8 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x52fd5fc2 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x59175513 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x6091f334 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x68f249d3 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7670809a __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x7a8ebba5 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f44a9f8 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81462925 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x8452aa46 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x85923c01 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x85e5319c cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x885cb026 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x961479e1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x97c690de wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99db39c0 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x9abff386 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9b74b2b5 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9cb9df95 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9ed1d76f cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa0cf8e20 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3c375f0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xa802b38e cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb6da4277 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xb7858b81 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb794c6cc cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc1bcad2e cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc57a861e cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc742080a cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xd9126603 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xd9dad72a cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdcfc72aa cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe1d4c990 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe64cd016 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xe7e7d415 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xefffbbc2 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xf2d8ccc6 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf3f30b7e cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xfc73a6fb ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfebcd2ef cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffcf4f9a freq_reg_info +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x4df609e7 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7d88d486 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xb1352cb1 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xd869f406 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xe240752d lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xeaa9255b lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xea77d80b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5597a71a snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x05ba8c3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1b7e2a11 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2928b118 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x743f2c18 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 0x6803f7c5 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa1585716 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-event 0x0df2e317 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x26885c56 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ab3ab98 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ddf2a2e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85c27c7a snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85e4ac82 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd4945484 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfcf964a7 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x464575d8 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x76ce51c5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14a0132b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x154df648 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x245f8ecd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e198920 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5222960a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54c06636 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5941efc3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6120e10f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x629b7e97 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6f6b8ba5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7a417cef snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8cd1a8d7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94f900f5 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95823a7c snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa88dccc2 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8aad07c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdee35c75 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9fd1963b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f8e7dbd snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13f91d59 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18edb454 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3bbcc72b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x463c867d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e6c8065 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7fd5a310 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83a400e4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x92ae42d7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9bc797ed snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0f0c257 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2e33729 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9348a92 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9f9ff5c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd46e50e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf662f332 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff88f3a1 snd_ac97_resume +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 0xbde753a1 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00303884 arp_send +EXPORT_SYMBOL vmlinux 0x0038a9bc tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x00658d2c snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0081030e omap_vram_reserve +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x0088eb1a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00d6e47a tcp_shutdown +EXPORT_SYMBOL vmlinux 0x00dceeb0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x00df3cd1 snd_timer_start +EXPORT_SYMBOL vmlinux 0x00e201d8 netdev_printk +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00eef49e __strnlen_user +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010757a3 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01316c4b revalidate_disk +EXPORT_SYMBOL vmlinux 0x01424f59 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01acf78c blk_requeue_request +EXPORT_SYMBOL vmlinux 0x01b0193a skb_dequeue +EXPORT_SYMBOL vmlinux 0x01b437d1 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x01d3621a tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x01d372ba thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x01e8ac6e twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x01ee6a12 tcp_close +EXPORT_SYMBOL vmlinux 0x01fea6ed usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x024bf88f omap_modify_dma_chain_params +EXPORT_SYMBOL vmlinux 0x024fe8d5 udp_table +EXPORT_SYMBOL vmlinux 0x025132c5 dpi_check_timings +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0276abef xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0283e58e account_page_writeback +EXPORT_SYMBOL vmlinux 0x0289743f of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x02a0d156 gpmc_prefetch_reset +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a72712 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x02c36bb4 journal_create +EXPORT_SYMBOL vmlinux 0x02cef1d5 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02ec9d8c udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02fa54aa mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0302c48b idr_destroy +EXPORT_SYMBOL vmlinux 0x030bce7b tty_port_close_start +EXPORT_SYMBOL vmlinux 0x031ba9bf atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x0331bc7b dm_get_device +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034eec6c bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039fbbc0 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x03a6d6b2 lock_may_read +EXPORT_SYMBOL vmlinux 0x03a7452e call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03da7463 neigh_create +EXPORT_SYMBOL vmlinux 0x03e0f1b7 __lock_page +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ffa31d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x041c2e04 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0444d12c serio_close +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0461149f input_unregister_handler +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04768963 dquot_destroy +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a621f6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x04b74adc vm_map_ram +EXPORT_SYMBOL vmlinux 0x04c47134 of_device_register +EXPORT_SYMBOL vmlinux 0x04cb6240 files_lglock +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f2bd44 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x04f4c74c backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x051efadc pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x0530b5d6 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054ef447 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x058db3f5 up_read +EXPORT_SYMBOL vmlinux 0x05a6c5ba vlan_vid_del +EXPORT_SYMBOL vmlinux 0x05baaba0 wait_for_completion +EXPORT_SYMBOL vmlinux 0x05d95ac8 write_inode_now +EXPORT_SYMBOL vmlinux 0x05f87ef3 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x0604162a call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x060483df inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0648e553 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x0650191f d_move +EXPORT_SYMBOL vmlinux 0x0658e8b8 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x065de4ad vfs_statfs +EXPORT_SYMBOL vmlinux 0x06614df7 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x0679d461 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06946e69 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x069ce1b7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x06a26579 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x06b9c59d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x06e695ed set_page_dirty +EXPORT_SYMBOL vmlinux 0x06ea8aac led_blink_set +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0715130d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0730ed21 d_lookup +EXPORT_SYMBOL vmlinux 0x0739b3d4 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x07608ccb netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x0780defd __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x0784d67f noop_qdisc +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a6ddfa abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bb555d scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6fe98 proc_symlink +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07da2fbd dcb_getapp +EXPORT_SYMBOL vmlinux 0x07f9583d phy_find_first +EXPORT_SYMBOL vmlinux 0x082eb968 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x0832c933 skb_checksum +EXPORT_SYMBOL vmlinux 0x0833379c nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x0834ec3d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x083cf7c1 register_netdevice +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0884c74f simple_empty +EXPORT_SYMBOL vmlinux 0x08c761c1 unlock_super +EXPORT_SYMBOL vmlinux 0x08ded414 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x08f61d3c ipv4_specific +EXPORT_SYMBOL vmlinux 0x08fc7cf5 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x090adbe5 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x091c5b10 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x092e9372 search_binary_handler +EXPORT_SYMBOL vmlinux 0x09360eba omapdss_dpi_display_enable +EXPORT_SYMBOL vmlinux 0x0947c327 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09674b49 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x0978e8d3 do_splice_from +EXPORT_SYMBOL vmlinux 0x097ac118 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b336f6 inode_only_permission +EXPORT_SYMBOL vmlinux 0x09c250eb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d07ef7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x09e96dba snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a02f9a6 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x0a0672bb fget_raw +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2ef616 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a34af26 neigh_lookup +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49a076 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0a98c6ad build_skb +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad5fb6f down_write_trylock +EXPORT_SYMBOL vmlinux 0x0add6a1f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x0ae02873 i2c_transfer +EXPORT_SYMBOL vmlinux 0x0aec8218 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1928a0 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b28e140 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0b351ada mempool_resize +EXPORT_SYMBOL vmlinux 0x0b360971 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5fdc85 get_io_context +EXPORT_SYMBOL vmlinux 0x0b69a29f down_trylock +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b90e80b proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be8f5d9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x0c0202db filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0c09b60b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0c316a4c dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c35f2c6 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x0c5029a9 seq_path +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f7d84 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c7c1c40 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c94e03c mmc_resume_host +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cacd1a2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cd6126a skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0ce025a4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x0cf7e5a1 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x0d3bb020 dm_io +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5e2097 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x0d85d38b __blk_end_request +EXPORT_SYMBOL vmlinux 0x0d8ae393 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x0d9ebcb1 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da212f8 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x0daf568a current_fs_time +EXPORT_SYMBOL vmlinux 0x0db7a472 mdiobus_register +EXPORT_SYMBOL vmlinux 0x0dbe49bb generic_make_request +EXPORT_SYMBOL vmlinux 0x0dc69705 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x0df0e40b sock_no_connect +EXPORT_SYMBOL vmlinux 0x0e022965 inet_shutdown +EXPORT_SYMBOL vmlinux 0x0e51cc03 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0e622c22 dev_deactivate +EXPORT_SYMBOL vmlinux 0x0e62e9ee seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0e674bd8 iput +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e893437 lg_lock_init +EXPORT_SYMBOL vmlinux 0x0eab8424 file_update_time +EXPORT_SYMBOL vmlinux 0x0eb2fce2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0ec98808 ida_init +EXPORT_SYMBOL vmlinux 0x0ef22307 journal_extend +EXPORT_SYMBOL vmlinux 0x0ef3f582 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x0f0ce1a8 simple_write_begin +EXPORT_SYMBOL vmlinux 0x0f1994f6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0f363190 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f9091eb fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0f9b95ac jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fbccb11 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0fd0735b skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff74cb0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x0ffa8302 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x10101c3c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x102aaba7 abort_creds +EXPORT_SYMBOL vmlinux 0x105dfe06 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107a9cbb thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x1083e3b6 inet_select_addr +EXPORT_SYMBOL vmlinux 0x10ab589d mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10abebce bdget_disk +EXPORT_SYMBOL vmlinux 0x10d1a6ff generic_block_bmap +EXPORT_SYMBOL vmlinux 0x10da2f12 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x10dd5a3e max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11022c80 journal_init_dev +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a4cbb seq_release +EXPORT_SYMBOL vmlinux 0x110b0801 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x11148a97 I_BDEV +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x114feb9c ll_rw_block +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1190c9ce twl6040_power +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a73a68 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x11d8bd9a rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12065014 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x120c2f97 dquot_drop +EXPORT_SYMBOL vmlinux 0x1221c8be dm_register_target +EXPORT_SYMBOL vmlinux 0x1296e919 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cbb67d scsi_execute +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e0cd3d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x12eeec28 replace_mount_options +EXPORT_SYMBOL vmlinux 0x12f4d445 km_report +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131e3065 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x132887b6 sk_dst_check +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133dc5a8 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x1354c5fc lock_sock_fast +EXPORT_SYMBOL vmlinux 0x13592581 simple_readpage +EXPORT_SYMBOL vmlinux 0x136005ae dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x136a795b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x139b2340 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x13a3e2f6 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4125b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142aec60 netlink_ack +EXPORT_SYMBOL vmlinux 0x142bc363 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x1453a52c sync_blockdev +EXPORT_SYMBOL vmlinux 0x1458ca4c pagecache_write_end +EXPORT_SYMBOL vmlinux 0x14b7212a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14d1d6f9 security_path_rename +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x15034008 serio_reconnect +EXPORT_SYMBOL vmlinux 0x15139ad1 bio_endio +EXPORT_SYMBOL vmlinux 0x1524d58b proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x154999aa __pagevec_release +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155019f7 may_umount_tree +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15970138 inet6_getname +EXPORT_SYMBOL vmlinux 0x15a16218 put_io_context +EXPORT_SYMBOL vmlinux 0x15dacae2 d_instantiate +EXPORT_SYMBOL vmlinux 0x15debd12 input_register_handle +EXPORT_SYMBOL vmlinux 0x160ef936 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x161028e9 simple_lookup +EXPORT_SYMBOL vmlinux 0x16154f04 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1627dce6 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162cf09f ppp_input +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x165b49aa of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x165da8e8 sock_rfree +EXPORT_SYMBOL vmlinux 0x165dcc8e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x166c6638 blk_get_request +EXPORT_SYMBOL vmlinux 0x166cb2a3 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x16859d77 serio_rescan +EXPORT_SYMBOL vmlinux 0x16a772f1 dev_err +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16cebef6 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x16e50dac bio_split +EXPORT_SYMBOL vmlinux 0x17108fce devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x171bb402 have_submounts +EXPORT_SYMBOL vmlinux 0x1737aacf block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x173c74ba arp_tbl +EXPORT_SYMBOL vmlinux 0x1763283e netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17af11d3 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x17c490b9 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x17d48596 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17f075f4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1827cb53 writeback_in_progress +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 0x1851151c proc_dointvec +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18902e4e snd_power_wait +EXPORT_SYMBOL vmlinux 0x189100f0 drop_super +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18bb4acc neigh_table_clear +EXPORT_SYMBOL vmlinux 0x18f0d3af scsi_device_get +EXPORT_SYMBOL vmlinux 0x18f546c5 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x18f9c336 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x19032d7a dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x19068e25 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x1906c469 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x19088883 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x191854af __register_chrdev +EXPORT_SYMBOL vmlinux 0x1924a3ea load_nls_default +EXPORT_SYMBOL vmlinux 0x195b15d1 mpage_readpages +EXPORT_SYMBOL vmlinux 0x195d6c95 phy_detach +EXPORT_SYMBOL vmlinux 0x196aff3e dev_base_lock +EXPORT_SYMBOL vmlinux 0x19762b5c snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c3e285 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x19cec6ef snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x19e574f2 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x19e91218 __getblk +EXPORT_SYMBOL vmlinux 0x1a0135e4 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x1a29074f security_path_unlink +EXPORT_SYMBOL vmlinux 0x1a496ac6 cad_pid +EXPORT_SYMBOL vmlinux 0x1a54133a md_integrity_register +EXPORT_SYMBOL vmlinux 0x1a5474f6 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6612ec soft_cursor +EXPORT_SYMBOL vmlinux 0x1a8c43c5 icmp_send +EXPORT_SYMBOL vmlinux 0x1a8f4375 vc_cons +EXPORT_SYMBOL vmlinux 0x1ab30c4d vfs_writev +EXPORT_SYMBOL vmlinux 0x1ab36282 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x1ab47db9 misc_deregister +EXPORT_SYMBOL vmlinux 0x1ab4e21f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1ab5caa9 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae58785 update_region +EXPORT_SYMBOL vmlinux 0x1ae90bbf lookup_one_len +EXPORT_SYMBOL vmlinux 0x1aff37db tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b045a97 would_dump +EXPORT_SYMBOL vmlinux 0x1b075d04 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b419994 netdev_crit +EXPORT_SYMBOL vmlinux 0x1b51148f vmap +EXPORT_SYMBOL vmlinux 0x1b54669e __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x1b60e96d kernel_getpeername +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b9b04c5 snd_timer_new +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1baeaed4 proc_dostring +EXPORT_SYMBOL vmlinux 0x1baec476 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x1bc1f1be dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1bceb015 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x1bff36f1 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x1c2a1dbf disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1c4993bc vfs_link +EXPORT_SYMBOL vmlinux 0x1c51cf7e mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x1c572397 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x1c63e7e6 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x1c77cbf5 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x1ca221d0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x1ca6445a netif_carrier_off +EXPORT_SYMBOL vmlinux 0x1cc1dabc mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd0f6c0 mempool_alloc +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d29fcb2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x1d43d57c seq_putc +EXPORT_SYMBOL vmlinux 0x1d502d43 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x1d566dd7 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x1d5fde9c journal_load +EXPORT_SYMBOL vmlinux 0x1d8e33de release_sock +EXPORT_SYMBOL vmlinux 0x1d9135f0 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1dab9e77 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x1dadf2c8 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x1db342fd __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dbb9814 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x1dc2dc34 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df0edb6 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1dfb97f9 dev_emerg +EXPORT_SYMBOL vmlinux 0x1dfe0274 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0ee4eb mem_map +EXPORT_SYMBOL vmlinux 0x1e190ac3 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1e24fd27 unregister_key_type +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e287c9a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1e4140d5 bio_alloc +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e95feb9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1e9ffd7d unregister_netdev +EXPORT_SYMBOL vmlinux 0x1ea123bc __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x1ea917f8 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed90c38 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1ef900bd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1f170137 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x1f508b03 bdget +EXPORT_SYMBOL vmlinux 0x1f64e05f tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1f667d81 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1f6c3361 key_invalidate +EXPORT_SYMBOL vmlinux 0x1f745e2c key_alloc +EXPORT_SYMBOL vmlinux 0x1f77e8ef of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1f786d19 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9fe83d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd3258 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ffa9f00 put_disk +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20085764 register_nls +EXPORT_SYMBOL vmlinux 0x202b6e63 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x2040aa45 netdev_notice +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209694b0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20be65ce iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df83c5 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x20e6ef43 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x20f1bbf4 dquot_acquire +EXPORT_SYMBOL vmlinux 0x210368be load_nls +EXPORT_SYMBOL vmlinux 0x210c8ebc generic_read_dir +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211847e0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21aa4dd0 register_key_type +EXPORT_SYMBOL vmlinux 0x21b13bde no_llseek +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x220101f4 lease_modify +EXPORT_SYMBOL vmlinux 0x22091be7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x221dfde0 idr_pre_get +EXPORT_SYMBOL vmlinux 0x22207102 freeze_super +EXPORT_SYMBOL vmlinux 0x222880d5 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22381e35 console_stop +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x224fc3ea test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x225ae67e tcf_em_register +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22895fb0 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22cd0114 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x22cd5e8d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x22dfbba4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x22f7fe90 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x22fdad06 dma_supported +EXPORT_SYMBOL vmlinux 0x231c105e ip6_route_output +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f8460 cdev_del +EXPORT_SYMBOL vmlinux 0x233857af notify_change +EXPORT_SYMBOL vmlinux 0x2347ed86 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x234822b1 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x2348519e phy_start +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2358bb9c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x23614a83 sock_no_poll +EXPORT_SYMBOL vmlinux 0x239ea69d buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ab286a skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9807a __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x23d2b2b3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x23e66b08 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x23f1efa4 f_setown +EXPORT_SYMBOL vmlinux 0x23f7ee8d cpu_cache +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23fe09b1 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2429a333 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x242e22ac generic_show_options +EXPORT_SYMBOL vmlinux 0x24312d90 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x245807f0 setattr_copy +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2459cb98 kernel_read +EXPORT_SYMBOL vmlinux 0x2467e637 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2477ab91 dev_printk +EXPORT_SYMBOL vmlinux 0x247cd259 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24e10d8e twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x24f74506 nand_scan +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25024249 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x2515a9cb input_set_abs_params +EXPORT_SYMBOL vmlinux 0x2524e83e kdb_current_task +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252bd468 sk_common_release +EXPORT_SYMBOL vmlinux 0x252d7640 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x2560e3f6 journal_ack_err +EXPORT_SYMBOL vmlinux 0x25724c4e vc_resize +EXPORT_SYMBOL vmlinux 0x2577bc0f snd_timer_pause +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ac5bd9 dql_init +EXPORT_SYMBOL vmlinux 0x25ae0bde tty_port_hangup +EXPORT_SYMBOL vmlinux 0x25b14996 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x25b65d2f journal_get_create_access +EXPORT_SYMBOL vmlinux 0x25be2aba simple_transaction_release +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25f1b4b0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x262a9620 complete_request_key +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263e70b4 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x264338a0 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x26512b9b netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x268ae8a7 seq_open_private +EXPORT_SYMBOL vmlinux 0x26911e4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0x26ac17c5 mount_subtree +EXPORT_SYMBOL vmlinux 0x26b996f5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26d65736 security_path_truncate +EXPORT_SYMBOL vmlinux 0x26e721b5 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ebba85 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2700b38a mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2723b642 input_open_device +EXPORT_SYMBOL vmlinux 0x274ac3b0 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x274f3a91 netdev_info +EXPORT_SYMBOL vmlinux 0x2750b3a1 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x27582405 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x277595e8 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x2780cf97 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2794e17a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x2796e2e6 block_write_full_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x2805da71 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x280bc39b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818bcaf pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2830fee2 idr_get_next +EXPORT_SYMBOL vmlinux 0x285140e1 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x2854eb28 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x286984ab generic_write_sync +EXPORT_SYMBOL vmlinux 0x288488d3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x2897fc48 omap_cfg_reg +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28c615c4 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x28c7494a sk_reset_timer +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28d85959 generic_permission +EXPORT_SYMBOL vmlinux 0x28e28174 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x28ee1a11 eth_header_parse +EXPORT_SYMBOL vmlinux 0x2904f0e8 clk_round_rate +EXPORT_SYMBOL vmlinux 0x29115774 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296be509 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x29808e2a inet_sendpage +EXPORT_SYMBOL vmlinux 0x29a6cf17 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x29aeccd9 filemap_fault +EXPORT_SYMBOL vmlinux 0x29ea7e79 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0da046 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x2a1ed93e clk_add_alias +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a4179d7 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x2a62cea2 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a7b64f0 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2a878fe2 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x2a8aec48 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2a8e0667 tty_devnum +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa7a3cb __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acbc65c mnt_pin +EXPORT_SYMBOL vmlinux 0x2acd5d13 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2ae97066 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x2b072aec file_open_root +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3da4f1 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2b478e16 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2b688622 complete_and_exit +EXPORT_SYMBOL vmlinux 0x2b90cdaa mempool_create +EXPORT_SYMBOL vmlinux 0x2b93e75b inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bd86d11 iget5_locked +EXPORT_SYMBOL vmlinux 0x2bd89727 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2be17af8 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2bfcef99 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1b30ff iterate_mounts +EXPORT_SYMBOL vmlinux 0x2c1e1ca2 sock_create +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3c6646 mnt_unpin +EXPORT_SYMBOL vmlinux 0x2c6615fc snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x2ca17032 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x2cc65d90 bio_add_page +EXPORT_SYMBOL vmlinux 0x2cca6173 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x2cd52b0b simple_release_fs +EXPORT_SYMBOL vmlinux 0x2cd8d457 bmap +EXPORT_SYMBOL vmlinux 0x2ce9a63c scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x2d02c0cd inet_addr_type +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2f4baa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2d34a1b4 dq_data_lock +EXPORT_SYMBOL vmlinux 0x2d3d0e3c genl_register_family +EXPORT_SYMBOL vmlinux 0x2d4fb182 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2d52652b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x2d607ee2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d76d483 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2da54813 inet_getname +EXPORT_SYMBOL vmlinux 0x2dacbe20 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x2dae4b5d mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x2dd8653e pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x2dda73ae ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x2ddd9482 skb_append +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0a3115 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e27459d snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x2e2a54b0 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2ea4d1fa journal_wipe +EXPORT_SYMBOL vmlinux 0x2ec01ae8 single_open +EXPORT_SYMBOL vmlinux 0x2ec43bb7 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ee1c05d sk_receive_skb +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef20076 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f06acb2 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x2f08d21e tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x2f369e1e nf_register_hook +EXPORT_SYMBOL vmlinux 0x2f4294d6 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x2f4f2346 tty_name +EXPORT_SYMBOL vmlinux 0x2f857079 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2f8749e4 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x2f88a039 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x2f891886 netdev_features_change +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbb0b88 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x2fd4fc8f snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x2fd80048 simple_setattr +EXPORT_SYMBOL vmlinux 0x2fd85baf ___ratelimit +EXPORT_SYMBOL vmlinux 0x2fed65cc fb_show_logo +EXPORT_SYMBOL vmlinux 0x2ff0dab6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x2ffe96a2 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x3006e61a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x300c615d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x302055d7 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x30244d24 uart_resume_port +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307e7d0f dev_addr_del +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30bc8e1b md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30c2e2af ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30cb14e5 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31043cb0 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312a36c9 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x313ffc4d set_security_override +EXPORT_SYMBOL vmlinux 0x31426218 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3151f41e neigh_seq_start +EXPORT_SYMBOL vmlinux 0x316dd1cd __wait_on_bit +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a71a39 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x31a92e36 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31df1b0e skb_copy_expand +EXPORT_SYMBOL vmlinux 0x31f03185 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x31fb1aeb elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x321866a1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x322014ec mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3246243e security_path_chmod +EXPORT_SYMBOL vmlinux 0x32618c54 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328ba99b scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x32d42c10 inode_permission +EXPORT_SYMBOL vmlinux 0x3312f7b3 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x3314647e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x331ced12 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x33211758 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x33613a69 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x336c05f8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33b8d67f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x33baae8c sg_miter_next +EXPORT_SYMBOL vmlinux 0x33cefbae omap_dss_find_device +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 0x342c937d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x3441e442 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x344e0fe5 seq_write +EXPORT_SYMBOL vmlinux 0x344e45d0 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x3461a2f7 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x34621b43 netdev_state_change +EXPORT_SYMBOL vmlinux 0x346cd864 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3487c236 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x3492b335 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x3493acdd __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a98e8c tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x34ae248f tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x34ed99a2 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x3504d638 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3542f055 vfs_read +EXPORT_SYMBOL vmlinux 0x35568ba3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x355f425c kobject_set_name +EXPORT_SYMBOL vmlinux 0x35610e05 clk_get +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c6ef03 empty_aops +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35d91f85 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x35da1ab7 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3600ef49 amba_request_regions +EXPORT_SYMBOL vmlinux 0x3604abd0 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360c2c84 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x360ee3f3 mii_link_ok +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36294c68 tty_port_init +EXPORT_SYMBOL vmlinux 0x364b3fff up +EXPORT_SYMBOL vmlinux 0x364c6d8f fb_pan_display +EXPORT_SYMBOL vmlinux 0x365260ce ip_check_defrag +EXPORT_SYMBOL vmlinux 0x366125e6 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x36799b63 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x369d55de ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x36a2488d zero_fill_bio +EXPORT_SYMBOL vmlinux 0x36b8499c kmalloc_caches +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f271a0 follow_down +EXPORT_SYMBOL vmlinux 0x370c8936 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x370db4a8 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x371b9574 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x371ef233 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x371ef8db md_flush_request +EXPORT_SYMBOL vmlinux 0x372b949f snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3744fc63 kill_litter_super +EXPORT_SYMBOL vmlinux 0x376b5929 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x37739222 scsi_host_get +EXPORT_SYMBOL vmlinux 0x377779c6 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3778f45c igrab +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37b1e0ea d_prune_aliases +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37ba3e46 i2c_master_send +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c538dc ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x37d3ab9a xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x382eab43 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x385a0bd6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x387edff4 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38af62e2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x38b81f68 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x38b9e084 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x38ed1388 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x38f51608 __napi_schedule +EXPORT_SYMBOL vmlinux 0x390964e4 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x39119ff1 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x392a5d1c elevator_exit +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3950711a of_match_device +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x397cbac5 blk_peek_request +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399365a8 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x39a60abd snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x39a8e5e8 lock_fb_info +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39e93bc3 sk_wait_data +EXPORT_SYMBOL vmlinux 0x3a1bffe5 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3a2247bd skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x3a379740 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x3a4c2043 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3a77df32 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a983ed4 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9c7b85 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x3aa16502 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ae2b14c datagram_poll +EXPORT_SYMBOL vmlinux 0x3b2ed648 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b398e51 fget +EXPORT_SYMBOL vmlinux 0x3b6f30c6 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3b7f8e27 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b9541d0 omap_dss_unregister_driver +EXPORT_SYMBOL vmlinux 0x3ba5c359 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3bbccc7f udp_prot +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfd41b5 do_sync_write +EXPORT_SYMBOL vmlinux 0x3bfde872 skb_unlink +EXPORT_SYMBOL vmlinux 0x3c011bfd get_user_pages +EXPORT_SYMBOL vmlinux 0x3c1ef7c7 down_read_trylock +EXPORT_SYMBOL vmlinux 0x3c77542e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c87faf1 input_allocate_device +EXPORT_SYMBOL vmlinux 0x3c92eb55 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf7b415 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d3932e3 __module_get +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d66b5bb tc_classify +EXPORT_SYMBOL vmlinux 0x3d7063b5 find_get_page +EXPORT_SYMBOL vmlinux 0x3d86067c seq_lseek +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd33bbe sockfd_lookup +EXPORT_SYMBOL vmlinux 0x3ddd8e31 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x3de56609 snd_timer_open +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0dfd7e genphy_suspend +EXPORT_SYMBOL vmlinux 0x3e1d9fc4 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x3e2d64cd __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x3e2e01bf pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e56b54f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3e679d3c sock_init_data +EXPORT_SYMBOL vmlinux 0x3e686c75 mount_single +EXPORT_SYMBOL vmlinux 0x3e6b0b00 request_key +EXPORT_SYMBOL vmlinux 0x3e704902 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x3e7062f5 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea468e1 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3eca76dd snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ed676ed blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3f0172ab tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3f42c48a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6766e1 dev_load +EXPORT_SYMBOL vmlinux 0x3f705562 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x3f88fafb generic_writepages +EXPORT_SYMBOL vmlinux 0x3fcc763e kill_bdev +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403797d0 get_super_thawed +EXPORT_SYMBOL vmlinux 0x403ab398 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x4049933e security_path_symlink +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40979285 mb_cache_entry_find_next +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 0x40a6f522 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40dcd4e1 da903x_query_status +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x4102b820 __inet6_hash +EXPORT_SYMBOL vmlinux 0x41173a81 serio_open +EXPORT_SYMBOL vmlinux 0x41220e7e bio_clone +EXPORT_SYMBOL vmlinux 0x41222d20 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x4127a5d2 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x412acb88 dev_mc_add +EXPORT_SYMBOL vmlinux 0x41380186 lock_super +EXPORT_SYMBOL vmlinux 0x413894e2 ilookup +EXPORT_SYMBOL vmlinux 0x413d1e88 scsi_add_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a52ea dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x414d61f3 devm_ioremap +EXPORT_SYMBOL vmlinux 0x4150ec32 __brelse +EXPORT_SYMBOL vmlinux 0x4183d9a9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41bfc910 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x41c00c2b mmc_release_host +EXPORT_SYMBOL vmlinux 0x41d568d6 of_device_is_available +EXPORT_SYMBOL vmlinux 0x41fad8d0 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x4217ff46 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x422ae09e ip_route_input_common +EXPORT_SYMBOL vmlinux 0x4254afa8 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x428096f4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42aacd27 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x42abc0e6 prepare_binprm +EXPORT_SYMBOL vmlinux 0x42afe934 sock_wake_async +EXPORT_SYMBOL vmlinux 0x42b144b0 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x42b4eba5 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x42ee1838 __breadahead +EXPORT_SYMBOL vmlinux 0x42f9bc35 set_disk_ro +EXPORT_SYMBOL vmlinux 0x42fedb96 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x4300f0b7 register_sound_special +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306104c iget_locked +EXPORT_SYMBOL vmlinux 0x431d8451 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4325b4df jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x43450264 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x4347b971 idr_init +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4361a651 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x436a1d3e lg_local_unlock +EXPORT_SYMBOL vmlinux 0x436d2d89 elv_rb_find +EXPORT_SYMBOL vmlinux 0x437a6fc3 sock_i_ino +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43bcbc84 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f5195e dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x440109fe n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x441f8e4e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4439c06c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x443d528a filp_open +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447bbcdc __find_get_block +EXPORT_SYMBOL vmlinux 0x4483e87d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x4496e34b netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efd447 omap_dss_stop_device +EXPORT_SYMBOL vmlinux 0x44f24f9a ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4556f2c5 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x457372e2 arp_invalidate +EXPORT_SYMBOL vmlinux 0x45756e17 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a280b6 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x45a32071 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x45a580d7 snd_card_register +EXPORT_SYMBOL vmlinux 0x45a8fbaa down_timeout +EXPORT_SYMBOL vmlinux 0x45ba232a get_super +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c9fcad lookup_bdev +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x4601ae1d unregister_nls +EXPORT_SYMBOL vmlinux 0x460ea1c5 udplite_table +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466fd684 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x4681c6e9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4687762a tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x46c4b962 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46ef1318 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47035ec0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x47162a99 key_unlink +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47738399 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4793c7b1 update_time +EXPORT_SYMBOL vmlinux 0x479dc505 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c45f42 user_revoke +EXPORT_SYMBOL vmlinux 0x47ea7b28 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48125adb kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x481aa411 snd_seq_root +EXPORT_SYMBOL vmlinux 0x482298fd unregister_quota_format +EXPORT_SYMBOL vmlinux 0x483af0e2 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x483ec199 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4846f530 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4852f869 block_write_begin +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485c99cc mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x48704908 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48849e3f try_to_release_page +EXPORT_SYMBOL vmlinux 0x48954949 unlock_buffer +EXPORT_SYMBOL vmlinux 0x489ecce4 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48eae4e2 skb_push +EXPORT_SYMBOL vmlinux 0x48ee492e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490b1367 blk_init_queue +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497f1bca blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x4982b64f jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x4983f3ea unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4988e3b7 sock_no_accept +EXPORT_SYMBOL vmlinux 0x499bfbf2 devm_iounmap +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c58e5d file_remove_suid +EXPORT_SYMBOL vmlinux 0x49c6aa20 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x49db5768 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f543c8 bdi_unregister +EXPORT_SYMBOL vmlinux 0x49f8a184 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49fe734c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4a093833 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x4a2d6bd4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x4a35361d uart_suspend_port +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 0x4a4ffbc1 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x4a51dce6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x4a71f939 led_brightness_set +EXPORT_SYMBOL vmlinux 0x4a9e5abe phy_print_status +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abdb61c seq_printf +EXPORT_SYMBOL vmlinux 0x4ad0a85a journal_set_features +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b142e72 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b20cbd2 ida_remove +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5f79fd __scm_destroy +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b70a17d vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x4b8faa08 __scm_send +EXPORT_SYMBOL vmlinux 0x4be0161c ps2_command +EXPORT_SYMBOL vmlinux 0x4c059aba journal_abort +EXPORT_SYMBOL vmlinux 0x4c0f59e2 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c11cdb2 empty_zero_page +EXPORT_SYMBOL vmlinux 0x4c16773d textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4c21cc42 blk_get_queue +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c62fded inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x4c78cada scsi_remove_device +EXPORT_SYMBOL vmlinux 0x4c9898d8 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x4c991168 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf6cf63 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d13b1a6 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4d240987 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x4d29bd61 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d40aee5 sock_release +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d697ce4 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4d8ed115 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9afc39 page_readlink +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4db573f0 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dcf39a9 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x4de6e3a7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e2b2299 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e748dcd down_read +EXPORT_SYMBOL vmlinux 0x4e7575ee key_type_keyring +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8d3e48 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x4e9746fd sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4ebdc2f4 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x4ed70e07 clk_get_rate +EXPORT_SYMBOL vmlinux 0x4efe96e8 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x4f0d7ce6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x4f1401c4 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f283f47 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f61c5bb udp_ioctl +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7c932e twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f833685 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fa5447e pipe_unlock +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x502f6124 km_query +EXPORT_SYMBOL vmlinux 0x504648b4 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5059c385 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50c25cc3 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x50c71330 idr_get_new +EXPORT_SYMBOL vmlinux 0x50ccff03 omap_dma_set_prio_lch +EXPORT_SYMBOL vmlinux 0x50cd35e7 __quota_error +EXPORT_SYMBOL vmlinux 0x50cf5efb mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x5100e8e4 kobject_add +EXPORT_SYMBOL vmlinux 0x510e6212 netif_skb_features +EXPORT_SYMBOL vmlinux 0x5111a1c8 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511ccebe kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x5133f4ac ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515802c0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5169161d omap_free_dma_chain +EXPORT_SYMBOL vmlinux 0x516dc7c5 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x516e9695 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x517862c2 netif_napi_del +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51a6512c tty_free_termios +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e07f5d dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f06805 dump_write +EXPORT_SYMBOL vmlinux 0x51f375c8 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52057bae mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5206509b snd_device_free +EXPORT_SYMBOL vmlinux 0x52106625 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5210d066 elevator_init +EXPORT_SYMBOL vmlinux 0x523c6dca ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52442c6a phy_driver_register +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52917690 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x52a11264 send_sig +EXPORT_SYMBOL vmlinux 0x52b9cb26 sock_register +EXPORT_SYMBOL vmlinux 0x52c0f928 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x52d2e6ae key_validate +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52ebc9c4 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x52efd766 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5315fa97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x531fe2e2 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x5326c46c register_sound_midi +EXPORT_SYMBOL vmlinux 0x532f13e9 dquot_release +EXPORT_SYMBOL vmlinux 0x5331eabb ida_simple_get +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x535b9eca blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x5364e479 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x536a761b journal_clear_err +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ba4e7c up_write +EXPORT_SYMBOL vmlinux 0x53baf7d6 start_tty +EXPORT_SYMBOL vmlinux 0x53ccb820 tty_shutdown +EXPORT_SYMBOL vmlinux 0x53d85b38 mdiobus_write +EXPORT_SYMBOL vmlinux 0x54002836 mpage_writepage +EXPORT_SYMBOL vmlinux 0x540a721d snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x540aae89 dev_uc_del +EXPORT_SYMBOL vmlinux 0x543d596b journal_stop +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5452ff4a tty_hangup +EXPORT_SYMBOL vmlinux 0x54603877 udp_seq_open +EXPORT_SYMBOL vmlinux 0x54659c69 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5481762a dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x548c054e dqput +EXPORT_SYMBOL vmlinux 0x54a88729 of_phy_connect +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abfa8b dev_get_stats +EXPORT_SYMBOL vmlinux 0x54bbe9b8 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x54d0a8b8 get_write_access +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5501bf0e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5524fa65 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x55401511 simple_rename +EXPORT_SYMBOL vmlinux 0x5559e3c4 snd_device_register +EXPORT_SYMBOL vmlinux 0x55846e5c snd_jack_new +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55e116c1 touch_atime +EXPORT_SYMBOL vmlinux 0x55fae982 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x5613b469 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x561bc6ff rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x562ad513 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56501718 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x56789ac5 omap_set_dma_color_mode +EXPORT_SYMBOL vmlinux 0x567bffe0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x56971c3a scm_fp_dup +EXPORT_SYMBOL vmlinux 0x56b925bc mmc_detect_change +EXPORT_SYMBOL vmlinux 0x56c8089d alloc_disk +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d92cc1 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x56eff735 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x56f7951f of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x570c86a6 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x570e03f1 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x57292802 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57302a87 mmc_free_host +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576a47a7 inet_accept +EXPORT_SYMBOL vmlinux 0x57bb11b0 __kfree_skb +EXPORT_SYMBOL vmlinux 0x57bc35d7 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x588b76d2 register_netdev +EXPORT_SYMBOL vmlinux 0x58af5b12 netdev_set_master +EXPORT_SYMBOL vmlinux 0x58bb30e2 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x58d086d9 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x5915b77a rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593f655c blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594fd546 omap_prcm_get_reset_sources +EXPORT_SYMBOL vmlinux 0x59579c26 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x596ac851 dentry_open +EXPORT_SYMBOL vmlinux 0x5998ecd7 inode_init_owner +EXPORT_SYMBOL vmlinux 0x59b7464a dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x59d17347 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a0de649 md_done_sync +EXPORT_SYMBOL vmlinux 0x5a2d5113 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x5a35a8e5 km_state_expired +EXPORT_SYMBOL vmlinux 0x5a59f820 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5aa2077b revert_creds +EXPORT_SYMBOL vmlinux 0x5aec1e60 cdev_init +EXPORT_SYMBOL vmlinux 0x5b129424 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x5b14e9f1 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b196f59 __register_binfmt +EXPORT_SYMBOL vmlinux 0x5b30be23 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x5b334156 down_killable +EXPORT_SYMBOL vmlinux 0x5b8bcb70 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x5b8e3205 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x5b9303ed tcf_hash_search +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb3a238 do_SAK +EXPORT_SYMBOL vmlinux 0x5bb5fd46 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x5bbc0d2e snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x5bc1f55c dm_put_device +EXPORT_SYMBOL vmlinux 0x5bf27f25 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bfceb78 dquot_operations +EXPORT_SYMBOL vmlinux 0x5c00d881 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x5c6b2ee6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cb274a3 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x5cca7f9c cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5cdabc40 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5cdad235 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x5d000101 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5d090824 sk_run_filter +EXPORT_SYMBOL vmlinux 0x5d0a04d8 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d156ac8 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x5d15ae0b xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5d19fe45 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x5d233bdc thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x5d2562eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5d2a2bda snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x5d361887 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x5d54fac7 phy_device_register +EXPORT_SYMBOL vmlinux 0x5d5a6bc5 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6206ab __destroy_inode +EXPORT_SYMBOL vmlinux 0x5d6ef4c7 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x5d9ff9d4 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x5dc54e58 tcp_connect +EXPORT_SYMBOL vmlinux 0x5dcd0747 read_dev_sector +EXPORT_SYMBOL vmlinux 0x5dd01bbb simple_fill_super +EXPORT_SYMBOL vmlinux 0x5dd1e3c3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5dee38a0 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x5df616cb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x5e0394b2 skb_split +EXPORT_SYMBOL vmlinux 0x5e0f4e72 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5e10b03e input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5e402da9 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x5e408f65 del_gendisk +EXPORT_SYMBOL vmlinux 0x5e5f4406 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5e60eb27 omap_dma_unlink_lch +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecfb35d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef4d861 seq_bitmap +EXPORT_SYMBOL vmlinux 0x5f0011c7 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0e46da scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x5f108d10 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x5f1a363b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f257724 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f464cf0 input_reset_device +EXPORT_SYMBOL vmlinux 0x5f497aeb pipe_lock +EXPORT_SYMBOL vmlinux 0x5f532252 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f634ed1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5f6e42ef tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f81645f scsi_print_result +EXPORT_SYMBOL vmlinux 0x5f9410e6 genphy_resume +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fb04d37 vfs_mknod +EXPORT_SYMBOL vmlinux 0x5fbaf8fa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5fc6cf2f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600cb821 udp_disconnect +EXPORT_SYMBOL vmlinux 0x601cb951 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x602f4755 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6031feea scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60ab28ae mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x60b0b67d snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x60e32666 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x60f5ea2b netdev_update_features +EXPORT_SYMBOL vmlinux 0x60f71cfa complete +EXPORT_SYMBOL vmlinux 0x611d79bf scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617a8702 get_task_io_context +EXPORT_SYMBOL vmlinux 0x61a79f08 __irq_regs +EXPORT_SYMBOL vmlinux 0x61a82935 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf3539 wireless_send_event +EXPORT_SYMBOL vmlinux 0x61d35164 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x61eb9983 generic_setlease +EXPORT_SYMBOL vmlinux 0x61f0d306 poll_initwait +EXPORT_SYMBOL vmlinux 0x61f6d51b make_EII_client +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624d7359 address_space_init_once +EXPORT_SYMBOL vmlinux 0x62521759 nobh_write_end +EXPORT_SYMBOL vmlinux 0x6253fef7 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x625d831d mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a003ce find_vma +EXPORT_SYMBOL vmlinux 0x62b72b0d mutex_unlock +EXPORT_SYMBOL vmlinux 0x62cc569e cpu_present_mask +EXPORT_SYMBOL vmlinux 0x62e71ae7 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630a518c generic_fillattr +EXPORT_SYMBOL vmlinux 0x63129fa9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63478c93 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x634afa6a sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x634b7eff tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63711d60 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x63847cf1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x6386ed50 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x638fde23 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63942651 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x63ab2604 irq_stat +EXPORT_SYMBOL vmlinux 0x63adb712 phy_attach +EXPORT_SYMBOL vmlinux 0x63b87fc5 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x63d55a3a generic_getxattr +EXPORT_SYMBOL vmlinux 0x63dfba18 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6419c29a task_nice +EXPORT_SYMBOL vmlinux 0x641bb9ab register_framebuffer +EXPORT_SYMBOL vmlinux 0x642638d7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x64268641 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6429a3bd __napi_complete +EXPORT_SYMBOL vmlinux 0x6445c46f simple_link +EXPORT_SYMBOL vmlinux 0x645cf90b in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x646284c6 security_path_chown +EXPORT_SYMBOL vmlinux 0x64826938 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649b8c17 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x649ced25 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x64bc5881 fput +EXPORT_SYMBOL vmlinux 0x64c03117 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64cbb4c8 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x64d233c8 ioremap_page +EXPORT_SYMBOL vmlinux 0x64e880b9 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x650f81f4 cdrom_open +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651605f2 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65369ec2 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654c3494 blk_complete_request +EXPORT_SYMBOL vmlinux 0x65518c89 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x655a5577 dqget +EXPORT_SYMBOL vmlinux 0x656bf0c2 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x657af67b d_invalidate +EXPORT_SYMBOL vmlinux 0x657f2f0c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x658a6160 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x65909849 key_task_permission +EXPORT_SYMBOL vmlinux 0x65a38e24 dget_parent +EXPORT_SYMBOL vmlinux 0x65ccffcd xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x65d8ade7 set_bh_page +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6609b110 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x66458b2c sock_map_fd +EXPORT_SYMBOL vmlinux 0x66556052 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x6672efca xfrm_init_state +EXPORT_SYMBOL vmlinux 0x667e14d0 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669d139b iunique +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66af0737 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x66fd67ca tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x66fe2d17 secpath_dup +EXPORT_SYMBOL vmlinux 0x66ffb625 user_path_create +EXPORT_SYMBOL vmlinux 0x6725306a tcp_check_req +EXPORT_SYMBOL vmlinux 0x673397f3 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x673612a3 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x673b024f snd_device_new +EXPORT_SYMBOL vmlinux 0x674b468b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x67650076 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676c8b3e udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x676d2cf9 add_disk +EXPORT_SYMBOL vmlinux 0x677ecc40 genphy_update_link +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67be1d3d cpu_active_mask +EXPORT_SYMBOL vmlinux 0x67bf09d2 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x67ed9db9 rtnl_notify +EXPORT_SYMBOL vmlinux 0x67fa0193 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x68073142 __sock_create +EXPORT_SYMBOL vmlinux 0x6810dc8d ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x6824e3e4 dev_alert +EXPORT_SYMBOL vmlinux 0x68300603 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x6838c0dc ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x6845cecf phy_stop +EXPORT_SYMBOL vmlinux 0x685f2cf7 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x686d8642 tty_kref_put +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689043e5 mii_check_media +EXPORT_SYMBOL vmlinux 0x689a183d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aa2977 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x68aed661 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x68cc8345 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x68cd7893 journal_start_commit +EXPORT_SYMBOL vmlinux 0x68cfabbc omap_dss_start_device +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x690ee1bc devm_free_irq +EXPORT_SYMBOL vmlinux 0x692e7214 journal_errno +EXPORT_SYMBOL vmlinux 0x69561575 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6969afb0 __nla_put +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697c1188 alloc_file +EXPORT_SYMBOL vmlinux 0x69940ee3 __get_user_pages +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e09a48 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0acf3e netdev_change_features +EXPORT_SYMBOL vmlinux 0x6a3bcc9c cdev_add +EXPORT_SYMBOL vmlinux 0x6a559116 rtc_lock +EXPORT_SYMBOL vmlinux 0x6a6fa8b4 contig_page_data +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78e42f bio_copy_user +EXPORT_SYMBOL vmlinux 0x6a89f411 inet6_bind +EXPORT_SYMBOL vmlinux 0x6a971b2a eth_type_trans +EXPORT_SYMBOL vmlinux 0x6aa051ad uart_register_driver +EXPORT_SYMBOL vmlinux 0x6ab342e1 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x6acd0e34 snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2c7424 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5a7057 ida_destroy +EXPORT_SYMBOL vmlinux 0x6b607305 neigh_destroy +EXPORT_SYMBOL vmlinux 0x6b63f98c bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6baa3d9a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6baed957 bioset_create +EXPORT_SYMBOL vmlinux 0x6bbe2301 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc0f65 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6bd30203 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be056a4 put_page +EXPORT_SYMBOL vmlinux 0x6bf2ec75 simple_rmdir +EXPORT_SYMBOL vmlinux 0x6c1bbedf nf_log_register +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c878b2a phy_disconnect +EXPORT_SYMBOL vmlinux 0x6c94d4c7 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x6cb7e84a scsi_execute_req +EXPORT_SYMBOL vmlinux 0x6cc1749b jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x6ccf7bd7 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x6cd4005e jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6cdbd724 dquot_initialize +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9c13b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +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 0x6d5f8b4b brioctl_set +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d770e77 netdev_emerg +EXPORT_SYMBOL vmlinux 0x6d7c7c1a mapping_tagged +EXPORT_SYMBOL vmlinux 0x6db987eb default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6dd1d921 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x6dd3f41f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6dda6957 tty_check_change +EXPORT_SYMBOL vmlinux 0x6dec858d nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x6ded92cc of_dev_put +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e0880c2 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6e123a69 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6e171b6b unload_nls +EXPORT_SYMBOL vmlinux 0x6e2403df tty_port_put +EXPORT_SYMBOL vmlinux 0x6e37e0d9 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x6e3aef96 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x6e40794b blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x6e446484 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6e469121 follow_up +EXPORT_SYMBOL vmlinux 0x6e507e91 nf_afinfo +EXPORT_SYMBOL vmlinux 0x6e5e6760 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x6e6de0ac gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x6e6e7d31 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7a1bda dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6e7f5dbe phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6ef92f7c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f48cdda genl_notify +EXPORT_SYMBOL vmlinux 0x6f4c4256 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6fabeb23 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x6fb2e2e7 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x6fb5943e snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x6fbed676 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6fc614da snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701d2014 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x701e2ef6 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x70223b40 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x70334158 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x7052352d mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7064117b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x70655ded km_new_mapping +EXPORT_SYMBOL vmlinux 0x70733c05 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x70acf920 is_container_init +EXPORT_SYMBOL vmlinux 0x70b74cf5 bio_map_user +EXPORT_SYMBOL vmlinux 0x70bab5d0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f096 omapdss_sdi_display_enable +EXPORT_SYMBOL vmlinux 0x70da54ef amba_driver_register +EXPORT_SYMBOL vmlinux 0x70da6d92 framebuffer_release +EXPORT_SYMBOL vmlinux 0x70dd1a12 gpmc_cs_configure +EXPORT_SYMBOL vmlinux 0x70eecf85 __invalidate_device +EXPORT_SYMBOL vmlinux 0x710a2bd2 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x71122bf1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x711cbeb4 d_path +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714d6918 override_creds +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71879705 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bb69ba d_splice_alias +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e9df9d abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x71fb2903 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x7205f022 d_delete +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723573bb unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x7244dec7 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x724f9e25 bh_submit_read +EXPORT_SYMBOL vmlinux 0x72559cdc snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x7264404f register_sound_dsp +EXPORT_SYMBOL vmlinux 0x7277dcf6 arp_find +EXPORT_SYMBOL vmlinux 0x7278b086 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x72c15dd9 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x72c564c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eaf1cc check_disk_size_change +EXPORT_SYMBOL vmlinux 0x73045620 ppp_input_error +EXPORT_SYMBOL vmlinux 0x730c187d find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c50e3 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x732119dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x733a0165 register_quota_format +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7348d2d1 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x737ac25d dql_reset +EXPORT_SYMBOL vmlinux 0x737b884b scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73841754 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x739edb7c open_exec +EXPORT_SYMBOL vmlinux 0x739f0e28 inet_put_port +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fbcde6 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x73fe964c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7406376e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74807f3a __seq_open_private +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f4e34 do_truncate +EXPORT_SYMBOL vmlinux 0x74bc8a62 dev_warn +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c1a136 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x74ccc82e of_get_property +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751903f9 get_phy_device +EXPORT_SYMBOL vmlinux 0x75359d07 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x755d02a6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x756b1ef4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7585cb3b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x75897e89 input_close_device +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a17bed prepare_to_wait +EXPORT_SYMBOL vmlinux 0x75a92b91 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x75ad2ffd blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d29147 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7616f05a __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7620e99f simple_statfs +EXPORT_SYMBOL vmlinux 0x762d5a92 clk_enable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764d4120 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x7652f0cd mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x7682e28c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x76838750 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x76881360 leds_event +EXPORT_SYMBOL vmlinux 0x76a5b356 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x76b9924c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c71485 cdrom_release +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x77539a77 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x77fc60bb elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x78105cb7 kstat +EXPORT_SYMBOL vmlinux 0x783672ab dpi_set_timings +EXPORT_SYMBOL vmlinux 0x78480c97 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x78549f3e end_page_writeback +EXPORT_SYMBOL vmlinux 0x78640648 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x786d5414 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x786ec341 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x7896d8ee of_device_unregister +EXPORT_SYMBOL vmlinux 0x789bf682 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x78f6921f ppp_channel_index +EXPORT_SYMBOL vmlinux 0x79041b1e phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x791a9efb of_match_node +EXPORT_SYMBOL vmlinux 0x793699d9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x793e37d6 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7943dda7 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x794487ee disable_hlt +EXPORT_SYMBOL vmlinux 0x795a86ad vfs_getattr +EXPORT_SYMBOL vmlinux 0x796d56bd __init_rwsem +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x798e2fe5 init_task +EXPORT_SYMBOL vmlinux 0x799a79e1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x7a26854d of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2b37d6 clk_get_parent +EXPORT_SYMBOL vmlinux 0x7a3988c5 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4a32a9 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x7a4beafa get_unmapped_area +EXPORT_SYMBOL vmlinux 0x7a78310d of_get_parent +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a9187a3 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4967b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7adb5bca nand_scan_tail +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7afd1043 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b168691 __ps2_command +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5f4d7d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x7b66e361 register_console +EXPORT_SYMBOL vmlinux 0x7bd96a2c gpmc_prefetch_enable +EXPORT_SYMBOL vmlinux 0x7be55231 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7bf30fdc down_write +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c21b3a5 netif_rx +EXPORT_SYMBOL vmlinux 0x7c2c557c simple_open +EXPORT_SYMBOL vmlinux 0x7c2cdae9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x7c31a839 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7c442375 fb_find_mode +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c632e7a xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x7c7b4fcb skb_make_writable +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ce2578c snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x7ce6f64f bdi_register +EXPORT_SYMBOL vmlinux 0x7cfcb684 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x7d086100 vmtruncate +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d212a6e __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7d4bb6cc phy_connect_direct +EXPORT_SYMBOL vmlinux 0x7d6f3794 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x7d7673c6 submit_bio +EXPORT_SYMBOL vmlinux 0x7d7da63e tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x7d81b8c7 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x7dadd91c jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x7dbeae6c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7de0a78b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7ded54b0 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0e0771 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7e2ab9eb elevator_change +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3ba53b tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x7e498053 md_write_start +EXPORT_SYMBOL vmlinux 0x7e9bd02b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7ea9a08d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7ebaa41f inode_init_always +EXPORT_SYMBOL vmlinux 0x7ece1e24 scsi_init_io +EXPORT_SYMBOL vmlinux 0x7ece4af6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef09102 ata_print_version +EXPORT_SYMBOL vmlinux 0x7f01d411 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7f0b28bc jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33a63b omap_get_dma_chain_dst_pos +EXPORT_SYMBOL vmlinux 0x7f596387 vfs_symlink +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f8108af noop_llseek +EXPORT_SYMBOL vmlinux 0x7f8fc31f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7fa53a6e blk_rq_init +EXPORT_SYMBOL vmlinux 0x7fad1f07 tcf_register_action +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801429cf unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8034558a gpmc_nand_write +EXPORT_SYMBOL vmlinux 0x803ac124 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x803e58db inet6_release +EXPORT_SYMBOL vmlinux 0x8061337c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x80793ace sock_i_uid +EXPORT_SYMBOL vmlinux 0x807f92f2 bio_init +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d817ab wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x80db9c5d skb_clone +EXPORT_SYMBOL vmlinux 0x80de231a idr_remove +EXPORT_SYMBOL vmlinux 0x81003ee2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x813ed040 idr_remove_all +EXPORT_SYMBOL vmlinux 0x81474b5e journal_destroy +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815131ba mempool_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815cfb0a vfs_readv +EXPORT_SYMBOL vmlinux 0x815d3f93 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x8188fbd0 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x819c2b56 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x81b02d62 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x81b04bfc completion_done +EXPORT_SYMBOL vmlinux 0x81b4ce3f nf_register_hooks +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e38a2c snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x81e675c6 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x81f35656 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x82009965 names_cachep +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8204e852 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82077356 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x821e8d91 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x8223aa28 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x823a5d4a dquot_alloc +EXPORT_SYMBOL vmlinux 0x82407ce6 bio_free +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 0x8262f64b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x827f9a03 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x828049e4 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x82aa3b25 ip6_xmit +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b2dec3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x82e92977 register_md_personality +EXPORT_SYMBOL vmlinux 0x8305ce9d devm_clk_get +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832183c0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x8331fe0e dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8371daff sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x8396ef15 dst_release +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83aa3618 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83ca9e5a qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x83d25c38 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x83dd9516 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x8457bc58 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f4f7e nand_bch_init +EXPORT_SYMBOL vmlinux 0x847469f8 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x84816289 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84c708fc netlink_unicast +EXPORT_SYMBOL vmlinux 0x84cf2233 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x84db4b6e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x8514cf62 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x85313c1e km_state_notify +EXPORT_SYMBOL vmlinux 0x85399ee5 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8557bb76 find_lock_page +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856dd9e1 dquot_disable +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x857ae3ff blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x857ef611 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x85a2c0fa snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x85ad8ce3 kernel_accept +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b634c4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8609eb9b pid_task +EXPORT_SYMBOL vmlinux 0x860fcfab inet_bind +EXPORT_SYMBOL vmlinux 0x8625bd16 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86507b2e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869b6978 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c21697 dev_uc_init +EXPORT_SYMBOL vmlinux 0x86c32ef7 sync_inode +EXPORT_SYMBOL vmlinux 0x86caf8b8 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x86cc985f __dquot_transfer +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8712515a take_over_console +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872a8d2b ps2_drain +EXPORT_SYMBOL vmlinux 0x873f6c2f scsi_host_put +EXPORT_SYMBOL vmlinux 0x87761f6c nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x877c86f9 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87935194 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b26c27 thaw_super +EXPORT_SYMBOL vmlinux 0x87b3c418 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x87d87c8e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x87dbba14 ida_get_new +EXPORT_SYMBOL vmlinux 0x87e4ff3c mount_ns +EXPORT_SYMBOL vmlinux 0x87f0ca3e textsearch_register +EXPORT_SYMBOL vmlinux 0x87f17abc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x881ab77d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883a9b2c dst_discard +EXPORT_SYMBOL vmlinux 0x8853b235 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x887d4a7f snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x8893fa5d finish_wait +EXPORT_SYMBOL vmlinux 0x889556f4 security_file_permission +EXPORT_SYMBOL vmlinux 0x88990a98 __bread +EXPORT_SYMBOL vmlinux 0x890d9fd6 input_flush_device +EXPORT_SYMBOL vmlinux 0x891d72b6 inet_listen +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895887c5 nand_unlock +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x8996ae8d __rta_fill +EXPORT_SYMBOL vmlinux 0x899fc450 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x89a3c4f4 omap_get_dma_chain_index +EXPORT_SYMBOL vmlinux 0x89d4a4d2 module_layout +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a4fd8af skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x8a531f94 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8a6861a3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x8a6c7ae6 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b5221 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x8a9cdfca sock_wfree +EXPORT_SYMBOL vmlinux 0x8abecee4 netlink_set_err +EXPORT_SYMBOL vmlinux 0x8abf4062 omapdss_dpi_display_disable +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad555fa dst_alloc +EXPORT_SYMBOL vmlinux 0x8ad66426 seq_release_private +EXPORT_SYMBOL vmlinux 0x8b045b12 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8b0fe3f7 __dev_printk +EXPORT_SYMBOL vmlinux 0x8b16c16b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x8b37821b do_splice_to +EXPORT_SYMBOL vmlinux 0x8b48a798 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x8b4c3a9e d_make_root +EXPORT_SYMBOL vmlinux 0x8b5eecd2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64c1c3 kick_iocb +EXPORT_SYMBOL vmlinux 0x8b6ece54 simple_getattr +EXPORT_SYMBOL vmlinux 0x8b7388c1 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b7babbf snd_info_register +EXPORT_SYMBOL vmlinux 0x8bef91c5 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0bc6d1 kset_register +EXPORT_SYMBOL vmlinux 0x8c152c28 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x8c31675e journal_start +EXPORT_SYMBOL vmlinux 0x8c4d6523 omap_dma_chain_a_transfer +EXPORT_SYMBOL vmlinux 0x8c58a811 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8c72d2d3 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8c793c0b wait_iff_congested +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8ca1f661 kernel_listen +EXPORT_SYMBOL vmlinux 0x8cac985c kthread_stop +EXPORT_SYMBOL vmlinux 0x8cb23c19 set_groups +EXPORT_SYMBOL vmlinux 0x8cb64408 skb_pad +EXPORT_SYMBOL vmlinux 0x8cc7681b dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x8cd1948a vlan_vid_add +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8ce60539 fasync_helper +EXPORT_SYMBOL vmlinux 0x8d071a84 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x8d0e80f6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8d464eb2 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d8edceb __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x8d9d2b37 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x8dac4129 dquot_commit +EXPORT_SYMBOL vmlinux 0x8db7654d mb_cache_create +EXPORT_SYMBOL vmlinux 0x8dc2a023 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x8ddd5036 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8de00fc0 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e01dd29 nf_log_packet +EXPORT_SYMBOL vmlinux 0x8e051dd4 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e2dfd3b blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e55848e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8e6f1b01 input_event +EXPORT_SYMBOL vmlinux 0x8e73d94c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8eb0c5aa dev_uc_add +EXPORT_SYMBOL vmlinux 0x8eb36894 udplite_prot +EXPORT_SYMBOL vmlinux 0x8eb7e632 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x8ebafdba unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8eec5f0b __frontswap_store +EXPORT_SYMBOL vmlinux 0x8f003e8c kill_fasync +EXPORT_SYMBOL vmlinux 0x8f26ecee generic_file_llseek +EXPORT_SYMBOL vmlinux 0x8f2dd7b5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8f2f44b6 noop_fsync +EXPORT_SYMBOL vmlinux 0x8f3a5cef jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4cce3f consume_skb +EXPORT_SYMBOL vmlinux 0x8f57a159 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5bf374 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6ab814 of_find_property +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fae902c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x8fc1f741 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90168272 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x902e5600 i2c_release_client +EXPORT_SYMBOL vmlinux 0x90360490 ether_setup +EXPORT_SYMBOL vmlinux 0x906a8da5 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x90a76958 dev_crit +EXPORT_SYMBOL vmlinux 0x90a771b4 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x90a8a123 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d03ed1 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x90d71479 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x90dd8341 bio_map_kern +EXPORT_SYMBOL vmlinux 0x90ed1717 registered_fb +EXPORT_SYMBOL vmlinux 0x90f91617 free_buffer_head +EXPORT_SYMBOL vmlinux 0x9118eb43 genlmsg_put +EXPORT_SYMBOL vmlinux 0x912fb36f skb_queue_head +EXPORT_SYMBOL vmlinux 0x913076d3 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x9137c871 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9180de5c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91ccb481 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x91e3a9a7 __frontswap_load +EXPORT_SYMBOL vmlinux 0x91e81ba5 aio_put_req +EXPORT_SYMBOL vmlinux 0x920008ba serio_unregister_port +EXPORT_SYMBOL vmlinux 0x920664c8 mempool_free +EXPORT_SYMBOL vmlinux 0x9210653d journal_revoke +EXPORT_SYMBOL vmlinux 0x9215be33 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x9223349e phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923dfbaa i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x925ce524 __pskb_copy +EXPORT_SYMBOL vmlinux 0x9264ae32 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x92673c64 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x9276b415 block_read_full_page +EXPORT_SYMBOL vmlinux 0x9276e2fd generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x92776493 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x927bc91e __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x929eecac __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae20bc i2c_master_recv +EXPORT_SYMBOL vmlinux 0x92e46cbd blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x92ef1b9e nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x92f4a1f7 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x92f59183 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93116b03 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x9319e5fd km_policy_expired +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93446ac9 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x936d1752 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x9386800d ip_options_compile +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a83b76 thaw_bdev +EXPORT_SYMBOL vmlinux 0x93aa1a09 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x93bc6387 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x93c8c450 dma_find_channel +EXPORT_SYMBOL vmlinux 0x93f66a6c frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x9415d089 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x941ed606 sock_no_getname +EXPORT_SYMBOL vmlinux 0x942fc11a netif_notify_peers +EXPORT_SYMBOL vmlinux 0x943e8fd2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x94644f2f path_get +EXPORT_SYMBOL vmlinux 0x9469fe16 bdev_read_only +EXPORT_SYMBOL vmlinux 0x946e2c58 tty_mutex +EXPORT_SYMBOL vmlinux 0x948549e7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x94911d42 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x9493b6c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a8813c input_inject_event +EXPORT_SYMBOL vmlinux 0x94af632e complete_all +EXPORT_SYMBOL vmlinux 0x94b176b3 ip_defrag +EXPORT_SYMBOL vmlinux 0x94be473d skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x94e884a4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x9526a4c8 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x9534cae4 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9540f91c ilookup5 +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955b1e4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x9584d204 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x95ae0ed7 _dev_info +EXPORT_SYMBOL vmlinux 0x95bd12f3 vfs_readlink +EXPORT_SYMBOL vmlinux 0x95c206b2 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x96091dc5 genl_register_ops +EXPORT_SYMBOL vmlinux 0x962b6c00 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x963276f3 input_register_device +EXPORT_SYMBOL vmlinux 0x964016fd snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965ad1e4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x965bc19d __free_pages +EXPORT_SYMBOL vmlinux 0x965bf3f4 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9679f91c napi_complete +EXPORT_SYMBOL vmlinux 0x9684adce scm_detach_fds +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96b39b6e omap_start_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ee58fb fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x971542ea inet_ioctl +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9744aa1d keyring_clear +EXPORT_SYMBOL vmlinux 0x9744d7b3 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x9752e51f dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x979374ab snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a52803 set_anon_super +EXPORT_SYMBOL vmlinux 0x97acbf44 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b5c256 __d_drop +EXPORT_SYMBOL vmlinux 0x97ba1397 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x97df1067 module_put +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980a912c grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x980cdc4a truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9828be45 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x98404389 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9895cb01 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x98993e07 init_special_inode +EXPORT_SYMBOL vmlinux 0x98a39f30 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x98c4ef1e ihold +EXPORT_SYMBOL vmlinux 0x98d73f40 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9907616c mddev_congested +EXPORT_SYMBOL vmlinux 0x991ae485 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9923bc6c dev_uc_flush +EXPORT_SYMBOL vmlinux 0x9927dc03 dev_set_group +EXPORT_SYMBOL vmlinux 0x993014ba __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x9942b7ff elv_register_queue +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963d8ff bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x997185ba blk_free_tags +EXPORT_SYMBOL vmlinux 0x9979a055 cdev_alloc +EXPORT_SYMBOL vmlinux 0x998eee8f keyring_search +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a5c53e tcp_prot +EXPORT_SYMBOL vmlinux 0x99ac59f4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bf0e9e xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c83212 path_is_under +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e63794 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x99f05918 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x9a1b1b95 dev_get_flags +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a223752 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9a322348 __nla_reserve +EXPORT_SYMBOL vmlinux 0x9a396cb3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9a461cc0 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x9a5c7ab2 aio_complete +EXPORT_SYMBOL vmlinux 0x9a6cd279 clk_unregister +EXPORT_SYMBOL vmlinux 0x9a6f8b1b d_genocide +EXPORT_SYMBOL vmlinux 0x9a8dc6db lg_local_lock +EXPORT_SYMBOL vmlinux 0x9aa787c0 fb_set_var +EXPORT_SYMBOL vmlinux 0x9aa9c607 nobh_writepage +EXPORT_SYMBOL vmlinux 0x9ab53342 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x9abbdb69 clk_set_parent +EXPORT_SYMBOL vmlinux 0x9b0d88c9 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x9b164f05 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b60b7d0 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x9b60c3b1 neigh_table_init +EXPORT_SYMBOL vmlinux 0x9b62ac87 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b875fad of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9b90a0ab dev_mc_del +EXPORT_SYMBOL vmlinux 0x9b96e044 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bfa935e netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x9c045221 nla_put +EXPORT_SYMBOL vmlinux 0x9c054e18 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c15c011 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9c5b17a5 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9c5c67c8 ip_fragment +EXPORT_SYMBOL vmlinux 0x9c7077bd enable_hlt +EXPORT_SYMBOL vmlinux 0x9c91218d free_task +EXPORT_SYMBOL vmlinux 0x9c990c23 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cd2e7d0 gpmc_nand_read +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef9585 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d105722 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d729741 scsi_free_command +EXPORT_SYMBOL vmlinux 0x9d7980e4 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x9d9a88a2 register_con_driver +EXPORT_SYMBOL vmlinux 0x9db20882 blk_end_request +EXPORT_SYMBOL vmlinux 0x9dc406c9 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9dcf2ad0 dev_change_flags +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1e9de7 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2c6cf4 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e7f0fc2 tcp_poll +EXPORT_SYMBOL vmlinux 0x9e961f7f ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x9e969ad3 force_sig +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9eacc692 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x9ec6120e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ed6b20f __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9ef7e5cc bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9f0e39c9 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x9f11b5ac free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2d6b6a sk_stream_error +EXPORT_SYMBOL vmlinux 0x9f42a9bc pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f6626f1 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x9f8ea2a8 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f99d9bf ida_pre_get +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdef75b sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9feaaa08 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9fee5076 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9ff956af inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa00053ad generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa0114ac8 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xa02b1bbc sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa047dc17 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa09a6459 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa0a2c0ce scsi_device_put +EXPORT_SYMBOL vmlinux 0xa0a861fc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa0ad3ab5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceaa92 kmap +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d32e06 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa126e4af elv_rb_del +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1684773 amba_device_register +EXPORT_SYMBOL vmlinux 0xa1b44aa9 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d5c041 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa1e59b2a bio_unmap_user +EXPORT_SYMBOL vmlinux 0xa1fcc84a tty_register_device +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2359127 vfs_open +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa267c1f2 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa26a11a2 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xa2811e54 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2867ac5 omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0xa28bbbaf bio_put +EXPORT_SYMBOL vmlinux 0xa28d9e7b key_revoke +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2aad002 amba_release_regions +EXPORT_SYMBOL vmlinux 0xa2ab2329 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xa2b2db5d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xa3019bb4 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa3087abc serio_interrupt +EXPORT_SYMBOL vmlinux 0xa30e6f35 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xa32acfa9 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33493ad tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33f9c8e seq_read +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa352c00d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa3777688 dquot_enable +EXPORT_SYMBOL vmlinux 0xa3c5b773 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xa4011430 send_sig_info +EXPORT_SYMBOL vmlinux 0xa41e0e4c simple_unlink +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4616f84 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47813da genphy_read_status +EXPORT_SYMBOL vmlinux 0xa47b6c65 poll_freewait +EXPORT_SYMBOL vmlinux 0xa489c52f lro_flush_all +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4d415d7 clk_set_rate +EXPORT_SYMBOL vmlinux 0xa4dda7a3 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa4e045fa scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xa4e0778e input_set_capability +EXPORT_SYMBOL vmlinux 0xa5092120 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa5217e6d neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xa529e2c3 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa56210e0 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa5796d6e sk_stop_timer +EXPORT_SYMBOL vmlinux 0xa58250a6 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xa585e496 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa592980a scsi_put_command +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ab8a11 scsi_get_command +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5e13477 eth_header_cache +EXPORT_SYMBOL vmlinux 0xa5f07a66 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63543c0 kernel_bind +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6411cea unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa674ced5 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xa675436a bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ab1c43 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xa6b93b26 redraw_screen +EXPORT_SYMBOL vmlinux 0xa6c9bbfd unlock_rename +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa6e35df4 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa6fb293e sk_alloc +EXPORT_SYMBOL vmlinux 0xa724db81 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xa7481f33 fsync_bdev +EXPORT_SYMBOL vmlinux 0xa75bc0e1 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xa7716564 d_add_ci +EXPORT_SYMBOL vmlinux 0xa780cb1c ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xa78833df dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa7c80683 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xa7c87a60 mtd_concat_create +EXPORT_SYMBOL vmlinux 0xa7f2c5ea prepare_creds +EXPORT_SYMBOL vmlinux 0xa7f75090 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa824436f ppp_register_channel +EXPORT_SYMBOL vmlinux 0xa8380d34 kernel_execve +EXPORT_SYMBOL vmlinux 0xa840f58a journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa867c853 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87b1011 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xa8cde9a7 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xa8f05fd2 try_module_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa908522b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa94fc942 generic_write_end +EXPORT_SYMBOL vmlinux 0xa963babc snd_card_proc_new +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96e9aa6 udp_proc_register +EXPORT_SYMBOL vmlinux 0xa9b504c9 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xa9dc5272 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa9e008a7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa9e14cac generic_listxattr +EXPORT_SYMBOL vmlinux 0xaa1158a7 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0xaa1db072 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xaa32b823 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xaa3bfa99 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0xaa53517a kill_block_super +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa5eaeb7 kern_path_create +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa74d1b3 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xaa8d23c7 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xaa9f5b56 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaac04a2b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae10dd0 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xaafd68a9 vfs_readdir +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1971e4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab2bb449 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xab57f8b0 omapfb_update_window +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab8ea15f __alloc_skb +EXPORT_SYMBOL vmlinux 0xab9ed595 kobject_put +EXPORT_SYMBOL vmlinux 0xaba24935 proc_mkdir +EXPORT_SYMBOL vmlinux 0xaba4e1a5 bdevname +EXPORT_SYMBOL vmlinux 0xabb6c600 mount_pseudo +EXPORT_SYMBOL vmlinux 0xabba8c7b fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xabc3a740 kfree_skb +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0809d mdiobus_free +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabfcfac5 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac10aefe __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xac18e4ea kset_unregister +EXPORT_SYMBOL vmlinux 0xac5f113d cpu_all_bits +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac91e06d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xacafef80 amba_find_device +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xace84938 proto_register +EXPORT_SYMBOL vmlinux 0xaceb9c69 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1041d7 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xad31672f dev_mc_init +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad8049d7 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xad80b2ef set_device_ro +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada48d8c sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xada6b3bc add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xada928b1 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadea832a lock_may_write +EXPORT_SYMBOL vmlinux 0xadf197db xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfe915a sock_create_kern +EXPORT_SYMBOL vmlinux 0xae434ffc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xae531f84 register_sysctl +EXPORT_SYMBOL vmlinux 0xae5f5492 register_exec_domain +EXPORT_SYMBOL vmlinux 0xae66c99a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae81bbd7 path_put +EXPORT_SYMBOL vmlinux 0xae9b7941 seq_escape +EXPORT_SYMBOL vmlinux 0xae9d7f8c scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xaea46535 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xaea9b5e8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xaeaa7655 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee9e4c8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xaf0a6b90 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xaf1fd789 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xaf31224d snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xaf3d3a0b writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf52da8d tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf85b09b napi_frags_finish +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa05144 omap_dss_register_driver +EXPORT_SYMBOL vmlinux 0xafd992c0 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xafdd79ed inet6_ioctl +EXPORT_SYMBOL vmlinux 0xb0052381 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb01d7636 get_fs_type +EXPORT_SYMBOL vmlinux 0xb02d67fd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xb0532e93 sound_class +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0a65ff3 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e34aa1 tcp_child_process +EXPORT_SYMBOL vmlinux 0xb0e63bf2 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb10e9b52 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb1112068 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb14761d5 user_path_at +EXPORT_SYMBOL vmlinux 0xb14897d9 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb16fe7b3 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb18e6948 omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1adf2b3 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d849da blkdev_fsync +EXPORT_SYMBOL vmlinux 0xb1dc8c42 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb1e61df2 clear_nlink +EXPORT_SYMBOL vmlinux 0xb1ed6e20 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb250d9b0 vm_event_states +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb29e650e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2ca9805 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xb2cc71e9 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d7f6ff dev_disable_lro +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb3356a4f single_release +EXPORT_SYMBOL vmlinux 0xb35417d2 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xb371bda1 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb38263aa submit_bh +EXPORT_SYMBOL vmlinux 0xb3bdbe79 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb3cfbe09 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb438757a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb4419549 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb45ee96c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4936582 free_netdev +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c8f38a omap_dma_chain_status +EXPORT_SYMBOL vmlinux 0xb4d69f47 inode_init_once +EXPORT_SYMBOL vmlinux 0xb5080124 page_put_link +EXPORT_SYMBOL vmlinux 0xb52388e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb5435b58 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5738551 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb60cf95c filp_close +EXPORT_SYMBOL vmlinux 0xb60dca53 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xb62a57b6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xb64435c0 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xb661a04e vfsmount_lock +EXPORT_SYMBOL vmlinux 0xb663e77b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7e3de sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xb6a7fd17 request_key_async +EXPORT_SYMBOL vmlinux 0xb6a84053 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb6b279ca blk_start_request +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c6e5f7 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xb6cb4764 truncate_setsize +EXPORT_SYMBOL vmlinux 0xb6d1237f tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xb6e689b4 udp_poll +EXPORT_SYMBOL vmlinux 0xb6eed2ff jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb70fbdb1 blk_put_queue +EXPORT_SYMBOL vmlinux 0xb7236615 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xb72f8be8 d_alloc +EXPORT_SYMBOL vmlinux 0xb7504e0f read_cache_page +EXPORT_SYMBOL vmlinux 0xb758ee43 check_disk_change +EXPORT_SYMBOL vmlinux 0xb75da1b2 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xb7692131 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xb77a7c47 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xb788e880 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb78b3626 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7cb8734 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb7d858e6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xb7d8bd41 netdev_warn +EXPORT_SYMBOL vmlinux 0xb7ded971 default_llseek +EXPORT_SYMBOL vmlinux 0xb7f9fae1 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xb80a019a nf_getsockopt +EXPORT_SYMBOL vmlinux 0xb811e32e bioset_free +EXPORT_SYMBOL vmlinux 0xb8184db9 bio_pair_release +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81beaec snd_card_free +EXPORT_SYMBOL vmlinux 0xb81ecb7f omapdss_sdi_display_disable +EXPORT_SYMBOL vmlinux 0xb81fd3be idr_find +EXPORT_SYMBOL vmlinux 0xb82af13a lease_get_mtime +EXPORT_SYMBOL vmlinux 0xb82de169 proc_create_data +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb86a470c dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb879ca62 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb89edda2 kunmap_high +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8aa6710 dev_open +EXPORT_SYMBOL vmlinux 0xb8ae0094 is_bad_inode +EXPORT_SYMBOL vmlinux 0xb8c0ea19 __dst_free +EXPORT_SYMBOL vmlinux 0xb8e74b14 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f317e5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb90f8ffb page_symlink +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb949c954 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xb951e05a ___pskb_trim +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb96dd0f3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98fcb1e kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9b64a2e netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0xb9c25982 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb9cbb8a4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xb9d6a701 generic_readlink +EXPORT_SYMBOL vmlinux 0xb9e52429 __wake_up +EXPORT_SYMBOL vmlinux 0xb9e89c99 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xba009598 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0xba1026d6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xbaac427c get_mem_type +EXPORT_SYMBOL vmlinux 0xbac6d33d splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xbae47e67 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xbaf04a46 devm_clk_put +EXPORT_SYMBOL vmlinux 0xbaf5d772 tty_throttle +EXPORT_SYMBOL vmlinux 0xbafcd342 blk_init_tags +EXPORT_SYMBOL vmlinux 0xbb0f0e09 __put_cred +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb2643f0 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xbb2b4612 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xbb3c58ab sk_free +EXPORT_SYMBOL vmlinux 0xbb43246b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xbb5b41d4 mmc_request_done +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6de668 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb75437a dev_trans_start +EXPORT_SYMBOL vmlinux 0xbb79c91e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbb7b043d kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbbd1cbd skb_queue_purge +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc860222 gpmc_read_status +EXPORT_SYMBOL vmlinux 0xbc945ef2 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xbcbc2ac8 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xbcdf680a scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xbcfefdaa jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xbd2abe00 scsi_unregister +EXPORT_SYMBOL vmlinux 0xbd31620c vfs_create +EXPORT_SYMBOL vmlinux 0xbd6b36d3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xbd6e70a5 xfrm_input +EXPORT_SYMBOL vmlinux 0xbd79d34f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xbda52866 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xbdb428ef mntput +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe15e650 write_one_page +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe390c04 dput +EXPORT_SYMBOL vmlinux 0xbe49bf77 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xbe530ee0 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xbe5fe92a get_gendisk +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe8969eb dev_add_pack +EXPORT_SYMBOL vmlinux 0xbe8b28bb md_register_thread +EXPORT_SYMBOL vmlinux 0xbeb94824 nla_reserve +EXPORT_SYMBOL vmlinux 0xbee7d4b2 snd_card_create +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefac0ef bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xbf1faebe mutex_trylock +EXPORT_SYMBOL vmlinux 0xbf202f87 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xbf491189 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaa7c32 do_map_probe +EXPORT_SYMBOL vmlinux 0xbfabafcf __devm_request_region +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfda3c40 migrate_page +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01be5ff fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc036ab71 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06ec2c8 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08b4157 simple_map_init +EXPORT_SYMBOL vmlinux 0xc08f8992 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0bf1103 input_register_handler +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d3b74c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc0ef970d snd_component_add +EXPORT_SYMBOL vmlinux 0xc0fb6655 netdev_alert +EXPORT_SYMBOL vmlinux 0xc10dbd85 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131379f snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xc1481fd6 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc14f39e6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc1509363 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17b6a0e try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xc1903cb3 sget +EXPORT_SYMBOL vmlinux 0xc1b76967 release_pages +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc21334b9 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc21c82c0 dev_gro_receive +EXPORT_SYMBOL vmlinux 0xc2220e8d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xc2246e0b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc24851f0 nla_append +EXPORT_SYMBOL vmlinux 0xc25076c0 kobject_del +EXPORT_SYMBOL vmlinux 0xc252d6bd tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2748881 kobject_init +EXPORT_SYMBOL vmlinux 0xc28cfaee sock_update_classid +EXPORT_SYMBOL vmlinux 0xc2a852a0 clk_disable +EXPORT_SYMBOL vmlinux 0xc2ad8a74 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc2ae7acd softnet_data +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e058a4 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f13a1f request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc31954fb tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc37d20b6 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc37d2d7b mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc38724d3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc3890b97 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc3ed71dd scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc4185c4f flush_dcache_page +EXPORT_SYMBOL vmlinux 0xc41b32a3 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc4415c18 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xc45ef616 idr_for_each +EXPORT_SYMBOL vmlinux 0xc48413f0 init_buffer +EXPORT_SYMBOL vmlinux 0xc48aca4d xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc491b540 journal_force_commit +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49ad5f1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc4a26142 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xc4beebba blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xc4c4a034 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc4e8b63a bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc50fff86 security_mmap_file +EXPORT_SYMBOL vmlinux 0xc51417b7 dev_activate +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc5337b72 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc54bc3c9 dqstats +EXPORT_SYMBOL vmlinux 0xc556ef02 kmap_high +EXPORT_SYMBOL vmlinux 0xc5669f48 request_firmware +EXPORT_SYMBOL vmlinux 0xc56fcffc save_mount_options +EXPORT_SYMBOL vmlinux 0xc5b51a25 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc5b6ea0b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc5b80112 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc5ba7185 netif_device_detach +EXPORT_SYMBOL vmlinux 0xc5bc01bc __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xc5c8c8ad omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xc5cd8e2b proto_unregister +EXPORT_SYMBOL vmlinux 0xc5d514f4 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f94b5d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc601f8df snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0xc6184045 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6338ba2 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc65364f9 dql_completed +EXPORT_SYMBOL vmlinux 0xc65f6a4b skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xc6711083 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc672a242 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xc6737886 __netdev_printk +EXPORT_SYMBOL vmlinux 0xc6af2549 input_release_device +EXPORT_SYMBOL vmlinux 0xc6c8dc10 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc75db041 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc7751111 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc799a1d0 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a9b21c snd_jack_report +EXPORT_SYMBOL vmlinux 0xc7aff3e6 uart_match_port +EXPORT_SYMBOL vmlinux 0xc7cf72f9 register_qdisc +EXPORT_SYMBOL vmlinux 0xc7e76a1f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc80dfa31 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83bbefc register_sound_special_device +EXPORT_SYMBOL vmlinux 0xc84151d2 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85edb9e snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xc86b0738 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc878ad08 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xc89f5752 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc8a2b314 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc8b1be3b block_write_end +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8f4a67f textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc90c7518 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc9142293 omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0xc921235e __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xc9243de6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xc9773d02 __f_setown +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a8cc7c sock_no_listen +EXPORT_SYMBOL vmlinux 0xc9e25f28 d_set_d_op +EXPORT_SYMBOL vmlinux 0xc9ff6bf0 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xca031897 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xca34e665 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xca3fe7c1 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xca49eb3d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xca515475 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca650ef4 scsi_print_command +EXPORT_SYMBOL vmlinux 0xca7e08c8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xca92771d icmpv6_send +EXPORT_SYMBOL vmlinux 0xcab17e69 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xcacc4278 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xcb5bf683 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb736482 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbb10134 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd83b43 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xcbf58bc6 snd_timer_close +EXPORT_SYMBOL vmlinux 0xcc0072a8 tty_port_open +EXPORT_SYMBOL vmlinux 0xcc04f360 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xcc0d8c8e dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xcc18d50c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3e392d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8f5fde qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xcc9a916b amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xccb775f2 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcce29370 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd398a14 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xcd3d7e5b netdev_class_create_file +EXPORT_SYMBOL vmlinux 0xcd4b732f bit_waitqueue +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd72843b tcp_sendpage +EXPORT_SYMBOL vmlinux 0xcd76d8e7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xcda78561 register_filesystem +EXPORT_SYMBOL vmlinux 0xcdb87f8e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xcddc09eb console_start +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdfeb992 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce24e23e d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce587748 nand_correct_data +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce9a18f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xcea899ea down +EXPORT_SYMBOL vmlinux 0xcece52fd key_link +EXPORT_SYMBOL vmlinux 0xcef3576a cpu_user +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf21e89e request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xcf25926d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcf2df055 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xcf7f7dcd bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xcfafee12 deactivate_super +EXPORT_SYMBOL vmlinux 0xcfbac5ae snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xcfbee619 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff08833 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd03532f4 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd03bdc45 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0446541 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd0600b30 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd07aca9b tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd07db919 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xd09cfc90 blk_register_region +EXPORT_SYMBOL vmlinux 0xd09dc10f simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b5acd3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xd0b68691 tcp_seq_open +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 0xd0f19781 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fd51df bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd0fed2d4 follow_pfn +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd13683ea xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd13b09aa xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xd152bc0f md_check_recovery +EXPORT_SYMBOL vmlinux 0xd1576dd3 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xd169b8ba dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a139fe lg_global_lock +EXPORT_SYMBOL vmlinux 0xd1a8949d ip_setsockopt +EXPORT_SYMBOL vmlinux 0xd1c3a60a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd1eef71f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd20ce1d0 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd225e0b2 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd236178f kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xd23f3c20 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd24949a0 mpage_writepages +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 0xd26338c6 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd27731ef __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd29d8cf4 nf_reinject +EXPORT_SYMBOL vmlinux 0xd2cee4aa shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd2e826b4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd3149376 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd34f26bd netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd3564590 sock_create_lite +EXPORT_SYMBOL vmlinux 0xd3610cf3 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd369192d elv_rb_add +EXPORT_SYMBOL vmlinux 0xd36a27d6 __devm_release_region +EXPORT_SYMBOL vmlinux 0xd37bf41f snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xd382019f register_sysctl_table +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3b218bf xfrm_state_add +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3e05077 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xd402a120 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd42327ee of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xd439fd2e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xd460dda3 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xd4a644c3 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd4b6e253 arp_create +EXPORT_SYMBOL vmlinux 0xd4bc7c9b snd_cards +EXPORT_SYMBOL vmlinux 0xd4c2dd3b snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xd4eb7456 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd52a49b1 kern_path +EXPORT_SYMBOL vmlinux 0xd550a602 journal_flush +EXPORT_SYMBOL vmlinux 0xd56e1b60 tty_set_operations +EXPORT_SYMBOL vmlinux 0xd56e9485 omap_set_dma_dest_index +EXPORT_SYMBOL vmlinux 0xd591dbba unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd59d512a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5d7e375 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd5d91652 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd5e8ef6b blk_make_request +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62eca04 cont_write_begin +EXPORT_SYMBOL vmlinux 0xd63494a3 dump_seek +EXPORT_SYMBOL vmlinux 0xd63e53eb kern_unmount +EXPORT_SYMBOL vmlinux 0xd6471215 sk_filter +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd663b162 d_find_alias +EXPORT_SYMBOL vmlinux 0xd6649268 lock_rename +EXPORT_SYMBOL vmlinux 0xd678233c journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd69ec7fe __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd6aa4d6d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xd6c6295c mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xd6d27e9e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xd6d42d27 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0da41 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xd715fbf2 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd73281bc max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd73bb928 netpoll_setup +EXPORT_SYMBOL vmlinux 0xd757bca8 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd75cdbcc make_bad_inode +EXPORT_SYMBOL vmlinux 0xd7609084 skb_trim +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79385d7 dev_notice +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ad4a70 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd7baaccf sock_no_bind +EXPORT_SYMBOL vmlinux 0xd7c0663b set_nlink +EXPORT_SYMBOL vmlinux 0xd7e2bffb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8061f2f iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd830e65a skb_insert +EXPORT_SYMBOL vmlinux 0xd8348d73 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd85a03d6 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd861d45f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd887e786 mmc_erase +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8cefc96 inet_frag_find +EXPORT_SYMBOL vmlinux 0xd8dc1c94 input_grab_device +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f040f1 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd90503ca snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xd919212b phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9437eb2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xd9559426 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96b6dd1 omap_device_get_by_hwmod_name +EXPORT_SYMBOL vmlinux 0xd9850607 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9aa27a2 mempool_create_node +EXPORT_SYMBOL vmlinux 0xd9cd8ddb map_destroy +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9dcfbc6 phy_device_free +EXPORT_SYMBOL vmlinux 0xd9e15faa security_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e1a956 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd9f8bbe1 misc_register +EXPORT_SYMBOL vmlinux 0xda03e1fe __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xda0e48f1 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xda3ff8ed tcp_make_synack +EXPORT_SYMBOL vmlinux 0xda519edc __netif_schedule +EXPORT_SYMBOL vmlinux 0xda58c396 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xda5af5eb snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xda677b54 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xda6bff42 ps2_end_command +EXPORT_SYMBOL vmlinux 0xda6dc07d tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda902928 skb_seq_read +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdab39954 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xdae0d97a tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xdaedc6c7 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xdb0df8da generic_setxattr +EXPORT_SYMBOL vmlinux 0xdb2178c7 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb71b872 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb779077 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdba1ff6f jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xdbaec766 qdisc_reset +EXPORT_SYMBOL vmlinux 0xdbb67202 skb_pull +EXPORT_SYMBOL vmlinux 0xdbbbf564 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xdbc3c0cf alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf667f __elv_add_request +EXPORT_SYMBOL vmlinux 0xdbe2f014 bdi_init +EXPORT_SYMBOL vmlinux 0xdbe48098 fb_blank +EXPORT_SYMBOL vmlinux 0xdbf2e468 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc46b485 clk_register +EXPORT_SYMBOL vmlinux 0xdc52a67d mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xdc5622ba simple_write_end +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc798d37 __mutex_init +EXPORT_SYMBOL vmlinux 0xdc7ee45b ppp_unit_number +EXPORT_SYMBOL vmlinux 0xdc8d9da4 kunmap +EXPORT_SYMBOL vmlinux 0xdc963c67 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xdca4f90b dev_remove_pack +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd69f39 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0e4d14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd515a30 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xdd56f10e inet_sendmsg +EXPORT_SYMBOL vmlinux 0xdd6056ff fail_migrate_page +EXPORT_SYMBOL vmlinux 0xdd780af7 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd9ab324 d_drop +EXPORT_SYMBOL vmlinux 0xddae13e3 inet_frags_init +EXPORT_SYMBOL vmlinux 0xddc6405f mount_bdev +EXPORT_SYMBOL vmlinux 0xddcab48c mpage_readpage +EXPORT_SYMBOL vmlinux 0xdddf622a set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xde15c042 omap_set_dma_src_index +EXPORT_SYMBOL vmlinux 0xde3c68a6 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xde4becba dcache_readdir +EXPORT_SYMBOL vmlinux 0xde53677e unlock_page +EXPORT_SYMBOL vmlinux 0xde570f5b find_inode_number +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 0xdecd4b46 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdecfc0ed blkdev_get +EXPORT_SYMBOL vmlinux 0xded8cab6 log_wait_commit +EXPORT_SYMBOL vmlinux 0xdef169ec scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdf006bb2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xdf00e7e2 journal_restart +EXPORT_SYMBOL vmlinux 0xdf1ef69f wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf667daf vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdf69d64c ps2_init +EXPORT_SYMBOL vmlinux 0xdf76946c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf96db91 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xdfa6d098 input_get_keycode +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfca24f1 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfde51d3 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xdffe8e4e unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe02220c9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe02ae9d2 release_firmware +EXPORT_SYMBOL vmlinux 0xe04a3d7a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0519376 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06cfc57 bdput +EXPORT_SYMBOL vmlinux 0xe06d8087 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe070d806 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bdcc84 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe0f6aa9e nand_default_bbt +EXPORT_SYMBOL vmlinux 0xe106154f omap_vram_get_info +EXPORT_SYMBOL vmlinux 0xe1080dbd tty_write_room +EXPORT_SYMBOL vmlinux 0xe112a9a0 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f4561 drop_nlink +EXPORT_SYMBOL vmlinux 0xe124d483 skb_copy +EXPORT_SYMBOL vmlinux 0xe12bd949 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xe1644b2e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe166646b dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xe16b893b mutex_lock +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe19c51cb lookup_hash +EXPORT_SYMBOL vmlinux 0xe1ac6d43 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe1ac9399 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xe1e18ac8 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe1f418a9 neigh_for_each +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe213222b unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe216b261 elv_add_request +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2441279 d_rehash +EXPORT_SYMBOL vmlinux 0xe24657d9 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2554df8 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe25a3207 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e48d17 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2ed045e of_parse_phandle +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fdf9ad eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xe3225c33 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xe3401242 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe38ae976 d_alloc_name +EXPORT_SYMBOL vmlinux 0xe3cbbcc5 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xe3d291a5 tty_port_close +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dd24a5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe40abcfa mmc_start_req +EXPORT_SYMBOL vmlinux 0xe4127664 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe4394876 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe45acc3d pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4b41f7c snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4cb59ca __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe4cca265 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe4d29749 dcb_setapp +EXPORT_SYMBOL vmlinux 0xe4e22326 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xe4fe162b jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xe4ff8d44 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe5029346 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe5074439 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe50eecdb inet_csk_accept +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe51e783d inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xe522e2f3 dev_driver_string +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52c1a6c xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe54dbdc3 follow_down_one +EXPORT_SYMBOL vmlinux 0xe55eec63 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe587dc62 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xe59e6dd7 vfs_rename +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d58c84 irq_set_chip +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5e581c1 wake_up_process +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fcef47 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe62bf073 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xe6317d75 input_unregister_device +EXPORT_SYMBOL vmlinux 0xe631934d bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe6336a29 unregister_console +EXPORT_SYMBOL vmlinux 0xe63901a1 napi_get_frags +EXPORT_SYMBOL vmlinux 0xe64371bf tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xe671b058 iget_failed +EXPORT_SYMBOL vmlinux 0xe6744a89 omap_clear_dma +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69e3856 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xe6a27fba wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xe6beae45 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6d0fd38 do_sync_read +EXPORT_SYMBOL vmlinux 0xe6eb77fe skb_find_text +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fbe96e proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe72a5c93 vm_mmap +EXPORT_SYMBOL vmlinux 0xe73d0fde sleep_on +EXPORT_SYMBOL vmlinux 0xe75ce1a8 mdiobus_read +EXPORT_SYMBOL vmlinux 0xe76e19b8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe79809e7 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9e446 pipe_to_file +EXPORT_SYMBOL vmlinux 0xe7af7153 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe7ca1844 ping_prot +EXPORT_SYMBOL vmlinux 0xe7d42d0b delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f44597 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe7f4e337 nand_lock +EXPORT_SYMBOL vmlinux 0xe80c9191 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe80e8691 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xe82d1c87 log_start_commit +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87ed1ce idr_replace +EXPORT_SYMBOL vmlinux 0xe893c4af snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xe8a27752 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe8a99d5e dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8d0683c write_cache_pages +EXPORT_SYMBOL vmlinux 0xe8d63b2e generic_file_open +EXPORT_SYMBOL vmlinux 0xe8e6dd74 block_commit_write +EXPORT_SYMBOL vmlinux 0xe9046d8e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94605ac dentry_unhash +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95f91a4 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xe96b35d0 get_disk +EXPORT_SYMBOL vmlinux 0xe96d85a2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xe97ec086 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe9c76685 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xe9c9ba29 km_policy_notify +EXPORT_SYMBOL vmlinux 0xe9f147a7 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1970bc kmem_cache_create +EXPORT_SYMBOL vmlinux 0xea204ef3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xea6f48d1 clear_inode +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9fb9df rename_lock +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaea334a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xeb15ce9e journal_init_inode +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb378013 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xeb3cb802 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb61ec51 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xeb78dc9b dev_close +EXPORT_SYMBOL vmlinux 0xeb959693 flush_signals +EXPORT_SYMBOL vmlinux 0xeb98fe8d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebcc935c of_dev_get +EXPORT_SYMBOL vmlinux 0xebd0b88c xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebf6a12e lro_receive_skb +EXPORT_SYMBOL vmlinux 0xebf780da uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfe95db journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec485a97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec510c93 netif_napi_add +EXPORT_SYMBOL vmlinux 0xec6a4d04 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xec6d982e tcp_init_sock +EXPORT_SYMBOL vmlinux 0xecba1490 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xecbcf115 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xecd85338 md_error +EXPORT_SYMBOL vmlinux 0xecf31515 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xed2344e1 set_create_files_as +EXPORT_SYMBOL vmlinux 0xed266cb7 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed37348c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xed3a93ab fd_install +EXPORT_SYMBOL vmlinux 0xed5840cd tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xed854dac omap_stop_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc00468 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xedc338b8 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xeddbf3d5 kthread_bind +EXPORT_SYMBOL vmlinux 0xedf8b17c do_splice_direct +EXPORT_SYMBOL vmlinux 0xee025581 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee15ff03 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee3b0e8f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xee3f35e9 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xee4b3e38 create_proc_entry +EXPORT_SYMBOL vmlinux 0xee596802 generic_write_checks +EXPORT_SYMBOL vmlinux 0xee861386 security_path_link +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeedff491 __break_lease +EXPORT_SYMBOL vmlinux 0xef26c159 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xef3910dc d_obtain_alias +EXPORT_SYMBOL vmlinux 0xef3bc247 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xef75f942 read_cache_pages +EXPORT_SYMBOL vmlinux 0xef7b8cd9 fb_get_mode +EXPORT_SYMBOL vmlinux 0xef7f8659 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xefa8780b tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xefb66a95 omap_request_dma_chain +EXPORT_SYMBOL vmlinux 0xefb8df6c netif_device_attach +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff49f37 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xeffc3e12 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00e3865 kernel_connect +EXPORT_SYMBOL vmlinux 0xf019a5b4 skb_put +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf068c994 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xf095d1c1 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xf09b45fb seq_puts +EXPORT_SYMBOL vmlinux 0xf0cc070f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xf0d2216b dquot_resume +EXPORT_SYMBOL vmlinux 0xf0d53085 eth_header +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0e3cb14 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fc826c new_inode +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf10b7955 stop_tty +EXPORT_SYMBOL vmlinux 0xf11645b3 netdev_err +EXPORT_SYMBOL vmlinux 0xf1192185 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf125fe83 module_refcount +EXPORT_SYMBOL vmlinux 0xf1273d7e nf_hook_slow +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf14516fe tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xf174143a genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf17c7c91 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1b31d3b jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf1c700d1 mmc_add_host +EXPORT_SYMBOL vmlinux 0xf1ca44c6 tty_register_driver +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f44778 scsi_register +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210b80f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf215d60d udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xf21bc94d set_binfmt +EXPORT_SYMBOL vmlinux 0xf2251d49 vfs_write +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24d97d0 skb_store_bits +EXPORT_SYMBOL vmlinux 0xf26df746 omap_vram_free +EXPORT_SYMBOL vmlinux 0xf295ca65 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b80c28 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xf2b9ed2b give_up_console +EXPORT_SYMBOL vmlinux 0xf2e0a73a snd_card_unref +EXPORT_SYMBOL vmlinux 0xf2e5a880 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf2e78011 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xf2f63e74 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31c8008 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xf3227ba1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf3234334 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf32baa4a ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34e2095 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf351cb1f vfs_llseek +EXPORT_SYMBOL vmlinux 0xf3559cf7 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf388944d file_sb_list_del +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390e2a6 blkdev_put +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3a3e15b page_address +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e0d359 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf3e2b970 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf3fffbc8 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf4076a1c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf409e08a filemap_flush +EXPORT_SYMBOL vmlinux 0xf4104a26 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf44b03d9 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xf44c2e0b freezing_slow_path +EXPORT_SYMBOL vmlinux 0xf45bb2e1 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xf45cbd76 kill_pid +EXPORT_SYMBOL vmlinux 0xf46adb1a neigh_update +EXPORT_SYMBOL vmlinux 0xf471a5c2 blk_put_request +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfcc97 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xf4d95810 inet_release +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fe07a0 mii_check_link +EXPORT_SYMBOL vmlinux 0xf4ffea60 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf51212c4 i2c_use_client +EXPORT_SYMBOL vmlinux 0xf52e15c1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf545b37c arp_xmit +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5516a34 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5784987 con_is_bound +EXPORT_SYMBOL vmlinux 0xf5a3e1c6 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf5ae3f81 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5d70668 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xf5df134c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf61cdfc1 __page_symlink +EXPORT_SYMBOL vmlinux 0xf62a388f backlight_force_update +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf646f89e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xf648616a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf648dfe6 may_umount +EXPORT_SYMBOL vmlinux 0xf67c24f2 mount_nodev +EXPORT_SYMBOL vmlinux 0xf67c8741 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf67d60e0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xf6a3253b fb_class +EXPORT_SYMBOL vmlinux 0xf6b8567d downgrade_write +EXPORT_SYMBOL vmlinux 0xf6ba8318 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d046da key_put +EXPORT_SYMBOL vmlinux 0xf6d7e5d6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6eef04d inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf7078511 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xf74ecc5d insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75d7990 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf777397f __bforget +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78306d3 d_validate +EXPORT_SYMBOL vmlinux 0xf78478a4 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf792d7e3 kobject_get +EXPORT_SYMBOL vmlinux 0xf794311c mntget +EXPORT_SYMBOL vmlinux 0xf79c9fa3 omap_vram_alloc +EXPORT_SYMBOL vmlinux 0xf7ae8d2f tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xf7c61815 get_omap3_evm_rev +EXPORT_SYMBOL vmlinux 0xf7f81131 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf7fa1b62 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf835758f md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf853ab50 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf87213bd sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf90b6bd2 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93498fd input_free_device +EXPORT_SYMBOL vmlinux 0xf93a8d2e jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xf9831617 dst_destroy +EXPORT_SYMBOL vmlinux 0xf9939fc2 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad6c2a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xf9cbd845 journal_forget +EXPORT_SYMBOL vmlinux 0xf9d5ee34 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf9dc183c inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf9dc42f9 seq_open +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ef0b8e mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xfa082128 down_interruptible +EXPORT_SYMBOL vmlinux 0xfa3643fb omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xfa3ad38e kmap_atomic +EXPORT_SYMBOL vmlinux 0xfa585a30 find_or_create_page +EXPORT_SYMBOL vmlinux 0xfa660e3f __bio_clone +EXPORT_SYMBOL vmlinux 0xfa7c26e4 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xfa8af8e0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfa8fb9de lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xfa950f38 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xfac32472 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaca2280 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaff1690 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xfb0d5d32 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xfb26ccdb kmem_cache_size +EXPORT_SYMBOL vmlinux 0xfb41f913 rt6_lookup +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6e5410 dev_addr_add +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb86ff7 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xfbdaf097 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbf3d8bd mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfbfe4e28 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1a2583 md_write_end +EXPORT_SYMBOL vmlinux 0xfc1d7daf inc_nlink +EXPORT_SYMBOL vmlinux 0xfc23bb3a init_net +EXPORT_SYMBOL vmlinux 0xfc35766a dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xfc38474e __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc45c7e3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcaf6b59 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcebaa28 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfa1b2f dev_addr_init +EXPORT_SYMBOL vmlinux 0xfd08e989 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xfd13b9e8 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd67f965 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd786d6d scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xfd875215 commit_creds +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfde5b4d5 setup_new_exec +EXPORT_SYMBOL vmlinux 0xfde6bb92 dquot_file_open +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfdffdc01 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xfe14753a phy_connect +EXPORT_SYMBOL vmlinux 0xfe250cfd kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xfe3c6b36 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfe4735ec bd_set_size +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe634f58 add_wait_queue +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe903138 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xfeb02436 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfec5b241 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xfedffd86 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xfee79ab0 set_user_nice +EXPORT_SYMBOL vmlinux 0xfeebbaef skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff13d63a journal_update_format +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff856324 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xff97e7db dquot_scan_active +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 0xffe1b725 register_gifconf +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xffe5c31b inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xfff15b8e tcp_tso_segment +EXPORT_SYMBOL_GPL crypto/af_alg 0x6b134a1a af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x8f9153ac af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa65cae83 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc04f705b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd18afe23 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xdb4057f9 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xde156c3d af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf623e43 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x4cfb2bae async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd8e6cd50 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf7665dc5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa944dc18 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xbf506b63 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x08cfb5bd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x172898d6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa0d80ce7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6371b89 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x030377e4 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x74e1b715 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3f356d99 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x0a938faa cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x310a8adf cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x856fda5c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa064d1f3 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa39c3ea0 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9b38e01 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xb25eb8f9 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc318884a cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xdfc58eb9 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xeeeac2e4 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x355b63aa 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 0xc8d74ff8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc87914f twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x750d7b38 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0efc5a59 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11296b63 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12e28f6a ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13b679c1 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x25812008 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49656714 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ba65a6c ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e8144e5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58adbbe5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c064a6a ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60558ef0 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63f03bcd ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x775b2bec ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a9e5aff ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa15dfad2 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xed582fda ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf119a366 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf803a861 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x723f93c9 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x7c583119 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cef45fb bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ec3791b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x280d2e1c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2f77fbe3 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ac8ba43 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4dbb4224 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x54646bb7 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5689645e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f2db6dd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97192d6d bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa6db42e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1a8f98b bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcec6da0d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc911c6d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea85ea0e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x169f3164 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x204bdbad btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x282b4e86 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x352ceea2 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x60e87637 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x62d8dc76 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x81000d42 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd1065c2f btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd67fa5f6 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf0306178 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x08da9925 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6bfe7a37 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8b129122 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9a649faf extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xaaa1de2b extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xad3b9e7a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb414a6f3 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbfca5387 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc00b77e2 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc6dad6a7 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdadb03f7 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xde7662b2 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x844db1d1 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa01e6ca2 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x63653845 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd34ec0ff __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d41d914 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7db824f drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e7a3488 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x208f711b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2120e0b3 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30cd9604 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37bd8671 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5007668d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x52e1d863 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5da2265c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x672328ca hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bc243ee hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7470b191 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x789cbd87 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7ede4994 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f82191 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x939f838f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c75b1b hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95bba2d7 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a2b8fa5 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d7fde02 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe0bfd46 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1a1ad5f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9c050b8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6f24079 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda35a47d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda3be655 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4dd3a07 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb408504 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf8c7caea hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfea5a078 hid_add_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 0xe0c34d78 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x793a2138 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcedbbfe7 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0adf520d usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb629ac8e usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc46b1008 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xed7abb64 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x07fc5c71 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0c87de3e hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17fd3bf7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2e736400 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x86aaa356 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa91e7285 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb44126c5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe8cfc43 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8fb98f4 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8afc54d hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdcf41bdd hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d90b4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf7e62f71 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x05e484d9 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0fda20fe i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1117418d i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x44daf467 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x462fb5a9 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 0x7c2a22fa i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x82d9c254 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa520a770 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcdc93406 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x38b83171 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x83bbaa67 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbf2723ae i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc326d507 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0acd77a5 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x10a8dddb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bee2d53 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27594f1b iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e42fb8a iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd802c3 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84999b75 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c6a156e iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95d88a8c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a13d6d6 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xacb183f5 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb76b1767 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc44bbca3 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8cb5645 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6ad34c6 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x10ea3c7f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xfe607136 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x25d89210 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeadcfa74 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeb08bb8a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1dfc6872 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b706391 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4439c4a2 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ba4466a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x761a5b30 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x78b0290f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7b1a406c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7cf88721 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84d24414 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbab05bae wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd70ff1e9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2c5145a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x08599f72 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2451ec06 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3101d93b gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3387574e gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x35d05a02 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4d6b0f31 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x54dbac55 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x57638090 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x661d41d5 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a246016 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6ea01cba gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8583a37d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9823fef6 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf692d4d gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb7563865 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe2dd6832 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe34f0272 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe39eaf6f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x134887a2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd50909e3 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 0x15f98a28 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x70f9ca69 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0xb1f99e44 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc691780d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcfcc85cb dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe5552caf 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 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +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 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2dc9297c dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x9b4b5b29 dm_bm_write_lock +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +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 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xf35b8892 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xe27ade15 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x6a419da4 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xbf524f7e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x6e4b83c9 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xcb0cf4da tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x97ae8ffb tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xcbc01c70 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x67f7a95d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x12a19713 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdc01c2c1 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x422aa049 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xe9802e9d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0xc5cededb simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xca71a8c6 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0xc6728344 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xe3f2b89d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x01dd0791 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0f3f4b68 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x101acc34 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2cb3fff5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3aba2661 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x50820dd8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x654b791a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65db318d smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6b5675ab smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7584386d smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7efd7b1e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8efb3c93 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa1d3b2c5 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd715cd3a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xecb50843 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xef2fad99 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8ae8afe smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004a37fd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x05fb336e rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09f74e5d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x15deac8c rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e728a68 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x363fbd6a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x426281fa rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4654f3b0 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 0x69e2797b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84fc67ee rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ae043ce ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a8f4780 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa03c87da ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xad8eec82 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfc9e5b1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd8368e9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb7d8b1b rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0d4d6712 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1b6015a6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1d59f776 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x28bfe541 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x36dab4a1 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x453d5539 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4784f8fa cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x63cf1f82 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x68fbdde1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d9837a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x902b3909 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9eca44cf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae3d8a24 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc27caf03 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd9f45a32 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe2e3fee7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf5490e85 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfb43dcaa cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfba3709d is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03588dab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x07538dff em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0ddac052 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0fe6c176 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2d3006cf em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4489c064 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x56878bb7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6ec1abd7 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x81065cb5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8e91e284 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x97cc4b82 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd62b5186 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf046f7e7 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xfba71ace em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x090b7ab2 omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x3f08714d omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x87006df4 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xd5aa61c6 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xe168e379 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x07dbd221 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x166432e6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x197321db tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd9f31275 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x01935f6d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4102273f v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4cd954d4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x51d0e57d v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xafc05ea4 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xe092a3cd v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x086271c0 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x797dff3b v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x8caf9728 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf3af94c0 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01f7bfeb v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1c7b6d56 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b575aba v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b731300 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x588caf77 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69f8209c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6aaa332a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x78bb71d5 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaaecaff9 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe3179acc v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe1c0a9a v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe8db231 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x064c7624 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1045ccc2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x14b50ba9 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x15ad7d9e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1e325a93 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20db1203 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x23138746 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2ac6a0c5 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x373da88a videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3c64079d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4993207e videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e17b589 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5324069c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5bb787db videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5c0b0651 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83ac9ba6 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8a1c09ae videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8f830bd2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9f93cf5b videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xba789c63 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xbb744607 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed1325ed videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf03e3036 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf867dee8 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x35547fac videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x7accad9d videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9a065738 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xe7065ea9 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x244bb4c1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x41c9ae39 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xe5ceccc3 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0d17162c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0f52c3b3 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x52f877ac vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x78865444 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82715c36 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8cb3c35a vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9536c6bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9a59f274 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9eac1719 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa01f5ffd vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xaa4cff71 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xab00da2e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xafe1ed30 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb0f1410b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe6e7aaaf vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xed3e4767 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xfc8f6ddc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x8905f9da vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe9da6780 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x4bf93c7f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78b7b26c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xa8562cf1 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xbbf7f600 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xee6df16c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x086399fc vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x029b4654 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2e3c91ba v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x32aa7c72 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x43a3e76a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4d4cbc63 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4f8b43ca v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x52ee7a7e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5ee3727d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7905874a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7d32218a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a0bc99f v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x90887e81 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x992211b2 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6503fbb v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbed4431e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd1525803 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5bfcfc6 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdb3cb1cc v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5612e59 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xee3b720a v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf51ddfaa v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfe6ed6b2 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3a0f8e25 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb9ef683b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbde8001c lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6494d669 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7146beb3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xac546478 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb0a46496 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb2ce756b lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd0172557 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdfe2ece2 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x25f0e9b1 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x398a339a mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe69799e0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x10488d64 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x23dee731 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25782377 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x462dc3c5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e236ac0 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8c40a54c pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9cd5d160 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd33bea88 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdd17fe6f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2f24813 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xebfe860b pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x33856c47 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x93b8a59b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x40afb19d pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9da4bce2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdc39c830 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe21faa5b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff434733 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x20a43ed6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x77e99fe0 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ad3bfd1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x995fb7f4 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd8d719b8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1b27e336 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbc63ace7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc92b3055 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xca2af4b8 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x368f9dce ucb1400_adc_read +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 0x1b5948f9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x659437b0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x68aed3e6 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x85192d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8c230d62 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdc1c6ef3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf63d9ebc enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0f90d799 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x145ac57d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3179986e lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3cf43c19 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb65da669 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xce02309c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xded86683 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0942247a st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x996db400 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x23d59dbd sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d7a52e5 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c60d1b6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7d125b37 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7e30c6d9 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfe8b52dc sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2ecad99a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x712ec32f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd7b4b136 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x038f3a9b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5348628a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xec8057e0 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0830ee4c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9d2d4170 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xca0ad797 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdbe3c031 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x82c38dc2 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x27e98bd3 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x29528f6f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18ce2ab1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e40bb38 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2745d1da ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d79a95a 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 0x5e35b9ae ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bbe66b3 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d0481dc ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x821869e1 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x995d7ef7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaee05fd3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbed8177e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc39b86b4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3f840d4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2b004818 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x985e7866 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xcc745ac4 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf65b24f4 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23e9926d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25db0a27 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x57e558c6 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5ea8e057 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6df454c7 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71351635 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89bd4283 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8bfb40e1 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93ac3aae can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa5fcc12b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc296bae5 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xedd8ddab can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7dac32ef alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x80f8ee06 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb8b2befe register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xeea29b91 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x203f33c5 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x45078d70 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5b687a44 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xec66784f register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x237efa63 cpdma_ctlr_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x4a6bea03 cpdma_chan_submit +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x41689100 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x628847fd macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x702b561e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x70cd5509 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb2825a9c macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x5be6c552 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xfd85e495 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2b7d1742 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8aff13af usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8f1b31d1 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xab85b46e usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2efd6f31 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x541f21ed rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5da0a897 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x95690947 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc68e5096 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd312ae5f rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a4def59 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1e60e4d7 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24939f65 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41d8979d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x459ed822 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x58f3799b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x654f7b37 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d755a57 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88ca8bac usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9687d333 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xac85e39e usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad209eae usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb174f68e usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb30d113e usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb48b697a usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5524923 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbba696d1 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe7f12f6 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0d26b40 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc237596f usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd7ab15b7 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd95c06be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd8be051 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf68b4d7f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0129970b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1bc18808 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x362774b9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x47dbfc53 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x58655c92 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ad2438b lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ddd54e1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x640e5dc3 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x66e70f14 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x868a3b66 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab5e295d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xad324100 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd64e8152 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xddb233f2 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe90e4139 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfe943312 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x08220a7a lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1c237e16 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1fce0397 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x21c3f1b9 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4c696dce lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73d88954 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa6739e1c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xab7027a9 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_usb 0x4cc44026 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x609da1f3 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x043a4941 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x09733edf mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0ac91da0 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10a3e381 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18083f65 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2dafbe86 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48a085d3 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55fc58a5 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x61dec748 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6278a237 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7c0c905d mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa861918a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdfd9e3e7 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x16e36f7e p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x466b14a4 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4b630669 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4e707758 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6f50db1f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7d50ddb4 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xafa524d6 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbf3b4a68 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd9535f90 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03843f86 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1efa404c rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20e065ab rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x219fba64 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2d6d549c rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f7e4c19 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x37d3220e rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a22c285 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d626d25 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fa4fd99 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x44e7890b rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a37c9d8 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53c54fa6 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56c5f612 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5780a6dc rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f9f09c2 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x671833a7 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ad6672e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ad74d80 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f44426d rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7db11808 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x80b2fe2b rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x81be6d3e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8684c33e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x86d1779f rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x957f8fd9 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96a9bd3a rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b21fede rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5355027 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8df79ff rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa7972a0 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xab81f2cc rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb0ff4a36 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb6768ee0 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc89b1100 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd6ae2e04 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf5533b6 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6f5191d rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7a05079 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2ec63a2 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x032259dd rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x038a2bbf rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0fd33eb2 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x10518f42 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1348efa5 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b2ca9d6 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ef34a6d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x23172b78 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2546f5ab rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2bd02cad rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3562148b rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35b9c1ea rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36c56eac rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3db5930b rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e0270f9 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ff6aa91 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52f0c14b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5452e954 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5931efb7 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ca889a7 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5edb1a10 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f8ae89b rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x653fbf88 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a565cc9 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6bec8515 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d089e26 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82561c39 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x852aad2b rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88ba657a rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88d6a0ac rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0d323d2 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa5ac7a42 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6852b5b rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0d62c1e rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb59338b0 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba40e39c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbaf48a2b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce0d146e rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1a52eb0 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd89f97bb rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd2118d3 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddc28dc1 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec9bcfc9 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf17eed18 rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb0f8e31 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfc134600 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff1ce82d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1cff0fde rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x298c0bd7 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5096f8d2 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7405863b rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7dd2ae9e rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8065fa23 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x859f31eb rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x88a1a416 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9dfc64a3 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb02e45e7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbed12df5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf10d1b7 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf93dd54 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc90adb4f rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdad100e0 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdd147ae0 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x5e4f3d00 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7b4840d3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe1762428 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04b1798f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08ea78a2 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x116a2115 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37be5353 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5947c40e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86e482b7 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d1a0c24 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9c95d522 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8049d79 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa833a263 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8d2facd wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4835acd wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6b0e2b0 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf9f5522e wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2b8dea33 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3a4c7729 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5a2f58 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x31bc8876 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x39958146 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ceaa31a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65e4df4d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb339fe5b mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb5aab6c8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe376687f mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe83b2572 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5ee00ccb wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7da035ee wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8f51d25e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99ca8282 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4e063fc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf2d08be0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6b2ba7a5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x042fe3f1 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1302bd23 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3e2a1eb4 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 0xb637c687 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc5f7408d scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd4384d32 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02584a3e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x28d166cc fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2f8ef938 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42edd5bc fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x47482929 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4797625b fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x48112eef fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x59532421 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89dd2c22 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x940cdfaa __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab4f590d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba09f2b1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe196b150 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1e1abd47 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a8c8514 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x41e3db18 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4205c59b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xaf0bbcf0 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9bc0922 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x03e498fb iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e2fb0d6 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ef41778 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x179b8c84 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f2d6b2f iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22769911 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2398a4cc iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x254acc51 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ccd6370 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33616f23 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3853c249 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b13494e iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50f12c47 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5394d876 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57cf927e iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d5d9632 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5efd51db __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x606f4ba2 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61948720 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61b985b8 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6fd3a94c iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c43acb0 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80c591c7 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9294aacd iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94b1e326 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x972a10d4 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x998b07f3 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa22c7a8c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacd055bc iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1302729 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb34c48d5 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6bc5970 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9257856 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcace4397 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb3c19a1 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2bc7e6b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe61f2dcb iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee647552 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeed1dacb iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef96b0d0 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf4486f7a iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe843f81 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff6a83fe iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x21919306 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x248e1689 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2f13d32b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x30a666b1 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3bb2ec06 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x44471dc8 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6c781ee2 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e71e9d2 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x70f9ea3d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x71bbe251 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74a49f8d iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x798a52ad iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x87b6cfd8 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3ddc166 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd8d903d5 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfb393a4b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xffc66914 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01ee4791 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0cf01d76 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12141b82 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12fbd89a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24949528 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x388972b6 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x542c89bb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67650b4d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x760904cd sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x761372c1 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f85e7a9 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x97b11aff sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa181edc8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6d103c9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb07ff6c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd995f55 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbfc9935f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2ea6471 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc59159e6 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf748984 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeddaf9ef sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee272bbc sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf49d43c8 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x114e3f91 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x24e4548f scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x330340df scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x77050454 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7fdd6b53 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9a19e6e3 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa7768fb6 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2dc6ae0 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc31d8973 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f3c0e32 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x170e52cd iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a254c9a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x293aafc0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2a0b80d4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c598a7c iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c5ec345 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2da5a50c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38a394bf iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a34ea07 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x572faddf iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67215318 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6eab83e4 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a31ea4f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9677cb10 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac46320b iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb155f18a iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb5da30f7 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb82c5274 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe4802e3 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6d1bf70 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce67a5e2 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd1c2da8b iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2fdcddd iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd370a8e0 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd63c2d19 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6701a28 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda94ea82 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd2f2668 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8613bff iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2eb71ea iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf33def16 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6aa341e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbbbf0329 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc4be9a2f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe4107c53 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 0x0e8e9cc0 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0f8dd0f3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x51a09851 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x78d1e228 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbad4377d srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ea55a9c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7cb77931 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa74320e8 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb4ae8a12 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf547ca2 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfa7de7bd spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6f6b5988 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa54081f9 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc842aaad dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc1f02f1 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xce2ce23c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x62f2419d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x1cff999c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9df3ae95 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8ce324b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbcb5a946 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd0a0e834 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf80f0d19 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 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 0x2743dfae serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3509aeb4 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3f3fb65e spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x52f1dbd7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x53c4e5c6 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62f7cea3 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x717eb93a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x790425bd synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x817d1c7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8905e8b3 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8d9c4fb4 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb5acc53d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +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 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x330d1405 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4044fb7c usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x508d5650 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x55dd6d77 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5ad5da78 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5d0300cc usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8eb77300 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa36dbaed usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa638860f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb2bbe19f usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc3a90ca9 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcffe488f usbip_recv +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 0xee34c48b dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x12b5190e max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2a8019a4 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x49b5c966 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x71f3fae0 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe6280e85 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xff951749 max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6b2e2607 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf649a80f uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc66478f uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x423f91cb usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x434723f2 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a2ef842 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3e26e994 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x77f5bb0b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x95e5935b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb3568b08 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7a07911 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbf2d0a62 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc53009ce usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd67c32b9 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3bfa6e96 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfc9b3687 musb_dma_completion +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xd2fbfaa6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e39fcf9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43b2378f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x484ba83a usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5394dc8f usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61cdce7e usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x75e03e45 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7791db21 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8051f6cf usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8cece6c0 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x94999f47 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa289085c usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb79f1dad usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc270512c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc5c3eec4 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xccf054e5 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce2dccb3 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5c117f2 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2a4f99a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf016b422 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ae75fe1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x156638dd usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x233dc9ed fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x23708d64 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3fd33d84 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x49b5e404 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57bffcd6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5869c0b0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59dac122 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x608684d2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x716d0bd8 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x741e8d62 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x838d4cf8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9cc4174a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2211468 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa5bd1ca2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa1c7cad usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf14e379 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2908973 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf1afc29 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2a255ad usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2343f3c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x01019865 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1bc96f4e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x20514dc4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x86edd0d5 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x875da42f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9793e88e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3e1c4be auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc465a829 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd61d1714 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe0923ba2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1906d5d3 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1bd6108e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6bc53461 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x797088c5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7aa734df ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe1395ec8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe23601d5 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xc71f135e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd23aa5ca fb_sys_read +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a39611c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6f299f85 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d9efdfb w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9a069db w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc70d0a92 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdee32dae w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe6df29b7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xef78c939 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe92acf9 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69a767fb dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6e572dd9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7db3050a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x27f444d4 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x48039122 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5e699a28 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9300344e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa0f8fbad lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb01dd2b8 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe281d0bf nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01b073b8 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02bd8e76 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0989ddce nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d9ec97f pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x113117fe nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11b7b52b nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13f5ac82 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x143ec1a6 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x160e9888 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28424c35 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28a10b7e nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29b5b503 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3859414f pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4169b738 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4786073c nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50769752 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x536c897b nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d0da5e6 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4efd09 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x618be631 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a61c9a4 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7be8711d nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d29fa76 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d48aa7f nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a1546f3 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b375e2d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade3aa15 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3a94e67 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb781f190 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbef52ce7 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc049a45c nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc154f66e nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1620259 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc536c910 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc76ff059 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc849c8e nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd621c956 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7e3cc54 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3e85a3 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6efbcb pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee777bb3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeec76eb8 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf62cf643 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6617934 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8f8d837 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc05ce10 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5830da5c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xee22f648 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14a5520d 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3796f943 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x51795bcf o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x622e6e97 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x62a7fd0d 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 0x72278f8f o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x910272cb 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 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 0x3dae01f1 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5b881bff dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x646877eb dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6cb65516 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 0x907094c8 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x90dc8adc 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 0x180eb3c3 ocfs2_stack_glue_unregister +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 0xb181e5f6 ocfs2_plock +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 0xf1992901 ocfs2_stack_glue_register +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 0x23fa33e8 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x42fcc27c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x586f2bb5 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb9ffba88 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc1024faf garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xf34aca60 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x027fe734 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x47b831db stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x29f55457 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x63f872e3 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x8240f6c0 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 0x7d1f05dd bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x020b298b dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ae65f8f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2f783e09 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x301adbfa dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3073c6c8 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34726a9c dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x369db7b8 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x39baeec2 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x406da13f dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4090e09c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x433441f4 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x46725bb4 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 0x67a8b285 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x683306c3 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6e98acd1 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79aa150b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7becc29f dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7dc2bb30 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e472b99 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ec6613b dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9531a7c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97c22800 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b282eab dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa17fb117 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba97d8cd dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8b2f413 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcfa181f8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9d15d63 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdcf476e4 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea531120 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeae28c6f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb69e8c8 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xecfabc36 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf262ab56 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf698ff06 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4d99a9ca dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5059f4e5 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c061b88 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6111e7ab dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc187d95e dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfcabaa40 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x456cc772 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x48c587a0 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xacd5f65e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc91c8952 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3b942b91 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x65aa08b0 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x66c862b4 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7a712ece inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x817533fc inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbbc889c7 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6f4f3cc5 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x506068f7 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0xd56dfb55 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x03f58400 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x437f8057 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x8125d292 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x858a2c55 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x89db608c nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2d32701e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x552e6986 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaa8ee303 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd33ece45 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd388bc6c tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xf31e8655 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x026005d4 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0459a2f4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x054792d2 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b162d11 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ae12ecf l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x43f14ee7 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x789fe9da l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x869b02e3 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8dbdd42a l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaba7c50e l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd81eae70 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xebf8114c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1a343f12 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1dfa98fa ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1fff9b96 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x24d733ad ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x633496f5 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x11707a5c ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1abc88f3 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3843a11e ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x52425ed4 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x53edbe2a ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8e648075 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9868f7d2 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 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 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcf608e9a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe6d97f0f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4e9d8c16 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x75673406 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x81d475e4 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf9c0f6b4 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0480467a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x082cfa7e nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09600437 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e0a4b4c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fe53b9c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x125b6f30 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x136f6134 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15d46ab8 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1939aacc nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ec866f2 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c7603c1 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31cd3b70 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3935e905 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af7522e nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f38c0bc nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45175a4c nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48999b59 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e2e38e8 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50ec5448 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51361342 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51dfa56c nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53a9dccd nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x583aa005 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a906cb2 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e374ed5 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60e710e2 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d7fe4a4 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71a18b82 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73563203 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7435b405 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7531fa76 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 0x7f58db58 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f7d638b __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x827e9d28 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ab8b577 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b2e10ee nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f70818e nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fb5ee4c nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fdd558a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x905d2c92 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9183c0af nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x958b33b0 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d59ee3a nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa927edb6 nf_conntrack_tuple_taken +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 0xaf62a93c __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf7bf9df nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3f322a8 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb733e1f3 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb918726c nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbde1fbd6 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2179269 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc80e02ed seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8fe8c48 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca30244f nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1d52369 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd51ab8ba nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5f7454a nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe51a8e69 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecadbaa9 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeecfced8 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf021f0eb nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf25f2a56 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4d93d20 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf93e299b nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcba7ec3 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff4b91c7 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xa013daa1 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x275ba122 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xca099929 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x12e67236 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2ec8e244 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x56ab0a10 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7bfe5ca4 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x939604b6 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa6f28fbd get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf01b5ff nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf7b3cf3 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd4bb8608 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xde9ac579 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf48b0574 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2b74af23 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5a447ef8 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5d7a20b4 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8ebc08a0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x231d52bf nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd59273a0 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x004a3407 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x277a0cab nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2dcaf58f ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2fd71ffc nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4544466c nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6d0a0fdb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x734bcc59 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7b2a7328 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x869e1f72 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a1fd92e nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbbe14993 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdaa4526f nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdecd81c8 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8a936b8b nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x38473e6d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x3076c79d nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5e010508 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x73fb79c7 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8e5767ba nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xae5ccbd6 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xafc8195d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc01682e0 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x98654da7 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x53b2286b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x038f5c09 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0a7719a9 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1685ccc2 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b3e1f08 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a4fe911 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3a3d2077 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88639b48 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1610500 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2df4649 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb02984e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb9aabb7 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe5627b33 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe779c867 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf6805745 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x563d999b xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf6afa81c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x1111f01a rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x12ef80ae rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x15b1df00 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x19eb1df5 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x228532f1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x2aef8cd7 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x30a6acc6 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x38b0126c rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3fb7f6c5 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x4cb7f9b3 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x544264f5 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x546732ab rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x58913c26 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x59d308dd rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5fbb8141 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x86294131 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x88ea94dd rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa6529efa rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa7777382 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xe0e6daf0 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf0190420 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf1847c45 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xf6787a4e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xfd2bf0df rds_conn_destroy +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x3fef1972 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xcce4728b 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 0x032d07c9 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x59d036c6 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x62cf3be0 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x86d7f52c svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8a772072 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa3c4999b gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbc08f930 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc6c31be4 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe52b9ec6 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf07a9305 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf48dee32 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00663fff rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00be1471 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02b8d726 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02ffafa7 rpc_wake_up_next +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 0x0b74c902 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x100430e1 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x112fbf82 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15297d4a xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1589d57d rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16080e6a sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a20cae7 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2156869a rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21b3e47f rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21bad064 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22bb62b1 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23eb38e1 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2582c4a5 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2599638c xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264dce3f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26f35cd6 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b343175 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b75dfac rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dada273 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e2fa726 xprt_unregister_transport +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 0x30c02704 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32d925d3 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35d44b02 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387bb34f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3901f48b svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3afe5492 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b6f129c sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b9b1c9b rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cfd4d2e svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ee0abfd xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2536fb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40460f3e xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4163c2b3 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48ac5c24 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49635bef svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d53602 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b350ac2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bd250c1 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c0a7ea5 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e17957f xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ec99491 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558e6711 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f54d16 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f5ce97 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5adb1b57 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ae4a238 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b18c2b5 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bf3eecc cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d81907b rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5da5a77d svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x626f6434 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6475896c rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b14429 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x690ac893 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b6d006a svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb0abb0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8f2614 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6decc925 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fc50753 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdd2664 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70659b5d rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7073d1c7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x710a3d38 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75ab3622 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78ae7a11 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x795aa079 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b0064da bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808cd845 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8171cc0d svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81ab0def sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x834e4a51 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83645766 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83798089 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x853977b8 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x864749f9 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x880f1844 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x885f20d8 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a554ae9 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a6bf7a5 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b0a6ef3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bafc457 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdaea94 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f91d36a xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f97cc18 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93a3b5c7 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x947f38b3 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95022c84 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x963294a1 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96915f68 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97572b61 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97a607cd rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98317f21 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986e51b4 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9880f31d rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a468d73 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2d7182 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cc0c229 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e6ac417 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f68267b rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa157a84d rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa432b366 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5691ad2 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6d6feab svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa829dda4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab43386f rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab6699b8 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabaf8106 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7d1f4b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadff5763 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf048d66 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf27a192 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb126ba5a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb17fbbf6 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3098bb2 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb540cb1e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb593abac xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6182a94 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb705f07e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba3b3b4c xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb1b5c7f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbed6967 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe281b53 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbeda976c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0e15e66 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1c930fe rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc56e6772 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc61d6454 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc672c109 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8f6cafc svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd24478 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc46cbee rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf86c653 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0149a19 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd02b05eb sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd216f371 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2a87cf0 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd517ccd3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd76ea40b svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9274fbd xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd92a83b5 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd92fef26 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd93c49b8 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda18c0a5 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda3c4763 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda9038b9 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdca55a0b rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcf3694d xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcf7a3c7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe13501f0 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe14d9421 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe326a4b2 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3e0ec7e cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41c7535 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe632ca96 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6eb1c1f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8c71e4e svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c1ec50 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcd55d9 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedd8a509 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedf707d9 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee1f0de2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf12c2646 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2bfada4 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf30d5d32 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf41fd30b rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb3c2c59 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe10720e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff88eb21 rpc_protocol +EXPORT_SYMBOL_GPL net/wimax/wimax 0x04253984 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x24e28e53 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x400877a3 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5c04f3e6 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x60d78eab wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7720de78 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79d4c76a wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x97f9fea5 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x984af745 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9aaef8fd wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9b9ea1a2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaac0277e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbbb3311d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0a9d0149 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1e8d075d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x20f237ad cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x45133c19 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4fe9f174 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x918ee13d cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x935ead14 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96e04c1e cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa5352369 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5b36b77 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xda2bc941 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe8975b38 pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1c0783f9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4432a3ac ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xec3758f3 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf26446ae ipcomp_input +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x2c407cc5 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xd5a3973f pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x31ac51d8 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x5d13c551 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x1a44e0ac tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x45481b92 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x14d99bb8 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x50273afc twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd40d39dd twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd508b0cc twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd625b3eb twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xba071886 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x19919ed6 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2ff8b3af wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x38fc106d wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x818c3928 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8c40b38b wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa9ee5b46 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb7efdc6b wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb8505ac3 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x3e9fcd99 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x6dc4874f wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xb39ca90c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xda380fa3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xa0698cb4 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb337f7b2 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xcaa0399a wm8996_detect +EXPORT_SYMBOL_GPL vmlinux 0x000668dc irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00075d04 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00654993 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 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 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012eadd3 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0130dafb tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x01393c24 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x016e3943 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c33702 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x022348f1 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x028552b8 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x02c8a5e3 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03453443 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0355789b ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x03a07b11 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e3fa81 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x04180da7 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x04251a3e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04ae6b56 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x04bba198 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x050fbefa usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0515cef1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x051ee1bf device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05420ce0 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056d5bd2 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a80d0a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05d80238 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05f39d73 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x0606a1dd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x060c2e5f inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0624b27b dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x063b82e4 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065335a0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x069441fc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x06a29820 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x06ac7be6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x06b252d6 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x06f57384 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0709a989 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x073247f9 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x074bd082 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07a343c6 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b86647 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x07f089df relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x08181428 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x083cb4d8 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x087d8bac spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0896c28d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x08eab084 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x091a29b3 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x094d38b8 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x097ad8a0 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x09a1aaa4 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x09ac2346 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09ce7319 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x09db167f mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x09e3ac69 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x0a0bf193 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0a0f0af1 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4f7895 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a519c01 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0a8f07d4 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0a9564f4 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0aa33262 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x0ac82454 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x0acfe8c5 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0b06fdb8 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b4ccb82 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ba09b27 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd6a198 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf1e21e sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01c84b __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x0c042caa power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c4241ae sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0c4caeb8 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0cbb600c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccffe10 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d1b26f9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x0d1e3c3e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x0d2bc1e9 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x0d30ea61 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d3abc9b unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4241ad tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0d4a7bd5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0d61a1d3 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0d6cd567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0da7e94b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0dbddb24 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0dbebb12 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0dda9cc1 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ddf2acb ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0de1db6c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0dee211e ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x0df7c393 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x0e045a13 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e16ee41 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x0e54fb9b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x0e5af2b2 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x0ed2f405 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x0f14864d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x0f1c556e snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x0f34a292 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f4ac36a usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x0f53833c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10155f64 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x101eb0c8 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x103781f1 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10734b7c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x10a5a913 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x10ab4825 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x10b6cad3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x10bb4f55 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x10e282f7 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x10f5e24b free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x110a093c klist_init +EXPORT_SYMBOL_GPL vmlinux 0x1142f296 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x116e9bae ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1175f652 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x11773d22 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x11b6c3a7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x11ce41ff bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x120ac879 gpmc_init_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1232fa96 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x12480f42 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12837a61 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x1297feb6 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x12be7bdf tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x12cfcc74 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x12ecb412 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x12f8f654 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1325cd42 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x13630626 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x136e01c7 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x1371d3d8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x137729ce snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x13ac1905 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13cfb561 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x13da31c7 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x149c2dc9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x149fd177 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14c9c386 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x1506b3e5 omap_uninstall_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x1509b0a0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x150df472 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x1519833e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1545f4de register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x158344bd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15c5d40f cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x15d9d086 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x15e825d8 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x15f756e8 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160158ab mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x163152c1 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x1638a168 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1664e775 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x166dcac1 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x16b812ea sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x16da80ac __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16decba7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x1727ba5f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x175b617b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x175d40d4 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1762c267 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1763b07e find_module +EXPORT_SYMBOL_GPL vmlinux 0x176e28d9 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17e3a646 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x17e7e4c5 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x1808a328 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x183dd256 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x185391d3 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870a88e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x18849542 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x18921769 device_del +EXPORT_SYMBOL_GPL vmlinux 0x1899b2c6 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x18a15d09 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x18bae6b6 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x18d2d3c9 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x18d40746 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18e5da11 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18ff3afb usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x19031208 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19456e90 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x196fbfec usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x199232b0 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3e4564 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a4a9ce8 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1a65920b omap_iommu_arch_version +EXPORT_SYMBOL_GPL vmlinux 0x1a67721b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1abb724f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afaa190 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x1b00d4ad device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b0a8ff3 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x1b0e34e7 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1b18f808 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x1b1b9718 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b34a45c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b85209d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9af522 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b9bc108 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1bc288a6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x1bc50751 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1bff2b8a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x1c052235 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1c0a5bb4 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x1c24b0eb skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x1c262434 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x1c3015e5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c922a08 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x1ca34d16 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1ce4137a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1ce5683a snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec09c2 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d1a25f8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5de3ea mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d664a5f sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x1d6894a7 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1e1524a4 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e330266 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e3bb8c3 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e929cba simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x1e939184 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1ea1d241 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ed4f129 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1eecee2a do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1f0f9e7c gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fbb6da3 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1fc7d787 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1ff10a76 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x201ab491 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x201fb979 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2027bdef ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2048317c wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x207e6cc5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x2081144b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x20872836 input_class +EXPORT_SYMBOL_GPL vmlinux 0x208aa147 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20dfd02f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x20fa79b7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x214ad6c3 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x214cc864 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x21a861ba usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x21ec3e10 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x21eed484 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x220b5875 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x2211dcde vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x221e9136 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x22281114 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x227d4d01 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x227d678a fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229df9e0 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x22ab17f7 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x22eb01e6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x23513169 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23733f12 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a05f46 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2423ff6b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2468949e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248db7e5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x2492b7b1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bc579c snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fbdc2e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x253efd08 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x255ae904 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x256678a6 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2583f49d tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x25b8b8d3 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x25c14ee7 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x25e6cb8a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2610bb99 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d5135a snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x26fe7fd5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x275a4363 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x275b6f8f amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2790007c snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x2796a377 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x27b944ea omap_iopgtable_store_entry +EXPORT_SYMBOL_GPL vmlinux 0x28281df5 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x284a59a2 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x284e6718 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28938e84 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x28948c99 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28b11dc4 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x28b31a6f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28ec8afa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x28effedd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29204af1 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x294732a4 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL vmlinux 0x29683010 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x29a798b4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x29ddeb90 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x29e24acf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x2a08a563 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2a295418 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5748c9 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5d8eb9 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a880acd kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2a9dffda crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x2ac063f8 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x2ace4d96 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2ae963bc regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2aeb2083 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2aee0989 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2b3dbb12 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2b831e9b __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x2bdeaa5d gpmc_calculate_ecc +EXPORT_SYMBOL_GPL vmlinux 0x2bec437c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2bf142d3 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x2bf5ed11 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c281127 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2c2f069b mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x2c309940 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c583ba2 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c922ac4 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2c93da68 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2c98bd2c crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1f6ba i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2d0cd307 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d154bb1 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36a8c5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x2d45db30 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2d90fae8 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x2dacde31 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2dbf2173 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2dc7a7b9 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x2dd08daa dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x2de2be79 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e341b12 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2e8ff70f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x2e9256d5 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x2eae3434 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2eba89bb kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed9efbd usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f3dba94 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9078f9 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x3004ad39 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x3029cc50 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3037218e led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30a96082 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x30ab9b86 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x30baf29a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x30d514aa hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x30e22742 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x312607e6 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3170ec63 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x3191013d gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x319d4369 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x31a4ca2a of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31bc4603 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x31bd8b90 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d1ffe8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x32587faf tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x326572a4 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x32660688 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3268de26 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x328ead51 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d3fbe1 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x32dc99ab ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x32f19cfb device_rename +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3359aeeb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3361e62e ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x337521ba inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x338a188a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x338d6665 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x339416fd ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x339681ee crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x33edefb9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x343eb67b s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3448c3c5 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348b1924 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x34f93356 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x34fbe29f get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x3511cc68 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x351cfbc5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x352f940a mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3554cc03 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x35554107 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x356d6676 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x35751de5 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x35ba494e usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x35cba215 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35cce9a3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x35faeaff xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x3601fac7 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3621735f usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a6400 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x3697ad94 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x37222a12 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x372686be raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x3740e4a4 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x374794f2 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x3769ab0c klist_next +EXPORT_SYMBOL_GPL vmlinux 0x379b5fd6 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37b0bf04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x37c4fc46 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x37deebb5 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x38a2902b usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38d8546c device_create +EXPORT_SYMBOL_GPL vmlinux 0x38d93e0d snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x3920d6db kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x394d2732 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x397da1f4 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x39a6f0f9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x39a8b807 gpmc_enable_hwecc +EXPORT_SYMBOL_GPL vmlinux 0x39b021bc pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39d90b9b firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f2b2f5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x39f33767 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3a0b12f3 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a383a2b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a71946c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a8e2b7d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x3ab80329 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b059402 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x3b1fc014 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3b770113 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b7babcc handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b83b06b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c150a48 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3c25c74a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x3c2efcfa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3c4bfe07 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c83c007 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca7d831 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d33b0fa put_pid +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d7cafb5 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3daa40bc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3dafdc20 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3db91586 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0b125 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df27184 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3e221e9f tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3e26437d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3e396d7b sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3e591232 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e647d9a ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ed78f06 mmput +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3eefe924 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x3f210e75 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x3f3e92cf omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f56b240 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f91f526 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x3fb180dd inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x3fe2caec snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x3fff6c55 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x401514d6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x401d7f01 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4049380e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x40767ec4 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4097f408 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x40a061be vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d1e635 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x4163750a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x416fffaa driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41f953c1 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4215a113 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42243aee usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x423e7b81 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x42698100 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x426ccc55 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x4295844c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x42cc4d76 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x42f10c9e otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x42f223a7 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x42f52a23 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x42f61a6e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x430353ac md_run +EXPORT_SYMBOL_GPL vmlinux 0x43150244 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x431b9be9 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4349b4e0 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x437859e6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4383c9bb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43be8c8a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x43c77fce irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x43e1aa9b inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x43e62b87 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x43e871dc md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f7dc76 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4435c123 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x44657122 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x4467d965 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x446fc726 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4490f2b0 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x451739fa user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x452d0959 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x45360c38 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45895638 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bf8905 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x45c6c8a6 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x45c89363 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x45c8c560 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46281367 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4630fbe2 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x463f11d4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4658c8ee of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467a400f device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4691ac75 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x46f5377b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472337c9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x47473410 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x477f8de9 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x478d4ff7 gpmc_enable_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47c2869d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x47d8885f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x47e7515d omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x480fabdf aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x481e9785 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x482621a2 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4864213e pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x48688b96 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48e48ed7 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x49077d0b rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x490ec519 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x49339d26 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x493e2a7c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x4946da71 omap_iotlb_cr_to_e +EXPORT_SYMBOL_GPL vmlinux 0x496b8639 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4985e88b power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x498f9e19 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49d3c15e ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x49d490fb snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x49e6fb30 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x49e7726c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4a9807ba __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a9ac309 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aafcee5 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ac0454d fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4afe8242 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x4b0041ee __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x4b182b63 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4c0fa949 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c250800 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4c4719bd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c697709 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c848371 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x4cdbcafe dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x4ce60bad ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d29d347 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0x4d31a535 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x4d81a8bd shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x4db1024a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4dd170e0 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e216a28 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ee1d8d2 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x4eefafaf debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f071807 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f3f05b2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4f5085ee iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f766466 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x4f923bd3 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x4fa357fb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4fb793c9 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fc76c35 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff5ae9f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x5001d0eb snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x50272e96 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x507ea764 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a14d47 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x50ac69a6 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x50b1d3f7 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51054ba8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x512e364a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5139a73c shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x515624d0 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x516f4d1f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x5171a293 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x518b7ae9 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x51904051 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x5192cf11 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x51ac8695 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x51e8a5e9 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x51fe81c2 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x52333b23 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x526d23d0 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x5272c92c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x528b2f0d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x528b4007 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x52c34852 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0x52c9bed3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x53292120 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x533617fc snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x534d8dd6 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537426d0 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53b806a5 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5416fe08 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5422f1a9 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x5447ed07 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547d99ef dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x549496e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a5daea i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x54d95a56 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x54e8efc2 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x54fbced4 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x55197e65 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x552a7b59 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x55323e41 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5542b913 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x554891f6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55f7f286 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563615ba crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fe064 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x56532f77 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56a31714 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x56b37044 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c06bec evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x56c472fb usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x56d19e3b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x56dcabfd blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f08224 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56fc9785 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56ffc523 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x570d920c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x57185b69 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572d7ad3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x575238f7 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5774148e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x578fe4dd cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1a422 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x57b37c42 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x57b9b0ce crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x57dabbc8 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x57f39f0e scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5849f04c udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5862701e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x58673c6d usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5868541c ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x58b68972 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x58db893f debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5906a722 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59ab8d0e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a62a5a8 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x5a6bfa63 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9d3593 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x5ab35762 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b2b510b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b5d2479 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5bb8d19f snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdf55f7 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c2306f4 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x5c3241ca tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5c564800 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x5c696ab6 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5c69d7cd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x5c82c02c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5cbd5ac7 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x5cca6f69 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x5cdd59bf stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d95a61e find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5da21c2e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e7874e4 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x5e7ccdfd rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5e805b70 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5e895489 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5eac3801 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5ecd6939 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5ed4b0c3 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5f0f63fd netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f288729 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5f3c4dc9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f9ff813 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5fd2a143 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x5feba456 user_update +EXPORT_SYMBOL_GPL vmlinux 0x604c1f18 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606098b1 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x60708697 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6106c752 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6107707d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6125ba83 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x612869e4 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x612a0513 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x614e5bbe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x6160b5aa pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616e4bc4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x617bbb8d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x61c027a3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x61c3a9cd wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x61c9654a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x6225490f usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x623fd46b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x62488bb9 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x629f271a iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x62a74e3d dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x62a92c71 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63291c16 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x634d3092 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x636fab81 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6376898d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x63778ba7 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x637f8bdd sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63d0001a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x63d89c26 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x63f4a106 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x63fe9924 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x6422b893 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x6441e6aa device_move +EXPORT_SYMBOL_GPL vmlinux 0x64902f52 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x6498314b cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x649da5c5 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x64d21c1a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x64d7b381 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x64e15403 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x6544bb1b unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x655dee64 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x65763911 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6ba6d cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dee7d6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x65e44a7d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66299361 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6651e415 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66843c1e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66cfaea5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eaecf5 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x677e8d7a posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6781165d usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x67885f98 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67bbb53c tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x67c68811 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x67cd87ce fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x67f9bcf0 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681dbc63 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x682024d0 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x682e5ed4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x685a3c6c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x68743e06 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x687b10e0 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68be26d0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x68d036f9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x68d148e2 css_id +EXPORT_SYMBOL_GPL vmlinux 0x68df6cbe snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6905f584 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69246f8e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6966cc4c bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a7732e ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x69bb804c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x69c993a1 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69d3232a crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x69e3de04 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a1c02ac ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6a33f838 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6a3769a2 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x6a4e483d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6a5432cb blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a59e6ed disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6aa45aea driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6adede61 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6b15a97c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x6b25c57c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b33a5f6 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x6b6b7874 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6bb3f5a6 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd27b get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x6bf223f1 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c30dbe9 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6c3f6995 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cc8ed55 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x6cd5ef82 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x6cedb6e6 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x6cf4f2d0 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d2e52a8 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d710848 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6d83bee0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d889da1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6db1b111 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6dcc0810 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6def1c2c crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6e09af4b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6e17a27c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6e2773ed usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6e2ad732 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6e3fd382 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x6e6d26e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6e808f8d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4381 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x6ea1d118 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6eeb3bea snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6ef1820e release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f230820 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2a6be1 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x6f3665a9 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6f684540 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff3f67c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70077535 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x702fb822 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7055a19b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x70579003 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a1be4b pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x70aa3260 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x70aad982 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70de145d omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x7132563a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x714c4ba3 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x714de325 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x715c184e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7172109f crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72247a30 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x722e77c7 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72387bb7 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7259731f bus_register_notifier +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 0x729281a2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x72a97430 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c05dd1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x72f7e721 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x72fa7d62 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x730204ef rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x732600e6 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x73369bce omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x73378d5b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x738a2ed8 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x7404fefc __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x74173153 snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x742160f3 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x743850bb tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cb6d34 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x74dca3ec usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x75022d2b hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x75087ba4 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x750c17c3 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x750ce345 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75331cfd __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x753b1947 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7550c360 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x756d3c4e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x759f9dff fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x75bc0a10 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75db81f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75fe0907 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x76472715 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x76498ef2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7684613f devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7697f56e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x769837d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76c32458 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x76d0d80f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x76dc1782 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x76df5723 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x76fab9fa inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x76fb9faf ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x770880e3 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7746c812 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x774809bc usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x77519ec3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7757c8e4 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x7766fb1d ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x77acd49a omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x77d5e52d ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x77f8cb48 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7812a68e crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x78262643 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78564e0c ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x78623ad3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x787cef89 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7880e288 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7889d819 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x78ca74d0 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x78cec40c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x78eed445 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x790ae781 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x79405553 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7975ffd2 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x79a2e326 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x79b8f1f1 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x79fbcab8 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7a4ef147 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x7a5970d1 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x7a8dd5d9 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7a93c959 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aad3e3d omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af4aaae md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1e2901 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b4b07fa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b61e663 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7b75f83f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7b876c62 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x7b9426ba snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x7ba34278 snd_soc_register_dais +EXPORT_SYMBOL_GPL vmlinux 0x7bdc6f05 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7bf957aa invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7c1d5004 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7c6445c2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7c688c79 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7cb93222 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cdf91f1 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d16c252 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7d20a3b3 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x7d219e8f seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d629ca8 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d947744 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df3e863 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x7e079edc fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x7e0941e3 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e094976 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e277415 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x7e35ce23 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x7e5949a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e67a2c1 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed99632 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x7f0c83ce blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7f1663e7 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7f3cf2f0 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f7e4d1a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7f7fff8c get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x7fa23d78 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7fa4d2bf usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7fc33b4d sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x7fd350a2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80074162 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x8064b900 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x80673d00 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x8080825f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x8088ef1b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e60f73 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80ffcd8b adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x810cb5ac crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x812f24df scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8138eb64 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x813b13df snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x819415ef irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x81e0bfde crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x82557071 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82699656 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x826dcdc9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x82a28bb8 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x82bb38a4 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x82c681ae usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x8308bb75 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x8325ced5 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839682f1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83d444d3 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x83d781df pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x841862ea ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8467d3b3 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x847e1433 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x84acac22 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x84c66aa4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x84dc77a6 get_device +EXPORT_SYMBOL_GPL vmlinux 0x84ff63aa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x851c7fb9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x85221845 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855fc557 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8589bb12 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x85a46f9f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x85bc46a3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x8600c5de sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8638de93 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x865031f4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x865d8ca2 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x866134fb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x867d61ae device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86bd8692 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86d70d49 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x86d73f84 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x86daae21 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x86e82b12 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8749cfbf bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x87502234 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x875b64c7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x876b4e3f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879ea041 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x87aece07 dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x87fe5a20 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x884e2e7f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8850a825 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x88641316 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8883a1b4 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x888725b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88cc3888 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x88ddc075 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x88fd5b65 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x891a672d d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8937036c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x89a88e5e wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89ec5e02 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x89ee3924 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a0ba6fb seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a682cd7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8a73b83d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x8a81d7ce regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8988e5 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x8aa79491 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x8aacc458 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x8ab59b92 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acb9a60 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8ad06566 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ad888f5 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x8af16f3a omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b0690f9 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b36869e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b75f310 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8b8940a0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x8b8b2d56 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x8bc5c0fd ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8bf3fd54 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2529e7 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8c67a06c tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x8c9b2d96 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c9f98de fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x8ca62dd7 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8cb5d1aa omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x8d16ea86 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d204014 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8d6137d0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8d70307b ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8d9fd984 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8db314f7 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x8db34252 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x8e37590d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e5db8cc adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8e8cbaea del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ec076b7 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ec2346e crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x8ecb5436 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ed8dcbb pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8efe8ef9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8f0977fa snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x8f0dbd9a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x8f1f0c1d ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f2ca63b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8f4bcc13 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f9d42a8 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8f9f11f4 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x8fa5a4d2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x900b37e2 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x90136cd7 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x901a9c5f s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90580df2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9070dee1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x907e81b0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x908e4389 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9097e3b3 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ad7ace __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x90e148df spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x911236cf ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x9119fd17 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x912f2a16 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x917fa49d ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918b3a3e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x91c99834 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91e8912a __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91eba6bc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x91f3bf68 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x91f613fc dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x921af38a platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9229bd49 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x92425533 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x927094fd vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x92973b0b amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92b33a78 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c1f4e7 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d73cca __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x93669a43 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x93cca605 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93d9bcb9 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x93ead0c4 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9400f424 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94709640 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94acb68b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x94cd2785 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x95165450 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x95243ba9 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x954a5129 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95617a98 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958207cf klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9587b9ae adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95f392de snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962193c1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x966caed9 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b28d4d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x96b5e07c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x96b66aef sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96ea0eee crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9709ecae devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x971d3069 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x971dd470 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x97464789 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x9746e8b3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x97733158 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x97885322 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97c01e00 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x9804a5aa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879f303 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x98b552f4 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d44bae tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x98e29de2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98e5f413 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x990e2856 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9938e51e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x995b38b2 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99724d01 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x99a0d0c4 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x99a842de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a450439 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9a7d64ea sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9a835c60 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a857da6 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8b7d29 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x9a9899cc snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x9abb5d85 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae184a7 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0298dc snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x9b2a2d98 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9b2b6c24 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x9b7f27de pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba7731b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9bc752b9 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9bcf0ce6 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x9be5daea sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9bface00 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9c0277d1 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x9c649e42 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9c885188 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x9cbf9b63 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9cc3d15b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9cf647e7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d673fbe ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9d69ab07 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dae7e73 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9db7d7cf disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e01b1d9 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e3f6c96 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e6dfe49 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9e87927e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e9efb53 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9ea2868b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x9eaefd87 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9eeb0ab7 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9f0c013e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f150c86 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9f183e2a mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f63983e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9f6a0c7f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0380a86 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa0557c18 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa063ab79 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa0a39c48 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa0da1ce5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa0e662fb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa136127e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xa1386959 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa1445858 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xa153e3fe platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa176673d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa185ed07 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e5b72c register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa1e84956 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xa1f0c872 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xa2370cee dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa25b58d7 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa26a1589 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2905739 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xa2dcf5c0 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xa2f65fb4 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa30a3ebb n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xa346f784 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0xa378c472 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d59b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xa3a2ec52 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa3aa7f1d ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xa3c3df61 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xa3cdee26 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa444a3b1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa451f59c anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa468db2c fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa475a46e da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa491d494 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4b37423 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa4b555fa spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa55d036e md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xa5692e9b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa570a5eb usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa57a69e2 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa57d5326 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa59a28b7 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa5dd6fae arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f01105 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa5f96ff6 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa60b9674 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63bce05 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xa64eeea7 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xa65dcd59 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b2ba10 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa6b79a2d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa6f29352 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xa72081c5 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa74cbd58 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa74e6f13 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xa754c65f sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa784604f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa789a7e0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa796c168 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a702b2 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xa7beb0c4 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xa7c27c1d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa816a9d2 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xa82a9b08 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa82d8a2f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa8598f84 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa89f1023 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9036c69 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xa93b8f46 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa9593110 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa9bd6c1e armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2df28c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xaa4e2c6e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4fed3f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaabce0a3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaad5f73b mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xaaeec927 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf917a9 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xab18e6bd scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xab1de347 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xab3aeb1e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xab3f65e1 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab908256 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0xac1e1cc7 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xac280c5e __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad018b6c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xad0308cb pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad08c927 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xad111400 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xad1e71ed snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xad357e7a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb683f8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xadbf3ace snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadeb262b proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xadf3fd2b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfd511e device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xadfdf721 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae74fe01 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xae836d41 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xaea4c908 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xaeb71d91 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xaebc643e bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaf14e750 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf4be96b sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xaf81dc1f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xaf858edf ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xaf941e76 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xaf9aba57 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xafbd7434 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xafd88ebd crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xaffb35c3 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb0074109 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xb02f21dd usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb0527695 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xb06177c0 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb118ec54 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1874d63 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d1b8d7 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xb1e54e26 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1f99848 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb21a5023 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb22703d0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb277efa1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb2b9afe4 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb302bea9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb36495b4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xb37159c6 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb397682c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xb39cf1af tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b7c9a3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3bacfc9 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xb3d01769 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb3d2ba40 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb3ece8f1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb3f09b1e crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb4005f68 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xb4279733 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb4541b91 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xb46fee40 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb47b6e20 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb498d149 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb4b8624c cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xb4df91eb snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f200b0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb503120f bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb5186e07 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb527772c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb55756d9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xb558a2a0 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb5620e80 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb581e00b tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b2f88a omap_install_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0xb5b365c8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5edd6eb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6202a42 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xb645a840 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6870559 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c900f1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb6ddb7b3 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xb6f44ffa ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb6fa65c7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb714ac0e dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb7e0ae1a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xb7ed482d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8088e24 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb8371798 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb844f63f scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb851c4bd sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8520f29 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb859f63a crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xb87c2de5 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb88cdab9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb894cb6a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xb896c6e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb899d396 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8a7d2e8 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb8e5d14f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb8f5a09f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb956ebef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb97ca623 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb99fdc44 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cffa6f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fdc905 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb9ff5306 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xba0bcd72 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xba267130 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xba34f956 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xba79ae5e init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbad6acb2 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xbae26d6e ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb04afae bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1f28c1 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbb2e3bef page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb9edd23 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbb39e14 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbbb3cf2b omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xbbd70e80 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbe68185 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xbbfda9f2 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc08b7ef ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc173cef sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc60a66c of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc922a2e gpmc_calculate_ecc_bch4 +EXPORT_SYMBOL_GPL vmlinux 0xbc993b00 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf0d703 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbcf9eaa0 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xbcfa579c snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xbd07a52f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5ffa40 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbdbecb37 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xbdcd31b6 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2ad49 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe076729 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2a1c2d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe2fa7c7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbeaa245b kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xbecdaf5c snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xbedd491e tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbf01fe2f crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbf16ca06 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbf1d34cd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbf5af391 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbf784edf serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbfaeed32 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbfb02862 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xbfbcf60c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbfcef4b0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc01bdf1b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc02d498d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc07681e8 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0907d22 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc09632ce usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11777ad gpmc_calculate_ecc_bch8 +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc159056f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1b6acb3 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc1d72a88 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1f47c7b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xc1fa0a5b ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc1fe8f14 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc20b2b17 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xc20f563e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc218b95f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc270470a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a8891a mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc2e59f9f snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37bc5cc __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3925583 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc40f5857 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43d15f4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xc4447f1b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4584a3b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc45ed40a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47fd9fd pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49aa110 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc4a1aa1e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xc4a86265 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc52c8dbf md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc52e5023 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc546abb6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc56b7536 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc5aec9d5 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xc5def406 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xc5ebe28a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc60a44da da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc60a730b klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc60e92ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc664b474 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xc68104d9 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xc68a13d1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc68b0f4b wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xc694b443 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xc6966361 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xc6da4e8c clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc70aedca ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc71e8133 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc753db35 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc768bd7e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7fc53ef raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc810cfc6 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc8280518 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8862b9f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc88e04b2 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b9e927 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc8cdc6a6 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc8d81b71 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xc8e330a0 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xc8ea63a2 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9223a40 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc9256583 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9497af4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95cb807 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc97504d7 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc977635b wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc98b3154 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc9ab1102 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc9b449a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc9cd42b0 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0bdf81 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xca189247 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xca702e7e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcaac2b7d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacb0de2 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xcaefdcb2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb273676 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcb42a318 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xcb6984dd md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcbcaeebb of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc026731 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc7e062c fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcc84417f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcc94bf42 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcca56d7b anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccc2c2c5 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd08b49 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xcce55f45 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xccf7ff54 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd02854b usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xcd1c5435 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda231e4 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xcdb32b8b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcdb4fd36 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xcdb79b68 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde1ef7f tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xcde8df00 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce36ebdf tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce48b8d3 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xce57e9cd crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce6008db class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce741c16 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xcee4954b ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xcef8c05b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcf63a796 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xcf694cb6 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf74c14d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcff6f0a4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd009ac08 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd0f526a1 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd172cfc7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd1791357 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2119ac8 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21812f3 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd21e31b3 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd225c73f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd22f2596 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd26ea448 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd279dc25 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd281edba tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd28e58ef snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2e33a2c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xd30799da debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd315f0ac wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd32dbdb5 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e3da93 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd3e61495 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4247748 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd429a109 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd45c9f79 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cbd15c wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd4cdb201 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd51940e9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd529100f snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd547042f sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xd54ede1c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xd553b0ec usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd564f0ec debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5a7f2fc skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd61f98bf tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd6448c0f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd65a4f41 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67d8256 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xd68f7e35 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6a36d45 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xd6a6e14a led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c83e16 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72360e9 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd7358239 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xd7577f9a crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7a9f0a6 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd7cd31ea max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250b0e amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd8672646 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd86753c3 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8804eaf power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8c21efa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd8d4bdb4 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd9410817 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94ee55a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xd956cdf6 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd9574f05 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd959f16c ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd9607631 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xd9b5a2c3 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xd9d4bbc2 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd9d65764 snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9e44173 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9eef782 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda1c90fb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6742d3 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xda7b1989 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xda9a2bd3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xdaa01800 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xdac023ad __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xdad1184e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xdae09be4 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb3e5eef attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb882e90 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba95fd5 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0xdbaad53f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdbf3a960 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1b73af class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdc42ad7e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcd178a2 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xdd026722 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4380f5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xdd6a1f6e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd9c1272 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xdda21a9d tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xddb4d139 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xddb596e5 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddedfa31 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xddf95a5a tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xde257f3f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde2c2c9e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde48b978 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xde4f3a80 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xde84b2d0 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xded371cb fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdef7add8 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf32125c device_register +EXPORT_SYMBOL_GPL vmlinux 0xdf4e62b9 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xdfaf30bf hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdfd20550 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xdfedc4ae skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01984bc ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe01a792a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05f57e2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe072b5f5 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe0791438 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xe07a53ce sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe07f3a63 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe083fc1e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe08bea94 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe0b79e0c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe0b8da11 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0e027c2 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe0e39d56 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe0f1e53f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe13eaeb5 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe17edda5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe1cf4e64 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe20d2695 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe226d805 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe22d25e4 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe2445b46 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe2583226 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe2799099 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2a4dded dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe2a84110 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe2b68731 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe2bb89e1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe2c1a788 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3292a91 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe35bac32 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xe37b0327 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe37f2e4f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3cee0d1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe3e75a53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xe3f5c4c2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44d88a1 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe48890bc tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe5144bd6 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe5219b78 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe525f815 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe548e50a mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xe56554a8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe5844625 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5ad30e0 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe5b68fc7 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5d05917 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f93cc2 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0xe605815d snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xe608a45e cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe61caa9a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe642aacc sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6bebcdd __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7170d55 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe738a885 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xe74e1083 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77d02c7 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe78beb9c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7c52fb0 snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xe7d5bb66 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe7f41db8 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe7fcd9b4 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83e45cd ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe86049ab sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe8611953 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8cffca8 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9676c91 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe967d7af sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe9695e69 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xe9c2f46e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xe9eaf9eb platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xea061af2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea77fc68 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xea8dc12e fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea8df3d3 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xea925f16 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaeb4fc6 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xeb42a272 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xeb4f2ebe bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xeb5d2540 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb157c8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xebd019c4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xec03a6f5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec39be5f fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec4f1f55 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xec4ff8d4 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xec527b61 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xec77e5d1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xec9bb35f sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xeccd71f7 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xed053da9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xed16a780 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xed62b65b get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedc49414 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xedf0bb65 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xee088f76 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xee315eb0 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xee4ae36d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xee4d3fe2 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xee4d7720 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xee572364 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xee6446bd usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xeea973bd crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xeefd62e1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xef3eefaa snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef776bdb crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xefa314a5 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL vmlinux 0xefa6a97b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xefc24632 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xeffae3fe ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf03eb403 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf052554c omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf0538c24 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xf092aa80 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xf0b7be48 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf0c5456d elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf0dcb4b1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf0f238e0 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0fe30f5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xf134b947 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf13c59a2 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xf1620b5e sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1980e2c crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf1ae3d2f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d69450 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xf2847438 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf29a92d1 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xf2a80b4d cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xf2ad93cb max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2b92053 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf2ceff1b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311d30e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf373bc99 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf389d88d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf3a00778 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf3a110d4 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf421b4f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf445da38 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf476e1ed __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf4831ffe crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf4921751 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4a85d2b single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf4cfbad1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5483370 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b547e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf5a1cf05 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf64d379c filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xf69da358 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf6b07ab8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f67ae1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf742d1bd ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf76949be snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xf7d4460e sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0xf7dd8dc5 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf80e4473 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf816d140 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88670e4 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xf88ae18c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf896a45d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf8a5c3cc crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf8bd2331 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9000681 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf908b8da blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf90b8bc2 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xf9139d3a inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf95481d3 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d046f0 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xf9f0aaee shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xf9fe284d usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2b8e24 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfaa44593 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xfad315cf snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb33a69b dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xfb4364df __module_address +EXPORT_SYMBOL_GPL vmlinux 0xfb475af9 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfb487b0e unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xfb5a008a ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xfb66a1b4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb4b460 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbc4bf09 device_add +EXPORT_SYMBOL_GPL vmlinux 0xfbeda43c devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc026e64 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfc19dda9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc478a68 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc58b637 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc597d7a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xfc6e4819 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xfc883ef9 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xfc9378ea crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfcaba808 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcbc914b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce24ea0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfd1f9a61 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xfd5152ba kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xfd6cd540 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xfd973387 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xfdb1aa34 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdbd3cb1 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdebea65 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe04176d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xfe16f0de relay_open +EXPORT_SYMBOL_GPL vmlinux 0xfe46dc40 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfe6a4a8b blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe79862f usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfe97e911 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3bb27 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed21d23 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfef1b26f stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff047d96 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xff1917ca ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xff1ae43a inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5e4017 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xff6acd9a ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xff73fa29 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xff7d34c2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffbe0dec dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffe0e6a4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1fa21 tpm_gen_interrupt --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armel/omap.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armel/omap.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armel/omap.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armel/omap.modules @@ -0,0 +1,2432 @@ +6lowpan +6pack +8021q +8250_dw +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +a3d +a8293 +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acecad +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +afs +ah4 +ah6 +ahci_platform +aiptek +aircable +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +alphatrack +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amba-clcd +ambakmi +amba-pl010 +amba-pl011 +amc6821 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +ar7part +arc4 +ark3116 +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +ath +ath3k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atm +atmel_mxt_ts +atmel_pwm +atmel-pwm-bl +atmtcp +atxp1 +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +ax25 +ax88796 +b2c2-flexcop +b2c2-flexcop-usb +b43 +b43legacy +b44 +bas_gigaset +batman-adv +baycom_epp +baycom_par +baycom_ser_fdx +baycom_ser_hdx +bcm203x +bcm3510 +bcm5974 +bcma +bcm_wimax +befs +belkin_sa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bnep +bonding +bpa10x +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt819 +bt856 +bt866 +btmrvl +btmrvl_sdio +btrfs +btsdio +btusb +btwilink +bu21013_ts +bw-qcam +c67x00 +cachefiles +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +carl9170 +cast5 +cast6 +catc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chnl_net +cifs +ci_hdrc +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cma3000_d0x +cma3000_d0x_i2c +cmtp +cobra +coda +configfs +cordic +core +cp210x +cpia2 +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +cs5345 +cs53l32a +cs89x0 +ctr +cts +cuse +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx24110 +cx24113 +cx24116 +cx24123 +cx25840 +cx82310_eth +cxacru +cxd2820r +cy8ctmg110_ts +cyberjack +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +davinci_cpdma +davinci_mdio +db9 +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +de600 +de620 +decnet +deflate +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dib9000 +dibx000_common +digi_acceleport +diskonchip +dlci +dlm +dm644x_ccdc +dm9000 +dm9601 +dm-bufio +dm-crypt +dme1737 +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +dummy +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 +dwc3 +dwc3-exynos +dwc3-omap +dw_dmac +dw_mmc +dw_mmc-pltfm +dw_wdt +dynapro +easycap +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +eeprom +eeprom_93cx6 +eeprom_93xx46 +efs +elo +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +emif +em_meta +em_nbyte +empeg +ems_usb +em_text +em_u32 +enc28j60 +enclosure +eql +esd_usb2 +esi-sir +esp4 +esp6 +ethoc +evbug +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71882fg +f75375s +f81232 +faulty +fb_sys_fops +fc0011 +fcrypt +ff-memless +fm_drv +freevxfs +fsa9480 +fscache +ft1000 +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_multi +g_ncm +g_nokia +gp2ap002a00f +gpio +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +g_zero +hampshire +hanwang +hci +hci_uart +hci_vhci +hd29l2 +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +hfc4s8s_l1 +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_st5481 +hmc5843 +hmc6352 +hostap +hp4x +hpfs +hsi +hsi_char +hso +htc-pasic3 +hwmon-vid +i2c-algo-bit +i2c-algo-pca +i2c-designware-core +i2c-designware-platform +i2c-dev +i2c-diolan-u2c +i2c-gpio +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +i2c-ocores +i2c-parport +i2c-parport-light +i2c-pca-platform +i2c-simtec +i2c-smbus +i2c-stub +i2c-taos-evm +i2c-tiny-usb +i2c-xiic +ibmaem +ibmpex +ics932s401 +idmouse +ieee802154 +ifb +iforce +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imon +impa7 +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +input-polldev +int51x1 +interact +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ip_gre +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +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_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +iscsi_boot_sysfs +iscsi_target_mod +iscsi_tcp +isdn +isdn_bsdcomp +isdnhdlc +isdnloop +isight_firmware +isl29003 +isl29018 +isl29020 +isl29028 +isl6271a-regulator +isl6405 +isl6421 +isl6423 +isofs +isp116x-hcd +isp1301 +isp1301_omap +isp1362-hcd +isp1704_charger +isp1760 +it87 +it913x-fe +itd1000 +iuu_phoenix +iwmc3200top +iwmc3200wifi +ix2505v +jc42 +jedec_probe +jffs2 +jfs +joydev +joydump +kafs +kalmia +kaweth +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +kxsd9 +kxtj9 +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-atmel-pwm +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-pwm +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gl5 +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +libcrc32c +libertas +libertas_sdio +libertas_spi +libertas_tf +libertas_tf_usb +libfc +libfcoe +libiscsi +libiscsi_tcp +libsas +lightning +line6usb +lineage-pem +linear +lirc_dev +lirc_igorplugusb +lirc_imon +lirc_parallel +lirc_sasem +lirc_serial +lirc_sir +lirc_ttusbir +lirc_zilog +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpddr_cmds +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mailbox +mailbox_mach +map_absent +map_ram +map_rom +matrix-keymap +matrix_keypad +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max63xx_wdt +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +max8997 +max8997_charger +max8997_haptic +max8998 +max8998_charger +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 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +mem2mem_testdev +memstick +metronomefb +metro-usb +mg_disk +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mk712 +mkiss +mma8450 +mmci +mos7720 +mos7840 +moto_modem +mpoa +mpr121_touchkey +mpu3050 +msdos +msp3400 +mspro_block +mt2060 +mt20xx +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd_dataflash +mtdoops +mtdram +mtdswap +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mv_udc +mwifiex +mwifiex_sdio +mwifiex_usb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +nandsim +navman +nbd +nci +ncpfs +net1080 +net2272 +netconsole +netprio_cgroup +netrom +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +n_hdlc +nilfs2 +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 +n_r3964 +ns558 +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvram +nxt200x +nxt6000 +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +of_serial +old_belkin-sir +omap +omap2 +omap2430 +omap4-keypad +omap-aes +omap_hdq +omap-sham +omap-vout +omap_wdt +omfs +omninet +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +p54common +p54spi +p54usb +p8022 +p8023 +palmas-regulator +pandora_bl +panel +panel-acx565akm +panel-lgphilips-lb035q02 +panel-nec-nl8048hl11-01b +panel-picodlp +parkbd +parport +parport_ax88796 +pata_arasan_cf +pata_of_platform +pata_platform +pc87360 +pc87427 +pcbc +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pcwd_usb +pda_power +peak_usb +pegasus +penmount +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +pl330 +platform_lcd +plat_nand +plat-ram +plip +plusb +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pvrusb2 +pwc +pwm-beeper +pwm_bl +qcaux +qcserial +qinfo_probe +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r8712u +r8a66597-hcd +r8a66597-udc +radio-i2c-si470x +radio-keene +radio-mr800 +radio-si4713 +radio-tea5764 +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rds +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfcomm +rfd_ftl +rfkill-gpio +rfkill-regulator +ring_sw +rio500 +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2500usb +rt2800lib +rt2800usb +rt2x00lib +rt2x00usb +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-pl030 +rtc-pl031 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8187 +rtl8192c-common +rtl8192cu +rtlwifi +rts5139 +rxkad +s1d13xxxfb +s2255drv +s5h1409 +s5h1411 +s5h1420 +s5h1432 +s5m8767 +s6e63m0 +s921 +saa6588 +saa7110 +saa7115 +saa7127 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +samsung-keypad +sata_mv +sbs-battery +sca3000 +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci-pltfm +sdhci-pxav2 +sdhci-pxav3 +sdio_uart +seed +seeq8005 +seqiv +ser_gigaset +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sha512_generic +sh_mobile_ceu_camera +sh_mobile_csi2 +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc911x +smc91x +sm_ftl +smm665 +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc911x +smsc95xx +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd-aaci +snd-ac97-codec +snd-aloop +snd-dummy +snd-hrtimer +snd-hwdep +snd-mixer-oss +snd-mpu401 +snd-mpu401-uart +snd-mtpav +snd-mts64 +snd-portman2x4 +snd-rawmidi +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-igep0020 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-omap3evm +snd-soc-omap3pandora +snd-soc-overo +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sdp3430 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-soc-zoom2 +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-virmidi +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +sp805_wdt +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 +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-omap2-mcspi +spi-pl022 +spi-tle62x0 +squashfs +sr030pc30 +ssb +ssfdc +sst25l +ssu100 +st +st1232 +stb0899 +stb6000 +stb6100 +st_drv +stinger +stir4200 +stkwebcam +stmpe-keypad +stmpe-ts +stowaway +stp +streamzap +stv0288 +stv0297 +stv0299 +stv0367 +stv0900 +stv090x +stv6110 +stv6110x +sunkbd +sunrpc +symbolserial +synaptics_i2c +synaptics_i2c_rmi4 +synaptics_usb +syscopyarea +sysfillrect +sysimgblt +sysv +target_core_file +target_core_iblock +target_core_mod +target_core_pscsi +tc3589x-keypad +tca6416-keypad +tca8418_keypad +tcm825x +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tekram-sir +test-kprobes +test-kstrtox +test_power +tgr192 +thmc50 +ths7303 +ti_dac7512 +tidspbridge +ti_hecc +timb_dma +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_tscadc +ti_usb_3410_5052 +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmio_mmc +tmio_mmc_core +tmio_nand +tmp102 +tmp401 +tmp421 +toim3232-sir +touchit213 +touchright +touchwin +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttpci-eeprom +tua6100 +tua9001 +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +u132-hcd +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +uio +uio_pdrv +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 +unix_diag +upd64031a +upd64083 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vgg2432a4 +vhci-hcd +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dvb +videobuf-vmalloc +videodev +virtual +visor +vivi +vivopay-serial +vmac +vp27smpx +vpfe_capture +vpss +vpx3220 +vs6624 +vsxxxaa +vt1211 +vub300 +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +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 +whiteheat +wimax +wire +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgmac +xilinx_uartps +xor +xpad +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/armel/omap +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/armel/omap @@ -0,0 +1,10350 @@ +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x13e5ff7c omap_mbox_msg_send +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x16eee29b omap_mbox_register +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0x849d64bb omap_mbox_get +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xc3453d67 omap_mbox_put +EXPORT_SYMBOL arch/arm/plat-omap/mailbox 0xdbc75fe3 omap_mbox_unregister +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 0xa0439f1c bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x7730f22d drbd_conn_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0xaf27bebf drbd_disk_str +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x714ea5c9 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb92b9cd5 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xc5c83467 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd2cdf707 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0235af6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/dma/dw_dmac 0x2e74f758 dw_dma_cyclic_stop +EXPORT_SYMBOL drivers/dma/dw_dmac 0x68dd020b dw_dma_get_dst_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0x8bf3275d dw_dma_cyclic_prep +EXPORT_SYMBOL drivers/dma/dw_dmac 0xaa3c3cf8 dw_dma_cyclic_start +EXPORT_SYMBOL drivers/dma/dw_dmac 0xb72c38c5 dw_dma_get_src_addr +EXPORT_SYMBOL drivers/dma/dw_dmac 0xc3d0c9a2 dw_dma_cyclic_free +EXPORT_SYMBOL drivers/dma/pl330 0xbdd17dd1 pl330_filter +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0060546c drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x006c1ef8 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0285e5a8 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02a77f75 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x035cd71b drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x047db860 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a3af60 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8306d drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0587de38 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x075386e7 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08e15c30 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0bd0e418 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d3cdf26 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e7433b6 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f8dc681 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10696ac8 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x10b09bfa drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11073671 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1128ae3e drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1225741b drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1387c10c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13a3b414 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x187e37dc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19bfca83 drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c73af75 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d49aba8 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d696b88 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x211eab87 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2143f155 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cc953e drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x24795a66 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25b59a9a drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d5ab16 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28d6581e drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cad8c36 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2cfce9de drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d807df8 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ebe5eb2 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f0a366f drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31389d0a drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31637354 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x316ce026 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x32c32fcb drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x331b069f drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3345496d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x37cd8b5a drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38954afd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3901fdec drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393c6934 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39c8ec8d drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3a6f9c71 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aac3130 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b69d5ed drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3cec9166 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x423dcca1 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4323a70a drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x434a6b41 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44d209d5 drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x461456ab drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48eb5969 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49158f33 drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x491d291f drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4945a3ca drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x497b8956 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ab691c3 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4aeef5a3 drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4afa0c15 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4badb0a5 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 0x4f5de301 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5165455b drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x566d5865 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58da9909 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c126ce6 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5dbdc659 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e702501 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5eb7510b drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61dce832 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x64d5ffca drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65dc65b3 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680fa42c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68c5d096 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6978511a drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a7fb5e3 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6e0771 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x74695644 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75ddd02d drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x768fa481 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x771b5fe9 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7832825c drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79de4b45 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7adcd32f drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b4797cc drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b650615 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80ae84ef drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8215a1a5 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83b0d031 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x840ffb0d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x851c1ded drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8579febd drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87530f3d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x878072a5 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e9fe78 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8909381f drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89586ed8 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a35be05 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8a6a5ff5 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0b4b57 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c6b6b6d drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8cc89459 drm_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 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x908d6be2 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92689148 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95232db1 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95675b02 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a0b35d5 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9fd0b2 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4edb20a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa506bb1e drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa562ecf0 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5a09d50 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5d88b40 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa604b764 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7179c31 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa914f465 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xabc68ace drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacbe2969 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf4b77dc drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb024bcb2 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb110a287 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb24d01f5 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb42dda7e drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51d4aac drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb77a0f72 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb89ebf9c drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd2dad35 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd6f1fd5 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf696f2f drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfbebd3e drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfd36329 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc33a4be0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc3e4cb99 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4259c55 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc44030f6 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc463da93 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc732ad3c drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8231556 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc91a1d16 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb88fff2 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbda0d67 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf1ef400 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfce3985 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd106ef19 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2721d6d drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5233a6b drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd5cc9054 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7d4d559 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd88db039 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd90bc8f8 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9a61608 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc63c32b drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdcdf36bb drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde64898a drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdfeb1409 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0406bd4 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe181f7ab drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4d8d4ac drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe532ac34 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe626479a drm_ioctl +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 0xe8298af8 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe8e66240 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe94bf7f2 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xec2c6818 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee8a71c4 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c803c3 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0c91262 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4b6c638 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4babc53 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbe77711 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfc7f9aee drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff7ec5ef drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffccb806 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x083d750c drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b4fad96 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x13f43665 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x16e33be4 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x17dd8d26 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x20ab47e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2cf76339 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a7ef66a drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x41e0a579 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x47d04aec drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x489a33b7 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x48d58304 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x492544f1 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63c19003 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b420d49 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b9aa65e drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6e87ecbd drm_helper_resume_force_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 0x8441eee0 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8447f2d1 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8505d905 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8594ecae drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9123181f drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9ed1ebda drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac68c885 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfd1e4ac drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc44008b4 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc747498a drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd6e6feb5 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xec4e25f6 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf37e153f drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf527670e drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfb66ef17 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x3d41d164 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7c59dec6 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x97235d18 drm_get_usb_dev +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 0x1262ebcd 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 0x01fb8bce i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0x5301cc63 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xe49cbcbb i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x3436c5ee i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa3078692 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/iio/industrialio 0x177e9981 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2caf16a4 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x3d9cf42f iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x46ab79b7 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x4cc75a5e iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x5cf690f5 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x5fe927e2 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x6a08a14c iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x6b069003 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x6b0729dc iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x75b533e4 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0x82bca169 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x8871b32e iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x90ea0377 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x91bc0a3b iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0xa57ab762 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6bf5879 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xaf0a8f8b iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xb74b6aba iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xbbab385b iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xc7fa0bdc iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xebcbafdf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0xf4491e2a iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xf4e947ee iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa3d6266c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xf31bfc97 iio_kfifo_allocate +EXPORT_SYMBOL drivers/input/gameport/gameport 0x02347604 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x43265263 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x5602be9b gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x62fcf043 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x978266e8 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9907d492 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed8baf43 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf28928aa gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xf9c43465 __gameport_register_driver +EXPORT_SYMBOL drivers/input/input-polldev 0x0cb6caf5 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2309b44e input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xb7e1a448 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xd4ffa98a input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc4df77ab matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x17c7c2b9 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7866d5f4 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x7ee705c2 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xef7a5879 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 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd5c9b50d cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x13867411 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7cc3fddb sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8802123a sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa8620f71 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xb3b619c3 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbf0df5e8 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x6c0207e8 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x923eb0ba 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 0x13005998 capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1990dc8d capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x1b8d4632 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x337e60ef capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3cb74ac9 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x40d15df4 attach_capi_ctr +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 0x647754fd capi_ctr_resume_output +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 0x8521b19d capi20_put_message +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 0xaec8f006 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb19fda8d capi_cmd2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xb60e5e5f capi_cmsg_header +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd05a0615 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/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 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 0xf804fbdb hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x1a9edca2 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x74e78d96 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xe643a5e4 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 0x055be6ce get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x10a75f2e mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x12cde685 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x16aee51e mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x16ddd6e1 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x21519c1b mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x21882bfd bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2a2de6aa mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f3a4311 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x45bcf160 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x497cf483 mISDN_ctrl_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 0x5628828f mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5813fdfa bchannel_senddata +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 0x69831a4b recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x7335e5ee recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8010fca3 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8d8bc8ec mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x913d8bd4 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9d7607b4 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb0327233 recv_Bchannel_skb +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 0xdc06dc30 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xddd937e1 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 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfd92591f 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/dm-log 0x393f59af dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7efcc2ee dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0xc6a5be42 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xfa42a911 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x22cdbfba dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2490901e dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x3e87c42b dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x6624ffbc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x67e2b910 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc3a3d512 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x13319403 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x33bc4fae fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa0f304ba max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xdcbfa503 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x79291b35 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x98c7c064 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x2e9a5910 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x6462e5e4 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x6848fd7e tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x6923136e tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x6f563389 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x60d54087 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8c9887fd xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2307a301 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x05d01c89 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1f7b27a4 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2af509c4 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x3dcc67eb flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x41c941ea flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x591c0471 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x59e90e30 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x604f68f4 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x742373a9 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa2586521 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd32bdf03 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xd8f14276 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xdbfaa261 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c98f0ae dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1f363415 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x258aaf68 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f2786d0 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x335fa807 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x35c754a3 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f0c426f dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x518c4119 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x542877ea dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6131d762 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6225816a dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x66e6d383 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x687066ad dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6c7577a0 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x746b02ad dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7a854509 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x83a2ef94 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x883c17c6 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x90b3c91f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x961239a7 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x98d95870 dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9ae3f6da dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xae55024a dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3297434 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xba616e61 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbfe37d06 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc28df96e dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe2580c5c dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9164bec dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xec9a09d4 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xed9e5ee7 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf487376d dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf5f9b07a dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfb25f454 dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfd1885bd dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x27cfeeca dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x758da59b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8393aeb4 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8e124dd0 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x98b1e696 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xa188b41a dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xeec875af dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xeda1384f af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x19a923b6 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1b782e2d dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1ef3ef6a dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x5ae9295e dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x70b0593f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xa1e13e9d dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xae8d28a2 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb293ccef dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd07d2110 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xef65a93d dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xfd3365f0 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0xe19de7c7 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf6f61250 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x43d2e5f0 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xccbcf856 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x11b0711f au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x29711556 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x2a247cdd au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x59fed5a0 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x8b7fe401 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xae3935fc au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xaf2dcbbf au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf858bf3e au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x45849b05 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6e7a42dc bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x34c4a817 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x8fa2912d cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x7b6bc589 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x72f1e393 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xd984475c cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x36eb9209 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x4eb17599 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x69c16635 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xf1b6d7e8 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39732d0b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x859b9d66 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8ce58e6c dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9543d443 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe181d0ed dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x21add01c dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2513bde1 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x30c01d60 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4cc5ff49 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x54bc864a dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7798ae01 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7e4ecfee dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9ed95484 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafb6a46d dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbbc5ece1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc07eb9de dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcc82be17 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd2491654 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xea31e655 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xf9331e85 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xaa6ec7ff dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x268a8973 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x543f4b82 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x5a30af99 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9e6066f7 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xb27f19fd dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xba33af2d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x449aa6eb dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x920f2531 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x93fc9b7a dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xbeefa300 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x02aa8e95 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x084e4453 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37f8056b dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x40753891 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5274bb05 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x56cc0972 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cbd6a5e dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x62c876d7 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8aed8938 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9fa5c44f dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc09c4a86 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6b65100 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd9c4dcfd dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe6ed6840 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfbc4b404 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1bd13fcc dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x21945e37 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x25f397d8 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c814b88 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3f951716 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x477d97e9 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e557ece dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x581f00da dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa16f3ca9 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa1b46b05 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae15401b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb79d60e5 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbcabd0ea dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xbd8a3498 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcd0e32c0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd82974d9 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdc815e57 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe6b6bdd1 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe91fff18 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x378ca184 dib9000_fw_set_component_bus_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x37e88b87 dib9000_get_tuner_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x3eef19f3 dib9000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x4b8f6169 dib9000_get_component_bus_interface +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x53c06d19 dib9000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x54779f9e dib9000_fw_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x590a5884 dib9000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x637e0d61 dib9000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0x6492fb4f dib9000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa109ed1e dib9000_set_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xa663e763 dib9000_fw_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xc87ce035 dib9000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xd6f9b54a dib9000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib9000 0xfedaa2e0 dib9000_firmware_post_pll_init +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1d487f7f dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x253d3307 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5ec442a5 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x9717ce4f dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xb9b7f1c8 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x6daee061 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xe4e0984b drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0xf11a32f6 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x636905ba ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x86a9d32e dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x4c3b91d0 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/hd29l2 0x396418f9 hd29l2_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb361220f isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x45dc56cd isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x5d94e2f5 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xb2875c0e it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe9ff3f21 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x27778208 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xf0bb9071 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x0f46457e lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x6c127e65 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x8686fdcb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gl5 0x141e3b0b lgs8gl5_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x9ce94bde lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x15a351cb lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xdc50a1f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe0748db4 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x7006484e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x12e74b84 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x7b121383 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf621f83f mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xb31c2b72 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x64cef4da nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0x7bffbc1d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xf889714f or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x0ee05508 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x32b13dac rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xcf994fda rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6f717925 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x8e7a842c s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9e384e08 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xfe01aad2 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1432 0x1cb2eafd s5h1432_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x68599ecd s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xad579095 si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x3a993e92 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x9d399727 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x20afca7e stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xae5c1dbc stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xd26b5e18 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0xcda4a363 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x783555a0 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xa3efcc0a stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x09aead6c stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x93643543 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0x548df548 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xd88b5451 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xecd7255c stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xe88b348e stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x88528572 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x221a2a72 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xc17ab9b5 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x8ed3a496 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x9259eeaa tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xf260a725 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x67369410 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xa34a4fbd tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x41a3e8bc tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xbb3c1553 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xd5f987e7 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x35c7bbf2 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe6900c79 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xedf90595 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xee189c4c ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x4db9c612 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfa0e89c1 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0317ead0 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xe28e8ad2 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x06533d19 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x2ab8aea4 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x30bffc04 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x6fed1805 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x92d4ce0c lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb39dacb0 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe8c5ce77 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf00f4027 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/rc-core 0x33f11c3c ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xaf95f719 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x4c4c7ada cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xe17a6ebb cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4e676f6a cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7586b17a cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd187dfb1 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd8a3779a cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0x58c8cd06 vpfe_register_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpfe_capture 0xc983fcd8 vpfe_unregister_ccdc_device +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x088ccec9 vpss_select_ccdc_source +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x319709a6 vpss_clear_wbl_overflow +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x54146824 dm365_vpss_set_sync_pol +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x6e5b5413 vpss_enable_clock +EXPORT_SYMBOL drivers/media/video/davinci/vpss 0x749bf2c9 dm365_vpss_set_pg_frame_size +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x09d9afc1 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x2e6850c9 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x14d6cceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e35c5af gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x49485ded gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5f9a575f gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x65cfbddf gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84c0b639 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x90207409 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x9400bba2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3d49d0e4 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x423da71f soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x59c21783 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x66cbd6d2 soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9667c6d2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa11000f4 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x6196852c tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x91e3a248 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xa7eccb7e tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x475a8d7c tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0x8713fbb1 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x8deca363 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xad781961 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x3f72b910 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x6919be09 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xccecb1c7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x333c1b7e videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x38009a02 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39364062 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x41354716 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6b87d289 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x82e8269f videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xce7e45f8 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0d99a55b v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x13355c3d v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x16310292 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x1e335a16 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x24fa8064 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x28e32207 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x2def4f2f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x33cd0d02 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x358bfe3a video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4904e326 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4af15a06 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x55213c57 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5b835d3a v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x641c4671 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x64ce2bc0 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x65f0f5e2 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x6875771c video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x6f5aa18f v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x7155f80c v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x77637058 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x7771ebfb v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x835b6025 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x85b37974 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x91a9ad54 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x96c3a076 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xa2342123 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb85f8e3b v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xb99a3054 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc321d7bf v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce04ea62 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xd353b2b0 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xd6eaab33 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xd785a33c v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xdd0462e6 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe0e4d2c7 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe1155fda v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe2f064aa v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe61dedb1 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe72ab1af v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xe7ec83b8 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xec4bc368 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf1e00e94 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf321cc5e v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb959f0c v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/memstick/core/memstick 0x05b9d4ca memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0cf90081 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x1b7c50bd memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x2090096d memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x22476e5e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x51f6b925 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x63873823 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0x656cd812 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6bad9301 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x779faba5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9658abed memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc5a65469 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xddfa39c9 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf844510d memstick_resume_host +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x8bfd1dae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xc46a54bc pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c89d32a mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x13862de2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1cffda0e mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x41c27171 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f7d36c8 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7cae2548 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9ac37a25 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xafac418e mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb4b2e23a mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe0e41389 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe2795a05 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xe36e72c4 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xfab5deef mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1d247422 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xb0770a5e tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0xc4dbd370 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x441bbefa ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xa9970e3b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +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 0x1007174f c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xa0b2a070 c2port_device_unregister +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x17dae94e dw_mci_suspend +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x534b807f dw_mci_remove +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0x8fe02703 dw_mci_probe +EXPORT_SYMBOL drivers/mmc/host/dw_mmc 0xde39e2a9 dw_mci_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x2e110b06 tmio_mmc_host_remove +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x378f2335 tmio_mmc_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x6d3deee9 tmio_mmc_sdcard_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7a6fd700 tmio_mmc_sdio_irq +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x7fcd79b5 tmio_mmc_host_runtime_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0x8155e046 tmio_mmc_host_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xa8172124 tmio_mmc_host_runtime_resume +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xbb0a6e4c tmio_mmc_host_probe +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xdc583b00 tmio_mmc_host_suspend +EXPORT_SYMBOL drivers/mmc/host/tmio_mmc_core 0xf02062dd tmio_mmc_card_detect_irq +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x38608e3f cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x528db246 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xd794b137 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x7e3a7ed9 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x06e7bd27 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x8d282c57 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xe5e3dcab flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfb96e658 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xfc6236e6 onenand_addr +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1776e97b hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x218445cc hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9573b8b2 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe4e55262 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xeef2b350 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0079a4fe sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x36920f77 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x70afd9e6 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9910233e sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x9f7e5526 irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaef08974 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xbf0771a4 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc35f96f6 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe0a89cf0 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xec698386 sirdev_receive +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x66ca2feb alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x6e5e78ad free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9dd55816 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa190fb00 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa5243dee register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/wan/hdlc 0x055c2ae5 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x38e8ee00 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3bebc1aa register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7babb530 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x8fefc6f8 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x97c66a2c unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x97dfe738 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd0404fc4 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd1b84d8c attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf31ebf52 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfe792cba hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x34a785c3 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4033c159 ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x608da6a7 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x892f51ea ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa141c1c7 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xae56f5ed ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb0952071 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd9447e82 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdbf67c64 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xe0514660 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x011fc259 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x162b58a3 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x23ce39f9 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4cb66de5 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x76f17bd7 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 0x94c65127 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c63867e ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9c668858 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xda370224 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdabe5e09 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x1012a39b ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x28939b1d ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x531f043a ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xdfc6cf00 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x010a01bf ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0488eb7b ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x04cedbda ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05bfd9bc ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x077f9c99 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x09d95f59 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0a4f3bf0 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11023c3f ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x114f30b1 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x164b0d71 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17b6c445 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bd5c929 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1dcad427 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f38ddff ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f3cb578 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1f8c6e22 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2450c0d8 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26d7bf29 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x284f7f43 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x29ee0056 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2bce8c89 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2c930282 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3054070b ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x38fdbd8a ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e344720 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4457fcb8 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x46244cda ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e046e07 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e0985c5 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f5d5bcb ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5179cea1 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x52e73fb0 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5330aca4 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5b0faa74 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5cceee48 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63ce9f95 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6838bcfb ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6890c456 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6acfa5a8 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6ee118b3 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x793c9810 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b365756 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8526d4a9 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a35285c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bb35a78 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8bfbd8c3 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8de991ae ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f1353a8 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fc383bb ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x93637813 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97eb7fa2 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x99c7b668 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b03d620 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d208c1d ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e1bac1d ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9f5d0875 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa06509c4 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0bfa79e ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa78d4534 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa8b922da ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab611f1c ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab736a84 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf1899f7 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2d1da4f ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3b49ab5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb96e17b5 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9736896 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb99c68c0 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xba7055e9 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe64323a ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc64ef905 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc72cecc1 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcbfc1030 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce3332b2 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf62d4d4 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf72742b ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd16495f1 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd510fdd1 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd5da7771 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd87945ae ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd9b88a7e ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe00f2e33 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0bf74d6 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe1dadea3 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2e256b9 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5e5091b ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7e66051 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf5f9a3ce ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa5e2448 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb672fbf ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff19bd39 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xff8542b1 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x4fd413c3 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x8ad65a88 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x02f71c29 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x1623b6e9 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x171026cd brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x185dd121 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x257293cd brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x63ad5a42 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7478dc38 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7a7d60b4 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9b290caa brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa252a286 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xaba377bd brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf80cba67 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x01e9525a hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x11e080c5 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x162edaf4 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1648e5cb hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1bb26799 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1e423403 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x242c2bd6 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x394c1224 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6362e42b hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d681e4d hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x73086be7 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7b20428e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7fc5aed3 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x86db6c88 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x91bae558 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x997e88ad hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb1e9b5ae 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 0xb83ebc08 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc52cfb54 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5429d54 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd5c12382 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd8e0ebe3 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeb9c0ea6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xedd47bf0 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf82a367f hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x04eb75dc rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06598eff _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06a38a48 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0f6aa38d _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x19196652 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25cac8f6 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x38211217 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3b5b6d74 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3c2a8bac rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3dc85e03 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4085d320 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x492edf77 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4952e005 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bfaeb67 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5189a303 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x576a9eb6 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ddeb26c rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6754b886 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68d95234 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x692c745b _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7363f66f rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79ee41ab rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x82c05299 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x831311e5 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x861757cd rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8989662e rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e577f9d rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9a52de2f _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9d4fe1a1 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2395d57 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa9e5c590 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaba404d6 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb0d4be0a rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3d68247 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb7882316 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc2c08d9 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc0c8981f _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7381093 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc7b3159a rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb2a433a rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd795c3a0 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeadd6bae rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0095d2c5 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0d713e3f rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x222a2988 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2a65d795 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2b06ef4a rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2be84271 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x52ccd3d7 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x60641073 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6ffb1d04 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x775f219e rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8994a28a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8a33773a rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8c6a5d47 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9719d3f7 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xae3f0ab1 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xcd253de8 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xceb0e0d3 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd80e8734 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe51429f5 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe55b687f rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x73aaf8a5 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xbc2ec7ef wl1271_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x07025813 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x196a9d55 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x2222aeeb parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x27941c97 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3c586e06 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x47fd01b6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4cda7720 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6103e005 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x6201f390 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x66fe4867 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x68566f0c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x7796a171 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x7efc06d7 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x83e749c1 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x8d5122b9 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x8fa9d741 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x9825b188 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9f54266b parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xa3ebc751 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xa45527cb parport_release +EXPORT_SYMBOL drivers/parport/parport 0xaf7c2264 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xb3dede9a parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb832abe9 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xc83093cd parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0xc84b1df3 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xd890b52d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xeb261256 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xf030e747 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xf2c83d97 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xfbf102f3 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/pps/pps_core 0x19727db5 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x2c74c673 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x610b0a1f pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb67659e5 pps_register_source +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2368ac36 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2854c509 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x41a7515e fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4470f5ce fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x66b2d52e fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7b49d284 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9c3e4404 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb57e7f0e fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xda770d9a fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf1c7ed6e fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xffadc5be fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08feb8f0 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x091e90ff fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x12ce9ffe libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13a98449 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x13ee695f fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x148994fe fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x221a0077 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x270a589f fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x285f6b87 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2bec3654 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2ef91642 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2fd0f0f1 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x312a70f9 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x38e94653 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x475c9936 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f37b9ac fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5aeab927 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x614704e4 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x653995e5 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x66fc885a fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e54d68e fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6f8867da fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7616f652 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7b4ad659 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7eddf5bf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x832fe7f0 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83365583 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87d4617c fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a191dc4 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8aca745d fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8c3ec510 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x901caebc fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92dd3161 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9aa87554 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9ee755b1 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9fbdeac3 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa01db5a9 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa128ffd0 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa75eda00 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb8c66fca fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xba674f93 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbfa667b3 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc9f35e1 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4055e5c _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd464e772 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4bda3bf fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe02d7f4d fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe4a75d6a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xecc49efb fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xff216899 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libsas/libsas 0x8a87e724 try_test_sas_gpio_gp_bit +EXPORT_SYMBOL drivers/scsi/raid_class 0x04c30cc2 raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x3b3e439e raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xed222aad raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x06c7c950 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x20a0af44 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2123eeb7 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x31d706eb fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3ba20b6c scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x99eb5817 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x9a983ade fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0e18ff7 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xbbebf927 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd195b5f fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xddd2b14e fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe37a250b fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4d0319c scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x09b0b079 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x11687b0f sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x118d274c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x14903952 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x168870c6 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2284443b sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x27012824 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4390f019 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4d8e7e5f sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6016cf9a sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x65d67ef8 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x70a24585 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x86615c59 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x870a8e56 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f03c761 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9cb57746 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa210e9b0 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa2c86117 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaab3b39d sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xab91abfc scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc0de1f6a scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc29021df sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca23df82 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xca386ae8 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdb600f19 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6c6b86 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe92cc9b5 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea75b4ce sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x1fe83597 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x2cb70380 spi_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42001568 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x7453b901 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xb39e7bd3 spi_dv_device +EXPORT_SYMBOL drivers/ssb/ssb 0x0409018c ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x18af45c7 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2a7bdb50 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2cd84326 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x583ed935 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x5e0b93fe ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5ef81631 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x72bc6f8b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x8d8cc33c ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x9bced4e1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xa92908f3 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xab3940a5 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xae4a7a05 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xaf20c559 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc33eae7f ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xc70da9d2 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xe4051e90 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xe51c25de ssb_commit_settings +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x9234183f adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xcab774f1 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xe006ab35 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xed8a9888 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x64d71cc6 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xe8520719 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x5a79888e phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xc69b8f8f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x00a576bb transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x0162f84c transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x022e4f24 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x079cef8f fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x12934f9b transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x1369e96f target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x1406fae7 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ec26288 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x246cf711 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x2f9e6d8f sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x337dd862 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x406b910e transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x45312f98 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x4591c7c3 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x486c4429 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x4c63220c transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x4cc04a3a transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x56f29f3c core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5ab462c3 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b67317a transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cb2c3fd core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a067c82 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6b3bdcfb target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x728682a4 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x75440648 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x7602e120 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x77324851 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x774cc0b5 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x79092561 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7fd8cb5e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x80a78840 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x826cd371 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x86c2abbf fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x87ba5c27 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8becb731 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x98c21966 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x99a4bd56 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d1f5f19 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x9d987eef transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9fa9835f core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2cbeb70 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xaa0d9235 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xb78dd57e sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbf63686 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xbcdf0044 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7180063 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf12a0b4 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xcf8d2131 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xd0cd1413 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd188696f transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6a96aea sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xd85849a1 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xe4b3ee2c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xebadbea1 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xecd595f5 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf1d5a345 transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3882ad9 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xf46b3133 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf859bcec transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0xf9e7ccf2 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xfa35e288 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x672b702c usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xa0bf53bf sl811h_driver +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x000df614 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3f65541b usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x759877a5 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c42f63e usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9a22b765 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xaaf48945 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xac63b23a usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb03be8ab usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xcfcb22c9 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd67c499c usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe042e5d9 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfc1d472e usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfcd07be4 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfdd9a6bb usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xfe62122b usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x7a799718 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x8d5b91bc usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x07c7dd3d lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf5d673a1 lcd_device_register +EXPORT_SYMBOL drivers/video/output 0xaba46453 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xb3722d93 video_output_register +EXPORT_SYMBOL drivers/video/syscopyarea 0x7097ec1f sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xce1817f2 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xb31f1fbd sys_imageblit +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x9f38d657 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xa0d41cc6 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xe0e66e0a w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf453b7ca w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x0be3eb64 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xcfb43bea w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfc1d6660 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x1342fd70 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b0c45bd w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xfe57b8d6 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x25547c11 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xc15ae288 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe125283 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfe388128 w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x1074bf38 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0x15b33ac4 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x3be87079 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x3bf16352 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x6ba63918 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x7475e5f5 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8370eef1 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9d9e348f config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xa4fd2c3b configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xab64fc36 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf0d1b8c3 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xfb52e8bf config_item_get +EXPORT_SYMBOL fs/fscache/fscache 0x0663e0fc __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0cd0d4b5 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x21894c41 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x30447263 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x31731797 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x33e57046 __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x33f4f96d __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x394c16e9 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x3ea188b8 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x508a5d08 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x63d09275 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x72ce6d40 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x8f8d757d __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x918ce891 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x941e6b42 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x976cdb76 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xa44cf5f4 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xc0b8c9ac fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcd7e35a3 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xd8d5bfa7 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe3b3f03a __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xe8462631 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf112e607 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4191ed6 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xf4768489 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xf5d31fdc fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xfb5317b2 fscache_mark_pages_cached +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1c433e1b qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x744c7ac0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x802e86a0 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe1b68d98 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xf78a229b 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 0x0ea7c60a lc_del +EXPORT_SYMBOL lib/lru_cache 0x236f6654 lc_create +EXPORT_SYMBOL lib/lru_cache 0x4308237d lc_get +EXPORT_SYMBOL lib/lru_cache 0x58f461a7 lc_set +EXPORT_SYMBOL lib/lru_cache 0x604890a6 lc_changed +EXPORT_SYMBOL lib/lru_cache 0x617b0ecd lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x78e92b13 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x831045dd lc_reset +EXPORT_SYMBOL lib/lru_cache 0x9a21924a lc_put +EXPORT_SYMBOL lib/lru_cache 0xc388d3ac lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xcea4d17e lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0xcf5f0864 lc_find +EXPORT_SYMBOL lib/lru_cache 0xdd7a727f lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xed91c002 lc_element_by_index +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 lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x04b67ea1 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xd54fdcd3 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x225e0f04 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xcc9eae8d destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x99940db7 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xfb612139 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x02c04dbd p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0x04f60844 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x07013c09 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x10ecceee p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x214be670 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x22b90756 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x2342974e p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x2a27a057 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x2a941566 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x2ec54d62 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x380e14a2 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x38f25524 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x39187e40 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x3c3c4b78 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x48b84c3e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x4ec52be7 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x5151fed9 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x51b09a2f p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x5709eb50 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5bc5c3d8 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x75b49540 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x7ab52012 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x80c084f7 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x8f01d92c p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96ad23b6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x993fcd76 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x9bc81f64 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa99eba8a p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xb05010a5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xbf52c7a4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xc065b2c0 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xc43f7b40 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc98f5e5d p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xc9f26a32 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0xd4d05d10 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd742340e p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xdb478d17 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xdc7240d5 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0xe1089681 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xe1b69bac p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0xe38c9ce6 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xeb2a10ff p9_client_getlock_dotl +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 0x6982c516 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x8ae38fb3 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x9b0923bc atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa137f77d aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x1adcbe67 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x1cff0cdb register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x2ed7b910 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x5075b13e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x51e2c365 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x56911c65 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x58d7357c atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x6ba65a8a deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x875d0ce5 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x91fdad79 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xb297008c atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xba9c69ad vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf5eab1ab vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xf687d401 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0xf7da1c1a atm_charge +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53d36be0 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5be29edd ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x8aa0f9ec ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xbeeb2c09 ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd6b26604 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xda9cd527 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xdab1897a ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xe58c26ad ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0xfdbc048c ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0dc013d0 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x10f5de0e hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bd40b50 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2434dc5b hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x25643045 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2b8cae58 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d9445bb bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x337a4422 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x34c1883c hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3761b51b bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3b3647a8 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b6515d9 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5d0108b0 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x67f5579a hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x74af5149 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x78c5ee15 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79225546 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7b8ce35f bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c2c26c9 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84734398 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x860f1e39 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x94cd61fa hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9c2186e9 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa25254ca bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb024f87a hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb675af8d bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc570fc7 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc06e6179 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4a3723d bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc92ad457 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2339681 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd2c8f5b3 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd7656237 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0xda07b888 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe1cf16af hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe4c05b1d hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe793545b hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xec709810 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bridge/bridge 0xf4a28ccd br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x2631323b ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xa3bc08bc ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb488893b ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x191d22c9 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x3cc6f817 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x5e02afdc caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x73cb3e6b caif_connect_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 0xb36d5122 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/can/can 0x4d2620e5 can_rx_register +EXPORT_SYMBOL net/can/can 0x54742638 can_send +EXPORT_SYMBOL net/can/can 0xa1e5d0e5 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xa5ae63b0 can_proto_register +EXPORT_SYMBOL net/can/can 0xdba27ab7 can_ioctl +EXPORT_SYMBOL net/can/can 0xfa644942 can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x0406dafd ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x06842c3e ceph_release_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 0x10bed75d ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x13613ed4 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1677df52 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x16ef3176 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x19b0e182 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x1bcd96fe ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1d94ecc5 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x1e3b9fec ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x302d9f86 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x32ac2e04 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e0978b0 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x42728f99 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x53f8cf23 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x58845a64 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x5f5e144b ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x668ee754 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x6c1a4594 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x6c67f3cd ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x77ee925b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x790605a6 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x7f3e3711 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x8866188a ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x8e6f752d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x947ddbad ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x95eb60eb ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x96036809 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x98aa5e18 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x993bbc8a ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x9beef883 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa2e65b1d ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb445db55 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xb879299c ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0xbcf891cf ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xbd455b2c ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc08da5ac ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc4bba83b ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1482a0e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xd2b8544f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xde2c47c5 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xe40e07c1 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xeddf6e2c ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0xf40b6c13 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xf95e802e ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfdbd62fc ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xff5809c7 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xff7923a0 ceph_osdc_build_request +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xbe447095 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x04829c61 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x42593cdf ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x4bc41d74 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x50511ae0 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5631f807 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6d3506f1 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x780c0f2b ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x811c6711 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x855799db ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9a53305e wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xa583d783 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb952313c ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd00042f9 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x151c0236 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xacd9186e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf829719b arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0ee3a121 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xec548e8e ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf69d50b1 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x1e9b0785 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x24d5fa24 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x3ae43807 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x4e5051b6 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x7d47e6a0 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xaef38d69 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xe5d21517 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/tunnel4 0x80b9041b xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xddcaef62 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x79f63b0a ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x7d420e9b ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xb8f9089d ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xcf128566 ip6t_do_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x4a2f182a xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0x6932a5ca xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x286e8d8e xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x58c91bc7 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x08646797 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x22306a29 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x52d5f612 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x550ce53d ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x638adf0d ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa02fa8a1 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa7ce69af ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xcd034aed ircomm_data_request +EXPORT_SYMBOL net/irda/irda 0x051d165c irttp_dup +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x070ec814 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x11ebbf0e irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x162df9d7 iriap_close +EXPORT_SYMBOL net/irda/irda 0x185f1187 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x1f34c235 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x22caf86e hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x2d3765bc hashbin_find +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3e1dcac3 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x4479ef51 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x4495119f async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x538d5d22 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x572583cf irias_new_object +EXPORT_SYMBOL net/irda/irda 0x5f55c3a2 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x5fe3a967 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x69c2b7cf irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x6b043eba irda_init_max_qos_capabilies +EXPORT_SYMBOL net/irda/irda 0x6f4b308c alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x70b1e8db irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x74c6eb16 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7aa1ddbc irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x7de04a81 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x80da7829 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x91aff271 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x965c47ed proc_irda +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9f04bb63 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa014e08f irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xa12d9693 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa9726385 irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xb5c93e6b irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0xb710786e 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 0xbf285a4c hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0xc1794f12 irlap_close +EXPORT_SYMBOL net/irda/irda 0xc3a512dd hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xc5461e83 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xc9c45d51 iriap_open +EXPORT_SYMBOL net/irda/irda 0xcfc32e9a irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xcff16086 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xd115a3b7 irlap_open +EXPORT_SYMBOL net/irda/irda 0xdc690886 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xe2c5e2df irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xedf805a9 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0xef16660b hashbin_new +EXPORT_SYMBOL net/l2tp/l2tp_core 0x5c762c63 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x1a1c1305 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x3e633310 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x4888d6bf lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x61a8df1c lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x678c9cb4 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x73cc9b75 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xe030deca lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xea48e075 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x1a635c35 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3aada98d llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x5b458824 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x5e85fc5a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x831d38a0 llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x9656f8a0 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xc67d7e79 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xeb0b41fb llc_sap_find +EXPORT_SYMBOL net/mac80211/mac80211 0x00f410d3 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x08d4cbd7 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x0fa1ac35 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x18c1d937 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x24e98921 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x25977914 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x27a0aecc ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x2ca159b5 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x35b999a2 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x3b36caef ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x45ff6dd8 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x46403b90 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x4989fcf7 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d271dd4 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5fa11fee ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x6068c39b ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x62d12f08 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6bb30674 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6f635be5 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x7741bfeb ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x7e70a9af __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7f0aa7fe ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x85d15839 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8bad1a22 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x8c33b8bf ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x9084d19b rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97a328bf ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x997206b1 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x9a9a4ee2 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x9c65dd28 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9fed057f ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa5c0feb9 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa6e68e17 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa82e60ed ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xc07dda3c __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xc9c271e6 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd7a6ab3d ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9847a79 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdb24847f ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdeabc510 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe0009bf4 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe127bcab ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe7c1a853 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xf27eed55 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf49509eb ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf88f320d ieee80211_napi_schedule +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x133407f6 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1fa54739 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2336dda6 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x26bbbff5 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4fedc97d unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5a5214f0 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7d7fa9a4 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9e82928b ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb7df0351 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xce425516 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd3d19fa8 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd5ea02fb unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xda45286d ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe7d51c2a ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x77181a46 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb1893a3a nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xde2c01aa __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xc924bfe8 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x00963739 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0b83e247 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x1ffb2206 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x3ce7b659 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x414b0b13 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x605cba69 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x6ced8f54 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x844f188a xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0xaa4b6579 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xe3902cc1 xt_unregister_match +EXPORT_SYMBOL net/nfc/hci/hci 0x018b3019 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0398803a nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x0e5582fd nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x2054396b nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x38b876f5 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x49c1bfdd nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x4c47cca8 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x4eedc996 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x53df246a nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x5b0bb163 nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x61f21ea6 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x63f178d2 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x678c7915 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x7433da25 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x750d4121 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x7f884e1d nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x997fa452 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xa46a362c nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xb355456b nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xda7e9cda nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf39086b0 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x12b096b5 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6ca65bed nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x72e7d3cb nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xa1fad6c6 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xea871d17 nci_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x17501803 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x220f34c6 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x3acdf86a nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x7d3a94c4 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x974df7ae nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xa425d650 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xb548c89a nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xbb2ff88f nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xc75d47c9 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xf07a0e58 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xf5d13287 nfc_targets_found +EXPORT_SYMBOL net/phonet/phonet 0x0b24ce2a pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x5ecfe4bf phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x6693df5b phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x6fa12272 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0xbfa4ee4b phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xd31c565d phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe51b9ec8 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe7ba2ba7 pn_sock_hash +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x172b7cad rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1c3a2bd9 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3089fd18 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x41f50c0c rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x47c2cdd9 rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x636051e6 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6830d0e7 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x85732bb6 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x94f02255 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9866ceae rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb10ccd25 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xb18d2835 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd81dcdfe rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe595862f key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf0afad85 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/sctp/sctp 0x6c0b9e49 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x3a37bf21 svc_pool_stats_open +EXPORT_SYMBOL net/wimax/wimax 0x0c0ad032 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xb0657d5e wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x095483ef cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x09edf86c cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x0a75fecd cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x15f56960 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x16aff329 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x187b6ad2 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x1d2ba3ad cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x1d9f0ba4 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x2d7c32d1 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x2fed6eae cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x34ef99ff cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x370fcffe cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x45933fbd cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x465233c2 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x4f43d697 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x5094ce50 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x50bd68d8 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x52fd5fc2 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x59175513 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x6091f334 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x68f249d3 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7670809a __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x7a8ebba5 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7f44a9f8 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x81462925 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x8452aa46 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x85923c01 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x85e5319c cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x885cb026 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x961479e1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x97c690de wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99db39c0 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x9abff386 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9b74b2b5 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x9cb9df95 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x9ed1d76f cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xa0cf8e20 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa3c375f0 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0xa802b38e cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb6da4277 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xb7858b81 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb794c6cc cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc1bcad2e cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc57a861e cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc742080a cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xd9126603 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xd9dad72a cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xdcfc72aa cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xe1d4c990 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe64cd016 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xe7e7d415 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xefffbbc2 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xf2d8ccc6 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf3f30b7e cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xfc73a6fb ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xfebcd2ef cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/cfg80211 0xffcf4f9a freq_reg_info +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x4df609e7 lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7d88d486 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xb1352cb1 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0xd869f406 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xe240752d lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xeaa9255b lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xea77d80b ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x5597a71a snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x05ba8c3a snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1b7e2a11 snd_seq_create_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x2928b118 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x743f2c18 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 0x6803f7c5 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa1585716 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-event 0x0df2e317 snd_midi_event_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x26885c56 snd_midi_event_no_status +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ab3ab98 snd_midi_event_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x7ddf2a2e snd_midi_event_reset_decode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85c27c7a snd_midi_event_reset_encode +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0x85e4ac82 snd_midi_event_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xd4945484 snd_midi_event_encode_byte +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 0xfcf964a7 snd_midi_event_free +EXPORT_SYMBOL sound/core/seq/snd-seq-virmidi 0x464575d8 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd-hwdep 0x76ce51c5 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x14a0132b snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x154df648 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x245f8ecd snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x2e198920 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5222960a snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54c06636 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5941efc3 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6120e10f snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x629b7e97 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6f6b8ba5 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7a417cef snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8cd1a8d7 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x94f900f5 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x95823a7c snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa88dccc2 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc8aad07c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdee35c75 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x9fd1963b snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0xc0fec227 snd_mpu401_uart_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0f8e7dbd snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x13f91d59 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18edb454 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3bbcc72b snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x463c867d snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6e6c8065 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7fd5a310 snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x83a400e4 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x92ae42d7 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9bc797ed snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb0f0c257 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb2e33729 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9348a92 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb9f9ff5c snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd46e50e snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf662f332 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xff88f3a1 snd_ac97_resume +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 0xbde753a1 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00303884 arp_send +EXPORT_SYMBOL vmlinux 0x0038a9bc tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x00658d2c snd_pcm_hw_param_first +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0081030e omap_vram_reserve +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x0088eb1a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00d6e47a tcp_shutdown +EXPORT_SYMBOL vmlinux 0x00dceeb0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL vmlinux 0x00df3cd1 snd_timer_start +EXPORT_SYMBOL vmlinux 0x00e201d8 netdev_printk +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00eef49e __strnlen_user +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x010757a3 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01316c4b revalidate_disk +EXPORT_SYMBOL vmlinux 0x01424f59 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a3d310 omap_set_dma_channel_mode +EXPORT_SYMBOL vmlinux 0x01acf78c blk_requeue_request +EXPORT_SYMBOL vmlinux 0x01b0193a skb_dequeue +EXPORT_SYMBOL vmlinux 0x01b437d1 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x01d3621a tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x01d372ba thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x01e8ac6e twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x01ee6a12 tcp_close +EXPORT_SYMBOL vmlinux 0x01fea6ed usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02196324 __aeabi_idiv +EXPORT_SYMBOL vmlinux 0x024bf88f omap_modify_dma_chain_params +EXPORT_SYMBOL vmlinux 0x024fe8d5 udp_table +EXPORT_SYMBOL vmlinux 0x025132c5 dpi_check_timings +EXPORT_SYMBOL vmlinux 0x02573b36 omap_disable_dma_irq +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x0276abef xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL vmlinux 0x0283e58e account_page_writeback +EXPORT_SYMBOL vmlinux 0x0289743f of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x02a0d156 gpmc_prefetch_reset +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02a72712 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x02c36bb4 journal_create +EXPORT_SYMBOL vmlinux 0x02cef1d5 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02ec9d8c udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x02fa54aa mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0302c48b idr_destroy +EXPORT_SYMBOL vmlinux 0x030bce7b tty_port_close_start +EXPORT_SYMBOL vmlinux 0x031ba9bf atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x0331bc7b dm_get_device +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x034eec6c bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x039fbbc0 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x03a6d6b2 lock_may_read +EXPORT_SYMBOL vmlinux 0x03a7452e call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03da7463 neigh_create +EXPORT_SYMBOL vmlinux 0x03e0f1b7 __lock_page +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x03ffa31d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x041c2e04 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x0444d12c serio_close +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x0461149f input_unregister_handler +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04768963 dquot_destroy +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04a621f6 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x04b74adc vm_map_ram +EXPORT_SYMBOL vmlinux 0x04c47134 of_device_register +EXPORT_SYMBOL vmlinux 0x04cb6240 files_lglock +EXPORT_SYMBOL vmlinux 0x04cda566 snd_interval_refine +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f2bd44 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x04f4c74c backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x051efadc pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x0530b5d6 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054ef447 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x058db3f5 up_read +EXPORT_SYMBOL vmlinux 0x05a6c5ba vlan_vid_del +EXPORT_SYMBOL vmlinux 0x05baaba0 wait_for_completion +EXPORT_SYMBOL vmlinux 0x05d95ac8 write_inode_now +EXPORT_SYMBOL vmlinux 0x05f87ef3 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x0604162a call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x060483df inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x0648e553 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x0650191f d_move +EXPORT_SYMBOL vmlinux 0x0658e8b8 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x065de4ad vfs_statfs +EXPORT_SYMBOL vmlinux 0x06614df7 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x0679d461 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x06946e69 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x069ce1b7 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x06a26579 max8925_reg_read +EXPORT_SYMBOL vmlinux 0x06b9c59d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x06e695ed set_page_dirty +EXPORT_SYMBOL vmlinux 0x06ea8aac led_blink_set +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0715130d security_path_rmdir +EXPORT_SYMBOL vmlinux 0x0730ed21 d_lookup +EXPORT_SYMBOL vmlinux 0x0739b3d4 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x07608ccb netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x0780defd __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x0784d67f noop_qdisc +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a6ddfa abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07bb555d scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6fe98 proc_symlink +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07da2fbd dcb_getapp +EXPORT_SYMBOL vmlinux 0x07f9583d phy_find_first +EXPORT_SYMBOL vmlinux 0x082eb968 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x0832c933 skb_checksum +EXPORT_SYMBOL vmlinux 0x0833379c nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x0834ec3d inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x083cf7c1 register_netdevice +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x0884c74f simple_empty +EXPORT_SYMBOL vmlinux 0x08c761c1 unlock_super +EXPORT_SYMBOL vmlinux 0x08ded414 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x08f61d3c ipv4_specific +EXPORT_SYMBOL vmlinux 0x08fc7cf5 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x090adbe5 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x091c5b10 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x092e9372 search_binary_handler +EXPORT_SYMBOL vmlinux 0x09360eba omapdss_dpi_display_enable +EXPORT_SYMBOL vmlinux 0x0947c327 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09674b49 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x0978e8d3 do_splice_from +EXPORT_SYMBOL vmlinux 0x097ac118 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x09b336f6 inode_only_permission +EXPORT_SYMBOL vmlinux 0x09c250eb i2c_del_driver +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d07ef7 input_set_keycode +EXPORT_SYMBOL vmlinux 0x09e96dba snd_info_free_entry +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a02f9a6 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x0a0672bb fget_raw +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2ef616 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a34af26 neigh_lookup +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49a076 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0a98c6ad build_skb +EXPORT_SYMBOL vmlinux 0x0aa13d05 __raw_readsw +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad5fb6f down_write_trylock +EXPORT_SYMBOL vmlinux 0x0add6a1f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x0ae02873 i2c_transfer +EXPORT_SYMBOL vmlinux 0x0aec8218 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1928a0 inet_stream_connect +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b28e140 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x0b351ada mempool_resize +EXPORT_SYMBOL vmlinux 0x0b360971 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b5fdc85 get_io_context +EXPORT_SYMBOL vmlinux 0x0b69a29f down_trylock +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b90e80b proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0be8f5d9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x0c0202db filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x0c09b60b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x0c316a4c dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x0c35f2c6 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x0c5029a9 seq_path +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f7d84 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c7c1c40 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c94e03c mmc_resume_host +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0ca54fee _test_and_set_bit +EXPORT_SYMBOL vmlinux 0x0cacd1a2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cd6126a skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x0cdd158d sg_alloc_table +EXPORT_SYMBOL vmlinux 0x0ce025a4 inode_change_ok +EXPORT_SYMBOL vmlinux 0x0cf7e5a1 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x0d3bb020 dm_io +EXPORT_SYMBOL vmlinux 0x0d3f57a2 _find_next_bit_le +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5e2097 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x0d85d38b __blk_end_request +EXPORT_SYMBOL vmlinux 0x0d8ae393 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x0d9ebcb1 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da212f8 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x0daf568a current_fs_time +EXPORT_SYMBOL vmlinux 0x0db7a472 mdiobus_register +EXPORT_SYMBOL vmlinux 0x0dbe49bb generic_make_request +EXPORT_SYMBOL vmlinux 0x0dc69705 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x0df0e40b sock_no_connect +EXPORT_SYMBOL vmlinux 0x0e022965 inet_shutdown +EXPORT_SYMBOL vmlinux 0x0e51cc03 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0e622c22 dev_deactivate +EXPORT_SYMBOL vmlinux 0x0e62e9ee seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x0e674bd8 iput +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e893437 lg_lock_init +EXPORT_SYMBOL vmlinux 0x0eab8424 file_update_time +EXPORT_SYMBOL vmlinux 0x0eb2fce2 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x0ec98808 ida_init +EXPORT_SYMBOL vmlinux 0x0ef22307 journal_extend +EXPORT_SYMBOL vmlinux 0x0ef3f582 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x0f0ce1a8 simple_write_begin +EXPORT_SYMBOL vmlinux 0x0f1994f6 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x0f363190 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f9091eb fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x0f9b95ac jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x0fa2a45e __memzero +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fbccb11 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0fd0735b skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x0ff178f6 __aeabi_idivmod +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x0ff74cb0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x0ffa8302 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x10101c3c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x102aaba7 abort_creds +EXPORT_SYMBOL vmlinux 0x105dfe06 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x107a9cbb thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x1083e3b6 inet_select_addr +EXPORT_SYMBOL vmlinux 0x10ab589d mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10abebce bdget_disk +EXPORT_SYMBOL vmlinux 0x10d1a6ff generic_block_bmap +EXPORT_SYMBOL vmlinux 0x10da2f12 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x10dd5a3e max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11022c80 journal_init_dev +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x110a4cbb seq_release +EXPORT_SYMBOL vmlinux 0x110b0801 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x11148a97 I_BDEV +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112748bd omap_vrfb_adjust_size +EXPORT_SYMBOL vmlinux 0x114feb9c ll_rw_block +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x1190c9ce twl6040_power +EXPORT_SYMBOL vmlinux 0x119b50e7 elf_check_arch +EXPORT_SYMBOL vmlinux 0x11a73a68 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x11d8bd9a rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12065014 snd_pcm_suspend_all +EXPORT_SYMBOL vmlinux 0x120c2f97 dquot_drop +EXPORT_SYMBOL vmlinux 0x1221c8be dm_register_target +EXPORT_SYMBOL vmlinux 0x1296e919 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12cbb67d scsi_execute +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e0cd3d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x12eeec28 replace_mount_options +EXPORT_SYMBOL vmlinux 0x12f4d445 km_report +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131e3065 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL vmlinux 0x132887b6 sk_dst_check +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133dc5a8 cdrom_check_events +EXPORT_SYMBOL vmlinux 0x1354c5fc lock_sock_fast +EXPORT_SYMBOL vmlinux 0x13592581 simple_readpage +EXPORT_SYMBOL vmlinux 0x136005ae dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x136a795b tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x139b2340 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x13a3e2f6 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4125b security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142aec60 netlink_ack +EXPORT_SYMBOL vmlinux 0x142bc363 snd_pcm_new_stream +EXPORT_SYMBOL vmlinux 0x1453a52c sync_blockdev +EXPORT_SYMBOL vmlinux 0x1458ca4c pagecache_write_end +EXPORT_SYMBOL vmlinux 0x14b7212a blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14d1d6f9 security_path_rename +EXPORT_SYMBOL vmlinux 0x14d4a9c5 _change_bit +EXPORT_SYMBOL vmlinux 0x15034008 serio_reconnect +EXPORT_SYMBOL vmlinux 0x15139ad1 bio_endio +EXPORT_SYMBOL vmlinux 0x1524d58b proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x154999aa __pagevec_release +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x155019f7 may_umount_tree +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15970138 inet6_getname +EXPORT_SYMBOL vmlinux 0x15a16218 put_io_context +EXPORT_SYMBOL vmlinux 0x15dacae2 d_instantiate +EXPORT_SYMBOL vmlinux 0x15debd12 input_register_handle +EXPORT_SYMBOL vmlinux 0x160ef936 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x161028e9 simple_lookup +EXPORT_SYMBOL vmlinux 0x16154f04 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x1627dce6 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x162cf09f ppp_input +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x165b49aa of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0x165da8e8 sock_rfree +EXPORT_SYMBOL vmlinux 0x165dcc8e pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x166c6638 blk_get_request +EXPORT_SYMBOL vmlinux 0x166cb2a3 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x16859d77 serio_rescan +EXPORT_SYMBOL vmlinux 0x16a772f1 dev_err +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16cebef6 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x16e50dac bio_split +EXPORT_SYMBOL vmlinux 0x17108fce devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x171bb402 have_submounts +EXPORT_SYMBOL vmlinux 0x1737aacf block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x173c74ba arp_tbl +EXPORT_SYMBOL vmlinux 0x1763283e netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x17a142df __copy_from_user +EXPORT_SYMBOL vmlinux 0x17af11d3 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x17c490b9 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x17d48596 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17f075f4 redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x1827cb53 writeback_in_progress +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 0x1851151c proc_dointvec +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x18902e4e snd_power_wait +EXPORT_SYMBOL vmlinux 0x189100f0 drop_super +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18bb4acc neigh_table_clear +EXPORT_SYMBOL vmlinux 0x18f0d3af scsi_device_get +EXPORT_SYMBOL vmlinux 0x18f546c5 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x18f9c336 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x19032d7a dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x19068e25 snd_ctl_add +EXPORT_SYMBOL vmlinux 0x1906c469 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x19088883 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL vmlinux 0x191854af __register_chrdev +EXPORT_SYMBOL vmlinux 0x1924a3ea load_nls_default +EXPORT_SYMBOL vmlinux 0x195b15d1 mpage_readpages +EXPORT_SYMBOL vmlinux 0x195d6c95 phy_detach +EXPORT_SYMBOL vmlinux 0x196aff3e dev_base_lock +EXPORT_SYMBOL vmlinux 0x19762b5c snd_dma_get_reserved_buf +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x197dc3b3 omap_set_dma_src_burst_mode +EXPORT_SYMBOL vmlinux 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c3e285 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x19cec6ef snd_ctl_rename_id +EXPORT_SYMBOL vmlinux 0x19e574f2 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x19e91218 __getblk +EXPORT_SYMBOL vmlinux 0x1a0135e4 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x1a29074f security_path_unlink +EXPORT_SYMBOL vmlinux 0x1a496ac6 cad_pid +EXPORT_SYMBOL vmlinux 0x1a54133a md_integrity_register +EXPORT_SYMBOL vmlinux 0x1a5474f6 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x1a65f4ad __arm_ioremap_pfn +EXPORT_SYMBOL vmlinux 0x1a6612ec soft_cursor +EXPORT_SYMBOL vmlinux 0x1a8c43c5 icmp_send +EXPORT_SYMBOL vmlinux 0x1a8f4375 vc_cons +EXPORT_SYMBOL vmlinux 0x1ab30c4d vfs_writev +EXPORT_SYMBOL vmlinux 0x1ab36282 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x1ab47db9 misc_deregister +EXPORT_SYMBOL vmlinux 0x1ab4e21f uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x1ab5caa9 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad1f2e7 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0x1ae58785 update_region +EXPORT_SYMBOL vmlinux 0x1ae90bbf lookup_one_len +EXPORT_SYMBOL vmlinux 0x1aff37db tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b045a97 would_dump +EXPORT_SYMBOL vmlinux 0x1b075d04 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b419994 netdev_crit +EXPORT_SYMBOL vmlinux 0x1b51148f vmap +EXPORT_SYMBOL vmlinux 0x1b54669e __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x1b60e96d kernel_getpeername +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b9b04c5 snd_timer_new +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1baeaed4 proc_dostring +EXPORT_SYMBOL vmlinux 0x1baec476 snd_card_file_add +EXPORT_SYMBOL vmlinux 0x1bc1f1be dev_get_by_name +EXPORT_SYMBOL vmlinux 0x1bceb015 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x1bff36f1 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x1c2a1dbf disk_stack_limits +EXPORT_SYMBOL vmlinux 0x1c4993bc vfs_link +EXPORT_SYMBOL vmlinux 0x1c51cf7e mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x1c572397 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x1c63e7e6 dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0x1c77cbf5 snd_timer_resolution +EXPORT_SYMBOL vmlinux 0x1ca221d0 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x1ca6445a netif_carrier_off +EXPORT_SYMBOL vmlinux 0x1cc1dabc mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cd0f6c0 mempool_alloc +EXPORT_SYMBOL vmlinux 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL vmlinux 0x1d29fcb2 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x1d43d57c seq_putc +EXPORT_SYMBOL vmlinux 0x1d502d43 snd_timer_global_new +EXPORT_SYMBOL vmlinux 0x1d566dd7 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x1d5fde9c journal_load +EXPORT_SYMBOL vmlinux 0x1d8e33de release_sock +EXPORT_SYMBOL vmlinux 0x1d9135f0 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x1dab9e77 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x1dadf2c8 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x1db342fd __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x1db7dc40 pgprot_kernel +EXPORT_SYMBOL vmlinux 0x1dbb9814 iterate_supers_type +EXPORT_SYMBOL vmlinux 0x1dc2dc34 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1df0edb6 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1dfb97f9 dev_emerg +EXPORT_SYMBOL vmlinux 0x1dfe0274 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e0ee4eb mem_map +EXPORT_SYMBOL vmlinux 0x1e190ac3 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x1e24fd27 unregister_key_type +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e287c9a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x1e4140d5 bio_alloc +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e95feb9 snd_ctl_free_one +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1e9ffd7d unregister_netdev +EXPORT_SYMBOL vmlinux 0x1ea123bc __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x1ea917f8 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed90c38 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1ef900bd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x1f170137 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x1f508b03 bdget +EXPORT_SYMBOL vmlinux 0x1f64e05f tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1f667d81 locks_init_lock +EXPORT_SYMBOL vmlinux 0x1f6c3361 key_invalidate +EXPORT_SYMBOL vmlinux 0x1f745e2c key_alloc +EXPORT_SYMBOL vmlinux 0x1f77e8ef of_device_is_compatible +EXPORT_SYMBOL vmlinux 0x1f786d19 page_follow_link_light +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f9fe83d tcf_hash_check +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd3258 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1ffa9f00 put_disk +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20085764 register_nls +EXPORT_SYMBOL vmlinux 0x202b6e63 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x2040aa45 netdev_notice +EXPORT_SYMBOL vmlinux 0x205ec8de omap_dispc_register_isr +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x209694b0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20be65ce iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20df83c5 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x20e6ef43 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x20f1bbf4 dquot_acquire +EXPORT_SYMBOL vmlinux 0x210368be load_nls +EXPORT_SYMBOL vmlinux 0x210c8ebc generic_read_dir +EXPORT_SYMBOL vmlinux 0x211331fa __divsi3 +EXPORT_SYMBOL vmlinux 0x211847e0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x21aa4dd0 register_key_type +EXPORT_SYMBOL vmlinux 0x21b13bde no_llseek +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x220101f4 lease_modify +EXPORT_SYMBOL vmlinux 0x22091be7 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x221dfde0 idr_pre_get +EXPORT_SYMBOL vmlinux 0x22207102 freeze_super +EXPORT_SYMBOL vmlinux 0x222880d5 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x22381e35 console_stop +EXPORT_SYMBOL vmlinux 0x223cc898 omap_vrfb_max_height +EXPORT_SYMBOL vmlinux 0x224fc3ea test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x225ae67e tcf_em_register +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22895fb0 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22cd0114 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x22cd5e8d vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x22dfbba4 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x22f7fe90 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x22fdad06 dma_supported +EXPORT_SYMBOL vmlinux 0x231c105e ip6_route_output +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f8460 cdev_del +EXPORT_SYMBOL vmlinux 0x233857af notify_change +EXPORT_SYMBOL vmlinux 0x2347ed86 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x234822b1 nand_bch_calculate_ecc +EXPORT_SYMBOL vmlinux 0x2348519e phy_start +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2358bb9c scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x23614a83 sock_no_poll +EXPORT_SYMBOL vmlinux 0x239ea69d buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ab286a skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9807a __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x23d2b2b3 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x23e66b08 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x23f1efa4 f_setown +EXPORT_SYMBOL vmlinux 0x23f7ee8d cpu_cache +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x23fe09b1 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2429a333 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0x242e22ac generic_show_options +EXPORT_SYMBOL vmlinux 0x24312d90 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x245807f0 setattr_copy +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2459cb98 kernel_read +EXPORT_SYMBOL vmlinux 0x2467e637 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x2477ab91 dev_printk +EXPORT_SYMBOL vmlinux 0x247cd259 flush_old_exec +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL vmlinux 0x24e10d8e twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x24f74506 nand_scan +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x25024249 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x2515a9cb input_set_abs_params +EXPORT_SYMBOL vmlinux 0x2524e83e kdb_current_task +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252bd468 sk_common_release +EXPORT_SYMBOL vmlinux 0x252d7640 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x2560e3f6 journal_ack_err +EXPORT_SYMBOL vmlinux 0x25724c4e vc_resize +EXPORT_SYMBOL vmlinux 0x2577bc0f snd_timer_pause +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25ac5bd9 dql_init +EXPORT_SYMBOL vmlinux 0x25ae0bde tty_port_hangup +EXPORT_SYMBOL vmlinux 0x25b14996 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x25b65d2f journal_get_create_access +EXPORT_SYMBOL vmlinux 0x25be2aba simple_transaction_release +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25f1b4b0 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x262a9620 complete_request_key +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x263e70b4 snd_pcm_period_elapsed +EXPORT_SYMBOL vmlinux 0x264338a0 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x26512b9b netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x268ae8a7 seq_open_private +EXPORT_SYMBOL vmlinux 0x26911e4d gen_new_estimator +EXPORT_SYMBOL vmlinux 0x26ac17c5 mount_subtree +EXPORT_SYMBOL vmlinux 0x26b996f5 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26d65736 security_path_truncate +EXPORT_SYMBOL vmlinux 0x26e721b5 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26ebba85 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x2700b38a mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x2723b642 input_open_device +EXPORT_SYMBOL vmlinux 0x274ac3b0 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x274f3a91 netdev_info +EXPORT_SYMBOL vmlinux 0x2750b3a1 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x27582405 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0x277595e8 sk_reset_txq +EXPORT_SYMBOL vmlinux 0x2780cf97 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2794e17a kernel_sendpage +EXPORT_SYMBOL vmlinux 0x2796e2e6 block_write_full_page +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x2805da71 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x280bc39b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x28118cb6 __get_user_1 +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2818bcaf pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2830fee2 idr_get_next +EXPORT_SYMBOL vmlinux 0x285140e1 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x2854eb28 dmam_pool_create +EXPORT_SYMBOL vmlinux 0x286984ab generic_write_sync +EXPORT_SYMBOL vmlinux 0x288488d3 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x2897fc48 omap_cfg_reg +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28c615c4 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x28c7494a sk_reset_timer +EXPORT_SYMBOL vmlinux 0x28d6861d __vmalloc +EXPORT_SYMBOL vmlinux 0x28d85959 generic_permission +EXPORT_SYMBOL vmlinux 0x28e28174 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x28ee1a11 eth_header_parse +EXPORT_SYMBOL vmlinux 0x2904f0e8 clk_round_rate +EXPORT_SYMBOL vmlinux 0x29115774 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x296be509 omap_dss_get_overlay +EXPORT_SYMBOL vmlinux 0x29808e2a inet_sendpage +EXPORT_SYMBOL vmlinux 0x29a6cf17 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x29aeccd9 filemap_fault +EXPORT_SYMBOL vmlinux 0x29ea7e79 iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a0da046 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x2a1ed93e clk_add_alias +EXPORT_SYMBOL vmlinux 0x2a3aa678 _test_and_clear_bit +EXPORT_SYMBOL vmlinux 0x2a4179d7 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x2a62cea2 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x2a79ac13 clkdev_add +EXPORT_SYMBOL vmlinux 0x2a7b64f0 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2a878fe2 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x2a8aec48 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2a8e0667 tty_devnum +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa7a3cb __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x2ac6193b __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x2acbc65c mnt_pin +EXPORT_SYMBOL vmlinux 0x2acd5d13 __get_page_tail +EXPORT_SYMBOL vmlinux 0x2ae97066 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x2b072aec file_open_root +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3da4f1 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x2b478e16 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x2b688622 complete_and_exit +EXPORT_SYMBOL vmlinux 0x2b90cdaa mempool_create +EXPORT_SYMBOL vmlinux 0x2b93e75b inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bd86d11 iget5_locked +EXPORT_SYMBOL vmlinux 0x2bd89727 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x2be17af8 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x2bfcef99 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c1b30ff iterate_mounts +EXPORT_SYMBOL vmlinux 0x2c1e1ca2 sock_create +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c3c6646 mnt_unpin +EXPORT_SYMBOL vmlinux 0x2c6615fc snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL vmlinux 0x2ca17032 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x2cc65d90 bio_add_page +EXPORT_SYMBOL vmlinux 0x2cca6173 xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x2cd52b0b simple_release_fs +EXPORT_SYMBOL vmlinux 0x2cd8d457 bmap +EXPORT_SYMBOL vmlinux 0x2ce9a63c scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x2d02c0cd inet_addr_type +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d2f4baa end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x2d34a1b4 dq_data_lock +EXPORT_SYMBOL vmlinux 0x2d3d0e3c genl_register_family +EXPORT_SYMBOL vmlinux 0x2d4fb182 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x2d52652b bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x2d607ee2 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x2d6507b5 _find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0x2d76d483 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2da54813 inet_getname +EXPORT_SYMBOL vmlinux 0x2dacbe20 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x2dae4b5d mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x2dd8653e pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x2dda73ae ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x2ddd9482 skb_append +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0a3115 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put +EXPORT_SYMBOL vmlinux 0x2e27459d snd_card_disconnect +EXPORT_SYMBOL vmlinux 0x2e2a54b0 snd_timer_stop +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5810c6 __aeabi_unwind_cpp_pr1 +EXPORT_SYMBOL vmlinux 0x2ea4d1fa journal_wipe +EXPORT_SYMBOL vmlinux 0x2ec01ae8 single_open +EXPORT_SYMBOL vmlinux 0x2ec43bb7 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ee1c05d sk_receive_skb +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef20076 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f06acb2 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x2f08d21e tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x2f369e1e nf_register_hook +EXPORT_SYMBOL vmlinux 0x2f4294d6 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x2f4f2346 tty_name +EXPORT_SYMBOL vmlinux 0x2f857079 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0x2f8749e4 snd_ctl_find_id +EXPORT_SYMBOL vmlinux 0x2f88a039 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x2f891886 netdev_features_change +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fbb0b88 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x2fd4fc8f snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL vmlinux 0x2fd80048 simple_setattr +EXPORT_SYMBOL vmlinux 0x2fd85baf ___ratelimit +EXPORT_SYMBOL vmlinux 0x2fed65cc fb_show_logo +EXPORT_SYMBOL vmlinux 0x2ff0dab6 snd_timer_interrupt +EXPORT_SYMBOL vmlinux 0x2ffe96a2 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x3006e61a inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x300c615d blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x302055d7 fb_set_suspend +EXPORT_SYMBOL vmlinux 0x30244d24 uart_resume_port +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x307e7d0f dev_addr_del +EXPORT_SYMBOL vmlinux 0x308aad56 omap_vrfb_min_phys_size +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30bc8e1b md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30c2e2af ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30cb14e5 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x31043cb0 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x312a36c9 snd_unregister_oss_device +EXPORT_SYMBOL vmlinux 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x313ffc4d set_security_override +EXPORT_SYMBOL vmlinux 0x31426218 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3151f41e neigh_seq_start +EXPORT_SYMBOL vmlinux 0x316dd1cd __wait_on_bit +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31a71a39 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x31a92e36 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31df1b0e skb_copy_expand +EXPORT_SYMBOL vmlinux 0x31f03185 _snd_ctl_add_slave +EXPORT_SYMBOL vmlinux 0x31fb1aeb elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x321866a1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x322014ec mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x3246243e security_path_chmod +EXPORT_SYMBOL vmlinux 0x32618c54 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328ba99b scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x32d42c10 inode_permission +EXPORT_SYMBOL vmlinux 0x3312f7b3 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x3314647e generic_file_mmap +EXPORT_SYMBOL vmlinux 0x331ced12 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x33211758 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x33613a69 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x336c05f8 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33b8d67f __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x33baae8c sg_miter_next +EXPORT_SYMBOL vmlinux 0x33cefbae omap_dss_find_device +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 0x342c937d alloc_disk_node +EXPORT_SYMBOL vmlinux 0x3441e442 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x344e0fe5 seq_write +EXPORT_SYMBOL vmlinux 0x344e45d0 udp_sendmsg +EXPORT_SYMBOL vmlinux 0x3461a2f7 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x34621b43 netdev_state_change +EXPORT_SYMBOL vmlinux 0x346cd864 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3487c236 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x3492b335 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x3493acdd __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34a98e8c tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x34ae248f tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x34ed99a2 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x3504d638 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x353e3fa5 __get_user_4 +EXPORT_SYMBOL vmlinux 0x3542f055 vfs_read +EXPORT_SYMBOL vmlinux 0x35568ba3 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x355f425c kobject_set_name +EXPORT_SYMBOL vmlinux 0x35610e05 clk_get +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35c6ef03 empty_aops +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35d91f85 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x35da1ab7 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3600ef49 amba_request_regions +EXPORT_SYMBOL vmlinux 0x3604abd0 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360c2c84 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x360ee3f3 mii_link_ok +EXPORT_SYMBOL vmlinux 0x3612c10f tmio_core_mmc_enable +EXPORT_SYMBOL vmlinux 0x36294c68 tty_port_init +EXPORT_SYMBOL vmlinux 0x364b3fff up +EXPORT_SYMBOL vmlinux 0x364c6d8f fb_pan_display +EXPORT_SYMBOL vmlinux 0x365260ce ip_check_defrag +EXPORT_SYMBOL vmlinux 0x366125e6 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x36799b63 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x369d55de ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x36a2488d zero_fill_bio +EXPORT_SYMBOL vmlinux 0x36b8499c kmalloc_caches +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f271a0 follow_down +EXPORT_SYMBOL vmlinux 0x370c8936 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x370db4a8 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x371b9574 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x371ef233 snd_pcm_mmap_data +EXPORT_SYMBOL vmlinux 0x371ef8db md_flush_request +EXPORT_SYMBOL vmlinux 0x372b949f snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3744fc63 kill_litter_super +EXPORT_SYMBOL vmlinux 0x376b5929 omapdss_default_get_timings +EXPORT_SYMBOL vmlinux 0x37739222 scsi_host_get +EXPORT_SYMBOL vmlinux 0x377779c6 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3778f45c igrab +EXPORT_SYMBOL vmlinux 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL vmlinux 0x37b1e0ea d_prune_aliases +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37ba3e46 i2c_master_send +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37c538dc ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x37d3ab9a xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x382eab43 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x385a0bd6 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x387edff4 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38af62e2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x38b81f68 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x38b9e084 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x38ed1388 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x38f51608 __napi_schedule +EXPORT_SYMBOL vmlinux 0x390964e4 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x39119ff1 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x392a5d1c elevator_exit +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3950711a of_match_device +EXPORT_SYMBOL vmlinux 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL vmlinux 0x397cbac5 blk_peek_request +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399365a8 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x39a60abd snd_ctl_remove +EXPORT_SYMBOL vmlinux 0x39a8e5e8 lock_fb_info +EXPORT_SYMBOL vmlinux 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL vmlinux 0x39e93bc3 sk_wait_data +EXPORT_SYMBOL vmlinux 0x3a1bffe5 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x3a2247bd skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x3a379740 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x3a4c2043 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x3a77df32 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x3a8788df __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x3a983ed4 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9c7b85 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x3aa16502 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ae2b14c datagram_poll +EXPORT_SYMBOL vmlinux 0x3b2ed648 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b398e51 fget +EXPORT_SYMBOL vmlinux 0x3b6f30c6 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x3b7f8e27 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x3b91f3af snd_free_pages +EXPORT_SYMBOL vmlinux 0x3b9541d0 omap_dss_unregister_driver +EXPORT_SYMBOL vmlinux 0x3ba5c359 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x3bbccc7f udp_prot +EXPORT_SYMBOL vmlinux 0x3bbf46ea vga_base +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bfd41b5 do_sync_write +EXPORT_SYMBOL vmlinux 0x3bfde872 skb_unlink +EXPORT_SYMBOL vmlinux 0x3c011bfd get_user_pages +EXPORT_SYMBOL vmlinux 0x3c1ef7c7 down_read_trylock +EXPORT_SYMBOL vmlinux 0x3c77542e unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c87faf1 input_allocate_device +EXPORT_SYMBOL vmlinux 0x3c92eb55 snd_register_oss_device +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cf7b415 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d3932e3 __module_get +EXPORT_SYMBOL vmlinux 0x3d3c540f elf_hwcap +EXPORT_SYMBOL vmlinux 0x3d66b5bb tc_classify +EXPORT_SYMBOL vmlinux 0x3d7063b5 find_get_page +EXPORT_SYMBOL vmlinux 0x3d86067c seq_lseek +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dd33bbe sockfd_lookup +EXPORT_SYMBOL vmlinux 0x3ddd8e31 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x3de56609 snd_timer_open +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0dfd7e genphy_suspend +EXPORT_SYMBOL vmlinux 0x3e1d9fc4 snd_pcm_limit_hw_rates +EXPORT_SYMBOL vmlinux 0x3e2d64cd __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x3e2e01bf pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e56b54f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3e679d3c sock_init_data +EXPORT_SYMBOL vmlinux 0x3e686c75 mount_single +EXPORT_SYMBOL vmlinux 0x3e6b0b00 request_key +EXPORT_SYMBOL vmlinux 0x3e704902 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x3e7062f5 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x3e884f4b vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea468e1 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3eca76dd snd_timer_global_free +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ed676ed blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x3f0172ab tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x3f42c48a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6766e1 dev_load +EXPORT_SYMBOL vmlinux 0x3f705562 sock_recvmsg +EXPORT_SYMBOL vmlinux 0x3f88fafb generic_writepages +EXPORT_SYMBOL vmlinux 0x3fcc763e kill_bdev +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x403797d0 get_super_thawed +EXPORT_SYMBOL vmlinux 0x403ab398 snd_pcm_hw_param_last +EXPORT_SYMBOL vmlinux 0x4049933e security_path_symlink +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x407136b1 __put_user_8 +EXPORT_SYMBOL vmlinux 0x407a3275 omap_start_dma +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40979285 mb_cache_entry_find_next +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 0x40a6f522 __arm_ioremap +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40dcd4e1 da903x_query_status +EXPORT_SYMBOL vmlinux 0x40f07981 __ashldi3 +EXPORT_SYMBOL vmlinux 0x4102b820 __inet6_hash +EXPORT_SYMBOL vmlinux 0x41173a81 serio_open +EXPORT_SYMBOL vmlinux 0x41220e7e bio_clone +EXPORT_SYMBOL vmlinux 0x41222d20 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x4127a5d2 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x412acb88 dev_mc_add +EXPORT_SYMBOL vmlinux 0x41380186 lock_super +EXPORT_SYMBOL vmlinux 0x413894e2 ilookup +EXPORT_SYMBOL vmlinux 0x413d1e88 scsi_add_device +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414a52ea dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x414d61f3 devm_ioremap +EXPORT_SYMBOL vmlinux 0x4150ec32 __brelse +EXPORT_SYMBOL vmlinux 0x4183d9a9 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41bfc910 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x41c00c2b mmc_release_host +EXPORT_SYMBOL vmlinux 0x41d568d6 of_device_is_available +EXPORT_SYMBOL vmlinux 0x41fad8d0 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x4217ff46 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x422ae09e ip_route_input_common +EXPORT_SYMBOL vmlinux 0x4254afa8 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x428096f4 kill_pgrp +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42aacd27 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x42abc0e6 prepare_binprm +EXPORT_SYMBOL vmlinux 0x42afe934 sock_wake_async +EXPORT_SYMBOL vmlinux 0x42b144b0 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x42b4eba5 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x42ee1838 __breadahead +EXPORT_SYMBOL vmlinux 0x42f9bc35 set_disk_ro +EXPORT_SYMBOL vmlinux 0x42fedb96 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x4300f0b7 register_sound_special +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x4306104c iget_locked +EXPORT_SYMBOL vmlinux 0x431d8451 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x4325b4df jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x43450264 snd_pcm_stop +EXPORT_SYMBOL vmlinux 0x4347b971 idr_init +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x4361a651 of_phy_find_device +EXPORT_SYMBOL vmlinux 0x436a1d3e lg_local_unlock +EXPORT_SYMBOL vmlinux 0x436d2d89 elv_rb_find +EXPORT_SYMBOL vmlinux 0x437a6fc3 sock_i_ino +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43bcbc84 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f5195e dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x440109fe n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x441ed159 omap_get_dma_src_pos +EXPORT_SYMBOL vmlinux 0x441f8e4e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x442495c9 tmio_core_mmc_resume +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4439c06c ip_getsockopt +EXPORT_SYMBOL vmlinux 0x443d528a filp_open +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x44643b93 __aeabi_lmul +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x447bbcdc __find_get_block +EXPORT_SYMBOL vmlinux 0x4483e87d inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x4496e34b netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44da5d0f __csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efd447 omap_dss_stop_device +EXPORT_SYMBOL vmlinux 0x44f24f9a ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4556f2c5 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x457372e2 arp_invalidate +EXPORT_SYMBOL vmlinux 0x45756e17 of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a280b6 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x45a32071 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x45a580d7 snd_card_register +EXPORT_SYMBOL vmlinux 0x45a8fbaa down_timeout +EXPORT_SYMBOL vmlinux 0x45ba232a get_super +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45bda0d5 system_serial_low +EXPORT_SYMBOL vmlinux 0x45c9fcad lookup_bdev +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x4601ae1d unregister_nls +EXPORT_SYMBOL vmlinux 0x460ea1c5 udplite_table +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466fd684 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x4681c6e9 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x4687762a tc6393xb_lcd_mode +EXPORT_SYMBOL vmlinux 0x46c4b962 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x46d3b28c __div0 +EXPORT_SYMBOL vmlinux 0x46ef1318 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x47035ec0 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x47162a99 key_unlink +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x47738399 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x4793c7b1 update_time +EXPORT_SYMBOL vmlinux 0x479dc505 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c45f42 user_revoke +EXPORT_SYMBOL vmlinux 0x47ea7b28 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x47f757de elf_platform +EXPORT_SYMBOL vmlinux 0x48125adb kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x481aa411 snd_seq_root +EXPORT_SYMBOL vmlinux 0x482298fd unregister_quota_format +EXPORT_SYMBOL vmlinux 0x483af0e2 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x483ec199 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4846f530 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4852f869 block_write_begin +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485c99cc mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x48704908 snd_jack_set_parent +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48849e3f try_to_release_page +EXPORT_SYMBOL vmlinux 0x48954949 unlock_buffer +EXPORT_SYMBOL vmlinux 0x489ecce4 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x48a5b067 __machine_arch_type +EXPORT_SYMBOL vmlinux 0x48eae4e2 skb_push +EXPORT_SYMBOL vmlinux 0x48ee492e xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490b1367 blk_init_queue +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x497f1bca blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x4982b64f jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x4983f3ea unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x4988e3b7 sock_no_accept +EXPORT_SYMBOL vmlinux 0x499bfbf2 devm_iounmap +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c58e5d file_remove_suid +EXPORT_SYMBOL vmlinux 0x49c6aa20 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x49db5768 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x49ebacbd _clear_bit +EXPORT_SYMBOL vmlinux 0x49f543c8 bdi_unregister +EXPORT_SYMBOL vmlinux 0x49f8a184 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49fe734c handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4a093833 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x4a2d6bd4 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x4a35361d uart_suspend_port +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 0x4a4ffbc1 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x4a51dce6 omap_dss_get_next_device +EXPORT_SYMBOL vmlinux 0x4a71f939 led_brightness_set +EXPORT_SYMBOL vmlinux 0x4a9e5abe phy_print_status +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4abdb61c seq_printf +EXPORT_SYMBOL vmlinux 0x4ad0a85a journal_set_features +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b015768 snd_iprintf +EXPORT_SYMBOL vmlinux 0x4b142e72 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b20cbd2 ida_remove +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5f79fd __scm_destroy +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b70a17d vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x4b8faa08 __scm_send +EXPORT_SYMBOL vmlinux 0x4be0161c ps2_command +EXPORT_SYMBOL vmlinux 0x4c059aba journal_abort +EXPORT_SYMBOL vmlinux 0x4c0f59e2 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c11cdb2 empty_zero_page +EXPORT_SYMBOL vmlinux 0x4c16773d textsearch_unregister +EXPORT_SYMBOL vmlinux 0x4c21cc42 blk_get_queue +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c62fded inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x4c78cada scsi_remove_device +EXPORT_SYMBOL vmlinux 0x4c9898d8 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x4c991168 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf6cf63 snd_register_device_for_dev +EXPORT_SYMBOL vmlinux 0x4d0d163d copy_page +EXPORT_SYMBOL vmlinux 0x4d13b1a6 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x4d240987 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x4d29bd61 inetdev_by_index +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d40aee5 sock_release +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d697ce4 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x4d8ed115 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9afc39 page_readlink +EXPORT_SYMBOL vmlinux 0x4d9b6d35 snd_pcm_format_size +EXPORT_SYMBOL vmlinux 0x4db573f0 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4dcf39a9 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x4de6e3a7 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e2b2299 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e506013 omap_dma_link_lch +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e748dcd down_read +EXPORT_SYMBOL vmlinux 0x4e7575ee key_type_keyring +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e8d3e48 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x4e9746fd sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4ebdc2f4 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x4ed70e07 clk_get_rate +EXPORT_SYMBOL vmlinux 0x4efe96e8 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x4f0d7ce6 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x4f1401c4 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f283f47 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f61c5bb udp_ioctl +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f7c932e twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x4f816e9b snd_pcm_format_big_endian +EXPORT_SYMBOL vmlinux 0x4f833685 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x4f89c9de gpmc_cs_free +EXPORT_SYMBOL vmlinux 0x4fa5447e pipe_unlock +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x502f6124 km_query +EXPORT_SYMBOL vmlinux 0x504648b4 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5059c385 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x50c25cc3 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x50c71330 idr_get_new +EXPORT_SYMBOL vmlinux 0x50ccff03 omap_dma_set_prio_lch +EXPORT_SYMBOL vmlinux 0x50cd35e7 __quota_error +EXPORT_SYMBOL vmlinux 0x50cf5efb mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x5100e8e4 kobject_add +EXPORT_SYMBOL vmlinux 0x510e6212 netif_skb_features +EXPORT_SYMBOL vmlinux 0x5111a1c8 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x511746c1 dump_fpu +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511ccebe kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x5133f4ac ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515802c0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x5169161d omap_free_dma_chain +EXPORT_SYMBOL vmlinux 0x516dc7c5 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x516e9695 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x517862c2 netif_napi_del +EXPORT_SYMBOL vmlinux 0x51908eb8 __raw_writesl +EXPORT_SYMBOL vmlinux 0x51a6512c tty_free_termios +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e07f5d dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x51e77c97 pfn_valid +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x51f06805 dump_write +EXPORT_SYMBOL vmlinux 0x51f375c8 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52057bae mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5206509b snd_device_free +EXPORT_SYMBOL vmlinux 0x52106625 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x5210d066 elevator_init +EXPORT_SYMBOL vmlinux 0x523c6dca ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x52442c6a phy_driver_register +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52917690 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x52a11264 send_sig +EXPORT_SYMBOL vmlinux 0x52b9cb26 sock_register +EXPORT_SYMBOL vmlinux 0x52c0f928 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x52d2e6ae key_validate +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL vmlinux 0x52ebc9c4 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x52efd766 __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5315fa97 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x531fe2e2 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x5326c46c register_sound_midi +EXPORT_SYMBOL vmlinux 0x532f13e9 dquot_release +EXPORT_SYMBOL vmlinux 0x5331eabb ida_simple_get +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x535b9eca blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x5364e479 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x536a761b journal_clear_err +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ba4e7c up_write +EXPORT_SYMBOL vmlinux 0x53baf7d6 start_tty +EXPORT_SYMBOL vmlinux 0x53ccb820 tty_shutdown +EXPORT_SYMBOL vmlinux 0x53d85b38 mdiobus_write +EXPORT_SYMBOL vmlinux 0x54002836 mpage_writepage +EXPORT_SYMBOL vmlinux 0x540a721d snd_timer_global_register +EXPORT_SYMBOL vmlinux 0x540aae89 dev_uc_del +EXPORT_SYMBOL vmlinux 0x543d596b journal_stop +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5452ff4a tty_hangup +EXPORT_SYMBOL vmlinux 0x54603877 udp_seq_open +EXPORT_SYMBOL vmlinux 0x54659c69 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x5481762a dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x548c054e dqput +EXPORT_SYMBOL vmlinux 0x54a88729 of_phy_connect +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54abfa8b dev_get_stats +EXPORT_SYMBOL vmlinux 0x54bbe9b8 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x54d0a8b8 get_write_access +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5501bf0e cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5524fa65 snd_pcm_lib_write +EXPORT_SYMBOL vmlinux 0x55401511 simple_rename +EXPORT_SYMBOL vmlinux 0x5559e3c4 snd_device_register +EXPORT_SYMBOL vmlinux 0x55846e5c snd_jack_new +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55e116c1 touch_atime +EXPORT_SYMBOL vmlinux 0x55fae982 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x5613b469 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x561bc6ff rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x562ad513 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56501718 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x56789ac5 omap_set_dma_color_mode +EXPORT_SYMBOL vmlinux 0x567bffe0 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x56971c3a scm_fp_dup +EXPORT_SYMBOL vmlinux 0x56b925bc mmc_detect_change +EXPORT_SYMBOL vmlinux 0x56c8089d alloc_disk +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d92cc1 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x56eff735 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x56f7951f of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x570c86a6 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x570e03f1 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x57292802 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57302a87 mmc_free_host +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x576a47a7 inet_accept +EXPORT_SYMBOL vmlinux 0x57bb11b0 __kfree_skb +EXPORT_SYMBOL vmlinux 0x57bc35d7 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x58516557 omap_set_dma_src_data_pack +EXPORT_SYMBOL vmlinux 0x588b76d2 register_netdev +EXPORT_SYMBOL vmlinux 0x58af5b12 netdev_set_master +EXPORT_SYMBOL vmlinux 0x58bb30e2 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x58d086d9 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x5915b77a rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593f655c blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594e1317 __modsi3 +EXPORT_SYMBOL vmlinux 0x594fd546 omap_prcm_get_reset_sources +EXPORT_SYMBOL vmlinux 0x59579c26 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x596ac851 dentry_open +EXPORT_SYMBOL vmlinux 0x5998ecd7 inode_init_owner +EXPORT_SYMBOL vmlinux 0x59b7464a dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x59d17347 snd_unregister_device +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59e5070d __do_div64 +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a0de649 md_done_sync +EXPORT_SYMBOL vmlinux 0x5a2d5113 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x5a35a8e5 km_state_expired +EXPORT_SYMBOL vmlinux 0x5a59f820 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5aa2077b revert_creds +EXPORT_SYMBOL vmlinux 0x5aec1e60 cdev_init +EXPORT_SYMBOL vmlinux 0x5b129424 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x5b14e9f1 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b196f59 __register_binfmt +EXPORT_SYMBOL vmlinux 0x5b30be23 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x5b334156 down_killable +EXPORT_SYMBOL vmlinux 0x5b8bcb70 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x5b8e3205 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x5b9303ed tcf_hash_search +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb3a238 do_SAK +EXPORT_SYMBOL vmlinux 0x5bb5fd46 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x5bbc0d2e snd_ctl_boolean_mono_info +EXPORT_SYMBOL vmlinux 0x5bc1f55c dm_put_device +EXPORT_SYMBOL vmlinux 0x5bf27f25 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5bf4a1eb sg_last +EXPORT_SYMBOL vmlinux 0x5bfceb78 dquot_operations +EXPORT_SYMBOL vmlinux 0x5c00d881 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x5c6b2ee6 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x5c9284a0 processor_id +EXPORT_SYMBOL vmlinux 0x5cb274a3 dev_mc_flush +EXPORT_SYMBOL vmlinux 0x5cca7f9c cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x5cdabc40 backlight_device_register +EXPORT_SYMBOL vmlinux 0x5cdad235 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x5d000101 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x5d090824 sk_run_filter +EXPORT_SYMBOL vmlinux 0x5d0a04d8 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d156ac8 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x5d15ae0b xfrm_register_type +EXPORT_SYMBOL vmlinux 0x5d19fe45 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x5d233bdc thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x5d2562eb vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5d2a2bda snd_dma_free_pages +EXPORT_SYMBOL vmlinux 0x5d361887 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x5d54fac7 phy_device_register +EXPORT_SYMBOL vmlinux 0x5d5a6bc5 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6206ab __destroy_inode +EXPORT_SYMBOL vmlinux 0x5d6ef4c7 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x5d9ff9d4 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x5dc54e58 tcp_connect +EXPORT_SYMBOL vmlinux 0x5dcd0747 read_dev_sector +EXPORT_SYMBOL vmlinux 0x5dd01bbb simple_fill_super +EXPORT_SYMBOL vmlinux 0x5dd1e3c3 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x5dee38a0 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x5df616cb dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x5e0394b2 skb_split +EXPORT_SYMBOL vmlinux 0x5e0f4e72 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5e10b03e input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x5e402da9 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x5e408f65 del_gendisk +EXPORT_SYMBOL vmlinux 0x5e5f4406 ata_link_printk +EXPORT_SYMBOL vmlinux 0x5e60eb27 omap_dma_unlink_lch +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ecfb35d __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef4d861 seq_bitmap +EXPORT_SYMBOL vmlinux 0x5f0011c7 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0e46da scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x5f108d10 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x5f1a363b unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f257724 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f464cf0 input_reset_device +EXPORT_SYMBOL vmlinux 0x5f497aeb pipe_lock +EXPORT_SYMBOL vmlinux 0x5f532252 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f634ed1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x5f6e42ef tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f81645f scsi_print_result +EXPORT_SYMBOL vmlinux 0x5f9410e6 genphy_resume +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fb04d37 vfs_mknod +EXPORT_SYMBOL vmlinux 0x5fbaf8fa simple_transaction_read +EXPORT_SYMBOL vmlinux 0x5fc6cf2f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x600cb821 udp_disconnect +EXPORT_SYMBOL vmlinux 0x601cb951 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL vmlinux 0x602f4755 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x6031feea scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60ab28ae mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x60b0b67d snd_mixer_oss_notify_callback +EXPORT_SYMBOL vmlinux 0x60e32666 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x60f5ea2b netdev_update_features +EXPORT_SYMBOL vmlinux 0x60f71cfa complete +EXPORT_SYMBOL vmlinux 0x611d79bf scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x617a8702 get_task_io_context +EXPORT_SYMBOL vmlinux 0x61a79f08 __irq_regs +EXPORT_SYMBOL vmlinux 0x61a82935 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bf3539 wireless_send_event +EXPORT_SYMBOL vmlinux 0x61d35164 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x61eb9983 generic_setlease +EXPORT_SYMBOL vmlinux 0x61f0d306 poll_initwait +EXPORT_SYMBOL vmlinux 0x61f6d51b make_EII_client +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x624d7359 address_space_init_once +EXPORT_SYMBOL vmlinux 0x62521759 nobh_write_end +EXPORT_SYMBOL vmlinux 0x6253fef7 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x625d831d mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x62a003ce find_vma +EXPORT_SYMBOL vmlinux 0x62b72b0d mutex_unlock +EXPORT_SYMBOL vmlinux 0x62cc569e cpu_present_mask +EXPORT_SYMBOL vmlinux 0x62e71ae7 sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630a518c generic_fillattr +EXPORT_SYMBOL vmlinux 0x63129fa9 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63478c93 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0x634afa6a sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x634b7eff tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x636b3461 omap_dss_get_num_overlays +EXPORT_SYMBOL vmlinux 0x63711d60 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x63847cf1 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x6386ed50 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x638fde23 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63942651 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x63ab2604 irq_stat +EXPORT_SYMBOL vmlinux 0x63adb712 phy_attach +EXPORT_SYMBOL vmlinux 0x63b87fc5 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x63d55a3a generic_getxattr +EXPORT_SYMBOL vmlinux 0x63dfba18 netlink_broadcast +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6419c29a task_nice +EXPORT_SYMBOL vmlinux 0x641bb9ab register_framebuffer +EXPORT_SYMBOL vmlinux 0x642638d7 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x64268641 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x6429a3bd __napi_complete +EXPORT_SYMBOL vmlinux 0x6445c46f simple_link +EXPORT_SYMBOL vmlinux 0x645cf90b in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x646284c6 security_path_chown +EXPORT_SYMBOL vmlinux 0x64826938 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x649b8c17 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x649ced25 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x64bc5881 fput +EXPORT_SYMBOL vmlinux 0x64c03117 posix_test_lock +EXPORT_SYMBOL vmlinux 0x64cbb4c8 snd_timer_notify +EXPORT_SYMBOL vmlinux 0x64d233c8 ioremap_page +EXPORT_SYMBOL vmlinux 0x64e880b9 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x650f81f4 cdrom_open +EXPORT_SYMBOL vmlinux 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651605f2 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65369ec2 snd_pcm_lib_read +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x654c3494 blk_complete_request +EXPORT_SYMBOL vmlinux 0x65518c89 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x655a5577 dqget +EXPORT_SYMBOL vmlinux 0x656bf0c2 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x657af67b d_invalidate +EXPORT_SYMBOL vmlinux 0x657f2f0c blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x658a6160 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x65909849 key_task_permission +EXPORT_SYMBOL vmlinux 0x65a38e24 dget_parent +EXPORT_SYMBOL vmlinux 0x65ccffcd xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x65d8ade7 set_bh_page +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6609b110 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x66458b2c sock_map_fd +EXPORT_SYMBOL vmlinux 0x66556052 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x6672efca xfrm_init_state +EXPORT_SYMBOL vmlinux 0x667e14d0 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669d139b iunique +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66af0737 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x66fd67ca tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x66fe2d17 secpath_dup +EXPORT_SYMBOL vmlinux 0x66ffb625 user_path_create +EXPORT_SYMBOL vmlinux 0x6725306a tcp_check_req +EXPORT_SYMBOL vmlinux 0x673397f3 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x673612a3 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x673b024f snd_device_new +EXPORT_SYMBOL vmlinux 0x674b468b ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x67650076 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x676bbc0f _set_bit +EXPORT_SYMBOL vmlinux 0x676c8b3e udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x676d2cf9 add_disk +EXPORT_SYMBOL vmlinux 0x677ecc40 genphy_update_link +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67be1d3d cpu_active_mask +EXPORT_SYMBOL vmlinux 0x67bf09d2 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x67ed9db9 rtnl_notify +EXPORT_SYMBOL vmlinux 0x67fa0193 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x68073142 __sock_create +EXPORT_SYMBOL vmlinux 0x6810dc8d ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x6824e3e4 dev_alert +EXPORT_SYMBOL vmlinux 0x68300603 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x6838c0dc ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x6845cecf phy_stop +EXPORT_SYMBOL vmlinux 0x685f2cf7 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x686d8642 tty_kref_put +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x689043e5 mii_check_media +EXPORT_SYMBOL vmlinux 0x689a183d snd_pcm_new +EXPORT_SYMBOL vmlinux 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL vmlinux 0x68aa2977 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x68aed661 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x68cc8345 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x68cd7893 journal_start_commit +EXPORT_SYMBOL vmlinux 0x68cfabbc omap_dss_start_device +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x690ee1bc devm_free_irq +EXPORT_SYMBOL vmlinux 0x692e7214 journal_errno +EXPORT_SYMBOL vmlinux 0x69561575 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6969afb0 __nla_put +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x697c1188 alloc_file +EXPORT_SYMBOL vmlinux 0x69940ee3 __get_user_pages +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b6f8d9 omap_set_dma_transfer_params +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e09a48 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0acf3e netdev_change_features +EXPORT_SYMBOL vmlinux 0x6a3bcc9c cdev_add +EXPORT_SYMBOL vmlinux 0x6a559116 rtc_lock +EXPORT_SYMBOL vmlinux 0x6a6fa8b4 contig_page_data +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78e42f bio_copy_user +EXPORT_SYMBOL vmlinux 0x6a89f411 inet6_bind +EXPORT_SYMBOL vmlinux 0x6a971b2a eth_type_trans +EXPORT_SYMBOL vmlinux 0x6aa051ad uart_register_driver +EXPORT_SYMBOL vmlinux 0x6ab342e1 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x6acd0e34 snd_dma_reserve_buf +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2c7424 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b5a7057 ida_destroy +EXPORT_SYMBOL vmlinux 0x6b607305 neigh_destroy +EXPORT_SYMBOL vmlinux 0x6b63f98c bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6baa3d9a eth_mac_addr +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6baed957 bioset_create +EXPORT_SYMBOL vmlinux 0x6bbe2301 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bcc0f65 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x6bd30203 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be056a4 put_page +EXPORT_SYMBOL vmlinux 0x6bf2ec75 simple_rmdir +EXPORT_SYMBOL vmlinux 0x6c1bbedf nf_log_register +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c878b2a phy_disconnect +EXPORT_SYMBOL vmlinux 0x6c94d4c7 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x6cb7e84a scsi_execute_req +EXPORT_SYMBOL vmlinux 0x6cc1749b jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x6ccf7bd7 __pv_phys_offset +EXPORT_SYMBOL vmlinux 0x6cd4005e jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x6cdbd724 dquot_initialize +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6ce9c13b dcache_dir_close +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +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 0x6d5f8b4b brioctl_set +EXPORT_SYMBOL vmlinux 0x6d662533 _find_first_bit_le +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d770e77 netdev_emerg +EXPORT_SYMBOL vmlinux 0x6d7c7c1a mapping_tagged +EXPORT_SYMBOL vmlinux 0x6db987eb default_file_splice_read +EXPORT_SYMBOL vmlinux 0x6dd1d921 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x6dd3f41f __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6dda6957 tty_check_change +EXPORT_SYMBOL vmlinux 0x6dec858d nf_register_sockopt +EXPORT_SYMBOL vmlinux 0x6ded92cc of_dev_put +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e0880c2 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x6e123a69 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x6e171b6b unload_nls +EXPORT_SYMBOL vmlinux 0x6e2403df tty_port_put +EXPORT_SYMBOL vmlinux 0x6e37e0d9 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x6e3aef96 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x6e40794b blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x6e446484 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x6e469121 follow_up +EXPORT_SYMBOL vmlinux 0x6e507e91 nf_afinfo +EXPORT_SYMBOL vmlinux 0x6e5e6760 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x6e6de0ac gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x6e6e7d31 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e7a1bda dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x6e7f5dbe phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL vmlinux 0x6ef92f7c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f48cdda genl_notify +EXPORT_SYMBOL vmlinux 0x6f4c4256 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x6fabeb23 snd_pcm_hw_refine +EXPORT_SYMBOL vmlinux 0x6fb2e2e7 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0x6fb5943e snd_ctl_replace +EXPORT_SYMBOL vmlinux 0x6fbed676 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x6fc614da snd_ctl_register_ioctl +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x70097aa0 nand_bch_free +EXPORT_SYMBOL vmlinux 0x701d2014 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x701e2ef6 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x70223b40 snd_dma_alloc_pages +EXPORT_SYMBOL vmlinux 0x70334158 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x7052352d mtd_concat_destroy +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7064117b tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x70655ded km_new_mapping +EXPORT_SYMBOL vmlinux 0x70733c05 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0x70acf920 is_container_init +EXPORT_SYMBOL vmlinux 0x70b74cf5 bio_map_user +EXPORT_SYMBOL vmlinux 0x70bab5d0 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f096 omapdss_sdi_display_enable +EXPORT_SYMBOL vmlinux 0x70da54ef amba_driver_register +EXPORT_SYMBOL vmlinux 0x70da6d92 framebuffer_release +EXPORT_SYMBOL vmlinux 0x70dd1a12 gpmc_cs_configure +EXPORT_SYMBOL vmlinux 0x70eecf85 __invalidate_device +EXPORT_SYMBOL vmlinux 0x710a2bd2 mmc_cleanup_queue +EXPORT_SYMBOL vmlinux 0x71122bf1 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x711cbeb4 d_path +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x714d6918 override_creds +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71879705 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71bb69ba d_splice_alias +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e9df9d abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x71fb2903 arm_coherent_dma_ops +EXPORT_SYMBOL vmlinux 0x7205f022 d_delete +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723573bb unregister_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x7244dec7 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x724f9e25 bh_submit_read +EXPORT_SYMBOL vmlinux 0x72559cdc snd_pcm_lib_readv +EXPORT_SYMBOL vmlinux 0x7264404f register_sound_dsp +EXPORT_SYMBOL vmlinux 0x7277dcf6 arp_find +EXPORT_SYMBOL vmlinux 0x7278b086 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x72c15dd9 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x72c564c7 block_truncate_page +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72eaf1cc check_disk_size_change +EXPORT_SYMBOL vmlinux 0x73045620 ppp_input_error +EXPORT_SYMBOL vmlinux 0x730c187d find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731c50e3 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL vmlinux 0x732119dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x733a0165 register_quota_format +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x7348d2d1 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x737ac25d dql_reset +EXPORT_SYMBOL vmlinux 0x737b884b scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73841754 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x739edb7c open_exec +EXPORT_SYMBOL vmlinux 0x739f0e28 inet_put_port +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73fbcde6 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x73fe964c scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x7406376e filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74807f3a __seq_open_private +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x748f4e34 do_truncate +EXPORT_SYMBOL vmlinux 0x74bc8a62 dev_warn +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c1a136 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x74ccc82e of_get_property +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751903f9 get_phy_device +EXPORT_SYMBOL vmlinux 0x75359d07 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x755d02a6 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x756b1ef4 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x7585cb3b __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x75897e89 input_close_device +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75a17bed prepare_to_wait +EXPORT_SYMBOL vmlinux 0x75a92b91 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x75ad2ffd blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75d29147 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x75fee7fd __raw_writesb +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7616f05a __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x7620e99f simple_statfs +EXPORT_SYMBOL vmlinux 0x762d5a92 clk_enable +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764d4120 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL vmlinux 0x7652f0cd mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x7682e28c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x76838750 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x76881360 leds_event +EXPORT_SYMBOL vmlinux 0x76a5b356 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x76b9924c __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76c71485 cdrom_release +EXPORT_SYMBOL vmlinux 0x76cf47f6 __aeabi_llsl +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x77539a77 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x77fc60bb elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x78105cb7 kstat +EXPORT_SYMBOL vmlinux 0x783672ab dpi_set_timings +EXPORT_SYMBOL vmlinux 0x78480c97 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x78549f3e end_page_writeback +EXPORT_SYMBOL vmlinux 0x78640648 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x786d5414 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x786ec341 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x7896d8ee of_device_unregister +EXPORT_SYMBOL vmlinux 0x789bf682 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x78f6921f ppp_channel_index +EXPORT_SYMBOL vmlinux 0x79041b1e phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x791a9efb of_match_node +EXPORT_SYMBOL vmlinux 0x793699d9 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x793e37d6 amba_device_unregister +EXPORT_SYMBOL vmlinux 0x7943dda7 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x794487ee disable_hlt +EXPORT_SYMBOL vmlinux 0x795a86ad vfs_getattr +EXPORT_SYMBOL vmlinux 0x796d56bd __init_rwsem +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x798e2fe5 init_task +EXPORT_SYMBOL vmlinux 0x799a79e1 bio_copy_kern +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x7a26854d of_get_mac_address +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a2b37d6 clk_get_parent +EXPORT_SYMBOL vmlinux 0x7a3988c5 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4a32a9 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x7a4beafa get_unmapped_area +EXPORT_SYMBOL vmlinux 0x7a78310d of_get_parent +EXPORT_SYMBOL vmlinux 0x7a91726b clkdev_alloc +EXPORT_SYMBOL vmlinux 0x7a9187a3 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac4967b scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x7adb5bca nand_scan_tail +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL vmlinux 0x7afd1043 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b168691 __ps2_command +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b5f4d7d fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x7b66e361 register_console +EXPORT_SYMBOL vmlinux 0x7bd96a2c gpmc_prefetch_enable +EXPORT_SYMBOL vmlinux 0x7be55231 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x7bf30fdc down_write +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c21b3a5 netif_rx +EXPORT_SYMBOL vmlinux 0x7c2c557c simple_open +EXPORT_SYMBOL vmlinux 0x7c2cdae9 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x7c31a839 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x7c442375 fb_find_mode +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c632e7a xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x7c7b4fcb skb_make_writable +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7cc035a7 __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x7ce2578c snd_ctl_remove_id +EXPORT_SYMBOL vmlinux 0x7ce6f64f bdi_register +EXPORT_SYMBOL vmlinux 0x7cfcb684 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x7d086100 vmtruncate +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d212a6e __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7d4bb6cc phy_connect_direct +EXPORT_SYMBOL vmlinux 0x7d6f3794 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x7d7673c6 submit_bio +EXPORT_SYMBOL vmlinux 0x7d7da63e tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x7d81b8c7 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x7dadd91c jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x7dbeae6c scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7de0a78b tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x7ded54b0 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0e0771 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x7e2ab9eb elevator_change +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e3ba53b tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x7e498053 md_write_start +EXPORT_SYMBOL vmlinux 0x7e9bd02b wireless_spy_update +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7ea9a08d i2c_register_driver +EXPORT_SYMBOL vmlinux 0x7ebaa41f inode_init_always +EXPORT_SYMBOL vmlinux 0x7ece1e24 scsi_init_io +EXPORT_SYMBOL vmlinux 0x7ece4af6 nonseekable_open +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7ef09102 ata_print_version +EXPORT_SYMBOL vmlinux 0x7f01d411 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x7f0b28bc jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f33a63b omap_get_dma_chain_dst_pos +EXPORT_SYMBOL vmlinux 0x7f596387 vfs_symlink +EXPORT_SYMBOL vmlinux 0x7f63b31e _memcpy_toio +EXPORT_SYMBOL vmlinux 0x7f8108af noop_llseek +EXPORT_SYMBOL vmlinux 0x7f8fc31f input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x7fa53a6e blk_rq_init +EXPORT_SYMBOL vmlinux 0x7fad1f07 tcf_register_action +EXPORT_SYMBOL vmlinux 0x800e4ffa __muldi3 +EXPORT_SYMBOL vmlinux 0x801429cf unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x8034558a gpmc_nand_write +EXPORT_SYMBOL vmlinux 0x803ac124 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x803e58db inet6_release +EXPORT_SYMBOL vmlinux 0x8061337c inode_set_bytes +EXPORT_SYMBOL vmlinux 0x80793ace sock_i_uid +EXPORT_SYMBOL vmlinux 0x807f92f2 bio_init +EXPORT_SYMBOL vmlinux 0x80d81308 omap_vrfb_release_ctx +EXPORT_SYMBOL vmlinux 0x80d817ab wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x80db9c5d skb_clone +EXPORT_SYMBOL vmlinux 0x80de231a idr_remove +EXPORT_SYMBOL vmlinux 0x81003ee2 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x813ed040 idr_remove_all +EXPORT_SYMBOL vmlinux 0x81474b5e journal_destroy +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815131ba mempool_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815cfb0a vfs_readv +EXPORT_SYMBOL vmlinux 0x815d3f93 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x8188fbd0 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x819c2b56 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x81b02d62 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x81b04bfc completion_done +EXPORT_SYMBOL vmlinux 0x81b4ce3f nf_register_hooks +EXPORT_SYMBOL vmlinux 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81e38a2c snd_pcm_kernel_ioctl +EXPORT_SYMBOL vmlinux 0x81e675c6 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x81f35656 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x82009965 names_cachep +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x8204e852 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x82077356 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x821e8d91 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x8223aa28 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x823a5d4a dquot_alloc +EXPORT_SYMBOL vmlinux 0x82407ce6 bio_free +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 0x8262f64b tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x827f9a03 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x828049e4 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x82aa3b25 ip6_xmit +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b2dec3 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x82e92977 register_md_personality +EXPORT_SYMBOL vmlinux 0x8305ce9d devm_clk_get +EXPORT_SYMBOL vmlinux 0x8320bea8 __umodsi3 +EXPORT_SYMBOL vmlinux 0x832183c0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x8331fe0e dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL vmlinux 0x8371daff sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x8396ef15 dst_release +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83aa3618 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83ca9e5a qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x83d25c38 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x83dd9516 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x8457bc58 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f4f7e nand_bch_init +EXPORT_SYMBOL vmlinux 0x847469f8 of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x84816289 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84c708fc netlink_unicast +EXPORT_SYMBOL vmlinux 0x84cf2233 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x84db4b6e wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x8514cf62 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x85313c1e km_state_notify +EXPORT_SYMBOL vmlinux 0x85399ee5 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x8557bb76 find_lock_page +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856dd9e1 dquot_disable +EXPORT_SYMBOL vmlinux 0x85765fee omap_enable_dma_irq +EXPORT_SYMBOL vmlinux 0x857ae3ff blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x857ef611 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x85a2c0fa snd_ctl_find_numid +EXPORT_SYMBOL vmlinux 0x85ad8ce3 kernel_accept +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85b634c4 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x8609eb9b pid_task +EXPORT_SYMBOL vmlinux 0x860fcfab inet_bind +EXPORT_SYMBOL vmlinux 0x8625bd16 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x86507b2e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869b6978 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c21697 dev_uc_init +EXPORT_SYMBOL vmlinux 0x86c32ef7 sync_inode +EXPORT_SYMBOL vmlinux 0x86caf8b8 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x86cc985f __dquot_transfer +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x8712515a take_over_console +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872a8d2b ps2_drain +EXPORT_SYMBOL vmlinux 0x873f6c2f scsi_host_put +EXPORT_SYMBOL vmlinux 0x87761f6c nand_calculate_ecc +EXPORT_SYMBOL vmlinux 0x877c86f9 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87935194 rtnl_unicast +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b26c27 thaw_super +EXPORT_SYMBOL vmlinux 0x87b3c418 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x87d87c8e abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x87dbba14 ida_get_new +EXPORT_SYMBOL vmlinux 0x87e4ff3c mount_ns +EXPORT_SYMBOL vmlinux 0x87f0ca3e textsearch_register +EXPORT_SYMBOL vmlinux 0x87f17abc blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x881ab77d bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883a9b2c dst_discard +EXPORT_SYMBOL vmlinux 0x8853b235 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x887d4a7f snd_jack_set_key +EXPORT_SYMBOL vmlinux 0x8893fa5d finish_wait +EXPORT_SYMBOL vmlinux 0x889556f4 security_file_permission +EXPORT_SYMBOL vmlinux 0x88990a98 __bread +EXPORT_SYMBOL vmlinux 0x890d9fd6 input_flush_device +EXPORT_SYMBOL vmlinux 0x891d72b6 inet_listen +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x895887c5 nand_unlock +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x8996ae8d __rta_fill +EXPORT_SYMBOL vmlinux 0x899fc450 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x89a3c4f4 omap_get_dma_chain_index +EXPORT_SYMBOL vmlinux 0x89d4a4d2 module_layout +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4fa83b __aeabi_llsr +EXPORT_SYMBOL vmlinux 0x8a4fd8af skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x8a531f94 security_path_mknod +EXPORT_SYMBOL vmlinux 0x8a6861a3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x8a6c7ae6 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9b5221 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x8a9cdfca sock_wfree +EXPORT_SYMBOL vmlinux 0x8abecee4 netlink_set_err +EXPORT_SYMBOL vmlinux 0x8abf4062 omapdss_dpi_display_disable +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad555fa dst_alloc +EXPORT_SYMBOL vmlinux 0x8ad66426 seq_release_private +EXPORT_SYMBOL vmlinux 0x8b045b12 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x8b0fe3f7 __dev_printk +EXPORT_SYMBOL vmlinux 0x8b16c16b xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x8b37821b do_splice_to +EXPORT_SYMBOL vmlinux 0x8b48a798 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x8b4c3a9e d_make_root +EXPORT_SYMBOL vmlinux 0x8b5eecd2 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b64c1c3 kick_iocb +EXPORT_SYMBOL vmlinux 0x8b6ece54 simple_getattr +EXPORT_SYMBOL vmlinux 0x8b7388c1 put_tty_driver +EXPORT_SYMBOL vmlinux 0x8b7babbf snd_info_register +EXPORT_SYMBOL vmlinux 0x8bef91c5 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0bc6d1 kset_register +EXPORT_SYMBOL vmlinux 0x8c152c28 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x8c31675e journal_start +EXPORT_SYMBOL vmlinux 0x8c4d6523 omap_dma_chain_a_transfer +EXPORT_SYMBOL vmlinux 0x8c58a811 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x8c72d2d3 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8c793c0b wait_iff_congested +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8ca1f661 kernel_listen +EXPORT_SYMBOL vmlinux 0x8cac985c kthread_stop +EXPORT_SYMBOL vmlinux 0x8cb23c19 set_groups +EXPORT_SYMBOL vmlinux 0x8cb64408 skb_pad +EXPORT_SYMBOL vmlinux 0x8cc7681b dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x8cd1948a vlan_vid_add +EXPORT_SYMBOL vmlinux 0x8cd8c339 omap_free_dma +EXPORT_SYMBOL vmlinux 0x8ce60539 fasync_helper +EXPORT_SYMBOL vmlinux 0x8d071a84 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x8d0e80f6 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8d464eb2 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d8edceb __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x8d9d2b37 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x8dac4129 dquot_commit +EXPORT_SYMBOL vmlinux 0x8db7654d mb_cache_create +EXPORT_SYMBOL vmlinux 0x8dc2a023 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x8ddd5036 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x8de00fc0 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL vmlinux 0x8e01dd29 nf_log_packet +EXPORT_SYMBOL vmlinux 0x8e051dd4 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e2dfd3b blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e55848e i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x8e6f1b01 input_event +EXPORT_SYMBOL vmlinux 0x8e73d94c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x8eb0c5aa dev_uc_add +EXPORT_SYMBOL vmlinux 0x8eb36894 udplite_prot +EXPORT_SYMBOL vmlinux 0x8eb7e632 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x8ebafdba unlock_new_inode +EXPORT_SYMBOL vmlinux 0x8eec5f0b __frontswap_store +EXPORT_SYMBOL vmlinux 0x8f003e8c kill_fasync +EXPORT_SYMBOL vmlinux 0x8f26ecee generic_file_llseek +EXPORT_SYMBOL vmlinux 0x8f2dd7b5 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x8f2f44b6 noop_fsync +EXPORT_SYMBOL vmlinux 0x8f3a5cef jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4cce3f consume_skb +EXPORT_SYMBOL vmlinux 0x8f57a159 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x8f595b11 snd_major +EXPORT_SYMBOL vmlinux 0x8f5bf374 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL vmlinux 0x8f678b07 __stack_chk_guard +EXPORT_SYMBOL vmlinux 0x8f6ab814 of_find_property +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8fa4130a omap_set_dma_callback +EXPORT_SYMBOL vmlinux 0x8fae902c __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x8fc1f741 serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x90168272 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x902e5600 i2c_release_client +EXPORT_SYMBOL vmlinux 0x90360490 ether_setup +EXPORT_SYMBOL vmlinux 0x906a8da5 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x90a76958 dev_crit +EXPORT_SYMBOL vmlinux 0x90a771b4 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x90a8a123 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d03ed1 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x90d71479 framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x90dd8341 bio_map_kern +EXPORT_SYMBOL vmlinux 0x90ed1717 registered_fb +EXPORT_SYMBOL vmlinux 0x90f91617 free_buffer_head +EXPORT_SYMBOL vmlinux 0x9118eb43 genlmsg_put +EXPORT_SYMBOL vmlinux 0x912fb36f skb_queue_head +EXPORT_SYMBOL vmlinux 0x913076d3 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x9137c871 dcache_dir_open +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9180de5c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x919029aa __readwrite_bug +EXPORT_SYMBOL vmlinux 0x91ccb481 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x91e3a9a7 __frontswap_load +EXPORT_SYMBOL vmlinux 0x91e81ba5 aio_put_req +EXPORT_SYMBOL vmlinux 0x920008ba serio_unregister_port +EXPORT_SYMBOL vmlinux 0x920664c8 mempool_free +EXPORT_SYMBOL vmlinux 0x9210653d journal_revoke +EXPORT_SYMBOL vmlinux 0x9215be33 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x9223349e phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923dfbaa i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x925ce524 __pskb_copy +EXPORT_SYMBOL vmlinux 0x9264ae32 snd_pcm_release_substream +EXPORT_SYMBOL vmlinux 0x92673c64 htc_egpio_get_wakeup_irq +EXPORT_SYMBOL vmlinux 0x9276b415 block_read_full_page +EXPORT_SYMBOL vmlinux 0x9276e2fd generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x92776493 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x927bc91e __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x929eecac __strncpy_from_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92ae20bc i2c_master_recv +EXPORT_SYMBOL vmlinux 0x92e46cbd blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x92ef1b9e nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x92f4a1f7 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x92f59183 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93116b03 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x9319e5fd km_policy_expired +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93446ac9 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x936d1752 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x9386800d ip_options_compile +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93a83b76 thaw_bdev +EXPORT_SYMBOL vmlinux 0x93aa1a09 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x93bc6387 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x93c8c450 dma_find_channel +EXPORT_SYMBOL vmlinux 0x93f66a6c frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x94098ff8 snd_interval_list +EXPORT_SYMBOL vmlinux 0x9415d089 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x941ed606 sock_no_getname +EXPORT_SYMBOL vmlinux 0x942fc11a netif_notify_peers +EXPORT_SYMBOL vmlinux 0x943e8fd2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x94644f2f path_get +EXPORT_SYMBOL vmlinux 0x9469fe16 bdev_read_only +EXPORT_SYMBOL vmlinux 0x946e2c58 tty_mutex +EXPORT_SYMBOL vmlinux 0x948549e7 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x94911d42 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x9493b6c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94a8813c input_inject_event +EXPORT_SYMBOL vmlinux 0x94af632e complete_all +EXPORT_SYMBOL vmlinux 0x94b176b3 ip_defrag +EXPORT_SYMBOL vmlinux 0x94be473d skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x94e884a4 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x9526a4c8 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x9534cae4 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x9540f91c ilookup5 +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955b1e4a i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x9584d204 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x95ae0ed7 _dev_info +EXPORT_SYMBOL vmlinux 0x95bd12f3 vfs_readlink +EXPORT_SYMBOL vmlinux 0x95c206b2 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x95dbe078 __get_user_2 +EXPORT_SYMBOL vmlinux 0x96091dc5 genl_register_ops +EXPORT_SYMBOL vmlinux 0x962b6c00 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x963276f3 input_register_device +EXPORT_SYMBOL vmlinux 0x964016fd snd_pcm_hw_constraint_step +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x965ad1e4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x965bc19d __free_pages +EXPORT_SYMBOL vmlinux 0x965bf3f4 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x9679f91c napi_complete +EXPORT_SYMBOL vmlinux 0x9684adce scm_detach_fds +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x96b39b6e omap_start_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96ee58fb fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x971542ea inet_ioctl +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9744aa1d keyring_clear +EXPORT_SYMBOL vmlinux 0x9744d7b3 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x9752e51f dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x979374ab snd_add_device_sysfs_file +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a52803 set_anon_super +EXPORT_SYMBOL vmlinux 0x97acbf44 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b5c256 __d_drop +EXPORT_SYMBOL vmlinux 0x97ba1397 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x97df1067 module_put +EXPORT_SYMBOL vmlinux 0x98082893 __copy_to_user +EXPORT_SYMBOL vmlinux 0x980a912c grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x980cdc4a truncate_pagecache +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9828be45 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x98404389 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9895cb01 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x98993e07 init_special_inode +EXPORT_SYMBOL vmlinux 0x98a39f30 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x98c4ef1e ihold +EXPORT_SYMBOL vmlinux 0x98d73f40 vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x9907616c mddev_congested +EXPORT_SYMBOL vmlinux 0x991ae485 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0x9923bc6c dev_uc_flush +EXPORT_SYMBOL vmlinux 0x9927dc03 dev_set_group +EXPORT_SYMBOL vmlinux 0x993014ba __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x9942b7ff elv_register_queue +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9963d8ff bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x997185ba blk_free_tags +EXPORT_SYMBOL vmlinux 0x9979a055 cdev_alloc +EXPORT_SYMBOL vmlinux 0x998eee8f keyring_search +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999c3148 __raw_readsb +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a5c53e tcp_prot +EXPORT_SYMBOL vmlinux 0x99ac59f4 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bf0e9e xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c83212 path_is_under +EXPORT_SYMBOL vmlinux 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99e63794 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x99f05918 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x9a1b1b95 dev_get_flags +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a223752 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x9a322348 __nla_reserve +EXPORT_SYMBOL vmlinux 0x9a396cb3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x9a461cc0 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x9a5c7ab2 aio_complete +EXPORT_SYMBOL vmlinux 0x9a6cd279 clk_unregister +EXPORT_SYMBOL vmlinux 0x9a6f8b1b d_genocide +EXPORT_SYMBOL vmlinux 0x9a8dc6db lg_local_lock +EXPORT_SYMBOL vmlinux 0x9aa787c0 fb_set_var +EXPORT_SYMBOL vmlinux 0x9aa9c607 nobh_writepage +EXPORT_SYMBOL vmlinux 0x9ab53342 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x9abbdb69 clk_set_parent +EXPORT_SYMBOL vmlinux 0x9b0d88c9 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x9b164f05 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b60b7d0 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x9b60c3b1 neigh_table_init +EXPORT_SYMBOL vmlinux 0x9b62ac87 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b875fad of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x9b90a0ab dev_mc_del +EXPORT_SYMBOL vmlinux 0x9b96e044 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9bfa935e netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x9c045221 nla_put +EXPORT_SYMBOL vmlinux 0x9c054e18 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x9c15c011 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x9c5b17a5 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x9c5c67c8 ip_fragment +EXPORT_SYMBOL vmlinux 0x9c7077bd enable_hlt +EXPORT_SYMBOL vmlinux 0x9c91218d free_task +EXPORT_SYMBOL vmlinux 0x9c990c23 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cd2e7d0 gpmc_nand_read +EXPORT_SYMBOL vmlinux 0x9cd60539 sg_free_table +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cef9585 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d105722 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d729741 scsi_free_command +EXPORT_SYMBOL vmlinux 0x9d7980e4 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x9d9a88a2 register_con_driver +EXPORT_SYMBOL vmlinux 0x9db20882 blk_end_request +EXPORT_SYMBOL vmlinux 0x9dc406c9 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9dcf2ad0 dev_change_flags +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e1e9de7 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2c6cf4 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e7f0fc2 tcp_poll +EXPORT_SYMBOL vmlinux 0x9e961f7f ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x9e969ad3 force_sig +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9eacc692 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x9ec6120e register_mtd_chip_driver +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9ed6b20f __secpath_destroy +EXPORT_SYMBOL vmlinux 0x9ef7e5cc bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9f0e39c9 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x9f11b5ac free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2d6b6a sk_stream_error +EXPORT_SYMBOL vmlinux 0x9f42a9bc pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f6626f1 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x9f8ea2a8 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f99d9bf ida_pre_get +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9fdef75b sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9feaaa08 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x9fee5076 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x9ff956af inode_add_bytes +EXPORT_SYMBOL vmlinux 0xa00053ad generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xa0114ac8 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xa02b1bbc sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0xa047dc17 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa09a6459 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xa0a2c0ce scsi_device_put +EXPORT_SYMBOL vmlinux 0xa0a861fc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xa0ad3ab5 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceaa92 kmap +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d32e06 dquot_quota_off +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa126e4af elv_rb_del +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1684773 amba_device_register +EXPORT_SYMBOL vmlinux 0xa1b44aa9 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1d5c041 invalidate_partition +EXPORT_SYMBOL vmlinux 0xa1e59b2a bio_unmap_user +EXPORT_SYMBOL vmlinux 0xa1fcc84a tty_register_device +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2359127 vfs_open +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa267c1f2 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xa26a11a2 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xa2811e54 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2867ac5 omap_dss_get_overlay_manager +EXPORT_SYMBOL vmlinux 0xa28bbbaf bio_put +EXPORT_SYMBOL vmlinux 0xa28d9e7b key_revoke +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2aad002 amba_release_regions +EXPORT_SYMBOL vmlinux 0xa2ab2329 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xa2b2db5d xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xa3019bb4 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa3087abc serio_interrupt +EXPORT_SYMBOL vmlinux 0xa30e6f35 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xa32acfa9 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33493ad tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL vmlinux 0xa33f9c8e seq_read +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa352c00d blk_integrity_compare +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa3777688 dquot_enable +EXPORT_SYMBOL vmlinux 0xa3c5b773 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xa4011430 send_sig_info +EXPORT_SYMBOL vmlinux 0xa41e0e4c simple_unlink +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4610bc6 omap_rev +EXPORT_SYMBOL vmlinux 0xa4616f84 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa47813da genphy_read_status +EXPORT_SYMBOL vmlinux 0xa47b6c65 poll_freewait +EXPORT_SYMBOL vmlinux 0xa489c52f lro_flush_all +EXPORT_SYMBOL vmlinux 0xa48f5b09 omap_dma_set_global_params +EXPORT_SYMBOL vmlinux 0xa4b42c55 omap_set_dma_priority +EXPORT_SYMBOL vmlinux 0xa4d415d7 clk_set_rate +EXPORT_SYMBOL vmlinux 0xa4dda7a3 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xa4e045fa scsi_rescan_device +EXPORT_SYMBOL vmlinux 0xa4e0778e input_set_capability +EXPORT_SYMBOL vmlinux 0xa5092120 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xa5217e6d neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xa529e2c3 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa56210e0 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa5796d6e sk_stop_timer +EXPORT_SYMBOL vmlinux 0xa58250a6 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xa585e496 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa592980a scsi_put_command +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5ab8a11 scsi_get_command +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5e13477 eth_header_cache +EXPORT_SYMBOL vmlinux 0xa5f07a66 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL vmlinux 0xa61e4362 omap_request_dma +EXPORT_SYMBOL vmlinux 0xa63543c0 kernel_bind +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6411cea unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa674ced5 snd_card_file_remove +EXPORT_SYMBOL vmlinux 0xa675436a bio_integrity_free +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6ab1c43 nand_bch_correct_data +EXPORT_SYMBOL vmlinux 0xa6b93b26 redraw_screen +EXPORT_SYMBOL vmlinux 0xa6c9bbfd unlock_rename +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa6e35df4 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xa6fb293e sk_alloc +EXPORT_SYMBOL vmlinux 0xa724db81 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xa7481f33 fsync_bdev +EXPORT_SYMBOL vmlinux 0xa75bc0e1 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xa7716564 d_add_ci +EXPORT_SYMBOL vmlinux 0xa780cb1c ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xa78833df dev_get_by_index +EXPORT_SYMBOL vmlinux 0xa7c80683 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xa7c87a60 mtd_concat_create +EXPORT_SYMBOL vmlinux 0xa7f2c5ea prepare_creds +EXPORT_SYMBOL vmlinux 0xa7f75090 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa824436f ppp_register_channel +EXPORT_SYMBOL vmlinux 0xa8380d34 kernel_execve +EXPORT_SYMBOL vmlinux 0xa840f58a journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xa867c853 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87b1011 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0xa8cde9a7 remove_wait_queue +EXPORT_SYMBOL vmlinux 0xa8f05fd2 try_module_get +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa908522b tty_unthrottle +EXPORT_SYMBOL vmlinux 0xa94fc942 generic_write_end +EXPORT_SYMBOL vmlinux 0xa963babc snd_card_proc_new +EXPORT_SYMBOL vmlinux 0xa964dd13 gpmc_cs_request +EXPORT_SYMBOL vmlinux 0xa96e9aa6 udp_proc_register +EXPORT_SYMBOL vmlinux 0xa9b504c9 register_sound_mixer +EXPORT_SYMBOL vmlinux 0xa9dc5272 inode_get_bytes +EXPORT_SYMBOL vmlinux 0xa9e008a7 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa9e14cac generic_listxattr +EXPORT_SYMBOL vmlinux 0xaa1158a7 omap_dss_get_device +EXPORT_SYMBOL vmlinux 0xaa1db072 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xaa32b823 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xaa3bfa99 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0xaa53517a kill_block_super +EXPORT_SYMBOL vmlinux 0xaa5927f9 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0xaa5eaeb7 kern_path_create +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa74d1b3 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xaa8d23c7 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xaa9f5b56 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaac04a2b ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaae10dd0 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xaafd68a9 vfs_readdir +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1971e4 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab2bb449 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xab57f8b0 omapfb_update_window +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab8ea15f __alloc_skb +EXPORT_SYMBOL vmlinux 0xab9ed595 kobject_put +EXPORT_SYMBOL vmlinux 0xaba24935 proc_mkdir +EXPORT_SYMBOL vmlinux 0xaba4e1a5 bdevname +EXPORT_SYMBOL vmlinux 0xabb6c600 mount_pseudo +EXPORT_SYMBOL vmlinux 0xabba8c7b fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xabc3a740 kfree_skb +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0809d mdiobus_free +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabfcfac5 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac10aefe __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xac18e4ea kset_unregister +EXPORT_SYMBOL vmlinux 0xac5f113d cpu_all_bits +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac91e06d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xacafef80 amba_find_device +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xace84938 proto_register +EXPORT_SYMBOL vmlinux 0xaceb9c69 nand_scan_ident +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad1041d7 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xad31672f dev_mc_init +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad8049d7 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xad80b2ef set_device_ro +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xada48d8c sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0xada6b3bc add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0xada928b1 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL vmlinux 0xadea832a lock_may_write +EXPORT_SYMBOL vmlinux 0xadf197db xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfe915a sock_create_kern +EXPORT_SYMBOL vmlinux 0xae434ffc bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xae531f84 register_sysctl +EXPORT_SYMBOL vmlinux 0xae5f5492 register_exec_domain +EXPORT_SYMBOL vmlinux 0xae66c99a mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae81bbd7 path_put +EXPORT_SYMBOL vmlinux 0xae9b7941 seq_escape +EXPORT_SYMBOL vmlinux 0xae9d7f8c scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xaea46535 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xaea9b5e8 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xaeaa7655 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaee9e4c8 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xaf0a6b90 nf_setsockopt +EXPORT_SYMBOL vmlinux 0xaf1fd789 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xaf31224d snd_pcm_suspend +EXPORT_SYMBOL vmlinux 0xaf3d3a0b writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf50e76d elf_set_personality +EXPORT_SYMBOL vmlinux 0xaf52da8d tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf85b09b napi_frags_finish +EXPORT_SYMBOL vmlinux 0xaf8aa518 system_rev +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa05144 omap_dss_register_driver +EXPORT_SYMBOL vmlinux 0xafd992c0 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0xafdd79ed inet6_ioctl +EXPORT_SYMBOL vmlinux 0xb0052381 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xb01d7636 get_fs_type +EXPORT_SYMBOL vmlinux 0xb02d67fd jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0xb0532e93 sound_class +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0a65ff3 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e34aa1 tcp_child_process +EXPORT_SYMBOL vmlinux 0xb0e63bf2 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xb10e9b52 skb_checksum_help +EXPORT_SYMBOL vmlinux 0xb1112068 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb14761d5 user_path_at +EXPORT_SYMBOL vmlinux 0xb14897d9 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xb16fe7b3 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb18e6948 omap_dss_pal_timings +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1adf2b3 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1d849da blkdev_fsync +EXPORT_SYMBOL vmlinux 0xb1dc8c42 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xb1e61df2 clear_nlink +EXPORT_SYMBOL vmlinux 0xb1ed6e20 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb250d9b0 vm_event_states +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb29e650e inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2ca9805 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xb2cc71e9 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d7f6ff dev_disable_lro +EXPORT_SYMBOL vmlinux 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb3356a4f single_release +EXPORT_SYMBOL vmlinux 0xb35417d2 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xb371bda1 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xb38263aa submit_bh +EXPORT_SYMBOL vmlinux 0xb3bdbe79 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xb3cfbe09 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb438757a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xb4419549 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xb45ee96c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4936582 free_netdev +EXPORT_SYMBOL vmlinux 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL vmlinux 0xb4c8f38a omap_dma_chain_status +EXPORT_SYMBOL vmlinux 0xb4d69f47 inode_init_once +EXPORT_SYMBOL vmlinux 0xb5080124 page_put_link +EXPORT_SYMBOL vmlinux 0xb52388e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb5435b58 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5738551 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb60cf95c filp_close +EXPORT_SYMBOL vmlinux 0xb60dca53 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xb62a57b6 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xb64435c0 snd_pcm_lib_free_pages +EXPORT_SYMBOL vmlinux 0xb661a04e vfsmount_lock +EXPORT_SYMBOL vmlinux 0xb663e77b sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a7e3de sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xb6a7fd17 request_key_async +EXPORT_SYMBOL vmlinux 0xb6a84053 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xb6b279ca blk_start_request +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6c6e5f7 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xb6cb4764 truncate_setsize +EXPORT_SYMBOL vmlinux 0xb6d1237f tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xb6e689b4 udp_poll +EXPORT_SYMBOL vmlinux 0xb6eed2ff jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xb70fbdb1 blk_put_queue +EXPORT_SYMBOL vmlinux 0xb7236615 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xb72f8be8 d_alloc +EXPORT_SYMBOL vmlinux 0xb7504e0f read_cache_page +EXPORT_SYMBOL vmlinux 0xb758ee43 check_disk_change +EXPORT_SYMBOL vmlinux 0xb75da1b2 devm_gpio_free +EXPORT_SYMBOL vmlinux 0xb7692131 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xb77a7c47 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xb788e880 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xb78b3626 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7ba76c7 __aeabi_unwind_cpp_pr2 +EXPORT_SYMBOL vmlinux 0xb7cb8734 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xb7d858e6 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xb7d8bd41 netdev_warn +EXPORT_SYMBOL vmlinux 0xb7ded971 default_llseek +EXPORT_SYMBOL vmlinux 0xb7f9fae1 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xb80a019a nf_getsockopt +EXPORT_SYMBOL vmlinux 0xb811e32e bioset_free +EXPORT_SYMBOL vmlinux 0xb8184db9 bio_pair_release +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb81beaec snd_card_free +EXPORT_SYMBOL vmlinux 0xb81ecb7f omapdss_sdi_display_disable +EXPORT_SYMBOL vmlinux 0xb81fd3be idr_find +EXPORT_SYMBOL vmlinux 0xb82af13a lease_get_mtime +EXPORT_SYMBOL vmlinux 0xb82de169 proc_create_data +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb86a470c dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb879ca62 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb89edda2 kunmap_high +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8aa6710 dev_open +EXPORT_SYMBOL vmlinux 0xb8ae0094 is_bad_inode +EXPORT_SYMBOL vmlinux 0xb8c0ea19 __dst_free +EXPORT_SYMBOL vmlinux 0xb8e74b14 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f317e5 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xb90f8ffb page_symlink +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb949c954 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xb951e05a ___pskb_trim +EXPORT_SYMBOL vmlinux 0xb95f98d6 _memset_io +EXPORT_SYMBOL vmlinux 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL vmlinux 0xb96dd0f3 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98fcb1e kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xb9a8f03b omap_stop_dma +EXPORT_SYMBOL vmlinux 0xb9acd3d9 __put_user_2 +EXPORT_SYMBOL vmlinux 0xb9b64a2e netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0xb9c25982 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0xb9cbb8a4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xb9d6a701 generic_readlink +EXPORT_SYMBOL vmlinux 0xb9e52429 __wake_up +EXPORT_SYMBOL vmlinux 0xb9e89c99 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xba009598 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0xba1026d6 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xbaac427c get_mem_type +EXPORT_SYMBOL vmlinux 0xbac6d33d splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xbae47e67 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xbaf04a46 devm_clk_put +EXPORT_SYMBOL vmlinux 0xbaf5d772 tty_throttle +EXPORT_SYMBOL vmlinux 0xbafcd342 blk_init_tags +EXPORT_SYMBOL vmlinux 0xbb0f0e09 __put_cred +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb2643f0 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xbb2b4612 rwsem_is_locked +EXPORT_SYMBOL vmlinux 0xbb3c58ab sk_free +EXPORT_SYMBOL vmlinux 0xbb43246b neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xbb5b41d4 mmc_request_done +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6de668 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xbb72d4fe __put_user_1 +EXPORT_SYMBOL vmlinux 0xbb75437a dev_trans_start +EXPORT_SYMBOL vmlinux 0xbb79c91e abx500_register_ops +EXPORT_SYMBOL vmlinux 0xbb7b043d kmem_cache_free +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbbd1cbd skb_queue_purge +EXPORT_SYMBOL vmlinux 0xbc10dd97 __put_user_4 +EXPORT_SYMBOL vmlinux 0xbc860222 gpmc_read_status +EXPORT_SYMBOL vmlinux 0xbc945ef2 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xbcbc2ac8 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xbcdf680a scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xbcfefdaa jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xbd2abe00 scsi_unregister +EXPORT_SYMBOL vmlinux 0xbd31620c vfs_create +EXPORT_SYMBOL vmlinux 0xbd6b36d3 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xbd6e70a5 xfrm_input +EXPORT_SYMBOL vmlinux 0xbd79d34f ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xbda52866 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xbdb428ef mntput +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdf2580d __raw_readsl +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe15e650 write_one_page +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe390c04 dput +EXPORT_SYMBOL vmlinux 0xbe49bf77 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xbe530ee0 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xbe5fe92a get_gendisk +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe8969eb dev_add_pack +EXPORT_SYMBOL vmlinux 0xbe8b28bb md_register_thread +EXPORT_SYMBOL vmlinux 0xbeb94824 nla_reserve +EXPORT_SYMBOL vmlinux 0xbee7d4b2 snd_card_create +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbefac0ef bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xbf1faebe mutex_trylock +EXPORT_SYMBOL vmlinux 0xbf202f87 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xbf491189 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfaa7c32 do_map_probe +EXPORT_SYMBOL vmlinux 0xbfabafcf __devm_request_region +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfda3c40 migrate_page +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc01be5ff fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xc02cf69b clkdev_drop +EXPORT_SYMBOL vmlinux 0xc036ab71 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06ec2c8 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc08b4157 simple_map_init +EXPORT_SYMBOL vmlinux 0xc08f8992 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xc0a6a8c5 omap_set_dma_dest_burst_mode +EXPORT_SYMBOL vmlinux 0xc0bf1103 input_register_handler +EXPORT_SYMBOL vmlinux 0xc0cf95f9 omap_vrfb_request_ctx +EXPORT_SYMBOL vmlinux 0xc0d3b74c abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xc0ef970d snd_component_add +EXPORT_SYMBOL vmlinux 0xc0fb6655 netdev_alert +EXPORT_SYMBOL vmlinux 0xc10dbd85 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc131379f snd_ctl_notify +EXPORT_SYMBOL vmlinux 0xc1481fd6 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xc14f39e6 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc1509363 of_get_next_child +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17b6a0e try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xc1903cb3 sget +EXPORT_SYMBOL vmlinux 0xc1b76967 release_pages +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc21334b9 arm_dma_ops +EXPORT_SYMBOL vmlinux 0xc2165d85 __arm_iounmap +EXPORT_SYMBOL vmlinux 0xc21c82c0 dev_gro_receive +EXPORT_SYMBOL vmlinux 0xc2220e8d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xc2246e0b neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc24851f0 nla_append +EXPORT_SYMBOL vmlinux 0xc25076c0 kobject_del +EXPORT_SYMBOL vmlinux 0xc252d6bd tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc2748881 kobject_init +EXPORT_SYMBOL vmlinux 0xc28cfaee sock_update_classid +EXPORT_SYMBOL vmlinux 0xc2a852a0 clk_disable +EXPORT_SYMBOL vmlinux 0xc2ad8a74 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xc2ae7acd softnet_data +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e058a4 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f13a1f request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc31954fb tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc359fb65 abort +EXPORT_SYMBOL vmlinux 0xc37d20b6 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xc37d2d7b mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xc38724d3 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xc3890b97 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xc3ed71dd scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc4185c4f flush_dcache_page +EXPORT_SYMBOL vmlinux 0xc41b32a3 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc4415c18 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0xc45ef616 idr_for_each +EXPORT_SYMBOL vmlinux 0xc48413f0 init_buffer +EXPORT_SYMBOL vmlinux 0xc48aca4d xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc491b540 journal_force_commit +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49ad5f1 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xc4a26142 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xc4beebba blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xc4c4a034 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xc4e8b63a bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc50fff86 security_mmap_file +EXPORT_SYMBOL vmlinux 0xc51417b7 dev_activate +EXPORT_SYMBOL vmlinux 0xc52da066 omap_set_dma_dest_params +EXPORT_SYMBOL vmlinux 0xc5337b72 vfs_unlink +EXPORT_SYMBOL vmlinux 0xc54bc3c9 dqstats +EXPORT_SYMBOL vmlinux 0xc556ef02 kmap_high +EXPORT_SYMBOL vmlinux 0xc5669f48 request_firmware +EXPORT_SYMBOL vmlinux 0xc56fcffc save_mount_options +EXPORT_SYMBOL vmlinux 0xc5b51a25 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0xc5b6ea0b set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xc5b80112 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0xc5ba7185 netif_device_detach +EXPORT_SYMBOL vmlinux 0xc5bc01bc __skb_tx_hash +EXPORT_SYMBOL vmlinux 0xc5c8c8ad omap_dss_put_device +EXPORT_SYMBOL vmlinux 0xc5cd8e2b proto_unregister +EXPORT_SYMBOL vmlinux 0xc5d514f4 snd_ctl_new1 +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f94b5d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xc601f8df snd_pcm_set_sync +EXPORT_SYMBOL vmlinux 0xc6184045 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6338ba2 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xc65364f9 dql_completed +EXPORT_SYMBOL vmlinux 0xc65f6a4b skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xc6711083 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xc672a242 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xc6737886 __netdev_printk +EXPORT_SYMBOL vmlinux 0xc6af2549 input_release_device +EXPORT_SYMBOL vmlinux 0xc6c8dc10 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc75db041 install_exec_creds +EXPORT_SYMBOL vmlinux 0xc7751111 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc799a1d0 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a9b21c snd_jack_report +EXPORT_SYMBOL vmlinux 0xc7aff3e6 uart_match_port +EXPORT_SYMBOL vmlinux 0xc7cf72f9 register_qdisc +EXPORT_SYMBOL vmlinux 0xc7e76a1f fb_validate_mode +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc80dfa31 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83bbefc register_sound_special_device +EXPORT_SYMBOL vmlinux 0xc84151d2 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc85edb9e snd_pcm_notify +EXPORT_SYMBOL vmlinux 0xc86b0738 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc878ad08 mii_nway_restart +EXPORT_SYMBOL vmlinux 0xc89f5752 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc8a2b314 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xc8b1be3b block_write_end +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8f4a67f textsearch_prepare +EXPORT_SYMBOL vmlinux 0xc90c7518 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc9142293 omap_dss_ntsc_timings +EXPORT_SYMBOL vmlinux 0xc921235e __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xc9243de6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL vmlinux 0xc9773d02 __f_setown +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a8cc7c sock_no_listen +EXPORT_SYMBOL vmlinux 0xc9e25f28 d_set_d_op +EXPORT_SYMBOL vmlinux 0xc9ff6bf0 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xca031897 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xca34e665 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xca3fe7c1 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xca49eb3d serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xca515475 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca650ef4 scsi_print_command +EXPORT_SYMBOL vmlinux 0xca7e08c8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xca92771d icmpv6_send +EXPORT_SYMBOL vmlinux 0xcab17e69 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xcacc4278 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0xcb5bf683 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb736482 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbb10134 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd83b43 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xcbf58bc6 snd_timer_close +EXPORT_SYMBOL vmlinux 0xcc0072a8 tty_port_open +EXPORT_SYMBOL vmlinux 0xcc04f360 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xcc0d8c8e dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xcc18d50c twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3e392d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8f5fde qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xcc9a916b amba_driver_unregister +EXPORT_SYMBOL vmlinux 0xccb775f2 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xcce29370 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd30b95a tmio_core_mmc_clk_div +EXPORT_SYMBOL vmlinux 0xcd398a14 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xcd3d7e5b netdev_class_create_file +EXPORT_SYMBOL vmlinux 0xcd4b732f bit_waitqueue +EXPORT_SYMBOL vmlinux 0xcd63c845 __aeabi_lasr +EXPORT_SYMBOL vmlinux 0xcd72843b tcp_sendpage +EXPORT_SYMBOL vmlinux 0xcd76d8e7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xcda78561 register_filesystem +EXPORT_SYMBOL vmlinux 0xcdb87f8e pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xcddc09eb console_start +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcdfeb992 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce24e23e d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL vmlinux 0xce587748 nand_correct_data +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce9a18f3 tty_port_close_end +EXPORT_SYMBOL vmlinux 0xcea899ea down +EXPORT_SYMBOL vmlinux 0xcece52fd key_link +EXPORT_SYMBOL vmlinux 0xcef3576a cpu_user +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf21e89e request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xcf25926d generic_file_fsync +EXPORT_SYMBOL vmlinux 0xcf2df055 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xcf7f7dcd bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xcfafee12 deactivate_super +EXPORT_SYMBOL vmlinux 0xcfbac5ae snd_card_free_when_closed +EXPORT_SYMBOL vmlinux 0xcfbee619 dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff08833 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd03532f4 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xd03bdc45 set_blocksize +EXPORT_SYMBOL vmlinux 0xd0446541 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd0600b30 __block_write_begin +EXPORT_SYMBOL vmlinux 0xd07aca9b tcp_gro_complete +EXPORT_SYMBOL vmlinux 0xd07db919 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xd09cfc90 blk_register_region +EXPORT_SYMBOL vmlinux 0xd09dc10f simple_dir_operations +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b5acd3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xd0b68691 tcp_seq_open +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 0xd0f19781 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fd51df bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd0fed2d4 follow_pfn +EXPORT_SYMBOL vmlinux 0xd1157735 release_and_free_resource +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd13683ea xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd13b09aa xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xd152bc0f md_check_recovery +EXPORT_SYMBOL vmlinux 0xd1576dd3 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xd169b8ba dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a139fe lg_global_lock +EXPORT_SYMBOL vmlinux 0xd1a8949d ip_setsockopt +EXPORT_SYMBOL vmlinux 0xd1c3a60a bio_integrity_clone +EXPORT_SYMBOL vmlinux 0xd1eef71f blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xd20ce1d0 snd_timer_continue +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd225e0b2 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xd236178f kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xd23f3c20 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xd24949a0 mpage_writepages +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 0xd26338c6 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xd27731ef __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd29d8cf4 nf_reinject +EXPORT_SYMBOL vmlinux 0xd2cee4aa shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd2e826b4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd3149376 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd34f26bd netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd3564590 sock_create_lite +EXPORT_SYMBOL vmlinux 0xd3610cf3 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd369192d elv_rb_add +EXPORT_SYMBOL vmlinux 0xd36a27d6 __devm_release_region +EXPORT_SYMBOL vmlinux 0xd37bf41f snd_pcm_hw_constraint_integer +EXPORT_SYMBOL vmlinux 0xd382019f register_sysctl_table +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3b218bf xfrm_state_add +EXPORT_SYMBOL vmlinux 0xd3dbfbc4 _find_first_zero_bit_le +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3e05077 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xd402a120 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd42327ee of_find_node_with_property +EXPORT_SYMBOL vmlinux 0xd439fd2e uart_get_divisor +EXPORT_SYMBOL vmlinux 0xd460dda3 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xd4a644c3 should_remove_suid +EXPORT_SYMBOL vmlinux 0xd4b6e253 arp_create +EXPORT_SYMBOL vmlinux 0xd4bc7c9b snd_cards +EXPORT_SYMBOL vmlinux 0xd4c2dd3b snd_pcm_open_substream +EXPORT_SYMBOL vmlinux 0xd4eb7456 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0xd5152710 sg_next +EXPORT_SYMBOL vmlinux 0xd52a49b1 kern_path +EXPORT_SYMBOL vmlinux 0xd550a602 journal_flush +EXPORT_SYMBOL vmlinux 0xd56e1b60 tty_set_operations +EXPORT_SYMBOL vmlinux 0xd56e9485 omap_set_dma_dest_index +EXPORT_SYMBOL vmlinux 0xd591dbba unregister_filesystem +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd59d512a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5d7e375 sg_miter_start +EXPORT_SYMBOL vmlinux 0xd5d91652 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xd5e8ef6b blk_make_request +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd62eca04 cont_write_begin +EXPORT_SYMBOL vmlinux 0xd63494a3 dump_seek +EXPORT_SYMBOL vmlinux 0xd63e53eb kern_unmount +EXPORT_SYMBOL vmlinux 0xd6471215 sk_filter +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd663b162 d_find_alias +EXPORT_SYMBOL vmlinux 0xd6649268 lock_rename +EXPORT_SYMBOL vmlinux 0xd678233c journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xd69ec7fe __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xd6aa4d6d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xd6c6295c mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xd6d27e9e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xd6d42d27 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f0da41 omapdss_default_get_resolution +EXPORT_SYMBOL vmlinux 0xd715fbf2 setup_arg_pages +EXPORT_SYMBOL vmlinux 0xd73281bc max8998_bulk_write +EXPORT_SYMBOL vmlinux 0xd73bb928 netpoll_setup +EXPORT_SYMBOL vmlinux 0xd757bca8 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd75cdbcc make_bad_inode +EXPORT_SYMBOL vmlinux 0xd7609084 skb_trim +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79385d7 dev_notice +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7ad4a70 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xd7baaccf sock_no_bind +EXPORT_SYMBOL vmlinux 0xd7c0663b set_nlink +EXPORT_SYMBOL vmlinux 0xd7e2bffb max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8061f2f iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xd830e65a skb_insert +EXPORT_SYMBOL vmlinux 0xd8348d73 serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xd85a03d6 tc_classify_compat +EXPORT_SYMBOL vmlinux 0xd861d45f dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd887e786 mmc_erase +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8cefc96 inet_frag_find +EXPORT_SYMBOL vmlinux 0xd8dc1c94 input_grab_device +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8f040f1 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xd90503ca snd_pcm_new_internal +EXPORT_SYMBOL vmlinux 0xd919212b phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd9437eb2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0xd9559426 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xd955d2b7 omap_set_dma_dest_data_pack +EXPORT_SYMBOL vmlinux 0xd96b6dd1 omap_device_get_by_hwmod_name +EXPORT_SYMBOL vmlinux 0xd9850607 vfs_fsync +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd9aa27a2 mempool_create_node +EXPORT_SYMBOL vmlinux 0xd9cd8ddb map_destroy +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9dcfbc6 phy_device_free +EXPORT_SYMBOL vmlinux 0xd9e15faa security_inode_permission +EXPORT_SYMBOL vmlinux 0xd9e1a956 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd9f8bbe1 misc_register +EXPORT_SYMBOL vmlinux 0xda03e1fe __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xda0e48f1 snd_info_create_module_entry +EXPORT_SYMBOL vmlinux 0xda3ff8ed tcp_make_synack +EXPORT_SYMBOL vmlinux 0xda519edc __netif_schedule +EXPORT_SYMBOL vmlinux 0xda58c396 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xda5af5eb snd_pcm_lib_malloc_pages +EXPORT_SYMBOL vmlinux 0xda677b54 cfb_copyarea +EXPORT_SYMBOL vmlinux 0xda6bff42 ps2_end_command +EXPORT_SYMBOL vmlinux 0xda6dc07d tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda902928 skb_seq_read +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdab39954 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xdae0d97a tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xdaedc6c7 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0xdb0df8da generic_setxattr +EXPORT_SYMBOL vmlinux 0xdb2178c7 __sg_free_table +EXPORT_SYMBOL vmlinux 0xdb4292e4 omap_set_dma_params +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb71b872 snd_ctl_make_virtual_master +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb779077 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdba1ff6f jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xdbaec766 qdisc_reset +EXPORT_SYMBOL vmlinux 0xdbb67202 skb_pull +EXPORT_SYMBOL vmlinux 0xdbbbf564 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xdbc3c0cf alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf667f __elv_add_request +EXPORT_SYMBOL vmlinux 0xdbe2f014 bdi_init +EXPORT_SYMBOL vmlinux 0xdbe48098 fb_blank +EXPORT_SYMBOL vmlinux 0xdbf2e468 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc46b485 clk_register +EXPORT_SYMBOL vmlinux 0xdc52a67d mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xdc5622ba simple_write_end +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc798d37 __mutex_init +EXPORT_SYMBOL vmlinux 0xdc7ee45b ppp_unit_number +EXPORT_SYMBOL vmlinux 0xdc8d9da4 kunmap +EXPORT_SYMBOL vmlinux 0xdc963c67 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0xdca4f90b dev_remove_pack +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd69f39 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0e4d14 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd515a30 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xdd56f10e inet_sendmsg +EXPORT_SYMBOL vmlinux 0xdd6056ff fail_migrate_page +EXPORT_SYMBOL vmlinux 0xdd780af7 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd9ab324 d_drop +EXPORT_SYMBOL vmlinux 0xddae13e3 inet_frags_init +EXPORT_SYMBOL vmlinux 0xddc6405f mount_bdev +EXPORT_SYMBOL vmlinux 0xddcab48c mpage_readpage +EXPORT_SYMBOL vmlinux 0xdddf622a set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xde15c042 omap_set_dma_src_index +EXPORT_SYMBOL vmlinux 0xde3c68a6 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xde4becba dcache_readdir +EXPORT_SYMBOL vmlinux 0xde53677e unlock_page +EXPORT_SYMBOL vmlinux 0xde570f5b find_inode_number +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 0xdecd4b46 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdecfc0ed blkdev_get +EXPORT_SYMBOL vmlinux 0xded8cab6 log_wait_commit +EXPORT_SYMBOL vmlinux 0xdef169ec scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xdf006bb2 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xdf00e7e2 journal_restart +EXPORT_SYMBOL vmlinux 0xdf1ef69f wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf667daf vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdf69d64c ps2_init +EXPORT_SYMBOL vmlinux 0xdf76946c con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdf96db91 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xdfa6d098 input_get_keycode +EXPORT_SYMBOL vmlinux 0xdfb01a80 cpu_v7_dcache_clean_area +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfca24f1 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xdfd91ce9 omap_type +EXPORT_SYMBOL vmlinux 0xdfde51d3 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0xdffe8e4e unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe02220c9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xe02ae9d2 release_firmware +EXPORT_SYMBOL vmlinux 0xe04a3d7a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe0519376 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06cfc57 bdput +EXPORT_SYMBOL vmlinux 0xe06d8087 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xe070d806 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0bdcc84 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe0f6aa9e nand_default_bbt +EXPORT_SYMBOL vmlinux 0xe106154f omap_vram_get_info +EXPORT_SYMBOL vmlinux 0xe1080dbd tty_write_room +EXPORT_SYMBOL vmlinux 0xe112a9a0 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe11f4561 drop_nlink +EXPORT_SYMBOL vmlinux 0xe124d483 skb_copy +EXPORT_SYMBOL vmlinux 0xe12bd949 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xe1644b2e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe166646b dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0xe16b893b mutex_lock +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe19c51cb lookup_hash +EXPORT_SYMBOL vmlinux 0xe1ac6d43 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xe1ac9399 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xe1e18ac8 generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe1f418a9 neigh_for_each +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe213222b unregister_md_personality +EXPORT_SYMBOL vmlinux 0xe216b261 elv_add_request +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe2441279 d_rehash +EXPORT_SYMBOL vmlinux 0xe24657d9 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2554df8 inode_dio_done +EXPORT_SYMBOL vmlinux 0xe25a3207 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e48d17 ata_port_printk +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2ed045e of_parse_phandle +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe2fdf9ad eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xe3225c33 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xe3401242 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0xe37d10ae omap_dispc_unregister_isr +EXPORT_SYMBOL vmlinux 0xe38ae976 d_alloc_name +EXPORT_SYMBOL vmlinux 0xe3cbbcc5 netif_carrier_on +EXPORT_SYMBOL vmlinux 0xe3d291a5 tty_port_close +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dd24a5 bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe40abcfa mmc_start_req +EXPORT_SYMBOL vmlinux 0xe4127664 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xe4394876 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xe45acc3d pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4b41f7c snd_pcm_hw_rule_add +EXPORT_SYMBOL vmlinux 0xe4c80097 cacheid +EXPORT_SYMBOL vmlinux 0xe4cb59ca __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe4cca265 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xe4d29749 dcb_setapp +EXPORT_SYMBOL vmlinux 0xe4e22326 snd_pcm_lib_writev +EXPORT_SYMBOL vmlinux 0xe4fe162b jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xe4ff8d44 rfkill_alloc +EXPORT_SYMBOL vmlinux 0xe5029346 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xe5074439 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xe50eecdb inet_csk_accept +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe51e783d inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xe522e2f3 dev_driver_string +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe52c1a6c xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xe5445af6 omap_get_dma_dst_pos +EXPORT_SYMBOL vmlinux 0xe54dbdc3 follow_down_one +EXPORT_SYMBOL vmlinux 0xe55eec63 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe587dc62 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xe59e6dd7 vfs_rename +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d58c84 irq_set_chip +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5e581c1 wake_up_process +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5fcef47 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xe62bf073 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xe6317d75 input_unregister_device +EXPORT_SYMBOL vmlinux 0xe631934d bio_sector_offset +EXPORT_SYMBOL vmlinux 0xe6336a29 unregister_console +EXPORT_SYMBOL vmlinux 0xe63901a1 napi_get_frags +EXPORT_SYMBOL vmlinux 0xe64371bf tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xe671b058 iget_failed +EXPORT_SYMBOL vmlinux 0xe6744a89 omap_clear_dma +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69e3856 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xe6a27fba wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xe6beae45 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xe6c3ebb0 __raw_writesw +EXPORT_SYMBOL vmlinux 0xe6d0fd38 do_sync_read +EXPORT_SYMBOL vmlinux 0xe6eb77fe skb_find_text +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe6fbe96e proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xe707d823 __aeabi_uidiv +EXPORT_SYMBOL vmlinux 0xe72a5c93 vm_mmap +EXPORT_SYMBOL vmlinux 0xe73d0fde sleep_on +EXPORT_SYMBOL vmlinux 0xe75ce1a8 mdiobus_read +EXPORT_SYMBOL vmlinux 0xe76e19b8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe79809e7 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a9e446 pipe_to_file +EXPORT_SYMBOL vmlinux 0xe7af7153 posix_lock_file +EXPORT_SYMBOL vmlinux 0xe7ca1844 ping_prot +EXPORT_SYMBOL vmlinux 0xe7d42d0b delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f44597 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xe7f4e337 nand_lock +EXPORT_SYMBOL vmlinux 0xe80c9191 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe80e8691 scsi_remove_host +EXPORT_SYMBOL vmlinux 0xe82d1c87 log_start_commit +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe87ed1ce idr_replace +EXPORT_SYMBOL vmlinux 0xe893c4af snd_pcm_lib_ioctl +EXPORT_SYMBOL vmlinux 0xe8a27752 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe8a99d5e dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8d0683c write_cache_pages +EXPORT_SYMBOL vmlinux 0xe8d63b2e generic_file_open +EXPORT_SYMBOL vmlinux 0xe8e6dd74 block_commit_write +EXPORT_SYMBOL vmlinux 0xe9046d8e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe94605ac dentry_unhash +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe95f91a4 neigh_parms_release +EXPORT_SYMBOL vmlinux 0xe96b35d0 get_disk +EXPORT_SYMBOL vmlinux 0xe96d85a2 blk_recount_segments +EXPORT_SYMBOL vmlinux 0xe97ec086 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xe9c76685 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xe9c9ba29 km_policy_notify +EXPORT_SYMBOL vmlinux 0xe9f147a7 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea1970bc kmem_cache_create +EXPORT_SYMBOL vmlinux 0xea204ef3 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xea6f48d1 clear_inode +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9fb9df rename_lock +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaea334a input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0xeb15ce9e journal_init_inode +EXPORT_SYMBOL vmlinux 0xeb1b120e omap_set_dma_write_mode +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb378013 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xeb3cb802 scsi_block_requests +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb61ec51 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xeb78dc9b dev_close +EXPORT_SYMBOL vmlinux 0xeb959693 flush_signals +EXPORT_SYMBOL vmlinux 0xeb98fe8d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebcc935c of_dev_get +EXPORT_SYMBOL vmlinux 0xebd0b88c xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebf6a12e lro_receive_skb +EXPORT_SYMBOL vmlinux 0xebf780da uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xebfdcbdf system_serial_high +EXPORT_SYMBOL vmlinux 0xebfe95db journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec485a97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec510c93 netif_napi_add +EXPORT_SYMBOL vmlinux 0xec6a4d04 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0xec6d982e tcp_init_sock +EXPORT_SYMBOL vmlinux 0xecba1490 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xecbcf115 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xecd85338 md_error +EXPORT_SYMBOL vmlinux 0xecf31515 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xed2344e1 set_create_files_as +EXPORT_SYMBOL vmlinux 0xed266cb7 __blk_run_queue +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed37348c cap_mmap_file +EXPORT_SYMBOL vmlinux 0xed3a93ab fd_install +EXPORT_SYMBOL vmlinux 0xed5840cd tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xed854dac omap_stop_dma_chain_transfers +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc00468 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xedc338b8 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xedd9106d __ashrdi3 +EXPORT_SYMBOL vmlinux 0xeddbf3d5 kthread_bind +EXPORT_SYMBOL vmlinux 0xedf8b17c do_splice_direct +EXPORT_SYMBOL vmlinux 0xee025581 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xee108f30 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xee15ff03 max8998_write_reg +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee3b0e8f snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL vmlinux 0xee3f35e9 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xee4b3e38 create_proc_entry +EXPORT_SYMBOL vmlinux 0xee596802 generic_write_checks +EXPORT_SYMBOL vmlinux 0xee861386 security_path_link +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeedff491 __break_lease +EXPORT_SYMBOL vmlinux 0xef26c159 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xef3910dc d_obtain_alias +EXPORT_SYMBOL vmlinux 0xef3bc247 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xef75f942 read_cache_pages +EXPORT_SYMBOL vmlinux 0xef7b8cd9 fb_get_mode +EXPORT_SYMBOL vmlinux 0xef7f8659 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xefa8780b tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xefb66a95 omap_request_dma_chain +EXPORT_SYMBOL vmlinux 0xefb8df6c netif_device_attach +EXPORT_SYMBOL vmlinux 0xefd6cf06 __aeabi_unwind_cpp_pr0 +EXPORT_SYMBOL vmlinux 0xefdd2345 sg_init_one +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefec312f omap_get_dma_active_status +EXPORT_SYMBOL vmlinux 0xeff49f37 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xeffc3e12 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00e3865 kernel_connect +EXPORT_SYMBOL vmlinux 0xf019a5b4 skb_put +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf068c994 nand_scan_bbt +EXPORT_SYMBOL vmlinux 0xf095d1c1 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xf09b45fb seq_puts +EXPORT_SYMBOL vmlinux 0xf0cc070f posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xf0d2216b dquot_resume +EXPORT_SYMBOL vmlinux 0xf0d53085 eth_header +EXPORT_SYMBOL vmlinux 0xf0d68ed6 clk_register_clkdevs +EXPORT_SYMBOL vmlinux 0xf0e3cb14 unregister_qdisc +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fc826c new_inode +EXPORT_SYMBOL vmlinux 0xf0fdf6cb __stack_chk_fail +EXPORT_SYMBOL vmlinux 0xf10b7955 stop_tty +EXPORT_SYMBOL vmlinux 0xf11645b3 netdev_err +EXPORT_SYMBOL vmlinux 0xf1192185 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf125fe83 module_refcount +EXPORT_SYMBOL vmlinux 0xf1273d7e nf_hook_slow +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf14516fe tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xf174143a genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xf17c7c91 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1b31d3b jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0xf1c700d1 mmc_add_host +EXPORT_SYMBOL vmlinux 0xf1ca44c6 tty_register_driver +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1f44778 scsi_register +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf210b80f tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xf215d60d udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xf21bc94d set_binfmt +EXPORT_SYMBOL vmlinux 0xf2251d49 vfs_write +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24d97d0 skb_store_bits +EXPORT_SYMBOL vmlinux 0xf26df746 omap_vram_free +EXPORT_SYMBOL vmlinux 0xf295ca65 snd_pcm_set_ops +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b80c28 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xf2b9ed2b give_up_console +EXPORT_SYMBOL vmlinux 0xf2e0a73a snd_card_unref +EXPORT_SYMBOL vmlinux 0xf2e5a880 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xf2e78011 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xf2f63e74 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf31c8008 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0xf3227ba1 account_page_redirty +EXPORT_SYMBOL vmlinux 0xf3234334 dquot_transfer +EXPORT_SYMBOL vmlinux 0xf32baa4a ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34e2095 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf351cb1f vfs_llseek +EXPORT_SYMBOL vmlinux 0xf3559cf7 snd_info_create_card_entry +EXPORT_SYMBOL vmlinux 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL vmlinux 0xf388944d file_sb_list_del +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf390e2a6 blkdev_put +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3a3e15b page_address +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e0d359 locks_delete_block +EXPORT_SYMBOL vmlinux 0xf3e2b970 locks_free_lock +EXPORT_SYMBOL vmlinux 0xf3fffbc8 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf4076a1c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0xf409e08a filemap_flush +EXPORT_SYMBOL vmlinux 0xf4104a26 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xf44b03d9 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xf44c2e0b freezing_slow_path +EXPORT_SYMBOL vmlinux 0xf45bb2e1 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xf45cbd76 kill_pid +EXPORT_SYMBOL vmlinux 0xf46adb1a neigh_update +EXPORT_SYMBOL vmlinux 0xf471a5c2 blk_put_request +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4cfcc97 tc6393xb_lcd_set_power +EXPORT_SYMBOL vmlinux 0xf4d95810 inet_release +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4fe07a0 mii_check_link +EXPORT_SYMBOL vmlinux 0xf4ffea60 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0xf51212c4 i2c_use_client +EXPORT_SYMBOL vmlinux 0xf52e15c1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf545b37c arp_xmit +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5516a34 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xf564412a __aeabi_ulcmp +EXPORT_SYMBOL vmlinux 0xf5784987 con_is_bound +EXPORT_SYMBOL vmlinux 0xf5a3e1c6 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf5ae3f81 generic_removexattr +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5d70668 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xf5df134c __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf61cdfc1 __page_symlink +EXPORT_SYMBOL vmlinux 0xf62a388f backlight_force_update +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf646f89e fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xf648616a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xf648dfe6 may_umount +EXPORT_SYMBOL vmlinux 0xf67c24f2 mount_nodev +EXPORT_SYMBOL vmlinux 0xf67c8741 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf67d60e0 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xf6a3253b fb_class +EXPORT_SYMBOL vmlinux 0xf6b8567d downgrade_write +EXPORT_SYMBOL vmlinux 0xf6ba8318 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d046da key_put +EXPORT_SYMBOL vmlinux 0xf6d7e5d6 snd_pcm_link_rwlock +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6eef04d inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf6f3cef6 omap_vrfb_setup +EXPORT_SYMBOL vmlinux 0xf7078511 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xf74ecc5d insert_inode_locked +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75d7990 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf777397f __bforget +EXPORT_SYMBOL vmlinux 0xf7802486 __aeabi_uidivmod +EXPORT_SYMBOL vmlinux 0xf78306d3 d_validate +EXPORT_SYMBOL vmlinux 0xf78478a4 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf792d7e3 kobject_get +EXPORT_SYMBOL vmlinux 0xf794311c mntget +EXPORT_SYMBOL vmlinux 0xf79c9fa3 omap_vram_alloc +EXPORT_SYMBOL vmlinux 0xf7ae8d2f tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xf7c61815 get_omap3_evm_rev +EXPORT_SYMBOL vmlinux 0xf7f81131 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xf7fa1b62 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf835758f md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf853ab50 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xf853bbca omap_vrfb_map_angle +EXPORT_SYMBOL vmlinux 0xf87213bd sock_kmalloc +EXPORT_SYMBOL vmlinux 0xf88c3301 sg_init_table +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8fbb4f0 __bad_xchg +EXPORT_SYMBOL vmlinux 0xf90b6bd2 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf93498fd input_free_device +EXPORT_SYMBOL vmlinux 0xf93a8d2e jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xf9831617 dst_destroy +EXPORT_SYMBOL vmlinux 0xf9939fc2 snd_card_set_id +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9ad6c2a i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xf9cbd845 journal_forget +EXPORT_SYMBOL vmlinux 0xf9d5ee34 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xf9dc183c inet_frag_kill +EXPORT_SYMBOL vmlinux 0xf9dc42f9 seq_open +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ef0b8e mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xfa082128 down_interruptible +EXPORT_SYMBOL vmlinux 0xfa3643fb omapdss_default_get_recommended_bpp +EXPORT_SYMBOL vmlinux 0xfa3ad38e kmap_atomic +EXPORT_SYMBOL vmlinux 0xfa585a30 find_or_create_page +EXPORT_SYMBOL vmlinux 0xfa660e3f __bio_clone +EXPORT_SYMBOL vmlinux 0xfa7c26e4 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0xfa8af8e0 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xfa8fb9de lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xfa950f38 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xfac32472 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xfac68eba arm_elf_read_implies_exec +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfaca2280 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xfacd2e14 pgprot_user +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfaff1690 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xfb0d5d32 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xfb26ccdb kmem_cache_size +EXPORT_SYMBOL vmlinux 0xfb41f913 rt6_lookup +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb6e5410 dev_addr_add +EXPORT_SYMBOL vmlinux 0xfb7d9c45 __udivsi3 +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb86ff7 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xfbdaf097 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbf3d8bd mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xfbfe4e28 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1a2583 md_write_end +EXPORT_SYMBOL vmlinux 0xfc1d7daf inc_nlink +EXPORT_SYMBOL vmlinux 0xfc23bb3a init_net +EXPORT_SYMBOL vmlinux 0xfc35766a dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xfc38474e __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc45c7e3 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcaf6b59 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcebaa28 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcfa1b2f dev_addr_init +EXPORT_SYMBOL vmlinux 0xfd08e989 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xfd13b9e8 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xfd305341 walk_stackframe +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd67f965 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd786d6d scsi_host_lookup +EXPORT_SYMBOL vmlinux 0xfd875215 commit_creds +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL vmlinux 0xfde5b4d5 setup_new_exec +EXPORT_SYMBOL vmlinux 0xfde6bb92 dquot_file_open +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfdffdc01 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xfe14753a phy_connect +EXPORT_SYMBOL vmlinux 0xfe250cfd kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xfe3c6b36 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xfe4735ec bd_set_size +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe634f58 add_wait_queue +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe903138 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xfeb02436 filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfec5b241 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xfedffd86 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xfee79ab0 set_user_nice +EXPORT_SYMBOL vmlinux 0xfeebbaef skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff13d63a journal_update_format +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff67b37f __lshrdi3 +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff856324 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0xff97e7db dquot_scan_active +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 0xffe1b725 register_gifconf +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xffe5c31b inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xfff15b8e tcp_tso_segment +EXPORT_SYMBOL_GPL crypto/af_alg 0x6b134a1a af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x8f9153ac af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0xa65cae83 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xc04f705b af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xd18afe23 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xdb4057f9 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0xde156c3d af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xdf623e43 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x4cfb2bae async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd8e6cd50 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf7665dc5 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa944dc18 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xbf506b63 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x08cfb5bd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x172898d6 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa0d80ce7 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xa6371b89 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x030377e4 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x74e1b715 async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x3f356d99 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x0a938faa cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x310a8adf cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x856fda5c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xa064d1f3 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xa39c3ea0 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xa9b38e01 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xb25eb8f9 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xc318884a cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xdfc58eb9 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xeeeac2e4 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x355b63aa 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 0xc8d74ff8 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xcc87914f twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x750d7b38 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x0efc5a59 ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11296b63 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12e28f6a ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x13b679c1 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x25812008 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x49656714 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4ba65a6c ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4e8144e5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x58adbbe5 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5c064a6a ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x60558ef0 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x63f03bcd ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x775b2bec ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9a9e5aff ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa15dfad2 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xed582fda ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf119a366 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf803a861 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x723f93c9 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x7c583119 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x0cef45fb bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x1ec3791b bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x280d2e1c bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2f77fbe3 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x3ac8ba43 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x4dbb4224 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x54646bb7 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5689645e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x8f2db6dd bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x97192d6d bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa6db42e0 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb1a8f98b bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcec6da0d bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdc911c6d bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xea85ea0e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x169f3164 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x204bdbad btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x282b4e86 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x352ceea2 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x60e87637 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x62d8dc76 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x81000d42 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd1065c2f btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd67fa5f6 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf0306178 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x08da9925 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6bfe7a37 extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8b129122 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9a649faf extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xaaa1de2b extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xad3b9e7a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb414a6f3 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbfca5387 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc00b77e2 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc6dad6a7 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdadb03f7 extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xde7662b2 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x844db1d1 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa01e6ca2 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x63653845 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xd34ec0ff __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x1d41d914 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xd7db824f drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0e7a3488 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x208f711b hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2120e0b3 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30cd9604 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x37bd8671 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5007668d hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x52e1d863 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5da2265c hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x672328ca hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bc243ee hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7470b191 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x789cbd87 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7ede4994 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x84f82191 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x939f838f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x93c75b1b hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x95bba2d7 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9a2b8fa5 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9d7fde02 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe0bfd46 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc1a1ad5f hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9c050b8 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd6f24079 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda35a47d hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xda3be655 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4dd3a07 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xeb408504 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf8c7caea hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfea5a078 hid_add_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 0xe0c34d78 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x793a2138 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xcedbbfe7 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x0adf520d usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb629ac8e usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xc46b1008 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xed7abb64 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x07fc5c71 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0c87de3e hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x17fd3bf7 hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2e736400 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x86aaa356 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa91e7285 hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xb44126c5 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe8cfc43 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc8fb98f4 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8afc54d hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdcf41bdd hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe42d90b4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf7e62f71 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x05e484d9 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0fda20fe i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1117418d i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x44daf467 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x462fb5a9 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 0x7c2a22fa i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x82d9c254 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa520a770 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xcdc93406 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x38b83171 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x83bbaa67 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xbf2723ae i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xc326d507 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x0acd77a5 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x10a8dddb iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1bee2d53 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x27594f1b iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4e42fb8a iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5bd802c3 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x84999b75 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8c6a156e iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x95d88a8c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9a13d6d6 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xacb183f5 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb76b1767 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc44bbca3 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc8cb5645 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd6ad34c6 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x10ea3c7f input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xfe607136 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x25d89210 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeadcfa74 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xeb08bb8a cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1dfc6872 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2b706391 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x4439c4a2 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6ba4466a wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x761a5b30 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x78b0290f wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7b1a406c wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7cf88721 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x84d24414 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xbab05bae wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd70ff1e9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xf2c5145a wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x08599f72 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2451ec06 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3101d93b gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3387574e gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x35d05a02 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x4d6b0f31 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x54dbac55 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x57638090 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x661d41d5 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6a246016 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6ea01cba gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8583a37d gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9823fef6 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf692d4d gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb7563865 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe2dd6832 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe34f0272 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x0ad0dc4f dm_bufio_mark_buffer_dirty +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x22163b69 dm_bufio_release_move +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x3909d3a8 dm_bufio_prefetch +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x594952bd dm_bufio_read +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x62a23587 dm_bufio_get_device_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe39eaf6f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x134887a2 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0xd50909e3 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 0x15f98a28 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x70f9ca69 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0xb1f99e44 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc691780d dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcfcc85cb dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xe5552caf 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 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +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 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2dc9297c dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2e730a21 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x9b4b5b29 dm_bm_write_lock +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +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 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xf35b8892 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xe27ade15 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x6a419da4 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xbf524f7e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x6e4b83c9 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xcb0cf4da tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x97ae8ffb tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xcbc01c70 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x67f7a95d tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x12a19713 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdc01c2c1 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x422aa049 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xe9802e9d tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0xc5cededb simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xca71a8c6 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0xc6728344 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xe3f2b89d tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x01dd0791 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0f3f4b68 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x101acc34 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2cb3fff5 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3aba2661 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x50820dd8 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x654b791a smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65db318d smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6b5675ab smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7584386d smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7efd7b1e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8efb3c93 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa1d3b2c5 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd715cd3a smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xecb50843 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xef2fad99 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8ae8afe smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x004a37fd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x05fb336e rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x09f74e5d rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x15deac8c rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1e728a68 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x363fbd6a rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x426281fa rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4654f3b0 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 0x69e2797b ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x84fc67ee rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8ae043ce ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x9a8f4780 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa03c87da ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xad8eec82 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xbfc9e5b1 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdd8368e9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xeb7d8b1b rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0d4d6712 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1b6015a6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1d59f776 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x28bfe541 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x36dab4a1 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x453d5539 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4784f8fa cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x63cf1f82 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x68fbdde1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d9837a cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x902b3909 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9eca44cf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae3d8a24 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc27caf03 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd9f45a32 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe2e3fee7 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf5490e85 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfb43dcaa cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfba3709d is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03588dab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x07538dff em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0ddac052 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0fe6c176 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2d3006cf em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4489c064 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x56878bb7 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6ec1abd7 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x81065cb5 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8e91e284 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x97cc4b82 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd62b5186 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf046f7e7 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xfba71ace em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x090b7ab2 omap_vout_default_crop +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x3f08714d omap_vout_try_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0x87006df4 omap_vout_new_window +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xd5aa61c6 omap_vout_new_format +EXPORT_SYMBOL_GPL drivers/media/video/omap/omap-vout 0xe168e379 omap_vout_new_crop +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x07dbd221 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x166432e6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x197321db tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd9f31275 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x01935f6d v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4102273f v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x4cd954d4 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x51d0e57d v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xafc05ea4 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xe092a3cd v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x086271c0 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x797dff3b v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x8caf9728 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf3af94c0 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01f7bfeb v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1c7b6d56 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b575aba v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4b731300 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x588caf77 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69f8209c v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6aaa332a v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x78bb71d5 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaaecaff9 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe3179acc v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe1c0a9a v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfe8db231 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x064c7624 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1045ccc2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x14b50ba9 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x15ad7d9e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1e325a93 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20db1203 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x23138746 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2ac6a0c5 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x373da88a videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3c64079d videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4993207e videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e17b589 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5324069c videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5bb787db videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5c0b0651 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83ac9ba6 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8a1c09ae videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8f830bd2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9f93cf5b videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xba789c63 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xbb744607 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed1325ed videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf03e3036 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf867dee8 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x35547fac videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x7accad9d videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9a065738 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xe7065ea9 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x244bb4c1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x41c9ae39 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xe5ceccc3 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0d17162c vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0f52c3b3 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x52f877ac vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x78865444 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82715c36 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8cb3c35a vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9536c6bf vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9a59f274 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9eac1719 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa01f5ffd vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xaa4cff71 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xab00da2e vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xafe1ed30 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb0f1410b vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe6e7aaaf vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xed3e4767 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xfc8f6ddc vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x8905f9da vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe9da6780 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x4bf93c7f vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78b7b26c vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xa8562cf1 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xbbf7f600 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xee6df16c vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x086399fc vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x029b4654 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2e3c91ba v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x32aa7c72 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x43a3e76a v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4d4cbc63 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4f8b43ca v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x52ee7a7e v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5ee3727d v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7905874a v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7d32218a v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a0bc99f v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x90887e81 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x992211b2 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6503fbb v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbed4431e v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd1525803 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5bfcfc6 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdb3cb1cc v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5612e59 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xee3b720a v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf51ddfaa v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfe6ed6b2 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x3a0f8e25 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb9ef683b lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xbde8001c lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6494d669 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7146beb3 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xac546478 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb0a46496 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb2ce756b lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd0172557 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xdfe2ece2 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x25f0e9b1 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x398a339a mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xe69799e0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x10488d64 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x23dee731 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x25782377 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x462dc3c5 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e236ac0 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8c40a54c pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9cd5d160 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd33bea88 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xdd17fe6f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2f24813 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xebfe860b pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x33856c47 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x93b8a59b pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x40afb19d pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9da4bce2 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdc39c830 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe21faa5b pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xff434733 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x20a43ed6 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x77e99fe0 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x7ad3bfd1 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x995fb7f4 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd8d719b8 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x1b27e336 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xbc63ace7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xc92b3055 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xca2af4b8 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0x368f9dce ucb1400_adc_read +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 0x1b5948f9 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x659437b0 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x68aed3e6 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x85192d83 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x8c230d62 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xdc1c6ef3 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf63d9ebc enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0f90d799 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x145ac57d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3179986e lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3cf43c19 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xb65da669 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xce02309c lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xded86683 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x0942247a st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x996db400 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x23d59dbd sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3d7a52e5 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x4c60d1b6 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7d125b37 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7e30c6d9 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xfe8b52dc sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x2ecad99a cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x712ec32f cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xd7b4b136 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x038f3a9b cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x5348628a cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xec8057e0 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x0830ee4c cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x9d2d4170 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xca0ad797 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdbe3c031 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x82c38dc2 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x27e98bd3 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x29528f6f onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x18ce2ab1 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1e40bb38 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2745d1da ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x3d79a95a 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 0x5e35b9ae ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bbe66b3 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7d0481dc ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x821869e1 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x995d7ef7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaee05fd3 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbed8177e ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc39b86b4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe3f840d4 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2b004818 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x985e7866 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xcc745ac4 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xf65b24f4 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x23e9926d register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x25db0a27 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x57e558c6 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5ea8e057 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x6df454c7 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x71351635 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x89bd4283 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8bfb40e1 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x93ac3aae can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa5fcc12b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc296bae5 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xedd8ddab can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7dac32ef alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x80f8ee06 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb8b2befe register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xeea29b91 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x203f33c5 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x45078d70 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5b687a44 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xec66784f register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x018edcce cpdma_ctlr_dump +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x237efa63 cpdma_ctlr_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x4a6bea03 cpdma_chan_submit +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x5c2fe4a5 cpdma_chan_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x68e47b2c cpdma_ctlr_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x764928a2 cpdma_chan_create +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x949334db cpdma_ctlr_start +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0x9cdc9867 cpdma_ctlr_stop +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xc5d5513e cpdma_chan_process +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xe4c22565 cpdma_chan_destroy +EXPORT_SYMBOL_GPL drivers/net/ethernet/ti/davinci_cpdma 0xee8d7539 cpdma_chan_start +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x41689100 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x628847fd macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x702b561e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x70cd5509 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb2825a9c macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x5be6c552 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xfd85e495 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x2b7d1742 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8aff13af usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x8f1b31d1 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xab85b46e usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x2efd6f31 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x541f21ed rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x5da0a897 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x95690947 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xc68e5096 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd312ae5f rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0a4def59 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1e60e4d7 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x24939f65 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x41d8979d usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x459ed822 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x58f3799b usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x654f7b37 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6d755a57 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x88ca8bac usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9687d333 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xac85e39e usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xad209eae usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb174f68e usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb30d113e usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb48b697a usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb5524923 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbba696d1 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe7f12f6 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc0d26b40 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc237596f usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd7ab15b7 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd95c06be usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdd8be051 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf68b4d7f usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0129970b lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1bc18808 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x362774b9 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x47dbfc53 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x58655c92 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ad2438b lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5ddd54e1 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x640e5dc3 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x66e70f14 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x868a3b66 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xab5e295d lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xad324100 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd64e8152 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xddb233f2 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe90e4139 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfe943312 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x08220a7a lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1c237e16 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1fce0397 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x21c3f1b9 __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4c696dce lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x73d88954 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa6739e1c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xab7027a9 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_usb 0x4cc44026 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x609da1f3 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x043a4941 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x09733edf mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0ac91da0 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x10a3e381 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x18083f65 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2dafbe86 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x48a085d3 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x55fc58a5 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x61dec748 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6278a237 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7c0c905d mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa861918a mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xdfd9e3e7 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x16e36f7e p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x466b14a4 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4b630669 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4e707758 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x6f50db1f p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7d50ddb4 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xafa524d6 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbf3b4a68 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd9535f90 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03843f86 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1efa404c rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x20e065ab rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x219fba64 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2d6d549c rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x2f7e4c19 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x37d3220e rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3a22c285 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3d626d25 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3fa4fd99 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x44e7890b rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4a37c9d8 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x53c54fa6 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x56c5f612 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5780a6dc rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5f9f09c2 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x671833a7 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ad6672e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ad74d80 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6f44426d rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7db11808 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x80b2fe2b rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x81be6d3e rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8684c33e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x86d1779f rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x957f8fd9 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96a9bd3a rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9b21fede rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa5355027 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa8df79ff rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaa7972a0 rt2800_rt2x00debug +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xab81f2cc rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb0ff4a36 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb6768ee0 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc89b1100 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd6ae2e04 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdf5533b6 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe6f5191d rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7a05079 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf2ec63a2 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x032259dd rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x038a2bbf rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0fd33eb2 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x10518f42 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1348efa5 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1b2ca9d6 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1ef34a6d rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x23172b78 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2546f5ab rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2bd02cad rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3562148b rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x35b9c1ea rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x36c56eac rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3db5930b rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e0270f9 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4ff6aa91 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52f0c14b rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5452e954 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5931efb7 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5ca889a7 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5edb1a10 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5f8ae89b rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x653fbf88 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6a565cc9 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6bec8515 rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6d089e26 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82561c39 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x852aad2b rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88ba657a rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x88d6a0ac rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0d323d2 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa5ac7a42 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa6852b5b rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb0d62c1e rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb59338b0 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xba40e39c rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbaf48a2b rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xce0d146e rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1a52eb0 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd89f97bb rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdd2118d3 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xddc28dc1 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xec9bcfc9 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf17eed18 rt2x00debug_dump_frame +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfb0f8e31 rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xfc134600 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xff1ce82d rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1cff0fde rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x298c0bd7 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5096f8d2 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7405863b rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7dd2ae9e rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8065fa23 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x859f31eb rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x88a1a416 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9dfc64a3 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb02e45e7 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbed12df5 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf10d1b7 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbf93dd54 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc90adb4f rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdad100e0 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdd147ae0 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x5e4f3d00 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7b4840d3 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xe1762428 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x04b1798f wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x08ea78a2 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x116a2115 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37be5353 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5947c40e wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86e482b7 wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8d1a0c24 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9c95d522 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa8049d79 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xa833a263 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xd8d2facd wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe4835acd wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf6b0e2b0 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf9f5522e wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x2b8dea33 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x3a4c7729 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5a2f58 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x31bc8876 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x39958146 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5ceaa31a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65e4df4d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb339fe5b mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xb5aab6c8 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe376687f mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe83b2572 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5ee00ccb wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x7da035ee wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x8f51d25e wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99ca8282 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xe4e063fc wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf2d08be0 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x6b2ba7a5 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x042fe3f1 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1302bd23 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3e2a1eb4 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 0xb637c687 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc5f7408d scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd4384d32 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x02584a3e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x28d166cc fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2f8ef938 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x42edd5bc fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x47482929 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4797625b fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x48112eef fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x59532421 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x89dd2c22 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x940cdfaa __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xab4f590d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xba09f2b1 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe196b150 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1e1abd47 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x2a8c8514 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x41e3db18 iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4205c59b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xaf0bbcf0 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9bc0922 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x03e498fb iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e2fb0d6 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0ef41778 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x179b8c84 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1f2d6b2f iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x22769911 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2398a4cc iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x254acc51 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2ccd6370 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x33616f23 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3853c249 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b13494e iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50f12c47 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5394d876 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x57cf927e iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5d5d9632 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5efd51db __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x606f4ba2 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61948720 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x61b985b8 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6fd3a94c iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7c43acb0 iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80c591c7 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9294aacd iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94b1e326 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x972a10d4 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x998b07f3 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa22c7a8c iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacd055bc iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb1302729 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb34c48d5 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc6bc5970 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9257856 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcace4397 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcb3c19a1 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd2bc7e6b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe61f2dcb iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xee647552 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeed1dacb iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xef96b0d0 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf4486f7a iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe843f81 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff6a83fe iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x21919306 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x248e1689 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2f13d32b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x30a666b1 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3bb2ec06 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x44471dc8 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6c781ee2 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6e71e9d2 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x70f9ea3d iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x71bbe251 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74a49f8d iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x798a52ad iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x87b6cfd8 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd3ddc166 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd8d903d5 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfb393a4b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xffc66914 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x01ee4791 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0cf01d76 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12141b82 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x12fbd89a sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24949528 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x388972b6 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x542c89bb sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x67650b4d sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x760904cd sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x761372c1 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7f85e7a9 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x97b11aff sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa181edc8 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa6d103c9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbb07ff6c sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbd995f55 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbfc9935f sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc2ea6471 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc59159e6 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdf748984 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeddaf9ef sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee272bbc sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf49d43c8 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x114e3f91 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x24e4548f scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x330340df scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x77050454 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7fdd6b53 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9a19e6e3 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa7768fb6 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc2dc6ae0 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xc31d8973 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f3c0e32 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x170e52cd iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1a254c9a iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x293aafc0 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2a0b80d4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c598a7c iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c5ec345 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2da5a50c iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x38a394bf iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4a34ea07 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x572faddf iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x67215318 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6eab83e4 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a31ea4f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9677cb10 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xac46320b iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb155f18a iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb5da30f7 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb82c5274 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe4802e3 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc6d1bf70 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xce67a5e2 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd1c2da8b iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd2fdcddd iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd370a8e0 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd63c2d19 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd6701a28 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xda94ea82 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdd2f2668 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe8613bff iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf2eb71ea iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf33def16 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x6aa341e4 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xbbbf0329 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xc4be9a2f sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xe4107c53 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 0x0e8e9cc0 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x0f8dd0f3 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x51a09851 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x78d1e228 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbad4377d srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ea55a9c spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7cb77931 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa74320e8 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb4ae8a12 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xbf547ca2 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xfa7de7bd spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6f6b5988 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa54081f9 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc842aaad dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc1f02f1 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xce2ce23c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x62f2419d adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x1cff999c ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9df3ae95 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8ce324b ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbcb5a946 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd0a0e834 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf80f0d19 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 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 0x2743dfae serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3509aeb4 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3f3fb65e spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x52f1dbd7 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x53c4e5c6 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62f7cea3 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x717eb93a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x790425bd synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x817d1c7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8905e8b3 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8d9c4fb4 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb5acc53d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +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 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x330d1405 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4044fb7c usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x508d5650 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x55dd6d77 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5ad5da78 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x5d0300cc usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8eb77300 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa36dbaed usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa638860f usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb2bbe19f usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc3a90ca9 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xcffe488f usbip_recv +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 0xee34c48b dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x12b5190e max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2a8019a4 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x49b5c966 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x71f3fae0 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe6280e85 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xff951749 max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x6b2e2607 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xf649a80f uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc66478f uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x423f91cb usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x434723f2 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3a2ef842 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3e26e994 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x77f5bb0b usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x95e5935b usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb3568b08 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb7a07911 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbf2d0a62 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc53009ce usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd67c32b9 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3bfa6e96 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xfc9b3687 musb_dma_completion +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xd2fbfaa6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0e39fcf9 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x43b2378f usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x484ba83a usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5394dc8f usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x61cdce7e usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x75e03e45 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7791db21 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8051f6cf usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x8cece6c0 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x94999f47 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa289085c usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb79f1dad usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc270512c usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc5c3eec4 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xccf054e5 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xce2dccb3 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd5c117f2 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe2a4f99a usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xf016b422 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0ae75fe1 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x156638dd usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x233dc9ed fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x23708d64 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3fd33d84 usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x49b5e404 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x57bffcd6 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5869c0b0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59dac122 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x608684d2 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x716d0bd8 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x741e8d62 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x838d4cf8 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9cc4174a usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa2211468 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa5bd1ca2 usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaa1c7cad usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xaf14e379 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb2908973 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcf1afc29 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe2a255ad usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf2343f3c usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x01019865 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1bc96f4e auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x20514dc4 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x86edd0d5 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x875da42f auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x9793e88e auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3e1c4be auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc465a829 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd61d1714 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe0923ba2 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1906d5d3 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x1bd6108e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6bc53461 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x797088c5 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7aa734df ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe1395ec8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xe23601d5 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xc71f135e fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd23aa5ca fb_sys_read +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4a39611c w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6f299f85 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x9d9efdfb w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb9a069db w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc70d0a92 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdee32dae w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe6df29b7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xef78c939 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xfe92acf9 w1_next_pullup +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x69a767fb dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6e572dd9 dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x7db3050a dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x27f444d4 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x48039122 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x5e699a28 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9300344e lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa0f8fbad lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xb01dd2b8 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe281d0bf nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x01b073b8 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02bd8e76 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0989ddce nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d9ec97f pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x113117fe nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x11b7b52b nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13f5ac82 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x143ec1a6 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x160e9888 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28424c35 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28a10b7e nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x29b5b503 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3859414f pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4169b738 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4786073c nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50769752 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x536c897b nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d0da5e6 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4efd09 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x618be631 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6a61c9a4 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7be8711d nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d29fa76 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8d48aa7f nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9a1546f3 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9b375e2d pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xade3aa15 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3a94e67 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb781f190 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbef52ce7 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc049a45c nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc154f66e nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1620259 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc536c910 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc76ff059 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc849c8e nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd621c956 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7e3cc54 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc3e85a3 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6efbcb pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee777bb3 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xeec76eb8 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf62cf643 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf6617934 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8f8d837 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc05ce10 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x5830da5c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xee22f648 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14a5520d 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x3796f943 o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x51795bcf o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x622e6e97 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x62a7fd0d 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 0x72278f8f o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x910272cb 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 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 0x3dae01f1 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5b881bff dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x646877eb dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6cb65516 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 0x907094c8 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x90dc8adc 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 0x180eb3c3 ocfs2_stack_glue_unregister +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 0xb181e5f6 ocfs2_plock +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 0xf1992901 ocfs2_stack_glue_register +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 0x23fa33e8 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x42fcc27c garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x586f2bb5 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xb9ffba88 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xc1024faf garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0xf34aca60 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x027fe734 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x47b831db stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x29f55457 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x63f872e3 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x8240f6c0 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 0x7d1f05dd bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x020b298b dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2ae65f8f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2f783e09 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x301adbfa dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3073c6c8 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x34726a9c dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x369db7b8 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x39baeec2 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x406da13f dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4090e09c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x433441f4 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x46725bb4 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 0x67a8b285 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x683306c3 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6e98acd1 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x79aa150b dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7becc29f dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7dc2bb30 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e472b99 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8ec6613b dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9531a7c1 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x97c22800 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b282eab dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa17fb117 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba97d8cd dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc8b2f413 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcfa181f8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd9d15d63 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdcf476e4 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea531120 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeae28c6f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xeb69e8c8 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xecfabc36 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf262ab56 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf698ff06 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4d99a9ca dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5059f4e5 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5c061b88 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6111e7ab dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc187d95e dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfcabaa40 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x456cc772 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x48c587a0 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xacd5f65e gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xc91c8952 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3b942b91 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x65aa08b0 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x66c862b4 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7a712ece inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x817533fc inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xbbc889c7 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x6f4f3cc5 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x506068f7 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0xd56dfb55 nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x03f58400 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x437f8057 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x8125d292 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x858a2c55 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x89db608c nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x2d32701e tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x552e6986 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xaa8ee303 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd33ece45 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd388bc6c tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xf31e8655 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x026005d4 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0459a2f4 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x054792d2 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b162d11 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3ae12ecf l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x43f14ee7 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x789fe9da l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x869b02e3 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8dbdd42a l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xaba7c50e l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd81eae70 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xebf8114c l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1a343f12 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1dfa98fa ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1fff9b96 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x24d733ad ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x633496f5 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x11707a5c ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1abc88f3 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3843a11e ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x52425ed4 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x53edbe2a ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8e648075 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9868f7d2 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 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 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcf608e9a ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe6d97f0f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x4e9d8c16 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x75673406 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x81d475e4 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf9c0f6b4 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0480467a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x082cfa7e nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09600437 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0e0a4b4c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fe53b9c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x125b6f30 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x136f6134 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15d46ab8 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1939aacc nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ec866f2 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c7603c1 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31cd3b70 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3935e905 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3af7522e nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f38c0bc nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x45175a4c nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x48999b59 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e2e38e8 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x50ec5448 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51361342 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x51dfa56c nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x53a9dccd nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x583aa005 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5a906cb2 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e374ed5 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x60e710e2 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6d7fe4a4 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71a18b82 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73563203 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7435b405 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7531fa76 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 0x7f58db58 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f7d638b __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x827e9d28 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ab8b577 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b2e10ee nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f70818e nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fb5ee4c nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fdd558a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x905d2c92 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9183c0af nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x958b33b0 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d59ee3a nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa927edb6 nf_conntrack_tuple_taken +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 0xaf62a93c __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf7bf9df nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb3f322a8 __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb733e1f3 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb918726c nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbde1fbd6 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2179269 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc80e02ed seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc8fe8c48 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xca30244f nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1d52369 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd51ab8ba nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5f7454a nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe51a8e69 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xecadbaa9 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xeecfced8 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf021f0eb nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf25f2a56 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4d93d20 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf93e299b nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfcba7ec3 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff4b91c7 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xa013daa1 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x275ba122 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xca099929 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x12e67236 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2ec8e244 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x56ab0a10 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7bfe5ca4 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x939604b6 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa6f28fbd get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xaf01b5ff nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbf7b3cf3 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd4bb8608 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xde9ac579 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xf48b0574 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2b74af23 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5a447ef8 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x5d7a20b4 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x8ebc08a0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x231d52bf nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xd59273a0 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x004a3407 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x277a0cab nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2dcaf58f ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2fd71ffc nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4544466c nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6d0a0fdb ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x734bcc59 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7b2a7328 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x869e1f72 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8a1fd92e nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbbe14993 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdaa4526f nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xdecd81c8 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x8a936b8b nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x38473e6d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x3076c79d nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5e010508 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x73fb79c7 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8e5767ba nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xae5ccbd6 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xafc8195d nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc01682e0 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x98654da7 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x53b2286b nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x038f5c09 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0a7719a9 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1685ccc2 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1b3e1f08 xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2a4fe911 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3a3d2077 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88639b48 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc1610500 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc2df4649 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb02984e xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcb9aabb7 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe5627b33 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe779c867 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf6805745 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x563d999b xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf6afa81c xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x1111f01a rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x12ef80ae rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x13841b73 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x15b1df00 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x19eb1df5 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x228532f1 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x2aef8cd7 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x30a6acc6 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x38b0126c rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x3fb7f6c5 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x4cb7f9b3 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x544264f5 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x546732ab rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x58913c26 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x59d308dd rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5fbb8141 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x86294131 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x88ea94dd rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa6529efa rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xa7777382 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xe0e6daf0 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf0190420 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xf1847c45 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xf6787a4e rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xfd2bf0df rds_conn_destroy +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x3fef1972 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xcce4728b 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 0x032d07c9 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x59d036c6 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x62cf3be0 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x86d7f52c svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8a772072 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa3c4999b gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbc08f930 gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xc6c31be4 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xe52b9ec6 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf07a9305 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf48dee32 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00663fff rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00be1471 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02b8d726 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02ffafa7 rpc_wake_up_next +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 0x0b74c902 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x100430e1 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x112fbf82 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15297d4a xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1589d57d rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16080e6a sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a20cae7 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2156869a rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21b3e47f rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21bad064 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22bb62b1 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23eb38e1 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2582c4a5 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2599638c xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x264dce3f xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26f35cd6 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b343175 rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b75dfac rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2dada273 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e2fa726 xprt_unregister_transport +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 0x30c02704 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32d925d3 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35d44b02 rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387bb34f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3901f48b svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3afe5492 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b6f129c sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b9b1c9b rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cfd4d2e svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ee0abfd xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f2536fb xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40460f3e xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4163c2b3 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48ac5c24 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49635bef svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d53602 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b350ac2 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bd250c1 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c0a7ea5 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e17957f xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ec99491 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x558e6711 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f54d16 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55f5ce97 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5adb1b57 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ae4a238 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b18c2b5 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bf3eecc cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d81907b rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5da5a77d svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x626f6434 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6475896c rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b14429 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x690ac893 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b6d006a svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb0abb0 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8f2614 xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6decc925 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fc50753 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6fdd2664 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70659b5d rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7073d1c7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x710a3d38 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x75ab3622 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78ae7a11 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x795aa079 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b0064da bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x808cd845 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8171cc0d svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81ab0def sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x834e4a51 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83645766 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83798089 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x853977b8 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x864749f9 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x880f1844 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x885f20d8 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a554ae9 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a6bf7a5 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b0a6ef3 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bafc457 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cdaea94 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f91d36a xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f97cc18 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93a3b5c7 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x947f38b3 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95022c84 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x963294a1 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96915f68 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97572b61 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97a607cd rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98317f21 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x986e51b4 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9880f31d rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a468d73 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2d7182 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9cc0c229 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e6ac417 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f68267b rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa157a84d rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa432b366 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa5691ad2 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6d6feab svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa829dda4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab43386f rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab6699b8 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabaf8106 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad7d1f4b rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadff5763 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf048d66 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf27a192 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb126ba5a xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb17fbbf6 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3098bb2 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb540cb1e svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb593abac xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6182a94 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb705f07e unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba3b3b4c xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb1b5c7f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbed6967 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe281b53 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbeda976c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0e15e66 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc1c930fe rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc56e6772 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc61d6454 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc672c109 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8f6cafc svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd24478 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc46cbee rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf86c653 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0149a19 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd02b05eb sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd216f371 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2a87cf0 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd517ccd3 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd76ea40b svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9274fbd xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd92a83b5 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd92fef26 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd93c49b8 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda18c0a5 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda3c4763 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda9038b9 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdca55a0b rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcf3694d xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcf7a3c7 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe13501f0 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe14d9421 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe326a4b2 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3e0ec7e cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41c7535 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe632ca96 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6eb1c1f svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8c71e4e svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9c1ec50 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcd55d9 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedd8a509 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedf707d9 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee1f0de2 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf12c2646 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2bfada4 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf30d5d32 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf41fd30b rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb3c2c59 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe10720e cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff88eb21 rpc_protocol +EXPORT_SYMBOL_GPL net/wimax/wimax 0x04253984 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x24e28e53 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x400877a3 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5c04f3e6 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x60d78eab wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7720de78 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x79d4c76a wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x97f9fea5 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x984af745 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9aaef8fd wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9b9ea1a2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0xaac0277e wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xbbb3311d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0a9d0149 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1e8d075d cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x20f237ad cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x45133c19 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4fe9f174 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x918ee13d cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x935ead14 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x96e04c1e cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa5352369 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb5b36b77 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xda2bc941 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe8975b38 pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1c0783f9 ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4432a3ac ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xec3758f3 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf26446ae ipcomp_input +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x2c407cc5 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xd5a3973f pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x31ac51d8 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x5d13c551 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x1a44e0ac tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x45481b92 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x14d99bb8 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x50273afc twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd40d39dd twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd508b0cc twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xd625b3eb twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xba071886 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x19919ed6 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x2ff8b3af wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x38fc106d wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x818c3928 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8c40b38b wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa9ee5b46 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb7efdc6b wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb8505ac3 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x3e9fcd99 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x6dc4874f wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0xb39ca90c wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xda380fa3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xa0698cb4 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xb337f7b2 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xcaa0399a wm8996_detect +EXPORT_SYMBOL_GPL vmlinux 0x000668dc irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x00075d04 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x00654993 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 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 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012eadd3 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0x0130dafb tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x01393c24 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x0148adb6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x016e3943 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c33702 mtd_unpoint +EXPORT_SYMBOL_GPL vmlinux 0x01c6cb0c cpu_cluster_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x022348f1 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x028552b8 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x02c8a5e3 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03453443 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x0355789b ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x03a07b11 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03e3fa81 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL vmlinux 0x04180da7 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0x04251a3e led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04ae6b56 cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x04bba198 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x050fbefa usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x0515cef1 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x051ee1bf device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05420ce0 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056d5bd2 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05a80d0a pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05d80238 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x05f39d73 snd_soc_cnew +EXPORT_SYMBOL_GPL vmlinux 0x0606a1dd __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x060c2e5f inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x0624b27b dapm_reg_event +EXPORT_SYMBOL_GPL vmlinux 0x063b82e4 snd_soc_get_strobe +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x065335a0 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x069441fc bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x06a29820 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x06ac7be6 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x06b252d6 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x06f57384 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x0709a989 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x073247f9 da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x074bd082 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07a343c6 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07b86647 snd_soc_bytes_put +EXPORT_SYMBOL_GPL vmlinux 0x07f089df relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x08181428 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x083cb4d8 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x087d8bac spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x0896c28d tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x08eab084 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x091a29b3 usb_bus_start_enum +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x094d38b8 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x097ad8a0 mtd_erase_callback +EXPORT_SYMBOL_GPL vmlinux 0x09a1aaa4 register_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0x09ac2346 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09ce7319 snd_soc_register_card +EXPORT_SYMBOL_GPL vmlinux 0x09db167f mtd_write +EXPORT_SYMBOL_GPL vmlinux 0x09e3ac69 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x0a0bf193 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x0a0f0af1 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4f7895 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0a519c01 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x0a8f07d4 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0a9564f4 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x0aa33262 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x0ac82454 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x0acfe8c5 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x0b06fdb8 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b4ccb82 sdhci_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0ba09b27 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bbae511 return_address +EXPORT_SYMBOL_GPL vmlinux 0x0bd6a198 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf1e21e sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c01c84b __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x0c042caa power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c4241ae sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0c4caeb8 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0cbb600c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ccffe10 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d1b26f9 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x0d1e3c3e rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x0d2bc1e9 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x0d30ea61 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d3abc9b unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4241ad tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0d4a7bd5 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x0d61a1d3 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x0d6cd567 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0da7e94b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0dbddb24 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x0dbebb12 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0dda9cc1 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0ddf2acb ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x0de1db6c sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x0dee211e ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x0df7c393 mtd_block_isbad +EXPORT_SYMBOL_GPL vmlinux 0x0e045a13 omap_dm_timer_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e16ee41 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x0e54fb9b fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x0e5af2b2 __mtd_next_device +EXPORT_SYMBOL_GPL vmlinux 0x0ed2f405 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0x0f14864d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x0f1c556e snd_soc_cache_write +EXPORT_SYMBOL_GPL vmlinux 0x0f34a292 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0f4ac36a usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x0f53833c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10155f64 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x101eb0c8 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x103781f1 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x10734b7c device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x10a5a913 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x10ab4825 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x10b6cad3 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x10bb4f55 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x10e282f7 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x10f5e24b free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x110a093c klist_init +EXPORT_SYMBOL_GPL vmlinux 0x1142f296 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x116e9bae ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1175f652 __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x11773d22 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x11b6c3a7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x11ce41ff bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x120ac879 gpmc_init_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x1232fa96 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x12480f42 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12837a61 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x1297feb6 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x12be7bdf tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x12cfcc74 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x12ecb412 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL vmlinux 0x12f8f654 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x1325cd42 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x13630626 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x136e01c7 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x1371d3d8 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x137729ce snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL vmlinux 0x13ac1905 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13cfb561 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x13da31c7 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x149c2dc9 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x149fd177 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x14c9c386 inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x1506b3e5 omap_uninstall_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0x1509b0a0 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x150df472 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x1519833e device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x1545f4de register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x158344bd dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15c5d40f cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x15d9d086 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x15e825d8 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x15f756e8 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x160158ab mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x163152c1 __get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x1638a168 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x1664e775 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x166dcac1 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x16b812ea sdhci_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x16da80ac __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x16decba7 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x1727ba5f tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x175b617b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x175d40d4 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x1762c267 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x1763b07e find_module +EXPORT_SYMBOL_GPL vmlinux 0x176e28d9 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17e3a646 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x17e7e4c5 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x1808a328 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x183dd256 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x185391d3 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1870a88e ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x18849542 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x18921769 device_del +EXPORT_SYMBOL_GPL vmlinux 0x1899b2c6 usb_gadget_map_request +EXPORT_SYMBOL_GPL vmlinux 0x18a15d09 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x18bae6b6 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x18d2d3c9 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x18d40746 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18e5da11 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18ff3afb usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x19031208 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19456e90 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x196fbfec usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x199232b0 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3e4564 shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x1a4a9ce8 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x1a65920b omap_iommu_arch_version +EXPORT_SYMBOL_GPL vmlinux 0x1a67721b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x1abb724f cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afaa190 mtd_add_partition +EXPORT_SYMBOL_GPL vmlinux 0x1b00d4ad device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1b0a8ff3 snd_soc_platform_write +EXPORT_SYMBOL_GPL vmlinux 0x1b0e34e7 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1b18f808 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x1b1b9718 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x1b34a45c fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b85209d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9af522 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b9bc108 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x1bc288a6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x1bc50751 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1bff2b8a attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x1c052235 snd_soc_info_volsw +EXPORT_SYMBOL_GPL vmlinux 0x1c0a5bb4 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x1c24b0eb skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x1c262434 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x1c3015e5 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c922a08 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x1ca34d16 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1ce4137a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x1ce5683a snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec09c2 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x1d1a25f8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5de3ea mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1d664a5f sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x1d6894a7 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x1e1524a4 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e330266 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e3bb8c3 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e929cba simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x1e939184 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1ea1d241 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ed4f129 page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1eecee2a do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x1f0f9e7c gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x1f37286e register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fbb6da3 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x1fc7d787 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1ff10a76 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x201ab491 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x201fb979 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x2027bdef ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x2048317c wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x207e6cc5 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x2081144b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL vmlinux 0x20872836 input_class +EXPORT_SYMBOL_GPL vmlinux 0x208aa147 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20dfd02f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x20fa79b7 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x214ad6c3 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x214cc864 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x21a861ba usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x21ec3e10 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x21eed484 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x220b5875 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x2211dcde vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x221e9136 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x22281114 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x227d4d01 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x227d678a fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229df9e0 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0x22ab17f7 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x22eb01e6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x231d70fc encode_bch +EXPORT_SYMBOL_GPL vmlinux 0x23513169 put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23733f12 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23a05f46 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x2423ff6b spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2468949e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248db7e5 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x2492b7b1 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24bc579c snd_soc_test_bits +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fbdc2e bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x253efd08 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL vmlinux 0x255ae904 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x256678a6 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2583f49d tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x25b8b8d3 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x25c14ee7 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x25e6cb8a platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x2610bb99 mtd_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26d5135a snd_soc_unregister_dai +EXPORT_SYMBOL_GPL vmlinux 0x26fe7fd5 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x275a4363 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x275b6f8f amba_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x2790007c snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x2796a377 sdhci_alloc_host +EXPORT_SYMBOL_GPL vmlinux 0x27b944ea omap_iopgtable_store_entry +EXPORT_SYMBOL_GPL vmlinux 0x28281df5 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x284a59a2 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x284e6718 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x28938e84 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x28948c99 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28b11dc4 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x28b31a6f ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28ec8afa rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x28effedd set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29204af1 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x294732a4 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL vmlinux 0x29683010 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x29a798b4 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x29ddeb90 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x29e24acf snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL vmlinux 0x2a08a563 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x2a295418 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5748c9 cpu_pm_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x2a5d8eb9 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a880acd kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x2a9dffda crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x2ac063f8 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x2ace4d96 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2ae963bc regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x2aeb2083 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2aee0989 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x2b3dbb12 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x2b831e9b __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x2bdeaa5d gpmc_calculate_ecc +EXPORT_SYMBOL_GPL vmlinux 0x2bec437c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x2bf142d3 tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x2bf5ed11 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c281127 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2c2f069b mtd_lock +EXPORT_SYMBOL_GPL vmlinux 0x2c309940 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2c583ba2 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c922ac4 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2c93da68 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x2c98bd2c crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf1f6ba i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0x2d0cd307 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2d154bb1 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d36a8c5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x2d45db30 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x2d90fae8 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x2dacde31 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x2dbf2173 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x2dc7a7b9 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL vmlinux 0x2dd08daa dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x2de2be79 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e341b12 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x2e8ff70f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x2e9256d5 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x2eae3434 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x2eba89bb kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed9efbd usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2f3dba94 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f9078f9 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x3004ad39 mtd_writev +EXPORT_SYMBOL_GPL vmlinux 0x3029cc50 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3037218e led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30a96082 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x30ab9b86 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x30baf29a pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x30d514aa hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x30e22742 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x312607e6 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3170ec63 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x3191013d gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x319d4369 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x31a4ca2a of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x31a820ed register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x31bc4603 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x31bd8b90 adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31d1ffe8 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x32587faf tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x326572a4 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x32660688 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3268de26 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL vmlinux 0x328ead51 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32d3fbe1 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x32dc99ab ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x32f19cfb device_rename +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3359aeeb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3361e62e ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x337521ba inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x338a188a devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0x338d6665 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x339416fd ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x339681ee crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x33edefb9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x341643ba omap_dm_timer_modify_idlect_mask +EXPORT_SYMBOL_GPL vmlinux 0x343eb67b s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3448c3c5 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348b1924 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x34f93356 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x34fbe29f get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x3511cc68 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x351cfbc5 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x352f940a mtd_unlock +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3554cc03 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x35554107 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x356d6676 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL vmlinux 0x35751de5 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x35ba494e usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x35cba215 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x35cce9a3 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x35faeaff xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x3601fac7 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3621735f usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a6400 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x3697ad94 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x37222a12 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x372686be raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x3740e4a4 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x374794f2 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x3769ab0c klist_next +EXPORT_SYMBOL_GPL vmlinux 0x379b5fd6 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x37b0bf04 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x37c4fc46 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x37deebb5 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x38a2902b usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38d8546c device_create +EXPORT_SYMBOL_GPL vmlinux 0x38d93e0d snd_soc_jack_report +EXPORT_SYMBOL_GPL vmlinux 0x3920d6db kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x394d2732 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x397da1f4 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x39a6f0f9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x39a8b807 gpmc_enable_hwecc +EXPORT_SYMBOL_GPL vmlinux 0x39b021bc pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x39d90b9b firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f2b2f5 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x39f33767 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x3a0b12f3 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a383a2b ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a71946c class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3a8e2b7d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x3ab80329 snd_soc_write +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3b059402 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x3b1fc014 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x3b770113 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3b7babcc handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x3b83b06b driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c150a48 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x3c25c74a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x3c2efcfa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x3c4bfe07 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x3c831441 arm_check_condition +EXPORT_SYMBOL_GPL vmlinux 0x3c83c007 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca7d831 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d33b0fa put_pid +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d7cafb5 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3daa40bc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x3dafdc20 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3db91586 scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0b125 omap_dm_timer_start +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3df27184 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x3e221e9f tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3e26437d ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3e396d7b sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3e591232 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3e647d9a ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ed78f06 mmput +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3eefe924 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x3f210e75 thread_notify_head +EXPORT_SYMBOL_GPL vmlinux 0x3f3e92cf omap_dm_timer_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3f56b240 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x3f620a84 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x3f69c73a unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x3f91f526 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL vmlinux 0x3fb180dd inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x3fe2caec snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL vmlinux 0x3fff6c55 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x401514d6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x401d7f01 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4049380e __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x40767ec4 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x4097f408 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x40a061be vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d1e635 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x4163750a snd_soc_info_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x416fffaa driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41f953c1 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x4215a113 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42243aee usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x423e7b81 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL vmlinux 0x42698100 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x426ccc55 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x4295844c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x42cc4d76 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x42f10c9e otg_ulpi_create +EXPORT_SYMBOL_GPL vmlinux 0x42f223a7 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x42f52a23 mtd_panic_write +EXPORT_SYMBOL_GPL vmlinux 0x42f61a6e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x430353ac md_run +EXPORT_SYMBOL_GPL vmlinux 0x43150244 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x431b9be9 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x4349b4e0 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x437859e6 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4383c9bb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43be8c8a apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x43c77fce irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x43e1aa9b inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x43e62b87 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x43e871dc md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f7dc76 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x4435c123 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x44657122 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x4467d965 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x446fc726 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x4490f2b0 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x451739fa user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x452d0959 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x45360c38 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x45895638 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45bf8905 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x45c6c8a6 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL vmlinux 0x45c89363 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x45c8c560 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x46281367 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x4630fbe2 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x463f11d4 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x4658c8ee of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x467a400f device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4691ac75 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL vmlinux 0x46f5377b sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472337c9 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x47473410 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x477f8de9 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x478d4ff7 gpmc_enable_hwecc_bch +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47c2869d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x47d8885f wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x47e7515d omap_dm_timer_set_pwm +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x480fabdf aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x481e9785 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x482621a2 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x4864213e pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x48688b96 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48e48ed7 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x49077d0b rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x490ec519 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x49339d26 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x493e2a7c mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL vmlinux 0x4946da71 omap_iotlb_cr_to_e +EXPORT_SYMBOL_GPL vmlinux 0x496b8639 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x4985e88b power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x498f9e19 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49d3c15e ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x49d490fb snd_soc_bytes_info +EXPORT_SYMBOL_GPL vmlinux 0x49e6fb30 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x49e7726c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x4a9807ba __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a9ac309 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4aafcee5 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4ac0454d fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x4afe8242 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x4b0041ee __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x4b182b63 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4c0fa949 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4c250800 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x4c4719bd modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c697709 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c848371 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x4cdbcafe dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x4ce60bad ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4d29d347 omap_dm_timer_set_match +EXPORT_SYMBOL_GPL vmlinux 0x4d31a535 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x4d81a8bd shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x4db1024a ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x4dd170e0 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e216a28 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ee1d8d2 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x4eefafaf debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f071807 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f3f05b2 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4f5085ee iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4f766466 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x4f923bd3 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0x4fa357fb regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x4fb793c9 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4fc76c35 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff5ae9f __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x5001d0eb snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x50272e96 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x507ea764 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50a14d47 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x50ac69a6 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x50b1d3f7 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51054ba8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL vmlinux 0x512e364a kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5139a73c shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x515624d0 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x516f4d1f pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x5171a293 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x518b7ae9 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x51904051 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x5192cf11 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x51ac8695 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x51e8a5e9 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x51fe81c2 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x52333b23 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x526d23d0 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x5272c92c device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x528b2f0d class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x528b4007 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x52c34852 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL vmlinux 0x52c9bed3 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x53292120 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x533617fc snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL vmlinux 0x534d8dd6 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x537426d0 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53b806a5 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5416fe08 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5422f1a9 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x5447ed07 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547d99ef dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x549496e7 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a5daea i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x54d95a56 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0x54e8efc2 nand_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x54fbced4 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x55197e65 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x552a7b59 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x55323e41 tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5542b913 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x554891f6 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x55f7f286 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x563615ba crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x564fe064 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL vmlinux 0x56532f77 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x56a31714 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x56b37044 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56c06bec evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x56c472fb usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x56d19e3b platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x56dcabfd blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e9103b cpu_pm_enter +EXPORT_SYMBOL_GPL vmlinux 0x56f08224 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56fc9785 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x56ffc523 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x570d920c crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x57185b69 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x572d7ad3 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x575238f7 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x5774148e usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x578fe4dd cpu_pm_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57a1a422 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x57b37c42 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x57b9b0ce crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x57dabbc8 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x57f39f0e scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5849f04c udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5862701e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x58673c6d usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x5868541c ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x58b68972 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0x58db893f debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5906a722 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x599d0cb6 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x59ab8d0e leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a62a5a8 omap_dm_timer_get_fclk +EXPORT_SYMBOL_GPL vmlinux 0x5a6bfa63 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9d3593 amba_ahb_device_add +EXPORT_SYMBOL_GPL vmlinux 0x5ab35762 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b2b510b rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b5d2479 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5bb8d19f snd_soc_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bdf55f7 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c2306f4 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x5c3241ca tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5c564800 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0x5c696ab6 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x5c69d7cd usb_gadget_unmap_request +EXPORT_SYMBOL_GPL vmlinux 0x5c82c02c dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x5cbd5ac7 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x5cca6f69 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL vmlinux 0x5cdd59bf stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d95a61e find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5da21c2e dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e7874e4 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x5e7ccdfd rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x5e805b70 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x5e895489 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x5eac3801 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x5ecd6939 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x5ed4b0c3 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5f0f63fd netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f288729 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x5f3c4dc9 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f9ff813 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x5fd2a143 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x5feba456 user_update +EXPORT_SYMBOL_GPL vmlinux 0x604c1f18 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x606098b1 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x60708697 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6106c752 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x6107707d pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6125ba83 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x612869e4 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x612a0513 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x614e5bbe tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x6160b5aa pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616e4bc4 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x617bbb8d pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x61c027a3 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x61c3a9cd wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x61c9654a fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x6225490f usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x623fd46b ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x62488bb9 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x629f271a iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x62a74e3d dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x62a92c71 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63291c16 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x634d3092 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x636fab81 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6376898d scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x63778ba7 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x637f8bdd sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x63d0001a blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x63d89c26 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x63f4a106 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0x63fe9924 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x6422b893 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x6441e6aa device_move +EXPORT_SYMBOL_GPL vmlinux 0x64902f52 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x6498314b cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x649da5c5 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x64d21c1a fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x64d7b381 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x64e15403 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x6544bb1b unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x655dee64 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x65763911 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6ba6d cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dee7d6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x65e44a7d transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66299361 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6651e415 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66843c1e subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66cfaea5 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66eaecf5 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x677e8d7a posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x6781165d usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x67885f98 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67bbb53c tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x67c68811 snd_soc_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x67cd87ce fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x67f9bcf0 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x681dbc63 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x682024d0 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x682e5ed4 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x685a3c6c inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x68743e06 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x687b10e0 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68be26d0 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x68d036f9 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x68d148e2 css_id +EXPORT_SYMBOL_GPL vmlinux 0x68df6cbe snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6905f584 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69246f8e pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x6966cc4c bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a7732e ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x69bb804c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x69c993a1 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69d3232a crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x69e3de04 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x6a1c02ac ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6a33f838 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x6a3769a2 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL vmlinux 0x6a4e483d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x6a5432cb blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6a59e6ed disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6aa45aea driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6adede61 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x6b15a97c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL vmlinux 0x6b25c57c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b33a5f6 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x6b6b7874 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x6b770f49 decode_bch +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6bb3f5a6 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x6bdcd27b get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x6bf223f1 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6c30dbe9 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x6c3f6995 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cc8ed55 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x6cd5ef82 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL vmlinux 0x6cedb6e6 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x6cf4f2d0 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x6d2e52a8 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d710848 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6d83bee0 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x6d889da1 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x6db1b111 __put_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x6dcc0810 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x6def1c2c crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6e09af4b sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x6e17a27c dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x6e2773ed usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x6e2ad732 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0x6e3fd382 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x6e6d26e4 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x6e808f8d crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e8f4381 snd_soc_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x6ea1d118 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x6eeb3bea snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0x6ef1820e release_pmu +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f230820 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2a6be1 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL vmlinux 0x6f3665a9 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x6f684540 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff3f67c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x70077535 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x702fb822 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7055a19b usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x70579003 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a1be4b pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x70aa3260 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x70aad982 register_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70de145d omap_dm_timer_write_status +EXPORT_SYMBOL_GPL vmlinux 0x7132563a usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x714c4ba3 usb_del_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x714de325 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x715c184e ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7172109f crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72247a30 usb_add_gadget_udc +EXPORT_SYMBOL_GPL vmlinux 0x722e77c7 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x72387bb7 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x7259731f bus_register_notifier +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 0x729281a2 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x72a97430 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c05dd1 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x72f7e721 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x72fa7d62 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x730204ef rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x730bd0c7 asic3_write_register +EXPORT_SYMBOL_GPL vmlinux 0x732600e6 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0x73369bce omap_dm_timer_set_prescaler +EXPORT_SYMBOL_GPL vmlinux 0x73378d5b sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL vmlinux 0x738a2ed8 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x7404fefc __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x74173153 snd_soc_register_dai +EXPORT_SYMBOL_GPL vmlinux 0x742160f3 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x743850bb tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cb6d34 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x74dca3ec usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x75022d2b hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x75087ba4 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x750c17c3 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x750ce345 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75331cfd __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x753b1947 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x7550c360 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x756d3c4e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x759f9dff fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x75bc0a10 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75db81f3 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75fe0907 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x76472715 regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x76498ef2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x7684613f devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x7697f56e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x769837d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x76c32458 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x76d0d80f mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x76dc1782 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL vmlinux 0x76df5723 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x76fab9fa inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x76fb9faf ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x770880e3 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7746c812 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x774809bc usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x77519ec3 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7757c8e4 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x7766fb1d ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x77acd49a omap_dm_timer_write_counter +EXPORT_SYMBOL_GPL vmlinux 0x77d5e52d ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x77f8cb48 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x7812a68e crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x78262643 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x78564e0c ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x78623ad3 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL vmlinux 0x787cef89 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x7880e288 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x7889d819 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x78ca74d0 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x78cec40c dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x78eed445 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x790ae781 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x79405553 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7975ffd2 snd_soc_cache_read +EXPORT_SYMBOL_GPL vmlinux 0x79a2e326 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x79b8f1f1 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x79fbcab8 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7a4ef147 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x7a5970d1 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x7a8dd5d9 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7a93c959 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aad3e3d omap_dm_timer_set_int_enable +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af4aaae md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1e2901 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7b4b07fa rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b61e663 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x7b75f83f device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7b876c62 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x7b9426ba snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x7ba34278 snd_soc_register_dais +EXPORT_SYMBOL_GPL vmlinux 0x7bdc6f05 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7bf957aa invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x7c1d5004 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x7c6445c2 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x7c688c79 relay_close +EXPORT_SYMBOL_GPL vmlinux 0x7cb93222 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cdf91f1 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d16c252 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x7d20a3b3 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x7d219e8f seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d629ca8 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d947744 mtd_block_markbad +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7df3e863 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x7e079edc fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x7e0941e3 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e094976 omap_iommu_restore_ctx +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e277415 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x7e35ce23 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x7e5949a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e67a2c1 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7ed68941 asic3_read_register +EXPORT_SYMBOL_GPL vmlinux 0x7ed99632 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x7f0c83ce blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x7f1663e7 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x7f3cf2f0 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7f7e4d1a usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7f7fff8c get_mtd_device +EXPORT_SYMBOL_GPL vmlinux 0x7fa23d78 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x7fa4d2bf usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x7fc33b4d sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x7fd350a2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x80074162 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x8064b900 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x80673d00 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x8080825f usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x8088ef1b rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80e60f73 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80ffcd8b adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x810cb5ac crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x812f24df scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8138eb64 kill_mtd_super +EXPORT_SYMBOL_GPL vmlinux 0x813b13df snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x819415ef irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x81e0bfde crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x82557071 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82699656 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x826dcdc9 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x82a28bb8 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x82bb38a4 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x82c681ae usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x8308bb75 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x8325ced5 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x839682f1 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83d444d3 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x83d781df pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x841862ea ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x8467d3b3 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x847e1433 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x84acac22 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x84c66aa4 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x84dc77a6 get_device +EXPORT_SYMBOL_GPL vmlinux 0x84ff63aa ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x851c7fb9 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x85221845 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855fc557 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8589bb12 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x85a46f9f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x85bc46a3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x8600c5de sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8638de93 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x865031f4 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL vmlinux 0x865d8ca2 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x866134fb bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x867d61ae device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86bd8692 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86d70d49 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x86d73f84 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x86daae21 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x86e82b12 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8749cfbf bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x87502234 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x875b64c7 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x876b4e3f tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x879ea041 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x87aece07 dapm_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x87fe5a20 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x884e2e7f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x8850a825 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x88641316 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0x8883a1b4 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x888725b2 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88cc3888 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x88ddc075 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x88fd5b65 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x891a672d d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x8937036c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL vmlinux 0x89a88e5e wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89ec5e02 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x89ee3924 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a0ba6fb seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a682cd7 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x8a73b83d ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x8a81d7ce regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x8a8988e5 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x8aa79491 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x8aacc458 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x8ab59b92 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8acb9a60 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0x8ad06566 i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ad888f5 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x8af16f3a omap_dm_timer_enable +EXPORT_SYMBOL_GPL vmlinux 0x8b0690f9 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x8b36869e blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b75f310 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x8b8940a0 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0x8b8b2d56 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x8bc5c0fd ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x8bf3fd54 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2529e7 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x8c67a06c tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x8c9b2d96 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x8c9f98de fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x8ca62dd7 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8cb5d1aa omap_mcbsp_st_add_controls +EXPORT_SYMBOL_GPL vmlinux 0x8d16ea86 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x8d204014 put_device +EXPORT_SYMBOL_GPL vmlinux 0x8d6137d0 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x8d70307b ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x8d9fd984 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8db314f7 mtd_is_partition +EXPORT_SYMBOL_GPL vmlinux 0x8db34252 snd_soc_dapm_free +EXPORT_SYMBOL_GPL vmlinux 0x8e37590d simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x8e5db8cc adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8e8cbaea del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL vmlinux 0x8ec076b7 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ec2346e crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x8ecb5436 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ed8dcbb pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8efe8ef9 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x8f0977fa snd_soc_dapm_sync +EXPORT_SYMBOL_GPL vmlinux 0x8f0dbd9a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x8f1f0c1d ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f2ca63b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x8f4bcc13 pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f9d42a8 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x8f9f11f4 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x8fa5a4d2 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x900b37e2 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x90136cd7 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x901a9c5f s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x90580df2 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x9070dee1 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x907e81b0 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0x9082d068 kprobe_decode_arm_table +EXPORT_SYMBOL_GPL vmlinux 0x908e4389 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x9097e3b3 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ad7ace __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x90e148df spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x911236cf ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x9119fd17 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x912f2a16 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x917fa49d ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x918b3a3e tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x91c99834 snd_soc_unregister_card +EXPORT_SYMBOL_GPL vmlinux 0x91dda801 scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0x91e8912a __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91eba6bc perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x91f3bf68 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x91f613fc dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x921af38a platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x9229bd49 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x92425533 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x927094fd vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x92973b0b amba_device_put +EXPORT_SYMBOL_GPL vmlinux 0x92b33a78 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92c1f4e7 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92d73cca __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x93669a43 snd_ctl_activate_id +EXPORT_SYMBOL_GPL vmlinux 0x93cca605 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93d9bcb9 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x93ead0c4 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9400f424 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9463ff71 init_bch +EXPORT_SYMBOL_GPL vmlinux 0x94709640 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94acb68b usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x94cd2785 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x95165450 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x95243ba9 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x954a5129 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95617a98 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958207cf klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9587b9ae adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x95c578a0 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x95f392de snd_soc_suspend +EXPORT_SYMBOL_GPL vmlinux 0x95f6ee15 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x962193c1 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x966caed9 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b28d4d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x96b5e07c crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x96b66aef sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96ea0eee crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x9709ecae devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x971d3069 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x971dd470 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x97464789 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x9746e8b3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x97733158 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x97885322 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97c01e00 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x9804a5aa hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9879f303 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x98b552f4 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d44bae tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x98e29de2 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x98e5f413 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x990e2856 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9938e51e sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x995b38b2 mtd_table_mutex +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99724d01 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL vmlinux 0x99a0d0c4 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL vmlinux 0x99a842de dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a450439 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x9a7d64ea sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x9a835c60 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a857da6 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a8b7d29 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x9a9899cc snd_soc_bytes_get +EXPORT_SYMBOL_GPL vmlinux 0x9abb5d85 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae184a7 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0298dc snd_soc_limit_volume +EXPORT_SYMBOL_GPL vmlinux 0x9b2a2d98 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x9b2b6c24 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x9b7f27de pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba7731b tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9bc752b9 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x9bcf0ce6 omap_dm_timer_set_source +EXPORT_SYMBOL_GPL vmlinux 0x9be5daea sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x9bface00 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9c0277d1 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x9c649e42 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9c885188 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x9cbf9b63 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x9cc3d15b ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x9cf647e7 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x9d0dbc0e unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x9d673fbe ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x9d69ab07 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dae7e73 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x9db7d7cf disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e01b1d9 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x9e3f6c96 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9e6dfe49 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x9e87927e usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9e9efb53 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x9ea2868b sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x9eaefd87 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x9eeb0ab7 omap_dm_timer_trigger +EXPORT_SYMBOL_GPL vmlinux 0x9f0c013e dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9f150c86 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL vmlinux 0x9f183e2a mtd_is_locked +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f63983e init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9f6a0c7f snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0xa0380a86 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xa0557c18 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa063ab79 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xa0a39c48 register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xa0da1ce5 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xa0e662fb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa136127e usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xa1386959 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa1445858 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xa153e3fe platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa176673d cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xa185ed07 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1e5b72c register_mtd_blktrans +EXPORT_SYMBOL_GPL vmlinux 0xa1e84956 sdhci_free_host +EXPORT_SYMBOL_GPL vmlinux 0xa1f0c872 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xa2370cee dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xa25b58d7 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa26a1589 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL vmlinux 0xa2905739 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xa2dcf5c0 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xa2f65fb4 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xa30a3ebb n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xa346f784 omap_dm_timer_free +EXPORT_SYMBOL_GPL vmlinux 0xa378c472 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d59b of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xa3a2ec52 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xa3aa7f1d ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xa3c3df61 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xa3cdee26 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa444a3b1 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa451f59c anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xa468db2c fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa475a46e da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa491d494 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa4b37423 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0xa4b555fa spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa55d036e md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xa5692e9b usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xa570a5eb usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa57a69e2 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa57d5326 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa59a28b7 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xa5dd6fae arm_pm_restart +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f01105 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa5f96ff6 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xa60b9674 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa63bce05 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xa64eeea7 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xa65dcd59 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6b2ba10 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xa6b79a2d pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa6f29352 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xa72081c5 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL vmlinux 0xa74cbd58 amba_apb_device_add +EXPORT_SYMBOL_GPL vmlinux 0xa74e6f13 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xa754c65f sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa784604f da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xa789a7e0 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xa796c168 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xa7a702b2 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xa7beb0c4 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xa7c27c1d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa816a9d2 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL vmlinux 0xa82a9b08 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xa82d8a2f sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xa8598f84 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa89f1023 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9036c69 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xa93b8f46 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xa9593110 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa9bd6c1e armpmu_get_pmu_id +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa2df28c inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xaa4e2c6e pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xaa4fed3f snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaabce0a3 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaad5f73b mtd_device_parse_register +EXPORT_SYMBOL_GPL vmlinux 0xaaeec927 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaaf917a9 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL vmlinux 0xab18e6bd scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xab1de347 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xab3aeb1e dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xab3f65e1 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab908256 snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL vmlinux 0xac1e1cc7 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xac280c5e __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad018b6c __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xad0308cb pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xad08c927 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xad111400 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xad1e71ed snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL vmlinux 0xad357e7a ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb683f8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xadbf3ace snd_soc_platform_read +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadeb262b proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xadf3fd2b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xadfd511e device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xadfdf721 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae74fe01 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xae836d41 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xaea4c908 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xaeb71d91 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xaebc643e bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xaf14e750 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xaf348da7 cpu_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xaf4be96b sdhci_add_host +EXPORT_SYMBOL_GPL vmlinux 0xaf81dc1f uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0xaf858edf ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xaf941e76 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xaf9aba57 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xafbd7434 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xafd88ebd crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xaffb35c3 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xb0074109 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL vmlinux 0xb02f21dd usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xb0527695 snd_soc_get_volsw +EXPORT_SYMBOL_GPL vmlinux 0xb06177c0 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb118ec54 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb1874d63 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d1b8d7 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xb1e54e26 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xb1f99848 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb21a5023 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xb22703d0 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0xb277efa1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb2b9afe4 snd_soc_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb302bea9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xb36495b4 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL vmlinux 0xb37159c6 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xb397682c part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xb39cf1af tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b7c9a3 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb3bacfc9 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xb3d01769 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xb3d2ba40 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xb3ece8f1 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb3f09b1e crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb4005f68 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0xb4279733 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb4541b91 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xb46fee40 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xb47b6e20 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xb498d149 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xb4b8624c cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xb4df91eb snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f200b0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xb503120f bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xb5186e07 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb527772c ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb55756d9 crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0xb558a2a0 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb5620e80 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xb581e00b tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b2f88a omap_install_iommu_arch +EXPORT_SYMBOL_GPL vmlinux 0xb5b365c8 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5edd6eb snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb6202a42 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xb645a840 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb6870559 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6c900f1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0xb6ddb7b3 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xb6f44ffa ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xb6fa65c7 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL vmlinux 0xb714ac0e dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xb7e0ae1a omap_dm_timer_read_counter +EXPORT_SYMBOL_GPL vmlinux 0xb7ed482d fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8088e24 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb8371798 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0xb844f63f scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xb851c4bd sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb8520f29 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xb859f63a crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0xb87c2de5 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0xb88cdab9 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb894cb6a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xb896c6e7 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xb899d396 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xb8a7d2e8 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xb8e5d14f scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xb8f5a09f tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xb956ebef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xb97ca623 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xb99fdc44 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9cffa6f mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9da2997 snmp_fold_field64 +EXPORT_SYMBOL_GPL vmlinux 0xb9fdc905 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb9ff5306 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xba0bcd72 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xba267130 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL vmlinux 0xba34f956 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0xba79ae5e init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbad6acb2 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xbae26d6e ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb04afae bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb1f28c1 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbb2e3bef page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb9edd23 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbbb39e14 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xbbb3cf2b omap_dm_timer_request +EXPORT_SYMBOL_GPL vmlinux 0xbbd70e80 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xbbe68185 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL vmlinux 0xbbfda9f2 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xbc08b7ef ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc173cef sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbc60a66c of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc922a2e gpmc_calculate_ecc_bch4 +EXPORT_SYMBOL_GPL vmlinux 0xbc993b00 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf0d703 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xbcf9eaa0 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0xbcfa579c snd_soc_register_codec +EXPORT_SYMBOL_GPL vmlinux 0xbd07a52f omap_iommu_save_ctx +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd5ffa40 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xbdbecb37 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xbdcd31b6 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2ad49 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xbdf512de free_bch +EXPORT_SYMBOL_GPL vmlinux 0xbe076729 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2a1c2d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xbe2fa7c7 fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xbeaa245b kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0xbecdaf5c snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL vmlinux 0xbedd491e tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbf01fe2f crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbf16ca06 ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xbf1d34cd usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xbf5af391 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xbf784edf serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xbfaeed32 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xbfb02862 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xbfbcf60c pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbfcef4b0 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xc01bdf1b regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc02d498d blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc07681e8 omap_dm_timer_set_load +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0907d22 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc09632ce usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11777ad gpmc_calculate_ecc_bch8 +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc159056f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1b6acb3 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xc1d72a88 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc1f47c7b snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL vmlinux 0xc1fa0a5b ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xc1fe8f14 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xc20b2b17 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xc20f563e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xc218b95f mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc270470a dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a8891a mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc2e59f9f snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37bc5cc __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc385cb58 perf_num_counters +EXPORT_SYMBOL_GPL vmlinux 0xc3925583 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc40f5857 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc43d15f4 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xc4447f1b nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc4584a3b simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xc45ed40a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc47fd9fd pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc49aa110 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xc4a1aa1e __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xc4a86265 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0xc52c8dbf md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xc52e5023 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xc546abb6 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xc56b7536 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xc5aec9d5 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0xc5def406 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xc5ebe28a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc60a44da da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xc60a730b klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xc60e92ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc664b474 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL vmlinux 0xc68104d9 snd_soc_read +EXPORT_SYMBOL_GPL vmlinux 0xc68a13d1 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xc68b0f4b wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0xc694b443 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xc6966361 omap_dm_timer_read_status +EXPORT_SYMBOL_GPL vmlinux 0xc6da4e8c clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc70aedca ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xc71e8133 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc753db35 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xc768bd7e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7fc53ef raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xc810cfc6 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL vmlinux 0xc8280518 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc8862b9f disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc88e04b2 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8b9e927 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc8cdc6a6 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xc8d81b71 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xc8e330a0 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xc8ea63a2 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc9223a40 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0xc9256583 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9497af4 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc95cb807 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xc97504d7 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xc977635b wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc98b3154 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xc9ab1102 of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xc9b449a2 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc9cd42b0 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca0bdf81 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xca189247 mtd_point +EXPORT_SYMBOL_GPL vmlinux 0xca702e7e ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcaac2b7d dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacb0de2 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xcaefdcb2 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcb273676 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xcb42a318 nand_release +EXPORT_SYMBOL_GPL vmlinux 0xcb6984dd md_new_event +EXPORT_SYMBOL_GPL vmlinux 0xcbcaeebb of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc026731 mount_mtd +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc7e062c fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcc84417f ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xcc94bf42 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xcca56d7b anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xccc2c2c5 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccd08b49 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xcce55f45 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0xccf7ff54 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xcd02854b usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xcd1c5435 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda231e4 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xcdb32b8b regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xcdb4fd36 crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xcdb79b68 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcde1ef7f tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xcde8df00 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce36ebdf tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce48b8d3 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xce57e9cd crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xce6008db class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce741c16 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xcee4954b ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xcef8c05b queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xcf63a796 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xcf694cb6 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xcf74c14d perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcff6f0a4 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xd009ac08 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd0f526a1 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd172cfc7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xd1791357 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd2119ac8 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21812f3 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xd21e31b3 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd225c73f usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xd22f2596 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xd26ea448 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd279dc25 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xd281edba tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd28e58ef snd_soc_register_platform +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2e33a2c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL vmlinux 0xd30799da debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xd315f0ac wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd32dbdb5 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e3da93 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd3e61495 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4247748 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xd429a109 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xd45c9f79 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cbd15c wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd4cdb201 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd51940e9 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xd529100f snd_soc_jack_get_type +EXPORT_SYMBOL_GPL vmlinux 0xd53da4e3 omap_dm_timers_active +EXPORT_SYMBOL_GPL vmlinux 0xd547042f sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xd54ede1c omap_dm_timer_disable +EXPORT_SYMBOL_GPL vmlinux 0xd553b0ec usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd564f0ec debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5a7f2fc skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd61f98bf tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xd6448c0f tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd65a4f41 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67d8256 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xd68f7e35 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xd6a36d45 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xd6a6e14a led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c83e16 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd72360e9 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd7358239 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xd7577f9a crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd788742d perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd7a9f0a6 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xd7cd31ea max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8250b0e amba_device_add +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd8672646 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd86753c3 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8804eaf power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd898cd9c enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xd8c21efa crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd8d4bdb4 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd9410817 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94ee55a __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xd956cdf6 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xd9574f05 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xd959f16c ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0xd9607631 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xd9b5a2c3 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xd9d4bbc2 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd9d65764 snd_soc_cache_sync +EXPORT_SYMBOL_GPL vmlinux 0xd9e44173 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9eef782 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda1c90fb pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6742d3 devres_find +EXPORT_SYMBOL_GPL vmlinux 0xda7b1989 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xda9a2bd3 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xdaa01800 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xdac023ad __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xdad1184e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xdae09be4 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb3e5eef attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb882e90 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdba95fd5 reserve_pmu +EXPORT_SYMBOL_GPL vmlinux 0xdbaad53f wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdbf3a960 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc1b73af class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xdc42ad7e usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcd178a2 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xdd026722 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4380f5 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL vmlinux 0xdd6a1f6e usb_gadget_probe_driver +EXPORT_SYMBOL_GPL vmlinux 0xdd9c1272 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xdda21a9d tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xddb4d139 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xddb596e5 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddedfa31 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xddf95a5a tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xde257f3f adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde2c2c9e regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde48b978 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0xde4f3a80 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xde84b2d0 mtd_erase +EXPORT_SYMBOL_GPL vmlinux 0xded371cb fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdef7add8 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf32125c device_register +EXPORT_SYMBOL_GPL vmlinux 0xdf4e62b9 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xdfaf30bf hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdfd20550 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xdfedc4ae skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe01984bc ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe01a792a cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05f57e2 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xe072b5f5 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xe0791438 crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xe07a53ce sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xe07f3a63 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xe083fc1e irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xe08bea94 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe0b79e0c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xe0b8da11 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0e027c2 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe0e39d56 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xe0f1e53f dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe13eaeb5 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xe17edda5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xe1cf4e64 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xe20d2695 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe226d805 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xe22d25e4 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0xe2445b46 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe2583226 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xe2799099 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe2a4dded dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xe2a84110 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xe2b68731 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xe2bb89e1 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xe2c1a788 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3292a91 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe35bac32 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xe37b0327 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0xe37f2e4f usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3cee0d1 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xe3e75a53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xe3f5c4c2 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe44d88a1 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0xe48890bc tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xe5144bd6 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xe5219b78 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe525f815 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xe548e50a mtd_del_partition +EXPORT_SYMBOL_GPL vmlinux 0xe56554a8 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0xe5844625 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe5ad30e0 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe5b68fc7 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xe5d05917 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe5f93cc2 omap_dm_timer_set_load_start +EXPORT_SYMBOL_GPL vmlinux 0xe605815d snd_soc_put_strobe +EXPORT_SYMBOL_GPL vmlinux 0xe608a45e cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe61caa9a __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xe642aacc sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe6bebcdd __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7170d55 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe738a885 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xe74e1083 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe77d02c7 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0xe78beb9c kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe7c52fb0 snd_soc_jack_new +EXPORT_SYMBOL_GPL vmlinux 0xe7d5bb66 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe7f41db8 sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xe7fcd9b4 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83e45cd ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe85a9fd3 cpu_cluster_pm_exit +EXPORT_SYMBOL_GPL vmlinux 0xe86049ab sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe8611953 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8cffca8 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9676c91 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe967d7af sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe9695e69 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0xe9c2f46e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0xe9eaf9eb platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xea061af2 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea77fc68 devres_release +EXPORT_SYMBOL_GPL vmlinux 0xea8dc12e fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xea8df3d3 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xea925f16 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaeb4fc6 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xeb42a272 css_depth +EXPORT_SYMBOL_GPL vmlinux 0xeb4f2ebe bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xeb5d2540 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebb157c8 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xebd019c4 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xec03a6f5 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec39be5f fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xec4f1f55 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xec4ff8d4 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xec527b61 deregister_mtd_parser +EXPORT_SYMBOL_GPL vmlinux 0xec77e5d1 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xec9bb35f sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xeccd71f7 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xed053da9 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xed16a780 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xed62b65b get_mtd_device_nm +EXPORT_SYMBOL_GPL vmlinux 0xed695a2d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xeda63db3 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0xedc49414 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xedf0bb65 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xee088f76 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xee315eb0 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xee4ae36d blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xee4d3fe2 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xee4d7720 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xee572364 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xee6446bd usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xeea973bd crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0xeefd62e1 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0xef3eefaa snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef776bdb crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xefa314a5 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL vmlinux 0xefa6a97b unregister_mtd_user +EXPORT_SYMBOL_GPL vmlinux 0xefc24632 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0xeffae3fe ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xf03eb403 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf052554c omap_dm_timer_request_specific +EXPORT_SYMBOL_GPL vmlinux 0xf0538c24 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xf092aa80 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0xf0b7be48 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf0c5456d elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf0dcb4b1 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf0f238e0 user_read +EXPORT_SYMBOL_GPL vmlinux 0xf0fe30f5 mtd_read +EXPORT_SYMBOL_GPL vmlinux 0xf134b947 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xf13c59a2 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xf1620b5e sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1980e2c crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf1ae3d2f relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1d69450 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xf2847438 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xf29a92d1 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xf2a80b4d cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xf2ad93cb max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2b92053 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xf2ceff1b pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf311d30e sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf373bc99 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf389d88d tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xf3a00778 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf3a110d4 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf421b4f7 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf445da38 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xf476e1ed __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xf4831ffe crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf4921751 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4a85d2b single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf4cfbad1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5483370 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf55b547e __class_create +EXPORT_SYMBOL_GPL vmlinux 0xf5a1cf05 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf64d379c filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xf69da358 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf6b07ab8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6f67ae1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf742d1bd ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xf76949be snd_soc_platform_trigger +EXPORT_SYMBOL_GPL vmlinux 0xf7d4460e sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0xf7dd8dc5 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xf7e19dbc register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xf80e4473 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf816d140 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88670e4 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL vmlinux 0xf88ae18c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf896a45d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf8a5c3cc crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xf8bd2331 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9000681 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xf908b8da blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf90b8bc2 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL vmlinux 0xf9139d3a inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf95481d3 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9d046f0 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xf9f0aaee shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xf9fe284d usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2b8e24 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xfaa44593 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xfad315cf snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb33a69b dapm_regulator_event +EXPORT_SYMBOL_GPL vmlinux 0xfb4364df __module_address +EXPORT_SYMBOL_GPL vmlinux 0xfb475af9 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xfb487b0e unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xfb5a008a ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xfb66a1b4 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfbb4b460 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbc4bf09 device_add +EXPORT_SYMBOL_GPL vmlinux 0xfbeda43c devres_get +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc026e64 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xfc19dda9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0xfc478a68 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc58b637 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc597d7a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xfc6e4819 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL vmlinux 0xfc883ef9 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xfc9378ea crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xfcaba808 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xfcbc914b usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfce24ea0 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xfd1f9a61 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL vmlinux 0xfd5152ba kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xfd6cd540 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xfd973387 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0xfdb1aa34 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdbd3cb1 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdebea65 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfe04176d sdhci_remove_host +EXPORT_SYMBOL_GPL vmlinux 0xfe16f0de relay_open +EXPORT_SYMBOL_GPL vmlinux 0xfe46dc40 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfe6a4a8b blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe79862f usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xfe97e911 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3bb27 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed21d23 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfef1b26f stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff047d96 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xff1917ca ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xff1ae43a inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5e4017 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xff6acd9a ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0xff73fa29 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xff7d34c2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffbe0dec dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xffe0e6a4 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xfff1fa21 tpm_gen_interrupt --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/i386/generic.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/i386/generic.modules @@ -0,0 +1,3701 @@ +3c501 +3c503 +3c505 +3c507 +3c509 +3c515 +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +53c700 +6lowpan +6pack +8021q +8139cp +8139too +8250_accent +8250_boca +8250_exar_st16c554 +8250_fourport +8250_hub6 +8255 +82596 +8390 +8390p +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ac3200 +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acl7225b +acpi_ipmi +acpi_pad +acpiphp +acpiphp_ibm +acpi_power_meter +acquirewdt +act2000 +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2016 +addi_apci_2032 +addi_apci_2200 +addi_apci_3001 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adl_pci6208 +adl_pci7230 +adl_pci7296 +adl_pci7432 +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +adq12b +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aes-i586 +aesni-intel +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x +aha152x_cs +aha1542 +aha1740 +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aio_aio12_8 +aio_iiro_16 +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-agp +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd76x_edac +amd76xrom +amd8111e +amd-rng +amilo-rfkill +amplc_dio200 +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apanel +apds9802als +apds990x +apm +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar7part +arc4 +arcfb +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asb100 +asc7621 +asix +asus_atk0110 +asus-laptop +asus-nb-wmi +asus_oled +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at1700 +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati-agp +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +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 +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_aout +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c101 +c2port-duramar2150 +c4 +c67x00 +c6xdigio +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcidio +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-isa +com20020-pci +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 +cpqarray +cpqphp +cpu5wdt +cpufreq-nforce2 +cpuid +cpu-notifier-error-inject +c-qcam +cramfs +cr_bllcd +crc7 +crc8 +crc-ccitt +crc-itu-t +crvml +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +cs5535-mfd +cs553x_nand +cs89x0 +ct82c710 +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +daqboard2000 +das08 +das08_cs +das16 +das16m1 +das1800 +das6402 +das800 +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell-laptop +dell-led +dell_rbu +dell-wmi +dell-wmi-aio +denali +depca +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dme1737 +dmfe +dmi-sysfs +dm-log +dmm32at +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-raid45 +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +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 +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e2100 +e752x_edac +e7xxx_edac +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +ec_sys +edac_core +edac_mce_amd +eeepc-laptop +eeepc-wmi +eepro +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +eexpress +efficeon-agp +efs +egalax_ts +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +erst-dbg +es3210 +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +eth16i +ethoc +eurotechwdt +evbug +ewrk3 +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakephp +fam15h_power +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +fl512 +floppy +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +geode-aes +geode-rng +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_NCR5380 +g_NCR5380_mmio +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-cs5535 +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +gsc_hpdi +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +gx-suspmod +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-hyperv +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hostess_sv11 +hp +hp100 +hp4x +hp_accel +hpfs +hpilo +hp-plus +hpsa +hptiop +hpwdt +hp-wmi +hsi +hsi_char +hso +htc-pasic3 +htcpen +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +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-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +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_hsw +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibmphp +ibm_rtl +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icn +icp_multi +ics932s401 +ideapad-laptop +idmouse +idt77252 +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili9320 +imm +imon +imx074 +in2000 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intelfb +intel_ips +intel_menlow +intel_mid_battery +intel_mid_dma +intel_mid_powerbtn +intel_mid_thermal +intel-mid-touch +intel_oaktrail +intel-rng +intel_scu_ipcutil +intel_vr_nor +interact +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +iris +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +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 +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +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 +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvm +kvm-amd +kvm-intel +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lance +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-net48xx +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +leds-wrap +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +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_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lne390 +lockd +logger +logibm +longhaul +longrun +lp +lp3971 +lp3972 +lp486e +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltpc +ltv350qv +lxfb +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +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_amd_inj +mce-inject +mceusb +mce-xeon75xx +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdacon +mdc800 +mdio +mdio-bitbang +mdio-gpio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mem2mem_testdev +memstick +metronomefb +metro-usb +meye +mfd +mga +michael_mic +microcode +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mixcomwd +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mos7720 +mos7840 +moto_modem +moxa +mpc624 +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +multiq3 +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n2 +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +NCR53c406a +ne +ne2k-pci +ne3210 +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +ni52 +ni65 +ni_6527 +ni_65xx +ni_660x +ni_670x +ni_at_a2150 +ni_at_ao +ni_atmio +ni_atmio16d +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +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 +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc_gpio +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +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_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 +pcap_keys +pcap_ts +pcbc +pcbit +pcd +pcf50633 +pcf50633-adc +pcf50633-backlight +pcf50633-charger +pcf50633-gpio +pcf50633-input +pcf50633-regulator +pcf8574_keypad +pcf8591 +pch_can +pch_dma +pch_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci_slot +pci-stub +pcl711 +pcl724 +pcl725 +pcl726 +pcl730 +pcl812 +pcl816 +pcl818 +pcm3724 +pcm3730 +pcmad +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcm_common +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 +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pms +pn533 +pn544 +pn544_hci +pn_pep +poc +poseidon +powermate +powernow-k6 +powernow-k7 +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +progear_bl +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +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-maxiradio +radio-miropcm20 +radio-mr800 +radio-rtrack2 +radio-sf16fmi +radio-sf16fmr2 +radio-si4713 +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 +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-mrst +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rti800 +rti802 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +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_generic +salsa20-i586 +samsung-laptop +samsung-q10 +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc7240_wdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sbni +sbs +sbs-battery +sbshc +sc +sc1200wdt +sc520cdp +sc520_wdt +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_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 +scsi_wait_scan +sctp +sctp_probe +scx200 +scx200_acb +scx200_docflash +scx200_gpio +scx200_hrt +scx200_wdt +sdhci +sdhci-pci +sdhci-pltfm +sdio_uart +sdla +sdricoh_cs +sealevel +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-i586 +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sim710 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc9194 +smc91c92_cs +sm_common +smc-ultra +smc-ultra32 +sm_ftl +smm665 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1816a +snd-ad1848 +snd-ad1889 +snd-adlib +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als100 +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt1605 +snd-azt2316 +snd-azt2320 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmi8330 +snd-cmipci +snd-cs4231 +snd-cs4236 +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +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-gusclassic +snd-gusextreme +snd-gus-lib +snd-gusmax +snd-hda-codec +snd-hda-codec-analog +snd-hda-codec-ca0110 +snd-hda-codec-ca0132 +snd-hda-codec-cirrus +snd-hda-codec-cmedia +snd-hda-codec-conexant +snd-hda-codec-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-mixer-oss +snd-mona +snd-mpu401 +snd-mpu401-uart +snd-msnd-classic +snd-msnd-lib +snd-msnd-pinnacle +snd-mtpav +snd-mts64 +snd-nm256 +snd-opl3-lib +snd-opl3sa2 +snd-opl3-synth +snd-opl4-lib +snd-opl4-synth +snd-opti92x-ad1848 +snd-opti92x-cs4231 +snd-opti93x +snd-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-sb16 +snd-sb16-csp +snd-sb16-dsp +snd-sb8 +snd-sb8-dsp +snd-sbawe +snd-sb-common +snd-sc6000 +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-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-mfld-machine +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-sn95031 +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sst-platform +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-sscape +snd-tea575x-tuner +snd-tea6330t +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-us122l +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-wavefront +snd-wss-lib +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +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 +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-pxa2xx +spi-tle62x0 +spi-topcliff-pch +squashfs +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +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 +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdfxfb +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_infineon +tpm_nsc +tpm_tis +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts5500_flash +ts_bm +tsc2005 +tsc2007 +tsc40 +tscan1 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl6040-vibra +twofish_common +twofish_generic +twofish-i586 +typhoon +u132-hcd +u14-34f +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +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 +uPD98402 +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +vesafb +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio_balloon +virtio_console +virtio_mmio +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt1211 +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +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 +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanrouter +wanxl +warrior +wbsd +wd +wd7000 +wdt +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +winbond-cir +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wistron_btns +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_uartps +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +z85230 +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/i386/generic +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/i386/generic @@ -0,0 +1,13537 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x44882262 kvm_read_guest_atomic +EXPORT_SYMBOL arch/x86/kvm/kvm 0x505a9a61 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 0x24443729 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 0x1a39c71c suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xc5d7bec3 uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0xcd3e6008 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_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 0x122d8c99 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x54b7b0e2 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x64c42a96 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x7efa100b paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0x8075db7c pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xa9b00fe7 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xc3c12ee5 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xd01d0ccb pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xd22dc384 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xd8d54713 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xe981d228 pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xfcbc1bbb pi_release +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1291e429 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x637c38c3 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x63984edb ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x63cfb2ab ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd65262b4 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nsc_gpio 0x83cc85e9 nsc_gpio_write +EXPORT_SYMBOL drivers/char/nsc_gpio 0x8f3378e7 nsc_gpio_dump +EXPORT_SYMBOL drivers/char/nsc_gpio 0xfa78b1c9 nsc_gpio_read +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/edac/edac_core 0x4b6d253d edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x00a25707 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0fa62c1b fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x13ed36bb fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ae8b066 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x26e2f5b4 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3028c519 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3847bb6c fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3a22f2e2 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x45718802 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x49f8d2b7 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5437c987 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5714d3b4 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5850ea3b fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5e7a6387 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x649ff342 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7e431b14 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86ca872e fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x92c0a8da fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x950f68b1 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0xaf6c4b29 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb137101e fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd220a849 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xd4886749 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xde9fc8f3 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xec077c07 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xee1e5969 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf14f6bd8 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01444638 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a36364 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01a9ad2c drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04c8cae4 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04d05624 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x05946911 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0660697d drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x06c101dd drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x076eb1e0 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09061b59 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cfca50f drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0d57cd5d drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x123b7f12 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1267af9d drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12b4b903 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13e20337 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b6d558d drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e0ed107 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f8feab9 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20e68beb drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2167fb3e drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x21cbd510 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x226f2b74 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23a82fc8 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23c70ea1 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x263f0b46 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2670bf20 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26c1b39b drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28c77cb0 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a96e220 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2ac8d8b9 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d462d13 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d5831a3 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fe8a4ed drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3279c53a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3465ed3d drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3545e6c7 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x359259df drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x367b08ea drm_mode_config_cleanup +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 0x3ac7afd9 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3c242d18 drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e9afed1 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f474c1c drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x410c4dea drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41469c24 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41fe8795 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x457643cf drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x474e1750 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47cbf385 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b53884d drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c05b914 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dca3e60 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4dfb923b drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e278d43 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50dcc78b drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x549b2c8d drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x554e7baa drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5597a300 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x55d82f05 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56349a26 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x564b3f99 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x58aa6e63 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c9bb4c4 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d413248 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e1b203b drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f098f77 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x607ed706 drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6149fb3d drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6321d2e5 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x632e1124 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6354326d drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63639677 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x63ba5f95 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65f18559 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68ff9e7b drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ae865c8 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6aea2e76 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b353b3b drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b3b6d49 drm_gem_prime_handle_to_fd +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 0x6d3ba528 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f237a6b drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x700905fb drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70f64b8a drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x716eedb1 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x717ea72f drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x720d32cc drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72242bf6 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x731952f4 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73b175cf drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x77af0144 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79ae3cf3 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ab24a20 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7b834df5 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c2419cd drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cf9caa0 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d1a82f4 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e2f0c9 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8390bce5 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84006b19 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x841c47b9 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x844995c7 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x86136af0 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87b7213e drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87e3d1ee drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x87f8a06a drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x896c452d drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c0cd6f8 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c346705 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d87f81d drm_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 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x912c23fe drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x923317fb drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92aad9f9 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x934b98a1 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93ad2c48 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93b05de6 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96f25ff9 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9737179e drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99b39ee2 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99eb2f2c drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a251a20 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9bdc6722 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dfe323c drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fe9616c drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa07ce30b drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa107357a drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4327268 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4df266b drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa4e41ce3 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa576db98 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa59598fe drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7233d6a drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa77485f3 drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa958bdcc drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa54231f drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa6d323f drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaab22159 drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab6d36ee drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xada2c7b4 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf62046e drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb023144d drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb2295e1d drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb40b1dd6 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5825ec1 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7060236 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb8de0e25 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba3b086b drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba545690 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb001830 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe911002 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf7e29de drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc018d6bb drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2054e73 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc697a517 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf26fee4 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd009a95e drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd05968d8 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bc78db drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0bebc77 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0f7b790 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd193143a drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd26cd3f2 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd561859d drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9ebbbc1 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd9f67d7f drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdaa73f0d drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbfc97b1 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc90e776 drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde1fbc39 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0xded7de3b drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf00659a drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe13a6f4d drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1401d8c drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe41fee1e drm_crtc_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 0xe7e823dd drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe852ee6e drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe9ffebb4 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea312883 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xea655514 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed56f452 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xed9eebc5 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee3ea1f4 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeebf8750 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3f038d8 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4220f62 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d93e1d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6d747b8 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8063708 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf868092a drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8f762f7 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8fc0eb1 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcf348b6 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd5151a9 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0b967313 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x12a1de4a drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1374113b drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1404fd4b drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x15ad83e0 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1b43d386 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x230c53ee drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3157ffc7 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x342bb612 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x37a1f32d drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x50982166 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5487b214 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5611f9a7 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x63f5d7d2 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6cbcae4a drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x700b3bbf drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x78912fdc drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7acc99a9 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7f29c6dd drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8bf5eb37 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x98738f22 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb52fe8f1 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc066dc66 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc6071c07 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc978baf1 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd3e43d7f drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0194b44 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe6c298a4 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe99d91f5 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xed8dd0b8 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0ee838c drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf8918c8f drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x11233c63 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x2d5893c3 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc872895d drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02116523 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x085f6956 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x176b6938 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x19d01c85 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1b1cf3cc ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x201a8487 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2438adbf ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x266d8a60 ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29fe5400 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2ae6c161 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b941579 ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34b7ec5c ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x34c269a1 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x350b1f88 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3e975654 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f313820 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4915fb8c ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4eaa6a26 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6622655d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6684c1a3 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6f7394aa ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x72ce04e5 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x78219edb ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dd0f746 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80f596a7 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8c6c08c3 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92690fed ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92da04e8 ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93c3d89a ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x995de717 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b8d3426 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9ce4a54d ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9e2e3178 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac0e71c6 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaca844bd ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb07410f8 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb1e71b92 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb9f09044 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xba4a6f1d ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaa2b414 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbaf04b01 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc9916f90 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc404922 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc83ee25 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xce1151ab ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd164908e ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdd0f32d8 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdddeb609 ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde0550ad ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe126ab0a ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5417038 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe57126e9 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6b090db ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xee4b265d ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2eaa709 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf83da03f ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfa763dc9 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfecc003d ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xffaf077c ttm_dma_tt_fini +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x35928652 vmbus_recvpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xe5c719b0 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 0x814d295b 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 0x3705f664 i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xf29e2b31 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xfbf53939 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x7eca7282 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xb26dfbd6 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x1df6ee27 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x06d84213 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x077f09a1 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x0f712d6c iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0x13f2c370 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x148a689b iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x216224f1 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0x220d3ae4 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2e270abd iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x50d6a42a iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x569415a8 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x694ddb37 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x6f51f373 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8d86de0a iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x91316ea5 iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xa12a3f87 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa5ed22e2 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xa6931cea iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0xb164895c iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xb5a90ffd iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xbfd0e4a8 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xd04ec436 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe4e9deb6 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xedaad082 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xf1bed805 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x14d4f612 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x2722e40b iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8671d3d0 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ed679ff rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xb93baf0d rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xc0bf4edc rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x20550f1c ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x238dee61 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x399bd5bc ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3d4621cc ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x510e8cdd ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x53996c56 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x5450105a ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x670c3696 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x689a41d9 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6c9f50d2 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x83e32a0d ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x886addea cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x8caeacf7 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb102d34f ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb4b3d2ba ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xca5bf5e9 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcf0cce9b ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0440a8c1 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x086f3a75 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dc1e083 ib_query_srq +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 0x17d94aa7 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19893ea1 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19aef1a3 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ca7bbef ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2e4770dc ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33e3f5e0 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35108236 ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3dcafda6 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f402b6 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x44887d81 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x46ff99a5 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x49b5e902 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50d8c56c ib_attach_mcast +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 0x5422da6b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x546f7a5e ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x591f754e ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5aec9771 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5c4af8cf ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x608d46af ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ba35e1b ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7030557e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7042e52f ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x741ee774 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x759cf34c ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x762e69f3 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x77674e97 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b300508 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7dddabca ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x844dee28 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95af2eb9 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97c13ae8 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9e823c8e ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa05e93f9 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1534f27 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6d972a3 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaba693d1 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadc52998 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1b0f90c ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3386e4f ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb41eacde ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4e8d6ab ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb572363f ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6fb6d80 ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb91507bc ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbae1f7a5 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf49e8cd ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf8369ca ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc2c45aa0 ib_modify_device +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 0xc69d007a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7e06385 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca2aa995 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcef14d2f ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2d909c4 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd49af890 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd8efd162 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbf506b8 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdccda88b ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd808b8d ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddea3160 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1aac1c3 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a21113 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedb144e1 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1cc98ad ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1f55178 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf559be16 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf77cc579 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfade8063 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xffbfe149 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfff75497 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x2fab0a87 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x3396e384 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x37e98ffb ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x48239c57 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x506e9f7f ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x551f9246 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6bbe84e5 ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e351283 ib_get_rmpp_segment +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 0x8b31cefe ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8aad78a ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe2fad38d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf2edb80d ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x23d1a8b1 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x52b18148 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x6e44fd9f ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7de42542 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x8001438f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x978d0b1b ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf1f2fd93 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf4e5015f ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x07229b24 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x1b1497b8 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x291cf18a iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5323c9f5 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb1e89912 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xb8f9df42 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd0b57d0c iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xda056d7c iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0a631cbd rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1aa16e35 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1ae3ead3 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c0a5fe0 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1f90b535 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2d342082 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x38a5fc42 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x39165714 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x48bb42b1 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6720de31 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70993084 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8792bbe3 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa4fbd371 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa81aaaf4 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xabb11678 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xb0c84c4c rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdc157037 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf1a18232 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xfcf066a8 rdma_accept +EXPORT_SYMBOL drivers/input/gameport/gameport 0x0488d5d0 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x12c0e12f __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x4e8ab5ee gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x590ecb0e gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x6be35c2a gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x88874262 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x9e6c1e46 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xed51bde0 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfc3f87e4 gameport_set_phys +EXPORT_SYMBOL drivers/input/input-polldev 0x0488380a input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x29e57637 input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xae689ecf input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xba0df3bf input_free_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x54db82b7 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x85e2788b ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0xaf1af2b6 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf1092a63 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf6e520e0 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 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xe0dd12b9 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x6b72d515 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x71913463 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x86ad668d sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x983c5cad sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x999e0da8 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdb8153b7 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x23548ab6 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xc72d5c17 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x024d76d6 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x28484873 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 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4f374aff capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5a01b07b 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 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa559e171 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa7c4fd6c capi_message2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xaa165d27 capilib_release_appl +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0xc684bb16 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xca5ce00a 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 0xeeeeb0a3 capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xf3a6e877 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfa7be9f5 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x008ec4d4 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x07f2fbdf b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x12f47be0 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2079f361 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x21ecabff b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x3dffca5b b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x44c4eec3 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x643b8e58 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x780d6929 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8c57aad5 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x99c5dca0 b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaca634a4 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb5c48e42 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcc9d3ea1 avmcard_dma_free +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/b1 0xfb109d55 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x07bdd499 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x16228a50 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x2c9b8e2a b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x4ed132a8 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x6680ae32 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa4e1ac01 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xeafb3693 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf8825737 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xfc8d0883 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 0x64042b01 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1fab9fa0 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x60977877 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6a940518 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa63bdb93 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x531bbd2a mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xb0785efe 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 0xe227344e FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xeab9b874 hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xee93522c hisax_register +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xf0a16657 FsmNew +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x4b2e38ca isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7b460c93 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa2e69ff0 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc537371f isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe320457b isacsx_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x4039cd24 isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x6ea46787 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x81465cc7 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 0x0b534136 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x153e89a7 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x19b98c20 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x362c49e5 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3b36d621 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3be236be recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54253d98 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x55e2c799 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x588886a6 l1_event +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5968c28e bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5def2d8a bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5fb20033 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x614ede30 mISDN_FsmAddTimer +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 0x97b49e04 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9b425268 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa283a9a9 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa375cdc6 recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb64b83b9 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc60c7357 create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd38a973e mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xda20782a recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdb9e9a13 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 0xf2aac881 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf65dd112 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xfbe5cb86 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/dm-log 0x152d581f dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x2a716167 dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7f6197d7 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xa3009680 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07d9bd86 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4249fb42 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x7da99df6 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8b2a1537 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xaa7a229b dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xdbad2a0a dm_snap_origin +EXPORT_SYMBOL drivers/md/raid456 0xbfe19c0c raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0xf0570515 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x44441a28 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x65c7944f mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0xd8198bc1 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0xfe3db487 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x72966cf9 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x59b365e5 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x8e334979 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0xafec3453 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xc32abef4 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0xebbd970d tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0xe6856ef1 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0xbf302b9e xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x6d46bfdf xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x076f7f16 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x1f352a51 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x297b6de0 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2aea0f28 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x30f190d2 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x35149a91 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x41e2a823 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x4e028a67 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x531238b2 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x683011dc flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x70d08618 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x834c1de5 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x86840331 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x88a75c1a flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x905b34ec flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9b1f042c flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xb0a40f68 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbabb8a21 flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc6b84fc0 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc72329ff flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x1663b021 bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x61ae58bc bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xda4387a1 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xf3722092 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x1065e6c2 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x33712402 dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x5ca11acf dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x70ceef7f dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x727d94c3 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xed76b664 dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xef4d1794 dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xf66b6f7d write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xfa02f45d read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x0bd67dc8 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x07ac0bd0 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x101a29b8 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x16bb9b94 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x196f1ac1 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x237f7910 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x300f2abb dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x398b9fee dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4c70c35a dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x58623467 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x77cd949f dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x79c41423 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7e407cd3 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x934a2063 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x94ec478e dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x97bd4310 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x987dcfde dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb5bb45ec dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb72b5fa0 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbb3005e3 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbdce2421 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbe01352f dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc8348827 dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc9e66099 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xcc801ae6 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd2516685 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd3ee7530 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd63fcf5e dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb5c53f4 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe31e0aad dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe695bca5 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf196cbc5 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf27f8732 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf3fc66c6 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf8d64232 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfcc0ed9c dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x13ab3741 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x4d5a03b0 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x801412e4 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xad324037 dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xbb6c7ca3 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xe08bd067 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xf1a00076 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xc925498d af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x06d22077 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x110f4f43 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1b283a2c dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x24def1e8 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x71d14cce dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x789818a8 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x8f1e0b04 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xa356d9f2 dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xaabab145 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb99a77d2 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd81cf641 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x6fc95992 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0x70b65f20 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x03d5e60d af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xdf32f815 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x24e12006 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x64f55730 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x678bbcf4 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x7043466f au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x93e07fcb au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xd95a9601 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdadd8be3 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdf979b89 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x5ec7400f au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x6d37b60e bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x4431d14d cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x64b728e3 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x0b9ebcd3 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x93f26932 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xeb10baff cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x3f3500dc cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x1aa0ff4e cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xb52b59f8 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x3f6f41bd cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x1a71ab68 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x7f49ce49 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x8d31752b dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa6135762 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xfc2615f0 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x180d508d dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1f13b430 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x29fc6c70 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2cdea5c6 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x424ce163 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4d0b6605 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x55d59e69 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x57663751 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7348e53e dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x7da8688d dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x8caa9b05 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x95216df0 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9d8f2188 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xabd83bd9 dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xdaa1be4f dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x3fcbc62e dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x091e4afc dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x19f94951 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x1eef6088 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x54f7c6e7 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xade48d05 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xbb789321 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x744af468 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x7c1ac948 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x907fa8f2 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xad5f25a3 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x018b6218 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1c130668 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x2142090b dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3f305649 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x42296529 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x50065735 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5d909c5f dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8a04f6b2 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xa40b47f7 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbb0bb439 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc129b21d dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc211fa63 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xc73af1f5 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd2c55cfb dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xf8682d8a dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x01aef7fc dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x02457404 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x0e125dbf dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x0e508698 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x141f76c0 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1905a2b7 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2c41fdfc dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3a667529 dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4617a2d4 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4b4217a2 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e5d78b0 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x54c6ea95 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5726ce0b dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x6afa9b97 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x987ba246 dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa2a25100 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd6c32498 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xea0a504b dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfe2fb90d dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x4db250b9 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5288a1f2 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x603e55c0 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad9bb0a4 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xf564a402 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x2fb6857c drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xee4f36a7 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x1d2cc282 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x6e35f13a ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x204b3b59 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0xe33b88d6 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xa5c1bfce isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x537ccb0c isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xae122e92 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xd145a357 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xf270cee4 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0xaa96febb ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xc28a3037 l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x2b6e62b0 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x37b21bfa lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x5f523b12 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0xf27ae5f0 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x10022528 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xd78164b3 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0x6ff05210 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x57548ad5 m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x1fbbbf04 mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x9cd6097e mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x89f28db5 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x22accf7d mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x4707e316 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xad21868d nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xdb406683 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0x783786bf or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x340363bb rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xa301d9a3 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0xe9313455 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0xbdd2284f s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x65a26269 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xf7998a97 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x6abd1043 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x4642295b si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xf80bd9cd sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x5fab7078 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x6a468673 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x0f8cf404 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x58ebc295 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x0005ecf4 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x68452657 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x9003f5be stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x605c17a8 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xfa968f87 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xec6ab479 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x6349ba89 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x703b339a stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x42829914 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x469546c1 stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0xc5de308f tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xafdc1e1d tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xc877bac0 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x291b30a9 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x49227926 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x27e0033d tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x2eab330e tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0xcf305f47 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xcbc96c09 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x125d4eca tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x1874018a tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x4740e5c1 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xe849353d ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xf0fdd93a ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0xfa9a2368 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0xfb744f60 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xddb7bb69 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x8ea86844 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x4ad22672 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x611527b8 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x22fcf67b lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x29759d1c lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x53ffa6be lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x73358aa0 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x73ed26c3 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x833a324e lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8a957fae lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe73be933 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x014d7ba6 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x97fbb5fd ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xb1829003 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xb5188828 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbad64116 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x6c36048a btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe1c0cc1b btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x25924551 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x37fa9564 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x4b87e1a6 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x84c67eb9 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xb83465fc cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xf59d4f00 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xf7b93e69 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1da0c2fa cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x265974f6 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x41b7dcec cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf9f7aacd cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x1b184623 altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x1b2c9d1f altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe26604c5 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x29f40dc1 cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x380d07f8 cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x4c25b692 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x4dad0d30 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x88854a7b cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xaccf30bd cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc328f0ae cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xd76b0afb cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe1922395 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x79450636 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xaca34446 vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x1a78b734 cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x4a7198ba cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x8a6c3c41 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x923e4033 cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xa51dc43e cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xb6a1a34a cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x743fdffc cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x76d202d9 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x81614c75 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xcc2a2451 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xead35003 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xf9e0b3d6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x13d02d3c cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x16e42039 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x30e5d69e cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3ef12e51 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4b2520bd cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4cbbf788 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x54e20582 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x61faee56 cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6515f7ba cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x67d31835 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x703600fd cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7ba2c5f8 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7de4aa03 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x9ef2b19b cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xa863fdf1 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xadcca3f0 cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb0ee609d cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb1756a9d cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb3041d20 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xca2cd0a0 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xe8bc5591 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf45a2b92 cx88_core_get +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x1aebfd54 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xa30b8e04 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x0e9ef1b7 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x125b02db gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x2df04766 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x30c9eb77 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x55307e6f gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x599f8c57 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xb4ed6450 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xc87c4e54 gspca_resume +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x221058ed ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x25159d21 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x2fa22254 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x5c5b2f98 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x5d89669e ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6f829e1e ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7b00dcca ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xbc211043 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xcd12a38c ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xd6aa091b ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xdeed1052 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xeb13cea6 ivtv_api +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1141c8dc saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x2d9a2288 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x35ebf7da saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x3d0835ba saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x42c7bfb7 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x4344770a saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x64349648 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6ae5a40e saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x7cd198f5 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x91ae77c4 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb5a84da6 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xf5063d41 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x052be526 soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0x3ff485f9 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0xb293dbe2 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xd41afcb4 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xe6201eef soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf7c692da soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x094494e6 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x3af8fe64 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xf02dba7e tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x68dde014 tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xacd4fa70 tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xbce9fe12 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xf345167f v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x2da6f339 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x9233e698 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xd82a6cc3 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x255a57c4 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x34744406 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x3839814b videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x39eb1973 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xccb33eb0 videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xe67085ca videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x03e63916 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0421ecd2 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x06cb3e63 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x089cad7a v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x1529d90e v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x15bbcf30 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1f611f50 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x20ea6af6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x2a90c159 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x2c19b300 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x2e22958a v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x2f953705 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x30302e3e v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x32fab8bd v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3735fd81 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x40900fd7 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x41eaf502 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4c5664d5 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x4f276bd6 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x512b1e7a v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x52761b54 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x534ee328 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ef15d38 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x6a7881fb v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x6bab89de v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x75961ab2 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7d516cb1 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x85d35bd4 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x885225e3 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x9ba98d8b video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x9e7cf413 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xa010a507 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xa21f0d07 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xac5935d2 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xadbd7174 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0xae998cdf v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb28c42f2 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xbb38f880 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xcc09f08c v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xd2c5bac2 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0xd31e2ab0 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xdef4f984 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe19dde67 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xe1e73380 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe36e559f v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x58f3d352 videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x60d838e7 videocodec_detach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x9037dd55 videocodec_register +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xd0f74d69 videocodec_unregister +EXPORT_SYMBOL drivers/memstick/core/memstick 0x083b4ae3 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x15760c1c memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x750d888b memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7fe57992 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8db7189a memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9b79d7e7 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9f077049 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5987a36 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa8a4d157 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbf4c8e54 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd380bb1e memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xeedc8e53 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfa79277c memstick_add_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x078266d6 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x114a35da mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1751bcfd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1c9048a9 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d3eb9b3 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1d910e84 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x352b6349 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x40bf6fc6 mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x46fcc782 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x496e8224 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4fe267be mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5054b11b mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x54974b71 mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63a8e8cf mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x64335da6 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8315b735 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x83aba0a5 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8406938c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8c758125 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9a26e211 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb38c6d34 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbefc8fb4 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbf9747bf mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc58b7750 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9177be5 mpt_config +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 0xe1215861 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe8d9d6a0 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb8c7363 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfdfeb544 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x02c5c2a2 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x07e33fe6 mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x12fc4241 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x173dbcb1 mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1aa24f5c mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1e43621f mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x27f7cb8d mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x28a3fecd mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b824452 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4be612a3 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5c914564 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5fa87490 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6342b674 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6bc59eea mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8289f02d mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8549a737 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8956fcba mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x934b692a mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x997dee76 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb3e1e2ea mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbcd68720 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe9c6c203 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf5099c35 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf525e4f7 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfa9512c9 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfce5812f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xffc2fa1f mptscsih_suspend +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x01b60a63 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x04810f57 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0563e45b i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x352e1c4a i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x611534ff i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e0d0435 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6e667859 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x702e86a0 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x76f0c0d1 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x7f3f9d4a i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x83506aa6 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x87acc3bc i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8e8979cb i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9f11befd i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb8e9a85c i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbcb9145d i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd64e4a5c i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xebd2878f i2o_parm_field_get +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x32eed5ae pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xcb00468a pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x09cd80b4 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4230f9d2 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7aba4e67 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7c5a9c36 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8eacd1f0 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x8ed78957 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x95d12b9a mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x98fb8aeb mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x9fd6d5be mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf66597a mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb6763d35 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xeaac910f mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xee72ac30 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1a4b2c2c tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1fe5d0d1 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x326412bb 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 0x06fae09b ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xf3a9f50a ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x51ea2fb0 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x567ffc0b c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xd488ce45 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x3f334b1a ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x811b5f79 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x084cb48a tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x184839b8 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x32520f63 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x43158c66 tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x71f751fd tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7e61773c tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x8934d413 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x9bfa25ca tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xa5bd4527 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xac035e57 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xaedfe1ca tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xca37275a tifm_unmap_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xe3d8f5a4 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x24cf80e4 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x635519c9 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xac07c4dd cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x1b67d57e do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x3f2a03c4 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xb1cf0f6b map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe5caa031 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x34aa5aa3 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x2373a73a lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x41414e27 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xd5e39bbc mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf247c6da mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x0cb63e6e nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1da68d0b nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x31319c96 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0x4d3d3369 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x8420013d nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xcbcb82b9 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd570e639 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3828833e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x5f4aff9d nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x601815ea nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xc781b2aa nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xdd034800 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x1204c49e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x3ed67e1a onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6069f1ba onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x79bd4f09 flexonenand_region +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x46971026 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x66075e87 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8c8bf034 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d2777fa arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x99772309 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9df8f030 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa6328ec0 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xb938e9ef arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc62878a7 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd9e4c9ac arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x530ab820 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xb02f4e83 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd2040f2d com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0a977637 ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x5f6b1339 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6811a271 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x85130d5c ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x87ac64ea ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x88f047ad NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x98a9f355 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb4f9886d ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcd98ee0c ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf7bac991 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x329e85e8 eip_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x427278b8 eip_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x4990905f eip_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x8d60abc6 eip_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0x99c03fd7 eip_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xbbb48cc9 NS8390p_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe1b1b486 eip_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe425a12b __alloc_eip_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xe73b3904 eip_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xefa33f12 eip_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390p 0xfbe841de eip_poll +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0xd25f4155 bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x79f5e719 bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x72da67f3 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0d2d658a cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1c965c1f t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x27953310 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x473e8455 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x48c26d1d t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x82e03257 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x833d1686 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x85132ce8 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x99eeba64 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa79a3457 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb0649ccc cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc063b6c6 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd2994b49 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd8c93bc8 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe051ccee cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf3532ea9 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1534b468 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x17c1e97d cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x32c4ee08 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x33afc549 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x37884152 cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3c3719fd cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f7ce28b cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4b78aa04 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x626f47f5 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x63f5841f cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6806039d cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x680d264f cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x77175a05 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8ff432cb cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x95eefc14 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbd4f18f3 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc581e4ea cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc7835e82 cxgb4_iscsi_init +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 0xde981214 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeb28c104 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x450e6105 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x8103fed1 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 0x06c35864 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a1131dc mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1143d474 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1f23f9dd mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46ec649a mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x80bcd647 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x964d8b82 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa628b1e7 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea9c9631 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf66c0a1e mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x5d6e4e67 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xb7ab6b9a hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xd44c8cd6 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xda59dd2d hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe68d22ba hdlcdrv_register +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x14809c08 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x29555c25 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3146cca7 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x6c7f1fdf sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x85f60695 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8eda9c32 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xa517dd2a sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xaacd40d0 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xab600f8c sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe01dc5fa irda_register_dongle +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +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/phy/mdio-bitbang 0xa523a183 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xf2c74b1a free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x342bbdae pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xad4d4936 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xcede7f8d pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/sungem_phy 0xa98059bd sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0f32e0b9 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1cd5181b hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x1f06b3b9 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x59d3e305 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5a40ffea alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x5cc28751 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6b1d3c8b attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbed4036a unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xcd205c5f register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xef25c8bf detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xf0201ef5 hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/z85230 0x0588fdb2 z8530_sync +EXPORT_SYMBOL drivers/net/wan/z85230 0x068caeb4 z8530_nop +EXPORT_SYMBOL drivers/net/wan/z85230 0x10c78988 z8530_dead_port +EXPORT_SYMBOL drivers/net/wan/z85230 0x297f9186 z8530_sync_dma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x35a1199e z8530_sync_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x491cfa89 z8530_channel_load +EXPORT_SYMBOL drivers/net/wan/z85230 0x51c6bb66 z8530_sync_txdma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0x58c99a09 z8530_queue_xmit +EXPORT_SYMBOL drivers/net/wan/z85230 0x5cd24d29 z8530_hdlc_kilostream +EXPORT_SYMBOL drivers/net/wan/z85230 0x65670f52 z8530_describe +EXPORT_SYMBOL drivers/net/wan/z85230 0x8eeb6e42 z8530_sync_txdma_open +EXPORT_SYMBOL drivers/net/wan/z85230 0x8fdc31da z8530_shutdown +EXPORT_SYMBOL drivers/net/wan/z85230 0xcd682930 z8530_sync_dma_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xd4ffebf0 z8530_interrupt +EXPORT_SYMBOL drivers/net/wan/z85230 0xdc2a75e3 z8530_null_rx +EXPORT_SYMBOL drivers/net/wan/z85230 0xde186fee z8530_sync_close +EXPORT_SYMBOL drivers/net/wan/z85230 0xe3d80064 z8530_hdlc_kilostream_85230 +EXPORT_SYMBOL drivers/net/wan/z85230 0xefc42762 z8530_init +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x9e371340 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x1a4f7a00 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x58ff8136 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe2b6c915 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x02667763 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x2c55bbd2 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x52817a1d ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x56fad4b7 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x5d4de17e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x608659d2 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7b5fc604 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9a1c24c1 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9ac05aa6 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xb1605da9 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1820d830 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2aae7ec2 ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x300a40aa ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x364645ed ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x3e019555 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x6003972c ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x77c98030 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8df6e137 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 0xa0d7a67c ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfb1e7a29 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0b3d2ed6 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x2a1a966f ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x48edc6b9 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x4b9157dd ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0695313c ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0cf5ec7a ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x133c5e8f ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x186f103d ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x19c3abe6 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ac8856a ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1d3b305b ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2454df56 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26c7f1fe ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x329b4012 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3335888c ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x37edbe93 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x388b9e9f ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4122e17b ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4449196e ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x44e086f1 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x492f7649 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4a6c5625 ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5364c6b0 ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x547f2a6d ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x54966f5c ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x55b43032 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58d3c65c ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59dc7a64 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e43f3a2 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x605ab3f7 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60a43960 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x60d10525 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6256e675 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63297a9a ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x63806a9e ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x65d62548 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69dca41e ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fce274d ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73bce398 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x748cf6b7 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7ed25713 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8054f458 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8061bb00 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x80ce28e5 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8119de0e ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b1b2127 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d0180be ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x90757e66 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9a168baa ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9cdfd47e ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9d880da2 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9e8257fd ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa34e0502 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa589296a ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa66c975b ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa8ac997 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa9fc47e ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaaa42fc2 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad55e9ee ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaeeeaf8f ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0e44192 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb42157a5 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb614546b ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb8f7b588 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbb2ff5b0 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbee383ad ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbf59f3ae ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbfd63f1f ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc9f7e5b0 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd401906d ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd493ec02 ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd61189e3 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd729ac3b ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd72ac344 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd8d03fd0 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda79b5db ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdb2be26b ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xddb32769 ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe019c4b7 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe31529f9 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe35ad0c1 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe418d5ba ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe6189e83 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe7b86b5e ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedd55a8b ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xee225574 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef4cab0b ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf0aeaf03 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf32e17e6 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf42c473b ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8509900 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf85aed44 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8ad4b9c ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9121da8 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf98ea970 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfc4c9b1d ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/atmel 0x2b53ad48 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0xc23976b0 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xee1bc038 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x6bfec393 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x91f79027 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0bf5784b brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x23151d4f brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x2ab9ab4d brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x3522205c brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5003b74e brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6df991cd brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x73bff74e brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa2309d8f brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa88ed3f5 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd568a0ec brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf430c894 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xfc8abcdb brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x08db6484 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0a509844 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0b85c470 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x12e05122 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1bc53733 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x366985fc hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x36f72596 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x5bad1c02 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x94129fe6 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa1ad38bc hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa2b484ec hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa8d45f52 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb03f7d47 hostap_set_string +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 0xb9109ab0 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbfbcb329 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc433363a hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc56f3ca7 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xce0c3c66 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd701af3e hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdd7168f9 hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe4c29e52 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xecbdab6e hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf6a8c907 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf9fb9db5 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfc0eb265 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x06a8f700 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x22051ef3 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3603636b libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x480d2c22 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60ba3a57 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x697c6c03 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74997acd libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x79a40e28 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95ad373a libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x991f72bf libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa88aef3e libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xae7d4f30 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xaf22aeb3 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb3fe4101 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7b0f3c1 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc175c62f libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xeab4df8c libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xeba17adf libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xed9b08c2 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf3e5e435 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf41b4a08 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0400cadb il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0fea84e1 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x183244e8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x19c33a33 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f750453 il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x205507e9 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x231f76b5 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x254cf340 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x292ea49c il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a29025e il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fb93680 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2fbbb836 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x308a6a3f il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3470b04c il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3729353b il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38963702 il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3abbb2c1 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3cd693bc il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f1cd176 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x400a577b il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4024a661 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4047a935 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40fcb09f il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x42e0e9ec il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4481457b il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46efd018 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a07868b il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d757fe7 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x501ec51e il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x513df165 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52302c08 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52398814 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x52fb7d26 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54e15605 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55859b3a il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x55a3159e _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x57fcfdaa il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x586b67a5 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5d29233d il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6156236e il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6221e4b9 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63bd2204 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x63f4892e il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a6652fd il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b2de698 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6d23757a il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6faa294e il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x718d8978 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x73dd35b1 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x740cca9d il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x78996eba il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7ee377d2 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80b84a1d il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x842f7165 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x856bb9e8 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x859a2929 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x885e69e3 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ee627e9 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x921183f0 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95e7751e il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x98cb82e3 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x990ed4d0 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa352bd7e il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa58b638f il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6ee1951 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6f349aa il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa8d73975 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac7d7c75 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba8503b6 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb48bb49 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbcbb1f74 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe246b25 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbf4805a5 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbfd22db7 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0f4a0ed il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc48aa728 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcc3f72e7 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xccad4c4b il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf6d9974 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcfe5a32c il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd2f0e86c il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5fc22a5 il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd724d847 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda0071b8 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdb0f9f77 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdcc357c2 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1a48bcc il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe4100372 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecc132cc il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeceaf2a9 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecf7005a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeeaeb1ed il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf1571256 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf2094a63 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf23e24bf il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6467bf6 il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf73c0f68 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa287952 il_tx_cmd_complete +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 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 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x1d4070a3 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x29b6703f orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2d4ab00c orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x2f1b463c orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x372d276f free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3be2c3ff orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3d19cd37 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x50c886c4 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5edd940b orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x7a1705b8 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d0b87b4 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa47aa167 __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xacd0e70a orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe5f7587e orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xecc73775 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xee7eabf3 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf95a5565 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x017b6e6e _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x04fb4467 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06112c10 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x06c9a812 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x085fdafe rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x08e1983c rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0b72f83b rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0cd7c620 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0d3ba5dd _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x23010f35 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2d188a41 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3752ce33 rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4111142b rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x584e1aa1 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5ce7a6bd rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5f893eed rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x63bddbaf rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x67f50228 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6aec5d21 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x79a8962c rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7a5195f5 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7c75820b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x88c0a0d7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x894babcd _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8a1a6365 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9c22a0a2 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9e838a9e rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa09f3456 _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa44b03e1 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa8f3ab30 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xafd92148 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb369cc96 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbbbe4daf _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc479e13b rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd86b9327 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda201b5e _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe731e6a0 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xeadb14f5 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf6452393 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf9aaddd2 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfd943f0a rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe5f3226 _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0c532131 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1403e3b1 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x19b05dda rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x57b7de74 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x61056e4d rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x67dd086c rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6b55140c rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6bd72f49 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7b4aaa2c rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7cfdec35 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7f9970c2 rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8fb69986 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x97ef3ae9 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e6a3873 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa274a684 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa3a0cded rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa86ce820 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb33e4d35 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbcae8a21 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xbcb953e4 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd88e0236 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe37d6e12 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe49385ab rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xecde8f43 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x9a58b77a wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc7a7be2e wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x045a4353 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x1129d5d4 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x1cbe77f0 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x232b8fcc parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x33924313 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x339588cc parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0x35cefe83 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x3778daef parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x494c661c parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4dc16e3c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x64d0af7d parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6bfb51ce parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7329d47a parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x7bbe985f parport_release +EXPORT_SYMBOL drivers/parport/parport 0x85a2aa03 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x85ac43f7 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x87b06629 parport_write +EXPORT_SYMBOL drivers/parport/parport 0x8acb5276 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x93434893 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x99d751e1 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xa481633c parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xaf6e9a2f parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbc5fbcdd parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0xbedf4617 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xc3f331c3 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0xcf3a8e84 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xe3888242 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xf1918647 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0xf5e2cb82 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xf60f9815 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport_pc 0xba23f3e2 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xd587f7ea parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x0244be8e pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x107a1c60 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1519f101 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1932502f pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2265744d pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x22ccb85c pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3aab349c pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x47d3fd36 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x72efa9b8 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x79c7e1e5 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8578d404 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9d650111 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa543ede6 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa5c4f246 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb90ea178 pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xd7406f44 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdebef8e1 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe1c0d378 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xf70f1f25 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x208336c4 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3b71c750 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4ad760cb pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x55eb8005 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x79aa0456 pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7d81c613 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xaa2a8638 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xacac2a95 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb7395331 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xd09c9b96 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xe964fe2b pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x6ecb01cf pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xe6cdfc3d pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xbed13272 i915_hsw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x1c8d87a2 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0x33634aa2 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x79b2074d pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xe502bd39 pps_event +EXPORT_SYMBOL drivers/scsi/53c700 0x0b553cd1 NCR_700_detect +EXPORT_SYMBOL drivers/scsi/53c700 0x1b1b86a2 NCR_700_release +EXPORT_SYMBOL drivers/scsi/53c700 0x3d9cece0 NCR_700_intr +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xeed9cdcb bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x10b1c07f fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1b1f6886 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5ed80d34 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x62a4a5ef fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x99b47792 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa72bafd6 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae2d5a68 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaec578ea fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb371039f fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe97c9bd8 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xeee6a0a4 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0b2e0184 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21f544b9 fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x270a589f fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2f6fba55 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3afdb861 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3f3f6060 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4ae349c6 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f52453c fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4fd07bff fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x514cd832 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6b2f024a fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6be036e7 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6fa4c37a fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74ab1ba6 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7616f652 fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cb68d9d fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x87bc88c8 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8945281d fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x897d089d fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x901caebc fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9103d726 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b33de26 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9c7845a1 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa01db5a9 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa03f2b51 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0b21325 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa38f6098 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa3b4bb84 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb3d7f709 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb62c27da fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb7219fd5 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbfa667b3 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcba87c36 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc9f35e1 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xceb8b6e8 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xceba4242 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd4055e5c _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd43dac52 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd5c94af6 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd66a1ca7 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe0cf0128 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5caec24 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe5eeb83e fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed7efc65 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xede548b0 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf37b5cc8 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf569977f fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf5e741ed libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfa4796b2 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfc5bd638 fc_elsct_send +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 0x3f298bda mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x512c956d mraid_mm_unregister_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0206d2a3 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x039fc552 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ae175d3 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0ca27c3b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f4ca9c9 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19cb032c osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x25494867 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2fa509bd osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x39159003 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f1a07ff osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4279c73b osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x428d6b8f osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x468d0a0a osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x480ebc1a osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b4cda57 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4b858582 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x578a2ffd osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7b15fa7a osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7ea36c2b osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x84573d02 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8c641fe0 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9ed58152 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa701a519 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa70fa79f osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabaab737 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xabb9a438 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb187b09c osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xba045095 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xcb353ae3 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2348126 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd23e035e osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe2e49467 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xedbb3769 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf2228fbe osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9f54768 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xff5b26fd osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0bc849a6 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2c781e06 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x36d428a9 osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x4c235116 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x927d0b97 osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0xaf60705b osduld_device_info +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1824d135 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x39fcd8df qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3f5a7f67 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5d6ab481 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6316e455 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xaa39f97a qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xafea3a18 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xbae5bc1c qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd8778050 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe3ff6bda qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xed3bf8c5 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x11d2b608 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x19c6e10e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x368dcd73 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3ce47858 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x74886ff3 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xbc82becb 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 0x38cb3fb6 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0x44de1bde raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x86cda58d raid_class_release +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x02a4c806 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0bfda3d6 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x2f036783 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d46edb7 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5b7ba1b1 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x680632a6 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x72d4fbfa fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7dc0a459 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xa19b55dd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcabd6724 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcd0e24aa scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe23fe443 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe6413498 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x015e281e sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x02d5ead8 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0681475a sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x075289aa sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cdaee17 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1682fddc sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21991ef7 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3279e8db scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x33368166 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3d0f0cd5 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x42b352fa sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4ac8f545 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x569fb9bc sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60fb779b sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x643312e4 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x746af22d sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7ced4f84 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x811709bc sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8858e6b7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x909ef81a scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5121916 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7dbe2e1 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa8712208 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa99563f1 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5ca8162 sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd89e7886 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdaeb5a93 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe74ae7eb sas_port_delete +EXPORT_SYMBOL drivers/ssb/ssb 0x1bc3d60e ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2213e27f ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x35ad885b ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x36c24ea1 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x3d8ad779 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0x4c409f26 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x626c0083 ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x73f1019e ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x7ad7014f ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x7fcd5146 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x9160bd6d ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xab42d559 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0xac43b637 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xac54fcf8 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xbff6af5c ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xcfd9f121 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8dccd17 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xe3b0a3cd ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xe7d1603e ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xf98936ed ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xfcb43c7d ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0801cd92 comedi_driver_unregister +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x15185ec4 comedi_driver_register +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2e97e2ed comedi_get_subdevice_runflags +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x3bcbbb17 comedi_buf_read_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6294329e comedi_buf_put +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6877faa2 comedi_check_chanlist +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6ca98fc5 comedi_buf_get +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x7512f3ac comedi_buf_write_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x94f84c9e comedi_event +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xa758187d comedi_buf_memcpy_from +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xb4020dc3 comedi_buf_write_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xb74ec5c3 comedi_error +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbbf62ed6 comedi_buf_read_n_available +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xc9c3e6af comedi_buf_read_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdd37b118 comedi_buf_memcpy_to +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x2953db0d subdev_8255_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x5afbb381 subdev_8255_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x9ed8b1db subdev_8255_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0xb77454e3 subdev_8255_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0x5bba04f1 cfc_read_array_from_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0x678faa54 cfc_write_array_to_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xdbcb8cb8 cfc_handle_events +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x00b1f72c mite_bytes_in_transit +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x1029a345 mite_dma_disarm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x179d5fd4 mite_sync_input_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x181bba21 mite_buf_change +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x258d03d1 mite_prep_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x3d53d01a mite_bytes_read_from_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x5199e1ac mite_setup2 +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x594cb39d mite_release_channel +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x656456f8 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x6b298277 mite_done +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x7a4231bc mite_dma_arm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x90ec4926 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x9aa64fc0 mite_dma_tcr +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x9f3c957f mite_sync_output_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb29ebda5 mite_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb53f64a1 mite_request_channel_in_range +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xc8dbcfc4 mite_bytes_written_to_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe0b709f6 mite_get_status +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe1ebea7f mite_setup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe981f82d mite_unsetup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xfb3ba025 mite_list_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x47320e6d subdev_700_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x538dc9e6 subdev_700_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x8f5e77ef subdev_700_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x9e670429 subdev_700_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/pcm_common 0x0dee7f81 comedi_pcm_cmdtest +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x231c5acb comedi_open +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x6b3928af comedi_find_subdevice_by_type +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x731ced4f comedi_close +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xa5ab8bbf comedi_dio_bitfield +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xa6e2117e comedi_get_n_channels +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xb6144566 comedi_dio_config +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x02721dc6 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x97ea2075 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x6b8f3185 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xc3003855 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x566b259e iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0xda2daba5 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xe0b89ae4 cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x08188c17 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x69f0e5c8 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x6adf97b0 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7195dbaa go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x83d12407 go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x98ce7925 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcc03cc69 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd51316a6 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf278ed21 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x013624d1 rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x07091a3a rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09dde947 rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0bbde9a1 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0cc81e59 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0ec8a45e rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1617d995 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x163cf3bf rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a52e711 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1a5af12e rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x20c207cf dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22ef756f rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x241d3588 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x31142558 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x312e84aa rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ec34f43 rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x422d9469 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x45068674 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x48c31151 rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4fdeb0d9 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x51ef180a alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x527f7863 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5958b443 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5ca751c3 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f6e379e RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x63f24931 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x74699674 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x757f6572 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e7c2d3a rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x817ef0c6 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88e6e05f rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8e53c85c rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99947845 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99c4757e rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9cfd64b1 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa6495ad1 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbda3be00 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc5736bc1 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc6667737 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcc5fd3f5 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xce4bf49a rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd1aaee62 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd48f7f16 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd49b9062 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdecf8726 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xec16410f free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xedb0b733 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xeeb2e1e1 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf318d1d5 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf6abf328 rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x01155485 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0aa0b624 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0fa29476 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15199dcf ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x17f81f81 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x190b9112 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1be526c2 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x22aae74d ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b815481 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2f3165f4 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32272943 DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x32308b08 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x37c60920 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c9a42c2 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3d9a9e4f ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x44d021ca Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4539f71a ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x479a63a7 ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4d9232ec ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4e6de161 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fffbdbc ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5692d02c ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5888bf1c ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5c549a8a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5d3283a2 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x61840559 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7145b2fb ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x736a8da0 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x81c4dfdf ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x834c7bb6 ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90799a50 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x908551ef ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9163751c ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x939edfa3 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97a3b7c2 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x97aa5ab7 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9aef16b1 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9bc1f49b ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d733c2f ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9d7ab4c4 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa4905e05 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2cdf8ea ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb5574a2c ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2a6fdd7 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd5afa4e ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe07b98b1 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3d29b54 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe7081031 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xec3e3499 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xee0aa9cc SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf233a0f1 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf4604e81 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8285f57 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfcd385aa ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x3e1383d5 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x1125fc87 phone_register_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xce242f87 phone_unregister_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x060dd527 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x0d3fff7a transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x104653e1 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x1155c33c target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0x13a77895 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x140794e4 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a74ae4e core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x203ff30d sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x21c2ef52 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2333e73e iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x314ffb03 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x32cb3521 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0x36adb18a iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x36c4c5b8 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b5132cb transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x3c14d829 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f87ef5c transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x3fe78263 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x439710d0 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x4670bb55 __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x49dcafeb transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x4a282188 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x4e109a79 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x54d6969f transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x551f8349 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5683cb26 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x589cb207 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x628cb89c target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x67090c3f target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x68cae9ce target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x725c6990 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x73d648c5 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x75b5ee05 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x75ff6f35 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x7bd5a5f5 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x7cc62d72 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x8412e589 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x87c0470f transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8bfa81f2 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e1a31ea target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bae9751 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa157d922 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xa347e413 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa34e6f41 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xae999c29 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xaed9cdf8 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc68d1bb6 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc7105907 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xca66a110 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd152eb68 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd871d31a core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xda1b9614 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb3da738 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xdbabbd0f transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe5c25137 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xe6fbefde transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xe7ae679b fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xe907ad14 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf691e434 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7c70c6f sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf93108bf target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x981cc648 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x4944a027 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2d8a24f1 usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x43220376 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4326aa5c usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x46e711d0 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5b4e36ca usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7de9c65a usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7e7a4b80 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x920cd84f usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x999d26ed usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xae0e7067 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb94c4bd5 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb9c2f3f3 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc311d435 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe6aa662c usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf03c9775 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x40fde24a usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xf4c24b02 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x1767b963 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x839b50aa 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 0xe881529c cyber2000fb_attach +EXPORT_SYMBOL drivers/video/macmodes 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL drivers/video/macmodes 0x2350e4dd mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x1e45d670 matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x2138e701 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x3c3a34b2 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x3a07cad9 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x43c67617 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x5d7ef0a4 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb28af68f matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x789741be matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0xc26a29ad matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1748b06d matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x19740178 matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1cf68e58 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x86e8221e matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x52d9c507 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x5f360fbb matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0bc444c2 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4d74a47f matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x543eabd9 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x8af2a0fd matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xec208805 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xbd40983c mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x59bcee9b video_output_unregister +EXPORT_SYMBOL drivers/video/output 0xe2de6c37 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 0x3bb8b53f svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x4bfd66ce svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x691a31f7 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x7a7e2692 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 0x92bc0c4a svga_tilecopy +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 0xe4d6581b svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/svgalib 0xf3dc915a svga_tilefill +EXPORT_SYMBOL drivers/video/syscopyarea 0x9cf4866d sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0x331da93b sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0xef295fd6 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 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2b05a73f vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x3e95083c vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x410bf8cd vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x41862ad4 vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x44e68a02 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x46649cd1 vme_lm_set +EXPORT_SYMBOL drivers/vme/vme 0x48b99a13 vme_lm_free +EXPORT_SYMBOL drivers/vme/vme 0x48bfbbcb vme_slot_get +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 0x6c16afa1 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8957ff7f vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x90695906 vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9aeb07e8 vme_lm_attach +EXPORT_SYMBOL drivers/vme/vme 0x9c6c6c4e vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xa31bdf07 vme_master_set +EXPORT_SYMBOL drivers/vme/vme 0xa7cd410f vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xa92d53cf vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0xacf377a8 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0xba36db87 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0xc0940b59 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0xc0f6eb8e vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xd409bcb1 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0xd6bb1f72 vme_unregister_bridge +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 0xeca72a62 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xefd1624a vme_dma_free_attribute +EXPORT_SYMBOL drivers/vme/vme 0xf1f331a2 vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0xf5a10e25 vme_slave_set +EXPORT_SYMBOL drivers/vme/vme 0xfacd8e72 vme_dma_vme_attribute +EXPORT_SYMBOL drivers/vme/vme 0xfdcb42f8 vme_lm_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x14f6ee09 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x22e605c8 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4c6d5228 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xf0974d23 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6f7fab51 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x8aed87a0 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xaa0cc972 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x435173cf w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x624db73a w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x7b5d8009 w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x01fec203 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x2c8f5216 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0x847fc8b2 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x8a54d6a6 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 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x4b4a544f configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x704b1602 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x94aba213 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xcca348e8 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xcd70c511 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xcf126420 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0xe2bc6b06 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xed7c27c4 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xedb98a16 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf12fb193 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xf1329028 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xf70f7613 config_item_get +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x38c09dff ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x39b6fb0a ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x3cbc1bda ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0x5956c87c ore_read +EXPORT_SYMBOL fs/exofs/libore 0x6c4432a7 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x7e3c7c3d ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x819d236d extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x96030c8c ore_create +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xab2bfa52 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xdc3172cd ore_get_rw_state +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x1de128df fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2a536fdb __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2ea14e05 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0x34089a39 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x34ab220e __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x39c18dba __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x3d3dc7e7 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x50b8617b __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0x5cd2ef0a __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x68edf417 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x69285e41 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x73654ce4 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x88c03c2f fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x97b2584d fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x9cbb7ef8 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xb1847dbd __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xb90ba9c7 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbcae2624 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xc65e2cb5 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xcf2d7366 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xd164f231 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xd32d4088 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xee985388 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf1857707 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xf542d4e7 fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf905bbfc __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0xfa455c3d __fscache_check_page_write +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x2b482b83 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0x512a14f5 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x84782337 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x8ba4c3e5 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xe7ca22fb 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 0x01c12d25 lc_create +EXPORT_SYMBOL lib/lru_cache 0x14568a91 lc_reset +EXPORT_SYMBOL lib/lru_cache 0x21b1fcae lc_changed +EXPORT_SYMBOL lib/lru_cache 0x377393cc lc_destroy +EXPORT_SYMBOL lib/lru_cache 0x630520f6 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x89481a05 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x9cf5bf99 lc_find +EXPORT_SYMBOL lib/lru_cache 0xa46768b2 lc_put +EXPORT_SYMBOL lib/lru_cache 0xa919e51e lc_get +EXPORT_SYMBOL lib/lru_cache 0xbd0caa74 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0xd8c60796 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0xdb24e5ce lc_del +EXPORT_SYMBOL lib/lru_cache 0xf2b5c7bd lc_try_get +EXPORT_SYMBOL lib/lru_cache 0xfaa4f792 lc_set +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 lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x29681652 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0x805352d8 register_8022_client +EXPORT_SYMBOL net/802/p8023 0x175b5e25 make_8023_client +EXPORT_SYMBOL net/802/p8023 0x98b4cd9b destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0x98300215 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xa8a46372 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x072ee6bc p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1e2e5620 p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0x3168d377 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 0x3ec5ea38 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x43eb98b0 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x44a10229 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x45118f72 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4a5145a4 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x4c776030 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x61f5e697 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x624f9748 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x62d482f5 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x66891eaf v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x678405ec p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x6a451a29 p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x6a9996ce p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x72bd11f0 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x73bd5619 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x79ca02d0 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x85c4a716 v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x8b026cdc p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x8e1601ce p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x944b5d4f p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0x9fee685f p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0xa5aa3586 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xbc65a19b p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbd3dcbb9 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xbd8014c1 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xca21d0a1 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0xce8e81dd p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xd3f92a7d p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0xd5d7adb6 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xd8eda45e p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xe050b566 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xec7f738f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xed81fba7 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xeddb5097 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xee5b8506 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xefa328f6 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf5ce66ca p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xf750a86b v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xfe8a1486 p9_client_fsync +EXPORT_SYMBOL net/appletalk/appletalk 0x1ef645e7 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0x359bfad7 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x8db8ca42 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xae21f8e8 atalk_find_dev_addr +EXPORT_SYMBOL net/atm/atm 0x05d36413 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x088c4c39 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x1fdb7323 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x274a05b5 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x32404d5c atm_charge +EXPORT_SYMBOL net/atm/atm 0x44ae323e deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x80ce3781 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x93136f41 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xad9f7212 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xc65026ed vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xe1d04e24 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe5d8f60d atm_proc_root +EXPORT_SYMBOL net/atm/atm 0xe6aa1adf atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xecf37cc9 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/atm/atm 0xf9a26a2a atm_dev_signal_change +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x094f6f33 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x33955ed0 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x641f8944 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x6ba1e18a ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x6f532f07 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9010702e ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xcff2b1cb ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf65f6b36 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0xf6b15d4d ax25_rebuild_header +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06f5e137 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bff2243 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x245fccf6 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d0da760 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2faa7f56 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x40d7fb12 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4ae507c0 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4b77d732 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5c218962 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x69d53956 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6cc28602 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f462ede hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7514f589 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x782cd111 bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7aa9855d hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7dfdf80d hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x85ac5118 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8692c9ad bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x88934228 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8ca948cd bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x909312c9 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91849063 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x992d0f17 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9bd4b3e6 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa40fa193 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb2ffed67 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb5dcc562 hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbbda2edb hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbe192ab8 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc0532a8c bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcea7f1e2 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdd71f1af hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe464c440 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe8210873 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf309a1f8 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf367f184 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf8a86874 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0xfff90c30 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0xbf324056 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x293c76fc ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x5ea089db ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x9fdb0ff5 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x0bfc3966 cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1d4fa94d get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0x1f907657 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 0x4c3a8377 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xbb7ea50b caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x0851377e can_rx_register +EXPORT_SYMBOL net/can/can 0x5631a0e6 can_ioctl +EXPORT_SYMBOL net/can/can 0x59c6d000 can_send +EXPORT_SYMBOL net/can/can 0x9b445cb9 can_proto_register +EXPORT_SYMBOL net/can/can 0xa1719f0b can_rx_unregister +EXPORT_SYMBOL net/can/can 0xdd40baaa can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x002a7c77 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x06d00b21 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0edcad6f ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1d1e544f ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3234c706 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x3391ae5d ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x34a64292 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x34b984a3 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x3726e832 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x387bf95e ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x3a1893c0 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3adbdf94 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x3c62cb10 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x3e1ea197 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a 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 0x49e5d57b ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x586c07a0 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x59c0631c ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5e9c6de4 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x5f6e232c ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6ab3aff5 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x763fc447 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x78d5afca ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x7e27db3e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x845eb209 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x878bb32d ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x8886288e ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0x8d8e546a ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x935b179e ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x9a0236df ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa79386b0 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xa800d26b __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb2cc9a6d ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb4fe6719 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc0fb94ba ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc33a8ae9 ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9b6f699 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd1c0469d ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xd2b0a7d4 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd929f46a ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xd984869f ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xdac5ff59 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xdde98e23 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xe40397ce ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xebe0e50d ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xf2d5ad36 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0xf9cc519e ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfc3bd9f4 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xffcb64bf ceph_put_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x56368dec dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x02c31a26 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x091420eb ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x11e3d1dd wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x46dbecbc wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5ea83fb8 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7432bd23 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x7dae94e6 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x893c1338 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8fdd533a ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb089e53f ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdb5d31f4 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xdc5d2899 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0xec508e13 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x22041824 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xbf6c8912 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xf62f422f arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb33ba160 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf0a32b84 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xf7a30877 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x36b874f5 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x45026b72 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x7164c1be __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x873b5803 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xa6bd3dac nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xdf4baf1b nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xef8b76e3 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/tunnel4 0x2950acf7 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0x6b33be64 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0b61bc63 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x117499d2 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc63ca5a4 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xe8a26026 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0xbb30f850 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xdcd800a8 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x01bc6179 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xc78d91b4 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2ce856af ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3f021b64 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3ff7fa27 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x452707f8 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x99c51bb3 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd1824512 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xd595d59e ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xec5abdcb ircomm_open +EXPORT_SYMBOL net/irda/irda 0x01dbeb0e irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x02b9e10a iriap_close +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x06fef735 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x0bab6037 hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x0bdf19b4 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x14c06d33 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x1768dd6b irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x1c04e372 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x23a2eee7 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x2f9998a9 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x359de411 irias_insert_object +EXPORT_SYMBOL net/irda/irda 0x360428c3 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3b0a2ab6 irias_find_object +EXPORT_SYMBOL net/irda/irda 0x3b9bdefe irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x3d43f1d0 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x428321fa hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x43ed2b6b irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x45403e0e irlap_close +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x48d17824 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x4f1d86c4 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x5143ab49 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0x53d1b19f irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x62acf28c irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x62e5927e iriap_open +EXPORT_SYMBOL net/irda/irda 0x64218f38 irlmp_connect_request +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 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 0x8b5f5a47 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x8cd99be0 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x96af8dc4 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9e326eb3 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x9eff3931 irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xa370c681 hashbin_find +EXPORT_SYMBOL net/irda/irda 0xab26900e irttp_open_tsap +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 0xc0bee29c hashbin_new +EXPORT_SYMBOL net/irda/irda 0xc44794ac async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0xcdc4d5c6 proc_irda +EXPORT_SYMBOL net/irda/irda 0xd6deeaae irda_setup_dma +EXPORT_SYMBOL net/irda/irda 0xdbd8f491 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xeea5f22a irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xf04d6021 irlap_open +EXPORT_SYMBOL net/irda/irda 0xfb7c0895 irlmp_open_lsap +EXPORT_SYMBOL net/l2tp/l2tp_core 0x429654fd l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0d64f4cb lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x3b6551eb lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x5e056a28 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x753a16b3 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x7579ce82 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x8e872441 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x945fe9c6 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0xefbe2787 lapb_setparms +EXPORT_SYMBOL net/llc/llc 0x2d4229ac llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x3b3e85cb llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0x80b1ed6f llc_sap_close +EXPORT_SYMBOL net/llc/llc 0x8b75a7e3 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xaabf3140 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xd2418cb6 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xd629316a llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xf4a85cce llc_set_station_handler +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x0acbc3c7 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x0b6f6904 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x155354e8 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x17606937 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x18777446 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x21ba8424 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x244af3a8 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x258206bd ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x284c7a9c __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x2ac2a8af ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x2b6957b1 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x2cf0c156 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x30d37131 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3e1359c7 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x488c4328 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x48d3c57b ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x49a276dd ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5223f299 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x5b6dc04e ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x63b963b5 ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x75c797fe ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x77de1a35 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x811445fc ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x8264b2b5 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x8e145648 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x984f4d81 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x9aaaaafe ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xa0d5b281 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa761a6c3 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xac50cb83 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xba5cb084 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xbaf44a11 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xc20f58ec ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc2bce816 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xc45967c0 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcd3a31ce wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xcd78e82b ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd8f52433 ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdb1a5c68 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdcdb9296 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf690a29 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe35fe55c ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xe506a143 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe8d4f25d ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xea5d2f18 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xf554a9d3 ieee80211_sta_block_awake +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x08e940a8 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x296f4121 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3ec828b1 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x511a2148 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x65670873 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6a9c1870 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6ebae3a3 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x70c921ee ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a9410f9 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8ef46110 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa3acf440 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc57015e3 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xeff91b68 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfbdee6c2 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x64a7d2ad nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xb0ddbbb0 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xe9b05e4a __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x5d4dc2a8 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x435abac7 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x47c94c46 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x5d84b069 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x6bdfa593 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0x6c94ccf1 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x7482e4c7 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x9cc78cbe xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xd116dbe9 xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0xe0c6a4d7 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xedeb8af1 xt_register_target +EXPORT_SYMBOL net/nfc/hci/hci 0x026daf77 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x14cce3ea nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1549444f nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x1a8e096b nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x1df8e652 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x1ed12a93 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x21106d11 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x24b30178 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x2d08c47d nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x2f6f7ac6 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x658654c4 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x72e85c83 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0x89fb1445 nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x96df280d nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x9fb1db55 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0xb4e4943f nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xc55df965 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xd96ba4b1 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xea4d201a nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0xfcf79c34 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0xffc005bc nfc_shdlc_free +EXPORT_SYMBOL net/nfc/nci/nci 0x6a3297f7 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x7d4ba6aa nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x946438b3 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x9fe84881 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa3adc048 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x4e3e2c52 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x60ba11f3 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x756c91f5 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x7a568a69 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x915d556f nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x9b441eb0 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9e14e75b nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xd3af3401 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0xde73d371 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0xe364f749 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xed7a6328 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/phonet/phonet 0x050ceaee phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x147b5ea9 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x3537f6b1 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x3f892a27 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0x7aae1b36 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x872d8fd2 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9855e7d8 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xbf92e396 pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x1147e5f9 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x46435d76 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x54e671a3 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x60d636ca rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6de8596f rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x6e059665 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x75be9e7b key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x7faa6d20 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x81bac26a rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x84595c63 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x97226cd2 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa0d8f2eb rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc56706ea rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe74dba27 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf57fccc9 rxrpc_get_server_data_key +EXPORT_SYMBOL net/sctp/sctp 0x4fb47cd2 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0xe3892c16 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x5d04d577 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x6b90b878 wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xa77efcdb wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x03d4d28f __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0f5942df cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x12cd9b1c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x16a0cdf1 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1a69ba59 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x1c859dda cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x1d82fe2e cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x204d76f6 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x2a6dc6a3 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x2b2977d4 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x2cf0d30d cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x32ab9fb4 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x3683558e cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x385b38d4 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x3dcf1905 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x405deb5e regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x48679168 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x49251ba3 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x4cab572d cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x4db81268 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x4f04b583 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x512a4128 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5b674d30 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x6357025b cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x65209849 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x69be2054 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x71720ee7 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x755f251f cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x77d41ef6 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x79fbf16a wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fb97061 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x82821734 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x86118edf cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x8c497675 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x8d28158f cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x909af8c3 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x90d2062c cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x91c7379a cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x92872af0 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x92e58e22 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x92f843d9 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a9c9a94 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x9c284d8f ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x9f98157a cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2b46e82 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xa676b5d6 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xa81466bf cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa8973a78 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xaa44b661 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xad9d4f26 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xb0ea2ff6 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xc2dcd6f3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc7b4d746 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc95f02f9 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xcd7342c8 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xdb9342a1 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xdbb9e44a cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xdc3c6d35 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xf0b4c517 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xf7143793 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xfadde8e8 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0f5eb935 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x1b63da25 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x3b40be7d lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x660dab68 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xfa33ff61 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xfc847b8d lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0xfdf9fc80 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x9bd8a8bd snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0f41da85 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xaf674f3f 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 0xcaff0600 snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq 0xd268b48c 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 0x3a57f235 snd_seq_autoload_unlock +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x3e1410f6 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 0x8e09949d 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 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 0xa9288fb4 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x026a5823 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x072c3cad snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x072e2cee snd_device_register +EXPORT_SYMBOL sound/core/snd 0x09c5149f snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x19200c52 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b0f263c snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x1b9b2620 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x229c30e8 snd_cards +EXPORT_SYMBOL sound/core/snd 0x244d5a05 snd_ctl_new1 +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 0x2c76ecfd snd_card_register +EXPORT_SYMBOL sound/core/snd 0x307bd854 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x33aabb59 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x343ec4e3 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4a970111 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4bda239c snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x4f773e39 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x516dcd90 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x6514d1b3 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x6c965deb snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x7a8b40fb snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x7b545f03 snd_info_register +EXPORT_SYMBOL sound/core/snd 0x7f427c58 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x820eb4e7 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0x8549a95a _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f0985c3 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x90025b37 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x99f0efb6 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x9ca7a1fa snd_register_oss_device +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 0xa4f2f9b7 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0xa643ccb0 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xaf532f8f snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xb2090156 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbad26588 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0xc0d9e118 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0xc957f612 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xd2af8675 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xd60ebbed snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xd721459e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0xd9df7da3 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xdc5eae93 snd_card_free +EXPORT_SYMBOL sound/core/snd 0xe15b51db snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xe7299937 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xeb08e910 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xebd6e57e snd_card_create +EXPORT_SYMBOL sound/core/snd 0xf3298027 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf58014ed snd_device_new +EXPORT_SYMBOL sound/core/snd 0xfb927f22 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0xfd7e771f snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd-hwdep 0x334447af snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7bf21440 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x7cdcdbe9 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9cf49a1a snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe123ca9c snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xe647875e snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x02c6a003 snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x058594b0 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x189b89ec snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x240a06ed snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x26c2b7c3 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x31c9d600 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x31f278eb snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38b09128 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 0x3bfccb37 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x3ff4ec22 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x47bd6c0f snd_pcm_set_sync +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 0x513117d0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x519faf86 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x52e3e4a5 snd_pcm_hw_param_value +EXPORT_SYMBOL sound/core/snd-pcm 0x55c47fca snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x591f71c2 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x5c42cfc3 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5df99054 snd_pcm_new +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 0x6762936e snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x69a07294 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x69a8d2e2 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x6ad68412 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x6e794088 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x7a255f7f snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x90361bb6 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0xa0e86de2 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xa587e757 snd_pcm_hw_rule_add +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 0xb4e1560b snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xb6d3e95d snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb826f85d snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xc553247d snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0xc705d255 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xce2e1d9f _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xd21b38de snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0xd2d24f23 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xd3d71f97 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0xd47bef2f snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0xd8d16c42 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xdb0dd0d0 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xe24da82c snd_pcm_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xed6f4eb6 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xee44a1d1 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xf0d9cc41 snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf51645a5 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xfe672e54 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0de873dc snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0x26c218d8 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x35aff468 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x381fd142 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3c682968 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5036d9e7 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5405dabd snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x675fd237 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6fc086bb snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7d9ac139 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa93331fb snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaff45244 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb0ef1ce snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdea6d0ef snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xea842ea8 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf58df74c snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xf7565890 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-timer 0x008ba10f snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x2a139542 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x402f042b snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x461eac6a snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x49384f4d snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x51c07926 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6c628e24 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x76d593e4 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x8f69ad65 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xa49f23df snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0xb0a30bb8 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xb978931c snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb9fa1af3 snd_timer_global_new +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x72620a06 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 0x21fb6c97 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50ea35e3 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6e1c9153 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xcd88c7b5 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd895ac20 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xdaae6045 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xde592e50 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe4a03107 snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe96ce022 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x2b74d3c7 snd_opl4_write +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0x6f809ef4 snd_opl4_create +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xb72eb409 snd_opl4_write_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xdd44b902 snd_opl4_read_memory +EXPORT_SYMBOL sound/drivers/opl4/snd-opl4-lib 0xf2e777bd snd_opl4_read +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x056db70d snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x2c6de9ae snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4dc817cd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa44093dc snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xafa92b6d snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xb491f577 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xc84b0050 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xed19ca50 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf0885a14 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0b0fd07a fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x145088bf amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x172007a0 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1e843689 iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27feb6ca amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x2fe37d26 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x53e03285 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x543e4d32 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5809a2f0 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59b25fc1 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59f5a0d7 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x69cd50fa amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x754ae6c6 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7679a180 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x87b44271 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x8eddbbc2 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa9f6a42a iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xab5f0659 cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xacfecf0e amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb2849265 fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf0766f3 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd2145ff1 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe40a78c4 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4ef2aab fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xef803931 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf05cabc5 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0dc007eb snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3995b751 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8539ff57 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xeb60b76b snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xeb990eb2 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf28acd98 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x3246fd1d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x5eaccbcd snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x71b6bbef snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x96bd9455 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xaf523ece snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xc5c44297 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x647eb67d snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x81218dd1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xd674d50a snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf98db0f6 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x798ecaff snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x9af4f649 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x691970f0 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xb2ec46ba snd_tea575x_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6e9cc870 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7e38bfa4 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7fcc50d4 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x84575ba2 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xd19b5f21 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x09e5a8e0 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x27a2cda0 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x37a7b544 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x465f1c18 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5a4f17d1 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf72ab253 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x28ec00cd snd_tea6330t_update_mixer +EXPORT_SYMBOL sound/i2c/snd-tea6330t 0x6b95f1a4 snd_tea6330t_detect +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x1351d9aa snd_es1688_mixer +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x1577fb21 snd_es1688_mixer_write +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0x2b0938b0 snd_es1688_pcm +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xb0c56858 snd_es1688_reset +EXPORT_SYMBOL sound/isa/es1688/snd-es1688-lib 0xf819815c snd_es1688_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x020e7bbc snd_gf1_delay +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x053d4304 snd_gf1_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x068dc50f snd_gf1_mem_lock +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x152e248e snd_gf1_i_look16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x1c1ce117 snd_gus_interrupt +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x2aedd837 snd_gf1_free_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3aaf22ca snd_gus_create +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3c860487 snd_gf1_rawmidi_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x3f8591e1 snd_gf1_peek +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x44238fb6 snd_gus_dram_write +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x46db8d67 snd_gf1_lvol_to_gvol_raw +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x47b4c709 snd_gf1_ctrl_stop +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x7101f767 snd_gus_use_dec +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x729139f1 snd_gus_dram_read +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x739c5d6e snd_gf1_mem_xfree +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x8bb937c7 snd_gf1_i_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x93884f0d snd_gf1_write16 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x99e6acd5 snd_gus_use_inc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0x9e1cd652 snd_gf1_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xa447a0b9 snd_gf1_dram_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xaef27c62 snd_gf1_stop_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xb6395843 snd_gf1_poke +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc3820fbc snd_gf1_new_mixer +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc43a5527 snd_gf1_atten_table +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xc634d8a8 snd_gf1_mem_free +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xd1e07ddf snd_gf1_write8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdbefc9ac snd_gf1_pcm_new +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdd1a973a snd_gus_initialize +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xdf0ea40e snd_gf1_i_look8 +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe5db6b74 snd_gf1_alloc_voice +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xe9633e0f snd_gf1_write_addr +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xf2d3e7e1 snd_gf1_mem_alloc +EXPORT_SYMBOL sound/isa/gus/snd-gus-lib 0xffa64c1d snd_gf1_translate_freq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x0e096be3 snd_msnd_init_queue +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x1bd3b88e snd_msndmix_setup +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x22c6bd3a snd_msnd_enable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x2a349b41 snd_msndmix_new +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x3189af76 snd_msnd_send_word +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x424d0754 snd_msnd_pcm +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x75026b24 snd_msndmidi_input_read +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x80b56bfc snd_msnd_DAPQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x84b88878 snd_msnd_send_dsp_cmd +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x86ec9656 snd_msnd_dsp_halt +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0x90eb0a51 snd_msnd_DARQ +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xbdda82e8 snd_msndmix_force_recsrc +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xc2378de3 snd_msnd_disable_irq +EXPORT_SYMBOL sound/isa/msnd/snd-msnd-lib 0xd1964bb0 snd_msnd_upload_host +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x696784b8 snd_aci_cmd +EXPORT_SYMBOL sound/isa/opti9xx/snd-miro 0x77b15788 snd_aci_get_aci +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x06c92df1 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x0b32e736 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x14ef2915 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x65aea2c3 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6a90c306 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x917c57d3 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xc917f86b snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcce9d71b snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xcd8de36d snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe11c7736 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb16-csp 0x34eaeec7 snd_sb_csp_new +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x0c32b18c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x4f46806f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xcab85655 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 0x0ffda623 snd_sb8dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0x3582a578 snd_sb8dsp_midi_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xb5eb4cd7 snd_sb8dsp_interrupt +EXPORT_SYMBOL sound/isa/sb/snd-sb8-dsp 0xda6703b5 snd_sb8dsp_midi +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0414087c snd_emu8000_init_fm +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x0ca42a27 snd_emu8000_update_chorus_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x1ae58099 snd_emu8000_peek_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x5026fb84 snd_emu8000_load_chorus_fx +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x62ff2cfc snd_emu8000_peek +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0x861886e8 snd_emu8000_poke_dw +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xa4974ad8 snd_emu8000_dma_chan +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xaef76007 snd_emu8000_update_equalizer +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xcaff40f5 snd_emu8000_update_reverb_mode +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfa455cae snd_emu8000_poke +EXPORT_SYMBOL sound/isa/sb/snd-sbawe 0xfe7f6d4c snd_emu8000_load_reverb_fx +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x20033cfc snd_cs4236_ext_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x25e710f9 snd_wss_mixer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x5b09018f snd_wss_mce_up +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6b69b006 snd_wss_pcm +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x6d1a47e0 snd_wss_info_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x73ed74a2 snd_wss_timer +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x79ea0265 snd_cs4236_ext_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x7b202637 snd_wss_interrupt +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x86dfc72a snd_wss_get_pcm_ops +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x97e6029c snd_wss_chip_id +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0x9b4e8d73 snd_wss_overrange +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa3afddd0 snd_wss_get_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xa4dd9b20 snd_wss_in +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xaec8e24e snd_wss_put_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xbe00c555 snd_wss_out +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xc2465ce3 snd_wss_get_single +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xcf21637d snd_wss_put_double +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xe96e4c70 snd_wss_mce_down +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xeebe6610 snd_wss_create +EXPORT_SYMBOL sound/isa/wss/snd-wss-lib 0xef64a73e snd_wss_info_double +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x109d895f snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18ea91bc snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1fa3dfaa snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x22dd7a9a snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x254f0bd0 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x4e47e021 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x509ca33e snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x63515359 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x68039c0c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x77be332b snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7d4efac5 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa3771a83 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xa4b582a9 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xbc9d0249 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc2c86ee1 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xde174e1e snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf153556e snd_ac97_update_power +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0xdd1dfa33 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x113da4dc snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x1aa97aa5 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x35b8e969 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x482ccc63 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5d513040 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x742fa545 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x7a103be9 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x81d3910e snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa7381147 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xc1e71152 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x05c63fbc snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x6eb42ac3 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xd2c36633 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x166eff8a oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2329852f oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2f83c28f oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3578f98f oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x57b73af3 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x60de3f70 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x740182b2 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x765f4e2b oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7a3442a7 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x81abed9b oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x857c15c1 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x88dba3cd oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x98805f4e oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9ecd6176 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa96b625c oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xac98d427 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd8c744a4 oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xdd211ae9 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf24a6630 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf400f96b oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf67dc800 oxygen_write_spi +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x130f4d79 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x204fcea7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x3ceda7dc snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x58b64274 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb40569ad snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x13724f3f register_sound_special +EXPORT_SYMBOL sound/soundcore 0x1bcbc2e1 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x2e9b1c55 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x81dbb4b0 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcf5e11f8 sound_class +EXPORT_SYMBOL sound/soundcore 0xd269f64f register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x011cc26d snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4b10dab0 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 0x78b3f7b9 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xb5192e6c snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe412a26d snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xfb6b1555 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x214e605e snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x2534f631 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3513219e snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x4ff2b933 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0xba781773 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xcd564794 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xdec52069 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf2190563 __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 0x6703e7e6 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x35c95b1b dm_mem_cache_client_create +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x56f3f9e4 dm_mem_cache_alloc +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x86e5acf9 dm_mem_cache_grow +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x920a7a41 dm_message_parse +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x9e385dbe dm_mem_cache_free +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xa43471b6 dm_mem_cache_shrink +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xd55b290c dm_mem_cache_client_destroy +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00094c7d skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x001a14af request_key_async +EXPORT_SYMBOL vmlinux 0x0046bfa4 filemap_flush +EXPORT_SYMBOL vmlinux 0x006dba33 __dev_printk +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00a5886c mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x00bf0934 write_inode_now +EXPORT_SYMBOL vmlinux 0x00e7a375 seq_open_private +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00f98a38 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x01124331 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x012a1fa3 iterate_mounts +EXPORT_SYMBOL vmlinux 0x014f2bd5 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x015160ef intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x01648d20 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x0164f296 submit_bh +EXPORT_SYMBOL vmlinux 0x016e9347 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x018df223 acpi_device_hid +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01d19038 acpi_enable_subsystem +EXPORT_SYMBOL vmlinux 0x01d805b0 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x01d8c789 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x01edf0df skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x02139cff dquot_drop +EXPORT_SYMBOL vmlinux 0x02282991 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x025db136 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x02645101 thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02c6f2aa register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e56561 netlink_set_err +EXPORT_SYMBOL vmlinux 0x02e5e0ed fget_raw +EXPORT_SYMBOL vmlinux 0x02eddacd genphy_read_status +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x031d39a0 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x0333cf8b may_umount +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033c2529 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x03531ff4 __napi_schedule +EXPORT_SYMBOL vmlinux 0x03551937 release_pages +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03a56df5 skb_make_writable +EXPORT_SYMBOL vmlinux 0x03b141f4 tcp_poll +EXPORT_SYMBOL vmlinux 0x03b580eb wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03cfa89a journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x04266fc6 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x042ad2a2 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x044f770c dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04759051 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x047912e3 pci_restore_state +EXPORT_SYMBOL vmlinux 0x048217c6 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x0488550a tty_port_hangup +EXPORT_SYMBOL vmlinux 0x048d3078 simple_statfs +EXPORT_SYMBOL vmlinux 0x04985ba3 dev_notice +EXPORT_SYMBOL vmlinux 0x049f55a0 acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x04aa8ed6 bio_init +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04e92b39 netdev_state_change +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x05056eda __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052bcb9a alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055a8ec1 kobject_init +EXPORT_SYMBOL vmlinux 0x055b3315 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x0566f89b __scm_send +EXPORT_SYMBOL vmlinux 0x0567376b tcp_prot +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057bbdb7 genphy_suspend +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0583b1cb do_sync_read +EXPORT_SYMBOL vmlinux 0x058eb84b scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x05a10bd9 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0x05bd1379 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x05c324f1 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x05d5c819 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x05ea912d __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x05fe9760 lock_may_write +EXPORT_SYMBOL vmlinux 0x06030d6d netif_napi_del +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x06207e58 vfs_create +EXPORT_SYMBOL vmlinux 0x062a7573 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x062e90ee write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06353c85 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06ac3d7f tty_port_close_end +EXPORT_SYMBOL vmlinux 0x06b94417 bdget +EXPORT_SYMBOL vmlinux 0x06c16b73 bio_integrity_advance +EXPORT_SYMBOL vmlinux 0x06d05f66 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x06d2f086 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x06f4bf00 seq_escape +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x06ff7c85 account_page_writeback +EXPORT_SYMBOL vmlinux 0x070869d5 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x070b70dc neigh_ifdown +EXPORT_SYMBOL vmlinux 0x0711be12 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x071ec360 netif_device_detach +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072e9540 take_over_console +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x074345e4 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x0749d372 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x075d366a aio_complete +EXPORT_SYMBOL vmlinux 0x07608604 acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x076ebea8 pv_lock_ops +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d50a24 csum_partial +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e1b68d cfb_imageblit +EXPORT_SYMBOL vmlinux 0x080d4ba2 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x0821eb35 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083a77cd tty_unthrottle +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x088ef4b8 remove_proc_entry +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x08bc9293 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x08bf826c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0x08e99c4a alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x090cc48c blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x091817b6 migrate_page +EXPORT_SYMBOL vmlinux 0x091c082a dst_release +EXPORT_SYMBOL vmlinux 0x091cb810 console_stop +EXPORT_SYMBOL vmlinux 0x091e7440 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x09396f8b twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x09665194 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x096b6dff pnp_find_dev +EXPORT_SYMBOL vmlinux 0x09730667 sg_miter_next +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09a36325 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x09a6a9b6 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x09c55118 misc_deregister +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d523d3 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a34b585 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x0a3993a3 sock_no_bind +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a568eda unregister_key_type +EXPORT_SYMBOL vmlinux 0x0a9cbc16 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x0aa77744 update_time +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0b014146 tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b19a3b1 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e93f2 put_disk +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b70953d bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b78b601 key_unlink +EXPORT_SYMBOL vmlinux 0x0b9f2472 sock_i_uid +EXPORT_SYMBOL vmlinux 0x0ba26d5f scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0c25fcbc generic_block_bmap +EXPORT_SYMBOL vmlinux 0x0c3440c0 netdev_alert +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5f0996 module_put +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c919dc2 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0ccf2e98 security_mmap_file +EXPORT_SYMBOL vmlinux 0x0cdc6b1a tcp_connect +EXPORT_SYMBOL vmlinux 0x0cf6cccb lro_receive_skb +EXPORT_SYMBOL vmlinux 0x0d1d60c2 dentry_unhash +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d42e89d scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d715f2f tty_shutdown +EXPORT_SYMBOL vmlinux 0x0d75dcca mark_page_accessed +EXPORT_SYMBOL vmlinux 0x0d84eec9 blk_stop_queue +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0da8662c tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x0db6af7f in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x0dcb050e i2c_del_driver +EXPORT_SYMBOL vmlinux 0x0e24d8ed dma_find_channel +EXPORT_SYMBOL vmlinux 0x0e3881c1 read_cache_page +EXPORT_SYMBOL vmlinux 0x0e49945c simple_write_end +EXPORT_SYMBOL vmlinux 0x0e5585c1 scsi_add_device +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e80f987 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x0ee1b787 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x0eea6795 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x0efd00f3 get_unmapped_area +EXPORT_SYMBOL vmlinux 0x0f12f177 bdput +EXPORT_SYMBOL vmlinux 0x0f23c2be __get_page_tail +EXPORT_SYMBOL vmlinux 0x0f2c5694 register_exec_domain +EXPORT_SYMBOL vmlinux 0x0f3a3875 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x0f479dec bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f6ad767 __elv_add_request +EXPORT_SYMBOL vmlinux 0x0f9362cd thaw_super +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fc542bf unlock_new_inode +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fefb56d abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x1015c707 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x102c56de irq_regs +EXPORT_SYMBOL vmlinux 0x103fba37 dma_supported +EXPORT_SYMBOL vmlinux 0x10437ad8 empty_aops +EXPORT_SYMBOL vmlinux 0x109d2ab4 pcim_iounmap +EXPORT_SYMBOL vmlinux 0x10a61247 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x10ab7e68 down_killable +EXPORT_SYMBOL vmlinux 0x10d2695d bio_clone +EXPORT_SYMBOL vmlinux 0x10dffaa5 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x10e13ad1 vfs_fsync +EXPORT_SYMBOL vmlinux 0x10e16909 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x10e3711b pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10f04ba9 i2c_release_client +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1110690b sock_create_kern +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x112cc0d9 inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x112fcb3e xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x113d1682 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x1153d513 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x119cb104 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x11b044b1 elv_add_request +EXPORT_SYMBOL vmlinux 0x11b145f4 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x11b49b98 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x11dd01ad intel_scu_ipc_command +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11e4ab29 pci_request_regions +EXPORT_SYMBOL vmlinux 0x11e66f63 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11fe8f02 dev_mc_sync +EXPORT_SYMBOL vmlinux 0x11ff5c50 mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x1236a0b1 bioset_create +EXPORT_SYMBOL vmlinux 0x12514b21 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x125ec5df alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x126a169b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x12847d0d udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x1286947b end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x128a5cf9 complete_all +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ab345e intel_gtt_insert_sg_entries_hsw +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133d4360 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x136345cb xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x1370cb3f dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x13787443 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x1380b3be scsi_get_command +EXPORT_SYMBOL vmlinux 0x138640c3 blk_start_queue +EXPORT_SYMBOL vmlinux 0x13868300 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x13995841 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x139ae9bd give_up_console +EXPORT_SYMBOL vmlinux 0x13a8bc61 sk_dst_check +EXPORT_SYMBOL vmlinux 0x13b65a01 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x13c25516 init_task +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13f31c98 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142f3e78 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x1430e6e0 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x1442df4e mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x145a77d1 d_alloc_name +EXPORT_SYMBOL vmlinux 0x148c592d sock_kmalloc +EXPORT_SYMBOL vmlinux 0x14aa51fe grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x15104ff1 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x1549f0ba tty_register_device +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x156839b8 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x15685250 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x1577edee mdiobus_scan +EXPORT_SYMBOL vmlinux 0x158ca693 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x15a978f6 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x15cf7526 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x15d8fcf9 dev_load +EXPORT_SYMBOL vmlinux 0x15fc10d6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x1600c348 journal_init_dev +EXPORT_SYMBOL vmlinux 0x16097f59 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1635e4aa d_delete +EXPORT_SYMBOL vmlinux 0x167d0dcf inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x16869360 pci_target_state +EXPORT_SYMBOL vmlinux 0x168c5232 writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x1694a436 tty_write_room +EXPORT_SYMBOL vmlinux 0x16b3be44 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x16c403df vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16ec3386 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x17000010 have_submounts +EXPORT_SYMBOL vmlinux 0x170bf973 pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x1713f797 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x177afcf5 generic_make_request +EXPORT_SYMBOL vmlinux 0x178b6e26 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x17981d32 ppp_input +EXPORT_SYMBOL vmlinux 0x17cb6099 input_get_keycode +EXPORT_SYMBOL vmlinux 0x17d76e91 dquot_disable +EXPORT_SYMBOL vmlinux 0x17d9217f security_inode_readlink +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e3392d nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x17ec0c02 simple_rename +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17f6ed8d scsi_remove_device +EXPORT_SYMBOL vmlinux 0x1826f089 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x183adf97 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x183e2abf filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x18485184 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x185ce8d8 inet_shutdown +EXPORT_SYMBOL vmlinux 0x185e7220 lock_fb_info +EXPORT_SYMBOL vmlinux 0x186f9571 dev_addr_del +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x188fc36f scsi_target_resume +EXPORT_SYMBOL vmlinux 0x189253b9 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18d96501 atomic64_dec_if_positive_cx8 +EXPORT_SYMBOL vmlinux 0x18f47d03 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x190e377e posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x191d37c5 dqget +EXPORT_SYMBOL vmlinux 0x19214174 input_release_device +EXPORT_SYMBOL vmlinux 0x1925fc1d skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0x1957489b dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x19912407 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a9e62b complete +EXPORT_SYMBOL vmlinux 0x19b01206 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c4be82 bio_endio +EXPORT_SYMBOL vmlinux 0x19cb6dbc journal_lock_updates +EXPORT_SYMBOL vmlinux 0x19dd331e mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x19e3cc91 scsi_execute +EXPORT_SYMBOL vmlinux 0x1a082f2c __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x1a1c5d67 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x1a37af38 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x1a37db8a __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x1a37f588 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1ab78e95 inode_init_once +EXPORT_SYMBOL vmlinux 0x1abed30e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1aef760d netdev_err +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b12ea23 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x1b13b34f netdev_change_features +EXPORT_SYMBOL vmlinux 0x1b1d8d8a file_remove_suid +EXPORT_SYMBOL vmlinux 0x1b3587e1 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1b36152a pci_set_power_state +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b99d1bc key_put +EXPORT_SYMBOL vmlinux 0x1b9a76b1 kill_fasync +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba414a1 netif_napi_add +EXPORT_SYMBOL vmlinux 0x1bbb69f8 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x1bc8585b idr_remove_all +EXPORT_SYMBOL vmlinux 0x1bccf1f3 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x1bd8ba08 sk_wait_data +EXPORT_SYMBOL vmlinux 0x1bdeeeac blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x1bdf2683 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x1bfbb411 get_phy_device +EXPORT_SYMBOL vmlinux 0x1c149758 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x1c24443d simple_dir_operations +EXPORT_SYMBOL vmlinux 0x1c41f9fc vfs_mkdir +EXPORT_SYMBOL vmlinux 0x1c6db0e6 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x1c7dab67 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x1c812cda read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x1c81a45c ip_setsockopt +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c942cfa udp_poll +EXPORT_SYMBOL vmlinux 0x1c95ad91 build_skb +EXPORT_SYMBOL vmlinux 0x1caffeb4 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x1cb82563 simple_readpage +EXPORT_SYMBOL vmlinux 0x1cbb213c mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cc7f90d sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x1cccde55 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x1d1d82d5 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1d1ead0a blk_free_tags +EXPORT_SYMBOL vmlinux 0x1d21d158 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0x1d28eb1c agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x1d42a6ca __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x1d437729 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x1d52fe2f __ip_dev_find +EXPORT_SYMBOL vmlinux 0x1d5cd8ae unregister_quota_format +EXPORT_SYMBOL vmlinux 0x1d6620b7 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x1daa681a __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dde0e63 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x1de24687 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e06b4b3 no_llseek +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e111202 dquot_release +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e2ce26d ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x1e454625 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e7771fa replace_mount_options +EXPORT_SYMBOL vmlinux 0x1e7c4cf0 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1e833ec3 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x1e8c83b0 arp_tbl +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ea17609 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ed4fd4a padata_stop +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f10dc49 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x1f11c88c proc_symlink +EXPORT_SYMBOL vmlinux 0x1f13989f ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x1f231822 pipe_to_file +EXPORT_SYMBOL vmlinux 0x1f3a3877 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x1f65e96e nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x1f6c6d9e phy_find_first +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1f8d8219 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x1fa4da3b agp_bridge +EXPORT_SYMBOL vmlinux 0x1fac52d3 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x1fb6d7da pci_get_device +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fc60972 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fecceec neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x200758b1 i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x200a1d28 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x200ff57b fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x201b9faf pci_set_mwi +EXPORT_SYMBOL vmlinux 0x202a2bab deactivate_super +EXPORT_SYMBOL vmlinux 0x203d44fe swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x20632f84 scsi_target_quiesce +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 0x20ae0365 try_module_get +EXPORT_SYMBOL vmlinux 0x20bf34d1 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c6192f intel_scu_ipc_ioread32 +EXPORT_SYMBOL vmlinux 0x20d4ac07 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x211e5266 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0x21236997 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x212b6ca1 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x215f9a25 current_task +EXPORT_SYMBOL vmlinux 0x21795a39 dquot_acquire +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x2191a811 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0x2199337a down_timeout +EXPORT_SYMBOL vmlinux 0x219b28c7 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21f54d69 kick_iocb +EXPORT_SYMBOL vmlinux 0x21f9038a x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x21fb443e _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x22118adc bio_split +EXPORT_SYMBOL vmlinux 0x2223dc3a md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x2228aa25 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x225f6282 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x2265b5b5 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x227efdad udp_sendmsg +EXPORT_SYMBOL vmlinux 0x229b04f2 scsi_print_sense +EXPORT_SYMBOL vmlinux 0x22a2e848 __register_binfmt +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22ea9d55 km_policy_notify +EXPORT_SYMBOL vmlinux 0x22f6d48b fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x22f6e678 simple_unlink +EXPORT_SYMBOL vmlinux 0x2308c2d2 rt6_lookup +EXPORT_SYMBOL vmlinux 0x230f88c2 i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x231f39b0 single_open +EXPORT_SYMBOL vmlinux 0x2327aa87 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x2328271d __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x23310d83 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x233254fb netdev_update_features +EXPORT_SYMBOL vmlinux 0x234b8616 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x235a6526 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x23723d9d mii_nway_restart +EXPORT_SYMBOL vmlinux 0x23a06e0f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23ad28ce do_splice_to +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x2410447f xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x2445d025 udp_prot +EXPORT_SYMBOL vmlinux 0x24500df5 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x24523ea5 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x24833ccf qdisc_reset +EXPORT_SYMBOL vmlinux 0x248d4fe1 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0x24c2c8de dev_crit +EXPORT_SYMBOL vmlinux 0x24c5a20c dev_get_by_index +EXPORT_SYMBOL vmlinux 0x24c77390 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x24d52bf2 dma_set_mask +EXPORT_SYMBOL vmlinux 0x24da1058 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x24e61bdf inc_nlink +EXPORT_SYMBOL vmlinux 0x24f169fc down_read_trylock +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x25007aa4 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2511771d x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x2538085a kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a75518 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x25b46636 pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25d2cdf4 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x25e06f29 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x25e49ef5 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x26241da9 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x2638c0f9 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x264d3c3d idr_get_next +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x268cc6a2 sys_close +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26e2e355 fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fb8aa3 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x2700a7a5 blk_rq_init +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x2722dadc gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27898038 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x278f3762 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x27914c42 dev_alert +EXPORT_SYMBOL vmlinux 0x27a0272a account_page_redirty +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27bd6a12 key_task_permission +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27ca2b04 pci_disable_device +EXPORT_SYMBOL vmlinux 0x27e11e16 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x27ef51a0 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x28097107 eth_type_trans +EXPORT_SYMBOL vmlinux 0x28147ae5 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2835d7d7 i2c_transfer +EXPORT_SYMBOL vmlinux 0x285e9fa9 tcp_check_req +EXPORT_SYMBOL vmlinux 0x2886720b __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28afce16 __blk_run_queue +EXPORT_SYMBOL vmlinux 0x28b715a6 isapnp_cfg_end +EXPORT_SYMBOL vmlinux 0x28ed72c3 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x28f15a07 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x292093f4 native_rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x29251ef4 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x29259861 pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x29368979 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0x294ba635 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x295a252a i2c_clients_command +EXPORT_SYMBOL vmlinux 0x295db419 x86_hyper +EXPORT_SYMBOL vmlinux 0x2984cc09 blk_put_queue +EXPORT_SYMBOL vmlinux 0x29a7b089 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x29fbc28c blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a17f1bd find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x2a1d6915 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3a75f6 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x2a5def2f intel_scu_ipc_iowrite32 +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2aa9bf96 sk_release_kernel +EXPORT_SYMBOL vmlinux 0x2abb2625 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x2ac3a82b input_free_device +EXPORT_SYMBOL vmlinux 0x2ad1c15b input_set_capability +EXPORT_SYMBOL vmlinux 0x2ad25a79 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x2ad58958 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x2b0505cf thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0e5890 da903x_query_status +EXPORT_SYMBOL vmlinux 0x2b0f6cc4 netdev_crit +EXPORT_SYMBOL vmlinux 0x2b13dc82 mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b51c3b7 scsi_put_command +EXPORT_SYMBOL vmlinux 0x2b61c97b register_framebuffer +EXPORT_SYMBOL vmlinux 0x2b64ea2b journal_force_commit +EXPORT_SYMBOL vmlinux 0x2b689814 seq_path +EXPORT_SYMBOL vmlinux 0x2b710ae4 read_dev_sector +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba434ee pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bc2ec5e nonseekable_open +EXPORT_SYMBOL vmlinux 0x2bc95bd4 memset +EXPORT_SYMBOL vmlinux 0x2bdf076f netif_rx_ni +EXPORT_SYMBOL vmlinux 0x2bf8d577 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c0a55e2 __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x2c13a4b5 sk_alloc +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c43d1c0 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x2c6be414 sync_inode +EXPORT_SYMBOL vmlinux 0x2c74d616 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2cbec142 generic_setxattr +EXPORT_SYMBOL vmlinux 0x2cd68dbb check_disk_change +EXPORT_SYMBOL vmlinux 0x2ceed07d inet_put_port +EXPORT_SYMBOL vmlinux 0x2d1137b7 put_page +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d24b89d vm_map_ram +EXPORT_SYMBOL vmlinux 0x2d37342e cpu_online_mask +EXPORT_SYMBOL vmlinux 0x2d382b16 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2d7327f9 input_unregister_device +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d96060e twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x2db1a378 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x2db50d19 blk_make_request +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9859d ip_fragment +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 0x2e0eb27b bio_pair_release +EXPORT_SYMBOL vmlinux 0x2e292883 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e3f4a7f inet_addr_type +EXPORT_SYMBOL vmlinux 0x2e594dd3 vmtruncate +EXPORT_SYMBOL vmlinux 0x2e60bace memcpy +EXPORT_SYMBOL vmlinux 0x2e6379d2 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x2ea7d424 gen_pool_free +EXPORT_SYMBOL vmlinux 0x2ec1d47d skb_insert +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 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f0ac3f9 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f44616b ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x2f51daff ppp_input_error +EXPORT_SYMBOL vmlinux 0x2f60dcf3 dev_driver_string +EXPORT_SYMBOL vmlinux 0x2f995829 do_SAK +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fccc50f tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x2fdfbb1d put_tty_driver +EXPORT_SYMBOL vmlinux 0x301d1821 mount_subtree +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x30299566 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x302b865b x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x302eed77 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x30491a83 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x30513cf6 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x30543221 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x305b7a3c dev_uc_flush +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x308c1356 notify_change +EXPORT_SYMBOL vmlinux 0x308dc51f tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x30928430 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b56529 blkdev_put +EXPORT_SYMBOL vmlinux 0x30bda0c6 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30ce3b55 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x30e6ad63 udp_proc_register +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x310176d3 dev_mc_add +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x311fbf6d __free_pages +EXPORT_SYMBOL vmlinux 0x31290f8f inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x31328e8f inet_frag_kill +EXPORT_SYMBOL vmlinux 0x3134a249 seq_release +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x316e640b sock_no_listen +EXPORT_SYMBOL vmlinux 0x317138f0 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31944a28 dma_ops +EXPORT_SYMBOL vmlinux 0x3198a9b5 dmam_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x31b55aa2 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x31b7e24b framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x31c0686f xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x31c6e05d xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x31cc0fc5 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x31d46168 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x31e0d0f0 misc_register +EXPORT_SYMBOL vmlinux 0x31e0fa41 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31e8160a invalidate_partition +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f16dce dma_mark_declared_memory_occupied +EXPORT_SYMBOL vmlinux 0x322279a2 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x323e4101 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x325f5a43 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x32841270 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x329e9106 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x32a0284d cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x32c2931f request_firmware +EXPORT_SYMBOL vmlinux 0x32cde59b tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x32cea339 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x32dbcf3e neigh_table_clear +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x32f7b125 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x32f87022 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x3306e963 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x3310f962 set_pages_uc +EXPORT_SYMBOL vmlinux 0x332a447d poll_freewait +EXPORT_SYMBOL vmlinux 0x33558006 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x33569645 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x335eefe4 set_create_files_as +EXPORT_SYMBOL vmlinux 0x335f43a5 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x33604297 generic_fillattr +EXPORT_SYMBOL vmlinux 0x3360830d eth_header +EXPORT_SYMBOL vmlinux 0x33760de8 blk_put_request +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33858571 filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x33aff57f pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33ec6471 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x342e32e3 ida_simple_get +EXPORT_SYMBOL vmlinux 0x342f60fe apm_info +EXPORT_SYMBOL vmlinux 0x3437d4a9 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x3467b0ba unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x346d7320 set_security_override +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34839232 tc_classify +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349b435d get_super +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34b207b5 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x34b4ac1b kmap_high +EXPORT_SYMBOL vmlinux 0x34d47941 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x34de07d9 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x34ea899c netdev_printk +EXPORT_SYMBOL vmlinux 0x34ebbc5e ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x35301894 inode_permission +EXPORT_SYMBOL vmlinux 0x353eed92 __frontswap_store +EXPORT_SYMBOL vmlinux 0x35445d53 kset_register +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3580d491 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x358f9af1 inet_accept +EXPORT_SYMBOL vmlinux 0x35a03cd2 acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35b86f2a generic_setlease +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35dc495d dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x35e0cb10 kthread_bind +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x360fbbf6 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x362185d2 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x362ef408 _copy_from_user +EXPORT_SYMBOL vmlinux 0x3630de93 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x363b4476 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x3658f412 generic_file_open +EXPORT_SYMBOL vmlinux 0x366e6bb9 get_io_context +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x36a66622 bio_free +EXPORT_SYMBOL vmlinux 0x36aad357 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x36b472fe dev_uc_sync +EXPORT_SYMBOL vmlinux 0x36c6af51 intel_scu_ipc_iowrite8 +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f34e2e phy_connect_direct +EXPORT_SYMBOL vmlinux 0x36f680cb I_BDEV +EXPORT_SYMBOL vmlinux 0x3705445b neigh_parms_release +EXPORT_SYMBOL vmlinux 0x370fd791 unregister_binfmt +EXPORT_SYMBOL vmlinux 0x37361942 is_container_init +EXPORT_SYMBOL vmlinux 0x373ab90b iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x3746db32 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x374d8c1b tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x374e4f04 scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x374fe40c cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x3754f46d acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0x37661c17 padata_alloc +EXPORT_SYMBOL vmlinux 0x377530c9 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x37775d97 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x3794aee9 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x37955106 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x37ae4743 pnp_possible_config +EXPORT_SYMBOL vmlinux 0x37b4f338 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37da3aa1 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37eaa2d0 d_move +EXPORT_SYMBOL vmlinux 0x37eb79ef blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37ff4c06 copy_from_user_overflow +EXPORT_SYMBOL vmlinux 0x38045c45 iget_failed +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 0x383efc8a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x38407090 pci_pme_active +EXPORT_SYMBOL vmlinux 0x3859cd03 journal_update_format +EXPORT_SYMBOL vmlinux 0x386779b1 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388799f6 unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x3893492b pipe_lock +EXPORT_SYMBOL vmlinux 0x38a0ac2e pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x39074a0d bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3908e400 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x3937325a journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x393f289b serio_reconnect +EXPORT_SYMBOL vmlinux 0x3945ab46 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x394b39bd add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x395c7095 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x397161b7 vfs_getattr +EXPORT_SYMBOL vmlinux 0x3976a941 inode_init_owner +EXPORT_SYMBOL vmlinux 0x397aa334 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3988c786 cont_write_begin +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39aacb41 security_path_chown +EXPORT_SYMBOL vmlinux 0x39b2a5cc gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x39bb8c8b sock_no_mmap +EXPORT_SYMBOL vmlinux 0x39c773ad pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x39ca2d68 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x39d86587 tty_throttle +EXPORT_SYMBOL vmlinux 0x39deba11 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x39e00e86 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x39f2f6df led_blink_set +EXPORT_SYMBOL vmlinux 0x39f72758 udp_disconnect +EXPORT_SYMBOL vmlinux 0x3a013b7d remove_wait_queue +EXPORT_SYMBOL vmlinux 0x3a037f03 __pagevec_release +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa0a701 d_validate +EXPORT_SYMBOL vmlinux 0x3aa21194 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3abc319f dquot_commit +EXPORT_SYMBOL vmlinux 0x3b0736dc release_sock +EXPORT_SYMBOL vmlinux 0x3b0a6dfc jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3b2e5cdf journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b35dffe journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x3b3d68ce tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x3b72fc98 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x3b927999 pci_release_regions +EXPORT_SYMBOL vmlinux 0x3bb2d799 fget +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bf8481d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x3c2caead seq_bitmap_list +EXPORT_SYMBOL vmlinux 0x3c31bc76 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x3c3233a3 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x3c39dd2b scm_fp_dup +EXPORT_SYMBOL vmlinux 0x3c43f173 key_alloc +EXPORT_SYMBOL vmlinux 0x3c761653 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c953af3 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9f3695 journal_destroy +EXPORT_SYMBOL vmlinux 0x3cb3931b sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x3cc91957 dquot_enable +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d041361 dev_warn +EXPORT_SYMBOL vmlinux 0x3d07731c nla_append +EXPORT_SYMBOL vmlinux 0x3d23bcd1 bdevname +EXPORT_SYMBOL vmlinux 0x3d796346 __f_setown +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d8a90e6 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3d8b36d4 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d9fbe85 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3da4e394 input_register_handler +EXPORT_SYMBOL vmlinux 0x3dcafeec padata_add_cpu +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dcc4f4b tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x3dd96123 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x3dec266a ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e0ef5ad jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e335d6f inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x3e3ebbc6 get_disk +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4a8d05 ht_create_irq +EXPORT_SYMBOL vmlinux 0x3e5172d9 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x3e52987a bio_add_page +EXPORT_SYMBOL vmlinux 0x3e66aeb0 block_write_end +EXPORT_SYMBOL vmlinux 0x3e7d1757 vga_put +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e962b1c scsi_scan_target +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ec593a4 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x3ecb60f0 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x3ecc97bf dec_zone_page_state +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 0x3f357026 lro_flush_all +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f81ddad seq_read +EXPORT_SYMBOL vmlinux 0x3f9f868f __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x3fa58ef8 wait_for_completion +EXPORT_SYMBOL vmlinux 0x3fabbe74 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x3fdbe2d3 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x3fe2f3f6 journal_init_inode +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4073c6c7 pci_enable_obff +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 0x409fa6a2 wait_on_page_bit +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 0x40b09f9b proto_register +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40d6bd13 unregister_nls +EXPORT_SYMBOL vmlinux 0x411ae61c pci_disable_msi +EXPORT_SYMBOL vmlinux 0x412f3323 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x413f6063 commit_creds +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4166b739 pnp_device_detach +EXPORT_SYMBOL vmlinux 0x416adfdb padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419ee6e8 idr_pre_get +EXPORT_SYMBOL vmlinux 0x41a2d2d4 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x41bb6e9e scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x41bd2e9d agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x41becc85 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x41dee855 d_alloc +EXPORT_SYMBOL vmlinux 0x41e65bb0 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x41ef57e2 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x41fdad6b find_or_create_page +EXPORT_SYMBOL vmlinux 0x42052056 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x4205d114 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x421dd4d9 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x421f1ff5 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x421fd1fd dm_register_target +EXPORT_SYMBOL vmlinux 0x42289a78 input_grab_device +EXPORT_SYMBOL vmlinux 0x4239de63 ida_init +EXPORT_SYMBOL vmlinux 0x42426176 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4292364c schedule +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x429d987d generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x42be1b11 is_bad_inode +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42d89fee dquot_quota_off +EXPORT_SYMBOL vmlinux 0x42da990e dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x42fbecfc __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x431e6154 kernel_listen +EXPORT_SYMBOL vmlinux 0x433269dd dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x43385ad9 acpi_pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435e8467 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x436a08e7 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437aca37 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43bc9720 mddev_congested +EXPORT_SYMBOL vmlinux 0x43d3a2ff mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x43e6e673 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x440a4045 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x440b3f50 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x442970f9 pci_release_region +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x4439875e sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444964d1 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x445746df skb_pull +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44ceb2d0 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x44dc6502 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44efb9aa fb_validate_mode +EXPORT_SYMBOL vmlinux 0x44f0aa62 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x44f1606d down_trylock +EXPORT_SYMBOL vmlinux 0x44f30f04 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450be17a set_groups +EXPORT_SYMBOL vmlinux 0x4510be5e skb_checksum_help +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x45435d9f vfs_link +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x456bec47 net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x4578661a _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45aa36bc pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x45af4117 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45d54222 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x45d643e8 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x45ecf0f5 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x45f6a7f4 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x4609b151 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x46111728 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x464e5720 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4670fbf5 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x46728553 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4680b835 icmp_send +EXPORT_SYMBOL vmlinux 0x4690d588 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x46a156d2 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x46a2c860 skb_append +EXPORT_SYMBOL vmlinux 0x46c421f3 bio_put +EXPORT_SYMBOL vmlinux 0x46d13f86 mmc_free_host +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x470a0d59 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x4734f1c1 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x474509c9 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x475ecea2 d_lookup +EXPORT_SYMBOL vmlinux 0x475ee680 lookup_hash +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x477bbc3f xfrm_register_mode +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 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47b86893 drop_nlink +EXPORT_SYMBOL vmlinux 0x47bb2975 elevator_exit +EXPORT_SYMBOL vmlinux 0x47bb7ca3 bio_map_user +EXPORT_SYMBOL vmlinux 0x47c7b0d2 cpu_number +EXPORT_SYMBOL vmlinux 0x47dfef8b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x47f9fed0 kill_litter_super +EXPORT_SYMBOL vmlinux 0x481751c4 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x483902b5 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x4842d76f unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x484f1820 locks_free_lock +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x485abd3c dev_emerg +EXPORT_SYMBOL vmlinux 0x486d2f29 dqstats +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x487f32ed napi_frags_finish +EXPORT_SYMBOL vmlinux 0x4885c763 input_inject_event +EXPORT_SYMBOL vmlinux 0x48928120 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x48a771c5 cpu_core_map +EXPORT_SYMBOL vmlinux 0x48c94be5 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x48cced36 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x48f41a9f inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x490134f2 elv_abort_queue +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4907a6c7 serio_rescan +EXPORT_SYMBOL vmlinux 0x4933edaf generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4962001c kmem_cache_size +EXPORT_SYMBOL vmlinux 0x496ac108 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x496fb527 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c99fbb security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x49e7afd1 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x49f7898c max8925_reg_write +EXPORT_SYMBOL vmlinux 0x49f9703b inet_ioctl +EXPORT_SYMBOL vmlinux 0x4a05a3a8 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x4a0d25a7 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x4a18c487 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a3b69f8 file_update_time +EXPORT_SYMBOL vmlinux 0x4a52ed19 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x4a646cd0 pci_dev_put +EXPORT_SYMBOL vmlinux 0x4a762494 padata_do_serial +EXPORT_SYMBOL vmlinux 0x4a8b7f68 bdi_init +EXPORT_SYMBOL vmlinux 0x4a92d5d2 set_pages_x +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b088a1c __scsi_put_command +EXPORT_SYMBOL vmlinux 0x4b1e5e59 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b4c5953 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x4b52a4a7 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x4b548b51 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x4b5a5a53 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x4b5d653a sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b666980 unlock_rename +EXPORT_SYMBOL vmlinux 0x4b6c1d59 sock_create_lite +EXPORT_SYMBOL vmlinux 0x4b73aa26 inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x4b8512b5 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x4bbe7ef3 fb_pan_display +EXPORT_SYMBOL vmlinux 0x4bc4d5a5 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0x4bf7b27d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0x4c0987e6 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x4c0a55e5 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x4c0ce03b clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c13e07c tcf_register_action +EXPORT_SYMBOL vmlinux 0x4c21cf2d scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c67760a sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x4c866eae ppp_channel_index +EXPORT_SYMBOL vmlinux 0x4c8debb8 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x4caea610 devm_iounmap +EXPORT_SYMBOL vmlinux 0x4cb0392e __sock_create +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4ccde762 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4cdd4852 softnet_data +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4d1431a5 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x4d28b129 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3ee8d0 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d481937 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x4d615c3b agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x4d66a1f8 pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x4d7be322 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x4d7d11c0 bio_copy_user +EXPORT_SYMBOL vmlinux 0x4d94021a mii_link_ok +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9a9d5d sock_wfree +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfdd7cd security_path_truncate +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e10b752 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x4e21999c acpi_get_child +EXPORT_SYMBOL vmlinux 0x4e29c7cb idr_for_each +EXPORT_SYMBOL vmlinux 0x4e2eb762 get_super_thawed +EXPORT_SYMBOL vmlinux 0x4e31e268 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e3cdef2 scsi_remove_target +EXPORT_SYMBOL vmlinux 0x4e577ec5 ihold +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7773b0 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x4e79cdb5 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e831bf1 bdev_read_only +EXPORT_SYMBOL vmlinux 0x4e94cd6b max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4eb11f1f seq_bitmap +EXPORT_SYMBOL vmlinux 0x4eba27b6 spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x4ec4a704 dqput +EXPORT_SYMBOL vmlinux 0x4ec5e741 __inet6_hash +EXPORT_SYMBOL vmlinux 0x4ec815c3 abort_creds +EXPORT_SYMBOL vmlinux 0x4eeaccab generic_write_sync +EXPORT_SYMBOL vmlinux 0x4eee6b40 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f2cb05d blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f476e96 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f783f30 acpi_read +EXPORT_SYMBOL vmlinux 0x4f921be4 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x4f93441b qdisc_destroy +EXPORT_SYMBOL vmlinux 0x4f9a12c6 nf_log_packet +EXPORT_SYMBOL vmlinux 0x4fb127f6 bio_alloc +EXPORT_SYMBOL vmlinux 0x4fb37570 skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fdf2834 uart_register_driver +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x502b4e54 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x5046ab94 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x505c6538 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x505dd1df jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x506bdfda __breadahead +EXPORT_SYMBOL vmlinux 0x5084b346 simple_setattr +EXPORT_SYMBOL vmlinux 0x50eccf9e tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x50eedeb8 printk +EXPORT_SYMBOL vmlinux 0x51035a73 cdrom_release +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5152e605 memcmp +EXPORT_SYMBOL vmlinux 0x51611843 vmap +EXPORT_SYMBOL vmlinux 0x51679cae skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x5169b662 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x516f7feb sk_run_filter +EXPORT_SYMBOL vmlinux 0x51731b44 register_gifconf +EXPORT_SYMBOL vmlinux 0x5186518f profile_pc +EXPORT_SYMBOL vmlinux 0x51910b28 inet6_release +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51d816e4 seq_write +EXPORT_SYMBOL vmlinux 0x51d92855 dquot_destroy +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +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 0x520a5b01 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x521d2344 __devm_release_region +EXPORT_SYMBOL vmlinux 0x523d16e0 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x52423a0c ida_pre_get +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x526a8b04 generic_show_options +EXPORT_SYMBOL vmlinux 0x526a9929 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x526d4d5b max8998_read_reg +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52cf4815 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52dec5be max8925_set_bits +EXPORT_SYMBOL vmlinux 0x52def3aa pci_remove_bus +EXPORT_SYMBOL vmlinux 0x52ea32be mdiobus_read +EXPORT_SYMBOL vmlinux 0x530b1e4c rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x53445472 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x534b3af6 clear_inode +EXPORT_SYMBOL vmlinux 0x53597354 kern_path_create +EXPORT_SYMBOL vmlinux 0x53602505 devm_ioremap +EXPORT_SYMBOL vmlinux 0x536549ca kernel_sendpage +EXPORT_SYMBOL vmlinux 0x5379e1db d_set_d_op +EXPORT_SYMBOL vmlinux 0x537d5132 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5383f34b _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53e511b3 intel_gtt_insert_pages +EXPORT_SYMBOL vmlinux 0x53f2ef10 wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x53f58228 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x53fee3e7 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x541467af rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x54152e04 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x54222d1c elv_rb_find +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5471ee95 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x548dc58c generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x54935666 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54c9da5a inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x55124e6e skb_clone +EXPORT_SYMBOL vmlinux 0x5519a515 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x5533b3b5 security_inode_permission +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55515575 dget_parent +EXPORT_SYMBOL vmlinux 0x555bc1ce ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x556ec645 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x5572f591 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x5583dddc nf_setsockopt +EXPORT_SYMBOL vmlinux 0x5585601f i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x558ea749 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x55915884 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x5591767e vc_resize +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55b6d30d dm_io +EXPORT_SYMBOL vmlinux 0x560c6a38 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x56114d83 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5632b308 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56472b40 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x56512096 alloc_disk +EXPORT_SYMBOL vmlinux 0x56729f8e security_inode_init_security +EXPORT_SYMBOL vmlinux 0x5676a3e5 intel_scu_ipc_ioread8 +EXPORT_SYMBOL vmlinux 0x56986d38 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x5699ae02 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x56a1a9b4 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x56a2ac3e usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x56ac1307 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d7b7b5 __d_drop +EXPORT_SYMBOL vmlinux 0x56efa250 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x5705088a __vmalloc +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x572f8886 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x5737f3bf set_blocksize +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575828d5 dma_declare_coherent_memory +EXPORT_SYMBOL vmlinux 0x575af70c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5772a7c9 blk_get_queue +EXPORT_SYMBOL vmlinux 0x579fbcd2 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x57aba87c dcb_getapp +EXPORT_SYMBOL vmlinux 0x57cf2948 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x580199b1 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x580ffb63 d_genocide +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586103be acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x588fa1ba vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0x5892d54c acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x58aec1ed sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x58bd61b5 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x58c93d86 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x58d2d53d gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x58e9f43f fasync_helper +EXPORT_SYMBOL vmlinux 0x58fef6f8 ist_info +EXPORT_SYMBOL vmlinux 0x5907ed2e phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x592b59af acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x5963927a sget +EXPORT_SYMBOL vmlinux 0x5971b0fe pci_map_rom +EXPORT_SYMBOL vmlinux 0x5979700b vfs_path_lookup +EXPORT_SYMBOL vmlinux 0x5984e6a2 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x59851d1a jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x599b7911 dma_release_from_coherent +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59c1a768 ip6_xmit +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59dabd3d sock_no_getname +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a18c678 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x5a2aa62e __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a672d0e max8925_reg_read +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a8823d1 __getblk +EXPORT_SYMBOL vmlinux 0x5aa65678 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x5aa703bc ipv4_specific +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5ac5c0ba sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0x5ad0fa32 vga_client_register +EXPORT_SYMBOL vmlinux 0x5aec6f81 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x5af45bcb first_ec +EXPORT_SYMBOL vmlinux 0x5af67b23 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x5b0ebefb rtnl_unicast +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b21061b pci_match_id +EXPORT_SYMBOL vmlinux 0x5b2583d5 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bab1a10 mmc_register_driver +EXPORT_SYMBOL vmlinux 0x5bafe212 fb_find_mode +EXPORT_SYMBOL vmlinux 0x5bb472a3 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x5bd4ce75 udp_seq_open +EXPORT_SYMBOL vmlinux 0x5bd4da65 napi_gro_receive +EXPORT_SYMBOL vmlinux 0x5c2d5294 md_write_end +EXPORT_SYMBOL vmlinux 0x5c378de5 vfs_statfs +EXPORT_SYMBOL vmlinux 0x5c39aab1 skb_seq_read +EXPORT_SYMBOL vmlinux 0x5c3d56e5 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c45dd2c pci_read_vpd +EXPORT_SYMBOL vmlinux 0x5c5a59d9 inet_listen +EXPORT_SYMBOL vmlinux 0x5c87b96e set_nlink +EXPORT_SYMBOL vmlinux 0x5cbd76fd pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x5cca66ee vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x5cdeca49 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x5ce15ee5 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d102d45 user_revoke +EXPORT_SYMBOL vmlinux 0x5d138f30 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x5d4bddf2 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d61df13 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x5d6f1c29 blkdev_get +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d83b1f0 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x5d935974 page_readlink +EXPORT_SYMBOL vmlinux 0x5d93a026 sock_register +EXPORT_SYMBOL vmlinux 0x5d984767 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x5db34e40 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x5dc0dfe5 generic_write_end +EXPORT_SYMBOL vmlinux 0x5dc574c3 nobh_write_end +EXPORT_SYMBOL vmlinux 0x5dce6b75 complete_and_exit +EXPORT_SYMBOL vmlinux 0x5dcee1b8 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x5dedaced kmem_cache_create +EXPORT_SYMBOL vmlinux 0x5e0614e3 generic_read_dir +EXPORT_SYMBOL vmlinux 0x5e2dc318 input_event +EXPORT_SYMBOL vmlinux 0x5e47a3e7 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e7609e5 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x5e85c687 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x5e88ade5 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5ea49b30 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x5eaa7759 md_integrity_register +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef37e16 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f09a1af blk_start_request +EXPORT_SYMBOL vmlinux 0x5f1a4ccf intel_scu_ipc_update_register +EXPORT_SYMBOL vmlinux 0x5f27544a mempool_destroy +EXPORT_SYMBOL vmlinux 0x5f38cae7 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f43dff3 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x5f4703be pcim_iomap +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fc9077a scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x5fcbbf39 sg_miter_start +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 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x60201fe1 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x605eb6b9 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60ad72df skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x60b2e38a rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x60bad81a netif_rx +EXPORT_SYMBOL vmlinux 0x60dc1b2e blk_execute_rq +EXPORT_SYMBOL vmlinux 0x60dcc8a8 dev_addr_add +EXPORT_SYMBOL vmlinux 0x61116d6f kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x61209bdd fb_class +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x6147b9c2 journal_wipe +EXPORT_SYMBOL vmlinux 0x614f0a7c textsearch_destroy +EXPORT_SYMBOL vmlinux 0x615001a2 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x61528b43 kobject_get +EXPORT_SYMBOL vmlinux 0x61536865 idr_destroy +EXPORT_SYMBOL vmlinux 0x616c4c83 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x619b187b add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x61b5ade0 down_write +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61be844b security_path_mknod +EXPORT_SYMBOL vmlinux 0x61dd588e crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x61eafadc neigh_update +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x6207899a journal_check_used_features +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 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6279df13 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x628081a0 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x629e3c7d agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x62b5571c lock_super +EXPORT_SYMBOL vmlinux 0x62c90dcb shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x62cb4467 skb_push +EXPORT_SYMBOL vmlinux 0x62cb4cee interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0x62d3cf79 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x62e209bc cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x62e8451e tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x62ee8d85 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x62fe28ed pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x63207d2a load_nls +EXPORT_SYMBOL vmlinux 0x63274ff2 nf_afinfo +EXPORT_SYMBOL vmlinux 0x632dcec8 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x6339a8bc mutex_unlock +EXPORT_SYMBOL vmlinux 0x6346789f consume_skb +EXPORT_SYMBOL vmlinux 0x63656131 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x639c353a mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x63a4041f __seq_open_private +EXPORT_SYMBOL vmlinux 0x63ac5ce3 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x63d7c010 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x63e82894 dquot_resume +EXPORT_SYMBOL vmlinux 0x63eb782e register_key_type +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63efc738 elevator_change +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x642621e1 force_sig +EXPORT_SYMBOL vmlinux 0x645832b5 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x645f7018 __lock_buffer +EXPORT_SYMBOL vmlinux 0x646de623 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x646e8726 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64baf3db dev_set_group +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x650f565b __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x65125138 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x6515d69c console_start +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x651dd2a1 touch_atime +EXPORT_SYMBOL vmlinux 0x65220759 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x6527f823 generic_writepages +EXPORT_SYMBOL vmlinux 0x652b3aed sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65572925 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x6560f415 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0x6565d33f scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x656a8da7 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x65735e72 lock_rename +EXPORT_SYMBOL vmlinux 0x65778747 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x657879ce __init_rwsem +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x65935ab2 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x65a295bb atomic64_xchg_cx8 +EXPORT_SYMBOL vmlinux 0x65a37537 seq_lseek +EXPORT_SYMBOL vmlinux 0x65ccdc08 pci_get_slot +EXPORT_SYMBOL vmlinux 0x65d8d635 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e429e9 journal_start +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f4ca8f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x65f7cfb7 uart_match_port +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6622c994 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x66355efc vprintk +EXPORT_SYMBOL vmlinux 0x66490322 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66bcc981 release_firmware +EXPORT_SYMBOL vmlinux 0x66e86702 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x66eeabd3 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x673cdf5e poll_initwait +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x67552534 sock_no_poll +EXPORT_SYMBOL vmlinux 0x6765582d d_path +EXPORT_SYMBOL vmlinux 0x676c21b6 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0x678038d6 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x678041e7 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67d71a44 vm_event_states +EXPORT_SYMBOL vmlinux 0x67dcffb7 lg_lock_init +EXPORT_SYMBOL vmlinux 0x67e31e93 eth_header_parse +EXPORT_SYMBOL vmlinux 0x67f7403e _raw_spin_lock +EXPORT_SYMBOL vmlinux 0x67fc0737 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x68105edd blk_requeue_request +EXPORT_SYMBOL vmlinux 0x6812d42a kfree_skb +EXPORT_SYMBOL vmlinux 0x68192c9d blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x6827030b tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0x682d0963 simple_write_begin +EXPORT_SYMBOL vmlinux 0x68321b45 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x683296cc end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x683fbe96 ps2_end_command +EXPORT_SYMBOL vmlinux 0x68544d33 input_register_device +EXPORT_SYMBOL vmlinux 0x68675112 clear_nlink +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68dfc59f __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e79ccf mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x68ec605b xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x6901c92a ps2_init +EXPORT_SYMBOL vmlinux 0x6903c8d8 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x690b17e2 search_binary_handler +EXPORT_SYMBOL vmlinux 0x691d88e2 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x691dea89 seq_release_private +EXPORT_SYMBOL vmlinux 0x693d6742 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x6946ab94 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x695a1e60 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x6965964c __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x699756dc serial8250_register_port +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69ae1493 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d5f617 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x69d6e079 pci_iounmap +EXPORT_SYMBOL vmlinux 0x69d88849 netdev_emerg +EXPORT_SYMBOL vmlinux 0x69d9e138 nf_log_register +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a0dccad scsi_device_resume +EXPORT_SYMBOL vmlinux 0x6a24effe dm_unregister_target +EXPORT_SYMBOL vmlinux 0x6a27bfce csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x6a2859b9 submit_bio +EXPORT_SYMBOL vmlinux 0x6a3dd4ee scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x6a48e16b percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x6a567332 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a7c3bee mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x6a7ce69b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x6a89d48b ll_rw_block +EXPORT_SYMBOL vmlinux 0x6ab327fc kunmap_high +EXPORT_SYMBOL vmlinux 0x6abc2139 bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6ad86271 inet_bind +EXPORT_SYMBOL vmlinux 0x6adabea6 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6afe3f25 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2b5e86 new_inode +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b3badc1 sock_wake_async +EXPORT_SYMBOL vmlinux 0x6b3ecd1c simple_transaction_read +EXPORT_SYMBOL vmlinux 0x6b615b02 input_open_device +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b795975 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6bb35fbc pci_select_bars +EXPORT_SYMBOL vmlinux 0x6bbafe33 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x6bbfe38f dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bd93a46 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c049c98 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c2b1136 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x6c2e3320 strncmp +EXPORT_SYMBOL vmlinux 0x6c32341b netlink_ack +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c41f6af __scsi_add_device +EXPORT_SYMBOL vmlinux 0x6c4b6c72 kill_bdev +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c62a60f ab3100_event_register +EXPORT_SYMBOL vmlinux 0x6c6f111e input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6cb898d2 should_remove_suid +EXPORT_SYMBOL vmlinux 0x6cb9693b unlock_super +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cfd2f81 send_sig_info +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d09e3fc generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x6d0ea8b5 find_inode_number +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 0x6d5bfec4 x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d704cf9 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6dcaaae6 setup_new_exec +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6dfa3143 dev_add_pack +EXPORT_SYMBOL vmlinux 0x6e12513d scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x6e14626d __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x6e248b59 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x6e3a5217 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x6e51ac2e _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x6e65f2dc rtc_lock +EXPORT_SYMBOL vmlinux 0x6e707e3f start_tty +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e815550 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x6e9b7f4f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea696c1 tty_kref_put +EXPORT_SYMBOL vmlinux 0x6eb8de10 set_bh_page +EXPORT_SYMBOL vmlinux 0x6ef0f77f tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0x6ef6ed03 dm_get_device +EXPORT_SYMBOL vmlinux 0x6efe626f serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0x6f049485 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x6f0f02d4 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2adb09 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x6f33d5f9 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x6f3c9c34 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0x6f3db35f udp_ioctl +EXPORT_SYMBOL vmlinux 0x6f4c6b71 lg_local_unlock +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f627f48 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x6f66ac7a pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x6f765e87 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x6f829e31 pci_enable_ido +EXPORT_SYMBOL vmlinux 0x6f871b70 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x6f8e6dfa mii_check_link +EXPORT_SYMBOL vmlinux 0x6fc0d539 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x6fc2d0a4 panic_notifier_list +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd099b3 scsi_register +EXPORT_SYMBOL vmlinux 0x6fdfbac0 phy_register_fixup +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x702d34e9 tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7061c95a journal_get_write_access +EXPORT_SYMBOL vmlinux 0x706cfbce neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x7096271d register_netdev +EXPORT_SYMBOL vmlinux 0x7096640d tcf_hash_search +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70be3a0b pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70d1f8f3 strncat +EXPORT_SYMBOL vmlinux 0x70d6860d vfs_mknod +EXPORT_SYMBOL vmlinux 0x70d8ab82 acpi_acquire_global_lock +EXPORT_SYMBOL vmlinux 0x70d9d2a0 padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x70e70596 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x70ec488f ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x70fa85e3 __dst_free +EXPORT_SYMBOL vmlinux 0x7114a71f bit_waitqueue +EXPORT_SYMBOL vmlinux 0x7116a196 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x7117ebb3 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x7118ee21 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71321b2b blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x7156feee scsi_free_command +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x71a19fc0 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71b3bda1 mdiobus_write +EXPORT_SYMBOL vmlinux 0x722df4fa textsearch_unregister +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x723edd3b mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x72615f2c swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x7266e885 find_vma +EXPORT_SYMBOL vmlinux 0x7287cd7d tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x728e77d9 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x7298e9ae fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x729fa0fc pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x72aa704f __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x72b0a36c kobject_set_name +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72d2edee bdi_unregister +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72df2f2a up_read +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x7316b2b8 devm_gpio_request +EXPORT_SYMBOL vmlinux 0x731b3b60 mount_bdev +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x736c60b9 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x738803e6 strnlen +EXPORT_SYMBOL vmlinux 0x73a19a79 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x73c761d3 serio_close +EXPORT_SYMBOL vmlinux 0x73cc6773 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x73d8b892 skb_put +EXPORT_SYMBOL vmlinux 0x73d9cc32 unload_nls +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x73f11212 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x73fca793 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x740395e4 register_md_personality +EXPORT_SYMBOL vmlinux 0x74061068 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x7406f5c5 kobject_put +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x740a7cc2 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus +EXPORT_SYMBOL vmlinux 0x741a6e22 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x7437cfc3 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x743b4ae3 atomic64_inc_not_zero_cx8 +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74745348 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x74755d1c journal_ack_err +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749f4165 irq_stat +EXPORT_SYMBOL vmlinux 0x74adba0f input_allocate_device +EXPORT_SYMBOL vmlinux 0x74bfafa7 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d80856 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x74de671e pci_disable_msix +EXPORT_SYMBOL vmlinux 0x74e000f2 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74eb8b57 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0x74fbabae kthread_stop +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x75271716 save_processor_state +EXPORT_SYMBOL vmlinux 0x7531e3dc acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754e45f9 dma_alloc_from_coherent +EXPORT_SYMBOL vmlinux 0x7550d587 page_symlink +EXPORT_SYMBOL vmlinux 0x7556317b pci_choose_state +EXPORT_SYMBOL vmlinux 0x7579529a phy_connect +EXPORT_SYMBOL vmlinux 0x757d931a truncate_setsize +EXPORT_SYMBOL vmlinux 0x7581989c km_report +EXPORT_SYMBOL vmlinux 0x75937dab free_netdev +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75b38131 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x75b4c4fd xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x75bb675a finish_wait +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75cda709 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x75d21809 vprintk_emit +EXPORT_SYMBOL vmlinux 0x75da1a42 alloc_fcdev +EXPORT_SYMBOL vmlinux 0x75dd9297 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x75e01f90 km_policy_expired +EXPORT_SYMBOL vmlinux 0x75fc819d devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x762add85 atomic64_inc_return_cx8 +EXPORT_SYMBOL vmlinux 0x76435bcc agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x76439a4f __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x7649d218 d_instantiate +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e3f67 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x769e06d7 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x76b25823 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x76babc8f dev_get_stats +EXPORT_SYMBOL vmlinux 0x76bd6958 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76bf98e1 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x76d09fcc mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x770a0036 isapnp_cfg_begin +EXPORT_SYMBOL vmlinux 0x771cc554 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x772f9eec __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x774d4dd6 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0x7763473f blk_end_request_all +EXPORT_SYMBOL vmlinux 0x777539b7 cpu_info +EXPORT_SYMBOL vmlinux 0x778a87e8 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77aa6d4d bio_integrity_free +EXPORT_SYMBOL vmlinux 0x77aea999 km_state_expired +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d36f75 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x77d66092 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x780618a5 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x7807eace kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x7812ea1b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x781416e3 revert_creds +EXPORT_SYMBOL vmlinux 0x78189ead agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78a06084 mb_cache_create +EXPORT_SYMBOL vmlinux 0x78a33c4d scsi_device_get +EXPORT_SYMBOL vmlinux 0x78bb2011 dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0x78db38d3 proc_dointvec +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79086a6f mpage_readpages +EXPORT_SYMBOL vmlinux 0x79406f62 dst_discard +EXPORT_SYMBOL vmlinux 0x7949da53 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x79544325 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x7968f1a6 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7987d1d9 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79b73051 dev_activate +EXPORT_SYMBOL vmlinux 0x79bf1026 scsi_register_interface +EXPORT_SYMBOL vmlinux 0x79d70ffa register_qdisc +EXPORT_SYMBOL vmlinux 0x79db2bde generic_delete_inode +EXPORT_SYMBOL vmlinux 0x79de04e6 blk_complete_request +EXPORT_SYMBOL vmlinux 0x7a0bc895 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x7a0ce71e journal_clear_err +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4128aa dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a4650a6 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0x7a4941e5 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x7a96efac input_unregister_handler +EXPORT_SYMBOL vmlinux 0x7a9bf88d udplite_table +EXPORT_SYMBOL vmlinux 0x7aa62c14 __lru_cache_add +EXPORT_SYMBOL vmlinux 0x7aa81449 tcf_hash_release +EXPORT_SYMBOL vmlinux 0x7ab14183 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac8dbfd blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x7adc7801 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b0c84c4 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7b134ddf acpi_get_name +EXPORT_SYMBOL vmlinux 0x7b1a1911 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x7b267b55 netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x7b2fbb32 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b56bd05 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x7b5b7039 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b717476 __scm_destroy +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7ba2806b ps2_drain +EXPORT_SYMBOL vmlinux 0x7bc2131d ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x7bd0fbfd tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x7bf41ce1 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x7c00c42c setattr_copy +EXPORT_SYMBOL vmlinux 0x7c1031d2 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c6fec17 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c96ca8f security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cce5b6e generic_write_checks +EXPORT_SYMBOL vmlinux 0x7ce1035e blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x7cf23bda genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d6a149c ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x7d90a6f4 tty_set_operations +EXPORT_SYMBOL vmlinux 0x7db2d050 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dbc4ba9 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x7dcd16a0 __nla_reserve +EXPORT_SYMBOL vmlinux 0x7dd286f2 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x7de92f5c ilookup +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e03c069 agp_create_memory +EXPORT_SYMBOL vmlinux 0x7e32a808 redraw_screen +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e410bb7 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x7e77b791 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x7e7e482d netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x7e895459 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x7e93c5e6 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7eb8c105 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x7ecb001b __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x7ee0e121 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eea438f bdi_register +EXPORT_SYMBOL vmlinux 0x7efd7d47 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x7f18b194 kacpi_hotplug_wq +EXPORT_SYMBOL vmlinux 0x7f203809 inet_sendpage +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f2ab6c2 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x7f64309b iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f6e76b7 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0x7f909eb5 tty_hangup +EXPORT_SYMBOL vmlinux 0x7faf585f xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x7fc494fb jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x7fce3155 mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0x7fddca94 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7feebcce unregister_con_driver +EXPORT_SYMBOL vmlinux 0x7ff5785d dev_uc_del +EXPORT_SYMBOL vmlinux 0x80249459 sock_create +EXPORT_SYMBOL vmlinux 0x8030ae07 udplite_prot +EXPORT_SYMBOL vmlinux 0x803d8572 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x803d9279 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x8041a9f0 __bread +EXPORT_SYMBOL vmlinux 0x80789300 genl_register_ops +EXPORT_SYMBOL vmlinux 0x80b1f10e pnp_register_driver +EXPORT_SYMBOL vmlinux 0x80cdb23a genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x80d34622 lease_modify +EXPORT_SYMBOL vmlinux 0x810474d0 i2c_use_client +EXPORT_SYMBOL vmlinux 0x810d18bd __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x811a2de8 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x811b808f blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x811c8b7a d_drop +EXPORT_SYMBOL vmlinux 0x813fc52a scsi_unregister +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 0x815e79af netpoll_setup +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x817bcd0c nf_reinject +EXPORT_SYMBOL vmlinux 0x817e469e follow_down +EXPORT_SYMBOL vmlinux 0x81873e5a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x819e1c25 acpi_evaluate_reference +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 0x81e73ce0 mount_single +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x82254c43 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x8235805b memmove +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82700eef max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x830a135d security_file_permission +EXPORT_SYMBOL vmlinux 0x830c90fe do_splice_direct +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x8333114f ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x837cd3c9 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x837cfef2 cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x8381452c tty_port_tty_set +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x839770b4 km_new_mapping +EXPORT_SYMBOL vmlinux 0x83a3366a jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83aa373f skb_trim +EXPORT_SYMBOL vmlinux 0x83c82c41 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83fd5df6 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84077dfc dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x84363ab4 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x845423fd pci_biosrom_size +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x848ee2e9 skb_unlink +EXPORT_SYMBOL vmlinux 0x84a33f84 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0x84be886f completion_done +EXPORT_SYMBOL vmlinux 0x84c29844 sock_map_fd +EXPORT_SYMBOL vmlinux 0x84deb8be truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x85138655 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x8513c189 __bio_clone +EXPORT_SYMBOL vmlinux 0x852bb675 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x854e8ff2 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x85636ba5 cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x8567c96e ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x85978f17 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85bcbbb5 simple_rmdir +EXPORT_SYMBOL vmlinux 0x85c1fcc5 blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x85d16790 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x85decaa5 dev_uc_add +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e30ad1 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85f486cb vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x86135bf2 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x8621ec30 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86aeb3db dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x86bfae20 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86e2ddb3 block_truncate_page +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8748944f acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x8767847c security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x876cbd9b datagram_poll +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x877c3e75 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x8795403a __dquot_transfer +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x882407f1 would_dump +EXPORT_SYMBOL vmlinux 0x88290f62 seq_open +EXPORT_SYMBOL vmlinux 0x882de604 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x883e72d2 mdiobus_register +EXPORT_SYMBOL vmlinux 0x88450d47 dst_alloc +EXPORT_SYMBOL vmlinux 0x88473f72 cdev_del +EXPORT_SYMBOL vmlinux 0x8855b5bd tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x885fc640 bh_submit_read +EXPORT_SYMBOL vmlinux 0x8868c4b7 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x889b4f39 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x88b52fe8 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x88b7555b neigh_seq_next +EXPORT_SYMBOL vmlinux 0x88d72564 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x88df64c4 kill_block_super +EXPORT_SYMBOL vmlinux 0x88dfc71f security_path_mkdir +EXPORT_SYMBOL vmlinux 0x88e29782 amd_northbridges +EXPORT_SYMBOL vmlinux 0x88ead914 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x88ffbfb0 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x8916e6cc tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0x8917d1c5 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x8934115f ether_setup +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x8978b112 kmem_cache_free +EXPORT_SYMBOL vmlinux 0x8987cf30 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x899c1258 mount_pseudo +EXPORT_SYMBOL vmlinux 0x89ae03a4 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89bc66b7 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x89d49a34 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89e2c327 cdrom_open +EXPORT_SYMBOL vmlinux 0x89ec56c7 twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x89edfceb __get_user_pages +EXPORT_SYMBOL vmlinux 0x89f5ae25 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x8a106d82 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x8a1615d6 mempool_create_node +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a32bca9 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x8a381cd6 block_write_begin +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a5e05b4 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x8a6075c3 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x8a72ea62 bmap +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a93b57a ida_destroy +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9d7fca tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x8aa97cfa journal_restart +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8b0c658a sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x8b18496f __copy_to_user_ll +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1df0dc inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b3815cf eisa_driver_register +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b62e4b6 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x8b7d93bd aio_put_req +EXPORT_SYMBOL vmlinux 0x8b904740 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x8b914fa0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8b996224 request_key +EXPORT_SYMBOL vmlinux 0x8b9f4ad5 set_pages_wb +EXPORT_SYMBOL vmlinux 0x8ba40405 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x8bb073ba unregister_md_personality +EXPORT_SYMBOL vmlinux 0x8bd77aa1 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x8bde27fe phy_device_free +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1912c5 kmap +EXPORT_SYMBOL vmlinux 0x8c28b7dd truncate_pagecache +EXPORT_SYMBOL vmlinux 0x8c300eb1 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x8c836c49 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x8c86fb52 block_write_full_page +EXPORT_SYMBOL vmlinux 0x8c924ff1 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x8ca3fa4a dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x8cc4ee27 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x8cc4f7fd tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccad5e8 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8cd944dc neigh_seq_start +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8cdeaa2b pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x8d02812a ip_route_input_common +EXPORT_SYMBOL vmlinux 0x8d17ef68 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x8d320f77 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d6f81b4 __div64_32 +EXPORT_SYMBOL vmlinux 0x8d8d96c6 acpi_get_sleep_type_data +EXPORT_SYMBOL vmlinux 0x8da1a3cb acpi_remove_interface +EXPORT_SYMBOL vmlinux 0x8da6219d blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x8dae413d tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x8daf8c42 dql_init +EXPORT_SYMBOL vmlinux 0x8dc6e564 restore_processor_state +EXPORT_SYMBOL vmlinux 0x8dd73fd5 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x8dd9f701 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x8def339e contig_page_data +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e0e485b unlock_buffer +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e3c725c neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x8e62f3f0 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x8e6cfd1d phy_stop +EXPORT_SYMBOL vmlinux 0x8e888ec3 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x8ea98125 __alloc_skb +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8ebf41cd uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x8ee44ea9 arp_xmit +EXPORT_SYMBOL vmlinux 0x8eeee13b tty_port_open +EXPORT_SYMBOL vmlinux 0x8efd507e kern_path +EXPORT_SYMBOL vmlinux 0x8eff8cdb dm_put_device +EXPORT_SYMBOL vmlinux 0x8f0028cc eisa_bus_type +EXPORT_SYMBOL vmlinux 0x8f1ed299 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f6f254f netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f80e9e3 get_write_access +EXPORT_SYMBOL vmlinux 0x8f812414 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x8f853fe9 write_cache_pages +EXPORT_SYMBOL vmlinux 0x8f879fc2 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x8f8acb97 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fa12b39 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x8fc0a3b4 kernel_getsockname +EXPORT_SYMBOL vmlinux 0x8fe64ba3 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x8feb7580 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x8ff4079b pv_irq_ops +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x902773b4 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x904246ce blk_end_request +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x9046fb68 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x9058aa3c dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x9058c5ef scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0x9068bf74 twl6040_power +EXPORT_SYMBOL vmlinux 0x909a8d15 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x90a1601f dmi_check_system +EXPORT_SYMBOL vmlinux 0x90ae880e elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x90b1d9da bdi_destroy +EXPORT_SYMBOL vmlinux 0x90b625d1 init_special_inode +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90d3fd9a filp_open +EXPORT_SYMBOL vmlinux 0x91095cab x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x912989da scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x9130204b alloc_file +EXPORT_SYMBOL vmlinux 0x9141ec9e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x9144a8e2 ec_burst_disable +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915b2751 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x915d33e1 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb +EXPORT_SYMBOL vmlinux 0x9164394f swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x916bf343 do_truncate +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91831788 pci_find_bus +EXPORT_SYMBOL vmlinux 0x91e88a53 dev_deactivate +EXPORT_SYMBOL vmlinux 0x91ec92d9 scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0x9220155d tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0x923451d2 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92897e3d default_idle +EXPORT_SYMBOL vmlinux 0x929215f5 vfs_open +EXPORT_SYMBOL vmlinux 0x92a05f3d idr_get_new +EXPORT_SYMBOL vmlinux 0x92a298ec sock_rfree +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bbca8e user_path_at +EXPORT_SYMBOL vmlinux 0x92c939ed vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0x92cbf3e4 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x92d3fbca scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x92f403a6 blk_init_queue +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x930ae5a3 vfs_llseek +EXPORT_SYMBOL vmlinux 0x9312d072 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x93227508 simple_lookup +EXPORT_SYMBOL vmlinux 0x932b36b2 filemap_fault +EXPORT_SYMBOL vmlinux 0x932ef3a3 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x932f808a journal_start_commit +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x9347c50a mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x93604d92 tty_devnum +EXPORT_SYMBOL vmlinux 0x936e9902 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x936edc86 km_state_notify +EXPORT_SYMBOL vmlinux 0x938d6b8d find_get_page +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93ac01b6 register_quota_format +EXPORT_SYMBOL vmlinux 0x93b32e7f sock_update_classid +EXPORT_SYMBOL vmlinux 0x93c651be acpi_info +EXPORT_SYMBOL vmlinux 0x93ccd4b9 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x941e32f8 pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x94264219 __bforget +EXPORT_SYMBOL vmlinux 0x943c1bf0 journal_revoke +EXPORT_SYMBOL vmlinux 0x94546d8c single_release +EXPORT_SYMBOL vmlinux 0x945ff17e free_task +EXPORT_SYMBOL vmlinux 0x94844080 lookup_bdev +EXPORT_SYMBOL vmlinux 0x948951dd tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x9494b615 iget5_locked +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b541b5 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x94def637 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x94e7758c __serio_register_driver +EXPORT_SYMBOL vmlinux 0x94ebca17 register_filesystem +EXPORT_SYMBOL vmlinux 0x94ff9735 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x950740e8 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x952afde2 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9561108a rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x956a7f9c generic_file_fsync +EXPORT_SYMBOL vmlinux 0x957f9287 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x95869ed0 kunmap +EXPORT_SYMBOL vmlinux 0x95b10269 __kfree_skb +EXPORT_SYMBOL vmlinux 0x95c4cffc blk_sync_queue +EXPORT_SYMBOL vmlinux 0x95e2210d do_splice_from +EXPORT_SYMBOL vmlinux 0x95e8fe5e set_pages_array_wb +EXPORT_SYMBOL vmlinux 0x95f0d474 backlight_force_update +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x95fb99b6 journal_release_buffer +EXPORT_SYMBOL vmlinux 0x960a835b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x9658043c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x96657bf3 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x9696ac72 rename_lock +EXPORT_SYMBOL vmlinux 0x96a592f6 seq_puts +EXPORT_SYMBOL vmlinux 0x96b0b233 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x96b8d7b2 phy_print_status +EXPORT_SYMBOL vmlinux 0x96c4b5fc vfs_readdir +EXPORT_SYMBOL vmlinux 0x96c7e43b seq_printf +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d26eb5 file_open_root +EXPORT_SYMBOL vmlinux 0x96d872a2 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x96e79739 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x96f0db07 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x96f229a7 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x97082324 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x97082a3e i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9717fe14 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x97192358 blk_run_queue +EXPORT_SYMBOL vmlinux 0x97199d8b pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x971c0b8e override_creds +EXPORT_SYMBOL vmlinux 0x97341ce4 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x9748af3a isapnp_protocol +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x97792d4b kernel_connect +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979baf81 module_refcount +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97b59586 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0x97b81ad2 blk_init_tags +EXPORT_SYMBOL vmlinux 0x97c67335 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x97cd8bdf irq_set_chip +EXPORT_SYMBOL vmlinux 0x97d78524 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x97dcef29 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97f659e7 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x97f98ed5 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x980e45f2 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x9813045c sk_common_release +EXPORT_SYMBOL vmlinux 0x9819660d phy_driver_register +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x98400e7b processors +EXPORT_SYMBOL vmlinux 0x98497228 eisa_driver_unregister +EXPORT_SYMBOL vmlinux 0x985502e8 noop_fsync +EXPORT_SYMBOL vmlinux 0x9861cc16 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9879dce6 set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x987e4f22 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98a84d12 unregister_console +EXPORT_SYMBOL vmlinux 0x98d059f3 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99052a84 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x990cc41b irq_to_desc +EXPORT_SYMBOL vmlinux 0x992962b5 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x992aa1c4 follow_down_one +EXPORT_SYMBOL vmlinux 0x994a1653 km_query +EXPORT_SYMBOL vmlinux 0x994e72e2 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9962700c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x9985ac5c dev_gro_receive +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x99982f5d padata_do_parallel +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99ad70e7 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x99b4d102 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x99b5d918 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c711cd bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99eed638 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x9a03730f pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x9a0f4ffc kernel_accept +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a26d4b5 skb_checksum +EXPORT_SYMBOL vmlinux 0x9a49ebae simple_transaction_release +EXPORT_SYMBOL vmlinux 0x9a60979e mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x9a6a83f9 cmos_lock +EXPORT_SYMBOL vmlinux 0x9a7dbe6a journal_errno +EXPORT_SYMBOL vmlinux 0x9a8e53d6 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x9ab5b95a kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x9ad73365 __ht_create_irq +EXPORT_SYMBOL vmlinux 0x9ada1bb8 proc_mkdir +EXPORT_SYMBOL vmlinux 0x9b0379e4 block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x9b11bca9 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x9b346bb1 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bc6183f ilookup5 +EXPORT_SYMBOL vmlinux 0x9bdff40b dev_get_flags +EXPORT_SYMBOL vmlinux 0x9bf0e7e7 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x9c1f3084 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x9c24fc3b page_address +EXPORT_SYMBOL vmlinux 0x9c2c944a __copy_from_user_ll_nocache_nozero +EXPORT_SYMBOL vmlinux 0x9c476ff8 rtnl_notify +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c49a30d security_path_unlink +EXPORT_SYMBOL vmlinux 0x9c4fbb26 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x9c5996b7 tty_register_driver +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c61a544 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x9c671416 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x9c85b327 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x9c8ecd26 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x9ca79f7c vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9ccc3a05 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x9cd3a53e path_put +EXPORT_SYMBOL vmlinux 0x9ceac034 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cee5d79 dma_release_declared_memory +EXPORT_SYMBOL vmlinux 0x9cf94d9e acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d18297e input_set_keycode +EXPORT_SYMBOL vmlinux 0x9d1d09ef skb_queue_head +EXPORT_SYMBOL vmlinux 0x9d2c7a7b mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d72de2e generic_ro_fops +EXPORT_SYMBOL vmlinux 0x9d9439f9 secpath_dup +EXPORT_SYMBOL vmlinux 0x9db88ea2 dquot_file_open +EXPORT_SYMBOL vmlinux 0x9db9ecfa proto_unregister +EXPORT_SYMBOL vmlinux 0x9dbe51b6 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x9dc97468 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x9de44d71 scsi_print_result +EXPORT_SYMBOL vmlinux 0x9df7d340 soft_cursor +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e2a7058 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x9e337136 tty_name +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e4b3747 sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e6490e0 d_add_ci +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e7379f4 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e9700f7 lookup_one_len +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ea895c3 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecc8f89 check_disk_size_change +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edb5d0b vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x9ef1f9ec serio_open +EXPORT_SYMBOL vmlinux 0x9efad260 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2c8efb fb_show_logo +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f491e5d ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x9f6c2e39 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x9f755f5f pci_assign_resource +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9f9c0265 kill_anon_super +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fd81a83 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff86bc6 user_path_create +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa012df81 inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xa0194de4 try_to_release_page +EXPORT_SYMBOL vmlinux 0xa0261aae sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0xa03af986 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa04f4108 dev_alloc_name +EXPORT_SYMBOL vmlinux 0xa058154d inet_recvmsg +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa083612a get_user_pages +EXPORT_SYMBOL vmlinux 0xa0ae3435 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c0d7c9 skb_split +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0dbc8bb end_page_writeback +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa1041e95 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa11557bd md_flush_request +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1337965 key_type_keyring +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa15cf845 uart_get_divisor +EXPORT_SYMBOL vmlinux 0xa17434d2 pnp_device_attach +EXPORT_SYMBOL vmlinux 0xa17eb180 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1cba0f2 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0xa1d5ea9c i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xa1f47163 sk_reset_timer +EXPORT_SYMBOL vmlinux 0xa1f61226 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xa20cd664 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa2207500 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa22fb5f4 prepare_binprm +EXPORT_SYMBOL vmlinux 0xa2374183 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa2649420 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa28977c2 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xa289cf7d register_console +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2c1f9fb unbind_con_driver +EXPORT_SYMBOL vmlinux 0xa2cc04d9 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xa2cf0d7a mmc_erase +EXPORT_SYMBOL vmlinux 0xa2eb9005 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa3148457 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xa319796d __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xa32af95a pci_enable_device_io +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa3504378 rwsem_wake +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa35c8988 ata_port_printk +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa363dab4 udp_table +EXPORT_SYMBOL vmlinux 0xa37190cf xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xa39e44bf i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0xa3a0af72 journal_set_features +EXPORT_SYMBOL vmlinux 0xa3a9be36 md_write_start +EXPORT_SYMBOL vmlinux 0xa3ae37a1 simple_getattr +EXPORT_SYMBOL vmlinux 0xa3d089ea get_task_io_context +EXPORT_SYMBOL vmlinux 0xa3db0c9d generic_getxattr +EXPORT_SYMBOL vmlinux 0xa3fd711d __invalidate_device +EXPORT_SYMBOL vmlinux 0xa4146be3 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0xa41c3052 pci_set_master +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa44a22a9 security_path_chmod +EXPORT_SYMBOL vmlinux 0xa469d558 __frontswap_load +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa49c10c4 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xa49edda4 write_one_page +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c7d6f0 clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4eb4eff _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xa4fc70d6 pci_iomap +EXPORT_SYMBOL vmlinux 0xa5185f79 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xa51cdfe8 __FIXADDR_TOP +EXPORT_SYMBOL vmlinux 0xa52c6858 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xa563ecdc dev_uc_init +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa57a50ae pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xa593cb98 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5abe93d blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xa5da0abd acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0xa6033f3f agp_copy_info +EXPORT_SYMBOL vmlinux 0xa61832a1 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa62e6e4f acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0xa630e7b0 icmpv6_send +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6654fc1 tty_port_raise_dtr_rts +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 0xa6851d66 ata_print_version +EXPORT_SYMBOL vmlinux 0xa68688f7 blk_delay_queue +EXPORT_SYMBOL vmlinux 0xa6916027 uart_add_one_port +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6b13658 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa6f6b8c0 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xa7024f43 dma_pool_create +EXPORT_SYMBOL vmlinux 0xa7064765 __destroy_inode +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa71acb6b dev_trans_start +EXPORT_SYMBOL vmlinux 0xa71e7463 __first_cpu +EXPORT_SYMBOL vmlinux 0xa7239558 __blk_end_request +EXPORT_SYMBOL vmlinux 0xa73aaa2e elv_rb_add +EXPORT_SYMBOL vmlinux 0xa73ef424 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xa7c2d314 pnp_find_card +EXPORT_SYMBOL vmlinux 0xa7c2d92f get_gendisk +EXPORT_SYMBOL vmlinux 0xa7cf6c2f atomic64_dec_return_cx8 +EXPORT_SYMBOL vmlinux 0xa7eedb68 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa7ffee70 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa823ce18 skb_dequeue +EXPORT_SYMBOL vmlinux 0xa82766a9 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xa8498abd pci_fixup_device +EXPORT_SYMBOL vmlinux 0xa870ee8f neigh_direct_output +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa888aa9b fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8b6092b sock_i_ino +EXPORT_SYMBOL vmlinux 0xa8b6743c call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0xa8d68abd acpi_warning +EXPORT_SYMBOL vmlinux 0xa8e9e3b8 filp_close +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa940a8ba tcp_child_process +EXPORT_SYMBOL vmlinux 0xa945c5fc key_reject_and_link +EXPORT_SYMBOL vmlinux 0xa94da7c1 mount_nodev +EXPORT_SYMBOL vmlinux 0xa9b8bc49 __put_cred +EXPORT_SYMBOL vmlinux 0xa9c1b627 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xaa0149f2 inet_stream_ops +EXPORT_SYMBOL vmlinux 0xaa397122 register_sysctl_table +EXPORT_SYMBOL vmlinux 0xaa41e891 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6de10a sock_no_connect +EXPORT_SYMBOL vmlinux 0xaa8fea18 acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0xaa92f9d2 neigh_table_init +EXPORT_SYMBOL vmlinux 0xaaab8067 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xaab2f0a9 tty_hung_up_p +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaade221a swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaae9e151 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0xaaf45875 acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab1eccfb scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xab28271c i8253_lock +EXPORT_SYMBOL vmlinux 0xab2e9c23 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xab41bb45 tty_port_close_start +EXPORT_SYMBOL vmlinux 0xab469eb2 serio_interrupt +EXPORT_SYMBOL vmlinux 0xab600421 probe_irq_off +EXPORT_SYMBOL vmlinux 0xab65ed80 set_memory_uc +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab6c0e20 set_user_nice +EXPORT_SYMBOL vmlinux 0xab770678 rdmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0xab77e65e journal_create +EXPORT_SYMBOL vmlinux 0xab97bc30 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xabbc92e5 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabcc09a9 simple_fill_super +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd9b304 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xac097153 skb_free_datagram +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac2bb4ac pagevec_lookup +EXPORT_SYMBOL vmlinux 0xac31eb06 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xac33396b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac5c1b75 key_revoke +EXPORT_SYMBOL vmlinux 0xac5e2380 pci_get_class +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac7c1d3f bdi_register_dev +EXPORT_SYMBOL vmlinux 0xac834fa3 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0xac8ad382 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xaca661b9 elevator_init +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd123a1 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad07f027 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad1be3f3 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xad2c8ce1 tty_port_put +EXPORT_SYMBOL vmlinux 0xad30141b security_task_getsecid +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad4675fd pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xad6527c4 acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xad766b5e jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadb556b2 inet_frags_init +EXPORT_SYMBOL vmlinux 0xaddd40c6 pci_save_state +EXPORT_SYMBOL vmlinux 0xadfbfee0 find_lock_page +EXPORT_SYMBOL vmlinux 0xadfc7b92 tcp_close +EXPORT_SYMBOL vmlinux 0xae0e5930 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xae10bb2a generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xae158606 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xae218ba0 padata_start +EXPORT_SYMBOL vmlinux 0xae307c17 inode_only_permission +EXPORT_SYMBOL vmlinux 0xae3d6c61 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xae4cc356 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xae69c911 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae846149 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0xae8ebf40 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xae945a44 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeaeceaa kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xaeb32da8 mntput +EXPORT_SYMBOL vmlinux 0xaeb8a75c pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed6af56 elv_rb_del +EXPORT_SYMBOL vmlinux 0xaee97e7e vfs_unlink +EXPORT_SYMBOL vmlinux 0xaf1fc32c jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xaf283e5a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xaf297a33 kmap_atomic_to_page +EXPORT_SYMBOL vmlinux 0xaf29bab9 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf3f2ab5 locks_init_lock +EXPORT_SYMBOL vmlinux 0xaf4b1540 acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xaf55ca89 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf7228df generic_listxattr +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9d9ecc __register_nmi_handler +EXPORT_SYMBOL vmlinux 0xafa2c013 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xafa67cb5 dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xafa76006 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xafbf5185 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xafcad793 xfrm_init_state +EXPORT_SYMBOL vmlinux 0xafdff8db scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xafe6b441 log_start_commit +EXPORT_SYMBOL vmlinux 0xaff71b77 set_trace_device +EXPORT_SYMBOL vmlinux 0xaff74463 locks_delete_block +EXPORT_SYMBOL vmlinux 0xb0207ecf ___ratelimit +EXPORT_SYMBOL vmlinux 0xb044d42f max8998_update_reg +EXPORT_SYMBOL vmlinux 0xb047c235 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xb051db7e xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb0a53a60 inet_getname +EXPORT_SYMBOL vmlinux 0xb0a8fd0a intel_gtt_unmap_memory +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0bc3bba cdev_init +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0fe25dc scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xb11635d4 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb1255bf4 journal_get_create_access +EXPORT_SYMBOL vmlinux 0xb12ce794 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb1957770 set_page_dirty +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress +EXPORT_SYMBOL vmlinux 0xb1cd2f00 pci_enable_msix +EXPORT_SYMBOL vmlinux 0xb1cf44df fb_find_best_mode +EXPORT_SYMBOL vmlinux 0xb1cfad22 rdmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xb1d32fe9 __rta_fill +EXPORT_SYMBOL vmlinux 0xb1d9523e wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0xb1f12644 skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb21f884e zero_fill_bio +EXPORT_SYMBOL vmlinux 0xb2311817 prepare_creds +EXPORT_SYMBOL vmlinux 0xb2334db7 phy_detach +EXPORT_SYMBOL vmlinux 0xb234c724 tcp_splice_read +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2691459 backlight_device_register +EXPORT_SYMBOL vmlinux 0xb2744b36 down_write_trylock +EXPORT_SYMBOL vmlinux 0xb29070d1 tty_vhangup +EXPORT_SYMBOL vmlinux 0xb294961f neigh_destroy +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34d4c2e acpi_terminate +EXPORT_SYMBOL vmlinux 0xb350e08e pnp_activate_dev +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb378ad8b ip6_frag_init +EXPORT_SYMBOL vmlinux 0xb3849fb0 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb389eb13 scsi_print_command +EXPORT_SYMBOL vmlinux 0xb3a2733b dmam_release_declared_memory +EXPORT_SYMBOL vmlinux 0xb3c54f13 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xb3ccd753 vga_get +EXPORT_SYMBOL vmlinux 0xb3d19515 noop_qdisc +EXPORT_SYMBOL vmlinux 0xb3de7dae directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xb3e0590d acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0xb40920b0 __serio_register_port +EXPORT_SYMBOL vmlinux 0xb40fef29 ps2_handle_response +EXPORT_SYMBOL vmlinux 0xb413bef3 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb427812e i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xb435f5fa wake_up_process +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb4471b80 mutex_trylock +EXPORT_SYMBOL vmlinux 0xb44da1b5 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0xb45578b8 memscan +EXPORT_SYMBOL vmlinux 0xb46bc360 _dev_info +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4963521 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb4cbaeeb bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xb4cf0c64 scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0xb4d38f5b grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xb4d6e420 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xb4d83f74 elv_register_queue +EXPORT_SYMBOL vmlinux 0xb4f21a19 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0xb5107b18 register_nls +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb54f473c ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xb563c2a7 mii_check_media +EXPORT_SYMBOL vmlinux 0xb5665f21 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0xb56c3539 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb577ee8d register_sysctl +EXPORT_SYMBOL vmlinux 0xb5a35b40 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bc6b15 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d26053 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xb5e8dca5 cdev_alloc +EXPORT_SYMBOL vmlinux 0xb5fa25a4 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xb5fe4ac2 bd_set_size +EXPORT_SYMBOL vmlinux 0xb601d619 dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb6308eca registered_fb +EXPORT_SYMBOL vmlinux 0xb638db4f journal_extend +EXPORT_SYMBOL vmlinux 0xb657250d sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xb6588e7a idr_remove +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb682ca98 sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xb68655c5 fd_install +EXPORT_SYMBOL vmlinux 0xb6890043 inode_init_always +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a683f5 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6a71276 rtnl_create_link +EXPORT_SYMBOL vmlinux 0xb6a93e07 __ps2_command +EXPORT_SYMBOL vmlinux 0xb6c53502 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6ed1e53 strncpy +EXPORT_SYMBOL vmlinux 0xb6f1aa81 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xb72ec667 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xb749081f keyring_clear +EXPORT_SYMBOL vmlinux 0xb753126c pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75fd2eb pci_find_capability +EXPORT_SYMBOL vmlinux 0xb7828347 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xb7828499 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0xb79290e0 kernel_read +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7f55ecc atomic64_add_return_cx8 +EXPORT_SYMBOL vmlinux 0xb80ca9ad acpi_bus_generate_proc_event +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb83688a4 tcf_em_register +EXPORT_SYMBOL vmlinux 0xb840f7fd dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xb8465515 d_rehash +EXPORT_SYMBOL vmlinux 0xb863e8df seq_putc +EXPORT_SYMBOL vmlinux 0xb8684bf6 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb868c76b add_disk +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb86eb557 install_exec_creds +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb8981365 arp_find +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb89d8b9d qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xb8e6b189 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8f912e6 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xb8fc80ef mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb91cccab pcim_pin_device +EXPORT_SYMBOL vmlinux 0xb937d0ac tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xb94cffda tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb99cf582 ida_get_new_above +EXPORT_SYMBOL vmlinux 0xb9b9960b bitmap_unplug +EXPORT_SYMBOL vmlinux 0xb9bc4e27 netdev_warn +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba22452a sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xba273d80 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xba29565a dquot_transfer +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba41c925 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba615537 nla_reserve +EXPORT_SYMBOL vmlinux 0xba64a10b sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xba6b1a91 inet_csk_accept +EXPORT_SYMBOL vmlinux 0xba6bcf5c spi_dv_device +EXPORT_SYMBOL vmlinux 0xba736484 security_path_link +EXPORT_SYMBOL vmlinux 0xba7a920d splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xba80d305 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xba8ea6ad rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xba8f0db0 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xbabf462f mfd_add_devices +EXPORT_SYMBOL vmlinux 0xbacf57a5 md_register_thread +EXPORT_SYMBOL vmlinux 0xbada61e1 intel_gtt_map_memory +EXPORT_SYMBOL vmlinux 0xbaf82e46 mmc_release_host +EXPORT_SYMBOL vmlinux 0xbb03def1 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xbb145b1e init_net +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb222799 key_invalidate +EXPORT_SYMBOL vmlinux 0xbb3c614f ip6_route_output +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6af7f8 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xbb6cec8e xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xbb6fd717 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0xbb76fa7d remove_arg_zero +EXPORT_SYMBOL vmlinux 0xbb837d27 machine_real_restart +EXPORT_SYMBOL vmlinux 0xbb952cb7 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbba60910 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xbbc31400 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0xbbdb9143 address_space_init_once +EXPORT_SYMBOL vmlinux 0xbc0f9c9d brioctl_set +EXPORT_SYMBOL vmlinux 0xbc0ffe4e mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xbc1afedf up_write +EXPORT_SYMBOL vmlinux 0xbc1f6df9 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc35358b mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xbc6b5977 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0xbc961843 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xbca325b3 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xbcbdfe84 scsi_device_put +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbce456ed generic_permission +EXPORT_SYMBOL vmlinux 0xbce6c1f0 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xbd267168 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xbd389e15 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0xbd4c81c6 led_brightness_set +EXPORT_SYMBOL vmlinux 0xbd64f7ef clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xbd8963fb __module_get +EXPORT_SYMBOL vmlinux 0xbd902d39 netdev_set_master +EXPORT_SYMBOL vmlinux 0xbdbdfb98 tcp_init_sock +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdcbab09 register_cdrom +EXPORT_SYMBOL vmlinux 0xbde98dd6 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0xbdef0eb8 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe091077 del_gendisk +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe3e7a49 dev_change_flags +EXPORT_SYMBOL vmlinux 0xbe4b7dbf pnp_is_active +EXPORT_SYMBOL vmlinux 0xbe8c37d9 intel_scu_ipc_simple_command +EXPORT_SYMBOL vmlinux 0xbe9a9bc4 vfs_write +EXPORT_SYMBOL vmlinux 0xbeadb6d9 dev_open +EXPORT_SYMBOL vmlinux 0xbeb8ec97 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0xbebfab6d tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbed5a68c d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xbeda8432 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf1cf6d0 dev_printk +EXPORT_SYMBOL vmlinux 0xbf473614 fb_set_var +EXPORT_SYMBOL vmlinux 0xbf5d6956 __netif_schedule +EXPORT_SYMBOL vmlinux 0xbf5ed131 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xbf704eea jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xbf76f18c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xbf7f13b8 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf8b39e9 isapnp_present +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa22e03 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfe1d283 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0xbfe4784c efi +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc0157b49 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc01eed33 __copy_from_user_ll_nozero +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc064dc51 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xc0658ca4 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc06dcdf6 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0831a4f i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a8ff16 acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xc0b343dd pnp_release_card_device +EXPORT_SYMBOL vmlinux 0xc0b61b6a kill_pid +EXPORT_SYMBOL vmlinux 0xc0c05448 inet_release +EXPORT_SYMBOL vmlinux 0xc0c1eb55 neigh_for_each +EXPORT_SYMBOL vmlinux 0xc0d4f89a ip_getsockopt +EXPORT_SYMBOL vmlinux 0xc0ecb0cd iget_locked +EXPORT_SYMBOL vmlinux 0xc0f3bd93 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xc10757d4 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xc108a643 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12978d5 netdev_notice +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1416b22 pci_request_region +EXPORT_SYMBOL vmlinux 0xc15bbb77 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc17e3c34 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xc19e7c2b genphy_update_link +EXPORT_SYMBOL vmlinux 0xc1ba699f xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xc1bea92d freeze_super +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1c57e2d cleancache_register_ops +EXPORT_SYMBOL vmlinux 0xc1f0c8b9 pci_dev_get +EXPORT_SYMBOL vmlinux 0xc1f72918 inode_change_ok +EXPORT_SYMBOL vmlinux 0xc211607d sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc23bcadb mmc_card_sleep +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc263d92a __ip_select_ident +EXPORT_SYMBOL vmlinux 0xc26b4e69 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xc27f00ea dev_mc_init +EXPORT_SYMBOL vmlinux 0xc280a525 __copy_from_user_ll +EXPORT_SYMBOL vmlinux 0xc293a804 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc320f934 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xc338680b xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0xc35c4380 follow_up +EXPORT_SYMBOL vmlinux 0xc35e6453 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc38639c6 dev_close +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3b04a12 xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xc3dcf947 input_flush_device +EXPORT_SYMBOL vmlinux 0xc3efb0c2 register_netdevice +EXPORT_SYMBOL vmlinux 0xc3fa6a59 memchr +EXPORT_SYMBOL vmlinux 0xc402cc99 register_acpi_notifier +EXPORT_SYMBOL vmlinux 0xc40d0583 scsi_dma_map +EXPORT_SYMBOL vmlinux 0xc41a5958 __napi_complete +EXPORT_SYMBOL vmlinux 0xc41e8f7a wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xc4484c71 i2c_master_send +EXPORT_SYMBOL vmlinux 0xc44c24e1 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xc4554217 up +EXPORT_SYMBOL vmlinux 0xc48bf49e md_check_recovery +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4d1dd08 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xc4da885e ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0xc4ee2ff0 skb_pad +EXPORT_SYMBOL vmlinux 0xc4f5dace tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xc5195e1e kmap_atomic +EXPORT_SYMBOL vmlinux 0xc521796a gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xc5384523 mpage_writepages +EXPORT_SYMBOL vmlinux 0xc548da57 phy_start_aneg +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc558c984 block_invalidatepage +EXPORT_SYMBOL vmlinux 0xc561b1d6 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xc574c508 dump_seek +EXPORT_SYMBOL vmlinux 0xc57ab7bc proc_dostring +EXPORT_SYMBOL vmlinux 0xc59d6ee8 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xc5c74531 __mutex_init +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5ec604e sk_stop_timer +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc60663c7 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc6364ab7 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xc63cc125 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xc654e0eb dump_trace +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc6762ca9 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0xc67c1152 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xc6890ef3 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xc6903e43 mnt_pin +EXPORT_SYMBOL vmlinux 0xc6907fb1 vm_mmap +EXPORT_SYMBOL vmlinux 0xc699162b iterate_supers_type +EXPORT_SYMBOL vmlinux 0xc6b23120 intel_scu_ipc_iowrite16 +EXPORT_SYMBOL vmlinux 0xc6b95dfe rfkill_alloc +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6e1ad87 md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xc6e61430 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xc700b2b3 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc72c02c7 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0xc74ba4b9 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xc768de19 cpu_all_bits +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc810c044 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0xc8272e76 phy_device_register +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83ef52e agp_backend_release +EXPORT_SYMBOL vmlinux 0xc84308ee filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc87103ca i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc89af680 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ba1eff scsi_init_io +EXPORT_SYMBOL vmlinux 0xc8bde673 log_wait_commit +EXPORT_SYMBOL vmlinux 0xc8c4bf29 complete_request_key +EXPORT_SYMBOL vmlinux 0xc8c5b95f tcf_hash_check +EXPORT_SYMBOL vmlinux 0xc8e066bb dst_destroy +EXPORT_SYMBOL vmlinux 0xc8ef9be0 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xc8f2667e netpoll_print_options +EXPORT_SYMBOL vmlinux 0xc8f68b16 __register_chrdev +EXPORT_SYMBOL vmlinux 0xc8fd77a0 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xc9112e1f xfrm_input +EXPORT_SYMBOL vmlinux 0xc92d8aeb abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xc9469a03 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xc95bbc0b bio_map_kern +EXPORT_SYMBOL vmlinux 0xc962596a skb_store_bits +EXPORT_SYMBOL vmlinux 0xc96867e1 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc972208e phy_disconnect +EXPORT_SYMBOL vmlinux 0xc98ee66a block_commit_write +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9ab2eef acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0xc9b69496 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xc9c8f7c5 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xc9cd27d9 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0xca06aa04 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xca0a5dff mpage_readpage +EXPORT_SYMBOL vmlinux 0xca112652 bioset_free +EXPORT_SYMBOL vmlinux 0xca11b9d7 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xca38028a igrab +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca903426 sync_blockdev +EXPORT_SYMBOL vmlinux 0xcaac0636 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xcabe0f63 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xcace5828 posix_test_lock +EXPORT_SYMBOL vmlinux 0xcade4d38 agp_generic_enable +EXPORT_SYMBOL vmlinux 0xcae3213a sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0xcb16dd33 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0xcb1cea55 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xcb225f49 pci_disable_obff +EXPORT_SYMBOL vmlinux 0xcb2ac42b dev_mc_del +EXPORT_SYMBOL vmlinux 0xcb4254f3 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0xcb451e56 idr_init +EXPORT_SYMBOL vmlinux 0xcb5a211d phy_scan_fixups +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbc49e77 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd5bd5b __quota_error +EXPORT_SYMBOL vmlinux 0xcbdfd4ac set_pages_array_wc +EXPORT_SYMBOL vmlinux 0xcbe109d0 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xcbeaf2be ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xcbf58d75 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xcc22de1a dquot_operations +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc46a24b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xcc49183f inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xcc4d1bfb atomic64_read_cx8 +EXPORT_SYMBOL vmlinux 0xcc4f353e scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc50b8ad lro_receive_frags +EXPORT_SYMBOL vmlinux 0xcc59dfee eth_mac_addr +EXPORT_SYMBOL vmlinux 0xcc5b27b5 acpi_extract_package +EXPORT_SYMBOL vmlinux 0xcc688271 d_make_root +EXPORT_SYMBOL vmlinux 0xcc6abae8 napi_complete +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc81d7f2 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xcca8c7e3 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0xccb20dfb inet_sendmsg +EXPORT_SYMBOL vmlinux 0xcd1ba4ed noop_llseek +EXPORT_SYMBOL vmlinux 0xcd1c5f0f scsi_execute_req +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd54f8c9 pci_reenable_device +EXPORT_SYMBOL vmlinux 0xcd741d0d udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xcd981e31 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xcd9cacea ata_link_printk +EXPORT_SYMBOL vmlinux 0xcdd290ae key_link +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce185a5f dev_err +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce1f5873 kobject_add +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce4904a4 acpi_leave_sleep_state +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce76e808 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xce7a2d34 tty_mutex +EXPORT_SYMBOL vmlinux 0xce7ee9fd pagecache_write_end +EXPORT_SYMBOL vmlinux 0xce819c69 dma_async_device_register +EXPORT_SYMBOL vmlinux 0xce9c7cbd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xce9c9148 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xcea65c1a dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xcec43af6 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef63626 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf0613c7 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xcf1d28ab acpi_error +EXPORT_SYMBOL vmlinux 0xcf31f27b ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0xcf499d18 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xcf510c4a mutex_lock +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf8fb10c scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0xcfaca9a5 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xcfe05d4d register_kmmio_probe +EXPORT_SYMBOL vmlinux 0xcfe1deca inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff502bc scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd0042ae7 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd062b4ce inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07a7268 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0xd08197fa acpi_load_tables +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d8621b strlen +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0f0d945 down_read +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0fb2df7 journal_forget +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd0ff1be7 acpi_root_dir +EXPORT_SYMBOL vmlinux 0xd10f0e33 make_EII_client +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd125b3cf mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd12df334 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd1402b92 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0xd1472061 acpi_pci_register_driver +EXPORT_SYMBOL vmlinux 0xd14b636a scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xd163530e dentry_open +EXPORT_SYMBOL vmlinux 0xd16fe0c8 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xd1713389 tty_schedule_flip +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd182616d inet_stream_connect +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a612b3 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd1fb6b92 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xd1fcde25 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0xd20f780e __page_symlink +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +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 0xd2705fe1 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xd277fa75 unlock_page +EXPORT_SYMBOL vmlinux 0xd27a00b9 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2a75ee0 dmi_first_match +EXPORT_SYMBOL vmlinux 0xd2b01c83 __pskb_copy +EXPORT_SYMBOL vmlinux 0xd2b052b3 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xd2b5195a i8042_install_filter +EXPORT_SYMBOL vmlinux 0xd2b6fca7 blk_register_region +EXPORT_SYMBOL vmlinux 0xd2c70602 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xd2ced37e blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd2d3cc5d scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd2e6a582 acpi_processor_preregister_performance +EXPORT_SYMBOL vmlinux 0xd2e8db1a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xd3272ffe bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xd33a1f13 simple_link +EXPORT_SYMBOL vmlinux 0xd33c4a17 pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xd34a5c30 eth_header_cache +EXPORT_SYMBOL vmlinux 0xd350f6c5 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3c08471 gen_pool_create +EXPORT_SYMBOL vmlinux 0xd3ce3b50 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3ef4658 dma_mmap_from_coherent +EXPORT_SYMBOL vmlinux 0xd42751d0 generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0xd43066de input_set_abs_params +EXPORT_SYMBOL vmlinux 0xd4323bf5 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0xd4709565 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xd4c3b174 printk_emit +EXPORT_SYMBOL vmlinux 0xd4e53571 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd4ff9407 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xd4ffddb4 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd53a0506 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xd5677bd2 phy_attach +EXPORT_SYMBOL vmlinux 0xd5741ac1 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0xd57b8529 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xd589e84b vfs_rmdir +EXPORT_SYMBOL vmlinux 0xd58de19b arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5b12e3a pci_clear_master +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5cf5fa6 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xd5e5f8a7 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f85064 mount_ns +EXPORT_SYMBOL vmlinux 0xd601ba36 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62298d0 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6452035 ping_prot +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66a9070 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0xd68f6ff0 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xd6ae9d76 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c8e352 starget_for_each_device +EXPORT_SYMBOL vmlinux 0xd6e16fcb blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xd6e2359e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xd6e58ddf acpi_bus_add +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6f23322 md_error +EXPORT_SYMBOL vmlinux 0xd703f07f find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd796613f blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd7bd3af2 add_wait_queue +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd81942dd netlink_unicast +EXPORT_SYMBOL vmlinux 0xd83599f8 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd8486f23 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xd85833cb __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0xd85df7d4 boot_cpu_data +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8a563c2 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xd8aaa261 dump_write +EXPORT_SYMBOL vmlinux 0xd8be2746 mapping_tagged +EXPORT_SYMBOL vmlinux 0xd8d545d1 netif_skb_features +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8ecbfbb remap_pfn_range +EXPORT_SYMBOL vmlinux 0xd90746b8 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd914c6b3 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd939f96d __lock_page +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9843cbd simple_empty +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0xd990546c lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xd99e28b8 pipe_unlock +EXPORT_SYMBOL vmlinux 0xd99ef8bc iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xd9be0059 inet6_bind +EXPORT_SYMBOL vmlinux 0xd9e5d7be __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0xda08c0d7 pcibios_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0xda09fc71 nla_put +EXPORT_SYMBOL vmlinux 0xda0a6b0e acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0xda3accda pcibios_set_irq_routing +EXPORT_SYMBOL vmlinux 0xda40c89c dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8fd495 isapnp_write_byte +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdadc14cf mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdb3f299d vfs_follow_link +EXPORT_SYMBOL vmlinux 0xdb5d6ce7 dev_addr_init +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb8134df ip_ct_attach +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbcf0f0d swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc1c9dd0 __nla_put +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc570f62 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdca9c101 mmc_start_req +EXPORT_SYMBOL vmlinux 0xdca9eaff arp_invalidate +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcd3d355 devm_free_irq +EXPORT_SYMBOL vmlinux 0xdd097506 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd0f6404 vc_cons +EXPORT_SYMBOL vmlinux 0xdd16565a drop_super +EXPORT_SYMBOL vmlinux 0xdd1a2871 down +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd38346f jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xdd389eec i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd9d56c5 d_invalidate +EXPORT_SYMBOL vmlinux 0xddb7215f mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xddc450a1 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xddc8388a vfs_rename +EXPORT_SYMBOL vmlinux 0xddef8a64 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xddf96967 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xde0562cc netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xde25856a simple_release_fs +EXPORT_SYMBOL vmlinux 0xde73e4df sock_recvmsg +EXPORT_SYMBOL vmlinux 0xde756db9 path_get +EXPORT_SYMBOL vmlinux 0xde7ec142 vfs_read +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdebb5bcc ip_defrag +EXPORT_SYMBOL vmlinux 0xdec778f6 ida_get_new +EXPORT_SYMBOL vmlinux 0xdeded5ee padata_free +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf420b68 proc_create_data +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6fa29e flush_old_exec +EXPORT_SYMBOL vmlinux 0xdf71d03d con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfaa2896 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xdfb9ae07 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcc780a follow_pfn +EXPORT_SYMBOL vmlinux 0xe00afc59 tcp_read_sock +EXPORT_SYMBOL vmlinux 0xe034dee2 acpi_bus_start +EXPORT_SYMBOL vmlinux 0xe037eef4 md_done_sync +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06426b4 genlmsg_put +EXPORT_SYMBOL vmlinux 0xe06694aa input_close_device +EXPORT_SYMBOL vmlinux 0xe070f1bc scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08d6aa2 pci_enable_bridges +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 0xe0b5aff4 set_pages_nx +EXPORT_SYMBOL vmlinux 0xe0c2479e fb_get_mode +EXPORT_SYMBOL vmlinux 0xe0d6a2a2 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xe0ec9644 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe1472c03 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0xe1747e34 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe183fb65 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xe18a8ab7 agp_enable +EXPORT_SYMBOL vmlinux 0xe19783bc inode_get_bytes +EXPORT_SYMBOL vmlinux 0xe1caabe5 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xe1d7a9fc ndisc_mc_map +EXPORT_SYMBOL vmlinux 0xe1f3d387 block_read_full_page +EXPORT_SYMBOL vmlinux 0xe1fa85cd vfsmount_lock +EXPORT_SYMBOL vmlinux 0xe2009f3e bdget_disk +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe210b9c5 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xe23a33e1 inet_frags_fini +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2735d4f pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xe2a028cb netpoll_send_udp +EXPORT_SYMBOL vmlinux 0xe2b0a3c0 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2dc64a9 sock_init_data +EXPORT_SYMBOL vmlinux 0xe2e67bd8 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2e99449 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3baa1b9 set_anon_super +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d9c5bf inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xe3e6fc66 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0xe3fbe148 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xe45f60d8 __wake_up +EXPORT_SYMBOL vmlinux 0xe46ee3b4 bio_copy_kern +EXPORT_SYMBOL vmlinux 0xe47afbf7 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4872067 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4be4f8a nf_getsockopt +EXPORT_SYMBOL vmlinux 0xe4cd0f04 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xe4f0ef03 save_mount_options +EXPORT_SYMBOL vmlinux 0xe50f904f intel_scu_ipc_ioread16 +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe5198d87 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xe51d2b51 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe53d58e9 dcache_readdir +EXPORT_SYMBOL vmlinux 0xe5447902 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe588f035 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xe59a0119 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe59c9962 pid_task +EXPORT_SYMBOL vmlinux 0xe5bbbe91 nobh_writepage +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5da9bca netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe627269f scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xe6577b52 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0xe66fb056 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xe6822214 keyring_search +EXPORT_SYMBOL vmlinux 0xe6916a33 d_find_alias +EXPORT_SYMBOL vmlinux 0xe692a601 netif_carrier_off +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe699bdfb ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xe6b3fe21 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xe6c5fe86 con_copy_unimap +EXPORT_SYMBOL vmlinux 0xe6c88ef5 vfs_readlink +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6ec713d jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xe6f06ef1 mark_info_dirty +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe716baed acpi_unregister_ioapic +EXPORT_SYMBOL vmlinux 0xe7389a5e nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xe759020d netdev_info +EXPORT_SYMBOL vmlinux 0xe768278f genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xe76d2516 phy_start +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe781b5f6 intel_scu_ipc_readv +EXPORT_SYMBOL vmlinux 0xe78d8f24 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xe798e8ea cdev_add +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a7c100 set_binfmt +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7a982b6 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xe7af7f19 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xe7cd2427 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7dd00bd max8998_write_reg +EXPORT_SYMBOL vmlinux 0xe7f976a1 genphy_resume +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe81f61f4 napi_get_frags +EXPORT_SYMBOL vmlinux 0xe8267465 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xe876f261 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0xe8781a36 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe88e7a93 lg_global_lock +EXPORT_SYMBOL vmlinux 0xe8938002 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xe8ad37ab generic_removexattr +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b68849 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xe8bb7e4b __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xe8d9bb4f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xe8f3adaf nobh_write_begin +EXPORT_SYMBOL vmlinux 0xe8f575d9 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xe905db27 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe92cf576 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xe9466ee1 arp_create +EXPORT_SYMBOL vmlinux 0xe94c8919 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96dc22c handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe97116f3 tty_check_change +EXPORT_SYMBOL vmlinux 0xe974e701 set_device_ro +EXPORT_SYMBOL vmlinux 0xe981a586 sock_release +EXPORT_SYMBOL vmlinux 0xe98ffa4d journal_stop +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9a6652b pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xe9b61a7d generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0xe9b70587 pci_bus_type +EXPORT_SYMBOL vmlinux 0xe9c79350 do_sync_write +EXPORT_SYMBOL vmlinux 0xe9c9fb52 skb_copy +EXPORT_SYMBOL vmlinux 0xe9e23dcd thaw_bdev +EXPORT_SYMBOL vmlinux 0xe9e54c53 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0xe9f5bf24 spi_release_transport +EXPORT_SYMBOL vmlinux 0xe9f7da5a jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xea025e2b tty_port_close +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea304399 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0xea369aee put_io_context +EXPORT_SYMBOL vmlinux 0xea3bc55b filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xea498310 register_con_driver +EXPORT_SYMBOL vmlinux 0xea74eed5 inode_dio_done +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea7ec7d4 stop_tty +EXPORT_SYMBOL vmlinux 0xea8e7980 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae07c3d blk_fetch_request +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaf7b60b sk_filter +EXPORT_SYMBOL vmlinux 0xeb14d9c2 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xeb2908c1 revalidate_disk +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3a0e5f page_put_link +EXPORT_SYMBOL vmlinux 0xeb5344ea nlmsg_notify +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb5ac86f may_umount_tree +EXPORT_SYMBOL vmlinux 0xeb9694c9 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebb8c7c0 read_cache_pages +EXPORT_SYMBOL vmlinux 0xebdbb90b jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe54878 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xec0cab2c mdio_bus_type +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec21e044 mmc_request_done +EXPORT_SYMBOL vmlinux 0xec256462 genl_notify +EXPORT_SYMBOL vmlinux 0xec39fa19 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xec4615d3 sock_no_accept +EXPORT_SYMBOL vmlinux 0xec494289 nf_register_hook +EXPORT_SYMBOL vmlinux 0xec4e5732 posix_lock_file +EXPORT_SYMBOL vmlinux 0xec524c95 netif_device_attach +EXPORT_SYMBOL vmlinux 0xec53968c freeze_bdev +EXPORT_SYMBOL vmlinux 0xec647ea5 iput +EXPORT_SYMBOL vmlinux 0xec6d3aa9 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xec80e3ee journal_load +EXPORT_SYMBOL vmlinux 0xec9933b0 tty_port_init +EXPORT_SYMBOL vmlinux 0xecb3a5e1 clocksource_register +EXPORT_SYMBOL vmlinux 0xecb721f1 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xecc4e7e7 __brelse +EXPORT_SYMBOL vmlinux 0xeceee55b __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xecf3b4ad vga_tryget +EXPORT_SYMBOL vmlinux 0xed045fb1 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0xed04f5aa ip_options_compile +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed72c29d scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xed8b4edf input_reset_device +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed945810 mmc_can_erase +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xeda57094 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xede9bfdd jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xedeaaff1 pci_enable_device +EXPORT_SYMBOL vmlinux 0xee097d37 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3a0b92 current_fs_time +EXPORT_SYMBOL vmlinux 0xee584c90 module_layout +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee8f1113 mpage_writepage +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeed405ed genl_unregister_ops +EXPORT_SYMBOL vmlinux 0xeedd00a9 lock_may_read +EXPORT_SYMBOL vmlinux 0xeee4951e dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0xeef87e94 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xef03349e ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xef176500 dput +EXPORT_SYMBOL vmlinux 0xef1d35b7 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0xef4ff695 __block_write_begin +EXPORT_SYMBOL vmlinux 0xef6398db agp_free_memory +EXPORT_SYMBOL vmlinux 0xef66cdb0 dquot_alloc +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xefa05909 mdiobus_free +EXPORT_SYMBOL vmlinux 0xefab66b5 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xefaca40f dquot_initialize +EXPORT_SYMBOL vmlinux 0xefaf9c85 pneigh_lookup +EXPORT_SYMBOL vmlinux 0xefb315b1 f_setown +EXPORT_SYMBOL vmlinux 0xefb54588 redirty_page_for_writepage +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 0xf00ea5d0 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xf0169e86 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0xf02a4335 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xf04cd2c0 pnpbios_protocol +EXPORT_SYMBOL vmlinux 0xf05abd10 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065d8a7 kill_pgrp +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf088fc88 tty_free_termios +EXPORT_SYMBOL vmlinux 0xf08f4714 account_page_dirtied +EXPORT_SYMBOL vmlinux 0xf094556a tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xf0aedd7c scsi_host_put +EXPORT_SYMBOL vmlinux 0xf0ce7d50 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xf0d1cf0b dmam_pool_create +EXPORT_SYMBOL vmlinux 0xf0e1f2dd fsync_bdev +EXPORT_SYMBOL vmlinux 0xf0e79909 kdb_current_task +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 0xf109ebc0 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf11543ff find_first_zero_bit +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf12a5c83 idr_find +EXPORT_SYMBOL vmlinux 0xf12d331c lg_local_lock +EXPORT_SYMBOL vmlinux 0xf131f572 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf179c316 key_validate +EXPORT_SYMBOL vmlinux 0xf18242e1 atomic64_set_cx8 +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a5fe79 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xf1c366e0 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d254a7 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ef3e7e __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0xf1faac3a _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf207ebb9 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf233d998 scsi_host_get +EXPORT_SYMBOL vmlinux 0xf2357254 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24688eb jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xf25a2a02 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0xf27c3d0d md_finish_reshape +EXPORT_SYMBOL vmlinux 0xf2851796 __neigh_event_send +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2b41220 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf323e94a blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf335c5ad vfs_writev +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf33ccb06 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34fcc2c generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xf351101a i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0xf3544af5 vfs_symlink +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf374a3f9 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0xf37d6427 set_disk_ro +EXPORT_SYMBOL vmlinux 0xf37db040 __find_get_block +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 0xf399225b netdev_features_change +EXPORT_SYMBOL vmlinux 0xf3b0a312 task_nice +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3f1d47e send_sig +EXPORT_SYMBOL vmlinux 0xf3f2ca05 path_is_under +EXPORT_SYMBOL vmlinux 0xf4015749 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xf413fbf2 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xf41786ad security_d_instantiate +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4434be3 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xf444e81d textsearch_register +EXPORT_SYMBOL vmlinux 0xf46b7f5c d_splice_alias +EXPORT_SYMBOL vmlinux 0xf481d94c vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf496a931 get_agp_version +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a92b84 security_path_symlink +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bbaf29 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0xf4bc58cc xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6ca12 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xf4d197ef dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xf4d645d1 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf4f19e51 downgrade_write +EXPORT_SYMBOL vmlinux 0xf4f5f82c update_region +EXPORT_SYMBOL vmlinux 0xf502d273 acpi_get_current_resources +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf5344ba6 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf557ca5c kobject_del +EXPORT_SYMBOL vmlinux 0xf57c8c72 unregister_netdev +EXPORT_SYMBOL vmlinux 0xf5802343 dcb_setapp +EXPORT_SYMBOL vmlinux 0xf58cf42a pnp_start_dev +EXPORT_SYMBOL vmlinux 0xf5a851d0 vfs_readv +EXPORT_SYMBOL vmlinux 0xf5bd2e1e journal_flush +EXPORT_SYMBOL vmlinux 0xf5bd54ea con_is_bound +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5c72fb4 vm_insert_page +EXPORT_SYMBOL vmlinux 0xf5c96832 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xf5d318f2 blk_peek_request +EXPORT_SYMBOL vmlinux 0xf5d8a461 genl_register_family +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5fe3640 names_cachep +EXPORT_SYMBOL vmlinux 0xf60998c0 ps2_command +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf638ac08 open_exec +EXPORT_SYMBOL vmlinux 0xf64ab633 load_nls_default +EXPORT_SYMBOL vmlinux 0xf64fdcb1 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xf67c40ad input_register_handle +EXPORT_SYMBOL vmlinux 0xf6858c51 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xf68a2a3b security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xf68c082c create_proc_entry +EXPORT_SYMBOL vmlinux 0xf699a828 neigh_create +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6daebec cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ebfdf2 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf6fe17d7 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xf6ff6872 skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0xf70115b1 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0xf7131e92 inet_frag_find +EXPORT_SYMBOL vmlinux 0xf726d02f atomic64_add_unless_cx8 +EXPORT_SYMBOL vmlinux 0xf728cca0 skb_find_text +EXPORT_SYMBOL vmlinux 0xf737c208 iunique +EXPORT_SYMBOL vmlinux 0xf739996d get_fs_type +EXPORT_SYMBOL vmlinux 0xf745cb16 atomic64_sub_return_cx8 +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75bc434 files_lglock +EXPORT_SYMBOL vmlinux 0xf7631ee8 sk_stream_error +EXPORT_SYMBOL vmlinux 0xf7716a8c wireless_send_event +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7a466b0 __devm_request_region +EXPORT_SYMBOL vmlinux 0xf7a7263f acpi_get_physical_device +EXPORT_SYMBOL vmlinux 0xf7e37635 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf8268249 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82e3d47 acpi_initialize_objects +EXPORT_SYMBOL vmlinux 0xf844e593 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0xf849aa6c xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0xf854de75 netif_notify_peers +EXPORT_SYMBOL vmlinux 0xf889be83 inet6_getname +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf890fe7f pm_idle +EXPORT_SYMBOL vmlinux 0xf8982bca cdrom_check_events +EXPORT_SYMBOL vmlinux 0xf8ad0769 blk_get_request +EXPORT_SYMBOL vmlinux 0xf8c8deff default_llseek +EXPORT_SYMBOL vmlinux 0xf8d0ac10 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf8e21881 nf_hook_slow +EXPORT_SYMBOL vmlinux 0xf8f48b36 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0xf906430b tty_unregister_driver +EXPORT_SYMBOL vmlinux 0xf912670f mnt_unpin +EXPORT_SYMBOL vmlinux 0xf925652d sk_free +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf940a328 __next_cpu +EXPORT_SYMBOL vmlinux 0xf960b39e init_buffer +EXPORT_SYMBOL vmlinux 0xf9687f75 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xf97456ea _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xf97bb3b7 flush_signals +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9af01fc kernel_bind +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xfa23747a __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xfa30957c mempool_free +EXPORT_SYMBOL vmlinux 0xfa38e352 inetdev_by_index +EXPORT_SYMBOL vmlinux 0xfa47ae72 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xfa505d1c generic_readlink +EXPORT_SYMBOL vmlinux 0xfa833f01 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xfa8e41d3 free_buffer_head +EXPORT_SYMBOL vmlinux 0xfa942d3e mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb1be686 ida_remove +EXPORT_SYMBOL vmlinux 0xfb2ec2dd serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0xfb64a6e9 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb3ac22 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xfbcdb38b kern_unmount +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbfef383 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0a57ac pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xfc310bf7 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc52d22f make_bad_inode +EXPORT_SYMBOL vmlinux 0xfc562165 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc80ace8 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0xfc872fd1 get_ibs_caps +EXPORT_SYMBOL vmlinux 0xfc9c80e4 mem_map +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcaadb25 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xfcac0d40 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0xfcb414f0 arp_send +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcd9f09a simple_open +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf659b8 security_path_rename +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd03d00a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xfd07a870 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xfd13ab29 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xfd142da1 kset_unregister +EXPORT_SYMBOL vmlinux 0xfd3e56f8 cad_pid +EXPORT_SYMBOL vmlinux 0xfd448a6d ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd6f4850 native_wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xfd7d7713 acpi_exception +EXPORT_SYMBOL vmlinux 0xfd97625e dma_sync_wait +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdc4125c inet_select_addr +EXPORT_SYMBOL vmlinux 0xfdc53f78 __break_lease +EXPORT_SYMBOL vmlinux 0xfdc7f3ba idr_replace +EXPORT_SYMBOL vmlinux 0xfde963c0 fput +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe0be5f1 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xfe15499f tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xfe16f427 mntget +EXPORT_SYMBOL vmlinux 0xfe4bfac5 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe6b4425 __netdev_printk +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe9559bb fb_set_suspend +EXPORT_SYMBOL vmlinux 0xfe95c2b5 journal_abort +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff05da5c i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xff0703e5 uart_resume_port +EXPORT_SYMBOL vmlinux 0xff188521 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff22d82a mmc_add_host +EXPORT_SYMBOL vmlinux 0xff480992 dump_fpu +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff77736d neigh_lookup +EXPORT_SYMBOL vmlinux 0xff86f349 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa19009 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xffc7af6c fb_blank +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xfff403fc vlan_vid_add +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/twofish-i586 0x28afd262 twofish_enc_blk +EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-i586 0x6f068d90 twofish_dec_blk +EXPORT_SYMBOL_GPL arch/x86/kernel/microcode 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00af6728 kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01d25a76 kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x020813f6 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x02272721 kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x037edcbf kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0583714f kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x06767887 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x09c79319 kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0bcb5f2d kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c29df58 kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f74906d kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x12274967 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18e257ab __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19663989 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a4342a5 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1aff0232 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1da010f0 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1eace599 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f1e6a3c kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2433d6fd __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x24b387e2 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x255e5bb2 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x29654d5f kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f636c31 kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3093b88d kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33af78c3 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x344cc5bc gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35e23b73 kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37a2d185 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x398f3573 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3de08404 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3e252cc0 kvm_requeue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ee59a92 __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f2e8091 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4261de49 kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x459eb2d2 gfn_to_pfn_async +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46041142 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46edb47a x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x498832fe kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d4a00c5 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4f1259f8 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51023d7a kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x529458cb kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x55c51510 kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d53e6c6 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62f2fd04 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x67bf4c9d kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x690173cb kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a1e89d5 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c38deac kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c6d2e5a kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6db19e07 is_error_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70e96a48 kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74fbc94a is_fault_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x75629c2e kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7789b316 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c9b19a5 is_noslot_pfn +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 0x8ce4f3ab kvm_enable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8cf398f0 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8d9d336b kvm_before_handle_nmi +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 0x9181f795 kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9361ffa0 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9650f346 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bb813de kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1d307c0 gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa232d64b kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa91845be is_invalid_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaac7c868 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab98da59 kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac39f520 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xafbe1dea kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0a07e29 kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0f4433d kvm_clear_guest +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 0xb7988b66 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb9fb797a kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc1e8f5e kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b538e __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b937d is_hwpoison_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc9cdac8 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbf05ab76 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3830aef gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc420daa9 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5c411fb kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6346672 is_error_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc7469dd1 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcafaf54e 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 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 0xd296def9 kvm_is_error_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd31d876d gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd329e9bc hva_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5b194fe kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd68a4996 kvm_release_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6fbf9af kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdae7c80b kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde4c4309 kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe078692b kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe28e6ccf kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe3c1a88a kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe56e6433 kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe75c92cd kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe76f8489 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe779abd1 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8471cc8 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe8a7f6e2 handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9790e86 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed01b226 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef692ded kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfbf3dce2 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd01a3aa kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff4707fc kvm_set_cr8 +EXPORT_SYMBOL_GPL crypto/af_alg 0x041a8cfd af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x1eeba7f8 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x5b98248b af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x7e7cde9c af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x932552a5 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x9ac2b2fb af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xb4a3d5ef af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xf66cf310 af_alg_complete +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x1a6a4b5a async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x1f837420 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xb85a1ea9 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x53e789c1 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x8fd9a7a5 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5006431f async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5634cc13 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x57c3ca88 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xf9da1e19 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x574ea5c2 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbb40504b async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xdb0309db blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x16b982c1 cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x2e98487a cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x3526e527 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x391495a1 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x4c18b4d9 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x6c9e2e6e cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x8ea6d36a cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xcc4cd215 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xe5b29291 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xead63c8c cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x5956c265 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 0xf91ad22c serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x3eff55fa twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x41874e82 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/libahci 0x192cbe05 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x2155eccc ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x222aceaf ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x237d2a45 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x27b7abfa ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3445d311 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4a59d65d ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6ad3474d ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6b2e3e6f ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7e9150c8 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc6620528 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd42974cc ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd4309569 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xde3ecf9f ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdf4cf0c9 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe0deb7ed ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe85e2f78 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf0c4aad1 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x2eea284f __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xb74c7e5b __pata_platform_remove +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 0x1551b84e bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x25411d88 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x46262260 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x563a334b bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x597e7c8b bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5bc68f6d bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6f52b11e __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x898d8862 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa02fa089 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad22d60d bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xaff0a25b bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb6b25096 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbc3d9bf1 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcb9167e0 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xce1451e0 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x02dd3844 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x12307b7b btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1390f509 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1877b62e btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x1ad34440 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x2c8d9fe7 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4c640cb7 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x67287587 btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6942f0b3 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb41c33e2 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/char/scx200_gpio 0xbf6eb386 scx200_gpio_ops +EXPORT_SYMBOL_GPL drivers/dca/dca 0x24f2e8fb dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2e471f01 dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x3967c76c dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x3c8422fe register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x42ae7ba0 free_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8006c614 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0xbd2bbcf6 dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0xd9ab7f96 unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0xdc6a390c alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c613a2b edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0ee9ee53 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x110354c0 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1dcfb06a edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2a3beab7 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x313e0b52 edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3539435a edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x41f49019 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x4ecf90f7 edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5906b8fe edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x594f6058 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x60d7cb95 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 0x94b1c98f edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x979d82c1 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9eac8ab9 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xab67d62a find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf7632f2 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcff4080f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd2ef9f45 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd59987a edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdedb6783 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff9894e9 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0d38cee6 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0dc0b68c amd_unregister_ecc_decoder +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 0x233ce2e4 to_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x3eba1a17 rrrr_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x593ec4b5 ii_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x6d4e6991 amd_decode_nb_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xaeeba16b tt_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb0ca1fe7 ll_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xc2b73a3a amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x20cecb36 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x380579c6 extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x4486b909 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x86e1928e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x95c2ac44 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa615ef4b extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xb334f0ad extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xba8d2511 extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xbd20a564 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc5226788 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xd2eeccac extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe6b3a640 extcon_register_notifier +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 0x2e8ec591 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x76987a0f bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5b290d82 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x5bd80e86 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x35501da5 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x99829b74 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x10f2126e ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xa4ec46ec ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xd6ba650c ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x00a5464c hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0944b1fc hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0ab72047 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17adc684 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1a7f90e1 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21589370 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x21d5c947 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x261ffa1f hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x35096b7c hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4d6c7111 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x503b2308 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5486f9b2 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x60bf65af hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6dc1311e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x749c3ba8 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7893c84f hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7f8f245a hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8b0b12c8 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x92a00b9d hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa18b59a9 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad58685f hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb59de646 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbd4949e3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd06f745d hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdd0263bf hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe18fc778 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xea66da9f hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xec1672f8 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfde0b1fd __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x883cad73 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x752d1b84 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xef694adc roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x09386a17 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x280302a5 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x3df5abba usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb853e7c0 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x0d39ae60 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x117bf1d9 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x400f1929 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x62bc55ea hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73f6e6c1 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9549fcca hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa7af8358 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae63b896 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbc6952cf hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdbca7738 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xedfe4526 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf295deaf hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf33f05b1 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x2a75e529 vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x67ffe02a vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x76558676 vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa4039a99 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xa7aeeec0 vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xbd69eb59 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc0a912dc __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc91a78a4 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xdd0bea9d vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf4ce8e74 vmbus_open +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x0242f504 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x676fe479 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x71a08dca i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8191d756 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x94cf742d i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb4e0de43 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xd741abb9 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf19954d1 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf6b84520 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x1fb3bec3 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x13518ac9 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x2291721c i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x2871e2a9 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x6babcd11 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1b8365d6 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3c8a330f iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5055b449 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6d44ce11 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x76381f8a iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8bdf4366 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8f142e60 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa0b9f5b0 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa16b867d iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa7eaa245 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xabc8c424 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xb5ebe0ef iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdc3a715b iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdd62b887 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xdec7f11d iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0xba266751 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xa49d12c1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x1b8b250c cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x61200d6a cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x79c3db2b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x009eaae8 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x00d4cfdc wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x10b544cc wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x195bd5a1 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x286be514 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3627f406 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x64202f38 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x799e3262 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x920fa5b1 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa88a2fa6 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb3274762 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcd822c61 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x00ff068f gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0e1581b9 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1536f16c gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x265c14ed gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x352eb7b9 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x37789044 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x414fedf6 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x424ed98b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x44718e13 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x5d61efeb gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x76fe433b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x842a742a gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x94abcf11 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x965e8199 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa1687385 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xac3da782 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xffecb4d7 gigaset_freedriver +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 0x67dcc00f dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x6d3f57bd dm_bufio_get_client +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x74dcd98c dm_bufio_get_aux_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x7c381a76 dm_bufio_get_block_size +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x00594b47 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3de26d69 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 0x0a98fd84 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x203b192e dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4166e53f dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x80db134c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x8a5cae55 dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd4a6c37a dm_rh_delay +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 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x04353fb1 dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +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 0x1e3f728d dm_block_data +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 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x9b4b5b29 dm_bm_write_lock +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +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 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x4db76ba1 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x29606482 md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x12629945 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x14048c57 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x3b3c3b7b saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5ab823b6 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9654e0f1 saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xc7f5426b saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcdda1663 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xced23272 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xeb218d87 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xf30aad93 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xfa5e346c saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x3145c84d saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x36e53a29 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x3d6d192c saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x40d3bddf saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x718ffc5b saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xbbc914d2 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc35be832 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x093c6a37 tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xa5dc0a69 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xd38a093e tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0xaf5a76f3 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xd468780c mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0xc958ce3f tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x483638c4 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x91807771 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xb4679837 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x18f67c1f tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xdd7b0460 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xf717b923 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x201cc893 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x435066e8 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x8d4dc1ce simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x3c02e3e7 mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x7e307a3e mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xbdee63a6 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x11426772 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x126cb0dd mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x16e29512 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x1c98d09a mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x35ed538f mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x4f7a04d8 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x615198ba mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x67fe7c03 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x6b4f1094 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x6b4fc683 mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8abcab63 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8f57295e mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x92a60cb2 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc61ac787 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xce9147fb mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd9acefeb mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xdbebe26b mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x116da63f sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x19de7457 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x562d6e3f smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x6122c91e smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x618090b2 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63e8145b sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x81219fae smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x834e1f87 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x917f00ed sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb852b100 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbe9326a8 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6879a70 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6915b4a smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xd49c2176 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe245fa7e smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe70cc62d smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xfb0edcda sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x0221369a ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x24cfac80 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x3f1acb1d ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x4e0ce649 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x89b4e61a ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xdadc9a3b ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xf15c5216 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x583df975 radio_isa_match +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0x789c10dd radio_isa_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xb9a0b35c radio_isa_pnp_probe +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xbf9624f5 radio_isa_pnp_remove +EXPORT_SYMBOL_GPL drivers/media/radio/radio-isa 0xc534d862 radio_isa_probe +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1f7b45ca rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x232ec664 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x2c1e6d0e rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3aa94a72 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4ddc0267 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x58d2767a rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x73ea03af ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x74030e8d ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x87ca12b9 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa7c073c4 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4277c45 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb4fcb11b rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd44b183f rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdf346853 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe94dea0e rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe996f543 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xfec8cf8e rc_map_get +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x02bf6b23 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x29cb4dd9 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3cedea2a cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3dc2ff8c is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x439aeda6 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x666e30e2 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x731102be cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x76a311e0 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x770cb580 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x81286ad3 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8139b79e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8a0ff2fd cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x8c3fb99e cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x94cc4890 cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x95010615 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xba64866b cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xdad267f1 cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe7bd83cd cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xeee7fbeb cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x8f3521fc cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x009ca272 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x03e021be em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x04ba8b80 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x2cf46958 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x3179afab em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x55abd91c em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6b9b61dd em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x74128f96 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x88710bfb em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb2f1196c em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb3cb75cd em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xbdba8dc0 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xc7375475 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xca5aef5a em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x3259150c saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x5b26cda4 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x7aa999fc saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc7dc64cb saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xcc38b166 saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x0748ea08 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x54a0c2b0 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x648cc74d tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xa7980abd tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x06b5100e v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x1936b1d2 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x20219995 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x69e4b541 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfb5766b6 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfd27d76f v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x27a26dc7 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x30ef1f2a v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x4ac4bb06 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x61befdc1 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1088c478 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x2c174230 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x618af06b v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6ba4b87e v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x7445f212 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x7524819b v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8c6ae7e3 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb7835d3f v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xbec4f1b7 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc53f001c v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xe014fd9c v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf1f27f02 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0c9e3519 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0eea6f36 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x339059af videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x47f4ef87 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x60398732 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6c2241eb videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6e15d6a1 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6ecf020f videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x78df7f96 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7efdd0cc __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x84667a91 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8c5d8be9 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9bdded13 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa040294f videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa2c89c35 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa3e6453f videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa3fc72fb videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa9a3fae8 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc4bed77d videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xd7b2c915 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdb66b747 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe46acba1 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf54849b2 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xfaca7ae2 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2dbe995c videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x311701e1 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x34d8cfd7 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x673fcb02 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x23ca2f53 videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x4180384c videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x53d3aae9 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x90549b37 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa16cb4d2 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa3cacdad videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xca114bf4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xd746f04f videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xdd86f987 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x98000fc5 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xbd8d9cb1 videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xf7d95579 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x169dbf61 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1c9e3fc2 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x24365c4b vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x2a841ecd vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x42445b85 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x50bead09 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7c0946c5 vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x82b9aaec vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8b78d454 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x901dd089 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa4dda2c4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xcf289ed0 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe971d228 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xea4e8e69 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xf6783aeb vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xf822102d vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xffcec0cf vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x134a2c29 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe3a63e22 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x8415bf2c vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xc2faeb59 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xd67d7ccc vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xdd53e1f2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xf7b67888 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x7d5c6b8c vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x0d3e3312 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x17256979 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x18593547 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x264b50a5 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x318eec3d v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x36123c0e v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x48576800 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4bec5b00 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x51335293 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x55cbc178 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x71926fe4 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x79310fb4 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7e50a157 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9513c74a v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc8eb8fb1 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd2d57c8c v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd92393ea v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd9bf4396 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe5ff68b0 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xec4db234 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf6214965 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfa05389d v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x00bfbac2 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x282e3c80 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x4826778d i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x59bba31c i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa01c51ed i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb57e5be9 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe0f030d3 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe1eab8b7 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x2ee51d73 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x4ebf8f52 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x96719fd8 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x2c7ec434 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4fb68664 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x88aa03a6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x8a1c7201 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xb6364f89 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc12c246e lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf799d87b lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x1474a79b mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xa1bfcd0e mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xdc7ee7d1 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0012be5f pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x14bc19b6 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2fbcfef3 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x3382c0f3 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x819d4576 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9019cb8d pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x916798a8 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9b8eb92a pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xbb9b5c55 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe2fb26c1 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb7d7877 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0a83d080 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xae367ef8 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x04d3e8c2 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0bbe02ad pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x1d271da3 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x76a01af7 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xc0cc4168 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x044f20a6 rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0bb1c5b2 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1d53f88b rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2e62fffa rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2f8ac732 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x41e5b7b4 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x50dbe854 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x521edc5a rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x546e93d0 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x69400642 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8020e061 rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8f80bf13 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x92cb8ffe rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9cb738aa rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xadc48074 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb03591c0 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd53d4b1a rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd6829823 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd922d61a rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf1844b36 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff63b366 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1ea46172 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x6d011417 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xac4004da sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd601e82a sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe263e66f sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x28a27ace tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x6a357db1 tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xa25cf7c6 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfc2b0ff1 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xad347f9e ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xcc144dbf cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xe1313820 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xea19f88e cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xee5e282e 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 0x094a4171 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x218d9362 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4877c628 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x55bcc73f enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5d004762 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd3a495ce enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xfb524a62 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x15f992dc lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x2d3a5ae2 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x3966b6c4 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x432b67c2 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x4e4cbfa0 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7e5796fb lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaba114d3 lis3lv02d_remove_fs +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 0x0942247a st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x996db400 st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0652d505 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x44e8f300 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x52fa2fdc sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x89215926 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x91deaf31 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x936c1cc0 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xb0724cc3 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd3517078 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xf18e4e55 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x31ab3c17 sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5ec93419 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x68263042 sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x912e28e8 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x94bc58c6 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd2779e04 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x06bf93aa cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x595b891f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xa025e1b3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x24d9320f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x741e6a1e cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9b110765 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x7fa1bec9 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x78d16c9e cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xcca58f00 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xd518d81d cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xda09daaa DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0cbf8c4f mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x10c0e126 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17587d67 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x241f6277 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x24da25ef mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2512ef30 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x25461c66 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2ae5defe mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2d8975e1 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x417816f1 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x41c782e1 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x430966d3 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x44bbe80b mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5bbf24b3 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6196158e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x61bf48bb kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66c81507 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6746b19b mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6fa93149 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6ffe19bc __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7d5704af mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8648a075 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9449333c mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa7bce8c4 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8b47fd2 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa951c934 get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4fa97a4 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb8090953 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcc59721 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbcd907a5 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc1d6393c mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc4e85124 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc89e0377 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcf4e2ee0 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd90086b3 mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf3f84bf0 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf5ec9010 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfc02d4e0 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfebcfc2e mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x10abcd1f deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x338d9fef register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x49cfee35 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc057dfc4 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xd753ac4b add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xb87961bc nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xbf27829c nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x3ec1bbc7 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xc9739d10 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd94bf0e8 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x124128d6 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x1f47af93 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x308698a4 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x38e10c1d ubi_flush +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x42801d20 ubi_sync +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7242b18d ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b9a5ffc ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e27ca3a ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7ee2682f ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8935420a ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9add7719 ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xbd5f7f93 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc906128d ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf156b9ad ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xf578124c ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x37e60646 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x62032105 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x69127d2f alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb52b86ed free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x09dfb52c unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x136d477b can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4607b230 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5cdcf398 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x608b3f22 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x61190d0b can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8a7bed70 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9c7c0dfc open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xad9010db register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xc21d93f2 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xe9bf777d close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xef4a522d can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x09f029d0 free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2c852f31 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xcc844386 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe9b9f8bb alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x5b7cec16 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x8559142e alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb4fc191b register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xf57aaefb free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01d64bf5 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02bc02b8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0c271efe mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10b0ddfc mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13ecdd06 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x160bef80 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17c087eb mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x24347237 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x26b91102 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2905cbc2 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29e7e078 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f0bb806 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2fca6f71 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31022901 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31e4df77 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33e0ecb2 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34e01200 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ac3bd20 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4753a0dd mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49b84f12 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4acb1481 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4adba563 mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4da288e6 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x52f564b2 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x608803de mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x61d2e59a mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66b2c7ce mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d2cba99 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6d756f12 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e166be5 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6fa95120 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x71d43887 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x73406ccc mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x75a0232c mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79be41c1 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7c8f6cd6 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e38b070 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x813910f1 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8568ed94 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85a41466 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85fc6f76 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c2636bb mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fe1a09d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x95801c96 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9842d25d mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x99351602 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa165ba28 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa2bd2a5a mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa89b77b1 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xacab629a mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb006a8ef mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb60c64c3 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba07d02f mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd75f455 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc725e750 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8abca86 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd2d5a529 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5861dcb mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7384264 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc3e8fa0 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xde3b8421 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe269c63e mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe38f146c mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6e0e6c5 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6f4c566 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea15c50a mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeb4d647d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeceb25b5 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xedbe02d6 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf0700c60 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ec6577 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf89440dd mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9622028 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd7fdf2d mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x28fa78d8 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x92407cc0 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb6485d65 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xc6cf0f75 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd8802624 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x04eb1534 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x0a40117c usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x100718f0 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x97bfe270 usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf7191201 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x181acf7f rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x53befb22 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x675b2abf rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbe632788 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xbef94d88 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xcb43a42c rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x03bd30bd usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0df44709 usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x111e5744 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1370997e usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1b3e4a13 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x1fb436e7 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3a165a60 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3c26b27c usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x514bcbd0 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x56939c16 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x764db721 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x790f1082 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7f6101c5 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x835acbcd usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x89ea69f5 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x976f8498 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x990f6eff usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbeca5c30 usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd448892a usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xde340f41 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe0cdf953 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe2aa766f usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe7aee839 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf6269851 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x06175b2e i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1afb0d10 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1b518ebc i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2770e500 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x30733429 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x376a818f i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5b343d0e i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6c9ccb50 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8c58cb6f i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb0a893fe i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb1224f5b i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb8aa26e2 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc491cd64 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcd9df739 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd85fb356 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xef939abe i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1c820b19 libipw_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0xcbd26165 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0ac59d7a il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x1de42186 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x5f5efc48 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xce674c22 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xdbce1d10 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x00858f1f lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0e70ded8 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1fb22a30 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x3f1b046c lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x55544bc8 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5dbac786 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x84828348 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x86eff030 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x88e04510 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x9fc45bf4 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbe63cf9f lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbfef2d9d lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xe24c5d84 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf50ed3af lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf8f32c52 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xff93e3ac __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x0b613c2d lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x21cfd732 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x4e350a7c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x96907b5b lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa2e5abd2 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc4b2575e __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 0xd97fd89e lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xf77f243d lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x04315587 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x5a46918d if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x092b5eb4 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0d840cc1 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0f9e2214 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2ef30a08 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3da58cc9 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x40d25d12 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x40e04f26 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x53c5283e mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8797f604 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa9d19829 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xc94c812a mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xef29e7cb mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xefb270d3 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2c2ddd2d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x4d8de22f p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x54bb9666 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x7d9f71ca p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x90d82379 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xbb9ccf7e p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc1c9633f p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd686b0eb p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xfdb85e20 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00a9e182 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x00d07cb4 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x11dd3667 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x281a9849 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x30112174 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3c258c5f rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3edf694e rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4298aef3 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x43112fb2 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x49758c61 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4e0d22e4 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x50edfbba rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5766bc44 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6195f357 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x667152d0 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6b3f795e rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7614ca93 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b30b160 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7dcac26a rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x92814ea0 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x928332ce rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x95be9e27 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96060e3f rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x96b72ffc rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99b5a3eb rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ed49701 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9f67ee89 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa9534560 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb3670f46 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb69f4786 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc15b8274 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc52807b3 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc5754706 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe18de62e rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe874d96c rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe9c329a2 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec645095 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed987f2a rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6ce5280 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0d1a9a45 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c2af7a8 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1f9e7253 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x221b2e93 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2623c414 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x28a691d9 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ac38d69 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2df0f1b2 rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2fc9fbfc rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x320b018e rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x338e6552 rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3fd9b901 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4077f213 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x425afc78 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b1da2ba rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4b47d61f rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4d3291ba rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e8363df rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4e865c2e rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x57bed0f4 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5906354d rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59d3184c rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5caefcab rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x60c6a609 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x679544e6 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b9bb13d rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6db69d37 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x77a9a66c rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x90912e36 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9f127730 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa0d63c96 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa7dfc36d rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa7f27d53 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa8b692f2 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb581df4d rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd0258ab3 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1ffe6cc rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd71713da rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc21acef rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdc7497ac rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe17b13ef rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe1eaf354 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe48b6f94 rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xedd201a2 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xee01b687 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1deb313 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x334b5f8b rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x704b18f6 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x9570562e rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb12585fc rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb422077f rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xbcb9ecc0 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xde0b8bbf rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe1a2d07f rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf98da47b rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x296847c6 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x33bca9f7 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3856c0d0 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3a3d77d8 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x519bb7bc rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x74d1efe5 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9405b8bf rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9ab5713f rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc08ae618 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc6d2a258 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xcffe1cae rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd6e2a327 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd874bf26 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xe1946669 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf5f908c6 rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf8a7c452 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x2a87b497 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x7285b304 wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd248803b wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x03003895 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x3116d41f wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x460e2265 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x566d23e6 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5800386b wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5f8d04f6 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x71abf831 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7356f2dd wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x90d1b5eb wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9393b8b5 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb3561a6b wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb9c67681 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xcfe4ee30 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfba57503 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x7fa3a8ee acpiphp_register_attention +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x8486119f acpiphp_unregister_attention +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x63b85aa6 asus_wmi_unregister_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xdd6424df 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/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 0x00473dc2 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x301da5a0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xeb5344ad pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x13d31360 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4921afb7 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4f91de56 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x55d433a0 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x7e361f5a mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xe0dbae23 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x20df6cc7 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x51daf9d4 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x5b7074f8 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x897a05a8 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xda885b9a wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xdbf07f02 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xefb2932e wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0211ba5d cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0d07978c cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x11f898d3 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14408fc9 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1b6c1ff0 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1bc4efbe cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29b3deac cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2cb90110 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2d63c7c8 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x30280c68 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x31d02f68 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x36952256 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a8943bd cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3bd7c94a cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4eb8d7d9 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x57366a34 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5c34af77 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5db6aa65 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x616b89e8 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x63a72204 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6957e443 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6980bcb5 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6bfbb3cf cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6ddca9b8 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7cea6dfd cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x80ff8ac3 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84c37572 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8831ba6a cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8aad2d46 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9274b81e cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94b40630 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3992fc3 cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa3eb3e75 cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae4e8523 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xaf8386c3 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6847e88 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb78693a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbe24e9fd cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd605f378 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe5ff806b cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xeb1468ad cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf6b5f010 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfcffa54e cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfda4614f cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x04ac87e2 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2878033d scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x2b498992 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 0x800615d1 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xa1ccc5a2 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xd5425208 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x137b0a03 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2ffdbab9 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4b322ab9 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x55a37a31 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x63c7d275 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x741393ad fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8047f71e fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8ff8d48a fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa9ac9261 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb336ae4d fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xb61d1914 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe24ece1b fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf5a2b9ce fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x58904f84 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x708324f8 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x71db3963 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9a68010 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc2fb4eb8 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xe4e9052e iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02cb78db iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0825827a iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1290a84b iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x13bd9927 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x142e5ba9 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1cc1412c iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x23b49fa1 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x24b7c172 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x273cc0b7 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2c80066f iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4ae061d0 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4f499dd2 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x503f0e79 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51ab5087 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5244cd3b iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x53dc3d87 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a1a1d02 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5dd95ae3 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6688e383 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67b11439 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6c6debdb iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x70b9b03f __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x76f5b7e0 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f61c79f iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f70be07 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x804069c0 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8aef30f3 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8b8391a7 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x938f2c6b iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x94752ce9 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa6d83c34 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc3701d1b iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5b7a94c __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcaba01e7 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xce238626 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcf76d476 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe242504a iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe57bc294 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xecc5ab1b iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeea95de9 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf34a5e4d iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbfb5d41 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfc0e872f iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0d03685f iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x252fba75 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x442e90e2 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x75e15ac5 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x75fa915c iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7618d58f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7d5cec7d iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7e3216c7 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7ec2add0 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x830c5e64 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb605998e iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb6936615 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbf84dded iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd2f96313 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xebe1e062 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xedc50198 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfca57264 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a694c39 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f1e5902 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1722ba8f sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x26237567 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3081b0d5 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4218196b sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x48e8a8b9 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4cf67858 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x54875c14 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64a64c8a sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x657b7fe8 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x74172da8 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8287405b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3dc64b3 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xaf07b1f7 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb04919b5 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb8ab8489 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc4a4408d sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc9375319 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd3c566e3 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd49d4d2c sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe88dce85 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xfb237ab9 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1abc6b03 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x252dc422 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x3246660d srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4c779a7a srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x89ded8ce srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe8dfa412 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0ccfaf54 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x12ea4ff7 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x187aee6a scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7e22e5aa scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xaa7ede22 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xbda3f2d7 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd1316ef1 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd3ca4699 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe4182c4a scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x026e6533 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1aab9c01 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1d2f6e9a iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2f39aad5 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x33722830 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34c62331 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x373a8207 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3d8c6f8e iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41b4e8ab iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4362990c iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4c5a9972 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x513cb689 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x56585869 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x606cda11 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x68db853f iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6b262966 iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x751dd03f iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x771365fc iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x77adfa87 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79640523 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8460d6a7 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x91eb3b06 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa085311b iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5ad529a iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xacd9f5ba iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbb8f3ef8 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc24474f1 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4a866f1 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd640a927 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf4bec33e iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5a63fd7 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfaa665e9 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2554ac42 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x3494cef9 sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x35a84eac sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xaca72786 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3052a4b2 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x649f1cb1 srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x68c383bf srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa686c548 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xfabb4c9f srp_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0ad44ed2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x35e401b5 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x4ff4e390 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9b8e76fa spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x9dfc1981 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xb9de518f spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x64df7acc dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x69fbb4b4 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8dd617c9 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd161f270 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd6fd09ab dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3291e5fc comedi_get_device_file_info +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x38186533 comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x3c1268e4 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x77a1cdcb comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7cee4bd1 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x8b09e7d3 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x98edb4a2 comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xd14f0967 comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xf50526c1 comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x80335a6e das08_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x86fcde20 das08_cs_boards +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x89195048 das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x25e55b95 labpc_1200_is_unipolar +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x45eaa622 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x8285332a range_labpc_1200_ai +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xaf1e4347 labpc_1200_ai_gain_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xdd773c58 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x22cca26c ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x284542ed ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2cc92410 ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x4683dec8 ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x8188912a ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x93aec333 ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xb9a6bed2 ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe790a018 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x430b7ab7 ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x48cc07ad ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x5dd3d782 ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xaf684839 ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xe35b4e48 ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfed8843a ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x030af1aa adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x23b91c71 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xa31b80a8 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb8930692 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb9eb2d10 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd325dc0b ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe8fc3a3f ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 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 0x2a69e80a spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x30dbca29 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x3385a398 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4f19ce72 spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5f23a9c8 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x62a50122 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7c39f188 serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7c596e7b spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7fc8c368 spk_synth_flush +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 0xaf7d501c spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +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 0xe0033b1b spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7cd4558 spk_serial_release +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe7e810f8 spk_serial_in +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x0f506fd9 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x464ed5b6 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x49fbebec usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4d9b0abe usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x531920ed usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x61f999c2 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6280cd35 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x74b3ec27 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x752fc9d9 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x9368b9fa usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa86aa39c sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc1311bcc 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 0xffaa328e dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x1a010328 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4009360a max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4ecb3bc2 max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xa75da02a max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe61e9926 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xf1abca94 max3107_remove +EXPORT_SYMBOL_GPL drivers/uio/uio 0x5afed215 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xa9ca7822 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xfc4221da uio_event_notify +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x88226e0d usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x8a933118 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x0d98c129 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x786c58c4 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7efa6f6f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x873aba4e usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xad989dca usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xc4211c1f usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x015dbd2d ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x05b07992 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x093cd893 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3ce9b813 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5744700e usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6ac321ba usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x6f06e884 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7c416ecb usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xb2109ec1 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x5e351b42 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x66460b58 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0xbe8a53aa isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x00b632c9 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x07ded17d usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x087c46a5 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x225d7449 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x261a66bb usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x347afcad usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3bc6ee89 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4fc106ba usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5867764e ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5d42a0ba usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x77ef8394 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x945be695 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc53e0235 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc64c8fce usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8a90691 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdc3bc34e usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xdcb57b68 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe72e5494 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xfe931511 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0e610e4d 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 0x1c038f38 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1d70ba89 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e15616c usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2e81b75a usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x322f6cfd usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x61af32ca usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6cda76cc usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x959db255 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xa763d10f usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb3e79f4f fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbbe891c6 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbe394b07 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc5b51546 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd09e9f4d usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd0bb3aec usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd1f6b025 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xdf8133a2 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe130ef98 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xec201e0e usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf744e5ff usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xf74b2e66 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x23b1d4bb __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x2a567774 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xa78a54db wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xc97013b6 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xd92526c0 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xf4654c3f wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x06166837 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0cab195c wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x333185c1 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4e0bfb6e wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x664257f8 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x698cc7c7 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6b63d0f1 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8beb8827 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x943ea37a wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9919b7a6 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa399f76b wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc49cace7 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc8c261b3 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xca5fe73c wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xd42222b2 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfd08fc09 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x5a913c7d i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xa93caabb i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xbe4e8092 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x298d65a6 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2eebf07b umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x30ee9f9e umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x32113816 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3602ee33 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6c3c09be umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x8e7dd286 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9b136236 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x03003662 uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04f845a1 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0690afed uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0f9f865d uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1495e243 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x161f1b88 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1b98d98d uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x379f1b77 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x391d757a uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a2ddfca uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4f05f6c7 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5679fbae uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5996fce7 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x696a67d7 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6f176fab uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83d2a877 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x851ca07c uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8a5ec480 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8b491122 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9ed01455 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0a0e39b uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb5d35189 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc1725d1c uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc751f11d uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc8c9d318 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd2d77df6 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd30c3470 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd7d53448 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdaf25e28 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd3bf201 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdd4ae3b1 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xde515fd5 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe351b536 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec12d037 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xee890e51 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf4cc4fb0 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xfe1c7488 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x14f3f972 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x192796a2 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x36a2cac9 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x541c1d45 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x64a8f975 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x69263b6b auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x74f33a34 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb85906e5 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xd7aadc87 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe006aa1d auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe07fc26c auok190x_common_probe +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 0x04f662e2 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x0ce70f81 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x49965f33 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x546f5b58 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x696db4e8 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x787e57da ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xf3d6067c ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0xc64ce026 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x7ca74e1f fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x9b7f7643 fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x7c9da956 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xe2cff130 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 0x49f1bc3f 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 0x072c5652 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x3f93ccd6 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56401fd6 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x8258e7e0 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x86caf3c9 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xaf0c3e7d w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0xb5a19637 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0xc8ca5d30 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd59951ec w1_write_block +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x20c3590b xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x4724ad12 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x59822d73 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xaa036bdb 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 0x6acb9816 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6ed446c5 nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x9776f6bd nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x97b88a91 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa6f4bd47 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xc9a9ba0e nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xec729c7b lockd_down +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x075e946d nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x09ad57e1 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1101597a nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x124849cd nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12a2bc4d pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x12d42c1d pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x13b2cbb4 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x167cf723 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2914da73 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b22f866 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2bcc77c5 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31e5968f nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3293a357 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x32f671c8 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x391ea6b2 nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x470bc25e nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48045312 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50beaa1a pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x525d49b9 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5b4c7cfd pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d442f50 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e4c1cd4 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66c5e148 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68b96ac8 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6e7fd53d nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70a56d44 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d59d43f nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86128d36 nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88d2a18b pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92c74188 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9717c457 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9dd6e493 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa55b6e20 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa625dbaa pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8655175 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xad13227a nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb6f30f52 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xba7e2b51 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbce11b3c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1aa6229 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3b17f5a nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xceafef2d nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb828a33 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xebcd0eb1 nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedb1da06 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefcc95a7 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3dbc147c nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xe184629c nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x12db34fd 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x39184ee8 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6142d8ca o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7bb05093 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x7c860cfb o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9ff5791c 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 0xb0cf6314 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 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 0x35b5fb1c dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x71651a6f dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8871a92c dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa52dc4c4 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xae35840d dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd4ce8509 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 0x29cb99d1 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x4424ba0e ocfs2_stack_glue_unregister +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 0xc547d163 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/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 0x1654a71a garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x271df61e garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x572be68e garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x61198bae garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xa604b970 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe22f4709 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/stp 0x5fa354f3 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x77fa3a2c stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x528826bf p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xf403ec3a p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0xa6bb9ebe 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 0x4f79a556 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x17aefb2d dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x18f1a2c3 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x29de2e12 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3709b790 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3c961df2 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x42906dcc dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47b49c1e dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x47d0e467 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b7278e4 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x542278a4 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5df76cf0 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6727e218 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6bd92c55 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7326e5d1 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x744b108b dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74b685f3 dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x794b2422 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7b833b4c dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7ce1766c dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7fa40511 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x80a311e5 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8eb68a86 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0x94ec9f31 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa327638f dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa6a76e52 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xae5aef56 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb57f3085 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb5ef20a4 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd145710f dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4a26abf dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda9ee5f1 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe27407eb inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xea920f34 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf04043f3 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfad9e601 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x39db5833 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x4c124864 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x5998fc85 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x95791b93 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xaa4e91b2 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xadabe40c dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x41b457ab unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xb11be4ad register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x6012d170 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf9d995cc gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1096184f inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x30276083 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x4bffc60d inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x89643857 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9cb7595f inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe0a96622 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x7b3e7beb arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x99c94f09 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x9021941e nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x374a002f nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x81ea574c nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x8d796a18 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xca2b76be nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xf3b7ea55 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 0x2125b209 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x47b740f8 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x501532ae tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc901be2e tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe8ee5b95 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x222e7171 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x149a6ec7 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x19352036 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2ee128af l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7ac6928c l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x82a0d5b6 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9c2c84ed l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa741f92f l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa75fcf59 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb41b2e51 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xea6cbdba l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf7854cfb l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xff4f5060 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3c6d7e0c ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ea3c730 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xad1dc4af ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb54c91fd ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc4f3e4e1 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x01c29c7b ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x4124762c ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5d125f33 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x71e5cec5 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x77739dd3 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x78dbf42e ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb520b7e7 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xcbc7875c ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd6a326b3 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x37ab30da ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6bd01ded ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x73066a2f unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xef3a75e7 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b5cf2ad nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1148cab7 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1a7e5f40 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2059d3f0 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24ee3e27 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2645904a __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x312e68b4 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x33028933 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x378acf29 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3a2cf79b nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3ae296b9 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3c262d98 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3fd8497f nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4655a2e6 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5484998a __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54af2bd0 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5c7925c6 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6103871c nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x61e0867d nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x623aa65f nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62fd4bb7 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6500992c nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6538657c nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a69f38c nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7069ecc6 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7463c064 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a889be4 nf_conntrack_lock +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7ba13062 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7bbb711a nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7d633c3e __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x80de41d5 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86d8ae57 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89f7acfe nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ef0f7a2 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f89bfba __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9024ee68 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x90ff6c9f nf_ct_invert_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9985f148 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9c8b5587 nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e213ee4 nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2730d3e nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3cc39f5 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa43cf797 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb2f639b0 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd4db56a nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0e4d9d7 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0e8dc19 nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18e72f4 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc25c91d5 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6cd5058 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9200785 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9d722b5 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcdff56b9 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf58c039 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd12a98fd nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd31a068e nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3563cc1 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3b075c5 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4bd4c36 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd74665ab nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda5a559c nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdac11e0d nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe242c037 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe375ebb8 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe687c198 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7841105 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe8f77c8f nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x473522db nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x1a231c74 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xef6fe487 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x263035a5 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3689ab0e get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x43337cdb nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5b83954e nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x75f6c78b nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x88d35dce nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xbb0faf55 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc2147ae2 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xd1a9ad79 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdec9b5b2 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xe973e7ab nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x1d47b33a nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x2cb4514b nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7d9401c0 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd6f42a58 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x6bda2e2a nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xbcb7e4ba nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x0d468338 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x14135960 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x1514d1b0 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x34af0717 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5cf9cd0a nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5e4a9285 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6213ba28 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6f29f32f nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa37f88b3 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa61d8191 nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb8462587 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc1d3d465 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd1004e93 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x72c02d05 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xaf1137c8 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x6f5a068a nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x15d91dd2 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x767fc349 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x82c00830 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa702756f nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xada535df nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc5ff44b0 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x06f4b194 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 0x77da8177 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x08f61226 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x19a8bf93 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3cea79f7 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x46d77dcd xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x59a1f9c8 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x76ed9a02 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x88484b19 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb61f1293 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbf145eb3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe7bdcdec xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe8fce2f8 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfeb68205 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfecbc39a xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x133e13b5 xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xf7b03908 xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x00ea88d0 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x158e13be rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x1d584e7d rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2dfab125 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x2fe6f317 rds_message_addref +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 0x496d690e rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x4ca9d82f rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x5b4df1ff rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x66c38220 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6d26ca87 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x6fa24ed4 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x73845dad rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x85a548da rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x90274184 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x90c251bf rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x9ca76ee1 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xbbc2a9c8 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcc8c1107 rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0xd101ae3d rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xd49104ea rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xe5ad54b8 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xeb17467f rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf1b65142 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x1717639d rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x8a8b1237 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 0x0a509e63 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x0f3b774f gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x10c848a6 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x1c0182da gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x4caa61f5 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x680281aa gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x84b45c04 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa725352b 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 0xb98e4685 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbdb41a30 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf11e2718 gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00587bf8 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03c5af41 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04335063 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x059e74f4 rpc_delay +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 0x067df70a svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x076b7c8a sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x098d744e rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d154478 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0da5634b svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f7fe51f svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16cd6646 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1782bcaf xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17d59224 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x182901cf rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b004ebd cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d8f5395 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e53b9b8 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2390b217 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23ec54c2 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x240422b6 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24fbfb6f rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2642ebab rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27508eaa rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2778f731 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2892bcc8 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28a3b351 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29410bd0 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cda14e0 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d218963 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d2eae8b svc_authenticate +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 0x30972009 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31c9015d xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x339c2a72 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33a309dc xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34076694 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3612a2db rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3842a30d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a22e24c bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a8e90ae svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b2e6339 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c507040 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3cc9f447 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e211f6b rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f3d847b xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4141f9b4 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45a60f39 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x467beeb8 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x47fb803c xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x489b7e60 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49096a48 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x494eb91c put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d961189 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e116ec5 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5106293b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53d59753 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x54906145 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x55956ed9 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x568f14e2 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57111a76 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x589ee932 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bda270f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d3e0ca3 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dcea703 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x60e0974b rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6175c6d8 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x618bdbd6 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x61b4a9b1 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6226d969 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62318c09 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x627166ce svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64cdaf50 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64d44d77 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x655d06d6 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b5059e rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b17883f rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b7c0b60 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6bac6478 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d8eb886 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e43905a auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e5457cd xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e776ac8 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x718fc1cf xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x73a18b64 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76bc0854 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x782e0982 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x783f5764 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82aaa66d xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x82d6d93d rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x831e7f3f svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x86f292b9 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87424567 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8812fb87 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8910fdf2 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a31001d xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8be8e0f4 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d218dc7 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d56d08d svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dec03fa rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ef138ce rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8f94fb31 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8fb3e56c xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9149e5d0 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d53aaa svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x937477fe unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x976f08c5 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a2f4f89 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9afb1f85 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9ba2144e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bcabad0 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c14f208 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2779ef rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e8c97c6 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fda1d57 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0096c59 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0b84bd4 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1c43144 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa21619c1 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa318690b svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4781809 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa60d530b rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa710e810 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa85b3788 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8667875 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9ab095d xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa8633df xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac58bb45 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf350748 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf890a9e rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb23533a0 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb26e1fe5 rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a0ab47 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3d4ebb6 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb5e6bde5 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb96658d6 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9e0d7fa rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9e27b9b xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba4b6475 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba599a77 xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9479dc rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf87d496 xprt_release_rqst_cong +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 0xc4d87efc write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc53827f9 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc70a17b6 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc86a06a6 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcac1e41a rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb2713c0 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcba6dfe1 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd50ba34 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdc50311 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd246353d rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd35902ef rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd4918580 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6134445 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd67211aa rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd800007a rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda005603 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdcb0e5d9 svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde8e0835 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfe33174 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe38be080 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe57335c6 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5db9860 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe900d139 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea9b86b7 svc_auth_register +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 0xef2d35d3 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0efa62a rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf16228a3 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1cca8b6 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1d7db53 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2ca8a9b svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf74f743b rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe589906 svc_prepare_thread +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0e90fa10 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1a72c48f wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x35546d94 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x5df7fa6c wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x6c774511 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x73009f7d wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8bc4f23f wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9ab5b20f wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc15eecd1 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc31d2a9d wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcbea2cd9 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb9b435b wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe2fdab45 wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0aa0b3db cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x19e130d3 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x207be640 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x37e241a5 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4553290c cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x880bce1f cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xa95830e0 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc669aad0 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xcca7a48d cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd3a38720 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd6571594 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd3ac4ecd pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x705c5b51 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x9c5af02c ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xd93456a7 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf1479141 ipcomp_output +EXPORT_SYMBOL_GPL sound/core/snd 0x0cadabf7 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x13570ca9 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0x7aa342d1 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xc2f00453 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xd48a3616 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xccad1c2e snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0ca69c96 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x468ab34f snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x731adb8d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x7d1624af snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xa78a4281 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xbe02b048 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x017267d2 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x01fd744d snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059129d8 snd_hda_unlock_devices +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 0x06a1efb1 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0c5f2e4f snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0d8f0360 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0dd634a9 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e4e6c6b snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ee403e6 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f0f7a74 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f21de81 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f6a18bf snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10ad06b0 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x10b00914 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13c80894 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x141c041b snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1649aebb snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19025f02 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x19ddc433 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a90205e snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ac361ca snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x221d3f5f snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2330a7dd snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x262d45ab hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c6a7a2f snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c739f10 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2c8ea949 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2d23ca0a snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x328cf703 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x34ddc617 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3684faf2 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x36d6229c 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 0x397627bd snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3be95252 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4168bc92 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x42fa8270 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46005c24 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x477f1860 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x48e8f490 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d2d79fe snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4db7535d snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52a889a4 snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x573435d0 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x589909bc snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a849c34 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5b1522aa snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dabd9a9 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5dbe06db __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62ee13c7 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x62f0a264 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x630070db snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x678d6baa snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x69fc2661 snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ff68365 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x71b88c34 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x724fcf5a snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7894d40a snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7d64cf60 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7fada7e4 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x826995c5 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x831349bf snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83933a77 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83d33f29 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x849a0455 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c01ddbf snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93e45eb9 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x95f28d65 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bccdcd2 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9be9e18c snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c241dda snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa40bb877 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa6a15c6f snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa732af49 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa6358de snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xabee3653 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaf0fc9aa snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb1a5bd9f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb2623bdb snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3529c59 snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb3be15ce snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb49cd877 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb50416ef snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb71b2fee snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb754d731 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb7f56199 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8e7a574 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd22ef58 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe5bf45c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbef97070 snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbfb101c1 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc063e8ea is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc064eada snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc145d8dd snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc82a6641 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc8cf85c8 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca885cae snd_hda_jack_tbl_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 0xcb80e4f9 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcd62c396 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd278716b snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd29eb38b snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd96a7219 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdb9a8f2b snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd5ee20f snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xddde1f05 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe1f6ad13 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe35c430d snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe3c058e9 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe639c2f1 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe6789bad snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xea8ff428 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee2df248 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf1ae6375 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf345e6e0 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf463efad snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfd99504c snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfde90090 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x008ea549 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xa1dc1be3 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x905942af v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x75a91ec2 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-sn95031 0x175fed0f sn95031_jack_detection +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x3896a839 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xa656fdf8 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x075d1c0f twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x34fafd90 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4bc98003 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x642cfe9d twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xe8b8d0da twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xef70e43e wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x65a0b31c wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x76da42fe wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x83e24e07 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x93b1c7fd wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xbf15d579 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc40f61c8 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xcffd9b91 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xf621f87a wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x200f1074 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x8d1397c2 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x8e5116dc wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x5296bbb6 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x759af78b wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xe828a81a wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xe9e9552b wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0x04e503d3 sst_unregister_dsp +EXPORT_SYMBOL_GPL sound/soc/mid-x86/snd-soc-sst-platform 0xf37ccb15 sst_register_dsp +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0542c3ba snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x05940ac8 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x062705fa snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0776bc24 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a51f56a snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c4f7a32 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ce61645 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d2be418 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13306f69 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13f1e9c1 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1512eee8 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1518badd snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16447adb snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175ecc48 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e48da1 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a6d6d3f snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f7009e6 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f721f7f snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21592586 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x216f54bd dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x222e56e8 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x235da2da snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x266c4577 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x29676a11 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c7d3d68 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ff466a8 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30f97af8 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3353ebe7 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x33e77c9d snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x349ca5df snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3765c2bb snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39015867 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3a360b0c snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4135cf9b snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x439e2a66 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x451f0502 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x45da9bad snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x495ae74c snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49cfa53c snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4a9e3b59 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4add60da snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d19a953 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d2bec5c snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f8be9c0 snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50aedc95 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5244b3c4 snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56084a37 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5f8ad374 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60be0194 snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60bfc660 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64b34fb6 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65839a0f snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x67ed59f6 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cad799d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6d5510fb snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6da3b95f snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f20a2d7 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7007350f snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x751bbe45 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x79ff7010 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x815ce7e0 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x825c278e snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x83259ed5 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x85659706 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x86ed8408 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8962e1a3 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c7f98e7 snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f1792d3 snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9095f35d snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x919061ca snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9729f5e2 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9a57bf18 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9abd7042 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9b9166b1 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa007f7e3 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0be023d snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa51d30ad snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5ace50a snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa91ab2ea snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac284e30 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac5f1af5 snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae3e5f00 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaeb17472 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2718314 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb278e87b snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb362bfdf snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb8462ac0 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb97d30a1 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xba113160 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc616137 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbdbbae8b snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc15c0abf snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc329b200 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc438f88f snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6086faa snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd53cc95 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5074172 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd5a00159 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6d496e3 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd947c029 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdb5f87de snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0417c4 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdcfef286 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xddfc4d24 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde04ba7e snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xde1fce40 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea8bb87 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe146fdb2 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe1c1e377 snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2316018 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43fb952 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe52d4327 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe56a48b2 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe60a9228 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe629f058 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xec71222a snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xece8670c snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee9b6128 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xefc02fa0 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2ca88b5 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf31bb0de snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf47af39b snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5f0664f snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6b13289 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc9a3ef7 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0x0e45c1ba i915_hsw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xa49a445a i915_hsw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xa5a57a4f i915_hsw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xb7d6f553 i915_hsw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xff5514d7 i915_hsw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x002dd9cd ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x004beb77 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x005867b0 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x005f9485 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x00791ae8 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0089dfdd rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x008b0d15 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x00a4ae0a transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x00bd9565 tty_prepare_flip_string_flags +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 0x011b9c48 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x016671d3 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x016e2d15 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c1bcc7 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x01c3f3f4 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x01d11a05 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01fb89b7 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x024a4402 regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x024cc21e fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x02be61e8 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x02c82c60 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x02db4a48 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x02dcc0a1 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x02e059f6 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x02fe5368 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x030b2d9e dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x032c34fc rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x036c8864 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x03882d6f driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x039054ce wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0396c2ec rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x03ac5823 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x03bc1434 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x03e16e04 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x0415766d usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x0439622a fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x0450397b tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x049f0c24 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x04b3c91f xenbus_probe_node +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 0x04dafe82 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x04ef8a1b __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x04f0ba51 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x04fa988f ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x0509b9a5 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x0517363f platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054d58e7 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x05593977 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x0585b29f inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05f84e71 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x060c4d90 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x0643bcfd tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06963c36 intel_msic_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x06981e9d user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x06ad69fb wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x07310af0 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x073551ca attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x075d5e82 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x078c0137 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x079eb122 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x07a6e277 save_stack_trace_tsk +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 0x08341345 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x0847a537 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x084f9a7e sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x0854382e __module_address +EXPORT_SYMBOL_GPL vmlinux 0x087c2524 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x08907c51 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x08975ced i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x08bea3ef power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x08ca2fe7 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x08cf9580 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x08d99d75 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x08e62a87 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x08fb6982 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x0904868f ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x0909661a dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x095f33d7 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x0962d0e8 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0x09adafa5 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x09b38abc ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x09c5c8c0 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x0a1600d6 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0a369a3e pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a69b26d hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x0a752a2e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x0a7cb051 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x0aae4f31 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0acfeaa5 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x0ae7d1dd vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b0e2650 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0b13b8ea crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x0b1573b3 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x0b15fa10 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x0b19ed7c apei_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x0b353631 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5ef70c debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x0b622c81 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x0b6a2207 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x0b6b9223 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x0b75d888 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x0b98b7f5 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bb284a3 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf8b2b8 init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c0fc5ce dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x0c10056d sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x0c11bae0 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c343a7b bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x0c3a3d3c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x0c4f41bf pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x0c67f949 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0c76d4e8 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0ca7d47b __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cb66832 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0d36ff8b bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x0d396eea inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x0d4f5a58 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x0d6482dd tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0x0d8310d9 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x0db6d117 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x0deb0ade register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x0df5af3a cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x0e03a2b7 gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0x0e06b27b blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x0e0c04fe uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e2702fa ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x0e595304 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x0ec210b8 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x0eec2d2f scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f08948b pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x0f0e122f pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x0f41e4ae usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x0f5178fe bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x0f65e04a ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f8b381a skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x0fcbe905 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fd653b7 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x0fdca1ea pxa_ssp_free +EXPORT_SYMBOL_GPL vmlinux 0x0fdfd63e btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x0fef5b04 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x100c48a2 unregister_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x1012c918 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10264739 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10566e9a kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x105a3705 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x106737cb sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x107c7865 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x109a1c49 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x10b2fa11 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x10b974fd platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x10e5e0fd xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x110eddb4 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1110960a led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x114ea908 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x115bd575 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x115c66ad pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x117123a3 subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1185e765 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x1192eae6 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x11f59b39 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x11fe9097 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x12080211 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12223d71 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a8b14e ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x12b1f05a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x12b67b2b wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x12b93282 mmput +EXPORT_SYMBOL_GPL vmlinux 0x12c82eec aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x12d544f5 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12e407fa pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x12fdd647 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x130f1885 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x1315853d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13295211 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x134faf36 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x137f56ba seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x1391f3e4 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13b7c579 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x13ccf427 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x13f3e3fb klist_init +EXPORT_SYMBOL_GPL vmlinux 0x142ae8e4 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x143720c3 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x145784d1 gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x14648922 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x14ac5e74 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x14d44a62 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0x14d4763e dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x15010e1f arbitrary_virt_to_machine +EXPORT_SYMBOL_GPL vmlinux 0x153a0c91 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x15568631 lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x156db14c sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x158086e9 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159e7558 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x15a22ce4 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15c97984 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x16075443 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x162a1b15 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x167876f0 invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x167b69c6 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x16b0322c ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x16c57b0c unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x16d348b4 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x16f12247 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x170fb3e0 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x171b577b unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x17237fe6 register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x172e72d4 vdso_enabled +EXPORT_SYMBOL_GPL vmlinux 0x175b03b5 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x17905e17 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x17be9d47 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x17cbfe4b fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x17e94af4 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x17f78860 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x180b955a digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x1821f3c1 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x1851fa60 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18a2d060 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x18bd580b blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x18ca8c5e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x18d45118 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x190af3fb tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x19496284 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x194bf39e xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1955787c crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x1993c415 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19b37f72 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a0b510e sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1a286028 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a5e8f0b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x1a9588e5 spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1afa077f power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1b1f2bda speedstep_get_freqs +EXPORT_SYMBOL_GPL vmlinux 0x1b2023ee usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x1b242b69 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x1b3255f4 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x1b4405d6 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b7adb01 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x1b8d1b6b crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1bc07af6 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x1bcb9ed5 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x1be29092 xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x1be4b280 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1c03218d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c68c229 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x1c6f5ae2 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x1c7524b5 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c82ac16 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c8cd5dc tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x1c9898f2 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x1cec0839 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d4b5433 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1d4e619c device_del +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1dab6749 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x1dc1666d find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x1dd99034 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x1e175dd3 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1f0b7404 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x1f3769ff ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x1f3d161d ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x1f68f98a device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x1f6d9985 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8ec1b3 acpi_get_pci_rootbridge_handle +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x20023cff tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x20057fce usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x2052675a cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x2060b2ed bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x2072911a relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x20733227 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20e11297 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x20f98cd8 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x21394c16 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x216bcfd5 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x217ec1ab ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0x218ec6f6 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x21a346ed key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x21b3f73d srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x2213db99 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x2225c0e3 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x225e9a07 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x228a1525 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x228d753d gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22a0478f sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x22c65795 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x22ce3016 fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x22e85e41 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x22fcd03b blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x2334a657 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x235d48ae usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x239e832e usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0x23cc3f74 acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x240580a9 xenbus_probe +EXPORT_SYMBOL_GPL vmlinux 0x24205d0e blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x242e7592 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2447a546 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x245c6cc9 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x245d4108 blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x249c2561 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24cd207c sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x256c1c68 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x25de7c23 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x25f964a2 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x25fb8063 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26395e19 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x26423707 iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x267a8674 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26b9bc37 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x26bb88f4 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x26bff606 wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x2760910b crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x278367ee ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x278c628e sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x278ec596 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27b31aca inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e0be08 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x27e70d95 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x280e4516 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x28257b23 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x283724da crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2867600c cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x286cc2a5 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x288a7d58 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x28a1c9a1 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28c20de3 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x28c52f5a subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28e3736b udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x28e42082 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x28e4431e usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x28f7cd5d debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x28f98f23 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x29059b53 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x292d0eea __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x293f073e vrtc_cmos_write +EXPORT_SYMBOL_GPL vmlinux 0x294539c7 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x29607541 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x29ccd217 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x29e08917 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x2a4b4ad7 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a67bf72 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x2a9f546d ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2aa617cf mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x2ac36de7 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2ac3cd46 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2aca567a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x2acd9307 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x2aeadb40 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x2b4b8085 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0x2b54e167 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x2b6135c5 spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x2b67f096 speedstep_get_frequency +EXPORT_SYMBOL_GPL vmlinux 0x2ba70036 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x2be6155f dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x2be7fb8e disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x2c05f911 device_set_wakeup_enable +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 0x2c95b471 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x2ca28198 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb37e38 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x2cb42417 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x2cc79d5d aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x2cdfc8ad rio_mport_write_config_8 +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 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d534b09 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2dbe154d ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x2dddb04d usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x2df00f61 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2e04e9bc raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3d4b97 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e50e4f3 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x2e5b756e cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e8b6c8c __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2eb76e2f transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x2ebd0c16 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ec33018 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x2edcdc33 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f503af6 register_efivars +EXPORT_SYMBOL_GPL vmlinux 0x2f5ca207 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x2f651b9e page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f8fd6c9 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x2faa6eb3 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x2faf7889 tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2fead19e preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x301a7377 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x301f3e0f task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x30386e21 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x3043b875 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3051bd3f timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x305aeb98 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x30714b10 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30c44654 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x30fdefa4 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x3101ae1b show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313f4585 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x314e6c63 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x3165b995 xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x318920b1 register_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31ca29e5 input_class +EXPORT_SYMBOL_GPL vmlinux 0x31fd12b8 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x3225659c cpufreq_get_measured_perf +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x32639fe9 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x32924a4d scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3296d2f7 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x32a91f61 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x32aebc7e rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x32b31a8c ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0x32b391a4 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x32be5f5a platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32c46228 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x32ec22c5 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x32fd4b62 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x333228ec intel_msic_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x3357f236 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x338a3710 ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x338c520e devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x33a98b3c cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33d895c6 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3465b253 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x347e62c4 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x349bb39f xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34e7d8cf get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x352d9a3a inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x356a61f7 crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x357b187b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x358e3b88 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x35a3ec65 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x35b7c537 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x35b94897 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x35f3ae51 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x360d3c3a dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362d144e sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x3675b7f1 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x367ca397 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x36838efb da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x369b78a2 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36ba2551 intel_scu_devices_destroy +EXPORT_SYMBOL_GPL vmlinux 0x36e27f9d register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x36fa0399 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x373c1f5b ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x377dfbdc ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x37992cf4 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x37b2e95f init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x37ece576 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x37f6af4e cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x38105303 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x3841ab01 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x38824245 xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0x388e7692 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x38989700 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38c40b67 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x38f1c62d rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x38fbafb2 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x38fbc7b0 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x390d79aa cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0x394c15c8 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x39a26739 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x39a8b134 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x39b0b1a6 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x39b13181 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39e313ad exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x39e670aa kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a4863fe sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3aa399be aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x3ab372d5 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x3affbae2 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x3b2475c2 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3b76c4a9 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x3b778de3 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x3bb48dec led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x3bccde75 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0x3bdd16a8 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x3be5404a da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bebca32 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c1d7120 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x3c1f4c0c ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x3c3770ee xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3c4fe9e1 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x3c70fe7e ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x3c721019 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x3c747ae2 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9b530d unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x3c9c7e45 wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3ca4a04f ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d007ed4 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3d1b66c2 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x3d2c0d4d __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d51cc41 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x3d584d5e xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3d9ed0a0 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x3db6eeec __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd4d3a7 bprintf +EXPORT_SYMBOL_GPL vmlinux 0x3dd885b1 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x3dde0e07 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dec9bd7 usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x3e019b2f ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x3e053193 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x3e1e220e crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x3e2bdd47 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3e2d5543 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x3e3cdab7 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x3e3ce021 debugfs_remove_recursive +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 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3ea5f9f8 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x3eb35437 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0779a4 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x3f0cc019 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x3f15e907 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f2d62d9 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x3f3ad15e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x3f450081 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x3f50e11e mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3faa6ac3 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x3fc24684 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x3fd11345 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x3fe92d0a mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x3ff1daf7 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x4002cade iommu_present +EXPORT_SYMBOL_GPL vmlinux 0x400fa75f unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x402b5d73 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x402ec223 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40502241 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x405e11c0 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x406d4931 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40ce9362 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f375f4 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x412769eb regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x412a4ace __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x413eb86d tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x414a6090 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x414b4ee9 dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x4154a610 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x41630ad1 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4189b034 wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x418f919e blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x4196bd98 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41af146c usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x41e36ca0 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x422daf7d sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0x42469e37 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x426f13b9 e820_all_mapped +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b51720 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x42c959c9 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x42c989ff iomap_atomic_prot_pfn +EXPORT_SYMBOL_GPL vmlinux 0x42f9e831 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x4302e2cc relay_close +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x435e6c6e crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43c6d90c i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x43c859e7 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x43e61e01 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x43ef5efc pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446e80d2 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44cc9c55 klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x44d00dbc devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x44e4ce60 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x44ee06e0 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x44f25895 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x44f32059 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x45059b53 virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x450a0da9 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x4512b086 intel_scu_devices_create +EXPORT_SYMBOL_GPL vmlinux 0x4518fe0a register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x455cb90f stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x4576818c get_device +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45fa2f9a wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x4627e1fb print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x465c52c7 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46a69737 sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x46a91ebe tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x46bd5348 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x46dace75 zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x46fd6c0c vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x476b4433 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x47718e8c debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x478732e8 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47fa2642 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x4800bd52 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x48134068 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0x481f6c58 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x4879dc0e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x489bc2e1 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c0002a modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x48d4df2d driver_find +EXPORT_SYMBOL_GPL vmlinux 0x48d587b8 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x48e2147d __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x48eacd46 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x48ed2fca shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0x49133fd7 rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x49537b52 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x4955c9e0 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x4958ab3f dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4963618f acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0x496aad54 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4990fc26 vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x499b4646 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x49bbfa0e power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x49db8db4 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x49fc346f __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x4a2c8226 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x4a2da65d __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x4a44af8e usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4af4e51c regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x4afb573b vrtc_cmos_read +EXPORT_SYMBOL_GPL vmlinux 0x4b171441 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4b2a9988 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x4b3cb812 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bce5907 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x4bdb4045 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x4bddef57 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x4c10d14d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x4c16f764 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x4c5ab777 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x4c5cf56e pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cb4cea3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x4cefe3a6 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x4cfb603a ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x4cff654a ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x4d083f4f blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x4d42e3d8 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4d4644fb blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x4dc0683b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0x4dc19264 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x4dcead68 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4de36637 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x4e02342a rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x4e03a565 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e441114 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x4e49091f tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e66edc8 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4eace87d ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x4ed6e906 blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4efaa814 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x4f087eff sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f2aea22 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x4f3aed86 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x4f3c5f9f regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x4f99f09f usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x4fa75363 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x4fc27f71 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x5003bd84 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x502d4159 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x5035faa5 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x50492fb6 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x5083a52d usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x5086ac3a alg_test +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x509bf0fa usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x50a1bcf5 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x50ba3bec acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x50c89f23 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x50d4c2f3 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x50e0dc22 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x50e538ea scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e91a78 xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5108b3fc acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x5135b212 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x5163ce8f i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x5164f757 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x5170db64 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x519978ca sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x51b02de2 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x51ce4710 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x51d9264b raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x51e58d81 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52129db4 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5230bdfe __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x523ba84e cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x52463a25 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x524d2d17 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x5280aeab do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x52b6c843 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x52c042dc hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x52ede6d4 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x52ee4892 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0x5339acbc key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5372dede unregister_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5388837a pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53d372fc driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x53f73366 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x5401c592 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x5405df82 tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x543184a2 xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x544d5a71 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x547a1584 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54a44046 md_run +EXPORT_SYMBOL_GPL vmlinux 0x54ace4bd __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x54cd9b04 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x555df745 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x556fd22b sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x55718781 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557ae577 xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x559cff0a led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x55b16fda cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x55ba5579 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x55d8efcd sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x5605f895 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x5606916f sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x561f4109 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x562775ab bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x56358f6d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5639fe30 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x563bf5b6 shash_register_instance +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 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56934c3f page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56cda964 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e04d2e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x57059d92 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5728b6c4 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5741fd24 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x57601a53 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57b4ad28 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x57e95cba stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x583ff45c ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x58b0344f unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x58f1e08b devres_release +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5907f85f bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x591a0263 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x591e1860 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x596fe5d4 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x5971fe0c crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x59d21150 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x59f5b06d pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x5a091bdc tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x5a11ef5a i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x5a136c06 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a4acf71 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x5a5621a7 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a7d2c7f set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x5ac45511 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x5ac59307 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x5ac84338 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5af35ede skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x5b2cfa3b device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x5b6d2cad tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5b74feda regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x5b8f4797 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x5ba2f5b5 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bd45ba8 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x5bef7826 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x5bf6fdcd device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c6c776c rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x5c6e5a39 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x5c83e860 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x5c8f7661 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x5cd86a0e s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x5cfa733b user_update +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d32921b usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d41b19e scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d7904a7 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x5d7ecb61 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x5d84274e event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x5d87c067 register_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de246db usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x5de99b14 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e213950 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x5e3aa6be pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5e504a7d xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e6b9413 crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x5e6ebd54 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x5eb1ea91 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x5eee9f16 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f499ac6 usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x5f7b8618 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x5f9dc50b crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x5fee41b2 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x5ff276c3 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x6010305f ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x601748e7 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x603b0727 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0x6043785f bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6054bafa wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x607ef3c3 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60beefa9 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60cdfff4 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x60f1a670 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x610d0fdf alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x611b1fb1 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x61261414 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6127084f pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x612a8ef9 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x613dceef blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x615ebe1b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616a3568 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x616b7f9c __mrst_cpu_chip +EXPORT_SYMBOL_GPL vmlinux 0x61b9038c iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x6219da0e virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x623558f2 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x624367db subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6249a7b7 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x634f829d platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x63598e6b ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6368dde3 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x636c5d8b nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x63f8f088 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0x6413ac31 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x642f4f2d default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x64395136 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x643b157b md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x643f71d2 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x644b78b5 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x646d0c74 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x64841cc5 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x64964900 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x649a1af9 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x64d26ead ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x64fd4bbc watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x6539293f xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x653cb02d intel_msic_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x653d6dc0 device_register +EXPORT_SYMBOL_GPL vmlinux 0x6563993d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6592c5e7 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x65933231 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x65966344 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x65a34c41 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65c6a338 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65fa533b usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x660ea95e ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x6623177a rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x66394327 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x663cf0e9 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0x66425556 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x6648a8ec dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x667ef1ec inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6684b556 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x66ae9e55 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66b689e0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x66ca4d50 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66e7cd5b xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0x66ee6f95 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x670d9d62 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x67200afc pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0x6724c76e subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x674f8bbd generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x6757c5c6 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x678a3ded evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67ab3d48 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x67ae2168 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0x67b89bda bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x67c8e53c virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x682bfd39 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x6830bd5e pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x685cee61 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x6863fbe4 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x687a9b95 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x68899995 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68ad9bd1 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x68cc0791 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x68fe086e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x694c7bc4 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x69696244 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x697579cf debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x6976a85a set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x69865673 sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x698854e8 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69a19375 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f24355 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x69f2e9bb md_stop +EXPORT_SYMBOL_GPL vmlinux 0x69fb0cf0 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x6a50aca1 sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a7b70de usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2ef9b1 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x6b6131b3 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6b8a02ef __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x6b94c408 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x6ba1a380 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x6bb83428 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x6bd23f0a scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x6bd754cc pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c142efa crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6c9ef7f0 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x6ca4be1b rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6ca5c49f sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6cb56693 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x6cf4526d rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d385ded crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x6d49566f spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x6d5ce6d4 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x6d8226b8 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x6dd5d34f spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6e3c3f8e handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e7413bf ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x6e782c23 iomap_create_wc +EXPORT_SYMBOL_GPL vmlinux 0x6e83d345 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e91b371 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x6ea0d0c4 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x6eda9749 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x6f184ec6 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x6f18bad3 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x6f1ab2b3 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f5f31e0 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x6f5ffdad get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x6f64da76 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6f6d7fc8 pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x6f7836fe ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f93b9ed vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x6f998eee __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x6fba0ddf ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x6fc45108 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6ffd41b6 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x700dd6e8 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70ad8134 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70dfe2c5 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x70f1ea03 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x7151dffa power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x717f8f99 isa_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x71c3a8b0 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x71cc0814 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x725601ed crypto_alloc_instance2 +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 0x7285f84f unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x729c3fb4 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x72a6f312 virtqueue_add_buf +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72c93d7f sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x72e4a1c6 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x7333db57 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x7342b84a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x735b1cd6 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x738fd248 intel_msic_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73a8f2d0 xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0x73c9fb98 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73eb60d9 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x73edb72e regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x7417f4fa xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0x74244d88 __inet_lookup_established +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 0x7454efe9 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x7473c028 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x747910f1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74d2cafd fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +EXPORT_SYMBOL_GPL vmlinux 0x74f8e430 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7529a295 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x753fc64b da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x7557b5fd rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x758e9d78 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75dcab27 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x76650978 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x7685bab9 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x77093bff relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x773411ff da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7756581a file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x776e4249 adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x777cd991 zs_free +EXPORT_SYMBOL_GPL vmlinux 0x7782b59f pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x7790adc0 aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x77eac1f1 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7865fbb5 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x78a7a6a4 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x78b60b14 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0x78c0f0cd tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x7931f66d serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7944d12c tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796abfe5 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x796d4f1d rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x798cd6ad usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x79a717af wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x79a71c48 kernel_stack_pointer +EXPORT_SYMBOL_GPL vmlinux 0x79dbaffd regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x79e49dd6 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79f33d07 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x79fe2498 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x7a08cf87 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a2cbabd key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a35d950 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x7a45153c usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7a4c1438 pv_info +EXPORT_SYMBOL_GPL vmlinux 0x7a7c5175 amd_erratum_383 +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa33ff4 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x7aae4555 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ae0ff6a bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7b0720b1 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b68641d md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x7b7f6228 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x7b83acc9 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bbc0626 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x7bcd3217 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x7c496d49 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x7c57d519 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x7c59cf82 put_device +EXPORT_SYMBOL_GPL vmlinux 0x7c7359e7 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7c77e6d6 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cda713e sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x7ce0f989 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x7ce8e967 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7cef4d6a irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x7d00adab disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x7d23e691 init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5bb3a8 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0x7d6d9edc regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x7d99609d pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dca238e xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x7dcac65f securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x7dec86a8 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17f6fd mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x7e1ecdc5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e3a0954 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x7e4e09cb ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7cb61d isa_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7e86a38b ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x7e9286b1 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7ea633a5 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x7ec22f9a apei_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x7ee79ddc cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x7f010f66 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x7f08bee4 device_move +EXPORT_SYMBOL_GPL vmlinux 0x7f3bc20f pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7f41e663 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x7f64e77d debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x7f711d31 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x7f82ebc8 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x7f86d4b1 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0x7f9205b4 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x7fdb0b39 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8017590a sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x803fd0c1 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x804da4e9 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x8051adbd rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x806af56a xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80bcdc7d pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x80fea829 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x812b018c pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x819f95ca platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x81f5400b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x8235647f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x82548585 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x825980a1 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82771744 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82cd19f3 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82dd8f7c ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x82f89884 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x8313bfe0 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83827527 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83bb4793 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x83bb77ef unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x83d0c56e platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x83e8d422 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x84022bb9 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x840293b5 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0x840d99a7 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x84138748 zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x8438aeb1 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x844f41df crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x84768104 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8483e4a8 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x84928a9c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0x84984cd4 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x84a5ad46 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x852b9ff8 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x85526eef usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x855ef085 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85de263f xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x85fdba33 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x8600dde3 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x860cbb18 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x8629295e kick_process +EXPORT_SYMBOL_GPL vmlinux 0x862f98a3 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0x864673d6 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x864fdfac blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x868528ef xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x8699c7d9 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86aa16e6 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x86af5355 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86ba9f83 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x86c0f66d driver_register +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x8735bd31 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x873bcea3 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8750ccc5 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x875c069e s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x877244f3 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x87cf0a90 injectm +EXPORT_SYMBOL_GPL vmlinux 0x87ea8074 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8831f8b1 kmap_atomic_pfn +EXPORT_SYMBOL_GPL vmlinux 0x8857025e usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x8872f7fe ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x888945f0 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b0844e btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x88b3f2e9 fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x88bd265a usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x88c6c318 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x88e25c8c crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x8910a15a __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x895bc865 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x897482db hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x89ab254f crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a102d56 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x8a31e741 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x8a4e909a crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a6e476a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x8a6fb824 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x8a72c3a3 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8aa968f9 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b079dd2 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b7f9010 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x8b9c9d9e shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8bab08c6 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c0b219f regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8c1d484b xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x8c38074a unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8c4db1b5 usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8c562b90 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x8c864c46 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8d404cc2 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x8d533b84 device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8e25b68a xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x8e3484a1 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x8e50007a inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x8eb44bab ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x8ec95db8 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x8edfc605 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x8efea5e9 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fa7da75 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x8fa7fba5 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x8fb576b8 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8fb94f2c sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x8fc2f4a3 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x8fcd1ef5 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0x8fdeede0 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x8ff831b5 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x900d1d6b xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x90206b44 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x903c49c9 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x905c1073 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90803bd8 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90fe2b1b pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x9111f438 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x915c1034 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x916424f1 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x91679315 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x917e94cb ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919d714f inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x91beac04 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x92244ee8 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x92261d5b spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x922d76d5 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x92535c6d blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9259dcdd md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x92888874 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x929233c4 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x929c467f btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x92aef435 module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92b78350 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92fc0263 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x930aa4c6 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x9330091b dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x934af37f iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x934e8360 cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x9356930c tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0x936edfa1 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x93b58f79 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x93c9879d pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93db25ca pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x93e3d38e ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x93f8cdc3 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x941db964 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x94271efa vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x942879da netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x943abecd regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x9466f0bc pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a8c77e pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x94adab42 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x94c318be apei_exec_collect_resources +EXPORT_SYMBOL_GPL vmlinux 0x94ec6d05 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x950d9b82 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0x951e9ebc rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x95263908 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9527a6e9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956527de tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x958602e0 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x95945563 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95da94ca perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x96016d9f xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0x960c2d67 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x9611256b pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x961b4b49 iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964ba235 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x96674e7c pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x966d16af led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x966e58ed __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96b7f117 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96d53764 xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x96ef6ec9 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x972e3e45 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x9732f4b7 xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x9736635e ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x97366ee1 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x973df09c fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x97980b30 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0x97a0c589 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0x97b093dd btree_update +EXPORT_SYMBOL_GPL vmlinux 0x97bb5f73 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x97dd758c debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0x97f9c45a trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x9842f28e blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x984c946c vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x985f683d usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x98737588 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x98c7c565 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98d52d63 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x995f2e01 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x997577d7 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x99d4dc24 device_create +EXPORT_SYMBOL_GPL vmlinux 0x9a06e3c4 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a2f7f79 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x9a4a0b75 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9824ef btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9add497e crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x9ae0626c tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b0ec8b3 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0x9b4b3fec __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0x9b4f0db7 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x9b87c758 fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9babf390 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be3d9b3 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x9c646e1d bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x9c67832d virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0x9c6bfb26 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0x9c7d0161 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x9c9e47ee ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9caf3c5b ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x9cc8d5d6 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x9d030b99 stop_machine +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d0ca2a4 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0x9d353a76 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d822ecf inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9dcfaf53 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x9ddf7b72 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x9df633ac __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x9df7a2be dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e3c6ea9 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x9e82bebf da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x9e858d43 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x9eae08e0 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x9ebff902 start_thread +EXPORT_SYMBOL_GPL vmlinux 0x9ecdca41 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x9f1491b5 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x9f289e6b pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x9f29601a atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f59079f get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x9f850d19 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9f8d212d usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x9fb9ebc6 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fea44c7 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xa00ec688 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa014c8ba pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0xa0208e02 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xa0408822 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa0c1038d kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0e54149 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xa14e5e7c debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1871dad ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xa190ed39 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bd9748 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xa1bf7041 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xa1c97e75 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa1f61936 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xa2001f70 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xa23ef258 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0xa289e5dd dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xa2986cd1 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xa2d15209 rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xa2d849ec crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0xa2e67f08 acpi_bus_generate_proc_event4 +EXPORT_SYMBOL_GPL vmlinux 0xa300b70e hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa3021733 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa32455be fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa37ed2cf simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3f3b59b shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xa405602b ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xa40a7c63 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa41b9e25 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xa436ea4f dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xa44b7bdc device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa4bfe4ae fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0xa4ca0d4e unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa4ec3ab3 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xa4fb291a ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xa5098504 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xa5251153 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xa549efcc class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa556900f blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xa58635c7 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xa59dd70b rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0xa59fd87f usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0xa5ceaec5 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xa5e13971 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xa5e6b601 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa5f12a28 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0xa5fc00b8 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa6373011 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xa6657d60 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xa67ab758 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6a5e47c regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bc53c2 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa6e55334 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa70bcdf0 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xa722a819 cpu_has_amd_erratum +EXPORT_SYMBOL_GPL vmlinux 0xa72ace61 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xa73d8fac device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xa74a39e7 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xa794a933 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0xa79c7593 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa7aae053 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa7c46c01 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7fd3008 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xa80d6f76 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xa87b76d4 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa89171a5 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xa8ae8836 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0xa8b82a53 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa903f9aa input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa93c48cb tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xa99f34df attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9ef0c8f netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa00d43f fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0xaa071fb1 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xaa0e6b5c crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xaa2212ba power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xaa2558ac m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa3f13f7 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa5336fb edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xaa742437 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaaeeceee device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xaafbc7ff driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab10cb05 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xab43f5f4 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab702499 device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xabc47f60 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xabd21d1d xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0xac17da13 mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xac204dbb crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xac7525a1 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xaca8f778 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xacbf21ce ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xacc64418 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad2d8cba ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0xad3609d3 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xad600df2 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0xad8edbfa __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0xada021f7 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadb0d062 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xaddafbd4 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0xade30625 serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0xadeef17b fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0xadf0cd89 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae274bc0 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xae30247f tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae6c4432 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae8a8673 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xaebefd55 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xaeeb2da0 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xaef9ea66 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xaefb4247 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0xaf0b801d vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xaf26fd5f gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xaf307d6e shake_page +EXPORT_SYMBOL_GPL vmlinux 0xaf31d33e apic +EXPORT_SYMBOL_GPL vmlinux 0xaf5f73fa proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xaf637957 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xaf6ef20d usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0xaf8abe91 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xafa2b7b9 leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xb00c10b5 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xb00e2b75 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xb03dbca4 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xb04d353a crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xb054a8c0 iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xb0650231 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xb096dedb css_id +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb105827e flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb118954e ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb12ad0d1 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1810fc8 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb192cb8e tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1a2289d tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b6f73e ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c106ad crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xb243a9c6 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb254bb70 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xb254e06a skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xb25a85cf crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xb282a9d7 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3480956 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xb363910f adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb376597e pxa_ssp_request +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b3dfda con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xb3e26108 sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb409ffd8 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0xb4167d0d xen_swiotlb_map_sg +EXPORT_SYMBOL_GPL vmlinux 0xb4231acf ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb4503f4e unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xb45ba000 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0xb48ecb7d register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xb4bef133 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xb4c8b175 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0xb4d5ac71 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4e3f250 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb4f45279 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0xb50fe060 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb552c702 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5aeae8c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5d8913d register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60fd2a7 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xb6120301 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb6263682 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xb650b509 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb6690c07 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb67c64fd __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xb69898f2 usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xb69a0766 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc49a9 __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xb6c6c613 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xb7025069 intel_idle_cpu_init +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7471f05 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xb75d662a hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xb76544ee stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xb7719651 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xb79e2aaa devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xb79ff45e sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0xb7c0fb17 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e2eb91 mce_cpu_specific_poll +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb80790e8 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xb80eabfd transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb821a1bd platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0xb829f06b user_describe +EXPORT_SYMBOL_GPL vmlinux 0xb8607c15 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xb868ac39 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0xb86bcceb klist_next +EXPORT_SYMBOL_GPL vmlinux 0xb8af2436 pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xb8bc1156 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xb8da9cff inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb94b6473 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb96b53c5 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9aa7e2c bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bbe813 xenbus_free_evtchn +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 0xba01070e inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0xba8a0c03 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbafbd67d blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb161b66 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xbb2bf763 md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xbb587839 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xbb58b814 iomap_free +EXPORT_SYMBOL_GPL vmlinux 0xbb6584fc cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb84cfe2 xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xbb969e75 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xbbb7ece4 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc17c32e cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xbc2bf721 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0xbc406090 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc982eea devres_add +EXPORT_SYMBOL_GPL vmlinux 0xbca0201a sfi_mrtc_array +EXPORT_SYMBOL_GPL vmlinux 0xbca61ff7 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbca8789c pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf86c88 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xbd09c202 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xbd16aacc power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbd3aaf43 debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd50a4ef simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd63014c dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0xbd719037 rio_mport_read_config_32 +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 0xbe1227d0 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe299c50 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0xbe631f5b crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xbe8d59d5 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xbecd7c01 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0xbf0836d7 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xbf556e6c usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xbf5b342e usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xbf5d68ef crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0xbfaca402 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbffcb3b7 acpi_os_get_iomem +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc0087a0b inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xc00c18fc tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0xc0255504 xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc04b4ddc crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0xc063d5d0 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0a1a069 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xc0b8ceae dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c024fe blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0d3f5c6 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc117c519 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc1198089 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xc11b4470 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc164642e xenbus_otherend_changed +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc1bb6b1d task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0xc1e73c99 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0xc21eb592 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc22387c6 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc2400791 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xc241bd8a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xc24747f4 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2b2c65b __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0xc2c2e7ef virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0xc2c8a29d inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xc2cfa52a ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc2d17072 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0xc3002c10 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc3025f85 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xc30f0432 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0xc320c7c3 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xc3241fdf md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xc34db662 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc395becb __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3a0abdc crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc3f61d84 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xc414b1ca dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc438063a __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc44ece0d tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0xc455e7d9 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0xc461b976 rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a9944f ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xc4aa468c rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xc4b15992 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc4b3fea6 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xc4e4355a cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0xc50c5f01 tpm_bios_log_setup +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc5438825 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc55c7e52 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xc5894c18 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc5acfc73 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xc5bab3fe btree_init +EXPORT_SYMBOL_GPL vmlinux 0xc5c264a5 amd_erratum_400 +EXPORT_SYMBOL_GPL vmlinux 0xc5c481fd transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc61bcf6b tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xc63dece6 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66e33c8 dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xc6ae1e20 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc6cb39ae crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc726ad2c led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc729f384 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc812a1bd platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xc816c21f ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xc81773ce ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc8626e68 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8dac30a devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc925a431 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9a95182 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xc9ba5e0d each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca1c7740 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xca6c9d56 pm_generic_poweroff +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 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcb0d6706 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb1e53af register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xcb4027f9 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcb5d5421 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0xcb91cc6f intel_scu_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcbbc6154 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc00f9de usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc31f15b eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0xcc3da32d aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc980381 xenbus_dev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xcc98b031 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcca7228f unregister_efivars +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xcd05645e regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xcd0f90d9 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xcd211b96 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcd6f993f usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xcd7688b5 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcdbdb1a0 i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xcdbf8ea3 user_read +EXPORT_SYMBOL_GPL vmlinux 0xcdc936b0 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcddffb1d xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce1718ee root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xce27cd31 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xce2ba65b clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xce2d6b10 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xce30c058 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce57a7fa fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xce61d5ea tpm_bios_log_teardown +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce74b1b0 zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0xce88c6ea devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xce9f70f7 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcf0821b8 xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0xcf100fb8 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xcf4970d3 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xcf5071a0 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xcf6a9879 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xcf86e420 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfda2ace locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd06e8d22 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xd08b2e88 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd10f0d27 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xd13d7797 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0xd146ab1e crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xd148f19e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd157a0dc ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd18e9734 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1f7787c clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217ce9f wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21efa4a usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd239bf02 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xd26e4861 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2810fd3 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd2ccc637 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xd2d4dac8 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xd2fddf75 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3e6528f hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd425dbef noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xd45c1222 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd4790715 user_match +EXPORT_SYMBOL_GPL vmlinux 0xd486de63 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c2e5fb acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4e82129 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd507cbec inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xd544e902 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0xd549fb31 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xd550560f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5cb0a02 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xd5cdeb00 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd5e98019 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd5ecf4c6 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xd60d8e2e xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xd60fde23 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0xd641f29e ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd648ec92 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67f5217 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd68d5bc2 regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xd6a13c6f apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xd6bbbf37 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6c39339 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xd6cc8992 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd6cfc5c0 wm8350_gpio_config +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 0xd709dc94 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd75b0899 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd790d6e1 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xd7ab2c0c speedstep_detect_processor +EXPORT_SYMBOL_GPL vmlinux 0xd7beb852 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd7c1f3e0 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd802b687 ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xd808989e usb_poison_anchored_urbs +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 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd894bc3b elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd89c7c13 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd89d2c14 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd8e94f03 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xd9184807 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd9413e9a tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94b737e erst_read +EXPORT_SYMBOL_GPL vmlinux 0xd98a3611 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xd98c8cd3 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd9b54075 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xd9e9793e edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0baa1a key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda415c3f register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xda42a87f tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda6b43d3 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xda7a5a11 device_attach +EXPORT_SYMBOL_GPL vmlinux 0xdaa19eb6 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xdabf2d98 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdac6aac3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdafac86c usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb8adee8 bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xdb999f7e unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0xdbbf2781 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf06db2 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc210815 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xdc45d2e9 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0xdc4d45df sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xdc5648da usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xdc59a32f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xdc714560 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xdc7c70ed tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc8beba0 xen_swiotlb_unmap_sg +EXPORT_SYMBOL_GPL vmlinux 0xdc90553a __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xdc9090ab sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdc9f6209 blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xdca75aab iommu_map +EXPORT_SYMBOL_GPL vmlinux 0xdcac6552 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xdce57037 apei_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xdcf737ac mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xdd08a897 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xdd291e4f unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd5afde4 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xdda5cf50 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xddb5f195 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xddb957ee tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xddddcdd0 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0xdde556d8 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0xde3f2932 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde4a6114 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xde6f7f19 rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xde747356 intel_msic_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xde77dc66 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xde8f877f kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xdeaca596 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xdeb588b4 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xdeb768a5 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xdeed381e ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdeed957b usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdefb3cd4 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf277719 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xdf4fd9a5 __css_put +EXPORT_SYMBOL_GPL vmlinux 0xdf6a3bb2 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xdfa1fd06 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xdfb22176 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xdfb812b9 tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe02efdd7 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xe03f8687 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0xe04e37c5 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0bb7499 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe155da68 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xe16755ef shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xe17d4227 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0xe1d46254 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xe1e8d2bd sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe1f14e8d spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe255f897 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0xe26c4f4e fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0xe276250c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xe27fa895 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2a249b5 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe2bfdcaf pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xe2d47b16 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2e12932 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe3175ac5 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xe322f6f8 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xe35843b3 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3b29c61 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3c1d161 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe3f429d0 usb_create_hcd +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 0xe4a1cb77 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xe4c331b6 acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0xe4c623bf cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xe4e358c3 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe4e50352 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe53aad31 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xe55da542 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xe5678383 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5addbd3 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xe5e6ca6d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xe6110101 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe6151585 xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0xe615ff96 fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe622e400 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe67c0837 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xe6838c76 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xe6c4f2c4 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xe6da70a8 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe7210d36 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7454ea1 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe779f60b i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0xe7aa3b91 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe7ccbc81 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xe7f0dbd0 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xe7f90880 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe81921b3 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0xe8386d92 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe89fcdc8 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xe8d88cfc xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0xe8e58910 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xe8ee88a9 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xe8fde8b9 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe98e55a6 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d4c86f inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xe9ed7c9e blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe9f626d1 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea11fd3f fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea193ee8 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0xea209d03 fat_attach +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea42c781 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xea5e622f fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0xea905975 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaf82d2d led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xeb23b48a device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb5c68c2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0xeb813af8 find_module +EXPORT_SYMBOL_GPL vmlinux 0xeb830768 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xeba56eca ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xebd12e31 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xebd732eb srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xec1215b4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec20dfc3 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec2e796b zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xec93c168 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xecf90bf6 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xed030a45 gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xed085dbf tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xed0d49e4 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xed342cca ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0xed4739ad usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xed52f156 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xed5686b2 free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xed6818b7 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xedcfbf88 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xedf27dda use_mm +EXPORT_SYMBOL_GPL vmlinux 0xedf3f1f1 do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0xedf96f64 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xee274f97 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0xee3307bc debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0xee42e1c6 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xee4e98d4 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xee514fc3 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xee8b79d1 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xeeb23dba led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0xeec24d31 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef22a49e blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xef23d470 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef4cdeb3 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xef528725 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefa06ddb sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xefa5e8c0 md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xefb2550b stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xefef0909 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xeff3732b ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0xf054ac97 intel_msic_irq_read +EXPORT_SYMBOL_GPL vmlinux 0xf0673fdb class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf06c1cc7 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xf081f9e2 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xf0b91c90 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf0d4fe4e timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf0df2f89 virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf15a854d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xf167b0bb exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0xf182694f ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a2b3cb xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1e27e0f security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xf1f6fc44 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0xf28f76e8 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf3026374 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf327c7a3 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf3a5ed1e driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e17223 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xf3f8fff1 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0xf41e51ca br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xf441e749 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf4695f47 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4af6ff5 device_add +EXPORT_SYMBOL_GPL vmlinux 0xf4b21f2e rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf4b79502 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4be20e6 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf4fe3a2f cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0xf5189b23 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf53b24c2 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xf540b4a5 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xf546336c dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5716d1f class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xf57311b5 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a5e26d platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5f424b7 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xf5fbb7f9 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0xf640ebbf rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6550dd3 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xf69e4833 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf6c76b07 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xf6de29b2 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6efc175 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf70986e3 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xf725de9a bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xf72954d6 pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf734f4ad ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xf7465dbe da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xf754fedf pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xf7a14f56 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf844d0a2 xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf855c4ce usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf88406ed crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf8953afb usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xf8db10f6 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xf8e3d636 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xf8ec15f3 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf913cbd8 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf9231255 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf93c9f24 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf9560d09 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xf970f18c crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xf9765833 dmi_match +EXPORT_SYMBOL_GPL vmlinux 0xf97666a0 set_memory_rw +EXPORT_SYMBOL_GPL vmlinux 0xf97adc16 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xf97eb20b inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xf997d715 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9a4eaa1 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xf9b7594a device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +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 0xfa2b763a scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xfa31130a class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfa84a858 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfb058678 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xfb0f6764 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb130713 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xfb1e8531 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb609434 xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb818232 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0xfb83714a cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xfbd7ac18 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xfbec18a5 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xfbee33d8 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc1ddbc3 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xfc3993f0 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3ff3e9 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xfc69f2da pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0xfc7bdd85 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfca01d7e kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xfca46cd0 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfd05464b klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0xfd3da5b2 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xfd450563 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfd80e657 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0xfd9177a2 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0xfd93414f bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xfdb6b689 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdd3c783 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xfdd4df8a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfe07b816 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe12e058 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xfe29f87c crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xfe44569e rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xfe48a2cb platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xfe49ed77 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xfe6996c4 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeab1b81 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xfec7b2b5 dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeed4c9c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xfefaa50b crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xfefe289e sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff10a9bc s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xff31363e i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xff35b84f fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff5f2b0e __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xff8fc06e tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xff988e78 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffa5c6df crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xffafd93b hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xfff5e3b5 __udp6_lib_lookup --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/i386/generic.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/i386/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/amd64/generic.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/amd64/generic.modules @@ -0,0 +1,3481 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8255 +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +abituguru +abituguru3 +ac97_bus +acard-ahci +acecad +acenic +acerhdf +acer-wmi +acpi_ipmi +acpi_memhotplug +acpi_pad +acpiphp +acpiphp_ibm +acpi_power_meter +acquirewdt +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +addi_apci_035 +addi_apci_1032 +addi_apci_1500 +addi_apci_1516 +addi_apci_1564 +addi_apci_16xx +addi_apci_2016 +addi_apci_2032 +addi_apci_2200 +addi_apci_3001 +addi_apci_3120 +addi_apci_3501 +addi_apci_3xxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adl_pci6208 +adl_pci7230 +adl_pci7296 +adl_pci7432 +adl_pci8164 +adl_pci9111 +adl_pci9118 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +advansys +advantechwdt +adv_pci1710 +adv_pci1723 +adv_pci_dio +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +aesni-intel +aes-x86_64 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim1535_wdt +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +alx +ambassador +amc6821 +amd5536udc +amd64_edac_mod +amd76xrom +amd8111e +amd_iommu_v2 +amd-rng +amilo-rfkill +amplc_dio200 +amplc_pc236 +amplc_pc263 +amplc_pci224 +amplc_pci230 +ams369fg06 +analog +ansi_cprng +anubis +aoe +apanel +apds9802als +apds990x +apple_bl +appledisplay +apple-gmux +applesmc +appletalk +appletouch +applicom +ar7part +arc4 +arcfb +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asb100 +asc7621 +asix +asus_atk0110 +asus-laptop +asus-nb-wmi +asus_oled +asus-wmi +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atlas_btns +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp +atp870u +atxp1 +aty128fb +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +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 +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +blowfish-x86_64 +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c2port-duramar2150 +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +camellia-x86_64 +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cb_das16_cs +cb_pcidas +cb_pcidas64 +cb_pcidda +cb_pcidio +cb_pcimdas +cb_pcimdda +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfag12864b +cfag12864bfb +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +ck804xrom +classmate-laptop +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +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 +cpqarray +cpu5wdt +cpuid +cpu-notifier-error-inject +c-qcam +cramfs +cr_bllcd +crc7 +crc8 +crc-ccitt +crc-itu-t +crvml +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +cs5535-mfd +ct82c710 +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +daqboard2000 +das08 +das08_cs +db9 +dc395x +dca +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +dcdbas +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +dell-laptop +dell-led +dell_rbu +dell-wmi +dell-wmi-aio +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dme1737 +dmfe +dmi-sysfs +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-raid45 +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +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 +dwc3 +dwc3-omap +dwc3-pci +dyna_pci10xx +dynapro +e100 +e1000 +e1000e +e752x_edac +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +ec_sys +edac_core +edac_mce_amd +eeepc-laptop +eeepc-wmi +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +einj +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +ene_ir +eni +enic +epat +epia +epic100 +eql +erst-dbg +esb2rom +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +eurotechwdt +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f71805f +f71808e_wdt +f71882fg +f75375s +f81232 +fakephp +fam15h_power +farsync +faulty +fb_ddc +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +fintek-cir +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +fnic +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fschmd +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu-laptop +fujitsu-tablet +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-clmulni-intel +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +gma500_gfx +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-cs5535 +gpio-fan +gpio-generic +gpio-ich +gpio-ir-recv +gpio-it8761e +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-pch +gpio-rdc321x +gpio-regulator +gpio-sch +gpio_tilt_polled +gpio-tps65912 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +gsc_hpdi +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gx1fb +gxfb +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdaps +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hecubafb +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hgafb +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-hyperv +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hp_accel +hpfs +hpilo +hpsa +hptiop +hpwdt +hp-wmi +hsi +hsi_char +hso +htc-pasic3 +hv_netvsc +hv_storvsc +hv_utils +hv_vmbus +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-bit +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd756-s4882 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +i2c-matroxfb +i2c-mux +i2c-mux-gpio +i2c-mux-pca9541 +i2c-mux-pca954x +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-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i3000_edac +i3200_edac +i5000_edac +i5100_edac +i5400_edac +i5k_amb +i6300esb +i7300_edac +i7300_idle +i740fb +i7core_edac +i810 +i82092 +i82975x_edac +i8k +i915 +i915_hsw +ib700wdt +ib_addr +ib_cm +ib_core +ib_ipath +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmasm +ibmasr +ibmpex +ibm_rtl +ib_mthca +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ichxrom +icp_multi +ics932s401 +ideapad-laptop +idmouse +idt77252 +ie6xx_wdt +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ii_pci20kc +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intelfb +intel_ips +intel_menlow +intel_mid_dma +intel_oaktrail +intel-rng +intel_vr_nor +interact +ioatdma +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +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 +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it87 +it8712f_wdt +it87_wdt +it913x-fe +iTCO_vendor_support +iTCO_wdt +itd1000 +ite-cir +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +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 +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kvm +kvm-amd +kvm-intel +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l440gx +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-clevo-mail +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-ss4200 +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +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_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +litelink-sir +lkkbd +llc +llc2 +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lxfb +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +machzwd +mac-iceland +mac-inuit +macmodes +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +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_amd_inj +mce-inject +mceusb +mce-xeon75xx +mcp2120-sir +mcp251x +mcp3021 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +me4000 +me_daq +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mei +mem2mem_testdev +memstick +metronomefb +metro-usb +meye +mfd +mga +michael_mic +microcode +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mite +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mmc_spi +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msi-laptop +msi-wmi +msp3400 +mspro_block +msr +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwave +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxm-wmi +mxser +myri10ge +n411 +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netsc520 +nettel +netxen_nic +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +ni_6527 +ni_65xx +ni_660x +ni_670x +nicstar +ni_daq_700 +ni_daq_dio24 +ni_labpc +ni_labpc_cs +nilfs2 +ni_mio_cs +ni_pcidio +ni_pcimio +ni_tio +ni_tiocmd +niu +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 +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nuvoton-cir +nvidiafb +nvme +nvram +nv_tco +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +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_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_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 +pci200syn +pcips2 +pci_slot +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcm_common +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +progear_bl +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quatech_daqp_cs +quickstart +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +radeon +radeonfb +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtd520 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +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_generic +salsa20-x86_64 +samsung-laptop +samsung-q10 +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_svw +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sb1000 +sbc60xxwdt +sbc8360 +sbc_epx_c3 +sbc_fitpc2_wdt +sbc_gxx +sbe-2t3e3 +sb_edac +sbni +sbs +sbs-battery +sbshc +sc1200wdt +sc520cdp +sc520_wdt +sc92031 +sca3000 +scb2_flash +sch311x_wdt +sch5627 +sch5636 +sch56xx-common +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial2002 +serial_cs +serio_raw +sermouse +serpent_generic +serpent-sse2-x86_64 +serport +serqt_usb2 +ses +sfc +sha1-ssse3 +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sis-agp +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_platform +skel +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slicoss +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc37b787_wdt +smsc47b397 +smsc47m1 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-asihpi +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +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-mixer-oss +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-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-us122l +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +sony-laptop +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 +speedstep-lib +speedtch +spi-altera +spi-bitbang +spi-butterfly +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +squashfs +ssb +ssb-hcd +ssfdc +sst25l +sstfb +ssu100 +ssv_dnp +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +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 +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdfxfb +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +thinkpad_acpi +thmc50 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlclk +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +topstar-laptop +toshiba_acpi +toshiba_bluetooth +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tpm_infineon +tpm_nsc +tpm_tis +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts5500_flash +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp5150 +tw9910 +twidjoy +twl6040-vibra +twofish_common +twofish_generic +twofish-x86_64 +twofish-x86_64-3way +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +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 +uPD98402 +usb8xxx +usbatm +usb_debug +usbdux +usbduxfast +usbduxsigma +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +vesafb +veth +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-camera +via-cputemp +viafb +via-ircc +via-rhine +via-rng +via-sdmmc +via-velocity +via_wdt +video +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio_balloon +virtio_console +virtio_mmio +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmk80xx +vmlfb +vmw_balloon +vmwgfx +vmw_pvscsi +vmxnet3 +vp27smpx +vpx3220 +vsxxxaa +vt1211 +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +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 +w9966 +wacom +wacom_i2c +wacom_w8001 +wafer5823wdt +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +winbond-cir +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wmi +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +x38_edac +xc4000 +xc5000 +xcbc +xen-blkback +xen-evtchn +xen-fbfront +xenfs +xen-gntalloc +xen-gntdev +xen-kbdfront +xen-netback +xen-pciback +xen-pcifront +xen-privcmd +xen_wdt +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_uartps +xirc2ps_cs +xircom_cb +xo15-ebook +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx +zram --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/amd64/generic +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/amd64/generic @@ -0,0 +1,13406 @@ +EXPORT_SYMBOL arch/x86/kvm/kvm 0x0d980e5d kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/kvm/kvm 0x9383aaee 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 0x11b7838f 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 0x8fffca80 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x64ee4a6b uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7b8f66f9 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_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 0x078fc0e5 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x0c3caf27 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x132495f9 pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x1acf466f paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x27f61d14 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2b8fc416 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x3bb8d471 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x4d079cc1 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x50726b54 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0xaab5c02d paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xbd32d17f pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xf2dc20fe pi_disconnect +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x386b1b05 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4184f3ad ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x798f1367 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xb2a8cb08 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfad7ffa2 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/char/nvram 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x17ff2c1d __nvram_read_byte +EXPORT_SYMBOL drivers/char/nvram 0x2adec1e0 __nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x7da28f12 nvram_check_checksum +EXPORT_SYMBOL drivers/char/nvram 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL drivers/char/nvram 0xa8813189 __nvram_write_byte +EXPORT_SYMBOL drivers/edac/edac_core 0x345e9847 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0e1bf88f fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x116e7cfc fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x14ce5d51 fw_device_enable_phys_dma +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 0x2bd3919c fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2cb3eab7 fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x44a62767 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4cd8a64f fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d7c2fe4 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5f89257d fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5fe331a1 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 0x69dbb03a fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7523b2ae fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7a33fd61 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7fd45de6 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8d4f3b9b fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9168d7c1 fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x985b7dc1 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa4c4a96d fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa65c9ea3 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa8d03f74 fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb2330c5f fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb401af87 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc9c872c8 fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9139544 fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xea6ca475 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xeb9cabbd fw_core_handle_response +EXPORT_SYMBOL drivers/firmware/dcdbas 0xa75079d6 dcdbas_smi_request +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00d48ce4 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0190d8d3 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x01f2819e drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0252f094 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04317560 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04a13745 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x07b21e9f drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0978ebd6 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a625de1 drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b31e6e6 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cb22ad9 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0df299e4 drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x109b8b26 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x120919f6 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12fdac36 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x14975983 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15095085 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18a755ad drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x190db831 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a1ba983 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a31b3a7 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b1b1c67 drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b9231f1 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1ba44777 drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c5384c4 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d84edeb drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1e2f16fe drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x221e0b5a drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2335d085 drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23d355c4 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2595ef9b drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26196c49 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x290bb97a drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b075b63 drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b274802 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2b7ce4be drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c7c9087 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d358482 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d3a8127 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31457886 drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31705c18 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x319d5bf3 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x31dec62e drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3211bce1 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3225b713 drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x325db22d drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x393751c0 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x399a7f39 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39ad40d6 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3aa10b2d drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e91dae8 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4137c393 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x413ae33c drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41781497 drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41a493a0 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42dc8622 drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45552fbf drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45db64c1 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45ed7110 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x483a0098 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48bbd498 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x49879807 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c1cd2a8 drm_calc_timestamping_constants +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 0x4ecb6748 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x51398759 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0x52ac4fc7 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x576d8205 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x57c731c9 drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x591ef74a drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59e9265f drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0x59f02411 drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5b530661 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c1f7084 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ed9d210 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f63c102 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5f77bef6 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fb1441a drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x601115bf drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61611174 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6210a643 drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62b0326e drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e8d54d drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65879366 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x668d0476 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6696518d drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x680acf5a drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6b6d7375 drm_timestamp_precision +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6bef2676 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6cee2e42 drm_object_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6d9eef91 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f022f42 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6fb1a56a drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x701341ac drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70e3d610 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72293c67 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7229c812 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7288e1af drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7603c921 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x762216af drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7760f2af drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x791faafc drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x79fd49c9 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a66fd05 drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cddac3b drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7ce2828e drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7eba51cc drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x810eced6 drm_mm_search_free_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x817614bb drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84be69c1 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8845e8ee drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89462ee2 drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8b5fec7a drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ccca821 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d6b61a7 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8de13715 drm_format_vert_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8df1e28a drm_connector_unplug_all +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 0x8fae72bd drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x92e22dc2 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9419f568 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x95611e1d drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x97d28808 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a549722 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e2cae7d drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2e03946 drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa44ac645 drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5c678e1 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa93aa294 drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa369486 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xac72b540 drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacec3ba9 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xacfbdcf4 drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad02cb4b drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadf7c28e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaee8b648 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf3ae061 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaf7ab496 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb05ddb03 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb3372131 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb4fbd63e drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbabb3244 drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe48c8d5 drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfc92ee3 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbfcf0718 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc07a2ef3 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc264128f drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2a11df0 drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2b90d88 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2dcf5f6 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc362d2cf drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc48d848c drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc55af619 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5e44a9a drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8a004dd drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc9bc0133 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcb618138 drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcbeae35b drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcdac27ca drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcea51adc drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcf9888ab drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfa03ed6 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd0db0e33 drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd1aee74f drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd21577df drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd4a20874 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd524a5f0 drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd643469e drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd68d40a7 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6b7e994 drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd6f719d4 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd7f3fd55 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd95fee70 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe112c4c5 drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe1a5fb7e drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe3b706f3 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe66f0b18 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6f0259d drm_mode_config_reset +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 0xe7f5b82d drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeeca1dec drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeef2fc2c drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xef1640fe drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf03914e3 drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2929392 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3476d90 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3b2bbb1 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf4d97c49 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6615736 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf662c9ad drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf7f52d26 drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf87e0c30 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf8b043c7 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf90f40b7 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9787764 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf9d91d11 drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfb277931 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc3461e drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbd3d36c drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x01e0c8c9 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x050d0d7a drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08e5c08a drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x08ec0d93 drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d3c2c4a drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x21a34cdb drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x301c2572 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x30b2b305 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x32c258cc drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43492a48 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4fb120c5 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x67604d6e drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6b39fddc drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7908677f drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7ab9fb4c drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7addf335 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b1844df drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8019fad0 drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8daf505a i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaacdd438 drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb9f8aa46 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc722234d drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc80d5123 drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xda1c07f3 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe0e4e557 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3d26d60 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe84586c2 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xee27447c drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xef704217 drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf1b37b2d drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf9c18e3f drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfce888e7 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x7776d114 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xbb0204f5 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xc81568f4 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02fbb5cf ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x067a8716 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b5bc37c ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0bbe2446 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0ff11a2a ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x163bc1f9 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2551fe26 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2960390c ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2d798f9e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x356488ca ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3a0782fe ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3d12d74e ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4214a419 ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4279ef25 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4677d6f6 ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4817fd09 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ab81e62 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4c07862c ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54707f7e ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x54c29a40 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x57a36e7e ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x58866c0b ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59601168 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x59d28021 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6693f87b ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x69583ea4 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6a8bcb89 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7b4967e0 ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8349936f ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a3899e9 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d5016bb ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8fdfe2a3 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x90839ee7 ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x91d17845 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x92bf42d1 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x93c96878 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x96851115 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9bae77fd ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa80ddba1 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xab312393 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb1ee5273 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb83e9624 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc13b38b4 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc43a7544 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc4d4618d ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc6485913 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc1e2b72 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5755e32 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd690ef85 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdcb1ed0d ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddd3dea5 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe3397ab9 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe5647f01 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeca8b597 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed195eb0 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedd17b7d ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf04adc04 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf32518ed ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb0c4733 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hv/hv_vmbus 0x165ccf9f vmbus_sendpacket +EXPORT_SYMBOL drivers/hv/hv_vmbus 0xc6337122 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 0x70477e79 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 0x620dd3dd i2c_bit_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xbb7e36e8 i2c_bit_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-bit 0xc343ba21 i2c_bit_algo +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xa45fa960 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0xd26a55b1 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xcc1d9d26 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x08705ef8 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x099945fe iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x1941d8f3 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x1c57080a iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x426d46ad iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x44466f3e iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x46a92a7b iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x51feb58c iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x5208aadf iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x60adaadf iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x85fa4694 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x93c470ce iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0xaee6e304 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0xb1c3ea14 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xb7528ea9 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xc2d64047 iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xcba97f36 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe0deaef8 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xe613aca5 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xed4a73d5 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xf365c51f iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xf6591620 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xf7633019 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xfe372ebc iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x1724236c iio_kfifo_free +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x61990c52 iio_kfifo_allocate +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x2107de5f rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x39f9bc39 rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x6f6ee97c rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x8ef35bcc rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x029e4572 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0c75e481 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x194cc97a cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3fedd050 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x6ed68d46 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x807e0ad7 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x91229f2c ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa396795c ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa434ef4e ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa78b456a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbc04c674 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xd0892ed9 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xdb3b39ca ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe69798b4 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe70606e1 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xefba461b ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfe9f5254 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02512053 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0ace3380 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cfa1661 ib_query_qp +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 0x18f7623f ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ec62c82 ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x236aea20 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26a38c9c ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27adcaaf ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x295c77a8 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3022f72a ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3289e668 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33584d4c ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34302829 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x34a07336 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e89d421 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x41d994c5 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4a667b19 ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50336aed ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50e02830 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x516f3995 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51ede434 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x537183c2 ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55fb70ae ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5711b71a ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60767fa5 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x619a818c ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63430394 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x641c9fa7 ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x651f60c7 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65d5ec44 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d4b7863 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70be7bd2 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x71a68621 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ad82b08 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ef7cf74 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x824b9ddb ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8447bc36 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x85bcb412 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x867d00af ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e73f682 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8f81eb35 ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x901118a5 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x913a534f ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96a9ef8d ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x97413805 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9fe95656 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa47a7575 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa77b5cac ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9e63d1f ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae55eb0f ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb09f2752 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb4308c28 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8178eb0 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbaed4861 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbc37838e ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe9c6400 ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc32b59ff ib_destroy_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc37b13ec ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc67f14a5 ibnl_remove_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7cec377 ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc88a49aa ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc65aff1 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2dbbf5b ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd53e0943 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6df2ae6 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdbe4b034 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdcdfab50 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde8a1d4d ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeb891716 ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed7359da ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedd03145 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefd8442f ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa40d38f ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbb8cefb ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x02b58d68 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x337016fa ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x62e72314 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7440aa7e ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x8e29e91b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8b8f6d2 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcc13185c ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcc3085bc ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd2a017b ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcd7c2f8e ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xe5370d06 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4bcdb66 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x28eba257 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2a3567b3 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2fd0e42f ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x564c1285 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x56fae829 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xa2d211d2 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb442e6e0 ib_sa_get_mcmember_rec +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 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x022fe813 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x07694842 iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x615c5aaa iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9ec312ce iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc38d6695 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xc5f9327c iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdf8c44af iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe3b95407 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x06ad7241 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x19040189 rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x489fd05b rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4942d762 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5d93113b rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5df04712 rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x60d2b3db rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x69d6e88d rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6cf7082a rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x787fa558 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x84789337 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x860176b4 rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x937db077 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa71c76c1 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa9ca0a0f rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad7e5c6f rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc172a101 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd42eae00 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe9f50605 rdma_join_multicast +EXPORT_SYMBOL drivers/input/gameport/gameport 0x030cafba gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x186cbd97 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0x25dbcffd gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x27dd4371 gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x58d5aef1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x886a95a2 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x963f2fc8 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xb50bc520 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe9d593c9 gameport_stop_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x581b89c3 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc8d38b98 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe0fac8ea input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xe1a7e2ac input_register_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xc7494afb matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9643b24f ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x9cf66ab0 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xe584a437 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xf14fcb9d ad714x_probe +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x1342b92e 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 0x162e60a7 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x38ed715c sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3c08cf71 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7213749c sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0xbb1c048f sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xf589fb3e sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x44f9aadf ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x809bbd43 ad7879_probe +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x0cdf60d8 amd_iommu_set_invalidate_ctx_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x153eec93 amd_iommu_free_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x201fda36 amd_iommu_bind_pasid +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0x6e436499 amd_iommu_set_invalid_ppr_cb +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe315f1ca amd_iommu_init_device +EXPORT_SYMBOL drivers/iommu/amd_iommu_v2 0xe9225150 amd_iommu_unbind_pasid +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x00ae0a32 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 0x241eee09 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 0x31a75eba capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4158da0c capi_ctr_down +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 0x63e9d464 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 0x7efe3778 capi20_put_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x874499ae 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 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 0xbd6ce353 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd9b98a66 capi20_register +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe19a11ac capi20_get_profile +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xe6c42e4e capi_ctr_handle_message +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 0x104a94f5 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x111d600a b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x67720111 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x68665f07 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x827eefb5 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8a0d8ac9 b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x8b14776d b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x92fb054a avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9d92c2e5 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb9fda16e b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbd91c802 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc4f40ca5 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc5588b10 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd5971be3 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe3e63e15 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x00452d38 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1d1907e4 b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x68888adb b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x8850bc05 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa2e13ef0 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa471bd80 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa53a6529 t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xa91875a8 b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xccba0373 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0x29562993 b1pcmcia_delcard +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xaec3240e b1pcmcia_addcard_m1 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xea620116 b1pcmcia_addcard_m2 +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1pcmcia 0xf14bf8b1 b1pcmcia_addcard_b1 +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x2974ead1 DIVA_DIDD_Read +EXPORT_SYMBOL drivers/isdn/hardware/eicon/divadidd 0x4cb2ed65 proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x42497fce mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x4cf6786a mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa0b5a65d mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xee71103c mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x065abf83 mISDNisar_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0xc2299a0f 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 0x58767160 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 0x295740cc isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3e90570e isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xace469d5 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xdfc7b5b1 isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xe0cd1cb0 isac_irq +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x5a97a79b isdn_ppp_unregister_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x6db71591 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xbd732d89 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 0x0fe030e4 mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x17aec9fa mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1fff7e77 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2e373ed8 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2fc62988 recv_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 0x614ede30 mISDN_FsmAddTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x67e7e197 mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x69798cd8 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6cd7e408 mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6e79c29f get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x872305cc mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x87fd8908 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x94755037 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x979b310c mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa28673d7 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa8958738 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa9db212f create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf813ec9 mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb6c65dfe mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xbcb321a6 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd23df234 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdc0396b9 recv_Bchannel_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 0xeaecd3ee mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xebecd443 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x6ba056aa dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0x7325169c dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x795b39c1 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf59e3aa5 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x07a8fa29 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4f0f089f dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x63f1c83a dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x8496944d dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbea3db39 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0xfc9cc761 dm_exception_store_create +EXPORT_SYMBOL drivers/md/raid456 0x106c82b7 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x88f8fcab fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x7254226d max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xc0cba181 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x66222de4 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0x400612a2 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0xe1df9b6a mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x0f6fd3f8 mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x1d7abeea qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x2d028570 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0x777d57e9 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0xabb59980 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x80ebb014 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x8a352e57 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x5d310ae7 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x10aad28f flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x13643e2f flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x38787486 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x41bd8f95 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x4b5ee35b flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x511b164f flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x56507abc flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5bbf486a flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x654401e7 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x7858e65a flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x83906f57 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x84bb0469 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x8b6dc63e flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x96673c1b flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9ca93353 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9fcd3d0c flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa09373c0 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xb803e27e flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc7fde841 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xf600deaf flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x0e83486e bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x983bda3f bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x9bbb2e29 bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xf1147ba7 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0220eaf5 dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0b65620f read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0d600d02 dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x58696a50 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x88752f10 dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xab3f109d dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xcb7abfc4 dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xef34094e write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xf8dc2d5b dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x04f1f428 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x02493e5e dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0c651bb2 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1a57c065 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1e02e94e dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2f324540 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2fbf4aff dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x398aab01 dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x39fcbec4 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x40f8fce5 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x44420bb4 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x48824cf1 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5cd2abc3 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5fd0def0 dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x64d6d7a9 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x732e63e5 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x79af568a dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7daafb2d dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x887caf4f dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8d0df2a1 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9582655f dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x97a0d2cd dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa2a65e70 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xbe8a7f84 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc64f99da dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xca4965f1 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xce48fbfd dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb549983 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe010037f dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe15697bd dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe88290a9 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xeb983226 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xecaafc18 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xefcef46b dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf23798e2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfcdcba2e dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x12fce548 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x2a3080e4 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x335d7630 dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x64d407e1 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8d98d3cb dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x93ad1146 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xdcd391d1 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x48ac2ba5 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x0efd79fa dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x2f0bb4b6 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x4344bc22 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x4991d11b dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x58456acd dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x66937901 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x6a9ed319 dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x6cb4a66c dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb7557275 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd16f3ff9 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xeb198949 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x065cd29b a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xf2388656 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x91a58608 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x9a9be803 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x140f44ff au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x1e4986b3 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x340f13f5 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x921bf06c au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xa8d15889 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xdb4ad0de au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xe977cd49 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xf93ccc84 au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x840acf99 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0xd8671e97 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0x521ef1ba cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0xcf1fa097 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0x1db19c24 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xa3445c40 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xc743c754 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0x47bbaf05 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x39f0f9d4 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xfce51d18 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x2ed5b2a9 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x23435e09 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x9631cd08 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x972dfb72 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa29ec4cb dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xcdf324b4 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0205d4f5 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0b1d507e dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1f42375f dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2d9719b1 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x3d860392 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x41ea50f3 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x5bf8a73f dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6153bf22 dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x67b58c75 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x9b89885f dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xbdb02fa1 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc17361ab dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe85a6542 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xeb214877 dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xef5385aa dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xb6e3ac99 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x382b079d dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x41b54f31 dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x80aaa865 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd0a646d4 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd652cb66 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xfa86e5b0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x57ad5998 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x60826d04 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xd4fc6359 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xf57ea183 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3e5c8c61 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3ff4ab98 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x4597eaca dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x53159ee8 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5802c03d dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5ecab922 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x61965c32 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x65cd7696 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x7a405af2 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8ab6cbc7 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9dd7aa07 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xcb0871b3 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd7172897 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xeba0ad47 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfebe0966 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x015895f5 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x04ac3ade dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x098c9fbc dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x09d70fcc dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x16e25361 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2b9d6331 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x377f2eac dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x3887beaf dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x68305433 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x6ab371db dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcf559c0a dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd01f76ff dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd5f04ecf dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe0f0e086 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe1c8460b dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xeb45a939 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xf984c5a5 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfdbe9109 dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfe85bc3f dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x0dc78408 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x2f1f5f67 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x3f2d424c dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x6f3951f0 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbdc73519 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x60051622 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xcf7fda78 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x6902923d drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x9ebaed03 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0xac4739b3 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x8cddbe0e ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xd4704356 isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x22cd3794 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xe1f63195 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0xd6e4208f it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x8bc5e3cb itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x38d94280 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x44d1855f l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0x80e512a4 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0xff64ad58 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x3ebe34fb lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x414344a9 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x107b346c lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x7b299b6c lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xf83c38dc lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0xd13ebc5b m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0xef34a33d mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x34e61536 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0xf58b6e37 mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x48fe62f0 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x61bd6181 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xcc7a8076 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xfdfae414 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xd66ce30a or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xb8d8c397 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xc953742e rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x6bbfed23 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x88d72d86 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xc94c8a8d s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0xe979c245 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x9840e576 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xedeaa12f si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xfac4af58 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x5d6406ed sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0xf744678f stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0xa12cf100 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0x0299cdf8 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x0ed8390a stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x0bf71d67 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0xfab53675 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x4a5c9284 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xd0960aab stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xe20c8859 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x4bcc585b stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xbde43359 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0xf6d57009 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0xd6b12f3c stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x6dee2cc7 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xf5d71cd3 tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0x151996b9 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xac6a9372 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0xcc53dafd tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0xbace4b81 tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xbce48f35 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x7f6e75ec tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0xdde64cfe tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x90b3ffe9 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0xd588a583 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0xe9e0e0c5 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0x61a68b1e ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0xf67d7c1d ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x6cbd6b4c zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x8a1b0188 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xd7adde20 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0x34ccbe69 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x07c4ef63 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x2c03eea9 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1f4aaf55 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x589c6854 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x7daad4e6 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xa9fc2688 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xbb83422d lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xebb5acb6 lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf3d4502c lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xf6f0e68a lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/rc-core 0x82513eca ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0xc2d2950e ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x09331f2f bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x2f0a2dd0 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x994a3dbc bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x85f5763a btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe99838a2 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2a61063c cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x348d38c4 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x869edbab cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xb4d723f0 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xb883ca96 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x863f1e8c cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xd9032616 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x17a63b82 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1a0977e2 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc90f48ae cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf814b766 cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x518bb671 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x7cad51db altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xbb85a33f altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x082186b0 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x2b8801af cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x6e82a99c cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x95fda46b cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xa3664c4a cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc37c1d10 cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc791e80f cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe144af46 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xeb8460f8 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x8a6a910a vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xb2918d67 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x0fa132d7 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x5ab0a152 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x5e33cb6e cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x9aa04e59 cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xbeb481d9 cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xe27e6498 cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x21232226 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x6b4f2fbd cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x6e42a93c cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x7f1ea8da cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xc8737c83 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xd9ae5b85 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x00803e46 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x10bab006 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x18bb985e cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x24f81c39 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x29c3d958 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x355d93da cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3ab3d684 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x41286e01 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x59d8b050 cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x5ff13652 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x756eef91 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7e03f184 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x82641222 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x82c0c531 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x8658e372 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x8e5d42ea cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xc81a9f73 cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd0fff606 cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xe1a6786f cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf0aee41c cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf7ffccb0 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xfa03e652 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xd6173a80 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0xf949c90b em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x273e9ceb gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x377b4185 gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x53941dba gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x5731b8dc gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6c89d6cb gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x84167154 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8da6bd0a gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xd19089f8 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x2ec70727 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x51b2fd9a ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7156c729 ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7439736d ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9021974b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9f992eee ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xae0218fc ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xc7acc215 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xda6ff129 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf229bb99 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf3b83bfc ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xf48b7127 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x183af8ce saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x437ee1a0 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x4cfbc1ca saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x51541195 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6d0efaf9 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6d8f95e5 saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6f1ecd90 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x72fd481a saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x757f26a9 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x92f8b490 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcfb7b5a1 saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xdb037c6d saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x28ad4500 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x69a6cc81 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x8012af14 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xc0af4c0d soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0xdb4fa37a soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf8cc832f soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x9cf1a729 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xd3090060 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xdf2d179b tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x60b29e5d tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/tveeprom 0x9db8f9fa tveeprom_read +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x51a3c3ba v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x527af4e0 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x49fc01b1 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xb0008df7 v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xdee72717 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x1a19e5bb videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x384954db videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x3c6df307 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xac308b42 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xc681403b videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xf337289b videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x9ae0c2b6 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x0118764d v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x0b939453 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x0cb570e3 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x0f7cdbed v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x120a3f7b v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x12ff6538 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x130eb308 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1d2017c9 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x1e975c0c v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x22d0c125 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x23d36aa6 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x246c7c4f v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x27c91e1c v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x377611d8 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x3782f4cf v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3a7e256e v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x4476e3b1 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4b5799be v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x4d1a2e6a v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x54c7dacb v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x57f00317 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x587707c8 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ab27f19 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5bfe45af v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x6cc0fe76 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x6dbe3f8c v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x755dfea4 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7d75c602 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x8498825a v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x8d4e06ec v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x953461b1 v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xa6b22851 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0xaa8a898f v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc6865375 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xc91518e3 video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xce77e1e6 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0xd0fb69d4 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0xd151dd5d __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0xd4976ad8 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xd7c2c611 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xdf262b71 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xea036931 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xf6cd429e v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0xf8c65d34 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x066c7e7f videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x4ff81c2b videocodec_unregister +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x890a7073 videocodec_detach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xffcb68b1 videocodec_register +EXPORT_SYMBOL drivers/memstick/core/memstick 0x0448b141 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0x04ce2b89 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x054d3945 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x26d00cfb memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x6cac1259 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x7f1ebe3b memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xabdb0973 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc32bba09 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xc907b6c7 memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcca4e848 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd1665109 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xfb66c10f memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x06b79fe7 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0b9bb315 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0c2862d2 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x0d21ef57 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x108b62a5 mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1a87fef8 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x344f87a0 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3bc23971 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x40ae36a9 mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x43371233 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4b8fe19c mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4fd9000c mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5e50d130 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x63a25c87 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6d4dc4fb mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x82490341 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x8288f5fe mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x862926c7 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x86fe2fbe mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x92ccece7 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9f3ab67e mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa0569b8c mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb0b7170a mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb0ca8638 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0cd5d20 mpt_reset_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 0xcbb838a5 mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe04cc9f9 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xeb2eea7e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfaed6841 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x04f2e8c1 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0744a9e9 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x202e41c3 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2358b184 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x30f538a3 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x348d46e5 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3c044db9 mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f1f99a2 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x5198452d mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x69a46d69 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6b4e438b mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6db47009 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x6e7c5e92 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x720fd067 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x780e183e mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7860e412 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7b09db72 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f76a25e mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x828d78b2 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x84917d85 mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8788fc0e mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcabaf24b mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xcdf32f41 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd742fc9b mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe42ada18 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xecbb9a01 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xee482d60 mptscsih_event_process +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x054f50c1 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x12889b59 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x19423bc8 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1bcb1765 i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x21e0207c i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x267fdf3c i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x3005e04c i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x381cd76c i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x5f2f42c9 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x60afac38 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6cafe9e8 i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f5c8ab6 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x76dfabab i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x9ac207df i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xbc1dabee i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xc896911d i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcb38befa i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe98b0dd0 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xed43e28d i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf2c49ce8 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf6fd2800 i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf997e364 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0a3e46dd pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xe6186738 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0c6cdff7 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1f371a53 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x22b7264a mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2b1c0645 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x2c910cdf mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5667b336 mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x671fbd1c mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6d6c21e5 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6f60ece4 mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x74d38bf0 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xab464941 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xaf5326da mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd1ef3948 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/tps6105x 0x13d798bd tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps6105x 0x77328ccd tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x92d7ef76 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 0x34052b07 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x71b25a1b ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x3e6bb317 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0xbce194ed c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xc81ebe2a c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x24eaaa69 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x3a799d99 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x1f0b8491 tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x30e1612e tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x3239545c tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x41c47919 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x58ec6770 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x696fc704 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x7894d9b0 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x7ae9adc6 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x7b98f5b0 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xe4cf5293 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xe98801a5 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xefd26b17 tifm_alloc_adapter +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0xd5d0a059 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x09a19c6d cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0f28a443 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x5c4a4c52 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x050680c9 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x42e14363 unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x83843a1a register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe024371a map_destroy +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x34d47011 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x4801eda6 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x01c346fb simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2da093dd mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xe56bf971 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x00ccffce nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x1e8d7538 nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x451dd409 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb77c964e nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb7b554fc nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xc2bbe723 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xeaa59a46 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x3ddc1d78 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x8c2ccdf9 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xdf5ef346 nand_bch_calculate_ecc +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 0xdccb74de nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xe5dcce4c nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6d7a46a9 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xaf3f2f27 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb9751c86 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xd4029f8f onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x08ca697a arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0930de06 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0e784db2 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x10672d8b arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x165272d2 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1dcf41c3 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x54070be3 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x59bab8ad arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6095a4fe arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc1b03ffb arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x16e57d32 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x788b4644 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xaefb9ebf com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x104d40a6 ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x19343006 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3854fdea ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x85be75b4 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8b387112 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x958d7283 ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xa45db2c5 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xb0718e86 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xef2e9fb5 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xfeb9ba78 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0xe64fc65b bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x9a842d9c bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x9ba824cd cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x13201215 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1ea7299c t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3577cff7 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b4c6cd4 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5263e276 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6a4061f5 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x771cc175 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x783af196 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x7b2dabb2 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x82025f33 cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x90ae3f1e t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xb7623e9a cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xce651016 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xda81cfb9 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xda9b5e56 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe7f9be4a dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x021ea249 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x135595c1 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d850ba4 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3ab3f43c cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x41ecc1b7 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x46a72f77 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x47cd9bf8 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x515b2922 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x551e7f2c cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x618da1b3 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x69a1f857 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6cbdd3f5 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7401cbe2 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7770e5fd cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x77df787b cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7c5cb872 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x96f3194e cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbcb9fdad cxgb4_register_uld +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 0xed259516 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfae66a38 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb0031676 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 0xca021520 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f7a0a36 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41907d85 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x922d947d mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x928b7a71 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e2129bf mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa20422d0 mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4f902ec mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc72ed6d5 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe95323a4 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfda70b4b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x242f33ba hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x351c2db0 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x7e858d34 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xa318aba4 hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xf992ecc2 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0b2eea85 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x11f8001b sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x36cc145c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3d2a6472 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3d8f5abe sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x713530c1 sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x732d6dec sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc4d6b05b sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xcb94eb1b irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xf5b0479b sirdev_put_instance +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +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/phy/mdio-bitbang 0x337f21d8 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0x625ddb56 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x2b08a835 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xa1c02cf7 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xf91e4d71 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/sungem_phy 0x24c1c782 sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x09172151 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x172612d3 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x3aa01f72 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6961551a hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x972c5f02 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x9d49fb4e hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xaad3e026 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xb48c9cf1 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xbdc185a4 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xde97400d attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfb84184d hdlc_open +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xc6468745 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x4ab1ad65 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x5e04b1c0 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x9fce2404 stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x0ff14e57 ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x57eb6d80 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x6fbd6a0a ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x7404554c ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x9180ed55 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa37f3dec ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xce449269 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd6e770b0 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xdb446d30 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xfbbe75aa ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x655901cb ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x70432410 ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x83145412 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x84f8057f ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9142aee5 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 0x97f5a530 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb0af3703 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xb37e0279 ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xbe35af05 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe95bbe1c ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x0892c770 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x368ee7b4 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc1af5945 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 0xda3b459d ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00828252 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x00a4bb65 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x059bdc2a ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0f8b2744 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1349e0f6 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14ee0087 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14fcb3c3 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x170b3c8d ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x17acb6b1 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1bbf198e ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x203b02ae ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2348d720 ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2904335d ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x295871ce ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2d8b2a13 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2fc9e752 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x338274ce ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3980a0a9 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x39a7aee2 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a432b33 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3a71b900 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3e734c19 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x426451b1 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48be6996 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x49fd7792 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ca4f7c6 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4cdee238 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59382df6 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59df2e6a ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5a3dc463 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5f3e658e ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fead9bb ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6075b9b5 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x68141c65 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69f2d223 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cc8fb27 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f9f8bf1 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x703906b3 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x73230b6e ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75ef617b ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7aca7b69 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b4387d9 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x814f1935 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x820c4d38 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x825fe59f ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x830bac87 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x84105940 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85db50b0 ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x91b25987 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x97977a3b ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x98ab2667 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b0feea9 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b1f22ea ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9b86f094 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9c3655d1 ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa47b1b18 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa7eda14 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xab26d6ba ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xacf87cda ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad8a2781 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf151dee ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaf9e690a ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb0812578 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb3a8bc16 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb51c8c90 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb586acf1 ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb666cdba ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7e370f8 ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb80f4dc4 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb955dafa ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe5f5ce1 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6beac66 ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb9370b4 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcf07838d ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd3801219 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd693b9c2 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdf1996f1 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe06d43ea ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe411022f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe427377b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea5ef94e ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xea8b7ee0 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb168075 ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xec7532cd ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xedecb127 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef02a485 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf200b968 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf49d6dbf ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7f521ba ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9152f32 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb4585e6 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe14ba8c ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/atmel 0x965992e6 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x97c94e4a init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xbfd7c7b8 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x46601549 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x5df2b598 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0c677ecb brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x38845a22 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x5ca6c1ae brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6b4e7735 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8e3467a0 brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9847d3eb brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x9f0c3a99 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa58e2643 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xa66b5f63 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd1c52494 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xdfca5e46 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xef3005c4 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x00e95f1b hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x03567d18 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x28f594a3 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x35f5f4d0 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x41e2ab05 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x43b52689 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x523d4cd5 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6cfcc741 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x72d9c2ae hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x799634f5 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x7f7774d7 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x84ea6492 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x87f215e7 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x894d4ba5 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa038bf6f hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb0e4e031 hostap_init_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 0xc07902d4 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcd73429e hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd94a443a hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xda530ea0 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdbc58899 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe4fd611c hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xeb081a83 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xecd62e39 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf88e3301 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x254de152 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2dbfab91 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2ded330d libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x33e6920f libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3fe81f83 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x43d1e7e3 libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4e4130ec libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x54aaf83c libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5cd007f1 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x6772d072 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x74534587 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x909c19e2 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x99c0eafd libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa3cdde61 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa5ef53c3 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa87c5ddb alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xadf51c5a free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb696c967 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xbfdb0b54 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc470a589 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcf8ce5eb libipw_rx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x00b483d8 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05f98478 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x066b72b8 il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06e9a00c il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x078b58ed il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07bcead7 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x09215f6a il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0ce9f95a il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0dab4e9e il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1134e266 il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1245290b il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x128c8393 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1efaf11b il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x227d9e16 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2b207238 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2cf60a95 il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2e3b7cf0 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x39bcdf79 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3ae76846 il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c28b49b il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d38ff55 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3e04fa5b il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4311e57e il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x453c67ee il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45fc0cc4 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x465806ba il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4d825864 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a4d5cc3 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5a9bd781 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5bba9f0f il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e3ccc22 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x61440b4e il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x630784e0 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64e5b583 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x677fd817 il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6a4df516 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6baeb79c il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6fe3aad6 il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x758e7985 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7897c4df il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x789f3100 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7e2c262d il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7fe3888f il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x827a3dfd il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82ca8daa _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x842c0569 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x84c81f07 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x854f0c3e il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90180221 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9723d926 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9902e076 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9aef9435 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b515f81 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9bbb7d69 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d555f5f il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9d728e1d il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2253fd8 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa33377b9 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa387f7ba il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa390c17b il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa3b3edf5 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa5ef4c0b il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa61ef0f7 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6d340d5 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xabb5c435 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xac9522de il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad86ae1f il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaf6934e4 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb0108bf1 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb356c43d il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4c6d6ce il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb78a89b7 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7e26bff il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7f09c7f il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8d9b0eb il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xba77b197 il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb90b0d4 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc8f1cbc il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbeba6238 il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc15bcf00 il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc57d361b il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6c3aa32 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc9597bc5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd0587d16 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd06a25b9 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd5747ef5 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xda36710f il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdd92fe78 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe1a72033 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe5f18421 il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe80d5ecc il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeab4f0fe _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xef55a3fb il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf5b6bf88 il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf773eb31 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8684284 il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfdb99707 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfefad733 il_mac_conf_tx +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 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x02083235 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x293efa87 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x29fa98b5 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x487c8cf7 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x566f6700 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x58787813 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5b57e225 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x689343d2 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x739c03a5 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x77fe6845 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xaa54d410 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbeda4498 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc96d23fa __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdb0cbd65 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xdf5e2c35 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe75353f5 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe8ad5396 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0c0db748 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0d85fc41 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1c1ea31c rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1c46276f _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2b966090 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3150d66d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x36edc7ce rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x39b76812 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ac6eb2a rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ef6339d _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x47439901 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x487cc0a6 _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4c2d4454 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ef2adab rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x510fa5e9 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x520f8b47 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5464d4f8 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6527b443 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x67896e9b _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x68321187 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x763bedf1 rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x769cec31 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7cd2c3a2 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x898d2540 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8b1a5f43 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8c71ae6b rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8e8bf513 rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8ec11506 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95df4f81 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9815f266 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa83c3db2 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa87fbcb3 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb1ddf637 _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 0xb3895e14 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3d3a018 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcb4a96f6 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd5d11e35 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xda9e7a39 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe8510226 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xee7867aa rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xefc6c471 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf31f04e4 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0098d23b rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x174b7cf4 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1af9fa02 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x34287ed8 rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x3dfd4e08 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x50609df2 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5500c604 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5b0ea358 rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5b23e920 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5e5b011e rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x717403d5 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x78109b57 rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x85abea77 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8e60d01a rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x951a3a9a rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9a8b093c rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa8b187dd rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb6b615f3 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb8aa774f rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc3687e6c rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdcbc8552 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xddfc3f22 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe05f7315 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe6a2c886 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xc03f51fb wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xd319c554 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x04ac10e0 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x0d10a4c3 parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x26777fe8 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x3a202d19 parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x3def3a17 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x3fd21107 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x4cbab13f parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x4d165c85 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4d6cd63b parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0x591268b0 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x6011fa41 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x60adfb96 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x6ff5f4cc parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x81420ac3 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x81c61952 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x842accf6 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x8e97f1aa parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x97386444 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x9af44caf parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x9da575b2 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa697d7f6 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xa8a2a0dd parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xa9bfa952 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xaffa0a94 parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xb53de7e1 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xb9f08bee parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xba5deb8c parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc15617b8 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc9a7b9c1 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0xd2c8e66c parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport_pc 0xa958f5c4 parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0xaa52af59 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x19b90b55 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1df711ff pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x258f8d2b pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x2674e871 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x43afb8ef pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x44124f2f __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5ce8c9f0 pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x5d375018 pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6fce9e3d pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8660d7f6 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x9f94f925 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xa03e14ec pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xaab2ba2c pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc1e7cdc7 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc24bd382 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc9394754 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe8b2f6f4 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xeb6dbffc pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xfca96a39 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x05f130a4 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x091879a2 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x19c1c5bc pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1c5faedf pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x23f6784f pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x3ec6e0f5 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x504288f7 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5337259f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x65cd48af pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb62852f8 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcfe267cf pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x079d392c pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x93a384f4 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/platform/x86/intel_ips 0xbed13272 i915_hsw_enabled +EXPORT_SYMBOL drivers/platform/x86/sony-laptop 0x5bb1e117 sony_pic_camera_command +EXPORT_SYMBOL drivers/pps/pps_core 0x15637293 pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0x44e511ce pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x4c71de4b pps_unregister_source +EXPORT_SYMBOL drivers/pps/pps_core 0xba4f01d4 pps_lookup_dev +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xa2dabafe bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x00f5c454 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x35565910 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9b1b6c58 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9cac07a0 fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa3517a8c fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa658bd99 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xa92f3bb2 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaaf79875 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbcef97d3 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc514d62f fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xf3e0283b fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x08762b0e fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0ab60eb4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a9d1bd6 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1f44d881 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x21644ff7 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x217987fd fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x269057c4 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b62716f fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x35f7bbc8 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x396388c3 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3bfee7ad fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3fb7848d fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x44582205 fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f1f281e fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x500072f2 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x505f962d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x507f3b65 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5bce254a fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6210f2d0 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6aec3be7 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e516293 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x741c4996 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x742d2b3c fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7cd0a5f8 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8113ed06 fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8b344393 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8ecd7778 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f8984c6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x901138e6 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x92a3cb48 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x962d4127 fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9d6e38f6 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa0879ff4 fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4fb2ec4 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa68f99e5 fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb432a6b1 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb9c68b30 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc459526c fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcbf8721d fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcfb55fbd fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd56ae452 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7312cd4 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd7972751 fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd8ae2fb8 fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdaf0c1b9 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3fb7341 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9e9fcab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed45bfb2 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd38c546 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xfd89a476 libfc_vport_create +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 0x63486ccb mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x032e0d58 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x04e7043b osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x091f3b04 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0b8e4b7b osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x193a1a57 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x19475678 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1e68cd4e osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2d3cbd72 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x35b46f1a osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3c1e1706 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3ee23dbe osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x439271d8 osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x484c0fa3 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e22f1bf osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5590c732 osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x567765f1 osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5dcfec73 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x690307aa osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d83d2cd osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x72cd7b4f osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x7e1e2b39 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x822096b6 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9008015d osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x92cf16b4 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9855b99b osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9a97ae75 osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa3bffc10 osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb4dfb0cb osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb5d21477 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb81d7178 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd2aa337b osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3397e49 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe620e129 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xea06ec34 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf3496682 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf79b3fc7 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/osd 0x34c48e9d osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3bed49fb osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x56beb56b osduld_register_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x7c1338b1 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0xdc1f6564 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe57272c2 osduld_device_same +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x1b291606 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2c24b2b7 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4bce6c1f qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x62c1d15a qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7695043b qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8075fb61 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x948b583b qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x95579484 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa7aa86ae qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xb8e3019e qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd4dadb09 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1240acad qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x4008288a qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5c41ec7e qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x85132e2c qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x96983eb6 qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xdf97e6fe 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 0x45279e0d raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x49c7ded5 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0x8bb3eb62 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x01035e68 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x10a19fef fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x14d08852 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1e7dd063 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3d966bb3 fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x75f8bd10 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7d61f846 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x97bb4b31 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb62f22bc fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xca2b2191 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe8ffac7b fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfab57dd0 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xfad8cd9d scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x15e12094 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x21e97f09 sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x277f8928 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x44ab6617 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x4826d713 scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5291dbec sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x54e02362 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x57808429 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x60dfa3bd sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x624bd929 sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6458e778 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6f2bccdc sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7f0d1578 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x96fbc2f9 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa24c2fb5 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa777a636 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa7a1891f sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb039e3aa sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb578bfd9 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xb7da0bef scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc23b7246 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc5bf1b4d sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xda355e20 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe6969d0d sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xea0000ff sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf1c97d1b sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf789dbfd sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xfd6b94f8 sas_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x1eedfdf2 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x235715da ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x27348ef5 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x2f91bc94 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x41091a6b ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x4f1107a1 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x609c6f7a ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x6632c3ae ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x798e58bf ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x7add452b ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x843e7693 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x8520da24 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x93da1077 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc0cf0917 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0xca7a4a22 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xd2ab0db4 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd8e84252 ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf271db70 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xf4ed98c4 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xfc9c7804 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xfe79097f ssb_clockspeed +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x0cd330f4 range_unknown +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x242bf024 comedi_buf_get +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2bf739e3 comedi_buf_write_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x2f0ad9d3 range_bipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x3691ffd5 comedi_error +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4d59fba0 comedi_buf_read_free +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4d973fe5 comedi_buf_put +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x4fe634f3 range_bipolar2_5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x6c49e268 comedi_buf_memcpy_to +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x71ea5964 comedi_get_subdevice_runflags +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x7d241a08 comedi_event +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x8113872c range_unipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0x9ea97178 comedi_buf_read_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xacec59fa comedi_buf_write_alloc +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbb52fc7f range_bipolar10 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xbffa5d23 comedi_check_chanlist +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xc62305bf comedi_driver_unregister +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xd31ae069 comedi_buf_memcpy_from +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xdb2044b2 range_unipolar5 +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xf283cf70 comedi_buf_read_n_available +EXPORT_SYMBOL drivers/staging/comedi/comedi 0xf43238d5 comedi_driver_register +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x0bd10ae1 subdev_8255_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x365ce865 subdev_8255_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0x6e64e129 subdev_8255_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/8255 0xd03a7a99 subdev_8255_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xbfb87fb8 cfc_handle_events +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xd83bc89e cfc_read_array_from_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/comedi_fc 0xe8f0fe66 cfc_write_array_to_buffer +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x07f08ea3 mite_setup2 +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x12a5ab05 mite_get_status +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x15a8277b mite_prep_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x170d5fd6 mite_buf_change +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x17dbbe12 mite_bytes_written_to_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x2179fbe9 mite_bytes_read_from_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x4a69f2a1 mite_sync_input_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x72fc9272 mite_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x77937427 mite_setup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x797bb3d6 mite_release_channel +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x8d7131b5 mite_bytes_read_from_memory_ub +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0x92b64beb mite_dma_arm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb2370795 mite_dma_disarm +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xb9e79fcc mite_unsetup +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xbbd3744e mite_bytes_written_to_memory_lb +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xc9063019 mite_bytes_in_transit +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xce748179 mite_dma_tcr +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xd40e1fcf mite_done +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe35d0704 mite_request_channel_in_range +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xe4998a61 mite_sync_output_dma +EXPORT_SYMBOL drivers/staging/comedi/drivers/mite 0xfb3ba025 mite_list_devices +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x07cf1be2 subdev_700_interrupt +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0x2dcc3d5b subdev_700_init +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0xc5fecaf6 subdev_700_cleanup +EXPORT_SYMBOL drivers/staging/comedi/drivers/ni_daq_700 0xf5165a88 subdev_700_init_irq +EXPORT_SYMBOL drivers/staging/comedi/drivers/pcm_common 0xe8f610eb comedi_pcm_cmdtest +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x3be7ad51 comedi_dio_config +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x43044955 comedi_dio_bitfield +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0x4f25463a comedi_get_n_channels +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xc2d4be72 comedi_close +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xc59e5b27 comedi_open +EXPORT_SYMBOL drivers/staging/comedi/kcomedilib/kcomedilib 0xe30335b0 comedi_find_subdevice_by_type +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x2d4b3af3 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdc00d8e5 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x14025cd9 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xb725d21c ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x45860a28 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x6aef310a iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xdd342e4d cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x027e93f5 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x406e8a36 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7b411654 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb223f24a go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xcc59588e go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xddab7d81 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xe847cf5e go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xeed52f31 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf41d6cec go7007_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x011e98c7 rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x08ab385e rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0dd6a4ff rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x104ff6f0 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1161462d rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x167be8fa rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1aeabc0e rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x1b0dd0c7 HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x22ef6636 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x279f5e1b rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x37623375 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3c35ef9d rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3ef953f5 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3f0800f2 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x44431cf2 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x49c42ba3 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4bc25e01 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x50c5f36d rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5760f026 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5c53f8a4 rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d2dc6fc Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6916c006 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6a010d66 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x747ab5b2 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x75afbaaf rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x795b2937 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x79cdffed rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e73b03b rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x825e39c1 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x85174178 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x88413c82 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x92b089be rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x95b6d724 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x969bb529 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x99fec75c free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb0032f0f rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb2b479d4 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb9e7e6c2 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc00e66ad rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc06587c2 rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc86a858a rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcd2ffa28 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4aec9d3 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe15bc059 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2322511 rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2aef9f4 notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe305d88e RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf40d9892 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa441349 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xff750565 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x05a9ced3 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x079caf88 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0b600451 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bea9177 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0eff5def ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12bd87eb DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c9619cd ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x211f3ded ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x228e9492 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x279296be notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b9c3a19 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x35f71f5a ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x39433bd1 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x438f26c4 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x49d03420 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x49e93407 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f05f390 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5578ff68 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x56f3d7a3 ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5aa946b1 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5ad62eab ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5cc4fbd7 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x60f871fc HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x63355170 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7973e32c ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79c31fab ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8229f30e ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x825bab68 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x87588066 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8795ffac ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x882fff88 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8b560cb6 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8d7674d7 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x94d48392 SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x98c9948c Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa13cc20e ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa3ee7358 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa482a0ac ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa60e6cbc ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa6c93cdb ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad5ab202 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad6185b3 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xba0f699f DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbad1a446 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbcc71e90 ieee80211_wx_get_encode_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 0xc4395ade ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xca047a09 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1603666 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe15273b4 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeefd987b ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xef9789ab ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf02f2d29 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf238e794 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf897b67d ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x0b84c3ed ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x302df9f6 phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x456970a5 phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0e7330cb transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x0ef691b2 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x169d74cd transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x18f8fa3f __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x2031a560 transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x2092ce27 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x250c36c0 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x2cf2ac10 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x30280b80 transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x3934d23f core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x3ab67028 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x3b214547 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x3d1ce9f0 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x3f91c143 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x407b4df8 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x42c0e719 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x45c0cc13 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x61e36316 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x62445496 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ca4435c core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x6f3817b9 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7c69919c transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e0a8440 iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x80d0bceb core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x85535170 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x89e2ca83 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x8c0e19b4 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x9011d0d5 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x9492693b transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x94d4bb76 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x96268063 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x96f34c65 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0x99eb9d62 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0xa14ecdbd transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xa18ae952 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xa532b253 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa6a81b54 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9c91078 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaa6dd55 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xb405b0a4 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0xb4b7cd2e target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xb93e7242 sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xbbebcb61 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xbc24f40f fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xc06c2ec9 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5d1c9b2 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xd46ae8b9 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5f18a09 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xd89f6caf core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xda37f360 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb9fdbab target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xdfd402d5 transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0xe63c97e8 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe73b21ff target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xea523019 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf8ed028c target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xfaa6aca5 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc12c486 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xfca36708 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe9e4047 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfe9f6ec3 core_tpg_deregister +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf2c58ab7 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x68490fd5 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x52a52618 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x58b812a7 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7acacbfa usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8007a24e usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x9e016337 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa03358d8 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa4222d0e usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xb503328f usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbb273e90 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xbffaf236 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd0ed9972 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdc6e9e8f usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdd04b562 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xe1cc01c4 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeaf7db82 usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x6f08aab2 usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xb17b13a8 usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x14d554be lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x26578ca2 lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x496b00bd 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 0xc4e225a7 mac_find_mode +EXPORT_SYMBOL drivers/video/macmodes 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x57b7f5a9 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xdd3cb9fb matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xe6f16e4d matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x7d236c8e DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcd55eea6 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xcd62a431 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xfe8f1ce7 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x56e2e9aa matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x23a399c8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1cf729a8 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x385668a7 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7f16d999 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xec9f1e8d matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x635f5535 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x7c10c263 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0082f586 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x0329f082 matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x4df616b7 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xbca6b964 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xec5b9207 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0xb70432bd mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x4ecedc13 video_output_register +EXPORT_SYMBOL drivers/video/output 0xa3b674a2 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 0x07d87914 svga_tilecopy +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 0x211262e1 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x3da68083 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0x49a6207b svga_tilefill +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 0x8a741515 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xc2fa1cb0 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 0xf4624197 svga_settile +EXPORT_SYMBOL drivers/video/syscopyarea 0x63bd0bbd sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xb237395f sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x8f47afe3 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 0x04e87545 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +EXPORT_SYMBOL drivers/vme/vme 0x0a9ed246 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x0c6bdc3f vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x12f78c6d vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x1c742ded vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x283fee37 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x2a9d029e vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x2d2d343a vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x3c491bbd vme_unregister_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 0x53c09c6d vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x598769fd vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x67502810 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x85b0aa15 vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x872291bb vme_dma_list_add +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 0xb3c1b62c vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xca5ee09a vme_free_consistent +EXPORT_SYMBOL drivers/vme/vme 0xcc5ea621 vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xdf709a76 vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0xdff905e5 vme_slave_free +EXPORT_SYMBOL drivers/vme/vme 0xe09fba2a vme_dma_list_exec +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 0xfafbdef8 vme_lm_request +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1818086d w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x6962d57c w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xd60e7ad1 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xdaf616f7 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x87202eb0 w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xa02d9e4d w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfe88daad w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x4b10f1a9 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x6c0ae2fc w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xa27359be w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/wire 0x14a5d455 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x79787c66 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xfb85e254 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0xfcc50740 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 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x11d5c0f7 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x29d0127e config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x49845c65 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x5498bed0 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x589cc1b1 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0x9e5af878 config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xa3ca0a5c configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xafa0ffbe config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0xc2f330bc config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xe1c7f2fc config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0xf046b205 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xfc5f1df6 config_group_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x00025423 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x00ccc822 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x2183f183 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3e0cf03e ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x6709f898 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa811be97 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xaec7920d ore_write +EXPORT_SYMBOL fs/exofs/libore 0xc2c77898 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0xca6548c4 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xfb142672 ore_create +EXPORT_SYMBOL fs/fscache/fscache 0x0146f9b5 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x09ac6daa __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x0e42c832 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x11ad2dfc fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x131b7533 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x297afb5e __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x2f11012e __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x38f8dbbe fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x465c329c __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x46fa5f7e fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0x518ac063 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x5790cb19 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x59be7b98 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x6805ca91 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6bbfaf5f fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x74530ecd fscache_op_debug_id +EXPORT_SYMBOL fs/fscache/fscache 0x84bee306 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x99842f73 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x9e7f79d5 __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xa10055a2 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xa1ca12c6 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0xa3c7218c __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xa95c9676 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xc28a0607 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0xcceb3c43 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe74bdba6 fscache_cache_cleared_wq +EXPORT_SYMBOL fs/fscache/fscache 0xe901bfa1 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xeef80b45 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0xfe99ae29 __fscache_attr_changed +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x20c627f2 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x5b87ea33 qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xbe9665b8 qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xc8867f25 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xd6b5a585 qtree_read_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 0x075ae742 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x34f238b1 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x50918c7d lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x5fd8679a lc_reset +EXPORT_SYMBOL lib/lru_cache 0x6654ed27 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x801d1535 lc_put +EXPORT_SYMBOL lib/lru_cache 0x9d21be3c lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xb4d2d41c lc_del +EXPORT_SYMBOL lib/lru_cache 0xb6f00823 lc_changed +EXPORT_SYMBOL lib/lru_cache 0xc8785d62 lc_get +EXPORT_SYMBOL lib/lru_cache 0xdcf40b82 lc_create +EXPORT_SYMBOL lib/lru_cache 0xe114c783 lc_set +EXPORT_SYMBOL lib/lru_cache 0xffb39656 lc_find +EXPORT_SYMBOL lib/lru_cache 0xffcf1714 lc_seq_printf_stats +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 lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0xb5c48dff register_8022_client +EXPORT_SYMBOL net/802/p8022 0xc49053c3 unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0x59ac0796 destroy_8023_client +EXPORT_SYMBOL net/802/p8023 0xbbcee351 make_8023_client +EXPORT_SYMBOL net/802/psnap 0x5faa0bfb register_snap_client +EXPORT_SYMBOL net/802/psnap 0xac502d74 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x00d1d7d1 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x09e7e865 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0c7f9f31 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x163ad945 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x17f4010a p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x1af9e4c9 p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x21d09a5e p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0x263f92e6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x27214a1b p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0x3257e66d p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x36ee4cdd p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x373b1384 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3bc504e0 p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x458b6b55 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x48a5ac17 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x4a27c3f4 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x4a923baf p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x4ac22ac2 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0x50af9c4d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x5b57c203 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x5d28b915 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x6fbf7035 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x75fad385 p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x8f81f236 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0x9179b0f3 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x96feda93 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa01ebb4a p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0xa1fa86b6 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0xa554ac5c p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xa9662502 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xaddbb035 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc7e91d60 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0xca528448 p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xcb9b1a61 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xd7a6ea94 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xde80c0d7 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0xe1207ffc p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe61268e6 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xec8afa1b p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xf431f229 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 0xfb72d3d7 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xff2e8674 p9_client_mknod_dotl +EXPORT_SYMBOL net/appletalk/appletalk 0x54297c40 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x996ec46e atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0xb70d808c alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xc0feaa79 aarp_send_ddp +EXPORT_SYMBOL net/atm/atm 0x119e94c6 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x1332acf5 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x15e0fff0 atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x172ea2b8 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x205b459e atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x51f663cb deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x6372628b atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x6ec07459 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x77a25c0e 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 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xaa57f27e atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xb5f988b2 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xce7d951a atm_charge +EXPORT_SYMBOL net/atm/atm 0xd1ed96e2 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xee0da994 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 0x157adf6b ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x1a7af273 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x4ebcb0b2 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x6204a663 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x7a98cccc ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x7f1dd55d ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x83ae9d8d ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xaea3bf12 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc145f51f ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/bluetooth/bluetooth 0x02512f7b hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0355a7ba hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x05748b65 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0ada9634 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0fd92665 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1bf69f85 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2082f876 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x20979988 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x225a6bdf bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0x280288e3 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e812c46 bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2fa50d5d hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3041f7f5 hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x51d8f18e bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5363c9dd bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6412d6db hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x648003f6 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x72a8c3f7 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7985a7ac bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x80262470 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8283216b hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9802bb4c hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98b3e162 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9a4c4c82 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9be5e89c bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9cbac17a bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa3060ca1 hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb97b9e40 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc21e32cd hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd3e96835 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd47b0e7f hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xde4973cd hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe10f1411 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe7f6ac63 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0xebf99523 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf399155f hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf56e073a bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xff7929d5 hci_conn_security +EXPORT_SYMBOL net/bridge/bridge 0x8179791c br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x0941fc72 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x52f5110f ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc98550e0 ebt_unregister_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x3261b41a caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x39c648fb caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0x41660b5e caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x852f27e4 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 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xd4956942 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x1b0daabe can_send +EXPORT_SYMBOL net/can/can 0x9a2e6e0a can_rx_register +EXPORT_SYMBOL net/can/can 0x9f310cc6 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xd47fc9da can_proto_register +EXPORT_SYMBOL net/can/can 0xeb4e873d can_ioctl +EXPORT_SYMBOL net/can/can 0xfda40d9d can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x0376fc76 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x05be02a2 ceph_put_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 0x149ca32a ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x179f455d ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b8b0f7f ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x1d8b0329 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x1df22fd8 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x23802252 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x25f5c4d9 ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x2b10d4ba ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x31e4e4b2 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x32976ff5 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x3a7c837d ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x40e77518 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x462a7082 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x49839f01 ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4e23e662 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x50cb85da ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x512e3444 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x55b58eba ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x61b4f62e ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6390fa8a ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x6c98373b ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x753138d5 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x82cce633 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x87192cfc ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x8de19539 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x9085f4b8 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x96166316 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x96b17d69 __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x9b7c094a ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x9e608015 ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa5a99fc6 ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xab6f5ac7 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xadb31d30 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush +EXPORT_SYMBOL net/ceph/libceph 0xb0a2ccd6 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xb0b7bdcd ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0xb0e95fe0 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xb31e3cc6 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name +EXPORT_SYMBOL net/ceph/libceph 0xb6081d6d ceph_msgr_exit +EXPORT_SYMBOL net/ceph/libceph 0xbcf99b95 ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0xbd5654e3 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xc44ebd1a ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd10c56bd ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd473e49d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xd517c92c ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xde72d2c2 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xdffb1102 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xe3ec3c03 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x00297d27 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0c330897 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0c99f66c wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1773bab7 wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x23bedf34 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5ea2b743 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x5f315206 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x6196e355 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x68d956cf wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x851dbc15 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb1aac7cd wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb37cd758 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf57da8c3 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf9b955d7 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x7804edcf arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x7e079de7 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xccb50023 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x0b2076bd ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xda9b744d ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xe2940d20 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x4445aed2 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x4f2ffb60 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x58a959c3 nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x68cb7fc5 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x7f969839 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xd6026c34 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xdc94261d nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/tunnel4 0x276e5722 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x835a5428 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x30251cd0 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x36729930 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xdff9fecc ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xeed46175 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0xdf88a824 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/tunnel6 0xec3138a8 xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0aa872ac xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x0c457e46 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x08e60c04 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0c37664a ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x287e0bbf ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3378ba76 ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x3c58c091 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x4bfb8fe7 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x7f8f610f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa84a8663 ircomm_connect_request +EXPORT_SYMBOL net/irda/irda 0x035ccc44 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x09f58a8b hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0x1b5b9e3d irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x2031a32b irda_notify_init +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2331b9dd irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x26e6b539 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x37650a0a irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3a107daa irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x3b6d5f65 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0x42a9904d irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x44881796 irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x520ee5f2 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x55d6ff4f irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x615ee918 irias_new_object +EXPORT_SYMBOL net/irda/irda 0x625f621d async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0x6387eb23 irlmp_close_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 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7a67f869 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x7dabe31e hashbin_remove +EXPORT_SYMBOL net/irda/irda 0x7f1e14b0 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x7fb81606 irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0x86b5f4ce hashbin_delete +EXPORT_SYMBOL net/irda/irda 0x8773384e async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x8b69b459 hashbin_get_next +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x95b30bfe irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0x969fa5d0 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x9708e977 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0xa4548c32 hashbin_insert +EXPORT_SYMBOL net/irda/irda 0xa5775e01 irttp_connect_response +EXPORT_SYMBOL net/irda/irda 0xad66e1db hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbace2ec4 proc_irda +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc1ab742c irlap_close +EXPORT_SYMBOL net/irda/irda 0xc310cf21 hashbin_new +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 0xde4c6b3c irlmp_service_to_hint +EXPORT_SYMBOL net/irda/irda 0xde59dbb6 iriap_open +EXPORT_SYMBOL net/irda/irda 0xe0ad0948 irttp_dup +EXPORT_SYMBOL net/irda/irda 0xeb7a5ae7 irlap_open +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf3551321 iriap_close +EXPORT_SYMBOL net/irda/irda 0xfce9b7af irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0xfe90845c irttp_disconnect_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x9fa61e5c l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x0aaed5c5 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x16b649bf lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0x185223c6 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x250d5b39 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7370bf59 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x76dd5b4a lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x80891da4 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x8b1b63aa lapb_data_received +EXPORT_SYMBOL net/llc/llc 0x2e2a7c1e 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 0x6c6cdb31 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0x70cae3da llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x7cd81226 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xb86e228a llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xbc057b72 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xbd67ef7e llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xdb102c1e llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x08d32eca ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x09c89b57 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x0b29599b ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x143d7908 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x1765def2 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x179217d6 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x1ad5458a ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x1b16e1f2 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x2470e820 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x33998b26 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x36fa0ca1 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x382c8dc2 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3b11b339 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x46e0c331 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4819ad9c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x5151826f ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x52f3a3ab ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x57fb0e1a ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x58ba54d2 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x5b2563b5 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5fdc75c3 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x60bb9ad8 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x62b3d31b ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6327523e ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x66250e09 __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x68fb0e4b ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6a90deef ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6b075a8e ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x6ba8c6fd ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x6ffdc904 ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x83703d09 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8d779ccc ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x96ab5a19 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97c6b163 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9d1c8749 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x9de66e11 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9ea6e9f6 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xa1f58df8 __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xa2fc99b0 rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa9120c8c ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xaaf40e8a ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xad46dc68 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xaee11b50 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0xb8c6f576 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xc011c43b ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b66794 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0xc28ac4b0 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcee18b16 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xcf39d936 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xd1dfe8e2 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd2c254cf ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd63270bb ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xe06b91f9 ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe157ad06 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xe32dad93 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xe9b7ae09 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xeecf2925 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xef7964de ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xf4ec83a3 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0xfae86dc4 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x04f9154d ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0d428751 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x21e8fcac ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4421c502 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x50d9ea8e ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6de18560 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7f794a5d register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8a30273c ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xb44a7ee8 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc4c97a22 ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe7ebec10 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe886bf57 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xffe7cbf5 ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xffffdf5d ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x79ceafd9 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa1f1caa9 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf456b531 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0x45be3807 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x0e32f036 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x279dbfce xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x2eca734e xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x42b79fef xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x49cca04e xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x807f795b xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x82fc6311 xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x9fa59d33 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xac61de59 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xf47a0368 xt_register_matches +EXPORT_SYMBOL net/nfc/hci/hci 0x017fe5e3 nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x03dd75dc nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x1be10940 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x206edb6f nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0x26e31a6f nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x348cbef4 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x34aa795e nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0x399cd4c2 nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x54697728 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x67907e63 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x6b25473f nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x926f9f09 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xad1d5852 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0xb5acb215 nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xbf1b29b6 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xc6ceee4e nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0xdd53cc83 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0xdf0dd6b9 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0xe05f8835 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0xf02023f2 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xf10b74ee nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x1a856766 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x3839eba5 nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x469dc3c5 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x9ed55e08 nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xa21d3efe nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x1767d1b9 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0x1b531be4 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x20f6291f nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x2336d63a nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x3c497fab nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x3ca0ce9f nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x436b9720 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x44785eb4 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0x478c8bc7 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0x5b6443e2 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x9f494467 nfc_unregister_device +EXPORT_SYMBOL net/phonet/phonet 0x0721a1e5 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x163c8347 phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0x25e0acc8 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x263e95f7 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x654541f8 phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x973133e0 pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xc6c26c63 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xee092f1b pn_sock_hash +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x37328174 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x38fb2b9f rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3a3c0c55 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3a5d7d1e rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x41b63c41 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4e2ef29e key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x58d288f1 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8811c391 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x910f7157 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbc8191ee rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1dd3bee rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd02231be rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd663e2b3 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xe782616c rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf54e7bec rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/sctp/sctp 0xafac2240 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x5924e93d svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0d81f3c0 register_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x609e347c wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xbf3ebe8c wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x0725c4ba cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x07d7dec0 ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x08671388 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x0966b459 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0bfacfef cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x169d2a4a wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x17776229 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1883c32e wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x19a3ea57 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x1f576ecc cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x1fba86b6 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x22a0d79e ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x2400e9e1 wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x25467d2a cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x2a301eb1 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x2c201fa1 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x3209398b wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x3464314c cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0x3c6cdda2 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x43dadf86 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x45f83587 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x48576c8d cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x50f5dc0f cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x513b104b cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x52259f05 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x5360ac44 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x542512fc regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x54d7b52b cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5e87bdbe wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0x6571b0ef cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7b2a489d cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x812fa511 cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x81af9ea6 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x85ecf0e7 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x8c9dcb1e ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x980e56eb ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9a05f463 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9ab531a6 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x9c0854df cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x9f7b0dc7 cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xa15f4977 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa97d1675 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xae95dd45 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xafd3b491 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0xb1e88ffc __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb58acda4 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xb7428b82 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xb8aa56f8 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xbc06236c cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xbc90a1d2 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xc0f49750 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc1a5acb9 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6c01c13 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc6ea6072 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0xcaa355c8 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0xd6f9e980 cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xd73a658c cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xe1728314 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xed0efb44 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xee2e77a1 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xf59499ec cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xf87b0f1a cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xf9dcd654 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfd5e645d cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0fdcbee7 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x5df94368 lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x73575a22 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x905ee977 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xcb6b072e lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0xefa4b64e lib80211_crypt_delayed_deinit +EXPORT_SYMBOL sound/ac97_bus 0xef77675f ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x6b5db086 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x4d7d69bf 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 0x701072ab 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 0x7d924744 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 0xf27e2161 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x37951bae 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 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 0xf01ace80 snd_seq_device_new +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x6ea09972 snd_midi_channel_alloc_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0x833a3e07 snd_midi_channel_set_clear +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xb9948d2c snd_midi_channel_free_set +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-emul 0xf0a1fdb3 snd_midi_process_event +EXPORT_SYMBOL sound/core/seq/snd-seq-midi-event 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 0x675dcfe4 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x037a89ef snd_device_register +EXPORT_SYMBOL sound/core/snd 0x0657a915 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x068f912f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x12119c02 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x134db274 snd_cards +EXPORT_SYMBOL sound/core/snd 0x1569fe80 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1b44366d snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x1c017b4c snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x205ee245 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x258af132 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x27170b14 snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x2ae3deaa release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0x2d544073 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x30be1703 snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x321fe26b snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x377da919 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3a855ab1 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x476149e0 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4b9484f6 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x5b3613fb snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x60bc6db2 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x68384576 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x6b462a0e snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x6ee9c526 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x715ff04d snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x799b1f23 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7c38c5a5 snd_card_register +EXPORT_SYMBOL sound/core/snd 0x7cc673e3 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x835398ee snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x856ea904 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x96a4a6ba snd_device_free +EXPORT_SYMBOL sound/core/snd 0x9bff717a _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0x9f4c9676 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xa559a6d6 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xa6f1d39b snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xa8c40360 snd_card_create +EXPORT_SYMBOL sound/core/snd 0xa988fd2e snd_component_add +EXPORT_SYMBOL sound/core/snd 0xaf802332 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb6fe8151 snd_info_register +EXPORT_SYMBOL sound/core/snd 0xb963a7c3 snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0xba2f0de4 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xbc3e9fab snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0xbcf187f6 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xc25d4933 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0xd4a75db1 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xd8ede5a0 snd_device_new +EXPORT_SYMBOL sound/core/snd 0xe17c8e1f snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xe7c7f33f snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xe9a78a11 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0xf6cfcaf3 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xfc4fdce6 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xa958b040 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1291d472 snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x387a9fab snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x425b7a78 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x4f24b42d snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x9155f8eb snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0283dfe3 _snd_pcm_hw_params_any +EXPORT_SYMBOL sound/core/snd-pcm 0x0340484b snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0x04cda566 snd_interval_refine +EXPORT_SYMBOL sound/core/snd-pcm 0x0bb60b10 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x11fe76f2 snd_pcm_sgbuf_get_chunk_size +EXPORT_SYMBOL sound/core/snd-pcm 0x14dd6913 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x14f76275 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x17944c75 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x1844d20b _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1f05ad66 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x21ed010d snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x233be584 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x23415e39 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x2fae19b0 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x358b5702 snd_pcm_lib_readv +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 0x41876705 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x4349eceb snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0x46b3f938 snd_pcm_hw_constraint_ratdens +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 0x58d2cea3 snd_pcm_release_substream +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 0x689ebcde snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6ee0fe52 snd_pcm_hw_constraint_pow2 +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x71844f24 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x73338a43 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x73bb98e2 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x78e8a758 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x7a099ca7 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x8b2364ff snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x95384a23 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0x9f1ff771 snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xa1f6a310 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 0xb44d6696 snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbdcc6d54 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0xc3867fa9 snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xc7c3b846 snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xc9ceb5e2 snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xcb9e43a0 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0xcbc2d21e snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xce146e50 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0xd9081c38 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xd9c3f791 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0xe5501412 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe5ef3d5e snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xe70b9671 snd_pcm_sgbuf_ops_page +EXPORT_SYMBOL sound/core/snd-pcm 0xef2e3934 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf577a36b snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0xf964197e snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-rawmidi 0x02f7e3ed snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x138275ad snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3466b2bf snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4542ca30 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5412fea9 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-rawmidi 0x6092e6fe snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7eec63fe snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x8a9ea398 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0x927d3160 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x97ae807f snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc58011f5 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcaca6830 snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd04af684 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd0e3575d snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xde5a0943 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfa319549 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xfb11a551 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-timer 0x2e0e8b54 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x2e3c41e5 snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x5c4b8d94 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x6489e083 snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0x6fd08cac snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x85645fbb snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x8a5ee0da snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x9b5439c1 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x9d7e8679 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xc33ce9d8 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0xc78a2930 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0xe2b1dc32 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0xf1a61756 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 0xf23b3c76 snd_mpu401_uart_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x05060a19 snd_opl3_regmap +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0cbd2192 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x66212c86 snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6f3428ba snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x81d658f8 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8ce58133 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x8fb8ffdb snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xac5f7d2b snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xe31a3676 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xf71c2af1 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x02c2a741 snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x5265cc6e snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x561c4d88 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x6f1f8036 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x73f838d2 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8df736ee snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x9099e7ac snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xcf0bdfa6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xec6329ef snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0165446a iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0aa5bd49 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1c7d80d2 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x1fd51373 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x204c7560 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x273ce3eb amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x293536d6 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x35b72a4a amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3b65d0ad iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x46b0f9e5 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49ac0cae amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c99a6d3 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4f8908ce amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x59c010b9 amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x7073133d cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x73620bad amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x96762994 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb0d0fd7d fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4ac27c3 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd4e040b2 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda5cbd15 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe4b271bc cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe59ae1bb amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xeabdea2d fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf398495b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf93a03ab cmp_connection_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x27ce6d29 snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x33288e42 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x58f74eab snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7d4643ca snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xf6c168d7 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xfdadd595 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x5ba39a49 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6a14e56a snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb56dc5dd snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb5782cfd snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xb897923b snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbe5ce39f snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x13cd7dd0 snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x6d832dea snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xdc1ff2d7 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xdf90eb7e snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xa9a67935 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xfa261de8 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x28b6f7fe snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xfc30388d snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x046275f9 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x7dfae5c2 snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9a4f5a60 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x9ab803c7 snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xaaf98ce1 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5e9ef8a9 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x7b795712 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x88020715 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0xd0daf615 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdcfdc681 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xdda29caf snd_i2c_device_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x12be22d0 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1897617e snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x42c4a21b snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x45dd879c snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x53285b45 snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6c629115 snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x71835a6b snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb3aa7c39 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb4d07d84 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xe70cb12d snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x131bc961 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x74f9380f snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xd3630d25 snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x12dbae56 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x26fb3024 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2c3891dc snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2cb1e1a5 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2da29f83 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3ece3c6b snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x58b5b461 snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6a524368 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ca46411 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x81ede47e snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xba03b4a2 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc9aaf6dd snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcfc7bf8f snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcfe7f920 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf1dc36dc snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf3107170 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfe5253ac snd_ac97_bus +EXPORT_SYMBOL sound/pci/asihpi/snd-asihpi 0x68fdd210 hpi_send_recv +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x14e407b1 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2add795d snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x53560225 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5670b902 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x59fb8543 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x68d3b220 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xaf7153e6 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcb4ee8dd snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xcc070b44 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0x5328eec8 snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x8956f8c4 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xb7311bc3 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xcbc94c2c snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1139280b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x186a82d3 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x31b0190c oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x42b45c55 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4e9f85e5 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x517dd2f1 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x61a811ae oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x68681e6b oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x6f9280b9 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7f4c960f oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x86cf23a3 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x89463258 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9fb97bae oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa19a364a oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1cabbfe oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xacfb0045 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb76995d9 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc5db3217 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcbcbd4d4 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9569ebc oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xec6df725 oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0f849fd7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x360861cf snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6de19620 snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xbcfd3a68 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xe4c75576 snd_trident_alloc_voice +EXPORT_SYMBOL sound/soundcore 0x2781ed0c register_sound_special +EXPORT_SYMBOL sound/soundcore 0x492ab322 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x877cb2e8 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x94b6f10b register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x99b7995f register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xb22be88f register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x33246421 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 0x8732b706 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xcda56a74 snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xd605cf3a snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xdfc8fd66 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xec7bb9ee snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0f8c554b snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x18d07444 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x3df266ab snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x630d9d64 __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7342902a snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x7cefc60a __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9ca3b8e8 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xa28a80b4 snd_util_memhdr_free +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x63343b1d snd_usbmidi_input_stop +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd397a0e5 snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x2f90e9ec dm_mem_cache_free +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x35c95b1b dm_mem_cache_client_create +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x86e5acf9 dm_mem_cache_grow +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0x920a7a41 dm_message_parse +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xa43471b6 dm_mem_cache_shrink +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xd55b290c dm_mem_cache_client_destroy +EXPORT_SYMBOL ubuntu/dm-raid4-5/dm-raid45 0xeeab2633 dm_mem_cache_alloc +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00188c51 vfs_read +EXPORT_SYMBOL vmlinux 0x0048f86f xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x0076bece tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x008af575 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x0091a1b9 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x00ba3e95 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x00bcb416 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x00c16a07 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x00c8a8ec pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x00cc1c73 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x00d5b1c2 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x00f36e5f __break_lease +EXPORT_SYMBOL vmlinux 0x00fce7a9 unlazy_fpu +EXPORT_SYMBOL vmlinux 0x00fd4890 security_inode_permission +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01093ca5 cpu_info +EXPORT_SYMBOL vmlinux 0x012ee0db ppp_dev_name +EXPORT_SYMBOL vmlinux 0x013d7189 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x01539d4e sock_rfree +EXPORT_SYMBOL vmlinux 0x015ddbdc wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01a22865 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x01b42185 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x01d19038 acpi_enable_subsystem +EXPORT_SYMBOL vmlinux 0x01db3d5d __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x01f538b7 __nla_reserve +EXPORT_SYMBOL vmlinux 0x02054600 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check +EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu +EXPORT_SYMBOL vmlinux 0x023ac266 dev_err +EXPORT_SYMBOL vmlinux 0x0261ae47 register_qdisc +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027ad221 ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x029444f0 native_read_tsc +EXPORT_SYMBOL vmlinux 0x02949003 register_console +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02acee90 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x02d06208 seq_lseek +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02f9c1b9 spi_attach_transport +EXPORT_SYMBOL vmlinux 0x030aa95e sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x031416bf phy_print_status +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0338f806 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x0348659b devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0361cd0f skb_store_bits +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037ca23f generic_delete_inode +EXPORT_SYMBOL vmlinux 0x0381b487 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x03825fb2 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x03b509dc blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x03bb9584 mount_bdev +EXPORT_SYMBOL vmlinux 0x03bd2aa3 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03c5aa39 abort_creds +EXPORT_SYMBOL vmlinux 0x03c9884f acpi_bus_get_status +EXPORT_SYMBOL vmlinux 0x03ebda85 dns_query +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041fb5fd gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043c58b8 sk_wait_data +EXPORT_SYMBOL vmlinux 0x0446249e pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045274de rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x0466f16e pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x04679e4c ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x047106d2 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x0473a55d netdev_warn +EXPORT_SYMBOL vmlinux 0x0481ed73 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x04927208 cpu_active_mask +EXPORT_SYMBOL vmlinux 0x049ce888 kernel_bind +EXPORT_SYMBOL vmlinux 0x04cbeb3c bio_init +EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x04f0165a do_sync_read +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x052588e1 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x05402299 pci_release_region +EXPORT_SYMBOL vmlinux 0x054357b0 i2c_register_driver +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056d2178 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x05826248 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x059349de scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x05a28166 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x05a38f46 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x05a47007 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x05cc6a48 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x05e73347 mmc_remove_host +EXPORT_SYMBOL vmlinux 0x05fe7334 filemap_fault +EXPORT_SYMBOL vmlinux 0x060086c8 splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x061d7af2 pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x061f4039 acpi_get_table_with_size +EXPORT_SYMBOL vmlinux 0x062ef9a3 __dev_printk +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063a3691 bitmap_unplug +EXPORT_SYMBOL vmlinux 0x064261af tcf_exts_change +EXPORT_SYMBOL vmlinux 0x0676f666 idr_destroy +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068c7263 ioremap_cache +EXPORT_SYMBOL vmlinux 0x06b31f3d bdi_unregister +EXPORT_SYMBOL vmlinux 0x06bbb9c6 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x06bc8260 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x06c09505 scsi_print_command +EXPORT_SYMBOL vmlinux 0x06ddc0b2 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x06f490b4 bdi_register +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x070c89e1 __register_binfmt +EXPORT_SYMBOL vmlinux 0x07109fee inode_init_once +EXPORT_SYMBOL vmlinux 0x071b5c6b input_set_keycode +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x07286d5e __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x072c064c ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x073dfa12 generate_resume_trace +EXPORT_SYMBOL vmlinux 0x0748d4c5 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x0749313c dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x076654dd register_sysctl_paths +EXPORT_SYMBOL vmlinux 0x07679aa2 secpath_dup +EXPORT_SYMBOL vmlinux 0x076a7ed1 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07ad92f9 complete_request_key +EXPORT_SYMBOL vmlinux 0x07c13cf1 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x0817e588 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0x0820d06d journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x08255652 get_write_access +EXPORT_SYMBOL vmlinux 0x08282c9c __lru_cache_add +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086d0b9e acpi_device_hid +EXPORT_SYMBOL vmlinux 0x08706016 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x0897287b acpi_disable_all_gpes +EXPORT_SYMBOL vmlinux 0x0898eab3 sock_setsockopt +EXPORT_SYMBOL vmlinux 0x08a09aa0 tty_mutex +EXPORT_SYMBOL vmlinux 0x08bf27d7 end_page_writeback +EXPORT_SYMBOL vmlinux 0x08c3a73c tcf_hash_release +EXPORT_SYMBOL vmlinux 0x08f64aa4 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x09117e47 agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x09308484 idr_get_new +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x094eb403 vfs_rename +EXPORT_SYMBOL vmlinux 0x0964bcb2 boot_cpu_data +EXPORT_SYMBOL vmlinux 0x09707933 pci_request_selected_regions +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 0x098fbb75 amd_iommu_domain_enable_v2 +EXPORT_SYMBOL vmlinux 0x0992780d efi_enabled +EXPORT_SYMBOL vmlinux 0x09b6f7cc netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x09c303a7 invalidate_partition +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09cf1458 serial8250_do_set_termios +EXPORT_SYMBOL vmlinux 0x09d00248 tty_register_device +EXPORT_SYMBOL vmlinux 0x09d23e00 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09edcb4b scm_detach_fds +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a258cc8 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x0a336899 vfs_write +EXPORT_SYMBOL vmlinux 0x0a50220d phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x0a5172fd splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x0a82e36d compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x0aad049b md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x0ab2e12a dquot_operations +EXPORT_SYMBOL vmlinux 0x0ab8e208 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x0ac3080d elv_abort_queue +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad64ab3 pci_save_state +EXPORT_SYMBOL vmlinux 0x0b005b92 set_disk_ro +EXPORT_SYMBOL vmlinux 0x0b028004 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b110940 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b58cd1b bio_clone +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b8ffbcd pci_dev_driver +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bf1c7d2 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x0c2f6083 xfrm_input +EXPORT_SYMBOL vmlinux 0x0c2ffad3 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x0c4116e4 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c6fe830 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x0c750f25 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x0c772496 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x0c835f8b x86_hyper_ms_hyperv +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c985965 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x0ca7b7a8 acpi_check_region +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cdb83b2 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0x0cf82de9 take_over_console +EXPORT_SYMBOL vmlinux 0x0d3dda14 acpi_get_type +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d652bb4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x0d684979 lock_may_write +EXPORT_SYMBOL vmlinux 0x0d8b60c3 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0ddf27e9 tcp_child_process +EXPORT_SYMBOL vmlinux 0x0e0e129d skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x0e3600c2 skb_pad +EXPORT_SYMBOL vmlinux 0x0e3a728f blk_get_request +EXPORT_SYMBOL vmlinux 0x0e5ab257 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x0e621886 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e849e7e scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x0ea66628 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x0ed67687 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x0ed8cc7b acpi_evaluate_object_typed +EXPORT_SYMBOL vmlinux 0x0ee2e244 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x0eea75ce __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x0effea81 genphy_suspend +EXPORT_SYMBOL vmlinux 0x0f065589 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x0f1bea55 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb006e8 journal_init_dev +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fd00a68 acpi_clear_event +EXPORT_SYMBOL vmlinux 0x0fdd7011 netpoll_setup +EXPORT_SYMBOL vmlinux 0x0ff2b602 slhc_compress +EXPORT_SYMBOL vmlinux 0x10366a83 spi_release_transport +EXPORT_SYMBOL vmlinux 0x1056af08 get_task_io_context +EXPORT_SYMBOL vmlinux 0x106d5aad bio_split +EXPORT_SYMBOL vmlinux 0x1072a394 csum_partial_copy_from_user +EXPORT_SYMBOL vmlinux 0x1088d836 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x1088fe64 fail_migrate_page +EXPORT_SYMBOL vmlinux 0x1091bc5a netdev_emerg +EXPORT_SYMBOL vmlinux 0x1094bf16 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x10b1dec3 pci_select_bars +EXPORT_SYMBOL vmlinux 0x10d1dc83 create_empty_buffers +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x11508382 compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init +EXPORT_SYMBOL vmlinux 0x118b184e lease_get_mtime +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x11b390d8 get_super_thawed +EXPORT_SYMBOL vmlinux 0x11d7491a neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x11dfc582 elevator_exit +EXPORT_SYMBOL vmlinux 0x11e2ec12 flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x11f91fda pcim_iounmap +EXPORT_SYMBOL vmlinux 0x12209b5a mntget +EXPORT_SYMBOL vmlinux 0x124702d0 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x12470c34 netpoll_print_options +EXPORT_SYMBOL vmlinux 0x1277f380 dev_mc_del +EXPORT_SYMBOL vmlinux 0x1298a757 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x129b0bca i2c_del_driver +EXPORT_SYMBOL vmlinux 0x129de341 wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12ab345e intel_gtt_insert_sg_entries_hsw +EXPORT_SYMBOL vmlinux 0x12c46cde flush_signals +EXPORT_SYMBOL vmlinux 0x12cadadf user_path_at +EXPORT_SYMBOL vmlinux 0x12d19543 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x12d3e109 phy_device_register +EXPORT_SYMBOL vmlinux 0x12d68276 elv_rb_del +EXPORT_SYMBOL vmlinux 0x12dfeb12 vprintk_emit +EXPORT_SYMBOL vmlinux 0x12e0bb3d pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x12e8ead0 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x130c21ba input_free_device +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x134246b5 first_ec +EXPORT_SYMBOL vmlinux 0x134c60bd udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x135184db jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x13738801 bdi_destroy +EXPORT_SYMBOL vmlinux 0x1392244f noop_fsync +EXPORT_SYMBOL vmlinux 0x139623f8 pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x13976736 pnp_stop_dev +EXPORT_SYMBOL vmlinux 0x1397bf23 journal_wipe +EXPORT_SYMBOL vmlinux 0x139e3fbd set_device_ro +EXPORT_SYMBOL vmlinux 0x13a5fa12 unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x13b65a01 x86_bios_cpu_apicid +EXPORT_SYMBOL vmlinux 0x13c73bb9 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d5281c genl_unregister_family +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x1400a6b1 unbind_con_driver +EXPORT_SYMBOL vmlinux 0x1414fb32 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0x1430e6e0 unregister_acpi_notifier +EXPORT_SYMBOL vmlinux 0x143e8539 scsi_host_put +EXPORT_SYMBOL vmlinux 0x14e3524f blk_delay_queue +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x14fb3a8c phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x150389d6 acpi_processor_power_init_bm_check +EXPORT_SYMBOL vmlinux 0x151a332e __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x1527b1ef generic_setlease +EXPORT_SYMBOL vmlinux 0x15319f2a serial8250_set_isa_configurator +EXPORT_SYMBOL vmlinux 0x154909b9 bmap +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x1577b676 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x1588d1ec register_filesystem +EXPORT_SYMBOL vmlinux 0x1592192f agp_find_bridge +EXPORT_SYMBOL vmlinux 0x15bbf3a8 pcim_iomap_table +EXPORT_SYMBOL vmlinux 0x15cda3f3 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x15f0b7ca mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x160a1571 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0x160a81d0 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x160ea4c8 sfi_disabled +EXPORT_SYMBOL vmlinux 0x16161096 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x1627c6d1 input_set_capability +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x16305289 warn_slowpath_null +EXPORT_SYMBOL vmlinux 0x1637ff0f _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0x163999b1 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x1660e010 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 +EXPORT_SYMBOL vmlinux 0x168f1082 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x16993c3d sock_wake_async +EXPORT_SYMBOL vmlinux 0x16bae63b bdi_init +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16ccd7e5 __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x16dfebc3 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x16e02f27 cdev_add +EXPORT_SYMBOL vmlinux 0x16f90468 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x170c25ee acpi_get_next_object +EXPORT_SYMBOL vmlinux 0x170d89bf dm_unregister_target +EXPORT_SYMBOL vmlinux 0x171f355e send_sig_info +EXPORT_SYMBOL vmlinux 0x1735c3ed bio_copy_kern +EXPORT_SYMBOL vmlinux 0x1744af81 d_drop +EXPORT_SYMBOL vmlinux 0x1745d2ed pci_pme_active +EXPORT_SYMBOL vmlinux 0x1750aa2c fb_set_var +EXPORT_SYMBOL vmlinux 0x1790d76b _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0x1791765e d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x17a1ff4c __getblk +EXPORT_SYMBOL vmlinux 0x17ab36b1 dm_get_device +EXPORT_SYMBOL vmlinux 0x17af87b5 vga_put +EXPORT_SYMBOL vmlinux 0x17b64d09 dqstats +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17dfea45 dev_trans_start +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x18205aca pci_map_biosrom +EXPORT_SYMBOL vmlinux 0x182cd6b8 soft_cursor +EXPORT_SYMBOL vmlinux 0x182fc38d module_refcount +EXPORT_SYMBOL vmlinux 0x18386c32 rtnetlink_put_metrics +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 0x185cc13d icmpv6_send +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe +EXPORT_SYMBOL vmlinux 0x18c32880 init_buffer +EXPORT_SYMBOL vmlinux 0x18cdc7b5 bio_integrity_split +EXPORT_SYMBOL vmlinux 0x18e8d504 dev_change_flags +EXPORT_SYMBOL vmlinux 0x18f89216 md_done_sync +EXPORT_SYMBOL vmlinux 0x19012d79 idr_get_new_above +EXPORT_SYMBOL vmlinux 0x1912b674 phy_start +EXPORT_SYMBOL vmlinux 0x1919e40f ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x19288fcb gen_pool_create +EXPORT_SYMBOL vmlinux 0x1930a2c3 km_policy_expired +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x196c59f9 ida_remove +EXPORT_SYMBOL vmlinux 0x1974b025 spi_display_xfer_agreement +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x1988ca12 blk_get_queue +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19afe3fa vga_switcheroo_register_audio_client +EXPORT_SYMBOL vmlinux 0x19b46ac2 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x19b46b0c phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x1a27a04f jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled +EXPORT_SYMBOL vmlinux 0x1a62a108 spi_dv_device +EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch +EXPORT_SYMBOL vmlinux 0x1a6c9c89 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0x1a77da20 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1adcbfd7 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x1adf54a4 agp_bridge +EXPORT_SYMBOL vmlinux 0x1ae14ef5 _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b04dd38 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x1b0a8a55 fb_set_cmap +EXPORT_SYMBOL vmlinux 0x1b461f58 crypto_sha1_update +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b6d4f00 dqput +EXPORT_SYMBOL vmlinux 0x1b89de81 register_netdev +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1babdb45 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x1bafc0d6 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x1bd2e227 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1bfc6c90 __bread +EXPORT_SYMBOL vmlinux 0x1c2e11b9 __get_page_tail +EXPORT_SYMBOL vmlinux 0x1c3df16c napi_gro_flush +EXPORT_SYMBOL vmlinux 0x1c616932 mii_check_media +EXPORT_SYMBOL vmlinux 0x1c71b8e8 blk_put_queue +EXPORT_SYMBOL vmlinux 0x1c8a04b0 acpi_reset +EXPORT_SYMBOL vmlinux 0x1c8efb12 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1d0150f8 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x1d03edae ether_setup +EXPORT_SYMBOL vmlinux 0x1d26ad64 free_netdev +EXPORT_SYMBOL vmlinux 0x1d5088c0 dentry_path_raw +EXPORT_SYMBOL vmlinux 0x1d50cfa9 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x1d578ccf may_umount_tree +EXPORT_SYMBOL vmlinux 0x1d590437 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x1d598926 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x1d5a70ac dquot_commit +EXPORT_SYMBOL vmlinux 0x1d9559b8 inet_put_port +EXPORT_SYMBOL vmlinux 0x1db54516 elv_register_queue +EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc4f39f sock_no_listen +EXPORT_SYMBOL vmlinux 0x1dcd79d0 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dfbd418 genl_register_family +EXPORT_SYMBOL vmlinux 0x1e047854 warn_slowpath_fmt +EXPORT_SYMBOL vmlinux 0x1e07224f tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x1e0c2be4 ioremap_wc +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e4306c5 scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x1e493302 __invalidate_device +EXPORT_SYMBOL vmlinux 0x1e4a17c6 scsi_execute +EXPORT_SYMBOL vmlinux 0x1e4cf560 rfkill_alloc +EXPORT_SYMBOL vmlinux 0x1e54827b dma_async_device_register +EXPORT_SYMBOL vmlinux 0x1e590dff vlan_vid_del +EXPORT_SYMBOL vmlinux 0x1e5e5550 blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x1e64a655 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1ec4eb34 flex_array_prealloc +EXPORT_SYMBOL vmlinux 0x1ef1aeba pci_find_capability +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f0b02b7 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x1f1f98ef block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x1f1fd97f simple_fill_super +EXPORT_SYMBOL vmlinux 0x1f552e12 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x1f70be1e max8925_reg_write +EXPORT_SYMBOL vmlinux 0x1f96b2d8 irq_to_desc +EXPORT_SYMBOL vmlinux 0x1fbba02e blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fd29ced agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20009e95 acpi_processor_notify_smm +EXPORT_SYMBOL vmlinux 0x2005e68a acpi_remove_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x20092385 acpi_enter_sleep_state_s4bios +EXPORT_SYMBOL vmlinux 0x2038d128 skb_make_writable +EXPORT_SYMBOL vmlinux 0x20425a0a setattr_copy +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 0x20abc15b acpi_processor_register_performance +EXPORT_SYMBOL vmlinux 0x20af250f follow_up +EXPORT_SYMBOL vmlinux 0x20be14e9 dev_uc_init +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20e8f42a blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum +EXPORT_SYMBOL vmlinux 0x2104b8e2 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0x211767c7 ida_destroy +EXPORT_SYMBOL vmlinux 0x2119ba8b lookup_one_len +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21636b2a i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x217d572a scsi_device_get +EXPORT_SYMBOL vmlinux 0x217dda13 flex_array_get +EXPORT_SYMBOL vmlinux 0x218b83e9 mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x218d05e5 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x21e0ea22 acpi_get_id +EXPORT_SYMBOL vmlinux 0x21f4c0a1 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x2204effe dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x2218325e mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x223e92c9 bdput +EXPORT_SYMBOL vmlinux 0x22482d54 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0x224bd494 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x225aaa4c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x22978144 arp_send +EXPORT_SYMBOL vmlinux 0x22b10ab5 simple_readpage +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22e9ec33 ps2_end_command +EXPORT_SYMBOL vmlinux 0x22ec33d5 simple_rename +EXPORT_SYMBOL vmlinux 0x22f7e251 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x22fd9ad0 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x230f120f do_sync_write +EXPORT_SYMBOL vmlinux 0x2319b748 md_error +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x2338cc8b n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0x23532c4d ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x2356f24d dev_alert +EXPORT_SYMBOL vmlinux 0x2359de41 get_super +EXPORT_SYMBOL vmlinux 0x2388b2ea jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x2393d313 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c22e4c mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x23c8f257 slhc_uncompress +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23dd3685 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x23de3a77 eth_header_cache +EXPORT_SYMBOL vmlinux 0x23e4d090 consume_skb +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24108717 sock_i_uid +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x243bf7b9 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x243c6ae9 key_invalidate +EXPORT_SYMBOL vmlinux 0x244259aa bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24471ef9 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x244f553b key_reject_and_link +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x24718d30 filemap_flush +EXPORT_SYMBOL vmlinux 0x24779fc4 clocksource_register +EXPORT_SYMBOL vmlinux 0x247b44ca blk_end_request +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x2491147f block_write_full_page +EXPORT_SYMBOL vmlinux 0x24a30c19 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x24ad72fd dev_gro_receive +EXPORT_SYMBOL vmlinux 0x24be8a74 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x24f17a89 lease_modify +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x24ffdd83 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x2511771d x86_cpu_to_apicid +EXPORT_SYMBOL vmlinux 0x252471d5 __lock_page +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252f8149 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x25778f34 pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25a58218 bio_kmalloc +EXPORT_SYMBOL vmlinux 0x25ad219e sock_update_classid +EXPORT_SYMBOL vmlinux 0x25b2fdc9 generic_writepages +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25ca9622 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x25dfe935 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x25e35c85 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x25e7e0dd tcf_action_exec +EXPORT_SYMBOL vmlinux 0x260137b7 ht_create_irq +EXPORT_SYMBOL vmlinux 0x2616aedb tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0x262acff2 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x263062a6 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x263122f8 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26579475 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x268bcd24 I_BDEV +EXPORT_SYMBOL vmlinux 0x26ad3274 set_pages_uc +EXPORT_SYMBOL vmlinux 0x26b1bb91 generic_show_options +EXPORT_SYMBOL vmlinux 0x26b4481d inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x26d05dc1 skb_push +EXPORT_SYMBOL vmlinux 0x26e27722 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x270d1879 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27277915 vm_stat +EXPORT_SYMBOL vmlinux 0x272d394e mtrr_del +EXPORT_SYMBOL vmlinux 0x273b1533 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x273f77db scsi_remove_host +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x277a3df1 devm_iounmap +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x2798bc83 phy_connect +EXPORT_SYMBOL vmlinux 0x2798d508 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x27ad5dc8 registered_fb +EXPORT_SYMBOL vmlinux 0x27ae7d0c ec_transaction +EXPORT_SYMBOL vmlinux 0x27b64454 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c33efe csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x282824cb agp_copy_info +EXPORT_SYMBOL vmlinux 0x2829ac93 input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2838e7df security_file_permission +EXPORT_SYMBOL vmlinux 0x283dbea7 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x2865d5f7 register_cdrom +EXPORT_SYMBOL vmlinux 0x28703ce5 netdev_features_change +EXPORT_SYMBOL vmlinux 0x28805633 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x2895ff75 devm_gpio_free +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28e8de00 pci_dev_put +EXPORT_SYMBOL vmlinux 0x28ec4cd5 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0x292093f4 native_rdmsr_safe_regs +EXPORT_SYMBOL vmlinux 0x293ff09a eth_header_cache_update +EXPORT_SYMBOL vmlinux 0x294d12a4 unregister_filesystem +EXPORT_SYMBOL vmlinux 0x29511eec d_obtain_alias +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2957e200 nf_log_packet +EXPORT_SYMBOL vmlinux 0x29c784aa unlock_rename +EXPORT_SYMBOL vmlinux 0x29e7d994 udp_proc_register +EXPORT_SYMBOL vmlinux 0x29ee9c03 dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a313508 amd_iommu_complete_ppr +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a3b8b28 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x2a4d077e __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x2a5c2eaf set_create_files_as +EXPORT_SYMBOL vmlinux 0x2a6e6109 __init_rwsem +EXPORT_SYMBOL vmlinux 0x2a8e1b6e fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x2ac82e67 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x2ad4576f compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x2af627ae dentry_open +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b0e63e3 seq_puts +EXPORT_SYMBOL vmlinux 0x2b157af7 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x2b17286b md_integrity_register +EXPORT_SYMBOL vmlinux 0x2b19eeea gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x2b1c4c06 arp_tbl +EXPORT_SYMBOL vmlinux 0x2b261076 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x2b2b5004 file_open_root +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b4a4d8a md_unregister_thread +EXPORT_SYMBOL vmlinux 0x2b51837e proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x2b871a91 ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba4f50d __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bb1cf3d uart_unregister_driver +EXPORT_SYMBOL vmlinux 0x2bb55d6e acpi_remove_notify_handler +EXPORT_SYMBOL vmlinux 0x2bbe6efa cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x2bdad5e3 netif_skb_features +EXPORT_SYMBOL vmlinux 0x2bdc3160 __serio_register_port +EXPORT_SYMBOL vmlinux 0x2be5af24 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x2bfeb410 acpi_get_handle +EXPORT_SYMBOL vmlinux 0x2c030f4c tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c26aca2 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x2c2ba0ed blk_init_queue +EXPORT_SYMBOL vmlinux 0x2c3f954f poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x2c5d3529 mmc_detect_change +EXPORT_SYMBOL vmlinux 0x2c6c7e2e blk_queue_io_min +EXPORT_SYMBOL vmlinux 0x2c6f6a32 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x2c734a36 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x2c74531e pci_disable_device +EXPORT_SYMBOL vmlinux 0x2c994ff7 vga_tryget +EXPORT_SYMBOL vmlinux 0x2caf6910 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x2cb871ca bprm_change_interp +EXPORT_SYMBOL vmlinux 0x2cc7923f sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x2cf0e18a dquot_initialize +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2d109991 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x2d13f525 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d494f6e mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x2d4a3bd9 install_exec_creds +EXPORT_SYMBOL vmlinux 0x2d4ae727 __block_write_begin +EXPORT_SYMBOL vmlinux 0x2d4c4c86 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x2d702f35 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x2d75ef68 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x2d7dd50d noop_qdisc +EXPORT_SYMBOL vmlinux 0x2d828646 request_key +EXPORT_SYMBOL vmlinux 0x2d83fdcc scsi_register_driver +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2d8afa8e input_close_device +EXPORT_SYMBOL vmlinux 0x2d8f3c0b input_open_device +EXPORT_SYMBOL vmlinux 0x2d90fde6 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x2da49b33 register_exec_domain +EXPORT_SYMBOL vmlinux 0x2db4c99b flush_delayed_work +EXPORT_SYMBOL vmlinux 0x2dbe51a5 ida_get_new +EXPORT_SYMBOL vmlinux 0x2dc0dcd7 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x2dcd1378 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu +EXPORT_SYMBOL vmlinux 0x2dd9c9ff scsi_scan_target +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 0x2e094d07 elv_add_request +EXPORT_SYMBOL vmlinux 0x2e0ce439 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e5a704c udp_table +EXPORT_SYMBOL vmlinux 0x2eab2808 __breadahead +EXPORT_SYMBOL vmlinux 0x2eae5d61 generic_make_request +EXPORT_SYMBOL vmlinux 0x2eb1c942 ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x2ed2c7cf input_allocate_device +EXPORT_SYMBOL vmlinux 0x2ed9f83c follow_down +EXPORT_SYMBOL vmlinux 0x2edb52b6 mmc_free_host +EXPORT_SYMBOL vmlinux 0x2ee97a38 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x2eeceb42 sk_chk_filter +EXPORT_SYMBOL vmlinux 0x2ef63ad6 scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0x2efc0ed3 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x2efe1c47 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc +EXPORT_SYMBOL vmlinux 0x2f064b55 allocate_resource +EXPORT_SYMBOL vmlinux 0x2f06c094 block_truncate_page +EXPORT_SYMBOL vmlinux 0x2f0ed252 ata_link_printk +EXPORT_SYMBOL vmlinux 0x2f5fbba3 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x2f69cc92 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x2f76e18c vfs_symlink +EXPORT_SYMBOL vmlinux 0x2f780390 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x2f87657f dev_add_pack +EXPORT_SYMBOL vmlinux 0x2f966ad0 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x2fa14031 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x2fb3750c on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc18e62 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x2fd0838d i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2ff063b5 acpi_get_name +EXPORT_SYMBOL vmlinux 0x3000d140 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x30164370 tty_devnum +EXPORT_SYMBOL vmlinux 0x301d3061 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x302d5f52 inet_frag_kill +EXPORT_SYMBOL vmlinux 0x3043bddd proto_unregister +EXPORT_SYMBOL vmlinux 0x3052402c tty_port_init +EXPORT_SYMBOL vmlinux 0x3074e8d4 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x307b62ac idr_replace +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x309c6691 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30aa0c85 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x30af3bdc netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x30b7c3ec have_submounts +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30ce7c75 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x30d1a623 acpi_is_video_device +EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x3118388c aio_put_req +EXPORT_SYMBOL vmlinux 0x313c763f generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x3174e818 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0x317830a3 dma_set_mask +EXPORT_SYMBOL vmlinux 0x317e74b2 lock_super +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b31f5c csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x31b360ee compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0x31d94ddc dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x31e76b57 recalibrate_cpu_khz +EXPORT_SYMBOL vmlinux 0x31f18b66 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x3204ac6d pci_get_subsys +EXPORT_SYMBOL vmlinux 0x321bb4db tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x3236a782 unregister_console +EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom +EXPORT_SYMBOL vmlinux 0x3269a4dc in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x32747a34 file_remove_suid +EXPORT_SYMBOL vmlinux 0x3278b925 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x3289975b get_disk +EXPORT_SYMBOL vmlinux 0x329b0eb4 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x32c29c95 tty_port_open +EXPORT_SYMBOL vmlinux 0x32debb16 cpumask_next_and +EXPORT_SYMBOL vmlinux 0x32e6d082 inet_accept +EXPORT_SYMBOL vmlinux 0x32eeaded _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0x3305e753 sg_miter_next +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x33506384 locks_delete_block +EXPORT_SYMBOL vmlinux 0x33515d49 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x3376dd8c __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x33a3464c __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x33a843de swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x340a52c1 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341cbed2 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x34201424 vm_map_ram +EXPORT_SYMBOL vmlinux 0x34210ef6 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x3431ff52 dm_put_device +EXPORT_SYMBOL vmlinux 0x34339fd1 simple_getattr +EXPORT_SYMBOL vmlinux 0x3437bc29 elv_rb_find +EXPORT_SYMBOL vmlinux 0x3469b22c set_nlink +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x34744046 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349da488 single_open +EXPORT_SYMBOL vmlinux 0x34b98def journal_stop +EXPORT_SYMBOL vmlinux 0x34e9832d scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x350f1954 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0x35225ea3 down_write_trylock +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3552cb09 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x35536dd9 inode_init_owner +EXPORT_SYMBOL vmlinux 0x356a2d8c kill_litter_super +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x35886baa mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x359e3900 module_put +EXPORT_SYMBOL vmlinux 0x35a05814 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x35b4b6c0 proc_create_data +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35e1db1c generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x35e23d59 devm_free_irq +EXPORT_SYMBOL vmlinux 0x35f7e8f2 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask +EXPORT_SYMBOL vmlinux 0x3611a924 drop_super +EXPORT_SYMBOL vmlinux 0x361ee91d spi_schedule_dv_device +EXPORT_SYMBOL vmlinux 0x362ac369 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x362e4a98 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x366a276b __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x3686ea09 spi_print_msg +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36a176a8 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0x36db8ae3 load_nls_default +EXPORT_SYMBOL vmlinux 0x36e086df truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36ef6ecb phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x3701a196 csum_partial_copy_to_user +EXPORT_SYMBOL vmlinux 0x373394e3 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x373e72e7 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x378e7074 set_trace_device +EXPORT_SYMBOL vmlinux 0x3795c70d pnp_activate_dev +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date +EXPORT_SYMBOL vmlinux 0x37ed64e2 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x38075797 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x3823062f sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL vmlinux 0x38746561 acpi_bus_add +EXPORT_SYMBOL vmlinux 0x387f0387 user_revoke +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x389bfe0d rtc_lock +EXPORT_SYMBOL vmlinux 0x38a5078c request_key_async +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38bec1f0 filp_close +EXPORT_SYMBOL vmlinux 0x38e15d65 blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x38f33bed dump_fpu +EXPORT_SYMBOL vmlinux 0x39220e68 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x3928efe9 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x39560bf3 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x395c3eb9 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x395c757a __netdev_printk +EXPORT_SYMBOL vmlinux 0x396a7ec3 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x39850690 skb_insert +EXPORT_SYMBOL vmlinux 0x3985259f dev_mc_flush +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39a055f3 acpi_remove_gpe_handler +EXPORT_SYMBOL vmlinux 0x39a136a5 __dst_free +EXPORT_SYMBOL vmlinux 0x39a67e98 fb_blank +EXPORT_SYMBOL vmlinux 0x39bb372f dq_data_lock +EXPORT_SYMBOL vmlinux 0x39d9ff7a inet_stream_connect +EXPORT_SYMBOL vmlinux 0x39de5670 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify +EXPORT_SYMBOL vmlinux 0x3a0b7e75 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3a17e5e4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a266587 dma_find_channel +EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush +EXPORT_SYMBOL vmlinux 0x3a42b8de scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x3a5f7c34 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3a7e0b4e qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa2c43d jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x3aa4549a writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x3aa45b0f console_stop +EXPORT_SYMBOL vmlinux 0x3aad87fd __destroy_inode +EXPORT_SYMBOL vmlinux 0x3af8c4f1 __page_symlink +EXPORT_SYMBOL vmlinux 0x3b1a8006 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x3b2598f9 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0x3b2c5ee5 serio_close +EXPORT_SYMBOL vmlinux 0x3b2c83e7 fb_is_primary_device +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b4284b9 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x3b4ceb4a up_write +EXPORT_SYMBOL vmlinux 0x3b4f49cd tcp_check_req +EXPORT_SYMBOL vmlinux 0x3b62de10 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x3b72fc98 acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0x3b92480d vfs_readlink +EXPORT_SYMBOL vmlinux 0x3b971055 build_skb +EXPORT_SYMBOL vmlinux 0x3b9c3f1e d_rehash +EXPORT_SYMBOL vmlinux 0x3bcb166d nonseekable_open +EXPORT_SYMBOL vmlinux 0x3bcbbb33 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bdf1588 napi_complete +EXPORT_SYMBOL vmlinux 0x3be4919e skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x3beb690b lg_local_unlock +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c11fbe6 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x3c216d25 dst_destroy +EXPORT_SYMBOL vmlinux 0x3c446dd8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x3c64db56 generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x3c753b51 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c92643d eth_header +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3c9e620e scsi_init_io +EXPORT_SYMBOL vmlinux 0x3ca37f16 unregister_netdev +EXPORT_SYMBOL vmlinux 0x3cbf86a0 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x3ce064f8 tty_port_put +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ce92105 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x3d004561 kill_block_super +EXPORT_SYMBOL vmlinux 0x3d1e8f21 mark_page_accessed +EXPORT_SYMBOL vmlinux 0x3d2beb96 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x3d31f236 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d5c13ca kfree_skb +EXPORT_SYMBOL vmlinux 0x3d7c1ed7 msrs_alloc +EXPORT_SYMBOL vmlinux 0x3d8a8a6f sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0x3d90773f udp_sendmsg +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d9dad6d __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x3d9ee9f0 clear_page +EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e18b1c5 __mutex_init +EXPORT_SYMBOL vmlinux 0x3e2ae3a8 acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0x3e35ec71 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x3e3a5e18 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x3e401055 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e46733f start_tty +EXPORT_SYMBOL vmlinux 0x3e518f61 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e8cfe6f disk_stack_limits +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3eb11b3f neigh_for_each +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3eec0bfd sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x3ef3050f task_nice +EXPORT_SYMBOL vmlinux 0x3f01811c vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f228386 pnp_unregister_driver +EXPORT_SYMBOL vmlinux 0x3f26d56b cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x3f2f8905 revert_creds +EXPORT_SYMBOL vmlinux 0x3f3bc02c pnp_is_active +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f56730d udp_poll +EXPORT_SYMBOL vmlinux 0x3f5c77ef rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x3f6ed2d1 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x3f71faa1 mempool_create +EXPORT_SYMBOL vmlinux 0x3f7aaa85 iunique +EXPORT_SYMBOL vmlinux 0x3f7d0fd5 vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x3fa1b3b2 node_data +EXPORT_SYMBOL vmlinux 0x3fc25bf7 kill_anon_super +EXPORT_SYMBOL vmlinux 0x3fd21f62 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x3fe4a1b5 security_path_symlink +EXPORT_SYMBOL vmlinux 0x3fe60765 unregister_quota_format +EXPORT_SYMBOL vmlinux 0x3fe9490f dst_alloc +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x401680a4 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x4017d2bb tty_kref_put +EXPORT_SYMBOL vmlinux 0x401fcfc6 sock_i_ino +EXPORT_SYMBOL vmlinux 0x40256835 complete_all +EXPORT_SYMBOL vmlinux 0x402b70ab vfs_open +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404280c9 dentry_unhash +EXPORT_SYMBOL vmlinux 0x40485fd6 bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0x4052ae2a __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40689774 kernel_accept +EXPORT_SYMBOL vmlinux 0x406ed92a dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x407051db proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x40729bc3 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x4075b078 dquot_enable +EXPORT_SYMBOL vmlinux 0x40798292 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x4097fa45 acpi_read_bit_register +EXPORT_SYMBOL vmlinux 0x40980962 __sock_create +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 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40c89d46 acpi_get_table_by_index +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40e3e640 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x40fae193 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0x40fd039f pci_disable_obff +EXPORT_SYMBOL vmlinux 0x410c11ee nf_afinfo +EXPORT_SYMBOL vmlinux 0x413594c3 nf_ct_attach +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419c824b sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x41bd0534 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x41c6326a thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x41d55f31 sk_common_release +EXPORT_SYMBOL vmlinux 0x420c6edb bdget_disk +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42251922 do_splice_direct +EXPORT_SYMBOL vmlinux 0x423572a4 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x4255a806 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x4267975f generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x427a72f7 mmc_add_host +EXPORT_SYMBOL vmlinux 0x42867ad7 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x4287cc4c get_unmapped_area +EXPORT_SYMBOL vmlinux 0x428e6c19 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a52320 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0x42b0325e gen_replace_estimator +EXPORT_SYMBOL vmlinux 0x42b7e26e genl_notify +EXPORT_SYMBOL vmlinux 0x42c8de35 ioremap_nocache +EXPORT_SYMBOL vmlinux 0x42f1cbf2 __nla_put +EXPORT_SYMBOL vmlinux 0x4300f7ac dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x430ac23b pci_remove_bus +EXPORT_SYMBOL vmlinux 0x43261dca _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0x43385ad9 acpi_pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x435d4cab blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x4361408f xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x436fe2b3 bio_map_kern +EXPORT_SYMBOL vmlinux 0x43790859 rt6_lookup +EXPORT_SYMBOL vmlinux 0x43925a19 dev_addr_add +EXPORT_SYMBOL vmlinux 0x439370c1 dm_io +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43cbd0f5 eth_type_trans +EXPORT_SYMBOL vmlinux 0x43dbc1cb pskb_expand_head +EXPORT_SYMBOL vmlinux 0x43e8cc45 nobh_write_end +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43f2789c compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x444233aa netif_rx +EXPORT_SYMBOL vmlinux 0x4451d270 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x445bcda8 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp +EXPORT_SYMBOL vmlinux 0x44a2c6a8 km_new_mapping +EXPORT_SYMBOL vmlinux 0x44a81d5f acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz +EXPORT_SYMBOL vmlinux 0x44b72d47 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44c9b498 aio_complete +EXPORT_SYMBOL vmlinux 0x44cd4e0b netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x45044497 percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x450d10f4 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x452c53c5 mpage_writepages +EXPORT_SYMBOL vmlinux 0x452ebe86 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x455a3f9c __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x456c8dba input_flush_device +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x4589cf87 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x4591a58b mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45d6cbca cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x45d92f9a dev_notice +EXPORT_SYMBOL vmlinux 0x45e87dc6 kdb_current_task +EXPORT_SYMBOL vmlinux 0x45f845f2 _dev_info +EXPORT_SYMBOL vmlinux 0x4605a23d ida_simple_get +EXPORT_SYMBOL vmlinux 0x46102531 ihold +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x4632e3d8 x86_dma_fallback_dev +EXPORT_SYMBOL vmlinux 0x46545187 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466649c3 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0x466726e9 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x46ab9d62 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance +EXPORT_SYMBOL vmlinux 0x46c7d0fa release_firmware +EXPORT_SYMBOL vmlinux 0x46ccb7a4 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x46ce3010 __devm_release_region +EXPORT_SYMBOL vmlinux 0x46d80ae9 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x46e81f4a swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x46ec4f43 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x4712138a generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x4735da1b register_md_personality +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x4757d718 revalidate_disk +EXPORT_SYMBOL vmlinux 0x475f010b acpi_purge_cached_objects +EXPORT_SYMBOL vmlinux 0x4775df29 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x47824124 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x478cfadc block_write_begin +EXPORT_SYMBOL vmlinux 0x478d10b2 ht_destroy_irq +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b6a10f ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x47c35bde journal_update_format +EXPORT_SYMBOL vmlinux 0x47c7b0d2 cpu_number +EXPORT_SYMBOL vmlinux 0x47f067cb amd_iommu_unregister_ppr_notifier +EXPORT_SYMBOL vmlinux 0x48026fcc register_framebuffer +EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open +EXPORT_SYMBOL vmlinux 0x481cb9ab acpi_enter_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x48aa8e6a dev_mc_init +EXPORT_SYMBOL vmlinux 0x48d2b151 padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x48d7775f tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x48f7e0fd generic_read_dir +EXPORT_SYMBOL vmlinux 0x48feb878 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x49059061 acpi_match_device_ids +EXPORT_SYMBOL vmlinux 0x491b69d9 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4965c790 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x4970cd49 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x49717d6e set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x49aaf401 elevator_change +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49da2a96 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x49e3a1db compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x4a085703 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x4a091f76 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x4a1ac3d9 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a367be9 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x4a6dd6f0 pnp_device_attach +EXPORT_SYMBOL vmlinux 0x4a70131a block_write_end +EXPORT_SYMBOL vmlinux 0x4a798d9d jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x4a9f3e3b skb_queue_tail +EXPORT_SYMBOL vmlinux 0x4aad52d7 mempool_free +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4adfc989 simple_release_fs +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b06d2e7 complete +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b28c04c pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x4b2b4c26 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x4b4faf16 default_llseek +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4bbb35b4 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0x4bd3acc6 vga_client_register +EXPORT_SYMBOL vmlinux 0x4bd9125c path_put +EXPORT_SYMBOL vmlinux 0x4be7e3b5 seq_putc +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c3149ac filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x4c4fef19 kernel_stack +EXPORT_SYMBOL vmlinux 0x4c5ba66d __alloc_skb +EXPORT_SYMBOL vmlinux 0x4c6544f5 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4c765dae blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x4c7d6aff tc_classify +EXPORT_SYMBOL vmlinux 0x4c926d8e md_check_recovery +EXPORT_SYMBOL vmlinux 0x4ca7f6eb tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cadb35c agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x4cb16a0d journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x4cbbc2db bioset_create +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cc9ae27 sk_filter +EXPORT_SYMBOL vmlinux 0x4cd8bf01 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x4cd8f71a handle_edge_irq +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf5d90d __put_cred +EXPORT_SYMBOL vmlinux 0x4d1023f8 mempool_resize +EXPORT_SYMBOL vmlinux 0x4d12d070 sock_release +EXPORT_SYMBOL vmlinux 0x4d233d3c dquot_transfer +EXPORT_SYMBOL vmlinux 0x4d30965f inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x4d3a078f abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4d3ce5e7 sync_blockdev +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d46af5a md_finish_reshape +EXPORT_SYMBOL vmlinux 0x4d5ce39f dev_uc_flush +EXPORT_SYMBOL vmlinux 0x4d78a962 amd_iommu_get_v2_domain +EXPORT_SYMBOL vmlinux 0x4d80cd2a tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x4d884629 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4db2e133 mdiobus_write +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de7c2fe amd_iommu_register_ppr_notifier +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4df8b552 serio_open +EXPORT_SYMBOL vmlinux 0x4e05d2c0 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e21999c acpi_get_child +EXPORT_SYMBOL vmlinux 0x4e243a52 pci_get_device +EXPORT_SYMBOL vmlinux 0x4e2b2e88 __pagevec_release +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e4b4dec scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x4e531d1c __blk_run_queue +EXPORT_SYMBOL vmlinux 0x4e574275 md_write_start +EXPORT_SYMBOL vmlinux 0x4e6a3b65 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e71a153 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x4e8364a5 writeback_in_progress +EXPORT_SYMBOL vmlinux 0x4e932956 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x4e9627de request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset +EXPORT_SYMBOL vmlinux 0x4ea3fb63 f_setown +EXPORT_SYMBOL vmlinux 0x4eae14f2 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x4ed32a2f eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f245cc3 scsi_register_interface +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 0x4f8cef9d dev_addr_del +EXPORT_SYMBOL vmlinux 0x4fb27126 d_instantiate +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x4ff921c4 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x4ff9e7e9 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x5018265a tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5023c924 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x50529870 acpi_get_gpe_status +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50acc4b8 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x50ad8330 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x50be6ca2 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x50c1a4e6 __get_user_pages +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x511a0c2a __scm_send +EXPORT_SYMBOL vmlinux 0x511ab427 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x512b7c7f proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x51407908 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x5142a2fb compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x5174eeac bio_copy_user +EXPORT_SYMBOL vmlinux 0x5182b940 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x518e77e1 input_register_handler +EXPORT_SYMBOL vmlinux 0x51974db4 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x51a9b8f6 follow_down_one +EXPORT_SYMBOL vmlinux 0x51ac04a2 sock_init_data +EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51ddb1ad add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52095e19 acpi_get_data +EXPORT_SYMBOL vmlinux 0x520d9e89 serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x52130046 acpi_check_address_range +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x524bde1c dm_register_target +EXPORT_SYMBOL vmlinux 0x525411bb neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x52596237 is_container_init +EXPORT_SYMBOL vmlinux 0x525e026f acpi_os_unmap_generic_address +EXPORT_SYMBOL vmlinux 0x5264c5ec kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x526ef161 acpi_bus_generate_proc_event +EXPORT_SYMBOL vmlinux 0x5273af21 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x527dd878 journal_clear_err +EXPORT_SYMBOL vmlinux 0x52a9db7d mmc_erase +EXPORT_SYMBOL vmlinux 0x52b72470 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x52b779ab i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x52cd1a95 ip_options_compile +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52dab2ef n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x52de818b __quota_error +EXPORT_SYMBOL vmlinux 0x52fb0e30 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x53065ac1 proto_register +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x5310fe6d current_task +EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid +EXPORT_SYMBOL vmlinux 0x532f75dd journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5355903f pci_scan_single_device +EXPORT_SYMBOL vmlinux 0x535b4b19 dev_driver_string +EXPORT_SYMBOL vmlinux 0x536a792b sk_dst_check +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x539a41a7 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0x53b90181 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x53c98edb inet6_register_protosw +EXPORT_SYMBOL vmlinux 0x53d29a4c scsi_get_command +EXPORT_SYMBOL vmlinux 0x53f2813b dev_get_flags +EXPORT_SYMBOL vmlinux 0x53f6ffbc wait_for_completion_timeout +EXPORT_SYMBOL vmlinux 0x541282ad touch_atime +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x542bbe4f bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x543b83b0 bio_alloc +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544ad582 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x54554948 kobject_put +EXPORT_SYMBOL vmlinux 0x54568b75 register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x54a8e933 generic_file_llseek +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54aa246a dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x54aa6357 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x54b28a91 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x54bcae16 sock_create_lite +EXPORT_SYMBOL vmlinux 0x54c9433d tcf_em_register +EXPORT_SYMBOL vmlinux 0x54dc4858 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54e70e36 md_flush_request +EXPORT_SYMBOL vmlinux 0x54eee1f6 security_path_unlink +EXPORT_SYMBOL vmlinux 0x550ba4a3 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x553347a9 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x554f6c59 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x55671680 lg_lock_init +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x55771879 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x557f4d45 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x559e4f9b i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x55ce6c69 input_unregister_handler +EXPORT_SYMBOL vmlinux 0x55e1f0c7 journal_ack_err +EXPORT_SYMBOL vmlinux 0x55e6f8b9 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x55e791f3 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x55ebe0c7 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x55f100e5 mpage_writepage +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x56073030 pnp_register_card_driver +EXPORT_SYMBOL vmlinux 0x560c6a38 acpi_leave_sleep_state_prep +EXPORT_SYMBOL vmlinux 0x560d5894 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x5611e23a __splice_from_pipe +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 0x5643ff6f journal_create +EXPORT_SYMBOL vmlinux 0x566592dd sk_reset_timer +EXPORT_SYMBOL vmlinux 0x5675373f bio_put +EXPORT_SYMBOL vmlinux 0x56802771 padata_alloc +EXPORT_SYMBOL vmlinux 0x568c3d06 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x56bc9977 processors +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56dafde1 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x56fae4c6 dst_discard +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575eb555 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5772582a block_read_full_page +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x57a387b1 journal_abort +EXPORT_SYMBOL vmlinux 0x57a6ccd0 down_read +EXPORT_SYMBOL vmlinux 0x57d48e80 generic_getxattr +EXPORT_SYMBOL vmlinux 0x5800db85 scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x580decac simple_write_end +EXPORT_SYMBOL vmlinux 0x5815daf3 qdisc_reset +EXPORT_SYMBOL vmlinux 0x581fcefa sk_stream_error +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x584738f9 rdmsr_safe_on_cpu +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 0x586274d8 sock_create +EXPORT_SYMBOL vmlinux 0x58643c41 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x5882f6b3 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0x58a2c366 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0x58afcbd8 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x5918753e blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x5933db75 elevator_init +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593e8c8c sock_no_poll +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d8c1e pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x59759b2b vfsmount_lock +EXPORT_SYMBOL vmlinux 0x59bc9609 acpi_write_bit_register +EXPORT_SYMBOL vmlinux 0x59cd56c4 mmc_can_erase +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e52722 textsearch_register +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a03bbff sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x5a03d110 skb_find_text +EXPORT_SYMBOL vmlinux 0x5a2c7c08 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x5a3360ee pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x5a34a8a0 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 +EXPORT_SYMBOL vmlinux 0x5a49816f pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5a4eda76 genlmsg_put +EXPORT_SYMBOL vmlinux 0x5a5e53bb agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x5a6c7168 security_path_truncate +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a777200 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x5a78ff44 scsi_prep_return +EXPORT_SYMBOL vmlinux 0x5a7f68db lookup_hash +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a951efb neigh_connected_output +EXPORT_SYMBOL vmlinux 0x5a9dc517 netif_napi_del +EXPORT_SYMBOL vmlinux 0x5ab62d3b tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0x5ac3377a security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x5ac376a5 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x5adff1f6 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5ae4fa58 mutex_lock +EXPORT_SYMBOL vmlinux 0x5aeb145f complete_and_exit +EXPORT_SYMBOL vmlinux 0x5af7424d xfrm_state_add +EXPORT_SYMBOL vmlinux 0x5b1a77e6 tcp_proc_register +EXPORT_SYMBOL vmlinux 0x5b2ee636 dqget +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b5e5248 thaw_bdev +EXPORT_SYMBOL vmlinux 0x5b6b3bf4 generic_removexattr +EXPORT_SYMBOL vmlinux 0x5b6c9815 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x5b7f714e scsi_device_resume +EXPORT_SYMBOL vmlinux 0x5b883ac1 mddev_congested +EXPORT_SYMBOL vmlinux 0x5b9b1d6b find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5ba9cd21 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bc175dc arp_create +EXPORT_SYMBOL vmlinux 0x5bd48bc9 simple_setattr +EXPORT_SYMBOL vmlinux 0x5bec6aaa sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x5bfc1eb3 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x5c3edd59 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x5c40fc04 account_page_redirty +EXPORT_SYMBOL vmlinux 0x5c4c5f2f vc_resize +EXPORT_SYMBOL vmlinux 0x5c5de482 fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x5c8b5ce8 prepare_to_wait +EXPORT_SYMBOL vmlinux 0x5c9ae0a9 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x5ca9fb5c inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x5cf56f5e xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0x5cf74c50 bh_submit_read +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d1e44a4 pnp_disable_dev +EXPORT_SYMBOL vmlinux 0x5d346d72 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x5d3895cc __neigh_event_send +EXPORT_SYMBOL vmlinux 0x5d3ebba2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5d4d8bc9 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x5d59ebc4 lookup_bdev +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5ca42f generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x5d74dbcf pnp_range_reserved +EXPORT_SYMBOL vmlinux 0x5d928bd0 vfs_readv +EXPORT_SYMBOL vmlinux 0x5d93fceb dst_release +EXPORT_SYMBOL vmlinux 0x5d94d6ae tcp_splice_read +EXPORT_SYMBOL vmlinux 0x5dc3ec35 pci_find_bus +EXPORT_SYMBOL vmlinux 0x5dc4900f cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x5de958b5 vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0x5df3e41b serial8250_do_pm +EXPORT_SYMBOL vmlinux 0x5dfce726 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x5dfd29e5 ata_dev_printk +EXPORT_SYMBOL vmlinux 0x5e0e193b buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x5e423233 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x5e4a29dd __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e6be427 register_con_driver +EXPORT_SYMBOL vmlinux 0x5e7e50e7 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x5e81290e __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x5e8818b7 mmc_card_awake +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5e9e5f20 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eb95bc1 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ee2e031 ida_get_new_above +EXPORT_SYMBOL vmlinux 0x5ee8e3e4 do_splice_from +EXPORT_SYMBOL vmlinux 0x5ef314e3 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f296b5c netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x5f2bfe97 scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f58f676 flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x5f5f3a6d vfs_follow_link +EXPORT_SYMBOL vmlinux 0x5f6bcbc5 bdget +EXPORT_SYMBOL vmlinux 0x5f75555a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x5f771d21 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x5f77d813 inet_bind +EXPORT_SYMBOL vmlinux 0x5f86c4a1 pci_dev_get +EXPORT_SYMBOL vmlinux 0x5f8ab17b nf_unregister_hook +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fb8c146 __d_drop +EXPORT_SYMBOL vmlinux 0x5ff42b08 acpi_video_get_capabilities +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601eb888 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6021363a netdev_update_features +EXPORT_SYMBOL vmlinux 0x602ed00d acpi_current_gpe_count +EXPORT_SYMBOL vmlinux 0x60317e73 read_cache_pages +EXPORT_SYMBOL vmlinux 0x604da168 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x604f9c5e dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x609c2ac7 send_sig +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60a4c3a5 acpi_root_dir +EXPORT_SYMBOL vmlinux 0x60c9df85 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x60f21583 __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61461a7f inet_frag_destroy +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x618911fc numa_node +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61b00e2f napi_gro_receive +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x62049256 acpi_disable +EXPORT_SYMBOL vmlinux 0x620811bb md_write_end +EXPORT_SYMBOL vmlinux 0x620a6d31 pcim_pin_device +EXPORT_SYMBOL vmlinux 0x620db265 pid_task +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 0x6232afbd pci_fixup_device +EXPORT_SYMBOL vmlinux 0x6237f6b5 acpi_enable_event +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62748e70 acpi_set_current_resources +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628ee610 journal_restart +EXPORT_SYMBOL vmlinux 0x62ad5b41 mount_ns +EXPORT_SYMBOL vmlinux 0x62be9f08 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x62dcf7a4 framebuffer_release +EXPORT_SYMBOL vmlinux 0x62de7f62 inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x62e0427c ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x62e37ffc udp_ioctl +EXPORT_SYMBOL vmlinux 0x62f249a2 tcp_close +EXPORT_SYMBOL vmlinux 0x62f9cd91 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x633ba0eb simple_rmdir +EXPORT_SYMBOL vmlinux 0x633c6948 neigh_create +EXPORT_SYMBOL vmlinux 0x633de27a fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0x6344b092 bio_endio +EXPORT_SYMBOL vmlinux 0x63502ec8 simple_unlink +EXPORT_SYMBOL vmlinux 0x635694fa keyring_search +EXPORT_SYMBOL vmlinux 0x636a5691 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0x636f89f7 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x637d0bd1 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63a44c48 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x63b1b99b mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x63c1e7dc padata_stop +EXPORT_SYMBOL vmlinux 0x63c436b3 fget_raw +EXPORT_SYMBOL vmlinux 0x63e244ac twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x63fdcf92 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x6401db5b tty_set_operations +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x6427cb31 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x642b23c4 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x642c4a88 iterate_mounts +EXPORT_SYMBOL vmlinux 0x6445ba83 bio_pair_release +EXPORT_SYMBOL vmlinux 0x6447cc11 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x6449fd41 acpi_install_address_space_handler +EXPORT_SYMBOL vmlinux 0x6478134c ec_burst_enable +EXPORT_SYMBOL vmlinux 0x647cdd52 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x648a39c9 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64d1ae9e blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x64d2172c mdiobus_register +EXPORT_SYMBOL vmlinux 0x64d91352 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0x64dc2fb0 sock_no_getname +EXPORT_SYMBOL vmlinux 0x64e583f6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x64eae7ad set_memory_array_wb +EXPORT_SYMBOL vmlinux 0x64f0a4e2 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x650c3845 agp_create_memory +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x652e8a7c mdio_bus_type +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x6542c372 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x65461fb3 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x655f1ab0 set_memory_array_wc +EXPORT_SYMBOL vmlinux 0x656d990c scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x6582bdd4 mmc_can_discard +EXPORT_SYMBOL vmlinux 0x658d0031 __pskb_copy +EXPORT_SYMBOL vmlinux 0x6591e24d sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x659bf58b __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x65b4c56f inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x65dbb0c0 __rta_fill +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x6600dc85 kill_pid +EXPORT_SYMBOL vmlinux 0x6605f97f flex_array_clear +EXPORT_SYMBOL vmlinux 0x6607e57b jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0x662ddf8f dma_sync_wait +EXPORT_SYMBOL vmlinux 0x663eafd6 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0x665f2ca1 netif_device_detach +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x66a67dab flex_array_shrink +EXPORT_SYMBOL vmlinux 0x66a8c78c submit_bio +EXPORT_SYMBOL vmlinux 0x66b9ac3d phy_driver_register +EXPORT_SYMBOL vmlinux 0x66c1db95 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x66fc6fbf scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x67016b76 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x6729d3df __get_user_4 +EXPORT_SYMBOL vmlinux 0x67313ddc rtnl_unicast +EXPORT_SYMBOL vmlinux 0x673ace2c inc_nlink +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x675fac13 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x67697cff freeze_super +EXPORT_SYMBOL vmlinux 0x676a3e6e clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x678cbe07 sock_common_getsockopt +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 0x67d25fbb udp_proc_unregister +EXPORT_SYMBOL vmlinux 0x67d396b0 rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0x67d9ac69 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x68033f8e dcache_dir_open +EXPORT_SYMBOL vmlinux 0x683a57e3 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x684e1019 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x687adcbf sget +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68843469 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x688aed9e d_delete +EXPORT_SYMBOL vmlinux 0x688f4205 dquot_release +EXPORT_SYMBOL vmlinux 0x68aca4ad down +EXPORT_SYMBOL vmlinux 0x68aecee0 skb_copy +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e4822d kmem_cache_size +EXPORT_SYMBOL vmlinux 0x68f77b47 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x690ff2c3 make_bad_inode +EXPORT_SYMBOL vmlinux 0x691001b5 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x6933f1a9 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x69387ed6 inet_getname +EXPORT_SYMBOL vmlinux 0x69692309 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6977405c ppp_register_channel +EXPORT_SYMBOL vmlinux 0x6981d295 padata_add_cpu +EXPORT_SYMBOL vmlinux 0x69886dcb input_event +EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69aca1e9 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69dbc121 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e3019d xen_biovec_phys_mergeable +EXPORT_SYMBOL vmlinux 0x69fbc0a2 acpi_get_event_resources +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a089d5d ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x6a1ceaf2 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x6a3b620e icmp_send +EXPORT_SYMBOL vmlinux 0x6a3f041a generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x6a494b7b d_find_alias +EXPORT_SYMBOL vmlinux 0x6a59244f da903x_query_status +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a93a07d xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acee017 inet_addr_type +EXPORT_SYMBOL vmlinux 0x6ad2b20d neigh_lookup +EXPORT_SYMBOL vmlinux 0x6ad85887 acpi_enable_gpe +EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6ae1fb82 d_lookup +EXPORT_SYMBOL vmlinux 0x6b0c30f6 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x6b1329fc set_user_nice +EXPORT_SYMBOL vmlinux 0x6b142f31 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b1eaff9 path_is_under +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b460967 idr_get_next +EXPORT_SYMBOL vmlinux 0x6b640864 nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b7c1e67 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x6ba2b7b2 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x6bb52830 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bc5588c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6c148790 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x6c1908d3 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x6c389761 acpi_bus_get_private_data +EXPORT_SYMBOL vmlinux 0x6c5101d8 percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c72e488 pv_mmu_ops +EXPORT_SYMBOL vmlinux 0x6c75c083 seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0x6c9dce48 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x6cb8d413 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x6cb96d7e dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x6cc0a611 get_gendisk +EXPORT_SYMBOL vmlinux 0x6cc34a03 dcache_readdir +EXPORT_SYMBOL vmlinux 0x6ce4b072 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0aba34 wait_for_completion +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1def7a tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x6d23137c i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x6d25527a remove_arg_zero +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 0x6d35c260 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x6d408b18 alloc_file +EXPORT_SYMBOL vmlinux 0x6d64acfd mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x6d6b5f0a dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d829bf4 phy_connect_direct +EXPORT_SYMBOL vmlinux 0x6da70c74 init_net +EXPORT_SYMBOL vmlinux 0x6dd3ebbc intel_gtt_insert_pages +EXPORT_SYMBOL vmlinux 0x6de9fc22 vfs_llseek +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e297a62 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x6e2a81c0 tty_free_termios +EXPORT_SYMBOL vmlinux 0x6e2f93e1 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x6e4bc170 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x6e6a2d57 ip_fragment +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e82032c skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ee06316 xfrm_register_type +EXPORT_SYMBOL vmlinux 0x6ef73eea blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x6f06d435 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f27df72 irq_set_chip +EXPORT_SYMBOL vmlinux 0x6f2cf4ee dev_uc_add +EXPORT_SYMBOL vmlinux 0x6f3e5fcd mount_nodev +EXPORT_SYMBOL vmlinux 0x6f46441c ps2_drain +EXPORT_SYMBOL vmlinux 0x6f4c812f __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x6f556bdb acpi_get_gpe_device +EXPORT_SYMBOL vmlinux 0x6f7f464b skb_trim +EXPORT_SYMBOL vmlinux 0x6f92ceb5 get_io_context +EXPORT_SYMBOL vmlinux 0x6fa89de6 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fdb6aac bdevname +EXPORT_SYMBOL vmlinux 0x6fe81d26 skb_append +EXPORT_SYMBOL vmlinux 0x6feb2039 acpi_write +EXPORT_SYMBOL vmlinux 0x702b6c54 udplite_table +EXPORT_SYMBOL vmlinux 0x7032d400 dev_addr_init +EXPORT_SYMBOL vmlinux 0x703b4352 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x706849d4 __secpath_destroy +EXPORT_SYMBOL vmlinux 0x708bedee register_key_type +EXPORT_SYMBOL vmlinux 0x7097f264 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x70a5920a framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x70b55f09 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x70b74975 __neigh_for_each_release +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 0x7110f715 intel_gtt_map_memory +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x716678a0 deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7185b08f thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71c8282f dev_warn +EXPORT_SYMBOL vmlinux 0x71cd1818 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0x71d59f1a input_set_abs_params +EXPORT_SYMBOL vmlinux 0x71e2fa74 scsi_add_device +EXPORT_SYMBOL vmlinux 0x71e3cecb up +EXPORT_SYMBOL vmlinux 0x7205cdb0 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x724dd45f netif_notify_peers +EXPORT_SYMBOL vmlinux 0x725dd0f0 neigh_update +EXPORT_SYMBOL vmlinux 0x7264fd45 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x7267d16c ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x727e2f3a dev_get_by_index +EXPORT_SYMBOL vmlinux 0x7282bc60 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x728eb098 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7296a254 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x72a00aec phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x72a481a8 journal_start_commit +EXPORT_SYMBOL vmlinux 0x72a98fdb copy_user_generic_unrolled +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72b71d98 mii_nway_restart +EXPORT_SYMBOL vmlinux 0x72bb6c5f vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x72bc208f pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x72bf2140 mtrr_add +EXPORT_SYMBOL vmlinux 0x72ca8038 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x72d63b8e __brelse +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72f6e0fe unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x72fcc71b sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x73081c67 swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0x730c3e95 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x732e5bd0 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x734095d3 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0x73571aeb led_brightness_set +EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x73a78bc4 downgrade_write +EXPORT_SYMBOL vmlinux 0x73d5c8a5 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable +EXPORT_SYMBOL vmlinux 0x73ef4fa5 vfs_writev +EXPORT_SYMBOL vmlinux 0x73f25008 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x740a1b95 reserve_evntsel_nmi +EXPORT_SYMBOL vmlinux 0x7414a15c dcache_dir_close +EXPORT_SYMBOL vmlinux 0x742e086c unregister_nls +EXPORT_SYMBOL vmlinux 0x743700ec generic_listxattr +EXPORT_SYMBOL vmlinux 0x7445f3b0 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x745a41f2 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x74636c29 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x7466c5d6 led_blink_set +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x74742fce release_sock +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749045da ps2_handle_response +EXPORT_SYMBOL vmlinux 0x749f4165 irq_stat +EXPORT_SYMBOL vmlinux 0x74ac6b3d blk_end_request_all +EXPORT_SYMBOL vmlinux 0x74bbdc85 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d8510e neigh_direct_output +EXPORT_SYMBOL vmlinux 0x74de09ab scsi_unregister +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fb6ff9 generic_setxattr +EXPORT_SYMBOL vmlinux 0x75265b7a jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x754d539c strlen +EXPORT_SYMBOL vmlinux 0x754f52fd ppp_input_error +EXPORT_SYMBOL vmlinux 0x7551debc panic_notifier_list +EXPORT_SYMBOL vmlinux 0x7564dccc cfb_fillrect +EXPORT_SYMBOL vmlinux 0x7566f99d free_task +EXPORT_SYMBOL vmlinux 0x756f7b1f posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x7589e2ec generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x75b1f1fb kobject_get +EXPORT_SYMBOL vmlinux 0x75b7508e sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75d19c68 security_path_mkdir +EXPORT_SYMBOL vmlinux 0x75f8e7b9 fsync_bdev +EXPORT_SYMBOL vmlinux 0x75fbdefd acpi_remove_address_space_handler +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7611e4e8 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x7628f3c7 this_cpu_off +EXPORT_SYMBOL vmlinux 0x76360c79 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x76381d8d call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x767dd8fd acpi_get_irq_routing_table +EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc +EXPORT_SYMBOL vmlinux 0x76859e62 set_blocksize +EXPORT_SYMBOL vmlinux 0x76869ac8 rdmsr_on_cpus +EXPORT_SYMBOL vmlinux 0x768c0325 udp_disconnect +EXPORT_SYMBOL vmlinux 0x769515ab agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x76bc695d backlight_force_update +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76ca6dc1 default_file_splice_read +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76dc57bc register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7732afb9 scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x77584af2 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x775c5e6d would_dump +EXPORT_SYMBOL vmlinux 0x7760da2a genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x7786604a input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c0a588 amd_northbridges +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77f53abc acpi_get_vendor_resource +EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x78144e57 simple_link +EXPORT_SYMBOL vmlinux 0x781c254b pneigh_lookup +EXPORT_SYMBOL vmlinux 0x781c6350 netif_carrier_off +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785787cd clear_inode +EXPORT_SYMBOL vmlinux 0x7873d784 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x78764f4e pv_irq_ops +EXPORT_SYMBOL vmlinux 0x7877dc4d kmem_cache_free +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x789bdca3 seq_printf +EXPORT_SYMBOL vmlinux 0x78bb3e24 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0x78c77307 put_io_context +EXPORT_SYMBOL vmlinux 0x78c8a2f6 inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x79068fda acpi_install_method +EXPORT_SYMBOL vmlinux 0x79144acb bio_sector_offset +EXPORT_SYMBOL vmlinux 0x79144edd i2c_transfer +EXPORT_SYMBOL vmlinux 0x7936c354 blk_rq_init +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7976f918 mapping_tagged +EXPORT_SYMBOL vmlinux 0x797ae2fb tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79945d9f proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x79950b49 dquot_destroy +EXPORT_SYMBOL vmlinux 0x79a06bc6 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x79a38e61 ___ratelimit +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79da890b ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x79f78649 fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a36d966 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a6668ba __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0x7aa038aa write_one_page +EXPORT_SYMBOL vmlinux 0x7aa4ac71 set_pages_array_wc +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ac8e142 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x7acb5471 ll_rw_block +EXPORT_SYMBOL vmlinux 0x7add198f search_binary_handler +EXPORT_SYMBOL vmlinux 0x7aebceec user_path_create +EXPORT_SYMBOL vmlinux 0x7aec9089 clear_user +EXPORT_SYMBOL vmlinux 0x7aecb48b dev_disable_lro +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b07b562 journal_errno +EXPORT_SYMBOL vmlinux 0x7b0c84c4 acpi_remove_table_handler +EXPORT_SYMBOL vmlinux 0x7b2112e0 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b48ef4a pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x7b4d402e cad_pid +EXPORT_SYMBOL vmlinux 0x7b52a859 wrmsr_safe_on_cpu +EXPORT_SYMBOL vmlinux 0x7b56bd05 acpi_lid_notifier_register +EXPORT_SYMBOL vmlinux 0x7b65ac91 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x7b9a6116 intel_agp_enabled +EXPORT_SYMBOL vmlinux 0x7bb08eed find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x7bdd428c generic_write_sync +EXPORT_SYMBOL vmlinux 0x7beb7969 proc_symlink +EXPORT_SYMBOL vmlinux 0x7c09d6fc pipe_to_file +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c194772 blk_start_request +EXPORT_SYMBOL vmlinux 0x7c210af0 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x7c2aefd0 input_register_device +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c41a3cf blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c4b6fad mb_cache_create +EXPORT_SYMBOL vmlinux 0x7c503e82 pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c838f9a free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c980713 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x7ca46555 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0x7ca811d1 noop_llseek +EXPORT_SYMBOL vmlinux 0x7cb14e66 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cb50da2 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x7cd1c10c skb_clone +EXPORT_SYMBOL vmlinux 0x7cd23289 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x7ce91982 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x7ced7193 dev_remove_pack +EXPORT_SYMBOL vmlinux 0x7cedc658 idr_remove_all +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7d0030f3 tcf_hash_create +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d12a14f dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x7d197e36 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x7d227942 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x7d2767ca __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x7d4cb089 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x7d55d124 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x7d5c595e set_pages_wb +EXPORT_SYMBOL vmlinux 0x7d5ea23b kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x7d6895ad usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x7d8a2ff5 generic_readlink +EXPORT_SYMBOL vmlinux 0x7d94f746 acpi_os_write_port +EXPORT_SYMBOL vmlinux 0x7da34c8b netlink_set_err +EXPORT_SYMBOL vmlinux 0x7dbc2e57 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7dfe9ac1 console_start +EXPORT_SYMBOL vmlinux 0x7e11e053 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e57e843 __elv_add_request +EXPORT_SYMBOL vmlinux 0x7e5af7a9 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x7e9ebb05 kernel_thread +EXPORT_SYMBOL vmlinux 0x7eb7f345 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x7ec8f9a7 x86_hyper_vmware +EXPORT_SYMBOL vmlinux 0x7edd4caf twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x7ee50661 inet_ioctl +EXPORT_SYMBOL vmlinux 0x7f046a22 stop_tty +EXPORT_SYMBOL vmlinux 0x7f04ffc4 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0x7f18b194 kacpi_hotplug_wq +EXPORT_SYMBOL vmlinux 0x7f18b27e find_get_page +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f26d1f7 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x7f4b03f7 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x7f51f2d3 d_genocide +EXPORT_SYMBOL vmlinux 0x7f658e80 _raw_write_lock +EXPORT_SYMBOL vmlinux 0x7f6595a0 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x7f732258 set_binfmt +EXPORT_SYMBOL vmlinux 0x7f766df8 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x7f8b6339 amd_iommu_flush_tlb +EXPORT_SYMBOL vmlinux 0x7f9a6932 bio_free +EXPORT_SYMBOL vmlinux 0x7f9f3ed3 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x7fb18c2b mount_pseudo +EXPORT_SYMBOL vmlinux 0x7fc6bc9f fib_default_rule_add +EXPORT_SYMBOL vmlinux 0x7fde6ac7 backlight_device_register +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7ff21691 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x8022fda1 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x80381f52 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0x80434c19 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x8045f97f init_special_inode +EXPORT_SYMBOL vmlinux 0x8064e993 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x8088900f fddi_type_trans +EXPORT_SYMBOL vmlinux 0x809f7dae simple_write_begin +EXPORT_SYMBOL vmlinux 0x80a462b5 unlock_super +EXPORT_SYMBOL vmlinux 0x80cd27e2 dput +EXPORT_SYMBOL vmlinux 0x80e07abc seq_bitmap +EXPORT_SYMBOL vmlinux 0x80f38422 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x810f6499 pci_set_power_state +EXPORT_SYMBOL vmlinux 0x81266825 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x813084a4 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x81317c26 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x8142fa0e inet_register_protosw +EXPORT_SYMBOL vmlinux 0x81472677 acpi_get_table +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x8150899b nf_log_unregister +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x8159eccc register_netdevice +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x815e9c47 block_commit_write +EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x816ad192 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x817a0a6c kthread_bind +EXPORT_SYMBOL vmlinux 0x81a153ce locks_remove_posix +EXPORT_SYMBOL vmlinux 0x81a9d8be lock_rename +EXPORT_SYMBOL vmlinux 0x81cce72a blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x81d10f5f trace_seq_putc +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81de65f2 dquot_file_open +EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x81fa7188 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x81fd720b xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8212721d xenbus_dev_request_and_reply +EXPORT_SYMBOL vmlinux 0x821e2969 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x8223044d dev_load +EXPORT_SYMBOL vmlinux 0x8241cc8b pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0x824c3063 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8280fa07 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x829d4e08 rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x82a3dc33 amd_iommu_flush_page +EXPORT_SYMBOL vmlinux 0x82a54602 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82c4fd83 sk_run_filter +EXPORT_SYMBOL vmlinux 0x82c6b5e0 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x82f5fc9a inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x82ff841d register_xen_selfballooning +EXPORT_SYMBOL vmlinux 0x830b4c93 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x830e547b ioremap_prot +EXPORT_SYMBOL vmlinux 0x833c03aa acpi_enable_all_runtime_gpes +EXPORT_SYMBOL vmlinux 0x8345c45d cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x8373d94c pci_enable_ido +EXPORT_SYMBOL vmlinux 0x837c4424 get_fs_type +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x83887350 max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83b954ba scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83e22f1e dev_close +EXPORT_SYMBOL vmlinux 0x84060081 xen_poll_irq_timeout +EXPORT_SYMBOL vmlinux 0x84104a33 inode_set_bytes +EXPORT_SYMBOL vmlinux 0x8417f512 acpi_update_all_gpes +EXPORT_SYMBOL vmlinux 0x841c0e33 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x847dc5fb genphy_update_link +EXPORT_SYMBOL vmlinux 0x848ee70c idr_remove +EXPORT_SYMBOL vmlinux 0x8490a655 pci_restore_state +EXPORT_SYMBOL vmlinux 0x84a3e2cb __bforget +EXPORT_SYMBOL vmlinux 0x84ae99f4 vmtruncate +EXPORT_SYMBOL vmlinux 0x84b7fbb6 generic_fillattr +EXPORT_SYMBOL vmlinux 0x84c3d602 input_unregister_device +EXPORT_SYMBOL vmlinux 0x84dad89c del_gendisk +EXPORT_SYMBOL vmlinux 0x84fc4e42 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x84fd8d8f xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x85206512 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x85491a23 acpi_get_hp_hw_control_from_firmware +EXPORT_SYMBOL vmlinux 0x855413f8 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x8556df7a gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x855e1afb jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857437d9 input_grab_device +EXPORT_SYMBOL vmlinux 0x85822d0d inode_dio_done +EXPORT_SYMBOL vmlinux 0x859463aa seq_release_private +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f94dcf phy_attach +EXPORT_SYMBOL vmlinux 0x85fd75fb seq_release +EXPORT_SYMBOL vmlinux 0x862542fc bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865b76fd tty_port_close +EXPORT_SYMBOL vmlinux 0x86624f0b blk_free_tags +EXPORT_SYMBOL vmlinux 0x86637de8 ilookup +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a9a447 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x86b98441 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x86bc2c9c skb_unlink +EXPORT_SYMBOL vmlinux 0x86bfae20 acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x86d5255f _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0x86ddf603 nf_setsockopt +EXPORT_SYMBOL vmlinux 0x86df1509 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x86e28d05 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x872b5c4b swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0x87334d7d file_update_time +EXPORT_SYMBOL vmlinux 0x875e2cdf lock_may_read +EXPORT_SYMBOL vmlinux 0x87627954 kill_fasync +EXPORT_SYMBOL vmlinux 0x876dafc3 ec_write +EXPORT_SYMBOL vmlinux 0x87776894 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87aaddf8 wrmsr_safe_regs_on_cpu +EXPORT_SYMBOL vmlinux 0x87b8bfed dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x87c56201 load_nls +EXPORT_SYMBOL vmlinux 0x87c58a96 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x87d8f540 mnt_unpin +EXPORT_SYMBOL vmlinux 0x880f8bb2 do_splice_to +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x8853eee1 input_release_device +EXPORT_SYMBOL vmlinux 0x888738c5 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x88970333 mount_single +EXPORT_SYMBOL vmlinux 0x88a8eafb locks_init_lock +EXPORT_SYMBOL vmlinux 0x88b04e39 __register_nmi_handler +EXPORT_SYMBOL vmlinux 0x88bc899e xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x88c0912b submit_bh +EXPORT_SYMBOL vmlinux 0x88e6837d skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x88f00d18 lg_global_unlock +EXPORT_SYMBOL vmlinux 0x88f99c22 skb_checksum +EXPORT_SYMBOL vmlinux 0x891535b2 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x89203100 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x8925751e sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x892b26a0 set_memory_nx +EXPORT_SYMBOL vmlinux 0x895dcddb skb_queue_head +EXPORT_SYMBOL vmlinux 0x89743205 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89790c23 __free_pages +EXPORT_SYMBOL vmlinux 0x898a0b8b agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x89939ed7 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x8997efe9 journal_flush +EXPORT_SYMBOL vmlinux 0x8998598d inet_frags_init +EXPORT_SYMBOL vmlinux 0x89a3c89f find_lock_page +EXPORT_SYMBOL vmlinux 0x89a7c934 tty_throttle +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89d38b0b datagram_poll +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89d66978 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x89e362e5 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x8a09f996 sock_create_kern +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a1ae636 mutex_trylock +EXPORT_SYMBOL vmlinux 0x8a1b61fe blk_fetch_request +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a4b4fe1 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a90a4d3 d_move +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa4295c skb_queue_purge +EXPORT_SYMBOL vmlinux 0x8aae575e bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x8ac22ad6 blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8adae7ec pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x8add5ce0 i2c_release_client +EXPORT_SYMBOL vmlinux 0x8afd89b6 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x8b0de954 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b1ce044 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x8b1e474f dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x8b2056ce pnp_possible_config +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b4aa869 scsi_print_result +EXPORT_SYMBOL vmlinux 0x8b50d6ab register_sysctl +EXPORT_SYMBOL vmlinux 0x8b5f4a2e IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b6f458a kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x8b7e2c57 ilookup5 +EXPORT_SYMBOL vmlinux 0x8b80773d tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup +EXPORT_SYMBOL vmlinux 0x8ba16467 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x8ba395a0 tty_vhangup +EXPORT_SYMBOL vmlinux 0x8bab58f8 km_state_expired +EXPORT_SYMBOL vmlinux 0x8bbc6086 phy_find_first +EXPORT_SYMBOL vmlinux 0x8bbf98e3 i2c_clients_command +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c29a0d2 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x8c321bc2 uart_resume_port +EXPORT_SYMBOL vmlinux 0x8c34070f net_dma_find_channel +EXPORT_SYMBOL vmlinux 0x8c721a8b scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x8c7c488e tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x8c7ef863 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x8c8aad56 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x8cb2adc3 idr_for_each +EXPORT_SYMBOL vmlinux 0x8cb33a3d netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8cd500bf netif_receive_skb +EXPORT_SYMBOL vmlinux 0x8cda8029 xen_clear_irq_pending +EXPORT_SYMBOL vmlinux 0x8d0e5d38 journal_load +EXPORT_SYMBOL vmlinux 0x8d286fba padata_free +EXPORT_SYMBOL vmlinux 0x8d33489d filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d5c9379 mmc_release_host +EXPORT_SYMBOL vmlinux 0x8d6906d4 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x8d6a7916 find_inode_number +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 0x8db98a2f pci_set_master +EXPORT_SYMBOL vmlinux 0x8dca9ef3 free_xenballooned_pages +EXPORT_SYMBOL vmlinux 0x8ddb8b73 misc_deregister +EXPORT_SYMBOL vmlinux 0x8de7a46a dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8dffdb4e blk_start_queue +EXPORT_SYMBOL vmlinux 0x8e002cda acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0x8e095b31 udp_seq_open +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e36f763 bio_integrity_free +EXPORT_SYMBOL vmlinux 0x8e386d20 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x8e6c7bd3 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x8eabf5b6 names_cachep +EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler +EXPORT_SYMBOL vmlinux 0x8eb132d1 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x8ede2cae copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x8ede6778 vfs_fsync +EXPORT_SYMBOL vmlinux 0x8f0a5e51 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x8f1563c8 mdiobus_free +EXPORT_SYMBOL vmlinux 0x8f1b1d35 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus +EXPORT_SYMBOL vmlinux 0x8f311109 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4da837 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x8f52a40d kobject_set_name +EXPORT_SYMBOL vmlinux 0x8f55b213 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x8f681f4c devm_gpio_request +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f719cfe textsearch_unregister +EXPORT_SYMBOL vmlinux 0x8f9037a0 cdrom_release +EXPORT_SYMBOL vmlinux 0x8f9644be blk_make_request +EXPORT_SYMBOL vmlinux 0x8f9c199c __get_user_2 +EXPORT_SYMBOL vmlinux 0x8fba1a79 i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x8fe429db ip_route_input_common +EXPORT_SYMBOL vmlinux 0x904409c6 acpi_set_firmware_waking_vector +EXPORT_SYMBOL vmlinux 0x904eab8f unregister_key_type +EXPORT_SYMBOL vmlinux 0x90819a30 release_pages +EXPORT_SYMBOL vmlinux 0x9090a023 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x90a1601f dmi_check_system +EXPORT_SYMBOL vmlinux 0x90abca7d netdev_notice +EXPORT_SYMBOL vmlinux 0x90d5ad71 lock_fb_info +EXPORT_SYMBOL vmlinux 0x90e5d0b8 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x90f7c0e1 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x9105e3c3 clear_nlink +EXPORT_SYMBOL vmlinux 0x913a3647 uart_match_port +EXPORT_SYMBOL vmlinux 0x913d4f63 blk_queue_alignment_offset +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 0x9167d823 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9174b90d bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x9193265a netif_device_attach +EXPORT_SYMBOL vmlinux 0x9197b6e0 pci_map_rom +EXPORT_SYMBOL vmlinux 0x91a3c3f7 dev_crit +EXPORT_SYMBOL vmlinux 0x91a3cdf4 down_timeout +EXPORT_SYMBOL vmlinux 0x91ac63b8 tc_classify_compat +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91b1c90e gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0x91b72d5a xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x91ccb415 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x91e0610d dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x91e1edaa tty_name +EXPORT_SYMBOL vmlinux 0x91f04916 try_module_get +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92449e14 dev_get_stats +EXPORT_SYMBOL vmlinux 0x92659baf vc_cons +EXPORT_SYMBOL vmlinux 0x9276b9c9 create_proc_entry +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x9297e8ae mutex_unlock +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d9adce pagecache_write_end +EXPORT_SYMBOL vmlinux 0x92e286e2 simple_statfs +EXPORT_SYMBOL vmlinux 0x92f9d191 __frontswap_store +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9327f5ce _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x935b9b27 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x93641590 pci_get_class +EXPORT_SYMBOL vmlinux 0x9388c64c destroy_EII_client +EXPORT_SYMBOL vmlinux 0x93945fe8 tcf_register_action +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93bb93b9 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x93befa3f try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x93c651be acpi_info +EXPORT_SYMBOL vmlinux 0x93d80e4b shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0x93f3e52b acpi_extract_package +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x940f80ca cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x942dc435 module_layout +EXPORT_SYMBOL vmlinux 0x94517f4e blkdev_fsync +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b79094 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x94c31ead netdev_alert +EXPORT_SYMBOL vmlinux 0x94f393b4 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x94faaad2 nf_register_hook +EXPORT_SYMBOL vmlinux 0x9512bea8 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x9518b623 register_shrinker +EXPORT_SYMBOL vmlinux 0x95207d46 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x952dbb3d lro_receive_skb +EXPORT_SYMBOL vmlinux 0x95324ce0 neigh_compat_output +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x95435056 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x9550762d jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x957b9de0 ata_port_printk +EXPORT_SYMBOL vmlinux 0x957f9287 acpi_walk_resources +EXPORT_SYMBOL vmlinux 0x9588d2b7 dev_addr_flush +EXPORT_SYMBOL vmlinux 0x95a38344 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0x95b791f1 amd_iommu_enable_device_erratum +EXPORT_SYMBOL vmlinux 0x95c076ff kill_pgrp +EXPORT_SYMBOL vmlinux 0x95eca464 setup_new_exec +EXPORT_SYMBOL vmlinux 0x95f89a33 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x96018d15 blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x960619e6 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x961fc683 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x96349c37 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x9644a16d dump_write +EXPORT_SYMBOL vmlinux 0x96544c99 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x9665c92f padata_start +EXPORT_SYMBOL vmlinux 0x96876c69 __lock_buffer +EXPORT_SYMBOL vmlinux 0x969c0f35 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96b92e3e pci_iounmap +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96f513b8 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x9700d1ae agp_free_memory +EXPORT_SYMBOL vmlinux 0x97062f18 nla_put +EXPORT_SYMBOL vmlinux 0x972301ea netlink_unicast +EXPORT_SYMBOL vmlinux 0x9725b589 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x974ee216 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x974f9130 __ps2_command +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x9767d3e2 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0x976c8080 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x9770a549 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x97835398 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9792a0c3 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x97992d36 seq_open_private +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97a0e5d1 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0x97b0a09b d_add_ci +EXPORT_SYMBOL vmlinux 0x97b92a87 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x97c7f7ce proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x97de0ddd acpi_install_gpe_block +EXPORT_SYMBOL vmlinux 0x97e0adf8 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x97e4db62 dma_pool_create +EXPORT_SYMBOL vmlinux 0x97eab4b6 inet6_release +EXPORT_SYMBOL vmlinux 0x98103485 mpage_readpages +EXPORT_SYMBOL vmlinux 0x9820b644 warn_slowpath_fmt_taint +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x985efd58 tcp_prot +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x988dbda5 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x988ed85d set_memory_x +EXPORT_SYMBOL vmlinux 0x98d36d99 set_page_dirty +EXPORT_SYMBOL vmlinux 0x98dcc231 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99072d91 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x99441841 twl6040_power +EXPORT_SYMBOL vmlinux 0x994761ec i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995f63ce ppp_input +EXPORT_SYMBOL vmlinux 0x99742525 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x99799217 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x9984c8c2 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999af8fb xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a2343b mnt_pin +EXPORT_SYMBOL vmlinux 0x99acc5c8 bd_set_size +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map +EXPORT_SYMBOL vmlinux 0x99fb8084 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x9a006f62 pci_target_state +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a3e1eef generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x9a537c99 idr_pre_get +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a761620 vfs_getattr +EXPORT_SYMBOL vmlinux 0x9a7c952d iput +EXPORT_SYMBOL vmlinux 0x9a9b96a7 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x9a9be107 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x9aaa26b3 devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x9ab053b8 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x9ab2a7ab acpi_get_physical_device +EXPORT_SYMBOL vmlinux 0x9ac0f119 sk_stop_timer +EXPORT_SYMBOL vmlinux 0x9ad1aef1 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x9adb3ded tty_unregister_device +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b1820ee __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9b31c6ea mpage_readpage +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3eb36c xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x9b40c772 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0x9b5d1a3c ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0x9b6fff93 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x9b75cb81 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x9b7e1c39 tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x9b885d46 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba917d3 eth_change_mtu +EXPORT_SYMBOL vmlinux 0x9bcde527 vfs_readdir +EXPORT_SYMBOL vmlinux 0x9bfc609b journal_dirty_data +EXPORT_SYMBOL vmlinux 0x9c0a870d d_path +EXPORT_SYMBOL vmlinux 0x9c249adb __sk_dst_check +EXPORT_SYMBOL vmlinux 0x9c3fae63 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x9c46d06b gen_new_estimator +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c5a73e9 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c71a3f3 security_path_chmod +EXPORT_SYMBOL vmlinux 0x9cab5a46 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cf94d9e acpi_get_physical_device_location +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d101aaa misc_register +EXPORT_SYMBOL vmlinux 0x9d1a5e3a __memcpy +EXPORT_SYMBOL vmlinux 0x9d208c01 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x9d279b4b twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x9d33ef5e acpi_enable +EXPORT_SYMBOL vmlinux 0x9d350119 bio_add_page +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d67e85c tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x9d6dbebd kobject_init +EXPORT_SYMBOL vmlinux 0x9d946834 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x9d94beaa max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x9dbc5359 keyring_clear +EXPORT_SYMBOL vmlinux 0x9dc7e179 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x9dc95338 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x9dcfe0ac alloc_fcdev +EXPORT_SYMBOL vmlinux 0x9ded188e kobject_del +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e29f85d security_path_link +EXPORT_SYMBOL vmlinux 0x9e325f96 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x9e363b6b acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0x9e43398b scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x9e452987 alloc_disk +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read +EXPORT_SYMBOL vmlinux 0x9e6bcfeb jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x9e7884fe pci_enable_msix +EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay +EXPORT_SYMBOL vmlinux 0x9e7f9a45 generic_file_mmap +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebc1a72 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ebdf059 x86_hyper +EXPORT_SYMBOL vmlinux 0x9f16b3e2 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2e7b69 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x9f37af20 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f674bc0 put_tty_driver +EXPORT_SYMBOL vmlinux 0x9f6e19ab mem_section +EXPORT_SYMBOL vmlinux 0x9f6e8b04 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x9f74bff9 page_put_link +EXPORT_SYMBOL vmlinux 0x9f7b813c open_exec +EXPORT_SYMBOL vmlinux 0x9f912df2 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ffc219a ipv4_specific +EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed +EXPORT_SYMBOL vmlinux 0xa018d952 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0xa0274cae zero_fill_bio +EXPORT_SYMBOL vmlinux 0xa03b2f71 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06d590f unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa0920857 arp_xmit +EXPORT_SYMBOL vmlinux 0xa09956db blk_run_queue +EXPORT_SYMBOL vmlinux 0xa0a6e853 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xa0ad336a tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d003e7 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa0ff74d6 udp_memory_allocated +EXPORT_SYMBOL vmlinux 0xa1060b63 md_register_thread +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa109688a generic_ro_fops +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa1441b0c tcp_setsockopt +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1502765 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xa161a6d9 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0xa16ea880 blk_register_region +EXPORT_SYMBOL vmlinux 0xa170b6bb dquot_alloc +EXPORT_SYMBOL vmlinux 0xa1810a68 generic_write_checks +EXPORT_SYMBOL vmlinux 0xa1a09107 fifo_set_limit +EXPORT_SYMBOL vmlinux 0xa1b37377 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c32fcd blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c89b8b bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xa1e5302d path_get +EXPORT_SYMBOL vmlinux 0xa1e8b8be dev_activate +EXPORT_SYMBOL vmlinux 0xa1ec3a01 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa22cac68 ip6_frag_init +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa252417d scsi_register +EXPORT_SYMBOL vmlinux 0xa27146c7 vga_get +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a5a6eb ps2_init +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2b9d6af __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0xa2bdec34 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0xa2bf22e7 security_path_mknod +EXPORT_SYMBOL vmlinux 0xa2c393d9 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xa2c52810 serial8250_register_port +EXPORT_SYMBOL vmlinux 0xa2cae00a pipe_lock +EXPORT_SYMBOL vmlinux 0xa2da8711 set_pages_x +EXPORT_SYMBOL vmlinux 0xa2e429a9 kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f60216 sock_sendmsg +EXPORT_SYMBOL vmlinux 0xa309d5f7 security_path_chown +EXPORT_SYMBOL vmlinux 0xa3135c2f xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xa31807da get_user_pages +EXPORT_SYMBOL vmlinux 0xa31bcde0 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xa3225b03 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xa3313886 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa350a8f8 set_memory_array_uc +EXPORT_SYMBOL vmlinux 0xa355c8d0 ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa35f765a pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xa38a5d94 poll_initwait +EXPORT_SYMBOL vmlinux 0xa38e5852 tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xa390ed07 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa39cff96 pci_disable_msix +EXPORT_SYMBOL vmlinux 0xa3a608f5 find_or_create_page +EXPORT_SYMBOL vmlinux 0xa3a77c69 down_read_trylock +EXPORT_SYMBOL vmlinux 0xa3caddc2 xfrm_lookup +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa43985ff vfs_link +EXPORT_SYMBOL vmlinux 0xa4468f66 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xa44fa7b5 mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa4573f40 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0xa461a771 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa488011d check_disk_change +EXPORT_SYMBOL vmlinux 0xa4a7443a compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0xa4ab05c0 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0xa4b0214e scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xa4b073bc alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4de7ba1 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0xa4e5c2b0 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xa4e7d0a4 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0xa4eeee2e cfb_copyarea +EXPORT_SYMBOL vmlinux 0xa51893de mempool_create_node +EXPORT_SYMBOL vmlinux 0xa51df2b4 down_killable +EXPORT_SYMBOL vmlinux 0xa546cecc input_register_handle +EXPORT_SYMBOL vmlinux 0xa56e56bc inode_init_always +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa583e2e6 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xa589985e security_inode_readlink +EXPORT_SYMBOL vmlinux 0xa58a3166 lg_local_lock +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a7ba32 dma_supported +EXPORT_SYMBOL vmlinux 0xa5b99789 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xa5c7183c jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xa5d0bfbe tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xa5e4f65c __next_cpu_nr +EXPORT_SYMBOL vmlinux 0xa5e9d714 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0xa5f09d33 pci_iomap +EXPORT_SYMBOL vmlinux 0xa5f71931 alloc_fddidev +EXPORT_SYMBOL vmlinux 0xa6128285 set_groups +EXPORT_SYMBOL vmlinux 0xa61d0ece write_inode_now +EXPORT_SYMBOL vmlinux 0xa62274c7 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xa62a827f tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xa6332864 mmc_request_done +EXPORT_SYMBOL vmlinux 0xa63d85ab slhc_remember +EXPORT_SYMBOL vmlinux 0xa6486137 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xa65a58fb pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa673fc4f pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6a4e89e set_bh_page +EXPORT_SYMBOL vmlinux 0xa6a7c9ec skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xa6be758b nobh_writepage +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa705457c tty_hangup +EXPORT_SYMBOL vmlinux 0xa70757ab inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xa70762a7 kernel_connect +EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi +EXPORT_SYMBOL vmlinux 0xa7168595 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa74d8538 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xa75b00f9 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xa769c497 max8998_read_reg +EXPORT_SYMBOL vmlinux 0xa78aac18 dquot_quota_on +EXPORT_SYMBOL vmlinux 0xa7b6f394 register_gifconf +EXPORT_SYMBOL vmlinux 0xa7fa7d42 dev_set_group +EXPORT_SYMBOL vmlinux 0xa8118d46 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xa816c525 schedule_work_on +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa841bb03 napi_get_frags +EXPORT_SYMBOL vmlinux 0xa84b9973 arch_debugfs_dir +EXPORT_SYMBOL vmlinux 0xa85d6897 intel_gtt_get +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa874522d sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xa89a1949 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8b6d7e2 compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xa8d68abd acpi_warning +EXPORT_SYMBOL vmlinux 0xa8ee357c blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa906dac6 simple_transaction_release +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa91b5561 acpi_video_backlight_support +EXPORT_SYMBOL vmlinux 0xa92fc284 freeze_bdev +EXPORT_SYMBOL vmlinux 0xa933b0da dev_emerg +EXPORT_SYMBOL vmlinux 0xa96fe422 seq_write +EXPORT_SYMBOL vmlinux 0xa9778883 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xa9794f6a phy_detach +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa9a8d044 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xa9bd2676 __vmalloc +EXPORT_SYMBOL vmlinux 0xa9c1b627 intel_gtt_insert_sg_entries +EXPORT_SYMBOL vmlinux 0xa9c22c00 d_alloc +EXPORT_SYMBOL vmlinux 0xaa9357ab mmc_start_req +EXPORT_SYMBOL vmlinux 0xaad6c978 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaade4c7a agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0xaae8ab0e acpi_bus_power_manageable +EXPORT_SYMBOL vmlinux 0xaaf45875 acpi_lid_notifier_unregister +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab2abddf dma_spin_lock +EXPORT_SYMBOL vmlinux 0xab331b2b eth_mac_addr +EXPORT_SYMBOL vmlinux 0xab5bb057 __find_get_block +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 0xab8944ab max8925_set_bits +EXPORT_SYMBOL vmlinux 0xab8de641 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0xaba303b9 ip_getsockopt +EXPORT_SYMBOL vmlinux 0xaba7e55a jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xaba8bd75 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xabbb301b insert_inode_locked +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabdde95b neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xabe118cf call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xabe3184d atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xabf1b242 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac14fe9c km_policy_notify +EXPORT_SYMBOL vmlinux 0xac3952d0 qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0xac572c94 netif_napi_add +EXPORT_SYMBOL vmlinux 0xac573cd1 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xac58ea5e acpi_unload_table_id +EXPORT_SYMBOL vmlinux 0xac608055 idr_init +EXPORT_SYMBOL vmlinux 0xac63afd7 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac795291 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0xac91b704 force_sig +EXPORT_SYMBOL vmlinux 0xac96ec0d clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xacb120b5 bdev_read_only +EXPORT_SYMBOL vmlinux 0xacbf713a iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd8deff pci_set_ltr +EXPORT_SYMBOL vmlinux 0xacdac144 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad01744f kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad13c689 acpi_os_execute +EXPORT_SYMBOL vmlinux 0xad164875 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xad184a7a iget_failed +EXPORT_SYMBOL vmlinux 0xad1eda56 amd_iommu_domain_direct_map +EXPORT_SYMBOL vmlinux 0xad2d0195 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xad3cdb2e d_find_any_alias +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad583761 input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0xad5d4f05 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xad648a6a i2c_use_client +EXPORT_SYMBOL vmlinux 0xad67bab3 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad9ab8f9 __seq_open_private +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadaabe1b pv_lock_ops +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc2ea7c padata_do_serial +EXPORT_SYMBOL vmlinux 0xae01aa5d inet_frags_fini +EXPORT_SYMBOL vmlinux 0xae1a19b5 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xae2369f5 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0xae41661e cdrom_check_events +EXPORT_SYMBOL vmlinux 0xae5b5fd4 cdrom_open +EXPORT_SYMBOL vmlinux 0xae5ef29d gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xae641e83 tty_write_room +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae77f3f6 __netif_schedule +EXPORT_SYMBOL vmlinux 0xae7ca990 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xae83c10d unlock_buffer +EXPORT_SYMBOL vmlinux 0xaea976a8 acpi_check_resource_conflict +EXPORT_SYMBOL vmlinux 0xaeb717e1 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xaecb8ed1 acpi_bus_get_device +EXPORT_SYMBOL vmlinux 0xaefd95fa fb_find_mode +EXPORT_SYMBOL vmlinux 0xaf1235d6 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xaf1c262f bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf611eac amd_nb_misc_ids +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafa15fb3 journal_forget +EXPORT_SYMBOL vmlinux 0xafac009a scsi_remove_target +EXPORT_SYMBOL vmlinux 0xafae38f8 d_splice_alias +EXPORT_SYMBOL vmlinux 0xafb8c6ff copy_user_generic_string +EXPORT_SYMBOL vmlinux 0xafcd3961 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafea19dc devm_ioremap +EXPORT_SYMBOL vmlinux 0xafef8fa9 register_memory_notifier +EXPORT_SYMBOL vmlinux 0xb01ac409 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb08037d7 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xb0967ed0 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xb0a8fd0a intel_gtt_unmap_memory +EXPORT_SYMBOL vmlinux 0xb0ac1dd0 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xb0adc9e6 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0d785ab vfs_create +EXPORT_SYMBOL vmlinux 0xb0df134b follow_pfn +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0e602eb memmove +EXPORT_SYMBOL vmlinux 0xb10381e6 vga_switcheroo_unregister_client +EXPORT_SYMBOL vmlinux 0xb110bb35 unlock_page +EXPORT_SYMBOL vmlinux 0xb11d7002 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on +EXPORT_SYMBOL vmlinux 0xb128bafc d_invalidate +EXPORT_SYMBOL vmlinux 0xb1303e96 __blk_end_request +EXPORT_SYMBOL vmlinux 0xb138d0bf dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1a46428 bio_phys_segments +EXPORT_SYMBOL vmlinux 0xb1ba17af scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb1c2435b dcbnl_ieee_notify +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 0xb1e0f06c udplite_prot +EXPORT_SYMBOL vmlinux 0xb20135f3 arp_find +EXPORT_SYMBOL vmlinux 0xb20ecf88 acpi_run_osc +EXPORT_SYMBOL vmlinux 0xb211544c vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xb21475ef rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xb217eee9 inode_permission +EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu +EXPORT_SYMBOL vmlinux 0xb220ea03 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xb237cdd6 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xb2636707 __bio_clone +EXPORT_SYMBOL vmlinux 0xb2653461 skb_dequeue +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb2760f5b inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0xb27d9922 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xb2af78d4 tcp_sendpage +EXPORT_SYMBOL vmlinux 0xb2b9dd7f elv_rb_add +EXPORT_SYMBOL vmlinux 0xb2bcce9f tcp_disconnect +EXPORT_SYMBOL vmlinux 0xb2bdab06 sync_inode +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c8274d new_inode +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e08e7b lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0xb2ee2d5d tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove +EXPORT_SYMBOL vmlinux 0xb2fd5ceb __put_user_4 +EXPORT_SYMBOL vmlinux 0xb3020642 vm_mmap +EXPORT_SYMBOL vmlinux 0xb3284531 acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34d4c2e acpi_terminate +EXPORT_SYMBOL vmlinux 0xb34d61a1 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb352177e find_first_bit +EXPORT_SYMBOL vmlinux 0xb394b2a3 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xb39bf648 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xb3efa0c4 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xb3f3fd7d scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0xb40beb96 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0xb413fc89 netlink_ack +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4390f9a mcount +EXPORT_SYMBOL vmlinux 0xb444ea20 vga_switcheroo_client_fb_set +EXPORT_SYMBOL vmlinux 0xb45fd755 pci_release_regions +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4ad84d4 d_prune_aliases +EXPORT_SYMBOL vmlinux 0xb4b7b067 clocksource_unregister +EXPORT_SYMBOL vmlinux 0xb4d826ab free_buffer_head +EXPORT_SYMBOL vmlinux 0xb4dca2ef tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0xb4f02b76 cdev_del +EXPORT_SYMBOL vmlinux 0xb4f2fd44 __ip_dev_find +EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb5685e93 seq_read +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57b5a36 ip_defrag +EXPORT_SYMBOL vmlinux 0xb5835a34 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5ca1c46 slhc_free +EXPORT_SYMBOL vmlinux 0xb5d31349 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xb5dcab5b remove_wait_queue +EXPORT_SYMBOL vmlinux 0xb5ee8bfc sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb64ad67e kern_path_create +EXPORT_SYMBOL vmlinux 0xb653b235 vmap +EXPORT_SYMBOL vmlinux 0xb65add2f i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xb65bc5c9 dquot_resume +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6869993 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb699750e phy_device_free +EXPORT_SYMBOL vmlinux 0xb69c954c kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6cbe886 acpi_get_node +EXPORT_SYMBOL vmlinux 0xb6d57cbb dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0xb714e5e7 __napi_schedule +EXPORT_SYMBOL vmlinux 0xb73c7a1b request_firmware +EXPORT_SYMBOL vmlinux 0xb73ddafa jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0xb740bbe4 igrab +EXPORT_SYMBOL vmlinux 0xb74cb94a scsi_host_alloc +EXPORT_SYMBOL vmlinux 0xb758b225 acpi_disable_event +EXPORT_SYMBOL vmlinux 0xb75f1bfc put_disk +EXPORT_SYMBOL vmlinux 0xb799c33d softnet_data +EXPORT_SYMBOL vmlinux 0xb7be63e7 journal_set_features +EXPORT_SYMBOL vmlinux 0xb7f47feb inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xb812553a skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0xb822afff km_report +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb84a6b5c jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xb84dc231 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb8712be9 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xb8823042 security_d_instantiate +EXPORT_SYMBOL vmlinux 0xb883c63b poll_freewait +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8a6de96 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xb8b9c337 dquot_drop +EXPORT_SYMBOL vmlinux 0xb8c30c8c blk_sync_queue +EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 +EXPORT_SYMBOL vmlinux 0xb8fd4861 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb9249d16 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xb940fd0e xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0xb944a671 save_mount_options +EXPORT_SYMBOL vmlinux 0xb94fe443 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xb95fec99 scsi_execute_req +EXPORT_SYMBOL vmlinux 0xb96685ca scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xb96bc9dc ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98b5ba5 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9c966f7 dev_mc_add +EXPORT_SYMBOL vmlinux 0xb9ee83d4 lro_flush_all +EXPORT_SYMBOL vmlinux 0xb9fd2205 add_efi_memmap +EXPORT_SYMBOL vmlinux 0xba2d8594 ec_read +EXPORT_SYMBOL vmlinux 0xba3ceeec journal_start +EXPORT_SYMBOL vmlinux 0xba46d2a9 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba63339c _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xba6a02be neigh_ifdown +EXPORT_SYMBOL vmlinux 0xba7d47c5 pagevec_lookup +EXPORT_SYMBOL vmlinux 0xbaaf28ff pci_claim_resource +EXPORT_SYMBOL vmlinux 0xbac70dd2 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0xbaf7ff44 acpi_bus_start +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb31e2d7 fb_pan_display +EXPORT_SYMBOL vmlinux 0xbb33f1ac inode_change_ok +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb36c49f cdev_init +EXPORT_SYMBOL vmlinux 0xbb3aedf6 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0xbb41c8d9 tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xbb41cdec mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb64b815 bioset_free +EXPORT_SYMBOL vmlinux 0xbb7f05b4 amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0xbb81628d __inet6_hash +EXPORT_SYMBOL vmlinux 0xbb933384 inet_sendpage +EXPORT_SYMBOL vmlinux 0xbb94c5ea ps2_command +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9bf327 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0xbba23cb0 cpu_core_map +EXPORT_SYMBOL vmlinux 0xbba5aeb2 pci_enable_obff +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbc85354 serio_reconnect +EXPORT_SYMBOL vmlinux 0xbbf48b00 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0xbbfcaca5 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xbc03714a register_sysctl_table +EXPORT_SYMBOL vmlinux 0xbc0a606e log_start_commit +EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit +EXPORT_SYMBOL vmlinux 0xbc2978e9 lg_global_lock +EXPORT_SYMBOL vmlinux 0xbc5f1eb1 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xbc6fea41 dev_mc_sync +EXPORT_SYMBOL vmlinux 0xbc8ff92e qdisc_list_del +EXPORT_SYMBOL vmlinux 0xbcaafa11 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbcd8fd67 sock_register +EXPORT_SYMBOL vmlinux 0xbd100793 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xbd1c721f journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xbd2c967a sk_free +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd46922d twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xbd4b5770 inet_sock_destruct +EXPORT_SYMBOL vmlinux 0xbd73ad71 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xbd7e3328 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xbd96903f agp_generic_enable +EXPORT_SYMBOL vmlinux 0xbdaf5b07 acpi_os_read_port +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdc89bea seq_escape +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe07d4f5 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xbe18153d try_wait_for_completion +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe29c0d3 page_symlink +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe32798e commit_creds +EXPORT_SYMBOL vmlinux 0xbe3f6637 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0xbe400e6d blk_peek_request +EXPORT_SYMBOL vmlinux 0xbe5efe6f unregister_md_personality +EXPORT_SYMBOL vmlinux 0xbe83e4ff kset_unregister +EXPORT_SYMBOL vmlinux 0xbe9d464f dev_uc_sync +EXPORT_SYMBOL vmlinux 0xbea2464f i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0xbea6df9d tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xbea7f452 migrate_page +EXPORT_SYMBOL vmlinux 0xbec30d05 x86_match_cpu +EXPORT_SYMBOL vmlinux 0xbed749b9 netdev_crit +EXPORT_SYMBOL vmlinux 0xbee96edb generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbef705a4 arp_invalidate +EXPORT_SYMBOL vmlinux 0xbf052ecc locks_copy_lock +EXPORT_SYMBOL vmlinux 0xbf146162 vm_event_states +EXPORT_SYMBOL vmlinux 0xbf2734e0 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xbf4eff41 pci_disable_ido +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf81e746 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xbf838027 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xbf8b59e2 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfc50ff7 tcp_connect +EXPORT_SYMBOL vmlinux 0xbfc95d8b netlink_broadcast +EXPORT_SYMBOL vmlinux 0xbfe4784c efi +EXPORT_SYMBOL vmlinux 0xbfe84f07 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbffeb34c dquot_free_inode +EXPORT_SYMBOL vmlinux 0xc0020fee set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0xc0127b95 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xc01cf848 _raw_read_lock +EXPORT_SYMBOL vmlinux 0xc026f523 scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xc027cfa6 ip6_route_output +EXPORT_SYMBOL vmlinux 0xc02e4faf blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xc03128e5 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xc049612c md_wakeup_thread +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07aa127 pci_request_region +EXPORT_SYMBOL vmlinux 0xc07d3204 generic_file_open +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0a4dfc8 nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc0e54fbb unlock_new_inode +EXPORT_SYMBOL vmlinux 0xc0fa51b7 pci_scan_slot +EXPORT_SYMBOL vmlinux 0xc114ea9c dquot_disable +EXPORT_SYMBOL vmlinux 0xc115017f dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xc128092b netif_carrier_on +EXPORT_SYMBOL vmlinux 0xc136716c skb_free_datagram +EXPORT_SYMBOL vmlinux 0xc156b3c7 skb_pull +EXPORT_SYMBOL vmlinux 0xc157181a pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xc15b0569 simple_empty +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc178e59e mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xc1794ca0 wake_up_process +EXPORT_SYMBOL vmlinux 0xc18fbb4e __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xc19159fa add_disk +EXPORT_SYMBOL vmlinux 0xc1b6ca47 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1d7d179 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc1fb8103 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xc21f4279 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xc2280fa9 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc23ea654 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc251c862 con_is_bound +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc281f18b jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0xc28770aa netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xc288259d security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2b00bac mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc34416de cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 +EXPORT_SYMBOL vmlinux 0xc3c88704 ata_print_version +EXPORT_SYMBOL vmlinux 0xc3cb428c inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0xc3d0e45f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0xc3fc35f5 idr_find +EXPORT_SYMBOL vmlinux 0xc402cc99 register_acpi_notifier +EXPORT_SYMBOL vmlinux 0xc41931a9 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xc42137d9 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xc446e911 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xc45599ec netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xc4565008 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0xc470d9c3 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xc4797056 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xc479e1a8 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xc483a2d3 register_nls +EXPORT_SYMBOL vmlinux 0xc4926199 dev_uc_del +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc49cbdce amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0xc4d54033 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0xc50bab05 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xc528843e journal_release_buffer +EXPORT_SYMBOL vmlinux 0xc5397021 inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xc54418c9 i2c_master_recv +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc555c983 directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xc55850c2 tcf_hash_search +EXPORT_SYMBOL vmlinux 0xc558530d profile_pc +EXPORT_SYMBOL vmlinux 0xc55f976a pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xc5bbcd78 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5df1d2a mii_link_ok +EXPORT_SYMBOL vmlinux 0xc5e02d03 files_lglock +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc618ba32 current_fs_time +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc64e3102 kernel_read +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc661aecb account_page_writeback +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc669cfa5 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0xc6890ef3 acpi_get_object_info +EXPORT_SYMBOL vmlinux 0xc6a66180 rwsem_wake +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6d1baa4 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc6da54fb mfd_cell_enable +EXPORT_SYMBOL vmlinux 0xc6f56438 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xc70168aa page_follow_link_light +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc708000e blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0xc7124e63 do_SAK +EXPORT_SYMBOL vmlinux 0xc715a848 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0xc71849e0 phy_disconnect +EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL vmlinux 0xc732b59d brioctl_set +EXPORT_SYMBOL vmlinux 0xc735392f d_make_root +EXPORT_SYMBOL vmlinux 0xc73ae91d nf_reinject +EXPORT_SYMBOL vmlinux 0xc7667cbd padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xc76b977f tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0xc76d03bf scsi_device_put +EXPORT_SYMBOL vmlinux 0xc774b9ee genphy_resume +EXPORT_SYMBOL vmlinux 0xc780a732 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc783432f netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c5287 inet_select_addr +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7a68799 genl_register_ops +EXPORT_SYMBOL vmlinux 0xc7a795d2 phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xc7b9e4d2 skb_split +EXPORT_SYMBOL vmlinux 0xc7e41c6c gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xc7e65a8e pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xc848427c sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8d44236 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0xc8dac9ad dump_trace +EXPORT_SYMBOL vmlinux 0xc8dd0c72 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xc8facbe4 netdev_state_change +EXPORT_SYMBOL vmlinux 0xc9232358 journal_get_write_access +EXPORT_SYMBOL vmlinux 0xc94b27c5 __module_get +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc98283df vfs_mknod +EXPORT_SYMBOL vmlinux 0xc98b3dfa filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0xc992a1db balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc9a8d014 napi_frags_finish +EXPORT_SYMBOL vmlinux 0xc9ab2eef acpi_os_wait_events_complete +EXPORT_SYMBOL vmlinux 0xc9c9a52e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0xc9cee5e5 replace_mount_options +EXPORT_SYMBOL vmlinux 0xc9e3079c fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0xca4a593c vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0xca53b917 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca8acc78 acpi_dbg_level +EXPORT_SYMBOL vmlinux 0xca93499e __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xca982c52 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0xcac1e2e9 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xcacf2256 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xcaebfec1 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xcafffb71 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xcb02d005 lro_receive_frags +EXPORT_SYMBOL vmlinux 0xcb17daf2 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xcb1b1c7d __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power +EXPORT_SYMBOL vmlinux 0xcb747def cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xcb7a37aa input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbb048a7 journal_init_inode +EXPORT_SYMBOL vmlinux 0xcbb2bf62 ab3100_event_register +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbe22c6c blk_complete_request +EXPORT_SYMBOL vmlinux 0xcbf74746 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xcc015d4f nf_ip_checksum +EXPORT_SYMBOL vmlinux 0xcc056997 skb_copy_expand +EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL vmlinux 0xcc3135cb set_anon_super +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc49ff22 cont_write_begin +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc573260 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc99e607 blkdev_put +EXPORT_SYMBOL vmlinux 0xccb3fa16 iget5_locked +EXPORT_SYMBOL vmlinux 0xcccc1c73 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xcccfac2a bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd2cefe8 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcd378d3d jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xcd3bc598 __wait_on_bit +EXPORT_SYMBOL vmlinux 0xcd3f383e pci_write_vpd +EXPORT_SYMBOL vmlinux 0xcd62d9a2 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xcd978285 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0xcdae954d dquot_quota_off +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce11477c generic_file_direct_write +EXPORT_SYMBOL vmlinux 0xce11908a key_put +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce31f03e scsi_mode_sense +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 0xce6f0d68 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xceb48c15 inode_needs_sync +EXPORT_SYMBOL vmlinux 0xcee2637e sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL vmlinux 0xcf1d28ab acpi_error +EXPORT_SYMBOL vmlinux 0xcf21d241 __wake_up +EXPORT_SYMBOL vmlinux 0xcf2f550c should_remove_suid +EXPORT_SYMBOL vmlinux 0xcf319c88 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xcf4ae583 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xcf61a64a scm_fp_dup +EXPORT_SYMBOL vmlinux 0xcf6cfe1f msrs_free +EXPORT_SYMBOL vmlinux 0xcf7fcd5f bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0xcf8986e6 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0xcf9eea2c bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xcfc2b52a twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0236057 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xd0298b8b proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xd038f16a blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xd067fc5c proc_dointvec +EXPORT_SYMBOL vmlinux 0xd06f0d85 tty_check_change +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd07b85f5 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xd08197fa acpi_load_tables +EXPORT_SYMBOL vmlinux 0xd084bece scsi_target_resume +EXPORT_SYMBOL vmlinux 0xd08a340e pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd09df97f tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0xd0a059e3 get_phy_device +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0aa55d0 dcb_getapp +EXPORT_SYMBOL vmlinux 0xd0d0aa72 acpi_processor_preregister_performance +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 0xd1119d86 __frontswap_load +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1472061 acpi_pci_register_driver +EXPORT_SYMBOL vmlinux 0xd1731e58 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd18b6eb2 acpi_unmap_lsapic +EXPORT_SYMBOL vmlinux 0xd1e63dfa dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings +EXPORT_SYMBOL vmlinux 0xd21299a3 redraw_screen +EXPORT_SYMBOL vmlinux 0xd2197552 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0xd2205673 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd227892e sleep_on +EXPORT_SYMBOL vmlinux 0xd22f7d73 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xd236bcb0 __devm_request_region +EXPORT_SYMBOL vmlinux 0xd2395a22 xfrm_state_unregister_afinfo +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 0xd265ea42 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0xd27827af pnp_device_detach +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2a75ee0 dmi_first_match +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2c89907 agp_enable +EXPORT_SYMBOL vmlinux 0xd2f1b260 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xd2f2a4c3 acpi_bus_unregister_driver +EXPORT_SYMBOL vmlinux 0xd3113cf6 dev_deactivate +EXPORT_SYMBOL vmlinux 0xd34328d3 address_space_init_once +EXPORT_SYMBOL vmlinux 0xd34c5d8d iterate_supers_type +EXPORT_SYMBOL vmlinux 0xd35dcf32 simple_open +EXPORT_SYMBOL vmlinux 0xd35e249a _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3c036c4 invalidate_bdev +EXPORT_SYMBOL vmlinux 0xd3dcab0b flex_array_alloc +EXPORT_SYMBOL vmlinux 0xd3de59ac tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xd3f71b48 pnp_get_resource +EXPORT_SYMBOL vmlinux 0xd3fbea2f sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0xd3fedfb0 vm_insert_page +EXPORT_SYMBOL vmlinux 0xd4136616 vfs_unlink +EXPORT_SYMBOL vmlinux 0xd4258fc0 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xd44a8284 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd47555e5 loop_register_transfer +EXPORT_SYMBOL vmlinux 0xd481d27a blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xd50fef48 acpi_detach_data +EXPORT_SYMBOL vmlinux 0xd51db73f alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xd52bf1ce _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xd5357301 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xd55dd610 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0xd56b6e3e netdev_change_features +EXPORT_SYMBOL vmlinux 0xd5886f11 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0xd58903b6 fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5afca01 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0xd5b4eafd unload_nls +EXPORT_SYMBOL vmlinux 0xd5b693cf __napi_complete +EXPORT_SYMBOL vmlinux 0xd5e84e7f acpi_bus_register_driver +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd5f3aa15 xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xd5f85db7 d_alloc_name +EXPORT_SYMBOL vmlinux 0xd611bca3 completion_done +EXPORT_SYMBOL vmlinux 0xd612a3f6 sock_wfree +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6294cda pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd633b128 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd677ec0a d_validate +EXPORT_SYMBOL vmlinux 0xd67fbdf0 fd_install +EXPORT_SYMBOL vmlinux 0xd69cea9d swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xd6a065a9 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0xd6a34aa8 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xd6a57b38 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz +EXPORT_SYMBOL vmlinux 0xd6c63187 pnpacpi_protocol +EXPORT_SYMBOL vmlinux 0xd6c7c88b iget_locked +EXPORT_SYMBOL vmlinux 0xd6d0ea42 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xd6e1a1de tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd710b0d4 pci_match_id +EXPORT_SYMBOL vmlinux 0xd72b7472 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd75eb992 input_reset_device +EXPORT_SYMBOL vmlinux 0xd765b0a1 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0xd772c565 scsi_put_command +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79f9277 mntput +EXPORT_SYMBOL vmlinux 0xd7b7c9b3 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi +EXPORT_SYMBOL vmlinux 0xd7e47e8b __kfree_skb +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7f56565 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0xd80277a7 fb_class +EXPORT_SYMBOL vmlinux 0xd807fea5 sk_alloc +EXPORT_SYMBOL vmlinux 0xd809b4a9 get_agp_version +EXPORT_SYMBOL vmlinux 0xd816ad6c mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xd82e5021 qdisc_destroy +EXPORT_SYMBOL vmlinux 0xd83ea029 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xd8587c0e __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8cdf30b fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0xd8cf80c3 posix_test_lock +EXPORT_SYMBOL vmlinux 0xd8d4b5fc writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xd8e43cd2 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd9091363 acpi_install_notify_handler +EXPORT_SYMBOL vmlinux 0xd91ea38c x86_hyper_xen_hvm +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd94322e7 acpi_evaluate_reference +EXPORT_SYMBOL vmlinux 0xd947411a tcp_sync_mss +EXPORT_SYMBOL vmlinux 0xd94743ef node_states +EXPORT_SYMBOL vmlinux 0xd969b2c7 amd_e400_c1e_detected +EXPORT_SYMBOL vmlinux 0xd9725a6e acpi_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xd985c0ed empty_aops +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd986dad1 kernel_fpu_begin +EXPORT_SYMBOL vmlinux 0xd989743d dget_parent +EXPORT_SYMBOL vmlinux 0xd98bdccd pci_clear_master +EXPORT_SYMBOL vmlinux 0xd9bc717d pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0xd9d1d549 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xd9d76452 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xd9e55f82 dev_set_mtu +EXPORT_SYMBOL vmlinux 0xd9f47e86 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xda0a6b0e acpi_map_lsapic +EXPORT_SYMBOL vmlinux 0xda2d560c kthread_stop +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda88a35d xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8f05ce find_vma +EXPORT_SYMBOL vmlinux 0xda94d3cd try_to_release_page +EXPORT_SYMBOL vmlinux 0xda969bb2 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0xdaaa7c36 vga_switcheroo_register_handler +EXPORT_SYMBOL vmlinux 0xdab23ed6 skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xdad80e67 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb608226 agp_free_page_array +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbbf634f __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbe58204 generic_block_bmap +EXPORT_SYMBOL vmlinux 0xdbfe6c2f __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xdc00953b unregister_qdisc +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3e2678 mount_subtree +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc4c2442 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xdc4f651f seq_open +EXPORT_SYMBOL vmlinux 0xdc57f532 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xdc6c98c2 mmc_resume_host +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc6f47e7 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xdc779ca1 pci_assign_resource +EXPORT_SYMBOL vmlinux 0xdc80a3fd security_path_rename +EXPORT_SYMBOL vmlinux 0xdc8bea28 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xdc8d1dde _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0xdc99d73c acpi_enter_sleep_state +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb9f214 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdccb360d dquot_acquire +EXPORT_SYMBOL vmlinux 0xdccef8c4 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0xdcd36ebd input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xdcd50555 wait_iff_congested +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd4153a2 kern_path +EXPORT_SYMBOL vmlinux 0xdd445faf alloc_xenballooned_pages +EXPORT_SYMBOL vmlinux 0xdd4506bd single_release +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd50c44c inet_release +EXPORT_SYMBOL vmlinux 0xdd741c71 uart_register_driver +EXPORT_SYMBOL vmlinux 0xdd994057 udp_prot +EXPORT_SYMBOL vmlinux 0xddbc0f06 kernel_getsockname +EXPORT_SYMBOL vmlinux 0xddcb48d2 __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xddcf0c2a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xdddb6a0c sock_map_fd +EXPORT_SYMBOL vmlinux 0xdddf2d56 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xde10764a tty_register_driver +EXPORT_SYMBOL vmlinux 0xde16dc16 tboot +EXPORT_SYMBOL vmlinux 0xde267b0c simple_lookup +EXPORT_SYMBOL vmlinux 0xde2a6d7f ping_prot +EXPORT_SYMBOL vmlinux 0xde2f561a scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0xde3231e0 kernel_listen +EXPORT_SYMBOL vmlinux 0xde3820d0 journal_revoke +EXPORT_SYMBOL vmlinux 0xde3936c2 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xde4578b2 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde80c320 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xde8c9f51 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdf028d09 inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0xdf0da3cc acpi_get_devices +EXPORT_SYMBOL vmlinux 0xdf1380c5 locks_free_lock +EXPORT_SYMBOL vmlinux 0xdf36a09b bio_unmap_user +EXPORT_SYMBOL vmlinux 0xdf41c064 dcb_setapp +EXPORT_SYMBOL vmlinux 0xdf48a0eb flex_array_put +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf63927b nf_hook_slow +EXPORT_SYMBOL vmlinux 0xdf6794fc sock_no_connect +EXPORT_SYMBOL vmlinux 0xdf688452 generic_permission +EXPORT_SYMBOL vmlinux 0xdf8269ad blk_put_request +EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfc5169b slhc_init +EXPORT_SYMBOL vmlinux 0xdfcaad4e skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xdfdb413f __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xdff0a16a mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xdff664ae padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0xdffe44af inetdev_by_index +EXPORT_SYMBOL vmlinux 0xe005907b con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xe0155748 scsi_free_command +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe051af38 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0xe05968c2 posix_lock_file +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 0xe07df2fb ip_ct_attach +EXPORT_SYMBOL vmlinux 0xe09ebf7d pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0xe0ac8bd2 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b17020 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xe0e8481b pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xe0ecccd1 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xe10a91c9 sg_miter_start +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors +EXPORT_SYMBOL vmlinux 0xe1447c12 neigh_destroy +EXPORT_SYMBOL vmlinux 0xe147d78e seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xe148b78e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0xe15f42bb _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0xe1608253 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17e5642 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xe17fd23c unregister_con_driver +EXPORT_SYMBOL vmlinux 0xe192ed00 gen_pool_free +EXPORT_SYMBOL vmlinux 0xe1b9aa94 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xe1d4e2ed cap_mmap_file +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe21af2bf input_get_keycode +EXPORT_SYMBOL vmlinux 0xe229a4b0 phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0xe237d815 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe24daa0e usb_set_transceiver +EXPORT_SYMBOL vmlinux 0xe262e555 dev_printk +EXPORT_SYMBOL vmlinux 0xe29b04e9 acpi_set_firmware_waking_vector64 +EXPORT_SYMBOL vmlinux 0xe2aec127 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xe2c3ac35 give_up_console +EXPORT_SYMBOL vmlinux 0xe2cf980a vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0xe2cfb038 __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xe2d089af amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0xe2d12c10 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2fe704b cdev_alloc +EXPORT_SYMBOL vmlinux 0xe319eb24 acpi_pci_osc_control_set +EXPORT_SYMBOL vmlinux 0xe3350b6f eth_header_parse +EXPORT_SYMBOL vmlinux 0xe3667986 pci_scan_bus +EXPORT_SYMBOL vmlinux 0xe3a19914 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3b3794c agp_backend_release +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dae752 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xe3dcf0cb skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xe3df3de6 i2c_master_send +EXPORT_SYMBOL vmlinux 0xe3e12008 __first_cpu +EXPORT_SYMBOL vmlinux 0xe3fbe148 acpi_install_table_handler +EXPORT_SYMBOL vmlinux 0xe3fde0a2 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0xe4250fa9 pnp_start_dev +EXPORT_SYMBOL vmlinux 0xe4320014 key_link +EXPORT_SYMBOL vmlinux 0xe43aad52 netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xe43e48bc mii_check_link +EXPORT_SYMBOL vmlinux 0xe44a43fa twl6040_irq_init +EXPORT_SYMBOL vmlinux 0xe44eb294 simple_transaction_read +EXPORT_SYMBOL vmlinux 0xe457b098 vfs_statfs +EXPORT_SYMBOL vmlinux 0xe461329f genl_register_mc_group +EXPORT_SYMBOL vmlinux 0xe4668667 blk_init_tags +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48a85da thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0xe49b7164 nla_append +EXPORT_SYMBOL vmlinux 0xe49c0203 dev_open +EXPORT_SYMBOL vmlinux 0xe4bc6174 rename_lock +EXPORT_SYMBOL vmlinux 0xe4d85c1d ida_pre_get +EXPORT_SYMBOL vmlinux 0xe4eab9d2 fb_show_logo +EXPORT_SYMBOL vmlinux 0xe4eeb114 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xe4f5dfd2 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe512b72d kick_iocb +EXPORT_SYMBOL vmlinux 0xe516c48b input_inject_event +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe523b50e xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xe52947e7 __phys_addr +EXPORT_SYMBOL vmlinux 0xe52bf0d2 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xe530d757 acpi_clear_gpe +EXPORT_SYMBOL vmlinux 0xe5368d59 __ht_create_irq +EXPORT_SYMBOL vmlinux 0xe53a27ee agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xe5677348 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe58caec8 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xe59119d5 napi_skb_finish +EXPORT_SYMBOL vmlinux 0xe5bcd1d8 fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xe5bec95c i8253_lock +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5c9009c serial8250_register_8250_port +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe5f0fce8 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xe612e8b3 pci_biosrom_size +EXPORT_SYMBOL vmlinux 0xe62a88ee tty_shutdown +EXPORT_SYMBOL vmlinux 0xe63f2f4f __scm_destroy +EXPORT_SYMBOL vmlinux 0xe65c4277 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0xe671a736 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xe67ebd83 ip_check_defrag +EXPORT_SYMBOL vmlinux 0xe68387f5 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe69acbd2 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xe6af4aca blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0xe6b3dc46 alloc_disk_node +EXPORT_SYMBOL vmlinux 0xe6ba4f07 netdev_err +EXPORT_SYMBOL vmlinux 0xe6cf446f pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0xe6e195d7 fget +EXPORT_SYMBOL vmlinux 0xe6e3b875 down_write +EXPORT_SYMBOL vmlinux 0xe6ebaf52 input_mt_report_pointer_emulation +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 0xe7193d83 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0xe7570eba log_wait_commit +EXPORT_SYMBOL vmlinux 0xe7722171 flex_array_free +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7ad7dc4 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7e821b3 max8998_update_reg +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe82ef86f netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xe846679c shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xe850fa48 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xe85118de xfrm_register_km +EXPORT_SYMBOL vmlinux 0xe85e0030 km_state_notify +EXPORT_SYMBOL vmlinux 0xe86ae74d pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe8794ce1 slhc_toss +EXPORT_SYMBOL vmlinux 0xe8872ed9 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xe894b27c generic_write_end +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8bea2fa pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xe8c864cc genphy_read_status +EXPORT_SYMBOL vmlinux 0xe8d26eb8 xfrm_state_update +EXPORT_SYMBOL vmlinux 0xe8d7d962 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0xe8dbafef __next_cpu +EXPORT_SYMBOL vmlinux 0xe8fda19f mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xe90526ee abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0xe90ecf2f key_type_keyring +EXPORT_SYMBOL vmlinux 0xe911d236 fasync_helper +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe937a7d0 security_mmap_file +EXPORT_SYMBOL vmlinux 0xe93ae8a8 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xe952ac2e mdiobus_read +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe9625f04 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0xe9645be0 read_cache_page +EXPORT_SYMBOL vmlinux 0xe96aebe6 update_region +EXPORT_SYMBOL vmlinux 0xe977e4e8 key_alloc +EXPORT_SYMBOL vmlinux 0xe98fd202 kset_register +EXPORT_SYMBOL vmlinux 0xe997667b wrmsr_on_cpu +EXPORT_SYMBOL vmlinux 0xe9ad05b7 bio_map_user +EXPORT_SYMBOL vmlinux 0xe9bd0cde ida_init +EXPORT_SYMBOL vmlinux 0xe9d3771e seq_path +EXPORT_SYMBOL vmlinux 0xe9dff136 mempool_alloc +EXPORT_SYMBOL vmlinux 0xe9f7feaf set_pages_nx +EXPORT_SYMBOL vmlinux 0xe9fbb63b override_creds +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea114e27 pci_bus_type +EXPORT_SYMBOL vmlinux 0xea177a59 wireless_send_event +EXPORT_SYMBOL vmlinux 0xea311540 elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xea424560 skb_seq_read +EXPORT_SYMBOL vmlinux 0xea4dc0a1 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xea7b8a44 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xea8b0a11 register_quota_format +EXPORT_SYMBOL vmlinux 0xea90bdd3 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xeaba5c35 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0xeac73847 irq_regs +EXPORT_SYMBOL vmlinux 0xeae2a68d dump_seek +EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay +EXPORT_SYMBOL vmlinux 0xeaf29711 check_disk_size_change +EXPORT_SYMBOL vmlinux 0xeafc11ae pci_get_slot +EXPORT_SYMBOL vmlinux 0xeb32eca0 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xeb33b152 unregister_binfmt +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4bf1fd nf_log_register +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xebc9f71b security_path_rmdir +EXPORT_SYMBOL vmlinux 0xebce3199 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec29bacf inet_listen +EXPORT_SYMBOL vmlinux 0xec730387 _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0xec7e91a4 put_page +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedeb1f22 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0xedeedfa1 __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xee0a055c __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xee0acd1b netif_rx_ni +EXPORT_SYMBOL vmlinux 0xee0c7ea8 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xee1ce795 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee32055e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xee46885d add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0xee494f37 __scsi_put_command +EXPORT_SYMBOL vmlinux 0xee70e272 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices +EXPORT_SYMBOL vmlinux 0xee9cde03 do_truncate +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeef4a97f test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xef87191f jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override +EXPORT_SYMBOL vmlinux 0xef9d8293 scsi_host_get +EXPORT_SYMBOL vmlinux 0xefaecc9b blkdev_get +EXPORT_SYMBOL vmlinux 0xefb36ee3 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0xefb588e0 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xefb6b186 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xefb8b681 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xefba93e1 mempool_destroy +EXPORT_SYMBOL vmlinux 0xefca657e neigh_table_init +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefe099c3 acpi_get_event_status +EXPORT_SYMBOL vmlinux 0xefe8ad70 blk_stop_queue +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf00733eb __f_setown +EXPORT_SYMBOL vmlinux 0xf0091b85 thaw_super +EXPORT_SYMBOL vmlinux 0xf00a5dc9 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0xf0218d13 kern_unmount +EXPORT_SYMBOL vmlinux 0xf03087e6 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xf0554c13 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0668483 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0xf077a7fd swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xf08b5dc4 sock_no_accept +EXPORT_SYMBOL vmlinux 0xf09f3704 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xf09f67f7 key_unlink +EXPORT_SYMBOL vmlinux 0xf0ae025f inet6_bind +EXPORT_SYMBOL vmlinux 0xf0bfc4eb pci_enable_ltr +EXPORT_SYMBOL vmlinux 0xf0c71943 pnp_register_driver +EXPORT_SYMBOL vmlinux 0xf0df869b ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fab776 skb_try_coalesce +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 0xf115e4e9 pipe_unlock +EXPORT_SYMBOL vmlinux 0xf116d4b5 copy_in_user +EXPORT_SYMBOL vmlinux 0xf11a2995 key_task_permission +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13314f7 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf147ecb1 down_trylock +EXPORT_SYMBOL vmlinux 0xf184cc5b set_security_override +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1a0193a tty_port_hangup +EXPORT_SYMBOL vmlinux 0xf1bea6f1 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xf1cb71de inet_stream_ops +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d83155 pcim_iomap +EXPORT_SYMBOL vmlinux 0xf1da8902 input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf2010d29 phy_stop +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf22449ae down_interruptible +EXPORT_SYMBOL vmlinux 0xf23a2caa blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf24177b5 d_set_d_op +EXPORT_SYMBOL vmlinux 0xf251262c dev_get_by_name +EXPORT_SYMBOL vmlinux 0xf287ea9c __register_chrdev +EXPORT_SYMBOL vmlinux 0xf28ed6e2 machine_to_phys_nr +EXPORT_SYMBOL vmlinux 0xf2997713 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0xf2eff307 remove_proc_entry +EXPORT_SYMBOL vmlinux 0xf2fc0fd8 mmc_can_reset +EXPORT_SYMBOL vmlinux 0xf30aad9b swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf32055e7 dev_base_lock +EXPORT_SYMBOL vmlinux 0xf333afec journal_check_available_features +EXPORT_SYMBOL vmlinux 0xf333f535 pm860x_reg_read +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf34b783e update_time +EXPORT_SYMBOL vmlinux 0xf34c88e2 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xf37260ab _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xf37e2afe mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf38a327e drop_nlink +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf396cd21 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xf3978588 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xf3986b06 acpi_os_map_generic_address +EXPORT_SYMBOL vmlinux 0xf3a0d0ed key_revoke +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3e15b53 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xf413b73d inet6_getname +EXPORT_SYMBOL vmlinux 0xf4315495 ip6_xmit +EXPORT_SYMBOL vmlinux 0xf432dd3d __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf45b83fa pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0xf4774e52 tcp_poll +EXPORT_SYMBOL vmlinux 0xf48f2a08 sock_no_bind +EXPORT_SYMBOL vmlinux 0xf48f5d8f kill_bdev +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf49eb122 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0xf4a5c213 avail_to_resrv_perfctr_nmi_bit +EXPORT_SYMBOL vmlinux 0xf4a7ee13 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf5127297 no_llseek +EXPORT_SYMBOL vmlinux 0xf51ae235 touch_nmi_watchdog +EXPORT_SYMBOL vmlinux 0xf51afac2 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf52ea640 tcp_make_synack +EXPORT_SYMBOL vmlinux 0xf536d22e acpi_set_gpe_wake_mask +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf57dbcdf jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xf5893abf up_read +EXPORT_SYMBOL vmlinux 0xf58fb95b kobject_add +EXPORT_SYMBOL vmlinux 0xf598be6a rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f26bcb jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf6601380 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0xf66fb96e serio_rescan +EXPORT_SYMBOL vmlinux 0xf685d72c prepare_binprm +EXPORT_SYMBOL vmlinux 0xf6b373ed scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6d1f9f5 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xf6e6dcea skb_put +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ff2d40 deactivate_super +EXPORT_SYMBOL vmlinux 0xf719e6fc inode_add_bytes +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73d0865 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0xf73dc670 truncate_pagecache +EXPORT_SYMBOL vmlinux 0xf743980d block_invalidatepage +EXPORT_SYMBOL vmlinux 0xf757adfe mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bbfa46 flush_old_exec +EXPORT_SYMBOL vmlinux 0xf7c0c24a ppp_unit_number +EXPORT_SYMBOL vmlinux 0xf7d3a9ae is_bad_inode +EXPORT_SYMBOL vmlinux 0xf7dcec4d fb_get_mode +EXPORT_SYMBOL vmlinux 0xf7f1ae48 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf80c0883 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xf80e20a3 write_cache_pages +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf82cfd1a proc_dostring +EXPORT_SYMBOL vmlinux 0xf82e3d47 acpi_initialize_objects +EXPORT_SYMBOL vmlinux 0xf84b3a18 make_EII_client +EXPORT_SYMBOL vmlinux 0xf85618a5 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf871b444 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xf883bb84 inode_only_permission +EXPORT_SYMBOL vmlinux 0xf88e0ee2 acpi_get_table_header +EXPORT_SYMBOL vmlinux 0xf8983de7 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0xf89843f9 schedule_work +EXPORT_SYMBOL vmlinux 0xf89a20e2 tcp_ioctl +EXPORT_SYMBOL vmlinux 0xf8c9055b proc_mkdir +EXPORT_SYMBOL vmlinux 0xf95f5191 inet_shutdown +EXPORT_SYMBOL vmlinux 0xf96f376a pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xf971be13 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0xf9838ab8 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xf9a0eee9 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9c33352 journal_destroy +EXPORT_SYMBOL vmlinux 0xf9e95c28 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf9ef0c3f pv_cpu_ops +EXPORT_SYMBOL vmlinux 0xfa339781 netdev_set_master +EXPORT_SYMBOL vmlinux 0xfa66f77c finish_wait +EXPORT_SYMBOL vmlinux 0xfa67c245 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0xfa72adbc __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xfa8e8bf8 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xfa9023e1 pci_enable_device +EXPORT_SYMBOL vmlinux 0xfa91cd4d sock_recvmsg +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0443fb acpi_get_parent +EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb5f846a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb80c7a0 acpi_walk_namespace +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb28905 notify_change +EXPORT_SYMBOL vmlinux 0xfbb6acfb mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc0e569d __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0xfc0e8739 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xfc19f80c input_unregister_handle +EXPORT_SYMBOL vmlinux 0xfc1b0bc6 truncate_setsize +EXPORT_SYMBOL vmlinux 0xfc37fd2d init_task +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc57a125 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xfc68fd2d prepare_creds +EXPORT_SYMBOL vmlinux 0xfc7253ee __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xfc7a5267 set_pages_array_wb +EXPORT_SYMBOL vmlinux 0xfc801ce4 inet_frag_find +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 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcbcc95c end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcc54f91 lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xfcc6a1d0 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd2e5e79 serio_interrupt +EXPORT_SYMBOL vmlinux 0xfd58c7b9 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xfd5f002d dma_ops +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd67a318 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xfd6a20a6 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd6f4850 native_wrmsr_safe_regs +EXPORT_SYMBOL vmlinux 0xfd7d7713 acpi_exception +EXPORT_SYMBOL vmlinux 0xfd94ca88 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0xfda0dbe8 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0xfda44022 may_umount +EXPORT_SYMBOL vmlinux 0xfdaf742b tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbf0844 netdev_printk +EXPORT_SYMBOL vmlinux 0xfdca5bb5 journal_extend +EXPORT_SYMBOL vmlinux 0xfdcd4a6f tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0xfdee7d42 _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0xfdf0be31 read_dev_sector +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe018d2c ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe2974b8 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xfe40f8f8 key_validate +EXPORT_SYMBOL vmlinux 0xfe5311e7 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xfe58938f mdiobus_scan +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe8f89da bdev_stack_limits +EXPORT_SYMBOL vmlinux 0xfe90e4d5 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0xfe91c65a nla_reserve +EXPORT_SYMBOL vmlinux 0xfe951431 pci_request_regions +EXPORT_SYMBOL vmlinux 0xfe9b71ea scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xfea281a2 filp_open +EXPORT_SYMBOL vmlinux 0xfeba610f nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xfebfd7d6 netdev_info +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed719e6 km_query +EXPORT_SYMBOL vmlinux 0xfeda8944 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0xfee134b4 neigh_event_ns +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff02e992 page_readlink +EXPORT_SYMBOL vmlinux 0xff1269ea blk_integrity_register +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff26c771 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0xff419180 rtnl_notify +EXPORT_SYMBOL vmlinux 0xff4ade80 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xff521339 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff690c4f journal_force_commit +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff809a49 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xff8785f3 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0xff87cb83 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa19009 acpi_gbl_FADT +EXPORT_SYMBOL vmlinux 0xffa2fd63 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0xffccfb20 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdbbf7f fput +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +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/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/kernel/microcode 0xdf66ca81 ucode_cpu_info +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00aaf935 kvm_disable_tdp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x03ee4e06 gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04478945 kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0459c3e6 kvm_set_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x04d33ac7 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x054222ca kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ecf8854 kvm_vcpu_cache +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1131fcf7 kvm_mmu_get_spte_hierarchy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1479a9bc kvm_is_visible_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1810f7b6 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19a29828 kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cfe78d1 kvm_release_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2080fa63 hva_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20a2d874 kvm_fast_pio_out +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20de5193 kvm_disable_largepages +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2226befe kvm_vcpu_uninit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2472c74c gfn_to_memslot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x24b5414a kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27b20263 kvm_queue_exception +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28b294ca kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d0a07bb kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e1be5e6 kvm_after_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2e958e5f handle_mmio_page_fault_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x317f9e6b kvm_enable_efer_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3207c2cb kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x32b2f7bc kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b5dd35e __tracepoint_kvm_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cfa0880 kvm_mmu_load +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3de08404 kvm_set_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x44f4d9a5 kvm_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b7b228e gfn_to_page_many_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b8eed0a kvm_lmsw +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4c51f664 __tracepoint_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x502d2230 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x519f48ed kvm_write_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51ad69e6 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53a2a3f7 __tracepoint_kvm_inj_virq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54370508 load_pdptrs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5606de41 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59b7c207 kvm_init_shadow_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c97c4d5 kvm_get_guest_memory_type +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d701237 fx_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x603d3920 kvm_mmu_unprotect_page_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64a34f49 __tracepoint_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x653a6a23 kvm_mmu_unload +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x669da1fd kvm_set_pfn_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x675eb480 kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b76db2d kvm_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6db19e07 is_error_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6ec00916 kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72fa24b8 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x74fbc94a is_fault_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76e334bf kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7aa64803 kvm_release_pfn_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ae1dc87 kvm_get_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c502ab9 __tracepoint_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c9b19a5 is_noslot_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ce13bcb kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f2c1163 __tracepoint_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80cb59db kvm_set_xcr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x818ca3e8 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x82b51641 kvm_vcpu_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x831327da kvm_max_guest_tsc_khz +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8692df1d kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x878a556c gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a26f7b0 __tracepoint_kvm_nested_intercepts +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a973617 gfn_to_pfn_async +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 0x90344784 kvm_inject_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9221b0d3 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x962b8890 gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x962fbe0b kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x994a9a4d kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a216313 kvm_define_shared_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e5cd2a6 gfn_to_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ee59155 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f42ef6f kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa3cfe052 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa508e36b __tracepoint_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa774b15f gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa907f742 kvm_emulate_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa91845be is_invalid_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa79cab5 __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaab823fa kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xade371ce __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf275715 __tracepoint_kvm_nested_vmrun +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf49ff48 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xafb72b94 kvm_mmu_unprotect_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb43d3974 kvm_before_handle_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb610d30a kvm_set_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7230e86 kvm_get_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb82e1d2b is_error_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb83aa1fa kvm_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8f33d6d kvm_write_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba6b4e05 kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xba9ed435 kvm_mmu_set_mmio_spte_mask +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc2b937d is_hwpoison_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbdd043d5 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc05bca99 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6d5965e kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8d0a115 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcc0a279e kvm_task_switch +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xce38fa0c kvm_release_page_dirty +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 0xd296def9 kvm_is_error_hva +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3f649fa x86_emulate_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5031d03 kvm_release_page_clean +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd8d6b154 kvm_resched +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd37338f kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde10e36a kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xde852a54 kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdeb9e564 __tracepoint_kvm_invlpga +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf9bd0a4 kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe251c145 kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe58e6a1c kvm_clear_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeab7286e kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee1dc7aa kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee6a147d kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef10a87c kvm_set_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf08dacde kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4bc43cd kvm_emulate_halt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf56e001e kvm_requeue_exception +EXPORT_SYMBOL_GPL crypto/af_alg 0x0332edc0 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x0712903e af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x0d4129c2 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x10b0b5a6 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x292b3e16 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ddbdf21 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x65eef7f4 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0xda1e58bf af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x1282b485 async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0x78e3535b async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xc27cf805 async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x499a6317 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xa13ed90e async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x20111471 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x5cc13888 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xb1355244 __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xe2f14520 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x14a47073 async_xor_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbde525de async_xor +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xad2ce854 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x049a8a0d cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x24fc5c09 cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x27c73d4a cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x5dcf1e4d cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x7ce7bacb cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x821e70c5 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x88295703 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xa417db7d cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xd4ad3236 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xdc74436f cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x1c0d5dad 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 0x8bf81396 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x3c29787b twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0xe17ced56 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/libahci 0x11db9fd1 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x12dc8d0d ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x4123a212 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x50e32693 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5a638f41 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6b7f0a26 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x6d120555 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x7fd72844 ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x86161f13 ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x9919731e ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xa65bc417 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb5c23994 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xba64fbb4 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc3472e50 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc4973e22 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd7984de ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdd87ca26 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfcf7bbeb ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x6470abd0 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0xce7eda64 __pata_platform_remove +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 0x10b2ee9f bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x2c5b5e47 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x30c6e850 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x51c9dc4f bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x52e134c6 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x583a82d3 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7b0d87be bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x95b90cb5 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc18a5018 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc6a0c6fa bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcd256434 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe23beed7 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe426b8a7 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf4863a2c bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xf863d839 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x25769bc4 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x32abe027 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x4afa67fc btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x7112d0af btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8aa2bd6b btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa37d8547 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa8665090 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xb30ee346 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf345a574 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xf72bcf3c 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 0x0f1f6276 alloc_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x2e471f01 dca_register_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x31a2c8df dca_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x33a5efff register_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x4150d01e unregister_dca_provider +EXPORT_SYMBOL_GPL drivers/dca/dca 0x60ad571a dca3_get_tag +EXPORT_SYMBOL_GPL drivers/dca/dca 0x740e7ae7 dca_add_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x791c556a dca_remove_requester +EXPORT_SYMBOL_GPL drivers/dca/dca 0x8006c614 dca_unregister_notify +EXPORT_SYMBOL_GPL drivers/dca/dca 0x9cefcfc9 free_dca_provider +EXPORT_SYMBOL_GPL drivers/edac/amd64_edac_mod 0xde3cc59c amd64_get_dram_hole_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0bd593b9 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1a3b2fd1 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1f5d5086 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x20c7decc edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x2168d6d8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c0c29e9 edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x417c3b18 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x505f9286 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6d64712f edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7122a4b8 edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x76e62be5 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x7cd3c82f edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9f141db4 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa0d2b6cf edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa42d977a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb8ca4369 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb90635f9 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xbdce2ba9 edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc709d799 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdfa448ae edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf03951af edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf911a3c4 edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0d38cee6 amd_decode_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x0dc0b68c amd_unregister_ecc_decoder +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 0x233ce2e4 to_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x3eba1a17 rrrr_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x593ec4b5 ii_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0x6d4e6991 amd_decode_nb_mce +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xaeeba16b tt_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xb0ca1fe7 ll_msgs +EXPORT_SYMBOL_GPL drivers/edac/edac_mce_amd 0xc2b73a3a amd_register_ecc_decoder +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x1b7d00ac extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x55a7688c extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x88f45a13 extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8cebd44d extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9d446e6b extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x9fc9c0cf extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xc7bea0fe extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xd8cb3fc4 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xdc5fe5b7 extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe610c217 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe6fa1114 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xf3ba968a extcon_register_notifier +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 0x7b0b39bb bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xa6abdf51 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xc24dbbe8 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xff1bc217 __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x0ff02fd8 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x9a5adb00 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x05876c69 i915_gpu_busy +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x08a7896d i915_gpu_raise +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x402468e9 i915_gpu_lower +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0x500858b9 i915_read_mch_val +EXPORT_SYMBOL_GPL drivers/gpu/drm/i915/i915 0xe7237b0b i915_gpu_turbo_disable +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x3bfe401c ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x8bd7fca1 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xc8e41a35 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x01e61565 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0fa349f3 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x1d6212a1 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3e8212cd hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x43693119 hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4def9027 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x539c0f2f hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x78d68a68 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7adc5722 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8560ff85 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x86c1c571 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x89a1e340 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8aad088f hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8fd3895c hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x9103e2f2 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0x97a884b3 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaab91ba2 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaf980d77 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xafb0d8c2 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb6ab8733 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc0b9ba31 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc5a26397 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xca276f1b hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd34491d7 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4b03b56 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe4c9b218 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xef5c6e15 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf711e7af hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfb756211 hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x23215077 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 0x7d2297f3 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xbf9a8a1e roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x77c98072 usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xaeb13c34 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xcc959090 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xf8c23ce7 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x16f33685 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2104461d hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x2d6f4e5b hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x32e00e3a hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5416c790 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x67ebb128 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xae182794 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe7dc026 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcc7e006e hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd8481d38 hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xdb85894f hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xea72081c hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xf07f681d hsi_event +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x1687f54c vmbus_sendpacket_multipagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x195d59ee vmbus_open +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x32fb56b5 vmbus_close +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x35caacb9 vmbus_driver_unregister +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x62afab3f vmbus_recvpacket_raw +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0x998bc3ba vmbus_teardown_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xaf528af3 vmbus_sendpacket_pagebuffer +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xc91a78a4 vmbus_prep_negotiate_resp +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xf3cd1854 vmbus_establish_gpadl +EXPORT_SYMBOL_GPL drivers/hv/hv_vmbus 0xfcb99ed2 __vmbus_driver_register +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1fde759c i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x393d1685 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x42453ce1 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x54ef17f0 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x5bb1170b i2c_dw_isr +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x7f98535b i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x90e327cf i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x9e540ba2 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xa7082bd4 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xdd2103b8 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-nforce2 0x2dbbc5e0 nforce2_smbus +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x1ec5c0fd i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x25815615 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x28fe12ce i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xeb546dfe i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x3030955e iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x436c0be7 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x514aa968 iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5df44409 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x628df0bb iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6ef7c8a3 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x709ab3d6 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x8e4b422c iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa9106b95 iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xbc30d368 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc9513925 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd2701e89 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe76bca37 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeba1a425 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfe34405c iio_st_channel_release_all +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 0x316b2532 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x2dd419ee 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/cyttsp_core 0x0dedb280 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x4613cccc cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x662bd0c2 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x10096cbd wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x33b6bcc9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x53f2dff7 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6955fcf3 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x74ebe1a9 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7a612b22 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x9cba09ad wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa5fffc6d wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xb5a33c76 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xba1bda3e wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xcb993147 wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd2479d9c wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x032ad3cb gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x07acbeaa gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x28921a69 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x31b8b014 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x407e4fce gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x45bd9268 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x569d3ac3 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x674217e8 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x73f68371 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa74a28b0 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xaf7b667a gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xcb3651f5 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xd4084949 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdbba243e gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf05c6b69 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf4b88a12 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf8c14284 gigaset_add_event +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 0x75a0c099 dm_bufio_client_create +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-multipath 0x350802f7 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x3627baf9 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 0x1fb6d00c dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x266612be dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x31f9250d dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0x7befa851 dm_region_hash_create +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 0xacd0c775 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 0xf65fb3a4 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 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x07803141 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4035149a dm_sm_disk_open +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 0x45a8b35f dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +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 0x6d49b194 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 0x74d47993 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x77fb5544 dm_tm_create_with_sm +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab03c775 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +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 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x0e361286 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x59edc2ba md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x1c634d27 saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x1f4bac48 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x30b63425 saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x32c4440f saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x427d5c59 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x45548ee7 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5898fc04 saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9742a1ec saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x9c4949ef saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe47c8673 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xffdc9c5f saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x2e827c18 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x7adc0ac4 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x9333df59 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xa330cd61 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xac136200 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xb25e4e50 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xff07632b saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x00d03fa7 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x244b6003 tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x9768bbbd tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0xa89912ef microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0xa47eb82f mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x24fbcb76 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x2001d2e0 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x92dd1aa0 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xf3c89019 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0xed0281db tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x7a113c2e tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xac144a88 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x323f2800 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xc8d10ca4 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x0e606f2c simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xeccd7a7b mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x5ac34edb mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xab2e041c tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x000ca2a3 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x08947933 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x21f2610c mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2549f91c mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3b7b2e98 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x44356888 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x54855260 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5ac95860 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x61249df7 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x64a0c34f mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x7689c5e9 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x8576cce1 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xb2027db9 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xb720c157 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xdfb33622 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xe4c4ba19 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf1546eef mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0913e927 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0c839378 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x25165d3d smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x2fff8840 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5cbb9e93 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x70e3d761 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x8a34cedd sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9196fbf5 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x940e1a6f smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9f346daf sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa12929e6 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa2ac3f59 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xa663bb6e smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb5ace8e4 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb9d969c3 smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc5a057e3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xfe2c6c4c sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x607311bc ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x66cab8d1 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x6bfe5381 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xa4655ad5 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xafd9cf39 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xd6f7f9f7 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xe73ab393 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0ac57f0d ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x0c0d1292 ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x188e3ce4 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1dbeff2a rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x36cd2f91 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3f616f72 rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a34eb18 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4f832bdb ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x526fe5a1 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x5855e2b8 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7074880e rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7960b17a rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x85371e23 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa1f984a1 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa9c44b36 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb0bec952 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xcf230ef3 ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x056182d7 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x25c2b13c cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2e34d03d cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2eb08153 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x3cec505f is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x4352583b cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x54971d7b cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x71b4eca2 cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x7c2c8c7b cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x9c0110fa cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa0f79deb cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa4c486ed cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xac9a5b97 cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xae1a0e65 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcdbb3113 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcf0ac7fb cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd8a93f2d cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd8e5bffe cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xfd23cfa7 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x1fc53217 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x077efce1 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x36a98074 em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x41ed2dcf em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x55c3ff9b em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5a2364e8 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8a3274bc em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x8d012287 em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x9f49cd8c em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xb3d3cfb6 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xcd9f2026 em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd8370e2b em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xdeece0dd em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xe3339bea em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf80d54d4 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x03344d1e saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x84914100 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xbe55cb30 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc11b458b saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xc9b4221b saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x378fad74 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x4f5e4646 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd4d867ee tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdb467b52 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x2501d997 v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x9e1eb7ca v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa81aa89b v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xc14443d3 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xc4c075c0 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xef439770 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x17573c92 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x2ac306ba v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x379fb483 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xf7e0b14e v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x13c0c054 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x25d1680e v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x337948c4 v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x58a4122a v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x67975f30 v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6d4f5c99 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x824d82ad v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x838ff9c0 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb2cda8d0 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf49e5d22 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xf49fbdee v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfd6a168c v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x018ceee2 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x01a7758a videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x04dc936d videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0bf4854a videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x102f15de videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x18a619a4 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x2a0cb840 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4443cab0 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4593ec65 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x45e22eab videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x481223e9 videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5613a154 videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6dbe3c1a videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x95521b70 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9583a1e5 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x99dd55cf videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa8cd60c2 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xae7e1dbe videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xb95ce817 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xcbf3b025 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xcf79122f videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdc117821 videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xed434f7d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xeecf1896 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2607097b videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x80c506d1 videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x8538b4ed videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x9500d894 videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x34302625 videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x53c5efdd videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x8e2def1a videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x94b976d3 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xc7d36a8d videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xdadd6b43 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xe7863c78 videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xf268249c videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xfcaa028c videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x5229f35f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xc597572c videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xf7ceb990 videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0af52fe0 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0e609f68 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1f83d5b8 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x20df0989 vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x28398f0d vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x28526abf vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x354b2d53 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x36cc7c86 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7344f08d vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7a47e42f vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x99f165c7 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb749176e vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbf6f4a49 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xce3636c4 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdc9c6621 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe9ae7864 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xef0711e9 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x10812800 vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xd35bd453 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x006c15bd vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x39d147d9 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xab946432 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xdb7148e2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xeff6f7f5 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0xd785ef0b vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x0ddbbb80 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x155e33a0 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3e2b21bd v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x4640b496 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6d8df2d0 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77c077e7 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77f30156 v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x7f227c70 v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8a427de7 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x925b1791 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x94ad46f8 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x97980949 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9e8382ab v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa8b77c02 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb6b9ba3e v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbbe7d7f2 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xbe032b0e v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xcc7d5b90 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd66e17e7 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd686b1ea v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdf568232 v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe91995bd v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xfdd5ae12 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x411df73e i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6a599407 i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x7b02b101 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa377034e i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xa5c50b0b i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xad029e3d i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xaefeec9d i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xe8a0d00e i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x301b7550 lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x54a7abcf lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x946596a3 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4b873bc5 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x53c965dd lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x68cdd4bf lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6a8380e7 lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x7393727b lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xde7f0293 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xf2f03e05 lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x366c7dc8 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xafcebba0 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xb6056c1d mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x02112f44 pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2168ee8c pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x482f7abe pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x655560d3 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x67bea1f5 pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7209709f pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7c4a78e0 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xac129bdb pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc2829b4a pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd0f1c838 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xd5c82765 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0077db53 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x0a0febae pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x0240a096 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x5c34b9a7 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x790cae06 pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x89740389 pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8a9528d6 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x0d791d4e rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x27ab22c4 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c26c56e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2c962bed rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2f56219c rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x31a5176f rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x37ed4c2c rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x39d69ce2 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44d7983b rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x4abab374 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5c1f98db rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x64c0b261 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x690b693e rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x825e1b33 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8ee68993 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9b8932b5 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x9bb52e45 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xd0788fe3 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf3153b7b rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfa87ffd8 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xfc2f0645 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x362cc10d sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x81438dd6 sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc1e0bd55 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc8d4bb04 sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xd4b3ad9c sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x43df7fd8 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x99bb6ffa tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe96c144c tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xe9e3b039 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xe2ae67a4 ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x12048433 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x3ba4c31c cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x727f082d cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x93b99e80 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 0x081b5aa5 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x2e9a9b20 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3466c428 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5a8c6b69 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa4946db1 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc18963c2 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf7727c50 enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x260aee96 lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x485cbc2d lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x5d619de0 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6cf59859 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9c68e162 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xaeb6b147 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xd7b46cef lis3lv02d_poweron +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 0x0bb78053 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x25456c7f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x0062a5b2 sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x22cde56b sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x27ac9010 sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3d0f121c sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x3e15a481 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x42682fe2 sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa5dcff8d sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xcc016e2b sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xdd34b1ce sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x0c9a7b0c sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x3ff8cac2 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x50539104 sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6280ac07 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xa56ca02b sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xf37ad9c6 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1aef83fa cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x450b994f cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbc75f1e3 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x3889225f cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x684e7a4e cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x87411735 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0x63f1ae99 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x04798c06 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x48c6419d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xedfa42ea cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xb30b7468 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x03afab78 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x06ae92f9 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0bb82b9d unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13cc7a28 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2c023e04 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x30721834 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x313ef176 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32994401 mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36bc97bc mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3efbdf1f mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4648235d mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4968af7d mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x49d44dee mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4d52c2c1 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e1fd061 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4e9e1b26 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5359a7a0 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5952e207 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5a3cea57 mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x63c7e02b get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x784df72d mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x790a447d mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7eb40169 mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x882dc952 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93199fc5 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x93ac3a00 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb14e748a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb2afdfd0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb4ab27a6 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc0a25012 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc68e4c7d mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xcb5b70ff register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd58830a7 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdea44e6e mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe88fadf5 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xea6194b8 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4356975 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf4b29015 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfba847e4 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1782d94d register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x6ea3f4c1 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x83977390 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9403bb29 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xe58bb86e add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x1239c32c nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x157b46f7 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x202c93fe sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xbc7a6052 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xd6a8b606 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0314dd84 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 0x5453e196 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x57c0b3f5 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x621d6801 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x64222e0f ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6bf679ba ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7b733ba1 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8700f71c ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8bdee35e ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb2d4570e ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xc469580b ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcd5e97fb ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xe6e571ba ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x0319c67d free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x04155087 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x429ad450 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xe4ec74b5 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x16c9e9df free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x1b5be942 can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x20d891ab close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2b594aa7 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x39c65063 alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x700fd2dc can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x7180e89b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x921d5e68 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9e01bcd1 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9f23ffd1 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf340c7f3 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf69842a3 open_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x32bfef7c free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x40423dd0 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x7f202072 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xb5d7a2d7 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x38bbc19d unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xade37ead free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe85e3986 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xe87da1ca register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02100eca mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0605dcde mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06f47ecd mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0de24ecb mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0eb7c373 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x186433e1 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1b9e5328 mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1dc2f711 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e168250 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e35cd67 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ee40ffe mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x210a5862 mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21806aff mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2622eed1 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d29a918 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x317df919 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32aebf46 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35a6e814 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3b2adb5e mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3be31adc mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3e91465f mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3fc394b7 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x432e5eb0 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46adc7e6 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x522edbbc mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x525d4361 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x552562a1 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x584a9aff mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59bc8c69 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a92601e mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c06df7c mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x623a279b mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62c82a04 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64a0741a mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72ba8941 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x734d3b3b mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b6216cd mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fb1a702 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x812a8e5e mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x814a3e73 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d79bead mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9209cebe mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92f352e7 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x978eabcb mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9afc2318 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b5faa58 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ceea865 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9d234a97 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e0fc31f mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1831828 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa68db720 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80258d6 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafef0b19 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb40576a9 mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbbf6d7be mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbd981eca mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbe71f2c3 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc3dd7934 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4917136 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb8dcb39 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcf5b5001 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd05ad4a8 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdab0145a mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb32a726 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfe4259e mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe200ddab mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7e28005 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef1bd978 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf01541c2 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5e61c67 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf828df13 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf865e0b8 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfb8c865f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd326fea mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2c999fd5 macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7fe7526e macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8945f50e macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xd33ede3e macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe6fd920e macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x31972edd macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x155a40a2 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x28dfaf4d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xe0ec4be0 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xf2785785 usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x025e4781 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x1ea0f8e3 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x21153464 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x580aa128 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xad30e404 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xef605704 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x027808e0 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x041982dd usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x06687857 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0ad90f22 usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d0e14ce usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0f4ab724 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x110b8a8f usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x11e2166e usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x14829573 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3af550c4 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4cd8c7d9 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x59640498 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5b1314df usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x63fe5c20 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x64673f0c usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x688183f6 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x90926b1d usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9c915457 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xaafd2c66 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb82ad2f4 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xdf02d5c2 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe3ef90bb usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe803e7bb usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe85550dd usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x121eb19d i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x338c04ec i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3800848f i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x47ca5e73 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x5cbd2c0a i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x69097570 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x6a870bb7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x925ca888 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x9f061151 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc64b05c9 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xd0f35ef3 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe09312fc i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xe1f44ade i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfb23ff8d i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfb3776e0 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfdca2bf0 i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x1c820b19 libipw_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x6fb0d265 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0a78cce0 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x0c614077 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x14cabdc5 il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x615eab76 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x63d0b5cc il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x23c0a2b9 lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x28f821b9 lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x373c28ba __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x402c5bff lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x481a07be lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x532f2b24 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x54b9fead lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x68dfcaf7 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x770111b1 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8dfd00fa lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xabef4d60 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xaddc5204 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc752517a lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf1aa32f5 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf9abda07 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xffd3d628 lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x44fe4d25 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x56f763ca lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x5aca067a lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x7e92e638 lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8641f949 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc15bfa3a __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 0xf18f509e lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xfa89aea5 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x5b5c8891 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xad3833fe if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x2852c887 mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x3be1052d mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4e4ab236 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5180c9cc mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6548dfe8 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6efe0319 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x739eb138 mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x74860509 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8398a79a mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa8430f35 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xafdee02f mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xccc9b174 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf1b45b20 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x1d3bfbaf p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x273ed778 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x86e9e345 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb6f43d02 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xcc124d46 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xced00012 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xdcc79d44 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xe60ffd98 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xf6ce8851 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1cfcfa39 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x31c08309 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x35311ce4 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x378f4bc1 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x47afd6f1 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5522344f rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5df9dee6 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x625bbc1c rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6839d658 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x71afd97d rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x75798d80 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7a737f84 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7b22b23b rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7c5f41fb rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x88194bb2 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9301a31b rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9ef2ca32 rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa0a873b1 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa1cc5c17 rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xaf24b96c rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb338f1a6 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbe313be3 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc96d9bbe rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc1066e4 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcdc2961e rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcee641f1 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd170ff3a rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd3b42e0b rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd6332f03 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd7e70b7f rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xdb1c2c8e rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe1c2df3e rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe571c59a rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe89e809c rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xec86eb76 rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf06d2d75 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf623563f rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf6fc96bf rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfbecd6e9 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x02b70734 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x077ac0f5 rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0bc97d9a rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x10e1cacf rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x245221ff rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x276809b9 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2d860cef rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2e128af2 rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30e89299 rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3120605d rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3c158496 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3f0f28dc rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x406fc3a7 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41a5ed11 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41bf0ded rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4f12f052 rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x537813e1 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5420707f rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59615e6d rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59b976cf rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b59c389 rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x639061d7 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x668a2ce3 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6c9ddaaa rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f08dab6 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f6d61b9 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x70533a6a rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x713cc742 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7155bb1a rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x74c71bd0 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7c031d7d rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7d0dacbd rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x803f05f9 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x82549f49 rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8f823192 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x98085d29 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa26ce6b1 rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xaeb7ec67 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb2703b47 rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb459cfa9 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb90cd1fa rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xbf7305a6 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd094837a rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xdcdac96c rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xed935a5b rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf279aebd rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x5749c396 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x70014f4c rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x807dda3f rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8a2dc4f3 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb995dddd rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xba48ae0e rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe73487af rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xedd1d017 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf85bfe22 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0253a041 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x02b8feff rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x068d8491 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x0f73e1b2 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x1f050607 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x369135a6 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x49a0fd7b rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5aeffc72 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x95fad3c4 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb4aadd76 rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xbac25de6 rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc4fae1bb rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc7e271fe rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd0b9a63a rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd95fc5a4 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf1ddb8df rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x0247ed15 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x4df083e2 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xfef8788d wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x068d2d3c wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x27518427 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36065e4d wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4d29f8c0 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x54909cd0 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5a5879d7 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x9b601cf9 wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb71af490 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe116580a wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf15e203c wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf4d4009f wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf8781ca8 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdc9c9a5 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfdf98c2c wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x0fc2855b acpiphp_register_attention +EXPORT_SYMBOL_GPL drivers/pci/hotplug/acpiphp 0x86350c20 acpiphp_unregister_attention +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0x144cc16f asus_wmi_register_driver +EXPORT_SYMBOL_GPL drivers/platform/x86/asus-wmi 0xa3c038df 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/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 0x153c4e8c pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xea9a4841 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf20784e0 pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x5544fe3c mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xcc3e9038 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd4eea625 mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xdcab5720 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xec33b7ca mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xfcb5d81d mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x21718e13 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x36e6e739 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x4cf230f7 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xad70b7e1 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xcf2f5b9a wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfca2025b wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x9bb1200a wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x08e8a463 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0bdc847f cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0e249e9c cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x16822e9d cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x183142a5 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x211b0c24 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x228cd8f8 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2bd9bfc6 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2eb28b88 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50be6795 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x50e3d528 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51a8232a cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5272127e cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x52a3a9c2 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5f02fca2 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6797d992 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6a950b03 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6bf31782 cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72a7a82a cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x754449e7 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8207c836 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8234cde2 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8b1f6842 cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x94746236 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9689a41f cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9b36bfbb cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9c727b68 cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0a07628 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2c73e77 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb2fd8464 cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb6ec32b3 cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xba794ebc cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb0b55cb cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc89b22b cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbdeced94 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd2fe18c6 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd3c64879 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd4e900f4 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdf253570 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe05e0472 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed139080 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf1d2faa1 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf532ebd4 cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf61dfd07 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x198cdde2 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x1f3cb4d6 scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x257479dd 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 0x90e8e381 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xb52c0517 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xdabd45a1 scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1461d32e fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x17d98231 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2781ec26 fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x3fc77ca9 fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x4c468ddc __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x70ccf7a4 fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x73cefa77 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8a0272ea fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x91ec049f fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x97e8f814 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc9a56995 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe07bffcc fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xea7130fd fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x5112b2c2 iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x87865934 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x94c896e4 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x9b333f80 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa5777cbf iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xc8615a0d iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x07ed7628 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0d394abf iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x150875f2 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x15348374 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x168fc60b iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1fa13e67 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x217d9439 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2686f4b7 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x274d93df iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x27a97fba iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2a7eda41 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d16ca34 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2d6d29ad iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3722f392 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d53af9c iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4af83b4e iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4d9bd766 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x51eb55df iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5ee6d5a1 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6132a84c iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x651b22bf iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x652f1811 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65ad9173 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6aa678af iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f28ee0c __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x739af12e iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c51af97 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8f7b06bd iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x91337165 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9383a0ea iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x99f86b82 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9ab0ab5d iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f98eed3 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa1176204 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa8a83d16 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb399adb4 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc1921bfd iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc45129fd iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc5cbc45d iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdce75d41 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8c137ae iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8e12c5f iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfbea26d2 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x16f289b6 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27ab5565 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x36002e0b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x51d26d76 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5c96a79e iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6949481b iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6ad2961d iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x74ec18f8 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8cd54d0f iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xb2b2c796 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc936becc iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xcb9cda38 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd44e953d iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd7dfda37 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdba6831c iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xdd1d7123 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf54871d2 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0f32e6e2 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1497c7f5 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ae4b505 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2ea36960 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x3db18218 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42e18e5f sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4d14ba27 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5e191f26 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x65aaffae sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7606c214 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x7752741f sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x77e6a701 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9037f8b0 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9084b736 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa809a3ed sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb4cd975f sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbda237a3 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xca5ebebc sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd0dc3a6b sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd3696368 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdfcaaa41 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2798329 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe605b524 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x169ed483 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x8eb0e1db srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xa962498a srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xadf3ba19 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xb9a7e456 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xf3d0e6f2 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x03a896c8 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x050b9fc8 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1d983a65 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x63423aa2 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6c0ddabb scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x6e15731f scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x7e17a379 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xb22c741e scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xfba7de8b scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x057bfb3b iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10bd8671 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x13507535 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x16d723b2 iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x201dc0ff iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x29869b26 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5b303c46 iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d5f8281 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x765044e2 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7af1017f iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7b0f94ff iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7e0b165c iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x89f20c6e iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8c19434a iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8fd2a500 iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x965b774a iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9b822f05 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa00531b1 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xadcbf6b6 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaf9e56ec iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2df058f iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb99d5011 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd051cd3a iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd4209fa9 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd45c2d2e iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe10c2871 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe126ad2a iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe13b4445 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe283a222 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe5965678 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf6c895a9 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf735b9d7 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x027c37e8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x148c23ae sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2ca59263 sas_enable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x4f6bac45 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x6184f4c8 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x637d24a1 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xb656ad4b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xbfd24847 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xda45e46b srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0aed3a9f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0b408c87 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x3254a8cd spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5a284bb4 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x5c265cae spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc86b4f0e spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x031c85d1 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1e3d57a4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x9cd144a5 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xaecabb93 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xbd938f62 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x02ad80fb comedi_usb_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x273241b9 comedi_usb_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x287bd324 comedi_get_device_file_info +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x47883130 comedi_usb_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x5309a701 comedi_pci_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x58b059ff comedi_pci_driver_register +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0x7bf1b6ae comedi_usb_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xa081786d comedi_pci_auto_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/comedi 0xaeac0c16 comedi_pci_auto_unconfig +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x301fb130 das08_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0x86fcde20 das08_cs_boards +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/das08 0xa7b624ac das08_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x02216613 labpc_common_detach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x25e55b95 labpc_1200_is_unipolar +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0x8285332a range_labpc_1200_ai +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xaf1e4347 labpc_1200_ai_gain_bits +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_labpc 0xb657da88 labpc_common_attach +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x12352145 ni_tio_rinsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x223fc4da ni_tio_arm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x2fbb3fec ni_gpct_device_construct +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x98750854 ni_gpct_device_destroy +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0x99041f9c ni_tio_insn_config +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xa6ec3d7e ni_tio_init_counter +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xc16c3a9a ni_tio_winsn +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tio 0xe528b779 ni_tio_set_gate_src +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x0fab960f ni_tio_cmd +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x1f176f07 ni_tio_set_mite_channel +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x2f797606 ni_tio_acknowledge_and_confirm +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0x46f9e23c ni_tio_handle_interrupt +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xada0909b ni_tio_cmdtest +EXPORT_SYMBOL_GPL drivers/staging/comedi/drivers/ni_tiocmd 0xfb228f5e ni_tio_cancel +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0xbb4a5e86 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x0bd53ca6 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x57a9bb52 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xd33353e9 ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe36a3d32 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xe9d8082a ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf293fe6c ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 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 0x3ee16d94 spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x44e7abd9 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x5b381430 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x719669b0 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x892d7c77 spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e8a916a synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa9e774de serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +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 0xcda38867 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xcfcc99c7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xd6eada87 spk_synth_immediate +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/speakup/speakup 0xfb56156d spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x02d313ab dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x325ba653 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x60076ead usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x74cb9a57 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7baa83e9 usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc0b8007c usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc31953c0 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc4ae9c88 usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc87fa783 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 0xd071327a usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe6709efe usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf195078a usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfbc50770 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x48162200 max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x5cf437a8 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x6cc59de9 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x7a9f5fca max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbb8bbd24 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xd9e297fd max3107_rw +EXPORT_SYMBOL_GPL drivers/uio/uio 0x2cbc44a4 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x7290daff __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0xe5eb891e uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x64f64f42 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xf33dc77d usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x6e758d40 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xb3f0552f usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xb4128f56 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xcc712280 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xd21d8806 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf89e75ea usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x1fda2bdf usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x2d3edb55 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x493b0ae5 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4f68f67d usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x66bcc2ad usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7b836870 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x980416a2 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xba2fd205 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xf83ef6d8 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x3ab24a51 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0xb0b7c258 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x8d206fa9 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x12b6a6a5 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x14ffd1da usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x26ff609a usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x28bef3aa usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2c247e45 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ecf6686 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4f0833d4 usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5ff921d3 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6a4f7188 usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6c583df7 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x71858b75 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x71fe4ac0 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x84fbb4c3 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4edee7d usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xaecf15a0 usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xb662d401 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc8dd9993 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xe3cf5956 usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xecfce640 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x06315c68 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1c69a13a usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2f06c14e fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x361c8af3 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x385c6563 usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4a56f676 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4dc3b013 usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4edf9558 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x60d3b475 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6bacaadd usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6bf0a622 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x731adcb4 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x81ae0e4d usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xab9c5aad usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xafe8ee81 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbb61ef10 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc1c70fae usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcb56d5d5 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd63af70a usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd6672713 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xef692a42 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xfc0e1abe usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x19890402 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x32b67f32 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x5f2b39a9 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xb5f24378 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xdef5c284 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x246ff08a wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3013905a wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x378f18db wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x3deb02cb wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x506edf89 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x626e2052 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6458a23b wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x66466bcd wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x6aea852e wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x8a7c2358 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa48bcefc wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xba332343 wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xcece4aae wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xdb1acfc6 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe1298baf wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf6c57a9a wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x10844aa6 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x453fe188 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8d54642b i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x126110b2 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x29ca9006 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2acfb6c8 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3667d484 umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x38030c33 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x477f64fc umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5a6d350d umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x6edffbb2 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0ba14083 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0c7c2575 uwb_rsv_terminate +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 0x1003d5cb uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x103d3ced uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1655a849 uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1c5ae29f __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x1e17f291 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x324ce590 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x397f1831 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3a8631aa uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x43a2096f uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x444dc932 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4539e5d5 uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46992709 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46a72439 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d9a220a uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e6f25f5 uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x588bf41f uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x66ef85b8 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e7e584a uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x76760798 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7ad26386 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dfa2d18 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8baf3c6b uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9368527f uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb0335913 uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb21b0d0d uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xba8d3eeb uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbda37847 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf238c1c uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd3d46621 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4a9ea5d uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdf76dac5 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe285556a uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe5d827db uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf46746c1 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf5701e5c uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/whci 0x530b900d whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x246c5c95 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3367ac98 auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x56a7a038 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x74c992b7 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8ce264ba auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa61c177d auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xb3410b51 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc0939add auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfd95248c auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xff5d703e 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 0x026db07a ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4498809d ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x6482a17f ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7dbaef0c ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x81d185e3 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x92618cdf ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xa3adba00 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/fb_ddc 0x0345d226 fb_ddc_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x4652407a fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x4a26318a fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x20b1facc sis_free_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x7e4d0e71 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 0x4b0c88b8 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 0x04eed353 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x12426f1c w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x4869d50d w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x57208937 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x63bdead4 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xac64cf28 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd1213da3 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd40854f4 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xe08fc826 w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/xen/xen-privcmd 0x443ac367 xen_privcmd_fops +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x999fe3e1 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa4df7395 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 0xd3d305df dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x089487d7 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x429fb9dd lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x45a6cee2 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x881b7e0f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xca384d3c nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcff1278e nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe6351359 lockd_up +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x098b62b4 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0f58cdce nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x16b098cd _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x170e364f pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x17482a05 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18a36e40 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2006a649 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27965f0c nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d908cb9 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e184a38 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35ec4571 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3bbb92e4 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x413a8ede nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4bda803d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5149ba31 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57c72419 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d025b61 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6153b194 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x64e75733 nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66c52bdb pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x70cda7fe nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86817d4a nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f027045 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f84aca3 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91157ed1 nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x95b53301 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9bbb4604 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa994b0cd nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf47a003 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb2ea8f5b nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb52fa25c nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2036bfd nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc95a9643 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xca5eb903 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xce92fa82 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0f67521 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd10f1307 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd4f7b6a7 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe52a2fd1 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe76f80fe nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee7b6213 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef855935 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf32ea015 pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf652620b nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfb8e23c2 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfee6a895 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3d035747 nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xf50fdce1 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0184a121 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 0x1d747ce3 o2hb_check_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x221c92b0 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x36a28a9e o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x580cbbdd o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x763524a7 o2nm_node_get +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 0xb64541ac o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc3679d7b o2hb_get_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd60f2c6c o2hb_check_local_node_heartbeating +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xec848761 o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf463dbf3 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x16169727 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x21e86c4a dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x30a724c6 dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x71eb3c76 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 0xa40bbf9d dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb7d75488 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 0x05647749 ocfs2_plock +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 0xb8ca4415 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xbbc4ef97 ocfs2_stack_supports_plocks +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0xc066bee6 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/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 0x18ea2bd8 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x3722d6d1 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x508e83e6 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x65a1dbae garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xc8af07b2 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xf44d6ce9 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x2f923671 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0x8d0b8f41 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0xacd89af3 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0xd1e7dabf p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x94c37713 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 0x22794e57 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0f6519a5 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1153730f dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x21c837f0 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2b3e247b dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3760c9e9 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3bbf8712 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3e67078f dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x447ab0f7 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b41cb9d compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4c705a90 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e2de333 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4e8aaa15 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ec35231 dccp_ackvec_parsed_add +EXPORT_SYMBOL_GPL net/dccp/dccp 0x56a33ac8 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5a640c2f dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ca5b061 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5fdece42 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x605ad4db dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x70aa0149 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74b73808 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7610225c dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e6f4a05 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9558aa2d compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa01e0efa dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa2edf62e dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa84f6aad dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa8ee3d12 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa9b7a73f dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xad1275a3 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xba8cf764 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc76f7bb2 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd19a9522 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda08ae2f dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xddd36fb5 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe3691b9d dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xec3e95c9 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfc43892b dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xffb258f7 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0de72c69 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7cae3589 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x9d6989b4 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xa62d99e6 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd8c6fb52 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xd9e87f49 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1fd33787 register_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x54e6538b unregister_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x253d0774 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xd253ebf6 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x281b11bf inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x2957d59f inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x72c5a69f inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x7365c6a9 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x89818ad8 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd4fa6ef2 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x75d55f57 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xcc10b8d0 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x60b0a4c7 nf_nat_seq_adjust_hook +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 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x8f898720 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xa6201a1c nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xa8b7ce78 nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xbba04b3d nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xbd8a8c99 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 0x31dd18c4 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3752fcc7 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x571a1c7c tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x6ef650bd tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x878a6554 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xa6337047 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x13370035 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x14af11fd l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x30a42d4c l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x452319b3 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x60d790d8 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x75d0bfa1 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x77af33b3 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9ea2d32e l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdaa00add l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe394cb8d l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf3b86a68 l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf8c331d6 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1228efa2 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x4111cbe1 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x68623a5e ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6e0c0504 ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72d83877 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d11f17c ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8f815cf2 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc389a846 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0136bde ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1d4b9438 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 0x66790bdf ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x72500cc1 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x732cd012 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8f7b5af6 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9740ae9a ip_set_test +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 0xaff8b293 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xe3ce5753 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf0912a98 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x1d573e34 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x237c764c unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x51732231 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xf8f56716 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aa9d2b2 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0be4a89b nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0f45ec38 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fd465bb nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0fefc51d __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1335399a nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1655c5ec nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1afaf098 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20710cb2 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x22d389e0 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28dd8b66 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d7a77de nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2d7b00af nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32a0f117 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x32f5ef0b nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x351523cc __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3633a325 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d9c41f0 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40e28ee0 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x42280efb nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4965eb5a nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4c951087 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d61b3a6 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x54a8c4eb nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5db5573f nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6554ff42 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6e224a7a need_conntrack +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6f0ae4ec __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x759b08cd nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7e3065b1 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x874a679c nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b880558 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c4c6c55 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8c7085fe nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8e4c7a86 nf_conntrack_l3proto_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 0x98803f5d nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9b604620 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9fac6cbf nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa0112886 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2c1899b nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3793e28 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa6fc41fd nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad14b006 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb316d1fc nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb75281a7 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbbeefb1f nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc9ba2bd nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbe7a0ed7 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbeaf6d92 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +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 0xc63c3a9f nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc73152ce nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc736a390 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9b0c4b7 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd3a85538 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd8a5e9d3 __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdd46396e nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdfc10d31 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe5aed258 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe62a7938 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe687ab3e nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed87b387 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedd1e79d nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef705bec nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0a11be2 nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf0db7e5a __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf45746a3 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xed37e4d7 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xd93e133a nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x4151eea1 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0360265f nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x258eb880 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x2accf640 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3dcd7067 set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x86d94b33 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x96ccaaf8 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa5c45585 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb465c848 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc79f2c5d get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xcee673a9 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x769a7d2e nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x0560935c nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x627fbbe6 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xc11c3bc6 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xcd64be69 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x306736d3 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xfff391d4 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x02a5b33f nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x05a51cae nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x13687039 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2ec4b62a nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x55f17ea7 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x59b5201c nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8c6a985b ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa7fb660b ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbcea28be ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe602d6ea ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe9c0b641 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xec0b4614 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xff8ada17 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0xcb25f30c nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x10791fe6 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0xcfcbcca0 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x00ce98c3 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0430d889 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x0703b76e nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x4ec8fc3b nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x91bc8266 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc9b4d8b1 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 0xfa1f80f0 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x4c4c76a9 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x17a82617 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2540eb79 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x282ac524 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4b70e5aa xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x52a5748d xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5fd61882 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x6699ef64 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x725f30a9 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x76c8cfbe xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x77203707 xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8a7ccfb9 xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa93be8fa xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xaa803e80 xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xada35af1 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb8dc5c81 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd8353352 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe071c55a xt_table_unlock +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 0xf6b4d2f9 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf762264b xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3bf0da4a xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0xea127120 xt_rateest_put +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x01084253 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0x07877cc2 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x10f6b7d6 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x14862f15 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x1701e902 rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x189a3c67 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x198e0636 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x1b47f4fa rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x30f1218c rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x31649eab rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x378a525f rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0x3a48d92b rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x50bdee2f rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x55f3ba88 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x5f9c8d9c rds_conn_create +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 0x82e0eb7a rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x8bc50468 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x930f8b66 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x9914c5f4 rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x9a7aef34 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xbd7c21bd rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xd8887965 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0xffd25a94 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x5f3f7079 rxrpc_register_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xcae0f060 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 0x06301c34 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2fd1db9b gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x358c0930 gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6863c437 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7aa3e6ea gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x9f3e1676 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb3128c10 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 0xb7af6e75 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xde4bf191 gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xedca216a gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf62b883a gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x03dc9740 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x049b259b rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06dc3824 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07a8f24e rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0863d995 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x091a98bd xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x096eeb41 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0abc324b xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c7b0bb3 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e5faa02 __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f4d0a31 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x102adf95 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x110c7767 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x134e3a44 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1561e9f8 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16bae5b8 xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17d6ee24 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b6d3aa0 rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b776e2c rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b9a65dc svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bc4f3a5 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cc67389 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ee938d4 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f97e620 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x236ca3bc xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2433824a rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x24489dd1 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b635b2a svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b8ea2a8 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x306d64c0 rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31ef628c rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3289213c xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3410583a sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3717bddc xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3782bd5a xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x37b7a47b svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39623f67 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ea443b9 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41137828 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41566ada svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x419811bd svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x419ad03f read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42e22769 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44ca3b22 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x480df0e3 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bad461f xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4bc115ab rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c62e8db rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x51036181 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x526d8019 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52ac9487 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5309599b write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56320539 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56cfd63c svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c0c7485 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cc42342 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc2cb64 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x605893ba rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6103cf9c rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62013f2e cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x621b7e4c rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x631e96ed svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x636d1507 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x655d5a20 rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65b404c8 xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x680410e6 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68bde228 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b2e8e51 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6d6f2864 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ebeb8ab cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x74d2eeb6 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76350fce rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76efec44 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x777230fc rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x789398c5 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79b6d4e3 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b18061b xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b1f27b0 xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b53f8a6 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ce073f9 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dc3e746 rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f57fe13 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80a4aff4 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80deeb48 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x840ddfa4 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84cf0354 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8501e7e3 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x868bb8b2 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87e3e891 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89907464 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89e1d415 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a4bbd91 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b2b295b sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c160484 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ca8c021 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8da9954d rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x90c77ef8 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x946ed70b rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94f46fae xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x971a906b xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9a1ce309 xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b2c5935 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b6c6bb8 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c319763 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c773ec7 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9df304d8 rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e5c6355 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f47dac4 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f8f2602 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fbea4e2 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9fcf57c7 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3ba6683 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa44142d4 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6eddce4 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa766c118 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7f3c24a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa82b95fa rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa860d68e svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa95c25b8 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa8e4164 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab7e379b xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaea170cd svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf105d5a rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16aa853 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2c6be44 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb30fea53 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb402d0a5 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb462ba67 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb58259e2 rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8f06a8d svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc79a2e1 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbce1adba svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbeca7865 xdr_inline_decode +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 0xc38487db sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3ca1666 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc62ccac6 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc63bb39d xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc717519e rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc74c69c6 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc761e9f6 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb698d99 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbb7fbb5 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdaad44e xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdfe2c7d xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce8d349a svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf47249f svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdadfea8f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb25c358 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd2620bb rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd377c1e rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde3de5f3 rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde6c73f2 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdec2fd67 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdfc7693e xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3a49556 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe561f95d rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea11e4e6 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeae77427 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb3f1979 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebd1f419 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed3c5ebb auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedc6e702 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee0ee306 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee6293cd xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf3630563 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf563eec3 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf5ac971f svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9697658 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbe37213 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc865d31 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfe178c5b svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xff3204bd xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1a1d208a wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3e18dda5 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x484b628b wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x681708ae wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68eb87d2 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x945e5afe wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9caff47e wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa14a6472 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa30d7708 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xc2d5a931 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xca70ec08 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xe0143bb1 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf1bef1de wimax_msg +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1af08cc0 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x1cd37662 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x30f88335 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3407e3cb cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x36a6c811 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x4e3d5524 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8690790a cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8896ef48 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb777560a cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xebd70f7a cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xed9141af cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xe260263f pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x02a6d6b6 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x14893b7e ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x604cc79a ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x657d485c ipcomp_init_state +EXPORT_SYMBOL_GPL sound/core/snd 0x6bef3d44 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0x8ba62316 snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xd02677f8 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xe4a21bc8 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xf9bf4825 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa286a234 snd_pcm_format_name +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0xa5923266 snd_pcm_lib_default_mmap +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x0a82d604 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x49dd158c snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x9e68600c snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf3f96971 snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xf51fa85f snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xfaaac81d snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x04de0643 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0676f5ac snd_hda_get_input_pin_attr +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x078172c2 snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x08aefd89 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ada03e5 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0cdcd2ba snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f23e76d snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f2e0d80 __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x104e1bf8 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18c0b11f snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a5f1abf snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1a858f6c is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b3121f8 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b674670 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c12bf45 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c13f44c snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c877982 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1d9cb6bc snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1ef4c9eb snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x250838fa snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x26129bc0 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2851117f snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x296e883e snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x389dcaa4 snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x38ff4e81 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x397ad34a snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3afa2ccf snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3eedccef snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3f28ae5e snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x435bfeb6 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45d6c90c snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x470b2a46 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x497fb96f snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4a49ec6b snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4af4c58e snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d97dc0f 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 0x4dd3a25e snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x505b2ca9 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x51de60d0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56df855c _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x579baed7 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d739452 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d8ccb4e snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5f319b58 snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6054cf0b snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61a59754 snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61efc6a3 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6532fdf9 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6642d808 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6695117c snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6843223d snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68e822ef snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a4fe1ba snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a60ff02 snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ad43fad snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c10f308 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6c7b1fbd snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7303b69c snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x749b776b snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x771352b7 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77b737b1 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x791cdb6c snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a443912 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a9e008a snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f6066b3 snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x804e6254 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x83264fd8 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8743977e snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87bf3853 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x888bf79f snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8992ecee __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f10b98c snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f98d510 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x932d2787 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9801ca25 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c5643a6 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c6838f5 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9d3572df snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ecf1f06 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f2fc59f snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa38a46f4 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa83e4ec9 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa921c605 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa167c76 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac339547 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb84e78e1 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8eba307 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb3234ac snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbebe3f33 snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc37a2772 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5f3c750 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc933aa11 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0a6a7be snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd0c8e7fa snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4f2f12b snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd53e31b0 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd6b4ef13 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xda38398e snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdaecc7df snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdbaf6a6c snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdc31a1de snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xdd769624 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde5ca9a2 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe07b7318 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe614c5fd snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe67c6204 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe7c91831 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe9d195e7 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb996805 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef6a1c70 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a1e4b5 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6cfa4f1 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7e23ec1 snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf8b926a2 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc85a36c snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfdfa052c snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfe1641a4 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xea440a99 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xf368cfe9 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x3b6b63a6 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x79a6eeda max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x06a8f462 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xbfcb6f45 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4cdc96cb twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x55a575c2 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x9142fe95 twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xb0c39b4b twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfc8f0358 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x322858a8 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x0c58b05c wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x14b39ac5 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x295ae112 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x41ae7c16 wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5e103a05 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x93477efc wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x94e0006e wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xad3c6385 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x5592823a wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xb82d0356 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x2c9a40eb wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x9018582e wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x309d9af3 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x999230ec wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0xf109ae3a wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x01391691 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0613ecda snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x08ac9c42 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09908e8a snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0beedd52 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0d086c04 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0db4472a snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x12eaa19b snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1644b062 snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16e9bdba dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x18b38d36 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1d6af200 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1e8222d6 snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x207351e1 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21295abc snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21779c91 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x24bef679 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2759eba3 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b822c61 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2bdb4914 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d24d18a snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2d835081 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2df86d4d snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2ef6a977 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3065fdbf snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31b89ed3 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x321c44ab snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x36d1e333 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39d25a21 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41a8c7bf snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x425a443b snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4ebf6d83 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4f5cbff2 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5073f80e snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x53ccbefb snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x55bec1fd snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x56ffbe4d snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58af6824 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5a912601 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5e991c43 snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60efc5d4 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60f72e81 snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x620c7ce4 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x64aa75b0 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6575ca91 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x66b4a91e snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6f45c52a snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70957ab9 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7150e3fe snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72bea348 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x743151cb snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x762df7a2 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x77e0203b snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7803d2a7 snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x783cc6aa snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x796ec139 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7edbcd85 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81a18b9d snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x84acb388 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8664c9cf snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8701cc72 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8b9c9a40 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8eba6e8c snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8edd09c9 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8ffabb1c snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91c42aa6 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x939bcb33 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9439eb6b snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94990346 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x975b78b5 snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99053f22 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x99cbb34d snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9aea720f snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9c13b75e snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0b19dab snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1213c63 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa35decdc snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa426da47 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6bfed53 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6eba553 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7d33b86 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa856c80b snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa89a209d snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad3a3722 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaefcf5c7 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb076b55f snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb1c9e567 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb2c635cf snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb4bf8d48 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5b7a005 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb89e6271 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb92e1a2f snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbc3d6ce7 snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbcc2dddc snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbe002932 snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbeffc951 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3f9a8c4 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc5fef2a4 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc6ae35ef snd_soc_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 0xc85c5349 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8e0e69d snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcb4605b4 snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcea82c6b snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd345690a snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd499fca1 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd57e682d snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd69fea7d snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8b88dc7 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd98f20be snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac9785a snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdbdbeb2c snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdd31cbf5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdddfb07b snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf5d2c99 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe01b668e snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe03529dd snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe21568db snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeae01646 snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee97076f snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf200f57b snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf5a7e24e snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6089da2 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9d04ffc snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfa907134 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe7cc338 snd_soc_cache_write +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0x0e45c1ba i915_hsw_gpu_turbo_disable +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xa49a445a i915_hsw_gpu_busy +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xa5a57a4f i915_hsw_read_mch_val +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xb7d6f553 i915_hsw_gpu_raise +EXPORT_SYMBOL_GPL ubuntu/i915/i915_hsw 0xff5514d7 i915_hsw_gpu_lower +EXPORT_SYMBOL_GPL vmlinux 0x00064d22 xenbus_switch_state +EXPORT_SYMBOL_GPL vmlinux 0x0012a90f xenbus_dev_error +EXPORT_SYMBOL_GPL vmlinux 0x001ffdf6 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x005974f4 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00d0e93f sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f94fde register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x00facc6d edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x01274b2e sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x012ea293 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0x01330a06 atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x013e3de7 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x0144d04e pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x0182e109 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x01848a8e local_apic_timer_c2_ok +EXPORT_SYMBOL_GPL vmlinux 0x019a5c90 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01c62206 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x01dfeed7 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x02448233 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0257f8ba regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0261731f xenbus_dev_probe +EXPORT_SYMBOL_GPL vmlinux 0x0262041f pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0x026211e2 memory_failure_queue +EXPORT_SYMBOL_GPL vmlinux 0x026ae228 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x028fbc22 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x02912d33 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x02a37b84 xen_swiotlb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x02e1ee6f rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x02e508c5 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x02e77868 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x0334de8e blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x0378a71f rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0x03a3f86d unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x03ae50a7 disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x03ccb043 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03ec249d bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0x03eca9a1 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x040bcdaf unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x0420cf93 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x043716bb max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x043b7241 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0446534f md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x0464c78a xen_remap_domain_mfn_range +EXPORT_SYMBOL_GPL vmlinux 0x046d6323 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x0498ed1c input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x049d64cd sysfs_put +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 0x051b091d filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0x05263e60 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x052d910d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x056973dc usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x05759ea2 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0x058624a3 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05bc689e usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x0601614d crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x060d1064 set_memory_ro +EXPORT_SYMBOL_GPL vmlinux 0x0628211c blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x062fc169 xen_hvm_resume_frames +EXPORT_SYMBOL_GPL vmlinux 0x0634e494 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x064754cf relay_open +EXPORT_SYMBOL_GPL vmlinux 0x0647a0cb __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x0673202f get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x06b2585c serial8250_tx_chars +EXPORT_SYMBOL_GPL vmlinux 0x06b4c706 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x06b560f4 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x06ca4121 sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x070c5927 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x07231e8a dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x0756790a pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x07668e4b device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x07677799 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x0769b1f7 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x077901d4 tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x07a4495a crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bfbf0e hypervisor_kobj +EXPORT_SYMBOL_GPL vmlinux 0x07da4e70 fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x07dfb86f usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x07e27a4c dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x07ed9024 crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x082d20c8 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x084bc99a hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x085b9762 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x0860e402 ata_acpi_stm +EXPORT_SYMBOL_GPL vmlinux 0x086213ed xenbus_match +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a542b0 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x08d0cdd5 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x0914dfea virtqueue_add_buf +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x09660831 smp_ops +EXPORT_SYMBOL_GPL vmlinux 0x09783654 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x09d62735 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x09d7a517 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x09d9c22b unregister_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x09f3dd05 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0x0a21ba29 __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x0a288348 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a4bbaa0 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x0a5dc51b pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x0a717257 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x0acfce92 mddev_init +EXPORT_SYMBOL_GPL vmlinux 0x0ae43b96 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b11a504 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x0b19ed7c apei_estatus_check_header +EXPORT_SYMBOL_GPL vmlinux 0x0b236c80 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x0b345425 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x0b3e22e2 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x0b52e502 apei_resources_add +EXPORT_SYMBOL_GPL vmlinux 0x0b6c1501 debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x0b6db953 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x0b7b9554 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0b9c16f5 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0baf1fec rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0be8cb31 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0bf907e9 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c254e19 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c67e29d modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x0c71c272 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x0c76676e inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range +EXPORT_SYMBOL_GPL vmlinux 0x0c9bfd61 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x0ca0058a usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0x0cbdb9f8 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cc2ced9 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x0cce610a scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x0cd10a4e work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0ceb241a usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x0cfadf03 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x0d0f4d34 xenbus_unmap_ring +EXPORT_SYMBOL_GPL vmlinux 0x0d13553f ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x0d2a060a wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x0d3e0a56 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x0dac5b20 acpi_ec_add_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x0dc720a6 acpi_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0x0e02e677 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e22167a regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x0e319b09 ata_acpi_cbl_80wire +EXPORT_SYMBOL_GPL vmlinux 0x0e4689f1 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x0e654828 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x0e73c17d ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x0e79bfc7 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0x0e96355c usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0x0ec210b8 xen_start_info +EXPORT_SYMBOL_GPL vmlinux 0x0ec6c52c usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ef06974 spi_populate_ppr_msg +EXPORT_SYMBOL_GPL vmlinux 0x0f146342 pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x0f4bdd3d acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0x0f6cd971 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fa138de xen_hvm_need_lapic +EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi +EXPORT_SYMBOL_GPL vmlinux 0x0fe2d570 xenbus_directory +EXPORT_SYMBOL_GPL vmlinux 0x100c48a2 unregister_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x10120caa rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x1040667a bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0x104ae24b usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x10856bdf devres_get +EXPORT_SYMBOL_GPL vmlinux 0x10d80da9 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x10e12379 usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x10e460e4 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer +EXPORT_SYMBOL_GPL vmlinux 0x1111c058 xenbus_dev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x113d4bc6 regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0x114f1a20 balloon_stats +EXPORT_SYMBOL_GPL vmlinux 0x115fe2d1 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x116f43cf sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1189b7fc kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x119af014 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0x11b83bc7 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x121f73bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x123e392f evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1253f87b kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12d04b18 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x12deb63c zs_get_total_size_bytes +EXPORT_SYMBOL_GPL vmlinux 0x12e34f2e usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x12ee4256 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x12fed638 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x13154042 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq +EXPORT_SYMBOL_GPL vmlinux 0x13608cd3 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x137c3764 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x138aff76 gnttab_init +EXPORT_SYMBOL_GPL vmlinux 0x13ae5484 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13c4398c ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x13f03ea5 sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x13f3bb52 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x1401c73f xen_swiotlb_map_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x14092c37 zs_map_object +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x145fd596 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x14a395b5 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x14ce2544 device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x14d3074c adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x14f1db56 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x14fd0cde tps6586x_write +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 0x150e69d6 acpi_ec_remove_query_handler +EXPORT_SYMBOL_GPL vmlinux 0x153a3a40 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x15403359 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x15474050 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x15781d63 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x157f6557 dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x15b0606e e820_any_mapped +EXPORT_SYMBOL_GPL vmlinux 0x15bfba01 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0x15c07523 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x15c9b594 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x15db9b6c xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1611d699 gnttab_map_refs +EXPORT_SYMBOL_GPL vmlinux 0x1624e970 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x16ca2647 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x171839aa pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x1724f34a init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x17513e5d anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub +EXPORT_SYMBOL_GPL vmlinux 0x1769e05a hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x1794b6f1 xenbus_register_driver_common +EXPORT_SYMBOL_GPL vmlinux 0x17bc9672 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0x183401a5 iommu_detach_device +EXPORT_SYMBOL_GPL vmlinux 0x183aba4c tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x1848d7d7 __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x1853653c btree_alloc +EXPORT_SYMBOL_GPL vmlinux 0x18552f56 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt +EXPORT_SYMBOL_GPL vmlinux 0x185bfead pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x186cbd0b disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18cdcefa posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x18d05520 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x18f83fab gnttab_grant_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0x191cecff vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x19276ce6 fat_setattr +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore +EXPORT_SYMBOL_GPL vmlinux 0x197f6a62 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x199051cf sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19ae6f98 xen_swiotlb_map_sg +EXPORT_SYMBOL_GPL vmlinux 0x19cf558b rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a00a361 pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a15055f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a418839 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x1a6cbe74 platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x1a9074f7 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x1ab88f62 serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL vmlinux 0x1ac39efd get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x1ad83009 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0x1adb9ae9 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1ae41ce8 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x1ae9e5d2 register_mce_write_callback +EXPORT_SYMBOL_GPL vmlinux 0x1b1436b6 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0x1b1d8bd3 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x1b3c9291 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1b8694ef free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1b9b37b2 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1baa0e73 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x1bcd21d3 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1c044cbc device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1c044dce regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x1c2175bf register_efivars +EXPORT_SYMBOL_GPL vmlinux 0x1c37d519 debugfs_create_symlink +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 0x1c931ca0 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x1cb289b9 dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x1cfc7324 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0x1cfd95c1 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0x1d135d7d device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x1d1fc44c i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x1d2201d4 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x1d459685 xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d6ee6fa sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x1d70e2ac crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x1d739e1c xen_set_callback_via +EXPORT_SYMBOL_GPL vmlinux 0x1dd08c3b cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x1de0e335 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1e2214a4 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x1e311590 unregister_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3a88fb trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x1e400371 ata_acpi_gtm +EXPORT_SYMBOL_GPL vmlinux 0x1e4eaaf6 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1e541146 zs_destroy_pool +EXPORT_SYMBOL_GPL vmlinux 0x1e586677 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8a14e6 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1ea32a31 ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1edb78d0 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x1f68f8c1 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1f8ec1b3 acpi_get_pci_rootbridge_handle +EXPORT_SYMBOL_GPL vmlinux 0x1f9de1fa pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fe90d5c ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x2005f155 iommu_set_fault_handler +EXPORT_SYMBOL_GPL vmlinux 0x201cf2a8 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x20388a11 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x204365e7 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x204fa599 xen_swiotlb_unmap_sg +EXPORT_SYMBOL_GPL vmlinux 0x205b6be1 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x2071f526 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x2085bbe9 securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x20a8ee0a timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20dee312 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x210cad66 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0x210e335f bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x2121dfa2 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x21248072 md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2131feb1 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x21335e1e skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x2154633c generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x215807a6 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x215adf78 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x21647a8e pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x21908a1c xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x21a2052e dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x21b56c93 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x21c67832 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x21caf84d skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x21d243bc sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x21e8dbfa usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x220d5bef cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x22201664 map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x222736d5 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x223784dc apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x22605382 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x22709d2c crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x22766ce1 usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x2292beb9 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x229bd424 wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x22c3a2ce zs_unmap_object +EXPORT_SYMBOL_GPL vmlinux 0x22e3df5b set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x235f63c8 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x23621af3 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x237db659 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2393d805 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0x23f4020f crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x24189c2c gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x24195c49 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x244f1b78 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x248c0195 uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24b526e5 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x24c7698a xenbus_write +EXPORT_SYMBOL_GPL vmlinux 0x24c82392 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2545c170 unregister_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x25646c42 blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x25ba2c1f vring_del_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0x25c0f8ba dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x25f23e77 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x2604da1d dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x262c3f66 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26370326 fat_fill_super +EXPORT_SYMBOL_GPL vmlinux 0x263ba3d8 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x26576139 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26716e04 xen_swiotlb_sync_single_for_device +EXPORT_SYMBOL_GPL vmlinux 0x26a43d11 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x26af8d91 ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c07301 debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x2720e563 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x273aab74 xen_have_vector_callback +EXPORT_SYMBOL_GPL vmlinux 0x276c0b74 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x279cb985 apei_exec_pre_map_gars +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e53a70 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0x27eebb1a cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x27f38452 dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f945bf relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x28055d81 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x288c4717 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x289cdee6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x28b6a2ca crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x28c52f50 debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28f46d49 device_create +EXPORT_SYMBOL_GPL vmlinux 0x29098c51 sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x295b118c usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x2965dff6 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x296cc200 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x296d5423 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x2970864f xenbus_alloc_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x2974ab66 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x297ef207 fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x29868518 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x29d29576 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x29d540c6 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x29e49109 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2a33d96e udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a81dc8e usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x2a87285e alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x2aa617cf mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x2ada9d6f dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0x2aec0b15 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x2afbc9fc md_stop +EXPORT_SYMBOL_GPL vmlinux 0x2aff34dd ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x2b2cecd1 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x2b36614a ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x2ba4f6d4 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x2ba5cd0a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x2bb6c9bc blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x2bc06d48 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x2bd72b76 btree_update +EXPORT_SYMBOL_GPL vmlinux 0x2bd8a418 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c6e7e74 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x2c7d9c64 xen_store_interface +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2c8cf544 virtqueue_enable_cb +EXPORT_SYMBOL_GPL vmlinux 0x2c8fd48a bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x2c9c686a da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb7b56f class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2cb8c848 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x2ccb4d4b md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2ccd0cda gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2cdda7a9 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cecb66e ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x2d0ebb89 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d25ae2c virtqueue_kick_prepare +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d350a7b pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2d4976cb bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0x2d4f19d8 yield_to +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d82be33 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2d9f2ce3 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x2da6aea2 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2deed90e usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x2df1862b device_attach +EXPORT_SYMBOL_GPL vmlinux 0x2e033d17 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2995a6 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3fa843 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e52c6eb crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2e68e570 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x2e6ffd06 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x2e9ea099 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x2ea39a4c usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x2ea9ad56 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x2eb1d10f xenbus_map_ring_valloc +EXPORT_SYMBOL_GPL vmlinux 0x2eb422af spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f1c53c7 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x2f20aa10 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f58309a xenbus_dev_remove +EXPORT_SYMBOL_GPL vmlinux 0x2f61319f blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x2f624289 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2f65578e led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0x2f857551 machine_check_poll +EXPORT_SYMBOL_GPL vmlinux 0x2f8da1a1 sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0x2f9df959 fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x2f9ffd55 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x2fa8b4ee ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x2fb571d2 unregister_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0x2fc26831 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x2fd97a5a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x2fea2142 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0x2fea4c29 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x2ff968a9 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x30094001 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x3074c699 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x307e1258 blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x309fe19d ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x30b8f383 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313f02ab rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x31421f20 ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x316c8e8c crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x316fe3a9 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x317d9015 rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x318920b1 register_dock_notifier +EXPORT_SYMBOL_GPL vmlinux 0x31b113b9 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports +EXPORT_SYMBOL_GPL vmlinux 0x31cd842e tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x31f8c806 usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x324e76d0 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x325e677c gnttab_grant_foreign_transfer_ref +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 0x32cf767d platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x32e660be sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x332a5471 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x333d90a5 spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x334fea84 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x33597f93 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x33712103 kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x33b96e5d apei_exec_write_register +EXPORT_SYMBOL_GPL vmlinux 0x33e2e1ae cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x340236e7 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x34290a3e usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x342a3c08 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x34551cba usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x348d8171 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x348e9c81 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x34ea4c9e sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x34f84644 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x35055b38 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3505e6e9 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3510706b usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x3513d4af xenbus_frontend_closed +EXPORT_SYMBOL_GPL vmlinux 0x351e5ad6 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x35339331 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x353d3b19 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0x3542c941 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x3543fdf2 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x3576b0d1 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x35d0a23e ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x35e1786e regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x360658f4 rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3634d2cd blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x366942d2 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36a31050 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled +EXPORT_SYMBOL_GPL vmlinux 0x36d83e37 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x3709a2bd blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x373bce29 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x374cd2f1 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3761a7b5 eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x37830549 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x3795218e tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x379d2800 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0x37c112ca usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x37d36afd hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x37f1ffbf gdt_page +EXPORT_SYMBOL_GPL vmlinux 0x380641ee screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x3832e166 xenbus_dev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x38620e38 gnttab_grant_foreign_access_trans_ref +EXPORT_SYMBOL_GPL vmlinux 0x38d3ab41 blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x3917ce01 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x395fbe86 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x3973cc1c css_id +EXPORT_SYMBOL_GPL vmlinux 0x39a8f841 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x39c682d5 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39e97f91 iommu_device_group +EXPORT_SYMBOL_GPL vmlinux 0x39f943a2 ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a2ed3b5 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x3a38dc65 memory_failure +EXPORT_SYMBOL_GPL vmlinux 0x3a41302b blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3a5376dd __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3a589a65 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0x3a5a8769 pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x3a73d015 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x3a8802ff zs_free +EXPORT_SYMBOL_GPL vmlinux 0x3aa24773 kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x3aa2f66c sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3b28e20c blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x3b45089f inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x3b4e4e16 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x3b7145bb apei_exec_read_register_value +EXPORT_SYMBOL_GPL vmlinux 0x3babdb1a each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x3bbefac6 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x3bcf2a14 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x3bd2ad6b usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bf7e806 iommu_iova_to_phys +EXPORT_SYMBOL_GPL vmlinux 0x3c5180bd tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x3c61d0c7 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x3c80fe5f inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3c9c6b05 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3ca9e1a6 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cb05b8e iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x3cb8f3ee ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x3cc7f833 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d1ade4f bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d470604 stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3d5f392d acpi_os_unmap_memory +EXPORT_SYMBOL_GPL vmlinux 0x3d6fb878 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x3d7ea99a gnttab_grant_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x3dad62f1 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3dd0c14a page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x3dde0e07 amd_get_nb_id +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3dfd85f0 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x3e0373be sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0x3e160b65 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x3e3bfe19 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x3e3ec01d i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e5fd10f iommu_domain_free +EXPORT_SYMBOL_GPL vmlinux 0x3e695c5f tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3edb8023 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f08cd2e ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x3f15a750 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x3f229c4c oops_begin +EXPORT_SYMBOL_GPL vmlinux 0x3f7dd213 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x3f84d4c9 gnttab_release_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x3f8a7a1f pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fe92d0a mce_register_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x3fed49de debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x3ffaa6f1 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4021f23b bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x4022821b crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x403a4a3d ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x408f5fe0 device_del +EXPORT_SYMBOL_GPL vmlinux 0x40a14649 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c9f343 xenbus_unmap_ring_vfree +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40f8ca53 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x40fb3360 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x40fdc9e6 wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x412962bb tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x414fe3cd wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x417ab30a eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x417ad15f pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x4180a503 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x418806ef power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x41955f62 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x419aeae2 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x41b01c07 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x41e3c073 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x42032a45 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x420fb87c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x42203770 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x425eabf4 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x426f13b9 e820_all_mapped +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x4297b25f firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x42afc1a4 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x42b22214 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x42b86eb6 ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x42c14efd crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x42d1165b regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x435b7d6d cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x4362b2ae fat_search_long +EXPORT_SYMBOL_GPL vmlinux 0x439869f1 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43d585ba crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x43d8551c sis_info133_for_sata +EXPORT_SYMBOL_GPL vmlinux 0x43ee8d8f pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x4401c16e dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x4426e156 iommu_domain_has_cap +EXPORT_SYMBOL_GPL vmlinux 0x4437c9fc user_describe +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444c9168 __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x446d16f9 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x44727911 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x4475cc6c cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x447cf119 fat_sync_inode +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44d1c620 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x44dc590d sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x450d806e skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state +EXPORT_SYMBOL_GPL vmlinux 0x455dddb5 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x4574872d crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458b524d register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x458dd328 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d14bdf hypercall_page +EXPORT_SYMBOL_GPL vmlinux 0x45d9b9b2 sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x460f31aa rodata_test_data +EXPORT_SYMBOL_GPL vmlinux 0x46238da4 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x462f4667 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x465065a7 fat_add_entries +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x46c0f6c0 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x46dca58a xen_find_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x46f732de queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x46f76889 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x46f7d94d bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0x470f766f virtqueue_disable_cb +EXPORT_SYMBOL_GPL vmlinux 0x47158797 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x4715c01a tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x471abc88 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472b8d77 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x478ec6cd crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x47c48f49 blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x47cf1bf0 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x47cfa7ff rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x47f1f1c9 dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x483fdfa8 __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x48682db9 perf_guest_get_msrs +EXPORT_SYMBOL_GPL vmlinux 0x488726ae __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x4894704d tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x489cfc19 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c065ad __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x48cdc20c wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x48d8926c device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x49198b79 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x491f0a43 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x494ca974 apic +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x499f905d flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x4a4fab21 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x4a564ada blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x4a59c95e __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4a7f75df register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x4a8cddcd udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a972291 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4adbe095 print_context_stack +EXPORT_SYMBOL_GPL vmlinux 0x4ae9da8e __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x4afb6520 da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b2e4d2e pci_get_hp_params +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4b1c20 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b8b935e tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x4baaf965 virtqueue_notify +EXPORT_SYMBOL_GPL vmlinux 0x4bb85a4e __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x4bc35b78 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4be76e28 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x4bf0d6d1 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x4bf4a205 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x4c4e0881 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x4c6326f1 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4ccd10ac inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4cdc7f48 swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x4d4561e4 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x4d603ecf ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x4d7eb775 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x4d80bda9 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x4df33753 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0x4e00074a tpm_read +EXPORT_SYMBOL_GPL vmlinux 0x4e0832ad regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x4e0a4482 trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e57723d apei_read +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4ebc6924 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x4ebc9616 uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ee9d253 bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f35fe74 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x4f651bd1 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x4f6689d2 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x4fb09d80 unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x4fb4ccd8 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x4fc3311a i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fd552cd rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff842c4 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x5026585c xen_irq_from_gsi +EXPORT_SYMBOL_GPL vmlinux 0x503220d6 kallsyms_on_each_symbol +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 0x508ec835 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50b328cc sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0x50ba3bec acpi_processor_ffh_cstate_enter +EXPORT_SYMBOL_GPL vmlinux 0x50bc6901 xen_swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x50c6bd37 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50d34286 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x51406098 pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x514291df exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x5159b39d __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0x515daf60 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x517c423b unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x5187ac4b xen_store_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x518a6d0e inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq +EXPORT_SYMBOL_GPL vmlinux 0x51c3e38e tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x51db2031 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0x520b9fed init_fpu +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52287b75 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x522e1c21 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x525b89d5 wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x52da83d2 xen_swiotlb_sync_single_for_cpu +EXPORT_SYMBOL_GPL vmlinux 0x52daeaeb spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x5315873d usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x5328ae80 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5372dede unregister_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5397aed9 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53fe52cd ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x5415c783 ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5432d15e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x543a16f2 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x54438909 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x5448341e rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54696cf6 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x548ed96f invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549e90f2 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x54b23e08 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x54cd9b04 dbgp_external_startup +EXPORT_SYMBOL_GPL vmlinux 0x5510c9e4 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x55208f76 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x55526907 xen_features +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x557dd91a regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x5583bdff relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x55ba7788 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x55c4a1e7 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x55f9635b fat_attach +EXPORT_SYMBOL_GPL vmlinux 0x562b9321 usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x562bb2ad cgroup_unload_subsys +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 0x564dea78 ata_do_eh +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 0x56886b19 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0x56947347 dmi_walk +EXPORT_SYMBOL_GPL vmlinux 0x569aac40 shake_page +EXPORT_SYMBOL_GPL vmlinux 0x56b700fd unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x56e7d899 unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x570135e4 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x570f3f71 sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x5736b3ae sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0x5736f1be device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x57689dda tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x576d4e46 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0x5779d445 xenbus_exists +EXPORT_SYMBOL_GPL vmlinux 0x57845250 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x578d7e77 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x5793c559 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0x579867d7 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x579d8786 wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c4691b queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x57cbfdaa mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x57e0a210 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x57ea6b4f unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x583959ec uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x583ff027 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5849a924 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x58bdcba6 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x58e02149 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x58e21f3c save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x58e942b9 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x58ff6bac get_device +EXPORT_SYMBOL_GPL vmlinux 0x59004cfd rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x5909be29 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x592980d4 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0x593138fe ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594fdea1 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x59876c06 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a0e56bd crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x5a1d5251 locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x5a2b1b67 gnttab_free_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a48fba2 disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x5a726186 digsig_verify +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a98364b pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x5ac2727f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x5af03a28 gnttab_claim_grant_reference +EXPORT_SYMBOL_GPL vmlinux 0x5b103f76 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5b39b12f register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x5b435139 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x5b5608b5 tpm_bios_log_setup +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5bfc1a5c blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x5c00d6d1 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x5c08e5ec pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0x5c1830af ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x5c268364 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x5c9aedf2 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5cb8a960 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x5cd166e8 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d1b8d8b device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x5d366dec gnttab_cancel_free_callback +EXPORT_SYMBOL_GPL vmlinux 0x5d36c5e1 rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x5d48a650 m2p_find_override_pfn +EXPORT_SYMBOL_GPL vmlinux 0x5d4dff17 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5d57c5d5 fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x5d607b47 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5d7f4470 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x5d87c067 register_acpi_bus_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5d8c902e blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x5d8e4744 xenbus_free_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x5d8eb031 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x5db18100 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de9026c spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e100d12 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x5e39974b tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x5e42131c bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e69ec34 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x5e6f7d5e synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x5e748a41 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0x5e7607da cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5e8ca84f debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x5ea0c63e led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0x5ea0f6a4 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x5eae3cda class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x5f147401 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x5f1e77ba ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f26fc1f pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x5f2da8c4 check_tsc_unstable +EXPORT_SYMBOL_GPL vmlinux 0x5f386d8e call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f7baf62 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x5fa67f92 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x5fb3927a acpi_get_pci_dev +EXPORT_SYMBOL_GPL vmlinux 0x5fb416bf ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x5fdf7bd2 aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt +EXPORT_SYMBOL_GPL vmlinux 0x6008577a nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x6012462c xenbus_dev_fatal +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x60677eeb bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x609d963c m2p_add_override +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a6242c swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x60c95350 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x60cd73ed pv_apic_ops +EXPORT_SYMBOL_GPL vmlinux 0x60f958d8 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0x60fcca6d cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x61109671 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x61313adc wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x613595bf ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x616a974c tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x618eb106 xenbus_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6194ffea do_machine_check +EXPORT_SYMBOL_GPL vmlinux 0x61c1c386 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x6205cab6 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x623803c8 hest_disable +EXPORT_SYMBOL_GPL vmlinux 0x627421d2 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x627a1d9f aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x62bea628 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x62df2c11 usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x63256dc3 i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x633560f4 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x635ec980 apei_exec_post_unmap_gars +EXPORT_SYMBOL_GPL vmlinux 0x6370abfb __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6375b854 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x639eb58e __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x6427e089 device_add +EXPORT_SYMBOL_GPL vmlinux 0x6438bc4c rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x64ed9359 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x6551e18a __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x65866e69 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x659482ca ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x65b899e7 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65d75fa7 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x65fce63f scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x661ae98d xen_register_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x6622bf3c __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x6627bc0c crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x662b2b84 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x663b158a crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x663c16d6 gnttab_grant_foreign_access_subpage_ref +EXPORT_SYMBOL_GPL vmlinux 0x6646687b md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x6657a48f i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66c1de37 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x67065206 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x672f453f class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x6739a503 balloon_set_new_target +EXPORT_SYMBOL_GPL vmlinux 0x673a1863 usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x676bc0c7 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x676e49cc inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x678dbd09 atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x679388dc vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x679b4ffe dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x67ab3d48 x86_platform +EXPORT_SYMBOL_GPL vmlinux 0x67e3dc11 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x684afb38 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x686d40c0 user_update +EXPORT_SYMBOL_GPL vmlinux 0x6872212e led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x687b73fa debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x689a3894 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x689cf2f8 rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x68b3166b seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x68cb234c device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x690e50b5 stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x6914773b pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692a8b75 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x698398fb usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x6987b782 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6994807f blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x69a6702f device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f5c800 usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x6a034f05 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x6a2d7006 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6a4e6501 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x6a50f440 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x6a5b8d1e rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7321f6 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6a820c76 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acad21f acpi_get_cpuid +EXPORT_SYMBOL_GPL vmlinux 0x6ad2d082 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x6adad0b1 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x6b092d84 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x6b20205c relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b2fcead mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x6b7d314a __put_net +EXPORT_SYMBOL_GPL vmlinux 0x6b807a5f gpio_sysfs_set_active_low +EXPORT_SYMBOL_GPL vmlinux 0x6b82c79d usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6ba1fd86 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x6bbaed18 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6bcb151d ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x6be41e25 __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x6bfa8c48 print_context_stack_bp +EXPORT_SYMBOL_GPL vmlinux 0x6c0ac312 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6c1251fd apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x6c2f5f92 usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x6c3ad1b9 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x6c479dd2 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c63c7ca xen_swiotlb_dma_mapping_error +EXPORT_SYMBOL_GPL vmlinux 0x6c6fb0ba ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cca9e59 simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x6cd9f526 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x6ce0ba01 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6ced828c usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x6d149e8a crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d4fdf52 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x6dc2d09b wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x6dd1f7e7 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x6dd592c6 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x6e4925ff i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6e58ddf0 gnttab_end_foreign_transfer_ref +EXPORT_SYMBOL_GPL vmlinux 0x6e78848a cpufreq_get_measured_perf +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6ea98361 ioremap_page_range +EXPORT_SYMBOL_GPL vmlinux 0x6eb01be9 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x6eb0b454 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6eb34ef4 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x6ecd81bb tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x6ef8481b usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x6efea6be inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x6f03ca3f crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f2f6493 noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x6f4d6940 pciserial_init_ports +EXPORT_SYMBOL_GPL vmlinux 0x6f5e4fb0 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x6f8e28e1 register_virtio_device +EXPORT_SYMBOL_GPL vmlinux 0x6fa4cf38 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x6fb0a03a pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x701323db platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x702062d0 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x703baf16 bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x704aae24 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x70648a6d device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x7099d94a blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x70ad3fc6 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x714e7591 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x715d3c73 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71798a22 usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0x71be3476 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x71c6a0a5 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x72040e3c find_vpid +EXPORT_SYMBOL_GPL vmlinux 0x722fcfeb crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x72a7bb56 blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72b78ad3 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x72cc279d crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x72d7700f acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0x73013896 xenbus_printf +EXPORT_SYMBOL_GPL vmlinux 0x731433ee unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0x731dba7a xen_domain_type +EXPORT_SYMBOL_GPL vmlinux 0x734a456b unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x7359cd8c ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x737615b4 regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x737b618a scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x737fb644 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7395f1e0 use_mm +EXPORT_SYMBOL_GPL vmlinux 0x73972453 fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73abc95e swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x73ba6b46 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73c3204c __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73db88ac fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x7414e89f adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x741f8983 bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x74366d01 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74453331 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini +EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x7473a910 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x747b08a8 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x748f86e8 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a2ea1e ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74adc64e tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x74ba86d5 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74c08941 kvm_async_pf_task_wake +EXPORT_SYMBOL_GPL vmlinux 0x74c8e515 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x74deb10c used_vectors +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 0x753cc6d8 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x75419296 vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x754541b5 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x75699c04 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x757ca21a __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x757d4ebc spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7587931e regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75ac8fa2 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x75d5281f inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x75f0fa04 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x76537864 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x76a5f011 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x7712771a unbind_from_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x772c63c4 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x7739af68 replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x775a6ef5 kvm_read_and_reset_pf_reason +EXPORT_SYMBOL_GPL vmlinux 0x77888fa1 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x77958345 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x77a82956 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x77a9b829 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x77d5dd73 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x78165663 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x78170f61 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x781fda74 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x7826cf49 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x7831ed35 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x78552dac xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0x785be9b7 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x78672a74 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78a5c3df pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x78f442b9 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794f6712 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x795c4eb6 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x796299a2 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x79ced8b8 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x79da31b6 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped +EXPORT_SYMBOL_GPL vmlinux 0x79fd4da3 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x7a0a0438 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a339bb5 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a7c5175 amd_erratum_383 +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7ac8e5b0 acpi_gsi_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x7ac9bb26 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af3af11 pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x7b09f87e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1432e8 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7b445fb9 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x7b466f98 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x7b5d1fe1 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x7b6605b0 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x7b8e7fa6 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x7b90d1a9 bind_virq_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x7bff79ea __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x7c034781 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x7c4ff0aa pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x7c54e976 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0x7c683434 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cdfb1b3 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d155f9a __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7d470dfd usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d79994b pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x7d8bde7a scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0x7d9d305a stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dc6b9cf xen_swiotlb_unmap_sg_attrs +EXPORT_SYMBOL_GPL vmlinux 0x7dd08c5c led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x7de5cd76 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e1c9a35 md_run +EXPORT_SYMBOL_GPL vmlinux 0x7e1ecdc5 register_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e594746 spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x7e5e301f unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e9f6016 xen_swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb009aa crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x7eb37021 device_register +EXPORT_SYMBOL_GPL vmlinux 0x7ec22f9a apei_estatus_check +EXPORT_SYMBOL_GPL vmlinux 0x7ec3a793 inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x7eec2de2 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x7ef69003 vring_transport_features +EXPORT_SYMBOL_GPL vmlinux 0x7efebff6 tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x7f1d1a9d ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x7f339efa __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x7f5ba5b1 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x7fb4129d __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7fbc7b0c get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x7fc8d03b class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x7fcb749a __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x7fd1b084 user_read +EXPORT_SYMBOL_GPL vmlinux 0x7fe88c21 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x8025f263 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x803307b9 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0x806e502f btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0x8089bd55 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x808ef8df hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x80afe525 flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80d633aa key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81079ecb ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x8111c3b8 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8120ae13 xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0x81321b05 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x814332ad relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x8168d0c5 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0x817503ae crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x817950b2 xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0x818c28c1 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x81ebace6 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0x81f3b0fc usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x823bd898 crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x824ce315 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x826739fc tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x8286630a driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x829d8125 fat_free_clusters +EXPORT_SYMBOL_GPL vmlinux 0x82cd19f3 register_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82dbec19 erst_write +EXPORT_SYMBOL_GPL vmlinux 0x82f776b7 gpio_export +EXPORT_SYMBOL_GPL vmlinux 0x83314713 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x838a21ea regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x838aeea6 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83b1d215 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x83b5732f driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x83ba8d7f __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x83bb14a0 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge +EXPORT_SYMBOL_GPL vmlinux 0x84418482 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x84419781 device_move +EXPORT_SYMBOL_GPL vmlinux 0x844271b3 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x8478e8cd ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x847f4644 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84b49a7e rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x84d35056 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x850e45a7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x85202d24 xenbus_probe_node +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x857dbd41 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x857f1fce blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x8585d582 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x85892fd8 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x859aea9a xen_set_domain_pte +EXPORT_SYMBOL_GPL vmlinux 0x85a5e807 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85d159dc dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq +EXPORT_SYMBOL_GPL vmlinux 0x85f2b734 __mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x85fa44ee __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0x862f98a3 xen_create_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0x863e57dd inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x86623fd7 notify_remote_via_irq +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86a36b6c tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x86a51007 gnttab_end_foreign_transfer +EXPORT_SYMBOL_GPL vmlinux 0x86eff299 mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x86f6742f ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x86ff951f wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8706f57f sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x870e16b7 xen_test_irq_shared +EXPORT_SYMBOL_GPL vmlinux 0x871aafeb usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87579b5f s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8783d294 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0x8794cd19 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x8795f44b rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0x87ab6cbb blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x87ade365 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x87cf0a90 injectm +EXPORT_SYMBOL_GPL vmlinux 0x87d839eb attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x87d9ee5a fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0x87dc99e0 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x8804ff0d xen_unregister_device_domain_owner +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8815f10c fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x883b7d7e spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x888f14e0 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x88900992 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x88971679 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88e1a688 xen_swiotlb_dma_supported +EXPORT_SYMBOL_GPL vmlinux 0x88f64381 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x890a4665 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x891a5a7f gnttab_max_grant_frames +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89344170 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x89349e96 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x8935c4b4 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x89387c64 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x89502f0c gnttab_subpage_grants_available +EXPORT_SYMBOL_GPL vmlinux 0x8956aeae apei_exec_ctx_init +EXPORT_SYMBOL_GPL vmlinux 0x89722c04 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x899cf95a gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x899f9239 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89d7bfff crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x89d98261 pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x89f73f19 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a0ed63c vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x8a4c533d find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a78989f irq_from_evtchn +EXPORT_SYMBOL_GPL vmlinux 0x8a86a124 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8aac8306 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x8aaf0dcb __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ad980b3 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0x8af91bbb register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8b04668e bind_interdomain_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0x8b39cf9d unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x8b573ad5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x8b631ba0 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x8b6386d9 xenbus_watch_pathfmt +EXPORT_SYMBOL_GPL vmlinux 0x8b66f9e0 xen_platform_pci_unplug +EXPORT_SYMBOL_GPL vmlinux 0x8b68ce9f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8b8119f8 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address +EXPORT_SYMBOL_GPL vmlinux 0x8b9cdb9f rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x8bc758f1 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x8bd7798c get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c06a108 xenbus_transaction_start +EXPORT_SYMBOL_GPL vmlinux 0x8c309bf3 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0x8c38074a unregister_xenstore_notifier +EXPORT_SYMBOL_GPL vmlinux 0x8c441936 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x8c5293d4 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x8c599e55 tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x8c668199 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x8cc98ad4 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x8ccd81bb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x8cd4348b sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x8cd9f935 setup_APIC_eilvt +EXPORT_SYMBOL_GPL vmlinux 0x8cde4420 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x8ce0964f ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0x8ce15f81 platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x8ce4f5a8 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0x8cf67380 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x8d00b53a pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x8d2342e7 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x8d7621fb dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x8db6418d sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x8dd44753 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x8df5daa0 elv_register +EXPORT_SYMBOL_GPL vmlinux 0x8e4c00f6 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x8e51939b class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8e7869d3 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x8e8deaba ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x8ea878ba __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x8ebd8d50 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8edfc605 acpi_processor_ffh_cstate_probe +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f7213b2 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8f743864 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x8f9dd172 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x8fae9830 usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x8fbc647c spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x9003aa50 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0x9009602a acpi_bus_get_ejd +EXPORT_SYMBOL_GPL vmlinux 0x902089a9 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x9047b480 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x90554bf6 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90698ac0 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x9083dc1d ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x908f8699 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90ab4747 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x90c3926f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x90dc29df aout_dump_debugregs +EXPORT_SYMBOL_GPL vmlinux 0x910beb5b xenbus_probe_devices +EXPORT_SYMBOL_GPL vmlinux 0x914074bf usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x916d5d47 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0x91807aa4 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91990870 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e08a7e xenbus_dev_changed +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x924423ae rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x92560281 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x92ac592a pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x92caf49e ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x9312d80e evtchn_put +EXPORT_SYMBOL_GPL vmlinux 0x93260715 register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x934da3c4 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x935eb71d blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x935feda0 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x938af17e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x938b24c5 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x93a742a3 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x93abb1c6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x93cb828b usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93e9bc22 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x93ed472a driver_register +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x9420d237 xenbus_read_otherend_details +EXPORT_SYMBOL_GPL vmlinux 0x943fc708 xen_setup_shutdown_event +EXPORT_SYMBOL_GPL vmlinux 0x944f6b8b mmu_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x94833264 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x949aadad pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x949b5503 usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x949cb92c pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +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 0x952202e3 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x9559a228 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x957b8058 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x957d6703 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cbefb1 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x95cfcb3b sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x95d8acd9 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x95ee6ef3 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x96008ae8 ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x961e0a8d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9642e329 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x964add15 xenbus_scanf +EXPORT_SYMBOL_GPL vmlinux 0x964d5c39 acpi_os_map_memory +EXPORT_SYMBOL_GPL vmlinux 0x965262ae crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x965ba493 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a9a3e4 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x96b6bd21 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x96b81e3a cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f57427 ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x9703573d fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x97231f67 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x97550dfe inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x9761a29c cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x976c62ec pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x97922784 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x97ba3e92 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0x97d74383 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x982e7436 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98677020 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x9867f0d7 i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x988c1e6f fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x989170c0 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0x98b3a4a2 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x98c8f920 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98f885de crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9933bc68 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99b8cb6e __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a3e8ef1 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9a4d1034 idle_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x9a61809f fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x9a655896 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9a9a5989 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ad70086 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9aefe71b rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x9b01167a blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x9b770527 sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x9b85eda7 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x9b97b746 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0x9b9f3648 pcibios_scan_specific_bus +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bb9c74f sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x9bc6cab6 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x9bd0690b netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9bd72b78 apei_write +EXPORT_SYMBOL_GPL vmlinux 0x9be8fd84 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9bee5df2 inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x9bf07fbc regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x9c07d420 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x9c1e296b md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9c2de449 memory_add_physaddr_to_nid +EXPORT_SYMBOL_GPL vmlinux 0x9c388791 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9c48717e sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x9caa70a5 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x9d06688b register_xenbus_watch +EXPORT_SYMBOL_GPL vmlinux 0x9d1f52b4 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x9d209a75 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x9d3850e1 gnttab_alloc_grant_references +EXPORT_SYMBOL_GPL vmlinux 0x9d425075 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x9d4e47cc pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x9d9e155d pv_info +EXPORT_SYMBOL_GPL vmlinux 0x9dd0b747 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x9dfb2ef1 xen_swiotlb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x9e05ae3f blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x9e2693b2 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x9e3779b3 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x9e54cdfb pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x9e653b67 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x9e6e3949 skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9ebc8b82 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x9ed3143c leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x9eea7d1e ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9faa900c tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fed671a pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x9ff1f79b power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xa0143abc sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xa0242165 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0xa0283eba pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa0337798 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xa045888f pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0xa0542559 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xa05d092a ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa0773e60 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xa0933cab posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xa0c71dac spi_populate_sync_msg +EXPORT_SYMBOL_GPL vmlinux 0xa0d123ed fat_remove_entries +EXPORT_SYMBOL_GPL vmlinux 0xa0e4cf63 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xa0f87a79 usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xa10ce7b8 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0xa11b56f2 task_xstate_cachep +EXPORT_SYMBOL_GPL vmlinux 0xa11bff98 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0xa11e1183 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa1a6ebb8 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xa1aa5c5a iommu_domain_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa1ba3248 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa1f53c74 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xa221a4c2 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xa23c8c3a spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0xa23ccaed transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xa24c6dc8 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa2e67f08 acpi_bus_generate_proc_event4 +EXPORT_SYMBOL_GPL vmlinux 0xa2f68c60 m2p_remove_override +EXPORT_SYMBOL_GPL vmlinux 0xa34d05c4 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa3527f5f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xa353fffc xenbus_rm +EXPORT_SYMBOL_GPL vmlinux 0xa3725984 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa39c9a36 pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3cea371 tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0xa3cf92b3 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0xa3d9cb46 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa3e99f85 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa452f2a4 xen_pirq_from_irq +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa482bb65 devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa493764b handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0xa499e61f get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0xa4b69537 mmput +EXPORT_SYMBOL_GPL vmlinux 0xa4ca0d4e unregister_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa4d58669 math_state_restore +EXPORT_SYMBOL_GPL vmlinux 0xa51058f9 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xa56a33c3 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa56e8e81 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xa57b2f4d get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0xa59190e8 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xa591bef0 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xa594da29 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xa5a33c62 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xa5dc8ff8 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61382b7 sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xa6175dba driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64f814e tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xa66438e8 erst_read +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6ba1b41 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa70bfad6 wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa722a819 cpu_has_amd_erratum +EXPORT_SYMBOL_GPL vmlinux 0xa7275b4b wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xa735c1f8 stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa7411356 bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa764c3cc tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0xa79e7268 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xa7daa09a agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7f9aa73 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xa8106236 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xa818e09c ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0xa82861fd sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xa860e872 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0xa88f0868 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xa8b82a53 xen_destroy_contiguous_region +EXPORT_SYMBOL_GPL vmlinux 0xa8cf1ceb register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa9126bff hpet_set_rtc_irq_bit +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa93fcc6c regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xa95107af xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xa95d6a8b rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa982bf7e ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xa9a82042 gnttab_trans_grants_available +EXPORT_SYMBOL_GPL vmlinux 0xa9c4c2b1 ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9cb1b26 proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xa9fc3f54 gnttab_grant_foreign_access_trans +EXPORT_SYMBOL_GPL vmlinux 0xaa135fc2 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xaa201592 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xaa26c88a klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0xaa2d0071 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xaa3f13f7 register_acpi_hed_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa5241f9 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0xaa545b17 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0xaa660039 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0xaa6f9927 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa8c8ea9 xenbus_map_ring +EXPORT_SYMBOL_GPL vmlinux 0xaaa8e372 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaae1b25 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaab7c4e4 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0xaadc0906 timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xab01acbe gnttab_request_free_callback +EXPORT_SYMBOL_GPL vmlinux 0xab106afd skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xab67d47f input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab7aaa0d led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xabdfb250 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0xac27702a inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xac71e7c9 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xac9c3149 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xac9ce195 kvm_async_pf_task_wait +EXPORT_SYMBOL_GPL vmlinux 0xacac79bc sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0xacafa8e7 vector_used_by_percpu_irq +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacf86a21 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0xad11fc19 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xad5990fe sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xad95c822 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xad975ac9 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xada739a7 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xadb49a4a pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadcd58fb xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae3af27a tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7c5411 ms_hyperv +EXPORT_SYMBOL_GPL vmlinux 0xae928185 bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaea70c07 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xaf123aa8 zs_create_pool +EXPORT_SYMBOL_GPL vmlinux 0xafc09a0c add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xafcaced2 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0xafda6d79 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xafef64f0 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0xb028b741 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xb07522da tpm_show_owned +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 0xb1519a54 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xb15fa14e crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xb163a440 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb173f09d securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1b7aaf2 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xb1bd9dab dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1f48e41 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xb1f7e1ca rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb22dc51d crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xb254854e usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xb2650213 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb27caab8 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb2ba2475 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init +EXPORT_SYMBOL_GPL vmlinux 0xb3328331 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb36290a8 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b68ae9 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0xb3fac92d rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0xb4106156 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xb41128ff __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0xb43b1dd5 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xb4412a9f usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xb446add0 debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xb4759adc stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xb4d0d6a5 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL vmlinux 0xb4dfe10e tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0xb4e14553 gnttab_query_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb5011846 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb51b7513 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56fd191 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xb581b570 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb58fe682 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c81682 page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb5f31556 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0xb5fe233b sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xb621db65 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0xb6230f1f gnttab_grant_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xb63f86a0 ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xb6667c09 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb68eb828 transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6b1492d platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xb6bd9902 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xb6bedf5e debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xb6c2c28c crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xb6dc8c85 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xb6f38598 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0xb7025069 intel_idle_cpu_init +EXPORT_SYMBOL_GPL vmlinux 0xb718f2f9 sfi_table_parse +EXPORT_SYMBOL_GPL vmlinux 0xb72547af hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0xb7366675 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb796bf6d ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7e2eb91 mce_cpu_specific_poll +EXPORT_SYMBOL_GPL vmlinux 0xb7ebc0d2 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb8125bc0 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb84556f4 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0xb85553a5 platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0xb86647a1 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb8a0a17f usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xb8b5529c inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xb8c9805c spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xb8db2982 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xb90101d5 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb9048062 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xb91b21ff usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xb94db510 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xb99cc30c rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xb99d5837 xenbus_read +EXPORT_SYMBOL_GPL vmlinux 0xb9b52e76 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9c82a7d usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0xb9c94060 __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9eec7d5 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xba08dc30 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xba12b8c4 tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xba22a05d pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xba3c6ccb devres_release +EXPORT_SYMBOL_GPL vmlinux 0xba4c85cb default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xba4df004 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xbaa9d1c3 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xbab44ab6 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xbab6aa23 vring_new_virtqueue +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +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 0xbb32a5e0 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0xbbb38239 btree_last +EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info +EXPORT_SYMBOL_GPL vmlinux 0xbbcfc40f ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc7d471c page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xbc94a812 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xbc99cf1e usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcdee0b5 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbd2957f4 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0xbd2a78f6 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0xbd506a46 unregister_hotplug_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdb47b1d class_create_file +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 0xbe085bec platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe2876c9 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0xbe4ef9ee put_pid +EXPORT_SYMBOL_GPL vmlinux 0xbe696e3e ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xbe99ca2b ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xbed20d9a __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0xbf2658a2 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xbf31f8ce ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xbfa19349 vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports +EXPORT_SYMBOL_GPL vmlinux 0xbfd0d132 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc048cf68 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc04a5611 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0xc051b94e class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0xc05998b5 ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +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 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +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 0xc18c5919 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xc18ed5fa pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xc1d119c6 __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0xc1d8c58b da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xc1e17166 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xc1fb1f50 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc241721d rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xc26351f8 bind_evtchn_to_irq +EXPORT_SYMBOL_GPL vmlinux 0xc26c2ec7 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xc2766572 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2830c7f blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0xc2975718 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xc2c6a0dc i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xc2f492f4 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xc318712b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc366f3d7 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc387244e ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc38cd6e5 md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3aefac3 irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xc3af2020 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xc4034caa enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc466df89 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4a5946c usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc4b3693c fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc4ce6189 idle_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask +EXPORT_SYMBOL_GPL vmlinux 0xc52bbffc ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xc5397da6 xenbus_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xc5b3a256 unregister_efivars +EXPORT_SYMBOL_GPL vmlinux 0xc5c264a5 amd_erratum_400 +EXPORT_SYMBOL_GPL vmlinux 0xc5cdb8ae __add_pages +EXPORT_SYMBOL_GPL vmlinux 0xc5ef84ab ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc61bf998 xen_pci_frontend +EXPORT_SYMBOL_GPL vmlinux 0xc62bb721 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xc62da024 da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66e33c8 dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xc682a79a debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xc6c93bf1 fat_alloc_new_dir +EXPORT_SYMBOL_GPL vmlinux 0xc6d7ad42 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc7002ac4 evtchn_make_refcounted +EXPORT_SYMBOL_GPL vmlinux 0xc70d965e dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xc726ce1b dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xc7277dbd regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc741dbab blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7767bef pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c5a635 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cb1267 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xc7d35e39 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xc821805e __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xc84233a8 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xc850c7c8 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0xc8516208 crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xc85ad4a5 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc8739e4b dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event +EXPORT_SYMBOL_GPL vmlinux 0xc8849528 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc899c0f2 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d04ce7 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc8f9ae8a crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0xc8fa86cf inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xc8fd129f usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc91bfaea console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xc92760a4 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc992c63b gnttab_unmap_refs +EXPORT_SYMBOL_GPL vmlinux 0xc9a048c4 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0xc9b95aa9 fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xc9c45421 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc9daf184 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xc9fe6766 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xca0acc40 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xca52e37f fb_deferred_io_open +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 0xca862b93 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xcab58895 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcad0f33c lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0xcb122738 usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb4535ee queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xcb75fc36 serial8250_modem_status +EXPORT_SYMBOL_GPL vmlinux 0xcb89ef87 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xcb9ce1c4 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0xcba8c601 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0xcbc62690 crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xcbe23449 __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc0b0765 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0xcc18d05c cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc2e8c93 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xcc365a68 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xcc3da32d aer_recover_queue +EXPORT_SYMBOL_GPL vmlinux 0xcc3dddd1 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xcc6ab305 is_dock_device +EXPORT_SYMBOL_GPL vmlinux 0xcc8f490c __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0xcc9bdf7b device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability +EXPORT_SYMBOL_GPL vmlinux 0xccffa305 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcd37e1d4 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xcd4ef644 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcd9b331e ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xcdc9d239 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce53f955 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xce561630 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xce678ffa sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce791a73 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xcead8b9a pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0xcec48cf5 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xced0cf31 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xcf066890 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xcf0f4181 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0xcf544174 virtqueue_kick +EXPORT_SYMBOL_GPL vmlinux 0xcf616d8d dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0xcf9d4f1e ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfd04f84 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xcfde5862 __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xcff3f457 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xcffa2aff spi_populate_width_msg +EXPORT_SYMBOL_GPL vmlinux 0xd00b7d86 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd0458ccb xenbus_strstate +EXPORT_SYMBOL_GPL vmlinux 0xd057e9d9 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0xd069dc69 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xd071586d xen_swiotlb_sync_sg_for_device +EXPORT_SYMBOL_GPL vmlinux 0xd09cfca5 sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xd0a2988b input_class +EXPORT_SYMBOL_GPL vmlinux 0xd0a7e018 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0d253ba dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0xd0ee2e63 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd1280f86 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd1507e59 erst_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1592068 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xd1600a2f crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd186f2e4 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xd1a15054 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0xd1a452f6 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1d01cdc exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xd1dac87c register_acpi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd288036d cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0xd288539a led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2c58ab2 apei_exec_noop +EXPORT_SYMBOL_GPL vmlinux 0xd3149692 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd36706d3 sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd37958c3 xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd3b9dfe5 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xd3da82b9 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xd3e82843 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count +EXPORT_SYMBOL_GPL vmlinux 0xd4a244d6 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4cda907 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4dd6643 elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4e418e3 agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xd4fd304e da903x_update +EXPORT_SYMBOL_GPL vmlinux 0xd517ea27 stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xd53bc067 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xd566829a sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xd5673883 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd60cebd9 serial8250_rx_chars +EXPORT_SYMBOL_GPL vmlinux 0xd6283b04 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd6a8427a regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd6abd01c init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0xd6ed3a8e cper_next_record_id +EXPORT_SYMBOL_GPL vmlinux 0xd6f7a8fc transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd71bbdbf tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd72feba2 xenbus_read_driver_state +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7abbb9f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd7d1c0fc shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7e55e55 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd80a0b2b skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd833d8b0 hwpoison_filter +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd874d26a sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xd875a985 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd88cd433 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xd8c3be51 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xd8c4474c pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xd8cd461e pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0xd8d09257 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xd8e2da31 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd8e6e3cb pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xd8f400c3 xenbus_register_frontend +EXPORT_SYMBOL_GPL vmlinux 0xd8f58b90 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xd91262fe usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges +EXPORT_SYMBOL_GPL vmlinux 0xd91b5e95 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd91f3341 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd94fc440 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xd9552321 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0xd97fe007 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd9b5fc05 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xd9d259e4 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0xd9d70264 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xd9fe7d2f device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xda12db56 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda407e94 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4f257a pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xda5c435d dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xda6be209 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xdaa8f33c shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xdab50ae7 fpu_finit +EXPORT_SYMBOL_GPL vmlinux 0xdaba8590 xen_xenbus_fops +EXPORT_SYMBOL_GPL vmlinux 0xdad31990 find_module +EXPORT_SYMBOL_GPL vmlinux 0xdad52b6a tpm_release +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb470551 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdb9a707f regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0xdbc10658 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc14a211 xen_hvm_evtchn_do_upcall +EXPORT_SYMBOL_GPL vmlinux 0xdc1f8f2e register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcbf7b0b ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdce57037 apei_estatus_print +EXPORT_SYMBOL_GPL vmlinux 0xdce851cd sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xdcf03c48 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xdcfc0ede scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0xdd1c96d1 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xdd1eac93 inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd6618ba btree_remove +EXPORT_SYMBOL_GPL vmlinux 0xdda6d89d sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0xddd3a603 ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde178774 perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0xde3ce682 usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde47088e wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xde4e19ba klist_next +EXPORT_SYMBOL_GPL vmlinux 0xde7a017a iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0xde9e5cbe sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xdeb87602 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xdee54861 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0xdf0ca62a pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf1119c6 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xdf22ed9b crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0xdf2de7b4 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0xdf5ee13f cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0xdf72a1ec xenbus_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xdf77beaf scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0xdf912a65 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0xdf923981 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0xdfd596f5 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0xdff3bbf2 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe0130dce usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe01413e4 user_match +EXPORT_SYMBOL_GPL vmlinux 0xe0153a89 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xe0283d2e ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe05848e9 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe06db289 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0aa9a7b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0ee4d6e restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin +EXPORT_SYMBOL_GPL vmlinux 0xe116b7b3 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe1611c90 ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0xe1800054 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe1bf57ea spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0xe2245a0b crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe2d667c0 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe33fa584 ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler +EXPORT_SYMBOL_GPL vmlinux 0xe3dd228f spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0xe3e571c4 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0xe3f102d9 kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe40f015a power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0xe41534ce bind_evtchn_to_irqhandler +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4428977 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xe45461fb wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe4692d5b regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xe46d9186 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xe4e68bc8 apei_map_generic_address +EXPORT_SYMBOL_GPL vmlinux 0xe50ba51c sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0xe51ab642 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5943897 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xe59bc531 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xe61a6d2f gpio_unexport +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +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 0xe6756379 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xe69b2578 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe70c5c97 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0xe71d0ac7 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe7422825 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe78322d9 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xe78b065b blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe84c12a6 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL vmlinux 0xe85eb0b3 platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8697e62 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8b7a5e7 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0xe8bfc9d2 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xe8ececed sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xe8fe01c8 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0xe9011563 fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xe903b3dd pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0xe9237db6 scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe928b35f rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe94105ee regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe98b1d48 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d505c2 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe9e74624 tpm_bios_log_teardown +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea1a5f1f power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xea69e30e pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xea71f815 xenbus_grant_ring +EXPORT_SYMBOL_GPL vmlinux 0xea766ba8 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeab1babb skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xead4784c register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xeadf816e klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeb0c28b5 register_virtio_driver +EXPORT_SYMBOL_GPL vmlinux 0xeb311c2f skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0xeb370805 __apei_exec_run +EXPORT_SYMBOL_GPL vmlinux 0xeb3bc702 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xeb413650 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0xeb4dcd64 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeba745e1 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xebcdc7f9 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xebd47db1 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0xebddee77 acpi_bus_trim +EXPORT_SYMBOL_GPL vmlinux 0xec0cc461 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec333e9c ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xec35ed81 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0xec5c672e devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xec6b4005 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xeca0aa35 iommu_attach_device +EXPORT_SYMBOL_GPL vmlinux 0xecb13c8a sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0xecc3c7d7 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xed02b6f3 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xed1a9dab sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xed3898bd fat_flush_inodes +EXPORT_SYMBOL_GPL vmlinux 0xed39a4b6 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xed43dbcd tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xed941917 virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL vmlinux 0xedafbf4d attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xedbc6f67 gnttab_end_foreign_access +EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 +EXPORT_SYMBOL_GPL vmlinux 0xee555a67 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xee8aa207 ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xeeabc394 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0xeec7ddbb xenbus_dev_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeecefdd0 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xeefcb215 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xef1f6e23 apei_resources_request +EXPORT_SYMBOL_GPL vmlinux 0xef314847 zs_malloc +EXPORT_SYMBOL_GPL vmlinux 0xef572c06 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef782b88 gnttab_grant_foreign_access_subpage +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefbd5148 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0xefdbd121 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xeff0051d hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xf008507c module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xf0186aa4 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf023c74c fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xf05797ee scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf08973da PageHuge +EXPORT_SYMBOL_GPL vmlinux 0xf097793b virtqueue_get_buf +EXPORT_SYMBOL_GPL vmlinux 0xf0e0ed79 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0xf0eae6d2 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xf0ef0e59 find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xf0f8bff1 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xf105b27d usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xf1215e9f simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf13253ca watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a92a7b inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1b551d9 ibft_addr +EXPORT_SYMBOL_GPL vmlinux 0xf1c06a68 ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0xf1d87fb1 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xf1e40773 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0xf2247551 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xf265f40b xenbus_bind_evtchn +EXPORT_SYMBOL_GPL vmlinux 0xf2783ac7 ref_module +EXPORT_SYMBOL_GPL vmlinux 0xf2787d83 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0xf2c6103d subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xf2f9cdf2 fat_build_inode +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf2fe08f0 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0xf2ff4199 xen_swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf37db355 xenbus_watch_path +EXPORT_SYMBOL_GPL vmlinux 0xf3861e59 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0xf3a34836 xenbus_dev_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3d93b64 xenbus_register_backend +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3eb91d2 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xf4104315 serial8250_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0xf424ea3a platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0xf4434f4b spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xf48037ca proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf49c2fc9 acpi_pci_check_ejectable +EXPORT_SYMBOL_GPL vmlinux 0xf4a0462d cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf4c6c53f bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0xf4e526c0 pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xf4fa76b7 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf5382bf0 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5559d6d rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xf559e4de bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xf570d314 bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf5785b42 evtchn_get +EXPORT_SYMBOL_GPL vmlinux 0xf5945bac gnttab_free_grant_references +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5f0b242 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0xf6323a50 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xf64363e4 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0xf6748423 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xf67d6fb5 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xf67f815e tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xf682f72e ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e5a52b xenbus_dev_is_online +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eaace9 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0xf6ffa944 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xf7016530 xenbus_gather +EXPORT_SYMBOL_GPL vmlinux 0xf714002d tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf7322bc8 pv_time_ops +EXPORT_SYMBOL_GPL vmlinux 0xf7354799 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf735c56f hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xf73afcf6 apei_get_debugfs_dir +EXPORT_SYMBOL_GPL vmlinux 0xf73eb848 perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0xf759f097 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf7655457 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0xf769d5f9 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xf7742a66 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0xf775cbe8 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xf7a14f56 apei_mce_report_mem_error +EXPORT_SYMBOL_GPL vmlinux 0xf7a63208 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xf7ec8d4f swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0xf7f71f1c pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xf87200da md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8d19160 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0xf8d349b6 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xf8f06c6b crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fda6f6 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf9153ae8 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf95cd1c6 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xf96e7252 fib_table_lookup +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 0xf99fc135 device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9bc5205 gpio_export_link +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9fc56ba cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa1ddf52 ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa1f4662 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0xfa4a647e klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xfa59bb17 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xfa6796f9 unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xfa8d7c9b user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa7a15a pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb17dec1 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb2c3718 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xfb2dd074 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0xfb312286 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb3f4d0c cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb97ec74 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xfbc26e00 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc35e8c3 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc3bb910 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xfc565008 sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0xfc5ea807 crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xfc968c8b apei_exec_write_register_value +EXPORT_SYMBOL_GPL vmlinux 0xfcbe3031 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xfcc61a07 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0xfcd44de4 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcf17d32 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xfd0d4d42 put_device +EXPORT_SYMBOL_GPL vmlinux 0xfd387ecf sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xfd48a217 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xfd51b281 gnttab_end_foreign_access_ref +EXPORT_SYMBOL_GPL vmlinux 0xfd546904 inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xfd571d09 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfe727411 get_phys_to_machine +EXPORT_SYMBOL_GPL vmlinux 0xfe92d248 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea8d931 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfee73e17 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xff202b41 driver_find +EXPORT_SYMBOL_GPL vmlinux 0xff27562e max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0xff5037fc crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0xff539a88 ata_acpi_gtm_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffde3798 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xffe6c306 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xffef9f73 __pci_complete_power_transition --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/amd64/generic.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/amd64/generic.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp.compiler +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp.compiler @@ -0,0 +1 @@ +GCC: (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2 --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp @@ -0,0 +1,12649 @@ +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 0x0e7f37e0 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0x46a129ac uPD98402_init +EXPORT_SYMBOL drivers/bcma/bcma 0x7b55ff19 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_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 0x1950e289 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x23f18cb3 pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x2591ef94 pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0x57db50e2 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x777aabb2 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x7a29872f pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0xb6f600ac pi_disconnect +EXPORT_SYMBOL drivers/block/paride/paride 0xbc4063db pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xc0bf13d3 pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0xdbf99a95 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0xef3d60dd paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xf67e3dbf 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/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1e9988f6 ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x32eb7865 ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x680e43f2 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x7ee7bc92 ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa30495d2 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/edac/edac_core 0x93a771e6 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04dd92ce fw_core_add_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x056645b6 fw_send_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0d23c012 fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0x118ca14a fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0x16e91e21 fw_csr_iterator_next +EXPORT_SYMBOL drivers/firewire/firewire-core 0x1ccc657d fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21aa66f0 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x21fa9181 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2885fec5 fw_get_request_speed +EXPORT_SYMBOL drivers/firewire/firewire-core 0x2d17fe88 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3c56ef91 fw_workqueue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x3ff6ea3d fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4647f4c5 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x4d5d4eca fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x57479a7e fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x63e626aa fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0x65c9438b fw_csr_iterator_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0x733e3375 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 0x8b989169 fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8dbe93a8 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9690d2a6 fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x971aa1a5 fw_iso_context_stop +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9831c17f fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9dfacae1 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa278132d fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb84a0ea6 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbbc1a25a fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc7b8695f fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xddead5d6 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe180ed0d fw_core_remove_card +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe39bf31d fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf420acb6 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x00e667cd drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x015c4620 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03250dde drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04af1a05 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x090d1e34 drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0adbaef5 drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0b04079c drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0cf7a68e drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e190131 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f076286 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f739d9c drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f82e87f drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0fccafb1 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11ae8c7f drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b876b7 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12852d71 drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12ec3f21 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x148bb5d4 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x155ba397 drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15835a73 drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15bd3ed1 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15fd0e1d drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x170a0c47 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1936d2ec drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a6c6742 drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1aa77ee0 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1b983a50 drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bccdf4c drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1c74a1b1 drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f662c5a drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1fff09ed drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20d98015 drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2204f7b6 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23b3d989 drm_plane_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x264e3e3c drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26e45580 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x26e79a49 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28ea2fa4 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x29fe7c18 drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a54d4da drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a8d844f drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2c68d73c drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d20e5ca drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d8f002d drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e55e338 drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f1631fa drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2fa92b8e drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30f6b565 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x346127a7 drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35a40149 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x36f2c485 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x370bfa38 drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3abb6a0d drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3e267a80 drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eefb3c7 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ffc66b0 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x404db35b drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40ff876a drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4197e469 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x42da366d drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4455dd7c drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x45cf3720 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x46a13c20 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47d586f2 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4833ac85 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48d6954d drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48f5a737 drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b65545b drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c2fcfb1 drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4d3dbf20 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e2cd096 drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4e856544 drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x50113e9b drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x56b89ef4 drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a268d54 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5a5975c6 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5c943c6e drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5e4e47d0 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6044956f drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x614061b4 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61c0c05a drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61ce0f7d drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6260e364 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x641536fb drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65ada918 drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x66aa394a drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x67f4de78 drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68dc4088 drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x69ec2084 drm_calc_vbltimestamp_from_scanoutpos +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 0x6d7d7835 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e20589c drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e3201fe drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70afc0b7 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70b6a2c6 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x70c60380 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x72c993c5 drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x750a61c5 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7554ba4f drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7759e840 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0x790ccb52 drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7938eb1c drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a9230d4 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3d88d1 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb26d39 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cea0a27 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d8fe09a drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7e943421 drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7f715ad8 drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80dbdab6 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x81700779 drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82cfc6a7 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0x82e5660a drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0x83775813 drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x84618c38 drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8673f665 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x89004878 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c4d7e09 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8d15d7d9 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8dcaadfd drm_poll +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 0x8e00664e drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8e65e69f drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8eff9111 drm_ht_find_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f6b22c8 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90a9de46 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x90bc60d2 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93548b7d drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x93c2537c drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9612ac72 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x983929db drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x993aea6f drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x998b974f drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f91de4 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9a386d0c drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b402ae6 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d5a9548 drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9e2433ef drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f2e8cbe drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9f454da4 drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa13a6c17 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1e7237e drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa2ca02f0 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa488381e drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7984573 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa827b2e0 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa2d5ba2 drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xab3054f1 drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xadc7eb8d drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb08b46d7 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43783db drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb51549ec drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6702dce drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6dca714 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb6f3f2e1 drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb75a531a drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb896ff31 drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb981e0a5 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ab6889 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9fa8d2c drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbb1bdc1a drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbc46d222 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd5eaec3 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbf1f7a89 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc09f79bd drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2634209 drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2d95311 drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc38a8bb8 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc8581d25 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcee36692 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd143f242 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2b5d94d drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd303731b drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3bd68c9 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd431287e drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd70f0801 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdac78009 drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbd2ba4e drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc687a84 drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde486dbe drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe070369b drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe23037df drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe2857f44 drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe28843c0 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4dc9784 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4ea70f2 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5e44546 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6403777 drm_mm_search_free_in_range +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 0xebea3e6d drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee6fc9a5 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xee9594a0 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeee068aa drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xeefaed6f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0567db4 drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf0b21ff4 drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf10a80da drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf3a36552 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbb80ccc drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x00aa7110 drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x03c88d2a drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1ee50742 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x22775659 drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x26c1c949 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2b1661fe drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2da796d1 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x31a34b21 drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3358d59e drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x43928eb9 drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55433254 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55bf5e0f drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58d48a64 drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x58eb7cd1 drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x5ab4acc6 drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c129695 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x711a004a drm_dp_link_rate_to_bw_code +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x76403afe drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7a9bf6f5 drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x7b53e8be drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8667efc9 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8b5526e7 drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x90572710 drm_fb_helper_debug_leave +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x933ea903 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9587f43d drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa0f09878 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa98dacf4 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xadeaeadb drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb3327352 drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbaeee4bb drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xbfa8a72a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd93051b9 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdb090f67 drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x08a76f15 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x6d0436e2 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xf1741ec1 drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x029ffebb ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02ec4d86 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x02f3c058 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0d3a4641 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x124f3210 ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x132b05be ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13cf5352 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x14082d56 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d89df73 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x216e8a64 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x21d1e9fa ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x32aa41d1 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33b9be49 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x33e5b928 ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3596e71c ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3ee12790 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3f9aeb79 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3fd155ed ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x41f1ef7b ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x46d7d410 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4ea77b3f ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5cf59609 ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x60f51868 ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6275b8e7 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6596d919 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x65f9de57 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66443f62 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x67b1d568 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x75904d79 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7781c85d ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dcb1e64 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x87eda6f6 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x940438e7 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9599529b ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9aa6884e ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b2be07d ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d06ced6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d9286e1 ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa068577d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa986d0f0 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa980572 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac843717 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaea69d04 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaee76074 ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb70484eb ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc38c95c5 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc89bf5d2 ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcc77b06a ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xccfc6918 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd57d3838 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd6af1571 ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8e8af9b ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xde13bd39 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe42a1ba1 ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xe6af5d8b ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedeef776 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedfe9b54 ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf1efc770 ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf70efccd ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf7afd394 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfb7b1bc1 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x705de5f9 i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x84294f5d i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0x73f17cfc amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x0521b549 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x25de806e iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2dcfc7e6 iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0x34f97ce7 iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x3eafa2ee iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x4a9b67c3 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x4ef722f1 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0x5074639d iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x52d14ea1 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x7425a050 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x80e7ad69 iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x86cbf6ad iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0x8af28bf2 iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x8c6178a0 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x9a38bc4a iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0xadfcf1a2 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0xb512a4cb iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xb5568f5f iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0xb68b0a31 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xca750b32 iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0xcd84d7d6 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0xddeb3cc0 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe2e6d4cd iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xfd031cfe iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x308358ff iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x4200d811 iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa8f6808f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xdc9adedb rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x0f891b66 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x10b3bf00 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x414a66e9 ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x45c40f27 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4fb5c68b ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x521ae0f7 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x52f3497d ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x71825a08 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x73e7b367 ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x854563a6 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa32735af ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbb6d0d9c ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc09e8e23 ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc0c5ab3f ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc864b1f5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcdd2d9e3 cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xea203255 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0081bceb ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x00cbcbeb ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0add7d97 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0eb5fa87 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1025e9ae ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14aebfeb ib_create_ah_from_wc +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 0x1823c60d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x21e18013 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x241c02c6 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x321786f8 ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x322ab29a ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x334ddb1b ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c584ca5 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e1ee48f ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f306a7 ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x433eaa8d rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x455dabbc ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5062b79e ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5184ca4e ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x520b2638 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5535bf32 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x56859919 ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e5a07ed ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f0d6b60 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60f95811 ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x667eced9 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6888dc07 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ac29f84 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7456eae7 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x773df0c4 ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x78238f09 ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a378b66 ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b6c046a ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x808087a2 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x817f9474 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x823c47c7 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x83e3d236 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x843f4947 ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x84f66b2b ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ed0225c ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x923bc828 ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9582b1ba ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0554d7b ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1c90872 ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7eb7a1a ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa850ae70 ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa95bcbcf ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa99a8101 ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9e6e2e7 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9e82bb5 ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabdd6ed7 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad1f4376 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad4696ba ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xadad13cd ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1a312e1 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb241e416 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7d3775a ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe622c6b ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbf9c62f5 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1ceba5e ib_query_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 0xd1133b6d ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6b10a5c ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd88ebd98 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda26d48a ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdca3a2f5 ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5d5920e ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe61e0cb1 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeac32ca1 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0f222b8 ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf200883f ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf313302b ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf7c60cb2 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbcf457e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd1c211e ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x07762d74 ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1c0e6d24 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1cdd4482 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x44cb5ca5 ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x4aebf331 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5039775f ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x673c7ead ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x839f1ce7 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x86bcf080 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb456924c ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xd0745455 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xdb0b69e5 ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x2526d255 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x393b49e8 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 0x71885da8 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x95a6e16d ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xb5493236 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xc1abbbc7 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0951d6a3 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3c0cf328 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x552f8551 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x582a42b4 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x960c47ce iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd52aa2ba iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd65471d4 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xeb27dd9e iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0297ca5b rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1aa4af36 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1bfaf2e7 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1f963169 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x23551b1e rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x319715af rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x3c639fb4 rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x42bb892d rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x64c4582e rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x787e53eb rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7fa2177a rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x87f77205 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8ec841bf rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8fecaa44 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99ba57dd rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc8876c92 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd3848f28 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd657ee9c rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xea0f0993 rdma_resolve_addr +EXPORT_SYMBOL drivers/input/gameport/gameport 0x1ab2bc1d gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x2d213148 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x617357d5 gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8a4db418 gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbc236020 gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xbf624b07 __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd59d55a7 gameport_unregister_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xd5a029b3 __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xfeaa47b2 gameport_start_polling +EXPORT_SYMBOL drivers/input/input-polldev 0x19b2890d input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x696008a4 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xc2efc947 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xed487ecb input_unregister_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0x03a2e42f matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x0d284bb2 ad714x_disable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x62171533 ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0xb33d5fc3 ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0xee68cc66 ad714x_remove +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x892d76b2 cma3000_resume +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x89d9444e cma3000_exit +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xca3f100a cma3000_suspend +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0xd7e5d571 cma3000_init +EXPORT_SYMBOL drivers/input/sparse-keymap 0x3f20d8dd sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0x5678011c sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x9d15b73c sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xe7c5a541 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xea1473ea sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/sparse-keymap 0xef62a933 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xd8013766 ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xdfbf2005 ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x47d3fc51 capi_info2str +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x4a315974 detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x50b33ca4 capi_cmsg2message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x55415a6c capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5ac8b4c2 capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x5f674cee capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x6057c6f3 capi_message2cmsg +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x62e32d43 capilib_data_b3_conf +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 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 0x860a758c capi_ctr_suspend_output +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 0xa4580592 capi_ctr_ready +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 0xb65678f3 attach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xc10fe128 cdebbuf_free +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xd222ccee capi20_put_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 0xea14fa1c capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xed061606 capi20_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xeee6e97d capi20_register +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x018058df b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x0d4f238e b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x16c24ae2 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x19bc76ef b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x1bbdd6dc b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2b435aad avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x2cbbb045 b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb41b29d2 b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xbdedeb90 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc61e6f60 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc8f18dd9 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcd49ddf7 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xcebb6635 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xf3fde279 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfbe11b9c b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0be80177 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x1046d4e7 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x234f718a b1pciv4_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x32065b15 b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3794d076 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x45be319e b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xce7d5744 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcf96781d t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xd6f9f1ea b1dma_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xf2ce1375 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 0xaa97dcff proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x03ff87c9 mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x133b2146 mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x6e2e25c7 mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xa2b3262c mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x2385c9de mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x57042854 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 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 0xfa3bec8a hisax_init_pcmcia +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xfc27303b HiSax_closecard +EXPORT_SYMBOL drivers/isdn/hisax/hisax 0xff2db2cf FsmDelTimer +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2099ce0d isac_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x6ed69293 isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x7899a1b2 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xa3870497 isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xd14d6785 isac_init +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x22aa3b6d isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x7cd31c0c register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x89a1a26a 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 0x04a4af45 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3091869a mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x30d473c4 mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x394cf4bd create_l1 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3d2b3b73 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3d7a1baa mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x3f84e430 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4c98e66b bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x50c2230c mISDN_FsmChangeState +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x51ecf6b0 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x54451388 mISDN_FsmRestartTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x5542e86d recv_Dchannel +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 0x74a6f96d recv_Bchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a4e99fb mISDN_clock_update +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x8a802760 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x96309324 mISDN_FsmDelTimer +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x9afc4f2b mISDN_register_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa0d36883 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xa7059b02 mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xad4a1d5b mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc981cd60 mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd447d83f mISDN_unregister_device +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdbc0b5a0 recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xddeebcd4 get_next_dframe +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 0xeda7f7e3 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xeea0d0d0 dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf4d99d48 recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xf9e7832f mISDN_FsmNew +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x01087af0 mISDN_dsp_element_unregister +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0x60721da7 dsp_audio_law_to_s32 +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xa215f1b2 dsp_audio_s16_to_law +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_dsp 0xb98308d8 mISDN_dsp_element_register +EXPORT_SYMBOL drivers/md/dm-log 0x38d73627 dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x5c4ada87 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xf51a733b dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-log 0xfb88f86b dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x19062bb4 dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0x1ad83f0e dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x24f0acc3 dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0xbdd6b9dc dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0xc4fb5fca dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0xf5d95e5f dm_snap_cow +EXPORT_SYMBOL drivers/md/raid456 0xce4349f1 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0xfecba5a6 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0x8d827cc4 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0x33dd2504 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0x62b5cec0 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0x4491f186 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x7b932366 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x925168db mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0x873606e6 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0x06bcadaa tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xd1d53466 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x58be2301 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x06e1446f xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x0a552dd3 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x2eabc3b4 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x01f852c4 flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x08e13647 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x0afb8976 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x38055ef7 flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5ba55085 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5e642771 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x9e3256b9 flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa2b7f3e2 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xac12816d flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xaeb66725 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbcfd8d2d flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbdbdcc18 flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc23ac722 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc512717c flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xcf70fd80 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe1c2f56d flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe49df692 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xed2cebb7 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xf094de80 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xff1c0a57 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x3463e15f bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x6f2d0429 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xc6d422c4 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xe5bef2ee bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x0f72c9ab dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x3c83c4dd dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x53d434e7 dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x6f67b0ee dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x80127a09 read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa1d927eb dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa4ba46a0 write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xcd4beb3d dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xd4f5a8cc rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x41e062b1 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x19591134 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x1beeffef dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x22d38d0b dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x22d6ce4a dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x284fd138 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x28ee2ae8 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2b0f85f1 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x327534eb dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3995c75b dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3f7224d5 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4d3b9a9c dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5d185f7a dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6130acc8 dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x67c5c8e2 dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6b5f6b59 dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x78d62338 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7ba5d8bd dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7c240a9b dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8082a411 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e75a74 dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8a8694a1 dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8e47dce5 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x93a83ed6 dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9567943f dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa9340601 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb3110592 dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb93c480a dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc41d93fb dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc6091cfa dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc9f4a5be dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd1071206 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xdb576668 dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xeb974ce5 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xebde11ec dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf19c7666 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x5c035c58 usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8123efa1 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x84ae820c dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x8b7dc4d9 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xbcd44328 dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xdb1ae2ad dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xfdadb3da dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x1d5bf4fa af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x01e989fb dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1af239c0 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x34c8d4e2 dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x3b331ea4 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x532f98b0 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x54d53162 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x61b6bae4 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd35f4a1b dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xd71b02ef dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xf29a9ec1 dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xfb461bf5 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x0f70d208 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xc85090e0 af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0xfea0fa5d af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0x3dcb0c16 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x3214c4f0 au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x36611057 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x36b4dff8 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x70eb289b au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x7379d315 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x81eced0b au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x87c4bb86 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xfa2c03e0 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x98d4b2d7 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0x712a2a44 bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0xfa13fd35 cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x95737062 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0xb5bc90ab cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x54277d9b cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xef816dc6 cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0xcc1a6421 cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x460adab1 cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0xf69755a2 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0xb2c7155b cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x21a5f7c0 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x39e58e74 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x64250a20 dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xa7abb525 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0xe5f9ed96 dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0ef0ba36 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1df69815 dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x1fba6f22 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2dce451a dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4870bb4c dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x4ac559cd dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x609eb1a1 dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x82c12ae7 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x955e7ef0 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x95e282ab dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xafacf45f dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc9f0804c dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcd685129 dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xcf70aa39 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe4fb1eab dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0xc5d4ed0b dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x07a4e651 dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x28dba3dd dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x57955827 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x80fd3b53 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xc4deb374 dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xd03d3368 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x21f7ed58 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x635e5205 dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x9b12baef dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xa17fa0cf dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x077a5eaa dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x0d465345 dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1afb298c dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x1d506613 dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x226ee782 dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x49ae1f58 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x5cd0db6b dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x89638a8e dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x8f3e3a40 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x9de68308 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xaec048d9 dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbfe48da8 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xd6e310e2 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe24ad28e dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xfc1bd396 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x01a98e5f dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x046e10de dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x104bead5 dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1d7ec6e5 dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x1ed4faa1 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2e08e000 dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x2ff27b29 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4e5fa098 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x4f4020f2 dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x57dee713 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x60795903 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x653711a9 dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x82596a9e dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xa4af5ca5 dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xae0d743b dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb5af861d dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd8c1c3ad dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xdcce9c9d dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe83132f5 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x1df7a5a5 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x349d96b3 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x8ddd09a0 dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbe8c629d dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xc13f19fa dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x753c8c46 drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xc3cbe994 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x087939fb drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0xa9948242 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0x43b91e9d dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x069ddf55 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0x50e559ab isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0xa6582d69 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0xe8a90216 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x546eb910 it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0xe2ca0d35 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x8e3ef0aa ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0x272bda4e l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0xf8b15175 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0xe0702550 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x605bd3d6 lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0x5d73a22b lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x3b20177f lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xfcde903c lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe1036b10 lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x97753a5c m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0xd81acc7c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0xdbfe8876 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x68aa0f1c mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0x8e18ee65 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x091d734f nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xdda78156 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0x955af6da or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xb45e4852 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x0fb5f8bb rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0xc722e0f2 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x51d7fb95 s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x08b72e02 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x84ddbc2c s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x9683e120 s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x5f255ec4 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0xb78671da si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0xb4a60189 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0x1306a83c sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x25f8c972 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x2eeb49e4 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xbf0043ac stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x5153177f stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x76562bb5 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x55fd81d3 stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x05b70fe3 stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x9f7d97cc stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xadefa6b5 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x11a867c1 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x27463170 stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x507d1386 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x570fe15e stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0x82f6b187 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0xd5e7124e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xf70316e2 tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x156b834b tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x7552cac4 tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0x0ca0b52e tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0x0a033d1f tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0xf48a3024 tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x75eb4071 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0xbb0dd733 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x791935c0 tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x66275821 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xbadd6ca3 ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x5988b10f ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0xf8baec33 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x283d1a54 zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0xb995f746 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xf7ea164e ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0xc901f4eb ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0xe2c6f521 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x08cfe4f4 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x1c9d1fac lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x859a9723 lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x87e04b19 lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8800c985 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x88c9456a lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x99dede4e lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xe7d60495 lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x9c90b8b2 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/rc/rc-core 0xa48facea ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x0789af1c bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x72282b18 bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xed12707e bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x7453238d btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xe83e04aa btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x01d7cb14 cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x35867cb7 cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x96d4cf06 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xc415ea97 cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0xda70fcbc cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x6c2ccd45 cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0x71a7dbc2 cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x4565735e cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x47db9dc8 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x98dbf5a2 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd23b3974 cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xcde9b71b altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xce208cb0 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe4567882 altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x0c7889af cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x22b17abb cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x33485a78 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x5a0ed118 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x65fe75ab cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x681afe78 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xcb080644 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xe1ad65b2 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xf683dfdc cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x22bb399a vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x7c6d5bdb vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x54f68b4d cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x622bc7c8 cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x71e37634 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x855f5733 cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xb6704cdc cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xd7b2a01e cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x203f3aab cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x575f02f2 cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x826be9b8 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x92231630 cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xe0da750c cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xe6d7bd33 cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x0a411118 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x156b9a26 cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x1a71a6bb cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x20e76244 cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x284cd033 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x2e330c0d cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x33fcc395 cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x3dcd1db1 cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x47ea75bd cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4a8349e0 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4e8f1076 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x55abf82f cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x59953a61 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6f0bb81c cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x934f1357 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x97d21b30 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x991962ff cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xaf6d0813 cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xbe4b76a6 cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xc77ce921 cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xf3086622 cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xfaa3e62a cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x80d7bd20 em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x877c1613 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x30e4ae38 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x32dd091a gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3cc39ca8 gspca_suspend +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x469d6be0 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x61dc2508 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6adcdfd6 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x7a118324 gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xefd8f046 gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x086f84ce ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x1545de06 ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x22b8ca9d ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x3b3daeb7 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x51003cf6 ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x553162a3 ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6dc75fe7 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x8313ee05 ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x9a5dfdc4 ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xa4d0181d ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xbf8df235 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xe14a39f5 ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x10f3fd8d saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1312a8f3 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1620942f saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1a4d4493 saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x45e5aa73 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6c6d789c saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x6fab953f saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x890bc152 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xabb151d7 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb4a4bcba saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcf992d85 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xf657075a saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x0004c431 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0x2e21fdcb soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x36034398 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0x9ca1f56d soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_camera 0xb54c4c5c soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0xd1c053cd soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x83f41a40 tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x8c1b45e1 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xdd63fac8 tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tveeprom 0x7c7085fd tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xc60cb98c tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x173ae3f7 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5b2972cd v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x039e3c35 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xe96ea1cb v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xf7dde784 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x58651b56 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x6adc481d videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x709f00a1 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xa1b00bd0 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xaabda0ec videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xda727fda videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0x4cd41545 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x04be4e00 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x052bc445 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x06b50278 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x08778101 v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x095e1cd6 v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0x0fe6409e v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1993c6ec v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x1dce0e16 v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x1fcf1df8 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x231c7f82 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x2af43071 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x2faeeb59 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x3202d792 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x36fd7a2a v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4eb113d0 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x4fcda41a v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x59ecd283 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x5f3ff7b7 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0x5f59a3a2 __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0x601e9054 v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x621b93f4 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x68e2eaab v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x7c7615e4 v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x84b73dfb v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0x84c42dd6 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x87ec2b52 v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0x8e13fa13 v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x8f42c443 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0xa5f6bd56 v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xad85eb78 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb7fd9e6b v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xbacc8336 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0xbbe6f92b v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xbc440573 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xc80aaf1b v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xc9a43198 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xca78d878 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xe2777852 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe3ac3f43 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe6a424d8 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xee8fec65 v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf07d7245 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xf22acefa video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfbdbace4 v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x1750a459 videocodec_register +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x30757169 videocodec_attach +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0x8cb9a94d videocodec_unregister +EXPORT_SYMBOL drivers/media/video/zoran/videocodec 0xbf6deec9 videocodec_detach +EXPORT_SYMBOL drivers/memstick/core/memstick 0x013c9d79 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x44164aff memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x52631a25 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x562e31e8 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5b5c17c8 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x67303b88 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x76f2503d memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x8c9b5da4 memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa684ef96 memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbcf444e0 memstick_next_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xcfec3fc9 memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xd42f87dd memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xe3aa08d1 memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf2fdb998 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x08bfc6c6 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x255b7a52 mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x260f9a95 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3009b052 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3534af9e mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x3b05ee15 mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x569de5a8 mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6707aa61 mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6a07df62 mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6c96fab6 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x6db489a1 mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x768b8087 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c460bbc mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c74aa97 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7db840bf mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x81b2733e mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x905f37b9 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xadfbcb7e mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xae7f6842 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb665cd0b mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbb5d978a mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc0e69f82 mpt_device_driver_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xc47c22e8 mpt_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd3a7af26 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd978ac76 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdb532bd2 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe91df85d mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf062f171 mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf273623f mpt_suspend +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xf75924fb mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xfabf0d0c mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0add9fbe mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x15ad2c15 mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1ea3567e mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2dbc811f mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3705ff16 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3e355833 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3f7158ce mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x3febd6f6 mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4b20f144 mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x4cedf5b7 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x51e4bae2 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x57921d79 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7c446f28 mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x93be9d8f mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xa89d53fe mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xab3c8677 mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xaf7f99ac mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xba732df4 mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd37dd62c mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xd9b5ddd1 mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe71b3f5d mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xea17d1b5 mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xef8e5757 mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7ab50d4 mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xf7b337c4 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfdfc1815 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xfe5d22cb mptscsih_host_reset +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x184c25b6 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x1a7c7b1e i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x239862ee i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x399829ff i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x43b7cf16 i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x68ce770d i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6c60a416 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x6f9af12e i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x92d556e4 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x93c7bceb i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x95f60eff i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x979ef1b6 i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa159799f i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xa5f23d84 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xca0281b5 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd908b62c i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe0014d88 i2o_driver_unregister +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xe31b56e6 i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x6366c802 pasic3_write_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xf4a89b34 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0a5009b2 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x1ef5c777 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x4e63e704 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6aa19d1b mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x767ce6af mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x770ef61f mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x86eb4cad mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa883b3aa mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xa99fbd58 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb28719bd mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd4392985 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdef41391 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xdf26d84c mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/tps6105x 0x2571a529 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x561dbeb0 tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xa93ec054 tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x56433eb7 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x8bd57381 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0xd06d4fe4 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x835948b9 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0xb9af1df0 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x3a4557eb ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x8f5c5723 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x34a0a068 tifm_map_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x39f86aa1 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0x4c6ce67b tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x594866f7 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x60bc501d tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x89baddd3 tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x909c4cff tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x93010147 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xae7331be tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xc7b66221 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xea2090fd tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0xfb4cd562 tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xfb5640db tifm_eject +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x38cc9cd7 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x99cc265b cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xc2735267 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0xeadaa8eb cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x4bf690b0 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x978c92bc unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe3776784 map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xe6bfced4 register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x13ca1184 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0xb92a93c3 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0xa4e2d00a simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0x2fcf89cc mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0x6db19c67 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x075ec6e9 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0x58bbb83d nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x899c45ae nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xe61b9f78 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0xea176830 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xf7bb78ea nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand 0xfd5e8368 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x014d2aa1 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x14c7cd71 nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x20c90cb8 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x0cfb1d5f nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xa4cc7060 nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x0a897e0e flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x7c6dfaa6 onenand_default_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xb435002e onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0xcc50b623 onenand_addr +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1bc5b16c arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4bc73de3 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x623be2d4 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x69e1aab7 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x72918689 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x848fc943 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x959f3f41 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbb0e1ee0 alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xbdd4d5ab arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf4e7cf55 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x1af1a95b com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x22eae876 com20020_check +EXPORT_SYMBOL drivers/net/arcnet/com20020 0x951c2d3c com20020_found +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x135377ea ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x14761c99 ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x18c1ca8b ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x323b33cb ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8adc670b ei_close +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x8c2742e3 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x90b97307 ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x99e9a4c4 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xc7922767 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd7c2c433 NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0xe643b04c bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x6d34d954 bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xd37bfaef cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0080ef5f cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x27873e0b cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x28f74f2d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x470847b1 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5e5dcde0 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6b8580b0 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x79cc978c cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8eccadcf cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x92266cc0 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9ceb9869 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x9e34b56c cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa98a7a0a t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc1afe636 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd0cdf77e cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdc384ce1 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe8102ca5 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x024d5c3f cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x031ba24e cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x09e1a44d cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b8dade9 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20097b97 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e5d3d29 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3e91d2a0 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x46720b51 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4fdf7e3d cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6978bb6f cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x762d1ad6 cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xce53d643 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcfea546e cxgb4_register_uld +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 0xdefc2abd cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe53c085a cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe891d3d3 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec485de9 cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xef5a5790 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf18ae488 cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfa743e4d cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x3fdda555 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 0xe2d0d9fa be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0108d9c7 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05fd9b2e mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x34f3fcaa mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3ff99513 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x517f42d1 mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x808bdf01 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x843c8053 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87025d68 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x87a87306 mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfed7639 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x1815b796 hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x27868fba hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x80187e11 hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xc7d46a7d hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0xe9af0949 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x30e1993c sirdev_receive +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x3a1c891f sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x4f6e0ca6 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x56feefba irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x72c3a48b sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x78f6fb4f sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8693db65 irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb8da208a sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xd80fedfc sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xe16708da sirdev_get_instance +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +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/phy/mdio-bitbang 0x7b042dcd alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xbce1750e free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x95426af1 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xdb28e28c pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xeb44acc9 pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x1be29fd0 sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x0467ba15 hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x06957ace hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0x48f3bd72 unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x56509a20 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x6d366c1a hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7a607a9e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x99b317a4 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa17dda91 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xc0ff43e0 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0xd214e03c alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0xe165766d hdlc_ioctl +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0x3b8daa00 i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x101d2cc2 reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x17a2a7bc stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0x235669aa init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x03cff16f ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x147e51a2 ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x16c499b4 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x1c06a386 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4227a4cb ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4eae66c4 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x53225871 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x72173eec ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd3e76461 ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xece3e6aa ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x1a622ebc ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x210440af ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x251501bd ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x50c5d2b8 ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x72cde582 ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x8c58e29e 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 0xb27142a2 ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdc38b13e ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xdd2dd6cc ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xfead7c9a ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x87646c53 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8a5b2b92 ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xbeb620e7 ath9k_cmn_update_txpow +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xc5b806c8 ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xd2981357 ath9k_cmn_count_streams +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0509d710 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x086ad393 ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0e5ea1ef ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14b2ede4 ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15edaf3c ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1b4ba476 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x206ae0b0 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x20711cf9 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2959a74b ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x296fbba1 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2ede8996 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3177b2ab ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3539089f ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x354e8019 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x35606f92 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36967b4e ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3aedf771 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3c349099 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x424da8e6 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4429531c ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x48bde1bc ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x498b8e84 ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e6b4f21 ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4e927172 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4f07277f ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x53d29b0b ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56c0964f ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59076c20 ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5aa18dd7 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5e52a0f0 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5ef0da1c ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5fd04171 ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6768c34a ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67d7f4ee ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x67f848d0 ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6c641820 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x75fd1ed8 ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x761aaca4 ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x77ac1ed3 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b4016f2 ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b4db249 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7e3de499 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x858e1600 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x86b8df6a ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x87a82bb1 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x88754a2d ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8e7c347d ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x928f1f89 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92e65c20 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x932407bb ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94369b9a ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x94780a9d ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x963a6822 ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa17e7df3 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaa92d35a ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xad29e578 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xae02eb2d ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb12fd639 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb2aab398 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb31d4c01 ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe30798e ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbe5ea855 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc0125d5b ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc35ac8e5 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc3cbb150 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcae0ee2d ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcb6907dd ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xcc65892d ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xce9830b5 ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd35f0cec ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xd797d32d ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda1f2070 ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xda4995c7 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc1085b4 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe0063db0 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe22478a4 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe2ea7e81 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe5c1b45b ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe724327a ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe849583b ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb9424c8 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xecdfc3d1 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf07561fb ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf51897cd ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf6c23dd0 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7f18bb7 ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf8df2650 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf93a7307 ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9844d31 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf9ea626a ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfbc1c19d ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe504b38 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1f154df9 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0x4413ab27 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x57bd17eb init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x0f45e8e7 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0xfccce961 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x331a672e brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x45a7e846 brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x54d59f6c brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x60cac8a7 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x697a738d brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x875c02ad brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x8990e470 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x980ff1ea brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xb5e66b9a brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xcb05ea8f brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xde3ad22b brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf052f869 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x009bc0c6 hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x07d70329 hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x07f599d0 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x0ad69602 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x107d8749 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x14119b5d hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x275d7186 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2802250e hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x2ac228a5 hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x3c1a65bc hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x57b2fbaf hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x64a7e1c9 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6d88c13c hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x8cb56d62 hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9f7f647e hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa056c711 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa091abd4 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xaae7278e hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc1c8e06d hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc41da430 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xcb4de4cb hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xceca5a83 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xd7067f98 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe055dbc5 prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xe6bf10ee hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xec59d133 hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0e2b33c5 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x267a3000 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x2b1e0519 libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3325e368 libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3d277653 libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x3f0d7afd libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x4c76d3fb libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x644b8aae libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x77dedd50 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x95ed6023 free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9dbec8c3 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9fe066d8 libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa4b25e4f libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb7b9db23 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc1cfcf60 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc69bc005 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd74c5bee libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xec77d00d libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf0d27b2b libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf3eab894 libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf5b009f9 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05a3d5e5 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x062cd45e il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x07b2d4e4 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0d51fa04 il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0de2fb3a il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x125f6307 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x155949bd il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x15ec652c il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ac112b3 il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1adb654b il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1de727a9 il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1f008318 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21930cd0 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2280c7d9 il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26a00812 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f289974 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2f4d1655 il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x31f245bf il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x355b850d il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x38bbd9a8 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3abbf0ff il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3d476463 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x40950404 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x425c8a9d il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x456f511e il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4a3a412e il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4be6b159 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4c3ac897 il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cc186a5 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4cd7baab il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5138fb6b il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x523c3208 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53341059 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x538ecfc8 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x53e52a42 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x544b0682 il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5487344b il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x58dc46a4 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e6036fb il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5efa6a47 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x60793684 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x609810dd il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6384e6d6 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x64919ad9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65512e31 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x65d71d02 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x67be1144 il_clear_ucode_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b529081 il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b6ff2f5 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6b96bcd4 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ec2cc82 il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70e8b29e il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71b0509c il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x71cc0e7c il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7218cdb4 il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x79549739 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c139008 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c251e65 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7c7f99ee il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82be328e il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82c585f8 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x861deb83 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8dc019ba il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8df1618d il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x95a62495 il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9cfbb176 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9ee170a3 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa6721a7c il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9701ad2 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa9ac01b4 il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xaa4d5c8f il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xacc9b58d il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb1be2a13 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4b1c402 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb8615164 il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbbb2fa5c il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc253f32 il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbc6e1137 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbcfbc20e il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbe8bec3f il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc0f38158 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc2842e92 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc67e5e6a il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc6e5d919 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc7cfc106 il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcbe8be45 il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xcf2190a7 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd01c14f6 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbbf3214 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe60d7490 il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec1fe01c il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xed399249 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf44da331 il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf4f3907e il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf68a53eb il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf6d0bea0 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf8e4a9fa il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf9f95ea3 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfa37085b il_mac_sta_remove +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 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 0x67381a2a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x7edec07d __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x9a12c9c5 __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xc0827b2f __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x03f7ecac orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x077fa914 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0794c342 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x200feaa6 orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x201d36d0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x35c0c89d orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x3acbf532 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x4c9d3e62 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5f784298 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x90c9c1d7 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9adfb528 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xa377ba14 orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xacc7efa9 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xaf8a44b6 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd5b1157a __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe6be7f2f free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x045cdfeb rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x07609e52 rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x110918ae rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x180b3250 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1d79a580 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1fbf53c4 _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2160e52b rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2c5e0046 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2d5ce1dd rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2edc9c2f rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x35db61b1 rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3d107228 rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x40c8a626 _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x490b2b15 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4ec36365 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x633ea2cf rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6c6aff9d rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x751ce7c2 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7edc5ee9 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7f038c9e rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x868329a5 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f2d67b7 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x92e4167e rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x95c26cce rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9b6863e0 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xa2ba752d _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xada4081c rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaf94f166 _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 0xb3df2e05 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb9ff7b84 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbffd8995 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1cff053 rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc1e0c0fb rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc8eecb75 rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc9ba608b rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xcc6cb45a rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xd0b369e0 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xdf8a58cc _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe68c84fd rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xed55852f rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf3c2c9a7 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf78b236b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0520eaae rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0af45f48 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0d444c2a rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0f1ba1a6 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5a803f2f rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x5d2b172c rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6b7f4d62 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6cbad431 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x6f000f80 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79c976ca rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x8d241a85 rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x91ed6077 rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x94d16e8f rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9c462a93 rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9c8c8984 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9e78f448 rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xa3cce4c4 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xafab4097 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb7af0bd5 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc876f938 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd09b2560 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xd3a0cb94 rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0865a30 rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf65bc57b rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x3f8647cc wl1271_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x43177530 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/parport/parport 0x169ddaa4 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0x19e46f44 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0x2411c301 parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x253b44e2 parport_claim +EXPORT_SYMBOL drivers/parport/parport 0x30a3868d parport_negotiate +EXPORT_SYMBOL drivers/parport/parport 0x34948d22 parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x3de17600 parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0x3f2e3d62 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x5897fe80 parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x5a073c32 parport_release +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x5f63f66f parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x70a23f0c parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0x76eb1fcc parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x8314b2b2 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x8d08212d parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0x9309fdcc parport_write +EXPORT_SYMBOL drivers/parport/parport 0x99316022 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0x9cf8b2d9 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0xa391aa56 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0xabe61f3d parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xb01e3be3 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xb1288f1a parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xbd856d6f parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0xc0116470 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xc3856092 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0xc3946609 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xdc6b5a02 parport_read +EXPORT_SYMBOL drivers/parport/parport 0xe2526ed5 parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0xe872d0c2 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0xead973ec parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport_pc 0x3177c600 parport_pc_unregister_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x5163db0f parport_pc_probe_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x054059c5 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x19e9ff78 pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x1fac7efd pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3004ed1b pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bcfb449 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3bd78856 pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3d50aa74 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3fca5098 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x59e218a3 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6ef4b339 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89dbb35a pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x988bf2d1 pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xac9fafd4 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xae5497c5 pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb2eac51d pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xbd1e0154 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdf33c62f pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe4dc89a7 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xff3c5978 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x09ab2b4a pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5fa802a3 pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x6c31f1f6 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7c815c8e pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8a41bbbf pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x8bf99feb pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x96b66e11 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xa1e0172c pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb0c82fc3 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xda06a272 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x26003ab4 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd3757f2f pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x8e916eef pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0xb3b3de48 pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xba46b45b pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xea1d8adc pps_unregister_source +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0xbd7814a5 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x0a00b879 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x268e5263 fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x288081a9 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x4c35d6a8 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x5e1508d0 fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7d4e8168 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xae303f9a fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xb07a920e fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xbbad33be fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xe73d9c05 fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xfd4d7b70 fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x003d8276 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x10c55eb8 fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x135bd3f0 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14673167 fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x14ce6d04 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x184e6adf fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x231e8380 fc_lport_set_local_id +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2b3754ef fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x328affc7 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x349b3cdc fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x379269f5 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x404e0980 fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x40c8ea8c fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4b0b1e95 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4c5cf224 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x51b12f8f fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x74093334 fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x78e8db2f fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x79513653 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7a6b95d9 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82dc2cb6 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x858015e3 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x886711fb fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8e0272da fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x91b6f87c fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x953c4537 fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9e5733e7 fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa1fce6fb _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa4ac1623 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa6d20909 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xa8210897 fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xab3d9b1f fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf7b30c5 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xaf8bcaeb fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb2bf40cb fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbee110c3 fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xbf6836ec fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc06c23d9 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc2990875 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc7c97615 fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc818bd99 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcc860ec2 fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcce218af fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcedacadf fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc5eebf1 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xde91feaf fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xed2cb10c libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf1acb3d2 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf36b4eea fc_lport_reset +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 0xccfe31b9 mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x13f0b920 osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x145f4aa2 osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16787199 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a267422 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x239010f3 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2b41736c osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b4915e7 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3b7c3bff osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3be5cbe0 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e8db1f7 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4066b39d osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4165cad5 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4947bba3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4bf24661 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4e302778 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5347fcce osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x5559dbdf osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x74048afc osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x822f649e osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x832782e3 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x85b8c330 osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x8e1e9822 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9e89b46d osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa314e939 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa374f7f3 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xac479254 osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb0a3c838 osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb83d7096 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd0a65996 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd1e3fc14 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xd24c5006 osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xda2f10b5 osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xe3657100 osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xeb83b6eb osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf6be1fef osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9b55674 osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/osd 0x18327ff8 osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x2a27d61e osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3d1264f0 osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x46b44a9a osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x830886ee osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe4f9512e osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0023bdf0 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x155662fd qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x19fb433b qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x208d1e5a qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x250fa7ed qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x5594aa0f qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x67f0fe3e qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x83211ec1 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9c52f3b7 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xa048565b qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd98f7a96 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0d06cebd qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x2b39f8d0 qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3071ce8f qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x5e0d6ec3 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x881af7c1 qlogicfas408_biosparam +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x8f75578e 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 0x4e7735db raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0x913ad199 raid_class_attach +EXPORT_SYMBOL drivers/scsi/raid_class 0xb4d2e960 raid_component_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x003086d2 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x0496fe43 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x166173fd fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x26124a04 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x41dbc666 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x5321b964 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x53b4b7cd fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x61d21b9f scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7489d95f fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7686028b scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x82027ad6 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x824c73ec fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x8ae5d123 fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x037a1286 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1daa641a scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1ddbbaf2 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x1f337f91 sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3956d0e5 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x508b1395 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x540c0653 sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5917ade8 sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5f8620ce sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6a8211cf sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x71a3644a sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7b1b3de3 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x7c414094 sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8486611c sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x85ff3ba1 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x9d47c81c sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xae135ae7 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaf3bcb08 scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xaff0ed72 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc45ca736 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xc4fbe36c sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xcd47c225 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd0a2477e sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdcb30d60 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdd6ec983 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe7fa0269 sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xebfe23ba sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf406a072 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x08cd4752 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x4081087d spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x480a4002 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xc675cb4e spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xdd0df141 spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x05e63b47 ssb_bus_powerup +EXPORT_SYMBOL drivers/ssb/ssb 0x06f57ef4 ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x1d67aff1 ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x3f953e5d ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x444dac4b ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x46d5db72 ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x63007460 ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x74968a57 ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x8a4a33bb ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0xa14346a9 ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0xa1d600d2 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xc1870707 ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0xc3dec323 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0xc5b11833 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xca49c72a ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0xcc3e3586 __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xd3e5c67f ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd5e1d40f ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0xdcd7ffc3 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0xf0b4c0fd ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf6ba38f9 ssb_bus_unregister +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0x52d443b4 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xc8896dd4 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x0a93ce48 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xd9b4da41 ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x05e232d7 iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x5c7806bb iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0x4ba9214f cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0e3778b8 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x47bae28e go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x4e78d609 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x7bf1a8a5 go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x83352027 go7007_read_addr +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb7dd3981 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf2c805f0 go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf53bbc61 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xfb947a46 go7007_remove +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x01f742a1 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x02343d5f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0672db51 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x074ece83 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x09b37e4d rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x116f54e9 rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x13ad5c46 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2020ce3e rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2813c16f rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2c35a6cf rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x408e7b6d rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x422596e9 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42acd4e8 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x42d67abe rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x48ba9d0f rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4b83c306 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x56dded36 rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5f17b44f rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5fcac1a4 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6014563d rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x609b1b7e rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6eea8d24 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x73730e54 rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d9140f8 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7e68813c rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x903aea7a rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x998f5279 rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xa18b6457 rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xac9a520d notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xaf302577 rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb139021a rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb1471be4 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb78ec9e9 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbc87719d rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbd363982 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbfb9c0fd rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc398c487 rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc92669eb Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xca13aba2 rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd32cad11 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4c0cff4 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd4e4e5c3 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd93fdbca rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb35144b rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdb526303 rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe66726ab HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe89f5711 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf86b7a6b rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf91b5624 rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfb207458 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x036512c9 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x059b1d2e ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x07b82d93 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x15c43ee9 IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x177fc1d2 ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x189b4e99 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1954b722 ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1c790d64 Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1dbd416c ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x218feefb ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x25d86e8f ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x26b50bd9 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x299e7cee ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x2b514061 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x357f6535 ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x38f3e297 ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c81023f ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3cbb989d ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x43addae7 ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a13a310 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4ef7222e DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5bcc1788 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6371755c ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x68961f59 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x6c32c8b5 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x78257df1 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7cd3308e ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8150967f ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x861de63f ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x88d78f06 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9b1db588 ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f7b1591 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa0050bdd ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa019a66e Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xa5387fb3 Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xab0204b7 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xaf9073b4 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb0e1d16b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb1206631 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb3e5bde5 ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb476c246 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb61a15b9 ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb753d656 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd2b48fb5 ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9d61bec ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde3082ed ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde45644f ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe010af1b ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe3f584b1 ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe6cd9e93 ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xeb633076 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf52ade95 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf5e90d58 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf9081675 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xfca640b1 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xff24faec ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0x44da35a0 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x40f9895f phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x6025e82a phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x001198cb transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x08879fe6 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x150b39b6 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x153dcf9e transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x15c06cfa core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x169dea38 iscsi_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x19eb612d target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x1cd9d7b1 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x1ce10e55 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0x25a207fa fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x264c6dcf transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x324adb0a fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x33cd6d8f transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x41f46031 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x45bb5afe transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0x50345966 core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5b19712f fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x5cb11f5f core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x5dcf5a6c transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x5f39fa31 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0x6099ed4f sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x61f5b5f9 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x62dd7afd target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x63a1e4b1 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x6ec36688 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x6fa65969 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0x71d328e7 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7680f499 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x76b1b9f4 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x7afe0539 target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7dbada9d transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e52e9e8 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x7fb9cd75 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x832d93f5 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x85aa880c transport_set_vpd_assoc +EXPORT_SYMBOL drivers/target/target_core_mod 0x85e42f8b transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x87750ddc transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x8b2fcec7 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e14f8f2 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0x8e3d2778 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x916bd9ef transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x9488e718 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x97fa4fd7 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x9bbecbe1 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xa5305b25 iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xb71021ac transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a5a79c transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xc133e4b9 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xc40d3023 core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0xcd0de4d1 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xd31a5aa5 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd398cc96 target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xd5e352f4 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xd6a72ec3 iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xdb4caa68 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xdcabc03c target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xdf37bca3 target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe2d18745 transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0xe8516fae target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0xee52ffff transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf389320a core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0xf4aa80eb iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7160cf7 __transport_register_session +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x76b78a67 serial8250_do_pm +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x7813f1ab serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xacaacc95 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xe87e9d8c serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xf7ee091c serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0x0e24a6a7 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0x274e1bda sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0705c936 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0887a9ab usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2c42ac8e usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x5735d9ca usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x6f398ea5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x74dabf7d usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x7ccbce14 usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x868fa77e usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa6279d98 usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xa7913692 usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xc564a262 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xded5eb3c usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xeef7bdf6 usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf146cc5d usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xf6ea5918 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x2ae12ecd usb_serial_suspend +EXPORT_SYMBOL drivers/usb/serial/usbserial 0xc5bfc53b usb_serial_resume +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0x158a3286 lcd_device_unregister +EXPORT_SYMBOL drivers/video/backlight/lcd 0x772ed6ec lcd_device_register +EXPORT_SYMBOL drivers/video/cyber2000fb 0x0cc3ede5 cyber2000fb_detach +EXPORT_SYMBOL drivers/video/cyber2000fb 0x44c9f028 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 0x32c442be matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xc8b57a20 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0xed32ee59 matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x2a970098 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x4738ddf7 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x73a757c8 DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xdc5dadc2 DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0xf043b06a matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x5eb3d826 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x1a3c4041 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x47670043 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7fece167 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xbdbb8dde matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x134f9fd6 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x75493e88 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x5cd5102a matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x7402aa54 matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x899a78e2 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xd8514d16 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xfe83d5ca matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x365df69e mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x6dba6289 video_output_register +EXPORT_SYMBOL drivers/video/output 0xf3011c9b 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 0x08d97a05 svga_get_tilemax +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 0x6e4adb1e svga_check_timings +EXPORT_SYMBOL drivers/video/svgalib 0x76de28f4 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x80f24d95 svga_wcrt_multi +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0xa10d67f5 svga_tileblit +EXPORT_SYMBOL drivers/video/svgalib 0xc796747e 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 0xd4a67b61 svga_tilefill +EXPORT_SYMBOL drivers/video/svgalib 0xe28d2a49 svga_set_default_gfx_regs +EXPORT_SYMBOL drivers/video/svgalib 0xe5f3863e svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0xe63b27b8 svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0xef774f5d svga_compute_pll +EXPORT_SYMBOL drivers/video/svgalib 0xf2db5956 svga_match_format +EXPORT_SYMBOL drivers/video/syscopyarea 0xbf14c43a sys_copyarea +EXPORT_SYMBOL drivers/video/sysfillrect 0xfac8a699 sys_fillrect +EXPORT_SYMBOL drivers/video/sysimgblt 0x0048da4c 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 0x0482a39d vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0x072f901c vme_master_rmw +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 0x2cc6210c vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x2d5e59e4 vme_irq_handler +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 0x58f931bc vme_dma_request +EXPORT_SYMBOL drivers/vme/vme 0x5aff4177 vme_lm_get +EXPORT_SYMBOL drivers/vme/vme 0x5c2517f7 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x63d4629d vme_slot_get +EXPORT_SYMBOL drivers/vme/vme 0x645b783d vme_dma_list_add +EXPORT_SYMBOL drivers/vme/vme 0x6485210c vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0x66227eae vme_alloc_consistent +EXPORT_SYMBOL drivers/vme/vme 0x66c71b93 vme_bus_type +EXPORT_SYMBOL drivers/vme/vme 0x68722bbf vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x7ae1f0e3 vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x7fde2edb vme_master_read +EXPORT_SYMBOL drivers/vme/vme 0x8346f81b vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x84a69fdc vme_slave_get +EXPORT_SYMBOL drivers/vme/vme 0x8935a8db vme_slave_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 0xa5a6c90d vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xad86fc40 vme_new_dma_list +EXPORT_SYMBOL drivers/vme/vme 0xbf07dc7a vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0xc325afd3 vme_irq_free +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 0xeb4d43c4 vme_master_request +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 0x1a60e642 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x4cef8238 w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x7bc3c803 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xaa9e3284 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x29f7f58f w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x4c397f6e w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x6c49e4e1 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x17e5ea7e w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x267c66bf w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xf1c3d7f8 w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x416b84d3 w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x75474373 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xcd88bc92 w1_register_family +EXPORT_SYMBOL drivers/w1/wire 0xe484f3fc w1_unregister_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x01c954ea config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x2731c80c configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x2d68b15b config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0x68a3bbc7 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0x76e0e875 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x896a33ca config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x995f4b9a configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0x9c63ee0d config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xc56b581a config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xec805ec5 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0xf2aa7744 config_group_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0xf87494d3 config_item_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x1f139ec8 ore_write +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x420a5bda ore_remove +EXPORT_SYMBOL fs/exofs/libore 0x7604c9bc extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x7779136b ore_create +EXPORT_SYMBOL fs/exofs/libore 0x84e0b8d7 ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x90810734 ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x9407e750 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xa4f60bb2 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xa5d2bf54 ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0xd3a17c40 ore_put_io_state +EXPORT_SYMBOL fs/fscache/fscache 0x07158f46 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0db43655 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0x0dc613a3 fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0x1927e7a2 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x1b303072 __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x2ea4fddb __fscache_acquire_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x38d0f195 __fscache_uncache_page +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x4a0b8cf0 fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x4dfa55e3 __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x6164f9c4 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x64c9f4dd __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x65a37156 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0x66870218 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x6e0fa855 __fscache_uncache_all_inode_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 0x7a600c52 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x97b8ae11 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x9df66725 __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb5c5dfe8 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0xbb41e662 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xbf44cabb fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xcb5202a2 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0xde4fc950 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xe1edfd1e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0xf39d0ae4 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xf88b9c54 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf89451d7 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xfa6189f2 __fscache_attr_changed +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x7ee3badb qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa4e547f1 qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xa7c2e0aa qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xb634304c qtree_entry_unused +EXPORT_SYMBOL fs/quota/quota_tree 0xb778a5f0 qtree_read_dquot +EXPORT_SYMBOL lib/cordic 0x434bfd07 cordic_calc_iq +EXPORT_SYMBOL lib/crc-ccitt 0x3771b461 crc_ccitt +EXPORT_SYMBOL lib/crc-ccitt 0x75811312 crc_ccitt_table +EXPORT_SYMBOL lib/crc-itu-t 0xd29b009f crc_itu_t_table +EXPORT_SYMBOL lib/crc-itu-t 0xf5b4a948 crc_itu_t +EXPORT_SYMBOL lib/crc7 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 0x1a46afdf lc_find +EXPORT_SYMBOL lib/lru_cache 0x3800eb3f lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x40234646 lc_get +EXPORT_SYMBOL lib/lru_cache 0x4936228e lc_set +EXPORT_SYMBOL lib/lru_cache 0x4eb5f5f1 lc_put +EXPORT_SYMBOL lib/lru_cache 0x68131a82 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x7d2637d1 lc_del +EXPORT_SYMBOL lib/lru_cache 0x896876c0 lc_create +EXPORT_SYMBOL lib/lru_cache 0x92bd5ba2 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x95394182 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x9eba77c4 lc_changed +EXPORT_SYMBOL lib/lru_cache 0xc317be6a lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0xc8da7289 lc_reset +EXPORT_SYMBOL lib/lru_cache 0xe0cbc80e lc_destroy +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 lib/zlib_deflate/zlib_deflate 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0x48034724 zlib_deflateReset +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xe9f7149c zlib_deflate_workspacesize +EXPORT_SYMBOL lib/zlib_deflate/zlib_deflate 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL net/802/p8022 0x44805070 register_8022_client +EXPORT_SYMBOL net/802/p8022 0xe9b7d80a unregister_8022_client +EXPORT_SYMBOL net/802/p8023 0xd3b224ba make_8023_client +EXPORT_SYMBOL net/802/p8023 0xf69328a5 destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0xe9374e35 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xfe38cf9f register_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x0975fb8b p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x0faf4568 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0x1a37c7e9 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x1dcdf65f p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x20555dc6 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x20e8ada4 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x21db7a12 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x23d1bd2a p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x3458da8a v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x37285d85 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3e5fbdd3 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x465fe2a3 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x4b77e48e p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x4d017ba9 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0x5af35f3b p9_client_destroy +EXPORT_SYMBOL net/9p/9pnet 0x5e8ce83c p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x64a06a99 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0x64e94114 p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x68d7a27c p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6f20bef9 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x6fa8653c p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x7184a6ac p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0x849f562d p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x856d2690 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x86c25332 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0x8ed26ab8 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x90e89b01 p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x91a9b679 p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x91aec213 p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0x92545199 p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa67e889c p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0xae6d87c9 p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb2595859 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0xbe7f9d9c p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0xbfca9dbc p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0xc0d818bc p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xd024f73f p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xd405a591 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xdf0d4f6a p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xe23d2dc0 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0xe45fcd54 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe5d186b8 p9_client_readlink +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 0xfd8fa83a p9_client_create +EXPORT_SYMBOL net/appletalk/appletalk 0x550a4e03 atrtr_get_dev +EXPORT_SYMBOL net/appletalk/appletalk 0x7e4a3c66 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x8d3f6edb atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xaf392c82 alloc_ltalkdev +EXPORT_SYMBOL net/atm/atm 0x0294db84 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0x03c0767b atm_charge +EXPORT_SYMBOL net/atm/atm 0x0a39d6c4 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x0d3a6ab4 vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x0f9f172a atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x242e0568 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0x27fd8519 atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x6476af46 atm_proc_root +EXPORT_SYMBOL net/atm/atm 0x6913e812 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x9fe9277b atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xa98d2148 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xca34458a atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xde223719 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xe27dc2d1 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal +EXPORT_SYMBOL net/ax25/ax25 0x0164fbf4 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0x026c1368 ax25_display_timer +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x27b9073c ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0x39ee4d6c ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0x411b8b4d ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x5757a388 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x6f0cb828 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0xa5327a10 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xc7587ecd ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xf6b08563 ax25_hard_header +EXPORT_SYMBOL net/bluetooth/bluetooth 0x06a0a537 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x0df5c6b0 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1b0d15aa hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c17205a bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2000a686 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x24f76fd2 hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x29aba389 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x30ddcf63 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x344b4bcc hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0x35bc5a90 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3d49155e hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0x45056b4f hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x48e7dcac bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x56b00950 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5722e610 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x58b637b9 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5b76e3e0 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5f8b8619 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x61c082f4 hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x621499e2 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0x68f7cf59 hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f357b93 hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x70b7307b hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x838f120a hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x84d860e5 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9079c1fb hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0x9496fa95 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0x963d7045 bt_sock_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0x98dda82c hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9605aa8 bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaf2a2f2d hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbef6746c hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc58f0963 bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd5202bc1 hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe2b38ba4 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xea5a8645 bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0xed628006 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf5967325 bt_sock_ioctl +EXPORT_SYMBOL net/bridge/bridge 0x653e6450 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3606fbed ebt_do_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x3c9c74da ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x95d6f5ba ebt_register_table +EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x1aaf811e cfcnfg_add_phy_layer +EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x2fe9a967 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 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 0xa0492e65 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0xa36aea47 caif_disconnect_client +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xe7ddfe43 get_cfcnfg +EXPORT_SYMBOL net/can/can 0x0ba37443 can_rx_register +EXPORT_SYMBOL net/can/can 0x4ea72ef8 can_send +EXPORT_SYMBOL net/can/can 0x72ced883 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xd6836359 can_proto_register +EXPORT_SYMBOL net/can/can 0xf5ec36bc can_ioctl +EXPORT_SYMBOL net/can/can 0xfc81a5ba can_proto_unregister +EXPORT_SYMBOL net/ceph/libceph 0x00d2f426 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x0ac5f4b8 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x0b8ae0c9 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x10940306 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x128b7fe8 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x12ac7e97 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x145eb47e ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x169a6796 ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x20ce8a8e ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x27a182fd ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x2d2a340c ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x30406ab4 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3158173e ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x3932b69f ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3c12fd56 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x40ac9855 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x42a77b1e ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x43c8d341 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x4a9b4045 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x550daec4 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x5e05f18d ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5fe4b2fa ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x637f7107 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x660baad9 ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x6d2d06a1 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6ed41be2 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x71a776fd ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0x7309d139 ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7c4c74b9 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0x7cc419bd ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0x80e93921 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x82f6cdbe ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x841f1856 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x91abb90d ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa33a297b ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xa40bd703 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0xa6b30058 ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0xa7fed803 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xad54d61a ceph_osdc_cancel_event +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 0xbb062fbc ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0xbc8a87bc ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xbed8c487 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xcb61409a __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcba41774 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xcd810bc0 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xcf955cb0 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd573e137 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xd994eff2 ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0xe5517ca8 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0xedb5ae94 ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0xf117e0e4 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0xf3c07c04 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf48d1888 ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/ceph/libceph 0xfcb97400 ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xfcfdab2c dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x019e7c2d ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x0386b7ed wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x03b013a8 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0x18b5043e wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3510e7f3 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3852aea8 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x38f006d2 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x99d2ca60 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaba64fe7 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xaec37ed7 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd43fd164 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0xe22103bc ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xee96f185 ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x9bb29c00 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xcfca7158 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe91decbc arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x3e46ee3e ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xbfe0fed6 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xdf8c27c4 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x06e0592e __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x2fd53370 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x5023835b nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x5c58a12f nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x822d970c nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x87e5499f nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xf815af93 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/tunnel4 0x5dcaa747 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0x7263dd29 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x0a475718 ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3dce8cd5 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xaf89a4c1 ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbefe1c0b ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x8da0f1ef xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xac6b58fd xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1af693d8 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x4d413cee xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x185519a7 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x33e965de ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x6bdd232f ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x85e32046 ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xe86694bc ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xec808955 ircomm_close +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf350a77b ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xf749495f ircomm_flow_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 0x13699a5f iriap_open +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x260ef94f irlap_open +EXPORT_SYMBOL net/irda/irda 0x2cee81de irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x356c803b irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0x3577d64a irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x3fa69926 irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0x40bdba78 irttp_flow_request +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x5a4d809b async_unwrap_char +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 0x6d37f314 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x6dee2395 irlap_close +EXPORT_SYMBOL net/irda/irda 0x6e0ab3c7 irias_add_string_attrib +EXPORT_SYMBOL net/irda/irda 0x7042bc54 irlmp_register_client +EXPORT_SYMBOL net/irda/irda 0x763e54a4 irlmp_unregister_client +EXPORT_SYMBOL net/irda/irda 0x7957f728 irlmp_update_client +EXPORT_SYMBOL net/irda/irda 0x7b5b6bbb irttp_dup +EXPORT_SYMBOL net/irda/irda 0x7d2a9f76 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x89eea820 irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9ba0b24d iriap_close +EXPORT_SYMBOL net/irda/irda 0x9e4503c3 irlmp_data_request +EXPORT_SYMBOL net/irda/irda 0xa0f9b49c iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xa56f4b2f irttp_data_request +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xaa6f12e2 irda_notify_init +EXPORT_SYMBOL net/irda/irda 0xaf6d55bf irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0xb38560b9 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0xb4901873 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xbcd3ef13 irias_object_change_attribute +EXPORT_SYMBOL net/irda/irda 0xbe40ace9 irlmp_discovery_request +EXPORT_SYMBOL net/irda/irda 0xc66c2cb8 async_wrap_skb +EXPORT_SYMBOL net/irda/irda 0xc68e43be irias_add_octseq_attrib +EXPORT_SYMBOL net/irda/irda 0xcead7dbb hashbin_find +EXPORT_SYMBOL net/irda/irda 0xd081074c proc_irda +EXPORT_SYMBOL net/irda/irda 0xd2108314 hashbin_insert +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 0xeaf5d016 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0xeb776b09 irlmp_open_lsap +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 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xfd47efd7 irttp_connect_response +EXPORT_SYMBOL net/l2tp/l2tp_core 0xed70c833 l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x2681877b lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x5c9ee1cf lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x69863cb2 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0xa206b1d5 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0xa32dc18d lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0xbc84e330 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xe5c164d1 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xf3974df4 lapb_unregister +EXPORT_SYMBOL net/llc/llc 0x0ce8a07a llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0x17eb6288 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x26e07ab4 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x517b20ee llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list +EXPORT_SYMBOL net/llc/llc 0xb26d9aec llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xb908f220 llc_mac_hdr_init +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xd61d44b3 llc_add_pack +EXPORT_SYMBOL net/mac80211/mac80211 0x04d6616e ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x096396cd __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x09a1fc2a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x09fb847a __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x0d119304 ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x12d80a73 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x18a87230 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x1b36b22e ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x1f4b46bc ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x2132a59c wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x25449f26 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x282815f7 ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x2a4eea3a ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x346226e9 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x3e6e14ac ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x3fa27b76 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4381504a ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0x4999c1c8 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x4d766d2a ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x525b3fe4 ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x53b163f7 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x53dbcf7c __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x5884dc18 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x5be8a34a ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5dcdbdf3 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0x5de4d793 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x5eb4f9ef ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6ee0cefb __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x6f392639 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x80003c4a ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x803be79d rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x83aef2d0 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x876a17ea ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x88d1152b ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x9185a304 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x92d02430 ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x95440a9f __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9689f332 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x9f32f92d ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xa69407f2 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xac2ddb06 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xae2cc015 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb475da07 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xb972eec0 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xbd364c14 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0xbe6b22f9 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc67f3dfa ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xcbaf03d9 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xcbff39a1 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d8dd23 ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd726e7fd ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xd88c29e4 ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd984a091 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd9e51bae ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xdc6f6a05 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0xdc9fae18 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdfee1875 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe0c3a935 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xf37b38d0 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xfda21350 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x00862a9c unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0da9dccc ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3f03c16a ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x57dc32e9 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6cf82bc1 unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x705ed986 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7dffdf80 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7f8eced3 ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9832e53c register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa61b491e ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xaf62bc16 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xbde17744 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd4084071 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd51d25a0 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x00393bd2 __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x93598ad6 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xf7fd220e __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xea11134f nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x2048899e xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x49ca850d xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x4a853a4a xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x53504e3d xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x58bb9b78 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x7b5f85a2 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0x8c642fa3 xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0xa4437ef1 xt_find_target +EXPORT_SYMBOL net/netfilter/x_tables 0xa900ebc7 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xbb19f748 xt_register_match +EXPORT_SYMBOL net/nfc/hci/hci 0x07d88ab2 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x0db54794 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x1849e834 nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0x1cd9b93e nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x1e2e8eda nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x29cc380c nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x31154999 nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x3b18bfc0 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x3e16bfdc nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x41d28890 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x4352d80f nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x4a5835db nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x541989ae nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x77ee7009 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x9e320086 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa5be9c7d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xa837fd3b nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0xd01deecb nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0xd65a2228 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xeca223ab nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xfe0d0aea nfc_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x12025038 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x268a6baf nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x36b04a41 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0xaf25ca0a nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nci/nci 0xd938807b nci_free_device +EXPORT_SYMBOL net/nfc/nfc 0x24b1334d nfc_class +EXPORT_SYMBOL net/nfc/nfc 0x350ac9d4 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0x48958eda nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x5738c652 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x5740f454 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x875436d0 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0x92cae606 nfc_dep_link_is_up +EXPORT_SYMBOL net/nfc/nfc 0xb6affbe9 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xb6e19a1c nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xbca113d5 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xd003e42e nfc_alloc_recv_skb +EXPORT_SYMBOL net/phonet/phonet 0x08741175 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x20c9e3ec phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x47da144f phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x4d6b6166 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xc7db771f phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xf61ccf2b pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xfb36450a phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0xfde6ea9f pn_sock_get_port +EXPORT_SYMBOL net/rds/rds 0x5031b8c5 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x06c00855 rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x2ae62423 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x32089281 rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x357b533f rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x4755fafc rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x47ff18b8 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x50917fcf rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x800f6626 rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x8c165527 rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xab819111 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xbc1c130e rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc76c0c33 key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xda53f751 rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xdf1a0df7 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xf260ff44 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0xe0d1fee2 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x89d7ea49 svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x4c109ba9 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0xe0be2fee wimax_reset +EXPORT_SYMBOL net/wimax/wimax 0xf72603bc wimax_rfkill +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x0a8bfdcf ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x0baef94d __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x16eda9a5 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x1a179fdc ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x1a225eb2 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x1b0ed68f wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x24148719 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x3020a251 cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x30ab37c2 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x32910695 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x355aba5b cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x35a519c1 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x38495617 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x3af330af cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x3e40fba0 cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x44777ade cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x4eeddf0a cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x50501a7f cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x58670f37 cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x58ab6e40 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x5b49af30 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x667b6ffc wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x67b9e73f cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6b1105e2 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x6b6b04ed cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x6f6a7259 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x7178ac25 wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x72a77b7a cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x74610508 cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x7cd15afe cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x7eba2a4f cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x828794e1 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x8496e4ea cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x8994ebb3 cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0x8a3f71f9 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0x8b846e66 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x8de1a689 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x93382fa6 ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x97082da2 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x9bd19475 cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x9ec2aefb cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa2954706 ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa58a0bef cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xa5c49d23 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaebb1f29 cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaf9fe77a ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xb72c9475 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0xb8b4e1b6 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xb9c80eaa cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0xc31dbd99 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc8a2993e cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0xcb18cab3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xcf2bd06b wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0xd260601c cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0xd9c77430 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xda10d65e cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0xda78ffd7 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xdf0763e7 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xe16d8a36 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xe5e6ec59 wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0xf118fa66 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0xfb2ccd09 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xfca05e54 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0xfdb6a2c6 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x0c1e12a7 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x365eaa84 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x813e048c lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x89ba3a76 lib80211_crypt_info_init +EXPORT_SYMBOL net/wireless/lib80211 0x9b787ff8 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0xb7e1100f lib80211_unregister_crypto_ops +EXPORT_SYMBOL sound/ac97_bus 0x9e49adb5 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x690ca46d snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x0c98db57 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0x1a724fcc snd_seq_kernel_client_ctl +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3061c52d snd_use_lock_sync_helper +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 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 0xa29b5697 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 0xc10d358b snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf021547d snd_seq_create_kernel_client +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 0x94b859d8 snd_seq_device_register_driver +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0xa46ce506 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 0xc9401d2c snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x154b405e snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x157e35d9 snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x167fb987 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0x1779e0cd snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1c559318 snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x200894c1 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x2320e7e6 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x24a94b26 snd_info_get_line +EXPORT_SYMBOL sound/core/snd 0x2d7874bd snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0x2d8a8fce snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0x2fa21e33 snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x38338447 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3d29a858 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x3e5d2301 snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0x4004c5ce snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x49abac6a snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x4f91bc38 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x531a6850 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0x553293ab snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x602c96f0 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x61f29fee snd_info_register +EXPORT_SYMBOL sound/core/snd 0x620ec350 snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0x6aecddef snd_device_new +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x718e8988 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0x73931966 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x75d1ea5b snd_cards +EXPORT_SYMBOL sound/core/snd 0x782a9d52 snd_card_create +EXPORT_SYMBOL sound/core/snd 0x7c6947ad snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x86abf0de snd_card_register +EXPORT_SYMBOL sound/core/snd 0x8cc8740a snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x92e2bce1 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x998be952 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x9a85141c snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x9e6d79f8 snd_info_get_str +EXPORT_SYMBOL sound/core/snd 0xa00a2175 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xa0fd2427 snd_pci_quirk_lookup_id +EXPORT_SYMBOL sound/core/snd 0xaccdddb4 snd_power_wait +EXPORT_SYMBOL sound/core/snd 0xb1325418 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xbc422128 snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xbf9eaa03 snd_ctl_remove +EXPORT_SYMBOL sound/core/snd 0xc272c007 snd_component_add +EXPORT_SYMBOL sound/core/snd 0xce3ca308 copy_from_user_toio +EXPORT_SYMBOL sound/core/snd 0xced72efd snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0xd1157735 release_and_free_resource +EXPORT_SYMBOL sound/core/snd 0xd3d29781 snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0xd520ed50 _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xd8bfcf01 snd_ctl_remove_id +EXPORT_SYMBOL sound/core/snd 0xe3041040 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xe3aa7efc snd_seq_root +EXPORT_SYMBOL sound/core/snd 0xe91169f1 snd_device_register +EXPORT_SYMBOL sound/core/snd 0xf45cf035 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xf5a45788 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0xf91c92e9 snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0xfbc619f4 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd-hwdep 0xb695e3e0 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06d256be snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x1420d7bc snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x303b23d7 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b91f3af snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x88845116 snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xade88e76 snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xcd6fc826 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x02616005 snd_pcm_hw_constraint_msbits +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 0x06719b63 snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0x0a1c28e4 snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0x11fa733f snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0x15140e18 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x1f26e665 snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x267ab625 snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x2a55caf1 snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x314d7403 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x33c575d0 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0x3796bdcc snd_pcm_format_little_endian +EXPORT_SYMBOL sound/core/snd-pcm 0x38a792d4 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-pcm 0x39bf9301 _snd_pcm_hw_param_setempty +EXPORT_SYMBOL sound/core/snd-pcm 0x3f117f87 snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x4061f5f3 snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0x41243eab snd_pcm_set_ops +EXPORT_SYMBOL sound/core/snd-pcm 0x440b0c71 snd_pcm_hw_constraint_step +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 0x58314561 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0x5b94bf6c snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x5d69b5e8 snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x5e7f4920 snd_pcm_format_set_silence +EXPORT_SYMBOL sound/core/snd-pcm 0x628d0225 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6653fac8 snd_pcm_hw_constraint_pow2 +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 0x7069b18d snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x86a61c88 snd_pcm_limit_hw_rates +EXPORT_SYMBOL sound/core/snd-pcm 0x88ad1d05 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x8bc6ae0a snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x9a652849 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x9cd403f1 snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x9cf009f1 snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa92b83dc snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xb7619ded snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xba6c94d9 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xbac40869 snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0xbeb5e91b _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc5447fb2 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd7dabe50 snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xda2fe68a snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xdc9de154 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xdf385f24 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe745c60e snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xf02b8ce9 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf9c1822f snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xfcd3af2c snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xffd243f9 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-rawmidi 0x053a6e44 snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0cc8f7f8 snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1e1e3522 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0x3ed15727 snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0x4251e400 snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x54787604 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7c5b7b11 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x821e2a97 snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa7a072c1 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaa7adfd4 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xb1b3f27c snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc01a84b3 snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcb441ab1 snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd82c3bd snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcf7e36ba snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd49fa39e snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0xd9dbeea8 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x098d3073 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x0ea1f796 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x3c6b4694 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x473c2ec3 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0x4d831565 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x530116ef snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0x55b07c85 snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0x6e9874f2 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0x7198cfa2 snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x8f696c8f snd_timer_global_register +EXPORT_SYMBOL sound/core/snd-timer 0xa926e4e6 snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0xb464bd5a snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0xbedd4a0d 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 0xb6c3ef3f 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 0x0f511ee5 snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x50b2808a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x566c752f snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x6cb9e5d8 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x932eeff8 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9af3fa24 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xa5e7d440 snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xb09e0a64 snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0xd4aedb12 snd_opl3_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x0cdb2909 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x32524bcd snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x7159bebb snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8342f9b4 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x97bbcbbc snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xbaae28df snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd11b3b00 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xda59e7ff snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xdb8245f8 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x04e8b5cd cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x12c59bbc amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x15feb5fc fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x23ccb895 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x27b5b7ac fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x3706b34c iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49ef7756 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x4c722e26 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5462e552 fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x54fbf79c cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x591218f7 amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64bc70be amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6db46acc cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x83544c01 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91b19d1c snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9ed19f51 fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa679e4dc amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb3401825 amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbab30bb4 amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xbf45db2e amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xcc96ff4c iso_packets_buffer_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd316b309 amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd446a0ff fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xd9b3f4dd cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xdffe6ffc amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf4f55e6a amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x0de3933b snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x71a3d518 snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x8af204b9 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x925a122c snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xc195002a snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0xccb42128 snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x0128757d snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1246d394 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x37f3d5ac snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x68011b9e snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xa6691c38 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xbbf7b120 snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x0677c658 snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x3d063cda snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x841eab88 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xbd95029e snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x0b198b33 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xb7c64bce snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0x5fdd6fc0 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xe92a3d38 snd_tea575x_init +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x3709eed4 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x38e3a11f snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x5d837b4e snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x6f0851e5 snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf3b99ef1 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x056133e1 snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x4b24da18 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x91863244 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa199b0d1 snd_i2c_device_free +EXPORT_SYMBOL sound/i2c/snd-i2c 0xa46a40da snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0xf07142f2 snd_i2c_sendbytes +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x104484a0 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x1ae3b4a8 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x35f80ba0 snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3e94e115 snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4a6251a7 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x81de6af1 snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x8aa8b3bd snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x90ad8b7c snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9f84349c snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xf63f7288 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x107676ee snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x730d845c snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xcfffb78d snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x160ba05a snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x18222587 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x20b9e50b snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x30dbd779 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x53a3765a snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c65d565 snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7645a0a8 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x82097b6d snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9b409d13 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x9f1a9a55 snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb15231db snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xc4718ea3 snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xcd960941 snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xe425da09 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xebcb4de1 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xf8965bbb snd_ac97_suspend +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xfb9cd262 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x01eb6d73 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x3480d1cc snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x578c99a0 snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x5f2d6c20 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa3288359 snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa73e3d80 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa806d554 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xd1934250 snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xf8aca718 snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xff11b48f snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x0a9155d2 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x2abb1d53 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdc9e0f11 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x0377f701 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x24989574 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x2977deb0 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x3278f5e8 oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x4425c6f4 oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x54f546f9 oxygen_write_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62e80fd5 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x9c183460 oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa1739ce8 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa8c43930 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb3d1a74b oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbbda8308 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc774ffd8 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd98142f3 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xd9b14173 oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xda78b0c5 oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe3e9d0fd oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xe67dc992 oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xece2f9c3 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xfc37e779 oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xff8f8a0c oxygen_read16 +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x0297b096 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x31449977 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x54f5d0ea snd_trident_write_voice_regs +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x5b7e7054 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xb1954ad6 snd_trident_start_voice +EXPORT_SYMBOL sound/soundcore 0x01717cc9 register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0x118bbaa9 register_sound_special +EXPORT_SYMBOL sound/soundcore 0x12b5be44 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x19076476 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x6d211c20 sound_class +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x8bd6576f register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x2284012f snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x24f451aa snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x4ccd90cb 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 0x6d60eac1 snd_emux_new +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xc283e83e snd_emux_free +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xe039b166 snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/snd-util-mem 0x05fcdc35 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x8b98068d snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xaba96e11 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xbf13abfa __snd_util_memblk_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9c05dc3 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xebd38a24 snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf2970f80 snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xfe2a6340 snd_util_mem_avail +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x16756dc0 snd_usbmidi_input_start +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0x4b3dc200 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 softirq_work_list +EXPORT_SYMBOL vmlinux 0x00236ffc netlink_broadcast +EXPORT_SYMBOL vmlinux 0x003ed69a __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x0048f634 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x007bbd7a blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x0084e86d unregister_shrinker +EXPORT_SYMBOL vmlinux 0x00c76429 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x00cce11a bio_kmalloc +EXPORT_SYMBOL vmlinux 0x00cf0926 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x00e8097b csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0x00fcc79b kernel_sendpage +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01139ffc max_mapnr +EXPORT_SYMBOL vmlinux 0x01270367 dev_printk +EXPORT_SYMBOL vmlinux 0x0136426c pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x016315cd bdget_disk +EXPORT_SYMBOL vmlinux 0x0186e2de smp_call_function_many +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x01980e5e ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01a22ed1 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x01a8a7d5 elv_rb_find +EXPORT_SYMBOL vmlinux 0x01bef72a gen_pool_free +EXPORT_SYMBOL vmlinux 0x01c20893 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x01c8a9e0 read_dev_sector +EXPORT_SYMBOL vmlinux 0x01cbec9c inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x01ced3f5 tty_check_change +EXPORT_SYMBOL vmlinux 0x01dae44d dquot_resume +EXPORT_SYMBOL vmlinux 0x01f5885a inode_init_once +EXPORT_SYMBOL vmlinux 0x020470ea con_copy_unimap +EXPORT_SYMBOL vmlinux 0x023922d6 inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x024cf4d3 km_state_notify +EXPORT_SYMBOL vmlinux 0x0253707b kill_bdev +EXPORT_SYMBOL vmlinux 0x02581ede netpoll_print_options +EXPORT_SYMBOL vmlinux 0x025ae9ff qdisc_reset +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x02908471 uart_add_one_port +EXPORT_SYMBOL vmlinux 0x0296d202 tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a3417f dquot_operations +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02b00d1c xfrm_lookup +EXPORT_SYMBOL vmlinux 0x02c7d634 generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x02ca3e90 dst_alloc +EXPORT_SYMBOL vmlinux 0x02d6949f deactivate_super +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02ee26c1 free_pages_exact +EXPORT_SYMBOL vmlinux 0x03114809 ip_options_compile +EXPORT_SYMBOL vmlinux 0x0332b46b sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x0344ba19 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x037d0625 __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0392df8e flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x03994cd7 tty_register_device +EXPORT_SYMBOL vmlinux 0x03b54d1c dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram +EXPORT_SYMBOL vmlinux 0x041288a1 module_refcount +EXPORT_SYMBOL vmlinux 0x041f5cc2 pci_bus_type +EXPORT_SYMBOL vmlinux 0x0422fe4a inet_csk_timer_bug_msg +EXPORT_SYMBOL vmlinux 0x043ddd56 sock_no_accept +EXPORT_SYMBOL vmlinux 0x0444639b flush_tlb_range +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x045182cb skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0x045c0430 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x046baffb mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x04737af0 scsi_print_result +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048f997f xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0x049d55a6 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x04a339c3 dev_mc_add +EXPORT_SYMBOL vmlinux 0x04b89d78 seq_path +EXPORT_SYMBOL vmlinux 0x04d5fba0 input_release_device +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04f8e2f6 invalidate_partition +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0526a8cb ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x052d3906 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0x052f4d7f __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054a350d xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ce975 hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x0588b344 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0x058abc3f fb_set_cmap +EXPORT_SYMBOL vmlinux 0x05a2ce81 __module_get +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a773a5 dst_discard +EXPORT_SYMBOL vmlinux 0x05a9724f pci_match_id +EXPORT_SYMBOL vmlinux 0x05ad666f inc_nlink +EXPORT_SYMBOL vmlinux 0x05b07092 sock_update_classid +EXPORT_SYMBOL vmlinux 0x05b46759 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x05e1a0bd send_sig +EXPORT_SYMBOL vmlinux 0x05f9364d skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0x0610e794 inet6_del_protocol +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x063cfb37 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x0644f0e3 thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x0660ce0d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0x0673b3b6 vfs_fsync +EXPORT_SYMBOL vmlinux 0x06754da8 generic_ro_fops +EXPORT_SYMBOL vmlinux 0x0675c7eb atomic64_cmpxchg +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x068b9f4d inet6_getname +EXPORT_SYMBOL vmlinux 0x06a33c5f dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06c9fd51 seq_escape +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x07146d6c dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x07180bbf set_anon_super +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x074989f8 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x075f879f genphy_suspend +EXPORT_SYMBOL vmlinux 0x076aa64a tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x0785b156 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x0788a12f generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x0789f480 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0x07994171 __netdev_printk +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07cdf834 agp_bridge +EXPORT_SYMBOL vmlinux 0x07d9b3eb neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07e033f7 sock_rfree +EXPORT_SYMBOL vmlinux 0x08047450 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x086b7693 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x087ead66 softnet_data +EXPORT_SYMBOL vmlinux 0x0886e779 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x088916b4 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x0895bd1f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0x089894ec page_follow_link_light +EXPORT_SYMBOL vmlinux 0x08d7ff9f pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0x08f5abf6 genphy_read_status +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x0979e122 mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0x097e187d pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0x0988b504 devm_free_irq +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099fab17 simple_readpage +EXPORT_SYMBOL vmlinux 0x09b0b774 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x09c0d623 blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09ce48c7 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09e64707 skb_insert +EXPORT_SYMBOL vmlinux 0x09e8b097 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x09ec2928 blk_recount_segments +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a2b1ccb dm_unregister_target +EXPORT_SYMBOL vmlinux 0x0a3131f6 strnchr +EXPORT_SYMBOL vmlinux 0x0a314236 phy_connect +EXPORT_SYMBOL vmlinux 0x0a40186a dcache_dir_open +EXPORT_SYMBOL vmlinux 0x0a4325df pci_enable_msix +EXPORT_SYMBOL vmlinux 0x0a43ad0d tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x0a469d23 mfd_clone_cell +EXPORT_SYMBOL vmlinux 0x0a49ed56 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x0a6827de of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x0a88893b registered_fb +EXPORT_SYMBOL vmlinux 0x0a9ac393 tcf_em_register +EXPORT_SYMBOL vmlinux 0x0a9be2ea xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0ad4abdf xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x0afcc3cc ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b15e02d dm_get_device +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b433932 sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x0b466e18 phy_start_aneg +EXPORT_SYMBOL vmlinux 0x0b48677a __kfifo_init +EXPORT_SYMBOL vmlinux 0x0b4924fe __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0b7b7f04 dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0x0b7ee37c module_layout +EXPORT_SYMBOL vmlinux 0x0b8cd4ca sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x0bb17b87 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bc486af kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x0c047b3d i2c_del_adapter +EXPORT_SYMBOL vmlinux 0x0c0b39a0 kill_block_super +EXPORT_SYMBOL vmlinux 0x0c12e626 __debugger_bpt +EXPORT_SYMBOL vmlinux 0x0c21fe3e gen_pool_alloc +EXPORT_SYMBOL vmlinux 0x0c2a30e4 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x0c33983e tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x0c396217 cdev_add +EXPORT_SYMBOL vmlinux 0x0c4f605e bio_clone +EXPORT_SYMBOL vmlinux 0x0c58a8cd netdev_increment_features +EXPORT_SYMBOL vmlinux 0x0c5c87df kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x0c604c33 dcb_getapp +EXPORT_SYMBOL vmlinux 0x0c65e73c scsi_normalize_sense +EXPORT_SYMBOL vmlinux 0x0c850831 neigh_update +EXPORT_SYMBOL vmlinux 0x0c8c9e99 scsi_show_extd_sense +EXPORT_SYMBOL vmlinux 0x0c9b6089 nvram_get_size +EXPORT_SYMBOL vmlinux 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0cc28cb9 set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0x0ce0cfd4 secpath_dup +EXPORT_SYMBOL vmlinux 0x0ce59ab8 iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0x0d46798e set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d5520bd netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x0d6e0772 build_skb +EXPORT_SYMBOL vmlinux 0x0d742c35 kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dadcaff nf_ct_attach +EXPORT_SYMBOL vmlinux 0x0dbf38b8 mol_trampoline +EXPORT_SYMBOL vmlinux 0x0dc6d922 blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x0dd367fe udp_proc_register +EXPORT_SYMBOL vmlinux 0x0e0cd927 security_path_truncate +EXPORT_SYMBOL vmlinux 0x0e3065dc i2c_master_send +EXPORT_SYMBOL vmlinux 0x0e4c313c agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x0e4e60f3 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x0e5dddb3 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e7dbf2a dev_crit +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e8fc3ea phy_connect_direct +EXPORT_SYMBOL vmlinux 0x0e9341ff mount_ns +EXPORT_SYMBOL vmlinux 0x0ea0a185 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x0ed25fc5 flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x0ee3c169 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x0ef20db1 kernstart_addr +EXPORT_SYMBOL vmlinux 0x0ef8c07e scsi_dma_map +EXPORT_SYMBOL vmlinux 0x0efba11d pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x0f0456a1 journal_load +EXPORT_SYMBOL vmlinux 0x0f28cb91 nvram_read_byte +EXPORT_SYMBOL vmlinux 0x0f42bd96 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f5daf6d scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x0f7058b9 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x0f7a492e grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x0f88df01 textsearch_destroy +EXPORT_SYMBOL vmlinux 0x0f9aac25 get_io_context +EXPORT_SYMBOL vmlinux 0x0fa493a8 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0x0fa775b2 mutex_lock +EXPORT_SYMBOL vmlinux 0x0fa98f7d sock_create_lite +EXPORT_SYMBOL vmlinux 0x0fa9b0b6 thaw_super +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fc9b2d3 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x0fd6ee01 seq_release_private +EXPORT_SYMBOL vmlinux 0x0fd9f552 d_genocide +EXPORT_SYMBOL vmlinux 0x0fdc5e52 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x0feba6e8 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x104dacf1 blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x1058e2b1 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x105bfc1c sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1076c666 md_flush_request +EXPORT_SYMBOL vmlinux 0x109a1f8b filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0x10b97fc9 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x10d1fe4b tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x10d5b318 led_brightness_set +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x10fcf7e2 dquot_enable +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1109bbd0 neigh_table_clear +EXPORT_SYMBOL vmlinux 0x111e39ac get_phy_device +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113108a3 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x113403a2 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x11390f2b request_key_async_with_auxdata +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 0x118b9520 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x118e3ecd tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x11995749 journal_revoke +EXPORT_SYMBOL vmlinux 0x11bda425 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x11cf27a9 idr_destroy +EXPORT_SYMBOL vmlinux 0x11da78fb fb_find_mode +EXPORT_SYMBOL vmlinux 0x11db0a73 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x12598fe5 macio_release_resource +EXPORT_SYMBOL vmlinux 0x125ad011 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12a9e134 mmc_start_req +EXPORT_SYMBOL vmlinux 0x12da5bb2 __kmalloc +EXPORT_SYMBOL vmlinux 0x12e5ef0c rtas_set_power_level +EXPORT_SYMBOL vmlinux 0x12f259de jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x131ebe9e writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0x13251bb9 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x133a082f abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x133b4ee4 idr_get_next +EXPORT_SYMBOL vmlinux 0x1354e27e __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x1383a4c7 dquot_release +EXPORT_SYMBOL vmlinux 0x13a27d70 nf_log_packet +EXPORT_SYMBOL vmlinux 0x13a5a19f input_allocate_device +EXPORT_SYMBOL vmlinux 0x13a9a3da abort_creds +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13b815a2 uart_match_port +EXPORT_SYMBOL vmlinux 0x13c013d4 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0x13c1aab3 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13df70fc nobh_write_begin +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13ee087f delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13fa5236 ip_setsockopt +EXPORT_SYMBOL vmlinux 0x13ff4b2a stop_tty +EXPORT_SYMBOL vmlinux 0x1407c6e7 kmap_prot +EXPORT_SYMBOL vmlinux 0x1420b379 kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0x142a518e __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x143c37fc phy_stop +EXPORT_SYMBOL vmlinux 0x14435b2f unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x14835513 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x148d99ad of_find_property +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x14e837a0 idr_find +EXPORT_SYMBOL vmlinux 0x1537b979 tcp_connect +EXPORT_SYMBOL vmlinux 0x1545402e padata_remove_cpu +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1555a1a0 twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x1596a953 path_is_under +EXPORT_SYMBOL vmlinux 0x159bd567 file_update_time +EXPORT_SYMBOL vmlinux 0x15cd963b prepare_binprm +EXPORT_SYMBOL vmlinux 0x15d031a1 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x15dec291 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x15ea6186 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161d0033 proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0x1626ff56 dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x163a6b1b scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x16436d30 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x16630dbe udp_ioctl +EXPORT_SYMBOL vmlinux 0x169be9bc dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x16b1184d mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16cc6a40 bd_set_size +EXPORT_SYMBOL vmlinux 0x16f5986b arp_xmit +EXPORT_SYMBOL vmlinux 0x172462de pskb_expand_head +EXPORT_SYMBOL vmlinux 0x174c24f3 dev_get_stats +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x17668917 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x1791cfbb md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x17aa156a __ucmpdi2 +EXPORT_SYMBOL vmlinux 0x17b1de7c pci_get_device +EXPORT_SYMBOL vmlinux 0x17be71cf set_disk_ro +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f2b386 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x17ff6be4 mntget +EXPORT_SYMBOL vmlinux 0x18064d11 pci_pme_active +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 0x184ba3f0 note_scsi_host +EXPORT_SYMBOL vmlinux 0x184ccdad __quota_error +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x186263f4 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0x1873e845 commit_creds +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a3c3af sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0x18c95379 tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x18c97f19 pci_disable_obff +EXPORT_SYMBOL vmlinux 0x18db59f2 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x18f09075 bdput +EXPORT_SYMBOL vmlinux 0x19248de1 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x1926c423 poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x19339d74 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x1936a835 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x193a5078 __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x193bd9be scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0x1942b0b9 datagram_poll +EXPORT_SYMBOL vmlinux 0x1942d7be mddev_congested +EXPORT_SYMBOL vmlinux 0x19610e1f cpu_all_bits +EXPORT_SYMBOL vmlinux 0x19690ca5 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0x196d0795 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x1971a8d8 genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19a25772 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x19a649b4 dcache_dir_close +EXPORT_SYMBOL vmlinux 0x19ada2a3 jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0x19b4acc8 pci_request_regions +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c7507a seq_write +EXPORT_SYMBOL vmlinux 0x19d3c7d3 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x19d3d6d6 prepare_creds +EXPORT_SYMBOL vmlinux 0x19e43762 get_disk +EXPORT_SYMBOL vmlinux 0x1a006a4e km_new_mapping +EXPORT_SYMBOL vmlinux 0x1a0684f5 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a353823 kernel_read +EXPORT_SYMBOL vmlinux 0x1a3c9f75 inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0x1a63c438 dcache_readdir +EXPORT_SYMBOL vmlinux 0x1a677d35 d_make_root +EXPORT_SYMBOL vmlinux 0x1a854de1 pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x1a8891b3 cfb_fillrect +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ad2619f pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x1ae2948f scsi_target_resume +EXPORT_SYMBOL vmlinux 0x1ae94d65 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0x1af2ef00 generic_write_checks +EXPORT_SYMBOL vmlinux 0x1afc4a86 mii_check_link +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b01f97f i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x1b0ac272 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0x1b196595 pci_select_bars +EXPORT_SYMBOL vmlinux 0x1b1986a3 vfs_statfs +EXPORT_SYMBOL vmlinux 0x1b210bdd blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0x1b278ad4 end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x1b542664 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b702173 generic_show_options +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b932447 scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x1b9c3919 skb_checksum_help +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba150d5 pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x1baee8a9 i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x1bb59a05 i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0x1bbbcf36 fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bdd41cd input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x1be49204 init_net +EXPORT_SYMBOL vmlinux 0x1be7a434 textsearch_unregister +EXPORT_SYMBOL vmlinux 0x1bf2905e dev_emerg +EXPORT_SYMBOL vmlinux 0x1c07a0ee fb_blank +EXPORT_SYMBOL vmlinux 0x1c3073e4 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0x1c49833d tc_classify_compat +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c936e3a pci_domain_nr +EXPORT_SYMBOL vmlinux 0x1cbbddaa pcim_iomap +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cdcd2b0 vmap +EXPORT_SYMBOL vmlinux 0x1ce7f52f xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0x1ceda8f1 mac_find_mode +EXPORT_SYMBOL vmlinux 0x1cf2fd86 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0x1d2a9249 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0x1d401e46 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x1d4e56a7 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0x1d57aa91 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x1d8b911e inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dd384cd pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1e0c9f6b padata_free +EXPORT_SYMBOL vmlinux 0x1e156da7 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e3da223 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0x1e4a763f inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e89a420 inet_frags_init +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1edc03c8 giveup_altivec +EXPORT_SYMBOL vmlinux 0x1eeb8de4 dev_disable_lro +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1f0f10f8 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x1f1a01a7 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x1f40f1c3 module_put +EXPORT_SYMBOL vmlinux 0x1f47d789 vm_map_ram +EXPORT_SYMBOL vmlinux 0x1f4a444b sg_miter_start +EXPORT_SYMBOL vmlinux 0x1f6674bb scsi_put_command +EXPORT_SYMBOL vmlinux 0x1f7e807f kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fcd65ea vfs_readdir +EXPORT_SYMBOL vmlinux 0x1fe14d0d sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x1fe645f8 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x1fe7c66f sock_wfree +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x20030ecd ioremap +EXPORT_SYMBOL vmlinux 0x20341cb3 con_set_default_unimap +EXPORT_SYMBOL vmlinux 0x203a215a of_get_next_child +EXPORT_SYMBOL vmlinux 0x20421305 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x20469f6d macio_dev_get +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x207322b1 __elv_add_request +EXPORT_SYMBOL vmlinux 0x20964f47 generic_writepages +EXPORT_SYMBOL vmlinux 0x2096d431 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x2097b52c sync_inode_metadata +EXPORT_SYMBOL vmlinux 0x20a46ff9 update_time +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20b1a332 __dquot_transfer +EXPORT_SYMBOL vmlinux 0x20b201d5 pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0x20b9ead6 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20c7a35d mach_powermac +EXPORT_SYMBOL vmlinux 0x20d258a9 netdev_printk +EXPORT_SYMBOL vmlinux 0x20dfe77d pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x20e1ba2e scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x20f7a932 simple_rmdir +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x2138fb40 sget +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x21a3a583 scsi_init_io +EXPORT_SYMBOL vmlinux 0x21a7eb58 netif_napi_del +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x2215b575 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x2217d92d ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x2223a3b8 inode_add_bytes +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2237bc5d mdio_bus_type +EXPORT_SYMBOL vmlinux 0x22586de4 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x225e909e schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x226e81dc bio_copy_kern +EXPORT_SYMBOL vmlinux 0x226f1d26 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x22812617 alloc_pci_dev +EXPORT_SYMBOL vmlinux 0x2282ebb4 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x229565d1 macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x22a1d63c simple_getattr +EXPORT_SYMBOL vmlinux 0x22a77529 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22c47134 scsi_block_requests +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232c7dc5 dentry_open +EXPORT_SYMBOL vmlinux 0x23308773 get_user_pages +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x23612f01 vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x238c0a1e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x239f1c04 skb_queue_head +EXPORT_SYMBOL vmlinux 0x239fced0 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x23a33d48 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23a88684 ata_port_printk +EXPORT_SYMBOL vmlinux 0x23b8dc9f skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23d182f9 submit_bio +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23f3968c locks_free_lock +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x24162c0f phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x2416cde6 cont_write_begin +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x2436df03 dget_parent +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x24439e62 kobject_get +EXPORT_SYMBOL vmlinux 0x2447d0c4 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x245f84ee seq_open +EXPORT_SYMBOL vmlinux 0x2469e3bf thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2486fba3 devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0x248e0ec5 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x24c587a7 ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0x24d1dd69 pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250113b4 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x2502ebdb keyring_search +EXPORT_SYMBOL vmlinux 0x250ef950 pci_iomap +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252c8eae generic_listxattr +EXPORT_SYMBOL vmlinux 0x253182b0 unregister_nls +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x253ed4e0 pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x2545ab69 tcp_poll +EXPORT_SYMBOL vmlinux 0x25687138 tty_hangup +EXPORT_SYMBOL vmlinux 0x2573ae07 splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0x2577cf6d journal_abort +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x25980218 skb_copy +EXPORT_SYMBOL vmlinux 0x25b93d7e neigh_destroy +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25e01b75 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x25e0bc01 __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x25f3bd2e atomic64_xchg +EXPORT_SYMBOL vmlinux 0x25fcdc6c scsi_execute +EXPORT_SYMBOL vmlinux 0x25ffe26d generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x2614da7f vm_event_states +EXPORT_SYMBOL vmlinux 0x261a57c9 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x2647088b __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x265ef2d9 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x268ed8d2 dquot_commit_info +EXPORT_SYMBOL vmlinux 0x2695e1c0 sg_miter_next +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26bb950b __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x26fb4675 write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x27244070 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0x272c9acd pmu_battery_count +EXPORT_SYMBOL vmlinux 0x275c7056 dquot_quota_sync +EXPORT_SYMBOL vmlinux 0x27638d1b invalidate_bdev +EXPORT_SYMBOL vmlinux 0x276f6d75 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27970ce1 skb_split +EXPORT_SYMBOL vmlinux 0x27b7ee7b add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27c3974a netif_rx +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27f4fc2f pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x2801e5d4 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x28372abe phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0x2865d44d tty_devnum +EXPORT_SYMBOL vmlinux 0x286a6fb0 bio_put +EXPORT_SYMBOL vmlinux 0x287a3923 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x2894c043 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28a402a4 ppp_input +EXPORT_SYMBOL vmlinux 0x28aa5f20 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x28b9e0f3 sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x28bd471d page_readlink +EXPORT_SYMBOL vmlinux 0x28c6a8c0 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x28ca0384 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x28d8fc14 security_path_symlink +EXPORT_SYMBOL vmlinux 0x28da322c dmam_pool_create +EXPORT_SYMBOL vmlinux 0x28f514ef cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x29392a11 init_buffer +EXPORT_SYMBOL vmlinux 0x293be3d2 poll_initwait +EXPORT_SYMBOL vmlinux 0x294da5e7 simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2957250d sk_filter +EXPORT_SYMBOL vmlinux 0x2990824e d_obtain_alias +EXPORT_SYMBOL vmlinux 0x299e753c pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0x29a38fa0 pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x29a82942 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x29b1c366 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x29bd2510 pneigh_lookup +EXPORT_SYMBOL vmlinux 0x29bddcf6 do_SAK +EXPORT_SYMBOL vmlinux 0x29e9f5f3 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x29fdda53 kstrtos8_from_user +EXPORT_SYMBOL vmlinux 0x2a2872e6 netif_device_attach +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a4ff1b0 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2a76f218 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x2a7cac99 pci_add_resource +EXPORT_SYMBOL vmlinux 0x2a803c02 set_bdi_congested +EXPORT_SYMBOL vmlinux 0x2aa0e4fc strncasecmp +EXPORT_SYMBOL vmlinux 0x2abd18ca fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x2ae8fbbf do_splice_direct +EXPORT_SYMBOL vmlinux 0x2af3208b pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x2afdf72d mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b12925d cpumask_next_and +EXPORT_SYMBOL vmlinux 0x2b2110c4 pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b39c260 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x2b79095e pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba6c4d3 __napi_complete +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2bc61da1 program_check_exception +EXPORT_SYMBOL vmlinux 0x2c00bdf3 kset_register +EXPORT_SYMBOL vmlinux 0x2c0634fd block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0x2c099477 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x2c14323a kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c282c26 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0x2c37b581 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x2c535da5 __page_symlink +EXPORT_SYMBOL vmlinux 0x2c5b990e nla_put +EXPORT_SYMBOL vmlinux 0x2c6a3f1e security_path_chown +EXPORT_SYMBOL vmlinux 0x2c6bebd1 journal_dirty_data +EXPORT_SYMBOL vmlinux 0x2c6c974b padata_set_cpumask +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2c95cc22 unlock_buffer +EXPORT_SYMBOL vmlinux 0x2ca29014 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x2cae9506 blk_peek_request +EXPORT_SYMBOL vmlinux 0x2d10eca1 dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d639391 vga_put +EXPORT_SYMBOL vmlinux 0x2d7763d4 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2dae4e32 tty_mutex +EXPORT_SYMBOL vmlinux 0x2ddcf60a account_page_dirtied +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2e0bce93 netlink_unicast +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e33fa1b bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x2e36b76d inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0x2e41d3b8 ata_print_version +EXPORT_SYMBOL vmlinux 0x2e587798 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x2e734f17 key_revoke +EXPORT_SYMBOL vmlinux 0x2ea36d2c cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0x2ec1c1be of_match_node +EXPORT_SYMBOL vmlinux 0x2ec524ad __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x2ec74c3f backlight_device_register +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 0x2f0a10c6 machine_id +EXPORT_SYMBOL vmlinux 0x2f1a958a inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x2f24998a nf_getsockopt +EXPORT_SYMBOL vmlinux 0x2f278bc4 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x2f2b1f50 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0x2f461894 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fdcefaf __scm_destroy +EXPORT_SYMBOL vmlinux 0x2fe8c52a inode_init_always +EXPORT_SYMBOL vmlinux 0x2feb44f6 netdev_warn +EXPORT_SYMBOL vmlinux 0x2fee3800 seq_puts +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30839a21 md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30b20a83 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x30b99102 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x30c83742 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d70fa9 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x30e10756 i2c_verify_client +EXPORT_SYMBOL vmlinux 0x30f5df7d pci_get_class +EXPORT_SYMBOL vmlinux 0x30fbc431 i2c_add_adapter +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310917fe sort +EXPORT_SYMBOL vmlinux 0x310caf1d blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3191f109 __krealloc +EXPORT_SYMBOL vmlinux 0x31b20473 pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x31bd4298 __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x31bec756 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0x31e2e6f1 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0x31e54161 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0x31e83c04 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x31e9572e __breadahead +EXPORT_SYMBOL vmlinux 0x31f0bb78 __kmap_atomic_idx +EXPORT_SYMBOL vmlinux 0x31f8a159 set_device_ro +EXPORT_SYMBOL vmlinux 0x3206bc47 mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0x3215d70a napi_complete +EXPORT_SYMBOL vmlinux 0x321d8228 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x3233799f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x325661dd dentry_unhash +EXPORT_SYMBOL vmlinux 0x3269f704 sk_alloc +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328a05f1 strncpy +EXPORT_SYMBOL vmlinux 0x328a4e85 scsi_device_get +EXPORT_SYMBOL vmlinux 0x32a9dce0 insert_inode_locked +EXPORT_SYMBOL vmlinux 0x32f0ed11 new_inode +EXPORT_SYMBOL vmlinux 0x3303f6eb dev_open +EXPORT_SYMBOL vmlinux 0x3308c404 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x3327fe81 ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0x333cc8b8 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0x334282bd cdrom_release +EXPORT_SYMBOL vmlinux 0x336101cb netdev_alert +EXPORT_SYMBOL vmlinux 0x337cce46 put_cmsg +EXPORT_SYMBOL vmlinux 0x33b0e702 inet_sendpage +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33dbfd93 tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0x33de4443 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x33ea5073 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x33ebe885 do_sync_write +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x341ac86b tcf_register_action +EXPORT_SYMBOL vmlinux 0x341dbfa3 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0x342261a7 netdev_crit +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x34682457 pci_release_regions +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x348443e4 user_path_at +EXPORT_SYMBOL vmlinux 0x34908c14 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x34ba939d agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x34e2b24a scsi_get_command +EXPORT_SYMBOL vmlinux 0x34fa82b3 pci_target_state +EXPORT_SYMBOL vmlinux 0x354aa246 con_is_bound +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3580dafe inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x358f4953 netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x35aad161 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35b74a12 inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35e1e63e xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x35fbd6a1 __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x36236dd1 phy_find_first +EXPORT_SYMBOL vmlinux 0x364d8cb1 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x3685dc30 __getblk +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36cf2e3f bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36f0d169 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x370129ce km_state_expired +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372bd8e7 scsi_ioctl +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x375f748e xfrm_state_flush +EXPORT_SYMBOL vmlinux 0x37635e41 __bio_clone +EXPORT_SYMBOL vmlinux 0x3768be9b pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x378a075a mach_chrp +EXPORT_SYMBOL vmlinux 0x3793ea33 max8998_bulk_read +EXPORT_SYMBOL vmlinux 0x37b48816 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x37b5d7e2 pci_claim_resource +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37d35fec tty_kref_put +EXPORT_SYMBOL vmlinux 0x37e74642 get_jiffies_64 +EXPORT_SYMBOL vmlinux 0x37f614b7 __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x37f6fee5 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0x37ff03d7 blk_requeue_request +EXPORT_SYMBOL vmlinux 0x381144a9 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x38263f68 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0x38440e39 input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x388ff688 skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x38a101a8 input_unregister_handle +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38cb584d simple_link +EXPORT_SYMBOL vmlinux 0x38cf0b66 __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0x38d8d83e padata_alloc +EXPORT_SYMBOL vmlinux 0x38ebe466 scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x3905e1e5 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x395827f2 nobh_write_end +EXPORT_SYMBOL vmlinux 0x396a9b97 posix_test_lock +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x399cdf0b pci_remove_bus +EXPORT_SYMBOL vmlinux 0x39a3f45c km_policy_notify +EXPORT_SYMBOL vmlinux 0x39cac334 proc_symlink +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d7edf5 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x39ec6dc3 sock_no_mmap +EXPORT_SYMBOL vmlinux 0x39f5b56f iget5_locked +EXPORT_SYMBOL vmlinux 0x3a227a1c of_find_all_nodes +EXPORT_SYMBOL vmlinux 0x3a3dd1ac blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x3a520a7e scsicam_bios_param +EXPORT_SYMBOL vmlinux 0x3a6f2124 sk_receive_skb +EXPORT_SYMBOL vmlinux 0x3a745c60 cdev_init +EXPORT_SYMBOL vmlinux 0x3a91868e __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3a9bb152 skb_pad +EXPORT_SYMBOL vmlinux 0x3aa2eb19 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x3ad5e833 xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x3ada7824 blk_integrity_register +EXPORT_SYMBOL vmlinux 0x3b0b7df3 of_n_size_cells +EXPORT_SYMBOL vmlinux 0x3b1bfad1 generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x3b298384 genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b3fdb26 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x3b521d30 serio_rescan +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b7a4059 sock_wake_async +EXPORT_SYMBOL vmlinux 0x3b7f6a2f gen_pool_create +EXPORT_SYMBOL vmlinux 0x3b88aec1 pci_enable_device +EXPORT_SYMBOL vmlinux 0x3b990cc3 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x3bb1cedb i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x3bc0db8c input_flush_device +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bd55e68 inet_addr_type +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3bef04aa qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0x3c3a9051 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x3c652b24 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c8bef74 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x3c8d07a2 tcp_seq_open +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3cb79884 may_umount +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3ceb9968 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x3cebaa1d devm_gpio_free +EXPORT_SYMBOL vmlinux 0x3cf0e673 ip6_frag_match +EXPORT_SYMBOL vmlinux 0x3d1e61b0 mb_cache_create +EXPORT_SYMBOL vmlinux 0x3d211826 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x3d26bf26 request_key +EXPORT_SYMBOL vmlinux 0x3d491765 elv_rb_add +EXPORT_SYMBOL vmlinux 0x3d4a1f6c padata_stop +EXPORT_SYMBOL vmlinux 0x3d50c035 netlink_set_err +EXPORT_SYMBOL vmlinux 0x3d5a5b5b sync_blockdev +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d975d4a journal_force_commit +EXPORT_SYMBOL vmlinux 0x3d9a71cb pm860x_set_bits +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e06e14f writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0x3e073b69 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x3e109374 kill_fasync +EXPORT_SYMBOL vmlinux 0x3e190efd ab3100_event_register +EXPORT_SYMBOL vmlinux 0x3e300f12 sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x3e3b5443 sock_no_connect +EXPORT_SYMBOL vmlinux 0x3e3feb8c bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3ea13f57 nf_log_unregister +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee8226c max8925_bulk_read +EXPORT_SYMBOL vmlinux 0x3ee8cd2f security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0x3eff6eb9 tcp_close +EXPORT_SYMBOL vmlinux 0x3f033803 bioset_create +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f350d47 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x3f367f47 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f4bb29a skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x3f57a069 d_alloc_name +EXPORT_SYMBOL vmlinux 0x3f66371d generic_file_llseek +EXPORT_SYMBOL vmlinux 0x3f698bb5 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x3fb1cf71 proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x3fb61f2b skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x3fc29e53 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0x3fd31e2c journal_extend +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec3d64 path_get +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x400107b4 generic_permission +EXPORT_SYMBOL vmlinux 0x400869e0 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x401bee80 tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x4039692e fddi_type_trans +EXPORT_SYMBOL vmlinux 0x4059792f print_hex_dump +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x40624ac1 dump_write +EXPORT_SYMBOL vmlinux 0x406a2212 xfrm_input_resume +EXPORT_SYMBOL vmlinux 0x406a8709 neigh_lookup +EXPORT_SYMBOL vmlinux 0x40886fb5 qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a2d1dd dm_table_get_size +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40daa0b9 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x40e7ccc9 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x40f1ad10 tb_ticks_per_jiffy +EXPORT_SYMBOL vmlinux 0x410a208d lock_may_write +EXPORT_SYMBOL vmlinux 0x4116d179 agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0x41336bc3 phy_disconnect +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x414e1de5 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x41502c84 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x415bfaab unregister_binfmt +EXPORT_SYMBOL vmlinux 0x41779437 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x41c1b4ed blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0x41d70659 dev_addr_add +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42163c60 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x4218a357 is_container_init +EXPORT_SYMBOL vmlinux 0x421ff8b2 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x42316ebc ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x425bd322 jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x42674d7d twl6040_get_pll +EXPORT_SYMBOL vmlinux 0x42914b61 pci_set_ltr +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42dcc2e2 jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x42eca78b security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x43109819 tcp_parse_options +EXPORT_SYMBOL vmlinux 0x431bd094 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x4339d15e security_file_permission +EXPORT_SYMBOL vmlinux 0x4348939b md_register_thread +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43679eb9 unregister_netdev +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x437dd1c9 jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0x4382e362 iunique +EXPORT_SYMBOL vmlinux 0x43956a35 mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43a40576 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0x43a6d907 tty_port_tty_get +EXPORT_SYMBOL vmlinux 0x43a9006f neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0x43cd52a6 inet_csk_accept +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x43ff22e0 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x44030345 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x4409f3eb unregister_filesystem +EXPORT_SYMBOL vmlinux 0x440ed8e6 __scsi_put_command +EXPORT_SYMBOL vmlinux 0x44157e99 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x4430c75c ida_pre_get +EXPORT_SYMBOL vmlinux 0x44366cfc simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0x44438b96 hex2bin +EXPORT_SYMBOL vmlinux 0x444443ca rfkill_alloc +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x44b1623d xfrm_register_type +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44bb81a5 account_page_redirty +EXPORT_SYMBOL vmlinux 0x44d8f1e7 freeze_bdev +EXPORT_SYMBOL vmlinux 0x44e24fd2 mapping_tagged +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x44ee0554 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0x44f0a213 fifo_set_limit +EXPORT_SYMBOL vmlinux 0x44f165fb tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x44fd836b agp_backend_acquire +EXPORT_SYMBOL vmlinux 0x4512b182 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x452b51f8 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x454dbce0 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x45698952 tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0x456e4d4a ip_ct_attach +EXPORT_SYMBOL vmlinux 0x45778cd5 give_up_console +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457a773f fb_validate_mode +EXPORT_SYMBOL vmlinux 0x4596db6a sys_sigreturn +EXPORT_SYMBOL vmlinux 0x459a765c jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x459f09eb scsi_execute_req +EXPORT_SYMBOL vmlinux 0x45a160b6 noop_qdisc +EXPORT_SYMBOL vmlinux 0x45b85099 single_release +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c1e7f8 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x45f32f4f mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0x45f5bbfb __xfrm_init_state +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x462a2e75 match_strlcpy +EXPORT_SYMBOL vmlinux 0x46455cc2 page_symlink +EXPORT_SYMBOL vmlinux 0x465504df setattr_copy +EXPORT_SYMBOL vmlinux 0x465757c3 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x469a4163 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x46caa349 elevator_change +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46db7a72 xfrm_state_update +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x477ac6ab iget_locked +EXPORT_SYMBOL vmlinux 0x477ff20e remove_proc_entry +EXPORT_SYMBOL vmlinux 0x478e52e4 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47a36289 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x47b1062f __get_page_tail +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47b5a11b udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x47f6d78a tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x48000553 mempool_create_node +EXPORT_SYMBOL vmlinux 0x480e493c xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x481ce6ce cpu_active_mask +EXPORT_SYMBOL vmlinux 0x48316726 pci_restore_state +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x4870a1d4 disk_stack_limits +EXPORT_SYMBOL vmlinux 0x4874988f thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x489afecc blk_complete_request +EXPORT_SYMBOL vmlinux 0x48b592d2 sk_common_release +EXPORT_SYMBOL vmlinux 0x48c04e29 genlmsg_put +EXPORT_SYMBOL vmlinux 0x48c6a0fd inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x48e12ddc __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x490be3fe mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x492a58b1 __break_lease +EXPORT_SYMBOL vmlinux 0x494b23de devm_ioremap +EXPORT_SYMBOL vmlinux 0x494b84c3 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x494c993a max8998_write_reg +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x49845c4c neigh_create +EXPORT_SYMBOL vmlinux 0x499acd26 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49b103c5 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x49b792ef unlock_rename +EXPORT_SYMBOL vmlinux 0x49c4fdbb find_lock_page +EXPORT_SYMBOL vmlinux 0x49da7b8d bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x49f5d44e task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x4a13c17a security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x4a290d4d cur_cpu_spec +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a41f633 vfs_write +EXPORT_SYMBOL vmlinux 0x4a4cde10 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x4a50e115 blk_get_request +EXPORT_SYMBOL vmlinux 0x4a65c62a qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x4a726c2f jbd2_journal_start +EXPORT_SYMBOL vmlinux 0x4a75fc7e inet_shutdown +EXPORT_SYMBOL vmlinux 0x4a7d5b87 arp_create +EXPORT_SYMBOL vmlinux 0x4aa33535 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x4aad683e redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x4aae2e40 of_device_is_available +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ad5e280 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0x4ade92f1 phy_attach +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b02d8d0 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0x4b032dfa journal_update_format +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b1ec3e2 kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x4b255ce1 bdi_register_dev +EXPORT_SYMBOL vmlinux 0x4b3469b2 security_path_mknod +EXPORT_SYMBOL vmlinux 0x4b34fbf5 block_all_signals +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b624d57 seq_release +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4bdb8a35 scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4c07aff0 netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c2ae700 strnstr +EXPORT_SYMBOL vmlinux 0x4c44fb30 bio_free +EXPORT_SYMBOL vmlinux 0x4c56baa1 key_alloc +EXPORT_SYMBOL vmlinux 0x4c5ec08e security_path_mkdir +EXPORT_SYMBOL vmlinux 0x4c66255c fb_set_suspend +EXPORT_SYMBOL vmlinux 0x4c903e77 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce019ca bmap +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4cf89074 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x4d2fc1f6 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0x4d3c153f sigprocmask +EXPORT_SYMBOL vmlinux 0x4d3c7979 pagecache_write_end +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d45d89e udp_memory_allocated +EXPORT_SYMBOL vmlinux 0x4d5bc998 alloc_disk +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4db81262 __nlmsg_put +EXPORT_SYMBOL vmlinux 0x4dc015c1 xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x4dc307b4 sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4de50507 mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x4de8f1dd blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0x4dec6038 memscan +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfc73fd blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x4dfd916f block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e10c241 tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0x4e1a7708 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x4e1e1b1d pci_find_capability +EXPORT_SYMBOL vmlinux 0x4e31ff48 blk_free_tags +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e830a3e strnicmp +EXPORT_SYMBOL vmlinux 0x4e893fda vfs_unlink +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4ed9060f rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x4ee74e47 ps2_init +EXPORT_SYMBOL vmlinux 0x4ef28905 do_truncate +EXPORT_SYMBOL vmlinux 0x4ef5a809 journal_destroy +EXPORT_SYMBOL vmlinux 0x4f092de0 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4f0e6d37 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x4f0eac52 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x4f172dd5 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f4f9179 inet_frag_find +EXPORT_SYMBOL vmlinux 0x4f4fadf8 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4fa8be3e migrate_page +EXPORT_SYMBOL vmlinux 0x4fb4fb13 __d_drop +EXPORT_SYMBOL vmlinux 0x4fbaeaf8 dev_activate +EXPORT_SYMBOL vmlinux 0x4fbf6b07 setup_new_exec +EXPORT_SYMBOL vmlinux 0x4fd792cf twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fe78d35 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0x4fe99583 atomic64_dec_if_positive +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50061375 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x50384baf vgacon_remap_base +EXPORT_SYMBOL vmlinux 0x503bc069 end_page_writeback +EXPORT_SYMBOL vmlinux 0x50408134 override_creds +EXPORT_SYMBOL vmlinux 0x50522b9a find_get_pages_tag +EXPORT_SYMBOL vmlinux 0x506ee58f vmalloc_to_page +EXPORT_SYMBOL vmlinux 0x509817cf vprintk_emit +EXPORT_SYMBOL vmlinux 0x509f0031 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x50c55735 blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x50d62fc3 skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x50e937b5 blk_fetch_request +EXPORT_SYMBOL vmlinux 0x50fc9b91 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0x510eac4d blk_stop_queue +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5120ca57 netif_rx_ni +EXPORT_SYMBOL vmlinux 0x513939dc sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x5143b349 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x51591bb4 ip6_xmit +EXPORT_SYMBOL vmlinux 0x515e24a7 flush_instruction_cache +EXPORT_SYMBOL vmlinux 0x5167e49f pci_dev_put +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x519b8336 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x51b5acd8 lro_receive_skb +EXPORT_SYMBOL vmlinux 0x51baf8a2 dquot_destroy +EXPORT_SYMBOL vmlinux 0x51c3b3b3 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x51d5d37c unregister_key_type +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51e458c5 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x51ef33b8 kstrndup +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x5214a266 sock_i_uid +EXPORT_SYMBOL vmlinux 0x523059b1 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5248bab3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x524cd220 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0x5253f142 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x525942da phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x525efc6a tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x5260df6b fd_install +EXPORT_SYMBOL vmlinux 0x52685557 key_invalidate +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52786025 pci_save_state +EXPORT_SYMBOL vmlinux 0x528618f5 udplite_prot +EXPORT_SYMBOL vmlinux 0x528c709d simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x52a6d0b6 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52de4488 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x52de881a blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x5301a6e5 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x532c2ef5 bio_alloc +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5332831b dquot_file_open +EXPORT_SYMBOL vmlinux 0x533b7522 rt6_lookup +EXPORT_SYMBOL vmlinux 0x5358e1ff user_path_create +EXPORT_SYMBOL vmlinux 0x53667aec inet_confirm_addr +EXPORT_SYMBOL vmlinux 0x53719a80 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x537238c5 filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0x53729ebc arp_find +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53ae2f2e nf_log_register +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x5432d6d8 tty_set_operations +EXPORT_SYMBOL vmlinux 0x543e1cc7 block_write_full_page +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x544595d0 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x5455fd42 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x54892e6f mount_bdev +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54d6fdd2 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0x54e4340f jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x54f0237d macio_dev_put +EXPORT_SYMBOL vmlinux 0x551dc3d3 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x5523e66e skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0x552f6a8a iput +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55467ede fsl_upm_find +EXPORT_SYMBOL vmlinux 0x555421ec of_find_matching_node +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x556fc4f9 mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x5578c80b dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55a9d57e i2c_put_adapter +EXPORT_SYMBOL vmlinux 0x55beeef0 input_register_handler +EXPORT_SYMBOL vmlinux 0x55eebf98 __destroy_inode +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5640646e tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56666a2e inode_dio_wait +EXPORT_SYMBOL vmlinux 0x568675aa seq_bitmap +EXPORT_SYMBOL vmlinux 0x56963f29 tcf_hash_check +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56d1c5a7 dev_close +EXPORT_SYMBOL vmlinux 0x56ebada9 skb_put +EXPORT_SYMBOL vmlinux 0x56f03d16 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x5702514c input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0x57130b2f xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0x57146274 drop_nlink +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x5730480a scm_fp_dup +EXPORT_SYMBOL vmlinux 0x57356e9e pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x5762f244 sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x578c8b3d macio_request_resources +EXPORT_SYMBOL vmlinux 0x57a00eac padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x57b0a851 no_llseek +EXPORT_SYMBOL vmlinux 0x57c46ff5 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x57dc1e6d scsi_host_put +EXPORT_SYMBOL vmlinux 0x57e62a72 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0x57e66187 pci_pme_capable +EXPORT_SYMBOL vmlinux 0x582a4747 cacheable_memcpy +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x583f5fa2 skb_gso_segment +EXPORT_SYMBOL vmlinux 0x584c52e2 scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x5852862e udp_poll +EXPORT_SYMBOL vmlinux 0x5857998b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x58623807 proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0x5865e939 udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x588fe209 blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x5890d1fd pcim_pin_device +EXPORT_SYMBOL vmlinux 0x5890fd22 __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0x58aafeee blk_delay_queue +EXPORT_SYMBOL vmlinux 0x58f1962b pci_read_vpd +EXPORT_SYMBOL vmlinux 0x58f248ff padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x58f9be2e d_delete +EXPORT_SYMBOL vmlinux 0x59144b3e generic_mii_ioctl +EXPORT_SYMBOL vmlinux 0x59263160 eth_type_trans +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x593d3fe9 mmc_hw_reset +EXPORT_SYMBOL vmlinux 0x593f29ca make_EII_client +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595b7e9a mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x596989e2 kobject_set_name +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59bbe3f9 proto_unregister +EXPORT_SYMBOL vmlinux 0x59c10543 journal_flush +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59d8223a ioport_resource +EXPORT_SYMBOL vmlinux 0x59dcaeef scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x59ee9ddd fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0x5a4d8740 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x5a52f0c6 scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0x5a65076e sock_map_fd +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5ab465ca inet_put_port +EXPORT_SYMBOL vmlinux 0x5ab67931 do_IRQ +EXPORT_SYMBOL vmlinux 0x5ab9a216 sock_kfree_s +EXPORT_SYMBOL vmlinux 0x5adfd5e4 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x5b19634d div_s64_rem +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4f0618 max8998_read_reg +EXPORT_SYMBOL vmlinux 0x5b5e888b inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x5b68cf7c blk_make_request +EXPORT_SYMBOL vmlinux 0x5b94a773 page_address +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bcd9549 dev_addr_init +EXPORT_SYMBOL vmlinux 0x5be055e7 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x5bf12624 rtnl_notify +EXPORT_SYMBOL vmlinux 0x5c08a305 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x5c0b2e7b try_module_get +EXPORT_SYMBOL vmlinux 0x5c226e32 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x5c23c063 unlock_new_inode +EXPORT_SYMBOL vmlinux 0x5c2657ca udp_sendmsg +EXPORT_SYMBOL vmlinux 0x5c265cba sg_init_one +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c3ea5cd dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x5c55578c scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x5c575cd2 start_tty +EXPORT_SYMBOL vmlinux 0x5c5911fe jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x5c88c9b1 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x5c8a91fe dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x5ca1e779 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x5cb1f9c0 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x5ccc553f genl_notify +EXPORT_SYMBOL vmlinux 0x5ccf17c0 pci_disable_ltr +EXPORT_SYMBOL vmlinux 0x5cf98073 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d17398b blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x5d275e1d __dev_remove_pack +EXPORT_SYMBOL vmlinux 0x5d440ef5 tty_port_hangup +EXPORT_SYMBOL vmlinux 0x5d5437a4 key_type_keyring +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d88b957 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x5dbbe598 find_or_create_page +EXPORT_SYMBOL vmlinux 0x5dec5a27 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5dee065a of_phy_connect +EXPORT_SYMBOL vmlinux 0x5e12b9ca __napi_schedule +EXPORT_SYMBOL vmlinux 0x5e133444 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x5e20e51c d_prune_aliases +EXPORT_SYMBOL vmlinux 0x5e3a3b9c vmtruncate +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e3f924b mmc_can_reset +EXPORT_SYMBOL vmlinux 0x5e48e6a8 genl_register_family +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e92561b mmc_remove_host +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eacfa87 __sock_create +EXPORT_SYMBOL vmlinux 0x5eb0401e proc_dostring +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5ed9d4c3 journal_wipe +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef8d38f dma_pool_create +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f0ef9bc i2c_clients_command +EXPORT_SYMBOL vmlinux 0x5f2eb9d3 agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f54f310 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x5f559fb3 mnt_pin +EXPORT_SYMBOL vmlinux 0x5f754e5a memset +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f8aafe5 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5f9e5818 rtnl_create_link +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fb6ce04 jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0x5fbbd39b kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x5fbc5552 dev_err +EXPORT_SYMBOL vmlinux 0x5fbdfb68 __pci_register_driver +EXPORT_SYMBOL vmlinux 0x5fdf5e3f tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x6046da82 bio_map_user +EXPORT_SYMBOL vmlinux 0x604aebda bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x608a4948 kthread_bind +EXPORT_SYMBOL vmlinux 0x609d0d46 mntput +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60a11da1 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x60e9e4f6 security_path_unlink +EXPORT_SYMBOL vmlinux 0x6121a38e journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x61365284 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x6148f2d1 netif_napi_add +EXPORT_SYMBOL vmlinux 0x614a2a32 mount_single +EXPORT_SYMBOL vmlinux 0x61676f4d inet_stream_ops +EXPORT_SYMBOL vmlinux 0x616b825d dql_init +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x61821cdd pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x61addc64 d_instantiate +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61bdc71e sk_release_kernel +EXPORT_SYMBOL vmlinux 0x61e708e4 kunmap_high +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x622eba2e napi_gro_receive +EXPORT_SYMBOL vmlinux 0x623d7182 _chrp_type +EXPORT_SYMBOL vmlinux 0x624e6c22 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x625a0a67 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0x62624631 inet_listen +EXPORT_SYMBOL vmlinux 0x626567a7 set_page_dirty +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6275c133 i2c_release_client +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 0x629321c7 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x630d5514 dev_get_flags +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63605f7c scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x637b66b1 may_umount_tree +EXPORT_SYMBOL vmlinux 0x638b335f mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63a08bc9 proto_register +EXPORT_SYMBOL vmlinux 0x63cd13ec do_splice_to +EXPORT_SYMBOL vmlinux 0x63cf994b write_one_page +EXPORT_SYMBOL vmlinux 0x63e99b87 agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f007aa scsi_scan_target +EXPORT_SYMBOL vmlinux 0x63f9d23d blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x64078397 bh_submit_read +EXPORT_SYMBOL vmlinux 0x640fe7ac inode_get_bytes +EXPORT_SYMBOL vmlinux 0x64256742 seq_putc +EXPORT_SYMBOL vmlinux 0x64469561 netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x64693219 dquot_scan_active +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64cf5e14 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0x64dc34ff tcf_exts_change +EXPORT_SYMBOL vmlinux 0x64dfcf8d dev_uc_flush +EXPORT_SYMBOL vmlinux 0x64e3161a md_check_recovery +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651616e3 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x65400222 __irq_offset_value +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65452060 simple_pin_fs +EXPORT_SYMBOL vmlinux 0x65623e71 dev_addr_del +EXPORT_SYMBOL vmlinux 0x65673486 netdev_notice +EXPORT_SYMBOL vmlinux 0x657721fb swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x657ab9d8 netdev_change_features +EXPORT_SYMBOL vmlinux 0x6585e310 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0x6591f1d7 generic_setxattr +EXPORT_SYMBOL vmlinux 0x6598daef devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x65abc1cb dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cb52b1 blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e961c8 mpage_writepage +EXPORT_SYMBOL vmlinux 0x65f21a20 register_netdevice +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f7be35 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x660c7262 vfs_writev +EXPORT_SYMBOL vmlinux 0x66106ea5 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0x661fb0a6 inet6_bind +EXPORT_SYMBOL vmlinux 0x663f08e2 pci_clear_master +EXPORT_SYMBOL vmlinux 0x66647dfd xfrm_init_state +EXPORT_SYMBOL vmlinux 0x6667d6ea scsi_device_put +EXPORT_SYMBOL vmlinux 0x66794f11 tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x669dd28a posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x66b8271d check_disk_size_change +EXPORT_SYMBOL vmlinux 0x66c64ebd tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x66cb4379 release_pages +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d8eb34 xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x66fbefce agp_generic_enable +EXPORT_SYMBOL vmlinux 0x672a37fe mutex_trylock +EXPORT_SYMBOL vmlinux 0x6734ce96 key_link +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6754d236 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0x676223dc drop_super +EXPORT_SYMBOL vmlinux 0x677b5085 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x6785196d __nla_reserve +EXPORT_SYMBOL vmlinux 0x67a49e04 padata_do_serial +EXPORT_SYMBOL vmlinux 0x67b2ef1b brioctl_set +EXPORT_SYMBOL vmlinux 0x67b65408 read_cache_page_async +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67c65fb8 __ip_select_ident +EXPORT_SYMBOL vmlinux 0x67cd0a37 dst_destroy +EXPORT_SYMBOL vmlinux 0x67d702ae mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x67f103e2 inode_init_owner +EXPORT_SYMBOL vmlinux 0x67f79eee pci_fixup_device +EXPORT_SYMBOL vmlinux 0x680d35d1 pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x683f4a39 mmc_erase +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x68abfdb4 invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x68df8db2 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e0e289 idr_remove +EXPORT_SYMBOL vmlinux 0x69292976 d_invalidate +EXPORT_SYMBOL vmlinux 0x693b7c26 freeze_super +EXPORT_SYMBOL vmlinux 0x694a1f83 tty_free_termios +EXPORT_SYMBOL vmlinux 0x696a030a skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x6999cc46 __dev_printk +EXPORT_SYMBOL vmlinux 0x699f3cf6 tty_port_close_start +EXPORT_SYMBOL vmlinux 0x69a001b7 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69b49b56 register_sysctl +EXPORT_SYMBOL vmlinux 0x69b5ea42 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x69c29acd is_bad_inode +EXPORT_SYMBOL vmlinux 0x69d32431 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69d7e5b8 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e3aeb9 ps2_command +EXPORT_SYMBOL vmlinux 0x69f93cdc scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x69fbfc85 install_exec_creds +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a1938c3 d_add_ci +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a68d0d2 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a78374c elv_register_queue +EXPORT_SYMBOL vmlinux 0x6a9c892d pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x6ac95b7e __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acd0b0c skb_unlink +EXPORT_SYMBOL vmlinux 0x6ade678c nf_register_hook +EXPORT_SYMBOL vmlinux 0x6b0745c0 xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x6b1115de textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2a003c simple_open +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b4b0914 validate_sp +EXPORT_SYMBOL vmlinux 0x6b542ad3 misc_register +EXPORT_SYMBOL vmlinux 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6baae653 cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be184a7 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x6becf5fd netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x6bfbbee6 pci_set_master +EXPORT_SYMBOL vmlinux 0x6c1ce5ce strcspn +EXPORT_SYMBOL vmlinux 0x6c378ce9 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x6c3faff0 pipe_lock +EXPORT_SYMBOL vmlinux 0x6c4ad352 __lock_page +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 0x6c770b06 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x6ca1d1a4 atomic64_read +EXPORT_SYMBOL vmlinux 0x6ca8412c tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x6cc35ffe jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x6cdc5c6b nla_strlcpy +EXPORT_SYMBOL vmlinux 0x6cdcfb9a blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0x6ce34f18 vm_mmap +EXPORT_SYMBOL vmlinux 0x6cfdfde2 giveup_fpu +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d1b39b5 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x6d1c9915 jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x6d27ef64 __bitmap_empty +EXPORT_SYMBOL vmlinux 0x6d286218 blk_end_request +EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies +EXPORT_SYMBOL vmlinux 0x6d4487ed inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x6d464175 __sg_free_table +EXPORT_SYMBOL vmlinux 0x6d4651de directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d70c75f rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x6d98beb7 inet_sendmsg +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6dab0827 i2c_master_recv +EXPORT_SYMBOL vmlinux 0x6db54425 __alloc_skb +EXPORT_SYMBOL vmlinux 0x6db69776 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x6db85c1a blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x6dc3ea97 netif_receive_skb +EXPORT_SYMBOL vmlinux 0x6dd3d9e0 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e020a91 tcp_splice_read +EXPORT_SYMBOL vmlinux 0x6e1e1fcf bio_phys_segments +EXPORT_SYMBOL vmlinux 0x6e3ba6ea netdev_features_change +EXPORT_SYMBOL vmlinux 0x6e60f5c4 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea020ac journal_start_commit +EXPORT_SYMBOL vmlinux 0x6ea7d1b7 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x6eb03195 aio_complete +EXPORT_SYMBOL vmlinux 0x6eb74dff proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x6eb78970 remove_arg_zero +EXPORT_SYMBOL vmlinux 0x6eeac778 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6ef51b21 tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x6efd6a50 tcf_em_unregister +EXPORT_SYMBOL vmlinux 0x6f1a624d kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f230dd7 generic_write_sync +EXPORT_SYMBOL vmlinux 0x6f2764fc fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x6f397394 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x6f4f8b25 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x6f59e34e phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x6f69f37d twl6040_reg_read +EXPORT_SYMBOL vmlinux 0x6f8195ca blk_rq_init +EXPORT_SYMBOL vmlinux 0x6f9207cf __inet6_hash +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fcf0039 neigh_ifdown +EXPORT_SYMBOL vmlinux 0x6fd2b4d8 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x6fea7b0d neigh_compat_output +EXPORT_SYMBOL vmlinux 0x6fff4cf8 replace_mount_options +EXPORT_SYMBOL vmlinux 0x7011dac6 genphy_update_link +EXPORT_SYMBOL vmlinux 0x70263f5c scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x7031fc9a register_gifconf +EXPORT_SYMBOL vmlinux 0x70341d81 ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x708df20a __secpath_destroy +EXPORT_SYMBOL vmlinux 0x709791d6 empty_aops +EXPORT_SYMBOL vmlinux 0x70af595d bioset_integrity_create +EXPORT_SYMBOL vmlinux 0x70b799bf revalidate_disk +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 0x70e1b9eb journal_check_available_features +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x710daf33 xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x713f6d79 journal_start +EXPORT_SYMBOL vmlinux 0x71451e48 of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x714c8c25 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x716dcab9 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x717aad87 padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x718632a5 dev_uc_init +EXPORT_SYMBOL vmlinux 0x718c1fad pci_scan_slot +EXPORT_SYMBOL vmlinux 0x7190ab63 dst_release +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a81809 free_buffer_head +EXPORT_SYMBOL vmlinux 0x71aca21a generic_setlease +EXPORT_SYMBOL vmlinux 0x71c90087 memcmp +EXPORT_SYMBOL vmlinux 0x71e002be starget_for_each_device +EXPORT_SYMBOL vmlinux 0x720b413d write_cache_pages +EXPORT_SYMBOL vmlinux 0x72186450 vm_insert_page +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x72928b00 tcp_prot +EXPORT_SYMBOL vmlinux 0x72948da8 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x72a747b4 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x72aa6219 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0x72aad381 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0x72aad963 pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0x72afe765 dev_uc_add +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c8a82d block_commit_write +EXPORT_SYMBOL vmlinux 0x72d58de9 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x72e50086 vm_stat +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ff784c get_agp_version +EXPORT_SYMBOL vmlinux 0x73002d00 __devm_release_region +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x732e0f40 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x733e9b90 dma_set_mask +EXPORT_SYMBOL vmlinux 0x733f6dd8 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x73494318 security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x7361f515 sock_no_getname +EXPORT_SYMBOL vmlinux 0x7362c212 dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x73639d59 sk_run_filter +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x739ef72b block_truncate_page +EXPORT_SYMBOL vmlinux 0x73b8881c inet_getname +EXPORT_SYMBOL vmlinux 0x73c76bcd sock_release +EXPORT_SYMBOL vmlinux 0x73e20c1c strlcpy +EXPORT_SYMBOL vmlinux 0x74131456 vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x7414f11a agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x742ceba6 mdiobus_write +EXPORT_SYMBOL vmlinux 0x7464ecb2 kset_unregister +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747c5971 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x749ab875 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0x74a641ab twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74cd0dd1 lease_modify +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74ed181a vlan_vid_del +EXPORT_SYMBOL vmlinux 0x74f7111a kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x7505bdef memchr_inv +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x756dd160 start_thread +EXPORT_SYMBOL vmlinux 0x7575a09f d_alloc +EXPORT_SYMBOL vmlinux 0x7593d385 div64_s64 +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75b5bf0c iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75c57ef8 mpage_readpage +EXPORT_SYMBOL vmlinux 0x75d92834 single_open +EXPORT_SYMBOL vmlinux 0x75dd5911 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x75ea1b7f mmc_can_trim +EXPORT_SYMBOL vmlinux 0x75fa19cd pci_choose_state +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x760ff0de of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x7626b486 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x76329c61 security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x766e29eb mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x766fc87f ata_dev_printk +EXPORT_SYMBOL vmlinux 0x76733b57 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0x76870795 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0x76897885 flush_hash_entry +EXPORT_SYMBOL vmlinux 0x769ea867 lock_super +EXPORT_SYMBOL vmlinux 0x769fb3a0 zero_fill_bio +EXPORT_SYMBOL vmlinux 0x76a7759d tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x76af2fcf __pskb_copy +EXPORT_SYMBOL vmlinux 0x76b532eb skb_copy_bits +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d97d7e dev_warn +EXPORT_SYMBOL vmlinux 0x76e07962 idr_get_new +EXPORT_SYMBOL vmlinux 0x76f406c8 d_drop +EXPORT_SYMBOL vmlinux 0x770291b0 qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x7768d24b __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x7772b831 generic_write_end +EXPORT_SYMBOL vmlinux 0x7795c02c wireless_send_event +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b851c4 cacheable_memzero +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c57876 aio_put_req +EXPORT_SYMBOL vmlinux 0x77de775d agp_create_memory +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x77edf722 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x78073bc6 md_error +EXPORT_SYMBOL vmlinux 0x7827ff3a of_dev_put +EXPORT_SYMBOL vmlinux 0x7832572e xfrm_state_add +EXPORT_SYMBOL vmlinux 0x7839e2cf sock_create_kern +EXPORT_SYMBOL vmlinux 0x784467e2 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0x787f2414 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x788537db ip6_route_output +EXPORT_SYMBOL vmlinux 0x788fe103 iomem_resource +EXPORT_SYMBOL vmlinux 0x78b4f598 simple_fill_super +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x790633b7 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0x7908ae7d seq_open_private +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x79123438 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0x791465c7 register_cdrom +EXPORT_SYMBOL vmlinux 0x79227528 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x79323c9e ppp_register_channel +EXPORT_SYMBOL vmlinux 0x793b06b3 tc_classify +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x79785231 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x79a7ef85 journal_restart +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x79c7080a __blk_run_queue +EXPORT_SYMBOL vmlinux 0x79f0c60e fb_set_var +EXPORT_SYMBOL vmlinux 0x79fa6876 mmc_add_host +EXPORT_SYMBOL vmlinux 0x7a0b3e09 fput +EXPORT_SYMBOL vmlinux 0x7a192415 lookup_one_len +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a38caba writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a51af6c elv_abort_queue +EXPORT_SYMBOL vmlinux 0x7a6d612a dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x7a954578 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7ad94012 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x7ae7a98c mutex_unlock +EXPORT_SYMBOL vmlinux 0x7afa89fc vsnprintf +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b084a4a tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0x7b44f9b3 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0x7b4854af dev_trans_start +EXPORT_SYMBOL vmlinux 0x7b5c8440 vm_munmap +EXPORT_SYMBOL vmlinux 0x7b63539d splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x7b8c575f mii_nway_restart +EXPORT_SYMBOL vmlinux 0x7b9fc2b6 skb_append +EXPORT_SYMBOL vmlinux 0x7ba82c5a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x7be4827c pci_dram_offset +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c2b17db posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x7c2f0805 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x7c440d4e put_tty_driver +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5f3428 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c753582 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0x7c7a097d tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c99a593 ip6_frag_init +EXPORT_SYMBOL vmlinux 0x7ca341af kernel_thread +EXPORT_SYMBOL vmlinux 0x7caea2aa generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7ccb14a0 dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x7cdf48fa clear_inode +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d3ebc44 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x7d656eb6 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x7d66fa1e __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0x7d6cbd4b netdev_emerg +EXPORT_SYMBOL vmlinux 0x7d7f5fc6 ftrace_print_symbols_seq_u64 +EXPORT_SYMBOL vmlinux 0x7d8993d9 kill_litter_super +EXPORT_SYMBOL vmlinux 0x7d8afd08 task_nice +EXPORT_SYMBOL vmlinux 0x7db0cc9e __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x7dc795e6 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcbb9af padata_do_parallel +EXPORT_SYMBOL vmlinux 0x7ddffdd4 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e07a9ce pipe_to_file +EXPORT_SYMBOL vmlinux 0x7e149859 napi_gro_flush +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e662c00 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7ea4f78c pci_release_region +EXPORT_SYMBOL vmlinux 0x7ecec5a0 key_validate +EXPORT_SYMBOL vmlinux 0x7ee73c0c memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0x7eff367c md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x7f0d187a tcp_make_synack +EXPORT_SYMBOL vmlinux 0x7f19f739 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f60746f devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x7f612baf kernel_getsockname +EXPORT_SYMBOL vmlinux 0x7f7bf593 arp_send +EXPORT_SYMBOL vmlinux 0x7f87db79 __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0x7fb6f850 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x7fbb59e7 napi_skb_finish +EXPORT_SYMBOL vmlinux 0x7ffaf02d follow_down_one +EXPORT_SYMBOL vmlinux 0x80099ec5 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x80315f71 skb_clone +EXPORT_SYMBOL vmlinux 0x80572de2 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x8076a4b2 console_stop +EXPORT_SYMBOL vmlinux 0x80a6622a bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x80b714e3 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x80b7630b fb_pan_display +EXPORT_SYMBOL vmlinux 0x80b988b3 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0x80bff872 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0x80d64f25 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x81064de0 register_nls +EXPORT_SYMBOL vmlinux 0x81254424 genl_unregister_family +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x8167210a dev_add_pack +EXPORT_SYMBOL vmlinux 0x816d9e07 nla_reserve +EXPORT_SYMBOL vmlinux 0x81819480 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a91713 ppp_input_error +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81eaf634 __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0x82034bdc posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b65160 agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x82e73966 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x83256f42 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x83286c02 f_setown +EXPORT_SYMBOL vmlinux 0x832cd229 set_nlink +EXPORT_SYMBOL vmlinux 0x8330062e inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x83333f4c generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0x8333aff0 journal_get_write_access +EXPORT_SYMBOL vmlinux 0x834d665c d_set_d_op +EXPORT_SYMBOL vmlinux 0x83780db4 eth_header_parse +EXPORT_SYMBOL vmlinux 0x837e2486 uart_resume_port +EXPORT_SYMBOL vmlinux 0x8383ce60 journal_clear_err +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83f772c1 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x844404cf ISA_DMA_THRESHOLD +EXPORT_SYMBOL vmlinux 0x844f0e9d tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f028d pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x846f8040 bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x84814a97 find_inode_number +EXPORT_SYMBOL vmlinux 0x848fc139 blk_init_tags +EXPORT_SYMBOL vmlinux 0x8497ed5a __register_binfmt +EXPORT_SYMBOL vmlinux 0x84983fc8 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0x84b183ae strncmp +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x851ae87b abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x8541bccc intercept_table +EXPORT_SYMBOL vmlinux 0x854c83be skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0x8561e7f3 agp_collect_device_status +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x856ce730 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0x85974d06 kthread_stop +EXPORT_SYMBOL vmlinux 0x85aa0c19 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85e7deb2 iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0x85ea32b4 unregister_console +EXPORT_SYMBOL vmlinux 0x85ee5dd4 dev_uc_sync +EXPORT_SYMBOL vmlinux 0x8632bffe jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x866149b5 console_start +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x866613ed ppc_md +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x86a4889a kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0x86c407d6 ps2_handle_response +EXPORT_SYMBOL vmlinux 0x86d9dad3 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86e8279c fsl_lbc_ctrl_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 0x8723d52e unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x8729d005 request_firmware_nowait +EXPORT_SYMBOL vmlinux 0x8750b01b journal_ack_err +EXPORT_SYMBOL vmlinux 0x876f909b mmc_can_erase +EXPORT_SYMBOL vmlinux 0x877d1312 put_io_context +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x87901173 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x8798e453 __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0x87b27399 pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0x87dd441f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0x87e81403 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x88162f9f generic_file_open +EXPORT_SYMBOL vmlinux 0x8826fd97 security_inode_init_security +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x884c7ce2 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x884f8c12 i2c_transfer +EXPORT_SYMBOL vmlinux 0x885a023a unbind_con_driver +EXPORT_SYMBOL vmlinux 0x886d49b6 kernel_getpeername +EXPORT_SYMBOL vmlinux 0x888440ec netdev_err +EXPORT_SYMBOL vmlinux 0x889b18a0 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x88aa7f25 elevator_exit +EXPORT_SYMBOL vmlinux 0x88b7e2cf generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x88c30504 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x88d9f92c agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x88fe7149 key_payload_reserve +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x89398371 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x893c925b unlock_super +EXPORT_SYMBOL vmlinux 0x8949858b schedule_work +EXPORT_SYMBOL vmlinux 0x8953f8ff __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x896769ab tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897c4bea have_submounts +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898748fc unlock_page +EXPORT_SYMBOL vmlinux 0x89a500c2 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x89aebca0 pci_find_bus +EXPORT_SYMBOL vmlinux 0x89b08621 journal_set_features +EXPORT_SYMBOL vmlinux 0x89b3107b isa_mem_base +EXPORT_SYMBOL vmlinux 0x89cea273 cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x89f70e05 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x8a18f90b iterate_mounts +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a31f2a7 of_device_alloc +EXPORT_SYMBOL vmlinux 0x8a36536b kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x8a451986 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a587169 jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x8a713d92 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a807c8d clear_user_page +EXPORT_SYMBOL vmlinux 0x8a961541 input_unregister_device +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9dd739 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x8ab4079e atomic64_add +EXPORT_SYMBOL vmlinux 0x8abc7371 get_gendisk +EXPORT_SYMBOL vmlinux 0x8ac153b1 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad9141a nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0x8aebc45a __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x8af91b22 log_start_commit +EXPORT_SYMBOL vmlinux 0x8b097962 phy_detach +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b219174 max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x8b2ba5a4 __bread +EXPORT_SYMBOL vmlinux 0x8b2ec7d8 pci_reenable_device +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8bb26cd6 ether_setup +EXPORT_SYMBOL vmlinux 0x8bc29a57 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0x8bfb7592 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c065559 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x8c07c80b file_remove_suid +EXPORT_SYMBOL vmlinux 0x8c09bbc8 jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0x8c0c99a9 kill_anon_super +EXPORT_SYMBOL vmlinux 0x8c0f068e inetdev_by_index +EXPORT_SYMBOL vmlinux 0x8c0f0e26 dev_driver_string +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c1c9bc7 release_sock +EXPORT_SYMBOL vmlinux 0x8c4e5d3e pipe_unlock +EXPORT_SYMBOL vmlinux 0x8c50e8d2 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0x8c51a717 kern_path +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8ca640ac tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x8cbc90c7 swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ce7f95c __blk_end_request_all +EXPORT_SYMBOL vmlinux 0x8cfffb58 usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x8d114208 security_path_link +EXPORT_SYMBOL vmlinux 0x8d263d95 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d693ff9 i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x8d6b71dc dev_remove_pack +EXPORT_SYMBOL vmlinux 0x8d78c1f6 vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x8da84853 kill_pid +EXPORT_SYMBOL vmlinux 0x8dca8ad3 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8dec611b pci_dev_get +EXPORT_SYMBOL vmlinux 0x8df5da63 memstart_addr +EXPORT_SYMBOL vmlinux 0x8e0c6b06 get_fs_type +EXPORT_SYMBOL vmlinux 0x8e0d66f4 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x8e122eef security_d_instantiate +EXPORT_SYMBOL vmlinux 0x8e176686 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e3fef60 linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x8e63350d idr_replace +EXPORT_SYMBOL vmlinux 0x8e63d9c0 of_mdiobus_register +EXPORT_SYMBOL vmlinux 0x8e67bd41 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0x8e757ef3 pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x8ea4cf1a __put_cred +EXPORT_SYMBOL vmlinux 0x8eaea1a7 simple_lookup +EXPORT_SYMBOL vmlinux 0x8eb60578 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x8ebe271d agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ef68d34 security_mmap_file +EXPORT_SYMBOL vmlinux 0x8efe042d scsi_host_get +EXPORT_SYMBOL vmlinux 0x8f135234 inet_select_addr +EXPORT_SYMBOL vmlinux 0x8f1bafa5 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x8f282e9a dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x8f2fadb1 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f48f671 netpoll_setup +EXPORT_SYMBOL vmlinux 0x8f6a07ce pci_clear_mwi +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f8fd751 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x8f9eaba6 swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x8fbf37e0 profile_pc +EXPORT_SYMBOL vmlinux 0x8fcc890d mmc_power_save_host +EXPORT_SYMBOL vmlinux 0x8fe4dcf1 dqput +EXPORT_SYMBOL vmlinux 0x8ff67f08 blk_execute_rq +EXPORT_SYMBOL vmlinux 0x8ffdb3b8 crc16 +EXPORT_SYMBOL vmlinux 0x901d6442 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x9028b491 sk_free +EXPORT_SYMBOL vmlinux 0x90457306 mnt_unpin +EXPORT_SYMBOL vmlinux 0x90501868 transfer_to_handler +EXPORT_SYMBOL vmlinux 0x906800fa dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x907cc271 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x907d94a7 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x907f9ca7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x908d8592 vfs_link +EXPORT_SYMBOL vmlinux 0x909f393f make_bad_inode +EXPORT_SYMBOL vmlinux 0x90a8db5a dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0x90b0eaee input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x90b3f7d8 netif_skb_features +EXPORT_SYMBOL vmlinux 0x90bbe2fa xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x90c5e819 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x90c8e2d3 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x90dcca23 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91621d6a allocate_resource +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x9177be1f __brelse +EXPORT_SYMBOL vmlinux 0x917e10ba macio_release_resources +EXPORT_SYMBOL vmlinux 0x91809497 netdev_set_master +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91d88e48 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x92584ea1 blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x92788f53 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x92971f8f scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0x92a2c46d ida_get_new +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92bd7b8e kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x92fdbde9 free_task +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x9309de94 cuda_request +EXPORT_SYMBOL vmlinux 0x930b07c9 init_special_inode +EXPORT_SYMBOL vmlinux 0x93112887 bio_sector_offset +EXPORT_SYMBOL vmlinux 0x93215e1d __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0x9330cb9f sg_alloc_table +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934faf3f dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x93789cdb max8925_bulk_write +EXPORT_SYMBOL vmlinux 0x9379c29d __alloc_pages_nodemask +EXPORT_SYMBOL vmlinux 0x93826bcf tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x938f4ff6 __get_user_pages +EXPORT_SYMBOL vmlinux 0x93a0b8fb kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x940da2b8 skb_find_text +EXPORT_SYMBOL vmlinux 0x94106b5c dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x941d56c7 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0x94247f3c mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0x94430997 __rta_fill +EXPORT_SYMBOL vmlinux 0x946869e1 tty_throttle +EXPORT_SYMBOL vmlinux 0x946b8ab7 kobject_put +EXPORT_SYMBOL vmlinux 0x948826a2 skb_checksum +EXPORT_SYMBOL vmlinux 0x948b64d7 key_put +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x949e8a7b neigh_direct_output +EXPORT_SYMBOL vmlinux 0x94a2e6a3 dev_mc_del +EXPORT_SYMBOL vmlinux 0x94a9d4da kmem_cache_size +EXPORT_SYMBOL vmlinux 0x94b98c50 security_path_chmod +EXPORT_SYMBOL vmlinux 0x94cbd061 dql_reset +EXPORT_SYMBOL vmlinux 0x94d13c96 twl6040_power +EXPORT_SYMBOL vmlinux 0x95010464 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x9506ac2f bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518b440 __frontswap_store +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x9530ab10 netlink_ack +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x959d1797 of_get_parent +EXPORT_SYMBOL vmlinux 0x95a40891 register_md_personality +EXPORT_SYMBOL vmlinux 0x95bd1ce8 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0x961bd4b6 devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x96441ba8 generic_removexattr +EXPORT_SYMBOL vmlinux 0x96573b80 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x96898769 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x969191a3 agp_backend_release +EXPORT_SYMBOL vmlinux 0x96964ab3 skb_copy_expand +EXPORT_SYMBOL vmlinux 0x969f30d9 page_put_link +EXPORT_SYMBOL vmlinux 0x96b1a343 filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x96c53750 dquot_transfer +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d32834 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x96dbcca2 ioremap_prot +EXPORT_SYMBOL vmlinux 0x96df7559 bdi_init +EXPORT_SYMBOL vmlinux 0x9704e93a ida_get_new_above +EXPORT_SYMBOL vmlinux 0x97130b1d blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x97237d97 iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x97255bdf strlen +EXPORT_SYMBOL vmlinux 0x9725aed3 uart_register_driver +EXPORT_SYMBOL vmlinux 0x973cc091 inet_bind +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974e182f vc_resize +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x976597ad sock_create +EXPORT_SYMBOL vmlinux 0x977a5857 generic_file_fsync +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x979e9e4a __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x97a9d9a9 sock_no_bind +EXPORT_SYMBOL vmlinux 0x97b4500c __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0x97c5cd8f generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x97d1deae redraw_screen +EXPORT_SYMBOL vmlinux 0x97d5cf5a blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0x97d9d442 __netif_schedule +EXPORT_SYMBOL vmlinux 0x97f6e045 d_find_alias +EXPORT_SYMBOL vmlinux 0x97fe248c ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x97fece3e dquot_acquire +EXPORT_SYMBOL vmlinux 0x982bf3bc notify_change +EXPORT_SYMBOL vmlinux 0x9848d66d kick_iocb +EXPORT_SYMBOL vmlinux 0x9861c069 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0x9868ee86 jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x987052ea input_get_keycode +EXPORT_SYMBOL vmlinux 0x98798a85 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x9887e54b simple_write_begin +EXPORT_SYMBOL vmlinux 0x98c6be7f phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x98d0322c inet_stream_connect +EXPORT_SYMBOL vmlinux 0x98ded595 usb_put_transceiver +EXPORT_SYMBOL vmlinux 0x98e410e9 bdi_destroy +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x98fe7882 DMA_MODE_READ +EXPORT_SYMBOL vmlinux 0x99226b00 tty_register_driver +EXPORT_SYMBOL vmlinux 0x993c84ab tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x994feb70 dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x9961997f ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x996e8bad add_disk +EXPORT_SYMBOL vmlinux 0x9974c7c3 mdiobus_read +EXPORT_SYMBOL vmlinux 0x997605c6 vfs_llseek +EXPORT_SYMBOL vmlinux 0x9977269f qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99a856e4 get_super +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bb8806 memmove +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d8c265 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0x99da5170 generic_fillattr +EXPORT_SYMBOL vmlinux 0x99fd6516 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6b4d92 arp_tbl +EXPORT_SYMBOL vmlinux 0x9ab65f09 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x9acdfd72 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x9ace16ee security_path_rmdir +EXPORT_SYMBOL vmlinux 0x9acf6b81 d_path +EXPORT_SYMBOL vmlinux 0x9ae44bb0 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0x9b0c6adc filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x9b2adb5d would_dump +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b3b5542 save_mount_options +EXPORT_SYMBOL vmlinux 0x9b4127d0 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x9b59ace9 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x9b653a90 security_path_rename +EXPORT_SYMBOL vmlinux 0x9b6eb137 ksize +EXPORT_SYMBOL vmlinux 0x9b89b887 truncate_setsize +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9ba7a2a6 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x9bb90c87 fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x9bc11ad9 poll_freewait +EXPORT_SYMBOL vmlinux 0x9bce482f __release_region +EXPORT_SYMBOL vmlinux 0x9be3f83a pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x9bf290c4 register_filesystem +EXPORT_SYMBOL vmlinux 0x9c56b65b tty_name +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c86fbdb consume_skb +EXPORT_SYMBOL vmlinux 0x9ca63142 input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cbae14b inet6_release +EXPORT_SYMBOL vmlinux 0x9ce3f83f nvram_write_byte +EXPORT_SYMBOL vmlinux 0x9ceb163c memcpy_toiovec +EXPORT_SYMBOL vmlinux 0x9cee6714 elevator_init +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d030fbc tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d21b99b elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d669763 memcpy +EXPORT_SYMBOL vmlinux 0x9d786943 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x9d7c6309 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d8a4d16 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x9d9c9597 idr_init +EXPORT_SYMBOL vmlinux 0x9da1ba31 simple_setattr +EXPORT_SYMBOL vmlinux 0x9dbdcbbb skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0x9dc480a6 unload_nls +EXPORT_SYMBOL vmlinux 0x9dd59835 sk_wait_data +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e11be57 tcp_shutdown +EXPORT_SYMBOL vmlinux 0x9e1cfc90 ioremap_wc +EXPORT_SYMBOL vmlinux 0x9e2000a7 memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0x9e287320 mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x9e4ddc04 pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e510a4e bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x9e5d6819 mii_link_ok +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e63654a neigh_event_ns +EXPORT_SYMBOL vmlinux 0x9e672ff6 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x9e67a142 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x9e6e254b vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e98b055 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ed5826b pci_map_rom +EXPORT_SYMBOL vmlinux 0x9ed685ee iov_iter_advance +EXPORT_SYMBOL vmlinux 0x9edb55d3 scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x9ee814d0 locks_init_lock +EXPORT_SYMBOL vmlinux 0x9f212a9a rtnl_configure_link +EXPORT_SYMBOL vmlinux 0x9f250df7 napi_gro_frags +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f2be5a3 __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f6e212f jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x9f7823cb sock_no_poll +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb3dd30 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9fc9a049 ata_link_printk +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0x9ff9f96d kern_path_create +EXPORT_SYMBOL vmlinux 0xa0049eb0 dev_addr_flush +EXPORT_SYMBOL vmlinux 0xa02ef199 scsi_finish_command +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06df9e1 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa09a973e agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xa09fa9a2 framebuffer_release +EXPORT_SYMBOL vmlinux 0xa0ae1013 request_key_async +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0b0de76 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0xa0b25525 netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d647d6 agp_put_bridge +EXPORT_SYMBOL vmlinux 0xa0dc237f get_write_access +EXPORT_SYMBOL vmlinux 0xa0ebfda8 iget_failed +EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit +EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc +EXPORT_SYMBOL vmlinux 0xa12c48a8 input_reset_device +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa1619868 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xa194c34c loop_register_transfer +EXPORT_SYMBOL vmlinux 0xa19cd5de cdev_del +EXPORT_SYMBOL vmlinux 0xa19ffd07 of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0xa1b5ad2f xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1e5aeb6 search_binary_handler +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1fd28b1 irq_set_chip +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa22272fb xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0xa22bb98a sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xa2361199 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xa23a720f nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0xa2413b01 find_get_page +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa2779875 tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa29f8431 mem_map +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c612c3 blk_start_request +EXPORT_SYMBOL vmlinux 0xa2cdd5b7 d_rehash +EXPORT_SYMBOL vmlinux 0xa2dc5981 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa2f93a4f kobject_del +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa317d29e scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xa31e04fe mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0xa32e7623 mutex_lock_killable +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa340c58f tcp_proc_register +EXPORT_SYMBOL vmlinux 0xa34b2d60 agp_free_memory +EXPORT_SYMBOL vmlinux 0xa34c81e7 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xa34f1ef5 crc32_le +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa360a8c3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0xa36ff2ae mmc_release_host +EXPORT_SYMBOL vmlinux 0xa38e691a ioremap_bot +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa39d83ed dev_mc_flush +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3dc5968 pci_dev_driver +EXPORT_SYMBOL vmlinux 0xa3e75545 flush_tlb_kernel_range +EXPORT_SYMBOL vmlinux 0xa3f595cd of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0xa407c13c elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0xa43b1297 vscnprintf +EXPORT_SYMBOL vmlinux 0xa43b9539 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0xa4485f39 elv_rb_del +EXPORT_SYMBOL vmlinux 0xa451e3b5 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xa453f007 sockfd_lookup +EXPORT_SYMBOL vmlinux 0xa46ac24d inode_change_ok +EXPORT_SYMBOL vmlinux 0xa46d21e3 phy_start +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa4729964 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0xa474721e bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0xa4936896 request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4c5b297 skb_pull +EXPORT_SYMBOL vmlinux 0xa4c6c200 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xa4c8b300 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa4e43ac7 fb_show_logo +EXPORT_SYMBOL vmlinux 0xa4ebeb39 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0xa504ce84 set_create_files_as +EXPORT_SYMBOL vmlinux 0xa5090dd0 scsi_free_command +EXPORT_SYMBOL vmlinux 0xa50fae31 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa58a6a94 ipv4_specific +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a223be tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xa5a633b9 sg_last +EXPORT_SYMBOL vmlinux 0xa5cef8ad release_resource +EXPORT_SYMBOL vmlinux 0xa5d52b50 gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xa5fa6bf6 d_move +EXPORT_SYMBOL vmlinux 0xa623e964 input_set_capability +EXPORT_SYMBOL vmlinux 0xa6403a09 md_set_array_sectors +EXPORT_SYMBOL vmlinux 0xa652c4ef __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa66262d5 kmalloc_caches +EXPORT_SYMBOL vmlinux 0xa6686a3f pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6970398 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0xa6978c0d __f_setown +EXPORT_SYMBOL vmlinux 0xa69b5bb4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xa6ce9481 simple_statfs +EXPORT_SYMBOL vmlinux 0xa6d2550c locks_delete_block +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa7075484 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa755591c qdisc_destroy +EXPORT_SYMBOL vmlinux 0xa755f4c4 skb_make_writable +EXPORT_SYMBOL vmlinux 0xa75b586c simple_transaction_read +EXPORT_SYMBOL vmlinux 0xa76c9d4c blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7c11bf9 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xa7c8676c jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0xa7d29e71 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0xa7fb009f ip_defrag +EXPORT_SYMBOL vmlinux 0xa809bdab tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0xa8142663 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xa8157b51 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa8331bea pci_disable_msix +EXPORT_SYMBOL vmlinux 0xa83f4cc3 kfree_skb +EXPORT_SYMBOL vmlinux 0xa841b3f8 jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xa861ab6e __ioremap +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa87729f5 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xa8822622 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xa885d9ee __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xa88dfbaa read_cache_page +EXPORT_SYMBOL vmlinux 0xa88ef97f freezing_slow_path +EXPORT_SYMBOL vmlinux 0xa89464b7 __ashldi3 +EXPORT_SYMBOL vmlinux 0xa8bb85af tcp_ioctl +EXPORT_SYMBOL vmlinux 0xa8c4bba1 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa8c7df9b swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xa8f39af6 arp_invalidate +EXPORT_SYMBOL vmlinux 0xa8fb26c7 truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa921c0fe tcf_hash_release +EXPORT_SYMBOL vmlinux 0xa927b32d pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xa9446af6 __dst_free +EXPORT_SYMBOL vmlinux 0xa9559518 log_wait_commit +EXPORT_SYMBOL vmlinux 0xa9571d6d DMA_MODE_WRITE +EXPORT_SYMBOL vmlinux 0xa9674fe8 nobh_writepage +EXPORT_SYMBOL vmlinux 0xa96e02dd jbd2_journal_load +EXPORT_SYMBOL vmlinux 0xa96fb02d generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0xa9ac0bb1 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xa9af6aee pci_unregister_driver +EXPORT_SYMBOL vmlinux 0xa9b79c0f insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0xa9d071a4 ip_fragment +EXPORT_SYMBOL vmlinux 0xa9d63de6 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xa9effda5 __first_cpu +EXPORT_SYMBOL vmlinux 0xaa156b9d bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa4df512 pmu_batteries +EXPORT_SYMBOL vmlinux 0xaa6901ac __kfifo_out_r +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa6eeb48 blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0xaa96be4d path_put +EXPORT_SYMBOL vmlinux 0xaa9c2515 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xaaa1d94b input_event +EXPORT_SYMBOL vmlinux 0xaaa2a1a2 md_done_sync +EXPORT_SYMBOL vmlinux 0xaaa581c6 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0xaaac36fb lookup_hash +EXPORT_SYMBOL vmlinux 0xaab9f7e7 node_states +EXPORT_SYMBOL vmlinux 0xaabb108b qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaad71ed7 uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0xaae1bcf7 register_quota_format +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xab05e97d blk_run_queue +EXPORT_SYMBOL vmlinux 0xab06cdb3 md_write_start +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab694444 bsearch +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xab82f1cd __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xab835441 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabf106ae bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac0e6a5e framebuffer_alloc +EXPORT_SYMBOL vmlinux 0xac21cf79 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac26ec2b fifo_create_dflt +EXPORT_SYMBOL vmlinux 0xac3d3275 blk_get_queue +EXPORT_SYMBOL vmlinux 0xac4e98ce sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xac567d28 mount_subtree +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac755ef4 of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xac7d17de dquot_drop +EXPORT_SYMBOL vmlinux 0xac954c04 filp_close +EXPORT_SYMBOL vmlinux 0xacaa9741 dput +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xacd11d91 tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xacee606d flush_tlb_mm +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex +EXPORT_SYMBOL vmlinux 0xad0a6e0a flex_array_prealloc +EXPORT_SYMBOL vmlinux 0xad23153c register_con_driver +EXPORT_SYMBOL vmlinux 0xad231b1c dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xad30116e set_binfmt +EXPORT_SYMBOL vmlinux 0xad3d4485 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad6bd5ae ping_prot +EXPORT_SYMBOL vmlinux 0xad7f3b23 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadb16a02 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadd0e2a2 proc_create_data +EXPORT_SYMBOL vmlinux 0xadd1e971 alignment_exception +EXPORT_SYMBOL vmlinux 0xaddd4770 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xade7c905 of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0xaded2489 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0xadf42bd5 __request_region +EXPORT_SYMBOL vmlinux 0xadfede7a filemap_flush +EXPORT_SYMBOL vmlinux 0xae3741c3 serio_open +EXPORT_SYMBOL vmlinux 0xae3a96a3 flush_signals +EXPORT_SYMBOL vmlinux 0xae4bc7e1 inet_recvmsg +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae865c4e load_nls_default +EXPORT_SYMBOL vmlinux 0xae8d2fcc simple_transaction_set +EXPORT_SYMBOL vmlinux 0xae9bb3b3 force_sig +EXPORT_SYMBOL vmlinux 0xaec1eebd set_user_nice +EXPORT_SYMBOL vmlinux 0xaec4700d end_buffer_async_write +EXPORT_SYMBOL vmlinux 0xaec655c7 alloc_pages_exact +EXPORT_SYMBOL vmlinux 0xaed14a01 __serio_register_port +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf209c32 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf5131a1 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xaf5d3bad dm_put_device +EXPORT_SYMBOL vmlinux 0xaf5f7994 remove_conflicting_framebuffers +EXPORT_SYMBOL vmlinux 0xaf622bc2 blkdev_get +EXPORT_SYMBOL vmlinux 0xaf6c1119 netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0xaf71b6a1 blkdev_put +EXPORT_SYMBOL vmlinux 0xaf90b83d thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xaf9970ae kern_unmount +EXPORT_SYMBOL vmlinux 0xaf9f7c54 file_sb_list_del +EXPORT_SYMBOL vmlinux 0xafa78be3 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0xafc8c1c3 proc_net_netfilter +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafddbd46 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0xaff99634 textsearch_prepare +EXPORT_SYMBOL vmlinux 0xaffed687 sg_miter_stop +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb00483d1 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0xb00512bb alloc_file +EXPORT_SYMBOL vmlinux 0xb00c1883 atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0xb01bd9bd dentry_path_raw +EXPORT_SYMBOL vmlinux 0xb04e8230 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xb0588c27 sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07f1778 writeback_in_progress +EXPORT_SYMBOL vmlinux 0xb099b167 macio_request_resource +EXPORT_SYMBOL vmlinux 0xb0b1045a kernel_connect +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0dcfe4d file_open_root +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb0f350af kmap_high +EXPORT_SYMBOL vmlinux 0xb0f5a3fe alloc_buffer_head +EXPORT_SYMBOL vmlinux 0xb0f75368 vfs_follow_link +EXPORT_SYMBOL vmlinux 0xb0fbfe57 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xb102bd43 cdrom_mode_select +EXPORT_SYMBOL vmlinux 0xb1288fc5 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xb13169f9 dquot_free_inode +EXPORT_SYMBOL vmlinux 0xb1351ccc phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0xb137b15c fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb16a5c0b ilookup5_nowait +EXPORT_SYMBOL vmlinux 0xb16d3d7a xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xb17044a1 qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xb1766a3d noop_llseek +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb19d97c8 blk_rq_map_kern +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 0xb1de022f mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xb2222d4a sock_register +EXPORT_SYMBOL vmlinux 0xb233762c atomic64_set +EXPORT_SYMBOL vmlinux 0xb24b7b1f simple_transaction_release +EXPORT_SYMBOL vmlinux 0xb24c2db9 idr_get_new_above +EXPORT_SYMBOL vmlinux 0xb2551093 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xb258a074 sock_setsockopt +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb26d46e6 __cleancache_put_page +EXPORT_SYMBOL vmlinux 0xb2b94674 __crc32c_le +EXPORT_SYMBOL vmlinux 0xb2ba0fda open_exec +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2c3b752 serio_interrupt +EXPORT_SYMBOL vmlinux 0xb2cee50d elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2e9e899 neigh_table_init +EXPORT_SYMBOL vmlinux 0xb2f8d5d2 input_mt_init_slots +EXPORT_SYMBOL vmlinux 0xb31526ee sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0xb32568d2 fb_get_mode +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb35cc7db generic_read_dir +EXPORT_SYMBOL vmlinux 0xb35e377c of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0xb3a78a44 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0xb3f46680 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xb41470c1 put_page +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb45441b3 register_qdisc +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb4b04376 seq_printf +EXPORT_SYMBOL vmlinux 0xb519ecd9 ps2_end_command +EXPORT_SYMBOL vmlinux 0xb52251c1 blk_init_queue_node +EXPORT_SYMBOL vmlinux 0xb531ab96 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0xb532cf81 pci_find_next_bus +EXPORT_SYMBOL vmlinux 0xb53a4336 kmap_pte +EXPORT_SYMBOL vmlinux 0xb5427373 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb55be881 lock_rename +EXPORT_SYMBOL vmlinux 0xb562a517 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb57560ab abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xb58f072b serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5d8752e __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0xb5d9454c printk_emit +EXPORT_SYMBOL vmlinux 0xb5e628c1 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xb5f8ea43 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xb61cfe94 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0xb62f6988 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0xb63cb62d pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xb64123b1 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0xb641407a of_dev_get +EXPORT_SYMBOL vmlinux 0xb64c8d5d ppp_dev_name +EXPORT_SYMBOL vmlinux 0xb6599b9a machine_check_exception +EXPORT_SYMBOL vmlinux 0xb65e7f84 lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xb6733d74 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb67e3ac1 scsi_register +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb6896671 crc_t10dif +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d6170d tcp_read_sock +EXPORT_SYMBOL vmlinux 0xb70444b4 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xb7332ff0 adb_client_list +EXPORT_SYMBOL vmlinux 0xb73c06a8 serio_reconnect +EXPORT_SYMBOL vmlinux 0xb73ed410 fget_raw +EXPORT_SYMBOL vmlinux 0xb7499649 pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0xb753bcc8 __ashrdi3 +EXPORT_SYMBOL vmlinux 0xb76431c8 pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0xb7672876 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xb769ab20 bdget +EXPORT_SYMBOL vmlinux 0xb79ff844 tty_port_init +EXPORT_SYMBOL vmlinux 0xb7a99781 __irq_regs +EXPORT_SYMBOL vmlinux 0xb7af1f97 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xb7b61546 crc32_be +EXPORT_SYMBOL vmlinux 0xb7db8767 d_lookup +EXPORT_SYMBOL vmlinux 0xb81960ca snprintf +EXPORT_SYMBOL vmlinux 0xb824c375 bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0xb82ff625 xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb857da73 ida_destroy +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb894926d schedule_work_on +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8aa2342 __check_region +EXPORT_SYMBOL vmlinux 0xb8add2c0 follow_up +EXPORT_SYMBOL vmlinux 0xb8e877e7 kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xb8fa50e0 dquot_alloc +EXPORT_SYMBOL vmlinux 0xb8fdb6ef ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xb8ff844a input_set_abs_params +EXPORT_SYMBOL vmlinux 0xb90ab33b netif_device_detach +EXPORT_SYMBOL vmlinux 0xb90b6ac6 blk_register_region +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb925a941 __pagevec_release +EXPORT_SYMBOL vmlinux 0xb96bfd68 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xb972c0b3 fail_migrate_page +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb98d47be napi_get_frags +EXPORT_SYMBOL vmlinux 0xb993a6da __scm_send +EXPORT_SYMBOL vmlinux 0xb993e6a4 blk_queue_logical_block_size +EXPORT_SYMBOL vmlinux 0xb9d59ab8 scsi_remove_target +EXPORT_SYMBOL vmlinux 0xb9dfe752 input_free_device +EXPORT_SYMBOL vmlinux 0xb9eb78ff bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0xb9f56396 phy_device_free +EXPORT_SYMBOL vmlinux 0xba0215e3 blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xba04d174 elv_unregister_queue +EXPORT_SYMBOL vmlinux 0xba238da9 release_firmware +EXPORT_SYMBOL vmlinux 0xba2fb46b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xba34ab67 bitmap_unplug +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba4a3c40 mmc_card_awake +EXPORT_SYMBOL vmlinux 0xba5e7b54 dev_deactivate +EXPORT_SYMBOL vmlinux 0xbae43fd2 lookup_bdev +EXPORT_SYMBOL vmlinux 0xbae5040a scsi_add_device +EXPORT_SYMBOL vmlinux 0xbaeecb96 pci_request_region +EXPORT_SYMBOL vmlinux 0xbaf05b96 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xbaff963e nf_setsockopt +EXPORT_SYMBOL vmlinux 0xbb0da484 padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xbb0f4266 current_fs_time +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb236dbd blk_start_queue +EXPORT_SYMBOL vmlinux 0xbb252c38 simple_transaction_get +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb699cb8 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbb9b7ddf inet_frag_kill +EXPORT_SYMBOL vmlinux 0xbc094343 proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0xbc09a854 filp_open +EXPORT_SYMBOL vmlinux 0xbc1f1531 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xbc267c11 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc380acb unregister_quota_format +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc5f411a key_unlink +EXPORT_SYMBOL vmlinux 0xbc661dda sock_no_socketpair +EXPORT_SYMBOL vmlinux 0xbc7ab0b2 i2c_use_client +EXPORT_SYMBOL vmlinux 0xbca90580 netdev_state_change +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcd0384f ip_check_defrag +EXPORT_SYMBOL vmlinux 0xbcd7a78d blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0xbce3f101 led_blink_set +EXPORT_SYMBOL vmlinux 0xbcffe639 idr_pre_get +EXPORT_SYMBOL vmlinux 0xbd02ca46 pid_task +EXPORT_SYMBOL vmlinux 0xbd377683 of_platform_device_create +EXPORT_SYMBOL vmlinux 0xbd4459c3 inode_dio_done +EXPORT_SYMBOL vmlinux 0xbd68b10b i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0xbd77a887 neigh_for_each +EXPORT_SYMBOL vmlinux 0xbd79bd91 d_splice_alias +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd8d541d flush_hash_pages +EXPORT_SYMBOL vmlinux 0xbd8d7d62 register_key_type +EXPORT_SYMBOL vmlinux 0xbd9e5d49 __lshrdi3 +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdc9aab4 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbe0a1cea of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0xbe0e5118 nla_memcmp +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe63ee40 request_resource +EXPORT_SYMBOL vmlinux 0xbe6f064d idr_for_each +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe95b7d4 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0xbedc583f tty_port_open +EXPORT_SYMBOL vmlinux 0xbedffae3 md_write_end +EXPORT_SYMBOL vmlinux 0xbee3351a of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbee90f2f __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0xbeef2675 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf05e110 update_region +EXPORT_SYMBOL vmlinux 0xbf0ed327 of_device_register +EXPORT_SYMBOL vmlinux 0xbf5195e9 udp_prot +EXPORT_SYMBOL vmlinux 0xbf6a7cc5 mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf875f2e netif_carrier_on +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf9837fa vfs_read +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa20fc1 fsync_bdev +EXPORT_SYMBOL vmlinux 0xbfa97c34 scsi_prep_return +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfb94102 input_grab_device +EXPORT_SYMBOL vmlinux 0xbfbcef40 generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfcdb622 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc014cdde bdev_read_only +EXPORT_SYMBOL vmlinux 0xc018632b scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0xc01a50a0 xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xc029c59d clear_nlink +EXPORT_SYMBOL vmlinux 0xc02b0474 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0xc042877a phy_register_fixup +EXPORT_SYMBOL vmlinux 0xc048e177 journal_release_buffer +EXPORT_SYMBOL vmlinux 0xc050a5ab __frontswap_load +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc068440e __kfifo_alloc +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc07dee58 ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc086119a max8925_reg_read +EXPORT_SYMBOL vmlinux 0xc08ca7b0 kill_pgrp +EXPORT_SYMBOL vmlinux 0xc09a3b91 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0b8c0c8 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0xc0d84ced cuda_poll +EXPORT_SYMBOL vmlinux 0xc0e204b8 names_cachep +EXPORT_SYMBOL vmlinux 0xc0eb99e9 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xc103a00e inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0xc11011e3 kernel_listen +EXPORT_SYMBOL vmlinux 0xc112871a account_page_writeback +EXPORT_SYMBOL vmlinux 0xc118e14f dmam_free_coherent +EXPORT_SYMBOL vmlinux 0xc11d8093 iov_shorten +EXPORT_SYMBOL vmlinux 0xc12ec3a6 dns_query +EXPORT_SYMBOL vmlinux 0xc1325e17 vfs_open +EXPORT_SYMBOL vmlinux 0xc13a1c55 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xc14467ce cad_pid +EXPORT_SYMBOL vmlinux 0xc15a3f05 of_match_device +EXPORT_SYMBOL vmlinux 0xc166d5d4 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc1716fac mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0xc18e9aae n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xc195cb11 dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xc1ba52b8 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xc1bba295 agp_enable +EXPORT_SYMBOL vmlinux 0xc1c070d7 mdiobus_register +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1c9d3a1 sock_i_ino +EXPORT_SYMBOL vmlinux 0xc1da0847 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xc1dd4a7f adb_request +EXPORT_SYMBOL vmlinux 0xc1eb859a bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xc1ec21ba inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xc1f75348 jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0xc1fa9766 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0xc224c265 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc258088a pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xc25e3e0f inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xc25e82f7 vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xc29c2043 genl_register_ops +EXPORT_SYMBOL vmlinux 0xc2a6ae55 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0xc2c453e5 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xc2d711e1 krealloc +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc30ef151 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0xc32f66af try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc368849f nvram_sync +EXPORT_SYMBOL vmlinux 0xc3837aa8 tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0xc39e0da4 generic_make_request +EXPORT_SYMBOL vmlinux 0xc3e01967 scsi_device_resume +EXPORT_SYMBOL vmlinux 0xc3e0f522 sync_inode +EXPORT_SYMBOL vmlinux 0xc3f74686 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xc3fc64e8 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0xc4372cc9 i8042_install_filter +EXPORT_SYMBOL vmlinux 0xc441b24d pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc44aba60 lock_may_read +EXPORT_SYMBOL vmlinux 0xc454f551 should_remove_suid +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc4665f8e xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0xc47b580b __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4881e31 __serio_register_driver +EXPORT_SYMBOL vmlinux 0xc48b0580 init_task +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4c02e82 dev_load +EXPORT_SYMBOL vmlinux 0xc4ed1d2f pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xc4faade6 input_close_device +EXPORT_SYMBOL vmlinux 0xc4ff18ff abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xc54c70ec put_disk +EXPORT_SYMBOL vmlinux 0xc5513fb9 ihold +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55c1235 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc567e3f8 devm_gpio_request +EXPORT_SYMBOL vmlinux 0xc5718627 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0xc59dcd49 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xc5c48725 km_query +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5e7afbd ps2_drain +EXPORT_SYMBOL vmlinux 0xc5eef928 scsi_print_sense +EXPORT_SYMBOL vmlinux 0xc5f0bc4a get_unmapped_area +EXPORT_SYMBOL vmlinux 0xc5f36007 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc5f69bde scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xc600ae45 jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0xc6059d49 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0xc60e4fc4 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0xc61be59c ida_remove +EXPORT_SYMBOL vmlinux 0xc61d9670 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xc6211794 fb_class +EXPORT_SYMBOL vmlinux 0xc62292d8 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63e9360 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xc64a6102 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0xc64c0ae2 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc65d3713 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xc691488f serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0xc698b413 pci_iounmap +EXPORT_SYMBOL vmlinux 0xc69b7277 blk_init_queue +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6c6cbd0 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc6f9f40b eth_header +EXPORT_SYMBOL vmlinux 0xc6fb1710 kmem_cache_free +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc70839f2 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0xc718caf9 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0xc72489e4 tcp_disconnect +EXPORT_SYMBOL vmlinux 0xc73688cc pci_get_slot +EXPORT_SYMBOL vmlinux 0xc7569210 touch_atime +EXPORT_SYMBOL vmlinux 0xc75bb196 i2c_register_driver +EXPORT_SYMBOL vmlinux 0xc7720beb skb_free_datagram +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc78e963d tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc790c616 __free_pages +EXPORT_SYMBOL vmlinux 0xc795e23e cpu_core_map +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc7a14017 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7c4cffa pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xc7ec6c27 strspn +EXPORT_SYMBOL vmlinux 0xc8276a79 nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xc83a2011 vga_tryget +EXPORT_SYMBOL vmlinux 0xc84601e5 vga_client_register +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc88f206a lock_fb_info +EXPORT_SYMBOL vmlinux 0xc8b4daeb d_find_any_alias +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8c066a8 dm_io +EXPORT_SYMBOL vmlinux 0xc8d7aad8 journal_init_dev +EXPORT_SYMBOL vmlinux 0xc8f732c5 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0xc901166f read_cache_pages +EXPORT_SYMBOL vmlinux 0xc91290e8 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc9532e80 dev_change_flags +EXPORT_SYMBOL vmlinux 0xc95e3184 cdev_alloc +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc999eec4 ppp_channel_index +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9b8c308 __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0xc9cf3b45 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0xc9d61c5d journal_check_used_features +EXPORT_SYMBOL vmlinux 0xc9ddade7 tty_port_put +EXPORT_SYMBOL vmlinux 0xc9e180a7 ilookup +EXPORT_SYMBOL vmlinux 0xc9e45854 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xc9ff016e in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xca00e413 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xca3cf55a input_inject_event +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca68b6c0 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xca8e8198 swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0xca932218 sock_recvmsg +EXPORT_SYMBOL vmlinux 0xcaa168a7 posix_lock_file +EXPORT_SYMBOL vmlinux 0xcab33fec __block_write_begin +EXPORT_SYMBOL vmlinux 0xcacd272d atomic64_sub_return +EXPORT_SYMBOL vmlinux 0xcad08e48 mmu_hash_lock +EXPORT_SYMBOL vmlinux 0xcaf11307 mmc_free_host +EXPORT_SYMBOL vmlinux 0xcaf3e86e nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xcaf3f872 tcp_child_process +EXPORT_SYMBOL vmlinux 0xcafb5cae tcp_check_req +EXPORT_SYMBOL vmlinux 0xcb205883 mii_check_media +EXPORT_SYMBOL vmlinux 0xcb2fb51b input_unregister_handler +EXPORT_SYMBOL vmlinux 0xcb4693c2 km_report +EXPORT_SYMBOL vmlinux 0xcb4f5274 uart_update_timeout +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb7414e7 tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xcb8c7b3a swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcbbdce4a mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbd69482 neigh_seq_start +EXPORT_SYMBOL vmlinux 0xcbd82723 mdiobus_free +EXPORT_SYMBOL vmlinux 0xcbf3ac27 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xcc012b0f bioset_free +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc257a8a dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc525a62 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xcc549b24 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0xcc6e4d85 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0xcc7dde5c dev_mc_sync +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc8e12b1 wait_on_page_bit +EXPORT_SYMBOL vmlinux 0xccc8efe0 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xcccfa0ec bio_copy_user +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd201450 generic_delete_inode +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd282d6d nf_register_hooks +EXPORT_SYMBOL vmlinux 0xcd51e5c2 __register_chrdev +EXPORT_SYMBOL vmlinux 0xcd6ded95 journal_stop +EXPORT_SYMBOL vmlinux 0xcd82ccce neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd8a8617 km_policy_expired +EXPORT_SYMBOL vmlinux 0xcd94e3b9 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xcd97e6fa cap_mmap_file +EXPORT_SYMBOL vmlinux 0xcda18e32 i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0xcda8441e thaw_bdev +EXPORT_SYMBOL vmlinux 0xcdab8b50 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xcdb9d952 buffer_migrate_page +EXPORT_SYMBOL vmlinux 0xcdbfd8ed flush_tlb_page +EXPORT_SYMBOL vmlinux 0xcdd1b18e agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0xcddcb000 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xce031478 mmc_can_discard +EXPORT_SYMBOL vmlinux 0xce0a195f mmc_request_done +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce67179b ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0xce6d561d __find_get_block +EXPORT_SYMBOL vmlinux 0xce74b1b7 cdrom_check_events +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce7dcc4e blk_put_queue +EXPORT_SYMBOL vmlinux 0xcec23635 bio_init +EXPORT_SYMBOL vmlinux 0xcec54b5f genphy_resume +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcef7d83d mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0xcf06201d simple_write_end +EXPORT_SYMBOL vmlinux 0xcf1efbd5 serio_close +EXPORT_SYMBOL vmlinux 0xcf49da9d bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xcf4c7214 inet_accept +EXPORT_SYMBOL vmlinux 0xcf73f033 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0xcf75a300 inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xcf9a4cce md_integrity_register +EXPORT_SYMBOL vmlinux 0xcf9d959a xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xcfa2523a vfs_mknod +EXPORT_SYMBOL vmlinux 0xcfcdf392 mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0xcfddcf5d input_open_device +EXPORT_SYMBOL vmlinux 0xcfe2e5ff kernel_sendmsg +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0401422 __nla_put +EXPORT_SYMBOL vmlinux 0xd053e03b dev_set_drvdata +EXPORT_SYMBOL vmlinux 0xd0570394 create_proc_entry +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0a45fa5 pmu_enable_irled +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0b05e28 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0xd0b8a15c balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xd0c10ed5 devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0xd0c31544 tty_vhangup +EXPORT_SYMBOL vmlinux 0xd0c379e6 md_unregister_thread +EXPORT_SYMBOL vmlinux 0xd0c7c7fb seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0d57195 load_nls +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 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd14a3193 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xd16fee32 tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd196c9be kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xd1a88b0b scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0xd1b26bcb mount_nodev +EXPORT_SYMBOL vmlinux 0xd2092004 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0xd217bf85 ps2_begin_command +EXPORT_SYMBOL vmlinux 0xd220c880 ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd236c789 unregister_tcf_proto_ops +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 0xd2704b2d dm_register_target +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2a09700 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd2a941d4 sg_init_table +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2de48b1 netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xd2f64493 block_read_full_page +EXPORT_SYMBOL vmlinux 0xd2fc19bd proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0xd3187da4 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd31f72a5 contig_page_data +EXPORT_SYMBOL vmlinux 0xd331e108 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0xd336264c blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0xd338093c __lru_cache_add +EXPORT_SYMBOL vmlinux 0xd3814610 __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd3ab4f73 inet6_ioctl +EXPORT_SYMBOL vmlinux 0xd3dddb3e pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0xd3e6f60d cpu_possible_mask +EXPORT_SYMBOL vmlinux 0xd3eacf7e tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xd4002e95 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd418e1c0 adjust_resource +EXPORT_SYMBOL vmlinux 0xd478c3e2 remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0xd481d226 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0xd4aa3e0f handle_edge_irq +EXPORT_SYMBOL vmlinux 0xd4e865c7 xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xd4f89e6d crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xd50d85c2 skb_store_bits +EXPORT_SYMBOL vmlinux 0xd5330602 tty_write_room +EXPORT_SYMBOL vmlinux 0xd5537c05 bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xd5558452 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0xd557df6f pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xd58f105c i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5a64f88 elv_add_request +EXPORT_SYMBOL vmlinux 0xd5b1376d register_shrinker +EXPORT_SYMBOL vmlinux 0xd5b2e52a single_step_exception +EXPORT_SYMBOL vmlinux 0xd5b644a9 follow_down +EXPORT_SYMBOL vmlinux 0xd5e3033a submit_bh +EXPORT_SYMBOL vmlinux 0xd5e8444a __div64_32 +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd60c5ed9 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd6259632 vfs_rename +EXPORT_SYMBOL vmlinux 0xd627480b strncat +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd646c7d8 bdevname +EXPORT_SYMBOL vmlinux 0xd648b9b3 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd65dd59a dump_seek +EXPORT_SYMBOL vmlinux 0xd6796c39 find_get_pages_contig +EXPORT_SYMBOL vmlinux 0xd67b446a send_sig_info +EXPORT_SYMBOL vmlinux 0xd6993192 vfs_readv +EXPORT_SYMBOL vmlinux 0xd69b30e0 atomic64_add_unless +EXPORT_SYMBOL vmlinux 0xd6a5edce register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xd6c9304f kernel_bind +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd71a0a6d truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xd7265274 vga_get +EXPORT_SYMBOL vmlinux 0xd72bbf06 irq_to_desc +EXPORT_SYMBOL vmlinux 0xd7354f9c netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0xd735d093 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79bd9b0 unregister_con_driver +EXPORT_SYMBOL vmlinux 0xd7bb5152 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0xd7bdd39e blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7fb039e netif_carrier_off +EXPORT_SYMBOL vmlinux 0xd81d784a jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xd8234d8d pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xd8256737 tty_port_close +EXPORT_SYMBOL vmlinux 0xd86652ff sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0xd8712b1d fddi_change_mtu +EXPORT_SYMBOL vmlinux 0xd8916eea cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0xd891bb3d of_get_property +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd92514ca agp_special_page +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e4b4d powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd93d5ec8 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xd94965b8 I_BDEV +EXPORT_SYMBOL vmlinux 0xd9498b22 proc_dointvec +EXPORT_SYMBOL vmlinux 0xd9814580 bio_add_page +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd99235f6 __bforget +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c35ba4 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0xd9ce8f0c strnlen +EXPORT_SYMBOL vmlinux 0xd9d79cfa skb_flow_dissect +EXPORT_SYMBOL vmlinux 0xd9da64b9 blk_put_request +EXPORT_SYMBOL vmlinux 0xd9e58c7b blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0xda28f8a9 address_space_init_once +EXPORT_SYMBOL vmlinux 0xda76fe64 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xda7a9bfc unregister_md_personality +EXPORT_SYMBOL vmlinux 0xda7c407f pci_device_from_OF_node +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8530d4 icmp_send +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xdaa57ec3 totalhigh_pages +EXPORT_SYMBOL vmlinux 0xdae4e68b tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xdb03f66c macio_register_driver +EXPORT_SYMBOL vmlinux 0xdb22d998 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0xdb2825e9 bio_endio +EXPORT_SYMBOL vmlinux 0xdb507250 __seq_open_private +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb699974 lro_flush_all +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb864d65 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdbe6105c xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0xdbf320a8 agp_bind_memory +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc06770b __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc6548ec mount_pseudo +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc732024 irq_stat +EXPORT_SYMBOL vmlinux 0xdc942659 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdd0a2ba2 strlcat +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd27fa87 memchr +EXPORT_SYMBOL vmlinux 0xdd2870ce wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0xdd3ded99 blk_end_request_all +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd7f2975 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0xdda5ee40 do_sync_read +EXPORT_SYMBOL vmlinux 0xddba1973 scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0xddbbc5b3 __kfree_skb +EXPORT_SYMBOL vmlinux 0xddc61549 phy_print_status +EXPORT_SYMBOL vmlinux 0xddd21c0c blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xddebd372 dev_set_group +EXPORT_SYMBOL vmlinux 0xde176bfe skb_append_datato_frags +EXPORT_SYMBOL vmlinux 0xde258b1b set_bh_page +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde589d5c abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0xde5e9135 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xde647aa6 scsi_unregister +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea1d6d6 vfs_getattr +EXPORT_SYMBOL vmlinux 0xdf27eb10 scsi_reset_provider +EXPORT_SYMBOL vmlinux 0xdf449b80 set_security_override +EXPORT_SYMBOL vmlinux 0xdf4d8ff3 block_write_begin +EXPORT_SYMBOL vmlinux 0xdf5d83be __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf6d188e eth_rebuild_header +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfac442f clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0xdfb7a6bb scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0xdfcda5a8 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0xdfe8d33f fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xdff43ed4 __debugger +EXPORT_SYMBOL vmlinux 0xdff56e64 adb_poll +EXPORT_SYMBOL vmlinux 0xe01eacd6 of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xe0344947 ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xe04b0df3 complete_request_key +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 0xe07a274b scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0xe08b41b6 register_console +EXPORT_SYMBOL vmlinux 0xe0912591 inet_del_protocol +EXPORT_SYMBOL vmlinux 0xe094ef39 sg_next +EXPORT_SYMBOL vmlinux 0xe09b7fcb ilookup5 +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0c11fe6 dma_find_channel +EXPORT_SYMBOL vmlinux 0xe0e20c57 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0xe0eb1cec eth_change_mtu +EXPORT_SYMBOL vmlinux 0xe10fa1d6 remap_pfn_range +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe12dfec3 __dev_get_by_index +EXPORT_SYMBOL vmlinux 0xe12e3d85 generic_file_mmap +EXPORT_SYMBOL vmlinux 0xe13514e9 dev_get_by_name +EXPORT_SYMBOL vmlinux 0xe135bd3f jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0xe13e19d8 inode_permission +EXPORT_SYMBOL vmlinux 0xe14465ed pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe18064e7 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0xe1a906d6 devm_iounmap +EXPORT_SYMBOL vmlinux 0xe1adc997 inet_release +EXPORT_SYMBOL vmlinux 0xe1d51b06 udp_disconnect +EXPORT_SYMBOL vmlinux 0xe1dc19a5 _dev_info +EXPORT_SYMBOL vmlinux 0xe1f16891 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe2038351 icmpv6_send +EXPORT_SYMBOL vmlinux 0xe22c73a8 register_exec_domain +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe23fac07 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe2599b5c seq_lseek +EXPORT_SYMBOL vmlinux 0xe26a424b xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xe27bfe5b scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0xe2ae3805 dev_uc_del +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2b7ccd5 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2e8065e memdup_user +EXPORT_SYMBOL vmlinux 0xe2fae716 kmemdup +EXPORT_SYMBOL vmlinux 0xe35014b2 phy_device_register +EXPORT_SYMBOL vmlinux 0xe3536e23 mdiobus_scan +EXPORT_SYMBOL vmlinux 0xe36a14a3 dev_notice +EXPORT_SYMBOL vmlinux 0xe385ef1a kobject_init +EXPORT_SYMBOL vmlinux 0xe388c1f1 nla_append +EXPORT_SYMBOL vmlinux 0xe3912c13 nf_afinfo +EXPORT_SYMBOL vmlinux 0xe3ab8258 of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xe3ad8c22 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3d9240f bdi_register +EXPORT_SYMBOL vmlinux 0xe3e2beae generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xe3e2dc1e __lock_buffer +EXPORT_SYMBOL vmlinux 0xe3e898d5 __dquot_free_space +EXPORT_SYMBOL vmlinux 0xe4262a6a del_gendisk +EXPORT_SYMBOL vmlinux 0xe4344260 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0xe43bd3cf of_find_node_by_name +EXPORT_SYMBOL vmlinux 0xe43c8c3d user_revoke +EXPORT_SYMBOL vmlinux 0xe443d47d of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0xe462e6de dev_mc_init +EXPORT_SYMBOL vmlinux 0xe4828bbc bdi_unregister +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe48ef89d skb_queue_tail +EXPORT_SYMBOL vmlinux 0xe48fbb1b set_groups +EXPORT_SYMBOL vmlinux 0xe49775f9 flush_delayed_work +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4afaf44 proc_mkdir +EXPORT_SYMBOL vmlinux 0xe4cb9fd7 __ps2_command +EXPORT_SYMBOL vmlinux 0xe4cf69c2 blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0xe4d08808 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0xe4d29503 request_firmware +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe509accc jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0xe50bbf34 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe5213b34 dquot_disable +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe5324eb1 do_splice_from +EXPORT_SYMBOL vmlinux 0xe54df605 ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0xe551f4fa d_validate +EXPORT_SYMBOL vmlinux 0xe557f584 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xe5668244 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xe56ea83b splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0xe570ff04 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe586d3b2 get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0xe5b00c5f udp_seq_open +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5df0c03 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0xe5e89bbd pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe61697cd inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xe61e7151 igrab +EXPORT_SYMBOL vmlinux 0xe629f394 dqget +EXPORT_SYMBOL vmlinux 0xe64a9fa2 journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6c685e1 jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe6d4ae0f i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0xe6dceb73 blk_sync_queue +EXPORT_SYMBOL vmlinux 0xe6dd236d clear_pages +EXPORT_SYMBOL vmlinux 0xe6e6c553 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xe6ebc016 key_create_or_update +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe75d09ae nf_reinject +EXPORT_SYMBOL vmlinux 0xe78825c8 skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7b06097 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xe7bf317d fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7cedd24 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7d6373a bio_integrity_split +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe81bfdfc follow_pfn +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe848135e udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xe84c44e5 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0xe87901a5 vfs_symlink +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b81643 rtas +EXPORT_SYMBOL vmlinux 0xe9005cce vfs_rmdir +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe9537e08 get_task_io_context +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe98f2aa9 generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0xe99ab822 dev_gro_receive +EXPORT_SYMBOL vmlinux 0xe99ad908 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0xe9c9d914 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0xe9cefd4e uart_suspend_port +EXPORT_SYMBOL vmlinux 0xe9d0a383 of_device_unregister +EXPORT_SYMBOL vmlinux 0xe9dd8074 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe9f20b72 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0xe9f22e5f skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0xea0220d8 wake_up_process +EXPORT_SYMBOL vmlinux 0xea054b22 nla_policy_len +EXPORT_SYMBOL vmlinux 0xea10212a int_to_scsilun +EXPORT_SYMBOL vmlinux 0xea10655a __bitmap_intersects +EXPORT_SYMBOL vmlinux 0xea10b9da scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0xea2913a1 vfs_create +EXPORT_SYMBOL vmlinux 0xea38ee06 d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0xea58e01c nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xea5c2e79 __blk_end_request +EXPORT_SYMBOL vmlinux 0xea611439 gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xea7987f1 key_update +EXPORT_SYMBOL vmlinux 0xea799c11 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xea7a3c6a pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0xea9494d4 write_inode_now +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xea9e938a filemap_fdatawait +EXPORT_SYMBOL vmlinux 0xeaba6190 tty_unregister_device +EXPORT_SYMBOL vmlinux 0xeac23a95 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xead756ef flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xeae50bf8 generic_readlink +EXPORT_SYMBOL vmlinux 0xeaf16558 ida_init +EXPORT_SYMBOL vmlinux 0xeb01f2c4 bio_integrity_free +EXPORT_SYMBOL vmlinux 0xeb2a71dc i2c_del_driver +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb3b60f9 simple_empty +EXPORT_SYMBOL vmlinux 0xeb55a931 __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xeb73353a skb_dequeue +EXPORT_SYMBOL vmlinux 0xeb93755d security_inode_permission +EXPORT_SYMBOL vmlinux 0xeb941ff8 noop_fsync +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeba8cd11 twl6040_irq_init +EXPORT_SYMBOL vmlinux 0xebbc15a8 netdev_info +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebf2b808 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xec0e73f1 bitmap_startwrite +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec493525 journal_init_inode +EXPORT_SYMBOL vmlinux 0xec4da066 tcf_action_exec +EXPORT_SYMBOL vmlinux 0xec5776a7 journal_forget +EXPORT_SYMBOL vmlinux 0xec615d79 simple_release_fs +EXPORT_SYMBOL vmlinux 0xec88a072 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0xecd906dc skb_push +EXPORT_SYMBOL vmlinux 0xecefce40 misc_deregister +EXPORT_SYMBOL vmlinux 0xed041238 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xed28bfd2 dev_alert +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed36ed2b textsearch_register +EXPORT_SYMBOL vmlinux 0xed41b48b swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0xed93f29e __kunmap_atomic +EXPORT_SYMBOL vmlinux 0xed95ba1e mmc_resume_host +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xedba0aec revert_creds +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc1445e vc_cons +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedd0f371 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xedecc3ed ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xedff247f pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0xee0f5bee inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee3496c3 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0xee43df66 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0xee59412f adb_try_handler_change +EXPORT_SYMBOL vmlinux 0xee65b8b2 nonseekable_open +EXPORT_SYMBOL vmlinux 0xee7ed609 pci_disable_msi +EXPORT_SYMBOL vmlinux 0xee93d586 vfs_mkdir +EXPORT_SYMBOL vmlinux 0xee996208 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0xeea53257 pci_enable_ido +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeaf2609 pci_get_subsys +EXPORT_SYMBOL vmlinux 0xeeb805a5 scsi_print_command +EXPORT_SYMBOL vmlinux 0xeec032ef block_page_mkwrite +EXPORT_SYMBOL vmlinux 0xeec64b89 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xeeccbde5 bio_map_kern +EXPORT_SYMBOL vmlinux 0xeed3363f dcb_setapp +EXPORT_SYMBOL vmlinux 0xeee995d4 pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef3588c2 xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xef50750f da903x_query_status +EXPORT_SYMBOL vmlinux 0xef59da86 mmc_alloc_host +EXPORT_SYMBOL vmlinux 0xef8db564 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xefa23793 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xefa6c466 keyring_clear +EXPORT_SYMBOL vmlinux 0xefb312cf netdev_update_features +EXPORT_SYMBOL vmlinux 0xefb64a68 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0xefbaecd6 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0xefdd70ce security_secid_to_secctx +EXPORT_SYMBOL vmlinux 0xefde1bbe flush_dcache_range +EXPORT_SYMBOL vmlinux 0xefee38b8 block_write_end +EXPORT_SYMBOL vmlinux 0xefee4ae3 nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list +EXPORT_SYMBOL vmlinux 0xf039a538 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0xf04ae1ba idr_remove_all +EXPORT_SYMBOL vmlinux 0xf059cf4c filemap_fault +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf063a28b tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf06ad70b check_disk_change +EXPORT_SYMBOL vmlinux 0xf07e68f3 agp_copy_info +EXPORT_SYMBOL vmlinux 0xf085f0bb blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xf0870c25 ip_route_input_common +EXPORT_SYMBOL vmlinux 0xf0c6bd40 netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0xf0c7e729 simple_unlink +EXPORT_SYMBOL vmlinux 0xf0e18b4d mpage_writepages +EXPORT_SYMBOL vmlinux 0xf0eece7b eth_header_cache +EXPORT_SYMBOL vmlinux 0xf0ef15b4 list_sort +EXPORT_SYMBOL vmlinux 0xf0f087ed __devm_request_region +EXPORT_SYMBOL vmlinux 0xf0f1246c kvasprintf +EXPORT_SYMBOL vmlinux 0xf0fd4e8f rwsem_down_read_failed +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf111c5aa bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf120872a dql_completed +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf1471835 input_set_keycode +EXPORT_SYMBOL vmlinux 0xf1582db7 get_super_thawed +EXPORT_SYMBOL vmlinux 0xf18eff0f switch_mmu_context +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf19e9355 cpu_online_mask +EXPORT_SYMBOL vmlinux 0xf1c78316 mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xf1cb2faa scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1deabf2 div64_u64 +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1eb211a pci_enable_obff +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf20917fc dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf21924a1 bio_pair_release +EXPORT_SYMBOL vmlinux 0xf2219f8e inet_ioctl +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf234c779 dquot_initialize +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf258f915 iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0xf27cdcc6 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0xf2de7381 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xf2f012c0 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0xf3061a90 kobject_add +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf32e8496 locks_remove_posix +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf3594ed9 default_llseek +EXPORT_SYMBOL vmlinux 0xf35ff8d0 kmap_atomic_prot +EXPORT_SYMBOL vmlinux 0xf373ac03 dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf38218ec gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf3ad0856 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3dc89ac mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xf3de07f5 take_over_console +EXPORT_SYMBOL vmlinux 0xf4054d60 tty_unthrottle +EXPORT_SYMBOL vmlinux 0xf41b2a47 mmc_register_driver +EXPORT_SYMBOL vmlinux 0xf4231754 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xf4316a33 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf4442de9 __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0xf4449388 timer_interrupt +EXPORT_SYMBOL vmlinux 0xf45c1434 ida_simple_get +EXPORT_SYMBOL vmlinux 0xf487fbd4 register_framebuffer +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf49743f3 neigh_connected_output +EXPORT_SYMBOL vmlinux 0xf4a7601f sk_stream_error +EXPORT_SYMBOL vmlinux 0xf4b2baaf backlight_force_update +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c6a9f6 d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xf4cf5155 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xf4d34c87 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0xf4eeed30 __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf509992f set_blocksize +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf52321e0 atomic64_sub +EXPORT_SYMBOL vmlinux 0xf5284647 __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0xf535b4d1 generic_getxattr +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf54c51a2 dma_pool_free +EXPORT_SYMBOL vmlinux 0xf5541155 sock_init_data +EXPORT_SYMBOL vmlinux 0xf58edefe flush_old_exec +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b4449b uart_get_divisor +EXPORT_SYMBOL vmlinux 0xf5bd4a5d blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0xf5c05914 generic_segment_checks +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf628eba7 vfs_readlink +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf63df0cd sock_no_listen +EXPORT_SYMBOL vmlinux 0xf6556c42 dquot_commit +EXPORT_SYMBOL vmlinux 0xf69fec47 tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xf6a34ac1 seq_read +EXPORT_SYMBOL vmlinux 0xf6a8256d nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0xf6b712fe __mutex_init +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6be8801 skb_trim +EXPORT_SYMBOL vmlinux 0xf6c340b5 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0xf6e11eff net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf70384d7 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xf70e95df journal_create +EXPORT_SYMBOL vmlinux 0xf71521ba atomic64_add_return +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf75bdb62 phy_driver_register +EXPORT_SYMBOL vmlinux 0xf7719fa8 mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0xf773f0dd twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xf7776930 scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7a83d7c generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0xf7b12aee __next_cpu +EXPORT_SYMBOL vmlinux 0xf7bbed24 try_to_release_page +EXPORT_SYMBOL vmlinux 0xf7ec533a blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xf80280a2 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf809920e deactivate_locked_super +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf811eb10 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0xf81b1b1e find_vma +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf888ffd1 key_task_permission +EXPORT_SYMBOL vmlinux 0xf8982f05 padata_start +EXPORT_SYMBOL vmlinux 0xf899c0ac fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf8a3caa3 inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0xf8a68941 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xf8b0193a inode_only_permission +EXPORT_SYMBOL vmlinux 0xf8dee8c0 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0xf8e2723f scsi_allocate_command +EXPORT_SYMBOL vmlinux 0xf8f005a9 xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xf9097852 sk_dst_check +EXPORT_SYMBOL vmlinux 0xf9237c15 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xf924562b ll_rw_block +EXPORT_SYMBOL vmlinux 0xf92d51ff input_register_handle +EXPORT_SYMBOL vmlinux 0xf9348cbc xz_dec_run +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9bf6bbc tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xf9dd65a0 skb_seq_read +EXPORT_SYMBOL vmlinux 0xf9e73082 scnprintf +EXPORT_SYMBOL vmlinux 0xf9ff2a13 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0xfa390ced tcp_sendpage +EXPORT_SYMBOL vmlinux 0xfa4cc216 input_register_device +EXPORT_SYMBOL vmlinux 0xfa4e317a tty_shutdown +EXPORT_SYMBOL vmlinux 0xfa5f8191 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfad58abb inode_needs_sync +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0b59e7 mpage_readpages +EXPORT_SYMBOL vmlinux 0xfb189817 inode_set_bytes +EXPORT_SYMBOL vmlinux 0xfb1f8018 soft_cursor +EXPORT_SYMBOL vmlinux 0xfb2b6045 rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xfb357285 fasync_helper +EXPORT_SYMBOL vmlinux 0xfb49a608 bio_split +EXPORT_SYMBOL vmlinux 0xfb4ed296 max8925_reg_write +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb793f7a nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xfb798c6f xfrm_input +EXPORT_SYMBOL vmlinux 0xfb7a1eff bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbeb883b journal_errno +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1af54d jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc65459a kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0xfc75d748 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xfc865222 shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xfc8875e5 tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfd0c5038 adb_unregister +EXPORT_SYMBOL vmlinux 0xfd48f703 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd767f83 scsi_scan_host +EXPORT_SYMBOL vmlinux 0xfd8532fc mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0xfd99768c netif_notify_peers +EXPORT_SYMBOL vmlinux 0xfdad740d dquot_quota_on +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdcdd4c6 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xfde39b38 tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xfde9a3c6 __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe176974 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xfe211557 fget +EXPORT_SYMBOL vmlinux 0xfe267b08 register_netdev +EXPORT_SYMBOL vmlinux 0xfe33aae9 free_netdev +EXPORT_SYMBOL vmlinux 0xfe37f05b wireless_spy_update +EXPORT_SYMBOL vmlinux 0xfe38ee80 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0xfe4ff47a scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe65c3b7 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0xfe671cb7 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe76960d __invalidate_device +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed17198 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xfedf9079 unregister_cdrom +EXPORT_SYMBOL vmlinux 0xfee6c055 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff053227 pci_disable_device +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2012f4 journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xff21924a mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0xff5a7775 iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff6dea25 smp_hw_index +EXPORT_SYMBOL vmlinux 0xff7f6930 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0xff931bea block_invalidatepage +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffaae799 cdrom_open +EXPORT_SYMBOL vmlinux 0xffc208b3 mfd_add_devices +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffdb82bc sg_free_table +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xfff089d1 simple_rename +EXPORT_SYMBOL vmlinux 0xfff5d0c1 kernel_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x202ef008 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x3494bd34 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x6f21a21a af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x93957c0c af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x9727a815 af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xbc8367d5 af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xe22e06bd af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0xea6f69d6 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x0c4e0e2b async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xd22f83d4 async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xe1cb833e async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x9bf62592 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xee1c5128 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x473637d5 async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x6ca66ffd __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7e02fda5 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8afb58c2 async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x104e0837 async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xbe47e92d async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0x9026274b blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x15888385 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x69abcc15 cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x89da8ff5 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xbdc2c0f9 cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc42b90ce cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0xd14b8e3f cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0xdcdc8485 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xed357f45 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xfb3ad26d cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xfb88e66e cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x6916368c 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 0xf565ec2c serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0xa5c53997 twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x18461321 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x06c95853 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x11094c5e ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x1ae78ea3 ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x31dcae04 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3d8322e2 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3f3f8194 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x407fe79f ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x57817841 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x650764cd ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x76288875 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x828ebff1 ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x90c0d72d ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xc07a84ef ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xcb0e44ea ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd77dc680 ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xdc584045 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea3dc795 ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfdc8c91e ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x1b66aff3 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x4812a331 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x49be96df 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 0x36314864 bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x543e7714 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x7720334f bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa3ea07f8 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xa8fabbe9 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xab8ca8b1 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xad5b4313 bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xb70ee277 bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xbbab7055 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc28b4a03 bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xcc809420 bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd0de1678 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd6c862de __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xdaecf250 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe341c525 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x138d4142 btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x271324bd btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x333bd40f btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x5f70b1a5 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6beb7e66 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x88cd987f btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xa475c13d btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xad383ec4 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xd66c9696 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xe300e650 btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0760680c edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0f0ee061 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x141948e3 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x26c71cfa edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3530d2e0 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x3c7f2f3a edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x58dcc4b3 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x59e265e2 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x677a5e6a edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x69259f22 edac_mem_types +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6dd5191d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6e3ff83a edac_device_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x901dcc92 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa423ba2c edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb25bae90 edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb77a7ee8 edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc6c95467 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xdd1fde33 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe009291e edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe12bd4e0 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xe5d2132a edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xeac91bf5 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf622b153 find_mci_by_dev +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xffee03c9 edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x21941c8f extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x2cc76d4a extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x3490dc38 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x3ed4cb0e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x5fe1f966 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x7ae1f77f extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x81aa1056 extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8db64d69 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa30fcb8a extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xae317b3e extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xe4a847de extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xf918f443 extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x42d60155 bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0xc0762255 bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xad97e196 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0xcc347abe __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0x992a6288 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xa9a33b77 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x1d6ba390 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xca3003c6 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0xe29c359e ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x04d14c65 hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x09995152 hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0c080e33 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0x11a74e2a hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x17d356cc hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2278a6c9 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e9972f2 hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2fb4b63b hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x40a1eeb8 hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x48d48131 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x4b6b49a3 __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x662fc19e hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x6bb742da hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x743ce7f6 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7530fc03 hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e36adc9 hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xadde2935 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xaee3f290 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb53b673d hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc907711f hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xc9625631 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcb529bd4 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc445da3 hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xd7afc44d hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe813abbe hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xed768c5b hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf33781ba hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf3750f49 hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xfa99892a hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x0d439806 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 0x121d350f roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0xd852f35b roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x413a6137 usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xa12f0ebd usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xb2669c58 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0xd6bfbaba usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x12e63c09 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x13d19fdf hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x25964025 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x356f1e0d hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x73c112fb hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x9d5859ec hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa4714e2d hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xa92d44a0 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xaaedba33 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xabe27e91 hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xbe9b227e hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xc892176c hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xfe38c348 hsi_release_port +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x18d3d728 i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x19a420a3 i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x3080eed5 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 0x5c6aaef1 i2c_dw_disable_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x98c95aa1 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xb068962a i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xbea91898 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xda69d5d3 i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xf37e2fa7 i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x30d11db3 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0xf864c7d5 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0x7e1ad437 i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd27d0338 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1eac82ca iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1f81f82a iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x21e4cd2b iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x349cd2ac iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x4caf2554 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x5ed4e685 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x6bc7aec0 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x72f59254 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa55ea155 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xa5d12013 iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xc633f86c iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xced7d467 iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe49ecea0 iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xee033f43 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xfb326c65 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x93d941b8 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x0465ed53 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/cyttsp_core 0x51c3be4b cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x540cb317 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xb48bc9c1 cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x076bde4d wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x08293455 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x0a0c61c5 wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1597290f wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x259d76f9 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x72b4a6c6 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x735c0e57 wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x73eaaf58 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7e5ddf39 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xa9a5f92f wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xae2d58f2 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd93d2991 wm9713_codec +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x05fe1366 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x0e902a6a gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x101b6805 gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1b246341 gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x1c98e2c2 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x2e15f771 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3fa2a212 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x612095e1 gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x6d968a88 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x784b7009 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x7c8a0f4d gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8eff32df gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x97313205 gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x9893ce2b gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb07ae3f0 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xb425e8a0 gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfacfcde8 gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfeedaea8 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x014b22e5 wf_get_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x183ae4c5 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x56c8dfdd 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 0xa0518c94 wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xa2f19a49 wf_is_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb68ed81d wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xbe3fdf1c wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xd8d6073a wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe194815c wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xe60529fb wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xf2e3574e wf_find_sensor +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 0x87f7441c dm_bufio_client_create +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0x9b2b253a dm_bufio_get +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xa82b2066 dm_bufio_write_dirty_buffers +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xc9a3422d dm_bufio_write_dirty_buffers_async +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xd4bddf5c dm_bufio_issue_flush +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xdc69e37a dm_bufio_get_block_number +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe004ee92 dm_bufio_new +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xe6024e59 dm_bufio_release +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xebcc64a4 dm_bufio_get_block_data +EXPORT_SYMBOL_GPL drivers/md/dm-bufio 0xeca7949e dm_bufio_client_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x4e2eea43 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x7b274ec9 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 0x100a7a59 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x5180048e dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7478a61f 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 0x8d35c5fb dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa83588eb dm_rh_recovery_end +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa8813ad6 dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbe38a431 dm_rh_recovery_prepare +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xbfe9d5e4 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xc66ce277 dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xcab63c3d dm_rh_get_state +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xdfea355c 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/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +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 0x1e3f728d dm_block_data +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 0x40f7bd91 dm_tm_inc +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x61c7c085 dm_tm_create_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 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 0x9b4b5b29 dm_bm_write_lock +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbaa513b0 dm_sm_disk_open +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xbc5fe7c1 dm_sm_disk_create +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 0xca2bde4d dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xccaeb9ae dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd163cade dm_tm_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd32479bc dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xd9f6bf8e dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0x97b5308a md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0xd9a1346f md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x0faa5a70 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x28cadc8a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x31a0ec81 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x4d8fa7eb saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x4e453428 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x51ef5dc2 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x7e59bd71 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb061213f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb0d3f46d saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb102772e saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xc44d4c26 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x05940455 saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x0780c1ff saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x2c577744 saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc323beb7 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc951fbb2 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xebb15643 saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xf24f044d saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x369c7a9b tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x484e7d0c tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0xf3c6bb22 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x0f71f336 microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x33c8c10e mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0x3eda2f1e tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0x480de0f9 tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0x438474f7 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xfa7d086e tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x37f7d000 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x0e325154 tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xaa612144 tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x901933dc tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xd4ccbf78 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x4a3b1327 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0x8637b0fb mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x573dfb9c mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0xc0c2a2e3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x0b5ce44b mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x141c742c mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x198e13b7 mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x30b7a585 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3f285983 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x427b4542 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5f7aafa3 mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x67bc2ca4 mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x7a5aad45 mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa6c74202 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xa7d7dfcc mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xbabd8cf6 mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xc513fcf0 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd5596515 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xda6fa795 mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xde619dc4 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xe3b5b6c4 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x05bb010e sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x0ff38764 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x31270f88 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x3452f123 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4d01bbec smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5497a4e6 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x5d5b94c7 smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x63222b29 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x65f64d2d smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x674fb5b4 smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x70226bee smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x751b9507 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9cf403c3 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc0fd717c smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xcc96128c sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xce559f62 sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xde833f57 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe7a5f57e sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x03604694 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x08026569 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x09109def ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x28e86180 ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x76ebbe1e ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xa9507ab5 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xd3838fe2 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x04c63ab4 ir_raw_event_store_edge +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x19b00628 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x1d310591 rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x4a41450b rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x50d86af1 ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x553efb91 rc_core_debug +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x561d7ba2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x6e74633d rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x735b3c84 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b9783c0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x83154e1a ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x86edbe19 rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x96a961fa ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xa6380630 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc374001a ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xd0cce883 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xdb1c26f8 rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe1cb2de0 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x04c10dda cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x0ef3ac0f cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x1433be5a cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2248684d cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2607ffd8 cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2af80e7a cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x5cd1b36d cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x77f60084 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x7d48cbcf cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x85d6ae58 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x86ddebb0 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa02f426c cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa2727d6a cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xad8f47e9 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xb53c883d cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xcf8a5133 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe68ab617 cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf387c343 cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf402285d cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0xbff870e9 cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0a562d36 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1f616915 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1fab09d0 em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x41577476 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5a880f7e em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x632a3e4b em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6572fb66 em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x73e31b19 em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x894a3aec em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xadf7cf13 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xbb426994 em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xdd36c7f1 em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xf6478180 em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xff5e9ccc em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x2d8355df saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x420877b0 saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x4b537141 saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x4e2ed7b4 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xf0d8e72b saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x05bb14b6 tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x401aebf3 tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x430f0973 tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xd193d297 tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x6b9b8f95 v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa90fad82 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xbefd5c29 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xecace95a v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf15480fc v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xfd612bd7 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x50fc8254 v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x6a2c983b v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x92ba7914 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xc2442b00 v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x12484e05 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x164cc77e v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x22388d7d v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4f6c85ac v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x6c074422 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x89db8c8d v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8c3818f4 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x9daee823 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb8897799 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xcb7dab00 v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xd2a7e28d v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfaa3bc6f v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x00f3719e videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0db87a1b videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x13af55ca videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1db57de7 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x32279889 videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x336c532d videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x349b9faa videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x38b6453a videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x3d7436b7 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x43159530 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4abb9978 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x5130b549 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x52ff2a46 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x68138ef0 videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7aa5d511 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x8fef9856 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x97b9bea9 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x99ca0194 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x9cbd48de videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa84cf7da videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc5a4f0dc __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xdd6ae8b3 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe7f25659 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf6ef9d88 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x58d2600d videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x5d34cf4a videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x656b189c videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x68d22159 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x134cc88f videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x2981ff4a videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x384ec0fb videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x488bcc81 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa2d4bbc4 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa825c75b videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xafdc39be videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xd89bd33d videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xeccdc1f6 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xfddbbd4f videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x0e0ba84b videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x7eea2a8a videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xacfe23cc videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x01bf6687 vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0af446c0 vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x245055d7 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x33fa8eb0 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x4b6a0d6b vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5b8a8836 vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x699713b7 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x7bed2150 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x882f4594 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x8ca45b6d vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xa79e0e1c vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xb31e9f22 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbe70b4a8 vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xce4fe128 vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xcef01e59 vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xd17bf501 vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xe7e2fd3d vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x7d4dbd73 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x9d7fc7cb vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x02f89c12 vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x498891e2 vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x8ed759b2 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xb2b58518 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xb89cce35 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x14b82d64 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x00b97b06 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x07c374d9 v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x2505355d v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x342d952f v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3e0df0a8 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x58546fd7 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x647c1d92 v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6510b2b4 v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x748e35d6 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77897186 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x91801820 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xaf7ee499 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb10eb1ef v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc6cafd35 v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc71bbbbf v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xc7dedccc v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd107e59c v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd5df5cfa v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdc517e33 v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xdda106a0 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xe624797d v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xf2bc472a v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x064f1cba i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x1bba258e i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x22214d37 i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x2e164e49 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x460f7302 i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x784ad502 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x866af420 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xddc97b32 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x046fdad8 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xc169d95d lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xff0aab85 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x14ae6a5f lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x4e34b8d6 lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x59a77f52 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6c56c10b lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa1a5c09c lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xad93c115 lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xebdca387 lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x05c3e8db mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x71ad4d6d mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x9731147f mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1055d91e pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1237199c pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x1328f4c3 pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x2f025fd2 pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x532785be pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6eef8110 pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x7f9009d6 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x8fba3d76 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9a97657c pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc4319274 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xeb0f7a5a pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x37edbdc0 pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x54db8a17 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x675ba71c pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x9706d99b pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xb2376d12 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xdf6b0203 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xf010bb48 pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x10945460 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1aff2a09 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3907f9dc rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3b116562 rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x3cceeb48 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x430ff39c rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44e9ca09 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x53a93b4e rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x55eef814 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5dddc2f6 rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x66bf6efc rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x67350329 rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7dd14259 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x87dab2ba rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8e2ac441 rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8fb7dc6d rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xced909f3 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf0ae0de9 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf847523e rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xf910bc7d rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xff9b79a3 rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x14bcad62 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x45fe602f sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x85845bde sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x8d28fb7d sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xe8567b68 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x3913ef6c tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x7f41ba23 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x9f9a36a7 tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0xfd02726a tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xf3cd73cc ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x1e7af848 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x255f9175 cb710_sg_dwiter_read_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x38d2dc05 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0xf16b354d 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 0x0275d3cb enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x276d0c12 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x3802a729 enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x4c6916f1 enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xaf3fe8bd enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xc6b1ddcd enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xd68e4cfe enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01bb94a5 lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x362da46a lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x36ca54ef lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6d6f3f5e lis3lv02d_remove_fs +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x9733bc5c lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xecfef0d5 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xfc250a10 lis3lv02d_joystick_disable +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 0x4c88299a st_unregister +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0xc3938097 st_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x29f716d9 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x45d3da7e sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x484b261d sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x73b1926e sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7f0378e7 sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xaf7c3d2d sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xd6e9a54a sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xeffc570b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xfd41bec7 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x5b4281da sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x830441c3 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x9f1ad064 sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xb143832f sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xddf02a88 sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xe790c3ab sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x1ac44e5e cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xbc5e3c47 cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xe3ba26f2 cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x21f0a888 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x9e389de2 cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xceffc5f3 cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xc5401124 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0a73ff84 cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x8d471546 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xdf6cf633 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0x77b27f77 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x150056ad mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x17cd0159 mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1be0537b mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x21f9575a mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2240baad mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x26b4a9de get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x312375e0 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x32445a18 mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x35854531 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x36ec2e30 put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x472ac4af mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4c759e74 register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x4da5483f __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x5432b497 mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6431295a mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6721524d mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6838770d mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x6f197230 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x720b9c9d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x758df218 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7e7fb014 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83ef8a3c mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9866ed97 mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x98ff3c98 mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9fdd4a4a mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa572ad42 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaef5615b mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xaf90beed get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xafb06536 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xba1e939c kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbdde8b26 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbf7def5e mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc3c60473 mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xc85a4096 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd2d10cb2 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe06e0fb0 __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe89dc8ee mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfb0e7235 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfe635dbe mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x26515a77 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x68f7dc74 register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x9647bd21 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc22d56aa mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xc70525b0 add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xa936c213 nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xfa1dd12e nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x65be3e14 sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x00f92249 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x1e9dd25a onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x17913683 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 0x52ef8711 ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6b86f4c7 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x70f876a0 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7337cece ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x74fd9504 ubi_leb_erase +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x82af55a5 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x8ced3e3b ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x9968b486 ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb250f293 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xca9c02c2 ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcd44d5c0 ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xdd851c45 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2100fc36 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x45f68afe alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xa6519ce7 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb1339d4c free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x052b3fd8 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x2f0ff289 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x3cf4c59e can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x4155b1fb free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x5056ad96 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x515d9a82 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x593cc782 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x972d28ff open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa1cc9f8d can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xb515fe09 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xcdcf1fbf alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xd87c30e8 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x2d74f390 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x587691de alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x74b7f001 unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xa108189f free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x08fd7a0b free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ee626a unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xa9bde3ff alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb8bdd148 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05044ad6 mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0e5ba968 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f64fd0e mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0fcb02fd mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x131a6119 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x163a5ea3 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1842e70d mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19fce1e8 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1c2d623f mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2840d5d7 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x294b5ca2 mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c60d41f mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e5bf099 mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x32f602a5 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3cdc35c8 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4058e330 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4398840d mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x506e0e04 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x547b8c31 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x555269b8 mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55c1a0c0 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55c34816 mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58a29e87 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5af0d663 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66a7088f mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6763ad62 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b2aeb38 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bf4770d mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ea558e7 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x72e04e35 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x752a4993 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x755b6328 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x778a0d37 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b565523 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x82066b62 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83b04e71 mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x83bbc868 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x88d9a811 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8ba96380 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cbb167d mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9400de3f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x982627e8 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ab30aeb mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9b9c6638 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa108d444 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa190fa25 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa55f1b3d __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa78a77c7 mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa80a4c98 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xabf96169 mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad7851fa mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xafd74e26 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb0d40695 mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb371039c mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb7332191 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb79ff42b mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8cb9444 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb1ed8cf mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf156f6a mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2a433dd mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc39d0a99 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce15d44b mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce248b20 mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd4ffa541 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd7061165 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb532e67 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdb5b2a19 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdf011caf mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe223e8f1 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe2de98d3 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8020ce4 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef879537 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfac67990 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfd7d6a41 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x4182252e macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x660e3d1c macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7cb043c2 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa5c6b740 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xac46aea9 macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvtap 0x76a8f4d0 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xd190631e mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4fd84e38 usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x5161fbac usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x6bd2a683 usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x842b6cde usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x170ca64a rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x6d1be570 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x947c1d08 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x9ac29218 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd8a59196 rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xeb3919b4 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x013012b0 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x0d92b689 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x175cf5b8 usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2341ce70 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2c58bb09 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2eb498b6 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3baf2d33 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x683c325a usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x6a1fdd49 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x735e5de5 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x774357e1 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8af3a914 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b3c371f usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8ec22902 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9273fd01 usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x95fb6a81 usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9b499956 usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x9d3cec0c usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xa2c64d5f usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb16b6154 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb4a858fb usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbe3e47de usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf4c7b9bd usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xf7c0a2da usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x070dcec3 i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0b57bd6a i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x1f722731 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x3140f32c i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x349de18f i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x36ff2620 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x65e6dbe5 i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7a5be528 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7c7b7914 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x94331773 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa0fb7e78 i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa2b4f64a i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xaa13638c 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 0xc9fdc53f i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xf36fd1b3 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfca6db52 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x8384278d libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x2d44ce4b il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6640fde1 _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x6a76f6f2 il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8e707326 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xe62cd261 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1407b288 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x53c9163d lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x55efb42c lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7e5325b3 __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8c78d292 lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa46eec8a lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa517410b lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa6a85089 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xa6f246f0 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb922d850 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb9ef36cb lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xbb774f35 lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc245c968 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xea65942c lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf2d3fec8 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xfee580d5 lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x17af4f18 lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x25d27fc8 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3b33255c lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x620325f7 lbtf_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x6f98b27f lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8bb8809a lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xbd4c4a12 __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 0xd9d41ae6 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0x334fbe0d if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xf0cbe5cc if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x0597ddbc mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x1009a965 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x164f1285 mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x4357efe4 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x52454d55 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5ba04c82 mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6b90f320 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x7adf629f mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x8bd55eef mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa65a287f mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb25d9b24 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xe1fc8bea mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xee1d9a7c mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0642a3fc p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5ac12c64 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x5f283f83 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x61b6c55f p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x66cb84ef p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xae05c607 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xb6a4d43d p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xc4aa60a0 p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xccd44ef4 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x10d546c0 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1cfd861c rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x23e4e47a rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x311276d2 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x348260b9 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ee3dbdd rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5306161d rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x57c3e3e5 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x59cf0779 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x59f6f891 rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x628dc6e7 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x689ce3b6 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ac63d44 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6d3552fa rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6ee2eb3f rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x73aeac3c rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7556ef98 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7c64222f rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x90df334e rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98040918 rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x98c3d606 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x99e754df rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9a5acc08 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9bc572f4 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9e99bddd rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xa74b70eb rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xadc3db8a rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc0c24e72 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc2f6da73 rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4de1fb7 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc81f192c rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc3061e4 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xcc3a442b rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd9dfeb15 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xda94810f rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe33679f0 rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe3610aaa rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xed716167 rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf423483a rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x017789b1 rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x044daa44 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0aa94378 rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x121cd3ed rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1e38ef2e rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x27c1c937 rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2ab1e1ed rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c73967c rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2f7172a5 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x324957a7 rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x34a24bdf rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39667d8d rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3aa117b0 rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3b307cb7 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x428798de rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x500dd287 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x52b81ee2 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x58bcf756 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5b7c8273 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x62a656f9 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6f9db5db rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6fb5b6c8 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6fea6625 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7dfac47c rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8395fc4b rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8a82c4d5 rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9a1b156f rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9bd9e5ad rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d33d93d rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9da29744 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9fa17d4e rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa65f2a5f rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xa67cbebc rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb36f1181 rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb3f3f658 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb7c65d1a rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc09d3079 rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc1edc23b rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc3469dea rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcae617db rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcc6d317d rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd1b23c0b rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe14f6e0b rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe457964e rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xef2810bd rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf4480d90 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x6c2639f0 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8d6de3f7 rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8f067af7 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x92250fad rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xb1f8e2ad rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xcee0b729 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe080f5c6 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe5180424 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xe82a1961 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x295a7cbb rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x358b9811 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x3eaee68d rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x55bae960 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x59693d36 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x5a14f53e rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x7e6322ca rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x8f6a30cf rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x938d43bc rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9881635f rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc0151510 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc1dd649d rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc96d1795 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xd1fe8fb1 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdb5aed64 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf6c483dc rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0x03ed915c wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xa1cf4d39 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xcc44afe2 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x072165e2 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x100ba6d2 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x178f5f9e wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x1dbf8bc5 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x58ce1334 wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x5d25f9d5 wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x623288e5 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x70c046ca wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7508d324 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e8a421e wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8b6f942f wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdabfebd9 wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea50a381 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xea853cf8 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0x14d1560b pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xb9ad2283 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xd42a0128 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x0290b2c2 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x1176f86c mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6aa09686 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x6bb7e236 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xae44ca82 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xca5dde41 mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd2903467 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xed3cfc12 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x30a29d15 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x784eb0a7 wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x927a47a5 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xa65c3572 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb79ffff2 wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xed94ff87 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0x475aa66f wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x020c8909 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1153bad4 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x14833ded cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1c8c0c7a cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x20dc4ac6 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2795bc2c cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2f697c72 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3045d011 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x34ab87ca cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x354396a7 cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e2c2c8e cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e2fe1ae cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x45c9f100 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x46df24c1 cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4bb5fae8 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4de14479 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x54f19fcb cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5822e4e3 cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x59be8164 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x60365813 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6cab6441 cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7368de3d cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x775d73bc cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x82ef769b cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x83ccd0ff cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x84d1a7ea cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x874993a4 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x91897655 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x95af86de cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9d4669f0 cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xae096349 cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbaeea1e8 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbb37a367 cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbc031bf7 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbd45af98 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xc4856685 cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcef75c6f cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcfbff540 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd65c4a99 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd6b890cf cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe4f225d6 cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf35a0253 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf401733e cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf96271f4 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x593a36c2 scsi_dh_handler_exist +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x5a957070 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x610b675a scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x865e9cb7 scsi_dh_set_params +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xafe9f053 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc640547b scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xc8debcff scsi_unregister_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0faaaf0f fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x0fb51275 fcoe_queue_timer +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x1ec832ac fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x2b279264 fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x374c1e1c fcoe_wwn_from_mac +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8a7a635d fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x8f7c0f6b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa19b550b fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xc412b4fb fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd4172696 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd6f17d13 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xd8e009e7 fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xda3a2bfd fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xee9b95a3 __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xefab97c1 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x1102738f iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x209238c3 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x27ba8551 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x992c8cad iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb943f47a iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xd69649c8 iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x002e6778 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x023a1a35 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x02847a4e iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0407aac7 iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0c665a21 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0e996de4 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1968c794 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1c63a330 iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2488f954 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x250c0242 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x25792351 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3140ca7c iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x321179be iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36d5b64b iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37130e0d iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37a74c34 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3e765994 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x466842e6 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4b909f80 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x50dac866 iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x586107c6 iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5f0eb7b2 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x68c85461 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x756a9627 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x79575328 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7db42534 iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d8f7232 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9caa79cc iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa37ce02e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa72ef57c iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa897fedf iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab83c735 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab8afdb0 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb105bc96 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc3facc3 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc014c5b7 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc777c041 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcc9eaab2 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd7234617 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd956d475 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0f8c4dc iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe22eefcb iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe888287f iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x2af4b9ba iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3a699317 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x3aa6ea31 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x40141d68 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x42057458 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x45ddebb8 iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x52baa6b5 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x57f4c565 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6f3062b7 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbd82c93c iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc5ad9853 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd89ef4c9 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xecd1f94a iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf09c0a19 iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf3811baa iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf8a76046 iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfec95070 iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0764eb44 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18bb4bc2 sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32d669a3 sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x42951a34 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x64fabce7 sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x73952252 sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x797727a5 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8b75628c sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x95ffd198 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa0939341 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa90dcfca sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xad69f4b6 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb0a6758c sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xb7ecd43c sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xbf55bc01 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc80a4c4a sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xcb925e71 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xd58b02a8 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xdcdf9f8b sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe2426c2f sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xec2486d1 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xee9b8af4 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xf37949fc sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x59a42551 srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6d6b80d0 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x70a5bf59 srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x85a875a6 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xafdc7e2b srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xe32cadd4 srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x0472e357 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x1fa95c36 scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x93642a85 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xa352b29d scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xab8b9f08 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xcd9601f5 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xdd6d46f6 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xf229fe9d scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xf25ad261 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1af82231 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2865aa0f iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x320a2292 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x41121f1e iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d474ea9 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4d7db997 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x51e5ea2c iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x60b78ea4 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x630c9def iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x69369e9d iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x776ac6c4 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x81038640 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96734acf iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96db6519 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9ce2b9d9 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa15da914 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa5e868a5 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8674009 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xabd2d310 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb32cc74e iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba78fffe iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8a41145 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc97b8023 iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0a15687 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd24c9926 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdccf2ab6 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf50ff8a iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe3146ca1 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe497273d iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe6e6b976 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe7c709c7 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xecf252c9 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x30daa33e sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x43f791e8 sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x7df0fdc9 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xdb0ea35d 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 0x3af105e0 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x43fd3616 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x45844b04 srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xa4855eb6 srp_rport_del +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf6f8933c srp_release_transport +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x0638eaff spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x075ba653 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xc928c80f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xd36c3678 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe875ed4a spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xea373f25 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x5ac4f61a dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x6250425e dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xa4825ca4 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb666eb89 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xdc44d6d3 dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x9334e3e8 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x42669530 ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5610a89b ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5ad9d894 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x9000551c ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xbda79488 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xddb71564 ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 rts5139_usb_ids +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0b4f5847 spk_synth_flush +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0e81c76d spk_serial_out +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x0ef1d765 speakup_info +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x14f06fe7 spk_serial_in_nowait +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x7822626f synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8fbeac98 spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x98413438 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9a888082 synth_buffer_getc +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9e5d02ac serial_synth_probe +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xa0224e9c spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb35aaab9 speakup_event +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb48956f8 synth_buffer_peek +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb73a5748 get_var +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 0xe177354b spk_var_show +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe2428175 synth_remove +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 0xed7fbd5f spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xff560f1f spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x04653c99 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x0942ce9c sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x4f4b1f53 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x66faacac usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8174664d usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x8f8dbf46 usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xae734926 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xb3ef2d3a usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xce82c69c usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe12a35db usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe75e5c23 dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf9bc5f34 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfe29246b usbip_recv +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x0e90402d serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x25a403fd serial8250_clear_and_reinit_fifos +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x6e6ee90e serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x7561a86f serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xf220a185 serial8250_tx_chars +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/tty/serial/8250/8250_pci 0xfbbbec3b pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x0c74f058 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x2885e43d max3107_suspend +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x4ad6a2f6 max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xd35d5098 max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xe82ab4a2 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xf56d6cc9 max3107_probe +EXPORT_SYMBOL_GPL drivers/uio/uio 0x4243eba6 uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x709f5dc0 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x91919c89 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x7ce1513b usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xd81b8522 usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x0190e4bf usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7ea78a40 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xda83c3a0 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xea7a7a78 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf1c570ec usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xf6c0d7df usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x4246b988 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x74ff2268 usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x7c44dde5 usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xa03d925a usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xacb42c8c usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xae28c786 usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xbbcc08a2 usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xd6aadccb ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xeae7e0ef usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0xd5a61190 musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x649a1504 tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x3bd21f35 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0fc5dac9 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x196e9322 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1a07b523 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1f7c5954 usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2b0ce3fe usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3950924e usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4ba921c1 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4c98c250 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4dda3951 usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x68767fca usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6bc74d5d usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6c6bd818 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x758f7ba8 usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x7e45c19b usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x809e60b0 ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc032d3a9 ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc3902d4c usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc70df93b usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xd6e58230 usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x146a744a fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x150be445 usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4387d7fb usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4391d935 usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c47cc3e usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4c6d33af usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4f8c2fe4 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x56068c06 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x65688a27 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x674cdf7c usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x680ef8f9 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x68ed3b7b usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6928cee2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6d163aab usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x843e29eb usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9b7c6ccc usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x9d182d27 usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb5fb81d2 usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xcaff336b usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd90d81b6 usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe3841970 usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe4c34ca0 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x31d61ebe wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x418632d0 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b5a88b0 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x9bdd0c06 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xbd610f24 wa_urb_enqueue +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 0x01acf39a wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x04c0cb83 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x10d991e4 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x154f4d3c wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x1c83504f wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x28fbfea0 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x33bd549e __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x4240a6cf wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46e203ef wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x63685002 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7fb52859 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x807da3c0 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x9dd3cc4f wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb5f23904 wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc05e4700 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xe3664c23 wusbhc_giveback_urb +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 0x790ad472 i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x8fb700ca i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xc6cbd8e1 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x01cf71a6 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x0e5bdca6 umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x4718cdb3 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x5c51faff umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x62a8d190 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x96c313cf umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xa8b3e5ff umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xfcae0904 __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b8aad57 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x10e65700 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x14703d1f uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x21235636 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2402c8ae uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2895b351 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x2e4e3da1 uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3171b50a uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3aa1ccf9 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3c759c1f uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x46aa0ad8 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4dfb1651 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x541eab12 uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5b3a2afd uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5bec8efd uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5e4bc088 __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5ffeadaf uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x62af5974 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6a9f684d uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6d1914dd uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7200f7c0 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a06edd7 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7a38ea7d uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7c5f0369 uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x7dcfcd23 uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x89b132d0 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x9f824869 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xabdc9f89 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xacbd81ac uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xadcbeba1 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbb57834b uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbd035671 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbeaa1cf8 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc3c30883 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xd4269732 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xdba004bd uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe1716f06 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xec32c015 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf1a5e637 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf682bc44 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xff39387d uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xea0b70b9 whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x0c36c2e0 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1136b7f0 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1e378a94 auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x444aedeb auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x687f583a auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x87399dbc auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x8c9e2da0 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbef892cc auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xc94efdf8 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xe78ed6f3 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x26ebe128 ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2e54ce14 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x510b6896 ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x537cc16a ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x69efc0b6 ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x73292ee5 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xbcc54ea4 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0x378d09ef fb_sys_read +EXPORT_SYMBOL_GPL drivers/video/fb_sys_fops 0xd44009f4 fb_sys_write +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x6346cdfa sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xefb5e1a2 sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x5079a67f register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x5b33bc46 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x791efce8 virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x99b39956 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xc51ba0b5 unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x0c97cfe8 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3b536c56 virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x3e9809a5 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x4aff1ae8 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x57b9a23b virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6c74c67a virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x783fb7c2 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8aaa64ec vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8c7b5d64 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x8cb5272a virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xad0156a5 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf418901a virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xfce22b46 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x46ede006 w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x5bf21245 w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x6417facb w1_reset_resume_command +EXPORT_SYMBOL_GPL drivers/w1/wire 0x689f4b6b w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x92c8a111 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa152eff7 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd3ba5ad1 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xd6a98850 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xee8db256 w1_touch_block +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x6555833d dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xa0c87053 dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc8111a95 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/fat/fat 0x03251cbd fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0x1372813b fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x161689cc fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x19054615 fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x198ff4a1 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x1a1c97fd fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x2d46cc81 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x3b1c823e fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x4138c29a fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x508ae1af __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x9d5a58a4 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0xa8d60b77 fat_sync_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xb0ffbef5 fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0xb6883288 fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0xb97b577a fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0xc8fce104 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0xcdfea3c1 fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xe9340389 fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x03ff2f18 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6d25da73 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7be689ef nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x92ce9b7c nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa1ba06ed nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf6cdc816 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf6d33383 nlmclnt_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x064dd0e1 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0a44c0ab nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0ac79311 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0d7e6f67 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10d13faf nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18aaedf4 nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1dfc4459 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2195c1a0 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x281beead nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d965aac nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e79d05b nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35c831b1 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x360e4dfa pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a169e07 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x472d0b48 nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53877122 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5d6bbc0a nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x69225e49 pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x710ce9f1 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7705ec37 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7d0673ae nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x860bc7d5 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f452aec nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9066e3d7 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x92e80500 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x931971d4 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ce497c9 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9fdf6405 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9d91642 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaddf9436 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaf7ee3f4 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4c32c6d nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb645daa4 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd4b5299 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc577e990 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc90fa908 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc95a949a pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc72c9e9 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xceb5258f pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdcac22c6 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde9cf98e nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe581ede3 _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xec2d1b59 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf41d66e1 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf461a414 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7241cb2 put_lseg +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x132d1d6e nfsacl_decode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x7e583f10 nfsacl_encode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0a6cf72f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x14194094 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 0x36418553 o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x457a5ce9 o2hb_setup_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4e4a6d05 o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x615c31ed o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x687f6251 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9ace6ac7 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa82a8645 o2nm_this_node +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa9f5379a o2net_send_message_vec +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xae808bac o2net_register_handler +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaeb4700 o2hb_check_node_heartbeating_from_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 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 0xe6ca96db o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x24773f25 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x6fa49e01 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8672ea3d dlm_register_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xa755a5ef dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xb54acd8e dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd1e77ddf 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 0x31557c37 ocfs2_stack_glue_register +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x48c0388e 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 0x574981a3 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 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/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 0x0460041d garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x425f54aa garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x5b8c948e garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xbc251a12 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe25a19a5 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0xf2eb8cd5 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/stp 0x1c9909c7 stp_proto_register +EXPORT_SYMBOL_GPL net/802/stp 0xe2371ff0 stp_proto_unregister +EXPORT_SYMBOL_GPL net/9p/9pnet 0x1af671fd p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/9p/9pnet 0x9e57fd11 p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x687a0189 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 0x5fc0623c bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0bad4676 dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0ddeac76 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x13fa2397 dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2498146b dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x283f9eea dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c795ec0 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3593ab38 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x39d1e72d dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4b1d924a 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 0x54475e87 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x568c974b dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5c256a27 dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5ff91975 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0x68b53ef2 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6c0c58cd dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6d51bf2b dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6ec67393 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0x71ce2998 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0x72161667 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74a7d1cc dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8980375a dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8b9d4890 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa82b65f1 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb24f0bea dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xbbec8db4 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd065ce4c dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd746711c dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdb14c142 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe4cf7f51 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe7947fc8 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe92968be dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf56ad5d6 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf6819a50 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfd50428d dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x47a6a06b dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x67608092 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8c5bb5eb dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x96c3e353 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xafb193f2 dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc5cab071 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1c94b003 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x730bc740 register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0xb3942317 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xef7bba1c gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3094137c inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x796d3e7b inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x98e244a8 inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xc62e6568 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xcb5f5bfd inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfeffbf44 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x2037a478 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0xc4c03ee9 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x6d40a921 need_ipv4_conntrack +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x842aae7c nf_nat_seq_adjust_hook +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6b6c3d10 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x101a7726 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x47917265 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x9127f1ed nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xb33240ef nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xf3c71cc0 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x1c821ece tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb0f70ba2 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xb9f2da1d tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xc2fd70c6 tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xf5e34bbe tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x19e1e931 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x0b90d9ab l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x255e02ec l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x2b16757f l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x309be820 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x3a8602a1 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x50cdc4e2 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6aeaa213 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x817ccd66 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbc978e92 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc563a90e l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc5ce6a66 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe5c7a520 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0083a6de ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3e8adf8f ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5da12588 ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x819c58f0 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x9922521e ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa843c2a9 ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xac7f6fd3 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe954bbab ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xf04fe555 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x01c1ef3f ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x08d341f6 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x59e885a7 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x60332ed7 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6344eaf6 ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x76884195 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7f71e4b1 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa5658d96 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb927c2f8 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf89da442 ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x6c4e337d ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9b05fb09 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc7a33db0 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xfe35adb9 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02add06f __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02e0af34 nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0b78de98 nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x17d91b7f nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ad8c8bf nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1beb2e8d nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1df34033 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e39332c nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1e6dc240 seq_print_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1f8a99d9 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2479cd16 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2716e82d __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2efdbcf3 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30d6cdb6 nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x31d00dcd __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x334259d6 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x391d643c nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x396dd4fa nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d656354 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x412500b7 nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4202ff0e nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x47db9fbc nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x494d2548 nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b331aff __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4e14bc5c nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4ef65cc0 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5110ba09 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52f72d29 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x560e3d64 nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d5b91a7 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x63f01d77 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x645645a0 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x68cf88ee nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6b723687 nf_ct_expect_find_get +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 0x72d8fe1b nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x78f9b710 nf_ct_l3proto_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x86188d3a __nf_ct_expect_find +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 0x92d37d30 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa35d4477 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa62b7db2 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa9ddedf9 nf_conntrack_free +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 0xad4091f2 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb093a6eb __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb20822af __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb4b55e47 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7122ff4 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb82ed2d7 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbc558fe5 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0e4cce2 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2b10eed nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc38d4988 nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc4c09662 nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcd6e2c57 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf2808c6 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0bc8bb5 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd169254c nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda55b695 nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdc8b0fde nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe2d1e9e4 nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4e86abd nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe64c2009 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe863d417 nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xedc9fcaa nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf55f80dd nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf79d5dd1 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf7e86cd8 nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9b39e356 nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x2de5e156 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x68312445 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x0ef5d220 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x468043e9 nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x49576035 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x627ae010 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7723beac nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc1704718 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc3df1c8f set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xeb127a7c set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf8427e5b set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xfdd14aa9 get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xa57c0bca nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x451a4cd9 nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x98a52418 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xe6da6b46 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xfa4f1417 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x28bbf129 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0x4d3a2ace nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x211db36a nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2fc303af ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x383a7af9 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x469bd01e ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5e9da34e ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6b5b0df8 nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x854dc0ba ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x86e76991 ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xa89a34fc nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb69ae58b nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xcf286b43 nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xe50f9164 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xf8973b21 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x6f43fd58 nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x4afb73e9 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x32e5b53b nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x03c973e8 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x6167b892 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x74a26c5a nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc03b5a09 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfbc2e77e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xfe04ad5e nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x9797c160 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0xf8ea19d7 nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1f3805fe xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x48e015f7 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x578fba05 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5e799b52 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x60628cf2 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x68336240 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb2a31252 xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xb4e2651d xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbdd13a4e xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd11aa1d3 xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe7428074 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf9a2f9ff xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfdc43916 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3e1dd4ab xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x9a303feb xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x0188c282 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x2c5c5514 rds_message_add_rdma_dest_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x2ec3ad06 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x3101936e rds_message_add_extension +EXPORT_SYMBOL_GPL net/rds/rds 0x382dbb4a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0x3d8b5a9b rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x3f65d2f2 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0x4622b59b rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4c67f771 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x58a6acc4 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x595e81e9 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x5ce5a298 rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x5e5b31f6 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x667c6634 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x6df981b1 rds_conn_drop +EXPORT_SYMBOL_GPL net/rds/rds 0x70a2f5ba rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x81b0ed1d rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x8f3cb39e rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x93bd0e3e rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0x96fafe85 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xa87ce147 rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xb40509fa rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xb9324ff3 rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xcf031c11 rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xdeb64367 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xe3d32198 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf274a9f8 rds_inc_init +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x9423218a rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0xd5cf8029 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 0x0909e849 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x2d0ab88b gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x3af1c2c1 gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x458b2e1a svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x49fea810 gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa112bbed gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa3b7350d gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xaba47c46 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 0xde93def4 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8b2ff6e g_verify_token_header +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf8c26d42 gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xfca96b08 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0048783a rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01101cb5 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x012463ed rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x02673f9a xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04b641d5 xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e14369 svc_drop +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 0x06ce9b3d rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x071af34c csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x086364a9 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x093b7b3b cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ab214c1 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0c0bb57f rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0efb221e svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ffb94f9 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x113a4ab6 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11a8efc0 svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12c0f652 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x14eda512 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x164d0b6e sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1a3bd405 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1b792881 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f1c841d rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f4a7b28 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22acd3b4 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x231e2624 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2608c7d3 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x271a2c0e rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x271bb6b6 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2811be27 xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x286ad44b rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29facfc8 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a6629d1 rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eec63c9 xdr_encode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8ebbe0 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32a8c61a xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32b8aa67 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34c2b328 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35448c65 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3630ae39 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a1afc59 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b98ee8c xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3fc39f37 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x437ed41c rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43819b7f rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43b710a3 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43f19c5c rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4415f220 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x44944f28 svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x465b6abc auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x46a69967 sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b0a5030 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f11bec1 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x533ddcc7 xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x541942df svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56320281 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x577e809b xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59a09d0b svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59c86f0a svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a1f6172 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b07cb25 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cc5013a xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e38809b xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ee2a62b rpc_call_null +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6289f817 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x63218d30 _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x67547715 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a50aafd xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a56e1f6 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb60d59 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cc85dc1 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ddbe20b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e84976a svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ea8ccda svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71d7250d svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x723e65b1 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7280540a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x728cab6d xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7402c3a4 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a7b6bef svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a9ae384 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ad8ebd4 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b6836ac rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7c7fd573 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f314b11 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f504a27 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80d145d9 svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x861196f1 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87a0753b rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ac3a39d rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8c1d7f2a xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d73b121 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e5aeb9d rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x909b4856 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9236d628 xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9322f3e7 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93350cbe rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x942a9939 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x94e264db svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x95a4fa98 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97b600f5 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98a1863a put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9b86e0a6 rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bee7aa0 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bf9083d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c4c3df1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e24e962 rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f0b5f3a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa0cdd3a1 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa40bc289 svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4481cee rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa518f4e2 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa73a3666 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8a4d7b2 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa97b38b rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaac84b09 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaace11d7 svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaafdbfe2 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac066d7e xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf81a556 cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafbb47d6 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafe8d3bc xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb481a1d7 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4a16473 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb71d1c64 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb8b7a036 svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xba28072c rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb65086a rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc32cf6a xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc96db4b xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbea87793 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf75d03a svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0adcc60 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc0b80cac __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc21b4696 rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6769978 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc6f3d5c3 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8b4e9da xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc915f31b xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd0c937 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf8a2bf5 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0cae582 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2957358 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd43e3213 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5de248f svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7de0020 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7eabca4 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda68a46f xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb26b350 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd4beb43 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde9ce47b rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdf7b81fb rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0bf711e svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1062a05 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe41796e6 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe49f4976 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe66d5a4a rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ffad3a rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe817913a unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8aab65c rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeacf3619 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee20d85b rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef180480 svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf157e829 xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf39aede7 sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf469d65e rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf53661be xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf727c32f svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf7e5a67a svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf91cab86 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb5965f5 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc5989b1 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc921ae7 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfd10faf6 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfeca44a7 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xffbe3c25 xdr_read_pages +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1213c70e wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1ec07a94 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x1f6de5cd wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x265d50dc wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7ceba67c wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x7dcda0a6 wimax_state_get +EXPORT_SYMBOL_GPL net/wimax/wimax 0x89ff3ada wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8abee112 wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x8b517613 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa63806e2 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xcfe73d5f wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdb9e50ea wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xdeefaacd wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x16d2b07d cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x33c38e99 cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3a469b7c cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3d1de504 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x507579a9 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5bbd7887 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x819977cc cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x8849a10f cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc9cc79b0 cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xd5f57a21 cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdde11840 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5525769f pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x03f69deb ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x1fb5a686 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x5f92e35a ipcomp_init_state +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x60fe99ce ipcomp_destroy +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x052efec4 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x0f4297f9 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x12140eb0 aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x168eddbf aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x5a5b2764 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6f596d7c aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x97a91b2c aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xbecd02ac ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xc6b82c5b pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xec7f77ee aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x01da310b soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x166156c6 soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9a5d17dc soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xa995fac9 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xac5c7bae soundbus_dev_get +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0xb4763b0a soundbus_remove_one +EXPORT_SYMBOL_GPL sound/core/snd 0x1b51c4a2 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x3481ae7d snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xa4dee3ee snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd 0xeab8ecca snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0xf71313e7 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x82da2e8f 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 0x27c40b73 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2be4a8e5 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x945c1e7a snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xb1c1aa67 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc35dea31 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xc81164ea snd_ak4113_create +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x059a31a9 __snd_hda_codec_cleanup_stream +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 0x0f573e9b snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x11b80fb8 snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x13361bf6 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x137eff84 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x152bc6cd snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1b8f2182 snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1fede5ec snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x219a641a snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x21ec9c84 snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2278b73c snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x236288ca snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x23f23c67 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2443c4ac snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ce6532f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x358f6c46 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x373d69d2 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x385fe6be snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ad5e26e snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b8d4cb6 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3b933866 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4045cdd1 snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4694a805 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x46d330c1 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4819aac3 snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ff34ff0 snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4ffcb46c snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5247f24e snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53200fde snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5501ccc2 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x55188497 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x56666eab snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5858b3e5 snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59681223 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59d1099b snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59faca15 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5a671e38 snd_hda_check_board_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5fa19231 snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6158fd25 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x61e6e5fc snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6390bb98 snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6483aa4a snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65436e3f _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x67dadfc0 snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x68ffb3cd snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a371a33 snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6dcee12e snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6f60de78 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7559e4da snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7719af78 snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a1cb050 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7ac4ea41 snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7b829110 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7dbf3f15 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e2131ac snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e416bee snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f4a97bd snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x804394d1 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x80c2e849 snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8149d8be snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8204c217 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8547719c snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x87b4d0d3 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x89fdbbd6 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8c35d2f4 is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8da5b148 snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8dbc60af snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9287960a snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x92cdcf36 snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9308acae snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x93cb87d7 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x94ba4669 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x97b21ac7 snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9840c48b 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 0x9bf2eecb snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ccb6d37 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9f714a4b snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9ff72111 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa21a0009 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa37b69fd snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa3c4eaab snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaa3cb915 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xacf3b17f snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xaee97898 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb062e166 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb89488aa snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8b60c6b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8e6a04d snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba20f555 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xba7b7c76 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb7890c7 __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbc686b85 snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbd36b290 snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe6f50c4 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbf8cbc60 snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4035d7c snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc652fd69 snd_hda_get_jack_connectivity +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xca0bca4d snd_hda_create_spdif_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 0xda6fe1a6 snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xde586ae2 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xded11c6b snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe696bfa0 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe70b27ff snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe757fe20 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8605d58 snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe91d795d snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xede066b0 snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xee858f57 snd_hda_mixer_amp_volume_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xefe9a2ad snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf0526e72 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf457ce40 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf7d6c581 snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf945e004 snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfc26ec80 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfeab4b73 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfeb738e8 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xff794338 snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xb9f70113 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xc664ac42 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0xa4662f76 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x6439cece max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x8b6a02f4 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xeeb5d820 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2c639457 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xc5ec8f8e twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xebe52031 twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xf9a06412 twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xfb03ae3a twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0x7c10e03a wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x344eb00f wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x39804fdb wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x4731ee7f wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x572e8b19 wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x6ef2e8f2 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xa175ce4d wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xac5e3968 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xdf7aa35d wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x0453d7e9 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x9bd894e8 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x65823ede wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0x5f15db31 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x8376441e wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x9c8559e9 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x1f5c88ca wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x00a798c0 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0443a7b1 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0460744a snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x06b8ae05 snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0a88f2d1 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0ae6831e snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0aef5d72 snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0c02cd7e snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0cf20cff snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x10512a17 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x13f0692f snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x16c6f61f snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19d7d49d snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1aeff888 snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1f673c40 snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x21104f81 snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x263c421d snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27784d88 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x27aebfb1 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x287cf50a snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x292bf508 snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c1e05bf snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2e85f64a snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3190289e snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31c8a9cc snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3334e881 snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3bfd9a33 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3d36bcd6 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3dc57699 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x418c75b9 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x466a23b9 snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x478c7ddd snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x48123048 snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4aa9dfef snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bab274a snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bc900d4 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4d968011 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4e3f66d9 snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x506718f8 snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x58955eca snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d6bcc68 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5df70de1 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5eeb479b snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x645435d7 snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x645ac2e5 snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65580d24 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x65c5e1b1 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x670be473 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x68f6c36c snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a93cf6c snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6c939e94 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6e72d665 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70101239 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x760d94e5 snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76594e67 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x76751ba2 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x771ba808 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ab9c28e snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7cb2d019 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7ea86d07 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x80d4cfd5 snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x81f0a60d snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x849de300 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8a25b90a snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8acd727a snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0d4eea snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x92034e18 snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x94bd10ee snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9675c08a snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x968a4f41 snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9890e5f1 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e12791b snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e161000 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x9e3f1cf8 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa06536de snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa1046809 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa17a7977 snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa19c4555 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa25c8836 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa26b2eea snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa30fa258 snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa373b0b6 snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5f4fdef snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa6ed8dd2 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac9b029e snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xacfd8e5e snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb247e067 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb320e3e9 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb5dcbc44 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb6f3990d snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb910bfd1 snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb94eb8fc snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbf343129 snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc178be54 snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc1ad689d snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc3b26168 snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc58f99c2 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc90b39a5 snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc917099f snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xccbcde03 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcd4b34c8 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcddb7bf5 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xced0d83a snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0250668 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd191d3cf snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd1bcce5c snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd22dd30e snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd2db0cdd snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd55cf959 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd8d82f82 snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc0224ea snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe11d6f06 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe2452b87 snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe6919c1c dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe69da4b7 snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe91b9f9f dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xed0a8672 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf15ec654 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf68754d2 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf875782b snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf9fe819e snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfb32076d snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd3309ac snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfd6adee8 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe681f56 snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x001423de debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0x00632780 work_busy +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x007a1508 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x00924882 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x00c4dc87 timecounter_init +EXPORT_SYMBOL_GPL vmlinux 0x00de65db trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x00dea1dc ref_module +EXPORT_SYMBOL_GPL vmlinux 0x00ebcb5d ata_id_string +EXPORT_SYMBOL_GPL vmlinux 0x00f62668 cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x01010c6d klist_add_before +EXPORT_SYMBOL_GPL vmlinux 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x012f8e15 unlock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0x017963da of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0x0195fba9 btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x01988801 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x01a40bbb device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01ba8d05 pmac_backlight +EXPORT_SYMBOL_GPL vmlinux 0x0213d53f bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x022a03ff dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x024cfc6d kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x02b800b7 crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x02f39e63 tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x02f48b99 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x02ff42c7 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x03113d5a tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0x03130cdd irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x031c3d47 bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0x033bdce1 sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x03803ce9 put_device +EXPORT_SYMBOL_GPL vmlinux 0x038cbf57 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x0390c50d platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0x039c3498 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x03cdcbce pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x03f22d82 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0x04191982 pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x0493a08b inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x04a93a8e css_id +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04d3d8f7 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x04fb9af8 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0x0523b66e regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x052f4817 scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x058711ec sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05ce5186 __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x05d2885b dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0x060e63b6 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x061c0b2a wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06517536 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x0670b258 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x06b4f251 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0x06e01e76 __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x06ff4985 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0795f855 tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x07adeeef kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07bda11c debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x07d5e6a8 __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x07ebeba6 pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0x08085880 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x08125f43 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x083b5cf7 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0x089926d9 ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x089ce61f ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x08cefc91 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x08d8c91d ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x08da530a input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x0914094c stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x0934c941 ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0x095f7dbd ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x096db0d6 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x0985b8b0 show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0x099cd510 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0x09aaba5e cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x0a17bdae dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x0a2fcf5e pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a45ffbd rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a831d12 tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x0a943da9 blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x0af6f5bb ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b2687af get_device +EXPORT_SYMBOL_GPL vmlinux 0x0b2edc2a sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0x0b4b5cfa sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x0b59390b __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x0b5f3ff6 ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x0b6a4ef2 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x0bd1398a usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bef3149 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x0bf30fef ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x0bf55597 blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0x0bf736c6 pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2a3abc sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x0c2b38f7 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c32989c __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0c551a67 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x0ca737f6 wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0ce7006b pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0x0ceaff4f pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d0c109d of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x0d3c3bdc sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d4245c2 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0d4e95b8 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0dc6ba72 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0df1cdeb tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x0df77b99 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e256914 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0e366e5e get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0e3ee5ea pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x0e4477a4 class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x0e5358d6 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x0e6d9c74 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x0e951f40 ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x0e9e878e __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x0eb5aab6 i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x0ec89efa debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x0f289503 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0x0f4f4a48 ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x0f5923ba __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0fc01e9f static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10b5064e usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x10bdd79e sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10f8ff23 vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x1130addb register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x113f7990 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x1166a7d4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x11a68357 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x11d16d2b sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x12195356 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x123d6d28 __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x12a72131 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x12b30d2d pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0x12c0cbae bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x12c1b377 evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0x12c42396 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x12d3ff98 fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x12d4d28c page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x12f5e71a hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x1318d9bd digsig_verify +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 0x13363271 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x134dfe82 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0x13505c39 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x135426b8 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x135a09c1 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1360afe3 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13721613 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x13a9b07b ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13c387af handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x13dea477 sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x13ec6c05 dma_mmap_coherent +EXPORT_SYMBOL_GPL vmlinux 0x13edb8b6 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0x13f7e0b3 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x14487885 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x1473c303 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0x14aefad5 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x14bb8527 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x14d70a6e class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x14f68917 sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x15088fda rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x151f1b11 device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0x152d6b4c pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0x1553361a __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0x15566fd3 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x155fc95f dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x15897c2c sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15b200e9 tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x15db95c6 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1648927f wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x164b7640 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1655bb05 queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x16c7154f srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x16cc5678 ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x171d6741 usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x174ccf1a tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x17ce9cd0 rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x17d1b539 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x181afdf3 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x18246389 ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x18424885 fb_deferred_io_init +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 0x186f8870 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x188388d6 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x188617f8 mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0x1886eef3 tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x19211a6f debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x195caa6a debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19d4cbba css_depth +EXPORT_SYMBOL_GPL vmlinux 0x19f76e1b spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a2657b5 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a563fa3 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1abb2252 usb_string +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1af6d65c shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x1b15e244 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x1b50541d wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1b52db1c probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x1b703ffa sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x1b7cfaff ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba89186 usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x1bab249b rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x1bc6289f usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x1bd92781 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x1be495f0 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0x1c086875 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x1c2f1adb tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x1c410c55 sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x1c43b85c tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c5f070c cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x1c770029 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d53b7d0 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d5c05cf driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x1d76fc76 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x1d9496fc of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x1de33aae ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1dfc8e7a sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0x1e152511 raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0x1e183a18 tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1e20b8b0 rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e41176f devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x1e5ac445 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0x1e60a9c6 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e8f3bb3 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x1e90a004 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0x1e946ad5 tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1eaec24d ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1eba928f ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x1ebe26c9 crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ecb095d crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x1ed9e7b8 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x1edc7a55 pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1f038af1 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1f108cf1 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x1f148d3e platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x1f1b0680 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x1f4fe2ce led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x1f5a8f9d unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0x1f790fab regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0x1f81f481 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0x1f83a523 vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fcb0c58 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fdfa72b blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x200c9465 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x202529ee pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x20268494 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x2027d0e2 ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x204638d5 trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0x2049bab8 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x205c74ee spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x20b89b01 spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x20bb8d09 ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x2101fe20 inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x21bc60c6 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x220d7be6 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x22100126 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0x2233f93e md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0x22569232 da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x22650f3a of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2294417d usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22b5b9aa device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x22bcb9a7 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x22d35a6e crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0x22edb83f sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x22f42933 sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x23679939 __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x23708699 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x23b6afe0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x23bad72f con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x23c38a74 __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x23caf2b1 device_create +EXPORT_SYMBOL_GPL vmlinux 0x23d25f8e wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x2406dae3 pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0x241f3961 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x242b6c87 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x242c8aeb perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x243981e0 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0x243998a9 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x2451bcd7 pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0x246974f8 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x24773153 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0x248121b4 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x24a37277 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24d6276f bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0x24d7324a xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x24e1307e flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x24ff94a0 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2533b201 __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x253773e8 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x2574ea6a usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x25771dda __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x25c2b6d3 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x25c92828 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x262b93d3 blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x2691412e boot_cpuid_phys +EXPORT_SYMBOL_GPL vmlinux 0x26a92b0b trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x26b1e56d tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x2727baa0 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x2734a349 crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x2787db00 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x27a422a1 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x27c1363a __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27e64ba8 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0x27ed29dd find_module +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x282f4cca ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x2862ddb2 sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x2871094d sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x288215b6 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x28a82da4 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28d967be wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x28f473df crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x2901a718 queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0x291aec33 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0x292d1600 crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x2954fdfa pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x2980826d blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x29a8630b inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0x29c3ae43 sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x29c71c64 ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0x2a421a37 ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x2a432c8c pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2aea2e9c spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2afe42f8 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x2b046051 generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0x2b3dd10e elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b607170 ktime_sub_ns +EXPORT_SYMBOL_GPL vmlinux 0x2b8038c0 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x2b889506 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x2b8aeb45 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0x2bb0cc73 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x2bc1d3dc i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2bd0fef8 pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c2bd892 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x2c6a0dd7 fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2cb3692f spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0x2cbc0d93 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d0a2db6 fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d4e34cf fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0x2d521876 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d86fd80 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0x2d988a94 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dc95693 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0x2dd17e86 usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x2dd2ed8b watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2e0ff0b5 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e27f7d2 fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3a1470 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e4d8477 device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x2e58f98e dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x2e703066 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x2e84ee6d ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0x2e943a13 register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x2eaabd80 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2ed414ea bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x2ef6b5bf smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x2f2aa116 unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x2f2ef524 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f435c87 pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f568bde __put_net +EXPORT_SYMBOL_GPL vmlinux 0x2fcaae24 tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x300469b6 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3050ec18 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x3096fbcc ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0x30a4f4ca bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0x30d9f1d0 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0x30eb57e0 cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x310d609f spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x313f48d6 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x31a69955 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x31bd98e2 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31e360a9 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x324124c7 anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0x3260f135 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0x3262e672 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register +EXPORT_SYMBOL_GPL vmlinux 0x32e085e3 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x33105642 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x332798fd kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x33282c48 fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0x33300a4f xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x33543801 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x338e209a subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x33a13c12 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x33d53fa2 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x33ff899a adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0x340ba39f debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0x343989e6 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34ac50a4 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x34b6c32f crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0x34c08046 ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x34d81e1c crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0x34f22995 vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0x34f528db crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0x350a0cd5 page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0x35333754 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x356cf0cd wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3570ad8e find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x358a16c6 tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x35a5f033 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x35c4bcc8 devm_regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0x35cc4fbb dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x35f07c65 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x36066eb8 __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x3629fa47 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x362bff3b unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x367a4936 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x369f8dfc pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x36f74691 of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0x370bfd87 usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0x371d4f0e usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x37358437 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x37691cb5 tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x37735adf usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x37b511db ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x37bcfa85 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x37e84f2e uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0x386d1600 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0x3892d0e1 __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0x389ce391 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x389f818b bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0x38a61ef1 scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x38a9c2c7 input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x38ddb937 power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x38f6193b gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0x3929f42c wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0x3937a258 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x39617dd1 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x39619af3 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x396b6064 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x39a66e47 xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x39afd417 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x39b40ad3 device_move +EXPORT_SYMBOL_GPL vmlinux 0x39be2b23 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39fffa6f power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock +EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x3a51b2ec fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3aeb182d wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x3af5903b debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x3b0c3512 queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x3b1af646 get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x3b4960c7 crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x3b8e1cc9 devres_find +EXPORT_SYMBOL_GPL vmlinux 0x3bb9ad0a wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x3bc6fa9a crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x3bc89518 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0x3bd8a20e s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x3bdb6de3 of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x3bdea30f rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x3be80a1e __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3c0d8243 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0x3c55d426 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca3f676 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3caececd usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3cffedf5 cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x3d23d70d sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x3d2887db ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x3d2bc602 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0x3d367c4a platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d5de94f sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x3d8a76d2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x3db3f236 cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x3dc2cc2a alloc_vm_area +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 0x3e0ae704 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x3e12f9b8 vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0x3e559663 rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x3e66802e ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3ea33205 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x3ea35b5b usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x3eb2636d usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f219b74 hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3f2357c5 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x3f568983 ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f6628ca usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3f71880c md_run +EXPORT_SYMBOL_GPL vmlinux 0x3fb92042 ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x401e0011 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0x4029d190 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x4045f9c7 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x404e9ee0 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x4095961b platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40ecc806 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x40f94f00 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x411f10f2 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x4121fd7c pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x41421e77 single_open_net +EXPORT_SYMBOL_GPL vmlinux 0x4150a437 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x41892fbf wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x419e39c9 da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0x4205ad24 cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x423b322b tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4247b2b4 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x424b83fe ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x424e955d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x42536aff __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x425c1c0b ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x425c7878 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x426777b2 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42b364ef scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42d97540 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x42e586a2 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x435c6950 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0x435d3a73 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x437f507b usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x43939bd1 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43a9f98f __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0x43bc3e4d usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x43ee2595 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43fdd0de gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x4410d094 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x44155458 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44a6249e platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44fe7621 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0x45062545 dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x4522bdfe sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x4526b534 dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458518d1 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x459df5df usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x45d3c53d skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x462abd49 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x4645f31e tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x464bba9d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x465ab305 crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0x465ff218 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4685c73d platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x46e33ce5 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x471a1b06 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x471b07c5 fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x474213d0 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x4749f3fe spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x47be8515 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x47c149ab queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x47dc9ffd of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0x47dd1712 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x47dd7934 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x481c07dd usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x483cdfff fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x486322b6 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x487bd522 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x48c4589f usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0x48c654f8 rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0x4943a338 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x494f5152 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x4980d4e8 usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0x4982a57f probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x498a6e00 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x49ee245e pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4a2547c2 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x4a7cf2c2 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4a9122fe dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4b15f786 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x4b174959 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4591a4 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b71acdf devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x4b75c294 usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0x4b9b7618 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x4bb01a43 gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bdc652e invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x4be5db2e __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x4bf4bb33 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x4c1acfa0 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4c8c2a8d class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x4ca6f6ba ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x4cb10706 rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4cbd5f35 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0x4cde177f scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d1ac3d7 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x4d34b33d usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x4d3e06ff da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x4d5d4e32 tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x4d89a451 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0x4db35a9e ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x4db4ea0c pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4db8e850 device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0x4dd4c35d pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x4dda1b22 dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e321f99 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x4e32aee7 cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x4e46ec3f device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x4e7da141 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4e8d3233 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x4eae3ff8 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x4ebf144b swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x4ed84bf2 __inet_twsk_hashdance +EXPORT_SYMBOL_GPL vmlinux 0x4ee4fba6 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f3c81b0 user_match +EXPORT_SYMBOL_GPL vmlinux 0x4f5db9e9 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x4f6b5b2f vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0x4f6cbb06 driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x4f881b16 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0x4f917fb8 wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x4fc69a7b class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x5001f736 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0x50313563 sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x505ce9dc crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x506691f1 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x506cc085 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0x50785d2f vfs_listxattr +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 0x50cb909d md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0x50e242b0 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x5102c158 blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0x510f339a hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x514189b1 usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x5145b12b ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0x516314e6 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x51706468 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0x517e130a srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51af7f83 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x51c17470 bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52115242 fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x52119f72 wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0x52212010 __tracepoint_block_bio_remap +EXPORT_SYMBOL_GPL vmlinux 0x5250ca69 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x529231f3 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x52c246ca __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5304c805 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x5385c75f regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53ee056c init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x5413203f usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x5432d5db pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x54616cf6 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x5492bf0b disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x549e2415 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x54c49202 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x54e13465 wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0x5526a505 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x553933f9 tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x55779f88 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559bd2ef spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x55db617e securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x55e74041 of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x5607834c ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0x56159d48 blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status +EXPORT_SYMBOL_GPL vmlinux 0x5649771a usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x5649ea86 cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x564f1dca klist_add_after +EXPORT_SYMBOL_GPL vmlinux 0x565b6892 uuid_le_gen +EXPORT_SYMBOL_GPL vmlinux 0x566667fe ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x568c4fd3 hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x56b5f9a3 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0x56b63670 lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x56bf09d4 debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56df2a7e inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x573b5b23 crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x5783a60e ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x5784b681 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57aaf9dd sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0x57be64df usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x5816633d raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58ab0153 __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0x58ae678a usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x58b8b4f4 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x58e0a82e netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x58e8e14e sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5919b837 usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0x591dec31 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594bc660 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0x59653e9c rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x5992621b blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0x59935bbc dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x59bbdb6f perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x59d2c150 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0x59eac7af pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a072bdd bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x5a25626b hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a887d7b da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x5a9811bf pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x5aba55eb wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0x5acfece8 cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x5b045252 blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x5b0cc00c gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0x5b0d97e2 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x5b10bf24 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0x5b338850 pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b87f22e crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5b9b200c __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5bf337b5 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c6cd73c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x5cb0a798 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x5cca082e skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x5cef4a98 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x5d020125 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0x5d0c1c56 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d17d1e5 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x5d51bcf7 scatterwalk_start +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d8d3f3b ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x5d8e87d0 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x5dc0e70f perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de59f8e pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x5dfa4d0b nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0x5dfb6639 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e285b3d rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e5b1d65 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5e75c4f8 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0x5efc4fde ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x5f068f32 aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x5f0de7d9 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f3e6edc __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f93cc48 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0x5fa3fd18 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0x5fb95150 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x60188b51 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x60266cd9 blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6072d8d3 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0x609bf0a6 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x6111033d ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x61133715 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6147dbe9 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0x614eddcf max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x6175c24f debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0x6175ef0b spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x618441c6 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0x6191b2da blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0x61a8df77 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61d83ccf spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x61ff18e4 ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x6236228d device_del +EXPORT_SYMBOL_GPL vmlinux 0x624a6406 hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x625c1342 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x62676fd1 key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0x6299e05a rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x629afab5 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0x62b1d02c tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x62c729eb ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632b5651 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0x633d6c80 unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x6348ad4e stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x6350112c dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x6365a7f2 tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0x63689b3d of_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x6375574e fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0x63923bc2 pmac_backlight_mutex +EXPORT_SYMBOL_GPL vmlinux 0x63a24436 usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x63b3c111 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x64071977 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x64256424 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0x6443524f ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0x6453f77c pmac_has_backlight_type +EXPORT_SYMBOL_GPL vmlinux 0x6468e738 inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x64772aaa fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x64941b97 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x64b7f7e1 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x64cfa737 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x64d14b2f stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x64e3dd94 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0x64e62e8a transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0x6546ee51 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x6582ad20 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65f9bffa wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0x65ff792e crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6609de10 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x662c476f sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x6645e55f rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x66639fbb vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x66a73516 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b207c7 blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x67006c46 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x6718bf0f fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x67227f9d debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67dbfa70 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x67e5e448 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x6812cf8d __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x684465c2 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x689516ad usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x68956406 static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x68f7e128 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x69821ced posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x69992c3d raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x69a4d84b rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x69b3751f fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e38c12 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69f554ee __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x6a509686 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6229eb device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b336cb5 rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x6b414d97 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x6b680b5d blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x6b8f73d4 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x6beca149 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x6bfd8632 crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x6c05bd3c dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x6c0c3d7e pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x6c11f73f screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0x6c47c257 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c8ba0ef kick_process +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cbea013 rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x6cd0e4e6 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x6ce13f6b set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x6cff4b5c crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x6d2f1f80 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d31e93b tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x6d380de4 class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x6d5fa5b5 blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x6d61793b hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x6d819810 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x6d93c363 regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x6db9a0fd adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x6dcd8024 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x6dde9e70 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x6e77b441 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6f0a38e3 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0x6f293794 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f2a82fe elv_register +EXPORT_SYMBOL_GPL vmlinux 0x6f2fe41b ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6f3fa123 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6fbc719c pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x70746882 of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x708932fd ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0x70a0d401 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x70bb651d __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70d5334a device_rename +EXPORT_SYMBOL_GPL vmlinux 0x70dcedf1 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x70ef0b6c key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0x70f2ae1a device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x713478f4 tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0x713ec8a3 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x7140cd2a wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x71736ed2 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x720def15 __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0x722e4879 sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x723068b8 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0x7247b7a4 platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x725a2edd dm_kill_unmapped_request +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 0x72797194 tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x72cd3f25 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x72dec264 usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x72e2b892 sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0x72eae5e8 pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0x73127502 driver_register +EXPORT_SYMBOL_GPL vmlinux 0x732ace01 rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x732e9483 clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x73435be6 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0x73480ecd tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0x73531784 single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x73564277 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x73701177 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73f397e6 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x73f6523f ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x73f80715 subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7415a9db fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x745006a0 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x74737ed0 usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x748401c4 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a503a4 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74b44051 usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74ec15fa sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x74fe5974 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x75236a17 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x75248d8d crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0x7548452a regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x75576478 pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x758a5a1d disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0x75c8a11c inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7626b273 unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7631846b dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x7649805b __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x764f9963 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x7674cb5b kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x76c8502b class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x76caf822 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x770cf981 tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x7712940b ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x77452fa5 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x77747da3 timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0x779b8feb stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x77a207e6 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x77efa62f pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x77f622bf stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0x77fbc76d flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x7802e5bc shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x78441292 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x78b821c9 srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x78d3a909 usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0x78e7b045 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x79031f57 sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x7906969a ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x791829df regmap_read +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x797406c1 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x7993a09a usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x799e798f ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x79adbf37 __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x79b4a262 class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x79f47e3e spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a63a0b0 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x7a7273c8 disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x7a74a8cf usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x7a87d1e2 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa621b4 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0x7ab3ca18 eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7ae4edbb ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x7aea12aa usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0x7b012190 sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x7b0f1ab3 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7b1d544d edac_handler_set +EXPORT_SYMBOL_GPL vmlinux 0x7ba41d4a rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x7be4ed95 bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0x7bea0cae disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x7c11c3a9 device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7cce7928 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d37abff usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0x7d46af09 cgroup_to_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x7d5280a5 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d63534b ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x7d68e9ec cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x7d7b4f27 tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7d7c7906 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7dacc0ca rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x7dbc648a crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7dcb2141 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e433907 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x7e5cac07 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7708c6 device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f36e3de crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x7f387ebb uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x7f65f6d2 pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7f88c8e4 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0x7f9ed93b ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x7fb3dfc3 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7fc3c785 attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0x7fe870ba scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x806648b8 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x808ac411 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x8098be14 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x80c0976d sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x80c2979a bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81062146 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x81265e3a sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x812a3aab inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x8139efbc regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x81623dba rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x81bee22c eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0x81cbd2d0 rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x81cf14b4 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x81dcfc65 usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x820d44ec rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x82220fbc simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x824ba94d skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x8257f1bb ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x826db140 usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82a0a24b cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x82a48f9e pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x82a7d8be usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x831f53db ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0x832f238c gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0x83455ed0 xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83a5ae2e __tracepoint_rpm_resume +EXPORT_SYMBOL_GPL vmlinux 0x83a905da tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x83bf1ea5 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x83d2d55f led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x83efd7c7 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0x83f2e5b4 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x843dc4b0 dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x844365d2 da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0x8448f3c5 inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x844924c1 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x84ae54f2 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x84d2bb29 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x84ecb7cb timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x84fa3c01 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x855de45b static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0x856629e7 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0x8574ca6c gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x8589777a anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x858f5a82 irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x85a298ef debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x85e7073d tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x85edea04 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x861ee07c setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x864bc4db relay_open +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86d6b046 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x8743bccb regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8746da0f spi_async +EXPORT_SYMBOL_GPL vmlinux 0x8747141e debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x877fccee crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0x87984b16 __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x88bc432d wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x88df2625 device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x88e06d60 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x8941781f bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x894da4c5 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x8960571b proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x8964d308 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x898fa2b1 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0x899beb92 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x89c3c644 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89fc1c48 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a04b9fe tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x8a16b797 register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x8a4aa11d apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a5f6320 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0x8a79e47c md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x8a97ac17 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8ab08e50 device_add +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ac4e885 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x8af7dd61 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x8b3805ff pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x8b448693 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8b621868 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8bb59fe3 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x8bb875fc pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0x8bde5834 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x8c021ae5 uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2706b3 flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x8c95a09a yield_to +EXPORT_SYMBOL_GPL vmlinux 0x8ca7dd09 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0x8d0e6bbf pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x8d14f8ca pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x8d153482 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x8d58b99e blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0x8da17b42 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x8dad55e8 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x8e0dca03 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x8e75a824 devres_get +EXPORT_SYMBOL_GPL vmlinux 0x8eab4a4c pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x8eb2f50e crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x8ebff98c cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x8eeefc02 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f037d09 cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x8f050b75 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8f200b18 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8fc23013 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x9036ec57 fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x907ea360 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x907f62a1 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a71674 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x90b4fd19 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x90e1cf0a cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x90ef5743 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0x91083435 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0x912eb9e5 ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x91306666 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x91328606 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x91521129 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x91910907 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x9199aae9 sdio_memcpy_fromio +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x9230d6ff ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0x924dde65 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x92841534 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x92995a52 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x92accb96 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x92b57248 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x92fb5824 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0x930aaa6c regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x938a0978 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x939bd920 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0x93a2cb47 reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x93a66ec4 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x93be8ce3 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x93f00373 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x93f31d59 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0x94140914 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x944c774a transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x94a1a061 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94a6ca42 isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x94a8c92e input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f42e77 cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x952d3991 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x953bb8c8 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x955be74f skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95bcb443 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x95de82ae disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x9625cb2a dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0x968f77e2 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x9698a057 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x969def09 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96f8bd8e platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0x977d40c9 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x97a1193c adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97ea90af simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0x97fef108 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983608e4 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x983a4084 skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x98504293 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0x9856bc28 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x98625098 ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0x987db7b2 pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x989473b1 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0x98a8e7fd regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x990f07a3 __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x9955ddc2 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x99608030 synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0x9969943b kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x997cb5e7 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9983a8fb rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0x99cbe88d crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0x99f301aa wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a6b7ec7 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x9a71368f inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9ab59ef5 wm831x_regmap_config +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 0x9afebecc dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba75a7d rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0x9bacf3ae crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x9bb09d15 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x9bf9f6e5 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9c43bcdf ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x9c56d22e __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x9c58ed47 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0x9c5f7d08 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x9c688b61 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ca83b64 crypto_shash_digest +EXPORT_SYMBOL_GPL vmlinux 0x9caa8d52 uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0x9cd14fb3 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0x9cdb9637 tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x9d121473 sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9d7db9a1 pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x9d8331c0 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x9d9e030f evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9da862c4 ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x9dced47a usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x9ddbaa17 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x9dfdf722 gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0x9e11ca36 dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0x9e282870 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x9e52c280 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x9e5a6fff fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x9e83f717 pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9eaecbf9 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x9eb19c73 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0x9ebd2bbe crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x9f032a77 root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9f1688e2 spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f5feb6c skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x9f673bbf mmput +EXPORT_SYMBOL_GPL vmlinux 0x9f7b2b1d ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fe6de65 bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x9fe8dced tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0x9ff71d08 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x9ffad3c8 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xa017d17f pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa01eaa12 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0xa02354bb swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0xa02482b2 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xa02fbf4f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0xa04f066c dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xa0500648 tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xa05eca31 inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa06ab483 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xa0b0455f max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0xa0ef1ccf platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xa0efb5b9 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xa1177d63 tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xa13a81c2 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa14a48e2 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xa14bb294 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0xa1608c8b relay_reset +EXPORT_SYMBOL_GPL vmlinux 0xa19ec76f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xa1bd7822 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0xa1bfcbda devres_remove +EXPORT_SYMBOL_GPL vmlinux 0xa2184940 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xa22b90ad fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa25413e0 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xa2651f7c crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xa292fec7 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xa297a72a crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xa2a104b3 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xa333df02 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0xa3438e68 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0xa347a512 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xa357d56e ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa3900440 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xa3948f9b tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xa39d9220 unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xa39e1a3b sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3afb480 bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa409f4d0 crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xa4482db6 regulator_register +EXPORT_SYMBOL_GPL vmlinux 0xa4493708 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0xa46b0633 usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0xa474858e ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xa474993c remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xa4807397 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0xa4a872a3 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xa51bed9b kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0xa598b56e __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa5a5b22e da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5e5218e __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa60ba2be debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xa61b1477 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xa622b6e9 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0xa6235f11 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa64237d2 bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa65dfe26 power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa6695636 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0xa67612bb debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xa68c375d usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6bf5bdc __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa73cd0e9 wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0xa741bc91 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xa76fee49 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xa7be79b3 pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa7fe7b95 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xa82f4d5b md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0xa86195ab rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0xa8932f34 wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa8ac97df pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xa8e4ccf4 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa94da6bf md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xa998d034 subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9dec6cb crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0xaa2a72bf __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0xaa375261 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaa912869 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xaa94538e input_class +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaaabcb49 __css_put +EXPORT_SYMBOL_GPL vmlinux 0xaab234ee led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaabcbcc3 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xaae1e113 crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0xab5302a9 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xab78139a usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xab7f8434 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0xab8f5266 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0xab937214 __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xabf78a77 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xabfd9b7a bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xac514144 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xac7216f1 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xacc5478a pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd57d4a tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfd81f6 work_cpu +EXPORT_SYMBOL_GPL vmlinux 0xad70266f dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0xad81eba2 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xadc168f5 dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0xade3833e bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae334127 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0xae38b2d8 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xae424229 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xae47b569 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0xae482ef5 inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0xae5d3d42 mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7f4781 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xaeb70c02 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0xaefe363e pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0xaf13fe42 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0xaf24e647 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0xaf266267 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0xaf92fb73 task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0xafba7ee2 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0xafbc45e6 usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0xafbc83e7 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xafd2c203 rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0xafd87cef device_attach +EXPORT_SYMBOL_GPL vmlinux 0xb02d16c4 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0xb03324c5 tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0xb0476d94 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xb06a82ec led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xb0913148 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0xb0970511 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0xb099c2cd i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb09f8b64 inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0bebcf0 use_mm +EXPORT_SYMBOL_GPL vmlinux 0xb0e55ce5 pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0xb0e7c39d clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xb0fcd883 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb124b37e inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0xb12d16d9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb1492aa1 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xb15299ca rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0xb171b1e7 sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb196a2be usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1c30ac7 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xb1df95d1 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xb2879f42 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0xb2b54dde srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xb2bfefc6 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xb2dc4a15 regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2f1838f blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xb3546a49 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0xb36cdd56 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0xb394edbf pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3b6093c aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xb45794ba i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0xb460fd5c blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0xb4879232 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xb488f4cf securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xb5000d06 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xb5045596 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb51f98a9 wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb5307903 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb56ed31e bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xb56eef5b __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0xb58b96fd ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5dde771 crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xb5e0d49c mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0xb5e3992a raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb64ea395 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0xb66d6f45 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0xb673602a ata_sff_queue_pio_task +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 0xb6b4c631 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xb71da403 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xb72af860 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7599d2d sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xb75e63a3 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xb762a925 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0xb7787565 devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb7e62e62 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xb7e965dd driver_find +EXPORT_SYMBOL_GPL vmlinux 0xb84d3887 kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xb879d6f9 inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0xb8dddec0 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0xb9030072 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xb949f6a0 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0xb950e926 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xb95ead45 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0xb9806f9c sdev_evt_send_simple +EXPORT_SYMBOL_GPL vmlinux 0xb98e722d tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bb828d bsg_unregister_queue +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 0xb9dee136 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba3978aa uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0xba6092db pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0xba7c5604 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xba91eccf rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xbab616c2 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0xbab7eae6 register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb090714 hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb3a7275 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xbb3bbf7b wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbb591f1f posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0xbb6f551e lock_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xbb7d1550 pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb93c503 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbbbe8e9e rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc157577 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbc972582 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0xbcc65c27 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xbcd3bcf0 part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0xbd10fc5e driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbd742ce2 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd82f6a i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xbde96276 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe305d96 init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0xbe30a3d7 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0xbe35dfc8 relay_close +EXPORT_SYMBOL_GPL vmlinux 0xbe52c092 of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0xbe543af7 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xbe625048 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf79823b xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0xbf9ef89f perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0xbfa9fad0 __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0xbfab11ad nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xbfd627ab bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xc00131cf visitor64 +EXPORT_SYMBOL_GPL vmlinux 0xc007bdfe free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xc00fbb10 usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xc018513a pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc06d3e9b __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0b0984e class_find_device +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e75cec visitor128 +EXPORT_SYMBOL_GPL vmlinux 0xc0fb6a71 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xc0fd46ff led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0xc1059a07 check_media_bay +EXPORT_SYMBOL_GPL vmlinux 0xc10a529b xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc13c7655 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0xc13f3a80 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0xc1748126 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc18f30ac bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xc1c77a57 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0xc1f401b3 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc23f16f4 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xc267237f noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xc272a52b exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0xc27e2d54 regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xc2b00b9c usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc2eec0ef adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xc30b3a36 scatterwalk_map +EXPORT_SYMBOL_GPL vmlinux 0xc30f4c51 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xc324a0f2 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0xc344569c pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc36c1cee ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xc36e6270 usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc37117ef sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc37fe610 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3ca38dc spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xc3f84ff1 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0xc40aa44f sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xc4143f7f ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xc419bc37 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4456ccf fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc46d877e schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4ae20d1 __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0xc5494e0e transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5530cec fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0xc5a79fab unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0xc5bd13bf file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0xc5c1acd3 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xc5cafaab tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0xc5cbad16 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xc5eb1020 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xc606cd3c boot_cpuid +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc6a4aa13 regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0xc6f1e63f mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0xc72c1d48 seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc73dfc57 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc7810d03 ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c5e7f5 device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7cf521b blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0xc7dfbdd3 rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xc80622a2 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xc8084cd4 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xc82d6e4d ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0xc842ddd0 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xc8467314 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0xc856178c inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xc8a06b68 mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8d4850c xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xc8d82b8d fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xc8df72bf tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0xc92795ff pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xc92e66a7 __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc94872b3 crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc958c78c module_mutex +EXPORT_SYMBOL_GPL vmlinux 0xc9617c9b init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xc9650f5d inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xc9934987 rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0xc9ca415f sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca13ebcb ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0xca26c04a crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0xca29368f pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0xca378ed7 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0xca40c2d3 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xca4421d3 regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0xca5b4cfa rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xca64292c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xca90ef79 cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xcabab083 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcac757ff ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcba4e10d inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0xcbbe45eb dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbc70c91 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xcbdc1d80 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc1a5333 regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc479a0a user_update +EXPORT_SYMBOL_GPL vmlinux 0xccc83849 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccf4c860 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xcd70ba3c locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcda2d8d9 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xcdb01877 ktime_add_ns +EXPORT_SYMBOL_GPL vmlinux 0xcdc7708a add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdcb34b9 relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0xcdcde98b netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcdfba62c subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce1fcbbe crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6ce1fd inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0xce78ed47 xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xce8c5fd1 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0xcebbb255 pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0xcecff685 scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0xceddfa74 relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0xceecbed0 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xcefc12c3 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0xcf21a715 dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0xcf551c86 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xcf68f0e1 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xcf761ac8 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0xcf87df14 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0xcf91a5c8 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xcfa1e5c9 filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xcfa5c83f crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcfcfde34 anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd00652f3 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd09d3d85 regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xd09dddb8 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd0b3ecf9 debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0dde3ba map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xd14368c2 platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd150f96a regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1bcf982 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0xd20787b6 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd21ec091 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xd22c2f35 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xd27194a5 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd277fe12 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd2997e40 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd2aaeb4e kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0xd2d6a9cd power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0xd2e82316 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd32b5110 ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd337e42e ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xd3498db6 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd38e854c wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0xd3a02f43 __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd3cad9f0 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4142527 i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xd414758f rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xd42bea6e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xd431bd7e crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0xd4376b75 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xd46e5b30 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0xd470e888 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4fee565 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd502d010 __class_register +EXPORT_SYMBOL_GPL vmlinux 0xd5213a38 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd6087936 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd62e5fb5 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd67dc820 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0xd699460b sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xd6b89a00 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0xd6c2e04b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xd6e42437 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd7130a1c s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd76345d6 pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd76de942 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0xd77b2fa4 wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd81de62c ring_buffer_record_enable +EXPORT_SYMBOL_GPL vmlinux 0xd820c283 eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xd8212792 sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0xd835c173 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0xd83d9e67 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd859f49e bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8837128 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0xd8ea10ec sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd921c8ea regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xd934d266 usb_hcd_link_urb_to_ep +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd944d8f9 ktime_get_boottime +EXPORT_SYMBOL_GPL vmlinux 0xd94aba9a usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xd9a2881d of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xd9af4879 debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0xd9bee119 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda4c0859 user_read +EXPORT_SYMBOL_GPL vmlinux 0xda504703 usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0xda963070 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0xdae46e8e locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb14bca3 tpm_open +EXPORT_SYMBOL_GPL vmlinux 0xdb733549 pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xdb7b0b70 __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbb59a7f i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xdbd0a88a ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0xdbd65e8b kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0xdbf4b77e inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc461430 irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdcb07b7e dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0xdcb1c4c3 md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0xdcf502e8 d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd4d2b99 user_describe +EXPORT_SYMBOL_GPL vmlinux 0xdd4d4fde crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0xdd8b1fdd usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xdd8bbcc2 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0xddad5c73 adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xddc76a0f sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xddcefbee power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde640066 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xde85ad90 ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0xde897301 i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0xde90c128 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xde9f7f4d rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xded3d0cb devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0xded41a63 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf27877b register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xdf33bbf7 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0xdf5bcaca ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0xdf6b5550 fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0xdf71d004 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xdf87f296 pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0xdfb3c094 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xdfbad748 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xe0045a8e swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe008114c rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe0318279 mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe07ca631 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xe08832ae tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0908413 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0xe09f7c11 blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0xe0cc7ac5 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xe0cd660c regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0f22fd3 spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xe0f512a4 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0xe10517b7 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe1329791 sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xe13bcff8 wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0xe16591ab stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xe16e3377 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xe181bf50 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0xe1ad9497 usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0xe1b12847 sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xe1ba9f6f usb_get_current_frame_number +EXPORT_SYMBOL_GPL vmlinux 0xe1da7c3f i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0xe2136287 irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0xe26966ed da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0xe2816a9a blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0xe28cc6f0 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe2901d8f aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xe2ab15cb usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xe2ca4a27 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xe2db45a1 proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2ff9183 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe30fac88 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0xe3105286 kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0xe34cf93d regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0xe3845fc0 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe39b0700 blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0xe3b2afb6 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0xe3bb6929 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0xe3d0d9ea pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0xe3de1698 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0xe3f08f76 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe454f32b __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0xe46c3de0 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0xe49620d3 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0xe4be887d ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe5147202 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xe56e0ad5 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xe583ab63 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0xe58552a9 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5f640d3 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0xe612857c blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0xe62f715c cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe6795d5b inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe6a27b3d blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe6b5771a __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xe6ba1e94 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0xe6c5a7ff pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6eb7715 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0xe6f8d86a mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xe7145917 usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xe719e5ed blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0xe747fbad pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xe75f6dde raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe76b456e ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xe7fee47b usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe887ed03 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xe89ab3f9 devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0xe8b38cc6 __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0xe8c99614 fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0xe9026ba9 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe92a9203 transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9534d1e regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xe9d29990 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xea048218 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0xea04ea3e pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea26045e device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5c4fcf key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0xea7de434 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0xead614e6 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeaf18a18 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xeb33ff72 devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xeb4ddb17 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xeb70a605 blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb959d07 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0xeb9abbee ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xebd21ab4 put_pid +EXPORT_SYMBOL_GPL vmlinux 0xebd27f76 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xebde6b19 dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xebfb1696 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec6f2486 kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xec7afc40 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0xeca5f33c cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xecb99606 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0xecea75d0 enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xed29f4c9 fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0xed47b16b agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0xed6416d1 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xed67eb1e ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xed8c5f7e fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xedc2994d ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0xee03ece7 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0xee12bf1a tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xee181347 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xee33d025 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xee52432b rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0xee81db8e tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0xee8862a6 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xeed14ea0 get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0xef409b74 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef7a8788 debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xef8e04d4 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xefa70ebc usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0xf01cc4e3 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf03c06f6 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf050ec6e ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xf0586917 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0xf0602b43 devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf0a2602c edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf1235e05 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf159466b tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf187dcb6 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf19cc912 perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c4a3fa devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xf202cf53 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xf2175662 datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0xf228c432 ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xf249cb80 simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf2b69b34 ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0xf2bcc64b fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0xf2f5a80c tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf30fda27 lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0xf31b2588 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf35321ec xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xf36333b0 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xf36b3d97 dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf36e58ca device_register +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e17fb1 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0xf3e6c213 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xf3ef5c55 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xf420e0c9 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0xf43a4443 shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xf44625c3 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0xf4593a08 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4a22f4b pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xf4d2fa4a wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf4d700bb cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0xf4e30f13 ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51a4692 led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf53ecd33 dev_get_regmap +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 0xf5a890bf proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0xf5cb7bb5 rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xf5d4ad4d of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0xf6025ef6 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0xf6220516 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0xf65818b9 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xf65c0ffe debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0xf6bf0431 ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xf6d4cd10 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf6eeb07d blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xf6f88fc6 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xf718b12e skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xf7257c06 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xf7996e96 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0xf7c618cc ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0xf813e006 mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0xf82f16b3 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0xf830ede8 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xf846506f irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf87512b9 cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf877429c pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8886e7d sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0xf8d009ef stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0xf8e8e93a pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf902c058 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0xf9091ce7 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0xf909cdcf rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf93a6ae5 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xf949828d ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0xf974cf71 regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xf9cbd41b usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0xf9ce1eb5 usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf9fec64a cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0xfa012fe7 tracepoint_probe_register +EXPORT_SYMBOL_GPL vmlinux 0xfa0276b4 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xfa02d7b6 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xfa2f939d rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xfa7f00f5 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0xfa8edee2 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfa91b0fb sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xfa9dd504 timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xfaa69431 dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0xfaae6aa6 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0xfab42be5 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfac1996c class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0xfac3f1e5 ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb46c01b __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xfb525dfc pmac_i2c_get_type +EXPORT_SYMBOL_GPL vmlinux 0xfb52b77d __wake_up_locked +EXPORT_SYMBOL_GPL vmlinux 0xfb550d35 device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xfb5a85a9 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name +EXPORT_SYMBOL_GPL vmlinux 0xfb820d6a find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xfb9ebbaa bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0xfbbc4da6 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfc18fb2e timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0xfc283509 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xfc90bccf class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xfc92bd1e blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd1ed990 da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0xfd255686 md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xfd2b3e74 sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xfd376552 ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xfd56143f shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xfd590497 sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0xfd6abd3d page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfde1d9bf ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xfded08ba tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xfe0123c4 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0xfe757a8e usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfea24c01 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0xfeaa0d4b __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0xfec765bb sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xfec7c779 led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfeea1ffd transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0xfeee4581 ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff6ed0ad usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0xff7eb3f7 device_find_child +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc-smp.modules @@ -0,0 +1,3227 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250 +8250_dw +8250_pci +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +advansys +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +ambassador +amc6821 +amd5536udc +amd8111e +ams +ams369fg06 +analog +ansi_cprng +ans-lcd +anubis +aoe +apds9802als +apds990x +apm_emu +apm-emulation +apm_power +apm-power +appledisplay +appletalk +appletouch +applicom +ar7part +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +ata_generic +ata_piix +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +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 +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmac +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpck6 +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +BusLogic +bw-qcam +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpia2 +cpqarray +cpufreq_stats +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dmfe +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +dt3155v4l +dtl1_cs +dummy +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 +dwc3 +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +edac_core +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f75375s +f81232 +fakephp +farsync +fat +faulty +fb_sys_fops +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firestream +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +fusb300_udc +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hamachi +hampshire +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hifn_795x +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +horizon +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +htc-pasic3 +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-hydra +i2c-i801 +i2c-intel-mid +i2c-isch +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-xiic +i2o_block +i2o_bus +i2o_config +i2o_core +i2o_proc +i2o_scsi +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmpex +ib_mthca +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +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 +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jsm +kafs +kalmia +kaweth +kbic +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +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_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lmc +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac53c94 +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mace +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +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 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +mesh +metronomefb +metro-usb +mfd +mga +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv643xx_eth +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +nicstar +nilfs2 +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +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 +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +nsp32 +nsp_cs +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvidiafb +nvme +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +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 +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_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pmu_battery +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbs-battery +sc92031 +sca3000 +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +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-mixer-oss +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-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +soundcore +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 +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +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 +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 +tcm825x +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +therm_windtunnel +thmc50 +ths7303 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-usb +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +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 +uPD98402 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videocodec +videodev +virtio +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_ca91cx42 +vme_pio2 +vme_tsi148 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +wimax +winbond-840 +windfarm_core +wire +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_emac +xilinx_emaclite +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zatm +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +zlib_deflate +znet +zr36016 +zr36050 +zr36060 +zr36067 +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp.modules +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp.modules @@ -0,0 +1,3233 @@ +3c574_cs +3c589_cs +3c59x +3w-9xxx +3w-sas +3w-xxxx +6lowpan +6pack +8021q +8139cp +8139too +8250 +8250_dw +8250_pci +8390 +88pm860x_bl +88pm860x_onkey +88pm860x-ts +9p +9pnet +9pnet_rdma +9pnet_virtio +a100u2w +a3d +a8293 +aacraid +aat2870_bl +aat2870-regulator +ab3100 +ab3100-otp +ac97_bus +acard-ahci +acecad +acenic +act200l-sir +act_csum +act_gact +act_ipt +actisys-sir +act_mirred +act_nat +act_pedit +act_police +act_simple +act_skbedit +ad2s1200 +ad2s1210 +ad2s90 +ad5064 +ad525x_dpot +ad525x_dpot-i2c +ad525x_dpot-spi +ad5360 +ad5380 +ad5398 +ad5421 +ad5446 +ad5504 +ad5624r_spi +ad5686 +ad5764 +ad5791 +ad5930 +ad5933 +ad714x +ad714x-i2c +ad714x-spi +ad7150 +ad7152 +ad7192 +ad7280a +ad7291 +ad7298 +ad7314 +ad7414 +ad7418 +ad7476 +ad7606 +ad7746 +ad7780 +ad7793 +ad7816 +ad7877 +ad7879 +ad7879-i2c +ad7879-spi +ad7887 +ad799x +ad8366 +ad9832 +ad9834 +ad9850 +ad9852 +ad9910 +ad9951 +adcxx +ade7753 +ade7754 +ade7758 +ade7759 +ade7854 +ade7854-i2c +ade7854-spi +adfs +adi +adis16060 +adis16080 +adis16130 +adis16201 +adis16203 +adis16204 +adis16209 +adis16220 +adis16240 +adis16260 +adis16400 +adm1021 +adm1025 +adm1026 +adm1029 +adm1031 +adm8211 +adm9240 +adp5520_bl +adp5520-keys +adp5588-keys +adp5589-keys +adp8860_bl +adp8870_bl +ads1015 +ads7828 +ads7846 +ads7871 +adt7310 +adt7316 +adt7316-i2c +adt7316-spi +adt7410 +adt7411 +adt7462 +adt7470 +adt7475 +adummy +adutux +adv7170 +adv7175 +adv7180 +adv7183 +adv7343 +adxl34x +adxl34x-i2c +adxl34x-spi +adxrs450 +af_802154 +af9013 +af9033 +af_alg +affs +af_key +af-rxrpc +ah4 +ah6 +aha152x_cs +ahci +ahci_platform +aic79xx +aic7xxx +aic94xx +aiptek +aircable +airo +airo_cs +airport +ak881x +ak8975 +alauda +algif_hash +algif_skcipher +ali-ircc +alim7101_wdt +alphatrack +altera-ci +altera_jtaguart +altera_ps2 +altera-stapl +altera_uart +amc6821 +amd5536udc +amd8111e +amd8111_edac +amd8131_edac +amd-rng +ams369fg06 +analog +ansi_cprng +anubis +aoe +apds9802als +apds990x +appledisplay +appletalk +appletouch +applicom +ar7part +arc4 +arcmsr +arcnet +arc-rawmode +arc-rimi +ark3116 +arkfb +arptable_filter +arp_tables +arpt_mangle +as5011 +asc7621 +asix +asus_oled +async_memcpy +async_pq +async_raid6_recov +async_tx +async_xor +at24 +at25 +at76c50x-usb +ata_generic +ata_piix +atbm8830 +aten +ath +ath3k +ath5k +ath6kl_core +ath6kl_sdio +ath6kl_usb +ath9k +ath9k_common +ath9k_htc +ath9k_hw +ati_remote +ati_remote2 +atl1 +atl1c +atl1e +atl2 +atm +atmel +atmel_cs +atmel_mxt_ts +atmel_pci +atmtcp +atp870u +atxp1 +atyfb +au0828 +au8522_common +au8522_decoder +au8522_dig +aufs +auo_k1900fb +auo_k1901fb +auo_k190x +auo-pixcir-ts +authenc +authencesn +auth_rpcgss +autofs4 +avma1_cs +avm_cs +avmfritz +ax25 +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 +bch +bcm203x +bcm3510 +bcm5974 +bcma +bcma-hcd +bcm_wimax +be2iscsi +be2net +befs +belkin_sa +bfa +bfs +bfusb +bh1770glc +bh1780gli +binfmt_misc +block2mtd +blocklayoutdriver +blowfish_common +blowfish_generic +bluecard_cs +bluetooth +bma150 +bmp085-i2c +bmp085-spi +bna +bnep +bnx2 +bnx2fc +bnx2i +bnx2x +bonding +bpa10x +bpck +bpqether +bq27x00_battery +br2684 +brcmfmac +brcmsmac +brcmutil +bridge +broadsheetfb +bsd_comp +bsr +bt3c_cs +bt819 +bt856 +bt866 +bt878 +btcx-risc +btmrvl +btmrvl_sdio +btrfs +btsdio +bttv +btuart_cs +btusb +btwilink +bu21013_ts +budget +budget-av +budget-ci +budget-core +budget-patch +bw-qcam +c4 +c67x00 +cachefiles +cafe_ccic +cafe_nand +caif +caif_hsi +caif_serial +caif_socket +caif_usb +camellia_generic +can +can-bcm +can-dev +can-gw +can-raw +capi +capidrv +capmode +carl9170 +carminefb +cassini +cast5 +cast6 +catc +cb710 +cb710-mmc +cc770 +cc770_isa +cc770_platform +c_can +c_can_platform +cciss +ccm +cdc-acm +cdc_eem +cdc_ether +cdc_ncm +cdc-phonet +cdc_subset +cdc-wdm +ceph +cfg80211 +cfi_cmdset_0001 +cfi_cmdset_0002 +cfi_cmdset_0020 +cfi_probe +cfi_util +cfspi_slave +ch +ch341 +ch7006 +chipreg +chnl_net +ci13xxx_pci +cifs +ci_hdrc +cirrusfb +clearpad_tm1217 +clip +cls_basic +cls_cgroup +cls_flow +cls_fw +cls_route +cls_rsvp +cls_rsvp6 +cls_tcindex +cls_u32 +cm109 +cm4000_cs +cm4040_cs +cma3000_d0x +cma3000_d0x_i2c +cmtp +cnic +cobra +coda +com20020 +com20020_cs +com20020-pci +com90io +com90xx +comm +configfs +cordic +core +cp210x +cpc925_edac +cpia2 +cpufreq_spudemand +cpufreq_stats +cpu-notifier-error-inject +c-qcam +cramfs +crc7 +crc8 +crc-ccitt +crc-itu-t +cryptd +cryptoloop +crypto_null +crypto_user +crystalhd +cs5345 +cs53l32a +ctr +cts +cuse +cx18 +cx18-alsa +cx22700 +cx22702 +cx231xx +cx231xx-alsa +cx231xx-dvb +cx2341x +cx23885 +cx24110 +cx24113 +cx24116 +cx24123 +cx25821 +cx25821-alsa +cx25840 +cx82310_eth +cx8800 +cx8802 +cx88-alsa +cx88-blackbird +cx88-dvb +cx88-vp3054-i2c +cx88xx +cxacru +cxd2099 +cxd2820r +cxgb +cxgb3 +cxgb3i +cxgb4 +cxgb4i +cxgb4vf +cxt1e1 +cy8ctmg110_ts +cyber2000fb +cyberjack +cyclades +cyclomx +cycx_drv +cypress_cy7c63 +cypress_m8 +cytherm +cyttsp_core +cyttsp_i2c +cyttsp_spi +da9030_battery +da9034-ts +da903x +da903x_bl +da9052_bl +da9052_onkey +da9052-regulator +da9052_tsi +da9052_wdt +DAC960 +db9 +dc395x +dccp +dccp_diag +dccp_ipv4 +dccp_ipv6 +dccp_probe +ddbridge +de2104x +de4x5 +de600 +de620 +decnet +deflate +defxx +denali +des_generic +dib0070 +dib0090 +dib3000mb +dib3000mc +dib7000m +dib7000p +dib8000 +dibx000_common +digi_acceleport +diskonchip +divacapi +divadidd +diva_idi +diva_mnt +divas +dl2k +dlci +dlm +dm1105 +dm9601 +dm-bufio +dm-crypt +dmfe +dm-log +dm-mirror +dm-multipath +dm-persistent-data +dm-queue-length +dm-raid +dm-region-hash +dm-round-robin +dm-service-time +dm-snapshot +dm-thin-pool +dmx3191d +dm-zero +dnet +dn_rtmsg +doc2001plus +docecc +docg3 +docg4 +docprobe +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 +dt3155v4l +dtl1_cs +dummy +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 +dwc3 +dwc3-omap +dwc3-pci +dynapro +e100 +e1000 +e1000e +earth-pt1 +easycap +eata +ebt_802_3 +ebtable_broute +ebtable_filter +ebtable_nat +ebtables +ebt_among +ebt_arp +ebt_arpreply +ebt_dnat +ebt_ip +ebt_ip6 +ebt_limit +ebt_log +ebt_mark +ebt_mark_m +ebt_nflog +ebt_pkttype +ebt_redirect +ebt_snat +ebt_stp +ebt_vlan +ec100 +echo +edac_core +eeprom +eeprom_93cx6 +eeprom_93xx46 +eeti_ts +efs +egalax_ts +ehv_bytechan +electra_cf +elo +elsa_cs +em28xx +em28xx-alsa +em28xx-dvb +em28xx-rc +emc1403 +emc2103 +emc6w201 +em_cmp +emi26 +emi62 +em_meta +em_nbyte +empeg +ems_pci +ems_pcmcia +ems_usb +em_text +emu10k1-gp +em_u32 +enc28j60 +enclosure +eni +enic +epat +epia +epic100 +eql +esd_usb2 +esi-sir +esp4 +esp6 +et131x +ethoc +evbug +exofs +ext2 +extcon_class +extcon_gpio +extcon-max8997 +f75375s +f81232 +fakephp +farsync +fat +faulty +fc0011 +fcoe +fcrypt +fdomain +fdomain_cs +fealnx +ff-memless +firedtv +firewire-core +firewire-net +firewire-ohci +firewire-sbp2 +fit2 +fit3 +fixed +floppy +fm801-gp +fm_drv +fmvj18x_cs +forcedeth +fore_200e +freevxfs +friq +frpw +fsa9480 +fscache +fsl_elbc_nand +ft1000 +ft1000_pcmcia +ftdi-elan +ftdi_sio +ftl +fujitsu_ts +funsoft +g450_pll +g760a +g_acm_ms +gadgetfs +gamecon +gameport +garmin_gps +garp +g_audio +g_cdc +gcm +g_dbgp +gdmwm +gdth +generic +generic_bl +gen_probe +g_ether +gf128mul +gf2k +g_ffs +gfs2 +ghash-generic +g_hid +gigaset +girbil-sir +gl518sm +gl520sm +gl620a +gluebi +g_mass_storage +g_midi +g_ncm +g_nokia +go7007 +go7007-usb +goku_udc +gp2ap002a00f +gpio-74x164 +gpio-addr-flash +gpio-adp5520 +gpio-adp5588 +gpio-charger +gpio-fan +gpio-generic +gpio-ir-recv +gpio-janz-ttl +gpio_keys +gpio_keys_polled +gpio-max7300 +gpio-max7301 +gpio-max730x +gpio-max732x +gpio-mc33880 +gpio-mcp23s08 +gpio-ml-ioh +gpio_mouse +gpio-pca953x +gpio-pcf857x +gpio-rdc321x +gpio-regulator +gpio_tilt_polled +gpio-tps65912 +gpio-twl4030 +gpio_vbus +gpio-vx855 +gpio-wm831x +gpio-wm8350 +gpio-wm8994 +g_printer +gre +grip +grip_mp +g_serial +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_stv0680 +gspca_stv06xx +gspca_sunplus +gspca_t613 +gspca_topro +gspca_tv8532 +gspca_vc032x +gspca_vicam +gspca_xirlink_cit +gspca_zc3xx +gtco +guillemot +gunze +g_webcam +gxt4500 +g_zero +hamachi +hampshire +hangcheck-timer +hanwang +hci +hci_uart +hci_vhci +hdlc +hdlc_cisco +hdlcdrv +hdlc_fr +hdlc_ppp +hdlc_raw +hdlc_raw_eth +hdlc_x25 +hdpvr +he +hexium_gemini +hexium_orion +hfc4s8s_l1 +hfcmulti +hfcpci +hfcsusb +hfc_usb +hfs +hfsplus +hid +hid-a4tech +hid-apple +hid-aureal +hid-axff +hid-belkin +hid-cherry +hid-chicony +hid-cypress +hid-dr +hid-elecom +hid-emsff +hid-ezkey +hid-gaff +hid-generic +hid-gyration +hid-holtekff +hid-kensington +hid-keytouch +hid-kye +hid-lcpower +hid-logitech +hid-logitech-dj +hid-magicmouse +hid-microsoft +hid-monterey +hid-multitouch +hid-ntrig +hid-ortek +hidp +hid-petalynx +hid-picolcd +hid-pl +hid-primax +hid-prodikeys +hid-roccat +hid-roccat-arvo +hid-roccat-common +hid-roccat-isku +hid-roccat-kone +hid-roccat-koneplus +hid-roccat-kovaplus +hid-roccat-pyra +hid-saitek +hid-samsung +hid-sjoy +hid-sony +hid-speedlink +hid-sunplus +hid-tivo +hid-tmff +hid-topseed +hid-twinhan +hid-uclogic +hid-wacom +hid-waltop +hid-wiimote +hid-zpff +hid-zydacron +hisax +hisax_fcpcipnp +hisax_isac +hisax_st5481 +hmc5843 +hmc6352 +hopper +hostap +hostap_cs +hostap_pci +hostap_plx +hp100 +hp4x +hpfs +hpilo +hpsa +hptiop +hsi +hsi_char +hso +htc-pasic3 +hwa-hc +hwa-rc +hwmon-vid +hysdn +i1480-dfu-usb +i1480-est +i2400m +i2400m-sdio +i2400m-usb +i2c-algo-pca +i2c-ali1535 +i2c-ali1563 +i2c-ali15x3 +i2c-amd756 +i2c-amd8111 +i2c-designware-core +i2c-designware-pci +i2c-dev +i2c-diolan-u2c +i2c-eg20t +i2c-gpio +i2c-i801 +i2c-intel-mid +i2c-isch +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-xiic +i2o_block +i2o_bus +i2o_core +i2o_proc +i2o_scsi +i5k_amb +i6300esb +i740fb +i82092 +ib_addr +ib_cm +ib_core +ib_ipoib +ib_iser +ib_mad +ibmaem +ibmpex +ib_mthca +ibmveth +ibmvfc +ibmvscsic +ibmvstgt +ib_qib +ib_sa +ib_srp +ib_srpt +ib_ucm +ib_umad +ib_uverbs +icom +ics932s401 +idmouse +idt77252 +ieee802154 +ifb +iforce +igb +igbvf +iio_dummy +iio_hwmon +iio-trig-gpio +iio-trig-periodic-rtc +iio-trig-sysfs +ili210x +ili9320 +imm +imon +imx074 +ina2xx +industrialio +inet_diag +inexio +inftl +initio +input-polldev +int51x1 +intel_vr_nor +interact +ioc4 +io_edgeport +io_ti +iowarrior +ip6table_filter +ip6table_mangle +ip6table_raw +ip6_tables +ip6table_security +ip6t_ah +ip6t_eui64 +ip6t_frag +ip6t_hbh +ip6t_ipv6header +ip6t_mh +ip6t_REJECT +ip6t_rpfilter +ip6t_rt +ip6_tunnel +ipack +ipaq +ipcomp +ipcomp6 +ipddp +ipg +ip_gre +iphase +ipheth +ipip +ipmi_devintf +ipmi_msghandler +ipmi_poweroff +ipmi_si +ipmi_watchdog +ipoctal +ipr +ips +ip_set +ip_set_bitmap_ip +ip_set_bitmap_ipmac +ip_set_bitmap_port +ip_set_hash_ip +ip_set_hash_ipport +ip_set_hash_ipportip +ip_set_hash_ipportnet +ip_set_hash_net +ip_set_hash_netiface +ip_set_hash_netport +ip_set_list_set +iptable_filter +iptable_mangle +iptable_nat +iptable_raw +ip_tables +iptable_security +ipt_ah +ipt_CLUSTERIP +ipt_ECN +ipt_MASQUERADE +ipt_NETMAP +ipt_REDIRECT +ipt_REJECT +ipt_rpfilter +ipt_ULOG +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 +ipw +ipw2100 +ipw2200 +ipwireless +ipx +ircomm +ircomm-tty +irda +irda-usb +ir-jvc-decoder +ir-kbd-i2c +irlan +ir-lirc-codec +ir-mce_kbd-decoder +ir-nec-decoder +irnet +ir-rc5-decoder +ir-rc5-sz-decoder +ir-rc6-decoder +ir-sanyo-decoder +ir-sony-decoder +irtty-sir +ir-usb +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 +isp1301 +isp1362-hcd +isp1704_charger +isp1760 +it913x-fe +itd1000 +iuu_phoenix +ivtv +ivtvfb +iw_c2 +iw_cm +iw_cxgb3 +iw_cxgb4 +iwl3945 +iwl4965 +iwlegacy +iwlwifi +iwmc3200top +iwmc3200wifi +iw_nes +ix2505v +ixgb +ixgbe +ixgbevf +ixj +ixj_pcmcia +janz-cmodio +janz-ican3 +jc42 +jedec_probe +jffs2 +jfs +jmb38x_ms +jme +joydev +joydump +jsm +kafs +kalmia +kaweth +kbic +kbtab +kernelcapi +keucr +keyspan +keyspan_pda +keyspan_remote +kfifo_buf +khazad +kingsun-sir +kl5kusb105 +kobil_sct +ks0108 +ks0127 +ks8842 +ks8851 +ks8851_mll +ks959-sir +ksdazzle-sir +ksz884x +ktti +kvaser_pci +kxsd9 +kxtj9 +kyrofb +l1oip +l2tp_core +l2tp_debugfs +l2tp_ppp +l4f00242t03 +l64781 +lanai +lapb +lapbether +latch-addr-flash +lcd +ld9040 +ldusb +lec +leds-88pm860x +leds-adp5520 +leds-bd2802 +leds-da903x +leds-da9052 +leds-dac124s085 +leds-gpio +leds-lm3530 +leds-lm3533 +leds-lp3944 +leds-lp5521 +leds-lp5523 +leds-lt3593 +leds-max8997 +leds-mc13783 +leds-ot200 +leds-pca9532 +leds-pca955x +leds-pca9633 +leds-regulator +leds-tca6507 +leds-wm831x-status +leds-wm8350 +ledtrig-backlight +ledtrig-default-on +ledtrig-gpio +ledtrig-heartbeat +ledtrig-timer +ledtrig-transient +legousbtower +lg2160 +lgdt3305 +lgdt330x +lgs8gxx +lg-vl600 +lib80211 +lib80211_crypt_ccmp +lib80211_crypt_tkip +lib80211_crypt_wep +libahci +libceph +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_ttusbir +lirc_zilog +lis3l02dq +lis3lv02d +lis3lv02d_i2c +lis3lv02d_spi +litelink-sir +lkkbd +llc +llc2 +ll_temac +lm3533_bl +lm3533-core +lm3533-ctrlbank +lm63 +lm70 +lm73 +lm75 +lm77 +lm78 +lm80 +lm83 +lm8323 +lm8333 +lm85 +lm87 +lm90 +lm92 +lm93 +lm95241 +lm95245 +lms283gf05 +lnbp21 +lnbp22 +lockd +logger +lp +lp3971 +lp3972 +lp855x_bl +lp8727_charger +lpc_ich +lpc_sch +lpddr_cmds +lpfc +lru_cache +lrw +ltc4151 +ltc4215 +ltc4245 +ltc4261 +ltv350qv +lzo +m25p80 +m52790 +m88rs2000 +ma600-sir +mac80211 +mac80211_hwsim +mac-celtic +mac-centeuro +mac-croatian +mac-cyrillic +mac-gaelic +mac-greek +mac_hid +mac-iceland +mac-inuit +mac-roman +mac-romanian +mac-turkish +macvlan +macvtap +magellan +mantis +mantis_core +map_absent +map_funcs +map_ram +map_rom +matrix-keymap +matrix_keypad +matroxfb_accel +matroxfb_base +matroxfb_crtc2 +matroxfb_DAC1064 +matroxfb_g450 +matroxfb_maven +matroxfb_misc +matroxfb_Ti3026 +matrox_w1 +max1111 +max11801_ts +max1363 +max1586 +max16065 +max1619 +max1668 +max17040_battery +max17042_battery +max2165 +max3100 +max3107 +max6639 +max6642 +max6650 +max6875 +max7359_keypad +max8649 +max8660 +max8903_charger +max8925_bl +max8925_onkey +max8925_power +max8925-regulator +max8952 +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 +mcs5000_ts +mcs7780 +mcs7830 +mcs_touchkey +mct_u232 +md4 +mdc800 +mdio +mdio-bitbang +mdio-gpio +mdio-mux +mdio-mux-gpio +megaraid +megaraid_mbox +megaraid_mm +megaraid_sas +mem2mem_testdev +memstick +metronomefb +metro-usb +mfd +mga +michael_mic +microtek +minix +mip6 +mISDN_core +mISDN_dsp +mISDNinfineon +mISDNipac +mISDNisar +mk712 +mkiss +mlx4_core +mlx4_en +mlx4_ib +mma8450 +mmc_block +mmc_spi +mos7720 +mos7840 +moto_modem +moxa +mpoa +mpr121_touchkey +mpt2sas +mptbase +mptctl +mptfc +mptlan +mptsas +mptscsih +mptspi +mpu3050 +mrst_max3110 +msdos +msp3400 +mspro_block +mt2060 +mt2063 +mt20xx +mt2131 +mt2266 +mt312 +mt352 +mt9m001 +mt9m111 +mt9t031 +mt9t112 +mt9v011 +mt9v022 +mtd +mtd_blkdevs +mtdblock +mtdblock_ro +mtdchar +mtd_dataflash +mtdoops +mtdram +mtdswap +mtip32xx +mtouch +multipath +musb_hdrc +mv88e6060 +mv88e6xxx_drv +mvsas +mv_udc +mvumi +mwifiex +mwifiex_pcie +mwifiex_sdio +mwifiex_usb +mwl8k +mxb +mxl111sf-demod +mxl111sf-tuner +mxl5005s +mxl5007t +mxser +myri10ge +nand +nand_bch +nand_ecc +nand_ids +nandsim +natsemi +navman +nbd +nci +ncpfs +ne2k-pci +neofb +net1080 +net2272 +net2280 +netconsole +netjet +netprio_cgroup +netrom +netxen_nic +newtonkbd +nfc +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 +nfcwilink +nf_defrag_ipv4 +nf_defrag_ipv6 +nf_nat +nf_nat_amanda +nf_nat_ftp +nf_nat_h323 +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 +nfnetlink +nfnetlink_acct +nfnetlink_cttimeout +nfnetlink_log +nfnetlink_queue +nfs +nfs_acl +nfsd +nfs_layout_nfsv41_files +nftl +nf_tproxy_core +ngene +n_hdlc +nicstar +nilfs2 +niu +nls_ascii +nls_cp1250 +nls_cp1251 +nls_cp1255 +nls_cp437 +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 +nop-usb-xceiv +nosy +nouveau +nozomi +n_r3964 +ns558 +ns83820 +nsc-ircc +ntc_thermistor +ntfs +n_tracerouter +n_tracesink +nvidiafb +nvme +nx-crypto +nxt200x +nxt6000 +objlayoutdriver +ocfs2 +ocfs2_dlm +ocfs2_dlmfs +ocfs2_nodemanager +ocfs2_stackglue +ocfs2_stack_o2cb +ocfs2_stack_user +ocrdma +of_mmc_spi +ofpart +of_serial +old_belkin-sir +omap4-keypad +omfs +omninet +on20 +on26 +onenand +onenand_sim +opencores-kbd +openvswitch +oprofile +opticon +option +or51132 +or51211 +orinoco +orinoco_cs +orinoco_nortel +orinoco_plx +orinoco_tmd +orinoco_usb +osd +osdblk +osst +oti6858 +output +ov2640 +ov5642 +ov6650 +ov7670 +ov772x +ov9640 +ov9740 +overlayfs +oxu210hp-hcd +ozwpan +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 +pasemi-rng +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 +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_gbe +pch_phub +pch_uart +pch_udc +pci +pci200syn +pcips2 +pci-stub +pcmcia +pcmcia_core +pcmciamtd +pcmcia_rsrc +pcnet32 +pcnet_cs +pcrypt +pcspkr +pcwd_pci +pcwd_usb +pd +pd6729 +pda_power +pdc_adma +peak_pci +peak_pcmcia +peak_usb +pegasus +penmount +pf +pg +phantom +phison +phonedev +phonet +phram +physmap +physmap_of +pixcir_i2c_ts +pktcdvd +pktgen +pl2303 +platform_lcd +plat_nand +plat-ram +plip +plusb +pluto2 +plx_pci +pm2fb +pm3fb +pm8001 +pmc551 +pmcraid +pn533 +pn544 +pn544_hci +pn_pep +poseidon +powermate +ppa +ppdev +ppp_async +ppp_deflate +ppp_mppe +pppoatm +pppoe +pppox +ppp_synctty +pps_core +pps-gpio +pps-ldisc +pps_parport +pptp +prism2_usb +ps2mult +ps3disk +ps3flash +ps3_gelic +ps3-lpm +ps3rom +ps3stor_lib +ps3vram +pseries_energy +pseries-rng +psmouse +psnap +pt +pti +pvrusb2 +pwc +qcaux +qcserial +qinfo_probe +qla1280 +qla2xxx +qla3xxx +qla4xxx +qlcnic +qlge +qlogic_cs +qlogicfas408 +qmi_wwan +qnx4 +qnx6 +qt1010 +qt1070 +quatech2 +quota_tree +quota_v1 +quota_v2 +r128 +r592 +r6040 +r8169 +r8187se +r8192e_pci +r8192u_usb +r852 +r8712u +r8a66597-hcd +r8a66597-udc +rack-meter +radeon +radio-i2c-si470x +radio-keene +radio-maxiradio +radio-mr800 +radio-si4713 +radio-tea5764 +radio-timb +radio-usb-si470x +radio-wl1273 +raid0 +raid1 +raid10 +raid456 +raid6_pq +raid6test +raid_class +ramoops +raw +ray_cs +rbd +rc5t583-regulator +rc-adstech-dvb-t-pci +rc-alink-dtu-m +rc-anysee +rc-apac-viewcomp +rc-asus-pc39 +rc-asus-ps3-100 +rc-ati-tv-wonder-hd-600 +rc-ati-x10 +rc-avermedia +rc-avermedia-a16d +rc-avermedia-cardbus +rc-avermedia-dvbt +rc-avermedia-m135a +rc-avermedia-m733a-rm-k6 +rc-avermedia-rm-ks +rc-avertv-303 +rc-azurewave-ad-tu700 +rc-behold +rc-behold-columbus +rc-budget-ci-old +rc-cinergy +rc-cinergy-1400 +rc-core +rc-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-enltv2 +rc-encore-enltv-fm53 +rc-evga-indtube +rc-eztv +rc-flydvb +rc-flyvideo +rc-fusionhdtv-mce +rc-gadmei-rm008z +rc-genius-tvgo-a11mce +rc-gotview7135 +rc-hauppauge +rc-imon-mce +rc-imon-pad +rc-iodata-bctv7e +rc-it913x-v1 +rc-it913x-v2 +rc-kaiomy +rc-kworld-315u +rc-kworld-pc150u +rc-kworld-plus-tv-analog +rc-leadtek-y04g0051 +rc-lirc +rc-lme2510 +rc-loopback +rc-manli +rc-medion-x10 +rc-medion-x10-digitainer +rc-medion-x10-or2x +rc-msi-digivox-ii +rc-msi-digivox-iii +rc-msi-tvanywhere +rc-msi-tvanywhere-plus +rc-nebula +rc-nec-terratec-cinergy-xs +rc-norwood +rc-npgtech +rc-pctv-sedna +rc-pinnacle-color +rc-pinnacle-grey +rc-pinnacle-pctv-hd +rc-pixelview +rc-pixelview-002t +rc-pixelview-mk12 +rc-pixelview-new +rc-powercolor-real-angel +rc-proteus-2309 +rc-purpletv +rc-pv951 +rc-rc6-mce +rc-real-audio-220-32-keys +rc-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-trekstor +rc-tt-1500 +rc-twinhan1027 +rc-videomate-m1f +rc-videomate-s350 +rc-videomate-tv-pvr +rc-winfast +rc-winfast-usbii-deluxe +rdc321x-southbridge +rdma_cm +rdma_ucm +rds +rds_rdma +rds_tcp +redboot +redrat3 +reed_solomon +reiserfs +renesas_usbhs +rfc1051 +rfc1201 +rfcomm +rfd_ftl +rfkill-regulator +ring_sw +rio500 +rionet +rivafb +rj54n1cb0c +rmd128 +rmd160 +rmd256 +rmd320 +rndis_host +rndis_wlan +rocket +romfs +rose +rotary_encoder +rpadlpar_io +rpaphp +rpcsec_gss_krb5 +rt2400pci +rt2500pci +rt2500usb +rt2800lib +rt2800pci +rt2800usb +rt2x00lib +rt2x00pci +rt2x00usb +rt61pci +rt73usb +rtc-88pm860x +rtc-ab3100 +rtc-bq32k +rtc-bq4802 +rtc-cmos +rtc_cmos_setup +rtc-da9052 +rtc-ds1286 +rtc-ds1305 +rtc-ds1307 +rtc-ds1374 +rtc-ds1390 +rtc-ds1511 +rtc-ds1553 +rtc-ds1672 +rtc-ds1742 +rtc-ds3232 +rtc-ds3234 +rtc-em3027 +rtc-fm3130 +rtc-generic +rtc-isl12022 +rtc-isl1208 +rtc-m41t80 +rtc-m41t93 +rtc-m41t94 +rtc-m48t35 +rtc-m48t59 +rtc-m48t86 +rtc-max6900 +rtc-max6902 +rtc-max8925 +rtc-max8998 +rtc-mc13xxx +rtc-msm6242 +rtc-pcap +rtc-pcf2123 +rtc-pcf50633 +rtc-pcf8563 +rtc-pcf8583 +rtc-ps3 +rtc-r9701 +rtc-rp5c01 +rtc-rs5c348 +rtc-rs5c372 +rtc-rv3029c2 +rtc-rx8025 +rtc-rx8581 +rtc-s35390a +rtc-stk17ta8 +rtc-twl +rtc-v3020 +rtc-wm831x +rtc-wm8350 +rtc-x1205 +rtl2830 +rtl8150 +rtl8180 +rtl8187 +rtl8192c-common +rtl8192ce +rtl8192cu +rtl8192de +rtl8192se +rtllib +rtllib_crypt_ccmp +rtllib_crypt_tkip +rtllib_crypt_wep +rtlwifi +rts5139 +rts_pstor +rtsx_pci +rtsx_pci_ms +rtsx_pci_sdmmc +rxkad +s1d13xxxfb +s2250 +s2250-loader +s2255drv +s2io +s3fb +s5h1409 +s5h1411 +s5h1420 +s5m8767 +s6e63m0 +s921 +saa6588 +saa6752hs +saa7110 +saa7115 +saa7127 +saa7134 +saa7134-alsa +saa7134-dvb +saa7134-empress +saa7146 +saa7146_vv +saa7164 +saa717x +saa7185 +saa7191 +saa7706h +safe_serial +salsa20_generic +sata_inic162x +sata_mv +sata_nv +sata_promise +sata_qstor +sata_sil +sata_sil24 +sata_sis +sata_sx4 +sata_uli +sata_via +sata_vsc +savage +savagefb +sbe-2t3e3 +sbs-battery +sc92031 +sca3000 +scanlog +sch_atm +sch_cbq +sch_choke +sch_codel +sch_drr +sch_dsmark +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 +scsi_wait_scan +sctp +sctp_probe +sdhci +sdhci-of-esdhc +sdhci-of-hlwd +sdhci-pci +sdhci-pltfm +sdio_uart +sdricoh_cs +sedlbauer_cs +seed +seeq8005 +sep_driver +seqiv +ser_gigaset +serial_cs +serio_raw +sermouse +serpent_generic +serport +serqt_usb2 +ses +sfc +sha512_generic +shpchp +sht15 +sht21 +si21xx +si4713-i2c +sidewinder +siemens_mpi +sierra +sierra_net +sil164 +sir-dev +sis +sis190 +sis5595 +sis900 +sisfb +sisusbvga +sit +sja1000 +sja1000_isa +sja1000_of_platform +sja1000_platform +skfp +skge +sky2 +sl811_cs +sl811-hcd +slcan +slip +slram +sm501 +sm501fb +sm7xx +smb347-charger +smc91c92_cs +sm_common +sm_ftl +smm665 +smsc47m192 +smsc75xx +smsc9420 +smsc95xx +smsc-ircc2 +smscufx +smsdvb +smsmdtv +smssdio +smsusb +snd +snd-ac97-codec +snd-ad1889 +snd-ak4113 +snd-ak4114 +snd-ak4117 +snd-ak4xxx-adda +snd-ali5451 +snd-aloop +snd-als300 +snd-als4000 +snd-aoa +snd-aoa-codec-onyx +snd-aoa-codec-tas +snd-aoa-codec-toonie +snd-aoa-fabric-layout +snd-aoa-i2sbus +snd-aoa-soundbus +snd-atiixp +snd-atiixp-modem +snd-au8810 +snd-au8820 +snd-au8830 +snd-aw2 +snd-azt3328 +snd-bt87x +snd-ca0106 +snd-cmipci +snd-cs4281 +snd-cs46xx +snd-cs5530 +snd-cs5535audio +snd-cs8427 +snd-ctxfi +snd-darla20 +snd-darla24 +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-mixer-oss +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_ps3 +snd-pt2258 +snd-rawmidi +snd-riptide +snd-rme32 +snd-rme96 +snd-rme9652 +snd-sb16-dsp +snd-sb-common +snd-seq +snd-seq-device +snd-seq-dummy +snd-seq-midi +snd-seq-midi-emul +snd-seq-midi-event +snd-seq-virmidi +snd-serial-u16550 +snd-soc-88pm860x +snd-soc-ad1836 +snd-soc-ad193x +snd-soc-ad73311 +snd-soc-adau1373 +snd-soc-adav80x +snd-soc-ads117x +snd-soc-ak4104 +snd-soc-ak4535 +snd-soc-ak4641 +snd-soc-ak4642 +snd-soc-ak4671 +snd-soc-alc5623 +snd-soc-alc5632 +snd-soc-core +snd-soc-cs4270 +snd-soc-cs4271 +snd-soc-cs42l51 +snd-soc-cs42l52 +snd-soc-cs42l73 +snd-soc-cx20442 +snd-soc-da7210 +snd-soc-dfbmcs320 +snd-soc-jz4740-codec +snd-soc-l3 +snd-soc-lm4857 +snd-soc-lm49453 +snd-soc-max9768 +snd-soc-max98088 +snd-soc-max98095 +snd-soc-max9850 +snd-soc-max9877 +snd-soc-mc13783 +snd-soc-ml26124 +snd-soc-pcm3008 +snd-soc-rt5631 +snd-soc-sgtl5000 +snd-soc-simple-card +snd-soc-spdif +snd-soc-ssm2602 +snd-soc-sta32x +snd-soc-tlv320aic23 +snd-soc-tlv320aic26 +snd-soc-tlv320aic32x4 +snd-soc-tlv320aic3x +snd-soc-tlv320dac33 +snd-soc-tpa6130a2 +snd-soc-twl4030 +snd-soc-twl6040 +snd-soc-uda134x +snd-soc-uda1380 +snd-soc-wl1273 +snd-soc-wm1250-ev1 +snd-soc-wm2000 +snd-soc-wm2200 +snd-soc-wm5100 +snd-soc-wm8350 +snd-soc-wm8400 +snd-soc-wm8510 +snd-soc-wm8523 +snd-soc-wm8580 +snd-soc-wm8711 +snd-soc-wm8727 +snd-soc-wm8728 +snd-soc-wm8731 +snd-soc-wm8737 +snd-soc-wm8741 +snd-soc-wm8750 +snd-soc-wm8753 +snd-soc-wm8770 +snd-soc-wm8776 +snd-soc-wm8782 +snd-soc-wm8804 +snd-soc-wm8900 +snd-soc-wm8903 +snd-soc-wm8904 +snd-soc-wm8940 +snd-soc-wm8955 +snd-soc-wm8960 +snd-soc-wm8961 +snd-soc-wm8962 +snd-soc-wm8971 +snd-soc-wm8974 +snd-soc-wm8978 +snd-soc-wm8983 +snd-soc-wm8985 +snd-soc-wm8988 +snd-soc-wm8990 +snd-soc-wm8991 +snd-soc-wm8993 +snd-soc-wm8994 +snd-soc-wm8995 +snd-soc-wm8996 +snd-soc-wm9081 +snd-soc-wm9090 +snd-soc-wm-hubs +snd-sonicvibes +snd-tea575x-tuner +snd-timer +snd-trident +snd-ua101 +snd-usb-6fire +snd-usb-audio +snd-usb-caiaq +snd-usbmidi-lib +snd-usb-usx2y +snd-util-mem +snd-via82xx +snd-via82xx-modem +snd-virmidi +snd-virtuoso +snd-vx222 +snd-vx-lib +snd-vxpocket +snd-ymfpci +soc_camera +soc_camera_platform +soc_mediabus +softdog +softing +softing_cs +solo6x10 +solos-pci +soundcore +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 +spidev +spi-dw +spi-dw-midpci +spi-gpio +spi_ks8995 +spi-lm70llp +spi-oc-tiny +spi-tle62x0 +spi-topcliff-pch +spufs +squashfs +sr030pc30 +ssb +ssb-hcd +ssfdc +sst25l +ssu100 +st +st1232 +starfire +stb0899 +stb6000 +stb6100 +st_drv +stex +stinger +stir4200 +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 +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 +tcm825x +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 +tda10021 +tda10023 +tda10048 +tda1004x +tda10071 +tda10086 +tda18212 +tda18218 +tda18271 +tda18271c2dd +tda665x +tda7432 +tda8083 +tda8261 +tda826x +tda827x +tda8290 +tda9840 +tda9887 +tdfx +tdo24m +tea +tea5761 +tea5767 +tea6415c +tea6420 +tef6862 +tehuti +tekram-sir +teles_cs +test-kstrtox +test_power +tg3 +tgr192 +therm_pm72 +thmc50 +ths7303 +ti_dac7512 +tifm_7xx1 +tifm_core +tifm_ms +tifm_sd +timb_dma +timberdale +timblogiw +timbuart +timed_gpio +timeriomem-rng +tipc +ti_usb_3410_5052 +tlan +tlv320aic23b +tm6000 +tm6000-alsa +tm6000-dvb +tmdc +tmiofb +tmp102 +tmp401 +tmp421 +tmscsim +toim3232-sir +touchit213 +touchright +touchwin +tpci200 +tpm_atmel +tps6105x +tps6105x-regulator +tps62360-regulator +tps65010 +tps65023-regulator +tps6507x +tps6507x-regulator +tps6507x-ts +tps65090-regulator +tps65217 +tps65217-regulator +tps6524x-regulator +tps6586x-regulator +tps65910-regulator +tps65912-regulator +trancevibrator +tranzport +tridentfb +ts_bm +tsc2005 +tsc2007 +tsc40 +ts_fsm +ts_kmp +tsl2550 +tsl2563 +tsl2583 +tsl2x7x_core +ttm +ttpci-eeprom +ttusb_dec +ttusbdecfe +tua6100 +tua9001 +tulip +tuner +tuner-simple +tuner-types +tuner-xc2028 +tunnel4 +tunnel6 +turbografx +tusb6010 +tvaudio +tveeprom +tvp514x +tvp5150 +tvp7002 +tw9910 +twidjoy +twl4030_charger +twl4030_keypad +twl4030-madc +twl4030-madc-hwmon +twl4030-pwrbutton +twl4030-usb +twl4030-vibra +twl4030_wdt +twl6030-pwm +twl6030-usb +twl6040-vibra +twofish_common +twofish_generic +typhoon +u132-hcd +uartlite +ub +ubi +ubifs +ucb1400_core +ucb1400_ts +udc-core +udf +udl +udlfb +udp_diag +ueagle-atm +ufs +ufshcd +uio +uio_aec +uio_cif +uio_netx +uio_pci_generic +uio_pdrv +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 +usb8xxx +usbatm +usb_debug +usb_gigaset +usbhid +usbip-core +usbip-host +usbkbd +usblcd +usbled +usblp +usbmon +usbmouse +usbnet +usbserial +usbsevseg +usb-storage +usbtest +usbtmc +usbtouchscreen +usbvision +usb_wwan +userspace-consumer +ushc +uss720 +uvcvideo +uvesafb +uwb +v4l2-common +v4l2-int-device +v4l2-mem2mem +vcan +ves1820 +ves1x93 +veth +vfat +vga16fb +vgastate +vgg2432a4 +vhci-hcd +vhost_net +via +via686a +via-ircc +via-rhine +via-sdmmc +via-velocity +videobuf2-core +videobuf2-dma-contig +videobuf2-memops +videobuf2-vmalloc +videobuf-core +videobuf-dma-contig +videobuf-dma-sg +videobuf-dvb +videobuf-vmalloc +videodev +virtio +virtio_balloon +virtio_blk +virtio_console +virtio_mmio +virtio_net +virtio_pci +virtio_ring +virtio-rng +virtio_scsi +virtual +visor +vivi +vivopay-serial +vlsi_ir +vmac +vme +vme_pio2 +vme_user +vme_vmivme7805 +vmwgfx +vmxnet3 +vp27smpx +vpx3220 +vs6624 +vsxxxaa +vt6655_stage +vt8231 +vt8623fb +vub300 +vx855 +vxge +w1_bq27000 +w1_ds2408 +w1_ds2423 +w1_ds2431 +w1_ds2433 +w1_ds2760 +w1_ds2780 +w1_ds2781 +w1-gpio +w1_smem +w1_therm +w35und +w5100 +w5300 +w6692 +w83781d +w83791d +w83792d +w83793 +w83795 +w83977af_ir +w83l785ts +w83l786ng +w9966 +wacom +wacom_i2c +wacom_w8001 +walkera0701 +wanrouter +wanxl +warrior +wbsd +wdrtas +wdt_pci +whci +whci-hcd +whc-rc +whiteheat +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 +wis-ov7640 +wis-saa7113 +wis-saa7115 +wis-sony-tuner +wis-tw2804 +wis-tw9903 +wis-uda1342 +wl1251 +wl1251_sdio +wl1251_spi +wl1273-core +wl12xx +wl3501_cs +wlags49_h25_cs +wlags49_h2_cs +wlcore +wlcore_sdio +wlcore_spi +wm831x_backup +wm831x_bl +wm831x-dcdc +wm831x-hwmon +wm831x-isink +wm831x-ldo +wm831x-on +wm831x_power +wm831x-ts +wm831x_wdt +wm8350-hwmon +wm8350_power +wm8350-regulator +wm8350_wdt +wm8400-regulator +wm8739 +wm8775 +wm8994-regulator +wm97xx-ts +wp512 +wusb-cbaf +wusbcore +wusb-wa +x25 +x25_asy +xc4000 +xc5000 +xcbc +xfrm4_mode_beet +xfrm4_mode_transport +xfrm4_mode_tunnel +xfrm4_tunnel +xfrm6_mode_beet +xfrm6_mode_ro +xfrm6_mode_transport +xfrm6_mode_tunnel +xfrm6_tunnel +xfrm_algo +xfrm_ipcomp +xfrm_user +xfs +xgifb +xilinx_ps2 +xilinx_uartps +xirc2ps_cs +xircom_cb +xor +xpad +xprtrdma +x_tables +xt_addrtype +xt_AUDIT +xt_CHECKSUM +xt_CLASSIFY +xt_cluster +xt_comment +xt_connbytes +xt_connlimit +xt_connmark +xt_CONNSECMARK +xt_conntrack +xt_cpu +xt_CT +xt_dccp +xt_devgroup +xt_dscp +xt_DSCP +xt_ecn +xt_esp +xt_hashlimit +xt_helper +xt_hl +xt_HL +xt_HMARK +xt_IDLETIMER +xt_iprange +xt_ipvs +xtkbd +xt_LED +xt_length +xt_limit +xt_LOG +xt_mac +xt_mark +xt_multiport +xt_nfacct +xt_NFLOG +xt_NFQUEUE +xt_NOTRACK +xt_osf +xt_owner +xt_physdev +xt_pkttype +xt_policy +xt_quota +xt_rateest +xt_RATEEST +xt_realm +xt_recent +xts +xt_sctp +xt_SECMARK +xt_set +xt_socket +xt_state +xt_statistic +xt_string +xt_tcpmss +xt_TCPMSS +xt_TCPOPTSTRIP +xt_tcpudp +xt_TEE +xt_time +xt_TPROXY +xt_TRACE +xt_u32 +xusbatm +xz_dec_test +yam +yealink +yellowfin +yenta_socket +yurex +zaurus +zd1201 +zd1211rw +zhenhua +zio +zl10036 +zl10039 +zl10353 +zlib +znet +zr364xx --- linux-3.5.0.orig/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp +++ linux-3.5.0/debian.master/abi/3.5.0-27.45/powerpc/powerpc64-smp @@ -0,0 +1,12998 @@ +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 0x3f971469 suni_init +EXPORT_SYMBOL drivers/bcma/bcma 0x4f53d750 bcma_core_dma_translation +EXPORT_SYMBOL drivers/block/drbd/drbd 0x35131b36 drbd_role_str +EXPORT_SYMBOL drivers/block/drbd/drbd 0x5c165453 drbd_set_st_err_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 0x02def668 pi_release +EXPORT_SYMBOL drivers/block/paride/paride 0x1950d08b pi_schedule_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x241ff9d8 pi_read_block +EXPORT_SYMBOL drivers/block/paride/paride 0x25aab1f5 paride_register +EXPORT_SYMBOL drivers/block/paride/paride 0x45875b7b pi_do_claimed +EXPORT_SYMBOL drivers/block/paride/paride 0x6bb48d28 pi_write_regr +EXPORT_SYMBOL drivers/block/paride/paride 0x7e498eda pi_init +EXPORT_SYMBOL drivers/block/paride/paride 0x99b03c42 pi_write_block +EXPORT_SYMBOL drivers/block/paride/paride 0xade3e6ec pi_connect +EXPORT_SYMBOL drivers/block/paride/paride 0xb50644e7 pi_read_regr +EXPORT_SYMBOL drivers/block/paride/paride 0xc25ea818 paride_unregister +EXPORT_SYMBOL drivers/block/paride/paride 0xcecff416 pi_disconnect +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1348760d ipmi_request_settime +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x16dcec76 ipmi_set_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x19e2bd3d ipmi_register_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1a10c898 ipmi_set_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x1aba5db8 ipmi_unregister_smi +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x340eef92 ipmi_smi_watcher_unregister +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x40f2b10c ipmi_alloc_smi_msg +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x423b776a ipmi_create_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x4c971bec ipmi_smi_msg_received +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x524f6f51 ipmi_get_my_address +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5e80f37c ipmi_unregister_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x5fcdcc05 ipmi_get_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x654e864f ipmi_get_smi_info +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x67cb9784 ipmi_poll_interface +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x78fd36e7 ipmi_request_supply_msgs +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x804f922a ipmi_addr_length +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x8c8ee770 ipmi_destroy_user +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x96cbcc81 ipmi_get_version +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0x98a5a8da ipmi_smi_add_proc_entry +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa28a2ace ipmi_set_gets_events +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xa2a98b91 ipmi_get_maintenance_mode +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xd8706a75 ipmi_smi_watcher_register +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe0fa83f2 ipmi_register_for_cmd +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe4f4665b ipmi_validate_addr +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xe6ab72a6 ipmi_set_my_LUN +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xf2576cb9 ipmi_smi_watchdog_pretimeout +EXPORT_SYMBOL drivers/char/ipmi/ipmi_msghandler 0xfcb77cfd ipmi_free_recv_msg +EXPORT_SYMBOL drivers/edac/edac_core 0xfaa9ccf6 edac_mc_find +EXPORT_SYMBOL drivers/firewire/firewire-core 0x04d0f641 fw_core_remove_descriptor +EXPORT_SYMBOL drivers/firewire/firewire-core 0x0f7d6af8 fw_csr_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x10108be4 fw_core_remove_card +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 0x4935390f fw_schedule_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x58780409 fw_iso_context_create +EXPORT_SYMBOL drivers/firewire/firewire-core 0x5c39138d fw_iso_context_stop +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 0x6d333f12 fw_iso_buffer_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x74d47da1 fw_iso_context_destroy +EXPORT_SYMBOL drivers/firewire/firewire-core 0x76e38858 fw_iso_context_flush_completions +EXPORT_SYMBOL drivers/firewire/firewire-core 0x7b5a8308 fw_core_handle_bus_reset +EXPORT_SYMBOL drivers/firewire/firewire-core 0x854719aa fw_run_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0x86468d44 fw_rcode_string +EXPORT_SYMBOL drivers/firewire/firewire-core 0x8a21f80e fw_iso_resource_manage +EXPORT_SYMBOL drivers/firewire/firewire-core 0x90863005 fw_high_memory_region +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94379e82 fw_bus_type +EXPORT_SYMBOL drivers/firewire/firewire-core 0x94830f96 fw_card_add +EXPORT_SYMBOL drivers/firewire/firewire-core 0x98c06391 fw_iso_context_queue +EXPORT_SYMBOL drivers/firewire/firewire-core 0x9bd2366f fw_iso_context_start +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa00f1cb9 fw_core_handle_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa413f2c6 fw_core_handle_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xa7c45eed fw_fill_response +EXPORT_SYMBOL drivers/firewire/firewire-core 0xb33b8486 fw_core_remove_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xbf29b7c8 fw_card_initialize +EXPORT_SYMBOL drivers/firewire/firewire-core 0xc54ceb71 fw_iso_buffer_init +EXPORT_SYMBOL drivers/firewire/firewire-core 0xdb25ad15 fw_cancel_transaction +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe629141b fw_device_enable_phys_dma +EXPORT_SYMBOL drivers/firewire/firewire-core 0xe9c6178b fw_iso_context_queue_flush +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf0e53e3d fw_send_request +EXPORT_SYMBOL drivers/firewire/firewire-core 0xf21ade01 fw_core_add_address_handler +EXPORT_SYMBOL drivers/firewire/firewire-core 0xfa504a48 fw_send_response +EXPORT_SYMBOL drivers/gpu/drm/drm 0x003c7ef1 drm_mode_create_dvi_i_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0085a4a4 drm_gem_free_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x015c4620 drm_mm_scan_add_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x02aa2644 drm_noop +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03250dde drm_mm_get_block_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x03745f39 drm_mode_width +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0423a92b drm_gem_vm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0489a49e drm_sysfs_connector_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x04af1a05 drm_mm_pre_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0701b412 drm_getsarea +EXPORT_SYMBOL drivers/gpu/drm/drm 0x08412968 drm_rmmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x09903806 drm_debugfs_remove_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0a5c51b5 drm_calc_timestamping_constants +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ae4b94c drm_ht_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0ba666cd drm_crtc_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0e8ff9e2 drm_prime_add_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f076286 drm_mm_scan_remove_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f64d19b drm_core_reclaim_buffers +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f739d9c drm_mm_get_block_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x0f82e87f drm_mm_replace_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1034e8a4 drm_mode_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1113528d drm_mode_prune_invalid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x11b876b7 drm_mm_put_block_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x12c6276a drm_buffer_read_object +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13ad694f drm_handle_vblank +EXPORT_SYMBOL drivers/gpu/drm/drm 0x13baf53a drm_mode_set_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x142b8b35 drm_buffer_copy_from_user +EXPORT_SYMBOL drivers/gpu/drm/drm 0x148bb5d4 drm_mm_remove_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x15b2c2c4 drm_mode_config_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1619c2e4 drm_get_platform_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x162b3afb drm_i2c_encoder_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1692178e drm_ati_pcigart_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1784700e drm_property_create_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1828d227 drm_agp_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x18fe98e1 drm_prime_sg_to_page_addr_arrays +EXPORT_SYMBOL drivers/gpu/drm/drm 0x192c6de0 drm_cvt_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x194eadaa drm_edid_header_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x19b5ff6b drm_add_edid_modes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1a770ac3 drm_detect_hdmi_monitor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1bccdf4c drm_mm_clean +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1caed3e2 drm_agp_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1d72a5fa drm_get_last_vbltimestamp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x1f4ac4ca drm_select_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x20645642 drm_debug +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2204f7b6 drm_mm_debug_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x23714db6 drm_prime_remove_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2396f958 drm_idlelock_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x254e7533 drm_framebuffer_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x25e03f1a drm_mode_parse_command_line_for_connector +EXPORT_SYMBOL drivers/gpu/drm/drm 0x28ea2fa4 drm_mm_replace_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2a8d844f drm_mm_get_block_range_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2d2a0dd8 drm_mode_debug_printmodeline +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2dfcdf2b drm_property_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2e4ebed2 drm_mode_config_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x2f902831 drm_vblank_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x300ff8fe drm_calc_vbltimestamp_from_scanoutpos +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3074f033 drm_order +EXPORT_SYMBOL drivers/gpu/drm/drm 0x30b83bcf drm_agp_enable +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3255403d drm_mode_connector_attach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0x33d8a9eb drm_master_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x34cad11d drm_get_pci_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x35b084d9 drm_agp_unbind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x363fdcaf drm_gem_object_handle_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3672f892 drm_agp_bind_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x38a4f7ae drm_format_num_planes +EXPORT_SYMBOL drivers/gpu/drm/drm 0x39131c59 drm_mode_connector_update_edid_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ac1fef9 drm_mode_legacy_fb_format +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b7e1271 drm_edid_block_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3b9d009a drm_format_plane_cpp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3df0ab99 drm_gem_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3df119ee drm_agp_info +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3eb37b9d drm_ht_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3f2cd798 drm_mode_hsync +EXPORT_SYMBOL drivers/gpu/drm/drm 0x3ffc66b0 drm_mm_remove_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x403463e1 drm_ati_pcigart_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4089e0df drm_gem_object_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40b90c63 drm_addbufs_pci +EXPORT_SYMBOL drivers/gpu/drm/drm 0x40ff876a drm_mm_clean_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4197e469 drm_mm_insert_node_in_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x41de6d1b drm_platform_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4250a315 drm_pci_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43384bd9 drm_buffer_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4384917e drm_master_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0x43d6054e drm_clflush_pages +EXPORT_SYMBOL drivers/gpu/drm/drm 0x44e9fadf drm_agp_bind +EXPORT_SYMBOL drivers/gpu/drm/drm 0x47d586f2 drm_mm_insert_node_in_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4838d1dc drm_get_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x48395b91 drm_gtf_mode_complex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x498dcb5e drm_ut_debug_printk +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4a934501 drm_mode_config_reset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4adb29ce drm_mode_group_init_legacy_group +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b2a58d9 drm_mode_vrefresh +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4b65545b drm_mm_scan_remove_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4c511235 drm_edid_is_valid +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4cc18560 drm_rmmap_locked +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4ea1f5a2 drm_gem_object_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x4fd8943b drm_mode_duplicate +EXPORT_SYMBOL drivers/gpu/drm/drm 0x539400f8 drm_mode_find_dmt +EXPORT_SYMBOL drivers/gpu/drm/drm 0x53bc8c5c drm_global_mutex +EXPORT_SYMBOL drivers/gpu/drm/drm 0x549b2f7d drm_mode_create_dithering_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5878ff04 drm_put_minor +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5900666c drm_idlelock_take +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5ab57f96 drm_mode_probed_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5d7318dc drm_global_item_ref +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5df8b0e0 drm_i2c_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x5fb39261 drm_mode_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6044956f drm_mm_takedown +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61c0c05a drm_mm_insert_node_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x61d327fd drm_mode_detachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x627e35d3 drm_mode_equal +EXPORT_SYMBOL drivers/gpu/drm/drm 0x629c05e1 drm_clflush_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x62e17714 drm_property_create_bitmask +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6350d9ec drm_gem_handle_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6484d31a drm_mode_create_dirty_info_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x65656881 drm_vblank_get +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6899b01c drm_connector_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x68b1867f drm_mm_dump_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6a532226 drm_plane_cleanup +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 0x6d6b3bf7 drm_unplug_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6dec15c3 drm_connector_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6e114b2b drm_agp_acquire +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6ec810b2 drm_irq_install +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f6219c1 drm_mode_object_find +EXPORT_SYMBOL drivers/gpu/drm/drm 0x6f89baa3 drm_vblank_pre_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0x73e91575 drm_prime_lookup_imported_buf_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0x75bdf69f drm_mode_create_from_cmdline_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a8f4a98 drm_gem_prime_handle_to_fd +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7a9230d4 drm_mm_init_scan_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7c3d88d1 drm_mm_debug_table_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7cb26d39 drm_mm_insert_node +EXPORT_SYMBOL drivers/gpu/drm/drm 0x7d8fe09a drm_mm_search_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x804d006e drm_vblank_count_and_time +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80b8a494 drm_addmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0x80dbdab6 drm_mm_init_scan_with_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0x863a4010 drm_mode_remove +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ac11b4b drm_release +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8ae63ef9 drm_plane_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c25b08b drm_get_connector_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8c510862 drm_find_cea_extension +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 0x8f2c28b2 drm_connector_property_get_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f67e148 drm_prime_pages_to_sg +EXPORT_SYMBOL drivers/gpu/drm/drm 0x8f7df3a7 drm_object_attach_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0x91b07542 drm_encoder_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x921dbacb drm_mode_attachmode_crtc +EXPORT_SYMBOL drivers/gpu/drm/drm 0x925c53d3 drm_open +EXPORT_SYMBOL drivers/gpu/drm/drm 0x955758f8 drm_poll +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9612ac72 drm_mm_put_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0x96ff60ec drm_unbind_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9745d638 drm_err +EXPORT_SYMBOL drivers/gpu/drm/drm 0x977f4d7a drm_gem_vm_close +EXPORT_SYMBOL drivers/gpu/drm/drm 0x99f91de4 drm_mm_init_scan +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b402ae6 drm_mm_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9b731059 drm_crtc_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c76316d drm_free_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9c9f5d8a drm_pci_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9d3257bd drm_edid_to_eld +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9dd2c6b7 drm_mm_dump_table +EXPORT_SYMBOL drivers/gpu/drm/drm 0x9fd5359e drm_mode_height +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa0acb253 drm_mode_connector_detach_encoder +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa1eabd87 drm_mode_list_concat +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa21b3df0 drm_prime_destroy_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa480238f drm_agp_free +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa5e83752 drm_core_ioremapfree +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa625d949 drm_gem_handle_delete +EXPORT_SYMBOL drivers/gpu/drm/drm 0xa7984573 drm_mm_get_block_generic +EXPORT_SYMBOL drivers/gpu/drm/drm 0xaa9571ed drm_compat_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xad87b1f5 drm_fasync +EXPORT_SYMBOL drivers/gpu/drm/drm 0xae928b28 drm_property_create +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb0092f91 drm_vblank_off +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb39cc856 drm_gem_object_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb43d9e55 drm_ioctl +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb5540008 drm_global_item_unref +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb7cb3845 drm_sysfs_connector_add +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb93ce83e drm_mode_create_tv_properties +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb95beb55 drm_object_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9ab6889 drm_mm_search_free_in_range_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xb9c201b9 drm_gem_prime_fd_to_handle +EXPORT_SYMBOL drivers/gpu/drm/drm 0xba7c744d drm_core_ioremap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbae4719f drm_gem_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbd8fb0b4 drm_get_edid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe001c53 drm_property_add_enum +EXPORT_SYMBOL drivers/gpu/drm/drm 0xbe133253 drm_pci_alloc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc2cccd02 drm_mmap +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc38a8bb8 drm_mm_search_free_generic_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc414c422 drm_vblank_offdelay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc4222350 drm_core_ioremap_wc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc5c874b1 drm_put_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xc88c3123 drm_av_sync_delay +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca45efbc drm_format_horz_chroma_subsampling +EXPORT_SYMBOL drivers/gpu/drm/drm 0xca878f84 drm_pci_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcc97c1a6 drm_mode_create_scaling_mode_property +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcd0fc417 drm_ht_just_insert_please +EXPORT_SYMBOL drivers/gpu/drm/drm 0xce0bb45c drm_vblank_count +EXPORT_SYMBOL drivers/gpu/drm/drm 0xcfd08976 drm_connector_property_set_value +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd2335101 drm_fb_get_bpp_depth +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd303731b drm_mm_init_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd3bd68c9 drm_mm_init_scan_with_range_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd431287e drm_mm_scan_add_block +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd48e3f86 drm_vblank_post_modeset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xd80d13bc drm_vblank_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda19192a drm_addbufs_agp +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda65c626 drm_encoder_cleanup +EXPORT_SYMBOL drivers/gpu/drm/drm 0xda777a92 drm_gtf_mode +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdbb5a9f5 drm_ht_remove_item +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc147aad drm_gem_private_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdc2bf8a5 drm_mode_connector_list_update +EXPORT_SYMBOL drivers/gpu/drm/drm 0xde4a3e15 drm_prime_init_file_private +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf4ca3d8 drm_debugfs_create_files +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf5e704c drm_framebuffer_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xdf809bb3 drm_fill_in_dev +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe0f83154 drm_platform_exit +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe28843c0 drm_mm_pre_get_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe4ea70f2 drm_mm_takedown_hsw +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe56c05b0 drm_mode_validate_clocks +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5bda1aa drm_mode_crtc_set_gamma_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe5f4c61f drm_connector_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xe6403777 drm_mm_search_free_in_range +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 0xe952ca4b drm_connector_unplug_all +EXPORT_SYMBOL drivers/gpu/drm/drm 0xedca5fe0 drm_sysfs_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1421d13 drm_mode_sort +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf147b611 drm_mode_copy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf1a74a71 drm_add_modes_noedid +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf2c80271 drm_mode_validate_size +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf59c8776 drm_prime_gem_destroy +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf659de8a drm_mode_set_crtcinfo +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf6a28fcf drm_gem_object_init +EXPORT_SYMBOL drivers/gpu/drm/drm 0xf99bc845 drm_read +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfa34e6ad drm_probe_ddc +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfbc246fc drm_irq_uninstall +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfcbf81ff drm_vblank_put +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfd227c10 drm_get_encoder_name +EXPORT_SYMBOL drivers/gpu/drm/drm 0xfef3974d drm_property_create_range +EXPORT_SYMBOL drivers/gpu/drm/drm 0xff07fccd drm_gem_create_mmap_offset +EXPORT_SYMBOL drivers/gpu/drm/drm 0xffc6c87a drm_detect_monitor_audio +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x0041757a drm_kms_helper_poll_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07d0f139 drm_helper_crtc_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x07d6ca37 i2c_dp_aux_add_bus +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x1d77f44f drm_helper_hpd_irq_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x278de5a9 drm_helper_disable_unused_functions +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x2d7a787f drm_dp_clock_recovery_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x3a4fb9b6 drm_fb_helper_single_fb_probe +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x4be3edff drm_fb_helper_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x55fad09d drm_helper_encoder_in_use +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x568050db drm_kms_helper_poll_enable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x581a4b3a drm_crtc_helper_set_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x663eda61 drm_helper_probe_single_connector_modes +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x6c47e7a7 drm_helper_mode_fill_fb_struct +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x70bf3d92 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 0x84188f76 drm_fb_helper_fill_fix +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x8eb3e28a drm_fb_helper_initial_config +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x91e490ea drm_crtc_helper_set_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x94275472 drm_fb_helper_set_par +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9d251144 drm_fb_helper_panic +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0x9edd4ae9 drm_helper_resume_force_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa2d92211 drm_fb_helper_pan_display +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa8d6809d drm_dp_bw_code_to_link_rate +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xa955d858 drm_fb_helper_fill_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xaa2f163b drm_helper_move_panel_connectors_to_head +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xac64ec92 drm_kms_helper_poll_disable +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb37a0603 drm_dp_link_train_channel_eq_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xb5d992df drm_fb_helper_single_add_all_connectors +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xba5e68b3 drm_fb_helper_fini +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc469c244 drm_fb_helper_restore +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xc7fd39bb drm_dp_channel_eq_ok +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcc00f29a drm_fb_helper_hotplug_event +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xcdb4358a drm_fb_helper_setcmap +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd02c73c7 drm_dp_link_train_clock_recovery_delay +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd2d61e9e drm_fb_helper_restore_fbdev_mode +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd5d8b6b8 drm_dp_get_adjust_request_pre_emphasis +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xd91d6e26 drm_fb_helper_blank +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xdce34f1e drm_fb_helper_check_var +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xe3c36c03 drm_kms_helper_poll_init +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xf0e0f11d drm_helper_connector_dpms +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfbdf1bea drm_fb_helper_debug_enter +EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfee43a69 drm_dp_get_adjust_request_voltage +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x20ead29c drm_usb_init +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0x78571181 drm_usb_exit +EXPORT_SYMBOL drivers/gpu/drm/drm_usb 0xafdc05d3 drm_get_usb_dev +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x05b348b1 ttm_bo_synccpu_write_grab +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x0b7beebb ttm_bo_unmap_virtual +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x13953027 ttm_bo_synccpu_write_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x145e6a73 ttm_base_object_lookup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x148c7088 ttm_bo_kmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x15b60fe0 ttm_bo_wait +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1be84354 ttm_bo_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x1d89df73 ttm_suspend_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x25392771 ttm_ref_object_add +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x27a34366 ttm_agp_tt_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x29703288 ttm_bo_reserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2b54aa9a ttm_object_file_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x2c018df0 ttm_agp_tt_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x30e499dc ttm_bo_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x3fd155ed ttm_read_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x432352a3 ttm_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x447b0274 ttm_dma_tt_fini +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x45e744b1 ttm_bo_unreserve +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x480309c4 ttm_bo_wait_unreserved +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x4e8dd264 ttm_bo_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x560adcce ttm_tt_set_placement_caching +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x564e1aee ttm_bo_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x5d208c90 ttm_bo_move_accel_cleanup +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x6052860c ttm_round_pot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x61bdb34f ttm_eu_fence_buffer_objects +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x66ecd427 ttm_page_alloc_debugfs +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x720fbb6e ttm_bo_move_ttm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7586fb3a ttm_eu_reserve_buffers +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x7dcb1e64 ttm_suspend_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8026e6b4 ttm_pool_unpopulate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x80d86f0e ttm_object_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x814a052a ttm_pool_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85477881 ttm_base_object_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x85e6ba65 ttm_bo_move_memcpy +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x86a4066d ttm_eu_backoff_reservation +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8832162b ttm_base_object_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8a0d0077 ttm_tt_bind +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x8d14adbf ttm_io_prot +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x940438e7 ttm_write_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x98ff5f01 ttm_object_device_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x998e45c0 ttm_ref_object_base_unref +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9b2be07d ttm_write_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9c7b0e27 ttm_bo_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d06ced6 ttm_vt_unlock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0x9d44f4bb ttm_bo_wait_cpu +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa068577d ttm_vt_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa20e3a70 ttm_bo_mem_space +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa53d79c0 ttm_bo_dma_acc_size +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa54343e0 ttm_mem_global_alloc +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa550f248 ttm_mem_global_free +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xa66071c5 ttm_bo_validate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xaa7f36ae ttm_bo_swapout_all +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xac843717 ttm_read_lock +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xb70484eb ttm_lock_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbb4a2747 ttm_bo_device_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbe58e92e ttm_bo_init_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xbfefd546 ttm_bo_mmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xc3df4ad2 ttm_bo_clean_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xcf035709 ttm_mem_global_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd145119c ttm_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd2f4ab9a ttm_bo_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd5d2464a ttm_bo_manager_func +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd781686b ttm_bo_kunmap +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd8aa8ef7 ttm_bo_create +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xd951c65e ttm_mem_global_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xdad9d7e4 ttm_bo_evict_mm +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xddf44f34 ttm_bo_mem_put +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xed57677d ttm_bo_unlock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xeda4ea20 ttm_dma_tt_init +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xedc0e565 ttm_agp_tt_populate +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xf2c4b9e3 ttm_bo_lock_delayed_workqueue +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfbc2c5ec ttm_object_file_release +EXPORT_SYMBOL drivers/gpu/drm/ttm/ttm 0xfe8485f9 ttm_fbdev_mmap +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0x0903c239 vid_from_reg +EXPORT_SYMBOL drivers/hwmon/hwmon-vid 0xef1c781c vid_which_vrm +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x32c74f52 i2c_pca_add_numbered_bus +EXPORT_SYMBOL drivers/i2c/algos/i2c-algo-pca 0x9eb1fd5c i2c_pca_add_bus +EXPORT_SYMBOL drivers/i2c/busses/i2c-amd756 0xfe051060 amd756_smbus +EXPORT_SYMBOL drivers/iio/industrialio 0x02514a22 iio_triggered_buffer_predisable +EXPORT_SYMBOL drivers/iio/industrialio 0x039aa3eb iio_trigger_free +EXPORT_SYMBOL drivers/iio/industrialio 0x05d1da51 iio_trigger_notify_done +EXPORT_SYMBOL drivers/iio/industrialio 0x14b60c49 iio_bus_type +EXPORT_SYMBOL drivers/iio/industrialio 0x2d6bcdcb iio_trigger_generic_data_rdy_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x2f427bc4 iio_sw_buffer_preenable +EXPORT_SYMBOL drivers/iio/industrialio 0x34326d4d iio_trigger_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x490c8596 iio_device_free +EXPORT_SYMBOL drivers/iio/industrialio 0x54491abc iio_trigger_register +EXPORT_SYMBOL drivers/iio/industrialio 0x644dc80e iio_buffer_store_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x680963e3 iio_buffer_register +EXPORT_SYMBOL drivers/iio/industrialio 0x77b537a0 iio_read_const_attr +EXPORT_SYMBOL drivers/iio/industrialio 0x77d8f75c iio_device_register +EXPORT_SYMBOL drivers/iio/industrialio 0x85069f59 iio_device_alloc +EXPORT_SYMBOL drivers/iio/industrialio 0x86cdc4e6 iio_buffer_init +EXPORT_SYMBOL drivers/iio/industrialio 0x97565045 iio_trigger_poll +EXPORT_SYMBOL drivers/iio/industrialio 0x9e06883a iio_buffer_show_enable +EXPORT_SYMBOL drivers/iio/industrialio 0x9fde9db9 iio_buffer_write_length +EXPORT_SYMBOL drivers/iio/industrialio 0xba1efbd8 iio_push_event +EXPORT_SYMBOL drivers/iio/industrialio 0xc9c94b79 iio_triggered_buffer_postenable +EXPORT_SYMBOL drivers/iio/industrialio 0xcb7f9585 iio_device_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xd80e9848 iio_buffer_read_length +EXPORT_SYMBOL drivers/iio/industrialio 0xdc6c6e1d iio_trigger_poll_chained +EXPORT_SYMBOL drivers/iio/industrialio 0xdf76bbeb iio_pollfunc_store_time +EXPORT_SYMBOL drivers/iio/industrialio 0xe8a60240 iio_trigger_unregister +EXPORT_SYMBOL drivers/iio/industrialio 0xee615065 iio_buffer_unregister +EXPORT_SYMBOL drivers/iio/kfifo_buf 0x0f31e619 iio_kfifo_allocate +EXPORT_SYMBOL drivers/iio/kfifo_buf 0xa4892775 iio_kfifo_free +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x15ad7bfd rdma_copy_addr +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x1ea5767b rdma_addr_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x32a8402c rdma_addr_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x37838b44 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0x9d1f522d rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_addr 0xa8f6808f rdma_resolve_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x302f70b7 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41a54cba ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x41f2a577 ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x4e6bcf09 ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x53d4f8ae ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x59e4376e ib_send_cm_rtu +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x65e938d3 ib_send_cm_lap +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x77eb98ae ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x7fbf2fda ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x831b574a ib_send_cm_apr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x84523c71 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x995306dc ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x9d8f6698 ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xad9cde26 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb02dcdc5 ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xde41350d cm_class +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9d99671 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01b096ec ib_query_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01f54fdf ib_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x02e1d8eb ib_fmr_pool_unmap +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x04cc913a ib_find_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06c82fcf mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x06febab5 ib_init_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08ec6c84 ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x090b9dec ib_rereg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a779c15 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c1b9ac1 ib_ud_header_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dc306bf ib_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0dfd4440 ib_umem_page_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x13dc8727 ib_dealloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x14f84918 ib_rate_to_mbps +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x160d8036 ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x171f99f1 ib_rate_to_mult +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17abc759 ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x183be197 ib_dealloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1996d1e1 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19e671f7 ib_destroy_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19f1a9ac ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1bcae36d ib_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d7afab8 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e491a04 ib_unmap_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1fd517e1 ib_alloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2234cd9a ibnl_add_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22a67439 ib_modify_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22da8d3e ib_fmr_pool_map_phys +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27457c06 ib_get_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27d55681 ib_find_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2954e106 ib_modify_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d2fbe55 ib_alloc_fast_reg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ed6e386 ib_ud_header_pack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2f2bcfc8 ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x38c6ab59 ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48a637ed ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ca93e2b ib_get_dma_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4dd3b9d5 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4df2b64f ib_alloc_xrcd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dbc447 ib_flush_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59b976eb ib_alloc_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e7518b6 ib_dealloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6710542f ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x690442f6 ib_alloc_mw +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f1f0a4e ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x761ecb2e ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a691e81 ib_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ccd6c81 ib_find_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x829aec4e ib_dealloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86a52ac9 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9252be01 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9259a44e ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x925cdff6 ib_query_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x929b9956 ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96ce6c46 rdma_node_get_transport +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b0855b6 ib_dealloc_fmr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2cedda4 ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa428e8d3 ib_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa8913b9f ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaa7a7fee ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabb22b9a ib_destroy_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb1fb5f64 ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb37445ec ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb40fe947 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5d38208 ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5f06afb ib_reg_phys_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb66c2851 ib_create_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8049053 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb93c34d ib_set_client_data +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 0xc91ab05c ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb5dd12c ib_destroy_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcd9a7fff ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcdab112d ib_dereg_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2e2cdfd rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd32016a9 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7c419ca ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd828c7c9 ib_create_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe226be7c ib_create_fmr_pool +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe3021bd7 ib_get_cached_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef1c871b ib_free_fast_reg_page_list +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf37a5b58 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfc150956 ib_ud_header_init +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x1303aeca ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x213c846d ib_process_mad_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x5984d3d7 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6e494d9b ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x6f077fcf ib_get_mad_data_offset +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x79bff439 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x7b5d4b7a ib_is_mad_class_rmpp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x93a9fc51 ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x946d5d27 ib_response_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0x9b9697db ib_redirect_mad_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xb8fb6e4c ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xcff94558 ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xec32cb60 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xf4679b1f ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_mad 0xfa93a7e5 ib_register_mad_snoop +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x4c380189 ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5328d7a6 ib_sa_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x576fdbac ib_sa_free_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x5b3d8b56 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x64107a75 ib_init_ah_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x7ba4b283 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0x9a1cd50d ib_sa_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xbdcf9929 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xda0d50ec ib_sa_cancel_query +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xea99322a ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_sa 0xf6b6444b ib_sa_unpack_path +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x02f847bc ib_copy_path_rec_from_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x07cf5a51 ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x18382f6a ib_copy_path_rec_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x184f3575 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0501e1c1 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x13c5475e iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x25df7ad1 iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x35a273d0 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5ad58113 iw_cm_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x5df7d9be iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x9666e442 iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xe2c92632 iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x367f1cef rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4cc9485b rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x54a5ba5d rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5b0243c8 rdma_disconnect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6015b964 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x638933ee rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x70c99c32 rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x98195563 rdma_create_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9cce8989 rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa292803e rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa87da483 rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc4ea111f rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcbc3980e rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcca6bf5d rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd042bf5a rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd0cd9559 rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdad9a311 rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xdb515d8e rdma_set_ib_paths +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf42a0a36 rdma_set_service_type +EXPORT_SYMBOL drivers/input/gameport/gameport 0x22deb28b gameport_close +EXPORT_SYMBOL drivers/input/gameport/gameport 0x3cde7d95 gameport_open +EXPORT_SYMBOL drivers/input/gameport/gameport 0x54ea353f __gameport_register_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0x769564c1 gameport_set_phys +EXPORT_SYMBOL drivers/input/gameport/gameport 0x8f4fafcd gameport_stop_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0x919a830b gameport_start_polling +EXPORT_SYMBOL drivers/input/gameport/gameport 0xc10baf4c __gameport_register_port +EXPORT_SYMBOL drivers/input/gameport/gameport 0xe4560fdc gameport_unregister_driver +EXPORT_SYMBOL drivers/input/gameport/gameport 0xedb48711 gameport_unregister_port +EXPORT_SYMBOL drivers/input/input-polldev 0x0c1f8055 input_free_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x2db7fc69 input_unregister_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0x3929472b input_register_polled_device +EXPORT_SYMBOL drivers/input/input-polldev 0xa8963207 input_allocate_polled_device +EXPORT_SYMBOL drivers/input/matrix-keymap 0xb295f2d8 matrix_keypad_build_keymap +EXPORT_SYMBOL drivers/input/misc/ad714x 0x112b937b ad714x_enable +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6191772e ad714x_probe +EXPORT_SYMBOL drivers/input/misc/ad714x 0x6f9408dc ad714x_remove +EXPORT_SYMBOL drivers/input/misc/ad714x 0x92890fca ad714x_disable +EXPORT_SYMBOL drivers/input/misc/cma3000_d0x 0x12551ff7 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 0x29df2033 sparse_keymap_free +EXPORT_SYMBOL drivers/input/sparse-keymap 0x453e6917 sparse_keymap_entry_from_scancode +EXPORT_SYMBOL drivers/input/sparse-keymap 0x7f582d75 sparse_keymap_setup +EXPORT_SYMBOL drivers/input/sparse-keymap 0x8a010162 sparse_keymap_report_entry +EXPORT_SYMBOL drivers/input/sparse-keymap 0xa5b8caf9 sparse_keymap_report_event +EXPORT_SYMBOL drivers/input/sparse-keymap 0xdea49182 sparse_keymap_entry_from_keycode +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0x97f83edf ad7879_remove +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xe7355bac ad7879_pm_ops +EXPORT_SYMBOL drivers/input/touchscreen/ad7879 0xf99891de ad7879_probe +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x04403fcf unregister_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x050dfcc4 capi_ctr_down +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x13603b8d capi_ctr_resume_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x14f2aa5a capi20_get_version +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x22ec548f detach_capi_ctr +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2b8eab1f capilib_free_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x2baa6586 capilib_new_ncci +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x304df22a capi20_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x31c24aa4 capi20_isinstalled +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x3e837a3e attach_capi_ctr +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 0x7e6f1307 capi20_get_manufacturer +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8b71d371 capi_ctr_handle_message +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x8f699913 capilib_release +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x93e6e2be capi_ctr_ready +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0x9f823278 register_capi_driver +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xa68e477f capi20_register +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 0xd638d471 capi20_put_message +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 0xf73ec149 capi_ctr_suspend_output +EXPORT_SYMBOL drivers/isdn/capi/kernelcapi 0xfd552f7a capi_message2str +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x12424f94 b1_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x26c7f714 b1_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5425d378 b1_getrevision +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x5d3f47dc b1_load_config +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6fcd5b8a b1ctl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x6fd733c5 b1_loaded +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x7691ab1f b1_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x85f09690 b1_irq_table +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x88d13236 b1_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0x9c56d6f8 avmcard_dma_alloc +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xaefdf8f3 b1_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xb997aae4 b1_alloc_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xc251e53c b1_parse_version +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xd0e9f824 b1_free_card +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xdfd28376 b1_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xe3c34f44 b1_load_t4file +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfa10fee4 b1_interrupt +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1 0xfe7455a4 avmcard_dma_free +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0488aa3d b1dma_send_message +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x0749122b t1pci_detect +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3838e593 b1dma_reset_ctr +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x3f8c75a4 b1dma_register_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x55a822d8 b1dmactl_proc_fops +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x5c34b607 b1dma_reset +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0x9d722461 b1dma_load_firmware +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xaa73b3de b1dma_release_appl +EXPORT_SYMBOL drivers/isdn/hardware/avm/b1dma 0xcae56534 b1pciv4_detect +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 0xa41d51ea proc_net_eicon +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x11bdeaee mISDNisac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0x1dc9c20e mISDNipac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xd4a8c57f mISDNisac_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNipac 0xef3e0b65 mISDNipac_irq +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x10f1f633 mISDNisar_init +EXPORT_SYMBOL drivers/isdn/hardware/mISDN/mISDNisar 0x89789b6e 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 0x315c7073 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 0x1f514ccd isacsx_setup +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x2df737e5 isacsx_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x3f3b323a isac_d_l2l1 +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8a269fdc isac_irq +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0x8e5b69e6 isac_init +EXPORT_SYMBOL drivers/isdn/hisax/hisax_isac 0xc9d84d7c isac_setup +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0x6daa339f register_isdn +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xa79a9c58 isdn_ppp_register_compressor +EXPORT_SYMBOL drivers/isdn/i4l/isdn 0xb4c92624 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 0x0c1834e5 mISDN_register_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1438250d recv_Echannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1488b990 get_next_dframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x1ba11d8f mISDN_freedchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2348cc3c mISDN_FsmFree +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2786a1e8 bchannel_get_rxbuf +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2ce791e8 queue_ch_frame +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x2d015966 recv_Dchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x321100e2 get_next_bframe +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x36620938 bchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x4249d409 mISDN_unregister_device +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 0x55faeb9b create_l1 +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 0x67938156 mISDN_unregister_Bprotocol +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x68c3f5fb mISDN_ctrl_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x6966ab09 mISDN_clear_bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0x697d3371 recv_Bchannel_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 0xa19e8f1b recv_Dchannel_skb +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xaf45fe3a mISDNDevName4ch +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb15492a9 recv_Bchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb1796c82 mISDN_initbchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xb5cdf28c dchannel_senddata +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xc3401729 mISDN_register_clock +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd285995f mISDN_clock_get +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5145151 mISDN_FsmEvent +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xd5cf87ea mISDN_initdchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xdb1f5a7b mISDN_freebchannel +EXPORT_SYMBOL drivers/isdn/mISDN/mISDN_core 0xe12bc3f1 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_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/dm-log 0x1cfdc00d dm_dirty_log_type_register +EXPORT_SYMBOL drivers/md/dm-log 0x7a4a1b07 dm_dirty_log_create +EXPORT_SYMBOL drivers/md/dm-log 0xd64f3789 dm_dirty_log_type_unregister +EXPORT_SYMBOL drivers/md/dm-log 0xe7c7b10a dm_dirty_log_destroy +EXPORT_SYMBOL drivers/md/dm-snapshot 0x14d6eca8 dm_snap_cow +EXPORT_SYMBOL drivers/md/dm-snapshot 0x2c12e149 dm_exception_store_type_unregister +EXPORT_SYMBOL drivers/md/dm-snapshot 0x4b110dc3 dm_snap_origin +EXPORT_SYMBOL drivers/md/dm-snapshot 0x501aba2e dm_exception_store_type_register +EXPORT_SYMBOL drivers/md/dm-snapshot 0x766b64ea dm_exception_store_create +EXPORT_SYMBOL drivers/md/dm-snapshot 0xe1945fd2 dm_exception_store_destroy +EXPORT_SYMBOL drivers/md/raid456 0x571fdac8 raid5_set_cache_size +EXPORT_SYMBOL drivers/media/common/tuners/fc0011 0x6ffe0f22 fc0011_attach +EXPORT_SYMBOL drivers/media/common/tuners/max2165 0xa1d799d0 max2165_attach +EXPORT_SYMBOL drivers/media/common/tuners/mc44s803 0xcd13c8f3 mc44s803_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2060 0xd74286f6 mt2060_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2131 0xf166b9b0 mt2131_attach +EXPORT_SYMBOL drivers/media/common/tuners/mt2266 0x0eb02407 mt2266_attach +EXPORT_SYMBOL drivers/media/common/tuners/mxl5005s 0x1d52b73d mxl5005s_attach +EXPORT_SYMBOL drivers/media/common/tuners/qt1010 0xf2150187 qt1010_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18212 0xba2f4090 tda18212_attach +EXPORT_SYMBOL drivers/media/common/tuners/tda18218 0xc272e153 tda18218_attach +EXPORT_SYMBOL drivers/media/common/tuners/tua9001 0x111adec3 tua9001_attach +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0x0cb4b189 tuners +EXPORT_SYMBOL drivers/media/common/tuners/tuner-types 0xc2821775 tuner_count +EXPORT_SYMBOL drivers/media/common/tuners/tuner-xc2028 0x2d5bf563 xc2028_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc4000 0x25d2e448 xc4000_attach +EXPORT_SYMBOL drivers/media/common/tuners/xc5000 0x523d0562 xc5000_attach +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x12913ac9 flexcop_sram_set_dest +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x265a1854 flexcop_dump_reg +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x28fce3a2 flexcop_dma_xfer_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2dbd4030 flexcop_wan_set_speed +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x2e91c955 flexcop_i2c_request +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x35e05f2a flexcop_device_kfree +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x5ad71941 flexcop_dma_allocate +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x777d5157 flexcop_device_kmalloc +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x7d05c3e4 flexcop_dma_config +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x90e69813 flexcop_dma_control_size_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0x969ef34b flexcop_dma_config_timer +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa5a391a2 flexcop_device_exit +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xa6de186d flexcop_pid_feed_control +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xbcca267f flexcop_sram_ctrl +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc47baf29 flexcop_device_initialize +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xc4d50d62 flexcop_eeprom_check_mac_addr +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xcf77dad4 flexcop_pass_dmx_packets +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe7435b65 flexcop_dma_control_timer_irq +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xe848df13 flexcop_pass_dmx_data +EXPORT_SYMBOL drivers/media/dvb/b2c2/b2c2-flexcop 0xedd541be flexcop_dma_free +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x3cb59aab bt878_stop +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0x8ce874b1 bt878 +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xbf198597 bt878_device_control +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xd5d0bdef bt878_num +EXPORT_SYMBOL drivers/media/dvb/bt8xx/bt878 0xedc3bad3 bt878_start +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x27c21a3e write_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x42075bae read_dst +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x4c125be1 dst_attach +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0x8d2e44d3 dst_error_recovery +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xa86f2240 rdc_reset_state +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xb980eb06 dst_comm_init +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xc13a280c dst_pio_disable +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xd6f4e8dc dst_wait_dst_ready +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe84fbb4e dst_error_bailout +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst 0xe94b8c9c dst_check_sum +EXPORT_SYMBOL drivers/media/dvb/bt8xx/dst_ca 0x9f088a98 dst_ca_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x018c8cb8 dvb_dmxdev_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x055c2bec dvb_generic_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x0ff98d3f dvb_dmx_swfilter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x17523ce7 dvb_frontend_sleep_until +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2499fdb8 dvb_dmx_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x2dcec9cb dvb_unregister_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x32706276 dvb_ringbuffer_read +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x39373735 dvb_dmxdev_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x3cbec4b2 dvb_register_frontend +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x41f84e6e dvb_register_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x4790522e dvb_dmx_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x56dd829a dvb_dmx_swfilter_raw +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x5c0ea535 dvb_ringbuffer_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x6f739f46 dvb_frontend_detach +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x70af1058 dvb_ringbuffer_empty +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7154efa4 dvb_dmx_swfilter_packets +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x74a5a698 dvb_filter_pes2ts_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x78db694b dvb_ringbuffer_write +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7dff8bbc dvb_unregister_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7e397d01 dvb_ca_en50221_frda_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x7f4f9b54 dvb_ringbuffer_flush +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x80e3832d dvb_filter_get_ac3info +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x85a5e7d3 dvb_ringbuffer_avail +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x8bc3c627 dvb_ca_en50221_camready_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x93bb3c95 dvb_generic_ioctl +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x98bddf3b dvb_net_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9d4e06b9 dvb_unregister_adapter +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0x9fb27a89 dvb_ca_en50221_release +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xa2dea3ca dvb_net_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xac4ca1b0 intlog2 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xb7f3e958 dvb_ca_en50221_camchange_irq +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xc021edec dvb_register_device +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xcf589e8c dvb_ringbuffer_free +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd68a099e timeval_usec_diff +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xd8f7184c dvb_ringbuffer_flush_spinlock_wakeup +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xddf5cef8 dvb_ca_en50221_init +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe5ae8707 intlog10 +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe8e81536 dvb_generic_open +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xe9fa3f21 dvb_frontend_reinitialise +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf28e7431 dvb_ringbuffer_read_user +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xf826deb0 dvb_filter_pes2ts +EXPORT_SYMBOL drivers/media/dvb/dvb-core/dvb-core 0xfbfd7f71 dvb_dmx_swfilter_204 +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0x0a649d46 dvb_usb_generic_write +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xb85a2ba7 dvb_usb_device_exit +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xcf38840d dvb_usb_get_hexline +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xd08e68e6 dvb_usb_device_init +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xda458f3a usb_cypress_load_firmware +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xecfa0afe dvb_usb_nec_rc_key_to_event +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb 0xf4db421b dvb_usb_generic_rw +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x13e247e0 rc_map_af9005_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0x5d930d87 af9005_rc_decode +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-af9005-remote 0xd4e288db rc_map_af9005_table_size +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x05af5d38 dibusb2_0_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x05d52b6f dibusb_pid_filter +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x1af16e59 dibusb_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x7c8e43e1 dibusb_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0x9b70ad08 dibusb_read_eeprom_byte +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xa2044af8 dibusb_rc_query +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xb47559e0 rc_map_dibusb_table +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xc4f582ca dibusb_dib3000mc_frontend_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe6211b4d dibusb_dib3000mc_tuner_attach +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe6380ae6 dibusb_power_ctrl +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xe98bb83f dibusb_i2c_algo +EXPORT_SYMBOL drivers/media/dvb/dvb-usb/dvb-usb-dibusb-common 0xf7e19620 dibusb2_0_streaming_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/a8293 0x35b0a0c1 a8293_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9013 0xa21545ce af9013_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/af9033 0x54f362c3 af9033_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/atbm8830 0xe34fb1a6 atbm8830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x485fa224 au8522_init +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x4d0464ed au8522_led_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0x9fd99ed0 au8522_release_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xa8e17331 au8522_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xb1da2282 au8522_i2c_gate_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xba64d64d au8522_writereg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xcd0e8d24 au8522_get_state +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_common 0xfa480128 au8522_readreg +EXPORT_SYMBOL drivers/media/dvb/frontends/au8522_dig 0x81fa7f77 au8522_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/bcm3510 0xd73d570c bcm3510_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22700 0xb250eaed cx22700_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx22702 0x314036b5 cx22702_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24110 0xfdff8773 cx24110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0x589c96b6 cx24113_agc_callback +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24113 0xc8066a7b cx24113_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24116 0xda0e0aba cx24116_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x03f97513 cx24123_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/cx24123 0x93e7284b cx24123_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/cxd2820r 0x095542f0 cxd2820r_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x112fd3f3 dib0070_get_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x154b0f06 dib0070_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x5f1911ce dib0070_set_rf_output +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x971fef50 dib0070_ctrl_agc_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0070 0x979d1bce dib0070_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x00e447a0 dib0090_gain_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x0804855f dib0090_dcc_freq +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x10fc124b dib0090_update_tuning_table_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x20539964 dib0090_get_wbd_offset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x2134837e dib0090_update_rframp_7090 +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x3ffc3543 dib0090_set_vga +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x5d9c1727 dib0090_get_current_gain +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6093790a dib0090_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0x6c627849 dib0090_set_switch +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xb7fd86c7 dib0090_pwm_gain_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xc0f51cbd dib0090_set_dc_servo +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xd63886db dib0090_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xdeb75977 dib0090_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xe71b18f5 dib0090_get_wbd_target +EXPORT_SYMBOL drivers/media/dvb/frontends/dib0090 0xfe880c68 dib0090_fw_register +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mb 0x454d53f5 dib3000mb_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x06e92324 dib3000mc_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x6f0c1560 dib3000mc_set_config +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x7141349d dib3000mc_get_tuner_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0x9d8322e0 dib3000mc_pid_control +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xe89f347d dib3000mc_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib3000mc 0xf3be3edf dib3000mc_pid_parse +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x11c176ce dib7000m_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x6cc32497 dib7000m_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0x8acb63f4 dib7000m_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000m 0xd1ad9d30 dib7000m_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x0da6fe39 dib7000p_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x206deb14 dib7090_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x37d2fb95 dib7090_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3891f08e dib7090_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x3ab18d72 dib7000pc_detection +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x61a5df00 dib7000p_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x685cca91 dib7000p_get_agc_values +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x788b4c0a dib7000p_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0x882371f2 dib7000p_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xa6330a59 dib7090_slave_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xb51a8d1e dib7000p_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xb9f46f30 dib7000p_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbd47de91 dib7000p_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xbee0617f dib7000p_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib7000p 0xe85c2c93 dib7000p_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x09a42f75 dib8000_update_pll +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x243ac4e3 dib8000_get_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x41862325 dib8096p_tuner_sleep +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x47a3b2df dib8000_get_adc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5b94e1d4 dib8096p_get_i2c_tuner +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x5d2b02ea dib8000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x66dc1dee dib8000_ctrl_timf +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x730ef49f dib8000_pid_filter_ctrl +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x85a33238 dib8000_set_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0x8a4fc034 dib8000_pwm_agc_reset +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xb4ecddbb dib8000_i2c_enumeration +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xc8387809 dib8000_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xcf0ce472 dib8090p_get_dc_power +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd5fff71f dib8000_set_tune_state +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd60d6fc1 dib8000_remove_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xd7ba460e dib8000_get_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xe342ba4a dib8000_pid_filter +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xfba50496 dib8000_set_wbd_ref +EXPORT_SYMBOL drivers/media/dvb/frontends/dib8000 0xff6da44a dib8000_get_slave_frontend +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x3ce58226 dibx000_reset_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x5088f6f2 dibx000_exit_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0x71bf8494 dibx000_i2c_set_speed +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xad3ad91c systime +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xbed7b493 dibx000_init_i2c_master +EXPORT_SYMBOL drivers/media/dvb/frontends/dibx000_common 0xf0b866bd dibx000_get_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0x38bf7340 drxd_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/drxd 0xeb23fe7a drxd_config_i2c +EXPORT_SYMBOL drivers/media/dvb/frontends/drxk 0x7370b169 drxk_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ds3000 0x63020ba2 ds3000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/dvb-pll 0xf8e4cdd7 dvb_pll_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ec100 0x96673558 ec100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6405 0xb392fa1a isl6405_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6421 0x452f8ed8 isl6421_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/isl6423 0x8e117d19 isl6423_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/it913x-fe 0x5c32cc5f it913x_fe_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/itd1000 0x0048b753 itd1000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ix2505v 0x42b4ad34 ix2505v_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/l64781 0xd25a3f9f l64781_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lg2160 0xee724b50 lg2160_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt3305 0x8e5f0ba0 lgdt3305_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgdt330x 0x098f1d3e lgdt330x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lgs8gxx 0xdbff67d3 lgs8gxx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0x2f88b4f7 lnbh24_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp21 0xc6e1f799 lnbp21_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/lnbp22 0xe8a4494c lnbp22_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/m88rs2000 0x6acb7f6e m88rs2000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a16 0x128c459c mb86a16_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mb86a20s 0x8a389b38 mb86a20s_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt312 0x4b8da64e mt312_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/mt352 0xfe15e827 mt352_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt200x 0x5d958405 nxt200x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/nxt6000 0xf1edf245 nxt6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51132 0xc1d20190 or51132_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/or51211 0xa304f521 or51211_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x12cf1208 rtl2830_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/rtl2830 0x7fb8fef9 rtl2830_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1409 0x3b922ebb s5h1409_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1411 0x2730e799 s5h1411_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x1ae5d7c1 s5h1420_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/s5h1420 0x436e13da s5h1420_get_tuner_i2c_adapter +EXPORT_SYMBOL drivers/media/dvb/frontends/s921 0x77e524e9 s921_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/si21xx 0x13b5370d si21xx_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp8870 0x4fb4fda6 sp8870_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/sp887x 0xe8145413 sp887x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb0899 0x0dfb7110 stb0899_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6000 0x3ff56216 stb6000_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stb6100 0xf43f08d0 stb6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0288 0x3a18f935 stv0288_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0297 0x20f64843 stv0297_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0299 0x1932775f stv0299_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0x5f78cafa stv0367cab_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0367 0xc5b252d5 stv0367ter_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv0900 0xbf219169 stv0900_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0x5823380e stv090x_set_gpio +EXPORT_SYMBOL drivers/media/dvb/frontends/stv090x 0xe1833693 stv090x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110 0x43dac6b3 stv6110_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/stv6110x 0x3135b8bd stv6110x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10021 0xd330a2c9 tda10021_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10023 0x4385f12e tda10023_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10048 0xe94b02ce tda10048_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x31b2916d tda10045_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda1004x 0x518bd8e2 tda10046_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10071 0xfa643a4a tda10071_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda10086 0xc6896081 tda10086_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda665x 0x1069427d tda665x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8083 0x3da857a9 tda8083_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda8261 0x079e3a09 tda8261_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tda826x 0x3a707a2c tda826x_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/tua6100 0x773973d3 tua6100_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1820 0xdd2115df ves1820_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/ves1x93 0x437e3097 ves1x93_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10036 0x7ffec207 zl10036_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10039 0x371db48f zl10039_attach +EXPORT_SYMBOL drivers/media/dvb/frontends/zl10353 0x0169eda1 zl10353_attach +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xa639c672 ttpci_eeprom_parse_mac +EXPORT_SYMBOL drivers/media/dvb/ttpci/ttpci-eeprom 0xc3e4c127 ttpci_eeprom_decode_mac +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x48ff50c8 ttusbdecfe_dvbt_attach +EXPORT_SYMBOL drivers/media/dvb/ttusb-dec/ttusbdecfe 0x63385102 ttusbdecfe_dvbs_attach +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x04dca738 lirc_unregister_driver +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x093791ff lirc_dev_fop_poll +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x3f9a3998 lirc_dev_fop_ioctl +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x441c6a0f lirc_dev_fop_open +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x61961c2c lirc_dev_fop_read +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x693f6ad9 lirc_get_pdata +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0x8300e048 lirc_dev_fop_write +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb446eaa7 lirc_dev_fop_close +EXPORT_SYMBOL drivers/media/rc/lirc_dev 0xb63e136e lirc_register_driver +EXPORT_SYMBOL drivers/media/rc/rc-core 0x3ba4f9e7 ir_raw_handler_unregister +EXPORT_SYMBOL drivers/media/rc/rc-core 0x8d0af9a2 ir_raw_handler_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x11dc4b6d bttv_gpio_enable +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x3a7d67e0 bttv_get_pcidev +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x6c74e0cb bttv_sub_register +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0x8ecf4acc bttv_write_gpio +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xab3606b7 bttv_sub_unregister +EXPORT_SYMBOL drivers/media/video/bt8xx/bttv 0xbcf2d2fb bttv_read_gpio +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x06218ac1 btcx_riscmem_free +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x39c233e9 btcx_riscmem_alloc +EXPORT_SYMBOL drivers/media/video/btcx-risc 0x495e4b0c btcx_calc_skips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xad2fe38b btcx_sort_clips +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xc368f8e6 btcx_align +EXPORT_SYMBOL drivers/media/video/btcx-risc 0xcda0ded2 btcx_screen_clips +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x0183083a cx18_stop_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x196ac5cc cx18_start_v4l2_encode_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x22d693ad cx18_release_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x2cdea06d cx18_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x43e55254 cx18_claim_stream +EXPORT_SYMBOL drivers/media/video/cx18/cx18 0x4e507a0b cx18_ext_init +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xb0614c8d cx231xx_register_extension +EXPORT_SYMBOL drivers/media/video/cx231xx/cx231xx 0xd272db7a cx231xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/cx2341x 0x1ca0c084 cx2341x_log_status +EXPORT_SYMBOL drivers/media/video/cx2341x 0x2f25eee2 cx2341x_update +EXPORT_SYMBOL drivers/media/video/cx2341x 0x3db8be82 cx2341x_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx2341x 0x5b88faf6 cx2341x_ext_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0x7623705b cx2341x_handler_init +EXPORT_SYMBOL drivers/media/video/cx2341x 0x9937c499 cx2341x_handler_setup +EXPORT_SYMBOL drivers/media/video/cx2341x 0xc184ec1e cx2341x_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf76ce95 cx2341x_fill_defaults +EXPORT_SYMBOL drivers/media/video/cx2341x 0xcf8b77a4 cx2341x_mpeg_ctrls +EXPORT_SYMBOL drivers/media/video/cx2341x 0xd230249f cx2341x_handler_set_50hz +EXPORT_SYMBOL drivers/media/video/cx2341x 0xf94f9ce6 cx2341x_handler_set_busy +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x2704ab04 altera_pid_feed_control +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x6ff7510d altera_ci_tuner_reset +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0x9247b72f altera_hw_filt_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xae201157 altera_ci_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xdb3faf38 altera_ci_release +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe617ea4b altera_hw_filt_init +EXPORT_SYMBOL drivers/media/video/cx23885/altera-ci 0xe66b9812 altera_ci_irq +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x12b48166 cx25821_set_gpiopin_direction +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x18def225 cx25821_sram_channel_dump_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x471e1cfb cx25821_devlist +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x53c11341 cx25821_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x67cc5b8b cx25821_sram_channels +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x784853c3 cx25821_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x89555545 cx25821_sram_channel_setup_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x8b0f9157 cx25821_devlist_mutex +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0x9967d48c cx25821_dev_get +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xc73c1cac cx25821_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xefd911b8 cx25821_risc_databuffer_audio +EXPORT_SYMBOL drivers/media/video/cx25821/cx25821 0xffe05465 cx25821_dev_unregister +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0x90dd7cb0 vp3054_i2c_remove +EXPORT_SYMBOL drivers/media/video/cx88/cx88-vp3054-i2c 0xd79ce5bd vp3054_i2c_probe +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x07cd07be cx88_video_mux +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x346f6e36 cx88_get_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x4289f55d cx88_enum_input +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x8fd0659a cx88_set_control +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0x936b6529 cx88_set_freq +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xac4e53b9 cx88_user_ctrls +EXPORT_SYMBOL drivers/media/video/cx88/cx8800 0xbf6fdbff cx8800_ctrl_query +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x06702285 cx8802_register_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x13c6bed6 cx8802_buf_prepare +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x2714f68f cx8802_buf_queue +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0x92791a3e cx8802_unregister_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xb6f03712 cx8802_get_driver +EXPORT_SYMBOL drivers/media/video/cx88/cx8802 0xd03e9e4e cx8802_cancel_buffers +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x16fee7ae cx88_ir_stop +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x1d9ed75a cx88_sram_channel_dump +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x25ff1f2b cx88_reset +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x30aed63a cx88_core_irq +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x32416495 cx88_core_get +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x38ff1be5 cx88_set_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x39f40c49 cx88_core_put +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x43410ec5 cx88_risc_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x4b18e9d2 cx88_sram_channel_setup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x54ccf168 cx88_get_stereo +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x58f0788d cx88_set_scale +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6141c8c5 cx88_tuner_callback +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x64225569 cx88_newstation +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x6c690525 cx88_ir_start +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x7642ed3c cx88_print_irqbits +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x893317a1 cx88_free_buffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x904b8696 cx88_audio_thread +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x92da3b6f cx88_vdev_init +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0x9cd3fd77 cx88_shutdown +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xa7a4bd27 cx88_risc_databuffer +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xabedb5f7 cx88_dsp_detect_stereo_sap +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb07d9fb9 cx88_set_tvaudio +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xb2134c2f cx88_sram_channels +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd1da2eb0 cx88_wakeup +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd6d30574 cx88_set_tvnorm +EXPORT_SYMBOL drivers/media/video/cx88/cx88xx 0xd75a0d82 cx88_risc_stopper +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x0f1f333f em28xx_unregister_extension +EXPORT_SYMBOL drivers/media/video/em28xx/em28xx 0x3f9aac53 em28xx_register_extension +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x271e3c58 gspca_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x361d30d2 gspca_disconnect +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x3e705eb2 gspca_coarse_grained_expo_autogain +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x6a5fa025 gspca_resume +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x893575d5 gspca_frame_add +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8b874a3e gspca_dev_probe +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0x8ff5564a gspca_dev_probe2 +EXPORT_SYMBOL drivers/media/video/gspca/gspca_main 0xa1f11ce9 gspca_suspend +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x14f67530 ivtv_debug +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x289f38e2 ivtv_api +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x39a030c0 ivtv_udma_setup +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x6c435f3d ivtv_udma_unmap +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x717e8fea ivtv_init_on_first_open +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x781aa839 ivtv_vapi +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x7b127501 ivtv_reset_ir_gpio +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0x90292e1b ivtv_firmware_check +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xacd671c0 ivtv_udma_alloc +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xb4da9e0b ivtv_vapi_result +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xccc8f43d ivtv_set_irq_mask +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xdc66291f ivtv_udma_prepare +EXPORT_SYMBOL drivers/media/video/ivtv/ivtv 0xe58b0923 ivtv_clear_irq_mask +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x04e83446 saa7134_tuner_callback +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x09d2d758 saa7134_devlist_lock +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1211df5d saa7134_devlist +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x14dfecc6 saa7134_boards +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x1d934922 saa_dsp_writel +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x58e3ef87 saa7134_ts_register +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x74666f73 saa7134_dmasound_exit +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x8a1ca35e saa7134_tvaudio_setmute +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x953db795 saa7134_ts_unregister +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0x9ff41292 saa7134_pgtable_free +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xaac75e0a saa7134_set_gpio +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xb975d32e saa7134_pgtable_build +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xcd0d85c5 saa7134_dmasound_init +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xd9533780 saa7134_pgtable_alloc +EXPORT_SYMBOL drivers/media/video/saa7134/saa7134 0xfefa4c51 saa7134_set_dmabits +EXPORT_SYMBOL drivers/media/video/soc_camera 0x2039d2ff soc_camera_lock +EXPORT_SYMBOL drivers/media/video/soc_camera 0x33067095 soc_camera_host_register +EXPORT_SYMBOL drivers/media/video/soc_camera 0x5cf16615 soc_camera_host_unregister +EXPORT_SYMBOL drivers/media/video/soc_camera 0xa0a2cd9b soc_camera_apply_board_flags +EXPORT_SYMBOL drivers/media/video/soc_camera 0xe435f4b0 soc_camera_xlate_by_fourcc +EXPORT_SYMBOL drivers/media/video/soc_camera 0xf1835324 soc_camera_unlock +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x500b8255 soc_mbus_find_fmtdesc +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x61871f65 soc_mbus_bytes_per_line +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0x7371455d soc_mbus_samples_per_pixel +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xc8b28da5 soc_mbus_config_compatible +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xde30e6b9 soc_mbus_image_size +EXPORT_SYMBOL drivers/media/video/soc_mediabus 0xfeaea44b soc_mbus_get_fmtdesc +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x1e8fdbac tm6000_unregister_extension +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0x41365e8e tm6000_init_digital_mode +EXPORT_SYMBOL drivers/media/video/tm6000/tm6000 0xd3340208 tm6000_register_extension +EXPORT_SYMBOL drivers/media/video/tveeprom 0x290116e4 tveeprom_read +EXPORT_SYMBOL drivers/media/video/tveeprom 0xf8baf84d tveeprom_hauppauge_analog +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x42c8e001 v4l2_ctrl_next +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4adaf0f3 v4l2_ctrl_query_menu_valid_items +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x4ed5e0d7 v4l2_chip_match_host +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x53c9394f v4l2_ctrl_query_menu +EXPORT_SYMBOL drivers/media/video/v4l2-common 0x5f96a661 v4l2_ctrl_check +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xabe27502 v4l2_ctrl_query_fill +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xedadf291 v4l2_chip_match_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-common 0xf2cd6987 v4l2_chip_ident_i2c_client +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x32108661 v4l2_m2m_job_finish +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x459e133f v4l2_m2m_get_curr_priv +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0x7bcb6ce7 v4l2_m2m_get_vq +EXPORT_SYMBOL drivers/media/video/v4l2-mem2mem 0xa11dbb7e v4l2_m2m_mmap +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x004f83f7 videobuf_dvb_unregister_bus +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x077a77d5 videobuf_dvb_alloc_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x5f16a970 videobuf_dvb_dealloc_frontends +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x8fef6d3a videobuf_dvb_get_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0x98d402a5 videobuf_dvb_find_frontend +EXPORT_SYMBOL drivers/media/video/videobuf-dvb 0xd56998d5 videobuf_dvb_register_bus +EXPORT_SYMBOL drivers/media/video/videobuf2-core 0xef308851 vb2_querybuf +EXPORT_SYMBOL drivers/media/video/videodev 0x052b4b42 v4l2_subdev_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0614dd5a v4l2_video_std_frame_period +EXPORT_SYMBOL drivers/media/video/videodev 0x071b9120 v4l2_ctrl_new_int_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x0b0226bb v4l2_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x0bb034ae v4l2_ctrl_grab +EXPORT_SYMBOL drivers/media/video/videodev 0x123959a1 v4l2_type_names +EXPORT_SYMBOL drivers/media/video/videodev 0x14f1ea04 v4l2_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x16244fe5 v4l2_prio_check +EXPORT_SYMBOL drivers/media/video/videodev 0x1d4d3816 v4l2_ctrl_handler_init +EXPORT_SYMBOL drivers/media/video/videodev 0x2342f1ae v4l2_prio_open +EXPORT_SYMBOL drivers/media/video/videodev 0x29682acf video_device_alloc +EXPORT_SYMBOL drivers/media/video/videodev 0x36aaed39 v4l2_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x3adbd595 v4l2_field_names +EXPORT_SYMBOL drivers/media/video/videodev 0x3bdd0f94 v4l2_prio_change +EXPORT_SYMBOL drivers/media/video/videodev 0x3f631880 v4l2_subdev_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x44a22aa1 v4l2_ctrl_find +EXPORT_SYMBOL drivers/media/video/videodev 0x495426ee v4l2_ctrl_get_name +EXPORT_SYMBOL drivers/media/video/videodev 0x4a899da1 v4l2_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x51cd4ef8 v4l2_subdev_querymenu +EXPORT_SYMBOL drivers/media/video/videodev 0x547cda11 video_device_release_empty +EXPORT_SYMBOL drivers/media/video/videodev 0x55a2da3d v4l2_ctrl_handler_free +EXPORT_SYMBOL drivers/media/video/videodev 0x5ebefe4b v4l_printk_ioctl +EXPORT_SYMBOL drivers/media/video/videodev 0x601e9839 v4l2_subdev_init +EXPORT_SYMBOL drivers/media/video/videodev 0x6158fcab v4l2_subdev_queryctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x629976cc v4l2_ctrl_sub_ev_ops +EXPORT_SYMBOL drivers/media/video/videodev 0x675d3d18 v4l2_ctrl_handler_setup +EXPORT_SYMBOL drivers/media/video/videodev 0x69eacfd0 v4l2_subdev_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0x6b6ddc84 v4l2_ctrl_log_status +EXPORT_SYMBOL drivers/media/video/videodev 0x6f689724 video_device_release +EXPORT_SYMBOL drivers/media/video/videodev 0x7173d82d v4l2_ctrl_activate +EXPORT_SYMBOL drivers/media/video/videodev 0x7a3cd015 v4l2_ctrl_get_menu +EXPORT_SYMBOL drivers/media/video/videodev 0x8106095a v4l2_prio_max +EXPORT_SYMBOL drivers/media/video/videodev 0x894c7b30 v4l2_subdev_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x8db1139f v4l2_subdev_g_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0x92f3e732 video_ioctl2 +EXPORT_SYMBOL drivers/media/video/videodev 0x97d3bde0 video_unregister_device +EXPORT_SYMBOL drivers/media/video/videodev 0x9ba11c96 v4l2_ctrl_auto_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0x9f2b5e27 v4l2_ctrl_add_handler +EXPORT_SYMBOL drivers/media/video/videodev 0x9fedf1a4 v4l2_ctrl_subscribe_event +EXPORT_SYMBOL drivers/media/video/videodev 0xa2475a42 v4l2_ctrl_s_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xa9a2715e __video_register_device +EXPORT_SYMBOL drivers/media/video/videodev 0xae45fe3b v4l2_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xb122be5a v4l2_ctrl_new_std_menu +EXPORT_SYMBOL drivers/media/video/videodev 0xb2335899 v4l2_s_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xb77b0159 v4l2_prio_init +EXPORT_SYMBOL drivers/media/video/videodev 0xb9dfc0f1 v4l2_ctrl_new_std +EXPORT_SYMBOL drivers/media/video/videodev 0xbac4a225 v4l2_ctrl_fill +EXPORT_SYMBOL drivers/media/video/videodev 0xc12cf8f8 v4l2_ctrl_replace +EXPORT_SYMBOL drivers/media/video/videodev 0xcab0ea9c v4l2_ctrl_poll +EXPORT_SYMBOL drivers/media/video/videodev 0xcda04a5b v4l2_prio_close +EXPORT_SYMBOL drivers/media/video/videodev 0xdb16c757 video_usercopy +EXPORT_SYMBOL drivers/media/video/videodev 0xe184e63b v4l2_ctrl_new_custom +EXPORT_SYMBOL drivers/media/video/videodev 0xe2b92059 v4l2_video_std_construct +EXPORT_SYMBOL drivers/media/video/videodev 0xe5332d33 v4l2_ctrl_g_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe56fa183 video_devdata +EXPORT_SYMBOL drivers/media/video/videodev 0xe5d5e2a5 v4l2_ctrl_cluster +EXPORT_SYMBOL drivers/media/video/videodev 0xe6fce6f2 v4l2_ctrl_merge +EXPORT_SYMBOL drivers/media/video/videodev 0xe795f8f7 v4l2_ctrl_add_ctrl +EXPORT_SYMBOL drivers/media/video/videodev 0xe8beb956 v4l2_try_ext_ctrls +EXPORT_SYMBOL drivers/media/video/videodev 0xf3251e7b v4l2_norm_to_name +EXPORT_SYMBOL drivers/media/video/videodev 0xfb288945 v4l2_ctrl_handler_log_status +EXPORT_SYMBOL drivers/memstick/core/memstick 0x42728ec6 memstick_alloc_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4ca643fb memstick_set_rw_addr +EXPORT_SYMBOL drivers/memstick/core/memstick 0x4f241618 memstick_suspend_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d820a02 memstick_init_req_sg +EXPORT_SYMBOL drivers/memstick/core/memstick 0x5d9a52d8 memstick_register_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0x9a263f33 memstick_resume_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xa5c5b3c5 memstick_unregister_driver +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb8c47076 memstick_detect_change +EXPORT_SYMBOL drivers/memstick/core/memstick 0xb92d6d4d memstick_remove_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xba9c4ffe memstick_add_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xbe72c0e7 memstick_new_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xccbded3d memstick_free_host +EXPORT_SYMBOL drivers/memstick/core/memstick 0xdc07e67e memstick_init_req +EXPORT_SYMBOL drivers/memstick/core/memstick 0xf90d8957 memstick_next_req +EXPORT_SYMBOL drivers/memstick/host/r592 0x52f1b23b memstick_debug_get_tpc_name +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1655a4bd mpt_raid_phys_disk_get_num_paths +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1856d85e mpt_verify_adapter +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x1ecdcd57 mpt_raid_phys_disk_pg1 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x2194959e mpt_put_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x22553701 mpt_detach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x28dbf0a5 mpt_Soft_Hard_ResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x309c3e79 mpt_resume +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x30bf9439 mpt_free_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x32fb53c9 mpt_print_ioc_summary +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4526289b mpt_event_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x45a3cf66 mpt_device_driver_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x4cf2ae91 mpt_GetIocState +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x502108d0 mpt_fwfault_debug +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x53b6c051 mpt_set_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5afbe25a mpt_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x5c606dc4 mpt_clear_taskmgmt_in_progress_flag +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7a526c9d mpt_reset_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x7c0d48cc mpt_free_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x864edc98 mpt_attach +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x89a1370a mpt_get_msg_frame +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x988697e5 mptbase_sas_persist_operation +EXPORT_SYMBOL drivers/message/fusion/mptbase 0x9e488c5b mpt_alloc_fw_memory +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa2c3e175 mpt_halt_firmware +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xa718cb1c mpt_findImVolumes +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xb331a1b2 mpt_event_register +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xbba71824 mpt_suspend +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 0xc54fd570 mpt_raid_phys_disk_pg0 +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd0ef11ba mpt_put_msg_frame_hi_pri +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd3c67e47 mpt_config +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xd9a92a75 mpt_reset_deregister +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdca474fa mpt_send_handshake_request +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xdd805159 ioc_list +EXPORT_SYMBOL drivers/message/fusion/mptbase 0xe92c6d5e mpt_HardResetHandler +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x0c784c98 mptscsih_abort +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1074310c mptscsih_bus_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x1791197f mptscsih_change_queue_depth +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x29753692 mptscsih_host_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2c947f08 mptscsih_slave_configure +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x2da20137 mptscsih_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x339a0e6a mptscsih_proc_info +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x343895c7 mptscsih_IssueTaskMgmt +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x447ee980 mptscsih_ioc_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x676b1822 mptscsih_taskmgmt_response_code +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7f477942 mptscsih_dev_reset +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x7fd05a9e mptscsih_is_phys_disk +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8473a11a mptscsih_event_process +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8478e827 mptscsih_qcmd +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8489837d mptscsih_resume +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x85ec980d mptscsih_scandv_complete +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x8f0478eb mptscsih_get_scsi_lookup +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9403876a mptscsih_suspend +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0x9a9bb487 mptscsih_bios_param +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xadaab83a mptscsih_flush_running_cmds +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb6211e35 mptscsih_io_done +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xb6cec9bb mptscsih_host_attrs +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xbe9df1ae mptscsih_slave_destroy +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xc1c61918 mptscsih_shutdown +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xddc886ba mptscsih_remove +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xe750ce2c mptscsih_raid_id_to_num +EXPORT_SYMBOL drivers/message/fusion/mptscsih 0xec3697f1 mptscsih_taskmgmt_complete +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x0524d840 i2o_device_claim_release +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x081db8b3 i2o_driver_notify_controller_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2689998f i2o_cntxt_list_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a3fd9ed i2o_event_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2a843bef i2o_dump_message +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2cc2aa60 i2o_driver_register +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x2faceb01 i2o_device_claim +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x43fbac3c i2o_iop_find_device +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4ba35cc2 i2o_cntxt_list_get_ptr +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x4e59c39d i2o_parm_issue +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x82cc9d0f i2o_parm_field_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x879d258d i2o_driver_notify_device_add_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x8bd4dad2 i2o_parm_table_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x961eee60 i2o_driver_notify_device_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0x96c10d84 i2o_exec_lct_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xad2f7c7c i2o_cntxt_list_remove +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb249e284 i2o_driver_notify_controller_remove_all +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xb4c00dcf i2o_controllers +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xcf6dd4d6 i2o_status_get +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xd42271fb i2o_msg_get_wait +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xdbfce34f i2o_find_iop +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xeca61473 i2o_msg_post_wait_mem +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf013ee27 i2o_cntxt_list_add +EXPORT_SYMBOL drivers/message/i2o/i2o_core 0xf6c5336c i2o_driver_unregister +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0x0d2b7289 pasic3_read_register +EXPORT_SYMBOL drivers/mfd/htc-pasic3 0xfb7a03da pasic3_write_register +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0732a1c0 mc13xxx_irq_unmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x0d9de444 mc13xxx_lock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x34ba9658 mc13xxx_irq_ack +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x3562c9a7 mc13xxx_get_flags +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x5ae0567d mc13xxx_irq_request_nounmask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6504cf01 mc13xxx_irq_request +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6d83d3e9 mc13xxx_irq_mask +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x6ebd5145 mc13xxx_unlock +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0x7f8c7af4 mc13xxx_irq_free +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xb04d5847 mc13xxx_reg_read +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xc86190bb mc13xxx_reg_write +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xd3370493 mc13xxx_reg_rmw +EXPORT_SYMBOL drivers/mfd/mc13xxx-core 0xebd6b1b8 mc13xxx_irq_status +EXPORT_SYMBOL drivers/mfd/tps6105x 0x1cf6d74c tps6105x_mask_and_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0x5e773150 tps6105x_set +EXPORT_SYMBOL drivers/mfd/tps6105x 0xd7b6097b tps6105x_get +EXPORT_SYMBOL drivers/mfd/tps65010 0x02d4ad0f tps65013_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0x0c6ad2cf tps65010_config_vdcdc2 +EXPORT_SYMBOL drivers/mfd/tps65010 0x28485130 tps65010_config_vregs1 +EXPORT_SYMBOL drivers/mfd/tps65010 0x33739de7 tps65010_set_vib +EXPORT_SYMBOL drivers/mfd/tps65010 0x9fd44c69 tps65010_set_led +EXPORT_SYMBOL drivers/mfd/tps65010 0xb14080cc tps65010_set_low_pwr +EXPORT_SYMBOL drivers/mfd/tps65010 0xd5bb106d tps65010_set_vbus_draw +EXPORT_SYMBOL drivers/mfd/tps65010 0xe99b3f36 tps65010_set_gpio_out_value +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0x015ee601 pwm_free +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xa4ee3c79 pwm_disable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xaee34e3d pwm_request +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xd83c7949 pwm_enable +EXPORT_SYMBOL drivers/mfd/twl6030-pwm 0xdeebfb06 pwm_config +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0x3b44c909 ad_dpot_probe +EXPORT_SYMBOL drivers/misc/ad525x_dpot 0xbc1e62c1 ad_dpot_remove +EXPORT_SYMBOL drivers/misc/altera-stapl/altera-stapl 0x9889f935 altera_init +EXPORT_SYMBOL drivers/misc/c2port/core 0x2e9e6f06 c2port_device_register +EXPORT_SYMBOL drivers/misc/c2port/core 0x7e0adf10 c2port_device_unregister +EXPORT_SYMBOL drivers/misc/ioc4 0x6e5b92d4 ioc4_register_submodule +EXPORT_SYMBOL drivers/misc/ioc4 0x87df3818 ioc4_unregister_submodule +EXPORT_SYMBOL drivers/misc/tifm_core 0x0715aaa4 tifm_alloc_device +EXPORT_SYMBOL drivers/misc/tifm_core 0x2805fb3f tifm_remove_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x32cf1544 tifm_has_ms_pif +EXPORT_SYMBOL drivers/misc/tifm_core 0x348b8e91 tifm_free_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0x37c3cfeb tifm_register_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0x4d539775 tifm_eject +EXPORT_SYMBOL drivers/misc/tifm_core 0x4ee0c3a6 tifm_unmap_sg +EXPORT_SYMBOL drivers/misc/tifm_core 0x8c8ee014 tifm_free_device +EXPORT_SYMBOL drivers/misc/tifm_core 0xa8c2ec46 tifm_queue_work +EXPORT_SYMBOL drivers/misc/tifm_core 0xd29a05a8 tifm_unregister_driver +EXPORT_SYMBOL drivers/misc/tifm_core 0xe54e56ec tifm_alloc_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xe6b72e6a tifm_add_adapter +EXPORT_SYMBOL drivers/misc/tifm_core 0xea01cd84 tifm_map_sg +EXPORT_SYMBOL drivers/mmc/card/mmc_block 0x803484f8 mmc_cleanup_queue +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x1aefb6f8 mmc_spi_put_pdata +EXPORT_SYMBOL drivers/mmc/host/of_mmc_spi 0x8cc15365 mmc_spi_get_pdata +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x0c36c367 cfi_varsize_frob +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x281b38c8 cfi_fixup +EXPORT_SYMBOL drivers/mtd/chips/cfi_util 0x6726c6b8 cfi_read_pri +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x0b066d7d unregister_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x63e4aabb map_destroy +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0x7a65fc22 do_map_probe +EXPORT_SYMBOL drivers/mtd/chips/chipreg 0xa2571dda register_mtd_chip_driver +EXPORT_SYMBOL drivers/mtd/chips/gen_probe 0x70945727 mtd_do_chip_probe +EXPORT_SYMBOL drivers/mtd/lpddr/lpddr_cmds 0x26c64535 lpddr_cmdset +EXPORT_SYMBOL drivers/mtd/maps/map_funcs 0x50882dd8 simple_map_init +EXPORT_SYMBOL drivers/mtd/mtd 0xc688c604 mtd_concat_create +EXPORT_SYMBOL drivers/mtd/mtd 0xf71ebe62 mtd_concat_destroy +EXPORT_SYMBOL drivers/mtd/nand/nand 0x3cc237c6 nand_default_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0x444fd6b5 nand_lock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x5acff82f nand_unlock +EXPORT_SYMBOL drivers/mtd/nand/nand 0x9cea7731 nand_scan_ident +EXPORT_SYMBOL drivers/mtd/nand/nand 0xb1b6ff03 nand_scan_bbt +EXPORT_SYMBOL drivers/mtd/nand/nand 0xd26ca996 nand_scan +EXPORT_SYMBOL drivers/mtd/nand/nand 0xece5a653 nand_scan_tail +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x0a61fe55 nand_bch_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x70097aa0 nand_bch_free +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0x7772b6e9 nand_bch_init +EXPORT_SYMBOL drivers/mtd/nand/nand_bch 0xaf4ee81e nand_bch_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0x3132ee65 __nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xad505a7e nand_calculate_ecc +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xb4b94377 __nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ecc 0xcdd27ddb nand_correct_data +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0x836bdb72 nand_flash_ids +EXPORT_SYMBOL drivers/mtd/nand/nand_ids 0xa336feb7 nand_manuf_ids +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6099bfa5 onenand_addr +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x64bb56c2 onenand_scan_bbt +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x6a3c5ef8 flexonenand_region +EXPORT_SYMBOL drivers/mtd/onenand/onenand 0x9f7ce7c0 onenand_default_bbt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0766f5c8 arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5a1c6dc4 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x5e5fcaf5 arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x65fe3bee alloc_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x7b9e9a29 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9dbafe9e arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa92c673a arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe42843f7 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf64da2d0 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xfa37914d arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xbc4686a3 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xeb149047 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xfacc0c3d com20020_check +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x0597d86e NS8390_init +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x119721ac ei_interrupt +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x3f844681 ei_start_xmit +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x6c37a8d2 ei_poll +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x713e7800 __alloc_ei_netdev +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x835770c6 ei_get_stats +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0x9d7b904e ei_netdev_ops +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xcce44bcd ei_open +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xd5c80e2a ei_tx_timeout +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xe5be2a7c ei_set_multicast_list +EXPORT_SYMBOL drivers/net/ethernet/8390/8390 0xf6b5d69b ei_close +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2 0x0cd55dd6 bnx2_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnx2x/bnx2x 0x91b9c789 bnx2x_cnic_probe +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x183538c2 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x0f05a528 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x145c1ba3 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2170ae45 cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x548eafa2 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x6607aee4 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x70b826c8 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa2628fa0 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa98e8976 t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xc54bae82 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xccc82678 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd49529ae cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd97b8bf8 t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xdd511ec5 cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xe67bd334 t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf60957b1 cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf72a8286 cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x01bcfeaf cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0daf63cf cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f154896 cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x146fef37 cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1489d216 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x22f52a66 cxgb4_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3410a8ed cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x55f13da6 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x620bc075 cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6427eefe cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x701e4ea0 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x86956310 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x916fe703 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9964285f cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa5935a62 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa6979383 cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb4e14fe2 cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb677a15b cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd00e5a36 cxgb4_unregister_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd27a1cec cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeb175729 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xb7fa3bca 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 0xf72b5b63 be_roce_register_driver +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25eb3ba7 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2636a996 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29a33759 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x506e081f mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7ac23b07 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8815e00b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x96742a54 mlx4_test_interrupts +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd54c7af mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xda2acb16 mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeff0c9cc mlx4_set_stats_bitmap +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x29a8cb9b hdlcdrv_receiver +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x34e7991b hdlcdrv_register +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x865665ed hdlcdrv_transmitter +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x909ea7e7 hdlcdrv_unregister +EXPORT_SYMBOL drivers/net/hamradio/hdlcdrv 0x9a238552 hdlcdrv_arbitrate +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x0047ed05 sirdev_get_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x5c441491 sirdev_raw_write +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x76bb3e20 sirdev_set_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x78845ad1 sirdev_put_instance +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x78adb93c irda_unregister_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x82fdb4e2 sirdev_set_dtr_rts +EXPORT_SYMBOL drivers/net/irda/sir-dev 0x8b04778a irda_register_dongle +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xb0b60f81 sirdev_write_complete +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc3976bab sirdev_raw_read +EXPORT_SYMBOL drivers/net/irda/sir-dev 0xc53bd070 sirdev_receive +EXPORT_SYMBOL drivers/net/mdio 0x0f934475 mdio45_ethtool_gset_npage +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/phy/mdio-bitbang 0x374cbde0 alloc_mdio_bitbang +EXPORT_SYMBOL drivers/net/phy/mdio-bitbang 0xdfb27921 free_mdio_bitbang +EXPORT_SYMBOL drivers/net/ppp/pppox 0x304689d9 pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x9882cfc3 register_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto +EXPORT_SYMBOL drivers/net/ppp/pppox 0xfc2acb1d pppox_ioctl +EXPORT_SYMBOL drivers/net/sungem_phy 0x591f0825 sungem_phy_probe +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x38da4725 cycx_intr +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x62be23ea cycx_setup +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x66a4c4e6 cycx_down +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0x968458a6 cycx_peek +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xb6f383de cycx_poke +EXPORT_SYMBOL drivers/net/wan/cycx_drv 0xfe7cd576 cycx_exec +EXPORT_SYMBOL drivers/net/wan/hdlc 0x04d223f2 unregister_hdlc_device +EXPORT_SYMBOL drivers/net/wan/hdlc 0x11c03e6e unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x62bfa25d hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x62c2ad4e alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x70feaef0 hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x7ba79191 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x927e7396 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa1f0dcef hdlc_change_mtu +EXPORT_SYMBOL drivers/net/wan/hdlc 0xa602deed attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xca78e108 register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xfeccf7aa hdlc_ioctl +EXPORT_SYMBOL drivers/net/wimax/i2400m/i2400m 0xe875701c i2400m_unknown_barker +EXPORT_SYMBOL drivers/net/wireless/airo 0x8549924d stop_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xc732345b reset_airo_card +EXPORT_SYMBOL drivers/net/wireless/airo 0xe0b1ac22 init_airo_card +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x310779b4 ath_hw_setbssidmask +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x319c6026 ath_is_49ghz_allowed +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x41a2b6a0 ath_hw_get_listen_time +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x4e2481d5 ath_is_world_regd +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0x98b39c4a ath_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa1a9f65b ath_regd_get_band_ctl +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xa621fc12 ath_hw_cycle_counters_update +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc08d1959 ath_regd_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xc886a931 ath_key_config +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xce1bf82b ath_rxbuf_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xce9e3f3e ath_reg_notifier_apply +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xceeeced0 ath_key_delete +EXPORT_SYMBOL drivers/net/wireless/ath/ath 0xd264368e ath_hw_keyreset +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x2292d714 ath6kl_core_rx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x394ae0ee ath6kl_core_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x4e1380ee ath6kl_printk +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x7706b9ee ath6kl_cfg80211_suspend +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x77d3d75c ath6kl_stop_txrx +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x82027ee8 ath6kl_core_create +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x91cfb84a ath6kl_hif_rw_comp_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x93514139 ath6kl_hif_intr_bh_handler +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0x9d7ca1f5 ath6kl_core_destroy +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xaa03e25f ath6kl_core_tx_complete +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xc551d26e ath6kl_cfg80211_resume +EXPORT_SYMBOL drivers/net/wireless/ath/ath6kl/ath6kl_core 0xe6506dda ath6kl_core_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x3c04a13c ath9k_cmn_get_hw_crypto_keytype +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x7fbab7eb ath9k_cmn_update_ichannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8a010d4b ath9k_cmn_get_curchannel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0x8f94835d 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 0xf5953a62 ath9k_cmn_init_crypto +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_common 0xf59eadf3 ath9k_cmn_padpos +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x05d7e49f ar9003_paprd_populate_single_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0669a850 ar9003_hw_bb_watchdog_dbg_info +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x0ec8a6dc ath9k_hw_btcoex_init_mci +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11449452 ath9k_hw_btcoex_init_3wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x11940139 ath9k_hw_setantenna +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x14ae8b74 ath9k_hw_settsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x15d25c71 ath9k_hw_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1947cb32 ath_gen_timer_isr +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x1ceb2b71 ath9k_hw_enable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x207750c5 ath9k_hw_btcoex_init_2wire +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x21b45dd9 ath9k_hw_init +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x23cc0a96 ath9k_hw_set_sta_beacon_timers +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x257cf3d7 ath9k_hw_cfg_gpio_input +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x26746161 ath_gen_timer_free +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x268f82fc ath9k_hw_gen_timer_stop +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27971d57 ath9k_hw_wait +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x27dbc12d ath9k_hw_set_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x28461ec5 ath9k_hw_btcoex_set_weight +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2a1dd378 ath9k_hw_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2baebb42 ath9k_hw_abort_tx_dma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x2e39a958 ath9k_hw_ani_monitor +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3063da44 ath9k_hw_init_global_settings +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x31976a21 ath9k_hw_gettsf64 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x342cf720 ath9k_hw_updatetxtriglevel +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x34387d84 ath_gen_timer_alloc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x36bf6a3d ath9k_hw_set_rx_bufsize +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3761f08a ath9k_hw_intrpend +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3ccb0b0f ath9k_hw_write_associd +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x3fc3ca30 ath9k_hw_deinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x402a8dd7 ath9k_hw_btcoex_bt_stomp +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x407ae6fb ath9k_hw_btcoex_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4486963a ar9003_paprd_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4666b033 ar9003_mci_send_message +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4ab0ad12 ath9k_hw_check_alive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x4c6a13ee ath9k_hw_numtxpending +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x51a8b961 ath9k_hw_gettxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x553e1dea ath9k_hw_reset +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x56d93316 ath9k_hw_get_txq_props +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5746fb59 ath9k_hw_set_txpowerlimit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x58d140d7 ath9k_hw_beaconinit +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x59f58620 ar9003_paprd_is_done +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x5dddee9c ath9k_hw_gpio_get +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6034c6db ath9k_hw_getrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6301e7f2 ath9k_hw_cfg_output +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x653d8eb5 ath9k_hw_beaconq_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x69fbe595 ar9003_paprd_setup_gain_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6cfe41a3 ath9k_hw_phy_disable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6f466bd5 ath9k_hw_rxprocdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x6fd7e794 ath9k_hw_reset_calvalid +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x7b2385be ath9k_hw_puttxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x81ef2925 ath9k_hw_init_btcoex_hw +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x85ac3732 ath9k_hw_setuprxdesc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x89502014 ath9k_hw_startpcureceive +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8a242369 ath9k_hw_setrxabort +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8b1cf53a ar9003_paprd_init_table +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8d490d56 ath9k_hw_setopmode +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8f7b0131 ath9k_hw_disable_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x8fafecbb ath9k_hw_btcoex_enable +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x906cdd33 ath9k_hw_disable_mib_counters +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x915b7e80 ar9003_mci_state +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x92a6fa06 ath9k_hw_stopdmarecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x9539bb0b ar9003_paprd_create_curve +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x989bf46b ath9k_hw_setmcastfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0x991ac48f ath9k_hw_stop_dma_queue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa0c4e3b5 ath9k_hw_btcoex_init_scheme +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa45fdab4 ath9k_hw_computetxtime +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa911389c ath9k_hw_abortpcurecv +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xa91a5545 ath9k_hw_getchan_noise +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xaaabfc27 ath9k_hw_txstart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xabc82e10 ath9k_hw_proc_mib_event +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb6821499 ath9k_hw_set_tsfadjust +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb7baa881 ar9003_mci_cleanup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xb9abffa4 ar9003_mci_setup +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbbc901c5 ath9k_hw_process_rxdesc_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xbec8c7d6 ath9k_hw_addrxbuf_edma +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc30e5e0c ath9k_hw_releasetxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xc6d8d30b ar9003_hw_disable_phy_restart +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc410cde ath9k_hw_set_gpio +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xdc582f7f ath9k_hw_name +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xde7689d9 ath9k_hw_gettsf32 +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xe8dae732 ath9k_hw_putrxbuf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xeb28c243 ath9k_hw_setpower +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xef7b4a26 ath9k_hw_gen_timer_start +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf20c678d ar9003_mci_get_interrupt +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf290a70b ath9k_hw_setuptxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf363fe75 ath9k_hw_setrxfilter +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xf7f0af0c ar9003_get_pll_sqsum_dvc +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfa6c8e31 ath9k_hw_getnf +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfb719e16 ath9k_hw_set_interrupts +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfd6e3509 ath9k_hw_setup_statusring +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfdad34b2 ath9k_hw_resettxqueue +EXPORT_SYMBOL drivers/net/wireless/ath/ath9k/ath9k_hw 0xfe68dbdd ath9k_hw_bstuck_nfcal +EXPORT_SYMBOL drivers/net/wireless/atmel 0x1eeac279 atmel_open +EXPORT_SYMBOL drivers/net/wireless/atmel 0x672d3db2 init_atmel_card +EXPORT_SYMBOL drivers/net/wireless/atmel 0xb35d3dd1 stop_atmel_card +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x14268375 brcmf_sdio_probe +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmfmac/brcmfmac 0x7e071581 brcmf_sdio_remove +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x0d511939 brcmu_pkt_buf_free_skb +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x292335e6 brcmu_pktq_flush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x52350432 brcmu_pktq_init +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x6a8afeee brcmu_pktq_pdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x7432f297 brcmu_pktq_pdeq_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0x77e7ca84 brcmu_pktq_penq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xac98a7e0 brcmu_pktq_penq_head +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xbdd86807 brcmu_pktq_pflush +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc071b606 brcmu_pktq_mdeq +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xc346f51b brcmu_pktq_mlen +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xd4d0577e brcmu_pktq_peek_tail +EXPORT_SYMBOL drivers/net/wireless/brcm80211/brcmutil/brcmutil 0xf30e5604 brcmu_pkt_buf_get_skb +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x1723ac32 hostap_set_multicast_list_queue +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x19a65442 hostap_init_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x209e458a hostap_setup_dev +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x21a3fd81 hostap_80211_ops +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x4c31f8ef hostap_init_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x51394118 hostap_remove_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x55a47c67 hostap_init_ap_proc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x56b64590 hostap_add_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x6fabf353 hostap_free_data +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x807e5608 hostap_check_sta_fw_version +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x861c5d71 hostap_set_hostapd_sta +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x96d4c668 hostap_set_roaming +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0x9b9f703c prism2_update_comms_qual +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa0ecec45 hostap_set_encryption +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa12ad27f hostap_dump_tx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa418666d hostap_80211_rx +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xa7598e34 hostap_info_init +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xadc10303 hostap_handle_sta_tx_exc +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb2a945e0 hostap_dump_rx_header +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb4b77c8b hostap_80211_get_hdrlen +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb501144e hostap_get_porttype +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xb6ea5f10 hostap_set_auth_algs +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xbeede6d4 hostap_info_process +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xc0334fd4 hostap_master_start_xmit +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xdb98035c hostap_set_word +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xef799e45 hostap_set_hostapd +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xf947b3a9 hostap_remove_interface +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfdede854 hostap_set_antsel +EXPORT_SYMBOL drivers/net/wireless/hostap/hostap 0xfe3ceccd hostap_set_string +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x0fe30472 alloc_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x242686f3 libipw_wx_set_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x46c9ab3e libipw_networks_age +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x540d33b1 libipw_wx_get_encodeext +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5b558935 libipw_is_valid_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x5eadf77f free_libipw +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x60e4b9b4 libipw_get_geo +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x8ce81ebd libipw_get_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x94f25073 libipw_freq_to_channel +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0x9be8b754 libipw_channel_to_index +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xa823ac9a libipw_xmit +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb17582d8 libipw_wx_set_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb2aa3fb5 libipw_wx_get_scan +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xb96b347d libipw_change_mtu +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xc1ee825f libipw_txb_free +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xccb09300 libipw_get_channel_flags +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xcfa1b506 libipw_rx +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd44cc727 libipw_channel_to_freq +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xd94c5cf5 libipw_wx_get_encode +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xf343dd16 libipw_rx_mgt +EXPORT_SYMBOL drivers/net/wireless/ipw2x00/libipw 0xfae6bb1f libipw_set_geo +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x05ad6d49 il_set_rxon_ht +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x06c804c3 il_is_ht40_tx_allowed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0801e74b il_mac_change_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0cd6c659 il_hdl_spectrum_measurement +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x0e4d8188 il_mac_bss_info_changed +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x103a05c2 il_set_flags_for_band +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x10a8471f il_send_add_sta +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x18f9449a il_setup_rx_scan_handlers +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1977b17a il_free_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1e7dd529 il_txq_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x1ef9e4b2 il_mac_reset_tsf +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x21758984 il_rx_queue_alloc +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x26fa2e41 il_cmd_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2a3f02ca il_mac_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x2ffc3736 il_eeprom_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x314b8758 il_tx_cmd_complete +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x35cba767 il_check_rxon_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x378a65a5 il_set_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3c3be8b3 _il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x3f0da51c il_leds_exit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x406662a4 il_pm_ops +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x41fd642b il_send_cmd_pdu +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x44b357ac il_get_single_channel_number +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x45b7fcb6 il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x46f2b7a5 il_usecs_to_beacons +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x475fa37a il_set_tx_power +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x48211b29 il_setup_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x4aa39103 il_get_cmd_string +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x51e43b00 il_hdl_pm_debug_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x54ab3b10 il_hdl_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x564c6740 il_debug_level +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x567b23f1 il_send_cmd_sync +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x5e239d9b il_mac_conf_tx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6168f3a0 il_init_scan_params +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x667cac20 il_mac_add_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x694abcdb il_mac_sta_remove +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bb9a262 il_cancel_scan_deferred_work +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6bf424a8 il_init_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x6ec7a62a il_hdl_pm_sleep +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x70f0b442 il_init_geos +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x77c803d7 il_get_active_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7a6f1bdc il_chswitch_done +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7b3c5747 il_dbgfs_unregister +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7d21a3ca il_fill_probe_req +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x7f43fc66 il_alloc_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x80da8ac9 _il_poll_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8172bac6 il_scan_cancel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8288d05b il_irq_handle_error +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x82bc1e63 il_free_txq_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8530b127 il_rd_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x855dc8e5 il_tx_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x886162f6 il_send_lq_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b1b7597 il_connection_init_rx_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8b78ac70 il_get_lowest_plcp +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8c83c09a il_get_passive_dwell_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x8ca15a43 il_scan_cancel_timeout +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x90e32879 il_update_stats +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x91652a01 il_set_rate +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x94725c06 il_add_beacon_time +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99b32dbb il_eeprom_query_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x99d31323 il_tx_cmd_protection +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9b372741 il_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0x9f0418ff il_mac_remove_interface +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa02bbddf il_clear_bit +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa2c2ae9f il_rx_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa34e32ac il_send_cmd_pdu_async +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xa382038e il_full_rxon_required +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xad09ad2c il_set_rxon_hwcrypto +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae705662 il_power_update_mode +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xae98d7c1 il_power_initialize +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb3cf35de il_dbgfs_register +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4556435 il_send_rxon_timing +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb4c18c70 il_leds_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7bd33ff il_isr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xb7c0ca10 il_wr_prph +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbb579f01 il_tx_queue_unmap +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdb4e25f il_send_cmd +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xbdfd6ca5 il_mac_hw_scan +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc39cf12c il_bg_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xc5341cbd il_pci_resume +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xca461240 il_eeprom_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xceea5b8a il_set_rxon_channel +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd08f6f8b il_write_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd3655dac il_apm_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd75deb23 il_send_stats_request +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd7b3790e il_tx_queue_init +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xd970d01b il_eeprom_query16 +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdbae64c4 il_add_station_common +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xdf0f7a7a il_tx_queue_reset +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe435493a il_queue_space +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe55d8a25 il_free_channel_map +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe6144a68 il_cmd_queue_free +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xe69ceccd il_get_channel_info +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xeb2cc70e il_setup_watchdog +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec235164 il_restore_stations +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xec7c86f8 il_get_free_ucode_key_idx +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xecea2bb3 il_send_bt_config +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf06bb4ff il_set_decrypted_flag +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf09229ce il_apm_stop +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf36e0818 il_rx_queue_update_write_ptr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf454300f il_read_targ_mem +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xf501278b il_bcast_addr +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfae515a9 il_hdl_csa +EXPORT_SYMBOL drivers/net/wireless/iwlegacy/iwlegacy 0xfc3e4404 il_clear_ucode_stations +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 0x2f7b7e55 __tracepoint_iwlwifi_dev_ucode_wrap_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x3b9d00d6 __tracepoint_iwlwifi_dev_ioread32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x779dd6f5 __tracepoint_iwlwifi_dev_iowrite32 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x85c1bb84 __tracepoint_iwlwifi_dev_iowrite8 +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0x963a6f8a __tracepoint_iwlwifi_dev_ucode_error +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xb8f7026f __tracepoint_iwlwifi_dev_ucode_cont_event +EXPORT_SYMBOL drivers/net/wireless/iwlwifi/iwlwifi 0xf9ec6bdd __tracepoint_iwlwifi_dev_ucode_event +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x0bf321b4 orinoco_up +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x252cb9f1 __orinoco_ev_rx +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x35bcf084 orinoco_set_multicast_list +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x413066f8 orinoco_if_add +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x5dea5bf1 hermes_struct_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x6fd03a48 orinoco_process_xmit_skb +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x80efaed0 orinoco_stop +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x8b9923cb __orinoco_ev_info +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x98f3825a orinoco_init +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0x9d8ad53d orinoco_change_mtu +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xb7e97ae3 free_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xbc116b42 orinoco_down +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xc518b772 orinoco_tx_timeout +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xce61c526 orinoco_if_del +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xd2d382f1 orinoco_get_stats +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xe5177265 alloc_orinocodev +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xf1915769 orinoco_open +EXPORT_SYMBOL drivers/net/wireless/orinoco/orinoco 0xffe27bca orinoco_interrupt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x0f38c128 _rtl92c_phy_fw_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x1fbec1e2 rtl92c_bt_rssi_state_change +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x25a3fab2 rtl92c_set_fw_joinbss_report_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2bd94a7e rtl92c_phy_rf_config +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x2f724758 _rtl92c_phy_bb8192c_config_parafile +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x37af1f0f _rtl92c_store_pwrIndex_diffrate_offset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x3ce5e0a6 _rtl92c_phy_rf_serial_write +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x452d3cba rtl92c_phy_set_rfpath_switch +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x4bde5a4d _rtl92c_phy_init_bb_rf_register_definition +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x5e6d8c22 rtl92c_phy_scan_operation_backup +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x64d01b7f rtl92c_dm_bt_coexist +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x6832ed7b rtl92c_phy_iq_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x73b36621 rtl92c_phy_update_txpower_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7514af11 rtl92c_dm_init +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x76caa434 rtl92c_phy_set_bw_mode +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x78620204 rtl92c_phy_set_io +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7b4c9a9c rtl92c_phy_set_txpower_level +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bca1401 rtl92c_dm_init_edca_turbo +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x7bf49314 rtl92c_phy_ap_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x8f8e1403 rtl92c_dm_check_txpower_tracking +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9088329d _rtl92c_phy_set_rf_sleep +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x90d6efa0 rtl92c_phy_lc_calibrate +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x94e1e8f2 rtl92c_phy_set_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x955f5bc0 rtl92c_dm_rf_saving +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0x9ffd9adc _rtl92c_phy_dbm_to_txpwr_Idx +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa36142b rtl92c_dm_watchdog +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xaa418838 rtl8192_phy_check_is_legal_rfpath +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb3314d48 _rtl92c_phy_calculate_bit_shift +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb39ab8c6 rtl92c_firmware_selfreset +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xb97f7b53 rtl92c_phy_query_bb_reg +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbc8600b4 rtl92c_dm_init_rate_adaptive_mask +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xbd5bf7db rtl92c_set_fw_pwrmode_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc3e58deb _rtl92c_phy_fw_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xc5790a27 _rtl92c_phy_txpwr_idx_to_dbm +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca3df8a2 rtl92c_phy_set_io_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xca7d5532 _rtl92c_phy_rf_serial_read +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xddb7e293 rtl92c_download_fw +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe1ca21a2 rtl92c_dm_write_dig +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xe63bba7b rtl92c_set_fw_rsvdpagepkt +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xf11517d8 rtl92c_phy_sw_chnl_callback +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfadd3a45 rtl92c_phy_sw_chnl +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfc5b3393 rtl92c_fill_h2c_cmd +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common 0xfe2c67a9 rtl92ce_phy_set_rf_on +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x0d49dae4 rtl_cam_add_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x159dd6b3 rtl_init_rfkill +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1c7d088d rtl_cam_del_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x1d49a699 rtl_pci_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x246ae76f rtl_efuse_shadow_map_update +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x2ff04eaa rtl_cam_reset_all_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x4d1c093b rtl_usb_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x53c43725 rtl_pci_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7342e0df rtl_usb_suspend +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x7601c0cc rtl_ps_set_rf_state +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x79222e6f rtl_cam_empty_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x910f763c rtl_fw_cb +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0x9dcc5276 rtlwifi_rate_mapping +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb4247ac6 rtl_ps_disable_nic +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xb7d57f21 rtl_cam_mark_invalid +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc30ee7cd rtl_usb_resume +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xc8ae8053 rtl_pci_probe +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xdacd2a91 efuse_read_1byte +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe0fa46c0 rtl_pci_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe3ec6da9 rtl_get_tcb_desc +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xe89272d6 rtl_cam_delete_one_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xebff20e3 rtl_usb_disconnect +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xef996337 rtl_cam_get_free_entry +EXPORT_SYMBOL drivers/net/wireless/rtlwifi/rtlwifi 0xf828a66f rtl_ps_enable_nic +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0x5e437a31 wlcore_calc_packet_alignment +EXPORT_SYMBOL drivers/net/wireless/ti/wlcore/wlcore 0xfb1da61b wl1271_tx_complete +EXPORT_SYMBOL drivers/parport/parport 0x0649f7e8 parport_get_port +EXPORT_SYMBOL drivers/parport/parport 0x070de22e parport_ieee1284_write_compat +EXPORT_SYMBOL drivers/parport/parport 0x09f26744 parport_read +EXPORT_SYMBOL drivers/parport/parport 0x0f853ae6 parport_unregister_driver +EXPORT_SYMBOL drivers/parport/parport 0x14e49db0 parport_ieee1284_ecp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x1b53780e parport_register_driver +EXPORT_SYMBOL drivers/parport/parport 0x2a13d418 parport_register_port +EXPORT_SYMBOL drivers/parport/parport 0x345c3e47 parport_announce_port +EXPORT_SYMBOL drivers/parport/parport 0x425a7a39 parport_wait_peripheral +EXPORT_SYMBOL drivers/parport/parport 0x4d2a941b parport_ieee1284_interrupt +EXPORT_SYMBOL drivers/parport/parport 0x4e69921b parport_ieee1284_epp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x5e3a3912 parport_irq_handler +EXPORT_SYMBOL drivers/parport/parport 0x635b42e5 parport_unregister_device +EXPORT_SYMBOL drivers/parport/parport 0x652e464e parport_claim_or_block +EXPORT_SYMBOL drivers/parport/parport 0x66ed00ac parport_ieee1284_epp_read_data +EXPORT_SYMBOL drivers/parport/parport 0x6c323e26 parport_ieee1284_ecp_write_data +EXPORT_SYMBOL drivers/parport/parport 0x7bd5f983 parport_put_port +EXPORT_SYMBOL drivers/parport/parport 0x83c96b5a parport_ieee1284_ecp_write_addr +EXPORT_SYMBOL drivers/parport/parport 0x91bd4103 parport_ieee1284_read_nibble +EXPORT_SYMBOL drivers/parport/parport 0x95f2e52a parport_find_base +EXPORT_SYMBOL drivers/parport/parport 0xa192c767 parport_ieee1284_epp_write_data +EXPORT_SYMBOL drivers/parport/parport 0xa53890a1 parport_ieee1284_epp_read_addr +EXPORT_SYMBOL drivers/parport/parport 0xabca02a9 parport_ieee1284_read_byte +EXPORT_SYMBOL drivers/parport/parport 0xaeece246 parport_find_number +EXPORT_SYMBOL drivers/parport/parport 0xc05799a4 parport_release +EXPORT_SYMBOL drivers/parport/parport 0xc1c7bb68 parport_wait_event +EXPORT_SYMBOL drivers/parport/parport 0xc23c7413 parport_register_device +EXPORT_SYMBOL drivers/parport/parport 0xc9436952 parport_write +EXPORT_SYMBOL drivers/parport/parport 0xcd0c0fc2 parport_remove_port +EXPORT_SYMBOL drivers/parport/parport 0xe83aae7b parport_set_timeout +EXPORT_SYMBOL drivers/parport/parport 0xea0cfd2b parport_claim +EXPORT_SYMBOL drivers/parport/parport 0xfef6f5a8 parport_negotiate +EXPORT_SYMBOL drivers/parport/parport_pc 0x52f3e6ee parport_pc_probe_port +EXPORT_SYMBOL drivers/parport/parport_pc 0x7ff459a7 parport_pc_unregister_port +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x06a918e7 __pcmcia_request_exclusive_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x230ba48e pcmcia_release_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x3015fc61 pcmcia_unregister_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x36085ac1 pcmcia_disable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4d6dad6e pcmcia_read_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x4e4a727b pcmcia_write_config_byte +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x6cc80281 pcmcia_request_irq +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x7256dfea pcmcia_enable_device +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x742f5665 pcmcia_parse_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x8818f925 pcmcia_fixup_vpp +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89af6c6c pcmcia_map_mem_page +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x89f28a74 pcmcia_request_io +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x92e3a9d6 pcmcia_loop_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0x99ce8624 pcmcia_get_tuple +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xb3deadbc pcmcia_fixup_iowidth +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xc9b103c1 pcmcia_request_window +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xcbd38673 pcmcia_dev_present +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xdbb5a729 pcmcia_loop_config +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xe382dcb1 pcmcia_register_driver +EXPORT_SYMBOL drivers/pcmcia/pcmcia 0xef3a653a pcmcia_get_mac_from_cis +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x08ced9d8 pcmcia_socket_list_rwsem +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x1432781f pcmcia_parse_uevents +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x212db8d2 pcmcia_socket_list +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x23d98461 pccard_register_pcmcia +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x4af5b4a4 pcmcia_register_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x5c00e780 pcmcia_reset_card +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7893e2fb pcmcia_get_socket_by_nr +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x7bee2d73 pcmcia_unregister_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0x9c4476f5 pcmcia_put_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb4a21601 pcmcia_get_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xb643035f pcmcia_socket_class +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xcf97f3bd dead_socket +EXPORT_SYMBOL drivers/pcmcia/pcmcia_core 0xf892cc05 pcmcia_parse_events +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0x480d1901 pccard_static_ops +EXPORT_SYMBOL drivers/pcmcia/pcmcia_rsrc 0xd0f84866 pccard_nonstatic_ops +EXPORT_SYMBOL drivers/pps/pps_core 0x23a609c8 pps_register_source +EXPORT_SYMBOL drivers/pps/pps_core 0x88dcab3a pps_lookup_dev +EXPORT_SYMBOL drivers/pps/pps_core 0xf05ca1cb pps_event +EXPORT_SYMBOL drivers/pps/pps_core 0xf9940a45 pps_unregister_source +EXPORT_SYMBOL drivers/scsi/bnx2fc/bnx2fc 0x54975e10 bnx2fc_ctlr_get_lesb +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x1e8eb165 fcoe_ctlr_init +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x2aa1982a fcoe_ctlr_recv_flogi +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x63efc0ce fcoe_ctlr_get_fip_mode +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x64fb35de fcoe_transport_attach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x7c809651 fcoe_ctlr_destroy +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x80803609 fcoe_ctlr_els_send +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x86462778 fcoe_fcf_get_selected +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x973e5bc7 fcoe_transport_detach +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0x9d59e5fb fcoe_ctlr_recv +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xaa84dd7c fcoe_ctlr_link_down +EXPORT_SYMBOL drivers/scsi/fcoe/libfcoe 0xc699e7e3 fcoe_ctlr_link_up +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x03adad5c fc_lport_bsg_request +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x06024ad5 fc_fcp_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x077bb041 fc_linkup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x0f9dc7d5 fc_lport_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x17963375 fc_exch_mgr_add +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1a25b9d0 fc_rport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x1ed8ed4b fc_vport_id_lookup +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x22b90986 fc_exch_mgr_del +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x2bab847c fc_elsct_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x33728653 fc_fc4_deregister_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x36e5fbaf fc_cpu_mask +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x3b852c69 fc_elsct_send +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x486c55a1 fc_eh_device_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x4f1f281e fc_frame_alloc_fill +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x500072f2 fc_lport_logo_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x57481b5e fc_exch_mgr_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f3ef6d6 fc_queuecommand +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x5f47298d fc_get_host_port_state +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6210f2d0 _fc_frame_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6242a43b libfc_vport_create +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x67b96a84 fc_exch_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x6e516293 fc_lport_flogi_resp +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x742d2b3c fc_frame_crc_check +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x75b2023d fc_fc4_register_provider +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x771488e7 fc_exch_recv +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x784fef83 fc_eh_host_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x787fce5b fc_set_rport_loss_tmo +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x7f21c527 fc_fcp_destroy +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x82301cf9 fc_exch_mgr_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x83e43dfd fc_fabric_login +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8a7aabf4 fc_lport_notifier_head +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x8f8984c6 fc_fill_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x951961f0 fc_disc_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x96ec5fa6 fc_exch_mgr_list_clone +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0x9b37c10a fc_change_queue_depth +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xad155ce1 fc_lport_init +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xafee4808 fc_exch_mgr_free +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xb6daa537 fc_eh_abort +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc92fc59c fc_lport_config +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xc9efbfa1 fc_get_host_stats +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xcde70cf6 fc_fabric_logoff +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd53d0d2b fc_slave_alloc +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xd6979d5d fc_linkdown +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdc3fdf3b fc_get_host_speed +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xdfd0c6c5 fc_vport_setlink +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe31557da fc_lport_reset +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe3299836 fc_rport_terminate_io +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe38761bd fc_change_queue_type +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9730711 fc_lport_iterate +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xe9e9fcab fc_fill_reply_hdr +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xeea1ecbf fc_set_mfs +EXPORT_SYMBOL drivers/scsi/libfc/libfc 0xf78c91c9 fc_lport_set_local_id +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 0x7bc7ab4e mraid_mm_register_adp +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x057868a5 osd_req_get_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x08458f06 osd_req_list_dev_partitions +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0c17edb1 osd_sec_init_nosec_doall_caps +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x0f3269c1 osd_req_create_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1429b90c osd_req_read_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x16b905e5 osd_req_list_partition_objects +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1a19c60b osd_req_add_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x1cfec333 osd_req_write_sg +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x2c77863e osd_auto_detect_ver +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x392f5ae9 osd_req_flush_collection +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3a64d835 osd_dev_init +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3e96f879 osd_req_decode_get_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x3f12d8d1 osd_req_write_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x48115408 osd_req_format +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x4f51bd7f osd_req_flush_obsd +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x55a798dc osd_req_read_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x616cf902 osd_execute_request_async +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6192782c osd_execute_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x634eb178 osd_req_read +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x6d26d342 osd_finalize_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x86411bbd osd_req_remove_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x879f13df osd_req_remove_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x88f9cb7e osd_req_add_set_attr_list +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x897c2296 osd_req_read_sg_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x89dc2a02 osd_req_flush_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x99ecd7eb osd_req_create_object +EXPORT_SYMBOL drivers/scsi/osd/libosd 0x9d04beba osd_req_set_attributes +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa8e3840b osd_end_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa99790cd osd_req_write +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xa9be0887 osd_dev_fini +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xae0abec3 osd_req_write_kern +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xb8088843 osd_req_decode_sense_full +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xbd7dd9d3 osd_req_flush_partition +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xc2c34de2 osd_start_request +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xdeb052d7 osd_req_list_partition_collections +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xee543ad4 osd_req_add_get_attr_page +EXPORT_SYMBOL drivers/scsi/osd/libosd 0xf9e8edac osd_req_list_collection_objects +EXPORT_SYMBOL drivers/scsi/osd/osd 0x0d634d44 osduld_put_device +EXPORT_SYMBOL drivers/scsi/osd/osd 0x3acb031c osduld_path_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x5fc48609 osduld_unregister_test +EXPORT_SYMBOL drivers/scsi/osd/osd 0x73d3b895 osduld_info_lookup +EXPORT_SYMBOL drivers/scsi/osd/osd 0x800a3f6b osduld_device_info +EXPORT_SYMBOL drivers/scsi/osd/osd 0x8a70d13c osduld_device_same +EXPORT_SYMBOL drivers/scsi/osd/osd 0xe4ea2bc9 osduld_register_test +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x0284876b qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x06e4d5e2 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x32a19725 qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3afb8b62 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x3e4ccab8 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x4a17d402 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x6e0b50cc qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9e97b361 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcfc349ba qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xdf0e26a5 qlt_stop_phase2 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe8aa7cb1 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x02741443 qlogicfas408_bus_reset +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x0cf01b27 qlogicfas408_disable_ints +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1b11cecc qlogicfas408_abort +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x1f55cd70 qlogicfas408_ihandl +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x20688eff qlogicfas408_queuecommand +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x3fd8cd71 qlogicfas408_detect +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0x58723e4d qlogicfas408_info +EXPORT_SYMBOL drivers/scsi/qlogicfas408 0xe1a41589 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 0x753856e4 raid_component_add +EXPORT_SYMBOL drivers/scsi/raid_class 0xac69020c raid_class_release +EXPORT_SYMBOL drivers/scsi/raid_class 0xe2ca1b96 raid_class_attach +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x1a6e6740 fc_block_scsi_eh +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x24f6eba1 fc_remote_port_rolechg +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x351df174 fc_host_post_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3be87764 fc_vport_terminate +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x3dd187cb fc_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x660e9d44 fc_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0x7954b1ea fc_get_event_number +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xb0667be3 scsi_is_fc_rport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc0235183 fc_host_post_vendor_event +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xc1d47245 fc_remote_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xcaa38340 fc_vport_create +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xd792825a fc_remote_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xe4c04060 fc_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_fc 0xf1069648 scsi_is_fc_vport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x06541dba sas_port_mark_backlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0cbc34e3 sas_port_get_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0e06f432 sas_rphy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x0efbfeb7 sas_remove_children +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x17763923 sas_phy_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x213ce343 sas_port_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x23dc12d1 sas_read_port_mode_page +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x2739f1ab sas_port_add_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x39f9a0e3 sas_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x3e3edb53 sas_port_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5213956d sas_phy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x5e576414 sas_port_delete_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6a94ba0a sas_rphy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6b9fc280 sas_release_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x6d8d3355 sas_phy_delete +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x75d47a54 scsi_is_sas_phy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0x8f529990 sas_rphy_unlink +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa1d202ec sas_rphy_free +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa37acf01 sas_rphy_remove +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xa5217f57 sas_phy_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xba88c084 sas_port_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xbea7082b scsi_is_sas_port +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xd3ae836f sas_end_device_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xdc3ab4f8 sas_expander_alloc +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe290dfae scsi_is_sas_rphy +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe71790de sas_port_add +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xe9b7f416 sas_port_alloc_num +EXPORT_SYMBOL drivers/scsi/scsi_transport_sas 0xf3e7dafd sas_remove_host +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x3686ea09 spi_print_msg +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x42a1b9f7 spi_attach_transport +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x6186cd01 spi_display_xfer_agreement +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0x8522e875 spi_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xde5ce2c5 spi_schedule_dv_device +EXPORT_SYMBOL drivers/scsi/scsi_transport_spi 0xe2c13e3a spi_release_transport +EXPORT_SYMBOL drivers/ssb/ssb 0x0ff63c49 ssb_commit_settings +EXPORT_SYMBOL drivers/ssb/ssb 0x176e9cd3 ssb_pcicore_dev_irqvecs_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x1821aece ssb_bus_suspend +EXPORT_SYMBOL drivers/ssb/ssb 0x21b37b37 ssb_device_disable +EXPORT_SYMBOL drivers/ssb/ssb 0x2c898112 ssb_set_devtypedata +EXPORT_SYMBOL drivers/ssb/ssb 0x2e98144a ssb_bus_sdiobus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3b072549 ssb_pcihost_register +EXPORT_SYMBOL drivers/ssb/ssb 0x3e97f5ed ssb_bus_pcibus_register +EXPORT_SYMBOL drivers/ssb/ssb 0x415bc30f ssb_chipco_gpio_control +EXPORT_SYMBOL drivers/ssb/ssb 0x468ebbac ssb_dma_translation +EXPORT_SYMBOL drivers/ssb/ssb 0x4f2bf1b1 ssb_bus_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0x5039db0d ssb_pmu_set_ldo_voltage +EXPORT_SYMBOL drivers/ssb/ssb 0x653a0aff ssb_bus_may_powerdown +EXPORT_SYMBOL drivers/ssb/ssb 0x666f2222 ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/ssb/ssb 0x77c6c19f ssb_device_is_enabled +EXPORT_SYMBOL drivers/ssb/ssb 0x8bc3cbad ssb_device_enable +EXPORT_SYMBOL drivers/ssb/ssb 0x8c206f48 ssb_bus_resume +EXPORT_SYMBOL drivers/ssb/ssb 0x8f8146c5 ssb_driver_unregister +EXPORT_SYMBOL drivers/ssb/ssb 0xc0512e0f ssb_admatch_base +EXPORT_SYMBOL drivers/ssb/ssb 0xd481192b ssb_admatch_size +EXPORT_SYMBOL drivers/ssb/ssb 0xd6f3e4c1 ssb_clockspeed +EXPORT_SYMBOL drivers/ssb/ssb 0xf8874c5e __ssb_driver_register +EXPORT_SYMBOL drivers/ssb/ssb 0xf9facfc4 ssb_bus_powerup +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xd98fb2c1 adt7316_probe +EXPORT_SYMBOL drivers/staging/iio/addac/adt7316 0xdeea4ec5 adt7316_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0x2498fdf8 ade7854_remove +EXPORT_SYMBOL drivers/staging/iio/meter/ade7854 0xce2a058d ade7854_probe +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x084234fa iio_sw_rb_free +EXPORT_SYMBOL drivers/staging/iio/ring_sw 0x318de6c2 iio_sw_rb_allocate +EXPORT_SYMBOL drivers/staging/media/cxd2099/cxd2099 0xc9812c1d cxd2099_attach +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x0fb21886 go7007_parse_video_stream +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x38479eb2 go7007_boot_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x76cc0fab go7007_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x92ac06d2 go7007_alloc +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0x9eeec4bd go7007_read_interrupt +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xb4c476a0 go7007_register_encoder +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xd1aefeca go7007_snd_init +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xeb863fe3 go7007_snd_remove +EXPORT_SYMBOL drivers/staging/media/go7007/go7007 0xf344fe5e go7007_read_addr +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x01e161b7 rtllib_wx_get_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x0a5e62c1 rtllib_wx_get_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x10dc06f9 rtllib_rx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x113aac2d rtllib_MgntDisconnect +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x14d42069 rtllib_EnableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x18c0daea rtllib_stop_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x193946b2 free_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x2efb5750 rtllib_wx_get_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x33f7b4fa rtllib_wx_get_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3437e3f1 rtllib_legal_channel +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x36d38f61 rtllib_softmac_stop_protocol +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x3a294a4f rtllib_wx_set_encode_ext +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x47470763 rtllib_wx_set_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x4ef9af4f rtllib_wx_get_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5ad67a01 rtllib_wx_set_essid +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5b8c48ae rtllib_DisableIntelPromiscuousMode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x5d6580f3 rtllib_reset_queue +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x60f8034e notify_wx_assoc_event +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6177012e rtllib_wx_get_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x635a00ca rtllib_wx_set_rawtx +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x67151b2f rtllib_sta_ps_send_null_frame +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x6750a15c rtllib_stop_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x690afc03 rtllib_wx_set_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7d6f4d61 rtllib_wx_set_encode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7eb9cc9c rtllib_act_scanning +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x7efbf8b1 rtllib_wx_set_gen_ie +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8938a4e2 alloc_rtllib +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x89724ea7 rtllib_wx_set_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x8fcfa3e3 Dot11d_Channelmap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0x9d1eaa34 rtllib_wx_set_mode +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xb3468901 rtllib_wx_set_mlme +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbe1420f2 rt_global_debug_component +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xbee1e8d5 rtllib_start_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc500cb37 RemovePeerTS +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc53a9e3e rtllib_wx_set_wap +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc64a8981 rtllib_stop_scan_syncro +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xc9920675 rtllib_wpa_supplicant_ioctl +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xcff19bdc rtllib_get_beacon +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd20664cc rtllib_wx_set_freq +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd6f3277b HT_update_self_and_peer_setting +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xd9d6c01c rtllib_ps_tx_ack +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdbb8cce0 rtllib_wx_get_rate +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xdf78f620 rtllib_wlan_frequencies +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xe2cb8d68 dot11d_init +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xea08076d rtllib_wx_get_name +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf01338ac rtllib_wx_set_auth +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xf5f53780 rtllib_wx_get_scan +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfa819530 rtllib_start_send_beacons +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfbcb2a6f rtllib_xmit +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfc934805 rtllib_wx_set_rts +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfd5f63f6 rtllib_wx_get_power +EXPORT_SYMBOL drivers/staging/rtl8192e/rtllib 0xfe314b9e rtllib_softmac_start_protocol +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x019f7afa ieee80211_ps_tx_ack_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0585477d Dot11d_Init +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x073b5e88 Dot11d_Reset +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0a87ad43 DOT11D_GetMaxTxPwrInDbm +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x0bbf922e Dot11d_UpdateCountryIe +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x12311d42 ieee80211_wx_get_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x134b33af ieee80211_wx_get_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x1d5c9117 ieee80211_wx_set_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3680254e ieee80211_wake_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3760cb2f IsLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x392914a4 ieee80211_get_beacon_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3ac088dd ieee80211_wx_set_mlme_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x3c7e715a ieee80211_send_probe_requests_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4441a368 ieee80211_start_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4a2b21a8 ieee80211_stop_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4f5fc5ff ieee80211_softmac_stop_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x4fd2e780 notify_wx_assoc_event_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x55a32344 ieee80211_rx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x572e85dc ToLegalChannel +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x5819c44d ieee80211_wx_set_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x618da570 HTUpdateSelfAndPeerSetting +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x714c6a2b SendDisassociation_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x71fe16ea DOT11D_ScanComplete +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x74c14c14 ieee80211_wx_get_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x79364455 ieee80211_start_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7b9f3d74 ieee80211_wx_get_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7cc78e11 ieee80211_wx_set_rawtx_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x7ff63ea6 ieee80211_wpa_supplicant_ioctl_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x80899089 ieee80211_wx_set_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x82739095 ieee80211_stop_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x8e2dbe11 ieee80211_softmac_start_protocol_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x90cabc33 ieee80211_wx_set_freq_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0x9f26bfd8 ieee80211_disassociate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xabfe0a27 ieee80211_wx_get_encode_ext_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xad3b4677 ieee80211_softmac_scan_syncro_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb2e8274b ieee80211_wx_get_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb55c063b ieee80211_reset_queue_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb60b1afd ieee80211_wx_set_auth_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb73761b5 ieee80211_rx_mgt_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xb8b22f8c ieee80211_wx_get_power_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xbc12346a ieee80211_wx_get_mode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc068dce1 ieee80211_wx_set_gen_ie_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc1f7bae7 ieee80211_is_shortslot_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc2a43db6 ieee80211_softmac_xmit_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xc370a43e ieee80211_wlan_frequencies_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd1836c15 ieee80211_txb_free_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd37c9626 ieee80211_wx_set_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd5908339 ieee80211_wx_set_encode_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd643baaa ieee80211_wx_get_wap_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd86d90fc ieee80211_wx_get_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xd9e8c8e1 ieee80211_wx_get_name_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xdd52bc70 ieee80211_wx_set_rts_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xde7183ef ieee80211_wx_set_essid_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xe218a8f2 ieee80211_is_54g_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf63aed65 ieee80211_wx_set_rate_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf740c388 ieee80211_wx_set_scan_rsl +EXPORT_SYMBOL drivers/staging/rtl8192u/r8192u_usb 0xf8075b06 ieee80211_stop_send_beacons_rsl +EXPORT_SYMBOL drivers/staging/telephony/ixj 0xaead3261 ixj_pcmcia_probe +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0x0f4d1d62 phone_unregister_device +EXPORT_SYMBOL drivers/staging/telephony/phonedev 0xd237509f phone_register_device +EXPORT_SYMBOL drivers/target/target_core_mod 0x024e47b5 target_fabric_configfs_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x02de3b18 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x033e7c5b sas_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x0351dd00 transport_subsystem_release +EXPORT_SYMBOL drivers/target/target_core_mod 0x05683d80 core_alua_check_nonop_delay +EXPORT_SYMBOL drivers/target/target_core_mod 0x0936fba3 core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x14e1aa2c transport_lookup_tmr_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x16f61df6 transport_send_check_condition_and_sense +EXPORT_SYMBOL drivers/target/target_core_mod 0x1785c28f transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x17d5c906 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x185ddf77 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x1a1844f7 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1f590b64 fc_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x27b52e30 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x283b1f77 core_tpg_clear_object_luns +EXPORT_SYMBOL drivers/target/target_core_mod 0x30237aa1 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x3a69c40d target_get_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x42ccea66 transport_add_device_to_core_hba +EXPORT_SYMBOL drivers/target/target_core_mod 0x4efdb878 target_setup_cmd_from_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0x56a95f07 transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x56d63d3a transport_generic_process_write +EXPORT_SYMBOL drivers/target/target_core_mod 0x60937c15 transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x621c9334 target_fabric_configfs_free +EXPORT_SYMBOL drivers/target/target_core_mod 0x6a70b758 fc_parse_pr_out_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0x6bc16c78 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0x705a5156 iscsi_parse_pr_out_transport_id +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 0x88becefd target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8eca41ae transport_lookup_cmd_lun +EXPORT_SYMBOL drivers/target/target_core_mod 0x92118286 core_tpg_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x9786c5fa target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x98bee0cb core_tmr_alloc_req +EXPORT_SYMBOL drivers/target/target_core_mod 0x9e82c634 transport_init_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xa86b963a core_tpg_add_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xa8dc834c transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa903d279 target_fabric_configfs_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9e977a4 fc_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xa9fc8595 core_tpg_del_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xaaa0de59 target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xabf30810 transport_check_aborted_status +EXPORT_SYMBOL drivers/target/target_core_mod 0xb1982f99 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0xb3e8b187 transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0xb42e68f7 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0xb5a27d53 target_put_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6437953 sas_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xbd35584a core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc146670e target_fabric_configfs_init +EXPORT_SYMBOL drivers/target/target_core_mod 0xceb2aba8 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xced149df iscsi_get_fabric_proto_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0xceeb10c9 sas_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xd685e4bb iscsi_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xe03ceb08 fc_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xe172e5f0 transport_generic_handle_data +EXPORT_SYMBOL drivers/target/target_core_mod 0xe28e9faa transport_subsystem_register +EXPORT_SYMBOL drivers/target/target_core_mod 0xeabe1ad9 transport_init_se_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf01621c7 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf21fde4c target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xf39c13fa transport_generic_handle_cdb_map +EXPORT_SYMBOL drivers/target/target_core_mod 0xf49af24d iscsi_get_pr_transport_id_len +EXPORT_SYMBOL drivers/target/target_core_mod 0xf50aeb46 target_splice_sess_cmd_list +EXPORT_SYMBOL drivers/target/target_core_mod 0xf66c2394 target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xf7b51043 sas_get_pr_transport_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf890c50d __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfc04f668 transport_generic_map_mem_to_cmd +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x3262d994 serial8250_do_set_termios +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x7c94393f serial8250_set_isa_configurator +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0x93083664 serial8250_register_8250_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc28b3bcb serial8250_register_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xc7208c3a serial8250_resume_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcc248d26 serial8250_suspend_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xcefcd99a serial8250_unregister_port +EXPORT_SYMBOL drivers/tty/serial/8250/8250 0xdeb2ae53 serial8250_do_pm +EXPORT_SYMBOL drivers/usb/class/cdc-wdm 0xf18c3bc8 usb_cdc_wdm_register +EXPORT_SYMBOL drivers/usb/host/sl811-hcd 0xe7ea2563 sl811h_driver +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xa64a4cea usb_nop_xceiv_unregister +EXPORT_SYMBOL drivers/usb/otg/nop-usb-xceiv 0xd0e43207 usb_nop_xceiv_register +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x0fc92230 usb_wwan_close +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2835a21c usb_wwan_set_termios +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2c45dc1b usb_wwan_write +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x2f8627c5 usb_wwan_ioctl +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x3ecca54f usb_wwan_startup +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x4927fb30 usb_wwan_resume +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x56997337 usb_wwan_dtr_rts +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x80a5a58f usb_wwan_write_room +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x88185d35 usb_wwan_disconnect +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8b69e6b1 usb_wwan_suspend +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0x8c1df4f6 usb_wwan_chars_in_buffer +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xab74c71e usb_wwan_tiocmget +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xd9445615 usb_wwan_release +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdb5f3c4d usb_wwan_open +EXPORT_SYMBOL drivers/usb/serial/usb_wwan 0xdf7dca83 usb_wwan_tiocmset +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x312e4188 usb_serial_resume +EXPORT_SYMBOL drivers/usb/serial/usbserial 0x4440fe32 usb_serial_suspend +EXPORT_SYMBOL drivers/video/backlight/generic_bl 0x366d19ef genericbl_limit_intensity +EXPORT_SYMBOL drivers/video/backlight/lcd 0xf8a9d1a0 lcd_device_register +EXPORT_SYMBOL drivers/video/backlight/lcd 0xfd2b6193 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 0xb04c6774 cyber2000fb_attach +EXPORT_SYMBOL drivers/video/cyber2000fb 0xb39f68d1 cyber2000fb_enable_extregs +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x499636ff matroxfb_g450_setclk +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x61f2a230 g450_mnp2f +EXPORT_SYMBOL drivers/video/matrox/g450_pll 0x85aa978e matroxfb_g450_setpll_cond +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x05bad1e1 matrox_G100 +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0x56bf0a50 matrox_mystique +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xb1a8042a DAC1064_global_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_DAC1064 0xed723e4f DAC1064_global_restore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_Ti3026 0x09b2ccb4 matrox_millennium +EXPORT_SYMBOL drivers/video/matrox/matroxfb_accel 0x0daa59b8 matrox_cfbX_init +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7b7a4312 matroxfb_register_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0x7e14185e matroxfb_enable_irq +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xde6f1243 matroxfb_unregister_driver +EXPORT_SYMBOL drivers/video/matrox/matroxfb_base 0xf1543cb6 matroxfb_wait_for_sync +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x21b90e82 matroxfb_g450_connect +EXPORT_SYMBOL drivers/video/matrox/matroxfb_g450 0x3ca4cfe4 matroxfb_g450_shutdown +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x25cf8049 matroxfb_PLL_calcclock +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2893a214 matroxfb_vgaHWrestore +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x2fc2d13e matroxfb_DAC_out +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0x9e958244 matroxfb_DAC_in +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcb0014bf matroxfb_vgaHWinit +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xcdc90c64 matroxfb_var2my +EXPORT_SYMBOL drivers/video/matrox/matroxfb_misc 0xea0c00e6 matroxfb_read_pins +EXPORT_SYMBOL drivers/video/mb862xx/mb862xxfb 0x0d316ed8 mb862xxfb_init_accel +EXPORT_SYMBOL drivers/video/output 0x08f766b0 video_output_unregister +EXPORT_SYMBOL drivers/video/output 0x59eaf288 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 0x285c466f svga_tilecursor +EXPORT_SYMBOL drivers/video/svgalib 0x36ab0b45 svga_get_caps +EXPORT_SYMBOL drivers/video/svgalib 0x3dee8e04 svga_tilecopy +EXPORT_SYMBOL drivers/video/svgalib 0x4ab38ef2 svga_set_default_crt_regs +EXPORT_SYMBOL drivers/video/svgalib 0x6088b92b svga_get_tilemax +EXPORT_SYMBOL drivers/video/svgalib 0x66bfa4ed 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 0x8d93e9b8 svga_settile +EXPORT_SYMBOL drivers/video/svgalib 0x8de63fb4 svga_set_timings +EXPORT_SYMBOL drivers/video/svgalib 0x91a506dc 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/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 0x0de4c097 vme_register_driver +EXPORT_SYMBOL drivers/vme/vme 0x0ec5babe vme_dma_free +EXPORT_SYMBOL drivers/vme/vme 0x137e2080 vme_dma_list_free +EXPORT_SYMBOL drivers/vme/vme 0x20df5a3d vme_dma_pci_attribute +EXPORT_SYMBOL drivers/vme/vme 0x2316848a vme_lm_request +EXPORT_SYMBOL drivers/vme/vme 0x25d67127 vme_slave_request +EXPORT_SYMBOL drivers/vme/vme 0x3386f070 vme_register_bridge +EXPORT_SYMBOL drivers/vme/vme 0x3dc4408a vme_slot_get +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 0x4c15d0df vme_bus_type +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 0x6599a4b1 vme_master_request +EXPORT_SYMBOL drivers/vme/vme 0x6b514d89 vme_irq_request +EXPORT_SYMBOL drivers/vme/vme 0x73bea2ac vme_irq_free +EXPORT_SYMBOL drivers/vme/vme 0x79a33f85 vme_get_size +EXPORT_SYMBOL drivers/vme/vme 0x7cf35220 vme_master_free +EXPORT_SYMBOL drivers/vme/vme 0x874650e6 vme_irq_handler +EXPORT_SYMBOL drivers/vme/vme 0x92fa5abb vme_lm_detach +EXPORT_SYMBOL drivers/vme/vme 0x9434ce36 vme_new_dma_list +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 0xa50208c9 vme_unregister_driver +EXPORT_SYMBOL drivers/vme/vme 0xa7a3d24c vme_unregister_bridge +EXPORT_SYMBOL drivers/vme/vme 0xacce3ba4 vme_irq_generate +EXPORT_SYMBOL drivers/vme/vme 0xb820799e vme_dma_list_exec +EXPORT_SYMBOL drivers/vme/vme 0xbbd18b18 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 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 0xff99e9dd vme_dma_list_add +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x1d22add5 w1_ds2760_recall_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0x5362ba4d w1_ds2760_write +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xcb85bda0 w1_ds2760_read +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2760 0xcc2e1e33 w1_ds2760_store_eeprom +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x48fe4216 w1_ds2780_io_nolock +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0x5c1353dd w1_ds2780_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2780 0xfcfc8e31 w1_ds2780_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0x60cf75f1 w1_ds2781_io +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xdbd33a0f w1_ds2781_eeprom_cmd +EXPORT_SYMBOL drivers/w1/slaves/w1_ds2781 0xeaa1a80d w1_ds2781_io_nolock +EXPORT_SYMBOL drivers/w1/wire 0x7d013ae5 w1_unregister_family +EXPORT_SYMBOL drivers/w1/wire 0x8590447a w1_add_master_device +EXPORT_SYMBOL drivers/w1/wire 0x88621ba0 w1_remove_master_device +EXPORT_SYMBOL drivers/w1/wire 0xabbf181d w1_register_family +EXPORT_SYMBOL fs/btrfs/btrfs 0x013333ed ulist_alloc +EXPORT_SYMBOL fs/btrfs/btrfs 0x2e965c58 ulist_add +EXPORT_SYMBOL fs/btrfs/btrfs 0x42d57ce9 ulist_reinit +EXPORT_SYMBOL fs/btrfs/btrfs 0x58cbfcc2 ulist_free +EXPORT_SYMBOL fs/btrfs/btrfs 0x8ab177c0 ulist_init +EXPORT_SYMBOL fs/btrfs/btrfs 0x8e313eff ulist_next +EXPORT_SYMBOL fs/btrfs/btrfs 0xccdd7b95 ulist_fini +EXPORT_SYMBOL fs/configfs/configfs 0x0f8bc243 config_item_init_type_name +EXPORT_SYMBOL fs/configfs/configfs 0x45baf057 configfs_undepend_item +EXPORT_SYMBOL fs/configfs/configfs 0x4e85fa31 configfs_depend_item +EXPORT_SYMBOL fs/configfs/configfs 0x6f2e3cc2 config_item_init +EXPORT_SYMBOL fs/configfs/configfs 0x7a4fcdd3 config_group_find_item +EXPORT_SYMBOL fs/configfs/configfs 0x8bc7cb75 configfs_register_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xacd1eb32 configfs_unregister_subsystem +EXPORT_SYMBOL fs/configfs/configfs 0xae2ac888 config_item_get +EXPORT_SYMBOL fs/configfs/configfs 0xaebe7693 config_item_put +EXPORT_SYMBOL fs/configfs/configfs 0xc269dcf9 config_group_init +EXPORT_SYMBOL fs/configfs/configfs 0xcbd2534e config_item_set_name +EXPORT_SYMBOL fs/configfs/configfs 0xee826d69 config_group_init_type_name +EXPORT_SYMBOL fs/exofs/libore 0x011500ad ore_calc_stripe_info +EXPORT_SYMBOL fs/exofs/libore 0x0c87010d ore_get_rw_state +EXPORT_SYMBOL fs/exofs/libore 0x0ed806c0 extract_attr_from_ios +EXPORT_SYMBOL fs/exofs/libore 0x28806871 ore_verify_layout +EXPORT_SYMBOL fs/exofs/libore 0x3b40a609 ore_create +EXPORT_SYMBOL fs/exofs/libore 0x491554f7 ore_put_io_state +EXPORT_SYMBOL fs/exofs/libore 0x5e1da02f ore_get_io_state +EXPORT_SYMBOL fs/exofs/libore 0x783153ea ore_check_io +EXPORT_SYMBOL fs/exofs/libore 0x8415e8b1 ore_remove +EXPORT_SYMBOL fs/exofs/libore 0xa3d2a634 g_attr_logical_length +EXPORT_SYMBOL fs/exofs/libore 0xb3d491a8 ore_truncate +EXPORT_SYMBOL fs/exofs/libore 0xb7efd141 ore_read +EXPORT_SYMBOL fs/exofs/libore 0xeb1c40d3 ore_write +EXPORT_SYMBOL fs/fscache/fscache 0x04d59413 fscache_enqueue_operation +EXPORT_SYMBOL fs/fscache/fscache 0x0569f779 fscache_init_cache +EXPORT_SYMBOL fs/fscache/fscache 0x07d9b576 fscache_wait_bit_interruptible +EXPORT_SYMBOL fs/fscache/fscache 0x0839d532 __fscache_read_or_alloc_pages +EXPORT_SYMBOL fs/fscache/fscache 0x2060ffd1 __fscache_wait_on_page_write +EXPORT_SYMBOL fs/fscache/fscache 0x27fbf40c fscache_fsdef_index +EXPORT_SYMBOL fs/fscache/fscache 0x2d17c8de __fscache_relinquish_cookie +EXPORT_SYMBOL fs/fscache/fscache 0x3219c227 __fscache_maybe_release_page +EXPORT_SYMBOL fs/fscache/fscache 0x3fc23318 fscache_wait_bit +EXPORT_SYMBOL fs/fscache/fscache 0x57982d97 __fscache_register_netfs +EXPORT_SYMBOL fs/fscache/fscache 0x5cdcb3c5 __fscache_uncache_all_inode_pages +EXPORT_SYMBOL fs/fscache/fscache 0x60c23955 fscache_object_lookup_negative +EXPORT_SYMBOL fs/fscache/fscache 0x6fbf31c0 __fscache_acquire_cookie +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 0x7690e96e fscache_io_error +EXPORT_SYMBOL fs/fscache/fscache 0x86f8894f fscache_object_states +EXPORT_SYMBOL fs/fscache/fscache 0x90303e44 fscache_put_operation +EXPORT_SYMBOL fs/fscache/fscache 0x91551c8e __fscache_read_or_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0x99bdbc50 fscache_add_cache +EXPORT_SYMBOL fs/fscache/fscache 0xa2ad149d __fscache_alloc_page +EXPORT_SYMBOL fs/fscache/fscache 0xa80579f0 fscache_obtained_object +EXPORT_SYMBOL fs/fscache/fscache 0xac4c2bc7 __fscache_update_cookie +EXPORT_SYMBOL fs/fscache/fscache 0xb62bc4af fscache_check_aux +EXPORT_SYMBOL fs/fscache/fscache 0xbed1e6cc __fscache_check_page_write +EXPORT_SYMBOL fs/fscache/fscache 0xc5fad271 __fscache_write_page +EXPORT_SYMBOL fs/fscache/fscache 0xcceb3c43 fscache_object_work_func +EXPORT_SYMBOL fs/fscache/fscache 0xcdcd1210 fscache_withdraw_cache +EXPORT_SYMBOL fs/fscache/fscache 0xda2ec2db __fscache_attr_changed +EXPORT_SYMBOL fs/fscache/fscache 0xe488d230 fscache_mark_pages_cached +EXPORT_SYMBOL fs/fscache/fscache 0xe95e3208 __fscache_unregister_netfs +EXPORT_SYMBOL fs/fscache/fscache 0xf49dff65 __fscache_uncache_page +EXPORT_SYMBOL fs/nfsd/nfsd 0x0c8d6829 nfs4_acl_nfsv4_to_posix +EXPORT_SYMBOL fs/nfsd/nfsd 0x2095976a nfs4_acl_new +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 0xcbb738be nfs4_acl_posix_to_nfsv4 +EXPORT_SYMBOL fs/ocfs2/cluster/ocfs2_nodemanager 0xbfd7d7a2 o2hb_global_heartbeat_active +EXPORT_SYMBOL fs/quota/quota_tree 0x1f87cf3f qtree_delete_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x68ac39e0 qtree_release_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x87713581 qtree_read_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0x985cbc4c qtree_write_dquot +EXPORT_SYMBOL fs/quota/quota_tree 0xc604d8ec 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 0x1697ab05 lc_seq_printf_stats +EXPORT_SYMBOL lib/lru_cache 0x16e74e1a lc_changed +EXPORT_SYMBOL lib/lru_cache 0x297d20c2 lc_create +EXPORT_SYMBOL lib/lru_cache 0x2d79fda7 lc_del +EXPORT_SYMBOL lib/lru_cache 0x40dc2de4 lc_seq_dump_details +EXPORT_SYMBOL lib/lru_cache 0x6561fa48 lc_try_get +EXPORT_SYMBOL lib/lru_cache 0x70f96335 lc_element_by_index +EXPORT_SYMBOL lib/lru_cache 0x78a45c39 lc_index_of +EXPORT_SYMBOL lib/lru_cache 0x7b525517 lc_put +EXPORT_SYMBOL lib/lru_cache 0x7f8b3ccf lc_destroy +EXPORT_SYMBOL lib/lru_cache 0xa82301d1 lc_get +EXPORT_SYMBOL lib/lru_cache 0xab3ec3fa lc_reset +EXPORT_SYMBOL lib/lru_cache 0xb156fb35 lc_find +EXPORT_SYMBOL lib/lru_cache 0xb8dd6117 lc_set +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 0x7de545d1 unregister_8022_client +EXPORT_SYMBOL net/802/p8022 0xb25ebe6a register_8022_client +EXPORT_SYMBOL net/802/p8023 0x52c94915 make_8023_client +EXPORT_SYMBOL net/802/p8023 0xdfd9057c destroy_8023_client +EXPORT_SYMBOL net/802/psnap 0xaf9ce794 register_snap_client +EXPORT_SYMBOL net/802/psnap 0xccefe1d7 unregister_snap_client +EXPORT_SYMBOL net/9p/9pnet 0x010e2e55 p9_client_fsync +EXPORT_SYMBOL net/9p/9pnet 0x0adc71f5 p9_client_statfs +EXPORT_SYMBOL net/9p/9pnet 0x0ae9678a p9dirent_read +EXPORT_SYMBOL net/9p/9pnet 0x13f9bfe5 p9_client_cb +EXPORT_SYMBOL net/9p/9pnet 0x17e79ed8 p9_client_fcreate +EXPORT_SYMBOL net/9p/9pnet 0x18eae54c p9_client_unlinkat +EXPORT_SYMBOL net/9p/9pnet 0x25599cf1 v9fs_register_trans +EXPORT_SYMBOL net/9p/9pnet 0x2cbc83ed p9_client_begin_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x2d903891 p9_client_create +EXPORT_SYMBOL net/9p/9pnet 0x2e80ebf2 p9_is_proto_dotl +EXPORT_SYMBOL net/9p/9pnet 0x35d1e27e p9_idpool_get +EXPORT_SYMBOL net/9p/9pnet 0x372d5085 v9fs_get_default_trans +EXPORT_SYMBOL net/9p/9pnet 0x3aeaa2d6 p9_parse_header +EXPORT_SYMBOL net/9p/9pnet 0x3cae48ef p9_client_create_dotl +EXPORT_SYMBOL net/9p/9pnet 0x3d73a797 p9_errstr2errno +EXPORT_SYMBOL net/9p/9pnet 0x3df80205 p9_client_write +EXPORT_SYMBOL net/9p/9pnet 0x5dfbf753 p9_client_mkdir_dotl +EXPORT_SYMBOL net/9p/9pnet 0x5eedd264 p9_client_disconnect +EXPORT_SYMBOL net/9p/9pnet 0x5f337d2e p9_is_proto_dotu +EXPORT_SYMBOL net/9p/9pnet 0x62093c24 p9_client_getlock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6738fd11 p9_client_getattr_dotl +EXPORT_SYMBOL net/9p/9pnet 0x6e5f97b7 p9_client_walk +EXPORT_SYMBOL net/9p/9pnet 0x71a41df1 p9_client_mknod_dotl +EXPORT_SYMBOL net/9p/9pnet 0x7818336b p9_tag_lookup +EXPORT_SYMBOL net/9p/9pnet 0x7bcb560d v9fs_get_trans_by_name +EXPORT_SYMBOL net/9p/9pnet 0x7ce30224 p9_payload_gup +EXPORT_SYMBOL net/9p/9pnet 0x80edb3e2 p9_client_read +EXPORT_SYMBOL net/9p/9pnet 0x8347a7be p9_client_lock_dotl +EXPORT_SYMBOL net/9p/9pnet 0x84f0c322 p9_client_remove +EXPORT_SYMBOL net/9p/9pnet 0x8d1edaf1 p9_client_setattr +EXPORT_SYMBOL net/9p/9pnet 0x906ef2c8 p9_client_renameat +EXPORT_SYMBOL net/9p/9pnet 0x977a0030 p9_nr_pages +EXPORT_SYMBOL net/9p/9pnet 0x9c964743 p9stat_free +EXPORT_SYMBOL net/9p/9pnet 0xa3144313 p9_client_link +EXPORT_SYMBOL net/9p/9pnet 0xa6b02e36 p9_client_wstat +EXPORT_SYMBOL net/9p/9pnet 0xad641fed p9_client_stat +EXPORT_SYMBOL net/9p/9pnet 0xb8f400a6 p9_client_readdir +EXPORT_SYMBOL net/9p/9pnet 0xc33fd6b8 p9_client_clunk +EXPORT_SYMBOL net/9p/9pnet 0xc5db54a9 p9_idpool_destroy +EXPORT_SYMBOL net/9p/9pnet 0xc70d71a6 p9_client_attach +EXPORT_SYMBOL net/9p/9pnet 0xd20a597e p9_release_pages +EXPORT_SYMBOL net/9p/9pnet 0xd859c065 p9_client_readlink +EXPORT_SYMBOL net/9p/9pnet 0xe58a3360 p9_error_init +EXPORT_SYMBOL net/9p/9pnet 0xe7a2a241 p9stat_read +EXPORT_SYMBOL net/9p/9pnet 0xe820efc6 p9_client_symlink +EXPORT_SYMBOL net/9p/9pnet 0xea65e1bd p9_client_open +EXPORT_SYMBOL net/9p/9pnet 0xefe470ed p9_client_rename +EXPORT_SYMBOL net/9p/9pnet 0xf119b912 v9fs_unregister_trans +EXPORT_SYMBOL net/9p/9pnet 0xf4a111d8 p9_idpool_create +EXPORT_SYMBOL net/9p/9pnet 0xf84f2022 p9_idpool_put +EXPORT_SYMBOL net/9p/9pnet 0xfd40c79d p9_idpool_check +EXPORT_SYMBOL net/9p/9pnet 0xffe578ee p9_client_destroy +EXPORT_SYMBOL net/appletalk/appletalk 0x6dae2e90 atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0x7e46fd07 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0x923af5b5 alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xd2a1bfde atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x12130ce0 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x1973ee3e vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash +EXPORT_SYMBOL net/atm/atm 0x3b8c68ac atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0x656203a3 atm_charge +EXPORT_SYMBOL net/atm/atm 0x79bdba9a atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0x8ed4e8c1 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats +EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats +EXPORT_SYMBOL net/atm/atm 0xafe18ec8 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0xb1e29cfc atm_proc_root +EXPORT_SYMBOL net/atm/atm 0xca87b453 vcc_sklist_lock +EXPORT_SYMBOL net/atm/atm 0xcbf0b2c3 deregister_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xd2515c7f vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0xd81a1bee atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xdba142e6 atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xe1f21b8e register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe5930631 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 0x0c4c624b ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy +EXPORT_SYMBOL net/ax25/ax25 0x390f4c62 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x4256f259 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax +EXPORT_SYMBOL net/ax25/ax25 0x478eac37 ax25_rebuild_header +EXPORT_SYMBOL net/ax25/ax25 0x49ab5314 ax25_findbyuid +EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc +EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release +EXPORT_SYMBOL net/ax25/ax25 0x9cba74c6 ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp +EXPORT_SYMBOL net/ax25/ax25 0xd23953af ax25_listen_register +EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address +EXPORT_SYMBOL net/ax25/ax25 0xd6b5fb28 ax25_hard_header +EXPORT_SYMBOL net/ax25/ax25 0xeafda3c3 ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0xf6ec51b1 ax25_header_ops +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1c5168f7 hci_register_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f006b5a hci_conn_check_secure +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f2853f0 hci_register_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1f41b18f hci_conn_check_link_mode +EXPORT_SYMBOL net/bluetooth/bluetooth 0x1fb799ae hci_conn_hold_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2d3468f0 hci_get_route +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2e193f39 hci_unregister_cb +EXPORT_SYMBOL net/bluetooth/bluetooth 0x2f140f1e hci_send_acl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x3a77e8f7 bt_sock_register +EXPORT_SYMBOL net/bluetooth/bluetooth 0x46fd03bd bt_sock_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x4d21df53 hci_connect +EXPORT_SYMBOL net/bluetooth/bluetooth 0x50cc725f hci_find_ltk_by_addr +EXPORT_SYMBOL net/bluetooth/bluetooth 0x531db46c bt_sock_ioctl +EXPORT_SYMBOL net/bluetooth/bluetooth 0x5776d4b6 hci_unregister_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6b34ebba hci_conn_put_device +EXPORT_SYMBOL net/bluetooth/bluetooth 0x6f9f5e49 hci_recv_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7333a13d bt_accept_unlink +EXPORT_SYMBOL net/bluetooth/bluetooth 0x77a5d37b bt_accept_enqueue +EXPORT_SYMBOL net/bluetooth/bluetooth 0x79d3d2f9 hci_le_conn_update +EXPORT_SYMBOL net/bluetooth/bluetooth 0x7c640527 bt_info +EXPORT_SYMBOL net/bluetooth/bluetooth 0x87ee7216 hci_free_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8c8c4440 bt_sock_wait_state +EXPORT_SYMBOL net/bluetooth/bluetooth 0x8e4a8f9c hci_conn_switch_role +EXPORT_SYMBOL net/bluetooth/bluetooth 0x91c9a325 bt_to_errno +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa4425368 bt_sock_stream_recvmsg +EXPORT_SYMBOL net/bluetooth/bluetooth 0xa9280b92 hci_alloc_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xaaf55078 hci_suspend_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xabcf19d6 hci_send_sco +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb61a0c3b bt_err +EXPORT_SYMBOL net/bluetooth/bluetooth 0xb9d2ad02 bt_sock_link +EXPORT_SYMBOL net/bluetooth/bluetooth 0xbc340467 bt_accept_dequeue +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc14c1780 hci_recv_stream_fragment +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc2066af0 batostr +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc21dd2ae bt_sock_poll +EXPORT_SYMBOL net/bluetooth/bluetooth 0xc4a7d866 hci_conn_change_link_key +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc1fb551 baswap +EXPORT_SYMBOL net/bluetooth/bluetooth 0xcc2d3fd4 hci_resume_dev +EXPORT_SYMBOL net/bluetooth/bluetooth 0xce9a03b0 bt_sock_reclassify_lock +EXPORT_SYMBOL net/bluetooth/bluetooth 0xd1ce408a hci_recv_frame +EXPORT_SYMBOL net/bluetooth/bluetooth 0xdeb137b9 hci_find_ltk +EXPORT_SYMBOL net/bluetooth/bluetooth 0xe6b3c5b8 hci_le_start_enc +EXPORT_SYMBOL net/bluetooth/bluetooth 0xef2f2ff4 hci_conn_security +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf19294db bt_sock_unregister +EXPORT_SYMBOL net/bluetooth/bluetooth 0xf6ecea59 bt_sock_recvmsg +EXPORT_SYMBOL net/bridge/bridge 0x60c8fc67 br_should_route_hook +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x18b91594 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x88b8a834 ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xb377546d ebt_do_table +EXPORT_SYMBOL net/caif/caif 0x12d0b392 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 0x33e35159 caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer +EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative +EXPORT_SYMBOL net/caif/caif 0x6a44fc70 cfpkt_extr_head +EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state +EXPORT_SYMBOL net/caif/caif 0x966d7de2 cfpkt_add_head +EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client +EXPORT_SYMBOL net/caif/caif 0xee7c4024 get_cfcnfg +EXPORT_SYMBOL net/caif/caif 0xf7995ad4 caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0xf95fcf5e caif_disconnect_client +EXPORT_SYMBOL net/can/can 0x20eec53c can_rx_register +EXPORT_SYMBOL net/can/can 0x3c60dcd7 can_proto_unregister +EXPORT_SYMBOL net/can/can 0x422f1c1e can_ioctl +EXPORT_SYMBOL net/can/can 0x424c60dd can_proto_register +EXPORT_SYMBOL net/can/can 0x72cc2344 can_send +EXPORT_SYMBOL net/can/can 0x8b2482ac can_rx_unregister +EXPORT_SYMBOL net/ceph/libceph 0x09290ab3 ceph_debugfs_init +EXPORT_SYMBOL net/ceph/libceph 0x098b6543 ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x0d2c2eb3 ceph_osdc_init +EXPORT_SYMBOL net/ceph/libceph 0x0d61c270 ceph_pagelist_set_cursor +EXPORT_SYMBOL net/ceph/libceph 0x0dc0f98e ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x197effcb ceph_osdc_release_request +EXPORT_SYMBOL net/ceph/libceph 0x1b9c425b ceph_monc_create_snapid +EXPORT_SYMBOL net/ceph/libceph 0x25e5273e ceph_get_direct_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x3734ed3d ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x3abec91f ceph_pr_addr +EXPORT_SYMBOL net/ceph/libceph 0x3e1f462a ceph_destroy_options +EXPORT_SYMBOL net/ceph/libceph 0x3f65c24c ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0x4326f683 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x43e458f6 ceph_file_part +EXPORT_SYMBOL net/ceph/libceph 0x495c0c62 ceph_osdc_readpages +EXPORT_SYMBOL net/ceph/libceph 0x49940a81 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x4a283545 ceph_pagelist_release +EXPORT_SYMBOL net/ceph/libceph 0x4e2d4c54 ceph_copy_page_vector_to_user +EXPORT_SYMBOL net/ceph/libceph 0x4ee60402 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x5379cea3 ceph_caps_for_mode +EXPORT_SYMBOL net/ceph/libceph 0x54268de3 ceph_osdc_put_event +EXPORT_SYMBOL net/ceph/libceph 0x5567a1fc ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x570ceb67 ceph_buffer_new +EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash +EXPORT_SYMBOL net/ceph/libceph 0x599edeaa ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x5ad951e8 ceph_monc_stop +EXPORT_SYMBOL net/ceph/libceph 0x5e5d7c56 ceph_monc_got_mdsmap +EXPORT_SYMBOL net/ceph/libceph 0x5ee4e24a ceph_osdc_create_event +EXPORT_SYMBOL net/ceph/libceph 0x60acad8f ceph_osdc_wait_request +EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name +EXPORT_SYMBOL net/ceph/libceph 0x6e59caac ceph_parse_options +EXPORT_SYMBOL net/ceph/libceph 0x6eec4fc6 ceph_osdc_unregister_linger_request +EXPORT_SYMBOL net/ceph/libceph 0x7168baf8 ceph_pagelist_free_reserve +EXPORT_SYMBOL net/ceph/libceph 0x719d2d5e ceph_con_init +EXPORT_SYMBOL net/ceph/libceph 0x72614c3f ceph_copy_user_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x74d403ad ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x77692acb ceph_msg_last_put +EXPORT_SYMBOL net/ceph/libceph 0x776a0b84 ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x788410e0 ceph_pg_poolid_by_name +EXPORT_SYMBOL net/ceph/libceph 0x7a213e2d ceph_osdc_cancel_event +EXPORT_SYMBOL net/ceph/libceph 0x80d6308a ceph_osdc_new_request +EXPORT_SYMBOL net/ceph/libceph 0x81adc990 ceph_osdc_stop +EXPORT_SYMBOL net/ceph/libceph 0x81cbb997 ceph_calc_file_object_mapping +EXPORT_SYMBOL net/ceph/libceph 0x81eae1b6 ceph_pagelist_append +EXPORT_SYMBOL net/ceph/libceph 0x9124a004 ceph_calc_raw_layout +EXPORT_SYMBOL net/ceph/libceph 0x9312eb69 ceph_osdc_wait_event +EXPORT_SYMBOL net/ceph/libceph 0x94f988ba ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0x957b9bee __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x99de4738 ceph_messenger_init +EXPORT_SYMBOL net/ceph/libceph 0x9f534f4d ceph_buffer_release +EXPORT_SYMBOL net/ceph/libceph 0xa5d82ec4 ceph_client_id +EXPORT_SYMBOL net/ceph/libceph 0xad4942ba ceph_monc_init +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 0xb96e2a9a ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0xbda2ccff ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xbdc30347 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xbeb334ac ceph_calc_object_layout +EXPORT_SYMBOL net/ceph/libceph 0xbeb44024 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0xc21629b9 ceph_osdc_writepages +EXPORT_SYMBOL net/ceph/libceph 0xc2a6855d ceph_osdc_build_request +EXPORT_SYMBOL net/ceph/libceph 0xc4a80955 ceph_debugfs_cleanup +EXPORT_SYMBOL net/ceph/libceph 0xc74bd1d6 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0xc9f82b38 ceph_msgr_init +EXPORT_SYMBOL net/ceph/libceph 0xcb50a624 ceph_parse_ips +EXPORT_SYMBOL net/ceph/libceph 0xd07eb804 ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0xd2c107bb ceph_flags_to_mode +EXPORT_SYMBOL net/ceph/libceph 0xd3d7eaf6 ceph_alloc_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd3e5c35f ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe29dc5a0 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0xe5d106dc ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xed229339 ceph_pagelist_reserve +EXPORT_SYMBOL net/ceph/libceph 0xf2bbb433 ceph_osdc_set_request_linger +EXPORT_SYMBOL net/ceph/libceph 0xf5774cba ceph_pagelist_truncate +EXPORT_SYMBOL net/ceph/libceph 0xf913adca ceph_copy_to_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xfb995e3e ceph_calc_pg_primary +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xe25c2f72 dccp_syn_ack_timeout +EXPORT_SYMBOL net/ieee802154/ieee802154 0x1ab6af60 ieee802154_nl_assoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x2cbf231c wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0x3754ab31 ieee802154_nl_disassoc_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0x454cceda wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x51380bbb wpan_phy_unregister +EXPORT_SYMBOL net/ieee802154/ieee802154 0x58067731 wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8cb4a6c7 ieee802154_nl_assoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0x925c9f25 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9ada0df8 wpan_phy_alloc +EXPORT_SYMBOL net/ieee802154/ieee802154 0xab380d96 ieee802154_nl_start_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb5939185 ieee802154_nl_beacon_indic +EXPORT_SYMBOL net/ieee802154/ieee802154 0xbe2f4eb3 ieee802154_nl_disassoc_confirm +EXPORT_SYMBOL net/ieee802154/ieee802154 0xf5f9523b ieee802154_nl_scan_confirm +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x2f8ed4f8 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa273fe9e arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xfb99b11d arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd254c47a ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd3739da3 ipt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xd951dec5 ipt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x11e120f3 nf_nat_follow_master +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x510521d7 nf_nat_used_tuple +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0x81186970 nf_nat_setup_info +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xd8d46b04 nf_nat_protocol_register +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xdeaeac0a __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xee0d117b nf_nat_protocol_unregister +EXPORT_SYMBOL net/ipv4/netfilter/nf_nat 0xfe768981 nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/ipv4/tunnel4 0x08b6ea09 xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv4/tunnel4 0xd85e67b8 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x16be870d ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x6d959dce ip6t_unregister_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xc5172d12 ip6t_register_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xca8b4788 ipv6_find_hdr +EXPORT_SYMBOL net/ipv6/tunnel6 0x0e7e84aa xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xe084f5a9 xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x06fbd260 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xa36b4267 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x0ffc1435 ircomm_disconnect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x2a149e56 ircomm_connect_response +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x499a8faa ircomm_data_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0x5c200cc8 ircomm_flow_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xa090721b ircomm_control_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xad73e371 ircomm_connect_request +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xc859a158 ircomm_open +EXPORT_SYMBOL net/irda/ircomm/ircomm 0xfff96d71 ircomm_close +EXPORT_SYMBOL net/irda/irda 0x0064e0ea hashbin_get_first +EXPORT_SYMBOL net/irda/irda 0x01540714 irlmp_connect_request +EXPORT_SYMBOL net/irda/irda 0x01e51371 irlmp_connect_response +EXPORT_SYMBOL net/irda/irda 0x06a3ee58 irias_new_integer_value +EXPORT_SYMBOL net/irda/irda 0x07d3647c irlmp_register_service +EXPORT_SYMBOL net/irda/irda 0x116239a2 irlap_open +EXPORT_SYMBOL net/irda/irda 0x117966c9 iriap_getvaluebyclass_request +EXPORT_SYMBOL net/irda/irda 0x16da0bde irttp_open_tsap +EXPORT_SYMBOL net/irda/irda 0x19ef1665 irttp_dup +EXPORT_SYMBOL net/irda/irda 0x1e6cade0 irias_add_integer_attrib +EXPORT_SYMBOL net/irda/irda 0x2036ad06 irda_param_insert +EXPORT_SYMBOL net/irda/irda 0x2116205e irttp_data_request +EXPORT_SYMBOL net/irda/irda 0x269c5894 irttp_udata_request +EXPORT_SYMBOL net/irda/irda 0x297e3886 iriap_close +EXPORT_SYMBOL net/irda/irda 0x38a20e5b irda_debug +EXPORT_SYMBOL net/irda/irda 0x3af5e8c7 alloc_irdadev +EXPORT_SYMBOL net/irda/irda 0x3e56064f hashbin_new +EXPORT_SYMBOL net/irda/irda 0x448b8aaa irda_qos_bits_to_value +EXPORT_SYMBOL net/irda/irda 0x46c1c4a2 irlmp_unregister_service +EXPORT_SYMBOL net/irda/irda 0x4b346a66 irlap_close +EXPORT_SYMBOL net/irda/irda 0x4c14b282 irttp_connect_request +EXPORT_SYMBOL net/irda/irda 0x5f5011aa irda_notify_init +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 0x721dcb46 async_unwrap_char +EXPORT_SYMBOL net/irda/irda 0x76227ac4 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 0x844a48bd irlmp_open_lsap +EXPORT_SYMBOL net/irda/irda 0x85d88217 irias_delete_object +EXPORT_SYMBOL net/irda/irda 0x8922ce1c irda_device_set_media_busy +EXPORT_SYMBOL net/irda/irda 0x903e3c67 irttp_close_tsap +EXPORT_SYMBOL net/irda/irda 0x91815586 irda_param_pack +EXPORT_SYMBOL net/irda/irda 0x993ad14b irda_param_extract_all +EXPORT_SYMBOL net/irda/irda 0x9d546ed8 proc_irda +EXPORT_SYMBOL net/irda/irda 0xa1d41e58 hashbin_delete +EXPORT_SYMBOL net/irda/irda 0xaa557515 irias_new_object +EXPORT_SYMBOL net/irda/irda 0xb8e138f4 irlmp_close_lsap +EXPORT_SYMBOL net/irda/irda 0xb9394173 irias_delete_value +EXPORT_SYMBOL net/irda/irda 0xba8eb358 async_wrap_skb +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 0xca6f6cb3 irttp_connect_response +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 0xdf9856fb irlmp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe0aad23d irttp_disconnect_request +EXPORT_SYMBOL net/irda/irda 0xe3446244 iriap_open +EXPORT_SYMBOL net/irda/irda 0xe3463529 hashbin_lock_find +EXPORT_SYMBOL net/irda/irda 0xe3bde43e irias_insert_object +EXPORT_SYMBOL net/irda/irda 0xedd521c2 irlmp_get_discoveries +EXPORT_SYMBOL net/irda/irda 0xf0a694a1 irias_find_object +EXPORT_SYMBOL net/irda/irda 0xf5876b95 hashbin_remove_this +EXPORT_SYMBOL net/irda/irda 0xf6fcd8ab irlmp_data_request +EXPORT_SYMBOL net/l2tp/l2tp_core 0x898671ac l2tp_recv_common +EXPORT_SYMBOL net/lapb/lapb 0x3b372fdb lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x3bd3961b lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x63ab76c9 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x7cd8118b lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0xaf7151fa lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0xb2055ea3 lapb_connect_request +EXPORT_SYMBOL net/lapb/lapb 0xcf228797 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0xdd349ffa lapb_register +EXPORT_SYMBOL net/llc/llc 0x23eaa03c llc_sap_find +EXPORT_SYMBOL net/llc/llc 0x2efb1983 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0x36f60956 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 0x5a3906b9 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xa3137d60 llc_set_station_handler +EXPORT_SYMBOL net/llc/llc 0xc35e28f7 llc_sap_list_lock +EXPORT_SYMBOL net/llc/llc 0xd3dfef93 llc_sap_close +EXPORT_SYMBOL net/llc/llc 0xda86ec02 llc_mac_hdr_init +EXPORT_SYMBOL net/mac80211/mac80211 0x07a47326 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x08d32eca ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x0b29599b ieee80211_disable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0x0caff425 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x11331c5b ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0x1804262c __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x1898e4b0 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x22905b34 ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x2470e820 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x2ff38cc3 ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x33998b26 ieee80211_connection_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x34599f1b rate_control_send_low +EXPORT_SYMBOL net/mac80211/mac80211 0x3f4f859c ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x41ea4008 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x4547f6a5 ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0x454a5613 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x4749c0fc ieee80211_alloc_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x4819ad9c ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x4c598182 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0x4fb39646 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x501f518e ieee80211_rx +EXPORT_SYMBOL net/mac80211/mac80211 0x5c28cca5 ieee80211_get_tkip_p1k_iv +EXPORT_SYMBOL net/mac80211/mac80211 0x5e37d147 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x60bb9ad8 ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x6327523e ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x63a00ca0 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x6403e3f8 ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x6503ef71 ieee80211_sta_eosp_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x75379bef ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x8350dfcc ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x83703d09 ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x84d49f21 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x853662ee __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x86ef2911 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x8984a2a3 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0x8a4c6835 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0x90e7f8c3 ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x92d89e5a ieee80211_napi_schedule +EXPORT_SYMBOL net/mac80211/mac80211 0x96ab5a19 ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x97c6b163 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0x9b7e592a wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x9d1c8749 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0xa0d79255 ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xa4241970 ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0xaa157485 ieee80211_get_tkip_rx_p1k +EXPORT_SYMBOL net/mac80211/mac80211 0xac1ce73e ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xae9b82d0 ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xbb44ded7 ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xbdeb112a ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b66794 ieee80211_get_operstate +EXPORT_SYMBOL net/mac80211/mac80211 0xc106eb67 ieee80211_rate_control_register +EXPORT_SYMBOL net/mac80211/mac80211 0xc78de587 ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xc7e9782e ieee80211_get_key_tx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xce4eb65c ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcee18b16 ieee80211_enable_dyn_ps +EXPORT_SYMBOL net/mac80211/mac80211 0xd29396fb ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xd2b5a7ff ieee80211_wake_queues +EXPORT_SYMBOL net/mac80211/mac80211 0xd2cb5e8a ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd4251196 ieee80211_free_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd89b895e ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xdd981a96 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xddb47d52 ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0xdf7f1f70 ieee80211_napi_complete +EXPORT_SYMBOL net/mac80211/mac80211 0xe09462b9 ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0xe2611799 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xe7a0eb02 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0xeacd7fb8 ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xf4ba12bd ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0xf7999722 ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0xfae86dc4 ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x0de1bbdd unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1078578f ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x24e6c4b1 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x383f9626 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x3f176d7d ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x52ef73f8 ip_vs_scheduler_err +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x687254f0 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6b64acef ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x81f5ee09 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9e3ff72e ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xa1ee7d62 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd6c59494 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdb3a6fb9 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf62362fb register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x3cee4a79 __nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x6f92a41f __nf_ct_ext_destroy +EXPORT_SYMBOL net/netfilter/nf_conntrack 0x82810a88 nf_conntrack_untracked +EXPORT_SYMBOL net/netfilter/nf_conntrack_proto_gre 0xfa230589 nf_ct_gre_keymap_flush +EXPORT_SYMBOL net/netfilter/x_tables 0x003213c7 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x08c473b7 xt_alloc_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0x1db2250b xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x253e8b44 xt_compat_init_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0x2e78c71b xt_register_match +EXPORT_SYMBOL net/netfilter/x_tables 0x3165cbce xt_unregister_matches +EXPORT_SYMBOL net/netfilter/x_tables 0x57b56f49 xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0x5c7fb596 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x64121e89 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0x9399c77d xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xb28f5ef1 xt_free_table_info +EXPORT_SYMBOL net/netfilter/x_tables 0xcfa99e75 xt_register_matches +EXPORT_SYMBOL net/netfilter/x_tables 0xf1e5c9a6 xt_find_target +EXPORT_SYMBOL net/nfc/hci/hci 0x01264ce6 nfc_hci_unregister_device +EXPORT_SYMBOL net/nfc/hci/hci 0x173cda65 nfc_hci_send_event +EXPORT_SYMBOL net/nfc/hci/hci 0x29ad6a46 nfc_shdlc_get_hci_dev +EXPORT_SYMBOL net/nfc/hci/hci 0x4e40cd73 nfc_hci_disconnect_all_gates +EXPORT_SYMBOL net/nfc/hci/hci 0x58bb8f81 nfc_hci_disconnect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x5b5b0455 nfc_shdlc_set_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x6dedbcea nfc_hci_allocate_device +EXPORT_SYMBOL net/nfc/hci/hci 0x788e5290 nfc_hci_set_param +EXPORT_SYMBOL net/nfc/hci/hci 0x87ec8601 nfc_hci_get_param +EXPORT_SYMBOL net/nfc/hci/hci 0x88cb199b nfc_shdlc_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0x89d6e315 nfc_hci_connect_gate +EXPORT_SYMBOL net/nfc/hci/hci 0x8b17f2e2 nfc_hci_send_response +EXPORT_SYMBOL net/nfc/hci/hci 0x90890493 nfc_hci_free_device +EXPORT_SYMBOL net/nfc/hci/hci 0x93e53f2f nfc_shdlc_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0x99acc353 nfc_hci_get_clientdata +EXPORT_SYMBOL net/nfc/hci/hci 0xac178cca nfc_shdlc_allocate +EXPORT_SYMBOL net/nfc/hci/hci 0xd687a583 nfc_hci_recv_frame +EXPORT_SYMBOL net/nfc/hci/hci 0xddd5428d nfc_hci_register_device +EXPORT_SYMBOL net/nfc/hci/hci 0xe9268024 nfc_hci_send_cmd +EXPORT_SYMBOL net/nfc/hci/hci 0xeb0cf79f nfc_shdlc_free +EXPORT_SYMBOL net/nfc/hci/hci 0xfc3217ed nfc_hci_set_clientdata +EXPORT_SYMBOL net/nfc/nci/nci 0x17c5ecbb nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x44dc7ab0 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x5836265d nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x6796e0f1 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x982c101e nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno +EXPORT_SYMBOL net/nfc/nfc 0x1f9a1296 nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x38953c67 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0x59021b6d nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x9343dc4d nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0x9f183e67 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xa1de2044 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xa9f92d91 nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0xb281b65b nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xbf12063f nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xcfa5e854 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xd0d1d714 nfc_dep_link_is_up +EXPORT_SYMBOL net/phonet/phonet 0x06767b98 phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0x1157ee1a pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0x26b08b3d pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0x2d39c99e phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0x5143bc74 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x72b3482f pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xb93de5ce phonet_proto_unregister +EXPORT_SYMBOL net/phonet/phonet 0xe9f837c8 pn_skb_send +EXPORT_SYMBOL net/rds/rds 0x7505d413 rds_str_array +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x079eb0a9 rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x0be26ccd rxrpc_kernel_reject_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x17c25bfb rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x3a4d4441 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x84573aef rxrpc_kernel_free_skb +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x896312e3 rxrpc_kernel_data_delivered +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x981a55e5 rxrpc_kernel_intercept_rx_messages +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9d4073dd rxrpc_kernel_accept_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0x9fef419a rxrpc_kernel_is_data_last +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xa878c932 rxrpc_kernel_get_abort_code +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xc1004a88 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd5624256 rxrpc_kernel_get_error_number +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xd8e79bbc rxrpc_kernel_end_call +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xec337cbe key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/af-rxrpc 0xfc71a661 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0x4ab258f8 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/sunrpc 0x78316a3a svc_pool_stats_open +EXPORT_SYMBOL net/wanrouter/wanrouter 0x0ebe03d1 unregister_wan_device +EXPORT_SYMBOL net/wanrouter/wanrouter 0x1e9a7ba4 register_wan_device +EXPORT_SYMBOL net/wimax/wimax 0x8c76a78b wimax_rfkill +EXPORT_SYMBOL net/wimax/wimax 0xf53ddbba wimax_reset +EXPORT_SYMBOL net/wireless/cfg80211 0x04956dfd cfg80211_send_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x066c7a3d ieee80211_get_response_rate +EXPORT_SYMBOL net/wireless/cfg80211 0x09c64fbd ieee80211_frequency_to_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x103f1642 cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0x1322b3c9 wiphy_new +EXPORT_SYMBOL net/wireless/cfg80211 0x171ff309 wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header +EXPORT_SYMBOL net/wireless/cfg80211 0x22a0d79e ieee80211_bss_get_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x278c6423 __cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0x2e7a03e2 cfg80211_connect_result +EXPORT_SYMBOL net/wireless/cfg80211 0x31457e7e cfg80211_send_unprot_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x319da41f ieee80211_get_hdrlen_from_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x37941f04 cfg80211_send_rx_auth +EXPORT_SYMBOL net/wireless/cfg80211 0x3b33560f cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0x409b1614 cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x434a69e5 cfg80211_send_rx_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0x43f10467 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x46653cb2 cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0x4ad56707 cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0x51875fd3 cfg80211_inform_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x5a918374 cfg80211_calculate_bitrate +EXPORT_SYMBOL net/wireless/cfg80211 0x603a5d52 cfg80211_testmode_reply +EXPORT_SYMBOL net/wireless/cfg80211 0x639544ef regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x6d74a810 cfg80211_rx_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x71437734 cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0x71953fdd wiphy_register +EXPORT_SYMBOL net/wireless/cfg80211 0x7513e94e ieee80211_channel_to_frequency +EXPORT_SYMBOL net/wireless/cfg80211 0x790893cc cfg80211_disconnected +EXPORT_SYMBOL net/wireless/cfg80211 0x7cf8a25c ieee80211_data_to_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0x7fe1a403 cfg80211_find_ie +EXPORT_SYMBOL net/wireless/cfg80211 0x84612ce1 cfg80211_testmode_event +EXPORT_SYMBOL net/wireless/cfg80211 0x84bcbe32 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x87227d6b cfg80211_scan_done +EXPORT_SYMBOL net/wireless/cfg80211 0x89b70078 cfg80211_inform_bss_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x8a2c8e23 cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x8b75a6d6 cfg80211_get_mesh +EXPORT_SYMBOL net/wireless/cfg80211 0x8b8ffe4c wiphy_rfkill_set_hw_state +EXPORT_SYMBOL net/wireless/cfg80211 0x92db30ed ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x94ae1c02 __cfg80211_send_disassoc +EXPORT_SYMBOL net/wireless/cfg80211 0x96051709 cfg80211_report_obss_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x97af99ec cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x982e6b6d ieee80211_radiotap_iterator_init +EXPORT_SYMBOL net/wireless/cfg80211 0x99be94f5 cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x9b46a82a wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x9dfde61f cfg80211_testmode_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa197b1ff ieee80211_get_mesh_hdrlen +EXPORT_SYMBOL net/wireless/cfg80211 0xa397febe cfg80211_send_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xa8308519 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xaa5fb372 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xb0b8cc60 cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb393bb79 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0xb44775bb cfg80211_roamed_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xbcc7c2e6 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xc1af2bb9 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc39ba8b8 ieee80211_data_from_8023 +EXPORT_SYMBOL net/wireless/cfg80211 0xc63f1b81 ieee80211_radiotap_iterator_next +EXPORT_SYMBOL net/wireless/cfg80211 0xc6fe122e cfg80211_pmksa_candidate_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc784bfa8 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xc78c577c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc8f091b3 cfg80211_send_auth_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0xca0b5f50 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xcc6a60fc wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xd17b3ead cfg80211_del_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xd20855b5 __ieee80211_get_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xd91cdeda cfg80211_can_beacon_sec_chan +EXPORT_SYMBOL net/wireless/cfg80211 0xdd7edb9a freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0xef848989 cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xf8fb10b3 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0xf9dcd654 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfc09db9c wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0xfd5e645d cfg80211_ref_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xfe035b68 cfg80211_send_unprot_deauth +EXPORT_SYMBOL net/wireless/cfg80211 0xfed0e873 cfg80211_testmode_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xfed4d591 cfg80211_find_vendor_ie +EXPORT_SYMBOL net/wireless/lib80211 0x2d0f99e5 print_ssid +EXPORT_SYMBOL net/wireless/lib80211 0x3304382d lib80211_register_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x5f8e266e lib80211_unregister_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x7442f319 lib80211_get_crypto_ops +EXPORT_SYMBOL net/wireless/lib80211 0x8a01c159 lib80211_crypt_info_free +EXPORT_SYMBOL net/wireless/lib80211 0x9be650c4 lib80211_crypt_delayed_deinit +EXPORT_SYMBOL net/wireless/lib80211 0xddb17585 lib80211_crypt_info_init +EXPORT_SYMBOL sound/ac97_bus 0x49d48089 ac97_bus_type +EXPORT_SYMBOL sound/core/oss/snd-mixer-oss 0x2a96a309 snd_mixer_oss_ioctl_card +EXPORT_SYMBOL sound/core/seq/snd-seq 0x06d0022b 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 0x3be7f101 snd_seq_event_port_attach +EXPORT_SYMBOL sound/core/seq/snd-seq 0x3fb4d161 snd_seq_kernel_client_dispatch +EXPORT_SYMBOL sound/core/seq/snd-seq 0x6bb71038 snd_seq_delete_kernel_client +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7ac2f329 snd_seq_expand_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0x7b8699eb snd_seq_event_port_detach +EXPORT_SYMBOL sound/core/seq/snd-seq 0xb8e448a0 snd_seq_set_queue_tempo +EXPORT_SYMBOL sound/core/seq/snd-seq 0xc93dc444 snd_seq_kernel_client_write_poll +EXPORT_SYMBOL sound/core/seq/snd-seq 0xcac0a3be snd_seq_kernel_client_enqueue +EXPORT_SYMBOL sound/core/seq/snd-seq 0xe934da1d snd_seq_dump_var_event +EXPORT_SYMBOL sound/core/seq/snd-seq 0xf97dabca snd_seq_kernel_client_enqueue_blocking +EXPORT_SYMBOL sound/core/seq/snd-seq-device 0x24f771ff 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 0x496dce92 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-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 0x3fdf9888 snd_virmidi_new +EXPORT_SYMBOL sound/core/snd 0x07c85843 snd_ctl_unregister_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x0d005cd3 snd_ctl_replace +EXPORT_SYMBOL sound/core/snd 0x1019d5ba snd_register_oss_device +EXPORT_SYMBOL sound/core/snd 0x11180c13 snd_jack_new +EXPORT_SYMBOL sound/core/snd 0x11a87133 snd_ctl_register_ioctl_compat +EXPORT_SYMBOL sound/core/snd 0x174650b6 snd_ctl_boolean_stereo_info +EXPORT_SYMBOL sound/core/snd 0x17ac507f snd_unregister_oss_device +EXPORT_SYMBOL sound/core/snd 0x18e1683f snd_dma_program +EXPORT_SYMBOL sound/core/snd 0x191e88cf snd_dma_pointer +EXPORT_SYMBOL sound/core/snd 0x198788b4 snd_lookup_oss_minor_data +EXPORT_SYMBOL sound/core/snd 0x1c831c47 snd_seq_root +EXPORT_SYMBOL sound/core/snd 0x1f186cf0 snd_ctl_remove +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 0x2da843f3 snd_jack_set_key +EXPORT_SYMBOL sound/core/snd 0x2de7b146 snd_device_free +EXPORT_SYMBOL sound/core/snd 0x33b1c76b snd_ctl_rename_id +EXPORT_SYMBOL sound/core/snd 0x342a2354 copy_to_user_fromio +EXPORT_SYMBOL sound/core/snd 0x3971b4df snd_ecards_limit +EXPORT_SYMBOL sound/core/snd 0x3f5f334f snd_ctl_find_numid +EXPORT_SYMBOL sound/core/snd 0x40b93c09 snd_card_free_when_closed +EXPORT_SYMBOL sound/core/snd 0x4761e287 snd_pci_quirk_lookup +EXPORT_SYMBOL sound/core/snd 0x4795131d snd_cards +EXPORT_SYMBOL sound/core/snd 0x4828d613 snd_card_file_add +EXPORT_SYMBOL sound/core/snd 0x4a3ea5c0 snd_request_card +EXPORT_SYMBOL sound/core/snd 0x4b015768 snd_iprintf +EXPORT_SYMBOL sound/core/snd 0x5351b954 snd_info_create_module_entry +EXPORT_SYMBOL sound/core/snd 0x5bb2c1c8 snd_ctl_register_ioctl +EXPORT_SYMBOL sound/core/snd 0x693c496c snd_ctl_make_virtual_master +EXPORT_SYMBOL sound/core/snd 0x6cc082df snd_device_register +EXPORT_SYMBOL sound/core/snd 0x70c15ac1 snd_dma_disable +EXPORT_SYMBOL sound/core/snd 0x723b8e6f snd_card_register +EXPORT_SYMBOL sound/core/snd 0x758b6995 snd_mixer_oss_notify_callback +EXPORT_SYMBOL sound/core/snd 0x77c1638a snd_card_unref +EXPORT_SYMBOL sound/core/snd 0x7a0a6d52 snd_info_create_card_entry +EXPORT_SYMBOL sound/core/snd 0x7aea7c35 snd_info_free_entry +EXPORT_SYMBOL sound/core/snd 0x7bcd21dd snd_card_set_id +EXPORT_SYMBOL sound/core/snd 0x7bedd993 snd_ctl_boolean_mono_info +EXPORT_SYMBOL sound/core/snd 0x7e227995 snd_card_free +EXPORT_SYMBOL sound/core/snd 0x81b69e41 snd_ctl_enum_info +EXPORT_SYMBOL sound/core/snd 0x83c654bb snd_power_wait +EXPORT_SYMBOL sound/core/snd 0x8df3789f snd_oss_info_register +EXPORT_SYMBOL sound/core/snd 0x8e08d3ab snd_card_create +EXPORT_SYMBOL sound/core/snd 0x8e63c9b2 snd_device_new +EXPORT_SYMBOL sound/core/snd 0x8f595b11 snd_major +EXPORT_SYMBOL sound/core/snd 0x97531e50 snd_ctl_unregister_ioctl +EXPORT_SYMBOL sound/core/snd 0x98a5ae03 snd_ctl_free_one +EXPORT_SYMBOL sound/core/snd 0x98dde46f snd_info_register +EXPORT_SYMBOL sound/core/snd 0x9a2f4fe6 snd_ctl_remove_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 0xa1f844ba snd_card_proc_new +EXPORT_SYMBOL sound/core/snd 0xa4adfc7f snd_jack_set_parent +EXPORT_SYMBOL sound/core/snd 0xaf1d5266 snd_card_file_remove +EXPORT_SYMBOL sound/core/snd 0xb2e5ae4a snd_lookup_minor_data +EXPORT_SYMBOL sound/core/snd 0xb34a6029 snd_ctl_notify +EXPORT_SYMBOL sound/core/snd 0xb37279cc _snd_ctl_add_slave +EXPORT_SYMBOL sound/core/snd 0xbc9e4465 snd_jack_report +EXPORT_SYMBOL sound/core/snd 0xbcdf53eb snd_add_device_sysfs_file +EXPORT_SYMBOL sound/core/snd 0xc5958fe7 snd_register_device_for_dev +EXPORT_SYMBOL sound/core/snd 0xc740282b snd_component_add +EXPORT_SYMBOL sound/core/snd 0xdf7a94d4 snd_ctl_add +EXPORT_SYMBOL sound/core/snd 0xe1f454d7 snd_card_disconnect +EXPORT_SYMBOL sound/core/snd 0xe268b495 snd_ctl_find_id +EXPORT_SYMBOL sound/core/snd 0xee4eb113 snd_ctl_new1 +EXPORT_SYMBOL sound/core/snd 0xfa4ef21d snd_unregister_device +EXPORT_SYMBOL sound/core/snd 0xfffd89db copy_from_user_toio +EXPORT_SYMBOL sound/core/snd-hwdep 0xac3e78c0 snd_hwdep_new +EXPORT_SYMBOL sound/core/snd-page-alloc 0x06b310c9 snd_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x3b0a89fb snd_dma_free_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x5898dcba snd_malloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0x741bf766 snd_dma_alloc_pages +EXPORT_SYMBOL sound/core/snd-page-alloc 0xdae6e4d2 snd_dma_alloc_pages_fallback +EXPORT_SYMBOL sound/core/snd-page-alloc 0xdd91f5cc snd_dma_get_reserved_buf +EXPORT_SYMBOL sound/core/snd-page-alloc 0xfac91b81 snd_dma_reserve_buf +EXPORT_SYMBOL sound/core/snd-pcm 0x0138526f snd_pcm_set_ops +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 0x05b315d0 _snd_pcm_lib_alloc_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0x08b8afad snd_pcm_new_internal +EXPORT_SYMBOL sound/core/snd-pcm 0x0d9b5ed4 snd_pcm_lib_preallocate_free_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x1d027e4b snd_pcm_format_signed +EXPORT_SYMBOL sound/core/snd-pcm 0x215915f7 snd_pcm_hw_constraint_ratdens +EXPORT_SYMBOL sound/core/snd-pcm 0x26417f99 snd_pcm_hw_constraint_pow2 +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 0x434cda69 snd_pcm_hw_constraint_integer +EXPORT_SYMBOL sound/core/snd-pcm 0x44f154d1 snd_pcm_hw_constraint_list +EXPORT_SYMBOL sound/core/snd-pcm 0x44ffc83c snd_pcm_limit_hw_rates +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 0x60033463 snd_pcm_stop +EXPORT_SYMBOL sound/core/snd-pcm 0x64c71753 snd_pcm_hw_rule_noresample +EXPORT_SYMBOL sound/core/snd-pcm 0x650f8603 snd_pcm_format_silence_64 +EXPORT_SYMBOL sound/core/snd-pcm 0x6838e32b snd_pcm_lib_preallocate_pages_for_all +EXPORT_SYMBOL sound/core/snd-pcm 0x68a24153 snd_pcm_format_physical_width +EXPORT_SYMBOL sound/core/snd-pcm 0x6949a0e1 snd_pcm_lib_get_vmalloc_page +EXPORT_SYMBOL sound/core/snd-pcm 0x6dbbbc04 snd_pcm_period_elapsed +EXPORT_SYMBOL sound/core/snd-pcm 0x6ef8fcd8 snd_pcm_format_linear +EXPORT_SYMBOL sound/core/snd-pcm 0x6fc8f805 snd_pcm_kernel_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0x774176ae snd_pcm_lib_read +EXPORT_SYMBOL sound/core/snd-pcm 0x7c3ba02f snd_pcm_open_substream +EXPORT_SYMBOL sound/core/snd-pcm 0x834dc955 snd_pcm_format_size +EXPORT_SYMBOL sound/core/snd-pcm 0x84c136ce snd_pcm_suspend +EXPORT_SYMBOL sound/core/snd-pcm 0x8aade463 snd_pcm_hw_constraint_step +EXPORT_SYMBOL sound/core/snd-pcm 0x94098ff8 snd_interval_list +EXPORT_SYMBOL sound/core/snd-pcm 0x971e3a36 snd_pcm_new_stream +EXPORT_SYMBOL sound/core/snd-pcm 0x9e3c202a snd_pcm_lib_write +EXPORT_SYMBOL sound/core/snd-pcm 0x9f6fb72c snd_pcm_lib_malloc_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xa22e6a05 snd_pcm_hw_constraint_msbits +EXPORT_SYMBOL sound/core/snd-pcm 0xa61aa028 snd_pcm_format_unsigned +EXPORT_SYMBOL sound/core/snd-pcm 0xa98ebabc snd_pcm_new +EXPORT_SYMBOL sound/core/snd-pcm 0xb5cad25a snd_pcm_hw_constraint_minmax +EXPORT_SYMBOL sound/core/snd-pcm 0xb9638db4 snd_pcm_rate_to_rate_bit +EXPORT_SYMBOL sound/core/snd-pcm 0xbcaa0881 snd_pcm_lib_preallocate_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xc2cd259a snd_pcm_lib_free_vmalloc_buffer +EXPORT_SYMBOL sound/core/snd-pcm 0xc355e1bf snd_pcm_hw_constraint_ratnums +EXPORT_SYMBOL sound/core/snd-pcm 0xc5a5f487 snd_pcm_mmap_data +EXPORT_SYMBOL sound/core/snd-pcm 0xc9877c9b snd_pcm_hw_refine +EXPORT_SYMBOL sound/core/snd-pcm 0xcfc88839 snd_pcm_hw_param_last +EXPORT_SYMBOL sound/core/snd-pcm 0xd27533fc snd_pcm_set_sync +EXPORT_SYMBOL sound/core/snd-pcm 0xd5fb21a2 snd_pcm_link_rwlock +EXPORT_SYMBOL sound/core/snd-pcm 0xd953f010 snd_pcm_lib_mmap_iomem +EXPORT_SYMBOL sound/core/snd-pcm 0xdd020542 snd_pcm_lib_writev +EXPORT_SYMBOL sound/core/snd-pcm 0xdedca20b snd_pcm_lib_free_pages +EXPORT_SYMBOL sound/core/snd-pcm 0xe56a9336 snd_pcm_format_width +EXPORT_SYMBOL sound/core/snd-pcm 0xe7815fad snd_pcm_hw_rule_add +EXPORT_SYMBOL sound/core/snd-pcm 0xeb0d02e4 snd_pcm_hw_param_first +EXPORT_SYMBOL sound/core/snd-pcm 0xf3797152 snd_interval_ratnum +EXPORT_SYMBOL sound/core/snd-pcm 0xf485820a snd_pcm_suspend_all +EXPORT_SYMBOL sound/core/snd-pcm 0xf6195c4a snd_pcm_lib_ioctl +EXPORT_SYMBOL sound/core/snd-pcm 0xf7b2f5eb snd_pcm_release_substream +EXPORT_SYMBOL sound/core/snd-pcm 0xf9652d28 snd_pcm_lib_readv +EXPORT_SYMBOL sound/core/snd-pcm 0xfc25c5b6 snd_pcm_notify +EXPORT_SYMBOL sound/core/snd-rawmidi 0x05e8b3e3 snd_rawmidi_transmit_peek +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0e7f81bb snd_rawmidi_kernel_open +EXPORT_SYMBOL sound/core/snd-rawmidi 0x0f51302e snd_rawmidi_transmit +EXPORT_SYMBOL sound/core/snd-rawmidi 0x11b6a7df snd_rawmidi_transmit_empty +EXPORT_SYMBOL sound/core/snd-rawmidi 0x1c49993a snd_rawmidi_drain_input +EXPORT_SYMBOL sound/core/snd-rawmidi 0x5c3c5441 snd_rawmidi_info_select +EXPORT_SYMBOL sound/core/snd-rawmidi 0x656f6561 snd_rawmidi_set_ops +EXPORT_SYMBOL sound/core/snd-rawmidi 0x7d4cc089 snd_rawmidi_new +EXPORT_SYMBOL sound/core/snd-rawmidi 0x86b26f0f snd_rawmidi_drain_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xa220920b snd_rawmidi_kernel_read +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaa2876e2 snd_rawmidi_kernel_release +EXPORT_SYMBOL sound/core/snd-rawmidi 0xaafcab6b snd_rawmidi_input_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbdd08c42 snd_rawmidi_kernel_write +EXPORT_SYMBOL sound/core/snd-rawmidi 0xbe11d0df snd_rawmidi_drop_output +EXPORT_SYMBOL sound/core/snd-rawmidi 0xc174ca46 snd_rawmidi_receive +EXPORT_SYMBOL sound/core/snd-rawmidi 0xcd713c21 snd_rawmidi_output_params +EXPORT_SYMBOL sound/core/snd-rawmidi 0xdc86f3d1 snd_rawmidi_transmit_ack +EXPORT_SYMBOL sound/core/snd-timer 0x1c7a3d47 snd_timer_open +EXPORT_SYMBOL sound/core/snd-timer 0x23c4349a snd_timer_pause +EXPORT_SYMBOL sound/core/snd-timer 0x29066137 snd_timer_interrupt +EXPORT_SYMBOL sound/core/snd-timer 0x4001d5f0 snd_timer_new +EXPORT_SYMBOL sound/core/snd-timer 0x7855a175 snd_timer_continue +EXPORT_SYMBOL sound/core/snd-timer 0x8c3ffd47 snd_timer_close +EXPORT_SYMBOL sound/core/snd-timer 0x9822c75d snd_timer_global_free +EXPORT_SYMBOL sound/core/snd-timer 0x9c897a3b snd_timer_resolution +EXPORT_SYMBOL sound/core/snd-timer 0x9f1d5a06 snd_timer_start +EXPORT_SYMBOL sound/core/snd-timer 0xabf6e065 snd_timer_stop +EXPORT_SYMBOL sound/core/snd-timer 0xd540a6dd snd_timer_global_new +EXPORT_SYMBOL sound/core/snd-timer 0xeca9f51a snd_timer_notify +EXPORT_SYMBOL sound/core/snd-timer 0xfa04c762 snd_timer_global_register +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x6d629c59 snd_mpu401_uart_interrupt_tx +EXPORT_SYMBOL sound/drivers/mpu401/snd-mpu401-uart 0x799783a1 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 0x0c575687 snd_opl3_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x0f86e23b snd_opl3_create +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x167481bd snd_opl3_hwdep_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x1c619c1c snd_opl3_timer_new +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x326faba8 snd_opl3_init +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x56192bd6 snd_opl3_find_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x716e4acb snd_opl3_load_patch +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x958bf37a snd_opl3_interrupt +EXPORT_SYMBOL sound/drivers/opl3/snd-opl3-lib 0x9c8d7425 snd_opl3_reset +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x1df2ff5a snd_vx_resume +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4e4a2c8c snd_vx_dsp_boot +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x4fd4e6a8 snd_vx_create +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x528072d7 snd_vx_dsp_load +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0x8f9b7e49 snd_vx_free_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xa99ef2d6 snd_vx_load_boot_image +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xd43d7ca8 snd_vx_check_reg_bit +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe1448159 snd_vx_setup_firmware +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xe872bf01 snd_vx_suspend +EXPORT_SYMBOL sound/drivers/vx/snd-vx-lib 0xf1f04d23 snd_vx_irq_handler +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x016724f9 cmp_connection_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x05fcfa90 cmp_connection_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x0d14ac23 fcp_avc_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x30e8a85d amdtp_out_stream_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32726876 fw_iso_resources_allocate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x32804d22 cmp_connection_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x49a88a05 snd_fw_transaction +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5451f2b2 amdtp_out_stream_pcm_abort +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5a049c19 fw_iso_resources_update +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ea384ea amdtp_out_stream_start +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x5ee0d788 cmp_connection_establish +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x64dfdf44 amdtp_out_stream_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x6a4d41ce amdtp_out_stream_pcm_pointer +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x799d566a amdtp_out_stream_stop +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x91f15853 amdtp_out_stream_pcm_prepare +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0x9f5de1fb fw_iso_resources_init +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xa3c01d5d iso_packets_buffer_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb58506ef fcp_bus_reset +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xb5d99e80 amdtp_out_stream_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xc06d915e fw_iso_resources_destroy +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xda49ae0b amdtp_out_stream_set_rate +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xe02e65a1 amdtp_out_stream_get_max_payload +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xedb7d221 fw_iso_resources_free +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf3ea454b cmp_connection_break +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf8e7e979 amdtp_out_stream_set_pcm_format +EXPORT_SYMBOL sound/firewire/snd-firewire-lib 0xf9175e75 iso_packets_buffer_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x18144617 snd_ak4114_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x2e2c96de snd_ak4114_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x3c6de06c snd_ak4114_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x41fed657 snd_ak4114_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x5ef7ef05 snd_ak4114_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4114 0x7e580d9f snd_ak4114_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x1e344be4 snd_ak4117_reg_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x2c37a0d5 snd_ak4117_external_rate +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x415fad03 snd_ak4117_build +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0x6e37cd8a snd_ak4117_check_rate_and_errors +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xcd744fc6 snd_ak4117_create +EXPORT_SYMBOL sound/i2c/other/snd-ak4117 0xf6a9494b snd_ak4117_reinit +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x339922c1 snd_akm4xxx_write +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x42c6a65d snd_akm4xxx_init +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0x66cb633d snd_akm4xxx_reset +EXPORT_SYMBOL sound/i2c/other/snd-ak4xxx-adda 0xf174720c snd_akm4xxx_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0x7b98cc51 snd_pt2258_reset +EXPORT_SYMBOL sound/i2c/other/snd-pt2258 0xd42c1931 snd_pt2258_build_controls +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xa2d5e1cf snd_tea575x_init +EXPORT_SYMBOL sound/i2c/other/snd-tea575x-tuner 0xe92180a6 snd_tea575x_exit +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x2377bab0 snd_cs8427_create +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x8a535e22 snd_cs8427_iec958_build +EXPORT_SYMBOL sound/i2c/snd-cs8427 0x91cd6a3f snd_cs8427_reg_write +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xe9fe8f3b snd_cs8427_iec958_pcm +EXPORT_SYMBOL sound/i2c/snd-cs8427 0xf8049edd snd_cs8427_iec958_active +EXPORT_SYMBOL sound/i2c/snd-i2c 0x12418536 snd_i2c_readbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5b1abc75 snd_i2c_probeaddr +EXPORT_SYMBOL sound/i2c/snd-i2c 0x5ceb6a6e snd_i2c_bus_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x68718231 snd_i2c_device_create +EXPORT_SYMBOL sound/i2c/snd-i2c 0x9b059542 snd_i2c_sendbytes +EXPORT_SYMBOL sound/i2c/snd-i2c 0xe417754b snd_i2c_device_free +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x30ec3041 snd_sbmixer_new +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3862e2f6 snd_sbdsp_get_byte +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x3bfb1efa snd_sbmixer_write +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x46caa856 snd_sbmixer_resume +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x4fe2522c snd_sbdsp_command +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x6862619a snd_sbmixer_read +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x87714430 snd_sbmixer_add_ctl +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0x9476f74f snd_sbdsp_create +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xa3badd0d snd_sbdsp_reset +EXPORT_SYMBOL sound/isa/sb/snd-sb-common 0xb9acde90 snd_sbmixer_suspend +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x01f39722 snd_sb16dsp_pcm +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x0a0776ca snd_sb16dsp_configure +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0x48b6607c snd_sb16dsp_get_pcm_ops +EXPORT_SYMBOL sound/isa/sb/snd-sb16-dsp 0xe0b3f690 snd_sb16dsp_interrupt +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x0349a435 snd_ac97_read +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x14028f82 snd_ac97_set_rate +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x1dbaf466 snd_ac97_pcm_close +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x282b29f7 snd_ac97_resume +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2c454e61 snd_ac97_update_power +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x2deb6e7f snd_ac97_mixer +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x310b1fdf snd_ac97_write_cache +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x3a9d2be4 snd_ac97_pcm_open +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x55b555bb snd_ac97_get_short_name +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x6c414f34 snd_ac97_bus +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x71703b9e snd_ac97_write +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x7ac28b78 snd_ac97_update +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x85b96a3c snd_ac97_update_bits +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8d17efbe snd_ac97_tune_hardware +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0x8fbf0691 snd_ac97_pcm_double_rate_rules +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xb4fc5292 snd_ac97_pcm_assign +EXPORT_SYMBOL sound/pci/ac97/snd-ac97-codec 0xd8d140f6 snd_ac97_suspend +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x2b6eb2c4 snd_emu10k1_ptr_read +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x652110e5 snd_emu10k1_synth_bzero +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0x905efede snd_emu10k1_synth_copy_from_user +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa785a3dd snd_emu10k1_synth_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xa9e31369 snd_emu10k1_synth_alloc +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xb797f7d8 snd_emu10k1_voice_free +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xbad49298 snd_emu10k1_memblk_map +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xea1b535c snd_emu10k1_ptr_write +EXPORT_SYMBOL sound/pci/emu10k1/snd-emu10k1 0xfc94151f snd_emu10k1_voice_alloc +EXPORT_SYMBOL sound/pci/hda/snd-hda-codec 0xded834ee snd_hda_parse_generic_codec +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x79de4d78 snd_ice1712_akm4xxx_build_controls +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0x7b7f0b09 snd_ice1712_akm4xxx_init +EXPORT_SYMBOL sound/pci/ice1712/snd-ice17xx-ak4xxx 0xdb814370 snd_ice1712_akm4xxx_free +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x064f87da oxygen_reset_uart +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1ae41d97 oxygen_pci_suspend +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x1fa525dc oxygen_write32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x214a8077 oxygen_write16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x32d969ed oxygen_write8_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x62ab8a07 oxygen_write16_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x662dec64 oxygen_write32_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x75181dfb oxygen_write_ac97_masked +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x7bba0d08 oxygen_write8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x8bd473ea oxygen_pci_probe +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0x95241b31 oxygen_pci_resume +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xa94529c3 oxygen_write_i2c +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xaf2f19e0 oxygen_pci_remove +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xb1e8028c oxygen_read32 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xbe25e46b oxygen_read16 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xc6955450 oxygen_read8 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcb139e46 oxygen_pci_shutdown +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xcba67023 oxygen_read_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf114c02c oxygen_write_ac97 +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf169599e oxygen_write_spi +EXPORT_SYMBOL sound/pci/oxygen/snd-oxygen-lib 0xf67282f3 oxygen_write_uart +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x1bef40f5 snd_trident_start_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0x6bdd53e7 snd_trident_free_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa6049512 snd_trident_stop_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xa96ddb16 snd_trident_alloc_voice +EXPORT_SYMBOL sound/pci/trident/snd-trident 0xab8d2efd snd_trident_write_voice_regs +EXPORT_SYMBOL sound/soundcore 0x24b8a8b7 register_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x4118e002 register_sound_special_device +EXPORT_SYMBOL sound/soundcore 0x5da067a7 register_sound_midi +EXPORT_SYMBOL sound/soundcore 0x7afc9d8a unregister_sound_mixer +EXPORT_SYMBOL sound/soundcore 0x7c83a6fb register_sound_special +EXPORT_SYMBOL sound/soundcore 0x99c95fa5 unregister_sound_special +EXPORT_SYMBOL sound/soundcore 0xccb1c5bb register_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xcd083b10 unregister_sound_dsp +EXPORT_SYMBOL sound/soundcore 0xe54306b6 sound_class +EXPORT_SYMBOL sound/soundcore 0xfdab6de3 unregister_sound_midi +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x1f2bfb39 snd_emux_lock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x33dd6294 snd_emux_register +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x3c9a6960 snd_emux_unlock_voice +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0x581f69da 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 0x992827cb snd_emux_terminate_all +EXPORT_SYMBOL sound/synth/emux/snd-emux-synth 0xff81ba96 snd_emux_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x0ec62d56 __snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0x1f0c3b96 __snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x38fa70b5 snd_util_mem_avail +EXPORT_SYMBOL sound/synth/snd-util-mem 0x604b272c snd_util_mem_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0x9a0c87c7 snd_util_memhdr_new +EXPORT_SYMBOL sound/synth/snd-util-mem 0xac471195 snd_util_mem_alloc +EXPORT_SYMBOL sound/synth/snd-util-mem 0xd9a0e71e snd_util_memhdr_free +EXPORT_SYMBOL sound/synth/snd-util-mem 0xf150d0f3 __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 0x6d08379f snd_usbmidi_create +EXPORT_SYMBOL sound/usb/snd-usbmidi-lib 0xd9d2bb03 snd_usbmidi_disconnect +EXPORT_SYMBOL vmlinux 0x00000000 softirq_work_list +EXPORT_SYMBOL vmlinux 0x0029c13b tcp_hashinfo +EXPORT_SYMBOL vmlinux 0x005a4975 cpu_possible_mask +EXPORT_SYMBOL vmlinux 0x00709a3b kblockd_schedule_delayed_work +EXPORT_SYMBOL vmlinux 0x00801678 flush_scheduled_work +EXPORT_SYMBOL vmlinux 0x008a38c1 generic_setlease +EXPORT_SYMBOL vmlinux 0x0097b895 cap_mmap_file +EXPORT_SYMBOL vmlinux 0x00d0df54 register_console +EXPORT_SYMBOL vmlinux 0x00d36c0d inetdev_by_index +EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x011852fa dev_change_flags +EXPORT_SYMBOL vmlinux 0x0118cd98 bio_pair_release +EXPORT_SYMBOL vmlinux 0x011b8cf5 kmem_cache_shrink +EXPORT_SYMBOL vmlinux 0x0122f95e _lv1_get_spe_irq_outlet +EXPORT_SYMBOL vmlinux 0x013047c3 skb_dst_set_noref +EXPORT_SYMBOL vmlinux 0x013c1726 netdev_features_change +EXPORT_SYMBOL vmlinux 0x013e31ed inet_sendmsg +EXPORT_SYMBOL vmlinux 0x01463129 bio_map_kern +EXPORT_SYMBOL vmlinux 0x014b105c pci_enable_obff +EXPORT_SYMBOL vmlinux 0x01623e55 netdev_emerg +EXPORT_SYMBOL vmlinux 0x016b427c max8998_bulk_write +EXPORT_SYMBOL vmlinux 0x017317ca scsi_command_normalize_sense +EXPORT_SYMBOL vmlinux 0x017b5db7 blk_put_queue +EXPORT_SYMBOL vmlinux 0x0182c9e3 blk_alloc_queue_node +EXPORT_SYMBOL vmlinux 0x018d9919 _lv1_set_lpm_interrupt_mask +EXPORT_SYMBOL vmlinux 0x01902adf netpoll_trap +EXPORT_SYMBOL vmlinux 0x019bd823 phy_connect +EXPORT_SYMBOL vmlinux 0x019e7765 __init_rwsem +EXPORT_SYMBOL vmlinux 0x01b22d94 inet6_ioctl +EXPORT_SYMBOL vmlinux 0x01b52706 get_disk +EXPORT_SYMBOL vmlinux 0x01b78929 pci_bus_find_capability +EXPORT_SYMBOL vmlinux 0x01bf3636 vfs_follow_link +EXPORT_SYMBOL vmlinux 0x01c744ac cdrom_mode_select +EXPORT_SYMBOL vmlinux 0x01e34262 phy_device_free +EXPORT_SYMBOL vmlinux 0x01f21880 tcp_sendmsg +EXPORT_SYMBOL vmlinux 0x020d18d7 _lv1_set_lpm_debug_bus_control +EXPORT_SYMBOL vmlinux 0x023a074a hvc_get_chars +EXPORT_SYMBOL vmlinux 0x02649054 security_sock_rcv_skb +EXPORT_SYMBOL vmlinux 0x027d5499 _lv1_did_update_interrupt_mask +EXPORT_SYMBOL vmlinux 0x028a0d0d bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x028e14b8 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0x029f260e bdget +EXPORT_SYMBOL vmlinux 0x02a18c74 nf_conntrack_destroy +EXPORT_SYMBOL vmlinux 0x02a6ce5a crc16_table +EXPORT_SYMBOL vmlinux 0x02ac0689 vio_h_cop_sync +EXPORT_SYMBOL vmlinux 0x02d81845 audit_log_task_context +EXPORT_SYMBOL vmlinux 0x02e3c0ae kernel_connect +EXPORT_SYMBOL vmlinux 0x02f7b9ce wait_on_page_bit +EXPORT_SYMBOL vmlinux 0x031af389 padata_stop +EXPORT_SYMBOL vmlinux 0x031dc65e pasemi_dma_free_chan +EXPORT_SYMBOL vmlinux 0x0325b417 pipe_lock +EXPORT_SYMBOL vmlinux 0x0333fff9 bio_integrity_tag_size +EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl +EXPORT_SYMBOL vmlinux 0x033f8ac9 pmac_register_agp_pm +EXPORT_SYMBOL vmlinux 0x0348fec1 sg_miter_stop +EXPORT_SYMBOL vmlinux 0x034d59e2 dev_gro_receive +EXPORT_SYMBOL vmlinux 0x03592ea0 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled +EXPORT_SYMBOL vmlinux 0x037a0cba kfree +EXPORT_SYMBOL vmlinux 0x03975d68 idr_find +EXPORT_SYMBOL vmlinux 0x039f7baa skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x03b7e640 bio_phys_segments +EXPORT_SYMBOL vmlinux 0x03bd889d param_get_ulong +EXPORT_SYMBOL vmlinux 0x03c06156 bitmap_fold +EXPORT_SYMBOL vmlinux 0x03d5f2a5 uart_add_one_port +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 0x0440a533 _lv1_net_remove_multicast_address +EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator +EXPORT_SYMBOL vmlinux 0x046c1f16 param_ops_invbool +EXPORT_SYMBOL vmlinux 0x046ce173 load_nls +EXPORT_SYMBOL vmlinux 0x0479bc68 netdev_update_features +EXPORT_SYMBOL vmlinux 0x047dc486 genlmsg_multicast_allns +EXPORT_SYMBOL vmlinux 0x0481ed73 posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x0482264d ip6_frag_match +EXPORT_SYMBOL vmlinux 0x0487f831 fb_find_best_display +EXPORT_SYMBOL vmlinux 0x048d27cc hvcs_register_connection +EXPORT_SYMBOL vmlinux 0x04963936 phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0x04a37e8f generic_ro_fops +EXPORT_SYMBOL vmlinux 0x04af03c5 bio_uncopy_user +EXPORT_SYMBOL vmlinux 0x04bb2877 vga_client_register +EXPORT_SYMBOL vmlinux 0x04bdfbcb lookup_bdev +EXPORT_SYMBOL vmlinux 0x04ea56f9 _kstrtol +EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize +EXPORT_SYMBOL vmlinux 0x050bbbbb request_key +EXPORT_SYMBOL vmlinux 0x051714e5 scsi_eh_restore_cmnd +EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch +EXPORT_SYMBOL vmlinux 0x0530dede _raw_write_trylock +EXPORT_SYMBOL vmlinux 0x05336749 d_set_d_op +EXPORT_SYMBOL vmlinux 0x0540b32a cpu_core_map +EXPORT_SYMBOL vmlinux 0x054434d6 radix_tree_tag_set +EXPORT_SYMBOL vmlinux 0x054c6d6c jbd2__journal_restart +EXPORT_SYMBOL vmlinux 0x055c8559 __kfifo_dma_in_prepare_r +EXPORT_SYMBOL vmlinux 0x056dd34b ndisc_mc_map +EXPORT_SYMBOL vmlinux 0x056ee730 ipv6_hash_secret +EXPORT_SYMBOL vmlinux 0x057ba8fa kmem_cache_alloc_trace +EXPORT_SYMBOL vmlinux 0x057d8de8 __skb_tx_hash +EXPORT_SYMBOL vmlinux 0x059f0195 pcibus_to_node +EXPORT_SYMBOL vmlinux 0x05a514a1 _insl_ns +EXPORT_SYMBOL vmlinux 0x05a711a2 __nla_put +EXPORT_SYMBOL vmlinux 0x05c0f4da __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x061651be strcat +EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user +EXPORT_SYMBOL vmlinux 0x06384714 security_path_chown +EXPORT_SYMBOL vmlinux 0x06456aff _lv1_get_virtual_address_space_id_of_ppe +EXPORT_SYMBOL vmlinux 0x066a286e revert_creds +EXPORT_SYMBOL vmlinux 0x06721e30 __register_chrdev +EXPORT_SYMBOL vmlinux 0x06779c88 dqget +EXPORT_SYMBOL vmlinux 0x067d1304 pci_unregister_driver +EXPORT_SYMBOL vmlinux 0x067d8d35 security_release_secctx +EXPORT_SYMBOL vmlinux 0x067dcccd __lru_cache_add +EXPORT_SYMBOL vmlinux 0x06917c2d sock_rfree +EXPORT_SYMBOL vmlinux 0x06ab02ab inet_csk_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x06bbb24a mempool_resize +EXPORT_SYMBOL vmlinux 0x06cdaa58 blk_integrity_compare +EXPORT_SYMBOL vmlinux 0x06e12e19 decrementer_clockevent +EXPORT_SYMBOL vmlinux 0x06eff90b elv_dispatch_add_tail +EXPORT_SYMBOL vmlinux 0x06fdbdf8 ip_mc_inc_group +EXPORT_SYMBOL vmlinux 0x06fe3b14 default_grn +EXPORT_SYMBOL vmlinux 0x0702073e xfrm_init_state +EXPORT_SYMBOL vmlinux 0x07144a48 pm8606_osc_enable +EXPORT_SYMBOL vmlinux 0x071d90c6 generic_pipe_buf_unmap +EXPORT_SYMBOL vmlinux 0x071ef1f4 blk_sync_queue +EXPORT_SYMBOL vmlinux 0x0727c4f3 iowrite8 +EXPORT_SYMBOL vmlinux 0x072fa1e2 dentry_open +EXPORT_SYMBOL vmlinux 0x073e73b5 init_net +EXPORT_SYMBOL vmlinux 0x074e9213 down_killable +EXPORT_SYMBOL vmlinux 0x07904c39 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x0794ecba eth_header_cache +EXPORT_SYMBOL vmlinux 0x0799aca4 local_bh_enable +EXPORT_SYMBOL vmlinux 0x07a1a945 splice_from_pipe_begin +EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap +EXPORT_SYMBOL vmlinux 0x07b37cd1 ping_prot +EXPORT_SYMBOL vmlinux 0x07c4ba28 vio_get_attribute +EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit +EXPORT_SYMBOL vmlinux 0x07d6a093 tty_kref_put +EXPORT_SYMBOL vmlinux 0x07d9b783 scsi_nl_send_vendor_msg +EXPORT_SYMBOL vmlinux 0x07ef213a pasemi_dma_free_fun +EXPORT_SYMBOL vmlinux 0x07f08148 splice_from_pipe_feed +EXPORT_SYMBOL vmlinux 0x07f8ee15 _lv1_unmap_device_dma_region +EXPORT_SYMBOL vmlinux 0x080261c7 simple_transaction_set +EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses +EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister +EXPORT_SYMBOL vmlinux 0x08431c0a proc_create_data +EXPORT_SYMBOL vmlinux 0x08730466 abx500_get_register_interruptible +EXPORT_SYMBOL vmlinux 0x08746830 lock_may_write +EXPORT_SYMBOL vmlinux 0x08a26b3a i2c_smbus_xfer +EXPORT_SYMBOL vmlinux 0x08be7ed6 blk_make_request +EXPORT_SYMBOL vmlinux 0x08cd6283 mmc_flush_cache +EXPORT_SYMBOL vmlinux 0x08f1c704 pci_release_selected_regions +EXPORT_SYMBOL vmlinux 0x08ffd26f dmam_alloc_noncoherent +EXPORT_SYMBOL vmlinux 0x0904de2e generic_delete_inode +EXPORT_SYMBOL vmlinux 0x090e96ab dcache_dir_close +EXPORT_SYMBOL vmlinux 0x091244ff blk_get_backing_dev_info +EXPORT_SYMBOL vmlinux 0x0923b691 ipv6_skip_exthdr +EXPORT_SYMBOL vmlinux 0x0948cde9 num_physpages +EXPORT_SYMBOL vmlinux 0x0954e57f inet_frags_fini +EXPORT_SYMBOL vmlinux 0x0957d8a6 blk_queue_free_tags +EXPORT_SYMBOL vmlinux 0x096341c2 _lv1_connect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x096ff747 tcp_get_md5sig_pool +EXPORT_SYMBOL vmlinux 0x09705b3c iov_iter_copy_from_user +EXPORT_SYMBOL vmlinux 0x09887393 security_inode_readlink +EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap +EXPORT_SYMBOL vmlinux 0x099e400b unregister_netdev +EXPORT_SYMBOL vmlinux 0x09c55cec schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x09c8eb55 font_vga_8x16 +EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions +EXPORT_SYMBOL vmlinux 0x09d540e6 file_sb_list_del +EXPORT_SYMBOL vmlinux 0x09e04429 free_netdev +EXPORT_SYMBOL vmlinux 0x09ea3a70 __frontswap_init +EXPORT_SYMBOL vmlinux 0x0a0a0ef4 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x0a134aff arp_send +EXPORT_SYMBOL vmlinux 0x0a2487e0 unblock_all_signals +EXPORT_SYMBOL vmlinux 0x0a25662d submit_bio +EXPORT_SYMBOL vmlinux 0x0a2d5d68 udp_seq_open +EXPORT_SYMBOL vmlinux 0x0a3d0644 cpu_online_mask +EXPORT_SYMBOL vmlinux 0x0a5509f2 pci_scan_bus +EXPORT_SYMBOL vmlinux 0x0a84ef7b security_path_mkdir +EXPORT_SYMBOL vmlinux 0x0aa576ad inet_dgram_connect +EXPORT_SYMBOL vmlinux 0x0aaa87ec jbd2_journal_set_triggers +EXPORT_SYMBOL vmlinux 0x0ab6ef8a mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x0abb9c25 get_gendisk +EXPORT_SYMBOL vmlinux 0x0acb1a3c __bitmap_shift_right +EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all +EXPORT_SYMBOL vmlinux 0x0afef520 pci_enable_device_mem +EXPORT_SYMBOL vmlinux 0x0b0d888b icmpv6_err_convert +EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b2e1ec7 h_get_mpp +EXPORT_SYMBOL vmlinux 0x0b36c174 ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0x0b5c2a21 abx500_register_ops +EXPORT_SYMBOL vmlinux 0x0b5cdaf8 dma_async_memcpy_buf_to_pg +EXPORT_SYMBOL vmlinux 0x0b64cce8 dquot_alloc +EXPORT_SYMBOL vmlinux 0x0b732fb3 key_revoke +EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol +EXPORT_SYMBOL vmlinux 0x0bc0fe2d tcp_syn_ack_timeout +EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type +EXPORT_SYMBOL vmlinux 0x0bcb523c neigh_update +EXPORT_SYMBOL vmlinux 0x0bd075c4 skb_insert +EXPORT_SYMBOL vmlinux 0x0bd3b520 of_mm_gpiochip_add +EXPORT_SYMBOL vmlinux 0x0be5a609 ps3_dma_region_create +EXPORT_SYMBOL vmlinux 0x0bfe2bfe i2c_clients_command +EXPORT_SYMBOL vmlinux 0x0c1ad162 _lv1_net_start_rx_dma +EXPORT_SYMBOL vmlinux 0x0c2b0f5c prepare_binprm +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 0x0ca0c882 twl6030_interrupt_mask +EXPORT_SYMBOL vmlinux 0x0cae232b utf16s_to_utf8s +EXPORT_SYMBOL vmlinux 0x0caf8368 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x0cb79bfa xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x0cf03b60 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x0d1610d5 locks_init_lock +EXPORT_SYMBOL vmlinux 0x0d285c6c kdb_current_task +EXPORT_SYMBOL vmlinux 0x0d40a0d3 module_layout +EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type +EXPORT_SYMBOL vmlinux 0x0d608639 generic_pipe_buf_map +EXPORT_SYMBOL vmlinux 0x0d652bb4 unregister_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x0d6c963c copy_from_user +EXPORT_SYMBOL vmlinux 0x0da10ec3 security_sock_graft +EXPORT_SYMBOL vmlinux 0x0dc70973 ps3_sb_event_receive_port_destroy +EXPORT_SYMBOL vmlinux 0x0df3b0dd filp_close +EXPORT_SYMBOL vmlinux 0x0dfa045c pci_enable_ido +EXPORT_SYMBOL vmlinux 0x0e00cd7c inet6_bind +EXPORT_SYMBOL vmlinux 0x0e04614b vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x0e0c4961 eth_rebuild_header +EXPORT_SYMBOL vmlinux 0x0e27bee1 of_phy_connect +EXPORT_SYMBOL vmlinux 0x0e2dcb2b dev_uc_del +EXPORT_SYMBOL vmlinux 0x0e4f87a5 mark_info_dirty +EXPORT_SYMBOL vmlinux 0x0e503d7d compat_tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x0e681cd8 jbd2_journal_init_inode +EXPORT_SYMBOL vmlinux 0x0e6a1954 pm860x_page_bulk_read +EXPORT_SYMBOL vmlinux 0x0e6a7b88 set_nlink +EXPORT_SYMBOL vmlinux 0x0e6da44a set_normalized_timespec +EXPORT_SYMBOL vmlinux 0x0e8aa128 mii_check_media +EXPORT_SYMBOL vmlinux 0x0e8f30f6 _raw_write_lock_irq +EXPORT_SYMBOL vmlinux 0x0e94d9d4 ppp_dev_name +EXPORT_SYMBOL vmlinux 0x0e9e99ea inet_frags_exit_net +EXPORT_SYMBOL vmlinux 0x0eac59d1 agp_generic_destroy_pages +EXPORT_SYMBOL vmlinux 0x0eb65f18 jbd2_journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0x0f186c68 bio_split +EXPORT_SYMBOL vmlinux 0x0f1b7f55 put_tty_driver +EXPORT_SYMBOL vmlinux 0x0f1d8d11 blk_dump_rq_flags +EXPORT_SYMBOL vmlinux 0x0f2e6990 mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x0f2ec10f i2c_bit_add_numbered_bus +EXPORT_SYMBOL vmlinux 0x0f3bae93 tcp_sendpage +EXPORT_SYMBOL vmlinux 0x0f4c91ed ns_to_timespec +EXPORT_SYMBOL vmlinux 0x0f80e1e0 kobject_get +EXPORT_SYMBOL vmlinux 0x0f8fd4fc ps2_cmd_aborted +EXPORT_SYMBOL vmlinux 0x0fa0d87b key_type_keyring +EXPORT_SYMBOL vmlinux 0x0faef0ed __tasklet_schedule +EXPORT_SYMBOL vmlinux 0x0fb0e29f init_timer_key +EXPORT_SYMBOL vmlinux 0x0fb725cd md_check_no_bitmap +EXPORT_SYMBOL vmlinux 0x0fbb752d __sock_create +EXPORT_SYMBOL vmlinux 0x0fd83358 tcp_ioctl +EXPORT_SYMBOL vmlinux 0x0fe343af dev_set_group +EXPORT_SYMBOL vmlinux 0x0fee4968 of_get_parent +EXPORT_SYMBOL vmlinux 0x0ff0096b textsearch_destroy +EXPORT_SYMBOL vmlinux 0x0ff968dc ps2_command +EXPORT_SYMBOL vmlinux 0x0ffa049f pagecache_write_end +EXPORT_SYMBOL vmlinux 0x101f388e input_mt_report_slot_state +EXPORT_SYMBOL vmlinux 0x103cf7b3 jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x1065dc8b tty_driver_kref_put +EXPORT_SYMBOL vmlinux 0x10709b2d nla_append +EXPORT_SYMBOL vmlinux 0x10ce4c4e tty_port_hangup +EXPORT_SYMBOL vmlinux 0x10ee20bb default_blu +EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype +EXPORT_SYMBOL vmlinux 0x1118adf9 phy_start_interrupts +EXPORT_SYMBOL vmlinux 0x11267875 scsi_extd_sense_format +EXPORT_SYMBOL vmlinux 0x113dfb35 tty_port_close_end +EXPORT_SYMBOL vmlinux 0x115d2041 of_device_unregister +EXPORT_SYMBOL vmlinux 0x1163f0a7 blk_max_low_pfn +EXPORT_SYMBOL vmlinux 0x11698f79 security_old_inode_init_security +EXPORT_SYMBOL vmlinux 0x116d910b generic_mii_ioctl +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 0x118f01ea putname +EXPORT_SYMBOL vmlinux 0x11dab3e8 blk_queue_segment_boundary +EXPORT_SYMBOL vmlinux 0x11ee842e blk_rq_map_sg +EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin +EXPORT_SYMBOL vmlinux 0x1204753c security_inode_permission +EXPORT_SYMBOL vmlinux 0x120c9b2e uart_get_baud_rate +EXPORT_SYMBOL vmlinux 0x120e9d69 dma_async_memcpy_buf_to_buf +EXPORT_SYMBOL vmlinux 0x12154d69 input_register_device +EXPORT_SYMBOL vmlinux 0x125a9a79 padata_do_serial +EXPORT_SYMBOL vmlinux 0x12620994 __register_binfmt +EXPORT_SYMBOL vmlinux 0x12714498 blk_end_request +EXPORT_SYMBOL vmlinux 0x127d8b31 security_path_chmod +EXPORT_SYMBOL vmlinux 0x128099f8 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x128212f6 inode_sub_rsv_space +EXPORT_SYMBOL vmlinux 0x12878a46 xfrm_prepare_input +EXPORT_SYMBOL vmlinux 0x129d6f6f scm_fp_dup +EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range +EXPORT_SYMBOL vmlinux 0x12bd53fd __alloc_pages_nodemask +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 0x12f03345 neigh_create +EXPORT_SYMBOL vmlinux 0x12f99022 inet_frags_init_net +EXPORT_SYMBOL vmlinux 0x13195785 clear_bdi_congested +EXPORT_SYMBOL vmlinux 0x13307fde vsscanf +EXPORT_SYMBOL vmlinux 0x13515127 sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x13662169 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x137ecf81 security_task_getsecid +EXPORT_SYMBOL vmlinux 0x13a8af20 inet_register_protosw +EXPORT_SYMBOL vmlinux 0x13aedf2b key_alloc +EXPORT_SYMBOL vmlinux 0x13affbda percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out +EXPORT_SYMBOL vmlinux 0x13d4dd5c block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x13d62fae scsi_put_command +EXPORT_SYMBOL vmlinux 0x13e38f5c up_read +EXPORT_SYMBOL vmlinux 0x13f0a3f5 follow_up +EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation +EXPORT_SYMBOL vmlinux 0x13f53da6 CMO_PageSize +EXPORT_SYMBOL vmlinux 0x141fe5fd pasemi_read_iob_reg +EXPORT_SYMBOL vmlinux 0x14350729 pci_scan_bridge +EXPORT_SYMBOL vmlinux 0x1438d487 poll_freewait +EXPORT_SYMBOL vmlinux 0x146cdd30 pci_unmap_rom +EXPORT_SYMBOL vmlinux 0x14e7ca7c alloc_cpu_rmap +EXPORT_SYMBOL vmlinux 0x151592c4 _lv1_invalidate_htab_entries +EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy +EXPORT_SYMBOL vmlinux 0x1551dc51 bitmap_find_free_region +EXPORT_SYMBOL vmlinux 0x1555f82f blk_queue_find_tag +EXPORT_SYMBOL vmlinux 0x15692c87 param_ops_int +EXPORT_SYMBOL vmlinux 0x15864b03 flex_array_get +EXPORT_SYMBOL vmlinux 0x15964ced send_sig +EXPORT_SYMBOL vmlinux 0x15acaf6a scsi_unregister +EXPORT_SYMBOL vmlinux 0x15c7063c pagecache_write_begin +EXPORT_SYMBOL vmlinux 0x15e456b2 nf_reinject +EXPORT_SYMBOL vmlinux 0x160bd45c rtas_token +EXPORT_SYMBOL vmlinux 0x161c56fe mmc_card_awake +EXPORT_SYMBOL vmlinux 0x16208e15 bio_integrity_trim +EXPORT_SYMBOL vmlinux 0x1627ed72 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x16376674 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump +EXPORT_SYMBOL vmlinux 0x169863c1 pci_get_domain_bus_and_slot +EXPORT_SYMBOL vmlinux 0x16b1d946 xfrm_find_acq +EXPORT_SYMBOL vmlinux 0x16bae152 aio_put_req +EXPORT_SYMBOL vmlinux 0x16c42197 init_timer_deferrable_key +EXPORT_SYMBOL vmlinux 0x16d0d27a update_time +EXPORT_SYMBOL vmlinux 0x16efc253 neigh_sysctl_unregister +EXPORT_SYMBOL vmlinux 0x16f36cbe pci_remove_bus +EXPORT_SYMBOL vmlinux 0x16f87325 kmem_cache_size +EXPORT_SYMBOL vmlinux 0x172d0b17 elv_rq_merge_ok +EXPORT_SYMBOL vmlinux 0x17402deb __scsi_put_command +EXPORT_SYMBOL vmlinux 0x1743414f __debugger_fault_handler +EXPORT_SYMBOL vmlinux 0x1746644f simple_release_fs +EXPORT_SYMBOL vmlinux 0x17648396 dev_base_lock +EXPORT_SYMBOL vmlinux 0x1798f277 inode_init_owner +EXPORT_SYMBOL vmlinux 0x17b44801 ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x17b661c1 serio_open +EXPORT_SYMBOL vmlinux 0x17b80cf3 dst_alloc +EXPORT_SYMBOL vmlinux 0x17c60894 lro_receive_frags +EXPORT_SYMBOL vmlinux 0x17cb8c79 _lv1_read_htab_entries +EXPORT_SYMBOL vmlinux 0x17d1607f kernel_getsockname +EXPORT_SYMBOL vmlinux 0x17d7e4a4 mb_cache_destroy +EXPORT_SYMBOL vmlinux 0x17df17bc sysctl_tcp_ecn +EXPORT_SYMBOL vmlinux 0x17e28473 fsl_upm_run_pattern +EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip +EXPORT_SYMBOL vmlinux 0x181e542e sock_i_uid +EXPORT_SYMBOL vmlinux 0x1826f30a agp_bridge +EXPORT_SYMBOL vmlinux 0x182e5d30 elevator_exit +EXPORT_SYMBOL vmlinux 0x182f50af _lv1_open_device +EXPORT_SYMBOL vmlinux 0x18379d69 nlmsg_notify +EXPORT_SYMBOL vmlinux 0x183fa88b mempool_alloc_slab +EXPORT_SYMBOL vmlinux 0x184b82fb mmc_vddrange_to_ocrmask +EXPORT_SYMBOL vmlinux 0x184ba3f0 note_scsi_host +EXPORT_SYMBOL vmlinux 0x184e6c85 radix_tree_gang_lookup_slot +EXPORT_SYMBOL vmlinux 0x1857aa39 proc_dointvec +EXPORT_SYMBOL vmlinux 0x185b8f8f redirty_page_for_writepage +EXPORT_SYMBOL vmlinux 0x187487be posix_test_lock +EXPORT_SYMBOL vmlinux 0x187a1774 init_buffer +EXPORT_SYMBOL vmlinux 0x188a3dfb timespec_trunc +EXPORT_SYMBOL vmlinux 0x189868d7 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x18a358fe pci_disable_device +EXPORT_SYMBOL vmlinux 0x18bf1b57 __elv_add_request +EXPORT_SYMBOL vmlinux 0x18c98205 _lv1_destruct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x18dfe3dc fsnotify_init_mark +EXPORT_SYMBOL vmlinux 0x18e006d8 elevator_change +EXPORT_SYMBOL vmlinux 0x18ef17cf xfrm_state_update +EXPORT_SYMBOL vmlinux 0x18f47e7b scsi_calculate_bounce_limit +EXPORT_SYMBOL vmlinux 0x191b54fc nobh_write_end +EXPORT_SYMBOL vmlinux 0x19444627 memcpy_fromiovecend +EXPORT_SYMBOL vmlinux 0x194ccb24 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x194fe44c mutex_lock_killable +EXPORT_SYMBOL vmlinux 0x1975a3e0 swiotlb_sync_single_for_cpu +EXPORT_SYMBOL vmlinux 0x1976aa06 param_ops_bool +EXPORT_SYMBOL vmlinux 0x19919d87 udp_proc_register +EXPORT_SYMBOL vmlinux 0x199ec4fb arch_spin_unlock_wait +EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp +EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19c968d1 pasemi_dma_start_chan +EXPORT_SYMBOL vmlinux 0x1a042d1f ida_simple_get +EXPORT_SYMBOL vmlinux 0x1a111a41 ftrace_print_flags_seq +EXPORT_SYMBOL vmlinux 0x1a2a8665 jbd2_journal_extend +EXPORT_SYMBOL vmlinux 0x1a2f6945 __next_cpu +EXPORT_SYMBOL vmlinux 0x1a2fdc54 wait_for_key_construction +EXPORT_SYMBOL vmlinux 0x1a4a117c tcp_sync_mss +EXPORT_SYMBOL vmlinux 0x1a5e7c60 km_state_notify +EXPORT_SYMBOL vmlinux 0x1a5f1fb6 led_brightness_set +EXPORT_SYMBOL vmlinux 0x1a831be7 tcf_action_dump_1 +EXPORT_SYMBOL vmlinux 0x1a88a450 __lock_page +EXPORT_SYMBOL vmlinux 0x1a91663d pasemi_dma_free_buf +EXPORT_SYMBOL vmlinux 0x1a9ceb28 journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x1a9db25d __mod_zone_page_state +EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn +EXPORT_SYMBOL vmlinux 0x1acb5d40 dscr_default +EXPORT_SYMBOL vmlinux 0x1ace138d bitmap_allocate_region +EXPORT_SYMBOL vmlinux 0x1ae78c3c free_buffer_head +EXPORT_SYMBOL vmlinux 0x1ae8ccaa write_dirty_buffer +EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist +EXPORT_SYMBOL vmlinux 0x1b01717d key_validate +EXPORT_SYMBOL vmlinux 0x1b1ee800 neigh_lookup +EXPORT_SYMBOL vmlinux 0x1b2fc0b2 bio_add_pc_page +EXPORT_SYMBOL vmlinux 0x1b3a3f3e km_state_expired +EXPORT_SYMBOL vmlinux 0x1b3dd7db ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x1b3e4994 scsi_is_host_device +EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton +EXPORT_SYMBOL vmlinux 0x1b642840 devm_ioport_unmap +EXPORT_SYMBOL vmlinux 0x1b80a6a1 scsi_set_medium_removal +EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip +EXPORT_SYMBOL vmlinux 0x1b9e0ff1 scsilun_to_int +EXPORT_SYMBOL vmlinux 0x1ba0a2e2 file_update_time +EXPORT_SYMBOL vmlinux 0x1bc4ff03 tty_termios_hw_change +EXPORT_SYMBOL vmlinux 0x1bcafcb7 blk_queue_max_segments +EXPORT_SYMBOL vmlinux 0x1bd4f5eb skb_find_text +EXPORT_SYMBOL vmlinux 0x1bdc26cf sg_copy_from_buffer +EXPORT_SYMBOL vmlinux 0x1be5eb88 generic_splice_sendpage +EXPORT_SYMBOL vmlinux 0x1bfec830 __iounmap_at +EXPORT_SYMBOL vmlinux 0x1c200a7d pasemi_dma_stop_chan +EXPORT_SYMBOL vmlinux 0x1c29eaaf sock_no_ioctl +EXPORT_SYMBOL vmlinux 0x1c3e02e4 memcmp +EXPORT_SYMBOL vmlinux 0x1c4dab93 _lv1_connect_irq_plug +EXPORT_SYMBOL vmlinux 0x1c5b2c15 pmu_wait_complete +EXPORT_SYMBOL vmlinux 0x1c64dba6 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x1c80de9c ip_send_check +EXPORT_SYMBOL vmlinux 0x1c83750b get_user_pages +EXPORT_SYMBOL vmlinux 0x1c83c3c2 del_gendisk +EXPORT_SYMBOL vmlinux 0x1c961d80 scsi_device_put +EXPORT_SYMBOL vmlinux 0x1cc6719a register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x1cc77aa0 dquot_enable +EXPORT_SYMBOL vmlinux 0x1cda9c17 input_free_device +EXPORT_SYMBOL vmlinux 0x1ce409a3 tcp_close +EXPORT_SYMBOL vmlinux 0x1cfe8d51 locks_mandatory_area +EXPORT_SYMBOL vmlinux 0x1d1b1acb phy_start +EXPORT_SYMBOL vmlinux 0x1d1b1eaa console_start +EXPORT_SYMBOL vmlinux 0x1d1fae5c ps3_sb_event_receive_port_setup +EXPORT_SYMBOL vmlinux 0x1d2ffc98 generic_shutdown_super +EXPORT_SYMBOL vmlinux 0x1d31123e skb_pad +EXPORT_SYMBOL vmlinux 0x1d4750bc _lv1_stop_lpm +EXPORT_SYMBOL vmlinux 0x1d6aad64 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x1d6f561e tcp_splice_read +EXPORT_SYMBOL vmlinux 0x1d78a210 phy_print_status +EXPORT_SYMBOL vmlinux 0x1d808dc5 tty_wait_until_sent +EXPORT_SYMBOL vmlinux 0x1d814ace sync_inode +EXPORT_SYMBOL vmlinux 0x1da2ab49 mount_nodev +EXPORT_SYMBOL vmlinux 0x1daee28a percpu_counter_destroy +EXPORT_SYMBOL vmlinux 0x1db86dc8 dquot_initialize +EXPORT_SYMBOL vmlinux 0x1dbc4d0c proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0x1dc262ca mutex_unlock +EXPORT_SYMBOL vmlinux 0x1dc36131 fb_destroy_modedb +EXPORT_SYMBOL vmlinux 0x1dc56b44 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0x1dd571e6 fb_copy_cmap +EXPORT_SYMBOL vmlinux 0x1dedf942 cdrom_mode_sense +EXPORT_SYMBOL vmlinux 0x1df294fc of_find_property +EXPORT_SYMBOL vmlinux 0x1e0aa86b xfrm_policy_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x1e0b3b88 genlmsg_put +EXPORT_SYMBOL vmlinux 0x1e136d59 n_tty_compat_ioctl_helper +EXPORT_SYMBOL vmlinux 0x1e139ce5 con_copy_unimap +EXPORT_SYMBOL vmlinux 0x1e1f5f52 ___pskb_trim +EXPORT_SYMBOL vmlinux 0x1e25c15a generic_block_bmap +EXPORT_SYMBOL vmlinux 0x1e26be3b get_anon_bdev +EXPORT_SYMBOL vmlinux 0x1e381c12 max8925_reg_write +EXPORT_SYMBOL vmlinux 0x1e3cf616 tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x1e51ee66 dev_mc_add_global +EXPORT_SYMBOL vmlinux 0x1e52f028 blk_queue_physical_block_size +EXPORT_SYMBOL vmlinux 0x1e600deb netif_carrier_off +EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr +EXPORT_SYMBOL vmlinux 0x1e6fe6f1 idr_init +EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu +EXPORT_SYMBOL vmlinux 0x1eae46cd dev_notice +EXPORT_SYMBOL vmlinux 0x1ec7aef5 vfs_getattr +EXPORT_SYMBOL vmlinux 0x1eefcf54 kobject_set_name +EXPORT_SYMBOL vmlinux 0x1ef1f75f posix_acl_valid +EXPORT_SYMBOL vmlinux 0x1ef576d8 ppp_channel_index +EXPORT_SYMBOL vmlinux 0x1f05cfc5 bitmap_start_sync +EXPORT_SYMBOL vmlinux 0x1f0c2e99 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x1f1411f4 tty_port_carrier_raised +EXPORT_SYMBOL vmlinux 0x1f522836 compat_mc_setsockopt +EXPORT_SYMBOL vmlinux 0x1f7deab8 bh_submit_read +EXPORT_SYMBOL vmlinux 0x1f88bae5 input_set_keycode +EXPORT_SYMBOL vmlinux 0x1f8a7971 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x1f8d9d15 kblockd_schedule_work +EXPORT_SYMBOL vmlinux 0x1f8f1725 inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x1f9700eb dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x1f9e7714 max8925_set_bits +EXPORT_SYMBOL vmlinux 0x1fb556c5 bitmap_cond_end_sync +EXPORT_SYMBOL vmlinux 0x1fb8162b inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x1fb88fc9 lock_sock_nested +EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio +EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag +EXPORT_SYMBOL vmlinux 0x1fe1a191 pci_restore_state +EXPORT_SYMBOL vmlinux 0x1fe7b4ab pasemi_write_dma_reg +EXPORT_SYMBOL vmlinux 0x1fe912f1 netdev_alloc_frag +EXPORT_SYMBOL vmlinux 0x1fedf0f4 __request_region +EXPORT_SYMBOL vmlinux 0x1ff1340f dev_err +EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul +EXPORT_SYMBOL vmlinux 0x2002b7b0 d_find_any_alias +EXPORT_SYMBOL vmlinux 0x200eb4b7 blkdev_get_by_path +EXPORT_SYMBOL vmlinux 0x201494ee _lv1_net_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0x202434c2 swiotlb_map_sg +EXPORT_SYMBOL vmlinux 0x204b091c bdi_destroy +EXPORT_SYMBOL vmlinux 0x204b1959 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x205b1866 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x2072ee9b request_threaded_irq +EXPORT_SYMBOL vmlinux 0x20916d03 proc_mkdir +EXPORT_SYMBOL vmlinux 0x209b05be i2c_release_client +EXPORT_SYMBOL vmlinux 0x20a1a086 key_instantiate_and_link +EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data +EXPORT_SYMBOL vmlinux 0x20c55ae0 sscanf +EXPORT_SYMBOL vmlinux 0x20cf462b blk_queue_merge_bvec +EXPORT_SYMBOL vmlinux 0x20db125e dm_kcopyd_zero +EXPORT_SYMBOL vmlinux 0x20ee57b4 qdisc_destroy +EXPORT_SYMBOL vmlinux 0x210c46c2 __skb_get_rxhash +EXPORT_SYMBOL vmlinux 0x211ede5e macio_request_resource +EXPORT_SYMBOL vmlinux 0x2121c505 check_disk_change +EXPORT_SYMBOL vmlinux 0x2125b922 inet_frags_init +EXPORT_SYMBOL vmlinux 0x21315700 param_get_bool +EXPORT_SYMBOL vmlinux 0x213603bf pasemi_dma_free_ring +EXPORT_SYMBOL vmlinux 0x215d2991 vlan_dev_real_dev +EXPORT_SYMBOL vmlinux 0x215ebd78 bitrev16 +EXPORT_SYMBOL vmlinux 0x216b57c6 kill_block_super +EXPORT_SYMBOL vmlinux 0x2172c684 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x217cb10e skb_make_writable +EXPORT_SYMBOL vmlinux 0x21806fc0 get_io_context +EXPORT_SYMBOL vmlinux 0x21846f46 fsnotify_add_mark +EXPORT_SYMBOL vmlinux 0x21a6fd11 clear_user_page +EXPORT_SYMBOL vmlinux 0x21cf681b i2c_smbus_write_byte_data +EXPORT_SYMBOL vmlinux 0x21e56528 register_gifconf +EXPORT_SYMBOL vmlinux 0x21e7f181 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x21f678b9 clocksource_unregister +EXPORT_SYMBOL vmlinux 0x22058899 __brelse +EXPORT_SYMBOL vmlinux 0x22225ba8 __cleancache_invalidate_inode +EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq +EXPORT_SYMBOL vmlinux 0x2232bb1c skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x2232fbba sock_no_recvmsg +EXPORT_SYMBOL vmlinux 0x223d3aad agp_alloc_page_array +EXPORT_SYMBOL vmlinux 0x223fe550 padata_start +EXPORT_SYMBOL vmlinux 0x224d0ae8 prepare_kernel_cred +EXPORT_SYMBOL vmlinux 0x225749ba ab3100_event_register +EXPORT_SYMBOL vmlinux 0x225ebee6 _lv1_destruct_lpm +EXPORT_SYMBOL vmlinux 0x2276db98 kstrtoint +EXPORT_SYMBOL vmlinux 0x2278e94b slhc_remember +EXPORT_SYMBOL vmlinux 0x227ee531 blk_queue_bounce_limit +EXPORT_SYMBOL vmlinux 0x228a80f5 pci_get_device +EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x230c3722 idr_for_each +EXPORT_SYMBOL vmlinux 0x231ce2d1 free_inode_nonrcu +EXPORT_SYMBOL vmlinux 0x231d4001 fb_edid_add_monspecs +EXPORT_SYMBOL vmlinux 0x232000ca generic_permission +EXPORT_SYMBOL vmlinux 0x232ccb4d tty_port_close_start +EXPORT_SYMBOL vmlinux 0x233917d1 mac_vmode_to_var +EXPORT_SYMBOL vmlinux 0x235e90f3 __wake_up_bit +EXPORT_SYMBOL vmlinux 0x2369fb65 __wait_on_buffer +EXPORT_SYMBOL vmlinux 0x237e8729 __blk_end_request +EXPORT_SYMBOL vmlinux 0x238cee65 pci_enable_bridges +EXPORT_SYMBOL vmlinux 0x239cf845 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x23a574fd security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path +EXPORT_SYMBOL vmlinux 0x23c9891c kstrtoint_from_user +EXPORT_SYMBOL vmlinux 0x23e247ce scsi_mode_sense +EXPORT_SYMBOL vmlinux 0x23f2243d mempool_free +EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node +EXPORT_SYMBOL vmlinux 0x241482e3 log_wait_commit +EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page +EXPORT_SYMBOL vmlinux 0x24428be5 strncpy_from_user +EXPORT_SYMBOL vmlinux 0x244a2411 __first_cpu +EXPORT_SYMBOL vmlinux 0x244ff84b buffer_migrate_page +EXPORT_SYMBOL vmlinux 0x24562275 sock_map_fd +EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline +EXPORT_SYMBOL vmlinux 0x245a5a94 sleep_on_timeout +EXPORT_SYMBOL vmlinux 0x2464d8cb misc_deregister +EXPORT_SYMBOL vmlinux 0x2482e688 vsprintf +EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r +EXPORT_SYMBOL vmlinux 0x24894eda proto_unregister +EXPORT_SYMBOL vmlinux 0x24b43c1a xfrm_state_delete_tunnel +EXPORT_SYMBOL vmlinux 0x24bf9cd3 neigh_event_ns +EXPORT_SYMBOL vmlinux 0x24cfd438 _lv1_copy_lpm_trace_buffer +EXPORT_SYMBOL vmlinux 0x24d47690 agp_find_bridge +EXPORT_SYMBOL vmlinux 0x24fd65c3 bio_add_page +EXPORT_SYMBOL vmlinux 0x24fdac79 wake_bit_function +EXPORT_SYMBOL vmlinux 0x250a01fd deactivate_locked_super +EXPORT_SYMBOL vmlinux 0x25183f01 pmac_suspend_agp_for_card +EXPORT_SYMBOL vmlinux 0x251e6260 skb_put +EXPORT_SYMBOL vmlinux 0x25248b28 pci_setup_cardbus +EXPORT_SYMBOL vmlinux 0x25277497 rfkill_register +EXPORT_SYMBOL vmlinux 0x252dd020 pci_request_regions +EXPORT_SYMBOL vmlinux 0x253ae6bd atomic_dec_and_mutex_lock +EXPORT_SYMBOL vmlinux 0x253bdb78 param_get_int +EXPORT_SYMBOL vmlinux 0x256192e8 ab3100_event_unregister +EXPORT_SYMBOL vmlinux 0x25655b9d ps3_dma_region_init +EXPORT_SYMBOL vmlinux 0x256f8e8c vfs_fsync_range +EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid +EXPORT_SYMBOL vmlinux 0x258fa5d7 security_inode_setsecctx +EXPORT_SYMBOL vmlinux 0x25ad5b5a pci_bus_read_config_dword +EXPORT_SYMBOL vmlinux 0x25b6b8f7 _lv1_set_spe_transition_notifier +EXPORT_SYMBOL vmlinux 0x25c677c4 mac_pton +EXPORT_SYMBOL vmlinux 0x25c979cf __lock_buffer +EXPORT_SYMBOL vmlinux 0x25e42f42 md_finish_reshape +EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions +EXPORT_SYMBOL vmlinux 0x26477c07 __vmalloc +EXPORT_SYMBOL vmlinux 0x264f2426 dcache_dir_lseek +EXPORT_SYMBOL vmlinux 0x2665d53a key_create_or_update +EXPORT_SYMBOL vmlinux 0x2685c3d7 __sg_alloc_table +EXPORT_SYMBOL vmlinux 0x26b760c4 slhc_init +EXPORT_SYMBOL vmlinux 0x26c8f408 sk_free +EXPORT_SYMBOL vmlinux 0x26cc403d sk_stream_wait_connect +EXPORT_SYMBOL vmlinux 0x26e4751d __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x26e76fb8 sysctl_udp_wmem_min +EXPORT_SYMBOL vmlinux 0x27068896 inet_stream_ops +EXPORT_SYMBOL vmlinux 0x27277915 vm_stat +EXPORT_SYMBOL vmlinux 0x274d08dc __kfifo_dma_out_prepare +EXPORT_SYMBOL vmlinux 0x275b3973 blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0x27646df3 start_thread +EXPORT_SYMBOL vmlinux 0x276e2a5a user_path_create +EXPORT_SYMBOL vmlinux 0x27864d57 memparse +EXPORT_SYMBOL vmlinux 0x27a583dd pci_set_dma_max_seg_size +EXPORT_SYMBOL vmlinux 0x27b46b20 d_find_alias +EXPORT_SYMBOL vmlinux 0x27b9d84f skb_prepare_seq_read +EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync +EXPORT_SYMBOL vmlinux 0x27c2197f param_set_short +EXPORT_SYMBOL vmlinux 0x27ca4564 user_path_at +EXPORT_SYMBOL vmlinux 0x27e1a049 printk +EXPORT_SYMBOL vmlinux 0x27e81f96 of_scan_pci_bridge +EXPORT_SYMBOL vmlinux 0x27f19047 thaw_super +EXPORT_SYMBOL vmlinux 0x27fe51b6 pci_wake_from_d3 +EXPORT_SYMBOL vmlinux 0x280869b3 __inet6_lookup_established +EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek +EXPORT_SYMBOL vmlinux 0x2823dc7a bio_integrity_split +EXPORT_SYMBOL vmlinux 0x282e3984 __dquot_free_space +EXPORT_SYMBOL vmlinux 0x28318305 snprintf +EXPORT_SYMBOL vmlinux 0x2849f48c dev_crit +EXPORT_SYMBOL vmlinux 0x28616a72 complete_request_key +EXPORT_SYMBOL vmlinux 0x28775e7f may_umount +EXPORT_SYMBOL vmlinux 0x2889415d generic_pipe_buf_steal +EXPORT_SYMBOL vmlinux 0x289872d9 consume_skb +EXPORT_SYMBOL vmlinux 0x28a2ed02 scsi_build_sense_buffer +EXPORT_SYMBOL vmlinux 0x28abfe6e scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x28bffbed scsi_add_host_with_dma +EXPORT_SYMBOL vmlinux 0x28f57c50 generic_file_splice_write +EXPORT_SYMBOL vmlinux 0x291f6b8f scsi_host_set_state +EXPORT_SYMBOL vmlinux 0x2937fd63 account_page_redirty +EXPORT_SYMBOL vmlinux 0x29537c9e alloc_chrdev_region +EXPORT_SYMBOL vmlinux 0x2960019b eeh_check_failure +EXPORT_SYMBOL vmlinux 0x29603113 abx500_get_chip_id +EXPORT_SYMBOL vmlinux 0x299d5da8 tcp_v4_tw_get_peer +EXPORT_SYMBOL vmlinux 0x29bf8290 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0x29c4ac05 seq_release +EXPORT_SYMBOL vmlinux 0x29d73d03 ida_init +EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature +EXPORT_SYMBOL vmlinux 0x2a3783ee mutex_trylock +EXPORT_SYMBOL vmlinux 0x2a37d074 dma_pool_free +EXPORT_SYMBOL vmlinux 0x2a6aae02 get_phy_device +EXPORT_SYMBOL vmlinux 0x2a79f62c nf_log_packet +EXPORT_SYMBOL vmlinux 0x2a8b0d3b dev_get_by_flags_rcu +EXPORT_SYMBOL vmlinux 0x2acbcced d_alloc_pseudo +EXPORT_SYMBOL vmlinux 0x2adb71fb compat_sock_get_timestamp +EXPORT_SYMBOL vmlinux 0x2ae6cc25 sock_wfree +EXPORT_SYMBOL vmlinux 0x2b0ba2b0 scsi_sense_desc_find +EXPORT_SYMBOL vmlinux 0x2b21eb9b km_new_mapping +EXPORT_SYMBOL vmlinux 0x2b2ce78b kstrtos8 +EXPORT_SYMBOL vmlinux 0x2b3d5f44 pci_set_mwi +EXPORT_SYMBOL vmlinux 0x2b43aa5a inc_nlink +EXPORT_SYMBOL vmlinux 0x2b481b7d get_unmapped_area +EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba707a8 sysctl_tcp_low_latency +EXPORT_SYMBOL vmlinux 0x2ba8d08c scsi_ioctl +EXPORT_SYMBOL vmlinux 0x2bd1e741 mmc_power_restore_host +EXPORT_SYMBOL vmlinux 0x2bdd3710 netif_rx +EXPORT_SYMBOL vmlinux 0x2c12c0d2 netdev_alert +EXPORT_SYMBOL vmlinux 0x2c139565 pci_scan_slot +EXPORT_SYMBOL vmlinux 0x2c1cd4a4 cpu_present_mask +EXPORT_SYMBOL vmlinux 0x2c23dd7c sock_no_sendpage +EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar +EXPORT_SYMBOL vmlinux 0x2c47ef2e qdisc_tree_decrease_qlen +EXPORT_SYMBOL vmlinux 0x2c4c7997 _lv1_construct_lpm +EXPORT_SYMBOL vmlinux 0x2c4d72bc napi_gro_frags +EXPORT_SYMBOL vmlinux 0x2c70f607 sock_no_getsockopt +EXPORT_SYMBOL vmlinux 0x2c7b1fca down_timeout +EXPORT_SYMBOL vmlinux 0x2c919c63 gen_new_estimator +EXPORT_SYMBOL vmlinux 0x2cabb9fc nf_getsockopt +EXPORT_SYMBOL vmlinux 0x2cb66a59 in_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x2cedabcb tty_check_change +EXPORT_SYMBOL vmlinux 0x2cf73cb7 kstrtoll_from_user +EXPORT_SYMBOL vmlinux 0x2cf9f7dd inode_dio_done +EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock +EXPORT_SYMBOL vmlinux 0x2d15464e i2c_verify_client +EXPORT_SYMBOL vmlinux 0x2d3f3fc4 alloc_buffer_head +EXPORT_SYMBOL vmlinux 0x2d7d2767 _lv1_set_lpm_group_control +EXPORT_SYMBOL vmlinux 0x2d89342a scsi_show_sense_hdr +EXPORT_SYMBOL vmlinux 0x2db1b321 pid_task +EXPORT_SYMBOL vmlinux 0x2db1e0c6 dql_init +EXPORT_SYMBOL vmlinux 0x2db3638c pcibios_bus_to_resource +EXPORT_SYMBOL vmlinux 0x2db4c99b flush_delayed_work +EXPORT_SYMBOL vmlinux 0x2dbdd850 elv_dispatch_sort +EXPORT_SYMBOL vmlinux 0x2de1de52 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x2debb425 __qdisc_calculate_pkt_len +EXPORT_SYMBOL vmlinux 0x2deda4a1 security_sk_classify_flow +EXPORT_SYMBOL vmlinux 0x2df885f1 d_rehash +EXPORT_SYMBOL vmlinux 0x2e0a462a unregister_binfmt +EXPORT_SYMBOL vmlinux 0x2e0bc3d4 paca +EXPORT_SYMBOL vmlinux 0x2e175234 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x2e1bef92 eeh_subsystem_enabled +EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat +EXPORT_SYMBOL vmlinux 0x2e2ce9e0 sysctl_tcp_syncookies +EXPORT_SYMBOL vmlinux 0x2e4caec5 seq_escape +EXPORT_SYMBOL vmlinux 0x2e569181 unregister_con_driver +EXPORT_SYMBOL vmlinux 0x2e7aa0ad cdrom_ioctl +EXPORT_SYMBOL vmlinux 0x2e8ad324 generic_fillattr +EXPORT_SYMBOL vmlinux 0x2e8d6638 netif_device_detach +EXPORT_SYMBOL vmlinux 0x2e93495e _lv1_write_htab_entry +EXPORT_SYMBOL vmlinux 0x2e96dccd genphy_update_link +EXPORT_SYMBOL vmlinux 0x2ed40bd3 of_find_matching_node +EXPORT_SYMBOL vmlinux 0x2ee1f956 idr_pre_get +EXPORT_SYMBOL vmlinux 0x2ee4337f smu_queue_cmd +EXPORT_SYMBOL vmlinux 0x2eea0203 blk_queue_logical_block_size +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 0x2f287f0d copy_to_user +EXPORT_SYMBOL vmlinux 0x2f2fcf97 tcp_md5_do_del +EXPORT_SYMBOL vmlinux 0x2f338c34 of_device_register +EXPORT_SYMBOL vmlinux 0x2f39b033 __sk_mem_schedule +EXPORT_SYMBOL vmlinux 0x2f529a45 tcf_em_tree_destroy +EXPORT_SYMBOL vmlinux 0x2f5dbc61 scsi_cmd_get_serial +EXPORT_SYMBOL vmlinux 0x2f6207a7 blk_rq_map_user +EXPORT_SYMBOL vmlinux 0x2f8adb62 skb_clone +EXPORT_SYMBOL vmlinux 0x2fae96de rtas_data_buf_lock +EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness +EXPORT_SYMBOL vmlinux 0x2fc66e92 pci_iounmap +EXPORT_SYMBOL vmlinux 0x2fcf740d idr_get_new_above +EXPORT_SYMBOL vmlinux 0x2fe64438 pci_disable_msi +EXPORT_SYMBOL vmlinux 0x2fedaeba blk_queue_stack_limits +EXPORT_SYMBOL vmlinux 0x30097059 ip_nat_decode_session +EXPORT_SYMBOL vmlinux 0x30226ddf agp_device_command +EXPORT_SYMBOL vmlinux 0x303970c2 bitmap_endwrite +EXPORT_SYMBOL vmlinux 0x305f752f fsnotify_put_group +EXPORT_SYMBOL vmlinux 0x30633215 thermal_zone_device_register +EXPORT_SYMBOL vmlinux 0x3064dc95 skb_copy_and_csum_dev +EXPORT_SYMBOL vmlinux 0x3067dd40 sock_no_listen +EXPORT_SYMBOL vmlinux 0x307a3331 input_grab_device +EXPORT_SYMBOL vmlinux 0x307c2fd0 generic_check_addressable +EXPORT_SYMBOL vmlinux 0x30820e8c bio_sector_offset +EXPORT_SYMBOL vmlinux 0x3097a452 jbd2_journal_get_create_access +EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user +EXPORT_SYMBOL vmlinux 0x30ad7702 uart_match_port +EXPORT_SYMBOL vmlinux 0x30baaa19 noop_qdisc +EXPORT_SYMBOL vmlinux 0x30cada8f radix_tree_next_hole +EXPORT_SYMBOL vmlinux 0x30d70fa9 of_get_pci_address +EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages +EXPORT_SYMBOL vmlinux 0x310b4821 __put_cred +EXPORT_SYMBOL vmlinux 0x312cfaf2 _lv1_disable_logical_spe +EXPORT_SYMBOL vmlinux 0x312ff4e7 tty_port_block_til_ready +EXPORT_SYMBOL vmlinux 0x31383d58 dev_warn +EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present +EXPORT_SYMBOL vmlinux 0x3147857d default_red +EXPORT_SYMBOL vmlinux 0x315b019d pci_bus_read_dev_vendor_id +EXPORT_SYMBOL vmlinux 0x315b0505 wait_on_sync_kiocb +EXPORT_SYMBOL vmlinux 0x315c65fd zlib_deflateInit2 +EXPORT_SYMBOL vmlinux 0x315d491b fddi_change_mtu +EXPORT_SYMBOL vmlinux 0x317febbb vga_put +EXPORT_SYMBOL vmlinux 0x31829275 nla_put +EXPORT_SYMBOL vmlinux 0x318cadb1 reciprocal_value +EXPORT_SYMBOL vmlinux 0x3192aa9b mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0x319e0726 __tracepoint_kmalloc +EXPORT_SYMBOL vmlinux 0x31b515a3 current_fs_time +EXPORT_SYMBOL vmlinux 0x31b7a020 dev_get_flags +EXPORT_SYMBOL vmlinux 0x31b7f300 _lv1_set_lpm_signal +EXPORT_SYMBOL vmlinux 0x31cd509a _lv1_net_control +EXPORT_SYMBOL vmlinux 0x31ce7538 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x31d2a2f5 blk_queue_dma_alignment +EXPORT_SYMBOL vmlinux 0x31e2eeae skb_kill_datagram +EXPORT_SYMBOL vmlinux 0x31f119f6 tcp_gro_receive +EXPORT_SYMBOL vmlinux 0x31ffbe74 mmc_can_trim +EXPORT_SYMBOL vmlinux 0x327b9c1b pmu_poll_adb +EXPORT_SYMBOL vmlinux 0x328041c5 uart_write_wakeup +EXPORT_SYMBOL vmlinux 0x3282842a twl6040_irq_exit +EXPORT_SYMBOL vmlinux 0x329c652a of_find_node_by_name +EXPORT_SYMBOL vmlinux 0x32cadbcc pneigh_lookup +EXPORT_SYMBOL vmlinux 0x32e6d3ef get_write_access +EXPORT_SYMBOL vmlinux 0x3301d691 pci_enable_msi_block +EXPORT_SYMBOL vmlinux 0x33256585 ata_print_version +EXPORT_SYMBOL vmlinux 0x33309336 netdev_printk +EXPORT_SYMBOL vmlinux 0x333cb37c __kfifo_dma_out_prepare_r +EXPORT_SYMBOL vmlinux 0x334b2391 loop_register_transfer +EXPORT_SYMBOL vmlinux 0x335c883f dma_async_memcpy_pg_to_pg +EXPORT_SYMBOL vmlinux 0x33624e68 dev_add_pack +EXPORT_SYMBOL vmlinux 0x336f0fc0 mb_cache_shrink +EXPORT_SYMBOL vmlinux 0x33a986ad __set_page_dirty_buffers +EXPORT_SYMBOL vmlinux 0x33b3ce13 kern_unmount +EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33bbe045 scsi_execute_req +EXPORT_SYMBOL vmlinux 0x33e4e9e7 dev_driver_string +EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max +EXPORT_SYMBOL vmlinux 0x33fa97d5 scsi_cmd_ioctl +EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r +EXPORT_SYMBOL vmlinux 0x34184afe current_kernel_time +EXPORT_SYMBOL vmlinux 0x344adbd5 init_cdrom_command +EXPORT_SYMBOL vmlinux 0x346c4ded rwsem_down_write_failed +EXPORT_SYMBOL vmlinux 0x347013de nla_validate +EXPORT_SYMBOL vmlinux 0x3482b3b4 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0x34893536 remap_pfn_range +EXPORT_SYMBOL vmlinux 0x349cba85 strchr +EXPORT_SYMBOL vmlinux 0x349f912c filemap_fdatawrite_range +EXPORT_SYMBOL vmlinux 0x34c8982c agp_generic_enable +EXPORT_SYMBOL vmlinux 0x34d1db6d mmc_cd_gpio_free +EXPORT_SYMBOL vmlinux 0x34f31e99 filemap_fdatawait +EXPORT_SYMBOL vmlinux 0x350238e6 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy +EXPORT_SYMBOL vmlinux 0x3557cf90 bio_alloc_bioset +EXPORT_SYMBOL vmlinux 0x357c90d2 qdisc_put_stab +EXPORT_SYMBOL vmlinux 0x3582e2cb tty_schedule_flip +EXPORT_SYMBOL vmlinux 0x358362f5 abort_creds +EXPORT_SYMBOL vmlinux 0x3592ea83 blk_queue_resize_tags +EXPORT_SYMBOL vmlinux 0x35b6b772 param_ops_charp +EXPORT_SYMBOL vmlinux 0x35ca8cfa dm_kcopyd_client_create +EXPORT_SYMBOL vmlinux 0x35d6de42 kmalloc_caches +EXPORT_SYMBOL vmlinux 0x35defc50 iov_iter_advance +EXPORT_SYMBOL vmlinux 0x35eb59dd bio_copy_kern +EXPORT_SYMBOL vmlinux 0x3625c57e sys_copyarea +EXPORT_SYMBOL vmlinux 0x3634258c generic_removexattr +EXPORT_SYMBOL vmlinux 0x365096fa skb_checksum_help +EXPORT_SYMBOL vmlinux 0x3654bbcd inet_csk_clear_xmit_timers +EXPORT_SYMBOL vmlinux 0x3676b834 kernel_bind +EXPORT_SYMBOL vmlinux 0x36907117 setup_arg_pages +EXPORT_SYMBOL vmlinux 0x369e1115 kstrtou8_from_user +EXPORT_SYMBOL vmlinux 0x36b0e732 try_wait_for_completion +EXPORT_SYMBOL vmlinux 0x36e12e3f cdev_add +EXPORT_SYMBOL vmlinux 0x36e360e3 __hw_addr_add_multiple +EXPORT_SYMBOL vmlinux 0x36e4f939 pci_write_vpd +EXPORT_SYMBOL vmlinux 0x36f3f41c __cleancache_init_shared_fs +EXPORT_SYMBOL vmlinux 0x36fbad6d inet_sk_rebuild_header +EXPORT_SYMBOL vmlinux 0x3708b892 cancel_dirty_page +EXPORT_SYMBOL vmlinux 0x371902e9 _lv1_get_lpm_interrupt_status +EXPORT_SYMBOL vmlinux 0x37199b46 pci_assign_resource +EXPORT_SYMBOL vmlinux 0x371d2130 check_legacy_ioport +EXPORT_SYMBOL vmlinux 0x372823f1 end_page_writeback +EXPORT_SYMBOL vmlinux 0x372f5bb1 agp_allocate_memory +EXPORT_SYMBOL vmlinux 0x37333519 tcp_v4_md5_lookup +EXPORT_SYMBOL vmlinux 0x37344510 proc_dointvec_ms_jiffies +EXPORT_SYMBOL vmlinux 0x37383edd rtas_get_power_level +EXPORT_SYMBOL vmlinux 0x3739f8b0 set_bh_page +EXPORT_SYMBOL vmlinux 0x3744cf36 vmalloc_to_pfn +EXPORT_SYMBOL vmlinux 0x377244bf __bio_clone +EXPORT_SYMBOL vmlinux 0x37a12ca9 posix_unblock_lock +EXPORT_SYMBOL vmlinux 0x37b777df param_set_copystring +EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs +EXPORT_SYMBOL vmlinux 0x37df86d0 i2c_smbus_read_block_data +EXPORT_SYMBOL vmlinux 0x37f18372 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0x37f945c2 lock_super +EXPORT_SYMBOL vmlinux 0x3803f960 devm_ioport_map +EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus +EXPORT_SYMBOL vmlinux 0x382777ab _lv1_gpu_context_allocate +EXPORT_SYMBOL vmlinux 0x382b940f pagevec_lookup_tag +EXPORT_SYMBOL vmlinux 0x38341d3f tcp_initialize_rcv_mss +EXPORT_SYMBOL vmlinux 0x38546d9e blk_queue_io_opt +EXPORT_SYMBOL vmlinux 0x3857f046 compat_nf_setsockopt +EXPORT_SYMBOL vmlinux 0x38642557 journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0x38644479 dev_kfree_skb_any +EXPORT_SYMBOL vmlinux 0x3869bc50 seq_release_private +EXPORT_SYMBOL vmlinux 0x3878c76e inet_frag_kill +EXPORT_SYMBOL vmlinux 0x38823c1a max8998_read_reg +EXPORT_SYMBOL vmlinux 0x38869d88 kstat +EXPORT_SYMBOL vmlinux 0x388f9128 xfrm_state_walk_done +EXPORT_SYMBOL vmlinux 0x38a331b7 journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list +EXPORT_SYMBOL vmlinux 0x38a944d6 fib_default_rule_pref +EXPORT_SYMBOL vmlinux 0x38ce60d1 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x38e13409 skb_queue_purge +EXPORT_SYMBOL vmlinux 0x38f39760 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0x38fb9933 tty_std_termios +EXPORT_SYMBOL vmlinux 0x391affe8 ilookup5 +EXPORT_SYMBOL vmlinux 0x391dee36 dm_register_target +EXPORT_SYMBOL vmlinux 0x39250ab5 fasync_helper +EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling +EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r +EXPORT_SYMBOL vmlinux 0x3980aac1 unregister_reboot_notifier +EXPORT_SYMBOL vmlinux 0x398d9c87 blk_start_request +EXPORT_SYMBOL vmlinux 0x398ea7c6 bio_put +EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x39cdf63c wait_for_completion_interruptible +EXPORT_SYMBOL vmlinux 0x39d4e063 ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x39ea0a1c macio_unregister_driver +EXPORT_SYMBOL vmlinux 0x39fa3fc3 __pci_remove_bus_device +EXPORT_SYMBOL vmlinux 0x3a09a506 abx500_remove_ops +EXPORT_SYMBOL vmlinux 0x3a17e5e4 iov_iter_single_seg_count +EXPORT_SYMBOL vmlinux 0x3a20ff73 __crc32c_le +EXPORT_SYMBOL vmlinux 0x3a431304 simple_dir_operations +EXPORT_SYMBOL vmlinux 0x3a5f50b8 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0x3a7f525c i2c_master_send +EXPORT_SYMBOL vmlinux 0x3a9b6fb9 blk_unregister_region +EXPORT_SYMBOL vmlinux 0x3aa93a8c kill_litter_super +EXPORT_SYMBOL vmlinux 0x3abbaeae netpoll_parse_options +EXPORT_SYMBOL vmlinux 0x3ac9ec90 stop_tty +EXPORT_SYMBOL vmlinux 0x3adfa5ae sock_no_getname +EXPORT_SYMBOL vmlinux 0x3af3a69c kernel_sendpage +EXPORT_SYMBOL vmlinux 0x3af9f59a scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x3b086d27 mmc_detect_card_removed +EXPORT_SYMBOL vmlinux 0x3b18e463 netdev_change_features +EXPORT_SYMBOL vmlinux 0x3b1dc678 vfs_symlink +EXPORT_SYMBOL vmlinux 0x3b1f143f dquot_quota_on +EXPORT_SYMBOL vmlinux 0x3b238139 tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0x3b23a5c3 notify_change +EXPORT_SYMBOL vmlinux 0x3b2c1903 xfrm_state_register_afinfo +EXPORT_SYMBOL vmlinux 0x3b2e0c35 vfs_write +EXPORT_SYMBOL vmlinux 0x3b3016d3 cpufreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0x3b615a21 wait_for_completion_killable +EXPORT_SYMBOL vmlinux 0x3b7f3061 xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0x3b7f6a2f gen_pool_create +EXPORT_SYMBOL vmlinux 0x3bc9c1c1 wake_up_process +EXPORT_SYMBOL vmlinux 0x3bd1b1f6 msecs_to_jiffies +EXPORT_SYMBOL vmlinux 0x3bdbcfdd poll_schedule_timeout +EXPORT_SYMBOL vmlinux 0x3bef03b9 flow_cache_lookup +EXPORT_SYMBOL vmlinux 0x3c1eca1a pci_vpd_truncate +EXPORT_SYMBOL vmlinux 0x3c3fc301 __cleancache_invalidate_page +EXPORT_SYMBOL vmlinux 0x3c42966f iw_handler_set_thrspy +EXPORT_SYMBOL vmlinux 0x3c45f1d4 input_unregister_device +EXPORT_SYMBOL vmlinux 0x3c526d8c revalidate_disk +EXPORT_SYMBOL vmlinux 0x3c6449ec inet_addr_type +EXPORT_SYMBOL vmlinux 0x3c6c40c7 blkdev_put +EXPORT_SYMBOL vmlinux 0x3c80c06c kstrtoull +EXPORT_SYMBOL vmlinux 0x3c9d1211 string_get_size +EXPORT_SYMBOL vmlinux 0x3ca27679 install_exec_creds +EXPORT_SYMBOL vmlinux 0x3ca38615 mntget +EXPORT_SYMBOL vmlinux 0x3cc4b0dc lg_lock_init +EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3d488ca1 sget +EXPORT_SYMBOL vmlinux 0x3d5844b3 strnicmp +EXPORT_SYMBOL vmlinux 0x3d65a8f1 register_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x3d7bfa5b tcp_init_xmit_timers +EXPORT_SYMBOL vmlinux 0x3d8f7b28 dma_async_device_register +EXPORT_SYMBOL vmlinux 0x3d93ee61 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x3d969424 journal_init_dev +EXPORT_SYMBOL vmlinux 0x3dbe7403 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data +EXPORT_SYMBOL vmlinux 0x3dce3003 sg_miter_start +EXPORT_SYMBOL vmlinux 0x3dcfa409 vfs_statfs +EXPORT_SYMBOL vmlinux 0x3dd356ef netif_notify_peers +EXPORT_SYMBOL vmlinux 0x3deee8bd inet_dgram_ops +EXPORT_SYMBOL vmlinux 0x3df5f432 bh_uptodate_or_lock +EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head +EXPORT_SYMBOL vmlinux 0x3e286dca _lv1_get_rtc +EXPORT_SYMBOL vmlinux 0x3e3be893 skb_checksum +EXPORT_SYMBOL vmlinux 0x3e3c5373 mount_subtree +EXPORT_SYMBOL vmlinux 0x3e45e9ff register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x3e4ea00f sock_update_classid +EXPORT_SYMBOL vmlinux 0x3e50f785 kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x3e817c61 mmc_regulator_set_ocr +EXPORT_SYMBOL vmlinux 0x3e882943 pcibios_align_resource +EXPORT_SYMBOL vmlinux 0x3e904a79 scsi_execute +EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync +EXPORT_SYMBOL vmlinux 0x3e959c5a pci_bus_type +EXPORT_SYMBOL vmlinux 0x3e9c58fe fb_get_buffer_offset +EXPORT_SYMBOL vmlinux 0x3eae292f param_set_byte +EXPORT_SYMBOL vmlinux 0x3eaf291d param_get_string +EXPORT_SYMBOL vmlinux 0x3ec16c3b in_group_p +EXPORT_SYMBOL vmlinux 0x3ed63055 zlib_inflateReset +EXPORT_SYMBOL vmlinux 0x3ee101c2 register_quota_format +EXPORT_SYMBOL vmlinux 0x3ef04a15 __ip_dev_find +EXPORT_SYMBOL vmlinux 0x3ef88a4c cad_pid +EXPORT_SYMBOL vmlinux 0x3efec367 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x3f0546a8 ioread32_rep +EXPORT_SYMBOL vmlinux 0x3f06a656 _lv1_construct_event_receive_port +EXPORT_SYMBOL vmlinux 0x3f1bda5a cdev_init +EXPORT_SYMBOL vmlinux 0x3f406a3b enable_kernel_altivec +EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd +EXPORT_SYMBOL vmlinux 0x3f6975fa md_wakeup_thread +EXPORT_SYMBOL vmlinux 0x3f9963c8 d_drop +EXPORT_SYMBOL vmlinux 0x3fa54c3d scsi_remove_target +EXPORT_SYMBOL vmlinux 0x3fae99bf inet6_add_protocol +EXPORT_SYMBOL vmlinux 0x3fb5d3d7 page_put_link +EXPORT_SYMBOL vmlinux 0x3fbfd6ed _lv1_gpu_open +EXPORT_SYMBOL vmlinux 0x3fcd7070 of_dev_put +EXPORT_SYMBOL vmlinux 0x3fe0d1c0 slhc_free +EXPORT_SYMBOL vmlinux 0x3fec048f sg_next +EXPORT_SYMBOL vmlinux 0x3ff62317 local_bh_disable +EXPORT_SYMBOL vmlinux 0x3ff8e495 lg_local_unlock_cpu +EXPORT_SYMBOL vmlinux 0x4001de02 sock_no_connect +EXPORT_SYMBOL vmlinux 0x401c0a99 xfrm_policy_insert +EXPORT_SYMBOL vmlinux 0x402b8281 __request_module +EXPORT_SYMBOL vmlinux 0x404303dd generic_file_aio_write +EXPORT_SYMBOL vmlinux 0x405c1144 get_seconds +EXPORT_SYMBOL vmlinux 0x4077633b tcp_check_req +EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem +EXPORT_SYMBOL vmlinux 0x40a27c37 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc +EXPORT_SYMBOL vmlinux 0x40c39634 mark_buffer_async_write +EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo +EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock +EXPORT_SYMBOL vmlinux 0x40eacea5 netpoll_cleanup +EXPORT_SYMBOL vmlinux 0x40f9e658 generic_file_splice_read +EXPORT_SYMBOL vmlinux 0x41047a16 ppp_input_error +EXPORT_SYMBOL vmlinux 0x410b1816 wireless_spy_update +EXPORT_SYMBOL vmlinux 0x413002dc sock_wake_async +EXPORT_SYMBOL vmlinux 0x41302c46 __splice_from_pipe +EXPORT_SYMBOL vmlinux 0x41361807 _lv1_get_logical_ppe_id +EXPORT_SYMBOL vmlinux 0x413cf822 pm860x_page_bulk_write +EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user +EXPORT_SYMBOL vmlinux 0x4159c38f ioremap_wc +EXPORT_SYMBOL vmlinux 0x4166b77a tty_hung_up_p +EXPORT_SYMBOL vmlinux 0x41773582 mmc_start_req +EXPORT_SYMBOL vmlinux 0x41779437 tcf_hash_lookup +EXPORT_SYMBOL vmlinux 0x418257fb netdev_crit +EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time +EXPORT_SYMBOL vmlinux 0x419b6f46 netpoll_send_udp +EXPORT_SYMBOL vmlinux 0x41b8958e end_buffer_write_sync +EXPORT_SYMBOL vmlinux 0x41dbf4de _lv1_start_lpm +EXPORT_SYMBOL vmlinux 0x41dca4bb inode_add_bytes +EXPORT_SYMBOL vmlinux 0x41ddda4e devm_ioremap_nocache +EXPORT_SYMBOL vmlinux 0x41f0c835 pci_disable_ido +EXPORT_SYMBOL vmlinux 0x41fca9d5 thermal_zone_bind_cooling_device +EXPORT_SYMBOL vmlinux 0x41fcc442 scsi_finish_command +EXPORT_SYMBOL vmlinux 0x420cac57 uart_update_timeout +EXPORT_SYMBOL vmlinux 0x4211c3c1 zlib_inflateInit2 +EXPORT_SYMBOL vmlinux 0x42175572 find_lock_page +EXPORT_SYMBOL vmlinux 0x422c413a bio_init +EXPORT_SYMBOL vmlinux 0x422e491d __find_get_block +EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force +EXPORT_SYMBOL vmlinux 0x428a5c51 journal_get_undo_access +EXPORT_SYMBOL vmlinux 0x4296860c node_data +EXPORT_SYMBOL vmlinux 0x42977ad4 __hw_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x42a9b02c journal_start_commit +EXPORT_SYMBOL vmlinux 0x42d72d9d block_write_end +EXPORT_SYMBOL vmlinux 0x42ebf424 proto_register +EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages +EXPORT_SYMBOL vmlinux 0x432a48cd input_mt_report_finger_count +EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x436c2179 iowrite32 +EXPORT_SYMBOL vmlinux 0x438aa710 rt6_lookup +EXPORT_SYMBOL vmlinux 0x4394cf25 dst_release +EXPORT_SYMBOL vmlinux 0x43a01f90 complete_all +EXPORT_SYMBOL vmlinux 0x43a0458b blk_start_plug +EXPORT_SYMBOL vmlinux 0x43b7905a mii_nway_restart +EXPORT_SYMBOL vmlinux 0x43e32771 init_special_inode +EXPORT_SYMBOL vmlinux 0x43ec72bc devm_gpio_request_one +EXPORT_SYMBOL vmlinux 0x43f23311 dm_table_get_md +EXPORT_SYMBOL vmlinux 0x44055db2 update_region +EXPORT_SYMBOL vmlinux 0x4410da55 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0x443d9f2a follow_down +EXPORT_SYMBOL vmlinux 0x4468ee4a __scm_send +EXPORT_SYMBOL vmlinux 0x4470a79b param_ops_long +EXPORT_SYMBOL vmlinux 0x4470efc3 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x4482512b of_parse_phandle_with_args +EXPORT_SYMBOL vmlinux 0x44833b34 bio_integrity_clone +EXPORT_SYMBOL vmlinux 0x448eac3e kmemdup +EXPORT_SYMBOL vmlinux 0x44a207cd simple_dir_inode_operations +EXPORT_SYMBOL vmlinux 0x44a22c4d d_prune_aliases +EXPORT_SYMBOL vmlinux 0x44a656da udp_poll +EXPORT_SYMBOL vmlinux 0x44b911c3 rb_replace_node +EXPORT_SYMBOL vmlinux 0x44d14f30 vfs_create +EXPORT_SYMBOL vmlinux 0x44df106d tcp_child_process +EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44eb192e wait_for_completion +EXPORT_SYMBOL vmlinux 0x451aa464 file_remove_suid +EXPORT_SYMBOL vmlinux 0x452ebe86 schedule_delayed_work_on +EXPORT_SYMBOL vmlinux 0x45319c6c scsi_bios_ptable +EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled +EXPORT_SYMBOL vmlinux 0x4550ba8a register_cpu_notifier +EXPORT_SYMBOL vmlinux 0x45617dd5 mmc_align_data_size +EXPORT_SYMBOL vmlinux 0x4564459b _lv1_set_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x4564701d pci_release_region +EXPORT_SYMBOL vmlinux 0x456dee33 dev_set_promiscuity +EXPORT_SYMBOL vmlinux 0x4578a667 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user +EXPORT_SYMBOL vmlinux 0x457b02cf blk_integrity_merge_bio +EXPORT_SYMBOL vmlinux 0x45a55ec8 __iounmap +EXPORT_SYMBOL vmlinux 0x45a765cf pci_add_resource +EXPORT_SYMBOL vmlinux 0x45bd9efd dm_table_put +EXPORT_SYMBOL vmlinux 0x45c1b3c9 fb_validate_mode +EXPORT_SYMBOL vmlinux 0x45cfe80b pasemi_dma_free_flag +EXPORT_SYMBOL vmlinux 0x45d216b9 tcp_put_md5sig_pool +EXPORT_SYMBOL vmlinux 0x4610e413 clear_nlink +EXPORT_SYMBOL vmlinux 0x4612c59d down_trylock +EXPORT_SYMBOL vmlinux 0x46130824 i2c_smbus_write_i2c_block_data +EXPORT_SYMBOL vmlinux 0x4614ff1f pci_bus_assign_resources +EXPORT_SYMBOL vmlinux 0x4617f582 mii_link_ok +EXPORT_SYMBOL vmlinux 0x461ac773 kstrtol_from_user +EXPORT_SYMBOL vmlinux 0x461ebfa0 __copy_tofrom_user +EXPORT_SYMBOL vmlinux 0x46608fa0 getnstimeofday +EXPORT_SYMBOL vmlinux 0x466c14a7 __delay +EXPORT_SYMBOL vmlinux 0x4694fb1c mfd_cell_disable +EXPORT_SYMBOL vmlinux 0x46afd532 on_each_cpu_mask +EXPORT_SYMBOL vmlinux 0x46c9ddc2 twl6040_get_sysclk +EXPORT_SYMBOL vmlinux 0x46d12956 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0x46feb099 dm_read_arg +EXPORT_SYMBOL vmlinux 0x46ff5e06 mmc_can_reset +EXPORT_SYMBOL vmlinux 0x4707807c register_con_driver +EXPORT_SYMBOL vmlinux 0x475100c2 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x477e48c5 nf_unregister_sockopt +EXPORT_SYMBOL vmlinux 0x477ebacf jbd2_journal_flush +EXPORT_SYMBOL vmlinux 0x47939e0d __tasklet_hi_schedule +EXPORT_SYMBOL vmlinux 0x479c3c86 find_next_zero_bit +EXPORT_SYMBOL vmlinux 0x47b3f862 radix_tree_lookup_slot +EXPORT_SYMBOL vmlinux 0x47ea120a get_super +EXPORT_SYMBOL vmlinux 0x47f6938e bdev_stack_limits +EXPORT_SYMBOL vmlinux 0x48000553 mempool_create_node +EXPORT_SYMBOL vmlinux 0x48034724 zlib_deflateReset +EXPORT_SYMBOL vmlinux 0x480ab42a __next_cpu_nr +EXPORT_SYMBOL vmlinux 0x4815f22b _lv1_gpu_attribute +EXPORT_SYMBOL vmlinux 0x4829a47e memcpy +EXPORT_SYMBOL vmlinux 0x48404b9a remove_wait_queue +EXPORT_SYMBOL vmlinux 0x4841bdee strnchr +EXPORT_SYMBOL vmlinux 0x4843a1b9 _lv1_delete_repository_node +EXPORT_SYMBOL vmlinux 0x4845c423 param_array_ops +EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days +EXPORT_SYMBOL vmlinux 0x48780491 mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x487d9343 param_ops_ushort +EXPORT_SYMBOL vmlinux 0x4880ce32 lock_fb_info +EXPORT_SYMBOL vmlinux 0x4881efab pmac_get_partition +EXPORT_SYMBOL vmlinux 0x488589f2 dma_sync_wait +EXPORT_SYMBOL vmlinux 0x488c9723 __insert_inode_hash +EXPORT_SYMBOL vmlinux 0x4893b469 scsi_register +EXPORT_SYMBOL vmlinux 0x48e4e704 input_register_handle +EXPORT_SYMBOL vmlinux 0x48e95423 mb_cache_entry_release +EXPORT_SYMBOL vmlinux 0x48f70f1c dev_open +EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert +EXPORT_SYMBOL vmlinux 0x4910202b eth_header +EXPORT_SYMBOL vmlinux 0x4918b306 scsi_setup_blk_pc_cmnd +EXPORT_SYMBOL vmlinux 0x492af229 ip6_route_output +EXPORT_SYMBOL vmlinux 0x4937334d netdev_boot_setup_check +EXPORT_SYMBOL vmlinux 0x4959dd7f bdi_unregister +EXPORT_SYMBOL vmlinux 0x495ec6eb pasemi_dma_alloc_buf +EXPORT_SYMBOL vmlinux 0x49603fb8 security_sb_copy_data +EXPORT_SYMBOL vmlinux 0x4989090b inode_sub_bytes +EXPORT_SYMBOL vmlinux 0x499b3676 do_SAK +EXPORT_SYMBOL vmlinux 0x49acd431 pci_disable_link_state +EXPORT_SYMBOL vmlinux 0x49acf7ee inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x49b07aec tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0x49c6b33f blk_fetch_request +EXPORT_SYMBOL vmlinux 0x4a0915ba __dquot_alloc_space +EXPORT_SYMBOL vmlinux 0x4a33c7b0 elevator_init +EXPORT_SYMBOL vmlinux 0x4a358252 __bitmap_subset +EXPORT_SYMBOL vmlinux 0x4a43e0d4 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0x4a85678f pci_select_bars +EXPORT_SYMBOL vmlinux 0x4aad7d93 freeze_super +EXPORT_SYMBOL vmlinux 0x4aaf1f9e filemap_flush +EXPORT_SYMBOL vmlinux 0x4abbe3c2 vm_brk +EXPORT_SYMBOL vmlinux 0x4ac64da4 _lv1_select_virtual_address_space +EXPORT_SYMBOL vmlinux 0x4acd93d3 release_resource +EXPORT_SYMBOL vmlinux 0x4aea660a tty_unthrottle +EXPORT_SYMBOL vmlinux 0x4af2cd3c log_start_commit +EXPORT_SYMBOL vmlinux 0x4af7d04a netif_set_real_num_rx_queues +EXPORT_SYMBOL vmlinux 0x4afe9a77 scsi_partsize +EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure +EXPORT_SYMBOL vmlinux 0x4b15f965 pcibios_resource_to_bus +EXPORT_SYMBOL vmlinux 0x4b1ee3e6 sg_miter_next +EXPORT_SYMBOL vmlinux 0x4b205daf ps2_begin_command +EXPORT_SYMBOL vmlinux 0x4b3cb349 _lv1_destruct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x4b3d1e9e get_agp_version +EXPORT_SYMBOL vmlinux 0x4b428210 dev_set_allmulti +EXPORT_SYMBOL vmlinux 0x4b42a6b1 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b605786 nf_register_hooks +EXPORT_SYMBOL vmlinux 0x4b6fcddc _lv1_set_spe_interrupt_mask +EXPORT_SYMBOL vmlinux 0x4b70f746 d_obtain_alias +EXPORT_SYMBOL vmlinux 0x4b7195eb scsi_reset_provider +EXPORT_SYMBOL vmlinux 0x4b7afa51 wireless_send_event +EXPORT_SYMBOL vmlinux 0x4b7ed27b sleep_on +EXPORT_SYMBOL vmlinux 0x4b8589c5 md_integrity_add_rdev +EXPORT_SYMBOL vmlinux 0x4b8fca4a proc_symlink +EXPORT_SYMBOL vmlinux 0x4bc372f6 page_symlink +EXPORT_SYMBOL vmlinux 0x4bc63182 pcix_get_max_mmrbc +EXPORT_SYMBOL vmlinux 0x4bd0554a mapping_tagged +EXPORT_SYMBOL vmlinux 0x4becd10e xfrm4_rcv_encap +EXPORT_SYMBOL vmlinux 0x4bed99b3 __percpu_counter_add +EXPORT_SYMBOL vmlinux 0x4bf89acb mmc_interrupt_hpi +EXPORT_SYMBOL vmlinux 0x4bffe63a iw_handler_set_spy +EXPORT_SYMBOL vmlinux 0x4c05d980 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x4c11435a _raw_read_lock_bh +EXPORT_SYMBOL vmlinux 0x4c1182cb bitmap_scnprintf +EXPORT_SYMBOL vmlinux 0x4c1bee27 dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x4c46f237 xfrm_register_km +EXPORT_SYMBOL vmlinux 0x4c4a29bf vlan_dev_vlan_id +EXPORT_SYMBOL vmlinux 0x4c5e951e compat_sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0x4c6b7030 pci_request_regions_exclusive +EXPORT_SYMBOL vmlinux 0x4c84db7c dquot_transfer +EXPORT_SYMBOL vmlinux 0x4c9aefb7 blkdev_issue_flush +EXPORT_SYMBOL vmlinux 0x4ca488bc inet_stream_connect +EXPORT_SYMBOL vmlinux 0x4ca9669f scnprintf +EXPORT_SYMBOL vmlinux 0x4cbbd171 __bitmap_weight +EXPORT_SYMBOL vmlinux 0x4cd22442 __devm_request_region +EXPORT_SYMBOL vmlinux 0x4cdb3178 ns_to_timeval +EXPORT_SYMBOL vmlinux 0x4ce3ae76 frontswap_enabled +EXPORT_SYMBOL vmlinux 0x4ce66ff5 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x4d24c1f8 register_md_personality +EXPORT_SYMBOL vmlinux 0x4d256a9b xfrm_policy_register_afinfo +EXPORT_SYMBOL vmlinux 0x4d405db8 param_ops_string +EXPORT_SYMBOL vmlinux 0x4d477afd pcim_iomap +EXPORT_SYMBOL vmlinux 0x4d974b9c register_sysrq_key +EXPORT_SYMBOL vmlinux 0x4d9b2784 mmc_fixup_device +EXPORT_SYMBOL vmlinux 0x4da452cf simple_getattr +EXPORT_SYMBOL vmlinux 0x4da7c931 rwsem_downgrade_wake +EXPORT_SYMBOL vmlinux 0x4dc45be9 nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0x4df0bf7c wait_iff_congested +EXPORT_SYMBOL vmlinux 0x4df119fa __bitmap_parse +EXPORT_SYMBOL vmlinux 0x4dfa108b bdi_setup_and_register +EXPORT_SYMBOL vmlinux 0x4dfed71c flex_array_get_ptr +EXPORT_SYMBOL vmlinux 0x4e0645f8 in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0x4e069249 security_tun_dev_post_create +EXPORT_SYMBOL vmlinux 0x4e2a2b79 sock_no_accept +EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int +EXPORT_SYMBOL vmlinux 0x4e437c52 __pagevec_lru_add +EXPORT_SYMBOL vmlinux 0x4e43ca8d vio_cmo_set_dev_desired +EXPORT_SYMBOL vmlinux 0x4e659479 key_unlink +EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console +EXPORT_SYMBOL vmlinux 0x4e7d5143 skb_push +EXPORT_SYMBOL vmlinux 0x4e8f4717 mb_cache_entry_get +EXPORT_SYMBOL vmlinux 0x4e91b3fe mii_check_gmii_support +EXPORT_SYMBOL vmlinux 0x4e91f7be of_node_put +EXPORT_SYMBOL vmlinux 0x4e9dffb5 ip_fast_csum +EXPORT_SYMBOL vmlinux 0x4edd72f7 block_all_signals +EXPORT_SYMBOL vmlinux 0x4eea7741 agp3_generic_tlbflush +EXPORT_SYMBOL vmlinux 0x4f1c9236 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create +EXPORT_SYMBOL vmlinux 0x4f20c711 ether_setup +EXPORT_SYMBOL vmlinux 0x4f391d0e nla_parse +EXPORT_SYMBOL vmlinux 0x4f664db6 _lv1_insert_htab_entry +EXPORT_SYMBOL vmlinux 0x4f68e5c9 do_gettimeofday +EXPORT_SYMBOL vmlinux 0x4f6bad75 simple_write_end +EXPORT_SYMBOL vmlinux 0x4f749da6 __break_lease +EXPORT_SYMBOL vmlinux 0x4f8abbbb vm_insert_page +EXPORT_SYMBOL vmlinux 0x4f962a22 mmc_card_sleep +EXPORT_SYMBOL vmlinux 0x4f9756f4 nf_log_register +EXPORT_SYMBOL vmlinux 0x4facaaa1 xfrm_state_add +EXPORT_SYMBOL vmlinux 0x4fc7ea33 abx500_get_register_page_interruptible +EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4ff1c9bc populate_rootfs_wait +EXPORT_SYMBOL vmlinux 0x50211ee3 tcp_free_md5sig_pool +EXPORT_SYMBOL vmlinux 0x5025a3b9 dma_direct_ops +EXPORT_SYMBOL vmlinux 0x5054d6ab xfrm_input +EXPORT_SYMBOL vmlinux 0x50788c4c pci_bus_size_bridges +EXPORT_SYMBOL vmlinux 0x507bfb9c tcf_hash_check +EXPORT_SYMBOL vmlinux 0x50844e71 cpu_rmap_update +EXPORT_SYMBOL vmlinux 0x5093471a sk_stream_error +EXPORT_SYMBOL vmlinux 0x50a90e8d bsearch +EXPORT_SYMBOL vmlinux 0x50d2592d hex_dump_to_buffer +EXPORT_SYMBOL vmlinux 0x50d4aadf eth_type_trans +EXPORT_SYMBOL vmlinux 0x50e9dbe6 genl_notify +EXPORT_SYMBOL vmlinux 0x50eda9b5 vga_tryget +EXPORT_SYMBOL vmlinux 0x5118c382 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0x5128ac3d sock_create_kern +EXPORT_SYMBOL vmlinux 0x513f0ddd i2c_smbus_process_call +EXPORT_SYMBOL vmlinux 0x5143c678 param_get_invbool +EXPORT_SYMBOL vmlinux 0x515cc19a mpage_readpage +EXPORT_SYMBOL vmlinux 0x517ad017 input_reset_device +EXPORT_SYMBOL vmlinux 0x5187f183 tcp_disconnect +EXPORT_SYMBOL vmlinux 0x518b4c19 is_bad_inode +EXPORT_SYMBOL vmlinux 0x519b0da3 finish_wait +EXPORT_SYMBOL vmlinux 0x51c33c71 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x51c68661 iget_failed +EXPORT_SYMBOL vmlinux 0x51cd8150 ip_mc_rejoin_groups +EXPORT_SYMBOL vmlinux 0x51dce73b xfrm_state_walk_init +EXPORT_SYMBOL vmlinux 0x51eb1a0d sock_no_poll +EXPORT_SYMBOL vmlinux 0x52026cdf security_sb_parse_opts_str +EXPORT_SYMBOL vmlinux 0x52428cc8 parent_mem_cgroup +EXPORT_SYMBOL vmlinux 0x5248bab3 tcf_hash_destroy +EXPORT_SYMBOL vmlinux 0x525206ab dmam_free_coherent +EXPORT_SYMBOL vmlinux 0x527830ff pmac_xpram_read +EXPORT_SYMBOL vmlinux 0x52868740 bdev_read_only +EXPORT_SYMBOL vmlinux 0x52a3aacb vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x52b03b37 __devm_release_region +EXPORT_SYMBOL vmlinux 0x52bc5429 d_alloc +EXPORT_SYMBOL vmlinux 0x52c6bfa7 follow_down_one +EXPORT_SYMBOL vmlinux 0x52cd46bd put_io_context +EXPORT_SYMBOL vmlinux 0x52d42c95 set_current_groups +EXPORT_SYMBOL vmlinux 0x52e3fa05 _lv1_allocate_memory +EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend +EXPORT_SYMBOL vmlinux 0x53326531 mempool_alloc_pages +EXPORT_SYMBOL vmlinux 0x5339f5f8 _lv1_read_virtual_uart +EXPORT_SYMBOL vmlinux 0x533f4256 mmc_can_secure_erase_trim +EXPORT_SYMBOL vmlinux 0x536b5d6b __mutex_init +EXPORT_SYMBOL vmlinux 0x536d329b hvcs_get_partner_info +EXPORT_SYMBOL vmlinux 0x536f999a usb_set_transceiver +EXPORT_SYMBOL vmlinux 0x5377e556 hex2bin +EXPORT_SYMBOL vmlinux 0x538383c0 unregister_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0x5397f2d3 posix_acl_init +EXPORT_SYMBOL vmlinux 0x53a47668 register_framebuffer +EXPORT_SYMBOL vmlinux 0x53acfdcf tcp_md5_hash_header +EXPORT_SYMBOL vmlinux 0x53ad7d9d netdev_bonding_change +EXPORT_SYMBOL vmlinux 0x53cf343e blk_register_region +EXPORT_SYMBOL vmlinux 0x53e1e4bc key_invalidate +EXPORT_SYMBOL vmlinux 0x53ebab1b _outsl_ns +EXPORT_SYMBOL vmlinux 0x5412c7c7 up +EXPORT_SYMBOL vmlinux 0x54245b39 kstrtoull_from_user +EXPORT_SYMBOL vmlinux 0x5435824d scsi_host_alloc +EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start +EXPORT_SYMBOL vmlinux 0x5445e5f4 xfrm_policy_byid +EXPORT_SYMBOL vmlinux 0x54568b75 register_memory_isolate_notifier +EXPORT_SYMBOL vmlinux 0x545deeb8 clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x546bfca4 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x547f1c47 vfsmount_lock +EXPORT_SYMBOL vmlinux 0x54857073 block_write_begin +EXPORT_SYMBOL vmlinux 0x548ecc09 I_BDEV +EXPORT_SYMBOL vmlinux 0x54a9db5f _kstrtoul +EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp +EXPORT_SYMBOL vmlinux 0x5541ea93 on_each_cpu +EXPORT_SYMBOL vmlinux 0x55443d63 ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5549e640 tcp_v4_do_rcv +EXPORT_SYMBOL vmlinux 0x55671f3d load_nls_default +EXPORT_SYMBOL vmlinux 0x5567c227 kernel_cpustat +EXPORT_SYMBOL vmlinux 0x5568c553 complete +EXPORT_SYMBOL vmlinux 0x5577ef9e udp_table +EXPORT_SYMBOL vmlinux 0x557b3dd8 _lv1_gpu_close +EXPORT_SYMBOL vmlinux 0x559346bb i2c_register_driver +EXPORT_SYMBOL vmlinux 0x5594be03 bitmap_remap +EXPORT_SYMBOL vmlinux 0x55cdd220 dm_put_device +EXPORT_SYMBOL vmlinux 0x55ea8733 swiotlb_dma_supported +EXPORT_SYMBOL vmlinux 0x55efbaac scsi_free_command +EXPORT_SYMBOL vmlinux 0x55f5019b __kmalloc_node +EXPORT_SYMBOL vmlinux 0x55f794cf remap_vmalloc_range +EXPORT_SYMBOL vmlinux 0x5614b010 xfrm_policy_walk_done +EXPORT_SYMBOL vmlinux 0x56155bb9 phy_scan_fixups +EXPORT_SYMBOL vmlinux 0x5615fad8 __scsi_add_device +EXPORT_SYMBOL vmlinux 0x561c6ba8 blk_queue_softirq_done +EXPORT_SYMBOL vmlinux 0x5629d2eb setup_new_exec +EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x5642793a radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x56627878 pm860x_bulk_write +EXPORT_SYMBOL vmlinux 0x5666e73d set_groups +EXPORT_SYMBOL vmlinux 0x56673d56 default_llseek +EXPORT_SYMBOL vmlinux 0x568804ee _lv1_destruct_event_receive_port +EXPORT_SYMBOL vmlinux 0x56a10763 csum_tcpudp_magic +EXPORT_SYMBOL vmlinux 0x56ac983c unregister_filesystem +EXPORT_SYMBOL vmlinux 0x56b9cec2 dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x56bfceb1 blk_queue_make_request +EXPORT_SYMBOL vmlinux 0x56c2b95b rtas_progress +EXPORT_SYMBOL vmlinux 0x56c50653 tty_chars_in_buffer +EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x56cc4fab journal_start +EXPORT_SYMBOL vmlinux 0x56ddd997 smp_call_function_many +EXPORT_SYMBOL vmlinux 0x56eac005 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x572e85d4 blk_lookup_devt +EXPORT_SYMBOL vmlinux 0x575570a4 netdev_info +EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575a42c7 cfb_imageblit +EXPORT_SYMBOL vmlinux 0x5761494e pci_lost_interrupt +EXPORT_SYMBOL vmlinux 0x57674fd7 __sw_hweight16 +EXPORT_SYMBOL vmlinux 0x5785384a flex_array_free_parts +EXPORT_SYMBOL vmlinux 0x5792f848 strlcpy +EXPORT_SYMBOL vmlinux 0x5794800f set_security_override_from_ctx +EXPORT_SYMBOL vmlinux 0x579bab50 _lv1_gpu_memory_free +EXPORT_SYMBOL vmlinux 0x57ccfa41 scsi_device_resume +EXPORT_SYMBOL vmlinux 0x57ced7fa pci_find_next_bus +EXPORT_SYMBOL vmlinux 0x57d830b4 grab_cache_page_nowait +EXPORT_SYMBOL vmlinux 0x57e305e6 thaw_bdev +EXPORT_SYMBOL vmlinux 0x57eb18c2 of_find_node_by_path +EXPORT_SYMBOL vmlinux 0x580d99ba i2c_bit_add_bus +EXPORT_SYMBOL vmlinux 0x5823823e iw_handler_get_spy +EXPORT_SYMBOL vmlinux 0x582724ec elv_unregister_queue +EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm +EXPORT_SYMBOL vmlinux 0x5844b04e padata_register_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x5857b225 ioread16_rep +EXPORT_SYMBOL vmlinux 0x586f19e3 mfd_add_devices +EXPORT_SYMBOL vmlinux 0x58738b06 padata_alloc +EXPORT_SYMBOL vmlinux 0x58794223 pci_bus_set_ops +EXPORT_SYMBOL vmlinux 0x58be10b9 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x58e867cc inet_bind +EXPORT_SYMBOL vmlinux 0x58ea270a xfrm_register_mode +EXPORT_SYMBOL vmlinux 0x5908795b fifo_set_limit +EXPORT_SYMBOL vmlinux 0x592f0390 generic_listxattr +EXPORT_SYMBOL vmlinux 0x59322742 blkdev_get +EXPORT_SYMBOL vmlinux 0x5934392b fb_register_client +EXPORT_SYMBOL vmlinux 0x5938fc33 tty_get_baud_rate +EXPORT_SYMBOL vmlinux 0x5948e833 freezing_slow_path +EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x595d0946 empty_zero_page +EXPORT_SYMBOL vmlinux 0x59616bea input_mt_init_slots +EXPORT_SYMBOL vmlinux 0x5967c929 __tracepoint_kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0x597fef36 task_nice +EXPORT_SYMBOL vmlinux 0x599134f8 inet_csk_delete_keepalive_timer +EXPORT_SYMBOL vmlinux 0x59ab7aa2 simple_empty +EXPORT_SYMBOL vmlinux 0x59adbf1f mdiobus_write +EXPORT_SYMBOL vmlinux 0x59b3378a completion_done +EXPORT_SYMBOL vmlinux 0x59c1f06b vfs_mkdir +EXPORT_SYMBOL vmlinux 0x59d696b6 register_module_notifier +EXPORT_SYMBOL vmlinux 0x59e70f93 __send_remote_softirq +EXPORT_SYMBOL vmlinux 0x5a025f7b arch_local_irq_restore +EXPORT_SYMBOL vmlinux 0x5a06f192 of_mdio_find_bus +EXPORT_SYMBOL vmlinux 0x5a0aaa12 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5a27f400 __block_write_begin +EXPORT_SYMBOL vmlinux 0x5a328f51 ppp_unit_number +EXPORT_SYMBOL vmlinux 0x5a4e8848 mac_find_mode +EXPORT_SYMBOL vmlinux 0x5a64efe3 agp_free_page_array +EXPORT_SYMBOL vmlinux 0x5a744b86 netlink_set_nonroot +EXPORT_SYMBOL vmlinux 0x5a7cc23e mdio_bus_type +EXPORT_SYMBOL vmlinux 0x5a84a3f4 xfrm_policy_bysel_ctx +EXPORT_SYMBOL vmlinux 0x5a921311 strncmp +EXPORT_SYMBOL vmlinux 0x5a9f1d63 memmove +EXPORT_SYMBOL vmlinux 0x5a9ff584 __napi_schedule +EXPORT_SYMBOL vmlinux 0x5acdf551 path_get +EXPORT_SYMBOL vmlinux 0x5aec6a93 skb_dequeue +EXPORT_SYMBOL vmlinux 0x5aff7383 twl6030_mmc_card_detect +EXPORT_SYMBOL vmlinux 0x5b1a2745 vio_unregister_device +EXPORT_SYMBOL vmlinux 0x5b39988e ftrace_print_symbols_seq +EXPORT_SYMBOL vmlinux 0x5b3a91ad bio_integrity_free +EXPORT_SYMBOL vmlinux 0x5b3e54b2 dev_alert +EXPORT_SYMBOL vmlinux 0x5b43f1f1 rtas_service_present +EXPORT_SYMBOL vmlinux 0x5b4670ca security_d_instantiate +EXPORT_SYMBOL vmlinux 0x5b4804c2 pci_choose_state +EXPORT_SYMBOL vmlinux 0x5b5382af d_delete +EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap +EXPORT_SYMBOL vmlinux 0x5b61f3d0 dev_addr_del_multiple +EXPORT_SYMBOL vmlinux 0x5b657c7a jbd2_journal_lock_updates +EXPORT_SYMBOL vmlinux 0x5b67e920 inode_needs_sync +EXPORT_SYMBOL vmlinux 0x5b6ddb8d of_find_node_by_phandle +EXPORT_SYMBOL vmlinux 0x5b83e249 dcbnl_ieee_notify +EXPORT_SYMBOL vmlinux 0x5b9828c5 dma_spin_lock +EXPORT_SYMBOL vmlinux 0x5ba53020 vfs_fstat +EXPORT_SYMBOL vmlinux 0x5bb15aa2 scsi_test_unit_ready +EXPORT_SYMBOL vmlinux 0x5bc10524 printk_emit +EXPORT_SYMBOL vmlinux 0x5bce309c dev_alloc_name +EXPORT_SYMBOL vmlinux 0x5c0b8273 input_open_device +EXPORT_SYMBOL vmlinux 0x5c37f319 _raw_spin_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0x5c51f02a ps2_handle_response +EXPORT_SYMBOL vmlinux 0x5c63dddf rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x5c7af026 tag_pages_for_writeback +EXPORT_SYMBOL vmlinux 0x5c9f45de i2c_smbus_read_i2c_block_data +EXPORT_SYMBOL vmlinux 0x5cbf2e4b blk_init_queue_node +EXPORT_SYMBOL vmlinux 0x5ccc9045 _lv1_close_device +EXPORT_SYMBOL vmlinux 0x5cf30e10 __debugger_ipi +EXPORT_SYMBOL vmlinux 0x5d0b1892 param_set_invbool +EXPORT_SYMBOL vmlinux 0x5d0faf85 tty_register_ldisc +EXPORT_SYMBOL vmlinux 0x5d1aaf47 input_inject_event +EXPORT_SYMBOL vmlinux 0x5d1c8866 pci_iomap +EXPORT_SYMBOL vmlinux 0x5d5b5a16 radix_tree_delete +EXPORT_SYMBOL vmlinux 0x5d5cc658 request_key_async_with_auxdata +EXPORT_SYMBOL vmlinux 0x5d6bdce1 flex_array_alloc +EXPORT_SYMBOL vmlinux 0x5d6f1821 jbd2_journal_abort +EXPORT_SYMBOL vmlinux 0x5d7978cf __sk_dst_check +EXPORT_SYMBOL vmlinux 0x5d96eccf __inet6_hash +EXPORT_SYMBOL vmlinux 0x5db98d9a mount_pseudo +EXPORT_SYMBOL vmlinux 0x5e118a38 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0x5e3a8a9c __wake_up +EXPORT_SYMBOL vmlinux 0x5e529b19 __percpu_counter_init +EXPORT_SYMBOL vmlinux 0x5e6242c8 tcp_recvmsg +EXPORT_SYMBOL vmlinux 0x5e636759 gnet_stats_start_copy_compat +EXPORT_SYMBOL vmlinux 0x5e649273 pci_enable_device_io +EXPORT_SYMBOL vmlinux 0x5e6947f7 unregister_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x5e6b19d7 set_blocksize +EXPORT_SYMBOL vmlinux 0x5e71eacf dst_discard +EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask +EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5eccd839 write_inode_now +EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch +EXPORT_SYMBOL vmlinux 0x5edd0762 bin2bcd +EXPORT_SYMBOL vmlinux 0x5ef61936 bdevname +EXPORT_SYMBOL vmlinux 0x5f005368 kstrtou8 +EXPORT_SYMBOL vmlinux 0x5f23110a get_pci_dma_ops +EXPORT_SYMBOL vmlinux 0x5f33a146 __rta_fill +EXPORT_SYMBOL vmlinux 0x5f3c8f5c mmc_assume_removable +EXPORT_SYMBOL vmlinux 0x5f3de25e set_create_files_as +EXPORT_SYMBOL vmlinux 0x5f4402c6 ip6_route_me_harder +EXPORT_SYMBOL vmlinux 0x5f658e14 generic_file_open +EXPORT_SYMBOL vmlinux 0x5f7ca9f2 scsi_get_host_dev +EXPORT_SYMBOL vmlinux 0x5f885f19 dev_uc_add +EXPORT_SYMBOL vmlinux 0x5f8a2728 isa_io_base +EXPORT_SYMBOL vmlinux 0x5f97987e phy_ethtool_gset +EXPORT_SYMBOL vmlinux 0x5f9e2086 inetpeer_invalidate_tree +EXPORT_SYMBOL vmlinux 0x5fa17c73 sk_filter_release_rcu +EXPORT_SYMBOL vmlinux 0x5fbb92f6 skb_unlink +EXPORT_SYMBOL vmlinux 0x5fbc0396 kernel_sendmsg +EXPORT_SYMBOL vmlinux 0x5fd72896 seq_write +EXPORT_SYMBOL vmlinux 0x5fe1b006 da903x_query_status +EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen +EXPORT_SYMBOL vmlinux 0x601bb6e1 simple_write_begin +EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create +EXPORT_SYMBOL vmlinux 0x606ae96a proc_mkdir_mode +EXPORT_SYMBOL vmlinux 0x606d0b09 secure_tcpv6_sequence_number +EXPORT_SYMBOL vmlinux 0x606e8715 mii_ethtool_sset +EXPORT_SYMBOL vmlinux 0x607e1746 kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x607fdbeb swiotlb_sync_sg_for_device +EXPORT_SYMBOL vmlinux 0x60802717 sock_init_data +EXPORT_SYMBOL vmlinux 0x6086fae9 rwsem_wake +EXPORT_SYMBOL vmlinux 0x609ca08a blkdev_get_by_dev +EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net +EXPORT_SYMBOL vmlinux 0x60dd2cf4 twl6040_irq_init +EXPORT_SYMBOL vmlinux 0x611086bd ip_setsockopt +EXPORT_SYMBOL vmlinux 0x61229b10 node_to_cpumask_map +EXPORT_SYMBOL vmlinux 0x612390ad netpoll_set_trap +EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit +EXPORT_SYMBOL vmlinux 0x612f1247 mnt_unpin +EXPORT_SYMBOL vmlinux 0x613b3d9e generic_error_remove_page +EXPORT_SYMBOL vmlinux 0x616a27d4 textsearch_prepare +EXPORT_SYMBOL vmlinux 0x61747440 neigh_for_each +EXPORT_SYMBOL vmlinux 0x617643a2 param_set_long +EXPORT_SYMBOL vmlinux 0x6181a808 inet_del_protocol +EXPORT_SYMBOL vmlinux 0x618577ca mutex_lock +EXPORT_SYMBOL vmlinux 0x618751b8 __blk_end_request_cur +EXPORT_SYMBOL vmlinux 0x619a5d94 generic_file_readonly_mmap +EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer +EXPORT_SYMBOL vmlinux 0x61a4487c _lv1_gpu_device_unmap +EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull +EXPORT_SYMBOL vmlinux 0x61c661f4 bio_integrity_alloc_bioset +EXPORT_SYMBOL vmlinux 0x61d70fb4 xfrm_policy_walk +EXPORT_SYMBOL vmlinux 0x61dcdcd3 _lv1_pause +EXPORT_SYMBOL vmlinux 0x61eef2c9 _insb +EXPORT_SYMBOL vmlinux 0x61fb22b4 netlink_ack +EXPORT_SYMBOL vmlinux 0x6205e14c dev_activate +EXPORT_SYMBOL vmlinux 0x6216ee8f kill_anon_super +EXPORT_SYMBOL vmlinux 0x621cfdbe netif_carrier_on +EXPORT_SYMBOL vmlinux 0x622087eb inode_set_bytes +EXPORT_SYMBOL vmlinux 0x6225637e md5_transform +EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single +EXPORT_SYMBOL vmlinux 0x62304c74 __page_symlink +EXPORT_SYMBOL vmlinux 0x6230d8fe mount_single +EXPORT_SYMBOL vmlinux 0x6250d3a3 agp_put_bridge +EXPORT_SYMBOL vmlinux 0x62538167 slhc_toss +EXPORT_SYMBOL vmlinux 0x6258ff7a panic_notifier_list +EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x62827bec security_secctx_to_secid +EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name +EXPORT_SYMBOL vmlinux 0x628bcf1e splice_direct_to_actor +EXPORT_SYMBOL vmlinux 0x62920e6c tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0x62e107cb blk_queue_max_hw_sectors +EXPORT_SYMBOL vmlinux 0x62e18b83 inode_get_bytes +EXPORT_SYMBOL vmlinux 0x62fd6207 param_set_charp +EXPORT_SYMBOL vmlinux 0x63044896 insert_inode_locked4 +EXPORT_SYMBOL vmlinux 0x6311904d pci_dev_driver +EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled +EXPORT_SYMBOL vmlinux 0x6332cc1a audit_log_start +EXPORT_SYMBOL vmlinux 0x63461204 skb_store_bits +EXPORT_SYMBOL vmlinux 0x635529e7 __scsi_iterate_devices +EXPORT_SYMBOL vmlinux 0x6360d639 cpu_all_bits +EXPORT_SYMBOL vmlinux 0x636d9ba5 cfb_copyarea +EXPORT_SYMBOL vmlinux 0x6371295b jbd2_journal_wipe +EXPORT_SYMBOL vmlinux 0x63782854 agp_create_memory +EXPORT_SYMBOL vmlinux 0x63922bbd vfs_stat +EXPORT_SYMBOL vmlinux 0x63a6e53d neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0x63c3d31f pcie_set_readrq +EXPORT_SYMBOL vmlinux 0x63d8da57 kfree_skb +EXPORT_SYMBOL vmlinux 0x63e63185 journal_lock_updates +EXPORT_SYMBOL vmlinux 0x63e7bd12 __cputime_usec_factor +EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink +EXPORT_SYMBOL vmlinux 0x63ebe67d sync_blockdev +EXPORT_SYMBOL vmlinux 0x63ecad53 register_netdevice_notifier +EXPORT_SYMBOL vmlinux 0x63f16683 __seq_open_private +EXPORT_SYMBOL vmlinux 0x63f75920 _lv1_construct_virtual_address_space +EXPORT_SYMBOL vmlinux 0x63f9c93f ida_get_new_above +EXPORT_SYMBOL vmlinux 0x63fc232f strlen_user +EXPORT_SYMBOL vmlinux 0x6403e338 tcp_memory_pressure +EXPORT_SYMBOL vmlinux 0x641fc69d prepare_creds +EXPORT_SYMBOL vmlinux 0x642c5cec netdev_set_master +EXPORT_SYMBOL vmlinux 0x64316c26 locks_delete_block +EXPORT_SYMBOL vmlinux 0x646cc6ab pmu_poll +EXPORT_SYMBOL vmlinux 0x64855739 blk_integrity_merge_rq +EXPORT_SYMBOL vmlinux 0x648a3d92 generic_getxattr +EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait +EXPORT_SYMBOL vmlinux 0x64aee284 compat_ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x64af95ff scsi_is_sdev_device +EXPORT_SYMBOL vmlinux 0x64b1ce55 netlink_broadcast_filtered +EXPORT_SYMBOL vmlinux 0x64be7199 registered_fb +EXPORT_SYMBOL vmlinux 0x64c37a4d tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x650c59c8 neigh_seq_stop +EXPORT_SYMBOL vmlinux 0x650e76a6 dev_addr_del +EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth +EXPORT_SYMBOL vmlinux 0x651a4139 test_taint +EXPORT_SYMBOL vmlinux 0x652100ac devm_ioremap_prot +EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp +EXPORT_SYMBOL vmlinux 0x653e4c07 dquot_free_inode +EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob +EXPORT_SYMBOL vmlinux 0x65431528 sk_filter +EXPORT_SYMBOL vmlinux 0x656f5a03 scsi_print_result +EXPORT_SYMBOL vmlinux 0x658460dc tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x6584620f dquot_release +EXPORT_SYMBOL vmlinux 0x65bb58a2 _raw_read_trylock +EXPORT_SYMBOL vmlinux 0x65cbc383 register_cdrom +EXPORT_SYMBOL vmlinux 0x65cc33ba iput +EXPORT_SYMBOL vmlinux 0x65d8c63d tcf_unregister_action +EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end +EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65f352f5 lease_get_mtime +EXPORT_SYMBOL vmlinux 0x65f3ad9a fb_videomode_to_var +EXPORT_SYMBOL vmlinux 0x65f96970 invalidate_bdev +EXPORT_SYMBOL vmlinux 0x66308a37 tcp_md5_do_lookup +EXPORT_SYMBOL vmlinux 0x66894eeb __get_page_tail +EXPORT_SYMBOL vmlinux 0x668da8d5 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x6690059d jbd2_journal_forget +EXPORT_SYMBOL vmlinux 0x66a256b3 ida_pre_get +EXPORT_SYMBOL vmlinux 0x66ad1cb3 _lv1_set_lpm_general_control +EXPORT_SYMBOL vmlinux 0x66b7dcf8 genl_register_ops +EXPORT_SYMBOL vmlinux 0x66cbf14b pmac_xpram_write +EXPORT_SYMBOL vmlinux 0x66d2cf3b key_put +EXPORT_SYMBOL vmlinux 0x66dbea00 i2c_smbus_read_byte +EXPORT_SYMBOL vmlinux 0x66ed1040 cdrom_get_last_written +EXPORT_SYMBOL vmlinux 0x670cc3b7 tcp_poll +EXPORT_SYMBOL vmlinux 0x673f815e agp_bridges +EXPORT_SYMBOL vmlinux 0x6742e5d7 end_buffer_async_write +EXPORT_SYMBOL vmlinux 0x6757a282 mmc_erase +EXPORT_SYMBOL vmlinux 0x676b5565 mmc_set_blocklen +EXPORT_SYMBOL vmlinux 0x678422d7 d_path +EXPORT_SYMBOL vmlinux 0x6788fb8a filemap_fdatawait_range +EXPORT_SYMBOL vmlinux 0x67a347e9 journal_errno +EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x681b6557 ip_generic_getfrag +EXPORT_SYMBOL vmlinux 0x681babf2 udp_lib_get_port +EXPORT_SYMBOL vmlinux 0x6849a15f flex_array_clear +EXPORT_SYMBOL vmlinux 0x68609857 complete_and_exit +EXPORT_SYMBOL vmlinux 0x6860f647 skb_trim +EXPORT_SYMBOL vmlinux 0x68675288 __serio_register_port +EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval +EXPORT_SYMBOL vmlinux 0x68b0714a mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0x68dc0e23 dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0x68e05d57 getrawmonotonic +EXPORT_SYMBOL vmlinux 0x68e1ef51 smu_present +EXPORT_SYMBOL vmlinux 0x68f83d00 destroy_EII_client +EXPORT_SYMBOL vmlinux 0x6929f735 inode_dio_wait +EXPORT_SYMBOL vmlinux 0x692e2dfd gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0x6945787a blk_recount_segments +EXPORT_SYMBOL vmlinux 0x695de719 jbd2_journal_check_available_features +EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days +EXPORT_SYMBOL vmlinux 0x69717272 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x6996d5c1 dev_kfree_skb_irq +EXPORT_SYMBOL vmlinux 0x699ccbf8 _lv1_deconfigure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0x69a087bf security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x69a0ca7d iowrite16be +EXPORT_SYMBOL vmlinux 0x69a358a6 iomem_resource +EXPORT_SYMBOL vmlinux 0x69ab1864 truncate_pagecache +EXPORT_SYMBOL vmlinux 0x69ad2f20 kstrtouint +EXPORT_SYMBOL vmlinux 0x69c6c147 sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0x69ca9209 tcp_create_openreq_child +EXPORT_SYMBOL vmlinux 0x69d38ed9 __scsi_print_sense +EXPORT_SYMBOL vmlinux 0x69e27c7a bitmap_copy_le +EXPORT_SYMBOL vmlinux 0x69e9c22d mpage_readpages +EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree +EXPORT_SYMBOL vmlinux 0x6a4af5bd blk_queue_max_discard_sectors +EXPORT_SYMBOL vmlinux 0x6a57caae netpoll_send_skb_on_dev +EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask +EXPORT_SYMBOL vmlinux 0x6a61f874 to_tm +EXPORT_SYMBOL vmlinux 0x6a76f3ac blk_iopoll_enable +EXPORT_SYMBOL vmlinux 0x6a966fc1 ip_defrag +EXPORT_SYMBOL vmlinux 0x6acb973d iowrite32be +EXPORT_SYMBOL vmlinux 0x6acc13d7 of_n_addr_cells +EXPORT_SYMBOL vmlinux 0x6adcf17b input_mt_report_pointer_emulation +EXPORT_SYMBOL vmlinux 0x6b04dc1e scsi_host_lookup +EXPORT_SYMBOL vmlinux 0x6b0b6f23 dquot_claim_space_nodirty +EXPORT_SYMBOL vmlinux 0x6b1b67d3 __bdevname +EXPORT_SYMBOL vmlinux 0x6b2db8ae vfs_lstat +EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack +EXPORT_SYMBOL vmlinux 0x6b358cab _lv1_read_repository_node +EXPORT_SYMBOL vmlinux 0x6b362a0c thermal_cooling_device_register +EXPORT_SYMBOL vmlinux 0x6b387694 _lv1_end_of_interrupt_ext +EXPORT_SYMBOL vmlinux 0x6b538f49 skb_append_datato_frags +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 0x6b7589f4 param_set_bool +EXPORT_SYMBOL vmlinux 0x6b81d120 ipv6_setsockopt +EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev +EXPORT_SYMBOL vmlinux 0x6bdcf78a napi_gro_flush +EXPORT_SYMBOL vmlinux 0x6bdcfd99 qdisc_class_hash_remove +EXPORT_SYMBOL vmlinux 0x6be14c98 i2c_del_driver +EXPORT_SYMBOL vmlinux 0x6c0bcd09 padata_alloc_possible +EXPORT_SYMBOL vmlinux 0x6c2c7669 dev_mc_del_global +EXPORT_SYMBOL vmlinux 0x6c2d04bf devm_gpio_free +EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb +EXPORT_SYMBOL vmlinux 0x6c665691 flex_array_shrink +EXPORT_SYMBOL vmlinux 0x6c676330 jbd2_journal_begin_ordered_truncate +EXPORT_SYMBOL vmlinux 0x6c702af7 sysctl_udp_rmem_min +EXPORT_SYMBOL vmlinux 0x6c81035c agp_generic_create_gatt_table +EXPORT_SYMBOL vmlinux 0x6c8a3b22 would_dump +EXPORT_SYMBOL vmlinux 0x6cae0b9a ps2_end_command +EXPORT_SYMBOL vmlinux 0x6cbdb1ab input_register_handler +EXPORT_SYMBOL vmlinux 0x6cc783df ethtool_op_get_link +EXPORT_SYMBOL vmlinux 0x6cdee868 ip_mc_join_group +EXPORT_SYMBOL vmlinux 0x6cf28893 dma_pool_create +EXPORT_SYMBOL vmlinux 0x6cf32ad5 dquot_set_dqinfo +EXPORT_SYMBOL vmlinux 0x6d044c26 param_ops_uint +EXPORT_SYMBOL vmlinux 0x6d0aea59 do_splice_from +EXPORT_SYMBOL vmlinux 0x6d0f1f89 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0x6d16de4a noop_llseek +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 0x6d3af8a2 tcp_v4_connect +EXPORT_SYMBOL vmlinux 0x6d59338a ata_dev_printk +EXPORT_SYMBOL vmlinux 0x6d6cbadc rb_last +EXPORT_SYMBOL vmlinux 0x6d74d1ff add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x6d80dcdb blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x6d87c6b9 pci_set_master +EXPORT_SYMBOL vmlinux 0x6d8a7e85 sock_create_lite +EXPORT_SYMBOL vmlinux 0x6da9003c __napi_complete +EXPORT_SYMBOL vmlinux 0x6da928f4 _insw_ns +EXPORT_SYMBOL vmlinux 0x6db5f2d6 journal_clear_err +EXPORT_SYMBOL vmlinux 0x6dd8bf58 macio_enable_devres +EXPORT_SYMBOL vmlinux 0x6def2db2 half_md4_transform +EXPORT_SYMBOL vmlinux 0x6e537900 textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock +EXPORT_SYMBOL vmlinux 0x6e75bc87 uart_suspend_port +EXPORT_SYMBOL vmlinux 0x6e9aa708 xfrm6_prepare_output +EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6eaedfe2 tty_unregister_driver +EXPORT_SYMBOL vmlinux 0x6eb6a84b pci_enable_ltr +EXPORT_SYMBOL vmlinux 0x6ebc3517 unlock_buffer +EXPORT_SYMBOL vmlinux 0x6ed0513e bdi_register +EXPORT_SYMBOL vmlinux 0x6edbc84f vc_cons +EXPORT_SYMBOL vmlinux 0x6eef5bf5 neigh_resolve_output +EXPORT_SYMBOL vmlinux 0x6f01d483 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6f025e4f ipv6_push_nfrag_opts +EXPORT_SYMBOL vmlinux 0x6f1c6e90 blk_peek_request +EXPORT_SYMBOL vmlinux 0x6f1e99ce journal_destroy +EXPORT_SYMBOL vmlinux 0x6f20960a full_name_hash +EXPORT_SYMBOL vmlinux 0x6f2803cc dev_addr_init +EXPORT_SYMBOL vmlinux 0x6f441147 inet_select_addr +EXPORT_SYMBOL vmlinux 0x6f507b0b __pci_enable_wake +EXPORT_SYMBOL vmlinux 0x6f8656f5 test_set_page_writeback +EXPORT_SYMBOL vmlinux 0x6f9c01e5 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0x6fa331ed _lv1_construct_io_irq_outlet +EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog +EXPORT_SYMBOL vmlinux 0x6fd040ec generic_segment_checks +EXPORT_SYMBOL vmlinux 0x6fe934f3 dquot_resume +EXPORT_SYMBOL vmlinux 0x6fee2b00 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x7014e3ce serio_reconnect +EXPORT_SYMBOL vmlinux 0x701699b2 _lv1_set_spe_privilege_state_area_1_register +EXPORT_SYMBOL vmlinux 0x704c4365 __cputime_sec_factor +EXPORT_SYMBOL vmlinux 0x704dffdf pskb_expand_head +EXPORT_SYMBOL vmlinux 0x704e1405 pagevec_lookup +EXPORT_SYMBOL vmlinux 0x70520b42 nf_register_hook +EXPORT_SYMBOL vmlinux 0x70523a7a __cond_resched_softirq +EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma +EXPORT_SYMBOL vmlinux 0x7058dce3 noop_fsync +EXPORT_SYMBOL vmlinux 0x70734b15 scsi_allocate_command +EXPORT_SYMBOL vmlinux 0x7083efd7 tty_port_alloc_xmit_buf +EXPORT_SYMBOL vmlinux 0x70bc17d7 inode_wait +EXPORT_SYMBOL vmlinux 0x70d053fd try_to_del_timer_sync +EXPORT_SYMBOL vmlinux 0x70e98b2e bdput +EXPORT_SYMBOL vmlinux 0x70f86c70 pmu_queue_request +EXPORT_SYMBOL vmlinux 0x710df5b9 jbd2_journal_init_jbd_inode +EXPORT_SYMBOL vmlinux 0x710fab60 elv_rb_add +EXPORT_SYMBOL vmlinux 0x711e5e36 tty_unregister_device +EXPORT_SYMBOL vmlinux 0x711e6e7f dmam_alloc_coherent +EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc +EXPORT_SYMBOL vmlinux 0x71611b18 __alloc_tty_driver +EXPORT_SYMBOL vmlinux 0x7171121c overflowgid +EXPORT_SYMBOL vmlinux 0x7185ada4 agp_copy_info +EXPORT_SYMBOL vmlinux 0x71a25c76 simple_link +EXPORT_SYMBOL vmlinux 0x71a26750 __netif_schedule +EXPORT_SYMBOL vmlinux 0x71a50dbc register_blkdev +EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a98ace netdev_set_bond_master +EXPORT_SYMBOL vmlinux 0x720b0ef2 mb_cache_entry_insert +EXPORT_SYMBOL vmlinux 0x720c6256 init_task +EXPORT_SYMBOL vmlinux 0x7234eafb otg_state_string +EXPORT_SYMBOL vmlinux 0x7241c4fc napi_gro_receive +EXPORT_SYMBOL vmlinux 0x726d60c4 blk_queue_init_tags +EXPORT_SYMBOL vmlinux 0x7289b5c5 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0x729b4a83 _lv1_get_spe_all_interrupt_statuses +EXPORT_SYMBOL vmlinux 0x729ed749 cont_write_begin +EXPORT_SYMBOL vmlinux 0x729fc379 tcp_rcv_established +EXPORT_SYMBOL vmlinux 0x72af650d sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma +EXPORT_SYMBOL vmlinux 0x72c0fd2b pneigh_enqueue +EXPORT_SYMBOL vmlinux 0x72c98139 __arch_hweight64 +EXPORT_SYMBOL vmlinux 0x72e9ad9e cdrom_number_of_slots +EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type +EXPORT_SYMBOL vmlinux 0x72ef4238 add_disk +EXPORT_SYMBOL vmlinux 0x7315a4e9 twl6030_mmc_card_detect_config +EXPORT_SYMBOL vmlinux 0x731a747a pci_io_base +EXPORT_SYMBOL vmlinux 0x7328f687 irq_to_desc +EXPORT_SYMBOL vmlinux 0x732b7833 irq_cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x732e0f40 tcf_hash_insert +EXPORT_SYMBOL vmlinux 0x733c3b54 kasprintf +EXPORT_SYMBOL vmlinux 0x735d8503 add_wait_queue +EXPORT_SYMBOL vmlinux 0x73710a3e dqstats +EXPORT_SYMBOL vmlinux 0x737de5e9 radix_tree_tag_get +EXPORT_SYMBOL vmlinux 0x7387a316 __destroy_inode +EXPORT_SYMBOL vmlinux 0x73a3cac6 nobh_write_begin +EXPORT_SYMBOL vmlinux 0x73b992dc idr_remove_all +EXPORT_SYMBOL vmlinux 0x73c0ffa8 scsi_cmd_print_sense_hdr +EXPORT_SYMBOL vmlinux 0x741562b7 single_release +EXPORT_SYMBOL vmlinux 0x741a55c1 dquot_get_dqinfo +EXPORT_SYMBOL vmlinux 0x742455bb __skb_warn_lro_forwarding +EXPORT_SYMBOL vmlinux 0x745f9142 __xfrm_state_destroy +EXPORT_SYMBOL vmlinux 0x7469fcfe radix_tree_tagged +EXPORT_SYMBOL vmlinux 0x747ff5a8 mdiobus_read +EXPORT_SYMBOL vmlinux 0x7485e15e unregister_chrdev_region +EXPORT_SYMBOL vmlinux 0x74a427c8 blk_queue_invalidate_tags +EXPORT_SYMBOL vmlinux 0x74afbeb8 ip_options_rcv_srr +EXPORT_SYMBOL vmlinux 0x74c134b9 __sw_hweight32 +EXPORT_SYMBOL vmlinux 0x74c391d5 padata_do_parallel +EXPORT_SYMBOL vmlinux 0x74cbab37 make_bad_inode +EXPORT_SYMBOL vmlinux 0x74cc1cbe unregister_cpu_notifier +EXPORT_SYMBOL vmlinux 0x74d1c2c4 mark_buffer_dirty_inode +EXPORT_SYMBOL vmlinux 0x74df6136 cdev_del +EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable +EXPORT_SYMBOL vmlinux 0x74fe8730 sys_ctrler +EXPORT_SYMBOL vmlinux 0x74febb7a sock_queue_err_skb +EXPORT_SYMBOL vmlinux 0x751166c4 of_dev_get +EXPORT_SYMBOL vmlinux 0x751c2917 __wait_on_bit +EXPORT_SYMBOL vmlinux 0x75236462 rawv6_mh_filter_unregister +EXPORT_SYMBOL vmlinux 0x7525d51a scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x75308ff0 i2c_verify_adapter +EXPORT_SYMBOL vmlinux 0x7532588a alloc_pages_exact +EXPORT_SYMBOL vmlinux 0x7538b132 agp_off +EXPORT_SYMBOL vmlinux 0x753f6c2a grab_cache_page_write_begin +EXPORT_SYMBOL vmlinux 0x75493951 __skb_checksum_complete +EXPORT_SYMBOL vmlinux 0x754d31c7 pci_request_region_exclusive +EXPORT_SYMBOL vmlinux 0x755191dc pci_get_class +EXPORT_SYMBOL vmlinux 0x756b5f15 ip_check_defrag +EXPORT_SYMBOL vmlinux 0x756c786e _lv1_connect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0x756f7b1f posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x75754995 _lv1_storage_check_async_status +EXPORT_SYMBOL vmlinux 0x75761302 blk_complete_request +EXPORT_SYMBOL vmlinux 0x75837f20 mmc_set_data_timeout +EXPORT_SYMBOL vmlinux 0x75994700 add_wait_queue_exclusive +EXPORT_SYMBOL vmlinux 0x75b885c4 pcie_port_service_unregister +EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next +EXPORT_SYMBOL vmlinux 0x75bdea12 iommu_area_alloc +EXPORT_SYMBOL vmlinux 0x75e4f5aa pasemi_read_mac_reg +EXPORT_SYMBOL vmlinux 0x75ee30bf md_register_thread +EXPORT_SYMBOL vmlinux 0x75f28a5a xfrm_dst_ifdown +EXPORT_SYMBOL vmlinux 0x7605505d journal_create +EXPORT_SYMBOL vmlinux 0x760a0f4f yield +EXPORT_SYMBOL vmlinux 0x760b437a unregister_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq +EXPORT_SYMBOL vmlinux 0x764bd77c request_resource +EXPORT_SYMBOL vmlinux 0x764e2224 _lv1_disconnect_irq_plug_ext +EXPORT_SYMBOL vmlinux 0x765215ba netpoll_print_options +EXPORT_SYMBOL vmlinux 0x767e1db8 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x767f7c52 set_binfmt +EXPORT_SYMBOL vmlinux 0x76820450 of_platform_device_create +EXPORT_SYMBOL vmlinux 0x768e6494 tty_register_device +EXPORT_SYMBOL vmlinux 0x768ee79a qdisc_watchdog_schedule +EXPORT_SYMBOL vmlinux 0x76965c98 tty_write_room +EXPORT_SYMBOL vmlinux 0x76bf656d __bitmap_shift_left +EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode +EXPORT_SYMBOL vmlinux 0x76d526ff kthread_stop +EXPORT_SYMBOL vmlinux 0x76e5c90c ppp_unregister_compressor +EXPORT_SYMBOL vmlinux 0x76f1ad38 genl_unregister_ops +EXPORT_SYMBOL vmlinux 0x76f48710 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x77144936 _lv1_disconnect_irq_plug +EXPORT_SYMBOL vmlinux 0x771cf835 dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x7723174a md_done_sync +EXPORT_SYMBOL vmlinux 0x772a663f napi_complete +EXPORT_SYMBOL vmlinux 0x773a9c94 blk_iopoll_enabled +EXPORT_SYMBOL vmlinux 0x773fa409 __kfifo_dma_in_finish_r +EXPORT_SYMBOL vmlinux 0x775de4b9 blk_queue_update_dma_pad +EXPORT_SYMBOL vmlinux 0x77664506 irq_set_chip +EXPORT_SYMBOL vmlinux 0x778943b7 twl6040_set_bits +EXPORT_SYMBOL vmlinux 0x778ed9dd find_get_pages_contig +EXPORT_SYMBOL vmlinux 0x779a18af kstrtoll +EXPORT_SYMBOL vmlinux 0x77b6bfdf serio_unregister_child_port +EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77d78057 ida_simple_remove +EXPORT_SYMBOL vmlinux 0x77df0847 __set_personality +EXPORT_SYMBOL vmlinux 0x77ecac9f zlib_inflateEnd +EXPORT_SYMBOL vmlinux 0x7805637a of_i2c_register_devices +EXPORT_SYMBOL vmlinux 0x7821a2ff generic_file_direct_write +EXPORT_SYMBOL vmlinux 0x782cded4 input_close_device +EXPORT_SYMBOL vmlinux 0x7830b04f hvc_put_chars +EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x785a2cb7 kernel_sock_shutdown +EXPORT_SYMBOL vmlinux 0x785ed68f arp_xmit +EXPORT_SYMBOL vmlinux 0x78646372 tcp_v4_md5_hash_skb +EXPORT_SYMBOL vmlinux 0x7864fda8 swiotlb_alloc_coherent +EXPORT_SYMBOL vmlinux 0x78731391 bio_copy_user +EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback +EXPORT_SYMBOL vmlinux 0x78974a3b skb_queue_head +EXPORT_SYMBOL vmlinux 0x789a17f7 _lv1_destruct_logical_spe +EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices +EXPORT_SYMBOL vmlinux 0x790df6ca __wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0x792a8336 swiotlb_free_coherent +EXPORT_SYMBOL vmlinux 0x792bab84 setattr_copy +EXPORT_SYMBOL vmlinux 0x79377052 netlink_set_err +EXPORT_SYMBOL vmlinux 0x793e3e08 dev_trans_start +EXPORT_SYMBOL vmlinux 0x796fc5ce scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0x7984eefc key_update +EXPORT_SYMBOL vmlinux 0x79a92f76 max8998_write_reg +EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes +EXPORT_SYMBOL vmlinux 0x7a1b8d40 misc_register +EXPORT_SYMBOL vmlinux 0x7a27c184 ewma_init +EXPORT_SYMBOL vmlinux 0x7a4497db kzfree +EXPORT_SYMBOL vmlinux 0x7a73c864 generic_setxattr +EXPORT_SYMBOL vmlinux 0x7aa9e259 _lv1_map_htab +EXPORT_SYMBOL vmlinux 0x7ab83c17 __pskb_copy +EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt +EXPORT_SYMBOL vmlinux 0x7abc0132 dm_unregister_target +EXPORT_SYMBOL vmlinux 0x7ad1d486 d_invalidate +EXPORT_SYMBOL vmlinux 0x7ae63c1b __cleancache_put_page +EXPORT_SYMBOL vmlinux 0x7af18bf8 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x7b03848a verify_mem_not_deleted +EXPORT_SYMBOL vmlinux 0x7b10493f agp_backend_release +EXPORT_SYMBOL vmlinux 0x7b180312 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0x7b2aef6c __krealloc +EXPORT_SYMBOL vmlinux 0x7b2d9048 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x7b65d242 read_cache_pages +EXPORT_SYMBOL vmlinux 0x7b718228 ida_destroy +EXPORT_SYMBOL vmlinux 0x7b81a1f4 mmc_release_host +EXPORT_SYMBOL vmlinux 0x7b8edfed arp_find +EXPORT_SYMBOL vmlinux 0x7bab3a89 i8042_install_filter +EXPORT_SYMBOL vmlinux 0x7baf6f76 dentry_update_name_case +EXPORT_SYMBOL vmlinux 0x7bd1f193 alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x7bde3893 register_sysctl_table +EXPORT_SYMBOL vmlinux 0x7bea0110 dcb_getapp +EXPORT_SYMBOL vmlinux 0x7bef2199 ip_xfrm_me_harder +EXPORT_SYMBOL vmlinux 0x7c003aef _raw_read_lock_irq +EXPORT_SYMBOL vmlinux 0x7c124ba3 ata_scsi_cmd_error_handler +EXPORT_SYMBOL vmlinux 0x7c1372e8 panic +EXPORT_SYMBOL vmlinux 0x7c13cf4c vlan_vid_del +EXPORT_SYMBOL vmlinux 0x7c2d098f krealloc +EXPORT_SYMBOL vmlinux 0x7c386598 blk_rq_count_integrity_sg +EXPORT_SYMBOL vmlinux 0x7c3ad8db seq_printf +EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c5fbd6b pci_disable_msix +EXPORT_SYMBOL vmlinux 0x7c60d66e getname +EXPORT_SYMBOL vmlinux 0x7c61340c __release_region +EXPORT_SYMBOL vmlinux 0x7c8ec714 pipe_to_file +EXPORT_SYMBOL vmlinux 0x7c904ded unregister_module_notifier +EXPORT_SYMBOL vmlinux 0x7c9291d1 csum_partial_copy_generic +EXPORT_SYMBOL vmlinux 0x7c98845d twl_i2c_read +EXPORT_SYMBOL vmlinux 0x7c99d6f5 max8998_update_reg +EXPORT_SYMBOL vmlinux 0x7ca30c2d phy_ethtool_sset +EXPORT_SYMBOL vmlinux 0x7ca341af kernel_thread +EXPORT_SYMBOL vmlinux 0x7cb1ae69 cpu_down +EXPORT_SYMBOL vmlinux 0x7cecc91f netif_set_real_num_tx_queues +EXPORT_SYMBOL vmlinux 0x7cf226f2 dquot_operations +EXPORT_SYMBOL vmlinux 0x7cf3a16b put_cmsg +EXPORT_SYMBOL vmlinux 0x7cfc0d12 sb_min_blocksize +EXPORT_SYMBOL vmlinux 0x7d0a7026 dev_get_by_name +EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t +EXPORT_SYMBOL vmlinux 0x7d11c268 jiffies +EXPORT_SYMBOL vmlinux 0x7d29e589 bio_integrity_enabled +EXPORT_SYMBOL vmlinux 0x7d3251ce scsi_adjust_queue_depth +EXPORT_SYMBOL vmlinux 0x7d335bbc generic_file_buffered_write +EXPORT_SYMBOL vmlinux 0x7d7ac1aa sk_wait_data +EXPORT_SYMBOL vmlinux 0x7d7ea71b generic_file_llseek_size +EXPORT_SYMBOL vmlinux 0x7d8cc27d unregister_quota_format +EXPORT_SYMBOL vmlinux 0x7d93df48 fsync_bdev +EXPORT_SYMBOL vmlinux 0x7dbf1dd3 jbd2_journal_load +EXPORT_SYMBOL vmlinux 0x7dc97879 rtas_get_error_log_max +EXPORT_SYMBOL vmlinux 0x7dcbf92e unregister_console +EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args +EXPORT_SYMBOL vmlinux 0x7e0ba0fa xfrm_stateonly_find +EXPORT_SYMBOL vmlinux 0x7e337132 task_tgid_nr_ns +EXPORT_SYMBOL vmlinux 0x7e394c4e sysctl_local_reserved_ports +EXPORT_SYMBOL vmlinux 0x7e39c3cc block_commit_write +EXPORT_SYMBOL vmlinux 0x7e3df7cd __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0x7e400382 tty_throttle +EXPORT_SYMBOL vmlinux 0x7e613368 framebuffer_release +EXPORT_SYMBOL vmlinux 0x7e6c9c94 ppp_register_channel +EXPORT_SYMBOL vmlinux 0x7e750c3b bdi_init +EXPORT_SYMBOL vmlinux 0x7e7e7d51 unregister_nls +EXPORT_SYMBOL vmlinux 0x7e87227e slhc_compress +EXPORT_SYMBOL vmlinux 0x7e8cefdd pm860x_reg_read +EXPORT_SYMBOL vmlinux 0x7ea3ecf0 skb_pull +EXPORT_SYMBOL vmlinux 0x7ec4f7bd kobject_del +EXPORT_SYMBOL vmlinux 0x7f095e0c inet6_release +EXPORT_SYMBOL vmlinux 0x7f179328 cdrom_release +EXPORT_SYMBOL vmlinux 0x7f1e6c05 nla_reserve +EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs +EXPORT_SYMBOL vmlinux 0x7f4aa595 bio_unmap_user +EXPORT_SYMBOL vmlinux 0x7f6f90e3 scsi_block_when_processing_errors +EXPORT_SYMBOL vmlinux 0x7f829423 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x7f9f8841 idr_remove +EXPORT_SYMBOL vmlinux 0x7fccf6e9 tcf_em_register +EXPORT_SYMBOL vmlinux 0x7fd6cf11 ilookup +EXPORT_SYMBOL vmlinux 0x7fd878d7 security_path_rmdir +EXPORT_SYMBOL vmlinux 0x7fe38f48 sg_copy_to_buffer +EXPORT_SYMBOL vmlinux 0x7fe9a060 _lv1_net_stop_tx_dma +EXPORT_SYMBOL vmlinux 0x801ded1d swiotlb_sync_single_for_device +EXPORT_SYMBOL vmlinux 0x802d0e93 crc32_le +EXPORT_SYMBOL vmlinux 0x8034f7b1 sock_no_setsockopt +EXPORT_SYMBOL vmlinux 0x804a862f mmc_calc_max_discard +EXPORT_SYMBOL vmlinux 0x804d4421 frontswap_register_ops +EXPORT_SYMBOL vmlinux 0x805c7233 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x8063c0b7 dquot_acquire +EXPORT_SYMBOL vmlinux 0x80648181 abx500_event_registers_startup_state_get +EXPORT_SYMBOL vmlinux 0x80777ff1 skb_copy +EXPORT_SYMBOL vmlinux 0x8087ff6d check_disk_size_change +EXPORT_SYMBOL vmlinux 0x809b3b45 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x80c8e672 alloc_disk_node +EXPORT_SYMBOL vmlinux 0x80ce99da mfd_cell_enable +EXPORT_SYMBOL vmlinux 0x80f00638 names_cachep +EXPORT_SYMBOL vmlinux 0x80f0c051 rc5t583_ext_power_req_config +EXPORT_SYMBOL vmlinux 0x8106422e __vlan_find_dev_deep +EXPORT_SYMBOL vmlinux 0x813e84d4 dma_async_device_unregister +EXPORT_SYMBOL vmlinux 0x814e7730 nf_ct_destroy +EXPORT_SYMBOL vmlinux 0x814f698d sock_recvmsg +EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac +EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal +EXPORT_SYMBOL vmlinux 0x816b2094 macio_request_resources +EXPORT_SYMBOL vmlinux 0x816ca644 kmem_cache_create +EXPORT_SYMBOL vmlinux 0x816ffdca udp_lib_rehash +EXPORT_SYMBOL vmlinux 0x81a07f4e _atomic_dec_and_lock +EXPORT_SYMBOL vmlinux 0x81a3abe8 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x81c0a84f rtas_set_indicator +EXPORT_SYMBOL vmlinux 0x81d9f7f2 _lv1_put_iopte +EXPORT_SYMBOL vmlinux 0x81da1211 tty_port_raise_dtr_rts +EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset +EXPORT_SYMBOL vmlinux 0x81fba3bf mii_ethtool_gset +EXPORT_SYMBOL vmlinux 0x82072614 tasklet_kill +EXPORT_SYMBOL vmlinux 0x823dbd37 tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0x8251bcc3 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x8260686f bitmap_find_next_zero_area +EXPORT_SYMBOL vmlinux 0x8261e741 mmc_can_sanitize +EXPORT_SYMBOL vmlinux 0x82851ee2 vga_get +EXPORT_SYMBOL vmlinux 0x82acfb70 blk_iopoll_sched +EXPORT_SYMBOL vmlinux 0x82b05e9f fifo_create_dflt +EXPORT_SYMBOL vmlinux 0x82e553c2 blk_end_request_all +EXPORT_SYMBOL vmlinux 0x82e5a238 vm_get_page_prot +EXPORT_SYMBOL vmlinux 0x832010ae inode_add_rsv_space +EXPORT_SYMBOL vmlinux 0x83322f8d textsearch_register +EXPORT_SYMBOL vmlinux 0x833f0ec8 write_cache_pages +EXPORT_SYMBOL vmlinux 0x83600a06 pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8384a2c5 tty_unlock +EXPORT_SYMBOL vmlinux 0x838f70b0 twl_i2c_write_u8 +EXPORT_SYMBOL vmlinux 0x839f8df7 kernel_getsockopt +EXPORT_SYMBOL vmlinux 0x83a476ce bitmap_scnlistprintf +EXPORT_SYMBOL vmlinux 0x83a94ed2 vio_find_node +EXPORT_SYMBOL vmlinux 0x83ba1c28 md_write_start +EXPORT_SYMBOL vmlinux 0x83c8a355 param_set_int +EXPORT_SYMBOL vmlinux 0x83e59c20 filemap_fault +EXPORT_SYMBOL vmlinux 0x83ea72bf framebuffer_alloc +EXPORT_SYMBOL vmlinux 0x84065814 nonseekable_open +EXPORT_SYMBOL vmlinux 0x8431e9ba page_readlink +EXPORT_SYMBOL vmlinux 0x8433e4a9 softnet_data +EXPORT_SYMBOL vmlinux 0x845124e0 ps3_mm_phys_to_lpar +EXPORT_SYMBOL vmlinux 0x84645df3 key_reject_and_link +EXPORT_SYMBOL vmlinux 0x846bcc01 dm_table_get +EXPORT_SYMBOL vmlinux 0x846f0bcf uart_register_driver +EXPORT_SYMBOL vmlinux 0x8478e2ff tc_classify +EXPORT_SYMBOL vmlinux 0x847a5316 swiotlb_unmap_sg_attrs +EXPORT_SYMBOL vmlinux 0x847a7d78 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x849fe807 csum_and_copy_from_user +EXPORT_SYMBOL vmlinux 0x84ac8a02 __cleancache_get_page +EXPORT_SYMBOL vmlinux 0x84b904b0 skb_free_datagram +EXPORT_SYMBOL vmlinux 0x84bd69bf dq_data_lock +EXPORT_SYMBOL vmlinux 0x84cc0a9a fget_raw +EXPORT_SYMBOL vmlinux 0x84e1af59 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x84eb0abd dev_mc_add +EXPORT_SYMBOL vmlinux 0x84fff322 agp_bind_memory +EXPORT_SYMBOL vmlinux 0x850085a9 seq_put_decimal_ull +EXPORT_SYMBOL vmlinux 0x850dfabd neigh_ifdown +EXPORT_SYMBOL vmlinux 0x851910b2 soft_cursor +EXPORT_SYMBOL vmlinux 0x85595d6f f_setown +EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked +EXPORT_SYMBOL vmlinux 0x857e243b proc_net_netfilter +EXPORT_SYMBOL vmlinux 0x858afd8a fail_migrate_page +EXPORT_SYMBOL vmlinux 0x8597eb47 plpar_hcall +EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states +EXPORT_SYMBOL vmlinux 0x85be259f mmc_erase_group_aligned +EXPORT_SYMBOL vmlinux 0x85c36d5b register_filesystem +EXPORT_SYMBOL vmlinux 0x85df9b6c strsep +EXPORT_SYMBOL vmlinux 0x85f870aa sync_mapping_buffers +EXPORT_SYMBOL vmlinux 0x85fa3b19 posix_lock_file_wait +EXPORT_SYMBOL vmlinux 0x860fb6de swiotlb_map_sg_attrs +EXPORT_SYMBOL vmlinux 0x8617a8db xfrm_state_walk +EXPORT_SYMBOL vmlinux 0x8620ea23 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x86242481 dev_set_drvdata +EXPORT_SYMBOL vmlinux 0x862c1ddf blk_run_queue_async +EXPORT_SYMBOL vmlinux 0x8633ed3a lease_modify +EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync +EXPORT_SYMBOL vmlinux 0x865504e3 ilookup5_nowait +EXPORT_SYMBOL vmlinux 0x8664f62e cpufreq_update_policy +EXPORT_SYMBOL vmlinux 0x868acba5 get_options +EXPORT_SYMBOL vmlinux 0x869b5d37 mach_ps3 +EXPORT_SYMBOL vmlinux 0x86a39cb6 inet_twsk_deschedule +EXPORT_SYMBOL vmlinux 0x86b88f53 mmc_wait_for_req +EXPORT_SYMBOL vmlinux 0x86c00ae7 free_task +EXPORT_SYMBOL vmlinux 0x86db1cbb rtas_flash_term_hook +EXPORT_SYMBOL vmlinux 0x86f46f38 security_file_permission +EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user +EXPORT_SYMBOL vmlinux 0x86ff3cf2 sock_kmalloc +EXPORT_SYMBOL vmlinux 0x870bf928 radix_tree_lookup +EXPORT_SYMBOL vmlinux 0x871c0a7e fiemap_check_flags +EXPORT_SYMBOL vmlinux 0x8737aa47 blk_delay_queue +EXPORT_SYMBOL vmlinux 0x873a53ea __arch_hweight8 +EXPORT_SYMBOL vmlinux 0x873f47c5 inet_unregister_protosw +EXPORT_SYMBOL vmlinux 0x875ac255 journal_extend +EXPORT_SYMBOL vmlinux 0x878ab3ce sysctl_tcp_adv_win_scale +EXPORT_SYMBOL vmlinux 0x878b19dd sk_stream_wait_close +EXPORT_SYMBOL vmlinux 0x879feca4 __getblk +EXPORT_SYMBOL vmlinux 0x87ab65c3 file_open_root +EXPORT_SYMBOL vmlinux 0x87b4d15a phy_mii_ioctl +EXPORT_SYMBOL vmlinux 0x87c6d6c3 drop_super +EXPORT_SYMBOL vmlinux 0x87d331f9 dquot_quota_off +EXPORT_SYMBOL vmlinux 0x8804579d elv_rb_del +EXPORT_SYMBOL vmlinux 0x880b62f2 sk_stream_write_space +EXPORT_SYMBOL vmlinux 0x880ce048 flush_dcache_page +EXPORT_SYMBOL vmlinux 0x880da1b1 _lv1_get_logical_partition_id +EXPORT_SYMBOL vmlinux 0x881039d0 zlib_inflate +EXPORT_SYMBOL vmlinux 0x8834396c mod_timer +EXPORT_SYMBOL vmlinux 0x88582906 qdisc_list_del +EXPORT_SYMBOL vmlinux 0x88668376 truncate_pagecache_range +EXPORT_SYMBOL vmlinux 0x88743a4f d_make_root +EXPORT_SYMBOL vmlinux 0x887def2d scsi_setup_fs_cmnd +EXPORT_SYMBOL vmlinux 0x8886488e alloc_file +EXPORT_SYMBOL vmlinux 0x88b96637 scsi_cmd_blk_ioctl +EXPORT_SYMBOL vmlinux 0x88c57f2e bio_integrity_add_page +EXPORT_SYMBOL vmlinux 0x88e07cf1 blk_queue_dma_pad +EXPORT_SYMBOL vmlinux 0x88e80b49 mfd_remove_devices +EXPORT_SYMBOL vmlinux 0x8908d199 blk_rq_map_kern +EXPORT_SYMBOL vmlinux 0x891fbb10 mempool_destroy +EXPORT_SYMBOL vmlinux 0x895108f3 proc_dostring +EXPORT_SYMBOL vmlinux 0x895577b0 numa_cpu_lookup_table +EXPORT_SYMBOL vmlinux 0x895cbe23 napi_frags_finish +EXPORT_SYMBOL vmlinux 0x896c8c5b validate_sp +EXPORT_SYMBOL vmlinux 0x897473df mktime +EXPORT_SYMBOL vmlinux 0x89797060 _raw_read_lock +EXPORT_SYMBOL vmlinux 0x897f061d downgrade_write +EXPORT_SYMBOL vmlinux 0x898169c3 find_inode_number +EXPORT_SYMBOL vmlinux 0x89861fc3 tty_port_close +EXPORT_SYMBOL vmlinux 0x8990ca15 vio_disable_interrupts +EXPORT_SYMBOL vmlinux 0x89afe34e __kfifo_dma_in_prepare +EXPORT_SYMBOL vmlinux 0x89b752b3 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x89c05c4a of_platform_bus_probe +EXPORT_SYMBOL vmlinux 0x89c5a8be smu_get_sdb_partition +EXPORT_SYMBOL vmlinux 0x89d5538d fb_pad_aligned_buffer +EXPORT_SYMBOL vmlinux 0x89d66811 build_ehash_secret +EXPORT_SYMBOL vmlinux 0x89da4432 of_iomap +EXPORT_SYMBOL vmlinux 0x89ef01d5 blk_init_queue +EXPORT_SYMBOL vmlinux 0x89f59858 of_get_property +EXPORT_SYMBOL vmlinux 0x8a08409d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x8a126dd6 read_cache_page_gfp +EXPORT_SYMBOL vmlinux 0x8a1ab4ee timeval_to_jiffies +EXPORT_SYMBOL vmlinux 0x8a48c84b simple_transaction_release +EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state +EXPORT_SYMBOL vmlinux 0x8a6af65c kstrtoul_from_user +EXPORT_SYMBOL vmlinux 0x8a78f713 seq_bitmap +EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory +EXPORT_SYMBOL vmlinux 0x8a81ddb0 blk_integrity_is_initialized +EXPORT_SYMBOL vmlinux 0x8a82ad72 tcf_hash_search +EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8a9bc402 locks_remove_posix +EXPORT_SYMBOL vmlinux 0x8a9cef2a _lv1_allocate_device_dma_region +EXPORT_SYMBOL vmlinux 0x8aa42919 bio_get_nr_vecs +EXPORT_SYMBOL vmlinux 0x8ab27e6e genphy_restart_aneg +EXPORT_SYMBOL vmlinux 0x8acc983a neigh_table_init +EXPORT_SYMBOL vmlinux 0x8acdcbe8 blk_put_request +EXPORT_SYMBOL vmlinux 0x8ace8ca3 groups_alloc +EXPORT_SYMBOL vmlinux 0x8ad3dca8 scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x8aec1f16 neigh_seq_start +EXPORT_SYMBOL vmlinux 0x8af71e45 pcibios_fixup_bus +EXPORT_SYMBOL vmlinux 0x8afa6706 account_page_dirtied +EXPORT_SYMBOL vmlinux 0x8b03edbb request_key_with_auxdata +EXPORT_SYMBOL vmlinux 0x8b0d2c54 bioset_create +EXPORT_SYMBOL vmlinux 0x8b143aaa elv_register_queue +EXPORT_SYMBOL vmlinux 0x8b1a7a66 pcie_aspm_enabled +EXPORT_SYMBOL vmlinux 0x8b35e873 sg_last +EXPORT_SYMBOL vmlinux 0x8b49f533 __nla_reserve +EXPORT_SYMBOL vmlinux 0x8b5f0eae con_is_bound +EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid +EXPORT_SYMBOL vmlinux 0x8b68e673 mdiobus_free +EXPORT_SYMBOL vmlinux 0x8b741bda pci_bus_write_config_word +EXPORT_SYMBOL vmlinux 0x8b75af00 nf_unregister_hooks +EXPORT_SYMBOL vmlinux 0x8b830216 ndisc_send_skb +EXPORT_SYMBOL vmlinux 0x8b84ea89 genl_register_mc_group +EXPORT_SYMBOL vmlinux 0x8b8f3b64 scsi_scan_host +EXPORT_SYMBOL vmlinux 0x8ba3090e dquot_commit_info +EXPORT_SYMBOL vmlinux 0x8bd023af mem_cgroup_count_vm_event +EXPORT_SYMBOL vmlinux 0x8bf2ae1f fsl_lbc_addr +EXPORT_SYMBOL vmlinux 0x8bf4f022 xfrm_state_alloc +EXPORT_SYMBOL vmlinux 0x8bfcd462 mpage_writepages +EXPORT_SYMBOL vmlinux 0x8bfe8c57 param_set_uint +EXPORT_SYMBOL vmlinux 0x8c0952dd xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x8c183cbe iowrite16 +EXPORT_SYMBOL vmlinux 0x8c37fb87 tty_port_open +EXPORT_SYMBOL vmlinux 0x8c4ba1ba i2c_smbus_write_word_data +EXPORT_SYMBOL vmlinux 0x8c68ee00 block_invalidatepage +EXPORT_SYMBOL vmlinux 0x8c7a3757 of_get_named_gpio_flags +EXPORT_SYMBOL vmlinux 0x8c8242b1 scsi_dma_map +EXPORT_SYMBOL vmlinux 0x8c85595d jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0x8c89afec md_set_array_sectors +EXPORT_SYMBOL vmlinux 0x8c8d79c0 _lv1_gpu_context_iomap +EXPORT_SYMBOL vmlinux 0x8ca22e3f __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0x8cacb624 compat_ip_setsockopt +EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep +EXPORT_SYMBOL vmlinux 0x8ccf7b91 xfrm_cfg_mutex +EXPORT_SYMBOL vmlinux 0x8cd8e2d7 mount_bdev +EXPORT_SYMBOL vmlinux 0x8cfc246b vm_insert_pfn +EXPORT_SYMBOL vmlinux 0x8d2c0c8b bitmap_unplug +EXPORT_SYMBOL vmlinux 0x8d551bef sysctl_tcp_rmem +EXPORT_SYMBOL vmlinux 0x8d5c8b17 pcim_iomap_regions +EXPORT_SYMBOL vmlinux 0x8d664aab may_umount_tree +EXPORT_SYMBOL vmlinux 0x8d6906d4 unregister_memory_notifier +EXPORT_SYMBOL vmlinux 0x8d870b12 dev_addr_add +EXPORT_SYMBOL vmlinux 0x8d944cbb copy_in_user +EXPORT_SYMBOL vmlinux 0x8dc23d38 dquot_drop +EXPORT_SYMBOL vmlinux 0x8dc4185e padata_unregister_cpumask_notifier +EXPORT_SYMBOL vmlinux 0x8de0b5ac mempool_create +EXPORT_SYMBOL vmlinux 0x8de2fbc5 _lv1_get_virtual_uart_param +EXPORT_SYMBOL vmlinux 0x8df4c4ea security_inode_getsecctx +EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv +EXPORT_SYMBOL vmlinux 0x8e28cd42 in_egroup_p +EXPORT_SYMBOL vmlinux 0x8e349947 alloc_pages_current +EXPORT_SYMBOL vmlinux 0x8e431aaf tcp_init_sock +EXPORT_SYMBOL vmlinux 0x8e59abcb serio_interrupt +EXPORT_SYMBOL vmlinux 0x8e7d8d2b seq_putc +EXPORT_SYMBOL vmlinux 0x8e8da1af jbd2_journal_unlock_updates +EXPORT_SYMBOL vmlinux 0x8e944c48 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x8eaeae48 ip_mc_dec_group +EXPORT_SYMBOL vmlinux 0x8ec04552 _raw_spin_trylock_bh +EXPORT_SYMBOL vmlinux 0x8ee13337 mdiobus_scan +EXPORT_SYMBOL vmlinux 0x8ee93d66 __get_user_pages +EXPORT_SYMBOL vmlinux 0x8eea1bc9 smu_poll +EXPORT_SYMBOL vmlinux 0x8ef65937 agp_generic_free_by_type +EXPORT_SYMBOL vmlinux 0x8f05e074 mmc_wait_for_cmd +EXPORT_SYMBOL vmlinux 0x8f0a054a save_mount_options +EXPORT_SYMBOL vmlinux 0x8f16dae9 pci_dev_put +EXPORT_SYMBOL vmlinux 0x8f3a88a1 unregister_exec_domain +EXPORT_SYMBOL vmlinux 0x8f48679a rb_prev +EXPORT_SYMBOL vmlinux 0x8f4a28db pci_bus_read_config_word +EXPORT_SYMBOL vmlinux 0x8f7014a1 param_set_ulong +EXPORT_SYMBOL vmlinux 0x8f85f835 prepare_to_wait_exclusive +EXPORT_SYMBOL vmlinux 0x8f96eb68 icmpv6_send +EXPORT_SYMBOL vmlinux 0x8f97f23f pci_set_ltr +EXPORT_SYMBOL vmlinux 0x8f9d71c3 of_create_pci_dev +EXPORT_SYMBOL vmlinux 0x900b36c0 journal_get_create_access +EXPORT_SYMBOL vmlinux 0x900b80a2 vm_map_ram +EXPORT_SYMBOL vmlinux 0x90300177 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0x903db3d2 vm_insert_mixed +EXPORT_SYMBOL vmlinux 0x905bba18 vm_event_states +EXPORT_SYMBOL vmlinux 0x90715933 __dev_printk +EXPORT_SYMBOL vmlinux 0x90845d38 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x90a271a1 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x90a4d02a pm860x_reg_write +EXPORT_SYMBOL vmlinux 0x90a69927 sock_no_bind +EXPORT_SYMBOL vmlinux 0x90b87f08 inet_sendpage +EXPORT_SYMBOL vmlinux 0x90c947d4 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0x90d7ca45 __serio_register_driver +EXPORT_SYMBOL vmlinux 0x90e146c2 trace_seq_putc +EXPORT_SYMBOL vmlinux 0x90e5d0b8 print_hex_dump_bytes +EXPORT_SYMBOL vmlinux 0x90ede72f skb_copy_datagram_const_iovec +EXPORT_SYMBOL vmlinux 0x91065225 try_to_free_buffers +EXPORT_SYMBOL vmlinux 0x91069a5b bio_kmalloc +EXPORT_SYMBOL vmlinux 0x910d7907 phy_device_register +EXPORT_SYMBOL vmlinux 0x9114826c journal_set_features +EXPORT_SYMBOL vmlinux 0x91201cef _lv1_enable_logical_spe +EXPORT_SYMBOL vmlinux 0x912557ce rtas_busy_delay +EXPORT_SYMBOL vmlinux 0x9133e295 unregister_key_type +EXPORT_SYMBOL vmlinux 0x91391c41 simple_transaction_get +EXPORT_SYMBOL vmlinux 0x91394dd4 gen_pool_free +EXPORT_SYMBOL vmlinux 0x91463b1d kstrtos16 +EXPORT_SYMBOL vmlinux 0x915e1208 tb_ticks_per_usec +EXPORT_SYMBOL vmlinux 0x91634813 page_zero_new_buffers +EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x9168c033 rtas_get_sensor +EXPORT_SYMBOL vmlinux 0x91715312 sprintf +EXPORT_SYMBOL vmlinux 0x91727bb0 tty_port_put +EXPORT_SYMBOL vmlinux 0x918d2d49 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x91960fd2 elv_rb_find +EXPORT_SYMBOL vmlinux 0x919d1163 tty_termios_baud_rate +EXPORT_SYMBOL vmlinux 0x91ac822f vscnprintf +EXPORT_SYMBOL vmlinux 0x91affc39 uart_get_divisor +EXPORT_SYMBOL vmlinux 0x91b22162 scsi_prep_state_check +EXPORT_SYMBOL vmlinux 0x91c4feca _lv1_unmap_htab +EXPORT_SYMBOL vmlinux 0x91cac58c __scsi_device_lookup +EXPORT_SYMBOL vmlinux 0x91fd639c kthread_bind +EXPORT_SYMBOL vmlinux 0x922108e5 dput +EXPORT_SYMBOL vmlinux 0x922afd5c pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x923c54cf idr_destroy +EXPORT_SYMBOL vmlinux 0x9245adb4 kernel_setsockopt +EXPORT_SYMBOL vmlinux 0x9245cea5 __mmc_claim_host +EXPORT_SYMBOL vmlinux 0x926a5003 of_get_mac_address +EXPORT_SYMBOL vmlinux 0x926e10c8 sb_set_blocksize +EXPORT_SYMBOL vmlinux 0x928dc8b5 rename_lock +EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user +EXPORT_SYMBOL vmlinux 0x92a9c60c time_to_tm +EXPORT_SYMBOL vmlinux 0x92d985a0 tcf_exts_validate +EXPORT_SYMBOL vmlinux 0x92d9e6cb jbd2_journal_release_buffer +EXPORT_SYMBOL vmlinux 0x92db3352 genl_register_family +EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get +EXPORT_SYMBOL vmlinux 0x93060042 nla_put_nohdr +EXPORT_SYMBOL vmlinux 0x932988e7 jbd2_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0x93448c57 screen_info +EXPORT_SYMBOL vmlinux 0x934deff2 dev_uc_flush +EXPORT_SYMBOL vmlinux 0x93507f1c _lv1_gpu_memory_allocate +EXPORT_SYMBOL vmlinux 0x935f6e0a alloc_fddidev +EXPORT_SYMBOL vmlinux 0x936e4fc2 vio_register_device_node +EXPORT_SYMBOL vmlinux 0x936ec49f invalidate_mapping_pages +EXPORT_SYMBOL vmlinux 0x9371664a vio_enable_interrupts +EXPORT_SYMBOL vmlinux 0x9371795c key_link +EXPORT_SYMBOL vmlinux 0x937b3951 tcp_make_synack +EXPORT_SYMBOL vmlinux 0x938a5c27 call_netdevice_notifiers +EXPORT_SYMBOL vmlinux 0x93975c3c dm_get_mapinfo +EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule +EXPORT_SYMBOL vmlinux 0x93cae977 sk_reset_timer +EXPORT_SYMBOL vmlinux 0x93fca811 __get_free_pages +EXPORT_SYMBOL vmlinux 0x9405175a lro_receive_skb +EXPORT_SYMBOL vmlinux 0x94138482 release_firmware +EXPORT_SYMBOL vmlinux 0x942117b7 filemap_write_and_wait +EXPORT_SYMBOL vmlinux 0x943dc80f csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x9442e699 bio_integrity_get_tag +EXPORT_SYMBOL vmlinux 0x945a29fb fsnotify_put_mark +EXPORT_SYMBOL vmlinux 0x946f4650 cdrom_media_changed +EXPORT_SYMBOL vmlinux 0x94745466 dget_parent +EXPORT_SYMBOL vmlinux 0x9481eb9e pci_pme_active +EXPORT_SYMBOL vmlinux 0x94961283 vunmap +EXPORT_SYMBOL vmlinux 0x94b19e12 flush_icache_user_range +EXPORT_SYMBOL vmlinux 0x94e101a0 agp_alloc_bridge +EXPORT_SYMBOL vmlinux 0x94fc0ec9 blk_free_tags +EXPORT_SYMBOL vmlinux 0x9514151a _mcount +EXPORT_SYMBOL vmlinux 0x9518b623 register_shrinker +EXPORT_SYMBOL vmlinux 0x9524b0ae _outsb +EXPORT_SYMBOL vmlinux 0x953db383 free_irq_cpu_rmap +EXPORT_SYMBOL vmlinux 0x954488a4 syncookie_secret +EXPORT_SYMBOL vmlinux 0x9545af6d tasklet_init +EXPORT_SYMBOL vmlinux 0x955ca706 input_allocate_device +EXPORT_SYMBOL vmlinux 0x95649e32 kset_unregister +EXPORT_SYMBOL vmlinux 0x95786263 blk_get_queue +EXPORT_SYMBOL vmlinux 0x958b49b3 i2c_smbus_write_block_data +EXPORT_SYMBOL vmlinux 0x95902a1d bio_alloc +EXPORT_SYMBOL vmlinux 0x95941a05 sock_register +EXPORT_SYMBOL vmlinux 0x95c091fa __dst_free +EXPORT_SYMBOL vmlinux 0x95c0d0ee rtnl_create_link +EXPORT_SYMBOL vmlinux 0x95cf8646 skb_copy_bits +EXPORT_SYMBOL vmlinux 0x95de7606 account_page_writeback +EXPORT_SYMBOL vmlinux 0x9601fe00 journal_restart +EXPORT_SYMBOL vmlinux 0x9619e793 md_unregister_thread +EXPORT_SYMBOL vmlinux 0x963561b3 __block_page_mkwrite +EXPORT_SYMBOL vmlinux 0x966fb5d3 dcb_setapp +EXPORT_SYMBOL vmlinux 0x9684f9cb pci_find_capability +EXPORT_SYMBOL vmlinux 0x968d259a of_phy_connect_fixed_link +EXPORT_SYMBOL vmlinux 0x96a04161 jbd2_journal_release_jbd_inode +EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp +EXPORT_SYMBOL vmlinux 0x96be70e8 blkdev_fsync +EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96fd543a mmc_alloc_host +EXPORT_SYMBOL vmlinux 0x971a0dff generic_file_mmap +EXPORT_SYMBOL vmlinux 0x9737d221 empty_aops +EXPORT_SYMBOL vmlinux 0x9739e414 freeze_bdev +EXPORT_SYMBOL vmlinux 0x9745c86f fbcon_set_bitops +EXPORT_SYMBOL vmlinux 0x9748927f _outsw_ns +EXPORT_SYMBOL vmlinux 0x974d2781 uart_remove_one_port +EXPORT_SYMBOL vmlinux 0x9754ec10 radix_tree_preload +EXPORT_SYMBOL vmlinux 0x975c6e15 vfs_open +EXPORT_SYMBOL vmlinux 0x976e014f _lv1_map_device_mmio_region +EXPORT_SYMBOL vmlinux 0x97716628 generic_write_checks +EXPORT_SYMBOL vmlinux 0x97758270 scsi_add_device +EXPORT_SYMBOL vmlinux 0x97868aef __kfifo_alloc +EXPORT_SYMBOL vmlinux 0x9786c076 dquot_commit +EXPORT_SYMBOL vmlinux 0x97999817 rfkill_set_hw_state +EXPORT_SYMBOL vmlinux 0x97cf2658 netdev_state_change +EXPORT_SYMBOL vmlinux 0x97e1e38b netdev_class_remove_file +EXPORT_SYMBOL vmlinux 0x97e3b5a1 phy_stop_interrupts +EXPORT_SYMBOL vmlinux 0x97e8d589 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x97f03d6f vio_cmo_entitlement_update +EXPORT_SYMBOL vmlinux 0x97f70076 scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x97fea3ad force_sig +EXPORT_SYMBOL vmlinux 0x98177648 _lv1_set_lpm_interval +EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r +EXPORT_SYMBOL vmlinux 0x982d11ed serio_unregister_port +EXPORT_SYMBOL vmlinux 0x9834d93c kset_register +EXPORT_SYMBOL vmlinux 0x9838a19a generic_show_options +EXPORT_SYMBOL vmlinux 0x9839c444 tcp_read_sock +EXPORT_SYMBOL vmlinux 0x983e09f5 irq_stat +EXPORT_SYMBOL vmlinux 0x98488439 alloc_disk +EXPORT_SYMBOL vmlinux 0x984b08b7 agp_generic_free_gatt_table +EXPORT_SYMBOL vmlinux 0x986e6135 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x9886547e cpufreq_global_kobject +EXPORT_SYMBOL vmlinux 0x98a311ee km_policy_expired +EXPORT_SYMBOL vmlinux 0x98a84bf9 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0x98cc3e84 tcp_md5_do_add +EXPORT_SYMBOL vmlinux 0x98cf60b3 strlen +EXPORT_SYMBOL vmlinux 0x98fa21b0 mod_timer_pinned +EXPORT_SYMBOL vmlinux 0x99074726 i2c_smbus_write_byte +EXPORT_SYMBOL vmlinux 0x9909317b rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x991448c9 of_find_node_with_property +EXPORT_SYMBOL vmlinux 0x99195078 vsnprintf +EXPORT_SYMBOL vmlinux 0x9931aa3c skb_flow_dissect +EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable +EXPORT_SYMBOL vmlinux 0x9953a184 read_dev_sector +EXPORT_SYMBOL vmlinux 0x99591a7a ipv6_ext_hdr +EXPORT_SYMBOL vmlinux 0x995d196e disk_stack_limits +EXPORT_SYMBOL vmlinux 0x9973e15b poll_initwait +EXPORT_SYMBOL vmlinux 0x9994c0ca ps2_is_keyboard_id +EXPORT_SYMBOL vmlinux 0x999e8297 vfree +EXPORT_SYMBOL vmlinux 0x99afe916 _raw_write_unlock_bh +EXPORT_SYMBOL vmlinux 0x99bfbe39 get_unused_fd +EXPORT_SYMBOL vmlinux 0x99c24cfe _lv1_free_device_dma_region +EXPORT_SYMBOL vmlinux 0x99cdc86b sysctl_tcp_reordering +EXPORT_SYMBOL vmlinux 0x99d3a43c dm_table_get_size +EXPORT_SYMBOL vmlinux 0x99ed5933 scsi_remove_host +EXPORT_SYMBOL vmlinux 0x9a0b154c pci_request_selected_regions_exclusive +EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk +EXPORT_SYMBOL vmlinux 0x9a1fc4b4 jiffies_to_timeval +EXPORT_SYMBOL vmlinux 0x9a1ffb92 _lv1_clear_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0x9a3692ef dma_iommu_ops +EXPORT_SYMBOL vmlinux 0x9a4e36f1 dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0x9a59c056 jbd2_journal_get_write_access +EXPORT_SYMBOL vmlinux 0x9a5ffc64 __tracepoint_kmem_cache_alloc +EXPORT_SYMBOL vmlinux 0x9a626734 ftrace_print_hex_seq +EXPORT_SYMBOL vmlinux 0x9a6431d8 fb_set_var +EXPORT_SYMBOL vmlinux 0x9a6c2531 pasemi_dma_init +EXPORT_SYMBOL vmlinux 0x9a89ab44 sync_inodes_sb +EXPORT_SYMBOL vmlinux 0x9aae7fea skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0x9ab14915 pci_bus_add_devices +EXPORT_SYMBOL vmlinux 0x9acdfd72 gen_pool_destroy +EXPORT_SYMBOL vmlinux 0x9af2159f __bread +EXPORT_SYMBOL vmlinux 0x9af89f98 memcpy_fromiovec +EXPORT_SYMBOL vmlinux 0x9b005c30 mmc_request_done +EXPORT_SYMBOL vmlinux 0x9b2b1705 fsnotify_destroy_mark +EXPORT_SYMBOL vmlinux 0x9b2e60f7 i2c_transfer +EXPORT_SYMBOL vmlinux 0x9b388444 get_zeroed_page +EXPORT_SYMBOL vmlinux 0x9b5d9c7a rtnl_unicast +EXPORT_SYMBOL vmlinux 0x9b757ded __dev_get_by_index +EXPORT_SYMBOL vmlinux 0x9b893001 udp_ioctl +EXPORT_SYMBOL vmlinux 0x9b909837 sock_sendmsg +EXPORT_SYMBOL vmlinux 0x9ba0f292 simple_unlink +EXPORT_SYMBOL vmlinux 0x9ba7089d argv_split +EXPORT_SYMBOL vmlinux 0x9bd42f8a try_module_get +EXPORT_SYMBOL vmlinux 0x9bfff19a vfs_link +EXPORT_SYMBOL vmlinux 0x9c1dceaf tcp_valid_rtt_meas +EXPORT_SYMBOL vmlinux 0x9c2cd507 jbd2_journal_clear_err +EXPORT_SYMBOL vmlinux 0x9c337c6a inet_csk_reset_keepalive_timer +EXPORT_SYMBOL vmlinux 0x9c444b1e make_EII_client +EXPORT_SYMBOL vmlinux 0x9c491f60 sg_alloc_table +EXPORT_SYMBOL vmlinux 0x9c4eb474 writeback_inodes_sb_nr_if_idle +EXPORT_SYMBOL vmlinux 0x9c54d862 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x9c5f81da cpu_rmap_add +EXPORT_SYMBOL vmlinux 0x9c8914d3 xfrm_lookup +EXPORT_SYMBOL vmlinux 0x9c8f2e24 bdget_disk +EXPORT_SYMBOL vmlinux 0x9c95ccd9 vfs_readlink +EXPORT_SYMBOL vmlinux 0x9c96b544 sock_no_socketpair +EXPORT_SYMBOL vmlinux 0x9cb96e92 qdisc_put_rtab +EXPORT_SYMBOL vmlinux 0x9cbf982f dcache_readdir +EXPORT_SYMBOL vmlinux 0x9cfd56c5 scsi_print_status +EXPORT_SYMBOL vmlinux 0x9d10eda0 i2c_smbus_read_word_data +EXPORT_SYMBOL vmlinux 0x9d14983a ppc_enable_pmcs +EXPORT_SYMBOL vmlinux 0x9d164025 tcp_tso_segment +EXPORT_SYMBOL vmlinux 0x9d3aa376 blk_iopoll_init +EXPORT_SYMBOL vmlinux 0x9d786943 tcf_hash_new_index +EXPORT_SYMBOL vmlinux 0x9d7ce8dd _raw_spin_trylock +EXPORT_SYMBOL vmlinux 0x9d91ac36 seq_path +EXPORT_SYMBOL vmlinux 0x9d9f0eb0 journal_stop +EXPORT_SYMBOL vmlinux 0x9da6cec1 journal_update_format +EXPORT_SYMBOL vmlinux 0x9db5cc71 pci_scan_bus_parented +EXPORT_SYMBOL vmlinux 0x9dcfada7 sys_imageblit +EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node +EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy +EXPORT_SYMBOL vmlinux 0x9e607910 audit_log +EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable +EXPORT_SYMBOL vmlinux 0x9e79543a flock_lock_file_wait +EXPORT_SYMBOL vmlinux 0x9e90caa8 gen_pool_for_each_chunk +EXPORT_SYMBOL vmlinux 0x9e97375d rtas_busy_delay_time +EXPORT_SYMBOL vmlinux 0x9e9f1714 __bitmap_andnot +EXPORT_SYMBOL vmlinux 0x9ea0ad49 __sg_free_table +EXPORT_SYMBOL vmlinux 0x9ebd4c04 adjust_resource +EXPORT_SYMBOL vmlinux 0x9ecc54ed cdrom_check_events +EXPORT_SYMBOL vmlinux 0x9ee1a065 tcp_alloc_md5sig_pool +EXPORT_SYMBOL vmlinux 0x9ee5df61 nf_ip_checksum +EXPORT_SYMBOL vmlinux 0x9ee78669 _lv1_write_virtual_uart +EXPORT_SYMBOL vmlinux 0x9f2bdaac __bitmap_or +EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 +EXPORT_SYMBOL vmlinux 0x9f75ea61 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0x9f984513 strrchr +EXPORT_SYMBOL vmlinux 0x9fb54c42 abx500_set_register_interruptible +EXPORT_SYMBOL vmlinux 0x9fd18ebd macio_dev_get +EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many +EXPORT_SYMBOL vmlinux 0xa04a01bd qdisc_class_hash_insert +EXPORT_SYMBOL vmlinux 0xa05c03df mempool_kmalloc +EXPORT_SYMBOL vmlinux 0xa06a7dc1 security_path_link +EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr +EXPORT_SYMBOL vmlinux 0xa07ed110 xz_dec_init +EXPORT_SYMBOL vmlinux 0xa084b4f1 skb_gro_reset_offset +EXPORT_SYMBOL vmlinux 0xa0882442 agp_generic_type_to_mask_type +EXPORT_SYMBOL vmlinux 0xa08a349a d_move +EXPORT_SYMBOL vmlinux 0xa0a59c0f serio_close +EXPORT_SYMBOL vmlinux 0xa0abd2d8 backlight_device_register +EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 +EXPORT_SYMBOL vmlinux 0xa0c78274 tty_driver_flush_buffer +EXPORT_SYMBOL vmlinux 0xa0c84ac9 ipv6_chk_addr +EXPORT_SYMBOL vmlinux 0xa0ceef51 out_of_line_wait_on_bit +EXPORT_SYMBOL vmlinux 0xa0d0dadc tty_insert_flip_string_flags +EXPORT_SYMBOL vmlinux 0xa0e22a51 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0xa0ea46fb __alloc_skb +EXPORT_SYMBOL vmlinux 0xa0fa103c netif_napi_add +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 0xa131fd64 create_empty_buffers +EXPORT_SYMBOL vmlinux 0xa13b3b47 ppp_register_compressor +EXPORT_SYMBOL vmlinux 0xa1415618 twl6030_interrupt_unmask +EXPORT_SYMBOL vmlinux 0xa14abdd3 thermal_zone_unbind_cooling_device +EXPORT_SYMBOL vmlinux 0xa14f3d8c ewma_add +EXPORT_SYMBOL vmlinux 0xa172e254 pci_ltr_supported +EXPORT_SYMBOL vmlinux 0xa189d931 blk_execute_rq +EXPORT_SYMBOL vmlinux 0xa18b40b2 twl6040_set_pll +EXPORT_SYMBOL vmlinux 0xa1b759ce fb_add_videomode +EXPORT_SYMBOL vmlinux 0xa1c4b6d2 of_translate_dma_address +EXPORT_SYMBOL vmlinux 0xa1c5a3b3 cleancache_enabled +EXPORT_SYMBOL vmlinux 0xa1c76e0a _cond_resched +EXPORT_SYMBOL vmlinux 0xa1c99385 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xa1ed6555 touch_atime +EXPORT_SYMBOL vmlinux 0xa1f05d0e kill_fasync +EXPORT_SYMBOL vmlinux 0xa1f8fe75 wait_for_completion_killable_timeout +EXPORT_SYMBOL vmlinux 0xa1ffb0f6 genl_register_family_with_ops +EXPORT_SYMBOL vmlinux 0xa202a8e5 kmalloc_order_trace +EXPORT_SYMBOL vmlinux 0xa20ce1b8 net_msg_warn +EXPORT_SYMBOL vmlinux 0xa20d7f89 files_lglock +EXPORT_SYMBOL vmlinux 0xa2120aea create_proc_entry +EXPORT_SYMBOL vmlinux 0xa2127cdc pasemi_dma_alloc_flag +EXPORT_SYMBOL vmlinux 0xa2338aed mmc_try_claim_host +EXPORT_SYMBOL vmlinux 0xa24024b1 abx500_mask_and_set_register_interruptible +EXPORT_SYMBOL vmlinux 0xa2465322 _lv1_get_version_info +EXPORT_SYMBOL vmlinux 0xa250c838 param_get_charp +EXPORT_SYMBOL vmlinux 0xa256c6b4 md_integrity_register +EXPORT_SYMBOL vmlinux 0xa27d07d5 dev_remove_pack +EXPORT_SYMBOL vmlinux 0xa2848c50 ecryptfs_get_auth_tok_key +EXPORT_SYMBOL vmlinux 0xa2a5fd77 inet_ehash_secret +EXPORT_SYMBOL vmlinux 0xa2bbed37 crash_shutdown_register +EXPORT_SYMBOL vmlinux 0xa2c0d0a4 jbd2_journal_start_commit +EXPORT_SYMBOL vmlinux 0xa2d47e76 pipe_unlock +EXPORT_SYMBOL vmlinux 0xa2da69ac write_one_page +EXPORT_SYMBOL vmlinux 0xa2dc5981 of_get_cpu_node +EXPORT_SYMBOL vmlinux 0xa2e77feb keyring_search +EXPORT_SYMBOL vmlinux 0xa2e81215 dqput +EXPORT_SYMBOL vmlinux 0xa2ef34d7 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xa303d1ff dm_ratelimit_state +EXPORT_SYMBOL vmlinux 0xa31ed4cf usb_put_transceiver +EXPORT_SYMBOL vmlinux 0xa332cdd1 security_tun_dev_attach +EXPORT_SYMBOL vmlinux 0xa33836c0 tty_free_termios +EXPORT_SYMBOL vmlinux 0xa34d8048 sock_common_setsockopt +EXPORT_SYMBOL vmlinux 0xa35bac30 macio_dev_put +EXPORT_SYMBOL vmlinux 0xa35c6c70 dev_close +EXPORT_SYMBOL vmlinux 0xa35de80f ipv4_config +EXPORT_SYMBOL vmlinux 0xa36220de generic_writepages +EXPORT_SYMBOL vmlinux 0xa3713ffb __breadahead +EXPORT_SYMBOL vmlinux 0xa3801e73 writeback_in_progress +EXPORT_SYMBOL vmlinux 0xa396e715 bio_free +EXPORT_SYMBOL vmlinux 0xa39b4cf2 udelay +EXPORT_SYMBOL vmlinux 0xa3abc422 abort_exclusive_wait +EXPORT_SYMBOL vmlinux 0xa3da7c04 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0xa3e3f40f net_dma_find_channel +EXPORT_SYMBOL vmlinux 0xa3ee2b6b km_query +EXPORT_SYMBOL vmlinux 0xa3ef76de blk_rq_map_user_iov +EXPORT_SYMBOL vmlinux 0xa3ef872f mmc_can_discard +EXPORT_SYMBOL vmlinux 0xa3f4cb09 pcim_enable_device +EXPORT_SYMBOL vmlinux 0xa3f508fc tcf_em_unregister +EXPORT_SYMBOL vmlinux 0xa3fc3d50 __tracepoint_module_get +EXPORT_SYMBOL vmlinux 0xa400159f crc32_be +EXPORT_SYMBOL vmlinux 0xa4036ca2 skb_copy_datagram_iovec +EXPORT_SYMBOL vmlinux 0xa4511467 crc16 +EXPORT_SYMBOL vmlinux 0xa46f5492 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xa4701e9e timekeeping_inject_offset +EXPORT_SYMBOL vmlinux 0xa480c04b _lv1_gpu_context_attribute +EXPORT_SYMBOL vmlinux 0xa49dcff5 dma_find_channel +EXPORT_SYMBOL vmlinux 0xa4a94d26 find_next_bit_le +EXPORT_SYMBOL vmlinux 0xa4b43b19 sk_receive_skb +EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep +EXPORT_SYMBOL vmlinux 0xa4bdd447 __cputime_clockt_factor +EXPORT_SYMBOL vmlinux 0xa4c1e2d1 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0xa4d250ff fd_install +EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush +EXPORT_SYMBOL vmlinux 0xa541748d devm_request_threaded_irq +EXPORT_SYMBOL vmlinux 0xa577a850 param_get_short +EXPORT_SYMBOL vmlinux 0xa58559c7 find_get_pages_tag +EXPORT_SYMBOL vmlinux 0xa58da602 of_gpio_named_count +EXPORT_SYMBOL vmlinux 0xa598e29c vesa_modes +EXPORT_SYMBOL vmlinux 0xa5a86d25 take_over_console +EXPORT_SYMBOL vmlinux 0xa5af3428 sock_i_ino +EXPORT_SYMBOL vmlinux 0xa5bb4797 dmam_pool_create +EXPORT_SYMBOL vmlinux 0xa5d58b57 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xa5f21c83 uart_resume_port +EXPORT_SYMBOL vmlinux 0xa633bcb5 md_error +EXPORT_SYMBOL vmlinux 0xa64d5e50 dev_load +EXPORT_SYMBOL vmlinux 0xa65972b8 _memcpy_toio +EXPORT_SYMBOL vmlinux 0xa6686f10 xfrm_state_flush +EXPORT_SYMBOL vmlinux 0xa66965a9 scsi_device_get +EXPORT_SYMBOL vmlinux 0xa6715115 do_settimeofday +EXPORT_SYMBOL vmlinux 0xa675804c utf8s_to_utf16s +EXPORT_SYMBOL vmlinux 0xa6793a29 input_unregister_handle +EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa6bc21ac inet_put_port +EXPORT_SYMBOL vmlinux 0xa6dcc773 rb_insert_color +EXPORT_SYMBOL vmlinux 0xa706436b udplite_prot +EXPORT_SYMBOL vmlinux 0xa70a725f machine_id +EXPORT_SYMBOL vmlinux 0xa720678c lg_global_lock +EXPORT_SYMBOL vmlinux 0xa7238395 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xa723859c simple_readpage +EXPORT_SYMBOL vmlinux 0xa72a0f5b nr_online_nodes +EXPORT_SYMBOL vmlinux 0xa7526680 __kfree_skb +EXPORT_SYMBOL vmlinux 0xa7652d26 i8042_check_port_owner +EXPORT_SYMBOL vmlinux 0xa774a78f seq_puts +EXPORT_SYMBOL vmlinux 0xa78d9eb7 slhc_uncompress +EXPORT_SYMBOL vmlinux 0xa7bb40b2 bdi_set_max_ratio +EXPORT_SYMBOL vmlinux 0xa7c39168 __generic_file_aio_write +EXPORT_SYMBOL vmlinux 0xa7dddecf vfs_mknod +EXPORT_SYMBOL vmlinux 0xa7df56eb blk_integrity_register +EXPORT_SYMBOL vmlinux 0xa814587f skb_gso_segment +EXPORT_SYMBOL vmlinux 0xa816c525 schedule_work_on +EXPORT_SYMBOL vmlinux 0xa8223905 blk_limits_io_opt +EXPORT_SYMBOL vmlinux 0xa8232c78 strtobool +EXPORT_SYMBOL vmlinux 0xa838c9e9 nf_register_sockopt +EXPORT_SYMBOL vmlinux 0xa8494e05 pci_bus_alloc_resource +EXPORT_SYMBOL vmlinux 0xa852e4fe journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xa85a6cef simple_rename +EXPORT_SYMBOL vmlinux 0xa85e53ae journal_wipe +EXPORT_SYMBOL vmlinux 0xa8721b97 system_state +EXPORT_SYMBOL vmlinux 0xa8a0c03d blk_init_tags +EXPORT_SYMBOL vmlinux 0xa8a6f639 __check_region +EXPORT_SYMBOL vmlinux 0xa8b7219b netlink_rcv_skb +EXPORT_SYMBOL vmlinux 0xa8ced546 _lv1_net_set_interrupt_status_indicator +EXPORT_SYMBOL vmlinux 0xa8fef7bb security_unix_may_send +EXPORT_SYMBOL vmlinux 0xa907290a dump_write +EXPORT_SYMBOL vmlinux 0xa91126c1 dquot_get_dqblk +EXPORT_SYMBOL vmlinux 0xa916b694 strnlen +EXPORT_SYMBOL vmlinux 0xa9185e4a remove_proc_entry +EXPORT_SYMBOL vmlinux 0xa91c77b6 _lv1_end_of_interrupt +EXPORT_SYMBOL vmlinux 0xa9211144 scm_detach_fds +EXPORT_SYMBOL vmlinux 0xa921c0fe tcf_hash_release +EXPORT_SYMBOL vmlinux 0xa93a6a23 skb_copy_datagram_from_iovec +EXPORT_SYMBOL vmlinux 0xa93ba88e proc_doulongvec_minmax +EXPORT_SYMBOL vmlinux 0xa945a884 __mark_inode_dirty +EXPORT_SYMBOL vmlinux 0xa96d5731 neigh_seq_next +EXPORT_SYMBOL vmlinux 0xa981fa2d iov_iter_fault_in_readable +EXPORT_SYMBOL vmlinux 0xa99ee981 request_key_async +EXPORT_SYMBOL vmlinux 0xa9a25301 blk_alloc_queue +EXPORT_SYMBOL vmlinux 0xa9ae562b pci_stop_and_remove_behind_bridge +EXPORT_SYMBOL vmlinux 0xa9d3ac19 dm_io +EXPORT_SYMBOL vmlinux 0xa9d5fd68 pfifo_fast_ops +EXPORT_SYMBOL vmlinux 0xa9dc2fe4 blk_start_queue +EXPORT_SYMBOL vmlinux 0xa9ea5ec2 scsi_target_quiesce +EXPORT_SYMBOL vmlinux 0xa9f6d0be pci_find_bus +EXPORT_SYMBOL vmlinux 0xaa0edca8 pasemi_dma_alloc_fun +EXPORT_SYMBOL vmlinux 0xaa33fadc tty_mutex +EXPORT_SYMBOL vmlinux 0xaa36d3ce find_get_page +EXPORT_SYMBOL vmlinux 0xaa3b1ba2 backlight_force_update +EXPORT_SYMBOL vmlinux 0xaa46e87e lg_local_unlock +EXPORT_SYMBOL vmlinux 0xaa608e50 phy_register_fixup +EXPORT_SYMBOL vmlinux 0xaa6e4df5 _raw_write_lock_irqsave +EXPORT_SYMBOL vmlinux 0xaa90c32f jbd2_journal_check_used_features +EXPORT_SYMBOL vmlinux 0xaaa42a21 __invalidate_device +EXPORT_SYMBOL vmlinux 0xaaca8abc genphy_resume +EXPORT_SYMBOL vmlinux 0xaad34236 xfrm4_prepare_output +EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state +EXPORT_SYMBOL vmlinux 0xaaea1a28 d_add_ci +EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp +EXPORT_SYMBOL vmlinux 0xaafe7c12 udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0xab03abca send_sig_info +EXPORT_SYMBOL vmlinux 0xab1d6cc1 param_get_long +EXPORT_SYMBOL vmlinux 0xab240b6f __xfrm_decode_session +EXPORT_SYMBOL vmlinux 0xab61422a agp_collect_device_status +EXPORT_SYMBOL vmlinux 0xab66f611 _lv1_set_lpm_trigger_control +EXPORT_SYMBOL vmlinux 0xab6bde28 sysctl_max_syn_backlog +EXPORT_SYMBOL vmlinux 0xabcaa577 free_anon_bdev +EXPORT_SYMBOL vmlinux 0xabd0c91c rtc_time_to_tm +EXPORT_SYMBOL vmlinux 0xabd12e00 do_truncate +EXPORT_SYMBOL vmlinux 0xabdaaa1e posix_lock_file +EXPORT_SYMBOL vmlinux 0xabdf63d4 macio_register_driver +EXPORT_SYMBOL vmlinux 0xac0ba8c1 blk_iopoll_disable +EXPORT_SYMBOL vmlinux 0xac26b820 _raw_write_lock +EXPORT_SYMBOL vmlinux 0xac591ad6 pcim_iomap_regions_request_all +EXPORT_SYMBOL vmlinux 0xac6855b0 gen_kill_estimator +EXPORT_SYMBOL vmlinux 0xac6af7c3 inode_claim_rsv_space +EXPORT_SYMBOL vmlinux 0xaccabc6a in4_pton +EXPORT_SYMBOL vmlinux 0xaccd39ac ip6_xmit +EXPORT_SYMBOL vmlinux 0xacd14ab8 _lv1_construct_logical_spe +EXPORT_SYMBOL vmlinux 0xace9dfe7 tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup +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 0xad270d9b pci_disable_ltr +EXPORT_SYMBOL vmlinux 0xad3adf2b generic_cont_expand_simple +EXPORT_SYMBOL vmlinux 0xad459f30 abx500_startup_irq_enabled +EXPORT_SYMBOL vmlinux 0xad466018 quota_send_warning +EXPORT_SYMBOL vmlinux 0xad469373 igrab +EXPORT_SYMBOL vmlinux 0xad50cebb i8253_lock +EXPORT_SYMBOL vmlinux 0xad575e61 new_inode +EXPORT_SYMBOL vmlinux 0xad6b6cec seq_lseek +EXPORT_SYMBOL vmlinux 0xad79bddb rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0xad84bef8 dm_table_event +EXPORT_SYMBOL vmlinux 0xad8b1ebb input_mt_destroy_slots +EXPORT_SYMBOL vmlinux 0xad96ba19 security_sb_set_mnt_opts +EXPORT_SYMBOL vmlinux 0xadaa2657 cpufreq_register_notifier +EXPORT_SYMBOL vmlinux 0xadaaa151 cpufreq_get_policy +EXPORT_SYMBOL vmlinux 0xadb5559d param_ops_byte +EXPORT_SYMBOL vmlinux 0xadc1b18a security_mmap_file +EXPORT_SYMBOL vmlinux 0xaddb3f74 generic_write_sync +EXPORT_SYMBOL vmlinux 0xade986de inet_recvmsg +EXPORT_SYMBOL vmlinux 0xadeffe25 _lv1_gpu_context_intr +EXPORT_SYMBOL vmlinux 0xadfe3726 devm_ioremap +EXPORT_SYMBOL vmlinux 0xae070cc2 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0xae25871b gen_pool_add_virt +EXPORT_SYMBOL vmlinux 0xae453fed bio_integrity_advance +EXPORT_SYMBOL vmlinux 0xae464c55 page_follow_link_light +EXPORT_SYMBOL vmlinux 0xae4fef31 agp_generic_alloc_user +EXPORT_SYMBOL vmlinux 0xae545f06 _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xae56bd21 seq_open +EXPORT_SYMBOL vmlinux 0xae60a845 genphy_suspend +EXPORT_SYMBOL vmlinux 0xae6479ac skb_append +EXPORT_SYMBOL vmlinux 0xae65d74e xfrm_user_policy +EXPORT_SYMBOL vmlinux 0xae729e59 security_req_classify_flow +EXPORT_SYMBOL vmlinux 0xae7310e4 kill_pgrp +EXPORT_SYMBOL vmlinux 0xae884699 user_revoke +EXPORT_SYMBOL vmlinux 0xae8c3d2a keyring_clear +EXPORT_SYMBOL vmlinux 0xae96c8fe invalidate_partition +EXPORT_SYMBOL vmlinux 0xaeb797fb dev_addr_add_multiple +EXPORT_SYMBOL vmlinux 0xaee19b10 journal_ack_err +EXPORT_SYMBOL vmlinux 0xaeeb4832 default_file_splice_read +EXPORT_SYMBOL vmlinux 0xaf03528e dev_printk +EXPORT_SYMBOL vmlinux 0xaf053a76 padata_set_cpumask +EXPORT_SYMBOL vmlinux 0xaf063510 _raw_spin_lock_bh +EXPORT_SYMBOL vmlinux 0xaf0bdca5 i2c_use_client +EXPORT_SYMBOL vmlinux 0xaf2d872c prepare_to_wait +EXPORT_SYMBOL vmlinux 0xaf3086b5 jbd2_journal_file_inode +EXPORT_SYMBOL vmlinux 0xaf31960f sk_dst_check +EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level +EXPORT_SYMBOL vmlinux 0xaf458364 agp_backend_acquire +EXPORT_SYMBOL vmlinux 0xaf64ad0d zlib_deflate +EXPORT_SYMBOL vmlinux 0xaf68de46 dcache_dir_open +EXPORT_SYMBOL vmlinux 0xaf6ae696 kstrndup +EXPORT_SYMBOL vmlinux 0xaf91d89f __kernel_param_lock +EXPORT_SYMBOL vmlinux 0xafd68c33 flex_array_free +EXPORT_SYMBOL vmlinux 0xafef8fa9 register_memory_notifier +EXPORT_SYMBOL vmlinux 0xaff9b75c vc_resize +EXPORT_SYMBOL vmlinux 0xafff3d1d mempool_alloc +EXPORT_SYMBOL vmlinux 0xb0084cc4 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0xb00d93b1 cfb_fillrect +EXPORT_SYMBOL vmlinux 0xb05d6233 xfrm_policy_alloc +EXPORT_SYMBOL vmlinux 0xb05fc310 sysctl_rmem_max +EXPORT_SYMBOL vmlinux 0xb07931ea i2c_add_adapter +EXPORT_SYMBOL vmlinux 0xb0864549 vsc824x_add_skew +EXPORT_SYMBOL vmlinux 0xb0a42b04 fb_set_suspend +EXPORT_SYMBOL vmlinux 0xb0aae2f9 register_key_type +EXPORT_SYMBOL vmlinux 0xb0b847ac __bitmap_full +EXPORT_SYMBOL vmlinux 0xb0e10781 get_option +EXPORT_SYMBOL vmlinux 0xb1080733 tcp_proc_unregister +EXPORT_SYMBOL vmlinux 0xb12d956c dev_mc_sync +EXPORT_SYMBOL vmlinux 0xb12e81d8 dev_get_stats +EXPORT_SYMBOL vmlinux 0xb147a855 dql_reset +EXPORT_SYMBOL vmlinux 0xb15aa6c1 pci_do_scan_bus +EXPORT_SYMBOL vmlinux 0xb15bd8fa tb_ticks_per_sec +EXPORT_SYMBOL vmlinux 0xb1645a2e sg_free_table +EXPORT_SYMBOL vmlinux 0xb165ef45 __irq_regs +EXPORT_SYMBOL vmlinux 0xb16e8d13 seq_read +EXPORT_SYMBOL vmlinux 0xb1753374 sock_kfree_s +EXPORT_SYMBOL vmlinux 0xb18a858d genphy_config_aneg +EXPORT_SYMBOL vmlinux 0xb18aff3d aio_complete +EXPORT_SYMBOL vmlinux 0xb19760c3 bitmap_onto +EXPORT_SYMBOL vmlinux 0xb1b13bcd mmc_remove_host +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 0xb1cfc038 sk_stop_timer +EXPORT_SYMBOL vmlinux 0xb1ea3842 unlock_new_inode +EXPORT_SYMBOL vmlinux 0xb1f364d3 of_find_node_by_type +EXPORT_SYMBOL vmlinux 0xb21bf772 jbd2_journal_ack_err +EXPORT_SYMBOL vmlinux 0xb23cef8e simple_rmdir +EXPORT_SYMBOL vmlinux 0xb24358fc neigh_destroy +EXPORT_SYMBOL vmlinux 0xb263f309 netdev_class_create_file +EXPORT_SYMBOL vmlinux 0xb2682405 utf8_to_utf32 +EXPORT_SYMBOL vmlinux 0xb274439c padata_remove_cpu +EXPORT_SYMBOL vmlinux 0xb274e752 blk_integrity_unregister +EXPORT_SYMBOL vmlinux 0xb2be6e92 netdev_stats_to_stats64 +EXPORT_SYMBOL vmlinux 0xb2d307de param_ops_short +EXPORT_SYMBOL vmlinux 0xb2d50101 tty_port_init +EXPORT_SYMBOL vmlinux 0xb30ea8a3 alloc_fcdev +EXPORT_SYMBOL vmlinux 0xb3305d52 send_remote_softirq +EXPORT_SYMBOL vmlinux 0xb34129f0 mmc_power_save_host +EXPORT_SYMBOL vmlinux 0xb35a2788 tcp_syn_flood_action +EXPORT_SYMBOL vmlinux 0xb38e4b04 netlink_unicast +EXPORT_SYMBOL vmlinux 0xb3a6e0ed __blk_run_queue +EXPORT_SYMBOL vmlinux 0xb3bf73df cpu_active_mask +EXPORT_SYMBOL vmlinux 0xb3f5e95a arp_invalidate +EXPORT_SYMBOL vmlinux 0xb3f9aa5b migrate_page +EXPORT_SYMBOL vmlinux 0xb401e673 iterate_mounts +EXPORT_SYMBOL vmlinux 0xb40d7766 d_validate +EXPORT_SYMBOL vmlinux 0xb42180be pci_request_region +EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked +EXPORT_SYMBOL vmlinux 0xb4537bab tcp_enter_memory_pressure +EXPORT_SYMBOL vmlinux 0xb4552733 twl6040_reg_write +EXPORT_SYMBOL vmlinux 0xb468884a inet6_del_protocol +EXPORT_SYMBOL vmlinux 0xb4709322 scsi_dev_info_add_list +EXPORT_SYMBOL vmlinux 0xb470f2d6 inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xb4d6c428 rtnl_configure_link +EXPORT_SYMBOL vmlinux 0xb4f34a5f con_set_default_unimap +EXPORT_SYMBOL vmlinux 0xb4f5abb0 input_unregister_handler +EXPORT_SYMBOL vmlinux 0xb504695f kmem_cache_free +EXPORT_SYMBOL vmlinux 0xb507457f of_get_next_child +EXPORT_SYMBOL vmlinux 0xb5174b56 ip_cmsg_recv +EXPORT_SYMBOL vmlinux 0xb5199736 scsi_scan_target +EXPORT_SYMBOL vmlinux 0xb51f8f8e crypto_sha1_update +EXPORT_SYMBOL vmlinux 0xb532d716 __nlmsg_put +EXPORT_SYMBOL vmlinux 0xb536a563 d_splice_alias +EXPORT_SYMBOL vmlinux 0xb53f065c mmc_resume_host +EXPORT_SYMBOL vmlinux 0xb54533f7 usecs_to_jiffies +EXPORT_SYMBOL vmlinux 0xb54c0099 tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0xb55a2b03 jbd2_journal_blocks_per_page +EXPORT_SYMBOL vmlinux 0xb5601af2 set_bdi_congested +EXPORT_SYMBOL vmlinux 0xb56bfd9e smu_spinwait_cmd +EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink +EXPORT_SYMBOL vmlinux 0xb5800ed3 d_lookup +EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev +EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy +EXPORT_SYMBOL vmlinux 0xb5bf0efc iw_handler_get_thrspy +EXPORT_SYMBOL vmlinux 0xb614f0f6 __task_pid_nr_ns +EXPORT_SYMBOL vmlinux 0xb6244511 sg_init_one +EXPORT_SYMBOL vmlinux 0xb65d8345 pci_target_state +EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt +EXPORT_SYMBOL vmlinux 0xb6822a33 radix_tree_gang_lookup_tag +EXPORT_SYMBOL vmlinux 0xb689e373 thermal_generate_netlink_event +EXPORT_SYMBOL vmlinux 0xb68bfa9d node_states +EXPORT_SYMBOL vmlinux 0xb6a0ab9d iget_locked +EXPORT_SYMBOL vmlinux 0xb6a61a86 qdisc_get_rtab +EXPORT_SYMBOL vmlinux 0xb6a68816 find_last_bit +EXPORT_SYMBOL vmlinux 0xb6b970a0 blk_queue_bounce +EXPORT_SYMBOL vmlinux 0xb6babd4b security_path_mknod +EXPORT_SYMBOL vmlinux 0xb6c5a973 scsi_show_result +EXPORT_SYMBOL vmlinux 0xb6d99e68 scsi_get_command +EXPORT_SYMBOL vmlinux 0xb734a8b1 ps3_dma_region_free +EXPORT_SYMBOL vmlinux 0xb73f450d unmap_underlying_metadata +EXPORT_SYMBOL vmlinux 0xb74dac50 pcim_iounmap_regions +EXPORT_SYMBOL vmlinux 0xb7739aae tcp_v4_destroy_sock +EXPORT_SYMBOL vmlinux 0xb78ddc35 __pci_register_driver +EXPORT_SYMBOL vmlinux 0xb7a38a94 __xfrm_init_state +EXPORT_SYMBOL vmlinux 0xb7e3a61f xfrm_sad_getinfo +EXPORT_SYMBOL vmlinux 0xb7eb6af0 serio_rescan +EXPORT_SYMBOL vmlinux 0xb8088113 journal_unlock_updates +EXPORT_SYMBOL vmlinux 0xb8183bcf netif_rx_ni +EXPORT_SYMBOL vmlinux 0xb8212681 generic_file_aio_read +EXPORT_SYMBOL vmlinux 0xb8290fdb ipv4_specific +EXPORT_SYMBOL vmlinux 0xb835b3e4 radix_tree_prev_hole +EXPORT_SYMBOL vmlinux 0xb8372432 mmc_add_host +EXPORT_SYMBOL vmlinux 0xb8585320 pci_dev_get +EXPORT_SYMBOL vmlinux 0xb85a9742 netlink_broadcast +EXPORT_SYMBOL vmlinux 0xb86123be _lv1_write_repository_node +EXPORT_SYMBOL vmlinux 0xb86c422c sk_common_release +EXPORT_SYMBOL vmlinux 0xb86e4ab9 random32 +EXPORT_SYMBOL vmlinux 0xb8904b5b of_device_is_compatible +EXPORT_SYMBOL vmlinux 0xb89af9bf srandom32 +EXPORT_SYMBOL vmlinux 0xb8a30c7e _lv1_add_lpm_event_bookmark +EXPORT_SYMBOL vmlinux 0xb8cad3b4 blk_queue_io_min +EXPORT_SYMBOL vmlinux 0xb8f11437 mach_powernv +EXPORT_SYMBOL vmlinux 0xb8f25fe0 simple_setattr +EXPORT_SYMBOL vmlinux 0xb901f2fd phy_driver_register +EXPORT_SYMBOL vmlinux 0xb9045461 macio_release_resource +EXPORT_SYMBOL vmlinux 0xb91043d7 blk_set_stacking_limits +EXPORT_SYMBOL vmlinux 0xb91bcb89 dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xb935a9e1 sk_reset_txq +EXPORT_SYMBOL vmlinux 0xb9368058 pci_fixup_cardbus +EXPORT_SYMBOL vmlinux 0xb93c766c tty_pair_get_tty +EXPORT_SYMBOL vmlinux 0xb961a163 set_page_dirty +EXPORT_SYMBOL vmlinux 0xb98a0185 rtc_tm_to_time +EXPORT_SYMBOL vmlinux 0xb997a793 inode_init_always +EXPORT_SYMBOL vmlinux 0xb9ad8cfe blk_get_request +EXPORT_SYMBOL vmlinux 0xb9b4e181 alloc_pages_exact_nid +EXPORT_SYMBOL vmlinux 0xb9c3bd9a eth_header_parse +EXPORT_SYMBOL vmlinux 0xba122a2c smu_done_complete +EXPORT_SYMBOL vmlinux 0xba35e6b8 unlink_framebuffer +EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy +EXPORT_SYMBOL vmlinux 0xba6555f5 journal_forget +EXPORT_SYMBOL vmlinux 0xba6660fa pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xbae6392d vfs_readv +EXPORT_SYMBOL vmlinux 0xbb05d0b8 lock_rename +EXPORT_SYMBOL vmlinux 0xbb189cad disallow_signal +EXPORT_SYMBOL vmlinux 0xbb288f1c journal_flush +EXPORT_SYMBOL vmlinux 0xbb34134a iov_shorten +EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer +EXPORT_SYMBOL vmlinux 0xbb5d343d xfrm_get_acqseq +EXPORT_SYMBOL vmlinux 0xbb6757d2 xfrm_unregister_type +EXPORT_SYMBOL vmlinux 0xbb76af03 dquot_mark_dquot_dirty +EXPORT_SYMBOL vmlinux 0xbb901874 fb_get_mode +EXPORT_SYMBOL vmlinux 0xbb99125c get_default_font +EXPORT_SYMBOL vmlinux 0xbbaeb559 memcg_socket_limit_enabled +EXPORT_SYMBOL vmlinux 0xbbe6e505 path_is_under +EXPORT_SYMBOL vmlinux 0xbbea0604 devm_request_and_ioremap +EXPORT_SYMBOL vmlinux 0xbc07020e scsi_print_command +EXPORT_SYMBOL vmlinux 0xbc1e8d43 lookup_hash +EXPORT_SYMBOL vmlinux 0xbc245ce1 pci_get_slot +EXPORT_SYMBOL vmlinux 0xbc2a60af __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0xbc316de4 tty_termios_input_baud_rate +EXPORT_SYMBOL vmlinux 0xbc3f6afa down_read +EXPORT_SYMBOL vmlinux 0xbc57a783 __frontswap_load +EXPORT_SYMBOL vmlinux 0xbca37688 vfs_writev +EXPORT_SYMBOL vmlinux 0xbcb6db49 vlan_vids_add_by_dev +EXPORT_SYMBOL vmlinux 0xbcbedf72 register_exec_domain +EXPORT_SYMBOL vmlinux 0xbcc308bb strnlen_user +EXPORT_SYMBOL vmlinux 0xbccdc2f6 flex_array_put +EXPORT_SYMBOL vmlinux 0xbcdec83c __scm_destroy +EXPORT_SYMBOL vmlinux 0xbcfbfb96 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xbd2657e9 generic_file_llseek +EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init +EXPORT_SYMBOL vmlinux 0xbd4976fd devm_gpio_request +EXPORT_SYMBOL vmlinux 0xbd6d41d0 read_cache_page_async +EXPORT_SYMBOL vmlinux 0xbd7f8c9b idr_get_next +EXPORT_SYMBOL vmlinux 0xbd803510 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0xbd827fd7 ppc_md +EXPORT_SYMBOL vmlinux 0xbd8cfa15 pasemi_write_mac_reg +EXPORT_SYMBOL vmlinux 0xbd906b95 truncate_inode_pages_range +EXPORT_SYMBOL vmlinux 0xbda78737 tcf_exts_change +EXPORT_SYMBOL vmlinux 0xbdbe7378 cookie_check_timestamp +EXPORT_SYMBOL vmlinux 0xbdd325d1 inode_change_ok +EXPORT_SYMBOL vmlinux 0xbde1e084 input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0xbde5ace8 __per_cpu_offset +EXPORT_SYMBOL vmlinux 0xbded4a36 find_vma +EXPORT_SYMBOL vmlinux 0xbdf5c25c rb_next +EXPORT_SYMBOL vmlinux 0xbdfb2a0d skb_copy_expand +EXPORT_SYMBOL vmlinux 0xbe10f9b8 ihold +EXPORT_SYMBOL vmlinux 0xbe121c68 mddev_congested +EXPORT_SYMBOL vmlinux 0xbe152403 sync_inode_metadata +EXPORT_SYMBOL vmlinux 0xbe1ea414 generic_make_request +EXPORT_SYMBOL vmlinux 0xbe1f03ad i2c_smbus_read_byte_data +EXPORT_SYMBOL vmlinux 0xbe254e92 param_set_ushort +EXPORT_SYMBOL vmlinux 0xbe29fb4e agp_generic_alloc_page +EXPORT_SYMBOL vmlinux 0xbe2c0274 add_timer +EXPORT_SYMBOL vmlinux 0xbe46dfc5 neigh_changeaddr +EXPORT_SYMBOL vmlinux 0xbe5c3ce9 napi_get_frags +EXPORT_SYMBOL vmlinux 0xbe77aebe down_write_trylock +EXPORT_SYMBOL vmlinux 0xbe814159 ida_remove +EXPORT_SYMBOL vmlinux 0xbea1c29a open_exec +EXPORT_SYMBOL vmlinux 0xbec17dd3 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xbecd326e __pagevec_release +EXPORT_SYMBOL vmlinux 0xbedc586e bio_map_user +EXPORT_SYMBOL vmlinux 0xbeeea11b ndisc_build_skb +EXPORT_SYMBOL vmlinux 0xbeefb34a qdisc_class_hash_grow +EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule +EXPORT_SYMBOL vmlinux 0xbf0a844f pci_reenable_device +EXPORT_SYMBOL vmlinux 0xbf31d697 __module_get +EXPORT_SYMBOL vmlinux 0xbf36fd95 replace_mount_options +EXPORT_SYMBOL vmlinux 0xbf46108e inet6_getname +EXPORT_SYMBOL vmlinux 0xbf4897b8 scsi_track_queue_full +EXPORT_SYMBOL vmlinux 0xbf5c849b ip_getsockopt +EXPORT_SYMBOL vmlinux 0xbf5cf616 inet6_register_protosw +EXPORT_SYMBOL vmlinux 0xbf7d4ac3 phy_stop +EXPORT_SYMBOL vmlinux 0xbf7fd2f5 schedule_timeout_killable +EXPORT_SYMBOL vmlinux 0xbf813d4f blk_rq_unmap_user +EXPORT_SYMBOL vmlinux 0xbf8ba54a vprintk +EXPORT_SYMBOL vmlinux 0xbf932c5e netpoll_setup +EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa28684 simple_pin_fs +EXPORT_SYMBOL vmlinux 0xbfa402ae __ip_select_ident +EXPORT_SYMBOL vmlinux 0xbfabfe59 __debugger_iabr_match +EXPORT_SYMBOL vmlinux 0xbfb8b0b7 _raw_read_lock_irqsave +EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc407b4 param_ops_bint +EXPORT_SYMBOL vmlinux 0xbfdec098 km_report +EXPORT_SYMBOL vmlinux 0xbfdff814 of_get_address +EXPORT_SYMBOL vmlinux 0xbfe828a2 journal_abort +EXPORT_SYMBOL vmlinux 0xbfe8f2ad of_parse_phandle +EXPORT_SYMBOL vmlinux 0xbfeb8218 tty_pair_get_pty +EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xbff8182c plpar_hcall_norets +EXPORT_SYMBOL vmlinux 0xc02d8907 kernel_listen +EXPORT_SYMBOL vmlinux 0xc03e9ff3 mark_page_accessed +EXPORT_SYMBOL vmlinux 0xc0580937 rb_erase +EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked +EXPORT_SYMBOL vmlinux 0xc0823e4c twl_i2c_write +EXPORT_SYMBOL vmlinux 0xc0834484 d_instantiate_unique +EXPORT_SYMBOL vmlinux 0xc087b3f0 xfrm_spd_getinfo +EXPORT_SYMBOL vmlinux 0xc09c426e input_handler_for_each_handle +EXPORT_SYMBOL vmlinux 0xc0a1b3f3 __netdev_printk +EXPORT_SYMBOL vmlinux 0xc0a3d105 find_next_bit +EXPORT_SYMBOL vmlinux 0xc0d3c351 security_path_rename +EXPORT_SYMBOL vmlinux 0xc10c83b0 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xc1123528 scsi_init_io +EXPORT_SYMBOL vmlinux 0xc13511d7 cpumask_next_and +EXPORT_SYMBOL vmlinux 0xc1490d71 insert_inode_locked +EXPORT_SYMBOL vmlinux 0xc14a6eda tcf_register_action +EXPORT_SYMBOL vmlinux 0xc1528673 pci_enable_device +EXPORT_SYMBOL vmlinux 0xc153a045 vfs_llseek +EXPORT_SYMBOL vmlinux 0xc15652fb set_user_nice +EXPORT_SYMBOL vmlinux 0xc15d820c neigh_parms_release +EXPORT_SYMBOL vmlinux 0xc16ba3eb ifla_policy +EXPORT_SYMBOL vmlinux 0xc172c37d datagram_poll +EXPORT_SYMBOL vmlinux 0xc17deb31 dmam_free_noncoherent +EXPORT_SYMBOL vmlinux 0xc181b67e netdev_notice +EXPORT_SYMBOL vmlinux 0xc18b2d27 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xc1c24e43 generic_pipe_buf_get +EXPORT_SYMBOL vmlinux 0xc1c2dd09 __hw_addr_flush +EXPORT_SYMBOL vmlinux 0xc1ce53f3 ata_port_printk +EXPORT_SYMBOL vmlinux 0xc1d7d179 blk_stack_limits +EXPORT_SYMBOL vmlinux 0xc1f43288 pci_add_new_bus +EXPORT_SYMBOL vmlinux 0xc22b50ad param_set_bint +EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc256e762 __bitmap_equal +EXPORT_SYMBOL vmlinux 0xc278ec00 set_disk_ro +EXPORT_SYMBOL vmlinux 0xc28e75d5 qdisc_reset +EXPORT_SYMBOL vmlinux 0xc29bf967 strspn +EXPORT_SYMBOL vmlinux 0xc2c6f9b9 balance_dirty_pages_ratelimited_nr +EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices +EXPORT_SYMBOL vmlinux 0xc2e9d048 d_genocide +EXPORT_SYMBOL vmlinux 0xc2f9c045 timespec_to_jiffies +EXPORT_SYMBOL vmlinux 0xc2fb9ee1 _lv1_shutdown_logical_partition +EXPORT_SYMBOL vmlinux 0xc308e45a filp_open +EXPORT_SYMBOL vmlinux 0xc310b981 strnstr +EXPORT_SYMBOL vmlinux 0xc310e7af do_splice_to +EXPORT_SYMBOL vmlinux 0xc314c3d2 __cputime_jiffies_factor +EXPORT_SYMBOL vmlinux 0xc32d4285 ll_rw_block +EXPORT_SYMBOL vmlinux 0xc34ff0bb clocksource_change_rating +EXPORT_SYMBOL vmlinux 0xc38cc6d5 mount_ns +EXPORT_SYMBOL vmlinux 0xc38fd8cc tcf_hash_create +EXPORT_SYMBOL vmlinux 0xc390ddff dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xc39c3704 hvcs_free_partner_info +EXPORT_SYMBOL vmlinux 0xc3ccd270 dquot_quota_on_mount +EXPORT_SYMBOL vmlinux 0xc3dfb486 register_sysctl +EXPORT_SYMBOL vmlinux 0xc3e12a42 ip_route_input_common +EXPORT_SYMBOL vmlinux 0xc408721b dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0xc41f1696 _lv1_configure_virtual_uart_irq +EXPORT_SYMBOL vmlinux 0xc422e9c1 pmac_resume_agp_for_card +EXPORT_SYMBOL vmlinux 0xc4241d2a padata_set_cpumasks +EXPORT_SYMBOL vmlinux 0xc45755de find_next_zero_bit_le +EXPORT_SYMBOL vmlinux 0xc46cd68a pci_bus_write_config_dword +EXPORT_SYMBOL vmlinux 0xc47cdf9c _raw_write_lock_bh +EXPORT_SYMBOL vmlinux 0xc4833b98 truncate_setsize +EXPORT_SYMBOL vmlinux 0xc499ae1e kstrdup +EXPORT_SYMBOL vmlinux 0xc4db6c9e release_sock +EXPORT_SYMBOL vmlinux 0xc5089620 _lv1_stop_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xc50bab05 unregister_shrinker +EXPORT_SYMBOL vmlinux 0xc5367f62 of_match_device +EXPORT_SYMBOL vmlinux 0xc5534d64 ioread16 +EXPORT_SYMBOL vmlinux 0xc55b14fb alloc_pci_dev +EXPORT_SYMBOL vmlinux 0xc55c2a9d inode_sb_list_lock +EXPORT_SYMBOL vmlinux 0xc55de23c percpu_counter_set +EXPORT_SYMBOL vmlinux 0xc56c805f dquot_disable +EXPORT_SYMBOL vmlinux 0xc57c68c3 mmc_card_can_sleep +EXPORT_SYMBOL vmlinux 0xc5a5244c drop_nlink +EXPORT_SYMBOL vmlinux 0xc5c6e959 copy_strings_kernel +EXPORT_SYMBOL vmlinux 0xc5d6ccb1 pci_stop_and_remove_bus_device +EXPORT_SYMBOL vmlinux 0xc5d910c2 __remove_inode_hash +EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot +EXPORT_SYMBOL vmlinux 0xc5f46566 rb_augment_insert +EXPORT_SYMBOL vmlinux 0xc621e1cc tty_port_tty_set +EXPORT_SYMBOL vmlinux 0xc631580a console_unlock +EXPORT_SYMBOL vmlinux 0xc63454a0 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0xc6367da5 twl6040_reg_read +EXPORT_SYMBOL vmlinux 0xc65abeb7 agp3_generic_sizes +EXPORT_SYMBOL vmlinux 0xc663b075 __ioremap +EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif +EXPORT_SYMBOL vmlinux 0xc6694fa6 unregister_framebuffer +EXPORT_SYMBOL vmlinux 0xc6722d0c ip4_datagram_connect +EXPORT_SYMBOL vmlinux 0xc6782f38 __secpath_destroy +EXPORT_SYMBOL vmlinux 0xc67ba562 bio_endio +EXPORT_SYMBOL vmlinux 0xc67e3668 __xfrm_policy_check +EXPORT_SYMBOL vmlinux 0xc6a32600 block_read_full_page +EXPORT_SYMBOL vmlinux 0xc6abdd75 __cleancache_init_fs +EXPORT_SYMBOL vmlinux 0xc6b22c71 __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0xc6b722ea md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0xc6baf494 scsi_nonblockable_ioctl +EXPORT_SYMBOL vmlinux 0xc6c7d88f unlock_super +EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r +EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable +EXPORT_SYMBOL vmlinux 0xc702156b param_get_ushort +EXPORT_SYMBOL vmlinux 0xc7685d39 input_set_abs_params +EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling +EXPORT_SYMBOL vmlinux 0xc7829d03 dquot_file_open +EXPORT_SYMBOL vmlinux 0xc792fcbd vmap +EXPORT_SYMBOL vmlinux 0xc797fdeb jbd2_journal_revoke +EXPORT_SYMBOL vmlinux 0xc79bcd36 dm_vcalloc +EXPORT_SYMBOL vmlinux 0xc79c3188 call_usermodehelper_fns +EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7bce7c9 neigh_direct_output +EXPORT_SYMBOL vmlinux 0xc7bd4397 compat_nf_getsockopt +EXPORT_SYMBOL vmlinux 0xc7db9b5e filemap_write_and_wait_range +EXPORT_SYMBOL vmlinux 0xc7f45c99 skb_copy_and_csum_datagram_iovec +EXPORT_SYMBOL vmlinux 0xc80a9a49 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc80e10f1 mmc_suspend_host +EXPORT_SYMBOL vmlinux 0xc81a1476 blk_rq_map_integrity_sg +EXPORT_SYMBOL vmlinux 0xc8280364 dev_uc_init +EXPORT_SYMBOL vmlinux 0xc834a67c ip6_frag_init +EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu +EXPORT_SYMBOL vmlinux 0xc8741929 _dev_info +EXPORT_SYMBOL vmlinux 0xc87823bf twl_i2c_read_u8 +EXPORT_SYMBOL vmlinux 0xc897c382 sg_init_table +EXPORT_SYMBOL vmlinux 0xc8a4bacf idr_replace +EXPORT_SYMBOL vmlinux 0xc8b57c27 autoremove_wake_function +EXPORT_SYMBOL vmlinux 0xc8ceb9ca dev_addr_flush +EXPORT_SYMBOL vmlinux 0xc8de19f0 unlock_rename +EXPORT_SYMBOL vmlinux 0xc8e31d75 _lv1_configure_irq_state_bitmap +EXPORT_SYMBOL vmlinux 0xc8fb2267 input_set_capability +EXPORT_SYMBOL vmlinux 0xc90a235a dm_get_device +EXPORT_SYMBOL vmlinux 0xc9183c9d pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0xc91ff664 down_read_trylock +EXPORT_SYMBOL vmlinux 0xc9388ddc linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0xc9770e0c inet_listen +EXPORT_SYMBOL vmlinux 0xc978479a xz_dec_run +EXPORT_SYMBOL vmlinux 0xc97a0659 pcie_port_service_register +EXPORT_SYMBOL vmlinux 0xc987b056 sk_release_kernel +EXPORT_SYMBOL vmlinux 0xc994c7ff pci_match_id +EXPORT_SYMBOL vmlinux 0xc996d097 del_timer +EXPORT_SYMBOL vmlinux 0xc99e2a55 twl_rev +EXPORT_SYMBOL vmlinux 0xc9a15cd3 single_open +EXPORT_SYMBOL vmlinux 0xc9d6376b simple_open +EXPORT_SYMBOL vmlinux 0xc9e72bcd scsi_dma_unmap +EXPORT_SYMBOL vmlinux 0xc9fc598d pasemi_read_dma_reg +EXPORT_SYMBOL vmlinux 0xca06a242 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xca1cdc7c md_write_end +EXPORT_SYMBOL vmlinux 0xca1d439b vfs_unlink +EXPORT_SYMBOL vmlinux 0xca1ffcc3 iterate_supers_type +EXPORT_SYMBOL vmlinux 0xca3492f3 mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0xca4dec01 scsi_release_buffers +EXPORT_SYMBOL vmlinux 0xca543cf8 alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xca5dbc50 scsi_print_sense_hdr +EXPORT_SYMBOL vmlinux 0xca750a0b __frontswap_store +EXPORT_SYMBOL vmlinux 0xca825895 pmu_suspend +EXPORT_SYMBOL vmlinux 0xcaabf3f9 pasemi_write_iob_reg +EXPORT_SYMBOL vmlinux 0xcad6be44 journal_check_available_features +EXPORT_SYMBOL vmlinux 0xcae78c39 remove_arg_zero +EXPORT_SYMBOL vmlinux 0xcaee8e28 unlock_page +EXPORT_SYMBOL vmlinux 0xcaf364b6 bio_clone +EXPORT_SYMBOL vmlinux 0xcb106b77 xfrm_unregister_mode +EXPORT_SYMBOL vmlinux 0xcb213947 of_find_device_by_node +EXPORT_SYMBOL vmlinux 0xcb2a9d61 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0xcb3fb8dd blk_rq_init +EXPORT_SYMBOL vmlinux 0xcb59f7a6 sock_create +EXPORT_SYMBOL vmlinux 0xcb7131fb fb_get_options +EXPORT_SYMBOL vmlinux 0xcb8f7c4c phy_attach +EXPORT_SYMBOL vmlinux 0xcb99edb0 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0xcba6182c tcp_proc_register +EXPORT_SYMBOL vmlinux 0xcbb683ac dma_async_tx_descriptor_init +EXPORT_SYMBOL vmlinux 0xcbc495d1 journal_check_used_features +EXPORT_SYMBOL vmlinux 0xcbc6c8c9 secpath_dup +EXPORT_SYMBOL vmlinux 0xcbc9557f unregister_sysrq_key +EXPORT_SYMBOL vmlinux 0xcbcba947 security_path_symlink +EXPORT_SYMBOL vmlinux 0xcbcdc4d4 jbd2_journal_try_to_free_buffers +EXPORT_SYMBOL vmlinux 0xcbe8b038 _lv1_configure_execution_time_variable +EXPORT_SYMBOL vmlinux 0xcbf422a7 neigh_compat_output +EXPORT_SYMBOL vmlinux 0xcc03b751 __scsi_alloc_queue +EXPORT_SYMBOL vmlinux 0xcc17504d _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xcc2a01ed pci_map_rom +EXPORT_SYMBOL vmlinux 0xcc36f32e fb_unregister_client +EXPORT_SYMBOL vmlinux 0xcc3cdacf __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xcc4a42ce vfs_read +EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible +EXPORT_SYMBOL vmlinux 0xcc7fa952 local_bh_enable_ip +EXPORT_SYMBOL vmlinux 0xcc89c246 pasemi_dma_alloc_chan +EXPORT_SYMBOL vmlinux 0xcca6e84a zero_fill_bio +EXPORT_SYMBOL vmlinux 0xccab5e63 cdrom_open +EXPORT_SYMBOL vmlinux 0xccd3e393 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xcd0529c7 _raw_spin_lock_irq +EXPORT_SYMBOL vmlinux 0xcd20667a kstrtou16_from_user +EXPORT_SYMBOL vmlinux 0xcd279169 nla_find +EXPORT_SYMBOL vmlinux 0xcd322410 sk_run_filter +EXPORT_SYMBOL vmlinux 0xcd501deb vfs_readdir +EXPORT_SYMBOL vmlinux 0xcd5d8d3e mmc_can_erase +EXPORT_SYMBOL vmlinux 0xcd6482c9 scsi_remove_device +EXPORT_SYMBOL vmlinux 0xcd769f62 _lv1_gpu_device_map +EXPORT_SYMBOL vmlinux 0xcd861ea3 dma_set_mask +EXPORT_SYMBOL vmlinux 0xcd86c87f __cond_resched_lock +EXPORT_SYMBOL vmlinux 0xcd9dd0e9 bio_integrity_alloc +EXPORT_SYMBOL vmlinux 0xcda9502f scsi_report_bus_reset +EXPORT_SYMBOL vmlinux 0xcdb371fe mmc_cd_gpio_request +EXPORT_SYMBOL vmlinux 0xcdc51091 of_find_i2c_adapter_by_node +EXPORT_SYMBOL vmlinux 0xcdd3f080 kill_pid +EXPORT_SYMBOL vmlinux 0xcde172ac radix_tree_gang_lookup_tag_slot +EXPORT_SYMBOL vmlinux 0xcde6bfab netif_device_attach +EXPORT_SYMBOL vmlinux 0xcde91af0 dev_emerg +EXPORT_SYMBOL vmlinux 0xcdf740c0 i2c_bit_algo +EXPORT_SYMBOL vmlinux 0xcdfd60c7 do_sync_read +EXPORT_SYMBOL vmlinux 0xce19bac5 register_inet6addr_notifier +EXPORT_SYMBOL vmlinux 0xce228e39 writeback_inodes_sb +EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake +EXPORT_SYMBOL vmlinux 0xce2ff51d tcp_v4_get_peer +EXPORT_SYMBOL vmlinux 0xce3b3f09 profile_pc +EXPORT_SYMBOL vmlinux 0xce409cda pmac_set_early_video_resume +EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r +EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize +EXPORT_SYMBOL vmlinux 0xce69ccdb pci_enable_msix +EXPORT_SYMBOL vmlinux 0xce73d9b9 mb_cache_entry_free +EXPORT_SYMBOL vmlinux 0xce7ce037 of_translate_address +EXPORT_SYMBOL vmlinux 0xce7eab17 input_event +EXPORT_SYMBOL vmlinux 0xce8b4461 journal_release_buffer +EXPORT_SYMBOL vmlinux 0xce8eb87b __blk_end_request_all +EXPORT_SYMBOL vmlinux 0xce966fb5 give_up_console +EXPORT_SYMBOL vmlinux 0xce9efc62 tcp_parse_options +EXPORT_SYMBOL vmlinux 0xcea3a939 mach_pasemi +EXPORT_SYMBOL vmlinux 0xcebdc625 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0xcec420d0 nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xced777cb proc_dointvec_minmax +EXPORT_SYMBOL vmlinux 0xcee75a38 inet_accept +EXPORT_SYMBOL vmlinux 0xceebb8e7 request_firmware +EXPORT_SYMBOL vmlinux 0xcef51982 kstrtou16 +EXPORT_SYMBOL vmlinux 0xcf16839a should_remove_suid +EXPORT_SYMBOL vmlinux 0xcf35e963 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0xcf49704b netif_skb_features +EXPORT_SYMBOL vmlinux 0xcf647dbd mmc_wait_for_app_cmd +EXPORT_SYMBOL vmlinux 0xcf69e602 xfrm6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xcf7e2463 kill_bdev +EXPORT_SYMBOL vmlinux 0xcfb7d5a0 cpu_sibling_map +EXPORT_SYMBOL vmlinux 0xcfd2523c mach_powermac +EXPORT_SYMBOL vmlinux 0xcfd44348 pci_clear_master +EXPORT_SYMBOL vmlinux 0xcfeb0be9 rb_augment_erase_begin +EXPORT_SYMBOL vmlinux 0xcff43240 __f_setown +EXPORT_SYMBOL vmlinux 0xd00a6c1d pm860x_page_reg_read +EXPORT_SYMBOL vmlinux 0xd01135f9 ioctl_by_bdev +EXPORT_SYMBOL vmlinux 0xd0181f4f __bitmap_xor +EXPORT_SYMBOL vmlinux 0xd0252ea6 sk_prot_clear_portaddr_nulls +EXPORT_SYMBOL vmlinux 0xd037851c dentry_unhash +EXPORT_SYMBOL vmlinux 0xd03ab2dc d_clear_need_lookup +EXPORT_SYMBOL vmlinux 0xd05931ec _lv1_set_lpm_counter_control +EXPORT_SYMBOL vmlinux 0xd0720a17 on_each_cpu_cond +EXPORT_SYMBOL vmlinux 0xd0a02396 hvcs_free_connection +EXPORT_SYMBOL vmlinux 0xd0a913ad giveup_vsx +EXPORT_SYMBOL vmlinux 0xd0a91bab skip_spaces +EXPORT_SYMBOL vmlinux 0xd0aa613f tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0xd0b6660b set_anon_super +EXPORT_SYMBOL vmlinux 0xd0c5b159 of_phy_find_device +EXPORT_SYMBOL vmlinux 0xd0d42c42 mod_timer_pending +EXPORT_SYMBOL vmlinux 0xd0db16af scsi_register_driver +EXPORT_SYMBOL vmlinux 0xd0ee38b8 schedule_timeout_uninterruptible +EXPORT_SYMBOL vmlinux 0xd0efcf80 bio_integrity_prep +EXPORT_SYMBOL vmlinux 0xd0efe945 invalidate_inode_buffers +EXPORT_SYMBOL vmlinux 0xd0f36f0d audit_log_format +EXPORT_SYMBOL vmlinux 0xd0f4c879 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xd0f989f7 genl_unregister_mc_group +EXPORT_SYMBOL vmlinux 0xd0fb7cd4 __tasklet_hi_schedule_first +EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key +EXPORT_SYMBOL vmlinux 0xd102348b powerpc_debugfs_root +EXPORT_SYMBOL vmlinux 0xd10a6010 pci_try_set_mwi +EXPORT_SYMBOL vmlinux 0xd111633c scsi_host_put +EXPORT_SYMBOL vmlinux 0xd11c0dc1 __kernel_param_unlock +EXPORT_SYMBOL vmlinux 0xd121480d vm_mmap +EXPORT_SYMBOL vmlinux 0xd1262886 rtas_data_buf +EXPORT_SYMBOL vmlinux 0xd1472fff tcf_exts_dump +EXPORT_SYMBOL vmlinux 0xd14dee0c bd_set_size +EXPORT_SYMBOL vmlinux 0xd15fefe0 phy_disconnect +EXPORT_SYMBOL vmlinux 0xd16bb447 blk_queue_start_tag +EXPORT_SYMBOL vmlinux 0xd175dd58 dev_mc_add_excl +EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough +EXPORT_SYMBOL vmlinux 0xd1da30dc tty_shutdown +EXPORT_SYMBOL vmlinux 0xd1e5ab7d generic_read_dir +EXPORT_SYMBOL vmlinux 0xd1f43d92 compat_sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xd1f7578b kobject_add +EXPORT_SYMBOL vmlinux 0xd1fe8ebb _lv1_get_spe_interrupt_status +EXPORT_SYMBOL vmlinux 0xd21042ff module_refcount +EXPORT_SYMBOL vmlinux 0xd220cf8a jiffies_to_timespec +EXPORT_SYMBOL vmlinux 0xd22e0a34 gen_pool_alloc +EXPORT_SYMBOL vmlinux 0xd2318438 swiotlb_dma_mapping_error +EXPORT_SYMBOL vmlinux 0xd23d00a8 tcf_destroy_chain +EXPORT_SYMBOL vmlinux 0xd251d7b0 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xd2555f19 jiffies_64_to_clock_t +EXPORT_SYMBOL vmlinux 0xd25b5253 elv_rb_former_request +EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook +EXPORT_SYMBOL vmlinux 0xd25e63ae console_stop +EXPORT_SYMBOL vmlinux 0xd267b0e6 block_truncate_page +EXPORT_SYMBOL vmlinux 0xd269736b start_tty +EXPORT_SYMBOL vmlinux 0xd26ab845 generic_write_end +EXPORT_SYMBOL vmlinux 0xd27318c6 i8042_remove_filter +EXPORT_SYMBOL vmlinux 0xd27e3114 vmtruncate +EXPORT_SYMBOL vmlinux 0xd2888ec1 bioset_free +EXPORT_SYMBOL vmlinux 0xd2965f6f kthread_should_stop +EXPORT_SYMBOL vmlinux 0xd2aeb76a scsi_report_device_reset +EXPORT_SYMBOL vmlinux 0xd2b09ce5 __kmalloc +EXPORT_SYMBOL vmlinux 0xd2b47d01 blk_queue_max_segment_size +EXPORT_SYMBOL vmlinux 0xd2b67d04 get_super_thawed +EXPORT_SYMBOL vmlinux 0xd2b6b0cb ppp_input +EXPORT_SYMBOL vmlinux 0xd2bca9f2 dst_destroy +EXPORT_SYMBOL vmlinux 0xd2c5a8f1 agp_enable +EXPORT_SYMBOL vmlinux 0xd2ca13ec tty_set_operations +EXPORT_SYMBOL vmlinux 0xd2cd5568 interruptible_sleep_on_timeout +EXPORT_SYMBOL vmlinux 0xd2d109b8 kobject_init +EXPORT_SYMBOL vmlinux 0xd2d685d6 block_is_partially_uptodate +EXPORT_SYMBOL vmlinux 0xd2ef2638 smu_cmdbuf_abs +EXPORT_SYMBOL vmlinux 0xd2f3e71b agp_free_memory +EXPORT_SYMBOL vmlinux 0xd31ccb06 of_machine_is_compatible +EXPORT_SYMBOL vmlinux 0xd338493e tty_flip_buffer_push +EXPORT_SYMBOL vmlinux 0xd351abe7 mb_cache_entry_alloc +EXPORT_SYMBOL vmlinux 0xd36257ba memcpy_toiovecend +EXPORT_SYMBOL vmlinux 0xd380b43a __page_cache_alloc +EXPORT_SYMBOL vmlinux 0xd38480a0 rb_augment_erase_end +EXPORT_SYMBOL vmlinux 0xd39e8b3a no_llseek +EXPORT_SYMBOL vmlinux 0xd3e923ab unregister_md_personality +EXPORT_SYMBOL vmlinux 0xd3ec988a udp_disconnect +EXPORT_SYMBOL vmlinux 0xd402128e netif_napi_del +EXPORT_SYMBOL vmlinux 0xd4039d1c scsicam_bios_param +EXPORT_SYMBOL vmlinux 0xd409383c pmu_request +EXPORT_SYMBOL vmlinux 0xd41318f8 blk_run_queue +EXPORT_SYMBOL vmlinux 0xd436b2e0 shrink_dcache_parent +EXPORT_SYMBOL vmlinux 0xd43d3627 cdrom_get_media_event +EXPORT_SYMBOL vmlinux 0xd4475adb thermal_cooling_device_unregister +EXPORT_SYMBOL vmlinux 0xd455e530 elv_add_request +EXPORT_SYMBOL vmlinux 0xd4753bb7 input_get_keycode +EXPORT_SYMBOL vmlinux 0xd47756a0 pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xd4843d54 __dquot_transfer +EXPORT_SYMBOL vmlinux 0xd48fdeef dql_completed +EXPORT_SYMBOL vmlinux 0xd491b61d mmc_free_host +EXPORT_SYMBOL vmlinux 0xd4c92385 key_payload_reserve +EXPORT_SYMBOL vmlinux 0xd4dbe865 dquot_destroy +EXPORT_SYMBOL vmlinux 0xd4e9f8e0 scsi_is_target_device +EXPORT_SYMBOL vmlinux 0xd4e9feed mmc_register_driver +EXPORT_SYMBOL vmlinux 0xd502029c tcp_prot +EXPORT_SYMBOL vmlinux 0xd540562d devm_iounmap +EXPORT_SYMBOL vmlinux 0xd54e9e8f dev_mc_del +EXPORT_SYMBOL vmlinux 0xd54f87aa register_netdevice +EXPORT_SYMBOL vmlinux 0xd5548dce of_find_i2c_device_by_node +EXPORT_SYMBOL vmlinux 0xd556e4ac skb_add_rx_frag +EXPORT_SYMBOL vmlinux 0xd566c503 mii_check_link +EXPORT_SYMBOL vmlinux 0xd59474f0 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0xd5c6f814 simple_fill_super +EXPORT_SYMBOL vmlinux 0xd5ce8cf8 macio_release_resources +EXPORT_SYMBOL vmlinux 0xd5e1d719 _lv1_set_ppe_periodic_tracer_frequency +EXPORT_SYMBOL vmlinux 0xd5f0d98b seq_put_decimal_ll +EXPORT_SYMBOL vmlinux 0xd5f2172f del_timer_sync +EXPORT_SYMBOL vmlinux 0xd616683a ecryptfs_fill_auth_tok +EXPORT_SYMBOL vmlinux 0xd62c833f schedule_timeout +EXPORT_SYMBOL vmlinux 0xd6379abe inet_release +EXPORT_SYMBOL vmlinux 0xd64046a4 tcp_v4_conn_request +EXPORT_SYMBOL vmlinux 0xd648e564 fb_match_mode +EXPORT_SYMBOL vmlinux 0xd66361fb scsi_block_requests +EXPORT_SYMBOL vmlinux 0xd673073c dm_kcopyd_copy +EXPORT_SYMBOL vmlinux 0xd6738eea search_binary_handler +EXPORT_SYMBOL vmlinux 0xd681a715 of_device_is_available +EXPORT_SYMBOL vmlinux 0xd6cc57f9 vfs_rename +EXPORT_SYMBOL vmlinux 0xd6d63e9d lg_local_lock_cpu +EXPORT_SYMBOL vmlinux 0xd6edf811 _lv1_release_memory +EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc +EXPORT_SYMBOL vmlinux 0xd6fd4053 __arch_hweight32 +EXPORT_SYMBOL vmlinux 0xd715fe00 journal_force_commit +EXPORT_SYMBOL vmlinux 0xd724a207 qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xd7258ac1 tty_register_driver +EXPORT_SYMBOL vmlinux 0xd72e1cfc _lv1_set_lpm_spr_trigger +EXPORT_SYMBOL vmlinux 0xd7542f1f ioc_lookup_icq +EXPORT_SYMBOL vmlinux 0xd75c79df smp_call_function +EXPORT_SYMBOL vmlinux 0xd761a383 ioremap_prot +EXPORT_SYMBOL vmlinux 0xd7650696 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xd76eec67 find_or_create_page +EXPORT_SYMBOL vmlinux 0xd77a5aa5 __bitmap_and +EXPORT_SYMBOL vmlinux 0xd786c0ea plpar_hcall9 +EXPORT_SYMBOL vmlinux 0xd79b5a02 allow_signal +EXPORT_SYMBOL vmlinux 0xd79d90c0 kernel_sock_ioctl +EXPORT_SYMBOL vmlinux 0xd7cbddda memcpy_toiovec +EXPORT_SYMBOL vmlinux 0xd7e501bb jbd2_log_start_commit +EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd8184dbe rawv6_mh_filter_register +EXPORT_SYMBOL vmlinux 0xd81b8178 pci_save_state +EXPORT_SYMBOL vmlinux 0xd822ec10 blk_cleanup_queue +EXPORT_SYMBOL vmlinux 0xd863dafe tcf_action_exec +EXPORT_SYMBOL vmlinux 0xd87a55b2 bmap +EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone +EXPORT_SYMBOL vmlinux 0xd8c4a5b4 dquot_alloc_inode +EXPORT_SYMBOL vmlinux 0xd8ce7e67 clocksource_register +EXPORT_SYMBOL vmlinux 0xd8e484f0 register_chrdev_region +EXPORT_SYMBOL vmlinux 0xd8e88c08 do_splice_direct +EXPORT_SYMBOL vmlinux 0xd8f73255 __devcgroup_inode_permission +EXPORT_SYMBOL vmlinux 0xd911ee20 kernel_getpeername +EXPORT_SYMBOL vmlinux 0xd92afabe bitmap_clear +EXPORT_SYMBOL vmlinux 0xd92e16ba csum_partial_copy_fromiovecend +EXPORT_SYMBOL vmlinux 0xd9508f5c set_page_dirty_lock +EXPORT_SYMBOL vmlinux 0xd971102c xfrm_state_insert +EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages +EXPORT_SYMBOL vmlinux 0xd998480e mmc_hw_reset +EXPORT_SYMBOL vmlinux 0xd9aa42ca sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xd9b3e52d cdev_alloc +EXPORT_SYMBOL vmlinux 0xd9bac924 tty_termios_copy_hw +EXPORT_SYMBOL vmlinux 0xd9c67edb simple_transaction_read +EXPORT_SYMBOL vmlinux 0xd9d4d09d _lv1_release_io_segment +EXPORT_SYMBOL vmlinux 0xda2bad9c truncate_inode_pages +EXPORT_SYMBOL vmlinux 0xda509047 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0xda79f0d5 vlan_vid_add +EXPORT_SYMBOL vmlinux 0xda7ca6cb fb_mode_is_equal +EXPORT_SYMBOL vmlinux 0xda8af7ad fb_find_nearest_mode +EXPORT_SYMBOL vmlinux 0xda8deb4f journal_init_inode +EXPORT_SYMBOL vmlinux 0xdabc1ea8 fsl_lbc_find +EXPORT_SYMBOL vmlinux 0xdabe8a4a pcim_iomap_table +EXPORT_SYMBOL vmlinux 0xdacb51c9 bioset_integrity_free +EXPORT_SYMBOL vmlinux 0xdad25cbc jbd2_journal_clear_features +EXPORT_SYMBOL vmlinux 0xdad72a9d nobh_writepage +EXPORT_SYMBOL vmlinux 0xdadc4844 kick_iocb +EXPORT_SYMBOL vmlinux 0xdae24536 fget +EXPORT_SYMBOL vmlinux 0xdaea6e0d mfd_clone_cell +EXPORT_SYMBOL vmlinux 0xdb01198e fsl_upm_find +EXPORT_SYMBOL vmlinux 0xdb0172f7 qdisc_watchdog_cancel +EXPORT_SYMBOL vmlinux 0xdb1c6ea8 of_find_all_nodes +EXPORT_SYMBOL vmlinux 0xdb1eed95 address_space_init_once +EXPORT_SYMBOL vmlinux 0xdb3f813f pci_get_subsys +EXPORT_SYMBOL vmlinux 0xdb4e58a6 dev_mc_init +EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy +EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free +EXPORT_SYMBOL vmlinux 0xdb800d5c mmc_unregister_driver +EXPORT_SYMBOL vmlinux 0xdb9e0c61 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0xdb9e2c22 posix_acl_create +EXPORT_SYMBOL vmlinux 0xdbb24fc2 down_write +EXPORT_SYMBOL vmlinux 0xdbc60dff ndo_dflt_fdb_dump +EXPORT_SYMBOL vmlinux 0xdbcd416e sysctl_ip_nonlocal_bind +EXPORT_SYMBOL vmlinux 0xdc047fc4 scsi_dev_info_list_add_keyed +EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems +EXPORT_SYMBOL vmlinux 0xdc2adb35 add_taint +EXPORT_SYMBOL vmlinux 0xdc3fcbc9 __sw_hweight8 +EXPORT_SYMBOL vmlinux 0xdc43a9c8 daemonize +EXPORT_SYMBOL vmlinux 0xdc580856 sock_no_sendmsg +EXPORT_SYMBOL vmlinux 0xdc6d41cf vfs_fstatat +EXPORT_SYMBOL vmlinux 0xdc7ae512 scsi_target_resume +EXPORT_SYMBOL vmlinux 0xdc86e77c dquot_quota_sync +EXPORT_SYMBOL vmlinux 0xdc915e75 register_nls +EXPORT_SYMBOL vmlinux 0xdc944f55 kern_path +EXPORT_SYMBOL vmlinux 0xdc9498dd down +EXPORT_SYMBOL vmlinux 0xdcafd4a0 journal_load +EXPORT_SYMBOL vmlinux 0xdcb0349b sys_close +EXPORT_SYMBOL vmlinux 0xdcb764ad memset +EXPORT_SYMBOL vmlinux 0xdcba0909 tty_hangup +EXPORT_SYMBOL vmlinux 0xdcc43386 scsi_sd_probe_domain +EXPORT_SYMBOL vmlinux 0xdcc9a9cf netlink_kernel_create +EXPORT_SYMBOL vmlinux 0xdcefb9a5 pmu_resume +EXPORT_SYMBOL vmlinux 0xdcf280ee bitmap_close_sync +EXPORT_SYMBOL vmlinux 0xdcfbf04a phy_start_aneg +EXPORT_SYMBOL vmlinux 0xdd1c65f6 blk_finish_plug +EXPORT_SYMBOL vmlinux 0xdd24fade follow_pfn +EXPORT_SYMBOL vmlinux 0xdd377422 __dst_destroy_metrics_generic +EXPORT_SYMBOL vmlinux 0xdd3f6970 compat_ipv6_getsockopt +EXPORT_SYMBOL vmlinux 0xdd4a5569 param_get_byte +EXPORT_SYMBOL vmlinux 0xdd653783 dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xdd955144 __debugger +EXPORT_SYMBOL vmlinux 0xddaa2029 bdi_register_dev +EXPORT_SYMBOL vmlinux 0xddc43618 ip_queue_xmit +EXPORT_SYMBOL vmlinux 0xddce3716 mnt_set_expiry +EXPORT_SYMBOL vmlinux 0xddd14956 blk_queue_update_dma_alignment +EXPORT_SYMBOL vmlinux 0xddd98136 inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xdddd1a65 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0xdde643d3 pm860x_page_set_bits +EXPORT_SYMBOL vmlinux 0xddf5f3e3 netdev_warn +EXPORT_SYMBOL vmlinux 0xde13f2a8 genl_unregister_family +EXPORT_SYMBOL vmlinux 0xde3c5b23 d_instantiate +EXPORT_SYMBOL vmlinux 0xde45743d twl6040_clear_bits +EXPORT_SYMBOL vmlinux 0xde48e9ca _raw_spin_lock +EXPORT_SYMBOL vmlinux 0xde4c056d swiotlb_sync_sg_for_cpu +EXPORT_SYMBOL vmlinux 0xde6151db tcp_memory_allocated +EXPORT_SYMBOL vmlinux 0xde9360ba totalram_pages +EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size +EXPORT_SYMBOL vmlinux 0xdea9ff5a __quota_error +EXPORT_SYMBOL vmlinux 0xdeb36536 max8925_bulk_read +EXPORT_SYMBOL vmlinux 0xdeb6b8bb inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xdf27349a swiotlb_unmap_sg +EXPORT_SYMBOL vmlinux 0xdf2c73eb pci_release_regions +EXPORT_SYMBOL vmlinux 0xdf3a3edb netlink_kernel_release +EXPORT_SYMBOL vmlinux 0xdf3bba8d journal_dirty_metadata +EXPORT_SYMBOL vmlinux 0xdf3e5498 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xdf60cc27 __print_symbol +EXPORT_SYMBOL vmlinux 0xdf60fc83 _lv1_net_start_tx_dma +EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid +EXPORT_SYMBOL vmlinux 0xdfd8b8fb build_skb +EXPORT_SYMBOL vmlinux 0xdff75dd7 dev_uc_unsync +EXPORT_SYMBOL vmlinux 0xdffefbfa of_mdiobus_register +EXPORT_SYMBOL vmlinux 0xe0043a07 dev_uc_sync +EXPORT_SYMBOL vmlinux 0xe019b68b submit_bh +EXPORT_SYMBOL vmlinux 0xe01e2bdb skb_split +EXPORT_SYMBOL vmlinux 0xe0280b4d __bforget +EXPORT_SYMBOL vmlinux 0xe03c32c1 key_task_permission +EXPORT_SYMBOL vmlinux 0xe04f7caa dm_read_arg_group +EXPORT_SYMBOL vmlinux 0xe050a16a security_path_unlink +EXPORT_SYMBOL vmlinux 0xe06141e9 security_sk_clone +EXPORT_SYMBOL vmlinux 0xe06eb5a3 __ethtool_get_settings +EXPORT_SYMBOL vmlinux 0xe07119e4 of_device_alloc +EXPORT_SYMBOL vmlinux 0xe075d6eb iter_div_u64_rem +EXPORT_SYMBOL vmlinux 0xe08361c3 skb_seq_read +EXPORT_SYMBOL vmlinux 0xe096a704 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xe0a45fae mach_maple +EXPORT_SYMBOL vmlinux 0xe0a9ba36 phy_find_first +EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free +EXPORT_SYMBOL vmlinux 0xe0b994ee sockfd_lookup +EXPORT_SYMBOL vmlinux 0xe0bd9da0 pci_domain_nr +EXPORT_SYMBOL vmlinux 0xe0e40402 inet_frag_evictor +EXPORT_SYMBOL vmlinux 0xe0f0d384 usb_get_transceiver +EXPORT_SYMBOL vmlinux 0xe0fbcede tty_vhangup +EXPORT_SYMBOL vmlinux 0xe10aa914 __starget_for_each_device +EXPORT_SYMBOL vmlinux 0xe10f0a91 phy_detach +EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial +EXPORT_SYMBOL vmlinux 0xe123fba6 mb_cache_create +EXPORT_SYMBOL vmlinux 0xe13541c6 max8925_reg_read +EXPORT_SYMBOL vmlinux 0xe15f300b scsi_eh_prep_cmnd +EXPORT_SYMBOL vmlinux 0xe1628ca1 pci_scan_single_device +EXPORT_SYMBOL vmlinux 0xe1761617 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe17652f7 fsnotify_alloc_group +EXPORT_SYMBOL vmlinux 0xe1802303 i2c_del_adapter +EXPORT_SYMBOL vmlinux 0xe1952e44 backlight_device_unregister +EXPORT_SYMBOL vmlinux 0xe1beb8fc inode_init_once +EXPORT_SYMBOL vmlinux 0xe1cee99f tcp_v4_send_check +EXPORT_SYMBOL vmlinux 0xe1d6d002 fb_class +EXPORT_SYMBOL vmlinux 0xe1e40275 locks_free_lock +EXPORT_SYMBOL vmlinux 0xe200d2d5 param_get_uint +EXPORT_SYMBOL vmlinux 0xe200f872 secure_dccpv6_sequence_number +EXPORT_SYMBOL vmlinux 0xe20c63e7 _lv1_unmap_device_mmio_region +EXPORT_SYMBOL vmlinux 0xe20f6b10 pci_clear_mwi +EXPORT_SYMBOL vmlinux 0xe218193b tcp_connect +EXPORT_SYMBOL vmlinux 0xe220ceb8 __debugger_sstep +EXPORT_SYMBOL vmlinux 0xe224b9d9 ps2_init +EXPORT_SYMBOL vmlinux 0xe22d09bd lro_flush_all +EXPORT_SYMBOL vmlinux 0xe2304303 mac_map_monitor_sense +EXPORT_SYMBOL vmlinux 0xe23ae481 blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe24d3a97 jiffies_64 +EXPORT_SYMBOL vmlinux 0xe250212a max8925_bulk_write +EXPORT_SYMBOL vmlinux 0xe25ac808 flush_signals +EXPORT_SYMBOL vmlinux 0xe275bc0b sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0xe27bbfc8 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0xe2a13e12 unload_nls +EXPORT_SYMBOL vmlinux 0xe2ae4be3 gen_replace_estimator +EXPORT_SYMBOL vmlinux 0xe2be5498 lg_global_unlock +EXPORT_SYMBOL vmlinux 0xe2c86b0f bio_flush_dcache_pages +EXPORT_SYMBOL vmlinux 0xe2c9afea handle_edge_irq +EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp +EXPORT_SYMBOL vmlinux 0xe2e0c7c6 __flush_icache_range +EXPORT_SYMBOL vmlinux 0xe2e1d89b blk_requeue_request +EXPORT_SYMBOL vmlinux 0xe2e711fb bfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0xe3587fed release_pages +EXPORT_SYMBOL vmlinux 0xe3905d60 padata_add_cpu +EXPORT_SYMBOL vmlinux 0xe3a53f4c sort +EXPORT_SYMBOL vmlinux 0xe3c76031 twl6040_get_vibralr_status +EXPORT_SYMBOL vmlinux 0xe3d6f284 fb_find_mode_cvt +EXPORT_SYMBOL vmlinux 0xe3dcfa34 devm_free_irq +EXPORT_SYMBOL vmlinux 0xe3ee39ca dev_disable_lro +EXPORT_SYMBOL vmlinux 0xe3f07d3b kernel_read +EXPORT_SYMBOL vmlinux 0xe4466194 rtnl_notify +EXPORT_SYMBOL vmlinux 0xe454ced4 scsi_register_interface +EXPORT_SYMBOL vmlinux 0xe45b6bd2 udp_proc_unregister +EXPORT_SYMBOL vmlinux 0xe46263d5 phy_connect_direct +EXPORT_SYMBOL vmlinux 0xe465a9f9 fb_firmware_edid +EXPORT_SYMBOL vmlinux 0xe484e35f ioread32 +EXPORT_SYMBOL vmlinux 0xe4a61be8 md_flush_request +EXPORT_SYMBOL vmlinux 0xe4a895fa up_write +EXPORT_SYMBOL vmlinux 0xe4cdc840 jbd2_journal_destroy +EXPORT_SYMBOL vmlinux 0xe4dfb696 is_container_init +EXPORT_SYMBOL vmlinux 0xe4f6363c jbd2_inode_cache +EXPORT_SYMBOL vmlinux 0xe4fe8ca1 _raw_spin_unlock_bh +EXPORT_SYMBOL vmlinux 0xe505fcbe tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0xe5122890 flow_cache_genid +EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq +EXPORT_SYMBOL vmlinux 0xe545cd6a sys_fillrect +EXPORT_SYMBOL vmlinux 0xe546b6ed mmc_cache_ctrl +EXPORT_SYMBOL vmlinux 0xe57878a1 in6_pton +EXPORT_SYMBOL vmlinux 0xe5867808 dlci_ioctl_set +EXPORT_SYMBOL vmlinux 0xe5955834 inet_confirm_addr +EXPORT_SYMBOL vmlinux 0xe59b2961 kernel_accept +EXPORT_SYMBOL vmlinux 0xe5aec542 block_write_full_page +EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen +EXPORT_SYMBOL vmlinux 0xe5cd221f fb_pan_display +EXPORT_SYMBOL vmlinux 0xe5d95985 param_ops_ulong +EXPORT_SYMBOL vmlinux 0xe5ed5467 xfrm_policy_walk_init +EXPORT_SYMBOL vmlinux 0xe60988ac _lv1_query_logical_partition_address_region_info +EXPORT_SYMBOL vmlinux 0xe620be12 agp_generic_insert_memory +EXPORT_SYMBOL vmlinux 0xe630c0bb deactivate_super +EXPORT_SYMBOL vmlinux 0xe6342a35 dev_mc_flush +EXPORT_SYMBOL vmlinux 0xe6481642 bio_integrity_endio +EXPORT_SYMBOL vmlinux 0xe6499773 fb_set_cmap +EXPORT_SYMBOL vmlinux 0xe67ea381 journal_get_write_access +EXPORT_SYMBOL vmlinux 0xe68f450f sock_setsockopt +EXPORT_SYMBOL vmlinux 0xe697d108 __blk_iopoll_complete +EXPORT_SYMBOL vmlinux 0xe6abd458 mmc_detect_change +EXPORT_SYMBOL vmlinux 0xe6b97e0a __netdev_alloc_skb +EXPORT_SYMBOL vmlinux 0xe6bf307c dump_seek +EXPORT_SYMBOL vmlinux 0xe6d1c10c ipv6_chk_prefix +EXPORT_SYMBOL vmlinux 0xe6fbe430 can_do_mlock +EXPORT_SYMBOL vmlinux 0xe719d7a3 __d_drop +EXPORT_SYMBOL vmlinux 0xe72fbbb4 __locks_copy_lock +EXPORT_SYMBOL vmlinux 0xe74aa406 _lv1_set_dabr +EXPORT_SYMBOL vmlinux 0xe75400ca pm860x_bulk_read +EXPORT_SYMBOL vmlinux 0xe7561a72 scsi_prep_fn +EXPORT_SYMBOL vmlinux 0xe76abbfa fb_blank +EXPORT_SYMBOL vmlinux 0xe76ca225 sock_no_mmap +EXPORT_SYMBOL vmlinux 0xe78e44c1 fb_find_mode +EXPORT_SYMBOL vmlinux 0xe78e5c1c tc_classify_compat +EXPORT_SYMBOL vmlinux 0xe7a664c4 nf_hooks +EXPORT_SYMBOL vmlinux 0xe7a81967 audit_log_secctx +EXPORT_SYMBOL vmlinux 0xe7aa3850 seq_open_private +EXPORT_SYMBOL vmlinux 0xe7ae59d1 compat_tcp_getsockopt +EXPORT_SYMBOL vmlinux 0xe7b6c43a elv_abort_queue +EXPORT_SYMBOL vmlinux 0xe7cd99b7 smu_queue_simple +EXPORT_SYMBOL vmlinux 0xe7ce7439 _memcpy_fromio +EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next +EXPORT_SYMBOL vmlinux 0xe7f7bae3 compat_mc_getsockopt +EXPORT_SYMBOL vmlinux 0xe80ce219 sysctl_tcp_dma_copybreak +EXPORT_SYMBOL vmlinux 0xe82cc752 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xe8796334 scsi_device_set_state +EXPORT_SYMBOL vmlinux 0xe87eb118 inet_frag_destroy +EXPORT_SYMBOL vmlinux 0xe8b63ace radix_tree_range_tag_if_tagged +EXPORT_SYMBOL vmlinux 0xe8b81643 rtas +EXPORT_SYMBOL vmlinux 0xe8baa3c4 of_n_size_cells +EXPORT_SYMBOL vmlinux 0xe8c438f3 proc_dointvec_userhz_jiffies +EXPORT_SYMBOL vmlinux 0xe8e21c3e vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0xe8f96492 elv_rb_latter_request +EXPORT_SYMBOL vmlinux 0xe914e41e strcpy +EXPORT_SYMBOL vmlinux 0xe91b31ad __skb_recv_datagram +EXPORT_SYMBOL vmlinux 0xe92c7ac3 inet_shutdown +EXPORT_SYMBOL vmlinux 0xe93034f9 arp_tbl +EXPORT_SYMBOL vmlinux 0xe9406160 generic_file_fsync +EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino +EXPORT_SYMBOL vmlinux 0xe96814d0 neigh_lookup_nodev +EXPORT_SYMBOL vmlinux 0xe968ff80 __ps2_command +EXPORT_SYMBOL vmlinux 0xe971d4ac lookup_one_len +EXPORT_SYMBOL vmlinux 0xe98268e1 flush_old_exec +EXPORT_SYMBOL vmlinux 0xe996e118 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0xe999acd7 splice_from_pipe_end +EXPORT_SYMBOL vmlinux 0xe9d7b113 thermal_zone_device_unregister +EXPORT_SYMBOL vmlinux 0xe9d862ae path_put +EXPORT_SYMBOL vmlinux 0xe9dfbb64 jbd2_journal_set_features +EXPORT_SYMBOL vmlinux 0xe9f175b1 inode_permission +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 0xea12eb3d inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0xea668d0b of_gpio_simple_xlate +EXPORT_SYMBOL vmlinux 0xea8db916 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xea94eb67 sock_release +EXPORT_SYMBOL vmlinux 0xea968c96 ___ratelimit +EXPORT_SYMBOL vmlinux 0xea9855ae blk_limits_max_hw_sectors +EXPORT_SYMBOL vmlinux 0xeabab0db override_creds +EXPORT_SYMBOL vmlinux 0xeac59dbf qdisc_watchdog_init +EXPORT_SYMBOL vmlinux 0xeac8b900 of_node_get +EXPORT_SYMBOL vmlinux 0xeae8aaa7 inet_ioctl +EXPORT_SYMBOL vmlinux 0xeb012fb8 km_policy_notify +EXPORT_SYMBOL vmlinux 0xeb1c4174 blk_queue_end_tag +EXPORT_SYMBOL vmlinux 0xeb2a3987 __skb_checksum_complete_head +EXPORT_SYMBOL vmlinux 0xeb2cca11 pci_read_vpd +EXPORT_SYMBOL vmlinux 0xeb31763d nf_setsockopt +EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end +EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4d0b4c clear_inode +EXPORT_SYMBOL vmlinux 0xeb4f1e94 generic_pipe_buf_confirm +EXPORT_SYMBOL vmlinux 0xeb57087c mmc_hw_reset_check +EXPORT_SYMBOL vmlinux 0xeb5cf320 have_submounts +EXPORT_SYMBOL vmlinux 0xeb74c54c blk_queue_prep_rq +EXPORT_SYMBOL vmlinux 0xeba2a1f7 rtas_indicator_present +EXPORT_SYMBOL vmlinux 0xeba677bd posix_acl_chmod +EXPORT_SYMBOL vmlinux 0xeba82352 pci_disable_link_state_locked +EXPORT_SYMBOL vmlinux 0xebaac1c3 pm860x_page_reg_write +EXPORT_SYMBOL vmlinux 0xebcf32c8 kern_path_create +EXPORT_SYMBOL vmlinux 0xebdbe48c radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0xebe03740 i2c_get_adapter +EXPORT_SYMBOL vmlinux 0xebe74dd3 udp_lib_unhash +EXPORT_SYMBOL vmlinux 0xebec3ea2 skb_copy_and_csum_bits +EXPORT_SYMBOL vmlinux 0xebf85dd9 d_alloc_name +EXPORT_SYMBOL vmlinux 0xec00eabf redraw_screen +EXPORT_SYMBOL vmlinux 0xec0efa78 icmp_send +EXPORT_SYMBOL vmlinux 0xec15832a xfrm6_rcv_spi +EXPORT_SYMBOL vmlinux 0xec15f00a tcp_cookie_generator +EXPORT_SYMBOL vmlinux 0xec30765a _lv1_allocate_io_segment +EXPORT_SYMBOL vmlinux 0xec44e77a register_qdisc +EXPORT_SYMBOL vmlinux 0xec4e693f bprm_change_interp +EXPORT_SYMBOL vmlinux 0xec985346 simple_lookup +EXPORT_SYMBOL vmlinux 0xec99e240 bioset_integrity_create +EXPORT_SYMBOL vmlinux 0xecdea22c dcb_ieee_getapp_mask +EXPORT_SYMBOL vmlinux 0xed1960f1 skb_realloc_headroom +EXPORT_SYMBOL vmlinux 0xed19ca91 journal_revoke +EXPORT_SYMBOL vmlinux 0xed302f0f tty_lock +EXPORT_SYMBOL vmlinux 0xed3e04d1 pci_set_dma_seg_boundary +EXPORT_SYMBOL vmlinux 0xed4cebab inode_only_permission +EXPORT_SYMBOL vmlinux 0xed652427 _lv1_set_interrupt_mask +EXPORT_SYMBOL vmlinux 0xed6d9542 jbd2_journal_force_commit +EXPORT_SYMBOL vmlinux 0xed7f5c7b dev_deactivate +EXPORT_SYMBOL vmlinux 0xed81c76d mntput +EXPORT_SYMBOL vmlinux 0xed8c2954 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0xed949716 brioctl_set +EXPORT_SYMBOL vmlinux 0xeda0d76e gen_estimator_active +EXPORT_SYMBOL vmlinux 0xeda80997 set_security_override +EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp +EXPORT_SYMBOL vmlinux 0xedc03953 iounmap +EXPORT_SYMBOL vmlinux 0xedc410d0 udplite_table +EXPORT_SYMBOL vmlinux 0xedce4843 xfrm_state_lookup +EXPORT_SYMBOL vmlinux 0xedd8d4fc nf_afinfo +EXPORT_SYMBOL vmlinux 0xede7f287 textsearch_unregister +EXPORT_SYMBOL vmlinux 0xedf0b48c _lv1_storage_get_async_status +EXPORT_SYMBOL vmlinux 0xedf90716 generic_readlink +EXPORT_SYMBOL vmlinux 0xee158b47 sock_get_timestampns +EXPORT_SYMBOL vmlinux 0xee192784 compat_ip_getsockopt +EXPORT_SYMBOL vmlinux 0xee1a71c9 dev_get_drvdata +EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee5bb20b _lv1_panic +EXPORT_SYMBOL vmlinux 0xee8bcc63 iov_iter_copy_from_user_atomic +EXPORT_SYMBOL vmlinux 0xee9174c5 _lv1_storage_read +EXPORT_SYMBOL vmlinux 0xeea7f0a7 sock_get_timestamp +EXPORT_SYMBOL vmlinux 0xeea9dbaf bitmap_bitremap +EXPORT_SYMBOL vmlinux 0xeeb075e0 ip_fragment +EXPORT_SYMBOL vmlinux 0xeeb5bd3b __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xeed5e46a udp_prot +EXPORT_SYMBOL vmlinux 0xeedb828c tty_port_lower_dtr_rts +EXPORT_SYMBOL vmlinux 0xeef7a99c tty_port_free_xmit_buf +EXPORT_SYMBOL vmlinux 0xef109449 interruptible_sleep_on +EXPORT_SYMBOL vmlinux 0xef818f76 scsi_free_host_dev +EXPORT_SYMBOL vmlinux 0xef9b6072 of_match_node +EXPORT_SYMBOL vmlinux 0xefac384f pci_disable_obff +EXPORT_SYMBOL vmlinux 0xefbff45c vmalloc_to_page +EXPORT_SYMBOL vmlinux 0xefc2e54d _lv1_storage_send_device_command +EXPORT_SYMBOL vmlinux 0xefc91095 __set_page_dirty_nobuffers +EXPORT_SYMBOL vmlinux 0xefd02c89 sock_common_recvmsg +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 0xf03fa83b request_firmware_nowait +EXPORT_SYMBOL vmlinux 0xf05ffa15 fb_var_to_videomode +EXPORT_SYMBOL vmlinux 0xf065f629 ioread16be +EXPORT_SYMBOL vmlinux 0xf0915818 ip_options_compile +EXPORT_SYMBOL vmlinux 0xf0d2f84a _lv1_gpu_context_free +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 0xf10649ae giveup_altivec +EXPORT_SYMBOL vmlinux 0xf10de535 ioread8 +EXPORT_SYMBOL vmlinux 0xf111d05d led_blink_set +EXPORT_SYMBOL vmlinux 0xf114fe42 bitmap_end_sync +EXPORT_SYMBOL vmlinux 0xf11c3347 inet_getname +EXPORT_SYMBOL vmlinux 0xf11cd6ce down_interruptible +EXPORT_SYMBOL vmlinux 0xf1216c75 prandom32 +EXPORT_SYMBOL vmlinux 0xf13feb57 radix_tree_next_chunk +EXPORT_SYMBOL vmlinux 0xf14b841d napi_skb_finish +EXPORT_SYMBOL vmlinux 0xf1557df5 writeback_inodes_sb_nr +EXPORT_SYMBOL vmlinux 0xf156778d inet_csk_accept +EXPORT_SYMBOL vmlinux 0xf1701dd7 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf183189b __ioremap_at +EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps +EXPORT_SYMBOL vmlinux 0xf1aef72e scsi_print_sense +EXPORT_SYMBOL vmlinux 0xf1bea6f1 schedule_delayed_work +EXPORT_SYMBOL vmlinux 0xf1c5d0fd nf_unregister_hook +EXPORT_SYMBOL vmlinux 0xf1cf3036 blk_set_default_limits +EXPORT_SYMBOL vmlinux 0xf1d0ec41 seq_bitmap_list +EXPORT_SYMBOL vmlinux 0xf1d37478 arp_create +EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy +EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun +EXPORT_SYMBOL vmlinux 0xf1ebb534 kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0xf1edd80f ps2_drain +EXPORT_SYMBOL vmlinux 0xf202c5cb radix_tree_insert +EXPORT_SYMBOL vmlinux 0xf207fca7 jbd2_journal_get_undo_access +EXPORT_SYMBOL vmlinux 0xf20dabd8 free_irq +EXPORT_SYMBOL vmlinux 0xf20e6254 inet_frag_find +EXPORT_SYMBOL vmlinux 0xf22881e8 lg_local_lock +EXPORT_SYMBOL vmlinux 0xf22b14d8 idr_get_new +EXPORT_SYMBOL vmlinux 0xf23a589f scsi_prep_return +EXPORT_SYMBOL vmlinux 0xf23d0ddc wl12xx_get_platform_data +EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in +EXPORT_SYMBOL vmlinux 0xf245bed5 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xf24dcaa8 _lv1_net_stop_rx_dma +EXPORT_SYMBOL vmlinux 0xf2556183 fput +EXPORT_SYMBOL vmlinux 0xf27572c3 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xf28b436e eth_change_mtu +EXPORT_SYMBOL vmlinux 0xf28d6b55 __free_pages +EXPORT_SYMBOL vmlinux 0xf2980c7c xfrm_input_resume +EXPORT_SYMBOL vmlinux 0xf299c42f dev_get_by_index +EXPORT_SYMBOL vmlinux 0xf2b46e2b agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xf2fc3145 vfs_fsync +EXPORT_SYMBOL vmlinux 0xf309e9ee cur_cpu_spec +EXPORT_SYMBOL vmlinux 0xf30d1036 _lv1_start_ppe_periodic_tracer +EXPORT_SYMBOL vmlinux 0xf311ba98 netdev_err +EXPORT_SYMBOL vmlinux 0xf313da4e sha_transform +EXPORT_SYMBOL vmlinux 0xf322a206 bit_waitqueue +EXPORT_SYMBOL vmlinux 0xf3341268 __clear_user +EXPORT_SYMBOL vmlinux 0xf338d4c3 netlink_unregister_notifier +EXPORT_SYMBOL vmlinux 0xf33a5fe6 put_disk +EXPORT_SYMBOL vmlinux 0xf34025ac mem_section +EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head +EXPORT_SYMBOL vmlinux 0xf357db8d pasemi_dma_set_flag +EXPORT_SYMBOL vmlinux 0xf380a837 unbind_con_driver +EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init +EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default +EXPORT_SYMBOL vmlinux 0xf39cdcc3 get_fs_type +EXPORT_SYMBOL vmlinux 0xf3ab7dfc splice_from_pipe_next +EXPORT_SYMBOL vmlinux 0xf3ae15b4 pm860x_set_bits +EXPORT_SYMBOL vmlinux 0xf3bf0bce __bitmap_complement +EXPORT_SYMBOL vmlinux 0xf3cdabb1 module_put +EXPORT_SYMBOL vmlinux 0xf3d41848 scsi_get_device_flags_keyed +EXPORT_SYMBOL vmlinux 0xf3ec68d7 sched_autogroup_detach +EXPORT_SYMBOL vmlinux 0xf41ce0f1 n_tty_ioctl_helper +EXPORT_SYMBOL vmlinux 0xf4255354 pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0xf431a936 iunique +EXPORT_SYMBOL vmlinux 0xf4401baf tcp_v4_syn_recv_sock +EXPORT_SYMBOL vmlinux 0xf441ac43 ioread8_rep +EXPORT_SYMBOL vmlinux 0xf494f618 mmc_regulator_get_ocrmask +EXPORT_SYMBOL vmlinux 0xf496755f compat_sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0xf4a9706e rfkill_alloc +EXPORT_SYMBOL vmlinux 0xf4afb73c max8998_bulk_read +EXPORT_SYMBOL vmlinux 0xf4b35c5a fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4ca4074 jbd2_journal_update_sb_errno +EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock +EXPORT_SYMBOL vmlinux 0xf51bf88b nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf5222143 _raw_spin_lock_irqsave +EXPORT_SYMBOL vmlinux 0xf5253622 nf_log_unregister +EXPORT_SYMBOL vmlinux 0xf525ad34 generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy +EXPORT_SYMBOL vmlinux 0xf55b3b3d __arch_hweight16 +EXPORT_SYMBOL vmlinux 0xf588db44 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xf594f80d ida_get_new +EXPORT_SYMBOL vmlinux 0xf5a62ecc _memset_io +EXPORT_SYMBOL vmlinux 0xf5b18086 thermal_zone_device_update +EXPORT_SYMBOL vmlinux 0xf5e1558d crash_shutdown_unregister +EXPORT_SYMBOL vmlinux 0xf5e5ec0d shrink_dcache_sb +EXPORT_SYMBOL vmlinux 0xf5e62c64 tty_name +EXPORT_SYMBOL vmlinux 0xf5eb86ea blk_verify_command +EXPORT_SYMBOL vmlinux 0xf5f4bca8 __sync_dirty_buffer +EXPORT_SYMBOL vmlinux 0xf5f96df9 __generic_block_fiemap +EXPORT_SYMBOL vmlinux 0xf6042ce8 vio_unregister_driver +EXPORT_SYMBOL vmlinux 0xf6122ee6 nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0xf6213e12 pasemi_dma_clear_flag +EXPORT_SYMBOL vmlinux 0xf62971da get_task_io_context +EXPORT_SYMBOL vmlinux 0xf6388c56 sysctl_ip_default_ttl +EXPORT_SYMBOL vmlinux 0xf661ea62 eth_header_cache_update +EXPORT_SYMBOL vmlinux 0xf6970d65 lock_may_read +EXPORT_SYMBOL vmlinux 0xf6bb4729 color_table +EXPORT_SYMBOL vmlinux 0xf6bc95aa writeback_inodes_sb_if_idle +EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6ecb763 _lv1_send_event_locally +EXPORT_SYMBOL vmlinux 0xf6f1710c __vio_register_driver +EXPORT_SYMBOL vmlinux 0xf6f50cf8 sock_alloc_send_pskb +EXPORT_SYMBOL vmlinux 0xf6f6f3a6 phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xf70ce83a dquot_scan_active +EXPORT_SYMBOL vmlinux 0xf70ef0f3 twl6040_get_pll +EXPORT_SYMBOL vmlinux 0xf7130fe9 security_path_truncate +EXPORT_SYMBOL vmlinux 0xf71b47d6 dquot_quotactl_ops +EXPORT_SYMBOL vmlinux 0xf7289d14 __tracepoint_kmem_cache_free +EXPORT_SYMBOL vmlinux 0xf73723e1 pm8606_osc_disable +EXPORT_SYMBOL vmlinux 0xf741c793 zlib_deflateEnd +EXPORT_SYMBOL vmlinux 0xf74dfcd9 fb_show_logo +EXPORT_SYMBOL vmlinux 0xf7584a9c find_font +EXPORT_SYMBOL vmlinux 0xf78d04ab netlink_register_notifier +EXPORT_SYMBOL vmlinux 0xf7976f5b mach_pseries +EXPORT_SYMBOL vmlinux 0xf7adcaf3 __tracepoint_kmalloc_node +EXPORT_SYMBOL vmlinux 0xf7bac0ec _lv1_set_lpm_counter +EXPORT_SYMBOL vmlinux 0xf7bdf1ff xfrm6_input_addr +EXPORT_SYMBOL vmlinux 0xf7d0e748 md_check_recovery +EXPORT_SYMBOL vmlinux 0xf7f2a056 eth_mac_addr +EXPORT_SYMBOL vmlinux 0xf7fe4a97 input_flush_device +EXPORT_SYMBOL vmlinux 0xf8004bfd _lv1_disconnect_interrupt_event_receive_port +EXPORT_SYMBOL vmlinux 0xf803fe39 bitmap_set +EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q +EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy +EXPORT_SYMBOL vmlinux 0xf889c7c6 tcp_seq_open +EXPORT_SYMBOL vmlinux 0xf8900cde lro_flush_pkt +EXPORT_SYMBOL vmlinux 0xf89330da simple_statfs +EXPORT_SYMBOL vmlinux 0xf89843f9 schedule_work +EXPORT_SYMBOL vmlinux 0xf89f9222 twl6040_power +EXPORT_SYMBOL vmlinux 0xf8a8e7f3 pcim_iounmap +EXPORT_SYMBOL vmlinux 0xf8b1e0de tcp_shutdown +EXPORT_SYMBOL vmlinux 0xf8b3d02c bio_integrity_set_tag +EXPORT_SYMBOL vmlinux 0xf8b8de95 i2c_put_adapter +EXPORT_SYMBOL vmlinux 0xf8bc4786 blk_init_allocated_queue +EXPORT_SYMBOL vmlinux 0xf8f10b48 mdiobus_register +EXPORT_SYMBOL vmlinux 0xf9325b74 block_write_full_page_endio +EXPORT_SYMBOL vmlinux 0xf96d2ec8 giveup_fpu +EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep +EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat +EXPORT_SYMBOL vmlinux 0xf9db4135 kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xf9f651d3 padata_free +EXPORT_SYMBOL vmlinux 0xfa105389 blk_end_request_cur +EXPORT_SYMBOL vmlinux 0xfa1cb81a put_page +EXPORT_SYMBOL vmlinux 0xfa4d4763 fbcon_set_tileops +EXPORT_SYMBOL vmlinux 0xfa653fd8 generic_pipe_buf_release +EXPORT_SYMBOL vmlinux 0xfa6dabb3 journal_trans_will_send_data_barrier +EXPORT_SYMBOL vmlinux 0xfa93f5ce neigh_table_clear +EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max +EXPORT_SYMBOL vmlinux 0xfadb5750 pmu_unlock +EXPORT_SYMBOL vmlinux 0xfae67b1f cap_mmap_addr +EXPORT_SYMBOL vmlinux 0xfaf98462 bitrev32 +EXPORT_SYMBOL vmlinux 0xfb0e1dad __inc_zone_page_state +EXPORT_SYMBOL vmlinux 0xfb1484a3 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xfb14d074 netif_receive_skb +EXPORT_SYMBOL vmlinux 0xfb25b613 __dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0xfb31c0fe tty_port_tty_get +EXPORT_SYMBOL vmlinux 0xfb405a21 pcie_get_readrq +EXPORT_SYMBOL vmlinux 0xfb5f846a cancel_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending +EXPORT_SYMBOL vmlinux 0xfb81a7b0 mpage_writepage +EXPORT_SYMBOL vmlinux 0xfbaaf01e console_lock +EXPORT_SYMBOL vmlinux 0xfbb2ab18 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0xfbc197f4 input_release_device +EXPORT_SYMBOL vmlinux 0xfbdd8794 register_netdev +EXPORT_SYMBOL vmlinux 0xfbe27a1c rb_first +EXPORT_SYMBOL vmlinux 0xfbe6adf1 try_to_release_page +EXPORT_SYMBOL vmlinux 0xfc02b7ad sysctl_tcp_wmem +EXPORT_SYMBOL vmlinux 0xfc1db70d sk_alloc +EXPORT_SYMBOL vmlinux 0xfc27b168 nf_ct_attach +EXPORT_SYMBOL vmlinux 0xfc39e32f ioport_unmap +EXPORT_SYMBOL vmlinux 0xfc3a2098 blkdev_issue_discard +EXPORT_SYMBOL vmlinux 0xfc3afc34 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xfc615c85 genphy_read_status +EXPORT_SYMBOL vmlinux 0xfc712c3d ata_link_printk +EXPORT_SYMBOL vmlinux 0xfc80e693 phys_mem_access_prot +EXPORT_SYMBOL vmlinux 0xfcaa04a0 out_of_line_wait_on_bit_lock +EXPORT_SYMBOL vmlinux 0xfcb926cd kstrtouint_from_user +EXPORT_SYMBOL vmlinux 0xfcc2a43c utf32_to_utf8 +EXPORT_SYMBOL vmlinux 0xfcd35070 blk_limits_io_min +EXPORT_SYMBOL vmlinux 0xfce48e9b directly_mappable_cdev_bdi +EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq +EXPORT_SYMBOL vmlinux 0xfcf67667 pci_set_power_state +EXPORT_SYMBOL vmlinux 0xfcfa03ff fb_videomode_to_modelist +EXPORT_SYMBOL vmlinux 0xfcffc491 mnt_pin +EXPORT_SYMBOL vmlinux 0xfd3cb8d7 register_sysctl_paths +EXPORT_SYMBOL vmlinux 0xfd6293c2 boot_tvec_bases +EXPORT_SYMBOL vmlinux 0xfd6a20a6 flush_delayed_work_sync +EXPORT_SYMBOL vmlinux 0xfd6b3d0c posix_acl_from_mode +EXPORT_SYMBOL vmlinux 0xfd7352b7 tty_devnum +EXPORT_SYMBOL vmlinux 0xfd813966 set_device_ro +EXPORT_SYMBOL vmlinux 0xfdb5535a agp_generic_alloc_by_type +EXPORT_SYMBOL vmlinux 0xfdb6cedc _raw_read_unlock_bh +EXPORT_SYMBOL vmlinux 0xfdb9b629 ioread32be +EXPORT_SYMBOL vmlinux 0xfdbe0288 pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0xfdbfa4af read_cache_page +EXPORT_SYMBOL vmlinux 0xfdc308eb blk_stop_queue +EXPORT_SYMBOL vmlinux 0xfdc87a95 dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0xfded48ed enable_kernel_fp +EXPORT_SYMBOL vmlinux 0xfdfc0b3b fiemap_fill_next_extent +EXPORT_SYMBOL vmlinux 0xfdfc1bc0 ns_capable +EXPORT_SYMBOL vmlinux 0xfe09f427 dentry_path_raw +EXPORT_SYMBOL vmlinux 0xfe26fc7c nr_node_ids +EXPORT_SYMBOL vmlinux 0xfe29b85c commit_creds +EXPORT_SYMBOL vmlinux 0xfe3687d9 fsl_lbc_ctrl_dev +EXPORT_SYMBOL vmlinux 0xfe4cb4b5 _lv1_storage_write +EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe5ddc89 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0xfe673066 blk_queue_unprep_rq +EXPORT_SYMBOL vmlinux 0xfe6d9c10 udp_sendmsg +EXPORT_SYMBOL vmlinux 0xfe769456 unregister_netdevice_notifier +EXPORT_SYMBOL vmlinux 0xfe7c4287 nr_cpu_ids +EXPORT_SYMBOL vmlinux 0xfe84123d filemap_fdatawrite +EXPORT_SYMBOL vmlinux 0xfe895eba do_sync_write +EXPORT_SYMBOL vmlinux 0xfeb026ec i2c_master_recv +EXPORT_SYMBOL vmlinux 0xfebda391 uart_unregister_driver +EXPORT_SYMBOL vmlinux 0xfec3c2f2 bcd2bin +EXPORT_SYMBOL vmlinux 0xfed221d9 pasemi_dma_alloc_ring +EXPORT_SYMBOL vmlinux 0xfee9ce15 scsi_host_get +EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r +EXPORT_SYMBOL vmlinux 0xfef96e23 __scsi_print_command +EXPORT_SYMBOL vmlinux 0xff093128 agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0xff0f1679 rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0xff1765c7 rtas_call +EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start +EXPORT_SYMBOL vmlinux 0xff2969e5 kmem_cache_alloc_node +EXPORT_SYMBOL vmlinux 0xff446c2b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap +EXPORT_SYMBOL vmlinux 0xff7559e4 ioport_resource +EXPORT_SYMBOL vmlinux 0xff81d2c5 __debugger_dabr_match +EXPORT_SYMBOL vmlinux 0xff83bbe9 journal_dirty_data +EXPORT_SYMBOL vmlinux 0xff8a3db9 gen_pool_virt_to_phys +EXPORT_SYMBOL vmlinux 0xff8c676d kobject_put +EXPORT_SYMBOL vmlinux 0xff8e9195 pci_claim_resource +EXPORT_SYMBOL vmlinux 0xff8faefe __tcf_em_tree_match +EXPORT_SYMBOL vmlinux 0xff91d89b inet6_unregister_protosw +EXPORT_SYMBOL vmlinux 0xff9ca065 fb_edid_to_monspecs +EXPORT_SYMBOL vmlinux 0xffa02bf0 of_find_compatible_node +EXPORT_SYMBOL vmlinux 0xffd5a395 default_wake_function +EXPORT_SYMBOL vmlinux 0xffe5095d groups_free +EXPORT_SYMBOL vmlinux 0xfffaf730 iget5_locked +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x376ce317 spufs_context_fops +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0x3bd05125 spu_restore +EXPORT_SYMBOL_GPL arch/powerpc/platforms/cell/spufs/spufs 0xd9427ce9 spu_save +EXPORT_SYMBOL_GPL crypto/af_alg 0x0926fb5c af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x289197b2 af_alg_cmsg_send +EXPORT_SYMBOL_GPL crypto/af_alg 0x58716898 af_alg_wait_for_completion +EXPORT_SYMBOL_GPL crypto/af_alg 0x67c9e8aa af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x8d0c7fd3 af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0x900e5569 af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xbea063dd af_alg_complete +EXPORT_SYMBOL_GPL crypto/af_alg 0xe1b6ef1d af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xef0599b8 af_alg_accept +EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x7095176c async_memcpy +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xf34d3cad async_gen_syndrome +EXPORT_SYMBOL_GPL crypto/async_tx/async_pq 0xfed1bfda async_syndrome_val +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0x3ed56852 async_raid6_2data_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_raid6_recov 0xf8e1c8d8 async_raid6_datap_recov +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x7392316e async_tx_submit +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x8c007bdf __async_tx_find_channel +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0x9b72717c async_tx_quiesce +EXPORT_SYMBOL_GPL crypto/async_tx/async_tx 0xc5df7557 async_trigger_callback +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0x14b7235e async_xor +EXPORT_SYMBOL_GPL crypto/async_tx/async_xor 0xb291c6cc async_xor_val +EXPORT_SYMBOL_GPL crypto/blowfish_common 0xbeb8fe50 blowfish_setkey +EXPORT_SYMBOL_GPL crypto/cryptd 0x086ab4fa cryptd_ablkcipher_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x100dc8c6 cryptd_free_aead +EXPORT_SYMBOL_GPL crypto/cryptd 0x1108a3d9 cryptd_free_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0x113a9c64 cryptd_aead_child +EXPORT_SYMBOL_GPL crypto/cryptd 0x14986de7 cryptd_shash_desc +EXPORT_SYMBOL_GPL crypto/cryptd 0x41a84c3c cryptd_alloc_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0x8d1d0b3c cryptd_free_ahash +EXPORT_SYMBOL_GPL crypto/cryptd 0xb6045933 cryptd_ahash_child +EXPORT_SYMBOL_GPL crypto/cryptd 0xc004e45a cryptd_alloc_ablkcipher +EXPORT_SYMBOL_GPL crypto/cryptd 0xf4b92dd1 cryptd_alloc_aead +EXPORT_SYMBOL_GPL crypto/des_generic 0xcfd9a2c0 des_ekey +EXPORT_SYMBOL_GPL crypto/lrw 0x3864eb66 lrw_free_table +EXPORT_SYMBOL_GPL crypto/lrw 0x911a91c6 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 0xfdaafc77 serpent_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x6c3229bb __twofish_setkey +EXPORT_SYMBOL_GPL crypto/twofish_common 0x858ab73b twofish_setkey +EXPORT_SYMBOL_GPL crypto/xts 0x96394127 xts_crypt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x3de457b5 ahci_check_ready +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5ac8a22e ahci_sdev_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5eacba1f ahci_interrupt +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x5fbde3ca ahci_pmp_retry_srst_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x645b3a3c ahci_print_info +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x645e3fb6 ahci_reset_controller +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x73b3ed95 ahci_shost_attrs +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x784ad5e8 ahci_kick_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0x8fd5c4f5 ahci_ops +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xabeb610c ahci_start_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xafa760da ahci_fill_cmd_slot +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb3be315e ahci_save_initial_config +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xb98dc9f6 ahci_set_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xd6ead97b ahci_port_resume +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xddabaad4 ahci_dev_classify +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xe91b44e9 ahci_do_softreset +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xea50dad3 ahci_ignore_sss +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf29f8107 ahci_stop_engine +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf6464980 ahci_em_messages +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xf82ca0e0 ahci_reset_em +EXPORT_SYMBOL_GPL drivers/ata/libahci 0xfff8cb31 ahci_init_controller +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x2bb0bbb5 __pata_platform_probe +EXPORT_SYMBOL_GPL drivers/ata/pata_platform 0x5a2d0329 __pata_platform_remove +EXPORT_SYMBOL_GPL drivers/ata/pata_sis 0x032c42ef 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 0x36634763 bcma_chipco_pll_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x546fc031 bcma_driver_unregister +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x59725a68 bcma_core_pci_irq_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5efeb8b3 bcma_core_pll_ctl +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x5f19ddf0 bcma_core_disable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6177a75c bcma_chipco_chipctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x6fd3947a bcma_core_pci_extend_L1timer +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0x732af27e bcma_core_set_clockmode +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc0152321 bcma_find_core +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xc4ccc81b bcma_chipco_regctl_maskset +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xd8b15099 bcma_core_enable +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe00c5271 bcma_core_is_enabled +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xe3c7cfe3 __bcma_driver_register +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xebdfe04d bcma_chipco_gpio_control +EXPORT_SYMBOL_GPL drivers/bcma/bcma 0xfbec2ed5 bcma_chipco_pll_write +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x01e62c23 btmrvl_register_hdev +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x0ab4d062 btmrvl_check_evtpkt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x392ce3ff btmrvl_process_event +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x3cffdb84 btmrvl_add_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x599df9cb btmrvl_remove_card +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x6bbb5798 btmrvl_send_hscfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0x8e272701 btmrvl_enable_ps +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xac16ea67 btmrvl_interrupt +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xefaf851a btmrvl_send_module_cfg_cmd +EXPORT_SYMBOL_GPL drivers/bluetooth/btmrvl 0xfabb4f54 btmrvl_enable_hs +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x0c32ff8a edac_pci_alloc_index +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x117842b1 edac_device_handle_ce +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x1e9b8ebf edac_device_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x23148842 edac_device_handle_ue +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x46ce7a65 edac_device_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x5b321ecf edac_mc_handle_error +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x6202af38 find_mci_by_dev +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 0x707485e8 edac_pci_alloc_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x77a8d56a edac_mc_add_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x785ac0b3 edac_mc_del_mc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x87f2f0dd edac_pci_free_ctl_info +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x8ac03691 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0x9873625b edac_pci_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa04d08b1 edac_device_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xa82d5dc9 edac_pci_handle_npe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xb763a360 edac_mc_free +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc0dcb59e edac_layer_name +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xc8a1ac5c edac_mc_alloc +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xcf119ef6 edac_pci_handle_pe +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xd83ccc8a edac_pci_release_generic_ctl +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xef3c405d edac_pci_add_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xf2b7558d edac_pci_reset_delay_period +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xfaaf0676 edac_device_del_device +EXPORT_SYMBOL_GPL drivers/edac/edac_core 0xff0d5ef6 edac_pci_create_generic_ctl +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x093bec3e extcon_dev_unregister +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x0da68cc3 extcon_register_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x1eab38f9 extcon_set_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x5df2b1fc extcon_dev_register +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x6372a7f1 extcon_get_cable_state_ +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x709597ec extcon_update_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x73b00c03 extcon_find_cable_index +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8cb3526e extcon_set_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x8d1f0091 extcon_get_extcon_dev +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0x96849fef extcon_get_cable_state +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xa1092a3e extcon_unregister_notifier +EXPORT_SYMBOL_GPL drivers/extcon/extcon_class 0xcc10f4af extcon_set_cable_state_ +EXPORT_SYMBOL_GPL drivers/firewire/firewire-core 0xf4ade51f fw_card_release +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x5caeac7c bgpio_init +EXPORT_SYMBOL_GPL drivers/gpio/gpio-generic 0x961b15de bgpio_remove +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x1c065b76 __max730x_probe +EXPORT_SYMBOL_GPL drivers/gpio/gpio-max730x 0x2662d61b __max730x_remove +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xaff1b224 drm_class_device_register +EXPORT_SYMBOL_GPL drivers/gpu/drm/drm 0xf70726f4 drm_class_device_unregister +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x02b39050 ttm_dma_page_alloc_debugfs +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x884f3c98 ttm_dma_unpopulate +EXPORT_SYMBOL_GPL drivers/gpu/drm/ttm/ttm 0x9eb7c142 ttm_dma_populate +EXPORT_SYMBOL_GPL drivers/hid/hid 0x05495392 hid_debug +EXPORT_SYMBOL_GPL drivers/hid/hid 0x0aa9fc34 hidraw_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x25d2aafe hid_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x2e2b3965 hidinput_get_led_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x30732d66 hidinput_count_leds +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3219a60d __hid_register_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0x3baa229f hid_dump_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x468cb40d hid_set_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0x58ed2f22 hid_input_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0x59da304e hid_report_raw_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x5bc06d1a hid_add_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0x79c66c14 hidinput_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0x7e317203 hidraw_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0x8f6fa564 hid_register_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa17aca99 hid_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa194a0b9 hid_resolv_usage +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa300d843 hid_check_keys_pressed +EXPORT_SYMBOL_GPL drivers/hid/hid 0xa9b64db3 hid_dump_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xad09c451 hid_destroy_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xb622a360 hidraw_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbe8d44e3 hid_dump_input +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbf00789e hid_open_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xbfd2e244 hid_allocate_device +EXPORT_SYMBOL_GPL drivers/hid/hid 0xcc47b5e0 hid_parse_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xdf73ee1a hid_output_report +EXPORT_SYMBOL_GPL drivers/hid/hid 0xe6be1c8e hidinput_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf07ba35b hidinput_connect +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf0d21749 hidinput_find_field +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf1984f6a hid_unregister_driver +EXPORT_SYMBOL_GPL drivers/hid/hid 0xf403ac56 hid_debug_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x2f622ea1 roccat_disconnect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0x8c4181ec roccat_report_event +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat 0xb639bae8 roccat_connect +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x396ddf20 roccat_common_send +EXPORT_SYMBOL_GPL drivers/hid/hid-roccat-common 0x936ab274 roccat_common_receive +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x01fd453e usbhid_lookup_quirk +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x326cd075 hiddev_hid_event +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x4a8eab6f usbhid_wait_io +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x7eeb2903 usbhid_set_leds +EXPORT_SYMBOL_GPL drivers/hid/usbhid/usbhid 0x8d4beacf usbhid_submit_report +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x071fd6e4 hsi_release_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x1384a971 hsi_register_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x47f43518 hsi_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5a7b2e29 hsi_unregister_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x5f47e47b hsi_alloc_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x6d7b8ab5 hsi_free_msg +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0x90b2c576 hsi_async +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xcce49f71 hsi_put_controller +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd777e1cd hsi_unregister_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xd905ec2f hsi_claim_port +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xda231189 hsi_register_client_driver +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe07d8fcc hsi_register_port_event +EXPORT_SYMBOL_GPL drivers/hsi/hsi 0xe8a6ada0 hsi_alloc_msg +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x1c7807bd i2c_dw_xfer +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x23cbc435 i2c_dw_enable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x39c7dd13 i2c_dw_read_comp_param +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x43c8bbda i2c_dw_disable +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x47c1ad73 i2c_dw_clear_int +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x4fa7ed00 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 0x6908e1d5 i2c_dw_func +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0x8f4a2b8f i2c_dw_is_enabled +EXPORT_SYMBOL_GPL drivers/i2c/busses/i2c-designware-core 0xe0c0f5ed i2c_dw_init +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x01dc20c2 i2c_add_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-mux 0x7f84e2b1 i2c_del_mux_adapter +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xa148bf4b i2c_setup_smbus_alert +EXPORT_SYMBOL_GPL drivers/i2c/i2c-smbus 0xd2ad9c19 i2c_handle_smbus_alert +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x001178ab iio_st_channel_release +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x1a8a16d9 iio_st_read_channel_scale +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x39b21c7c iio_update_demux +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x552fd4cf iio_push_to_buffer +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x63dd85a4 iio_st_get_channel_type +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7754fa98 iio_st_read_channel_raw +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x7945bde3 iio_st_channel_get_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0x9976bc0a iio_map_array_register +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xba22a928 iio_scan_mask_set +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xce066c2c iio_st_channel_release_all +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xd4f253c1 iio_alloc_pollfunc +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xe6f41244 iio_st_channel_get +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xeb576738 iio_scan_mask_query +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff37f9c5 iio_map_array_unregister +EXPORT_SYMBOL_GPL drivers/iio/industrialio 0xff460f93 iio_dealloc_pollfunc +EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq +EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x85c1e337 input_ff_create_memless +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x49a4fcbd adxl34x_remove +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0x66535a18 adxl34x_suspend +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xb11626b1 adxl34x_probe +EXPORT_SYMBOL_GPL drivers/input/misc/adxl34x 0xe4586827 adxl34x_resume +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0x8bbfa50b cyttsp_pm_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xd3683858 cyttsp_probe +EXPORT_SYMBOL_GPL drivers/input/touchscreen/cyttsp_core 0xddaf3b76 cyttsp_remove +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x1a90fe6c wm97xx_register_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x2613497f wm97xx_unregister_mach_ops +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x3e4edc63 wm97xx_reg_read +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x61117558 wm9712_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x6164f7be wm97xx_set_suspend_mode +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x767cdf01 wm97xx_set_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7caf6802 wm9705_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0x7edbb3d5 wm97xx_read_aux_adc +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xadbb75c6 wm9713_codec +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xd4ede453 wm97xx_reg_write +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xdbb51287 wm97xx_get_gpio +EXPORT_SYMBOL_GPL drivers/input/touchscreen/wm97xx-ts 0xeb1d6293 wm97xx_config_gpio +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0x4de7b2d0 unregister_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/capi/kernelcapi 0xb17b7c77 register_capictr_notifier +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x02e1eaac gigaset_freedriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x042994a0 gigaset_initcs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x09890912 gigaset_shutdown +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x18826d0e gigaset_stop +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3678ef28 gigaset_if_receive +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x3a9507c6 gigaset_isdn_rcv_err +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x454aa44f gigaset_debuglevel +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x514c7889 gigaset_handle_modem_response +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x651d02f6 gigaset_m10x_send_skb +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x8cc76571 gigaset_initdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0x95f009d9 gigaset_fill_inbuf +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa2ab4acb gigaset_blockdriver +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xa3151853 gigaset_dbg_buffer +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xad3ecec2 gigaset_m10x_input +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xdf7c062d gigaset_freecs +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xe36dcbc1 gigaset_start +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xebd4d52e gigaset_add_event +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xf6b6239b gigaset_skb_rcvd +EXPORT_SYMBOL_GPL drivers/isdn/gigaset/gigaset 0xfd20d389 gigaset_skb_sent +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x20b19771 wf_put_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x48133a39 wf_get_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x4f8d7bd6 wf_find_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x63acbce1 wf_register_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x736e2552 wf_unregister_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x75147afa wf_set_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x7e6209ed wf_unregister_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0x8613ee81 wf_get_control +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 0xaf15726f wf_unregister_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xb16155bc wf_find_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xdb7e8499 wf_register_client +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xec830adb wf_register_sensor +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xed82a14f wf_clear_overtemp +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_core 0xfd98d412 wf_put_control +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0x9808f147 wf_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xb8ed5b2c wf_cpu_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xcd9a18ef wf_pid_init +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_pid 0xceda69f1 wf_cpu_pid_run +EXPORT_SYMBOL_GPL drivers/macintosh/windfarm_smu_sat 0xe05851d5 smu_sat_get_sdb_partition +EXPORT_SYMBOL_GPL drivers/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 0xab1582b1 dm_bufio_client_create +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-multipath 0x4a92a690 dm_register_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-multipath 0x6df78076 dm_unregister_path_selector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x01d2f9ac dm_rh_recovery_start +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x38efaf5a dm_region_hash_destroy +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x3a18389a dm_rh_update_states +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4430764e dm_rh_region_to_sector +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x45ab972a dm_rh_dec +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4b115235 dm_rh_mark_nosync +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x4d0624a8 dm_rh_dirty_log +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x73bdb0ee dm_rh_delay +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7774620f dm_rh_stop_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x7d053fc5 dm_rh_start_recovery +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x85c52d32 dm_rh_inc_pending +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0x986c7d30 dm_rh_bio_to_region +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xa53387c7 dm_rh_flush +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 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 0xd77f6c5b dm_region_hash_create +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xd8aa4284 dm_rh_region_context +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfad9d53a dm_rh_get_region_size +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfc62ef4e dm_rh_get_region_key +EXPORT_SYMBOL_GPL drivers/md/dm-region-hash 0xfd93482e dm_rh_recovery_in_flight +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x0054f69d dm_tm_pre_commit +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x03ced457 dm_btree_lookup +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x07803141 dm_sm_checker_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x08a936ca dm_btree_insert_notify +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x17c36f29 dm_bm_checksum +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x1e3f728d dm_block_data +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x2c112836 dm_block_location +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x3476d39d dm_block_manager_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x4035149a dm_sm_disk_open +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 0x45a8b35f dm_sm_checker_create_fresh +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x63b2ff62 dm_btree_insert +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x688d422d dm_bm_block_size +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x72289260 dm_block_manager_destroy +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x74d47993 dm_sm_disk_create +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0x77fb5544 dm_tm_create_with_sm +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 0xa6aae3ea dm_btree_find_highest_key +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xab03c775 dm_tm_open_with_sm +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb7bad799 dm_bm_unlock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb967690a dm_btree_remove +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xb9a6ecf8 dm_tm_dec +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 0xdb562135 dm_btree_empty +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf375d009 dm_bm_write_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf5455120 dm_bm_read_lock +EXPORT_SYMBOL_GPL drivers/md/persistent-data/dm-persistent-data 0xf99dc2cf dm_btree_del +EXPORT_SYMBOL_GPL drivers/md/raid1 0xca3c8183 md_raid1_congested +EXPORT_SYMBOL_GPL drivers/md/raid456 0x0b3d316e md_raid5_congested +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x25cb0205 saa7146_devices_lock +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5a2020b8 saa7146_wait_for_debi_done +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x5ace94d3 saa7146_i2c_adapter_prepare +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x60cdf741 saa7146_pgtable_build_single +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x70a7418a saa7146_vfree_destroy_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x77b7b93a saa7146_setgpio +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x86aef1a1 saa7146_pgtable_alloc +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x86bb308f saa7146_pgtable_free +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0x996402a5 saa7146_vmalloc_build_pgtable +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xae28e035 saa7146_register_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xb169a54b saa7146_unregister_extension +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xcf683cf2 saa7146_devices +EXPORT_SYMBOL_GPL drivers/media/common/saa7146 0xe3cd9b5c saa7146_debug +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x10ca2d01 saa7146_start_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x1d6034cb saa7146_vv_init +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x6177ec0f saa7146_stop_preview +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0x7216d499 saa7146_set_hps_source_and_sync +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc3fd4655 saa7146_unregister_device +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xc5c6a8c6 saa7146_vv_release +EXPORT_SYMBOL_GPL drivers/media/common/saa7146_vv 0xe16ce68a saa7146_register_device +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x0d0856d5 mt2063_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x15607b94 tuner_MT2063_ClearPowerMaskBits +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt2063 0x5a9d544d tuner_MT2063_SoftwareShutdown +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mt20xx 0x5cd37e2d microtune_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/mxl5007t 0x8df905b1 mxl5007t_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda18271 0xb62a7a49 tda18271_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda827x 0xbe7f74cb tda827x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xaef5ff24 tda829x_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda8290 0xdfb4af24 tda829x_probe +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tda9887 0x31e7c9a0 tda9887_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0x1112ff8f tea5761_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5761 0xd061cfcc tea5761_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0x8f399d07 tea5767_attach +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tea5767 0xf53b0794 tea5767_autodetection +EXPORT_SYMBOL_GPL drivers/media/common/tuners/tuner-simple 0x7fa04ec7 simple_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-demod 0xb124862f mxl111sf_demod_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/dvb-usb/mxl111sf-tuner 0x8edb6e01 mxl111sf_tuner_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/frontends/tda18271c2dd 0x6644cae3 tda18271c2dd_attach +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x0bb9ed9d mantis_ca_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x199cdeb6 mantis_dma_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2605c472 mantis_pci_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x2cbbf820 mantis_get_mac +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3167e188 mantis_uart_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3654038a mantis_dvb_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3d52ca53 mantis_uart_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x3ed88fe9 mantis_frontend_power +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x46ae640b mantis_stream_control +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5768e49f mantis_ca_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x5d0f292f mantis_i2c_init +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x6c2eede7 mantis_pci_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0x94fd9370 mantis_i2c_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xd06e64e9 mantis_dma_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xe8d2d57a mantis_frontend_soft_reset +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xf940969f mantis_gpio_set_bits +EXPORT_SYMBOL_GPL drivers/media/dvb/mantis/mantis_core 0xffa6b9d5 mantis_dvb_exit +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x21e36bf2 smscore_registry_getmode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x27c524b1 smscore_getbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x37d91069 smsendian_handle_tx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x45284ae9 smsendian_handle_rx_message +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4566ed09 sms_board_lna_control +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x48eedf4c smscore_unregister_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x4fffe041 sms_board_power +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x74ee9098 sms_board_load_modules +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x76222253 sms_get_board +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x7c576277 smsendian_handle_message_header +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x99a81ab3 smsclient_sendrequest +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0x9c2e2b0f smscore_get_device_mode +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xaa36aa5e sms_board_event +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb5655152 smscore_set_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xb884b892 smscore_start_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xbbdb5c42 smscore_unregister_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xc6784877 smscore_register_client +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xce27bc98 smscore_register_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xdc6bdd36 smscore_onresponse +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xde405d44 smscore_unregister_hotplug +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe49603cf smscore_get_board_id +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xe562be8b smscore_register_device +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf2e25065 smscore_putbuffer +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf4667916 sms_board_setup +EXPORT_SYMBOL_GPL drivers/media/dvb/siano/smsmdtv 0xf8c578f1 sms_board_led_feedback +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x1762d994 ttpci_budget_debiread +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x36e51503 ttpci_budget_deinit +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x70d08048 ttpci_budget_irq10_handler +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0x7948c222 budget_debug +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xa21308ab ttpci_budget_init_hooks +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xdb832f24 ttpci_budget_set_video_port +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xe3af1f87 ttpci_budget_init +EXPORT_SYMBOL_GPL drivers/media/dvb/ttpci/budget-core 0xf0fb2d19 ttpci_budget_debiwrite +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x19b00628 rc_map_register +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x246ef7f8 rc_keyup +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x3486b496 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 0x6e109bab rc_unregister_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x70c3c6b0 ir_raw_event_set_idle +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x735b3c84 rc_map_get +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x780e22cd ir_raw_event_store +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7b9783c0 rc_map_unregister +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x7bbd1584 rc_repeat +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x838728af rc_g_keycode_from_table +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x8e0384ce rc_free_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0x972b0784 rc_keydown_notimeout +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xb28d4052 rc_allocate_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc1e2f1c2 rc_register_device +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xc50771ae rc_keydown +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe4f5e5ff ir_raw_event_store_with_filter +EXPORT_SYMBOL_GPL drivers/media/rc/rc-core 0xe58a9a8a ir_raw_event_handle +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x017ea7c7 cx231xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x2220909a cx231xx_send_gpio_cmd +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x222c6443 cx231xx_set_alt_setting +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x40c318bf cx231xx_demod_reset +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x51e04372 cx231xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x61ce7e9a cx231xx_enable_i2c_port_3 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x6fe280d2 cx231xx_init_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x868346d6 cx231xx_unmute_audio +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0x92bbe6f2 cx231xx_disable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa27cfc10 cx231xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xa34cbc83 cx231xx_capture_start +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xb9a99ed7 cx231xx_dev_init +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xbd55a03f cx231xx_uninit_bulk +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xbd60c553 is_fw_load +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc627d934 cx231xx_send_usb_command +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xc9dab94e cx231xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xd58d628d cx231xx_init_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe23babd3 cx231xx_enable656 +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xe5d8885a cx231xx_dev_uninit +EXPORT_SYMBOL_GPL drivers/media/video/cx231xx/cx231xx 0xf1549f38 cx231xx_uninit_vbi_isoc +EXPORT_SYMBOL_GPL drivers/media/video/cx88/cx88xx 0x8b7eb7ba cx88_setup_xc3028 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0b978f1b em28xx_gpio_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x0f7c9c7f em28xx_read_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x100aea30 em28xx_uninit_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x1de74563 em28xx_write_ac97 +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x4ec13bfc em28xx_audio_analog_set +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x5066913e em28xx_audio_setup +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x6d5d8e7f em28xx_alloc_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x77b448fc em28xx_write_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x789385dd em28xx_read_reg +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x7fc8652c em28xx_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0x92174115 em28xx_init_isoc +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xaa254846 em28xx_write_regs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xc6748ce4 em28xx_stop_urbs +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xcc05d27d em28xx_write_reg_bits +EXPORT_SYMBOL_GPL drivers/media/video/em28xx/em28xx 0xd0bb54af em28xx_set_mode +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x1ab4027a saa7134_s_std_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x33e3b6cc saa7134_ts_qops +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x5a21ce9d saa7134_s_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0x9852d152 saa7134_queryctrl +EXPORT_SYMBOL_GPL drivers/media/video/saa7134/saa7134 0xfe90aad9 saa7134_g_ctrl_internal +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x2309a6d6 tm6000_xc5000_callback +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x3339725a tm6000_get_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x7823566a tm6000_set_reg +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0x89b611dd tm6000_debug +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xc63537ef tm6000_set_audio_bitrate +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xcfdbc4bb tm6000_set_reg_mask +EXPORT_SYMBOL_GPL drivers/media/video/tm6000/tm6000 0xdff8e89d tm6000_tuner_callback +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x08f41ee0 v4l2_spi_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x528357bb v4l2_spi_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x813f3de4 v4l2_find_nearest_format +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x94632f90 v4l_fill_dv_preset_info +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0x95a9d2b8 v4l2_i2c_subdev_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xa5909c54 v4l2_i2c_new_subdev +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xb53fbd99 v4l2_i2c_subdev_addr +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xda1d8afa v4l2_i2c_new_subdev_board +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf2a353ac v4l2_i2c_tuner_addrs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-common 0xf5ef842e v4l_bound_align_image +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x2be1c13e v4l2_int_device_unregister +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x67361f61 v4l2_int_ioctl_1 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x6c2c1cb5 v4l2_int_ioctl_0 +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0x818bb99d v4l2_int_device_register +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-int-device 0xa5228b24 v4l2_int_device_try_attach_all +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x01382639 v4l2_m2m_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x1ee362f1 v4l2_m2m_next_buf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x4a3fe853 v4l2_m2m_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x69436b56 v4l2_m2m_poll +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0x8f3176f5 v4l2_m2m_ctx_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xaee952d5 v4l2_m2m_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb00984cd v4l2_m2m_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb5667765 v4l2_m2m_streamon +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xb5967564 v4l2_m2m_buf_queue +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc5cc43df v4l2_m2m_buf_remove +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xc6fca5ad v4l2_m2m_release +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xd854a26c v4l2_m2m_ctx_init +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xdeddc35a v4l2_m2m_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/v4l2-mem2mem 0xfc7e9414 v4l2_m2m_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x0f51f279 videobuf_mmap_mapper +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1d559028 videobuf_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x1fe5ffe9 videobuf_queue_to_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x20a39f38 videobuf_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x47d4fa05 videobuf_mmap_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4e1ea5a9 videobuf_next_field +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x4ebd28ee videobuf_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x50a9d8d8 __videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x642d1ff5 videobuf_read_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x6dbd3657 videobuf_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x7d7d4072 videobuf_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x823472f6 videobuf_iolock +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x83e5e3cc videobuf_poll_stream +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0x96dc4da1 videobuf_queue_is_busy +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa1234e54 videobuf_read_one +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xa2a05141 videobuf_read_stop +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xac152571 videobuf_alloc_vb +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xb7aef9dd videobuf_querybuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xc9f098a6 videobuf_queue_core_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xca706d5e videobuf_waiton +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xd7220d55 videobuf_read_start +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xe3af071e videobuf_mmap_setup +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xf38a8949 videobuf_queue_cancel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-core 0xfe110330 videobuf_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x2417a6c8 videobuf_queue_dma_contig_init_cached +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x5e8b7e3d videobuf_queue_dma_contig_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0x8211bb35 videobuf_dma_contig_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-contig 0xcadc4f4c videobuf_to_dma_contig +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x553a86d0 videobuf_sg_alloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x67ddc6e4 videobuf_dma_init_overlay +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x77b5fff7 videobuf_dma_init_kernel +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x8cc8996f videobuf_to_dma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0x917d98ab videobuf_dma_init_user +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xa949e385 videobuf_dma_unmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xaddaa9fe videobuf_dma_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xce8778a4 videobuf_dma_map +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xe0ad1d2b videobuf_queue_sg_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-dma-sg 0xf0cdd5d4 videobuf_dma_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0x926a471f videobuf_to_vmalloc +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xb3abbe71 videobuf_queue_vmalloc_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf-vmalloc 0xfdd09d7e videobuf_vmalloc_free +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x007de088 vb2_plane_cookie +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x0c1e907d vb2_qbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1b9816cd vb2_prepare_buf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x1e9da48a vb2_poll +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x421dfcec vb2_read +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x53041ffb vb2_dqbuf +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5404a759 vb2_streamon +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x59c01bdb vb2_plane_vaddr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x5cf6e9b5 vb2_streamoff +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x707e7853 vb2_mmap +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x712147fa vb2_create_bufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x87bce1da vb2_queue_release +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x961177c2 vb2_reqbufs +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0x9b027a47 vb2_wait_for_all_buffers +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xbb36700d vb2_write +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdf16413a vb2_queue_init +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-core 0xdff5a731 vb2_buffer_done +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x805bd7ac vb2_dma_contig_memops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0x840eba15 vb2_dma_contig_init_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-dma-contig 0xe57f0426 vb2_dma_contig_cleanup_ctx +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x05a619a9 vb2_put_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x51b0625d vb2_mmap_pfn_range +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x78c15e9f vb2_common_vm_ops +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0x7dd7dca2 vb2_get_contig_userptr +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-memops 0xae24e4a9 vb2_get_vma +EXPORT_SYMBOL_GPL drivers/media/video/videobuf2-vmalloc 0x5e798b68 vb2_vmalloc_memops +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x1e3f5d73 v4l2_event_unsubscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x25461271 v4l2_fh_release +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x3a33e0ed v4l2_fh_add +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x41b059ec v4l2_fh_init +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x53ddfaa6 v4l2_event_queue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x59637651 v4l2_event_dequeue +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5bbe947b v4l2_event_pending +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x5f0c9850 v4l2_fh_open +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x615e2997 v4l2_compat_ioctl32 +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6929fa69 v4l2_device_unregister_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x6953544b v4l2_event_subscribe +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x71531d2c v4l2_device_set_name +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x73888489 v4l2_fh_exit +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x77b2e804 v4l2_device_register_subdev_nodes +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x8f22d46f v4l2_device_register +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0x9fb76672 v4l2_device_register_subdev +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa244f751 v4l2_device_disconnect +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xa898b3fc v4l2_fh_is_singular +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xab53e484 v4l2_fh_del +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xad4a3024 v4l2_event_unsubscribe_all +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xb0c31d4d v4l2_event_queue_fh +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xd57456a4 v4l2_device_put +EXPORT_SYMBOL_GPL drivers/media/video/videodev 0xda437ba9 v4l2_device_unregister +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x13cfdfc3 i2o_dma_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x42262a55 i2o_dma_map_single +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x6bd62942 i2o_pool_free +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0x735ae30b i2o_pool_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb26b9a6c i2o_dma_alloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xb7524a90 i2o_sg_tablesize +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xbceacb4e i2o_dma_realloc +EXPORT_SYMBOL_GPL drivers/message/i2o/i2o_core 0xf1166937 i2o_dma_map_sg +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x0c81f0e4 lm3533_update +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0x88d7607a lm3533_read +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-core 0xb56798e0 lm3533_write +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x0765b0df lm3533_ctrlbank_set_pwm +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x28bc467a lm3533_ctrlbank_get_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x51ced852 lm3533_ctrlbank_set_brightness +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0x6b72f48a lm3533_ctrlbank_set_max_current +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xa3b1f45a lm3533_ctrlbank_disable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xc72fbab0 lm3533_ctrlbank_enable +EXPORT_SYMBOL_GPL drivers/mfd/lm3533-ctrlbank 0xd7bacc3c lm3533_ctrlbank_get_pwm +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0x2f6fd520 mc13xxx_common_init +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xd3929995 mc13xxx_common_cleanup +EXPORT_SYMBOL_GPL drivers/mfd/mc13xxx-core 0xff6a2bc4 mc13xxx_adc_do_conversion +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x0bab75ee pcf50633_reg_set_bit_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x32b0caef pcf50633_register_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x5a5799a9 pcf50633_write_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x6e66d46f pcf50633_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x76383266 pcf50633_reg_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x86eb0cf1 pcf50633_free_irq +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0x9fbb15af pcf50633_irq_unmask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xc143bd80 pcf50633_irq_mask +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xe57f28e9 pcf50633_read_block +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xf9ecc279 pcf50633_irq_mask_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633 0xfe6dde7a pcf50633_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0x142bb457 pcf50633_adc_async_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-adc 0xc0d987fa pcf50633_adc_sync_read +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x31ad8c99 pcf50633_gpio_power_supply_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x69542bcc pcf50633_gpio_invert_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x8f54addd pcf50633_gpio_get +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0x94a47c8a pcf50633_gpio_set +EXPORT_SYMBOL_GPL drivers/mfd/pcf50633-gpio 0xe9ff1dd8 pcf50633_gpio_invert_get +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x1144132f rtsx_pci_card_pull_ctl_disable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x165423ff rtsx_pci_switch_clock +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x19014838 rtsx_pci_read_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x207a8f43 rtsx_pci_complete_unfinished_transfer +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x28a97a6b rtsx_pci_write_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x2eec0922 rtsx_pci_write_phy_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x338ffc1d rtsx_pci_send_cmd_no_wait +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x44c16bb2 rtsx_pci_card_exclusive_check +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x5463f2c9 rtsx_pci_add_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x641f32df rtsx_pci_stop_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x646b8b70 rtsx_pci_start_run +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x66b3c8b6 rtsx_pci_read_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x7c07c023 rtsx_pci_card_exist +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x8fcd56ed rtsx_pci_write_ppbuf +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0x98b6c16c rtsx_pci_send_cmd +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa02e0241 rtsx_pci_card_pull_ctl_enable +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa2554797 rtsx_pci_card_power_on +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xa81bddb1 rtsx_pci_card_power_off +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xb5661b3a rtsx_pci_switch_output_voltage +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xe0976683 rtsx_pci_read_register +EXPORT_SYMBOL_GPL drivers/mfd/rtsx_pci 0xeac243f7 rtsx_pci_transfer_data +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1914e386 sm501_modify_reg +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x1bc73620 sm501_misc_control +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0x606b6f8b sm501_set_clock +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xbf4da670 sm501_unit_power +EXPORT_SYMBOL_GPL drivers/mfd/sm501 0xc6d7ed0d sm501_find_clock +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x00049435 tps65217_reg_write +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x0889a1ba tps65217_set_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x21b71e35 tps65217_clear_bits +EXPORT_SYMBOL_GPL drivers/mfd/tps65217 0x4bd8430f tps65217_reg_read +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x08b8dd2e twl4030_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/twl4030-madc 0x4362dc66 twl4030_get_madc_conversion +EXPORT_SYMBOL_GPL drivers/mfd/ucb1400_core 0xae09f78c ucb1400_adc_read +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x0c7f7a87 cb710_pci_update_config_reg +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x14c62742 cb710_sg_dwiter_write_next_block +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x4599b4b9 cb710_set_irq_handler +EXPORT_SYMBOL_GPL drivers/misc/cb710/cb710 0x824cca1c 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 0x2640d1cb enclosure_find +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x40c1104a enclosure_add_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x5ed533a6 enclosure_for_each_device +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0x6ddc1c76 enclosure_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xa7aebb1e enclosure_component_register +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf08d1018 enclosure_unregister +EXPORT_SYMBOL_GPL drivers/misc/enclosure 0xf1bebb90 enclosure_remove_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x01ff7b6f lis3lv02d_poweron +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x0b549e56 lis3_dev +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x6fc28dd4 lis3lv02d_poweroff +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x7bc8c418 lis3lv02d_joystick_disable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x81ffc16b lis3lv02d_init_device +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0x883e2ab5 lis3lv02d_joystick_enable +EXPORT_SYMBOL_GPL drivers/misc/lis3lv02d/lis3lv02d 0xdb94b23d lis3lv02d_remove_fs +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 0x0bb78053 st_register +EXPORT_SYMBOL_GPL drivers/misc/ti-st/st_drv 0x25456c7f st_unregister +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x01cf01e5 sdhci_alloc_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x2df92fbe sdhci_free_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x34e235f7 sdhci_runtime_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x43308d61 sdhci_runtime_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x7d9fc4a5 sdhci_enable_irq_wakeups +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x8995cf5f sdhci_remove_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0x9d5e8ba4 sdhci_suspend_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xa46c3b6b sdhci_add_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci 0xe17a351a sdhci_resume_host +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x6cb67206 sdhci_pltfm_register +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7aca165d sdhci_pltfm_pmops +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7c42200d sdhci_get_of_property +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0x7fb570fb sdhci_pltfm_free +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xd758fc7c sdhci_pltfm_init +EXPORT_SYMBOL_GPL drivers/mmc/host/sdhci-pltfm 0xdbbd40cc sdhci_pltfm_unregister +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x23f4c6c2 cfi_cmdset_0200 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0x856eb4db cfi_cmdset_0001 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0001 0xda8aae6e cfi_cmdset_0003 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0x18c02014 cfi_cmdset_0002 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xa708157e cfi_cmdset_0006 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0002 0xf7cf4d6f cfi_cmdset_0701 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_cmdset_0020 0xfc7099b8 cfi_cmdset_0020 +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0x0955bc3d cfi_qry_mode_off +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xe72a5a55 cfi_qry_present +EXPORT_SYMBOL_GPL drivers/mtd/chips/cfi_util 0xf32e32c4 cfi_qry_mode_on +EXPORT_SYMBOL_GPL drivers/mtd/devices/doc2001plus 0xd8db9319 DoCMilPlus_init +EXPORT_SYMBOL_GPL drivers/mtd/devices/docecc 0x45937659 doc_decode_ecc +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x0ad766e3 mtd_write_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x13e6290a get_mtd_device_nm +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x15299b35 mtd_writev +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x164e1380 mtd_is_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x1671d220 mtd_unpoint +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x28a8b72b mtd_device_unregister +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x2b89bcad mount_mtd +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3264005b mtd_get_fact_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3348e6f6 mtd_point +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3478a5e0 __mtd_next_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x393d0b30 mtd_read_fact_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x3dac931f mtd_del_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x413844fb put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x43c25075 __put_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x446b5a68 mtd_kmalloc_up_to +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x51bfc774 mtd_get_user_prot_info +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x66a1526d mtd_get_unmapped_area +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x7410ccb6 mtd_is_locked +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x81509f8c __get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x83174c57 mtd_lock_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8c9af52b mtd_panic_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x8d56b2f3 get_mtd_device +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x961e5d85 mtd_block_isbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0x9fcee77a mtd_erase_callback +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa8b8d899 mtd_write +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xa953432c register_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac097435 unregister_mtd_user +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xac60f660 kill_mtd_super +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xb46f531c mtd_table_mutex +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xbae401de mtd_read_user_prot_reg +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xce9de637 mtd_erase +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd132bb38 mtd_device_parse_register +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xd8db2159 deregister_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdddf5973 mtd_block_markbad +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xdeca1fba mtd_read +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe440fd87 mtd_unlock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xe6b91059 mtd_lock +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xf472d474 register_mtd_parser +EXPORT_SYMBOL_GPL drivers/mtd/mtd 0xfa17779b mtd_add_partition +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x1f9fd3fd add_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x2a8c426d register_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0x7ecf34b6 mtd_blktrans_cease_background +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xeb0eaa66 del_mtd_blktrans_dev +EXPORT_SYMBOL_GPL drivers/mtd/mtd_blkdevs 0xf68b48d4 deregister_mtd_blktrans +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0x464dfa45 nand_release +EXPORT_SYMBOL_GPL drivers/mtd/nand/nand 0xe29dcc9e nand_wait_ready +EXPORT_SYMBOL_GPL drivers/mtd/nand/sm_common 0x65998aeb sm_register_device +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0x80c3b694 onenand_scan +EXPORT_SYMBOL_GPL drivers/mtd/onenand/onenand 0xec4bf624 onenand_release +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x0416fcca ubi_close_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x2fe3c18a 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 0x4b32a10f ubi_open_volume_path +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x5cfdd22d ubi_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6073c695 ubi_leb_change +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x610afce4 ubi_do_get_device_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x6f09ba8a ubi_register_volume_notifier +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x79cfc908 ubi_open_volume_nm +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0x7e5622b2 ubi_is_mapped +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xaa25fa1f ubi_leb_read +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xb54ae21c ubi_get_volume_info +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcbac7096 ubi_leb_map +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xcf0fce3b ubi_leb_write +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd2603bed ubi_leb_unmap +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xd4d2f013 ubi_open_volume +EXPORT_SYMBOL_GPL drivers/mtd/ubi/ubi 0xfd6f0ef9 ubi_unregister_volume_notifier +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x2afe7db9 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x678d72b6 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb2db6856 unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xce28ca75 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x097989d1 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x261d9d5f can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x27b3565a open_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x426c7bed alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8c848daa can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x8d840c2a can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x96ea0da4 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x99fb09d7 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0x9b88ad70 alloc_can_skb +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xa7269a73 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xed9d510b unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/can-dev 0xf5e74e3f alloc_candev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0x657548e9 alloc_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xc6f4998e unregister_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xe9b90d40 register_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/cc770/cc770 0xf0af9dac free_cc770dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4c56c18a free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x4e92f738 register_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xc6b514b8 alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xec8975e8 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01aef0a6 mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0218dc1b mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08d49229 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a64512d mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0aabeff8 mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ac9de99 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f0e1aec mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f2d72db mlx4_fmr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x111b26d6 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x12230357 mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x202736f7 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20a2e504 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2412e25b mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2a898b9b mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c370c5e mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2dae88df mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30aa99ac mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x31ee8b2b mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x377bf3d7 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f93838b mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41efb78e mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x437371a2 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x44a4aae6 mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x49b73e6b mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bc8787e mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x503396d7 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5274090e mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54361187 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x54bdbc58 mlx4_put_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x568a5a61 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5c54053b mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f8dc45b mlx4_fmr_unmap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63583800 mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6456bf8b mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6a8699e4 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ec15689 mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x753ac76b mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x790b10d8 mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x791f9c57 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79686399 mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d3b2ad0 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7f39b72b mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85055e45 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x85597753 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c4040c0 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98188223 mlx4_fmr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x98c7a76a mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9937fd39 mlx4_fmr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa401e97f mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5856d3e mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9d0a01d mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaa5026f1 mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab6fbc49 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb812491a mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbb398e20 mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc15037cd mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc1fc1b14 mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc234f58a mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc291c9f5 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc399d379 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc9201b21 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd52bc1b mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd0154c86 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd34db093 mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd726f485 mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdae647c7 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4d8d623 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xeceaf5a2 mlx4_get_eth_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef4c0f8a __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf263d46a mlx4_map_phys_fmr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf918d491 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfae3f328 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff297f37 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff86a2da __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x2482aa5b macvlan_start_xmit +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x50ecea11 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x87cb04be macvlan_common_setup +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8e56fdff macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x8fb45bc6 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvtap 0xf06bb6d8 macvtap_get_socket +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0x6318757f mdio_mux_uninit +EXPORT_SYMBOL_GPL drivers/net/phy/mdio-mux 0xeaaa57a0 mdio_mux_init +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x278fe4bf usbnet_cdc_status +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x3cc626ca usbnet_cdc_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0x4bf8053d usbnet_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/cdc_ether 0xc6c7d73a usbnet_generic_cdc_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0x50f2f593 rndis_status +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb39cc071 generic_rndis_bind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xb4eb11ac rndis_rx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xcc86f942 rndis_unbind +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xd098e385 rndis_command +EXPORT_SYMBOL_GPL drivers/net/usb/rndis_host 0xde7a9604 rndis_tx_fixup +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x20506b24 usbnet_get_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2a21da94 usbnet_probe +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x2df449f6 usbnet_skb_return +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e491428 usbnet_start_xmit +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x3e85ba63 usbnet_defer_kevent +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x4b90a925 usbnet_get_drvinfo +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x5ff7f6e7 usbnet_pause_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x60fd8605 usbnet_tx_timeout +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7029dcb6 usbnet_resume +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x742eba0a usbnet_purge_paused_rxq +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x786e0acf usbnet_open +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7bf04599 usbnet_get_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x7d76c563 usbnet_set_msglevel +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x8b42804a usbnet_set_settings +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0x90a3d5ea usbnet_get_ethernet_addr +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb0a4a289 usbnet_resume_rx +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xb69df27c usbnet_nway_reset +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xbc1ccfbe usbnet_get_endpoints +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xc9a36b12 usbnet_change_mtu +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xcab8108c usbnet_get_link +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd2478e42 usbnet_stop +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xd26ae4a1 usbnet_unlink_rx_urbs +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe1447a57 usbnet_disconnect +EXPORT_SYMBOL_GPL drivers/net/usb/usbnet 0xe4e32095 usbnet_suspend +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x0640a723 i2400m_tx_msg_get +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x13700a04 i2400m_dev_bootstrap +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x26fca0a5 i2400m_dev_reset_handle +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x2a55ca70 i2400m_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x36276123 i2400m_release +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x64f6e079 i2400m_error_recovery +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x7f0e4808 i2400m_tx_msg_sent +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x8044a866 i2400m_pre_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x81195d6c i2400m_rx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0x886d60a4 i2400m_setup +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xa90d42c7 i2400m_cmd_enter_powersave +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xacd818ca i2400m_tx +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xb00b793c i2400m_bm_cmd_prepare +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xc5f2059f i2400m_post_reset +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xca790395 i2400m_is_boot_barker +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xcb0dfd44 i2400m_init +EXPORT_SYMBOL_GPL drivers/net/wimax/i2400m/i2400m 0xfcacbb1b i2400m_netdev_setup +EXPORT_SYMBOL_GPL drivers/net/wireless/ipw2x00/libipw 0x54bcffc8 libipw_rx_any +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x26979f5b il_dealloc_bcast_stations +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x37c4d88c il_prep_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x45839ae3 il_remove_station +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0x8ec6292e _il_grab_nic_access +EXPORT_SYMBOL_GPL drivers/net/wireless/iwlegacy/iwlegacy 0xded22fa2 il_mac_tx_last_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x0f7a0d37 lbs_stop_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x1af1d9e4 lbs_get_firmware_async +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x2d3c218a lbs_notify_command_response +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x4061f69b lbs_host_sleep_cfg +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x5fdf38b8 lbs_disablemesh +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x651c9612 lbs_host_to_card_done +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x72736d31 lbs_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x7734830c __lbs_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x785e53b7 lbs_start_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x874b658f lbs_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x8949041d lbs_process_rxed_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0x93693179 lbs_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xb1fdab0f lbs_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xc93d4881 lbs_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xd859be2e lbs_get_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xecbb8ee9 lbs_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xf64277de lbs_debug +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas/libertas 0xffe79cfa lbs_queue_event +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1aaf2cfc __lbtf_cmd +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x1e396942 lbtf_send_tx_feedback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x3c5560fb lbtf_cmd_copyback +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x49c23076 lbtf_cmd_response_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x8480a681 lbtf_bcn_sent +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0x99b48c0a lbtf_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xa1af62f6 lbtf_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf 0xc409ec20 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_usb 0x9cc6c1b9 if_usb_prog_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/libertas_tf/libertas_tf_usb 0xff3baeb7 if_usb_reset_device +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x5061c63a mwifiex_add_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x58e77a02 mwifiex_cancel_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6e63fcdc mwifiex_deauthenticate +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x6f7ac9d4 mwifiex_handle_rx_packet +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x76ab40ad mwifiex_enable_hs +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x940ac4b7 mwifiex_write_data_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x994617ed mwifiex_remove_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0x9de331f8 mwifiex_init_shutdown_fw +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xa60ec915 mwifiex_del_virtual_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb2002739 mwifiex_add_card +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb50e7f02 mwifiex_process_hs_config +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xb568b8c6 mwifiex_disable_auto_ds +EXPORT_SYMBOL_GPL drivers/net/wireless/mwifiex/mwifiex 0xf650d299 mwifiex_process_sleep_confirm_resp +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x0e88c370 p54_register_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x21b32235 p54_init_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x2d72b666 p54_read_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x3825e2f3 p54_unregister_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x781d1ed4 p54_rx +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x8b7ef8c2 p54_parse_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0x9e8c962f p54_free_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xa1bfd416 p54_free_common +EXPORT_SYMBOL_GPL drivers/net/wireless/p54/p54common 0xd02d2be9 p54_parse_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x03fb01db rt2800_get_tkip_seq +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1e654096 rt2800_config_intf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1efac1b3 rt2800_wait_csr_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x1fcbdead rt2800_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x204ea010 rt2800_validate_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x232acd49 rt2800_process_rxwi +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x28a0c025 rt2800_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x395bfafa rt2800_write_tx_data +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x3ffeeae6 rt2800_probe_hw_mode +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x4dca8cee rt2800_ampdu_action +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x594cc199 rt2800_set_rts_threshold +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5bf48c00 rt2800_get_tsf +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5e8c0532 rt2800_init_eeprom +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x5ed78e62 rt2800_write_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x66e407f2 rt2800_config_erp +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x6fd742f1 rt2800_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x71c19a08 rt2800_config_ant +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x72a78bb0 rt2800_enable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x77c8f612 rt2800_config_pairwise_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x7af43703 rt2800_check_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x89f8c2f3 rt2800_link_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x8ff166ca rt2800_read_eeprom_efuse +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9329d7e4 rt2800_load_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9601c6e6 rt2800_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0x9706f3e9 rt2800_gain_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb852de52 rt2800_disable_wpdma +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xb9193fbb rt2800_mcu_request +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xbf112ddf rt2800_config_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xc4e16e09 rt2800_reset_tuner +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd69690a2 rt2800_txdone_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xd94cb7f5 rt2800_get_survey +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe11baf5b rt2800_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe7566ac8 rt2800_efuse_detect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xe85423c4 rt2800_vco_calibration +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf372ded3 rt2800_wait_wpdma_ready +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf3c99fc7 rt2800_clear_beacon +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xf610bb42 rt2800_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfa2c3432 rt2800_link_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2800lib 0xfec3388f rt2800_config_shared_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x08ce7e36 rt2x00queue_stop_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0b9780ec rt2x00lib_probe_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x0c9ac6cb rt2x00mac_config +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x12a50395 rt2x00mac_bss_info_changed +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x1c5fa7ca rt2x00mac_stop +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x24e29801 rt2x00mac_set_tim +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x29c9b5c4 rt2x00lib_beacondone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2a0eb21a rt2x00mac_add_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x2c5e7211 rt2x00mac_sta_add +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x30dacfce rt2x00mac_get_stats +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x3203869f rt2x00lib_txdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x37c987db rt2x00queue_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x39f0a0b3 rt2x00lib_remove_dev +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x41684fa9 rt2x00mac_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4263502f rt2x00lib_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x44cefec3 rt2x00lib_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x4c2a5718 rt2x00mac_configure_filter +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x58d42dc6 rt2x00queue_start_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x59349b4d rt2x00queue_pause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x5a562616 rt2x00mac_conf_tx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x658c638c rt2x00queue_get_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x69b49258 rt2x00mac_get_ringparam +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x6b6fb6c6 rt2x00mac_set_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x782d3c63 rt2x00queue_stop_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x79db410e rt2x00lib_txdone_noinfo +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x7ead1fd5 rt2x00queue_map_txskb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x872e4e41 rt2x00lib_pretbtt +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x8eaae68c rt2x00mac_tx_frames_pending +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x912fde5d rt2x00mac_set_key +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9b8150a0 rt2x00queue_unmap_skb +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9c7b4e8f rt2x00mac_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9d4c15df rt2x00mac_rfkill_poll +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0x9e5a6843 rt2x00queue_start_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xabe96740 rt2x00mac_sta_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xad996ff6 rt2x00queue_flush_queues +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xb793ade1 rt2x00lib_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xc88a7156 rt2x00mac_remove_interface +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xcd2b354c rt2x00mac_get_antenna +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xd8718497 rt2x00queue_unpause_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe0e4865e rt2x00mac_flush +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe10f7478 rt2x00mac_sw_scan_complete +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xe84bda4a rt2x00lib_dmadone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xea8b516e rt2x00queue_for_each_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf1ae2e80 rt2x00lib_dmastart +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf6ea0bfe rt2x00mac_sw_scan_start +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00lib 0xf90a8b3c rt2x00lib_get_bssidx +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x2f0d2dc8 rt2x00pci_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x31e9c71f rt2x00pci_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x4cbc5907 rt2x00pci_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x7cedc234 rt2x00pci_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8acf84fb rt2x00pci_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0x8e9b9fa5 rt2x00pci_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xce7a8cd9 rt2x00pci_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xd6dbc947 rt2x00pci_rxdone +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00pci 0xf5c62c22 rt2x00pci_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x09f523e1 rt2x00usb_suspend +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x255a7c52 rt2x00usb_register_read_async +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x39ad5a72 rt2x00usb_disable_radio +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60dc4567 rt2x00usb_clear_entry +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x60e5a1d4 rt2x00usb_flush_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x6174baee rt2x00usb_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x814c1063 rt2x00usb_vendor_request_buff +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x92382296 rt2x00usb_uninitialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9ba6fd40 rt2x00usb_disconnect +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0x9f3560ab rt2x00usb_resume +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb31f6ef5 rt2x00usb_kick_queue +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xb6bf4b2b rt2x00usb_initialize +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xc2fc44a5 rt2x00usb_watchdog +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xdc1e31a7 rt2x00usb_regbusy_read +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf1cd3952 rt2x00usb_vendor_req_buff_lock +EXPORT_SYMBOL_GPL drivers/net/wireless/rt2x00/rt2x00usb 0xf3faa409 rt2x00usb_vendor_request +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb16434b1 wl1251_init_ieee80211 +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xb624f729 wl1251_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wl1251/wl1251 0xd08af5ad wl1251_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x36fad526 wlcore_select_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x37e2082f wl1271_cmd_test +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x4b697b29 wlcore_boot_upload_nvs +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x53dff67d wl12xx_debug_level +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7688177f wlcore_probe +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x775d7fb3 wlcore_enable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x7e58f97c wlcore_set_partition +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x86f0a823 wlcore_alloc_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0x8cbf19bb wlcore_disable_interrupts +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xb0d6dea0 wlcore_free_hw +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xc7a3ad8a wlcore_boot_run_firmware +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xdfec7103 wlcore_remove +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xe76eadf7 wlcore_translate_addr +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xf517b047 wl1271_cmd_configure +EXPORT_SYMBOL_GPL drivers/net/wireless/ti/wlcore/wlcore 0xfa2be031 wlcore_boot_upload_firmware +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x01cc7086 rpaphp_slot_head +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x5093a4a9 rpaphp_deregister_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x7bf20aea rpaphp_add_slot +EXPORT_SYMBOL_GPL drivers/pci/hotplug/rpaphp 0x8f000cbc rpaphp_get_drc_props +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xa31a272e pcf50633_mbc_usb_curlim_set +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xded47ff9 pcf50633_mbc_get_status +EXPORT_SYMBOL_GPL drivers/power/pcf50633-charger 0xf9d7e9e8 pcf50633_mbc_get_usb_online_status +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x003998ab ps3_write_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0bdf50c4 ps3_disable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x0e622920 ps3_write_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x181e55ab ps3_read_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x1bcb88c1 ps3_write_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2abf1471 ps3_get_hw_thread_id +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x2b339635 ps3_disable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x3c71a6b2 ps3_set_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x4a24996f ps3_lpm_copy_tb_to_user +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x50488f64 ps3_lpm_close +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x58e642c1 ps3_lpm_copy_tb +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x59c54782 ps3_set_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x5eca6711 ps3_get_ctr_size +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x60e3f0d7 ps3_read_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x6702a28c ps3_get_and_clear_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x69010c19 ps3_set_signal +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0x70177200 ps3_write_phys_ctr +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xa76ee01d ps3_read_pm07_control +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xaa190bc1 ps3_read_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xbb72a01c ps3_enable_pm_interrupts +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xce72c9c0 ps3_lpm_open +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xdddfc980 ps3_set_pm_bookmark +EXPORT_SYMBOL_GPL drivers/ps3/ps3-lpm 0xfae0ab68 ps3_enable_pm +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x0627c34d ps3stor_read_write_sectors +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x0b1c29dd ps3stor_send_command +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0x6f6d905d ps3stor_setup +EXPORT_SYMBOL_GPL drivers/ps3/ps3stor_lib 0xd2f19193 ps3stor_teardown +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x3e10eef3 mc13xxx_sw_regulator_is_enabled +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x4396ab27 mc13xxx_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x571cd0cb mc13xxx_fixed_regulator_get_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x62a6f309 mc13xxx_parse_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x65316e55 mc13xxx_regulator_list_voltage +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0x96d2937b mc13xxx_get_num_regulators_dt +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xbbbd5009 mc13xxx_fixed_regulator_ops +EXPORT_SYMBOL_GPL drivers/regulator/mc13xxx-regulator-core 0xd61c4529 mc13xxx_fixed_regulator_set_voltage +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x0b63297e wm8350_register_led +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x2b132915 wm8350_register_regulator +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0x99d46e10 wm8350_ldo_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xb77b6082 wm8350_dcdc_set_slot +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xf212edfe wm8350_isink_set_flash +EXPORT_SYMBOL_GPL drivers/regulator/wm8350-regulator 0xfba22a35 wm8350_dcdc25_set_mode +EXPORT_SYMBOL_GPL drivers/regulator/wm8400-regulator 0xea1117e4 wm8400_register_regulator +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0c699d90 cxgbi_hbas_add +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x0ca81286 cxgbi_device_unregister +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x13cd6caa cxgbi_get_conn_stats +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1924f8d6 cxgbi_ep_poll +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x19b00176 cxgbi_hbas_remove +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1ad57f57 cxgbi_sock_select_mss +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x1cafbe0f cxgbi_ddp_ppod_set +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x2501a075 cxgbi_sock_established +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x29dcafea cxgbi_parse_pdu_itt +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x39bcf486 cxgbi_set_conn_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3a5c4389 cxgbi_ddp_page_size_factor +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b59510a cxgbi_conn_init_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3b893cc6 cxgbi_conn_xmit_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x3e86599d cxgbi_sock_rcv_wr_ack +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x41c1d592 cxgbi_sock_check_wr_invariants +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x4fd972a5 cxgbi_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x51a51a0d cxgbi_iscsi_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5362593a cxgbi_iscsi_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x54cdcb4c cxgbi_sock_rcv_peer_close +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x5786c71f cxgbi_device_register +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x6f7222b8 cxgbi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x72f35327 cxgbi_get_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x767407b2 cxgbi_conn_tx_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7dc7f35b cxgbi_ddp_init +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x7fdb6004 cxgbi_device_unregister_all +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8057a318 cxgbi_sock_act_open_req_arp_failure +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x82a3bcf6 cxgbi_sock_skb_entail +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x874519ac cxgbi_sock_free_cpl_skbs +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8c2ba369 cxgbi_ddp_ppod_clear +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x8ff63160 cxgbi_sock_purge_wr_queue +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x90f035e3 cxgbi_conn_pdu_ready +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x918e52ff cxgbi_ep_connect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x971d8f97 cxgbi_set_host_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0x9ac977dc cxgbi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xa0d55bb9 cxgbi_ddp_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xac1c6c25 cxgbi_ep_disconnect +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xafb58f98 cxgbi_device_find_by_lldev +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb0d5fed0 cxgbi_conn_alloc_pdu +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xb13517fd cxgbi_sock_rcv_abort_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xbce1fce3 cxgbi_bind_conn +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xcb296bc8 cxgbi_get_ep_param +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xd791df71 cxgbi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xdbacedeb cxgbi_sock_rcv_close_conn_rpl +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xe7ce8b4f cxgbi_sock_fail_act_open +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xed2b61f6 cxgbi_sock_closed +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xef346615 cxgbi_attr_is_visible +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xf3491294 cxgbi_device_portmap_cleanup +EXPORT_SYMBOL_GPL drivers/scsi/cxgbi/libcxgbi 0xfea088de cxgbi_device_portmap_create +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x03bf5337 scsi_dh_activate +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x3dbb1222 scsi_register_device_handler +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x516c109b scsi_dh_attach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0x53c50a64 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 0x9500c208 scsi_dh_detach +EXPORT_SYMBOL_GPL drivers/scsi/device_handler/scsi_dh 0xe871c4d5 scsi_unregister_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 0x4082b17b fcoe_validate_vport_create +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x50ed49f2 fcoe_fcf_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x5f727c12 fcoe_start_io +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x84b3d915 fcoe_wwn_to_str +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x850a1ee1 fcoe_check_wait_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x86c6cdb5 fcoe_fcf_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x91aeb1d7 fcoe_fc_crc +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0x9bf6f0e2 fcoe_ctlr_device_delete +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xa0c311ab fcoe_libfc_config +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xbe1bb42c fcoe_clean_pending_queue +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xdd62122c fcoe_get_paged_crc_eof +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xe65833a2 fcoe_ctlr_device_add +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf389788c fcoe_get_wwn +EXPORT_SYMBOL_GPL drivers/scsi/fcoe/libfcoe 0xf88a309c __fcoe_get_lesb +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0x4af424df iscsi_boot_create_ethernet +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xa3dddf69 iscsi_boot_create_initiator +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb9acc42a iscsi_boot_create_target +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xcbf86406 iscsi_boot_create_host_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xdfeeb400 iscsi_boot_destroy_kset +EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xebb5830b iscsi_boot_create_kset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x05978dee iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12d3f53d iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x150329cc iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x186bad50 iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1a919695 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x237a18b4 iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e108652 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2e35267e iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2eb88f8b iscsi_pool_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x35f7dd19 iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3605f7d4 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x377e76d4 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3a81c771 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x445b9903 iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4a3eb89c iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x542f75a9 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6150263d iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6200ea75 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6f17ce31 iscsi_session_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x77281e7e iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7be6a715 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8320b1fc iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8561a809 iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8c2444bb iscsi_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x90e55edd iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9be4d1b7 iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9df984b1 iscsi_host_remove +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa4832cf0 iscsi_pool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xab043e76 __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xad0e279b iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb2692d57 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc43b915 iscsi_suspend_queue +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbc750d11 iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd0145d6 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc0cb02f4 iscsi_conn_get_addr_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xca7a1071 iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd8972016 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe010eb20 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5d6854e iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe6ed28c9 iscsi_eh_target_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe8eb9911 iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe915dba4 __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeb9795e9 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf3b27f06 iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfca9871f iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfe9de541 iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x08e92dcf iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0e482b96 iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x10c6815e iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x24a18b40 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x324330f6 iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x35f2875c iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5e521503 iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x66963a54 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x77a1833c iscsi_tcp_r2tpool_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7ec73645 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x896f59ed iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9027a4ad iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa20f4102 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xaa66ff67 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc4c7e9ee iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc7dec83b iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd39e8d18 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x109aa6f5 sas_eh_bus_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x18b71ce3 sas_ioctl +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1c538b96 sas_ata_schedule_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x1e833193 sas_unregister_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x24863af7 sas_request_addr +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x2bb709c1 sas_slave_configure +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x32829b14 sas_eh_device_reset_handler +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x38210e32 sas_get_local_phy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x4194d31b sas_domain_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x56619b65 sas_register_ha +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a0d08bc sas_free_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5a97c066 sas_bios_param +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x5f3890ef sas_domain_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x875a3f26 sas_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x87fe7652 sas_change_queue_type +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x8be5d3de sas_alloc_task +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x9a55c6b7 sas_ssp_task_response +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa0040058 sas_task_abort +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xa3848e73 sas_phy_reset +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc0ae26b8 sas_target_destroy +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc60adec5 sas_drain_work +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xc66ae641 sas_change_queue_depth +EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe369bf41 sas_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1a45a8ab srp_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x1b17e176 srp_iu_get +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x4bc8ef2d srp_iu_put +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x6c050827 srp_target_free +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0x75924476 srp_cmd_queue +EXPORT_SYMBOL_GPL drivers/scsi/libsrp 0xee3e64eb srp_transfer_data +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x250a1e18 scsi_host_get_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x57e5da79 scsi_tgt_queue_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x69b071fe scsi_tgt_tsk_mgmt_request +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x83b6bc55 scsi_tgt_cmd_to_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x93b769e0 scsi_tgt_it_nexus_create +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0x9657c8b6 scsi_tgt_alloc_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd0506a79 scsi_host_put_command +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xd9d47141 scsi_tgt_it_nexus_destroy +EXPORT_SYMBOL_GPL drivers/scsi/scsi_tgt 0xe121b582 scsi_tgt_free_queue +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x00196968 iscsi_get_port_state_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0a62a738 iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0f37cf63 iscsi_unregister_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x128fc66a iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x17191db4 iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26572d68 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x26a83501 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34597226 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x34788534 iscsi_host_for_each_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3bdfa8bf iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c6cd604 iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4aee483f iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bbc8fe4 iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x645d1249 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x674b96a8 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6916657d iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x702fcd78 iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x82d10a99 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x82ebe151 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa2c599a5 iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa80ea6db iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa92c3e96 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaece94b4 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb0963075 iscsi_destroy_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbad56b10 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc8fed0bc iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd00302d7 iscsi_create_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd61e05b7 iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe2186dba iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe62cae22 iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf0373c36 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfed0042d iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x412e5982 sas_tlr_supported +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x827c60ed sas_disable_tlr +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xaa60c54a sas_is_tlr_enabled +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0xcb447666 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 0x09bf346b srp_release_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x1542d787 srp_attach_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0x3ad982fd srp_remove_host +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xdc936580 srp_rport_add +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_srp 0xf0718b26 srp_rport_del +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x038d7366 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x16f0da02 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa3a8d35e spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xcab7d157 spi_bitbang_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf0b6946f spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf7ff4245 spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x514d074c dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x59cef9bb dw_spi_xfer_done +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xb8f55fa4 dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xc7ffc538 dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf34ac205 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x2468ed34 oslec_hpf_tx +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x579d2806 oslec_snapshot +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x587711de oslec_create +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0x882d5f27 oslec_adaption_mode +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf828c15b oslec_flush +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xf923a5b1 oslec_free +EXPORT_SYMBOL_GPL drivers/staging/echo/echo 0xfabc3747 oslec_update +EXPORT_SYMBOL_GPL drivers/staging/iio/addac/adt7316 0x95b14f89 adt7316_pm_ops +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x10de3fc0 ipack_driver_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x51badb1d ipack_device_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0x5e97174f ipack_bus_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xb37416b6 ipack_bus_register +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xce9e10e1 ipack_driver_unregister +EXPORT_SYMBOL_GPL drivers/staging/ipack/ipack 0xf91b488d ipack_device_register +EXPORT_SYMBOL_GPL drivers/staging/rts5139/rts5139 0x35b85807 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 0x2389dcbe spk_synth_immediate +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x296ab9f0 synth_add +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x41a160e5 synth_buffer_empty +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x4449e1dd synth_buffer_clear +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x475e158a synth_request_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x76848d0f spk_synth_is_alive_nop +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x893b79f7 spk_synth_is_alive_restart +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x8e146195 synth_release_region +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x910a74c1 synth_remove +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0x9548567d serial_synth_probe +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 0xb73a5748 get_var +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xb9734474 spk_synth_flush +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 0xdd28e32f spk_var_store +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe3ba90df spk_do_catch_up +EXPORT_SYMBOL_GPL drivers/staging/speakup/speakup 0xe46e046a 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 0x0fd55751 usbip_start_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x28567995 usbip_pack_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x2e0ccf7f dev_attr_usbip_debug +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x3d3b7a14 sockfd_to_socket +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x6aa652ba usbip_pad_iso +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x78b72f44 usbip_debug_flag +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x7fbf51fd usbip_event_happened +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0x994c83d0 usbip_recv +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xa508b8a4 usbip_recv_xbuff +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xac55cc18 usbip_event_add +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xc5cea3d7 usbip_stop_eh +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xd02753dc usbip_header_correct_endian +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xde6ff07f usbip_dump_urb +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xe1ea0586 usbip_dump_header +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xf2101ac3 usbip_alloc_iso_desc_pdu +EXPORT_SYMBOL_GPL drivers/staging/usbip/usbip-core 0xfd9199c7 usbip_recv_iso +EXPORT_SYMBOL_GPL drivers/tty/n_tracesink 0x585ebaac n_tracesink_datadrain +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x475641af serial8250_rx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x8e7fbe21 serial8250_handle_irq +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0x9d3f5796 serial8250_modem_status +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xa5b515f4 serial8250_tx_chars +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250 0xbc3ecefb serial8250_clear_and_reinit_fifos +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 0xcab5a91f pciserial_init_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/8250/8250_pci 0xe84f6e5c pciserial_remove_ports +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x288f1383 max3107_rw +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0x5f830e14 max3107_probe +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbe53a57d max3107_resume +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xbf620794 max3107_hw_susp +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xeaa8be4b max3107_remove +EXPORT_SYMBOL_GPL drivers/tty/serial/max3107 0xebe8bb3f max3107_suspend +EXPORT_SYMBOL_GPL drivers/uio/uio 0x02e769a0 __uio_register_device +EXPORT_SYMBOL_GPL drivers/uio/uio 0x26d23d4e uio_event_notify +EXPORT_SYMBOL_GPL drivers/uio/uio 0x57731e22 uio_unregister_device +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0x29e7517f usbatm_usb_disconnect +EXPORT_SYMBOL_GPL drivers/usb/atm/usbatm 0xfbf3f1b4 usbatm_usb_probe +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x289d06f1 dwc3_put_device_id +EXPORT_SYMBOL_GPL drivers/usb/dwc3/dwc3 0x51b25baa dwc3_get_device_id +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x210e0722 usb_gadget_unregister_driver +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x257135c0 usb_add_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x3706db00 usb_gadget_map_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x6058fb30 usb_del_gadget_udc +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0x7da843c8 usb_gadget_unmap_request +EXPORT_SYMBOL_GPL drivers/usb/gadget/udc-core 0xffbbc24c usb_gadget_probe_driver +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x0f79a5a6 ftdi_elan_gone_away +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x111669d7 usb_ftdi_elan_edset_flush +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x33af25eb usb_ftdi_elan_edset_single +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x3455180f usb_ftdi_elan_read_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0x5d08a343 usb_ftdi_elan_edset_setup +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xaa40161a usb_ftdi_elan_edset_input +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xc14790fc usb_ftdi_elan_write_pcimem +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xdbf8d088 usb_ftdi_elan_edset_output +EXPORT_SYMBOL_GPL drivers/usb/misc/ftdi-elan 0xff526a63 usb_ftdi_elan_edset_empty +EXPORT_SYMBOL_GPL drivers/usb/musb/musb_hdrc 0x48060b9c musb_interrupt +EXPORT_SYMBOL_GPL drivers/usb/musb/tusb6010 0x36685aeb tusb_get_revision +EXPORT_SYMBOL_GPL drivers/usb/phy/isp1301 0x7a0e1da6 isp1301_get_client +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x035e7000 usb_serial_generic_resume +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x066d67e8 usb_serial_generic_process_read_urb +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x0dee3b87 usb_serial_generic_submit_read_urbs +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1707ef30 usb_serial_generic_throttle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x1dabbadf usb_serial_generic_write +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x220a4144 usb_serial_handle_dcd_change +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x2f1d3a9e ezusb_set_reset +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x306ab5da ezusb_writememory +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3406c352 usb_serial_generic_open +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x35f16daf usb_serial_port_softint +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x3f2d85b7 usb_serial_generic_read_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x42f68b9d usb_serial_generic_close +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x4a49584a usb_serial_handle_break +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x5add4a9b usb_serial_handle_sysrq_char +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x620ac942 usb_serial_generic_write_bulk_callback +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x6a248c2e usb_serial_register_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0x9ad9644d usb_serial_deregister_drivers +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xa4e4947f usb_serial_generic_unthrottle +EXPORT_SYMBOL_GPL drivers/usb/serial/usbserial 0xc527f498 usb_serial_generic_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0221c73c usb_stor_clear_halt +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x074232c4 usb_stor_bulk_srb +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x0d0fe262 fill_inquiry_response +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x14a503dc usb_stor_CB_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x1bc3edc2 usb_stor_sense_invalidCDB +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2a1622c2 usb_stor_post_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x2daf0e9c usb_stor_Bulk_transport +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x35c4b37a usb_stor_bulk_transfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x3cf64489 usb_stor_transparent_scsi_command +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x4a1fbcd8 usb_stor_reset_resume +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x58310c48 usb_stor_suspend +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x5994a483 usb_stor_disconnect +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x59bd1cea usb_stor_ctrl_transfer +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x6e9f02c2 usb_stor_CB_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x723d3230 usb_stor_access_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7690ad5f usb_stor_control_msg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x7c6a1883 usb_stor_probe1 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0x8e8cfc3f usb_stor_pre_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xb0790569 usb_stor_set_xfer_buf +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xbd74baaa usb_stor_bulk_transfer_sg +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xc90ea3fa usb_stor_probe2 +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xd2eea1fa usb_stor_Bulk_reset +EXPORT_SYMBOL_GPL drivers/usb/storage/usb-storage 0xe8b8e542 usb_stor_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x0df13903 wa_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x122f15ac wa_urb_enqueue_run +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x30e8bfa1 __wa_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x4b4427b3 rpipe_ep_disable +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0x602e7062 wa_urb_enqueue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcb55ad58 rpipe_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusb-wa 0xcf417163 wa_urb_dequeue +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x07f9b963 __wusb_dev_get_by_usb_dev +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x0bb6bf5e wusb_cluster_id_get +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x17f88bf5 wusbhc_rh_suspend +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x453a896a wusbhc_b_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x46084c85 wusbhc_giveback_urb +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x54afbd70 wusbhc_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x762b5a3b wusbhc_rh_status_data +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7c7fc5c3 wusbhc_b_create +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x7f0b7631 wusb_dev_destroy +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x86d970f5 wusbhc_rh_resume +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0x99a57e29 wusbhc_reset_all +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xa8018401 wusbhc_rh_control +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xb725d128 wusb_cluster_id_put +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xbb8a3347 wusbhc_handle_dn +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc2f39d82 wusbhc_rh_start_port_reset +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xc8755558 wusbhc_chid_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf6bfa874 wusbhc_mmcie_set +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf770a6b4 wusbd +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xf925352d wusbhc_mmcie_rm +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe2e17d7 wusb_et_name +EXPORT_SYMBOL_GPL drivers/usb/wusbcore/wusbcore 0xfe90e834 wusbhc_destroy +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x3112aedc i1480_rceb_check +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0x448e9839 i1480_cmd +EXPORT_SYMBOL_GPL drivers/uwb/i1480/dfu/i1480-dfu-usb 0xdffc4764 i1480_fw_upload +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x11e6f17c umc_device_create +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x2eed2f15 umc_match_pci_id +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x3dd7b539 umc_bus_type +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x7be3a46f __umc_driver_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x90326989 umc_controller_reset +EXPORT_SYMBOL_GPL drivers/uwb/umc 0x9f0038ef umc_device_register +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xca8cbaa5 umc_device_unregister +EXPORT_SYMBOL_GPL drivers/uwb/umc 0xd4bb20ff umc_driver_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x04bcb451 uwb_rc_ie_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x05f932cf uwb_rc_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0b49cd68 uwb_rc_get_by_grandpa +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d130d26 uwb_rc_alloc +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0d78016e __uwb_addr_print +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x0fc02440 uwb_est_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x10c41565 uwb_rc_cmd_async +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x22bc86c5 uwb_rc_neh_error +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x28fb2576 uwb_rc_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x3083fe4f uwb_notifs_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4c741b11 uwb_rc_reset_all +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4d57ae3c uwb_rsv_type_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x4e40f342 uwb_rsv_get_usable_mas +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x588c35f9 uwb_rc_ie_rm +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5aae3060 __uwb_rc_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x5f59ee21 uwb_rc_cmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6c61bd4c uwb_rc_add +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x6e94e793 uwb_rsv_establish +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x71140114 uwb_rsv_terminate +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x78107d4d uwb_rc_vcmd +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x790ac778 uwb_radio_stop +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x806c2c42 uwb_est_find_size +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x816b9e92 uwb_est_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x83dee370 uwb_rsv_create +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e33e397 uwb_rc_mac_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x8e848466 uwb_pal_unregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0x98413234 uwb_rsv_state_str +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xa339f391 uwb_dev_try_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xac97316b uwb_ie_next +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xafa27b20 uwb_rc_put +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xb17b5d0c uwb_notifs_deregister +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbab771ed uwb_pal_register +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xbf3a81b1 uwb_rc_neh_grok +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc0d11911 uwb_dev_for_each +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc2b8381c uwb_pal_init +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc34eaf1f uwb_rsv_accept +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xc45ebe72 uwb_radio_start +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcac9df21 uwb_rsv_modify +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xcc2f3a60 uwb_rc_pre_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe3d17e43 uwb_rsv_destroy +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xe455d561 uwb_rc_post_reset +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf64d0d26 uwb_rc_dev_addr_get +EXPORT_SYMBOL_GPL drivers/uwb/uwb 0xf8a19e19 uwb_rc_get_by_dev +EXPORT_SYMBOL_GPL drivers/uwb/whci 0xedfdd05c whci_wait_for +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x086aa090 auok190x_common_remove +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x1fa3589e auok190x_read_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x31694198 auok190x_pm +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x3d644f8b auok190x_send_cmdargs +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x6b61ac89 auok190x_send_command_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7382f274 auok190x_send_cmdargs_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0x7bbe0a32 auok190x_send_cmdargs_pixels_nowait +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xa06e2015 auok190x_common_probe +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xbed062f0 auok190x_send_command +EXPORT_SYMBOL_GPL drivers/video/auo_k190x 0xfe14af22 auok190x_send_cmdargs_pixels +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x03e3a746 ili9320_resume +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x200e25f5 ili9320_write +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x2a93e73e ili9320_write_regs +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x4fe0d23b ili9320_probe_spi +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x7a70c563 ili9320_shutdown +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0x93693250 ili9320_suspend +EXPORT_SYMBOL_GPL drivers/video/backlight/ili9320 0xab3783df ili9320_remove +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0x55f14533 sis_malloc_new +EXPORT_SYMBOL_GPL drivers/video/sis/sisfb 0xfd881158 sis_free_new +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x524bfa7d register_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x58e824ab unregister_virtio_driver +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0x8c39c69f virtio_check_driver_offered_feature +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xaea47d97 register_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio 0xe2fbcae7 unregister_virtio_device +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x12e54c60 virtqueue_get_vring_size +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x36d52b67 virtqueue_add_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x40ea7b10 virtqueue_kick +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x49012059 virtqueue_get_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x60d8305b virtqueue_enable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x6f81af06 virtqueue_disable_cb +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x72aac7a5 virtqueue_detach_unused_buf +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0x901dd851 vring_transport_features +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xaaac2919 vring_del_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xc1521d2c virtqueue_enable_cb_delayed +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xd76a0659 vring_new_virtqueue +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xdbcd34b7 virtqueue_notify +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xf86b1876 virtqueue_kick_prepare +EXPORT_SYMBOL_GPL drivers/virtio/virtio_ring 0xff05fa13 vring_interrupt +EXPORT_SYMBOL_GPL drivers/w1/wire 0x27ebbd17 w1_reset_select_slave +EXPORT_SYMBOL_GPL drivers/w1/wire 0x2e692eec w1_write_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x56530e2e w1_next_pullup +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7c2f2afb w1_calc_crc8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7cd58f22 w1_touch_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x7de0d4a8 w1_write_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0x804b6e43 w1_reset_bus +EXPORT_SYMBOL_GPL drivers/w1/wire 0xa2487a70 w1_read_block +EXPORT_SYMBOL_GPL drivers/w1/wire 0xae695a47 w1_read_8 +EXPORT_SYMBOL_GPL drivers/w1/wire 0xdc69d8cd w1_reset_resume_command +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x24947b33 dlm_posix_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x2c6b84bf dlm_posix_get +EXPORT_SYMBOL_GPL fs/dlm/dlm 0x9321df95 dlm_lock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xc6dc8c2f dlm_new_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xdc583c08 dlm_unlock +EXPORT_SYMBOL_GPL fs/dlm/dlm 0xf5224eca dlm_posix_unlock +EXPORT_SYMBOL_GPL fs/fat/fat 0x04ff739c fat_flush_inodes +EXPORT_SYMBOL_GPL fs/fat/fat 0x136555d8 fat_search_long +EXPORT_SYMBOL_GPL fs/fat/fat 0x16390d96 __fat_fs_error +EXPORT_SYMBOL_GPL fs/fat/fat 0x237211ea fat_setattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x27031cd7 fat_free_clusters +EXPORT_SYMBOL_GPL fs/fat/fat 0x3d851e85 fat_detach +EXPORT_SYMBOL_GPL fs/fat/fat 0x40f4bc94 fat_add_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x467a9f4e fat_remove_entries +EXPORT_SYMBOL_GPL fs/fat/fat 0x555d5d5e fat_attach +EXPORT_SYMBOL_GPL fs/fat/fat 0x68279170 fat_getattr +EXPORT_SYMBOL_GPL fs/fat/fat 0x728d9d5a fat_scan +EXPORT_SYMBOL_GPL fs/fat/fat 0x7e103a75 fat_fill_super +EXPORT_SYMBOL_GPL fs/fat/fat 0x83523dbf fat_dir_empty +EXPORT_SYMBOL_GPL fs/fat/fat 0x8a8e8a5f fat_get_dotdot_entry +EXPORT_SYMBOL_GPL fs/fat/fat 0xc3ff862b fat_time_unix2fat +EXPORT_SYMBOL_GPL fs/fat/fat 0xd2eb512e fat_alloc_new_dir +EXPORT_SYMBOL_GPL fs/fat/fat 0xe7a9485d fat_build_inode +EXPORT_SYMBOL_GPL fs/fat/fat 0xee2b6aed fat_sync_inode +EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x082c2bdf nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x17ce645d locks_end_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2ac71553 lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3cedf8b1 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x46b9891d nlmclnt_proc +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x48552bd9 lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6f959b35 locks_in_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x96877ac4 locks_start_grace +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xd7864fd4 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xef9b621f nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x02969fe3 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x040698ab nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x18ee31c2 nfs_pageio_reset_read_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x19d92a85 nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1eed7bd5 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22058420 nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23220295 pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26a0e94c nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2caba4cc nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cf80f8b pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f34d87d nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x33005058 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x359cb171 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c2897df _pnfs_return_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ca31f35 nfs_net_id +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4f5c36b0 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51d65a33 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53b12f5e nfs_init_cinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5a9f5246 pnfs_unregister_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e054592 pnfs_destroy_layout +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e5ca5ff pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f4f057c nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6097ebb1 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60982165 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6946b152 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ece5599 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x75bf85ff nfs4_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7ede80aa nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8341643a nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8486f014 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88f8e43a nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8ae4a059 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x99ed8d74 nfs_initiate_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9c8c45f1 nfs4_insert_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9cf2ce31 nfs4_proc_getdevicelist +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa5eabaef pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbffb2665 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc64e583d nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc92ffb54 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb3a6dd0 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc20dfd2 put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xded88de2 nfs41_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe0c0fd8d nfs_initiate_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xef1617bb nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf607bb77 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf85957d0 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8f107e8 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x3019ce2a nfsacl_encode +EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xa454bfe0 nfsacl_decode +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0db18170 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 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 0x3b41c5d5 o2nm_node_get +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x41063c7e o2nm_node_put +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x9df61e29 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa6389753 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 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 0xd6dd3a9d o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf03a552a o2nm_get_node_by_ip +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x1d4fa1a0 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3f4fa159 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x3fd27571 dlm_register_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x5f635358 dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xcb00011a 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/dlm/ocfs2_dlm 0xfc53b929 dlm_register_domain +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 0x27849c4b ocfs2_plock +EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x2b400367 ocfs2_stack_glue_register +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 0x5d0f24c2 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 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/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 0x1bf3f217 garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x5cf3fd99 garp_request_join +EXPORT_SYMBOL_GPL net/802/garp 0x8d0ea2b1 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0xe080eb69 garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe64d68ba garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0xe6ca9127 garp_register_application +EXPORT_SYMBOL_GPL net/802/stp 0x69f6fc73 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x7d8b09e6 stp_proto_register +EXPORT_SYMBOL_GPL net/9p/9pnet 0x47f26a4c p9_client_xattrcreate +EXPORT_SYMBOL_GPL net/9p/9pnet 0xcf679492 p9_client_xattrwalk +EXPORT_SYMBOL_GPL net/atm/atm 0x50754510 register_atmdevice_notifier +EXPORT_SYMBOL_GPL net/atm/atm 0xe2c6bb26 unregister_atmdevice_notifier +EXPORT_SYMBOL_GPL net/ax25/ax25 0x10399d8e 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 0x9bf73cd6 bt_debugfs +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1d99d49a dccp_timestamp +EXPORT_SYMBOL_GPL net/dccp/dccp 0x247166ee dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2aecb157 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2e30a3b2 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d9a9a14 dccp_feat_signal_nn_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0x3ec2cd79 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4217eec9 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x43bec0bb dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4412f018 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 0x4f92b602 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5005e729 compat_dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x50249319 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x592433a1 dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59577f6e dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x59e75598 dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5e6197e3 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp 0x5f83622f dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0x620add69 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6b8c2506 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x74a437a2 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7623b9b9 dccp_sendmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e1632d4 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x7e8c7cc1 dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x805fd949 dccp_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9728c7a1 dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa3d551ae dccp_death_row +EXPORT_SYMBOL_GPL net/dccp/dccp 0xa5b45654 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xaa27b51b dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xb13a58d2 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc0b7b890 dccp_orphan_count +EXPORT_SYMBOL_GPL net/dccp/dccp 0xce554855 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0xcfaa01f4 compat_dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0xd323df3c dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe37bbc75 dccp_destroy_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0xe904e9b6 dccp_hashinfo +EXPORT_SYMBOL_GPL net/dccp/dccp 0xee299867 dccp_check_req +EXPORT_SYMBOL_GPL net/dccp/dccp 0xef78d695 dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0xefe89b16 dccp_insert_option_elapsed_time +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf3017e21 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x044f946c dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x06c4c413 dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x0d36b9c9 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x119f74dd dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x7b7412ee dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x86a761ae dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x2203a907 unregister_switch_driver +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7845eefe register_switch_driver +EXPORT_SYMBOL_GPL net/ipv4/gre 0x5835ecf6 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xf4ffd4ca gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x03c2c21c inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x39fd06aa inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x9e79bcbb inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb8cf31da inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xf8d36428 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xff99fb26 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x113af608 arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x1ba7b3fd ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_conntrack_ipv4 0x5d3bd280 nf_nat_seq_adjust_hook +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 0x2532a5f1 nf_nat_set_seq_adjust +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3c58a12c nf_nat_get_offset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x3de64dee nf_nat_proto_in_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x59457776 nf_nat_proto_nlattr_to_range +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x97165544 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0x98b16384 nf_nat_proto_unique_tuple +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat 0xb82c84e0 nf_nat_packet +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_nat_proto_gre 0x636b12c8 nf_nat_need_gre +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x0be51e5a tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x5506da46 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xcb16d444 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xd125c952 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xfc28b3c5 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x9a50cdb0 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x6eb85693 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x35132b3d l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x36bb28a2 l2tp_session_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x43da5b4f l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x541d1c06 l2tp_tunnel_find_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x584f4fd5 l2tp_session_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x79f4b8f6 l2tp_session_find_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7da94069 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8c7e1401 l2tp_session_free +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x90c638c2 l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc123c2f1 l2tp_tunnel_find +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xd05484d0 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf89f3ad6 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x713cfc21 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72d83877 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7d11f17c ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8304c3a6 ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa2542d2f ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xc389a846 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xcfdf5d6a ieee80211_iterate_active_interfaces_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd0136bde ieee80211_request_smps +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xebde69a8 ieee80211_key_removed +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfa345817 ieee80211_iterate_active_interfaces +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x2ea504f7 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3ab4e2dd ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x45a7d427 ip_set_get_byname +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x6551b9df ip_set_get_ip_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7762965e ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x80ee118c 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 0x8240430f ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x883d6572 ip_set_name_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x99823d1e ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa2d623f3 ip_set_range_to_cidr +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb9f75d4e ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc26bd8fa ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc3b062db ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xeaf2fc41 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfda3ec7a ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x03d64ec1 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x251fb64b ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x68bfdcb4 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x87f87eb4 unregister_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x045072cd nf_ct_port_nla_policy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0cab8d09 nf_ct_l3proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x11c563e1 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x15bd555f nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x187f9209 __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b054c84 nf_ct_l4proto_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x211724da __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24460230 nf_conntrack_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x27f19bed nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2c9b62cf nf_conntrack_l3proto_generic +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2f51e559 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x366bfe48 nfnetlink_parse_nat_setup_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x37386cac nf_conntrack_hash_rnd +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3bf39659 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3d3dc1ec __nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e8397aa __nf_conntrack_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f5b1415 nf_ct_port_nlattr_to_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3f87a426 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x44f112b6 nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x458de6f0 nf_ct_expect_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x469a5605 nf_ct_iterate_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d46a995 nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4d7aef0c nf_conntrack_l4proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x527f2185 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x531b3fee nf_conntrack_l4proto_tcp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x57db7d54 nf_conntrack_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x612d5d6c nf_conntrack_l4proto_tcp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62813e5c nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x64d5c1bd __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6a6e2d8a nf_ct_extend_register +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 0x741e929a nf_conntrack_l3proto_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7693d8e1 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 0x7a46cb66 __nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7b5ea553 nf_ct_l3proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84edd690 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8dc4bc09 seq_print_acct +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 0x9914b602 __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d085ccb nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ecc2177 nf_ct_nat_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ffc371e nf_conntrack_l4proto_udp6 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa18bc943 nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa3e32e63 nf_ct_expect_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7613988 nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7c84ddc nf_conntrack_l4proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7df3cf8 nf_ct_insert_dying_list +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa7e63cf6 nf_conntrack_flush_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab350b03 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xab3d1f95 nf_ct_untracked_status_or +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xad1bb027 nf_ct_free_hashtable +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xadca559c nf_conntrack_l4proto_udp4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb602c57e nf_ct_l3proto_module_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7802921 nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc0240dd4 nf_conntrack_set_hashsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2566aa5 nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc2ac7b92 nf_ct_expect_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc6f1eb73 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcf53d5ca nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd51af70d nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xda97504f nf_conntrack_l3proto_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf8b9c8a nf_ct_l4proto_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe53a84df nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe841acc5 nf_ct_l3protos +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe9abd876 nf_ct_delete_from_lists +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xea0f8c1c nf_ct_invert_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xede5b34a nf_conntrack_in +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xee6b95be __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1e9c2f8 nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf367907f nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6aa8cb8 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf6e15f83 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfa74dac3 nf_ct_get_tuple +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc6decb4 nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfc8d025e nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x235f86ca nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x05258ffc nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0xec468d67 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x19ed5f6c get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x3e1181cd set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x4d0f7f3e set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x7856cdda nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x93ac5671 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xa0e715be nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdc4a531e set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe12cdff4 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe1e59361 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf973fc08 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0xdcc247f1 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x3c030533 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x69063402 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x7d47ece2 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x81b7587e nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xa5a9858f nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_proto_gre 0xaf0a5b21 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x212ee427 nf_nat_sdp_port_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x338b460d nf_nat_sip_seq_adjust_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3471b8ba nf_nat_sdp_session_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3617a94c ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x3e2a7dd1 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4098ceba ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4a78dad2 nf_nat_sip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x73d01382 nf_nat_sip_expect_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x7416d393 nf_nat_sdp_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc2c68da7 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xc5530379 ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd03b956b nf_nat_sdp_media_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd2f46a32 ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x4853c4dd nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x21a0e09d nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_tproxy_core 0x6b8f38f6 nf_tproxy_assign_sock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x02b47023 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x04940b1e nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x05a6b622 nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x1f58e71b nfnl_lock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x3895cd7a nfnl_unlock +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x47a4363f nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xb3a93409 nfnetlink_unicast +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xe5c2d2d2 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x21f6bba6 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xb9f0e5b9 nfnl_acct_update +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_log 0x4b6bc70f nfulnl_log_packet +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x161d1417 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x233ecf3c xt_hook_unlink +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x33e0dd08 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x37242beb xt_request_find_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e95a815 xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x40728a63 xt_find_revision +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x413b37f8 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x457a42c3 xt_check_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50caf576 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5f82f1f7 xt_compat_flush_offsets +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x691a6d69 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x75c24455 xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7d44e1d8 xt_check_target +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x927ec84c xt_table_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5afc38e xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa96e875a xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xad6aa567 xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc530abe4 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcbc98b85 xt_hook_link +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd45369ed xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdab1f8d6 xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdaf0f7de xt_compat_target_offset +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 0xfc9dc928 xt_proto_fini +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3e1dd4ab xt_rateest_put +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x9a303feb xt_rateest_lookup +EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq +EXPORT_SYMBOL_GPL net/rds/rds 0x042c29eb rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0d161123 rds_inc_init +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 0x34014a65 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x3b4fc0fc rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x4adfaa28 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x4e0fd2a7 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0x50cbe7b3 rds_stats +EXPORT_SYMBOL_GPL net/rds/rds 0x588e36ef rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x5f21653b rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x5f4da247 rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0x6470bae6 rds_page_copy_user +EXPORT_SYMBOL_GPL net/rds/rds 0x70a2f5ba rds_cong_map_updated +EXPORT_SYMBOL_GPL net/rds/rds 0x718dc5fa rds_message_put +EXPORT_SYMBOL_GPL net/rds/rds 0x73aac73d rds_message_populate_header +EXPORT_SYMBOL_GPL net/rds/rds 0x744d06bf rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0x7bc62829 rds_stats_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0x86d58e01 rds_send_get_message +EXPORT_SYMBOL_GPL net/rds/rds 0xaa94e385 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0xb961f544 rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy +EXPORT_SYMBOL_GPL net/rds/rds 0xdc179a8e rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xe68b04cc rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xf1694b2c rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xf5f3d00d rds_conn_connect_if_down +EXPORT_SYMBOL_GPL net/rds/rds 0xf64f3bd7 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0xf7a2c3d7 rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xf9b53c7d rds_for_each_conn_info +EXPORT_SYMBOL_GPL net/rds/rds 0xff286aaf rds_conn_drop +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x4c749cdb rxrpc_unregister_security +EXPORT_SYMBOL_GPL net/rxrpc/af-rxrpc 0x8035705d 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 0x36bc9a29 gss_mech_list_pseudoflavors +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5153a302 gss_mech_get_by_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6a1d30ab svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x795b2fdf gss_mech_get +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8d1a827e svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xa20407c9 gss_mech_get_by_OID +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xaceae195 gss_mech_get_by_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xb5dea7ef g_token_size +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbe1a625d gss_pseudoflavor_to_service +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xbf7c732c gss_mech_put +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xcae5fdec gss_service_to_auth_domain_name +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xed8a34dd gss_mech_unregister +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xf75c318f 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 0xf9f8384b gss_svc_to_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0020d11f xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01223859 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0245c810 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x028b817e svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x04e9d11d xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05f20b8d xdr_buf_read_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x090793b6 rpcauth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0aa41d08 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0bfda930 rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d8fc19e auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f668ba9 svc_auth_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f72bb78 rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x12e8dcea rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17f2a6d3 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x181f0b9f rpc_pipefs_notifier_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18369fc1 rpc_put_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1ab04516 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1af816e9 cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1bcc2d58 rpc_rmdir +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c881428 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e389083 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f0c7c32 xdr_skb_read_bits +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21341c93 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26c29d0b csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2747bae7 xprt_lock_and_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x28b1e058 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a779f71 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2aec6acb rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c946438 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e9f972e rpc_call_null +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 0x32b8aa67 rpc_destroy_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x332416fa xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x35b76f91 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x362f601c svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3798ebf6 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ad62b13 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3b86d1fd svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3e436676 sunrpc_cache_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x43464ce4 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x45dea712 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4844d03e svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4872c7af rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c3c1fe0 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d3d7c07 rpc_free_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d4a52ed rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4eb88456 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f9f71cf svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50503c0e svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5439ba2e xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5450759d rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5794190a svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5868d944 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59fad450 svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c5e3861 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c95cfd7 rpc_lookup_machine_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5cf03644 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5dc39ba7 rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e449b8d xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e8b520d xprt_release_rqst_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc2595d rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5fc2e820 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x615c5974 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62323193 xprt_set_retrans_timeout_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6392c04f cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64949dbf xprt_destroy_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64d6a3f8 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65eaad2d svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x692b7d3a rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c13b32a rpc_queue_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6c85a717 xdr_read_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6cb60d59 rpc_queue_empty +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ddbe20b rpc_wake_up_status +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e439f77 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e4db196 svc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x716b5413 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71a51a61 svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71ef16f9 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x756df070 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76690735 rpc_protocol +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x768e3135 xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x77859ad2 rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78679972 xdr_set_scratch_buffer +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a3f4446 rpc_proc_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7afecb4f _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cc5d6df sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d602ede svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e04ebda xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e46d959 svc_sock_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ed9d9b2 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x804cc002 auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8108e2d6 rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84ef1a66 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x84f633c7 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x868f9979 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8738e7c6 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87a0753b rpc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87b125cb rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x886fbded xdr_encode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8996eea4 xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89ae0bf3 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b947649 xdr_inline_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ba147fe xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c4c3df1 rpc_init_priority_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c8833e9 sunrpc_cache_register_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d1732bc xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d73a9e1 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e44a5fa xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f19b52b cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa25d682e rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4121cd1 xprt_set_retrans_timeout_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa565c20a svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa754de49 xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8479a0f xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa91fc8ed rpc_print_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa97213b0 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa7ba3f0 svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac447857 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xad35fa0a rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadbe5006 cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xae404ea0 svc_xprt_received +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0d8c0f7 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb16b0be6 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb22ced9f rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2f17af4 rpcb_getport_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb62f0c80 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb6368057 rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb65e0448 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7fc2a0b xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9840e39 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbaa42837 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb1adbbe svc_wake_up +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb414db6 rpc_shutdown_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb64b4a5 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbca707c4 rpc_pipefs_notifier_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbcabd62d xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd7044ed rpc_lookup_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbfb61b43 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2f14915 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3880471 xdr_decode_netobj +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3df439f xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc909ffdf rpc_task_reset_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc9956fef svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xccd13e02 svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcdc050ca xdr_reserve_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xceaf3b6c rpcauth_generic_bind_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcee467f3 xprt_load_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcfe3bb36 svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0113b4d put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3d3b65c rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd5cc4437 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7e2a2fa xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd9753ef5 svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda4eac85 xprt_register_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbaf2514 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd7034de rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd7b4736 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd88744a __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde262367 xdr_partial_copy_from_skb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe09c3f82 xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe145c6c5 svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1750fa0 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1a337cd svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1ac2bb8 sunrpc_net_id +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2202d15 sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe50a4131 rpc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5f18b19 rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe6ffad3a rpc_init_wait_queue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7907e91 cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe94b58fc xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xebdd4d8d sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xed062d4a xdr_process_buf +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 0xeebc045e rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef439450 svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1573b4f svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf6b8339a rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf87875ad rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9347f0b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9d1164c rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb126394 rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfc1f7d52 svc_xprt_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x0cc6bded wimax_dev_init +EXPORT_SYMBOL_GPL net/wimax/wimax 0x209bc506 wimax_report_rfkill_sw +EXPORT_SYMBOL_GPL net/wimax/wimax 0x2a4687b2 wimax_dev_add +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3176ec69 wimax_msg_data_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0x3575c3c7 wimax_msg_data +EXPORT_SYMBOL_GPL net/wimax/wimax 0x40785038 wimax_dev_rm +EXPORT_SYMBOL_GPL net/wimax/wimax 0x68302a04 wimax_msg_alloc +EXPORT_SYMBOL_GPL net/wimax/wimax 0x9d906629 wimax_state_change +EXPORT_SYMBOL_GPL net/wimax/wimax 0xa237b2e6 wimax_msg_len +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd2152e5d wimax_report_rfkill_hw +EXPORT_SYMBOL_GPL net/wimax/wimax 0xd7999182 wimax_msg_send +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf500d369 wimax_msg +EXPORT_SYMBOL_GPL net/wimax/wimax 0xf575f0be wimax_state_get +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x03819d0b cfg80211_wext_giwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x0f2d6d03 cfg80211_wext_siwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x5276b90c cfg80211_wext_siwfrag +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb3aa5c05 cfg80211_wext_giwrange +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb9565597 cfg80211_wext_giwscan +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xdd922931 cfg80211_wext_giwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xe2a086af cfg80211_wext_siwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf4b61400 cfg80211_wext_siwrts +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf65f4a40 cfg80211_wext_giwretry +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xf9a5f854 cfg80211_wext_giwmode +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xfc1327b3 cfg80211_wext_giwname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x1c852e7c xfrm_calg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x28e23139 xfrm_probe_algs +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x2e47f677 xfrm_aalg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x30d59ffc pskb_put +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x3108ea46 xfrm_ealg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x32d5e7fc xfrm_aalg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x4d4fd5f1 xfrm_calg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x5fcdec5d xfrm_ealg_get_byidx +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x686c703f xfrm_count_auth_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x6e7474fc xfrm_ealg_get_byid +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x9cb8037b xfrm_count_enc_supported +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xaeea3073 xfrm_aead_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd05dc2a3 xfrm_aalg_get_byname +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x2407863c ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x61d8e8b1 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xe360c567 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xf15a6650 ipcomp_init_state +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x14125406 aoa_fabric_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x16a32996 ftr_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x531c99a5 pmf_gpio_methods +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x54fd47de aoa_get_card +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x6d66ac71 aoa_snd_ctl_add +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0x70010931 aoa_snd_device_new +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd87af386 aoa_codec_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xd9bf7bf3 aoa_fabric_unregister +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xe56c59f9 aoa_codec_register +EXPORT_SYMBOL_GPL sound/aoa/core/snd-aoa 0xede66f88 aoa_fabric_unlink_codec +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x0c0960a9 soundbus_register_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x10e38a53 soundbus_remove_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x22fd719d soundbus_unregister_driver +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x62496ed8 soundbus_add_one +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x91d18d4e soundbus_dev_put +EXPORT_SYMBOL_GPL sound/aoa/soundbus/snd-aoa-soundbus 0x9bc8b62b soundbus_dev_get +EXPORT_SYMBOL_GPL sound/core/snd 0x5114a6a6 snd_ctl_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0x82059068 snd_kctl_jack_report +EXPORT_SYMBOL_GPL sound/core/snd 0x8fee1301 snd_ctl_activate_id +EXPORT_SYMBOL_GPL sound/core/snd 0xf2bba4c1 snd_ctl_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/core/snd 0xfe57882b snd_kctl_jack_new +EXPORT_SYMBOL_GPL sound/core/snd-pcm 0x4b4c07b3 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 0x0684b9a6 snd_ak4113_check_rate_and_errors +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x2dbb2d13 snd_ak4113_build +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x712c9f18 snd_ak4113_reg_write +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0x99fcbb21 snd_ak4113_reinit +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xaf7286be snd_ak4113_create +EXPORT_SYMBOL_GPL sound/i2c/other/snd-ak4113 0xea3b95d6 snd_ak4113_external_rate +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x00c0ef00 snd_hda_power_up_d3wait +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x02b0d85a snd_hda_mixer_amp_volume_put +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 0x0cbba5bf snd_hda_codec_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0e3e40bc snd_hda_multi_out_analog_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0ebc31f9 snd_hda_mixer_amp_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x0f2e5e50 snd_hda_codec_set_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x12a90204 snd_hda_codec_get_pincfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x14ca2a3d snd_hda_check_board_codec_sid_config +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x16192302 snd_hda_sync_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1743c8fc snd_hda_delete_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x18acaa25 snd_hda_build_pcms +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x190aeb73 snd_hda_add_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x190c1239 snd_hda_add_vmaster_hook +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c0b9afc snd_hda_codec_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1c3f5df2 snd_hda_mixer_bind_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x1e23cf9c snd_hda_ch_mode_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2776aa4d snd_hda_get_pin_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x289e5079 snd_hda_unlock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x291db4cc snd_hda_sequence_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a265055 snd_hda_mixer_amp_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2a49fb14 snd_hda_mixer_bind_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2b1b8ba2 snd_hda_jack_tbl_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2e2934a6 snd_hda_gen_apply_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ef5c359 snd_hda_multi_out_dig_close +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f5046ba snd_hda_override_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2f5e1503 snd_hda_spdif_ctls_assign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x2ff79f6a snd_hda_codec_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x303d11df snd_hda_set_vmaster_tlv +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x375cacd5 snd_hda_input_mux_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3866afe2 snd_hda_query_supported_pcm +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x39b74693 snd_hda_codec_write_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3a0b687e snd_hda_mixer_bind_ctls_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ea54a91 _snd_hda_set_pin_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x3ff0fd6b snd_hda_create_spdif_out_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x43f0e254 snd_hda_get_connections +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x44d87aeb snd_hda_attach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x45ecd8c7 snd_hda_ch_mode_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4b9fbabd snd_hda_multi_out_dig_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d7b2e2a snd_hda_mixer_bind_ctls_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4d876c54 snd_hda_jack_detect_enable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4dab1f60 snd_hda_add_imux_item +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x4e71884b snd_hda_bind_vol +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5135ac4b snd_hda_sequence_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x52e38b12 snd_hda_get_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x53947b94 snd_hda_codec_update_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x585a0a86 snd_hda_codec_setup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x59e8fe81 snd_hda_pick_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5c7785d1 snd_hda_codec_set_power_to_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x5d561601 snd_hda_mixer_amp_switch_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6571b175 snd_hda_is_supported_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x65b51bee snd_hda_get_sub_nodes +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6883aecc __snd_hda_add_vmaster +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6a605329 snd_hda_spdif_out_of_nid +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6b4f1ba6 snd_hda_mixer_bind_switch_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x6ced05a1 snd_hda_create_spdif_share_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x717907b9 snd_hda_codec_amp_stereo +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x719602be snd_hda_query_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7332b9e0 snd_hda_codec_resume_amp +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x735dc16a snd_hda_jack_set_dirty_all +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x751b1352 snd_hda_get_bool_hint +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x75c09e0e snd_hda_mixer_amp_volume_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x770f92b3 snd_hda_power_down +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77598cd7 snd_hda_build_controls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x77f1d254 snd_hda_get_conn_index +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x78089acc snd_hda_power_up +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7a43b800 snd_hda_codec_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7e27b1e0 snd_hda_enable_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x7f942dd0 snd_hda_jack_tbl_get_from_tag +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x81db38ed snd_hda_bind_sw +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8a3f8e7a snd_hda_multi_out_analog_open +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8b775faa snd_hda_shutup_pins +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e4c6826 snd_hda_calc_stream_format +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8e6aeebf snd_hda_detach_beep_device +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x8f189e02 snd_hda_pin_sense +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x96daa112 snd_hda_mixer_amp_volume_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9774834d snd_hda_gen_add_verbs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x98c85031 snd_hda_jack_report_sync +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9a8e1877 snd_array_free +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9b9d3cc9 snd_hda_codec_amp_read +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9bc2f86e snd_hda_queue_unsol_event +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0x9c502732 snd_hda_check_amp_list_power +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa2827d76 snd_hda_get_jack_location +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa4e13906 snd_hda_spdif_ctls_unassign +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xa9aa49a4 query_amp_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xac8b5ce0 snd_hda_apply_fixup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xad434c4a snd_hda_jack_detect +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xae611136 snd_hda_mixer_bind_ctls_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb0028b07 snd_hda_create_spdif_in_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb5f71c7f snd_hda_multi_out_analog_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb76536a7 snd_hda_add_new_ctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb8f5dc27 snd_hda_load_patch +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xb94a0ee1 snd_hda_jack_tbl_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbb275d2b is_jack_detectable +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbbf3d68a snd_hda_apply_pincfgs +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe4c291d snd_hda_mixer_amp_switch_info +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xbe7dd7dc snd_array_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc24800f8 snd_hda_add_codec_preset +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc4f78d18 snd_hda_override_pin_caps +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc5dfc4fd snd_hda_get_default_vref +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc61e4a93 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 0xc94b356b snd_hda_input_mux_put +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xc970cdbc snd_hda_codec_write +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xcb301b6e snd_hda_get_jack_type +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xce44a8ad snd_hda_codec_amp_update +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd018c99e snd_hda_bus_reboot_notify +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd3a45334 snd_hda_suspend +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd48cad75 snd_hda_mixer_amp_switch_put_beep +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd4d499ef __snd_hda_codec_cleanup_stream +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd5b09294 snd_hda_codec_configure +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7122c55 snd_hda_multi_out_dig_cleanup +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd7335402 hda_get_autocfg_input_label +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xd8f4d962 snd_hda_codec_resume_cache +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe09f840a snd_hda_find_mixer_ctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe5410011 snd_hda_bus_new +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe8458590 snd_hda_multi_out_dig_prepare +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xe96a2cf7 snd_hda_parse_pin_defcfg +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeb08fc09 snd_hda_lock_devices +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeda3a721 snd_print_pcm_bits +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xef041ffd snd_hda_ctl_add +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xeffbf657 snd_hda_ch_mode_get +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf393434d snd_hda_resume +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xf6a91b68 snd_hda_jack_add_kctls +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfa3ef972 snd_hda_jack_add_kctl +EXPORT_SYMBOL_GPL sound/pci/hda/snd-hda-codec 0xfbc5cad6 snd_hda_override_conn_list +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0x5492e6a7 pm860x_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-88pm860x 0xa651af42 pm860x_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-cx20442 0x6450f2f1 v253_ops +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-l3 0x78c84c7e l3_write +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-max9877 0x9ae063a6 max9877_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0x48b26988 tpa6130a2_stereo_enable +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-tpa6130a2 0xbe97bc47 tpa6130a2_add_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x245af42d twl6040_get_dl1_gain +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x2e1977bd twl6040_get_clk_id +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0x4e0d8ba3 twl6040_get_trim_value +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xac866472 twl6040_get_hs_step_size +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-twl6040 0xaf45e20c twl6040_hs_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wl1273 0xcf615c23 wl1273_get_format +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x5cd7eb9b wm_hubs_dcs_done +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x72443a9a wm_hubs_add_analogue_routes +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x757206d5 wm_hubs_spkmix_tlv +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x8f5fb383 wm_hubs_handle_analogue_pdata +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9888e9dc wm_hubs_set_bias_level +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0x9e1e2a18 wm_hubs_add_analogue_controls +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xb91a9d54 wm_hubs_vmid_ena +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc29fc7fd wm_hubs_hpl_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xc89d56b1 wm_hubs_update_class_w +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm-hubs 0xfb43a416 wm_hubs_hpr_mux +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0x0db89422 wm8350_mic_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8350 0xc3303211 wm8350_hp_jack_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8903 0x9631d309 wm8903_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8962 0xb9de86f3 wm8962_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0x8d6c1070 wm8994_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8994 0xed77bb60 wm8958_mic_detect +EXPORT_SYMBOL_GPL sound/soc/codecs/snd-soc-wm8996 0x65e998af wm8996_detect +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x055b2ede snd_soc_info_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x058dbd3d snd_soc_dapm_get_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x0747868b snd_soc_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x09d1cc92 snd_soc_unregister_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1358ebfa snd_soc_dapm_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14930ad1 snd_soc_platform_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x14f359c6 snd_soc_dapm_get_pin_status +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x166c7e90 snd_soc_platform_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x175330ad snd_soc_dai_set_clkdiv +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x17dccb96 snd_soc_codec_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19dc5178 snd_soc_dapm_force_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x19e4be65 snd_soc_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1a6e55dc snd_soc_test_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x1b2f2edf snd_soc_jack_report +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2541a979 snd_soc_calc_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2b03c32a snd_soc_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2c3c8ce2 snd_soc_dpcm_be_get_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x2fe20ecf snd_soc_put_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x30f78d95 snd_soc_info_enum_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x31ae5f60 snd_soc_dapm_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3339d237 snd_soc_register_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x38bda0f0 snd_soc_poweroff +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x39c3eb4f snd_soc_register_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3b5afc9a snd_soc_unregister_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x3e6deee7 snd_soc_info_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x40a1c009 snd_soc_dapm_new_widgets +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x41599819 snd_soc_cache_read +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x44a68c49 snd_soc_default_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x46da00ad snd_soc_put_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x49291350 snd_soc_info_volsw_ext +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4bf4eae8 dapm_regulator_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4c8e2de4 snd_soc_dapm_free +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x4fbc8a5b snd_soc_put_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x50050b33 snd_soc_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x59ba5972 snd_soc_unregister_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5b8db7ff snd_soc_dai_set_fmt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5ca354be snd_soc_new_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x5d1e1789 snd_soc_dapm_put_enum_virt +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x60ed8de2 snd_soc_dapm_put_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x61ef688e snd_soc_dai_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6575e78f snd_soc_cache_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x657a2ef0 snd_soc_bytes_put +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6953ca8a snd_soc_jack_add_pins +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6a7b7fd9 snd_soc_add_codec_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x6cfc3540 snd_soc_dapm_get_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x70d1e08d snd_soc_dapm_enable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72151221 snd_soc_register_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x72eb4140 snd_soc_get_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7517ae27 snd_soc_dpcm_fe_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x783feb02 snd_soc_dapm_new_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x789e04c5 snd_soc_dpcm_can_be_free_stop +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x78a52476 snd_soc_jack_get_type +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7debaf37 snd_soc_get_pcm_runtime +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e606130 snd_soc_calc_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x7e7dd0f1 snd_soc_codec_set_cache_io +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x845027ad snd_soc_default_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8616f251 snd_soc_dapm_put_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x89cb9f14 dapm_reg_event +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8c15673a snd_soc_register_card +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8e6cfcdf snd_soc_codec_volatile_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f0f4aec snd_soc_free_ac97_codec +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x8f4866a4 snd_soc_info_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x905dba6b snd_soc_dai_set_sysclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x906687b1 dpcm_be_dai_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x91abb918 snd_soc_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x948e6d45 snd_soc_set_runtime_hwparams +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0x98fe36d6 snd_soc_platform_trigger +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa0a8d17f snd_soc_dapm_put_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa196e6ea snd_soc_dapm_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa5117eee snd_soc_dapm_add_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xa7a5f250 snd_soc_add_dai_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xabc7fa72 snd_soc_dpcm_get_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xac2b7c3c snd_soc_dapm_mixer_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xace4741a snd_soc_get_dai_substream +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad317a5a snd_soc_jack_new +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xad5be996 snd_soc_of_parse_audio_routing +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae46c673 snd_soc_dapm_weak_routes +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae59d899 snd_soc_jack_notifier_unregister +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xae6ced5a snd_soc_bytes_get +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaecd0d06 snd_soc_add_card_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xaf0b5532 snd_soc_resume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xafc0174b snd_soc_dapm_nc_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb03a1c8d snd_soc_update_bits +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb0aed638 snd_soc_dapm_disable_pin +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb15a58b8 snd_soc_jack_add_zones +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb3fb7c77 snd_soc_dapm_mux_update_power +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb53e857e snd_soc_get_volsw_s8 +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xb860d1cc snd_soc_get_xr_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbbe57d49 snd_soc_bulk_write_raw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbccbb4f0 dapm_mark_dirty +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd00b3de snd_soc_jack_free_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xbd2ea0bb snd_soc_unregister_dai +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8269f94 snd_soc_params_to_frame_size +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc82d55a4 snd_soc_put_value_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc8d8f78a snd_soc_dpcm_can_be_params +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xc9047094 snd_soc_dai_set_tristate +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xcafcd785 snd_soc_codec_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xce1c3db1 snd_soc_write +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd0bb6c8c snd_soc_codec_set_pll +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd45f1dbd snd_soc_cnew +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd56001ea snd_soc_get_volsw_sx +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd647f43b snd_soc_dapm_get_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xd6f51612 snd_soc_dpcm_be_can_update +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xda74ccea snd_soc_dai_set_tdm_slot +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdac8f059 snd_soc_dai_digital_mute +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdc2431ff snd_soc_dapm_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdea007f2 snd_soc_info_enum_double +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdec16aa8 snd_soc_put_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xdf3a1393 snd_soc_update_bits_locked +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe43d21d3 snd_soc_pm_ops +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe48a81b7 snd_soc_get_strobe +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe49c545a snd_soc_dapm_ignore_suspend +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe75e6f04 snd_soc_get_volsw +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xe7bac860 snd_soc_debugfs_root +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xea9eb645 snd_soc_unregister_platform +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb3ee2c4 snd_soc_dpcm_be_set_state +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xeb711ae7 snd_soc_params_to_bclk +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xee07e59e snd_soc_codec_writable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xef868c45 snd_soc_bytes_info +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf0b7f639 snd_soc_limit_volume +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf281f031 snd_soc_of_parse_card_name +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf2b5bba7 snd_soc_cache_sync +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf325e392 snd_soc_default_readable_register +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf36393ac snd_soc_dai_set_channel_map +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf52d838f snd_soc_add_platform_controls +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xf6586131 snd_soc_register_dais +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc0ac12b snd_soc_jack_add_gpios +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfc26647f snd_soc_dapm_info_pin_switch +EXPORT_SYMBOL_GPL sound/soc/snd-soc-core 0xfe3f1b1f snd_soc_jack_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x003dd7a4 sata_link_debounce +EXPORT_SYMBOL_GPL vmlinux 0x00540deb usb_hc_died +EXPORT_SYMBOL_GPL vmlinux 0x0067df75 ata_tf_from_fis +EXPORT_SYMBOL_GPL vmlinux 0x006bc072 hwrng_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0070ef14 __tracepoint_rpm_idle +EXPORT_SYMBOL_GPL vmlinux 0x009b3ae0 dma_buf_vmap +EXPORT_SYMBOL_GPL vmlinux 0x00aea614 key_type_trusted +EXPORT_SYMBOL_GPL vmlinux 0x00bf3427 devm_regulator_bulk_get +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 0x011cf028 regulator_suspend_finish +EXPORT_SYMBOL_GPL vmlinux 0x015988fd watchdog_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x01813899 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x018c7ed8 tasklet_hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x01a4ea6d unregister_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x01ac5812 sysfs_get +EXPORT_SYMBOL_GPL vmlinux 0x01b8eef9 regmap_register_patch +EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01f2bfb0 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x0207a881 usb_sg_wait +EXPORT_SYMBOL_GPL vmlinux 0x021ebfda btree_update +EXPORT_SYMBOL_GPL vmlinux 0x02265bea crypto_init_ahash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x02f137df tcp_cong_avoid_ai +EXPORT_SYMBOL_GPL vmlinux 0x030b2af5 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x030c6906 hrtimer_init +EXPORT_SYMBOL_GPL vmlinux 0x0316607b perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0x031997cb usb_deregister +EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list +EXPORT_SYMBOL_GPL vmlinux 0x038cbf57 pmf_find_function +EXPORT_SYMBOL_GPL vmlinux 0x039c3498 pmf_call_one +EXPORT_SYMBOL_GPL vmlinux 0x03be0903 tps6586x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x03cdb56d tpm_gen_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x03e3686c ata_timing_cycle2mode +EXPORT_SYMBOL_GPL vmlinux 0x040b5626 crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x042cb2fa ata_port_wait_eh +EXPORT_SYMBOL_GPL vmlinux 0x04321ff7 aead_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x04486e88 rcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0x044dae08 timerqueue_del +EXPORT_SYMBOL_GPL vmlinux 0x04516202 fb_sys_write +EXPORT_SYMBOL_GPL vmlinux 0x045d84e6 led_trigger_event +EXPORT_SYMBOL_GPL vmlinux 0x0474965f ata_sff_prereset +EXPORT_SYMBOL_GPL vmlinux 0x048b5f8d twl4030_audio_get_mclk +EXPORT_SYMBOL_GPL vmlinux 0x04a6dc48 lookup_instantiate_filp +EXPORT_SYMBOL_GPL vmlinux 0x04b70ec6 handle_simple_irq +EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x04c65cb2 pci_enable_pri +EXPORT_SYMBOL_GPL vmlinux 0x04d41492 __crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe +EXPORT_SYMBOL_GPL vmlinux 0x04fddc10 raw_hash_sk +EXPORT_SYMBOL_GPL vmlinux 0x0504123b __module_text_address +EXPORT_SYMBOL_GPL vmlinux 0x0531dcb8 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x05405a52 ata_sff_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt +EXPORT_SYMBOL_GPL vmlinux 0x0556a5a5 rt_mutex_destroy +EXPORT_SYMBOL_GPL vmlinux 0x0566350f sysfs_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x056bd612 max8997_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds +EXPORT_SYMBOL_GPL vmlinux 0x0593be5c ata_bmdma_start +EXPORT_SYMBOL_GPL vmlinux 0x0593e7bc trace_define_field +EXPORT_SYMBOL_GPL vmlinux 0x05962767 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x05a95ef6 bus_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x05ab6a5d tty_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x05ac938d dm_get_rq_mapinfo +EXPORT_SYMBOL_GPL vmlinux 0x05ae262e regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x05c6c212 transport_setup_device +EXPORT_SYMBOL_GPL vmlinux 0x05d6a2df ata_sas_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x061dee59 btree_remove +EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry +EXPORT_SYMBOL_GPL vmlinux 0x06699296 user_read +EXPORT_SYMBOL_GPL vmlinux 0x067d3339 init_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x06b34e41 s5m_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0732651e inet_csk_compat_getsockopt +EXPORT_SYMBOL_GPL vmlinux 0x073798d8 crypto_unregister_alg +EXPORT_SYMBOL_GPL vmlinux 0x073c523c usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x07523d99 ata_bmdma_error_handler +EXPORT_SYMBOL_GPL vmlinux 0x07542c16 ata_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x075c7ea6 rio_request_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x0762403c edac_put_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x077c467b usb_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x07b21f85 kdb_get_kbd_char +EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister +EXPORT_SYMBOL_GPL vmlinux 0x07ce6f2c pm_schedule_suspend +EXPORT_SYMBOL_GPL vmlinux 0x07d1ebe4 raw_seq_next +EXPORT_SYMBOL_GPL vmlinux 0x08035d66 console_drivers +EXPORT_SYMBOL_GPL vmlinux 0x081c2a2d spi_async +EXPORT_SYMBOL_GPL vmlinux 0x0823da27 blk_queue_rq_timed_out +EXPORT_SYMBOL_GPL vmlinux 0x083e6450 tpm_show_active +EXPORT_SYMBOL_GPL vmlinux 0x088bfa7e cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x08a8869b rtc_irq_set_state +EXPORT_SYMBOL_GPL vmlinux 0x08ab368d posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0x08abe712 input_ff_event +EXPORT_SYMBOL_GPL vmlinux 0x08bc0870 compat_put_timespec +EXPORT_SYMBOL_GPL vmlinux 0x09099900 sysfs_remove_file_from_group +EXPORT_SYMBOL_GPL vmlinux 0x091c824a machine_power_off +EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0x095255f5 ps3_system_bus_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x098eed14 subsys_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x098faec6 usb_set_device_state +EXPORT_SYMBOL_GPL vmlinux 0x09bae693 ata_sas_port_init +EXPORT_SYMBOL_GPL vmlinux 0x09c654b0 usb_deregister_dev +EXPORT_SYMBOL_GPL vmlinux 0x09cbabf7 of_get_nand_on_flash_bbt +EXPORT_SYMBOL_GPL vmlinux 0x09f0cb5e driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x09f82a60 security_inode_setattr +EXPORT_SYMBOL_GPL vmlinux 0x0a169cbb fuse_do_open +EXPORT_SYMBOL_GPL vmlinux 0x0a17411d kobject_init_and_add +EXPORT_SYMBOL_GPL vmlinux 0x0a26828d vfs_lock_file +EXPORT_SYMBOL_GPL vmlinux 0x0a288348 flush_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x0a35c972 __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0x0a3bcae4 eeh_add_device_tree_early +EXPORT_SYMBOL_GPL vmlinux 0x0a45ecc6 inet_putpeer +EXPORT_SYMBOL_GPL vmlinux 0x0a51ae5b virq_to_hw +EXPORT_SYMBOL_GPL vmlinux 0x0a588635 nf_unregister_afinfo +EXPORT_SYMBOL_GPL vmlinux 0x0aa4c888 usb_interrupt_msg +EXPORT_SYMBOL_GPL vmlinux 0x0ab88e79 device_attach +EXPORT_SYMBOL_GPL vmlinux 0x0aca7c4b ata_host_resume +EXPORT_SYMBOL_GPL vmlinux 0x0ad09231 udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct +EXPORT_SYMBOL_GPL vmlinux 0x0b411dc0 fb_sys_read +EXPORT_SYMBOL_GPL vmlinux 0x0b9b2f86 scsi_nl_add_transport +EXPORT_SYMBOL_GPL vmlinux 0x0ba0c7b0 __scsi_get_command +EXPORT_SYMBOL_GPL vmlinux 0x0ba7e571 ata_bmdma_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x0bae62b1 ktime_get_monotonic_offset +EXPORT_SYMBOL_GPL vmlinux 0x0bc803ad wm8994_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x0be13004 usb_storage_usb_ids +EXPORT_SYMBOL_GPL vmlinux 0x0bf79bd4 ata_link_offline +EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0c0ab4c1 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x0c0c015e ring_buffer_swap_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0c2cd651 spi_alloc_master +EXPORT_SYMBOL_GPL vmlinux 0x0c2cdbf1 synchronize_sched +EXPORT_SYMBOL_GPL vmlinux 0x0c6e18f3 class_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x0c7d4bbe skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x0cc1e40f crypto_it_tab +EXPORT_SYMBOL_GPL vmlinux 0x0cd10a4e work_cpu +EXPORT_SYMBOL_GPL vmlinux 0x0cf5646d usb_wait_anchor_empty_timeout +EXPORT_SYMBOL_GPL vmlinux 0x0d04b4f3 sysfs_create_group +EXPORT_SYMBOL_GPL vmlinux 0x0d12c257 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x0d390e53 fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x0d3cc82c of_irq_map_one +EXPORT_SYMBOL_GPL vmlinux 0x0d5b063c atomic_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x0d668e3a tcp_register_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0x0d7f0c51 pmac_i2c_match_adapter +EXPORT_SYMBOL_GPL vmlinux 0x0d8697e3 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0x0db02e19 devres_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x0de06988 cpu_first_thread_of_core +EXPORT_SYMBOL_GPL vmlinux 0x0ded3787 usb_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x0e08bfb2 tcp_death_row +EXPORT_SYMBOL_GPL vmlinux 0x0e219f82 edac_subsys +EXPORT_SYMBOL_GPL vmlinux 0x0e250e69 pm_generic_restore +EXPORT_SYMBOL_GPL vmlinux 0x0e294806 pci_stop_bus_device +EXPORT_SYMBOL_GPL vmlinux 0x0e507e4e ata_sff_port_intr +EXPORT_SYMBOL_GPL vmlinux 0x0ecf823a static_key_slow_dec +EXPORT_SYMBOL_GPL vmlinux 0x0ed89b08 get_device +EXPORT_SYMBOL_GPL vmlinux 0x0f46e9dd uart_handle_dcd_change +EXPORT_SYMBOL_GPL vmlinux 0x0f54e722 pci_pri_status +EXPORT_SYMBOL_GPL vmlinux 0x0f5598c5 __class_create +EXPORT_SYMBOL_GPL vmlinux 0x0f751aea input_event_from_user +EXPORT_SYMBOL_GPL vmlinux 0x0f7f16eb tps6586x_writes +EXPORT_SYMBOL_GPL vmlinux 0x0f8b437a usb_set_interface +EXPORT_SYMBOL_GPL vmlinux 0x0f92a1e7 generic_fh_to_dentry +EXPORT_SYMBOL_GPL vmlinux 0x0fc1cd47 usb_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x0ffa23df pci_intx_mask_supported +EXPORT_SYMBOL_GPL vmlinux 0x1000d977 synchronize_srcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x100d4782 ata_sff_postreset +EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on +EXPORT_SYMBOL_GPL vmlinux 0x10266562 bd_unlink_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x10291853 devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x10abf09a rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable +EXPORT_SYMBOL_GPL vmlinux 0x10fa1b7b ata_sff_tf_load +EXPORT_SYMBOL_GPL vmlinux 0x1114011d threads_shift +EXPORT_SYMBOL_GPL vmlinux 0x113ddc0d replace_page_cache_page +EXPORT_SYMBOL_GPL vmlinux 0x11439756 power_supply_unregister +EXPORT_SYMBOL_GPL vmlinux 0x114b631a ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0x1172ce54 rtc_ktime_to_tm +EXPORT_SYMBOL_GPL vmlinux 0x118f5e34 rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x11a5c360 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x11bf1a04 platform_device_del +EXPORT_SYMBOL_GPL vmlinux 0x11c3269a devres_alloc +EXPORT_SYMBOL_GPL vmlinux 0x11d18c2e blk_queue_bypass_start +EXPORT_SYMBOL_GPL vmlinux 0x11f447ce __gpio_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x121ed3f3 add_timer_on +EXPORT_SYMBOL_GPL vmlinux 0x12314d59 input_ff_upload +EXPORT_SYMBOL_GPL vmlinux 0x12374727 register_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0x124a057e debugfs_remove_recursive +EXPORT_SYMBOL_GPL vmlinux 0x124f2056 crypto_get_attr_type +EXPORT_SYMBOL_GPL vmlinux 0x1257515a isa_bridge_pcidev +EXPORT_SYMBOL_GPL vmlinux 0x1258d9d9 regulator_disable +EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0x1299cfa4 ata_host_alloc_pinfo +EXPORT_SYMBOL_GPL vmlinux 0x12daf939 pci_ioremap_bar +EXPORT_SYMBOL_GPL vmlinux 0x12f33273 ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0x1318d9bd digsig_verify +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 0x13401a1e adp5520_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x136a4ee6 btree_init +EXPORT_SYMBOL_GPL vmlinux 0x13751c22 register_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x137cfaeb stmpe_enable +EXPORT_SYMBOL_GPL vmlinux 0x13b2a946 register_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x13b69a90 ata_dummy_port_info +EXPORT_SYMBOL_GPL vmlinux 0x13e5ea13 __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0x1402aa8e tty_init_termios +EXPORT_SYMBOL_GPL vmlinux 0x1416c8d6 put_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0x141fb216 spi_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0x145b2d7e bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0x1471fc5a usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x147b2294 crypto_larval_lookup +EXPORT_SYMBOL_GPL vmlinux 0x147fde64 of_property_count_strings +EXPORT_SYMBOL_GPL vmlinux 0x149e38aa sk_unattached_filter_create +EXPORT_SYMBOL_GPL vmlinux 0x14b14f7b blk_add_request_payload +EXPORT_SYMBOL_GPL vmlinux 0x14c25ef5 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x14d5945d of_fdt_unflatten_tree +EXPORT_SYMBOL_GPL vmlinux 0x14fe0c56 spu_priv1_ops +EXPORT_SYMBOL_GPL vmlinux 0x15026a32 snmp_mib_init +EXPORT_SYMBOL_GPL vmlinux 0x150b57a0 cpufreq_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x152dfca6 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0x153074bc debugfs_create_u32 +EXPORT_SYMBOL_GPL vmlinux 0x154dc4b9 debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0x155cea9e usb_disable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x156423eb elv_unregister +EXPORT_SYMBOL_GPL vmlinux 0x15749760 ps3_sys_manager_register_ops +EXPORT_SYMBOL_GPL vmlinux 0x15892417 async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x1598dc9d unregister_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x159abb63 usb_unlink_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x15ae3b99 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x15c47a0c mnt_clone_write +EXPORT_SYMBOL_GPL vmlinux 0x15d16c40 tty_prepare_flip_string_flags +EXPORT_SYMBOL_GPL vmlinux 0x15f64ddd spi_get_next_queued_message +EXPORT_SYMBOL_GPL vmlinux 0x16000a3c dm_device_name +EXPORT_SYMBOL_GPL vmlinux 0x1640ee50 sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0x16447e8a blk_unprep_request +EXPORT_SYMBOL_GPL vmlinux 0x1650bf27 rcutorture_record_progress +EXPORT_SYMBOL_GPL vmlinux 0x1697b5eb blk_queue_bio +EXPORT_SYMBOL_GPL vmlinux 0x16b1e3e6 pci_restore_msi_state +EXPORT_SYMBOL_GPL vmlinux 0x17174fda pcibios_finish_adding_to_bus +EXPORT_SYMBOL_GPL vmlinux 0x1724d2fb usb_enable_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0x1741f93a da903x_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x1751ae40 driver_create_file +EXPORT_SYMBOL_GPL vmlinux 0x177c338d twl_get_version +EXPORT_SYMBOL_GPL vmlinux 0x177cd90f crypto_shash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x17a6045d rdev_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x17aca7cf ata_pci_bmdma_init +EXPORT_SYMBOL_GPL vmlinux 0x17b03d01 pm_runtime_autosuspend_expiration +EXPORT_SYMBOL_GPL vmlinux 0x17fb0066 of_property_match_string +EXPORT_SYMBOL_GPL vmlinux 0x18008157 __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x180b7183 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x1820179b crypto_alloc_instance +EXPORT_SYMBOL_GPL vmlinux 0x183fd738 perf_event_disable +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 0x185c4c2a rtc_set_mmss +EXPORT_SYMBOL_GPL vmlinux 0x1866cec2 ring_buffer_size +EXPORT_SYMBOL_GPL vmlinux 0x1878f62b edac_err_assert +EXPORT_SYMBOL_GPL vmlinux 0x18816c76 unregister_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x18b75fc9 hrtimer_start_range_ns +EXPORT_SYMBOL_GPL vmlinux 0x18e2c347 dev_pm_qos_remove_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x191d39f8 dev_pm_qos_add_ancestor_request +EXPORT_SYMBOL_GPL vmlinux 0x19277d28 __css_put +EXPORT_SYMBOL_GPL vmlinux 0x1936817b rio_request_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x193d48e0 trace_current_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x193f6bd5 sdio_readw +EXPORT_SYMBOL_GPL vmlinux 0x195b7f6a d_materialise_unique +EXPORT_SYMBOL_GPL vmlinux 0x19791db7 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x1994c418 __put_net +EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled +EXPORT_SYMBOL_GPL vmlinux 0x19a928cb init_dummy_netdev +EXPORT_SYMBOL_GPL vmlinux 0x19efe2ac blk_rq_unprep_clone +EXPORT_SYMBOL_GPL vmlinux 0x19fc7f60 regulator_set_mode +EXPORT_SYMBOL_GPL vmlinux 0x19fcbf93 pm_generic_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x1a082d69 max77693_update_reg +EXPORT_SYMBOL_GPL vmlinux 0x1a2f8c4a sysfs_update_group +EXPORT_SYMBOL_GPL vmlinux 0x1a323362 __ftrace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x1a3fc1e5 usb_driver_claim_interface +EXPORT_SYMBOL_GPL vmlinux 0x1a69f6cf ata_pci_device_do_suspend +EXPORT_SYMBOL_GPL vmlinux 0x1a6a75f6 stmpe_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x1a7a04a9 crypto_alloc_ablkcipher +EXPORT_SYMBOL_GPL vmlinux 0x1a8c5907 btree_insert +EXPORT_SYMBOL_GPL vmlinux 0x1ac717e3 ps3_os_area_get_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x1adcd0dc power_supply_am_i_supplied +EXPORT_SYMBOL_GPL vmlinux 0x1ae0e135 tracing_generic_entry_update +EXPORT_SYMBOL_GPL vmlinux 0x1af8e3d8 ata_bmdma_irq_clear +EXPORT_SYMBOL_GPL vmlinux 0x1afa7cc8 i2c_unlock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x1b15a021 crypto_unregister_shash +EXPORT_SYMBOL_GPL vmlinux 0x1b584381 ps3_mmio_region_init +EXPORT_SYMBOL_GPL vmlinux 0x1b8055ad get_task_comm +EXPORT_SYMBOL_GPL vmlinux 0x1b9664d1 __destroy_context +EXPORT_SYMBOL_GPL vmlinux 0x1b9aca3f jprobe_return +EXPORT_SYMBOL_GPL vmlinux 0x1ba61ce7 subsys_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x1baee217 __irq_set_handler +EXPORT_SYMBOL_GPL vmlinux 0x1bc7e84a relay_buf_full +EXPORT_SYMBOL_GPL vmlinux 0x1bd865c4 blk_trace_startstop +EXPORT_SYMBOL_GPL vmlinux 0x1bfb3e06 sata_scr_write_flush +EXPORT_SYMBOL_GPL vmlinux 0x1c213d15 put_pid +EXPORT_SYMBOL_GPL vmlinux 0x1c470e09 dev_attr_link_power_management_policy +EXPORT_SYMBOL_GPL vmlinux 0x1c4de4a0 max8997_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x1c55dc8b cm_notify_event +EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs +EXPORT_SYMBOL_GPL vmlinux 0x1c796003 setup_irq +EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 +EXPORT_SYMBOL_GPL vmlinux 0x1c827e00 dev_pm_put_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x1c964b4f spu_switch_notify +EXPORT_SYMBOL_GPL vmlinux 0x1cd1775b rio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1cf82066 tcp_orphan_count +EXPORT_SYMBOL_GPL vmlinux 0x1d21c5a4 ps3_system_bus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x1d327bc4 usb_usual_ignore_device +EXPORT_SYMBOL_GPL vmlinux 0x1d5609c8 wm8400_reset_codec_reg_cache +EXPORT_SYMBOL_GPL vmlinux 0x1d58ae14 lpddr2_jedec_timings +EXPORT_SYMBOL_GPL vmlinux 0x1d92df4f sdio_writeb_readb +EXPORT_SYMBOL_GPL vmlinux 0x1d9496fc of_pci_find_child_device +EXPORT_SYMBOL_GPL vmlinux 0x1de24975 rtc_set_alarm +EXPORT_SYMBOL_GPL vmlinux 0x1dfbcf4c mpic_msgr_disable +EXPORT_SYMBOL_GPL vmlinux 0x1e02bc54 uhci_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0x1e0e8a76 blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x1e0fef14 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0x1e23162e tpm_show_timeouts +EXPORT_SYMBOL_GPL vmlinux 0x1e314b21 regulator_use_dummy_regulator +EXPORT_SYMBOL_GPL vmlinux 0x1e3b656c devres_destroy +EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart +EXPORT_SYMBOL_GPL vmlinux 0x1e7e9c82 pm_generic_restore_noirq +EXPORT_SYMBOL_GPL vmlinux 0x1e8a077c fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1eb9516e round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names +EXPORT_SYMBOL_GPL vmlinux 0x1ee4465e sdio_set_host_pm_flags +EXPORT_SYMBOL_GPL vmlinux 0x1ee9814e irq_of_parse_and_map +EXPORT_SYMBOL_GPL vmlinux 0x1ef74eb6 pmf_unregister_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x1ef80259 wm8350_device_exit +EXPORT_SYMBOL_GPL vmlinux 0x1effbe8b fb_deferred_io_open +EXPORT_SYMBOL_GPL vmlinux 0x1f07e3f7 ata_sff_tf_read +EXPORT_SYMBOL_GPL vmlinux 0x1f32e0a9 ahash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x1f4e4cd6 pmf_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x1f6a9532 usb_get_hcd +EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout +EXPORT_SYMBOL_GPL vmlinux 0x1f8db7f9 ring_buffer_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0x1fb86c3a tpm_release +EXPORT_SYMBOL_GPL vmlinux 0x1fbef37d fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1fcece42 inet_twdr_twcal_tick +EXPORT_SYMBOL_GPL vmlinux 0x1fd8eed1 class_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x1fe970cb ps3_io_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x2036aba7 ftrace_event_reg +EXPORT_SYMBOL_GPL vmlinux 0x20562bcd device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x209e1ffa tpm_open +EXPORT_SYMBOL_GPL vmlinux 0x20bc3470 orderly_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x20d662b8 mnt_want_write_file +EXPORT_SYMBOL_GPL vmlinux 0x20dc9405 ata_pio_need_iordy +EXPORT_SYMBOL_GPL vmlinux 0x20df0afe fuse_conn_get +EXPORT_SYMBOL_GPL vmlinux 0x211850f5 htab_hash_mask +EXPORT_SYMBOL_GPL vmlinux 0x211b315e wakeup_source_destroy +EXPORT_SYMBOL_GPL vmlinux 0x21adb2d7 ps3_system_bus_device_register +EXPORT_SYMBOL_GPL vmlinux 0x21d36a03 kvm_hypercall +EXPORT_SYMBOL_GPL vmlinux 0x21d844c5 cpufreq_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x21df65de blk_update_request +EXPORT_SYMBOL_GPL vmlinux 0x21ff7581 ata_port_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2206985a ata_bmdma_status +EXPORT_SYMBOL_GPL vmlinux 0x2212b2f6 blk_queue_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0x22144f54 scsi_schedule_eh +EXPORT_SYMBOL_GPL vmlinux 0x2225c421 tc3589x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x2240383a cpu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x224cfbc3 __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x226caafc register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0x2285200f usb_kill_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2288dc88 inet_csk_route_req +EXPORT_SYMBOL_GPL vmlinux 0x2296c00d crypto_attr_u32 +EXPORT_SYMBOL_GPL vmlinux 0x22975688 set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x229d0ab9 ata_sff_wait_after_reset +EXPORT_SYMBOL_GPL vmlinux 0x22c6a10e usb_get_intf +EXPORT_SYMBOL_GPL vmlinux 0x230e0698 __clocksource_updatefreq_scale +EXPORT_SYMBOL_GPL vmlinux 0x23200d8e tps65090_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x232c35ba stmpe_block_read +EXPORT_SYMBOL_GPL vmlinux 0x2334adf1 cpufreq_frequency_table_target +EXPORT_SYMBOL_GPL vmlinux 0x23864ce7 cpuset_mem_spread_node +EXPORT_SYMBOL_GPL vmlinux 0x2391e998 __rt_mutex_init +EXPORT_SYMBOL_GPL vmlinux 0x23ae8477 sysfs_create_link +EXPORT_SYMBOL_GPL vmlinux 0x23b0eb5c led_trigger_set_default +EXPORT_SYMBOL_GPL vmlinux 0x24011e14 vbin_printf +EXPORT_SYMBOL_GPL vmlinux 0x243a119c crypto_drop_spawn +EXPORT_SYMBOL_GPL vmlinux 0x2447533c ktime_get_real +EXPORT_SYMBOL_GPL vmlinux 0x2451e060 spu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x24aac4d9 crypto_aes_expand_key +EXPORT_SYMBOL_GPL vmlinux 0x24dcd769 device_initialize +EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list +EXPORT_SYMBOL_GPL vmlinux 0x24fc46b6 regulator_bulk_free +EXPORT_SYMBOL_GPL vmlinux 0x25113317 ata_msleep +EXPORT_SYMBOL_GPL vmlinux 0x252e43b4 cn_add_callback +EXPORT_SYMBOL_GPL vmlinux 0x2542d08d sata_scr_valid +EXPORT_SYMBOL_GPL vmlinux 0x2572186a ata_pci_device_resume +EXPORT_SYMBOL_GPL vmlinux 0x25a67a48 rio_request_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x25d21082 kill_pid_info_as_cred +EXPORT_SYMBOL_GPL vmlinux 0x26031657 sysfs_rename_link +EXPORT_SYMBOL_GPL vmlinux 0x262f20a8 local_clock +EXPORT_SYMBOL_GPL vmlinux 0x26335bc5 ftrace_set_filter +EXPORT_SYMBOL_GPL vmlinux 0x26541881 scsi_internal_device_block +EXPORT_SYMBOL_GPL vmlinux 0x26576139 queue_work +EXPORT_SYMBOL_GPL vmlinux 0x26a2b474 smu_get_ofdev +EXPORT_SYMBOL_GPL vmlinux 0x26b71fb4 ring_buffer_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense +EXPORT_SYMBOL_GPL vmlinux 0x26cec0ce tcp_is_cwnd_limited +EXPORT_SYMBOL_GPL vmlinux 0x26f03743 get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0x2766aa37 bitmap_resize +EXPORT_SYMBOL_GPL vmlinux 0x27973590 vfs_cancel_lock +EXPORT_SYMBOL_GPL vmlinux 0x279f40d6 spu_get_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x27c0c4be eventfd_ctx_read +EXPORT_SYMBOL_GPL vmlinux 0x27c1e63f usb_amd_find_chipset_info +EXPORT_SYMBOL_GPL vmlinux 0x27ed50e5 usb_register_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x28609a93 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x28627c6a cpufreq_freq_attr_scaling_available_freqs +EXPORT_SYMBOL_GPL vmlinux 0x2869ebaf regulator_bulk_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x289ccdc2 raw_unhash_sk +EXPORT_SYMBOL_GPL vmlinux 0x28bbf4cd sdio_release_irq +EXPORT_SYMBOL_GPL vmlinux 0x28bd632f sysfs_notify +EXPORT_SYMBOL_GPL vmlinux 0x28c8b7f2 css_lookup +EXPORT_SYMBOL_GPL vmlinux 0x28d664ff __raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x28d91187 pci_ats_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x28f80e77 ata_link_next +EXPORT_SYMBOL_GPL vmlinux 0x2904fad4 wm831x_auxadc_read +EXPORT_SYMBOL_GPL vmlinux 0x29151269 eventfd_ctx_fileget +EXPORT_SYMBOL_GPL vmlinux 0x292c12d2 blkg_lookup +EXPORT_SYMBOL_GPL vmlinux 0x292fca93 device_reprobe +EXPORT_SYMBOL_GPL vmlinux 0x2936cffe md_run +EXPORT_SYMBOL_GPL vmlinux 0x29456f4d usb_block_urb +EXPORT_SYMBOL_GPL vmlinux 0x29b5988b root_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x29b7a1eb cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x29cf1d7c subsys_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x29f08a98 regulator_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2a272538 ata_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0x2a37a6cf seq_release_net +EXPORT_SYMBOL_GPL vmlinux 0x2a5ac87f pci_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x2a678a13 __suspend_report_result +EXPORT_SYMBOL_GPL vmlinux 0x2a8b5171 usb_hcd_pci_pm_ops +EXPORT_SYMBOL_GPL vmlinux 0x2ab9f394 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0x2ac416e0 zap_vma_ptes +EXPORT_SYMBOL_GPL vmlinux 0x2afbe2a5 usb_scuttle_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x2b1d611d inode_sb_list_add +EXPORT_SYMBOL_GPL vmlinux 0x2b55a2ac pci_disable_rom +EXPORT_SYMBOL_GPL vmlinux 0x2b5c303b smp_send_reschedule +EXPORT_SYMBOL_GPL vmlinux 0x2b641e63 __inet_lookup_established +EXPORT_SYMBOL_GPL vmlinux 0x2b71fa6d __rtnl_register +EXPORT_SYMBOL_GPL vmlinux 0x2b8e95ea fib_rules_unregister +EXPORT_SYMBOL_GPL vmlinux 0x2b8f372d blkcg_print_blkgs +EXPORT_SYMBOL_GPL vmlinux 0x2be6d351 swiotlb_tbl_map_single +EXPORT_SYMBOL_GPL vmlinux 0x2c161e2e sysfs_merge_group +EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied +EXPORT_SYMBOL_GPL vmlinux 0x2c3b3293 pci_hp_remove_module_link +EXPORT_SYMBOL_GPL vmlinux 0x2c448c5a da9052_adc_read_temp +EXPORT_SYMBOL_GPL vmlinux 0x2c5f450e i2c_probe_func_quick_read +EXPORT_SYMBOL_GPL vmlinux 0x2c690901 tcp_twsk_destructor +EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping +EXPORT_SYMBOL_GPL vmlinux 0x2ca4ebcd regulator_set_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x2ca6a203 driver_find +EXPORT_SYMBOL_GPL vmlinux 0x2cac5f48 n_tty_inherit_ops +EXPORT_SYMBOL_GPL vmlinux 0x2cba57e1 dev_pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0x2cc3e675 pmac_i2c_close +EXPORT_SYMBOL_GPL vmlinux 0x2ce98559 kcrypto_wq +EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0x2cf7f8ea perf_event_refresh +EXPORT_SYMBOL_GPL vmlinux 0x2cfab7ce kobject_rename +EXPORT_SYMBOL_GPL vmlinux 0x2d17a0e1 cgroup_taskset_size +EXPORT_SYMBOL_GPL vmlinux 0x2d198791 input_ff_erase +EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d2b8644 da903x_update +EXPORT_SYMBOL_GPL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL_GPL vmlinux 0x2d3dc798 rio_mport_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x2d59c954 edac_handlers +EXPORT_SYMBOL_GPL vmlinux 0x2d72c291 pci_cfg_access_lock +EXPORT_SYMBOL_GPL vmlinux 0x2d9b5a6a md_allow_write +EXPORT_SYMBOL_GPL vmlinux 0x2d9bea27 crypto_alloc_aead +EXPORT_SYMBOL_GPL vmlinux 0x2dba276a __iowrite32_copy +EXPORT_SYMBOL_GPL vmlinux 0x2dc5a6d1 btree_last +EXPORT_SYMBOL_GPL vmlinux 0x2dcdcc86 eeh_add_sysfs_files +EXPORT_SYMBOL_GPL vmlinux 0x2ddee4bb usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x2e1da9fb probe_kernel_read +EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e2f1740 ring_buffer_record_disable_cpu +EXPORT_SYMBOL_GPL vmlinux 0x2e3f55f5 pcibios_find_pci_bus +EXPORT_SYMBOL_GPL vmlinux 0x2e423d9e da9052_adc_manual_read +EXPORT_SYMBOL_GPL vmlinux 0x2e45e488 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x2e90f212 cpuidle_enable_device +EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable +EXPORT_SYMBOL_GPL vmlinux 0x2f255a19 ata_sff_data_xfer +EXPORT_SYMBOL_GPL vmlinux 0x2f28c06d sysfs_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x2f4113a2 dcookie_register +EXPORT_SYMBOL_GPL vmlinux 0x2f47d8c7 cpufreq_frequency_get_table +EXPORT_SYMBOL_GPL vmlinux 0x2f7d45a1 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x2ffb5ff7 btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x300cef84 rtc_class_open +EXPORT_SYMBOL_GPL vmlinux 0x301b9a7d blkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x302ffe64 usb_put_intf +EXPORT_SYMBOL_GPL vmlinux 0x30301151 atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3036da0f crypto_alloc_tfm +EXPORT_SYMBOL_GPL vmlinux 0x304a51f7 ata_dummy_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x3050c5cd locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x305a37b1 rio_release_dma +EXPORT_SYMBOL_GPL vmlinux 0x307f7776 timecompare_offset +EXPORT_SYMBOL_GPL vmlinux 0x308b733a getboottime +EXPORT_SYMBOL_GPL vmlinux 0x30db0257 inet6_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x30de97cf debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x30fcfbc6 usb_store_new_id +EXPORT_SYMBOL_GPL vmlinux 0x3109b751 cpu_clock +EXPORT_SYMBOL_GPL vmlinux 0x311b78c2 ps3_get_spe_id +EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave +EXPORT_SYMBOL_GPL vmlinux 0x3137c57d inet6_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x315eaa18 ata_sg_init +EXPORT_SYMBOL_GPL vmlinux 0x3191b756 sata_link_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x319589b5 usb_free_urb +EXPORT_SYMBOL_GPL vmlinux 0x31c0c2d1 dm_put +EXPORT_SYMBOL_GPL vmlinux 0x31f8c75d ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0x321bdbb1 compat_get_timeval +EXPORT_SYMBOL_GPL vmlinux 0x32217075 usb_hcd_link_urb_to_ep +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 0x32f08411 blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x32fd447a monotonic_to_bootbased +EXPORT_SYMBOL_GPL vmlinux 0x3309ea64 ps3av_audio_mute +EXPORT_SYMBOL_GPL vmlinux 0x33215c32 tps65912_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x333bd3da crypto_shash_final +EXPORT_SYMBOL_GPL vmlinux 0x336154ca rcutorture_record_test_transition +EXPORT_SYMBOL_GPL vmlinux 0x3361e0ea devres_close_group +EXPORT_SYMBOL_GPL vmlinux 0x337bd0de inet6_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x338d2b4e tpm_show_durations +EXPORT_SYMBOL_GPL vmlinux 0x33f7ab15 get_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x341593c3 ata_std_prereset +EXPORT_SYMBOL_GPL vmlinux 0x342e0dac fsnotify +EXPORT_SYMBOL_GPL vmlinux 0x343e8ff8 crypto_mod_put +EXPORT_SYMBOL_GPL vmlinux 0x3441c3d6 gpio_set_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x3465fce6 __tracepoint_block_bio_complete +EXPORT_SYMBOL_GPL vmlinux 0x347a13a7 da903x_write +EXPORT_SYMBOL_GPL vmlinux 0x347fd4b3 eventfd_ctx_get +EXPORT_SYMBOL_GPL vmlinux 0x34a05b7a shash_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0x34a7bda5 blk_queue_dma_drain +EXPORT_SYMBOL_GPL vmlinux 0x3534e2a3 system_nrt_wq +EXPORT_SYMBOL_GPL vmlinux 0x3537d6a1 of_alias_get_id +EXPORT_SYMBOL_GPL vmlinux 0x35908140 wm8350_device_init +EXPORT_SYMBOL_GPL vmlinux 0x35d2afe7 max8997_write_reg +EXPORT_SYMBOL_GPL vmlinux 0x35da0e5f fs_kobj +EXPORT_SYMBOL_GPL vmlinux 0x35eeaa88 perf_trace_buf_prepare +EXPORT_SYMBOL_GPL vmlinux 0x35fc8487 default_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x35ff5e9e __rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3605fb20 net_ns_type_operations +EXPORT_SYMBOL_GPL vmlinux 0x360821a2 shash_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x361e2bcc save_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0x362e23ec call_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0x363ff904 inet_csk_compat_setsockopt +EXPORT_SYMBOL_GPL vmlinux 0x36425ab0 edac_get_sysfs_subsys +EXPORT_SYMBOL_GPL vmlinux 0x36541dcc pci_intx +EXPORT_SYMBOL_GPL vmlinux 0x3655c61a irq_create_mapping +EXPORT_SYMBOL_GPL vmlinux 0x36875389 __timecompare_update +EXPORT_SYMBOL_GPL vmlinux 0x368f1fea static_key_slow_inc +EXPORT_SYMBOL_GPL vmlinux 0x36994eed debugfs_create_u64 +EXPORT_SYMBOL_GPL vmlinux 0x369a8227 class_dev_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x371cf4da cpuidle_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x37303c06 perf_event_create_kernel_counter +EXPORT_SYMBOL_GPL vmlinux 0x3781db70 scsi_nl_add_driver +EXPORT_SYMBOL_GPL vmlinux 0x378a8ba4 __rio_local_read_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x37d30761 devres_open_group +EXPORT_SYMBOL_GPL vmlinux 0x37fa7015 dma_buf_kmap +EXPORT_SYMBOL_GPL vmlinux 0x380927e0 spi_add_device +EXPORT_SYMBOL_GPL vmlinux 0x38432181 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0x384f984c regcache_cache_bypass +EXPORT_SYMBOL_GPL vmlinux 0x38549643 s5m_reg_update +EXPORT_SYMBOL_GPL vmlinux 0x38728bab hwmon_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3872f425 platform_get_resource_byname +EXPORT_SYMBOL_GPL vmlinux 0x3879d4f8 flush_fp_to_thread +EXPORT_SYMBOL_GPL vmlinux 0x389e805a alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x38a30bef stmpe_reg_write +EXPORT_SYMBOL_GPL vmlinux 0x38b0a17c pci_disable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0x38ebebc6 anon_transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x390312eb debugfs_create_bool +EXPORT_SYMBOL_GPL vmlinux 0x3918a87e hrtimer_get_remaining +EXPORT_SYMBOL_GPL vmlinux 0x392411a2 cpuidle_register_device +EXPORT_SYMBOL_GPL vmlinux 0x39321793 usb_hcd_unmap_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x395e8d49 disk_part_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x396b4f70 sdio_readl +EXPORT_SYMBOL_GPL vmlinux 0x397ef9ad crypto_alg_sem +EXPORT_SYMBOL_GPL vmlinux 0x3987a512 timed_output_dev_unregister +EXPORT_SYMBOL_GPL vmlinux 0x39a8bb1c fb_deferred_io_init +EXPORT_SYMBOL_GPL vmlinux 0x39d7bb0a usb_unpoison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x39e15e5f trace_nowake_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0x39f4869f rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x39f61c73 acop_handle_fault +EXPORT_SYMBOL_GPL vmlinux 0x3a1b669b cgroup_to_blkcg +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 0x3a5d5ae2 swiotlb_tbl_sync_single +EXPORT_SYMBOL_GPL vmlinux 0x3a6a0aa6 platform_get_resource +EXPORT_SYMBOL_GPL vmlinux 0x3a7e52a3 dm_send_uevents +EXPORT_SYMBOL_GPL vmlinux 0x3aa94df2 invalidate_inode_pages2 +EXPORT_SYMBOL_GPL vmlinux 0x3acdf325 twl4030_audio_enable_resource +EXPORT_SYMBOL_GPL vmlinux 0x3ad0e201 scatterwalk_copychunks +EXPORT_SYMBOL_GPL vmlinux 0x3ae6fc7b device_store_ulong +EXPORT_SYMBOL_GPL vmlinux 0x3b1c5afc ps3_vuart_irq_setup +EXPORT_SYMBOL_GPL vmlinux 0x3b32637f dma_buf_detach +EXPORT_SYMBOL_GPL vmlinux 0x3b3c42b3 ps3_gpu_mutex +EXPORT_SYMBOL_GPL vmlinux 0x3b4df0d5 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0x3b7c203b xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0x3b8ec694 pci_slots_kset +EXPORT_SYMBOL_GPL vmlinux 0x3ba449bc swiotlb_unmap_page +EXPORT_SYMBOL_GPL vmlinux 0x3bb03bcb irq_setup_alt_chip +EXPORT_SYMBOL_GPL vmlinux 0x3bc5b062 sdio_get_host_pm_caps +EXPORT_SYMBOL_GPL vmlinux 0x3be89d3c usb_register_notify +EXPORT_SYMBOL_GPL vmlinux 0x3bf8791b regulator_disable_regmap +EXPORT_SYMBOL_GPL vmlinux 0x3c0d0622 usb_unanchor_urb +EXPORT_SYMBOL_GPL vmlinux 0x3c431a99 devres_release +EXPORT_SYMBOL_GPL vmlinux 0x3c66fc3b wm8350_gpio_config +EXPORT_SYMBOL_GPL vmlinux 0x3c9390db pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0x3c942368 profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0x3ca41f8e power_supply_get_by_name +EXPORT_SYMBOL_GPL vmlinux 0x3cac21b9 regulator_sync_voltage +EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness +EXPORT_SYMBOL_GPL vmlinux 0x3cde4bf1 usb_unlocked_disable_lpm +EXPORT_SYMBOL_GPL vmlinux 0x3cfedb3f register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x3d3159b8 tty_perform_flush +EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end +EXPORT_SYMBOL_GPL vmlinux 0x3d657ef2 pci_pri_stopped +EXPORT_SYMBOL_GPL vmlinux 0x3d721eaf __blkg_release +EXPORT_SYMBOL_GPL vmlinux 0x3d84522a pm_generic_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0x3dad1fcb kset_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x3dad9166 device_destroy +EXPORT_SYMBOL_GPL vmlinux 0x3dc7062b tc3589x_block_write +EXPORT_SYMBOL_GPL vmlinux 0x3dc916b6 crypto_fl_tab +EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final +EXPORT_SYMBOL_GPL vmlinux 0x3e195ac5 ata_sff_dma_pause +EXPORT_SYMBOL_GPL vmlinux 0x3e196760 mnt_want_write +EXPORT_SYMBOL_GPL vmlinux 0x3e31196f wm8350_read_auxadc +EXPORT_SYMBOL_GPL vmlinux 0x3e41b2ee relay_switch_subbuf +EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3eb9a8a7 pmf_register_irq_client +EXPORT_SYMBOL_GPL vmlinux 0x3ec14135 stmpe_set_altfunc +EXPORT_SYMBOL_GPL vmlinux 0x3edad223 usb_usual_clear_present +EXPORT_SYMBOL_GPL vmlinux 0x3efb35c9 get_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0x3f0e0f88 __blk_put_request +EXPORT_SYMBOL_GPL vmlinux 0x3f629ad2 __blocking_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x3f6ac874 __sock_recv_wifi_status +EXPORT_SYMBOL_GPL vmlinux 0x3f6cf5f7 aead_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0x3f76fad2 sync_filesystem +EXPORT_SYMBOL_GPL vmlinux 0x3f8a7a1f pm_qos_request_active +EXPORT_SYMBOL_GPL vmlinux 0x3f92bfc8 ata_std_qc_defer +EXPORT_SYMBOL_GPL vmlinux 0x3fc72d3d __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x3fcdbce2 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0x3ffe56ef dma_buf_unmap_attachment +EXPORT_SYMBOL_GPL vmlinux 0x400e01bb spu_set_profile_private_kref +EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one +EXPORT_SYMBOL_GPL vmlinux 0x40af0dec ata_xfer_mode2mask +EXPORT_SYMBOL_GPL vmlinux 0x40c0f26f force_sig_info +EXPORT_SYMBOL_GPL vmlinux 0x40c54fcd enable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x40d46b21 crypto_ft_tab +EXPORT_SYMBOL_GPL vmlinux 0x40d7ec02 crypto_register_alg +EXPORT_SYMBOL_GPL vmlinux 0x40f4a945 srcu_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x40ffa09b usb_hub_clear_tt_buffer +EXPORT_SYMBOL_GPL vmlinux 0x41246c25 irq_domain_add_tree +EXPORT_SYMBOL_GPL vmlinux 0x41425635 ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval +EXPORT_SYMBOL_GPL vmlinux 0x4182d816 blk_rq_err_bytes +EXPORT_SYMBOL_GPL vmlinux 0x419dec3e fuse_get_req +EXPORT_SYMBOL_GPL vmlinux 0x41bf4de9 ata_bmdma_setup +EXPORT_SYMBOL_GPL vmlinux 0x41df9819 dev_pm_qos_expose_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0x41e94bdd cleanup_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x4201691c ata_scsi_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x42160169 flush_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x421ef45e __blkg_prfill_u64 +EXPORT_SYMBOL_GPL vmlinux 0x42302df2 hvc_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x4231ab70 ata_wait_register +EXPORT_SYMBOL_GPL vmlinux 0x423d8ea5 sata_scr_read +EXPORT_SYMBOL_GPL vmlinux 0x42430359 blk_execute_rq_nowait +EXPORT_SYMBOL_GPL vmlinux 0x424acc6d scatterwalk_done +EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active +EXPORT_SYMBOL_GPL vmlinux 0x42dbefed ata_sff_check_status +EXPORT_SYMBOL_GPL vmlinux 0x42ee0b32 usb_poison_urb +EXPORT_SYMBOL_GPL vmlinux 0x42f8043d inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x430b7fea device_bind_driver +EXPORT_SYMBOL_GPL vmlinux 0x432fd7f6 __gpio_set_value +EXPORT_SYMBOL_GPL vmlinux 0x434907bc spi_finalize_current_message +EXPORT_SYMBOL_GPL vmlinux 0x435d5def usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x438556d0 tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x43a53735 __alloc_workqueue_key +EXPORT_SYMBOL_GPL vmlinux 0x43b1142d scsi_target_unblock +EXPORT_SYMBOL_GPL vmlinux 0x43cd337d spi_busnum_to_master +EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift +EXPORT_SYMBOL_GPL vmlinux 0x43f8e4d9 cpci_hp_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x442c1a48 wm831x_auxadc_read_uv +EXPORT_SYMBOL_GPL vmlinux 0x442e3f1f class_compat_create_link +EXPORT_SYMBOL_GPL vmlinux 0x44404f11 kdb_register_repeat +EXPORT_SYMBOL_GPL vmlinux 0x444c5579 pm_runtime_enable +EXPORT_SYMBOL_GPL vmlinux 0x444c662d pci_pri_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4455e1b3 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe +EXPORT_SYMBOL_GPL vmlinux 0x44bcfa6d system_nrt_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0x44ed614a fuse_request_alloc +EXPORT_SYMBOL_GPL vmlinux 0x44f58940 ata_sff_wait_ready +EXPORT_SYMBOL_GPL vmlinux 0x450c209d device_show_int +EXPORT_SYMBOL_GPL vmlinux 0x450fb522 kmsg_dump_get_buffer +EXPORT_SYMBOL_GPL vmlinux 0x451761f1 get_slice_psize +EXPORT_SYMBOL_GPL vmlinux 0x455d4410 hvc_remove +EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list +EXPORT_SYMBOL_GPL vmlinux 0x458dfd4d scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0x45bf1ff3 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x46074c17 sdev_evt_alloc +EXPORT_SYMBOL_GPL vmlinux 0x4611ed5c pm_generic_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x461b7a72 debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x4623c7df register_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x4630b4a5 cgroup_unload_subsys +EXPORT_SYMBOL_GPL vmlinux 0x464dd06a blkcipher_walk_virt +EXPORT_SYMBOL_GPL vmlinux 0x46669315 spi_master_resume +EXPORT_SYMBOL_GPL vmlinux 0x466a5530 irq_radix_revmap_insert +EXPORT_SYMBOL_GPL vmlinux 0x4672e88b __crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x4674622a ata_port_desc +EXPORT_SYMBOL_GPL vmlinux 0x469eb13f sock_update_netprioidx +EXPORT_SYMBOL_GPL vmlinux 0x46a7708c wm8400_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x46d9f955 ps3_irq_plug_setup +EXPORT_SYMBOL_GPL vmlinux 0x46f732de queue_work_on +EXPORT_SYMBOL_GPL vmlinux 0x47046fbb key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x47229b5c gpio_request +EXPORT_SYMBOL_GPL vmlinux 0x472826ae irq_remove_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0x47309ed2 dequeue_signal +EXPORT_SYMBOL_GPL vmlinux 0x4741db42 ps3av_set_audio_mode +EXPORT_SYMBOL_GPL vmlinux 0x47558c77 usb_hcd_unlink_urb_from_ep +EXPORT_SYMBOL_GPL vmlinux 0x47acddea ps3_sys_manager_set_wol +EXPORT_SYMBOL_GPL vmlinux 0x47b78b07 pm_generic_suspend +EXPORT_SYMBOL_GPL vmlinux 0x47ed3c35 sdio_writew +EXPORT_SYMBOL_GPL vmlinux 0x47ff399f regulator_is_supported_voltage +EXPORT_SYMBOL_GPL vmlinux 0x480a4f3d debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x48110fdc register_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x4824832c single_release_net +EXPORT_SYMBOL_GPL vmlinux 0x4827d24d vfs_test_lock +EXPORT_SYMBOL_GPL vmlinux 0x4842a64e regulator_get +EXPORT_SYMBOL_GPL vmlinux 0x485e32d4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x489b09a7 pci_msi_off +EXPORT_SYMBOL_GPL vmlinux 0x48a488a0 sysctl_tcp_cookie_size +EXPORT_SYMBOL_GPL vmlinux 0x49836db9 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0x49883c97 fib_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue +EXPORT_SYMBOL_GPL vmlinux 0x4a160bf4 usb_create_shared_hcd +EXPORT_SYMBOL_GPL vmlinux 0x4a16d393 dev_attr_unload_heads +EXPORT_SYMBOL_GPL vmlinux 0x4a34825e proc_net_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x4a38c348 pm_generic_restore_early +EXPORT_SYMBOL_GPL vmlinux 0x4a90160e bprintf +EXPORT_SYMBOL_GPL vmlinux 0x4a92f520 pcie_bus_configure_settings +EXPORT_SYMBOL_GPL vmlinux 0x4aadeb9a ring_buffer_alloc_read_page +EXPORT_SYMBOL_GPL vmlinux 0x4af61352 rtc_read_alarm +EXPORT_SYMBOL_GPL vmlinux 0x4affd08b put_compat_timespec +EXPORT_SYMBOL_GPL vmlinux 0x4b2b40a5 usb_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0x4b382136 input_class +EXPORT_SYMBOL_GPL vmlinux 0x4b40e2ae irq_create_direct_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4b4ded30 blk_queue_rq_timeout +EXPORT_SYMBOL_GPL vmlinux 0x4b56cd2e net_prio_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0x4b5fe779 scsi_nl_sock +EXPORT_SYMBOL_GPL vmlinux 0x4bb56acc tpm_show_caps +EXPORT_SYMBOL_GPL vmlinux 0x4bc62a81 audit_enabled +EXPORT_SYMBOL_GPL vmlinux 0x4bdcedae crypto_enqueue_request +EXPORT_SYMBOL_GPL vmlinux 0x4bfea1fb flush_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0x4c0063ba pci_walk_bus +EXPORT_SYMBOL_GPL vmlinux 0x4c18f773 ps3_os_area_set_rtc_diff +EXPORT_SYMBOL_GPL vmlinux 0x4c372d03 pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x4c71580e tpm_store_cancel +EXPORT_SYMBOL_GPL vmlinux 0x4c759827 byte_rev_table +EXPORT_SYMBOL_GPL vmlinux 0x4cb1ac5a sata_link_scr_lpm +EXPORT_SYMBOL_GPL vmlinux 0x4cda6d07 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x4cf209aa skcipher_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0x4d1333e6 tty_ldisc_ref_wait +EXPORT_SYMBOL_GPL vmlinux 0x4d172ccb ehci_cf_port_reset_rwsem +EXPORT_SYMBOL_GPL vmlinux 0x4d2340c5 user_describe +EXPORT_SYMBOL_GPL vmlinux 0x4d2adc0c pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0x4db26737 crypto_aead_setauthsize +EXPORT_SYMBOL_GPL vmlinux 0x4db4ea0c pmac_low_i2c_unlock +EXPORT_SYMBOL_GPL vmlinux 0x4df8845d kobject_get_path +EXPORT_SYMBOL_GPL vmlinux 0x4dfb5e36 pci_max_pasids +EXPORT_SYMBOL_GPL vmlinux 0x4dfbc5ff dma_release_channel +EXPORT_SYMBOL_GPL vmlinux 0x4e109192 ring_buffer_entries +EXPORT_SYMBOL_GPL vmlinux 0x4e289b8a i2c_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x4e74f4e9 tty_ldisc_flush +EXPORT_SYMBOL_GPL vmlinux 0x4e7df11b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0x4e8cd6e9 i2c_new_probed_device +EXPORT_SYMBOL_GPL vmlinux 0x4e8d750a crypto_ahash_type +EXPORT_SYMBOL_GPL vmlinux 0x4e970c91 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x4ea214d4 power_supply_changed +EXPORT_SYMBOL_GPL vmlinux 0x4ec7b8e3 tracepoint_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0x4ed31715 xfrm_output +EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context +EXPORT_SYMBOL_GPL vmlinux 0x4ef82ba2 get_net_ns_by_pid +EXPORT_SYMBOL_GPL vmlinux 0x4f018b45 of_irq_map_pci +EXPORT_SYMBOL_GPL vmlinux 0x4f1ccf7d dev_pm_qos_add_global_notifier +EXPORT_SYMBOL_GPL vmlinux 0x4f51bf09 fuse_dev_release +EXPORT_SYMBOL_GPL vmlinux 0x4f6a8855 ata_sas_queuecmd +EXPORT_SYMBOL_GPL vmlinux 0x4f9a2235 device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0x4f9a33a8 cpufreq_cpu_put +EXPORT_SYMBOL_GPL vmlinux 0x4faddf5f __pm_runtime_idle +EXPORT_SYMBOL_GPL vmlinux 0x4fae1f2d of_pci_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x4fd24f5e unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0x4fd4e89d ring_buffer_empty_cpu +EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal +EXPORT_SYMBOL_GPL vmlinux 0x4ff6d006 sdio_memcpy_fromio +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 0x50a35b6d bus_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x50b8b5bd rtc_irq_unregister +EXPORT_SYMBOL_GPL vmlinux 0x50dfb011 pci_add_dynid +EXPORT_SYMBOL_GPL vmlinux 0x50e6d9f4 ata_sff_irq_on +EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num +EXPORT_SYMBOL_GPL vmlinux 0x50e736f1 crypto_alg_mod_lookup +EXPORT_SYMBOL_GPL vmlinux 0x50f5e532 call_rcu_sched +EXPORT_SYMBOL_GPL vmlinux 0x50fa7a9d wakeup_source_add +EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up +EXPORT_SYMBOL_GPL vmlinux 0x510b92ca inet6_lookup +EXPORT_SYMBOL_GPL vmlinux 0x51197bd7 kick_process +EXPORT_SYMBOL_GPL vmlinux 0x513ddac9 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0x51447d05 sysfs_notify_dirent +EXPORT_SYMBOL_GPL vmlinux 0x515a594d bmp085_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0x516d642d inet6_sk_rebuild_header +EXPORT_SYMBOL_GPL vmlinux 0x517b01be i2c_new_dummy +EXPORT_SYMBOL_GPL vmlinux 0x51846493 trace_seq_printf +EXPORT_SYMBOL_GPL vmlinux 0x51b5ac4c __pm_runtime_suspend +EXPORT_SYMBOL_GPL vmlinux 0x51b65a26 rtc_lock +EXPORT_SYMBOL_GPL vmlinux 0x5210a5bf hsi_board_list +EXPORT_SYMBOL_GPL vmlinux 0x52129cce kobject_create_and_add +EXPORT_SYMBOL_GPL vmlinux 0x52191d51 unregister_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x522f538b tpm_send +EXPORT_SYMBOL_GPL vmlinux 0x5239240d sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x526f76c7 device_del +EXPORT_SYMBOL_GPL vmlinux 0x528d5bfd sata_scr_write +EXPORT_SYMBOL_GPL vmlinux 0x52e0ef46 crypto_register_algs +EXPORT_SYMBOL_GPL vmlinux 0x5314ad2f page_cache_sync_readahead +EXPORT_SYMBOL_GPL vmlinux 0x532791d9 user_match +EXPORT_SYMBOL_GPL vmlinux 0x5338f86c __cpufreq_driver_getavg +EXPORT_SYMBOL_GPL vmlinux 0x534fa868 tun_get_socket +EXPORT_SYMBOL_GPL vmlinux 0x535250eb ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5358fc36 ring_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0x53614269 get_cpu_idle_time_us +EXPORT_SYMBOL_GPL vmlinux 0x536d2120 shash_attr_alg +EXPORT_SYMBOL_GPL vmlinux 0x53986488 register_die_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5398fbf9 unregister_ftrace_function +EXPORT_SYMBOL_GPL vmlinux 0x53a3e486 regulator_get_current_limit +EXPORT_SYMBOL_GPL vmlinux 0x53d921d6 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x53e7c7ac debugfs_create_size_t +EXPORT_SYMBOL_GPL vmlinux 0x53effe92 css_depth +EXPORT_SYMBOL_GPL vmlinux 0x54070b58 pci_hp_deregister +EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run +EXPORT_SYMBOL_GPL vmlinux 0x541d0bd6 rio_release_outb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x541da93b blkg_prfill_rwstat +EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 +EXPORT_SYMBOL_GPL vmlinux 0x5460c8d8 fsnotify_get_cookie +EXPORT_SYMBOL_GPL vmlinux 0x546c5565 ppc_tb_freq +EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq +EXPORT_SYMBOL_GPL vmlinux 0x54c9308f tpm_pm_suspend +EXPORT_SYMBOL_GPL vmlinux 0x54e310f2 __pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x54fbfcb9 crypto_ahash_finup +EXPORT_SYMBOL_GPL vmlinux 0x55034160 bsg_unregister_queue +EXPORT_SYMBOL_GPL vmlinux 0x55191a4f debugfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x55296c9a inet_hash +EXPORT_SYMBOL_GPL vmlinux 0x5533f96f irq_find_host +EXPORT_SYMBOL_GPL vmlinux 0x5548fa35 crypto_larval_alloc +EXPORT_SYMBOL_GPL vmlinux 0x554e0f69 dma_mmap_coherent +EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x558e494c regcache_sync +EXPORT_SYMBOL_GPL vmlinux 0x55d17f47 sdev_evt_send_simple +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 0x56955c28 ata_link_abort +EXPORT_SYMBOL_GPL vmlinux 0x56aa4bad i2c_new_device +EXPORT_SYMBOL_GPL vmlinux 0x56d697ce cpu_up +EXPORT_SYMBOL_GPL vmlinux 0x56e75d47 klist_node_attached +EXPORT_SYMBOL_GPL vmlinux 0x570b224c of_get_nand_ecc_mode +EXPORT_SYMBOL_GPL vmlinux 0x570ff475 hvc_poll +EXPORT_SYMBOL_GPL vmlinux 0x5711029b platform_device_alloc +EXPORT_SYMBOL_GPL vmlinux 0x57231f45 ring_buffer_record_on +EXPORT_SYMBOL_GPL vmlinux 0x575c5f94 execute_in_process_context +EXPORT_SYMBOL_GPL vmlinux 0x578cfba9 crypto_shash_update +EXPORT_SYMBOL_GPL vmlinux 0x578d7e77 pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x579166cb device_find_child +EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all +EXPORT_SYMBOL_GPL vmlinux 0x57c4691b queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x582cfdf2 find_module +EXPORT_SYMBOL_GPL vmlinux 0x58413099 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x58457379 hwmon_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x585edb84 file_ra_state_init +EXPORT_SYMBOL_GPL vmlinux 0x5878185a pm_generic_poweroff_noirq +EXPORT_SYMBOL_GPL vmlinux 0x587a835e ps3_vuart_cancel_async +EXPORT_SYMBOL_GPL vmlinux 0x5892f832 release_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x58da9831 sk_unattached_filter_destroy +EXPORT_SYMBOL_GPL vmlinux 0x58e3ee4e dm_disk +EXPORT_SYMBOL_GPL vmlinux 0x58fd2b14 driver_find_device +EXPORT_SYMBOL_GPL vmlinux 0x58fe9409 rio_inb_pwrite_handler +EXPORT_SYMBOL_GPL vmlinux 0x5947abbe max77693_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x594eb8d0 regmap_get_val_bytes +EXPORT_SYMBOL_GPL vmlinux 0x5952439a unregister_spu_syscalls +EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user +EXPORT_SYMBOL_GPL vmlinux 0x59dadd3b ps3_vuart_port_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x59eae699 ring_buffer_read_prepare +EXPORT_SYMBOL_GPL vmlinux 0x5a368737 regulator_map_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0x5a426735 ref_module +EXPORT_SYMBOL_GPL vmlinux 0x5a48534a regulator_count_voltages +EXPORT_SYMBOL_GPL vmlinux 0x5a5b2476 unregister_pernet_device +EXPORT_SYMBOL_GPL vmlinux 0x5a62c9c0 pci_find_next_capability +EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a9811bf pmf_do_functions +EXPORT_SYMBOL_GPL vmlinux 0x5a984e6b sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x5aec3c51 rtc_class_close +EXPORT_SYMBOL_GPL vmlinux 0x5af2a664 devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0x5b3282b0 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x5b4e379c of_prop_next_u32 +EXPORT_SYMBOL_GPL vmlinux 0x5b940cbc ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x5bb906a7 wait_rcu_gp +EXPORT_SYMBOL_GPL vmlinux 0x5be8c80a platform_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5bfc03c3 unregister_keyboard_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5c0c5589 ata_sff_thaw +EXPORT_SYMBOL_GPL vmlinux 0x5c27b423 inverse_translate +EXPORT_SYMBOL_GPL vmlinux 0x5c2aae4a class_create_file +EXPORT_SYMBOL_GPL vmlinux 0x5c5174d1 usb_hcd_unmap_urb_setup_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x5c568b6b sdio_f0_readb +EXPORT_SYMBOL_GPL vmlinux 0x5c86f685 eeh_dn_check_failure +EXPORT_SYMBOL_GPL vmlinux 0x5c981ae4 dma_get_required_mask +EXPORT_SYMBOL_GPL vmlinux 0x5ca93699 tracepoint_iter_next +EXPORT_SYMBOL_GPL vmlinux 0x5ce5204a ip6_dst_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5cef4a98 pmf_put_function +EXPORT_SYMBOL_GPL vmlinux 0x5cf0264f pci_renumber_slot +EXPORT_SYMBOL_GPL vmlinux 0x5cf8a882 __tracepoint_block_rq_remap +EXPORT_SYMBOL_GPL vmlinux 0x5d0320a7 dev_forward_skb +EXPORT_SYMBOL_GPL vmlinux 0x5d12e48f input_event_to_user +EXPORT_SYMBOL_GPL vmlinux 0x5d25ec5b platform_get_irq +EXPORT_SYMBOL_GPL vmlinux 0x5d730e7b raw_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5d77952d hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x5da653b9 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x5dc4f2dc of_regulator_match +EXPORT_SYMBOL_GPL vmlinux 0x5dd67618 register_netevent_notifier +EXPORT_SYMBOL_GPL vmlinux 0x5de4fc35 class_compat_remove_link +EXPORT_SYMBOL_GPL vmlinux 0x5decb81d spu_init_channels +EXPORT_SYMBOL_GPL vmlinux 0x5e0120a8 ring_buffer_oldest_event_ts +EXPORT_SYMBOL_GPL vmlinux 0x5e16cc3a wakeup_source_create +EXPORT_SYMBOL_GPL vmlinux 0x5e2c5b9a bus_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5e51cd74 swiotlb_nr_tbl +EXPORT_SYMBOL_GPL vmlinux 0x5e66630e pci_enable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x5e73cf95 blk_queue_bypass_end +EXPORT_SYMBOL_GPL vmlinux 0x5e769986 ps3_os_area_get_av_multi_out +EXPORT_SYMBOL_GPL vmlinux 0x5ed929ef tps6586x_write +EXPORT_SYMBOL_GPL vmlinux 0x5ee7542e reserve_pmc_hardware +EXPORT_SYMBOL_GPL vmlinux 0x5f22e669 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x5f248f72 set_timer_slack +EXPORT_SYMBOL_GPL vmlinux 0x5f46d244 of_irq_map_raw +EXPORT_SYMBOL_GPL vmlinux 0x5f51f59a mm_kobj +EXPORT_SYMBOL_GPL vmlinux 0x5f6530c3 blkdev_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x5f779f17 rtc_device_unregister +EXPORT_SYMBOL_GPL vmlinux 0x5f79a98b __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0x5f9835cf datagram_send_ctl +EXPORT_SYMBOL_GPL vmlinux 0x5f9f2879 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5fa375b9 restore_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0x5fc1eb28 init_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x5fc58430 ata_bmdma_port_start32 +EXPORT_SYMBOL_GPL vmlinux 0x5fe12d8b crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0x5fed3ce3 led_classdev_resume +EXPORT_SYMBOL_GPL vmlinux 0x6004242a usb_free_coherent +EXPORT_SYMBOL_GPL vmlinux 0x602a993b rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x60369dc0 irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x6037bcd1 rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x60413492 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0x60467b06 btree_grim_visitor +EXPORT_SYMBOL_GPL vmlinux 0x604e8679 crypto_register_shash +EXPORT_SYMBOL_GPL vmlinux 0x60506751 unmap_kernel_range_noflush +EXPORT_SYMBOL_GPL vmlinux 0x6052d2fe crypto_dequeue_request +EXPORT_SYMBOL_GPL vmlinux 0x605822a8 sysfs_chmod_file +EXPORT_SYMBOL_GPL vmlinux 0x608a974a ps3_vuart_read_async +EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL_GPL vmlinux 0x60e147b8 pm_runtime_irq_safe +EXPORT_SYMBOL_GPL vmlinux 0x6114d8a4 regulator_force_disable +EXPORT_SYMBOL_GPL vmlinux 0x6130e589 debugfs_create_regset32 +EXPORT_SYMBOL_GPL vmlinux 0x61522102 simple_attr_open +EXPORT_SYMBOL_GPL vmlinux 0x61634f05 lock_flocks +EXPORT_SYMBOL_GPL vmlinux 0x619ae9d3 crypto_register_ahash +EXPORT_SYMBOL_GPL vmlinux 0x61a90c54 klist_add_head +EXPORT_SYMBOL_GPL vmlinux 0x61af26f6 inet_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0x61b827f0 crypto_larval_kill +EXPORT_SYMBOL_GPL vmlinux 0x61d094a5 pci_enable_ats +EXPORT_SYMBOL_GPL vmlinux 0x61e15b87 rio_release_inb_dbell +EXPORT_SYMBOL_GPL vmlinux 0x61e33ed7 pci_pasid_features +EXPORT_SYMBOL_GPL vmlinux 0x61ea0881 pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x61f236f2 max8997_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x620d9102 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x620f1763 vfs_setlease +EXPORT_SYMBOL_GPL vmlinux 0x6224a9c7 __pm_runtime_set_status +EXPORT_SYMBOL_GPL vmlinux 0x6231e615 __lock_page_killable +EXPORT_SYMBOL_GPL vmlinux 0x62680740 pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x62842767 udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x62aa8757 ahash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0x62b1af59 tty_standard_install +EXPORT_SYMBOL_GPL vmlinux 0x62e6c22f __dma_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x630e2cf2 class_find_device +EXPORT_SYMBOL_GPL vmlinux 0x63205de1 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0x632081b9 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x6335b97f __online_page_set_limits +EXPORT_SYMBOL_GPL vmlinux 0x635fc84f ata_cable_80wire +EXPORT_SYMBOL_GPL vmlinux 0x6377d40c register_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x639bcbc2 rtc_initialize_alarm +EXPORT_SYMBOL_GPL vmlinux 0x63a9871d blkcg_activate_policy +EXPORT_SYMBOL_GPL vmlinux 0x63b0d7c4 bus_get_device_klist +EXPORT_SYMBOL_GPL vmlinux 0x63b2dc48 devm_kzalloc +EXPORT_SYMBOL_GPL vmlinux 0x63cad902 usb_is_intel_switchable_xhci +EXPORT_SYMBOL_GPL vmlinux 0x648580e5 PageHuge +EXPORT_SYMBOL_GPL vmlinux 0x648e682c pm_runtime_no_callbacks +EXPORT_SYMBOL_GPL vmlinux 0x649ab39c of_rescan_bus +EXPORT_SYMBOL_GPL vmlinux 0x64a8bd5f bus_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x64c75aa0 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0x64e863bf blk_insert_cloned_request +EXPORT_SYMBOL_GPL vmlinux 0x64fc5982 regmap_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x64ffa402 bus_get_kset +EXPORT_SYMBOL_GPL vmlinux 0x65147685 rdev_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6540e2f1 spi_bus_lock +EXPORT_SYMBOL_GPL vmlinux 0x65727f45 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x659c0f2b __init_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x65a0b74c __cpufreq_driver_target +EXPORT_SYMBOL_GPL vmlinux 0x65b93c01 rio_release_outb_mbox +EXPORT_SYMBOL_GPL vmlinux 0x65bbbc78 schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65d6d0f0 gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x65dbd34f module_mutex +EXPORT_SYMBOL_GPL vmlinux 0x65e58f08 platform_device_register_full +EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol +EXPORT_SYMBOL_GPL vmlinux 0x66343676 seq_open_net +EXPORT_SYMBOL_GPL vmlinux 0x6639384f hrtimer_try_to_cancel +EXPORT_SYMBOL_GPL vmlinux 0x667a812c ps3av_set_video_mode +EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6685c934 wm8400_block_read +EXPORT_SYMBOL_GPL vmlinux 0x6697fb75 ata_sas_port_alloc +EXPORT_SYMBOL_GPL vmlinux 0x66a20f74 cpuidle_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x66afb53b unix_table_lock +EXPORT_SYMBOL_GPL vmlinux 0x66b2a859 nr_free_buffer_pages +EXPORT_SYMBOL_GPL vmlinux 0x66d87d38 symbol_put_addr +EXPORT_SYMBOL_GPL vmlinux 0x66f267fe ata_port_abort +EXPORT_SYMBOL_GPL vmlinux 0x670dd9ed irq_linear_revmap +EXPORT_SYMBOL_GPL vmlinux 0x6753711c regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x6761c088 crypto_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x6776e87b account_system_vtime +EXPORT_SYMBOL_GPL vmlinux 0x6794ba40 bsg_remove_queue +EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits +EXPORT_SYMBOL_GPL vmlinux 0x67cb3bf5 pci_assign_unassigned_bridge_resources +EXPORT_SYMBOL_GPL vmlinux 0x67e7dd59 of_address_to_resource +EXPORT_SYMBOL_GPL vmlinux 0x67f2648a inet_hashinfo_init +EXPORT_SYMBOL_GPL vmlinux 0x6804ca16 shash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x6805331d platform_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x6813c980 blkcg_policy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x682e5dcb agp_remove_bridge +EXPORT_SYMBOL_GPL vmlinux 0x68429b7e usb_get_from_anchor +EXPORT_SYMBOL_GPL vmlinux 0x686e43e8 relay_open +EXPORT_SYMBOL_GPL vmlinux 0x6887054e devm_regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0x6892088c unregister_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x6896d639 sata_set_spd +EXPORT_SYMBOL_GPL vmlinux 0x689aea0c cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x68fe4907 perf_event_release_kernel +EXPORT_SYMBOL_GPL vmlinux 0x6921aa34 compat_put_timeval +EXPORT_SYMBOL_GPL vmlinux 0x6923ce63 irq_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x692de3f1 transport_configure_device +EXPORT_SYMBOL_GPL vmlinux 0x69326ea2 crypto_mod_get +EXPORT_SYMBOL_GPL vmlinux 0x69328f79 tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x69447467 ring_buffer_write +EXPORT_SYMBOL_GPL vmlinux 0x69790ef6 __init_new_context +EXPORT_SYMBOL_GPL vmlinux 0x697cbbb4 threads_per_core +EXPORT_SYMBOL_GPL vmlinux 0x698a899f ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0x698be398 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x698cbdc7 cpufreq_frequency_table_cpuinfo +EXPORT_SYMBOL_GPL vmlinux 0x69af4992 con_debug_enter +EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr +EXPORT_SYMBOL_GPL vmlinux 0x69e9a2cb ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0x69ea205a tty_buffer_request_room +EXPORT_SYMBOL_GPL vmlinux 0x6a082c73 pm_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x6a5fb566 rcu_sched_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x6a6cafd2 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x6a7dc4d5 pci_hp_change_slot_info +EXPORT_SYMBOL_GPL vmlinux 0x6a80d4a9 scsi_autopm_put_device +EXPORT_SYMBOL_GPL vmlinux 0x6a832114 led_trigger_store +EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start +EXPORT_SYMBOL_GPL vmlinux 0x6a966670 usb_disable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0x6ab922b2 regulator_get_drvdata +EXPORT_SYMBOL_GPL vmlinux 0x6aba167a regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x6acb8d84 ppc64_caches +EXPORT_SYMBOL_GPL vmlinux 0x6b29a1fa ring_buffer_event_length +EXPORT_SYMBOL_GPL vmlinux 0x6b6ef5e1 tcp_set_state +EXPORT_SYMBOL_GPL vmlinux 0x6b8ef5ef cpci_hp_unregister_bus +EXPORT_SYMBOL_GPL vmlinux 0x6b93bf60 inet_twdr_twkill_work +EXPORT_SYMBOL_GPL vmlinux 0x6bae830c inet6_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x6bfb84dd fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x6c0b02f3 crypto_lookup_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x6c109a1d pci_load_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x6c1cf4e0 tcp_reno_ssthresh +EXPORT_SYMBOL_GPL vmlinux 0x6c4362a9 sk_setup_caps +EXPORT_SYMBOL_GPL vmlinux 0x6c442260 tty_mode_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x6c49c4f2 clockevents_notify +EXPORT_SYMBOL_GPL vmlinux 0x6c7ca1ca blkg_lookup_create +EXPORT_SYMBOL_GPL vmlinux 0x6c7e0303 tps6586x_reads +EXPORT_SYMBOL_GPL vmlinux 0x6c875c0b spu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0x6c8d5ae8 __gpio_get_value +EXPORT_SYMBOL_GPL vmlinux 0x6cdcbd2a __audit_inode_child +EXPORT_SYMBOL_GPL vmlinux 0x6cefbd04 pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6d10241b pseries_ioei_notifier_list +EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list +EXPORT_SYMBOL_GPL vmlinux 0x6d3065f1 fl6_sock_lookup +EXPORT_SYMBOL_GPL vmlinux 0x6d63fcdf crypto_alloc_shash +EXPORT_SYMBOL_GPL vmlinux 0x6d6d1273 pm_generic_freeze +EXPORT_SYMBOL_GPL vmlinux 0x6d8a65b5 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x6dba7721 of_property_read_string +EXPORT_SYMBOL_GPL vmlinux 0x6e1595a0 sdio_claim_host +EXPORT_SYMBOL_GPL vmlinux 0x6e379526 kernstart_addr +EXPORT_SYMBOL_GPL vmlinux 0x6e38e20a ps3_mmio_region_create +EXPORT_SYMBOL_GPL vmlinux 0x6e5d81a1 wm8994_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base +EXPORT_SYMBOL_GPL vmlinux 0x6e9c6188 __ata_ehi_push_desc +EXPORT_SYMBOL_GPL vmlinux 0x6f1ee69e kgdb_unregister_io_module +EXPORT_SYMBOL_GPL vmlinux 0x6f89da26 ata_sff_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x6f9ea6ed adp5520_read +EXPORT_SYMBOL_GPL vmlinux 0x6fbc719c pmf_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0x6fe3d8cf ktime_add_safe +EXPORT_SYMBOL_GPL vmlinux 0x6ff4e8be ata_sff_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng +EXPORT_SYMBOL_GPL vmlinux 0x703189d7 regulator_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x70512233 bsg_goose_queue +EXPORT_SYMBOL_GPL vmlinux 0x706b3a33 cpufreq_frequency_table_get_attr +EXPORT_SYMBOL_GPL vmlinux 0x707ff1bb ata_xfer_mask2mode +EXPORT_SYMBOL_GPL vmlinux 0x70a78bce usb_alloc_coherent +EXPORT_SYMBOL_GPL vmlinux 0x70ad3fc6 remove_memory +EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq +EXPORT_SYMBOL_GPL vmlinux 0x70e86827 usb_hcd_pci_probe +EXPORT_SYMBOL_GPL vmlinux 0x71099a88 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0x711fd905 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x71268db5 led_classdev_suspend +EXPORT_SYMBOL_GPL vmlinux 0x7159e7e6 usb_autopm_get_interface_async +EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized +EXPORT_SYMBOL_GPL vmlinux 0x7186435d fuse_direct_io +EXPORT_SYMBOL_GPL vmlinux 0x71b01ced clockevents_register_device +EXPORT_SYMBOL_GPL vmlinux 0x71d2ddfc init_srcu_struct +EXPORT_SYMBOL_GPL vmlinux 0x71dc9998 crypto_il_tab +EXPORT_SYMBOL_GPL vmlinux 0x722d6f14 crypto_attr_alg2 +EXPORT_SYMBOL_GPL vmlinux 0x723e83f4 inet_csk_bind_conflict +EXPORT_SYMBOL_GPL vmlinux 0x724ee60c dev_get_regmap +EXPORT_SYMBOL_GPL vmlinux 0x72741f25 trace_vbprintk +EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727df288 tty_get_pgrp +EXPORT_SYMBOL_GPL vmlinux 0x72889d5e ata_do_eh +EXPORT_SYMBOL_GPL vmlinux 0x728ce3e9 led_classdev_register +EXPORT_SYMBOL_GPL vmlinux 0x72a93e9b device_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x72b212ff regulator_bulk_enable +EXPORT_SYMBOL_GPL vmlinux 0x732fd663 sdio_align_size +EXPORT_SYMBOL_GPL vmlinux 0x7339d5e6 __css_tryget +EXPORT_SYMBOL_GPL vmlinux 0x73546799 __blkdev_driver_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x737c484c pci_disable_ats +EXPORT_SYMBOL_GPL vmlinux 0x738977cf mddev_check_plugged +EXPORT_SYMBOL_GPL vmlinux 0x738dae87 of_property_read_u64 +EXPORT_SYMBOL_GPL vmlinux 0x739aa1a1 pmac_i2c_setmode +EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports +EXPORT_SYMBOL_GPL vmlinux 0x73c0d625 ata_eh_qc_retry +EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy +EXPORT_SYMBOL_GPL vmlinux 0x73cc1fa7 init_user_ns +EXPORT_SYMBOL_GPL vmlinux 0x73d69364 ring_buffer_change_overwrite +EXPORT_SYMBOL_GPL vmlinux 0x73e03b9a __hvc_resize +EXPORT_SYMBOL_GPL vmlinux 0x7412c4fe regmap_update_bits_check +EXPORT_SYMBOL_GPL vmlinux 0x742d7a69 dm_underlying_device_busy +EXPORT_SYMBOL_GPL vmlinux 0x7434aefe sdio_readb +EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0x74567a3e usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x748d801a pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0x74954462 timecounter_read +EXPORT_SYMBOL_GPL vmlinux 0x74a7400a wm831x_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x74abdafa task_handoff_register +EXPORT_SYMBOL_GPL vmlinux 0x74aebc2e crypto_spawn_tfm +EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on +EXPORT_SYMBOL_GPL vmlinux 0x74cda3e3 crypto_hash_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x74d198f9 pci_bus_max_busnr +EXPORT_SYMBOL_GPL vmlinux 0x75083360 xfrm_audit_state_delete +EXPORT_SYMBOL_GPL vmlinux 0x750c1ddf scsi_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 +EXPORT_SYMBOL_GPL vmlinux 0x751c254f subsys_interface_register +EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status +EXPORT_SYMBOL_GPL vmlinux 0x7563a430 posix_timers_register_clock +EXPORT_SYMBOL_GPL vmlinux 0x7572b2a2 class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x757b49d2 kmsg_dump_get_line +EXPORT_SYMBOL_GPL vmlinux 0x75859046 __class_register +EXPORT_SYMBOL_GPL vmlinux 0x75882c20 crypto_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x75a0f165 cpufreq_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x75ba6427 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0x75d17d0b pmac_i2c_open +EXPORT_SYMBOL_GPL vmlinux 0x75e6e037 hash_page +EXPORT_SYMBOL_GPL vmlinux 0x75e8f3c3 crypto_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x761fe0a6 pci_set_cacheline_size +EXPORT_SYMBOL_GPL vmlinux 0x76296710 raw_seq_open +EXPORT_SYMBOL_GPL vmlinux 0x763332de cpuidle_get_driver +EXPORT_SYMBOL_GPL vmlinux 0x766c350b get_task_pid +EXPORT_SYMBOL_GPL vmlinux 0x767c3892 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0x7685d679 locks_alloc_lock +EXPORT_SYMBOL_GPL vmlinux 0x76cb028c ahash_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x76da091a pcibios_add_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0x76db895f srcu_barrier +EXPORT_SYMBOL_GPL vmlinux 0x7758a2af md_rdev_clear +EXPORT_SYMBOL_GPL vmlinux 0x775abbe4 ata_std_postreset +EXPORT_SYMBOL_GPL vmlinux 0x77d382b6 devres_add +EXPORT_SYMBOL_GPL vmlinux 0x77fdb605 md_stop +EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress +EXPORT_SYMBOL_GPL vmlinux 0x78bd7973 task_active_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x78e45ceb wm8350_block_write +EXPORT_SYMBOL_GPL vmlinux 0x78ea91a2 crypto_hash_walk_first +EXPORT_SYMBOL_GPL vmlinux 0x7900c16d ata_bmdma_port_start +EXPORT_SYMBOL_GPL vmlinux 0x7901a95d pcie_update_link_speed +EXPORT_SYMBOL_GPL vmlinux 0x791bd55b ip6_append_data +EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off +EXPORT_SYMBOL_GPL vmlinux 0x794ad4fa ata_cable_sata +EXPORT_SYMBOL_GPL vmlinux 0x795da166 user_destroy +EXPORT_SYMBOL_GPL vmlinux 0x796c2d48 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x7999f296 devres_remove +EXPORT_SYMBOL_GPL vmlinux 0x799d5c49 bus_sort_breadthfirst +EXPORT_SYMBOL_GPL vmlinux 0x79c1ce39 raw_seq_start +EXPORT_SYMBOL_GPL vmlinux 0x79cd1219 sdio_disable_func +EXPORT_SYMBOL_GPL vmlinux 0x79f84add pm_generic_thaw +EXPORT_SYMBOL_GPL vmlinux 0x7a2e4b44 ezx_pcap_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x7a90d1fc map_vm_area +EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter +EXPORT_SYMBOL_GPL vmlinux 0x7aa027e6 srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ac4d22a sata_pmp_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x7acf8146 regmap_write +EXPORT_SYMBOL_GPL vmlinux 0x7ae1ae8e cpufreq_frequency_table_put_attr +EXPORT_SYMBOL_GPL vmlinux 0x7af3214a of_property_read_u32_array +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 0x7b2cd9b3 inet_twsk_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7b356d8e wm8350_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x7b471981 class_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7b5243ac __netpoll_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x7b82f112 crypto_nivaead_type +EXPORT_SYMBOL_GPL vmlinux 0x7b8b39e7 ata_sff_softreset +EXPORT_SYMBOL_GPL vmlinux 0x7b9aaa79 fb_ddc_read +EXPORT_SYMBOL_GPL vmlinux 0x7bb9398f platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7bda18bb mnt_drop_write +EXPORT_SYMBOL_GPL vmlinux 0x7c0d296f spi_new_device +EXPORT_SYMBOL_GPL vmlinux 0x7c235886 ata_pci_bmdma_clear_simplex +EXPORT_SYMBOL_GPL vmlinux 0x7c6b8d30 usb_poison_anchored_urbs +EXPORT_SYMBOL_GPL vmlinux 0x7c861b18 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x7c95a43e task_current_syscall +EXPORT_SYMBOL_GPL vmlinux 0x7ca27a5c bsg_register_queue +EXPORT_SYMBOL_GPL vmlinux 0x7caa1080 crypto_shash_finup +EXPORT_SYMBOL_GPL vmlinux 0x7cc1b7fd max77693_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq +EXPORT_SYMBOL_GPL vmlinux 0x7d1294b4 srcu_init_notifier_head +EXPORT_SYMBOL_GPL vmlinux 0x7d4e4d7e usb_hcd_is_primary_hcd +EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq +EXPORT_SYMBOL_GPL vmlinux 0x7d5a716f ata_pci_bmdma_init_one +EXPORT_SYMBOL_GPL vmlinux 0x7d8dbf30 power_supply_set_battery_charged +EXPORT_SYMBOL_GPL vmlinux 0x7dab26b6 wm831x_isinkv_values +EXPORT_SYMBOL_GPL vmlinux 0x7db4b3f0 usb_control_msg +EXPORT_SYMBOL_GPL vmlinux 0x7dc5d0b6 crypto_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x7defa546 get_task_mm +EXPORT_SYMBOL_GPL vmlinux 0x7e1183c9 async_schedule +EXPORT_SYMBOL_GPL vmlinux 0x7e17ba7b klist_iter_exit +EXPORT_SYMBOL_GPL vmlinux 0x7e275ea8 scsi_complete_async_scans +EXPORT_SYMBOL_GPL vmlinux 0x7e446963 netdev_rx_handler_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time +EXPORT_SYMBOL_GPL vmlinux 0x7e7e76e0 cred_to_ucred +EXPORT_SYMBOL_GPL vmlinux 0x7e8e4d72 tty_ldisc_ref +EXPORT_SYMBOL_GPL vmlinux 0x7ea1a2bc probe_kernel_write +EXPORT_SYMBOL_GPL vmlinux 0x7eb721f2 led_trigger_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7eca4b17 tty_ldisc_deref +EXPORT_SYMBOL_GPL vmlinux 0x7f008202 btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0x7f2483a3 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x7f2fa695 exportfs_encode_fh +EXPORT_SYMBOL_GPL vmlinux 0x7f46c8b2 fuse_conn_kill +EXPORT_SYMBOL_GPL vmlinux 0x7f52c522 ps3av_get_mode +EXPORT_SYMBOL_GPL vmlinux 0x7f7bc710 klist_next +EXPORT_SYMBOL_GPL vmlinux 0x7fa42426 pci_store_saved_state +EXPORT_SYMBOL_GPL vmlinux 0x7fb4bc17 register_kretprobes +EXPORT_SYMBOL_GPL vmlinux 0x7fe3e7d6 tpm_show_temp_deactivated +EXPORT_SYMBOL_GPL vmlinux 0x7ff056ea inet_hash_connect +EXPORT_SYMBOL_GPL vmlinux 0x7ff10ccf raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x7ffc8718 gpio_set_debounce +EXPORT_SYMBOL_GPL vmlinux 0x800cb87c proc_net_fops_create +EXPORT_SYMBOL_GPL vmlinux 0x801c72ee sysfs_create_files +EXPORT_SYMBOL_GPL vmlinux 0x80289667 inet_csk_get_port +EXPORT_SYMBOL_GPL vmlinux 0x803c34bc remove_phb_dynamic +EXPORT_SYMBOL_GPL vmlinux 0x8048edc8 bio_blkcg +EXPORT_SYMBOL_GPL vmlinux 0x80507f72 ps3av_audio_mute_analog +EXPORT_SYMBOL_GPL vmlinux 0x806b925f usb_put_hcd +EXPORT_SYMBOL_GPL vmlinux 0x80809890 dma_buf_kmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested +EXPORT_SYMBOL_GPL vmlinux 0x80cc5e48 user_instantiate +EXPORT_SYMBOL_GPL vmlinux 0x80d410a6 ip6_push_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free +EXPORT_SYMBOL_GPL vmlinux 0x80f3268f __trace_printk +EXPORT_SYMBOL_GPL vmlinux 0x81344d7a ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8149ea54 ata_timing_find_mode +EXPORT_SYMBOL_GPL vmlinux 0x815e904f usb_add_hcd +EXPORT_SYMBOL_GPL vmlinux 0x822515e5 __ata_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0x8226642f __gpio_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x825f0828 timerqueue_iterate_next +EXPORT_SYMBOL_GPL vmlinux 0x82939ebd rcu_batches_completed_sched +EXPORT_SYMBOL_GPL vmlinux 0x82964eeb page_mkclean +EXPORT_SYMBOL_GPL vmlinux 0x829b5f2c skcipher_geniv_init +EXPORT_SYMBOL_GPL vmlinux 0x82a48f9e pmac_low_i2c_lock +EXPORT_SYMBOL_GPL vmlinux 0x82a7aaa0 sock_diag_nlsk +EXPORT_SYMBOL_GPL vmlinux 0x82adf995 dm_set_device_limits +EXPORT_SYMBOL_GPL vmlinux 0x82bf1606 usb_ep0_reinit +EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure +EXPORT_SYMBOL_GPL vmlinux 0x82ef482e blkg_conf_finish +EXPORT_SYMBOL_GPL vmlinux 0x83029e1c vga_default_device +EXPORT_SYMBOL_GPL vmlinux 0x83149254 ata_bmdma_dumb_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0x838b13e7 ring_buffer_free +EXPORT_SYMBOL_GPL vmlinux 0x83c1b364 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x83e405d4 pm_generic_resume_noirq +EXPORT_SYMBOL_GPL vmlinux 0x844f2a8a tty_find_polling_driver +EXPORT_SYMBOL_GPL vmlinux 0x845c7d77 rtc_update_irq +EXPORT_SYMBOL_GPL vmlinux 0x84608817 hrtimer_forward +EXPORT_SYMBOL_GPL vmlinux 0x8487a2b6 flush_work +EXPORT_SYMBOL_GPL vmlinux 0x84938add __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0x84a375ca use_cop +EXPORT_SYMBOL_GPL vmlinux 0x84e70dbe __remove_pages +EXPORT_SYMBOL_GPL vmlinux 0x85050965 __irq_alloc_descs +EXPORT_SYMBOL_GPL vmlinux 0x85216155 ezx_pcap_read +EXPORT_SYMBOL_GPL vmlinux 0x85232b56 cgroup_taskset_first +EXPORT_SYMBOL_GPL vmlinux 0x852c0cf3 spi_sync +EXPORT_SYMBOL_GPL vmlinux 0x85393081 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x85478a0b inet6_hash_frag +EXPORT_SYMBOL_GPL vmlinux 0x8564d703 led_trigger_set +EXPORT_SYMBOL_GPL vmlinux 0x85953657 crypto_tfm_in_queue +EXPORT_SYMBOL_GPL vmlinux 0x85998847 __blk_end_request_err +EXPORT_SYMBOL_GPL vmlinux 0x85c10896 rcu_batches_completed_bh +EXPORT_SYMBOL_GPL vmlinux 0x85c7f674 ring_buffer_normalize_time_stamp +EXPORT_SYMBOL_GPL vmlinux 0x8607ae07 sdio_set_block_size +EXPORT_SYMBOL_GPL vmlinux 0x8611092b pci_hp_create_module_link +EXPORT_SYMBOL_GPL vmlinux 0x86169b34 tcp_get_info +EXPORT_SYMBOL_GPL vmlinux 0x867002ec rio_get_device +EXPORT_SYMBOL_GPL vmlinux 0x867f6269 crypto_ablkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get +EXPORT_SYMBOL_GPL vmlinux 0x86c3a3a7 vma_kernel_pagesize +EXPORT_SYMBOL_GPL vmlinux 0x86ca6c79 driver_attach +EXPORT_SYMBOL_GPL vmlinux 0x86ec85dd usb_root_hub_lost_power +EXPORT_SYMBOL_GPL vmlinux 0x86ef4d60 ata_pci_bmdma_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited +EXPORT_SYMBOL_GPL vmlinux 0x86f8c910 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x87038c7d securityfs_remove +EXPORT_SYMBOL_GPL vmlinux 0x873fbaea edac_atomic_assert_error +EXPORT_SYMBOL_GPL vmlinux 0x87754115 raw_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x8782f3f6 flush_kthread_worker +EXPORT_SYMBOL_GPL vmlinux 0x8796d5ba ata_slave_link_init +EXPORT_SYMBOL_GPL vmlinux 0x87af9a1d pcibios_map_io_space +EXPORT_SYMBOL_GPL vmlinux 0x87c8d758 tps65090_write +EXPORT_SYMBOL_GPL vmlinux 0x87dda3d5 fuse_request_send +EXPORT_SYMBOL_GPL vmlinux 0x88008738 power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x8810ad5e crypto_xor +EXPORT_SYMBOL_GPL vmlinux 0x8816b6e2 __ablkcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0x8876745b __srcu_read_lock +EXPORT_SYMBOL_GPL vmlinux 0x887c1a8c stmpe_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active +EXPORT_SYMBOL_GPL vmlinux 0x88b03ef1 cgroup_path +EXPORT_SYMBOL_GPL vmlinux 0x88c1415b blkcipher_walk_virt_block +EXPORT_SYMBOL_GPL vmlinux 0x88d00c90 blk_trace_remove +EXPORT_SYMBOL_GPL vmlinux 0x88eb390c tcp_reno_min_cwnd +EXPORT_SYMBOL_GPL vmlinux 0x88eba814 mmu_psize_defs +EXPORT_SYMBOL_GPL vmlinux 0x88f5540c usb_deregister_device_driver +EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x89592582 class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x899a1de2 ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0x899f197c dm_path_uevent +EXPORT_SYMBOL_GPL vmlinux 0x89c5e43b inet_getpeer +EXPORT_SYMBOL_GPL vmlinux 0x89ce4639 debugfs_create_x64 +EXPORT_SYMBOL_GPL vmlinux 0x89d4dbaf usb_usual_check_type +EXPORT_SYMBOL_GPL vmlinux 0x89de47d7 tpm_dev_vendor_release +EXPORT_SYMBOL_GPL vmlinux 0x89e14070 relay_reset +EXPORT_SYMBOL_GPL vmlinux 0x89ff43f6 init_uts_ns +EXPORT_SYMBOL_GPL vmlinux 0x8a14a747 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x8a2587ef ps3_vuart_port_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x8a2f3399 security_inode_create +EXPORT_SYMBOL_GPL vmlinux 0x8a478c8a pSeries_reconfig_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8a5c7a80 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x8a85f388 ata_pci_device_do_resume +EXPORT_SYMBOL_GPL vmlinux 0x8ab52b91 dev_attr_em_message +EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files +EXPORT_SYMBOL_GPL vmlinux 0x8ae3ae12 __module_address +EXPORT_SYMBOL_GPL vmlinux 0x8aebcd81 disk_part_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x8af8727a rio_mport_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0x8af93166 regcache_mark_dirty +EXPORT_SYMBOL_GPL vmlinux 0x8b090530 kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0x8b14db3d class_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8b3586a4 do_unregister_con_driver +EXPORT_SYMBOL_GPL vmlinux 0x8b66f67b gen_pool_avail +EXPORT_SYMBOL_GPL vmlinux 0x8b70e8ea __wake_up_sync_key +EXPORT_SYMBOL_GPL vmlinux 0x8b752ac1 ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x8bc0ad1b uart_console_write +EXPORT_SYMBOL_GPL vmlinux 0x8be4e744 md_do_sync +EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue +EXPORT_SYMBOL_GPL vmlinux 0x8c2688eb ata_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0x8c283411 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x8c30a719 get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0x8c3a867f ps3_vuart_write +EXPORT_SYMBOL_GPL vmlinux 0x8c3bccab agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x8c785f7a usb_remove_hcd +EXPORT_SYMBOL_GPL vmlinux 0x8c7cf6d0 __pci_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x8c7d7103 usb_bulk_msg +EXPORT_SYMBOL_GPL vmlinux 0x8cc32c1f tps6586x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x8cd4c4ff dev_pm_qos_add_request +EXPORT_SYMBOL_GPL vmlinux 0x8d14f8ca pmac_i2c_get_controller +EXPORT_SYMBOL_GPL vmlinux 0x8d17ea45 regulator_is_enabled_regmap +EXPORT_SYMBOL_GPL vmlinux 0x8d22c055 pci_cleanup_aer_uncorrect_error_status +EXPORT_SYMBOL_GPL vmlinux 0x8d53f4fe ata_base_port_ops +EXPORT_SYMBOL_GPL vmlinux 0x8d717a21 crypto_rng_type +EXPORT_SYMBOL_GPL vmlinux 0x8d7df5a0 event_storage_mutex +EXPORT_SYMBOL_GPL vmlinux 0x8d85367f smp_call_function_any +EXPORT_SYMBOL_GPL vmlinux 0x8d89fcb8 ata_pci_device_suspend +EXPORT_SYMBOL_GPL vmlinux 0x8d92637c unregister_kprobe +EXPORT_SYMBOL_GPL vmlinux 0x8d9a7285 blkio_subsys +EXPORT_SYMBOL_GPL vmlinux 0x8da16349 inet_csk_addr2sockaddr +EXPORT_SYMBOL_GPL vmlinux 0x8db00e6d __pm_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0x8db52929 rdev_set_badblocks +EXPORT_SYMBOL_GPL vmlinux 0x8dcef93c pm_generic_suspend_late +EXPORT_SYMBOL_GPL vmlinux 0x8ddea264 hrtimer_start +EXPORT_SYMBOL_GPL vmlinux 0x8df53a40 pci_scan_child_bus +EXPORT_SYMBOL_GPL vmlinux 0x8e493837 rtc_irq_register +EXPORT_SYMBOL_GPL vmlinux 0x8e4f8389 usb_hcd_map_urb_for_dma +EXPORT_SYMBOL_GPL vmlinux 0x8e682ab2 tc3589x_block_read +EXPORT_SYMBOL_GPL vmlinux 0x8e9d12d3 scsi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x8eb6b00a rdev_get_id +EXPORT_SYMBOL_GPL vmlinux 0x8eeb3b18 find_pid_ns +EXPORT_SYMBOL_GPL vmlinux 0x8f0740e9 cgroup_lock_live_group +EXPORT_SYMBOL_GPL vmlinux 0x8f1b0187 trace_event_raw_init +EXPORT_SYMBOL_GPL vmlinux 0x8f3268e0 pcibios_unmap_io_space +EXPORT_SYMBOL_GPL vmlinux 0x8f508e04 of_get_nand_bus_width +EXPORT_SYMBOL_GPL vmlinux 0x8f531502 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x8f656b27 s5m_bulk_read +EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative +EXPORT_SYMBOL_GPL vmlinux 0x8f6e2b45 debugfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x8f783679 device_set_wakeup_enable +EXPORT_SYMBOL_GPL vmlinux 0x8f803c58 rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x8f861bff rt_mutex_lock +EXPORT_SYMBOL_GPL vmlinux 0x8fa21fbb crypto_init_shash_spawn +EXPORT_SYMBOL_GPL vmlinux 0x8fec22d9 dma_wait_for_async_tx +EXPORT_SYMBOL_GPL vmlinux 0x8ff3b2c3 pci_configure_slot +EXPORT_SYMBOL_GPL vmlinux 0x901489b8 each_symbol_section +EXPORT_SYMBOL_GPL vmlinux 0x903c40d1 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x90416ee5 ata_link_online +EXPORT_SYMBOL_GPL vmlinux 0x9062023f usb_autopm_put_interface_no_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9062c322 ring_buffer_consume +EXPORT_SYMBOL_GPL vmlinux 0x90673390 spu_switch_event_register +EXPORT_SYMBOL_GPL vmlinux 0x90773f22 regulator_map_voltage_iterate +EXPORT_SYMBOL_GPL vmlinux 0x90a1004a crypto_has_alg +EXPORT_SYMBOL_GPL vmlinux 0x90a3f348 bus_rescan_devices +EXPORT_SYMBOL_GPL vmlinux 0x90a78931 crypto_givcipher_type +EXPORT_SYMBOL_GPL vmlinux 0x90a7a44d platform_bus +EXPORT_SYMBOL_GPL vmlinux 0x90ac8f42 blkg_conf_prep +EXPORT_SYMBOL_GPL vmlinux 0x90b8fe35 tpm_calc_ordinal_duration +EXPORT_SYMBOL_GPL vmlinux 0x90e8e9ae blk_trace_setup +EXPORT_SYMBOL_GPL vmlinux 0x913fcee9 wm8994_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x9159b9d6 profile_event_register +EXPORT_SYMBOL_GPL vmlinux 0x915fc4e5 cgroup_taskset_next +EXPORT_SYMBOL_GPL vmlinux 0x9164e7b5 __rio_local_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x918ad429 ring_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0x919686d4 proc_net_remove +EXPORT_SYMBOL_GPL vmlinux 0x91bdea43 sata_link_resume +EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq +EXPORT_SYMBOL_GPL vmlinux 0x91e1f1b0 usb_ifnum_to_if +EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl +EXPORT_SYMBOL_GPL vmlinux 0x92115b74 skcipher_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x92160367 wm831x_reg_unlock +EXPORT_SYMBOL_GPL vmlinux 0x9247df60 skb_morph +EXPORT_SYMBOL_GPL vmlinux 0x925f7b0b mmc_app_cmd +EXPORT_SYMBOL_GPL vmlinux 0x927d364a noop_backing_dev_info +EXPORT_SYMBOL_GPL vmlinux 0x929a8a43 swiotlb_map_page +EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add +EXPORT_SYMBOL_GPL vmlinux 0x930316c4 slice_get_unmapped_area +EXPORT_SYMBOL_GPL vmlinux 0x935bb3fa regulator_register +EXPORT_SYMBOL_GPL vmlinux 0x935feda0 swiotlb_bounce +EXPORT_SYMBOL_GPL vmlinux 0x93c1a9c2 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x93d2422d snmp_mib_free +EXPORT_SYMBOL_GPL vmlinux 0x941c3b5c pmac_i2c_get_adapter +EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put +EXPORT_SYMBOL_GPL vmlinux 0x943523bb part_round_stats +EXPORT_SYMBOL_GPL vmlinux 0x944bd8a3 register_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0x944efe8b ps3_open_hv_device +EXPORT_SYMBOL_GPL vmlinux 0x947c4a6d ata_sas_port_start +EXPORT_SYMBOL_GPL vmlinux 0x948ed64b get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu +EXPORT_SYMBOL_GPL vmlinux 0x94a68723 ata_scsi_slave_destroy +EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x9509aed7 exportfs_decode_fh +EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit +EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn +EXPORT_SYMBOL_GPL vmlinux 0x95681bae apply_to_page_range +EXPORT_SYMBOL_GPL vmlinux 0x956a91ba gpio_get_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x956f802d __mnt_is_readonly +EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free +EXPORT_SYMBOL_GPL vmlinux 0x95cbef51 macio_find +EXPORT_SYMBOL_GPL vmlinux 0x95e9cf56 regmap_raw_read +EXPORT_SYMBOL_GPL vmlinux 0x9621849f ring_buffer_event_data +EXPORT_SYMBOL_GPL vmlinux 0x965a78d5 threads_core_mask +EXPORT_SYMBOL_GPL vmlinux 0x96789136 inet_twsk_purge +EXPORT_SYMBOL_GPL vmlinux 0x96a06d17 irq_domain_generate_simple +EXPORT_SYMBOL_GPL vmlinux 0x96a11785 rio_mport_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x96a22790 vmcore_cleanup +EXPORT_SYMBOL_GPL vmlinux 0x96a2fc0d usb_get_dev +EXPORT_SYMBOL_GPL vmlinux 0x96cbcca5 ata_dev_disable +EXPORT_SYMBOL_GPL vmlinux 0x96cbcf31 pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0x96d1b55a ata_bmdma_stop +EXPORT_SYMBOL_GPL vmlinux 0x96dfffb4 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x9713ac34 posix_timer_event +EXPORT_SYMBOL_GPL vmlinux 0x971c677e sysfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0x973517b5 cpci_hp_register_bus +EXPORT_SYMBOL_GPL vmlinux 0x976a38e5 spi_register_master +EXPORT_SYMBOL_GPL vmlinux 0x977625cd disk_get_part +EXPORT_SYMBOL_GPL vmlinux 0x97a847d8 subsys_find_device_by_id +EXPORT_SYMBOL_GPL vmlinux 0x97b13dad __clocksource_register_scale +EXPORT_SYMBOL_GPL vmlinux 0x97b9ccdb perf_event_enable +EXPORT_SYMBOL_GPL vmlinux 0x97bccc01 device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x97f89df5 dma_buf_vunmap +EXPORT_SYMBOL_GPL vmlinux 0x98129ea0 __rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0x982b4b57 attribute_container_classdev_to_container +EXPORT_SYMBOL_GPL vmlinux 0x982cd711 dma_buf_export +EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick +EXPORT_SYMBOL_GPL vmlinux 0x983cdc26 da903x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc +EXPORT_SYMBOL_GPL vmlinux 0x986717d5 xfrm_audit_policy_delete +EXPORT_SYMBOL_GPL vmlinux 0x986a265f platform_device_add_resources +EXPORT_SYMBOL_GPL vmlinux 0x986f9d46 rio_request_dma +EXPORT_SYMBOL_GPL vmlinux 0x9881d99c regmap_bulk_write +EXPORT_SYMBOL_GPL vmlinux 0x988ab21c regmap_exit +EXPORT_SYMBOL_GPL vmlinux 0x98a213ff rtc_read_time +EXPORT_SYMBOL_GPL vmlinux 0x98bc2e42 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0x98c3dfb3 save_stack_trace_tsk +EXPORT_SYMBOL_GPL vmlinux 0x98cbe343 __inet_hash_nolisten +EXPORT_SYMBOL_GPL vmlinux 0x98cc564a regulator_set_voltage +EXPORT_SYMBOL_GPL vmlinux 0x98e8d28e hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9924c496 __usb_get_extra_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on +EXPORT_SYMBOL_GPL vmlinux 0x996f2ee4 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x99c475f6 cpci_hp_register_controller +EXPORT_SYMBOL_GPL vmlinux 0x99e95fbd usb_create_hcd +EXPORT_SYMBOL_GPL vmlinux 0x9a11a0fc crypto_attr_alg_name +EXPORT_SYMBOL_GPL vmlinux 0x9a49d937 __wake_up_locked_key +EXPORT_SYMBOL_GPL vmlinux 0x9a4b550b dm_dispatch_request +EXPORT_SYMBOL_GPL vmlinux 0x9a697be3 spi_master_suspend +EXPORT_SYMBOL_GPL vmlinux 0x9a89dbf7 lpddr2_jedec_min_tck +EXPORT_SYMBOL_GPL vmlinux 0x9aad6540 klist_iter_init +EXPORT_SYMBOL_GPL vmlinux 0x9abe843e wm8350_block_read +EXPORT_SYMBOL_GPL vmlinux 0x9ac024f9 swiotlb_tbl_unmap_single +EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9aca444b get_monotonic_boottime +EXPORT_SYMBOL_GPL vmlinux 0x9ae862a4 regmap_raw_write +EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty +EXPORT_SYMBOL_GPL vmlinux 0x9b3b737f register_kprobes +EXPORT_SYMBOL_GPL vmlinux 0x9b51e7f7 gpiochip_add +EXPORT_SYMBOL_GPL vmlinux 0x9b6e0634 bus_find_device +EXPORT_SYMBOL_GPL vmlinux 0x9b95b0dc bus_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0x9ba0501e unregister_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9ba2bb2b gpio_request_array +EXPORT_SYMBOL_GPL vmlinux 0x9bc1b0a5 relay_file_operations +EXPORT_SYMBOL_GPL vmlinux 0x9c3d3f02 adp5520_clr_bits +EXPORT_SYMBOL_GPL vmlinux 0x9c57e4c4 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x9cc099eb scsi_target_block +EXPORT_SYMBOL_GPL vmlinux 0x9cecd40e spu_invalidate_slbs +EXPORT_SYMBOL_GPL vmlinux 0x9d3fd717 dma_buf_attach +EXPORT_SYMBOL_GPL vmlinux 0x9d7e684a __add_pages +EXPORT_SYMBOL_GPL vmlinux 0x9d953b82 crypto_alloc_instance2 +EXPORT_SYMBOL_GPL vmlinux 0x9da8160b blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x9dccf88e aead_geniv_free +EXPORT_SYMBOL_GPL vmlinux 0x9dd0c584 unregister_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x9e332da5 user_update +EXPORT_SYMBOL_GPL vmlinux 0x9e532c5a register_jprobes +EXPORT_SYMBOL_GPL vmlinux 0x9e9d186e md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x9ea865cf blocking_notifier_chain_cond_register +EXPORT_SYMBOL_GPL vmlinux 0x9ed5dd6f cpu_subsys +EXPORT_SYMBOL_GPL vmlinux 0x9f02d6d7 cgroup_taskset_cur_cgroup +EXPORT_SYMBOL_GPL vmlinux 0x9f0eae4f timed_output_dev_register +EXPORT_SYMBOL_GPL vmlinux 0x9f356b1c tcp_reno_cong_avoid +EXPORT_SYMBOL_GPL vmlinux 0x9f40a6d6 async_synchronize_full_domain +EXPORT_SYMBOL_GPL vmlinux 0x9f799c13 i2c_lock_adapter +EXPORT_SYMBOL_GPL vmlinux 0x9fcbd9f0 perf_tp_event +EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0x9fdf0598 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm +EXPORT_SYMBOL_GPL vmlinux 0x9fedb268 __i2c_board_lock +EXPORT_SYMBOL_GPL vmlinux 0xa02dfd56 sysfs_schedule_callback +EXPORT_SYMBOL_GPL vmlinux 0xa03b0d3b sata_async_notification +EXPORT_SYMBOL_GPL vmlinux 0xa0553b46 fuse_sync_release +EXPORT_SYMBOL_GPL vmlinux 0xa0605d28 irq_domain_add_nomap +EXPORT_SYMBOL_GPL vmlinux 0xa067c378 ablkcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0xa07b9056 inet_csk_route_child_sock +EXPORT_SYMBOL_GPL vmlinux 0xa0916b7a unix_inq_len +EXPORT_SYMBOL_GPL vmlinux 0xa0a152c2 clone_private_mount +EXPORT_SYMBOL_GPL vmlinux 0xa0a27fff pci_address_to_pio +EXPORT_SYMBOL_GPL vmlinux 0xa0ad236c device_create_vargs +EXPORT_SYMBOL_GPL vmlinux 0xa0d648b5 crypto_init_spawn +EXPORT_SYMBOL_GPL vmlinux 0xa0dbc275 usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xa0e4635a md_ack_all_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xa1141d8e da903x_writes +EXPORT_SYMBOL_GPL vmlinux 0xa11a3da2 bsg_request_fn +EXPORT_SYMBOL_GPL vmlinux 0xa1310e04 regmap_init_i2c +EXPORT_SYMBOL_GPL vmlinux 0xa14129e2 pci_enable_pcie_error_reporting +EXPORT_SYMBOL_GPL vmlinux 0xa1422d91 skb_cow_data +EXPORT_SYMBOL_GPL vmlinux 0xa14cba82 vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0xa1b7b43b ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0xa1c8d841 blkcg_root +EXPORT_SYMBOL_GPL vmlinux 0xa1dc93e0 dm_suspended +EXPORT_SYMBOL_GPL vmlinux 0xa1e8f59f attribute_container_register +EXPORT_SYMBOL_GPL vmlinux 0xa1f63be0 __ip_route_output_key +EXPORT_SYMBOL_GPL vmlinux 0xa20b210b rio_request_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xa23b9a04 set_online_page_callback +EXPORT_SYMBOL_GPL vmlinux 0xa244ce37 tpm_show_pcrs +EXPORT_SYMBOL_GPL vmlinux 0xa2736e45 tps6586x_update +EXPORT_SYMBOL_GPL vmlinux 0xa28d11da cpu_remove_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xa28fe05c gpiochip_is_requested +EXPORT_SYMBOL_GPL vmlinux 0xa2b4dc65 inet6_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xa2b56c89 class_dev_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xa2bc56e5 attribute_container_find_class_device +EXPORT_SYMBOL_GPL vmlinux 0xa2d2375d cgroup_add_cftypes +EXPORT_SYMBOL_GPL vmlinux 0xa3060226 pci_test_config_bits +EXPORT_SYMBOL_GPL vmlinux 0xa36c76f2 sdio_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa3786f8c dev_pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xa3797dd9 key_type_user +EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa38a76db ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0xa3a04602 btree_geo64 +EXPORT_SYMBOL_GPL vmlinux 0xa3a2d9af walk_system_ram_range +EXPORT_SYMBOL_GPL vmlinux 0xa3b20a8a sync_page_io +EXPORT_SYMBOL_GPL vmlinux 0xa3e7c113 ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0xa423bfd1 pstore_register +EXPORT_SYMBOL_GPL vmlinux 0xa42a58ea rio_release_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xa4308ae7 ata_ehi_clear_desc +EXPORT_SYMBOL_GPL vmlinux 0xa448f400 dma_buf_kunmap_atomic +EXPORT_SYMBOL_GPL vmlinux 0xa453e6fa crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx +EXPORT_SYMBOL_GPL vmlinux 0xa494c752 sata_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xa49b1ded device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xa4bae761 crypto_init_spawn2 +EXPORT_SYMBOL_GPL vmlinux 0xa4c55e9c devm_kfree +EXPORT_SYMBOL_GPL vmlinux 0xa54238b5 debugfs_create_x8 +EXPORT_SYMBOL_GPL vmlinux 0xa54f1368 wm831x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xa569ce1f pci_cfg_access_trylock +EXPORT_SYMBOL_GPL vmlinux 0xa56ca855 tracepoint_iter_stop +EXPORT_SYMBOL_GPL vmlinux 0xa5b00659 ppc_proc_freq +EXPORT_SYMBOL_GPL vmlinux 0xa5b0f2ce regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa5c5f60a spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full +EXPORT_SYMBOL_GPL vmlinux 0xa61c48ca usb_unlocked_enable_lpm +EXPORT_SYMBOL_GPL vmlinux 0xa625110d kmsg_dump_rewind +EXPORT_SYMBOL_GPL vmlinux 0xa67d89eb bio_alloc_mddev +EXPORT_SYMBOL_GPL vmlinux 0xa6a0a273 max77693_write_reg +EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end +EXPORT_SYMBOL_GPL vmlinux 0xa6dcb386 fuse_put_request +EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync +EXPORT_SYMBOL_GPL vmlinux 0xa719b6ef bus_find_device_by_name +EXPORT_SYMBOL_GPL vmlinux 0xa71bf4cf rio_dev_get +EXPORT_SYMBOL_GPL vmlinux 0xa7316df9 rio_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xa746118b pm_generic_poweroff +EXPORT_SYMBOL_GPL vmlinux 0xa75e357a evm_verifyxattr +EXPORT_SYMBOL_GPL vmlinux 0xa7814ea0 tps65912_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xa781da79 shash_free_instance +EXPORT_SYMBOL_GPL vmlinux 0xa7f92105 add_uevent_var +EXPORT_SYMBOL_GPL vmlinux 0xa82b15df __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa84888ca simple_attr_read +EXPORT_SYMBOL_GPL vmlinux 0xa84c9add crypto_create_tfm +EXPORT_SYMBOL_GPL vmlinux 0xa858ab2c security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0xa89e8399 __pneigh_lookup +EXPORT_SYMBOL_GPL vmlinux 0xa8b3e07a xattr_getsecurity +EXPORT_SYMBOL_GPL vmlinux 0xa8f59416 gpio_direction_output +EXPORT_SYMBOL_GPL vmlinux 0xa906a547 platform_add_devices +EXPORT_SYMBOL_GPL vmlinux 0xa925e478 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xa934d9af usb_sg_cancel +EXPORT_SYMBOL_GPL vmlinux 0xa945ddc7 sdio_writeb +EXPORT_SYMBOL_GPL vmlinux 0xa96d9152 md_trim_bio +EXPORT_SYMBOL_GPL vmlinux 0xa96e66eb sdio_release_host +EXPORT_SYMBOL_GPL vmlinux 0xa98cdb36 ps3_get_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xa9c530b8 unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xa9ce341e usb_show_dynids +EXPORT_SYMBOL_GPL vmlinux 0xaa02cd50 platform_create_bundle +EXPORT_SYMBOL_GPL vmlinux 0xaa0b0b05 tcp_init_congestion_ops +EXPORT_SYMBOL_GPL vmlinux 0xaa1acc6d debugfs_create_u16 +EXPORT_SYMBOL_GPL vmlinux 0xaa446522 crypto_grab_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xaa55e4ad eventfd_fget +EXPORT_SYMBOL_GPL vmlinux 0xaa677c68 debugfs_create_x32 +EXPORT_SYMBOL_GPL vmlinux 0xaa852c93 regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xaaa74fe7 anon_inode_getfd +EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump +EXPORT_SYMBOL_GPL vmlinux 0xaab282d6 irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0xaac7eb79 nf_unregister_queue_handlers +EXPORT_SYMBOL_GPL vmlinux 0xab14110a stop_machine +EXPORT_SYMBOL_GPL vmlinux 0xab2b243d ps3_irq_plug_destroy +EXPORT_SYMBOL_GPL vmlinux 0xab6babaf pm_qos_request +EXPORT_SYMBOL_GPL vmlinux 0xac21b42e of_node_to_nid +EXPORT_SYMBOL_GPL vmlinux 0xac5d2892 tps65090_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xac679f43 add_page_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0xac7683f1 spi_alloc_device +EXPORT_SYMBOL_GPL vmlinux 0xacc2633c spu_switch_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xacc5478a pmf_do_irq +EXPORT_SYMBOL_GPL vmlinux 0xacd5b6f2 do_unbind_con_driver +EXPORT_SYMBOL_GPL vmlinux 0xacdc9492 tty_put_char +EXPORT_SYMBOL_GPL vmlinux 0xace5c0fc usb_bus_list +EXPORT_SYMBOL_GPL vmlinux 0xacfe997e powerpc_firmware_features +EXPORT_SYMBOL_GPL vmlinux 0xad0a1ccd rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0xad56a4e9 ata_port_pbar_desc +EXPORT_SYMBOL_GPL vmlinux 0xad6c11d7 led_trigger_register_simple +EXPORT_SYMBOL_GPL vmlinux 0xad8801d6 scsi_autopm_get_device +EXPORT_SYMBOL_GPL vmlinux 0xada38534 regulator_bulk_disable +EXPORT_SYMBOL_GPL vmlinux 0xada739a7 static_key_slow_dec_deferred +EXPORT_SYMBOL_GPL vmlinux 0xadc5bfa4 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0xadc785ec kgdb_register_io_module +EXPORT_SYMBOL_GPL vmlinux 0xadce2182 pci_cfg_access_unlock +EXPORT_SYMBOL_GPL vmlinux 0xaddd68e0 pci_destroy_slot +EXPORT_SYMBOL_GPL vmlinux 0xade0e2bf sysfs_remove_group +EXPORT_SYMBOL_GPL vmlinux 0xade7e60c ata_sff_queue_pio_task +EXPORT_SYMBOL_GPL vmlinux 0xadf6aa4d tpm_pcr_read +EXPORT_SYMBOL_GPL vmlinux 0xae0501ba sysfs_add_file_to_group +EXPORT_SYMBOL_GPL vmlinux 0xae0c87ee pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xae64bb0c ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xae7046d5 sysfs_remove_device_from_node +EXPORT_SYMBOL_GPL vmlinux 0xae83411f fb_deferred_io_fsync +EXPORT_SYMBOL_GPL vmlinux 0xae869072 eeh_add_device_tree_late +EXPORT_SYMBOL_GPL vmlinux 0xae8c696a pcibios_remove_pci_devices +EXPORT_SYMBOL_GPL vmlinux 0xae927c91 rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xaea16dd3 pm_generic_freeze_late +EXPORT_SYMBOL_GPL vmlinux 0xaed09fc7 ata_bmdma32_port_ops +EXPORT_SYMBOL_GPL vmlinux 0xaed7f623 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0xaef3322e pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0xaf415a00 flush_vsx_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xaf46e8c8 ata_pci_sff_init_one +EXPORT_SYMBOL_GPL vmlinux 0xaf624eaa trace_nowake_buffer_unlock_commit_regs +EXPORT_SYMBOL_GPL vmlinux 0xaf9694f6 ata_std_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xafe99b1d __pci_hp_register +EXPORT_SYMBOL_GPL vmlinux 0xaff4d9de generic_fh_to_parent +EXPORT_SYMBOL_GPL vmlinux 0xb013f565 mmput +EXPORT_SYMBOL_GPL vmlinux 0xb03bd406 tcp_done +EXPORT_SYMBOL_GPL vmlinux 0xb08e6e6a device_wakeup_disable +EXPORT_SYMBOL_GPL vmlinux 0xb08f4227 crypto_unregister_instance +EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset +EXPORT_SYMBOL_GPL vmlinux 0xb0c532d8 ata_cable_40wire +EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb103f0b9 __get_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb10d55bc cn_netlink_send +EXPORT_SYMBOL_GPL vmlinux 0xb11b4eca crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xb11ee324 usb_register_driver +EXPORT_SYMBOL_GPL vmlinux 0xb140d14c ring_buffer_read +EXPORT_SYMBOL_GPL vmlinux 0xb1425b32 dm_table_add_target_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb14534c8 __srcu_read_unlock +EXPORT_SYMBOL_GPL vmlinux 0xb1528359 rt_mutex_timed_lock +EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs +EXPORT_SYMBOL_GPL vmlinux 0xb194a3fa regcache_cache_only +EXPORT_SYMBOL_GPL vmlinux 0xb19a8c12 irq_domain_xlate_onetwocell +EXPORT_SYMBOL_GPL vmlinux 0xb1acbcce rcu_barrier_sched +EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start +EXPORT_SYMBOL_GPL vmlinux 0xb1d3dad1 regulator_get_exclusive +EXPORT_SYMBOL_GPL vmlinux 0xb21bf871 blk_add_driver_data +EXPORT_SYMBOL_GPL vmlinux 0xb225913b uart_set_options +EXPORT_SYMBOL_GPL vmlinux 0xb23b7544 scsi_eh_ready_devs +EXPORT_SYMBOL_GPL vmlinux 0xb24ce8af regulator_set_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xb281f49f dev_pm_qos_hide_latency_limit +EXPORT_SYMBOL_GPL vmlinux 0xb2883f30 register_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xb28a5c0d pm_generic_runtime_resume +EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem +EXPORT_SYMBOL_GPL vmlinux 0xb2e80e2a usb_match_one_id +EXPORT_SYMBOL_GPL vmlinux 0xb308eb48 usb_get_urb +EXPORT_SYMBOL_GPL vmlinux 0xb326070b vfs_setxattr +EXPORT_SYMBOL_GPL vmlinux 0xb329735a da903x_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb33d2f3f ata_scsi_simulate +EXPORT_SYMBOL_GPL vmlinux 0xb347bb2c work_busy +EXPORT_SYMBOL_GPL vmlinux 0xb39e9844 net_cls_subsys_id +EXPORT_SYMBOL_GPL vmlinux 0xb3a42f36 inet_csk_listen_start +EXPORT_SYMBOL_GPL vmlinux 0xb3c6a6e9 input_ff_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb3dfc84c ata_bmdma_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xb3e2758e sdio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xb3eba600 xfrm_audit_policy_add +EXPORT_SYMBOL_GPL vmlinux 0xb3f18731 alloc_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xb424a52e bio_clone_mddev +EXPORT_SYMBOL_GPL vmlinux 0xb450757e tpm_show_owned +EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected +EXPORT_SYMBOL_GPL vmlinux 0xb501ff57 spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xb5083d8b bsg_setup_queue +EXPORT_SYMBOL_GPL vmlinux 0xb51111fd scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state +EXPORT_SYMBOL_GPL vmlinux 0xb53620d1 pci_vpd_find_info_keyword +EXPORT_SYMBOL_GPL vmlinux 0xb58dcfa2 synchronize_sched_expedited +EXPORT_SYMBOL_GPL vmlinux 0xb59da96c filter_current_check_discard +EXPORT_SYMBOL_GPL vmlinux 0xb5a0e11e lpddr2_jedec_addressing_table +EXPORT_SYMBOL_GPL vmlinux 0xb5b6f869 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xb5c8edf4 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0xb5cb8145 hrtimer_get_res +EXPORT_SYMBOL_GPL vmlinux 0xb5f17edf perf_register_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xb60b5707 of_i8042_aux_irq +EXPORT_SYMBOL_GPL vmlinux 0xb6108cfb __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xb6196adf usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0xb643c250 xics_wake_cpu +EXPORT_SYMBOL_GPL vmlinux 0xb67b2219 cm_suspend_again +EXPORT_SYMBOL_GPL vmlinux 0xb696b7e9 usb_bus_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xb6aeb661 ata_id_c_string +EXPORT_SYMBOL_GPL vmlinux 0xb6bc007a spu_sys_callback +EXPORT_SYMBOL_GPL vmlinux 0xb6c3e585 unregister_ftrace_event +EXPORT_SYMBOL_GPL vmlinux 0xb6d1bcf5 blk_abort_request +EXPORT_SYMBOL_GPL vmlinux 0xb6eec383 cgroup_load_subsys +EXPORT_SYMBOL_GPL vmlinux 0xb705e95c dev_pm_qos_remove_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb72ce26f fuse_do_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xb740c8b5 ftrace_set_notrace +EXPORT_SYMBOL_GPL vmlinux 0xb7a622d0 dma_buf_get +EXPORT_SYMBOL_GPL vmlinux 0xb7ad63ff key_set_timeout +EXPORT_SYMBOL_GPL vmlinux 0xb7d62cf9 pm_generic_thaw_noirq +EXPORT_SYMBOL_GPL vmlinux 0xb7e0d8b8 __pci_reset_function_locked +EXPORT_SYMBOL_GPL vmlinux 0xb7e68d88 ata_pci_sff_prepare_host +EXPORT_SYMBOL_GPL vmlinux 0xb7f77027 rtc_tm_to_ktime +EXPORT_SYMBOL_GPL vmlinux 0xb7fa3ad8 usb_hcd_pci_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xb8077782 find_vpid +EXPORT_SYMBOL_GPL vmlinux 0xb813ce5a timecompare_transform +EXPORT_SYMBOL_GPL vmlinux 0xb84b1aae ps3_event_receive_port_setup +EXPORT_SYMBOL_GPL vmlinux 0xb87167fd usb_alloc_streams +EXPORT_SYMBOL_GPL vmlinux 0xb903674c scatterwalk_map_and_copy +EXPORT_SYMBOL_GPL vmlinux 0xb91a166e ata_sff_pause +EXPORT_SYMBOL_GPL vmlinux 0xb95ac7f8 pci_set_pcie_reset_state +EXPORT_SYMBOL_GPL vmlinux 0xb98b5e93 blkdev_aio_write +EXPORT_SYMBOL_GPL vmlinux 0xb9ac39cc blkcg_policy_register +EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops +EXPORT_SYMBOL_GPL vmlinux 0xb9ccfc2e find_symbol +EXPORT_SYMBOL_GPL vmlinux 0xb9d025c9 llist_del_first +EXPORT_SYMBOL_GPL vmlinux 0xb9dc226e of_modalias_node +EXPORT_SYMBOL_GPL vmlinux 0xba117627 regmap_read +EXPORT_SYMBOL_GPL vmlinux 0xba158769 rtas_cancel_event_scan +EXPORT_SYMBOL_GPL vmlinux 0xba174c3c unregister_kretprobe +EXPORT_SYMBOL_GPL vmlinux 0xba1b778d page_cache_async_readahead +EXPORT_SYMBOL_GPL vmlinux 0xba37582a fb_bl_default_curve +EXPORT_SYMBOL_GPL vmlinux 0xba3d7af8 sdio_writesb +EXPORT_SYMBOL_GPL vmlinux 0xba467d28 pmac_i2c_adapter_to_bus +EXPORT_SYMBOL_GPL vmlinux 0xba69f852 pm_runtime_barrier +EXPORT_SYMBOL_GPL vmlinux 0xba6cd0e0 cpuidle_disable_device +EXPORT_SYMBOL_GPL vmlinux 0xba9c21f4 sdio_enable_func +EXPORT_SYMBOL_GPL vmlinux 0xbaa1bd34 fb_deferred_io_cleanup +EXPORT_SYMBOL_GPL vmlinux 0xbad26090 __atomic_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xbae34c27 scsi_nl_remove_transport +EXPORT_SYMBOL_GPL vmlinux 0xbb038ce4 perf_unregister_guest_info_callbacks +EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb25f60e spu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xbb49aafe spu_64k_pages_available +EXPORT_SYMBOL_GPL vmlinux 0xbb53ed64 ata_bmdma_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xbb6d0798 ata_host_init +EXPORT_SYMBOL_GPL vmlinux 0xbb6d5918 crypto_alg_lookup +EXPORT_SYMBOL_GPL vmlinux 0xbb885753 trace_seq_vprintf +EXPORT_SYMBOL_GPL vmlinux 0xbb8f2ffb platform_driver_probe +EXPORT_SYMBOL_GPL vmlinux 0xbc12a982 irq_domain_add_linear +EXPORT_SYMBOL_GPL vmlinux 0xbc1598ed tpm_remove_hardware +EXPORT_SYMBOL_GPL vmlinux 0xbc2f3416 pci_bus_add_device +EXPORT_SYMBOL_GPL vmlinux 0xbc4b3e82 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xbc652933 ipv6_opt_accepted +EXPORT_SYMBOL_GPL vmlinux 0xbc67019c i2c_adapter_type +EXPORT_SYMBOL_GPL vmlinux 0xbc6f931b workqueue_congested +EXPORT_SYMBOL_GPL vmlinux 0xbcc65c27 pmac_i2c_find_bus +EXPORT_SYMBOL_GPL vmlinux 0xbccfd4d8 register_oldmem_pfn_is_ram +EXPORT_SYMBOL_GPL vmlinux 0xbcf77012 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0xbd030a9f crypto_alloc_base +EXPORT_SYMBOL_GPL vmlinux 0xbd1d5f36 pci_sriov_migration +EXPORT_SYMBOL_GPL vmlinux 0xbd3027e4 usb_unpoison_urb +EXPORT_SYMBOL_GPL vmlinux 0xbd36fc4b tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0xbd47d062 device_release_driver +EXPORT_SYMBOL_GPL vmlinux 0xbd5cb8b9 ring_buffer_resize +EXPORT_SYMBOL_GPL vmlinux 0xbda7d16f kallsyms_on_each_symbol +EXPORT_SYMBOL_GPL vmlinux 0xbdaf5686 get_compat_timeval +EXPORT_SYMBOL_GPL vmlinux 0xbdc29502 stmpe_block_write +EXPORT_SYMBOL_GPL vmlinux 0xbdd295f0 trace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xbdd2f42a rcu_bh_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0xbdd816ca ps3_vuart_clear_rx_bytes +EXPORT_SYMBOL_GPL vmlinux 0xbddb0d6e device_set_wakeup_capable +EXPORT_SYMBOL_GPL vmlinux 0xbe1887e4 ata_unpack_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xbe1b6cde __rtnl_af_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbe314a80 remove_irq +EXPORT_SYMBOL_GPL vmlinux 0xbe4d8184 ata_host_detach +EXPORT_SYMBOL_GPL vmlinux 0xbe721c51 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xbebf2f77 bmp085_detect +EXPORT_SYMBOL_GPL vmlinux 0xbec15b5a irq_set_affinity_hint +EXPORT_SYMBOL_GPL vmlinux 0xbede31c9 tps6586x_read +EXPORT_SYMBOL_GPL vmlinux 0xbf140422 usb_queue_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xbf1cc04b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xbf705f89 sysfs_add_device_to_node +EXPORT_SYMBOL_GPL vmlinux 0xbf7352a2 srcu_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xbf7d0f27 bmp085_probe +EXPORT_SYMBOL_GPL vmlinux 0xbff97576 led_trigger_register +EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space +EXPORT_SYMBOL_GPL vmlinux 0xc01fcb0b rio_mport_send_doorbell +EXPORT_SYMBOL_GPL vmlinux 0xc02f4862 sata_pmp_qc_defer_cmd_switch +EXPORT_SYMBOL_GPL vmlinux 0xc0306759 pci_num_vf +EXPORT_SYMBOL_GPL vmlinux 0xc03ab504 setup_deferrable_timer_on_stack_key +EXPORT_SYMBOL_GPL vmlinux 0xc061367e mpic_msgr_get +EXPORT_SYMBOL_GPL vmlinux 0xc065a455 cpu_core_index_of_thread +EXPORT_SYMBOL_GPL vmlinux 0xc08647ff ring_buffer_bytes_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc0bf6ead timecounter_cyc2time +EXPORT_SYMBOL_GPL vmlinux 0xc0c3ac70 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0xc0d26387 kmsg_dump_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc0e7c51c pci_restore_ats_state +EXPORT_SYMBOL_GPL vmlinux 0xc10f2b8e cgroup_unlock +EXPORT_SYMBOL_GPL vmlinux 0xc11bd00f tracepoint_probe_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc120eee5 sg_scsi_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xc13ae0ba unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0xc141630c usb_altnum_to_altsetting +EXPORT_SYMBOL_GPL vmlinux 0xc146e021 ip6_flush_pending_frames +EXPORT_SYMBOL_GPL vmlinux 0xc15d4f64 pm_generic_poweroff_late +EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded +EXPORT_SYMBOL_GPL vmlinux 0xc183036b usb_hcd_resume_root_hub +EXPORT_SYMBOL_GPL vmlinux 0xc1ba360b devres_find +EXPORT_SYMBOL_GPL vmlinux 0xc1c7ad01 tc3589x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xc1fa4dfb unregister_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases +EXPORT_SYMBOL_GPL vmlinux 0xc242d4a0 pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xc2490837 tty_set_termios +EXPORT_SYMBOL_GPL vmlinux 0xc2575854 blk_queue_flush +EXPORT_SYMBOL_GPL vmlinux 0xc26f06d7 __online_page_free +EXPORT_SYMBOL_GPL vmlinux 0xc27eccd0 of_get_regulator_init_data +EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register +EXPORT_SYMBOL_GPL vmlinux 0xc2a1fbf4 dev_attr_sw_activity +EXPORT_SYMBOL_GPL vmlinux 0xc2a99103 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xc2cb00b9 sock_diag_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc2d53a70 devres_get +EXPORT_SYMBOL_GPL vmlinux 0xc2f876f8 regcache_sync_region +EXPORT_SYMBOL_GPL vmlinux 0xc306054a use_mm +EXPORT_SYMBOL_GPL vmlinux 0xc327a981 usb_clear_halt +EXPORT_SYMBOL_GPL vmlinux 0xc3449aab ata_eh_freeze_port +EXPORT_SYMBOL_GPL vmlinux 0xc34efe27 snmp_fold_field +EXPORT_SYMBOL_GPL vmlinux 0xc35f7d4a __giveup_vsx +EXPORT_SYMBOL_GPL vmlinux 0xc37226a5 tpm_pcr_extend +EXPORT_SYMBOL_GPL vmlinux 0xc399468f scsi_nl_remove_driver +EXPORT_SYMBOL_GPL vmlinux 0xc3eb5b2e usb_find_interface +EXPORT_SYMBOL_GPL vmlinux 0xc423d924 debugfs_create_u8 +EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long +EXPORT_SYMBOL_GPL vmlinux 0xc4322be3 pci_dev_run_wake +EXPORT_SYMBOL_GPL vmlinux 0xc43d94e3 of_platform_populate +EXPORT_SYMBOL_GPL vmlinux 0xc454fc7b twl_get_type +EXPORT_SYMBOL_GPL vmlinux 0xc45a45ab sk_detach_filter +EXPORT_SYMBOL_GPL vmlinux 0xc469f8e8 ata_sas_port_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc471c67a twl4030_audio_disable_resource +EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc4beb341 screen_glyph +EXPORT_SYMBOL_GPL vmlinux 0xc4d15b11 regulator_get_voltage_sel_regmap +EXPORT_SYMBOL_GPL vmlinux 0xc4f2d1b6 bus_for_each_drv +EXPORT_SYMBOL_GPL vmlinux 0xc510ca0d crypto_aead_type +EXPORT_SYMBOL_GPL vmlinux 0xc530c235 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xc53650f3 register_jprobe +EXPORT_SYMBOL_GPL vmlinux 0xc536ac6f wait_for_tpm_stat +EXPORT_SYMBOL_GPL vmlinux 0xc53d28b4 attribute_container_unregister +EXPORT_SYMBOL_GPL vmlinux 0xc5480570 ata_sff_exec_command +EXPORT_SYMBOL_GPL vmlinux 0xc548c5a2 crypto_lookup_aead +EXPORT_SYMBOL_GPL vmlinux 0xc56dd05d inet_ctl_sock_create +EXPORT_SYMBOL_GPL vmlinux 0xc56ecb40 evm_inode_init_security +EXPORT_SYMBOL_GPL vmlinux 0xc57a6f67 sysfs_put +EXPORT_SYMBOL_GPL vmlinux 0xc5b0a444 tpm_show_caps_1_2 +EXPORT_SYMBOL_GPL vmlinux 0xc5d4ab3b drop_cop +EXPORT_SYMBOL_GPL vmlinux 0xc6027bd1 usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0xc60f75ec __ftrace_vprintk +EXPORT_SYMBOL_GPL vmlinux 0xc630f006 usb_enable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xc65d3eed ring_buffer_entries_cpu +EXPORT_SYMBOL_GPL vmlinux 0xc66c2311 ps3_vuart_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc6b35b51 da903x_read +EXPORT_SYMBOL_GPL vmlinux 0xc6d03681 key_type_encrypted +EXPORT_SYMBOL_GPL vmlinux 0xc6d18f89 tpm_register_hardware +EXPORT_SYMBOL_GPL vmlinux 0xc6d9f806 securityfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0xc6e25e99 tracepoint_iter_start +EXPORT_SYMBOL_GPL vmlinux 0xc72e1233 __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xc76f1e3b transport_remove_device +EXPORT_SYMBOL_GPL vmlinux 0xc7734221 do_trace_rcu_torture_read +EXPORT_SYMBOL_GPL vmlinux 0xc788225d sock_diag_register +EXPORT_SYMBOL_GPL vmlinux 0xc793c1e8 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch +EXPORT_SYMBOL_GPL vmlinux 0xc7c6391c mpi_set_buffer +EXPORT_SYMBOL_GPL vmlinux 0xc7def70b device_init_wakeup +EXPORT_SYMBOL_GPL vmlinux 0xc7e79330 handle_level_irq +EXPORT_SYMBOL_GPL vmlinux 0xc80bab1b crypto_register_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xc81b8e0a flush_altivec_to_thread +EXPORT_SYMBOL_GPL vmlinux 0xc82093b0 sysfs_get_dirent +EXPORT_SYMBOL_GPL vmlinux 0xc85d0844 dev_set_name +EXPORT_SYMBOL_GPL vmlinux 0xc87c1f84 ktime_get +EXPORT_SYMBOL_GPL vmlinux 0xc88a5ccf dev_attr_em_message_type +EXPORT_SYMBOL_GPL vmlinux 0xc893b4b3 ata_host_start +EXPORT_SYMBOL_GPL vmlinux 0xc89e4ff4 ata_do_dev_read_id +EXPORT_SYMBOL_GPL vmlinux 0xc8add232 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0xc8cc2582 power_supply_class +EXPORT_SYMBOL_GPL vmlinux 0xc8f01e22 kern_mount_data +EXPORT_SYMBOL_GPL vmlinux 0xc8f97c6c tpm_show_enabled +EXPORT_SYMBOL_GPL vmlinux 0xc90d1e52 tpm_write +EXPORT_SYMBOL_GPL vmlinux 0xc91277a1 kgdb_schedule_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xc93838a2 sdio_memcpy_toio +EXPORT_SYMBOL_GPL vmlinux 0xc9405b01 irq_radix_revmap_lookup +EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist +EXPORT_SYMBOL_GPL vmlinux 0xc9631a6b of_get_phy_mode +EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc96e8f52 blkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu +EXPORT_SYMBOL_GPL vmlinux 0xca41c22c rio_unregister_driver +EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca7d9c56 unregister_kprobes +EXPORT_SYMBOL_GPL vmlinux 0xca85d8cf tracepoint_probe_update_all +EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcaed66af md_stop_writes +EXPORT_SYMBOL_GPL vmlinux 0xcb08cec5 ata_sas_slave_configure +EXPORT_SYMBOL_GPL vmlinux 0xcb15eee9 sdhci_pci_get_data +EXPORT_SYMBOL_GPL vmlinux 0xcb4535ee queue_delayed_work_on +EXPORT_SYMBOL_GPL vmlinux 0xcb481ab9 dev_pm_get_subsys_data +EXPORT_SYMBOL_GPL vmlinux 0xcb58aae5 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0xcb5b5f3c single_open_net +EXPORT_SYMBOL_GPL vmlinux 0xcb69ab25 blkg_prfill_stat +EXPORT_SYMBOL_GPL vmlinux 0xcba894c1 da9052_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcbc2c8dd atomic_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcbe56f3c usb_hcd_giveback_urb +EXPORT_SYMBOL_GPL vmlinux 0xcbee20b2 get_cpu_iowait_time_us +EXPORT_SYMBOL_GPL vmlinux 0xcc150654 wm831x_regmap_config +EXPORT_SYMBOL_GPL vmlinux 0xcc198a28 wakeup_source_prepare +EXPORT_SYMBOL_GPL vmlinux 0xcc1f1c3d inet_twdr_hangman +EXPORT_SYMBOL_GPL vmlinux 0xcc4cf174 led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0xcc543c1f wm8350_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xcc59239f ata_sff_drain_fifo +EXPORT_SYMBOL_GPL vmlinux 0xcc809102 regulator_list_voltage_linear +EXPORT_SYMBOL_GPL vmlinux 0xcca181fa usb_disable_ltm +EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug +EXPORT_SYMBOL_GPL vmlinux 0xccf1456f eeh_remove_bus_device +EXPORT_SYMBOL_GPL vmlinux 0xccf6e6f8 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0xcd145117 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0xcd2815eb show_class_attr_string +EXPORT_SYMBOL_GPL vmlinux 0xcd4f478d wm8994_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xcd6804b7 dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xcd79bbaf invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0xcd850362 regulator_get_init_drvdata +EXPORT_SYMBOL_GPL vmlinux 0xcd8a42d2 ata_host_activate +EXPORT_SYMBOL_GPL vmlinux 0xcd8fdaa1 debugfs_create_u32_array +EXPORT_SYMBOL_GPL vmlinux 0xcd9991a9 usb_usual_set_present +EXPORT_SYMBOL_GPL vmlinux 0xcd9b331e ata_sff_queue_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0xcd9cfc12 ata_sff_lost_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs +EXPORT_SYMBOL_GPL vmlinux 0xcdd34f39 usb_reset_device +EXPORT_SYMBOL_GPL vmlinux 0xce0b9b59 max77693_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xce405478 __rio_local_write_config_32 +EXPORT_SYMBOL_GPL vmlinux 0xce428dce sched_setscheduler +EXPORT_SYMBOL_GPL vmlinux 0xce46e140 ktime_get_ts +EXPORT_SYMBOL_GPL vmlinux 0xce60429b unregister_timer_hook +EXPORT_SYMBOL_GPL vmlinux 0xce6a9d9a trace_current_buffer_discard_commit +EXPORT_SYMBOL_GPL vmlinux 0xce6d6e94 bus_create_file +EXPORT_SYMBOL_GPL vmlinux 0xce84742f device_move +EXPORT_SYMBOL_GPL vmlinux 0xceba2a17 devm_regulator_get +EXPORT_SYMBOL_GPL vmlinux 0xcee1362c cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xcee784b7 ata_noop_qc_prep +EXPORT_SYMBOL_GPL vmlinux 0xceecbed0 pmac_i2c_get_bus_node +EXPORT_SYMBOL_GPL vmlinux 0xcf5b7b0b wm831x_device_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xcf5da29f tpm_dev_release +EXPORT_SYMBOL_GPL vmlinux 0xcf9d014c pm_generic_resume +EXPORT_SYMBOL_GPL vmlinux 0xcfa39eca __tracepoint_rpm_suspend +EXPORT_SYMBOL_GPL vmlinux 0xcfb5871c irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xcfc68341 synchronize_rcu_bh +EXPORT_SYMBOL_GPL vmlinux 0xcfcc83ad register_vt_notifier +EXPORT_SYMBOL_GPL vmlinux 0xcff2e173 rt_mutex_unlock +EXPORT_SYMBOL_GPL vmlinux 0xd01584fe ata_port_freeze +EXPORT_SYMBOL_GPL vmlinux 0xd03c7700 secure_ipv4_port_ephemeral +EXPORT_SYMBOL_GPL vmlinux 0xd046d536 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0xd0afc152 rio_mport_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart +EXPORT_SYMBOL_GPL vmlinux 0xd0cf5481 irq_domain_add_legacy +EXPORT_SYMBOL_GPL vmlinux 0xd0f2894f timerqueue_add +EXPORT_SYMBOL_GPL vmlinux 0xd131468a sock_prot_inuse_add +EXPORT_SYMBOL_GPL vmlinux 0xd13a356c vfs_removexattr +EXPORT_SYMBOL_GPL vmlinux 0xd14bc4d9 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xd156719d tcp_unregister_congestion_control +EXPORT_SYMBOL_GPL vmlinux 0xd16712f3 crypto_check_attr_type +EXPORT_SYMBOL_GPL vmlinux 0xd1b2db37 tracepoint_probe_register_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xd1b7099a anon_transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xd1bcc6a1 fsstack_copy_attr_all +EXPORT_SYMBOL_GPL vmlinux 0xd1d2bf43 scsi_internal_device_unblock +EXPORT_SYMBOL_GPL vmlinux 0xd1dbff56 input_ff_create +EXPORT_SYMBOL_GPL vmlinux 0xd20affdc tpm_show_pubek +EXPORT_SYMBOL_GPL vmlinux 0xd20bf6ba dcookie_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event +EXPORT_SYMBOL_GPL vmlinux 0xd22a627d ata_eh_analyze_ncq_error +EXPORT_SYMBOL_GPL vmlinux 0xd22c5a35 s5m_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xd2679e59 driver_remove_file +EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xd2a8caf0 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd3087151 netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0xd32fe193 ata_scsi_change_queue_depth +EXPORT_SYMBOL_GPL vmlinux 0xd34ba59c unuse_mm +EXPORT_SYMBOL_GPL vmlinux 0xd37e13b4 regulator_set_optimum_mode +EXPORT_SYMBOL_GPL vmlinux 0xd395a842 bmp085_remove +EXPORT_SYMBOL_GPL vmlinux 0xd3c5f349 tpm_pm_resume +EXPORT_SYMBOL_GPL vmlinux 0xd3fcacbc subsys_interface_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd4034828 system_freezable_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4060fec ata_host_suspend +EXPORT_SYMBOL_GPL vmlinux 0xd45bcf76 adp5520_write +EXPORT_SYMBOL_GPL vmlinux 0xd471b6d6 of_irq_to_resource +EXPORT_SYMBOL_GPL vmlinux 0xd48c56c0 pSeries_reconfig_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0xd48e0e12 __get_user_pages_fast +EXPORT_SYMBOL_GPL vmlinux 0xd4a39a20 sock_prot_inuse_get +EXPORT_SYMBOL_GPL vmlinux 0xd4b2e199 usb_match_id +EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq +EXPORT_SYMBOL_GPL vmlinux 0xd4c3d724 skcipher_geniv_alloc +EXPORT_SYMBOL_GPL vmlinux 0xd4d8fac2 irq_domain_xlate_twocell +EXPORT_SYMBOL_GPL vmlinux 0xd4e74c55 power_supply_powers +EXPORT_SYMBOL_GPL vmlinux 0xd4f78787 ata_sff_data_xfer_noirq +EXPORT_SYMBOL_GPL vmlinux 0xd4fc4d62 simple_attr_write +EXPORT_SYMBOL_GPL vmlinux 0xd57543d8 ps3_free_mmio_region +EXPORT_SYMBOL_GPL vmlinux 0xd582227a leds_list_lock +EXPORT_SYMBOL_GPL vmlinux 0xd591be45 pm_runtime_allow +EXPORT_SYMBOL_GPL vmlinux 0xd59668e6 unlock_flocks +EXPORT_SYMBOL_GPL vmlinux 0xd59684ac pci_disable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xd5a35e83 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xd5bd7dac ring_buffer_record_enable_cpu +EXPORT_SYMBOL_GPL vmlinux 0xd5bdda61 ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0xd5d0779c css_id +EXPORT_SYMBOL_GPL vmlinux 0xd5e6487d cpu_add_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xd5f49757 wm8350_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xd61f2ceb da903x_reads +EXPORT_SYMBOL_GPL vmlinux 0xd622c2ad i2c_for_each_dev +EXPORT_SYMBOL_GPL vmlinux 0xd625927a anon_inode_getfile +EXPORT_SYMBOL_GPL vmlinux 0xd63f9640 crypto_ahash_final +EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget +EXPORT_SYMBOL_GPL vmlinux 0xd68377c9 add_to_page_cache_lru +EXPORT_SYMBOL_GPL vmlinux 0xd694171b mddev_init +EXPORT_SYMBOL_GPL vmlinux 0xd69c1894 rtc_irq_set_freq +EXPORT_SYMBOL_GPL vmlinux 0xd69c7257 gpiochip_remove +EXPORT_SYMBOL_GPL vmlinux 0xd6bfcd06 usb_driver_set_configuration +EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries +EXPORT_SYMBOL_GPL vmlinux 0xd705b4c7 schedule_hrtimeout +EXPORT_SYMBOL_GPL vmlinux 0xd707502a ata_cable_ignore +EXPORT_SYMBOL_GPL vmlinux 0xd70e081e blk_queue_flush_queueable +EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints +EXPORT_SYMBOL_GPL vmlinux 0xd77621d8 of_property_read_string_index +EXPORT_SYMBOL_GPL vmlinux 0xd776328a dma_buf_end_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xd77c0bc8 klist_remove +EXPORT_SYMBOL_GPL vmlinux 0xd7a25a1e pm_generic_resume_early +EXPORT_SYMBOL_GPL vmlinux 0xd7a38f28 led_trigger_unregister_simple +EXPORT_SYMBOL_GPL vmlinux 0xd7b657e5 platform_device_put +EXPORT_SYMBOL_GPL vmlinux 0xd7c5ba14 get_dcookie +EXPORT_SYMBOL_GPL vmlinux 0xd7d79132 put_online_cpus +EXPORT_SYMBOL_GPL vmlinux 0xd7daeb4a platform_device_add_data +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 0xd8498f4d ps3av_mode_cs_info +EXPORT_SYMBOL_GPL vmlinux 0xd84b6476 srcu_batches_completed +EXPORT_SYMBOL_GPL vmlinux 0xd84ff1b9 tty_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0xd8525ea7 fl6_update_dst +EXPORT_SYMBOL_GPL vmlinux 0xd85ac634 regulator_put +EXPORT_SYMBOL_GPL vmlinux 0xd87601cc ring_buffer_unlock_commit +EXPORT_SYMBOL_GPL vmlinux 0xd8b6a087 spi_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xd8cf33f8 fsstack_copy_inode_size +EXPORT_SYMBOL_GPL vmlinux 0xd93b3b16 usb_hcd_platform_shutdown +EXPORT_SYMBOL_GPL vmlinux 0xd93dafe4 subsys_system_register +EXPORT_SYMBOL_GPL vmlinux 0xd94096de kfree_call_rcu +EXPORT_SYMBOL_GPL vmlinux 0xd942d353 ring_buffer_record_off +EXPORT_SYMBOL_GPL vmlinux 0xd9497b3c ps3_os_area_flash_register +EXPORT_SYMBOL_GPL vmlinux 0xd9a4df0f ps3_vuart_read +EXPORT_SYMBOL_GPL vmlinux 0xd9b96aff tps65912_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xd9d5d278 usb_hcd_pci_remove +EXPORT_SYMBOL_GPL vmlinux 0xd9df5bb2 rtnl_link_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd9ecb670 ring_buffer_overruns +EXPORT_SYMBOL_GPL vmlinux 0xda0a4d22 mpic_msgr_enable +EXPORT_SYMBOL_GPL vmlinux 0xda1184c8 spu_setup_kernel_slbs +EXPORT_SYMBOL_GPL vmlinux 0xda1be8e1 async_synchronize_cookie_domain +EXPORT_SYMBOL_GPL vmlinux 0xda3a7ca9 regulator_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xda44cb37 setup_charger_manager +EXPORT_SYMBOL_GPL vmlinux 0xda83ca06 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0xdaa01ff2 ata_host_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdabd0e64 __pm_stay_awake +EXPORT_SYMBOL_GPL vmlinux 0xdabee754 shmem_read_mapping_page_gfp +EXPORT_SYMBOL_GPL vmlinux 0xdac86f61 devres_release_group +EXPORT_SYMBOL_GPL vmlinux 0xdaec531f __pm_relax +EXPORT_SYMBOL_GPL vmlinux 0xdaf1d1d9 platform_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option +EXPORT_SYMBOL_GPL vmlinux 0xdb04cacc tracepoint_probe_unregister_noupdate +EXPORT_SYMBOL_GPL vmlinux 0xdb0ac13b ps3_compare_firmware_version +EXPORT_SYMBOL_GPL vmlinux 0xdb240ef4 put_device +EXPORT_SYMBOL_GPL vmlinux 0xdb2cabeb ata_timing_compute +EXPORT_SYMBOL_GPL vmlinux 0xdb62575e xfrm_inner_extract_output +EXPORT_SYMBOL_GPL vmlinux 0xdb70ff37 dma_buf_kunmap +EXPORT_SYMBOL_GPL vmlinux 0xdb7cbcf1 blocking_notifier_chain_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdb890edf rq_flush_dcache_pages +EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock +EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits +EXPORT_SYMBOL_GPL vmlinux 0xdc089fd7 adp5520_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdc0e5b65 transport_class_register +EXPORT_SYMBOL_GPL vmlinux 0xdc5556b4 sdio_readsb +EXPORT_SYMBOL_GPL vmlinux 0xdc6c3af9 clockevent_delta2ns +EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable +EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdce851cd sigset_from_compat +EXPORT_SYMBOL_GPL vmlinux 0xdd043eea ps3av_get_auto_mode +EXPORT_SYMBOL_GPL vmlinux 0xdd0747fb ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0xdd2efc0f ring_buffer_reset_cpu +EXPORT_SYMBOL_GPL vmlinux 0xdd59ad95 skb_gro_receive +EXPORT_SYMBOL_GPL vmlinux 0xddbfe1cc crypto_aes_set_key +EXPORT_SYMBOL_GPL vmlinux 0xddd47b1f ata_eh_qc_complete +EXPORT_SYMBOL_GPL vmlinux 0xddd58dc0 ring_buffer_reset +EXPORT_SYMBOL_GPL vmlinux 0xdde18bcf tps65912_clear_bits +EXPORT_SYMBOL_GPL vmlinux 0xddf632ed regulator_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xde24cce7 securityfs_create_file +EXPORT_SYMBOL_GPL vmlinux 0xde2aec32 wm8350_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xde3b01cf __mmdrop +EXPORT_SYMBOL_GPL vmlinux 0xde417b81 async_schedule_domain +EXPORT_SYMBOL_GPL vmlinux 0xde494dcd usb_reset_configuration +EXPORT_SYMBOL_GPL vmlinux 0xde758280 debugfs_rename +EXPORT_SYMBOL_GPL vmlinux 0xdf0f75c6 eventfd_signal +EXPORT_SYMBOL_GPL vmlinux 0xdf28c48f __fsnotify_parent +EXPORT_SYMBOL_GPL vmlinux 0xdf2c2a84 wakeup_source_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdfc6be2f adp5520_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xdfd0e121 relay_flush +EXPORT_SYMBOL_GPL vmlinux 0xdfdf5e22 mddev_suspend +EXPORT_SYMBOL_GPL vmlinux 0xdfffafb6 ata_scsi_port_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xe007de41 kallsyms_lookup_name +EXPORT_SYMBOL_GPL vmlinux 0xe011f817 ps3flash_bounce_buffer +EXPORT_SYMBOL_GPL vmlinux 0xe02c2ef0 dio_end_io +EXPORT_SYMBOL_GPL vmlinux 0xe02eb6d0 ring_buffer_commit_overrun_cpu +EXPORT_SYMBOL_GPL vmlinux 0xe036b3e9 mpic_msgr_put +EXPORT_SYMBOL_GPL vmlinux 0xe057c8bf disable_kprobe +EXPORT_SYMBOL_GPL vmlinux 0xe06064d3 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0xe06f0b4b ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0d5eabb ata_sff_freeze +EXPORT_SYMBOL_GPL vmlinux 0xe0ddab6f irq_domain_simple_ops +EXPORT_SYMBOL_GPL vmlinux 0xe0ddd671 rio_local_get_device_id +EXPORT_SYMBOL_GPL vmlinux 0xe15ece76 inet_unhash +EXPORT_SYMBOL_GPL vmlinux 0xe19fc092 ps3fb_videomemory +EXPORT_SYMBOL_GPL vmlinux 0xe24f4ef4 rio_dma_prep_slave_sg +EXPORT_SYMBOL_GPL vmlinux 0xe2795538 __put_task_struct +EXPORT_SYMBOL_GPL vmlinux 0xe27bed25 crypto_unregister_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xe2dd67e5 regulator_set_current_limit +EXPORT_SYMBOL_GPL vmlinux 0xe2ddf1ed bsg_job_done +EXPORT_SYMBOL_GPL vmlinux 0xe3043ff9 request_any_context_irq +EXPORT_SYMBOL_GPL vmlinux 0xe35dadb5 pci_find_ext_capability +EXPORT_SYMBOL_GPL vmlinux 0xe35f78a5 device_rename +EXPORT_SYMBOL_GPL vmlinux 0xe35fa6e6 wakeup_source_register +EXPORT_SYMBOL_GPL vmlinux 0xe3721215 __sock_recv_ts_and_drops +EXPORT_SYMBOL_GPL vmlinux 0xe384a102 usb_speed_string +EXPORT_SYMBOL_GPL vmlinux 0xe3907333 pm_generic_thaw_early +EXPORT_SYMBOL_GPL vmlinux 0xe3a88b42 wm831x_set_bits +EXPORT_SYMBOL_GPL vmlinux 0xe3d7750e btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0xe3def4b1 crypto_ahash_digest +EXPORT_SYMBOL_GPL vmlinux 0xe3e43579 pci_check_and_mask_intx +EXPORT_SYMBOL_GPL vmlinux 0xe3f75bc1 crypto_unregister_algs +EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume +EXPORT_SYMBOL_GPL vmlinux 0xe4329ad6 irq_set_affinity_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe439aadb register_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xe4657eab usb_anchor_urb +EXPORT_SYMBOL_GPL vmlinux 0xe471eda2 s5m_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xe47dbdfa dma_buf_put +EXPORT_SYMBOL_GPL vmlinux 0xe48aa5b6 stmpe_disable +EXPORT_SYMBOL_GPL vmlinux 0xe4933ce0 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0xe4a819c7 __bus_register +EXPORT_SYMBOL_GPL vmlinux 0xe4c031f8 btree_merge +EXPORT_SYMBOL_GPL vmlinux 0xe4c38fb7 skb_segment +EXPORT_SYMBOL_GPL vmlinux 0xe4d18f69 device_create +EXPORT_SYMBOL_GPL vmlinux 0xe4db7661 usb_string +EXPORT_SYMBOL_GPL vmlinux 0xe504171f wakeup_source_drop +EXPORT_SYMBOL_GPL vmlinux 0xe5230ec5 fl6_merge_options +EXPORT_SYMBOL_GPL vmlinux 0xe56e0ad5 pmf_call_function +EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister +EXPORT_SYMBOL_GPL vmlinux 0xe58fb452 aer_irq +EXPORT_SYMBOL_GPL vmlinux 0xe5911fe3 skb_partial_csum_set +EXPORT_SYMBOL_GPL vmlinux 0xe5dd0ac7 gpiochip_find +EXPORT_SYMBOL_GPL vmlinux 0xe615abb7 device_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xe62e55ee driver_register +EXPORT_SYMBOL_GPL vmlinux 0xe642d98a transport_add_device +EXPORT_SYMBOL_GPL vmlinux 0xe6488b47 cpufreq_notify_transition +EXPORT_SYMBOL_GPL vmlinux 0xe651f76e selinux_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe669f809 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0xe66e008c spu_associate_mm +EXPORT_SYMBOL_GPL vmlinux 0xe671f33c pmac_i2c_get_channel +EXPORT_SYMBOL_GPL vmlinux 0xe679aa94 wakeup_source_remove +EXPORT_SYMBOL_GPL vmlinux 0xe67c7fad ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0xe694e216 device_register +EXPORT_SYMBOL_GPL vmlinux 0xe6aeb667 driver_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xe6e1c5fe uuid_be_gen +EXPORT_SYMBOL_GPL vmlinux 0xe6e2f040 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xe6f1bd7a usb_mon_register +EXPORT_SYMBOL_GPL vmlinux 0xe71e974a wm8350_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xe730e69d __pci_complete_power_transition +EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset +EXPORT_SYMBOL_GPL vmlinux 0xe773306b pm_runtime_set_autosuspend_delay +EXPORT_SYMBOL_GPL vmlinux 0xe79ef150 pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0xe7b802db crypto_grab_aead +EXPORT_SYMBOL_GPL vmlinux 0xe7c6e530 tpm_read +EXPORT_SYMBOL_GPL vmlinux 0xe7cc0d36 blk_lld_busy +EXPORT_SYMBOL_GPL vmlinux 0xe7efa669 dm_noflush_suspending +EXPORT_SYMBOL_GPL vmlinux 0xe7ffe877 pcpu_base_addr +EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt +EXPORT_SYMBOL_GPL vmlinux 0xe83334a6 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xe85c55e7 btree_destroy +EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start +EXPORT_SYMBOL_GPL vmlinux 0xe8756e47 usb_kill_urb +EXPORT_SYMBOL_GPL vmlinux 0xe87c4b89 yield_to +EXPORT_SYMBOL_GPL vmlinux 0xe89bd243 ata_sff_queue_work +EXPORT_SYMBOL_GPL vmlinux 0xe8b783c1 ata_pci_sff_init_host +EXPORT_SYMBOL_GPL vmlinux 0xe8ceb824 pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xe8f7cceb bitmap_load +EXPORT_SYMBOL_GPL vmlinux 0xe9015822 rio_release_inb_pwrite +EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free +EXPORT_SYMBOL_GPL vmlinux 0xe9587909 usb_unregister_notify +EXPORT_SYMBOL_GPL vmlinux 0xe9b342f7 ipv6_find_tlv +EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap +EXPORT_SYMBOL_GPL vmlinux 0xea04ea3e pmac_i2c_get_dev_addr +EXPORT_SYMBOL_GPL vmlinux 0xea065e01 task_handoff_unregister +EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd +EXPORT_SYMBOL_GPL vmlinux 0xea29445e sdio_f0_writeb +EXPORT_SYMBOL_GPL vmlinux 0xea3ccf86 spu_add_dev_attr_group +EXPORT_SYMBOL_GPL vmlinux 0xea418e0f atapi_cmd_type +EXPORT_SYMBOL_GPL vmlinux 0xea5cc6bb pci_bus_resource_n +EXPORT_SYMBOL_GPL vmlinux 0xea628c20 bstr_printf +EXPORT_SYMBOL_GPL vmlinux 0xeaa719b3 watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xead7de3a uart_insert_char +EXPORT_SYMBOL_GPL vmlinux 0xeae74760 scsi_nl_send_transport_msg +EXPORT_SYMBOL_GPL vmlinux 0xeae7dbc8 ps3_close_hv_device +EXPORT_SYMBOL_GPL vmlinux 0xeb020618 tps65090_read +EXPORT_SYMBOL_GPL vmlinux 0xeb33c1af tpm_do_selftest +EXPORT_SYMBOL_GPL vmlinux 0xeb4ddb17 pmf_get_function +EXPORT_SYMBOL_GPL vmlinux 0xeb8ae736 klist_init +EXPORT_SYMBOL_GPL vmlinux 0xeb933e85 nf_register_afinfo +EXPORT_SYMBOL_GPL vmlinux 0xebb2b467 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xebbe6710 sdio_claim_irq +EXPORT_SYMBOL_GPL vmlinux 0xebd22cb4 sock_diag_register_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0xebf24ca4 register_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xec17f4dd aead_geniv_exit +EXPORT_SYMBOL_GPL vmlinux 0xec1b043e regulator_suspend_prepare +EXPORT_SYMBOL_GPL vmlinux 0xec25f967 klist_del +EXPORT_SYMBOL_GPL vmlinux 0xec6b6341 devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xecccad97 irq_alloc_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xecd14ab2 scsi_get_vpd_page +EXPORT_SYMBOL_GPL vmlinux 0xecf2d979 usb_autopm_get_interface_no_resume +EXPORT_SYMBOL_GPL vmlinux 0xed38d5cd usb_enable_xhci_ports +EXPORT_SYMBOL_GPL vmlinux 0xed5c9607 usb_autopm_get_interface +EXPORT_SYMBOL_GPL vmlinux 0xed72d7ef sysfs_remove_files +EXPORT_SYMBOL_GPL vmlinux 0xed9fb406 ata_sff_dev_select +EXPORT_SYMBOL_GPL vmlinux 0xedf5f642 modify_user_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xee2089fb free_vm_area +EXPORT_SYMBOL_GPL vmlinux 0xee2e3c41 disk_part_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xee5c00fb usb_register_dev +EXPORT_SYMBOL_GPL vmlinux 0xee64bb31 posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0xeee30403 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0xef0a3295 device_add +EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative +EXPORT_SYMBOL_GPL vmlinux 0xef6dbc47 tc3589x_reg_write +EXPORT_SYMBOL_GPL vmlinux 0xef791cc0 inet_csk_reqsk_queue_prune +EXPORT_SYMBOL_GPL vmlinux 0xef8c7850 pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0xefc32876 __online_page_increment_counters +EXPORT_SYMBOL_GPL vmlinux 0xefc82ba6 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xeff25f43 pcie_port_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xeffa6b8f __tracepoint_cpu_idle +EXPORT_SYMBOL_GPL vmlinux 0xeffc3b42 platform_device_add +EXPORT_SYMBOL_GPL vmlinux 0xf01b9352 ata_std_bios_param +EXPORT_SYMBOL_GPL vmlinux 0xf098dd15 cpu_bit_bitmap +EXPORT_SYMBOL_GPL vmlinux 0xf14d1d98 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0xf151c49d sysfs_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf158f170 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off +EXPORT_SYMBOL_GPL vmlinux 0xf1a24d20 ata_sff_data_xfer32 +EXPORT_SYMBOL_GPL vmlinux 0xf1a62b6f of_i8042_kbd_irq +EXPORT_SYMBOL_GPL vmlinux 0xf1b31314 delayacct_on +EXPORT_SYMBOL_GPL vmlinux 0xf1c4ba73 crypto_blkcipher_type +EXPORT_SYMBOL_GPL vmlinux 0xf1f29140 spu_handle_mm_fault +EXPORT_SYMBOL_GPL vmlinux 0xf2170aee regulator_enable_regmap +EXPORT_SYMBOL_GPL vmlinux 0xf23fc4ce of_scan_bus +EXPORT_SYMBOL_GPL vmlinux 0xf2425318 max8997_read_reg +EXPORT_SYMBOL_GPL vmlinux 0xf2448ce0 sysfs_create_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xf245cd4d usb_wakeup_notification +EXPORT_SYMBOL_GPL vmlinux 0xf2538acb xfrm_audit_state_notfound +EXPORT_SYMBOL_GPL vmlinux 0xf263aceb spi_bus_unlock +EXPORT_SYMBOL_GPL vmlinux 0xf265dbcb md_is_badblock +EXPORT_SYMBOL_GPL vmlinux 0xf27c5753 usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0xf2e7ea17 regmap_reinit_cache +EXPORT_SYMBOL_GPL vmlinux 0xf2ecb236 usb_autopm_put_interface_async +EXPORT_SYMBOL_GPL vmlinux 0xf2fca922 uart_parse_options +EXPORT_SYMBOL_GPL vmlinux 0xf30e105d ezx_pcap_write +EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 +EXPORT_SYMBOL_GPL vmlinux 0xf350da3f ata_qc_complete_multiple +EXPORT_SYMBOL_GPL vmlinux 0xf369851d xfrm_audit_state_replay +EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs +EXPORT_SYMBOL_GPL vmlinux 0xf3b93a97 cgroup_lock_is_held +EXPORT_SYMBOL_GPL vmlinux 0xf3ce4758 ata_dev_pair +EXPORT_SYMBOL_GPL vmlinux 0xf3da16af synchronize_srcu +EXPORT_SYMBOL_GPL vmlinux 0xf3dd036d regulator_set_voltage_time +EXPORT_SYMBOL_GPL vmlinux 0xf3e1bd40 __pm_runtime_use_autosuspend +EXPORT_SYMBOL_GPL vmlinux 0xf3fcf052 rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0xf413a366 dm_requeue_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xf4249101 wm831x_reg_lock +EXPORT_SYMBOL_GPL vmlinux 0xf440de5c unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0xf4554688 relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0xf469c705 ps3_io_irq_destroy +EXPORT_SYMBOL_GPL vmlinux 0xf46e006c i2c_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xf47fb37a sdio_writel +EXPORT_SYMBOL_GPL vmlinux 0xf499fdb2 rcu_barrier_bh +EXPORT_SYMBOL_GPL vmlinux 0xf4ae0174 ata_common_sdev_attrs +EXPORT_SYMBOL_GPL vmlinux 0xf4fc2d6c __ring_buffer_alloc +EXPORT_SYMBOL_GPL vmlinux 0xf51702dc rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xf5285a10 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xf52d468c tpm_get_timeouts +EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm +EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock +EXPORT_SYMBOL_GPL vmlinux 0xf5695d8d debugfs_create_blob +EXPORT_SYMBOL_GPL vmlinux 0xf5791f1f fuse_file_fallocate +EXPORT_SYMBOL_GPL vmlinux 0xf58d8d2c __srcu_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus +EXPORT_SYMBOL_GPL vmlinux 0xf5bb1df6 __inet_inherit_port +EXPORT_SYMBOL_GPL vmlinux 0xf5ee61ec disk_map_sector_rcu +EXPORT_SYMBOL_GPL vmlinux 0xf64834de vfs_getxattr +EXPORT_SYMBOL_GPL vmlinux 0xf65d2cb2 register_wide_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xf69f9c0b device_pm_wait_for_dev +EXPORT_SYMBOL_GPL vmlinux 0xf6d167be crypto_alloc_pcomp +EXPORT_SYMBOL_GPL vmlinux 0xf6e04730 event_storage +EXPORT_SYMBOL_GPL vmlinux 0xf6e874f5 ata_timing_merge +EXPORT_SYMBOL_GPL vmlinux 0xf732e62f ipv6_recv_error +EXPORT_SYMBOL_GPL vmlinux 0xf7341b9f dev_pm_qos_add_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf7354799 pm_qos_update_request +EXPORT_SYMBOL_GPL vmlinux 0xf73bb9e1 blk_rq_prep_clone +EXPORT_SYMBOL_GPL vmlinux 0xf76673cd xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0xf78b1968 usb_hcd_check_unlink_urb +EXPORT_SYMBOL_GPL vmlinux 0xf79874ed dma_buf_map_attachment +EXPORT_SYMBOL_GPL vmlinux 0xf79a8f85 class_for_each_device +EXPORT_SYMBOL_GPL vmlinux 0xf7bbfab9 cbe_spu_info +EXPORT_SYMBOL_GPL vmlinux 0xf7f59da6 usb_alloc_urb +EXPORT_SYMBOL_GPL vmlinux 0xf7f9eb58 led_trigger_show +EXPORT_SYMBOL_GPL vmlinux 0xf82c47ee sata_pmp_error_handler +EXPORT_SYMBOL_GPL vmlinux 0xf857995b da903x_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xf8802492 print_stack_trace +EXPORT_SYMBOL_GPL vmlinux 0xf8d69cd7 pci_create_slot +EXPORT_SYMBOL_GPL vmlinux 0xf8e398fc memstart_addr +EXPORT_SYMBOL_GPL vmlinux 0xf8e97a8e elv_register +EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit +EXPORT_SYMBOL_GPL vmlinux 0xf8fe3d0b kmsg_dump_register +EXPORT_SYMBOL_GPL vmlinux 0xf92ce956 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0xf97a3aee simple_attr_release +EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies +EXPORT_SYMBOL_GPL vmlinux 0xf9b8670e unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0xf9ca3160 ata_id_xfermask +EXPORT_SYMBOL_GPL vmlinux 0xfa006b0a crypto_shash_digest +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 0xfa403e7f bdi_writeout_inc +EXPORT_SYMBOL_GPL vmlinux 0xfa6d2e42 ablkcipher_walk_phys +EXPORT_SYMBOL_GPL vmlinux 0xfa901b31 compat_get_timespec +EXPORT_SYMBOL_GPL vmlinux 0xfaa6e353 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0xfaa7a15a pm_qos_remove_request +EXPORT_SYMBOL_GPL vmlinux 0xfab60503 klist_iter_init_node +EXPORT_SYMBOL_GPL vmlinux 0xfab68ad9 sata_std_hardreset +EXPORT_SYMBOL_GPL vmlinux 0xfac47f83 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0xfacf74e9 pci_check_and_unmask_intx +EXPORT_SYMBOL_GPL vmlinux 0xfafc8fb6 inet_csk_listen_stop +EXPORT_SYMBOL_GPL vmlinux 0xfafd73e0 do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0xfafde6a0 skb_tstamp_tx +EXPORT_SYMBOL_GPL vmlinux 0xfb102f09 irq_set_default_host +EXPORT_SYMBOL_GPL vmlinux 0xfb23c91e sysfs_unmerge_group +EXPORT_SYMBOL_GPL vmlinux 0xfb245693 regulator_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync +EXPORT_SYMBOL_GPL vmlinux 0xfb348b3e crypto_unregister_ahash +EXPORT_SYMBOL_GPL vmlinux 0xfb49b0be usb_get_current_frame_number +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 0xfb73c1f8 ata_do_set_mode +EXPORT_SYMBOL_GPL vmlinux 0xfb838009 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0xfb8426bf crypto_remove_spawns +EXPORT_SYMBOL_GPL vmlinux 0xfbbedefd of_prop_next_string +EXPORT_SYMBOL_GPL vmlinux 0xfbf9be5d register_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xfbfcdc2b ps3_sys_manager_get_wol +EXPORT_SYMBOL_GPL vmlinux 0xfc144bf3 dm_kill_unmapped_request +EXPORT_SYMBOL_GPL vmlinux 0xfc5550f3 usb_driver_release_interface +EXPORT_SYMBOL_GPL vmlinux 0xfc59a81f md_rdev_init +EXPORT_SYMBOL_GPL vmlinux 0xfc63000d raw_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xfc6e5cc7 dma_buf_fd +EXPORT_SYMBOL_GPL vmlinux 0xfc7013fb led_classdev_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc7e3ba7 shash_ahash_update +EXPORT_SYMBOL_GPL vmlinux 0xfc8a96aa inet6_csk_search_req +EXPORT_SYMBOL_GPL vmlinux 0xfc8bf2be irq_setup_generic_chip +EXPORT_SYMBOL_GPL vmlinux 0xfc938d10 call_srcu +EXPORT_SYMBOL_GPL vmlinux 0xfcd2dedd blk_rq_check_limits +EXPORT_SYMBOL_GPL vmlinux 0xfcd7bc0b ring_buffer_empty +EXPORT_SYMBOL_GPL vmlinux 0xfcda1e7e queue_kthread_work +EXPORT_SYMBOL_GPL vmlinux 0xfcf33bf1 ata_eh_thaw_port +EXPORT_SYMBOL_GPL vmlinux 0xfcffb4e1 pmac_i2c_get_flags +EXPORT_SYMBOL_GPL vmlinux 0xfd033fba mmc_switch +EXPORT_SYMBOL_GPL vmlinux 0xfd135bb4 i2c_add_numbered_adapter +EXPORT_SYMBOL_GPL vmlinux 0xfd17d221 usb_find_alt_setting +EXPORT_SYMBOL_GPL vmlinux 0xfd209f8c rio_get_asm +EXPORT_SYMBOL_GPL vmlinux 0xfd4c907a cpu_remove_dev_attr +EXPORT_SYMBOL_GPL vmlinux 0xfd71397f spi_unregister_master +EXPORT_SYMBOL_GPL vmlinux 0xfdbd0a5a irq_find_mapping +EXPORT_SYMBOL_GPL vmlinux 0xfdd8c87c pci_reset_pri +EXPORT_SYMBOL_GPL vmlinux 0xfde0b92c crypto_larval_error +EXPORT_SYMBOL_GPL vmlinux 0xfdfeb6c7 transport_destroy_device +EXPORT_SYMBOL_GPL vmlinux 0xfe1a136b regmap_update_bits +EXPORT_SYMBOL_GPL vmlinux 0xfe2277a5 cpufreq_frequency_table_verify +EXPORT_SYMBOL_GPL vmlinux 0xfe7c15b9 unregister_hw_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0xfe95dc4d device_schedule_callback_owner +EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free +EXPORT_SYMBOL_GPL vmlinux 0xfeb3b79b shmem_file_setup +EXPORT_SYMBOL_GPL vmlinux 0xfec98254 dma_run_dependencies +EXPORT_SYMBOL_GPL vmlinux 0xfed11ed1 usb_mon_deregister +EXPORT_SYMBOL_GPL vmlinux 0xfed20f26 free_css_id +EXPORT_SYMBOL_GPL vmlinux 0xfed5b9da spu_management_ops +EXPORT_SYMBOL_GPL vmlinux 0xfef8a166 trace_current_buffer_lock_reserve +EXPORT_SYMBOL_GPL vmlinux 0xff06a1c8 rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0xff0dacff ps3av_video_mute +EXPORT_SYMBOL_GPL vmlinux 0xff10fc54 pci_load_and_free_saved_state +EXPORT_SYMBOL_GPL vmlinux 0xff14905e fuse_request_send_background +EXPORT_SYMBOL_GPL vmlinux 0xff336f9c wm8350_reg_read +EXPORT_SYMBOL_GPL vmlinux 0xff380bcd relay_close +EXPORT_SYMBOL_GPL vmlinux 0xff4bb07c rio_request_inb_mbox +EXPORT_SYMBOL_GPL vmlinux 0xff526f95 regmap_init +EXPORT_SYMBOL_GPL vmlinux 0xff5a8cfe cn_del_callback +EXPORT_SYMBOL_GPL vmlinux 0xff804536 uhci_check_and_reset_hc +EXPORT_SYMBOL_GPL vmlinux 0xffa4c4ec cgroup_lock +EXPORT_SYMBOL_GPL vmlinux 0xffb392c1 xfrm_audit_state_notfound_simple +EXPORT_SYMBOL_GPL vmlinux 0xffc358eb __inet_twsk_hashdance --- linux-3.5.0.orig/debian.master/control.d/vars.generic +++ linux-3.5.0/debian.master/control.d/vars.generic @@ -0,0 +1,6 @@ +arch="i386 amd64" +supported="Generic" +target="Geared toward desktop and server systems." +desc="=HUMAN= SMP" +bootloader="grub-pc | grub-efi-amd64 | grub-efi-ia32 | grub | lilo (>= 19.1)" +provides="kvm-api-4, redhat-cluster-modules, ivtv-modules" --- linux-3.5.0.orig/debian.master/control.d/flavour-control.stub +++ linux-3.5.0/debian.master/control.d/flavour-control.stub @@ -0,0 +1,98 @@ +# 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 +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 image for version PKGVER on DESC + This package contains the Linux kernel image for version PKGVER on + DESC. + . + Also includes the corresponding System.map file, the modules built by the + packager, and scripts that try to ensure that the system is not left in an + unbootable state after an update. + . + Supports SUPPORTED processors. + . + TARGET + . + You likely do not want to install this package directly. Instead, install + the linux-FLAVOUR meta-package, which will ensure that upgrades work + correctly, and that supporting packages are also installed. + +Package: linux-headers-PKGVER-ABINUM-FLAVOUR +Architecture: ARCH +Section: devel +Priority: optional +Depends: ${misc:Depends}, SRCPKGNAME-headers-PKGVER-ABINUM, ${shlibs:Depends} +Provides: SRCPKGNAME-headers, SRCPKGNAME-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/SRCPKGNAME-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. --- linux-3.5.0.orig/debian.master/control.d/vars.powerpc64-smp +++ linux-3.5.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 ppc64" --- linux-3.5.0.orig/debian.master/control.d/vars.powerpc-smp +++ linux-3.5.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.5.0.orig/debian.master/control.d/vars.omap +++ linux-3.5.0/debian.master/control.d/vars.omap @@ -0,0 +1,8 @@ +arch="armel armhf" +supported="TI OMAP3" +desc="TI OMAP3-based =HUMAN= systems" +target="Targeted towards boards such as Beagleboard, Gumstix, IGEPv2, etc." +bootloader="flash-kernel" +provides="" +section_image="universe/base" +do_debug="Yes" --- linux-3.5.0.orig/debian.master/control.d/generic.inclusion-list +++ linux-3.5.0/debian.master/control.d/generic.inclusion-list @@ -0,0 +1,144 @@ +arch/*/{crypto,kernel,oprofile} +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/char/hangcheck-timer.ko +drivers/char/lp.ko +drivers/char/nvram.ko +drivers/char/ppdev.ko +drivers/char/raw.ko +drivers/hv/* +drivers/input/evbug.ko +drivers/input/gameport/gameport.ko +drivers/input/mouse/psmouse.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/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/xen-netback/* +drivers/parport/parport.ko +drivers/parport/parport_pc.ko +drivers/pci/hotplug/acpiphp.ko +drivers/net/ethernet/dec/tulip/* +drivers/scsi/BusLogic.ko +drivers/scsi/iscsi_tcp.ko +drivers/scsi/libiscsi.ko +drivers/scsi/libiscsi_tcp.ko +drivers/scsi/libsas/* +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_wait_scan.ko +drivers/scsi/scsi_tgt.ko +drivers/scsi/vmw_pvscsi.ko +drivers/scsi/hv_storvsc.ko +drivers/usb/storage/usb-storage.ko +drivers/video/cirrusfb.ko +drivers/video/output.ko +drivers/video/syscopyarea.ko +drivers/video/sysfillrect.ko +drivers/video/sysimgblt.ko +drivers/video/vesafb.ko +drivers/video/vga16fb.ko +drivers/video/vgastate.ko +drivers/video/xen-fbfront.ko +drivers/video/fb_sys_fops.ko +drivers/virtio/virtio_balloon.ko +drivers/watchdog/softdog.ko +drivers/xen/* +fs/9p/* +fs/binfmt_misc.ko +fs/btrfs/* +fs/cachefiles/cachefiles.ko +fs/ceph/* +fs/configfs/* +fs/ext*/* +fs/fat/* +fs/nls/nls_cp437.ko +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/dccp/* +net/decnet/* +net/econet/* +net/ieee802154/* +net/ipv4/* +net/ipv6/* +net/ipx/* +net/irda/* +net/key/* +net/lapb/* +net/llc/* +net/netfilter/* +net/netrom/* +net/phonet/* +net/rose/* +net/rxrpc/* +net/sched/* +net/sctp/* +net/tipc/* +net/wanrouter/* +net/x25/* +net/xfrm/* +net/sunrpc/auth_gss/auth_rpcgss.ko +net/sunrpc/sunrpc.ko +sound/soundcore.ko +sound/core/* +sound/pci/snd-ens1370.ko +sound/drivers/pcsp/snd-pcsp.ko --- linux-3.5.0.orig/debian.master/control.d/vars.highbank +++ linux-3.5.0/debian.master/control.d/vars.highbank @@ -0,0 +1,8 @@ +arch="armhf" +supported="Calxeda highbank" +desc="Calxeda highbank ARM Server" +target="Targeted towards Calxeda highbank ARM Server" +bootloader="flash-kernel" +provides="" +section_image="universe/base" +do_debug="Yes" --- linux-3.5.0.orig/debian.master/d-i/exclude-firmware.armhf-highbank +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armhf-highbank @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.sparc +++ linux-3.5.0/debian.master/d-i/exclude-modules.sparc @@ -0,0 +1,9 @@ +efi-modules +nic-pcmcia-modules +pcmcia-modules +pcmcia-storage-modules +irda-modules +floppy-modules +fb-modules +acpi-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.armel-omap +++ linux-3.5.0/debian.master/d-i/exclude-modules.armel-omap @@ -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.5.0.orig/debian.master/d-i/exclude-firmware.armhf-omap +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armhf-omap @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/package-list +++ linux-3.5.0/debian.master/d-i/package-list @@ -0,0 +1,196 @@ +Package: kernel-image + +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: 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: 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 +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 +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.5.0.orig/debian.master/d-i/exclude-modules.armhf-omap +++ linux-3.5.0/debian.master/d-i/exclude-modules.armhf-omap @@ -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.5.0.orig/debian.master/d-i/exclude-modules.armhf-highbank +++ linux-3.5.0/debian.master/d-i/exclude-modules.armhf-highbank @@ -0,0 +1,13 @@ +serial-modules +firewire-core-modules +floppy-modules +pcmcia-storage-modules +fb-modules +nic-pcmcia-modules +pcmcia-modules +pata-modules +message-modules +virtio-modules +multipath-modules +sata-modules +ipmi-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.amd64-virtual +++ linux-3.5.0/debian.master/d-i/exclude-modules.amd64-virtual @@ -0,0 +1,15 @@ +pata-modules +serial-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.5.0.orig/debian.master/d-i/exclude-modules.powerpc +++ linux-3.5.0/debian.master/d-i/exclude-modules.powerpc @@ -0,0 +1,4 @@ +efi-modules +fb-modules +acpi-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.i386-virtual +++ linux-3.5.0/debian.master/d-i/exclude-modules.i386-virtual @@ -0,0 +1,15 @@ +pata-modules +serial-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.5.0.orig/debian.master/d-i/kernel-versions +++ linux-3.5.0/debian.master/d-i/kernel-versions @@ -0,0 +1,14 @@ +# arch version flavour installedname suffix bdep +amd64 3.5.0-27 generic 3.5.0-27-generic - + +i386 3.5.0-27 generic 3.5.0-27-generic - + +armel 3.5.0-27 omap 3.5.0-27-omap - + +armhf 3.5.0-27 omap 3.5.0-27-omap - +armhf 3.5.0-27 highbank 3.5.0-27-highbank - + +# Ports +# arch version flavour installedname suffix bdep +powerpc 3.5.0-27 powerpc-smp 3.5.0-27-powerpc-smp - +powerpc 3.5.0-27 powerpc64-smp 3.5.0-27-powerpc64-smp - --- linux-3.5.0.orig/debian.master/d-i/kernel-versions.in +++ linux-3.5.0/debian.master/d-i/kernel-versions.in @@ -0,0 +1,14 @@ +# arch version flavour installedname suffix bdep +amd64 PKGVER-ABINUM generic PKGVER-ABINUM-generic - + +i386 PKGVER-ABINUM generic PKGVER-ABINUM-generic - + +armel PKGVER-ABINUM omap PKGVER-ABINUM-omap - + +armhf PKGVER-ABINUM omap PKGVER-ABINUM-omap - +armhf PKGVER-ABINUM highbank PKGVER-ABINUM-highbank - + +# 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 - --- linux-3.5.0.orig/debian.master/d-i/exclude-modules.ia64 +++ linux-3.5.0/debian.master/d-i/exclude-modules.ia64 @@ -0,0 +1,4 @@ +irda-modules +floppy-modules +fb-modules +virtio-modules --- linux-3.5.0.orig/debian.master/d-i/exclude-firmware.armel-omap +++ linux-3.5.0/debian.master/d-i/exclude-firmware.armel-omap @@ -0,0 +1,2 @@ +nic-modules +scsi-modules --- linux-3.5.0.orig/debian.master/d-i/modules/crypto-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/usb-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/fat-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/virtio-modules +++ linux-3.5.0/debian.master/d-i/modules/virtio-modules @@ -0,0 +1,9 @@ +virtio_balloon ? +virtio_pci ? +virtio_ring ? +virtio-rng ? +hv_vmbus ? +hv_utils ? +hv_netvsc ? +hv_mouse ? +hv_storvsc ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-shared-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/squashfs-modules +++ linux-3.5.0/debian.master/d-i/modules/squashfs-modules @@ -0,0 +1 @@ +squashfs ? --- linux-3.5.0.orig/debian.master/d-i/modules/nfs-modules +++ linux-3.5.0/debian.master/d-i/modules/nfs-modules @@ -0,0 +1,5 @@ +nfs ? +nfs_acl ? +lockd ? +sunrpc ? +cifs ? --- linux-3.5.0.orig/debian.master/d-i/modules/speakup-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/fb-modules +++ linux-3.5.0/debian.master/d-i/modules/fb-modules @@ -0,0 +1,3 @@ +fbcon ? +vesafb ? +vga16fb ? --- linux-3.5.0.orig/debian.master/d-i/modules/parport-modules +++ linux-3.5.0/debian.master/d-i/modules/parport-modules @@ -0,0 +1,2 @@ +parport ? +parport_pc ? --- linux-3.5.0.orig/debian.master/d-i/modules/storage-core-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/pcmcia-storage-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/scsi-modules +++ linux-3.5.0/debian.master/d-i/modules/scsi-modules @@ -0,0 +1,126 @@ +# SCSI +raid_class ? +scsi_transport_spi ? +scsi_transport_fc ? +scsi_transport_iscsi ? +scsi_transport_sas ? +iscsi_tcp ? +libiscsi ? +amiga7xx ? +a3000 ? +a2091 ? +gvp11 ? +mvme147 ? +sgiwd93 ? +cyberstorm ? +cyberstormII ? +blz2060 ? +blz1230 ? +fastlane ? +oktagon_esp_mod ? +atari_scsi ? +mac_scsi ? +mac_esp ? +sun3_scsi ? +mvme16x ? +bvme6000 ? +sim710 ? +advansys ? +psi240i ? +BusLogic ? +dpt_i2o ? +u14-34f ? +ultrastor ? +aha152x ? +aha1542 ? +aha1740 ? +aic7xxx_old ? +ips ? +fd_mcs ? +fdomain ? +fnic ? +in2000 ? +g_NCR5380 ? +g_NCR5380_mmio ? +NCR53c406a ? +NCR_D700 ? +NCR_Q720_mod ? +sym53c416 ? +qlogicfas408 ? +qla1280 ? +pas16 ? +seagate ? +seagate ? +t128 ? +dmx3191d ? +dtc ? +zalon7xx ? +eata_pio ? +wd7000 ? +mca_53c9x ? +ibmmca ? +eata ? +dc395x ? +tmscsim ? +megaraid ? +atp870u ? +esp ? +gdth ? +initio ? +a100u2w ? +qlogicpti ? +ide-scsi ? +mesh ? +mac53c94 ? +pluto ? +dec_esp ? +3w-xxxx ? +3w-9xxx ? +ppa ? +imm ? +jazz_esp ? +sun3x_esp ? +fcal ? +lasi700 ? +nsp32 ? +ipr ? +hptiop ? +stex ? +osst ? +sg ? +ch ? +scsi_debug ? +aacraid ? +aic7xxx ? +aic79xx ? +aic94xx ? +arcmsr ? +acornscsi_mod ? +arxescsi ? +cumana_1 ? +cumana_2 ? +ecoscsi ? +oak ? +powertec ? +eesox ? +ibmvscsic ? +libsas ? +lpfc ? +megaraid_mm ? +megaraid_mbox ? +megaraid_sas ? +qla2xxx ? +sym53c8xx ? +qla4xxx ? +mvsas ? +vmw_pvscsi ? +ums-cypress ? +be2iscsi ? +3w-sas ? +isci ? + +# device handlers +scsi_dh_alua ? +scsi_dh_emc ? +scsi_dh_rdac ? +scsi_dh_hp_sw ? --- linux-3.5.0.orig/debian.master/d-i/modules/plip-modules +++ linux-3.5.0/debian.master/d-i/modules/plip-modules @@ -0,0 +1 @@ +plip ? --- linux-3.5.0.orig/debian.master/d-i/modules/fs-secondary-modules +++ linux-3.5.0/debian.master/d-i/modules/fs-secondary-modules @@ -0,0 +1,5 @@ +btrfs ? +fuse ? +ntfs ? +hfs ? +hfsplus ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-modules +++ linux-3.5.0/debian.master/d-i/modules/nic-modules @@ -0,0 +1,169 @@ +3c359 ? +3c501 ? +3c503 ? +3c505 ? +3c507 ? +3c509 ? +3c515 ? +3c523 ? +3c527 ? +3c59x ? +8139cp ? +8139too ? +82596 ? +abyss ? +ac3200 ? +adm8211 ? +airo ? +airport ? +alx ? +amd8111e ? +arc4 ? +arcnet ? +arc-rawmode ? +arc-rimi ? +arlan ? +at1700 ? +ath5k ? +ath9k ? +ath9k_htc ? +atl1 ? +atl1c ? +atl1e ? +atl2 ? +atmel ? +atmel_pci ? +b44 ? +be2net ? +bmac ? +bnx2 ? +bnx2x ? +bonding ? +brcmfmac ? +brcmsmac ? +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 ? +ibmtr ? +ipddp ? +ipw2100 ? +ipw2200 ? +iwl3945 ? +iwl4965 ? +iwl-legacy ? +iwlwifi ? +ixgb ? +ixgbe ? +lance ? +lanstreamer ? +lasi_82596 ? +lne390 ? +lp486e ? +mace ? +mlx4_core ? +mlx4_en ? +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 ? +r8169 ? +rate_control ? +rfc1051 ? +rfc1201 ? +rrunner ? +rt2400 ? +rt2400pci ? +rt2500 ? +rt2500pci ? +rt2800pci ? +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 ? +vmxnet3 ? +xen-netfront ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-pcmcia-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/message-modules +++ linux-3.5.0/debian.master/d-i/modules/message-modules @@ -0,0 +1,14 @@ +mptbase ? +mptctl ? +mptfc ? +mptlan ? +mptsas ? +mpt2sas ? +mptscsih ? +mptspi ? +i2o_block ? +i2o_bus ? +i2o_config ? +i2o_core ? +i2o_proc ? +i2o_scsi ? --- linux-3.5.0.orig/debian.master/d-i/modules/serial-modules +++ linux-3.5.0/debian.master/d-i/modules/serial-modules @@ -0,0 +1,3 @@ +generic_serial ? +serial_cs ? +synclink_cs ? --- linux-3.5.0.orig/debian.master/d-i/modules/sata-modules +++ linux-3.5.0/debian.master/d-i/modules/sata-modules @@ -0,0 +1,13 @@ +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 ? --- linux-3.5.0.orig/debian.master/d-i/modules/vlan-modules +++ linux-3.5.0/debian.master/d-i/modules/vlan-modules @@ -0,0 +1,3 @@ +slp ? +garp ? +8021q ? --- linux-3.5.0.orig/debian.master/d-i/modules/md-modules +++ linux-3.5.0/debian.master/d-i/modules/md-modules @@ -0,0 +1,15 @@ +dm-crypt ? +dm-mirror ? +dm-raid ? +dm-zero ? +faulty ? +linear ? +multipath ? +raid0 ? +raid1 ? +raid10 ? +raid456 ? + +# Extras +dm-raid45 ? +dm-loop ? --- linux-3.5.0.orig/debian.master/d-i/modules/ipmi-modules +++ linux-3.5.0/debian.master/d-i/modules/ipmi-modules @@ -0,0 +1,5 @@ +ipmi_devintf ? +ipmi_msghandler ? +ipmi_poweroff ? +ipmi_si ? +ipmi_watchdog ? --- linux-3.5.0.orig/debian.master/d-i/modules/pcmcia-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/ppp-modules +++ linux-3.5.0/debian.master/d-i/modules/ppp-modules @@ -0,0 +1,6 @@ +ppp_async ? +ppp_deflate ? +ppp_mppe ? +pppoe ? +pppox ? +ppp_synctty ? --- linux-3.5.0.orig/debian.master/d-i/modules/firewire-core-modules +++ linux-3.5.0/debian.master/d-i/modules/firewire-core-modules @@ -0,0 +1,4 @@ +firewire-core ? +firewire-ohci ? +firewire-sbp2 ? +firewire-net ? --- linux-3.5.0.orig/debian.master/d-i/modules/multipath-modules +++ linux-3.5.0/debian.master/d-i/modules/multipath-modules @@ -0,0 +1,2 @@ +dm-multipath ? +dm-round-robin ? --- linux-3.5.0.orig/debian.master/d-i/modules/mouse-modules +++ linux-3.5.0/debian.master/d-i/modules/mouse-modules @@ -0,0 +1,2 @@ +psmouse ? +usbmouse ? --- linux-3.5.0.orig/debian.master/d-i/modules/irda-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/pata-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/block-modules +++ linux-3.5.0/debian.master/d-i/modules/block-modules @@ -0,0 +1,32 @@ +aoe ? +aten ? +bpck ? +bpck6 ? +cciss ? +comm ? +cpqarray ? +DAC960 ? +dstr ? +epat ? +epia ? +fit2 ? +fit3 ? +friq ? +frpw ? +hpsa ? +kbic ? +ktti ? +nbd ? +on20 ? +on26 ? +paride ? +pcd ? +pd ? +pf ? +pg ? +pt ? +sx8 ? +umem ? +virtio_blk ? +xen-blkfront ? +mtip32xx ? --- linux-3.5.0.orig/debian.master/d-i/modules/floppy-modules +++ linux-3.5.0/debian.master/d-i/modules/floppy-modules @@ -0,0 +1 @@ +floppy ? --- linux-3.5.0.orig/debian.master/d-i/modules/fs-core-modules +++ linux-3.5.0/debian.master/d-i/modules/fs-core-modules @@ -0,0 +1,4 @@ +ext2 ? +jfs ? +reiserfs ? +xfs ? --- linux-3.5.0.orig/debian.master/d-i/modules/nic-usb-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules/input-modules +++ linux-3.5.0/debian.master/d-i/modules/input-modules @@ -0,0 +1,22 @@ +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-microsoft ? +hid-monterey ? +hid-petalynx ? +hid-pl ? +hid-samsung ? +hid-sony ? +hid-sunplus ? +hid-tmff ? +hid-zpff ? +usbhid ? --- linux-3.5.0.orig/debian.master/d-i/modules-powerpc/storage-core-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules-powerpc/scsi-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules-powerpc/nic-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules-powerpc/message-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules-powerpc/block-modules +++ linux-3.5.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.5.0.orig/debian.master/d-i/modules-sparc/message-modules +++ linux-3.5.0/debian.master/d-i/modules-sparc/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.5.0.orig/debian.master/d-i/modules-sparc/block-modules +++ linux-3.5.0/debian.master/d-i/modules-sparc/block-modules @@ -0,0 +1,9 @@ +aoe +cciss +comm +cpqarray ? +DAC960 +nbd +sx8 +umem +virtio_blk ? --- linux-3.5.0.orig/debian.master/d-i/firmware/README.txt +++ linux-3.5.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.5.0.orig/debian.master/d-i/firmware/scsi-modules +++ linux-3.5.0/debian.master/d-i/firmware/scsi-modules @@ -0,0 +1,3 @@ +qlogic/1040.bin +qlogic/12160.bin +qlogic/1280.bin --- linux-3.5.0.orig/debian.master/d-i/firmware/nic-modules +++ linux-3.5.0/debian.master/d-i/firmware/nic-modules @@ -0,0 +1,14 @@ +e100/d101m_ucode.bin +e100/d101s_ucode.bin +e100/d102e_ucode.bin +bnx2x/bnx2x-e1h-7.2.51.0.fw +bnx2x/bnx2x-e1-7.2.51.0.fw +bnx2x/bnx2x-e2-7.2.51.0.fw +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 +tigon/tg3_tso5.bin +tigon/tg3_tso.bin +tigon/tg3.bin --- linux-3.5.0.orig/debian.master/config/annotations +++ linux-3.5.0/debian.master/config/annotations @@ -0,0 +1,471 @@ +# Default filesystems are generally built-in +CONFIG_EXT3_FS y note +CONFIG_EXT4_FS y note + +# Some modules have no clear way to autoload them. +# filesystems: +CONFIG_FUSE_FS y note +CONFIG_ECRYPT_FS y note +# AGP drivers: +CONFIG_AGP y note +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 +# cpu governers: +CONFIG_CPU_FREQ_GOV_CONSERVATIVE y note +CONFIG_CPU_FREQ_GOV_ONDEMAND y note +CONFIG_CPU_FREQ_GOV_PERFORMANCE y note +CONFIG_CPU_FREQ_GOV_POWERSAVE y note +CONFIG_CPU_FREQ_GOV_USERSPACE y note +# cpufreq drivers +CONFIG_X86_ACPI_CPUFREQ y note +CONFIG_X86_POWERNOW_K8 y note +CONFIG_X86_SPEEDSTEP_CENTRINO y note +CONFIG_X86_SPEEDSTEP_ICH y note +CONFIG_X86_SPEEDSTEP_SMI y note +# devices: +CONFIG_CHR_DEV_SG y note + +# Boot essential items are always =y +# subsystems: +CONFIG_ATA y note +CONFIG_USB y note +CONFIG_RFKILL y note +CONFIG_INPUT y note +CONFIG_SCSI y note +CONFIG_HOTPLUG_PCI y note +CONFIG_HOTPLUG_PCI_PCIE y note +CONFIG_HWMON y note +CONFIG_HW_RANDOM y note +CONFIG_MMC y note +CONFIG_CRYPTO y note +CONFIG_FB y note +CONFIG_PHYLIB y note +CONFIG_I2C y note +CONFIG_CONNECTOR y note +CONFIG_THERMAL y note +CONFIG_POWER_SUPPLY y note +CONFIG_TCG_TPM y note +# networking: +CONFIG_INET_LRO y note +CONFIG_MII y note +CONFIG_TUN y note +CONFIG_TCP_CONG_CUBIC y note +# network protocols: +CONFIG_UNIX y note +CONFIG_PACKET y note +CONFIG_FDDI y note +CONFIG_PPP y note +# IPv6 packets trigger auto-loading of this module and it is easy to trigger +# a DOS unless this is builtin. It is also a critical protocol going forward +# and will become boot essential. +CONFIG_IPV6 y note +# input devices +CONFIG_INPUT_EVDEV y note +CONFIG_INPUT_MOUSEDEV y note +CONFIG_INPUT_UINPUT y note +# ACPI drivers +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_HED y note +CONFIG_ACPI_CONTAINER y note + +# IPv6 configuration. +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION m note + +# Boot essential disk devices +CONFIG_IOSCHED_CFQ y note +CONFIG_IOSCHED_DEADLINE y note +CONFIG_EDD y note + +# Core devices +CONFIG_LEDS_CLASS y note + +# Core CPU drivers +CONFIG_FW_LOADER y note + +# Core debugging support +CONFIG_KGDB_SERIAL_CONSOLE y note + +# Common boot essential +CONFIG_SERIAL_8250 p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_SERIAL_8250_PCI p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_SERIAL_8250_PNP p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note +CONFIG_XZ_DEC y note +CONFIG_KEYBOARD_ATKBD y note +CONFIG_SERIO y note +CONFIG_SERIO_I8042 y note +CONFIG_SERIO_LIBPS2 y note + +# XEN +CONFIG_XEN_BLKDEV_FRONTEND y note +CONFIG_XEN_NETDEV_FRONTEND y note + +# KVM +CONFIG_VIRTIO_BLK p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_NET p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_PCI p policy<(arch i386 amd64 &/ value y) | (arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_MMIO p policy<(arch armel armhf &/ value n) | value m> note +CONFIG_VIRTIO_BALLOON p policy<(arch armel armhf &/ value n) | value m> note + +# VIRT +CONFIG_SCSI_VIRTIO m note + +# Boot essential dependancies +CONFIG_BLK_CGROUP y note +CONFIG_BLK_DEV_DM y note +CONFIG_BLK_DEV_LOOP y note +CONFIG_BLK_DEV_MD y note +CONFIG_BLK_DEV_RAM y note +CONFIG_BLK_DEV_SD y note +CONFIG_BLK_DEV_SR y note +CONFIG_DNS_RESOLVER y note +CONFIG_CRC_T10DIF y note +CONFIG_ZSMALLOC y note +# CONFIG_ECRYPTFS or CONFIG_DM +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_CRC32C_INTEL y note +CONFIG_CRYPTO_DEV_PADLOCK y note +CONFIG_CRYPTO_CRC32C y note +CONFIG_CRYPTO_AES y note +CONFIG_CRYPTO_CBC y note +CONFIG_CRYPTO_ECB y note +CONFIG_CRYPTO_HMAC y note +CONFIG_CRYPTO_MANAGER y note +CONFIG_CRYPTO_MD5 y note +CONFIG_CRYPTO_SHA1 y note +CONFIG_CRYPTO_SHA256 y note +CONFIG_CRYPTO_LZO p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_CRC16 y note +CONFIG_CRC32 y note +CONFIG_ENCRYPTED_KEYS y note +CONFIG_TRUSTED_KEYS y note +# DRM +CONFIG_BACKLIGHT_CLASS_DEVICE y note +# cpu freq +CONFIG_CPU_FREQ_STAT p policy<(arch i386 amd64 armel armhf &/ value y) | value m> note + +# Interesting new subsystems +CONFIG_NFC m note +CONFIG_NFC_NCI m note + +# EXPERIMENTAL Network protocols are generally enabled to allow testing. +CONFIG_ECONET m note +CONFIG_IEEE802154 m note +CONFIG_LAPB m note +CONFIG_NET_DSA m note +CONFIG_RDS m note +CONFIG_TIPC m note +CONFIG_X25 m note + +# ATA controolers: some are boot essential on specific architectures +CONFIG_ATA_GENERIC p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_ATA_PIIX p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_PATA_ACPI p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_PATA_SIS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SATA_SVW p policy<(arch powerpc &/ value y) | value m> note +CONFIG_SATA_AHCI p policy<(arch i386 amd64 powerpc &/ value y) | value m> note + +# x86 boot essential +CONFIG_PCI_IOAPIC p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_RTC_DRV_CMOS p policy<(arch i386 amd64 &/ value y) | value m> note +CONFIG_SCSI_SPI_ATTRS p policy<(arch i386 amd64 &/ value y) | value m> note + +# ARM/EFI requires FAT for kernel installation. +CONFIG_FAT_FS p policy<(arch armel armhf i386 amd64 &/ value y) | value m> note +CONFIG_VFAT_FS p policy<(arch armel armhf i386 amd64 &/ value y) | value m> note +CONFIG_NLS_CODEPAGE_437 p policy<((flavour omap omap4 | arch i386 amd64) &/ value y) | value m> note +CONFIG_NLS y note + +# ARM boot essential devices +CONFIG_MMC_BLOCK p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_MMC_OMAP_HS p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_FB_OMAP2 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_I2C_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_NOP_USB_XCEIV p policy<(flavour omap highbank &/ value y) | value m> note +CONFIG_PANEL_GENERIC_DPI p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_REGULATOR_FIXED_VOLTAGE p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_SERIAL_OMAP p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_GPIO_TWL4030 p policy<(arch armel armhf &/ value y) | value m> note +CONFIG_OMAP2_DSS p policy<(arch armel armhf &/ value y) | value m> note + +# omap3/omap4 boot essential +CONFIG_MTD p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_BLKDEVS p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_BLOCK p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_CHAR p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_NAND p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_NAND_OMAP2 p policy<(flavour omap &/ value y) | value m> note +CONFIG_MTD_OF_PARTS p policy<(flavour omap &/ value y) | value m> note +CONFIG_RTC_DRV_TWL4030 p policy<(flavour omap omap4 &/ value y) | value m> note +CONFIG_KEYBOARD_OMAP4 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_KEYBOARD_TWL4030 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_NET_SMSC95XX p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_USBNET p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_DRM p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_HWSPINLOCK_OMAP y note +CONFIG_HWSPINLOCK_ATMEL n note +CONFIG_HW_RANDOM_ATMEL n note +CONFIG_LEDS_GPIO p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LEDS_PWM p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LEDS_TRIGGER_HEARTBEAT p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_LIB80211 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MMC_OMAP p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MEDIA_SUPPORT p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_MFD_SM501 p policy<(flavour omap4 &/ value y) | value m> note +CONFIG_USB_INVENTRA_DMA p policy<(flavour omap &/ value y) | value n> note + +# highbank boot essential +CONFIG_SATA_AHCI_PLATFORM p policy<(flavour highbank &/ value y) | (flavour omap4 &/ value n) | value m> note flag +CONFIG_EXT2_FS p policy<(flavour highbank &/ value y) | value m> note +CONFIG_KEYBOARD_HIGHBANK p policy<(flavour highbank &/ value y) | value m> note +CONFIG_I2C_DESIGNWARE_PLATFORM p policy<(flavour highbank &/ value y) | value m> note + +# POWERPC boot essential devices +CONFIG_FB_VOODOO1 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_3DFX p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_PS3 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_ATY128 p policy<(arch powerpc &/ value y) | value m> note +CONFIG_FB_RADEON p policy<(arch powerpc &/ value y) | value m> note +CONFIG_I2C_POWERMAC p policy<(arch powerpc &/ value y) | value m> note +CONFIG_NVRAM p policy<(arch powerpc &/ value y) | value m> note +CONFIG_HW_RANDOM_PASEMI p policy<(arch powerpc &/ value y) | value m> note +CONFIG_PS3_PS3AV p policy<(arch powerpc &/ value y) | value m> note +CONFIG_PS3_SYS_MANAGER p policy<(arch powerpc &/ value y) | value m> note +CONFIG_SERIAL_PMACZILOG p policy<(arch powerpc &/ value y) | value m> note +CONFIG_THERM_ADT746X p policy<(arch powerpc &/ value y) | value m> note + +# XEN host boot essential +CONFIG_XEN_ACPI_PROCESSOR p policy<(arch i386 amd64 &/ value y) | value m> + +# devices which make no sense on some platforms +CONFIG_PCCARD p policy<(arch armel armhf &/ value n) | value m> note + +# GRUB2 boot requirement +CONFIG_FRAMEBUFFER_CONSOLE y note + +# TESTING options +CONFIG_DMATEST n flag +CONFIG_DEBUG_NX_TEST n flag +CONFIG_BACKTRACE_SELF_TEST n flag +CONFIG_FB_VIRTUAL n flag +CONFIG_MMC_TEST n flag +CONFIG_MMIOTRACE_TEST n flag +CONFIG_RCU_TORTURE_TEST n flag +CONFIG_IEEE802154_FAKEHARD n flag +CONFIG_LKDTM n flag +CONFIG_WL12XX_SDIO_TEST n flag +CONFIG_RING_BUFFER_BENCHMARK n flag +CONFIG_RTC_DRV_TEST n flag +CONFIG_USB_DUMMY_HCD n flag +CONFIG_PCIEAER_INJECT n flag +CONFIG_PPS_CLIENT_KTIMER n flag +CONFIG_CRC32_SELFTEST n flag +CONFIG_OF_SELFTEST n flag +CONFIG_USB_ZERO_HNPTEST n flag + +# DEBUGGING option +CONFIG_BRCMDBG - flag +CONFIG_USB_XHCI_HCD_DEBUGGING n flag + +# USB +CONFIG_USB_EHCI_HCD y note +CONFIG_USB_OHCI_HCD y note +CONFIG_USB_UHCI_HCD y note +CONFIG_USB_XHCI_HCD y note + +# ARM commonly use sd cards as root disks. +CONFIG_MMC_SDHCI p policy<(flavour omap highbank &/ value y) | value m> note + +# Security risk. +CONFIG_ACPI_CUSTOM_METHOD n note + +# DM_RAID45 only appears in PC BIOS based systems +CONFIG_DM_RAID45 p policy<(arch i386 amd64 &/ value m) | value n> note + +# EFI_VARS is required for EFI boot +CONFIG_EFI_VARS y note + +# OLD/DEPRECATED things +CONFIG_BLK_DEV_HD n note +CONFIG_IA32_AOUT n note +CONFIG_BLK_DEV_SR_VENDOR n note +CONFIG_MOUSE_INPORT n note +CONFIG_OMAP_IOVMM n note + +# Debugging options are off by default, we want those below. +CONFIG_DEBUG_FS y note +CONFIG_DEBUG_KERNEL y note + +# IKCONFIG not required +CONFIG_IKCONFIG n note + +# POWERPC +CONFIG_PATA_MACIO y note +CONFIG_I2C_ALGOBIT p policy<(arch powerpc &/ value y) | value m> note + +# Non-obvious filesystems. +CONFIG_USB_FUNCTIONFS m note +CONFIG_USB_GADGETFS m note +CONFIG_LOGFS n note +CONFIG_USB_OTG_BLACKLIST_HUB n note +CONFIG_USB_OTG_WHITELIST n note + +# filesystem misc +CONFIG_AUFS_PROC_MAP n note +CONFIG_SQUASHFS_4K_DEVBLK_SIZE n note + +# ARM omap3 +CONFIG_PANEL_DVI y note +CONFIG_PANEL_SHARP_LS037V7DW01 p policy<(flavour omap &/ value y) | value m> note +CONFIG_PANEL_TPO_TD043MTEA1 p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_MCBSP p policy<(flavour omap &/ value y) | value m> note +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE p policy<(flavour omap &/ value y) | value m> note +CONFIG_USB_MUSB_TUSB6010 p policy<(flavour omap highbank &/ value n) | value m> note +CONFIG_USB_OMAP n note + +# ARM gadget mode +CONFIG_USB_GADGET p policy<(flavour omap omap4 &/ value y) | value m> note +CONFIG_USB_OTG y note +CONFIG_USB_G_MULTI p policy<(flavour omap omap4 &/ value m) | value n> note +CONFIG_USB_M66592 n note + +# powerpc64-smp requires this as CONFIG_MAPLE is enabled +CONFIG_ATA_NONSTANDARD p policy<(flavour powerpc64-smp &/ value y) | value n> note + +# APM Emulation is deliberately off on ARM to prevent new use. +CONFIG_APM_EMULATION p policy<(arch armel armhf &/ value n) | value m> note + +# BLK_DEV_XD -- ancient drives +CONFIG_BLK_DEV_XD n note + +# Geode specific, should be enabled by drivers that need it not manually. +CONFIG_CS5535_MFGPT n note +CONFIG_GPIO_CS5535 p policy<(value CONFIG_OLPC_X01_SCI y &/ value y) | value m> note + +# DVB_DUMMY_FE only recommended for experts +CONFIG_DVB_DUMMY_FE n note + +# ARM unsupported SOC +CONFIG_FTGMAC100 n note +CONFIG_FTMAC100 n note +CONFIG_ARCH_EXYNOS n note +CONFIG_ARCH_HIGHBANK n note +CONFIG_ARCH_PICOXCELL n note +CONFIG_ARCH_PRIMA2 n note +CONFIG_ARCH_ZYNQ n note + +# Options which really should not have an option at all. +CONFIG_SIGMA n note +CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL n + +# Items which are simply miss identified +CONFIG_DEBUG_LL_UART_NONE y note +CONFIG_USB_SERIAL_DEBUG m note + +# Experimental +CONFIG_DM_THIN_PROVISIONING m note +CONFIG_RTL8192DE m note +CONFIG_BLK_DEV_UMEM m note + +# PHY device with non-standard naming. +CONFIG_B43_PHY_HT y note +CONFIG_B43_PHY_N y note +CONFIG_STE10XP y note + +# Optional scheduling control +CONFIG_CFS_BANDWIDTH y note + +# Hardware specific experimental options. +CONFIG_EDAC_SBRIDGE m note +CONFIG_SM_FTL m note +CONFIG_SPI_SPIDEV m note +CONFIG_ATH6KL_USB m note +CONFIG_USB_KC2190 y note + +# Dummy drivers +CONFIG_IIO_SIMPLE_DUMMY_BUFFER n note +CONFIG_IIO_SIMPLE_DUMMY_EVENTS n note + +# Options where the default is simply too broad: +# INPUT_KXTJ9_POLLED_MODE -- polling is bad generally +CONFIG_INPUT_KXTJ9_POLLED_MODE n + +# The intel IOMMU being on by default causes a slew of issues with +# machines. We therefore enable its use, but default it off. +CONFIG_INTEL_IOMMU_DEFAULT_ON n note + +# H/W specific options +CONFIG_PATA_HPT3X3_DMA n note +CONFIG_B43_BCMA_EXTRA n note + +# XXX: temporarily disabled options -- build failures. +CONFIG_TI_CPSW - flag +CONFIG_USB_EHCI_HCD_PLATFORM - flag +CONFIG_LIS3L02DQ - flag +CONFIG_EZX_PCAP - flag +CONFIG_TOUCHSCREEN_EGALAX - flag +CONFIG_TOUCHSCREEN_EETI - flag +CONFIG_SPI_PL022 - flag +CONFIG_SPI_DW_MMIO - flag +CONFIG_SENSORS_AK8975 - flag note +CONFIG_IIO p policy<(flavour omap4 &/ value n) | value m> flag + +# Valid y/n options which are in a sensible position. +CONFIG_PPC_ICSWX_USE_SIGILL n note +# forces padding mode, without this we can select at runtime +CONFIG_USB_SERIAL_SAFE_PADDED n note +# allows the console to move to an external USB device +CONFIG_USB_SISUSBVGA_CON n note + +# Old/Deprecated +CONFIG_SCSI_AIC7XXX_OLD n note + +# OSS is handled via pulseaudio +CONFIG_SND_PCM_OSS n note + +# Poulsbo is handled by DRM_GMA500 +CONFIG_STUB_POULSBO n note + +# Risky +CONFIG_RTAS_FLASH n note + +# Only valid on fully certified platforms +CONFIG_ATH9K_DFS_CERTIFIED n note + +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not compatible with upstart +CONFIG_AUDIT_LOGINUID_IMMUTABLE n note + +# Machine specific on systems we cannot encounter. +CONFIG_GPIO_EM n note + +# Standard options. +CONFIG_PANIC_ON_OOPS n note + +# CEPHs dependancies +CONFIG_BLK_DEV_RBD m note + +# CGROUP modifications. +CONFIG_BLK_DEV_THROTTLING y note + +# Not a thing +CONFIG_USB_OHCI_HCD_PLATFORM - flag +CONFIG_USB_EHCI_HCD_PLATFORM - flag +CONFIG_USB_OHCI_HCD_PPC_OF_LE - flag +CONFIG_SENSORS_SCH56XX_COMMON - flag + +# Block Dev +CONFIG_BLK_DEV_XIP n note + +# This option allows bridging between non-IP and IP networks, but is +# effectivly deprecated. We _may_ just _may_ have users on older arches +# so keep it there, but do not spread the pain to systems without these +# other networks. +CONFIG_WAN_ROUTER p policy<(arch i386 amd64 powerpc &/ value m) | value n> --- linux-3.5.0.orig/debian.master/config/config.common.ports +++ linux-3.5.0/debian.master/config/config.common.ports @@ -0,0 +1,3 @@ +# +# Common config options automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/config.common.ubuntu +++ linux-3.5.0/debian.master/config/config.common.ubuntu @@ -0,0 +1,6520 @@ +# +# 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_9P_FS=m +# CONFIG_9P_FSCACHE is not set +CONFIG_9P_FS_POSIX_ACL=y +CONFIG_AB3100_CORE=y +CONFIG_AB3100_OTP=m +CONFIG_AC3200=m +CONFIG_AC97_BUS=m +# 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_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=m +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_FAN=y +CONFIG_ACPI_HED=y +CONFIG_ACPI_HOTPLUG_CPU=y +CONFIG_ACPI_HOTPLUG_MEMORY=m +CONFIG_ACPI_IPMI=m +CONFIG_ACPI_NUMA=y +CONFIG_ACPI_PCI_SLOT=m +CONFIG_ACPI_PROCESSOR=y +CONFIG_ACPI_PROCESSOR_AGGREGATOR=m +# CONFIG_ACPI_PROCFS is not set +# CONFIG_ACPI_PROCFS_POWER is not set +CONFIG_ACPI_PROC_EVENT=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_AD5504=m +CONFIG_AD5624R_SPI=m +CONFIG_AD5686=m +CONFIG_AD5764=m +CONFIG_AD5791=m +CONFIG_AD5930=m +CONFIG_AD5933=m +CONFIG_AD7150=m +CONFIG_AD7152=m +CONFIG_AD7192=m +CONFIG_AD7280=m +CONFIG_AD7291=m +CONFIG_AD7298=m +CONFIG_AD7476=m +CONFIG_AD7606=m +CONFIG_AD7606_IFACE_PARALLEL=m +CONFIG_AD7606_IFACE_SPI=m +CONFIG_AD7746=m +CONFIG_AD7780=m +CONFIG_AD7793=m +CONFIG_AD7816=m +CONFIG_AD7887=m +CONFIG_AD799X=m +CONFIG_AD799X_RING_BUFFER=y +CONFIG_AD8366=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_ADB_PMU_LED_IDE is not set +CONFIG_ADE7753=m +CONFIG_ADE7754=m +CONFIG_ADE7758=m +CONFIG_ADE7759=m +CONFIG_ADE7854=m +CONFIG_ADE7854_I2C=m +CONFIG_ADE7854_SPI=m +CONFIG_ADFS_FS=m +# CONFIG_ADFS_FS_RW is not set +CONFIG_ADIS16060=m +CONFIG_ADIS16080=m +CONFIG_ADIS16130=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_ADM8211=m +CONFIG_ADT7310=m +CONFIG_ADT7316=m +CONFIG_ADT7316_I2C=m +CONFIG_ADT7316_SPI=m +CONFIG_ADT7410=m +# CONFIG_ADVANCED_OPTIONS is not set +CONFIG_ADVANTECH_WDT=m +CONFIG_ADXRS450=m +CONFIG_AEABI=y +CONFIG_AFFS_FS=m +# CONFIG_AFS_DEBUG is not set +CONFIG_AFS_FS=m +CONFIG_AFS_FSCACHE=y +CONFIG_AF_RXRPC=m +# CONFIG_AF_RXRPC_DEBUG is not set +CONFIG_AGP=y +CONFIG_AGP_ALI=m +CONFIG_AGP_AMD=y +CONFIG_AGP_AMD64=y +CONFIG_AGP_ATI=m +CONFIG_AGP_EFFICEON=m +CONFIG_AGP_INTEL=y +CONFIG_AGP_NVIDIA=y +CONFIG_AGP_SIS=m +CONFIG_AGP_SWORKS=m +CONFIG_AGP_UNINORTH=m +CONFIG_AGP_VIA=y +CONFIG_AIC79XX_CMDS_PER_DEVICE=32 +CONFIG_AIC79XX_DEBUG_ENABLE=y +CONFIG_AIC79XX_DEBUG_MASK=0 +CONFIG_AIC79XX_REG_PRETTY_PRINT=y +CONFIG_AIC7XXX_CMDS_PER_DEVICE=8 +CONFIG_AIC7XXX_DEBUG_ENABLE=y +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_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_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_AMILO_RFKILL=m +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_INTF_ALARM_DEV=y +CONFIG_ANDROID_LOGGER=m +CONFIG_ANDROID_LOW_MEMORY_KILLER=y +CONFIG_ANDROID_TIMED_GPIO=m +CONFIG_ANDROID_TIMED_OUTPUT=y +CONFIG_ANON_INODES=y +CONFIG_ANSLCD=m +CONFIG_APB_TIMER=y +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_APRICOT=m +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCMRING is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX 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_ENABLE_MEMORY_HOTPLUG=y +CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=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_H720X is not set +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_DEFAULT_IDLE=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_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_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_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_MMP is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_NOMADIK is not set +CONFIG_ARCH_NR_GPIO=0 +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2 is not set +CONFIG_ARCH_OMAP2PLUS=y +CONFIG_ARCH_OMAP2PLUS_TYPICAL=y +CONFIG_ARCH_OMAP3=y +# CONFIG_ARCH_OMAP4 is not set +CONFIG_ARCH_OMAP_OTG=y +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PICOXCELL is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PRIMA2 is not set +CONFIG_ARCH_PROC_KCORE_TEXT=y +# CONFIG_ARCH_PXA is not set +CONFIG_ARCH_RANDOM=y +# CONFIG_ARCH_REALVIEW is not set +CONFIG_ARCH_REQUIRE_GPIOLIB=y +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_SHMOBILE is not set +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y +CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE=y +CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y +CONFIG_ARCH_SUPPORTS_UPROBES=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +CONFIG_ARCH_USES_PG_UNCACHED=y +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VT8500 is not set +# CONFIG_ARCH_W90X900 is not set +CONFIG_ARCH_WANTS_FREEZER_CONTROL=y +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=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_ARM=y +CONFIG_ARM_AMBA=y +# CONFIG_ARM_APPENDED_DTB is not set +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_742230 is not set +# CONFIG_ARM_ERRATA_742231 is not set +# CONFIG_ARM_ERRATA_751472 is not set +CONFIG_ARM_ERRATA_754322=y +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set +# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set +# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set +CONFIG_ARM_GIC=y +CONFIG_ARM_KPROBES_TEST=m +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_L1_CACHE_SHIFT_6=y +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_NR_BANKS=8 +CONFIG_ARM_OMAP2PLUS_CPUFREQ=y +CONFIG_ARM_PATCH_PHYS_VIRT=y +CONFIG_ARM_SP805_WATCHDOG=m +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_TIMER_SP804=y +CONFIG_ARM_UNWIND=y +# CONFIG_ARPD is not set +CONFIG_ASHMEM=y +CONFIG_ASUS_LAPTOP=m +CONFIG_ASUS_NB_WMI=m +CONFIG_ASUS_OLED=m +CONFIG_ASUS_WMI=m +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_DISABLE_PQ_VAL_DMA=y +CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y +CONFIG_ASYNC_XOR=m +CONFIG_AT1700=m +CONFIG_AT76C50X_USB=m +CONFIG_ATA=y +CONFIG_ATAGS_PROC=y +CONFIG_ATALK=m +CONFIG_ATA_ACPI=y +CONFIG_ATA_BMDMA=y +CONFIG_ATA_OVER_ETH=m +CONFIG_ATA_SFF=y +CONFIG_ATA_VERBOSE_ERROR=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_USB=m +CONFIG_ATH9K=m +CONFIG_ATH9K_AHB=y +CONFIG_ATH9K_BTCOEX_SUPPORT=y +CONFIG_ATH9K_COMMON=m +CONFIG_ATH9K_DEBUGFS=y +# CONFIG_ATH9K_DFS_CERTIFIED is not set +CONFIG_ATH9K_HTC=m +CONFIG_ATH9K_HTC_DEBUGFS=y +CONFIG_ATH9K_HW=m +# CONFIG_ATH9K_MAC_DEBUG is not set +CONFIG_ATH9K_PCI=y +CONFIG_ATH9K_RATE_CONTROL=y +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_ATM_AMBASSADOR=m +# CONFIG_ATM_AMBASSADOR_DEBUG is not set +CONFIG_ATM_BR2684=m +CONFIG_ATM_CLIP=m +# CONFIG_ATM_CLIP_NO_ICMP is not set +CONFIG_ATM_DRIVERS=y +CONFIG_ATM_DUMMY=m +CONFIG_ATM_ENI=m +# CONFIG_ATM_ENI_DEBUG is not set +# CONFIG_ATM_ENI_TUNE_BURST is not set +CONFIG_ATM_FIRESTREAM=m +CONFIG_ATM_FORE200E=m +CONFIG_ATM_FORE200E_DEBUG=0 +CONFIG_ATM_FORE200E_TX_RETRY=16 +# CONFIG_ATM_FORE200E_USE_TASKLET is not set +CONFIG_ATM_HE=m +CONFIG_ATM_HE_USE_SUNI=y +CONFIG_ATM_HORIZON=m +# CONFIG_ATM_HORIZON_DEBUG is not set +CONFIG_ATM_IA=m +# CONFIG_ATM_IA_DEBUG is not set +CONFIG_ATM_IDT77252=m +# CONFIG_ATM_IDT77252_DEBUG is not set +# CONFIG_ATM_IDT77252_RCV_ALL is not set +CONFIG_ATM_IDT77252_USE_SUNI=y +CONFIG_ATM_LANAI=m +CONFIG_ATM_LANE=m +CONFIG_ATM_MPOA=m +CONFIG_ATM_NICSTAR=m +# CONFIG_ATM_NICSTAR_USE_IDT77105 is not set +# CONFIG_ATM_NICSTAR_USE_SUNI is not set +CONFIG_ATM_SOLOS=m +CONFIG_ATM_TCP=m +CONFIG_ATM_ZATM=m +# CONFIG_ATM_ZATM_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +CONFIG_ATP=m +CONFIG_AUDIT=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_GENERIC=y +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set +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 is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_POLL=y +# CONFIG_AUFS_PROC_MAP is not set +# 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 is not set +CONFIG_AVERAGE=y +CONFIG_AX25=m +CONFIG_AX88796=m +# CONFIG_AX88796_93CX6 is not set +CONFIG_B43=m +CONFIG_B43LEGACY=m +CONFIG_B43LEGACY_DEBUG=y +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_EXTRA is not set +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_ATMEL_PWM=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_LCD_SUPPORT=y +CONFIG_BACKLIGHT_LM3533=m +CONFIG_BACKLIGHT_LP855X=m +CONFIG_BACKLIGHT_MAX8925=m +CONFIG_BACKLIGHT_PANDORA=m +CONFIG_BACKLIGHT_PCF50633=m +CONFIG_BACKLIGHT_PROGEAR=m +CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_SAHARA=m +CONFIG_BACKLIGHT_WM831X=m +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +CONFIG_BATMAN_ADV=m +CONFIG_BATMAN_ADV_BLA=y +# CONFIG_BATMAN_ADV_DEBUG is not set +CONFIG_BATTERY_BQ27X00_I2C=y +CONFIG_BATTERY_BQ27X00_PLATFORM=y +CONFIG_BATTERY_BQ27x00=m +CONFIG_BATTERY_DA9030=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_SBS=m +CONFIG_BAYCOM_EPP=m +CONFIG_BAYCOM_PAR=m +CONFIG_BAYCOM_SER_FDX=m +CONFIG_BAYCOM_SER_HDX=m +CONFIG_BCH_CONST_M=14 +CONFIG_BCH_CONST_PARAMS=y +CONFIG_BCH_CONST_T=4 +CONFIG_BCMA=m +CONFIG_BCMA_BLOCKIO=y +# CONFIG_BCMA_DEBUG is not set +CONFIG_BCMA_HOST_PCI=y +CONFIG_BCMA_HOST_PCI_POSSIBLE=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_BINARY_PRINTF=y +CONFIG_BINFMT_AOUT=m +CONFIG_BINFMT_ELF=y +CONFIG_BINFMT_MISC=m +CONFIG_BITREVERSE=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CPQ_CISS_DA=m +CONFIG_BLK_CPQ_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 is not set +CONFIG_BLK_DEV_BSG=y +CONFIG_BLK_DEV_BSGLIB=y +CONFIG_BLK_DEV_CMD64X=m +# 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_DELKIN is not set +CONFIG_BLK_DEV_DM=y +CONFIG_BLK_DEV_DRBD=m +CONFIG_BLK_DEV_FD=m +# CONFIG_BLK_DEV_GENERIC is not set +# 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_IDECS is not set +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_PMAC=y +CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y +# 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_NVME=m +# 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_SC1200 is not set +CONFIG_BLK_DEV_SD=y +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +CONFIG_BLK_DEV_SR=y +# 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_UB=m +CONFIG_BLK_DEV_UMEM=m +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_XD is not set +# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLOCK=y +CONFIG_BLOCK_COMPAT=y +CONFIG_BMAC=m +CONFIG_BMP085=y +CONFIG_BMP085_I2C=m +CONFIG_BMP085_SPI=m +CONFIG_BNA=m +CONFIG_BNX2=m +CONFIG_BNX2X=m +CONFIG_BOARD_TPCI200=m +CONFIG_BONDING=m +# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set +CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 +# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 +# CONFIG_BOOTX_TEXT is not set +CONFIG_BOOT_PRINTK_DELAY=y +CONFIG_BOUNCE=y +CONFIG_BPF_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_SDIO_OOB=y +CONFIG_BRCMFMAC_USB=y +CONFIG_BRCMSMAC=m +CONFIG_BRCMUTIL=m +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_BROADCOM_PHY=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_BT=m +CONFIG_BTREE=y +CONFIG_BTRFS_FS=m +# CONFIG_BTRFS_FS_CHECK_INTEGRITY 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_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_C2PORT=m +CONFIG_C2PORT_DURAMAR_2150=m +CONFIG_CACHEFILES=m +# CONFIG_CACHEFILES_DEBUG is not set +# CONFIG_CACHEFILES_HISTOGRAM is not set +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_CALGARY_IOMMU=y +CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y +CONFIG_CAN=m +CONFIG_CAN_BCM=m +CONFIG_CAN_CALC_BITTIMING=y +CONFIG_CAN_CC770=m +CONFIG_CAN_CC770_ISA=m +CONFIG_CAN_CC770_PLATFORM=m +CONFIG_CAN_C_CAN=m +CONFIG_CAN_C_CAN_PLATFORM=m +# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEV=m +CONFIG_CAN_EMS_PCI=m +CONFIG_CAN_EMS_PCMCIA=m +CONFIG_CAN_EMS_USB=m +CONFIG_CAN_ESD_USB2=m +CONFIG_CAN_GW=m +CONFIG_CAN_JANZ_ICAN3=m +CONFIG_CAN_KVASER_PCI=m +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_PM_TRACE=y +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=y +CONFIG_CDROM_PKTCDVD=m +CONFIG_CDROM_PKTCDVD_BUFFERS=8 +# CONFIG_CDROM_PKTCDVD_WCACHE is not set +# CONFIG_CELL_CPU is not set +CONFIG_CEPH_FS=m +CONFIG_CEPH_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_DEBUGFS=y +CONFIG_CFG80211_DEFAULT_PS=y +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB 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_MEM_RES_CTLR=y +# CONFIG_CGROUP_MEM_RES_CTLR_KMEM is not set +CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y +CONFIG_CGROUP_MEM_RES_CTLR_SWAP_ENABLED=y +CONFIG_CGROUP_PERF=y +CONFIG_CGROUP_SCHED=y +CONFIG_CHARGER_GPIO=m +CONFIG_CHARGER_ISP1704=m +CONFIG_CHARGER_LP8727=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_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_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_DEBUG2 is not set +CONFIG_CIFS_DFS_UPCALL=y +CONFIG_CIFS_FSCACHE=y +CONFIG_CIFS_POSIX=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_CLKBLD_I8253=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLKEVT_I8253=y +CONFIG_CLKSRC_I8253=y +CONFIG_CLKSRC_MMIO=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLZ_TAB=y +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="" +# CONFIG_CMDLINE_BOOL is not set +CONFIG_CMM=y +CONFIG_CNIC=m +CONFIG_CODA_FS=m +# CONFIG_CODE_PATCHING_SELFTEST is not set +CONFIG_COMEDI=m +CONFIG_COMEDI_8255=m +CONFIG_COMEDI_ACL7225B=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_2016=m +CONFIG_COMEDI_ADDI_APCI_2032=m +CONFIG_COMEDI_ADDI_APCI_2200=m +CONFIG_COMEDI_ADDI_APCI_3001=m +CONFIG_COMEDI_ADDI_APCI_3120=m +CONFIG_COMEDI_ADDI_APCI_3501=m +CONFIG_COMEDI_ADDI_APCI_3XXX=m +CONFIG_COMEDI_ADL_PCI6208=m +CONFIG_COMEDI_ADL_PCI7230=m +CONFIG_COMEDI_ADL_PCI7296=m +CONFIG_COMEDI_ADL_PCI7432=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_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=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_PCIDIO=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_ISA_DRIVERS=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=m +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_COMMON=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_MIO_CS=m +CONFIG_COMEDI_NI_PCIDIO=m +CONFIG_COMEDI_NI_PCIMIO=m +CONFIG_COMEDI_NI_TIO=m +CONFIG_COMEDI_PARPORT=m +CONFIG_COMEDI_PCI_DRIVERS=m +CONFIG_COMEDI_PCL711=m +CONFIG_COMEDI_PCL724=m +CONFIG_COMEDI_PCL725=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_PCM3730=m +CONFIG_COMEDI_PCMAD=m +CONFIG_COMEDI_PCMCIA_DRIVERS=m +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=m +CONFIG_COMEDI_VMK80XX=m +CONFIG_COMMON_CLK=y +# CONFIG_COMMON_CLK_DEBUG is not set +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_VDSO is not set +CONFIG_CONFIGFS_FS=m +CONFIG_CONNECTOR=y +CONFIG_CONSOLE_POLL=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_CONTEXT_SWITCH_TRACER=y +CONFIG_COPS=m +CONFIG_COPS_DAYNA=y +CONFIG_COPS_TANGENT=y +CONFIG_CORDIC=m +CONFIG_COSA=m +# CONFIG_CPA_DEBUG is not set +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_ONDEMAND is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +CONFIG_CPU_FREQ_GOV_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_DETAILS=y +CONFIG_CPU_FREQ_TABLE=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_HAS_PMU=y +# CONFIG_CPU_ICACHE_DISABLE is not set +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_PM=y +CONFIG_CPU_RMAP=y +CONFIG_CPU_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_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_AEAD=m +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_AES_586=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_X86_64=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CCM=m +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32C_INTEL=y +CONFIG_CRYPTO_CRYPTD=m +CONFIG_CRYPTO_CTR=m +CONFIG_CRYPTO_CTS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_DEV_GEODE=m +CONFIG_CRYPTO_DEV_HIFN_795X=m +CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y +CONFIG_CRYPTO_DEV_NX=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_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_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_LRW=m +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_SSE2_586=m +CONFIG_CRYPTO_SERPENT_SSE2_X86_64=m +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA1_SSSE3=m +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_SHA512=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_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_CXT1E1=m +CONFIG_CYCLADES=m +CONFIG_CYCLADES_SYNC=m +CONFIG_CYCLOMX_X25=y +# CONFIG_CYZ_INTR is not set +CONFIG_DA9052_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_DE600=m +CONFIG_DE620=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_HIGHBANK_UART=y +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_ICEDCC is not set +# 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=y +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +CONFIG_DEBUG_MEMORY_INIT=y +# 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_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_SEMIHOSTING 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_VIRTUAL is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT 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_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_DEFAULT_UIMAGE is not set +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_DEPCA=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_DIRECT_GBPAGES=y +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_API_DEBUG is not set +CONFIG_DMA_ENGINE=y +CONFIG_DMA_SHARED_BUFFER=y +CONFIG_DMI=y +CONFIG_DMIID=y +CONFIG_DMI_SYSFS=m +CONFIG_DM_BUFIO=m +CONFIG_DM_CRYPT=m +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set +# CONFIG_DM_DEBUG_SPACE_MAPS is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_LOG_USERSPACE is not set +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_THIN_PROVISIONING=m +CONFIG_DM_UEVENT=y +# CONFIG_DM_VERITY is not set +CONFIG_DM_ZERO=m +CONFIG_DNET=m +CONFIG_DNOTIFY=y +CONFIG_DNS_RESOLVER=y +CONFIG_DONGLE=y +CONFIG_DOUBLEFAULT=y +CONFIG_DQL=y +CONFIG_DRAGONRISE_FF=y +# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRM=m +# CONFIG_DRM_AST is not set +# CONFIG_DRM_CIRRUS_QEMU is not set +CONFIG_DRM_GMA3600=y +CONFIG_DRM_GMA500=m +CONFIG_DRM_GMA600=y +CONFIG_DRM_I2C_CH7006=m +CONFIG_DRM_I2C_SIL164=m +CONFIG_DRM_I810=m +CONFIG_DRM_I915=m +CONFIG_DRM_I915_HSW=m +CONFIG_DRM_I915_KMS=y +CONFIG_DRM_KMS_HELPER=m +CONFIG_DRM_LOAD_EDID_FIRMWARE=y +CONFIG_DRM_MEDFIELD=y +CONFIG_DRM_MGA=m +# CONFIG_DRM_MGAG200 is not set +CONFIG_DRM_NOUVEAU=m +CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_NOUVEAU_DEBUG=y +# CONFIG_DRM_OMAP is not set +CONFIG_DRM_R128=m +CONFIG_DRM_RADEON=m +CONFIG_DRM_RADEON_KMS=y +CONFIG_DRM_SAVAGE=m +CONFIG_DRM_SIS=m +CONFIG_DRM_TDFX=m +CONFIG_DRM_TTM=m +CONFIG_DRM_UDL=m +CONFIG_DRM_USB=m +CONFIG_DRM_VIA=m +CONFIG_DRM_VMWGFX=m +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_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_DEBUG is not set +CONFIG_DVB_B2C2_FLEXCOP_PCI=m +CONFIG_DVB_B2C2_FLEXCOP_USB=m +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_CAPTURE_DRIVERS=y +CONFIG_DVB_CORE=m +CONFIG_DVB_CX22700=m +CONFIG_DVB_CX22702=m +CONFIG_DVB_CX24110=m +CONFIG_DVB_CX24116=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_DIB9000=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_HD29L2=m +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_LGS8GL5=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_S5H1409=m +CONFIG_DVB_S5H1411=m +CONFIG_DVB_S5H1420=m +CONFIG_DVB_S5H1432=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_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_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_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_WATCHDOG=m +CONFIG_DX_SEP=m +# CONFIG_DYNAMIC_DEBUG is not set +CONFIG_DYNAMIC_FTRACE=y +CONFIG_E100=m +CONFIG_E1000=m +CONFIG_E1000E=m +# CONFIG_E200 is not set +CONFIG_E2100=m +CONFIG_EARLY_PRINTK=y +CONFIG_EARLY_PRINTK_DBGP=y +CONFIG_EARLY_PRINTK_INTEL_MID=y +CONFIG_EASYCAP=m +# CONFIG_EASYCAP_DEBUG is not set +CONFIG_ECHO=m +CONFIG_ECRYPT_FS=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=y +CONFIG_EDAC_HIGHBANK_MC=y +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_MCE_INJ=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_EEXPRESS=m +CONFIG_EEXPRESS_PRO=m +CONFIG_EFI=y +CONFIG_EFI_PARTITION=y +CONFIG_EFI_STUB=y +CONFIG_EFI_VARS=y +CONFIG_EFS_FS=m +CONFIG_EHEA=m +CONFIG_EISA=y +CONFIG_EISA_NAMES=y +CONFIG_EISA_PCI_EISA=y +CONFIG_EISA_VIRTUAL_ROOT=y +CONFIG_EISA_VLB_PRIMING=y +CONFIG_EL1=m +CONFIG_EL16=m +CONFIG_EL2=m +CONFIG_EL3=m +CONFIG_ELECTRA_CF=m +CONFIG_ELF_CORE=y +CONFIG_ELPLUS=m +# CONFIG_EMBEDDED 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_BOOT is not set +CONFIG_EPIC100=m +CONFIG_EPOLL=y +CONFIG_EQUALIZER=m +CONFIG_ES3210=m +CONFIG_ESI_DONGLE=m +CONFIG_ET131X=m +CONFIG_ETH16I=m +CONFIG_ETHERNET=y +CONFIG_ETHOC=m +CONFIG_EUROTECH_WDT=m +CONFIG_EVENTFD=y +CONFIG_EVENT_POWER_TRACING_DEPRECATED=y +CONFIG_EVENT_TRACING=y +CONFIG_EWRK3=m +# CONFIG_EXOFS_DEBUG is not set +CONFIG_EXOFS_FS=m +CONFIG_EXPERIMENTAL=y +CONFIG_EXPERT=y +CONFIG_EXPORTFS=y +CONFIG_EXT2_FS_POSIX_ACL=y +CONFIG_EXT2_FS_SECURITY=y +CONFIG_EXT2_FS_XATTR=y +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_DEFAULTS_TO_ORDERED=y +CONFIG_EXT3_FS=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT3_FS_XATTR=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXTCON=m +CONFIG_EXTCON_GPIO=m +CONFIG_EXTCON_MAX8997=m +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +CONFIG_EXYNOS_VIDEO=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_FAULT_INJECTION is not set +CONFIG_FA_DUMP=y +CONFIG_FB=y +# CONFIG_FB_3DFX_ACCEL is not set +CONFIG_FB_3DFX_I2C=y +CONFIG_FB_ARC=m +CONFIG_FB_ARK=m +CONFIG_FB_ARMCLCD=m +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=y +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_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_DEFERRED_IO=y +CONFIG_FB_EFI=y +# CONFIG_FB_FOREIGN_ENDIAN is not set +CONFIG_FB_GEODE=y +CONFIG_FB_GEODE_GX=m +CONFIG_FB_GEODE_GX1=m +CONFIG_FB_GEODE_LX=m +CONFIG_FB_HECUBA=m +CONFIG_FB_HGA=m +CONFIG_FB_I740=m +CONFIG_FB_I810=m +# CONFIG_FB_I810_GTF is not set +CONFIG_FB_IBM_GXT4500=m +CONFIG_FB_IMSTT=y +CONFIG_FB_INTEL=m +# CONFIG_FB_INTEL_DEBUG is not set +CONFIG_FB_INTEL_I2C=y +CONFIG_FB_KYRO=m +CONFIG_FB_LE80578=m +CONFIG_FB_MATROX=m +CONFIG_FB_MATROX_G=y +CONFIG_FB_MATROX_I2C=m +CONFIG_FB_MATROX_MAVEN=m +CONFIG_FB_MATROX_MILLENIUM=y +CONFIG_FB_MATROX_MYSTIQUE=y +CONFIG_FB_MB862XX=m +CONFIG_FB_MB862XX_I2C=y +# CONFIG_FB_MB862XX_LIME is not set +CONFIG_FB_MB862XX_PCI_GDC=y +CONFIG_FB_METRONOME=m +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_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=y +CONFIG_FB_OMAP2_DEBUG_SUPPORT=y +CONFIG_FB_OMAP2_NUM_FBS=3 +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=y +CONFIG_FB_SAVAGE_I2C=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_TMIO=m +CONFIG_FB_TMIO_ACCELL=y +CONFIG_FB_TRIDENT=m +CONFIG_FB_UDL=m +CONFIG_FB_UVESA=m +CONFIG_FB_VALKYRIE=y +CONFIG_FB_VESA=m +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_WMT_GE_ROPS is not set +CONFIG_FB_XGI=m +CONFIG_FCOE=m +CONFIG_FCOE_FNIC=m +CONFIG_FDDI=y +CONFIG_FEALNX=m +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_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_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_FORCEDETH=m +# CONFIG_FPE_FASTFPE is not set +# CONFIG_FPE_NWFPE_XP is not set +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set +CONFIG_FRAME_POINTER=y +CONFIG_FRAME_WARN=1024 +CONFIG_FREEZER=y +CONFIG_FRONTSWAP=y +CONFIG_FSCACHE=m +# CONFIG_FSCACHE_DEBUG is not set +CONFIG_FSCACHE_HISTOGRAM=y +# CONFIG_FSCACHE_OBJECT_LIST is not set +CONFIG_FSCACHE_STATS=y +CONFIG_FSL_LBC=y +# CONFIG_FSL_ULI1575 is not set +CONFIG_FSNOTIFY=y +CONFIG_FS_MBCACHE=y +CONFIG_FS_POSIX_ACL=y +CONFIG_FT1000=m +CONFIG_FT1000_PCMCIA=m +CONFIG_FT1000_USB=m +# CONFIG_FTGMAC100 is not set +CONFIG_FTL=m +# CONFIG_FTMAC100 is not set +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_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_GELIC_NET=m +CONFIG_GELIC_WIRELESS=y +CONFIG_GENERIC_ACL=y +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_CPU_DEVICES is not set +CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_GENERIC_GPIO=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HWEIGHT=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_NVRAM=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_PENDING_IRQ=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_TBSYNC=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_TRACER=y +CONFIG_GEOS=y +# CONFIG_GE_FPGA is not set +CONFIG_GFS2_FS=m +CONFIG_GFS2_FS_LOCKING_DLM=y +CONFIG_GIGASET_BASE=m +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GIGASET_DUMMYLL is not set +CONFIG_GIGASET_I4L=y +CONFIG_GIGASET_M101=m +CONFIG_GIGASET_M105=m +CONFIG_GIRBIL_DONGLE=m +# CONFIG_GOOGLE_FIRMWARE is not set +CONFIG_GPIOLIB=y +CONFIG_GPIO_74X164=m +CONFIG_GPIO_ADP5520=m +CONFIG_GPIO_ADP5588=m +CONFIG_GPIO_CS5535=m +# CONFIG_GPIO_EM is not set +CONFIG_GPIO_GENERIC=m +CONFIG_GPIO_GENERIC_PLATFORM=m +CONFIG_GPIO_ICH=m +CONFIG_GPIO_INTEL_PMIC=y +CONFIG_GPIO_IT8761E=m +CONFIG_GPIO_JANZ_TTL=m +CONFIG_GPIO_LANGWELL=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_MSIC=y +CONFIG_GPIO_PCA953X=m +CONFIG_GPIO_PCF857X=m +CONFIG_GPIO_PCH=m +CONFIG_GPIO_PL061=y +CONFIG_GPIO_RC5T583=y +CONFIG_GPIO_RDC321X=m +CONFIG_GPIO_SCH=m +CONFIG_GPIO_STMPE=y +CONFIG_GPIO_SX150X=y +CONFIG_GPIO_TC3589X=y +CONFIG_GPIO_TIMBERDALE=y +CONFIG_GPIO_TPS65910=y +CONFIG_GPIO_TPS65912=m +CONFIG_GPIO_UCB1400=y +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_HANGCHECK_TIMER=m +CONFIG_HAPPYMEAL=m +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +# CONFIG_HAS_RAPIDIO is not set +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_TRACEHOOK=y +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_TWD=y +CONFIG_HAVE_ATOMIC_IOMAP=y +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_HAVE_CMPXCHG_DOUBLE=y +CONFIG_HAVE_CMPXCHG_LOCAL=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_FP_TEST=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_GENERIC_HARDIRQS=y +CONFIG_HAVE_HW_BREAKPOINT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_INTEL_TXT=y +CONFIG_HAVE_IOREMAP_PROT=y +CONFIG_HAVE_IRQ_WORK=y +CONFIG_HAVE_KERNEL_BZIP2=y +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_KVM_EVENTFD=y +CONFIG_HAVE_KVM_IRQCHIP=y +CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_LATENCYTOP_SUPPORT=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y +CONFIG_HAVE_MMIOTRACE_SUPPORT=y +CONFIG_HAVE_MTD_OTP=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_OPTPROBES=y +CONFIG_HAVE_PCSPKR_PLATFORM=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_PERF_EVENTS_NMI=y +CONFIG_HAVE_PROC_CPU=y +CONFIG_HAVE_PWM=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_SYSCALL_WRAPPERS=y +CONFIG_HAVE_TEXT_POKE_SMP=y +CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y +CONFIG_HAVE_USER_RETURN_NOTIFIER=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_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_HFS_FS=m +CONFIG_HIBERNATE_CALLBACKS=y +CONFIG_HIBERNATION=y +CONFIG_HID=m +CONFIG_HID_A4TECH=m +CONFIG_HID_ACRUX=m +CONFIG_HID_ACRUX_FF=y +CONFIG_HID_APPLE=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_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_HYPERV_MOUSE=m +CONFIG_HID_KENSINGTON=m +CONFIG_HID_KEYTOUCH=m +CONFIG_HID_KYE=m +CONFIG_HID_LCPOWER=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_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_ROCCAT=m +CONFIG_HID_SAITEK=m +CONFIG_HID_SAMSUNG=m +CONFIG_HID_SMARTJOYPLUS=m +CONFIG_HID_SONY=m +CONFIG_HID_SPEEDLINK=m +CONFIG_HID_SUNPLUS=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_WIIMOTE_EXT=y +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=y +CONFIG_HOTPLUG_CPU=y +CONFIG_HOTPLUG_PCI=y +CONFIG_HOTPLUG_PCI_ACPI=m +CONFIG_HOTPLUG_PCI_ACPI_IBM=m +CONFIG_HOTPLUG_PCI_COMPAQ=m +CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y +CONFIG_HOTPLUG_PCI_CPCI=y +CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m +CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m +CONFIG_HOTPLUG_PCI_FAKE=m +CONFIG_HOTPLUG_PCI_IBM=m +CONFIG_HOTPLUG_PCI_PCIE=y +CONFIG_HOTPLUG_PCI_RPA=m +CONFIG_HOTPLUG_PCI_RPA_DLPAR=m +CONFIG_HOTPLUG_PCI_SHPC=m +CONFIG_HP100=m +CONFIG_HPET=y +CONFIG_HPET_EMULATE_RTC=y +CONFIG_HPET_MMAP=y +CONFIG_HPET_TIMER=y +CONFIG_HPFS_FS=m +CONFIG_HPLAN=m +CONFIG_HPLAN_PLUS=m +CONFIG_HPWDT_NMI_DECODING=y +CONFIG_HP_ACCEL=m +CONFIG_HP_ILO=m +CONFIG_HP_WATCHDOG=m +CONFIG_HP_WMI=m +CONFIG_HSI=m +CONFIG_HSI_BOARDINFO=y +CONFIG_HSI_CHAR=m +CONFIG_HTC_PASIC3=m +CONFIG_HT_IRQ=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y +CONFIG_HVCS=y +CONFIG_HVC_CONSOLE=y +CONFIG_HVC_DRIVER=y +CONFIG_HVC_IRQ=y +CONFIG_HVC_OLD_HVSI=y +CONFIG_HVC_OPAL=y +CONFIG_HVC_RTAS=y +CONFIG_HVC_UDBG=y +CONFIG_HVC_XEN=y +CONFIG_HVC_XEN_FRONTEND=y +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set +CONFIG_HWMON_VID=m +# CONFIG_HWPOISON_INJECT is not set +CONFIG_HW_CONSOLE=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_AMD=m +# CONFIG_HW_RANDOM_ATMEL is not set +CONFIG_HW_RANDOM_GEODE=m +CONFIG_HW_RANDOM_INTEL=m +CONFIG_HW_RANDOM_PASEMI=m +CONFIG_HW_RANDOM_PSERIES=m +CONFIG_HW_RANDOM_TIMERIOMEM=m +CONFIG_HW_RANDOM_VIA=m +CONFIG_HW_RANDOM_VIRTIO=m +CONFIG_HYPERV=m +CONFIG_HYPERV_NET=m +CONFIG_HYPERV_STORAGE=m +CONFIG_HYPERV_UTILS=m +CONFIG_HYSDN=m +CONFIG_HYSDN_CAPI=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 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_BOARDINFO=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_COMPAT=y +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +CONFIG_I2C_DESIGNWARE_PCI=m +CONFIG_I2C_DIOLAN_U2C=m +CONFIG_I2C_EG20T=m +CONFIG_I2C_GPIO=m +CONFIG_I2C_HELPER_AUTO=y +CONFIG_I2C_HYDRA=m +CONFIG_I2C_I801=m +CONFIG_I2C_INTEL_MID=m +CONFIG_I2C_ISCH=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_NFORCE2=m +CONFIG_I2C_NFORCE2_S4985=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_SCMI=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_TINY_USB=m +CONFIG_I2C_VIA=m +CONFIG_I2C_VIAPRO=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_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_IBMVETH=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_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_DRIVERS=m +# CONFIG_IEEE802154_FAKEHARD is not set +CONFIG_IFB=m +CONFIG_IGB=m +CONFIG_IGBVF=m +CONFIG_IGB_DCA=y +# CONFIG_IGB_PTP is not set +CONFIG_IIO=m +CONFIG_IIO_BUFFER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +CONFIG_IIO_GPIO_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_HWMON=m +CONFIG_IIO_SW_RING=m +CONFIG_IIO_SYSFS_TRIGGER=m +CONFIG_IIO_TRIGGER=y +# CONFIG_IKCONFIG is not set +# CONFIG_IMA is not set +CONFIG_INET=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_IPCOMP=m +CONFIG_INET6_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_TUNNEL=m +CONFIG_INET_AH=m +CONFIG_INET_DCCP_DIAG=m +CONFIG_INET_DIAG=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_LRO=y +CONFIG_INET_TCP_DIAG=m +CONFIG_INET_TUNNEL=m +CONFIG_INET_UDP_DIAG=m +CONFIG_INET_XFRM_MODE_BEET=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_TUNNEL=m +CONFIG_INFINIBAND=m +CONFIG_INFINIBAND_ADDR_TRANS=y +CONFIG_INFINIBAND_AMSO1100=m +CONFIG_INFINIBAND_AMSO1100_DEBUG=y +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=y +# CONFIG_INFINIBAND_IPOIB_DEBUG_DATA is not set +CONFIG_INFINIBAND_ISER=m +CONFIG_INFINIBAND_MTHCA=m +CONFIG_INFINIBAND_MTHCA_DEBUG=y +CONFIG_INFINIBAND_NES=m +# CONFIG_INFINIBAND_NES_DEBUG is not set +CONFIG_INFINIBAND_OCRDMA=m +CONFIG_INFINIBAND_QIB=m +CONFIG_INFINIBAND_SRP=m +CONFIG_INFINIBAND_SRPT=m +CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_USER_MAD=m +CONFIG_INFINIBAND_USER_MEM=y +CONFIG_INFTL=m +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_INIT_PASS_ALL_PARAMS=y +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +CONFIG_INOTIFY_USER=y +CONFIG_INPUT=y +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_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_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_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_MAX8997_HAPTIC=m +CONFIG_INPUT_MC13783_PWRBUTTON=m +CONFIG_INPUT_MISC=y +CONFIG_INPUT_MMA8450=m +CONFIG_INPUT_MOUSE=y +CONFIG_INPUT_MOUSEDEV=y +CONFIG_INPUT_MOUSEDEV_PSAUX=y +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +CONFIG_INPUT_MPU3050=m +CONFIG_INPUT_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_PWM_BEEPER=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_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_MENLOW=m +CONFIG_INTEL_MFLD_THERMAL=m +CONFIG_INTEL_MID_DMAC=m +CONFIG_INTEL_MID_POWER_BUTTON=m +CONFIG_INTEL_MID_PTI=m +CONFIG_INTEL_OAKTRAIL=m +CONFIG_INTEL_SCU_IPC=y +CONFIG_INTEL_SCU_IPC_UTIL=m +CONFIG_IOMMU_API=y +# CONFIG_IOMMU_DEBUG is not set +CONFIG_IOMMU_HELPER=y +# CONFIG_IOMMU_STRESS is not set +CONFIG_IOMMU_SUPPORT=y +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_REJECT=m +CONFIG_IPACK_BUS=m +CONFIG_IPC_NS=y +CONFIG_IPDDP=m +CONFIG_IPDDP_DECAP=y +CONFIG_IPDDP_ENCAP=y +# CONFIG_IPIC is not set +CONFIG_IPMI_DEVICE_INTERFACE=m +CONFIG_IPMI_HANDLER=m +# CONFIG_IPMI_PANIC_EVENT is not set +CONFIG_IPMI_POWEROFF=m +CONFIG_IPMI_SI=m +CONFIG_IPMI_WATCHDOG=m +CONFIG_IPPP_FILTER=y +CONFIG_IPV6=y +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_ROUTE_INFO=y +CONFIG_IPV6_SIT=m +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_TUNNEL=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=y +# CONFIG_IP_DCCP_CCID3_DEBUG is not set +# CONFIG_IP_DCCP_DEBUG is not set +CONFIG_IP_DCCP_TFRC_LIB=y +CONFIG_IP_FIB_TRIE_STATS=y +CONFIG_IP_MROUTE=y +# CONFIG_IP_MROUTE_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_QUEUE is not set +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_TTL=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=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_NETPORT=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_IRLAN=m +CONFIG_IRNET=m +# CONFIG_IRQSOFF_TRACER is not set +CONFIG_IRQ_DOMAIN=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +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_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_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_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_LOOP=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_ISP1301_OMAP=m +CONFIG_IT8712F_WDT=m +CONFIG_IT87_WDT=m +CONFIG_ITCO_VENDOR_SUPPORT=y +CONFIG_ITCO_WDT=m +CONFIG_IWL3945=m +CONFIG_IWL4965=m +CONFIG_IWLEGACY=m +# CONFIG_IWLEGACY_DEBUG is not set +CONFIG_IWLEGACY_DEBUGFS=y +CONFIG_IWLWIFI=m +# CONFIG_IWLWIFI_DEBUG is not set +CONFIG_IWLWIFI_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TESTMODE=y +CONFIG_IWLWIFI_DEVICE_TRACING=y +# CONFIG_IWLWIFI_EXPERIMENTAL_MFP is not set +# CONFIG_IWLWIFI_P2P is not set +CONFIG_IWM=m +CONFIG_IWMC3200TOP=m +# CONFIG_IWMC3200TOP_DEBUG is not set +# CONFIG_IWM_DEBUG is not set +CONFIG_IWM_TRACING=y +CONFIG_IXGB=m +CONFIG_IXGBE=m +CONFIG_IXGBEVF=m +CONFIG_IXGBE_DCA=y +CONFIG_IXGBE_DCB=y +CONFIG_IXGBE_HWMON=y +# CONFIG_IXGBE_PTP is not set +CONFIG_JBD=y +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +# CONFIG_JBD_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_KDB_KEYBOARD=y +# CONFIG_KERNEL_BZIP2 is not set +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_XZ is not set +CONFIG_KEXEC_JUMP=y +CONFIG_KEYBOARD_ADP5520=m +CONFIG_KEYBOARD_ADP5588=m +CONFIG_KEYBOARD_ADP5589=m +CONFIG_KEYBOARD_ATKBD=y +CONFIG_KEYBOARD_GPIO=m +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_KEYBOARD_LKKBD=m +CONFIG_KEYBOARD_LM8323=m +CONFIG_KEYBOARD_LM8333=m +CONFIG_KEYBOARD_MATRIX=m +CONFIG_KEYBOARD_MAX7359=m +CONFIG_KEYBOARD_MCS=m +CONFIG_KEYBOARD_MPR121=m +CONFIG_KEYBOARD_NEWTON=m +CONFIG_KEYBOARD_OMAP4=m +CONFIG_KEYBOARD_OPENCORES=m +CONFIG_KEYBOARD_QT1070=m +# CONFIG_KEYBOARD_QT2160 is not set +CONFIG_KEYBOARD_SAMSUNG=m +CONFIG_KEYBOARD_STMPE=m +CONFIG_KEYBOARD_STOWAWAY=m +CONFIG_KEYBOARD_SUNKBD=m +CONFIG_KEYBOARD_TC3589X=m +CONFIG_KEYBOARD_TCA6416=m +CONFIG_KEYBOARD_TCA8418=m +CONFIG_KEYBOARD_TWL4030=m +CONFIG_KEYBOARD_XTKBD=m +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +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_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_KVM=m +CONFIG_KVM_AMD=m +CONFIG_KVM_APIC_ARCHITECTURE=y +CONFIG_KVM_ASYNC_PF=y +# CONFIG_KVM_BOOK3S_64 is not set +CONFIG_KVM_CLOCK=y +CONFIG_KVM_GUEST=y +CONFIG_KVM_INTEL=m +CONFIG_KVM_MMIO=y +# CONFIG_KVM_MMU_AUDIT is not set +CONFIG_KXSD9=m +CONFIG_L2TP=m +CONFIG_L2TP_DEBUGFS=m +# CONFIG_L2TP_V3 is not set +CONFIG_LANCE=m +CONFIG_LANMEDIA=m +CONFIG_LAPB=m +CONFIG_LAPBETHER=m +CONFIG_LBDAF=y +CONFIG_LCD_AMS369FG06=m +CONFIG_LCD_CLASS_DEVICE=m +CONFIG_LCD_ILI9320=m +CONFIG_LCD_L4F00242T03=m +CONFIG_LCD_LD9040=m +CONFIG_LCD_LMS283GF05=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_LEDS=y +CONFIG_LEDS_88PM860X=m +CONFIG_LEDS_ADP5520=m +CONFIG_LEDS_ASIC3=y +CONFIG_LEDS_ATMEL_PWM=m +CONFIG_LEDS_BD2802=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_LP3944=m +CONFIG_LEDS_LP5521=m +CONFIG_LEDS_LP5523=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_PCA9633=m +CONFIG_LEDS_PWM=m +CONFIG_LEDS_REGULATOR=m +CONFIG_LEDS_RENESAS_TPU=y +CONFIG_LEDS_TCA6507=m +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=m +CONFIG_LEDS_TRIGGER_DEFAULT_ON=m +CONFIG_LEDS_TRIGGER_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set +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_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_LIBIPW=m +CONFIG_LINE6_USB=m +# CONFIG_LINE6_USB_DEBUG is not set +# CONFIG_LINE6_USB_DUMP_CTRL is not set +# CONFIG_LINE6_USB_DUMP_MIDI is not set +# CONFIG_LINE6_USB_DUMP_PCM is not set +# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set +# CONFIG_LINE6_USB_RAW 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_TTUSBIR=m +CONFIG_LIRC_ZILOG=m +CONFIG_LIS3L02DQ_BUF_KFIFO=y +# CONFIG_LIS3L02DQ_BUF_RING_SW is not set +CONFIG_LITELINK_DONGLE=m +# CONFIG_LKDTM is not set +CONFIG_LLC=m +CONFIG_LLC2=m +CONFIG_LNE390=m +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_LOCAL_TIMERS=y +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_LOGO is not set +CONFIG_LOOPBACK_TARGET=m +CONFIG_LOWMEM_SIZE=0x30000000 +CONFIG_LP486E=m +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_LTPC=m +CONFIG_LXT_PHY=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +CONFIG_M25PXX_USE_FAST_READ=y +# CONFIG_M386 is not set +# 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_COUNTERS is not set +CONFIG_MAC80211_HAS_RC=y +# CONFIG_MAC80211_HT_DEBUG is not set +CONFIG_MAC80211_HWSIM=m +# CONFIG_MAC80211_IBSS_DEBUG is not set +CONFIG_MAC80211_LEDS=y +# CONFIG_MAC80211_NOINLINE is not set +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_MAC80211_TKIP_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MESH_SYNC_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MHWMP_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MPATH_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_MPL_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_PS_DEBUG is not set +# CONFIG_MAC80211_VERBOSE_TDLS_DEBUG is not set +# CONFIG_MAC802154 is not set +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_IGEP0020=y +CONFIG_MACH_IGEP0030=y +CONFIG_MACH_NOKIA_RM680=y +# CONFIG_MACH_NOKIA_RX51 is not set +# CONFIG_MACH_OMAP3517EVM is not set +CONFIG_MACH_OMAP3530_LV_SOM=y +CONFIG_MACH_OMAP3EVM=y +CONFIG_MACH_OMAP3_BEAGLE=y +CONFIG_MACH_OMAP3_PANDORA=y +CONFIG_MACH_OMAP3_TORPEDO=y +CONFIG_MACH_OMAP3_TOUCHBOOK=y +CONFIG_MACH_OMAP_3430SDP=y +CONFIG_MACH_OMAP_3630SDP=y +CONFIG_MACH_OMAP_GENERIC=y +CONFIG_MACH_OMAP_LDP=y +CONFIG_MACH_OMAP_ZOOM2=y +CONFIG_MACH_OMAP_ZOOM3=y +CONFIG_MACH_OVERO=y +CONFIG_MACH_SBC3530=y +CONFIG_MACH_TI8148EVM=y +CONFIG_MACH_TI8168EVM=y +CONFIG_MACINTOSH_DRIVERS=y +CONFIG_MACVLAN=m +CONFIG_MACVTAP=m +CONFIG_MAC_EMUMOUSEBTN=m +CONFIG_MAC_FLOPPY=m +CONFIG_MAGIC_SYSRQ=y +CONFIG_MANTIS_CORE=m +CONFIG_MARVELL_PHY=y +# CONFIG_MATH_EMULATION is not set +# CONFIG_MATOM is not set +CONFIG_MAX1363=m +CONFIG_MAX1363_RING_BUFFER=y +# CONFIG_MAX517 is not set +CONFIG_MAX63XX_WATCHDOG=m +CONFIG_MAX8925_POWER=m +# CONFIG_MAXSMP is not set +# CONFIG_MCORE2 is not set +CONFIG_MCP2120_DONGLE=m +# 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=m +CONFIG_MDIO_BUS_MUX=m +CONFIG_MDIO_BUS_MUX_GPIO=m +CONFIG_MDIO_GPIO=m +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_ATTACH=y +# CONFIG_MEDIA_CONTROLLER is not set +CONFIG_MEDIA_SUPPORT=m +CONFIG_MEDIA_TUNER=m +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +CONFIG_MEDIA_TUNER_FC0011=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_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_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_MEMORY=y +CONFIG_MEMORY_FAILURE=y +CONFIG_MEMORY_HOTPLUG=y +CONFIG_MEMORY_HOTPLUG_SPARSE=y +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_MFD_CORE=y +CONFIG_MFD_CS5535=m +CONFIG_MFD_DA9052_I2C=y +CONFIG_MFD_DA9052_SPI=y +CONFIG_MFD_INTEL_MSIC=y +CONFIG_MFD_JANZ_CMODIO=m +CONFIG_MFD_LM3533=m +CONFIG_MFD_MAX77693=y +CONFIG_MFD_MC13783=m +CONFIG_MFD_MC13XXX=m +CONFIG_MFD_MC13XXX_I2C=m +CONFIG_MFD_MC13XXX_SPI=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_RTSX_PCI=m +CONFIG_MFD_S5M_CORE=y +CONFIG_MFD_SM501=m +# CONFIG_MFD_SM501_GPIO is not set +CONFIG_MFD_TIMBERDALE=m +CONFIG_MFD_TPS65090=y +CONFIG_MFD_TPS65217=m +CONFIG_MFD_TPS65912=y +CONFIG_MFD_TWL4030_AUDIO=y +CONFIG_MFD_VX855=m +CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_WM831X=y +CONFIG_MFD_WM8350=y +CONFIG_MFD_WM8400=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=m +CONFIG_MICROCODE_AMD=y +CONFIG_MICROCODE_INTEL=y +CONFIG_MICROCODE_OLD_INTERFACE=y +CONFIG_MIGRATION=y +CONFIG_MII=y +CONFIG_MINIX_FS=m +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_INFINIBAND=m +CONFIG_MMC=y +CONFIG_MMC_ARMMMCI=m +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_IDMAC is not set +CONFIG_MMC_DW_PLTFM=m +CONFIG_MMC_OMAP=m +CONFIG_MMC_OMAP_HS=y +CONFIG_MMC_REALTEK_PCI=m +CONFIG_MMC_RICOH_MMC=y +CONFIG_MMC_SDHCI_BIG_ENDIAN_32BIT_BYTE_SWAPPER=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_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_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MOUSE_APPLETOUCH=m +CONFIG_MOUSE_BCM5974=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_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_MSGR=y +# CONFIG_MPIC_WEIRD is not set +CONFIG_MPILIB=y +# CONFIG_MPSC is not set +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_MTDRAM_ERASE_SIZE=128 +CONFIG_MTDRAM_TOTAL_SIZE=4096 +CONFIG_MTD_ABSENT=m +CONFIG_MTD_AFS_PARTS=m +CONFIG_MTD_ALAUDA=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_CMDLINE_PARTS=y +CONFIG_MTD_COMPLEX_MAPPINGS=y +CONFIG_MTD_DATAFLASH=m +CONFIG_MTD_DATAFLASH_OTP=y +# CONFIG_MTD_DATAFLASH_WRITE_VERIFY is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +CONFIG_MTD_DOC2001PLUS=m +CONFIG_MTD_DOCECC=m +CONFIG_MTD_DOCG3=m +CONFIG_MTD_DOCPROBE=m +CONFIG_MTD_DOCPROBE_ADDRESS=0x0 +# CONFIG_MTD_DOCPROBE_ADVANCED is not set +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_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_GPIO=m +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +CONFIG_MTD_NAND_NANDSIM=m +CONFIG_MTD_NAND_OMAP2=y +CONFIG_MTD_NAND_OMAP_BCH=y +# CONFIG_MTD_NAND_OMAP_BCH4 is not set +CONFIG_MTD_NAND_OMAP_BCH8=y +CONFIG_MTD_NAND_PASEMI=m +CONFIG_MTD_NAND_PLATFORM=m +CONFIG_MTD_NAND_RICOH=m +CONFIG_MTD_NAND_TMIO=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +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_SIM=m +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_SST25L=m +CONFIG_MTD_SWAP=m +# CONFIG_MTD_TESTS is not set +CONFIG_MTD_TS5500=m +CONFIG_MTD_UBI=m +CONFIG_MTD_UBI_BEB_RESERVE=1 +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_MULTICORE_RAID456 is not set +CONFIG_MULTI_IRQ_HANDLER=y +CONFIG_MV643XX_ETH=m +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +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_MXM_WMI=m +CONFIG_MYRI10GE=m +CONFIG_MYRI10GE_DCA=y +CONFIG_N2=m +CONFIG_NAMESPACES=y +CONFIG_NATIONAL_PHY=y +CONFIG_NATSEMI=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_NE3210=m +CONFIG_NEED_MULTIPLE_NODES=y +CONFIG_NEED_PER_CPU_KM=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_TPROXY=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_CLUSTER=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=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_NFLOG=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_TARGET_RATEEST=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_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_CLS=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_CLS_BASIC=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_CMP=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_IPGRE=m +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IPIP=m +CONFIG_NET_KEY=m +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_NET_NS=y +CONFIG_NET_PACKET_ENGINE=y +CONFIG_NET_PKTGEN=m +CONFIG_NET_POLL_CONTROLLER=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_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 is not set +CONFIG_NET_TULIP=y +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_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_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_RACAL=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +CONFIG_NET_VENDOR_WIZNET=y +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +CONFIG_NEW_LEDS=y +CONFIG_NFC=m +CONFIG_NFC_HCI=m +# CONFIG_NFC_LLCP is not set +CONFIG_NFC_NCI=m +CONFIG_NFC_PN533=m +CONFIG_NFC_SHDLC=y +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_NFS_ACL_SUPPORT=m +CONFIG_NFS_COMMON=y +CONFIG_NFS_FS=m +CONFIG_NFS_FSCACHE=y +CONFIG_NFS_USE_KERNEL_DNS=y +# CONFIG_NFS_USE_LEGACY_DNS is not set +CONFIG_NFS_V2=y +CONFIG_NFS_V3=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_NFS_V4_1=y +CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="kernel.org" +CONFIG_NFTL=m +CONFIG_NFTL_RW=y +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_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_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_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_NI52=m +CONFIG_NI65=m +CONFIG_NILFS2_FS=m +CONFIG_NIU=m +CONFIG_NLATTR=y +CONFIG_NLS=y +CONFIG_NLS_ASCII=m +CONFIG_NLS_CODEPAGE_1250=m +CONFIG_NLS_CODEPAGE_1251=m +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_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_NOZOMI=m +CONFIG_NO_BOOTMEM=y +CONFIG_NO_HZ=y +CONFIG_NR_IRQS=512 +CONFIG_NS83820=m +CONFIG_NSC_FIR=m +CONFIG_NSC_GPIO=m +# CONFIG_NTFS_DEBUG is not set +CONFIG_NTFS_FS=m +# CONFIG_NTFS_RW is not set +CONFIG_NUMA=y +# CONFIG_NUMA_EMU is not set +CONFIG_NV_TCO=m +# CONFIG_N_GSM is not set +CONFIG_N_HDLC=m +CONFIG_OABI_COMPAT=y +# CONFIG_OCFS2_DEBUG_FS is not set +CONFIG_OCFS2_DEBUG_MASKLOG=y +CONFIG_OCFS2_FS=m +CONFIG_OCFS2_FS_O2CB=m +CONFIG_OCFS2_FS_STATS=y +CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m +CONFIG_OF=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_DEVICE=y +CONFIG_OF_DYNAMIC=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_FLATTREE=y +CONFIG_OF_GPIO=y +CONFIG_OF_I2C=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_SELFTEST is not set +CONFIG_OLD_BELKIN_DONGLE=m +CONFIG_OLD_MCOUNT=y +CONFIG_OMAP2_DSS=y +# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set +CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y +CONFIG_OMAP2_DSS_DPI=y +# CONFIG_OMAP2_DSS_DSI is not set +CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0 +# CONFIG_OMAP2_DSS_RFBI is not set +CONFIG_OMAP2_DSS_SDI=y +CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y +CONFIG_OMAP2_DSS_VENC=y +CONFIG_OMAP2_VRAM=y +CONFIG_OMAP2_VRAM_SIZE=16 +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_OMAP_32K_TIMER=y +CONFIG_OMAP_32K_TIMER_HZ=128 +CONFIG_OMAP_DM_TIMER=y +CONFIG_OMAP_IOMMU=y +# CONFIG_OMAP_IOVMM is not set +CONFIG_OMAP_MBOX_FWK=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_PACKAGE_CBB=y +CONFIG_OMAP_PACKAGE_CBP=y +CONFIG_OMAP_PACKAGE_CUS=y +CONFIG_OMAP_PM_NOOP=y +CONFIG_OMAP_RESET_CLOCKS=y +# CONFIG_OMAP_SMARTREFLEX is not set +CONFIG_OMAP_WATCHDOG=m +CONFIG_OMFS_FS=m +CONFIG_OPENVSWITCH=m +CONFIG_OPROFILE=m +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +CONFIG_OPROFILE_NMI_TIMER=y +CONFIG_OPTIMIZE_INLINING=y +CONFIG_OPTPROBES=y +CONFIG_ORE=m +CONFIG_ORINOCO_USB=m +CONFIG_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_PADATA=y +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PANASONIC_LAPTOP=m +CONFIG_PANEL=m +CONFIG_PANEL_ACX565AKM=m +# CONFIG_PANEL_CHANGE_MESSAGE is not set +CONFIG_PANEL_GENERIC_DPI=y +CONFIG_PANEL_LGPHILIPS_LB035Q02=m +CONFIG_PANEL_NEC_NL8048HL11_01B=m +CONFIG_PANEL_PARPORT=0 +CONFIG_PANEL_PICODLP=m +CONFIG_PANEL_PROFILE=5 +CONFIG_PANEL_SHARP_LS037V7DW01=y +CONFIG_PANEL_TFP410=y +CONFIG_PANEL_TPO_TD043MTEA1=y +# 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_GUEST=y +CONFIG_PARAVIRT_SPINLOCKS=y +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +CONFIG_PARIDE=m +CONFIG_PARIDE_ATEN=m +CONFIG_PARIDE_BPCK=m +CONFIG_PARIDE_BPCK6=m +CONFIG_PARIDE_COMM=m +CONFIG_PARIDE_DSTR=m +CONFIG_PARIDE_EPAT=m +# CONFIG_PARIDE_EPATC8 is not set +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_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=y +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_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 is not set +CONFIG_PCIEASPM_DEFAULT=y +# CONFIG_PCIEASPM_PERFORMANCE is not set +# CONFIG_PCIEASPM_POWERSAVE is not set +CONFIG_PCIEPORTBUS=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_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_XEN=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_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHANTOM=m +CONFIG_PHONE=m +CONFIG_PHONET=m +CONFIG_PHONE_IXJ=m +CONFIG_PHONE_IXJ_PCMCIA=m +CONFIG_PHYLIB=y +CONFIG_PHYSICAL_ALIGN=0x1000000 +CONFIG_PID_NS=y +# CONFIG_PL310_ERRATA_588369 is not set +# CONFIG_PL310_ERRATA_727915 is not set +# CONFIG_PL310_ERRATA_753970 is not set +# CONFIG_PL310_ERRATA_769419 is not set +# CONFIG_PLAT_SPEAR is not set +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 is not set +CONFIG_PMIC_DA9052=y +CONFIG_PM_ADVANCED_DEBUG=y +# CONFIG_PM_AUTOSLEEP is not set +CONFIG_PM_CLK=y +CONFIG_PM_OPP=y +CONFIG_PM_RUNTIME=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_STD_PARTITION="" +CONFIG_PM_TEST_SUSPEND=y +CONFIG_PM_TRACE=y +CONFIG_PM_TRACE_RTC=y +CONFIG_PM_WAKELOCKS_GC=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PN544_HCI_NFC=m +CONFIG_PN544_NFC=m +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=y +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_POWER7_CPU is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +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_85xx is not set +# CONFIG_PPC_86xx is not set +# CONFIG_PPC_8xx is not set +# CONFIG_PPC_BOOK3E_64 is not set +CONFIG_PPC_BOOK3S=y +CONFIG_PPC_BOOK3S_32=y +CONFIG_PPC_BOOK3S_64=y +# CONFIG_PPC_CELLEB is not set +# CONFIG_PPC_CELL_NATIVE is not set +# CONFIG_PPC_CELL_QPACE is not set +CONFIG_PPC_CHRP=y +# CONFIG_PPC_CLOCK is not set +# CONFIG_PPC_DCR_MMIO is not set +# CONFIG_PPC_DCR_NATIVE is not set +CONFIG_PPC_DISABLE_WERROR=y +# CONFIG_PPC_EARLY_DEBUG is not set +# CONFIG_PPC_EMULATED_STATS is not set +CONFIG_PPC_EPAPR_HV_BYTECHAN=m +# CONFIG_PPC_EPAPR_HV_PIC is not set +CONFIG_PPC_FPU=y +CONFIG_PPC_HAS_HASH_64K=y +CONFIG_PPC_HAVE_PMU_SUPPORT=y +CONFIG_PPC_I8259=y +# CONFIG_PPC_IBM_CELL_BLADE is not set +CONFIG_PPC_ICSWX=y +CONFIG_PPC_ICSWX_PID=y +# CONFIG_PPC_ICSWX_USE_SIGILL is not set +CONFIG_PPC_MAPLE=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_BOOT_TRAMPOLINE=y +# CONFIG_PPC_OF_PLATFORM_PCI is not set +CONFIG_PPC_PASEMI=y +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_PMAC=y +CONFIG_PPC_PMAC32_PSURGE=y +CONFIG_PPC_PMAC64=y +CONFIG_PPC_POWERNV=y +CONFIG_PPC_POWERNV_RTAS=y +CONFIG_PPC_PS3=y +CONFIG_PPC_PSERIES=y +CONFIG_PPC_RTAS=y +CONFIG_PPC_RTAS_DAEMON=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_UDBG_16550=y +# CONFIG_PPC_WSP is not set +CONFIG_PPDEV=m +CONFIG_PPP=y +CONFIG_PPPOATM=m +CONFIG_PPPOE=m +CONFIG_PPPOL2TP=m +CONFIG_PPP_ASYNC=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_MPPE=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPS=m +CONFIG_PPS_CLIENT_GPIO=m +# CONFIG_PPS_CLIENT_KTIMER is not set +CONFIG_PPS_CLIENT_LDISC=m +CONFIG_PPS_CLIENT_PARPORT=m +# CONFIG_PPS_DEBUG is not set +CONFIG_PPTP=m +# CONFIG_PQ2ADS is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_NOTIFIERS=y +# CONFIG_PREEMPT_RCU 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_PROBE_EVENTS=y +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_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_RAM=m +# CONFIG_PTP_1588_CLOCK is not set +CONFIG_QFMT_V1=m +CONFIG_QFMT_V2=m +CONFIG_QLA3XXX=m +CONFIG_QLCNIC=m +CONFIG_QLGE=m +CONFIG_QNX4FS_FS=m +# CONFIG_QNX6FS_DEBUG is not set +CONFIG_QNX6FS_FS=m +CONFIG_QSEMI_PHY=y +CONFIG_QUOTA=y +CONFIG_QUOTACTL=y +CONFIG_QUOTACTL_COMPAT=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=m +CONFIG_R3964=m +CONFIG_R6040=m +CONFIG_R8169=m +CONFIG_R8187SE=m +CONFIG_R8712U=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_SI470X=y +CONFIG_RADIO_SI4713=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_RAPIDIO=y +CONFIG_RAPIDIO_CPS_GEN2=y +CONFIG_RAPIDIO_CPS_XX=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_TSI500=y +CONFIG_RAPIDIO_TSI568=y +CONFIG_RAPIDIO_TSI57X=y +CONFIG_RAPIDIO_TSI721=y +CONFIG_RAW_DRIVER=m +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +# CONFIG_RCU_FANOUT_EXACT is not set +CONFIG_RCU_FANOUT_LEAF=16 +CONFIG_RCU_FAST_NO_HZ=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_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_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=m +CONFIG_REED_SOLOMON_DEC16=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_IRQ=y +CONFIG_REGMAP_SPI=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_88PM8607=y +CONFIG_REGULATOR_AAT2870=m +CONFIG_REGULATOR_AB3100=m +CONFIG_REGULATOR_AD5398=m +CONFIG_REGULATOR_DA903X=m +CONFIG_REGULATOR_DA9052=m +# CONFIG_REGULATOR_DUMMY is not set +CONFIG_REGULATOR_GPIO=m +CONFIG_REGULATOR_ISL6271A=m +CONFIG_REGULATOR_LP3971=m +CONFIG_REGULATOR_LP3972=m +CONFIG_REGULATOR_MAX1586=m +CONFIG_REGULATOR_MAX8649=m +CONFIG_REGULATOR_MAX8660=m +CONFIG_REGULATOR_MAX8925=m +CONFIG_REGULATOR_MAX8952=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 is not set +CONFIG_REGULATOR_PCF50633=m +CONFIG_REGULATOR_RC5T583=m +CONFIG_REGULATOR_S5M8767=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_TWL4030=y +CONFIG_REGULATOR_USERSPACE_CONSUMER=m +CONFIG_REGULATOR_VIRTUAL_CONSUMER=m +CONFIG_REGULATOR_WM831X=m +CONFIG_REGULATOR_WM8350=m +CONFIG_REGULATOR_WM8400=m +CONFIG_REGULATOR_WM8994=m +# CONFIG_REISERFS_CHECK is not set +CONFIG_REISERFS_FS=m +CONFIG_REISERFS_FS_POSIX_ACL=y +CONFIG_REISERFS_FS_SECURITY=y +CONFIG_REISERFS_FS_XATTR=y +# CONFIG_REISERFS_PROC_INFO is not set +CONFIG_RELAY=y +CONFIG_RELOCATABLE=y +CONFIG_RESOURCE_COUNTERS=y +CONFIG_RFD_FTL=m +CONFIG_RFKILL=y +CONFIG_RFKILL_GPIO=m +CONFIG_RFKILL_INPUT=y +CONFIG_RFKILL_LEDS=y +CONFIG_RFKILL_REGULATOR=m +CONFIG_RFS_ACCEL=y +CONFIG_RING_BUFFER=y +CONFIG_RING_BUFFER_ALLOW_SWAP=y +# CONFIG_RING_BUFFER_BENCHMARK is not set +CONFIG_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_RPS=y +CONFIG_RT2400PCI=m +CONFIG_RT2500PCI=m +CONFIG_RT2500USB=m +CONFIG_RT2800PCI=m +CONFIG_RT2800PCI_RT33XX=y +CONFIG_RT2800PCI_RT35XX=y +CONFIG_RT2800PCI_RT53XX=y +CONFIG_RT2800USB=m +CONFIG_RT2800USB_RT33XX=y +CONFIG_RT2800USB_RT35XX=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800_LIB=m +CONFIG_RT2X00=m +# CONFIG_RT2X00_DEBUG is not set +CONFIG_RT2X00_LIB=m +CONFIG_RT2X00_LIB_CRYPTO=y +CONFIG_RT2X00_LIB_FIRMWARE=y +CONFIG_RT2X00_LIB_LEDS=y +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_88PM860X=m +CONFIG_RTC_DRV_AB3100=m +CONFIG_RTC_DRV_BQ32K=m +CONFIG_RTC_DRV_BQ4802=m +CONFIG_RTC_DRV_DA9052=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_DS3232=m +CONFIG_RTC_DRV_DS3234=m +CONFIG_RTC_DRV_EM3027=m +CONFIG_RTC_DRV_FM3130=m +CONFIG_RTC_DRV_GENERIC=m +CONFIG_RTC_DRV_ISL12022=m +CONFIG_RTC_DRV_ISL1208=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_MAX8925=m +CONFIG_RTC_DRV_MAX8998=m +CONFIG_RTC_DRV_MC13XXX=m +CONFIG_RTC_DRV_MSM6242=m +CONFIG_RTC_DRV_PCAP=m +CONFIG_RTC_DRV_PCF2123=m +CONFIG_RTC_DRV_PCF50633=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_RP5C01=m +CONFIG_RTC_DRV_RS5C348=m +CONFIG_RTC_DRV_RS5C372=m +CONFIG_RTC_DRV_RV3029C2=m +CONFIG_RTC_DRV_RX8025=m +CONFIG_RTC_DRV_RX8581=m +CONFIG_RTC_DRV_S35390A=m +CONFIG_RTC_DRV_STK17TA8=m +# CONFIG_RTC_DRV_TEST is not set +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_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_RTL8180=m +CONFIG_RTL8187=m +CONFIG_RTL8187_LEDS=y +CONFIG_RTL8192CE=m +CONFIG_RTL8192CU=m +CONFIG_RTL8192C_COMMON=m +CONFIG_RTL8192DE=m +CONFIG_RTL8192E=m +CONFIG_RTL8192SE=m +CONFIG_RTL8192U=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_RTS5139=m +# CONFIG_RTS5139_DEBUG is not set +CONFIG_RTS_PSTOR=m +# CONFIG_RTS_PSTOR_DEBUG is not set +CONFIG_RT_GROUP_SCHED=y +CONFIG_RT_MUTEXES=y +# CONFIG_RT_MUTEX_TESTER is not set +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_SATA_ACARD_AHCI=m +CONFIG_SATA_AHCI=m +CONFIG_SATA_AHCI_PLATFORM=m +CONFIG_SATA_HIGHBANK=y +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_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_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 is not set +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_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_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_FC_ATTRS=m +CONFIG_SCSI_FC_TGT_ATTRS=y +# CONFIG_SCSI_FLASHPOINT is not set +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=m +CONFIG_SCSI_IBMVSCSIS=m +CONFIG_SCSI_IMM=m +CONFIG_SCSI_IN2000=m +CONFIG_SCSI_INIA100=m +CONFIG_SCSI_INITIO=m +CONFIG_SCSI_IPR=m +# CONFIG_SCSI_IPR_DUMP is not set +# CONFIG_SCSI_IPR_TRACE is not set +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_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_MULTI_LUN=y +CONFIG_SCSI_MVSAS=m +CONFIG_SCSI_MVSAS_DEBUG=y +# 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_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_SIM710=m +CONFIG_SCSI_SRP=m +CONFIG_SCSI_SRP_ATTRS=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_ULTRASTOR=m +CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_WAIT_SCAN=m +# CONFIG_SCTP_DBG_MSG is not set +# CONFIG_SCTP_DBG_OBJCNT is not set +CONFIG_SCTP_HMAC_MD5=y +# CONFIG_SCTP_HMAC_NONE is not set +# CONFIG_SCTP_HMAC_SHA1 is not set +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_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_VALUE=0 +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +CONFIG_SECURITY_SELINUX_DEVELOP=y +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +CONFIG_SECURITY_SMACK=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_SEEQ8005=m +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_ADM9240=m +CONFIG_SENSORS_ADS1015=m +CONFIG_SENSORS_ADS7828=m +CONFIG_SENSORS_ADS7871=m +CONFIG_SENSORS_ADT7411=m +CONFIG_SENSORS_ADT7462=m +CONFIG_SENSORS_ADT7470=m +CONFIG_SENSORS_ADT7475=m +CONFIG_SENSORS_AK8975=m +CONFIG_SENSORS_AMC6821=m +CONFIG_SENSORS_AMS=m +CONFIG_SENSORS_AMS_I2C=y +CONFIG_SENSORS_AMS_PMU=y +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_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_GL518SM=m +CONFIG_SENSORS_GL520SM=m +CONFIG_SENSORS_GPIO_FAN=m +CONFIG_SENSORS_HDAPS=m +CONFIG_SENSORS_HMC5843=m +CONFIG_SENSORS_I5K_AMB=m +CONFIG_SENSORS_IBMAEM=m +CONFIG_SENSORS_IBMPEX=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_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_LM95241=m +CONFIG_SENSORS_LM95245=m +CONFIG_SENSORS_LTC4151=m +CONFIG_SENSORS_LTC4215=m +CONFIG_SENSORS_LTC4245=m +CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_MAX1111=m +CONFIG_SENSORS_MAX16065=m +CONFIG_SENSORS_MAX1619=m +CONFIG_SENSORS_MAX1668=m +CONFIG_SENSORS_MAX6639=m +CONFIG_SENSORS_MAX6642=m +CONFIG_SENSORS_MAX6650=m +CONFIG_SENSORS_MC13783_ADC=m +CONFIG_SENSORS_MCP3021=m +CONFIG_SENSORS_NTC_THERMISTOR=m +CONFIG_SENSORS_PC87360=m +CONFIG_SENSORS_PC87427=m +CONFIG_SENSORS_PCF8591=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_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_SERIAL_8250_ACCENT=m +CONFIG_SERIAL_8250_BOCA=m +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_CS=m +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +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_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_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_ICOM=m +# CONFIG_SERIAL_IFX6X60 is not set +CONFIG_SERIAL_IPOCTAL=m +CONFIG_SERIAL_JSM=m +CONFIG_SERIAL_MAX3100=m +CONFIG_SERIAL_MAX3107=m +CONFIG_SERIAL_MFD_HSU=m +CONFIG_SERIAL_MRST_MAX3110=m +CONFIG_SERIAL_OF_PLATFORM=m +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_TIMBERDALE=m +CONFIG_SERIAL_UARTLITE=m +CONFIG_SERIAL_XILINX_PS_UART=m +CONFIG_SERIO=y +CONFIG_SERIO_ALTERA_PS2=m +CONFIG_SERIO_AMBAKMI=m +CONFIG_SERIO_CT82C710=m +CONFIG_SERIO_I8042=y +CONFIG_SERIO_LIBPS2=y +CONFIG_SERIO_PARKBD=m +CONFIG_SERIO_PCIPS2=m +CONFIG_SERIO_PS2MULT=m +CONFIG_SERIO_RAW=m +CONFIG_SERIO_XILINX_XPS_PS2=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_SHMEM=y +CONFIG_SIGMATEL_FIR=m +CONFIG_SIGNALFD=y +CONFIG_SIGNATURE=y +CONFIG_SIMPLE_GPIO=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_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_SMC91X=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_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_AOA=m +CONFIG_SND_AOA_FABRIC_LAYOUT=m +CONFIG_SND_AOA_ONYX=m +CONFIG_SND_AOA_SOUNDBUS=m +CONFIG_SND_AOA_SOUNDBUS_I2S=m +CONFIG_SND_AOA_TAS=m +CONFIG_SND_AOA_TOONIE=m +CONFIG_SND_ARM=y +CONFIG_SND_ARMAACI=m +CONFIG_SND_ASIHPI=m +CONFIG_SND_ATIIXP=m +CONFIG_SND_ATIIXP_MODEM=m +CONFIG_SND_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_CA0106=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_DEBUG is not set +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_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_GENERIC=y +CONFIG_SND_HDA_HWDEP=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=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_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_MFLD_MACHINE=m +CONFIG_SND_MIA=m +CONFIG_SND_MIRO=m +CONFIG_SND_MIXART=m +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_MONA=m +CONFIG_SND_MPU401=m +CONFIG_SND_MPU401_UART=m +CONFIG_SND_MSND_CLASSIC=m +CONFIG_SND_MSND_PINNACLE=m +CONFIG_SND_MTPAV=m +CONFIG_SND_MTS64=m +CONFIG_SND_NM256=m +CONFIG_SND_OMAP_SOC=y +CONFIG_SND_OMAP_SOC_IGEP0020=m +CONFIG_SND_OMAP_SOC_MCBSP=y +CONFIG_SND_OMAP_SOC_OMAP3EVM=m +CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y +CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m +CONFIG_SND_OMAP_SOC_OVERO=m +CONFIG_SND_OMAP_SOC_SDP3430=m +CONFIG_SND_OMAP_SOC_ZOOM2=m +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_OSSEMUL=y +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_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_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_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_88PM860X=m +CONFIG_SND_SOC_AD1836=m +CONFIG_SND_SOC_AD193X=m +CONFIG_SND_SOC_AD73311=m +CONFIG_SND_SOC_ADAU1373=m +CONFIG_SND_SOC_ADAV80X=m +CONFIG_SND_SOC_ADS117X=m +CONFIG_SND_SOC_AK4104=m +CONFIG_SND_SOC_AK4535=m +CONFIG_SND_SOC_AK4641=m +CONFIG_SND_SOC_AK4642=m +CONFIG_SND_SOC_AK4671=m +CONFIG_SND_SOC_ALC5623=m +CONFIG_SND_SOC_ALC5632=m +CONFIG_SND_SOC_ALL_CODECS=m +CONFIG_SND_SOC_CS4270=m +CONFIG_SND_SOC_CS4271=m +CONFIG_SND_SOC_CS42L51=m +CONFIG_SND_SOC_CS42L52=m +CONFIG_SND_SOC_CS42L73=m +CONFIG_SND_SOC_CX20442=m +CONFIG_SND_SOC_DA7210=m +CONFIG_SND_SOC_DFBMCS320=m +CONFIG_SND_SOC_JZ4740_CODEC=m +CONFIG_SND_SOC_L3=m +CONFIG_SND_SOC_LM4857=m +CONFIG_SND_SOC_LM49453=m +CONFIG_SND_SOC_MAX9768=m +CONFIG_SND_SOC_MAX98088=m +CONFIG_SND_SOC_MAX98095=m +CONFIG_SND_SOC_MAX9850=m +CONFIG_SND_SOC_MAX9877=m +CONFIG_SND_SOC_MC13783=m +CONFIG_SND_SOC_ML26124=m +CONFIG_SND_SOC_PCM3008=m +CONFIG_SND_SOC_RT5631=m +CONFIG_SND_SOC_SGTL5000=m +CONFIG_SND_SOC_SN95031=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_SOC_SSM2602=m +CONFIG_SND_SOC_STA32X=m +CONFIG_SND_SOC_TLV320AIC23=m +CONFIG_SND_SOC_TLV320AIC26=m +CONFIG_SND_SOC_TLV320AIC32X4=m +CONFIG_SND_SOC_TLV320AIC3X=m +CONFIG_SND_SOC_TLV320DAC33=m +CONFIG_SND_SOC_TPA6130A2=m +CONFIG_SND_SOC_TWL6040=m +CONFIG_SND_SOC_UDA134X=m +CONFIG_SND_SOC_UDA1380=m +CONFIG_SND_SOC_WL1273=m +CONFIG_SND_SOC_WM1250_EV1=m +CONFIG_SND_SOC_WM2000=m +CONFIG_SND_SOC_WM2200=m +CONFIG_SND_SOC_WM5100=m +CONFIG_SND_SOC_WM8350=m +CONFIG_SND_SOC_WM8400=m +CONFIG_SND_SOC_WM8510=m +CONFIG_SND_SOC_WM8523=m +CONFIG_SND_SOC_WM8580=m +CONFIG_SND_SOC_WM8711=m +CONFIG_SND_SOC_WM8727=m +CONFIG_SND_SOC_WM8728=m +CONFIG_SND_SOC_WM8731=m +CONFIG_SND_SOC_WM8737=m +CONFIG_SND_SOC_WM8741=m +CONFIG_SND_SOC_WM8750=m +CONFIG_SND_SOC_WM8753=m +CONFIG_SND_SOC_WM8770=m +CONFIG_SND_SOC_WM8776=m +CONFIG_SND_SOC_WM8782=m +CONFIG_SND_SOC_WM8804=m +CONFIG_SND_SOC_WM8900=m +CONFIG_SND_SOC_WM8903=m +CONFIG_SND_SOC_WM8904=m +CONFIG_SND_SOC_WM8940=m +CONFIG_SND_SOC_WM8955=m +CONFIG_SND_SOC_WM8960=m +CONFIG_SND_SOC_WM8961=m +CONFIG_SND_SOC_WM8962=m +CONFIG_SND_SOC_WM8971=m +CONFIG_SND_SOC_WM8974=m +CONFIG_SND_SOC_WM8978=m +CONFIG_SND_SOC_WM8983=m +CONFIG_SND_SOC_WM8985=m +CONFIG_SND_SOC_WM8988=m +CONFIG_SND_SOC_WM8990=m +CONFIG_SND_SOC_WM8991=m +CONFIG_SND_SOC_WM8993=m +CONFIG_SND_SOC_WM8994=m +CONFIG_SND_SOC_WM8995=m +CONFIG_SND_SOC_WM8996=m +CONFIG_SND_SOC_WM9081=m +CONFIG_SND_SOC_WM9090=m +CONFIG_SND_SOC_WM_HUBS=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_TEA575X=m +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_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_AM33XX=y +CONFIG_SOC_CAMERA=m +CONFIG_SOC_CAMERA_IMX074=m +CONFIG_SOC_CAMERA_MT9M001=m +CONFIG_SOC_CAMERA_MT9M111=m +CONFIG_SOC_CAMERA_MT9T031=m +CONFIG_SOC_CAMERA_MT9T112=m +CONFIG_SOC_CAMERA_MT9V022=m +CONFIG_SOC_CAMERA_OV2640=m +CONFIG_SOC_CAMERA_OV5642=m +CONFIG_SOC_CAMERA_OV6650=m +CONFIG_SOC_CAMERA_OV772X=m +CONFIG_SOC_CAMERA_OV9640=m +CONFIG_SOC_CAMERA_OV9740=m +CONFIG_SOC_CAMERA_PLATFORM=m +CONFIG_SOC_CAMERA_RJ54N1=m +CONFIG_SOC_CAMERA_TW9910=m +CONFIG_SOC_OMAP3430=y +CONFIG_SOC_TI81XX=y +CONFIG_SOFT_WATCHDOG=m +CONFIG_SOLO6X10=m +CONFIG_SONYPI=m +CONFIG_SONYPI_COMPAT=y +CONFIG_SONY_LAPTOP=m +CONFIG_SOUND_OSS_CORE=y +# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set +# CONFIG_SOUND_PRIME is not set +CONFIG_SP5100_TCO=m +CONFIG_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 is not set +CONFIG_SPI_DW_PCI=m +CONFIG_SPI_GPIO=m +CONFIG_SPI_LM70_LLP=m +CONFIG_SPI_MASTER=y +CONFIG_SPI_OC_TINY=m +CONFIG_SPI_OMAP24XX=m +CONFIG_SPI_PXA2XX=m +CONFIG_SPI_SPIDEV=m +CONFIG_SPI_TLE62X0=m +CONFIG_SPI_TOPCLIFF_PCH=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_EMBEDDED is not set +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SR_REPORT_TIME_LIMIT=100 +CONFIG_SSB=m +CONFIG_SSB_B43_PCI_BRIDGE=y +CONFIG_SSB_BLOCKIO=y +# CONFIG_SSB_DEBUG is not set +CONFIG_SSB_DRIVER_PCICORE=y +CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y +CONFIG_SSB_PCIHOST=y +CONFIG_SSB_PCIHOST_POSSIBLE=y +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=y +CONFIG_STALDRV=y +CONFIG_STE10XP=y +# CONFIG_STMMAC_CHAINED is not set +# CONFIG_STMMAC_DA is not set +# CONFIG_STMMAC_DEBUG_FS is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_STMMAC_PLATFORM=y +CONFIG_STMMAC_RING=y +CONFIG_STMPE_I2C=y +CONFIG_STMPE_SPI=y +CONFIG_STOP_MACHINE=y +CONFIG_STP=m +CONFIG_STRICT_DEVMEM=y +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_STUB_POULSBO 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_DEBUG is not set +CONFIG_SUNRPC_GSS=m +CONFIG_SUNRPC_XPRT_RDMA=m +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_SWAP=y +CONFIG_SWIOTLB=y +CONFIG_SWIOTLB_XEN=y +CONFIG_SYNCLINK=m +CONFIG_SYNCLINKMP=m +CONFIG_SYNCLINK_CS=m +CONFIG_SYNCLINK_GT=m +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +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_TIS=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_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_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_TIDSPBRIDGE=m +# CONFIG_TIDSPBRIDGE_BACKTRACE is not set +# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set +CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000 +# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set +CONFIG_TIDSPBRIDGE_RECOVERY=y +CONFIG_TIFM_7XX1=m +CONFIG_TIFM_CORE=m +CONFIG_TIGON3=m +CONFIG_TIMB_DMA=m +CONFIG_TIMERFD=y +CONFIG_TIMER_STATS=y +CONFIG_TINY_RCU=y +CONFIG_TIPC=m +# CONFIG_TIPC_ADVANCED is not set +# CONFIG_TIPC_DEBUG is not set +# CONFIG_TI_CPSW is not set +CONFIG_TI_DAC7512=m +CONFIG_TI_DAVINCI_CPDMA=m +# CONFIG_TI_DAVINCI_EMAC is not set +CONFIG_TI_DAVINCI_MDIO=m +CONFIG_TI_EMIF=m +CONFIG_TI_ST=m +CONFIG_TLAN=m +CONFIG_TMD_HERMES=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_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_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_MTOUCH=m +CONFIG_TOUCHSCREEN_PCAP=m +CONFIG_TOUCHSCREEN_PENMOUNT=m +CONFIG_TOUCHSCREEN_PIXCIR=m +CONFIG_TOUCHSCREEN_ST1232=m +CONFIG_TOUCHSCREEN_STMPE=m +CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m +CONFIG_TOUCHSCREEN_TI_TSCADC=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_TPS6105X=m +CONFIG_TPS65010=m +CONFIG_TPS6507X=m +CONFIG_TRACEPOINTS=y +CONFIG_TRACER_MAX_TRACE=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_TRACE_ROUTER=m +CONFIG_TRACE_SINK=m +CONFIG_TRACING=y +CONFIG_TRACING_SUPPORT=y +CONFIG_TRANSPARENT_HUGEPAGE=y +# CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS is not set +CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y +CONFIG_TRANZPORT=m +CONFIG_TREE_RCU=y +# CONFIG_TREE_RCU_TRACE is not set +CONFIG_TRUSTED_KEYS=y +CONFIG_TSL2583=m +CONFIG_TSL2x7x=m +CONFIG_TTPCI_EEPROM=m +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_WATCHDOG=m +CONFIG_TWL6030_PWM=m +CONFIG_TWL6030_USB=m +CONFIG_TYPHOON=m +CONFIG_U3_DART=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +CONFIG_UBIFS_FS=m +# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set +CONFIG_UBIFS_FS_LZO=y +CONFIG_UBIFS_FS_ZLIB=y +CONFIG_UCB1400_CORE=m +CONFIG_UDBG_RTAS_CONSOLE=y +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y +CONFIG_UEVENT_HELPER_PATH="" +# CONFIG_UFS_DEBUG is not set +CONFIG_UFS_FS=m +# CONFIG_UFS_FS_WRITE is not set +CONFIG_UID16=y +CONFIG_UIO=m +CONFIG_UIO_AEC=m +CONFIG_UIO_CIF=m +CONFIG_UIO_NETX=m +CONFIG_UIO_PCI_GENERIC=m +CONFIG_UIO_PDRV=m +CONFIG_UIO_PDRV_GENIRQ=m +CONFIG_UIO_SERCOS3=m +CONFIG_ULI526X=m +CONFIG_ULTRA=m +CONFIG_ULTRA32=m +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=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_ADUTUX=m +CONFIG_USB_ALI_M5632=y +CONFIG_USB_AMD5536UDC=m +CONFIG_USB_AN2720=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_APPLEDISPLAY=m +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARMLINUX=y +CONFIG_USB_ATM=m +CONFIG_USB_AUDIO=m +CONFIG_USB_BELKIN=y +CONFIG_USB_C67X00_HCD=m +CONFIG_USB_CATC=m +CONFIG_USB_CDC_COMPOSITE=m +CONFIG_USB_CDC_PHONET=m +CONFIG_USB_CHIPIDEA=m +# CONFIG_USB_CHIPIDEA_DEBUG is not set +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_COMMON=y +CONFIG_USB_CXACRU=m +CONFIG_USB_CYPRESS_CY7C63=m +CONFIG_USB_CYTHERM=m +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DSBR=m +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_DWC3=m +# CONFIG_USB_DWC3_DEBUG is not set +CONFIG_USB_DYNAMIC_MINORS=y +CONFIG_USB_EG20T=m +CONFIG_USB_EHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_HCD_OMAP=y +CONFIG_USB_EHCI_HCD_PPC_OF=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EMI26=m +CONFIG_USB_EMI62=m +CONFIG_USB_ENESTORAGE=m +CONFIG_USB_EPSON2888=y +CONFIG_USB_ETH=m +CONFIG_USB_ETH_EEM=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_EZUSB=y +# CONFIG_USB_FILE_STORAGE is not set +CONFIG_USB_FTDI_ELAN=m +CONFIG_USB_FUNCTIONFS=m +CONFIG_USB_FUNCTIONFS_ETH=y +CONFIG_USB_FUNCTIONFS_GENERIC=y +CONFIG_USB_FUNCTIONFS_RNDIS=y +CONFIG_USB_FUSB300=m +CONFIG_USB_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_DUALSPEED=y +CONFIG_USB_GADGET_MUSB_HDRC=m +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_SUPERSPEED=y +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_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_HID=m +CONFIG_USB_HIDDEV=y +CONFIG_USB_HSO=m +CONFIG_USB_HWA_HCD=m +CONFIG_USB_IDMOUSE=m +CONFIG_USB_INVENTRA_DMA=y +CONFIG_USB_IOWARRIOR=m +CONFIG_USB_IPHETH=m +CONFIG_USB_IRDA=m +CONFIG_USB_ISIGHTFW=m +CONFIG_USB_ISP116X_HCD=m +CONFIG_USB_ISP1301=m +CONFIG_USB_ISP1362_HCD=m +CONFIG_USB_ISP1760_HCD=m +CONFIG_USB_KAWETH=m +CONFIG_USB_KBD=m +CONFIG_USB_KC2190=y +CONFIG_USB_KEENE=m +CONFIG_USB_LCD=m +CONFIG_USB_LD=m +CONFIG_USB_LED=m +CONFIG_USB_LEGOTOWER=m +CONFIG_USB_LIBUSUAL=y +CONFIG_USB_M5602=m +# CONFIG_USB_M66592 is not set +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_MDC800=m +CONFIG_USB_MICROTEK=m +CONFIG_USB_MIDI_GADGET=m +CONFIG_USB_MON=m +CONFIG_USB_MOUSE=m +CONFIG_USB_MR800=m +# CONFIG_USB_MUSB_AM35X is not set +CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_MV_UDC=m +CONFIG_USB_NET2272=m +CONFIG_USB_NET2272_DMA=y +CONFIG_USB_NET2280=m +CONFIG_USB_NET_AX8817X=m +CONFIG_USB_NET_CDCETHER=m +CONFIG_USB_NET_CDC_EEM=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_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_ZAURUS=m +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_OHCI_HCD_OMAP3=y +CONFIG_USB_OHCI_HCD_PCI=y +CONFIG_USB_OHCI_HCD_PPC_OF=y +CONFIG_USB_OHCI_HCD_PPC_OF_BE=y +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OMAP is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_OTG_UTILS=y +# CONFIG_USB_OTG_WHITELIST is not set +CONFIG_USB_OXU210HP_HCD=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_PRINTER=m +CONFIG_USB_PWC=m +# CONFIG_USB_PWC_DEBUG is not set +CONFIG_USB_PWC_INPUT_EVDEV=y +CONFIG_USB_R8A66597=m +CONFIG_USB_R8A66597_HCD=m +CONFIG_USB_RENESAS_USBHS=m +CONFIG_USB_RENESAS_USBHS_HCD=m +CONFIG_USB_RENESAS_USBHS_UDC=m +CONFIG_USB_RIO500=m +CONFIG_USB_RTL8150=m +CONFIG_USB_S2255=m +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_AIRCABLE=m +CONFIG_USB_SERIAL_ARK3116=m +CONFIG_USB_SERIAL_BELKIN=m +CONFIG_USB_SERIAL_CH341=m +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_CYBERJACK=m +CONFIG_USB_SERIAL_CYPRESS_M8=m +CONFIG_USB_SERIAL_DEBUG=m +CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m +CONFIG_USB_SERIAL_EDGEPORT=m +CONFIG_USB_SERIAL_EDGEPORT_TI=m +CONFIG_USB_SERIAL_EMPEG=m +CONFIG_USB_SERIAL_F81232=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_FUNSOFT=m +CONFIG_USB_SERIAL_GARMIN=m +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_HP4X=m +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_MOTOROLA=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_SIEMENS_MPI=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=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_VIVOPAY_SERIAL=m +CONFIG_USB_SERIAL_WHITEHEAT=m +CONFIG_USB_SERIAL_WWAN=m +CONFIG_USB_SERIAL_XIRCOM=m +CONFIG_USB_SERIAL_ZIO=m +CONFIG_USB_SEVSEG=m +CONFIG_USB_SI470X=m +CONFIG_USB_SIERRA_NET=m +CONFIG_USB_SISUSBVGA=m +# CONFIG_USB_SISUSBVGA_CON is not set +CONFIG_USB_SL811_CS=m +CONFIG_USB_SL811_HCD=m +CONFIG_USB_SL811_HCD_ISO=y +# CONFIG_USB_SN9C102 is not set +CONFIG_USB_SPEEDTOUCH=m +CONFIG_USB_STKWEBCAM=m +CONFIG_USB_STORAGE=m +CONFIG_USB_STORAGE_ALAUDA=m +CONFIG_USB_STORAGE_CYPRESS_ATACB=m +CONFIG_USB_STORAGE_DATAFAB=m +# CONFIG_USB_STORAGE_DEBUG is not set +CONFIG_USB_STORAGE_ENE_UB6250=m +CONFIG_USB_STORAGE_FREECOM=m +CONFIG_USB_STORAGE_ISD200=m +CONFIG_USB_STORAGE_JUMPSHOT=m +CONFIG_USB_STORAGE_KARMA=m +CONFIG_USB_STORAGE_ONETOUCH=m +CONFIG_USB_STORAGE_REALTEK=m +CONFIG_USB_STORAGE_SDDR09=m +CONFIG_USB_STORAGE_SDDR55=m +CONFIG_USB_STORAGE_USBAT=m +CONFIG_USB_STV06XX=m +CONFIG_USB_SUPPORT=y +CONFIG_USB_SUSPEND=y +CONFIG_USB_SWITCH_FSA9480=m +CONFIG_USB_TEST=m +CONFIG_USB_TMC=m +CONFIG_USB_TRANCEVIBRATOR=m +CONFIG_USB_U132_HCD=m +CONFIG_USB_UEAGLEATM=m +CONFIG_USB_UHCI_HCD=y +CONFIG_USB_ULPI=y +CONFIG_USB_USBNET=m +CONFIG_USB_USS720=m +CONFIG_USB_VIDEO_CLASS=m +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +CONFIG_USB_VL600=m +CONFIG_USB_WDM=m +CONFIG_USB_WHCI_HCD=m +CONFIG_USB_WPAN_HCD=m +CONFIG_USB_WUSB=m +CONFIG_USB_WUSB_CBAF=m +# CONFIG_USB_WUSB_CBAF_DEBUG is not set +CONFIG_USB_XHCI_HCD=y +# CONFIG_USB_XHCI_HCD_DEBUGGING is not set +CONFIG_USB_XHCI_PLATFORM=m +CONFIG_USB_XUSBATM=m +CONFIG_USB_YUREX=m +CONFIG_USB_ZD1201=m +CONFIG_USB_ZERO=m +# CONFIG_USB_ZERO_HNPTEST is not set +CONFIG_USB_ZR364XX=m +CONFIG_USER_RETURN_NOTIFIER=y +CONFIG_USER_STACKTRACE_SUPPORT=y +CONFIG_USE_GENERIC_SMP_HELPERS=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_ISA_PARPORT_DRIVERS=y +CONFIG_V4L_MEM2MEM_DRIVERS=y +CONFIG_V4L_PCI_DRIVERS=y +CONFIG_V4L_PLATFORM_DRIVERS=y +CONFIG_V4L_RADIO_ISA_DRIVERS=y +CONFIG_V4L_USB_DRIVERS=y +CONFIG_VECTORS_BASE=0xffff0000 +CONFIG_VERSION_SIGNATURE="" +CONFIG_VETH=m +CONFIG_VFP=y +CONFIG_VFPv3=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +CONFIG_VGA_ARB=y +CONFIG_VGA_CONSOLE=y +CONFIG_VGA_SWITCHEROO=y +CONFIG_VHOST_NET=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_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_VIDEO_ADV7170=m +CONFIG_VIDEO_ADV7175=m +CONFIG_VIDEO_ADV7180=m +CONFIG_VIDEO_ADV7183=m +CONFIG_VIDEO_ADV7343=m +# CONFIG_VIDEO_ADV_DEBUG is not set +CONFIG_VIDEO_AK881X=m +CONFIG_VIDEO_AU0828=m +CONFIG_VIDEO_BT819=m +CONFIG_VIDEO_BT848=m +CONFIG_VIDEO_BT848_DVB=y +CONFIG_VIDEO_BT856=m +CONFIG_VIDEO_BT866=m +CONFIG_VIDEO_BTCX=m +CONFIG_VIDEO_BWQCAM=m +CONFIG_VIDEO_CAFE_CCIC=m +CONFIG_VIDEO_CAPTURE_DRIVERS=y +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_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_OV7640=m +CONFIG_VIDEO_GO7007_SAA7113=m +CONFIG_VIDEO_GO7007_SAA7115=m +CONFIG_VIDEO_GO7007_SONY_TUNER=m +CONFIG_VIDEO_GO7007_TW2804=m +CONFIG_VIDEO_GO7007_TW9903=m +CONFIG_VIDEO_GO7007_UDA1342=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_KS0127=m +CONFIG_VIDEO_M52790=m +CONFIG_VIDEO_MEDIA=m +CONFIG_VIDEO_MEM2MEM_TESTDEV=m +CONFIG_VIDEO_MEYE=m +CONFIG_VIDEO_MSP3400=m +CONFIG_VIDEO_MT9V011=m +CONFIG_VIDEO_MXB=m +CONFIG_VIDEO_OMAP2_VOUT=m +CONFIG_VIDEO_OMAP2_VOUT_VRFB=y +CONFIG_VIDEO_OUTPUT_CONTROL=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_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_SAA7191=m +CONFIG_VIDEO_SH_MOBILE_CEU=m +CONFIG_VIDEO_SH_MOBILE_CSI2=m +CONFIG_VIDEO_SR030PC30=m +CONFIG_VIDEO_TCM825X=m +CONFIG_VIDEO_TDA7432=m +CONFIG_VIDEO_TDA9840=m +CONFIG_VIDEO_TEA6415C=m +CONFIG_VIDEO_TEA6420=m +CONFIG_VIDEO_THS7303=m +CONFIG_VIDEO_TIMBERDALE=m +CONFIG_VIDEO_TLG2300=m +CONFIG_VIDEO_TLV320AIC23B=m +CONFIG_VIDEO_TM6000=m +CONFIG_VIDEO_TM6000_ALSA=m +CONFIG_VIDEO_TM6000_DVB=m +CONFIG_VIDEO_TUNER=m +CONFIG_VIDEO_TVAUDIO=m +CONFIG_VIDEO_TVEEPROM=m +CONFIG_VIDEO_TVP514X=m +CONFIG_VIDEO_TVP5150=m +CONFIG_VIDEO_TVP7002=m +CONFIG_VIDEO_UPD64031A=m +CONFIG_VIDEO_UPD64083=m +CONFIG_VIDEO_USBVISION=m +CONFIG_VIDEO_V4L2=m +CONFIG_VIDEO_V4L2_COMMON=m +CONFIG_VIDEO_VIA_CAMERA=m +CONFIG_VIDEO_VIVI=m +CONFIG_VIDEO_VP27SMPX=m +CONFIG_VIDEO_VPFE_CAPTURE=m +CONFIG_VIDEO_VPSS_SYSTEM=m +CONFIG_VIDEO_VPX3220=m +CONFIG_VIDEO_VS6624=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_VIRTIO_CONSOLE=m +CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y +CONFIG_VIRTUALIZATION=y +CONFIG_VIRT_CPU_ACCOUNTING=y +CONFIG_VIRT_TO_BUS=y +CONFIG_VITESSE_PHY=y +CONFIG_VLAN_8021Q=m +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_VMXNET3=m +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_VORTEX=m +CONFIG_VSX=y +CONFIG_VT=y +CONFIG_VT6655=m +CONFIG_VT6656=m +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_VXFS_FS=m +CONFIG_VXGE=m +# CONFIG_VXGE_DEBUG_TRACE_ALL is not set +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_SLAVE_BQ27000=m +CONFIG_W1_SLAVE_DS2408=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_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_WANXL=m +CONFIG_WAN_ROUTER_DRIVERS=m +CONFIG_WATCHDOG_CORE=y +# CONFIG_WATCHDOG_NOWAYOUT is not set +CONFIG_WATCHDOG_RTAS=m +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_WIMAX=m +CONFIG_WIMAX_DEBUG_LEVEL=8 +CONFIG_WIMAX_GDM72XX=m +CONFIG_WIMAX_GDM72XX_K_MODE=y +CONFIG_WIMAX_GDM72XX_QOS=y +# CONFIG_WIMAX_GDM72XX_SDIO is not set +CONFIG_WIMAX_GDM72XX_USB=y +CONFIG_WIMAX_GDM72XX_USB_PM=y +CONFIG_WIMAX_GDM72XX_WIMAX2=y +CONFIG_WIMAX_I2400M=m +CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8 +CONFIG_WIMAX_IWMC3200_SDIO=y +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_WIRELESS_EXT_SYSFS=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_WL12XX_PLATFORM_DATA=y +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_X25=m +CONFIG_X25_ASY=m +CONFIG_X86=y +CONFIG_X86_32_IRIS=m +# CONFIG_X86_32_NON_STANDARD is not set +CONFIG_X86_32_SMP=y +CONFIG_X86_64_ACPI_NUMA=y +CONFIG_X86_64_SMP=y +CONFIG_X86_ACPI_CPUFREQ=y +# CONFIG_X86_ANCIENT_MCE is not set +CONFIG_X86_APM_BOOT=y +# CONFIG_X86_BIGSMP is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y +CONFIG_X86_BSWAP=y +CONFIG_X86_CHECK_BIOS_CORRUPTION=y +CONFIG_X86_CMOV=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_CPUFREQ_NFORCE2=m +CONFIG_X86_CPUID=m +CONFIG_X86_DEBUGCTLMSR=y +# CONFIG_X86_DECODER_SELFTEST is not set +CONFIG_X86_DEV_DMA_OPS=y +CONFIG_X86_EXTENDED_PLATFORM=y +# CONFIG_X86_E_POWERSAVER is not set +CONFIG_X86_GENERIC=y +CONFIG_X86_GX_SUSPMOD=m +CONFIG_X86_HT=y +CONFIG_X86_INTEL_MID=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_INTERNODE_CACHE_SHIFT=6 +CONFIG_X86_INVLPG=y +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_MCE_XEON75XX=m +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_PLATFORM_DEVICES=y +CONFIG_X86_PM_TIMER=y +CONFIG_X86_POPAD_OK=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_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_THERMAL_VECTOR=y +CONFIG_X86_TSC=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +# CONFIG_X86_UV is not set +# CONFIG_X86_VERBOSE_BOOTUP is not set +# CONFIG_X86_VSMP is not set +CONFIG_X86_WANT_INTEL_MID=y +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_X2APIC=y +# CONFIG_X86_X32 is not set +CONFIG_X86_XADD=y +CONFIG_XEN=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_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=y +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_XILINX_AXI_EMAC=m +CONFIG_XILINX_EMACLITE=m +CONFIG_XILINX_LL_TEMAC=m +# CONFIG_XIP_KERNEL is not set +# CONFIG_XMON is not set +CONFIG_XO15_EBOOK=m +CONFIG_XOR_BLOCKS=m +CONFIG_XPS=y +CONFIG_XPS_USB_HCD_XILINX=y +CONFIG_XZ_DEC=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_TEST=m +CONFIG_XZ_DEC_X86=y +CONFIG_YAM=m +CONFIG_YELLOWFIN=m +CONFIG_YENTA=m +CONFIG_YENTA_ENE_TUNE=y +CONFIG_YENTA_O2=y +CONFIG_YENTA_RICOH=y +CONFIG_YENTA_TI=y +CONFIG_YENTA_TOSHIBA=y +CONFIG_ZBOOT_ROM_BSS=0x0 +CONFIG_ZBOOT_ROM_TEXT=0x0 +CONFIG_ZCACHE=y +CONFIG_ZD1211RW=m +# CONFIG_ZD1211RW_DEBUG is not set +CONFIG_ZEROPLUS_FF=y +CONFIG_ZISOFS=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZNET=m +CONFIG_ZONE_DMA=y +CONFIG_ZRAM=m +# CONFIG_ZRAM_DEBUG is not set +CONFIG_ZSMALLOC=y --- linux-3.5.0.orig/debian.master/config/enforce +++ linux-3.5.0/debian.master/config/enforce @@ -0,0 +1,128 @@ +# +# 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 +# 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 | value CONFIG_CC_STACKPROTECTOR 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. +(arch armel armhf &/ 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 + +# Enabling CONFIG_IMA is vastly expensive, ensure it is off +value CONFIG_IMA n + +# 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 i386 amd64 &/ value CONFIG_VFAT_FS y) | \ + value CONFIG_VFAT_FS m + +# 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 and powerpc-smp flavours. +# See LP:923094 +(flavour powerpc powerpc-smp &/ value CONFIG_THERM_ADT746X y) | \ + !exists CONFIG_THERM_ADT746X + +# Ensure CONFIG_NVRAM is y for powerpc and powerpc-smp, LP:942193 +(flavour powerpc powerpc-smp &/ value CONFIG_NVRAM y) | \ + 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_AUDIT_LOGINUID_IMMUTABLE is not compatible with upstart +value CONFIG_AUDIT_LOGINUID_IMMUTABLE n + +# 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 + +# CONFIG_RTC_DRV_PL031 is required by Calxeda Highbank +# See LP:1035110 +(flavour highbank &/ value CONFIG_RTC_DRV_PL031 y) | \ +value CONFIG_RTC_DRV_PL031 m | \ +!exists CONFIG_RTC_DRV_PL031 + +# Don't use the generic ehci/ohci code on omap, it doesn't work +((flavour omap &/ value CONFIG_USB_EHCI_HCD_PLATFORM n & value CONFIG_USB_OHCI_HCD_PLATFORM n) | \ + !exists MISSING) --- linux-3.5.0.orig/debian.master/config/armhf/config.flavour.omap +++ linux-3.5.0/debian.master/config/armhf/config.flavour.omap @@ -0,0 +1,168 @@ +# +# Config options for config.flavour.omap automatically generated by splitconfig.pl +# +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AMBA_PL08X=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_ARCH_HIGHBANK is not set +CONFIG_ARCH_OMAP=y +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_743622=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +CONFIG_AUXDISPLAY=y +CONFIG_BCH=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_DEBUG_LL_UART_NONE=y +CONFIG_DEBUG_USER=y +# CONFIG_EDAC is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FONTS=y +CONFIG_FPE_NWFPE=y +# CONFIG_FUNCTION_TRACER is not set +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HIDRAW=y +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +CONFIG_HVC_DCC=y +CONFIG_HZ=128 +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER is not set +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_DMA=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_OC_ETM=y +CONFIG_OSF_PARTITION=y +CONFIG_PARPORT_1284=y +CONFIG_PL330_DMA=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEVFREQ=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_AMBA_PL011=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=y +CONFIG_SND_PCM=y +CONFIG_SND_SOC=y +CONFIG_SND_SOC_I2C_AND_SPI=y +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_TIMER=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI_PL022=m +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_STAGING_MEDIA=y +CONFIG_SUN_PARTITION=y +# CONFIG_SWP_EMULATE is not set +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TWL4030_POWER=y +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_WAN=y +CONFIG_WATCHDOG=y +# CONFIG_WIMAX_I2400M_SDIO is not set +# CONFIG_WIMAX_I2400M_USB is not set +CONFIG_XFS_RT=y --- linux-3.5.0.orig/debian.master/config/armhf/config.common.armhf +++ linux-3.5.0/debian.master/config/armhf/config.common.armhf @@ -0,0 +1,105 @@ +# +# Config options for config.common.armhf automatically generated by splitconfig.pl +# +# CONFIG_APM_EMULATION is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_AX25_DAMA_SLAVE=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +# CONFIG_COMPACTION is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CRYPTO_LZO=m +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_DM_RAID45 is not set +CONFIG_DVB_FE_CUSTOMISE=y +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC_MM_EDAC=y +# CONFIG_EZX_PCAP is not set +CONFIG_FAT_FS=y +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_GPIO_TWL4030=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_I2C_ALGOBIT=m +# CONFIG_IWMC3200TOP_DEBUGFS is not set +CONFIG_KGDB=y +# CONFIG_KSM is not set +CONFIG_LATENCYTOP=y +# CONFIG_LIBERTAS_MESH is not set +# CONFIG_LIS3L02DQ is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MUSB_PIO_ONLY is not set +CONFIG_NEED_DMA_MAP_STATE=y +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NOP_USB_XCEIV=y +CONFIG_NR_CPUS=4 +CONFIG_NVRAM=m +CONFIG_PAGE_OFFSET=0xC0000000 +# CONFIG_PCCARD is not set +# CONFIG_PCI_SYSCALL is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PM_DEBUG is not set +CONFIG_PM_WAKELOCKS=y +CONFIG_RCU_FANOUT=32 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_SCHEDSTATS=y +# CONFIG_SCHED_SMT is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_SCSI_SPI_ATTRS=m +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_STACK_TRACER is not set +CONFIG_STANDALONE=y +# CONFIG_STMMAC_ETH is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=y +# CONFIG_USB_ARCH_HAS_XHCI is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_OTG=y +CONFIG_VFAT_FS=y +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_WM8350_WATCHDOG is not set +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA_FLAG=0 --- linux-3.5.0.orig/debian.master/config/armhf/config.flavour.highbank +++ linux-3.5.0/debian.master/config/armhf/config.flavour.highbank @@ -0,0 +1,168 @@ +# +# Config options for config.flavour.highbank automatically generated by splitconfig.pl +# +# CONFIG_ABX500_CORE is not set +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AMBA_PL08X is not set +# CONFIG_AMIGA_PARTITION is not set +CONFIG_ARCH_HIGHBANK=y +# CONFIG_ARCH_OMAP is not set +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_743622 is not set +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_AUXDISPLAY is not set +CONFIG_BCH=m +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_BTRFS_FS_POSIX_ACL is not set +CONFIG_CACHE_L2X0=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CLEANCACHE is not set +CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y +# CONFIG_CPU_IDLE is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_DEBUG_LL_UART_NONE is not set +# CONFIG_DEBUG_USER is not set +CONFIG_EDAC=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_EVM is not set +CONFIG_EXT2_FS=y +CONFIG_FB_CFB_COPYAREA=m +CONFIG_FB_CFB_FILLRECT=m +CONFIG_FB_CFB_IMAGEBLIT=m +# CONFIG_FONTS is not set +# CONFIG_FPE_NWFPE is not set +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +# CONFIG_HAMRADIO is not set +# CONFIG_HIDRAW is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_HVC_DCC is not set +CONFIG_HZ=100 +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +CONFIG_IP_PNP=y +# CONFIG_IRDA_CACHE_LAST_LSAP is not set +# CONFIG_IRDA_DEBUG is not set +# CONFIG_IRDA_FAST_RR is not set +# CONFIG_IRDA_ULTRA is not set +# CONFIG_ISDN is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KEXEC is not set +# CONFIG_LDM_PARTITION is not set +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_MAC80211_DEBUG_MENU is not set +# CONFIG_MAC80211_MESH is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_MMC_SDHCI_PLTFM=y +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODVERSIONS is not set +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER=y +CONFIG_NET_CALXEDA_XGMAC=y +# CONFIG_NET_DMA is not set +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_OC_ETM is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_PARPORT_1284 is not set +CONFIG_PL330_DMA=y +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_MULTILINK is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PSTORE is not set +# CONFIG_QUOTA_NETLINK_INTERFACE is not set +CONFIG_RTC_DRV_PL031=y +CONFIG_RTC_DRV_TWL4030=m +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_AMBA_PL011=y +# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIO_SERPORT=y +# CONFIG_SGI_PARTITION is not set +CONFIG_SND=m +CONFIG_SND_PCM=m +CONFIG_SND_SOC=m +CONFIG_SND_SOC_I2C_AND_SPI=m +CONFIG_SND_SOC_TWL4030=m +CONFIG_SND_TIMER=m +# CONFIG_SOLARIS_X86_PARTITION is not set +CONFIG_SOUND=m +CONFIG_SPI_PL022=y +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XATTR is not set +# CONFIG_SQUASHFS_XZ is not set +# CONFIG_STAGING_MEDIA is not set +# CONFIG_SUN_PARTITION is not set +CONFIG_SWP_EMULATE=y +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_SYSV68_PARTITION is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TCP_MD5SIG is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TWL4030_POWER is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_WAN is not set +# CONFIG_WATCHDOG is not set +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +# CONFIG_XFS_RT is not set --- linux-3.5.0.orig/debian.master/config/armel/config.flavour.omap +++ linux-3.5.0/debian.master/config/armel/config.flavour.omap @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.omap automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/armel/config.common.armel +++ linux-3.5.0/debian.master/config/armel/config.common.armel @@ -0,0 +1,266 @@ +# +# Config options for config.common.armel automatically generated by splitconfig.pl +# +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AMBA_PL08X=y +CONFIG_AMIGA_PARTITION=y +# CONFIG_APM_EMULATION is not set +# CONFIG_ARCH_HIGHBANK is not set +CONFIG_ARCH_OMAP=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set +# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +CONFIG_ARM_ERRATA_430973=y +CONFIG_ARM_ERRATA_743622=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATM_BR2684_IPFILTER=y +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=y +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +# CONFIG_COMPACTION is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=m +CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_LL_UART_NONE=y +CONFIG_DEBUG_USER=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_DM_RAID45 is not set +CONFIG_DVB_FE_CUSTOMISE=y +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +# CONFIG_EDAC is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +# CONFIG_EZX_PCAP is not set +CONFIG_FAT_FS=y +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_SVGALIB is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FONTS=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_FPE_NWFPE=y +# CONFIG_FUNCTION_TRACER is not set +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_TWL4030=y +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HIDRAW=y +CONFIG_HTC_EGPIO=y +CONFIG_HTC_I2CPLD=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_HVC_DCC=y +CONFIG_HZ=128 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_I2C_DESIGNWARE_PLATFORM=m +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +# CONFIG_IWMC3200TOP_DEBUGFS is not set +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +# CONFIG_KSM is not set +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +# CONFIG_LIBERTAS_MESH is not set +# CONFIG_LIS3L02DQ is not set +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_ASIC3=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_T7L66XB=y +CONFIG_MFD_TC3589X=y +CONFIG_MFD_TC6387XB=y +CONFIG_MFD_TC6393XB=y +CONFIG_MFD_TMIO=y +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=y +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CHAR=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_MTD_SM_COMMON is not set +# CONFIG_MUSB_PIO_ONLY is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NET_CALXEDA_XGMAC=m +CONFIG_NET_DMA=y +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NOP_USB_XCEIV=y +CONFIG_NVRAM=m +CONFIG_OC_ETM=y +CONFIG_OSF_PARTITION=y +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT_1284=y +# CONFIG_PCCARD is not set +# CONFIG_PCI_SYSCALL is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_PL330_DMA=m +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=y +# CONFIG_RT2800USB_UNKNOWN is not set +CONFIG_RT2X00_LIB_DEBUGFS=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_PL031=m +CONFIG_RTC_DRV_TWL4030=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCSI_LOGGING=y +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_AMBA_PL011=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=y +# CONFIG_SND_EMU10K1_SEQ is not set +# CONFIG_SND_OPL3_LIB_SEQ is not set +# 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_I2C_AND_SPI=y +CONFIG_SND_SOC_TWL4030=y +CONFIG_SND_TIMER=y +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=y +CONFIG_SPI_PL022=m +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +# CONFIG_STMMAC_ETH is not set +CONFIG_SUN_PARTITION=y +# CONFIG_SWP_EMULATE is not set +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_POWER=y +CONFIG_TWL4030_USB=y +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +# CONFIG_USB_ARCH_HAS_XHCI is not set +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_GADGET=y +CONFIG_USB_G_MULTI=m +# CONFIG_USB_HCD_BCMA is not set +# CONFIG_USB_HCD_SSB is not set +CONFIG_USB_MUSB_HDRC=m +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +# CONFIG_USB_OHCI_HCD_PLATFORM is not set +CONFIG_USB_OTG=y +CONFIG_VFAT_FS=y +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +CONFIG_WAN=y +# CONFIG_WAN_ROUTER is not set +CONFIG_WATCHDOG=y +# CONFIG_WIMAX_I2400M_SDIO is not set +# CONFIG_WIMAX_I2400M_USB is not set +# CONFIG_WM8350_WATCHDOG is not set +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA_FLAG=0 --- linux-3.5.0.orig/debian.master/config/i386/config.flavour.generic +++ linux-3.5.0/debian.master/config/i386/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/i386/config.common.i386 +++ linux-3.5.0/debian.master/config/i386/config.common.i386 @@ -0,0 +1,278 @@ +# +# Config options for config.common.i386 automatically generated by splitconfig.pl +# +# CONFIG_64BIT is not set +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_ACPI_BLACKLIST_YEAR=2000 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_ALX=m +CONFIG_AMIGA_PARTITION=y +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_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SUPPORTS_MSI=y +CONFIG_ASYNC_TX_DMA=y +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATM_BR2684_IPFILTER is not set +# CONFIG_AUDIT_ARCH is not set +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=y +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DM_RAID45=m +# CONFIG_DVB_FE_CUSTOMISE is not set +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=y +CONFIG_FB_3DFX=m +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=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_TILEBLITTING=y +CONFIG_FB_VOODOO1=m +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HARDLOCKUP_DETECTOR=y +CONFIG_HAVE_AOUT=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IDE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0 +# CONFIG_INTEL_TXT is not set +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISA=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBIPW_DEBUG=y +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=8 +CONFIG_NVRAM=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf32-i386" +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=32 +CONFIG_REGULATOR_DEBUG=y +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +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_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_SPI_PXA2XX_PCI=y +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_STACK_TRACER=y +CONFIG_STAGING_MEDIA=y +# CONFIG_STANDALONE is not set +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=y +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_RING=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_X86_32=y +# CONFIG_X86_64 is not set +CONFIG_X86_MINIMUM_CPU_FAMILY=5 +CONFIG_X86_SPEEDSTEP_LIB=y +CONFIG_XEN_MAX_DOMAIN_MEMORY=64 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +# CONFIG_ZONE_DMA32 is not set +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/amd64/config.common.amd64 +++ linux-3.5.0/debian.master/config/amd64/config.common.amd64 @@ -0,0 +1,279 @@ +# +# Config options for config.common.amd64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_ACPI_BLACKLIST_YEAR=0 +CONFIG_AIC79XX_RESET_DELAY_MS=5000 +CONFIG_ALX=m +CONFIG_AMIGA_PARTITION=y +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_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=y +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_ATA_PIIX=y +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +CONFIG_AX25_DAMA_SLAVE=y +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CFG80211_REG_DEBUG=y +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=y +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +CONFIG_DM_RAID45=m +# CONFIG_DVB_FE_CUSTOMISE is not set +# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=y +CONFIG_FB_3DFX=m +CONFIG_FB_ATY128=m +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_BOOT_VESA_SUPPORT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=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_TILEBLITTING=y +CONFIG_FB_VOODOO1=m +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +CONFIG_GPIO_SYSFS=y +CONFIG_HAMRADIO=y +CONFIG_HARDLOCKUP_DETECTOR=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IDE is not set +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_INTEL_TXT=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +CONFIG_LIBIPW_DEBUG=y +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=6 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=256 +CONFIG_NVRAM=m +CONFIG_OSF_PARTITION=y +CONFIG_OUTPUT_FORMAT="elf64-x86-64" +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=y +CONFIG_PCCARD=m +CONFIG_PHYSICAL_START=0x1000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +CONFIG_PM_DEBUG=y +CONFIG_PM_DEVFREQ=y +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=64 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RWSEM_GENERIC_SPINLOCK is not set +CONFIG_SATA_SVW=m +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +CONFIG_SENSORS_SCH56XX_COMMON=m +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +# CONFIG_SND_BT87X_OVERCLOCK is not set +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_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_STACK_TRACER=y +CONFIG_STAGING_MEDIA=y +# CONFIG_STANDALONE is not set +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +CONFIG_SYS_HYPERVISOR=y +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +# CONFIG_TWL4030_CORE is not set +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set +# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=y +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +CONFIG_VIDEO_HELPER_CHIPS_AUTO=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_RING=y +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +# CONFIG_X86_32 is not set +CONFIG_X86_64=y +CONFIG_X86_MINIMUM_CPU_FAMILY=64 +CONFIG_X86_SPEEDSTEP_LIB=m +CONFIG_XEN_MAX_DOMAIN_MEMORY=500 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=m +CONFIG_ZONE_DMA32=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/amd64/config.flavour.generic +++ linux-3.5.0/debian.master/config/amd64/config.flavour.generic @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.generic automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/ppc64/config.common.ppc64 +++ linux-3.5.0/debian.master/config/ppc64/config.common.ppc64 @@ -0,0 +1,301 @@ +# +# Config options for config.common.ppc64 automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_ALX is not set +CONFIG_AMIGA_PARTITION=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_NONSTANDARD=y +CONFIG_ATA_PIIX=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_BCH=m +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CLEANCACHE=y +CONFIG_COMPACTION=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_IDLE=y +CONFIG_CRASH_DUMP=y +CONFIG_CRYPTO_LZO=m +# CONFIG_DEBUG_INFO is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DM_RAID45 is not set +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=m +CONFIG_FB_3DFX=y +CONFIG_FB_ATY128=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=y +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FORCE_MAX_ZONEORDER=9 +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_TWL4030=m +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HUGETLB_PAGE=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_DESIGNWARE_CORE=m +CONFIG_IBMEBUS=y +CONFIG_IDE=y +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +CONFIG_IRQ_ALL_CPUS=y +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KEXEC=y +CONFIG_KGDB=y +CONFIG_KSM=y +CONFIG_LATENCYTOP=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=19 +CONFIG_LPARCFG=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_ACTIVE_REGIONS=256 +CONFIG_MAX_RAW_DEVS=8192 +CONFIG_MEMORY_HOTREMOVE=y +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MMIO_NVRAM=y +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=8 +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NOP_USB_XCEIV=m +CONFIG_NR_CPUS=1024 +CONFIG_OSF_PARTITION=y +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCI_SYSCALL=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPC64=y +# CONFIG_PPC_4K_PAGES is not set +CONFIG_PPC_64K_PAGES=y +CONFIG_PPC_970_NAP=y +CONFIG_PPC_CELL=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_P7_NAP=y +CONFIG_PPC_SMLPAR=y +CONFIG_PPC_SPLPAR=y +CONFIG_PPC_XICS=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSERIES_ENERGY=y +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_RCU_FANOUT=64 +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +CONFIG_RTAS_FLASH=y +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_SVW=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +CONFIG_SND_BT87X_OVERCLOCK=y +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_SOC_TWL4030=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +CONFIG_SSB_PCMCIAHOST=y +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +CONFIG_USB_OHCI_HCD_PPC_OF_LE=y +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=m +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=64 +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_WORD_SIZE=64 +CONFIG_XFS_RT=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/config/ppc64/config.flavour.powerpc64-smp +++ linux-3.5.0/debian.master/config/ppc64/config.flavour.powerpc64-smp @@ -0,0 +1,3 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# --- linux-3.5.0.orig/debian.master/config/powerpc/config.flavour.powerpc-smp +++ linux-3.5.0/debian.master/config/powerpc/config.flavour.powerpc-smp @@ -0,0 +1,43 @@ +# +# Config options for config.flavour.powerpc-smp automatically generated by splitconfig.pl +# +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_NO_VIRT_TO_BUS is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ATA_NONSTANDARD is not set +CONFIG_CFG80211_REG_DEBUG=y +# CONFIG_CRASH_DUMP is not set +CONFIG_FB_SYS_COPYAREA=m +CONFIG_FB_SYS_FILLRECT=m +CONFIG_FB_SYS_FOPS=m +CONFIG_FB_SYS_IMAGEBLIT=m +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_KERNEL_START=0xc0000000 +# CONFIG_KGDB is not set +# CONFIG_LATENCYTOP is not set +CONFIG_MAX_ACTIVE_REGIONS=32 +# CONFIG_MMIO_NVRAM is not set +# CONFIG_MPIC_U3_HT_IRQS is not set +# CONFIG_NEED_DMA_MAP_STATE is not set +# CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK is not set +# CONFIG_NONSTATIC_KERNEL is not set +CONFIG_NR_CPUS=4 +CONFIG_PAGE_OFFSET=0xc0000000 +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PPC64 is not set +# CONFIG_PPC_970_NAP is not set +# CONFIG_PPC_CELL 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=y +# CONFIG_PPC_P7_NAP is not set +# CONFIG_PPC_XICS is not set +CONFIG_RCU_FANOUT=32 +# CONFIG_SCHEDSTATS is not set +CONFIG_WORD_SIZE=32 +CONFIG_ZLIB_DEFLATE=m --- linux-3.5.0.orig/debian.master/config/powerpc/ignore.modules +++ linux-3.5.0/debian.master/config/powerpc/ignore.modules @@ -0,0 +1 @@ +1 --- linux-3.5.0.orig/debian.master/config/powerpc/ignore +++ linux-3.5.0/debian.master/config/powerpc/ignore @@ -0,0 +1 @@ +1 --- linux-3.5.0.orig/debian.master/config/powerpc/config.flavour.powerpc64-smp +++ linux-3.5.0/debian.master/config/powerpc/config.flavour.powerpc64-smp @@ -0,0 +1,43 @@ +# +# Config options for config.flavour.powerpc64-smp automatically generated by splitconfig.pl +# +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_ARCH_NO_VIRT_TO_BUS=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_ATA_NONSTANDARD=y +# CONFIG_CFG80211_REG_DEBUG is not set +CONFIG_CRASH_DUMP=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FORCE_MAX_ZONEORDER=13 +CONFIG_HAVE_SETUP_PER_CPU_AREA=y +CONFIG_HUGETLB_PAGE=y +CONFIG_KERNEL_START=0xc000000000000000 +CONFIG_KGDB=y +CONFIG_LATENCYTOP=y +CONFIG_MAX_ACTIVE_REGIONS=256 +CONFIG_MMIO_NVRAM=y +CONFIG_MPIC_U3_HT_IRQS=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y +CONFIG_NONSTATIC_KERNEL=y +CONFIG_NR_CPUS=1024 +CONFIG_PAGE_OFFSET=0xc000000000000000 +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_PPC64=y +CONFIG_PPC_970_NAP=y +CONFIG_PPC_CELL=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_P7_NAP=y +CONFIG_PPC_XICS=y +CONFIG_RCU_FANOUT=64 +CONFIG_SCHEDSTATS=y +CONFIG_WORD_SIZE=64 +CONFIG_ZLIB_DEFLATE=y --- linux-3.5.0.orig/debian.master/config/powerpc/config.common.powerpc +++ linux-3.5.0/debian.master/config/powerpc/config.common.powerpc @@ -0,0 +1,264 @@ +# +# Config options for config.common.powerpc automatically generated by splitconfig.pl +# +CONFIG_64BIT=y +CONFIG_ABX500_CORE=y +CONFIG_ACORN_PARTITION=y +CONFIG_AIC79XX_RESET_DELAY_MS=15000 +# CONFIG_ALX is not set +CONFIG_AMIGA_PARTITION=y +CONFIG_APM_EMULATION=m +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_ASYNC_TX_DMA is not set +CONFIG_ATARI_PARTITION=y +CONFIG_ATA_GENERIC=m +CONFIG_ATA_PIIX=m +# CONFIG_ATM_BR2684_IPFILTER is not set +CONFIG_AUDIT_ARCH=y +CONFIG_AUXDISPLAY=y +# CONFIG_AX25_DAMA_SLAVE is not set +CONFIG_BCH=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_BSD_DISKLABEL=y +CONFIG_BTRFS_FS_POSIX_ACL=y +CONFIG_CLEANCACHE=y +# CONFIG_COMPACTION is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_CPU_FREQ_STAT=m +CONFIG_CPU_IDLE=y +CONFIG_CRYPTO_LZO=m +# CONFIG_DEBUG_INFO is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 +# CONFIG_DM_RAID45 is not set +# CONFIG_DVB_FE_CUSTOMISE is not set +CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y +CONFIG_EDAC=y +CONFIG_EDAC_MM_EDAC=m +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_EVM=y +CONFIG_EXT2_FS=m +CONFIG_EZX_PCAP=y +CONFIG_FAT_FS=m +CONFIG_FB_3DFX=y +CONFIG_FB_ATY128=y +CONFIG_FB_BACKLIGHT=y +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_IMAGEBLIT=y +CONFIG_FB_DDC=y +CONFIG_FB_MACMODES=y +CONFIG_FB_RADEON=y +CONFIG_FB_SVGALIB=m +CONFIG_FB_TILEBLITTING=y +CONFIG_FB_VOODOO1=y +CONFIG_FIRMWARE_EDID=y +# CONFIG_FONTS is not set +CONFIG_FUNCTION_TRACER=y +# CONFIG_GPIO_SYSFS is not set +CONFIG_GPIO_TWL4030=m +CONFIG_HAMRADIO=y +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set +CONFIG_HIDRAW=y +CONFIG_HTC_I2CPLD=y +CONFIG_HZ=250 +CONFIG_I2C_ALGOBIT=y +CONFIG_I2C_DESIGNWARE_CORE=m +# CONFIG_IBMEBUS is not set +# CONFIG_IDE is not set +CONFIG_IPV6_PRIVACY=y +CONFIG_IPV6_ROUTER_PREF=y +# CONFIG_IP_PNP is not set +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_DEBUG=y +CONFIG_IRDA_FAST_RR=y +CONFIG_IRDA_ULTRA=y +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_ISA is not set +CONFIG_ISDN=y +CONFIG_IWMC3200TOP_DEBUGFS=y +CONFIG_KARMA_PARTITION=y +CONFIG_KEXEC=y +CONFIG_KSM=y +CONFIG_LDM_PARTITION=y +CONFIG_LEGACY_PTY_COUNT=0 +CONFIG_LIBERTAS_MESH=y +# CONFIG_LIBIPW_DEBUG is not set +CONFIG_LIS3L02DQ=m +CONFIG_LOGIG940_FF=y +CONFIG_LOGIRUMBLEPAD2_FF=y +CONFIG_LOGITECH_FF=y +CONFIG_LOGIWHEELS_FF=y +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_LPARCFG is not set +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_MESH=y +CONFIG_MAC_PARTITION=y +CONFIG_MAX_RAW_DEVS=256 +# CONFIG_MEMORY_HOTREMOVE is not set +CONFIG_MFD_88PM860X=y +CONFIG_MFD_AAT2870_CORE=y +CONFIG_MFD_MAX8925=y +CONFIG_MFD_MAX8997=y +CONFIG_MFD_MAX8998=y +CONFIG_MFD_STMPE=y +CONFIG_MFD_TC3589X=y +# CONFIG_MFD_TMIO is not set +CONFIG_MFD_TPS6586X=y +CONFIG_MFD_TPS65910=y +CONFIG_MFD_TPS65912_I2C=y +CONFIG_MFD_TPS65912_SPI=y +CONFIG_MFD_WM831X_I2C=y +CONFIG_MFD_WM831X_SPI=y +CONFIG_MFD_WM8350_I2C=y +CONFIG_MFD_WM8994=y +CONFIG_MINIX_SUBPARTITION=y +CONFIG_MMC_BLOCK=m +CONFIG_MMC_SDHCI=m +CONFIG_MMC_SDHCI_PLTFM=m +CONFIG_MODULE_SRCVERSION_ALL=y +CONFIG_MODVERSIONS=y +CONFIG_MTD=m +CONFIG_MTD_BLKDEVS=m +CONFIG_MTD_BLOCK=m +CONFIG_MTD_CHAR=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_MUTEX_SPIN_ON_OWNER=y +CONFIG_NET_DMA=y +CONFIG_NL80211_TESTMODE=y +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NODES_SHIFT=8 +CONFIG_NOP_USB_XCEIV=m +CONFIG_NVRAM=y +CONFIG_OSF_PARTITION=y +CONFIG_PARPORT_1284=y +CONFIG_PATA_SIS=m +CONFIG_PCCARD=m +CONFIG_PCI_SYSCALL=y +CONFIG_PHYSICAL_START=0x00000000 +CONFIG_PMIC_ADP5520=y +CONFIG_PMIC_DA903X=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_DEVFREQ=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_SMLPAR is not set +# CONFIG_PPC_SPLPAR is not set +CONFIG_PPP_FILTER=y +CONFIG_PPP_MULTILINK=y +# CONFIG_PREEMPT_NONE is not set +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_PSERIES_ENERGY=m +CONFIG_PSTORE=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +# CONFIG_REGULATOR_DEBUG is not set +CONFIG_REGULATOR_FIXED_VOLTAGE=m +CONFIG_RT2800USB_UNKNOWN=y +# CONFIG_RT2X00_LIB_DEBUGFS is not set +# CONFIG_RTAS_FLASH is not set +CONFIG_RTC_DRV_CMOS=m +CONFIG_RTC_DRV_TWL4030=m +CONFIG_SATA_SVW=y +CONFIG_SCHED_AUTOGROUP=y +CONFIG_SCHED_SMT=y +CONFIG_SCSI_LOGGING=y +CONFIG_SCSI_OSD_INITIATOR=m +CONFIG_SCSI_SCAN_ASYNC=y +CONFIG_SCSI_SPI_ATTRS=m +CONFIG_SECURITY_SELINUX_BOOTPARAM=y +CONFIG_SECURITY_SELINUX_DISABLE=y +CONFIG_SECURITY_TOMOYO=y +# CONFIG_SENSORS_SCH56XX_COMMON is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_PCI=m +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIO_SERPORT=m +CONFIG_SGI_PARTITION=y +CONFIG_SND=m +CONFIG_SND_BT87X_OVERCLOCK=y +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_SOC_TWL4030=m +CONFIG_SND_TIMER=m +CONFIG_SOLARIS_X86_PARTITION=y +CONFIG_SOUND=m +CONFIG_SPARSEMEM_MANUAL=y +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_XZ=y +# CONFIG_SSB_PCMCIAHOST is not set +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING_MEDIA=y +CONFIG_STANDALONE=y +CONFIG_STMMAC_ETH=m +CONFIG_SUN_PARTITION=y +CONFIG_SYSCTL_SYSCALL=y +CONFIG_SYSV68_PARTITION=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_TCG_TPM=y +CONFIG_TCP_MD5SIG=y +CONFIG_TEST_KSTRTOX=m +CONFIG_TOUCHSCREEN_EETI=m +CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TWL4030_CORE=y +CONFIG_TWL4030_USB=m +CONFIG_TWL6040_CORE=y +CONFIG_ULTRIX_PARTITION=y +CONFIG_UNIXWARE_DISKLABEL=y +CONFIG_UNUSED_SYMBOLS=y +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_XHCI=y +CONFIG_USB_EHCI_HCD_PLATFORM=y +CONFIG_USB_GADGET=m +# CONFIG_USB_G_MULTI is not set +CONFIG_USB_HCD_BCMA=m +CONFIG_USB_HCD_SSB=m +CONFIG_USB_MUSB_HDRC=m +CONFIG_USB_MUSB_TUSB6010=m +CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y +CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y +CONFIG_USB_OHCI_HCD_PLATFORM=y +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +# CONFIG_USB_OTG is not set +CONFIG_VFAT_FS=m +CONFIG_VGASTATE=m +CONFIG_VGA_ARB_MAX_GPUS=16 +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +CONFIG_VIRTIO=m +CONFIG_VIRTIO_BALLOON=m +CONFIG_VIRTIO_BLK=m +CONFIG_VIRTIO_MMIO=m +CONFIG_VIRTIO_NET=m +CONFIG_VIRTIO_PCI=m +CONFIG_VIRTIO_RING=m +CONFIG_VIRT_DRIVERS=y +CONFIG_VLAN_8021Q_GVRP=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_WAN=y +CONFIG_WAN_ROUTER=m +CONFIG_WATCHDOG=y +CONFIG_WIMAX_I2400M_SDIO=m +CONFIG_WIMAX_I2400M_USB=m +CONFIG_WM8350_WATCHDOG=m +CONFIG_XFS_RT=y +CONFIG_ZONE_DMA_FLAG=1 --- linux-3.5.0.orig/debian.master/rules.d/ppc64.mk +++ linux-3.5.0/debian.master/rules.d/ppc64.mk @@ -0,0 +1,19 @@ +human_arch = PowerPC (64 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = ppc64_defconfig +flavours = powerpc64-smp +build_image = vmlinux +kernel_file = $(build_image) +install_file = $(build_image) + +loader = yaboot + +custom_flavours = + +no_dumpfile = true +skipdbg = true +skipabi = true +skipmodule = true + +family=ubuntu --- linux-3.5.0.orig/debian.master/rules.d/armhf.mk +++ linux-3.5.0/debian.master/rules.d/armhf.mk @@ -0,0 +1,14 @@ +human_arch = ARM (hard float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = omap highbank +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub + +# Flavour specific configuration. +dtb_file_highbank = arch/$(build_arch)/boot/highbank.dtb --- linux-3.5.0.orig/debian.master/rules.d/amd64.mk +++ linux-3.5.0/debian.master/rules.d/amd64.mk @@ -0,0 +1,11 @@ +human_arch = 64 bit x86 +build_arch = x86_64 +header_arch = $(build_arch) +defconfig = defconfig +flavours = generic +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +no_dumpfile = true +uefi_signed = true --- linux-3.5.0.orig/debian.master/rules.d/i386.mk +++ linux-3.5.0/debian.master/rules.d/i386.mk @@ -0,0 +1,10 @@ +human_arch = 32 bit x86 +build_arch = i386 +header_arch = x86_64 +defconfig = defconfig +flavours = generic +build_image = bzImage +kernel_file = arch/$(build_arch)/boot/bzImage +install_file = vmlinuz +loader = grub +no_dumpfile = true --- linux-3.5.0.orig/debian.master/rules.d/armel.mk +++ linux-3.5.0/debian.master/rules.d/armel.mk @@ -0,0 +1,11 @@ +human_arch = ARM (soft float) +build_arch = arm +header_arch = arm +defconfig = defconfig +flavours = omap +build_image = zImage +kernel_file = arch/$(build_arch)/boot/zImage +install_file = vmlinuz +no_dumpfile = true + +loader = grub --- linux-3.5.0.orig/debian.master/rules.d/powerpc.mk +++ linux-3.5.0/debian.master/rules.d/powerpc.mk @@ -0,0 +1,19 @@ +human_arch = PowerPC (32 bit userspace) +build_arch = powerpc +header_arch = $(build_arch) +defconfig = pmac32_defconfig +flavours = powerpc-smp powerpc64-smp +build_image = vmlinux +kernel_file = $(build_image) +install_file = $(build_image) + +loader = yaboot + +custom_flavours = + +no_dumpfile = true +skipdbg = true +skipabi = true +skipmodule = true + +family=ubuntu --- linux-3.5.0.orig/usr/gen_init_cpio.c +++ linux-3.5.0/usr/gen_init_cpio.c @@ -303,7 +303,7 @@ int retval; int rc = -1; int namesize; - int i; + unsigned int i; mode |= S_IFREG; @@ -381,25 +381,28 @@ static char *cpio_replace_env(char *new_location) { - char expanded[PATH_MAX + 1]; - char env_var[PATH_MAX + 1]; - char *start; - char *end; - - for (start = NULL; (start = strstr(new_location, "${")); ) { - end = strchr(start, '}'); - if (start < end) { - *env_var = *expanded = '\0'; - strncat(env_var, start + 2, end - start - 2); - strncat(expanded, new_location, start - new_location); - strncat(expanded, getenv(env_var), PATH_MAX); - strncat(expanded, end + 1, PATH_MAX); - strncpy(new_location, expanded, PATH_MAX); - } else - break; - } + char expanded[PATH_MAX + 1]; + char env_var[PATH_MAX + 1]; + char *start; + char *end; + + for (start = NULL; (start = strstr(new_location, "${")); ) { + end = strchr(start, '}'); + if (start < end) { + *env_var = *expanded = '\0'; + strncat(env_var, start + 2, end - start - 2); + strncat(expanded, new_location, start - new_location); + strncat(expanded, getenv(env_var), + PATH_MAX - strlen(expanded)); + strncat(expanded, end + 1, + PATH_MAX - strlen(expanded)); + strncpy(new_location, expanded, PATH_MAX); + new_location[PATH_MAX] = 0; + } else + break; + } - return new_location; + return new_location; } --- linux-3.5.0.orig/scripts/Kbuild.include +++ linux-3.5.0/scripts/Kbuild.include @@ -98,24 +98,24 @@ # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,) as-option = $(call try-run,\ - $(CC) $(KBUILD_CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2)) # as-instr # Usage: cflags-y += $(call as-instr,instr,option1,option2) as-instr = $(call try-run,\ - printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3)) + printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3)) # cc-option # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586) cc-option = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2)) # cc-option-yn # Usage: flag := $(call cc-option-yn,-march=winchip-c6) cc-option-yn = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -xc /dev/null -o "$$TMP",y,n) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n) # cc-option-align # Prefix align with either -falign or -malign @@ -125,7 +125,7 @@ # cc-disable-warning # Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable) cc-disable-warning = $(call try-run,\ - $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -xc /dev/null -o "$$TMP",-Wno-$(strip $(1))) + $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1))) # cc-version # Usage gcc-ver := $(call cc-version) @@ -143,7 +143,7 @@ # cc-ldoption # Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both) cc-ldoption = $(call try-run,\ - $(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2)) + $(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2)) # ld-option # Usage: LDFLAGS += $(call ld-option, -X) @@ -209,7 +209,7 @@ # >$< substitution to preserve $ when reloading .cmd file # note: when using inline perl scripts [perl -e '...$$t=1;...'] # in $(cmd_xxx) double $$ your perl vars -make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))) +make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))) # Find any prerequisites that is newer than target or that does not exist. # PHONY targets skipped in both cases. --- linux-3.5.0.orig/scripts/gcc-x86_64-has-stack-protector.sh +++ linux-3.5.0/scripts/gcc-x86_64-has-stack-protector.sh @@ -1,6 +1,6 @@ #!/bin/sh -echo "int foo(void) { char X[200]; return 3; }" | $* -S -xc -c -O0 -mcmodel=kernel -fstack-protector - -o - 2> /dev/null | grep -q "%gs" +echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -mcmodel=kernel -fstack-protector - -o - 2> /dev/null | grep -q "%gs" if [ "$?" -eq "0" ] ; then echo y else --- linux-3.5.0.orig/scripts/gcc-version.sh +++ linux-3.5.0/scripts/gcc-version.sh @@ -22,10 +22,10 @@ exit 1 fi -MAJOR=$(echo __GNUC__ | $compiler -E -xc - | tail -n 1) -MINOR=$(echo __GNUC_MINOR__ | $compiler -E -xc - | tail -n 1) +MAJOR=$(echo __GNUC__ | $compiler -E -x c - | tail -n 1) +MINOR=$(echo __GNUC_MINOR__ | $compiler -E -x c - | tail -n 1) if [ "x$with_patchlevel" != "x" ] ; then - PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -xc - | tail -n 1) + PATCHLEVEL=$(echo __GNUC_PATCHLEVEL__ | $compiler -E -x c - | tail -n 1) printf "%02d%02d%02d\\n" $MAJOR $MINOR $PATCHLEVEL else printf "%02d%02d\\n" $MAJOR $MINOR --- linux-3.5.0.orig/scripts/headers_install.pl +++ linux-3.5.0/scripts/headers_install.pl @@ -18,7 +18,9 @@ use strict; -my ($readdir, $installdir, $arch, @files) = @ARGV; +my ($readdir, $installdir, $arch, $printdir, @files) = @ARGV; + +$printdir =~ s@^include/@@; my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__"; @@ -30,6 +32,10 @@ open(my $out, '>', $tmpfile) or die "$tmpfile: $!\n"; while (my $line = <$in>) { + # Any #include which uses "" and does not have a path needs + # rewriting so that the resultant user space headers are + # safe against the use of -I-. + $line =~ s/^(\s*#\s*include\s+)"([^\/]*?)"/$1<$printdir\/$2>/; $line =~ s/([\s(])__user\s/$1/g; $line =~ s/([\s(])__force\s/$1/g; $line =~ s/([\s(])__iomem\s/$1/g; --- linux-3.5.0.orig/scripts/Makefile.headersinst +++ linux-3.5.0/scripts/Makefile.headersinst @@ -55,9 +55,9 @@ quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\ file$(if $(word 2, $(all-files)),s)) cmd_install = \ - $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(header-y); \ - $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(objhdr-y); \ - $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(genhdr-y); \ + $(PERL) $< $(srctree)/$(obj) $(install) $(SRCARCH) $(printdir) $(header-y); \ + $(PERL) $< $(objtree)/$(obj) $(install) $(SRCARCH) $(printdir) $(objhdr-y); \ + $(PERL) $< $(objtree)/$(gen) $(install) $(SRCARCH) $(printdir) $(genhdr-y); \ for F in $(wrapper-files); do \ echo "\#include " > $(install)/$$F; \ done; \ --- linux-3.5.0.orig/scripts/fw-to-ihex.sh +++ linux-3.5.0/scripts/fw-to-ihex.sh @@ -0,0 +1,16 @@ +#!/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 + +gcc -c $F.c +objcopy -Oihex $F.o $F.ihex + --- linux-3.5.0.orig/scripts/gcc-x86_32-has-stack-protector.sh +++ linux-3.5.0/scripts/gcc-x86_32-has-stack-protector.sh @@ -1,6 +1,6 @@ #!/bin/sh -echo "int foo(void) { char X[200]; return 3; }" | $* -S -xc -c -O0 -fstack-protector - -o - 2> /dev/null | grep -q "%gs" +echo "int foo(void) { char X[200]; return 3; }" | $* -S -x c -c -O0 -fstack-protector - -o - 2> /dev/null | grep -q "%gs" if [ "$?" -eq "0" ] ; then echo y else --- linux-3.5.0.orig/scripts/package/buildtar +++ linux-3.5.0/scripts/package/buildtar @@ -109,7 +109,7 @@ if tar --owner=root --group=root --help >/dev/null 2>&1; then opts="--owner=root --group=root" fi - tar cf - . $opts | ${compress} > "${tarball}${file_ext}" + tar cf - boot/* lib/* $opts | ${compress} > "${tarball}${file_ext}" ) echo "Tarball successfully created in ${tarball}${file_ext}" --- linux-3.5.0.orig/scripts/kconfig/check.sh +++ linux-3.5.0/scripts/kconfig/check.sh @@ -1,6 +1,6 @@ #!/bin/sh # Needed for systems without gettext -$* -xc -o /dev/null - > /dev/null 2>&1 << EOF +$* -x c -o /dev/null - > /dev/null 2>&1 << EOF #include int main() { --- linux-3.5.0.orig/scripts/kconfig/streamline_config.pl +++ linux-3.5.0/scripts/kconfig/streamline_config.pl @@ -463,6 +463,8 @@ if (defined($configs{$1})) { if ($localyesconfig) { $setconfigs{$1} = 'y'; + print "$1=y\n"; + next; } else { $setconfigs{$1} = $2; } --- linux-3.5.0.orig/scripts/kconfig/lkc.h +++ linux-3.5.0/scripts/kconfig/lkc.h @@ -90,7 +90,9 @@ /* confdata.c and expr.c */ static inline void xfwrite(const void *str, size_t len, size_t count, FILE *out) { - assert(len != 0); + //assert(len != 0); + if (len == 0) + return; if (fwrite(str, len, count, out) != count) fprintf(stderr, "Error in writing or end of file.\n"); --- linux-3.5.0.orig/scripts/kconfig/lxdialog/check-lxdialog.sh +++ linux-3.5.0/scripts/kconfig/lxdialog/check-lxdialog.sh @@ -38,7 +38,7 @@ # Check if we can link to ncurses check() { - $cc -xc - -o $tmp 2>/dev/null <<'EOF' + $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC main() {} EOF --- linux-3.5.0.orig/include/Kbuild +++ linux-3.5.0/include/Kbuild @@ -9,4 +9,3 @@ header-y += video/ header-y += drm/ header-y += xen/ -header-y += scsi/ --- linux-3.5.0.orig/include/xen/grant_table.h +++ linux-3.5.0/include/xen/grant_table.h @@ -187,6 +187,7 @@ struct gnttab_map_grant_ref *kmap_ops, struct page **pages, unsigned int count); int gnttab_unmap_refs(struct gnttab_unmap_grant_ref *unmap_ops, - struct page **pages, unsigned int count, bool clear_pte); + struct gnttab_map_grant_ref *kunmap_ops, + struct page **pages, unsigned int count); #endif /* __ASM_GNTTAB_H__ */ --- linux-3.5.0.orig/include/net/sock.h +++ linux-3.5.0/include/net/sock.h @@ -217,6 +217,7 @@ * @sk_route_nocaps: forbidden route capabilities (e.g NETIF_F_GSO_MASK) * @sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4) * @sk_gso_max_size: Maximum GSO segment size to build + * @sk_gso_max_segs: Maximum number of GSO segments * @sk_lingertime: %SO_LINGER l_linger setting * @sk_backlog: always used with the per-socket spinlock held * @sk_callback_lock: used with the callbacks in the end of this struct @@ -336,6 +337,7 @@ netdev_features_t sk_route_nocaps; int sk_gso_type; unsigned int sk_gso_max_size; + u16 sk_gso_max_segs; int sk_rcvlowat; unsigned long sk_lingertime; struct sk_buff_head sk_error_queue; @@ -977,7 +979,7 @@ sk->sk_prot->name, sk, atomic_read(&sk->sk_prot->socks)); } -inline void sk_refcnt_debug_release(const struct sock *sk) +static inline void sk_refcnt_debug_release(const struct sock *sk) { if (atomic_read(&sk->sk_refcnt) != 1) printk(KERN_DEBUG "Destruction of the %s socket %p delayed, refcnt=%d\n", --- linux-3.5.0.orig/include/net/scm.h +++ linux-3.5.0/include/net/scm.h @@ -71,9 +71,11 @@ } static __inline__ int scm_send(struct socket *sock, struct msghdr *msg, - struct scm_cookie *scm) + struct scm_cookie *scm, bool forcecreds) { memset(scm, 0, sizeof(*scm)); + if (forcecreds) + scm_set_cred(scm, task_tgid(current), current_cred()); unix_get_peersec_dgram(sock, scm); if (msg->msg_controllen <= 0) return 0; --- linux-3.5.0.orig/include/net/ipv6.h +++ linux-3.5.0/include/net/ipv6.h @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -395,6 +396,17 @@ a->s6_addr32[2] | a->s6_addr32[3]) == 0; } +/* more secured version of ipv6_addr_hash() */ +static inline u32 ipv6_addr_jhash(const struct in6_addr *a) +{ + u32 v = (__force u32)a->s6_addr32[0] ^ (__force u32)a->s6_addr32[1]; + + return jhash_3words(v, + (__force u32)a->s6_addr32[2], + (__force u32)a->s6_addr32[3], + ipv6_hash_secret); +} + static inline bool ipv6_addr_loopback(const struct in6_addr *a) { return (a->s6_addr32[0] | a->s6_addr32[1] | --- linux-3.5.0.orig/include/net/codel.h +++ linux-3.5.0/include/net/codel.h @@ -305,6 +305,8 @@ } } } else if (drop) { + u32 delta; + if (params->ecn && INET_ECN_set_ce(skb)) { stats->ecn_mark++; } else { @@ -320,9 +322,11 @@ * assume that the drop rate that controlled the queue on the * last cycle is a good starting point to control it now. */ - if (codel_time_before(now - vars->drop_next, + delta = vars->count - vars->lastcount; + if (delta > 1 && + codel_time_before(now - vars->drop_next, 16 * params->interval)) { - vars->count = (vars->count - vars->lastcount) | 1; + vars->count = delta; /* we dont care if rec_inv_sqrt approximation * is not very precise : * Next Newton steps will correct it quadratically. --- linux-3.5.0.orig/include/net/mac80211.h +++ linux-3.5.0/include/net/mac80211.h @@ -1197,6 +1197,10 @@ * queue mapping in order to use different queues (not just one per AC) * for different virtual interfaces. See the doc section on HW queue * control for more details. + * + * @IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL: On this hardware TX BA session + * should be tear down once BAR frame will not be acked. + * */ enum ieee80211_hw_flags { IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, @@ -1224,6 +1228,7 @@ IEEE80211_HW_AP_LINK_PS = 1<<22, IEEE80211_HW_TX_AMPDU_SETUP_IN_HW = 1<<23, IEEE80211_HW_SCAN_WHILE_IDLE = 1<<24, + IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL = 1<<26, }; /** --- linux-3.5.0.orig/include/net/xfrm.h +++ linux-3.5.0/include/net/xfrm.h @@ -269,6 +269,9 @@ int (*check)(struct xfrm_state *x, struct sk_buff *skb, __be32 net_seq); + int (*recheck)(struct xfrm_state *x, + struct sk_buff *skb, + __be32 net_seq); void (*notify)(struct xfrm_state *x, int event); int (*overflow)(struct xfrm_state *x, struct sk_buff *skb); }; --- linux-3.5.0.orig/include/net/cfg80211.h +++ linux-3.5.0/include/net/cfg80211.h @@ -94,6 +94,7 @@ * is not permitted. * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel * is not permitted. + * @IEEE80211_CHAN_NO_OFDM: OFDM is not allowed on this channel. */ enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = 1<<0, @@ -102,6 +103,7 @@ IEEE80211_CHAN_RADAR = 1<<3, IEEE80211_CHAN_NO_HT40PLUS = 1<<4, IEEE80211_CHAN_NO_HT40MINUS = 1<<5, + IEEE80211_CHAN_NO_OFDM = 1<<6, }; #define IEEE80211_CHAN_NO_HT40 \ @@ -1130,6 +1132,7 @@ const u8 *ie; size_t ie_len; u16 reason_code; + bool local_state_change; }; /** @@ -2507,6 +2510,15 @@ unsigned int __attribute_const__ ieee80211_hdrlen(__le16 fc); /** + * ieee80211_get_mesh_hdrlen - get mesh extension header length + * @meshhdr: the mesh extension header, only the flags field + * (first byte) will be accessed + * Returns the length of the extension header, which is always at + * least 6 bytes and at most 18 if address 5 and 6 are present. + */ +unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr); + +/** * DOC: Data path helpers * * In addition to generic utilities, cfg80211 also offers --- linux-3.5.0.orig/include/net/inet_sock.h +++ linux-3.5.0/include/net/inet_sock.h @@ -202,6 +202,7 @@ extern int inet_sk_rebuild_header(struct sock *sk); extern u32 inet_ehash_secret; +extern u32 ipv6_hash_secret; extern void build_ehash_secret(void); static inline unsigned int inet_ehashfn(struct net *net, --- linux-3.5.0.orig/include/net/inet6_hashtables.h +++ linux-3.5.0/include/net/inet6_hashtables.h @@ -28,16 +28,16 @@ struct inet_hashinfo; -/* I have no idea if this is a good hash for v6 or not. -DaveM */ static inline unsigned int inet6_ehashfn(struct net *net, const struct in6_addr *laddr, const u16 lport, const struct in6_addr *faddr, const __be16 fport) { - u32 ports = (lport ^ (__force u16)fport); + u32 ports = (((u32)lport) << 16) | (__force u32)fport; return jhash_3words((__force u32)laddr->s6_addr32[3], - (__force u32)faddr->s6_addr32[3], - ports, inet_ehash_secret + net_hash_mix(net)); + ipv6_addr_jhash(faddr), + ports, + inet_ehash_secret + net_hash_mix(net)); } static inline int inet6_sk_ehashfn(const struct sock *sk) --- linux-3.5.0.orig/include/net/inet_connection_sock.h +++ linux-3.5.0/include/net/inet_connection_sock.h @@ -318,6 +318,7 @@ const unsigned long max_rto); extern void inet_csk_destroy_sock(struct sock *sk); +extern void inet_csk_prepare_forced_close(struct sock *sk); /* * LISTEN is a special case for poll.. --- linux-3.5.0.orig/include/net/tcp.h +++ linux-3.5.0/include/net/tcp.h @@ -253,6 +253,7 @@ extern int sysctl_tcp_thin_linear_timeouts; extern int sysctl_tcp_thin_dupack; extern int sysctl_tcp_early_retrans; +extern int sysctl_tcp_challenge_ack_limit; extern atomic_long_t tcp_memory_allocated; extern struct percpu_counter tcp_sockets_allocated; --- linux-3.5.0.orig/include/net/netfilter/nf_conntrack_ecache.h +++ linux-3.5.0/include/net/netfilter/nf_conntrack_ecache.h @@ -18,6 +18,7 @@ u16 ctmask; /* bitmask of ct events to be delivered */ u16 expmask; /* bitmask of expect events to be delivered */ u32 pid; /* netlink pid of destroyer */ + struct timer_list timeout; }; static inline struct nf_conntrack_ecache * --- linux-3.5.0.orig/include/net/bluetooth/hci_core.h +++ linux-3.5.0/include/net/bluetooth/hci_core.h @@ -282,6 +282,7 @@ int (*send)(struct sk_buff *skb); void (*notify)(struct hci_dev *hdev, unsigned int evt); int (*ioctl)(struct hci_dev *hdev, unsigned int cmd, unsigned long arg); + void (*load_firmware)(struct hci_dev *hdev); }; struct hci_conn { --- linux-3.5.0.orig/include/net/bluetooth/smp.h +++ linux-3.5.0/include/net/bluetooth/smp.h @@ -136,7 +136,7 @@ }; /* SMP Commands */ -int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level); +int smp_conn_security(struct hci_conn *hcon, __u8 sec_level); int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb); int smp_distribute_keys(struct l2cap_conn *conn, __u8 force); int smp_user_confirm_reply(struct hci_conn *conn, u16 mgmt_op, __le32 passkey); --- linux-3.5.0.orig/include/target/target_core_base.h +++ linux-3.5.0/include/target/target_core_base.h @@ -220,6 +220,7 @@ TCM_CHECK_CONDITION_UNIT_ATTENTION = 0x0e, TCM_CHECK_CONDITION_NOT_READY = 0x0f, TCM_RESERVATION_CONFLICT = 0x10, + TCM_ADDRESS_OUT_OF_RANGE = 0x11, }; enum target_sc_flags_table { --- linux-3.5.0.orig/include/linux/kd.h +++ linux-3.5.0/include/linux/kd.h @@ -45,6 +45,7 @@ #define KD_GRAPHICS 0x01 #define KD_TEXT0 0x02 /* obsolete */ #define KD_TEXT1 0x03 /* obsolete */ +#define KD_TRANSPARENT 0x04 #define KDGETMODE 0x4B3B /* get current mode */ #define KDMAPDISP 0x4B3C /* map display into address space */ --- linux-3.5.0.orig/include/linux/memory.h +++ linux-3.5.0/include/linux/memory.h @@ -19,7 +19,7 @@ #include #include -#define MIN_MEMORY_BLOCK_SIZE (1 << SECTION_SIZE_BITS) +#define MIN_MEMORY_BLOCK_SIZE (1UL << SECTION_SIZE_BITS) struct memory_block { unsigned long start_section_nr; --- linux-3.5.0.orig/include/linux/pps_kernel.h +++ linux-3.5.0/include/linux/pps_kernel.h @@ -43,7 +43,7 @@ int event, void *data); /* PPS echo function */ struct module *owner; - struct device *dev; + struct device *dev; /* Parent device for device_create */ }; struct pps_event_time { @@ -69,6 +69,7 @@ wait_queue_head_t queue; /* PPS event queue */ unsigned int id; /* PPS source unique ID */ + void const *lookup_cookie; /* pps_lookup_dev only */ struct cdev cdev; struct device *dev; struct fasync_struct *async_queue; /* fasync method */ @@ -82,16 +83,26 @@ extern struct device_attribute pps_attrs[]; /* + * Internal functions. + * + * These are not actually part of the exported API, but this is a + * convenient header file to put them in. + */ + +extern int pps_register_cdev(struct pps_device *pps); +extern void pps_unregister_cdev(struct pps_device *pps); + +/* * Exported functions */ extern struct pps_device *pps_register_source( struct pps_source_info *info, int default_params); extern void pps_unregister_source(struct pps_device *pps); -extern int pps_register_cdev(struct pps_device *pps); -extern void pps_unregister_cdev(struct pps_device *pps); extern void pps_event(struct pps_device *pps, struct pps_event_time *ts, int event, void *data); +/* Look up a pps device by magic cookie */ +struct pps_device *pps_lookup_dev(void const *cookie); static inline void timespec_to_pps_ktime(struct pps_ktime *kt, struct timespec ts) --- linux-3.5.0.orig/include/linux/time.h +++ linux-3.5.0/include/linux/time.h @@ -107,11 +107,36 @@ return ts_delta; } +#define KTIME_MAX ((s64)~((u64)1 << 63)) +#if (BITS_PER_LONG == 64) +# define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) +#else +# define KTIME_SEC_MAX LONG_MAX +#endif + /* * Returns true if the timespec is norm, false if denorm: */ -#define timespec_valid(ts) \ - (((ts)->tv_sec >= 0) && (((unsigned long) (ts)->tv_nsec) < NSEC_PER_SEC)) +static inline bool timespec_valid(const struct timespec *ts) +{ + /* Dates before 1970 are bogus */ + if (ts->tv_sec < 0) + return false; + /* Can't have more nanoseconds then a second */ + if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) + return false; + return true; +} + +static inline bool timespec_valid_strict(const struct timespec *ts) +{ + if (!timespec_valid(ts)) + return false; + /* Disallow values that could overflow ktime_t */ + if ((unsigned long long)ts->tv_sec >= KTIME_SEC_MAX) + return false; + return true; +} extern void read_persistent_clock(struct timespec *ts); extern void read_boot_clock(struct timespec *ts); @@ -257,14 +282,6 @@ #endif /* __KERNEL__ */ -#define NFDBITS __NFDBITS - -#define FD_SETSIZE __FD_SETSIZE -#define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp) -#define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp) -#define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp) -#define FD_ZERO(fdsetp) __FD_ZERO(fdsetp) - /* * Names of the interval timers, and structure * defining a timer setting: --- linux-3.5.0.orig/include/linux/audit.h +++ linux-3.5.0/include/linux/audit.h @@ -106,6 +106,7 @@ #define AUDIT_MMAP 1323 /* Record showing descriptor and flags in mmap */ #define AUDIT_NETFILTER_PKT 1324 /* Packets traversing netfilter chains */ #define AUDIT_NETFILTER_CFG 1325 /* Netfilter chain modifications */ +#define AUDIT_SECCOMP 1326 /* Secure Computing event */ #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ @@ -510,7 +511,8 @@ static inline void audit_seccomp(unsigned long syscall, long signr, int code) { - if (unlikely(!audit_dummy_context())) + /* Force a record to be reported if a signal was delivered. */ + if (signr || unlikely(!audit_dummy_context())) __audit_seccomp(syscall, signr, code); } --- linux-3.5.0.orig/include/linux/nfs_fs.h +++ linux-3.5.0/include/linux/nfs_fs.h @@ -265,11 +265,6 @@ return NFS_SERVER(inode)->nfs_client->rpc_ops; } -static inline __be32 *NFS_COOKIEVERF(const struct inode *inode) -{ - return NFS_I(inode)->cookieverf; -} - static inline unsigned NFS_MINATTRTIMEO(const struct inode *inode) { struct nfs_server *nfss = NFS_SERVER(inode); --- linux-3.5.0.orig/include/linux/security.h +++ linux-3.5.0/include/linux/security.h @@ -118,6 +118,7 @@ extern unsigned long mmap_min_addr; extern unsigned long dac_mmap_min_addr; #else +#define mmap_min_addr 0UL #define dac_mmap_min_addr 0UL #endif @@ -1242,8 +1243,6 @@ * Check that the @parent process has sufficient permission to trace the * current process before allowing the current process to present itself * to the @parent process for tracing. - * The parent process will still have to undergo the ptrace_access_check - * checks before it is allowed to trace this one. * @parent contains the task_struct structure for debugger process. * Return 0 if permission is granted. * @capget: @@ -3023,5 +3022,53 @@ { } #endif /* CONFIG_SECURITY */ +#ifdef CONFIG_SECURITY_YAMA +extern int yama_ptrace_access_check(struct task_struct *child, + unsigned int mode); +extern int yama_ptrace_traceme(struct task_struct *parent); +extern int yama_path_link(struct dentry *old_dentry, struct path *new_dir, + struct dentry *new_dentry); +extern int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata); +extern void yama_task_free(struct task_struct *task); +extern int yama_task_prctl(int option, unsigned long arg2, unsigned long arg3, + unsigned long arg4, unsigned long arg5); +#else +static inline int yama_ptrace_access_check(struct task_struct *child, + unsigned int mode) +{ + return 0; +} + +static inline int yama_ptrace_traceme(struct task_struct *parent) +{ + return 0; +} + +static inline int yama_path_link(struct dentry *old_dentry, + struct path *new_dir, + struct dentry *new_dentry) +{ + return 0; +} + +static inline int yama_inode_follow_link(struct dentry *dentry, + struct nameidata *nameidata) +{ + return 0; +} + +static inline void yama_task_free(struct task_struct *task) +{ +} + +static inline int yama_task_prctl(int option, unsigned long arg2, + unsigned long arg3, unsigned long arg4, + unsigned long arg5) +{ + return -ENOSYS; +} +#endif /* CONFIG_SECURITY_YAMA */ + #endif /* ! __LINUX_SECURITY_H */ --- linux-3.5.0.orig/include/linux/namei.h +++ linux-3.5.0/include/linux/namei.h @@ -85,6 +85,7 @@ extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, int (*open)(struct inode *, struct file *)); +extern struct dentry *lookup_hash(struct nameidata *nd); extern struct dentry *lookup_one_len(const char *, struct dentry *, int); extern int follow_down_one(struct path *); --- linux-3.5.0.orig/include/linux/module.h +++ linux-3.5.0/include/linux/module.h @@ -196,11 +196,11 @@ struct module *source, *target; }; -enum module_state -{ - MODULE_STATE_LIVE, - MODULE_STATE_COMING, - MODULE_STATE_GOING, +enum module_state { + MODULE_STATE_LIVE, /* Normal state. */ + MODULE_STATE_COMING, /* Full formed, running module_init. */ + MODULE_STATE_GOING, /* Going away. */ + MODULE_STATE_UNFORMED, /* Still setting it up. */ }; /** --- linux-3.5.0.orig/include/linux/hid.h +++ linux-3.5.0/include/linux/hid.h @@ -200,6 +200,7 @@ #define HID_UP_DIGITIZER 0x000d0000 #define HID_UP_PID 0x000f0000 #define HID_UP_HPVENDOR 0xff7f0000 +#define HID_UP_HPVENDOR2 0xff010000 #define HID_UP_MSVENDOR 0xff000000 #define HID_UP_CUSTOM 0x00ff0000 #define HID_UP_LOGIVENDOR 0xffbc0000 --- linux-3.5.0.orig/include/linux/efi.h +++ linux-3.5.0/include/linux/efi.h @@ -29,7 +29,12 @@ #define EFI_UNSUPPORTED ( 3 | (1UL << (BITS_PER_LONG-1))) #define EFI_BAD_BUFFER_SIZE ( 4 | (1UL << (BITS_PER_LONG-1))) #define EFI_BUFFER_TOO_SMALL ( 5 | (1UL << (BITS_PER_LONG-1))) +#define EFI_NOT_READY ( 6 | (1UL << (BITS_PER_LONG-1))) +#define EFI_DEVICE_ERROR ( 7 | (1UL << (BITS_PER_LONG-1))) +#define EFI_WRITE_PROTECTED ( 8 | (1UL << (BITS_PER_LONG-1))) +#define EFI_OUT_OF_RESOURCES ( 9 | (1UL << (BITS_PER_LONG-1))) #define EFI_NOT_FOUND (14 | (1UL << (BITS_PER_LONG-1))) +#define EFI_SECURITY_VIOLATION (26 | (1UL << (BITS_PER_LONG-1))) typedef unsigned long efi_status_t; typedef u8 efi_bool_t; @@ -496,6 +501,11 @@ extern void efi_memmap_walk (efi_freemem_callback_t callback, void *arg); extern void efi_gettimeofday (struct timespec *ts); extern void efi_enter_virtual_mode (void); /* switch EFI to virtual mode, if possible */ +#ifdef CONFIG_X86 +extern void efi_free_boot_services(void); +#else +static inline void efi_free_boot_services(void) {} +#endif extern u64 efi_get_iobase (void); extern u32 efi_mem_type (unsigned long phys_addr); extern u64 efi_mem_attributes (unsigned long phys_addr); @@ -534,18 +544,30 @@ #endif /* - * We play games with efi_enabled so that the compiler will, if possible, remove - * EFI-related code altogether. + * We play games with efi_enabled so that the compiler will, if + * possible, remove EFI-related code altogether. */ +#define EFI_BOOT 0 /* Were we booted from EFI? */ +#define EFI_SYSTEM_TABLES 1 /* Can we use EFI system tables? */ +#define EFI_CONFIG_TABLES 2 /* Can we use EFI config tables? */ +#define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */ +#define EFI_MEMMAP 4 /* Can we use EFI memory map? */ +#define EFI_64BIT 5 /* Is the firmware 64-bit? */ + #ifdef CONFIG_EFI # ifdef CONFIG_X86 - extern int efi_enabled; - extern bool efi_64bit; +extern int efi_enabled(int facility); # else -# define efi_enabled 1 +static inline int efi_enabled(int facility) +{ + return 1; +} # endif #else -# define efi_enabled 0 +static inline int efi_enabled(int facility) +{ + return 0; +} #endif /* @@ -649,6 +671,7 @@ spinlock_t lock; struct list_head list; struct kset *kset; + struct kobject *kobject; struct bin_attribute *new_var, *del_var; const struct efivar_operations *ops; struct efivar_entry *walk_entry; --- linux-3.5.0.orig/include/linux/dynamic_debug.h +++ linux-3.5.0/include/linux/dynamic_debug.h @@ -45,7 +45,7 @@ int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...); extern int ddebug_dyndbg_module_param_cb(char *param, char *val, - const char *modname); + const char *modname, int all); struct device; @@ -106,7 +106,7 @@ } static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, - const char *modname) + const char *modname, int all) { if (strstr(param, "dyndbg")) { /* avoid pr_warn(), which wants pr_fmt() fully defined */ @@ -114,7 +114,11 @@ "CONFIG_DYNAMIC_DEBUG builds\n"); return 0; /* allow and ignore */ } - return -EINVAL; + + if (!all) + return -EINVAL; + + return 0; } #define dynamic_pr_debug(fmt, ...) \ --- linux-3.5.0.orig/include/linux/fs.h +++ linux-3.5.0/include/linux/fs.h @@ -499,6 +499,12 @@ */ #include +/* + * Maximum number of layers of fs stack. Needs to be limited to + * prevent kernel stack overflow + */ +#define FILESYSTEM_MAX_STACK_DEPTH 2 + /** * enum positive_aop_returns - aop return codes with specific semantics * @@ -1542,6 +1548,11 @@ /* Being remounted read-only */ int s_readonly_remount; + + /* + * Indicates how deep in a filesystem stack this SB is + */ + int s_stack_depth; }; /* superblock cache pruning functions */ @@ -1693,6 +1704,8 @@ int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); int (*update_time)(struct inode *, struct timespec *, int); + struct file *(*open) (struct dentry *, struct file *, + const struct cred *); } ____cacheline_aligned; struct seq_file; @@ -2057,6 +2070,7 @@ extern struct file *filp_open(const char *, int, umode_t); extern struct file *file_open_root(struct dentry *, struct vfsmount *, const char *, int); +extern struct file *vfs_open(struct path *, struct file *, const struct cred *); extern struct file * dentry_open(struct dentry *, struct vfsmount *, int, const struct cred *); extern int filp_close(struct file *, fl_owner_t id); @@ -2249,6 +2263,7 @@ #endif extern int notify_change(struct dentry *, struct iattr *); extern int inode_permission(struct inode *, int); +extern int inode_only_permission(struct inode *, int); extern int generic_permission(struct inode *, int); static inline bool execute_ok(struct inode *inode) @@ -2591,6 +2606,7 @@ extern int inode_newsize_ok(const struct inode *, loff_t offset); extern void setattr_copy(struct inode *inode, const struct iattr *attr); +extern int update_time(struct inode *, struct timespec *, int); extern int file_update_time(struct file *file); extern int generic_show_options(struct seq_file *m, struct dentry *root); --- linux-3.5.0.orig/include/linux/quota.h +++ linux-3.5.0/include/linux/quota.h @@ -417,6 +417,7 @@ #define INIT_QUOTA_MODULE_NAMES {\ {QFMT_VFS_OLD, "quota_v1"},\ {QFMT_VFS_V0, "quota_v2"},\ + {QFMT_VFS_V1, "quota_v2"},\ {0, NULL}} #endif /* __KERNEL__ */ --- linux-3.5.0.orig/include/linux/snmp.h +++ linux-3.5.0/include/linux/snmp.h @@ -208,7 +208,6 @@ LINUX_MIB_TCPDSACKOFOSENT, /* TCPDSACKOfoSent */ LINUX_MIB_TCPDSACKRECV, /* TCPDSACKRecv */ LINUX_MIB_TCPDSACKOFORECV, /* TCPDSACKOfoRecv */ - LINUX_MIB_TCPABORTONSYN, /* TCPAbortOnSyn */ LINUX_MIB_TCPABORTONDATA, /* TCPAbortOnData */ LINUX_MIB_TCPABORTONCLOSE, /* TCPAbortOnClose */ LINUX_MIB_TCPABORTONMEMORY, /* TCPAbortOnMemory */ @@ -234,6 +233,8 @@ LINUX_MIB_TCPREQQFULLDROP, /* TCPReqQFullDrop */ LINUX_MIB_TCPRETRANSFAIL, /* TCPRetransFail */ LINUX_MIB_TCPRCVCOALESCE, /* TCPRcvCoalesce */ + LINUX_MIB_TCPCHALLENGEACK, /* TCPChallengeACK */ + LINUX_MIB_TCPSYNCHALLENGE, /* TCPSYNChallenge */ __LINUX_MIB_MAX }; --- linux-3.5.0.orig/include/linux/irqdesc.h +++ linux-3.5.0/include/linux/irqdesc.h @@ -39,7 +39,6 @@ */ struct irq_desc { struct irq_data irq_data; - struct timer_rand_state *timer_rand_state; unsigned int __percpu *kstat_irqs; irq_flow_handler_t handle_irq; #ifdef CONFIG_IRQ_PREFLOW_FASTEOI --- linux-3.5.0.orig/include/linux/dcache.h +++ linux-3.5.0/include/linux/dcache.h @@ -206,6 +206,8 @@ #define DCACHE_MANAGED_DENTRY \ (DCACHE_MOUNTED|DCACHE_NEED_AUTOMOUNT|DCACHE_MANAGE_TRANSIT) +#define DCACHE_DENTRY_KILLED 0x100000 + extern seqlock_t rename_lock; static inline int dname_external(struct dentry *dentry) --- linux-3.5.0.orig/include/linux/ktime.h +++ linux-3.5.0/include/linux/ktime.h @@ -58,13 +58,6 @@ typedef union ktime ktime_t; /* Kill this */ -#define KTIME_MAX ((s64)~((u64)1 << 63)) -#if (BITS_PER_LONG == 64) -# define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC) -#else -# define KTIME_SEC_MAX LONG_MAX -#endif - /* * ktime_t definitions when using the 64-bit scalar representation: */ --- linux-3.5.0.orig/include/linux/moduleparam.h +++ linux-3.5.0/include/linux/moduleparam.h @@ -320,8 +320,8 @@ unsigned num, s16 level_min, s16 level_max, - int (*unknown)(char *param, char *val, - const char *doing)); + int (*handle_arg)(char *param, char *val, + const char *doing, int known)); /* Called by module remove. */ #ifdef CONFIG_SYSFS --- linux-3.5.0.orig/include/linux/kmod.h +++ linux-3.5.0/include/linux/kmod.h @@ -71,6 +71,8 @@ int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); +void populate_rootfs_wait(void); + static inline int call_usermodehelper(char *path, char **argv, char **envp, int wait) { --- linux-3.5.0.orig/include/linux/page-flags.h +++ linux-3.5.0/include/linux/page-flags.h @@ -108,6 +108,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE PG_compound_lock, #endif + PG_readaheadunused, /* user oriented readahead as yet unused*/ __NR_PAGEFLAGS, /* Filesystems */ @@ -231,6 +232,8 @@ PAGEFLAG(Reclaim, reclaim) TESTCLEARFLAG(Reclaim, reclaim) PAGEFLAG(Readahead, reclaim) /* Reminder to do async read-ahead */ +PAGEFLAG(ReadaheadUnused, readaheadunused) + #ifdef CONFIG_HIGHMEM /* * Must use a macro here due to header dependency issues. page_zone() is not @@ -361,7 +364,7 @@ * pages on the LRU and/or pagecache. */ TESTPAGEFLAG(Compound, compound) -__PAGEFLAG(Head, compound) +__SETPAGEFLAG(Head, compound) __CLEARPAGEFLAG(Head, compound) /* * PG_reclaim is used in combination with PG_compound to mark the @@ -373,8 +376,14 @@ * PG_compound & PG_reclaim => Tail page * PG_compound & ~PG_reclaim => Head page */ +#define PG_head_mask ((1L << PG_compound)) #define PG_head_tail_mask ((1L << PG_compound) | (1L << PG_reclaim)) +static inline int PageHead(struct page *page) +{ + return ((page->flags & PG_head_tail_mask) == PG_head_mask); +} + static inline int PageTail(struct page *page) { return ((page->flags & PG_head_tail_mask) == PG_head_tail_mask); --- linux-3.5.0.orig/include/linux/ptp_clock_kernel.h +++ linux-3.5.0/include/linux/ptp_clock_kernel.h @@ -50,7 +50,8 @@ * clock operations * * @adjfreq: Adjusts the frequency of the hardware clock. - * parameter delta: Desired period change in parts per billion. + * parameter delta: Desired frequency offset from nominal frequency + * in parts per billion * * @adjtime: Shifts the time of the hardware clock. * parameter delta: Desired change in nanoseconds. --- linux-3.5.0.orig/include/linux/mmu_notifier.h +++ linux-3.5.0/include/linux/mmu_notifier.h @@ -4,6 +4,7 @@ #include #include #include +#include struct mmu_notifier; struct mmu_notifier_ops; --- linux-3.5.0.orig/include/linux/cpu.h +++ linux-3.5.0/include/linux/cpu.h @@ -73,8 +73,9 @@ /* migration should happen before other stuff but after perf */ CPU_PRI_PERF = 20, CPU_PRI_MIGRATION = 10, - /* prepare workqueues for other notifiers */ - CPU_PRI_WORKQUEUE = 5, + /* bring up workqueues before normal notifiers and down after */ + CPU_PRI_WORKQUEUE_UP = 5, + CPU_PRI_WORKQUEUE_DOWN = -5, }; #define CPU_ONLINE 0x0002 /* CPU (unsigned)v is up */ --- linux-3.5.0.orig/include/linux/net.h +++ linux-3.5.0/include/linux/net.h @@ -72,6 +72,7 @@ #define SOCK_NOSPACE 2 #define SOCK_PASSCRED 3 #define SOCK_PASSSEC 4 +#define SOCK_EXTERNALLY_ALLOCATED 5 #ifndef ARCH_HAS_SOCKET_TYPES /** --- linux-3.5.0.orig/include/linux/mempolicy.h +++ linux-3.5.0/include/linux/mempolicy.h @@ -137,16 +137,6 @@ __mpol_put(pol); } -extern struct mempolicy *__mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol); -static inline struct mempolicy *mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol) -{ - if (!frompol) - return frompol; - return __mpol_cond_copy(tompol, frompol); -} - extern struct mempolicy *__mpol_dup(struct mempolicy *pol); static inline struct mempolicy *mpol_dup(struct mempolicy *pol) { @@ -188,7 +178,7 @@ struct shared_policy { struct rb_root root; - spinlock_t lock; + struct mutex mutex; }; void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol); @@ -270,12 +260,6 @@ { } -static inline struct mempolicy *mpol_cond_copy(struct mempolicy *to, - struct mempolicy *from) -{ - return from; -} - static inline void mpol_get(struct mempolicy *pol) { } --- linux-3.5.0.orig/include/linux/kthread.h +++ linux-3.5.0/include/linux/kthread.h @@ -49,8 +49,6 @@ * can be queued and flushed using queue/flush_kthread_work() * respectively. Queued kthread_works are processed by a kthread * running kthread_worker_fn(). - * - * A kthread_work can't be freed while it is executing. */ struct kthread_work; typedef void (*kthread_work_func_t)(struct kthread_work *work); @@ -59,15 +57,14 @@ spinlock_t lock; struct list_head work_list; struct task_struct *task; + struct kthread_work *current_work; }; struct kthread_work { struct list_head node; kthread_work_func_t func; wait_queue_head_t done; - atomic_t flushing; - int queue_seq; - int done_seq; + struct kthread_worker *worker; }; #define KTHREAD_WORKER_INIT(worker) { \ @@ -79,7 +76,6 @@ .node = LIST_HEAD_INIT((work).node), \ .func = (fn), \ .done = __WAIT_QUEUE_HEAD_INITIALIZER((work).done), \ - .flushing = ATOMIC_INIT(0), \ } #define DEFINE_KTHREAD_WORKER(worker) \ --- linux-3.5.0.orig/include/linux/skbuff.h +++ linux-3.5.0/include/linux/skbuff.h @@ -579,9 +579,6 @@ return __alloc_skb(size, priority, 1, NUMA_NO_NODE); } -extern void skb_recycle(struct sk_buff *skb); -extern bool skb_recycle_check(struct sk_buff *skb, int skb_size); - extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src); extern int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask); extern struct sk_buff *skb_clone(struct sk_buff *skb, @@ -2550,27 +2547,6 @@ bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off); -static inline bool skb_is_recycleable(const struct sk_buff *skb, int skb_size) -{ - if (irqs_disabled()) - return false; - - if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) - return false; - - if (skb_is_nonlinear(skb) || skb->fclone != SKB_FCLONE_UNAVAILABLE) - return false; - - skb_size = SKB_DATA_ALIGN(skb_size + NET_SKB_PAD); - if (skb_end_offset(skb) < skb_size) - return false; - - if (skb_shared(skb) || skb_cloned(skb)) - return false; - - return true; -} - /** * skb_head_is_locked - Determine if the skb->head is locked down * @skb: skb to check --- linux-3.5.0.orig/include/linux/mISDNhw.h +++ linux-3.5.0/include/linux/mISDNhw.h @@ -183,7 +183,7 @@ unsigned short); extern int mISDN_freedchannel(struct dchannel *); extern void mISDN_clear_bchannel(struct bchannel *); -extern int mISDN_freebchannel(struct bchannel *); +extern void mISDN_freebchannel(struct bchannel *); extern int mISDN_ctrl_bchannel(struct bchannel *, struct mISDN_ctrl_req *); extern void queue_ch_frame(struct mISDNchannel *, u_int, int, struct sk_buff *); --- linux-3.5.0.orig/include/linux/dma-attrs.h +++ linux-3.5.0/include/linux/dma-attrs.h @@ -15,6 +15,8 @@ DMA_ATTR_WEAK_ORDERING, DMA_ATTR_WRITE_COMBINE, DMA_ATTR_NON_CONSISTENT, + DMA_ATTR_NO_KERNEL_MAPPING, + DMA_ATTR_SKIP_CPU_SYNC, DMA_ATTR_MAX, }; --- linux-3.5.0.orig/include/linux/fsnotify_backend.h +++ linux-3.5.0/include/linux/fsnotify_backend.h @@ -88,9 +88,10 @@ * if the group is interested in this event. * handle_event - main call for a group to handle an fs event * free_group_priv - called when a group refcnt hits 0 to clean up the private union - * freeing-mark - this means that a mark has been flagged to die when everything - * finishes using it. The function is supplied with what must be a - * valid group and inode to use to clean up. + * freeing_mark - called when a mark is being destroyed for some reason. The group + * MUST be holding a reference on each mark and that reference must be + * dropped in this function. inotify uses this function to send + * userspace messages that marks have been removed. */ struct fsnotify_ops { bool (*should_send_event)(struct fsnotify_group *group, struct inode *inode, @@ -141,7 +142,7 @@ unsigned int priority; /* stores all fastpath marks assoc with this group so they can be cleaned on unregister */ - spinlock_t mark_lock; /* protect marks_list */ + struct mutex mark_mutex; /* protect marks_list */ atomic_t num_marks; /* 1 for each mark and 1 for not being * past the point of no return when freeing * a group */ @@ -287,7 +288,6 @@ struct fsnotify_inode_mark i; struct fsnotify_vfsmount_mark m; }; - struct list_head free_g_list; /* tmp list used when freeing this mark */ __u32 ignored_mask; /* events types to ignore */ #define FSNOTIFY_MARK_FLAG_INODE 0x01 #define FSNOTIFY_MARK_FLAG_VFSMOUNT 0x02 @@ -360,11 +360,14 @@ /* called from fsnotify listeners, such as fanotify or dnotify */ -/* get a reference to an existing or create a new group */ +/* create a new group */ extern struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops); +/* get reference to a group */ +extern void fsnotify_get_group(struct fsnotify_group *group); /* drop reference on a group from fsnotify_alloc_group */ extern void fsnotify_put_group(struct fsnotify_group *group); - +/* destroy group */ +extern void fsnotify_destroy_group(struct fsnotify_group *group); /* take a reference to an event */ extern void fsnotify_get_event(struct fsnotify_event *event); extern void fsnotify_put_event(struct fsnotify_event *event); @@ -405,8 +408,13 @@ /* attach the mark to both the group and the inode */ extern int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group, struct inode *inode, struct vfsmount *mnt, int allow_dups); -/* given a mark, flag it to be freed when all references are dropped */ -extern void fsnotify_destroy_mark(struct fsnotify_mark *mark); +extern int fsnotify_add_mark_locked(struct fsnotify_mark *mark, struct fsnotify_group *group, + struct inode *inode, struct vfsmount *mnt, int allow_dups); +/* given a group and a mark, flag mark to be freed when all references are dropped */ +extern void fsnotify_destroy_mark(struct fsnotify_mark *mark, + struct fsnotify_group *group); +extern void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, + struct fsnotify_group *group); /* run all the marks in a group, and clear all of the vfsmount marks */ extern void fsnotify_clear_vfsmount_marks_by_group(struct fsnotify_group *group); /* run all the marks in a group, and clear all of the inode marks */ --- linux-3.5.0.orig/include/linux/init.h +++ linux-3.5.0/include/linux/init.h @@ -196,6 +196,7 @@ #define core_initcall(fn) __define_initcall("1",fn,1) #define core_initcall_sync(fn) __define_initcall("1s",fn,1s) +#define earlyrootfs_initcall(fn) __define_initcall("earlyrootfs",fn,rootfs) #define postcore_initcall(fn) __define_initcall("2",fn,2) #define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s) #define arch_initcall(fn) __define_initcall("3",fn,3) --- linux-3.5.0.orig/include/linux/mount.h +++ linux-3.5.0/include/linux/mount.h @@ -66,6 +66,9 @@ extern void mnt_unpin(struct vfsmount *mnt); extern int __mnt_is_readonly(struct vfsmount *mnt); +struct path; +extern struct vfsmount *clone_private_mount(struct path *path); + struct file_system_type; extern struct vfsmount *vfs_kern_mount(struct file_system_type *type, int flags, const char *name, --- linux-3.5.0.orig/include/linux/if_vlan.h +++ linux-3.5.0/include/linux/if_vlan.h @@ -82,6 +82,8 @@ } #define vlan_tx_tag_present(__skb) ((__skb)->vlan_tci & VLAN_TAG_PRESENT) +#define vlan_tx_nonzero_tag_present(__skb) \ + (vlan_tx_tag_present(__skb) && ((__skb)->vlan_tci & VLAN_VID_MASK)) #define vlan_tx_tag_get(__skb) ((__skb)->vlan_tci & ~VLAN_TAG_PRESENT) #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) @@ -91,7 +93,7 @@ extern struct net_device *vlan_dev_real_dev(const struct net_device *dev); extern u16 vlan_dev_vlan_id(const struct net_device *dev); -extern bool vlan_do_receive(struct sk_buff **skb, bool last_handler); +extern bool vlan_do_receive(struct sk_buff **skb); extern struct sk_buff *vlan_untag(struct sk_buff *skb); extern int vlan_vid_add(struct net_device *dev, unsigned short vid); @@ -120,10 +122,8 @@ return 0; } -static inline bool vlan_do_receive(struct sk_buff **skb, bool last_handler) +static inline bool vlan_do_receive(struct sk_buff **skb) { - if (((*skb)->vlan_tci & VLAN_VID_MASK) && last_handler) - (*skb)->pkt_type = PACKET_OTHERHOST; return false; } @@ -327,7 +327,7 @@ struct vlan_hdr *vhdr) { __be16 proto; - unsigned char *rawp; + unsigned short *rawp; /* * Was a VLAN packet, grab the encapsulated protocol, which the layer @@ -340,8 +340,8 @@ return; } - rawp = skb->data; - if (*(unsigned short *) rawp == 0xFFFF) + rawp = (unsigned short *)(vhdr + 1); + if (*rawp == 0xFFFF) /* * This is a magic hack to spot IPX packets. Older Novell * breaks the protocol design and runs IPX over 802.3 without --- linux-3.5.0.orig/include/linux/idr.h +++ linux-3.5.0/include/linux/idr.h @@ -152,4 +152,15 @@ void __init idr_init_cache(void); +/** + * idr_for_each_entry - iterate over an idr's elements of a given type + * @idp: idr handle + * @entry: the type * to use as cursor + * @id: id entry's key + */ +#define idr_for_each_entry(idp, entry, id) \ + for (id = 0, entry = (typeof(entry))idr_get_next((idp), &(id)); \ + entry != NULL; \ + ++id, entry = (typeof(entry))idr_get_next((idp), &(id))) + #endif /* __IDR_H__ */ --- linux-3.5.0.orig/include/linux/binfmts.h +++ linux-3.5.0/include/linux/binfmts.h @@ -68,8 +68,6 @@ #define BINPRM_FLAGS_EXECFD_BIT 1 #define BINPRM_FLAGS_EXECFD (1 << BINPRM_FLAGS_EXECFD_BIT) -#define BINPRM_MAX_RECURSION 4 - /* Function parameter for binfmt->coredump */ struct coredump_params { long signr; @@ -128,6 +126,7 @@ unsigned long stack_top, int executable_stack); extern int bprm_mm_init(struct linux_binprm *bprm); +extern int bprm_change_interp(char *interp, struct linux_binprm *bprm); extern int copy_strings_kernel(int argc, const char *const *argv, struct linux_binprm *bprm); extern int prepare_bprm_creds(struct linux_binprm *bprm); --- linux-3.5.0.orig/include/linux/freezer.h +++ linux-3.5.0/include/linux/freezer.h @@ -75,28 +75,62 @@ */ -/* Tell the freezer not to count the current task as freezable. */ +/** + * freezer_do_not_count - tell freezer to ignore %current + * + * Tell freezers to ignore the current task when determining whether the + * target frozen state is reached. IOW, the current task will be + * considered frozen enough by freezers. + * + * The caller shouldn't do anything which isn't allowed for a frozen task + * until freezer_cont() is called. Usually, freezer[_do_not]_count() pair + * wrap a scheduling operation and nothing much else. + */ static inline void freezer_do_not_count(void) { current->flags |= PF_FREEZER_SKIP; } -/* - * Tell the freezer to count the current task as freezable again and try to - * freeze it. +/** + * freezer_count - tell freezer to stop ignoring %current + * + * Undo freezer_do_not_count(). It tells freezers that %current should be + * considered again and tries to freeze if freezing condition is already in + * effect. */ static inline void freezer_count(void) { current->flags &= ~PF_FREEZER_SKIP; + /* + * If freezing is in progress, the following paired with smp_mb() + * in freezer_should_skip() ensures that either we see %true + * freezing() or freezer_should_skip() sees !PF_FREEZER_SKIP. + */ + smp_mb(); try_to_freeze(); } -/* - * Check if the task should be counted as freezable by the freezer +/** + * freezer_should_skip - whether to skip a task when determining frozen + * state is reached + * @p: task in quesion + * + * This function is used by freezers after establishing %true freezing() to + * test whether a task should be skipped when determining the target frozen + * state is reached. IOW, if this function returns %true, @p is considered + * frozen enough. */ -static inline int freezer_should_skip(struct task_struct *p) +static inline bool freezer_should_skip(struct task_struct *p) { - return !!(p->flags & PF_FREEZER_SKIP); + /* + * The following smp_mb() paired with the one in freezer_count() + * ensures that either freezer_count() sees %true freezing() or we + * see cleared %PF_FREEZER_SKIP and return %false. This makes it + * impossible for a task to slip frozen state testing after + * clearing %PF_FREEZER_SKIP. + */ + smp_mb(); + return p->flags & PF_FREEZER_SKIP; } /* --- linux-3.5.0.orig/include/linux/netlink.h +++ linux-3.5.0/include/linux/netlink.h @@ -153,6 +153,7 @@ #include #include +#include struct net; @@ -226,6 +227,8 @@ struct netlink_callback *cb); int (*done)(struct netlink_callback *cb); void *data; + /* the module that dump function belong to */ + struct module *module; u16 family; u16 min_dump_alloc; unsigned int prev_seq, seq; @@ -251,14 +254,24 @@ struct netlink_dump_control { int (*dump)(struct sk_buff *skb, struct netlink_callback *); - int (*done)(struct netlink_callback*); + int (*done)(struct netlink_callback *); void *data; + struct module *module; u16 min_dump_alloc; }; -extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, - const struct nlmsghdr *nlh, - struct netlink_dump_control *control); +extern int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control); +static inline int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, + const struct nlmsghdr *nlh, + struct netlink_dump_control *control) +{ + if (!control->module) + control->module = THIS_MODULE; + + return __netlink_dump_start(ssk, skb, nlh, control); +} #define NL_NONROOT_RECV 0x1 --- linux-3.5.0.orig/include/linux/xfrm.h +++ linux-3.5.0/include/linux/xfrm.h @@ -84,6 +84,8 @@ __u32 bitmap; }; +#define XFRMA_REPLAY_ESN_MAX 4096 + struct xfrm_replay_state_esn { unsigned int bmp_len; __u32 oseq; --- linux-3.5.0.orig/include/linux/cgroup.h +++ linux-3.5.0/include/linux/cgroup.h @@ -33,7 +33,6 @@ extern bool cgroup_lock_live_group(struct cgroup *cgrp); extern void cgroup_unlock(void); extern void cgroup_fork(struct task_struct *p); -extern void cgroup_fork_callbacks(struct task_struct *p); extern void cgroup_post_fork(struct task_struct *p); extern void cgroup_exit(struct task_struct *p, int run_callbacks); extern int cgroupstats_build(struct cgroupstats *stats, --- linux-3.5.0.orig/include/linux/clk-provider.h +++ linux-3.5.0/include/linux/clk-provider.h @@ -171,6 +171,8 @@ const char *parent_name, unsigned long flags, unsigned long fixed_rate); +void of_fixed_clk_setup(struct device_node *np); + /** * struct clk_gate - gating clock * @@ -334,5 +336,19 @@ void __clk_reparent(struct clk *clk, struct clk *new_parent); unsigned long __clk_round_rate(struct clk *clk, unsigned long rate); +struct of_device_id; + +typedef void (*of_clk_init_cb_t)(struct device_node *); + +int of_clk_add_provider(struct device_node *np, + struct clk *(*clk_src_get)(struct of_phandle_args *args, + void *data), + void *data); +void of_clk_del_provider(struct device_node *np); +struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, + void *data); +const char *of_clk_get_parent_name(struct device_node *np, int index); +void of_clk_init(const struct of_device_id *matches); + #endif /* CONFIG_COMMON_CLK */ #endif /* CLK_PROVIDER_H */ --- linux-3.5.0.orig/include/linux/posix_types.h +++ linux-3.5.0/include/linux/posix_types.h @@ -15,26 +15,14 @@ */ /* - * Those macros may have been defined in . But we always - * use the ones here. + * This macro may have been defined in . But we always + * use the one here. */ -#undef __NFDBITS -#define __NFDBITS (8 * sizeof(unsigned long)) - #undef __FD_SETSIZE #define __FD_SETSIZE 1024 -#undef __FDSET_LONGS -#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS) - -#undef __FDELT -#define __FDELT(d) ((d) / __NFDBITS) - -#undef __FDMASK -#define __FDMASK(d) (1UL << ((d) % __NFDBITS)) - typedef struct { - unsigned long fds_bits [__FDSET_LONGS]; + unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))]; } __kernel_fd_set; /* Type of a signal handler. */ --- linux-3.5.0.orig/include/linux/screen_info.h +++ linux-3.5.0/include/linux/screen_info.h @@ -67,6 +67,7 @@ #define VIDEO_TYPE_EFI 0x70 /* EFI graphic mode */ #define VIDEO_FLAGS_NOCURSOR (1 << 0) /* The video mode has no cursor set */ +#define VIDEO_FLAGS_HANDOFF (1 << 1) /* Video buffer is alredy painted */ #ifdef __KERNEL__ extern struct screen_info screen_info; --- linux-3.5.0.orig/include/linux/pci_ids.h +++ linux-3.5.0/include/linux/pci_ids.h @@ -752,6 +752,7 @@ #define PCI_DEVICE_ID_HP_CISSD 0x3238 #define PCI_DEVICE_ID_HP_CISSE 0x323a #define PCI_DEVICE_ID_HP_CISSF 0x323b +#define PCI_DEVICE_ID_HP_CISSH 0x323c #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031 #define PCI_VENDOR_ID_PCTECH 0x1042 @@ -1565,6 +1566,7 @@ #define PCI_DEVICE_ID_RICOH_RL5C476 0x0476 #define PCI_DEVICE_ID_RICOH_RL5C478 0x0478 #define PCI_DEVICE_ID_RICOH_R5C822 0x0822 +#define PCI_DEVICE_ID_RICOH_R5CE822 0xe822 #define PCI_DEVICE_ID_RICOH_R5CE823 0xe823 #define PCI_DEVICE_ID_RICOH_R5C832 0x0832 #define PCI_DEVICE_ID_RICOH_R5C843 0x0843 @@ -1600,6 +1602,7 @@ #define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x5334 #define PCI_VENDOR_ID_MARVELL 0x11ab +#define PCI_VENDOR_ID_MARVELL_EXT 0x1b4b #define PCI_DEVICE_ID_MARVELL_GT64111 0x4146 #define PCI_DEVICE_ID_MARVELL_GT64260 0x6430 #define PCI_DEVICE_ID_MARVELL_MV64360 0x6460 @@ -1846,7 +1849,6 @@ #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081 #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082 #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050 -#define PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL 0x2530 #define PCI_VENDOR_ID_RADISYS 0x1331 @@ -2148,7 +2150,7 @@ #define PCI_DEVICE_ID_TIGON3_5704S 0x16a8 #define PCI_DEVICE_ID_NX2_57800_VF 0x16a9 #define PCI_DEVICE_ID_NX2_5706S 0x16aa -#define PCI_DEVICE_ID_NX2_57840_MF 0x16ab +#define PCI_DEVICE_ID_NX2_57840_MF 0x16a4 #define PCI_DEVICE_ID_NX2_5708S 0x16ac #define PCI_DEVICE_ID_NX2_57840_VF 0x16ad #define PCI_DEVICE_ID_NX2_57810_MF 0x16ae --- linux-3.5.0.orig/include/linux/usb.h +++ linux-3.5.0/include/linux/usb.h @@ -556,7 +556,6 @@ struct usb3_lpm_parameters u1_params; struct usb3_lpm_parameters u2_params; unsigned lpm_disable_count; - unsigned hub_initiated_lpm_disable_count; }; #define to_usb_device(d) container_of(d, struct usb_device, dev) @@ -629,6 +628,9 @@ extern int usb_unlocked_disable_lpm(struct usb_device *udev); extern void usb_unlocked_enable_lpm(struct usb_device *udev); +extern int usb_disable_ltm(struct usb_device *udev); +extern void usb_enable_ltm(struct usb_device *udev); + /*-------------------------------------------------------------------------*/ /* for drivers using iso endpoints */ @@ -828,6 +830,27 @@ .bInterfaceClass = (cl), \ .bInterfaceSubClass = (sc), \ .bInterfaceProtocol = (pr) + +/** + * USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces + * @vend: the 16 bit USB Vendor ID + * @cl: bInterfaceClass value + * @sc: bInterfaceSubClass value + * @pr: bInterfaceProtocol value + * + * This macro is used to create a struct usb_device_id that matches a + * specific vendor with a specific class of interfaces. + * + * This is especially useful when explicitly matching devices that have + * vendor specific bDeviceClass values, but standards-compliant interfaces. + */ +#define USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \ + .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ + | USB_DEVICE_ID_MATCH_VENDOR, \ + .idVendor = (vend), \ + .bInterfaceClass = (cl), \ + .bInterfaceSubClass = (sc), \ + .bInterfaceProtocol = (pr) /* ----------------------------------------------------------------------- */ --- linux-3.5.0.orig/include/linux/splice.h +++ linux-3.5.0/include/linux/splice.h @@ -91,4 +91,10 @@ extern void spd_release_page(struct splice_pipe_desc *, unsigned int); extern const struct pipe_buf_operations page_cache_pipe_buf_ops; + +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +extern long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif --- linux-3.5.0.orig/include/linux/perf_event.h +++ linux-3.5.0/include/linux/perf_event.h @@ -274,6 +274,8 @@ __u64 branch_sample_type; /* enum branch_sample_type */ }; +#define perf_flags(attr) (*(&(attr)->read_format + 1)) + /* * Ioctls that can be done on a perf event fd: */ @@ -925,7 +927,7 @@ struct hw_perf_event hw; struct perf_event_context *ctx; - struct file *filp; + atomic_long_t refcount; /* * These accumulate total time (in nanoseconds) that children --- linux-3.5.0.orig/include/linux/mm.h +++ linux-3.5.0/include/linux/mm.h @@ -1591,6 +1591,7 @@ enum mf_flags { MF_COUNT_INCREASED = 1 << 0, MF_ACTION_REQUIRED = 1 << 1, + MF_MUST_KILL = 1 << 2, }; extern int memory_failure(unsigned long pfn, int trapno, int flags); extern void memory_failure_queue(unsigned long pfn, int trapno, int flags); --- linux-3.5.0.orig/include/linux/jbd2.h +++ linux-3.5.0/include/linux/jbd2.h @@ -1125,6 +1125,7 @@ extern int jbd2_journal_recover (journal_t *journal); extern int jbd2_journal_wipe (journal_t *, int); extern int jbd2_journal_skip_recovery (journal_t *); +extern void jbd2_journal_update_sb_errno(journal_t *); extern void jbd2_journal_update_sb_log_tail (journal_t *, tid_t, unsigned long, int); extern void __jbd2_journal_abort_hard (journal_t *); --- linux-3.5.0.orig/include/linux/netdevice.h +++ linux-3.5.0/include/linux/netdevice.h @@ -1301,6 +1301,8 @@ /* for setting kernel sock attribute on TCP connection setup */ #define GSO_MAX_SIZE 65536 unsigned int gso_max_size; +#define GSO_MAX_SEGS 65535 + u16 gso_max_segs; #ifdef CONFIG_DCB /* Data Center Bridging netlink ops */ @@ -1518,6 +1520,8 @@ struct sk_buff **(*gro_receive)(struct sk_buff **head, struct sk_buff *skb); int (*gro_complete)(struct sk_buff *skb); + bool (*id_match)(struct packet_type *ptype, + struct sock *sk); void *af_packet_priv; struct list_head list; }; --- linux-3.5.0.orig/include/linux/memblock.h +++ linux-3.5.0/include/linux/memblock.h @@ -57,6 +57,7 @@ int memblock_remove(phys_addr_t base, phys_addr_t size); int memblock_free(phys_addr_t base, phys_addr_t size); int memblock_reserve(phys_addr_t base, phys_addr_t size); +void memblock_trim_memory(phys_addr_t align); #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP void __next_mem_pfn_range(int *idx, int nid, unsigned long *out_start_pfn, --- linux-3.5.0.orig/include/linux/mmzone.h +++ linux-3.5.0/include/linux/mmzone.h @@ -732,7 +732,7 @@ unsigned long size, enum memmap_context context); -extern void lruvec_init(struct lruvec *lruvec, struct zone *zone); +extern void lruvec_init(struct lruvec *lruvec); static inline struct zone *lruvec_zone(struct lruvec *lruvec) { --- linux-3.5.0.orig/include/linux/random.h +++ linux-3.5.0/include/linux/random.h @@ -48,13 +48,13 @@ #ifdef __KERNEL__ -extern void rand_initialize_irq(int irq); - +extern void add_device_randomness(const void *, unsigned int); extern void add_input_randomness(unsigned int type, unsigned int code, unsigned int value); -extern void add_interrupt_randomness(int irq); +extern void add_interrupt_randomness(int irq, int irq_flags); extern void get_random_bytes(void *buf, int nbytes); +extern void get_random_bytes_arch(void *buf, int nbytes); void generate_random_uuid(unsigned char uuid_out[16]); #ifndef MODULE --- linux-3.5.0.orig/include/linux/kobject.h +++ linux-3.5.0/include/linux/kobject.h @@ -224,7 +224,7 @@ static inline __printf(2, 3) int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...) -{ return 0; } +{ return -ENOMEM; } static inline int kobject_action_type(const char *buf, size_t count, enum kobject_action *type) --- linux-3.5.0.orig/include/linux/console.h +++ linux-3.5.0/include/linux/console.h @@ -77,7 +77,9 @@ int con_is_bound(const struct consw *csw); int register_con_driver(const struct consw *csw, int first, int last); int unregister_con_driver(const struct consw *csw); +int do_unregister_con_driver(const struct consw *csw); int take_over_console(const struct consw *sw, int first, int last, int deflt); +int do_take_over_console(const struct consw *sw, int first, int last, int deflt); void give_up_console(const struct consw *sw); #ifdef CONFIG_HW_CONSOLE int con_debug_enter(struct vc_data *vc); --- linux-3.5.0.orig/include/linux/serial_core.h +++ linux-3.5.0/include/linux/serial_core.h @@ -47,7 +47,8 @@ #define PORT_U6_16550A 19 /* ST-Ericsson U6xxx internal UART */ #define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */ #define PORT_XR17D15X 21 /* Exar XR17D15x UART */ -#define PORT_MAX_8250 21 /* max port ID */ +#define PORT_BRCM_TRUMANAGE 22 +#define PORT_MAX_8250 22 /* max port ID */ /* * ARM specific type numbers. These are not currently guaranteed --- linux-3.5.0.orig/include/linux/sched.h +++ linux-3.5.0/include/linux/sched.h @@ -1244,6 +1244,9 @@ const struct sched_class *sched_class; struct sched_entity se; struct sched_rt_entity rt; +#ifdef CONFIG_CGROUP_SCHED + struct task_group *sched_task_group; +#endif #ifdef CONFIG_PREEMPT_NOTIFIERS /* list of struct preempt_notifier: */ @@ -2671,7 +2674,16 @@ extern void recalc_sigpending_and_wake(struct task_struct *t); extern void recalc_sigpending(void); -extern void signal_wake_up(struct task_struct *t, int resume_stopped); +extern void signal_wake_up_state(struct task_struct *t, unsigned int state); + +static inline void signal_wake_up(struct task_struct *t, bool resume) +{ + signal_wake_up_state(t, resume ? TASK_WAKEKILL : 0); +} +static inline void ptrace_signal_wake_up(struct task_struct *t, bool resume) +{ + signal_wake_up_state(t, resume ? __TASK_TRACED : 0); +} /* * Wrappers for p->thread_info->cpu access. No-op on UP. @@ -2723,7 +2735,7 @@ extern long sched_group_rt_period(struct task_group *tg); extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk); #endif -#endif +#endif /* CONFIG_CGROUP_SCHED */ extern int task_can_switch_user(struct user_struct *up, struct task_struct *tsk); --- linux-3.5.0.orig/include/linux/init_task.h +++ linux-3.5.0/include/linux/init_task.h @@ -123,8 +123,17 @@ extern struct cred init_cred; +extern struct task_group root_task_group; + +#ifdef CONFIG_CGROUP_SCHED +# define INIT_CGROUP_SCHED(tsk) \ + .sched_task_group = &root_task_group, +#else +# define INIT_CGROUP_SCHED(tsk) +#endif + #ifdef CONFIG_PERF_EVENTS -# define INIT_PERF_EVENTS(tsk) \ +# define INIT_PERF_EVENTS(tsk) \ .perf_event_mutex = \ __MUTEX_INITIALIZER(tsk.perf_event_mutex), \ .perf_event_list = LIST_HEAD_INIT(tsk.perf_event_list), @@ -161,6 +170,7 @@ }, \ .tasks = LIST_HEAD_INIT(tsk.tasks), \ INIT_PUSHABLE_TASKS(tsk) \ + INIT_CGROUP_SCHED(tsk) \ .ptraced = LIST_HEAD_INIT(tsk.ptraced), \ .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \ .real_parent = &tsk, \ --- linux-3.5.0.orig/include/linux/clk.h +++ linux-3.5.0/include/linux/clk.h @@ -310,4 +310,23 @@ int clk_add_alias(const char *alias, const char *alias_dev_name, char *id, struct device *dev); +struct device_node; +struct of_phandle_args; + +#ifdef CONFIG_OF +struct clk *of_clk_get(struct device_node *np, int index); +struct clk *of_clk_get_by_name(struct device_node *np, const char *name); +struct clk *of_clk_get_from_provider(struct of_phandle_args *clkspec); +#else +static inline struct clk *of_clk_get(struct device_node *np, int index) +{ + return NULL; +} +static inline struct clk *of_clk_get_by_name(struct device_node *np, + const char *name) +{ + return NULL; +} +#endif + #endif --- linux-3.5.0.orig/include/linux/vt_kern.h +++ linux-3.5.0/include/linux/vt_kern.h @@ -47,6 +47,7 @@ int con_get_cmap(unsigned char __user *cmap); void scrollback(struct vc_data *vc, int lines); void scrollfront(struct vc_data *vc, int lines); +void clear_buffer_attributes(struct vc_data *vc); void update_region(struct vc_data *vc, unsigned long start, int count); void redraw_screen(struct vc_data *vc, int is_switch); #define update_screen(x) redraw_screen(x, 0) @@ -129,7 +130,9 @@ void vt_event_post(unsigned int event, unsigned int old, unsigned int new); int vt_waitactive(int n); void change_console(struct vc_data *new_vc); -void reset_vc(struct vc_data *vc); +void reset_vc(struct vc_data *vc, int mode); +extern int do_unbind_con_driver(const struct consw *csw, int first, int last, + int deflt); extern int unbind_con_driver(const struct consw *csw, int first, int last, int deflt); int vty_init(const struct file_operations *console_fops); --- linux-3.5.0.orig/include/linux/mmc/card.h +++ linux-3.5.0/include/linux/mmc/card.h @@ -238,6 +238,7 @@ #define MMC_QUIRK_BLK_NO_CMD23 (1<<7) /* Avoid CMD23 for regular multiblock */ #define MMC_QUIRK_BROKEN_BYTE_MODE_512 (1<<8) /* Avoid sending 512 bytes in */ #define MMC_QUIRK_LONG_READ_TIME (1<<9) /* Data read time > CSD says */ +#define MMC_QUIRK_SEC_ERASE_TRIM_BROKEN (1<<10) /* Skip secure for erase/trim */ /* byte mode */ unsigned int poweroff_notify_state; /* eMMC4.5 notify feature */ #define MMC_NO_POWER_NOTIFICATION 0 --- linux-3.5.0.orig/include/linux/usb/ch9.h +++ linux-3.5.0/include/linux/usb/ch9.h @@ -152,6 +152,12 @@ #define USB_INTRF_FUNC_SUSPEND_LP (1 << (8 + 0)) #define USB_INTRF_FUNC_SUSPEND_RW (1 << (8 + 1)) +/* + * Interface status, Figure 9-5 USB 3.0 spec + */ +#define USB_INTRF_STAT_FUNC_RW_CAP 1 +#define USB_INTRF_STAT_FUNC_RW 2 + #define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */ /* Bit array elements as returned by the USB_REQ_GET_STATUS request. */ --- linux-3.5.0.orig/include/linux/usb/audio.h +++ linux-3.5.0/include/linux/usb/audio.h @@ -384,14 +384,16 @@ int protocol) { __u8 control_size = uac_processing_unit_bControlSize(desc, protocol); - return desc->baSourceID[desc->bNrInPins + control_size]; + return *(uac_processing_unit_bmControls(desc, protocol) + + control_size); } static inline __u8 *uac_processing_unit_specific(struct uac_processing_unit_descriptor *desc, int protocol) { __u8 control_size = uac_processing_unit_bControlSize(desc, protocol); - return &desc->baSourceID[desc->bNrInPins + control_size + 1]; + return uac_processing_unit_bmControls(desc, protocol) + + control_size + 1; } /* 4.5.2 Class-Specific AS Interface Descriptor */ --- linux-3.5.0.orig/include/linux/mfd/rtsx_common.h +++ linux-3.5.0/include/linux/mfd/rtsx_common.h @@ -0,0 +1,51 @@ +/* Driver for Realtek driver-based card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_COMMON_H +#define __RTSX_COMMON_H + +#define DRV_NAME_RTSX_PCI "rtsx_pci" +#define DRV_NAME_RTSX_PCI_SDMMC "rtsx_pci_sdmmc" +#define DRV_NAME_RTSX_PCI_MS "rtsx_pci_ms" + +#define RTSX_REG_PAIR(addr, val) (((u32)(addr) << 16) | (u8)(val)) + +#define RTSX_SSC_DEPTH_4M 0x01 +#define RTSX_SSC_DEPTH_2M 0x02 +#define RTSX_SSC_DEPTH_1M 0x03 +#define RTSX_SSC_DEPTH_500K 0x04 +#define RTSX_SSC_DEPTH_250K 0x05 + +#define RTSX_SD_CARD 0 +#define RTSX_MS_CARD 1 + +#define CLK_TO_DIV_N 0 +#define DIV_N_TO_CLK 1 + +struct platform_device; + +struct rtsx_slot { + struct platform_device *p_dev; + void (*card_event)(struct platform_device *p_dev); +}; + +#endif --- linux-3.5.0.orig/include/linux/mfd/ezx-pcap.h +++ linux-3.5.0/include/linux/mfd/ezx-pcap.h @@ -16,6 +16,7 @@ struct pcap_platform_data { unsigned int irq_base; unsigned int config; + int gpio; void (*init) (void *); /* board specific init */ int num_subdevs; struct pcap_subdev *subdevs; --- linux-3.5.0.orig/include/linux/mfd/rtsx_pci.h +++ linux-3.5.0/include/linux/mfd/rtsx_pci.h @@ -0,0 +1,818 @@ +/* Driver for Realtek PCI-Express card reader + * + * Copyright(c) 2009 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: + * Wei WANG + * No. 450, Shenhu Road, Suzhou Industry Park, Suzhou, China + */ + +#ifndef __RTSX_PCI_H +#define __RTSX_PCI_H + +#include +#include + +#include "rtsx_common.h" + +#define MAX_RW_REG_CNT 1024 + +/* PCI Operation Register Address */ +#define RTSX_HCBAR 0x00 +#define RTSX_HCBCTLR 0x04 +#define RTSX_HDBAR 0x08 +#define RTSX_HDBCTLR 0x0C +#define RTSX_HAIMR 0x10 +#define RTSX_BIPR 0x14 +#define RTSX_BIER 0x18 + +/* Host command buffer control register */ +#define STOP_CMD (0x01 << 28) + +/* Host data buffer control register */ +#define SDMA_MODE 0x00 +#define ADMA_MODE (0x02 << 26) +#define STOP_DMA (0x01 << 28) +#define TRIG_DMA (0x01 << 31) + +/* Host access internal memory register */ +#define HAIMR_TRANS_START (0x01 << 31) +#define HAIMR_READ 0x00 +#define HAIMR_WRITE (0x01 << 30) +#define HAIMR_READ_START (HAIMR_TRANS_START | HAIMR_READ) +#define HAIMR_WRITE_START (HAIMR_TRANS_START | HAIMR_WRITE) +#define HAIMR_TRANS_END (HAIMR_TRANS_START) + +/* Bus interrupt pending register */ +#define CMD_DONE_INT (1 << 31) +#define DATA_DONE_INT (1 << 30) +#define TRANS_OK_INT (1 << 29) +#define TRANS_FAIL_INT (1 << 28) +#define XD_INT (1 << 27) +#define MS_INT (1 << 26) +#define SD_INT (1 << 25) +#define GPIO0_INT (1 << 24) +#define OC_INT (1 << 23) +#define SD_WRITE_PROTECT (1 << 19) +#define XD_EXIST (1 << 18) +#define MS_EXIST (1 << 17) +#define SD_EXIST (1 << 16) +#define DELINK_INT GPIO0_INT +#define MS_OC_INT (1 << 23) +#define SD_OC_INT (1 << 22) + +#define CARD_INT (XD_INT | MS_INT | SD_INT) +#define NEED_COMPLETE_INT (DATA_DONE_INT | TRANS_OK_INT | TRANS_FAIL_INT) +#define RTSX_INT (CMD_DONE_INT | NEED_COMPLETE_INT | \ + CARD_INT | GPIO0_INT | OC_INT) + +#define CARD_EXIST (XD_EXIST | MS_EXIST | SD_EXIST) + +/* Bus interrupt enable register */ +#define CMD_DONE_INT_EN (1 << 31) +#define DATA_DONE_INT_EN (1 << 30) +#define TRANS_OK_INT_EN (1 << 29) +#define TRANS_FAIL_INT_EN (1 << 28) +#define XD_INT_EN (1 << 27) +#define MS_INT_EN (1 << 26) +#define SD_INT_EN (1 << 25) +#define GPIO0_INT_EN (1 << 24) +#define OC_INT_EN (1 << 23) +#define DELINK_INT_EN GPIO0_INT_EN +#define MS_OC_INT_EN (1 << 23) +#define SD_OC_INT_EN (1 << 22) + +#define READ_REG_CMD 0 +#define WRITE_REG_CMD 1 +#define CHECK_REG_CMD 2 + +/* + * macros for easy use + */ +#define rtsx_pci_writel(pcr, reg, value) \ + iowrite32(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readl(pcr, reg) \ + ioread32((pcr)->remap_addr + reg) +#define rtsx_pci_writew(pcr, reg, value) \ + iowrite16(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readw(pcr, reg) \ + ioread16((pcr)->remap_addr + reg) +#define rtsx_pci_writeb(pcr, reg, value) \ + iowrite8(value, (pcr)->remap_addr + reg) +#define rtsx_pci_readb(pcr, reg) \ + ioread8((pcr)->remap_addr + reg) + +#define rtsx_pci_read_config_byte(pcr, where, val) \ + pci_read_config_byte((pcr)->pci, where, val) + +#define rtsx_pci_write_config_byte(pcr, where, val) \ + pci_write_config_byte((pcr)->pci, where, val) + +#define rtsx_pci_read_config_dword(pcr, where, val) \ + pci_read_config_dword((pcr)->pci, where, val) + +#define rtsx_pci_write_config_dword(pcr, where, val) \ + pci_write_config_dword((pcr)->pci, where, val) + +#define STATE_TRANS_NONE 0 +#define STATE_TRANS_CMD 1 +#define STATE_TRANS_BUF 2 +#define STATE_TRANS_SG 3 + +#define TRANS_NOT_READY 0 +#define TRANS_RESULT_OK 1 +#define TRANS_RESULT_FAIL 2 +#define TRANS_NO_DEVICE 3 + +#define RTSX_RESV_BUF_LEN 4096 +#define HOST_CMDS_BUF_LEN 1024 +#define HOST_SG_TBL_BUF_LEN (RTSX_RESV_BUF_LEN - HOST_CMDS_BUF_LEN) +#define HOST_SG_TBL_ITEMS (HOST_SG_TBL_BUF_LEN / 8) +#define MAX_SG_ITEM_LEN 0x80000 + +#define HOST_TO_DEVICE 0 +#define DEVICE_TO_HOST 1 + +#define MAX_PHASE 31 +#define RX_TUNING_CNT 3 + +/* SG descriptor */ +#define SG_INT 0x04 +#define SG_END 0x02 +#define SG_VALID 0x01 + +#define SG_NO_OP 0x00 +#define SG_TRANS_DATA (0x02 << 4) +#define SG_LINK_DESC (0x03 << 4) + +/* Output voltage */ +#define OUTPUT_3V3 0 +#define OUTPUT_1V8 1 + +/* Card Clock Enable Register */ +#define SD_CLK_EN 0x04 +#define MS_CLK_EN 0x08 + +/* Card Select Register */ +#define SD_MOD_SEL 2 +#define MS_MOD_SEL 3 + +/* Card Output Enable Register */ +#define SD_OUTPUT_EN 0x04 +#define MS_OUTPUT_EN 0x08 + +/* CARD_SHARE_MODE */ +#define CARD_SHARE_MASK 0x0F +#define CARD_SHARE_MULTI_LUN 0x00 +#define CARD_SHARE_NORMAL 0x00 +#define CARD_SHARE_48_SD 0x04 +#define CARD_SHARE_48_MS 0x08 +/* CARD_SHARE_MODE for barossa */ +#define CARD_SHARE_BAROSSA_SD 0x01 +#define CARD_SHARE_BAROSSA_MS 0x02 + +/* SD30_DRIVE_SEL */ +#define DRIVER_TYPE_A 0x05 +#define DRIVER_TYPE_B 0x03 +#define DRIVER_TYPE_C 0x02 +#define DRIVER_TYPE_D 0x01 + +/* FPDCTL */ +#define SSC_POWER_DOWN 0x01 +#define SD_OC_POWER_DOWN 0x02 +#define ALL_POWER_DOWN 0x07 +#define OC_POWER_DOWN 0x06 + +/* CLK_CTL */ +#define CHANGE_CLK 0x01 + +/* LDO_CTL */ +#define BPP_ASIC_1V7 0x00 +#define BPP_ASIC_1V8 0x01 +#define BPP_ASIC_1V9 0x02 +#define BPP_ASIC_2V0 0x03 +#define BPP_ASIC_2V7 0x04 +#define BPP_ASIC_2V8 0x05 +#define BPP_ASIC_3V2 0x06 +#define BPP_ASIC_3V3 0x07 +#define BPP_REG_TUNED18 0x07 +#define BPP_TUNED18_SHIFT_8402 5 +#define BPP_TUNED18_SHIFT_8411 4 +#define BPP_PAD_MASK 0x04 +#define BPP_PAD_3V3 0x04 +#define BPP_PAD_1V8 0x00 +#define BPP_LDO_POWB 0x03 +#define BPP_LDO_ON 0x00 +#define BPP_LDO_SUSPEND 0x02 +#define BPP_LDO_OFF 0x03 + +/* CD_PAD_CTL */ +#define CD_DISABLE_MASK 0x07 +#define MS_CD_DISABLE 0x04 +#define SD_CD_DISABLE 0x02 +#define XD_CD_DISABLE 0x01 +#define CD_DISABLE 0x07 +#define CD_ENABLE 0x00 +#define MS_CD_EN_ONLY 0x03 +#define SD_CD_EN_ONLY 0x05 +#define XD_CD_EN_ONLY 0x06 +#define FORCE_CD_LOW_MASK 0x38 +#define FORCE_CD_XD_LOW 0x08 +#define FORCE_CD_SD_LOW 0x10 +#define FORCE_CD_MS_LOW 0x20 +#define CD_AUTO_DISABLE 0x40 + +/* SD_STAT1 */ +#define SD_CRC7_ERR 0x80 +#define SD_CRC16_ERR 0x40 +#define SD_CRC_WRITE_ERR 0x20 +#define SD_CRC_WRITE_ERR_MASK 0x1C +#define GET_CRC_TIME_OUT 0x02 +#define SD_TUNING_COMPARE_ERR 0x01 + +/* SD_STAT2 */ +#define SD_RSP_80CLK_TIMEOUT 0x01 + +/* SD_BUS_STAT */ +#define SD_CLK_TOGGLE_EN 0x80 +#define SD_CLK_FORCE_STOP 0x40 +#define SD_DAT3_STATUS 0x10 +#define SD_DAT2_STATUS 0x08 +#define SD_DAT1_STATUS 0x04 +#define SD_DAT0_STATUS 0x02 +#define SD_CMD_STATUS 0x01 + +/* SD_PAD_CTL */ +#define SD_IO_USING_1V8 0x80 +#define SD_IO_USING_3V3 0x7F +#define TYPE_A_DRIVING 0x00 +#define TYPE_B_DRIVING 0x01 +#define TYPE_C_DRIVING 0x02 +#define TYPE_D_DRIVING 0x03 + +/* SD_SAMPLE_POINT_CTL */ +#define DDR_FIX_RX_DAT 0x00 +#define DDR_VAR_RX_DAT 0x80 +#define DDR_FIX_RX_DAT_EDGE 0x00 +#define DDR_FIX_RX_DAT_14_DELAY 0x40 +#define DDR_FIX_RX_CMD 0x00 +#define DDR_VAR_RX_CMD 0x20 +#define DDR_FIX_RX_CMD_POS_EDGE 0x00 +#define DDR_FIX_RX_CMD_14_DELAY 0x10 +#define SD20_RX_POS_EDGE 0x00 +#define SD20_RX_14_DELAY 0x08 +#define SD20_RX_SEL_MASK 0x08 + +/* SD_PUSH_POINT_CTL */ +#define DDR_FIX_TX_CMD_DAT 0x00 +#define DDR_VAR_TX_CMD_DAT 0x80 +#define DDR_FIX_TX_DAT_14_TSU 0x00 +#define DDR_FIX_TX_DAT_12_TSU 0x40 +#define DDR_FIX_TX_CMD_NEG_EDGE 0x00 +#define DDR_FIX_TX_CMD_14_AHEAD 0x20 +#define SD20_TX_NEG_EDGE 0x00 +#define SD20_TX_14_AHEAD 0x10 +#define SD20_TX_SEL_MASK 0x10 +#define DDR_VAR_SDCLK_POL_SWAP 0x01 + +/* SD_TRANSFER */ +#define SD_TRANSFER_START 0x80 +#define SD_TRANSFER_END 0x40 +#define SD_STAT_IDLE 0x20 +#define SD_TRANSFER_ERR 0x10 +/* SD Transfer Mode definition */ +#define SD_TM_NORMAL_WRITE 0x00 +#define SD_TM_AUTO_WRITE_3 0x01 +#define SD_TM_AUTO_WRITE_4 0x02 +#define SD_TM_AUTO_READ_3 0x05 +#define SD_TM_AUTO_READ_4 0x06 +#define SD_TM_CMD_RSP 0x08 +#define SD_TM_AUTO_WRITE_1 0x09 +#define SD_TM_AUTO_WRITE_2 0x0A +#define SD_TM_NORMAL_READ 0x0C +#define SD_TM_AUTO_READ_1 0x0D +#define SD_TM_AUTO_READ_2 0x0E +#define SD_TM_AUTO_TUNING 0x0F + +/* SD_VPTX_CTL / SD_VPRX_CTL */ +#define PHASE_CHANGE 0x80 +#define PHASE_NOT_RESET 0x40 + +/* SD_DCMPS_TX_CTL / SD_DCMPS_RX_CTL */ +#define DCMPS_CHANGE 0x80 +#define DCMPS_CHANGE_DONE 0x40 +#define DCMPS_ERROR 0x20 +#define DCMPS_CURRENT_PHASE 0x1F + +/* SD Configure 1 Register */ +#define SD_CLK_DIVIDE_0 0x00 +#define SD_CLK_DIVIDE_256 0xC0 +#define SD_CLK_DIVIDE_128 0x80 +#define SD_BUS_WIDTH_1BIT 0x00 +#define SD_BUS_WIDTH_4BIT 0x01 +#define SD_BUS_WIDTH_8BIT 0x02 +#define SD_ASYNC_FIFO_NOT_RST 0x10 +#define SD_20_MODE 0x00 +#define SD_DDR_MODE 0x04 +#define SD_30_MODE 0x08 + +#define SD_CLK_DIVIDE_MASK 0xC0 + +/* SD_CMD_STATE */ +#define SD_CMD_IDLE 0x80 + +/* SD_DATA_STATE */ +#define SD_DATA_IDLE 0x80 + +/* DCM_DRP_CTL */ +#define DCM_RESET 0x08 +#define DCM_LOCKED 0x04 +#define DCM_208M 0x00 +#define DCM_TX 0x01 +#define DCM_RX 0x02 + +/* DCM_DRP_TRIG */ +#define DRP_START 0x80 +#define DRP_DONE 0x40 + +/* DCM_DRP_CFG */ +#define DRP_WRITE 0x80 +#define DRP_READ 0x00 +#define DCM_WRITE_ADDRESS_50 0x50 +#define DCM_WRITE_ADDRESS_51 0x51 +#define DCM_READ_ADDRESS_00 0x00 +#define DCM_READ_ADDRESS_51 0x51 + +/* IRQSTAT0 */ +#define DMA_DONE_INT 0x80 +#define SUSPEND_INT 0x40 +#define LINK_RDY_INT 0x20 +#define LINK_DOWN_INT 0x10 + +/* DMACTL */ +#define DMA_RST 0x80 +#define DMA_BUSY 0x04 +#define DMA_DIR_TO_CARD 0x00 +#define DMA_DIR_FROM_CARD 0x02 +#define DMA_EN 0x01 +#define DMA_128 (0 << 4) +#define DMA_256 (1 << 4) +#define DMA_512 (2 << 4) +#define DMA_1024 (3 << 4) +#define DMA_PACK_SIZE_MASK 0x30 + +/* SSC_CTL1 */ +#define SSC_RSTB 0x80 +#define SSC_8X_EN 0x40 +#define SSC_FIX_FRAC 0x20 +#define SSC_SEL_1M 0x00 +#define SSC_SEL_2M 0x08 +#define SSC_SEL_4M 0x10 +#define SSC_SEL_8M 0x18 + +/* SSC_CTL2 */ +#define SSC_DEPTH_MASK 0x07 +#define SSC_DEPTH_DISALBE 0x00 +#define SSC_DEPTH_4M 0x01 +#define SSC_DEPTH_2M 0x02 +#define SSC_DEPTH_1M 0x03 +#define SSC_DEPTH_500K 0x04 +#define SSC_DEPTH_250K 0x05 + +/* System Clock Control Register */ +#define CLK_LOW_FREQ 0x01 + +/* System Clock Divider Register */ +#define CLK_DIV_1 0x01 +#define CLK_DIV_2 0x02 +#define CLK_DIV_4 0x03 +#define CLK_DIV_8 0x04 + +/* MS_CFG */ +#define SAMPLE_TIME_RISING 0x00 +#define SAMPLE_TIME_FALLING 0x80 +#define PUSH_TIME_DEFAULT 0x00 +#define PUSH_TIME_ODD 0x40 +#define NO_EXTEND_TOGGLE 0x00 +#define EXTEND_TOGGLE_CHK 0x20 +#define MS_BUS_WIDTH_1 0x00 +#define MS_BUS_WIDTH_4 0x10 +#define MS_BUS_WIDTH_8 0x18 +#define MS_2K_SECTOR_MODE 0x04 +#define MS_512_SECTOR_MODE 0x00 +#define MS_TOGGLE_TIMEOUT_EN 0x00 +#define MS_TOGGLE_TIMEOUT_DISEN 0x01 +#define MS_NO_CHECK_INT 0x02 + +/* MS_TRANS_CFG */ +#define WAIT_INT 0x80 +#define NO_WAIT_INT 0x00 +#define NO_AUTO_READ_INT_REG 0x00 +#define AUTO_READ_INT_REG 0x40 +#define MS_CRC16_ERR 0x20 +#define MS_RDY_TIMEOUT 0x10 +#define MS_INT_CMDNK 0x08 +#define MS_INT_BREQ 0x04 +#define MS_INT_ERR 0x02 +#define MS_INT_CED 0x01 + +/* MS_TRANSFER */ +#define MS_TRANSFER_START 0x80 +#define MS_TRANSFER_END 0x40 +#define MS_TRANSFER_ERR 0x20 +#define MS_BS_STATE 0x10 +#define MS_TM_READ_BYTES 0x00 +#define MS_TM_NORMAL_READ 0x01 +#define MS_TM_WRITE_BYTES 0x04 +#define MS_TM_NORMAL_WRITE 0x05 +#define MS_TM_AUTO_READ 0x08 +#define MS_TM_AUTO_WRITE 0x0C + +/* SD Configure 2 Register */ +#define SD_CALCULATE_CRC7 0x00 +#define SD_NO_CALCULATE_CRC7 0x80 +#define SD_CHECK_CRC16 0x00 +#define SD_NO_CHECK_CRC16 0x40 +#define SD_NO_CHECK_WAIT_CRC_TO 0x20 +#define SD_WAIT_BUSY_END 0x08 +#define SD_NO_WAIT_BUSY_END 0x00 +#define SD_CHECK_CRC7 0x00 +#define SD_NO_CHECK_CRC7 0x04 +#define SD_RSP_LEN_0 0x00 +#define SD_RSP_LEN_6 0x01 +#define SD_RSP_LEN_17 0x02 +/* SD/MMC Response Type Definition */ +#define SD_RSP_TYPE_R0 0x04 +#define SD_RSP_TYPE_R1 0x01 +#define SD_RSP_TYPE_R1b 0x09 +#define SD_RSP_TYPE_R2 0x02 +#define SD_RSP_TYPE_R3 0x05 +#define SD_RSP_TYPE_R4 0x05 +#define SD_RSP_TYPE_R5 0x01 +#define SD_RSP_TYPE_R6 0x01 +#define SD_RSP_TYPE_R7 0x01 + +/* SD_CONFIGURE3 */ +#define SD_RSP_80CLK_TIMEOUT_EN 0x01 + +/* Card Transfer Reset Register */ +#define SPI_STOP 0x01 +#define XD_STOP 0x02 +#define SD_STOP 0x04 +#define MS_STOP 0x08 +#define SPI_CLR_ERR 0x10 +#define XD_CLR_ERR 0x20 +#define SD_CLR_ERR 0x40 +#define MS_CLR_ERR 0x80 + +/* Card Data Source Register */ +#define PINGPONG_BUFFER 0x01 +#define RING_BUFFER 0x00 + +/* Card Power Control Register */ +#define PMOS_STRG_MASK 0x10 +#define PMOS_STRG_800mA 0x10 +#define PMOS_STRG_400mA 0x00 +#define SD_POWER_OFF 0x03 +#define SD_PARTIAL_POWER_ON 0x01 +#define SD_POWER_ON 0x00 +#define SD_POWER_MASK 0x03 +#define MS_POWER_OFF 0x0C +#define MS_PARTIAL_POWER_ON 0x04 +#define MS_POWER_ON 0x00 +#define MS_POWER_MASK 0x0C +#define BPP_POWER_OFF 0x0F +#define BPP_POWER_5_PERCENT_ON 0x0E +#define BPP_POWER_10_PERCENT_ON 0x0C +#define BPP_POWER_15_PERCENT_ON 0x08 +#define BPP_POWER_ON 0x00 +#define BPP_POWER_MASK 0x0F + +/* PWR_GATE_CTRL */ +#define PWR_GATE_EN 0x01 +#define LDO3318_PWR_MASK 0x06 +#define LDO_ON 0x00 +#define LDO_SUSPEND 0x04 +#define LDO_OFF 0x06 + +/* CARD_CLK_SOURCE */ +#define CRC_FIX_CLK (0x00 << 0) +#define CRC_VAR_CLK0 (0x01 << 0) +#define CRC_VAR_CLK1 (0x02 << 0) +#define SD30_FIX_CLK (0x00 << 2) +#define SD30_VAR_CLK0 (0x01 << 2) +#define SD30_VAR_CLK1 (0x02 << 2) +#define SAMPLE_FIX_CLK (0x00 << 4) +#define SAMPLE_VAR_CLK0 (0x01 << 4) +#define SAMPLE_VAR_CLK1 (0x02 << 4) + +#define MS_CFG 0xFD40 +#define MS_TPC 0xFD41 +#define MS_TRANS_CFG 0xFD42 +#define MS_TRANSFER 0xFD43 +#define MS_INT_REG 0xFD44 +#define MS_BYTE_CNT 0xFD45 +#define MS_SECTOR_CNT_L 0xFD46 +#define MS_SECTOR_CNT_H 0xFD47 +#define MS_DBUS_H 0xFD48 + +#define SD_CFG1 0xFDA0 +#define SD_CFG2 0xFDA1 +#define SD_CFG3 0xFDA2 +#define SD_STAT1 0xFDA3 +#define SD_STAT2 0xFDA4 +#define SD_BUS_STAT 0xFDA5 +#define SD_PAD_CTL 0xFDA6 +#define SD_SAMPLE_POINT_CTL 0xFDA7 +#define SD_PUSH_POINT_CTL 0xFDA8 +#define SD_CMD0 0xFDA9 +#define SD_CMD1 0xFDAA +#define SD_CMD2 0xFDAB +#define SD_CMD3 0xFDAC +#define SD_CMD4 0xFDAD +#define SD_CMD5 0xFDAE +#define SD_BYTE_CNT_L 0xFDAF +#define SD_BYTE_CNT_H 0xFDB0 +#define SD_BLOCK_CNT_L 0xFDB1 +#define SD_BLOCK_CNT_H 0xFDB2 +#define SD_TRANSFER 0xFDB3 +#define SD_CMD_STATE 0xFDB5 +#define SD_DATA_STATE 0xFDB6 + +#define SRCTL 0xFC13 + +#define DCM_DRP_CTL 0xFC23 +#define DCM_DRP_TRIG 0xFC24 +#define DCM_DRP_CFG 0xFC25 +#define DCM_DRP_WR_DATA_L 0xFC26 +#define DCM_DRP_WR_DATA_H 0xFC27 +#define DCM_DRP_RD_DATA_L 0xFC28 +#define DCM_DRP_RD_DATA_H 0xFC29 +#define SD_VPCLK0_CTL 0xFC2A +#define SD_VPCLK1_CTL 0xFC2B +#define SD_DCMPS0_CTL 0xFC2C +#define SD_DCMPS1_CTL 0xFC2D +#define SD_VPTX_CTL SD_VPCLK0_CTL +#define SD_VPRX_CTL SD_VPCLK1_CTL +#define SD_DCMPS_TX_CTL SD_DCMPS0_CTL +#define SD_DCMPS_RX_CTL SD_DCMPS1_CTL +#define CARD_CLK_SOURCE 0xFC2E + +#define CARD_PWR_CTL 0xFD50 +#define CARD_CLK_SWITCH 0xFD51 +#define CARD_SHARE_MODE 0xFD52 +#define CARD_DRIVE_SEL 0xFD53 +#define CARD_STOP 0xFD54 +#define CARD_OE 0xFD55 +#define CARD_AUTO_BLINK 0xFD56 +#define CARD_GPIO_DIR 0xFD57 +#define CARD_GPIO 0xFD58 +#define CARD_DATA_SOURCE 0xFD5B +#define SD30_CLK_DRIVE_SEL 0xFD5A +#define CARD_SELECT 0xFD5C +#define SD30_DRIVE_SEL 0xFD5E +#define SD30_CMD_DRIVE_SEL 0xFD5E +#define SD30_DAT_DRIVE_SEL 0xFD5F +#define CARD_CLK_EN 0xFD69 +#define SDIO_CTRL 0xFD6B +#define CD_PAD_CTL 0xFD73 + +#define FPDCTL 0xFC00 +#define PDINFO 0xFC01 + +#define CLK_CTL 0xFC02 +#define CLK_DIV 0xFC03 +#define CLK_SEL 0xFC04 + +#define SSC_DIV_N_0 0xFC0F +#define SSC_DIV_N_1 0xFC10 +#define SSC_CTL1 0xFC11 +#define SSC_CTL2 0xFC12 + +#define RCCTL 0xFC14 + +#define FPGA_PULL_CTL 0xFC1D +#define OLT_LED_CTL 0xFC1E +#define GPIO_CTL 0xFC1F + +#define LDO_CTL 0xFC1E +#define SYS_VER 0xFC32 + +#define CARD_PULL_CTL1 0xFD60 +#define CARD_PULL_CTL2 0xFD61 +#define CARD_PULL_CTL3 0xFD62 +#define CARD_PULL_CTL4 0xFD63 +#define CARD_PULL_CTL5 0xFD64 +#define CARD_PULL_CTL6 0xFD65 + +/* PCI Express Related Registers */ +#define IRQEN0 0xFE20 +#define IRQSTAT0 0xFE21 +#define IRQEN1 0xFE22 +#define IRQSTAT1 0xFE23 +#define TLPRIEN 0xFE24 +#define TLPRISTAT 0xFE25 +#define TLPTIEN 0xFE26 +#define TLPTISTAT 0xFE27 +#define DMATC0 0xFE28 +#define DMATC1 0xFE29 +#define DMATC2 0xFE2A +#define DMATC3 0xFE2B +#define DMACTL 0xFE2C +#define BCTL 0xFE2D +#define RBBC0 0xFE2E +#define RBBC1 0xFE2F +#define RBDAT 0xFE30 +#define RBCTL 0xFE34 +#define CFGADDR0 0xFE35 +#define CFGADDR1 0xFE36 +#define CFGDATA0 0xFE37 +#define CFGDATA1 0xFE38 +#define CFGDATA2 0xFE39 +#define CFGDATA3 0xFE3A +#define CFGRWCTL 0xFE3B +#define PHYRWCTL 0xFE3C +#define PHYDATA0 0xFE3D +#define PHYDATA1 0xFE3E +#define PHYADDR 0xFE3F +#define MSGRXDATA0 0xFE40 +#define MSGRXDATA1 0xFE41 +#define MSGRXDATA2 0xFE42 +#define MSGRXDATA3 0xFE43 +#define MSGTXDATA0 0xFE44 +#define MSGTXDATA1 0xFE45 +#define MSGTXDATA2 0xFE46 +#define MSGTXDATA3 0xFE47 +#define MSGTXCTL 0xFE48 +#define PETXCFG 0xFE49 +#define LTR_CTL 0xFE4A +#define OBFF_CFG 0xFE4C + +#define CDRESUMECTL 0xFE52 +#define WAKE_SEL_CTL 0xFE54 +#define PME_FORCE_CTL 0xFE56 +#define ASPM_FORCE_CTL 0xFE57 +#define PM_CLK_FORCE_CTL 0xFE58 +#define PERST_GLITCH_WIDTH 0xFE5C +#define CHANGE_LINK_STATE 0xFE5B +#define RESET_LOAD_REG 0xFE5E +#define EFUSE_CONTENT 0xFE5F +#define HOST_SLEEP_STATE 0xFE60 +#define SDIO_CFG 0xFE70 + +#define NFTS_TX_CTRL 0xFE72 + +#define PWR_GATE_CTRL 0xFE75 +#define PWD_SUSPEND_EN 0xFE76 +#define LDO_PWR_SEL 0xFE78 + +#define DUMMY_REG_RESET_0 0xFE90 + +/* Memory mapping */ +#define SRAM_BASE 0xE600 +#define RBUF_BASE 0xF400 +#define PPBUF_BASE1 0xF800 +#define PPBUF_BASE2 0xFA00 +#define IMAGE_FLAG_ADDR0 0xCE80 +#define IMAGE_FLAG_ADDR1 0xCE81 + +#define rtsx_pci_init_cmd(pcr) ((pcr)->ci = 0) + +struct rtsx_pcr; + +struct pcr_handle { + struct rtsx_pcr *pcr; +}; + +struct pcr_ops { + int (*extra_init_hw)(struct rtsx_pcr *pcr); + int (*optimize_phy)(struct rtsx_pcr *pcr); + int (*turn_on_led)(struct rtsx_pcr *pcr); + int (*turn_off_led)(struct rtsx_pcr *pcr); + int (*enable_auto_blink)(struct rtsx_pcr *pcr); + int (*disable_auto_blink)(struct rtsx_pcr *pcr); + int (*card_power_on)(struct rtsx_pcr *pcr, int card); + int (*card_power_off)(struct rtsx_pcr *pcr, int card); + int (*switch_output_voltage)(struct rtsx_pcr *pcr, + u8 voltage); + unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); + int (*conv_clk_and_div_n)(int clk, int dir); +}; + +enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; + +struct rtsx_pcr { + struct pci_dev *pci; + unsigned int id; + + /* pci resources */ + unsigned long addr; + void __iomem *remap_addr; + int irq; + + /* host reserved buffer */ + void *rtsx_resv_buf; + dma_addr_t rtsx_resv_buf_addr; + + void *host_cmds_ptr; + dma_addr_t host_cmds_addr; + int ci; + + void *host_sg_tbl_ptr; + dma_addr_t host_sg_tbl_addr; + int sgi; + + u32 bier; + char trans_result; + + unsigned int card_inserted; + unsigned int card_removed; + unsigned int card_exist; + + struct delayed_work carddet_work; + struct delayed_work idle_work; + + spinlock_t lock; + struct mutex pcr_mutex; + struct completion *done; + struct completion *finish_me; + + unsigned int cur_clock; + bool ms_pmos; + bool remove_pci; + bool msi_en; + +#define EXTRA_CAPS_SD_SDR50 (1 << 0) +#define EXTRA_CAPS_SD_SDR104 (1 << 1) +#define EXTRA_CAPS_SD_DDR50 (1 << 2) +#define EXTRA_CAPS_MMC_HSDDR (1 << 3) +#define EXTRA_CAPS_MMC_HS200 (1 << 4) +#define EXTRA_CAPS_MMC_8BIT (1 << 5) + u32 extra_caps; + +#define IC_VER_A 0 +#define IC_VER_B 1 +#define IC_VER_C 2 +#define IC_VER_D 3 + u8 ic_version; + + const u32 *sd_pull_ctl_enable_tbl; + const u32 *sd_pull_ctl_disable_tbl; + const u32 *ms_pull_ctl_enable_tbl; + const u32 *ms_pull_ctl_disable_tbl; + + const struct pcr_ops *ops; + enum PDEV_STAT state; + + int num_slots; + struct rtsx_slot *slots; +}; + +#define CHK_PCI_PID(pcr, pid) ((pcr)->pci->device == (pid)) +#define PCI_VID(pcr) ((pcr)->pci->vendor) +#define PCI_PID(pcr) ((pcr)->pci->device) + +void rtsx_pci_start_run(struct rtsx_pcr *pcr); +int rtsx_pci_write_register(struct rtsx_pcr *pcr, u16 addr, u8 mask, u8 data); +int rtsx_pci_read_register(struct rtsx_pcr *pcr, u16 addr, u8 *data); +int rtsx_pci_write_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 val); +int rtsx_pci_read_phy_register(struct rtsx_pcr *pcr, u8 addr, u16 *val); +void rtsx_pci_stop_cmd(struct rtsx_pcr *pcr); +void rtsx_pci_add_cmd(struct rtsx_pcr *pcr, + u8 cmd_type, u16 reg_addr, u8 mask, u8 data); +void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr); +int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout); +int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, + int num_sg, bool read, int timeout); +int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); +int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); +int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_pull_ctl_disable(struct rtsx_pcr *pcr, int card); +int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, + u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); +int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); +int rtsx_pci_card_exclusive_check(struct rtsx_pcr *pcr, int card); +int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage); +unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); +void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); + +static inline u8 *rtsx_pci_get_cmd_data(struct rtsx_pcr *pcr) +{ + return (u8 *)(pcr->host_cmds_ptr); +} + +#endif --- linux-3.5.0.orig/include/linux/ceph/libceph.h +++ linux-3.5.0/include/linux/ceph/libceph.h @@ -132,7 +132,7 @@ u32 supported_features; u32 required_features; - struct ceph_messenger *msgr; /* messenger instance */ + struct ceph_messenger msgr; /* messenger instance */ struct ceph_mon_client monc; struct ceph_osd_client osdc; --- linux-3.5.0.orig/include/linux/ceph/messenger.h +++ linux-3.5.0/include/linux/ceph/messenger.h @@ -31,9 +31,6 @@ int (*verify_authorizer_reply) (struct ceph_connection *con, int len); int (*invalidate_authorizer)(struct ceph_connection *con); - /* protocol version mismatch */ - void (*bad_proto) (struct ceph_connection *con); - /* there was some error on the socket (disconnect, whatever) */ void (*fault) (struct ceph_connection *con); @@ -53,6 +50,7 @@ struct ceph_entity_inst inst; /* my name+address */ struct ceph_entity_addr my_enc_addr; + atomic_t stopping; bool nocrc; /* @@ -80,7 +78,10 @@ unsigned nr_pages; /* size of page array */ unsigned page_alignment; /* io offset in first page */ struct ceph_pagelist *pagelist; /* instead of pages */ + + struct ceph_connection *con; struct list_head list_head; + struct kref kref; struct bio *bio; /* instead of pages/pagelist */ struct bio *bio_iter; /* bio iterator */ @@ -106,23 +107,6 @@ #define MAX_DELAY_INTERVAL (5 * 60 * HZ) /* - * ceph_connection state bit flags - */ -#define LOSSYTX 0 /* we can close channel or drop messages on errors */ -#define CONNECTING 1 -#define NEGOTIATING 2 -#define KEEPALIVE_PENDING 3 -#define WRITE_PENDING 4 /* we have data ready to send */ -#define STANDBY 8 /* no outgoing messages, socket closed. we keep - * the ceph_connection around to maintain shared - * state with the peer. */ -#define CLOSED 10 /* we've closed the connection */ -#define SOCK_CLOSED 11 /* socket state changed to closed */ -#define OPENING 13 /* open connection w/ (possibly new) peer */ -#define DEAD 14 /* dead, about to kfree */ -#define BACKOFF 15 - -/* * A single connection with another host. * * We maintain a queue of outgoing messages, and some session state to @@ -131,18 +115,22 @@ */ struct ceph_connection { void *private; - atomic_t nref; const struct ceph_connection_operations *ops; struct ceph_messenger *msgr; + + atomic_t sock_state; struct socket *sock; - unsigned long state; /* connection state (see flags above) */ + struct ceph_entity_addr peer_addr; /* peer address */ + struct ceph_entity_addr peer_addr_for_me; + + unsigned long flags; + unsigned long state; const char *error_msg; /* error message, if any */ - struct ceph_entity_addr peer_addr; /* peer address */ struct ceph_entity_name peer_name; /* peer name */ - struct ceph_entity_addr peer_addr_for_me; + unsigned peer_features; u32 connect_seq; /* identify the most recent connection attempt for this connection, client */ @@ -207,24 +195,26 @@ extern void ceph_msgr_exit(void); extern void ceph_msgr_flush(void); -extern struct ceph_messenger *ceph_messenger_create( - struct ceph_entity_addr *myaddr, - u32 features, u32 required); -extern void ceph_messenger_destroy(struct ceph_messenger *); - -extern void ceph_con_init(struct ceph_messenger *msgr, - struct ceph_connection *con); +extern void ceph_messenger_init(struct ceph_messenger *msgr, + struct ceph_entity_addr *myaddr, + u32 supported_features, + u32 required_features, + bool nocrc); + +extern void ceph_con_init(struct ceph_connection *con, void *private, + const struct ceph_connection_operations *ops, + struct ceph_messenger *msgr); extern void ceph_con_open(struct ceph_connection *con, + __u8 entity_type, __u64 entity_num, struct ceph_entity_addr *addr); extern bool ceph_con_opened(struct ceph_connection *con); extern void ceph_con_close(struct ceph_connection *con); extern void ceph_con_send(struct ceph_connection *con, struct ceph_msg *msg); -extern void ceph_con_revoke(struct ceph_connection *con, struct ceph_msg *msg); -extern void ceph_con_revoke_message(struct ceph_connection *con, - struct ceph_msg *msg); + +extern void ceph_msg_revoke(struct ceph_msg *msg); +extern void ceph_msg_revoke_incoming(struct ceph_msg *msg); + extern void ceph_con_keepalive(struct ceph_connection *con); -extern struct ceph_connection *ceph_con_get(struct ceph_connection *con); -extern void ceph_con_put(struct ceph_connection *con); extern struct ceph_msg *ceph_msg_new(int type, int front_len, gfp_t flags, bool can_fail); --- linux-3.5.0.orig/include/linux/ceph/mon_client.h +++ linux-3.5.0/include/linux/ceph/mon_client.h @@ -70,7 +70,7 @@ bool hunting; int cur_mon; /* last monitor i contacted */ unsigned long sub_sent, sub_renew_after; - struct ceph_connection *con; + struct ceph_connection con; bool have_fsid; /* pending generic requests */ --- linux-3.5.0.orig/include/linux/ceph/osd_client.h +++ linux-3.5.0/include/linux/ceph/osd_client.h @@ -207,7 +207,7 @@ extern void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg); -extern void ceph_calc_raw_layout(struct ceph_osd_client *osdc, +extern int ceph_calc_raw_layout(struct ceph_osd_client *osdc, struct ceph_file_layout *layout, u64 snapid, u64 off, u64 *plen, u64 *bno, --- linux-3.5.0.orig/include/linux/ceph/osdmap.h +++ linux-3.5.0/include/linux/ceph/osdmap.h @@ -109,9 +109,9 @@ extern void ceph_osdmap_destroy(struct ceph_osdmap *map); /* calculate mapping of a file extent to an object */ -extern void ceph_calc_file_object_mapping(struct ceph_file_layout *layout, - u64 off, u64 *plen, - u64 *bno, u64 *oxoff, u64 *oxlen); +extern int ceph_calc_file_object_mapping(struct ceph_file_layout *layout, + u64 off, u64 *plen, + u64 *bno, u64 *oxoff, u64 *oxlen); /* calculate mapping of object to a placement group */ extern int ceph_calc_object_layout(struct ceph_object_layout *ol, --- linux-3.5.0.orig/include/linux/ceph/msgpool.h +++ linux-3.5.0/include/linux/ceph/msgpool.h @@ -11,10 +11,11 @@ struct ceph_msgpool { const char *name; mempool_t *pool; + int type; /* preallocated message type */ int front_len; /* preallocated payload size */ }; -extern int ceph_msgpool_init(struct ceph_msgpool *pool, +extern int ceph_msgpool_init(struct ceph_msgpool *pool, int type, int front_len, int size, bool blocking, const char *name); extern void ceph_msgpool_destroy(struct ceph_msgpool *pool); --- linux-3.5.0.orig/include/linux/sunrpc/xprt.h +++ linux-3.5.0/include/linux/sunrpc/xprt.h @@ -114,6 +114,7 @@ void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); int (*reserve_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); + void (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task); void (*rpcbind)(struct rpc_task *task); void (*set_port)(struct rpc_xprt *xprt, unsigned short port); void (*connect)(struct rpc_task *task); @@ -279,6 +280,8 @@ void xprt_reserve(struct rpc_task *task); int xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task); int xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task); +void xprt_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task); +void xprt_lock_and_alloc_slot(struct rpc_xprt *xprt, struct rpc_task *task); int xprt_prepare_transmit(struct rpc_task *task); void xprt_transmit(struct rpc_task *task); void xprt_end_transmit(struct rpc_task *task); --- linux-3.5.0.orig/include/linux/mtd/nand.h +++ linux-3.5.0/include/linux/mtd/nand.h @@ -212,9 +212,6 @@ #define NAND_SUBPAGE_READ(chip) ((chip->ecc.mode == NAND_ECC_SOFT) \ && (chip->page_shift > 9)) -/* Mask to zero out the chip options, which come from the id table */ -#define NAND_CHIPOPTIONS_MSK 0x0000ffff - /* Non chip related options */ /* This option skips the bbt scan during initialization. */ #define NAND_SKIP_BBTSCAN 0x00010000 --- linux-3.5.0.orig/include/linux/input/eeti_ts.h +++ linux-3.5.0/include/linux/input/eeti_ts.h @@ -2,6 +2,7 @@ #define LINUX_INPUT_EETI_TS_H struct eeti_ts_platform_data { + int irq_gpio; unsigned int irq_active_high; }; --- linux-3.5.0.orig/include/sound/core.h +++ linux-3.5.0/include/sound/core.h @@ -132,6 +132,7 @@ int shutdown; /* this card is going down */ int free_on_last_close; /* free in context of file_release */ wait_queue_head_t shutdown_sleep; + atomic_t refcount; /* refcount for disconnection */ struct device *dev; /* device assigned to this card */ struct device *card_dev; /* cardX object for sysfs */ @@ -189,6 +190,7 @@ const struct file_operations *f_ops; /* file operations */ void *private_data; /* private data for f_ops->open */ struct device *dev; /* device for sysfs */ + struct snd_card *card_ptr; /* assigned card instance */ }; /* return a device pointer linked to each sound device as a parent */ @@ -295,6 +297,7 @@ int snd_component_add(struct snd_card *card, const char *component); int snd_card_file_add(struct snd_card *card, struct file *file); int snd_card_file_remove(struct snd_card *card, struct file *file); +void snd_card_unref(struct snd_card *card); #define snd_card_set_dev(card, devptr) ((card)->dev = (devptr)) --- linux-3.5.0.orig/include/video/omap-panel-tfp410.h +++ linux-3.5.0/include/video/omap-panel-tfp410.h @@ -28,7 +28,7 @@ * @power_down_gpio: gpio number for PD pin (or -1 if not available) */ struct tfp410_platform_data { - u16 i2c_bus_num; + int i2c_bus_num; int power_down_gpio; }; --- linux-3.5.0.orig/include/rdma/rdma_netlink.h +++ linux-3.5.0/include/rdma/rdma_netlink.h @@ -39,6 +39,7 @@ struct ibnl_client_cbs { int (*dump)(struct sk_buff *skb, struct netlink_callback *nlcb); + struct module *module; }; int ibnl_init(void); --- linux-3.5.0.orig/include/trace/events/xen.h +++ linux-3.5.0/include/trace/events/xen.h @@ -377,6 +377,14 @@ DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_pin); DEFINE_XEN_MMU_PGD_EVENT(xen_mmu_pgd_unpin); +TRACE_EVENT(xen_mmu_flush_tlb_all, + TP_PROTO(int x), + TP_ARGS(x), + TP_STRUCT__entry(__array(char, x, 0)), + TP_fast_assign((void)x), + TP_printk("%s", "") + ); + TRACE_EVENT(xen_mmu_flush_tlb, TP_PROTO(int x), TP_ARGS(x), --- linux-3.5.0.orig/include/trace/events/fs.h +++ linux-3.5.0/include/trace/events/fs.h @@ -0,0 +1,53 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM fs + +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_FS_H + +#include +#include + +TRACE_EVENT(do_sys_open, + + TP_PROTO(char *filename, int flags, int mode), + + TP_ARGS(filename, flags, mode), + + TP_STRUCT__entry( + __string( filename, filename ) + __field( int, flags ) + __field( int, mode ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + __entry->flags = flags; + __entry->mode = mode; + ), + + TP_printk("\"%s\" %x %o", + __get_str(filename), __entry->flags, __entry->mode) +); + +TRACE_EVENT(open_exec, + + TP_PROTO(char *filename), + + TP_ARGS(filename), + + TP_STRUCT__entry( + __string( filename, filename ) + ), + + TP_fast_assign( + __assign_str(filename, filename); + ), + + TP_printk("\"%s\"", + __get_str(filename)) +); + +#endif /* _TRACE_FS_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/vfs.h +++ linux-3.5.0/include/trace/events/vfs.h @@ -0,0 +1,55 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM vfs + +#include + +#if !defined(_TRACE_VFS_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_VFS_H + +/* + * Tracepoint for dirtying an inode: + */ +TRACE_EVENT(dirty_inode, + + TP_PROTO(struct inode *inode, struct task_struct *task), + + TP_ARGS(inode, task), + + TP_STRUCT__entry( + __array( char, comm, TASK_COMM_LEN ) + __field( pid_t, pid ) + __array( char, dev, 16 ) + __array( char, file, 32 ) + ), + + TP_fast_assign( + if (inode->i_ino || strcmp(inode->i_sb->s_id, "bdev")) { + struct dentry *dentry; + const char *name = "?"; + + dentry = d_find_alias(inode); + if (dentry) { + spin_lock(&dentry->d_lock); + name = (const char *) dentry->d_name.name; + } + + memcpy(__entry->comm, task->comm, TASK_COMM_LEN); + __entry->pid = task->pid; + strlcpy(__entry->file, name, 32); + strlcpy(__entry->dev, inode->i_sb->s_id, 16); + + if (dentry) { + spin_unlock(&dentry->d_lock); + dput(dentry); + } + } + ), + + TP_printk("task=%i (%s) file=%s dev=%s", + __entry->pid, __entry->comm, __entry->file, __entry->dev) +); + +#endif /* _TRACE_VFS_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/random.h +++ linux-3.5.0/include/trace/events/random.h @@ -0,0 +1,134 @@ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM random + +#if !defined(_TRACE_RANDOM_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_RANDOM_H + +#include +#include + +DECLARE_EVENT_CLASS(random__mix_pool_bytes, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, bytes ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->bytes = bytes; + __entry->IP = IP; + ), + + TP_printk("%s pool: bytes %d caller %pF", + __entry->pool_name, __entry->bytes, (void *)__entry->IP) +); + +DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP) +); + +DEFINE_EVENT(random__mix_pool_bytes, mix_pool_bytes_nolock, + TP_PROTO(const char *pool_name, int bytes, unsigned long IP), + + TP_ARGS(pool_name, bytes, IP) +); + +TRACE_EVENT(credit_entropy_bits, + TP_PROTO(const char *pool_name, int bits, int entropy_count, + int entropy_total, unsigned long IP), + + TP_ARGS(pool_name, bits, entropy_count, entropy_total, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, bits ) + __field( int, entropy_count ) + __field( int, entropy_total ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->bits = bits; + __entry->entropy_count = entropy_count; + __entry->entropy_total = entropy_total; + __entry->IP = IP; + ), + + TP_printk("%s pool: bits %d entropy_count %d entropy_total %d " + "caller %pF", __entry->pool_name, __entry->bits, + __entry->entropy_count, __entry->entropy_total, + (void *)__entry->IP) +); + +TRACE_EVENT(get_random_bytes, + TP_PROTO(int nbytes, unsigned long IP), + + TP_ARGS(nbytes, IP), + + TP_STRUCT__entry( + __field( int, nbytes ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->nbytes = nbytes; + __entry->IP = IP; + ), + + TP_printk("nbytes %d caller %pF", __entry->nbytes, (void *)__entry->IP) +); + +DECLARE_EVENT_CLASS(random__extract_entropy, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP), + + TP_STRUCT__entry( + __field( const char *, pool_name ) + __field( int, nbytes ) + __field( int, entropy_count ) + __field(unsigned long, IP ) + ), + + TP_fast_assign( + __entry->pool_name = pool_name; + __entry->nbytes = nbytes; + __entry->entropy_count = entropy_count; + __entry->IP = IP; + ), + + TP_printk("%s pool: nbytes %d entropy_count %d caller %pF", + __entry->pool_name, __entry->nbytes, __entry->entropy_count, + (void *)__entry->IP) +); + + +DEFINE_EVENT(random__extract_entropy, extract_entropy, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP) +); + +DEFINE_EVENT(random__extract_entropy, extract_entropy_user, + TP_PROTO(const char *pool_name, int nbytes, int entropy_count, + unsigned long IP), + + TP_ARGS(pool_name, nbytes, entropy_count, IP) +); + + + +#endif /* _TRACE_RANDOM_H */ + +/* This part must be outside protection */ +#include --- linux-3.5.0.orig/include/trace/events/kmem.h +++ linux-3.5.0/include/trace/events/kmem.h @@ -214,7 +214,7 @@ TP_printk("page=%p pfn=%lu order=%d migratetype=%d gfp_flags=%s", __entry->page, - page_to_pfn(__entry->page), + __entry->page ? page_to_pfn(__entry->page) : 0, __entry->order, __entry->migratetype, show_gfp_flags(__entry->gfp_flags)) @@ -240,7 +240,7 @@ TP_printk("page=%p pfn=%lu order=%u migratetype=%d percpu_refill=%d", __entry->page, - page_to_pfn(__entry->page), + __entry->page ? page_to_pfn(__entry->page) : 0, __entry->order, __entry->migratetype, __entry->order == 0) --- linux-3.5.0.orig/include/drm/drm_pciids.h +++ linux-3.5.0/include/drm/drm_pciids.h @@ -205,17 +205,24 @@ {0x1002, 0x6788, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x678A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6790, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6791, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6792, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6798, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6799, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x679B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x679F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_TAHITI|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6800, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6801, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6802, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6806, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6808, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6809, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6810, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6811, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6816, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ + {0x1002, 0x6817, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6818, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6819, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_PITCAIRN|RADEON_NEW_MEMMAP}, \ {0x1002, 0x6820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_VERDE|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ --- linux-3.5.0.orig/include/drm/drm_dp_helper.h +++ linux-3.5.0/include/drm/drm_dp_helper.h @@ -25,6 +25,7 @@ #include #include +#include /* From the VESA DisplayPort spec */ @@ -92,6 +93,13 @@ # define DP_PSR_SETUP_TIME_0 (6 << 1) # define DP_PSR_SETUP_TIME_MASK (7 << 1) # define DP_PSR_SETUP_TIME_SHIFT 1 +# define DP_DOWNSTREAM_PORT_0 0x80 +# define DP_DS_PORT_TYPE_MASK (7 << 0) +# define DP_DS_PORT_TYPE_VGA 1 +# define DP_DS_PORT_TYPE_NON_EDID 4 +# define DP_DS_PORT_HPD (1 << 3) +# define DP_SINK_COUNT 0x200 +# define DP_GET_SINK_COUNT(x) ((((x) & 0x80) >> 1) | ((x) & 0x3f)) /* link configuration */ #define DP_LINK_BW_SET 0x100 @@ -257,4 +265,33 @@ int i2c_dp_aux_add_bus(struct i2c_adapter *adapter); +#define DP_LINK_STATUS_SIZE 6 +bool drm_dp_channel_eq_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count); +bool drm_dp_clock_recovery_ok(u8 link_status[DP_LINK_STATUS_SIZE], + int lane_count); +u8 drm_dp_get_adjust_request_voltage(u8 link_status[DP_LINK_STATUS_SIZE], + int lane); +u8 drm_dp_get_adjust_request_pre_emphasis(u8 link_status[DP_LINK_STATUS_SIZE], + int lane); + +#define DP_RECEIVER_CAP_SIZE 0xf +void drm_dp_link_train_clock_recovery_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]); +void drm_dp_link_train_channel_eq_delay(u8 dpcd[DP_RECEIVER_CAP_SIZE]); + +u8 drm_dp_link_rate_to_bw_code(int link_rate); +int drm_dp_bw_code_to_link_rate(u8 link_bw); + +static inline int +drm_dp_max_link_rate(u8 dpcd[DP_RECEIVER_CAP_SIZE]) +{ + return drm_dp_bw_code_to_link_rate(dpcd[DP_MAX_LINK_RATE]); +} + +static inline u8 +drm_dp_max_lane_count(u8 dpcd[DP_RECEIVER_CAP_SIZE]) +{ + return dpcd[DP_MAX_LANE_COUNT] & DP_MAX_LANE_COUNT_MASK; +} + #endif /* _DRM_DP_HELPER_H_ */ --- linux-3.5.0.orig/include/drm/drmP.h +++ linux-3.5.0/include/drm/drmP.h @@ -87,6 +87,7 @@ #include "drm_os_linux.h" #include "drm_hashtab.h" #include "drm_mm.h" +#include "drm_mm_hsw.h" #define DRM_UT_CORE 0x01 #define DRM_UT_DRIVER 0x02 @@ -1378,6 +1379,7 @@ /* Cache management (drm_cache.c) */ void drm_clflush_pages(struct page *pages[], unsigned long num_pages); +void drm_clflush_sg(struct sg_table *st); void drm_clflush_virt_range(char *addr, unsigned long length); /* Locking IOCTL support (drm_lock.h) */ --- linux-3.5.0.orig/include/drm/i915_drm.h +++ linux-3.5.0/include/drm/i915_drm.h @@ -200,6 +200,12 @@ #define DRM_I915_GEM_EXECBUFFER2 0x29 #define DRM_I915_GET_SPRITE_COLORKEY 0x2a #define DRM_I915_SET_SPRITE_COLORKEY 0x2b +#define DRM_I915_GEM_WAIT 0x2c +#define DRM_I915_GEM_CONTEXT_CREATE 0x2d +#define DRM_I915_GEM_CONTEXT_DESTROY 0x2e +#define DRM_I915_GEM_SET_CACHING 0x2f +#define DRM_I915_GEM_GET_CACHING 0x30 +#define DRM_I915_REG_READ 0x31 #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) @@ -224,6 +230,8 @@ #define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin) #define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin) #define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy) +#define DRM_IOCTL_I915_GEM_SET_CACHING DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_SET_CACHING, struct drm_i915_gem_caching) +#define DRM_IOCTL_I915_GEM_GET_CACHING DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_GET_CACHING, struct drm_i915_gem_caching) #define DRM_IOCTL_I915_GEM_THROTTLE DRM_IO ( DRM_COMMAND_BASE + DRM_I915_GEM_THROTTLE) #define DRM_IOCTL_I915_GEM_ENTERVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_ENTERVT) #define DRM_IOCTL_I915_GEM_LEAVEVT DRM_IO(DRM_COMMAND_BASE + DRM_I915_GEM_LEAVEVT) @@ -243,6 +251,10 @@ #define DRM_IOCTL_I915_OVERLAY_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_OVERLAY_ATTRS, struct drm_intel_overlay_attrs) #define DRM_IOCTL_I915_SET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey) #define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_SET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey) +#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait) +#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create) +#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy) +#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read) /* Allow drivers to submit batchbuffers directly to hardware, relying * on the security mechanisms provided by hardware. @@ -298,6 +310,10 @@ #define I915_PARAM_HAS_GEN7_SOL_RESET 16 #define I915_PARAM_HAS_LLC 17 #define I915_PARAM_HAS_ALIASING_PPGTT 18 +#define I915_PARAM_HAS_WAIT_TIMEOUT 19 +#define I915_PARAM_HAS_SEMAPHORES 20 +#define I915_PARAM_HAS_PRIME_VMAP_FLUSH 21 +#define I915_PARAM_HAS_SECURE_BATCHES 23 typedef struct drm_i915_getparam { int param; @@ -663,6 +679,17 @@ /** Resets the SO write offset registers for transform feedback on gen7. */ #define I915_EXEC_GEN7_SOL_RESET (1<<8) +/** Request a privileged ("secure") batch buffer. Note only available for + * DRM_ROOT_ONLY | DRM_MASTER processes. + */ +#define I915_EXEC_SECURE (1<<9) + +#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff) +#define i915_execbuffer2_set_context_id(eb2, context) \ + (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK +#define i915_execbuffer2_get_context_id(eb2) \ + ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK) + struct drm_i915_gem_pin { /** Handle of the buffer to be pinned. */ __u32 handle; @@ -689,6 +716,17 @@ __u32 busy; }; +#define I915_CACHING_NONE 0 +#define I915_CACHING_CACHED 1 + +struct drm_i915_gem_caching { + /** Handle of the buffer to set/get the cacheing level of */ + __u32 handle; + + /** Cacheing level to apply or return value */ + __u32 caching; +}; + #define I915_TILING_NONE 0 #define I915_TILING_X 1 #define I915_TILING_Y 2 @@ -885,5 +923,28 @@ __u32 max_value; __u32 flags; }; +struct drm_i915_gem_wait { + /** Handle of BO we shall wait on */ + __u32 bo_handle; + __u32 flags; + /** Number of nanoseconds to wait, Returns time remaining. */ + __u64 timeout_ns; +}; + +struct drm_i915_gem_context_create { + /* output: id of new context*/ + __u32 ctx_id; + __u32 pad; +}; + +struct drm_i915_gem_context_destroy { + __u32 ctx_id; + __u32 pad; +}; + +struct drm_i915_reg_read { + __u64 offset; + __u64 val; /* Return value */ +}; #endif /* _I915_DRM_H_ */ --- linux-3.5.0.orig/include/drm/intel-gtt.h +++ linux-3.5.0/include/drm/intel-gtt.h @@ -3,7 +3,7 @@ #ifndef _DRM_INTEL_GTT_H #define _DRM_INTEL_GTT_H -const struct intel_gtt { +struct intel_gtt { /* Size of memory reserved for graphics by the BIOS */ unsigned int stolen_size; /* Total number of gtt entries. */ @@ -17,10 +17,19 @@ unsigned int do_idle_maps : 1; /* Share the scratch page dma with ppgtts. */ dma_addr_t scratch_page_dma; + struct page *scratch_page; /* for ppgtt PDE access */ u32 __iomem *gtt; + /* needed for ioremap in drm/i915 */ + phys_addr_t gma_bus_addr; } *intel_gtt_get(void); +int intel_gmch_probe(struct pci_dev *bridge_pdev, struct pci_dev *gpu_pdev, + struct agp_bridge_data *bridge); +void intel_gmch_remove(void); + +bool intel_enable_gtt(void); + void intel_gtt_chipset_flush(void); void intel_gtt_unmap_memory(struct scatterlist *sg_list, int num_sg); void intel_gtt_clear_range(unsigned int first_entry, unsigned int num_entries); @@ -30,6 +39,9 @@ unsigned int sg_len, unsigned int pg_start, unsigned int flags); +void intel_gtt_insert_sg_entries_hsw(struct sg_table *st, + unsigned int pg_start, + unsigned int flags); void intel_gtt_insert_pages(unsigned int first_entry, unsigned int num_entries, struct page **pages, unsigned int flags); --- linux-3.5.0.orig/include/drm/i915_drm_hsw.h +++ linux-3.5.0/include/drm/i915_drm_hsw.h @@ -0,0 +1,35 @@ +/* + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * 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 TUNGSTEN GRAPHICS 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. + * + */ +#ifndef _I915_DRM_HSW_H_ +#define _I915_DRM_HSW_H_ + +/* For use by IPS driver */ +extern unsigned long i915_hsw_read_mch_val(void); +extern bool i915_hsw_gpu_raise(void); +extern bool i915_hsw_gpu_lower(void); +extern bool i915_hsw_gpu_busy(void); +extern bool i915_hsw_gpu_turbo_disable(void); +#endif /* _I915_DRM_HSW_H_ */ --- linux-3.5.0.orig/include/drm/drm_mode.h +++ linux-3.5.0/include/drm/drm_mode.h @@ -359,8 +359,9 @@ struct drm_mode_modeinfo mode; }; -#define DRM_MODE_CURSOR_BO (1<<0) -#define DRM_MODE_CURSOR_MOVE (1<<1) +#define DRM_MODE_CURSOR_BO 0x01 +#define DRM_MODE_CURSOR_MOVE 0x02 +#define DRM_MODE_CURSOR_FLAGS 0x03 /* * depending on the value in flags different members are used. --- linux-3.5.0.orig/include/drm/drm_crtc.h +++ linux-3.5.0/include/drm/drm_crtc.h @@ -216,8 +216,6 @@ u32 color_formats; u8 cea_rev; - - char *raw_edid; /* if any */ }; struct drm_framebuffer_funcs { @@ -865,6 +863,7 @@ extern char *drm_get_tv_select_name(int val); extern void drm_fb_release(struct drm_file *file_priv); extern int drm_mode_group_init_legacy_group(struct drm_device *dev, struct drm_mode_group *group); +extern bool drm_probe_ddc(struct i2c_adapter *adapter); extern struct edid *drm_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter); extern int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid); --- linux-3.5.0.orig/include/drm/drm_mm_hsw.h +++ linux-3.5.0/include/drm/drm_mm_hsw.h @@ -0,0 +1,251 @@ +/************************************************************************** + * + * Copyright 2006-2008 Tungsten Graphics, Inc., Cedar Park, TX. 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. + * + * + **************************************************************************/ +/* + * Authors: + * Thomas Hellstrom + */ + +#ifndef _DRM_MM_HSW_H_ +#define _DRM_MM_HSW_H_ + +/* + * Generic range manager structs + */ +#include +#ifdef CONFIG_DEBUG_FS +#include +#endif + +struct drm_mm_node_hsw { + struct list_head node_list; + struct list_head hole_stack; + unsigned hole_follows : 1; + unsigned scanned_block : 1; + unsigned scanned_prev_free : 1; + unsigned scanned_next_free : 1; + unsigned scanned_preceeds_hole : 1; + unsigned allocated : 1; + unsigned long color; + unsigned long start; + unsigned long size; + struct drm_mm_hsw *mm; +}; + +struct drm_mm_hsw { + /* List of all memory nodes that immediately precede a free hole. */ + struct list_head hole_stack; + /* head_node.node_list is the list of all memory nodes, ordered + * according to the (increasing) start address of the memory node. */ + struct drm_mm_node_hsw head_node; + struct list_head unused_nodes; + int num_unused; + spinlock_t unused_lock; + unsigned int scan_check_range : 1; + unsigned scan_alignment; + unsigned long scan_color; + unsigned long scan_size; + unsigned long scan_hit_start; + unsigned scan_hit_size; + unsigned scanned_blocks; + unsigned long scan_start; + unsigned long scan_end; + struct drm_mm_node_hsw *prev_scanned_node; + + void (*color_adjust)(struct drm_mm_node_hsw *node, unsigned long color, + unsigned long *start, unsigned long *end); +}; + +static inline bool drm_mm_node_allocated_hsw(struct drm_mm_node_hsw *node) +{ + return node->allocated; +} + +static inline bool drm_mm_initialized_hsw(struct drm_mm_hsw *mm) +{ + return mm->hole_stack.next; +} +#define drm_mm_hsw_for_each_node(entry, mm) list_for_each_entry(entry, \ + &(mm)->head_node.node_list, \ + node_list) +#define drm_mm_hsw_for_each_scanned_node_reverse(entry, n, mm) \ + for (entry = (mm)->prev_scanned_node, \ + next = entry ? list_entry(entry->node_list.next, \ + struct drm_mm_node_hsw, node_list) : NULL; \ + entry != NULL; entry = next, \ + next = entry ? list_entry(entry->node_list.next, \ + struct drm_mm_node_hsw, node_list) : NULL) \ +/* + * Basic range manager support (drm_mm.c) + */ +extern struct drm_mm_node_hsw *drm_mm_get_block_generic_hsw(struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color, + int atomic); +extern struct drm_mm_node_hsw *drm_mm_get_block_range_generic_hsw( + struct drm_mm_node_hsw *node, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + int atomic); +static inline struct drm_mm_node_hsw *drm_mm_get_block_hsw(struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment) +{ + return drm_mm_get_block_generic_hsw(parent, size, alignment, 0, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_atomic_hsw(struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment) +{ + return drm_mm_get_block_generic_hsw(parent, size, alignment, 0, 1); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, 0, + start, end, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_color_block_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, color, + start, end, 0); +} +static inline struct drm_mm_node_hsw *drm_mm_get_block_atomic_range_hsw( + struct drm_mm_node_hsw *parent, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end) +{ + return drm_mm_get_block_range_generic_hsw(parent, size, alignment, 0, + start, end, 1); +} +extern int drm_mm_insert_node_hsw(struct drm_mm_hsw *mm, struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment); +extern int drm_mm_insert_node_in_range_hsw(struct drm_mm_hsw *mm, + struct drm_mm_node_hsw *node, + unsigned long size, unsigned alignment, + unsigned long start, unsigned long end); +extern void drm_mm_put_block_hsw(struct drm_mm_node_hsw *cur); +extern void drm_mm_remove_node_hsw(struct drm_mm_node_hsw *node); +extern void drm_mm_replace_node_hsw(struct drm_mm_node_hsw *old, struct drm_mm_node_hsw *new); +extern struct drm_mm_node_hsw *drm_mm_search_free_generic_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match); +extern struct drm_mm_node_hsw *drm_mm_search_free_in_range_generic_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match); +static inline struct drm_mm_node_hsw *drm_mm_search_free_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + bool best_match) +{ + return drm_mm_search_free_generic_hsw(mm,size, alignment, 0, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_in_range_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long start, + unsigned long end, + bool best_match) +{ + return drm_mm_search_free_in_range_generic_hsw(mm, size, alignment, 0, + start, end, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_color_hsw(const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + bool best_match) +{ + return drm_mm_search_free_generic_hsw(mm,size, alignment, color, best_match); +} +static inline struct drm_mm_node_hsw *drm_mm_search_free_in_range_color_hsw( + const struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end, + bool best_match) +{ + return drm_mm_search_free_in_range_generic_hsw(mm, size, alignment, color, + start, end, best_match); +} +extern int drm_mm_init_hsw(struct drm_mm_hsw *mm, + unsigned long start, + unsigned long size); +extern void drm_mm_takedown_hsw(struct drm_mm_hsw *mm); +extern int drm_mm_clean_hsw(struct drm_mm_hsw *mm); +extern int drm_mm_pre_get_hsw(struct drm_mm_hsw *mm); + +static inline struct drm_mm_hsw *drm_get_mm_hsw(struct drm_mm_node_hsw *block) +{ + return block->mm; +} + +void drm_mm_init_scan_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color); +void drm_mm_init_scan_with_range_hsw(struct drm_mm_hsw *mm, + unsigned long size, + unsigned alignment, + unsigned long color, + unsigned long start, + unsigned long end); +int drm_mm_scan_add_block_hsw(struct drm_mm_node_hsw *node); +int drm_mm_scan_remove_block_hsw(struct drm_mm_node_hsw *node); + +extern void drm_mm_debug_table_hsw(struct drm_mm_hsw *mm, const char *prefix); +#ifdef CONFIG_DEBUG_FS +int drm_mm_dump_table_hsw(struct seq_file *m, struct drm_mm_hsw *mm); +#endif + +#endif --- linux-3.5.0.orig/include/drm/drm_crtc_helper.h +++ linux-3.5.0/include/drm/drm_crtc_helper.h @@ -137,6 +137,8 @@ extern void drm_helper_connector_dpms(struct drm_connector *connector, int mode); +extern void drm_helper_move_panel_connectors_to_head(struct drm_device *); + extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb, struct drm_mode_fb_cmd2 *mode_cmd); --- linux-3.5.0.orig/include/asm-generic/tlb.h +++ linux-3.5.0/include/asm-generic/tlb.h @@ -78,6 +78,14 @@ #define MAX_GATHER_BATCH \ ((PAGE_SIZE - sizeof(struct mmu_gather_batch)) / sizeof(void *)) +/* + * Limit the maximum number of mmu_gather batches to reduce a risk of soft + * lockups for non-preemptible kernels on huge machines when a lot of memory + * is zapped during unmapping. + * 10K pages freed at once should be safe even without a preemption point. + */ +#define MAX_GATHER_BATCH_COUNT (10000UL/MAX_GATHER_BATCH) + /* struct mmu_gather is an opaque type used by the mm code for passing around * any data needed by arch specific code for tlb_remove_page. */ @@ -94,6 +102,7 @@ struct mmu_gather_batch *active; struct mmu_gather_batch local; struct page *__pages[MMU_GATHER_BUNDLE]; + unsigned int batch_count; }; #define HAVE_GENERIC_MMU_GATHER --- linux-3.5.0.orig/include/asm-generic/mutex-xchg.h +++ linux-3.5.0/include/asm-generic/mutex-xchg.h @@ -26,7 +26,13 @@ __mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) { if (unlikely(atomic_xchg(count, 0) != 1)) - fail_fn(count); + /* + * We failed to acquire the lock, so mark it contended + * to ensure that any waiting tasks are woken up by the + * unlock slow path. + */ + if (likely(atomic_xchg(count, -1) != 1)) + fail_fn(count); } /** @@ -43,7 +49,8 @@ __mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) { if (unlikely(atomic_xchg(count, 0) != 1)) - return fail_fn(count); + if (likely(atomic_xchg(count, -1) != 1)) + return fail_fn(count); return 0; } --- linux-3.5.0.orig/include/asm-generic/vmlinux.lds.h +++ linux-3.5.0/include/asm-generic/vmlinux.lds.h @@ -626,6 +626,7 @@ *(.initcallearly.init) \ INIT_CALLS_LEVEL(0) \ INIT_CALLS_LEVEL(1) \ + INIT_CALLS_LEVEL(earlyrootfs) \ INIT_CALLS_LEVEL(2) \ INIT_CALLS_LEVEL(3) \ INIT_CALLS_LEVEL(4) \ --- linux-3.5.0.orig/mm/mempolicy.c +++ linux-3.5.0/mm/mempolicy.c @@ -607,6 +607,42 @@ return first; } +/* + * Apply policy to a single VMA + * This must be called with the mmap_sem held for writing. + */ +static int vma_replace_policy(struct vm_area_struct *vma, + struct mempolicy *pol) +{ + int err; + struct mempolicy *old; + struct mempolicy *new; + + pr_debug("vma %lx-%lx/%lx vm_ops %p vm_file %p set_policy %p\n", + vma->vm_start, vma->vm_end, vma->vm_pgoff, + vma->vm_ops, vma->vm_file, + vma->vm_ops ? vma->vm_ops->set_policy : NULL); + + new = mpol_dup(pol); + if (IS_ERR(new)) + return PTR_ERR(new); + + if (vma->vm_ops && vma->vm_ops->set_policy) { + err = vma->vm_ops->set_policy(vma, new); + if (err) + goto err_out; + } + + old = vma->vm_policy; + vma->vm_policy = new; /* protected by mmap_sem */ + mpol_put(old); + + return 0; + err_out: + mpol_put(new); + return err; +} + /* Step 2: apply policy to a range and do splits. */ static int mbind_range(struct mm_struct *mm, unsigned long start, unsigned long end, struct mempolicy *new_pol) @@ -655,23 +691,9 @@ if (err) goto out; } - - /* - * Apply policy to a single VMA. The reference counting of - * policy for vma_policy linkages has already been handled by - * vma_merge and split_vma as necessary. If this is a shared - * policy then ->set_policy will increment the reference count - * for an sp node. - */ - pr_debug("vma %lx-%lx/%lx vm_ops %p vm_file %p set_policy %p\n", - vma->vm_start, vma->vm_end, vma->vm_pgoff, - vma->vm_ops, vma->vm_file, - vma->vm_ops ? vma->vm_ops->set_policy : NULL); - if (vma->vm_ops && vma->vm_ops->set_policy) { - err = vma->vm_ops->set_policy(vma, new_pol); - if (err) - goto out; - } + err = vma_replace_policy(vma, new_pol); + if (err) + goto out; } out: @@ -1530,8 +1552,18 @@ addr); if (vpol) pol = vpol; - } else if (vma->vm_policy) + } else if (vma->vm_policy) { pol = vma->vm_policy; + + /* + * shmem_alloc_page() passes MPOL_F_SHARED policy with + * a pseudo vma whose vma->vm_ops=NULL. Take a reference + * count on these policies which will be dropped by + * mpol_cond_put() later + */ + if (mpol_needs_cond_ref(pol)) + mpol_get(pol); + } } if (!pol) pol = &default_policy; @@ -1997,28 +2029,6 @@ return new; } -/* - * If *frompol needs [has] an extra ref, copy *frompol to *tompol , - * eliminate the * MPOL_F_* flags that require conditional ref and - * [NOTE!!!] drop the extra ref. Not safe to reference *frompol directly - * after return. Use the returned value. - * - * Allows use of a mempolicy for, e.g., multiple allocations with a single - * policy lookup, even if the policy needs/has extra ref on lookup. - * shmem_readahead needs this. - */ -struct mempolicy *__mpol_cond_copy(struct mempolicy *tompol, - struct mempolicy *frompol) -{ - if (!mpol_needs_cond_ref(frompol)) - return frompol; - - *tompol = *frompol; - tompol->flags &= ~MPOL_F_SHARED; /* copy doesn't need unref */ - __mpol_put(frompol); - return tompol; -} - /* Slow path of a mempolicy comparison */ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b) { @@ -2055,7 +2065,7 @@ */ /* lookup first element intersecting start-end */ -/* Caller holds sp->lock */ +/* Caller holds sp->mutex */ static struct sp_node * sp_lookup(struct shared_policy *sp, unsigned long start, unsigned long end) { @@ -2119,36 +2129,50 @@ if (!sp->root.rb_node) return NULL; - spin_lock(&sp->lock); + mutex_lock(&sp->mutex); sn = sp_lookup(sp, idx, idx+1); if (sn) { mpol_get(sn->policy); pol = sn->policy; } - spin_unlock(&sp->lock); + mutex_unlock(&sp->mutex); return pol; } +static void sp_free(struct sp_node *n) +{ + mpol_put(n->policy); + kmem_cache_free(sn_cache, n); +} + static void sp_delete(struct shared_policy *sp, struct sp_node *n) { pr_debug("deleting %lx-l%lx\n", n->start, n->end); rb_erase(&n->nd, &sp->root); - mpol_put(n->policy); - kmem_cache_free(sn_cache, n); + sp_free(n); } static struct sp_node *sp_alloc(unsigned long start, unsigned long end, struct mempolicy *pol) { - struct sp_node *n = kmem_cache_alloc(sn_cache, GFP_KERNEL); + struct sp_node *n; + struct mempolicy *newpol; + n = kmem_cache_alloc(sn_cache, GFP_KERNEL); if (!n) return NULL; + + newpol = mpol_dup(pol); + if (IS_ERR(newpol)) { + kmem_cache_free(sn_cache, n); + return NULL; + } + newpol->flags |= MPOL_F_SHARED; + n->start = start; n->end = end; - mpol_get(pol); - pol->flags |= MPOL_F_SHARED; /* for unref */ - n->policy = pol; + n->policy = newpol; + return n; } @@ -2156,10 +2180,10 @@ static int shared_policy_replace(struct shared_policy *sp, unsigned long start, unsigned long end, struct sp_node *new) { - struct sp_node *n, *new2 = NULL; + struct sp_node *n; + int ret = 0; -restart: - spin_lock(&sp->lock); + mutex_lock(&sp->mutex); n = sp_lookup(sp, start, end); /* Take care of old policies in the same range. */ while (n && n->start < end) { @@ -2172,16 +2196,14 @@ } else { /* Old policy spanning whole new range. */ if (n->end > end) { + struct sp_node *new2; + new2 = sp_alloc(end, n->end, n->policy); if (!new2) { - spin_unlock(&sp->lock); - new2 = sp_alloc(end, n->end, n->policy); - if (!new2) - return -ENOMEM; - goto restart; + ret = -ENOMEM; + goto out; } n->end = start; sp_insert(sp, new2); - new2 = NULL; break; } else n->end = start; @@ -2192,12 +2214,9 @@ } if (new) sp_insert(sp, new); - spin_unlock(&sp->lock); - if (new2) { - mpol_put(new2->policy); - kmem_cache_free(sn_cache, new2); - } - return 0; +out: + mutex_unlock(&sp->mutex); + return ret; } /** @@ -2215,7 +2234,7 @@ int ret; sp->root = RB_ROOT; /* empty tree == default mempolicy */ - spin_lock_init(&sp->lock); + mutex_init(&sp->mutex); if (mpol) { struct vm_area_struct pvma; @@ -2269,7 +2288,7 @@ } err = shared_policy_replace(info, vma->vm_pgoff, vma->vm_pgoff+sz, new); if (err && new) - kmem_cache_free(sn_cache, new); + sp_free(new); return err; } @@ -2281,16 +2300,14 @@ if (!p->root.rb_node) return; - spin_lock(&p->lock); + mutex_lock(&p->mutex); next = rb_first(&p->root); while (next) { n = rb_entry(next, struct sp_node, nd); next = rb_next(&n->nd); - rb_erase(&n->nd, &p->root); - mpol_put(n->policy); - kmem_cache_free(sn_cache, n); + sp_delete(p, n); } - spin_unlock(&p->lock); + mutex_unlock(&p->mutex); } /* assumes fs == KERNEL_DS */ @@ -2347,8 +2364,7 @@ */ /* - * "local" is pseudo-policy: MPOL_PREFERRED with MPOL_F_LOCAL flag - * Used only for mpol_parse_str() and mpol_to_str() + * "local" is implemented internally by MPOL_PREFERRED with MPOL_F_LOCAL flag. */ #define MPOL_LOCAL MPOL_MAX static const char * const policy_modes[] = @@ -2363,28 +2379,21 @@ #ifdef CONFIG_TMPFS /** - * mpol_parse_str - parse string to mempolicy + * mpol_parse_str - parse string to mempolicy, for tmpfs mpol mount option. * @str: string containing mempolicy to parse * @mpol: pointer to struct mempolicy pointer, returned on success. - * @no_context: flag whether to "contextualize" the mempolicy + * @unused: redundant argument, to be removed later. * * Format of input: * [=][:] * - * if @no_context is true, save the input nodemask in w.user_nodemask in - * the returned mempolicy. This will be used to "clone" the mempolicy in - * a specific context [cpuset] at a later time. Used to parse tmpfs mpol - * mount option. Note that if 'static' or 'relative' mode flags were - * specified, the input nodemask will already have been saved. Saving - * it again is redundant, but safe. - * * On success, returns 0, else 1 */ -int mpol_parse_str(char *str, struct mempolicy **mpol, int no_context) +int mpol_parse_str(char *str, struct mempolicy **mpol, int unused) { struct mempolicy *new = NULL; unsigned short mode; - unsigned short uninitialized_var(mode_flags); + unsigned short mode_flags; nodemask_t nodes; char *nodelist = strchr(str, ':'); char *flags = strchr(str, '='); @@ -2472,24 +2481,23 @@ if (IS_ERR(new)) goto out; - if (no_context) { - /* save for contextualization */ - new->w.user_nodemask = nodes; - } else { - int ret; - NODEMASK_SCRATCH(scratch); - if (scratch) { - task_lock(current); - ret = mpol_set_nodemask(new, &nodes, scratch); - task_unlock(current); - } else - ret = -ENOMEM; - NODEMASK_SCRATCH_FREE(scratch); - if (ret) { - mpol_put(new); - goto out; - } - } + /* + * Save nodes for mpol_to_str() to show the tmpfs mount options + * for /proc/mounts, /proc/pid/mounts and /proc/pid/mountinfo. + */ + if (mode != MPOL_PREFERRED) + new->v.nodes = nodes; + else if (nodelist) + new->v.preferred_node = first_node(nodes); + else + new->flags |= MPOL_F_LOCAL; + + /* + * Save nodes for contextualization: this will be used to "clone" + * the mempolicy in a specific context [cpuset] at a later time. + */ + new->w.user_nodemask = nodes; + err = 0; out: @@ -2509,13 +2517,13 @@ * @buffer: to contain formatted mempolicy string * @maxlen: length of @buffer * @pol: pointer to mempolicy to be formatted - * @no_context: "context free" mempolicy - use nodemask in w.user_nodemask + * @unused: redundant argument, to be removed later. * * Convert a mempolicy into a string. * Returns the number of characters in buffer (if positive) * or an error (negative) */ -int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, int no_context) +int mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol, int unused) { char *p = buffer; int l; @@ -2541,7 +2549,7 @@ case MPOL_PREFERRED: nodes_clear(nodes); if (flags & MPOL_F_LOCAL) - mode = MPOL_LOCAL; /* pseudo-policy */ + mode = MPOL_LOCAL; else node_set(pol->v.preferred_node, nodes); break; @@ -2549,14 +2557,11 @@ case MPOL_BIND: /* Fall through */ case MPOL_INTERLEAVE: - if (no_context) - nodes = pol->w.user_nodemask; - else - nodes = pol->v.nodes; + nodes = pol->v.nodes; break; default: - BUG(); + return -EINVAL; } l = strlen(policy_modes[mode]); --- linux-3.5.0.orig/mm/slab.c +++ linux-3.5.0/mm/slab.c @@ -1685,9 +1685,6 @@ g_cpucache_up = LATE; - /* Annotate slab for lockdep -- annotate the malloc caches */ - init_lock_keys(); - /* 6) resize the head arrays to their final sizes */ mutex_lock(&cache_chain_mutex); list_for_each_entry(cachep, &cache_chain, next) @@ -1695,6 +1692,9 @@ BUG(); mutex_unlock(&cache_chain_mutex); + /* Annotate slab for lockdep -- annotate the malloc caches */ + init_lock_keys(); + /* Done! */ g_cpucache_up = FULL; --- linux-3.5.0.orig/mm/bootmem.c +++ linux-3.5.0/mm/bootmem.c @@ -185,10 +185,23 @@ while (start < end) { unsigned long *map, idx, vec; + unsigned shift; map = bdata->node_bootmem_map; idx = start - bdata->node_min_pfn; + shift = idx & (BITS_PER_LONG - 1); + /* + * vec holds at most BITS_PER_LONG map bits, + * bit 0 corresponds to start. + */ vec = ~map[idx / BITS_PER_LONG]; + + if (shift) { + vec >>= shift; + if (end - start >= BITS_PER_LONG) + vec |= ~map[idx / BITS_PER_LONG + 1] << + (BITS_PER_LONG - shift); + } /* * If we have a properly aligned and fully unreserved * BITS_PER_LONG block of pages in front of us, free @@ -201,19 +214,18 @@ count += BITS_PER_LONG; start += BITS_PER_LONG; } else { - unsigned long off = 0; + unsigned long cur = start; - vec >>= start & (BITS_PER_LONG - 1); - while (vec) { + start = ALIGN(start + 1, BITS_PER_LONG); + while (vec && cur != start) { if (vec & 1) { - page = pfn_to_page(start + off); + page = pfn_to_page(cur); __free_pages_bootmem(page, 0); count++; } vec >>= 1; - off++; + ++cur; } - start = ALIGN(start + 1, BITS_PER_LONG); } } --- linux-3.5.0.orig/mm/mmu_notifier.c +++ linux-3.5.0/mm/mmu_notifier.c @@ -14,10 +14,14 @@ #include #include #include +#include #include #include #include +/* global SRCU for all MMs */ +static struct srcu_struct srcu; + /* * This function can't run concurrently against mmu_notifier_register * because mm->mm_users > 0 during mmu_notifier_register and exit_mmap @@ -25,57 +29,61 @@ * in parallel despite there being no task using this mm any more, * through the vmas outside of the exit_mmap context, such as with * vmtruncate. This serializes against mmu_notifier_unregister with - * the mmu_notifier_mm->lock in addition to RCU and it serializes - * against the other mmu notifiers with RCU. struct mmu_notifier_mm + * the mmu_notifier_mm->lock in addition to SRCU and it serializes + * against the other mmu notifiers with SRCU. struct mmu_notifier_mm * can't go away from under us as exit_mmap holds an mm_count pin * itself. */ void __mmu_notifier_release(struct mm_struct *mm) { struct mmu_notifier *mn; + int id; + /* + * srcu_read_lock() here will block synchronize_srcu() in + * mmu_notifier_unregister() until all registered + * ->release() callouts this function makes have + * returned. + */ + id = srcu_read_lock(&srcu); spin_lock(&mm->mmu_notifier_mm->lock); while (unlikely(!hlist_empty(&mm->mmu_notifier_mm->list))) { mn = hlist_entry(mm->mmu_notifier_mm->list.first, struct mmu_notifier, hlist); + /* - * We arrived before mmu_notifier_unregister so - * mmu_notifier_unregister will do nothing other than - * to wait ->release to finish and - * mmu_notifier_unregister to return. + * Unlink. This will prevent mmu_notifier_unregister() + * from also making the ->release() callout. */ hlist_del_init_rcu(&mn->hlist); - /* - * RCU here will block mmu_notifier_unregister until - * ->release returns. - */ - rcu_read_lock(); spin_unlock(&mm->mmu_notifier_mm->lock); + /* - * if ->release runs before mmu_notifier_unregister it - * must be handled as it's the only way for the driver - * to flush all existing sptes and stop the driver - * from establishing any more sptes before all the - * pages in the mm are freed. + * Clear sptes. (see 'release' description in mmu_notifier.h) */ if (mn->ops->release) mn->ops->release(mn, mm); - rcu_read_unlock(); + spin_lock(&mm->mmu_notifier_mm->lock); } spin_unlock(&mm->mmu_notifier_mm->lock); /* - * synchronize_rcu here prevents mmu_notifier_release to - * return to exit_mmap (which would proceed freeing all pages - * in the mm) until the ->release method returns, if it was - * invoked by mmu_notifier_unregister. - * - * The mmu_notifier_mm can't go away from under us because one - * mm_count is hold by exit_mmap. + * All callouts to ->release() which we have done are complete. + * Allow synchronize_srcu() in mmu_notifier_unregister() to complete + */ + srcu_read_unlock(&srcu, id); + + /* + * mmu_notifier_unregister() may have unlinked a notifier and may + * still be calling out to it. Additionally, other notifiers + * may have been active via vmtruncate() et. al. Block here + * to ensure that all notifier callouts for this mm have been + * completed and the sptes are really cleaned up before returning + * to exit_mmap(). */ - synchronize_rcu(); + synchronize_srcu(&srcu); } /* @@ -88,14 +96,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; - int young = 0; + int young = 0, id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->clear_flush_young) young |= mn->ops->clear_flush_young(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); return young; } @@ -105,9 +113,9 @@ { struct mmu_notifier *mn; struct hlist_node *n; - int young = 0; + int young = 0, id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->test_young) { young = mn->ops->test_young(mn, mm, address); @@ -115,7 +123,7 @@ break; } } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); return young; } @@ -125,8 +133,9 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->change_pte) mn->ops->change_pte(mn, mm, address, pte); @@ -137,7 +146,7 @@ else if (mn->ops->invalidate_page) mn->ops->invalidate_page(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_page(struct mm_struct *mm, @@ -145,13 +154,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_page) mn->ops->invalidate_page(mn, mm, address); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_range_start(struct mm_struct *mm, @@ -159,13 +169,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_start) mn->ops->invalidate_range_start(mn, mm, start, end); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } void __mmu_notifier_invalidate_range_end(struct mm_struct *mm, @@ -173,13 +184,14 @@ { struct mmu_notifier *mn; struct hlist_node *n; + int id; - rcu_read_lock(); + id = srcu_read_lock(&srcu); hlist_for_each_entry_rcu(mn, n, &mm->mmu_notifier_mm->list, hlist) { if (mn->ops->invalidate_range_end) mn->ops->invalidate_range_end(mn, mm, start, end); } - rcu_read_unlock(); + srcu_read_unlock(&srcu, id); } static int do_mmu_notifier_register(struct mmu_notifier *mn, @@ -191,6 +203,12 @@ BUG_ON(atomic_read(&mm->mm_users) <= 0); + /* + * Verify that mmu_notifier_init() already run and the global srcu is + * initialized. + */ + BUG_ON(!srcu.per_cpu_ref); + ret = -ENOMEM; mmu_notifier_mm = kmalloc(sizeof(struct mmu_notifier_mm), GFP_KERNEL); if (unlikely(!mmu_notifier_mm)) @@ -273,8 +291,8 @@ /* * This releases the mm_count pin automatically and frees the mm * structure if it was the last user of it. It serializes against - * running mmu notifiers with RCU and against mmu_notifier_unregister - * with the unregister lock + RCU. All sptes must be dropped before + * running mmu notifiers with SRCU and against mmu_notifier_unregister + * with the unregister lock + SRCU. All sptes must be dropped before * calling mmu_notifier_unregister. ->release or any other notifier * method may be invoked concurrently with mmu_notifier_unregister, * and only after mmu_notifier_unregister returned we're guaranteed @@ -286,33 +304,41 @@ spin_lock(&mm->mmu_notifier_mm->lock); if (!hlist_unhashed(&mn->hlist)) { - hlist_del_rcu(&mn->hlist); + int id; /* - * RCU here will force exit_mmap to wait ->release to finish - * before freeing the pages. + * Ensure we synchronize up with __mmu_notifier_release(). */ - rcu_read_lock(); + id = srcu_read_lock(&srcu); + + hlist_del_rcu(&mn->hlist); spin_unlock(&mm->mmu_notifier_mm->lock); - /* - * exit_mmap will block in mmu_notifier_release to - * guarantee ->release is called before freeing the - * pages. - */ + if (mn->ops->release) mn->ops->release(mn, mm); - rcu_read_unlock(); + + /* + * Allow __mmu_notifier_release() to complete. + */ + srcu_read_unlock(&srcu, id); } else spin_unlock(&mm->mmu_notifier_mm->lock); /* - * Wait any running method to finish, of course including - * ->release if it was run by mmu_notifier_relase instead of us. + * Wait for any running method to finish, including ->release() if it + * was run by __mmu_notifier_release() instead of us. */ - synchronize_rcu(); + synchronize_srcu(&srcu); BUG_ON(atomic_read(&mm->mm_count) <= 0); mmdrop(mm); } EXPORT_SYMBOL_GPL(mmu_notifier_unregister); + +static int __init mmu_notifier_init(void) +{ + return init_srcu_struct(&srcu); +} + +module_init(mmu_notifier_init); --- linux-3.5.0.orig/mm/memblock.c +++ linux-3.5.0/mm/memblock.c @@ -928,6 +928,30 @@ return memblock_overlaps_region(&memblock.reserved, base, size) >= 0; } +void __init_memblock memblock_trim_memory(phys_addr_t align) +{ + int i; + phys_addr_t start, end, orig_start, orig_end; + struct memblock_type *mem = &memblock.memory; + + for (i = 0; i < mem->cnt; i++) { + orig_start = mem->regions[i].base; + orig_end = mem->regions[i].base + mem->regions[i].size; + start = round_up(orig_start, align); + end = round_down(orig_end, align); + + if (start == orig_start && end == orig_end) + continue; + + if (start < end) { + mem->regions[i].base = start; + mem->regions[i].size = end - start; + } else { + memblock_remove_region(mem, i); + i--; + } + } +} void __init_memblock memblock_set_current_limit(phys_addr_t limit) { --- linux-3.5.0.orig/mm/dmapool.c +++ linux-3.5.0/mm/dmapool.c @@ -50,7 +50,6 @@ size_t allocation; size_t boundary; char name[32]; - wait_queue_head_t waitq; struct list_head pools; }; @@ -62,8 +61,6 @@ unsigned int offset; }; -#define POOL_TIMEOUT_JIFFIES ((100 /* msec */ * HZ) / 1000) - static DEFINE_MUTEX(pools_lock); static ssize_t @@ -172,7 +169,6 @@ retval->size = size; retval->boundary = boundary; retval->allocation = allocation; - init_waitqueue_head(&retval->waitq); if (dev) { int ret; @@ -227,7 +223,6 @@ memset(page->vaddr, POOL_POISON_FREED, pool->allocation); #endif pool_initialise_page(pool, page); - list_add(&page->page_list, &pool->page_list); page->in_use = 0; page->offset = 0; } else { @@ -315,30 +310,21 @@ might_sleep_if(mem_flags & __GFP_WAIT); spin_lock_irqsave(&pool->lock, flags); - restart: list_for_each_entry(page, &pool->page_list, page_list) { if (page->offset < pool->allocation) goto ready; } - page = pool_alloc_page(pool, GFP_ATOMIC); - if (!page) { - if (mem_flags & __GFP_WAIT) { - DECLARE_WAITQUEUE(wait, current); - __set_current_state(TASK_UNINTERRUPTIBLE); - __add_wait_queue(&pool->waitq, &wait); - spin_unlock_irqrestore(&pool->lock, flags); + /* pool_alloc_page() might sleep, so temporarily drop &pool->lock */ + spin_unlock_irqrestore(&pool->lock, flags); - schedule_timeout(POOL_TIMEOUT_JIFFIES); + page = pool_alloc_page(pool, mem_flags); + if (!page) + return NULL; - spin_lock_irqsave(&pool->lock, flags); - __remove_wait_queue(&pool->waitq, &wait); - goto restart; - } - retval = NULL; - goto done; - } + spin_lock_irqsave(&pool->lock, flags); + list_add(&page->page_list, &pool->page_list); ready: page->in_use++; offset = page->offset; @@ -348,7 +334,6 @@ #ifdef DMAPOOL_DEBUG memset(retval, POOL_POISON_ALLOCATED, pool->size); #endif - done: spin_unlock_irqrestore(&pool->lock, flags); return retval; } @@ -435,8 +420,6 @@ page->in_use--; *(int *)vaddr = page->offset; page->offset = offset; - if (waitqueue_active(&pool->waitq)) - wake_up_locked(&pool->waitq); /* * Resist a temptation to do * if (!is_page_busy(page)) pool_free_page(pool, page); --- linux-3.5.0.orig/mm/rmap.c +++ linux-3.5.0/mm/rmap.c @@ -56,6 +56,7 @@ #include #include #include +#include #include @@ -971,11 +972,8 @@ if (page_mapped(page)) { struct address_space *mapping = page_mapping(page); - if (mapping) { + if (mapping) ret = page_mkclean_file(mapping, page); - if (page_test_and_clear_dirty(page_to_pfn(page), 1)) - ret = 1; - } } return ret; @@ -1161,6 +1159,7 @@ */ void page_remove_rmap(struct page *page) { + struct address_space *mapping = page_mapping(page); bool anon = PageAnon(page); bool locked; unsigned long flags; @@ -1183,8 +1182,19 @@ * this if the page is anon, so about to be freed; but perhaps * not if it's in swapcache - there might be another pte slot * containing the swap entry, but page not yet written to swap. + * + * And we can skip it on file pages, so long as the filesystem + * participates in dirty tracking; but need to catch shm and tmpfs + * and ramfs pages which have been modified since creation by read + * fault. + * + * Note that mapping must be decided above, before decrementing + * mapcount (which luckily provides a barrier): once page is unmapped, + * it could be truncated and page->mapping reset to NULL at any moment. + * Note also that we are relying on page_mapping(page) to set mapping + * to &swapper_space when PageSwapCache(page). */ - if ((!anon || PageSwapCache(page)) && + if (mapping && !mapping_cap_account_dirty(mapping) && page_test_and_clear_dirty(page_to_pfn(page), 1)) set_page_dirty(page); /* --- linux-3.5.0.orig/mm/sparse.c +++ linux-3.5.0/mm/sparse.c @@ -493,6 +493,9 @@ struct page **map_map; #endif + /* Setup pageblock_order for HUGETLB_PAGE_SIZE_VARIABLE */ + set_pageblock_order(); + /* * map is using big page (aka 2M in x86 64 bit) * usemap is less one page (aka 24 bytes) @@ -626,7 +629,7 @@ { return; /* XXX: Not implemented yet */ } -static void free_map_bootmem(struct page *page, unsigned long nr_pages) +static void free_map_bootmem(struct page *memmap, unsigned long nr_pages) { } #else @@ -667,10 +670,11 @@ get_order(sizeof(struct page) * nr_pages)); } -static void free_map_bootmem(struct page *page, unsigned long nr_pages) +static void free_map_bootmem(struct page *memmap, unsigned long nr_pages) { unsigned long maps_section_nr, removing_section_nr, i; unsigned long magic; + struct page *page = virt_to_page(memmap); for (i = 0; i < nr_pages; i++, page++) { magic = (unsigned long) page->lru.next; @@ -719,13 +723,10 @@ */ if (memmap) { - struct page *memmap_page; - memmap_page = virt_to_page(memmap); - nr_pages = PAGE_ALIGN(PAGES_PER_SECTION * sizeof(struct page)) >> PAGE_SHIFT; - free_map_bootmem(memmap_page, nr_pages); + free_map_bootmem(memmap, nr_pages); } } --- linux-3.5.0.orig/mm/page_alloc.c +++ linux-3.5.0/mm/page_alloc.c @@ -580,7 +580,7 @@ combined_idx = buddy_idx & page_idx; higher_page = page + (combined_idx - page_idx); buddy_idx = __find_buddy_index(combined_idx, order + 1); - higher_buddy = page + (buddy_idx - combined_idx); + higher_buddy = higher_page + (buddy_idx - combined_idx); if (page_is_buddy(higher_page, higher_buddy, order + 1)) { list_add_tail(&page->lru, &zone->free_area[order].free_list[migratetype]); @@ -4272,10 +4272,11 @@ * round what is now in bits to nearest long in bits, then return it in * bytes. */ -static unsigned long __init usemap_size(unsigned long zonesize) +static unsigned long __init usemap_size(unsigned long zone_start_pfn, unsigned long zonesize) { unsigned long usemapsize; + zonesize += zone_start_pfn & (pageblock_nr_pages-1); usemapsize = roundup(zonesize, pageblock_nr_pages); usemapsize = usemapsize >> pageblock_order; usemapsize *= NR_PAGEBLOCK_BITS; @@ -4285,23 +4286,25 @@ } static void __init setup_usemap(struct pglist_data *pgdat, - struct zone *zone, unsigned long zonesize) + struct zone *zone, + unsigned long zone_start_pfn, + unsigned long zonesize) { - unsigned long usemapsize = usemap_size(zonesize); + unsigned long usemapsize = usemap_size(zone_start_pfn, zonesize); zone->pageblock_flags = NULL; if (usemapsize) zone->pageblock_flags = alloc_bootmem_node_nopanic(pgdat, usemapsize); } #else -static inline void setup_usemap(struct pglist_data *pgdat, - struct zone *zone, unsigned long zonesize) {} +static inline void setup_usemap(struct pglist_data *pgdat, struct zone *zone, + unsigned long zone_start_pfn, unsigned long zonesize) {} #endif /* CONFIG_SPARSEMEM */ #ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE /* Initialise the number of pages represented by NR_PAGEBLOCK_BITS */ -static inline void __init set_pageblock_order(void) +void __init set_pageblock_order(void) { unsigned int order; @@ -4329,7 +4332,7 @@ * include/linux/pageblock-flags.h for the values of pageblock_order based on * the kernel config */ -static inline void set_pageblock_order(void) +void __init set_pageblock_order(void) { } @@ -4407,14 +4410,14 @@ zone->zone_pgdat = pgdat; zone_pcp_init(zone); - lruvec_init(&zone->lruvec, zone); + lruvec_init(&zone->lruvec); zap_zone_vm_stats(zone); zone->flags = 0; if (!size) continue; set_pageblock_order(); - setup_usemap(pgdat, zone, size); + setup_usemap(pgdat, zone, zone_start_pfn, size); ret = init_currently_empty_zone(zone, zone_start_pfn, size, MEMMAP_EARLY); BUG_ON(ret); @@ -5405,7 +5408,7 @@ pfn &= (PAGES_PER_SECTION-1); return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #else - pfn = pfn - zone->zone_start_pfn; + pfn = pfn - round_down(zone->zone_start_pfn, pageblock_nr_pages); return (pfn >> pageblock_order) * NR_PAGEBLOCK_BITS; #endif /* CONFIG_SPARSEMEM */ } @@ -5975,6 +5978,7 @@ #ifdef CONFIG_TRANSPARENT_HUGEPAGE {1UL << PG_compound_lock, "compound_lock" }, #endif + {1UL << PG_readaheadunused, "readaheadunused"}, }; static void dump_page_flags(unsigned long flags) --- linux-3.5.0.orig/mm/migrate.c +++ linux-3.5.0/mm/migrate.c @@ -142,8 +142,10 @@ if (is_write_migration_entry(entry)) pte = pte_mkwrite(pte); #ifdef CONFIG_HUGETLB_PAGE - if (PageHuge(new)) + if (PageHuge(new)) { pte = pte_mkhuge(pte); + pte = arch_make_huge_pte(pte, vma, new, 0); + } #endif flush_cache_page(vma, addr, pte_pfn(pte)); set_pte_at(mm, addr, ptep, pte); --- linux-3.5.0.orig/mm/fadvise.c +++ linux-3.5.0/mm/fadvise.c @@ -17,6 +17,7 @@ #include #include #include +#include #include @@ -124,9 +125,22 @@ start_index = (offset+(PAGE_CACHE_SIZE-1)) >> PAGE_CACHE_SHIFT; end_index = (endbyte >> PAGE_CACHE_SHIFT); - if (end_index >= start_index) - invalidate_mapping_pages(mapping, start_index, + if (end_index >= start_index) { + unsigned long count = invalidate_mapping_pages(mapping, + start_index, end_index); + + /* + * If fewer pages were invalidated than expected then + * it is possible that some of the pages were on + * a per-cpu pagevec for a remote CPU. Drain all + * pagevecs and try again. + */ + if (count < (end_index - start_index + 1)) { + lru_add_drain_all(); + invalidate_mapping_pages(mapping, start_index, end_index); + } + } break; default: ret = -EINVAL; --- linux-3.5.0.orig/mm/page-writeback.c +++ linux-3.5.0/mm/page-writeback.c @@ -187,6 +187,18 @@ zone_reclaimable_pages(z) - z->dirty_balance_reserve; } /* + * Unreclaimable memory (kernel memory or anonymous memory + * without swap) can bring down the dirtyable pages below + * the zone's dirty balance reserve and the above calculation + * will underflow. However we still want to add in nodes + * which are below threshold (negative values) to get a more + * accurate calculation but make sure that the total never + * underflows. + */ + if ((long)x < 0) + x = 0; + + /* * Make sure that the number of highmem pages is never larger * than the number of the total dirtyable memory. This can only * occur in very strange VM situations but we want to make sure @@ -208,8 +220,8 @@ { unsigned long x; - x = global_page_state(NR_FREE_PAGES) + global_reclaimable_pages() - - dirty_balance_reserve; + x = global_page_state(NR_FREE_PAGES) + global_reclaimable_pages(); + x -= min(x, dirty_balance_reserve); if (!vm_highmem_is_dirtyable) x -= highmem_dirtyable_memory(x); @@ -276,9 +288,12 @@ * highmem zone can hold its share of dirty pages, so we don't * care about vm_highmem_is_dirtyable here. */ - return zone_page_state(zone, NR_FREE_PAGES) + - zone_reclaimable_pages(zone) - - zone->dirty_balance_reserve; + unsigned long nr_pages = zone_page_state(zone, NR_FREE_PAGES) + + zone_reclaimable_pages(zone); + + /* don't allow this to underflow */ + nr_pages -= min(nr_pages, zone->dirty_balance_reserve); + return nr_pages; } /** --- linux-3.5.0.orig/mm/mmzone.c +++ linux-3.5.0/mm/mmzone.c @@ -87,7 +87,7 @@ } #endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */ -void lruvec_init(struct lruvec *lruvec, struct zone *zone) +void lruvec_init(struct lruvec *lruvec) { enum lru_list lru; @@ -95,8 +95,4 @@ for_each_lru(lru) INIT_LIST_HEAD(&lruvec->lists[lru]); - -#ifdef CONFIG_CGROUP_MEM_RES_CTLR - lruvec->zone = zone; -#endif } --- linux-3.5.0.orig/mm/readahead.c +++ linux-3.5.0/mm/readahead.c @@ -189,6 +189,7 @@ list_add(&page->lru, &page_pool); if (page_idx == nr_to_read - lookahead_size) SetPageReadahead(page); + SetPageReadaheadUnused(page); ret++; } --- linux-3.5.0.orig/mm/mlock.c +++ linux-3.5.0/mm/mlock.c @@ -524,11 +524,11 @@ static int do_mlockall(int flags) { struct vm_area_struct * vma, * prev = NULL; - unsigned int def_flags = 0; if (flags & MCL_FUTURE) - def_flags = VM_LOCKED; - current->mm->def_flags = def_flags; + current->mm->def_flags |= VM_LOCKED; + else + current->mm->def_flags &= ~VM_LOCKED; if (flags == MCL_FUTURE) goto out; --- linux-3.5.0.orig/mm/hugetlb.c +++ linux-3.5.0/mm/hugetlb.c @@ -2393,6 +2393,22 @@ { mutex_lock(&vma->vm_file->f_mapping->i_mmap_mutex); __unmap_hugepage_range(vma, start, end, ref_page); + /* + * Clear this flag so that x86's huge_pmd_share page_table_shareable + * test will fail on a vma being torn down, and not grab a page table + * on its way out. We're lucky that the flag has such an appropriate + * name, and can in fact be safely cleared here. We could clear it + * before the __unmap_hugepage_range above, but all that's necessary + * is to clear it before releasing the i_mmap_mutex below. + * + * This works because in the contexts this is called, the VMA is + * going to be destroyed. It is not vunerable to madvise(DONTNEED) + * because madvise is not supported on hugetlbfs. The same applies + * for direct IO. unmap_hugepage_range() is only being called just + * before free_pgtables() so clearing VM_MAYSHARE will not cause + * surprises later. + */ + vma->vm_flags &= ~VM_MAYSHARE; mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); } @@ -2416,7 +2432,8 @@ * from page cache lookup which is in HPAGE_SIZE units. */ address = address & huge_page_mask(h); - pgoff = vma_hugecache_offset(h, vma, address); + pgoff = ((address - vma->vm_start) >> PAGE_SHIFT) + + vma->vm_pgoff; mapping = vma->vm_file->f_dentry->d_inode->i_mapping; /* @@ -2955,13 +2972,19 @@ if (!huge_pte_none(huge_ptep_get(ptep))) { pte = huge_ptep_get_and_clear(mm, address, ptep); pte = pte_mkhuge(pte_modify(pte, newprot)); + pte = arch_make_huge_pte(pte, vma, NULL, 0); set_huge_pte_at(mm, address, ptep, pte); } } spin_unlock(&mm->page_table_lock); - mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); - + /* + * Must flush TLB before releasing i_mmap_mutex: x86's huge_pmd_unshare + * may have cleared our pud entry and done put_page on the page table: + * once we release i_mmap_mutex, another task can do the final put_page + * and that page table be reused and filled with junk. + */ flush_tlb_range(vma, start, end); + mutex_unlock(&vma->vm_file->f_mapping->i_mmap_mutex); } int hugetlb_reserve_pages(struct inode *inode, --- linux-3.5.0.orig/mm/memory.c +++ linux-3.5.0/mm/memory.c @@ -182,10 +182,14 @@ return 1; } + if (tlb->batch_count == MAX_GATHER_BATCH_COUNT) + return 0; + batch = (void *)__get_free_pages(GFP_NOWAIT | __GFP_NOWARN, 0); if (!batch) return 0; + tlb->batch_count++; batch->next = NULL; batch->nr = 0; batch->max = MAX_GATHER_BATCH; @@ -212,6 +216,7 @@ tlb->local.nr = 0; tlb->local.max = ARRAY_SIZE(tlb->__pages); tlb->active = &tlb->local; + tlb->batch_count = 0; #ifdef CONFIG_HAVE_RCU_TABLE_FREE tlb->batch = NULL; @@ -3239,10 +3244,15 @@ else VM_BUG_ON(!PageLocked(vmf.page)); + page = vmf.page; + + /* Mark the page as used on fault. */ + if (PageReadaheadUnused(page)) + ClearPageReadaheadUnused(page); + /* * Should we do an early C-O-W break? */ - page = vmf.page; if (flags & FAULT_FLAG_WRITE) { if (!(vma->vm_flags & VM_SHARED)) { page = cow_page; --- linux-3.5.0.orig/mm/compaction.c +++ linux-3.5.0/mm/compaction.c @@ -843,7 +843,7 @@ } /* Compact all nodes in the system */ -static int compact_nodes(void) +static void compact_nodes(void) { int nid; @@ -852,8 +852,6 @@ for_each_online_node(nid) compact_node(nid); - - return COMPACT_COMPLETE; } /* The written value is actually unused, all memory is compacted */ @@ -864,7 +862,7 @@ void __user *buffer, size_t *length, loff_t *ppos) { if (write) - return compact_nodes(); + compact_nodes(); return 0; } --- linux-3.5.0.orig/mm/memory-failure.c +++ linux-3.5.0/mm/memory-failure.c @@ -345,14 +345,14 @@ * Also when FAIL is set do a force kill because something went * wrong earlier. */ -static void kill_procs(struct list_head *to_kill, int doit, int trapno, +static void kill_procs(struct list_head *to_kill, int forcekill, int trapno, int fail, struct page *page, unsigned long pfn, int flags) { struct to_kill *tk, *next; list_for_each_entry_safe (tk, next, to_kill, nd) { - if (doit) { + if (forcekill) { /* * In case something went wrong with munmapping * make sure the process doesn't catch the @@ -858,7 +858,7 @@ struct address_space *mapping; LIST_HEAD(tokill); int ret; - int kill = 1; + int kill = 1, forcekill; struct page *hpage = compound_head(p); struct page *ppage; @@ -888,7 +888,7 @@ * be called inside page lock (it's recommended but not enforced). */ mapping = page_mapping(hpage); - if (!PageDirty(hpage) && mapping && + if (!(flags & MF_MUST_KILL) && !PageDirty(hpage) && mapping && mapping_cap_writeback_dirty(mapping)) { if (page_mkclean(hpage)) { SetPageDirty(hpage); @@ -965,12 +965,14 @@ * Now that the dirty bit has been propagated to the * struct page and all unmaps done we can decide if * killing is needed or not. Only kill when the page - * was dirty, otherwise the tokill list is merely + * was dirty or the process is not restartable, + * otherwise the tokill list is merely * freed. When there was a problem unmapping earlier * use a more force-full uncatchable kill to prevent * any accesses to the poisoned memory. */ - kill_procs(&tokill, !!PageDirty(ppage), trapno, + forcekill = PageDirty(ppage) || (flags & MF_MUST_KILL); + kill_procs(&tokill, forcekill, trapno, ret != SWAP_SUCCESS, p, pfn, flags); return ret; @@ -1431,8 +1433,8 @@ /* Keep page count to indicate a given hugepage is isolated. */ list_add(&hpage->lru, &pagelist); - ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, 0, - true); + ret = migrate_huge_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, false, + MIGRATE_SYNC); if (ret) { struct page *page1, *page2; list_for_each_entry_safe(page1, page2, &pagelist, lru) @@ -1479,9 +1481,17 @@ { int ret; unsigned long pfn = page_to_pfn(page); + struct page *hpage = compound_trans_head(page); if (PageHuge(page)) return soft_offline_huge_page(page, flags); + if (PageTransHuge(hpage)) { + if (PageAnon(hpage) && unlikely(split_huge_page(hpage))) { + pr_info("soft offline: %#lx: failed to split THP\n", + pfn); + return -EBUSY; + } + } ret = get_any_page(page, pfn, flags); if (ret < 0) @@ -1561,7 +1571,7 @@ page_is_file_cache(page)); list_add(&page->lru, &pagelist); ret = migrate_pages(&pagelist, new_page, MPOL_MF_MOVE_ALL, - 0, MIGRATE_SYNC); + false, MIGRATE_SYNC); if (ret) { putback_lru_pages(&pagelist); pr_info("soft offline: %#lx: migration failed %d, type %lx\n", --- linux-3.5.0.orig/mm/vmscan.c +++ linux-3.5.0/mm/vmscan.c @@ -720,9 +720,41 @@ (PageSwapCache(page) && (sc->gfp_mask & __GFP_IO)); if (PageWriteback(page)) { - nr_writeback++; - unlock_page(page); - goto keep; + /* + * memcg doesn't have any dirty pages throttling so we + * could easily OOM just because too many pages are in + * writeback and there is nothing else to reclaim. + * + * Check __GFP_IO, certainly because a loop driver + * thread might enter reclaim, and deadlock if it waits + * on a page for which it is needed to do the write + * (loop masks off __GFP_IO|__GFP_FS for this reason); + * but more thought would probably show more reasons. + * + * Don't require __GFP_FS, since we're not going into + * the FS, just waiting on its writeback completion. + * Worryingly, ext4 gfs2 and xfs allocate pages with + * grab_cache_page_write_begin(,,AOP_FLAG_NOFS), so + * testing may_enter_fs here is liable to OOM on them. + */ + if (global_reclaim(sc) || + !PageReclaim(page) || !(sc->gfp_mask & __GFP_IO)) { + /* + * This is slightly racy - end_page_writeback() + * might have just cleared PageReclaim, then + * setting PageReclaim here end up interpreted + * as PageReadahead - but that does not matter + * enough to care. What we do want is for this + * page to have PageReclaim set next time memcg + * reclaim reaches the tests above, so it will + * then wait_on_page_writeback() to avoid OOM; + * and it's also appropriate in global reclaim. + */ + SetPageReclaim(page); + nr_writeback++; + goto keep_locked; + } + wait_on_page_writeback(page); } references = page_check_references(page, sc); @@ -2245,6 +2277,19 @@ } while (memcg); } +static bool zone_balanced(struct zone *zone, int order, + unsigned long balance_gap, int classzone_idx) +{ + if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone) + + balance_gap, classzone_idx, 0)) + return false; + + if (COMPACTION_BUILD && order && !compaction_suitable(zone, order)) + return false; + + return true; +} + /* * pgdat_balanced is used when checking if a node is balanced for high-order * allocations. Only zones that meet watermarks and are in a zone allowed @@ -2304,8 +2349,7 @@ continue; } - if (!zone_watermark_ok_safe(zone, order, high_wmark_pages(zone), - i, 0)) + if (!zone_balanced(zone, order, 0, i)) all_zones_ok = false; else balanced += zone->present_pages; @@ -2414,8 +2458,7 @@ break; } - if (!zone_watermark_ok_safe(zone, order, - high_wmark_pages(zone), 0, 0)) { + if (!zone_balanced(zone, order, 0, 0)) { end_zone = i; break; } else { @@ -2491,9 +2534,8 @@ testorder = 0; if ((buffer_heads_over_limit && is_highmem_idx(i)) || - !zone_watermark_ok_safe(zone, testorder, - high_wmark_pages(zone) + balance_gap, - end_zone, 0)) { + !zone_balanced(zone, testorder, + balance_gap, end_zone)) { shrink_zone(zone, &sc); reclaim_state->reclaimed_slab = 0; @@ -2520,8 +2562,7 @@ continue; } - if (!zone_watermark_ok_safe(zone, testorder, - high_wmark_pages(zone), end_zone, 0)) { + if (!zone_balanced(zone, testorder, 0, end_zone)) { all_zones_ok = 0; /* * We are still under min water mark. This @@ -2803,6 +2844,8 @@ &balanced_classzone_idx); } } + + current->reclaim_state = NULL; return 0; } --- linux-3.5.0.orig/mm/memory_hotplug.c +++ linux-3.5.0/mm/memory_hotplug.c @@ -126,9 +126,6 @@ struct mem_section *ms; struct page *page, *memmap; - if (!pfn_valid(start_pfn)) - return; - section_nr = pfn_to_section_nr(start_pfn); ms = __nr_to_section(section_nr); @@ -187,9 +184,16 @@ end_pfn = pfn + pgdat->node_spanned_pages; /* register_section info */ - for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) - register_page_bootmem_info_section(pfn); - + for (; pfn < end_pfn; pfn += PAGES_PER_SECTION) { + /* + * Some platforms can assign the same pfn to multiple nodes - on + * node0 as well as nodeN. To avoid registering a pfn against + * multiple nodes we check that this pfn does not already + * reside in some other node. + */ + if (pfn_valid(pfn) && (pfn_to_nid(pfn) == node)) + register_page_bootmem_info_section(pfn); + } } #endif /* !CONFIG_SPARSEMEM_VMEMMAP */ @@ -512,19 +516,20 @@ zone->present_pages += onlined_pages; zone->zone_pgdat->node_present_pages += onlined_pages; - if (need_zonelists_rebuild) - build_all_zonelists(zone); - else - zone_pcp_update(zone); + if (onlined_pages) { + node_set_state(zone_to_nid(zone), N_HIGH_MEMORY); + if (need_zonelists_rebuild) + build_all_zonelists(zone); + else + zone_pcp_update(zone); + } mutex_unlock(&zonelists_mutex); init_per_zone_wmark_min(); - if (onlined_pages) { + if (onlined_pages) kswapd_run(zone_to_nid(zone)); - node_set_state(zone_to_nid(zone), N_HIGH_MEMORY); - } vm_total_pages = nr_free_pagecache_pages(); --- linux-3.5.0.orig/mm/filemap.c +++ linux-3.5.0/mm/filemap.c @@ -1304,6 +1304,9 @@ if (size > count) size = count; + if (PageReadaheadUnused(page)) + ClearPageReadaheadUnused(page); + /* * Faults on the destination of a read are common, so do it before * taking the kmap. --- linux-3.5.0.orig/mm/memcontrol.c +++ linux-3.5.0/mm/memcontrol.c @@ -1060,12 +1060,24 @@ struct mem_cgroup *memcg) { struct mem_cgroup_per_zone *mz; + struct lruvec *lruvec; - if (mem_cgroup_disabled()) - return &zone->lruvec; + if (mem_cgroup_disabled()) { + lruvec = &zone->lruvec; + goto out; + } mz = mem_cgroup_zoneinfo(memcg, zone_to_nid(zone), zone_idx(zone)); - return &mz->lruvec; + lruvec = &mz->lruvec; +out: + /* + * Since a node can be onlined after the mem_cgroup was created, + * we have to be prepared to initialize lruvec->zone here; + * and if offlined then reonlined, we need to reinitialize it. + */ + if (unlikely(lruvec->zone != zone)) + lruvec->zone = zone; + return lruvec; } /* @@ -1092,9 +1104,12 @@ struct mem_cgroup_per_zone *mz; struct mem_cgroup *memcg; struct page_cgroup *pc; + struct lruvec *lruvec; - if (mem_cgroup_disabled()) - return &zone->lruvec; + if (mem_cgroup_disabled()) { + lruvec = &zone->lruvec; + goto out; + } pc = lookup_page_cgroup(page); memcg = pc->mem_cgroup; @@ -1112,7 +1127,16 @@ pc->mem_cgroup = memcg = root_mem_cgroup; mz = page_cgroup_zoneinfo(memcg, page); - return &mz->lruvec; + lruvec = &mz->lruvec; +out: + /* + * Since a node can be onlined after the mem_cgroup was created, + * we have to be prepared to initialize lruvec->zone here; + * and if offlined then reonlined, we need to reinitialize it. + */ + if (unlikely(lruvec->zone != zone)) + lruvec->zone = zone; + return lruvec; } /** @@ -1457,17 +1481,26 @@ u64 mem_cgroup_get_limit(struct mem_cgroup *memcg) { u64 limit; - u64 memsw; limit = res_counter_read_u64(&memcg->res, RES_LIMIT); - limit += total_swap_pages << PAGE_SHIFT; - memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); /* - * If memsw is finite and limits the amount of swap space available - * to this memcg, return that limit. + * Do not consider swap space if we cannot swap due to swappiness */ - return min(limit, memsw); + if (mem_cgroup_swappiness(memcg)) { + u64 memsw; + + limit += total_swap_pages << PAGE_SHIFT; + memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT); + + /* + * If memsw is finite and limits the amount of swap space + * available to this memcg, return that limit. + */ + limit = min(limit, memsw); + } + + return limit; } static unsigned long mem_cgroup_reclaim(struct mem_cgroup *memcg, @@ -3617,7 +3650,7 @@ static int mem_cgroup_force_empty_list(struct mem_cgroup *memcg, int node, int zid, enum lru_list lru) { - struct mem_cgroup_per_zone *mz; + struct lruvec *lruvec; unsigned long flags, loop; struct list_head *list; struct page *busy; @@ -3625,10 +3658,10 @@ int ret = 0; zone = &NODE_DATA(node)->node_zones[zid]; - mz = mem_cgroup_zoneinfo(memcg, node, zid); - list = &mz->lruvec.lists[lru]; + lruvec = mem_cgroup_zone_lruvec(zone, memcg); + list = &lruvec->lists[lru]; - loop = mz->lru_size[lru]; + loop = mem_cgroup_get_lru_size(lruvec, lru); /* give some margin against EBUSY etc...*/ loop += 256; busy = NULL; @@ -4674,7 +4707,7 @@ for (zone = 0; zone < MAX_NR_ZONES; zone++) { mz = &pn->zoneinfo[zone]; - lruvec_init(&mz->lruvec, &NODE_DATA(node)->node_zones[zone]); + lruvec_init(&mz->lruvec); mz->usage_in_excess = 0; mz->on_tree = false; mz->memcg = memcg; --- linux-3.5.0.orig/mm/mmap.c +++ linux-3.5.0/mm/mmap.c @@ -1355,9 +1355,8 @@ } else if ((flags & MAP_POPULATE) && !(flags & MAP_NONBLOCK)) make_pages_present(addr, addr + len); - if (file && uprobe_mmap(vma)) - /* matching probes but cannot insert */ - goto unmap_and_free_vma; + if (file) + uprobe_mmap(vma); return addr; --- linux-3.5.0.orig/mm/shmem.c +++ linux-3.5.0/mm/shmem.c @@ -654,7 +654,7 @@ kfree(xattr->name); kfree(xattr); } - BUG_ON(inode->i_blocks); + WARN_ON(inode->i_blocks); shmem_free_inode(inode->i_sb); clear_inode(inode); } @@ -921,24 +921,28 @@ static struct page *shmem_swapin(swp_entry_t swap, gfp_t gfp, struct shmem_inode_info *info, pgoff_t index) { - struct mempolicy mpol, *spol; struct vm_area_struct pvma; - - spol = mpol_cond_copy(&mpol, - mpol_shared_policy_lookup(&info->policy, index)); + struct page *page; /* Create a pseudo vma that just contains the policy */ pvma.vm_start = 0; pvma.vm_pgoff = index; pvma.vm_ops = NULL; - pvma.vm_policy = spol; - return swapin_readahead(swap, gfp, &pvma, 0); + pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, index); + + page = swapin_readahead(swap, gfp, &pvma, 0); + + /* Drop reference taken by mpol_shared_policy_lookup() */ + mpol_cond_put(pvma.vm_policy); + + return page; } static struct page *shmem_alloc_page(gfp_t gfp, struct shmem_inode_info *info, pgoff_t index) { struct vm_area_struct pvma; + struct page *page; /* Create a pseudo vma that just contains the policy */ pvma.vm_start = 0; @@ -946,10 +950,12 @@ pvma.vm_ops = NULL; pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, index); - /* - * alloc_page_vma() will drop the shared policy reference - */ - return alloc_page_vma(gfp, &pvma, 0); + page = alloc_page_vma(gfp, &pvma, 0); + + /* Drop reference taken by mpol_shared_policy_lookup() */ + mpol_cond_put(pvma.vm_policy); + + return page; } #else /* !CONFIG_NUMA */ #ifdef CONFIG_TMPFS @@ -1154,8 +1160,20 @@ if (!error) { error = shmem_add_to_page_cache(page, mapping, index, gfp, swp_to_radix_entry(swap)); - /* We already confirmed swap, and make no allocation */ - VM_BUG_ON(error); + /* + * We already confirmed swap under page lock, and make + * no memory allocation here, so usually no possibility + * of error; but free_swap_and_cache() only trylocks a + * page, so it is just possible that the entry has been + * truncated or holepunched since swap was confirmed. + * shmem_undo_range() will have done some of the + * unaccounting, now delete_from_swap_cache() will do + * the rest (including mem_cgroup_uncharge_swapcache). + * Reset swap.val? No, leave it so "failed" goes back to + * "repeat": reading a hole and writing should succeed. + */ + if (error) + delete_from_swap_cache(page); } if (error) goto failed; @@ -2364,12 +2382,14 @@ { struct inode *inode; struct dentry *dentry = NULL; - u64 inum = fid->raw[2]; - inum = (inum << 32) | fid->raw[1]; + u64 inum; if (fh_len < 3) return NULL; + inum = fid->raw[2]; + inum = (inum << 32) | fid->raw[1]; + inode = ilookup5(sb, (unsigned long)(inum + fid->raw[0]), shmem_match, fid->raw); if (inode) { @@ -2521,6 +2541,7 @@ unsigned long inodes; int error = -EINVAL; + config.mpol = NULL; if (shmem_parse_options(data, &config, true)) return error; @@ -2545,8 +2566,13 @@ sbinfo->max_inodes = config.max_inodes; sbinfo->free_inodes = config.max_inodes - inodes; - mpol_put(sbinfo->mpol); - sbinfo->mpol = config.mpol; /* transfers initial ref */ + /* + * Preserve previous mempolicy unless mpol remount option was specified. + */ + if (config.mpol) { + mpol_put(sbinfo->mpol); + sbinfo->mpol = config.mpol; /* transfers initial ref */ + } out: spin_unlock(&sbinfo->stat_lock); return error; --- linux-3.5.0.orig/mm/truncate.c +++ linux-3.5.0/mm/truncate.c @@ -394,11 +394,12 @@ if (page_has_private(page) && !try_to_release_page(page, GFP_KERNEL)) return 0; + clear_page_mlock(page); + spin_lock_irq(&mapping->tree_lock); if (PageDirty(page)) goto failed; - clear_page_mlock(page); BUG_ON(page_has_private(page)); __delete_from_page_cache(page); spin_unlock_irq(&mapping->tree_lock); --- linux-3.5.0.orig/mm/internal.h +++ linux-3.5.0/mm/internal.h @@ -347,3 +347,5 @@ extern unsigned long vm_mmap_pgoff(struct file *, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long); + +extern void set_pageblock_order(void); --- linux-3.5.0.orig/mm/mincore.c +++ linux-3.5.0/mm/mincore.c @@ -80,6 +80,8 @@ #endif if (page) { present = PageUptodate(page); + if (present) + present |= (PageReadaheadUnused(page) << 7); page_cache_release(page); } --- linux-3.5.0.orig/kernel/printk.c +++ linux-3.5.0/kernel/printk.c @@ -235,7 +235,8 @@ static u64 clear_seq; static u32 clear_idx; -#define LOG_LINE_MAX 1024 +#define PREFIX_MAX 32 +#define LOG_LINE_MAX 1024 - PREFIX_MAX /* record buffer */ #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) @@ -811,10 +812,11 @@ if (!printk_time) return 0; + rem_nsec = do_div(ts, 1000000000); + if (!buf) - return 15; + return snprintf(NULL, 0, "[%5lu.000000] ", (unsigned long)ts); - rem_nsec = do_div(ts, 1000000000); return sprintf(buf, "[%5lu.%06lu] ", (unsigned long)ts, rem_nsec / 1000); } @@ -876,7 +878,7 @@ if (buf) { if (print_prefix(msg, syslog, NULL) + - text_len + 1>= size - len) + text_len + 1 >= size - len) break; if (prefix) @@ -907,7 +909,7 @@ struct log *msg; int len = 0; - text = kmalloc(LOG_LINE_MAX, GFP_KERNEL); + text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL); if (!text) return -ENOMEM; @@ -930,7 +932,8 @@ skip = syslog_partial; msg = log_from_idx(syslog_idx); - n = msg_print_text(msg, syslog_prev, true, text, LOG_LINE_MAX); + n = msg_print_text(msg, syslog_prev, true, text, + LOG_LINE_MAX + PREFIX_MAX); if (n - syslog_partial <= size) { /* message fits into buffer, move forward */ syslog_idx = log_next(syslog_idx); @@ -969,7 +972,7 @@ char *text; int len = 0; - text = kmalloc(LOG_LINE_MAX, GFP_KERNEL); + text = kmalloc(LOG_LINE_MAX + PREFIX_MAX, GFP_KERNEL); if (!text) return -ENOMEM; @@ -997,6 +1000,7 @@ struct log *msg = log_from_idx(idx); len += msg_print_text(msg, prev, true, NULL, 0); + prev = msg->flags; idx = log_next(idx); seq++; } @@ -1009,6 +1013,7 @@ struct log *msg = log_from_idx(idx); len -= msg_print_text(msg, prev, true, NULL, 0); + prev = msg->flags; idx = log_next(idx); seq++; } @@ -1022,7 +1027,8 @@ struct log *msg = log_from_idx(idx); int textlen; - textlen = msg_print_text(msg, prev, true, text, LOG_LINE_MAX); + textlen = msg_print_text(msg, prev, true, text, + LOG_LINE_MAX + PREFIX_MAX); if (textlen < 0) { len = textlen; break; @@ -1352,15 +1358,15 @@ bool flushed:1; /* buffer sealed and committed */ } cont; -static void cont_flush(void) +static void cont_flush(enum log_flags flags) { if (cont.flushed) return; if (cont.len == 0) return; - log_store(cont.facility, cont.level, LOG_NOCONS, cont.ts_nsec, - NULL, 0, cont.buf, cont.len); + log_store(cont.facility, cont.level, LOG_NOCONS | flags, + cont.ts_nsec, NULL, 0, cont.buf, cont.len); cont.flushed = true; } @@ -1371,7 +1377,8 @@ return false; if (cont.len + len > sizeof(cont.buf)) { - cont_flush(); + /* the line gets too long, split it up in separate records */ + cont_flush(LOG_CONT); return false; } @@ -1507,7 +1514,7 @@ * or another task also prints continuation lines. */ if (cont.len && (lflags & LOG_PREFIX || cont.owner != current)) - cont_flush(); + cont_flush(0); /* buffer line if possible, otherwise store it right away */ if (!cont_add(facility, level, text, text_len)) @@ -1525,7 +1532,7 @@ if (cont.len && cont.owner == current) { if (!(lflags & LOG_PREFIX)) stored = cont_add(facility, level, text, text_len); - cont_flush(); + cont_flush(0); } if (!stored) @@ -1618,7 +1625,8 @@ #else -#define LOG_LINE_MAX 0 +#define LOG_LINE_MAX 0 +#define PREFIX_MAX 0 static struct cont { size_t len; size_t cons; @@ -1923,7 +1931,7 @@ */ void console_unlock(void) { - static char text[LOG_LINE_MAX]; + static char text[LOG_LINE_MAX + PREFIX_MAX]; static u64 seen_seq; unsigned long flags; bool wake_klogd = false; --- linux-3.5.0.orig/kernel/sys.c +++ linux-3.5.0/kernel/sys.c @@ -368,6 +368,7 @@ void kernel_restart(char *cmd) { kernel_restart_prepare(cmd); + disable_nonboot_cpus(); if (!cmd) printk(KERN_EMERG "Restarting system.\n"); else @@ -1264,15 +1265,16 @@ * Work around broken programs that cannot handle "Linux 3.0". * Instead we map 3.x to 2.6.40+x, so e.g. 3.0 would be 2.6.40 */ -static int override_release(char __user *release, int len) +static int override_release(char __user *release, size_t len) { int ret = 0; - char buf[65]; if (current->personality & UNAME26) { - char *rest = UTS_RELEASE; + const char *rest = UTS_RELEASE; + char buf[65] = { 0 }; int ndots = 0; unsigned v; + size_t copy; while (*rest) { if (*rest == '.' && ++ndots >= 3) @@ -1282,8 +1284,9 @@ rest++; } v = ((LINUX_VERSION_CODE >> 8) & 0xff) + 40; - snprintf(buf, len, "2.6.%u%s", v, rest); - ret = copy_to_user(release, buf, len); + copy = clamp_t(size_t, len, 1, sizeof(buf)); + copy = scnprintf(buf, copy, "2.6.%u%s", v, rest); + ret = copy_to_user(release, buf, copy + 1); } return ret; } --- linux-3.5.0.orig/kernel/cgroup.c +++ linux-3.5.0/kernel/cgroup.c @@ -422,12 +422,20 @@ struct cgroup *cgrp = link->cgrp; list_del(&link->cg_link_list); list_del(&link->cgrp_link_list); + + /* + * We may not be holding cgroup_mutex, and if cgrp->count is + * dropped to 0 the cgroup can be destroyed at any time, hence + * rcu_read_lock is used to keep it alive. + */ + rcu_read_lock(); if (atomic_dec_and_test(&cgrp->count) && notify_on_release(cgrp)) { if (taskexit) set_bit(CGRP_RELEASABLE, &cgrp->flags); check_for_release(cgrp); } + rcu_read_unlock(); kfree(link); } @@ -954,7 +962,7 @@ dget(d); d_delete(d); - simple_unlink(d->d_inode, d); + simple_unlink(cgrp->dentry->d_inode, d); list_del_init(&cfe->node); dput(d); @@ -1927,9 +1935,8 @@ * trading it for newcg is protected by cgroup_mutex, we're safe to drop * it here; it will be freed under RCU. */ - put_css_set(oldcg); - set_bit(CGRP_RELEASABLE, &oldcgrp->flags); + put_css_set(oldcg); } /** @@ -2640,9 +2647,7 @@ dentry->d_fsdata = cgrp; inc_nlink(parent->d_inode); rcu_assign_pointer(cgrp->dentry, dentry); - dget(dentry); } - dput(dentry); return error; } @@ -2685,12 +2690,6 @@ umode_t mode; char name[MAX_CGROUP_TYPE_NAMELEN + MAX_CFTYPE_NAME + 2] = { 0 }; - /* does @cft->flags tell us to skip creation on @cgrp? */ - if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgrp->parent) - return 0; - if ((cft->flags & CFTYPE_ONLY_ON_ROOT) && cgrp->parent) - return 0; - if (subsys && !test_bit(ROOT_NOPREFIX, &cgrp->root->flags)) { strcpy(name, subsys->name); strcat(name, "."); @@ -2731,6 +2730,12 @@ int err, ret = 0; for (cft = cfts; cft->name[0] != '\0'; cft++) { + /* does cft->flags tell us to skip this file on @cgrp? */ + if ((cft->flags & CFTYPE_NOT_ON_ROOT) && !cgrp->parent) + continue; + if ((cft->flags & CFTYPE_ONLY_ON_ROOT) && cgrp->parent) + continue; + if (is_add) err = cgroup_add_file(cgrp, subsys, cft); else @@ -4740,70 +4745,37 @@ * * A pointer to the shared css_set was automatically copied in * fork.c by dup_task_struct(). However, we ignore that copy, since - * it was not made under the protection of RCU, cgroup_mutex or - * threadgroup_change_begin(), so it might no longer be a valid - * cgroup pointer. cgroup_attach_task() might have already changed - * current->cgroups, allowing the previously referenced cgroup - * group to be removed and freed. - * - * Outside the pointer validity we also need to process the css_set - * inheritance between threadgoup_change_begin() and - * threadgoup_change_end(), this way there is no leak in any process - * wide migration performed by cgroup_attach_proc() that could otherwise - * miss a thread because it is too early or too late in the fork stage. + * it was not made under the protection of RCU or cgroup_mutex, so + * might no longer be a valid cgroup pointer. cgroup_attach_task() might + * have already changed current->cgroups, allowing the previously + * referenced cgroup group to be removed and freed. * * At the point that cgroup_fork() is called, 'current' is the parent * task, and the passed argument 'child' points to the child task. */ void cgroup_fork(struct task_struct *child) { - /* - * We don't need to task_lock() current because current->cgroups - * can't be changed concurrently here. The parent obviously hasn't - * exited and called cgroup_exit(), and we are synchronized against - * cgroup migration through threadgroup_change_begin(). - */ + task_lock(current); child->cgroups = current->cgroups; get_css_set(child->cgroups); + task_unlock(current); INIT_LIST_HEAD(&child->cg_list); } /** - * cgroup_fork_callbacks - run fork callbacks - * @child: the new task - * - * Called on a new task very soon before adding it to the - * tasklist. No need to take any locks since no-one can - * be operating on this task. - */ -void cgroup_fork_callbacks(struct task_struct *child) -{ - if (need_forkexit_callback) { - int i; - /* - * forkexit callbacks are only supported for builtin - * subsystems, and the builtin section of the subsys array is - * immutable, so we don't need to lock the subsys array here. - */ - for (i = 0; i < CGROUP_BUILTIN_SUBSYS_COUNT; i++) { - struct cgroup_subsys *ss = subsys[i]; - if (ss->fork) - ss->fork(child); - } - } -} - -/** * cgroup_post_fork - called on a new task after adding it to the task list * @child: the task in question * - * Adds the task to the list running through its css_set if necessary. - * Has to be after the task is visible on the task list in case we race - * with the first call to cgroup_iter_start() - to guarantee that the - * new task ends up on its list. + * Adds the task to the list running through its css_set if necessary and + * call the subsystem fork() callbacks. Has to be after the task is + * visible on the task list in case we race with the first call to + * cgroup_iter_start() - to guarantee that the new task ends up on its + * list. */ void cgroup_post_fork(struct task_struct *child) { + int i; + /* * use_task_css_set_links is set to 1 before we walk the tasklist * under the tasklist_lock and we read it here after we added the child @@ -4817,22 +4789,32 @@ */ if (use_task_css_set_links) { write_lock(&css_set_lock); - if (list_empty(&child->cg_list)) { - /* - * It's safe to use child->cgroups without task_lock() - * here because we are protected through - * threadgroup_change_begin() against concurrent - * css_set change in cgroup_task_migrate(). Also - * the task can't exit at that point until - * wake_up_new_task() is called, so we are protected - * against cgroup_exit() setting child->cgroup to - * init_css_set. - */ + task_lock(child); + if (list_empty(&child->cg_list)) list_add(&child->cg_list, &child->cgroups->tasks); - } + task_unlock(child); write_unlock(&css_set_lock); } + + /* + * Call ss->fork(). This must happen after @child is linked on + * css_set; otherwise, @child might change state between ->fork() + * and addition to css_set. + */ + if (need_forkexit_callback) { + /* + * forkexit callbacks are only supported for builtin + * subsystems, and the builtin section of the subsys array is + * immutable, so we don't need to lock the subsys array here. + */ + for (i = 0; i < CGROUP_BUILTIN_SUBSYS_COUNT; i++) { + struct cgroup_subsys *ss = subsys[i]; + if (ss->fork) + ss->fork(child); + } + } } + /** * cgroup_exit - detach cgroup from exiting task * @tsk: pointer to task_struct of exiting process --- linux-3.5.0.orig/kernel/watchdog.c +++ linux-3.5.0/kernel/watchdog.c @@ -113,7 +113,7 @@ return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */ } -static unsigned long get_sample_period(void) +static u64 get_sample_period(void) { /* * convert watchdog_thresh from seconds to ns @@ -122,7 +122,7 @@ * and hard thresholds) to increment before the * hardlockup detector generates a warning */ - return get_softlockup_thresh() * (NSEC_PER_SEC / 5); + return get_softlockup_thresh() * ((u64)NSEC_PER_SEC / 5); } /* Commands for resetting the watchdog */ --- linux-3.5.0.orig/kernel/smp.c +++ linux-3.5.0/kernel/smp.c @@ -33,6 +33,7 @@ struct call_single_data csd; atomic_t refs; cpumask_var_t cpumask; + cpumask_var_t cpumask_ipi; }; static DEFINE_PER_CPU_SHARED_ALIGNED(struct call_function_data, cfd_data); @@ -56,6 +57,9 @@ if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL, cpu_to_node(cpu))) return notifier_from_errno(-ENOMEM); + if (!zalloc_cpumask_var_node(&cfd->cpumask_ipi, GFP_KERNEL, + cpu_to_node(cpu))) + return notifier_from_errno(-ENOMEM); break; #ifdef CONFIG_HOTPLUG_CPU @@ -65,6 +69,7 @@ case CPU_DEAD: case CPU_DEAD_FROZEN: free_cpumask_var(cfd->cpumask); + free_cpumask_var(cfd->cpumask_ipi); break; #endif }; @@ -526,6 +531,12 @@ return; } + /* + * After we put an entry into the list, data->cpumask + * may be cleared again when another CPU sends another IPI for + * a SMP function call, so data->cpumask will be zero. + */ + cpumask_copy(data->cpumask_ipi, data->cpumask); raw_spin_lock_irqsave(&call_function.lock, flags); /* * Place entry at the _HEAD_ of the list, so that any cpu still @@ -549,7 +560,7 @@ smp_mb(); /* Send a message to all CPUs in the map */ - arch_send_call_function_ipi_mask(data->cpumask); + arch_send_call_function_ipi_mask(data->cpumask_ipi); /* Optionally wait for the CPUs to complete */ if (wait) --- linux-3.5.0.orig/kernel/seccomp.c +++ linux-3.5.0/kernel/seccomp.c @@ -443,7 +443,7 @@ #ifdef SECCOMP_DEBUG dump_stack(); #endif - audit_seccomp(this_syscall, exit_sig, ret); + __audit_seccomp(this_syscall, exit_sig, ret); do_exit(exit_sig); #ifdef CONFIG_SECCOMP_FILTER skip: --- linux-3.5.0.orig/kernel/posix-cpu-timers.c +++ linux-3.5.0/kernel/posix-cpu-timers.c @@ -1422,8 +1422,10 @@ while (!signal_pending(current)) { if (timer.it.cpu.expires.sched == 0) { /* - * Our timer fired and was reset. + * Our timer fired and was reset, below + * deletion can not fail. */ + posix_cpu_timer_del(&timer); spin_unlock_irq(&timer.it_lock); return 0; } @@ -1441,9 +1443,26 @@ * We were interrupted by a signal. */ sample_to_timespec(which_clock, timer.it.cpu.expires, rqtp); - posix_cpu_timer_set(&timer, 0, &zero_it, it); + error = posix_cpu_timer_set(&timer, 0, &zero_it, it); + if (!error) { + /* + * Timer is now unarmed, deletion can not fail. + */ + posix_cpu_timer_del(&timer); + } spin_unlock_irq(&timer.it_lock); + while (error == TIMER_RETRY) { + /* + * We need to handle case when timer was or is in the + * middle of firing. In other cases we already freed + * resources. + */ + spin_lock_irq(&timer.it_lock); + error = posix_cpu_timer_del(&timer); + spin_unlock_irq(&timer.it_lock); + } + if ((it->it_value.tv_sec | it->it_value.tv_nsec) == 0) { /* * It actually did fire already. --- linux-3.5.0.orig/kernel/kmod.c +++ linux-3.5.0/kernel/kmod.c @@ -585,6 +585,8 @@ struct subprocess_info *info; gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? GFP_ATOMIC : GFP_KERNEL; + populate_rootfs_wait(); + info = call_usermodehelper_setup(path, argv, envp, gfp_mask); if (info == NULL) --- linux-3.5.0.orig/kernel/posix-timers.c +++ linux-3.5.0/kernel/posix-timers.c @@ -639,6 +639,13 @@ { struct k_itimer *timr; + /* + * timer_t could be any type >= int and we want to make sure any + * @timer_id outside positive int range fails lookup. + */ + if ((unsigned long long)timer_id > INT_MAX) + return NULL; + rcu_read_lock(); timr = idr_find(&posix_timers_id, (int)timer_id); if (timr) { --- linux-3.5.0.orig/kernel/workqueue.c +++ linux-3.5.0/kernel/workqueue.c @@ -1869,7 +1869,9 @@ spin_unlock_irq(&gcwq->lock); + smp_wmb(); /* paired with test_and_set_bit(PENDING) */ work_clear_pending(work); + lock_map_acquire_read(&cwq->wq->lockdep_map); lock_map_acquire(&lockdep_map); trace_workqueue_execute_start(work); @@ -2043,8 +2045,10 @@ repeat: set_current_state(TASK_INTERRUPTIBLE); - if (kthread_should_stop()) + if (kthread_should_stop()) { + __set_current_state(TASK_RUNNING); return 0; + } /* * See whether any cpu is asking for help. Unbounded @@ -3441,14 +3445,17 @@ for_each_busy_worker(worker, i, pos, gcwq) { struct work_struct *rebind_work = &worker->rebind_work; + unsigned long worker_flags = worker->flags; /* * Rebind_work may race with future cpu hotplug * operations. Use a separate flag to mark that - * rebinding is scheduled. + * rebinding is scheduled. The morphing should + * be atomic. */ - worker->flags |= WORKER_REBIND; - worker->flags &= ~WORKER_ROGUE; + worker_flags |= WORKER_REBIND; + worker_flags &= ~WORKER_ROGUE; + ACCESS_ONCE(worker->flags) = worker_flags; /* queue rebind_work, wq doesn't matter, use the default one */ if (test_and_set_bit(WORK_STRUCT_PENDING_BIT, @@ -3590,21 +3597,55 @@ return notifier_from_errno(0); } +/* + * Workqueues should be brought up before normal priority CPU notifiers. + * This will be registered high priority CPU notifier. + */ +static int __devinit workqueue_cpu_up_callback(struct notifier_block *nfb, + unsigned long action, + void *hcpu) +{ + switch (action & ~CPU_TASKS_FROZEN) { + case CPU_UP_PREPARE: + case CPU_UP_CANCELED: + case CPU_DOWN_FAILED: + case CPU_ONLINE: + return workqueue_cpu_callback(nfb, action, hcpu); + } + return NOTIFY_OK; +} + +/* + * Workqueues should be brought down after normal priority CPU notifiers. + * This will be registered as low priority CPU notifier. + */ +static int __devinit workqueue_cpu_down_callback(struct notifier_block *nfb, + unsigned long action, + void *hcpu) +{ + switch (action & ~CPU_TASKS_FROZEN) { + case CPU_DOWN_PREPARE: + case CPU_DYING: + case CPU_POST_DEAD: + return workqueue_cpu_callback(nfb, action, hcpu); + } + return NOTIFY_OK; +} + #ifdef CONFIG_SMP struct work_for_cpu { - struct completion completion; + struct work_struct work; long (*fn)(void *); void *arg; long ret; }; -static int do_work_for_cpu(void *_wfc) +static void work_for_cpu_fn(struct work_struct *work) { - struct work_for_cpu *wfc = _wfc; + struct work_for_cpu *wfc = container_of(work, struct work_for_cpu, work); + wfc->ret = wfc->fn(wfc->arg); - complete(&wfc->completion); - return 0; } /** @@ -3619,19 +3660,11 @@ */ long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) { - struct task_struct *sub_thread; - struct work_for_cpu wfc = { - .completion = COMPLETION_INITIALIZER_ONSTACK(wfc.completion), - .fn = fn, - .arg = arg, - }; + struct work_for_cpu wfc = { .fn = fn, .arg = arg }; - sub_thread = kthread_create(do_work_for_cpu, &wfc, "work_for_cpu"); - if (IS_ERR(sub_thread)) - return PTR_ERR(sub_thread); - kthread_bind(sub_thread, cpu); - wake_up_process(sub_thread); - wait_for_completion(&wfc.completion); + INIT_WORK_ONSTACK(&wfc.work, work_for_cpu_fn); + schedule_work_on(cpu, &wfc.work); + flush_work(&wfc.work); return wfc.ret; } EXPORT_SYMBOL_GPL(work_on_cpu); @@ -3783,7 +3816,8 @@ unsigned int cpu; int i; - cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE); + cpu_notifier(workqueue_cpu_up_callback, CPU_PRI_WORKQUEUE_UP); + cpu_notifier(workqueue_cpu_down_callback, CPU_PRI_WORKQUEUE_DOWN); /* initialize gcwqs */ for_each_gcwq_cpu(cpu) { --- linux-3.5.0.orig/kernel/rcutree.c +++ linux-3.5.0/kernel/rcutree.c @@ -211,13 +211,13 @@ .dynticks = ATOMIC_INIT(1), }; -static int blimit = 10; /* Maximum callbacks per rcu_do_batch. */ -static int qhimark = 10000; /* If this many pending, ignore blimit. */ -static int qlowmark = 100; /* Once only this many pending, use blimit. */ - -module_param(blimit, int, 0); -module_param(qhimark, int, 0); -module_param(qlowmark, int, 0); +static long blimit = 10; /* Maximum callbacks per rcu_do_batch. */ +static long qhimark = 10000; /* If this many pending, ignore blimit. */ +static long qlowmark = 100; /* Once only this many pending, use blimit. */ + +module_param(blimit, long, 0); +module_param(qhimark, long, 0); +module_param(qlowmark, long, 0); int rcu_cpu_stall_suppress __read_mostly; /* 1 = suppress stall warnings. */ int rcu_cpu_stall_timeout __read_mostly = CONFIG_RCU_CPU_STALL_TIMEOUT; @@ -304,7 +304,9 @@ static int cpu_needs_another_gp(struct rcu_state *rsp, struct rcu_data *rdp) { - return *rdp->nxttail[RCU_DONE_TAIL] && !rcu_gp_in_progress(rsp); + return *rdp->nxttail[RCU_DONE_TAIL + + ACCESS_ONCE(rsp->completed) != rdp->completed] && + !rcu_gp_in_progress(rsp); } /* @@ -1531,7 +1533,8 @@ { unsigned long flags; struct rcu_head *next, *list, **tail; - int bl, count, count_lazy, i; + long bl, count, count_lazy; + int i; /* If no callbacks are ready, just return.*/ if (!cpu_has_callbacks_ready_to_invoke(rdp)) { --- linux-3.5.0.orig/kernel/module.c +++ linux-3.5.0/kernel/module.c @@ -145,6 +145,7 @@ ongoing or failed initialization etc. */ static inline int strong_try_module_get(struct module *mod) { + BUG_ON(mod && mod->state == MODULE_STATE_UNFORMED); if (mod && mod->state == MODULE_STATE_COMING) return -EBUSY; if (try_module_get(mod)) @@ -300,6 +301,9 @@ #endif }; + if (mod->state == MODULE_STATE_UNFORMED) + continue; + if (each_symbol_in_section(arr, ARRAY_SIZE(arr), mod, fn, data)) return true; } @@ -410,16 +414,24 @@ EXPORT_SYMBOL_GPL(find_symbol); /* Search for module by name: must hold module_mutex. */ -struct module *find_module(const char *name) +static struct module *find_module_all(const char *name, + bool even_unformed) { struct module *mod; list_for_each_entry(mod, &modules, list) { + if (!even_unformed && mod->state == MODULE_STATE_UNFORMED) + continue; if (strcmp(mod->name, name) == 0) return mod; } return NULL; } + +struct module *find_module(const char *name) +{ + return find_module_all(name, false); +} EXPORT_SYMBOL_GPL(find_module); #ifdef CONFIG_SMP @@ -485,6 +497,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (!mod->percpu_size) continue; for_each_possible_cpu(cpu) { @@ -1008,6 +1022,8 @@ case MODULE_STATE_GOING: state = "going"; break; + default: + BUG(); } return sprintf(buffer, "%s\n", state); } @@ -1746,6 +1762,8 @@ mutex_lock(&module_mutex); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((mod->module_core) && (mod->core_text_size)) { set_page_attributes(mod->module_core, mod->module_core + mod->core_text_size, @@ -1767,6 +1785,8 @@ mutex_lock(&module_mutex); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((mod->module_core) && (mod->core_text_size)) { set_page_attributes(mod->module_core, mod->module_core + mod->core_text_size, @@ -2273,12 +2293,17 @@ src = (void *)info->hdr + symsect->sh_offset; nsrc = symsect->sh_size / sizeof(*src); + /* strtab always starts with a nul, so offset 0 is the empty string. */ + strtab_size = 1; + /* Compute total space required for the core symbols' strtab. */ - for (ndst = i = strtab_size = 1; i < nsrc; ++i, ++src) - if (is_core_symbol(src, info->sechdrs, info->hdr->e_shnum)) { - strtab_size += strlen(&info->strtab[src->st_name]) + 1; + for (ndst = i = 0; i < nsrc; i++) { + if (i == 0 || + is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum)) { + strtab_size += strlen(&info->strtab[src[i].st_name])+1; ndst++; } + } /* Append room for core symbols at end of core part. */ info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1); @@ -2312,15 +2337,15 @@ mod->core_symtab = dst = mod->module_core + info->symoffs; mod->core_strtab = s = mod->module_core + info->stroffs; src = mod->symtab; - *dst = *src; *s++ = 0; - for (ndst = i = 1; i < mod->num_symtab; ++i, ++src) { - if (!is_core_symbol(src, info->sechdrs, info->hdr->e_shnum)) - continue; - - dst[ndst] = *src; - dst[ndst++].st_name = s - mod->core_strtab; - s += strlcpy(s, &mod->strtab[src->st_name], KSYM_NAME_LEN) + 1; + for (ndst = i = 0; i < mod->num_symtab; i++) { + if (i == 0 || + is_core_symbol(src+i, info->sechdrs, info->hdr->e_shnum)) { + dst[ndst] = src[i]; + dst[ndst++].st_name = s - mod->core_strtab; + s += strlcpy(s, &mod->strtab[src[i].st_name], + KSYM_NAME_LEN) + 1; + } } mod->core_num_syms = ndst; } @@ -2730,6 +2755,10 @@ if (strcmp(mod->name, "driverloader") == 0) add_taint_module(mod, TAINT_PROPRIETARY_MODULE); + /* lve claims to be GPL but upstream won't provide source */ + if (strcmp(mod->name, "lve") == 0) + add_taint_module(mod, TAINT_PROPRIETARY_MODULE); + #ifdef CONFIG_MODVERSIONS if ((mod->num_syms && !mod->crcs) || (mod->num_gpl_syms && !mod->gpl_crcs) @@ -2861,6 +2890,21 @@ return module_finalize(info->hdr, info->sechdrs, mod); } +/* Is this module of this name done loading? No locks held. */ +static bool finished_loading(const char *name) +{ + struct module *mod; + bool ret; + + mutex_lock(&module_mutex); + mod = find_module_all(name, true); + ret = !mod || mod->state == MODULE_STATE_LIVE + || mod->state == MODULE_STATE_GOING; + mutex_unlock(&module_mutex); + + return ret; +} + /* Allocate and load the module: note that size of section 0 is always zero, and we rely on this for optional sections. */ static struct module *load_module(void __user *umod, @@ -2868,7 +2912,7 @@ const char __user *uargs) { struct load_info info = { NULL, }; - struct module *mod; + struct module *mod, *old; long err; pr_debug("load_module: umod=%p, len=%lu, uargs=%p\n", @@ -2886,10 +2930,36 @@ goto free_copy; } + /* + * We try to place it in the list now to make sure it's unique + * before we dedicate too many resources. In particular, + * temporary percpu memory exhaustion. + */ + mod->state = MODULE_STATE_UNFORMED; +again: + mutex_lock(&module_mutex); + if ((old = find_module_all(mod->name, true)) != NULL) { + if (old->state == MODULE_STATE_COMING + || old->state == MODULE_STATE_UNFORMED) { + /* Wait in case it fails to load. */ + mutex_unlock(&module_mutex); + err = wait_event_interruptible(module_wq, + finished_loading(mod->name)); + if (err) + goto free_module; + goto again; + } + err = -EEXIST; + mutex_unlock(&module_mutex); + goto free_module; + } + list_add_rcu(&mod->list, &modules); + mutex_unlock(&module_mutex); + /* Now module is in final location, initialize linked lists, etc. */ err = module_unload_init(mod); if (err) - goto free_module; + goto unlink_mod; /* Now we've got everything in the final locations, we can * find optional sections. */ @@ -2924,44 +2994,33 @@ goto free_arch_cleanup; } - /* Mark state as coming so strong_try_module_get() ignores us. */ - mod->state = MODULE_STATE_COMING; - - /* Now sew it into the lists so we can get lockdep and oops - * info during argument parsing. No one should access us, since - * strong_try_module_get() will fail. - * lockdep/oops can run asynchronous, so use the RCU list insertion - * function to insert in a way safe to concurrent readers. - * The mutex protects against concurrent writers. - */ - mutex_lock(&module_mutex); - if (find_module(mod->name)) { - err = -EEXIST; - goto unlock; - } - - /* This has to be done once we're sure module name is unique. */ dynamic_debug_setup(info.debug, info.num_debug); - /* Find duplicate symbols */ + mutex_lock(&module_mutex); + /* Find duplicate symbols (must be called under lock). */ err = verify_export_symbols(mod); if (err < 0) - goto ddebug; + goto ddebug_cleanup; + /* This relies on module_mutex for list integrity. */ module_bug_finalize(info.hdr, info.sechdrs, mod); - list_add_rcu(&mod->list, &modules); + + /* Mark state as coming so strong_try_module_get() ignores us, + * but kallsyms etc. can see us. */ + mod->state = MODULE_STATE_COMING; + mutex_unlock(&module_mutex); /* Module is ready to execute: parsing args may do that. */ err = parse_args(mod->name, mod->args, mod->kp, mod->num_kp, -32768, 32767, &ddebug_dyndbg_module_param_cb); if (err < 0) - goto unlink; + goto bug_cleanup; /* Link in to syfs. */ err = mod_sysfs_setup(mod, &info, mod->kp, mod->num_kp); if (err < 0) - goto unlink; + goto bug_cleanup; /* Get rid of temporary copy. */ free_copy(&info); @@ -2970,16 +3029,13 @@ trace_module_load(mod); return mod; - unlink: + bug_cleanup: + /* module_bug_cleanup needs module_mutex protection */ mutex_lock(&module_mutex); - /* Unlink carefully: kallsyms could be walking list. */ - list_del_rcu(&mod->list); module_bug_cleanup(mod); - - ddebug: - dynamic_debug_remove(info.debug); - unlock: + ddebug_cleanup: mutex_unlock(&module_mutex); + dynamic_debug_remove(info.debug); synchronize_sched(); kfree(mod->args); free_arch_cleanup: @@ -2988,6 +3044,12 @@ free_modinfo(mod); free_unload: module_unload_free(mod); + unlink_mod: + mutex_lock(&module_mutex); + /* Unlink carefully: kallsyms could be walking list. */ + list_del_rcu(&mod->list); + wake_up_all(&module_wq); + mutex_unlock(&module_mutex); free_module: module_deallocate(mod, &info); free_copy: @@ -3050,7 +3112,7 @@ blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_GOING, mod); free_module(mod); - wake_up(&module_wq); + wake_up_all(&module_wq); return ret; } if (ret > 0) { @@ -3062,9 +3124,8 @@ dump_stack(); } - /* Now it's a first class citizen! Wake up anyone waiting for it. */ + /* Now it's a first class citizen! */ mod->state = MODULE_STATE_LIVE; - wake_up(&module_wq); blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_LIVE, mod); @@ -3087,6 +3148,7 @@ mod->init_ro_size = 0; mod->init_text_size = 0; mutex_unlock(&module_mutex); + wake_up_all(&module_wq); return 0; } @@ -3164,6 +3226,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { if (modname) @@ -3187,6 +3251,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { const char *sym; @@ -3211,6 +3277,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_init(addr, mod) || within_module_core(addr, mod)) { const char *sym; @@ -3238,6 +3306,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (symnum < mod->num_symtab) { *value = mod->symtab[symnum].st_value; *type = mod->symtab[symnum].st_info; @@ -3280,9 +3350,12 @@ ret = mod_find_symname(mod, colon+1); *colon = ':'; } else { - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if ((ret = mod_find_symname(mod, name)) != 0) break; + } } preempt_enable(); return ret; @@ -3297,6 +3370,8 @@ int ret; list_for_each_entry(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; for (i = 0; i < mod->num_symtab; i++) { ret = fn(data, mod->strtab + mod->symtab[i].st_name, mod, mod->symtab[i].st_value); @@ -3312,6 +3387,7 @@ { int bx = 0; + BUG_ON(mod->state == MODULE_STATE_UNFORMED); if (mod->taints || mod->state == MODULE_STATE_GOING || mod->state == MODULE_STATE_COMING) { @@ -3353,6 +3429,10 @@ struct module *mod = list_entry(p, struct module, list); char buf[8]; + /* We always ignore unformed modules. */ + if (mod->state == MODULE_STATE_UNFORMED) + return 0; + seq_printf(m, "%s %u", mod->name, mod->init_size + mod->core_size); print_unload_info(m, mod); @@ -3413,6 +3493,8 @@ preempt_disable(); list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (mod->num_exentries == 0) continue; @@ -3461,10 +3543,13 @@ if (addr < module_addr_min || addr > module_addr_max) return NULL; - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; if (within_module_core(addr, mod) || within_module_init(addr, mod)) return mod; + } return NULL; } EXPORT_SYMBOL_GPL(__module_address); @@ -3517,8 +3602,11 @@ printk(KERN_DEFAULT "Modules linked in:"); /* Most callers should already have preempt disabled, but make sure */ preempt_disable(); - list_for_each_entry_rcu(mod, &modules, list) + list_for_each_entry_rcu(mod, &modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; printk(" %s%s", mod->name, module_flags(mod, buf)); + } preempt_enable(); if (last_unloaded_module[0]) printk(" [last unloaded: %s]", last_unloaded_module); --- linux-3.5.0.orig/kernel/audit_watch.c +++ linux-3.5.0/kernel/audit_watch.c @@ -349,7 +349,7 @@ } mutex_unlock(&audit_filter_mutex); - fsnotify_destroy_mark(&parent->mark); + fsnotify_destroy_mark(&parent->mark, audit_watch_group); } /* Get path information necessary for adding watches. */ @@ -475,7 +475,7 @@ if (list_empty(&parent->watches)) { audit_get_parent(parent); - fsnotify_destroy_mark(&parent->mark); + fsnotify_destroy_mark(&parent->mark, audit_watch_group); audit_put_parent(parent); } } --- linux-3.5.0.orig/kernel/signal.c +++ linux-3.5.0/kernel/signal.c @@ -483,6 +483,9 @@ if (force_default || ka->sa.sa_handler != SIG_IGN) ka->sa.sa_handler = SIG_DFL; ka->sa.sa_flags = 0; +#ifdef SA_RESTORER + ka->sa.sa_restorer = NULL; +#endif sigemptyset(&ka->sa.sa_mask); ka++; } @@ -678,23 +681,17 @@ * No need to set need_resched since signal event passing * goes through ->blocked */ -void signal_wake_up(struct task_struct *t, int resume) +void signal_wake_up_state(struct task_struct *t, unsigned int state) { - unsigned int mask; - set_tsk_thread_flag(t, TIF_SIGPENDING); - /* - * For SIGKILL, we want to wake it up in the stopped/traced/killable + * TASK_WAKEKILL also means wake it up in the stopped/traced/killable * case. We don't check t->state here because there is a race with it * executing another processor and just now entering stopped state. * By using wake_up_state, we ensure the process will wake up and * handle its death signal. */ - mask = TASK_INTERRUPTIBLE; - if (resume) - mask |= TASK_WAKEKILL; - if (!wake_up_state(t, mask)) + if (!wake_up_state(t, state | TASK_INTERRUPTIBLE)) kick_process(t); } @@ -842,7 +839,7 @@ assert_spin_locked(&t->sighand->siglock); task_set_jobctl_pending(t, JOBCTL_TRAP_NOTIFY); - signal_wake_up(t, t->jobctl & JOBCTL_LISTENING); + ptrace_signal_wake_up(t, t->jobctl & JOBCTL_LISTENING); } /* @@ -1797,6 +1794,10 @@ * If SIGKILL was already sent before the caller unlocked * ->siglock we must see ->core_state != NULL. Otherwise it * is safe to enter schedule(). + * + * This is almost outdated, a task with the pending SIGKILL can't + * block in TASK_TRACED. But PTRACE_EVENT_EXIT can be reported + * after SIGKILL was already dequeued. */ if (unlikely(current->mm->core_state) && unlikely(current->mm == current->parent->mm)) @@ -1922,6 +1923,7 @@ if (gstop_done) do_notify_parent_cldstop(current, false, why); + /* tasklist protects us from ptrace_freeze_traced() */ __set_current_state(TASK_RUNNING); if (clear_code) current->exit_code = 0; @@ -3215,6 +3217,7 @@ int old = current->blocked.sig[0]; sigset_t newset; + siginitset(&newset, newmask); set_current_blocked(&newset); return old; --- linux-3.5.0.orig/kernel/futex_compat.c +++ linux-3.5.0/kernel/futex_compat.c @@ -142,8 +142,6 @@ if (!futex_cmpxchg_enabled) return -ENOSYS; - WARN_ONCE(1, "deprecated: get_robust_list will be deleted in 2013.\n"); - rcu_read_lock(); ret = -ESRCH; --- linux-3.5.0.orig/kernel/cpuset.c +++ linux-3.5.0/kernel/cpuset.c @@ -2054,6 +2054,9 @@ * (of no affect) on systems that are actively using CPU hotplug * but making no active use of cpusets. * + * The only exception to this is suspend/resume, where we don't + * modify cpusets at all. + * * This routine ensures that top_cpuset.cpus_allowed tracks * cpu_active_mask on each CPU hotplug (cpuhp) event. * @@ -2465,8 +2468,16 @@ dentry = task_cs(tsk)->css.cgroup->dentry; spin_lock(&cpuset_buffer_lock); - snprintf(cpuset_name, CPUSET_NAME_LEN, - dentry ? (const char *)dentry->d_name.name : "/"); + + if (!dentry) { + strcpy(cpuset_name, "/"); + } else { + spin_lock(&dentry->d_lock); + strlcpy(cpuset_name, (const char *)dentry->d_name.name, + CPUSET_NAME_LEN); + spin_unlock(&dentry->d_lock); + } + nodelist_scnprintf(cpuset_nodelist, CPUSET_NODELIST_LEN, tsk->mems_allowed); printk(KERN_INFO "%s cpuset=%s mems_allowed=%s\n", --- linux-3.5.0.orig/kernel/resource.c +++ linux-3.5.0/kernel/resource.c @@ -758,6 +758,7 @@ struct resource *parent = root; struct resource *conflict; struct resource *res = kzalloc(sizeof(*res), GFP_ATOMIC); + struct resource *next_res = NULL; if (!res) return; @@ -767,21 +768,46 @@ res->end = end; res->flags = IORESOURCE_BUSY; - conflict = __request_resource(parent, res); - if (!conflict) - return; - - /* failed, split and try again */ - kfree(res); + while (1) { - /* conflict covered whole area */ - if (conflict->start <= start && conflict->end >= end) - return; + conflict = __request_resource(parent, res); + if (!conflict) { + if (!next_res) + break; + res = next_res; + next_res = NULL; + continue; + } + + /* conflict covered whole area */ + if (conflict->start <= res->start && + conflict->end >= res->end) { + kfree(res); + WARN_ON(next_res); + break; + } + + /* failed, split and try again */ + if (conflict->start > res->start) { + end = res->end; + res->end = conflict->start - 1; + if (conflict->end < end) { + next_res = kzalloc(sizeof(*next_res), + GFP_ATOMIC); + if (!next_res) { + kfree(res); + break; + } + next_res->name = name; + next_res->start = conflict->end + 1; + next_res->end = end; + next_res->flags = IORESOURCE_BUSY; + } + } else { + res->start = conflict->end + 1; + } + } - if (conflict->start > start) - __reserve_region_with_split(root, start, conflict->start-1, name); - if (conflict->end < end) - __reserve_region_with_split(root, conflict->end+1, end, name); } void __init reserve_region_with_split(struct resource *root, --- linux-3.5.0.orig/kernel/exit.c +++ linux-3.5.0/kernel/exit.c @@ -483,7 +483,7 @@ rcu_read_unlock(); for (;;) { unsigned long set; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; if (i >= fdt->max_fds) break; set = fdt->open_fds[j++]; --- linux-3.5.0.orig/kernel/kthread.c +++ linux-3.5.0/kernel/kthread.c @@ -360,16 +360,12 @@ struct kthread_work, node); list_del_init(&work->node); } + worker->current_work = work; spin_unlock_irq(&worker->lock); if (work) { __set_current_state(TASK_RUNNING); work->func(work); - smp_wmb(); /* wmb worker-b0 paired with flush-b1 */ - work->done_seq = work->queue_seq; - smp_mb(); /* mb worker-b1 paired with flush-b0 */ - if (atomic_read(&work->flushing)) - wake_up_all(&work->done); } else if (!freezing(current)) schedule(); @@ -378,6 +374,19 @@ } EXPORT_SYMBOL_GPL(kthread_worker_fn); +/* insert @work before @pos in @worker */ +static void insert_kthread_work(struct kthread_worker *worker, + struct kthread_work *work, + struct list_head *pos) +{ + lockdep_assert_held(&worker->lock); + + list_add_tail(&work->node, pos); + work->worker = worker; + if (likely(worker->task)) + wake_up_process(worker->task); +} + /** * queue_kthread_work - queue a kthread_work * @worker: target kthread_worker @@ -395,10 +404,7 @@ spin_lock_irqsave(&worker->lock, flags); if (list_empty(&work->node)) { - list_add_tail(&work->node, &worker->work_list); - work->queue_seq++; - if (likely(worker->task)) - wake_up_process(worker->task); + insert_kthread_work(worker, work, &worker->work_list); ret = true; } spin_unlock_irqrestore(&worker->lock, flags); @@ -406,6 +412,18 @@ } EXPORT_SYMBOL_GPL(queue_kthread_work); +struct kthread_flush_work { + struct kthread_work work; + struct completion done; +}; + +static void kthread_flush_work_fn(struct kthread_work *work) +{ + struct kthread_flush_work *fwork = + container_of(work, struct kthread_flush_work, work); + complete(&fwork->done); +} + /** * flush_kthread_work - flush a kthread_work * @work: work to flush @@ -414,39 +432,37 @@ */ void flush_kthread_work(struct kthread_work *work) { - int seq = work->queue_seq; - - atomic_inc(&work->flushing); + struct kthread_flush_work fwork = { + KTHREAD_WORK_INIT(fwork.work, kthread_flush_work_fn), + COMPLETION_INITIALIZER_ONSTACK(fwork.done), + }; + struct kthread_worker *worker; + bool noop = false; + +retry: + worker = work->worker; + if (!worker) + return; + + spin_lock_irq(&worker->lock); + if (work->worker != worker) { + spin_unlock_irq(&worker->lock); + goto retry; + } - /* - * mb flush-b0 paired with worker-b1, to make sure either - * worker sees the above increment or we see done_seq update. - */ - smp_mb__after_atomic_inc(); - - /* A - B <= 0 tests whether B is in front of A regardless of overflow */ - wait_event(work->done, seq - work->done_seq <= 0); - atomic_dec(&work->flushing); - - /* - * rmb flush-b1 paired with worker-b0, to make sure our caller - * sees every change made by work->func(). - */ - smp_mb__after_atomic_dec(); -} -EXPORT_SYMBOL_GPL(flush_kthread_work); + if (!list_empty(&work->node)) + insert_kthread_work(worker, &fwork.work, work->node.next); + else if (worker->current_work == work) + insert_kthread_work(worker, &fwork.work, worker->work_list.next); + else + noop = true; -struct kthread_flush_work { - struct kthread_work work; - struct completion done; -}; + spin_unlock_irq(&worker->lock); -static void kthread_flush_work_fn(struct kthread_work *work) -{ - struct kthread_flush_work *fwork = - container_of(work, struct kthread_flush_work, work); - complete(&fwork->done); + if (!noop) + wait_for_completion(&fwork.done); } +EXPORT_SYMBOL_GPL(flush_kthread_work); /** * flush_kthread_worker - flush all current works on a kthread_worker --- linux-3.5.0.orig/kernel/timer.c +++ linux-3.5.0/kernel/timer.c @@ -63,6 +63,7 @@ #define TVR_SIZE (1 << TVR_BITS) #define TVN_MASK (TVN_SIZE - 1) #define TVR_MASK (TVR_SIZE - 1) +#define MAX_TVAL ((unsigned long)((1ULL << (TVR_BITS + 4*TVN_BITS)) - 1)) struct tvec { struct list_head vec[TVN_SIZE]; @@ -356,11 +357,12 @@ vec = base->tv1.vec + (base->timer_jiffies & TVR_MASK); } else { int i; - /* If the timeout is larger than 0xffffffff on 64-bit - * architectures then we use the maximum timeout: + /* If the timeout is larger than MAX_TVAL (on 64-bit + * architectures or with CONFIG_BASE_SMALL=1) then we + * use the maximum timeout. */ - if (idx > 0xffffffffUL) { - idx = 0xffffffffUL; + if (idx > MAX_TVAL) { + idx = MAX_TVAL; expires = idx + base->timer_jiffies; } i = (expires >> (TVR_BITS + 3 * TVN_BITS)) & TVN_MASK; --- linux-3.5.0.orig/kernel/kexec.c +++ linux-3.5.0/kernel/kexec.c @@ -947,6 +947,11 @@ if (!capable(CAP_SYS_BOOT)) return -EPERM; + /* Processes in containers must not be allowed to load a new + * kernel, even if they have CAP_SYS_BOOT */ + if (task_active_pid_ns(current) != &init_pid_ns) + return -EPERM; + /* * Verify we have a legal set of flags * This leaves us room for future extensions. --- linux-3.5.0.orig/kernel/async.c +++ linux-3.5.0/kernel/async.c @@ -84,19 +84,35 @@ */ static async_cookie_t __lowest_in_progress(struct list_head *running) { + async_cookie_t first_running = next_cookie; /* infinity value */ + async_cookie_t first_pending = next_cookie; /* ditto */ struct async_entry *entry; + if (!running) { /* just check the entry count */ + if (atomic_read(&entry_count)) + return 0; /* smaller than any cookie */ + else + return next_cookie; + } + + /* + * Both running and pending lists are sorted but not disjoint. + * Take the first cookies from both and return the min. + */ if (!list_empty(running)) { entry = list_first_entry(running, struct async_entry, list); - return entry->cookie; + first_running = entry->cookie; } - list_for_each_entry(entry, &async_pending, list) - if (entry->running == running) - return entry->cookie; + list_for_each_entry(entry, &async_pending, list) { + if (entry->running == running) { + first_pending = entry->cookie; + break; + } + } - return next_cookie; /* "infinity" value */ + return min(first_running, first_pending); } static async_cookie_t lowest_in_progress(struct list_head *running) @@ -117,12 +133,16 @@ { struct async_entry *entry = container_of(work, struct async_entry, work); + struct async_entry *pos; unsigned long flags; ktime_t uninitialized_var(calltime), delta, rettime; - /* 1) move self to the running queue */ + /* 1) move self to the running queue, make sure it stays sorted */ spin_lock_irqsave(&async_lock, flags); - list_move_tail(&entry->list, entry->running); + list_for_each_entry_reverse(pos, entry->running, list) + if (entry->cookie < pos->cookie) + break; + list_move_tail(&entry->list, &pos->list); spin_unlock_irqrestore(&async_lock, flags); /* 2) run (and print duration) */ @@ -236,9 +256,7 @@ */ void async_synchronize_full(void) { - do { - async_synchronize_cookie(next_cookie); - } while (!list_empty(&async_running) || !list_empty(&async_pending)); + async_synchronize_cookie_domain(next_cookie, NULL); } EXPORT_SYMBOL_GPL(async_synchronize_full); @@ -258,7 +276,7 @@ /** * async_synchronize_cookie_domain - synchronize asynchronous function calls within a certain domain with cookie checkpointing * @cookie: async_cookie_t to use as checkpoint - * @running: running list to synchronize on + * @running: running list to synchronize on, NULL indicates all lists * * This function waits until all asynchronous function calls for the * synchronization domain specified by the running list @list submitted --- linux-3.5.0.orig/kernel/ptrace.c +++ linux-3.5.0/kernel/ptrace.c @@ -117,11 +117,45 @@ * TASK_KILLABLE sleeps. */ if (child->jobctl & JOBCTL_STOP_PENDING || task_is_traced(child)) - signal_wake_up(child, task_is_traced(child)); + ptrace_signal_wake_up(child, true); spin_unlock(&child->sighand->siglock); } +/* Ensure that nothing can wake it up, even SIGKILL */ +static bool ptrace_freeze_traced(struct task_struct *task) +{ + bool ret = false; + + /* Lockless, nobody but us can set this flag */ + if (task->jobctl & JOBCTL_LISTENING) + return ret; + + spin_lock_irq(&task->sighand->siglock); + if (task_is_traced(task) && !__fatal_signal_pending(task)) { + task->state = __TASK_TRACED; + ret = true; + } + spin_unlock_irq(&task->sighand->siglock); + + return ret; +} + +static void ptrace_unfreeze_traced(struct task_struct *task) +{ + if (task->state != __TASK_TRACED) + return; + + WARN_ON(!task->ptrace || task->parent != current); + + spin_lock_irq(&task->sighand->siglock); + if (__fatal_signal_pending(task)) + wake_up_state(task, __TASK_TRACED); + else + task->state = TASK_TRACED; + spin_unlock_irq(&task->sighand->siglock); +} + /** * ptrace_check_attach - check whether ptracee is ready for ptrace operation * @child: ptracee to check for @@ -151,24 +185,29 @@ * be changed by us so it's not changing right after this. */ read_lock(&tasklist_lock); - if ((child->ptrace & PT_PTRACED) && child->parent == current) { + if (child->ptrace && child->parent == current) { + WARN_ON(child->state == __TASK_TRACED); /* * child->sighand can't be NULL, release_task() * does ptrace_unlink() before __exit_signal(). */ - spin_lock_irq(&child->sighand->siglock); - WARN_ON_ONCE(task_is_stopped(child)); - if (ignore_state || (task_is_traced(child) && - !(child->jobctl & JOBCTL_LISTENING))) + if (ignore_state || ptrace_freeze_traced(child)) ret = 0; - spin_unlock_irq(&child->sighand->siglock); } read_unlock(&tasklist_lock); - if (!ret && !ignore_state) - ret = wait_task_inactive(child, TASK_TRACED) ? 0 : -ESRCH; + if (!ret && !ignore_state) { + if (!wait_task_inactive(child, __TASK_TRACED)) { + /* + * This can only happen if may_ptrace_stop() fails and + * ptrace_stop() changes ->state back to TASK_RUNNING, + * so we should not worry about leaking __TASK_TRACED. + */ + WARN_ON(child->state == __TASK_TRACED); + ret = -ESRCH; + } + } - /* All systems go.. */ return ret; } @@ -310,7 +349,7 @@ */ if (task_is_stopped(task) && task_set_jobctl_pending(task, JOBCTL_TRAP_STOP | JOBCTL_TRAPPING)) - signal_wake_up(task, 1); + signal_wake_up_state(task, __TASK_STOPPED); spin_unlock(&task->sighand->siglock); @@ -727,7 +766,7 @@ * tracee into STOP. */ if (likely(task_set_jobctl_pending(child, JOBCTL_TRAP_STOP))) - signal_wake_up(child, child->jobctl & JOBCTL_LISTENING); + ptrace_signal_wake_up(child, child->jobctl & JOBCTL_LISTENING); unlock_task_sighand(child, &flags); ret = 0; @@ -753,7 +792,7 @@ * start of this trap and now. Trigger re-trap. */ if (child->jobctl & JOBCTL_TRAP_NOTIFY) - signal_wake_up(child, true); + ptrace_signal_wake_up(child, true); ret = 0; } unlock_task_sighand(child, &flags); @@ -890,6 +929,8 @@ goto out_put_task_struct; ret = arch_ptrace(child, request, addr, data); + if (ret || request != PTRACE_DETACH) + ptrace_unfreeze_traced(child); out_put_task_struct: put_task_struct(child); @@ -1029,8 +1070,11 @@ ret = ptrace_check_attach(child, request == PTRACE_KILL || request == PTRACE_INTERRUPT); - if (!ret) + if (!ret) { ret = compat_arch_ptrace(child, request, addr, data); + if (ret || request != PTRACE_DETACH) + ptrace_unfreeze_traced(child); + } out_put_task_struct: put_task_struct(child); --- linux-3.5.0.orig/kernel/audit_tree.c +++ linux-3.5.0/kernel/audit_tree.c @@ -249,8 +249,7 @@ list_del_rcu(&chunk->hash); spin_unlock(&hash_lock); spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); - fsnotify_put_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); goto out; } @@ -259,7 +258,7 @@ fsnotify_duplicate_mark(&new->mark, entry); if (fsnotify_add_mark(&new->mark, new->mark.group, new->mark.i.inode, NULL, 1)) { - free_chunk(new); + fsnotify_put_mark(&new->mark); goto Fallback; } @@ -292,8 +291,8 @@ owner->root = new; spin_unlock(&hash_lock); spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); - fsnotify_put_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); + fsnotify_put_mark(&new->mark); /* drop initial reference */ goto out; Fallback: @@ -322,7 +321,7 @@ entry = &chunk->mark; if (fsnotify_add_mark(entry, audit_tree_group, inode, NULL, 0)) { - free_chunk(chunk); + fsnotify_put_mark(entry); return -ENOSPC; } @@ -332,7 +331,7 @@ spin_unlock(&hash_lock); chunk->dead = 1; spin_unlock(&entry->lock); - fsnotify_destroy_mark(entry); + fsnotify_destroy_mark(entry, audit_tree_group); fsnotify_put_mark(entry); return 0; } @@ -347,6 +346,7 @@ insert_hash(chunk); spin_unlock(&hash_lock); spin_unlock(&entry->lock); + fsnotify_put_mark(entry); /* drop initial reference */ return 0; } @@ -396,7 +396,7 @@ fsnotify_duplicate_mark(chunk_entry, old_entry); if (fsnotify_add_mark(chunk_entry, chunk_entry->group, chunk_entry->i.inode, NULL, 1)) { spin_unlock(&old_entry->lock); - free_chunk(chunk); + fsnotify_put_mark(chunk_entry); fsnotify_put_mark(old_entry); return -ENOSPC; } @@ -412,7 +412,7 @@ spin_unlock(&chunk_entry->lock); spin_unlock(&old_entry->lock); - fsnotify_destroy_mark(chunk_entry); + fsnotify_destroy_mark(chunk_entry, audit_tree_group); fsnotify_put_mark(chunk_entry); fsnotify_put_mark(old_entry); @@ -443,9 +443,9 @@ spin_unlock(&hash_lock); spin_unlock(&chunk_entry->lock); spin_unlock(&old_entry->lock); - fsnotify_destroy_mark(old_entry); + fsnotify_destroy_mark(old_entry, audit_tree_group); + fsnotify_put_mark(chunk_entry); /* drop initial reference */ fsnotify_put_mark(old_entry); /* pair to fsnotify_find mark_entry */ - fsnotify_put_mark(old_entry); /* and kill it */ return 0; } @@ -916,7 +916,12 @@ struct audit_chunk *chunk = container_of(entry, struct audit_chunk, mark); evict_chunk(chunk); - fsnotify_put_mark(entry); + + /* + * We are guaranteed to have at least one reference to the mark from + * either the inode or the caller of fsnotify_destroy_mark(). + */ + BUG_ON(atomic_read(&entry->refcnt) < 1); } static bool audit_tree_send_event(struct fsnotify_group *group, struct inode *inode, --- linux-3.5.0.orig/kernel/timeconst.pl +++ linux-3.5.0/kernel/timeconst.pl @@ -369,10 +369,8 @@ die "Usage: $0 HZ\n"; } - @val = @{$canned_values{$hz}}; - if (!defined(@val)) { - @val = compute_values($hz); - } + $cv = $canned_values{$hz}; + @val = defined($cv) ? @$cv : compute_values($hz); output($hz, @val); } exit 0; --- linux-3.5.0.orig/kernel/cgroup_freezer.c +++ linux-3.5.0/kernel/cgroup_freezer.c @@ -186,23 +186,15 @@ { struct freezer *freezer; - /* - * No lock is needed, since the task isn't on tasklist yet, - * so it can't be moved to another cgroup, which means the - * freezer won't be removed and will be valid during this - * function call. Nevertheless, apply RCU read-side critical - * section to suppress RCU lockdep false positives. - */ rcu_read_lock(); freezer = task_freezer(task); - rcu_read_unlock(); /* * The root cgroup is non-freezable, so we can skip the * following check. */ if (!freezer->css.cgroup->parent) - return; + goto out; spin_lock_irq(&freezer->lock); BUG_ON(freezer->state == CGROUP_FROZEN); @@ -210,7 +202,10 @@ /* Locking avoids race with FREEZING -> THAWED transitions. */ if (freezer->state == CGROUP_FREEZING) freeze_task(task); + spin_unlock_irq(&freezer->lock); +out: + rcu_read_unlock(); } /* --- linux-3.5.0.orig/kernel/futex.c +++ linux-3.5.0/kernel/futex.c @@ -716,7 +716,7 @@ struct futex_pi_state **ps, struct task_struct *task, int set_waiters) { - int lock_taken, ret, ownerdied = 0; + int lock_taken, ret, force_take = 0; u32 uval, newval, curval, vpid = task_pid_vnr(task); retry: @@ -755,17 +755,15 @@ newval = curval | FUTEX_WAITERS; /* - * There are two cases, where a futex might have no owner (the - * owner TID is 0): OWNER_DIED. We take over the futex in this - * case. We also do an unconditional take over, when the owner - * of the futex died. - * - * This is safe as we are protected by the hash bucket lock ! + * Should we force take the futex? See below. */ - if (unlikely(ownerdied || !(curval & FUTEX_TID_MASK))) { - /* Keep the OWNER_DIED bit */ + if (unlikely(force_take)) { + /* + * Keep the OWNER_DIED and the WAITERS bit and set the + * new TID value. + */ newval = (curval & ~FUTEX_TID_MASK) | vpid; - ownerdied = 0; + force_take = 0; lock_taken = 1; } @@ -775,7 +773,7 @@ goto retry; /* - * We took the lock due to owner died take over. + * We took the lock due to forced take over. */ if (unlikely(lock_taken)) return 1; @@ -790,20 +788,25 @@ switch (ret) { case -ESRCH: /* - * No owner found for this futex. Check if the - * OWNER_DIED bit is set to figure out whether - * this is a robust futex or not. + * We failed to find an owner for this + * futex. So we have no pi_state to block + * on. This can happen in two cases: + * + * 1) The owner died + * 2) A stale FUTEX_WAITERS bit + * + * Re-read the futex value. */ if (get_futex_value_locked(&curval, uaddr)) return -EFAULT; /* - * We simply start over in case of a robust - * futex. The code above will take the futex - * and return happy. + * If the owner died or we have a stale + * WAITERS bit the owner TID in the user space + * futex is 0. */ - if (curval & FUTEX_OWNER_DIED) { - ownerdied = 1; + if (!(curval & FUTEX_TID_MASK)) { + force_take = 1; goto retry; } default: @@ -840,6 +843,9 @@ { struct task_struct *p = q->task; + if (WARN(q->pi_state || q->rt_waiter, "refusing to wake PI futex\n")) + return; + /* * We set q->lock_ptr = NULL _before_ we wake up the task. If * a non-futex wake up happens on another CPU then the task @@ -1075,6 +1081,10 @@ plist_for_each_entry_safe(this, next, head, list) { if (match_futex (&this->key, &key1)) { + if (this->pi_state || this->rt_waiter) { + ret = -EINVAL; + goto out_unlock; + } wake_futex(this); if (++ret >= nr_wake) break; @@ -1087,6 +1097,10 @@ op_ret = 0; plist_for_each_entry_safe(this, next, head, list) { if (match_futex (&this->key, &key2)) { + if (this->pi_state || this->rt_waiter) { + ret = -EINVAL; + goto out_unlock; + } wake_futex(this); if (++op_ret >= nr_wake2) break; @@ -1095,6 +1109,7 @@ ret += op_ret; } +out_unlock: double_unlock_hb(hb1, hb2); out_put_keys: put_futex_key(&key2); @@ -1384,9 +1399,13 @@ /* * FUTEX_WAIT_REQEUE_PI and FUTEX_CMP_REQUEUE_PI should always * be paired with each other and no other futex ops. + * + * We should never be requeueing a futex_q with a pi_state, + * which is awaiting a futex_unlock_pi(). */ if ((requeue_pi && !this->rt_waiter) || - (!requeue_pi && this->rt_waiter)) { + (!requeue_pi && this->rt_waiter) || + this->pi_state) { ret = -EINVAL; break; } @@ -2231,11 +2250,11 @@ * @uaddr2: the pi futex we will take prior to returning to user-space * * The caller will wait on uaddr and will be requeued by futex_requeue() to - * uaddr2 which must be PI aware. Normal wakeup will wake on uaddr2 and - * complete the acquisition of the rt_mutex prior to returning to userspace. - * This ensures the rt_mutex maintains an owner when it has waiters; without - * one, the pi logic wouldn't know which task to boost/deboost, if there was a - * need to. + * uaddr2 which must be PI aware and unique from uaddr. Normal wakeup will wake + * on uaddr2 and complete the acquisition of the rt_mutex prior to returning to + * userspace. This ensures the rt_mutex maintains an owner when it has waiters; + * without one, the pi logic would not know which task to boost/deboost, if + * there was a need to. * * We call schedule in futex_wait_queue_me() when we enqueue and return there * via the following: @@ -2272,6 +2291,9 @@ struct futex_q q = futex_q_init; int res, ret; + if (uaddr == uaddr2) + return -EINVAL; + if (!bitset) return -EINVAL; @@ -2343,7 +2365,7 @@ * signal. futex_unlock_pi() will not destroy the lock_ptr nor * the pi_state. */ - WARN_ON(!&q.pi_state); + WARN_ON(!q.pi_state); pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter, 1); debug_rt_mutex_free_waiter(&rt_waiter); @@ -2370,7 +2392,7 @@ * fault, unlock the rt_mutex and return the fault to userspace. */ if (ret == -EFAULT) { - if (rt_mutex_owner(pi_mutex) == current) + if (pi_mutex && rt_mutex_owner(pi_mutex) == current) rt_mutex_unlock(pi_mutex); } else if (ret == -EINTR) { /* @@ -2449,8 +2471,6 @@ if (!futex_cmpxchg_enabled) return -ENOSYS; - WARN_ONCE(1, "deprecated: get_robust_list will be deleted in 2013.\n"); - rcu_read_lock(); ret = -ESRCH; --- linux-3.5.0.orig/kernel/auditsc.c +++ linux-3.5.0/kernel/auditsc.c @@ -2670,7 +2670,7 @@ context->type = AUDIT_MMAP; } -static void audit_log_abend(struct audit_buffer *ab, char *reason, long signr) +static void audit_log_task(struct audit_buffer *ab) { uid_t auid, uid; gid_t gid; @@ -2685,6 +2685,11 @@ audit_log_task_context(ab); audit_log_format(ab, " pid=%d comm=", current->pid); audit_log_untrustedstring(ab, current->comm); +} + +static void audit_log_abend(struct audit_buffer *ab, char *reason, long signr) +{ + audit_log_task(ab); audit_log_format(ab, " reason="); audit_log_string(ab, reason); audit_log_format(ab, " sig=%ld", signr); @@ -2715,8 +2720,11 @@ { struct audit_buffer *ab; - ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_ANOM_ABEND); - audit_log_abend(ab, "seccomp", signr); + ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_SECCOMP); + if (unlikely(!ab)) + return; + audit_log_task(ab); + audit_log_format(ab, " sig=%ld", signr); audit_log_format(ab, " syscall=%ld", syscall); audit_log_format(ab, " compat=%d", is_compat_task()); audit_log_format(ab, " ip=0x%lx", KSTK_EIP(current)); --- linux-3.5.0.orig/kernel/params.c +++ linux-3.5.0/kernel/params.c @@ -90,8 +90,8 @@ unsigned num_params, s16 min_level, s16 max_level, - int (*handle_unknown)(char *param, char *val, - const char *doing)) + int (*handle_arg)(char *param, char *val, + const char *doing, int known)) { unsigned int i; int err; @@ -106,6 +106,14 @@ if (!val && params[i].ops->set != param_set_bool && params[i].ops->set != param_set_bint) return -EINVAL; + if (handle_arg) { + int ret; + pr_debug("Valid argument: calling %p\n", + handle_arg); + ret = handle_arg(param, val, doing, 1); + if (ret) + return ret; + } pr_debug("handling %s with %p\n", param, params[i].ops->set); mutex_lock(¶m_lock); @@ -115,9 +123,9 @@ } } - if (handle_unknown) { + if (handle_arg) { pr_debug("doing %s: %s='%s'\n", doing, param, val); - return handle_unknown(param, val, doing); + return handle_arg(param, val, doing, 0); } pr_debug("Unknown argument '%s'\n", param); @@ -183,7 +191,7 @@ unsigned num, s16 min_level, s16 max_level, - int (*unknown)(char *param, char *val, const char *doing)) + int (*handle_arg)(char *param, char *val, const char *doing, int arg)) { char *param, *val; @@ -200,7 +208,7 @@ args = next_arg(args, ¶m, &val); irq_was_disabled = irqs_disabled(); ret = parse_one(param, val, doing, params, num, - min_level, max_level, unknown); + min_level, max_level, handle_arg); if (irq_was_disabled && !irqs_disabled()) pr_warn("%s: option '%s' enabled irq's!\n", doing, param); --- linux-3.5.0.orig/kernel/hrtimer.c +++ linux-3.5.0/kernel/hrtimer.c @@ -640,21 +640,9 @@ * and expiry check is done in the hrtimer_interrupt or in the softirq. */ static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, - struct hrtimer_clock_base *base, - int wakeup) + struct hrtimer_clock_base *base) { - if (base->cpu_base->hres_active && hrtimer_reprogram(timer, base)) { - if (wakeup) { - raw_spin_unlock(&base->cpu_base->lock); - raise_softirq_irqoff(HRTIMER_SOFTIRQ); - raw_spin_lock(&base->cpu_base->lock); - } else - __raise_softirq_irqoff(HRTIMER_SOFTIRQ); - - return 1; - } - - return 0; + return base->cpu_base->hres_active && hrtimer_reprogram(timer, base); } static inline ktime_t hrtimer_update_base(struct hrtimer_cpu_base *base) @@ -735,8 +723,7 @@ static inline void hrtimer_force_reprogram(struct hrtimer_cpu_base *base, int skip_equal) { } static inline int hrtimer_enqueue_reprogram(struct hrtimer *timer, - struct hrtimer_clock_base *base, - int wakeup) + struct hrtimer_clock_base *base) { return 0; } @@ -995,8 +982,21 @@ * * XXX send_remote_softirq() ? */ - if (leftmost && new_base->cpu_base == &__get_cpu_var(hrtimer_bases)) - hrtimer_enqueue_reprogram(timer, new_base, wakeup); + if (leftmost && new_base->cpu_base == &__get_cpu_var(hrtimer_bases) + && hrtimer_enqueue_reprogram(timer, new_base)) { + if (wakeup) { + /* + * We need to drop cpu_base->lock to avoid a + * lock ordering issue vs. rq->lock. + */ + raw_spin_unlock(&new_base->cpu_base->lock); + raise_softirq_irqoff(HRTIMER_SOFTIRQ); + local_irq_restore(flags); + return ret; + } else { + __raise_softirq_irqoff(HRTIMER_SOFTIRQ); + } + } unlock_hrtimer_base(timer, &flags); --- linux-3.5.0.orig/kernel/fork.c +++ linux-3.5.0/kernel/fork.c @@ -459,8 +459,8 @@ if (retval) goto out; - if (file && uprobe_mmap(tmp)) - goto out; + if (file) + uprobe_mmap(tmp); } /* a new mm has just been created */ arch_dup_mmap(oldmm, mm); @@ -1160,7 +1160,6 @@ { int retval; struct task_struct *p; - int cgroup_callbacks_done = 0; if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -1422,12 +1421,6 @@ INIT_LIST_HEAD(&p->thread_group); INIT_HLIST_HEAD(&p->task_works); - /* Now that the task is set up, run cgroup callbacks if - * necessary. We need to run them before the task is visible - * on the tasklist. */ - cgroup_fork_callbacks(p); - cgroup_callbacks_done = 1; - /* Need tasklist lock for parent etc handling! */ write_lock_irq(&tasklist_lock); @@ -1532,7 +1525,7 @@ #endif if (clone_flags & CLONE_THREAD) threadgroup_change_end(current); - cgroup_exit(p, cgroup_callbacks_done); + cgroup_exit(p, 0); delayacct_tsk_free(p); module_put(task_thread_info(p)->exec_domain->module); bad_fork_cleanup_count: --- linux-3.5.0.orig/kernel/power/hibernate.c +++ linux-3.5.0/kernel/power/hibernate.c @@ -353,6 +353,7 @@ } suspend_console(); + ftrace_stop(); pm_restrict_gfp_mask(); error = dpm_suspend(PMSG_FREEZE); @@ -378,6 +379,7 @@ if (error || !in_suspend) pm_restore_gfp_mask(); + ftrace_start(); resume_console(); dpm_complete(msg); @@ -480,6 +482,7 @@ pm_prepare_console(); suspend_console(); + ftrace_stop(); pm_restrict_gfp_mask(); error = dpm_suspend_start(PMSG_QUIESCE); if (!error) { @@ -487,6 +490,7 @@ dpm_resume_end(PMSG_RECOVER); } pm_restore_gfp_mask(); + ftrace_start(); resume_console(); pm_restore_console(); return error; @@ -513,6 +517,7 @@ entering_platform_hibernation = true; suspend_console(); + ftrace_stop(); error = dpm_suspend_start(PMSG_HIBERNATE); if (error) { if (hibernation_ops->recover) @@ -556,6 +561,7 @@ Resume_devices: entering_platform_hibernation = false; dpm_resume_end(PMSG_RESTORE); + ftrace_start(); resume_console(); Close: --- linux-3.5.0.orig/kernel/power/wakelock.c +++ linux-3.5.0/kernel/power/wakelock.c @@ -9,6 +9,7 @@ * manipulate wakelocks on Android. */ +#include #include #include #include @@ -188,6 +189,9 @@ size_t len; int ret = 0; + if (!capable(CAP_BLOCK_SUSPEND)) + return -EPERM; + while (*str && !isspace(*str)) str++; @@ -231,6 +235,9 @@ size_t len; int ret = 0; + if (!capable(CAP_BLOCK_SUSPEND)) + return -EPERM; + len = strlen(buf); if (!len) return -EINVAL; --- linux-3.5.0.orig/kernel/power/suspend.c +++ linux-3.5.0/kernel/power/suspend.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include "power.h" @@ -212,6 +213,7 @@ goto Close; } suspend_console(); + ftrace_stop(); suspend_test_start(); error = dpm_suspend_start(PMSG_SUSPEND); if (error) { @@ -231,6 +233,7 @@ suspend_test_start(); dpm_resume_end(PMSG_RESUME); suspend_test_finish("resume devices"); + ftrace_start(); resume_console(); Close: if (suspend_ops->end) --- linux-3.5.0.orig/kernel/events/core.c +++ linux-3.5.0/kernel/events/core.c @@ -2933,12 +2933,12 @@ /* * Called when the last reference to the file is gone. */ -static int perf_release(struct inode *inode, struct file *file) +static void put_event(struct perf_event *event) { - struct perf_event *event = file->private_data; struct task_struct *owner; - file->private_data = NULL; + if (!atomic_long_dec_and_test(&event->refcount)) + return; rcu_read_lock(); owner = ACCESS_ONCE(event->owner); @@ -2973,7 +2973,13 @@ put_task_struct(owner); } - return perf_event_release_kernel(event); + perf_event_release_kernel(event); +} + +static int perf_release(struct inode *inode, struct file *file) +{ + put_event(file->private_data); + return 0; } u64 perf_event_read_value(struct perf_event *event, u64 *enabled, u64 *running) @@ -3225,7 +3231,7 @@ static const struct file_operations perf_fops; -static struct perf_event *perf_fget_light(int fd, int *fput_needed) +static struct file *perf_fget_light(int fd, int *fput_needed) { struct file *file; @@ -3239,7 +3245,7 @@ return ERR_PTR(-EBADF); } - return file->private_data; + return file; } static int perf_event_set_output(struct perf_event *event, @@ -3271,19 +3277,21 @@ case PERF_EVENT_IOC_SET_OUTPUT: { + struct file *output_file = NULL; struct perf_event *output_event = NULL; int fput_needed = 0; int ret; if (arg != -1) { - output_event = perf_fget_light(arg, &fput_needed); - if (IS_ERR(output_event)) - return PTR_ERR(output_event); + output_file = perf_fget_light(arg, &fput_needed); + if (IS_ERR(output_file)) + return PTR_ERR(output_file); + output_event = output_file->private_data; } ret = perf_event_set_output(event, output_event); if (output_event) - fput_light(output_event->filp, fput_needed); + fput_light(output_file, fput_needed); return ret; } @@ -5922,6 +5930,7 @@ mutex_init(&event->mmap_mutex); + atomic_long_set(&event->refcount, 1); event->cpu = cpu; event->attr = *attr; event->group_leader = group_leader; @@ -6232,12 +6241,12 @@ return event_fd; if (group_fd != -1) { - group_leader = perf_fget_light(group_fd, &fput_needed); - if (IS_ERR(group_leader)) { - err = PTR_ERR(group_leader); + group_file = perf_fget_light(group_fd, &fput_needed); + if (IS_ERR(group_file)) { + err = PTR_ERR(group_file); goto err_fd; } - group_file = group_leader->filp; + group_leader = group_file->private_data; if (flags & PERF_FLAG_FD_OUTPUT) output_event = group_leader; if (flags & PERF_FLAG_FD_NO_GROUP) @@ -6372,7 +6381,6 @@ put_ctx(gctx); } - event->filp = event_file; WARN_ON_ONCE(ctx->parent_ctx); mutex_lock(&ctx->mutex); @@ -6462,7 +6470,6 @@ goto err_free; } - event->filp = NULL; WARN_ON_ONCE(ctx->parent_ctx); mutex_lock(&ctx->mutex); perf_install_in_context(ctx, event, cpu); @@ -6511,7 +6518,7 @@ * Release the parent event, if this was the last * reference to it. */ - fput(parent_event->filp); + put_event(parent_event); } static void @@ -6587,9 +6594,8 @@ * * __perf_event_exit_task() * sync_child_event() - * fput(parent_event->filp) - * perf_release() - * mutex_lock(&ctx->mutex) + * put_event() + * mutex_lock(&ctx->mutex) * * But since its the parent context it won't be the same instance. */ @@ -6657,7 +6663,7 @@ list_del_init(&event->child_list); mutex_unlock(&parent->child_mutex); - fput(parent->filp); + put_event(parent); perf_group_detach(event); list_del_event(event, ctx); @@ -6737,6 +6743,12 @@ NULL, NULL); if (IS_ERR(child_event)) return child_event; + + if (!atomic_long_inc_not_zero(&parent_event->refcount)) { + free_event(child_event); + return NULL; + } + get_ctx(child_ctx); /* @@ -6778,14 +6790,6 @@ raw_spin_unlock_irqrestore(&child_ctx->lock, flags); /* - * Get a reference to the parent filp - we will fput it - * when the child event exits. This is safe to do because - * we are in the parent and we know that the filp still - * exists and has a nonzero count: - */ - atomic_long_inc(&parent_event->filp->f_count); - - /* * Link this into the parent event's child list */ WARN_ON_ONCE(parent_event->ctx->parent_ctx); --- linux-3.5.0.orig/kernel/sched/core.c +++ linux-3.5.0/kernel/sched/core.c @@ -1096,7 +1096,7 @@ * a task's CPU. ->pi_lock for waking tasks, rq->lock for runnable tasks. * * sched_move_task() holds both and thus holding either pins the cgroup, - * see set_task_rq(). + * see task_group(). * * Furthermore, all task_rq users should acquire both locks, see * task_rq_lock(). @@ -1686,7 +1686,8 @@ */ int wake_up_process(struct task_struct *p) { - return try_to_wake_up(p, TASK_ALL, 0); + WARN_ON(task_is_stopped_or_traced(p)); + return try_to_wake_up(p, TASK_NORMAL, 0); } EXPORT_SYMBOL(wake_up_process); @@ -3142,6 +3143,20 @@ # define nsecs_to_cputime(__nsecs) nsecs_to_jiffies(__nsecs) #endif +static cputime_t scale_utime(cputime_t utime, cputime_t rtime, cputime_t total) +{ + u64 temp = (__force u64) rtime; + + temp *= (__force u64) utime; + + if (sizeof(cputime_t) == 4) + temp = div_u64(temp, (__force u32) total); + else + temp = div64_u64(temp, (__force u64) total); + + return (__force cputime_t) temp; +} + void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st) { cputime_t rtime, utime = p->utime, total = utime + p->stime; @@ -3151,13 +3166,9 @@ */ rtime = nsecs_to_cputime(p->se.sum_exec_runtime); - if (total) { - u64 temp = (__force u64) rtime; - - temp *= (__force u64) utime; - do_div(temp, (__force u32) total); - utime = (__force cputime_t) temp; - } else + if (total) + utime = scale_utime(utime, rtime, total); + else utime = rtime; /* @@ -3184,13 +3195,9 @@ total = cputime.utime + cputime.stime; rtime = nsecs_to_cputime(cputime.sum_exec_runtime); - if (total) { - u64 temp = (__force u64) rtime; - - temp *= (__force u64) cputime.utime; - do_div(temp, (__force u32) total); - utime = (__force cputime_t) temp; - } else + if (total) + utime = scale_utime(cputime.utime, rtime, total); + else utime = rtime; sig->prev_utime = max(sig->prev_utime, utime); @@ -7097,34 +7104,66 @@ mutex_unlock(&sched_domains_mutex); } +static int num_cpus_frozen; /* used to mark begin/end of suspend/resume */ + /* * Update cpusets according to cpu_active mask. If cpusets are * disabled, cpuset_update_active_cpus() becomes a simple wrapper * around partition_sched_domains(). + * + * If we come here as part of a suspend/resume, don't touch cpusets because we + * want to restore it back to its original state upon resume anyway. */ static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action, void *hcpu) { - switch (action & ~CPU_TASKS_FROZEN) { + switch (action) { + case CPU_ONLINE_FROZEN: + case CPU_DOWN_FAILED_FROZEN: + + /* + * num_cpus_frozen tracks how many CPUs are involved in suspend + * resume sequence. As long as this is not the last online + * operation in the resume sequence, just build a single sched + * domain, ignoring cpusets. + */ + num_cpus_frozen--; + if (likely(num_cpus_frozen)) { + partition_sched_domains(1, NULL, NULL); + break; + } + + /* + * This is the last CPU online operation. So fall through and + * restore the original sched domains by considering the + * cpuset configurations. + */ + case CPU_ONLINE: case CPU_DOWN_FAILED: cpuset_update_active_cpus(); - return NOTIFY_OK; + break; default: return NOTIFY_DONE; } + return NOTIFY_OK; } static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action, void *hcpu) { - switch (action & ~CPU_TASKS_FROZEN) { + switch (action) { case CPU_DOWN_PREPARE: cpuset_update_active_cpus(); - return NOTIFY_OK; + break; + case CPU_DOWN_PREPARE_FROZEN: + num_cpus_frozen++; + partition_sched_domains(1, NULL, NULL); + break; default: return NOTIFY_DONE; } + return NOTIFY_OK; } void __init sched_init_smp(void) @@ -7179,6 +7218,7 @@ #ifdef CONFIG_CGROUP_SCHED struct task_group root_task_group; +LIST_HEAD(task_groups); #endif DECLARE_PER_CPU(cpumask_var_t, load_balance_tmpmask); @@ -7589,6 +7629,7 @@ */ void sched_move_task(struct task_struct *tsk) { + struct task_group *tg; int on_rq, running; unsigned long flags; struct rq *rq; @@ -7603,6 +7644,12 @@ if (unlikely(running)) tsk->sched_class->put_prev_task(rq, tsk); + tg = container_of(task_subsys_state_check(tsk, cpu_cgroup_subsys_id, + lockdep_is_held(&tsk->sighand->siglock)), + struct task_group, css); + tg = autogroup_task_group(tsk, tg); + tsk->sched_task_group = tg; + #ifdef CONFIG_FAIR_GROUP_SCHED if (tsk->sched_class->task_move_group) tsk->sched_class->task_move_group(tsk, on_rq); --- linux-3.5.0.orig/kernel/sched/stop_task.c +++ linux-3.5.0/kernel/sched/stop_task.c @@ -27,8 +27,10 @@ { struct task_struct *stop = rq->stop; - if (stop && stop->on_rq) + if (stop && stop->on_rq) { + stop->se.exec_start = rq->clock_task; return stop; + } return NULL; } @@ -52,6 +54,21 @@ static void put_prev_task_stop(struct rq *rq, struct task_struct *prev) { + struct task_struct *curr = rq->curr; + u64 delta_exec; + + delta_exec = rq->clock_task - curr->se.exec_start; + if (unlikely((s64)delta_exec < 0)) + delta_exec = 0; + + schedstat_set(curr->se.statistics.exec_max, + max(curr->se.statistics.exec_max, delta_exec)); + + curr->se.sum_exec_runtime += delta_exec; + account_group_exec_runtime(curr, delta_exec); + + curr->se.exec_start = rq->clock_task; + cpuacct_charge(curr, delta_exec); } static void task_tick_stop(struct rq *rq, struct task_struct *curr, int queued) @@ -60,6 +77,9 @@ static void set_curr_task_stop(struct rq *rq) { + struct task_struct *stop = rq->stop; + + stop->se.exec_start = rq->clock_task; } static void switched_to_stop(struct rq *rq, struct task_struct *p) --- linux-3.5.0.orig/kernel/sched/auto_group.h +++ linux-3.5.0/kernel/sched/auto_group.h @@ -4,11 +4,6 @@ #include struct autogroup { - /* - * reference doesn't mean how many thread attach to this - * autogroup now. It just stands for the number of task - * could use this autogroup. - */ struct kref kref; struct task_group *tg; struct rw_semaphore lock; --- linux-3.5.0.orig/kernel/sched/auto_group.c +++ linux-3.5.0/kernel/sched/auto_group.c @@ -143,15 +143,11 @@ p->signal->autogroup = autogroup_kref_get(ag); - if (!ACCESS_ONCE(sysctl_sched_autogroup_enabled)) - goto out; - t = p; do { sched_move_task(t); } while_each_thread(p, t); -out: unlock_task_sighand(p, &flags); autogroup_kref_put(prev); } --- linux-3.5.0.orig/kernel/sched/rt.c +++ linux-3.5.0/kernel/sched/rt.c @@ -566,7 +566,7 @@ static int do_balance_runtime(struct rt_rq *rt_rq) { struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq); - struct root_domain *rd = cpu_rq(smp_processor_id())->rd; + struct root_domain *rd = rq_of_rt_rq(rt_rq)->rd; int i, weight, more = 0; u64 rt_period; --- linux-3.5.0.orig/kernel/sched/sched.h +++ linux-3.5.0/kernel/sched/sched.h @@ -80,7 +80,7 @@ struct cfs_rq; struct rt_rq; -static LIST_HEAD(task_groups); +extern struct list_head task_groups; struct cfs_bandwidth { #ifdef CONFIG_CFS_BANDWIDTH @@ -538,22 +538,19 @@ /* * Return the group to which this tasks belongs. * - * We use task_subsys_state_check() and extend the RCU verification with - * pi->lock and rq->lock because cpu_cgroup_attach() holds those locks for each - * task it moves into the cgroup. Therefore by holding either of those locks, - * we pin the task to the current cgroup. + * We cannot use task_subsys_state() and friends because the cgroup + * subsystem changes that value before the cgroup_subsys::attach() method + * is called, therefore we cannot pin it and might observe the wrong value. + * + * The same is true for autogroup's p->signal->autogroup->tg, the autogroup + * core changes this before calling sched_move_task(). + * + * Instead we use a 'copy' which is updated from sched_move_task() while + * holding both task_struct::pi_lock and rq::lock. */ static inline struct task_group *task_group(struct task_struct *p) { - struct task_group *tg; - struct cgroup_subsys_state *css; - - css = task_subsys_state_check(p, cpu_cgroup_subsys_id, - lockdep_is_held(&p->pi_lock) || - lockdep_is_held(&task_rq(p)->lock)); - tg = container_of(css, struct task_group, css); - - return autogroup_task_group(p, tg); + return p->sched_task_group; } /* Change a task's cfs_rq and parent entity if it moves across CPUs/groups */ --- linux-3.5.0.orig/kernel/debug/kdb/kdb_main.c +++ linux-3.5.0/kernel/debug/kdb/kdb_main.c @@ -1982,6 +1982,8 @@ kdb_printf("Module Size modstruct Used by\n"); list_for_each_entry(mod, kdb_modules, list) { + if (mod->state == MODULE_STATE_UNFORMED) + continue; kdb_printf("%-20s%8u 0x%p ", mod->name, mod->core_size, (void *)mod); --- linux-3.5.0.orig/kernel/debug/kdb/kdb_io.c +++ linux-3.5.0/kernel/debug/kdb/kdb_io.c @@ -552,6 +552,7 @@ { int diag; int linecount; + int colcount; int logging, saved_loglevel = 0; int saved_trap_printk; int got_printf_lock = 0; @@ -584,6 +585,10 @@ if (diag || linecount <= 1) linecount = 24; + diag = kdbgetintenv("COLUMNS", &colcount); + if (diag || colcount <= 1) + colcount = 80; + diag = kdbgetintenv("LOGGING", &logging); if (diag) logging = 0; @@ -690,7 +695,7 @@ gdbstub_msg_write(kdb_buffer, retlen); } else { if (dbg_io_ops && !dbg_io_ops->is_console) { - len = strlen(kdb_buffer); + len = retlen; cp = kdb_buffer; while (len--) { dbg_io_ops->write_char(*cp); @@ -709,11 +714,29 @@ printk(KERN_INFO "%s", kdb_buffer); } - if (KDB_STATE(PAGER) && strchr(kdb_buffer, '\n')) - kdb_nextline++; + if (KDB_STATE(PAGER)) { + /* + * Check printed string to decide how to bump the + * kdb_nextline to control when the more prompt should + * show up. + */ + int got = 0; + len = retlen; + while (len--) { + if (kdb_buffer[len] == '\n') { + kdb_nextline++; + got = 0; + } else if (kdb_buffer[len] == '\r') { + got = 0; + } else { + got++; + } + } + kdb_nextline += got / (colcount + 1); + } /* check for having reached the LINES number of printed lines */ - if (kdb_nextline == linecount) { + if (kdb_nextline >= linecount) { char buf1[16] = ""; #if defined(CONFIG_SMP) char buf2[32]; @@ -776,7 +799,7 @@ kdb_grepping_flag = 0; kdb_printf("\n"); } else if (buf1[0] == ' ') { - kdb_printf("\n"); + kdb_printf("\r"); suspend_grep = 1; /* for this recursion */ } else if (buf1[0] == '\n') { kdb_nextline = linecount - 1; --- linux-3.5.0.orig/kernel/trace/ftrace.c +++ linux-3.5.0/kernel/trace/ftrace.c @@ -2358,7 +2358,7 @@ { iter->pos = 0; iter->func_pos = 0; - iter->flags &= ~(FTRACE_ITER_PRINTALL & FTRACE_ITER_HASH); + iter->flags &= ~(FTRACE_ITER_PRINTALL | FTRACE_ITER_HASH); } static void *t_start(struct seq_file *m, loff_t *pos) @@ -3835,35 +3835,49 @@ ftrace_process_locs(mod, start, end); } -static int ftrace_module_notify(struct notifier_block *self, - unsigned long val, void *data) +static int ftrace_module_notify_enter(struct notifier_block *self, + unsigned long val, void *data) { struct module *mod = data; - switch (val) { - case MODULE_STATE_COMING: + if (val == MODULE_STATE_COMING) ftrace_init_module(mod, mod->ftrace_callsites, mod->ftrace_callsites + mod->num_ftrace_callsites); - break; - case MODULE_STATE_GOING: + return 0; +} + +static int ftrace_module_notify_exit(struct notifier_block *self, + unsigned long val, void *data) +{ + struct module *mod = data; + + if (val == MODULE_STATE_GOING) ftrace_release_mod(mod); - break; - } return 0; } #else -static int ftrace_module_notify(struct notifier_block *self, - unsigned long val, void *data) +static int ftrace_module_notify_enter(struct notifier_block *self, + unsigned long val, void *data) +{ + return 0; +} +static int ftrace_module_notify_exit(struct notifier_block *self, + unsigned long val, void *data) { return 0; } #endif /* CONFIG_MODULES */ -struct notifier_block ftrace_module_nb = { - .notifier_call = ftrace_module_notify, - .priority = 0, +struct notifier_block ftrace_module_enter_nb = { + .notifier_call = ftrace_module_notify_enter, + .priority = INT_MAX, /* Run before anything that can use kprobes */ +}; + +struct notifier_block ftrace_module_exit_nb = { + .notifier_call = ftrace_module_notify_exit, + .priority = INT_MIN, /* Run after anything that can remove kprobes */ }; extern unsigned long __start_mcount_loc[]; @@ -3897,9 +3911,13 @@ __start_mcount_loc, __stop_mcount_loc); - ret = register_module_notifier(&ftrace_module_nb); + ret = register_module_notifier(&ftrace_module_enter_nb); + if (ret) + pr_warning("Failed to register trace ftrace module enter notifier\n"); + + ret = register_module_notifier(&ftrace_module_exit_nb); if (ret) - pr_warning("Failed to register trace ftrace module notifier\n"); + pr_warning("Failed to register trace ftrace module exit notifier\n"); set_ftrace_early_filters(); --- linux-3.5.0.orig/kernel/trace/ring_buffer.c +++ linux-3.5.0/kernel/trace/ring_buffer.c @@ -1396,6 +1396,8 @@ struct list_head *head_page_with_bit; head_page = &rb_set_head_page(cpu_buffer)->list; + if (!head_page) + break; prev_page = head_page->prev; first_page = pages->next; @@ -1567,6 +1569,10 @@ put_online_cpus(); } else { + /* Make sure this CPU has been intitialized */ + if (!cpumask_test_cpu(cpu_id, buffer->cpumask)) + goto out; + cpu_buffer = buffer->buffers[cpu_id]; if (nr_pages == cpu_buffer->nr_pages) @@ -2930,7 +2936,7 @@ unsigned long flags; struct ring_buffer_per_cpu *cpu_buffer; struct buffer_page *bpage; - unsigned long ret; + unsigned long ret = 0; if (!cpumask_test_cpu(cpu, buffer->cpumask)) return 0; @@ -2945,7 +2951,8 @@ bpage = cpu_buffer->reader_page; else bpage = rb_set_head_page(cpu_buffer); - ret = bpage->page->time_stamp; + if (bpage) + ret = bpage->page->time_stamp; raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags); return ret; @@ -3252,6 +3259,8 @@ * Splice the empty reader page into the list around the head. */ reader = rb_set_head_page(cpu_buffer); + if (!reader) + goto out; cpu_buffer->reader_page->list.next = rb_list_head(reader->list.next); cpu_buffer->reader_page->list.prev = reader->list.prev; --- linux-3.5.0.orig/kernel/irq/manage.c +++ linux-3.5.0/kernel/irq/manage.c @@ -716,6 +716,7 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { cpumask_var_t mask; + bool valid = true; if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) return; @@ -730,10 +731,18 @@ } raw_spin_lock_irq(&desc->lock); - cpumask_copy(mask, desc->irq_data.affinity); + /* + * This code is triggered unconditionally. Check the affinity + * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out. + */ + if (desc->irq_data.affinity) + cpumask_copy(mask, desc->irq_data.affinity); + else + valid = false; raw_spin_unlock_irq(&desc->lock); - set_cpus_allowed_ptr(current, mask); + if (valid) + set_cpus_allowed_ptr(current, mask); free_cpumask_var(mask); } #else @@ -893,22 +902,6 @@ return -ENOSYS; if (!try_module_get(desc->owner)) return -ENODEV; - /* - * Some drivers like serial.c use request_irq() heavily, - * so we have to be careful not to interfere with a - * running system. - */ - if (new->flags & IRQF_SAMPLE_RANDOM) { - /* - * This function might sleep, we want to call it first, - * outside of the atomic block. - * Yes, this might clear the entropy pool if the wrong - * driver is attempted to be loaded, without actually - * installing a new handler, but is this really a problem, - * only the sysadmin is able to do this. - */ - rand_initialize_irq(irq); - } /* * Check whether the interrupt nests into another interrupt @@ -952,6 +945,16 @@ */ get_task_struct(t); new->thread = t; + /* + * Tell the thread to set its affinity. This is + * important for shared interrupt handlers as we do + * not invoke setup_affinity() for the secondary + * handlers as everything is already set up. Even for + * interrupts marked with IRQF_NO_BALANCE this is + * correct as we want the thread to move to the cpu(s) + * on which the requesting code placed the interrupt. + */ + set_bit(IRQTF_AFFINITY, &new->thread_flags); } if (!alloc_cpumask_var(&mask, GFP_KERNEL)) { @@ -1354,7 +1357,6 @@ * Flags: * * IRQF_SHARED Interrupt is shared - * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy * IRQF_TRIGGER_* Specify active edge(s) or level * */ --- linux-3.5.0.orig/kernel/irq/spurious.c +++ linux-3.5.0/kernel/irq/spurious.c @@ -80,13 +80,11 @@ /* * All handlers must agree on IRQF_SHARED, so we test just the - * first. Check for action->next as well. + * first. */ action = desc->action; if (!action || !(action->flags & IRQF_SHARED) || - (action->flags & __IRQF_TIMER) || - (action->handler(irq, action->dev_id) == IRQ_HANDLED) || - !action->next) + (action->flags & __IRQF_TIMER)) goto out; /* Already running on another processor */ @@ -104,6 +102,7 @@ do { if (handle_irq_event(desc) == IRQ_HANDLED) ret = IRQ_HANDLED; + /* Make sure that there is still a valid action */ action = desc->action; } while ((desc->istate & IRQS_PENDING) && action); desc->istate &= ~IRQS_POLL_INPROGRESS; --- linux-3.5.0.orig/kernel/irq/handle.c +++ linux-3.5.0/kernel/irq/handle.c @@ -133,7 +133,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) { irqreturn_t retval = IRQ_NONE; - unsigned int random = 0, irq = desc->irq_data.irq; + unsigned int flags = 0, irq = desc->irq_data.irq; do { irqreturn_t res; @@ -161,7 +161,7 @@ /* Fall through to add to randomness */ case IRQ_HANDLED: - random |= action->flags; + flags |= action->flags; break; default: @@ -172,8 +172,7 @@ action = action->next; } while (action); - if (random & IRQF_SAMPLE_RANDOM) - add_interrupt_randomness(irq); + add_interrupt_randomness(irq, flags); if (!noirqdebug) note_interrupt(irq, desc, retval); --- linux-3.5.0.orig/kernel/time/timekeeping.c +++ linux-3.5.0/kernel/time/timekeeping.c @@ -384,7 +384,7 @@ struct timespec ts_delta; unsigned long flags; - if ((unsigned long)tv->tv_nsec >= NSEC_PER_SEC) + if (!timespec_valid_strict(tv)) return -EINVAL; write_seqlock_irqsave(&timekeeper.lock, flags); @@ -418,6 +418,8 @@ int timekeeping_inject_offset(struct timespec *ts) { unsigned long flags; + struct timespec tmp; + int ret = 0; if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) return -EINVAL; @@ -426,10 +428,17 @@ timekeeping_forward_now(); + tmp = timespec_add(timekeeper.xtime, *ts); + if (!timespec_valid_strict(&tmp)) { + ret = -EINVAL; + goto error; + } + timekeeper.xtime = timespec_add(timekeeper.xtime, *ts); timekeeper.wall_to_monotonic = timespec_sub(timekeeper.wall_to_monotonic, *ts); +error: /* even if we error out, we forwarded the time, so call update */ timekeeping_update(true); write_sequnlock_irqrestore(&timekeeper.lock, flags); @@ -437,7 +446,7 @@ /* signal hrtimers about time change */ clock_was_set(); - return 0; + return ret; } EXPORT_SYMBOL(timekeeping_inject_offset); @@ -597,7 +606,20 @@ struct timespec now, boot; read_persistent_clock(&now); + if (!timespec_valid_strict(&now)) { + pr_warn("WARNING: Persistent clock returned invalid value!\n" + " Check your CMOS/BIOS settings.\n"); + now.tv_sec = 0; + now.tv_nsec = 0; + } + read_boot_clock(&boot); + if (!timespec_valid_strict(&boot)) { + pr_warn("WARNING: Boot clock returned invalid value!\n" + " Check your CMOS/BIOS settings.\n"); + boot.tv_sec = 0; + boot.tv_nsec = 0; + } seqlock_init(&timekeeper.lock); @@ -643,7 +665,7 @@ */ static void __timekeeping_inject_sleeptime(struct timespec *delta) { - if (!timespec_valid(delta)) { + if (!timespec_valid_strict(delta)) { printk(KERN_WARNING "__timekeeping_inject_sleeptime: Invalid " "sleep delta value!\n"); return; @@ -990,7 +1012,7 @@ } /* Accumulate raw time */ - raw_nsecs = timekeeper.raw_interval << shift; + raw_nsecs = (u64)timekeeper.raw_interval << shift; raw_nsecs += timekeeper.raw_time.tv_nsec; if (raw_nsecs >= NSEC_PER_SEC) { u64 raw_secs = raw_nsecs; @@ -1033,6 +1055,10 @@ #else offset = (clock->read(clock) - clock->cycle_last) & clock->mask; #endif + /* Check if there's really nothing to do */ + if (offset < timekeeper.cycle_interval) + goto out; + timekeeper.xtime_nsec = (s64)timekeeper.xtime.tv_nsec << timekeeper.shift; --- linux-3.5.0.orig/arch/alpha/include/asm/atomic.h +++ linux-3.5.0/arch/alpha/include/asm/atomic.h @@ -14,8 +14,8 @@ */ -#define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) -#define ATOMIC64_INIT(i) ( (atomic64_t) { (i) } ) +#define ATOMIC_INIT(i) { (i) } +#define ATOMIC64_INIT(i) { (i) } #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) --- linux-3.5.0.orig/arch/alpha/include/asm/fpu.h +++ linux-3.5.0/arch/alpha/include/asm/fpu.h @@ -1,7 +1,9 @@ #ifndef __ASM_ALPHA_FPU_H #define __ASM_ALPHA_FPU_H +#ifdef __KERNEL__ #include +#endif /* * Alpha floating-point control register defines: --- linux-3.5.0.orig/arch/alpha/include/asm/socket.h +++ linux-3.5.0/arch/alpha/include/asm/socket.h @@ -76,9 +76,11 @@ /* Instruct lower device to use last 4-bytes of skb data as FCS */ #define SO_NOFCS 43 +#ifdef __KERNEL__ /* O_NONBLOCK clashes with the bits used for socket types. Therefore we * have to define SOCK_NONBLOCK to a different value here. */ #define SOCK_NONBLOCK 0x40000000 +#endif /* __KERNEL__ */ #endif /* _ASM_SOCKET_H */ --- linux-3.5.0.orig/arch/alpha/kernel/process.c +++ linux-3.5.0/arch/alpha/kernel/process.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -54,8 +55,10 @@ /* FIXME -- EV6 and LCA45 know how to power down the CPU. */ + rcu_idle_enter(); while (!need_resched()) cpu_relax(); + rcu_idle_exit(); schedule(); } } --- linux-3.5.0.orig/arch/frv/kernel/process.c +++ linux-3.5.0/arch/frv/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -69,12 +70,14 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { check_pgt_cache(); if (!frv_dma_inprogress && idle) idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } --- linux-3.5.0.orig/arch/sparc/include/asm/hugetlb.h +++ linux-3.5.0/arch/sparc/include/asm/hugetlb.h @@ -58,14 +58,20 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep) { - ptep_set_wrprotect(mm, addr, ptep); + pte_t old_pte = *ptep; + set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); } static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep, pte_t pte, int dirty) { - return ptep_set_access_flags(vma, addr, ptep, pte, dirty); + int changed = !pte_same(*ptep, pte); + if (changed) { + set_huge_pte_at(vma->vm_mm, addr, ptep, pte); + flush_tlb_page(vma, addr); + } + return changed; } static inline pte_t huge_ptep_get(pte_t *ptep) --- linux-3.5.0.orig/arch/sparc/mm/init_64.c +++ linux-3.5.0/arch/sparc/mm/init_64.c @@ -2020,6 +2020,9 @@ #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(struct page *start, unsigned long nr, int node) { unsigned long vstart = (unsigned long) start; @@ -2050,15 +2053,30 @@ *vmem_pp = pte_base | __pa(block); - printk(KERN_INFO "[%p-%p] page_structs=%lu " - "node=%d entry=%lu/%lu\n", start, block, nr, - node, - addr >> VMEMMAP_CHUNK_SHIFT, - VMEMMAP_SIZE); + /* 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; } } 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; + } +} #endif /* CONFIG_SPARSEMEM_VMEMMAP */ static void prot_init_common(unsigned long page_none, --- linux-3.5.0.orig/arch/sparc/mm/tsb.c +++ linux-3.5.0/arch/sparc/mm/tsb.c @@ -331,7 +331,7 @@ retry_tsb_alloc: gfp_flags = GFP_KERNEL; if (new_size > (PAGE_SIZE * 2)) - gfp_flags = __GFP_NOWARN | __GFP_NORETRY; + gfp_flags |= __GFP_NOWARN | __GFP_NORETRY; new_tsb = kmem_cache_alloc_node(tsb_caches[new_cache_index], gfp_flags, numa_node_id()); --- linux-3.5.0.orig/arch/sparc/kernel/syscalls.S +++ linux-3.5.0/arch/sparc/kernel/syscalls.S @@ -212,24 +212,20 @@ 3: stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] ret_sys_call: ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %g3 - ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc sra %o0, 0, %o0 mov %ulo(TSTATE_XCARRY | TSTATE_ICARRY), %g2 sllx %g2, 32, %g2 - /* Check if force_successful_syscall_return() - * was invoked. - */ - ldub [%g6 + TI_SYS_NOERROR], %l2 - brnz,a,pn %l2, 80f - stb %g0, [%g6 + TI_SYS_NOERROR] - cmp %o0, -ERESTART_RESTARTBLOCK bgeu,pn %xcc, 1f - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 -80: + andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %g0 + ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc + +2: + stb %g0, [%g6 + TI_SYS_NOERROR] /* System call success, clear Carry condition code. */ andn %g3, %g2, %g3 +3: stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] bne,pn %icc, linux_syscall_trace2 add %l1, 0x4, %l2 ! npc = npc+4 @@ -238,20 +234,20 @@ stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] 1: + /* Check if force_successful_syscall_return() + * was invoked. + */ + ldub [%g6 + TI_SYS_NOERROR], %l2 + brnz,pn %l2, 2b + ldx [%sp + PTREGS_OFF + PT_V9_TNPC], %l1 ! pc = npc /* System call failure, set Carry condition code. * Also, get abs(errno) to return to the process. */ - andcc %l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT|_TIF_SYSCALL_TRACEPOINT), %l6 sub %g0, %o0, %o0 - or %g3, %g2, %g3 stx %o0, [%sp + PTREGS_OFF + PT_V9_I0] - stx %g3, [%sp + PTREGS_OFF + PT_V9_TSTATE] - bne,pn %icc, linux_syscall_trace2 - add %l1, 0x4, %l2 ! npc = npc+4 - stx %l1, [%sp + PTREGS_OFF + PT_V9_TPC] + ba,pt %xcc, 3b + or %g3, %g2, %g3 - b,pt %xcc, rtrap - stx %l2, [%sp + PTREGS_OFF + PT_V9_TNPC] linux_syscall_trace2: call syscall_trace_leave add %sp, PTREGS_OFF, %o0 --- linux-3.5.0.orig/arch/sparc/kernel/sys_sparc_64.c +++ linux-3.5.0/arch/sparc/kernel/sys_sparc_64.c @@ -519,12 +519,12 @@ { int ret; - if (current->personality == PER_LINUX32 && - personality == PER_LINUX) - personality = PER_LINUX32; + if (personality(current->personality) == PER_LINUX32 && + personality(personality) == PER_LINUX) + personality |= PER_LINUX32; ret = sys_personality(personality); - if (ret == PER_LINUX32) - ret = PER_LINUX; + if (personality(ret) == PER_LINUX32) + ret &= ~PER_LINUX32; return ret; } --- linux-3.5.0.orig/arch/sparc/kernel/perf_event.c +++ linux-3.5.0/arch/sparc/kernel/perf_event.c @@ -557,11 +557,13 @@ static inline void sparc_pmu_enable_event(struct cpu_hw_events *cpuc, struct hw_perf_event *hwc, int idx) { - u64 val, mask = mask_for_index(idx); + u64 enc, val, mask = mask_for_index(idx); + + enc = perf_event_get_enc(cpuc->events[idx]); val = cpuc->pcr; val &= ~mask; - val |= hwc->config; + val |= event_encoding(enc, idx); cpuc->pcr = val; pcr_ops->write(cpuc->pcr); @@ -1426,8 +1428,6 @@ { unsigned long ufp; - perf_callchain_store(entry, regs->tpc); - ufp = regs->u_regs[UREG_I6] + STACK_BIAS; do { struct sparc_stackf *usf, sf; @@ -1448,8 +1448,6 @@ { unsigned long ufp; - perf_callchain_store(entry, regs->tpc); - ufp = regs->u_regs[UREG_I6] & 0xffffffffUL; do { struct sparc_stackf32 *usf, sf; @@ -1468,6 +1466,11 @@ void perf_callchain_user(struct perf_callchain_entry *entry, struct pt_regs *regs) { + perf_callchain_store(entry, regs->tpc); + + if (!current->mm) + return; + flushw_user(); if (test_thread_flag(TIF_32BIT)) perf_callchain_user_32(entry, regs); --- linux-3.5.0.orig/arch/sparc/kernel/signal_64.c +++ linux-3.5.0/arch/sparc/kernel/signal_64.c @@ -295,9 +295,7 @@ err |= restore_fpu_state(regs, fpu_save); err |= __copy_from_user(&set, &sf->mask, sizeof(sigset_t)); - err |= do_sigaltstack(&sf->stack, NULL, (unsigned long)sf); - - if (err) + if (err || do_sigaltstack(&sf->stack, NULL, (unsigned long)sf) == -EFAULT) goto segv; err |= __get_user(rwin_save, &sf->rwin_save); --- linux-3.5.0.orig/arch/h8300/kernel/process.c +++ linux-3.5.0/arch/h8300/kernel/process.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -78,8 +79,10 @@ void cpu_idle(void) { while (1) { + rcu_idle_enter(); while (!need_resched()) idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/mips/Makefile +++ linux-3.5.0/arch/mips/Makefile @@ -225,7 +225,7 @@ LDFLAGS += -m $(ld-emul) ifdef CONFIG_MIPS -CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -xc /dev/null | \ +CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ egrep -vw '__GNUC_(|MINOR_|PATCHLEVEL_)_' | \ sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/") ifdef CONFIG_64BIT --- linux-3.5.0.orig/arch/mips/ath79/clock.c +++ linux-3.5.0/arch/mips/ath79/clock.c @@ -17,6 +17,8 @@ #include #include +#include + #include #include #include "common.h" @@ -166,11 +168,34 @@ ath79_uart_clk.rate = ath79_ref_clk.rate; } +static u32 __init ar934x_get_pll_freq(u32 ref, u32 ref_div, u32 nint, u32 nfrac, + u32 frac, u32 out_div) +{ + u64 t; + u32 ret; + + t = ath79_ref_clk.rate; + t *= nint; + do_div(t, ref_div); + ret = t; + + t = ath79_ref_clk.rate; + t *= nfrac; + do_div(t, ref_div * frac); + ret += t; + + ret /= (1 << out_div); + return ret; +} + static void __init ar934x_clocks_init(void) { - u32 pll, out_div, ref_div, nint, frac, clk_ctrl, postdiv; + u32 pll, out_div, ref_div, nint, nfrac, frac, clk_ctrl, postdiv; u32 cpu_pll, ddr_pll; u32 bootstrap; + void __iomem *dpll_base; + + dpll_base = ioremap(AR934X_SRIF_BASE, AR934X_SRIF_SIZE); bootstrap = ath79_reset_rr(AR934X_RESET_REG_BOOTSTRAP); if (bootstrap & AR934X_BOOTSTRAP_REF_CLK_40) @@ -178,33 +203,59 @@ else ath79_ref_clk.rate = 25 * 1000 * 1000; - pll = ath79_pll_rr(AR934X_PLL_CPU_CONFIG_REG); - out_div = (pll >> AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT) & - AR934X_PLL_CPU_CONFIG_OUTDIV_MASK; - ref_div = (pll >> AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT) & - AR934X_PLL_CPU_CONFIG_REFDIV_MASK; - nint = (pll >> AR934X_PLL_CPU_CONFIG_NINT_SHIFT) & - AR934X_PLL_CPU_CONFIG_NINT_MASK; - frac = (pll >> AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT) & - AR934X_PLL_CPU_CONFIG_NFRAC_MASK; - - cpu_pll = nint * ath79_ref_clk.rate / ref_div; - cpu_pll += frac * ath79_ref_clk.rate / (ref_div * (2 << 6)); - cpu_pll /= (1 << out_div); - - pll = ath79_pll_rr(AR934X_PLL_DDR_CONFIG_REG); - out_div = (pll >> AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT) & - AR934X_PLL_DDR_CONFIG_OUTDIV_MASK; - ref_div = (pll >> AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT) & - AR934X_PLL_DDR_CONFIG_REFDIV_MASK; - nint = (pll >> AR934X_PLL_DDR_CONFIG_NINT_SHIFT) & - AR934X_PLL_DDR_CONFIG_NINT_MASK; - frac = (pll >> AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT) & - AR934X_PLL_DDR_CONFIG_NFRAC_MASK; - - ddr_pll = nint * ath79_ref_clk.rate / ref_div; - ddr_pll += frac * ath79_ref_clk.rate / (ref_div * (2 << 10)); - ddr_pll /= (1 << out_div); + pll = __raw_readl(dpll_base + AR934X_SRIF_CPU_DPLL2_REG); + if (pll & AR934X_SRIF_DPLL2_LOCAL_PLL) { + out_div = (pll >> AR934X_SRIF_DPLL2_OUTDIV_SHIFT) & + AR934X_SRIF_DPLL2_OUTDIV_MASK; + pll = __raw_readl(dpll_base + AR934X_SRIF_CPU_DPLL1_REG); + nint = (pll >> AR934X_SRIF_DPLL1_NINT_SHIFT) & + AR934X_SRIF_DPLL1_NINT_MASK; + nfrac = pll & AR934X_SRIF_DPLL1_NFRAC_MASK; + ref_div = (pll >> AR934X_SRIF_DPLL1_REFDIV_SHIFT) & + AR934X_SRIF_DPLL1_REFDIV_MASK; + frac = 1 << 18; + } else { + pll = ath79_pll_rr(AR934X_PLL_CPU_CONFIG_REG); + out_div = (pll >> AR934X_PLL_CPU_CONFIG_OUTDIV_SHIFT) & + AR934X_PLL_CPU_CONFIG_OUTDIV_MASK; + ref_div = (pll >> AR934X_PLL_CPU_CONFIG_REFDIV_SHIFT) & + AR934X_PLL_CPU_CONFIG_REFDIV_MASK; + nint = (pll >> AR934X_PLL_CPU_CONFIG_NINT_SHIFT) & + AR934X_PLL_CPU_CONFIG_NINT_MASK; + nfrac = (pll >> AR934X_PLL_CPU_CONFIG_NFRAC_SHIFT) & + AR934X_PLL_CPU_CONFIG_NFRAC_MASK; + frac = 1 << 6; + } + + cpu_pll = ar934x_get_pll_freq(ath79_ref_clk.rate, ref_div, nint, + nfrac, frac, out_div); + + pll = __raw_readl(dpll_base + AR934X_SRIF_DDR_DPLL2_REG); + if (pll & AR934X_SRIF_DPLL2_LOCAL_PLL) { + out_div = (pll >> AR934X_SRIF_DPLL2_OUTDIV_SHIFT) & + AR934X_SRIF_DPLL2_OUTDIV_MASK; + pll = __raw_readl(dpll_base + AR934X_SRIF_DDR_DPLL1_REG); + nint = (pll >> AR934X_SRIF_DPLL1_NINT_SHIFT) & + AR934X_SRIF_DPLL1_NINT_MASK; + nfrac = pll & AR934X_SRIF_DPLL1_NFRAC_MASK; + ref_div = (pll >> AR934X_SRIF_DPLL1_REFDIV_SHIFT) & + AR934X_SRIF_DPLL1_REFDIV_MASK; + frac = 1 << 18; + } else { + pll = ath79_pll_rr(AR934X_PLL_DDR_CONFIG_REG); + out_div = (pll >> AR934X_PLL_DDR_CONFIG_OUTDIV_SHIFT) & + AR934X_PLL_DDR_CONFIG_OUTDIV_MASK; + ref_div = (pll >> AR934X_PLL_DDR_CONFIG_REFDIV_SHIFT) & + AR934X_PLL_DDR_CONFIG_REFDIV_MASK; + nint = (pll >> AR934X_PLL_DDR_CONFIG_NINT_SHIFT) & + AR934X_PLL_DDR_CONFIG_NINT_MASK; + nfrac = (pll >> AR934X_PLL_DDR_CONFIG_NFRAC_SHIFT) & + AR934X_PLL_DDR_CONFIG_NFRAC_MASK; + frac = 1 << 10; + } + + ddr_pll = ar934x_get_pll_freq(ath79_ref_clk.rate, ref_div, nint, + nfrac, frac, out_div); clk_ctrl = ath79_pll_rr(AR934X_PLL_CPU_DDR_CLK_CTRL_REG); @@ -240,6 +291,8 @@ ath79_wdt_clk.rate = ath79_ref_clk.rate; ath79_uart_clk.rate = ath79_ref_clk.rate; + + iounmap(dpll_base); } void __init ath79_clocks_init(void) --- linux-3.5.0.orig/arch/mips/pci/pci-ar724x.c +++ linux-3.5.0/arch/mips/pci/pci-ar724x.c @@ -23,9 +23,12 @@ #define AR724X_PCI_MEM_BASE 0x10000000 #define AR724X_PCI_MEM_SIZE 0x08000000 +#define AR724X_PCI_REG_RESET 0x18 #define AR724X_PCI_REG_INT_STATUS 0x4c #define AR724X_PCI_REG_INT_MASK 0x50 +#define AR724X_PCI_RESET_LINK_UP BIT(0) + #define AR724X_PCI_INT_DEV0 BIT(14) #define AR724X_PCI_IRQ_COUNT 1 @@ -38,6 +41,15 @@ static u32 ar724x_pci_bar0_value; static bool ar724x_pci_bar0_is_cached; +static bool ar724x_pci_link_up; + +static inline bool ar724x_pci_check_link(void) +{ + u32 reset; + + reset = __raw_readl(ar724x_pci_ctrl_base + AR724X_PCI_REG_RESET); + return reset & AR724X_PCI_RESET_LINK_UP; +} static int ar724x_pci_read(struct pci_bus *bus, unsigned int devfn, int where, int size, uint32_t *value) @@ -46,6 +58,9 @@ void __iomem *base; u32 data; + if (!ar724x_pci_link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + if (devfn) return PCIBIOS_DEVICE_NOT_FOUND; @@ -96,6 +111,9 @@ u32 data; int s; + if (!ar724x_pci_link_up) + return PCIBIOS_DEVICE_NOT_FOUND; + if (devfn) return PCIBIOS_DEVICE_NOT_FOUND; @@ -280,6 +298,10 @@ if (ar724x_pci_ctrl_base == NULL) goto err_unmap_devcfg; + ar724x_pci_link_up = ar724x_pci_check_link(); + if (!ar724x_pci_link_up) + pr_warn("ar724x: PCIe link is down\n"); + ar724x_pci_irq_init(irq); register_pci_controller(&ar724x_pci_controller); --- linux-3.5.0.orig/arch/mips/include/asm/mach-ath79/ar71xx_regs.h +++ linux-3.5.0/arch/mips/include/asm/mach-ath79/ar71xx_regs.h @@ -63,6 +63,8 @@ #define AR934X_WMAC_BASE (AR71XX_APB_BASE + 0x00100000) #define AR934X_WMAC_SIZE 0x20000 +#define AR934X_SRIF_BASE (AR71XX_APB_BASE + 0x00116000) +#define AR934X_SRIF_SIZE 0x1000 /* * DDR_CTRL block @@ -398,4 +400,25 @@ #define AR933X_GPIO_COUNT 30 #define AR934X_GPIO_COUNT 23 +/* + * SRIF block + */ +#define AR934X_SRIF_CPU_DPLL1_REG 0x1c0 +#define AR934X_SRIF_CPU_DPLL2_REG 0x1c4 +#define AR934X_SRIF_CPU_DPLL3_REG 0x1c8 + +#define AR934X_SRIF_DDR_DPLL1_REG 0x240 +#define AR934X_SRIF_DDR_DPLL2_REG 0x244 +#define AR934X_SRIF_DDR_DPLL3_REG 0x248 + +#define AR934X_SRIF_DPLL1_REFDIV_SHIFT 27 +#define AR934X_SRIF_DPLL1_REFDIV_MASK 0x1f +#define AR934X_SRIF_DPLL1_NINT_SHIFT 18 +#define AR934X_SRIF_DPLL1_NINT_MASK 0x1ff +#define AR934X_SRIF_DPLL1_NFRAC_MASK 0x0003ffff + +#define AR934X_SRIF_DPLL2_LOCAL_PLL BIT(30) +#define AR934X_SRIF_DPLL2_OUTDIV_SHIFT 13 +#define AR934X_SRIF_DPLL2_OUTDIV_MASK 0x7 + #endif /* __ASM_MACH_AR71XX_REGS_H */ --- linux-3.5.0.orig/arch/mips/mm/gup.c +++ linux-3.5.0/arch/mips/mm/gup.c @@ -152,6 +152,8 @@ do { VM_BUG_ON(compound_head(page) != head); pages[*nr] = page; + if (PageTail(page)) + get_huge_page_tail(page); (*nr)++; page++; refs++; --- linux-3.5.0.orig/arch/mips/kernel/kgdb.c +++ linux-3.5.0/arch/mips/kernel/kgdb.c @@ -283,6 +283,15 @@ struct pt_regs *regs = args->regs; int trap = (regs->cp0_cause & 0x7c) >> 2; +#ifdef CONFIG_KPROBES + /* + * Return immediately if the kprobes fault notifier has set + * DIE_PAGE_FAULT. + */ + if (cmd == DIE_PAGE_FAULT) + return NOTIFY_DONE; +#endif /* CONFIG_KPROBES */ + /* Userspace events, ignore. */ if (user_mode(regs)) return NOTIFY_DONE; --- linux-3.5.0.orig/arch/mips/kernel/process.c +++ linux-3.5.0/arch/mips/kernel/process.c @@ -72,9 +72,7 @@ } } #ifdef CONFIG_HOTPLUG_CPU - if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map) && - (system_state == SYSTEM_RUNNING || - system_state == SYSTEM_BOOTING)) + if (!cpu_online(cpu) && !cpu_isset(cpu, cpu_callin_map)) play_dead(); #endif rcu_idle_exit(); --- linux-3.5.0.orig/arch/mips/kernel/Makefile +++ linux-3.5.0/arch/mips/kernel/Makefile @@ -104,7 +104,7 @@ obj-$(CONFIG_OF) += prom.o -CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) +CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(KBUILD_CFLAGS) -Wa,-mdaddi -c -o /dev/null -x c /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) obj-$(CONFIG_HAVE_STD_PC_SERIAL_PORT) += 8250-platform.o --- linux-3.5.0.orig/arch/mips/kernel/kspd.c +++ linux-3.5.0/arch/mips/kernel/kspd.c @@ -323,7 +323,7 @@ fdt = files_fdtable(files); for (;;) { unsigned long set; - i = j * __NFDBITS; + i = j * BITS_PER_LONG; if (i >= fdt->max_fds) break; set = fdt->open_fds[j++]; --- linux-3.5.0.orig/arch/sh/include/asm/elf.h +++ linux-3.5.0/arch/sh/include/asm/elf.h @@ -202,9 +202,9 @@ if (vdso_enabled) \ NEW_AUX_ENT(AT_SYSINFO_EHDR, VDSO_BASE); \ else \ - NEW_AUX_ENT(AT_IGNORE, 0); + NEW_AUX_ENT(AT_IGNORE, 0) #else -#define VSYSCALL_AUX_ENT +#define VSYSCALL_AUX_ENT NEW_AUX_ENT(AT_IGNORE, 0) #endif /* CONFIG_VSYSCALL */ #ifdef CONFIG_SH_FPU --- linux-3.5.0.orig/arch/sh/mm/fault.c +++ linux-3.5.0/arch/sh/mm/fault.c @@ -58,11 +58,15 @@ { pgd_t *pgd; - if (mm) + if (mm) { pgd = mm->pgd; - else + } else { pgd = get_TTB(); + if (unlikely(!pgd)) + pgd = swapper_pg_dir; + } + printk(KERN_ALERT "pgd = %p\n", pgd); pgd += pgd_index(addr); printk(KERN_ALERT "[%08lx] *pgd=%0*Lx", addr, --- linux-3.5.0.orig/arch/cris/include/asm/io.h +++ linux-3.5.0/arch/cris/include/asm/io.h @@ -133,12 +133,39 @@ #define insb(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,1,count) : 0) #define insw(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,2,count) : 0) #define insl(port,addr,count) (cris_iops ? cris_iops->read_io(port,addr,4,count) : 0) -#define outb(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,1,1) -#define outw(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,2,1) -#define outl(data,port) if (cris_iops) cris_iops->write_io(port,(void*)(unsigned)data,4,1) -#define outsb(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,1,count) -#define outsw(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,2,count) -#define outsl(port,addr,count) if(cris_iops) cris_iops->write_io(port,(void*)addr,3,count) +static inline void outb(unsigned char data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 1, 1); +} +static inline void outw(unsigned short data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 2, 1); +} +static inline void outl(unsigned int data, unsigned int port) +{ + if (cris_iops) + cris_iops->write_io(port, (void *) &data, 4, 1); +} +static inline void outsb(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 1, count); +} +static inline void outsw(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 2, count); +} +static inline void outsl(unsigned int port, const void *addr, + unsigned long count) +{ + if (cris_iops) + cris_iops->write_io(port, (void *)addr, 4, count); +} /* * Convert a physical pointer to a virtual kernel pointer for /dev/mem --- linux-3.5.0.orig/arch/cris/kernel/process.c +++ linux-3.5.0/arch/cris/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include //#define DEBUG @@ -74,6 +75,7 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void); /* @@ -86,6 +88,7 @@ idle = default_idle; idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/m68k/include/asm/signal.h +++ linux-3.5.0/arch/m68k/include/asm/signal.h @@ -156,7 +156,7 @@ static inline void sigaddset(sigset_t *set, int _sig) { asm ("bfset %0{%1,#1}" - : "+od" (*set) + : "+o" (*set) : "id" ((_sig - 1) ^ 31) : "cc"); } @@ -164,7 +164,7 @@ static inline void sigdelset(sigset_t *set, int _sig) { asm ("bfclr %0{%1,#1}" - : "+od" (*set) + : "+o" (*set) : "id" ((_sig - 1) ^ 31) : "cc"); } @@ -180,7 +180,7 @@ int ret; asm ("bfextu %1{%2,#1},%0" : "=d" (ret) - : "od" (*set), "id" ((_sig-1) ^ 31) + : "o" (*set), "id" ((_sig-1) ^ 31) : "cc"); return ret; } --- linux-3.5.0.orig/arch/m68k/kernel/process.c +++ linux-3.5.0/arch/m68k/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -75,8 +76,10 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/m68k/kernel/sys_m68k.c +++ linux-3.5.0/arch/m68k/kernel/sys_m68k.c @@ -479,9 +479,13 @@ goto bad_access; } - mem_value = *mem; + /* + * No need to check for EFAULT; we know that the page is + * present and writable. + */ + __get_user(mem_value, mem); if (mem_value == oldval) - *mem = newval; + __put_user(newval, mem); pte_unmap_unlock(pte, ptl); up_read(&mm->mmap_sem); --- linux-3.5.0.orig/arch/x86/Kconfig +++ linux-3.5.0/arch/x86/Kconfig @@ -381,6 +381,12 @@ # Following is an alphabetically sorted list of 32 bit extended platforms # Please maintain the alphabetic order if and when there are additions +config X86_LPIA + bool "LPIA-compatible" + depends on X86_32 && X86_PC + help + Choose this option if your computer is an LPIA platform. + config X86_INTEL_CE bool "CE4100 TV platform" depends on PCI @@ -883,6 +889,14 @@ Additional support for intel specific MCE features such as the thermal monitor. +config X86_MCE_XEON75XX + tristate "Intel Xeon 7500 series corrected memory error driver" + depends on X86_MCE_INTEL && PCI + ---help--- + Add support for a Intel Xeon 7500 series specific memory error driver. + This allows to report the DIMM and physical address on a corrected + memory error machine check event. + config X86_MCE_AMD def_bool y prompt "AMD MCE features" @@ -1244,10 +1258,6 @@ Specify the maximum number of NUMA Nodes available on the target system. Increases memory reserved to accommodate various tables. -config HAVE_ARCH_ALLOC_REMAP - def_bool y - depends on X86_32 && NUMA - config ARCH_HAVE_MEMORY_PRESENT def_bool y depends on X86_32 && DISCONTIGMEM @@ -2220,6 +2230,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "drivers/firmware/Kconfig" source "fs/Kconfig" --- linux-3.5.0.orig/arch/x86/Makefile +++ linux-3.5.0/arch/x86/Makefile @@ -85,7 +85,7 @@ ifdef CONFIG_X86_X32 x32_ld_ok := $(call try-run,\ /bin/echo -e '1: .quad 1b' | \ - $(CC) $(KBUILD_AFLAGS) -c -xassembler -o "$$TMP" - && \ + $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" - && \ $(OBJCOPY) -O elf32-x86-64 "$$TMP" "$$TMPO" && \ $(LD) -m elf32_x86_64 "$$TMPO" -o "$$TMP",y,n) ifeq ($(x32_ld_ok),y) --- linux-3.5.0.orig/arch/x86/xen/p2m.c +++ linux-3.5.0/arch/x86/xen/p2m.c @@ -194,6 +194,13 @@ * boundary violation will require three middle nodes. */ RESERVE_BRK(p2m_mid_identity, PAGE_SIZE * 2 * 3); +/* When we populate back during bootup, the amount of pages can vary. The + * max we have is seen is 395979, but that does not mean it can't be more. + * Some machines can have 3GB I/O holes even. With early_can_reuse_p2m_middle + * it can re-use Xen provided mfn_list array, so we only need to allocate at + * most three P2M top nodes. */ +RESERVE_BRK(p2m_populated, PAGE_SIZE * 3); + static inline unsigned p2m_top_index(unsigned long pfn) { BUG_ON(pfn >= MAX_P2M_PFN); @@ -570,12 +577,99 @@ } return true; } + +/* + * Skim over the P2M tree looking at pages that are either filled with + * INVALID_P2M_ENTRY or with 1:1 PFNs. If found, re-use that page and + * replace the P2M leaf with a p2m_missing or p2m_identity. + * Stick the old page in the new P2M tree location. + */ +bool __init early_can_reuse_p2m_middle(unsigned long set_pfn, unsigned long set_mfn) +{ + unsigned topidx; + unsigned mididx; + unsigned ident_pfns; + unsigned inv_pfns; + unsigned long *p2m; + unsigned long *mid_mfn_p; + unsigned idx; + unsigned long pfn; + + /* We only look when this entails a P2M middle layer */ + if (p2m_index(set_pfn)) + return false; + + for (pfn = 0; pfn < MAX_DOMAIN_PAGES; pfn += P2M_PER_PAGE) { + topidx = p2m_top_index(pfn); + + if (!p2m_top[topidx]) + continue; + + if (p2m_top[topidx] == p2m_mid_missing) + continue; + + mididx = p2m_mid_index(pfn); + p2m = p2m_top[topidx][mididx]; + if (!p2m) + continue; + + if ((p2m == p2m_missing) || (p2m == p2m_identity)) + continue; + + if ((unsigned long)p2m == INVALID_P2M_ENTRY) + continue; + + ident_pfns = 0; + inv_pfns = 0; + for (idx = 0; idx < P2M_PER_PAGE; idx++) { + /* IDENTITY_PFNs are 1:1 */ + if (p2m[idx] == IDENTITY_FRAME(pfn + idx)) + ident_pfns++; + else if (p2m[idx] == INVALID_P2M_ENTRY) + inv_pfns++; + else + break; + } + if ((ident_pfns == P2M_PER_PAGE) || (inv_pfns == P2M_PER_PAGE)) + goto found; + } + return false; +found: + /* Found one, replace old with p2m_identity or p2m_missing */ + p2m_top[topidx][mididx] = (ident_pfns ? p2m_identity : p2m_missing); + /* And the other for save/restore.. */ + mid_mfn_p = p2m_top_mfn_p[topidx]; + /* NOTE: Even if it is a p2m_identity it should still be point to + * a page filled with INVALID_P2M_ENTRY entries. */ + mid_mfn_p[mididx] = virt_to_mfn(p2m_missing); + + /* Reset where we want to stick the old page in. */ + topidx = p2m_top_index(set_pfn); + mididx = p2m_mid_index(set_pfn); + + /* This shouldn't happen */ + if (WARN_ON(p2m_top[topidx] == p2m_mid_missing)) + early_alloc_p2m(set_pfn); + + if (WARN_ON(p2m_top[topidx][mididx] != p2m_missing)) + return false; + + p2m_init(p2m); + p2m_top[topidx][mididx] = p2m; + mid_mfn_p = p2m_top_mfn_p[topidx]; + mid_mfn_p[mididx] = virt_to_mfn(p2m); + + return true; +} bool __init early_set_phys_to_machine(unsigned long pfn, unsigned long mfn) { if (unlikely(!__set_phys_to_machine(pfn, mfn))) { if (!early_alloc_p2m(pfn)) return false; + if (early_can_reuse_p2m_middle(pfn, mfn)) + return __set_phys_to_machine(pfn, mfn); + if (!early_alloc_p2m_middle(pfn, false /* boundary crossover OK!*/)) return false; @@ -734,9 +828,6 @@ xen_mc_issue(PARAVIRT_LAZY_MMU); } - /* let's use dev_bus_addr to record the old mfn instead */ - kmap_op->dev_bus_addr = page->index; - page->index = (unsigned long) kmap_op; } spin_lock_irqsave(&m2p_override_lock, flags); list_add(&page->lru, &m2p_overrides[mfn_hash(mfn)]); @@ -763,7 +854,8 @@ return 0; } EXPORT_SYMBOL_GPL(m2p_add_override); -int m2p_remove_override(struct page *page, bool clear_pte) +int m2p_remove_override(struct page *page, + struct gnttab_map_grant_ref *kmap_op) { unsigned long flags; unsigned long mfn; @@ -793,10 +885,8 @@ WARN_ON(!PagePrivate(page)); ClearPagePrivate(page); - if (clear_pte) { - struct gnttab_map_grant_ref *map_op = - (struct gnttab_map_grant_ref *) page->index; - set_phys_to_machine(pfn, map_op->dev_bus_addr); + set_phys_to_machine(pfn, page->index); + if (kmap_op != NULL) { if (!PageHighMem(page)) { struct multicall_space mcs; struct gnttab_unmap_grant_ref *unmap_op; @@ -808,13 +898,13 @@ * issued. In this case handle is going to -1 because * it hasn't been modified yet. */ - if (map_op->handle == -1) + if (kmap_op->handle == -1) xen_mc_flush(); /* - * Now if map_op->handle is negative it means that the + * Now if kmap_op->handle is negative it means that the * hypercall actually returned an error. */ - if (map_op->handle == GNTST_general_error) { + if (kmap_op->handle == GNTST_general_error) { printk(KERN_WARNING "m2p_remove_override: " "pfn %lx mfn %lx, failed to modify kernel mappings", pfn, mfn); @@ -824,8 +914,8 @@ mcs = xen_mc_entry( sizeof(struct gnttab_unmap_grant_ref)); unmap_op = mcs.args; - unmap_op->host_addr = map_op->host_addr; - unmap_op->handle = map_op->handle; + unmap_op->host_addr = kmap_op->host_addr; + unmap_op->handle = kmap_op->handle; unmap_op->dev_bus_addr = 0; MULTI_grant_table_op(mcs.mc, @@ -836,10 +926,9 @@ set_pte_at(&init_mm, address, ptep, pfn_pte(pfn, PAGE_KERNEL)); __flush_tlb_single(address); - map_op->host_addr = 0; + kmap_op->host_addr = 0; } - } else - set_phys_to_machine(pfn, page->index); + } /* p2m(m2p(mfn)) == FOREIGN_FRAME(mfn): the mfn is already present * somewhere in this domain, even before being added to the --- linux-3.5.0.orig/arch/x86/xen/spinlock.c +++ linux-3.5.0/arch/x86/xen/spinlock.c @@ -328,7 +328,6 @@ if (per_cpu(lock_spinners, cpu) == xl) { ADD_STATS(released_slow_kicked, 1); xen_send_IPI_one(cpu, XEN_SPIN_UNLOCK_VECTOR); - break; } } } --- linux-3.5.0.orig/arch/x86/xen/enlighten.c +++ linux-3.5.0/arch/x86/xen/enlighten.c @@ -952,7 +952,16 @@ native_write_cr4(cr4); } - +#ifdef CONFIG_X86_64 +static inline unsigned long xen_read_cr8(void) +{ + return 0; +} +static inline void xen_write_cr8(unsigned long val) +{ + BUG_ON(val); +} +#endif static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) { int ret; @@ -1121,6 +1130,11 @@ .read_cr4_safe = native_read_cr4_safe, .write_cr4 = xen_write_cr4, +#ifdef CONFIG_X86_64 + .read_cr8 = xen_read_cr8, + .write_cr8 = xen_write_cr8, +#endif + .wbinvd = native_wbinvd, .read_msr = native_read_msr_safe, @@ -1131,6 +1145,8 @@ .read_tsc = native_read_tsc, .read_pmc = native_read_pmc, + .read_tscp = native_read_tscp, + .iret = xen_iret, .irq_enable_sysexit = xen_sysexit, #ifdef CONFIG_X86_64 @@ -1422,6 +1438,10 @@ pci_request_acs(); xen_acpi_sleep_register(); + + /* Avoid searching for BIOS MP tables */ + x86_init.mpparse.find_smp_config = x86_init_noop; + x86_init.mpparse.get_smp_config = x86_init_uint_noop; } #ifdef CONFIG_PCI /* PCI BIOS service won't work from a PV guest. */ --- linux-3.5.0.orig/arch/x86/xen/setup.c +++ linux-3.5.0/arch/x86/xen/setup.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -78,9 +79,16 @@ memblock_reserve(start, size); xen_max_p2m_pfn = PFN_DOWN(start + size); + for (pfn = PFN_DOWN(start); pfn < xen_max_p2m_pfn; pfn++) { + unsigned long mfn = pfn_to_mfn(pfn); + + if (WARN(mfn == pfn, "Trying to over-write 1-1 mapping (pfn: %lx)\n", pfn)) + continue; + WARN(mfn != INVALID_P2M_ENTRY, "Trying to remove %lx which has %lx mfn!\n", + pfn, mfn); - for (pfn = PFN_DOWN(start); pfn <= xen_max_p2m_pfn; pfn++) __set_phys_to_machine(pfn, INVALID_P2M_ENTRY); + } } static unsigned long __init xen_do_chunk(unsigned long start, @@ -542,4 +550,7 @@ disable_cpufreq(); WARN_ON(set_pm_idle_to_default()); fiddle_vdso(); +#ifdef CONFIG_NUMA + numa_off = 1; +#endif } --- linux-3.5.0.orig/arch/x86/xen/mmu.c +++ linux-3.5.0/arch/x86/xen/mmu.c @@ -1203,6 +1203,25 @@ return this_cpu_read(xen_vcpu_info.arch.cr2); } +void xen_flush_tlb_all(void) +{ + struct mmuext_op *op; + struct multicall_space mcs; + + trace_xen_mmu_flush_tlb_all(0); + + preempt_disable(); + + mcs = xen_mc_entry(sizeof(*op)); + + op = mcs.args; + op->cmd = MMUEXT_TLB_FLUSH_ALL; + MULTI_mmuext_op(mcs.mc, op, 1, NULL, DOMID_SELF); + + xen_mc_issue(PARAVIRT_LAZY_MMU); + + preempt_enable(); +} static void xen_flush_tlb(void) { struct mmuext_op *op; @@ -2339,7 +2358,7 @@ err = 0; out: - flush_tlb_all(); + xen_flush_tlb_all(); return err; } --- linux-3.5.0.orig/arch/x86/xen/xen-asm_32.S +++ linux-3.5.0/arch/x86/xen/xen-asm_32.S @@ -89,11 +89,11 @@ */ #ifdef CONFIG_SMP GET_THREAD_INFO(%eax) - movl TI_cpu(%eax), %eax - movl __per_cpu_offset(,%eax,4), %eax - mov xen_vcpu(%eax), %eax + movl %ss:TI_cpu(%eax), %eax + movl %ss:__per_cpu_offset(,%eax,4), %eax + mov %ss:xen_vcpu(%eax), %eax #else - movl xen_vcpu, %eax + movl %ss:xen_vcpu, %eax #endif /* check IF state we're restoring */ @@ -106,11 +106,11 @@ * resuming the code, so we don't have to be worried about * being preempted to another CPU. */ - setz XEN_vcpu_info_mask(%eax) + setz %ss:XEN_vcpu_info_mask(%eax) xen_iret_start_crit: /* check for unmasked and pending */ - cmpw $0x0001, XEN_vcpu_info_pending(%eax) + cmpw $0x0001, %ss:XEN_vcpu_info_pending(%eax) /* * If there's something pending, mask events again so we can @@ -118,7 +118,7 @@ * touch XEN_vcpu_info_mask. */ jne 1f - movb $1, XEN_vcpu_info_mask(%eax) + movb $1, %ss:XEN_vcpu_info_mask(%eax) 1: popl %eax --- linux-3.5.0.orig/arch/x86/power/hibernate_32.c +++ linux-3.5.0/arch/x86/power/hibernate_32.c @@ -129,8 +129,6 @@ } } - resume_map_numa_kva(pgd_base); - return 0; } --- linux-3.5.0.orig/arch/x86/realmode/rm/wakemain.c +++ linux-3.5.0/arch/x86/realmode/rm/wakemain.c @@ -61,6 +61,30 @@ } } +#define I8042_STATUS_REG 0x64 +#define I8042_DATA_REG 0x60 +#define I8042_SET_LED_BITS 0xed +#define I8042_STR_IBF 0x02 + +static void flash_keyboard_leds(void) +{ + int i; + unsigned char leds = 7; + + /* Flash keyboard LEDs 3 times */ + for (i = 0; i < 6; i++) { + while (inb(I8042_STATUS_REG) & I8042_STR_IBF) + ; + outb(I8042_SET_LED_BITS, I8042_DATA_REG); + while (inb(I8042_STATUS_REG) & I8042_STR_IBF) + ; + outb(leds, I8042_DATA_REG); + leds ^= 7; + udelay(500000); + } +} + + void main(void) { /* Kill machine if structures are wrong */ @@ -79,4 +103,7 @@ probe_cards(0); set_mode(wakeup_header.video_mode); } + + if (wakeup_header.realmode_flags & 8) + flash_keyboard_leds(); } --- linux-3.5.0.orig/arch/x86/kvm/cpuid.h +++ linux-3.5.0/arch/x86/kvm/cpuid.h @@ -23,6 +23,9 @@ { struct kvm_cpuid_entry2 *best; + if (!static_cpu_has(X86_FEATURE_XSAVE)) + return 0; + best = kvm_find_cpuid_entry(vcpu, 1, 0); return best && (best->ecx & bit(X86_FEATURE_XSAVE)); } @@ -51,4 +54,12 @@ return best && (best->ecx & bit(X86_FEATURE_OSVW)); } +static inline bool guest_cpuid_has_pcid(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 1, 0); + return best && (best->ecx & bit(X86_FEATURE_PCID)); +} + #endif --- linux-3.5.0.orig/arch/x86/kvm/x86.c +++ linux-3.5.0/arch/x86/kvm/x86.c @@ -528,6 +528,9 @@ return 1; } + if (!(cr0 & X86_CR0_PG) && kvm_read_cr4_bits(vcpu, X86_CR4_PCIDE)) + return 1; + kvm_x86_ops->set_cr0(vcpu, cr0); if ((cr0 ^ old_cr0) & X86_CR0_PG) { @@ -604,10 +607,20 @@ kvm_read_cr3(vcpu))) return 1; + if ((cr4 & X86_CR4_PCIDE) && !(old_cr4 & X86_CR4_PCIDE)) { + if (!guest_cpuid_has_pcid(vcpu)) + return 1; + + /* PCID can not be enabled when cr3[11:0]!=000H or EFER.LMA=0 */ + if ((kvm_read_cr3(vcpu) & X86_CR3_PCID_MASK) || !is_long_mode(vcpu)) + return 1; + } + if (kvm_x86_ops->set_cr4(vcpu, cr4)) return 1; - if ((cr4 ^ old_cr4) & pdptr_bits) + if (((cr4 ^ old_cr4) & pdptr_bits) || + (!(cr4 & X86_CR4_PCIDE) && (old_cr4 & X86_CR4_PCIDE))) kvm_mmu_reset_context(vcpu); if ((cr4 ^ old_cr4) & X86_CR4_OSXSAVE) @@ -626,8 +639,12 @@ } if (is_long_mode(vcpu)) { - if (cr3 & CR3_L_MODE_RESERVED_BITS) - return 1; + if (kvm_read_cr4(vcpu) & X86_CR4_PCIDE) { + if (cr3 & CR3_PCID_ENABLED_RESERVED_BITS) + return 1; + } else + if (cr3 & CR3_L_MODE_RESERVED_BITS) + return 1; } else { if (is_pae(vcpu)) { if (cr3 & CR3_PAE_RESERVED_BITS) @@ -907,6 +924,10 @@ */ getboottime(&boot); + if (kvm->arch.kvmclock_offset) { + struct timespec ts = ns_to_timespec(kvm->arch.kvmclock_offset); + boot = timespec_sub(boot, ts); + } wc.sec = boot.tv_sec; wc.nsec = boot.tv_nsec; wc.version = version; @@ -5737,6 +5758,9 @@ int pending_vec, max_bits, idx; struct desc_ptr dt; + if (!guest_cpuid_has_xsave(vcpu) && (sregs->cr4 & X86_CR4_OSXSAVE)) + return -EINVAL; + dt.size = sregs->idt.limit; dt.address = sregs->idt.base; kvm_x86_ops->set_idt(vcpu, &dt); --- linux-3.5.0.orig/arch/x86/kvm/vmx.c +++ linux-3.5.0/arch/x86/kvm/vmx.c @@ -71,6 +71,9 @@ module_param_named(unrestricted_guest, enable_unrestricted_guest, bool, S_IRUGO); +static bool __read_mostly enable_ept_ad_bits = 1; +module_param_named(eptad, enable_ept_ad_bits, bool, S_IRUGO); + static bool __read_mostly emulate_invalid_guest_state = 0; module_param(emulate_invalid_guest_state, bool, S_IRUGO); @@ -789,6 +792,11 @@ return vmx_capability.ept & VMX_EPT_PAGE_WALK_4_BIT; } +static inline bool cpu_has_vmx_ept_ad_bits(void) +{ + return vmx_capability.ept & VMX_EPT_AD_BIT; +} + static inline bool cpu_has_vmx_invept_individual_addr(void) { return vmx_capability.ept & VMX_EPT_EXTENT_INDIVIDUAL_BIT; @@ -849,6 +857,12 @@ SECONDARY_EXEC_RDTSCP; } +static inline bool cpu_has_vmx_invpcid(void) +{ + return vmcs_config.cpu_based_2nd_exec_ctrl & + SECONDARY_EXEC_ENABLE_INVPCID; +} + static inline bool cpu_has_virtual_nmis(void) { return vmcs_config.pin_based_exec_ctrl & PIN_BASED_VIRTUAL_NMIS; @@ -1470,13 +1484,6 @@ loadsegment(ds, vmx->host_state.ds_sel); loadsegment(es, vmx->host_state.es_sel); } -#else - /* - * The sysexit path does not restore ds/es, so we must set them to - * a reasonable value ourselves. - */ - loadsegment(ds, __USER_DS); - loadsegment(es, __USER_DS); #endif reload_tss(); #ifdef CONFIG_X86_64 @@ -1739,6 +1746,11 @@ return cpu_has_vmx_rdtscp(); } +static bool vmx_invpcid_supported(void) +{ + return cpu_has_vmx_invpcid() && enable_ept; +} + /* * Swap MSR entry in host/guest MSR entry array. */ @@ -2458,7 +2470,8 @@ SECONDARY_EXEC_ENABLE_EPT | SECONDARY_EXEC_UNRESTRICTED_GUEST | SECONDARY_EXEC_PAUSE_LOOP_EXITING | - SECONDARY_EXEC_RDTSCP; + SECONDARY_EXEC_RDTSCP | + SECONDARY_EXEC_ENABLE_INVPCID; if (adjust_vmx_controls(min2, opt2, MSR_IA32_VMX_PROCBASED_CTLS2, &_cpu_based_2nd_exec_control) < 0) @@ -2645,8 +2658,12 @@ !cpu_has_vmx_ept_4levels()) { enable_ept = 0; enable_unrestricted_guest = 0; + enable_ept_ad_bits = 0; } + if (!cpu_has_vmx_ept_ad_bits()) + enable_ept_ad_bits = 0; + if (!cpu_has_vmx_unrestricted_guest()) enable_unrestricted_guest = 0; @@ -3027,6 +3044,8 @@ /* TODO write the value reading from MSR */ eptp = VMX_EPT_DEFAULT_MT | VMX_EPT_DEFAULT_GAW << VMX_EPT_GAW_EPTP_SHIFT; + if (enable_ept_ad_bits) + eptp |= VMX_EPT_AD_ENABLE_BIT; eptp |= (root_hpa & PAGE_MASK); return eptp; @@ -3731,6 +3750,8 @@ if (!enable_ept) { exec_control &= ~SECONDARY_EXEC_ENABLE_EPT; enable_unrestricted_guest = 0; + /* Enable INVPCID for non-ept guests may cause performance regression. */ + exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID; } if (!enable_unrestricted_guest) exec_control &= ~SECONDARY_EXEC_UNRESTRICTED_GUEST; @@ -6273,6 +6294,19 @@ #endif ); +#ifndef CONFIG_X86_64 + /* + * The sysexit path does not restore ds/es, so we must set them to + * a reasonable value ourselves. + * + * We can't defer this to vmx_load_host_state() since that function + * may be executed in interrupt context, which saves and restore segments + * around it, nullifying its effect. + */ + loadsegment(ds, __USER_DS); + loadsegment(es, __USER_DS); +#endif + vcpu->arch.regs_avail = ~((1 << VCPU_REGS_RIP) | (1 << VCPU_REGS_RSP) | (1 << VCPU_EXREG_RFLAGS) | (1 << VCPU_EXREG_CPL) @@ -6467,6 +6501,23 @@ } } } + + exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL); + /* Exposing INVPCID only when PCID is exposed */ + best = kvm_find_cpuid_entry(vcpu, 0x7, 0); + if (vmx_invpcid_supported() && + best && (best->ecx & bit(X86_FEATURE_INVPCID)) && + guest_cpuid_has_pcid(vcpu)) { + exec_control |= SECONDARY_EXEC_ENABLE_INVPCID; + vmcs_write32(SECONDARY_VM_EXEC_CONTROL, + exec_control); + } else { + exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID; + vmcs_write32(SECONDARY_VM_EXEC_CONTROL, + exec_control); + if (best) + best->ecx &= ~bit(X86_FEATURE_INVPCID); + } } static void vmx_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry) @@ -7201,6 +7252,7 @@ .cpuid_update = vmx_cpuid_update, .rdtscp_supported = vmx_rdtscp_supported, + .invpcid_supported = vmx_invpcid_supported, .set_supported_cpuid = vmx_set_supported_cpuid, @@ -7275,8 +7327,10 @@ vmx_disable_intercept_for_msr(MSR_IA32_SYSENTER_EIP, false); if (enable_ept) { - kvm_mmu_set_mask_ptes(0ull, 0ull, 0ull, 0ull, - VMX_EPT_EXECUTABLE_MASK); + kvm_mmu_set_mask_ptes(0ull, + (enable_ept_ad_bits) ? VMX_EPT_ACCESS_BIT : 0ull, + (enable_ept_ad_bits) ? VMX_EPT_DIRTY_BIT : 0ull, + 0ull, VMX_EPT_EXECUTABLE_MASK); ept_set_mmio_spte_mask(); kvm_enable_tdp(); } else --- linux-3.5.0.orig/arch/x86/kvm/cpuid.c +++ linux-3.5.0/arch/x86/kvm/cpuid.c @@ -201,6 +201,7 @@ unsigned f_lm = 0; #endif unsigned f_rdtscp = kvm_x86_ops->rdtscp_supported() ? F(RDTSCP) : 0; + unsigned f_invpcid = kvm_x86_ops->invpcid_supported() ? F(INVPCID) : 0; /* cpuid 1.edx */ const u32 kvm_supported_word0_x86_features = @@ -228,7 +229,7 @@ 0 /* DS-CPL, VMX, SMX, EST */ | 0 /* TM2 */ | F(SSSE3) | 0 /* CNXT-ID */ | 0 /* Reserved */ | F(FMA) | F(CX16) | 0 /* xTPR Update, PDCM */ | - 0 /* Reserved, DCA */ | F(XMM4_1) | + F(PCID) | 0 /* Reserved, DCA */ | F(XMM4_1) | F(XMM4_2) | F(X2APIC) | F(MOVBE) | F(POPCNT) | 0 /* Reserved*/ | F(AES) | F(XSAVE) | 0 /* OSXSAVE */ | F(AVX) | F(F16C) | F(RDRAND); @@ -248,7 +249,7 @@ /* cpuid 7.0.ebx */ const u32 kvm_supported_word9_x86_features = F(FSGSBASE) | F(BMI1) | F(HLE) | F(AVX2) | F(SMEP) | - F(BMI2) | F(ERMS) | F(RTM); + F(BMI2) | F(ERMS) | f_invpcid | F(RTM); /* all calls to cpuid_count() should be made on the same cpu */ get_cpu(); --- linux-3.5.0.orig/arch/x86/kvm/mmu.c +++ linux-3.5.0/arch/x86/kvm/mmu.c @@ -90,7 +90,7 @@ #define PTE_PREFETCH_NUM 8 -#define PT_FIRST_AVAIL_BITS_SHIFT 9 +#define PT_FIRST_AVAIL_BITS_SHIFT 10 #define PT64_SECOND_AVAIL_BITS_SHIFT 52 #define PT64_LEVEL_BITS 9 @@ -1242,7 +1242,8 @@ int young = 0; /* - * Emulate the accessed bit for EPT, by checking if this page has + * In case of absence of EPT Access and Dirty Bits supports, + * emulate the accessed bit for EPT, by checking if this page has * an EPT mapping, and clearing it if it does. On the next access, * a new EPT mapping will be established. * This has some overhead, but not as much as the cost of swapping @@ -1253,11 +1254,12 @@ for (sptep = rmap_get_first(*rmapp, &iter); sptep; sptep = rmap_get_next(&iter)) { - BUG_ON(!(*sptep & PT_PRESENT_MASK)); + BUG_ON(!is_shadow_present_pte(*sptep)); - if (*sptep & PT_ACCESSED_MASK) { + if (*sptep & shadow_accessed_mask) { young = 1; - clear_bit(PT_ACCESSED_SHIFT, (unsigned long *)sptep); + clear_bit((ffs(shadow_accessed_mask) - 1), + (unsigned long *)sptep); } } @@ -1281,9 +1283,9 @@ for (sptep = rmap_get_first(*rmapp, &iter); sptep; sptep = rmap_get_next(&iter)) { - BUG_ON(!(*sptep & PT_PRESENT_MASK)); + BUG_ON(!is_shadow_present_pte(*sptep)); - if (*sptep & PT_ACCESSED_MASK) { + if (*sptep & shadow_accessed_mask) { young = 1; break; } --- linux-3.5.0.orig/arch/x86/kvm/i8259.c +++ linux-3.5.0/arch/x86/kvm/i8259.c @@ -305,6 +305,11 @@ addr &= 1; if (addr == 0) { if (val & 0x10) { + u8 edge_irr = s->irr & ~s->elcr; + int i; + bool found; + struct kvm_vcpu *vcpu; + s->init4 = val & 1; s->last_irr = 0; s->irr &= s->elcr; @@ -322,6 +327,18 @@ if (val & 0x08) pr_pic_unimpl( "level sensitive irq not supported"); + + kvm_for_each_vcpu(i, vcpu, s->pics_state->kvm) + if (kvm_apic_accept_pic_intr(vcpu)) { + found = true; + break; + } + + + if (found) + for (irq = 0; irq < PIC_NUM_PINS/2; irq++) + if (edge_irr & (1 << irq)) + pic_clear_isr(s, irq); } else if (val & 0x08) { if (val & 0x04) s->poll = 1; --- linux-3.5.0.orig/arch/x86/kvm/svm.c +++ linux-3.5.0/arch/x86/kvm/svm.c @@ -4044,6 +4044,11 @@ return false; } +static bool svm_invpcid_supported(void) +{ + return false; +} + static bool svm_has_wbinvd_exit(void) { return true; @@ -4312,6 +4317,7 @@ .cpuid_update = svm_cpuid_update, .rdtscp_supported = svm_rdtscp_supported, + .invpcid_supported = svm_invpcid_supported, .set_supported_cpuid = svm_set_supported_cpuid, --- linux-3.5.0.orig/arch/x86/kvm/emulate.c +++ linux-3.5.0/arch/x86/kvm/emulate.c @@ -4426,12 +4426,12 @@ break; case 0xb6 ... 0xb7: /* movzx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (u8) ctxt->src.val + ctxt->dst.val = (ctxt->src.bytes == 1) ? (u8) ctxt->src.val : (u16) ctxt->src.val; break; case 0xbe ... 0xbf: /* movsx */ ctxt->dst.bytes = ctxt->op_bytes; - ctxt->dst.val = (ctxt->d & ByteOp) ? (s8) ctxt->src.val : + ctxt->dst.val = (ctxt->src.bytes == 1) ? (s8) ctxt->src.val : (s16) ctxt->src.val; break; case 0xc0 ... 0xc1: /* xadd */ --- linux-3.5.0.orig/arch/x86/ia32/ia32entry.S +++ linux-3.5.0/arch/x86/ia32/ia32entry.S @@ -204,7 +204,7 @@ testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) jnz ia32_ret_from_sys_call TRACE_IRQS_ON - sti + ENABLE_INTERRUPTS(CLBR_NONE) movl %eax,%esi /* second arg, syscall return value */ cmpl $-MAX_ERRNO,%eax /* is it an error ? */ jbe 1f @@ -214,7 +214,7 @@ call __audit_syscall_exit movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */ movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi - cli + DISABLE_INTERRUPTS(CLBR_NONE) TRACE_IRQS_OFF testl %edi,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) jz \exit --- linux-3.5.0.orig/arch/x86/syscalls/syscall_64.tbl +++ linux-3.5.0/arch/x86/syscalls/syscall_64.tbl @@ -60,8 +60,8 @@ 51 common getsockname sys_getsockname 52 common getpeername sys_getpeername 53 common socketpair sys_socketpair -54 common setsockopt sys_setsockopt -55 common getsockopt sys_getsockopt +54 64 setsockopt sys_setsockopt +55 64 getsockopt sys_getsockopt 56 common clone stub_clone 57 common fork stub_fork 58 common vfork stub_vfork @@ -318,7 +318,7 @@ 309 common getcpu sys_getcpu 310 64 process_vm_readv sys_process_vm_readv 311 64 process_vm_writev sys_process_vm_writev -312 64 kcmp sys_kcmp +312 common kcmp sys_kcmp # # x32-specific system call numbers start at 512 to avoid cache impact @@ -353,3 +353,5 @@ 538 x32 sendmmsg compat_sys_sendmmsg 539 x32 process_vm_readv compat_sys_process_vm_readv 540 x32 process_vm_writev compat_sys_process_vm_writev +541 x32 setsockopt compat_sys_setsockopt +542 x32 getsockopt compat_sys_getsockopt --- linux-3.5.0.orig/arch/x86/pci/common.c +++ linux-3.5.0/arch/x86/pci/common.c @@ -433,7 +433,8 @@ .callback = set_scan_all, .ident = "Stratus/NEC ftServer", .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ftServer"), + DMI_MATCH(DMI_SYS_VENDOR, "Stratus"), + DMI_MATCH(DMI_PRODUCT_NAME, "ftServer"), }, }, {} --- linux-3.5.0.orig/arch/x86/include/asm/fpu-internal.h +++ linux-3.5.0/arch/x86/include/asm/fpu-internal.h @@ -334,14 +334,17 @@ typedef struct { int preload; } fpu_switch_t; /* - * FIXME! We could do a totally lazy restore, but we need to - * add a per-cpu "this was the task that last touched the FPU - * on this CPU" variable, and the task needs to have a "I last - * touched the FPU on this CPU" and check them. + * Must be run with preemption disabled: this clears the fpu_owner_task, + * on this CPU. * - * We don't do that yet, so "fpu_lazy_restore()" always returns - * false, but some day.. + * This will disable any lazy FPU state restore of the current FPU state, + * but if the current thread owns the FPU, it will still be saved by. */ +static inline void __cpu_disable_lazy_restore(unsigned int cpu) +{ + per_cpu(fpu_owner_task, cpu) = NULL; +} + static inline int fpu_lazy_restore(struct task_struct *new, unsigned int cpu) { return new == this_cpu_read_stable(fpu_owner_task) && --- linux-3.5.0.orig/arch/x86/include/asm/bootparam.h +++ linux-3.5.0/arch/x86/include/asm/bootparam.h @@ -66,6 +66,7 @@ __u64 setup_data; __u64 pref_address; __u32 init_size; + __u32 handover_offset; } __attribute__((packed)); struct sys_desc_table { --- linux-3.5.0.orig/arch/x86/include/asm/efi.h +++ linux-3.5.0/arch/x86/include/asm/efi.h @@ -94,10 +94,12 @@ #endif /* CONFIG_X86_32 */ extern int add_efi_memmap; +extern unsigned long x86_efi_facility; 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); #ifndef CONFIG_EFI /* --- linux-3.5.0.orig/arch/x86/include/asm/kvm_host.h +++ linux-3.5.0/arch/x86/include/asm/kvm_host.h @@ -48,12 +48,13 @@ #define CR3_PAE_RESERVED_BITS ((X86_CR3_PWT | X86_CR3_PCD) - 1) #define CR3_NONPAE_RESERVED_BITS ((PAGE_SIZE-1) & ~(X86_CR3_PWT | X86_CR3_PCD)) +#define CR3_PCID_ENABLED_RESERVED_BITS 0xFFFFFF0000000000ULL #define CR3_L_MODE_RESERVED_BITS (CR3_NONPAE_RESERVED_BITS | \ 0xFFFFFF0000000000ULL) #define CR4_RESERVED_BITS \ (~(unsigned long)(X86_CR4_VME | X86_CR4_PVI | X86_CR4_TSD | X86_CR4_DE\ | X86_CR4_PSE | X86_CR4_PAE | X86_CR4_MCE \ - | X86_CR4_PGE | X86_CR4_PCE | X86_CR4_OSFXSR \ + | X86_CR4_PGE | X86_CR4_PCE | X86_CR4_OSFXSR | X86_CR4_PCIDE \ | X86_CR4_OSXSAVE | X86_CR4_SMEP | X86_CR4_RDWRGSFS \ | X86_CR4_OSXMMEXCPT | X86_CR4_VMXE)) @@ -661,6 +662,7 @@ u64 (*get_mt_mask)(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio); int (*get_lpage_level)(void); bool (*rdtscp_supported)(void); + bool (*invpcid_supported)(void); void (*adjust_tsc_offset)(struct kvm_vcpu *vcpu, s64 adjustment, bool host); void (*set_tdp_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3); --- linux-3.5.0.orig/arch/x86/include/asm/ptrace.h +++ linux-3.5.0/arch/x86/include/asm/ptrace.h @@ -205,21 +205,14 @@ } #endif -/* - * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode - * when it traps. The previous stack will be directly underneath the saved - * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. - * - * This is valid only for kernel mode traps. - */ -static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) -{ #ifdef CONFIG_X86_32 - return (unsigned long)(®s->sp); +extern unsigned long kernel_stack_pointer(struct pt_regs *regs); #else +static inline unsigned long kernel_stack_pointer(struct pt_regs *regs) +{ return regs->sp; -#endif } +#endif #define GET_IP(regs) ((regs)->ip) #define GET_FP(regs) ((regs)->bp) --- linux-3.5.0.orig/arch/x86/include/asm/mce.h +++ linux-3.5.0/arch/x86/include/asm/mce.h @@ -77,6 +77,8 @@ __u32 socketid; /* CPU socket ID */ __u32 apicid; /* CPU initial apic ID */ __u64 mcgcap; /* MCGCAP MSR: machine check capabilities of CPU */ + __u64 aux0; /* model specific */ + __u64 aux1; /* model specific */ }; /* --- linux-3.5.0.orig/arch/x86/include/asm/dma-mapping.h +++ linux-3.5.0/arch/x86/include/asm/dma-mapping.h @@ -162,8 +162,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.5.0.orig/arch/x86/include/asm/mmzone_32.h +++ linux-3.5.0/arch/x86/include/asm/mmzone_32.h @@ -14,12 +14,6 @@ #include -extern void resume_map_numa_kva(pgd_t *pgd); - -#else /* !CONFIG_NUMA */ - -static inline void resume_map_numa_kva(pgd_t *pgd) {} - #endif /* CONFIG_NUMA */ #ifdef CONFIG_DISCONTIGMEM --- linux-3.5.0.orig/arch/x86/include/asm/pgtable.h +++ linux-3.5.0/arch/x86/include/asm/pgtable.h @@ -142,12 +142,16 @@ return (pmd_val(pmd) & PTE_PFN_MASK) >> PAGE_SHIFT; } +static inline unsigned long pud_pfn(pud_t pud) +{ + return (pud_val(pud) & PTE_PFN_MASK) >> PAGE_SHIFT; +} + #define pte_page(pte) pfn_to_page(pte_pfn(pte)) static inline int pmd_large(pmd_t pte) { - return (pmd_flags(pte) & (_PAGE_PSE | _PAGE_PRESENT)) == - (_PAGE_PSE | _PAGE_PRESENT); + return pmd_flags(pte) & _PAGE_PSE; } #ifdef CONFIG_TRANSPARENT_HUGEPAGE @@ -415,7 +419,13 @@ static inline int pmd_present(pmd_t pmd) { - return pmd_flags(pmd) & _PAGE_PRESENT; + /* + * Checking for _PAGE_PSE is needed too because + * split_huge_page will temporarily clear the present bit (but + * the _PAGE_PSE flag will remain set at all times while the + * _PAGE_PRESENT bit is clear). + */ + return pmd_flags(pmd) & (_PAGE_PRESENT | _PAGE_PROTNONE | _PAGE_PSE); } static inline int pmd_none(pmd_t pmd) --- linux-3.5.0.orig/arch/x86/include/asm/processor-flags.h +++ linux-3.5.0/arch/x86/include/asm/processor-flags.h @@ -44,6 +44,7 @@ */ #define X86_CR3_PWT 0x00000008 /* Page Write Through */ #define X86_CR3_PCD 0x00000010 /* Page Cache Disable */ +#define X86_CR3_PCID_MASK 0x00000fff /* PCID Mask */ /* * Intel CPU features in CR4 @@ -61,6 +62,7 @@ #define X86_CR4_OSXMMEXCPT 0x00000400 /* enable unmasked SSE exceptions */ #define X86_CR4_VMXE 0x00002000 /* enable VMX virtualization */ #define X86_CR4_RDWRGSFS 0x00010000 /* enable RDWRGSFS support */ +#define X86_CR4_PCIDE 0x00020000 /* enable PCID support */ #define X86_CR4_OSXSAVE 0x00040000 /* enable xsave and xrestore */ #define X86_CR4_SMEP 0x00100000 /* enable SMEP support */ --- linux-3.5.0.orig/arch/x86/include/asm/vmx.h +++ linux-3.5.0/arch/x86/include/asm/vmx.h @@ -60,6 +60,7 @@ #define SECONDARY_EXEC_WBINVD_EXITING 0x00000040 #define SECONDARY_EXEC_UNRESTRICTED_GUEST 0x00000080 #define SECONDARY_EXEC_PAUSE_LOOP_EXITING 0x00000400 +#define SECONDARY_EXEC_ENABLE_INVPCID 0x00001000 #define PIN_BASED_EXT_INTR_MASK 0x00000001 @@ -281,6 +282,7 @@ #define EXIT_REASON_EPT_MISCONFIG 49 #define EXIT_REASON_WBINVD 54 #define EXIT_REASON_XSETBV 55 +#define EXIT_REASON_INVPCID 58 /* * Interruption-information format @@ -404,6 +406,7 @@ #define VMX_EPTP_WB_BIT (1ull << 14) #define VMX_EPT_2MB_PAGE_BIT (1ull << 16) #define VMX_EPT_1GB_PAGE_BIT (1ull << 17) +#define VMX_EPT_AD_BIT (1ull << 21) #define VMX_EPT_EXTENT_INDIVIDUAL_BIT (1ull << 24) #define VMX_EPT_EXTENT_CONTEXT_BIT (1ull << 25) #define VMX_EPT_EXTENT_GLOBAL_BIT (1ull << 26) @@ -415,11 +418,14 @@ #define VMX_EPT_MAX_GAW 0x4 #define VMX_EPT_MT_EPTE_SHIFT 3 #define VMX_EPT_GAW_EPTP_SHIFT 3 +#define VMX_EPT_AD_ENABLE_BIT (1ull << 6) #define VMX_EPT_DEFAULT_MT 0x6ull #define VMX_EPT_READABLE_MASK 0x1ull #define VMX_EPT_WRITABLE_MASK 0x2ull #define VMX_EPT_EXECUTABLE_MASK 0x4ull #define VMX_EPT_IPAT_BIT (1ull << 6) +#define VMX_EPT_ACCESS_BIT (1ull << 8) +#define VMX_EPT_DIRTY_BIT (1ull << 9) #define VMX_EPT_IDENTITY_PAGETABLE_ADDR 0xfffbc000ul --- linux-3.5.0.orig/arch/x86/include/asm/xen/page.h +++ linux-3.5.0/arch/x86/include/asm/xen/page.h @@ -51,7 +51,8 @@ extern int m2p_add_override(unsigned long mfn, struct page *page, struct gnttab_map_grant_ref *kmap_op); -extern int m2p_remove_override(struct page *page, bool clear_pte); +extern int m2p_remove_override(struct page *page, + struct gnttab_map_grant_ref *kmap_op); extern struct page *m2p_find_override(unsigned long mfn); extern unsigned long m2p_find_override_pfn(unsigned long mfn, unsigned long pfn); --- linux-3.5.0.orig/arch/x86/mm/numa_32.c +++ linux-3.5.0/arch/x86/mm/numa_32.c @@ -73,167 +73,6 @@ extern unsigned long highend_pfn, highstart_pfn; -#define LARGE_PAGE_BYTES (PTRS_PER_PTE * PAGE_SIZE) - -static void *node_remap_start_vaddr[MAX_NUMNODES]; -void set_pmd_pfn(unsigned long vaddr, unsigned long pfn, pgprot_t flags); - -/* - * Remap memory allocator - */ -static unsigned long node_remap_start_pfn[MAX_NUMNODES]; -static void *node_remap_end_vaddr[MAX_NUMNODES]; -static void *node_remap_alloc_vaddr[MAX_NUMNODES]; - -/** - * alloc_remap - Allocate remapped memory - * @nid: NUMA node to allocate memory from - * @size: The size of allocation - * - * Allocate @size bytes from the remap area of NUMA node @nid. The - * size of the remap area is predetermined by init_alloc_remap() and - * only the callers considered there should call this function. For - * more info, please read the comment on top of init_alloc_remap(). - * - * The caller must be ready to handle allocation failure from this - * function and fall back to regular memory allocator in such cases. - * - * CONTEXT: - * Single CPU early boot context. - * - * RETURNS: - * Pointer to the allocated memory on success, %NULL on failure. - */ -void *alloc_remap(int nid, unsigned long size) -{ - void *allocation = node_remap_alloc_vaddr[nid]; - - size = ALIGN(size, L1_CACHE_BYTES); - - if (!allocation || (allocation + size) > node_remap_end_vaddr[nid]) - return NULL; - - node_remap_alloc_vaddr[nid] += size; - memset(allocation, 0, size); - - return allocation; -} - -#ifdef CONFIG_HIBERNATION -/** - * resume_map_numa_kva - add KVA mapping to the temporary page tables created - * during resume from hibernation - * @pgd_base - temporary resume page directory - */ -void resume_map_numa_kva(pgd_t *pgd_base) -{ - int node; - - for_each_online_node(node) { - unsigned long start_va, start_pfn, nr_pages, pfn; - - start_va = (unsigned long)node_remap_start_vaddr[node]; - start_pfn = node_remap_start_pfn[node]; - nr_pages = (node_remap_end_vaddr[node] - - node_remap_start_vaddr[node]) >> PAGE_SHIFT; - - printk(KERN_DEBUG "%s: node %d\n", __func__, node); - - for (pfn = 0; pfn < nr_pages; pfn += PTRS_PER_PTE) { - unsigned long vaddr = start_va + (pfn << PAGE_SHIFT); - pgd_t *pgd = pgd_base + pgd_index(vaddr); - pud_t *pud = pud_offset(pgd, vaddr); - pmd_t *pmd = pmd_offset(pud, vaddr); - - set_pmd(pmd, pfn_pmd(start_pfn + pfn, - PAGE_KERNEL_LARGE_EXEC)); - - printk(KERN_DEBUG "%s: %08lx -> pfn %08lx\n", - __func__, vaddr, start_pfn + pfn); - } - } -} -#endif - -/** - * init_alloc_remap - Initialize remap allocator for a NUMA node - * @nid: NUMA node to initizlie remap allocator for - * - * NUMA nodes may end up without any lowmem. As allocating pgdat and - * memmap on a different node with lowmem is inefficient, a special - * remap allocator is implemented which can be used by alloc_remap(). - * - * For each node, the amount of memory which will be necessary for - * pgdat and memmap is calculated and two memory areas of the size are - * allocated - one in the node and the other in lowmem; then, the area - * in the node is remapped to the lowmem area. - * - * As pgdat and memmap must be allocated in lowmem anyway, this - * doesn't waste lowmem address space; however, the actual lowmem - * which gets remapped over is wasted. The amount shouldn't be - * problematic on machines this feature will be used. - * - * Initialization failure isn't fatal. alloc_remap() is used - * opportunistically and the callers will fall back to other memory - * allocation mechanisms on failure. - */ -void __init init_alloc_remap(int nid, u64 start, u64 end) -{ - unsigned long start_pfn = start >> PAGE_SHIFT; - unsigned long end_pfn = end >> PAGE_SHIFT; - unsigned long size, pfn; - u64 node_pa, remap_pa; - void *remap_va; - - /* - * The acpi/srat node info can show hot-add memroy zones where - * memory could be added but not currently present. - */ - printk(KERN_DEBUG "node %d pfn: [%lx - %lx]\n", - nid, start_pfn, end_pfn); - - /* calculate the necessary space aligned to large page size */ - size = node_memmap_size_bytes(nid, start_pfn, end_pfn); - size += ALIGN(sizeof(pg_data_t), PAGE_SIZE); - size = ALIGN(size, LARGE_PAGE_BYTES); - - /* allocate node memory and the lowmem remap area */ - node_pa = memblock_find_in_range(start, end, size, LARGE_PAGE_BYTES); - if (!node_pa) { - pr_warning("remap_alloc: failed to allocate %lu bytes for node %d\n", - size, nid); - return; - } - memblock_reserve(node_pa, size); - - remap_pa = memblock_find_in_range(min_low_pfn << PAGE_SHIFT, - max_low_pfn << PAGE_SHIFT, - size, LARGE_PAGE_BYTES); - if (!remap_pa) { - pr_warning("remap_alloc: failed to allocate %lu bytes remap area for node %d\n", - size, nid); - memblock_free(node_pa, size); - return; - } - memblock_reserve(remap_pa, size); - remap_va = phys_to_virt(remap_pa); - - /* perform actual remap */ - for (pfn = 0; pfn < size >> PAGE_SHIFT; pfn += PTRS_PER_PTE) - set_pmd_pfn((unsigned long)remap_va + (pfn << PAGE_SHIFT), - (node_pa >> PAGE_SHIFT) + pfn, - PAGE_KERNEL_LARGE); - - /* initialize remap allocator parameters */ - node_remap_start_pfn[nid] = node_pa >> PAGE_SHIFT; - node_remap_start_vaddr[nid] = remap_va; - node_remap_end_vaddr[nid] = remap_va + size; - node_remap_alloc_vaddr[nid] = remap_va; - - printk(KERN_DEBUG "remap_alloc: node %d [%08llx-%08llx) -> [%p-%p)\n", - nid, node_pa, node_pa + size, remap_va, remap_va + size); -} - void __init initmem_init(void) { x86_numa_init(); --- linux-3.5.0.orig/arch/x86/mm/hugetlbpage.c +++ linux-3.5.0/arch/x86/mm/hugetlbpage.c @@ -56,9 +56,16 @@ } /* - * search for a shareable pmd page for hugetlb. + * Search for a shareable pmd page for hugetlb. In any case calls pmd_alloc() + * and returns the corresponding pte. While this is not necessary for the + * !shared pmd case because we can allocate the pmd later as well, it makes the + * code much cleaner. pmd allocation is essential for the shared case because + * pud has to be populated inside the same i_mmap_mutex section - otherwise + * racing tasks could either miss the sharing (see huge_pte_offset) or select a + * bad pmd for sharing. */ -static void huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud) +static pte_t * +huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud) { struct vm_area_struct *vma = find_vma(mm, addr); struct address_space *mapping = vma->vm_file->f_mapping; @@ -68,9 +75,10 @@ struct vm_area_struct *svma; unsigned long saddr; pte_t *spte = NULL; + pte_t *pte; if (!vma_shareable(vma, addr)) - return; + return (pte_t *)pmd_alloc(mm, pud, addr); mutex_lock(&mapping->i_mmap_mutex); vma_prio_tree_foreach(svma, &iter, &mapping->i_mmap, idx, idx) { @@ -97,7 +105,9 @@ put_page(virt_to_page(spte)); spin_unlock(&mm->page_table_lock); out: + pte = (pte_t *)pmd_alloc(mm, pud, addr); mutex_unlock(&mapping->i_mmap_mutex); + return pte; } /* @@ -142,8 +152,9 @@ } else { BUG_ON(sz != PMD_SIZE); if (pud_none(*pud)) - huge_pmd_share(mm, addr, pud); - pte = (pte_t *) pmd_alloc(mm, pud, addr); + pte = huge_pmd_share(mm, addr, pud); + else + pte = (pte_t *)pmd_alloc(mm, pud, addr); } } BUG_ON(pte && !pte_none(*pte) && !pte_huge(*pte)); --- linux-3.5.0.orig/arch/x86/mm/numa.c +++ linux-3.5.0/arch/x86/mm/numa.c @@ -193,7 +193,6 @@ static void __init setup_node_data(int nid, u64 start, u64 end) { const size_t nd_size = roundup(sizeof(pg_data_t), PAGE_SIZE); - bool remapped = false; u64 nd_pa; void *nd; int tnid; @@ -205,37 +204,28 @@ if (end && (end - start) < NODE_MIN_SIZE) return; - /* initialize remap allocator before aligning to ZONE_ALIGN */ - init_alloc_remap(nid, start, end); - start = roundup(start, ZONE_ALIGN); printk(KERN_INFO "Initmem setup node %d [mem %#010Lx-%#010Lx]\n", nid, start, end - 1); /* - * Allocate node data. Try remap allocator first, node-local - * memory and then any node. Never allocate in DMA zone. + * Allocate node data. Try node-local memory and then any node. + * Never allocate in DMA zone. */ - nd = alloc_remap(nid, nd_size); - if (nd) { - nd_pa = __pa(nd); - remapped = true; - } else { - nd_pa = memblock_alloc_nid(nd_size, SMP_CACHE_BYTES, nid); - if (!nd_pa) { - pr_err("Cannot find %zu bytes in node %d\n", - nd_size, nid); - return; - } - nd = __va(nd_pa); + nd_pa = memblock_alloc_nid(nd_size, SMP_CACHE_BYTES, nid); + if (!nd_pa) { + pr_err("Cannot find %zu bytes in node %d\n", + nd_size, nid); + return; } + nd = __va(nd_pa); /* report and initialize */ - printk(KERN_INFO " NODE_DATA [mem %#010Lx-%#010Lx]%s\n", - nd_pa, nd_pa + nd_size - 1, remapped ? " (remapped)" : ""); + printk(KERN_INFO " NODE_DATA [mem %#010Lx-%#010Lx]\n", + nd_pa, nd_pa + nd_size - 1); tnid = early_pfn_to_nid(nd_pa >> PAGE_SHIFT); - if (!remapped && tnid != nid) + if (tnid != nid) printk(KERN_INFO " NODE_DATA(%d) on node %d\n", nid, tnid); node_data[nid] = nd; --- linux-3.5.0.orig/arch/x86/mm/init.c +++ linux-3.5.0/arch/x86/mm/init.c @@ -35,40 +35,44 @@ unsigned page_size_mask; }; -static void __init find_early_table_space(struct map_range *mr, unsigned long end, - int use_pse, int use_gbpages) +/* + * First calculate space needed for kernel direct mapping page tables to cover + * mr[0].start to mr[nr_range - 1].end, while accounting for possible 2M and 1GB + * pages. Then find enough contiguous space for those page tables. + */ +static void __init find_early_table_space(struct map_range *mr, int nr_range) { - unsigned long puds, pmds, ptes, tables, start = 0, good_end = end; + int i; + unsigned long puds = 0, pmds = 0, ptes = 0, tables; + unsigned long start = 0, good_end; phys_addr_t base; - puds = (end + PUD_SIZE - 1) >> PUD_SHIFT; - tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); + for (i = 0; i < nr_range; i++) { + unsigned long range, extra; - if (use_gbpages) { - unsigned long extra; + range = mr[i].end - mr[i].start; + puds += (range + PUD_SIZE - 1) >> PUD_SHIFT; - extra = end - ((end>>PUD_SHIFT) << PUD_SHIFT); - pmds = (extra + PMD_SIZE - 1) >> PMD_SHIFT; - } else - pmds = (end + PMD_SIZE - 1) >> PMD_SHIFT; - - tables += roundup(pmds * sizeof(pmd_t), PAGE_SIZE); + if (mr[i].page_size_mask & (1 << PG_LEVEL_1G)) { + extra = range - ((range >> PUD_SHIFT) << PUD_SHIFT); + pmds += (extra + PMD_SIZE - 1) >> PMD_SHIFT; + } else { + pmds += (range + PMD_SIZE - 1) >> PMD_SHIFT; + } - if (use_pse) { - unsigned long extra; - - extra = end - ((end>>PMD_SHIFT) << PMD_SHIFT); + if (mr[i].page_size_mask & (1 << PG_LEVEL_2M)) { + extra = range - ((range >> PMD_SHIFT) << PMD_SHIFT); #ifdef CONFIG_X86_32 - extra += PMD_SIZE; + extra += PMD_SIZE; #endif - /* The first 2/4M doesn't use large pages. */ - if (mr->start < PMD_SIZE) - extra += mr->end - mr->start; - - ptes = (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; - } else - ptes = (end + PAGE_SIZE - 1) >> PAGE_SHIFT; + ptes += (extra + PAGE_SIZE - 1) >> PAGE_SHIFT; + } else { + ptes += (range + PAGE_SIZE - 1) >> PAGE_SHIFT; + } + } + tables = roundup(puds * sizeof(pud_t), PAGE_SIZE); + tables += roundup(pmds * sizeof(pmd_t), PAGE_SIZE); tables += roundup(ptes * sizeof(pte_t), PAGE_SIZE); #ifdef CONFIG_X86_32 @@ -86,7 +90,7 @@ pgt_buf_top = pgt_buf_start + (tables >> PAGE_SHIFT); printk(KERN_DEBUG "kernel direct mapping tables up to %#lx @ [mem %#010lx-%#010lx]\n", - end - 1, pgt_buf_start << PAGE_SHIFT, + mr[nr_range - 1].end - 1, pgt_buf_start << PAGE_SHIFT, (pgt_buf_top << PAGE_SHIFT) - 1); } @@ -267,7 +271,7 @@ * nodes are discovered. */ if (!after_bootmem) - find_early_table_space(&mr[0], end, use_pse, use_gbpages); + find_early_table_space(mr, nr_range); for (i = 0; i < nr_range; i++) ret = kernel_physical_mapping_init(mr[i].start, mr[i].end, --- linux-3.5.0.orig/arch/x86/mm/init_64.c +++ linux-3.5.0/arch/x86/mm/init_64.c @@ -386,7 +386,8 @@ * these mappings are more intelligent. */ if (pte_val(*pte)) { - pages++; + if (!after_bootmem) + pages++; continue; } @@ -451,6 +452,8 @@ * attributes. */ if (page_size_mask & (1 << PG_LEVEL_2M)) { + if (!after_bootmem) + pages++; last_map_addr = next; continue; } @@ -526,6 +529,8 @@ * attributes. */ if (page_size_mask & (1 << PG_LEVEL_1G)) { + if (!after_bootmem) + pages++; last_map_addr = next; continue; } @@ -824,6 +829,9 @@ 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; --- linux-3.5.0.orig/arch/x86/mm/numa_internal.h +++ linux-3.5.0/arch/x86/mm/numa_internal.h @@ -21,12 +21,6 @@ void __init x86_numa_init(void); -#ifdef CONFIG_X86_64 -static inline void init_alloc_remap(int nid, u64 start, u64 end) { } -#else -void __init init_alloc_remap(int nid, u64 start, u64 end); -#endif - #ifdef CONFIG_NUMA_EMU void __init numa_emulation(struct numa_meminfo *numa_meminfo, int numa_dist_cnt); --- linux-3.5.0.orig/arch/x86/mm/fault.c +++ linux-3.5.0/arch/x86/mm/fault.c @@ -747,13 +747,15 @@ return; } #endif + /* Kernel addresses are always protection faults: */ + if (address >= TASK_SIZE) + error_code |= PF_PROT; - if (unlikely(show_unhandled_signals)) + if (likely(show_unhandled_signals)) show_signal_msg(regs, error_code, address, tsk); - /* Kernel addresses are always protection faults: */ tsk->thread.cr2 = address; - tsk->thread.error_code = error_code | (address >= TASK_SIZE); + tsk->thread.error_code = error_code; tsk->thread.trap_nr = X86_TRAP_PF; force_sig_info_fault(SIGSEGV, si_code, address, tsk, 0); --- linux-3.5.0.orig/arch/x86/boot/video.h +++ linux-3.5.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.5.0.orig/arch/x86/boot/header.S +++ linux-3.5.0/arch/x86/boot/header.S @@ -283,7 +283,7 @@ # Part 2 of the header, from the old setup.S .ascii "HdrS" # header signature - .word 0x020a # header version number (>= 0x0105) + .word 0x020b # header version number (>= 0x0105) # or else old loadlin-1.5 will fail) .globl realmode_swtch realmode_swtch: .word 0, 0 # default_switch, SETUPSEG @@ -401,6 +401,8 @@ #define INIT_SIZE VO_INIT_SIZE #endif init_size: .long INIT_SIZE # kernel initialization size +handover_offset: .long 0x30 # offset to the handover + # protocol entry point # End of setup header ##################################################### --- linux-3.5.0.orig/arch/x86/boot/compressed/head_32.S +++ linux-3.5.0/arch/x86/boot/compressed/head_32.S @@ -42,6 +42,16 @@ */ add $0x4, %esp + call make_boot_params + cmpl $0, %eax + je 1f + movl 0x4(%esp), %esi + movl (%esp), %ecx + pushl %eax + pushl %esi + pushl %ecx + + .org 0x30,0x90 call efi_main cmpl $0, %eax movl %eax, %esi --- linux-3.5.0.orig/arch/x86/boot/compressed/eboot.c +++ linux-3.5.0/arch/x86/boot/compressed/eboot.c @@ -12,6 +12,8 @@ #include #include +#undef memcpy /* Use memcpy from misc.c */ + #include "eboot.h" static efi_system_table_t *sys_table; @@ -729,32 +731,68 @@ * need to create one ourselves (usually the bootloader would create * one for us). */ -static efi_status_t make_boot_params(struct boot_params *boot_params, - efi_loaded_image_t *image, - void *handle) +struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table) { - struct efi_info *efi = &boot_params->efi_info; - struct apm_bios_info *bi = &boot_params->apm_bios_info; - struct sys_desc_table *sdt = &boot_params->sys_desc_table; - struct e820entry *e820_map = &boot_params->e820_map[0]; - struct e820entry *prev = NULL; - struct setup_header *hdr = &boot_params->hdr; - unsigned long size, key, desc_size, _size; - efi_memory_desc_t *mem_map; - void *options = image->load_options; - u32 load_options_size = image->load_options_size / 2; /* ASCII */ + struct boot_params *boot_params; + struct sys_desc_table *sdt; + struct apm_bios_info *bi; + struct setup_header *hdr; + struct efi_info *efi; + efi_loaded_image_t *image; + void *options; + u32 load_options_size; + efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID; int options_size = 0; efi_status_t status; - __u32 desc_version; unsigned long cmdline; - u8 nr_entries; u16 *s2; u8 *s1; int i; + sys_table = _table; + + /* Check if we were booted by the EFI firmware */ + if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) + return NULL; + + status = efi_call_phys3(sys_table->boottime->handle_protocol, + handle, &proto, (void *)&image); + if (status != EFI_SUCCESS) { + efi_printk("Failed to get handle for LOADED_IMAGE_PROTOCOL\n"); + return NULL; + } + + status = low_alloc(0x4000, 1, (unsigned long *)&boot_params); + if (status != EFI_SUCCESS) { + efi_printk("Failed to alloc lowmem for boot params\n"); + return NULL; + } + + memset(boot_params, 0x0, 0x4000); + + hdr = &boot_params->hdr; + efi = &boot_params->efi_info; + bi = &boot_params->apm_bios_info; + sdt = &boot_params->sys_desc_table; + + /* Copy the second sector to boot_params */ + memcpy(&hdr->jump, image->image_base + 512, 512); + + /* + * Fill out some of the header fields ourselves because the + * EFI firmware loader doesn't load the first sector. + */ + hdr->root_flags = 1; + hdr->vid_mode = 0xffff; + hdr->boot_flag = 0xAA55; + + hdr->code32_start = (__u64)(unsigned long)image->image_base; + hdr->type_of_loader = 0x21; /* Convert unicode cmdline to ascii */ + options = image->load_options; + load_options_size = image->load_options_size / 2; /* ASCII */ cmdline = 0; s2 = (u16 *)options; @@ -791,18 +829,36 @@ hdr->ramdisk_image = 0; hdr->ramdisk_size = 0; - status = handle_ramdisks(image, hdr); - if (status != EFI_SUCCESS) - goto free_cmdline; - - setup_graphics(boot_params); - /* Clear APM BIOS info */ memset(bi, 0, sizeof(*bi)); memset(sdt, 0, sizeof(*sdt)); - memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32)); + status = handle_ramdisks(image, hdr); + if (status != EFI_SUCCESS) + goto fail2; + + return boot_params; +fail2: + if (options_size) + low_free(options_size, hdr->cmd_line_ptr); +fail: + low_free(0x4000, (unsigned long)boot_params); + return NULL; +} + +static efi_status_t exit_boot(struct boot_params *boot_params, + void *handle) +{ + struct efi_info *efi = &boot_params->efi_info; + struct e820entry *e820_map = &boot_params->e820_map[0]; + struct e820entry *prev = NULL; + unsigned long size, key, desc_size, _size; + efi_memory_desc_t *mem_map; + efi_status_t status; + __u32 desc_version; + u8 nr_entries; + int i; size = sizeof(*mem_map) * 32; @@ -811,7 +867,7 @@ _size = size; status = low_alloc(size, 1, (unsigned long *)&mem_map); if (status != EFI_SUCCESS) - goto free_cmdline; + return status; status = efi_call_phys5(sys_table->boottime->get_memory_map, &size, mem_map, &key, &desc_size, &desc_version); @@ -823,6 +879,7 @@ if (status != EFI_SUCCESS) goto free_mem_map; + memcpy(&efi->efi_loader_signature, EFI_LOADER_SIGNATURE, sizeof(__u32)); efi->efi_systab = (unsigned long)sys_table; efi->efi_memdesc_size = desc_size; efi->efi_memdesc_version = desc_version; @@ -906,61 +963,13 @@ free_mem_map: low_free(_size, (unsigned long)mem_map); -free_cmdline: - if (options_size) - low_free(options_size, hdr->cmd_line_ptr); -fail: return status; } -/* - * On success we return a pointer to a boot_params structure, and NULL - * on failure. - */ -struct boot_params *efi_main(void *handle, efi_system_table_t *_table) +static efi_status_t relocate_kernel(struct setup_header *hdr) { - struct boot_params *boot_params; unsigned long start, nr_pages; - struct desc_ptr *gdt, *idt; - efi_loaded_image_t *image; - struct setup_header *hdr; efi_status_t status; - efi_guid_t proto = LOADED_IMAGE_PROTOCOL_GUID; - struct desc_struct *desc; - - sys_table = _table; - - /* Check if we were booted by the EFI firmware */ - if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) - goto fail; - - status = efi_call_phys3(sys_table->boottime->handle_protocol, - handle, &proto, (void *)&image); - if (status != EFI_SUCCESS) { - efi_printk("Failed to get handle for LOADED_IMAGE_PROTOCOL\n"); - goto fail; - } - - status = low_alloc(0x4000, 1, (unsigned long *)&boot_params); - if (status != EFI_SUCCESS) { - efi_printk("Failed to alloc lowmem for boot params\n"); - goto fail; - } - - memset(boot_params, 0x0, 0x4000); - - hdr = &boot_params->hdr; - - /* Copy the second sector to boot_params */ - memcpy(&hdr->jump, image->image_base + 512, 512); - - /* - * Fill out some of the header fields ourselves because the - * EFI firmware loader doesn't load the first sector. - */ - hdr->root_flags = 1; - hdr->vid_mode = 0xffff; - hdr->boot_flag = 0xAA55; /* * The EFI firmware loader could have placed the kernel image @@ -978,16 +987,40 @@ if (status != EFI_SUCCESS) { status = low_alloc(hdr->init_size, hdr->kernel_alignment, &start); - if (status != EFI_SUCCESS) { + if (status != EFI_SUCCESS) efi_printk("Failed to alloc mem for kernel\n"); - goto fail; - } } + if (status == EFI_SUCCESS) + memcpy((void *)start, (void *)(unsigned long)hdr->code32_start, + hdr->init_size); + + hdr->pref_address = hdr->code32_start; hdr->code32_start = (__u32)start; - hdr->pref_address = (__u64)(unsigned long)image->image_base; - memcpy((void *)start, image->image_base, image->image_size); + return status; +} + +/* + * On success we return a pointer to a boot_params structure, and NULL + * on failure. + */ +struct boot_params *efi_main(void *handle, efi_system_table_t *_table, + struct boot_params *boot_params) +{ + struct desc_ptr *gdt, *idt; + efi_loaded_image_t *image; + struct setup_header *hdr = &boot_params->hdr; + efi_status_t status; + struct desc_struct *desc; + + sys_table = _table; + + /* Check if we were booted by the EFI firmware */ + if (sys_table->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) + goto fail; + + setup_graphics(boot_params); status = efi_call_phys3(sys_table->boottime->allocate_pool, EFI_LOADER_DATA, sizeof(*gdt), @@ -1015,7 +1048,18 @@ idt->size = 0; idt->address = 0; - status = make_boot_params(boot_params, image, handle); + /* + * If the kernel isn't already loaded at the preferred load + * address, relocate it. + */ + if (hdr->pref_address != hdr->code32_start) { + status = relocate_kernel(hdr); + + if (status != EFI_SUCCESS) + goto fail; + } + + status = exit_boot(boot_params, handle); if (status != EFI_SUCCESS) goto fail; --- linux-3.5.0.orig/arch/x86/boot/compressed/Makefile +++ linux-3.5.0/arch/x86/boot/compressed/Makefile @@ -28,6 +28,9 @@ $(obj)/string.o $(obj)/cmdline.o $(obj)/early_serial_console.o \ $(obj)/piggy.o +$(obj)/eboot.o: KBUILD_CFLAGS += -fshort-wchar -mno-red-zone +$(obj)/efi_stub_$(BITS).o: KBUILD_CLFAGS += -fshort-wchar -mno-red-zone + ifeq ($(CONFIG_EFI_STUB), y) VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o endif --- linux-3.5.0.orig/arch/x86/boot/compressed/head_64.S +++ linux-3.5.0/arch/x86/boot/compressed/head_64.S @@ -209,6 +209,16 @@ .org 0x210 mov %rcx, %rdi mov %rdx, %rsi + pushq %rdi + pushq %rsi + call make_boot_params + cmpq $0,%rax + je 1f + mov %rax, %rdx + popq %rsi + popq %rdi + + .org 0x230,0x90 call efi_main movq %rax,%rsi cmpq $0,%rax --- linux-3.5.0.orig/arch/x86/kernel/smpboot.c +++ linux-3.5.0/arch/x86/kernel/smpboot.c @@ -66,6 +66,8 @@ #include #include #include +#include +#include #include #include #include @@ -826,6 +828,9 @@ per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; + /* the FPU context is blank, nobody can own it */ + __cpu_disable_lazy_restore(cpu); + err = do_boot_cpu(apicid, cpu, tidle); if (err) { pr_debug("do_boot_cpu failed %d\n", err); --- linux-3.5.0.orig/arch/x86/kernel/entry_64.S +++ linux-3.5.0/arch/x86/kernel/entry_64.S @@ -1381,7 +1381,7 @@ CFI_RESTORE r11 addq $0x30,%rsp CFI_ADJUST_CFA_OFFSET -0x30 - pushq_cfi $0 + pushq_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL jmp error_exit CFI_ENDPROC --- linux-3.5.0.orig/arch/x86/kernel/microcode_core.c +++ linux-3.5.0/arch/x86/kernel/microcode_core.c @@ -298,19 +298,31 @@ const char *buf, size_t size) { unsigned long val; - int cpu = dev->id; - ssize_t ret = 0; + int cpu; + ssize_t ret = 0, tmp_ret; + + /* allow reload only from the BSP */ + if (boot_cpu_data.cpu_index != dev->id) + return -EINVAL; ret = kstrtoul(buf, 0, &val); if (ret) return ret; - if (val == 1) { - get_online_cpus(); - if (cpu_online(cpu)) - ret = reload_for_cpu(cpu); - put_online_cpus(); + if (val != 1) + return size; + + get_online_cpus(); + for_each_online_cpu(cpu) { + tmp_ret = reload_for_cpu(cpu); + if (tmp_ret != 0) + pr_warn("Error reloading microcode on CPU %d\n", cpu); + + /* save retval of the first encountered reload error */ + if (!ret) + ret = tmp_ret; } + put_online_cpus(); if (!ret) ret = size; --- linux-3.5.0.orig/arch/x86/kernel/hpet.c +++ linux-3.5.0/arch/x86/kernel/hpet.c @@ -434,7 +434,7 @@ /* unmask it */ cfg = hpet_readl(HPET_Tn_CFG(hdev->num)); - cfg |= HPET_TN_FSB; + cfg |= HPET_TN_ENABLE | HPET_TN_FSB; hpet_writel(cfg, HPET_Tn_CFG(hdev->num)); } @@ -445,7 +445,7 @@ /* mask it */ cfg = hpet_readl(HPET_Tn_CFG(hdev->num)); - cfg &= ~HPET_TN_FSB; + cfg &= ~(HPET_TN_ENABLE | HPET_TN_FSB); hpet_writel(cfg, HPET_Tn_CFG(hdev->num)); } --- linux-3.5.0.orig/arch/x86/kernel/setup.c +++ linux-3.5.0/arch/x86/kernel/setup.c @@ -613,6 +613,83 @@ static unsigned reserve_low = CONFIG_X86_RESERVE_LOW << 10; +static bool __init snb_gfx_workaround_needed(void) +{ +#ifdef CONFIG_PCI + int i; + u16 vendor, devid; + static const __initconst u16 snb_ids[] = { + 0x0102, + 0x0112, + 0x0122, + 0x0106, + 0x0116, + 0x0126, + 0x010a, + }; + + /* Assume no if something weird is going on with PCI */ + if (!early_pci_allowed()) + return false; + + vendor = read_pci_config_16(0, 2, 0, PCI_VENDOR_ID); + if (vendor != 0x8086) + return false; + + devid = read_pci_config_16(0, 2, 0, PCI_DEVICE_ID); + for (i = 0; i < ARRAY_SIZE(snb_ids); i++) + if (devid == snb_ids[i]) + return true; +#endif + + return false; +} + +/* + * Sandy Bridge graphics has trouble with certain ranges, exclude + * them from allocation. + */ +static void __init trim_snb_memory(void) +{ + static const __initconst unsigned long bad_pages[] = { + 0x20050000, + 0x20110000, + 0x20130000, + 0x20138000, + 0x40004000, + }; + int i; + + if (!snb_gfx_workaround_needed()) + return; + + printk(KERN_DEBUG "reserving inaccessible SNB gfx pages\n"); + + /* + * Reserve all memory below the 1 MB mark that has not + * already been reserved. + */ + memblock_reserve(0, 1<<20); + + for (i = 0; i < ARRAY_SIZE(bad_pages); i++) { + if (memblock_reserve(bad_pages[i], PAGE_SIZE)) + printk(KERN_WARNING "failed to reserve 0x%08lx\n", + bad_pages[i]); + } +} + +/* + * Here we put platform-specific memory range workarounds, i.e. + * memory known to be corrupt or otherwise in need to be reserved on + * specific platforms. + * + * If this gets used more widely it could use a real dispatch mechanism. + */ +static void __init trim_platform_memory_ranges(void) +{ + trim_snb_memory(); +} + static void __init trim_bios_range(void) { /* @@ -633,6 +710,7 @@ * take them out. */ e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); + sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } @@ -732,15 +810,15 @@ #ifdef CONFIG_EFI if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, "EL32", 4)) { - efi_enabled = 1; - efi_64bit = false; + set_bit(EFI_BOOT, &x86_efi_facility); } else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature, "EL64", 4)) { - efi_enabled = 1; - efi_64bit = true; + set_bit(EFI_BOOT, &x86_efi_facility); + set_bit(EFI_64BIT, &x86_efi_facility); } - if (efi_enabled && efi_memblock_x86_reserve_range()) - efi_enabled = 0; + + if (efi_enabled(EFI_BOOT)) + efi_memblock_x86_reserve_range(); #endif x86_init.oem.arch_setup(); @@ -813,7 +891,7 @@ finish_e820_parsing(); - if (efi_enabled) + if (efi_enabled(EFI_BOOT)) efi_init(); dmi_scan_machine(); @@ -896,7 +974,7 @@ * The EFI specification says that boot service code won't be called * after ExitBootServices(). This is, in fact, a lie. */ - if (efi_enabled) + if (efi_enabled(EFI_MEMMAP)) efi_reserve_boot_services(); /* preallocate 4k for mptable mpc */ @@ -911,6 +989,8 @@ setup_real_mode(); + trim_platform_memory_ranges(); + init_gbpages(); /* max_pfn_mapped is updated here */ @@ -919,8 +999,22 @@ #ifdef CONFIG_X86_64 if (max_pfn > max_low_pfn) { - max_pfn_mapped = init_memory_mapping(1UL<<32, - max_pfn<x86) { case 0x14: @@ -105,6 +106,9 @@ case 0x15: max_size = F15H_MPB_MAX_SIZE; break; + case 0x16: + max_size = F16H_MPB_MAX_SIZE; + break; default: max_size = F1XH_MPB_MAX_SIZE; break; @@ -143,11 +147,12 @@ unsigned int *current_size) { struct microcode_header_amd *mc_hdr; - unsigned int actual_size; + unsigned int actual_size, patch_size; u16 equiv_cpu_id; /* size of the current patch we're staring at */ - *current_size = *(u32 *)(ucode_ptr + 4) + SECTION_HDR_SIZE; + patch_size = *(u32 *)(ucode_ptr + 4); + *current_size = patch_size + SECTION_HDR_SIZE; equiv_cpu_id = find_equiv_id(); if (!equiv_cpu_id) @@ -174,7 +179,7 @@ /* * now that the header looks sane, verify its size */ - actual_size = verify_ucode_size(cpu, *current_size, leftover_size); + actual_size = verify_ucode_size(cpu, patch_size, leftover_size); if (!actual_size) return 0; --- linux-3.5.0.orig/arch/x86/kernel/alternative.c +++ linux-3.5.0/arch/x86/kernel/alternative.c @@ -160,7 +160,7 @@ #endif #ifdef P6_NOP1 -static const unsigned char __initconst_or_module p6nops[] = +static const unsigned char p6nops[] = { P6_NOP1, P6_NOP2, @@ -219,7 +219,7 @@ ideal_nops = intel_nops; #endif } - + break; default: #ifdef CONFIG_X86_64 ideal_nops = k8_nops; --- linux-3.5.0.orig/arch/x86/kernel/ptrace.c +++ linux-3.5.0/arch/x86/kernel/ptrace.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -165,6 +166,35 @@ #define FLAG_MASK FLAG_MASK_32 +/* + * X86_32 CPUs don't save ss and esp if the CPU is already in kernel mode + * when it traps. The previous stack will be directly underneath the saved + * registers, and 'sp/ss' won't even have been saved. Thus the '®s->sp'. + * + * Now, if the stack is empty, '®s->sp' is out of range. In this + * case we try to take the previous stack. To always return a non-null + * stack pointer we fall back to regs as stack if no previous stack + * exists. + * + * This is valid only for kernel mode traps. + */ +unsigned long kernel_stack_pointer(struct pt_regs *regs) +{ + unsigned long context = (unsigned long)regs & ~(THREAD_SIZE - 1); + unsigned long sp = (unsigned long)®s->sp; + struct thread_info *tinfo; + + if (context == (sp & ~(THREAD_SIZE - 1))) + return sp; + + tinfo = (struct thread_info *)context; + if (tinfo->previous_esp) + return tinfo->previous_esp; + + return (unsigned long)regs; +} +EXPORT_SYMBOL_GPL(kernel_stack_pointer); + static unsigned long *pt_regs_access(struct pt_regs *regs, unsigned long regno) { BUILD_BUG_ON(offsetof(struct pt_regs, bx) != 0); --- linux-3.5.0.orig/arch/x86/kernel/e820.c +++ linux-3.5.0/arch/x86/kernel/e820.c @@ -76,7 +76,7 @@ * Note: this function only works correct if the e820 table is sorted and * not-overlapping, which is the case */ -int __init e820_all_mapped(u64 start, u64 end, unsigned type) +int e820_all_mapped(u64 start, u64 end, unsigned type) { int i; @@ -103,6 +103,7 @@ } return 0; } +EXPORT_SYMBOL_GPL(e820_all_mapped); /* * Add a memory region to the kernel e820 map. @@ -1077,6 +1078,9 @@ memblock_add(ei->addr, ei->size); } + /* throw away partial pages */ + memblock_trim_memory(PAGE_SIZE); + memblock_dump_all(); } --- linux-3.5.0.orig/arch/x86/kernel/msr.c +++ linux-3.5.0/arch/x86/kernel/msr.c @@ -174,6 +174,9 @@ unsigned int cpu; struct cpuinfo_x86 *c; + if (!capable(CAP_SYS_RAWIO)) + return -EPERM; + cpu = iminor(file->f_path.dentry->d_inode); if (cpu >= nr_cpu_ids || !cpu_online(cpu)) return -ENXIO; /* No such CPU */ --- linux-3.5.0.orig/arch/x86/kernel/step.c +++ linux-3.5.0/arch/x86/kernel/step.c @@ -157,6 +157,33 @@ return 1; } +static void set_task_blockstep(struct task_struct *task, bool on) +{ + unsigned long debugctl; + + /* + * Ensure irq/preemption can't change debugctl in between. + * Note also that both TIF_BLOCKSTEP and debugctl should + * be changed atomically wrt preemption. + * FIXME: this means that set/clear TIF_BLOCKSTEP is simply + * wrong if task != current, SIGKILL can wakeup the stopped + * tracee and set/clear can play with the running task, this + * can confuse the next __switch_to_xtra(). + */ + local_irq_disable(); + debugctl = get_debugctlmsr(); + if (on) { + debugctl |= DEBUGCTLMSR_BTF; + set_tsk_thread_flag(task, TIF_BLOCKSTEP); + } else { + debugctl &= ~DEBUGCTLMSR_BTF; + clear_tsk_thread_flag(task, TIF_BLOCKSTEP); + } + if (task == current) + update_debugctlmsr(debugctl); + local_irq_enable(); +} + /* * Enable single or block step. */ @@ -169,19 +196,10 @@ * So no one should try to use debugger block stepping in a program * that uses user-mode single stepping itself. */ - if (enable_single_step(child) && block) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl |= DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - set_tsk_thread_flag(child, TIF_BLOCKSTEP); - } else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl &= ~DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - clear_tsk_thread_flag(child, TIF_BLOCKSTEP); - } + if (enable_single_step(child) && block) + set_task_blockstep(child, true); + else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) + set_task_blockstep(child, false); } void user_enable_single_step(struct task_struct *child) @@ -199,13 +217,8 @@ /* * Make sure block stepping (BTF) is disabled. */ - if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { - unsigned long debugctl = get_debugctlmsr(); - - debugctl &= ~DEBUGCTLMSR_BTF; - update_debugctlmsr(debugctl); - clear_tsk_thread_flag(child, TIF_BLOCKSTEP); - } + if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) + set_task_blockstep(child, false); /* Always clear TIF_SINGLESTEP... */ clear_tsk_thread_flag(child, TIF_SINGLESTEP); --- linux-3.5.0.orig/arch/x86/kernel/entry_32.S +++ linux-3.5.0/arch/x86/kernel/entry_32.S @@ -1016,7 +1016,7 @@ ENTRY(xen_hypervisor_callback) CFI_STARTPROC - pushl_cfi $0 + pushl_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL TRACE_IRQS_OFF @@ -1058,14 +1058,15 @@ 2: mov 8(%esp),%es 3: mov 12(%esp),%fs 4: mov 16(%esp),%gs + /* EAX == 0 => Category 1 (Bad segment) + EAX != 0 => Category 2 (Bad IRET) */ testl %eax,%eax popl_cfi %eax lea 16(%esp),%esp CFI_ADJUST_CFA_OFFSET -16 jz 5f - addl $16,%esp - jmp iret_exc # EAX != 0 => Category 2 (Bad IRET) -5: pushl_cfi $0 # EAX == 0 => Category 1 (Bad segment) + jmp iret_exc +5: pushl_cfi $-1 /* orig_ax = -1 => not a system call */ SAVE_ALL jmp ret_from_exception CFI_ENDPROC --- linux-3.5.0.orig/arch/x86/kernel/reboot.c +++ linux-3.5.0/arch/x86/kernel/reboot.c @@ -435,6 +435,14 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5420"), }, }, + { /* 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 Latitude E6420. */ .callback = set_pci_reboot, .ident = "Dell Latitude E6420", @@ -459,6 +467,30 @@ DMI_MATCH(DMI_PRODUCT_NAME, "Precision M6600"), }, }, + { /* 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"), + }, + }, { } }; @@ -598,7 +630,7 @@ break; case BOOT_EFI: - if (efi_enabled) + if (efi_enabled(EFI_RUNTIME_SERVICES)) efi.reset_system(reboot_mode ? EFI_RESET_WARM : EFI_RESET_COLD, --- linux-3.5.0.orig/arch/x86/kernel/acpi/sleep.c +++ linux-3.5.0/arch/x86/kernel/acpi/sleep.c @@ -94,6 +94,8 @@ acpi_realmode_flags |= 2; if (strncmp(str, "s3_beep", 7) == 0) acpi_realmode_flags |= 4; + if (strncmp(str, "s3_leds", 7) == 0) + acpi_realmode_flags |= 8; #ifdef CONFIG_HIBERNATION if (strncmp(str, "s4_nohwsig", 10) == 0) acpi_no_s4_hw_signature(); --- linux-3.5.0.orig/arch/x86/kernel/cpu/perf_event_amd_ibs.c +++ linux-3.5.0/arch/x86/kernel/cpu/perf_event_amd_ibs.c @@ -207,6 +207,15 @@ return -EOPNOTSUPP; } +static const struct perf_event_attr ibs_notsupp = { + .exclude_user = 1, + .exclude_kernel = 1, + .exclude_hv = 1, + .exclude_idle = 1, + .exclude_host = 1, + .exclude_guest = 1, +}; + static int perf_ibs_init(struct perf_event *event) { struct hw_perf_event *hwc = &event->hw; @@ -227,6 +236,9 @@ if (event->pmu != &perf_ibs->pmu) return -ENOENT; + if (perf_flags(&event->attr) & perf_flags(&ibs_notsupp)) + return -EINVAL; + if (config & ~perf_ibs->config_mask) return -EINVAL; --- linux-3.5.0.orig/arch/x86/kernel/cpu/common.c +++ linux-3.5.0/arch/x86/kernel/cpu/common.c @@ -144,6 +144,8 @@ { setup_clear_cpu_cap(X86_FEATURE_XSAVE); setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT); + setup_clear_cpu_cap(X86_FEATURE_AVX); + setup_clear_cpu_cap(X86_FEATURE_AVX2); return 1; } __setup("noxsave", x86_xsave_setup); --- linux-3.5.0.orig/arch/x86/kernel/cpu/mshyperv.c +++ linux-3.5.0/arch/x86/kernel/cpu/mshyperv.c @@ -68,7 +68,8 @@ printk(KERN_INFO "HyperV: features 0x%x, hints 0x%x\n", ms_hyperv.features, ms_hyperv.hints); - clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100); + if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE) + clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100); } const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = { --- linux-3.5.0.orig/arch/x86/kernel/cpu/amd.c +++ linux-3.5.0/arch/x86/kernel/cpu/amd.c @@ -598,6 +598,20 @@ } } + /* + * The way access filter has a performance penalty on some workloads. + * Disable it on the affected CPUs. + */ + if ((c->x86 == 0x15) && + (c->x86_model >= 0x02) && (c->x86_model < 0x20)) { + u64 val; + + if (!rdmsrl_safe(0xc0011021, &val) && !(val & 0x1E)) { + val |= 0x1E; + checking_wrmsrl(0xc0011021, val); + } + } + cpu_detect_cache_sizes(c); /* Multi core CPU? */ --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/Makefile +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/Makefile @@ -2,6 +2,7 @@ obj-$(CONFIG_X86_ANCIENT_MCE) += winchip.o p5.o obj-$(CONFIG_X86_MCE_INTEL) += mce_intel.o +obj-$(CONFIG_X86_MCE_XEON75XX) += mce-xeon75xx.o obj-$(CONFIG_X86_MCE_AMD) += mce_amd.o obj-$(CONFIG_X86_MCE_THRESHOLD) += threshold.o obj-$(CONFIG_X86_MCE_INJECT) += mce-inject.o --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce-xeon75xx.c +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce-xeon75xx.c @@ -0,0 +1,427 @@ +/* + * Xeon 7500 series specific machine check support code. + * Copyright 2009, 2010 Intel Corporation + * Author: Andi Kleen + * + * 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. + * + * Implement Xeon 7500 series specific code to retrieve the physical address + * and DIMM information for corrected memory errors. + * + * Interface: mce->aux0/aux1 is mapped to a struct pfa_dimm with pad + * redefined to DIMM valid bits. Consumers check CPUID and bank and + * then interpret aux0/aux1 + */ + +/* #define DEBUG 1 */ /* disable for production */ +#define pr_fmt(x) "MCE: " x + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mce-internal.h" + +#define PFA_SIG "$PFA" +#define PFA_SIG_LEN 4 + +/* DIMM description */ +struct aux_pfa_dimm { + u8 fbd_channel_id; + u8 ddr_channel_id; + u8 ddr_dimm_id; + u8 ddr_rank_id; + u8 ddr_dimm_bank_id; + u8 ddr_dimm_row_id; + u8 ddr_dimm_column_id; + u8 valid; +} __attribute__((packed)); + +struct pfa_dimm { + u8 fbd_channel_id; + u8 ddr_channel_id; + u8 ddr_dimm_id; + u8 ddr_rank_id; + u8 ddr_dimm_bank_id; + u32 ddr_dimm_row_id; + u32 ddr_dimm_column_id; +} __attribute__((packed)); + +/* Memory translation table in memory. */ +struct pfa_table { + u8 sig[PFA_SIG_LEN]; /* Signature: '$PFA' */ + u16 len; /* total length */ + u16 revision; /* 0x11 */ + u8 checksum; /* 8bit sum to zero */ + u8 db_value; /* mailbox port command value */ + u8 db_port; /* mailbox port */ + /* end of header; end of checksum */ + u8 command; /* input command */ + u32 valid; /* valid input/output bits */ + u16 status; /* output status */ + u8 socket_id; /* input socket id*/ + u8 bank_id; /* input MCE bank id */ + u32 pad1; + u64 mbox_address; + u64 physical_addr; /* physical address */ + struct pfa_dimm dimm[2]; + /* + * topology information follows: not used for now. + */ +} __attribute__((packed)); + +/* DIMM valid bits in valid: DIMM0: 8..12; DIMM1 16..20 */ +#define DIMM_VALID_BITS(val, num) (((val) >> (4 + (num) * 8)) & DIMM_VALID_ALL) +#define DIMM_SET_VALID(val, num) ((val) << (4 + (num) * 8)) + +enum { + MCE_BANK_MBOX0 = 8, + MCE_BANK_MBOX1 = 9, + + PFA_REVISION = 0x11, /* v1.1 */ + + /* Status bits for valid field */ + PFA_VALID_MA = (1 << 0), + PFA_VALID_SOCKETID = (1 << 1), + PFA_VALID_BANKID = (1 << 2), + PFA_VALID_PA = (1 << 3), + + /* DIMM valid bits in valid */ + /* use with DIMM_VALID_BITS/DIMM_SET_VALID for pfa->valid */ + DIMM_VALID_FBD_CHAN = (1 << 0), + DIMM_VALID_DDR_CHAN = (1 << 1), + DIMM_VALID_DDR_DIMM = (1 << 2), + DIMM_VALID_DDR_RANK = (1 << 3), + DIMM_VALID_DIMM_BANK = (1 << 4), + DIMM_VALID_DIMM_ROW = (1 << 5), + DIMM_VALID_DIMM_COLUMN = (1 << 6), + DIMM_VALID_ALL = 0x7f, + + PFA_DIMM_VALID_MASK = DIMM_SET_VALID(DIMM_VALID_ALL, 0) + | DIMM_SET_VALID(DIMM_VALID_ALL, 1), + + /* Values for status field */ + PFA_STATUS_SUCCESS = 0, + PFA_STATUS_SOCKET_INVALID = (1 << 1), + PFA_STATUS_MBOX_INVALID = (1 << 2), + PFA_STATUS_MA_INVALID = (1 << 3), + PFA_STATUS_PA_INVALID = (1 << 4), + + /* Values for command field */ + PFA_CMD_GET_MEM_CORR_ERR_PA = 0, + PFA_CMD_PA_TO_DIMM_ADDR = 1, + PFA_CMD_DIMM_TO_PA = 2, + PFA_CMD_GET_TOPOLOGY = 3, + + /* PCI device IDs and the base register */ + ICH_PFA_CFG = 0x8c, /* SCRATCH4 */ + PCI_DEVICE_ID_BXB_ICH_LEGACY0 = 0x3422, +}; + +static struct pfa_table *pfa_table __read_mostly; +static int memerr_max_conv_rate __read_mostly = 100; +static int memerr_min_interval __read_mostly = 500; +static int pfa_lost; /* for diagnosis */ + +enum { + RATE_LIMIT_PERIOD = USEC_PER_SEC, /* in us; period of rate limit */ +}; + +module_param(memerr_max_conv_rate, int, 0644); +MODULE_PARM_DESC(memerr_max_conv_rate, + "Maximum number of memory error conversions each second; 0 to disable"); +module_param(memerr_min_interval, int, 0644); +MODULE_PARM_DESC(memerr_min_interval, + "Minimum time delta between two memory conversions; in us; default 500"); + +static int notest; +static int nocsum; +module_param(notest, int, 0); +module_param(nocsum, int, 0); + +static u64 encode_dimm(struct pfa_dimm *d, u8 valid) +{ + union { + struct aux_pfa_dimm d; + u64 v; + } p; + + BUILD_BUG_ON(sizeof(struct aux_pfa_dimm) != sizeof(u64)); + p.d.fbd_channel_id = d->fbd_channel_id; + p.d.ddr_channel_id = d->ddr_channel_id; + p.d.ddr_dimm_id = d->ddr_dimm_id; + p.d.ddr_rank_id = d->ddr_rank_id; + p.d.ddr_dimm_bank_id = d->ddr_dimm_bank_id; + p.d.ddr_dimm_row_id = d->ddr_dimm_row_id; + if (p.d.ddr_dimm_row_id != d->ddr_dimm_row_id) /* truncated? */ + valid &= ~DIMM_VALID_DIMM_ROW; + p.d.ddr_dimm_column_id = d->ddr_dimm_column_id; + if (p.d.ddr_dimm_column_id != d->ddr_dimm_column_id) + valid &= ~DIMM_VALID_DIMM_COLUMN; + p.d.valid = valid; + pr_debug("PFA fbd_ch %u ddr_ch %u dimm %u rank %u bank %u valid %x\n", + d->fbd_channel_id, + d->ddr_channel_id, + d->ddr_dimm_id, + d->ddr_rank_id, + d->ddr_dimm_bank_id, + valid); + return p.v; +} + +static u8 csum(u8 *table, u16 len) +{ + u8 sum = 0; + int i; + for (i = 0; i < len; i++) + sum += *table++; + return sum; +} + +/* + * Execute a command through the mailbox interface. + */ +static int +pfa_command(unsigned bank, unsigned socketid, unsigned command, unsigned valid) +{ + pfa_table->bank_id = bank; + pfa_table->socket_id = socketid; + pfa_table->valid = valid | PFA_VALID_SOCKETID; + pfa_table->command = command; + + outb(pfa_table->db_value, pfa_table->db_port); + + mb(); /* Reread fields after they got changed */ + + if (pfa_table->status != PFA_STATUS_SUCCESS) { + pr_debug("Memory PFA command %d failed: socket:%d bank:%d status:%x\n", + command, socketid, bank, pfa_table->status); + return -pfa_table->status; + } + return 0; +} + +/* + * Retrieve physical address and DIMMs. + */ +static int translate_memory_error(struct mce *m) +{ + struct pfa_table *pfa = pfa_table; + u64 status; + int ret; + u32 valid; + int cpu = smp_processor_id(); + + /* Make sure our structures match the specification */ + BUILD_BUG_ON(offsetof(struct pfa_table, physical_addr) != 0x20); + BUILD_BUG_ON(offsetof(struct pfa_table, status) != 0x10); + BUILD_BUG_ON(offsetof(struct pfa_table, physical_addr) != 0x20); + BUILD_BUG_ON(offsetof(struct pfa_table, dimm[1].ddr_dimm_column_id) != + 0x3e); + + /* Ask for PA/DIMMs of last error */ + if (pfa_command(m->bank, m->socketid, + PFA_CMD_GET_MEM_CORR_ERR_PA, PFA_VALID_BANKID) < 0) + return -1; + + /* + * Recheck machine check bank. If the overflow bit was set + * there was a race. Don't use the information in this case. + */ + rdmsrl(MSR_IA32_MCx_STATUS(m->bank), status); + if (status & MCI_STATUS_OVER) { + pr_debug("%d: overflow race on bank %d\n", cpu, m->bank); + return -1; + } + + ret = -1; + valid = pfa->valid; + if (valid & PFA_VALID_PA) { + m->status |= MCI_STATUS_ADDRV; + m->addr = pfa_table->physical_addr; + pr_debug("%d: got physical address %llx valid %x\n", + cpu, m->addr, valid); + ret = 0; + } + + /* When DIMM information was supplied pass it out */ + if (valid & PFA_DIMM_VALID_MASK) { + m->aux0 = encode_dimm(&pfa->dimm[0], DIMM_VALID_BITS(valid, 0)); + m->aux1 = encode_dimm(&pfa->dimm[1], DIMM_VALID_BITS(valid, 1)); + ret = 0; + } + + return ret; +} + +/* + * Xeon 75xx specific mce poll method to retrieve the physical address + * and DIMM information. + */ +static void xeon75xx_mce_poll(struct mce *m) +{ + static DEFINE_SPINLOCK(convert_lock); /* Protect table and static */ + static unsigned long cperm; + static ktime_t last, last_int; + unsigned long flags; + ktime_t now; + s64 delta; + + /* Memory error? */ + if (m->bank != MCE_BANK_MBOX0 && m->bank != MCE_BANK_MBOX1) + return; + if (m->status & MCI_STATUS_OVER) + return; + if (memerr_max_conv_rate == 0) + return; + + spin_lock_irqsave(&convert_lock, flags); + /* + * Rate limit conversions. The conversion takes some time, + * but it's not good to use all the CPU time during a error + * flood. + * Enforce maximum number per second and minimum interval. + * The ktime call should use TSC on this machine and be fast. + */ + now = ktime_get(); + delta = ktime_us_delta(now, last); + if (delta >= RATE_LIMIT_PERIOD) { + cperm = 0; + last = now; + } + if (ktime_us_delta(now, last_int) >= memerr_min_interval && + ++cperm <= memerr_max_conv_rate) { + if (translate_memory_error(m) < 0) { + /* On error stop converting for the next second */ + cperm = memerr_max_conv_rate; + pr_debug("PFA translation failed\n"); + } + } else + pfa_lost++; + last_int = now; + spin_unlock_irqrestore(&convert_lock, flags); +} + +static struct pci_device_id bxb_mce_pciids[] = { + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_BXB_ICH_LEGACY0) }, + {} +}; + +static int __init xeon75xx_mce_init(void) +{ + u32 addr = 0; + struct pci_dev *dev; + + if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL || + boot_cpu_data.x86 != 6 || + boot_cpu_data.x86_model != 0x2e) + return -ENODEV; + + /* + * Get table address from register in IOH. + * This just looks up the device, because we don't want to "own" it. + */ + dev = NULL; + while ((dev = pci_get_device(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, dev)) + != NULL) { + if (!pci_match_id(bxb_mce_pciids, dev)) + continue; + pci_read_config_dword(dev, ICH_PFA_CFG, &addr); + if (addr) + break; + } + pci_dev_put(dev); + if (!addr) + return -ENODEV; + + if (!e820_all_mapped(addr, addr + PAGE_SIZE, E820_RESERVED)) { + pr_info("PFA table at %x not e820 reserved\n", addr); + return -ENODEV; + } + + pfa_table = (__force struct pfa_table *)ioremap_cache(addr, PAGE_SIZE); + if (!pfa_table) { + pr_err("Cannot map PFA table at %x\n", addr); + return -EIO; + } + + if (memcmp(&pfa_table->sig, PFA_SIG, PFA_SIG_LEN) || + pfa_table->len < sizeof(struct pfa_table) || + /* assume newer versions are compatible */ + pfa_table->revision < PFA_REVISION) { + pr_info("PFA table at %x invalid\n", addr); + goto error_unmap; + } + + if (!nocsum && csum((u8 *)pfa_table, + offsetof(struct pfa_table, command))) { + pr_info("PFA table at %x length %u has invalid checksum\n", + addr, pfa_table->len); + goto error_unmap; + } + + /* Not strictly needed today */ + if (pfa_table->len > PAGE_SIZE) { + unsigned len = roundup(pfa_table->len, PAGE_SIZE); + iounmap(pfa_table); + pfa_table = (__force void *)ioremap_cache(addr, len); + if (!pfa_table) { + pr_err("Cannot remap %u bytes PFA table at %x\n", + len, addr); + return -EIO; + } + } + + if (!notest) { + int status = pfa_command(0, 0, PFA_CMD_GET_TOPOLOGY, 0); + if (status < 0) { + pr_err("Test of PFA table failed: %x\n", -status); + goto error_unmap; + } + } + + pr_info("Found Xeon75xx PFA memory error translation table at %x\n", + addr); + mb(); + mce_cpu_specific_poll = xeon75xx_mce_poll; + return 0; + +error_unmap: + iounmap(pfa_table); + return -ENODEV; +} + +MODULE_DEVICE_TABLE(pci, bxb_mce_pciids); +MODULE_LICENSE("GPL v2"); +MODULE_AUTHOR("Andi Kleen"); +MODULE_DESCRIPTION("Intel Xeon 75xx specific DIMM error reporting"); + +#ifdef CONFIG_MODULE +static void __exit xeon75xx_mce_exit(void) +{ + mce_cpu_specific_poll = NULL; + wmb(); + /* Wait for all machine checks to finish before really unloading */ + synchronize_rcu(); + iounmap(pfa_table); +} + +module_init(xeon75xx_mce_init); +module_exit(xeon75xx_mce_exit); +#else +/* When built-in run as soon as the PCI subsystem is up */ +fs_initcall(xeon75xx_mce_init); +#endif --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce-internal.h +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce-internal.h @@ -28,6 +28,8 @@ extern struct mce_bank *mce_banks; +extern void (*mce_cpu_specific_poll)(struct mce *); + #ifdef CONFIG_ACPI_APEI int apei_write_mce(struct mce *m); ssize_t apei_read_mce(struct mce *m, u64 *record_id); --- linux-3.5.0.orig/arch/x86/kernel/cpu/mcheck/mce.c +++ linux-3.5.0/arch/x86/kernel/cpu/mcheck/mce.c @@ -95,6 +95,9 @@ static DEFINE_PER_CPU(struct mce, mces_seen); static int cpu_missing; +void (*mce_cpu_specific_poll)(struct mce *); +EXPORT_SYMBOL_GPL(mce_cpu_specific_poll); + /* MCA banks polled by the period polling timer for corrected events */ DEFINE_PER_CPU(mce_banks_t, mce_poll_banks) = { [0 ... BITS_TO_LONGS(MAX_NR_BANKS)-1] = ~0UL @@ -419,6 +422,11 @@ wrmsrl(msr, v); } +static int under_injection(void) +{ + return __get_cpu_var(injectm).finished; +} + /* * Collect all global (w.r.t. this processor) status about this machine * check into our "mce" struct so that we can use it later to assess @@ -623,6 +631,10 @@ if (!(flags & MCP_TIMESTAMP)) m.tsc = 0; + + if (mce_cpu_specific_poll && !under_injection() && !mce_dont_log_ce) + mce_cpu_specific_poll(&m); + /* * Don't get the IP here because it's unlikely to * have anything to do with the actual error location. @@ -1186,6 +1198,7 @@ { unsigned long pfn; struct mce_info *mi = mce_find_info(); + int flags = MF_ACTION_REQUIRED; if (!mi) mce_panic("Lost physical address for unconsumed uncorrectable error", NULL, NULL); @@ -1200,8 +1213,9 @@ * doomed. We still need to mark the page as poisoned and alert any * other users of the page. */ - if (memory_failure(pfn, MCE_VECTOR, MF_ACTION_REQUIRED) < 0 || - mi->restartable == 0) { + if (!mi->restartable) + flags |= MF_MUST_KILL; + if (memory_failure(pfn, MCE_VECTOR, flags) < 0) { pr_err("Memory error not recovered"); force_sig(SIGBUS, current); } --- linux-3.5.0.orig/arch/x86/kernel/apic/ipi.c +++ linux-3.5.0/arch/x86/kernel/apic/ipi.c @@ -106,7 +106,7 @@ unsigned long mask = cpumask_bits(cpumask)[0]; unsigned long flags; - if (WARN_ONCE(!mask, "empty IPI mask")) + if (!mask) return; local_irq_save(flags); --- linux-3.5.0.orig/arch/x86/kernel/apic/x2apic_phys.c +++ linux-3.5.0/arch/x86/kernel/apic/x2apic_phys.c @@ -20,18 +20,19 @@ } early_param("x2apic_phys", set_x2apic_phys_mode); -static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +static bool x2apic_fadt_phys(void) { - if (x2apic_phys) - return x2apic_enabled(); - else if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && - (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) && - x2apic_enabled()) { + if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && + (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) { printk(KERN_DEBUG "System requires x2apic physical mode\n"); - return 1; + return true; } - else - return 0; + return false; +} + +static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +{ + return x2apic_enabled() && (x2apic_phys || x2apic_fadt_phys()); } static void @@ -114,7 +115,7 @@ static int x2apic_phys_probe(void) { - if (x2apic_mode && x2apic_phys) + if (x2apic_mode && (x2apic_phys || x2apic_fadt_phys())) return 1; return apic == &apic_x2apic_phys; --- linux-3.5.0.orig/arch/x86/oprofile/nmi_int.c +++ linux-3.5.0/arch/x86/oprofile/nmi_int.c @@ -55,7 +55,7 @@ val |= counter_config->extra; event &= model->event_mask ? model->event_mask : 0xFF; val |= event & 0xFF; - val |= (event & 0x0F00) << 24; + val |= (u64)(event & 0x0F00) << 24; return val; } --- linux-3.5.0.orig/arch/x86/platform/efi/efi.c +++ linux-3.5.0/arch/x86/platform/efi/efi.c @@ -50,9 +50,6 @@ #define EFI_DEBUG 1 -int efi_enabled; -EXPORT_SYMBOL(efi_enabled); - struct efi __read_mostly efi = { .mps = EFI_INVALID_TABLE_ADDR, .acpi = EFI_INVALID_TABLE_ADDR, @@ -68,15 +65,29 @@ struct efi_memory_map memmap; -bool efi_64bit; -static bool efi_native; - static struct efi efi_phys __initdata; static efi_system_table_t efi_systab __initdata; +static inline bool efi_is_native(void) +{ + return IS_ENABLED(CONFIG_X86_64) == efi_enabled(EFI_64BIT); +} + +unsigned long x86_efi_facility; + +/* + * Returns 1 if 'facility' is enabled, 0 otherwise. + */ +int efi_enabled(int facility) +{ + return test_bit(facility, &x86_efi_facility) != 0; +} +EXPORT_SYMBOL(efi_enabled); + +static bool disable_runtime = false; static int __init setup_noefi(char *arg) { - efi_enabled = 0; + disable_runtime = true; return 0; } early_param("noefi", setup_noefi); @@ -419,10 +430,22 @@ } } -static void __init efi_free_boot_services(void) +void __init efi_unmap_memmap(void) +{ + clear_bit(EFI_MEMMAP, &x86_efi_facility); + if (memmap.map) { + early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); + memmap.map = NULL; + } +} + +void __init efi_free_boot_services(void) { void *p; + if (!efi_is_native()) + return; + for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { efi_memory_desc_t *md = p; unsigned long long start = md->phys_addr; @@ -438,11 +461,13 @@ free_bootmem_late(start, size); } + + efi_unmap_memmap(); } static int __init efi_systab_init(void *phys) { - if (efi_64bit) { + if (efi_enabled(EFI_64BIT)) { efi_system_table_64_t *systab64; u64 tmp = 0; @@ -534,7 +559,7 @@ void *config_tables, *tablep; int i, sz; - if (efi_64bit) + if (efi_enabled(EFI_64BIT)) sz = sizeof(efi_config_table_64_t); else sz = sizeof(efi_config_table_32_t); @@ -554,7 +579,7 @@ efi_guid_t guid; unsigned long table; - if (efi_64bit) { + if (efi_enabled(EFI_64BIT)) { u64 table64; guid = ((efi_config_table_64_t *)tablep)->guid; table64 = ((efi_config_table_64_t *)tablep)->table; @@ -666,22 +691,19 @@ if (boot_params.efi_info.efi_systab_hi || boot_params.efi_info.efi_memmap_hi) { pr_info("Table located above 4GB, disabling EFI.\n"); - efi_enabled = 0; return; } efi_phys.systab = (efi_system_table_t *)boot_params.efi_info.efi_systab; - efi_native = !efi_64bit; #else efi_phys.systab = (efi_system_table_t *) (boot_params.efi_info.efi_systab | ((__u64)boot_params.efi_info.efi_systab_hi<<32)); - efi_native = efi_64bit; #endif - if (efi_systab_init(efi_phys.systab)) { - efi_enabled = 0; + if (efi_systab_init(efi_phys.systab)) return; - } + + set_bit(EFI_SYSTEM_TABLES, &x86_efi_facility); /* * Show what we know for posterity @@ -699,29 +721,31 @@ efi.systab->hdr.revision >> 16, efi.systab->hdr.revision & 0xffff, vendor); - if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) { - efi_enabled = 0; + if (efi_config_init(efi.systab->tables, efi.systab->nr_tables)) return; - } + + set_bit(EFI_CONFIG_TABLES, &x86_efi_facility); /* * Note: We currently don't support runtime services on an EFI * that doesn't match the kernel 32/64-bit mode. */ - if (!efi_native) + if (!efi_is_native()) pr_info("No EFI runtime due to 32/64-bit mismatch with kernel\n"); - else if (efi_runtime_init()) { - efi_enabled = 0; - return; + else { + if (disable_runtime || efi_runtime_init()) + return; + set_bit(EFI_RUNTIME_SERVICES, &x86_efi_facility); } - if (efi_memmap_init()) { - efi_enabled = 0; + if (efi_memmap_init()) return; - } + + set_bit(EFI_MEMMAP, &x86_efi_facility); + #ifdef CONFIG_X86_32 - if (efi_native) { + if (efi_is_native()) { x86_platform.get_wallclock = efi_get_time; x86_platform.set_wallclock = efi_set_rtc_mmss; } @@ -787,8 +811,10 @@ * non-native EFI */ - if (!efi_native) - goto out; + if (!efi_is_native()) { + efi_unmap_memmap(); + return; + } /* Merge contiguous regions of the same type and attribute */ for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { @@ -878,18 +904,12 @@ } /* - * Thankfully, it does seem that no runtime services other than - * SetVirtualAddressMap() will touch boot services code, so we can - * get rid of it all at this point - */ - efi_free_boot_services(); - - /* * Now that EFI is in virtual mode, update the function * pointers in the runtime service table to the new virtual addresses. * * Call EFI services through wrapper functions. */ + efi.runtime_version = efi_systab.hdr.revision; efi.get_time = virt_efi_get_time; efi.set_time = virt_efi_set_time; efi.get_wakeup_time = virt_efi_get_wakeup_time; @@ -906,9 +926,6 @@ if (__supported_pte_mask & _PAGE_NX) runtime_code_page_mkexec(); -out: - early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size); - memmap.map = NULL; kfree(new_memmap); } @@ -920,6 +937,9 @@ efi_memory_desc_t *md; void *p; + if (!efi_enabled(EFI_MEMMAP)) + return 0; + for (p = memmap.map; p < memmap.map_end; p += memmap.desc_size) { md = p; if ((md->phys_addr <= phys_addr) && --- linux-3.5.0.orig/arch/x86/platform/efi/efi_64.c +++ linux-3.5.0/arch/x86/platform/efi/efi_64.c @@ -38,7 +38,7 @@ #include #include -static pgd_t save_pgd __initdata; +static pgd_t *save_pgd __initdata; static unsigned long efi_flags __initdata; static void __init early_code_mapping_set_exec(int executable) @@ -61,12 +61,20 @@ void __init efi_call_phys_prelog(void) { unsigned long vaddress; + int pgd; + int n_pgds; early_code_mapping_set_exec(1); local_irq_save(efi_flags); - vaddress = (unsigned long)__va(0x0UL); - save_pgd = *pgd_offset_k(0x0UL); - set_pgd(pgd_offset_k(0x0UL), *pgd_offset_k(vaddress)); + + n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT), PGDIR_SIZE); + save_pgd = kmalloc(n_pgds * sizeof(pgd_t), GFP_KERNEL); + + for (pgd = 0; pgd < n_pgds; pgd++) { + save_pgd[pgd] = *pgd_offset_k(pgd * PGDIR_SIZE); + vaddress = (unsigned long)__va(pgd * PGDIR_SIZE); + set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress)); + } __flush_tlb_all(); } @@ -75,7 +83,11 @@ /* * After the lock is released, the original page table is restored. */ - set_pgd(pgd_offset_k(0x0UL), save_pgd); + int pgd; + int n_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE); + 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); --- linux-3.5.0.orig/arch/arm/Kconfig +++ linux-3.5.0/arch/arm/Kconfig @@ -349,6 +349,7 @@ select ARM_TIMER_SP804 select CACHE_L2X0 select CLKDEV_LOOKUP + select COMMON_CLK select CPU_V7 select GENERIC_CLOCKEVENTS select HAVE_ARM_SCU @@ -548,6 +549,7 @@ bool "Marvell Kirkwood" select CPU_FEROCEON select PCI + select PCI_QUIRKS select ARCH_REQUIRE_GPIOLIB select GENERIC_CLOCKEVENTS select NEED_MACH_IO_H @@ -2083,6 +2085,7 @@ config CPU_FREQ_IMX tristate "CPUfreq driver for i.MX CPUs" depends on ARCH_MXC && CPU_FREQ + select CPU_FREQ_TABLE help This enables the CPUfreq driver for i.MX CPUs. @@ -2265,6 +2268,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/arm/Kconfig.debug" --- linux-3.5.0.orig/arch/arm/Makefile +++ linux-3.5.0/arch/arm/Makefile @@ -279,10 +279,10 @@ zinstall uinstall install: vmlinux $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@ -%.dtb: +%.dtb: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ -dtbs: +dtbs: scripts $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@ # We use MRPROPER_FILES and CLEAN_FILES now --- linux-3.5.0.orig/arch/arm/configs/mxs_defconfig +++ linux-3.5.0/arch/arm/configs/mxs_defconfig @@ -33,7 +33,6 @@ CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT_VOLUNTARY=y CONFIG_AEABI=y -CONFIG_DEFAULT_MMAP_MIN_ADDR=65536 CONFIG_AUTO_ZRELADDR=y CONFIG_FPE_NWFPE=y CONFIG_NET=y --- linux-3.5.0.orig/arch/arm/plat-omap/counter_32k.c +++ linux-3.5.0/arch/arm/plat-omap/counter_32k.c @@ -52,22 +52,29 @@ * nsecs and adds to a monotonically increasing timespec. */ static struct timespec persistent_ts; -static cycles_t cycles, last_cycles; +static cycles_t cycles; static unsigned int persistent_mult, persistent_shift; +static DEFINE_SPINLOCK(read_persistent_clock_lock); + static void omap_read_persistent_clock(struct timespec *ts) { unsigned long long nsecs; - cycles_t delta; - struct timespec *tsp = &persistent_ts; + cycles_t last_cycles; + unsigned long flags; + + spin_lock_irqsave(&read_persistent_clock_lock, flags); last_cycles = cycles; cycles = sync32k_cnt_reg ? __raw_readl(sync32k_cnt_reg) : 0; - delta = cycles - last_cycles; - nsecs = clocksource_cyc2ns(delta, persistent_mult, persistent_shift); + nsecs = clocksource_cyc2ns(cycles - last_cycles, + persistent_mult, persistent_shift); + + timespec_add_ns(&persistent_ts, nsecs); + + *ts = persistent_ts; - timespec_add_ns(tsp, nsecs); - *ts = *tsp; + spin_unlock_irqrestore(&read_persistent_clock_lock, flags); } /** --- linux-3.5.0.orig/arch/arm/plat-omap/dmtimer.c +++ linux-3.5.0/arch/arm/plat-omap/dmtimer.c @@ -236,7 +236,7 @@ void omap_dm_timer_disable(struct omap_dm_timer *timer) { - pm_runtime_put(&timer->pdev->dev); + pm_runtime_put_sync(&timer->pdev->dev); } EXPORT_SYMBOL_GPL(omap_dm_timer_disable); --- linux-3.5.0.orig/arch/arm/lib/putuser.S +++ linux-3.5.0/arch/arm/lib/putuser.S @@ -16,6 +16,7 @@ * __put_user_X * * Inputs: r0 contains the address + * r1 contains the address limit, which must be preserved * r2, r3 contains the value * Outputs: r0 is the error code * lr corrupted @@ -27,16 +28,19 @@ * Note also that it is intended that __put_user_bad is not global. */ #include +#include #include #include ENTRY(__put_user_1) + check_uaccess r0, 1, r1, ip, __put_user_bad 1: TUSER(strb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_1) ENTRY(__put_user_2) + check_uaccess r0, 2, r1, ip, __put_user_bad mov ip, r2, lsr #8 #ifdef CONFIG_THUMB2_KERNEL #ifndef __ARMEB__ @@ -60,12 +64,14 @@ ENDPROC(__put_user_2) ENTRY(__put_user_4) + check_uaccess r0, 4, r1, ip, __put_user_bad 4: TUSER(str) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__put_user_4) ENTRY(__put_user_8) + check_uaccess r0, 8, r1, ip, __put_user_bad #ifdef CONFIG_THUMB2_KERNEL 5: TUSER(str) r2, [r0] 6: TUSER(str) r3, [r0, #4] --- linux-3.5.0.orig/arch/arm/lib/getuser.S +++ linux-3.5.0/arch/arm/lib/getuser.S @@ -16,8 +16,9 @@ * __get_user_X * * Inputs: r0 contains the address + * r1 contains the address limit, which must be preserved * Outputs: r0 is the error code - * r2, r3 contains the zero-extended value + * r2 contains the zero-extended value * lr corrupted * * No other registers must be altered. (see @@ -27,33 +28,39 @@ * Note also that it is intended that __get_user_bad is not global. */ #include +#include #include #include ENTRY(__get_user_1) + check_uaccess r0, 1, r1, r2, __get_user_bad 1: TUSER(ldrb) r2, [r0] mov r0, #0 mov pc, lr ENDPROC(__get_user_1) ENTRY(__get_user_2) -#ifdef CONFIG_THUMB2_KERNEL -2: TUSER(ldrb) r2, [r0] -3: TUSER(ldrb) r3, [r0, #1] + check_uaccess r0, 2, r1, r2, __get_user_bad +#ifdef CONFIG_CPU_USE_DOMAINS +rb .req ip +2: ldrbt r2, [r0], #1 +3: ldrbt rb, [r0], #0 #else -2: TUSER(ldrb) r2, [r0], #1 -3: TUSER(ldrb) r3, [r0] +rb .req r0 +2: ldrb r2, [r0] +3: ldrb rb, [r0, #1] #endif #ifndef __ARMEB__ - orr r2, r2, r3, lsl #8 + orr r2, r2, rb, lsl #8 #else - orr r2, r3, r2, lsl #8 + orr r2, rb, r2, lsl #8 #endif mov r0, #0 mov pc, lr ENDPROC(__get_user_2) ENTRY(__get_user_4) + check_uaccess r0, 4, r1, r2, __get_user_bad 4: TUSER(ldr) r2, [r0] mov r0, #0 mov pc, lr --- linux-3.5.0.orig/arch/arm/mach-versatile/pci.c +++ linux-3.5.0/arch/arm/mach-versatile/pci.c @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -341,12 +342,12 @@ int irq; /* slot, pin, irq - * 24 1 27 - * 25 1 28 - * 26 1 29 - * 27 1 30 + * 24 1 IRQ_SIC_PCI0 + * 25 1 IRQ_SIC_PCI1 + * 26 1 IRQ_SIC_PCI2 + * 27 1 IRQ_SIC_PCI3 */ - irq = 27 + ((slot - 24 + pin - 1) & 3); + irq = IRQ_SIC_PCI0 + ((slot - 24 + pin - 1) & 3); return irq; } --- linux-3.5.0.orig/arch/arm/mach-versatile/core.c +++ linux-3.5.0/arch/arm/mach-versatile/core.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -66,16 +67,28 @@ #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) +/* These PIC IRQs are valid in each configuration */ +#define PIC_VALID_ALL BIT(SIC_INT_KMI0) | BIT(SIC_INT_KMI1) | \ + BIT(SIC_INT_SCI3) | BIT(SIC_INT_UART3) | \ + BIT(SIC_INT_CLCD) | BIT(SIC_INT_TOUCH) | \ + BIT(SIC_INT_KEYPAD) | BIT(SIC_INT_DoC) | \ + BIT(SIC_INT_USB) | BIT(SIC_INT_PCI0) | \ + BIT(SIC_INT_PCI1) | BIT(SIC_INT_PCI2) | \ + BIT(SIC_INT_PCI3) #if 1 #define IRQ_MMCI0A IRQ_VICSOURCE22 #define IRQ_AACI IRQ_VICSOURCE24 #define IRQ_ETH IRQ_VICSOURCE25 #define PIC_MASK 0xFFD00000 +#define PIC_VALID PIC_VALID_ALL #else #define IRQ_MMCI0A IRQ_SIC_MMCI0A #define IRQ_AACI IRQ_SIC_AACI #define IRQ_ETH IRQ_SIC_ETH #define PIC_MASK 0 +#define PIC_VALID PIC_VALID_ALL | BIT(SIC_INT_MMCI0A) | \ + BIT(SIC_INT_MMCI1A) | BIT(SIC_INT_AACI) | \ + BIT(SIC_INT_ETH) #endif /* Lookup table for finding a DT node that represents the vic instance */ @@ -103,7 +116,7 @@ VERSATILE_SIC_BASE); fpga_irq_init(VA_SIC_BASE, "SIC", IRQ_SIC_START, - IRQ_VICSOURCE31, ~PIC_MASK, np); + IRQ_VICSOURCE31, PIC_VALID, np); /* * Interrupts on secondary controller from 0 to 8 are routed to --- linux-3.5.0.orig/arch/arm/mach-imx/hotplug.c +++ linux-3.5.0/arch/arm/mach-imx/hotplug.c @@ -42,22 +42,6 @@ : "cc"); } -static inline void cpu_leave_lowpower(void) -{ - unsigned int v; - - asm volatile( - "mrc p15, 0, %0, c1, c0, 0\n" - " orr %0, %0, %1\n" - " mcr p15, 0, %0, c1, c0, 0\n" - " mrc p15, 0, %0, c1, c0, 1\n" - " orr %0, %0, %2\n" - " mcr p15, 0, %0, c1, c0, 1\n" - : "=&r" (v) - : "Ir" (CR_C), "Ir" (0x40) - : "cc"); -} - /* * platform-specific code to shutdown a CPU * @@ -67,11 +51,10 @@ { cpu_enter_lowpower(); imx_enable_cpu(cpu, false); - cpu_do_idle(); - cpu_leave_lowpower(); - /* We should never return from idle */ - panic("cpu %d unexpectedly exit from shutdown\n", cpu); + /* spin here until hardware takes it down */ + while (1) + ; } int platform_cpu_disable(unsigned int cpu) --- linux-3.5.0.orig/arch/arm/mach-imx/clk-imx31.c +++ linux-3.5.0/arch/arm/mach-imx/clk-imx31.c @@ -129,7 +129,7 @@ clk_register_clkdev(clk[nfc], NULL, "mxc_nand.0"); clk_register_clkdev(clk[ipu_gate], NULL, "ipu-core"); clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); - clk_register_clkdev(clk[kpp_gate], "kpp", NULL); + clk_register_clkdev(clk[kpp_gate], NULL, "imx-keypad"); clk_register_clkdev(clk[usb_div_post], "per", "mxc-ehci.0"); clk_register_clkdev(clk[usb_gate], "ahb", "mxc-ehci.0"); clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); --- linux-3.5.0.orig/arch/arm/mach-imx/clk-imx25.c +++ linux-3.5.0/arch/arm/mach-imx/clk-imx25.c @@ -222,10 +222,8 @@ clk_register_clkdev(clk[lcdc_ipg], "ipg", "imx-fb.0"); clk_register_clkdev(clk[lcdc_ahb], "ahb", "imx-fb.0"); clk_register_clkdev(clk[wdt_ipg], NULL, "imx2-wdt.0"); - clk_register_clkdev(clk[ssi1_ipg_per], "per", "imx-ssi.0"); - clk_register_clkdev(clk[ssi1_ipg], "ipg", "imx-ssi.0"); - clk_register_clkdev(clk[ssi2_ipg_per], "per", "imx-ssi.1"); - clk_register_clkdev(clk[ssi2_ipg], "ipg", "imx-ssi.1"); + clk_register_clkdev(clk[ssi1_ipg], NULL, "imx-ssi.0"); + clk_register_clkdev(clk[ssi2_ipg], NULL, "imx-ssi.1"); clk_register_clkdev(clk[esdhc1_ipg_per], "per", "sdhci-esdhc-imx25.0"); clk_register_clkdev(clk[esdhc1_ipg], "ipg", "sdhci-esdhc-imx25.0"); clk_register_clkdev(clk[esdhc1_ahb], "ahb", "sdhci-esdhc-imx25.0"); @@ -243,6 +241,9 @@ clk_register_clkdev(clk[sdma_ahb], "ahb", "imx35-sdma"); clk_register_clkdev(clk[iim_ipg], "iim", NULL); + /* Clock source for gpt must be derived from AHB */ + clk_set_parent(clk[per5_sel], clk[ahb]); + mxc_timer_init(MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), 54); return 0; } --- linux-3.5.0.orig/arch/arm/mach-imx/clk-imx35.c +++ linux-3.5.0/arch/arm/mach-imx/clk-imx35.c @@ -230,10 +230,8 @@ clk_register_clkdev(clk[ipu_gate], NULL, "mx3_sdc_fb"); clk_register_clkdev(clk[owire_gate], NULL, "mxc_w1"); clk_register_clkdev(clk[sdma_gate], NULL, "imx35-sdma"); - clk_register_clkdev(clk[ipg], "ipg", "imx-ssi.0"); - clk_register_clkdev(clk[ssi1_div_post], "per", "imx-ssi.0"); - clk_register_clkdev(clk[ipg], "ipg", "imx-ssi.1"); - clk_register_clkdev(clk[ssi2_div_post], "per", "imx-ssi.1"); + clk_register_clkdev(clk[ssi1_gate], NULL, "imx-ssi.0"); + clk_register_clkdev(clk[ssi2_gate], NULL, "imx-ssi.1"); /* i.mx35 has the i.mx21 type uart */ clk_register_clkdev(clk[uart1_gate], "per", "imx21-uart.0"); clk_register_clkdev(clk[ipg], "ipg", "imx21-uart.0"); --- linux-3.5.0.orig/arch/arm/mach-imx/ehci-imx35.c +++ linux-3.5.0/arch/arm/mach-imx/ehci-imx35.c @@ -27,7 +27,7 @@ #define MX35_H1_SIC_SHIFT 21 #define MX35_H1_SIC_MASK (0x3 << MX35_H1_SIC_SHIFT) -#define MX35_H1_PM_BIT (1 << 8) +#define MX35_H1_PM_BIT (1 << 16) #define MX35_H1_IPPUE_UP_BIT (1 << 7) #define MX35_H1_IPPUE_DOWN_BIT (1 << 6) #define MX35_H1_TLL_BIT (1 << 5) --- linux-3.5.0.orig/arch/arm/mach-imx/Makefile +++ linux-3.5.0/arch/arm/mach-imx/Makefile @@ -9,7 +9,8 @@ obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clk-imx31.o iomux-imx31.o ehci-imx31.o pm-imx3.o obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clk-imx35.o ehci-imx35.o pm-imx3.o -obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o +imx5-pm-$(CONFIG_PM) += pm-imx5.o +obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clk-imx51-imx53.o ehci-imx5.o $(imx5-pm-y) cpu_op-mx51.o obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-gate2.o \ clk-pfd.o clk-busy.o @@ -69,14 +70,13 @@ obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o obj-$(CONFIG_HAVE_IMX_SRC) += src.o -obj-$(CONFIG_CPU_V7) += head-v7.o -AFLAGS_head-v7.o :=-Wa,-march=armv7-a -obj-$(CONFIG_SMP) += platsmp.o +AFLAGS_headsmp.o :=-Wa,-march=armv7-a +obj-$(CONFIG_SMP) += headsmp.o platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o mach-imx6q.o ifeq ($(CONFIG_PM),y) -obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o +obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o headsmp.o endif # i.MX5 based machines --- linux-3.5.0.orig/arch/arm/mach-imx/ehci-imx25.c +++ linux-3.5.0/arch/arm/mach-imx/ehci-imx25.c @@ -27,7 +27,7 @@ #define MX25_H1_SIC_SHIFT 21 #define MX25_H1_SIC_MASK (0x3 << MX25_H1_SIC_SHIFT) -#define MX25_H1_PM_BIT (1 << 8) +#define MX25_H1_PM_BIT (1 << 16) #define MX25_H1_IPPUE_UP_BIT (1 << 7) #define MX25_H1_IPPUE_DOWN_BIT (1 << 6) #define MX25_H1_TLL_BIT (1 << 5) --- linux-3.5.0.orig/arch/arm/mach-imx/clk-imx51-imx53.c +++ linux-3.5.0/arch/arm/mach-imx/clk-imx51-imx53.c @@ -293,6 +293,7 @@ clk_prepare_enable(clk[aips_tz2]); /* fec */ clk_prepare_enable(clk[spba]); clk_prepare_enable(clk[emi_fast_gate]); /* fec */ + clk_prepare_enable(clk[emi_slow_gate]); /* eim */ clk_prepare_enable(clk[tmax1]); clk_prepare_enable(clk[tmax2]); /* esdhc2, fec */ clk_prepare_enable(clk[tmax3]); /* esdhc1, esdhc4 */ --- linux-3.5.0.orig/arch/arm/mach-imx/headsmp.S +++ linux-3.5.0/arch/arm/mach-imx/headsmp.S @@ -0,0 +1,106 @@ +/* + * Copyright 2011 Freescale Semiconductor, Inc. + * Copyright 2011 Linaro Ltd. + * + * The code contained herein is licensed under the GNU General Public + * License. You may obtain a copy of the GNU General Public License + * Version 2 or later at the following locations: + * + * http://www.opensource.org/licenses/gpl-license.html + * http://www.gnu.org/copyleft/gpl.html + */ + +#include +#include +#include +#include + + .section ".text.head", "ax" + +/* + * The secondary kernel init calls v7_flush_dcache_all before it enables + * the L1; however, the L1 comes out of reset in an undefined state, so + * the clean + invalidate performed by v7_flush_dcache_all causes a bunch + * of cache lines with uninitialized data and uninitialized tags to get + * written out to memory, which does really unpleasant things to the main + * processor. We fix this by performing an invalidate, rather than a + * clean + invalidate, before jumping into the kernel. + * + * This funciton is cloned from arch/arm/mach-tegra/headsmp.S, and needs + * to be called for both secondary cores startup and primary core resume + * procedures. Ideally, it should be moved into arch/arm/mm/cache-v7.S. + */ +ENTRY(v7_invalidate_l1) + mov r0, #0 + mcr p15, 0, r0, c7, c5, 0 @ invalidate I cache + mcr p15, 2, r0, c0, c0, 0 + mrc p15, 1, r0, c0, c0, 0 + + ldr r1, =0x7fff + and r2, r1, r0, lsr #13 + + ldr r1, =0x3ff + + and r3, r1, r0, lsr #3 @ NumWays - 1 + add r2, r2, #1 @ NumSets + + and r0, r0, #0x7 + add r0, r0, #4 @ SetShift + + clz r1, r3 @ WayShift + add r4, r3, #1 @ NumWays +1: sub r2, r2, #1 @ NumSets-- + mov r3, r4 @ Temp = NumWays +2: subs r3, r3, #1 @ Temp-- + mov r5, r3, lsl r1 + mov r6, r2, lsl r0 + orr r5, r5, r6 @ Reg = (Temp< #include +#include +#include #include #include #include @@ -22,7 +24,9 @@ #include #include #include +#include #include +#include #include #include @@ -35,6 +39,7 @@ #include #include #include +#include #include "core.h" #include "sysregs.h" @@ -105,6 +110,11 @@ #endif } +static struct clk_lookup lookup = { + .dev_id = "sp804", + .con_id = NULL, +}; + static void __init highbank_timer_init(void) { int irq; @@ -122,6 +132,8 @@ irq = irq_of_parse_and_map(np, 0); highbank_clocks_init(); + lookup.clk = of_clk_get(np, 0); + clkdev_add(&lookup); sp804_clocksource_and_sched_clock_init(timer_base + 0x20, "timer1"); sp804_clockevents_init(timer_base, irq, "timer0"); @@ -142,9 +154,79 @@ cpu_do_idle(); } +static int hb_keys_notifier(struct notifier_block *nb, unsigned long event, void *data) +{ + u32 key = *(u32 *)data; + + if (event != 0x1000) + return 0; + + if (key == KEY_POWER) + orderly_poweroff(false); + else if (key == 0xffff) + ctrl_alt_del(); + + return 0; +} + +static struct notifier_block hb_keys_nb = { + .notifier_call = hb_keys_notifier, +}; + +static int highbank_platform_notifier(struct notifier_block *nb, + unsigned long event, void *__dev) +{ + struct resource *res; + int reg = -1; + struct device *dev = __dev; + + if (event != BUS_NOTIFY_ADD_DEVICE) + return NOTIFY_DONE; + + if (of_device_is_compatible(dev->of_node, "calxeda,hb-ahci")) + reg = 0xc; + else if (of_device_is_compatible(dev->of_node, "calxeda,hb-sdhci")) + reg = 0x18; + else if (of_device_is_compatible(dev->of_node, "arm,pl330")) + reg = 0x20; + else if (of_device_is_compatible(dev->of_node, "calxeda,hb-xgmac")) { + res = platform_get_resource(to_platform_device(dev), + IORESOURCE_MEM, 0); + if (res) { + if (res->start == 0xfff50000) + reg = 0; + else if (res->start == 0xfff51000) + reg = 4; + } + } + + if (reg < 0) + return NOTIFY_DONE; + + if (of_property_read_bool(dev->of_node, "dma-coherent")) { + writel(0xff31, sregs_base + reg); + set_dma_ops(dev, &arm_coherent_dma_ops); + } else + writel(0, sregs_base + reg); + + return NOTIFY_OK; +} + +static struct notifier_block highbank_amba_nb = { + .notifier_call = highbank_platform_notifier, +}; + +static struct notifier_block highbank_platform_nb = { + .notifier_call = highbank_platform_notifier, +}; + static void __init highbank_init(void) { pm_power_off = highbank_power_off; + pl320_ipc_register_notifier(&hb_keys_nb); + + bus_register_notifier(&platform_bus_type, &highbank_platform_nb); + bus_register_notifier(&amba_bustype, &highbank_amba_nb); of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); } --- linux-3.5.0.orig/arch/arm/mach-highbank/pl320-ipc.c +++ linux-3.5.0/arch/arm/mach-highbank/pl320-ipc.c @@ -0,0 +1,308 @@ +/* + * Copyright 2010 Calxeda, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define IPCMxSOURCE(m) ((m) * 0x40) +#define IPCMxDSET(m) (((m) * 0x40) + 0x004) +#define IPCMxDCLEAR(m) (((m) * 0x40) + 0x008) +#define IPCMxDSTATUS(m) (((m) * 0x40) + 0x00C) +#define IPCMxMODE(m) (((m) * 0x40) + 0x010) +#define IPCMxMSET(m) (((m) * 0x40) + 0x014) +#define IPCMxMCLEAR(m) (((m) * 0x40) + 0x018) +#define IPCMxMSTATUS(m) (((m) * 0x40) + 0x01C) +#define IPCMxSEND(m) (((m) * 0x40) + 0x020) +#define IPCMxDR(m, dr) (((m) * 0x40) + ((dr) * 4) + 0x024) + +#define IPCMMIS(irq) (((irq) * 8) + 0x800) +#define IPCMRIS(irq) (((irq) * 8) + 0x804) + +#define MBOX_MASK(n) (1 << (n)) +#define IPC_FAST_MBOX 0 +#define IPC_SLOW_MBOX 1 +#define IPC_RX_MBOX 2 + +#define CHAN_MASK(n) (1 << (n)) +#define A9_SOURCE 1 +#define M3_SOURCE 0 + +static void __iomem *ipc_base; +static int ipc_irq; +static DEFINE_SPINLOCK(ipc_m0_lock); +static DEFINE_MUTEX(ipc_m1_lock); +static DECLARE_COMPLETION(ipc_completion); +static ATOMIC_NOTIFIER_HEAD(ipc_notifier); + +static inline void set_destination(int source, int mbox) +{ + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDSET(mbox)); + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMSET(mbox)); +} + +static inline void clear_destination(int source, int mbox) +{ + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxDCLEAR(mbox)); + __raw_writel(CHAN_MASK(source), ipc_base + IPCMxMCLEAR(mbox)); +} + +static void __ipc_send(int mbox, u32 *data) +{ + int i; + for (i = 0; i < 7; i++) + __raw_writel(data[i], ipc_base + IPCMxDR(mbox, i)); + __raw_writel(0x1, ipc_base + IPCMxSEND(mbox)); +} + +static u32 __ipc_rcv(int mbox, u32 *data) +{ + int i; + for (i = 0; i < 7; i++) + data[i] = __raw_readl(ipc_base + IPCMxDR(mbox, i)); + return data[1]; +} + +/* non-blocking implementation from the A9 side, interrupt safe in theory */ +int ipc_call_fast(u32 *data) +{ + int timeout, ret; + + spin_lock(&ipc_m0_lock); + + __ipc_send(IPC_FAST_MBOX, data); + + for (timeout = 5000; timeout > 0; timeout--) { + if (__raw_readl(ipc_base + IPCMxSEND(IPC_FAST_MBOX)) == 0x2) + break; + udelay(100); + } + if (timeout == 0) { + ret = -ETIMEDOUT; + goto out; + } + + ret = __ipc_rcv(IPC_FAST_MBOX, data); +out: + __raw_writel(0, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + spin_unlock(&ipc_m0_lock); + return ret; +} +EXPORT_SYMBOL(ipc_call_fast); + +/* blocking implmentation from the A9 side, not usuable in interrupts! */ +int ipc_call_slow(u32 *data) +{ + int ret; + + mutex_lock(&ipc_m1_lock); + + init_completion(&ipc_completion); + __ipc_send(IPC_SLOW_MBOX, data); + ret = wait_for_completion_timeout(&ipc_completion, + msecs_to_jiffies(1000)); + if (ret == 0) + goto out; + + ret = __ipc_rcv(IPC_SLOW_MBOX, data); +out: + mutex_unlock(&ipc_m1_lock); + return ret; +} +EXPORT_SYMBOL(ipc_call_slow); + +irqreturn_t ipc_handler(int irq, void *dev) +{ + u32 irq_stat; + u32 data[7]; + + irq_stat = __raw_readl(ipc_base + IPCMMIS(1)); + if (irq_stat & MBOX_MASK(IPC_SLOW_MBOX)) { + __raw_writel(0, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + complete(&ipc_completion); + } + if (irq_stat & MBOX_MASK(IPC_RX_MBOX)) { + __ipc_rcv(IPC_RX_MBOX, data); + atomic_notifier_call_chain(&ipc_notifier, data[0], data + 1); + __raw_writel(2, ipc_base + IPCMxSEND(IPC_RX_MBOX)); + } + + return IRQ_HANDLED; +} + +int pl320_ipc_register_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_register(&ipc_notifier, nb); +} + +int pl320_ipc_unregister_notifier(struct notifier_block *nb) +{ + return atomic_notifier_chain_unregister(&ipc_notifier, nb); +} + +static int __devinit pl320_probe(struct amba_device *adev, const struct amba_id *id) +{ + int ret; + + ipc_base = ioremap(adev->res.start, resource_size(&adev->res)); + if (ipc_base == NULL) + return -ENOMEM; + + __raw_writel(0, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + __raw_writel(0, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + + ipc_irq = adev->irq[0]; + ret = request_irq(ipc_irq, ipc_handler, 0, dev_name(&adev->dev), NULL); + if (ret < 0) + goto err; + + /* Init fast mailbox */ + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxSOURCE(IPC_FAST_MBOX)); + set_destination(M3_SOURCE, IPC_FAST_MBOX); + + /* Init slow mailbox */ + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxSOURCE(IPC_SLOW_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE), ipc_base + IPCMxDSET(IPC_SLOW_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxMSET(IPC_SLOW_MBOX)); + + /* Init receive mailbox */ + __raw_writel(CHAN_MASK(M3_SOURCE), ipc_base + IPCMxSOURCE(IPC_RX_MBOX)); + __raw_writel(CHAN_MASK(A9_SOURCE), ipc_base + IPCMxDSET(IPC_RX_MBOX)); + __raw_writel(CHAN_MASK(M3_SOURCE) | CHAN_MASK(A9_SOURCE), + ipc_base + IPCMxMSET(IPC_RX_MBOX)); + + return 0; +err: + iounmap(ipc_base); + return ret; +} + +static struct amba_id pl320_ids[] = { + { + .id = 0x00041320, + .mask = 0x000fffff, + }, + { 0, 0 }, +}; + +static struct amba_driver pl320_driver = { + .drv = { + .name = "pl320", + }, + .id_table = pl320_ids, + .probe = pl320_probe, +}; + +static int __init ipc_init(void) +{ + return amba_driver_register(&pl320_driver); +} +module_init(ipc_init); + +irqreturn_t ipc_test_handler(int irq, void *dev) +{ + u32 irq_stat; + + irq_stat = __raw_readl(ipc_base + IPCMMIS(irq - (ipc_irq - 1))); + if (irq_stat & MBOX_MASK(IPC_FAST_MBOX)) { + if ((__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 0)) == 0x900dbeef) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 1)) == 1) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 2)) == 2) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 3)) == 3) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 4)) == 4) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 5)) == 5) && + (__raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 6)) == 6)) { + printk(KERN_ERR "ipc fast mbox message %X received\n", __raw_readl(ipc_base + IPCMxDR(IPC_FAST_MBOX, 0))); + __raw_writel(0xBADBEEF, ipc_base + IPCMxDR(IPC_FAST_MBOX, 1)); + } + __raw_writel(0x2, ipc_base + IPCMxSEND(IPC_FAST_MBOX)); + } + if (irq_stat & MBOX_MASK(IPC_SLOW_MBOX)) { + if ((__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 0)) == 0x12345678) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 1)) == 6) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 2)) == 5) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 3)) == 4) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 4)) == 3) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 5)) == 2) && + (__raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 6)) == 1)) { + printk("slow mbox message %X received\n", __raw_readl(ipc_base + IPCMxDR(IPC_SLOW_MBOX, 0))); + __raw_writel(0x87654321, ipc_base + IPCMxDR(IPC_SLOW_MBOX, 1)); + } + __raw_writel(0x2, ipc_base + IPCMxSEND(IPC_SLOW_MBOX)); + } + if (irq_stat & MBOX_MASK(IPC_RX_MBOX)) { + __raw_writel(0, ipc_base + IPCMxSEND(IPC_RX_MBOX)); + // handle events + } + + return IRQ_HANDLED; +} + +static void __init ipc_test(void) +{ + int ret, i; + + printk("ipc test start\n"); + + for (i = 0; i < 8; i++) { + u32 data[7]; + int j; + if (i == 1) continue; + + if (request_irq(ipc_irq - 1 + i, ipc_test_handler, 0, "ipc", NULL) < 0) { + printk("ipc - request_irq failed - FAIL\n"); + return; + } + + set_destination(i, IPC_FAST_MBOX); + set_destination(i, IPC_SLOW_MBOX); + + for (j = 1; j < 7; j++) + data[j] = j; + data[0] = 0x900dbeef; + ret = ipc_call_fast(data); + if (ret == 0xbadbeef) + printk(KERN_ERR "ipc %d fast call - PASS\n", i); + else + printk(KERN_ERR "ipc %d fast call fail %d\n", i, ret); + for (j = 1; j < 7; j++) + data[j] = 7 - j; + data[0] = 0x12345678; + ret = ipc_call_slow(data); + if (ret == 0x87654321) + printk("ipc %d slow call - PASS\n", i); + + clear_destination(i, IPC_FAST_MBOX); + clear_destination(i, IPC_SLOW_MBOX); + + free_irq(ipc_irq - 1 + i, NULL); + } + set_destination(M3_SOURCE, IPC_FAST_MBOX); + set_destination(M3_SOURCE, IPC_SLOW_MBOX); +} +//late_initcall(ipc_test); + --- linux-3.5.0.orig/arch/arm/mach-highbank/Makefile +++ linux-3.5.0/arch/arm/mach-highbank/Makefile @@ -1,4 +1,4 @@ -obj-y := clock.o highbank.o system.o smc.o +obj-y := highbank.o system.o smc.o plus_sec := $(call as-instr,.arch_extension sec,+sec) AFLAGS_smc.o :=-Wa,-march=armv7-a$(plus_sec) @@ -7,3 +7,5 @@ obj-$(CONFIG_SMP) += platsmp.o obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o obj-$(CONFIG_PM_SLEEP) += pm.o + +obj-y += pl320-ipc.o --- linux-3.5.0.orig/arch/arm/mach-highbank/system.c +++ linux-3.5.0/arch/arm/mach-highbank/system.c @@ -28,6 +28,7 @@ hignbank_set_pwr_soft_reset(); scu_power_mode(scu_base_addr, SCU_PM_POWEROFF); - cpu_do_idle(); + while (1) + cpu_do_idle(); } --- linux-3.5.0.orig/arch/arm/mach-highbank/include/mach/pl320-ipc.h +++ linux-3.5.0/arch/arm/mach-highbank/include/mach/pl320-ipc.h @@ -0,0 +1,20 @@ +/* + * Copyright 2010 Calxeda, Inc. + * + * 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 . + */ +int ipc_call_fast(u32 *data); +int ipc_call_slow(u32 *data); + +extern int pl320_ipc_register_notifier(struct notifier_block *nb); +extern int pl320_ipc_unregister_notifier(struct notifier_block *nb); --- linux-3.5.0.orig/arch/arm/mach-omap2/board-omap3evm.c +++ linux-3.5.0/arch/arm/mach-omap2/board-omap3evm.c @@ -221,6 +221,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = OMAP3EVM_DVI_PANEL_EN_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device omap3_evm_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-3430sdp.c +++ linux-3.5.0/arch/arm/mach-omap2/board-3430sdp.c @@ -159,6 +159,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device sdp3430_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-devkit8000.c +++ linux-3.5.0/arch/arm/mach-omap2/board-devkit8000.c @@ -143,6 +143,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = 1, }; static struct omap_dss_device devkit8000_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/timer.c +++ linux-3.5.0/arch/arm/mach-omap2/timer.c @@ -263,6 +263,7 @@ return 0; } +#ifdef CONFIG_OMAP_32K_TIMER /* Setup free-running counter for clocksource */ static int __init omap2_sync32k_clocksource_init(void) { @@ -302,6 +303,12 @@ return ret; } +#else +static inline int omap2_sync32k_clocksource_init(void) +{ + return -ENODEV; +} +#endif static void __init omap2_gptimer_clocksource_init(int gptimer_id, const char *fck_source) --- linux-3.5.0.orig/arch/arm/mach-omap2/board-omap3stalker.c +++ linux-3.5.0/arch/arm/mach-omap2/board-omap3stalker.c @@ -121,6 +121,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = DSS_ENABLE_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device omap3_stalker_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-am3517evm.c +++ linux-3.5.0/arch/arm/mach-omap2/board-am3517evm.c @@ -209,6 +209,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = -1, + .i2c_bus_num = -1, }; static struct omap_dss_device am3517_evm_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/board-cm-t35.c +++ linux-3.5.0/arch/arm/mach-omap2/board-cm-t35.c @@ -243,6 +243,7 @@ static struct tfp410_platform_data dvi_panel = { .power_down_gpio = CM_T35_DVI_EN_GPIO, + .i2c_bus_num = -1, }; static struct omap_dss_device cm_t35_dvi_device = { --- linux-3.5.0.orig/arch/arm/mach-omap2/clock3xxx_data.c +++ linux-3.5.0/arch/arm/mach-omap2/clock3xxx_data.c @@ -3390,16 +3390,16 @@ CLK(NULL, "usbhost_120m_fck", &usbhost_120m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), CLK(NULL, "usbhost_48m_fck", &usbhost_48m_fck, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), - CLK("usbhs_omap", "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), - CLK("usbhs_omap", "utmi_p1_gfclk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "utmi_p2_gfclk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "xclk60mhsp1_ck", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "xclk60mhsp2_ck", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_host_hs_utmi_p1_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_host_hs_utmi_p2_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_tll_hs_usb_ch0_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "usb_tll_hs_usb_ch1_clk", &dummy_ck, CK_3XXX), - CLK("usbhs_omap", "init_60m_fclk", &dummy_ck, CK_3XXX), + CLK(NULL, "usbhost_ick", &usbhost_ick, CK_3430ES2PLUS | CK_AM35XX | CK_36XX), + CLK(NULL, "utmi_p1_gfclk", &dummy_ck, CK_3XXX), + CLK(NULL, "utmi_p2_gfclk", &dummy_ck, CK_3XXX), + CLK(NULL, "xclk60mhsp1_ck", &dummy_ck, CK_3XXX), + CLK(NULL, "xclk60mhsp2_ck", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_host_hs_utmi_p1_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_host_hs_utmi_p2_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_tll_hs_usb_ch0_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "usb_tll_hs_usb_ch1_clk", &dummy_ck, CK_3XXX), + CLK(NULL, "init_60m_fclk", &dummy_ck, CK_3XXX), CLK(NULL, "usim_fck", &usim_fck, CK_3430ES2PLUS | CK_36XX), CLK(NULL, "gpt1_fck", &gpt1_fck, CK_3XXX), CLK(NULL, "wkup_32k_fck", &wkup_32k_fck, CK_3XXX), --- linux-3.5.0.orig/arch/arm/mach-omap2/opp.c +++ linux-3.5.0/arch/arm/mach-omap2/opp.c @@ -53,7 +53,7 @@ omap_table_init = 1; /* Lets now register with OPP library */ - for (i = 0; i < opp_def_size; i++) { + for (i = 0; i < opp_def_size; i++, opp_def++) { struct omap_hwmod *oh; struct device *dev; @@ -86,7 +86,6 @@ __func__, opp_def->freq, opp_def->hwmod_name, i, r); } - opp_def++; } return 0; --- linux-3.5.0.orig/arch/arm/include/asm/mutex.h +++ linux-3.5.0/arch/arm/include/asm/mutex.h @@ -7,121 +7,10 @@ */ #ifndef _ASM_MUTEX_H #define _ASM_MUTEX_H - -#if __LINUX_ARM_ARCH__ < 6 -/* On pre-ARMv6 hardware the swp based implementation is the most efficient. */ -# include -#else - /* - * Attempting to lock a mutex on ARMv6+ can be done with a bastardized - * atomic decrement (it is not a reliable atomic decrement but it satisfies - * the defined semantics for our purpose, while being smaller and faster - * than a real atomic decrement or atomic swap. The idea is to attempt - * decrementing the lock value only once. If once decremented it isn't zero, - * or if its store-back fails due to a dispute on the exclusive store, we - * simply bail out immediately through the slow path where the lock will be - * reattempted until it succeeds. + * On pre-ARMv6 hardware this results in a swp-based implementation, + * which is the most efficient. For ARMv6+, we emit a pair of exclusive + * accesses instead. */ -static inline void -__mutex_fastpath_lock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - fail_fn(count); -} - -static inline int -__mutex_fastpath_lock_retval(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res; - - __asm__ ( - - "ldrex %0, [%2] \n\t" - "sub %0, %0, #1 \n\t" - "strex %1, %0, [%2] " - - : "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __res |= __ex_flag; - if (unlikely(__res != 0)) - __res = fail_fn(count); - return __res; -} - -/* - * Same trick is used for the unlock fast path. However the original value, - * rather than the result, is used to test for success in order to have - * better generated assembly. - */ -static inline void -__mutex_fastpath_unlock(atomic_t *count, void (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - __asm__ ( - - "ldrex %0, [%3] \n\t" - "add %1, %0, #1 \n\t" - "strex %2, %1, [%3] " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&(count)->counter) - : "cc","memory" ); - - __orig |= __ex_flag; - if (unlikely(__orig != 0)) - fail_fn(count); -} - -/* - * If the unlock was done on a contended lock, or if the unlock simply fails - * then the mutex remains locked. - */ -#define __mutex_slowpath_needs_to_unlock() 1 - -/* - * For __mutex_fastpath_trylock we use another construct which could be - * described as a "single value cmpxchg". - * - * This provides the needed trylock semantics like cmpxchg would, but it is - * lighter and less generic than a true cmpxchg implementation. - */ -static inline int -__mutex_fastpath_trylock(atomic_t *count, int (*fail_fn)(atomic_t *)) -{ - int __ex_flag, __res, __orig; - - __asm__ ( - - "1: ldrex %0, [%3] \n\t" - "subs %1, %0, #1 \n\t" - "strexeq %2, %1, [%3] \n\t" - "movlt %0, #0 \n\t" - "cmpeq %2, #0 \n\t" - "bgt 1b " - - : "=&r" (__orig), "=&r" (__res), "=&r" (__ex_flag) - : "r" (&count->counter) - : "cc", "memory" ); - - return __orig; -} - -#endif +#include #endif --- linux-3.5.0.orig/arch/arm/include/asm/syscall.h +++ linux-3.5.0/arch/arm/include/asm/syscall.h @@ -8,6 +8,7 @@ #define _ASM_ARM_SYSCALL_H #include +#include extern const unsigned long sys_call_table[]; --- linux-3.5.0.orig/arch/arm/include/asm/vfpmacros.h +++ linux-3.5.0/arch/arm/include/asm/vfpmacros.h @@ -27,9 +27,9 @@ #if __LINUX_ARM_ARCH__ <= 6 ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] - tst \tmp, #HWCAP_VFPv3D16 - ldceq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field @@ -51,9 +51,9 @@ #if __LINUX_ARM_ARCH__ <= 6 ldr \tmp, =elf_hwcap @ may not have MVFR regs ldr \tmp, [\tmp, #0] - tst \tmp, #HWCAP_VFPv3D16 - stceq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} - addne \base, \base, #32*4 @ step over unused register space + tst \tmp, #HWCAP_VFPD32 + stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} + addeq \base, \base, #32*4 @ step over unused register space #else VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field --- linux-3.5.0.orig/arch/arm/include/asm/hwcap.h +++ linux-3.5.0/arch/arm/include/asm/hwcap.h @@ -18,11 +18,12 @@ #define HWCAP_THUMBEE (1 << 11) #define HWCAP_NEON (1 << 12) #define HWCAP_VFPv3 (1 << 13) -#define HWCAP_VFPv3D16 (1 << 14) +#define HWCAP_VFPv3D16 (1 << 14) /* also set for VFPv4-D16 */ #define HWCAP_TLS (1 << 15) #define HWCAP_VFPv4 (1 << 16) #define HWCAP_IDIVA (1 << 17) #define HWCAP_IDIVT (1 << 18) +#define HWCAP_VFPD32 (1 << 19) /* set if VFP has 32 regs (not 16) */ #define HWCAP_IDIV (HWCAP_IDIVA | HWCAP_IDIVT) #if defined(__KERNEL__) --- linux-3.5.0.orig/arch/arm/include/asm/div64.h +++ linux-3.5.0/arch/arm/include/asm/div64.h @@ -73,6 +73,7 @@ #define do_div(n, base) \ ({ \ unsigned int __r, __b = (base); \ + asm("" : "+r" (__b)); \ if (!__builtin_constant_p(__b) || __b == 0 || \ (__LINUX_ARM_ARCH__ < 4 && (__b & (__b - 1)) != 0)) { \ /* non-constant divisor (or zero): slow path */ \ --- linux-3.5.0.orig/arch/arm/include/asm/dma-mapping.h +++ linux-3.5.0/arch/arm/include/asm/dma-mapping.h @@ -13,6 +13,7 @@ #define DMA_ERROR_CODE (~0) extern struct dma_map_ops arm_dma_ops; +extern struct dma_map_ops arm_coherent_dma_ops; static inline struct dma_map_ops *get_dma_ops(struct device *dev) { --- linux-3.5.0.orig/arch/arm/include/asm/cacheflush.h +++ linux-3.5.0/arch/arm/include/asm/cacheflush.h @@ -215,7 +215,9 @@ static inline void vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), vma->vm_flags); } @@ -223,7 +225,9 @@ static inline void vivt_flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) { - if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { + struct mm_struct *mm = vma->vm_mm; + + if (!mm || cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { unsigned long addr = user_addr & PAGE_MASK; __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); } --- linux-3.5.0.orig/arch/arm/include/asm/assembler.h +++ linux-3.5.0/arch/arm/include/asm/assembler.h @@ -320,4 +320,12 @@ .size \name , . - \name .endm + .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req +#ifndef CONFIG_CPU_USE_DOMAINS + adds \tmp, \addr, #\size - 1 + sbcccs \tmp, \tmp, \limit + bcs \bad +#endif + .endm + #endif /* __ASM_ASSEMBLER_H__ */ --- linux-3.5.0.orig/arch/arm/include/asm/uaccess.h +++ linux-3.5.0/arch/arm/include/asm/uaccess.h @@ -101,28 +101,39 @@ extern int __get_user_2(void *); extern int __get_user_4(void *); -#define __get_user_x(__r2,__p,__e,__s,__i...) \ +#define __GUP_CLOBBER_1 "lr", "cc" +#ifdef CONFIG_CPU_USE_DOMAINS +#define __GUP_CLOBBER_2 "ip", "lr", "cc" +#else +#define __GUP_CLOBBER_2 "lr", "cc" +#endif +#define __GUP_CLOBBER_4 "lr", "cc" + +#define __get_user_x(__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%1", "r2") \ + __asmeq("%3", "r1") \ "bl __get_user_" #__s \ : "=&r" (__e), "=r" (__r2) \ - : "0" (__p) \ - : __i, "cc") + : "0" (__p), "r" (__l) \ + : __GUP_CLOBBER_##__s) #define get_user(x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ register unsigned long __r2 asm("r2"); \ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __get_user_x(__r2, __p, __e, 1, "lr"); \ - break; \ + __get_user_x(__r2, __p, __e, __l, 1); \ + break; \ case 2: \ - __get_user_x(__r2, __p, __e, 2, "r3", "lr"); \ + __get_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __get_user_x(__r2, __p, __e, 4, "lr"); \ + __get_user_x(__r2, __p, __e, __l, 4); \ break; \ default: __e = __get_user_bad(); break; \ } \ @@ -135,31 +146,34 @@ extern int __put_user_4(void *, unsigned int); extern int __put_user_8(void *, unsigned long long); -#define __put_user_x(__r2,__p,__e,__s) \ +#define __put_user_x(__r2,__p,__e,__l,__s) \ __asm__ __volatile__ ( \ __asmeq("%0", "r0") __asmeq("%2", "r2") \ + __asmeq("%3", "r1") \ "bl __put_user_" #__s \ : "=&r" (__e) \ - : "0" (__p), "r" (__r2) \ + : "0" (__p), "r" (__r2), "r" (__l) \ : "ip", "lr", "cc") #define put_user(x,p) \ ({ \ + unsigned long __limit = current_thread_info()->addr_limit - 1; \ register const typeof(*(p)) __r2 asm("r2") = (x); \ register const typeof(*(p)) __user *__p asm("r0") = (p);\ + register unsigned long __l asm("r1") = __limit; \ register int __e asm("r0"); \ switch (sizeof(*(__p))) { \ case 1: \ - __put_user_x(__r2, __p, __e, 1); \ + __put_user_x(__r2, __p, __e, __l, 1); \ break; \ case 2: \ - __put_user_x(__r2, __p, __e, 2); \ + __put_user_x(__r2, __p, __e, __l, 2); \ break; \ case 4: \ - __put_user_x(__r2, __p, __e, 4); \ + __put_user_x(__r2, __p, __e, __l, 4); \ break; \ case 8: \ - __put_user_x(__r2, __p, __e, 8); \ + __put_user_x(__r2, __p, __e, __l, 8); \ break; \ default: __e = __put_user_bad(); break; \ } \ --- linux-3.5.0.orig/arch/arm/include/asm/pgtable.h +++ linux-3.5.0/arch/arm/include/asm/pgtable.h @@ -195,6 +195,18 @@ #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) +#define pte_none(pte) (!pte_val(pte)) +#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) +#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) +#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) +#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) +#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) +#define pte_special(pte) (0) + +#define pte_present_user(pte) \ + ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ + (L_PTE_PRESENT | L_PTE_USER)) + #if __LINUX_ARM_ARCH__ < 6 static inline void __sync_icache_dcache(pte_t pteval) { @@ -206,25 +218,15 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pteval) { - if (addr >= TASK_SIZE) - set_pte_ext(ptep, pteval, 0); - else { + unsigned long ext = 0; + + if (addr < TASK_SIZE && pte_present_user(pteval)) { __sync_icache_dcache(pteval); - set_pte_ext(ptep, pteval, PTE_EXT_NG); + ext |= PTE_EXT_NG; } -} -#define pte_none(pte) (!pte_val(pte)) -#define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) -#define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) -#define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) -#define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) -#define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) -#define pte_special(pte) (0) - -#define pte_present_user(pte) \ - ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ - (L_PTE_PRESENT | L_PTE_USER)) + set_pte_ext(ptep, pteval, ext); +} #define PTE_BIT_FUNC(fn,op) \ static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } @@ -251,13 +253,13 @@ * * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 - * <--------------- offset --------------------> <- type --> 0 0 0 + * <--------------- offset ----------------------> < type -> 0 0 0 * - * This gives us up to 63 swap files and 32GB per swap file. Note that + * This gives us up to 31 swap files and 64GB per swap file. Note that * the offset field is always non-zero. */ #define __SWP_TYPE_SHIFT 3 -#define __SWP_TYPE_BITS 6 +#define __SWP_TYPE_BITS 5 #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) --- linux-3.5.0.orig/arch/arm/mach-kirkwood/pcie.c +++ linux-3.5.0/arch/arm/mach-kirkwood/pcie.c @@ -225,14 +225,19 @@ return 1; } +/* + * The root complex has a hardwired class of PCI_CLASS_MEMORY_OTHER, when it + * is operating as a root complex this needs to be switched to + * PCI_CLASS_BRIDGE_HOST or Linux will errantly try to process the BAR's on + * the device. Decoding setup is handled by the orion code. + */ static void __devinit rc_pci_fixup(struct pci_dev *dev) { - /* - * Prevent enumeration of root complex. - */ if (dev->bus->parent == NULL && dev->devfn == 0) { int i; + dev->class &= 0xff; + dev->class |= PCI_CLASS_BRIDGE_HOST << 8; for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { dev->resource[i].start = 0; dev->resource[i].end = 0; --- linux-3.5.0.orig/arch/arm/mm/tlb-v7.S +++ linux-3.5.0/arch/arm/mm/tlb-v7.S @@ -39,10 +39,18 @@ mov r0, r0, lsr #PAGE_SHIFT @ align address mov r1, r1, lsr #PAGE_SHIFT asid r3, r3 @ mask ASID +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(W(mov) r3, #0 ) + ALT_UP(W(nop) ) +#endif orr r0, r3, r0, lsl #PAGE_SHIFT @ Create initial MVA mov r1, r1, lsl #PAGE_SHIFT 1: +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable) +#else ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable) +#endif ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA add r0, r0, #PAGE_SZ @@ -67,7 +75,11 @@ mov r0, r0, lsl #PAGE_SHIFT mov r1, r1, lsl #PAGE_SHIFT 1: +#ifdef CONFIG_ARM_ERRATA_720789 + ALT_SMP(mcr p15, 0, r0, c8, c3, 3) @ TLB invalidate U MVA all ASID (shareable) +#else ALT_SMP(mcr p15, 0, r0, c8, c3, 1) @ TLB invalidate U MVA (shareable) +#endif ALT_UP(mcr p15, 0, r0, c8, c7, 1) @ TLB invalidate U MVA add r0, r0, #PAGE_SZ cmp r0, r1 --- linux-3.5.0.orig/arch/arm/mm/flush.c +++ linux-3.5.0/arch/arm/mm/flush.c @@ -231,8 +231,6 @@ struct page *page; struct address_space *mapping; - if (!pte_present_user(pteval)) - return; if (cache_is_vipt_nonaliasing() && !pte_exec(pteval)) /* only flush non-aliasing VIPT caches for exec mappings */ return; --- linux-3.5.0.orig/arch/arm/mm/mmu.c +++ linux-3.5.0/arch/arm/mm/mmu.c @@ -504,7 +504,7 @@ #endif for (i = 0; i < 16; i++) { - unsigned long v = pgprot_val(protection_map[i]); + pteval_t v = pgprot_val(protection_map[i]); protection_map[i] = __pgprot(v | user_pgprot); } @@ -813,7 +813,7 @@ vm = early_alloc_aligned(sizeof(*vm), __alignof__(*vm)); vm->addr = (void *)addr; vm->size = SECTION_SIZE; - vm->flags = VM_IOREMAP | VM_ARM_STATIC_MAPPING; + vm->flags = VM_IOREMAP | VM_ARM_EMPTY_MAPPING; vm->caller = pmd_empty_section_gap; vm_area_add_early(vm); } @@ -826,7 +826,7 @@ /* we're still single threaded hence no lock needed here */ for (vm = vmlist; vm; vm = vm->next) { - if (!(vm->flags & VM_ARM_STATIC_MAPPING)) + if (!(vm->flags & (VM_ARM_STATIC_MAPPING | VM_ARM_EMPTY_MAPPING))) continue; addr = (unsigned long)vm->addr; if (addr < next) --- linux-3.5.0.orig/arch/arm/mm/mm.h +++ linux-3.5.0/arch/arm/mm/mm.h @@ -55,6 +55,9 @@ /* permanent static mappings from iotable_init() */ #define VM_ARM_STATIC_MAPPING 0x40000000 +/* empty mapping */ +#define VM_ARM_EMPTY_MAPPING 0x20000000 + /* mapping type (attributes) for permanent static mappings */ #define VM_ARM_MTYPE(mt) ((mt) << 20) #define VM_ARM_MTYPE_MASK (0x1f << 20) --- linux-3.5.0.orig/arch/arm/mm/dma-mapping.c +++ linux-3.5.0/arch/arm/mm/dma-mapping.c @@ -72,11 +72,18 @@ unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_cpu_to_dev(page, offset, size, dir); return pfn_to_dma(dev, page_to_pfn(page)) + offset; } +static dma_addr_t arm_coherent_dma_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + return pfn_to_dma(dev, page_to_pfn(page)) + offset; +} + /** * arm_dma_unmap_page - unmap a buffer previously mapped through dma_map_page() * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices @@ -95,7 +102,7 @@ size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(pfn_to_page(dma_to_pfn(dev, handle)), handle & ~PAGE_MASK, size, dir); } @@ -105,8 +112,7 @@ { unsigned int offset = handle & (PAGE_SIZE - 1); struct page *page = pfn_to_page(dma_to_pfn(dev, handle-offset)); - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(page, offset, size, dir); + __dma_page_dev_to_cpu(page, offset, size, dir); } static void arm_dma_sync_single_for_device(struct device *dev, @@ -114,8 +120,7 @@ { unsigned int offset = handle & (PAGE_SIZE - 1); struct page *page = pfn_to_page(dma_to_pfn(dev, handle-offset)); - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(page, offset, size, dir); + __dma_page_cpu_to_dev(page, offset, size, dir); } static int arm_dma_set_mask(struct device *dev, u64 dma_mask); @@ -136,6 +141,21 @@ }; EXPORT_SYMBOL(arm_dma_ops); +static void *arm_coherent_dma_alloc(struct device *dev, size_t size, + dma_addr_t *handle, gfp_t gfp, struct dma_attrs *attrs); +static void arm_coherent_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs); + +struct dma_map_ops arm_coherent_dma_ops = { + .alloc = arm_coherent_dma_alloc, + .free = arm_coherent_dma_free, + .mmap = arm_dma_mmap, + .map_page = arm_coherent_dma_map_page, + .map_sg = arm_dma_map_sg, + .set_dma_mask = arm_dma_set_mask, +}; +EXPORT_SYMBOL(arm_coherent_dma_ops); + static u64 get_coherent_dma_mask(struct device *dev) { u64 mask = (u64)arm_dma_limit; @@ -667,7 +687,7 @@ static void *__dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, - gfp_t gfp, pgprot_t prot, const void *caller) + gfp_t gfp, pgprot_t prot, bool is_coherent, const void *caller) { u64 mask = get_coherent_dma_mask(dev); struct page *page; @@ -700,7 +720,7 @@ *handle = DMA_ERROR_CODE; size = PAGE_ALIGN(size); - if (arch_is_coherent() || nommu()) + if (is_coherent || nommu()) addr = __alloc_simple_buffer(dev, size, gfp, &page); else if (!IS_ENABLED(CONFIG_CMA)) addr = __alloc_remap_buffer(dev, size, gfp, prot, &page, caller); @@ -728,7 +748,20 @@ if (dma_alloc_from_coherent(dev, size, handle, &memory)) return memory; - return __dma_alloc(dev, size, handle, gfp, prot, + return __dma_alloc(dev, size, handle, gfp, prot, false, + __builtin_return_address(0)); +} + +static void *arm_coherent_dma_alloc(struct device *dev, size_t size, + dma_addr_t *handle, gfp_t gfp, struct dma_attrs *attrs) +{ + pgprot_t prot = __get_dma_pgprot(attrs, pgprot_kernel); + void *memory; + + if (dma_alloc_from_coherent(dev, size, handle, &memory)) + return memory; + + return __dma_alloc(dev, size, handle, gfp, prot, true, __builtin_return_address(0)); } @@ -759,8 +792,9 @@ /* * Free a buffer as defined by the above mapping. */ -void arm_dma_free(struct device *dev, size_t size, void *cpu_addr, - dma_addr_t handle, struct dma_attrs *attrs) +static void __arm_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs, + bool is_coherent) { struct page *page = pfn_to_page(dma_to_pfn(dev, handle)); @@ -769,7 +803,7 @@ size = PAGE_ALIGN(size); - if (arch_is_coherent() || nommu()) { + if (is_coherent || nommu()) { __dma_free_buffer(page, size); } else if (!IS_ENABLED(CONFIG_CMA)) { __dma_free_remap(cpu_addr, size); @@ -785,29 +819,43 @@ } } +void arm_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs) +{ + __arm_dma_free(dev, size, cpu_addr, handle, attrs, false); +} + +static void arm_coherent_dma_free(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t handle, struct dma_attrs *attrs) +{ + __arm_dma_free(dev, size, cpu_addr, handle, attrs, true); +} + static void dma_cache_maint_page(struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, void (*op)(const void *, size_t, int)) { + unsigned long pfn; + size_t left = size; + + pfn = page_to_pfn(page) + offset / PAGE_SIZE; + offset %= PAGE_SIZE; + /* * A single sg entry may refer to multiple physically contiguous * pages. But we still need to process highmem pages individually. * If highmem is not configured then the bulk of this loop gets * optimized out. */ - size_t left = size; do { size_t len = left; void *vaddr; + page = pfn_to_page(pfn); + if (PageHighMem(page)) { - if (len + offset > PAGE_SIZE) { - if (offset >= PAGE_SIZE) { - page += offset / PAGE_SIZE; - offset %= PAGE_SIZE; - } + if (len + offset > PAGE_SIZE) len = PAGE_SIZE - offset; - } vaddr = kmap_high_get(page); if (vaddr) { vaddr += offset; @@ -824,7 +872,7 @@ op(vaddr, len, dir); } offset = 0; - page++; + pfn++; left -= len; } while (left); } @@ -1317,7 +1365,8 @@ */ static int __map_sg_chunk(struct device *dev, struct scatterlist *sg, size_t size, dma_addr_t *handle, - enum dma_data_direction dir) + enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct dma_iommu_mapping *mapping = dev->archdata.mapping; dma_addr_t iova, iova_base; @@ -1336,7 +1385,8 @@ phys_addr_t phys = page_to_phys(sg_page(s)); unsigned int len = PAGE_ALIGN(s->offset + s->length); - if (!arch_is_coherent()) + if (!is_coherent && + !dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); ret = iommu_map(mapping->domain, iova, phys, len, 0); @@ -1354,20 +1404,9 @@ return ret; } -/** - * arm_iommu_map_sg - map a set of SG buffers for streaming mode DMA - * @dev: valid struct device pointer - * @sg: list of buffers - * @nents: number of buffers to map - * @dir: DMA transfer direction - * - * Map a set of buffers described by scatterlist in streaming mode for DMA. - * The scatter gather list elements are merged together (if possible) and - * tagged with the appropriate dma address and length. They are obtained via - * sg_dma_{address,length}. - */ -int arm_iommu_map_sg(struct device *dev, struct scatterlist *sg, int nents, - enum dma_data_direction dir, struct dma_attrs *attrs) +static int __iommu_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct scatterlist *s = sg, *dma = sg, *start = sg; int i, count = 0; @@ -1383,7 +1422,7 @@ if (s->offset || (size & ~PAGE_MASK) || size + s->length > max) { if (__map_sg_chunk(dev, start, size, &dma->dma_address, - dir) < 0) + dir, attrs, is_coherent) < 0) goto bad_mapping; dma->dma_address += offset; @@ -1396,7 +1435,8 @@ } size += s->length; } - if (__map_sg_chunk(dev, start, size, &dma->dma_address, dir) < 0) + if (__map_sg_chunk(dev, start, size, &dma->dma_address, dir, attrs, + is_coherent) < 0) goto bad_mapping; dma->dma_address += offset; @@ -1411,17 +1451,44 @@ } /** - * arm_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * arm_coherent_iommu_map_sg - map a set of SG buffers for streaming mode DMA * @dev: valid struct device pointer * @sg: list of buffers - * @nents: number of buffers to unmap (same as was passed to dma_map_sg) - * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * @nents: number of buffers to map + * @dir: DMA transfer direction * - * Unmap a set of streaming mode DMA translations. Again, CPU access - * rules concerning calls here are the same as for dma_unmap_single(). + * Map a set of i/o coherent buffers described by scatterlist in streaming + * mode for DMA. The scatter gather list elements are merged together (if + * possible) and tagged with the appropriate dma address and length. They are + * obtained via sg_dma_{address,length}. */ -void arm_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, - enum dma_data_direction dir, struct dma_attrs *attrs) +int arm_coherent_iommu_map_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + return __iommu_map_sg(dev, sg, nents, dir, attrs, true); +} + +/** + * arm_iommu_map_sg - map a set of SG buffers for streaming mode DMA + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to map + * @dir: DMA transfer direction + * + * Map a set of buffers described by scatterlist in streaming mode for DMA. + * The scatter gather list elements are merged together (if possible) and + * tagged with the appropriate dma address and length. They are obtained via + * sg_dma_{address,length}. + */ +int arm_iommu_map_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + return __iommu_map_sg(dev, sg, nents, dir, attrs, false); +} + +static void __iommu_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs, + bool is_coherent) { struct scatterlist *s; int i; @@ -1430,13 +1497,46 @@ if (sg_dma_len(s)) __iommu_remove_mapping(dev, sg_dma_address(s), sg_dma_len(s)); - if (!arch_is_coherent()) + if (!is_coherent && + !dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); } } /** + * arm_coherent_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to unmap (same as was passed to dma_map_sg) + * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * + * Unmap a set of streaming mode DMA translations. Again, CPU access + * rules concerning calls here are the same as for dma_unmap_single(). + */ +void arm_coherent_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, struct dma_attrs *attrs) +{ + __iommu_unmap_sg(dev, sg, nents, dir, attrs, true); +} + +/** + * arm_iommu_unmap_sg - unmap a set of SG buffers mapped by dma_map_sg + * @dev: valid struct device pointer + * @sg: list of buffers + * @nents: number of buffers to unmap (same as was passed to dma_map_sg) + * @dir: DMA transfer direction (same as was passed to dma_map_sg) + * + * Unmap a set of streaming mode DMA translations. Again, CPU access + * rules concerning calls here are the same as for dma_unmap_single(). + */ +void arm_iommu_unmap_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction dir, struct dma_attrs *attrs) +{ + __iommu_unmap_sg(dev, sg, nents, dir, attrs, false); +} + +/** * arm_iommu_sync_sg_for_cpu * @dev: valid struct device pointer * @sg: list of buffers @@ -1450,8 +1550,7 @@ int i; for_each_sg(sg, s, nents, i) - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); + __dma_page_dev_to_cpu(sg_page(s), s->offset, s->length, dir); } @@ -1469,22 +1568,21 @@ int i; for_each_sg(sg, s, nents, i) - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); + __dma_page_cpu_to_dev(sg_page(s), s->offset, s->length, dir); } /** - * arm_iommu_map_page + * arm_coherent_iommu_map_page * @dev: valid struct device pointer * @page: page that buffer resides in * @offset: offset into page for start of buffer * @size: size of buffer to map * @dir: DMA transfer direction * - * IOMMU aware version of arm_dma_map_page() + * Coherent IOMMU aware version of arm_dma_map_page() */ -static dma_addr_t arm_iommu_map_page(struct device *dev, struct page *page, +static dma_addr_t arm_coherent_iommu_map_page(struct device *dev, struct page *page, unsigned long offset, size_t size, enum dma_data_direction dir, struct dma_attrs *attrs) { @@ -1492,9 +1590,6 @@ dma_addr_t dma_addr; int ret, len = PAGE_ALIGN(size + offset); - if (!arch_is_coherent()) - __dma_page_cpu_to_dev(page, offset, size, dir); - dma_addr = __alloc_iova(mapping, len); if (dma_addr == DMA_ERROR_CODE) return dma_addr; @@ -1510,6 +1605,52 @@ } /** + * arm_iommu_map_page + * @dev: valid struct device pointer + * @page: page that buffer resides in + * @offset: offset into page for start of buffer + * @size: size of buffer to map + * @dir: DMA transfer direction + * + * IOMMU aware version of arm_dma_map_page() + */ +static dma_addr_t arm_iommu_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) + __dma_page_cpu_to_dev(page, offset, size, dir); + + return arm_coherent_iommu_map_page(dev, page, offset, size, dir, attrs); +} + +/** + * arm_coherent_iommu_unmap_page + * @dev: valid struct device pointer + * @handle: DMA address of buffer + * @size: size of buffer (same as passed to dma_map_page) + * @dir: DMA transfer direction (same as passed to dma_map_page) + * + * Coherent IOMMU aware version of arm_dma_unmap_page() + */ +static void arm_coherent_iommu_unmap_page(struct device *dev, dma_addr_t handle, + size_t size, enum dma_data_direction dir, + struct dma_attrs *attrs) +{ + struct dma_iommu_mapping *mapping = dev->archdata.mapping; + dma_addr_t iova = handle & PAGE_MASK; + struct page *page = phys_to_page(iommu_iova_to_phys(mapping->domain, iova)); + int offset = handle & ~PAGE_MASK; + int len = PAGE_ALIGN(size + offset); + + if (!iova) + return; + + iommu_unmap(mapping->domain, iova, len); + __free_iova(mapping, iova, len); +} + +/** * arm_iommu_unmap_page * @dev: valid struct device pointer * @handle: DMA address of buffer @@ -1531,7 +1672,7 @@ if (!iova) return; - if (!arch_is_coherent()) + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) __dma_page_dev_to_cpu(page, offset, size, dir); iommu_unmap(mapping->domain, iova, len); @@ -1549,8 +1690,7 @@ if (!iova) return; - if (!arch_is_coherent()) - __dma_page_dev_to_cpu(page, offset, size, dir); + __dma_page_dev_to_cpu(page, offset, size, dir); } static void arm_iommu_sync_single_for_device(struct device *dev, @@ -1583,6 +1723,19 @@ .sync_sg_for_device = arm_iommu_sync_sg_for_device, }; +struct dma_map_ops iommu_coherent_ops = { + .alloc = arm_iommu_alloc_attrs, + .free = arm_iommu_free_attrs, + .mmap = arm_iommu_mmap_attrs, + .get_sgtable = arm_iommu_get_sgtable, + + .map_page = arm_coherent_iommu_map_page, + .unmap_page = arm_coherent_iommu_unmap_page, + + .map_sg = arm_coherent_iommu_map_sg, + .unmap_sg = arm_coherent_iommu_unmap_sg, +}; + /** * arm_iommu_create_mapping * @bus: pointer to the bus holding the client device (for IOMMU calls) --- linux-3.5.0.orig/arch/arm/mach-pxa/smemc.c +++ linux-3.5.0/arch/arm/mach-pxa/smemc.c @@ -40,6 +40,8 @@ __raw_writel(csadrcfg[1], CSADRCFG1); __raw_writel(csadrcfg[2], CSADRCFG2); __raw_writel(csadrcfg[3], CSADRCFG3); + /* CSMSADRCFG wakes up in its default state (0), so we need to set it */ + __raw_writel(0x2, CSMSADRCFG); } static struct syscore_ops smemc_syscore_ops = { @@ -49,8 +51,19 @@ static int __init smemc_init(void) { - if (cpu_is_pxa3xx()) + if (cpu_is_pxa3xx()) { + /* + * The only documentation we have on the + * Chip Select Configuration Register (CSMSADRCFG) is that + * it must be programmed to 0x2. + * Moreover, in the bit definitions, the second bit + * (CSMSADRCFG[1]) is called "SETALWAYS". + * Other bits are reserved in this register. + */ + __raw_writel(0x2, CSMSADRCFG); + register_syscore_ops(&smemc_syscore_ops); + } return 0; } --- linux-3.5.0.orig/arch/arm/mach-pxa/raumfeld.c +++ linux-3.5.0/arch/arm/mach-pxa/raumfeld.c @@ -953,12 +953,12 @@ static struct eeti_ts_platform_data eeti_ts_pdata = { .irq_active_high = 1, + .irq_gpio = GPIO_TOUCH_IRQ, }; static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = { .type = "eeti_ts", .addr = 0x0a, - .irq = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ), .platform_data = &eeti_ts_pdata, }; --- linux-3.5.0.orig/arch/arm/mach-pxa/pxa27x.c +++ linux-3.5.0/arch/arm/mach-pxa/pxa27x.c @@ -47,9 +47,9 @@ EXPORT_SYMBOL(pxa27x_clear_otgph); static unsigned long ac97_reset_config[] = { - GPIO113_GPIO, + GPIO113_AC97_nRESET_GPIO_HIGH, GPIO113_AC97_nRESET, - GPIO95_GPIO, + GPIO95_AC97_nRESET_GPIO_HIGH, GPIO95_AC97_nRESET, }; --- linux-3.5.0.orig/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h +++ linux-3.5.0/arch/arm/mach-pxa/include/mach/mfp-pxa27x.h @@ -463,6 +463,9 @@ GPIO76_LCD_PCLK, \ GPIO77_LCD_BIAS +/* these enable a work-around for a hw bug in pxa27x during ac97 warm reset */ +#define GPIO113_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO113, AF0, DEFAULT) +#define GPIO95_AC97_nRESET_GPIO_HIGH MFP_CFG_OUT(GPIO95, AF0, DEFAULT) extern int keypad_set_wake(unsigned int on); #endif /* __ASM_ARCH_MFP_PXA27X_H */ --- linux-3.5.0.orig/arch/arm/mach-pxa/include/mach/smemc.h +++ linux-3.5.0/arch/arm/mach-pxa/include/mach/smemc.h @@ -37,6 +37,7 @@ #define CSADRCFG1 (SMEMC_VIRT + 0x84) /* Address Configuration Register for CS1 */ #define CSADRCFG2 (SMEMC_VIRT + 0x88) /* Address Configuration Register for CS2 */ #define CSADRCFG3 (SMEMC_VIRT + 0x8C) /* Address Configuration Register for CS3 */ +#define CSMSADRCFG (SMEMC_VIRT + 0xA0) /* Chip Select Configuration Register */ /* * More handy macros for PCMCIA --- linux-3.5.0.orig/arch/arm/mach-dove/irq.c +++ linux-3.5.0/arch/arm/mach-dove/irq.c @@ -61,8 +61,20 @@ int pin = irq_to_pmu(d->irq); u32 u; + /* + * The PMU mask register is not RW0C: it is RW. This means that + * the bits take whatever value is written to them; if you write + * a '1', you will set the interrupt. + * + * Unfortunately this means there is NO race free way to clear + * these interrupts. + * + * So, let's structure the code so that the window is as small as + * possible. + */ u = ~(1 << (pin & 31)); - writel(u, PMU_INTERRUPT_CAUSE); + u &= readl_relaxed(PMU_INTERRUPT_CAUSE); + writel_relaxed(u, PMU_INTERRUPT_CAUSE); } static struct irq_chip pmu_irq_chip = { --- linux-3.5.0.orig/arch/arm/mach-dove/include/mach/pm.h +++ linux-3.5.0/arch/arm/mach-dove/include/mach/pm.h @@ -45,7 +45,7 @@ static inline int irq_to_pmu(int irq) { - if (IRQ_DOVE_PMU_START < irq && irq < NR_IRQS) + if (IRQ_DOVE_PMU_START <= irq && irq < NR_IRQS) return irq - IRQ_DOVE_PMU_START; return -EINVAL; --- linux-3.5.0.orig/arch/arm/plat-s3c24xx/dma.c +++ linux-3.5.0/arch/arm/plat-s3c24xx/dma.c @@ -430,7 +430,7 @@ * when necessary. */ -int s3c2410_dma_enqueue(unsigned int channel, void *id, +int s3c2410_dma_enqueue(enum dma_ch channel, void *id, dma_addr_t data, int size) { struct s3c2410_dma_chan *chan = s3c_dma_lookup_channel(channel); --- linux-3.5.0.orig/arch/arm/boot/dts/tegra-trimslice.dts +++ linux-3.5.0/arch/arm/boot/dts/tegra-trimslice.dts @@ -276,9 +276,11 @@ usb@c5000000 { status = "okay"; + nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */ }; usb@c5004000 { + status = "okay"; nvidia,phy-reset-gpio = <&gpio 168 0>; /* gpio PV0 */ }; --- linux-3.5.0.orig/arch/arm/boot/dts/imx53-ard.dts +++ linux-3.5.0/arch/arm/boot/dts/imx53-ard.dts @@ -66,10 +66,30 @@ interrupt-parent = <&gpio2>; interrupts = <31>; reg-io-width = <4>; + /* + * VDD33A and VDDVARIO of LAN9220 are supplied by + * SW4_3V3 of LTC3589. Before the regulator driver + * for this PMIC is available, we use a fixed dummy + * 3V3 regulator to get LAN9220 driver probing work. + */ + vdd33a-supply = <®_3p3v>; + vddvario-supply = <®_3p3v>; smsc,irq-push-pull; }; }; + regulators { + compatible = "simple-bus"; + + reg_3p3v: 3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + }; + gpio-keys { compatible = "gpio-keys"; --- linux-3.5.0.orig/arch/arm/boot/dts/highbank.dts +++ linux-3.5.0/arch/arm/boot/dts/highbank.dts @@ -1,5 +1,5 @@ /* - * Copyright 2011 Calxeda, Inc. + * Copyright 2011-2012 Calxeda, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -24,6 +24,7 @@ compatible = "calxeda,highbank"; #address-cells = <1>; #size-cells = <1>; + clock-ranges; cpus { #address-cells = <1>; @@ -33,24 +34,32 @@ compatible = "arm,cortex-a9"; reg = <0>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@1 { compatible = "arm,cortex-a9"; reg = <1>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@2 { compatible = "arm,cortex-a9"; reg = <2>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; cpu@3 { compatible = "arm,cortex-a9"; reg = <3>; next-level-cache = <&L2>; + clocks = <&a9pll>; + clock-names = "cpu"; }; }; @@ -75,12 +84,14 @@ compatible = "arm,cortex-a9-twd-timer"; reg = <0xfff10600 0x20>; interrupts = <1 13 0xf01>; + clocks = <&a9periphclk>; }; watchdog@fff10620 { compatible = "arm,cortex-a9-twd-wdt"; reg = <0xfff10620 0x20>; interrupts = <1 14 0xf01>; + clocks = <&a9periphclk>; }; intc: interrupt-controller@fff11000 { @@ -110,18 +121,31 @@ compatible = "calxeda,hb-ahci"; reg = <0xffe08000 0x10000>; interrupts = <0 83 4>; + dma-coherent; + calxeda,port-phys = <&combophy5 0 &combophy0 0 + &combophy0 1 &combophy0 2 + &combophy0 3>; }; sdhci@ffe0e000 { compatible = "calxeda,hb-sdhci"; reg = <0xffe0e000 0x1000>; interrupts = <0 90 4>; + clocks = <&eclk>; + }; + + memory-controller@fff00000 { + compatible = "calxeda,hb-ddr-ctrl"; + reg = <0xfff00000 0x1000>; + interrupts = <0 91 4>; }; ipc@fff20000 { compatible = "arm,pl320", "arm,primecell"; reg = <0xfff20000 0x1000>; interrupts = <0 7 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpioe: gpio@fff30000 { @@ -130,6 +154,8 @@ gpio-controller; reg = <0xfff30000 0x1000>; interrupts = <0 14 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpiof: gpio@fff31000 { @@ -138,6 +164,8 @@ gpio-controller; reg = <0xfff31000 0x1000>; interrupts = <0 15 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpiog: gpio@fff32000 { @@ -146,6 +174,8 @@ gpio-controller; reg = <0xfff32000 0x1000>; interrupts = <0 16 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; gpioh: gpio@fff33000 { @@ -154,24 +184,32 @@ gpio-controller; reg = <0xfff33000 0x1000>; interrupts = <0 17 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; timer { compatible = "arm,sp804", "arm,primecell"; reg = <0xfff34000 0x1000>; interrupts = <0 18 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; rtc@fff35000 { compatible = "arm,pl031", "arm,primecell"; reg = <0xfff35000 0x1000>; interrupts = <0 19 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; serial@fff36000 { compatible = "arm,pl011", "arm,primecell"; reg = <0xfff36000 0x1000>; interrupts = <0 20 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; smic@fff3a000 { @@ -186,12 +224,79 @@ sregs@fff3c000 { compatible = "calxeda,hb-sregs"; reg = <0xfff3c000 0x1000>; + + clocks { + #address-cells = <1>; + #size-cells = <0>; + + osc: oscillator { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <33333000>; + }; + + ddrpll: ddrpll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x108>; + }; + + a9pll: a9pll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x100>; + }; + + a9periphclk: a9periphclk { + #clock-cells = <0>; + compatible = "calxeda,hb-a9periph-clock"; + clocks = <&a9pll>; + reg = <0x104>; + }; + + a9bclk: a9bclk { + #clock-cells = <0>; + compatible = "calxeda,hb-a9bus-clock"; + clocks = <&a9pll>; + reg = <0x104>; + }; + + emmcpll: emmcpll { + #clock-cells = <0>; + compatible = "calxeda,hb-pll-clock"; + clocks = <&osc>; + reg = <0x10C>; + }; + + eclk: eclk { + #clock-cells = <0>; + compatible = "calxeda,hb-emmc-clock"; + clocks = <&emmcpll>; + reg = <0x114>; + }; + + pclk: pclk { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <150000000>; + }; + }; + }; + + sregs@fff3c200 { + compatible = "calxeda,hb-sregs-l2-ecc"; + reg = <0xfff3c200 0x100>; + interrupts = <0 71 4 0 72 4>; }; dma@fff3d000 { compatible = "arm,pl330", "arm,primecell"; reg = <0xfff3d000 0x1000>; interrupts = <0 92 4>; + clocks = <&pclk>; + clock-names = "apb_pclk"; }; ethernet@fff50000 { @@ -205,5 +310,19 @@ reg = <0xfff51000 0x1000>; interrupts = <0 80 4 0 81 4 0 82 4>; }; + + combophy0: combo-phy@fff58000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff58000 0x1000>; + phydev = <5>; + }; + + combophy5: combo-phy@fff5d000 { + compatible = "calxeda,hb-combophy"; + #phy-cells = <1>; + reg = <0xfff5d000 0x1000>; + phydev = <31>; + }; }; }; --- linux-3.5.0.orig/arch/arm/boot/dts/tegra30.dtsi +++ linux-3.5.0/arch/arm/boot/dts/tegra30.dtsi @@ -73,8 +73,8 @@ pinmux: pinmux { compatible = "nvidia,tegra30-pinmux"; - reg = <0x70000868 0xd0 /* Pad control registers */ - 0x70003000 0x3e0>; /* Mux registers */ + reg = <0x70000868 0xd4 /* Pad control registers */ + 0x70003000 0x3e4>; /* Mux registers */ }; serial@70006000 { --- linux-3.5.0.orig/arch/arm/boot/compressed/head.S +++ linux-3.5.0/arch/arm/boot/compressed/head.S @@ -653,16 +653,21 @@ mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs #endif mrc p15, 0, r0, c1, c0, 0 @ read control reg + bic r0, r0, #1 << 28 @ clear SCTLR.TRE orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement orr r0, r0, #0x003c @ write buffer #ifdef CONFIG_MMU #ifdef CONFIG_CPU_ENDIAN_BE8 orr r0, r0, #1 << 25 @ big-endian page tables #endif + mrcne p15, 0, r6, c2, c0, 2 @ read ttb control reg orrne r0, r0, #1 @ MMU enabled movne r1, #0xfffffffd @ domain 0 = client + bic r6, r6, #1 << 31 @ 32-bit translation system + bic r6, r6, #3 << 0 @ use only ttbr0 mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer mcrne p15, 0, r1, c3, c0, 0 @ load domain access control + mcrne p15, 0, r6, c2, c0, 2 @ load ttb control #endif mcr p15, 0, r0, c7, c5, 4 @ ISB mcr p15, 0, r0, c1, c0, 0 @ load control register --- linux-3.5.0.orig/arch/arm/kernel/head.S +++ linux-3.5.0/arch/arm/kernel/head.S @@ -254,6 +254,7 @@ /* * Then map boot params address in r2 or the first 1MB (2MB with LPAE) * of ram if boot params address is not specified. + * We map 2 sections in case the ATAGs/DTB crosses a section boundary. */ mov r0, r2, lsr #SECTION_SHIFT movs r0, r0, lsl #SECTION_SHIFT @@ -262,6 +263,8 @@ add r3, r3, #PAGE_OFFSET add r3, r4, r3, lsr #(SECTION_SHIFT - PMD_ORDER) orr r6, r7, r0 + str r6, [r3], #1 << PMD_ORDER + add r6, r6, #1 << SECTION_SHIFT str r6, [r3] #ifdef CONFIG_DEBUG_LL --- linux-3.5.0.orig/arch/arm/kernel/process.c +++ linux-3.5.0/arch/arm/kernel/process.c @@ -247,6 +247,7 @@ void machine_halt(void) { machine_shutdown(); + local_irq_disable(); while (1); } @@ -268,6 +269,7 @@ /* Whoops - the platform was unable to reboot. Tell the user! */ printk("Reboot failed -- System halted\n"); + local_irq_disable(); while (1); } --- linux-3.5.0.orig/arch/arm/kernel/smp.c +++ linux-3.5.0/arch/arm/kernel/smp.c @@ -222,18 +222,24 @@ asmlinkage void __cpuinit secondary_start_kernel(void) { struct mm_struct *mm = &init_mm; - unsigned int cpu = smp_processor_id(); + unsigned int cpu; + + /* + * The identity mapping is uncached (strongly ordered), so + * switch away from it before attempting any exclusive accesses. + */ + cpu_switch_mm(mm->pgd, mm); + enter_lazy_tlb(mm, current); + local_flush_tlb_all(); /* * All kernel threads share the same mm context; grab a * reference and switch to it. */ + cpu = smp_processor_id(); atomic_inc(&mm->mm_count); current->active_mm = mm; cpumask_set_cpu(cpu, mm_cpumask(mm)); - cpu_switch_mm(mm->pgd, mm); - enter_lazy_tlb(mm, current); - local_flush_tlb_all(); printk("CPU%u: Booted secondary processor\n", cpu); @@ -563,7 +569,8 @@ cpumask_copy(&mask, cpu_online_mask); cpumask_clear_cpu(smp_processor_id(), &mask); - smp_cross_call(&mask, IPI_CPU_STOP); + if (!cpumask_empty(&mask)) + smp_cross_call(&mask, IPI_CPU_STOP); /* Wait up to one second for other CPUs to stop */ timeout = USEC_PER_SEC; --- linux-3.5.0.orig/arch/arm/kernel/swp_emulate.c +++ linux-3.5.0/arch/arm/kernel/swp_emulate.c @@ -109,10 +109,12 @@ { siginfo_t info; + down_read(¤t->mm->mmap_sem); if (find_vma(current->mm, addr) == NULL) info.si_code = SEGV_MAPERR; else info.si_code = SEGV_ACCERR; + up_read(¤t->mm->mmap_sem); info.si_signo = SIGSEGV; info.si_errno = 0; --- linux-3.5.0.orig/arch/arm/kernel/hw_breakpoint.c +++ linux-3.5.0/arch/arm/kernel/hw_breakpoint.c @@ -159,6 +159,12 @@ arch >= ARM_DEBUG_ARCH_V7_1; } +/* Can we determine the watchpoint access type from the fsr? */ +static int debug_exception_updates_fsr(void) +{ + return 0; +} + /* Determine number of WRP registers available. */ static int get_num_wrp_resources(void) { @@ -619,18 +625,35 @@ info->address &= ~alignment_mask; info->ctrl.len <<= offset; - /* - * Currently we rely on an overflow handler to take - * care of single-stepping the breakpoint when it fires. - * In the case of userspace breakpoints on a core with V7 debug, - * we can use the mismatch feature as a poor-man's hardware - * single-step, but this only works for per-task breakpoints. - */ - if (!bp->overflow_handler && (arch_check_bp_in_kernelspace(bp) || - !core_has_mismatch_brps() || !bp->hw.bp_target)) { - pr_warning("overflow handler required but none found\n"); - ret = -EINVAL; + if (!bp->overflow_handler) { + /* + * Mismatch breakpoints are required for single-stepping + * breakpoints. + */ + if (!core_has_mismatch_brps()) + return -EINVAL; + + /* We don't allow mismatch breakpoints in kernel space. */ + if (arch_check_bp_in_kernelspace(bp)) + return -EPERM; + + /* + * Per-cpu breakpoints are not supported by our stepping + * mechanism. + */ + if (!bp->hw.bp_target) + return -EINVAL; + + /* + * We only support specific access types if the fsr + * reports them. + */ + if (!debug_exception_updates_fsr() && + (info->ctrl.type == ARM_BREAKPOINT_LOAD || + info->ctrl.type == ARM_BREAKPOINT_STORE)) + return -EINVAL; } + out: return ret; } @@ -706,10 +729,12 @@ goto unlock; /* Check that the access type matches. */ - access = (fsr & ARM_FSR_ACCESS_MASK) ? HW_BREAKPOINT_W : - HW_BREAKPOINT_R; - if (!(access & hw_breakpoint_type(wp))) - goto unlock; + if (debug_exception_updates_fsr()) { + access = (fsr & ARM_FSR_ACCESS_MASK) ? + HW_BREAKPOINT_W : HW_BREAKPOINT_R; + if (!(access & hw_breakpoint_type(wp))) + goto unlock; + } /* We have a winner. */ info->trigger = addr; --- linux-3.5.0.orig/arch/arm/kernel/smp_twd.c +++ linux-3.5.0/arch/arm/kernel/smp_twd.c @@ -313,6 +313,7 @@ { .compatible = "arm,cortex-a9-twd-timer", }, { .compatible = "arm,cortex-a5-twd-timer", }, { .compatible = "arm,arm11mp-twd-timer", }, + { .compatible = "arm,smp-twd", }, { }, }; --- linux-3.5.0.orig/arch/arm/kernel/entry-armv.S +++ linux-3.5.0/arch/arm/kernel/entry-armv.S @@ -244,6 +244,19 @@ b 1b #endif +__und_fault: + @ Correct the PC such that it is pointing at the instruction + @ which caused the fault. If the faulting instruction was ARM + @ the PC will be pointing at the next instruction, and have to + @ subtract 4. Otherwise, it is Thumb, and the PC will be + @ pointing at the second half of the Thumb instruction. We + @ have to subtract 2. + ldr r2, [r0, #S_PC] + sub r2, r2, r1 + str r2, [r0, #S_PC] + b do_undefinstr +ENDPROC(__und_fault) + .align 5 __und_svc: #ifdef CONFIG_KPROBES @@ -261,25 +274,32 @@ @ @ r0 - instruction @ -#ifndef CONFIG_THUMB2_KERNEL +#ifndef CONFIG_THUMB2_KERNEL ldr r0, [r4, #-4] #else + mov r1, #2 ldrh r0, [r4, #-2] @ Thumb instruction at LR - 2 cmp r0, #0xe800 @ 32-bit instruction if xx >= 0 - ldrhhs r9, [r4] @ bottom 16 bits - orrhs r0, r9, r0, lsl #16 + blo __und_svc_fault + ldrh r9, [r4] @ bottom 16 bits + add r4, r4, #2 + str r4, [sp, #S_PC] + orr r0, r9, r0, lsl #16 #endif - adr r9, BSYM(1f) + adr r9, BSYM(__und_svc_finish) mov r2, r4 bl call_fpe + mov r1, #4 @ PC correction to apply +__und_svc_fault: mov r0, sp @ struct pt_regs *regs - bl do_undefinstr + bl __und_fault @ @ IRQs off again before pulling preserved data off the stack @ -1: disable_irq_notrace +__und_svc_finish: + disable_irq_notrace @ @ restore SPSR and restart the instruction @@ -423,25 +443,33 @@ mov r2, r4 mov r3, r5 + @ r2 = regs->ARM_pc, which is either 2 or 4 bytes ahead of the + @ faulting instruction depending on Thumb mode. + @ r3 = regs->ARM_cpsr @ - @ fall through to the emulation code, which returns using r9 if - @ it has emulated the instruction, or the more conventional lr - @ if we are to treat this as a real undefined instruction - @ - @ r0 - instruction + @ The emulation code returns using r9 if it has emulated the + @ instruction, or the more conventional lr if we are to treat + @ this as a real undefined instruction @ adr r9, BSYM(ret_from_exception) - adr lr, BSYM(__und_usr_unknown) + tst r3, #PSR_T_BIT @ Thumb mode? - itet eq @ explicit IT needed for the 1f label - subeq r4, r2, #4 @ ARM instr at LR - 4 - subne r4, r2, #2 @ Thumb instr at LR - 2 -1: ldreqt r0, [r4] + bne __und_usr_thumb + sub r4, r2, #4 @ ARM instr at LR - 4 +1: ldrt r0, [r4] #ifdef CONFIG_CPU_ENDIAN_BE8 - reveq r0, r0 @ little endian instruction + rev r0, r0 @ little endian instruction #endif - beq call_fpe + @ r0 = 32-bit ARM instruction which caused the exception + @ r2 = PC value for the following instruction (:= regs->ARM_pc) + @ r4 = PC value for the faulting instruction + @ lr = 32-bit undefined instruction function + adr lr, BSYM(__und_usr_fault_32) + b call_fpe + +__und_usr_thumb: @ Thumb instruction + sub r4, r2, #2 @ First half of thumb instr at LR - 2 #if CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7 /* * Thumb-2 instruction handling. Note that because pre-v6 and >= v6 platforms @@ -455,7 +483,7 @@ ldr r5, .LCcpu_architecture ldr r5, [r5] cmp r5, #CPU_ARCH_ARMv7 - blo __und_usr_unknown + blo __und_usr_fault_16 @ 16bit undefined instruction /* * The following code won't get run unless the running CPU really is v7, so * coding round the lack of ldrht on older arches is pointless. Temporarily @@ -463,15 +491,18 @@ */ .arch armv6t2 #endif -2: - ARM( ldrht r5, [r4], #2 ) - THUMB( ldrht r5, [r4] ) - THUMB( add r4, r4, #2 ) +2: ldrht r5, [r4] cmp r5, #0xe800 @ 32bit instruction if xx != 0 - blo __und_usr_unknown -3: ldrht r0, [r4] + blo __und_usr_fault_16 @ 16bit undefined instruction +3: ldrht r0, [r2] add r2, r2, #2 @ r2 is PC + 2, make it PC + 4 + str r2, [sp, #S_PC] @ it's a 2x16bit instr, update orr r0, r0, r5, lsl #16 + adr lr, BSYM(__und_usr_fault_32) + @ r0 = the two 16-bit Thumb instructions which caused the exception + @ r2 = PC value for the following Thumb instruction (:= regs->ARM_pc) + @ r4 = PC value for the first 16-bit Thumb instruction + @ lr = 32bit undefined instruction function #if __LINUX_ARM_ARCH__ < 7 /* If the target arch was overridden, change it back: */ @@ -482,17 +513,13 @@ #endif #endif /* __LINUX_ARM_ARCH__ < 7 */ #else /* !(CONFIG_ARM_THUMB && __LINUX_ARM_ARCH__ >= 6 && CONFIG_CPU_V7) */ - b __und_usr_unknown + b __und_usr_fault_16 #endif - UNWIND(.fnend ) + UNWIND(.fnend) ENDPROC(__und_usr) - @ - @ fallthrough to call_fpe - @ - /* - * The out of line fixup for the ldrt above. + * The out of line fixup for the ldrt instructions above. */ .pushsection .fixup, "ax" .align 2 @@ -524,11 +551,12 @@ * NEON handler code. * * Emulators may wish to make use of the following registers: - * r0 = instruction opcode. - * r2 = PC+4 + * r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) + * r2 = PC value to resume execution after successful emulation * r9 = normal "successful" return address - * r10 = this threads thread_info structure. + * r10 = this threads thread_info structure * lr = unrecognised instruction return address + * IRQs disabled, FIQs enabled. */ @ @ Fall-through from Thumb-2 __und_usr @@ -659,12 +687,17 @@ mov pc, lr ENDPROC(no_fp) -__und_usr_unknown: - enable_irq +__und_usr_fault_32: + mov r1, #4 + b 1f +__und_usr_fault_16: + mov r1, #2 +1: enable_irq mov r0, sp adr lr, BSYM(ret_from_exception) - b do_undefinstr -ENDPROC(__und_usr_unknown) + b __und_fault +ENDPROC(__und_usr_fault_32) +ENDPROC(__und_usr_fault_16) .align 5 __pabt_usr: --- linux-3.5.0.orig/arch/arm/kernel/traps.c +++ linux-3.5.0/arch/arm/kernel/traps.c @@ -370,18 +370,10 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) { - unsigned int correction = thumb_mode(regs) ? 2 : 4; unsigned int instr; siginfo_t info; void __user *pc; - /* - * According to the ARM ARM, PC is 2 or 4 bytes ahead, - * depending whether we're in Thumb mode or not. - * Correct this offset. - */ - regs->ARM_pc -= correction; - pc = (void __user *)instruction_pointer(regs); if (processor_mode(regs) == SVC_MODE) { @@ -396,20 +388,23 @@ #endif instr = *(u32 *) pc; } else if (thumb_mode(regs)) { - get_user(instr, (u16 __user *)pc); + if (get_user(instr, (u16 __user *)pc)) + goto die_sig; if (is_wide_instruction(instr)) { unsigned int instr2; - get_user(instr2, (u16 __user *)pc+1); + if (get_user(instr2, (u16 __user *)pc+1)) + goto die_sig; instr <<= 16; instr |= instr2; } - } else { - get_user(instr, (u32 __user *)pc); + } else if (get_user(instr, (u32 __user *)pc)) { + goto die_sig; } if (call_undef_hook(regs, instr) == 0) return; +die_sig: #ifdef CONFIG_DEBUG_USER if (user_debug & UDBG_UNDEFINED) { printk(KERN_INFO "%s (%d): undefined instruction: pc=%p\n", --- linux-3.5.0.orig/arch/arm/kernel/sched_clock.c +++ linux-3.5.0/arch/arm/kernel/sched_clock.c @@ -84,11 +84,11 @@ * detectable in cyc_to_fixed_sched_clock(). */ raw_local_irq_save(flags); - cd.epoch_cyc = cyc; + cd.epoch_cyc_copy = cyc; smp_wmb(); cd.epoch_ns = ns; smp_wmb(); - cd.epoch_cyc_copy = cyc; + cd.epoch_cyc = cyc; raw_local_irq_restore(flags); } --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/pm-h1940.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/pm-h1940.S @@ -30,4 +30,4 @@ h1940_pm_return: mov r0, #S3C2410_PA_GPIO - ldr pc, [ r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO ] + ldr pc, [r0, #S3C2410_GSTATUS3 - S3C24XX_VA_GPIO] --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2410.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/sleep-s3c2410.S @@ -45,9 +45,9 @@ ldr r4, =S3C2410_REFRESH ldr r5, =S3C24XX_MISCCR ldr r6, =S3C2410_CLKCON - ldr r7, [ r4 ] @ get REFRESH (and ensure in TLB) - ldr r8, [ r5 ] @ get MISCCR (and ensure in TLB) - ldr r9, [ r6 ] @ get CLKCON (and ensure in TLB) + ldr r7, [r4] @ get REFRESH (and ensure in TLB) + ldr r8, [r5] @ get MISCCR (and ensure in TLB) + ldr r9, [r6] @ get CLKCON (and ensure in TLB) orr r7, r7, #S3C2410_REFRESH_SELF @ SDRAM sleep command orr r8, r8, #S3C2410_MISCCR_SDSLEEP @ SDRAM power-down signals @@ -61,8 +61,8 @@ @@ align next bit of code to cache line .align 5 s3c2410_do_sleep: - streq r7, [ r4 ] @ SDRAM sleep command - streq r8, [ r5 ] @ SDRAM power-down config - streq r9, [ r6 ] @ CPU sleep + streq r7, [r4] @ SDRAM sleep command + streq r8, [r5] @ SDRAM power-down config + streq r9, [r6] @ CPU sleep 1: beq 1b mov pc, r14 --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/sleep-s3c2412.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/sleep-s3c2412.S @@ -57,12 +57,12 @@ * retry, as simply returning causes the system to lock. */ - ldrne r9, [ r1 ] - strne r9, [ r1 ] - ldrne r9, [ r2 ] - strne r9, [ r2 ] - ldrne r9, [ r3 ] - strne r9, [ r3 ] + ldrne r9, [r1] + strne r9, [r1] + ldrne r9, [r2] + strne r9, [r2] + ldrne r9, [r3] + strne r9, [r3] bne s3c2412_sleep_enter1 mov pc, r14 --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/debug-macro.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/debug-macro.S @@ -40,17 +40,17 @@ addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) bic \rd, \rd, #0xff000 - ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] + ldr \rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)] and \rd, \rd, #0x00ff0000 teq \rd, #0x00440000 @ is it 2440? 1004: - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] moveq \rd, \rd, lsr #SHIFT_2440TXF tst \rd, #S3C2410_UFSTAT_TXFULL .endm .macro fifo_full_s3c2410 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S3C2410_UFSTAT_TXFULL .endm @@ -68,18 +68,18 @@ addeq \rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART) addne \rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART) bic \rd, \rd, #0xff000 - ldr \rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ] + ldr \rd, [\rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0)] and \rd, \rd, #0x00ff0000 teq \rd, #0x00440000 @ is it 2440? 10000: - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] andne \rd, \rd, #S3C2410_UFSTAT_TXMASK andeq \rd, \rd, #S3C2440_UFSTAT_TXMASK .endm .macro fifo_level_s3c2410 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S3C2410_UFSTAT_TXMASK .endm --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/dma.h +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/dma.h @@ -24,7 +24,8 @@ */ enum dma_ch { - DMACH_XD0, + DMACH_DT_PROP = -1, /* not yet supported, do not use */ + DMACH_XD0 = 0, DMACH_XD1, DMACH_SDI, DMACH_SPI0, --- linux-3.5.0.orig/arch/arm/mach-s3c24xx/include/mach/entry-macro.S +++ linux-3.5.0/arch/arm/mach-s3c24xx/include/mach/entry-macro.S @@ -31,10 +31,10 @@ @@ try the interrupt offset register, since it is there - ldr \irqstat, [ \base, #INTPND ] + ldr \irqstat, [\base, #INTPND ] teq \irqstat, #0 beq 1002f - ldr \irqnr, [ \base, #INTOFFSET ] + ldr \irqnr, [\base, #INTOFFSET ] mov \tmp, #1 tst \irqstat, \tmp, lsl \irqnr bne 1001f --- linux-3.5.0.orig/arch/arm/vfp/vfpmodule.c +++ linux-3.5.0/arch/arm/vfp/vfpmodule.c @@ -457,10 +457,16 @@ /* disable, just in case */ fmxr(FPEXC, fmrx(FPEXC) & ~FPEXC_EN); + } else if (vfp_current_hw_state[ti->cpu]) { +#ifndef CONFIG_SMP + fmxr(FPEXC, fpexc | FPEXC_EN); + vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc); + fmxr(FPEXC, fpexc); +#endif } /* clear any information we had about last context state */ - memset(vfp_current_hw_state, 0, sizeof(vfp_current_hw_state)); + vfp_current_hw_state[ti->cpu] = NULL; return 0; } @@ -695,11 +701,14 @@ elf_hwcap |= HWCAP_VFPv3; /* - * Check for VFPv3 D16. CPUs in this configuration - * only have 16 x 64bit registers. + * Check for VFPv3 D16 and VFPv4 D16. CPUs in + * this configuration only have 16 x 64bit + * registers. */ if (((fmrx(MVFR0) & MVFR0_A_SIMD_MASK)) == 1) - elf_hwcap |= HWCAP_VFPv3D16; + elf_hwcap |= HWCAP_VFPv3D16; /* also v4-D16 */ + else + elf_hwcap |= HWCAP_VFPD32; } #endif /* @@ -713,8 +722,10 @@ if ((fmrx(MVFR1) & 0x000fff00) == 0x00011100) elf_hwcap |= HWCAP_NEON; #endif +#ifdef CONFIG_VFPv3 if ((fmrx(MVFR1) & 0xf0000000) == 0x10000000) elf_hwcap |= HWCAP_VFPv4; +#endif } } return 0; --- linux-3.5.0.orig/arch/arm/vfp/entry.S +++ linux-3.5.0/arch/arm/vfp/entry.S @@ -7,20 +7,22 @@ * 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. - * - * Basic entry code, called from the kernel's undefined instruction trap. - * r0 = faulted instruction - * r5 = faulted PC+4 - * r9 = successful return - * r10 = thread_info structure - * lr = failure return */ #include #include #include "../kernel/entry-header.S" +@ VFP entry point. +@ +@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) +@ r2 = PC value to resume execution after successful emulation +@ r9 = normal "successful" return address +@ r10 = this threads thread_info structure +@ lr = unrecognised instruction return address +@ IRQs disabled. +@ ENTRY(do_vfp) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT ldr r4, [r10, #TI_PREEMPT] @ get preempt count add r11, r4, #1 @ increment it str r11, [r10, #TI_PREEMPT] @@ -33,7 +35,7 @@ ENDPROC(do_vfp) ENTRY(vfp_null_entry) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it @@ -51,7 +53,7 @@ __INIT ENTRY(vfp_testing_entry) -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it --- linux-3.5.0.orig/arch/arm/vfp/vfphw.S +++ linux-3.5.0/arch/arm/vfp/vfphw.S @@ -61,13 +61,13 @@ @ VFP hardware support entry point. @ -@ r0 = faulted instruction -@ r2 = faulted PC+4 -@ r9 = successful return +@ r0 = instruction opcode (32-bit ARM or two 16-bit Thumb) +@ r2 = PC value to resume execution after successful emulation +@ r9 = normal "successful" return address @ r10 = vfp_state union @ r11 = CPU number -@ lr = failure return - +@ lr = unrecognised instruction return address +@ IRQs enabled. ENTRY(vfp_support_entry) DBGSTR3 "instr %08x pc %08x state %p", r0, r2, r10 @@ -161,10 +161,13 @@ @ exception before retrying branch @ out before setting an FPEXC that @ stops us reading stuff - VFPFMXR FPEXC, r1 @ restore FPEXC last - sub r2, r2, #4 - str r2, [sp, #S_PC] @ retry the instruction -#ifdef CONFIG_PREEMPT + VFPFMXR FPEXC, r1 @ Restore FPEXC last + sub r2, r2, #4 @ Retry current instruction - if Thumb + str r2, [sp, #S_PC] @ mode it's two 16-bit instructions, + @ else it's one 32-bit instruction, so + @ always subtract 4 from the following + @ instruction address. +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it @@ -188,7 +191,7 @@ @ not recognised by VFP DBGSTR "not VFP" -#ifdef CONFIG_PREEMPT +#ifdef CONFIG_PREEMPT_COUNT get_thread_info r10 ldr r4, [r10, #TI_PREEMPT] @ get preempt count sub r11, r4, #1 @ decrement it --- linux-3.5.0.orig/arch/arm/mach-realview/include/mach/board-eb.h +++ linux-3.5.0/arch/arm/mach-realview/include/mach/board-eb.h @@ -47,7 +47,7 @@ #define REALVIEW_EB_USB_BASE 0x4F000000 /* USB */ #ifdef CONFIG_REALVIEW_EB_ARM11MP_REVB -#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x1F000000 +#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x10100000 #define REALVIEW_EB11MP_L220_BASE 0x10102000 /* L220 registers */ #define REALVIEW_EB11MP_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */ #else --- linux-3.5.0.orig/arch/arm/plat-samsung/include/plat/debug-macro.S +++ linux-3.5.0/arch/arm/plat-samsung/include/plat/debug-macro.S @@ -14,12 +14,12 @@ /* The S5PV210/S5PC110 implementations are as belows. */ .macro fifo_level_s5pv210 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S5PV210_UFSTAT_TXMASK .endm .macro fifo_full_s5pv210 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S5PV210_UFSTAT_TXFULL .endm @@ -27,7 +27,7 @@ * most widely re-used */ .macro fifo_level_s3c2440 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] and \rd, \rd, #S3C2440_UFSTAT_TXMASK .endm @@ -36,7 +36,7 @@ #endif .macro fifo_full_s3c2440 rd, rx - ldr \rd, [ \rx, # S3C2410_UFSTAT ] + ldr \rd, [\rx, # S3C2410_UFSTAT] tst \rd, #S3C2440_UFSTAT_TXFULL .endm @@ -45,11 +45,11 @@ #endif .macro senduart,rd,rx - strb \rd, [\rx, # S3C2410_UTXH ] + strb \rd, [\rx, # S3C2410_UTXH] .endm .macro busyuart, rd, rx - ldr \rd, [ \rx, # S3C2410_UFCON ] + ldr \rd, [\rx, # S3C2410_UFCON] tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? beq 1001f @ @ FIFO enabled... @@ -60,7 +60,7 @@ 1001: @ busy waiting for non fifo - ldr \rd, [ \rx, # S3C2410_UTRSTAT ] + ldr \rd, [\rx, # S3C2410_UTRSTAT] tst \rd, #S3C2410_UTRSTAT_TXFE beq 1001b @@ -68,7 +68,7 @@ .endm .macro waituart,rd,rx - ldr \rd, [ \rx, # S3C2410_UFCON ] + ldr \rd, [\rx, # S3C2410_UFCON] tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? beq 1001f @ @ FIFO enabled... @@ -79,7 +79,7 @@ b 1002f 1001: @ idle waiting for non fifo - ldr \rd, [ \rx, # S3C2410_UTRSTAT ] + ldr \rd, [\rx, # S3C2410_UTRSTAT] tst \rd, #S3C2410_UTRSTAT_TXFE beq 1001b --- linux-3.5.0.orig/arch/parisc/include/asm/atomic.h +++ linux-3.5.0/arch/parisc/include/asm/atomic.h @@ -141,7 +141,7 @@ #define atomic_sub_and_test(i,v) (atomic_sub_return((i),(v)) == 0) -#define ATOMIC_INIT(i) ((atomic_t) { (i) }) +#define ATOMIC_INIT(i) { (i) } #define smp_mb__before_atomic_dec() smp_mb() #define smp_mb__after_atomic_dec() smp_mb() @@ -150,7 +150,7 @@ #ifdef CONFIG_64BIT -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC64_INIT(i) { (i) } static __inline__ s64 __atomic64_add_return(s64 i, atomic64_t *v) --- linux-3.5.0.orig/arch/parisc/include/asm/pgtable.h +++ linux-3.5.0/arch/parisc/include/asm/pgtable.h @@ -12,11 +12,10 @@ #include #include +#include #include #include -struct vm_area_struct; - /* * kern_addr_valid(ADDR) tests if ADDR is pointing to valid kernel * memory. For the return value to be meaningful, ADDR must be >= @@ -40,7 +39,14 @@ do{ \ *(pteptr) = (pteval); \ } while(0) -#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) + +extern void purge_tlb_entries(struct mm_struct *, unsigned long); + +#define set_pte_at(mm, addr, ptep, pteval) \ + do { \ + set_pte(ptep, pteval); \ + purge_tlb_entries(mm, addr); \ + } while (0) #endif /* !__ASSEMBLY__ */ @@ -466,6 +472,7 @@ old = pte_val(*ptep); new = pte_val(pte_wrprotect(__pte (old))); } while (cmpxchg((unsigned long *) ptep, old, new) != old); + purge_tlb_entries(mm, addr); #else pte_t old_pte = *ptep; set_pte_at(mm, addr, ptep, pte_wrprotect(old_pte)); --- linux-3.5.0.orig/arch/parisc/kernel/process.c +++ linux-3.5.0/arch/parisc/kernel/process.c @@ -48,6 +48,7 @@ #include #include #include +#include #include #include @@ -69,8 +70,10 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) barrier(); + rcu_idle_exit(); schedule_preempt_disabled(); check_pgt_cache(); } --- linux-3.5.0.orig/arch/parisc/kernel/signal32.c +++ linux-3.5.0/arch/parisc/kernel/signal32.c @@ -65,7 +65,8 @@ { compat_sigset_t s; - if (sz != sizeof *set) panic("put_sigset32()"); + if (sz != sizeof *set) + return -EINVAL; sigset_64to32(&s, set); return copy_to_user(up, &s, sizeof s); @@ -77,7 +78,8 @@ compat_sigset_t s; int r; - if (sz != sizeof *set) panic("put_sigset32()"); + if (sz != sizeof *set) + return -EINVAL; if ((r = copy_from_user(&s, up, sz)) == 0) { sigset_32to64(set, &s); --- linux-3.5.0.orig/arch/parisc/kernel/cache.c +++ linux-3.5.0/arch/parisc/kernel/cache.c @@ -420,6 +420,24 @@ EXPORT_SYMBOL(kunmap_parisc); #endif +void purge_tlb_entries(struct mm_struct *mm, unsigned long addr) +{ + unsigned long flags; + + /* Note: purge_tlb_entries can be called at startup with + no context. */ + + /* Disable preemption while we play with %sr1. */ + preempt_disable(); + mtsp(mm->context, 1); + purge_tlb_start(flags); + pdtlb(addr); + pitlb(addr); + purge_tlb_end(flags); + preempt_enable(); +} +EXPORT_SYMBOL(purge_tlb_entries); + void __flush_tlb_range(unsigned long sid, unsigned long start, unsigned long end) { --- linux-3.5.0.orig/arch/parisc/kernel/sys_parisc.c +++ linux-3.5.0/arch/parisc/kernel/sys_parisc.c @@ -73,6 +73,8 @@ struct vm_area_struct *vma; int offset = mapping ? get_offset(mapping) : 0; + offset = (offset + (pgoff << PAGE_SHIFT)) & 0x3FF000; + addr = DCACHE_ALIGN(addr - offset) + offset; for (vma = find_vma(current->mm, addr); ; vma = vma->vm_next) { --- linux-3.5.0.orig/arch/score/kernel/process.c +++ linux-3.5.0/arch/score/kernel/process.c @@ -27,6 +27,7 @@ #include #include #include +#include void (*pm_power_off)(void); EXPORT_SYMBOL(pm_power_off); @@ -50,9 +51,10 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) barrier(); - + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/powerpc/Kconfig +++ linux-3.5.0/arch/powerpc/Kconfig @@ -264,6 +264,10 @@ depends on PPC_ADV_DEBUG_REGS && 44x default y +config PPC_EMULATE_SSTEP + bool + default y if KPROBES || UPROBES || XMON || HAVE_HW_BREAKPOINT + source "init/Kconfig" source "kernel/Kconfig.freezer" @@ -986,6 +990,8 @@ source "drivers/Kconfig" +source "ubuntu/Kconfig" + source "fs/Kconfig" source "arch/powerpc/sysdev/qe_lib/Kconfig" --- linux-3.5.0.orig/arch/powerpc/lib/Makefile +++ linux-3.5.0/arch/powerpc/lib/Makefile @@ -18,9 +18,7 @@ memcpy_64.o usercopy_64.o mem_64.o string.o \ checksum_wrappers_64.o hweight_64.o \ copyuser_power7.o -obj-$(CONFIG_XMON) += sstep.o ldstfp.o -obj-$(CONFIG_KPROBES) += sstep.o ldstfp.o -obj-$(CONFIG_HAVE_HW_BREAKPOINT) += sstep.o ldstfp.o +obj-$(CONFIG_PPC_EMULATE_SSTEP) += sstep.o ldstfp.o ifeq ($(CONFIG_PPC64),y) obj-$(CONFIG_SMP) += locks.o --- linux-3.5.0.orig/arch/powerpc/kvm/e500_tlb.c +++ linux-3.5.0/arch/powerpc/kvm/e500_tlb.c @@ -1330,7 +1330,7 @@ if (!vcpu_e500->gtlb_priv[1]) goto err; - vcpu_e500->g2h_tlb1_map = kzalloc(sizeof(unsigned int) * + vcpu_e500->g2h_tlb1_map = kzalloc(sizeof(u64) * vcpu_e500->gtlb_params[1].entries, GFP_KERNEL); if (!vcpu_e500->g2h_tlb1_map) --- linux-3.5.0.orig/arch/powerpc/kvm/emulate.c +++ linux-3.5.0/arch/powerpc/kvm/emulate.c @@ -39,6 +39,7 @@ #define OP_31_XOP_TRAP 4 #define OP_31_XOP_LWZX 23 #define OP_31_XOP_TRAP_64 68 +#define OP_31_XOP_DCBF 86 #define OP_31_XOP_LBZX 87 #define OP_31_XOP_STWX 151 #define OP_31_XOP_STBX 215 @@ -351,6 +352,7 @@ kvmppc_set_exit_type(vcpu, EMULATED_MTSPR_EXITS); break; + case OP_31_XOP_DCBF: case OP_31_XOP_DCBI: /* Do nothing. The guest is performing dcbi because * hardware DMA is not snooped by the dcache, but --- linux-3.5.0.orig/arch/powerpc/include/asm/pci-bridge.h +++ linux-3.5.0/arch/powerpc/include/asm/pci-bridge.h @@ -181,6 +181,14 @@ #if defined(CONFIG_EEH) static inline struct eeh_dev *of_node_to_eeh_dev(struct device_node *dn) { + /* + * For those OF nodes whose parent isn't PCI bridge, they + * don't have PCI_DN actually. So we have to skip them for + * any EEH operations. + */ + if (!dn || !PCI_DN(dn)) + return NULL; + return PCI_DN(dn)->edev; } #endif --- linux-3.5.0.orig/arch/powerpc/include/asm/eeh.h +++ linux-3.5.0/arch/powerpc/include/asm/eeh.h @@ -130,6 +130,7 @@ void __init pci_addr_cache_build(void); void eeh_add_device_tree_early(struct device_node *); void eeh_add_device_tree_late(struct pci_bus *); +void eeh_add_sysfs_files(struct pci_bus *); void eeh_remove_bus_device(struct pci_dev *); /** @@ -183,7 +184,10 @@ static inline void eeh_add_device_tree_late(struct pci_bus *bus) { } +static inline void eeh_add_sysfs_files(struct pci_bus *bus) { } + static inline void eeh_remove_bus_device(struct pci_dev *dev) { } + #define EEH_POSSIBLE_ERROR(val, type) (0) #define EEH_IO_ERROR_VALUE(size) (-1UL) #endif /* CONFIG_EEH */ --- linux-3.5.0.orig/arch/powerpc/include/asm/reg.h +++ linux-3.5.0/arch/powerpc/include/asm/reg.h @@ -1024,7 +1024,8 @@ /* Macros for setting and retrieving special purpose registers */ #ifndef __ASSEMBLY__ #define mfmsr() ({unsigned long rval; \ - asm volatile("mfmsr %0" : "=r" (rval)); rval;}) + asm volatile("mfmsr %0" : "=r" (rval) : \ + : "memory"); rval;}) #ifdef CONFIG_PPC_BOOK3S_64 #define __mtmsrd(v, l) asm volatile("mtmsrd %0," __stringify(l) \ : : "r" (v) : "memory") --- linux-3.5.0.orig/arch/powerpc/sysdev/xics/icp-hv.c +++ linux-3.5.0/arch/powerpc/sysdev/xics/icp-hv.c @@ -65,7 +65,11 @@ static inline void icp_hv_set_qirr(int n_cpu , u8 value) { int hw_cpu = get_hard_smp_processor_id(n_cpu); - long rc = plpar_hcall_norets(H_IPI, hw_cpu, value); + long rc; + + /* Make sure all previous accesses are ordered before IPI sending */ + mb(); + rc = plpar_hcall_norets(H_IPI, hw_cpu, value); if (rc != H_SUCCESS) { pr_err("%s: bad return code qirr cpu=%d hw_cpu=%d mfrr=0x%x " "returned %ld\n", __func__, n_cpu, hw_cpu, value, rc); --- linux-3.5.0.orig/arch/powerpc/boot/dts/p1022ds.dtsi +++ linux-3.5.0/arch/powerpc/boot/dts/p1022ds.dtsi @@ -33,22 +33,6 @@ */ &board_lbc { - /* - * This node is used to access the pixis via "indirect" mode, - * which is done by writing the pixis register index to chip - * select 0 and the value to/from chip select 1. Indirect - * mode is the only way to access the pixis when DIU video - * is enabled. Note that this assumes that the first column - * of the 'ranges' property above is the chip select number. - */ - board-control@0,0 { - compatible = "fsl,p1022ds-indirect-pixis"; - reg = <0x0 0x0 1 /* CS0 */ - 0x1 0x0 1>; /* CS1 */ - interrupt-parent = <&mpic>; - interrupts = <8 0 0 0>; - }; - nor@0,0 { #address-cells = <1>; #size-cells = <1>; --- linux-3.5.0.orig/arch/powerpc/kernel/time.c +++ linux-3.5.0/arch/powerpc/kernel/time.c @@ -750,13 +750,8 @@ void update_vsyscall_tz(void) { - /* Make userspace gettimeofday spin until we're done. */ - ++vdso_data->tb_update_count; - smp_mb(); vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; vdso_data->tz_dsttime = sys_tz.tz_dsttime; - smp_mb(); - ++vdso_data->tb_update_count; } static void __init clocksource_init(void) --- linux-3.5.0.orig/arch/powerpc/kernel/process.c +++ linux-3.5.0/arch/powerpc/kernel/process.c @@ -802,16 +802,8 @@ #endif /* CONFIG_PPC_STD_MMU_64 */ #ifdef CONFIG_PPC64 if (cpu_has_feature(CPU_FTR_DSCR)) { - if (current->thread.dscr_inherit) { - p->thread.dscr_inherit = 1; - p->thread.dscr = current->thread.dscr; - } else if (0 != dscr_default) { - p->thread.dscr_inherit = 1; - p->thread.dscr = dscr_default; - } else { - p->thread.dscr_inherit = 0; - p->thread.dscr = 0; - } + p->thread.dscr_inherit = current->thread.dscr_inherit; + p->thread.dscr = current->thread.dscr; } #endif --- linux-3.5.0.orig/arch/powerpc/kernel/smp.c +++ linux-3.5.0/arch/powerpc/kernel/smp.c @@ -197,8 +197,15 @@ struct cpu_messages *info = &per_cpu(ipi_message, cpu); char *message = (char *)&info->messages; + /* + * Order previous accesses before accesses in the IPI handler. + */ + smp_mb(); message[msg] = 1; - mb(); + /* + * cause_ipi functions are required to include a full barrier + * before doing whatever causes the IPI. + */ smp_ops->cause_ipi(cpu, info->data); } @@ -210,7 +217,7 @@ mb(); /* order any irq clear */ do { - all = xchg_local(&info->messages, 0); + all = xchg(&info->messages, 0); #ifdef __BIG_ENDIAN if (all & (1 << (24 - 8 * PPC_MSG_CALL_FUNCTION))) --- linux-3.5.0.orig/arch/powerpc/kernel/entry_64.S +++ linux-3.5.0/arch/powerpc/kernel/entry_64.S @@ -369,6 +369,12 @@ li r3,0 b syscall_exit + .section ".toc","aw" +DSCR_DEFAULT: + .tc dscr_default[TC],dscr_default + + .section ".text" + /* * This routine switches between two different tasks. The process * state of one is saved on its kernel stack. Then the state @@ -508,9 +514,6 @@ mr r1,r8 /* start using new stack pointer */ std r7,PACAKSAVE(r13) - ld r6,_CCR(r1) - mtcrf 0xFF,r6 - #ifdef CONFIG_ALTIVEC BEGIN_FTR_SECTION ld r0,THREAD_VRSAVE(r4) @@ -519,14 +522,22 @@ #endif /* CONFIG_ALTIVEC */ #ifdef CONFIG_PPC64 BEGIN_FTR_SECTION + lwz r6,THREAD_DSCR_INHERIT(r4) + ld r7,DSCR_DEFAULT@toc(2) ld r0,THREAD_DSCR(r4) - cmpd r0,r25 - beq 1f + cmpwi r6,0 + bne 1f + ld r0,0(r7) +1: cmpd r0,r25 + beq 2f mtspr SPRN_DSCR,r0 -1: +2: END_FTR_SECTION_IFSET(CPU_FTR_DSCR) #endif + ld r6,_CCR(r1) + mtcrf 0xFF,r6 + /* r3-r13 are destroyed -- Cort */ REST_8GPRS(14, r1) REST_10GPRS(22, r1) @@ -605,6 +616,19 @@ ld r4,TI_FLAGS(r9) andi. r0,r4,_TIF_NEED_RESCHED bne 1b + + /* + * arch_local_irq_restore() from preempt_schedule_irq above may + * enable hard interrupt but we really should disable interrupts + * when we return from the interrupt, and so that we don't get + * interrupted after loading SRR0/1. + */ +#ifdef CONFIG_PPC_BOOK3E + wrteei 0 +#else + ld r10,PACAKMSR(r13) /* Get kernel MSR without EE */ + mtmsrd r10,1 /* Update machine state */ +#endif /* CONFIG_PPC_BOOK3E */ #endif /* CONFIG_PREEMPT */ .globl fast_exc_return_irq --- linux-3.5.0.orig/arch/powerpc/kernel/of_platform.c +++ linux-3.5.0/arch/powerpc/kernel/of_platform.c @@ -95,6 +95,9 @@ /* Add probed PCI devices to the device model */ pci_bus_add_devices(phb->bus); + /* sysfs files should only be added after devices are added */ + eeh_add_sysfs_files(phb->bus); + return 0; } --- linux-3.5.0.orig/arch/powerpc/kernel/pci-common.c +++ linux-3.5.0/arch/powerpc/kernel/pci-common.c @@ -1458,11 +1458,14 @@ pcibios_allocate_bus_resources(bus); pcibios_claim_one_bus(bus); + /* Fixup EEH */ + eeh_add_device_tree_late(bus); + /* Add new devices to global lists. Register in proc, sysfs. */ pci_bus_add_devices(bus); - /* Fixup EEH */ - eeh_add_device_tree_late(bus); + /* sysfs files should only be added after devices are added */ + eeh_add_sysfs_files(bus); } EXPORT_SYMBOL_GPL(pcibios_finish_adding_to_bus); --- linux-3.5.0.orig/arch/powerpc/kernel/ftrace.c +++ linux-3.5.0/arch/powerpc/kernel/ftrace.c @@ -245,9 +245,9 @@ /* * On PPC32 the trampoline looks like: - * 0x3d, 0x60, 0x00, 0x00 lis r11,sym@ha - * 0x39, 0x6b, 0x00, 0x00 addi r11,r11,sym@l - * 0x7d, 0x69, 0x03, 0xa6 mtctr r11 + * 0x3d, 0x80, 0x00, 0x00 lis r12,sym@ha + * 0x39, 0x8c, 0x00, 0x00 addi r12,r12,sym@l + * 0x7d, 0x89, 0x03, 0xa6 mtctr r12 * 0x4e, 0x80, 0x04, 0x20 bctr */ @@ -262,9 +262,9 @@ pr_devel(" %08x %08x ", jmp[0], jmp[1]); /* verify that this is what we expect it to be */ - if (((jmp[0] & 0xffff0000) != 0x3d600000) || - ((jmp[1] & 0xffff0000) != 0x396b0000) || - (jmp[2] != 0x7d6903a6) || + if (((jmp[0] & 0xffff0000) != 0x3d800000) || + ((jmp[1] & 0xffff0000) != 0x398c0000) || + (jmp[2] != 0x7d8903a6) || (jmp[3] != 0x4e800420)) { printk(KERN_ERR "Not a trampoline\n"); return -EINVAL; --- linux-3.5.0.orig/arch/powerpc/kernel/asm-offsets.c +++ linux-3.5.0/arch/powerpc/kernel/asm-offsets.c @@ -76,6 +76,7 @@ DEFINE(SIGSEGV, SIGSEGV); DEFINE(NMI_MASK, NMI_MASK); DEFINE(THREAD_DSCR, offsetof(struct thread_struct, dscr)); + DEFINE(THREAD_DSCR_INHERIT, offsetof(struct thread_struct, dscr_inherit)); #else DEFINE(THREAD_INFO, offsetof(struct task_struct, stack)); #endif /* CONFIG_PPC64 */ --- linux-3.5.0.orig/arch/powerpc/kernel/dbell.c +++ linux-3.5.0/arch/powerpc/kernel/dbell.c @@ -28,6 +28,8 @@ void doorbell_cause_ipi(int cpu, unsigned long data) { + /* Order previous accesses vs. msgsnd, which is treated as a store */ + mb(); ppc_msgsnd(PPC_DBELL, 0, data); } --- linux-3.5.0.orig/arch/powerpc/kernel/machine_kexec_64.c +++ linux-3.5.0/arch/powerpc/kernel/machine_kexec_64.c @@ -162,6 +162,8 @@ static void kexec_smp_down(void *arg) { local_irq_disable(); + hard_irq_disable(); + mb(); /* make sure our irqs are disabled before we say they are */ get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF; while(kexec_all_irq_disabled == 0) @@ -244,6 +246,8 @@ wake_offline_cpus(); smp_call_function(kexec_smp_down, NULL, /* wait */0); local_irq_disable(); + hard_irq_disable(); + mb(); /* make sure IRQs are disabled before we say they are */ get_paca()->kexec_state = KEXEC_STATE_IRQS_OFF; @@ -281,6 +285,7 @@ if (ppc_md.kexec_cpu_down) ppc_md.kexec_cpu_down(0, 0); local_irq_disable(); + hard_irq_disable(); } #endif /* SMP */ --- linux-3.5.0.orig/arch/powerpc/kernel/traps.c +++ linux-3.5.0/arch/powerpc/kernel/traps.c @@ -972,8 +972,9 @@ cpu_has_feature(CPU_FTR_DSCR)) { PPC_WARN_EMULATED(mtdscr, regs); rd = (instword >> 21) & 0x1f; - mtspr(SPRN_DSCR, regs->gpr[rd]); + current->thread.dscr = regs->gpr[rd]; current->thread.dscr_inherit = 1; + mtspr(SPRN_DSCR, current->thread.dscr); return 0; } #endif --- linux-3.5.0.orig/arch/powerpc/kernel/sysfs.c +++ linux-3.5.0/arch/powerpc/kernel/sysfs.c @@ -194,6 +194,14 @@ return sprintf(buf, "%lx\n", dscr_default); } +static void update_dscr(void *dummy) +{ + if (!current->thread.dscr_inherit) { + current->thread.dscr = dscr_default; + mtspr(SPRN_DSCR, dscr_default); + } +} + static ssize_t __used store_dscr_default(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) @@ -206,6 +214,8 @@ return -EINVAL; dscr_default = val; + on_each_cpu(update_dscr, NULL, 1); + return count; } --- linux-3.5.0.orig/arch/powerpc/kernel/head_64.S +++ linux-3.5.0/arch/powerpc/kernel/head_64.S @@ -422,7 +422,7 @@ tovirt(r6,r6) /* on booke, we already run at PAGE_OFFSET */ #endif -#ifdef CONFIG_CRASH_DUMP +#ifdef CONFIG_RELOCATABLE /* * Check if the kernel has to be running as relocatable kernel based on the * variable __run_at_load, if it is set the kernel is treated as relocatable --- linux-3.5.0.orig/arch/powerpc/platforms/85xx/p1022_ds.c +++ linux-3.5.0/arch/powerpc/platforms/85xx/p1022_ds.c @@ -27,6 +27,7 @@ #include #include #include +#include #include "smp.h" #include "mpc85xx.h" @@ -142,17 +143,74 @@ { } +struct fsl_law { + u32 lawbar; + u32 reserved1; + u32 lawar; + u32 reserved[5]; +}; + +#define LAWBAR_MASK 0x00F00000 +#define LAWBAR_SHIFT 12 + +#define LAWAR_EN 0x80000000 +#define LAWAR_TGT_MASK 0x01F00000 +#define LAW_TRGT_IF_LBC (0x04 << 20) + +#define LAWAR_MASK (LAWAR_EN | LAWAR_TGT_MASK) +#define LAWAR_MATCH (LAWAR_EN | LAW_TRGT_IF_LBC) + +#define BR_BA 0xFFFF8000 + +/* + * Map a BRx value to a physical address + * + * The localbus BRx registers only store the lower 32 bits of the address. To + * obtain the upper four bits, we need to scan the LAW table. The entry which + * maps to the localbus will contain the upper four bits. + */ +static phys_addr_t lbc_br_to_phys(const void *ecm, unsigned int count, u32 br) +{ +#ifndef CONFIG_PHYS_64BIT + /* + * If we only have 32-bit addressing, then the BRx address *is* the + * physical address. + */ + return br & BR_BA; +#else + const struct fsl_law *law = ecm + 0xc08; + unsigned int i; + + for (i = 0; i < count; i++) { + u64 lawbar = in_be32(&law[i].lawbar); + u32 lawar = in_be32(&law[i].lawar); + + if ((lawar & LAWAR_MASK) == LAWAR_MATCH) + /* Extract the upper four bits */ + return (br & BR_BA) | ((lawbar & LAWBAR_MASK) << 12); + } + + return 0; +#endif +} + /** * p1022ds_set_monitor_port: switch the output to a different monitor port - * */ static void p1022ds_set_monitor_port(enum fsl_diu_monitor_port port) { struct device_node *guts_node; - struct device_node *indirect_node = NULL; + struct device_node *lbc_node = NULL; + struct device_node *law_node = NULL; struct ccsr_guts __iomem *guts; + struct fsl_lbc_regs *lbc = NULL; + void *ecm = NULL; u8 __iomem *lbc_lcs0_ba = NULL; u8 __iomem *lbc_lcs1_ba = NULL; + phys_addr_t cs0_addr, cs1_addr; + u32 br0, or0, br1, or1; + const __be32 *iprop; + unsigned int num_laws; u8 b; /* Map the global utilities registers. */ @@ -168,22 +226,99 @@ goto exit; } - indirect_node = of_find_compatible_node(NULL, NULL, - "fsl,p1022ds-indirect-pixis"); - if (!indirect_node) { - pr_err("p1022ds: missing pixis indirect mode node\n"); + lbc_node = of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); + if (!lbc_node) { + pr_err("p1022ds: missing localbus node\n"); goto exit; } - lbc_lcs0_ba = of_iomap(indirect_node, 0); - if (!lbc_lcs0_ba) { - pr_err("p1022ds: could not map localbus chip select 0\n"); + lbc = of_iomap(lbc_node, 0); + if (!lbc) { + pr_err("p1022ds: could not map localbus node\n"); + goto exit; + } + + law_node = of_find_compatible_node(NULL, NULL, "fsl,ecm-law"); + if (!law_node) { + pr_err("p1022ds: missing local access window node\n"); + goto exit; + } + + ecm = of_iomap(law_node, 0); + if (!ecm) { + pr_err("p1022ds: could not map local access window node\n"); + goto exit; + } + + iprop = of_get_property(law_node, "fsl,num-laws", 0); + if (!iprop) { + pr_err("p1022ds: LAW node is missing fsl,num-laws property\n"); goto exit; } + num_laws = be32_to_cpup(iprop); - lbc_lcs1_ba = of_iomap(indirect_node, 1); + /* + * Indirect mode requires both BR0 and BR1 to be set to "GPCM", + * otherwise writes to these addresses won't actually appear on the + * local bus, and so the PIXIS won't see them. + * + * In FCM mode, writes go to the NAND controller, which does not pass + * them to the localbus directly. So we force BR0 and BR1 into GPCM + * mode, since we don't care about what's behind the localbus any + * more. + */ + br0 = in_be32(&lbc->bank[0].br); + br1 = in_be32(&lbc->bank[1].br); + or0 = in_be32(&lbc->bank[0].or); + or1 = in_be32(&lbc->bank[1].or); + + /* Make sure CS0 and CS1 are programmed */ + if (!(br0 & BR_V) || !(br1 & BR_V)) { + pr_err("p1022ds: CS0 and/or CS1 is not programmed\n"); + goto exit; + } + + /* + * Use the existing BRx/ORx values if it's already GPCM. Otherwise, + * force the values to simple 32KB GPCM windows with the most + * conservative timing. + */ + if ((br0 & BR_MSEL) != BR_MS_GPCM) { + br0 = (br0 & BR_BA) | BR_V; + or0 = 0xFFFF8000 | 0xFF7; + out_be32(&lbc->bank[0].br, br0); + out_be32(&lbc->bank[0].or, or0); + } + if ((br1 & BR_MSEL) != BR_MS_GPCM) { + br1 = (br1 & BR_BA) | BR_V; + or1 = 0xFFFF8000 | 0xFF7; + out_be32(&lbc->bank[1].br, br1); + out_be32(&lbc->bank[1].or, or1); + } + + cs0_addr = lbc_br_to_phys(ecm, num_laws, br0); + if (!cs0_addr) { + pr_err("p1022ds: could not determine physical address for CS0" + " (BR0=%08x)\n", br0); + goto exit; + } + cs1_addr = lbc_br_to_phys(ecm, num_laws, br1); + if (!cs0_addr) { + pr_err("p1022ds: could not determine physical address for CS1" + " (BR1=%08x)\n", br1); + goto exit; + } + + lbc_lcs0_ba = ioremap(cs0_addr, 1); + if (!lbc_lcs0_ba) { + pr_err("p1022ds: could not ioremap CS0 address %llx\n", + (unsigned long long)cs0_addr); + goto exit; + } + lbc_lcs1_ba = ioremap(cs1_addr, 1); if (!lbc_lcs1_ba) { - pr_err("p1022ds: could not map localbus chip select 1\n"); + pr_err("p1022ds: could not ioremap CS1 address %llx\n", + (unsigned long long)cs1_addr); goto exit; } @@ -254,10 +389,15 @@ iounmap(lbc_lcs1_ba); if (lbc_lcs0_ba) iounmap(lbc_lcs0_ba); + if (lbc) + iounmap(lbc); + if (ecm) + iounmap(ecm); if (guts) iounmap(guts); - of_node_put(indirect_node); + of_node_put(law_node); + of_node_put(lbc_node); of_node_put(guts_node); } @@ -355,6 +495,8 @@ prom_update_property(np, new, old); else prom_add_property(np, new); + + pr_info("p1022ds: disabling %s node\n", np->full_name); } /* TRUE if there is a "video=fslfb" command-line parameter. */ @@ -419,28 +561,46 @@ diu_ops.valid_monitor_port = p1022ds_valid_monitor_port; /* - * Disable the NOR flash node if there is video=fslfb... command-line - * parameter. When the DIU is active, NOR flash is unavailable, so we - * have to disable the node before the MTD driver loads. + * Disable the NOR and NAND flash nodes if there is video=fslfb... + * command-line parameter. When the DIU is active, the localbus is + * unavailable, so we have to disable these nodes before the MTD + * driver loads. */ if (fslfb) { struct device_node *np = of_find_compatible_node(NULL, NULL, "fsl,p1022-elbc"); if (np) { - np = of_find_compatible_node(np, NULL, "cfi-flash"); - if (np) { + struct device_node *np2; + + of_node_get(np); + np2 = of_find_compatible_node(np, NULL, "cfi-flash"); + if (np2) { static struct property nor_status = { .name = "status", .value = "disabled", .length = sizeof("disabled"), }; - pr_info("p1022ds: disabling %s node", - np->full_name); - disable_one_node(np, &nor_status); - of_node_put(np); + disable_one_node(np2, &nor_status); + of_node_put(np2); + } + + of_node_get(np); + np2 = of_find_compatible_node(np, NULL, + "fsl,elbc-fcm-nand"); + if (np2) { + static struct property nand_status = { + .name = "status", + .value = "disabled", + .length = sizeof("disabled"), + }; + + disable_one_node(np2, &nand_status); + of_node_put(np2); } + + of_node_put(np); } } --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/eeh_event.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh_event.c @@ -85,8 +85,10 @@ set_current_state(TASK_INTERRUPTIBLE); /* Don't add to load average */ edev = handle_eeh_events(event); - eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING); - pci_dev_put(edev->pdev); + if (edev) { + eeh_clear_slot(eeh_dev_to_of_node(edev), EEH_MODE_RECOVERING); + pci_dev_put(edev->pdev); + } kfree(event); mutex_unlock(&eeh_event_mutex); --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/eeh_driver.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh_driver.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -47,6 +48,41 @@ return ""; } +/** + * eeh_pcid_get - Get the PCI device driver + * @pdev: PCI device + * + * The function is used to retrieve the PCI device driver for + * the indicated PCI device. Besides, we will increase the reference + * of the PCI device driver to prevent that being unloaded on + * the fly. Otherwise, kernel crash would be seen. + */ +static inline struct pci_driver *eeh_pcid_get(struct pci_dev *pdev) +{ + if (!pdev || !pdev->driver) + return NULL; + + if (!try_module_get(pdev->driver->driver.owner)) + return NULL; + + return pdev->driver; +} + +/** + * eeh_pcid_put - Dereference on the PCI device driver + * @pdev: PCI device + * + * The function is called to do dereference on the PCI device + * driver of the indicated PCI device. + */ +static inline void eeh_pcid_put(struct pci_dev *pdev) +{ + if (!pdev || !pdev->driver) + return; + + module_put(pdev->driver->driver.owner); +} + #if 0 static void print_device_node_tree(struct pci_dn *pdn, int dent) { @@ -126,18 +162,20 @@ static int eeh_report_error(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_frozen; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_disable_irq(dev); if (!driver->err_handler || - !driver->err_handler->error_detected) + !driver->err_handler->error_detected) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->error_detected(dev, pci_channel_io_frozen); @@ -145,6 +183,7 @@ if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; if (*res == PCI_ERS_RESULT_NONE) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -160,12 +199,16 @@ static int eeh_report_mmio_enabled(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; - if (!driver || - !driver->err_handler || - !driver->err_handler->mmio_enabled) + driver = eeh_pcid_get(dev); + if (!driver) return 0; + + if (!driver->err_handler || + !driver->err_handler->mmio_enabled) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->mmio_enabled(dev); @@ -173,6 +216,7 @@ if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; if (*res == PCI_ERS_RESULT_NONE) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -189,18 +233,20 @@ static int eeh_report_reset(struct pci_dev *dev, void *userdata) { enum pci_ers_result rc, *res = userdata; - struct pci_driver *driver = dev->driver; - - if (!driver) - return 0; + struct pci_driver *driver; dev->error_state = pci_channel_io_normal; + driver = eeh_pcid_get(dev); + if (!driver) return 0; + eeh_enable_irq(dev); if (!driver->err_handler || - !driver->err_handler->slot_reset) + !driver->err_handler->slot_reset) { + eeh_pcid_put(dev); return 0; + } rc = driver->err_handler->slot_reset(dev); if ((*res == PCI_ERS_RESULT_NONE) || @@ -208,6 +254,7 @@ if (*res == PCI_ERS_RESULT_DISCONNECT && rc == PCI_ERS_RESULT_NEED_RESET) *res = rc; + eeh_pcid_put(dev); return 0; } @@ -222,21 +269,24 @@ */ static int eeh_report_resume(struct pci_dev *dev, void *userdata) { - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_normal; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_enable_irq(dev); if (!driver->err_handler || - !driver->err_handler->resume) + !driver->err_handler->resume) { + eeh_pcid_put(dev); return 0; + } driver->err_handler->resume(dev); + eeh_pcid_put(dev); return 0; } @@ -250,21 +300,24 @@ */ static int eeh_report_failure(struct pci_dev *dev, void *userdata) { - struct pci_driver *driver = dev->driver; + struct pci_driver *driver; dev->error_state = pci_channel_io_perm_failure; - if (!driver) - return 0; + driver = eeh_pcid_get(dev); + if (!driver) return 0; eeh_disable_irq(dev); if (!driver->err_handler || - !driver->err_handler->error_detected) + !driver->err_handler->error_detected) { + eeh_pcid_put(dev); return 0; + } driver->err_handler->error_detected(dev, pci_channel_io_perm_failure); + eeh_pcid_put(dev); return 0; } --- linux-3.5.0.orig/arch/powerpc/platforms/pseries/eeh.c +++ linux-3.5.0/arch/powerpc/platforms/pseries/eeh.c @@ -1029,7 +1029,7 @@ { struct pci_controller *phb; - if (!dn || !of_node_to_eeh_dev(dn)) + if (!of_node_to_eeh_dev(dn)) return; phb = of_node_to_eeh_dev(dn)->phb; @@ -1088,7 +1088,6 @@ dev->dev.archdata.edev = edev; pci_addr_cache_insert_device(dev); - eeh_sysfs_add_device(dev); } /** @@ -1115,6 +1114,29 @@ EXPORT_SYMBOL_GPL(eeh_add_device_tree_late); /** + * eeh_add_sysfs_files - Add EEH sysfs files for the indicated PCI bus + * @bus: PCI bus + * + * This routine must be used to add EEH sysfs files for PCI + * devices which are attached to the indicated PCI bus. The PCI bus + * is added after system boot through hotplug or dlpar. + */ +void eeh_add_sysfs_files(struct pci_bus *bus) +{ + struct pci_dev *dev; + + list_for_each_entry(dev, &bus->devices, bus_list) { + eeh_sysfs_add_device(dev); + if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE) { + struct pci_bus *subbus = dev->subordinate; + if (subbus) + eeh_add_sysfs_files(subbus); + } + } +} +EXPORT_SYMBOL_GPL(eeh_add_sysfs_files); + +/** * eeh_remove_device - Undo EEH setup for the indicated pci device * @dev: pci device to be removed * --- linux-3.5.0.orig/arch/powerpc/platforms/40x/ppc40x_simple.c +++ linux-3.5.0/arch/powerpc/platforms/40x/ppc40x_simple.c @@ -57,7 +57,8 @@ "amcc,makalu", "apm,klondike", "est,hotfoot", - "plathome,obs600" + "plathome,obs600", + NULL }; static int __init ppc40x_probe(void) --- linux-3.5.0.orig/arch/tile/Makefile +++ linux-3.5.0/arch/tile/Makefile @@ -26,6 +26,10 @@ endif endif +# The tile compiler may emit .eh_frame information for backtracing. +# In kernel modules, this causes load failures due to unsupported relocations. +KBUILD_CFLAGS += -fno-asynchronous-unwind-tables + ifneq ($(CONFIG_DEBUG_EXTRA_FLAGS),"") KBUILD_CFLAGS += $(CONFIG_DEBUG_EXTRA_FLAGS) endif --- linux-3.5.0.orig/arch/xtensa/kernel/process.c +++ linux-3.5.0/arch/xtensa/kernel/process.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -110,8 +111,10 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) platform_idle(); + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/m32r/kernel/process.c +++ linux-3.5.0/arch/m32r/kernel/process.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -82,6 +83,7 @@ { /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void) = pm_idle; @@ -90,6 +92,7 @@ idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } } --- linux-3.5.0.orig/arch/mn10300/Makefile +++ linux-3.5.0/arch/mn10300/Makefile @@ -26,7 +26,7 @@ PROCESSOR := unset UNIT := unset -KBUILD_CFLAGS += -mam33 -mmem-funcs -DCPU=AM33 +KBUILD_CFLAGS += -mam33 -DCPU=AM33 $(call cc-option,-mmem-funcs,) KBUILD_AFLAGS += -mam33 -DCPU=AM33 ifeq ($(CONFIG_MN10300_CURRENT_IN_E2),y) --- linux-3.5.0.orig/arch/mn10300/kernel/process.c +++ linux-3.5.0/arch/mn10300/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -107,6 +108,7 @@ { /* endless idle loop with no priority at all */ for (;;) { + rcu_idle_enter(); while (!need_resched()) { void (*idle)(void); @@ -121,6 +123,7 @@ } idle(); } + rcu_idle_exit(); schedule_preempt_disabled(); } --- linux-3.5.0.orig/arch/s390/kvm/interrupt.c +++ linux-3.5.0/arch/s390/kvm/interrupt.c @@ -390,7 +390,7 @@ return 0; } - sltime = ((vcpu->arch.sie_block->ckc - now)*125)>>9; + sltime = tod_to_ns(vcpu->arch.sie_block->ckc - now); hrtimer_start(&vcpu->arch.ckc_timer, ktime_set (0, sltime) , HRTIMER_MODE_REL); VCPU_EVENT(vcpu, 5, "enabled wait via clock comparator: %llx ns", sltime); --- linux-3.5.0.orig/arch/s390/kvm/kvm-s390.c +++ linux-3.5.0/arch/s390/kvm/kvm-s390.c @@ -752,6 +752,14 @@ } 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_regs(&vcpu->arch.guest_fpregs); + 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; @@ -981,7 +989,7 @@ } memcpy(facilities, S390_lowcore.stfle_fac_list, 16); facilities[0] &= 0xff00fff3f47c0000ULL; - facilities[1] &= 0x201c000000000000ULL; + facilities[1] &= 0x001c000000000000ULL; return 0; } --- linux-3.5.0.orig/arch/s390/include/asm/ptrace.h +++ linux-3.5.0/arch/s390/include/asm/ptrace.h @@ -240,7 +240,7 @@ #define PSW_MASK_EA 0x00000000UL #define PSW_MASK_BA 0x00000000UL -#define PSW_MASK_USER 0x00003F00UL +#define PSW_MASK_USER 0x0000FF00UL #define PSW_ADDR_AMODE 0x80000000UL #define PSW_ADDR_INSN 0x7FFFFFFFUL @@ -269,7 +269,7 @@ #define PSW_MASK_EA 0x0000000100000000UL #define PSW_MASK_BA 0x0000000080000000UL -#define PSW_MASK_USER 0x00003F0180000000UL +#define PSW_MASK_USER 0x0000FF0180000000UL #define PSW_ADDR_AMODE 0x0000000000000000UL #define PSW_ADDR_INSN 0xFFFFFFFFFFFFFFFFUL --- linux-3.5.0.orig/arch/s390/include/asm/mmu_context.h +++ linux-3.5.0/arch/s390/include/asm/mmu_context.h @@ -13,7 +13,6 @@ #include #include #include -#include static inline int init_new_context(struct task_struct *tsk, struct mm_struct *mm) @@ -93,4 +92,17 @@ switch_mm(prev, next, current); } +static inline void arch_dup_mmap(struct mm_struct *oldmm, + struct mm_struct *mm) +{ +#ifdef CONFIG_64BIT + if (oldmm->context.asce_limit < mm->context.asce_limit) + crst_table_downgrade(mm, oldmm->context.asce_limit); +#endif +} + +static inline void arch_exit_mmap(struct mm_struct *mm) +{ +} + #endif /* __S390_MMU_CONTEXT_H */ --- linux-3.5.0.orig/arch/s390/include/asm/compat.h +++ linux-3.5.0/arch/s390/include/asm/compat.h @@ -20,7 +20,7 @@ #define PSW32_MASK_CC 0x00003000UL #define PSW32_MASK_PM 0x00000f00UL -#define PSW32_MASK_USER 0x00003F00UL +#define PSW32_MASK_USER 0x0000FF00UL #define PSW32_ADDR_AMODE 0x80000000UL #define PSW32_ADDR_INSN 0x7FFFFFFFUL --- linux-3.5.0.orig/arch/s390/include/asm/processor.h +++ linux-3.5.0/arch/s390/include/asm/processor.h @@ -122,7 +122,9 @@ regs->psw.mask = psw_user_bits | PSW_MASK_BA; \ regs->psw.addr = new_psw | PSW_ADDR_AMODE; \ regs->gprs[15] = new_stackp; \ + __tlb_flush_mm(current->mm); \ crst_table_downgrade(current->mm, 1UL << 31); \ + update_mm(current->mm, current); \ } while (0) /* Forward declaration, a strange C thing */ --- linux-3.5.0.orig/arch/s390/include/asm/timex.h +++ linux-3.5.0/arch/s390/include/asm/timex.h @@ -130,4 +130,32 @@ return get_clock_xt() - sched_clock_base_cc; } +/** + * tod_to_ns - convert a TOD format value to nanoseconds + * @todval: to be converted TOD format value + * Returns: number of nanoseconds that correspond to the TOD format value + * + * Converting a 64 Bit TOD format value to nanoseconds means that the value + * must be divided by 4.096. In order to achieve that we multiply with 125 + * and divide by 512: + * + * ns = (todval * 125) >> 9; + * + * In order to avoid an overflow with the multiplication we can rewrite this. + * With a split todval == 2^32 * th + tl (th upper 32 bits, tl lower 32 bits) + * we end up with + * + * ns = ((2^32 * th + tl) * 125 ) >> 9; + * -> ns = (2^23 * th * 125) + ((tl * 125) >> 9); + * + */ +static inline unsigned long long tod_to_ns(unsigned long long todval) +{ + unsigned long long ns; + + ns = ((todval >> 32) << 23) * 125; + ns += ((todval & 0xffffffff) * 125) >> 9; + return ns; +} + #endif --- linux-3.5.0.orig/arch/s390/mm/mmap.c +++ linux-3.5.0/arch/s390/mm/mmap.c @@ -105,9 +105,15 @@ int s390_mmap_check(unsigned long addr, unsigned long len) { + int rc; + if (!is_compat_task() && - len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) - return crst_table_upgrade(current->mm, 1UL << 53); + len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) { + rc = crst_table_upgrade(current->mm, 1UL << 53); + if (rc) + return rc; + update_mm(current->mm, current); + } return 0; } @@ -127,6 +133,7 @@ rc = crst_table_upgrade(mm, 1UL << 53); if (rc) return (unsigned long) rc; + update_mm(mm, current); area = arch_get_unmapped_area(filp, addr, len, pgoff, flags); } return area; @@ -149,6 +156,7 @@ rc = crst_table_upgrade(mm, 1UL << 53); if (rc) return (unsigned long) rc; + update_mm(mm, current); area = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags); } --- linux-3.5.0.orig/arch/s390/mm/gup.c +++ linux-3.5.0/arch/s390/mm/gup.c @@ -183,7 +183,7 @@ addr = start; len = (unsigned long) nr_pages << PAGE_SHIFT; end = start + len; - if (end < start) + if ((end < start) || (end > TASK_SIZE)) goto slow_irqon; /* --- linux-3.5.0.orig/arch/s390/mm/pgtable.c +++ linux-3.5.0/arch/s390/mm/pgtable.c @@ -85,7 +85,6 @@ crst_table_free(mm, table); if (mm->context.asce_limit < limit) goto repeat; - update_mm(mm, current); return 0; } @@ -93,9 +92,6 @@ { pgd_t *pgd; - if (mm->context.asce_limit <= limit) - return; - __tlb_flush_mm(mm); while (mm->context.asce_limit > limit) { pgd = mm->pgd; switch (pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) { @@ -118,7 +114,6 @@ mm->task_size = mm->context.asce_limit; crst_table_free(mm, (unsigned long *) pgd); } - update_mm(mm, current); } #endif --- linux-3.5.0.orig/arch/s390/mm/fault.c +++ linux-3.5.0/arch/s390/mm/fault.c @@ -443,6 +443,7 @@ struct pt_regs regs; int access, fault; + /* Emulate a uaccess fault from kernel mode. */ regs.psw.mask = psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK; if (!irqs_disabled()) regs.psw.mask |= PSW_MASK_IO | PSW_MASK_EXT; @@ -452,12 +453,12 @@ regs.int_parm_long = (uaddr & PAGE_MASK) | 2; access = write ? VM_WRITE : VM_READ; fault = do_exception(®s, access); - if (unlikely(fault)) { - if (fault & VM_FAULT_OOM) - return -EFAULT; - else if (fault & VM_FAULT_SIGBUS) - do_sigbus(®s); - } + /* + * Since the fault happened in kernel mode while performing a uaccess + * all we need to do now is emulating a fixup in case "fault" is not + * zero. + * For the calling uaccess functions this results always in -EFAULT. + */ return fault ? -EFAULT : 0; } --- linux-3.5.0.orig/arch/s390/boot/compressed/vmlinux.lds.S +++ linux-3.5.0/arch/s390/boot/compressed/vmlinux.lds.S @@ -5,7 +5,7 @@ OUTPUT_ARCH(s390:64-bit) #else OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") -OUTPUT_ARCH(s390) +OUTPUT_ARCH(s390:31-bit) #endif ENTRY(startup) --- linux-3.5.0.orig/arch/s390/kernel/time.c +++ linux-3.5.0/arch/s390/kernel/time.c @@ -64,7 +64,7 @@ */ unsigned long long notrace __kprobes sched_clock(void) { - return (get_clock_monotonic() * 125) >> 9; + return tod_to_ns(get_clock_monotonic()); } /* @@ -121,6 +121,9 @@ nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires)); do_div(nsecs, 125); S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9); + /* Program the maximum value if we have an overflow (== year 2042) */ + if (unlikely(S390_lowcore.clock_comparator < sched_clock_base_cc)) + S390_lowcore.clock_comparator = -1ULL; set_clock_comparator(S390_lowcore.clock_comparator); return 0; } --- linux-3.5.0.orig/arch/s390/kernel/vmlinux.lds.S +++ linux-3.5.0/arch/s390/kernel/vmlinux.lds.S @@ -8,7 +8,7 @@ #ifndef CONFIG_64BIT OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390") -OUTPUT_ARCH(s390) +OUTPUT_ARCH(s390:31-bit) ENTRY(startup) jiffies = jiffies_64 + 4; #else --- linux-3.5.0.orig/arch/s390/kernel/smp.c +++ linux-3.5.0/arch/s390/kernel/smp.c @@ -984,14 +984,11 @@ unsigned int cpu = (unsigned int)(long)hcpu; struct cpu *c = &pcpu_devices[cpu].cpu; struct device *s = &c->dev; - struct s390_idle_data *idle; int err = 0; switch (action) { case CPU_ONLINE: case CPU_ONLINE_FROZEN: - idle = &per_cpu(s390_idle, cpu); - memset(idle, 0, sizeof(struct s390_idle_data)); err = sysfs_create_group(&s->kobj, &cpu_online_attr_group); break; case CPU_DEAD: --- linux-3.5.0.orig/arch/s390/kernel/compat_wrapper.S +++ linux-3.5.0/arch/s390/kernel/compat_wrapper.S @@ -1636,7 +1636,7 @@ llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_readv + jg compat_sys_process_vm_readv ENTRY(compat_sys_process_vm_writev_wrapper) lgfr %r2,%r2 # compat_pid_t @@ -1646,4 +1646,4 @@ llgfr %r6,%r6 # unsigned long llgf %r0,164(%r15) # unsigned long stg %r0,160(%r15) - jg sys_process_vm_writev + jg compat_sys_process_vm_writev --- linux-3.5.0.orig/arch/s390/kernel/compat_linux.c +++ linux-3.5.0/arch/s390/kernel/compat_linux.c @@ -622,7 +622,6 @@ return -EFAULT; if (a.offset & ~PAGE_MASK) return -EINVAL; - a.addr = (unsigned long) compat_ptr(a.addr); return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset >> PAGE_SHIFT); } @@ -633,7 +632,6 @@ if (copy_from_user(&a, arg, sizeof(a))) return -EFAULT; - a.addr = (unsigned long) compat_ptr(a.addr); return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); } --- linux-3.5.0.orig/arch/s390/kernel/compat_signal.c +++ linux-3.5.0/arch/s390/kernel/compat_signal.c @@ -311,6 +311,10 @@ regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) | (__u64)(regs32.psw.mask & PSW32_MASK_USER) << 32 | (__u64)(regs32.psw.addr & PSW32_ADDR_AMODE); + /* Check for invalid user address space control. */ + if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC)) + regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__u64)(regs32.psw.addr & PSW32_ADDR_INSN); for (i = 0; i < NUM_GPRS; i++) regs->gprs[i] = (__u64) regs32.gprs[i]; @@ -483,7 +487,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (__force __u64) frame; - regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */ + /* Force 31 bit amode and default user address space control. */ + regs->psw.mask = PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__force __u64) ka->sa.sa_handler; regs->gprs[2] = map_signal(sig); @@ -551,7 +558,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (__force __u64) frame; - regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */ + /* Force 31 bit amode and default user address space control. */ + regs->psw.mask = PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (__u64) ka->sa.sa_handler; regs->gprs[2] = map_signal(sig); --- linux-3.5.0.orig/arch/s390/kernel/signal.c +++ linux-3.5.0/arch/s390/kernel/signal.c @@ -138,6 +138,10 @@ /* Use regs->psw.mask instead of psw_user_bits to preserve PER bit. */ regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) | (user_sregs.regs.psw.mask & PSW_MASK_USER); + /* Check for invalid user address space control. */ + if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC)) + regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); /* Check for invalid amode */ if (regs->psw.mask & PSW_MASK_EA) regs->psw.mask |= PSW_MASK_BA; @@ -275,7 +279,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (unsigned long) frame; - regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */ + /* Force default amode and default user address space control. */ + regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; regs->gprs[2] = map_signal(sig); @@ -348,7 +355,10 @@ /* Set up registers for signal handler */ regs->gprs[15] = (unsigned long) frame; - regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */ + /* Force default amode and default user address space control. */ + regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA | + (psw_user_bits & PSW_MASK_ASC) | + (regs->psw.mask & ~PSW_MASK_ASC); regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE; regs->gprs[2] = map_signal(sig); --- linux-3.5.0.orig/arch/s390/kernel/processor.c +++ linux-3.5.0/arch/s390/kernel/processor.c @@ -26,12 +26,14 @@ void __cpuinit cpu_init(void) { struct cpuid *id = &per_cpu(cpu_id, smp_processor_id()); + struct s390_idle_data *idle = &__get_cpu_var(s390_idle); get_cpu_id(id); atomic_inc(&init_mm.mm_count); current->active_mm = &init_mm; BUG_ON(current->mm); enter_lazy_tlb(&init_mm, current); + memset(idle, 0, sizeof(*idle)); } /* --- linux-3.5.0.orig/arch/s390/oprofile/init.c +++ linux-3.5.0/arch/s390/oprofile/init.c @@ -171,7 +171,7 @@ if (*offset) return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val < oprofile_min_interval) oprofile_hw_interval = oprofile_min_interval; @@ -214,7 +214,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0) return -EINVAL; @@ -245,7 +245,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) @@ -280,7 +280,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) @@ -319,7 +319,7 @@ return -EINVAL; retval = oprofilefs_ulong_from_user(&val, buf, count); - if (retval) + if (retval <= 0) return retval; if (val != 0 && val != 1) --- linux-3.5.0.orig/arch/ia64/include/asm/atomic.h +++ linux-3.5.0/arch/ia64/include/asm/atomic.h @@ -17,8 +17,8 @@ #include -#define ATOMIC_INIT(i) ((atomic_t) { (i) }) -#define ATOMIC64_INIT(i) ((atomic64_t) { (i) }) +#define ATOMIC_INIT(i) { (i) } +#define ATOMIC64_INIT(i) { (i) } #define atomic_read(v) (*(volatile int *)&(v)->counter) #define atomic64_read(v) (*(volatile long *)&(v)->counter) --- linux-3.5.0.orig/arch/ia64/kernel/process.c +++ linux-3.5.0/arch/ia64/kernel/process.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -279,6 +280,7 @@ /* endless idle loop with no priority at all */ while (1) { + rcu_idle_enter(); if (can_do_pal_halt) { current_thread_info()->status &= ~TS_POLLING; /* @@ -309,6 +311,7 @@ normal_xtp(); #endif } + rcu_idle_exit(); schedule_preempt_disabled(); check_pgt_cache(); if (cpu_is_offline(cpu)) --- linux-3.5.0.orig/arch/ia64/kernel/irq_ia64.c +++ linux-3.5.0/arch/ia64/kernel/irq_ia64.c @@ -23,7 +23,6 @@ #include #include #include -#include /* for rand_initialize_irq() */ #include #include #include --- linux-3.5.0.orig/crypto/crypto_user.c +++ linux-3.5.0/crypto/crypto_user.c @@ -75,7 +75,7 @@ { struct crypto_report_cipher rcipher; - snprintf(rcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "cipher"); + strncpy(rcipher.type, "cipher", sizeof(rcipher.type)); rcipher.blocksize = alg->cra_blocksize; rcipher.min_keysize = alg->cra_cipher.cia_min_keysize; @@ -94,8 +94,7 @@ { struct crypto_report_comp rcomp; - snprintf(rcomp.type, CRYPTO_MAX_ALG_NAME, "%s", "compression"); - + strncpy(rcomp.type, "compression", sizeof(rcomp.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_COMPRESS, sizeof(struct crypto_report_comp), &rcomp)) goto nla_put_failure; @@ -108,12 +107,14 @@ static int crypto_report_one(struct crypto_alg *alg, struct crypto_user_alg *ualg, struct sk_buff *skb) { - memcpy(&ualg->cru_name, &alg->cra_name, sizeof(ualg->cru_name)); - memcpy(&ualg->cru_driver_name, &alg->cra_driver_name, - sizeof(ualg->cru_driver_name)); - memcpy(&ualg->cru_module_name, module_name(alg->cra_module), - CRYPTO_MAX_ALG_NAME); + strncpy(ualg->cru_name, alg->cra_name, sizeof(ualg->cru_name)); + strncpy(ualg->cru_driver_name, alg->cra_driver_name, + sizeof(ualg->cru_driver_name)); + strncpy(ualg->cru_module_name, module_name(alg->cra_module), + sizeof(ualg->cru_module_name)); + ualg->cru_type = 0; + ualg->cru_mask = 0; ualg->cru_flags = alg->cra_flags; ualg->cru_refcnt = atomic_read(&alg->cra_refcnt); @@ -122,8 +123,7 @@ if (alg->cra_flags & CRYPTO_ALG_LARVAL) { struct crypto_report_larval rl; - snprintf(rl.type, CRYPTO_MAX_ALG_NAME, "%s", "larval"); - + strncpy(rl.type, "larval", sizeof(rl.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_LARVAL, sizeof(struct crypto_report_larval), &rl)) goto nla_put_failure; --- linux-3.5.0.orig/crypto/cryptd.c +++ linux-3.5.0/crypto/cryptd.c @@ -137,13 +137,18 @@ struct crypto_async_request *req, *backlog; cpu_queue = container_of(work, struct cryptd_cpu_queue, work); - /* Only handle one request at a time to avoid hogging crypto - * workqueue. preempt_disable/enable is used to prevent - * being preempted by cryptd_enqueue_request() */ + /* + * Only handle one request at a time to avoid hogging crypto workqueue. + * preempt_disable/enable is used to prevent being preempted by + * cryptd_enqueue_request(). local_bh_disable/enable is used to prevent + * cryptd_enqueue_request() being accessed from software interrupts. + */ + local_bh_disable(); preempt_disable(); backlog = crypto_get_backlog(&cpu_queue->queue); req = crypto_dequeue_request(&cpu_queue->queue); preempt_enable(); + local_bh_enable(); if (!req) return; --- linux-3.5.0.orig/crypto/ahash.c +++ linux-3.5.0/crypto/ahash.c @@ -404,7 +404,7 @@ { struct crypto_report_hash rhash; - snprintf(rhash.type, CRYPTO_MAX_ALG_NAME, "%s", "ahash"); + strncpy(rhash.type, "ahash", sizeof(rhash.type)); rhash.blocksize = alg->cra_blocksize; rhash.digestsize = __crypto_hash_alg_common(alg)->digestsize; --- linux-3.5.0.orig/crypto/blkcipher.c +++ linux-3.5.0/crypto/blkcipher.c @@ -499,9 +499,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "blkcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_blkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "blkcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_blkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_blkcipher.min_keysize; --- linux-3.5.0.orig/crypto/rng.c +++ linux-3.5.0/crypto/rng.c @@ -65,7 +65,7 @@ { struct crypto_report_rng rrng; - snprintf(rrng.type, CRYPTO_MAX_ALG_NAME, "%s", "rng"); + strncpy(rrng.type, "rng", sizeof(rrng.type)); rrng.seedsize = alg->cra_rng.seedsize; --- linux-3.5.0.orig/crypto/pcompress.c +++ linux-3.5.0/crypto/pcompress.c @@ -53,8 +53,7 @@ { struct crypto_report_comp rpcomp; - snprintf(rpcomp.type, CRYPTO_MAX_ALG_NAME, "%s", "pcomp"); - + strncpy(rpcomp.type, "pcomp", sizeof(rpcomp.type)); if (nla_put(skb, CRYPTOCFGA_REPORT_COMPRESS, sizeof(struct crypto_report_comp), &rpcomp)) goto nla_put_failure; --- linux-3.5.0.orig/crypto/aead.c +++ linux-3.5.0/crypto/aead.c @@ -117,9 +117,8 @@ struct crypto_report_aead raead; struct aead_alg *aead = &alg->cra_aead; - snprintf(raead.type, CRYPTO_MAX_ALG_NAME, "%s", "aead"); - snprintf(raead.geniv, CRYPTO_MAX_ALG_NAME, "%s", - aead->geniv ?: ""); + strncpy(raead.type, "aead", sizeof(raead.type)); + strncpy(raead.geniv, aead->geniv ?: "", sizeof(raead.geniv)); raead.blocksize = alg->cra_blocksize; raead.maxauthsize = aead->maxauthsize; @@ -203,8 +202,8 @@ struct crypto_report_aead raead; struct aead_alg *aead = &alg->cra_aead; - snprintf(raead.type, CRYPTO_MAX_ALG_NAME, "%s", "nivaead"); - snprintf(raead.geniv, CRYPTO_MAX_ALG_NAME, "%s", aead->geniv); + strncpy(raead.type, "nivaead", sizeof(raead.type)); + strncpy(raead.geniv, aead->geniv, sizeof(raead.geniv)); raead.blocksize = alg->cra_blocksize; raead.maxauthsize = aead->maxauthsize; --- linux-3.5.0.orig/crypto/ablkcipher.c +++ linux-3.5.0/crypto/ablkcipher.c @@ -388,9 +388,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "ablkcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_ablkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "ablkcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_ablkcipher.min_keysize; @@ -469,9 +469,9 @@ { struct crypto_report_blkcipher rblkcipher; - snprintf(rblkcipher.type, CRYPTO_MAX_ALG_NAME, "%s", "givcipher"); - snprintf(rblkcipher.geniv, CRYPTO_MAX_ALG_NAME, "%s", - alg->cra_ablkcipher.geniv ?: ""); + strncpy(rblkcipher.type, "givcipher", sizeof(rblkcipher.type)); + strncpy(rblkcipher.geniv, alg->cra_ablkcipher.geniv ?: "", + sizeof(rblkcipher.geniv)); rblkcipher.blocksize = alg->cra_blocksize; rblkcipher.min_keysize = alg->cra_ablkcipher.min_keysize; --- linux-3.5.0.orig/crypto/shash.c +++ linux-3.5.0/crypto/shash.c @@ -530,7 +530,8 @@ struct crypto_report_hash rhash; struct shash_alg *salg = __crypto_shash_alg(alg); - snprintf(rhash.type, CRYPTO_MAX_ALG_NAME, "%s", "shash"); + strncpy(rhash.type, "shash", sizeof(rhash.type)); + rhash.blocksize = alg->cra_blocksize; rhash.digestsize = salg->digestsize; --- linux-3.5.0.orig/firmware/WHENCE +++ linux-3.5.0/firmware/WHENCE @@ -629,16 +629,6 @@ -------------------------------------------------------------------------- -Driver: MYRI_SBUS - MyriCOM Gigabit Ethernet - -File: myricom/lanai.bin - -Licence: Unknown - -Found in hex form in kernel source. - --------------------------------------------------------------------------- - Driver: bnx2x: Broadcom Everest File: bnx2x/bnx2x-e1-6.2.9.0.fw --- linux-3.5.0.orig/firmware/Makefile +++ linux-3.5.0/firmware/Makefile @@ -27,86 +27,31 @@ acenic-objs := acenic/tg1.bin acenic/tg2.bin endif fw-shipped-$(CONFIG_ACENIC) += $(acenic-objs) -fw-shipped-$(CONFIG_ADAPTEC_STARFIRE) += adaptec/starfire_rx.bin \ - adaptec/starfire_tx.bin fw-shipped-$(CONFIG_ATARI_DSP56K) += dsp56k/bootstrap.bin -fw-shipped-$(CONFIG_ATM_AMBASSADOR) += atmsar11.fw -fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-6.2.9.0.fw \ - bnx2x/bnx2x-e1h-6.2.9.0.fw \ - bnx2x/bnx2x-e2-6.2.9.0.fw -fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1a.fw \ - bnx2/bnx2-rv2p-09-6.0.17.fw \ - bnx2/bnx2-rv2p-09ax-6.0.17.fw \ - bnx2/bnx2-mips-06-6.2.1.fw \ - bnx2/bnx2-rv2p-06-6.0.15.fw -fw-shipped-$(CONFIG_CASSINI) += sun/cassini.bin -fw-shipped-$(CONFIG_COMPUTONE) += intelliport2.bin -fw-shipped-$(CONFIG_CHELSIO_T3) += cxgb3/t3b_psram-1.1.0.bin \ - cxgb3/t3c_psram-1.1.0.bin \ - cxgb3/t3fw-7.10.0.bin \ - cxgb3/ael2005_opt_edc.bin \ - cxgb3/ael2005_twx_edc.bin \ - cxgb3/ael2020_twx_edc.bin -fw-shipped-$(CONFIG_DRM_MGA) += matrox/g200_warp.fw matrox/g400_warp.fw -fw-shipped-$(CONFIG_DRM_R128) += r128/r128_cce.bin -fw-shipped-$(CONFIG_DRM_RADEON) += radeon/R100_cp.bin radeon/R200_cp.bin \ - radeon/R300_cp.bin radeon/R420_cp.bin \ - radeon/RS690_cp.bin radeon/RS600_cp.bin \ - radeon/R520_cp.bin \ - radeon/R600_pfp.bin radeon/R600_me.bin \ - radeon/RV610_pfp.bin radeon/RV610_me.bin \ - radeon/RV630_pfp.bin radeon/RV630_me.bin \ - radeon/RV620_pfp.bin radeon/RV620_me.bin \ - radeon/RV635_pfp.bin radeon/RV635_me.bin \ - radeon/RV670_pfp.bin radeon/RV670_me.bin \ - radeon/RS780_pfp.bin radeon/RS780_me.bin \ - radeon/RV770_pfp.bin radeon/RV770_me.bin \ - radeon/RV730_pfp.bin radeon/RV730_me.bin \ - radeon/RV710_pfp.bin radeon/RV710_me.bin -fw-shipped-$(CONFIG_DVB_AV7110) += av7110/bootcode.bin -fw-shipped-$(CONFIG_DVB_TTUSB_BUDGET) += ttusb-budget/dspbootcode.bin +fw-shipped-$(CONFIG_BNX2X) += bnx2x/bnx2x-e1-7.2.51.0.fw \ + bnx2x/bnx2x-e1h-7.2.51.0.fw \ + bnx2x/bnx2x-e2-7.2.51.0.fw +fw-shipped-$(CONFIG_BNX2) += bnx2/bnx2-mips-09-6.2.1b.fw \ + bnx2/bnx2-rv2p-06-6.0.15.fw \ + bnx2/bnx2-mips-06-6.2.3.fw \ + bnx2/bnx2-rv2p-09-6.0.17.fw \ + bnx2/bnx2-rv2p-09ax-6.0.17.fw fw-shipped-$(CONFIG_E100) += e100/d101m_ucode.bin e100/d101s_ucode.bin \ e100/d102e_ucode.bin -fw-shipped-$(CONFIG_MYRI_SBUS) += myricom/lanai.bin -fw-shipped-$(CONFIG_PCMCIA_PCNET) += cis/LA-PCM.cis cis/PCMLM28.cis \ - cis/DP83903.cis cis/NE2K.cis \ - cis/tamarack.cis cis/PE-200.cis \ - cis/PE520.cis -fw-shipped-$(CONFIG_PCMCIA_3C589) += cis/3CXEM556.cis -fw-shipped-$(CONFIG_PCMCIA_3C574) += cis/3CCFEM556.cis -fw-shipped-$(CONFIG_SERIAL_8250_CS) += cis/MT5634ZLX.cis cis/RS-COM-2P.cis \ - cis/COMpad2.cis cis/COMpad4.cis \ - cis/SW_555_SER.cis cis/SW_7xx_SER.cis \ - cis/SW_8xx_SER.cis -fw-shipped-$(CONFIG_PCMCIA_SMC91C92) += ositech/Xilinx7OD.bin -fw-shipped-$(CONFIG_SCSI_ADVANSYS) += advansys/mcode.bin advansys/38C1600.bin \ - advansys/3550.bin advansys/38C0800.bin +fw-shipped-$(CONFIG_PCMCIA_PCNET) += + +fw-shipped-$(CONFIG_PCMCIA_3C589) += +fw-shipped-$(CONFIG_PCMCIA_3C574) += +fw-shipped-$(CONFIG_SERIAL_8250_CS) += + fw-shipped-$(CONFIG_SCSI_QLOGIC_1280) += qlogic/1040.bin qlogic/1280.bin \ qlogic/12160.bin fw-shipped-$(CONFIG_SCSI_QLOGICPTI) += qlogic/isp1000.bin fw-shipped-$(CONFIG_INFINIBAND_QIB) += qlogic/sd7220.fw -fw-shipped-$(CONFIG_SND_KORG1212) += korg/k1212.dsp -fw-shipped-$(CONFIG_SND_MAESTRO3) += ess/maestro3_assp_kernel.fw \ - ess/maestro3_assp_minisrc.fw -fw-shipped-$(CONFIG_SND_SB16_CSP) += sb16/mulaw_main.csp sb16/alaw_main.csp \ - sb16/ima_adpcm_init.csp \ - sb16/ima_adpcm_playback.csp \ - sb16/ima_adpcm_capture.csp -fw-shipped-$(CONFIG_SND_YMFPCI) += yamaha/ds1_ctrl.fw yamaha/ds1_dsp.fw \ - yamaha/ds1e_ctrl.fw fw-shipped-$(CONFIG_SND_WAVEFRONT) += yamaha/yss225_registers.bin -fw-shipped-$(CONFIG_TEHUTI) += tehuti/bdx.bin fw-shipped-$(CONFIG_TIGON3) += tigon/tg3.bin tigon/tg3_tso.bin \ tigon/tg3_tso5.bin -fw-shipped-$(CONFIG_TYPHOON) += 3com/typhoon.bin fw-shipped-$(CONFIG_USB_DABUSB) += dabusb/firmware.fw dabusb/bitstream.bin -fw-shipped-$(CONFIG_USB_EMI26) += emi26/loader.fw emi26/firmware.fw \ - emi26/bitstream.fw -fw-shipped-$(CONFIG_USB_EMI62) += emi62/loader.fw emi62/bitstream.fw \ - emi62/spdif.fw emi62/midi.fw -fw-shipped-$(CONFIG_USB_KAWETH) += kaweth/new_code.bin kaweth/trigger_code.bin \ - kaweth/new_code_fix.bin \ - kaweth/trigger_code_fix.bin ifdef CONFIG_FIRMWARE_IN_KERNEL fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_MPR) += keyspan/mpr.fw fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_USA18X) += keyspan/usa18x.fw @@ -126,17 +71,9 @@ keyspan/usa28.fw keyspan/usa28xa.fw keyspan/usa28xb.fw \ keyspan/usa28x.fw keyspan/usa49w.fw keyspan/usa49wlc.fw endif -fw-shipped-$(CONFIG_USB_SERIAL_TI) += ti_3410.fw ti_5052.fw \ - mts_cdma.fw mts_gsm.fw mts_edge.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT) += edgeport/boot.fw edgeport/boot2.fw \ - edgeport/down.fw edgeport/down2.fw -fw-shipped-$(CONFIG_USB_SERIAL_EDGEPORT_TI) += edgeport/down3.bin fw-shipped-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat_loader.fw whiteheat.fw \ # whiteheat_loader_debug.fw -fw-shipped-$(CONFIG_USB_SERIAL_KEYSPAN_PDA) += keyspan_pda/keyspan_pda.fw -fw-shipped-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda/xircom_pgs.fw fw-shipped-$(CONFIG_USB_VICAM) += vicam/firmware.fw -fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin fw-shipped-$(CONFIG_YAM) += yam/1200.bin yam/9600.bin fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-) --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e2-7.2.51.0.fw.ihex @@ -0,0 +1,18459 @@ +:100000000000356000000068000005D8000035D011 +:100010000000549800003BB00000008C000090509D +:100020000000E164000090E0000000C000017248A0 +:1000300000012D7400017310000000740002A088FC +:10004000000059E00002A100000000AC0002FAE844 +:10005000000173F80002FB98000011B800046F98CB +:100060000000000400048158021100B800000001E3 +:10007000020600DC000000010306100001FF000082 +:100080000A00000100000008020617FC003FE00122 +:100090000A00000100000010030617FC020101FF26 +:1000A0000A0000010000000803060200000304002B +:1000B0000A00000100000010030602000003040310 +:1000C000020600DC00000000040601C80000000277 +:1000D000040601D8000000020A0000020000000827 +:1000E000030601C000020406030601D00002040852 +:1000F0000A00000200000010030601C00002040A0A +:10010000030601D00002040C0406022800000002CD +:1001100004060238000000020A0000020000000885 +:10012000030602200002040E03060230000204103F +:100130000A00000200000010030602200002041260 +:100140000306023000020414020D004400000032D5 +:10015000030D004C00040416040D005C00000004B4 +:10016000030D008C0004041A030D00A00005041EFA +:10017000020D00B800000002030D00C000040423BB +:10018000020D015C00000001030D01640002042760 +:10019000020D020400000001030D020C00030429FB +:1001A000030D02200002042C040D02800000001246 +:1001B000030D03000018042E040D400000000A0087 +:1001C0000A00000100000008040D03600000000C9C +:1001D000030D0004000F0446020D01140000000D81 +:1001E000020D01180000002D020D01140000001D79 +:1001F000020D01180000003D020D01140000004D29 +:10020000020D01180000006D020D01140000005DD8 +:10021000020D01180000007D0310100000030455BA +:1002200002101050000000010710110000100458C7 +:100230000810114000000008071011600010046849 +:10024000081011A000000018071018000200047820 +:1002500004104C00000001000210700400000001B6 +:100260000A00000100000008031040D400020678D4 +:1002700002104028000000100210404400003FFF20 +:100280000210405800280000021040840084924A66 +:100290000210405800000000021041380000000128 +:1002A0000210413800000001021041380000000136 +:1002B0000210413800000001021041380000000126 +:1002C0000210413800000001021041380000000116 +:1002D0000210413800000001030C20080003067AD8 +:1002E000030C201C0004067D030C2038000406814A +:1002F000040C20480000001D020C20BC000000017E +:10030000040C20C00000003F030C21BC0003068544 +:10031000040C21C80000001C030C223800040688CD +:10032000010C224800000000010C224C00000000DB +:10033000010C225000000000010C225400000000BB +:10034000010C225800000000010C225C000000009B +:10035000010C226000000000010C2264000000007B +:10036000010C226800000000010C226C000000005B +:10037000010C227000000000010C2274000000003B +:10038000010C227800000000010C227C000000001B +:10039000030C22D80004068C0A00000100000009AA +:1003A000020C2000000003E80A0000010000000A1F +:1003B000020C2000000000030A0000010000000CF5 +:1003C000020C2000000000010A00000100001001E2 +:1003D000020C2000000005DC0A00000100001002F1 +:1003E000020C2000000000040A00000100001004BC +:1003F000020C2000000000010A00000100002001A2 +:10040000020C2000000005DC0A00000100002002B0 +:10041000020C2000000000040A000001000020047B +:10042000020C200000000001052004000071000003 +:100430000620078000100690042200000000400003 +:1004400004232400000016000A0000010000000838 +:10045000022000BC00000032032211700008069246 +:10046000032211A80090069A0422C0000000000692 +:100470000322C0180004072A0422C0280000000C30 +:100480000322C0580004072E0422C0680000000C9C +:100490000322C098000407320422C0A80000000C08 +:1004A0000322C0D8000407360422C0E80000000C74 +:1004B0000322C1180004073A0422C1280000000CDE +:1004C0000322C1580004073E0422C1680000000C4A +:1004D0000322C198000407420422C1A80000000CB6 +:1004E0000322C1D8000407460422C1E80000000C22 +:1004F0000322C2180004074A0422C2280000000C8C +:100500000322C2580004074E0422C2680000000CF7 +:100510000322C298000407520422C2A80000000C63 +:100520000322C2D8000407560422C2E80000000CCF +:100530000322C3180004075A0422C3280000000C39 +:100540000322C3580004075E0422C3680000000CA5 +:100550000322C398000407620422C3A80000000C11 +:100560000322C3D8000407660422C3E80000000C7D +:100570000322C4180004076A0422C4280000000CE7 +:100580000322C4580004076E0422C4680000000C53 +:100590000322C498000407720422C4A80000000CBF +:1005A0000322C4D8000407760422C4E80000000C2B +:1005B0000322C5180004077A0422C5280000000C95 +:1005C0000322C5580004077E0422C5680000000C01 +:1005D0000322C598000407820422C5A80000000C6D +:1005E0000322C5D8000407860422C5E80000000CD9 +:1005F0000322C6180004078A0422C6280000000C43 +:100600000322C6580004078E0422C6680000000CAE +:100610000322C698000407920422C6A80000000C1A +:100620000322C6D8000407960422C6E80000000C86 +:100630000322C7180004079A0422C7280000000CF0 +:100640000322C7580004079E0422C7680000000C5C +:100650000322C798000407A20422C7A80000000CC8 +:100660000322C7D8000407A60422C7E80000000C34 +:100670000322C818000407AA0422C8280000000C9E +:100680000322C858000407AE0422C8680000000C0A +:100690000322C898000407B20422C8A80000000C76 +:1006A0000322C8D8000407B60422C8E80000000CE2 +:1006B0000322C918000407BA0422C9280000000C4C +:1006C0000322C958000407BE0422C9680000000CB8 +:1006D0000322C998000407C20422C9A80000000C24 +:1006E0000322C9D8000407C60422C9E80000000C90 +:1006F0000322CA18000407CA0422CA280000000CFA +:100700000322CA58000407CE0422CA680000000C65 +:100710000322CA98000407D20422CAA80000000CD1 +:100720000322CAD8000407D60422CAE80000000C3D +:100730000322CB18000407DA0422CB280000000CA7 +:100740000322CB58000407DE0422CB680000000C13 +:100750000322CB98000407E20422CBA80000000C7F +:100760000322CBD8000407E60422CBE80000000CEB +:100770000322CC18000407EA0422CC280000000C55 +:100780000322CC58000407EE0422CC680000000CC1 +:100790000322CC98000407F20422CCA80000000C2D +:1007A0000322CCD8000407F60422CCE80000000C99 +:1007B0000322CD18000407FA0422CD280000000C03 +:1007C0000322CD58000407FE0422CD680000000C6F +:1007D0000322CD98000408020422CDA80000000CDA +:1007E0000322CDD8000408060422CDE80000000C46 +:1007F0000322CE180004080A0422CE280000000CB0 +:100800000322CE580004080E0422CE680000000C1B +:100810000322CE98000408120422CEA80000000C87 +:100820000322CED8000408160422CEE80000000CF3 +:100830000322CF180004081A0422CF280000000C5D +:100840000322CF580004081E0422CF680000000CC9 +:100850000322CF98000408220422CFA80000000C35 +:100860000322CFD8000408260422CFE80000000CA1 +:100870000322D0180004082A0422D0280000000C0B +:100880000322D0580004082E0422D0680000000C77 +:100890000322D098000408320422D0A80000000CE3 +:1008A0000322D0D8000408360422D0E80000000C4F +:1008B0000322D1180004083A0422D1280000000CB9 +:1008C0000322D1580004083E0422D1680000000C25 +:1008D0000322D198000408420422D1A80000000C91 +:1008E0000322D1D8000408460422D1E80000000CFD +:1008F0000322D2180004084A0422D2280000000C67 +:100900000322D2580004084E0422D2680000000CD2 +:100910000322D298000408520422D2A80000000C3E +:100920000322D2D8000408560422D2E80000000CAA +:100930000322D3180004085A0422D3280000000C14 +:100940000322D3580004085E0422D3680000000C80 +:100950000322D398000408620422D3A80000000CEC +:100960000322D3D8000408660422D3E80000000C58 +:100970000322D4180004086A0422D4280000000CC2 +:100980000322D4580004086E0422D4680000000C2E +:100990000322D498000408720422D4A80000000C9A +:1009A0000322D4D8000408760422D4E80000000C06 +:1009B0000322D5180004087A0422D5280000000C70 +:1009C0000322D5580004087E0422D5680000000CDC +:1009D0000322D598000408820422D5A80000000C48 +:1009E0000322D5D8000408860422D5E80000000CB4 +:1009F0000322D6180004088A0422D6280000000C1E +:100A00000322D6580004088E0422D6680000000C89 +:100A10000322D698000408920422D6A80000000CF5 +:100A20000322D6D8000408960422D6E80000000C61 +:100A30000322D7180004089A0422D7280000000CCB +:100A40000322D7580004089E0422D7680000000C37 +:100A50000322D798000408A20422D7A80000000CA3 +:100A60000322D7D8000408A60422D7E80000000C0F +:100A70000322D818000408AA0422D8280000000C79 +:100A80000322D858000408AE0422D8680000000CE5 +:100A90000322D898000408B20422D8A80000000C51 +:100AA0000322D8D8000408B60422D8E80000000CBD +:100AB0000322D918000408BA0422D9280000000C27 +:100AC0000322D958000408BE0422D9680000000C93 +:100AD0000322D998000408C20422D9A80000000CFF +:100AE0000322D9D8000408C60422D9E80000000C6B +:100AF0000322DA18000408CA0422DA280000000CD5 +:100B00000322DA58000408CE0422DA680000000C40 +:100B10000322DA98000408D20422DAA80000000CAC +:100B20000322DAD8000408D60422DAE80000000C18 +:100B30000322DB18000408DA0422DB280000000C82 +:100B40000322DB58000408DE0422DB680000000CEE +:100B50000322DB98000408E20422DBA80000000C5A +:100B60000322DBD8000408E60422DBE80000000CC6 +:100B70000322DC18000408EA0422DC280000000C30 +:100B80000322DC58000408EE0422DC680000000C9C +:100B90000322DC98000408F20422DCA80000000C08 +:100BA0000322DCD8000408F60422DCE80000000C74 +:100BB0000322DD18000408FA0422DD280000000CDE +:100BC0000322DD58000408FE0422DD680000000C4A +:100BD0000322DD98000409020422DDA80000000CB5 +:100BE0000322DDD8000409060422DDE80000000C21 +:100BF0000322DE180004090A0422DE280000000C8B +:100C00000322DE580004090E0422DE680000000CF6 +:100C10000322DE98000409120422DEA80000000C62 +:100C20000322DED8000409160422DEE80000000CCE +:100C30000322DF180004091A0422DF280000000C38 +:100C40000322DF580004091E0422DF680000000CA4 +:100C50000322DF98000409220422DFA80000000C10 +:100C60000322DFD8000409260422DFE80000000C7C +:100C70000322E0180004092A0422E0280000000CE6 +:100C80000322E0580004092E0422E0680000000C52 +:100C90000322E098000409320422E0A80000000CBE +:100CA0000322E0D8000409360422E0E80000000C2A +:100CB0000322E1180004093A0422E1280000000C94 +:100CC0000322E1580004093E0422E1680000000C00 +:100CD0000322E198000409420422E1A80000000C6C +:100CE0000322E1D8000409460422E1E800000006DE +:100CF0000422F640000000200223800000000010C3 +:100D00000223804000000012022380800000003097 +:100D1000022380C00000000E02238BC000000001EF +:100D20000A000002000000080223838000086470AB +:100D3000022383C0000002260A000002000000090E +:100D4000022383000008647002238340000002260F +:100D50000A0000020000000A022383000000055F71 +:100D600002238340000000010A0000020000000C82 +:100D7000022383000000015702238340000000008B +:100D80000A0000020000100002238380000C96A8D5 +:100D9000022383C0000003390A0000020000100192 +:100DA00002238300000C96A802238340000003392D +:100DB0000A00000200001002022383000000080E57 +:100DC00002238340000000020A0000020000100419 +:100DD000022383000000020302238340000000007E +:100DE0000A0000020000200002238380000CF8505B +:100DF000022383C0000003520A0000020000200109 +:100E000002238300000CF8500223834000000352A9 +:100E10000A00000200002002022383000000084DA7 +:100E200002238340000000020A00000200002004A8 +:100E3000022383000000021302238340000000000D +:100E40000524000031B2000005248000282A0C6D22 +:100E50000624D46063DA094A0A0000010000000198 +:100E600002231480000000010A00000100000002BB +:100E700002231480000000010A00000100000004A9 +:100E80000223148000000000012000000000000088 +:100E90000120000400000000012000080000000004 +:100EA0000120000C000000000120001000000000E4 +:100EB000012000140000000003200020001A094C4B +:100EC000032000A4000209660220022400000000A2 +:100ED00002200234000000000220024C000000004A +:100EE000022002E40000FFFF0820200000000800AC +:100EF0000A0000010000001008204000000002006D +:100F00000422110800000002042234000000000244 +:100F10000422590000000006042260400000003056 +:100F20000422F3000000001004221110000000024F +:100F300004223408000000020422591800000006B0 +:100F400004226100000000300422F3400000001081 +:100F500004221118000000020422341000000002D4 +:100F60000422593000000006042261C00000003055 +:100F70000422F3800000001004221120000000026F +:100F80000422341800000002042259480000000620 +:100F900004226280000000300422F3C00000001030 +:100FA0000422112800000002042234200000000264 +:100FB0000422596000000006042263400000003053 +:100FC0000422F4000000001004221130000000028E +:100FD0000422342800000002042259780000000690 +:100FE00004226400000000300422F44000000010DD +:100FF00004221138000000020422343000000002F4 +:101000000422599000000006042264C00000003051 +:101010000422F480000000100422114000000002AD +:101020000422343800000002042259A800000006FF +:1010300004226580000000300422F4C0000000108B +:1010400004102400000000E00310201C00020968C6 +:10105000021020C000000002031020040002096AF0 +:1010600002170008000000020217002C0000000315 +:1010700002170038007C1004031700440006096CB6 +:10108000021700700000000C0317007800020972BC +:10109000021701C4081000000217034400000001F9 +:1010A0000317040000080974031704300008097CC2 +:1010B00003170480000409840A00000100000008EE +:1010C0000217003C000000040A00000100000010AC +:1010D0000217003C00000008021700040000000F87 +:1010E000021701EC00000002021701F400000002E8 +:1010F000021701EC00000002021701F400000002D8 +:10110000021701EC00000002021701F400000002C7 +:10111000021701EC00000002021701F400000002B7 +:10112000021701EC00000002021701F400000002A7 +:10113000021701EC00000002021701F40000000297 +:10114000021701EC00000002021701F40000000287 +:10115000021701EC00000002021701F40000000277 +:101160000A000001000000080213007800000032AD +:101170000213003C000061A80413010800000003F2 +:1011800002130104000000000213013400000000FB +:101190000413010800000003021301040000000012 +:1011A00002130134000000000413010800000003D2 +:1011B00002130104000000000213013400000000CB +:1011C00004130108000000030213010400000000E2 +:1011D00002130134000000000413010800000003A2 +:1011E000021301040000000002130134000000009B +:1011F00004130108000000030213010400000000B2 +:101200000213013400000000041301080000000371 +:10121000021301040000000002130134000000006A +:101220000413010800000003021301040000000081 +:1012300002130134000000000A00000100000088D1 +:101240000200A5F8000000000A00000100000108EB +:101250000200A5F8000000010A0000010000009053 +:101260000200AA84000000000A0000010000011032 +:101270000200AA84000000010A00000100000090A2 +:101280000200AA88000000000A000001000001100E +:101290000200AA88000000010200A2700000000005 +:1012A0000200A274000000000200A2700000000012 +:1012B0000200A274000000000200A2700000000002 +:1012C0000200A274000000000200A27000000000F2 +:1012D0000200A2740000000002016204000000008D +:1012E000030100B400020988030100CC0002098A4E +:1012F000020100DC00000001030101000002098C72 +:101300000201007C0030000002010084000000287F +:101310000201008C00000000020101300000000406 +:10132000020102440000003F0201025C00000001D3 +:1013300002010328000000000201055400000030F3 +:10134000020160580000FFFF020160600000000021 +:101350000201607000000007020160B000000000A0 +:10136000020160C000000001020160C8000000002E +:101370000201620800000000040180540000000324 +:1013800002018078000000000201812400000000BA +:101390000A00000100000080020180380000000601 +:1013A0000A0000010000020002018038000000076E +:1013B0000A0000010000040002018038000000065D +:1013C0000A00000100000800020180380000000E41 +:1013D000020100C400000001020100F80000000149 +:1013E000020100F000000001020100800030000056 +:1013F00002010088000000280201009000000000A7 +:101400000201013400000004020102480000003F14 +:10141000020102DC000000010201032C00000000B8 +:1014200002010564000000300201605C0000FFFF63 +:101430000201606400000000020160740000000707 +:10144000020160B400000000020160C4000000015D +:10145000020160CC000000000201620C00000000EC +:10146000040181A800000004020181D000000000F6 +:101470000A000001000000800201818C00000006CB +:101480000A000001000002000201818C0000000738 +:101490000A000001000004000201818C0000000627 +:1014A0000A000001000008000201818C0000000E0B +:1014B000020100C800000001020100FC0000000160 +:1014C000020100F4000000010401013800000011D5 +:1014D0000401017C0000001104010138000000112A +:1014E0000401017C0000001104010138000000111A +:1014F0000401017C0000001104010138000000110A +:101500000401017C000000110215C0900000892632 +:101510000215C09C0000000402140000000000013D +:101520000215C024000000000315C0EC0002098E63 +:101530000315C100000209900A000001000020000C +:101540000315C1F400080992031400300002099A3F +:101550000214004000000001090000020000100811 +:10156000031400040003099C021400440000FFFF60 +:101570000A00000400002000031400380002099F44 +:1015800002140044000FFFFF0315C160000709A10A +:101590000315C198000209A8090000010000100805 +:1015A00004140004000000030A00000100002000F1 +:1015B0000415C160000000070214000000000000D4 +:1015C000020090C40000E000020090CC0000F30094 +:1015D000030090D4000209AA020090E0000073000A +:1015E000030090E8000209AC020090F400007300D0 +:1015F000030090FC000209AE0200910800005300B5 +:10160000020091100000000403009128000709B0B7 +:101610000300916C000609B70400918400000006E5 +:101620000300919C000509BD0300942C000309C22E +:101630000300942C000309C50300942C000309C87F +:101640000300942C000309CB0300942C000309CE63 +:101650000300942C000309D10300942C000309D447 +:101660000300942C000309D703040004001209DAD4 +:1016700002040054000000430204005C0000000665 +:10168000020400700000000403040078000409EC68 +:1016900004040088000000050304009C000309F016 +:1016A000040400A800000004030400B8001109F3BA +:1016B00001040124000000000104012800000000D2 +:1016C0000104012C000000000104013000000000B2 +:1016D000020401340000000F030401D000020A04D8 +:1016E0000204022C000000040304025800040A064D +:1016F0000312049400210A0A021203880000006405 +:1017000002120390000000080312039C00030A2B3E +:10171000031203BC00030A2E021203D000000000D3 +:101720000212036C00000001031201BC003C0A31EC +:10173000031202B000020A6D0312032400020A6FB2 +:10174000021205B400000001031205F800030A713B +:101750000212066C00000001021201B0000000013C +:10176000021207D800000000021207D80000000093 +:10177000021207D800000000021207D80000000083 +:10178000021207D800000000021207D80000000073 +:10179000021207D800000000021207D80000000063 +:1017A000021030D8000000010710380000050A744C +:1017B0000710392000050A7907103B0000050A7E52 +:1017C00007103C0000050A830316803000080A88D1 +:1017D00002168054000000020416807C0000000500 +:1017E0000316809000020A900316809C00020A9261 +:1017F000021680AC00000054041680B800000005FA +:10180000031680CC00080A94021680F0000000073E +:101810000316810000060A9C0316812800030AA211 +:101820000316814000060AA50316816800030AAB6F +:10183000031681A800030AAE031681E800030AB16B +:10184000031681F800030AB40316820800070AB7DA +:101850000316823400020ABE0416827800000004D7 +:101860000316828800060AC0021688102020010193 +:10187000021688202020010102168838202001014C +:1018800002168848202001010316E6BC00020AC6A1 +:101890000A000014000000080316806000070AC850 +:1018A000041680A400000002041680B000000002AC +:1018B000031680F400030ACF0316811800040AD22D +:1018C0000316813400030AD60316815800040AD98E +:1018D00003168174000D0ADD031681B4000D0AEAB7 +:1018E000021681F4000001FC0216820400000003CD +:1018F0000316823C000B0AF70416826800000004FD +:101900000216880C010101010316881400030B0262 +:101910000316882400050B050316883C00030B0AF8 +:101920000316E6C400020B0D0316E6E800050B0FD4 +:101930000216E794000000010A00001C00001000DD +:101940000316806000070B14041680A40000000238 +:10195000041680B000000002031680F400030B1B85 +:101960000316811800040B1E0316813400030B229A +:101970000316815800040B2502168178000000012F +:10198000021681840000000102168190000000010F +:10199000021681A400000004021681B800000001B4 +:1019A000021681C400000001021681D0000000016F +:1019B000021681E400000004021681F4000001FC1C +:1019C00002168204000000030316823C00020B2969 +:1019D00002168248009200920216825001240124CD +:1019E0000316825800040B2B0416826800000004C2 +:1019F0000216880C010101010316881400030B2F45 +:101A00000316882400050B320316883C00030B37AD +:101A10000316E6E800020B3A0216E6F8000002049C +:101A20000A00000E00001020021681740000000061 +:101A30000316817C00020B3C0316818800020B3EDA +:101A40000316819400040B40021681B400000000CC +:101A5000031681BC00020B44031681C800020B462A +:101A6000031681D400040B48021682440E490E4925 +:101A70000216824C00920092021682540124012424 +:101A80000316E6C400020B4C0316E6F000020B4EF0 +:101A90000216E794000000010A00000E000010404A +:101AA00002168174000000010316817C00020B50B5 +:101AB0000316818800020B520316819400040B5414 +:101AC000021681B400000001031681BC00020B580D +:101AD000031681C800020B5A031681D400040B5C64 +:101AE00002168244000000000216824C0FFF0FFF16 +:101AF00002168254000000000316E6C400020B60C8 +:101B00000316E6F000020B620216E79400000000E4 +:101B10000A000007000020000316806000070B6425 +:101B2000031680A400020B6B031680B000020B6D3D +:101B3000021681F4000001C0021682040000003F7A +:101B40000216823C0000007F0316E7BC00080B6F02 +:101B50000A00000F00004020031680F400030B77FA +:101B60000316811800040B7A0316813400030B7EE0 +:101B70000316815800040B8103168174000D0B8538 +:101B8000031681B4000D0B920316824000060B9FD2 +:101B900004168258000000060316827000020BA58E +:101BA0000216880C010101010316881400030BA71B +:101BB0000316882400050BAA0316883C00030BAF0C +:101BC0000316E6C400020BB20216E79400000001FF +:101BD0000A00000D00004040031680F400030BB41F +:101BE0000316811800040BB70316813400030BBBE6 +:101BF0000316815800040BBE03168174000D0BC23E +:101C0000031681B4000D0BCF03168240000E0BDCCF +:101C10000216880C010101010316881400030BEA67 +:101C20000316882400050BED0316883C00030BF215 +:101C30000316E6C400020BF50216E794000000004C +:101C40000A00000D00008000031680F400030BF76B +:101C50000316811800040BFA0316813400030BFEEF +:101C60000316815800040C0103168174000D0C0545 +:101C7000031681B4000D0C1203168240000E0C1FD7 +:101C80000216880C010101200316881400030C2D94 +:101C90000316882400050C300316883C00030C351D +:101CA0000316E6C400020C380216E7940000000197 +:101CB000021680EC000000FF0304040800140C3A34 +:101CC000020404CC000000010305004400020C4E95 +:101CD0000305005000080C500305009000070C5845 +:101CE000030500B000020C5F030500C000020C6198 +:101CF000030500D400020C6302050114000000017A +:101D00000305011C00020C6502050204000000012D +:101D10000305020C00020C670205021C00000020F3 +:101D2000040502400000000A0405400000000D0008 +:101D30000A000002000000080305022000020C69EE +:101D40000305028000200C6B0A0000020000001056 +:101D50000305022000020C8B03050280001D0C8D80 +:101D60000305000400100CAA020500E00000000EAC +:101D7000020500E40000002E020500E00000001E45 +:101D8000020500E40000003E020500E00000004EF5 +:101D9000020500E40000006E020500E00000005EA5 +:101DA000020500E40000007E04164024000000024A +:101DB0000316403000030CBA021640440000002015 +:101DC000021640700000001C0216420800000001CC +:101DD000021642100000000102164220000000011D +:101DE00002164228000000010216423000000001E5 +:101DF0000216423800000001021642600000000294 +:101E00000A000001000000090216401C0003D090E7 +:101E10000A0000010000000A0216401C00000271C6 +:101E20000A0000010000000C0216401C0000009C8B +:101E30000A000001000010010216401C0005B8D87D +:101E40000A000001000010020216401C000003A955 +:101E50000A000001000010040216401C000000EA05 +:101E60000A000001000020010216401C0005B8D83D +:101E70000A000001000020020216401C000003A915 +:101E80000A000001000020040216401C000000EAC5 +:101E90000216400000000001021640D800000001B8 +:101EA0000316400800030CBD02164240000000006B +:101EB00002164248000000000816427000000002AE +:101EC00002164250000000000216425800000000B6 +:101ED00008164280000000020304200800040CC021 +:101EE0000304201C00040CC402042038000000205D +:101EF0000404203C0000001F020420B80000000180 +:101F0000040420BC0000005F0304223800040CC855 +:101F100001042248000000000104224C00000000DF +:101F200001042250000000000104225400000000BF +:101F300001042258000000000104225C000000009F +:101F4000010422600000000001042264000000007F +:101F500001042268000000000104226C000000005F +:101F6000010422700000000001042274000000003F +:101F700001042278000000000104227C000000001F +:101F8000030422C000040CCC0A0000010000000978 +:101F900002042000000003E80A0000010000000A1B +:101FA00002042000000000030A0000010000000CF1 +:101FB00002042000000000010A00000100001001DE +:101FC00002042000000005DC0A00000100001002ED +:101FD00002042000000000040A00000100001004B8 +:101FE00002042000000000010A000001000020019E +:101FF00002042000000005DC0A00000100002002AD +:1020000002042000000000040A0000010000200477 +:10201000020420000000000105180400008A0000EE +:10202000061807B800090CD0041A00000000400090 +:10203000041B2400000016000A0000020000000833 +:10204000021800BC00000032021B945C0000003249 +:10205000031A16C800020CD2031A17D000900CD431 +:10206000031A404000040D64041A405000000006AA +:10207000031A406800020D68031A52C000020D6A7C +:10208000031A800003F90D6C041A8FE400000007A6 +:10209000031B3D9000141165021B800000000034FA +:1020A000021B804000000018021B80800000000C12 +:1020B000021B80C000000020021B8BC0000000013A +:1020C0000A00000200000008021B83800008647000 +:1020D000021B83C0000002260A0000020000000963 +:1020E000021B830000086470021B8340000002266C +:1020F0000A0000020000000A021B83000000055FC6 +:10210000021B8340000000010A0000020000000CD6 +:10211000021B830000000157021B834000000000E7 +:102120000A00000200001000021B8380000C96A829 +:10213000021B83C0000003390A00000200001001E6 +:10214000021B8300000C96A8021B83400000033989 +:102150000A00000200001002021B83000000080EAB +:10216000021B8340000000020A000002000010046D +:10217000021B830000000203021B834000000000DA +:102180000A00000200002000021B8380000CF850AF +:10219000021B83C0000003520A000002000020015D +:1021A000021B8300000CF850021B83400000035206 +:1021B0000A00000200002002021B83000000084DFC +:1021C000021B8340000000020A00000200002004FD +:1021D000021B830000000213021B8340000000006A +:1021E000021B944000000001041B94480000000200 +:1021F000051C0000321E0000051C8000333F0C88C7 +:10220000051D0000361A1958051D800037CC26DF41 +:10221000051E00000E1B34D2061E21E03BC41179BE +:102220000A00000100000001021B148000000001F0 +:102230000A00000100000002021B148000000001DF +:102240000A00000100000004021B148000000000CE +:102250000118000000000000011800040000000048 +:1022600001180008000000000118000C0000000028 +:102270000118001000000000011800140000000008 +:1022800003180020001A117B031800A40002119506 +:1022900002180224000000000218023400000000AE +:1022A0000218024C00000000021802E4000000FFC7 +:1022B00008181000000004000A00000100000010CF +:1022C0000818200000000600031A1A2000041197C5 +:1022D000041A300000000012041A309000000012AE +:1022E000041AD4C800000002041AD4D80000002048 +:1022F000041AD5D800000002041B440000000006A8 +:10230000031A1A300004119B041A3048000000120E +:10231000041A30D800000012041AD4D000000002C1 +:10232000041AD55800000020041AD5E0000000026D +:10233000041B441800000006031A40000002119F0D +:10234000041A500000000002041A5080000000121D +:10235000031A6140000211A1041AA000000000024B +:10236000041B443000000002031A4008000211A3BD +:10237000041A501000000002041A50C80000001295 +:10238000031A6148000211A5041AA0080000000207 +:10239000041B443800000002031A4010000211A779 +:1023A000041A502000000002041A5110000000120C +:1023B000031A6150000211A9041AA01000000002C3 +:1023C000041B444000000002031A4018000211AB35 +:1023D000041A503000000002041A51580000001284 +:1023E000031A6158000211AD041AA018000000027F +:1023F000041B444800000002031A4020000211AFF1 +:10240000041A504000000002041A51A000000012FB +:10241000031A6160000211B1041AA020000000023A +:10242000041B445000000002031A4028000211B3AC +:10243000041A505000000002041A51E80000001273 +:10244000031A6168000211B5041AA02800000002F6 +:10245000041B445800000002031A4030000211B768 +:10246000041A506000000002041A523000000012EA +:10247000031A6170000211B9041AA03000000002B2 +:10248000041B446000000002031A4038000211BB24 +:10249000041A507000000002041A52780000001262 +:1024A000031A6178000211BD041AA038000000026E +:1024B000041B446800000002020E004C00000032C1 +:1024C000030E0054000811BF030E0094000711C74B +:1024D000030E00B4000211CE020E00C40000000082 +:1024E000020E00CC00000006030E00D8000211D03E +:1024F000020E014400000001030E014C000211D243 +:10250000020E020400000001030E020C000211D4AE +:10251000030E021C000411D6030E0280001B11DA08 +:10252000040E030000000012040E2000000008004A +:102530000A00000100000008040E02EC0000000583 +:10254000030E0004001111F5020E01100000000F2F +:10255000020E01140000002F020E01100000001FE7 +:10256000020E01140000003F020E01100000004F97 +:10257000020E01140000006F020E01100000005F47 +:10258000020E01140000007F020C10000000002861 +:10259000030C400800041206030C401C0004120A3D +:1025A000030C40380006120E040C40500000001FBF +:1025B000020C40CC00000001040C40D00000003AA6 +:1025C000030C41B800061214040C41D00000001A9C +:1025D000030C42380004121A010C424800000000AB +:1025E000010C424C00000000010C425000000000B1 +:1025F000010C425400000000010C42580000000091 +:10260000010C425C00000000010C42600000000070 +:10261000010C426400000000010C42680000000050 +:10262000010C426C00000000010C42700000000030 +:10263000010C427400000000010C42780000000010 +:10264000010C427C00000000010C428000000000F0 +:10265000030C42D80004121E0A0000010000000909 +:10266000020C4000000003E80A0000010000000A1C +:10267000020C4000000000030A0000010000000CF2 +:10268000020C4000000000010A00000100001001DF +:10269000020C4000000005DC0A00000100001002EE +:1026A000020C4000000000040A00000100001004B9 +:1026B000020C4000000000010A000001000020019F +:1026C000020C4000000005DC0A00000100002002AE +:1026D000020C4000000000040A0000010000200479 +:1026E000020C4000000000010530040000C00000A2 +:1026F000063007E800031222043200000000400008 +:1027000004332400000016000A0000010000000845 +:10271000023000BC0000003203322C700090122402 +:10272000033234C0000812B40432408000000010AC +:10273000033240C0000212BC03337400000412BE16 +:10274000023380000000001A023380400000004E77 +:102750000233808000000010023380C0000000209F +:1027600002338BC0000000010A00000200000008D4 +:102770000233838000086470023383C000000226A5 +:102780000A000002000000090233830000086470A0 +:1027900002338340000002260A0000020000000A03 +:1027A000023383000000055F023383400000000114 +:1027B0000A0000020000000C0233830000000157F1 +:1027C00002338340000000000A00000200001000F5 +:1027D00002338380000C96A8023383C000000339C3 +:1027E0000A0000020000100102338300000C96A8CA +:1027F00002338340000003390A0000020000100287 +:10280000023383000000080E023383400000000200 +:102810000A000002000010040233830000000203DB +:1028200002338340000000000A0000020000200084 +:1028300002338380000CF850023383C0000003523F +:102840000A0000020000200102338300000CF8504F +:1028500002338340000003520A00000200002002FD +:10286000023383000000084D023383400000000261 +:102870000A0000020000200402338300000002135B +:1028800002338340000000000534000035140000CE +:1028900005348000352E0D450535000038931A911A +:1028A00005358000377D28B60536000034DC3696C5 +:1028B000053680001E3E43CD0636C630273A12C28A +:1028C0000A00000100000001023314800000000132 +:1028D0000A00000100000002023314800000000121 +:1028E0000A00000100000004023314800000000010 +:1028F0000130000000000000013000040000000072 +:1029000001300008000000000130000C0000000051 +:102910000130001000000000013000140000000031 +:1029200003300020001A12C4033000A4000212DE9B +:1029300002300224000000000230023400000000D7 +:102940000230024C00000000023002E40000FFFFF1 +:1029500008302000000008000A00000100000010FC +:10296000083040000000020004322C400000000249 +:1029700003322C50000412E0043293C00000000225 +:1029800004329400000000100432C0000000002057 +:102990000432C100000000200432C2000000002008 +:1029A0000432C300000000200432C40000000020F4 +:1029B0000432C500000000200432C60000000020E0 +:1029C0000432C700000000200432C80000000020CC +:1029D0000432C900000000200432CA0000000020B8 +:1029E0000432CB00000000200432CC0000000020A4 +:1029F0000432CD00000000200432CE000000002090 +:102A00000432CF00000000200432DB80000000020E +:102A100004322C480000000203322C60000412E44F +:102A2000043293C8000000020432944000000010F9 +:102A30000432C080000000200432C1800000002069 +:102A40000432C280000000200432C3800000002055 +:102A50000432C480000000200432C5800000002041 +:102A60000432C680000000200432C780000000202D +:102A70000432C880000000200432C9800000002019 +:102A80000432CA80000000200432CB800000002005 +:102A90000432CC80000000200432CD8000000020F1 +:102AA0000432CE80000000200432CF8000000020DD +:102AB0000432DB8800000002043210100000000223 +:102AC00004322C000000000204321020000000023A +:102AD00004322C0800000002043210300000000212 +:102AE00004322C10000000020432104000000002EA +:102AF00004322C18000000020432105000000002C2 +:102B000004322C2000000002043210600000000299 +:102B100004322C2800000002043210700000000271 +:102B200004322C3000000002043210800000000249 +:102B300004322C380000000202020058000000326B +:102B400003020060000812E8030200A0000B12F06C +:102B5000020200D000000007030200DC000312FBA9 +:102B6000030200F0000212FE020200FC0000000C52 +:102B700002020120000000000202013400000002F5 +:102B8000020201B0000000010202020C000000017C +:102B900003020214000213000202040400000001F8 +:102BA0000302040C000213020302041C00041304B9 +:102BB0000302048000201308040205000000001234 +:102BC0000402800000002000030200040014132807 +:102BD00002020108000000C8020201180000000201 +:102BE000020201C400000000020201CC000000004B +:102BF000020201D400000002020201DC0000000217 +:102C0000020201E4000000FF020201EC000000FFEC +:102C10000202010C000000C80202011C00000002B8 +:102C2000020201C800000000020201D00000000002 +:102C3000020201D800000002020201E000000002CE +:102C4000020201E8000000FF020201F0000000FFA4 +:102C500002020108000000C8020201180000000280 +:102C6000020201C400000000020201CC00000000CA +:102C7000020201D400000002020201DC0000000296 +:102C8000020201E4000000FF020201EC000000FF6C +:102C90000202010C000000C80202011C0000000238 +:102CA000020201C800000000020201D00000000082 +:102CB000020201D800000002020201E0000000024E +:102CC000020201E8000000FF020201F0000000FF24 +:102CD00002020108000000C8020201180000000200 +:102CE000020201C400000000020201CC000000004A +:102CF000020201D400000002020201DC0000000216 +:102D0000020201E4000000FF020201EC000000FFEB +:102D10000202010C000000C80202011C00000002B7 +:102D2000020201C800000000020201D00000000001 +:102D3000020201D800000002020201E000000002CD +:102D4000020201E8000000FF020201F0000000FFA3 +:102D500002020108000000C802020118000000027F +:102D6000020201C400000000020201CC00000000C9 +:102D7000020201D400000002020201DC0000000295 +:102D8000020201E4000000FF020201EC000000FF6B +:102D90000202010C000000C80202011C0000000237 +:102DA000020201C800000000020201D00000000081 +:102DB000020201D800000002020201E0000000024D +:102DC000020201E8000000FF020201F0000000FF23 +:102DD0000216100000000028031660080003133CD0 +:102DE0000316601C0004133F0316603800121343DF +:102DF000041660800000000E021660B8000000019A +:102E0000041660BC00000008021660DC000000012F +:102E1000041660E000000004021660F000000001EB +:102E2000041660F400000031031661B80002135567 +:102E3000041661C000000007031661DC000613578A +:102E4000041661F400000011031662380004135DDB +:102E500001166248000000000116624C00000000EC +:102E600001166250000000000116625400000000CC +:102E700001166258000000000116625C00000000AC +:102E8000011662600000000001166264000000008C +:102E900001166268000000000116626C000000006C +:102EA000011662700000000001166274000000004C +:102EB00001166278000000000116627C000000002C +:102EC000011662D400000000031662D800041361EA +:102ED0000A0000010000000902166000000003E87B +:102EE0000A0000010000000A021660000000000352 +:102EF0000A0000010000000C021660000000000142 +:102F00000A0000010000100102166000000005DC4C +:102F10000A00000100001002021660000000000418 +:102F20000A00000100001004021660000000000109 +:102F30000A0000010000200102166000000005DC0C +:102F40000A000001000020020216600000000004D8 +:102F50000A000001000020040216600000000001C9 +:102F60000528040000AA0000062807C8000713650A +:102F7000042A000000004000042B2400000016007A +:102F80000A00000200000008022800BC0000003215 +:102F9000022B945C00000032032A30000002136709 +:102FA000032A400000101369032A840800081379DB +:102FB000032A934800041381032A966800081385A6 +:102FC000032A98B80002138D032A99500090138F9A +:102FD000032B4D900014141F022B800000000000F2 +:102FE000022B804000000018022B80800000000CA3 +:102FF000022B80C000000066022B8BC00000000185 +:103000000A00000300000008022A9CA80000000239 +:10301000022B838000086470022B83C0000002260C +:103020000A00000200000009022B830000086470FF +:10303000022B8340000002260A0000020000000A62 +:10304000022B83000000055F022B8340000000017B +:103050000A0000020000000C022B83000000015750 +:10306000022B8340000000000A0000030000002043 +:10307000022A9CAC00000000032AC4E000041433C0 +:10308000032AC500000214370A00000200000040B5 +:10309000022A9CAC00000001032AC4E0000A143993 +:1030A0000A00000300001000022A9CA80000000390 +:1030B000022B8380000C96A8022B83C000000339EA +:1030C0000A00000200001001022B8300000C96A8E9 +:1030D000022B8340000003390A00000200001002A6 +:1030E000022B83000000080E022B83400000000228 +:1030F0000A00000200001004022B830000000203FB +:10310000022B8340000000000A00000300002000A2 +:10311000022A9CA800000004022B8380000CF850B7 +:10312000022B83C0000003520A00000200002001AD +:10313000022B8300000CF850022B83400000035246 +:103140000A00000200002002022B83000000084D4C +:10315000022B8340000000020A000002000020044D +:10316000022B830000000213022B834000000000AA +:103170000A00000100004000022A9CB0000000008C +:103180000A00000100008000022A9CB0000000013B +:10319000022B944000000001042B94480000000220 +:1031A000052C000035190000052C800038440D471F +:1031B000052D000039B61B58052D80003CCD29C6D1 +:1031C000052E00003AA338FA052E800031A647A349 +:1031D000052F000023C2540D062F4E8016301443D5 +:1031E0000A00000100000001022B14800000000111 +:1031F0000A00000100000002022B14800000000100 +:103200000A00000100000004022B148000000000EE +:103210000128000000000000012800040000000058 +:1032200001280008000000000128000C0000000038 +:103230000128001000000000012800140000000018 +:1032400003280020001A1445032800A40002145F7C +:1032500002280224000000000228023400000000BE +:103260000228024C00000000022802E40000FFFFD8 +:1032700008282000000008000A00000100000010DB +:103280000828400000000200042A5000000000024C +:10329000042A501000000002042A502000000002FE +:1032A000042A503000000002042A93580000002035 +:1032B000042A94580000000E032A9490000214611E +:1032C000042A94D80000000E032A9510000214630B +:1032D000042A95580000000E032A959000021465F8 +:1032E000042A95D80000000E032A961000021467E5 +:1032F000032A968800021469042ABC980000000280 +:10330000042A500800000002042A5018000000029D +:10331000042A502800000002042A5038000000024D +:10332000042A93D800000020042A94980000000E7C +:10333000032A94D00002146B042A95180000000E92 +:10334000032A95500002146D042A95980000000E7F +:10335000032A95D00002146F042A96180000000E6C +:10336000032A965000021471032A969000021473E7 +:10337000042ABCA000000002042A50480000000EED +:10338000032A969800101475042A98D000000002B1 +:10339000042A991000000002042AC48000000002E0 +:1033A000042A50800000000E032A96D800101485CD +:1033B000042A98D800000002042A9918000000028C +:1033C000042AC48800000002042A50B80000000E3D +:1033D000032A971800101495042A98E000000002B0 +:1033E000042A992000000002042AC4900000000270 +:1033F000042A50F00000000E032A9758001014A56C +:10340000042A98E800000002042A9928000000021B +:10341000042AC49800000002042A51280000000E6B +:10342000032A9798001014B5042A98F000000002AF +:10343000042A993000000002042AC4A000000002FF +:10344000042A51600000000E032A97D8001014C50A +:10345000042A98F800000002042A993800000002AB +:10346000042AC4A800000002042A51980000000E9B +:10347000032A9818001014D5042A990000000002AD +:10348000042A994000000002042AC4B0000000028F +:10349000042A51D00000000E032A9858001014E5A9 +:1034A000042A990800000002042A9948000000023A +:1034B000042AC4B8000000020400A0000000000CB0 +:1034C0000400A050000000020300A0EC000814F566 +:1034D0000300A19C000414FD0200A45C00000C0089 +:1034E0000400A6A8000000020200A6D00000000010 +:1034F0000200A61C000000030300A07000051501D7 +:103500000400A084000000050200A0980FE0000065 +:103510000400A09C000000070300A0B8000D1506E1 +:103520000400A22C000000040200A688000000FC99 +:103530000400A68C000000070200A6F400000000B2 +:103540000300A10C000615130400A12400000005CF +:103550000200A1380FE000000400A13C00000007B9 +:103560000300A158000D15190400A23C000000043E +:103570000200A6B0000000FC0400A6B40000000792 +:103580000200A6F8000000000200A03000000000C9 +:103590000200A034000000000200A038000000007B +:1035A0000200A03C000000000200A040000000005B +:1035B0000200A044000000000200A048000000003B +:1035C0000200A04C0000000000000000000000000D +:1035D00000000001000000000000000000000000EA +:1035E00000000000000000000000000000000000DB +:1035F0000000000000000000000000000001000CBE +:10360000000C00140014001C00000000000000006A +:1036100000000000000000000000000000000000AA +:103620000000000000000000001C002E0000000050 +:1036300000000000002E002F002F0030003000316D +:1036400000310032003200330033003400340035E2 +:10365000003500360036003D00000000000000008C +:10366000000000000000000000000000000000005A +:10367000000000000000000000000000000000004A +:10368000003D00460000000000000000004600472A +:1036900000470048004800490049004A004A004BE2 +:1036A000004B004C004C004D004D004E004E007889 +:1036B000000000000000000000000000000000000A +:1036C00000000000000000000000000000000000FA +:1036D0000000000000000000007801D3000000009E +:1036E0000000000001D301D801D801DD01DD01E2B5 +:1036F00001E201E701E701EC01EC01F101F101F662 +:1037000001F601FB000000000000000000000000C6 +:1037100000000000000000000000000000000000A9 +:103720000000000000000000000000000000000099 +:1037300001FB01FF0000000000000000000000008D +:103740000000000000000000000000000000000079 +:1037500000000000000000000000000001FF020F58 +:103760000000000000000000020F0211021102130D +:103770000213021502150217021702190219021B81 +:10378000021B021D021D021F0000000000000000BD +:103790000000000000000000000000000000000029 +:1037A0000000000000000000000000000000000019 +:1037B00000000000021F02220000000000000000C4 +:1037C00002220225022502280228022B022B022EA9 +:1037D000022E023102310234023402370237023A39 +:1037E000023A023E023E02420242024602460247BC +:1037F00002470248024802490249024A024A024B71 +:10380000024B024C024C024D024D024E024E02533C +:10381000025302700270028C028C028D028D028EA5 +:10382000028E028F028F0290029002910291029208 +:103830000292029302930294029402AB00000000F1 +:103840000000000000000000000000000000000078 +:103850000000000000000000000000000000000068 +:103860000000000002AB02B80000000000000000F1 +:1038700002B802B902B902BA02BA02BB02BB02BC68 +:1038800002BC02BD02BD02BE02BE02BF02BF02C038 +:1038900002C002D100000000000000000000000093 +:1038A0000000000000000000000000000000000018 +:1038B00000000000000000000000000002D102DF54 +:1038C000000000000000000002DF02E002E002E170 +:1038D00002E102E202E202E302E302E402E402E5C0 +:1038E00002E502E602E602E702E702EC0000000061 +:1038F00000000000000000000000000000000000C8 +:1039000000000000000000000000000000000000B7 +:103910000000000002EC038A00000000000000002C +:103920000000000000000000000000000000000097 +:103930000000000000000000000000000000000087 +:10394000038A038C0000000000000000000000005B +:103950000000000000000000000000000000000067 +:10396000000000000000000000000000038C03A025 +:10397000000000000000000003A003A103A103A2B7 +:1039800003A203A303A303A403A403A503A503A6FF +:1039900003A603A703A703A803A803C803C803CB70 +:1039A00003CB03CE00000000000000000000000078 +:1039B0000000000000000000000000000000000007 +:1039C0000000000003CE03F600000000000000002D +:1039D00000000000000000000000000000000000E7 +:1039E00000000000000000000000000000000000D7 +:1039F00003F6044C044C04530453045A045A046060 +:103A0000046004660466046C046C04720472047836 +:103A10000478047E047E04840484048A048A049C5A +:103A20000000000000000000049C049D049D049E12 +:103A3000049E049F049F04A004A004A104A104A266 +:103A400004A204A304A304A404A404A50000000089 +:103A50000000000000000000000000000000000066 +:103A60000000000000000000000000000000000056 +:103A70000000000004A504D00000000000000000C9 +:103A80000000000000000000000000000000000036 +:103A90000000000000000000000000000000000026 +:103AA00004D00520052005350535054A054A054C95 +:103AB000054C054E054E055005500552055205545E +:103AC00005540556055605580558055A055A056DFD +:103AD0000000000000000000056D05750575057DFE +:103AE000057D05850585058D058D05950595059D46 +:103AF000059D05A505A505AD05AD05AE00000000B9 +:103B000000000000000000000000000000000000B5 +:103B100000000000000000000000000000000000A5 +:103B20000000000005AE05DF0000000000000000FE +:103B30000000000000000000000000000000000085 +:103B40000000000000000000000000000000000075 +:103B500005DF0644064406530653066206620667FE +:103B60000667066C066C0671067106760676067B9D +:103B7000067B0680068006850685068A068A0692EA +:103B80000692069B069B06A406A406A506A506A605 +:103B900006A606A706A706A806A806A906A906AAB5 +:103BA00006AA06AB06AB06AC000000000000000051 +:103BB00000002000000040000000600000008000C5 +:103BC0000000A0000000C0000000E00000010000B4 +:103BD00000012000000140000001600000018000A1 +:103BE0000001A0000001C0000001E0000002000090 +:103BF000000220000002400000026000000280007D +:103C00000002A0000002C0000002E000000300006B +:103C10000003200000034000000360000003800058 +:103C20000003A0000003C0000003E0000004000047 +:103C30000004200000044000000460000004800034 +:103C40000004A0000004C0000004E0000005000023 +:103C50000005200000054000000560000005800010 +:103C60000005A0000005C0000005E00000060000FF +:103C700000062000000640000006600000068000EC +:103C80000006A0000006C0000006E00000070000DB +:103C900000072000000740000007600000078000C8 +:103CA0000007A0000007C0000007E00000080000B7 +:103CB00000082000000840000008600000088000A4 +:103CC0000008A0000008C0000008E0000009000093 +:103CD0000009200000094000000960000009800080 +:103CE0000009A0000009C0000009E000000A00006F +:103CF000000A2000000A4000000A6000000A80005C +:103D0000000AA000000AC000000AE000000B00004A +:103D1000000B2000000B4000000B6000000B800037 +:103D2000000BA000000BC000000BE000000C000026 +:103D3000000C2000000C4000000C6000000C800013 +:103D4000000CA000000CC000000CE000000D000002 +:103D5000000D2000000D4000000D6000000D8000EF +:103D6000000DA000000DC000000DE000000E0000DE +:103D7000000E2000000E4000000E6000000E8000CB +:103D8000000EA000000EC000000EE000000F0000BA +:103D9000000F2000000F4000000F6000000F8000A7 +:103DA000000FA000000FC000000FE0000010000096 +:103DB0000010200000104000001060000010800083 +:103DC0000010A0000010C0000010E0000011000072 +:103DD000001120000011400000116000001180005F +:103DE0000011A0000011C0000011E000001200004E +:103DF000001220000012400000126000001280003B +:103E00000012A0000012C0000012E0000013000029 +:103E10000013200000134000001360000013800016 +:103E20000013A0000013C0000013E0000014000005 +:103E300000142000001440000014600000148000F2 +:103E40000014A0000014C0000014E00000150000E1 +:103E500000152000001540000015600000158000CE +:103E60000015A0000015C0000015E00000160000BD +:103E700000162000001640000016600000168000AA +:103E80000016A0000016C0000016E0000017000099 +:103E90000017200000174000001760000017800086 +:103EA0000017A0000017C0000017E0000018000075 +:103EB0000018200000184000001860000018800062 +:103EC0000018A0000018C0000018E0000019000051 +:103ED000001920000019400000196000001980003E +:103EE0000019A0000019C0000019E000001A00002D +:103EF000001A2000001A4000001A6000001A80001A +:103F0000001AA000001AC000001AE000001B000008 +:103F1000001B2000001B4000001B6000001B8000F5 +:103F2000001BA000001BC000001BE000001C0000E4 +:103F3000001C2000001C4000001C6000001C8000D1 +:103F4000001CA000001CC000001CE000001D0000C0 +:103F5000001D2000001D4000001D6000001D8000AD +:103F6000001DA000001DC000001DE000001E00009C +:103F7000001E2000001E4000001E6000001E800089 +:103F8000001EA000001EC000001EE000001F000078 +:103F9000001F2000001F4000001F6000001F800065 +:103FA000001FA000001FC000001FE0000020000054 +:103FB0000020200000204000002060000020800041 +:103FC0000020A0000020C0000020E0000021000030 +:103FD000002120000021400000216000002180001D +:103FE0000021A0000021C0000021E000002200000C +:103FF00000222000002240000022600000228000F9 +:104000000022A0000022C0000022E00000230000E7 +:1040100000232000002340000023600000238000D4 +:104020000023A0000023C0000023E00000240000C3 +:1040300000242000002440000024600000248000B0 +:104040000024A0000024C0000024E000002500009F +:10405000002520000025400000256000002580008C +:104060000025A0000025C0000025E000002600007B +:104070000026200000264000002660000026800068 +:104080000026A0000026C0000026E0000027000057 +:104090000027200000274000002760000027800044 +:1040A0000027A0000027C0000027E0000028000033 +:1040B0000028200000284000002860000028800020 +:1040C0000028A0000028C0000028E000002900000F +:1040D00000292000002940000029600000298000FC +:1040E0000029A0000029C0000029E000002A0000EB +:1040F000002A2000002A4000002A6000002A8000D8 +:10410000002AA000002AC000002AE000002B0000C6 +:10411000002B2000002B4000002B6000002B8000B3 +:10412000002BA000002BC000002BE000002C0000A2 +:10413000002C2000002C4000002C6000002C80008F +:10414000002CA000002CC000002CE000002D00007E +:10415000002D2000002D4000002D6000002D80006B +:10416000002DA000002DC000002DE000002E00005A +:10417000002E2000002E4000002E6000002E800047 +:10418000002EA000002EC000002EE000002F000036 +:10419000002F2000002F4000002F6000002F800023 +:1041A000002FA000002FC000002FE0000030000012 +:1041B00000302000003040000030600000308000FF +:1041C0000030A0000030C0000030E00000310000EE +:1041D00000312000003140000031600000318000DB +:1041E0000031A0000031C0000031E00000320000CA +:1041F00000322000003240000032600000328000B7 +:104200000032A0000032C0000032E00000330000A5 +:104210000033200000334000003360000033800092 +:104220000033A0000033C0000033E0000034000081 +:10423000003420000034400000346000003480006E +:104240000034A0000034C0000034E000003500005D +:10425000003520000035400000356000003580004A +:104260000035A0000035C0000035E0000036000039 +:104270000036200000364000003660000036800026 +:104280000036A0000036C0000036E0000037000015 +:104290000037200000374000003760000037800002 +:1042A0000037A0000037C0000037E00000380000F1 +:1042B00000382000003840000038600000388000DE +:1042C0000038A0000038C0000038E00000390000CD +:1042D00000392000003940000039600000398000BA +:1042E0000039A0000039C0000039E000003A0000A9 +:1042F000003A2000003A4000003A6000003A800096 +:10430000003AA000003AC000003AE000003B000084 +:10431000003B2000003B4000003B6000003B800071 +:10432000003BA000003BC000003BE000003C000060 +:10433000003C2000003C4000003C6000003C80004D +:10434000003CA000003CC000003CE000003D00003C +:10435000003D2000003D4000003D6000003D800029 +:10436000003DA000003DC000003DE000003E000018 +:10437000003E2000003E4000003E6000003E800005 +:10438000003EA000003EC000003EE000003F0000F4 +:10439000003F2000003F4000003F6000003F8000E1 +:1043A000003FA000003FC000003FE00000400000D0 +:1043B00000402000004040000040600000408000BD +:1043C0000040A0000040C0000040E00000410000AC +:1043D0000041200000414000004160000041800099 +:1043E0000041A0000041C0000041E0000042000088 +:1043F0000042200000424000004260000042800075 +:104400000042A0000042C0000042E0000043000063 +:104410000043200000434000004360000043800050 +:104420000043A0000043C0000043E000004400003F +:10443000004420000044400000446000004480002C +:104440000044A0000044C0000044E000004500001B +:104450000045200000454000004560000045800008 +:104460000045A0000045C0000045E00000460000F7 +:1044700000462000004640000046600000468000E4 +:104480000046A0000046C0000046E00000470000D3 +:1044900000472000004740000047600000478000C0 +:1044A0000047A0000047C0000047E00000480000AF +:1044B000004820000048400000486000004880009C +:1044C0000048A0000048C0000048E000004900008B +:1044D0000049200000494000004960000049800078 +:1044E0000049A0000049C0000049E000004A000067 +:1044F000004A2000004A4000004A6000004A800054 +:10450000004AA000004AC000004AE000004B000042 +:10451000004B2000004B4000004B6000004B80002F +:10452000004BA000004BC000004BE000004C00001E +:10453000004C2000004C4000004C6000004C80000B +:10454000004CA000004CC000004CE000004D0000FA +:10455000004D2000004D4000004D6000004D8000E7 +:10456000004DA000004DC000004DE000004E0000D6 +:10457000004E2000004E4000004E6000004E8000C3 +:10458000004EA000004EC000004EE000004F0000B2 +:10459000004F2000004F4000004F6000004F80009F +:1045A000004FA000004FC000004FE000005000008E +:1045B000005020000050400000506000005080007B +:1045C0000050A0000050C0000050E000005100006A +:1045D0000051200000514000005160000051800057 +:1045E0000051A0000051C0000051E0000052000046 +:1045F0000052200000524000005260000052800033 +:104600000052A0000052C0000052E0000053000021 +:10461000005320000053400000536000005380000E +:104620000053A0000053C0000053E00000540000FD +:1046300000542000005440000054600000548000EA +:104640000054A0000054C0000054E00000550000D9 +:1046500000552000005540000055600000558000C6 +:104660000055A0000055C0000055E00000560000B5 +:1046700000562000005640000056600000568000A2 +:104680000056A0000056C0000056E0000057000091 +:10469000005720000057400000576000005780007E +:1046A0000057A0000057C0000057E000005800006D +:1046B000005820000058400000586000005880005A +:1046C0000058A0000058C0000058E0000059000049 +:1046D0000059200000594000005960000059800036 +:1046E0000059A0000059C0000059E000005A000025 +:1046F000005A2000005A4000005A6000005A800012 +:10470000005AA000005AC000005AE000005B000000 +:10471000005B2000005B4000005B6000005B8000ED +:10472000005BA000005BC000005BE000005C0000DC +:10473000005C2000005C4000005C6000005C8000C9 +:10474000005CA000005CC000005CE000005D0000B8 +:10475000005D2000005D4000005D6000005D8000A5 +:10476000005DA000005DC000005DE000005E000094 +:10477000005E2000005E4000005E6000005E800081 +:10478000005EA000005EC000005EE000005F000070 +:10479000005F2000005F4000005F6000005F80005D +:1047A000005FA000005FC000005FE000006000004C +:1047B0000060200000604000006060000060800039 +:1047C0000060A0000060C0000060E0000061000028 +:1047D0000061200000614000006160000061800015 +:1047E0000061A0000061C0000061E0000062000004 +:1047F00000622000006240000062600000628000F1 +:104800000062A0000062C0000062E00000630000DF +:1048100000632000006340000063600000638000CC +:104820000063A0000063C0000063E00000640000BB +:1048300000642000006440000064600000648000A8 +:104840000064A0000064C0000064E0000065000097 +:104850000065200000654000006560000065800084 +:104860000065A0000065C0000065E0000066000073 +:104870000066200000664000006660000066800060 +:104880000066A0000066C0000066E000006700004F +:10489000006720000067400000676000006780003C +:1048A0000067A0000067C0000067E000006800002B +:1048B0000068200000684000006860000068800018 +:1048C0000068A0000068C0000068E0000069000007 +:1048D00000692000006940000069600000698000F4 +:1048E0000069A0000069C0000069E000006A0000E3 +:1048F000006A2000006A4000006A6000006A8000D0 +:10490000006AA000006AC000006AE000006B0000BE +:10491000006B2000006B4000006B6000006B8000AB +:10492000006BA000006BC000006BE000006C00009A +:10493000006C2000006C4000006C6000006C800087 +:10494000006CA000006CC000006CE000006D000076 +:10495000006D2000006D4000006D6000006D800063 +:10496000006DA000006DC000006DE000006E000052 +:10497000006E2000006E4000006E6000006E80003F +:10498000006EA000006EC000006EE000006F00002E +:10499000006F2000006F4000006F6000006F80001B +:1049A000006FA000006FC000006FE000007000000A +:1049B00000702000007040000070600000708000F7 +:1049C0000070A0000070C0000070E00000710000E6 +:1049D00000712000007140000071600000718000D3 +:1049E0000071A0000071C0000071E00000720000C2 +:1049F00000722000007240000072600000728000AF +:104A00000072A0000072C0000072E000007300009D +:104A1000007320000073400000736000007380008A +:104A20000073A0000073C0000073E0000074000079 +:104A30000074200000744000007460000074800066 +:104A40000074A0000074C0000074E0000075000055 +:104A50000075200000754000007560000075800042 +:104A60000075A0000075C0000075E0000076000031 +:104A7000007620000076400000766000007680001E +:104A80000076A0000076C0000076E000007700000D +:104A900000772000007740000077600000778000FA +:104AA0000077A0000077C0000077E00000780000E9 +:104AB00000782000007840000078600000788000D6 +:104AC0000078A0000078C0000078E00000790000C5 +:104AD00000792000007940000079600000798000B2 +:104AE0000079A0000079C0000079E000007A0000A1 +:104AF000007A2000007A4000007A6000007A80008E +:104B0000007AA000007AC000007AE000007B00007C +:104B1000007B2000007B4000007B6000007B800069 +:104B2000007BA000007BC000007BE000007C000058 +:104B3000007C2000007C4000007C6000007C800045 +:104B4000007CA000007CC000007CE000007D000034 +:104B5000007D2000007D4000007D6000007D800021 +:104B6000007DA000007DC000007DE000007E000010 +:104B7000007E2000007E4000007E6000007E8000FD +:104B8000007EA000007EC000007EE000007F0000EC +:104B9000007F2000007F4000007F6000007F8000D9 +:104BA000007FA000007FC000007FE000007FE001E8 +:104BB00000000000000001FF0000020000000000F3 +:104BC000000003FF00000400000000AA000000FA3B +:104BD0000000000A000000320000014A000001EA63 +:104BE0000000000F00000037000000AA000000FADB +:104BF0000000000A000000320000014A000001EA43 +:104C00000000000F0000003700000001000000025B +:104C1000000000000000000802150020021500201E +:104C20000810000000000036000000000000000432 +:104C3000000000040000000000000000000000016F +:104C4000000000040000000200000002000000015B +:104C500000000002000000200000004000000040B2 +:104C6000000000030000001800002000000040C009 +:104C700000006180000082400000A3000000C3C06B +:104C80000000E4800001054000012600000146C04C +:104C900000016780000188400001A9000001C9C02F +:104CA0000001EA8000020B4000022C0000024CC010 +:104CB00000026D8000028E400002AF000002CFC0F3 +:104CC0000002F0800000114000000001000000011F +:104CD00000000001000000010000000100000001D0 +:104CE00000000001000000010000000100000001C0 +:104CF00000000001000000010000000100000001B0 +:104D0000000000010003D0000000003D0000000191 +:104D1000000D0000000700D000028140000B8168F8 +:104D20000002022000010240000F02500001034077 +:104D3000000C0000000800C000028140000B8168E8 +:104D4000000202200001024000070250000202C0DF +:104D5000001000000008010000028180000B81A803 +:104D60000002026000018280000E82980008038029 +:104D7000000F0000000100F000028100000901287E +:104D8000000201B8000101D8000E01E8000002C8CD +:104D9000FFFFFFF301AFFFFF000000000000000075 +:104DA0000000000000000000000000000000000003 +:104DB000FFFFFFF100EFFFFF000000000000000018 +:104DC00000000000000000000001000000000000E2 +:104DD000FFFFFFF6005FFFFF000000000000000083 +:104DE00000000000000000000002000000000000C1 +:104DF000FFFFF4061CBFFFFF0000000500000000DD +:104E0000000000140000000000040000000000008A +:104E1000FFFFFFF2004FFFFF000000000000000056 +:104E2000000000000000000000080000000000007A +:104E3000FFFFFFFA002FFFFF00000000000000004E +:104E40000000000000000000001000000000000052 +:104E5000FFFFFFF701EFFFFF000000000000000070 +:104E60000000000000000000002000000000000022 +:104E7000FFFFFFF5002FFFFF000000000000000013 +:104E800000000000000000000040000000000000E2 +:104E9000FFFFFFF3018FFFFF000000000000000094 +:104EA0000000000000000000000000000000000002 +:104EB000FFFFFFF1010FFFFF0000000000000000F6 +:104EC00000000000000000000001000000000000E1 +:104ED000FFFFFFF6005FFFFF000000000000000082 +:104EE00000000000000000000002000000000000C0 +:104EF000FFFFF4061CBFFFFF0000000500000000DC +:104F00000000001400000000000400000000000089 +:104F1000FFFFFFF2004FFFFF000000000000000055 +:104F20000000000000000000000800000000000079 +:104F3000FFFFFFFA002FFFFF00000000000000004D +:104F40000000000000000000001000000000000051 +:104F5000FFFFFFF700EFFFFF000000000000000070 +:104F60000000000000000000002000000000000021 +:104F7000FFFFFFF5004FFFFF0000000000000000F2 +:104F800000000000000000000040000000000000E1 +:104F9000FFFFFFFF00CFFFFF000000000000000048 +:104FA000000000CC00000000000000000000000035 +:104FB000FFFFFFFF00CFFFFF000000000000000028 +:104FC000000000CC00000000000100000000000014 +:104FD000FFFFFFFF00CFFFFF000000000000000008 +:104FE000000000CC000000000002000000000000F3 +:104FF000FFFFFFFF00CFFFFF0000000000000000E8 +:10500000000000CC000000000004000000000000D0 +:10501000FFFFFFFF00CFFFFF0000000000000000C7 +:10502000000000CC000000000008000000000000AC +:10503000FFFFFFFF00CFFFFF0000000000000000A7 +:10504000000000CC00000000001000000000000084 +:10505000FFFFFFFF00CFFFFF000000000000000087 +:10506000000000CC00000000002000000000000054 +:10507000FFFFFFFF00CFFFFF000000000000000067 +:10508000000000CC00000000004000000000000014 +:10509000FFFFFFF3020FFFFF000000000000000011 +:1050A0000000000000000000000000000000000000 +:1050B000FFFFFFF1010FFFFF0000000000000000F4 +:1050C00000000000000000000001000000000000DF +:1050D000FFFFFFF6005FFFFF000000000000000080 +:1050E00000000000000000000002000000000000BE +:1050F000FFFFF4061CBFFFFF0000000500000000DA +:105100000000001400000000000400000000000087 +:10511000FFFFFFF2004FFFFF000000000000000053 +:105120000000000000000000000800000000000077 +:10513000FFFFFF8A042FFFFF0000000000000000B7 +:10514000000000000000000000100000000000004F +:10515000FFFFFF9705CFFFFF0000000000000000E9 +:10516000000000000000000000200000000000001F +:10517000FFFFFFF5010FFFFF00000000000000002F +:1051800000000000000000000040000000000000DF +:10519000FFFFFFF301EFFFFF000000000000000031 +:1051A00000000000000000000000000000000000FF +:1051B000FFFFFFF1002FFFFF0000000000000000D4 +:1051C00000000000000000000001000000000000DE +:1051D000FFFFFFF6005FFFFF00000000000000007F +:1051E00000000000000000000002000000000000BD +:1051F000FFFFFF061CBFFFFF0000000000000000D3 +:105200000000001400000000000400000000000086 +:10521000FFFFFFF2004FFFFF000000000000000052 +:105220000000000000000000000800000000000076 +:10523000FFFFFFFA002FFFFF00000000000000004A +:10524000000000000000000000100000000000004E +:10525000FFFFFFF701CFFFFF00000000000000008C +:10526000000000000000000000200000000000001E +:10527000FFFFFFFF00CFFFFF000000000000000065 +:10528000000000CC00000000004000000000000012 +:10529000FFFFFFFF00CFFFFF000000000000000045 +:1052A000000000CC00000000000000000000000032 +:1052B000FFFFFFFF00CFFFFF000000000000000025 +:1052C000000000CC00000000000100000000000011 +:1052D000FFFFFFFF00CFFFFF000000000000000005 +:1052E000000000CC000000000002000000000000F0 +:1052F000FFFFFFFF00CFFFFF0000000000000000E5 +:10530000000000CC000000000004000000000000CD +:10531000FFFFFFFF00CFFFFF0000000000000000C4 +:10532000000000CC000000000008000000000000A9 +:10533000FFFFFFFF00CFFFFF0000000000000000A4 +:10534000000000CC00000000001000000000000081 +:10535000FFFFFFFF00CFFFFF000000000000000084 +:10536000000000CC00000000002000000000000051 +:10537000FFFFFFFF00CFFFFF000000000000000064 +:10538000000000CC00000000004000000000000011 +:10539000FFFFFFFF00CFFFFF000000000000000044 +:1053A000000000CC00000000000000000000000031 +:1053B000FFFFFFFF00CFFFFF000000000000000024 +:1053C000000000CC00000000000100000000000010 +:1053D000FFFFFFFF00CFFFFF000000000000000004 +:1053E000000000CC000000000002000000000000EF +:1053F000FFFFFFFF00CFFFFF0000000000000000E4 +:10540000000000CC000000000004000000000000CC +:10541000FFFFFFFF00CFFFFF0000000000000000C3 +:10542000000000CC000000000008000000000000A8 +:10543000FFFFFFFF00CFFFFF0000000000000000A3 +:10544000000000CC00000000001000000000000080 +:10545000FFFFFFFF00CFFFFF000000000000000083 +:10546000000000CC00000000002000000000000050 +:10547000FFFFFFFF00CFFFFF000000000000000063 +:10548000000000CC00000000004000000000000010 +:10549000FFFFFFFF00CFFFFF000000000000000043 +:1054A000000000CC00000000000000000000000030 +:1054B000FFFFFFFF00CFFFFF000000000000000023 +:1054C000000000CC0000000000010000000000000F +:1054D000FFFFFFFF00CFFFFF000000000000000003 +:1054E000000000CC000000000002000000000000EE +:1054F000FFFFFFFF00CFFFFF0000000000000000E3 +:10550000000000CC000000000004000000000000CB +:10551000FFFFFFFF00CFFFFF0000000000000000C2 +:10552000000000CC000000000008000000000000A7 +:10553000FFFFFFFF00CFFFFF0000000000000000A2 +:10554000000000CC0000000000100000000000007F +:10555000FFFFFFFF00CFFFFF000000000000000082 +:10556000000000CC0000000000200000000000004F +:10557000FFFFFFFF00CFFFFF000000000000000062 +:10558000000000CC0000000000400000000000000F +:105590000000003200000032000002110000020092 +:1055A000000002040000FFFF0000FFFF0000FFFFFB +:1055B0000000FFFF00000000000000370000002195 +:1055C00000000020000000010000000100000001B8 +:1055D00007FFFFFF0000007F07FFFFFF0000003F05 +:1055E0000000FFFF0000FFFF0000FFFF0000FFFFC3 +:1055F00000007FF800007FF800000000000028ADE8 +:10560000000029180000291900000005000000070B +:1056100000000000000000000000FF00000000008B +:105620000000FF00000000000000FF00000000007C +:105630000000FF00000000000000FF00000000006C +:105640000000FF00000000000000FF00000000005C +:105650000000FF00000000000000FF00000000004C +:105660000000FF00000000000000FF00000000003C +:105670000000FF00000000000000FF00000000002C +:105680000000FF00000000000000FF00000000001C +:105690000000FF00000000000000FF00000000000C +:1056A0000000FF00000000000000FF0000000000FC +:1056B0000000FF00000000000000FF0000000000EC +:1056C0000000FF00000000000000FF0000000000DC +:1056D0000000FF00000000000000FF0000000000CC +:1056E0000000FF00000000000000FF0000000000BC +:1056F0000000FF00000000000000FF0000000000AC +:105700000000FF00000000000000FF00000000009B +:105710000000FF00000000000000FF00000000008B +:105720000000FF00000000000000FF00000000007B +:105730000000FF00000000000000FF00000000006B +:105740000000FF00000000000000FF00000000005B +:105750000000FF00000000000000FF00000000004B +:105760000000FF00000000000000FF00000000003B +:105770000000FF00000000000000FF00000000002B +:105780000000FF00000000000000FF00000000001B +:105790000000FF00000000000000FF00000000000B +:1057A0000000FF00000000000000FF0000000000FB +:1057B0000000FF00000000000000FF0000000000EB +:1057C0000000FF00000000000000FF0000000000DB +:1057D0000000FF00000000000000FF0000000000CB +:1057E0000000FF00000000000000FF0000000000BB +:1057F0000000FF00000000000000FF0000000000AB +:105800000000FF00000000000000FF00000000009A +:105810000000FF00000000000000FF00000000008A +:105820000000FF00000000000000FF00000000007A +:105830000000FF00000000000000FF00000000006A +:105840000000FF00000000000000FF00000000005A +:105850000000FF00000000000000FF1C0FFFFFFF22 +:105860000000FF1C0FFFFFFF0000FF1C0FFFFFFFEA +:105870000000FF1C0FFFFFFF0000FF1C0FFFFFFFDA +:105880000000FF1C0FFFFFFF0000FF1C0FFFFFFFCA +:105890000000FF1C0FFFFFFF0000FF1C0FFFFFFFBA +:1058A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFAA +:1058B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF9A +:1058C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF8A +:1058D0000000FF1C0FFFFFFF0000FF1C0FFFFFFF7A +:1058E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF6A +:1058F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF5A +:105900000000FF1C0FFFFFFF0000FF1C0FFFFFFF49 +:105910000000FF1C0FFFFFFF0000FF1C0FFFFFFF39 +:105920000000FF1C0FFFFFFF0000FF1C0FFFFFFF29 +:105930000000FF1C0FFFFFFF0000FF1C0FFFFFFF19 +:105940000000FF1C0FFFFFFF0000FF1C0FFFFFFF09 +:105950000000FF1C0FFFFFFF0000FF1C0FFFFFFFF9 +:105960000000FF1C0FFFFFFF0000FF1C0FFFFFFFE9 +:105970000000FF1C0FFFFFFF0000FF1C0FFFFFFFD9 +:105980000000FF1C0FFFFFFF0000FF1C0FFFFFFFC9 +:105990000000FF1C0FFFFFFF0000FF1C0FFFFFFFB9 +:1059A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA9 +:1059B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF99 +:1059C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF89 +:1059D0000000FF1C0FFFFFFF0000FF1C0FFFFFFF79 +:1059E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF69 +:1059F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF59 +:105A00000000FF1C0FFFFFFF0000FF1C0FFFFFFF48 +:105A10000000FF1C0FFFFFFF0000FF1C0FFFFFFF38 +:105A20000000FF1C0FFFFFFF0000FF1C0FFFFFFF28 +:105A30000000FF1C0FFFFFFF0000FF1C0FFFFFFF18 +:105A40000000FF1C0FFFFFFF0000FF1C0FFFFFFF08 +:105A50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF8 +:105A60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE8 +:105A70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD8 +:105A80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC8 +:105A90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB8 +:105AA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA8 +:105AB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF98 +:105AC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF88 +:105AD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF78 +:105AE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF68 +:105AF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF58 +:105B00000000FF1C0FFFFFFF0000FF1C0FFFFFFF47 +:105B10000000FF1C0FFFFFFF0000FF1C0FFFFFFF37 +:105B20000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:105B30000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:105B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:105B50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:105B60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:105B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:105B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:105B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:105BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:105BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:105BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:105BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:105BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF67 +:105BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF57 +:105C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:105C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:105C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:105C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:105C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:105C50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:105C60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:105C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:105C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:105C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:105CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:105CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:105CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF86 +:105CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF76 +:105CE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:105CF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:105D00000000FF1C0FFFFFFF0000FF1C0FFFFFFF45 +:105D10000000FF1C0FFFFFFF0000FF1C0FFFFFFF35 +:105D20000000FF1C0FFFFFFF0000FF1C0FFFFFFF25 +:105D30000000FF1C0FFFFFFF0000FF1C0FFFFFFF15 +:105D40000000FF1C0FFFFFFF0000FF1C0FFFFFFF05 +:105D50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF5 +:105D60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE5 +:105D70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD5 +:105D80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC5 +:105D90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB5 +:105DA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA5 +:105DB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF95 +:105DC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF85 +:105DD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF75 +:105DE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF65 +:105DF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF55 +:105E00000000FF1C0FFFFFFF0000FF1C0FFFFFFF44 +:105E10000000FF1C0FFFFFFF0000FF1C0FFFFFFF34 +:105E20000000FF1C0FFFFFFF0000FF1C0FFFFFFF24 +:105E30000000FF1C0FFFFFFF0000FF1C0FFFFFFF14 +:105E40000000FF1C0FFFFFFF0000FF1C0FFFFFFF04 +:105E50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF4 +:105E60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE4 +:105E70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD4 +:105E80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC4 +:105E90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB4 +:105EA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA4 +:105EB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF94 +:105EC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF84 +:105ED0000000FF1C0FFFFFFF0000FF1C0FFFFFFF74 +:105EE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF64 +:105EF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF54 +:105F00000000FF1C0FFFFFFF0000FF1C0FFFFFFF43 +:105F10000000FF1C0FFFFFFF0000FF1C0FFFFFFF33 +:105F20000000FF1C0FFFFFFF0000FF1C0FFFFFFF23 +:105F30000000FF1C0FFFFFFF0000FF1C0FFFFFFF13 +:105F40000000FF1C0FFFFFFF0000FF1C0FFFFFFF03 +:105F50000000FF1C0FFFFFFF0000FF1C0FFFFFFFF3 +:105F60000000FF1C0FFFFFFF0000FF1C0FFFFFFFE3 +:105F70000000FF1C0FFFFFFF0000FF1C0FFFFFFFD3 +:105F80000000FF1C0FFFFFFF0000FF1C0FFFFFFFC3 +:105F90000000FF1C0FFFFFFF0000FF1C0FFFFFFFB3 +:105FA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA3 +:105FB0000000FF1C0FFFFFFF0000FF1C0FFFFFFF93 +:105FC0000000FF1C0FFFFFFF0000FF1C0FFFFFFF83 +:105FD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF73 +:105FE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF63 +:105FF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF53 +:106000000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:106010000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:106020000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:106030000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:106040000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:106050000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:106060000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:106070000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:106080000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:106090000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1060A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1060B0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1060C0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:1060D0000000FF1C0FFFFFFF0000097800003500E3 +:1060E00000000001000000020000000300000000AA +:1060F000000000040000000100000000000000019A +:106100000000000400000000000000010000000387 +:10611000000000000000000100000004000000007A +:10612000000000010000000300000000000000016A +:106130000000000400000000000000040000000354 +:10614000000000000000000000007FFF000003FFCF +:10615000000000000000000100000001000000013C +:10616000000000000000000200000090000000900D +:106170000080009008100000000009FF0000076C7C +:106180000000008A00000080000000810000008004 +:106190000000008A000000800000008100000080F4 +:1061A0000000008A000000800000008100000080E4 +:1061B0000000008A000000800000008100000080D4 +:1061C0000000008A000000800000008100000080C4 +:1061D00000000001000000010000000100000001BB +:1061E00000000001000000010000000100000001AB +:1061F000000000010000000000000000000000019D +:106200000000000200000000000000060000000383 +:106210000000000400000005000000010000000173 +:10622000000000010000000100000001000000016A +:10623000000000010000000100000001000000015A +:10624000000000010000000100000001000000014A +:1062500000000001000000010000000300006000D9 +:106260000000000300006000000000030000400088 +:106270000000030000000300000003000000030012 +:106280000000030000000300000003000003F0080A +:1062900000000000000000000000000000000001FD +:1062A00000000001000000010000000100000001EA +:1062B00000000001000000010000000100000001DA +:1062C00000000001000000010000000100000001CA +:1062D00000000001000000010000000100000001BA +:1062E00000000001000000010000000100000001AA +:1062F000000000010000000100000001000000019A +:106300000000000100000001000000010000000189 +:106310000000000100000001000000FF000000FF7D +:10632000000000FF000000FF0000007F000000FFF1 +:10633000000000FF000000FF0000003E0000000021 +:106340000000003F0000003F0000003F0000003F51 +:106350000000003F0000003F0000003F0000000F71 +:106360000000000012170000221700003217000082 +:106370001215000022150000321500000210000066 +:10638000001000001010000020100000301000006D +:1063900040100000000000000000000000000000AD +:1063A000001000001214000022140000321400003B +:1063B0004214000000000000000000000000000087 +:1063C0000000890600008926000000360000003623 +:1063D0000810000008100000FFFFFFFFFFFFFFFF95 +:1063E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +:1063F000FFFFFFFFFFFFFFFFF000C000FFFFFFFFF9 +:10640000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:10641000FFFFFFFFFFFFFFFFF800C000FFFFFFFFD0 +:10642000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +:10643000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +:10644000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +:10645000FFFFFFFFFFFFFFFF00003C1000000008F0 +:106460000000000800000002000000040000000519 +:1064700000000004000000400000180800000803AD +:1064800000000803000000400000000300000803B3 +:1064900000000803000008030001000300000803D7 +:1064A00000000803000000030000000300000003D8 +:1064B00000000003000000030000000300000003D0 +:1064C00000000003000000030000000300000003C0 +:1064D00000000003000000030000000300000003B0 +:1064E000000024030000002F000000090000001934 +:1064F0000000018400000183000003060000001971 +:10650000000000060000030600000306000003066A +:1065100000000C86000003060000030600000006D1 +:106520000000000600000006000000060000000653 +:106530000000000600000006000000060000000643 +:106540000000000600000006000000060000000633 +:106550000000000600000006000003060000001313 +:106560000000000600001004000010040010644049 +:10657000001064400000004000000019000000010D +:10658000000000000000000000000000000000000B +:1065900000002000000000000000000000000000DB +:1065A00000000000040020000000000000000000C7 +:1065B000000000000000000041002000000000007A +:1065C00000000000000000000000000000002000AB +:1065D0000000007C0000003D0000003F0000009C27 +:1065E0000000000C000000050000000A000000058B +:1065F00000000053000025E3000000540000005498 +:10660000000000040000000400000004000000047A +:10661000000000040000000400000004000000046A +:106620000000000000000001000000020000000067 +:106630000000000100000002000000090000000B43 +:106640000000000A0000000000000001000000023D +:10665000000000000000000100000002000000092E +:106660000000000B0000000A000000090000000B01 +:106670000000000A000000090000000B0000000AF2 +:1066800000000000000008000000020000000400FC +:1066900000000000000000001FFF1FFF1FFF1FFF82 +:1066A0001FFF1FFF1FFF1FFF000025E400008000E9 +:1066B000200020002000200080008000800080005A +:1066C00040004000400040000000000000000002C8 +:1066D00000000178000001780000000000000000C8 +:1066E0000000017800000000000000000000000031 +:1066F0000000000100000002000000000000000097 +:106700000000000000000004000000000000000184 +:106710000000000200000000000000000000000077 +:106720000000000400000000000000010000000262 +:106730000000000000000001000000020000000056 +:106740000000000100000002000000000000000046 +:106750000000000000000004000000000000000134 +:106760000000000200000000000000010000000224 +:106770000000000000000001000000020000000016 +:1067800000000000000000000000000400000013F2 +:106790000E490E490E490E49009200920092009255 +:1067A0000124012401240124000000000000000055 +:1067B0001000100010001000200101200101100144 +:1067C000010101012001012001011001200101202E +:1067D000010110010101010120010120010110014D +:1067E0000101010100000004000000060200410454 +:1067F00002004104020041040200410400000204BE +:10680000000002CE000002CE0000000000000000E8 +:10681000000002CC000000000000000000000000AA +:106820000000000100000002000000000000000065 +:106830000000000000000004000000000000000153 +:106840000000000200000000000000000000000046 +:1068500000000004000000130E490E490000000073 +:1068600000000000100010001000100020010120A6 +:1068700001011001010101012001012001011001AC +:10688000200101200101100101010101200101206D +:106890000101100101010101020041040200410453 +:1068A00000000002000000000000000200000000E4 +:1068B00000000002000000000000000000000000D6 +:1068C00000000002000000000000000200000000C4 +:1068D00000000002000000000000000000000000B6 +:1068E0000000000400000006020041040200410410 +:1068F0000000000100000001000000010000000194 +:106900000000000100000001000000010000000183 +:106910000000000100000001000000010000000173 +:106920000000000100000001000000010000000163 +:106930000000000100000003025555550255555551 +:10694000000002CE000002CE000002CE000002CE07 +:10695000000002CE000002CE000002CC0000005475 +:10696000000000540000005400000054000000002B +:10697000000000010000000200000000000000060E +:1069800000000003000000040000000500000000FB +:1069900000000001000000020000000000000000F4 +:1069A00000000000000000060000000000000001E0 +:1069B00000000002000000000000000000000000D5 +:1069C00000000006000000000000000100000002BE +:1069D00000000000000000010000000200000000B4 +:1069E00000000001000000020000000000000000A4 +:1069F0000000000000000006000000000000000190 +:106A00000000000200000000000000010000000281 +:106A10000000000000000001000000020000000073 +:106A20000000000000000000000000060E490E49B2 +:106A30000E490E4900920092009200920124012416 +:106A4000012401241000100010001000200101207A +:106A500001011001010101012001012001011001CA +:106A6000200101200101100101010101200101208B +:106A700001011001010101010000000400000006F5 +:106A80000000000000000001000000020000000003 +:106A900000000000000000000000000600000000F0 +:106AA00000000001000000020000000000000000E3 +:106AB00000000000000000060000000300000004C9 +:106AC00000000005000000030000000400000005B5 +:106AD00000000003000000040000000500000003A7 +:106AE0000000000300000003000000060000000397 +:106AF0000000000400000005000000030000000486 +:106B00000000000500000003000000040000000574 +:106B10000000000300000003000000030000000666 +:106B20000E490E4900000000009200920000000093 +:106B30000124012400000000000000000E490E495D +:106B400000000000009200920000000001240124D7 +:106B500010001000100010002001012001011001A0 +:106B6000010101012001012001011001200101208A +:106B700001011001010101012001012001011001A9 +:106B800001010101000000010000000300000004F9 +:106B900000000003000000040000000500000003E6 +:106BA00000000006000000050000000400000003D3 +:106BB00000000004000000050000000300000006C3 +:106BC00000000005000000040000000300000004B5 +:106BD00000000000000000010000000200000000B2 +:106BE000000000010000000200000005000000039A +:106BF0000000000600000005000000040000000383 +:106C0000000000040000000000000001000000027D +:106C1000000000000000000100000002000000056C +:106C200000000003000000060000000500480048C6 +:106C30000048004800900090009000900120012042 +:106C400001200120040204020402040200050005E0 +:106C500000050005120012001200120008000800D2 +:106C6000080008000120012001011020010101207D +:106C7000012001200101102001200120010110202C +:106C8000010101200120012001011020010101204A +:106C900000000004000000060000012300000123A2 +:106CA0000000012300000123000001230000012354 +:106CB0000000012300000123000001230000012344 +:106CC0000000012300000123000001230000012334 +:106CD0000000012300000123000001230000012324 +:106CE000000001230000012300000020000000320A +:106CF000000000070000000700000000000000087E +:106D00000000000100000000000000000000000082 +:106D100002150020021500200000003008100000BD +:106D200000000036000000300000003100000004C8 +:106D30000000000500000000000000040000000149 +:106D400000000006000000010000000200000040FA +:106D5000000000400000001C0000002000010000B6 +:106D60000002070000030E000004150000051C00CF +:106D70000006230000072A0000083100000938003F +:106D8000000A3F00000B4600000C4D00000D5400AF +:106D9000000E5B00000F620000106900001170001F +:106DA0000012770000137E000014850000158C008F +:106DB0000016930000179A000018A1000019A800FF +:106DC000001AAF00001BB600001CBD00001DC4006F +:106DD000001ECB00001FD2000000D9000000001EE2 +:106DE0000000001D000100000002078000030F00EA +:106DF0000004168000051E000006258000072D00F7 +:106E00000008348000093C00000A4380000B4B005E +:106E1000000C5280000D5A00000E6180000F6900C6 +:106E2000001070800011780000127F80001387002E +:106E300000148E800015960000169D800017A50096 +:106E40000018AC800019B400001ABB80001BC300FE +:106E5000001CCA800000D2000000000100000001F8 +:106E6000000000010000000100000001000000011E +:106E7000000000010000000100000001000000010E +:106E800000000001000000010000000100000001FE +:106E90000000000100000001000000280000002C9C +:106EA00000000030000000010000000100000001AF +:106EB000000002110000020000000204000002199C +:106EC0000000FFFF0000FFFF0000FFFF0000FFFFCA +:106ED00007FFFFFF0000007F07FFFFFF0000003FEC +:106EE0000000FFFF0000FFFF0000FFFF0000FFFFAA +:106EF00000007FF800007FF80000000000000001A3 +:106F00000000FF00000000000000FF000000000083 +:106F10000000FF00000000000000FF000000000073 +:106F20000000FF00000000000000FF000000000063 +:106F30000000FF00000000000000FF000000000053 +:106F40000000FF00000000000000FF000000000043 +:106F50000000FF00000000000000FF000000000033 +:106F60000000FF00000000000000FF000000000023 +:106F70000000FF00000000000000FF000000000013 +:106F80000000FF00000000000000FF000000000003 +:106F90000000FF00000000000000FF0000000000F3 +:106FA0000000FF00000000000000FF0000000000E3 +:106FB0000000FF00000000000000FF0000000000D3 +:106FC0000000FF00000000000000FF0000000000C3 +:106FD0000000FF00000000000000FF0000000000B3 +:106FE0000000FF00000000000000FF0000000000A3 +:106FF0000000FF00000000000000FF000000000093 +:107000000000FF00000000000000FF000000000082 +:107010000000FF00000000000000FF000000000072 +:107020000000FF00000000000000FF000000000062 +:107030000000FF00000000000000FF000000000052 +:107040000000FF00000000000000FF000000000042 +:107050000000FF00000000000000FF000000000032 +:107060000000FF00000000000000FF000000000022 +:107070000000FF00000000000000FF000000000012 +:107080000000FF00000000000000FF000000000002 +:107090000000FF00000000000000FF0000000000F2 +:1070A0000000FF00000000000000FF0000000000E2 +:1070B0000000FF00000000000000FF0000000000D2 +:1070C0000000FF00000000000000FF0000000000C2 +:1070D0000000FF00000000000000FF0000000000B2 +:1070E0000000FF00000000000000FF0000000000A2 +:1070F0000000FF00000000000000FF000000000092 +:107100000000FF00000000000000FF000000000081 +:107110000000FF00000000000000FF000000000071 +:107120000000FF00000000000000FF000000000061 +:107130000000FF00000000000000FF000000000051 +:10714000002010010000000001009000000001007C +:10715000000000010000000000000000140AFF0011 +:10716000000090020000000000000000000000008D +:10717000000090040000000000000000000000007B +:107180000000900600000000000000000000000069 +:107190000000900800000000000000000000000057 +:1071A0000000900A00000000000000000000000045 +:1071B0000000900C00000000000000000000000033 +:1071C0000000900E00000000000000000000000021 +:1071D000000090100000000000000000000000000F +:1071E00000009012000000000000000000000000FD +:1071F00000009014000000000000000000000000EB +:1072000000009016000000000000000000000000D8 +:1072100000009018000000000000000000000000C6 +:107220000000901A000000000000000000000000B4 +:107230000000901C000000000000000000000000A2 +:107240000000901E00000000000000000000000090 +:10725000000090200000000000000000000000007E +:10726000000090220000000000000000000000006C +:10727000000090240000000000000000000000005A +:107280000000902600000000000000000000000048 +:107290000000902800000000000000000000000036 +:1072A0000000902A00000000000000000000000024 +:1072B0000000902C00000000000000000000000012 +:1072C0000000902E00000000000000000000000000 +:1072D00000009030000000000000000000000000EE +:1072E00000009032000000000000000000000000DC +:1072F00000009034000000000000000000000000CA +:1073000000009036000000000000000000000000B7 +:1073100000009038000000000000000000000000A5 +:107320000000903A00000000000000000000000093 +:107330000000903C00000000000000000000000081 +:107340000000903E0000000000000000000000006F +:10735000000090400000000000000000000000005D +:10736000000090420000000000000000000000004B +:107370000000904400000000000000000000000039 +:107380000000904600000000000000000000000027 +:107390000000904800000000000000000000000015 +:1073A0000000904A00000000000000000000000003 +:1073B0000000904C000000000000000000000000F1 +:1073C0000000904E000000000000000000000000DF +:1073D00000009050000000000000000000000000CD +:1073E00000009052000000000000000000000000BB +:1073F00000009054000000000000000000000000A9 +:107400000000905600000000000000000000000096 +:107410000000905800000000000000000000000084 +:107420000000905A00000000000000000000000072 +:107430000000905C00000000000000000000000060 +:107440000000905E0000000000000000000000004E +:10745000000090600000000000000000000000003C +:10746000000090620000000000000000000000002A +:107470000000906400000000000000000000000018 +:107480000000906600000000000000000000000006 +:1074900000009068000000000000000000000000F4 +:1074A0000000906A000000000000000000000000E2 +:1074B0000000906C000000000000000000000000D0 +:1074C0000000906E000000000000000000000000BE +:1074D00000009070000000000000000000000000AC +:1074E000000090720000000000000000000000009A +:1074F0000000907400000000000000000000000088 +:107500000000907600000000000000000000000075 +:107510000000907800000000000000000000000063 +:107520000000907A00000000000000000000000051 +:107530000000907C0000000000000000000000003F +:107540000000907E0000000000000000000000002D +:10755000000090800000000000000000000000001B +:107560000000908200000000000000000000000009 +:1075700000009084000000000000000000000000F7 +:1075800000009086000000000000000000000000E5 +:1075900000009088000000000000000000000000D3 +:1075A0000000908A000000000000000000000000C1 +:1075B0000000908C000000000000000000000000AF +:1075C0000000908E0000000000000000000000009D +:1075D000000090900000000000000000000000008B +:1075E0000000909200000000000000000000000079 +:1075F0000000909400000000000000000000000067 +:107600000000909600000000000000000000000054 +:107610000000909800000000000000000000000042 +:107620000000909A00000000000000000000000030 +:107630000000909C0000000000000000000000001E +:107640000000909E0000000000000000000000000C +:10765000000090A0000000000000000000000000FA +:10766000000090A2000000000000000000000000E8 +:10767000000090A4000000000000000000000000D6 +:10768000000090A6000000000000000000000000C4 +:10769000000090A8000000000000000000000000B2 +:1076A000000090AA000000000000000000000000A0 +:1076B000000090AC0000000000000000000000008E +:1076C000000090AE0000000000000000000000007C +:1076D000000090B00000000000000000000000006A +:1076E000000090B200000000000000000000000058 +:1076F000000090B400000000000000000000000046 +:10770000000090B600000000000000000000000033 +:10771000000090B800000000000000000000000021 +:10772000000090BA0000000000000000000000000F +:10773000000090BC000000000000000000000000FD +:10774000000090BE000000000000000000000000EB +:10775000000090C0000000000000000000000000D9 +:10776000000090C2000000000000000000000000C7 +:10777000000090C4000000000000000000000000B5 +:10778000000090C6000000000000000000000000A3 +:10779000000090C800000000000000000000000091 +:1077A000000090CA0000000000000000000000007F +:1077B000000090CC0000000000000000000000006D +:1077C000000090CE0000000000000000000000005B +:1077D000000090D000000000000000000000000049 +:1077E000000090D200000000000000000000000037 +:1077F000000090D400000000000000000000000025 +:10780000000090D600000000000000000000000012 +:10781000000090D800000000000000000000000000 +:10782000000090DA000000000000000000000000EE +:10783000000090DC000000000000000000000000DC +:10784000000090DE000000000000000000000000CA +:10785000000090E0000000000000000000000000B8 +:10786000000090E2000000000000000000000000A6 +:10787000000090E400000000000000000000000094 +:10788000000090E600000000000000000000000082 +:10789000000090E800000000000000000000000070 +:1078A000000090EA0000000000000000000000005E +:1078B000000090EC0000000000000000000000004C +:1078C000000090EE0000000000000000000000003A +:1078D000000090F000000000000000000000000028 +:1078E000000090F200000000000000000000000016 +:1078F000000090F400000000000000000000000004 +:10790000000090F6000000000000000000000000F1 +:10791000000090F8000000000000000000000000DF +:10792000000090FA000000000000000000000000CD +:10793000000090FC000000000000000000000000BB +:10794000000090FE000000000000000000000000A9 +:107950000000910000000000000000000000000096 +:107960000000910200000000000000000000000084 +:107970000000910400000000000000000000000072 +:107980000000910600000000000000000000000060 +:10799000000091080000000000000000000000004E +:1079A0000000910A0000000000000000000000003C +:1079B0000000910C0000000000000000000000002A +:1079C0000000910E00000000000000000000000018 +:1079D0000000911000000000000000000000000006 +:1079E00000009112000000000000000000000000F4 +:1079F00000009114000000000000000000000000E2 +:107A000000009116000000000000000000000000CF +:107A100000009118000000000000000000000000BD +:107A20000000911A000000000000000000000000AB +:107A30000000911C00000000000000000000000099 +:107A40000000911E00000000000000000000000087 +:107A50000000912000000000000000000000000075 +:107A60000000912200000000000000000000000063 +:107A70000000912400000000000000000000000051 +:107A8000000091260000000000000000000000003F +:107A9000000091280000000000000000000000002D +:107AA0000000912A0000000000000000000000001B +:107AB0000000912C00000000000000000000000009 +:107AC0000000912E000000000000000000000000F7 +:107AD00000009130000000000000000000000000E5 +:107AE00000009132000000000000000000000000D3 +:107AF00000009134000000000000000000000000C1 +:107B000000009136000000000000000000000000AE +:107B1000000091380000000000000000000000009C +:107B20000000913A0000000000000000000000008A +:107B30000000913C00000000000000000000000078 +:107B40000000913E00000000000000000000000066 +:107B50000000914000000000000000000000000054 +:107B60000000914200000000000000000000000042 +:107B70000000914400000000000000000000000030 +:107B8000000091460000000000000000000000001E +:107B9000000091480000000000000000000000000C +:107BA0000000914A000000000000000000000000FA +:107BB0000000914C000000000000000000000000E8 +:107BC0000000914E000000000000000000000000D6 +:107BD00000009150000000000000000000000000C4 +:107BE00000009152000000000000000000000000B2 +:107BF00000009154000000000000000000000000A0 +:107C0000000091560000000000000000000000008D +:107C1000000091580000000000000000000000007B +:107C20000000915A00000000000000000000000069 +:107C30000000915C00000000000000000000000057 +:107C40000000915E00000000000000000000000045 +:107C50000000916000000000000000000000000033 +:107C60000000916200000000000000000000000021 +:107C7000000091640000000000000000000000000F +:107C800000009166000000000000000000000000FD +:107C900000009168000000000000000000000000EB +:107CA0000000916A000000000000000000000000D9 +:107CB0000000916C000000000000000000000000C7 +:107CC0000000916E000000000000000000000000B5 +:107CD00000009170000000000000000000000000A3 +:107CE0000000917200000000000000000000000091 +:107CF000000091740000000000000000000000007F +:107D0000000091760000000000000000000000006C +:107D1000000091780000000000000000000000005A +:107D20000000917A00000000000000000000000048 +:107D30000000917C00000000000000000000000036 +:107D40000000917E00000000000000000000000024 +:107D50000000918000000000000000000000000012 +:107D60000000918200000000000000000000000000 +:107D700000009184000000000000000000000000EE +:107D800000009186000000000000000000000000DC +:107D900000009188000000000000000000000000CA +:107DA0000000918A000000000000000000000000B8 +:107DB0000000918C000000000000000000000000A6 +:107DC0000000918E00000000000000000000000094 +:107DD0000000919000000000000000000000000082 +:107DE0000000919200000000000000000000000070 +:107DF000000091940000000000000000000000005E +:107E0000000091960000000000000000000000004B +:107E10000000919800000000000000000000000039 +:107E20000000919A00000000000000000000000027 +:107E30000000919C00000000000000000000000015 +:107E40000000919E00000000000000000000000003 +:107E5000000091A0000000000000000000000000F1 +:107E6000000091A2000000000000000000000000DF +:107E7000000091A4000000000000000000000000CD +:107E8000000091A6000000000000000000000000BB +:107E9000000091A8000000000000000000000000A9 +:107EA000000091AA00000000000000000000000097 +:107EB000000091AC00000000000000000000000085 +:107EC000000091AE00000000000000000000000073 +:107ED000000091B000000000000000000000000061 +:107EE000000091B20000000000000000000000004F +:107EF000000091B40000000000000000000000003D +:107F0000000091B60000000000000000000000002A +:107F1000000091B800000000000000000000000018 +:107F2000000091BA00000000000000000000000006 +:107F3000000091BC000000000000000000000000F4 +:107F4000000091BE000000000000000000000000E2 +:107F5000000091C0000000000000000000000000D0 +:107F6000000091C2000000000000000000000000BE +:107F7000000091C4000000000000000000000000AC +:107F8000000091C60000000000000000000000009A +:107F9000000091C800000000000000000000000088 +:107FA000000091CA00000000000000000000000076 +:107FB000000091CC00000000000000000000000064 +:107FC000000091CE00000000000000000000000052 +:107FD000000091D000000000000000000000000040 +:107FE000000091D20000000000000000000000002E +:107FF000000091D40000000000000000000000001C +:10800000000091D600000000000000000000000009 +:10801000000091D8000000000000000000000000F7 +:10802000000091DA000000000000000000000000E5 +:10803000000091DC000000000000000000000000D3 +:10804000000091DE000000000000000000000000C1 +:10805000000091E0000000000000000000000000AF +:10806000000091E20000000000000000000000009D +:10807000000091E40000000000000000000000008B +:10808000000091E600000000000000000000000079 +:10809000000091E800000000000000000000000067 +:1080A000000091EA00000000000000000000000055 +:1080B000000091EC00000000000000000000000043 +:1080C000000091EE00000000000000000000000031 +:1080D000000091F00000000000000000000000001F +:1080E000000091F20000000000000000000000000D +:1080F000000091F4000000000000000000000000FB +:10810000000091F6000000000000000000000000E8 +:10811000000091F8000000000000000000000000D6 +:10812000000091FA000000000000000000000000C4 +:10813000000091FC000000000000000000000000B2 +:10814000000091FEFFFFFFFFFFFFFFFFFFFFFFFFAC +:10815000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +:10816000FFFFFFFF0000FFFF00000000FFFFFFFF19 +:10817000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +:10818000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFD +:10819000000000000000039A00003500000000010C +:1081A00000000002000000030000000000000004C6 +:1081B00000000001000000000000000100000004B9 +:1081C00000000000000000010000000300000000AB +:1081D0000000000100000004000000000000000199 +:1081E0000000000300000000000000010000000487 +:1081F0000000000000000004000000030000000078 +:108200000000000000007FFF000003FFFFFFFFFFF2 +:10821000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +:10822000FFFFFFFFFFFFFFFFFFFFFFFF0000000357 +:1082300000BEBC200000000000000005000000039C +:1082400000BEBC200000000000000005000000038C +:1082500000BEBC200000000000000005000000037C +:1082600000BEBC200000000000000005000000036C +:1082700000BEBC200000000000000005000000035C +:1082800000BEBC200000000000000005000000034C +:1082900000BEBC200000000000000005000000033C +:1082A00000BEBC2000000000000000050000000D22 +:1082B0000000000C00000000000000100000000F93 +:1082C0000000000000000000000000000215002077 +:1082D00002150020000000300810000000000036E9 +:1082E000000000300000003100000003000000002A +:1082F0000000000100000003000000010000000277 +:1083000000000040000000400000000400000020C9 +:108310000000000F0000001B00008000000103C0EF +:108320000001878000020B4000028F00000312C092 +:108330000003968000041A4000049E00000521C03E +:108340000005A580000629400006AD00000730C0EA +:108350000007B480000838400008BC0000093FC096 +:108360000009C380000A4740000ACB00000B4EC042 +:10837000000BD280000C5640000CDA00000D5DC0EE +:108380000000618000000001000000010000000109 +:1083900000000001000000010000000100000001D9 +:1083A00000000001000000010000000100000001C9 +:1083B00000000001000000010000000100000001B9 +:1083C00000000001000000010000050E000004FD97 +:1083D000000005010000051E0000FFFF0000FFFF78 +:1083E0000000FFFF0000FFFF000000460000000C3F +:1083F00000000000000000000000001C000000F46D +:10840000000000010000000000000000000000006B +:10841000000000010000000107FFFFFF0000007FD7 +:1084200007FFFFFF0000003F0000FFFF0000FFFF0D +:108430000000FFFF0000FFFF00007FF800007FF852 +:108440000000FF00000000000000FF00000000002E +:108450000000FF00000000000000FF00000000001E +:108460000000FF00000000000000FF00000000000E +:108470000000FF00000000000000FF0000000000FE +:108480000000FF00000000000000FF0000000000EE +:108490000000FF00000000000000FF0000000000DE +:1084A0000000FF00000000000000FF0000000000CE +:1084B0000000FF00000000000000FF0000000000BE +:1084C0000000FF00000000000000FF0000000000AE +:1084D0000000FF00000000000000FF00000000009E +:1084E0000000FF00000000000000FF00000000008E +:1084F0000000FF00000000000000FF00000000007E +:108500000000FF00000000000000FF00000000006D +:108510000000FF00000000000000FF00000000005D +:108520000000FF00000000000000FF00000000004D +:108530000000FF00000000000000FF00000000003D +:108540000000FF00000000000000FF00000000002D +:108550000000FF00000000000000FF00000000001D +:108560000000FF00000000000000FF00000000000D +:108570000000FF00000000000000FF0000000000FD +:108580000000FF00000000000000FF0000000000ED +:108590000000FF00000000000000FF0000000000DD +:1085A0000000FF00000000000000FF0000000000CD +:1085B0000000FF00000000000000FF0000000000BD +:1085C0000000FF00000000000000FF0000000000AD +:1085D0000000FF00000000000000FF00000000009D +:1085E0000000FF00000000000000FF00000000008D +:1085F0000000FF00000000000000FF00000000007D +:108600000000FF00000000000000FF00000000006C +:108610000000FF00000000000000FF00000000005C +:108620000000FF00000000000000FF00000000004C +:108630000000FF00000000000000FF00000000003C +:108640000000FF00000000000000FF00000000002C +:108650000000FF00000000000000FF00000000001C +:108660000000FF00000000000000FF00000000000C +:108670000000FF00000000000000FF0000000000FC +:10868000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +:10869000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +:1086A00000001900000000000000000100000000B0 +:1086B0000000000000000000000001C400003500C0 +:1086C00000000001000000020000000300000000A4 +:1086D0000000000400000001000000000000000194 +:1086E0000000000400000000000000010000000382 +:1086F0000000000000000001000000040000000075 +:108700000000000100000003000000000000000164 +:10871000000000040000000000000004000000034E +:10872000000000000000000000007FFF000003FFC9 +:10873000000000000393870000000000000000001C +:10874000000000000393870000000000000000000C +:108750000000000F00000007000000000000000EF5 +:108760000000000E000000000000000000000000FB +:108770000315002003150020010000300810000040 +:108780000000003600000030000000310000000250 +:1087900000000005000000020000000200000000D0 +:1087A00000000005000000030000000100000004BC +:1087B0000000000100000002000000400000004036 +:1087C0000000000400000020000000020000002063 +:1087D00000001000000020800000310000004180F7 +:1087E00000005200000062800000730000008380DF +:1087F000000094000000A4800000B5000000C580C7 +:108800000000D6000000E6800000F70000010780AD +:108810000001180000012880000139000001498092 +:1088200000015A0000016A8000017B0000018B807A +:1088300000019C000001AC800001BD000001CD8062 +:108840000001DE000001EE800001FF0000000F804B +:108850000000000100000001000000010000000114 +:108860000000000100000001000000010000000104 +:1088700000000001000000010000000100000001F4 +:1088800000000001000000010000000100000001E4 +:1088900000000001000000010000000100000001D4 +:1088A0000000121400001200000012040000FFFF7C +:1088B0000000FFFF0000FFFF0000FFFF000000209E +:1088C000000000380000000000000000000000234D +:1088D0000000002400000025000000260000002702 +:1088E000000000390000003A0000002B0000002CBE +:1088F00000000000000000EC000000000000002963 +:108900000000002A0000000100000001000000013A +:108910000000000100000000000000000000000056 +:108920000000000107FFFFFF0000007F07FFFFFFBF +:108930000000003F0000FFFF0000FFFF0000FFFFFE +:108940000000FFFF00007FF800007FF8000000003B +:1089500000000001CCCC0201CCCCCCCCCCCC0201B0 +:10896000CCCCCCCCCCCC0201CCCCCCCCCCCC020171 +:10897000CCCCCCCCCCCC0201CCCCCCCCCCCC020161 +:10898000CCCCCCCCCCCC0201CCCCCCCCCCCC020151 +:10899000CCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFB3 +:1089A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +:1089B000FFFFFFFF0000000000010001003302077D +:1089C000CCCCCCC910000000000028AD0000291854 +:1089D0000000291900000000000000000000000550 +:1089E000000000067058103C000000000000FF006E +:1089F000000000000000FF00000000000000FF0079 +:108A0000000000000000FF00000000000000FF0068 +:108A1000000000000000FF00000000000000FF0058 +:108A2000000000000000FF00000000000000FF0048 +:108A3000000000000000FF00000000000000FF0038 +:108A4000000000000000FF00000000000000FF0028 +:108A5000000000000000FF00000000000000FF0018 +:108A6000000000000000FF00000000000000FF0008 +:108A7000000000000000FF00000000000000FF00F8 +:108A8000000000000000FF00000000000000FF00E8 +:108A9000000000000000FF00000000000000FF00D8 +:108AA000000000000000FF00000000000000FF00C8 +:108AB000000000000000FF00000000000000FF00B8 +:108AC000000000000000FF00000000000000FF00A8 +:108AD000000000000000FF00000000000000FF0098 +:108AE000000000000000FF00000000000000FF0088 +:108AF000000000000000FF00000000000000FF0078 +:108B0000000000000000FF00000000000000FF0067 +:108B1000000000000000FF00000000000000FF0057 +:108B2000000000000000FF00000000000000FF0047 +:108B3000000000000000FF00000000000000FF0037 +:108B4000000000000000FF00000000000000FF0027 +:108B5000000000000000FF00000000000000FF0017 +:108B6000000000000000FF00000000000000FF0007 +:108B7000000000000000FF00000000000000FF00F7 +:108B8000000000000000FF00000000000000FF00E7 +:108B9000000000000000FF00000000000000FF00D7 +:108BA000000000000000FF00000000000000FF00C7 +:108BB000000000000000FF00000000000000FF00B7 +:108BC000000000000000FF00000000000000FF00A7 +:108BD000000000000000FF00000000000000FF0097 +:108BE000000000000000FF00000000000000FF0087 +:108BF000000000000000FF00000000000000FF0077 +:108C0000000000000000FF00000000000000FF0066 +:108C1000000000000000FF00000000000000FF0056 +:108C2000000000000000FF0000000000FFFFFFFF49 +:108C3000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +:108C4000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF32 +:108C500000000000FFFFFFFFFFFFFFFFFFFFFFFF20 +:108C6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +:108C7000FFFFFFFF0000FFFF0000000003231303BE +:108C80001303231303030323A0B090430200020045 +:108C9000060406040323130313032313030303230C +:108CA000A0B09043131313131313131313131313BD +:108CB000A0B0904303010200000000000000054B3B +:108CC0000000350000000001000000020000000369 +:108CD000000000000000000400000001000000008F +:108CE000000000010000000400000000000000017E +:108CF000000000030000000000000001000000046C +:108D0000000000000000000100000003000000005F +:108D1000000000010000000400000000000000044A +:108D200000000003000000000000000000007FFFC2 +:108D3000000003FF002625A000000000002625A05B +:108D400000000000002625A000000000002625A04D +:108D500000000000000E0000011600D6002625A02D +:108D600000000000002625A000000000002625A02D +:108D700000000000002625A0000000000072000096 +:108D8000012300F30000FFFF000000000000FFFFD0 +:108D9000000000000000FFFF000000000000FFFFD7 +:108DA000000000000000FFFF000000000000FFFFC7 +:108DB0000000000000000000000000000000FFFFB5 +:108DC000000000000000FFFF000000000000FFFFA7 +:108DD000000000000000FFFF000000000000FFFF97 +:108DE000000000000000FFFF000000000000FFFF87 +:108DF0000000000000000000000000000000FFFF75 +:108E0000000000000000FFFF000000000000FFFF66 +:108E1000000000000000FFFF000000000000FFFF56 +:108E2000000000000000FFFF000000000000FFFF46 +:108E30000000000000000000000000000000FFFF34 +:108E4000000000000000FFFF000000000000FFFF26 +:108E5000000000000000FFFF000000000000FFFF16 +:108E6000000000000000FFFF000000000000FFFF06 +:108E70000000000000000000000000000000FFFFF4 +:108E8000000000000000FFFF000000000000FFFFE6 +:108E9000000000000000FFFF000000000000FFFFD6 +:108EA000000000000000FFFF000000000000FFFFC6 +:108EB0000000000000000000000000000000FFFFB4 +:108EC000000000000000FFFF000000000000FFFFA6 +:108ED000000000000000FFFF000000000000FFFF96 +:108EE000000000000000FFFF000000000000FFFF86 +:108EF0000000000000000000000000000000FFFF74 +:108F0000000000000000FFFF000000000000FFFF65 +:108F1000000000000000FFFF000000000000FFFF55 +:108F2000000000000000FFFF000000000000FFFF45 +:108F30000000000000000000000000000000FFFF33 +:108F4000000000000000FFFF000000000000FFFF25 +:108F5000000000000000FFFF000000000000FFFF15 +:108F6000000000000000FFFF000000000000FFFF05 +:108F70000000000000000000000000000000FFFFF3 +:108F8000000000005554000055555555000055553A +:108F9000F00000005554000055555555000055553A +:108FA000F00000000000000000010000000050146C +:108FB00000000000FFF55FFF0000FFFFF00003E08E +:108FC000000000000000A0000000040000000000FD +:108FD0000000000000000000000010000000000081 +:108FE0000000000000000000000040000000000041 +:108FF000000000000000000000010000FF5C000015 +:10900000FFF55FFF0000FFFFF00003E0000000003D +:109010000000A000000008000000000000000000A8 +:109020000000000000002000000000000000000020 +:1090300000000000000080000000000000000000B0 +:10904000000000000002000000000000000000001E +:109050001F8B080000000000000BFB51CFC0F00385 +:10906000094F1745E59B72A3F2D1F1091EFCF2846A +:10907000300B0365FA0F7130309C02E27B1C68EE06 +:109080006682D06940F12476060623207D9615215C +:109090001F0FB5574C1B21364F8381E1962A84CD93 +:1090A000A74699BB46F1D0C0EEE6A87C4F53087D99 +:1090B000D40C427BA0C97B41E5FF1A42D59B6337A4 +:1090C000F79F2171F68BD8A1F267DBE257DFED0441 +:1090D000A10190B60D18B8030000000000000000C8 +:1090E0001F8B080000000000000BD57D0D7854D5C3 +:1090F00099F0B977EECCDC99DC99DCC0244C608027 +:10910000999048D088130C1815EB4D8818BB743B08 +:1091100022DA68A91D2D6254D491D24A5B752E249F +:109120008410038C7F08F83720BAD48A0D2DB6EE50 +:1091300057DD9DA0CBEA6EBFDD48D5456BB7235602 +:1091400056FDD44DD95AECB758BFF77DCFBD33F794 +:109150004E66F2E3B6BBCF171F9FCBB9F7FCBCE757 +:109160003DEF79FFCF19B778263B6526639FE1DF96 +:10917000F98CED7430C6E6E79FE1C4F71EC93631BD +:10918000F6B12EB13E78EAAD89BFCA06E0B9DEADD0 +:1091900076C1F3FEB23BE8FB5A4956DD5168C31273 +:1091A00067C54E676C4392B1CC6C2A9F816517638B +:1091B000DA80921FC77C4E66228DC358483D56C642 +:1091C000E8EF3318DBCDCA988EE3AA2CDD17819720 +:1091D0006FC65B5815630E5E059E4BB49FC2F8C107 +:1091E000456CD87D76BE3F87EA6219D9E8872A2E7A +:1091F0002F8F1719D77CAE7DF3AAF40B96FAB5CC56 +:109200001738761AFC436212C2C11CFD8C211C2146 +:10921000967608A5FB39918CA75FA8437C7DB53C69 +:10922000E62B5DCFC44B5F52661937635D49959E4F +:10923000DE10D3D200A717F0F4A30678D6EB346E75 +:109240006FA866779980D0C51983F97A5E99B5BB06 +:109250000FCA5F6002E1AD3774B7AC8D323F560B79 +:10926000F8A837E657C310ABD40F83F93C065D94DA +:10927000C1B8BBA17D59C3C8F110FFE6784B3EE7EA +:10928000786E7609E1C33987B12105F10AE3C0534D +:109290000CEB7A16E6C9C27CBDA430AF3F16FE5C6B +:1092A00001D1B6BE65F55E5B595226D9D7BF80AEF7 +:1092B00018CEBF121E41562FC1FC9CCC1BC5F9AD68 +:1092C00012E2D7E0FBF0B35FD5BA013FC73536DC19 +:1092D00007656720CE907ECC761755AE203C498A34 +:1092E00098760BF4247C1E47FA003A750744DD3D5E +:1092F000B7085E42B0034CB86A46810BD61FE99CA2 +:109300003E014E5A3E91A87F6F14F6018CE76359D7 +:10931000DA04E50C16641663152C2CF04D111510AB +:109320006F8C2D54917E039E3F75BFCBA95F41BBCF +:109330008B7D5636817E25E877D69FA1DF31E0F51B +:10934000B007A95F5C9DCF26E7FBDD04FB8E19FB10 +:109350000E9F6EA849FBBB81F3998DC920BD67D2D2 +:10936000D39A08E3295157B80FF85A99926111A876 +:10937000F7EF2DF230D00E438E86742EE2FACD42F6 +:109380003A646F89B0EE65513BFF914396FD300A18 +:109390003D6EA83C654ABC61947D050C2922E7DB43 +:1093A00095AAF7E77E7601FF8A38F36549A9C9D304 +:1093B000F528F373AC893346741F63280F72ED45AB +:1093C000161F8079772957CB387F76F2B3CF1C0BE5 +:1093D0002C7C5E893517C3CBAF5884F8915976AA97 +:1093E0003DB7087E78065768590B3CBFC67FE03E04 +:1093F0000EAED2B2E358875E67ACE32A946FF3599E +:10940000F431A0BBBBCAAE646F35A09CBB32837481 +:10941000D253591571A33C62EBB9DC9215262FC8C3 +:10942000D3E960E56541E46B1BAA2F0B229FDBE0CB +:109430008C0563507EB1F227DA55D8FE6439433982 +:10944000D913AC29C779F59C9C352551647E658C70 +:10945000F30B2FC217E1F4C6EAF3F0F6044519E165 +:1094600039DEC0F9CE5D657FA339A0EC0A4B09EC6B +:10947000DFA5C0B8307E7BD38086F371C595B85B1D +:109480001DD98F390EFC099F21DFC73AE6BE136C48 +:10949000DF8BC231B21CD76A90AFAA2CDA57A4BEB8 +:1094A00053F6EB657391EFE6DEAB386EEDCF4F2FE1 +:1094B00047BAC0FA6119871634DC5779FA4FDBD600 +:1094C0009BA962BEDF9AFCFA494CEF159A700BCB50 +:1094D00009DCB78578ED71B14EA43726691D88BFC8 +:1094E0006E61D23CD46B4AD1BB14ECFDAD03E005F8 +:1094F000DC6590BEDCC1C5BA0BDB8162339958458F +:10950000FF9030979EBF75E077557ADF4A7F7305ED +:10951000D027109967B1B370FE5D0A5FF752E3A1DF +:109520007EC06697FEEE7445E33192478923420080 +:10953000E73B97E09742878E44008EF3052EA7A560 +:10954000804B47B8992A7D90B5E06986A49D2FE0AD +:109550007EF0F27E0AFB3F436A5D2440FBA34C6B26 +:10956000138AE8654C8141CF2E0D5F9E7F6B7EA1F3 +:109570008AD32FFF4B674480D31157345C176F3465 +:10958000CA50CE1E6A06CC36C3E77AE928C2A9C102 +:109590007F7C3DA36C0FD29126C7FA8026FD0BE19C +:1095A000BB05AFCEA6792C03EDD5AB95447933D26C +:1095B000136F6FD2A9A3A0FCF5C275483EC3DEAEFF +:1095C000B3E88D25F4D3B71DADD714C7C3A471E19B +:1095D000017504ACC794442FAE17489B619CCF0320 +:1095E000C63ADF6FC8A3BB0C79B4D9903FDDC93050 +:1095F0007DBF33594FE5ADC92895EF4936D3734741 +:1096000052A3E743C9767ADE978C513D5775B78CE4 +:10961000FACA03D5033B04D4C7F5ACF67368F280ED +:109620006FE07546FAF99BDACF6188078087B3A9A6 +:1096300020EF84D7341DEB570C5C2E0208FB26FF6D +:10964000BDFE423594EB065E17A0FCFCBA7FC874E1 +:1096500063FDD379FD5DC27B9A0EF4FB808775D0E4 +:109660003E0A2D1B030F9C4F3E8D7880E70395D05B +:109670004E197FBBE7B01DE0F181C8C4C6F348298D +:109680008DCF57687905E6EF9139FCFF22FC3BCD81 +:109690009758D5398C6585DFEA349FD38DFE413EDE +:1096A0005D6A914FBF109C1CEEC689C1FDAA315F57 +:1096B000796196C6FA0B213E80FBAEBC6108745FEF +:1096C0002087250319628F21208AEAB1E968AA1050 +:1096D000E6FBCAA8EF5A116535F0EA7FA3D0999F3F +:1096E0007F3F63ADC690BFFC0D2E1EBCBF6F59AB54 +:1096F000CCF557D84830AF43C67BD39E905E72906E +:10970000DEF302BEAF1C59DFB403CC7A25E154C7A7 +:10971000D06FC7394F26817E00FADB7EA6DAE6FBE2 +:1097200030536DF3F4287CBF8E773D485183FE6E35 +:109730002FE877754179DA93226B86AD1D5A6591D2 +:109740002FF07F70B9D7569ED436C956F6374DB52F +:10975000E9414ED5AE17290DA7DAEAAB0BE7D9CA16 +:109760008125E7D8EA4F5DD16AFB3E63CD176DDFF7 +:10977000AB962D1D5DEF1A27BEEF29987F6F4179BB +:10978000BCFD4C36F89CF9BEEA8A0571D2E79634E6 +:1097900071FE27C52EAA837FBE775FDDBC3E56AC27 +:1097A0009F75B44EB31DDA6491E407E7DFA22E90F3 +:1097B0007EBD4D885D7C01FA1FCE03BD8CA1DE6F9E +:1097C000E7EFCC5A768C2CCF12053EAF257C3EE7D6 +:1097D0009F3C5F463AF3FAC418D9DDCEB43AA921CA +:1097E0003F9F2A432F35E13FFFE43F3B70BF74A901 +:1097F00061B287B75DF1C5E0D5CA48F8CDFEEF5438 +:10980000C4F634B62F90BF774A03B2751CB3FE5826 +:10981000F8AD0B271E41BFCBF8FD303186F2F6D6EE +:109820002F8B642FF517F81D7AD1EF00E51E9037C6 +:10983000DC4FA31E41FDF1C4392C8CF5FD81AC86B3 +:10984000F2E32BE2452DF5009F3FA8058350DEFF94 +:10985000B7B3D6B54D4755374BF8BBA77969391B18 +:10986000C51FE08B8A36FBA7D05EF784EDF6BA3BC6 +:109870003875547BE91DDCC780673FD895D1067CDD +:10988000723EE028FF20B8D2A2575D283AB8DDE149 +:10989000B838817ACE1681F377F37B5AE47EA797A6 +:1098A000418DC6E7F927B78A7C7DB97DA9F85A753D +:1098B000D42F40114DD4A923D7517166885EFEA7DD +:1098C000F1D055910DA2BE9B46E5F30BC07714D0A5 +:1098D000FBE09FD2E4E5FA37E07D17D8038E28EA53 +:1098E000DDCA5BF8DE897A2AE8851E31BE5E9C4FB0 +:1098F000FE0D01F729D859F4FC9F9E8FC3D1389CE7 +:1099000041BDEF5C5774371BB96E3FC675ABC4F5EC +:1099100035D7EDCB64BF9BEBD6A7F075835D537451 +:10992000DD3A45CEDFFAA434EDC3F34F968BD4BEB7 +:109930005924F9D6AFCCDB340BDBBFE260A01EB2FA +:109940007E2943F5FEBBF1500897CF07704199BDC2 +:10995000CAE1F23987D4FF09B84AD2DBA48EB1E854 +:109960006D48AC1C496FEB0DB9EC288B75E03ECD12 +:10997000CFBB6637CE1BE9506CC0F5E676CD66836B +:10998000AF6E9686FE5BD725C7AFE5D495C8273A5C +:109990001517F1C91B1CFAA138F28932813D06F373 +:1099A000461F31F2F36BEE7346910E3B5F75343B0D +:1099B000C2C02F1C1E9BFD6A3E3B25205150053A1C +:1099C000C18E447CB1B4733867E7D48CF44F7F22E6 +:1099D0001AFE69C38E397EEFA5E519561A0FEF27D7 +:1099E0005F54A5BABC7FBAF0FB0D0E962039270F45 +:1099F000B8685EB7A53C7D8D38BF53DA52B06E9320 +:109A00001D7C9F9976DF0D7B5F52250B9E3AEF758B +:109A1000BEE52E02770E5F663B103FEE4923DB97D3 +:109A20006A07F86B43789C4DDCEF7EBD231E740003 +:109A30001CDEBDB76440D3023A1A203DD7EC3F0F7D +:109A40003FEC6D037E36B708BCAAF816FA67C782EA +:109A5000772C797CFCDE0D3DE8CF7ACF199D81FE15 +:109A60009DCEFED934DED5861E64E2FD9AFB3654C7 +:109A7000158B3FE4F0EEE85F8C707FCCF47A4723DF +:109A8000954FE984F7B112F432167D2C74FC37D16E +:109A900007CC17E9E32B267DF45612DD4F983ECC18 +:109AA0007613A40FA087AF3AE0A949B1CB2E07B82F +:109AB0007C0D2CDA17CED387D9EF08BA30D6E9F36C +:109AC000C239165DC86B1DE1DF9CC95844D2488E6F +:109AD000F6AAEB755A5FB455D02F916A243F22083D +:109AE0005AF22FC25F06F9A9AC6AC4E7BD60B4A2FE +:109AF000DD55D6648F73B80BF857B043CB98FDE2B1 +:109B0000BCE5B52E1A173D2838AEA4B08C07E76324 +:109B1000F8A9912C518F76B35FB6CFE2ED085FA51F +:109B2000E62331EEC7467712EAD76EF6D572ABDF81 +:109B300076E4FCEDE30497C5468DE314D6678A14FA +:109B40003E66C17BE976123B66D1EBB7236FAECCA4 +:109B5000E35F0BAF26BF9E8F8951D493BB423FD1A9 +:109B6000F1EB46C6F7650F3E912E82DC7F733D32E6 +:109B70006768A70B0B32118C2F68F230CA2F8792BF +:109B8000E0FC25383E3F8FD7E0FB174BB127914FC4 +:109B9000DD59C952C8CF73F874813D813450BF8CF0 +:109BA000DB07A7AFD4D11FE49CA136E214226017D3 +:109BB0005C7CBAB55F6EB7F626D3EC6D673E0E25BA +:109BC0008763FC69D019ABE7FCAAB781EB6BB23CA9 +:109BD000C0548CE7A5F667307E91A7339D2D3B1DC1 +:109BE000D791CBC53BE149FE5EC3AFEA0C7A6DF27B +:109BF0002F474FF5E3E3875B9261E16D4B5CC08FCC +:109C0000FEB422F2F92587605BAFAEA47EDE6F2C36 +:109C1000ED1C5294E09714786FA177F3FB78C73965 +:109C2000EA102704D7AB0EC1F08B70B86E45BE07A3 +:109C3000709CB863485A0ACF2F655E976AD01F227E +:109C4000F17A27EEE07EE4C3C94FEC7E44A98ABED8 +:109C50007F69C9CBD222CB385F32FC8B8C0D491780 +:109C6000FBACF833EC4665F8F9CF308ED8E4203DF4 +:109C7000B614BE970617A5A5C9F9F2E12607E94370 +:109C800087C10E427E70B82992D68BF8690AFDE72B +:109C90004B838BA99F13B70F49319A874C78C279B0 +:109CA0008601BE2FB5BF2C619C772CB87F5BB0FFBF +:109CB000B6623F284F6ECF30EC57C9BCC4B03F6589 +:109CC0006146D314CEEF104EE5C5C9A4DF815D2DEA +:109CD0002F3D3DDF9FD9BFAF609E9BA3A6DEC7E7A8 +:109CE000B9391A1ED73C7DC63CF3F2DDC0F3427190 +:109CF000543CFF6B524B4B45E4A1F9BCF23C31861E +:109D0000F05CE9CC5616D3430BE1F8FADA96B4646A +:109D1000F5D77C4E387EBD10F00078FCB534ECFBF6 +:109D20005CE3021EEACD3C0AC0DF891AA6B5A3DDBA +:109D30003B89113E81C08FA3FC33E39A92FC97ECE0 +:109D4000B67916FA56E1BB4D4FE6F54D7E9C9383EE +:109D500028C760DD1D811ED2FF1D012FD9098E800D +:109D6000742C5B000FC5E76608C41FBB4CFECCD843 +:109D70000B12FA279BA28F227EAE00066AC8FD2B2B +:109D8000241E5FD0D60528BE40711E371B2059E522 +:109D9000ACAA2FE77A6171BEBD313934C58A4F1341 +:109DA0005F1B9D867FF7E4A22CCA6349ACBF05FD0B +:109DB000F4E3F5F3F74D173A46837F751EFED5069B +:109DC000FCFAD514A702F8619C32354DF1D1BE39A9 +:109DD000A78C0A7F6F09F87BF3F0D723DFEF161B00 +:109DE0002604BF09776E9C3A46F1A34DC6BC0AE72C +:109DF000B3A9CE45FEE3EE39D14791756E31E60742 +:109E0000D3A17587796EC1799AFD492AD7D77B236B +:109E1000DBB4F518B7848A28674BC1E7915F9B6272 +:109E2000DDB70F4ADCFFDB8DAF50DF37E2C8CE3045 +:109E30008F73AD93E20F4A28C7423D644739032927 +:109E40009293DE7A98C71918C767042FA871E9861C +:109E500008E6BB008D62BE4BE5D03E2C433DA65AC2 +:109E6000CA393C54EA41C5A2BF6F88F41C71639C97 +:109E700035C0C2B391DE3297137F7306402E639EC6 +:109E80009394D1907E80FC23E8A774C9031ACA7901 +:109E9000D600E5308C1348B316E8AFF753078F3779 +:109EA000A0F16799FFFD12975B85EB536AFD7E6118 +:109EB000ACCF5233CE54B04E83B82EF3693D062555 +:109EC000926F5A664DD3C87DF38B2FCDE674D75E63 +:109ED0005CCF5D2AFF628A74A6858F1AF91933F167 +:109EE0005F302F97A1FF78EBD5D771FE4E5C5F589E +:109EF000B24742EDC44B1C8EF04BEBA08E1A4EAF16 +:109F0000C3F8C7CCA9F1C356FA9879DB30AD57BF77 +:109F100093FB7B2E70F47B8E42797BBCA61CFDAC40 +:109F20009F4842513C3C9A84B93A310E26D3F3C43F +:109F3000AF668F1A5FDD986469C9A20F6CEC9788D1 +:109F40009F6E0CCD3B8C7C7043A0761EB2312DD819 +:109F5000F84627DA15F561F257BF678C0F787C8FCA +:109F6000E391D3B969873AB5218DF416364471F877 +:109F7000EA008B66C29CCF49163CF99A86D7D50673 +:109F80002814358CF8013CFC07E2415AC15A60A5FF +:109F900046E0617B9CE717ADBEE694DD0E0B5D5E8F +:109FA000E8148D3C26C3FE95A2F5C5F4EDBC7E06F3 +:109FB00024E8247044AC176E06BB1AF6CD4EE3FDC0 +:109FC000D352CCE1847985F5A813C73F6CF8DD0442 +:109FD000264B01E4874DEA2EA4A72DE7788D7DAFAF +:109FE000EEC27DEF739AF97BB97DEF7316D9F7FD59 +:109FF000CEB88AFD7B3B531917E0C1DF3C44EFBB71 +:10A0000044D0A31402F330D2535860F93F18675A72 +:10A0100094FBDBE73B39FED55AA01F44E5BB65AD99 +:10A020002B00AE4D184FC6F8F0F46CAC06F7D9AB68 +:10A030000E86FB6C66D38196362C833E5F1E847E33 +:10A04000560DB72C82FAE5867E3FF33655C4796EFD +:10A050004A72BF78297AF1B852944711AE5DB904BB +:10A06000ED46E1145944BEB1E9461675C3384AEDD0 +:10A07000B137F1BD3F920AA23F7A6A6746BB1AC662 +:10A08000F583F987EB3B554BF1BC1729BD0EF30661 +:10A090003C896814E94965E91619D63394C8509E7D +:10A0A00091AFA38C61FD2E677C3EE24F8972FEE585 +:10A0B000A94DD373877388F4621FE85108CFA39B1F +:10A0C000B7B1AB2C74BED858074F13CF2334E9EE89 +:10A0D000112391E6EEF6E39E6B1BB09E97CB5B7669 +:10A0E000AFA63620BDA6348C13F80C7A057ABC00D6 +:10A0F000C72FBF2DDD8278969A580B7601FB90F220 +:10A1000093763853D508C78ECDAE0E8A6FE8EC35FE +:10A11000B600DA8BF675536AB53DB86E9F4A3C7E41 +:10A12000EAB835937908C60936BBD530E0DFD77673 +:10A1300028F31C9617C931A919CAD9C1CCAFA07C84 +:10A1400008F080F9551B4377EB6EE867663BE688BD +:10A1500022790FB418530923BECA3B79BE16E0EB2F +:10A16000AB4857FE381BC4F5F0AA43BA0495364AEB +:10A17000895FDF0EFD6D7CD111D599659F30D827A1 +:10A18000163B4B0EB111FA91755F8D2537F3F636FC +:10A190009743A6FF0FF6D38D884749E5FB69BC7E40 +:10A1A000A5165811B45FA7AE31F25E0D3E3BCD400F +:10A1B0006D886507C508F113D109CFC8B2F07ADC04 +:10A1C000D6B396A7AB77C1FCBB2B5EABE6F1DB3613 +:10A1D00015ED64419B2C7C76DAF8EDE95CBC799551 +:10A1E0003DDFA25CB3977DCD96F81A437952188F64 +:10A1F00033F80EFE13F11E8E46ADFC69B367683B63 +:10A20000C5E7F5A156CC47D82C0C7560E8D175CFC1 +:10A210003FB4B643FDCDBEA12086A43D771EA6B2B5 +:10A220006F86993F3A2CA39DFB136798D3FB428C12 +:10A23000BD32966A92488FDEAA4DAAC0EF83D97BC1 +:10A24000880E53A05F63BE96593F957530DC87FD3D +:10A25000501F9D0FFD0BA17E83A53F804534BE237B +:10A26000FE4F34F2FE4E80CE3584F42E65687C516C +:10A2700093D924A8B7D5A867F6E3CD0ED3BECAF507 +:10A2800007AA0996BD0B5394E3EAD5E2FA41E443E9 +:10A2900051319D16E83BEE31D03DA47406CB5A3ABD +:10A2A000832E89C15FB93D59CBFE4E45391C149CA4 +:10A2B000AE6663F27BD48FBF61D18FB1DC85FA6665 +:10A2C00058227D13F8F4F3B86FA42689FCA15A53E1 +:10A2D0000B43B96DFAD1CC71C6A4FF71D6037E4D84 +:10A2E000EBD1F3A640F8AA9C11DB85FE16F61AE71F +:10A2F000D77A6B2C82FB5AFFD732B50BE9474A9CC1 +:10A300007589657E66DE7420C6FD2027D0BF62C9D0 +:10A31000B3FDBE23FE2B9C8F50D511C7FD73EB51AF +:10A32000218CB93795CBB8BF642D4C91FC219A98FC +:10A330007ECCDC5748377BA6103CD2E4E555C8DF1D +:10A34000525ACDA87998A03F446B2DFA37F019598D +:10A35000E5FA835CAC9D3BE88AD602034BB587A740 +:10A36000A8A3C4D346E9D763F51FCF76C4FFE09C0A +:10A370003FB2FFC278B947394072C733C138F9F6E6 +:10A38000AB560671BCC014AD11F7DF7D2E9689C1A6 +:10A390009E089469FB71BF5EDE337B9102FB31E066 +:10A3A000D61A4528FFAEC7B5A81FCBA8E08052F348 +:10A3B00060CF1D8E75808700C694CF616C97EBBB14 +:10A3C0005DBA817F94F35B92EAD4DFD4A11D139C24 +:10A3D0008A7E9F4A17975B41540A2A795C17E75D8A +:10A3E000DE0CF5AC79B4924EEF3D616867E13B203D +:10A3F000AFA6B9A0FDD40E36885B8E4D1D267E9C7F +:10A40000D7231BCA8F5AF0D7EEB2EB911817477BB0 +:10A41000EA93EC2CD21BFB9598E6A0F8A19C78ACB3 +:10A4200069E43AB5BB6A085E457EAD8AF4E1809680 +:10A4300087A706F9CEACF22C8C77AB8BE70F14B65E +:10A44000EF4E86A7A248DC94ACA767ABAB82C7B53A +:10A450009AB89E27D50548AF32DB9BEFBB6B973E82 +:10A46000663D7FD0EAE272F556AFBDDE86FA49BBA3 +:10A47000AC7A62AB31DF5BFDDCFF68D673CE0914CA +:10A48000D4138BEAD74E15E0B5F2F9DA7A5B596E40 +:10A490004E513EBF472AEE57FBB9AFE54B2EE8F7CA +:10A4A0005317B7DFB657770611CF26BE4BED876E31 +:10A4B000A013AB9EFEA98BF35349D228EEEF54555F +:10A4C0001B1CA033909C44D98F7A36D0C59538AEEA +:10A4D0004917925A685FD8E9E29E02BAD864D085DB +:10A4E000B99E9B046E5F8FDCB77C3DBB713DA1FEC6 +:10A4F000F74C7C1BEBD757BF5AB5EA6945BECBD7A3 +:10A5000028D6EFF675EDAB5F2F176D6FAC277C2F5C +:10A51000E89FAFA347E4DF0BE1DDEAE2FE4B737C8B +:10A52000EF9C365BFB22DF6DF06D45F82AF3F07986 +:10A53000E72C93AF528AB437E083EFAAFD3BDFEFFD +:10A540007208F066CB97AAB79573F4D2C8F9D166B2 +:10A55000D82602D8F19B9DC31DE85784BFEAA516F3 +:10A560003DEE2FDC7CDC5CBB969544677F2FC51FDE +:10A5700041FEE0EDD033A8270D36AC25BF8159AFA1 +:10A58000C7773DF5BF0D0531EC8B8D2F39D2EB220E +:10A59000797F5021FE9E7739A8DD368FE16F91E0FB +:10A5A0000FF45FD5B05BEE07318A7EE2FDC63AB0AC +:10A5B000BD4F3CF144154FAB4643D8E4836CD9A55D +:10A5C000975E0AEF53F89EF8F210E5DBA91A13E242 +:10A5D0003EA427A6399D3CCE8D7C6FF349B780F20F +:10A5E00059575918E5A58AB20CEDECA86B17EA8308 +:10A5F0004E95693E0BFE7E6CE0D9EC67933044E7E4 +:10A6000030868C7DA4AAAC85FC5C01D0A7C3BCBD00 +:10A61000D3B29F1C97AF7819FD16C7A32E92A30043 +:10A62000B77E2AC94F7E6E882D1B3C82F852EBAB59 +:10A63000C2A4FFF8383ECCF16823A29D54B7E07164 +:10A64000D4CB9E9F7319F945FAE7B333E978853A7D +:10A65000C4305F679B60E65D32AD328074C1EDCC83 +:10A66000AA2B7ADD33B05C33B511F5A10F8CF9E478 +:10A67000F0B77735B3C64BDC1D9F681AF4A335AF2E +:10A6800023FDCDD700767B98CF87CE8D84C2E46F33 +:10A69000CE1AF479BD43CB225DF4C37AA1FFA6FFA5 +:10A6A000725940BF89126203480A9B84049703F3DE +:10A6B00001DF0CF309605D14BE3E580FF822C1653E +:10A6C000F2A53CBFB4E3719B4147FD8D8F93BDD68E +:10A6D000DF9261111FB6E3F3519A8618C26DF6E35B +:10A6E0006D4A61F00AECBE7804C77302C271DD02E4 +:10A6F000972CD136C0BC36187E33AD83CFCB17E252 +:10A70000792F92CAED44D0EB3E7559F898E99FC86D +:10A71000E93FF5225F3F43FFE95B32D596D7D95732 +:10A720003F31FDA7D7A44FE5703BE6A7E861318A2A +:10A73000F9299B9BE6BD1886F1DC174C9A87783285 +:10A74000EB6BDED672B7055F607F456B2DF8EA4391 +:10A750003D6942E3330F8E9F5A227AD0AF628E9FBB +:10A76000D2E6BD545B7CFC99EECAD2E3C3DF072876 +:10A7700047DC861CE9A9FEB65C2C7EBFDA193FD502 +:10A780003A0F7748B3E339AF677AAC719389EA97A8 +:10A79000854F5960317E5E6692C79A7F78AE9BCBBB +:10A7A00085FFF468E7BAE78F9CD744F5CF52E3DE24 +:10A7B000B3C43EEED7F2E37E11C7FD1A220EE5B414 +:10A7C000119FDCD8F4EDD835C8E2A4147B2740FCF7 +:10A7D0002EB1139861B77637FB3B8C43C795043194 +:10A7E00047895523FF738774C2A3242748DF73A7C3 +:10A7F0006EC990FF54E5714C0FE371F14A8C5F46CE +:10A800003819635C73A7A13FB2B0254E5E8370F028 +:10A8100038E6C8752E9EDF03FAF54AA40FBD95C72A +:10A8200099F4C7DDE92E216F1F14EAD953587448F3 +:10A8300043F89A397C7E66B193C7A16FDFE1E67C6D +:10A84000E03E29BE06F1A7C40634649FDE8E4406AE +:10A85000F5F7404C6FF9A700D9FFC38E0A63DF56A6 +:10A860001921061A4F67C778BC268AE7DCFADC1C78 +:10A870000F95CBF416DCDF40960CDB55750C11FF01 +:10A88000EA42395A8E7E139E6F65F247D0A7762131 +:10A890001F585FF6852398CFB461F224E26F7D6E76 +:10A8A0002EC7B465767E037CA6CF4AFF650132A72A +:10A8B0004BE25532FCD3A72D8ADF83ED7E50AD6F7E +:10A8C000273F39D0831BEC0B4F75746BAE0CB6BEB3 +:10A8D000A7AEA9E8B9DD0F5BB5FB717D7E200CBC8E +:10A8E000713DAECF5B02E503FFA0367A1DF249C68B +:10A8F00006BC56B9F0832727CACFB2C4CFB62847C3 +:10A900007BADFC6C4B73497EF6FDD1F8D90F26CC9C +:10A91000CF8CF197C0F801DBF8A5F8D95F233E7220 +:10A920007CA7D9E43B5919F94E213C5B9AFF3CFCCA +:10A93000E71FF37CE01F8BF19F2D7F26FEF3467E01 +:10A94000DC37705C528CAA478E5FD89F499766DCD3 +:10A9500062476BEC6D6CFF1F21A63BCAF15C0C23B8 +:10A96000BFA87EB689CFC4113C47B7255B41FE5BCB +:10A97000D33F38517C8ED75F30517C99FD8E9C67D8 +:10A98000DAA69F98FD77E3BC717E17309ADF4EC63A +:10A99000F7A78A1EF8599847C2F19A75C75CB22585 +:10A9A000AE779722BE84E8D8545BE3213E6DE6C9BA +:10A9B0004B09B6D422E7CA65AE6765DDA09642FBB7 +:10A9C0000A9FF8B2D1AE02DBCD76C42AF0FD7BCE71 +:10A9D00058D5A03092AF760BC05709FF9F8FAFCEEE +:10A9E00034E0DFEC8ECFC471BADAE6796A71FCF636 +:10A9F000ABC92F9283BB93C7DF2A2E902A305ED03B +:10AA0000B5A486F6D7A48B24D28F3605C3BBAD760A +:10AA1000B799A7B0D9ADD5135E3AC7E9271B673DF3 +:10AA2000903B7C5D268924772E90393F77C7E224BE +:10AA300017AA3AB83FEB3A496B962DEBDAFD474738 +:10AA40006731FB5B33F0D0EDD239BF37F227BA2B39 +:10AA500082A40F0B30AED51FBE4E8A5F80F392EBFF +:10AA6000B93F5B0EF3388433C0E3A8EE109703D0F0 +:10AA700096E2A8AE208FA3F64578DCD419E0715495 +:10AA8000B36CF6DB174907150B7C1BE63C4E715483 +:10AA90004F988567433D39B389E2A87218E43FEACD +:10AAA000BF404FB8FF5888C74D3D729C117F0BF2D5 +:10AAB000B8AA331C632D681F631CB508DD9F251BD6 +:10AAC000FE0CB7F63579FE48B9A9BDAB109E83469A +:10AAD0001C615A2CD3C2F1CBE564EE5C3A7B9BA19E +:10AAE000FF3CBF3E894127AECF3C16ED0A93DCBE4A +:10AAF00001F155164F6B18BF63A0B7203E5FA88ABF +:10AB0000DF84E3CACB1378D295B956C43228A4BDEA +:10AB10006DDACD1C1E7E4EFDFEAFAD24FC4E0EC682 +:10AB20007546F1E39456EC5CE686A9ADDFC67693F4 +:10AB3000A5A880FB7C7298DB415D4AABCD3F90C8F5 +:10AB4000CFFB36ACDF3E55BB9DEFDFB4F097A80FCF +:10AB5000E86C18F3204D7C987185402CDD82EB3A2F +:10AB60005D037D01BECF5836BC0EFD26E1E5AA8807 +:10AB7000AA55CD8AA8C8CF6F9BE7F5795C2147DF3E +:10AB800046FCEEEA66A34316FE02DA6FD7051D0CFB +:10AB9000FDCDAB9F7EE810C67F569FED56D18F78D6 +:10ABA000FEC9470E3D07DF1DC6F94ED00C0FFD0A4A +:10ABB000CA2B3ACA18F757C7FC889F0F99D88EF34B +:10ABC000FC901DF69F6999E71ED965E49D3A892F8F +:10ABD000E8F01FEA7BD7A49CB638C5B5DBEDE59558 +:10ABE0006C6915FADB57DEEB64E87FBFAEC03F7AD5 +:10ABF000AFCCCF075CCB123D88E70D86BFE8C69F80 +:10AC00009EEE423DF4BA33D508E2C784E34999EB9E +:10AC10006FEF2761C6EEFCFBEB95B40BEDBAB70FF7 +:10AC20009C79D9B90CFB49F74C45BAA9E0FCAC704A +:10AC30007DBFD16B8773AC7914C26DE60B968243EE +:10AC4000DA2B505CB070DCFF65F0070B7DD3392246 +:10AC50007DBDC4305E707FD91D74CE68ADEE5631B7 +:10AC60001E77C233238D497487912FF1B8EF59FCB9 +:10AC70009C20BFE765BCED5F33F85A61FBCD81A135 +:10AC800018CA1F332FB34C4ED31C0589E7636E0ED1 +:10AC90008EF1BD76F4EF273C5756AD6BA2387302A8 +:10ACA000CF2F8C758E0AEC817FC3FD73AB23752586 +:10ACB000D72F399CA08E2FC6732A6EE6A73C53B7B8 +:10ACC000219F487E0998FF94CA6811E46FF6B8592D +:10ACD00019CA63E8E766C38F51566FFF5E28C7FE47 +:10ACE00060C8D1852C4BF2D72F2B193AD7DD6C3F9A +:10ACF000D762AEE7EA20D85D9347AEB3F91481C3BB +:10AD00002A32C2C7ED27C1289BE31F4F09ED48EF48 +:10AD1000AB818DAF9D67EDD745FD8ED0EF4FC2F76C +:10AD20000586BD4CF88906113FBD49C6EFB771C60F +:10AD3000BE4CE7AA5E7530400DD81F9CAFEBD3B96F +:10AD40005FC55D1B2BC77DE57EC511102306EBC0DB +:10AD5000385175FB1EE4CB651EA7712E94E793B99D +:10AD6000159DF2087B9CF16005C0E9BA83CBF11612 +:10AD7000251EC7768E608713E37D7FFFE4373AB0E8 +:10AD80007C7D70B1842A6295D1CF874FEC5F807C47 +:10AD9000B6679F8F65486F49BB306E77FD01878628 +:10ADA000F1EC1B7EE8A3F1AFFFD1B58F2F41FCFC86 +:10ADB000F4BCF03192075D3CFFE32797FCB36ECC07 +:10ADC0000749B86B9DE1BFD2A3418C57DDE8665FB0 +:10ADD00047FE6DCEDFC41FC851D2CFAFDF5B41F954 +:10ADE00025B9FD29417D68EF86E7D222F2FB1C0FD1 +:10ADF000E7E71FF878BC5DD83B48E74FAE1FF88AFD +:10AE000013E7258412EC1D18EF0C637E508FF416A7 +:10AE1000FDFB42BA0EBE7FF0FD5D2EF4475EBF77AC +:10AE200097EB6ABA6F85EB2F269CF2DEBB74E44B7E +:10AE300072AD5A837EC0453FDCE7477FF70D3FFC8C +:10AE4000B4E79C26CAFF1F5E02FBE0E6BD0E8A1334 +:10AE50007AC262C139197ECEFF26FC27B4BFE1C792 +:10AE6000FFB6F897D0EE7DE0FB1E60A5EF0FBDE3C7 +:10AE7000FA1996D1CEC77E9EB1F3B19BF7BE4DF9BC +:10AE8000F9AAC88643E7A21D6ADF0F85F53F66274A +:10AE90005D28876E1ED844F72DDC7CE0C337909F79 +:10AEA000DC5CC00FDFC77F548F3C1F11F7D8CF4742 +:10AEB000B0BD93C71597BF61DFC70FEB80C70F7E8B +:10AEC000F47F1ED6018FABFEF81F0F7F0FF591BFE9 +:10AED000F1A8C8CF6F7EE29D87BF0BF3FCF019B7D6 +:10AEE0008874F1D1737FF5F84E287FF4FAEC79027B +:10AEF00094BFE3E1FBF8A3FD7FA80A433F6B9EBB31 +:10AF0000600AD2DD9AA7174D19ED9CDD47404769CD +:10AF1000B7159E34BF97EB19019D0F8C3D6B3C0B11 +:10AF2000D6E183FD275CB8CF7E2FB0619457370DF3 +:10AF30007CEA42FA3BA4B161C4CBF307DE3EF45D88 +:10AF4000287F08EBE22EB22E30EF6922DD73939951 +:10AF500086F918371DB8E4CBE735E1D3190DE3BA0C +:10AF6000B061928F23D6F31558CFA6FC7A965CBFBA +:10AF70002737515EE8CD03B07E7347AEDF87F88F89 +:10AF8000B347AEDF768FFD1E878FD9AA47C87639C3 +:10AF900030B9A87E6D9E6BB9F1E94B47BD07ECA3B4 +:10AFA00082FD5A0ACF9D861FE31A8FB6D7331FE959 +:10AFB000E1078FEF0CE03ABBA34B70DDF77D3C035C +:10AFC000FDB7EF3A87AF443C0C3FE75677A3BFE4A9 +:10AFD000B97F2139FCD1D32FBBC2243F985F00BE7B +:10AFE000F911CBFD1DC63C9A9B8C38C28D7BFE733C +:10AFF000F11BD0FE46E802FD63B07E543EA4F1FB97 +:10B00000876E4A5FDC1EA6F32A9534EF9BD27C3F05 +:10B01000DC941E5C86F79114E2FDD71E334F2BBFE4 +:10B02000AE4233AEE75B8B91FE4AADA7397F15E7A1 +:10B030007F167CDF63DFAF23E966D885FCDF5CDF4A +:10B040008F769D70FD12EA677EE652C573A0EC1CF8 +:10B0500076911EB4DFA1E279B9C275C7FBDAAE22E0 +:10B060003FDBFAA2E79F0AE9E18D027A30F131D69F +:10B070007E1E7B1E13C3D33F802143790E05F85AF1 +:10B0800057ED227BCBE177511E4A8F33FC2F789FFF +:10B09000C2F04B4EB61B9A74F91790DD5308673710 +:10B0A000EA7196BC344989D1B92129A0927D5A68A8 +:10B0B000D73B6122616BBC3CA25E44E78CCE131986 +:10B0C000DAF75B17AA9BB0BCF546D1B55EC89F8383 +:10B0D00031DB9FE19D45FD6D5AE81231CEB6E94561 +:10B0E000CE9FB63A07A89FAE3A91E8B810CEE95E77 +:10B0F0002E9F1C6BCBA27BCE2C8D7787114FDC54FF +:10B10000BB3E86FDB923810AB4ABBB06FFFA25CC52 +:10B1100097F42CAC8A208B3CD76BD069ADC2DEB6DD +:10B120009DC30238108FAB44B43D613C3F8D371650 +:10B130007C1EAF60C0E789EE19452FFA53C367E262 +:10B1400031E80D1BE32B34BE8957CCC36D69A23C9B +:10B15000D9616EFF6819BC5F0CEC212A3BB36731E3 +:10B16000CA6784EFEE66F2B79EED8571B57B3586D2 +:10B17000FA92AF9E911FAA2C90C86025C9CBE39983 +:10B1800077C903140F31CF2DC971295A0B7872C7B3 +:10B19000B9DFA7701FB89D5986FE497F9B48FA8F7B +:10B1A000C7F087DDB5508FE17C1E8AD48AEB613E03 +:10B1B000DFF572F9F59033DB7E2DC0D9BBAE3CBC18 +:10B1C0001BFD612F3A19FABFD74C67BBC901ECB818 +:10B1D0008DEE45F8B637628BA7E7E0403CC0F31E22 +:10B1E000317CFF72E403DF16C91E9AF562E420BACF +:10B1F00016224342EB7484CE18AFEECD1671067C56 +:10B20000FF8AD7D8E767B233719FAFEE4F5C887182 +:10B21000BAD5DF5AEFC6E7377BB50B51EEA6F5A5D9 +:10B22000363E5F245EE5C1F9DEB5E6F045B32DFE9E +:10B230005556DB3406DF5867F0CF68A62540E1CDD0 +:10B2400061B4531DA15676079777740F119AD57480 +:10B250007E1DF3AC304ED71FD3663751488FEAC3FB +:10B260003ADE82EBE85506085DCE8071CEAC363012 +:10B27000CE7CC335E45FF832D2D57CD4BB15F2D393 +:10B28000B8713FA07EFEFC7734ECCA0F7484FA17C5 +:10B290006B063AB5D8095F36E8C4A407C69AF4A38A +:10B2A00098272838499F37F15D0A8ECFFB8475D0E7 +:10B2B0008F3AE9DE23FD2820FC71A3BCC5783E6CE3 +:10B2C000BC37EBDFE735F43463BD4129D78FE27932 +:10B2D000C499DCEE9043BC6CF2BB427A08AD0AD054 +:10B2E000BCCCEFB3B7DBCBE5CDF6F2CCB5F6B249CB +:10B2F0004F26FD9874F55FA59F957821D6FCF1AF98 +:10B3000077E1FB8C996F1A32CEDD877AE9BC83999D +:10B3100077BAB332F62CD297A48629BF7970FA296E +:10B32000E574CF6689FCD39EE4DEC662E7495C1211 +:10B33000CB38E6A1BF18BE5BF0928B3344CD387298 +:10B34000AC731794FB8355943758A63E151CC475EF +:10B35000689C771D1BE51CE79F208E7CC43B4A1C24 +:10B36000B77FC2711763FC2587DBAD711718BF5417 +:10B37000DCE55D1C7F8391175438BEA636D0B9DF5B +:10B38000A9099E87F07F0D39349D65D739B98E178D +:10B39000932DFEB799CB87AAFF2E8C76EF6B11E425 +:10B3A00007E5AC9BF27741DA347D368A5C2DCCDF41 +:10B3B000751A793F2DF13DDBF17CD1D44483990797 +:10B3C000C1C7C3B1A1AC9471FE3A9D65FE80572BF5 +:10B3D000CC60C3E4F70FC7D456F483D674440FE2AD +:10B3E00013E099F35FC927CED14B9319471992AD5A +:10B3F000F1F0CD4D7F9E78D474637EFFE9D1A6979E +:10B40000558E5C9FCD7FA6785443592E1ED550563D +:10B41000240EF679EFD3BBFF123FBFFFF74D81EE4D +:10B420009DBDEB123FDD5FEB66DE28EA956E4513AE +:10B43000D02F7DEB54165D0FEBEB5CA65F88F6FC1E +:10B44000F71DF1F371FE2DFFFA12DD4BD95F9798CE +:10B45000897A6CC97C10CC87B5C4BB279A0F32DEC1 +:10B46000F8D644F33C46C987FD6A5991F856613CC9 +:10B47000C9E1EB26392B4F308E1498AC35F27BF4B2 +:10B48000962FFEB9250FF6A63BAB172BD59807CB09 +:10B4900028EF7575D9D77BF01EB9C0346D3FD677CC +:10B4A000F57F6D7100BFCFE2DF972BF05DC1B886ED +:10B4B000A6A3E07F5609F3FCF0B8EB2DBA1FA596C2 +:10B4C000C775C0B6CB0A0BF2F92733A7C66FC5F50F +:10B4D00033F318DD219EC788F98BD951F077279E69 +:10B4E00087AAC33CC6309D8BC2CC0BD41B3C0DFC41 +:10B4F0005CFA8E243F37B539A952BDBB92417A76AA +:10B5000027357A3E2DC536205E3DB5FCFCC276C39C +:10B510000FEE32F4E4C3465E93A0F07D967F72FD99 +:10B52000D88CAFF59D7A45F9D51638EF33F6A55985 +:10B53000EE49D69FFB8225CFD3B582C79DDC4178EB +:10B540006F91EFD5C63D143B6E4F31F49379323B8A +:10B5500018FAB5F619FB6D63B2F33CCC2BDE70CD57 +:10B560004A0DF1B23599A073E52E29C1E93CC41A00 +:10B57000F9793C5D33CEC5F3B232CCCB0BA10CF8DC +:10B5800075A9AC85E7EFF0EF0F24D752BFB97D1F47 +:10B5900082712CFB795AED8080F6AABA30613BAFFC +:10B5A0001E5AB5D6562FF2E2F6765700EF21F0A9D3 +:10B5B000E82FDE14BAFB758C7F1D0F02241847CBD1 +:10B5C000EC78BD1CCA4ABD2B8C3A78DFEDF67B8F38 +:10B5D0007A60BDACF7822AC10CDD1BE10AC5CF44FD +:10B5E000B9D46DE4D1B983F67BEB409E0F1C847116 +:10B5F0005D2FCEA2736CCF1BF837F19CE333C1DE15 +:10B60000F3248B9EA8B004F97395EBDA285E7AA731 +:10B61000A06978BF8F1E91E89E9BB2B9ED941FE799 +:10B620003E45A2734B1BE72CE9409B72CEC28CF6C1 +:10B6300002CE2F5C4B711FA57DDB52F4CF292B9ED0 +:10B6400058867E1EA5F9D9CBE8D976A803DFFF5B23 +:10B6500019B71394B62357F0F7EF2FC7F7D5B9F3FF +:10B660001EBA8CF6526F6DCDA8F75191A4B49D43CC +:10B67000F616DC4B3BA9A03CB5A07E4DC1F7530BA1 +:10B68000BECFB39507AFE17AD5CE5CFEE2BD0CF339 +:10B6900051775CB32D88F47E1CE7857A76D4AE3F73 +:10B6A00049F240A335CFF58037769CEF336E0778AB +:10B6B0005942C3C3D9DEC0B733784E96811D81F796 +:10B6C000A37A03096D6500E5AF9C40FF8F3B94A60C +:10B6D00073A57EE80BF301BD81A88678F306340DCF +:10B6E000F1E80DC4A8AC95C73FC3FEBD8138FF5E2D +:10B6F000CFCFDD898A790F649AFCF54C8227C55D2E +:10B70000DB74A4C71C7FAA1FC19FE2CCCE9FCA9442 +:10B71000A2FC89C7578FD732F27B945AB7BE243325 +:10B72000F88E6CF09D7825F6E7A9E7E73BF2FC2759 +:10B73000D3817C77AE3265B17436F11F3A5FC0D8E1 +:10B74000941E8C07E0B1592C4F53D4C57A8385DF02 +:10B75000D5733DF980371EA67E557E3ED8C4F7E0EE +:10B760009C5328BFDB8B6B8CFBFE3417E92985705B +:10B7700076A39E6CE153527D5F0CFD6F65069F932F +:10B780001AB62D0D03BC67187833EB3955FBFAE771 +:10B79000F0CCDAEC72A000CF831DE2B8F0E755BF21 +:10B7A000DF288DE2D7007C9EAF50FFB26EC3A7A109 +:10B7B000B71E2EC873FE8AC1BFCD27F0AD5EA78D20 +:10B7C0006F5D5DC0B7AE2BE05B1986FE12BD9A0DB2 +:10B7D000203FCD18EB80FE2C241A4F07E73B2E3577 +:10B7E000AEF1FCE3F82CD4537656C62FA5F5A9E5A7 +:10B7F000768B53B5F3B18E52F43A061E8BD0EB55CF +:10B80000C5E8B550BE99F838A070F9623EC792BB42 +:10B81000BD865CCDC98B705618CDEF3CF8DD5389E1 +:10B82000FE1E76DAF9BDF9DC9C1C68E4E70BECF44B +:10B83000D7AD446C74E677E9EC6268FFB0A7783F57 +:10B840005DC67AFA5DA9B8913F4FFA9E1CE4797FF4 +:10B8500066BD0D861C47BD93DFCF1FA7F59B61E03A +:10B86000C5DDCC26A967E4EBDF63E06586B7F87930 +:10B8700097BBCD71BDF671DDB5F671EFCD8D9B3007 +:10B88000C6E574E3C27C1005CFADF1FDEAAE4D69AB +:10B89000587EF83BC7766D0CE0BDF9F56497C1BCE6 +:10B8A0007494471BD69F26AE87E76EA33FED4146B3 +:10B8B000FBC8576F9EA7CC9D53DE8D74E0ACD5C9F5 +:10B8C0004F6DE6499BEBE067BF61B758E6B3D7E839 +:10B8D000CFC42F9ADEE2BC3C5EFCEC5D5BFDA78C26 +:10B8E000FA265EA07E9B3869243F78DAA05B7F93BE +:10B8F0005D2E4C94CE9F35F687D3E0DF4EA3FE211C +:10B90000AFF69C6289EFF7C456C5AE812EB46E4D7A +:10B91000473F952FAE240CFFA39E6DE2F751ECE458 +:10B920007EAA43CAFC7C5EB92B68DCB796F343E978 +:10B93000B6737DDD78AE4FA0737D11F463FE09CF41 +:10B94000F51D4138C63CD7F7FFBF1DF33BA5726418 +:10B95000FF85768CACEC09AE6413B763181B20BA74 +:10B960000F9CA1FD56A4FC9ADEC5782F7860B6B670 +:10B970001FCB5DAEEEC578CE3670A62157F54D8B48 +:10B9800051AE06CE62A42AB936F7917D7356B9E658 +:10B99000F6215DE31EADC47B29C3FCD991A1F3352B +:10B9A0004CE1FBD62C6B5886BAF16ACDCFDB713AED +:10B9B000EDAB7C82CEDD14B6D78DFAA7F9B580AF9A +:10B9C000323FCEE7380731C367C1E7887310AAFD5D +:10B9D0001C68379E83B0C40FBAD589E60DC764A42E +:10B9E000830DCAD2F688C57FB42150D27F15F55990 +:10B9F000F877A19FA07B82FE89DCF84B60FC26DBF8 +:10BA0000F8A5FC579A153F45CE41507E986CC8CD9D +:10BA1000BE393DA5CE41FC85AD9FB056E2BC49DAAA +:10BA200076BFD944F763E1B394DF67B92FE7F759DD +:10BA3000EE2BE2F799E87E2D356EA1DFE7065FCEAB +:10BA4000EF73836F3C7E1F837F96A7588B87F37BB2 +:10BA500082FBEE85AC19E34677B71F35EE614FD117 +:10BA6000FBEA159C7E4BC13558B76054BD44053D7B +:10BA7000B10DF88967ED8F1BDB8AF813D5D6F67AFE +:10BA8000CEDF391CF7CFF60BA897A8925A5D2C1F72 +:10BA9000B1E1D3F5074FC3B8471B97AB15B5AE1649 +:10BAA000F4377EF39F3CBA1CC4F7767F7AE0B6C8C1 +:10BAB00045F8BDC2D02323DB832D784F46EAE71E2D +:10BAC0009DF2FDDA2CFE7C30C5EED6EE3E82F962A8 +:10BAD000C7BBB99E19C9EC38520EE50A1DF44C28B3 +:10BAE000A76F575BF01C96BE81EB99913DB207F9A9 +:10BAF000CEEE023B39D2AB1EC4FCD49A7EAE67A612 +:10BB00006FE7FAEEAC5EBB7E79B7C6EDCBC800EF4F +:10BB1000A770BEFFD57E4BAD4B61BF15BDEAA0D16E +:10BB20002FD9F530CF8377E23C2FE0FB6844FF6DDF +:10BB3000D0FF28EB3E16DC8571E4C2FE7376549B81 +:10BB4000F49613EDA6E6DF255199F1B085EB72EB83 +:10BB50004B7C94AFDFAB35A28DBECDF37ADDF22FF7 +:10BB6000AA307F4CF2FCB20ACFE398F18AEEDCBD3A +:10BB7000559F3932A0A7536EBDC072796574DF132B +:10BB8000F47FCCD85F85F333FD1EDDA097FDA808B8 +:10BB90001E8E1AFCA0DB973B67C8CF03AAFC3CA013 +:10BBA00059EF98CF38AF097068D6DF2D01389296DB +:10BBB00073C5808F6998972E1BF28649BD14EFF3E9 +:10BBC000A01E15C5F7A9CCED5CBE441735635E9584 +:10BBD000F47B6B9E805B66742FB0FB157E2F09F49F +:10BBE00093F1CCA5FB337E8FF29AE089146917D4C8 +:10BBF000E99E08B7C6127A05C2C3BFE7EA87529A20 +:10BC000071AF686251F5C8F6CCE8BFC6E03F8579F0 +:10BC1000140E7F411E85F1BB79A5FCD3665E4DFEF7 +:10BC2000BE3799F03ABD89F383E9EDAF65308ED226 +:10BC30008DE79682583EA2B5217C9A3C80FE8CE925 +:10BC4000ED6FE818E78924FC6191BEBFA9E3FD3CD4 +:10BC5000EA1FCB19FF7D2DC0FC028C4B30BAAC6EB5 +:10BC60007ADBB116FC5DA146B4F3B17E5BF3B5128D +:10BC7000D0E1F4B5211B9FF169F672611CAD8E25F0 +:10BC800044D423EADAD6B4B6F2B8AD5E06FD3DB6CA +:10BC9000F06A6F6D383FEEA9F8AF59793A9C64C0ED +:10BCA000A1B6EC69C5B8FC2902F7BB98FBA7AEF9B1 +:10BCB000E077F0F781EA707FCC2518B3E2823CDDB3 +:10BCC00098F40EF667A37F7EE973E94CE171C4C274 +:10BCD000F3E9E6D38C23A60C3BB33B39407E935E5D +:10BCE000C37FF29CE1CFFD29FA73E1FB13E8FFADBE +:10BCF000C3F86A3D3D1F4C46E9FDCE643395B7A3BA +:10BD0000BF17CA7B93312A3F9EECA0E79E649C9E9E +:10BD1000BB939DF43D9D4C50F9AF936BB99F26A901 +:10BD2000D3FB1F277BA9BC3F99A2F20F93DBA9FC91 +:10BD3000B7C9343D7F96DC6BF897DBE9996A71ED02 +:10BD4000A273C5075C61BC7F605F8546F78EE8A77C +:10BD5000F3BC68F56076AA350FB23FD97B9ED5EE6D +:10BD60001D6CE4FE9A52FCAE309EE9D6E20CFD91C9 +:10BD70004730DF17D679A59FFB1BDD5AEA7236776D +:10BD8000647CF3A975C5EDE76FF9397F68D0B222FD +:10BD9000EEC3AC58C6EF3F1F181225CAD3F0F2B35A +:10BDA000112CA697617E8071CF4A8316D3B01C6F89 +:10BDB0009513A8574BDA65AC0CF701E6DD013CDAC8 +:10BDC000931AC37B5A7CF97B59BEE5A7B8FE80263F +:10BDD00044F2FAACC4F8384FEAE5F13E789EAE1D65 +:10BDE00015518F697D26EB2D868FA7060E7BE9BC4A +:10BDF00032CB78519FDE373096FFD4FE3B5D2F3932 +:10BE0000B46E844315AF22BBBDDB88D3F71B71FA38 +:10BE100027FD9CAFA69C1AE537F5EC17D3987FF366 +:10BE2000D4802860F9A90322FD2ED95307E63D8F5F +:10BE30002CE4B8CA1A711F0CB62C76F860FE4F05B8 +:10BE400058231E553CF80CFFBE2FCAE661B969881D +:10BE5000F7E71BA8A1F64EEBEFCA309CC7D12F2203 +:10BE60009FDBF78CC8F0BB2F6AFF7EF01918BF89E3 +:10BE7000E020BF99396F491A223C3C75E0A8D7AA47 +:10BE8000476927EDED177E602F3F3506DEE6BDE002 +:10BE9000B2C9CBE8B3F6F612500A5F37BF86EB366D +:10BEA00077E8977CDD0E0C155D37989F6DDD9E1A47 +:10BEB000583AAA7C37EF51B6ACDBCF70DD52D3E3F2 +:10BEC000C48F81C487D783BC98ABC6D91EA25396B2 +:10BED000780CEF59D27A6328C75D5A8AFCC52E2D9B +:10BEE0002DE2B3709DCD71DEF1737F538F3640F537 +:10BEF0007A8207E9DE87B96AF17B3F5EF3BB69BFEF +:10BF0000CC95F9F79EE052DB3D11EFF885C2EFEAE0 +:10BF1000B5B6EF467B64A0607FFEC67FCB468C9FA4 +:10BF2000CD0D727DA22778D876EE25D75FEEFB4146 +:10BF3000F53ADB777E9FFADC9039DE61B558FB7706 +:10BF4000FCFCFC474F90FF0E123C55DA7F12AC0709 +:10BF5000C69B4AECABE75B5EA3F5DC3774D48BEB96 +:10BF60007BF09956CDDC07E8AF30E90EF707F2BB5E +:10BF70008FE13DEA3985F45D48CF4F86335E7EEF31 +:10BF80008DFD7725BFF03BFBEF4A3E7580DFFFBCA0 +:10BF90002F3C44F50BE576F39BF6FAA7EDB5F76772 +:10BFA000D299395EE17ACE5C6BAF3F3D51D0BE6035 +:10BFB000FCC2F6D33AEDF5ABE3131B7F529B1DFE9B +:10BFC00039E9E2E397DA27B3B7DBEBD7A58A8FBF6E +:10BFD0000FC72F42CFB37AEDF5237AF1F6A5C63F0E +:10BFE000E73776F817BC52F8BBA0BA713FF1F8F208 +:10BFF0000136C4968FD38F17E6E7AF0D3992FBDD7C +:10C0000004A39F07E6A72F477F7D16753E9067E93B +:10C01000F9C397A31F55C343B0507E687E86BE9B6D +:10C02000BFF751FFEC512A7B741FFD0E51C3C9C3EA +:10C030009995F02C07450FC7F7756ECB609C8AB5B4 +:10C040007B484FF3E9BFD7F1FB21B37CDB36FD51D1 +:10C0500028B782DD877AA06FCDEFF547A1FE37CCF8 +:10C0600072A26A07F6DFAD9763CC9695D7DAF3BC78 +:10C0700002B7BDAC63FEA1E75E91C6F3E82EAABF8E +:10C0800014F5C285689FEC24F8BE29B204DAA1AC8D +:10C09000D66E579AE7D03757A7E83CE40E678AEE8A +:10C0A00093C9C9F9722ED7CC27FCBD80F7BC399A49 +:10C0B0004CFF7194E1BD93A82AF3736A516D05DAC0 +:10C0C00013C6FC1DCDBD43740F60B3977EFFC4D172 +:10C0D000D9730BF24BC7AA6DDF447EEBB8EDF16F5D +:10C0E0005179CD4F6EA572E2D077A8BCF6B5EF615D +:10C0F00019E57F39AC8B433F763BBD37EEA15FCB73 +:10C10000D4F59B282ECDFD568F08D977D11ED6D7D2 +:10C11000B9C258DE72C7F026C4EB34365DC5B8E14B +:10C1200023DAD177C97E6E03951FA6322DE3E1F79E +:10C1300069B6A9BBD07E36F55ACA07023DB722536D +:10C14000DD8AF2A9A2B3268D719C7EC36E9CB66A6D +:10C1500040B8CA97B76F2BA26A0BE2B7A20DEC5397 +:10C160009CBE71DEBA62953A88F16DA589DB950FA8 +:10C170000AAA7827EA753772BB157F8FC52A271F51 +:10C18000E934E04B807507F08432EFBD8B71A55028 +:10C19000BB5A63852F4439A5B0FF0DF827B5870931 +:10C1A0007E13BE5022235C757A1EBE49D130C13742 +:10C1B000A99DC397E31F89B0E0B6C0F79011FF1A9D +:10C1C00001D7AAA304C7F13500158C3D1DE142BB80 +:10C1D0002661876BBA81B75086FF7E702861876BB6 +:10C1E000FA9A211BDE42D10CC1154AD8E10AADC929 +:10C1F000B458E17A5830ECFD6F95C0DB1A03BE6E7F +:10C200000E5FC4802FB216E0B3D8CD1103BE19065D +:10C21000DE66ACB5C317E906CDCE02DF8C6896E0CA +:10C220009BB1D60EDF8CEE6C8B6C816FC4FDEA0582 +:10C23000F00D661DF4BB067D46DCD253F14946C3C2 +:10C24000BD927D542EC61F59AD346C3DC756E8EFE4 +:10C250009EC352742F52E1EFBDF5D5B61A79D4A31F +:10C26000FBBDCD71A44F26B3B42DFF399DBB4F8CC0 +:10C27000EEEDFDA48ABEDF75E1C30789BF45B9FEB7 +:10C28000E851D274FFEBDDD3EDF74FDE7FE11F65A0 +:10C29000B46F37BDECA4D8E2E09CDFCB38EF7E4131 +:10C2A000D6717DFAEB1EA7DFFF9D13CCC8567F52D7 +:10C2B0005FE33C92135B119714BF661AF2BD3B73A8 +:10C2C000F16CA6CB00BF1F71413F6432A5BD13F8CE +:10C2D000E03B2EB30CF5A1EC73E7EBA3BEE06F35AA +:10C2E000BF57507D5F59C1774CF2A3EF01FABE41B1 +:10C2F000847900BFFA7F68C56E7500800000000079 +:10C300001F8B080000000000000BED7D0D7854D558 +:10C3100099F0B977FE9349E6CE304966427E6EC207 +:10C320000402069C40884143BD09C1261875C0001F +:10C3300051A31D214A74D10ECAAA75D14C20812463 +:10C3400006180228BA6A8780DD686D1B5DAC7E5FC7 +:10C35000FBED4E145BF46B35F2635151035A6DBB28 +:10C36000DDDD687597FD96D67DDF73CECDDC7B99DC +:10C3700010DCEA3EDFF77C9BE7D1C37BCFDF7BDEBF +:10C38000F3FE9F73EFD862A67AFB02427E228ECA2A +:10C39000F62021B3A3A6EEBA8584748963762211B0 +:10C3A000629BA03EF30A7328EE24E40BFCBB3459D5 +:10C3B00012D249C87C42D24EFB497C1EB4F3C4C29F +:10C3C000A13280CD71E2294BB64B3B9DA7ABDFD1AB +:10C3D0004E8862236444F9949C0238571208C9229B +:10C3E00044AA8E4547012EAC4ED0D251175708941F +:10C3F000CEFA7854F4224C828A0C654016C2808FA3 +:10C400007943B88D5410E2F2A549BD458478EA44D9 +:10C41000A29412FAF705FCE752AAD79833E11FD588 +:10C42000DEE8293B7F5E8CFF8FD2F9D24E3B487C01 +:10C43000CAD9784B924CEB93F83B69BBAFBFFDCCAC +:10C4400094743CBB7D196DA7AE839078B300F4491A +:10C45000EFC8947AA1EC138746FF16486A11A789A2 +:10C460008B0176E68AF101807B67FED81786F11A88 +:10C47000FC6228AED99FBD6E91EEE35EB7C0F6F3C5 +:10C48000506C8F13FAC505AB4C0A0026B13D487FAE +:10C4900012B2069F8062B3FD48F68730BFD5F14ED9 +:10C4A000F68780370944941AA8DF4DC8582FF0D179 +:10C4B00066FF5DA40CF1A8B18F99828CEEA412DA0C +:10C4C00063598CE385A3584F14FBD013D0FED98257 +:10C4D0003069847DEC11C8D846DA3E4C6EC2F12238 +:10C4E00005328EA704F3F8FE01BE2618272F2FB9B8 +:10C4F0009F8896CC6001EBA79D5D6FCDAB8E9ED2E1 +:10C50000F0458F1BDAC2F8D11A31FE04F0CDEE7A75 +:10C51000C54FE73B9113048A923E0BF01BE0133D9D +:10C5200029D0F5762C05CC01BEBB56DC6B0312CDB1 +:10C5300098C7F8E91811C91733A07D86D23105C70D +:10C54000EB10C9135066D8FF9DD207303F8EF36CB5 +:10C55000F6A7C9C89F2F17B37E2FC3FCB88E3B9692 +:10C56000AF922DD02AE6238E72D88FCD69E141019A +:10C57000D6BBCF3DD860F613B2152B2FC6717E53B4 +:10C58000AF94D1798266A0CFFD1251EAAA114FA8CB +:10C59000CAC5F12EED8E42BD5564F00D9E994BA299 +:10C5A000201FC3276D3504D75544E288F7EE771B6B +:10C5B000FC2837BBFC719F04EDEDA59B478439D067 +:10C5C00047F626E9538CFC13A3FC14DDE894703D78 +:10C5D0005BDA49305002E3DB466402F4DD62269404 +:10C5E0001E5B246B3C0AEBBA5B18F11158CF7A77CB +:10C5F0005B2990842CF014533ECA98517908AA897B +:10C60000CD670D06804F4AED8A23341BE8DF4EA22A +:10C61000A760BC6D58C21A860303F651C4B76AA05E +:10C62000BE18C6DD1D10890DF7C91AEA990670DF1C +:10C630002C910C201C1AB097003E77BE0193C9497B +:10C64000FECDF432FEEDB2249A434E5C05A3F372A4 +:10C65000C013F9416D77EF14A667B65963DD4E2A12 +:10C66000276468004AD7693789C27E99EF1B25CBBA +:10C670003280FBA63039C8ACAEA4FAC355F087B0FF +:10C68000504EC8753B57D4DBF3014EE3FB125D59A6 +:10C69000AFE4015E65664AF7EB76AEEC8E226DAADA +:10C6A000F4F4CCF1307C2CB8EFC02F33DC1C9EA509 +:10C6B000C76F677BB0FC430BEAC72A5AF6B42BB4AA +:10C6C00034EADD2F5BAA749EB03E33D146E9668E14 +:10C6D000BD6842FE9D1318E81592F50F7B04AE6706 +:10C6E00018DEFEA922E5DFDE0D9F9891BF70CFD343 +:10C6F000A74E3CFEEB02890A73B1149B8752D89176 +:10C7000089F0DDC3F51121A3872E857976CD1465D7 +:10C71000C4EBC3F643D27E0BE2CDF8B02F3B8DEADB +:10C72000B7E15251417877C8BAD7068CF78065B423 +:10C730000DF18B5E9126A39C1333284C80BB664978 +:10C740007194C7071C631FEEC4FAF969C12764AC72 +:10C750001FED467EEBAACD0BF6027C9309605C5F71 +:10C760008E93EA81CF9AE6AE2C81E73BAF5CF2F084 +:10C770008DF07C674D5A10C8408E797C943E66CF10 +:10C78000A0142E9B785DA4D43C36AAE18B6E73C8AE +:10C790004AF1DD0038006FEC762E6B2841BD238B0B +:10C7A00041100F7253EC1569BF466FED6E5A761942 +:10C7B000B6B7DD271113B457D2969D9160DE4D4E6A +:10C7C0008F6315D03526C69BFDD85FB491272A50BC +:10C7D000DF5FF6DA4694FF2BCC523AE01D8B1D69E1 +:10C7E000463D17ABB0E26AC9CF3D4C6EB6B50F9669 +:10C7F000B752BE1B2A6F8589375BE37601FA6F1645 +:10C80000EDD128945384D01C33E8A567FABFD560D6 +:10C81000077FE0D7C5413F81F9BDFD993D66F0171F +:10C820003245554F35396A61FD972C7252D8B52380 +:10C83000AB211A80F656CE5F64C4B76C76921E8F19 +:10C84000A2DDC942FF62BF5D0C22FC5ABD230BFD75 +:10C850000F181FE0318071FCCD7C7CBF7B5103EA57 +:10C8600035C4B7B384DA091FEA936D42A814FD9763 +:10C870008BFAA73660FB6D8ED1E3086FF55CCE6056 +:10C88000B78A9FB54181FE19E92A0CFC00FCFCC067 +:10C890004227955F42CED4B75520DFB0FA19EEFBA0 +:10C8A0007A70BE2E41607C763DA17C06EB1843B8C1 +:10C8B000A7647A11F2112191E155006783A9467BA3 +:10C8C0009513B8797835C0B580A05005F46BBBB32B +:10C8D000665F05B5771117C0D9BECA8E15004BB576 +:10C8E000F6312BB04E764B93CE5E91C6269DBFD2CD +:10C8F000BC76B9CE7E1173DC17CAE07822FF2E25F4 +:10C9000071C6DF2107EA6D2F298DA21FD02A841A54 +:10C91000505F8221A1FC8B04C0F6598D24D15B4E5F +:10C92000DBD717011E59D129C15E007B0589F2634F +:10C9300014D6F81CD43B2489B6275702E620DF8B97 +:10C94000A4BCCBD02E2E4958492FEC8F29C36CB5EF +:10C9500040FDC9E6748276FED943A2F546A8FF657C +:10C96000288D98249407FB659BA0FE8A630C8E2972 +:10C97000E26516A8BFEA5DD63E7D8E6F7307D48749 +:10C980005F7710EE2784EC40C4CB19AEE475DFACC2 +:10C99000CA5F42796AA478CE0F50AD8E32FC6F56D2 +:10C9A0004839F27FABBB88F2CF820F15D74278BEF1 +:10C9B000E617967294C779BF005308F35CA94873D1 +:10C9C0004DB08E7E6E6F76F0724AE3A819EDE0F0FE +:10C9D00062EBE656B4273576D91644BE0F533E2295 +:10C9E000E4BD4307615FEC02E3835BDDEF50FBAA2C +:10C9F000C29FF4FF7D2F85F3C02E6AF66573EE5358 +:10CA00003E1C5795A3DD0B183DC93761D44B80EF11 +:10CA10006C6CBFC8968CF813389633F4F030F2552E +:10CA20008955EEE56B46B9EB9B39238E7AAE1F6CC8 +:10CA3000CD08D5CB8A83A0DD2EF36E3641FDFA57A3 +:10CA4000C0C8009E990BBC9721DF7D70D04EE9FBDA +:10CA500040C31E1FF5134A7ED68C7C4EE49166E4DB +:10CA6000C357BB66CF457D96E94950BF12EC3938B4 +:10CA700004A037DAEDB4ECE57A764499AB207E0E6B +:10CA8000E88BFE82140875A05D2E0C281DE88F67C8 +:10CA9000E54514C4C32B47A3E897F75AA41A33F209 +:10CAA0004BB940F5A73D4F24710D1F9B9D693A5826 +:10CAB0009A22723BD2227D7401AC555960FA024A27 +:10CAC000E2F3C0269E436F723FB7F7C42201F5C858 +:10CAD000AFD01F067CBD0A5186CA70A211DF5290EA +:10CAE00087532EE531373CDF89B4A5F27CBA1EE9C5 +:10CAF00060D41FB77E431970C3788B71AFA9FE0B4A +:10CB0000C53F2C41FBABC499FDADA7E596F6665A2F +:10CB10005E7AE6BB7694B76DE097E0B84FB92FA97F +:10CB200047BDB6CD3C6A97901E8DD04FC3079EBAC5 +:10CB30007A1DACAEC35505F368E861CF6BD6C1AAC8 +:10CB4000BF37E2AEEE463CFFDD117AC1CDF53BDAF0 +:10CB500095DBDC6CDD13F19DC5A6D4FF25F59F4860 +:10CB60001C65D8D134778D19FDBB803EFED92C468B +:10CB700025D4AF3F763F57DFED3B9BAFB7B497521D +:10CB8000BFC3E83FDA48E8ADC7909F791CB0CB4FF0 +:10CB9000A8BDEDF55BF7A21F38913FD9C5E96CB28E +:10CBA000931CED7A2D923D474BA7F284A483E71D99 +:10CBB000F2E9DACF1F9175F5171D2FD5D52F180D76 +:10CBC000EAE04B7E53A56BBF704CD1C1979EAED7A8 +:10CBD000B5AF214B75F022FB35BAF68BA51B75F569 +:10CBE000DFF4DDA2AB6F90D7E5A4DAF77B70FD59D7 +:10CBF00049BF17F8B10DFDA0E1407F7D31D53FCE93 +:10CC000020AA0613EE2FB4BBF39796F283F0FC3301 +:10CC10006F5EB949463F38E847BE077D4FFD27FAAA +:10CC200007F539CDD25EB43F5DC2BAE155B84F8247 +:10CC3000E4EE847D3DC8FDE1DEE56087E0B9628217 +:10CC4000800AF836A7B4B2A3D24BEDD29840EDD00B +:10CC50005D35FBBCD40E45AC5567DBA1296D9693C1 +:10CC600036F4B126B1470BDC6C7F7B5F71768A2E80 +:10CC7000987FE6CD3ED4175FD6CE4AC8BFE8E70519 +:10CC8000098D2B9CA1B92C7E0FEAF977327F63784E +:10CC900074A748ED739318473FB067D444E9B5CB08 +:10CCA0009716872091EC6AAACD21E7F0435DA74D46 +:10CCB000341E1F87CD6304E5DC75DA4A9F1BF5C976 +:10CCC000B305213FEAD5DD6EB63F9BAD4AC286FE75 +:10CCD000D337A4BD1D30BFEBF7D56BBC20172EEEAC +:10CCE000EF18F31193E9AB8BDD921AE7537F478D71 +:10CCF00073547E4A966D0B99FE8AD0322710EE103F +:10CD000065CA2C74BEC5052CDEC86EF1EAF6CF5D8F +:10CD1000077E3FFA0165E6015311EAC17B68FFA473 +:10CD20007F2F8BE8DF7B9AF4FDBC8D7A589D87C2FC +:10CD300040F2E3DED471831A0FFCB9718D315E804D +:10CD4000F882D26DCF8EBFA0FA738989448652F8DB +:10CD5000E35778ED14AF25A6E166DCB77B4044B419 +:10CD600071C9662E3F9B78B9A55DCE45FBB0B5BDB8 +:10CD70003417E9F26C41BCDBE3C57C857D04FDEB37 +:10CD80001E37495C8A76F05D07B5EBBDA54234CB12 +:10CD9000951C6F4BA9588FF916D0ECF5184FDC3D58 +:10CDA000C75B4EFDAD3C337B6E1E092DAAD03C9770 +:10CDB000797B3B8B4792CF797BE7686C91661C75DA +:10CDC0009EBBFF640A0F69E2FE9E227980F2FFBBE0 +:10CDD000D7F85741BF655E66E777FB153FF2B33D75 +:10CDE000746E7DFDAA4BD9E2C9FAF27E51F7C17E7D +:10CDF0002AFFBD25D634E1C2FFBC3ED8EE91291EE4 +:10CE0000DD87F4E34D6964FC9A5D668E9B04E4DF84 +:10CE1000A080F6518DB317C39ABE0085EA6DD6F394 +:10CE2000A7C7C0AF8E8044F38869755EBDFF6DE013 +:10CE3000E357B9FE36E61B27CA2F4E26CFAA7EEA55 +:10CE40000D88D4AEF672FDB41BF513E6A302E7D647 +:10CE50004F79A7D375FA29CF9C10703FF34E67A680 +:10CE6000D44FB79AC22F79808ECA1E99C6BF196552 +:10CE700084C6B769B13B49878CF88ECAB8BF839E18 +:10CE8000B406D93FB13EDDC5F1FD75ADE2F88626A9 +:10CE90002FD38BF86AE46C11E733157620BEF3923A +:10CEA000F0ABAEF051C4C7618E51BDEA40BCA17E6B +:10CEB0008B87F11DCC46FDD06831A1F264770F76E7 +:10CEC000E4019EFE5F7408E01293BF3CBAEEE7F9FE +:10CED00098D78C90B9E8EFDF33FA8C80FC6D277D12 +:10CEE0002326DC0F19E26CCD7E5CCBF5D0294F8672 +:10CEF00017FD4E328FCCC37D5D1F96B760247C77C3 +:10CF000024FA732CEF6C0DB9A6C9493CD53C839A21 +:10CF1000FF32EEC34DA85F52EC536F16D32FC67885 +:10CF2000FF532E5746FF0D764EFA283DC96FE7EBAB +:10CF30000FFB4844C0BC9BAFEC2E1A6F121E6FFA59 +:10CF40002AD676545624ED7C8E6F338D3F553B9F09 +:10CF5000136ED2C941B66AE79BCF6DE757B4EAE1D9 +:10CF6000A6163DBCAC69B94E8EC6ED168F5737710B +:10CF70003BD58B72CEFCC638DAC761E7DC9CD17337 +:10CF8000E44DD4FCC438CCE3FDFFE9BD7E8936DE38 +:10CF9000FF76D6FF58A28BF7A3834BCE19EF471F1E +:10CFA0005FD2E64DEA9D929D3FA1FAEBFFBE783F2E +:10CFB00046E947489DF45169326E9A983FCCE42384 +:10CFC000B5BF89D2BB39951D5C9F65627EA9C0FC47 +:10CFD000168C9B51EE206E2EC7B8596D771B8F0FA4 +:10CFE000CF8EA3D5389B04B1BD319E4EF667FAB300 +:10CFF000333F740D8EDF49C4E046E8675EBE82E6CB +:10D000000E95FDA1E828EA2520EC23418C338614F7 +:10D01000A188EAAD6BA668CE3DCC529CA0BE36C6B8 +:10D020004999E85BCC65E554D4213CFF5A02BAEB40 +:10D030000B18FF475C7F6F4B4B507B6FA4C38F2453 +:10D04000B63E6D1E18FD2CD50E1C9B67A27E93313B +:10D050001FFCDCAEE71BF4F9E0171AB4F9E0E77641 +:10D06000BDD083FAD3980F56E755F3E1C6FCEC70B8 +:10D07000D53207C6DDBBAB06EC34CE0ED5BAB0A4B4 +:10D08000F94E18B775E7CAFA681EC6A55739902F2A +:10D090002C4B457A3E371402BF41A38FA23CDE1EC3 +:10D0A000E179EF9DEDF53CBF1C2A477F26BB31415E +:10D0B000CF63DC75CA08FAAB53AA481CFDBF9EF6C5 +:10D0C000665DDE59B5932A3D04EE474E665F8D7668 +:10D0D0007524D14F50CE2D257182EB090EEFA2FBA6 +:10D0E000494A6304F3CEF0CF28657383FD35EE57CC +:10D0F0005FF90A07B6BFB32353413FE0B3A65AFF17 +:10D100006A199EBB995FACB6033E8DB532FF780FAE +:10D11000E60B3DF524EABA10D7C3CE13B39A246ABE +:10D120003F5E5AFA20417A3BC27182FDD39A1401C4 +:10D1300099D15D47A85DEE2D21F13281F62776D495 +:10D140005B25233F40D87BE60FB47D6F49DCE7D4F5 +:10D15000CCDB35F34105C7EBBD2F4690DF1C89873B +:10D16000899C81F3C64818F6DB1D906B707E77BDF5 +:10D17000548CA6BAF78FA69479F1CFF8BEF516C9EC +:10D180001D9867C1F3B118FA75259539E173F80751 +:10D190000EFB0597B46AFC83CC00E3DBC9D663E4DD +:10D1A000D3AF605D542E9E9FF27F1A50AF06399F19 +:10D1B000823EAB35A31E98EDA5F1EB55A8B03C49D6 +:10D1C0007EED6FBF87F2E7B6F6282D3DF56379A8AF +:10D1D0007FB34177A29EC9AC62E7BF3DEDDDB43EAF +:10D1E000A9F7F8B94A8148F9734AB39EFF5CF57A0A +:10D1F000D8111825E837A6559D3B8EE9DD20C42DB2 +:10D20000177EFDF1CAF6850F5279700448D4C4F830 +:10D21000B4390A74ED1DFE3752067476558F91B5F8 +:10D22000003BAA63A4B16C62BE29E0FE4E2FEC174E +:10D23000EEC767A057515E26C2270DF8A553E39F9E +:10D240006596327E99687E239F68F0A1EBF9D3142E +:10D25000173D7FC473FEF00C421E6AB79330F8E3AB +:10D260000FB74B14CEAE0B75E03199C5CCC65999AA +:10D27000C9E89C65D82F5F8BC12F6FD5CF6BDCA71A +:10D280002E7E1EBA57FA5F0DD16AD47761AEEFDAFF +:10D290006869E90A0EA31C916B08CD5F591C520DF9 +:10D2A000F221B94266E73F2AFFF0F3D9F1B8B58021 +:10D2B000C5AD93E9BB998D43123BDF8CA4D49F93FA +:10D2C000C7192CDE0C923D761C6728C0F479320E0B +:10D2D00097048CC3415E3A054FB2FD44FB1A14AC6F +:10D2E000A1216792DF603782982735F2DD666EFFF5 +:10D2F0008DFD9BB81FEFE0F718D4E7E0BF377AB396 +:10D30000B4FE3BBBBFA0FAEFC67C8871DC551E366D +:10D310006E97A4FA8761EADF384E0BC638E11AAF80 +:10D320002E4E30EBE20470D228FD05C142E997771A +:10D33000E219A140FEEAE4542D77717F670BA7A3A1 +:10D34000EAFF3CC861A3FDFEB6571F678CDBCD42E8 +:10D35000CEE7213DDFA871883D4FCF1F1E03BFE4FC +:10D3600018F8CF65D05B6A1C638C5B8C71CD4D88DF +:10D37000D3C518A7DCDDB091E67B8334AFB1B5BD72 +:10D380008AE6396EE1F4359DF92ECD73EC22F61163 +:10D390003C4FEA090D50380AAC89E7949B02FD879F +:10D3A000F0BCE9CEE55619E342A535DEE9A1F16509 +:10D3B000701EC6973BBC56BABFB79A423B905FD22D +:10D3C0004884E0FD81DD19CC1F05FC949B60DE974D +:10D3D00096AF10D0AED8E54802C77304829534AE3C +:10D3E0002321C18AF2DA44E8F96D5620E643BBAC4A +:10D3F000AE2390C5F8BF67F93A6A8F6C849F0734F3 +:10D40000AD234B417E9688248CF0569EBF51FBB9CC +:10D41000B31CBABCD4CB756C5F6C794CEFDAF254A8 +:10D42000BDD743CA66235E51B216E6B5C911D2E82C +:10D430004CEADD8E992BFCA768BE65E53578AEDA3F +:10D44000F3EECCB998C7EDE2F79976975CE647FB27 +:10D45000B2CB4F86DD15CCEED2BC3CE6C9D19733BA +:10D46000E4E5F7A38C674DEECFAE9B4238FE311F4B +:10D47000F353FFD37101D597EB77EFEDE98075F8A2 +:10D48000248827A79D1D4F66B76DD2C53339BE9B33 +:10D490003B567893F18C319EFCAAE3C8CC298C1FB3 +:10D4A0002FE5E7309612EEEF06F4FEEE7B5EE63FE8 +:10D4B0009CE1F66F07EA7FD8F73D5CFFE7D4853B38 +:10D4C000CCF2D97ADD980FF587F5B0F19EC34ED432 +:10D4D000EF25497D3F591EF4BF2ADF19E47499599D +:10D4E0003746F14D172401CF79C7F1CF65F643A533 +:10D4F000D3787CE31653FAD95F179EBD153CBF79EC +:10D500001ADA4110DD83A800DFD902115243EB790A +:10D510009EF3F7AC7E37D6A37C36413DFA1955BC55 +:10D52000FF4F59FD2EB57F88F7AFE2FDCFFC89D6BE +:10D53000F7F27A15AF019ED71DF04AB4B4954608AC +:10D540009E9BF63C79875E8F0CDE61D0234C4F2684 +:10D55000C7B1B3730F753D9F4DB29E1393AC67C3B4 +:10D5600064EBF9E339D7539CC5F4C264E744BBF0DC +:10D570009C08967E8DAA3F97B2FCC5F83951E0EB26 +:10D580003927BA88CB718F7A4E5432495E7882FC43 +:10D59000CC447AEAEDB63B3BF05ECE838A3D8CF715 +:10D5A00009B26FE9BA651F557B2C7F62E4CFAF5B90 +:10D5B0006F55F1F5761F5CE647FBB62C8BF93B3DCA +:10D5C000CBAD6902AC3FC2E1EE43AC3E298F2CDF0C +:10D5D000B088F79F38CFB7A103EF5BD4C27A11FEB2 +:10D5E00056964CDB3FD8B67AC70A68B4B5B27726F0 +:10D5F000FA9DFFEE087564CD4F9E237F55F947B322 +:10D60000C75E87FC65A920340F7FAB29BC1DE749A5 +:10D610008BAD53FCD0CAE21DA2F195439B0725C9EF +:10D620003CE8F9CE7389147A380BCA682D298D38F5 +:10D6300093CFD5739B18DE47055A49781F15FC43D5 +:10D6400007C6B28040CCC1E5C027FB976AF6FF59F8 +:10D65000CEF7FD0B4902E3A21D5D24BE11E4A3DF5A +:10D6600022D5B6023DFBDD62300A38F6CF0418FD44 +:10D670009D726BF009E0A7A2EED29BC81C2C2BD99F +:10D68000B97AA7DE7E0F6471BD1AF09ED7BA864FB5 +:10D69000DAE8FC31981FCF6962EFCEA4F733FBFDC7 +:10D6A000921FEF67EE5848A81F5DA45C76489893D8 +:10D6B0001CB748F9D97161CEE4F88CDF0F3E4F7C7E +:10D6C000C6FD543CBBD2E897787BCCFF6BB07703A8 +:10D6D000ED7B68B9BF3DEEFF35F57B0769196B1F20 +:10D6E000A2A5DABE28AAB787D3BAF57049ECDC7ECA +:10D6F000AC5B496D4F55FF795CEFB5BFC0F1485049 +:10D70000BCE2ED8728BCBF7D84C2B1F6E3B454DB34 +:10D710001BF130CE6BC4DB88E7D97831BA6592183B +:10D72000D5C756CE776E3246F57B7E66F813E45B3E +:10D73000898C1EBA0FEAE2D17E7A3F307EE69B23C7 +:10D7400036D892ED01E03BECB33096C073C1CC5FAC +:10D7500038A2984FCEAC66F73686A39FDA513F6E5B +:10D760008F7AD23039366370834EBF94DAC7689CA3 +:10D7700058B267830EAFBDD52C5FE821EC395D3F11 +:10D78000E6AD7D8C0F1C67E53B6234DFE938EDA523 +:10D79000F94F755D13F1CB70D5C68D28F73BF8793D +:10D7A000D08EAA53F49C72475CA4B7B876E03D19BA +:10D7B000CC3B54117A9E45AA159A4FC7F678AF49CB +:10D7C000A5133903E3551276B4380DF74F22511BD8 +:10D7D000FA795F507C8CF3162D92D7D17B846592B9 +:10D7E0006399469E7704985E93401360BF1D8162E3 +:10D7F0007A1ED5D32935D8A9DF2692F46FC0BE94FE +:10D800009C0A0564BA2F81ECF9C9750FC6D9BECC44 +:10D8100018B41259BBFF7B00D6C6EB9C7E64A144B2 +:10D82000CFC332F1BEBB1BE9CCDAA974CE8C7B44EA +:10D830005CFF9D77C1636C6FC897E0BCA87F8A3896 +:10D84000BD05613EBFBF0E716C7A923EAF98948B5E +:10D85000B2B3908F991F35C0E3CEFDBCFC1E7FFE96 +:10D86000142F7FC89FC739FC342F4B0FB5B8E8FD84 +:10D87000250E0FF276EA7ADC8A48123A794D2309AE +:10D88000CDBA4B621E1D3C634FAEAEFD0583C5BADB +:10D89000FAD2136CBE89F8E7C217F4F31545F5F315 +:10D8A000CD1ED2CF072B62F9F92AFDBC33E3FA79FA +:10D8B000279A2FDAF487E3F45E739595DEC3CFA839 +:10D8C00062F1574615E8517A8758BF3F1AFAAF41BF +:10D8D000FA6F55F327EAFE935050CB9F5B3363FCFE +:10D8E0007E2BDB57620E05F19E6BA93DBE04CF4730 +:10D8F000B6F1F722D471C7E528203A50BE63502212 +:10D90000BFC6AA98DC764DFF9D82CF7BEED7E75944 +:10D91000BFDF4EA87CC4DBEDB454F3AE99E6A15A48 +:10D92000FA7EC6D3A408F35A99F6442DCE4B86004E +:10D93000067ECF7412561FE5B02431B893B51F444C +:10D94000B99B91C4AB341015D1EFBC80244414CEE4 +:10D950009F66DFF000F2B14C241D4C497631DEBFEA +:10D96000BEE101F4EB9F3A63AB9F5F81EB61F6D4BC +:10D970007C5F8C042A347A4DE96772510BDB964246 +:10D980000F01BD7767CF3F3B9FF254158BF3E81F24 +:10D99000E697ABC19F1592B054C5E0BFC966F617B4 +:10D9A000E43BAE95EFA70655F9D6EB4FA3DE34EA7C +:10D9B000CB9F82AF4D34E338145141BDEC20EB9343 +:10D9C000E31451BC9FC6F90E70BC9FE5A58348D4F3 +:10D9D0006FAB38344A63C7F923B1D82C64B75F847E +:10D9E0006AF19CE379DE2E92117A0EFB578C282285 +:10D9F000DAFFFC4CE5C708CF186CD1DBA33D2DFA4C +:10DA0000FC1061B051BF973D2D92A8A61DCA575476 +:10DA100027371E1DACEAFB6DED311A277FBF7D0F46 +:10DA20002DC1CED3387767D69BF49CA8139B2EC00C +:10DA3000739A21AAAFD348D08EE5ACAAD88B784F81 +:10DA4000CD9623537A953E1D11F1BEF9F45888AE58 +:10DA50001BFE04D4077765848FE0BAA43E6B14CF15 +:10DA6000E9252546F3DD5D9E7B87F15EB04721C148 +:10DA700019D0CF63567E83E7512440643CFF77245E +:10DA80007A042BE6851452EEC075E3DAB0BEDB4AA9 +:10DA9000EF3DFB5B8970A3260F2005480DBDFF6A93 +:10DAA0009673B5F7CD07789E731FF0E5322E57C5F4 +:10DAB000B3116F968FDCC1EB8999DD3FD894E11BE0 +:10DAC000A071D3566B0DFAE7921936A882CE5D8EFF +:10DAD0007223D91334BF4E820003DE927388C1656E +:10DAE000BC5E8A33B894D55B02217223CAF7D6CACA +:10DAF000B7717D80A73CA3E8EC7314C93CCAE6A9C2 +:10DB000062F22AD9C7D838D54C5E611E26DF5CDEAA +:10DB100025492FEFE01653F99662A408634595DE78 +:10DB20008F64854D39E88F345A4F9AE620FD659110 +:10DB30009DEBB1FDE9CA08DB68BD617FA6EF21D18D +:10DB400074F009670D3279DB87E74780F7CCFDEC8D +:10DB5000FC681F9E1F015C1A873E1A78C6A38C259D +:10DB60005518C621B2A65EDD977D25C15CDD39134F +:10DB7000A78F5B61F491120E01E923294408E3B9F0 +:10DB80009C392ED23CFE205BAFDB1E63F07E0E3B49 +:10DB9000A30C8E33FAB8A58848F3FC8F3278BA12FA +:10DBA0001631EEDE8779BC14E7C1AF678BDCDE800F +:10DBB0003C68E4E460567876CE7C942F900F9D7D8F +:10DBC0008CEBDA9572FE1CE813E97B2603DDC5AE0B +:10DBD00073BD17F203D0EB6406CA9D9D261F9E04F9 +:10DBE0007D4C664CDC7ED626C2FC20127F1BFDC815 +:10DBF0009E057231EABFCCC45BF43C345391E7A27A +:10DC00009CB4E4B03C58D793FF42ED89CBCCF21AD8 +:10DC1000CE209317979DC1E9651C76B2782AAD9402 +:10DC2000C312ABB7780DF25505F285F90888ABB58C +:10DC3000F2A5DE2398E521376ACF61553C56E6A868 +:10DC4000EFF3307E93FAC428E60DFE212BBC42CFC1 +:10DC50009744447AB5E49094EDADD9E1167D7B7696 +:10DC60008E37BB62B416ED7C7982C878EF710DD720 +:10DC7000471794255E44F9B8F005F67CA67744442E +:10DC8000FDA08E07727812F9FDF6ECF01A36EEE67A +:10DC90004FD8B88CFF671F60FC5F7E90F17FCF028A +:10DCA000C6FFC104E3FF9E058C9F2FFC29E37F156F +:10DCB0009EF302E37F15867128FFABF038DD16C4B2 +:10DCC0007C4E0D7F74953C78FCDCFC2F99287F1FDF +:10DCD00054F99F98287F2738BF3BC718BFFF94D7B8 +:10DCE0004BA30C7E81D5CF564628FFF7F03CF63E7D +:10DCF000B3FC2A95EB6E8F10D5E0B52A87C9C13EDB +:10DD0000C55C9F4A4E2EE4F5F3B2953EA45B779135 +:10DD100095E987572CF174BCB755FC9B04E66FBAA4 +:10DD20000512490796EE2EFE1D85EDC5E6483A44DC +:10DD30000AF669BF67F5B5765ABF25FF2356BFDAE5 +:10DD400049615B41D5DB086F29B106313DB1A5E0E2 +:10DD5000620ADBA6DB29DCB3EDC1B136286D85BFD5 +:10DD60008FE2BE6FE9254196C608EFC13CD0B43CB6 +:10DD7000E710EA3FF027F604C09E4D3307453C47C5 +:10DD80009A168D454D4CBFCA488FE26AB6AFAE3E7B +:10DD9000B2571450EEC99E328D7C7F3787F91577C4 +:10DDA00008F28B782F657C1C62A6F242A4B9D42EAF +:10DDB0006E6E07D747E3B73C99C3DE83B4FBA09FE1 +:10DDC00017DF4365FC67F39158590AFBEB0A8E385D +:10DDD000285EC43E8679F6B3FCC5603F7D4FB2270E +:10DDE0000856DF897A86C53BDB02E037025C035ABE +:10DDF00009E57C5BF0437A6F641BBF4758CAEFB5F7 +:10DE00008CFB31D5E0C764E27D41B7EEBC2D855F68 +:10DE1000F373D4778FF378A1CF107F10326A473E27 +:10DE20007510FB502F948FADFFD48EFAC82188F463 +:10DE30003E474170A406FD824846F8308EE35E708E +:10DE40006A641AEACB7B945A9B4CFD9C23C83746E4 +:10DE50003F272F0EF667CED9FE8EEADFE4C5871482 +:10DE6000CC7F18FD9FBC78770883B2D2F138364E4C +:10DE7000E99F178F299827C983E7DAF5AA654675C0 +:10DE8000228A69AF4C12777C5360EFBEE03C1ECC17 +:10DE9000C402C2790EE60F90C5EC3E62AC425CBA99 +:10DEA00008C0EDC15387EE83F21127D1C9C73F7374 +:10DEB0003D37C6F98648B29F9E6F662A9FE07A81F9 +:10DEC000AE9F223D547AAAFDFA8287EDDA7B1D7D52 +:10DED000F85E268CAB943E336CA5E76A52399EAB54 +:10DEE00011FEFE6D5A1ECBEBFE91CBE1AD26E58F08 +:10DEF00038EE7010E273A8EFE3F1795FC58B945FA1 +:10DF0000FA022CBE98C8AE38389F8CEBA5DBD29AAB +:10DF100031EF0C669CAECF919608A35E77FAD8BA23 +:10DF20003C3E81970CEE6E7AA71EE775568804ED8D +:10DF300091B382BF7F62B8BFFF09EAF52C0D3F564F +:10DF4000801E9E43F57A8E0FCF952366AAD7D5FB08 +:10DF50001924CFAB9303633959BEC2294409F58F05 +:10DF60006E62E7FE66BEBFAE6AF6FECAD400D98B0B +:10DF7000F9CB397C1D2773C233118F8C8A9882E7C5 +:10DF80008F2E85BDC79E599FA8A1EEAC747EF8B8B0 +:10DF9000CDA3340F047CA460A9F28DDF9EB0D3F72B +:10DFA0004AAB457AEFC05DFE21E523BF93D95B758F +:10DFB0009C2A1FE3A3051C2FE2053E9A4DF9E86257 +:10DFC000DF7CCA4797F852F2D180C3C047B7E0BEA2 +:10DFD00019F948217A3EBACC37CE4797F9347CB448 +:10DFE0004361EF51EC087A689CBA4361FAE6CBF2E0 +:10DFF000114804C13C6C5FB0BF06F1D85E9D4BDF99 +:10E000006FB9DEA7BFC700FE40B34F03C33E517FC9 +:10E0100040A5BB315F65A47B77D3F71B281FB67182 +:10E020003E6C4BCD8717FBB87F719EFBE9AC8A290C +:10E03000A82754FDD0921DFEB68FF131BD8FE6E2C8 +:10E0400071FE23C1A106CA6F22A17ADC6262F7FECB +:10E05000C9DD6CBF95802098CF21CF77F3FD867DF9 +:10E06000B81BC71FAE60F9B67E2ECFFD15FD0DD3D0 +:10E07000314FAD884108CAE1F9B3AF4CC77C5B357D +:10E08000CBBF3930DF5884FAB85FF73EB2D3B02F38 +:10E0900068BADAC07439C12FB44119AB7D95BE4757 +:10E0A000F6489BE84E75BFCC59D7BF0CF5A8F3C412 +:10E0B000F32B50FF429CBD0DF1EB0F2698DD52F380 +:10E0C0006C0DA724705F278D5F55B926D52304F505 +:10E0D000A3519F67ACE7FB56913A7FE6E4FBEFAFB5 +:10E0E0002702DA5555AEA756C76B709F54BCFD0288 +:10E0F00009B1F704E31D28CF8E2A89BE3701FE1D22 +:10E10000E543C77C89BE37FA43CE8753D712FA3E20 +:10E11000419B2FFCA44FA357C6EF419E27BF1C9BDA +:10E12000C7F0B6E05D5A1B95D767703CA3BC1A4B8D +:10E1300055EFF705591EF5FBD532D54F6AFDEB9C1F +:10E140003F5AB2959FA09C001FFE1D8EBB23EBD1B2 +:10E1500025685F89798CD27387C0F82EFA03C67759 +:10E160001613893C8BF624706E3DF0F3A41EF8392B +:10E170008EEFE2FAF9404EF87FE33CAEFD223DEF30 +:10E18000735527D8FD4D28511E9DFB53CB59268929 +:10E1900051FDE7BEC9DC335DA67C7314C7916EF9EF +:10E1A000AC1EE16D271E1AC1BCC8F0D34CDFC4EA17 +:10E1B00098BE893D2D2690AF9E0CF23C329148B41A +:10E1C00012F99BFD3D59D79FF85E05BBDF86EF3303 +:10E1D0004EC66FDF3FF350E23EA4E7D31619BF33BC +:10E1E00062E43747EBC1C42C8CCB5F7344D37DC949 +:10E1F0007D56F58C7903D73B4FB3F7D21CDA759275 +:10E20000E4BE9F2F7FA8FEDDC18CD0BF209D157C72 +:10E210003F08E3B73A337D3F03F8E55FF1B931FFDB +:10E22000681C6FAB35140C69CEC55439F8D4171679 +:10E23000FC00FBE5A161E46F67F951EA5F58F87BE8 +:10E240000B67F915A888347C60F78FEB213B8E9320 +:10E25000B1364D8D939C146E8DD23809EC24F93271 +:10E2600072E1A80F8B9817EA9B7B2BCD5B3C2E802D +:10E270007D95B478877CFEF9982F186BC03C4606D4 +:10E2800061F6775C8F6E12D9FBECC0E74B35F1A7D6 +:10E29000E21F978B02C4CFD85E090C53BF74A2F55E +:10E2A0004E4FAE77BA9FEA75F26A3BEA8BF5ECBB4C +:10E2B000135052BF39859F5C86EDF7F17DDA3BEE56 +:10E2C0001FC30454DF109A0798D629BD817AF1AF95 +:10E2D000793DF8C5F3B15FA03B2695023ED3FA42E3 +:10E2E000D4CE815F5CE94FE1171BF9D9BC81C99D90 +:10E2F000918F9DEB53BF37391C3DF516FAE78FD54B +:10E30000137A5FABEB3B6F3A4A11BFA888E906E28C +:10E3100049F450F9F3AC17E378861A5F5F4CEDFCD3 +:10E3200044FBBA0DF316363C9FB0D37C85C33C1A30 +:10E33000A5716615CB7F39EC63511AA756B3FC97CC +:10E34000C349E83D666074562F490CAE63F57D986D +:10E35000F7B069EC4DFD08DD1FA7E249E0BD5F574E +:10E3600095C893CE6CFD191BC493165C27F7F3DD9B +:10E370004A1ABE0494AC0F7A747067E08EFA5A9C05 +:10E38000B7228AEA8898B8FC15E686D720BF758937 +:10E3900044A0CF726334FFE66A23F4BB087DFCFD22 +:10E3A00089C5A66A177EAF8A806E3067C3F83C07BE +:10E3B0007DB79FDF93944768FEC55A4D8280114C0C +:10E3C0001D8EE2FBFCF6369A2A207B805E75169C39 +:10E3D0002F7427CE6797999DE99BE0FD8C0D9C1FBC +:10E3E0008993C93D31874A539DABA872B53E2374CA +:10E3F0003F8E8B78629CB885909471FBC1AC9A8DEE +:10E400008CBF15FA5D95CD4584F277E799ABED6841 +:10E410007736DF68A5797DF7232F35E245DD4701A3 +:10E42000EF46C0FB115E763A13D7A0BECDCC25D106 +:10E43000BA3CFC1E50A41EE1871EFEB8D10B786EBC +:10E44000419AE71272D86FDB8AF7353A394C771E5A +:10E45000FEFD282A707ADFC376C5F9F447BF11F9AB +:10E46000FC3973F8AF717DAE889DE6275DD5410B11 +:10E47000EA9DC3FCBE8B3F423A25CD3DEDCC5C46C8 +:10E480003FBF99E5B5FC765EF2FB3DCFF37D7BD1D6 +:10E49000CFE298D738BDA7AE95FC2CAECD24B89F5F +:10E4A0003BF8FEE44508CB13D4497BF13D095735D1 +:10E4B000F8135E7AFE40FD8721DEBFCD17FA919FEB +:10E4C000FA1123347EC9C4B553BC2501F59EAB5A5D +:10E4D000AAC1EF6E4CE57105C41B3FC6F69981B128 +:10E4E000287E23CB5D9710B4FD62EB806AB0AE1836 +:10E4F0005F675E6488EA6D573D9B17ED30E695FFD8 +:10E500009ECFEFF62B7F87FBABF6FFA32F348CB0AB +:10E510002B9248E0FD50F5F9E3382E38AD8F8FAFE0 +:10E520008FADC7552151BF7CEA5A59C0715FF53391 +:10E530007FE0AF7DCA2BDA71F37CE15FB27147A255 +:10E5400038AE672D8C4F92F56AA9B8426FD0F54569 +:10E5500046149B667ECDBEBE79AE7D35F2AFBAAFB6 +:10E560007985CC8EE54D5344FC4ECDC3DF99BB0F6E +:10E57000DF277BF45E4FC3CD5EF412174EC1FDFA68 +:10E58000839FDD437DD44D1AF03C6AFB2B26FADED7 +:10E59000E2C3F7C5A83ECCAD978AF1BC2A37E1A00B +:10E5A000FA06E0BDF40E093F9FCEC57F9BA8DF466B +:10E5B000F59C27F1F05B2ED493ADD3656C97DB16F9 +:10E5C000176E9C8DE3317C3D41B906F9C6531F9E01 +:10E5D00087FB93962BEBE21B4F9B4CE9ECAC084F6F +:10E5E00043BFF55177E2B7981FDABED82A0F001E55 +:10E5F0002F2DFEC881FCF748875541FC1E59D728AE +:10E6000026A0DC5123523FE871C543F1FEB415202A +:10E610003CFF48F829EC6F938AB578FB39DEC0A13E +:10E620006FB9E83AB3E9F9A7BA8EDCC4C335E80F8D +:10E63000E7B6CACF38008FFEFB181FE406E314FFCD +:10E64000DC3686BF8A776E6BBC468B7726AE4BE393 +:10E650001F6704F5FA79B325ECC33C99519F4CA48C +:10E6600097E665D764E56AF4DD647EC479B7234A2A +:10E67000A6904D8FB0E89F8D148905D0F5739F89C2 +:10E6800060BCB6D8E4A4FB9EB1817DE7A2A83AF0B5 +:10E6900022F51BC24E05E3B70C22BD88EF5B17D6EF +:10E6A0008041A3971564DA7F2AEF5FD46DD59D4B27 +:10E6B0004B6D7A782AE9A37E5221B126CFAB611F38 +:10E6C000A69EF8ED09CC574D259AF6E8E79A5A5CD4 +:10E6D000F47D0143FE4F2DEF397163FCA0C6AE2DD2 +:10E6E000CCE5F7CD2F2217D1FB5BBCFF4474F9D7E3 +:10E6F000F670FC60097E5F5059948B7258CAE8D856 +:10E70000577EB39CEA9C42F39D41A11BE8948F7114 +:10E710002ED8E316CED7847FB7672AA76F2EECB129 +:10E7200019E2C9617725B54313E161BAE76FCBEB15 +:10E7300034F1A8C9C9F45EF23EF307F43EC4C4FB49 +:10E74000ABBFCF6CF1B23C7D4605D3D39D192C4FA6 +:10E75000EF0CB23C7D6706CBBBA797B13CBD0AA7C7 +:10E760009532D75A85F19B46B2A65E9DAF3343D111 +:10E77000BF0FE5BE8CE6E94D3E22CFC07B2D895B05 +:10E78000E8399ED517A6E77826F34814E51A788B62 +:10E79000E6E14DF604F507C0D6D13CBCC939C4E06A +:10E7A000325E2FC5195CCAEA2DBE10BDFFD939C132 +:10E7B00039D595B922A73FDB9FC552A413F978310B +:10E7C0002C6F13EC4F4E4BA813E9502F1109BF9734 +:10E7D000A4FA49E4CCD5F4DEDE550D44C2FB2B2A65 +:10E7E000FCCD7BF15B40F85EA742CFE9331591DEAB +:10E7F000EB8B29CBCEC94F9B419F2466E07D6B3BC1 +:10E8000049D8CEAEB7F1EF30EC287C9C7EEFD3E157 +:10E810001CF3E1F9EBA3B9CCFE0E2F7C90DE037D57 +:10E82000A8F04F3E9ADF5EB8D98779A6EEA27F2185 +:10E83000DA7941169594DF219DCAEC77E0F4169AB7 +:10E840000F8FC9FA7BE1497EE960F6D40EAEA7F3DB +:10E85000EB5BD7F35FD1BAAEE6EB8AD9C7EC781F92 +:10E86000707BF55785EF3682EF2D3C54B82DC1BE35 +:10E870001331BD18F5DE6BB9824E9F0F176DA6F8E8 +:10E8800077973C48F1EE29D94CB4FAC18E78A7F2BB +:10E890005BA7B2F5C7A4FF1ABC3F9A14EF0749AAB9 +:10E8A000F91D13D0FD0995EEBE31FA7DA7AF1BFF10 +:10E8B0003F7DC5F8CFE2F4DF92CBEEB7C76495DFBA +:10E8C000EFA076EEF33089603C3591BCD87CFAFB42 +:10E8D000599EBA341D5C1C08B952DDCF53CBDF20E2 +:10E8E0003D6C93CBD73FF176BFE3742B0E8C5A2F40 +:10E8F00046FC781EB54D61E7B313F56FB344B3A57D +:10E90000738C7F4BDCA4C37B327CF6E6B2F3BA6F28 +:10E91000BFA0EFF71783E986FB684CDF6EAFD6D355 +:10E9200053A5F359FBFF15D173323E9C949ED52C11 +:10E930008FF755D173327CB670FF60327A1AF97254 +:10E94000A2F1FE7FE5CBE7CF938E467EFCBAE9F8D5 +:10E95000FF1A3FBEC6E395FFA6E39F47C78FCE933E +:10E960008EAA9E1CB49236B47F331E5B7FB801EC36 +:10E97000DE91FA79F330BF40CCCAECAB6763FE9509 +:10E98000C5E733F09C26C5BC6979CC9E1DAE5F748B +:10E990001BDACDCF43E9347777540CFEB202E8108E +:10E9A0005D66A2F95D63BFC39C6EBF9DEA56E3C07E +:10E9B0008CF9D07FD931D3DCDE14EDD592D46BD66F +:10E9C000458346CDBE429C7198C8F47E5DF4A8890B +:10E9D000DE07385C3F2F2355DCA4EEEFD1D0D57F86 +:10E9E000DEFE864C5FA9BE990C9FE353CFD70EF293 +:10E9F000FBCE4411705F06EF67F103444F16CC5312 +:10EA00002E3B61A3F7388EE1233FE679429E3CD846 +:10EA10008765F5E5BAFC8E7ADF72D5B619F4BBD3FB +:10EA2000A4E96ADA3E374FEF178DEF8FCA57FC3BE8 +:10EA30008A392D518BF67EDAAA3CF5FDC6483EE2B6 +:10EA400071C0AA5CF00318FFF095B620E67D6C5704 +:10EA5000373E8031E2D16BDC824DC307F3399F55DD +:10EA6000B630BFF6C0F1B045D4ECEB328E0FF4BF38 +:10EA70003E555C5BCEEB578405857DE742C9D7BE2A +:10EA8000A7D0C2C757EB8DFD6BF33269FD512175DD +:10EA90003E78211FBFB9F9DCFD49D3147E4F3D58A4 +:10EAA000904AFFA8F47B7D6AF8B23C68FF2B21F204 +:10EAB0002E7E3734FA988D7F073B321DEFF5A9740F +:10EAC00020E6108D2BAFBA5CF6B0EF062B26DC2FBC +:10EAD000AB49FE1461152F755E0FD4635EFF22856E +:10EAE000443AA07E9518BC41FBBEA266FE15C80F35 +:10EAF00013CD3FBE0EB342BF6777D3ED2A7FE9D770 +:10EB0000359E9FE0ED8FFCDBA2CBB1FD81C3A2B4AB +:10EB1000B168E2F6AA5E9ABE47CF3F77E7B1B8DAAE +:10EB2000CBCFC9009FFC66CD3EAECB63EF8F7F5944 +:10EB3000BE2AC923B49CBE2B629161DC953C2F8D0B +:10EB4000E36BF9A480B7BF15DB67211ED1B45998D8 +:10EB500047F815D3738303F7E6A7D23787517F4071 +:10EB60001C529857AACB375EDD58DEE5ADA07CE39A +:10EB7000C7F4D081C317E7A3FCADE0F74107AD911F +:10EB80007CFCFD810356F9363C473CDF75A8F49EBA +:10EB9000488FA8743E703C64C173A4B226C6B7CB3C +:10EBA0009B86C5DBA0DCCBE5F72436D58CF33A9FFA +:10EBB00067D01ADEE40812B22FEF8A6DDD762AEFF5 +:10EBC000348F78F0D1A5DBE8B940E714AA2796374F +:10EBD0002DA5798EE9F52CCF71C0CAEEF51C5B9896 +:10EBE000C1DEAFB22B35C85F6BBE70D1EF56AB7ACA +:10EBF000EB63AB3C9DE54799BE7ACE1CFE1B9407A8 +:10EC0000556F9DA5A73AAFE6FC284F5F9652AE36EA +:10EC100072BC195F0DC697B9566BF86A14ED9C6605 +:10EC20005FDE6C6771E31143DCD8749CC57507AC7B +:10EC30002C7FF37683E4DEC8E4AEE32E94C32F0A80 +:10EC4000055CC728D7739FC7EFF831BD67CFE9F1DF +:10EC5000F1C0ACE908ABE3AD6CD6EB7175FDCB1B35 +:10EC6000D3F5CF79FF5293F217F4BEDBE536FADD28 +:10EC7000056FFD4A2AFF5F5C4E24AC1FB4863666E2 +:10EC8000E07969D327EBD9FDFE381D6F8D2D723BDE +:10EC9000A327A3FFAA01273D57CDDA34FA97C85717 +:10ECA0009F39432EEDEFC2BCC3F739C9BFCC0E620A +:10ECB0003BB467CBCCB225955DBBBADE94126FAB8B +:10ECC0004DFE48AB678C7C588CDFE242FFE1511B64 +:10ECD0003D8FBD86442DD87E255116127A7162CCA7 +:10ECE000827AE204DF17B5FF0992C8B808F553BD70 +:10ECF00089EAA71391AB5DF8BDC116CB50C65C285D +:10ED00003FE7EB7867BD89C6D1AADD2F0E8CBC5CCE +:10ED1000C9ECF8E768C75BE226EAA7B5AC359DD435 +:10ED2000DAF3EB23FAF5803C1E6EC0F9EE37F1EF13 +:10ED3000D2046F437ABE4FA408EABFC3F5EC7B91BF +:10ED400083A1A9343F774494B756A03F72B3DA9EAB +:10ED50009D4F86D93FC98A96E0D60A789E9E5F4429 +:10ED6000E9B07A97B219F3FD1BD3E7D07EA3BF3287 +:10ED7000CDD5E6F98D6578834967F7A7EFD2FBB962 +:10ED800095688FA89D48E4DFA0918BEB0AD3993D4D +:10ED90006C1252E689AE2D74D2FA237F32B5A5F2F9 +:10EDA000FB2285CCAE2CEF4BDD3F5298C1EA63A924 +:10EDB000ED61A2209D7F5F66281FF7757973EA7168 +:10EDC0003ECECFA4ED4EDCF6F1F5782FFCA8C8E4DA +:10EDD00057AD7F2B9FEDEF4FF299BC1D1958F233C1 +:10EDE0001FEECFED8284BF07B1664A640EF2CF7585 +:10EDF0006B4FD2FCD8817C86F786DC50793ED2FB03 +:10EE000078AD157F97E1400B090A72523F18F1580F +:10EE1000C0C74FDA1DD5EEC51CB8EFF0CF0FF19E7D +:10EE2000163489BA3CB8EFD15BE9F7FA07D224FA75 +:10EE30003D7902FE30340AFF4AEFDF2ECED7CB9960 +:10EE4000713F5BFBF47EDDFBE8DF5624FDDB23D660 +:10EE5000B15F22FF1F01FEEA40FE3A336FB6F67D36 +:10EE60006A95DF8F34CEA37CFA7963BAA8BDAF640C +:10EE70002C27F5771B4D5F693C73A491F9BBEF6FAD +:10EE80009897B12A45BFDBB95C4CE6EFBEBFE1DC29 +:10EE90007EF3FB5C6F7CC0D7A5F211FADBAB34FBD1 +:10EEA0007D77BEDEAF6D6ED5CFBBA2453FAF2A1FCB +:10EEB00047439BD2D04F017B359DBEB7CAED27C1DA +:10EEC0008F779DD30EB3BCB78A0FE80F33DBA72231 +:10EED000FABD678C5F902EDD06BC8CEB3922021FD9 +:10EEE000A09E79DC4CF54C49DF8DA25F3E9BEF760E +:10EEF00019F8ED7CF94E8D97557D6EEC9FE4B33F8C +:10EF0000339EFA9AF86B62FAC7CF2B9E52E5FE3A0F +:10EF1000F390654119D327B7403927DF4EF7654E87 +:10EF2000BE4CCBEBD4EF93904825DE7F3A3290462F +:10EF30007F3722FA7846BC04F6F3E8B2BF9AA3F50D +:10EF40000FDFE0FBBA3CF6CCCB78ADEDA8188F65AF +:10EF5000E13EDE6522E84FBE7BFCD92E84D3DE1075 +:10EF600025D44F2B9A6B689C5C7914EC02C0AFE5FA +:10EF7000B3F87979D38D16ED3A8D7CBBDCC0B71729 +:10EF8000E7ABDFF752E3072261BCA0AEB33556FE14 +:10EF9000333C775BBE76C7029CA7B56FD832139E11 +:10EFA00027F87A8771BD40B716EEA7123BAC17F46D +:10EFB000CE3BA8EB70BDDF11D8EF6898472D5A7D86 +:10EFC0007443E4E3C5A9F438296074F807AE6737E1 +:10EFD000E4863FCAA7716248C0F1D6FC15C36F79B9 +:10EFE000D33A7ACFF33BF8B161A8BF97E3A1AEC3A0 +:10EFF0007A393B375B9536B61EF5FE383D6F67F4C0 +:10F000007CE7F8B2AEAC8A89E9797A02F9988C9EED +:10F010004707AEA5F3479710A944E7E7E6D3F76D96 +:10F02000BFA3E299F47705E477951FDE59F7F1F570 +:10F03000615D3C27B971BDC572C8857CE42C6471E3 +:10F04000CF3F66E8E3CFB7B91E50E5F3C42D420CBD +:10F05000FD6328E35332CF6E37911C5CCBF33B83C7 +:10F0600077D8DA0652C84B88EF0FCCB318E9F97994 +:10F070004C08AABF8BA2F567561F277F372A6BFC67 +:10F08000B389FCB526162F25FDB578C65C98F70226 +:10F090003ECFDBE8AF95E9FCB52EFCEECD59FE5A2C +:10F0A0001BF86B1A7D61F4D78E91D015F8DE73B41E +:10F0B00091CD77D41ABB02C73972FFB4B951AC6F86 +:10F0C000DA49F5EBA202B6EF47B8DE3ED6A4B70B9D +:10F0D0001717E8F5EF59FAF2B8FE3DF989EC8B3ACB +:10F0E000CFF9DA17F0E7F351DF1DDBDB723DFEFEEF +:10F0F00042746F5AB0443E7B7F0A0A4DDCFF49A33D +:10F100007CA7EA1B95EF0E5883FF7800FA1F7B6CF3 +:10F110006A7023D58B8B6A70BCC1338502DEEF1C0D +:10F120005C96DE867EDA20EFBFE6F11903E8270C55 +:10F13000C645668FD61651B882FB7D5EC3F7B5D53E +:10F140007D52EDD1B70A989E68ED3B699161FD371C +:10F15000A8F134FE7971FC1C1A7FBC23727DF1BDCD +:10F160000CFABE30C6655A7ADD62A0BB51BF1BEDFA +:10F17000D45BF1E2F1FC5F495172BED5B1A2815E70 +:10F180000DDCB25E85193FBCB77D1AB58FEA3A0631 +:10F19000E3B5B39F437EBB27FD9CFEF7A4F62CFE90 +:10F1A000D5E67F913EE7B267DF2B283A2F7BF60149 +:10F1B000DEF3C1FD3833EFB52A5CFFBD53E8FA3FFB +:10F1C000E863FCFA10E7D3F7ACA3B3B5F87DC0E56C +:10F1D000F9045FEF0771F5FDFF60A6F6BEEFB6021A +:10F1E000A6C7DFE372F0DE3D7A39D86F9083D63E52 +:10F1F0003DBED747F4F83E53C0ECD57BF76C4A438D +:10F200003D7954E59B9B991F7C34B488EAF1C1A3F6 +:10F21000FA78E999822FE7CF5D2B28D4DE90FB089E +:10F2200079C28DF2276F447F7BF04DD3DE0E8DDFE8 +:10F230007C47A1FEBD98713D5CCAF430FA095ABA08 +:10F240006515C8BAF6D7B519FC145116F1FE73F45A +:10F250004D1395832357FED50D4C4E6C349F3E685D +:10F2600065EB1DDC9841BFCB7ED6BC4136EFB5E6E1 +:10F27000B86EDE5F717E9870DE49FCA3FF8E47F4A6 +:10F28000ED49E17F6D3CE228FC72F6620AD7F7C6D1 +:10F29000B8E408FA27DEA47F72952DF24F07D03F1D +:10F2A00073462A31BF56C6F5FAEABEA5D48F3C2272 +:10F2B00086BA32B0FD6151C278A2F2388B23567300 +:10F2C0003F49C5E73B067F49B53793D94790136A55 +:10F2D000CF3E8F3BE9FB14C796AFB4A4A2D78AD325 +:10F2E000534942F37D5B354F807276B546DF341467 +:10F2F000B073AA06839C2D3F5D40FBABF66A755F39 +:10F300000DCD0F2C8FECF06BD7E12EB4D37E9E4247 +:10F3100059EFD79A995F3B519E4C29D4EB97637C68 +:10F320005FD53CD9727328659E6C4593C9A07798C8 +:10F33000FF85EBD2CACB95063DA38EAFEA99F31DAC +:10F34000FFDE7C76DF44CDC3159785CEF91DA0F195 +:10F3500079783BE33C8D48A7AC89E72BE4FEF94480 +:10F36000F9A328A75B25CF1F1DB9F212CA5F4797E3 +:10F37000BD548DFBF2FE863F1C5B09F05BAD2F5741 +:10F38000A33E8FF27CD2FB78850FF54D98FDFEEF02 +:10F39000CABE1B2D7E2A6F7FA0F1EF91A3D3287FD9 +:10F3A000DECFE5E68835A8B35F46B94BE778CA9C5F +:10F3B0003E840CD173A9C9E8F3B6813E5F56DFA73E +:10F3C000ABF3817EC47D74A9F1184458E78AB3C7B2 +:10F3D000F5909ABFB7926F215F1E302BE9C897EA6C +:10F3E00077F73EE2BF037D33FF1DE85528EB0BE0C6 +:10F3F0007946EA7BDB6F16337A29243A1D7FDF6C6E +:10F4000035C90CE27785BBDCD19B516F8CED75481B +:10F41000F87B1B45DB3A28BC3A6E931CA00A2B8E66 +:10F42000F45562FB348104F15E72E548EDF7F17C3E +:10F43000A2359E2EE3EF795D5EC4CE2BDBBE117D3F +:10F440000FEBDB066C32C6439EBE722BFA85CF0EE5 +:10F45000AECAC4EF131DDCB33A13CFED9EC2A5694B +:10F46000BE37F911FE8B7E6FD215AB83F6B3B20EA9 +:10F47000884E205561DC15B3C3385D1D219F04FA09 +:10F48000EC8DEF7EBC1D7FEF213B5B19B9147FBF74 +:10F4900032FEDBAB102E9FC6C78BFEEE2AA51AE804 +:10F4A000F4883AFED876847F22868B04683F2F6EDC +:10F4B0000DE1EF3A9B85BA7211C69B2F2F8F61FF2A +:10F4C000B67D3D95F7C27C2BE40B42E6227AEEC670 +:10F4D000FB07438BCCB0CE6A8E1FA99010F6A6878F +:10F4E0006411E2B697BE7BF22A33F43FE051D611A5 +:10F4F0008023F193DBF1F759ABC26AFB4B428B02DD +:10F50000C9F186BF7B723BFE3EB1FF9E45E4832975 +:10F51000F87B9A511AE7FEA636B2087FDF75BFBCAA +:10F520003056E620E4A2BE9A74FCCED3D37253C800 +:10F53000564ECFB9CA65287F28AFA4F856B644679F +:10F54000E1FB1AD6E8B5B17A787E7BD9483786D404 +:10F55000B79A98BC665822517C7F2FDD1E8F4E458E +:10F56000FBAC9E13E7C9D3D9EF9870B894E5B1C648 +:10F57000611F83DF78E5D656EA1FD989245E02B081 +:10F580003B5C467F8FDA9F1EA4F1BE3D7CC32F00FB +:10F590007E4390D6E1770780DF683CF1D1E29C01A1 +:10F5A0003CEFF901D71B2F3EBCA6E024ACEF8D87C2 +:10F5B00073F2F13D86031B191F1BF9726D11F323C2 +:10F5C0000FA4A5AEB7C8FA7361D771A23C0DE5CB05 +:10F5D00018FF7BF135DF91FB3AF05CC82E4FBF1E60 +:10F5E000F0FF67CC6BCF4FCA8FDA2FD0E18A229E13 +:10F5F0008DDD33695CA08E6FE2E34F0BF23C3A493C +:10F6000098AF46556412293E5926E15B4BE1797665 +:10F610001A093F0365D61442E14610A567A07EF1A2 +:10F62000B4D07E7AEF37C75FBEA908E779DD8C7E5C +:10F63000B2DA5FCD3FFD07DC437787008000000032 +:10F640001F8B080000000000000BDD7D0B7854D5F7 +:10F65000B5F03E73CE3C924C262761F204C299BCB1 +:10F6600008E4C124840015E124018C157B071009EE +:10F670000A388418038430E28B56BD9910C0C8D56F +:10F68000365A8BB4453B202A6D5103A51515E980E8 +:10F69000807AAFBD8D14955ADA3B2A02E22391ABF2 +:10F6A00095FEA5F55F6BED7332E74C12826DEFFDB1 +:10F6B000FAFFE96737FBECC7597BBDD7DAFBEC39BA +:10F6C0001CDF7B2B73336661F2CD6D93194B15E70D +:10F6D00094DD5CCCE0AF93B10950142B05BE44C659 +:10F6E000F6A4B01B7C4E7CAEFE741AF4DFD33D361C +:10F6F00067A3C0D833A314EAF725FE4D63ACB2BBB1 +:10F70000DAC660FC751E192683EE0A1F9F5AC35481 +:10F7100056C158EFBD71A16D1E78EEF07BF1B93E78 +:10F720002E4D11A87FF3F9312C343EFABC590ADB77 +:10F7300064273E2FA6E7A9ED1C0EBD5D2F196B2394 +:10F74000389ACF27B3E078E3F3107FDE378F9BDA68 +:10F75000FBC3D369413CD87E63DD86EB8A9D770D80 +:10F760002CBC0BC6DF9AA8A6A70CF0FE3E78CF0BE8 +:10F7700083C02FD173CF28C6BA118FF09C1547E1F3 +:10F780001B33454DF795C0FCBBAAD299D3807F4966 +:10F79000C3BF8DAF1BF16B31BC7F3AE20DFA352C44 +:10F7A000646A88E68575C13AEAB38A691D7BFE4FB3 +:10F7B0004DD16C9A6F2DF5DB23B15A5C47A5A45E41 +:10F7C00085FD2ABB53E420F43B1CC3073A1DF7A474 +:10F7D00004AA084FDF17E46D42FFF55EA5BDBF72B6 +:10F7E000B3A086A07FFA42BFB8A4D8C00F0857B113 +:10F7F00071FEEEBB717EE6500A1695205CF773B879 +:10F8000018C085F8F02A0573128DF8E770FF0CF028 +:10F810008625D09FD32DD3C9E9A6E1A73F1F0C1F92 +:10F82000820FB2A9BDB2FBA00DF1DDACC1997E3C47 +:10F83000EC2AD2D6B102CA991E178D7B7694CCE100 +:10F84000ECAA197F19BC7F4FA1C460E5AC720AFC19 +:10F85000DFD770FEC7BAAB2518D7576741A610BED1 +:10F8600019CBA27AD8E188F69FEC79CCB72E0FF1AC +:10F87000A396215EF02FBFAC3F7E0F8CE272F11297 +:10F88000AE3F35BA8E283E5940C7A7514E75BCEBE6 +:10F89000F33CA4C957A746AFBCB6A420E2715647B3 +:10F8A0005C6823E031D7CBE907604A73515E450BB2 +:10F8B000CD932A0A37CC86E769F1CCBF0BCAD46155 +:10F8C0008CEAB3401E7641FB8C5CDF769C67467AFF +:10F8D0006659BB07E7FDB534BB848FE3FA22165E99 +:10F8E0005DCFCCD6F40C6F676E5F33B6A741878DC2 +:10F8F000C95097F97AEA5FAD29C045AECE1095930D +:10F90000C380CF05FF0644FCD2E34A233ED7D7D7B6 +:10F910000808701632360F1E7E09ED0DDDF141111B +:10F9200048B7B4334E713A387EBF84FFCE750AC4EF +:10F9300067ABE10D6BCAFBF3C7EA0C1BBDA7FEDE8C +:10F94000FC24BF113EC9B713D7F92F091A7C1ABE80 +:10F9500063E554AFA7A5298D16D1D0EE8476C04BB0 +:10F96000E208F51905EAEF09AC0EE5907500513291 +:10F97000A370BC3A4A30E9536423A4DB7746A8BF9E +:10F980005052FBF7EFAF0779FFCAEE3902C29B7EF8 +:10F99000173C02BE4AEF8212EA6C4B6228DF83FCFE +:10F9A0001DB6341BF8639EA784CB97C88202E0E59E +:10F9B000E43C002E29DA7E5200FAC0F8601C931F46 +:10F9C00087F51F4EF655C840AFC3A989DE7600B94A +:10F9D00076616F05D2E34D8DCF5213381F1E8E0B0B +:10F9E0006CC171125352884F35FDF4EBEC315C3F22 +:10F9F000D998894FD805313CCDD07E58983D82BFEB +:10FA0000677419BEA78F9FFAE66532CEFBEBBFDEA7 +:10FA100072721AE0DB9AC3E773C3FBE718E4606213 +:10FA20002DD78F2735FE3FA924F0793CBE3D08CF66 +:10FA3000E16426B7C3BA2645FC3BB17E65468257D2 +:10FA4000F444F513F23FD20BF8D38FFC9366E3F541 +:10FA50006FE4F0F5DEEDE1A594C3E74F73F17EB1FD +:10FA6000F459ACB5FF40E4FAECFE13AFFB582E633B +:10FA7000CB4585C62738607D39F8DE00437EDA58ED +:10FA800005EB19609E5EC5C2E955C3D7DBDFAEE862 +:10FA900076CBFB6A1EEA9742C9FB38BCE294E33797 +:10FAA000692741EF35C6FD2E0DF93C76DC296BE761 +:10FAB0004111FA07DF10438FC3FABF2BFB92860375 +:10FAC0009EE3DFC86541186F4B608181D695E5E103 +:10FAD000EBB289D00EF3AD6B054D6267CC753E81FC +:10FAE00085E13DA91E0EAF547892E82F4D02D70054 +:10FAF0008658992F281BE86F952D2C5C189557D7A1 +:10FB000079178D6F3E3F9E85865D4C9F5752FB98BF +:10FB10000C5F12E2EDF313F393D800788985FBDBD9 +:10FB20001A9C7ADD85F019E04962BD045FD2243366 +:10FB30005C83F921951EDD8F114DF6270AA7CDF4C0 +:10FB4000FCDBAD0E1634BEFF0C7F7FF4BDF12C68DC +:10FB500078EF79459DE841396153E4534550C4C17C +:10FB60007391EC0AB75F506E75723B8FFABA1E65DF +:10FB700066329767791C638794AA6938BECFEE69AD +:10FB8000E374BD92743CEADF0930F639CDFE3CA740 +:10FB9000D9DF3E3F10F4DD9C9228DCB76B72AFEBEF +:10FBA0001FDD5F8AE537BDFF294DFFED3A3427039E +:10FBB000F961B7431644D053EBE37C1968177E34E0 +:10FBC0008AF3CB8F34BB57EBA8518DE30F295C5ED2 +:10FBD0005ED1F52853B3111E9087A0D13F88A5CFE1 +:10FBE000D23EFAC499F8294A1F273DFF47F9999553 +:10FBF00053FC6209CADF7D02CB0790274EE77A48A3 +:10FC00001F7787C749E3EEF02470BDADE9ABA5319E +:10FC1000F6FB4EADDF9D5ABFA1FC00A31D12C4A888 +:10FC2000FE6BD1F8C173F6A84D017CFD42F36F1E47 +:10FC3000CA51D7225F6CFD4B4D2802F3F5B6496CD3 +:10FC40009B1BC7A9A14805AE0B08E465AC6AC1744B +:10FC5000A50DEAD6D7AC5E3BAC87ED1DD81E39D7D3 +:10FC6000086A03E0F13B9A5E6876F3F534BBC3B6ED +:10FC70003C8023AB99C333A2EB802019D639A289EB +:10FC8000F7DBECB1EAEB6C9B5181CF556923BC6F7C +:10FC90000B3E47FDE9E1FC98D525905DCB0A00427B +:10FCA000E0599697CFEBF48684A5C5D1F5765866D2 +:10FCB00017A31DE9484B207B9593EBDF86EB6D3E48 +:10FCC000110E23BA269EE896FC30AE2A577D8CE4AE +:10FCD0004B5B9722CA59A89F134E70B83A53CC7CFD +:10FCE000C1D8BF71BBC5B671789DBE328427CDA582 +:10FCF00058369691D8E6A03F9B96A2D98F34E6DF7E +:10FD00008DFCEAF091DF97160FFD920DF68FF92A20 +:10FD10002CF03C945A528EF66F46BCF7A003FDAB14 +:10FD2000724F793BB43EBFC5521B1A802FC31A5F76 +:10FD300003FC2F18E11FCA4FD0FB59E32FCEEF0968 +:10FD40001AFF542D705F877037AFFB45825D40FC12 +:10FD50006F1512C8DE7C9BFAE9F806385EF3107D59 +:10FD6000AA887FB282E02FA3DE8FCF0E31603929BF +:10FD700065523AE27B30389BD7886A83517FAEB3B5 +:10FD800011FEB7DA5893D1FEE8F1C1FB9A7DB92391 +:10FD9000D77702DFDBB2F7011BCEBF6CFB3B36FF30 +:10FDA000007ABF6FFC25E24968E2FE69B3CC647B50 +:10FDB00019E2A181FC8F150EA803FD9A770A64D77A +:10FDC000589D23940F3868EEDA75240BEAC39BD54F +:10FDD0000968DAD38007BA8BA37628AB19F8CA82F0 +:10FDE000F8D915B6207EEE625E7C9B8E3FA068F649 +:10FDF00021E47B888836C23C1F59FDE47F7D9499BD +:10FE0000E00D029FBFBCEB2DE54E78BE0EDAC50CAF +:10FE1000E4EF6D19C8271D636D5EF4C3AB72FD5F1F +:10FE20007A00EE1409FC1B789EEC4EF4B6C1DC8A15 +:10FE30009D95CB17C17BECBA75BDA13F9F781797F5 +:10FE400083B21C97C6AF7E0FAE5B11D95DC8EF9928 +:10FE50003989F4FC8895051D29B05C6D3D777B548C +:10FE6000570EF64721CCC4F58705F47362DF6BE0CB +:10FE70001F77CE57E0E389B55D3605E05AA1E98FDB +:10FE8000AA05DB85F70C74CFCD11A95FD6CEAD8264 +:10FE9000427CBCBD6D869BFA33D463593B79FCB37D +:10FEA00002DA6F34E98D250B717D1DF1DC3F04BD55 +:10FEB0003116E13A6CB9F9A544F41BCB9917E5F278 +:10FEC000EA13E123A47635780FDBFC5BC8CF01FE93 +:10FED00068837A650EB757476CFE06A4C7912C98C5 +:10FEE000AF0CE75F5B187046E53A560E2B732C1C7F +:10FEF000EEBAED82A598FBB53E037C7ABF8772AA65 +:10FF0000BF964378E8263CACAC93783E4083E7E06C +:10FF1000FCC50D08CF4A7766991DF8A3569BF7A13B +:10FF200067B78A9B019E95C54208E3AA959D02D9B1 +:10FF30006DD6F9BA6D9EC1BE6FFAF9EB642FAEDAD9 +:10FF400023D0BC2BF7EC9296A27F75F620F1E94AFC +:10FF5000E0C3B80AA49B42F4FFC81ACE463E8BE524 +:10FF6000D3845AAEF718C464F9C9DCAFC17A68818A +:10FF700083FC7D5DBFDEEDB1E8FA94F4615A5A4925 +:10FF800019C6A9D7E77039D7DF13D58F02D141B78A +:10FF90006B8B73645D9F923E56805D913FF5F9FBDC +:10FFA000DB85A272B40BEB35FF1CE8DC88F88CB55E +:10FFB0000FFAFC9E47E73025D14037C4B781DF6E8A +:10FFC000CBB111FCB7E5481A1CAA827802B7DDBB99 +:10FFD00011E3169BAF58C1324D93E7E4E34A9B010E +:10FFE0004F476CC14205EA4772E2C95E813CDC8E34 +:10FFF000F01C9CFFB4B819F510D00BF5EF433F9BF4 +:020000021000EC +:100000004DF86C469AA11EF237109D5906C46968D6 +:100010007FFC12D9C7E6BA6B29CEEFB36BBB05C222 +:100020007B73D0198A837F5ED5359BF892B9E3BC88 +:100030009AFE22FAEAF275B79ECF0379C738568F37 +:10004000C7E7382261ABD25F2EE7603C0E34BE06B4 +:10005000E371786FE524C745E370DDFEE9E3F53829 +:100060007CC59AFF20BF7179C6AB54EAFCAFC77953 +:100070007AFF4735BADDA3C5638F6BF2B6A2A28BB8 +:10008000F4ED8A9301920B672DD70FCE1366BDA6B0 +:10009000C779E0A8D1B819095D33310E9AF123412F +:1000A00046BE1A4CFFDC24301FAE63DA855FBB8C82 +:1000B000FEF0CF343E3DBD436461D2FB01F2B73F59 +:1000C000DA2204EDA543CF33323C7DF2FB408F0FA3 +:1000D00077247937C2F08F76CEFD26D683DB93BCAA +:1000E000E8478E0C5F4374FEC83DD98B7475B773B7 +:1000F000BC7CD45543FC70365DB1A03FDDD6F5DD48 +:10010000A9EFC27B5FD5E4FDECCFC435B8EEB54FA7 +:100110003E3315F3582B42C2303BCEBFE3477F45F9 +:100120007BD5B47D958CA2D1FED35FDA22D0CF12DD +:10013000DACA9FEF4892B1DF078F3D3015F1D9DE63 +:10014000D54EED671FDB4AF5834F3E437A44E7CB3C +:10015000B33FDBBAFFFF60DDE7F2621EACD9FFD030 +:10016000BF629D5DE3F23E4E6C74C836CF90B7DB44 +:10017000B4EB00C995CE07577571FE647536CA5742 +:10018000E8FCF8DEABF14C48823219FC7E786F83D4 +:1001900096A76AD0F24D0F68F18A92CBCB5E7DDDD7 +:1001A000AD4AD6492BC5C3690B2A880DBB1FAFC00A +:1001B000E765F49C5D189F8D7C7DF63E2BC93388E6 +:1001C00061F66C806FF9FD561FCFAB421DDA3FC45C +:1001D00076A4A783D757603BD69DBCBFBE9EF77E53 +:1001E0001F5737909F16858FF1BCADC5427483F7BA +:1001F000BB26033CEF5994DD68EFF5FEB65CCED725 +:1002000051F8795CA5C3ADF73B7B9FA8C35DCAE1FC +:100210001675B84B39DCA20E7729875BD4E12E35F1 +:10022000C1FD87B8A681E0D6F12921FE00BEF70006 +:100230007FA8C796EAEF69E0799DFB2BA66F473D43 +:10024000DED0C9E99750A86E17E19F722EF7DB97B1 +:100250008BBA1EE1F90DF1FE096FA25F786E739CF7 +:100260008276A931C57F8AF4D00FEC0AE61F5EFAC8 +:10027000FE4DD911033CEFB532D59A6F88231FA8E4 +:10028000CA66B09E53F757655B61BE2F0E4CCE46D3 +:10029000BD7CF27EFB0DEA45D6F18016CFEA719265 +:1002A0002D416964E0221CAD2ACE3F44FCE1F28A74 +:1002B00053A17E25A7630BA87384ABE5BAE4AD9880 +:1002C0002FB73864A602DCD7D4266FC53CD1D45CE6 +:1002D000CE679853CBC0F1B304F2033B6CC11DE46D +:1002E00007C85DD9E8072414876DC3A13E7FE1AE3E +:1002F000A998022A01FD7AAA90E2B7ED5F82BF3B7E +:10030000F7A19B16E17BB6884C1633B15F1B8DCFEE +:10031000063F42247B29C9A7743D2A5ECC2F9268F0 +:100320005EBD5F9FBFAFC957878DFB67E0D7B03811 +:10033000282B6FD5F2F4427D3BF935B785A750BC29 +:100340007166757C73B1513FF2F1597BB8BF94D59A +:10035000D43D13D7F3F5C225E3F1352BD7D4B0F74D +:10036000504FA33CA29F12749AECE27C0DFF69B23D +:100370006F3AAECBA1FA52EF417B64F74964A76FA5 +:10038000F059DBD06E49BDD9F3C8A17ADC641736C9 +:1003900059FD9913D0BFE9D0FC9CED1C6E184FF3AA +:1003A0002935AA1BC7C3FC349F63A12AE1FCE86F6F +:1003B00060BDE7C52B1EDFE831E229D46FFE0A27B6 +:1003C000FA29C13AE243C5E645FD7316BB66121E23 +:1003D0004B8DFB16B1F940B48F284F77E456ADCE64 +:1003E0009D102DF5FC612C9DF668EDBDB9EAEA5C27 +:1003F000A4CF8E6126BF6E307F57F7035A6A353F10 +:10040000E08577C8CEB5F825EEBFF94F92FFF661CB +:10041000ABCADE0379D9F4DC3BA45FE7ECE5746B8F +:10042000D9EBB1627CBC49E07AB4A5FA23F2E3824D +:100430002223BE6FB1756D7023BF6F64C91001B206 +:1004400096A99102D4AF9F3CC7E5E1B0C542799629 +:10045000C3DB8AB6A27F2234713FAE25A06CB353B2 +:100460009E96C78D10273D80F1FBCA2646F98296DD +:100470003DDCDF64C55C3E5AF6BE4EFCA3C749E0D6 +:10048000578D40BF27D96DF7A25F9235BD3B9BCBFF +:1004900023F3E6631C33DDFFC00CE2B7B24AE4B7D6 +:1004A00083F3F76F70E07BA7431C06E3378D549FFF +:1004B000C3F982CF090CF39D9BAC9DD5128CDB3424 +:1004C000439183B80EFF357D7E0EEA17E6BF86E2C4 +:1004D000A316F7222FEAAD8D6D3CCEDA087116C651 +:1004E000519B9E6B233FAC4589F7C641FDAABDC217 +:1004F0006A1A1F7432E48B16C027D6AF0A5D161233 +:100500000DFB63574D8F641F7247E1FEC4DABD18BF +:10051000F1F3C9CFED2C68C863274F0F6CB913C72F +:10052000CBE55ED18BF15AB71FFD6510756F1BD4FB +:100530003BAD3EBB17F359570A21DC7F4BD6FC97E6 +:10054000DC5A4EC71735FBF062AE452B6D9A9C6B9B +:10055000FB0E72B014EDDAC71A1FE09F9206FA9FE5 +:10056000FE01746908931C61FC8A7475DBD5B25B6B +:100570000C7CEAAEE17E85BE0F84FB42B41FB44022 +:10058000227A6701BD51FFE974FBBA7B7439E22915 +:10059000A2C97956A140F90216B411BED2166C97C1 +:1005A0001A8BF93ED240F98693DA3A5287F92AD06B +:1005B0002EA4A6F3FD8554B1CA128779A932C1BB16 +:1005C0004DA17D6ADA77EA4DCDF46E33E053CF9FCB +:1005D0009C494B247AB2D0AF25F4A77A73078E07D3 +:1005E000F471D17DAC38A2FBACCE6029C6A7FA3E2F +:1005F00096BEEE505B7C9D519F9DD5D6191AC3E5E2 +:1006000088C97C9F24CDE21D46791D275FC799B418 +:10061000CB2B091ED64EFD7FA3D9FFD45C1FE5EF7F +:100620007A5313691DA9B9AC1EC7A7B66708ED1E9A +:10063000239E65B2337768F8E9937FF4B73C28FFCF +:10064000DC7F6F01BEC6380EF580C6A7A1C785A89E +:100650003EE8D3739A3EB86A2FA77BCB5EEE5FE984 +:10066000791EA06001CADD194B7639DAF9165B8470 +:10067000E4B0C5A294B7B9A3F23D945E989110A2DC +:10068000BCC48CA282F2764F74DC275685F6953F67 +:1006900099C168FFF9E5E7DE0A19E3449D2EB171BF +:1006A00010EA5FF41B747D9C93EBCBCA43382CE1BA +:1006B0000D9227AA3F5B9EBFB7C03F603E8BEB4FBA +:1006C00087C4F59523941032EE2BE11E6D623995A7 +:1006D000412794096B383E128A597024AEBFE2E874 +:1006E0005328E74C52689D8925DD97A37F5E8C498E +:1006F000CDD4A87F13BFF7664CEB63DE8FEFBB6DE5 +:100700004BA0FD143DFF170BD7A83CC19467D3E362 +:1007100054DC47C2FE57E671BA4FC9E3FC3647EBDB +:100720006FE07B335F3B799C3698DDD1C7FFA3F246 +:1007300092FA7B74FB17C5779B693F0CD735BB7862 +:10074000F07E9D07B8BE413ACF36F0EB528DEFD325 +:10075000F3B8DC3CADE5FD73FC0B92E60C308F5E2C +:100760008FDDDF892D93FE2A12DCB82D89F3244D0D +:10077000ADF5D643BD49C34F6C7F89499F4574BFD2 +:10078000CA83EFFF80E8FBB99F05105FFDF9CDEC50 +:100790005FC4EE23E9FC88EBF0950C0E6747CC3A7A +:1007A0003A72F733CC6B26385CC42FD330B804FAD6 +:1007B000DCAB8CD88AF4C1F96693FFB436663FD9B6 +:1007C0000C4F9C32303C43E1B7C3B2AB09F9F35D47 +:1007D0000DAE9C2D1787FF69EC379AEF7761E9F42E +:1007E0002A6D12C03B6E9F528676BCC3A2546F42E4 +:1007F000BBFD26DF774C9CCA3E1501AFAE499D85F7 +:100800006B3D6897BBEA902FC649114B19DA0F9FD1 +:1008100019EEF4BA781636E41732FD29A6FAF0A6D6 +:100820002C53FF91811C53FBA835634DED9E60B99D +:10083000A99EDBF13553FFFCCE6A537DF4E6AF9BF6 +:10084000FA8F09CD31D58B765C67EA5FD2556F6A36 +:100850005FFAD7DC83DF473D81EB47FDE2502A8D0D +:10086000F2A19707F372883EE3F69AD78FFB84C60E +:10087000F907E3A758FA2FED104DF3E4F8AFE4FCC5 +:100880005CCC285F9470DF980DC857194B59C00E87 +:100890007A352186FF879A2FCADF63F6E2BED2E758 +:1008A0006E81F219FBB169003FF7680C9FCFA84D2C +:1008B000E2F6E8FC9C21FC62CEE773EC7CFF794E0B +:1008C000022FFBDAF3B93C9FD7F4E850FC7A468359 +:1008D000E35D9D5F431EE24F764C24BF75D976A140 +:1008E0002D03EA297E27F96DCBA4302B33BCEF21F1 +:1008F0008DDF3769E337B7CA34DF0F5A33A8DCD24C +:10090000AAD0F3475B0BA90CB57AE9F9B6D64954DE +:100910006E077F0DCB275A6BA9DCD1EAA37E3F6916 +:10092000ADA37267AB9FCB9D7F8CD5A87FD8F99480 +:1009300001F3E5736B07A3CB646B18E9A248818DC3 +:10094000DEC1F1D16FBCB8306920FBAA976B4E2C89 +:10095000091D32F063527EA2FB5402FC63229B48C5 +:10096000F1E810E3BF68F5870EE50FAD17757E61FE +:1009700017C6E7FB06909739F8CEAF31F65F797767 +:100980003D18740E8E9F281FC5F06B07E7D7529451 +:10099000498AFF225946784E6974D6EBF59B934CF1 +:1009A000F1AE5EFE5B3EE7BB463B3F3FD118738E28 +:1009B00062653EB7EBB3F2791EE1FF17FE3CFD48DE +:1009C00022F9CBA7AD81EC54C3FB4F3F9240CF59E6 +:1009D000A1CCD00EB014753AF22F6E01D8C0EFFA48 +:1009E0007EBEBEFF9B27531E23EEABE53B72B66473 +:1009F000523EEA7399A9E80F354A32D9C78C598C0F +:100A0000513EC02FF3FDBAE59ABF24015DD15E7A55 +:100A10002D513D4AE770E2A37C2F0ECE8FCF60525E +:100A2000D6A0076FDA1CAB57BF690B570C2D67B107 +:100A3000E3BEAA9CDD857256F48F97339DCFD9858E +:100A40005B0A06EAD7887296C5D8F8FC271E0C16F2 +:100A500047F9FC26F4AF0C7CFE634D0FFF589387DB +:100A6000D35AFEE1B455B120FF9E7E23775B9B21D4 +:100A70008EDEAAC9C5D0F85D66237AEB7A30464E81 +:100A8000871E1F47FCF1F9662184FE53A3C3154C52 +:100A900028FD2AE32F8EBF7E74DDEBBEA43C8F9B26 +:100AA00005AF47B81A9985F6811B1DCEA00870B115 +:100AB000CDD68F22063EFDF570F5F97C9417952969 +:100AC000721AC911C5F7F0E773A4D111405E0FDEA9 +:100AD0004CF67D22137A91EF85489AD802F36EB9CD +:100AE000C54571D7C44823E1610BE681701F7A3A8E +:100AF000B82269FA9156949B008F67AA1D111CEFCA +:100B0000C03C03C4B21B056F8788FCE6160E1D852A +:100B1000F1E24B8CF058EEF0B6BB2D38C427623FA3 +:100B200081F178B6F2246F9FC2BADBDD306E2AEB1A +:100B3000A5F6CB6A83ED08E7287641267B91FEC4B3 +:100B4000CA2F21A463CE944BC257B03AF0233C6F16 +:100B5000105C2BB176281F4EF8D727518FAF09DADA +:100B6000653BCABBC4DB3FB03A6494C3D1A2FFBDAE +:100B70007CCCD389BEB403E4CF04C6F928BF27BD1B +:100B80008B7E8E0582D32F01AE6A6745DD8DB86CF2 +:100B9000ED39E1DD13EDA7EB87D8FAF7D673FE6EDA +:100BA000BF97FBD3ED6DBCFE178DAFCF69A5ADC070 +:100BB000A2C5596C1DE22F2E83E387280AF8B76B74 +:100BC000F4B33802E120C6AD01A0978CDAA98BF00E +:100BD0007FEFBC4DFEF5D47D219D0B13C23EF66523 +:100BE00042142FB1F3A88577D33C369867A38CF1D4 +:100BF0006EA7EA003E8AAFEB0A5B2F3ECF21DC0FE7 +:100C0000922A387CCB45BFB3809EABEA8D98EF0724 +:100C100004E27C76F00B058F71DCDF4C9F749C7FC7 +:100C200028FA8889D38F639EA53A6457304F124BB8 +:100C3000A733A8F3F1BD7FB271FF7A08BA4DD6E8A9 +:100C400051BDE6CA10EE3B4EBBD0EAC2F7CE5853B8 +:100C500013C2F36CD3D7545159FD08DF47A9B62A04 +:100C6000EE14286BD65C45FDABD6CCA57675CD6C65 +:100C70002AA7ADB99E9E4F5DB320643CC736DD0DFB +:100C8000F318F442B513DE67D0E7330A14C29B2A87 +:100C9000CD363D9F7AA1CE34CE5AEDBB919FA3F5C0 +:100CA000CF443CD8589680791BD1554B78D9909930 +:100CB000E141BCCC2CE0FE851AF1F0FC4531F36E2D +:100CC000243DC1F763809E330A703F64B3F00EEA9F +:100CD000195B4688D1391D29321CD7BF5FD3D7B1E4 +:100CE000F2F72F058246E7115C6ED9C5EDF5AEAB84 +:100CF000937FE7C6132FC127E7BE067A675755F2E1 +:100D0000F56EE09B614F16CF9540CE77BDCE48E99A +:100D10007C5AF0F587D09EEC9A97FCC354E87FFB91 +:100D20008EF7BF6B055AEE5A2450FB17A3A11DE0A6 +:100D3000BB39CFBF08E11EFF9A3A12FD89EB98E458 +:100D4000C5F8716EB1B268A782794C6F04F773E78A +:100D50002DB52B942FBC00705432F618022AF2FAEB +:100D6000B44AD4B3DA9FD6BE1DFF0DFC95BBF9E69D +:100D7000FFBA1BF55EB7E8C5346AE366CF0137CC2E +:100D800097DB5026E3F0BCCDDA7EE5163BED573617 +:100D90006EE67A368F797B71DFA60BF3AF2058476A +:100DA000AD4ABB13E3DC1246E7714735F07343A746 +:100DB0001EB16FC5BCF929840DDB470A1407BFD1EA +:100DC000CAD475F96C50BD3E51AF831C4850BF3C2E +:100DD000A65DD7FB82FF0EF176839EBFDC9F6EAAD5 +:100DE0007B3B588D0DE0CD6960B2A020FF04B85F59 +:100DF000A63A22ED680780366A25DF46D1E627BB92 +:100E00003043AFFB03D26D889F14B0535E74D7425A +:100E1000190ECC71324F15AE47BC82C9184F66D738 +:100E2000860FE27981F16A15E9FB09CCFF5237940C +:100E300093D55D549FE408B5636ACE82F90C986F30 +:100E4000CA05AE6754264BD85ECDBC54224762FB20 +:100E5000F40C81E2D45AD649CFBFCEBAA89CC5BA09 +:100E6000A9FC06EBA5D2C7642B96531D60A740CF03 +:100E7000FDB8C043FC6A71F0EF49CA6BED5B31AF5E +:100E800037EF1AB05F50AF0B33CAE7CFAD55AC8A1E +:100E9000C17F9A23F1FD5758F448F2172565E4B550 +:100EA00006BB7FF491F98B70DF51B198CF7F3FA3E0 +:100EB000E993E73539D92468FA6819A73393FCDF39 +:100EC000BF11EAD7F946933C427B98DA1738A87DE0 +:100ED00093D5D79606F5631F9730DC1738ABE90535 +:100EE0007DFE63B36FCAC47CD0D6F505562CE7F8F7 +:100EF000F5EF39821A9CC191C6FCEFA92500A7968F +:100F00008733E6770E69F09D2D6004EF29580FC9ED +:100F1000BFB67F96F68D64CA2FCD6075129ED3FD45 +:100F20008DA64F42826F3AC1BB9231FC3E4097A7DB +:100F3000269D3FA4A02D0BE5D1EBA1F5E9F05F17AD +:100F4000E2F9E7EB9A661FC0FDA6594D2B19DAB5F9 +:100F5000E879397E6EA26AC174DA17ADDB6C6798E6 +:100F6000EF169AFC7F40795EB0D0AEA0DCD435CCD1 +:100F7000A6F723A1F15C519D7FC93AE4BB050E554C +:100F8000C67310572CBC87E8BC6E21F022F073E2C8 +:100F9000C2F97CFF118C3AEEB302FE697C5A35F837 +:100FA00032307ED4AC03023F871F6298E7DC3A867A +:100FB000D17E428AC468FF2719940EFAA90B1A1E23 +:100FC000389C5981F9259847C1A5FA6D88EFC1FC75 +:100FD000B447EEB9904CFE39FA35A3883E3C1FBDAC +:100FE0004654D04E78B4BCF25B8718C59D1D0BDB10 +:100FF00083E497CE8297C1BAE776961D463CC18BB3 +:10100000487F80E44650CF397C5728081F6E85E220 +:101010007E57A3C4F337658CE789AED5BE8B898D27 +:10102000671C6B6CF4DE464733F7EB60427B667FF0 +:10103000FD11BB0EC17707D3F6A923C3503F14CAD5 +:10104000E26DA82F56BBFAE41FF5AA5A5C42EBF1F9 +:10105000BEC2D733BE5B15F1F9045C37C9F15DDC64 +:101060005EC43D2118FD8C1A39B8D80DEF397AA825 +:10107000618313DE6F757B7F2F57A0FCB300F2876F +:10108000CEAF2F8DEC1C8976EFB799DCBF9A76E155 +:10109000994463DEB86C3497BB72B4E3B0CE32B41B +:1010A000CB607F27A01D87B202ED3894E5CBB81D39 +:1010B0001F8FF61BFA79D16EC3F338CD6E3B34BB6C +:1010C0005D669587A19DAF38A69AEC6FF96BB52642 +:1010D000FBACBFBF7234E773EF219FA9DD9167B608 +:1010E000DFD59AFDFE4D956F91E9FCDF682E8F13D9 +:1010F000476BF9FED782D9746E622A97C7D3BF6255 +:10110000A1B5D074E6579CEE412BD3FC1B33FD50A8 +:101110009F6BF48D7C17E82B6C497FE99B06FDCF14 +:10112000C606C90E0E46B7DAD139F4FE8ACDB345EC +:101130003CAC30FECAF1C3BFC590DF2ECEEF83D1E9 +:10114000F75779AA6FF404B48FF2F5CD18D7F8EDFC +:10115000F49E1962F306CC479D033ADBE5FEF39556 +:10116000237000D7826E160A0951BB0AFDBD185FB5 +:1011700057BC217A83B05E6F036B47B9CDECE0F6C4 +:101180002CD587DF9E44F19D5EE7C0B3997DF54C79 +:10119000BF6CAA0F6FCA30F51F19504CEDA3D614BF +:1011A0009ADA3D41AFA99EDB31C9D43FBF5335D553 +:1011B000476FAE35F51F13F299EA453BEA4CFD59EE +:1011C000503D5A6CB0F7255D7E537F148B6CA4574D +:1011D00086C8D0FF1EB7B7C93CFE04F8B70EF4F2BC +:1011E0000284C70AC6EBD40E7A0258FEA547D0FE89 +:1011F0004CB2CB61187F5D8335EA0F33F4AB98882E +:101200007499EB7792FC7963FCEBD83CC44DAF0446 +:101210008FA0DC96BFE2A773D8DF196DCEFFCD108B +:101220009D44AF73C7442FC624376164E28ED2F564 +:101230001C4E84F43CC042B45F1EB37E3D6FC1C4FB +:10124000FB6C94FF6C12D830E867CF30D3394E3145 +:10125000D339A1D04CE744AF99CE4993CC744E56C4 +:10126000CD749E18115E7A04F723014F6C12F8AB0F +:10127000B566BAEB789E04FF1B08CFB178F5B2FBD8 +:101280003E45B9190A9FCF8E8ECDEB4C21BDFFB9DB +:101290008FC73BF0778DA3D2A0AF4151223E85D7B7 +:1012A000B81D88957F1D7F65BE7476DBC5F480739D +:1012B000E5864C68F776733D30619607B7FBD8F149 +:1012C000251387235DB3D83EFD3B243F9E5F32C884 +:1012D000F76B28DF096BBC9120BE77B39DCE2DFE46 +:1012E000E6F0ED472C50AAC73D64D7128BBB2F47C1 +:1012F0007FE0D868A7763ECC770CC7C56FE1FBA727 +:10130000A72E0F2CC27EC7058B77AD1BF5055F5747 +:10131000E36B7DF1B1D94EC5FAC9C1251BC294EF6B +:10132000E07129F83B34FE723C578F7E4A8C7E294F +:10133000F3C7D8B598FC87B0D0EC47B37A33BEDAA0 +:1013400027F93D426E7FFD3978FE2342CFA7B16079 +:101350003BDAF7CB6ABDBFBB15F174F55BC3D18F28 +:10136000EB970789E2F7FCE854C46F177D3FC0662E +:101370000984DF58BCCE9DF54E1BC6D5F123BA2F8C +:1013800047FF8415EA785659218CDF1DC7FD873742 +:101390001EE17151C5EB0D045F9AA078D16FDA9D03 +:1013A000CCF9E60D814576437DC2311EBFE4367926 +:1013B000BCC886BB3DDE97B0FEC64AC1BB0DEA95F0 +:1013C000C75511CF8FE505A01DDE57BED657930830 +:1013D000E3E7DDCECF6DBCF071239D2F0B7D8BB786 +:1013E000EFAE0AD039FA37EEE6ED134F044517D4C5 +:1013F000C704B5F985CE1A17DAB5F502F777FAD131 +:1014000097C73DD374FA6CF9E2A56F5644E9537F50 +:10141000C67BC405CF1B7A7D3393587F7AE971C6AA +:101420005489C7117A7C319DF9A89CC902545E6A1F +:101430007C71556121DF87625EAAAB5ABC9150ABCB +:10144000563D8D740AB858BEC17FD1CBCE14DF4A49 +:10145000DCDF74D7F86E43FB7F5521F7ABA325F78C +:1014600003D252D4915E683F66D5BE7B73F804A266 +:10147000D772AFC8F39E0109E52D34B26C3CAE675C +:101480005AA18DE0C9BD2F40FEED37C0CDC37834E1 +:10149000FCB0948CE70811C703C5E7D1BC5ACC391E +:1014A000422948E764CB45A508BF58B9B1B0F0213F +:1014B0008CD7913730FF3B7F47F935C111C4A7E482 +:1014C000A70CD5EF98762E69B7857FD7738DCF633C +:1014D00041BDB2BBCCEC07DDA8AD5F2FAF6075C4DA +:1014E00057574C12BCEDC00757482C8CFB067FEBBE +:1014F000BACAD70617237EE66DB3337E9E88651978 +:10150000CF73EB7A661ED3FF7C8791CF1AB5FCD9D7 +:10151000E99200D1FBF4D6D187E6C0F353B385102E +:10152000E6BFAE75804706F45FC0028B9A3D867CAD +:10153000F9E6978F0BAE4BF09B1E1E2B7E59149530 +:101540007B716AD082701EFDBE407E9F0E57AA2E10 +:101550000FD57ED27782A6EFD2EB76091962FFF91A +:1015600063ED01C81543FB91ADAD2EB5363D78ABAB +:1015700051CF1576B5DD8AFD35FF5ECFFBC21FC5A5 +:10158000CB1B67737D96E6086A71133F1F9BD9C416 +:101590009F8F64BD02F65798BC3635173F71F65AD7 +:1015A000B03EC211983D4BC1F36E17B81DB9F7603C +:1015B0008551CFC1F282981F04AD19F801BCD7EA5A +:1015C00098A536C3FB604D01B4F5CB45FF9642E0CC +:1015D0006F7527CFBF248EE0EF4B7087B88E88C918 +:1015E0003FDAD7FC99BE2388CD43DAA5C09358676C +:1015F00041BB8CE7C21F4EF8576A5F2339643B7DBD +:10160000991598887C7FA43045CBD3F23CA4E86040 +:10161000E946BFDE2A3BD28D7E7D595836D5C7BFFD +:101620009261EA3FA15B31B54F3C5E686A9F1CF155 +:101630009AEA979D9964EA7F79AF6AAA4F3B5F6BFC +:10164000EA5FC5669BEA358E05A6FE33E425A6F65D +:101650002B329699DAAF546E36D599DFB718F98BDD +:10166000595CF41D4BBFBC538C7EBEFCA174D518D5 +:1016700067F4E575326C44273BD2C5683F277B157C +:101680002CA709A07FA1CCCDF7BF85F4053D3C82F6 +:10169000E76FD40D78A42A47756C45BE78262831AB +:1016A00084438E6F695A82FECE5A972C4C817A8180 +:1016B0009E3FF0C66150FCCCAC070FA29D7B66AF8D +:1016C000448C11FD2E9CB76F88673C1F33D641F1C7 +:1016D000D3C3092EAA978E95E87CED4DA2AF00E109 +:1016E000396D0914909C0B1182BBDEE2F762395A06 +:1016F000F47F8C70DE98BC391BE3A3D2ABCFC563FB +:10170000DEB5F4458B8076FD997DE5F77E0DE6FB31 +:101710008CB15E84634FB7D3B30ECA71AF50F299E8 +:101720008D9BF5EE8357213EBBAD945FFCD0C6EE9A +:101730006386FB293EBC9D9F8B5AE2107D12CA87AF +:10174000D44DDF1B348FE5F1ED3B83E465EF195594 +:10175000953306DB3307BE4720618CC5F4DD714E3F +:10176000A137FDFA44E3F86FD078BD6E3D9FCCFC05 +:10177000C38CE3151A6F95C0023AB1DD4DEDB0CCC4 +:1017800020AEBF06FE81762929B95042BC54393FAC +:10179000B3D0B94AF422A1BD57E0E75A99C4EF0388 +:1017A0006253A4DE3E3F3807C773FF99F2FCD0AF07 +:1017B000CA61F69FC731733D368F5F3F96DB0B6B77 +:1017C000CC7D30F56363E1E6F7C1E8F751EC91D4E5 +:1017D000847227D297E7F158864ADF677D678ABB14 +:1017E0000CFD2A7D9E1BC670FCEFD1EEAFC1FD4CF7 +:1017F000BC1725761D55C1AA3A8C9F16B2D272DC51 +:10180000C79B3B46308D639A1E5FA4C9CD22F9C8A1 +:101810009FD03EEC19CBFB591C72DA53C01F8B834F +:101820002E86FC73C342E62A817EFE31EEFF54A170 +:101830007CF7919253CF61F9E8983F7E13CA1B2D34 +:101840009120F663DFD6FC26369DF6D185E070B296 +:1018500027976A17DF5696248EC5F38CAE90220325 +:101860009CF163CFD0B9CA596318C175A3453FF73E +:101870001729309E577A5BA94A1C8BE7F9AC2C9C40 +:1018800082747ED1CEEFEB7905420AA8AFDA3F86AB +:10189000F288E1B1FE049C5FFF2E9E1DEAA5FB7F4E +:1018A0006A98427E553FFA6BFC13CB070838F2CF9B +:1018B00050FC508B70C3FBEA5D03D395FE906F1D07 +:1018C000C95BD17FBA5BA3AFFEDEAFCA9FEE5CAE51 +:1018D00057743E1F0A3EC097E95C7482C6BF7AA95E +:1018E000E329F6BBDC84B116AD9F8BCAF0581FE12B +:1018F000B567E4A7055680A15EFF3E6188F576FED8 +:101900009DEBBD543AD48FE5FC531F7F69703DF6C3 +:10191000BF04974B87ABF4D2E07AF6EF844B65BDFA +:101920007F48CE1D1A2EA0A70BE9C9A6F7F27B911E +:10193000522E0DBEDFFD03E04BB934F8FE630CC23E +:1019400017E6F05D0BF10FFA9D037CDF3483E2EBC9 +:10195000A53C0F1F6F53285E8D9F2350DE4E60798C +:10196000567E7FC5DFF69D531FFDD2583819F3D13F +:10197000FBED3C1FEAED2D30E685DFD1F0121EAB0A +:101980009E42FB565FA0E9835A73BF539A7DD4FBF6 +:10199000E9F7F1B013FCBB8FFB2BF2E8BB658B833F +:1019A00069DFBB29DB70DFE8134DBFC77EEFC62AB6 +:1019B00014F2CF3758C03F47BF36A569C75AA8AF02 +:1019C000CE8CA77DC4FA8C7F3F2E603CD001FEBA3E +:1019D000814E3A3C675B5F91F3AC83E36385B8BBB0 +:1019E0003230C0799FF63CBF30D6B05FB462C7AB2F +:1019F000729EC1EF2B61110B054DACD7C2F1AF9DAB +:101A0000BB4AFF6AF8BF4CE6F87F5BF191FED7ED69 +:101A100045CBF33F56309F81761FF76D7A13E3C9AC +:101A20001EB48F9D5468DC5FCBEDB3D7E6FB73A289 +:101A300076FAEFBB3F27EAC7082C386CA0F9257A65 +:101A4000FEB4A0501E1AC42280F140BDF3E274F926 +:101A5000766B780E7E8FB9AE75D25C2CC3AD2A95AD +:101A60009F29558BC7D27969617A3BD901E6C57B3D +:101A700055527DAFCC31FADDE975DDA67AA6FFF8C7 +:101A80001CA3DF3DBC29626AD7CF4F5BDDFCFCF4B1 +:101A9000C8C01953FF0ECBBB2457BD4B58605B1910 +:101AA000E6AB7B4DEDAAEA0C268FC3BCF579D3BC1F +:101AB0001BDB387FE776B0B9A6B84652199EBBCE7D +:101AC000EF74CC35CE337AB36CAA8F096598C615FE +:101AD000ED504CED255D85E679E549A676FD3C7E29 +:101AE00015AB323F9F1436C1AFE315CFEDAFC17BCD +:101AF00026A674501E15F78EA794F73FA7FF99A24C +:101B00002E46FE8FE5F3E03D53B4FD389E2FD0E521 +:101B1000B35D934F9D3F07A3FFFC3C7519CE3B5A25 +:101B2000FF3EBE50F6525C1DCFCF15EAF773C5CA13 +:101B3000CD831A9F7F681BB87D8DE6F75963EE2928 +:101B40008AF229BFA7E8C36A3E7E0C53D38DFBB847 +:101B5000EBB5F94B35FF6CA87B2BADE7134CF75673 +:101B600046DFE3A2E71FE60CFC9E07BFF27BC44101 +:101B7000D663BBE8BD4B8F69F8F83065E0F61FF51A +:101B8000E12BD324D78FA19F3FC1F89E11D46E8D36 +:101B9000B9BFC918BF04298F7DF1F84585E53283A7 +:101BA0005EFCC7C72D8CE0FEAA7EB0CA02B7E37DFB +:101BB0004F43CD7F62AC3A610CE531FE363B1B8F63 +:101BC000363593E67915E55065CD4D3CBE71D1397A +:101BD000451613CFB042379DDF8B7775AFDF8AF69E +:101BE0007EB5CB1BF4421C63E94D453C2E6191F55B +:101BF0001897FFD78B7136C473CF8B2F8FA47307C1 +:101C00007D714B8288FB87970A9F9EEFD1EF53012E +:101C1000BFA90EE57A9C08F117886A92E54206C9C9 +:101C2000A9AC94D3FEBFF65DCBE7ECA31484791C7A +:101C30009EFF04573A0914CAF072BA0A914D49C17D +:101C400092EFD724ED93CE1AF1FB1DC6F111BB6FB5 +:101C5000F359F77FC7E33A7AC69AF76FCEB1854951 +:101C600061459B7432E607AAE9BEC9D2E7A6A7631D +:101C70001969ED90256B749F2676BDFE41F4C6056B +:101C80004D0EB225F502EA25FF20F73A0945BCDFE3 +:101C90003849158A2644E7C3FEB307C813B415595B +:101CA0004C79B4C1F2F07A1E4878E8AD1AD3FEB28E +:101CB0005F6194373AC7F7A3360801CA1F1ACE8F5F +:101CC0006E16F11C9FA57718D7CF21FE5D265E60AA +:101CD00002F5978508ED8F0C757EF08B387EBFD4AA +:101CE000AFF2FCD945DCEF9AC8CF0BF27C9DEDA09A +:101CF0006F7198F20E2EEF36CA7F064DE799F38A80 +:101D0000B83EDB93AFE6215EEC456A3ECE73342EDF +:101D10009BFC3DA58C79D970AA875829DE0F7045A8 +:101D200012E68F3E636A923C00DEF412F336EB0C4F +:101D3000FAE69DE481E952A1D165751197FFBC3C9B +:101D40007502BEFF0CDE7B05FDCFC46BA58BE7CB18 +:101D5000D5BEFE1CEE795A7946CBA79F49E1FDF529 +:101D6000F9F57EF3B571275B1DBE75067F5279D8F4 +:101D70001EC0B8323557FB4E4F65FCBBF9E7783CC7 +:101D8000D1D0F98E0DBF8F5B5254B51AE1C27E746B +:101D9000FF8614B1E1B988AFE7FAAF46BCB5284C6D +:101DA000DD8DE395886D2EE0B747FB9EACC7CAF387 +:101DB000543D71BCD4E15952347B358EEBB93C6251 +:101DC000437EE8AB4F803AEA87221FBDAF67724C73 +:101DD000FD6A5E5718D85DA06BBD433BCF5FC8FD61 +:101DE0003766D1F6FD62EC76ECFD89EA88BF3422D5 +:101DF0007F0EA6BF2C8EEEC33F84E78BB573B7FE74 +:101E0000BD9F1EBE5321FE3985EF5D128A6374BFEC +:101E1000CEDFA9AF7A4676D37A3656F566FFA08232 +:101E2000F22632EE8BB113AF1FC1EFC4EFF716509D +:101E3000FE9D49DDE4A7240A0A5FDF1EF3FA5A8BF0 +:101E4000F4F8436103DD2B1AEBF7D48FD5FC173D73 +:101E50000F37947CEF7BEBA53B8DF2BDFFD5E138CE +:101E6000FF94FDBF1A86E500F27DFC05CFD0F2DDC0 +:101E7000C23A6D7C5F213213E75FEEB5D1FECA3AFC +:101E8000F9DD993FACA0EFD603F83D0BDB6B5EEFBD +:101E900032E3796001E31B6B74DF1DFE6B66DD349A +:101EA000EFCA2EF3F37EE78063FCB7583EF9A32612 +:101EB000970AE3DF79378105C17E4D8E85696D7C98 +:101EC0003F2560C73B9E4366F8F47BD0468BBEAE91 +:101ED00022DAC7EB5CCCED9EC2F939C6BEEBF7A4A3 +:101EE0002D755E43F67069472CDC2A9DBBB9B17332 +:101EF00088F5687C754C83FBC12285CA95F1B35E79 +:101F000041D16615DDB49F07701D227D29F9D230BD +:101F10009FF081C0FD5FBDFFC713BA9F080B74CE51 +:101F2000DA81F6EC6DC5FFEF289F238F474E09003D +:101F30001F73FA689E4FF67EF026EE77B20CB776E6 +:101F40008F5D64D365F0CFA6BDA2CCF313C10D782D +:101F5000EF504F19A76B93C319A6FDAF50AC7C721D +:101F6000B801AEB7F03DB170E9F9F058B9DAAFD9C0 +:101F7000A99652F504AEC79AD345F7F0F5DEC6F739 +:101F800097016FF47DF33A890948B74991DE5B9078 +:101F90008E19198CCE09EAF74B31AFEA403F37531F +:101FA000BBCFE4F772B503EF49484BB6D07D37EBB2 +:101FB000E4FAE4A506BD9A26587C3C0F5A9F8CF79C +:101FC000962CB26BF7F2DEFEE7157C9F4D49C1EF10 +:101FD00027DD097EBA0FA337592478AA167C361E4E +:101FE000EFAFC8BAE02CC77D8697357CEBF34EABDC +:101FF000E91D1F7046F1E1CED5EE7F4B9DB919ED7D +:1020000060A8DD2D0853713FA496EA9F4919C9883D +:10201000D703453CBF816787F93E4748C6B8B82516 +:102020004EFD4E35C2F3BA8837ABB0CF643529B90F +:10203000B8FF3DB9A9ED9DB45FD2FBBA95F296FA0F +:10204000BDF43A5CC38AB9DEFE9FBAE756CF8BB7C0 +:10205000244BCC6DB8875A5F578B765F562CFDF5B5 +:10206000F617FE2A0EC81FDE62ED7E8941E2B2D16C +:10207000C55C6FB6E0EF1018E28816B06F08670B0A +:10208000FE0EC145E2940345FAF864531C7240A366 +:102090006B741E37B5FF445BE74F5EB1D46E1B0017 +:1020A0005E9F06EFD85489CE271685F9FDBE83F5CD +:1020B000D3BFE71F0CAE3DD591C50837E691077A2F +:1020C000DF746DFD07505FA01F941269247990D5CD +:1020D0009F62BEA1E7B9D11EE3EF233CA9E1FB93C8 +:1020E0002BB93DAF94D4C5872BD0ACC8029E43C05A +:1020F0007BC69738A37439A4A82F1619FC489D0EE7 +:102100000F273C4ABFBFB0EEF57CBA3F2616EE75EE +:10211000DAFE961E5F0E75AF730BFE0EC345F12FF0 +:10212000517B747F58750969A887B97D7BF837A5FD +:10213000361BEA1B0BEBC5FB3E678823663E8FF51B +:102140000C91E17EF007A0B7A95D050686F60FB6F3 +:102150000FDB20C07A1B97807D8278B17E5D6CFC9E +:10216000D559FA31EA41DCAF84B2E1847703A5D9CD +:10217000C466FEDD1AEE0BC2B886FBCCFAFC83A364 +:10218000DFA6EF06857A6740A07B3182339F87FA0E +:102190008D7B6DF47D4CE343E6F734C59C374BD320 +:1021A000EC4E6C5CD256AC9DC7AB649568279E6FB5 +:1021B000DDCBEF87D1BE17FC1AD3CFB9774BC67DE5 +:1021C0001D3D1E794FACEE28067C5E8DE7E18B71DC +:1021D000FDB9E9F506BE3B354E309D4F3F0BF29FF2 +:1021E00007E33E6A95A9DC52AC761643FBCE62FF4C +:1021F00043C564777AB33F8675AD5ACBF1D3F33AD2 +:10220000F7E3591DB78376F1E626C4937D38BF37CF +:1022100013CC6CC0F87B01A2788BE822FF8BDF7BAC +:1022200033F9FD86645C87FBA7F37721BED6615343 +:1022300006FA556A19EADB8DB39D749FC8564B9018 +:10224000E6613293EF013C857E32F920FE5C435E0D +:10225000D703D5C3F17124CC5C0AE6D3DAE85C522B +:10226000C7547EDFA7EEBF4C8AF876D1FD5CD73825 +:10227000BD98F7DDE851CB64C3FC0A0B115F7F8288 +:10228000790480FB877B73E95EF273FB4653A97F79 +:102290006782EF629EFE7CFC512B3C377C5FBC72F8 +:1022A000CF560BDEC70EE2D9653C07DD77FFF4DAC7 +:1022B00070DAF568EF7E2CD1792CF72FAFA47B4133 +:1022C0003C9222201EAF1764EE5F69FEDC02CE1244 +:1022D0006CC1BE67BF4779F9CBC00E021EEA9937C1 +:1022E0001BFB591C3C6EBBCE2FD0F710B020FA0E52 +:1022F000EAFA9AAE096497565893D18FFDCAE788D7 +:1023000034B98BED77D61A697CDB9027FD44E82D34 +:10231000E0FE6220447148324B417ABFABEB693D2D +:102320006F9FE7F7A0FCB55894D5740EEA18BFAFBD +:10233000B74790534CF798C89DBF403F72954526CC +:10234000FF831D57CBF0FC5CCFEC62BAD7E4136B74 +:1023500084EE2D6D01BD2740FB9F77DE712D9E5BC6 +:102360006AC9023F07EA054FADBB56023CB6E444DA +:102370001A2D50BFBAE411DE3E36720AEBF39F7A93 +:1023800092D7CB238D489FD54FFD9CF7C70384C0C0 +:1023900058AD4FEDBB16BF573A9BACFB1911BA179E +:1023A000AAE5F9D116E3BD642B4AB8BE3C1BC7FBB6 +:1023B0009DF5F0DF33608511D3EFA3FC4B89FEDD83 +:1023C00020E7FB652FC48571DF581FC732069E3F8B +:1023D000AE84FB49CBB4FB9D40FE7E86FD0E652896 +:1023E00029E4F79E019D43711FFF1D869EE214EDB7 +:1023F000DE9E48764A71FFF72D477BECC4761EE7D8 +:10240000E9EF492BE17462C57CFE962C3919E991FC +:1024100096C2FD672048327D8FCDB66AFE0DA78F2C +:102420005B94CBDA913E72EF78B43B872E8CA0FBA5 +:102430005F0783577F9FA784EB9D65ED1ABE602ED3 +:10244000F4635A9EE7FBCD083FFA3BABB5F5AFD03E +:10245000E05BA6DD9FC94644E85EFBD87B2D865A2B +:10246000E778EDBDFFD3EB64157C1CF07919F2AF72 +:10247000BE0E3D7F7556CBDFB3493A1C0AF1FFB261 +:1024800017BEB999EB392585BEEB650FF2710EFDCC +:10249000BDC0FF9EE8FD7D82FA6B1BCA79DF3D7BE4 +:1024A0005DFC3B9DA89CA9B71AE5CA9DCBD7E91650 +:1024B00055773BC91FC049F2A7F27835865FFAF01D +:1024C0001D2BB7FDE65352CCF32934DF607468F856 +:1024D00047F35BFBC0F8ECD32731F8EB933F8F3623 +:1024E000AE3842E70A63E56FFE6072EBF91BDFA7C7 +:1024F000ED4BAEFC26D00FF3D78A998F57EEF158EB +:10250000EA8BA3FDEF2F3CEA43BDDA971FD8B33522 +:10251000381CFEB96ADFCD74AFD0CA679FFA451088 +:10252000C62F7FE67B2E06FAE603A933CD0BCF9BA1 +:102530001F5FEFC2EFC6CE484117EAC90F42FC5EEB +:10254000D1583DFEBC4E07CDAF6A61643BD8D99FE0 +:10255000FC79C3B700FE3F0AE0EFC8781FE09F3662 +:102560007C0BF0734475F4A27D3E2341DC0FF565CE +:102570004B9C01FCCE6DD55EB33FB4FCC9EFA529E1 +:10258000E43805875BC81F0A0FC7712DDBAD5ECC31 +:10259000F7B41C13BDF01AB68AF56E40F862C7AFE7 +:1025A000EA7A8FFC2D19FCBA1197F56F07CB437CA3 +:1025B000BF6ACFBF7D8ABF1FB46ACF076F639E6FAC +:1025C00055CCF9FCA641FCAA9D25E63CAF8E1F1612 +:1025D0004A253FA6FDC74F3E4D7EE4DBE96574EF1B +:1025E000EEF6FF7009C5786F6F6ED212F2B7D60E95 +:1025F00078EFD427E807D8FBDB7B65AF40391CB602 +:102600008F97CDD6B00BE3EDE6AD566F101E373F7A +:10261000F5D813984762BFE5E7EF9B9FFA6F1BDE83 +:10262000E3D52CA8BD02FF7D02975019A5CF8AA73C +:10263000DEE779964C91CD02FA2CFFD9E7BC3FF842 +:10264000B971D07FC5AE77282FD3EC77061C03D0A5 +:10265000A7A6EB00DD0BDC8F3E5DEFCCA47B837F78 +:10266000FC05E1FF83FD024BF7F41FDFF4F887F46C +:102670003DC74740083919E9252EB1250D44A7F07B +:1026800037D0AF8376CA2B0C45AFFB50165289AFBB +:1026900009FF4D6FDBBDB3F07D4FDFE2C2FB634F3F +:1026A0004B01CEDF8FAC4FC3EF379BACC134994A9F +:1026B000FEBCE9D1DB88EF6E7AFDB634FEFB3A6AE8 +:1026C000A66512AD3313D777E39679B4BE46E627F5 +:1026D000BE6BC2EFC2A1FC5CFB1D96587A96967247 +:1026E0007B616737977E8BFBFF748EF134DE330B93 +:1026F000F5E0517E0F949D6DFB03EAC7CFBB5305F8 +:102700009477F175AB03F173EB8BC95BF13B48B187 +:1027100094EBFF9AD73F9F897274AB47A2EFA660F4 +:10272000FD410D5F02FFEE8F2952253E679407B4ED +:10273000B373B64515741E51C173B586FE84AFD30D +:10274000DBECF1C23828D3781E19FE8EB24AEDDEDA +:102750007466905BA69CC3F52F2AE5F2BE6AC7E9B2 +:10276000993F40F982782509F0F3D9B1F7E8BBCF5A +:10277000A0DB42E7DE5775BF4F75E64D559232A29A +:10278000F858B5D76EBABF6AD5F6F763E4D4DC0E55 +:10279000FE20E16D154B52305E386DEB9DF902BEA7 +:1027A00007DEFBB88C7191DD74DF46942F6CD1E7A6 +:1027B0009EA8BCE971CF4D9A5CC7D22B56CEC79468 +:1027C000C6DC67B425F592EE156AB6869E40FC34E9 +:1027D000833C06491EB97C31D087F8DDEA873B5F30 +:1027E0007AF33A58C7875D56F72C7A9B597F36EDB6 +:1027F00006F984FE22C4A1715EA4C31736F45F33C8 +:102800006A204E05B83F747A7193BBBF5CC2F30176 +:10281000E5D2C9BF9BFBDFD29B370DA237E7969A63 +:10282000F5E6E7AC38095E03F662C528FA1DB6186E +:10283000FCEA7168AC5EEC2D5108CFB17A11FEDE76 +:1028400064063C2EFFE9C7A4E7FE087A8EECD0F6BA +:102850003F915D02B4F6DA816F5B429F527D3DDAB3 +:1028600025AA1FB806F7FFFBAFDB8CCFD8F674CCD8 +:102870006D4E88D2DFBA9605F17B97DE1745CAAB5D +:10288000F5002C1BD0CFDEE909E1EF00ACD7FCF658 +:102890001EB9D7857EF6FA64BDCE6E5882FD82A53C +:1028A00032DEDBD11BA7EDA7F87A5DC9CEE8BDE02B +:1028B000EBF0F796C07F93F0F7960CF9B77589DACD +:1028C000BE4B06EFAF3FAFF8A5E8C2F30D9110FF86 +:1028D0005DC8FE7CDB4E7047186F9F215E781AF34F +:1028E0008CE7827916DC6F3BE7E87D1AF7DFCE498B +:1028F000852941FABE8AFBA1278357A4014CEC7DB0 +:10290000E67BF332A47950B56502FE9772D4B0A687 +:1029100057DB5D98D716132B8EBC00E31B01F19893 +:10292000D78FCD7F2C67BEA4B0A77F9E03EC9F0DF1 +:10293000EDFD4D6087288FBCC5DCBE7CDF87C47F82 +:10294000CB63F8CFAFED5BC7F2DF633AFF95B132EF +:10295000EDFB448ADB7B5E11E9FCF7390723FF02BC +:10296000BF57044A42FC2E12DDCEED14E87787589B +:102970003095DF3B0A728071B3CE9FB1F17BBFF817 +:10298000FEE7BFAFBC13BA34FFE277A53F84F2A3E2 +:102990005FFCB6E005AC3FFB56F6EF58FFFE35FB9B +:1029A000FF44F15CCF7E3B43B87AF6BF9C8DF6B80E +:1029B000E7793BDDB3DFB3D64EFB94C1FD89740FDD +:1029C00058CF48EDFE9917BF288D901E5F47F4F948 +:1029D000CF527E4FF0B97D7FFE039E7338B7CFAEE6 +:1029E000E03A56ED4FA09869D5F371744EBEE7C535 +:1029F0002F2A8DF747FDBDEB69D1CEA1F6003FE24E +:102A0000FE20C4F374FFC5AA17263FD686F1C79EE1 +:102A10000336CCABD7FCF22FA5A8AF7A761FB0A1B6 +:102A20003E83B8ED51FC8EE8B7A5D73D6C053C7FE1 +:102A3000823E20C4D3B78DFBE17CBC1FA43F5E382F +:102A40001E7A000FB82EC04B13FA6183E1A3B7942E +:102A50007F27F5CF878F4F297E68DE3791E1779EFC +:102A600051BCF0F387CDFB12430E01D7FF9C0BF353 +:102A7000423D3960FFBDB8EE2F4A31BF34D4BA931E +:102A8000C6FDB3F2C1575CB7857DA57597FED3AE81 +:102A90009BF3FF9E526EC762E5A03F9F3F7B3BD5F5 +:102AA0009F4EA47B9F2F55FEBFF14FBBFE4BA67BD5 +:102AB00029DEF3FE55E9BE72DC3FAB9C0F45F757AC +:102AC00035BA27CAE8F7F7BCF8976C5AEF25AEFB82 +:102AD000BEFF47D7DDE737893E07FEB4CF7D2CDC4C +:102AE000AD40B95EF347D6E3E572305FC7087EEECE +:102AF0009A69718A96AB66CF69FB10EB59B98AE780 +:102B0000CE82E0673C4E7E0AD461DD1DFE29741F33 +:102B1000A39D71FEFADCED7C02F38492B29AFA3343 +:102B20003F8F63F4BAFC35BB8CF5F6368007EAEDCF +:102B3000A91619BF3F1D0C3FA2FBB53AF41B25A7F0 +:102B4000CD14BF3863E290F83C9B295E896307652A +:102B5000BCCF23CE2BB110C58186F1D0FFE171DA55 +:102B60003DE32CA4FD7EEA9078A2B8B143D6F1A44F +:102B7000D2FAED4ADE6AF49F4E8EE3F1DB7AB69A22 +:102B8000E17DEBC163A27E8F08C727D3FF34BC650C +:102B90008CA77B2698E4A5BA756933E1516210478A +:102BA000F27598E24E3C978BFE9E11AFD584C7001C +:102BB000D5DB27DBE576F3785AE77AA59A219ED70D +:102BC000E39600B62B9677F0F793FEA7F0BA6F1056 +:102BD000BCEA6505EBA5F3636EED9C90DB3102EF7B +:102BE000C2C3BF5E7E6F8ECC309E13AB5917E5ED2E +:102BF0007C52CC77BD7218F35BED37F3EF86592129 +:102C000053F8797BF33993EFBEE8B3225FFB416C55 +:102C1000050884AC575F4BF5AB9D4C1560DEAB9956 +:102C2000CF8AE72150BC1FA7FCAAAFBB01EABFAA0D +:102C3000F86E06E643AC82B28EDAAFD4EE9762DE6F +:102C40000309509FB7363305E11E368B59F1FEB2AA +:102C5000FF0B496DA6150080000000001F8B0800C7 +:102C600000000000000BCD7D0B7C14D5BDF0999DBC +:102C7000D957B24926C9123608389B048812609287 +:102C80006C9205024C1E68D0A0CBB38054378810DC +:102C9000156485DAE65A6FB321240215098F56545C +:102CA000AC0B82725B7A9B2AB4B4A57679C8C55EF8 +:102CB000C58894A2C536A215AD0F22E0A35FF92EF8 +:102CC000F7FFFF9F99ECCE9210E8E3FB7DF1D71E52 +:102CD000CE9C3367CEF9BF1FE79C9D31D5AB8A0AE6 +:102CE000634758D7B1693EC6C2B344753BA3BFE939 +:102CF000874B199BC6FFCD66A67C636232F44B55A9 +:102D00003318EBC7D82C1698512C30764B732014FF +:102D1000703176EBE0AEBCF402C62EE2DF04C632C0 +:102D2000542F63258CCD9002D6FBE1F90CC656B02A +:102D30008C58BB51CEC0C1E1F90C39600DB9B0520D +:102D40002DBF9FCF98A05D2F5E4CBEB4BF513226E1 +:102D500031EC877F1745FCFF30CD6B940DDE75336A +:102D6000766FAD3DB21CE677AFAABE7D2FD427D7D4 +:102D7000DA65E8C12A7D75833A613E13C5F2A71E64 +:102D800080F51EDD69677678FED1E36F0C54E0B9FB +:102D9000EAFBD60D0CE651C8D41619EA0B04F5254A +:102DA00037F4632582BA1DD66F85315936630B37E8 +:102DB000D71DC1EF4CDB2908222C758C6AA1EF8B43 +:102DC0003BA103F4CFDC24446E847F368D83D1A1F4 +:102DD000DF475B84881DEA55B5C1430F42FB06BF40 +:102DE0005DB6AB386F2D353B8BB17B7438BF665504 +:102DF0005FCEC3FE3FB6AACB157C12A1FE777B4403 +:102E0000B65A86E7B5CBBF8FD3B9415508BE99BE38 +:102E1000BAD228FC735AEDEB5210E117D68E1698F1 +:102E2000C60B3E3A3A6EBCA671CFD178C7B34566A1 +:102E3000C7F13635DF9009FD16305560B9B4AED60E +:102E400007A0FFDD303F11DA2733759D0FD6C7C4C9 +:102E500045A538FEBD3BACA73A1D3ADCF1FFC4B92D +:102E600069F83CD3677E5EBFCD5C5F007D928BF0DE +:102E70003BD2A94E036F306EC3C9BAC8C1B87ED366 +:102E80005597FBFDE1F08F32567671586C7CE686E3 +:102E9000498DBE940EBE6C0C460E0E89E1DFC0CF8C +:102EA0001EBF581301FC8DCAD082489F46FF66C4DE +:102EB0005349ACDCB3F78BB7EE45BAF7D9551C468E +:102EC00063E9D5327C6A767D850FC9AAD251781024 +:102ED000EBB785A00EF05BAC5AE93B5F97DF9998A2 +:102EE0000EF53B3CC2212CEB14EF0D19508675BC3E +:102EF000DC995F7108C89AD5AA536C38FF89E285BE +:102F00004AA48BB3B0767B3A7CB7F3E8C0A0EBD28F +:102F1000F554308149F9317854399C4C8A83CF4437 +:102F200039DD54BFD1936DEA3F49F19ADA6FCEBFD4 +:102F3000CED45EAB169ADA7FA3CA34DF23BE2FE766 +:102F40002C83751ED96B93118447102EEE185C8E5E +:102F50008CFEB212E9F8D5EB0256313D36DFD5AA28 +:102F600044EFAF465AEE876CA9D9909EEFEEA63F8C +:102F700046F4BF618A10590EF87EB5E4B143F301FF +:102F80000E1F003D8B2AC2E5E4DC65C80F11AB6A59 +:102F900007D02D64C1431AF4DBC04287501E4DAFE9 +:102FA000707485618A5359202D2A5C4A574DE34E2F +:102FB000D7D2FBA34519F978C16673FB4F4A86BD8A +:102FC00084DFFBC968BB2CC038D391FE8C762F8E72 +:102FD000FBC867622A96E6E78974F99C9AE27E3F0D +:102FE00059A74B208C9F084C8D22DDFC8ECBCBDE6D +:102FF000E494419F8974F81B9DFE8C72A2589086C0 +:10300000726994CDDCCF28DF6C04D0C2387F68743D +:1030100050F976A34CE59F1A3D54BED3A850F96EE3 +:10302000633E95BF017626F9D000F8CE8C8D93597A +:103030001BB05D8E9F62F235ACCBD3AE9308DFCC74 +:1030400023A2BA5589F117BB00FD403F64625D8C35 +:10305000BD37B9E140B0BA98B1D3F87DA487F95B28 +:103060005E92F07D183005DE678BF6BD24B9E3EA89 +:10307000DF78C7DCFE9070C8545FE135D71FA938F0 +:1030800014FF7E6FF3CFAC55ACC114C0EB46418B3F +:10309000F4004F637EAF36A9B30305080F4D999234 +:1030A00082A58FD6775A97E7BDC165B6C842ED3085 +:1030B000EEE44AB52E10A7F73ED3E1FE998E5703F2 +:1030C000CE4CD594C088DEC77B53640D38DEF4BD8A +:1030D0002C431915D74F9FE79B69C18948170C6886 +:1030E00018E5C886D9C3B6ACF6F6BEFE0DB3EB063E +:1030F000E5C0BC2A038502D255E6FC5BAD0CCAE3F1 +:1031000053DEB160392A07E60DE3CDB9A80C9A1257 +:10311000079F7E857CDD47D7B059ED3DC02D556FAB +:103120007FCBC2EAB1FDADD4E0A0D9A6F71DD4DEB5 +:10313000AF50A1F2780A1F6794C42411E4FFE41C85 +:103140000E2F5600F01E1183B7F1DDDEE0D34D6F78 +:10315000F808F4D4EDB54C43F93EE7A236686ADCD2 +:10316000F7730B39BC8EB5C0770B2E1D6F6621C768 +:103170008B01EF4BDB39FE0CBD7D7C328BD851FFD0 +:1031800031B509ED85A9A017510F4F145DC4FFC7D4 +:103190008F89AA9DA404D7E30BF19FB0F4E3A04F5D +:1031A000A3F0FED43A5728AC921E1E84F05E386B12 +:1031B000612D1B097D7439E580FF2EE680BD1195D8 +:1031C0004C722B511E65F6219FC616BA62F209F4A5 +:1031D000E6D1C63DEC5D6B6C9E67F5794E8589F650 +:1031E0000417434EC9209725E0DF493A1CDF15B587 +:1031F0008985008F57AD1C9EA3ACCC196FE74DD2CB +:10320000F136AAC212403E7B6DDC9753913E974E39 +:10321000CAB58830C4D19A7319F30A6278E9E6CF47 +:1032200086E6605E711CBD4EB2CF427C2A4C4B419B +:10323000BA381A287656B862F8DA103897C1E2E43C +:10324000162CE3B2FC74A5F2ED48A785EC8423E3C9 +:103250003F27FDF641BE6C110A41D6A25C83F717E9 +:1032600016A6D3F73FF0BFEB120A506F9F7205A16D +:103270009CCD2256947BB7B1A815E9F1EBAC93EA4B +:10328000773066C3B28E2954DEC9341BB6DFC53A27 +:103290009920A29D0D7F03183B57B8675318C61994 +:1032A00089F840FE606CA525CE3E7E4E87EB1C550E +:1032B0007BA010E19BD17112F561E6782B4339AC0C +:1032C000017D4D4D417D5AE69CD7033E07A8F3BED4 +:1032D00053180FEFDAA00DFB81DE223C2200114FC4 +:1032E000D6F4FCADF172A445C7D3B951DA0A7CFF1C +:1032F0005C21D7EBA332B8BC60ACCB42F66DBE62AA +:10330000591D67073CADF38D511F650BDA90CF1740 +:10331000A8219B0CEF556E2E7476F6C06F03D4E097 +:1033200086C212F33CB9BDC4F5616FF833F4DAD547 +:10333000EA4543FF1D54B508AE4FB2B020C243CAA0 +:1033400098E541F830793AE1FDB9047A4DA49B91B2 +:10335000FE771F294643BCD6A20E017C8CDCA3BCA1 +:103360009D8C764E78B62CBA63FD47D69E7A25CFD3 +:1033700087FD4559807E1B6ACA9C287F37B8C28367 +:10338000113E1F08AAF341B4B3B68B32F7BBBAE6BD +:10339000221D2EACCDCA41BCDC3AAEA44383FAE96F +:1033A0005A6F11DAA37FD6E7F521E37A201C1022A9 +:1033B000DBA1DF07931E1E8CE3BC5AD2BF08BF738C +:1033C000EB243BF1FDE963B9A841D871DFC219CB09 +:1033D000F01DDD3EFB9A2EA74E6F5B46F6D1694F7E +:1033E0002EE916901734EEAB35DC5F7995692FA185 +:1033F000FF3055B7C366CE4DB4BFB89C3C8D72123A +:10340000FA4F0B98DB33379F3E89447EA93CE37625 +:10341000575F72ED78614ACC1F102F95671FBA581D +:103420000DF2CFD4BDEC89601AD8CB355EEBFBE84A +:103430008F3408441F865C9B5AABEE43BB616A4DD8 +:103440005DB103D69D1A29131417FA63CAC4641810 +:103450006F728D508AE319789B5C73BF8D817C9964 +:10346000BCF97E9B9282FC10388D746ADD5EA5B03B +:103470001CF4930A5FC6F746849D84EF5B279FB5D3 +:1034800020FC37EC02FB59457B76580AE2F9E8B696 +:10349000736E56D0135FB4D9D0BFACDCF6D900E45C +:1034A0000B432E8084D914253A74733B8B053C97CB +:1034B00095737ABFBEE45CB892E58788AF5E194C1D +:1034C0007EC840F04380B76FF1EF1B8CF89FBF02BE +:1034D000CC38C0EFC783DE978EC090D12A4788F9D9 +:1034E000797D24B4C392BB9807EAD95F6DEE84F668 +:1034F000E666B0FB0762FB17545F213964EC3FAE10 +:103500008B99FC8D095F394CFE460533FB2F8B3AB6 +:103510004FEDC2F7E5E576396D20FA3B667F668FA1 +:103520002DDAFA0A7CBFEB7B8C6D45FA94BD09FE5F +:10353000CF7509FE4FA1A97E73FE6853FF29AC4BDE +:10354000427A05DA0FAD05B82D62B295E4A0267770 +:1035500085A13E59AD30F5BFD53FC9345EF12B5141 +:103560001BBE9F0AEF8B00BF298E80793D0D5F1037 +:10357000DD8D6DB8407AB430DA6E6A2F3EBCC73448 +:103580009EDA2157A1D95974423D80E597CE5B3C24 +:103590004D301F456021361E58B13350056CC24A6C +:1035A0003F081DC0325C197A0EE11506783543F9E3 +:1035B00058F2779EEE84FE0D007F8C277C4B642DA5 +:1035C000E042B22F2DC17AD43BB2457DBC0EEA1F3A +:1035D0000A81AC3AE0AF6162B0A208E8C1DFD5561B +:1035E00005ECC2C67CD57E00CB5D1DE52BC7F8106F +:1035F0001E8067187791CB4276F34471EF4801E95A +:1036000065677231F2B741571F7D93DD41769C4764 +:10361000F3D441FF16775ED16AE0AB40558A26426B +:10362000FFC53F1BB615F5BFA7A4624A11F08D98E0 +:1036300052EDE07E87D4D5EDFFE760BBB67E38EA79 +:10364000F70A91E44878A295E459922522338AEB4F +:10365000703D65BBD14AF6EE6B455CCF6C78194086 +:103660000413DF90CEEDCBD20E6888E3B34C3FB7A6 +:103670000FEF2ED2ED7020571C674ABF633B570BEC +:10368000384E0A3D2FF5ABFBAC480FB224A39F9BED +:103690007A22208F80F176B9DF0BE33A769DE81825 +:1036A0002728D85FA1FEFD6BB5651528F7F32586A1 +:1036B000FD77C9D5C9D83F75AE6A49C2710E5B2383 +:1036C00043609E4BC7D969DE4B2B1C3F665E1C973F +:1036D000113C6139F712FD8CB129380F26752A5F2C +:1036E00007FEFE33E831C5DE3B1FFF79638913E334 +:1036F000531B34D5A962B949D4E5050BE330A916AB +:103700004426D6AADFAC86EFEC30EAC0CA0CE02D26 +:10371000DB0CF9C298331FFDEBEEFEB3ABC91FE81B +:103720006E0F231F3F2AE8F5F0C4D9385E6AC278CD +:10373000C6F8DF7DBEFACD9505081F5987B3DC2F8B +:1037400000A0BDCB122A45FC9DB68486221D9E1684 +:10375000142A1FBE36B81EE9EFDA0B695184CFF97F +:103760005DF608C2E1DA0BB7F64739077AFFD94DA3 +:10377000486FD55692EFBB6CA12FDE047875F54BE0 +:1037800052B742DDFAF4BD5D8F032A4E3F75E3CD9B +:10379000F8FEA3AF5B3290CEEE92BF207E33EC8674 +:1037A0008562F77A3430B1D9C2D8FC35E4BFD396FC +:1037B000587B9E03F924B63E07D4E775C373DEEC4D +:1037C000F760FDCAFC1DF918EF3BC75CA1D558E6B0 +:1037D000CF9989783CB7118C6CF8FE2E7C13E9D711 +:1037E0009314D98EB07307F2D19F3CD2C1EDCB7642 +:1037F000C0AF060BCA0D77BA46F8F07D2963357461 +:103800003B57DEBF0AD771EE218641477657A78D19 +:1038100029B08E5DF9F39B2BDD487F4A06EA698368 +:103820000E4EE03860DFE797687B90AF62F1D20719 +:10383000AF2E5E2A75D988AF725968357C7789BFFB +:10384000A900F5F4701FA7F325D5C23B76A82F6910 +:10385000384F705DD4708EE41A93822AE2F7E32623 +:10386000CEFF6D5676C7142817FD8F7807FA912082 +:103870003F560A4558EEB72D8DE347D6FE59B71C83 +:103880001C65E9DBBE4B0AD6D277A708F20CB44B15 +:10389000327D3B664B60974D71CA33308EF3A7176C +:1038A00036CC96405E4F1924CFB040FD6FCF77F1F4 +:1038B000F66CF97B169083037739E750DD2BFF0E0A +:1038C000EBEE17F47A8A8157714E94E2C02E0DF117 +:1038D00076B6C6497E5E6FF399D6F02B531CE592FF +:1038E0007651E0F2701697339F4CCA2679C5F28262 +:1038F0005E949F8B2DF252B497CF1671FBCD9D1B1A +:103900005884FDDC22939BE1F9E2A11DB7A7E622D2 +:1039100074D4894FA2FC0DBA54F433A735BC48DFE8 +:103920003D6A5106213F5D5F16FC2BF2CFA7291D92 +:10393000C44F6FD4BE918572758B4FD6ED81AE3C6E +:10394000C4CF6C16247F64B61E6FB58094B8089FF0 +:103950009EEECAB33280FFF459663B6D1A8B92BF5C +:1039600032B53621BE1B1FAF15E9BBB703CD30AB57 +:103970000E8FC519DE21FABC5CC5403747056504CA +:10398000D6ADEE8E2C6EC7EF54487FE43B18EA8F1D +:10399000A4EB4F8C0CF680F7F646D093C04ACF8349 +:1039A000DF8A6523C5DC41DE4A9D3615C6B94F97CF +:1039B0009F13C54522F2CFD93D5E166FAF0D2DE6A0 +:1039C0007A216D0F8FF7B87301EE6E846FF4218446 +:1039D0002F2BE0F05E6C890E443C0C2DE6F2DFC02C +:1039E0002BC0ED05A483831E68077E985005788060 +:1039F000FE13EE7C456D8EC3C3167D5EBB9238BF51 +:103A000077ED7646B67A2F9D677931C773E27C6F82 +:103A1000BDCA79DEDAC73C6F2DE6FCDADB7C0DBE71 +:103A200035E064F02DD3E5D5EC59DEADA487F4FA8A +:103A3000D45A2FF983C63C2FA59F6D4A4FF4D31754 +:103A4000DD0CF719FA81CB0F038EC6FC0C790072DE +:103A5000B4A6DD34BFF42DE6F9A5135FA536FC82CC +:103A6000DE1353247A3E3DDFB305F330A91D6749C9 +:103A7000AE817D763F989AECDEE21CC2436AFB5F22 +:103A80005B33C96EB30A284F521BF6D2FB97ACEFDB +:103A9000AAD7D5B3BC1C078280E41DCA6401EDE03F +:103AA000A0C9EEAB60779BECC22AC7FD0971FE7F0F +:103AB00033F5BFD1D3646A9FA4AC4AB073D799EAF7 +:103AC00093D5C713ECD82DA6F6298E1DA67A796753 +:103AD00007D999471A6BC84F1EFF4117D99B51DD73 +:103AE0009FDEAFFBD307D19F06FE3C84FE34948754 +:103AF0001B557AFEDB463F95AF346A54763406A8F0 +:103B00004CE46B5F47A7EFDB8007BF3B8DFC8D600C +:103B100061F0E7C5809FD1C7BAF2D0C91873A29DE2 +:103B2000ECE0967DA32D368C33BC22469C02EAC97C +:103B3000B23476197D91FA95C8B4383A4FADED6438 +:103B40001ADA2D7ABC6B8AEBBD6AA40BD6200B69FE +:103B5000A007EC92CA7C501F1C94EF0F437D6F317D +:103B6000B713035A13F90333A12BE6396639C0DEC4 +:103B700081F9CEAA1722CD14070C53FB6D005BE42C +:103B8000BFE70F2FA7FA6C178B627FF80B38B2F4E0 +:103B9000BC26E2D93DED25A2CF1053B1FF89ACD6AA +:103BA000071C686B197A3BFC96E5E2F02BD7DB7BB0 +:103BB00081B6909E5B0495E202E17489F20F89FA66 +:103BC0007443318F1FDDD2CCF57C979785B6A23C2C +:103BD00041BD0A709A22033CD05E6D502C080F83C1 +:103BE0000FFD9D5DC4273EC54AF99945ECB31B30D6 +:103BF00094B648CBEF6A867AC97BC166A40BC3CF63 +:103C000031E81DFC8403A928E74E32CAE3248D5F06 +:103C100025A25F31FA7CA419CB0917DA4594FB7D04 +:103C2000F943C6FCF736CE227A79B1314865B4B192 +:103C30005EA7C310D50F363650FD506398CAC38DAA +:103C40002B753A6CA3F6571A3751FD486344A7C742 +:103C50001DF47CB88FC3EF54B1AE2F1D151447640B +:103C6000122F2D8E7022FE593CFE9332787B12C8A3 +:103C7000FF70611C3D00FE515E2FF2E872BA2F3AD0 +:103C8000C858F9800D50F471FB062BF9457F273D8C +:103C90004C7781019A73A91C9BC9148A4B26CA339D +:103CA000B02F54A4FB690CECBEF4AB90DB2CA462E7 +:103CB000A8C1762DD825DEBFC7BE0886703E7D7FA1 +:103CC0008FE3C7923C378C7A71B18575211EACE9C0 +:103CD000C76F1773627EE4257049F02BD70FE7E3B7 +:103CE0005CED3C013E56A483BEE66929D1F27DFD20 +:103CF00062F049CAE0749234C01509037C6CF6483E +:103D00006439AEE5574EBE9FC215188CB6A731DF99 +:103D1000429F9E4751B4421FD90917F65D443BB4F8 +:103D2000C34A71B4FB7EF9E615D9494BE47326FB0F +:103D3000BC5BCF0B16D2F34B2C2CF83C944576E6AB +:103D400010608EFB7D9513F8F7CA3B34E457595247 +:103D5000E3EDA8C47249C367347EAFED183F057C1C +:103D60002CF975893C2F0E2F8D3E3DFF070EE1FB90 +:103D70008E18DCAE94AEC775CD32C989FFEFF4A7BB +:103D8000F61FA676C63A7D88FF396EAE176E0D4EC9 +:103D9000D2ED8B76E2C3B9AC83CADB59179541F4F7 +:103DA000C8A19CC7542AE7B30095E746051F40FC0D +:103DB00048B600C53F8EB0AEF9BF027AFA64FC681F +:103DC000B9825D2A17AF540E1AF2CF9087AD3656DE +:103DD000DF6E8ADFB80B317E63E0E3619FC514CFED +:103DE0004FE4AF33850ACDF7CCEEB11617BC7FE6B2 +:103DF000553122909DA61CFA36D05573918DFC97B3 +:103E0000E2B94A2BE6C150800CC13D022BAD1FC761 +:103E10008F73AEFC6BA497CF61F419E5A9A4E67F7C +:103E20003D2EDED9ACE7197740F953986FDADC4EB6 +:103E30004989E38B1FE87C5431BB9AA1FEBB45D670 +:103E4000FD0407733B91272F9C2B98017C770BDA9D +:103E50000740C7E715ED691FAC2BFC70793AC59593 +:103E600031767A2DF203C81BE4075095769237DF3E +:103E700027B93A93692FE17E84FB5485E4C834C6A0 +:103E8000D79D088FFBCAFF4AFC7B1FF02FC22191F0 +:103E90004FE7EDD9774248FDC7EDCD790E57541C59 +:103EA00079291C615DBF44BA495C9711FF5DCC3A2A +:103EB000C9BF5B33F06800E77F0F6E6681E776D697 +:103EC000AE5D83F266CF168672B54814286ED5357E +:103ED00089FB35897C7A4487F7229DEF5950294622 +:103EE000397D46508A5617F2F9909DFEE275E447F7 +:103EF000BCAFF737E60172A7E5490EE710EE3FFACF +:103F0000D8C9FD91C4EFBCE5E379B7698EF326B952 +:103F1000765FC35F4DF2E8BE021EE72B6A568A71D8 +:103F20009FD9323D6FD75110781BE1714FFBBA9F7B +:103F3000BDA2E077377FF32DFCEE6117D927EC9512 +:103F40007E04A3338239CF3DCDF199AEBFB798F24D +:103F50003F6F4CFE3DC963F4CF7FE5433F17F4A7A5 +:103F60001C9BDF514BC7FB4F7A637218FCE43F7E0A +:103F7000DB8B72D8FBDD0284E76E2BC5AF16E1FC4C +:103F800033D15F0E9CF5F1B824C51F8E4E1A4E7EBC +:103F90009861C79DF9B0E7FCBB313FE33BC6BC3E2F +:103FA0001604331C75FE9DA0EBA737AC1D9FE2776E +:103FB0003EF9D970010386DDCFD33B46A6BB62F83C +:103FC000E9CBFE49B47F2BDCCD549FDE87FD031285 +:103FD000F325EC776229B77F662D6CB38E2579F1D6 +:103FE000F7D93DC67C9B5358C486758D29721685BA +:103FF000E228AF855151290BFD305E175CC70F04D5 +:10400000611D9B97A5AAA207D6C9789EABDC63A3C6 +:10401000F8A31DC783719C2CE2C152B47465623948 +:104020009105251E878E10BCFE4BE86CC6782ED3FA +:10403000540FFAB12DEE4A8A6F7CC05C218C17CFE9 +:1040400048AF19079F65B3174C0A225F4C6F4EA506 +:10405000FC906453A57D680FDCC4F375E037905D78 +:10406000FE3B8DE7110C7819FB2DA5F4F00DE4AFA4 +:10407000CC01945C837907D58A789809F623F6FFFA +:10408000BD14EA57E0C5FCD7C69102A0FA6E319282 +:104090003A02D6F197A33F2C7D155EFB88456D2E25 +:1040A000685F7C10F81EDA975C75BE3A48F585ACFF +:1040B000EDA97D30EE9B594F3CB08FC5E0304B7B76 +:1040C0007AFB9D50AB17DBB32A84587EE94BE7EDB2 +:1040D00059FBDCB1FC455FF98A6162705A4909E617 +:1040E0002DDA6E27B9CA42A3C81E675D83EBA0DF35 +:1040F00058186A359467FA713A0C7FC6087E67AC27 +:104100002AD92FE1CF15B2AF7C5516C227BBA850D4 +:10411000FC75AC9E5734E4AC6FB885DE677F53E81E +:10412000FD715DE6FD16BE5196D0F32EB433A4CBDF +:10413000CADF774AB83CF3655A42F1718A664F1676 +:104140008FF7E975BB2253DC625509E7431FEBFA91 +:104150005441FD80F1631FF59AEE28A5F5117D8E7F +:10416000DDFB512BE635378B400F7E7CD85E85E337 +:1041700094A3BFA0627C37A4717F8D31CC5BB13D2D +:1041800066F98FEAD302ED4E8DB5237FAD163A4422 +:1041900084E778309FB1D4982C6159C9542AAB591F +:1041A00080CA1B5888CA1AD646E54DAC9DCA5AD655 +:1041B000C1FB7B92C3161F864C1D115C9F987B80B0 +:1041C000D33F7B48A6FD2693165A30EEECFB1ADF50 +:1041D0000FD5173C7EA4C3C383F0F0FDFDF0C0F5FE +:1041E000623EF7062014943BFF2C78DCC8C2C4EF73 +:1041F000935884CA9B5954E274A91C6C82F1267F9F +:10420000C0485EB0EBA304077F6750E27A21011E2D +:10421000559C3E12E5D82E9D7E6E85B562D92A84C6 +:10422000683FD3F11285E0E2606D8C7F2F42795FA9 +:10423000A33DF1B92FB9F29C0222FCF0EE3F515C94 +:10424000DB575CB92C17EAAFED7E7F0EC6C57D63E8 +:104250002B5FC881FAEB251FF0FAA8CA622BC0AD0C +:1042600049F8704E35C63FC4FBEB092F993CFEEC74 +:10427000B0AB6A918FD264A126687FD8160A61BB61 +:104280000D00D9941D9BDFE09AE87E2BCA57B752E8 +:104290008CF2AFAE20F0DF25B00E5109D523FF3DE3 +:1042A000293319F171BC44F71BDDDE629CEF8B05ED +:1042B00081E3C8E767521C610C0C1C2FE1EBEFADEA +:1042C00064A5DAB1921E9E5B922FDC7E1FCC6B0937 +:1042D000CA68283F2C09FE01FB2DB1740E2E86679B +:1042E000CB93FF68237C68401F68871AF4510FF452 +:1042F0008074B69FD3035092DC6D27E562BAA6EBBB +:10430000F6053E2E42508E97CE0A1DC0ADAB30FE54 +:10431000691A5FEC5A80F4F069FA1BB63F135D0F1F +:10432000E4F8D6E5C29217FFFA6918DEFBB505E896 +:1043300095DBBB011647CF4B5E744A48CF4BFEC29C +:1043400022C95EA4EFFF68463B7934D037E6DB161E +:10435000EFFAE901B42BF6A27E02D02DF9CDAF0F12 +:10436000601EA0FC6627C561C6BD713217EDD1097C +:10437000273B9B313E76E6D7BFBF86D39D91FFF9A1 +:1043800052F87BF4E744F1A147511E2F6D92981D1E +:10439000BEB75408F1BAD521E37E0FB0A45AE72284 +:1043A000BC3547D76AAAF37D6EF5FABA609C43A381 +:1043B000A1FF27FAFE745033243F15F88FF850BC44 +:1043C0006043FBFFF320E847682F3B91285FBB0E5B +:1043D000E1FE92457B6C32F2F5E276B3FDBBA48F31 +:1043E000FDE2034AF57DB983D8205CD72F71DF1B2E +:1043F0002666F57DE363F4FD55B00E29DEFF36F643 +:1044000085BC2B567A4B010E93251E279C28BA2C6F +:1044100048F74B9FCADD8AF9A0A54F2D536584C785 +:10442000A08222E4F7F747E97E6D54BE1EFBFD44EF +:10443000E0F93316F83D437C2FD4E776F74A81F252 +:104440007862AEC8FCE0878C7AB6FF3D0F125DA49F +:10445000CAB88F62D4B365B376B8C95E09B1723A8F +:10446000B740F6DB4FD2BB7268DC748585816E9BEA +:104470009D5D3928C7C2BF76A8A8B7D8E64CA2D997 +:10448000DCB0BA09F5EAD226B780F9C85B4AB95C54 +:10449000F11EF36F42FC9D05FD8AF8589A32B43F35 +:1044A000EBC18E344A1FCE33CEBEDEF7FACC64B4F5 +:1044B0003F774B8164DCB775F658CE65E3AE255186 +:1044C00000FA65E203BE638F74E03E1FDF2689E0D9 +:1044D00061D0DD2F1BB51EF7272A2C5265C375DD71 +:1044E000057204EA4B5F7EA6D981F555B4F315EC4D +:1044F000879169089F5D2F8B944F2A653B9ACBA1CA +:104500005E02F41901FAF9256B17914FED1E0B535A +:10451000E2E8C4A9243125CE7F4FCECF30D553D485 +:1045200001A6FE69FE1C53BB71AEC2B027D3B5EB2A +:104530004DFDCB5887B818D6E1073E8862BEB2A6BB +:10454000C8D4CECE73BAF7C37F5C3F71FCD9C376B3 +:1045500019F5DF988FCD7CE1EF0C31848B53E71B8D +:10456000E7B1383E80FFD95DEF9FC4E0B6BD8FFD57 +:1045700053DF29D5F74F0D64037BDA3FF55872AA54 +:1045800085C393C79D4A59DE63E5D05E72D8CA22BF +:104590000AF9694CDF2F1441BF2176DE22D28CFD4F +:1045A000C6A25C00B8F70B98E1DD7F9619DED94111 +:1045B00033BCAFA937C37B50C80CEF6B1BCCF0F5F5 +:1045C00086CDF0CC5D39C6D47F485BA5A93E6CD3BF +:1045D0004DA6FED745A69AEAC377CC31F51FD13E4A +:1045E000CFD43E6ACF3D66FC83584738FCB293B1C6 +:1045F00027BC97D2436174A9B9BF78525C8C724FC3 +:104600003FE7507CF8C11EE9210CFF213D24E2BFA9 +:10461000D9F91DC27F679D2B248C217A8806911EB3 +:10462000F4733997D0431F74F01B434EEA7460C88B +:10463000C7DEF8D6C073BBAE77816E5A0A8CF80815 +:10464000AC27E0F2BC84F6B75CE9E8B2FB918E06D9 +:10465000937F12C805BFBE10FD809156945B4A93AC +:10466000D0C5C07F49F4CF0457C37328A73637C3DA +:104670007A06623CCD7CEE655A8DF9DC4B5F79831E +:10468000928EA8A95E788C89A8274BDE539A53E0B6 +:104690007BC527F97EA744BFD0D7C9F319633FEE86 +:1046A000381086F99685B8FEF57719798BD0D3C87E +:1046B000A763419E221E59C71F1883F76D327F1FC3 +:1046C000F8271FEDD00696A422FF7C4BE4FEE89766 +:1046D0009620F991897E65734580EC4AB0BB07A2AC +:1046E0003DF7ECF0E0F9D27E7C32886FF12C233B71 +:1046F0007BBC03FC4FDC83C2DA19DA59671070B453 +:104700006FA1F136CC6B9D419B6600D062F343B73D +:1047100085695F15933B4B31AEC8FF92CB82FF8317 +:10472000E39E1278BCB14E7B77F02E982F082AC2F8 +:1047300067FFB9ED0CED87F38A2694F5EB7B3F8696 +:1047400011C732E25ABB1AA3542617A822D25162CB +:10475000DCA9D3225717A2DE5ACAFDDD8F7052A3FF +:10476000E93BA9244F1CACC31E972FFBBA8E0F8BBD +:10477000A3A305F383B7EB789827A8E487DEEBF9CA +:1047800098E20A7651A0BC9D3DAD602B8F4718F191 +:10479000836BC4ABB17FFA5AEFBD9E0F4D7127B644 +:1047A00033F38AF659C6ADF307DFE0FCC2905F4EE3 +:1047B0004DBAA612E5F5A5DFF994E2595F0FBD6E7B +:1047C000A2EF3B1ADE34D1735DF81D537BA7BBCB40 +:1047D0008A713BC07339E26FF1CF9C8F6E4479913F +:1047E0002490BCA9DB65FDE6B7D995ACF323FAFEAE +:1047F000C9C60EC2A7B1CE3F369EA07A6763279581 +:1048000089EB34FC7DA3B4ED0F915FDF0576E456B0 +:1048100077DF7EFF9B6539E41F7C4B0CFC91C7570B +:10482000A283701FEA97AD4CE0FE5DD7EDC80F7311 +:10483000855415F5636BF6A1B7311EF03B4B1AADED +:104840008FD547DFC6B8F592D5FAD9332DFA14FAC9 +:1048500067675253A9DE3C3C182C43D955A0F7CBCF +:10486000B470FBD41D1D8472EA535803FA0579799C +:10487000813BCB88FFE420D2657D06F897F0FC03EE +:104880004B7824EE33FA41D96BB7A17FF54152F84A +:1048900053B440BEFFF3DFF2BA8DF3E3B33FDF451D +:1048A000FCF73B8B48FE46F89702DFFFE5EAB4E1F0 +:1048B00039869B72834B707CDC2745FBE7E1F9D49A +:1048C00011B1B8E319FD5CC519272FBF59C6EDCB4F +:1048D0006F95F1FD1746D9A6F3EDB365863C7E646E +:1048E00028C697CED6DA19DAA9F07D8DECC417ED7B +:1048F000C46F59197C1F092EECE16CDC67A29C4344 +:10490000BE728B8CF687AC2AF39AE2ABE8F8A5422C +:10491000FBD49FD9C94FEF9EEF31BEFFF293493CC4 +:104920009ECBE633D3FEA65565DCEE5CFCF2A93FD8 +:10493000A2BCBABE2CB806D76BEC035A9CBA8FE265 +:10494000494F9729F43D9827C5F3ED225B81F9A8DB +:10495000C50E1E9FEA2B2EDDDBBA3FB9ABE3FB1879 +:1049600007FB34451982EF1BDF85793C8DF330D688 +:1049700067CC2336CEE5F9C288B31AF537263F3C1B +:10498000548F8FDFD1D3F9BCDD3A1C4E5A59C23E49 +:10499000301D6ECCD807A6D03EB00E1DCFFBCBF895 +:1049A0007A5FB229CB2C1C5F2AFADFEEDC5004E9D7 +:1049B000D48DFE79616CDCAC0C16C43CC8DC90F77D +:1049C0008557A0FD9E6D23E85C80310F63DC8E026D +:1049D0006D6F595CFC1AE88DF0189EE424FA58FCBF +:1049E000E29B7F44F970F773238A510F18EF25C2B9 +:1049F00017E04AFBCE8E5AA2043F80EBCB38EEF391 +:104A0000878FD2FE2E03BE7F2F3CCF0CEA20F97E8B +:104A100066CBBF45707E67B2992CE07EB8BDFF754E +:104A2000421889F4A1E73B7699E33B89FA4666C1CF +:104A3000DBD0CFB4332E2FECC67B0325D37BAF5D09 +:104A4000A3FD89F33B53506FDB253D9EA3EBA112E1 +:104A50005D7F0A276636A33D6FC48BD9F5A0CF7959 +:104A60007C92E6E970F03847B75E175485DA83E246 +:104A7000C1B330AEF806D7E3652C4CFEC868166C9F +:104A800046E3C72EDEAFF273EE7ABC68D521F2DBC7 +:104A90005182A15D3148FFFE0F923FFD6914CA9C0F +:104AA000805A8962396F5660BF955A2234C9A7EB84 +:104AB000BEF0B672F6961AE07B4F2F35D611D6F3BC +:104AC0002D7C3D46086E79F2E0FD189FD8AAC717E5 +:104AD0007292175950840D9B1F5E8EE5758BD40121 +:104AE0000B95D8F8B94BFD7F0942BDA2CD6EC1F838 +:104AF0008D55E3FEB16328D216CA8B9003FDC24CDC +:104B00003FA7FB7303D7873B59EFF87FB2D171BC46 +:104B10003A4E8F0C94A282EC8A7D6F6083EB389EB4 +:104B20001B7536645169ADE67EFBC30373F6A01EA8 +:104B30005976975C88A2C178BFC06F3E2F087FC7A7 +:104B4000E79BE21B8EE3F3E3F2CE0293CDEDF33D60 +:104B5000B176F2C714537FC6F213C65313EA119D00 +:104B600058FC09EF69A6BAB5C6BC8E736E58078BA0 +:104B70009FF772539EF5F1468F094E03A488094EA4 +:104B8000031A061EAFCEC4FD9743094E71F8665A4C +:104B9000967E3E12E094B952FB503F5FC34EC5C5AE +:104BA0004F50D09F32CD17BA67519C8FEC545BACFD +:104BB0005DC3B8796FF8BCD2F2D146B07D86C4EA45 +:104BC000396C0AC9C587832CD404726DDFC0790E95 +:104BD000941B8F366A6FBC8779E98145146F4895BD +:104BE0003A19EE734FF3C37353BC28628297559BF7 +:104BF000DE81F0B0B11A07DAC9D91953892E15A68A +:104C000051BD459E4AE339F4BC60E2FC56C0FCA2AB +:104C100071FBEE257DBF18C3E0F4E8185C710F1A34 +:104C2000392F172E8AE8C7D804A6C7BF38FCAC4670 +:104C30003B6BE2FB41CABF1FBE93CBF390DD83F514 +:104C40004DE166941B5E49AFCFD15A811EE4792EA7 +:104C500085D71FF90CE595333F0E3F2C860F9A1F21 +:104C6000E2CFDDDDFE1AD2ED3F8A9F2B2D5B108F48 +:104C7000D6CBB4DBB47AD44F2DFD865AE2CF238E47 +:104C8000F657AEF1239F60F2E30AECE72BEEC70A7A +:104C9000B3799E88E3278DFF93A5D5DE40749F16D8 +:104CA0004FE7BDD03DC6EBFE5574DF9A00AF0D5601 +:104CB000351BF9784393D0E3B9E44D7E739E3C3FB6 +:104CC000CC282E63DD6C8978058C7587E97C495981 +:104CD0002DDF5FE778BBAD0EDB7FEEB62944777A38 +:104CE0003CA2D4589A7B412DFA1B3FDFCCF3629F44 +:104CF000BB8171000EC2828601C86FD6CDEFD3B9D9 +:104D00003C0C53A3DE1C167485D06E1EBEC3C2A21B +:104D1000717EC7A83D492C1A478F23DA334CF53BE7 +:104D2000575E63EA7F7724D7D4BE70D37053FBBD40 +:104D30003B8A4DF5BBDAC69AFADBD9FDFB4760DC4E +:104D4000448F37A7E3DA7AA00776C246E3805A2277 +:104D5000F93D8CD962E3C23AAFABB599BE634D68F9 +:104D6000EF2BFE91183F39ED37DFFFD07D2F49B58E +:104D7000FB8AEE25197AD04979B0160FB70BB2B37A +:104D8000B85CAAAA09303CFF67E00FCD532E571438 +:104D900001E9FBD7BA7C32E0603DDF5185EFD9BE37 +:104DA000E2F431DE6D8968B46F6011C9D156378C79 +:104DB0000BE365DB021EE4C732A4839188F7591E1A +:104DC0006CCF7073BCDF1D114DF0B12311B9399D4B +:104DD000A01D61F5E408E87F817C0AA5F97B80FFCE +:104DE000491BE1CD38BF9E08DFF1E7CDF0CFF807D2 +:104DF000E1DF7FB4F91CE8D5C2DF166E8BA6C17A5D +:104E0000AC3253304E3371413DED17B27A54825774 +:104E10008D7EAF82D5C3CFB126EA8B2D8D2C1AAFF4 +:104E200097AD2BE44A46F982456107BCD7B212E63A +:104E3000A820EA820EC45B8BA7D241E7D52341CAE2 +:104E4000D7AD003D84F36DCDBEC1817EC017E9169C +:104E500086E7965ABD410FCA85D62D5C2E080B36C3 +:104E6000D5E13C5AD3B3BC76D22751A785F29F61D6 +:104E7000A7C543E070F0322AF1322CF1768DCAA139 +:104E80009BCDFCCBF08833F4CB0C27253CD72CD81A +:104E90007FC468EE87A7D76498DA9DDA0073FF3085 +:104EA0003B5A506A9026D18BA54E8F6F229F4A7A2B +:104EB0007E5272AF0FE373798C5D46BA7132AED712 +:104EC0005898D38B11EF94982DC6F7400F392BCCFF +:104ED000F4E24CA4179D3F8CEF67DB38BE560C61A3 +:104EE00074CF53E27C8405351EE42B2F5BCFF0B9E1 +:104EF000D76F9723944150886F24C0D713F05E8BEF +:104F0000D646F24FD2EF69489C67225D5DF5BCAF93 +:104F100092CEBFD11B9DF7A21713E97CA510F6CC4A +:104F2000433FEF1D81F645AC70BC91F51ED847920A +:104F3000F30F59EF613E4A97232B9C3CFEC05CD394 +:104F4000F573C68CF8DF2ACB7ADE5E11305FB67659 +:104F5000DC179D18BF593FC943F6B761AF1AF77107 +:104F600050084F8CD509C4400719E549EF10DE9968 +:104F700052817E16F4D3301E9B01626B3CF8FD1902 +:104F8000F357DE2FC6C5C3D2F3DA581BCCC779E17D +:104F9000318672CB99270BB86E679E7A59F8451AFD +:104FA000597BF565EC1205EF69E9691FED6807ADFE +:104FB00043A9613DDE0FF3B3D17C9F82DDB007755D +:104FC0003801080EDA8B7AB24B74B8B8B83CF28666 +:104FD000615E71747169FFB0E95E13C30E913D7C2F +:104FE0003EE9D57225E6BD6499FB0B19A027EA605E +:104FF0001E5EFDDE99C4F17E8BEBC1FC5F0DDF0F01 +:1050000097D8DED1CB7ABCB89E1EEE65FBE7AF87A2 +:1050100059683D6EEEC765D468AC0EF12BB531947E +:105020007F4EE6E0F30239129FA77556F7BC9E8DBE +:10503000C67A243DBFABAF47D6D4B4BA1EFA27AE6A +:105040000768F2CAD6E3EA59BF24F6FB57F91FBD39 +:105050007F97FB19ADE837C5D1BFED21FEBE4D0AE4 +:10506000B2AC383A11C68834CFE4317C5F86DD6358 +:10507000F6AB6CE14BFC9E707FC3EF51F0902CDFE0 +:105080003F9552A0E8E7C5DA28DE983450295ACD7A +:1050900062F3B947D492C7E84114F29BF01F5E2C2B +:1050A00013ED71C095E1773293FDDDDD8E7E95A421 +:1050B000CB1329E6C7FE53ECF32B2D113FF1FEEB8A +:1050C00025ED36B55E3F4F57EE29A5FD2609F0E2E6 +:1050D000FB9ED431DCBEBF470CA8089F24168AA2D1 +:1050E000C9B542A88BE6A0DCC5D0B98AFB2983519B +:1050F0003CF7BB02EC5FDC1FBBC22D3751DC00FC70 +:105100004859E570910CB8C0779CBE6F84ABB89FCE +:10511000D995E6C1EDD3BBA286DF89FA57CACF6A1B +:105120008A723F93FC4E032F493ADC9DBEA52CD7D3 +:10513000CDF378F87E72F90EF25B815E79FF6AAD8D +:10514000A39B4F72B0FD87E4C7CA39DC8FB5E7D5A2 +:1051500074C4F39195FD347A00ED5C5D9F4A9E80A6 +:10516000A93DC90DFE19E885A482B8B8048BE1DB1E +:10517000A6D3CBC58B717E2FFA67A02F301EC83CFB +:10518000FF5CFF3711BF869E0540D2FECE5EE5C2B2 +:1051900015FAA91345D772E493B51E0BD9956B3D4B +:1051A000CB3DF3A0FE689EA422FE1EF5CF5B4976A0 +:1051B000B787DB8346FBDA57446A4F4D901B9867ED +:1051C0008FB73730CF1EEF3FAD2D9F7A597D991D98 +:1051D00034BF7F4DBDF9FDC72B830F237D0E0A9988 +:1051E000FDBC6B1BCCF6E0F02A6D25F65BE92DEDDE +:1051F000F17B9F546A8F60FBA37E3E1FE6EF195E32 +:105200001B51FE0D63ECFB8D0E2AFB9AFF26BDFFA2 +:10521000137AFFCD8D32953F68F45069C0FD9C52E2 +:1052200013C4BCC28FF0510FDFB537FCF71BD5712B +:10523000F1E86EBDB8B348B787F87D7097E295CBBB +:10524000B94563023FE472EEF01BDDF40D743AF4ED +:10525000E37B2A7F82F8CBB3901FB572DC29F2037F +:105260001EF52F9F857CFE7939E059E97D7DEBF5B0 +:10527000F5F5058756BD9F51770CB005E97E095DB0 +:10528000FFB6EA72D368DF3786E7911C83A15F41DE +:10529000ACDFC3D84F8C7D6F08FBCAD113DDE37E32 +:1052A0009A78FC5FE9FC8C7E6BA52E871CD7DF7695 +:1052B000711DB7F31407E97710575DD7027C6C793D +:1052C00032DD8B117B1EA4FBA6EC791991F87BAA29 +:1052D00000BE35B8DEC47965489D2B73A17FC6B189 +:1052E000CC42C014FBAF31DC4EC8D0F7811DF42E88 +:1052F000A87CD687EF676C417ECCAC31BF9F3A96D5 +:10530000CBE99543E6EDC77E9FFB2D11E6ED7D9D34 +:10531000B893BC9B4F108EFEA997DD2F95D81F2503 +:1053200071343FBE9E91501F90D03F27A1FDFA845B +:10533000F6A284FA9884FE9509F59B12FA4F4DA8BF +:10534000CF49E83F2FA1FD9E84F6A509F5074DFD45 +:10535000875E9893D6137D25D28DD10FED188C03DF +:10536000DB74FCF5468F8FF92B068C45FACEF1F7EE +:105370002779B333A347FB09FE3AE2E3F815D0BF20 +:10538000A77BC962FD237A9C3F70C21CE79F75C250 +:10539000940FE8E57BB171C2445755B5C1CACD48F9 +:1053A000E76E0BDD37919DA5C7E76AE1431877618A +:1053B000610BCF876BB764037FF2D450EC3EBA9D8C +:1053C000BABD686753D230AE606B8F521C42583002 +:1053D0004BC3FBC75A77834E80AE3788E54D74AE1A +:1053E0000BEF19063BA2A5A38DE20AF9D93605F702 +:1053F000710DF794527CE750D045FB4FD94EEEB774 +:105400001AF19C11ED3693FCCF4FF06B3313FCE097 +:10541000ABF573A78CD5FDDC62E6C3FDB7DD7E6E10 +:105420002FF759197EEEE355ECAAEEBDB2D530B296 +:10543000C36C6E1ED799B8A0815E4D3F2652DD56D3 +:10544000CDDBCFE9F0BF412CD88771A2751E1E2796 +:10545000AAF104294E64E0430741773C685D404D62 +:1054600047B966D3E341808730FA39ADAB381E3097 +:10547000BE4AF9330F8FBB65DB02B4CFA715ECA38F +:10548000E580977C0F8FD3B2880E5F810908FFC437 +:10549000B84222BC7B8B674A09F6426FF06F1AABA9 +:1054A000C7333359F1BF12FE428E83E0DB3A84C327 +:1054B000DFCED6517CE873BC47538DDD37D75AC059 +:1054C000DB8DFDC50812B47F1CB60E0DE3072D025F +:1054D000EB5AAEA25EEBD4F0FDE46C91E1FEE494F5 +:1054E000EA36161FA74CF19BE196A699E9383901D7 +:1054F0008EBDC56BAE148E3F1CDB4B5CF89F0C471A +:10550000236EF3C8D8E02F50CEA5875913E69CFA36 +:10551000CFED62FC9E15BE6F794D3E972B6BF2B9B5 +:105520001E32E2662E9D6E2B669E70C4CBBB165D4E +:10553000DEAE427B0AE48A4D0B505EC19A6F532265 +:10554000A88759348CF6A8A4EF6B1566D6D0FDEA6F +:10555000ABB3791EC288FB31B1363CCFC7F18AF9B3 +:10556000655BFE5C8DFA0D642A9E2B5D935F49712D +:105570003627D03D433F46E5FB1765F8AF273BDEB6 +:1055800099B0EFDB36D0BC3F52EA63BFE3DB09786A +:10559000F99CCD0D4B97F1170CBC58FDDABB63E3BA +:1055A000E2045781978F092F11D66483F95CB3C841 +:1055B0008C97D61A6EFFB7D6CCAB8C20FDD772BBBA +:1055C0002209E1C7F35142BC5E34F012D1EDDC7523 +:1055D00068E7027E9E453B17CAEC5BCE86E7E33860 +:1055E000B87F1CF920FBE8CA0A18A425DC155E81E7 +:1055F000FE1FF867C90380FE6BFE125EE5A3FBADDC +:10560000C85FB37D057804BB3775D3FF09DF8D7E96 +:105610005E1DF70B336EFE98A1DC5A5DE1E8A2FD3A +:1056200055BA7DA8E0CC10BFFE2E6A873ADDBBBC20 +:10563000EAE968C00B65EBFEEC49785F7D866A514C +:105640009D0ADA5FF24DF9306E7A814545FBAB7504 +:10565000B93CB506E3EA05928AF72E5AC36D51A408 +:105660008BCC0B69E0623136776C30B31CE156AB02 +:1056700008B8AF31A38659703FCAADE53C4EB1DEE4 +:10568000AA66237C36F493290F5E55AD6423FDAEE4 +:105690009FB4E0DA9ECEC7C7F0A3097A5CFCAACA21 +:1056A000C4F713C7B5B39086F0BEB19C6935D06E10 +:1056B000057F1EE9D9BD7AE0E0AD00EF96FEB71395 +:1056C000DEAD79A914F7C279D6C5F1DBE472F3BE79 +:1056D00005A59C6894293887FE3CFC42A5AA3F2F6B +:1056E000D0EBF9BC3EB15CE1714B4D7F9EC79FF79B +:1056F000058FABFD4EE2F8B794EBF76530C5C8BB3C +:10570000EE4D29354817E31AC1C988C758DC83E72D +:10571000918C380793E0BD94B83C286E7471E3F522 +:105720007236DA8FC424397B661CFDAF9F3873163E +:10573000D2C3FA84F3B9FDCAB93DFFB772C1B83715 +:10574000DD89FA793D68031CD7C0CFF49B46DE5E45 +:10575000037C59B1A0BE12F723B6BA75FE735B285D +:105760000EB9AE86917FFD79F57211CFD594B12037 +:105770009D0B2B611A95C5183986F257BABDF50BEA +:105780005D3E16E2927369BF11D96923C706EFC562 +:1057900075E7208789C81F6A93E4C57BEAA768FC80 +:1057A0005E0F36DD9A853F7EC1FF12E342CBF4F5F2 +:1057B000DC23069695F723783101DE7FA632F000D0 +:1057C000D6F323EB2AF19ABAC7ABB46F62FDDDB50D +:1057D0004B88BE6C3A7D0104292FBC7E8842E7F7D6 +:1057E000AFDBC6E3AAABF5713FF16BFF8EF3DBAE27 +:1057F000E3AFFEE3361BE6CAFD91505512F42FDDF0 +:10580000113880A56F8F7A00C56551BB5C85BFF3E9 +:10581000F14C65B015BFA7AE14F66118286E1E0FC7 +:10582000E378EFAEBDC344E7885FBACF9BF17C97C6 +:10583000813726053DF83C060F7E9F2993029EA9DD +:1058400071E7FC5BFBF58CEF467D1D9BCB8DFC3837 +:10585000936C5926BADB7C39BA7346340D635DD735 +:105860009F68AF44B935B2A36B3F4EA3E07047A524 +:105870000BEA2FF883CFE0FBF3A2AA0D636AF99D30 +:105880006DFBB19F01A7FCBC360B92EF0B7EED596F +:1058900084C7BAEAF5745FDFE7EFC11CBCBDEB0952 +:1058A000292F310FD746EB18F39E390F07F4A96D56 +:1058B000C5FCA11E1F8292FCDDF5A81F042A2D98AD +:1058C0005FFCBC9AB4265B5F5399DC939DDDAEEB25 +:1058D0008BE7757D613C2F32E21A8C758A59BDC702 +:1058E000270FC6E8F0A04E87043F2546E787E3E987 +:1058F0003CBD5A1550DE1878AD8FACBB61008C975B +:10590000BF4D29C2F8861A95AB1034F5DBD229DEDB +:105910007F54C7DF27FE4007C9FB6A85F23B6FA1B2 +:105920005C8AA3F3672AB537B01DE8EC1896C6F871 +:1059300089E319EB7B5D1F17F0F316F607BE3949B3 +:105940007C136DAB74717A7D1B9F2B4C21BCAD3BDE +:10595000CC648C23ECAA3E1BC5737E9FEFE0726083 +:10596000B8BFB312696A941ADD6F81FA887C85F634 +:10597000A526E6C98B0F9BE365403F1FE1F877E65C +:10598000856D7CBF7E9B8DE8FB0AED07EC996AA6CE +:10599000E72F2E2B47AF70DC41A303FF17E1A08454 +:1059A000DB884FAF783E5769F73C3946738EEB176B +:1059B000BB479BB97C267B36751CC7CFBFEBF6AEC9 +:1059C000D51F90B13FABE67ED1D57E0FDEF78C437D +:1059D000FB4C0BD0B908B0BBAEC1F1D23B8526ABB6 +:1059E000B7077B58D5ED6155F7B33D7C1F0CFCA57F +:1059F000A23F67F81989DF5DA5DB5B8FE871C5B64B +:105A00004685CAF58DF954AE6854A97D6DA39FCA29 +:105A1000EF36D670FB9905C9BE5B53C0E37F8FE0BC +:105A2000A64D8A5FF13CF5507698E26BFD8AB87D11 +:105A30003E71E661B2C71FF1EDA738613F5B1BC540 +:105A4000E3D7801D86FE211B182747F02ABB91A7AC +:105A5000B43BF53C374A046126F7AFBE3B88FB4FA9 +:105A6000B6826F8673E07B47C05F1240D7DB7DF75D +:105A70003053FC3F613C3BABAB7C02C70338215F3A +:105A80000C3D787725CA2363FE97E0C3AFFB4FBA7E +:105A90009F9A517DF9FCB72DA10EEBD6048E07928B +:105AA00067433FFE6D8FF146A9D662E2B37EA57CC7 +:105AB0005F4BA2FF6294691E73FF350595E4A7183A +:105AC000DF5959388FE2B2B82EC4FFCA111CDEC6A6 +:105AD000FBB6DA0479ADC5F139AC738DEFCAE29D3E +:105AE0008FA8BC9F11AFC2F8557CDCD3C8F741BF6B +:105AF000BA169C9FCC28BF6BD8DB2DF86FB02F4017 +:105B00001DB2F87D7456D93CBFBEE693181FEB2B2F +:105B1000EE66CCCBE827491ACD5BD2F3AB43D8096C +:105B200007C6C313E7B15EE7EF35BE79A4B73E07FA +:105B3000F8A25E5C237550BC17E05D139F5F4F8C2D +:105B40007FAED2DF7FCCAFAD473E1EFADECBB47F57 +:105B5000C6E00F433E18F031F281DD74C2F87CA834 +:105B6000EE8DC98BC7D3F9B9AD7093C4B6BBE9FC50 +:105B7000099D47191EB6CB78CE395CC9CFAB846D71 +:105B80000E19EFB57B2C3995F8B4E1640AF1D19781 +:105B90009670B015C6FBF1382FFFBD2841A3FDDF7D +:105BA000C325568DFCB5B2846D5D4EF10AB6C36255 +:105BB000B6837F8CF22919E386D05F047717F5E46A +:105BC00066FD77172ECDA3B29D962C5DBE811CDAA3 +:105BD0003D4E30F284BBC7C5E5098789819F237C90 +:105BE0003EB406B2F6D17B71F708C1773CB7F1FB42 +:105BF00030D87046FB3E9212FCE7C47B2C12EBAF10 +:105C00008FE3FA3FBB7B7F772409E17F6E07DFD705 +:105C1000CDA410EBE91EFA96C6FCE3D571F93383E7 +:105C2000DE3F181B3C82F3B53514E8FBBA4B69DF45 +:105C3000F283A3B5D7681DA3B50E5CDFDFF0201E8D +:105C4000949E3BF8BE86E5C9B7B3F8FCFD9F75FA94 +:105C500088CDAB3D09F9F6473B8BFAE047D5342FA9 +:105C60003BCC9FFC83061FCD03E6770ABF6F6D1800 +:105C7000AFEFA30E913E990DFEFF38CAEF68EF9982 +:105C8000E6F735BE8F6479F22D2CDE9FFBBC17B88A +:105C9000FD70C7E5E7D7D2A898F6791B70FBDB3813 +:105CA00085C72D1BF2689E52C3487D7E4C95CC76ED +:105CB000C2DFC65DC64EF85B9976611CC155EDC466 +:105CC000738DEC4736FAFD3A3BD3F441F87D22D68A +:105CD000004BC7F3EB36E49B5C3ACF40EDC92C4A4E +:105CE000F514D649F53494F8504F1DCFF9211D6FA6 +:105CF0007811317CA8523F033E0E7788CE99B81BAD +:105D0000646139F22D30EC58F88ECB3590DFE35AD0 +:105D1000090E8B1B0773D07C851D87FE2A9012D637 +:105D2000CF4338AB858BC9313E36CE8DD9C212E810 +:105D3000B2BECF957D4B0C075BBCC8BFDA2C9CDF95 +:105D4000303178EDF89218DFD8A4B087FF8E8999AA +:105D50007FC4946D64375C2DDF807D791D8EBF49D3 +:105D6000D00A5FC27965DB7AFC3DB0EAF19C4EDC7B +:105D700037723A6F9DC4FD9CD60A2E174AC7737FAF +:105D8000D63F9EF3FF18BD7FBF715A098E3F653C19 +:105D9000A743FB38AD6C7CBF587DF7586D747C3BD6 +:105DA000FC55639E51F2717A90A6EC65DC2E65DBA2 +:105DB00084383965C825A0A32A7CBF5B9ECA11829E +:105DC00083319EBB8AE315EDAD2971FC1FD0E76BD3 +:105DD000AC07EDB9F87C6977FBCD7A7B8DB97DCACC +:105DE000788B6E0F6A53F0FB9F956953C7933D3CC8 +:105DF00097EEE510C2B9FAB9184E07B4C7241BF3E1 +:105E0000CE8159D8CF39C447FC659489F0FEA4529D +:105E10009B3B9EE783783C36BFE7FC8C0DF3C0715B +:105E2000F71718F91E437F8356A47BDC7B7B3FF674 +:105E30009E41AF232D1301FEDBBD12D99DDB85C032 +:105E40001C8CB385BD9CFFD6E17E3CF85E3AEEC764 +:105E500003FE7E445FD73AE37C566112C5430213CA +:105E6000028B7723DFDC9CA42E872EDBBFD74AFB77 +:105E7000029C5E07D90BAB2A387D2CF3D6BC3C03C1 +:105E8000C6754F99E6C4B2DF8C3B27E1DD5D59B39F +:105E900097ADC23AAE6F3E7CA7FFD79B5FC6E79E29 +:105EA000BA0DCE99F03CFBAEAA348CCFD9585B002A +:105EB000F79BB057F8EFD84DF24A81787DBDA982A3 +:105EC000E3714305A74BDCC775B93853C4CAE95A17 +:105ED000AA0A2D8DBF8F6CED78919F2BAAE4F37EDB +:105EE000A2F1B0BC02E4B3CDF3DFC7AAF9F9433A9B +:105EF00067D42A81AB87F9F3B0430588B26B444D70 +:105F0000C1739DAC99DF73BBB67CBD23FEFB4F6BA9 +:105F1000D9FC3E6DCF113E4E58EAEA8CB3DB7E30A1 +:105F20005ECF33A94C457E95326AD22E377F635EB1 +:105F3000F8D77DAE00F0F144FD59D6E2A3BC7A0853 +:105F4000E3A303A67F41760553F83E9896F44805EF +:105F5000DA73CF79A5D0566AE7FB1F07045AE977B1 +:105F60006ED2EA13F6BBE8E74890B4789095EF7FDD +:105F700049D2BF97A2EF7732EC9AB5EE08C3FB4443 +:105F80003BEF7429740E3CDFBC0F667FF93C07DAE7 +:105F9000BBDBE139D2DDBEF17C5FEF76BFEA44BD09 +:105FA00092941E588D7994A4C939962640E53AFDFD +:105FB00077D9B6075427DEFFF6E4BCD03D88AFD6CC +:105FC000DAA249F8BB36DB363301EF31DCD656B9FD +:105FD0001AEBB689924CBFE7A571FC0DF3F0DF0711 +:105FE00069757438B2E1BD35B59549D7B9B09DEF43 +:105FF000ABDC260B35F1F7410DAC579FE1F68EBABD +:106000000A7F3FC35E5E2462BC2ABFD2A6C7F12EC0 +:1060100038F0FCE373214946FB6B5DF27792F0BDEB +:106020003C801BEDC7D6E3FD425B05BB48F77E57BE +:10603000EFC7F6349F4D417B332D64CE0F38721A73 +:10604000C84F3A8FF908C44742BEC0AEFFFE50E2C7 +:10605000BD09061DAC69641D2BAC979EE3F860BCBE +:106060009E57505921EA8D89E2C9195FC379D75BE0 +:10607000E83E8DE758644D29D4CFD74B44BF4FD667 +:10608000EF7EBD14D6B9F9A197D2716FFF53A1DF8E +:106090004DC1239F199AC856C03A7EB0E2CFEBF0AB +:1060A000F9D30D9FBF8ECF5B8575814A78FF9957D5 +:1060B00045B509EACF008174501C4D23FF27458F59 +:1060C000E7B4DA005F717CEA9FA0EB0FBD6C6D3C1A +:1060D0007C0CED9F48630DAD634D63804AB9A1AA66 +:1060E00003BFBBED70600EFA612C9CC69207C7F22D +:1060F000E02E91DD5481F71F4CD8FCB4C30934B9AC +:106100002F23A9D6A8A35D7FEC6860B21AAB7B876A +:106110004C7BE299B8F6ED82B63A17DA0B58EB1DD4 +:10612000D54EF48B0327E6C377CFCB27C202EEFB15 +:10613000CED8437647CA086EF32615060328F75CC7 +:106140001B2D44F7AE82402CAF4EFF0FFC18AF7FE3 +:106150007D66FE66FA3947834F2B23761A3FB5C614 +:1061600046FEEC3AD7FCC07500C7ED79FC77388065 +:106170009602F1FB815375395A3041DF4FBAD11283 +:10618000B6235D78007EA679E87A29FA1943BD64C2 +:106190001B32AFAD02F9FF7B16FA7DD44439628C15 +:1061A000BB7DE3D21EEF2B36E691F81DA3BDB4C232 +:1061B00088779ABF9B5877E4D46B77F9F8FE40CC88 +:1061C000BBD903F55A4B9C5CB24D7F90E494B15F10 +:1061D000CFF0A3C8E402FA4D6B4826B9690B7C9353 +:1061E000D5423F4F15BFCF830D0C86F11EAB543DFA +:1061F000DF3331C7A3A17F91A7E717D7EE9F6D517A +:10620000008743A490057FF760ED980E86BF9795B1 +:10621000E2EF62F8BB76C3CA3BE8FE759BAF239AF8 +:1062200006E3E46E640ABE57B351B538916F5F114F +:1062300019DDC3C9C274EE7ED846FE7B38A93E1074 +:1062400030399837F6D3EF62197976E033F2FBD321 +:10625000566895181FF16A8E2EBCFF6CD84A2E5FC7 +:1062600072CA199D8331F2C7C374D1336CE317D15D +:106270007A683F047280F6396CD6EDB7EE3CBBF914 +:106280001E95BC04FB2F4D3FBF9096F0FCEE0966B7 +:10629000BD12D17F6F51615A12EA31857538AEE374 +:1062A0007A95F5640F1AE50F1BF9EFB9FC67A38324 +:1062B000CA9D8D32FD4ECCA9460FD5BBAA2A1F9888 +:1062C00080F2F470680ECA77835FDF5D9B361AE94F +:1062D000EA4E31B21CEF29D8FD9BB7AE4D027EFBD2 +:1062E000D1C053532B789DF8F13FA3CF67D4AAB107 +:1062F000FACE63FBA74E8EABFF24EF00E5AFA89E5E +:106300000EFEEE5336BAD76005D4C1E4663FD6E33D +:10631000F1A3D659025B51AF6738E85EEEF33E99C0 +:106320007E6F41CA8079223F5F97B105F979B7CE78 +:106330004752600A8FEF25F22F92A0B13F9CE13EB9 +:106340008645D1AF7C7CBF69A6E752FEB6EAF0B7BE +:106350007AA4BFC4CBF7C713E07F9E95DF5AC97AF2 +:106360009407E4D71BF2404C713B51FFB734AE2485 +:106370003DDFED8FF5B315C6DB05D6D4D0BC9EEE60 +:10638000A59574FB657895B66342BF98DCECCD0E9D +:1063900035E45FCC2E0DBE80EF254B1119E3CFC93C +:1063A0002A598E3DC83D339F03AD53DEEA99361E10 +:1063B000A75BF3C854F283D7B41DA5FDE6DB3716FF +:1063C000AD767139D08EE3AEED0756FFA8ABA73797 +:1063D000A39F415F46DDA0B394A84D89A733A8478A +:1063E000E2E9CCA81B7466D40D3AA33AD2D9384E50 +:1063F00067AFFFC61609E7C5D1D91AA0B382BEE9B7 +:106400002C45E3F2F15F4D67EF4FE8D6F7FF4FE918 +:10641000EC17FAFA80CE98D6AF77F9F18F96FF0B8A +:1064200009361F1D008000001F8B080000000000BF +:10643000000BA5597F7014D51DFFDEEEDEDD26B9F9 +:106440004B9690E091066673E4C70151B618214A55 +:106450000A7B7BD14187B647AA82943F0EA423587A +:10646000ED5C756AC38C724B4230A42049415141A6 +:10647000DD844B8991525A6BC599B69300D3E2B42F +:10648000A37144261D9D4E04C7696D1DD14A6B67DB +:1064900052D3EFF7BDDDDC8F5C428861C837DFF790 +:1064A000E3FBDEFBBCEFCFB7E160FD75233E80BCB4 +:1064B000AABAA218D231FA5995A23F494487B7B86F +:1064C00053FCC746AC40BF09A040B214B10EA906A8 +:1064D000600280AF16C78580FD8CB1DF1B950F175A +:1064E00003B8063E8531A4BD4A345F41F9BD75C28B +:1064F0006A0BE9AD22FEC2F9BDA6D2EDAD404A530A +:106500004A00E467946E13F9D7560900B84EA43ECA +:10651000661CC1F69A06C1A271F24A81CDBB520730 +:1065200016B868925E38770EC062BE34CADD1B238F +:1065300039BD7B3DAA17FB5DC153A7B7E2F8E45C08 +:1065400011BC0A405F0260A006A010540116A05CB6 +:106550006B04B6617FA8DEABA878167F7204069044 +:106560005F18F3C57525B5AF7DBBC03269BDE3D2F9 +:10657000C5113CA78CFFC682D41915A27E1C6F6181 +:10658000BB9C3A7F559DF0BEF706A490D65E41EBCA +:1065900066F24B757F09E1041A686322C0138953C0 +:1065A00070290DEF423CE0C9DA89F7723962D4EB09 +:1065B000A5002AE8F9D1EB717F9D4D4590639C437E +:1065C0009D733B7C28193772DDF77E1D0F89728F12 +:1065D0001A7A23DDF335ECE70EDA4FF25C7C830B9D +:1065E000F102B3080AE6035CDA5F7433AD73AF6897 +:1065F000B5B810CF0EFD56353F0FE0A5F28B4D61BB +:10660000CE5B32E27062E057C56BB4147FFCFCE9EC +:10661000A66FA6F1BFA83C8308D9FC2C809F3FE75A +:1066200001B805E01EE44D097917AC3F89EB2CE970 +:1066300012A23D48A562D9A47D7C5EA7748B15C4C7 +:10664000074047DEBFB0B85B74911C819D538AAE92 +:1066500005C20FE09CB2CBD15F91D3D165001E5B28 +:10666000AFDCF0C0C017A817B20BE2B303D85027B5 +:106670005D1EBFC720F5EFFD54C4FB7607A48FD283 +:10668000F5E00759F7FB39347CDBE0DD5119F5B64D +:1066900088FEC2FD199697E975E16A8FD581BCE83D +:1066A0002FC98B21CE6D89766557550AE7B652CF33 +:1066B000D76369F8BB0BE39BA339EEC3D2B9FD2CBA +:1066C0008EE88FD1BD84AFDDCEDB69DEB5DAF9C2ED +:1066D000E44EA10C5BB7927EE5D857C4C6DD2742D5 +:1066E0009CEE2B1C6CCEBF88F498A45D578CF419DB +:1066F000D2BF9B26CEF3347F6778CBEC345E8A0121 +:10670000F9134FF3DDACFDAE95FAB3B45FD08A0157 +:106710006E9EDC0ED82948BF5702A36E4F7C432ED5 +:10672000FC7684F93EDDF9886F0EBC9648461FD989 +:10673000C7EB91683F51445C253F8078BF44FC0C17 +:10674000F0FECD4CFC6A870E0CAFC9CE215EFD1C5D +:1067500083F639CE649DE3EC0CCFF1E64CF4C66FC2 +:106760009F43AE0618C27380A4317F160EAECFA72A +:10677000F50F1BD13BC80F1F7BC30D3DA822BBD11A +:106780009F5D74E7D293B5C35B6ECCA5277766B4E3 +:106790003F99800B8D6E9223333A478AB98A71BD37 +:1067A000AE84C2F84389C08546B4BB7D0995D12328 +:1067B00089106B3F90D018DD9FA867F49984CEFABA +:1067C0000F07E3F713BEB41EC9997327CA4FF3032B +:1067D000DE809CC11737E23A697804360632FA0B3C +:1067E000EBD48CFE79F150065FB246CBE0EF5A193C +:1067F000FB9270571AEA33E4946DD133C64DD73EFD +:10680000E64BBA14667A032CFED5CC078B70F7865C +:10681000CE0DBB3008784B3C26F93B2897FE39E279 +:10682000C80F327D2AA079A84FFE709A3E9DD1B93B +:10683000BD3D2EF17B4C062485E27CB292E70367D6 +:106840002B9E1A267DD9D7190C52DCF622B6E4AF5E +:10685000BDB3D41E1AF74098C7A5649DA0517CFE15 +:10686000FCBCA861F003097C6C1FDEC0B9F3E9E74A +:106870001C3F8F327C7E579A9F6E7E6F9375360DCC +:106880009F60D857F26141CA3F5F21FFAC4E8ECF67 +:106890007F1231EB6C15E90DAE5735F9388F1BF3CC +:1068A0001DD483DECAA63B16E27ECD80A455A96C1A +:1068B000D9B33EF4FB148368FF7AA5C0F0F5D7AADC +:1068C0003D1DD8B66415F77FF78BD19B08BF7C8838 +:1068D0000F006BE7F8214EAB294E240F0AC0F2A639 +:1068E000867819E9DDB12EA30872D8A7435B138817 +:1068F000430E7B19F7131E88E58AEBF785791CE9AF +:106900003DB894EDF37115E222C6DF5E291E65796C +:106910005639BFC7DE06AD8CFCCFB17D9EF5749FA6 +:10692000AD837B40A5B8AAFAE0529A7E7C375CC161 +:10693000E3AE2FED5EF0FF51DAFF14F9CB34F6CF62 +:10694000F2815B075FB64C1F13FB673FE1CC9740BA +:106950003C639B482F53788345783BF85EABFC6CD7 +:106960007DCBF667F5F67DC1993C6D00D793505FFE +:10697000F3E8FE954C3CBC9D82E9CDA1BFD97AFAE3 +:10698000E3AFA8A7A130B07B44BB4ECCD0AE77DB41 +:1069900076DD4ED4B1EB7EDBAEBBF230FFCA717F49 +:1069A00003B6DD76F9797E56750E421545A9FEE7E8 +:1069B000C25CDF9B572A8C561D34558A33D3F5535E +:1069C000CE385C294479DC64E3DA5DB9F727185CDA +:1069D000BFD1CF977D8038F5865C9667094E1BC581 +:1069E0007ECCFF2A29D71353750B6A50D95A3FF131 +:1069F00012E725E471DDDE7ABB5F7678BBDFC7C7BF +:106A00003BEBBD6C9F37F93F91E191BD9F576DBC4A +:106A1000BEB520FE10D9F560D76D65941F252B7685 +:106A2000AB828F70E2FBFD97FA87AD109C1C274F5D +:106A30007378B8F1C6741C2C362F150F1B597F7B49 +:106A4000C5B29C71DDA1DEE677DFA1719EE67FBC59 +:106A5000D388799657C2FC9FE607A2C2265F0AA791 +:106A6000242D81F5D49B76BEE1E904DDCA817797B8 +:106A7000ED4F3C785FCC3847EF855728AF1620DEC6 +:106A800081B98227BA6F482C4CC92DB4E57AEEF44F +:106A9000BECFF4126226C509AA43FC53E87F61A564 +:106AA0002674E2FE168CAE13C82F551D1C8118A348 +:106AB000DA94E73D98809353F9F5123B6FA5FD8971 +:106AC000B8BFFD12B7919286B8703BCAFF242CB3B1 +:106AD000F3D504F8F94BC676AA6BD3D60383DF6FE0 +:106AE00029C9A94DC949DA724A3B8780E47C61CB48 +:106AF000F1931C9C5F4A726A27CAA9AAE7EB8086B9 +:106B0000FE792EF2525428CE813BC04E6E5FA8A073 +:106B10006CFF58B7929ECA5F8ACCAF35AFFC246633 +:106B2000D6921D68651FA01FEC09C394F971A1E1FD +:106B300072FC499EC1E27C1CC81F5CCD8F4C9187C2 +:106B4000161B3C0F2D31D2FC0BE6A1A5C6CCEA17D3 +:106B5000D598411EFA8AE3B7A7E97F5A3A5BD41663 +:106B6000947F7448D4BC14C7A4A1BBD6217F6CAB5E +:106B7000A0F5102F5BFB9651FFD6126DA79ACA5B4A +:106B80008FEADD4FDE8DFEF7DF0F0A9A89ED5F7B1E +:106B9000F0CCEBEB08AE1FBE9DB70EF9793FBA748F +:106BA000FB7AB63F5314D007FDB579C12FE91CF32A +:106BB0005DBE38663E784F3044F1EA33F29BB88FC1 +:106BC000179AAFBCB55C9DFEBEBB0A0AA5515C5FBF +:106BD0008C8145F9D6A182950394573CEFF7A89490 +:106BE00057805D9FCEA5BF5C1C2FD71C7AF70096FF +:106BF000B70CFAAB4D8A1FADDB809DBB75BB87C55B +:106C000093E74BD1D1E0FC6A299FF1AD0160F5AC6F +:106C1000173A991D3FEFB7DF6F427CDCFCDA212089 +:106C20003F369FF41FDB7DF560513E5144AB2EA0F3 +:106C3000B8CCDF2D0046EEA1FE5920681D2457D2A6 +:106C400055A98E28583B717C6BAD62DE87FCE178DC +:106C5000A126203EC5A0B1F9B04867FE5B84936CC5 +:106C60007D8047151647F32EC15841061E40EF059B +:106C7000C147051B8F1B4ED37AAD7B381E6EF9C4FE +:106C80006B2390850BE1B0A7FA24C5F79E6D3E8675 +:106C9000438FDFA3ABC46FF7B1F3F5548DD7333215 +:106CA000E5670FFB3FEBDEAAB2C91B48FE61173F49 +:106CB0000F1336877072F056A4EDD4BF99E729AD53 +:106CC000586F6CA922BF69B2734892B69EE64B8892 +:106CD0008749B4B9E102D5C1EEE6DB1805A37330EC +:106CE00086ED2EC483FC2AB3A865763EC47E292691 +:106CF000BD8BE551BF427910C7C707438C16C265EB +:106D0000461550188ED978220CF6BB8983A7E84A1D +:106D1000C7D3733AFEC208CA175B24E8C1F3994689 +:106D2000FCD808D116AFD25A42F8EE60FDCD92AC35 +:106D300078717F4F1941E64FD08F2CE772E34B8873 +:106D4000AE32F427B93FE0723719FAA174DEA1130D +:106D5000E25FE04FE71BD3DE0B764B5A1EE5E307FD +:106D6000D6FC544E7F9770E2A2C3CF0EBC719EE258 +:106D7000DD51EA423BBAC1BA6C50AA54635A2D9411 +:106D8000BF5527B9BF5DF45B4E6B4E71FAB221B2AD +:106D90007D1C3778FC73F8C5ED9621E3BC8A24F797 +:106DA000E3CEBCC5E3F3DC6CDCBBF6BC770D8951EC +:106DB0005770ABF12CE274E2775C1FE5DF37B1FC72 +:106DC0009E050CBCC745F427D367FEFE793DBF6224 +:106DD000903D97593D6091DD903289EF9DFE3ED9FF +:106DE0005B4004F21B21F3A4A1D2FA7D9D868CF2B4 +:106DF000171D01A598AE1561247B558FA3E345BDF2 +:106E0000ADD975523090AFD6E5CB3AE9CFAFF9BBEB +:106E100027EAA68BFCB83A2A327B0D1E01CB227BD7 +:106E200037ED7EE07EB51AE22DB46E45BD571950A0 +:106E3000E87D36AD9FE4DBEF653559EDD979EF0597 +:106E4000C3CFF3DEE5B09CBDCB891BA78CDF4EDE44 +:106E50001B324160F96D9F6055D0BBF18B17F3A9D0 +:106E6000BE108F5802C511D85BCC8CF8445F74CA31 +:106E7000BAA9DFC6F1444266F4784261FEE86222B4 +:106E8000C0F8BF2554C67F980831FA514263F48395 +:106E900044BDEDB7B87ECA2EAE4F57AB1BBDAE1882 +:106EA000ABAB60AE04BDE487D53A36CFA9FB5EEC50 +:106EB0000B0AA40FFD0D6659536DAE3A84C7F9BE97 +:106EC000DEA9EBA99F51BD33C53EAAA9DEA1873C2F +:106ED000E8EC1E4039FD7D9B055ADFA9FFFAEDFA6B +:106EE000AFDFAEFF26C81F5C28B0FAAF1DEB9DB424 +:106EF000FABBBF4165FA59F37466FDD7D35DBD6136 +:106F000011F987B744CC51D84FB91BF5BAD5768D56 +:106F1000A9BA4DE9267F5816E1F68275725924AD5B +:106F20004E9EEEB9D4332D9B28DF0172D673277F96 +:106F30003FC88E9BCEF8ABC557E7BEB3FBAFFE6E26 +:106F400060B2EF247DF6BB489FF590BCA936A5073B +:106F50002BEC738FEBCB84FBE7EBB7573CC2F4E52C +:106F6000E16E81BD35F48DBFB33CC2EEADAFBC5216 +:106F700060711EED69732DE1A60F537CD9F38D78F6 +:106F80007E138E5B1FA9607A542DC5F3E95EAA8734 +:106F900044815C4475F36DECBD15608B40FE397B1C +:106FA000FD6AFB3D069E9EFADD656DE4ABD5B3DB65 +:106FB0002290515F573BF5F5D359F5B535BDFAFA37 +:106FC0005EDACFE299EF67F2FB8CB3FB3C66E3EF4E +:106FD000DC23FE8C52DE3FD93B106E6480F8FC72DD +:106FE0007569479A5DDF2F2A197A385D7DDC35494E +:106FF000FDBB2BE2B2E36E398FE38487989A570783 +:10700000DA08E517DEA84763FB30E226E18DB3E23C +:10701000943764E7F794317C8FF2113BEF70438C27 +:10702000E50BB29DFF4D3FCFD0ECF8C6EB0A8006D2 +:1070300096A7435EE6FE1CDA46DFA9D2EE819E0FDC +:10704000A9CE9177C485A634FFFEAA7DDEB684EC76 +:10705000A2F13503DB4045F99E12CDA5E3B8D9F680 +:10706000F72DB70AA709FF0381600FE5AFAB461301 +:10707000F94DD7A7E61F082CCD03964F344D198F35 +:10708000DAECFCD519D77644D0C92ECD351EAB0A23 +:1070900045B549513957BD762AA266E4259E1201AD +:1070A00006D2F415F5632EE122074345B9BEB38C31 +:1070B000E320BF7D9D949607B5E5C5CB347AA773D1 +:1070C000E7D6873F463CFC7C93E88BA3878F39F655 +:1070D00067E3DF617F7F1BFFEE56AEF6F0EF6ECD0C +:1070E0000AF997B723AE0CBF35E17B5B79E6F7B4BD +:1070F000C591E83B111C9F57B1AC68B33AF93BC549 +:10710000C786FE9708DB07CF2304D30563A46782F5 +:1071100036A423CE585B68F40D57CEFAEE0AE9790F +:10712000873891FFBBBDDF0975AD8EFEAD3097DEB0 +:1071300067D98F6F9ADFA1480FDDA4A79781EAEC8A +:10714000A281FF327D2CDAAB0BA48F95B61E3BFAE1 +:10715000986C0832FF907D1FC90683E537C9CECFF2 +:10716000CE8CE1B82B0D8225BAAEAE97C94E5B2FFF +:107170001BB87F9A4C1F5FBFAA3EF2F358F4279EBC +:107180005BD938C7851918CC1AE0EFC0B21ED3E915 +:107190003CB324254C755B7B4568694B9A7F3D7CED +:1071A0008B51DC58CAFA5DE42F67A9DC0E99A7A1C0 +:1071B0003AA5B1B8BB232DCFF035F238D8D5B87485 +:1071C0004AFBDB9D880E917F7E22A10FE5F2D35E04 +:1071D000FB1DA66BC50EA077B6432B7630BFDB3EFA +:1071E000AF3A48F1B1AE31F37BE4E0BC470223385B +:1071F000FEF18ADD01C2BB7D703BBBAF7179F63910 +:10720000D1DFE902F9CD76EEBF0B573C1AD8EC9BE3 +:10721000286FFC1EB3F4E9E67ABD8EF0E8F275EA59 +:10722000B49F2E5404CAB3BA4CD76AF67E632ECDEF +:10723000D0AF40A390655FFC3EFE0F5DA57900E0F6 +:1072400021000000000000001F8B0800000000006B +:10725000000BFB51CFC0F00309DBF1A3F217A3F140 +:107260005B7951F98C687C0D34FE1A2E54BE119A4C +:10727000799168EA49C51BD918187602F14136544C +:10728000715506082D0CA55980B422929AD3CCD8FA +:10729000CD2B5480D02240DA03888B80788238034B +:1072A00043AF2403C31320BD409C32F7A2E3365101 +:1072B000EA9A378A49C3A6AAA8FC0C03068639862F +:1072C0000C0CCF8C207C1D24F97F40B14C03087B33 +:1072D000871603433590AFAC8ADDDC9D40F91AA0D8 +:1072E0003CBF317EFB2F5BA0F203D1F832AEA87C0D +:1072F000663479B56054FE925054FE9B30080D0000 +:10730000264BDBDBE803000000000000000000006B +:107310001F8B080000000000000BED7D7B7C54D526 +:10732000B9E8DAAF99496626D909933060127642F6 +:1073300080A00127902020AD3B21D0A0A823A2A5AA +:107340001670406AA98A0E94D6E041B3F30E016D1F +:10735000F0A0A2200CF141A46A530F28B5F5FC86D9 +:1073600047A95A6E8D965A54B0033EAA1EF1447A2C +:1073700014CFBD58CEF77D6BEFCC9EC904A2B7F7F2 +:1073800078FEB8F1E76FB1F67A7FEFF5AD6FAD71CA +:107390008A13993682B133F8770963FB05C65845DD +:1073A0003C35AA0251560EE9241668844F4F88A135 +:1073B0003496C39847EDD6B10A53232CE8654CF2B6 +:1073C000848C3FF8184B63AC57CAC202A6B35CC6A4 +:1073D0009CF82F8D31590DE9D84FBA0E75CB185343 +:1073E0007CDD2C540A29DBACBE7F016322747966F4 +:1073F00008563618F66F54C50C29715C3F8D3BADAD +:107400009BC958CD658DAB0957C0B83946E2B84322 +:10741000FAC6D52A71DC5C1C17CA87FA8C7A09BEB9 +:10742000CF9A172AC2F50D9B161164C8DF33E559B0 +:107430009A8F17E7E3A6F914DBE75338EFF6AD317F +:1074400018E7334366EDD05FFDB7C2DB312F1B4E2B +:10745000B5C187F30D6F8DE17C1D2EB531C0D8030A +:10746000EE0C86E3D61EF1469C00A875758C45C7C8 +:1074700030D65EE76251004A5B9D4AF9963A3FA5D5 +:107480000048E32750FFD45431D20EF5651FD3BB1B +:107490004B6D69314F0D26105E66B1749AD74D98C9 +:1074A000CFC1A5065CC171B00ECF9C4C561AC76700 +:1074B00072EA0D882C5A42706267E07F77493A8BF6 +:1074C000BAE2F9342D3B21EFF40F4FA8CF581EC17B +:1074D00087F212CCDAA41359D65900E729C33C3DF0 +:1074E00000EBCCD9FE1B6DF398C224AA274995E185 +:1074F000207C6F12D8BC6E5BF95E843894FF89B92A +:1075000028BDE4F4950203B836FA58A4BD10F0EE95 +:107510009D6344013EB0DCF02815529FFC71CC9A6B +:107520006711942B5135BBF49B8783B5BE4B4E5FDF +:10753000E29A332E3EDE36136FE95E3118F1E03CFD +:107540002341A48FC61259C4F57D73F32DEB45B8C2 +:10755000CA431C814EAD3F5EEE41BCE420FE5C940C +:10756000025E88AE2DBCB47B385E804B52E2E53AB9 +:10757000A652BB7639E2CA36E1827CEB453810BEB2 +:107580007A8284E7728083F00DC2A1B16A5E10F046 +:1075900022B300C14351474F688722D13D2D50028D +:1075A000F36BF68E2E92048403E7B7C67A711ED26F +:1075B000B935AFE47527C3F1EF26FEFFAD0F8E1C82 +:1075C0000E6B3D620D8743770DC1A154FC46E1600F +:1075D000CD6B1DCE8BE8345A43F80E88DF2C9DBA54 +:1075E000F579A9F8CAC2C7DD7D70ECE1702CFF9F68 +:1075F0000147771F9D77733A2FFD66E9DC9A575B49 +:107600001FBC0C0E2FED9B8197A55F992B300FE7C8 +:10761000B15475684867374B866311CA7BB7C01E83 +:10762000037D8ABCC786011F7A1A5ED734C6260935 +:1076300069BC9D343F3364E3C3A5601CA813206577 +:10764000EB7A2450C12CA2F4DAF9B2F6C8ABE3F716 +:10765000DBE65324787D349F8BD845389F93B0FE6A +:10766000281B78FD1FD5F596C8A3404FD7F58CDFB2 +:10767000AFF42FBF596261E47BE6EA76D07A5677A1 +:10768000A4B597E1BA465777C07CBE2570FE671E49 +:107690001F122FBBB9EBD312D9369FA51EF1983319 +:1076A000C5BCFBE064B50373C299DDBFFD40ED3698 +:1076B00008A14A01525D0ED6144217AE3C16680767 +:1076C000383ABA2AA3C359BCDFF8BC41669BF366BB +:1076D0001929E6E91BDC3C0782A355EFA4A7A18585 +:1076E00041BB4625F0A206F86ECA11030D2C3EAE32 +:1076F00085770BEE8D9E865C3BBEFBC15D5A3713D2 +:10770000E7FF19334AD0CE84FCE8A5F0FD0EA4971C +:107710008A14F338077DDCF8DF4C1FF502B77FBE13 +:1077200001FA68162AFEE7D187522B69EF821D5EA7 +:107730002877905DD75C3CC7407DF419D0000339B1 +:10774000217594D1FE04E614788C0FC344D4DFC5B0 +:107750003AD927E92CC0B09D531313E492EC4F940F +:107760005BFE791D51AB5F5CB752EBA071713B8141 +:10777000F252F6B0681AAE8739489E21599E19898F +:10778000FB9BB5AE221FB523780DB41E19DBC17863 +:1077900002343C5388EDBE9F191C77B6F5278EE363 +:1077A0009F1BCCC4790CB63EF3C8DAFB36B80FDCAD +:1077B0004E66EF5B7803FADE6BEA090BFEBAB69809 +:1077C000E4B28B8901DCF734FA7F6AE0BEAA8571E6 +:1077D000BE5C63A6AC389BF0B941D0A89DE407FC21 +:1077E0008FC759CD8C627DABFC5CF82E34F9FD0659 +:1077F00031F82794579D39AC431A1FAFA7385888E2 +:10780000F8A7692ED5EB5CF3D3A800F353EE50CB69 +:10781000705F57286BE95779EDFD36D07AB6D645BB +:10782000D83B0AEE3BC3B4CF1BB13AC8508E14D438 +:10783000F60A9877E6C504CC5BE516DDB1264EA7BF +:10784000CD6DA017B1DCA5892AA4451D850DAE0418 +:10785000BA0BB2B930EE08C6F5E35A48CFD00639B4 +:1078600042E33B6B13E9AD8FBE9A06C707B7A3DCB3 +:1078700080714FDDA53BE6C0FC964467398A807E67 +:10788000B2456E579EBA8B2D45B81CAFFB82BD33F7 +:107890002ADE3E47CCA5F64BD6553AA6DBF4FA12C3 +:1078A000C6F793600138AE1A671FAFDE943FBDFB89 +:1078B000CEC0D44EB649C44703CDEF06FFBF8C9768 +:1078C00027C6F3EFB4496457BC03FB40E4A777DA5B +:1078D0000A23468AF6165CE2FD3C4BFD9CBA5377C0 +:1078E000A01D7EBCCE2520BE709D1AC075495BA52B +:1078F00043F79C7BDE126C5748BE98708B98FD9CBA +:10790000BA3326A0FD5810FD50C0FE0A8C58A54E73 +:10791000FDB028D277C18B433A719D979CFEF73416 +:10792000B42FADFEACFE355CE790783E52CBEDA7B0 +:1079300008AED387796D50EBD4709D36BF421F9C43 +:107940008BF9BE7F2038B7D4758F9753E8132B750A +:107950008CE2FB4A8712A27DF0B9E6E1F4437F3660 +:107960007AFCBAF3682DE6706895C3AEAF352EC0C9 +:10797000A10448944C4180DFA922A6D7A03D9ACD0E +:10798000089E209F4EA2FE104DB926BBAE60AB27CD +:10799000C4FB9354284FB02F797D4B9E597076A12C +:1079A0001E407F91AFE5539427922FDD40FB50F2AC +:1079B000C9EFC792E6437AA7400821BF355AF28D36 +:1079C000B1FD32FA7BB4C023089F65A2C39493BA79 +:1079D0005EEF4339C7C2ED01D2A3CB44F487A85C64 +:1079E0008E58FA43C92DC9A4BC27B51CDC52172EEA +:1079F0009547F587DB1685EF23D9E9AB234ED46B8A +:107A000062C9721C67A07E92E546637ED9E110FAD6 +:107A1000A7721C24A72C7B2A793DADB89E1CBE1EE4 +:107A2000B4BB6DEB691573FAAFA7D13BDA5C4F6A53 +:107A3000F9D584EB51FAE3BF09D7E319B85DF2FC3D +:107A40002D3DE32C66865D0FACC917783F49EB5896 +:107A500033CA813299350D0B3C826BED34F194DCE5 +:107A60003FACAB33159E5AF3EFD71B60FD2761FD8A +:107A700012C2D99F1ACE69AE9F96A2BCB2E6D92D8A +:107A8000723F477A1F7CC3D49FB3DA41F3DE20866E +:107A9000BA713C67490BED4B9C791DA47FDCA5B006 +:107AA000AE0B615FC575095B9FCF22A5E8EF82B180 +:107AB00051BFACCFEF790AF3508FA9B6BC358FF523 +:107AC000F9EA308F8DEF9A67E4BE81749296C7B45D +:107AD0003168674457319477CE3C5827A469724F78 +:107AE00054C0B1CA59E1631AAE234AFA13D8A3109D +:107AF000E9C39DD7CD2AA1BFF55F4A1CBE25E5B4D9 +:107B00001EABFF9F8BDC1F948CA7D1B8EE14707A4C +:107B10007A003C3DFDAB443CFDD9A4BF1478FA7318 +:107B20002AFA7BFA5726FD6DF425CCCF4AC7B87EDA +:107B30006CE22791FEB63F7C635188CF87FCC43E40 +:107B4000CEFAB8CDA4F93BF3820F227C24C43FA027 +:107B50007483BF4B43E173BF7F7215CA20679E26B3 +:107B600062FBF7BCA18F445BBFBEA04ADF2D7E9DA8 +:107B700021AD4E3B0EF907E617652E865495849489 +:107B800074B8A30ED6067CB2A9CE45E9A9A3636852 +:107B90005D03CB5F566A97BF2D5D32C9DF167FE765 +:107BA000BD97A29FCA573C01C59EEEDFF6D04D6837 +:107BB000B7F935F26309E6F8004F41CAB1C925D3D8 +:107BC000DE49D37B74B46B24D6A34BD0CE0F764D55 +:107BD000D4848D6C8393B75CAF1F059991E8E75708 +:107BE000090E6EEC4F0A6988C17E707860BE488DC0 +:107BF000572C1ADD29D9F44A48E274C44A39FE9850 +:107C00001CF0A7B26F2DFABA17E0543A0AF3A0C7D6 +:107C1000413F17D4B008F2D583F81DE0F192183C2B +:107C20000FE751501BA3F1B70B5CCE08CC25FBD05E +:107C3000BFA9A9DB90EEEEBD34DDA43B751BCE677A +:107C4000B4240E241F464B29E82E6D896138806FBD +:107C50004E28A1F3B13C47086521B164D744899F00 +:107C6000DBCD7161DAAF217D8D1058FC0FC61D1E72 +:107C7000D0C8CEB842E27E2B9FD65189745538F9D0 +:107C8000F3CA1FC03CDB421E1DE56E76BE965584CE +:107C90007CFA2789219F16CC7DB47E06E675576F46 +:107CA000A61FE11CAB9C01FD79218F7818B2546DA1 +:107CB000C0B396B63A46E70B505148B5BF70390C81 +:107CC0003FDA5723B41B67E3BE4D28FA628F13FADD +:107CD000695BC302D8ACA82DCA16C338C3273B556D +:107CE000947FD985861FFDFAC396F0EFD9BA2B8809 +:107CF000DF5DACA3D285FA5936D8D5B6713C5A6847 +:107D00001903BC1C554257481528C70C825FCE3555 +:107D1000FB093E1B951EA6E239CBB4A88EF3D8F121 +:107D2000440B5B64DBCF5F6FD205C83E3D521AA7A0 +:107D3000BF0D48D40087FBE755A5FDD083F5D209D8 +:107D40006F0A6B32E9D66022C203E95623BA5C8817 +:107D5000F8290C06506231A95CABC22E801F87E265 +:107D60007C362AC6306CB7F109C7BC08C7D7EB6CA4 +:107D700012B41713F1E5D1F447115F3992C2E5FB54 +:107D8000ADD1E8C3F07D28C047033878E71E88BE30 +:107D900080FC32DD159427433EB6277A14E07460E8 +:107DA0009E1B3EC23AC29C9F724B5840C77904F456 +:107DB000FA428D7AD770BE439630B2B7B2E7F71861 +:107DC000A82E016E3FC1790F2F3138FB6951A2BB3C +:107DD0001639FC973BA17ECB8B52C0D06C7CC38004 +:107DE0006F6CF077FA413EA4B067ACFAE7D2B7F116 +:107DF000FD2ED75B96BD00FCD5CAF981F3D760F59F +:107E00003733F47DC500D7CBFB80DA231740D3D9B5 +:107E10007E89911D53AEBCDB67BF917F408EE70129 +:107E2000612756EDDBFF309E2F4C71AA8FA9FDCB49 +:107E30006763DE5A2FE0E91993AFF6EEFAF368D4E0 +:107E40006BAF049C1A9EBF1D147ADEA773CC4A49FF +:107E50007BAC90CFCF3509DB33BE69C699631E700A +:107E600086C2ED155DD2ABA17D4FB910C172273B23 +:107E7000D67431F607FCD60EF3E899B6EF4826E43F +:107E80002F17D8725606FCBC5B329CE3FBC361F62D +:107E90004EE73184E36C5CA70D2F57FCC6B66EF835 +:107EA000FF65244EA0E7BD47875EBE09C7619941C3 +:107EB000D4E3AC7A257B16D2CB27F37DD82BD57FA4 +:107EC0007C9FD13C040DE7F5CAE43FFA705F5AA9E4 +:107ED0000BB48FB9629A1071A6581F7C5734A093C7 +:107EE000D9FAA7B40EF8EB7502BD9E3AC6D7755005 +:107EF00064BDF5B0AE2B77BFD374318CA756713902 +:107F0000D36F3DC9EB989698EFC37B352B9151EE1B +:107F1000B2F400CEFBB01C7A95F8F1C9EF18D3711A +:107F20009F1165BDED647F8518D7C7BCDDAC9C256E +:107F300074BE247B443A378594F8F0641EC87BB441 +:107F4000677C624A38B33C070A251B1D0DE0673683 +:107F5000F53E15011F557E2153FFE901CE875E16C0 +:107F600023E59F8950033AC8629AC037270101F977 +:107F700082B169745EED4BFB47F73B9FFA15F4F550 +:107F8000EC8CFB2BF42BC7885EFFE1FD9E63BE6982 +:107F9000F1737B9FFD9C7C0DD83178E8DF58A752A8 +:107FA000EAC48800F4AB95F2F3C2D63A3F0F0A90C8 +:107FB00077E928FF3C01878672C0ED89B242A8F7B5 +:107FC000EF95AE5E949B963FCBDAF7B94BD8311163 +:107FD000F0EE0E3812FC28AE3CC7A0CE179A7346BE +:107FE0000F3D9B5D85945A68DB370E54EFFF75DAC1 +:107FF00008FABBD066DFC99EA2385D9F657DD2CAF4 +:10800000106344F74166D707B2C8FD658D9EC52E43 +:10801000B2634E9F39234D32F7DB0CE32782935333 +:10802000C165965C986017296ACB7201EC05C5BFE3 +:1080300044B7F3FB65188C81FB65FF2D7A6C1078D3 +:10804000685382F316E17EB48205D0AE59EF5EC864 +:108050008EA19DE85E48FED7969CDC422EBFB8DF1D +:108060008EB93C24C72C3ADD9373AD3F06F59B8750 +:108070005DEB47B9D7AC04FDE8D77931E759DAB7FA +:10808000B69CCE64CE00DAC3456447B79C1E393433 +:108090009C627D6EC6E5453AE37A8376BC36BDD2F6 +:1080A000E2175D389F93A55CEEAC77FFAB8EF128AD +:1080B0000E4D0E63FF0E4F90ECA89AF26E1DD7E3A3 +:1080C0000879424EB57F3FD638F027903F10EB58E5 +:1080D0007C272494A79C47FF7C4847BB505119C973 +:1080E000D5E472C59561B8C7A35DD4F75DC5718B42 +:1080F0000F8E237F33D6D7D00F0D1201F92A4EFFF2 +:1081000091047C33558CF76BF3DBCBCC68C3FD91CA +:10811000132C1BE4DB64B8B638B81F92C9FA3C8450 +:108120005F93903D01FDC603D1BBEC6F237F0CC074 +:108130002E8AF4E5F4CF341CD80EF65F434854ACD5 +:10814000EB11C653FA29ED9B55F9233BFD3D24273E +:108150009ECF347A8ACEBA7F6A06FE6263062E57B5 +:108160001C815090F451F830DA0F321B4FF397F323 +:108170000E1C2E8479FC5CE6F685ECE3F61153E5E3 +:108180008FEDF64B40D47F2EA35D9ACEFB49EEBF18 +:1081900052ACFA05965F21EBDD72450A3E19AC5DE3 +:1081A000C5F40C2197D32FFF8B44F1DC4332F70F3A +:1081B000E98100B9960F809DCA40CF83363E8EF389 +:1081C000D4E13F8ECF007B14E908EC79B46732A686 +:1081D00041B9DD3F5D3E8145A1BDBAD813CE9C8C2F +:1081E000F4C4DB5B742A25E57F8F78B8C08687BA34 +:1081F000DD097E6889F1B8A0E4F57C2654BD9A1AA1 +:108200000E83F36F39CD7D3BE0AB0DF185F167B89F +:108210009E4D269E1F30F5D17A531FDD6DEA9FA635 +:108220003A8DCAD7D69550FE677501CAFF73DD64D3 +:108230004A1FACD3297DB8AE86D2FBEA8254CF3137 +:10824000ACC985F6CAA661DD0F0A68BF1AF7571DCB +:1082500084269BBCDD6F30CCB37B791E8DF9E18C1D +:10826000FD4D5E5765003D6ECAEAFE1EBA889E1A35 +:108270007267C37EB0A7378DEA7E4380FC85CDC68A +:10828000DE2698D2A671BCBE57D95A6560FF69A692 +:10829000DF2F6FEE39E0C0E524EA0C4C37E598FBA0 +:1082A000CF41B61B8BED008E9B0ABFDA78697287CF +:1082B000CED7FB5CD5213FFA91F8FCA72B8FD1FCE0 +:1082C00049544D057B51D9DE40EB1F67F60FFAE9A3 +:1082D0001A9B7EBA4451F8BCCBBEDABC2BCDF5BAA2 +:1082E000A6C568ACE7E4509E02F9CCD21E26026A0D +:1082F0003DB3BBA3241EF306B7EF69C120C09C7831 +:108300007DC792002B824F53F07B45FC7B41AD4EE5 +:10831000FBD9F34100E3F7FBE656B9B8FDAAD3F960 +:10832000E404F33BC869B2A7E497B8DD1E50B87FF8 +:1083300030B93ED633CAE3F5069CA77A0EFB769099 +:10834000EB647290F677F9B29AB0AEF4A47C9A8797 +:10835000F3EB60F1718B898F0FA5C47EDE96D40498 +:10836000B89EF7A4C826036BE7DD62D32FF0BF7F6A +:108370007E7A423EBB3A3B219F513E3CC10E52D4D5 +:1083800044BBC8537A7E427D75DA8484BC6FF6D4D0 +:1083900084FAC39754259417ACBC34A13C77EE9C67 +:1083A000B3DB5D8384F799A4F5FF47127C06DB8F6E +:1083B00033BC9C05A0EA824312EDEF6A598F321458 +:1083C000F7872B05F20F613D15ECA4F97C8A4C5C14 +:1083D000B96706EADF058CAD7066412AF728E8EF39 +:1083E00098BFD299603F5BFDEF890D69580CFDBFC6 +:1083F0001DE6FD434A76FBDB06EC7F217FFD9DEF0A +:10840000DC7D11941F3D240570F94759CFE598375D +:108410000CC93CFFECC947BABAC6F4171C33FD506F +:108420006F9AF1AE4CEEC99F03E56F2A91055C6E21 +:10843000FCB1EA10C8C937D37AF2315FCF8E553517 +:108440004DC5EFEB5ABE635BC7E2B0A0A37F460FFA +:108450006A2DFE72B4F70313DB35B310ED2E35F041 +:1084600008F2CD26C561C631E89B500EF88B8367B4 +:108470003D5F3F52C7E371ADFC4F94D0A3D86E71FE +:1084800038CB8176E5E2B63D0AF2E93E936F991C5E +:10849000A1F51D152C396654E2FEE5CD3F0DE9B47A +:1084A0009F97ED5384043F76F2388BC27B38DE6EA3 +:1084B0001102E4CE7445F217DAE6B957C9E071D774 +:1084C000CBF938C63021218E70B7D9FF3E85FBC964 +:1084D000BEC63AF7A45E2733E516CBC075BE5D7BFA +:1084E00003C1F733A00774A9BC74ECAF0ADADD6CE2 +:1084F0006E4E823C58DC2425D0D3F797BA13F20B8A +:10850000C35767A68AD7E9A36FC319DFBFD9ECCCDD +:108510004A8CF2467FE35CBE6F644971DD3E161201 +:1085200004F83E9419F5383F2B8EDBB263CFABD6FF +:10853000DE807FB146EFB5C3B8FF966932D0553EB5 +:10854000FE8BFB998C986597037DE607988EF11D4D +:10855000F9F1EF64D70C5B2A27F8698604E5047FFC +:1085600087B72631EF4AF247F5C90173BDF732CE1E +:108570001F4C8F6888B775DEA81FED808E8CFF6C4E +:108580009805705D679DF7D5DC6B9DD381EC63AC7E +:10859000FD9AEAC752E907B294511FC70295C8DF96 +:1085A0002E16D8837E175F31F7DF7B0A8033C91E12 +:1085B000EF71615C9F2FC8FDB1E9E8C48679894FEE +:1085C000EA69388FBB838BB3B03CCD08B1B6725C1F +:1085D000A71889147211E842BFEA5C391215D02F2E +:1085E000DB114538EF3DFA6757CC4697567B56C3AB +:1085F000ED36E097B3FAF3F5F24A76838FFA0FB7C8 +:10860000AB1CBD8D3EBEBF42FB550EC8143FB441EE +:10861000080D75A438A7B3C639A7BE1B64BDC2C96F +:108620000EA2B7E62302D15B66416F08E3A0D8EB48 +:10863000DCFF6E54050E87D07F38DE41F7113226FD +:10864000F792FFD679C4AD4AE4070F5F74B597EF90 +:108650002FECFC762A297EE535213401D723E4CEA0 +:108660000BE178B71F17C83F99398DC7A3648CE118 +:10867000F161F32E9ECFDE2FC5739880F13E7C9F73 +:10868000EB90F83E3FFA3D3ACF537ABF4DFE7385EB +:1086900095F1D415A07481839F675C69A6731DFC56 +:1086A000DCE73D6F487740FB91BA5645F727AA545F +:1086B00011F11E3FAF2ACD3C6EE3D3CB1D8972ACC6 +:1086C000B58E9F537D111B49FB2B45837DF185FDA5 +:1086D000E1E9747D7E01C537F8BA2F7CD7C6D70B88 +:1086E0001C5CEFAD5DF5AC1FD7F917313407E7938C +:1086F000A687759C8F5C1C22BCF6D5F3F27A0AE043 +:108700001BFD4F1917CF8E227D349BE7B260AE342C +:1087100029442F8CE4934517402F0B1CB6795BE757 +:108720005BF0F731CA0F079F125B3BEE4657AA7DFD +:10873000E21F95D00FECED1DFE00E165A07B21D678 +:1087400039CFE2C966C74CFB36FAB77F84FE6D5855 +:10875000CA8A5D0F1F40FFF58A29B00F0B607CC9E4 +:10876000D603785E60EDBB80F30F1C85FC92796EBA +:10877000EE0F674192BF27985883F6D7091C11DA8C +:108780009FF04C7AA4BE1087D3E9BCA5DDC1F59D4E +:10879000ECE1E7C932CAAD12539E113C78DC1BF301 +:1087A00070796630573DC9D736EEAF35E03FCCFF24 +:1087B000A023D17FFBC38D89F91BD99C5C942737FB +:1087C0006E505804FAFD91DDFF0EF3F9B189AF1F29 +:1087D000B2700BCA9F56F37C7FD973E31CB81FFBA2 +:1087E000D144B510E330FBE49F49971F013D69CEAA +:1087F000F8F79B7C1187198F437E97C62C2EF74F75 +:10880000EC9C1E45BE7B07E402E13D699DAD4ACF6D +:1088100015E8BF36EE5602DC0EE2729E681C86BA80 +:10882000A9AB52477F36404B1B92D89EE67F435BF5 +:10883000E27ACF058FE4F55BF6EF40EB71740974D3 +:108840008E954C674F98FC15BFEF64DE1F6A9059F8 +:108850006339FAC3EEA2FB45B58653C5F3B9536934 +:1088600005113CAF7BC994DBC00617F1FD43F8420C +:108870004C07DBFE7F61FB8AAFDFFED501C66FF3DD +:108880001941E4D30D022F77BA421C4932DF2FB5CC +:10889000F9CF519E07E5D259CA8BCFDE1EFD9A78DB +:1088A0007EB3083F8E24FAA773B1E3A61DDAA804AD +:1088B000AFA438F73F49CC1090BE54B2278D664123 +:1088C00043FB75D1BAAB32915E171D927C62A1C990 +:1088D000CA58DF5B43E77F471C8A6907C664E4CF59 +:1088E00045930B67623C5AA312F067C1F8D25DDC76 +:1088F000CF5A39B92C44E7309E790ADAD1BF7B725E +:1089000022C54FDEE49929A39CFFAB83EF774FECA0 +:10891000F8E52406F36B7CCACBA2A49F230ED49F58 +:1089200037ED94885E6EFE8597E2E76E7A66D9230E +:10893000B3A11FE1392FCD477AE6878F73FF6823F4 +:10894000BFFFF5ECD5AF18E6BA5C1ADE4B31ED0788 +:1089500023E0477DB4CCC9AEE7F1741C0E7D765B95 +:108960005BD9013FCEAB2B8BE205FAE85686FAD0F5 +:108970007E11A47352D0ADC7C9F9F763AF631ECEA1 +:1089800053E8DAB390D6D7FD5D05D727346539DED5 +:10899000C37377A762D5A375184F08915150FEF1A4 +:1089A00013025F57F7B86D698538FE36C7623AA77C +:1089B000E0F176D67C177795B50C877A8BD765155D +:1089C000E17E7EFA2F9ECA8879102E5FB64C2DA7C5 +:1089D00038EADED9C0CFB7754914677A439B9474DF +:1089E0000EC0FD63B7924480FAFFF2D7996F41BB86 +:1089F0008F402EA781C8FAA8E73DC7AF311FF28488 +:108A0000512EDFB65B49F07FDDD6F50EC539AB22BE +:108A1000EBCDBB1844F0C144FF5872FDCFD86907B5 +:108A2000DA95B775AF213FE56D3B4FBC89FC725BB2 +:108A3000929FEC23FCC7B0FE71E6139D897ECCCFDC +:108A4000D8C14964A7760D4969BF58F1E596FCF88D +:108A500064F7DFB618404F1F3FF36F5B0C80E78B66 +:108A60005FFE6DCB3F21DC5F485391BE6FDBF1DED3 +:108A7000963B508FEC768A48279FBCB0FDF187204B +:108A8000FFC91B6326204B5DEEE476C22785A772E3 +:108A9000D1BE58F9C28CA1488F2B774D1FCACE6228 +:108AA000BF7F027415B1D195657F6BBB0534CE19BC +:108AB000FB8D9926E1831DEC75A0BFF27381F5B69D +:108AC000C3FEF4D6F02907DA530774D68BF0D9B772 +:108AD000F39D037740FE04E0C799023FB0B2F34430 +:108AE0003A278A9E87E745B7EEBCFACA6F9563AA14 +:108AF00004B0FBDB582FE9A37E783D04782D8FE38B +:108B000075403CA2BF19E8EAB6F05FDFC47886641E +:108B10003C9EC07F4CE98FC75BFAE1F196AD0F61D7 +:108B2000E1CE2129F7F9161E97EDBAE6ACFBA44F6A +:108B300092F87720382F35FDA1539CFA6A27F2DF8F +:108B4000333F7FFC211FE2D919988D787FEAB30269 +:108B50003066D8074AEF428443EF0B4EB513DADC98 +:108B6000F4C29F495F7DB20B243CC9759621803CBD +:108B7000FD84F5FDBD86F111B79AF12CCBB4DE99D9 +:108B80006F42BFCBA00B2340F89BF96639E28F9F61 +:108B9000DFDD1AB9AA46A3F8FF1C5AF7AD11CE17AC +:108BA000B746F6CC457F7E32DC779A72C58E576128 +:108BB00032E2F3D84CA4BF81F069AD5FC5F55F0424 +:108BC000E58F26F26D7FBAE975A05EB0F0FBC9B6FD +:108BD000538EDBA17EF4D70E559C0A79A5D78172FE +:108BE000C7F8A5A4E2BDA364BCE37DA34564A73494 +:108BF000A48C1B4AA687A79D897E71EBBE92059720 +:108C000073F1F5B9D7F3D5E0B5C5A9F1FBC2497049 +:108C1000AB9FE124B9FC8742279DBBBFAA680FFC2C +:108C200018E9E32585E1BDD02B8AFE2A6B29FC0CCF +:108C3000AFA0DD63DBEF5C3959681E02EDAED441B5 +:108C4000AF68713AB5CA83D3243A7FB2E6637DCF69 +:108C50009E55BE0EF5EF4933AE6CFFB0E0668A5309 +:108C600014E5B013D6A7987EA5229D913DBC22DFC6 +:108C700049F621DEAB66748F9AFBF7DBACF3654FE8 +:108C800088F4F461737EAC6BC78E1D207F2EC58186 +:108C900081D4F6B18EE66CC47329D7FF42E92F6503 +:108CA000D42F97857E2963BCDE7E338EEBB53A17D1 +:108CB000D97518E98DF1E6736AB651F96F4D3FD059 +:108CC000A5B3216FD3939795FC5246BBE0B2D26D0A +:108CD00079288F5FC638CA147A74AC8BDB7FF56352 +:108CE000BF2BE27A5E5EC5E31D5ECE7F200FF1B73B +:108CF0007FD4F6CD2BE0FB8B25420051F6626D83CD +:108D000007E5F18B5AA23F65CFD8BF0A38EF02FFC3 +:108D10003619E576A7B9FF7CD4F4BB3D6EDE33EFA0 +:108D200032EF99EFA8D3287DB2AE84CA9FAE0B5024 +:108D3000BEBB6E32E59FA9D329BFB3AE86F2CFD6B4 +:108D40000529BFBB6E1EA5BFA95B4ADF33DABB9AFC +:108D5000107EEC7CA11BFD58FF5A17A6F2685D2D12 +:108D6000957FE8E4FEA98236B0E7619F585BCBE3CC +:108D7000B93A95E03CFBB998552FDFC5F5CF1FB246 +:108D800042392EC89FAC995B8172B879D477C721DC +:108D9000BE5ED4468AFC5E17BFC79FE6E898BF0256 +:108DA000CF7B325C140F65F5B73C2794EFB2D15BF3 +:108DB000519B834527223E23D5B988EF1F00BEA1D2 +:108DC000FEA580C75C683F2754A8A17DF15BA1BBCD +:108DD000291BF711E3CCF2D9654A55E9B9F1D86BF3 +:108DE000CAADDF5586F390DF7E27707FDDF7421234 +:108DF0002BB1C981AB6B12F347CC7567CF2AE671F3 +:108E0000ACBED4E77E78DF9225D8359C9F9C18971E +:108E10006CE3A3346D78423D49DDA7BF3BB17F7F52 +:108E2000562A65D470BB5995DF47F9063010CE88B5 +:108E300071B9433B25CB9ED6F0BCD8C3AA017ED7DF +:108E4000DDC2FD230B584C417B1DF7590A7CBFDE68 +:108E500010286E64310B38D0FE5EC28294DEC8C228 +:108E6000943AF3A20A3FF7A856F1BE91A05F2C6195 +:108E70003CCA40F34BBE97D417976FCA01A7790F2E +:108E8000C43FD515B2EFAFE6BB383E6E3253A0A358 +:108E900065483F038D63C90F4B6EBC971D5CE2B202 +:108EA000E1C54A076A9F8C1F6B3E0C834E8761FBAE +:108EB00095BFCB07D4767668240FA72F6E73164024 +:108EC000D1D675DA04142B639942F26CCB91C24E61 +:108ED000EEE7E476F0D65ABEEFDF3AD74DFEF793D1 +:108EE000AB8B5E1DC3CEBD8E6439F8C088F1EB112B +:108EF0006F235E94488EAC1FF1F73D18575610E370 +:108F000072A5C0131E83F67EE5DB1F0E437FDE7B5A +:108F1000D9A16697CDFFB1E5CEF008943BD35D7A39 +:108F20000BE7CB95CE3416A7D7DA75DAFA126D6057 +:108F30007874B69DFD3C3E79DE7DF437003FC4E990 +:108F400083D7DBEB1E41F73D631253512E54B9F327 +:108F5000C9BE0B65321DFD0E0B6AA30AE2FF5A4023 +:108F60000BCA85EFB388C2F7876A2EDA01D37C5C1F +:108F70001F6EC97D7F18D9DB72AC90FB4D0679BF9F +:108F800082B1043DDECA580DD2E5341613F0BC435D +:108F9000747F3C0CF5C333A67CEBD74F6DE2BB016D +:108FA0004E41A5F9E341F663B09E456250E7F3D523 +:108FB000E52C1F9E3F0A13F0FC63864FA0FDE0F5F1 +:108FC000B58514C7BCD1157AC195C3FBA1EF792A29 +:108FD000F1E322CFF9D568BF0E763D4C8789DBDE01 +:108FE0006DB1D6F79E37F422C26FA45A5885CFAC24 +:108FF00038F3789CF70CC943747AD2C7E8DC68A0D0 +:10900000FE2318DF0E8A629FE947540CD681F6E0F2 +:10901000938077FCFE6BA057FCBE05F413A6BF053A +:10902000FD84E90BA09F30FD05E827ACD705FA09C0 +:10903000F39DA09F30FF28E8274C5F12836FE1FC6F +:10904000141F8F4F6D34E3501E37FD51D63CDE3573 +:10905000F160A5EFB938FEB7A3CD85FAE13D4784AD +:10906000E243E58EF3E81E18A4748FA3B7976276E7 +:10907000A67B8ED17D890AE60AA09D326E674CC719 +:10908000BB1B434CFFD4E3DF0ABD857142312993FA +:10909000B16F43BB82DAC398BF47C41864E08FDA6C +:1090A000281D874D54977F7F190C3D6A43E48965DD +:1090B000DC3FC5B0BD66C4A24BA0FF31B008CC7B7D +:1090C000C55814E38BD8E7190CE35F332FF9D8F8B0 +:1090D00011E47FB62A93CA67F88EE94FA1BFFF5DFE +:1090E0005E7FA6FF18F94973967A191D35BEFE41B9 +:1090F000F41128CFFCC4CCB3506526AD2FD6980907 +:10910000DF2BE6AB01BC1FB0F1F22E3792D9BAC00B +:10911000715A4F473883FA7BC8D1330FFDF4BB1621 +:109120007BE87D90DD079B8EAD83F4C1831BD66306 +:10913000370FF9ABDFFA11A4DFC6CD3CC0D15BB16C +:10914000DF3512EA672E17CB24EA6F2FE537857DCE +:10915000743F736219BFA7B67B1ABFB760E1654859 +:109160001AF76FE7A7F5DDAB62D84E31E33994C348 +:1091700033F5E9C817B0BFC0B855590D466723DCB1 +:1091800030FE9DDF53CA4F83767ACD553AE2C7BA97 +:10919000BF6CF9850BD3F839DEC46D1CCFBB3E1014 +:1091A00023E84F7DFE50A71BE5DBF3872648687751 +:1091B0004D0C8874DEF8FC07F7A6211C361F5A31C7 +:1091C00094FCFB2CE2064B846969FCDD9DB128040C +:1091D00073ECED8F8BD87EBCAD3DC6076FC2F642F7 +:1091E000BC7D491A8F5B2FEBD77E05B51F636B8F54 +:1091F000F648DE9F12C70F98EDA760FB0A7BFBC500 +:1092000022A6A3B17D0A793BD99CF74E21B2763CC8 +:10921000D2F93299FCA5454F86DCF6F734BE9BC6E1 +:10922000F922B3EFDCC8A0FE771F2ECA3C9B1F803B +:109230008CEA847B77E949716BD949F9E149F58B6F +:1092400092CACF4F2A9F9090DF77F47E3108EB7857 +:10925000DEC7EDE6E77D0D641F36E78914AFFD2B11 +:1092600081DF63375E92689DF1F584693D7BAF983D +:109270004AF5771DE4ED8B9E8CFC1EE34F77CE16EE +:10928000E9FE77B25EBA30BD88C791FAE6FC1E43AC +:10929000E9B32F9719D2F3733DAF55B9219F354AE2 +:1092A000284379397A5DB801A7E9EC8855616CD615 +:1092B000B4DE6023964F65FC9E46F6ACB9FBD270D7 +:1092C0009FA333A25BC068E32C1B9D6FDF3C615FF3 +:1092D00025E49F33E97AAA148CD23994C47A713F79 +:1092E000FAF8C6150D6321BFDB2C9F786842821DFA +:1092F000B8352D9BDF8BD83C35410F5BE73603E15A +:10930000EFF13A3DE15ED176D46380EFBDA32F2625 +:10931000386DDF58D489F27DFBC63999A207C74959 +:109320003C1F8AF7C3FD14CFE1C0749E8F470F9096 +:10933000DF28F2BCF17B794631E9C984F2D6CD222F +:10934000918455BEDB2A375EA9C6FDD4EE8D32E589 +:109350001F58F34A753D94CB1BE71A63CBA93DC553 +:10936000A9CB7973A208172B6E1DE4C1D6B40A7E6F +:109370004EE42E8F9F13397D3ADD5FD78CB013D723 +:109380007599C6C243C04EA888446494EF537B8D40 +:109390004627C98DD04378EE5A64DE83BCAC80EB9F +:1093A0005F3641E0F10E724F15F67BFB9832929FCB +:1093B0002F7BBBF761FD5D8A407272D2EAD870F4F0 +:1093C000753D7FA8F852BCFB104DE3F1B4971585AD +:1093D000AF47F973EAB8A0D5C37CEA8FDE3E06ED4D +:1093E000AE7D87E730DCC7298764E27FC5179442EA +:1093F0002407E6483FB4E1AD22A0107F3FFFC1E261 +:10940000B5E390DE7D8F4E356379E5213EBCE714F0 +:10941000D9817A3F9AE6E4E74301C530CF51A308EA +:109420000F871AE6EFB69972B15262F4CE1A7B4BEF +:109430008C3C86053521B7FD5EF5B3312EA7271F7D +:10944000F3ADEC81FE9BD4A91391EE1F7FD0217B5D +:10945000A09D3C32F008CAA757FAE4762821FE18EE +:10946000C67D252DC5F9ED08A6FDAC1AC73BDD5B11 +:10947000F90CF4BBD38433A0B3FE66D44BE6397049 +:10948000E6E94CB267FEA598EF2F92E54CE037E98C +:1094900009F42FB625EE8B4630DBBEA830859C390B +:1094A0007241425C15D8FBAF227F9FCC13350ED79B +:1094B000B00BFD10538B1546E34B4FEEC3F3BCCFFF +:1094C000F07E14F0EBD423EE6322C0779B292FB6F5 +:1094D00098F1863BDB3AF7E13DA067E7B919C60989 +:1094E0001E38DC29D1BB52A63F53A90D57A11CAA97 +:1094F000581D6B40B9CA0C3DA332D70AC18034B69F +:1095000088EE67B143DCFFE482FF707EE337DBFC6B +:10951000510CDF81B3F9A50B914512FD55C9FE2809 +:10952000969EE88FBAE70E2940EF77BDCEE3789E8E +:109530009F12DE44F400FB2F09ED97D0C56B6F85B9 +:10954000FCE36C44563BD2BF2BF216D26F56815AC5 +:1095500088FB15CB5F959DCEF7B37B8F3AE91ECA8A +:10956000F61823B95A99176E47BE9CBA5B249B72B2 +:1095700044BA468B9C1A8BBD5C0AFD5C5423A2A99D +:10958000CB2E3A628C457ADF3B75C779A8BF9B3DED +:109590000E3A176F14C24C4539FE06A7CFE6C32218 +:1095A000BDFFB1ABDA45FBA2E78196302EAA399414 +:1095B000DED95088FD67D33C76F9440AA5BD3794BF +:1095C000BE0DEB3D67C5ED9C36C6A25D9EF1887E63 +:1095D0001EFA21766EE3DFF59D8CE2CF5D79FC9E6D +:1095E000204A081E5FA496217F8F31D7B741D0C78C +:1095F000A4439A317239B57FAE501854FB0BD34552 +:10960000F3FEA57E613AA4A518D087F63CE0AE9D96 +:10961000DE2D8CD5231E1689261F24ED0B16B25E77 +:10962000DAB7809D3F15DB2B72D80CB25467227ECF +:109630000AC09EA5F3E4C1DBF921FBFB8C05BE3219 +:1096400011A711B7F78333709D85795A03CAC3C137 +:10965000DAF95BD0BE1F15B7F7955A1EFFF07BB441 +:10966000F3F93DCD20F61BB7D343F444DCCDED1523 +:1096700033E42968877797637E5E7B45B36B0A5E28 +:1096800092030686FCB2F64933309FD128909EB8EB +:1096900011F2461EF48B3E0BA48F1D8CCB2F599DCF +:1096A0005303F33C7F898FEC3F4DEC3E3801E9F6E4 +:1096B0002691EC808CAEE82AE4AB7EFB13933E321D +:1096C0001A3F5D8EFBE165E9DC0E5A66E2CDCAF712 +:1096D00038433721FCD13D82F71215935F151FBF28 +:1096E000C7B40C953EACEFD67433CE4F8E0CE7E783 +:1096F000A4907A715FC8F7775F03EFAB086E26DE40 +:109700006707B25A6EF271BC4B5FE13D00CB9F918F +:10971000BC6FB552E58B0B28C86AA07E14F31D926E +:10972000E6A2E03CBC6FD19A3FBA0CFD6FD6BD9368 +:1097300097C4D0DD34CF3C1E1FDF876711F66390DE +:109740008EC6F75B6C76E42613BE569AD178559890 +:10975000E2EF2DF80A9C3EADFA3DCEC50FA627C418 +:10976000778418EEAF37A7ABD6B934C51D819D47B6 +:10977000E7BF5F17DE0A6C8311CE00F7ED38DEA27B +:109780003CFECE9175AF7FB0F09E5EC0CFD55983C1 +:10979000CC1E2B67FDDE0975BAAE8A22DB26B7BF69 +:1097A0001D65319876D38BC21706B8DD4AF145AFF7 +:1097B00009A1E7D36D7E04B01FAE47FAB7E2881661 +:1097C000997E39D0A30AAEBF6A88564E71EA6CC939 +:1097D0008C8360175521C3D3834E37CC40BBAACAB4 +:1097E000CDF39FB5DFD58271DA5578964476D73FB1 +:1097F000CDC0F3A0AA91BCFC3FCDF2BD2EFD77E910 +:10980000150972246297238A7AAC324B237FC11FD9 +:10981000B8FC0854210A0B6AB5AFE52F78D4942719 +:1098200040578789AE4CBFC1B9F6F9C7D2B97D6A36 +:10983000A5C751EFD8F7F9F7394C79111C3EC7CBC2 +:109840005384D7BEF5B924973B518DE3FB612C4A75 +:10985000FEF94577F07B7163D97BF5782F629B1910 +:10986000B716DF5704D229FE2D899E8A9E5467E2DF +:109870007EFD5194CF80878CBF372E5A23D8E92C98 +:109880004CF10AFFC7C3F5626713BFEF98BD8AD1D9 +:109890003EE6918EEC2CB40FEE4AD73F4FB7C58B06 +:1098A0005C92AE7F918487D000783883F5CE8507AF +:1098B000C59366D8E1DAC76F26FC0F9AF8F8439F84 +:1098C0001CD75DEE0A84BF46FE45E365BECF1A088D +:1098D0009F03F9272DBC5972E18487E32B9E72BD4B +:1098E000DB63C6A9154D6653D5CC78BF23DDBC5EBE +:1098F0004F1A4BE99F2F725B722548EFB212A4D02A +:10990000AE6FE27ADAAA57EC164CE34B13B9BCE619 +:10991000F17141F3BDA99193D934D516EF36C11C2D +:109920003798CECB93C72D73F379674857258C3B77 +:10993000B203C6B5D1FDC4BE710322BFAFA9D3B86F +:10994000856DFC5DAA91AB9988A9D611D4112F3DE4 +:1099500095CE511BD0DEC92931CFD762F568AFC98A +:1099600046A188F659B5D9DF438E00D9F54D82C09E +:10997000F07D62FD60D040BFAF4B7711DD2A1EE362 +:10998000532E9FB95D0E767AB53BC77E1F97DBE9F4 +:1099900016DC336456EDB4BDBBF3963BF1DD046BCE +:1099A0009D413D6B06BA6EC7EF54C9FF333BC0FD06 +:1099B00094E7EB79DB709FE037F1F958977A9D9B3C +:1099C000EFDFE87ED13867CF8ADF433E72B783DEB0 +:1099D000FFDBD1D5397629B4EB60CCF24355E3FEF9 +:1099E000A6F93A16E86478FFBEFE7B37433AFED705 +:1099F0004FB69F0FDFFD3F16C9BFF43337DF674116 +:109A00007BFA6EF99D76743D9385EF0C3CB8E1DEF0 +:109A100059A3D15EE81229FE7A47921F6A895BA298 +:109A2000F6B7BAE3EFFBE03EB3CF0F65CC8C26F977 +:109A3000A174ECCFE687BAD57D163FD40A37B70BB1 +:109A40001E8C301E5FD42546701FB8C3D349F26305 +:109A500087670E1A874CD1B91F674797E987F2F4D9 +:109A6000F981D2BF0BFD2C77737FCE1D28BF2BEC65 +:109A7000ED8F0B9816D8DA931FCAD3E787A2F6ABFF +:109A8000DCDC8FD480ED73CE3E3EF9A1BC89E3D7F8 +:109A90009BE3B79F73FC67B27E6893276BCC71C75B +:109AA000EF8E54215CC79AE7BD63BA42B4B5F34A5E +:109AB0005117EAAFAD8F7584D2C9EF218711CE4F10 +:109AC00098F6D998879750DCE6D6A4F7753799FCB5 +:109AD000B6C3A4FF7D9BCDFDF4E6B93A9D23AF66E6 +:109AE00084EF310FFF87609FCF8825DCDF36E6E10A +:109AF000952F8F3DCB7E7A87DB49FDCA4B446B3F68 +:109B0000BD03F925793F7DB266C95E0C0F1DD7E410 +:109B100020793A6E5D0BC53D8CDB69905CD5BE98B3 +:109B2000084C0FE37E51467656C11717535EF96213 +:109B30000AE5BBC4DE7A848B21727F8FB251A6FB0B +:109B4000EE238C443F8FDF63FA796ABF9A9F670BDD +:109B5000FA796CF7F2B69AE715D9B3CA49CF9DECFA +:109B600028EA946CF2C96FCAE1D1020B62BDADA6BE +:109B7000DCB6CAF7D68F4E47FF4567C79CB3FA07D6 +:109B8000715F80E7C37DFDDDC9FDC0F487FE2F95C1 +:109B9000BFB3B175F5E27BC91F96555D8E7CEBF7BF +:109BA000F038327DB791EC5778D36DF367882E1E6D +:109BB00007E8F7707AB4F40180BE1ADFC18CAF47B2 +:109BC0004CF05BD9E433CDA3631E97CF567E682853 +:109BD00097F444AEC73A4FDCCFF15B5D5F96EA5C29 +:109BE000F15CF87D4AEC152EB0E3B73B357E733D52 +:109BF0007C1FFB0FC76F6D227E733D9C5F4A07C4BD +:109C0000AF231DF928527BF677812DFCF6F537201E +:109C10007EF7665F66C36FAE87C755A6C06FAE2777 +:109C2000A73F7E7B9C41BF07E941E67E264B3F83F1 +:109C30007E6AB2EBA7A73D49FAC9D4FF967E1A1BEC +:109C4000E1EF455AFA690CEA27216E6F6CDB1618B2 +:109C50009ECEFD20247F4A9CECA5B472DA27F6360E +:109C600080BCBABC7C1BE9A75C14512AEAA7581334 +:109C7000E9A7858CFC7F1BB7B52C7F59437FEE0A83 +:109C8000922B9B6FC9A6F1167BB2B81D6A7ECF5B83 +:109C9000C6F5D3839B412F950FAC972EF2F0F3912D +:109CA0004A4F9F5E227FE757D04B959EB3E8A51998 +:109CB0009E41EAA5CD5C5E0EA497AA3D5CBE5FEE18 +:109CC00019402FD8DAA7D24BB33D5CAF5CD3AF7D40 +:109CD000FFF153E9A5B966FB059E64BD963C7EA2E3 +:109CE0005E9A6FCE7BFCA391BDE88F72B09E003F61 +:109CF0007765ED4807EB10CE00C7ADBFEA88B86DB9 +:109D00007AE9692142EF6E19C3B87F21592FDD6AC4 +:109D1000D2E19DA6DCDB67805EC27574CD253C5820 +:109D20007AE9FC2752EBA5F39F90D34BCEA297EE96 +:109D3000F4987EDEB85EBAD393C2CF6BC9AD12532E +:109D40002F95987AA924D23328BD3458B975E2BF2B +:109D5000492F59FB8381E5D657D34B567F5BBBE533 +:109D60009A44B9157A3C516E2D9984FC7AC2230D20 +:109D7000A4979E4A25B74E98F46CED1700F44D76E3 +:109D8000BD7422592FC5F72B67D54B1FF6E9256EF9 +:109D900077947C4DBD3458BBE3C3FF26BDF4A1A925 +:109DA0004706B63BBE9A5EB2FADBBA3111BFE37723 +:109DB000027E85B8DD317E17E097D629997A49234E +:109DC0007FB34BE5F212F0FBA1C78627E7EE90EEDA +:109DD000D6C82F78C2C3FD82143795EC179CC66095 +:109DE0009F8CFEBA17253A2F62728CFC080A4BED45 +:109DF00087B2DEB94B8EA73957DCD755335711BD23 +:109E00006D74E9A73D367F41972B7886EB4DD37F64 +:109E1000D517E76524DC7F6B89DF7F8B24DE7F33FA +:109E20007F8FA780FF1E4F26FAA5C84F9778EFAD0A +:109E3000D17B23DDDB4A71EF2DCB5B71B67B6F01EC +:109E40007A67AE31CBBA5F6BF11FBFDF9B71F1E96F +:109E500018DDFF52274D44FCE47BF9FD277D9EC1B0 +:109E6000ECF70C310EC09BC22E67E6FD510B2F2D77 +:109E7000C3AE1DE8FED7286F827FF1ECF7BF807E6E +:109E800037A21C5F21482ABEF3D628F077AF0C21F9 +:109E90003DF0580AFF16FA5735E0BB99DEA2C4F729 +:109EA000757C417A2FE5F698A0A13E047ABAC8CB1A +:109EB0000F83E454F4B44E0A5D8CF3BC67EA471494 +:109EC0005F7262579A86FCF349F94907C633360A2E +:109ED00051EE17CF37FDE22C6C44F9FC38BD61E040 +:109EE0001EB46B5C359CDFAFCD4B7CC7649A8FFB97 +:109EF000530B1CB13742503ECFCBFA0EA7F272E99A +:109F00007503FA5B24C7C88F753D7A0A46E2BDED3A +:109F10006E4A01BA57E0FCAF33FD5B0DEE8C6F93D8 +:109F2000DFF91F3C2F0B0F276BAA093946956E20CE +:109F30009D801C0B37D23D418E3F0BCEEDF8DE07E6 +:109F4000D069ACEEB0FEEE28BC1F1DD3DF55F09EED +:109F5000FA07941F9E115C82F34E2F093BB1DD225C +:109F6000E30DFD5D1B7FCDCE08DD8CE50BC2C7F494 +:109F70007713EE3D7F9850CF6A6FF9B1E93E9A169C +:109F8000F7AF007E57D8E9EC94623883240F7D0C3C +:109F9000FDD3275D02BFD758C5E83D9CE93E7EFE54 +:109FA0003993856584670DEBA0F4ABCA874B5937AD +:109FB000B59BCD7A28BD82F5520A7A4AE67E1FEB20 +:109FC000BDB05AD1FE5E98E4E2F1A446152B09A378 +:109FD000DFD5F40BE98738BE5C795A273FF762E694 +:109FE000BD7CFECEE53D5EC13AF7BA07E156A4F36B +:109FF000FA2B463908BF0E6644C9CE32E3B369482E +:10A000009BFEBABB8EC76F379971D8DEC961B203A8 +:10A010009DA5618AC34A9FCC10024C2889D07E3FFF +:10A02000BDA4DB8FF1BA6B0788D77DD59C4FFDB8F7 +:10A030006B49EFACF5F2F88FB5A3B8FC6B3DCADF06 +:10A04000FBDB9FFF53572C85DDD0EA5941F7A85B16 +:10A05000F3B21B6E28C777FFC588FD5DD3E4D4D368 +:10A060002151FC716BDE9CB3DEEFF0B4F17A039505 +:10A07000B706589B70218ECFF5DD585785CB2EF74C +:10A080005ACBA03C13DFB1E172B8353FECC7FB34CB +:10A09000C651B78A7C367D42ED5F504EB4327EFEAB +:10A0A000DCEA11E9DDF2CF8E78B7E37A856F7F9134 +:10A0B000209793C7777E21B0E8108A03FD1DD2ED6B +:10A0C0009E719308DE92D64DF791DDA5FC7DE1F4FB +:10A0D000BC30BD93053633C5559F0B1F5BBDA67FB6 +:10A0E00016CC80121BDDAEA90CD1BB996B86318AD0 +:10A0F000EF565431217E7A8D1967ED487A5768BD45 +:10A1000097DB51C7CC7E51574C9E80F47B80E8177B +:10A110007FB98ECEBFB11F287C17E51AD4BFD8A552 +:10A120001FE7F236B13CF9BDA5B1261F3BD97A1124 +:10A13000E3783F33EFF95AFE746D233FF72E69DA67 +:10A1400050854F2703B3EBE8DFD48073F05DF3D184 +:10A1500095AE5E83DFFBA5F6C566FB924713DFB5C0 +:10A160002B5A97982F36EFAB8C66B6EFC03FC5479A +:10A170003E3C82C66431B3BD838772D1BC67B215E1 +:10A180003FA438A74A8E0B903212EF2D25FFAE4E1A +:10A19000726A9DFBE7897A5A06C26D75369D276EF5 +:10A1A0005975E3F0547AD5826373D6241DEDF2A677 +:10A1B0003B412F432A476711FD4832A3FBC2A03819 +:10A1C000CBD0DE905CAA83FC764D90C7E978A20ADA +:10A1D000E5C366B9DAC3F32B79795FFFDE99D47FE3 +:10A1E000E39D01EA5F8A4EE1FD7B400F8CA3DFA770 +:10A1F0003BC0F838F4DEB5EC520F303E0EBD872D73 +:10A200007BA2BF657C1C5EAEF6F0FC4A5E4E1E690A +:10A21000D46B9E885209F0F9E2D877CE6AF7FE0532 +:10A22000ECDE265B5C55CC8CABFACBDCF762E88FBE +:10A23000FF4B5B21FDAED8E2E858FA3D072BFEDB71 +:10A24000D24FCAD40F66209F597A6AA1CCE8DEAA01 +:10A2500005A7852EB505EF715A705AE8893653DE89 +:10A2600084D342B587E74D38597ACE9A4FB27EBB38 +:10A27000AE6D9B827EF273E9B7EBFD334B9B889FFB +:10A28000E4FF8DFA19F51BBE2757DFF78E08C707C5 +:10A290005E7346BA1848DF868CE5097141FADE61C3 +:10A2A0003371BE604305781C96AE733B90A93B0AA0 +:10A2B000299E8BBFAB94C73AD1D5AF587493C7DFF3 +:10A2C000335F64967BCBD547F01EAFE28AF2F75638 +:10A2D000A6F1DFE9988FE5E568779AE59E9E194338 +:10A2E000B1BD87972F30DB4B1EB35C8D34E3BD11BE +:10A2F000EB773EAE33DB2B3E5EEECCE3F5EFCB628D +:10A3000011D88BD23BEEF86EFB7D593D4F95927D77 +:10A31000CBDF6DB7F22826FCBE781EDF30D06CE5AF +:10A320006B815E102EF76599FD0E3B40FAA8ADAE2D +:10A33000A614E176DF227E3E688C13799CF269894F +:10A34000D72B9C90F07ED47D03E9BF0CD33F7E0DCC +:10A350008F9F6CC577560BE37A65203AB6F4CAFD39 +:10A36000E67DA226BC4F44EF7CF2FB43F86E1AA6B2 +:10A370007B7326915EB5FA7DE0FABBE8779D6A0FA4 +:10A38000490CF1596BCAEB75817B6BF077731A3D01 +:10A39000D909F78F1B65BE2FBCBF2EF1BEE3A719ED +:10A3A0007C7FDE7CCDB5F4BEBDECE1EFDB4BD1EFC5 +:10A3B0007D8FF035D7C1D2847F1C9F5BFC6DD1E7C8 +:10A3C0007D7DF20AE8B39CD327FA899AAF9949E7D1 +:10A3D0007A489F63FE07D3676B127DB626D1676B01 +:10A3E000127DB626D1A795EFB337B2C27EFBEF0E32 +:10A3F000B42EE2BF87C84EFF98EE9DF77DFFF2C7EF +:10A4000087314EC4B8C691F27CB82E83EB6BB9D4B9 +:10A410007062685EB23C3A971CAA57424750FF34BC +:10A42000B1EE28D93BAB051AA74509F95720BE3430 +:10A43000E33B1432A8F52AA9F419B47F87B7E7746F +:10A4400067B56BB1DEE1F1CF25F9E52905BE4CB06A +:10A45000AB811F6DF388EB397E2F948038A5BF7CCC +:10A460001C482FDEAF4F70696857CFE6BFA792FB3D +:10A47000AD7257B16DBE7FCFE0E7208DB3B95FF805 +:10A480008169135CC5A529CA83FC771B93C7B93FB3 +:10A4900043A6F25A16247E61C02F6817CAE3AA5455 +:10A4A000E4C3B51AE7C3FF4FEFFF97F49ECFDF9BDE +:10A4B0006AFD52A2B89957EFB9A4D5288DD3C340ED +:10A4C000F2D5A283D919C1F2CC9CF83E6B207B94C3 +:10A4D000E2A7A1BF928CE054ACBFE027D7E4E0B87C +:10A4E0007FF359EFCD717B0CCA6FCBB6951B55F13D +:10A4F000780DF4E3ACBC7C4905F2C7EBD3B85F2C14 +:10A5000063087F7FC19AD7E399DCCFF97826E7D338 +:10A510007690CB9131F1788E0CD8D023DFF5E68B95 +:10A5200091CE42B40BF9FEBA35F464CD4884E3DC35 +:10A53000512ADACBD6FEF69A7C917E0FF3EEAAF47E +:10A54000A5F6F38DCB7C9C7E3FF255DE87EB097838 +:10A550006214AF72A1CA6202FAC3AAF87B60421EFB +:10A560008FC35158C0C5FDF3E67D4216625FE53EDC +:10A57000E1D332A01EE58587BF43ECDD28901FD4D0 +:10A580008A4BB9DF37E707380F657788EE0FEE990A +:10A59000944EE37FDECCEF477FBE4A7D7B17E6BD5E +:10A5A000F8D40663AF89D96FEF847C6F96C83A31CF +:10A5B0007FE9796FEF82FE17DD2FF2F8BCD3430AF3 +:10A5C000B0FDB15C26B6535C11CBC07BDB19237B9D +:10A5D000F7E279426FBD40710D8AFF6FBAF9BB7324 +:10A5E0001922EC1BDEF69CBC0FC97D018B925FC566 +:10A5F000BABFB67848E89F32F13CFAFB9795A0DCE9 +:10A60000BCDBA11620DFDDDDE29C80BF9B54F4297A +:10A6100023BB895DE3E67E965EA07DC82FBCF3EA8E +:10A620008477C416E6707CB86A9B75BCFFE0D202E2 +:10A63000F44452C6484E07EF6587D6E03855AEB2AF +:10A64000FD1887BB205C487127D5EA55D5180FFF48 +:10A65000FDA53CFFBA198795EC8F48F63FFCB3493E +:10A660004732ACBD7602EA61FECE1753E5A4DF099E +:10A670004C7C6FD1A207A6CB1ABE7348FFD6387D9B +:10A68000E053784E16E4EFBEE801F35DCD3EBA101C +:10A69000CE5C3078BAB81EF6D0F4FE5E55E055E2D6 +:10A6A00093D714E29393354B7E8274904CEFADA117 +:10A6B000D52EB1B43F5F587CD05E3E274723BA5FAA +:10A6C00041717AEC98A0E13B28EA45AB55FCEE5C81 +:10A6D000E4A073528B1F2C3E1891CDCF45811F6A89 +:10A6E000917F439ED80C412300303BBD5F8FFC21FE +:10A6F0000ECC1FD7B1C07731CEFE3A991999D971D6 +:10A700003ABF6EB28BCE81AE8BD5F7E0BEF2BAD532 +:10A71000023B9EA0CF20EF4A8093DAF77B82D2E003 +:10A72000E179CFACB28D483711C911160A20AFF4C8 +:10A73000FE16E5BB91C5F9AEC5FB7E33E63B72352F +:10A74000B2F793E3C35A46BB898E3BAE3D8FF8EE1A +:10A750009FEB341602B8BE6DFA098DB95EA26FF494 +:10A76000EB85E89D5EB0FF38FF1E45FE7DDD116084 +:10A770007E28BF56EA09EF43F8BFE5267FF6E7CF0C +:10A78000872EC4DF21B97BD24D74BFF5F355A111DB +:10A790006AA97D1D91E1FC5D85D87091DEF6D2CC71 +:10A7A000771698F93D741EFF1EA1F461C0FB71403D +:10A7B000D9C1AC42EB7CD66C17A3761D193D6964F8 +:10A7C000B7E73A54EEF7D42B2A60FE574FF7313CE7 +:10A7D0000F78D8C1DFDD4986679ECAF9E56AA943CB +:10A7E000C338E8FFFCD9E9EF609CB45A28ACAF80CD +:10A7F000BC689CFECEACB1588FCBFDE62F275650DF +:10A80000FC4CDD8B09FBBC11ABC302DAC543E70787 +:10A81000FDF83E4CF3979288EFFAFD1765344A6EC7 +:10A82000008000001F8B080000000000000BCD7DA1 +:10A830000B7C54D599F8B98F99B9934CC8CD7BF25C +:10A8400020B979498080939048D00877026844D035 +:10A85000011182069904EC9F5A1F91DA76546A26F8 +:10A860002484104083F581A269121FE5DFDDDA54EC +:10A87000DD5D7E5DEB0E0F59DA02468A885DAC0124 +:10A88000DDFEEBAEED46D02D6DE9DFFFF77DE7DEB7 +:10A89000CCDCC94C0075F7BFF1D71EBE7BCE3D8F17 +:10A8A000EF7CEFEF9C3BC1956CF0058DB1AC469F02 +:10A8B000BB6D1A639FE3DF1CC6ECAAC85835631B47 +:10A8C000FF2A350CBAA06CF3B953CBC3F51B05A115 +:10A8D0006110E08D7B9C8CA5C3FB0B573EEF14C22F +:10A8E000F579AACC5806BEC7A85D41E388703BF550 +:10A8F000D3227800CE0ADD2F68498C698D4C5C1319 +:10A90000D1AFB6FEA0FE6119A3BFCF198ED367C326 +:10A91000FED5FB991A4C61CC69EFB3CD03D8B924AD +:10A92000A1A74D65EC96F5023B1DD11EFF466109BE +:10A93000E77F93C8AA180BBE25F5BD00F3DB9F7116 +:10A940009948FD094C70407F99B29E3C0FEA3387CD +:10A95000D25810DEA9860A5CB7391FB31C68853E41 +:10A960001C8C3DDFAAB0E024C65E6C5509DED5EA3A +:10A97000A6F287AD1A957FDB5A46F52FB57A081EE9 +:10A980006CAD21F8E5569DE0575BEB09FEFB561FC9 +:10A99000C1BB5B1BA8FC69AB9FCAD75AD752FDEB62 +:10A9A000AD2D04875A0304DFE4602D88C7B99BE509 +:10A9B000A008F3CDAA750F380AA17CE6D3BEB588EE +:10A9C0007F061BE661EC11DC37C07B967BC9B66362 +:10A9D000D08ECD935929149DEE25FE63D46EB647D3 +:10A9E00082E72FFAD2DE3D5C857898E041FCA42C0A +:10A9F000FEAEB71ACB95F008E861C0A64969158C80 +:10AA00003DA8D6D42B93197BD8C6DA5301DF0FF6B5 +:10AA10002CDC8CF08CAA4FEE7819C6FB76CFD55D76 +:10AA20000AA06C7B46FD510DEADB7AF42E05E65553 +:10AA30005CEB4DC2F9B0A0DEB51F9EDF3004FFCE47 +:10AA4000A16D0932E85FF7C34B5772582961ECD802 +:10AA5000BCFB8479D0AEB3677ED76350FFB4BD45ED +:10AA60009807FB636373BB963AE97D3993F75F3FC1 +:10AA70004D08D767285799F5BC7F184F07D27BEB55 +:10AA8000A448FDAF84F641808F15A98BAA60FD23F1 +:10AA9000EF899E016876DCAE6D403A087633CF0BC5 +:10AAA00030DF1B7D402CB0FEE246D6CF0A0D42823D +:10AAB000FAD45AB5BF1BC64B4931F0CAE40F87819F +:10AAC000BEC4A0C03EC7E70B2581154159CF9F9B4F +:10AAD0007498AC03AC44D26544BD84FD31A2B36329 +:10AAE00045800F1877E46AA56F00FA5B83F45B8AF0 +:10AAF000FBA8D27837FACE6AB8DFC5B54A2513F07D +:10AB0000B946CFE1BD10CECF7C2FBA1DF62B46D46F +:10AB10009BEFB1F36765DCE78DDB18EBC679168D2B +:10AB200068EBCAADFD8A55F1FB8D68C7A4F1C76714 +:10AB3000C238FD987C956CD793AAB19FF9B2670093 +:10AB4000BA5E7AD35D5EE2CF154C94601F9213D843 +:10AB50002A9F2BDCFE484A5D730AE0AD3985CBA7FE +:10AB6000E40475F13C9A077F9FED6A5A80FCFCED86 +:10AB7000A745D60D70BACCF739BD4BAD802D633FDC +:10AB800036E45A42FA9A25F83C6187CC34789EC85C +:10AB900082B6CC2A2C054F8821BDF7CCCF44FAB021 +:10ABA000099E1700AEAAB9F7FA2AE86FE6FCCF12A1 +:10ABB00070BE337F260A12C0FF90CAE9A2E2F2A457 +:10ABC000963E98E7F5974F9CB11AF0992230DFA096 +:10ABD0006BAC1C714105B67F9EB17AAC177A4FB44D +:10ABE000E0FEFF67B54B407EFECF4FFC052ABCFF61 +:10ABF000BA31CF4976BE7EC67A26886EA07F3710DE +:10AC0000F34CA0BF6C5EDA6D2DCDB80EFBB3209770 +:10AC1000A06BFB5F672A3E78BFFD9C83FA676C6878 +:10AC2000825803CF9D7E35059E176D17751CAF5D4D +:10AC30004DE813A07D7252E5410DDE675ED183724F +:10AC400022F96A99E8BEC7B5AC0FF1FFC81E27B557 +:10AC5000B725297D4E809FD7CFA82550FF7CADAC6E +:10AC6000221F3FDFB5D4477CA48A6AA980E3A922CA +:10AC7000EEC7F3BA7BA41B48385908115FB17B5962 +:10AC80001FF2D9F15B7249FEB60BEA885441ECA081 +:10AC9000C95718A20196DC6E0BED7916E5F52C87E5 +:10ACA000FA828A0F3D87916F3B36A81EA4D72BD519 +:10ACB000BD7B7E06F51DBAE22B02F9624BD9BBE7DC +:10ACC0003DAC6F809D83F63D7A9DD2544EFC163488 +:10ACD000F84FF8DC81EDC57ADC1FAC5F8D78E96058 +:10ACE000074A60DC3A83D57BD401A110D7F97546B9 +:10ACF000ECDF917AA5D6E4C279413F26DF42459D3B +:10AD00006B9750984EE0880078CD518BE47C94A3EB +:10AD100039124B86FDC9516C16BED73AAC72C0666B +:10AD2000D0C555BFB33ECF6311308CE334E8241A4D +:10AD30003FD1EBCA499753703E391D323D8C9E6F0F +:10AD40004E7A89DC5F45A09A5C83F81BF07AA17D7E +:10AD500081AE8C689E0BCFF72A36DC86F498BF7ED6 +:10AD6000FCF95EA98B2948175782F0D5347C6FB067 +:10AD70005D75E1FEF3F5261759F9F8C7AA44EB0310 +:10AD80007EBE0EF9B9B84B044510EEBFB42781055D +:10AD900023E4E9A41DA91678725F8EA5FDD45D4554 +:10ADA00096FA6983532CF597EFAEB4C015A12B2DFD +:10ADB000ED671CACB3C0D5430B2CED679E58628188 +:10ADC000670DDF62697FD5EF9A2DF5578FDC61A99A +:10ADD0009F736E9D05F6B2072DED8FDBD95AD4EF28 +:10ADE000CCED19D2919ED5F40A945F26BE6619FA6D +:10ADF000C784992A8F8CE21F64ADC39DCA58447FD3 +:10AE0000131239BE933CF05EC4B84E2DC7025F6B7F +:10AE1000D059FAC222E68F783FB16C0AF347B4CB1F +:10AE20005C5A69A9470BEFB789064C765631F13564 +:10AE3000CAA01740B775642C6B6802BA5B97A478F8 +:10AE40001CB08E8D576B4F3642FDC33FB7B10D8896 +:10AE5000FF146E67DD9BA12F4E81F18BBAEC2C980D +:10AE6000C6D89E59F610CA8B6497BDCF81F2C9F53A +:10AE7000841FFB4D2E5118DA97C9B523CC0F766A83 +:10AE8000476B975E6203BE6D0DEA2520B8E45A5FFA +:10AE900008ED1A399D69228C9752CBF6209CA2733B +:10AEA000B82245A3F15274681FC98F2AF413B1CE9A +:10AEB000A3A248F26F64A383F496ACAABFF93B80C7 +:10AEC000FD804B09F8E5D4A2A9644F12BB6543FB92 +:10AED00005B954DFF48448F5EC7C5A3ED69FCA6429 +:10AEE0006237C8B709C51E92AF23F74B6477ACBA77 +:10AEF000EE5736B4171AD9A08D1583FDCA42120336 +:10AF0000FC5DCD86A99CC3F4047C3E49F4DD8570CC +:10AF10004DDFF6B9C8FBCD69FE07104FDBECFE1F15 +:10AF2000E178DB525D9EA086B356F305A4974E47A9 +:10AF3000657721DA45BE6DC7683C1BC3F16E5B3C8B +:10AF4000EDD17A98CF6D4F891E81DAEB0ACA8BDB7F +:10AF5000BCE91EAEFF0DFD22336709B4BB794B4936 +:10AF6000253E4F977D5E5C47FA52550842BFFB0C69 +:10AF7000FA4B48AF3AA8C1F3841ED983DD2532AD20 +:10AF80000EF195D8C53C21C0D792226DC36A1CDF53 +:10AF900029A803208F73EFD4F67E17ED4EB5C82392 +:10AFA000019CD7D2F2A882F62B738F20BE1EB681E9 +:10AFB000DE45BA791CEC300DE9E6B2BD36A41BAF14 +:10AFC000F28903DAAFFBB98DF4CFBAA7E43EB41B24 +:10AFD00054659FFE21D049D64AAEA78A9EBD8CF407 +:10AFE000548FA0F6929DBFD1E1413B7F27D205D07F +:10AFF000C7B34827A5B81F9D1BD07499ECEA1791D9 +:10B0000014A6A6EFD980E5B4BC5322700EBBBC4495 +:10B01000684F453A292F94D234B46FBDED5856D7B6 +:10B020003649E950CE9C27C899D0EE272945444798 +:10B030002BD62C3E81F68F577569387ED195CA0A7A +:10B0400094CF920AF39B3156EF9BA5346187E0477A +:10B050003E5F23FF96EC480DE438BCE74D7311DDED +:10B060006719740F25F7AB962692DE7DD8D6B2C746 +:10B07000867832FCB5BCC690A097E37BEB85615720 +:10B08000D89FCA6D1CA276B9F7B10AB44FF21B87DC +:10B090008566689777A795EEFF35D5BF0FE929FF3D +:10B0A000BE2ECB73553940F8ED10B93C4A4EF5270A +:10B0B000A15E4CBEA624B51DE54A1A5BB5B83C4C52 +:10B0C000373B0C7F63732AB7574C796EDAB7A61DEE +:10B0D000BBF1AF67FB44A0EB1747FCDD93711D018B +:10B0E0001BED371B0949C9488FDF5A4CF498EF3ED6 +:10B0F0004BE3377E3AB83119EA6F768CEC4B46FD5C +:10B10000F50D6E870D3861DC087F313795CBAFCCFC +:10B11000542E4F6CDDA0D92F87D2CEFC244F996FCF +:10B12000F830F4FF13965FD14D7A7B44580CF2E36C +:10B130001F0DBB6DFA6B6A1D83751486D4BD541E3A +:10B1400032CAFD509673BCE0C613EB148FDDCFFE00 +:10B150008EF45F60BB7EA6FE428D286D45EA82328A +:10B160001CEF8038F802894BA6A33DDCDF913A80C2 +:10B17000FE04037F2501E0FCFBD30986F6DDB8DF82 +:10B18000ECA104867692169075E784B1E315B05170 +:10B19000FD2EA2FFC1821C5658571BD2D1E5BB23FE +:10B1A000F43FCAD990159E71D00A570F59E19927DB +:10B1B000ACF063065EC14B398EF612E101FE4F1B07 +:10B1C000FE44407BFE002094CD02BB968DB45D0B07 +:10B1D000F35F057605DA7D0541AB3FB4EAE4472726 +:10B1E000D904C2A6C50F5A7532F1943801F5A9D514 +:10B1F000BE5875F2AEBBB0FDAAC8F68097532E7547 +:10B20000591394FA63FE47AF43B91C9048AEBDFF93 +:10B21000EC7F9672FB6824C39784F4ADD1BC6FBBFE +:10B220005FF4F5C17E28818DC149305F45F3D8B107 +:10B23000D516CFD1967D00BF73C2816285CD970EA2 +:10B240001D6C45393351D690FFD499777E3F11E07C +:10B250004DEF423DC0EF685A16E9B78336DA9F4D8D +:10B26000028F6B6CB2318A8F5C9F6EA3F1AA0C7C4B +:10B2700079524DFB2D9888F63778F28968BF5FBE0A +:10B280009BB1726BBCC2C5EB7517D65784A2EBF5A8 +:10B2900009DE2BF816E05FF5B05752D3C378877AF2 +:10B2A00082A7EB6CA41B78AEEA987C3A128F590DFA +:10B2B0005678FA49673BEAE1235E85EC57267DBC68 +:10B2C000F767007F06F634CAE3E92793245CE77149 +:10B2D00091F7EF61F07E04FE33D9293104F5997EB0 +:10B2E000574B1FB68FAA0F9C7C6BFA7ECBFC430A90 +:10B2F000FAA14933C01F43B9C65ADAD02E5C9C9AD2 +:10B30000944EF643392B473A982FB93C21C4FFDBC2 +:10B310009207CC5AE63835E99D26E487B72486FCA7 +:10B32000B3A950DB8E7E85FA4B89F49E9AC82A2AEF +:10B33000A09F3FB60E4DDF0FA87FE2730FEB807228 +:10B340005B5DC25ADCEF975A1943F93FD8AA309493 +:10B35000FF2FB7AA04BFDAEA26F8EF5B352A77B7E2 +:10B360009651F9D3560FD5BFD65A43F0EBAD3AC13B +:10B37000A1D67A82FF2DDD7B4F2AECE74968C726EC +:10B3800001EF56BCAA14237D344A18311AC3A737DB +:10B39000DFFB4D6539F0416D72EFB519809777EE9F +:10B3A000938C7847EFB57B4AD09E189E8F74CB74F0 +:10B3B0005953617F0583AFE001FB6D19C1E2E7538B +:10B3C00081FE5530BB40E5BC96CCE9D9C17C2487D1 +:10B3D000D85A8FE29B7631FDF805A39F615BAC7E66 +:10B3E00074DE0F3B31D4D905F8ED62ACA51BED1826 +:10B3F00079A8B31D60A55026F8311C84E879E81AB5 +:10B400005CB7DDE07399B5E8B9E877DA865AC80F1A +:10B41000AD76197EE877C82F6D7F46611B0AC3FEA3 +:10B42000A8E98746FB0311FEBD457F80642479941B +:10B43000A0085C4FB251FF87E8CD96CADB4D51DFC3 +:10B44000DA9B42F1A9AB29FE54EEFEA42ED5138659 +:10B45000A76B29FB5223EA3D651573D322E0322501 +:10B460006505C613DBD4AB289E559254B937CD136E +:10B470008E671DC30179BC4A4779FFFF3B9EF537B4 +:10B48000461CE66F32FE2115E311C11FF138DF1BA8 +:10B4900019FF9043FEADA1F70AD8044F37FAB5451E +:10B4A000413101F9E945467A147D0031521F6902A4 +:10B4B000433D1CA18F7E417EBBA18FF25358822752 +:10B4C000C67E45E82309F70370A1D9AFC0E78CFC1D +:10B4D00055B31EA61C227DC5B83EA5FA62D413A2A0 +:10B4E000EE9C6EE987F6B5AC2F629F19FA7756BDD0 +:10B4F000346DD00AFF57E93D93BEB6C9430ACAADC1 +:10B500006DE763D36D759AA127C3F4297E3E338C12 +:10B510008F7C7C528425AFD7C1D5C175FA3B6C9620 +:10B52000715705AC70E37D56F8963BAD70C478A4B6 +:10B530004F2F190EEAEF44EAF50F415EA27CD38645 +:10B540009B168270676B58E13568CFDCCE3C9DB8A6 +:10B55000FED55D89163FF36DD4B914471528BEAEEC +:10B5600030ED00C66F0A6A26A9283776344F398035 +:10B57000F19AEF7BCB48BF4C4D4B21BA4D110B0FCD +:10B58000BC87ED6E9DCADA31CE13E4FA5F01CCA020 +:10B590003FFBF003928EF23EB88151BFD176C3EDEE +:10B5A0003DD6B84573543CE2D1FA750545F0BEF678 +:10B5B000DD0401EDF3C2AAD3DE62A47F905B18A77D +:10B5C00069AE4AAD433966C2F95545D744C28A3699 +:10B5D000D2F61CB42FD4CBD6A1DF921FD0ECCDAEC7 +:10B5E000B1764D7347749C3748EB437CA6A58E5DBE +:10B5F000D7A5AEC3ECEF34E82BDC17761EE8ED8A56 +:10B6000008FE918705E4CBE600D331BEB57A3DD381 +:10B61000FB61BF24964CFBF2CE63C503E8174237AB +:10B62000644768060FDE62D06BF47E36374A623EAE +:10B63000BCD7EC9618C68758A0886405D139FCB3EE +:10B64000B9EB93D0E728271A25F2BB5253C09E02CC +:10B65000F8F45681F5007CBA71C60137C0B76F6443 +:10B660001E32C7D8503DCA91E62AD0FF340F6E8FE4 +:10B6700028F01FF5877621D0596120C28EC079A0AD +:10B680005D381DE9CE6A5F34A35D389DF0743A12CF +:10B690004FFF86B846FDF421E8AD2A8B1EB3E7C7FD +:10B6A000D66376467A8CDB4DA61E9B30D7D37519B0 +:10B6B0003C1F4911358C2777AC91EBFBADF144FB76 +:10B6C000E7B98CE30CE4D8447C02EBF855C2C834EB +:10B6D000ECEF5776556847DDC5FCDB502EFF464D35 +:10B6E00025BFE6688A679AC8E39D41A51660A7E76B +:10B6F000470C60C7A6D7AEABBF3A0C27747F40F0AB +:10B70000AF52B56711DE9EC682F3F2B07F0E6F5264 +:10B710000E5DB71FEB1318E98757BEF79BCDC13CF1 +:10B720009C079F1F98CC414E37563EFF3FE4CC828A +:10B73000DDE40D6E96806EB60BDAA3D585E1F75287 +:10B74000F13D619CF7160737CB31DE7399EFA1AE5F +:10B75000BB02ED3B8E8F2CA35E34E61339BE8C7298 +:10B7600047F527A13FB47DB3ACA2BEF9B2F3C8BC84 +:10B77000D0BA9B829B6DD2D8F750059BF31763CF4D +:10B78000BF0FEB23C7B78D33FFAF1A1F17EACF6E7A +:10B79000D45FF2FCA0F986CC8B582FCCCF8676A252 +:10B7A000E64F12C7EB0F64E686D8EBED89EACF4986 +:10B7B000F373FBB78D3BBF38FDC17AB747ADD7698F +:10B7C0002F1EDB1FF26728934274348964F065648E +:10B7D00094EF5E99EB137F0FE59976F89984FC3F1F +:10B7E00066FC35DC1E4860C13EB43B59997F5BE482 +:10B7F000FA1FD9338BF2124FAF671E274CE569B998 +:10B8000087E470CD9A1EAF1D9E3FDBC80671E867C6 +:10B810001B879C18A7797678C8A961FD7D4737E317 +:10B82000B8351D49248B67B11E8A93175D2DFB50D7 +:10B830007E275FFDA96F0D8C5394522961FC060D84 +:10B84000278A37A6D63E87E316D97405E55356AD49 +:10B85000ACA21FD4616FF1DA31EE751BD3288F2FA4 +:10B86000AB6221C5D7D8481068E6E946ED518A2376 +:10B8700075C84C20FED01EAD4738904172E969561C +:10B8800048F1C1E07A89DB85AC45589244FFA0BC01 +:10B89000C328FE849E3D73117FB733F2C70A57F663 +:10B8A00008388FC2DF276994E7C5BF2B0C7928D1F0 +:10B8B000BCC9EE796A74FF785C8ADDC7DF87DD2159 +:10B8C000FD34B151ED23BD60E46396334E9BD9F74F +:10B8D000C95FAD9D1305CB8E16CA33B1ABCC3C937B +:10B8E000B53EEBE48336C4BB2AB214DBAC0BF7B72E +:10B8F0007CF8DE3D68CF1C684824DA2D6CB4EAF58C +:10B900008228BD1E1DEFA8D13BE6A25F911515EF61 +:10B9100000F6213A37E9648C9FD7C9FD3807F374E4 +:10B92000111FB046F5B753C3FE632F36443B6AA2DE +:10B93000614745BF5FAB067F8078289219EA471BB5 +:10B94000F32822ACC791D04279496894DA961DB6A3 +:10B9500073053B53B22B41FF8BCC8FFE5C9BC064C5 +:10B9600084C3E30E331C37C040FEE07EBB4486E355 +:10B970006E52CE4EC5B89EC3F997A9181F4D0683C7 +:10B980007808F5AAEC5391E936D9B4BDE89F040FC5 +:10B99000DB284FD8AE7A967B61FCF64319AC0D9A42 +:10B9A0006D4AE2F19676B747A928C7FC86B69201A0 +:10B9B000DFDE9A3E678182FA131379E01FFDAFC77D +:10B9C00066750741BF3ACEE5327F441CD621B730B9 +:10B9D000C49FE35CBEE5F9DE56100593C2709DABD3 +:10B9E000681ECEE7210CFA829D3097793AF0BDB9F6 +:10B9F0008A64C98738CE65337F5AACFEF32CCFF703 +:10BA0000823DED775C4CFF8996FC8AE35C719CFE7D +:10BA10002F8BEA5F8DD97FB8DF344BBF1B6546F1B2 +:10BA2000F4604322D143B41FF3447A5D7B7AC6D8D5 +:10BA30007CD4A63C9E8FA23F80AF494FA173118F4B +:10BA4000A7F338EABC85C532C5DFF2AC79A96B0C27 +:10BA5000BA37CF4BCC4BB745D9CB1E19E37575AE72 +:10BA6000E8E7563BF90AA4A518E772C4A4AA219CEA +:10BA7000CFBA950E0DF3E7F1E2EE275B19E501DE93 +:10BA800071B6AC4479F56AFAE2848DC0A7EFA0AC38 +:10BA9000033BEA40FA9D0B8280AF93028FE76D4C27 +:10BAA000DF5BDA14C3CF33CB4699C93595E3D4DBDA +:10BAB00043A578CEA9D1E013A0B269285747EB611E +:10BAC000813568B3B23ECBBA56B608967CD4498C61 +:10BAD000C3F3F95437958F3F9FDAD471EA1DA16AF9 +:10BAE0009A8FC45AE2CDA7B6F2C2F379CF887B6EA3 +:10BAF0004C3F5A3ADE7C56CA7C7D71EBED43849F05 +:10BB000095A219A7B7CE6725E3F8BDE07C8C3C056C +:10BB1000CCA77ABCFDC2F9D48EB35F2B1D43849FA2 +:10BB200095123F67156B3EB517B35F467C70931D4A +:10BB3000E4A7143F4E68C607673EB2D31A1F0CEE47 +:10BB4000BCD65B82762A33E0AE052158D7D985EB87 +:10BB5000CA88BF0CFFEF561C10E4FDAD32E7C75B8F +:10BB6000F25C7D6D11FCDC0B724D07B9D007F2075A +:10BB7000CB019013FA243CBFE626F845F027753A2E +:10BB8000BF5646E50F61DE58FFB7AD35049BFD9407 +:10BB9000AF15C8AF9C76A7407E6534DEAECDE07EA3 +:10BBA000E4F66C75C51A94DFDE049ED7597B15B890 +:10BBB000D261BF91B14192EFDB96B10AB43BA6ECE2 +:10BBC000E2F34E9F97D9270988A7FD43AD286796D2 +:10BBD000DA348CB76FD298717E05FC56B0E39A4484 +:10BBE00043F68086C178F77070FEF3287FEA326CE6 +:10BBF000863FA71ED88378F0D835D463B79CCC266F +:10BC0000BFEF48B6C430CEED70F4BD81716E1088C0 +:10BC1000BE173C1477B1C4C593CFFFF80D3C47F273 +:10BC20000EE86F8C6B66F8AC71F3EF353E67C3B806 +:10BC3000776393EB5ED18353179848F3B7F7F51505 +:10BC4000E214422ADA87191E998500BEF99483CE40 +:10BC50003D6C7786C88ED82EA8236DE8EF3938FF63 +:10BC60003546F9B5B744C10CB3E4184F921A933175 +:10BC7000F7BC091FCD1A8BFFE8787B6D8635AEFEC9 +:10BC8000192B7F641E56E6A5923117FDBE193FFFA2 +:10BC9000CC90AF9BEC5CDE44B733E773BDD1AEB75D +:10BCA000F59CFEA12D3CBF7C7958407D531080E768 +:10BCB000117893D3870594EFF1E6DF2B7C9CCDC6FA +:10BCC000E1DB7CB6F513693AC5CD7E8BFB413C24A4 +:10BCD0008C5DF7ADB8EEA991EBAE7DB384C5E217EC +:10BCE0009E47B8E5A0E469D3C27831F1F0DFCD37E3 +:10BCF0004EA4DD0C83B423E284D2068F46F657A609 +:10BD0000C8E3AFE9751FC9D379FD690B9D58CFBB57 +:10BD10004A7B3F12B4698C7DBFF5A0FE616978BC97 +:10BD200082C088B011E3421B78BC283FF4113F7FEA +:10BD30001B6062872B7CEE305ABE459FC7955C2DF9 +:10BD4000DF1F06FCB983329DFF0BD6B5FC6098E27D +:10BD5000740E15F3054F263EF4FD61987740565456 +:10BD600007F0C97724BF1FE5E01F45BF5A084B7E87 +:10BD700035DFBF3D03FAEF569F5FDBAFA1DCAE546A +:10BD8000311FDE187830340FEC32352D767CD5D467 +:10BD9000A3CF18783B690B4DC43CC287F975CF64BB +:10BDA00064C4681F7888FA9B6DC8F3E8FA57327844 +:10BDB0007E6EA7A15F97DFF5F2472FC2BC13B5F2E5 +:10BDC0004A01E695581E4ABF09F3216F1657A2B9DA +:10BDD000FF37467BB0EDAB909E3B72FD3F8C1C570E +:10BDE000D154D94FF26A7016D6CFFE4BF94FDEC44C +:10BDF00038D4F52E15FDB8B31E5B955834761ED099 +:10BE0000CF2B880FE55C37D1B9D9CFEBCEE19DC6FA +:10BE1000F9D9EB4F809DF27ACA70AE00F03F3E5EDA +:10BE2000707D3AD0EBEB19C3B9585FDFF687EEFDB2 +:10BE3000C057AFDBB8BE909FF8437710D63B7BC1AD +:10BE4000C7CF3D82BC7A999DCEF56D36EC1A73DC76 +:10BE50004999FCFCD5A44C8E4F130F87EF043CA4EA +:10BE6000C7C7C32FC7E2E19719D563F1B0B2403F0E +:10BE700084CF6192C937019D76B5B2D01A98A39E3E +:10BE80003578DD0CE8225B1BFCDF8F3074D3FBBC04 +:10BE90006221F5730CF1A99CEBFA449A10EEE7705D +:10BEA000BEFE36F673F8CEBD340FE7219EEF65E98E +:10BEB000411DE5AD0EFBFBB487DE3FC9F1687DDFB8 +:10BEC000DC8F3BF2389FD56571F9956AD841DDF674 +:10BED0001EF76228D59227BEA9C27B9D853D0DB174 +:10BEE000E8EF3799FC7C03B81C3ABED7A1BEAC344E +:10BEF00047D0D579832ED74ED4FF1DD79188E7DE62 +:10BF0000A07E4B0DE00FE639E1505A25F95B25ACD8 +:10BF10006A09F06766166F0FF33E4BED67F5A0EC0C +:10BF200062CE123EEF2DEEC718C60B9CE550D2F341 +:10BF300061867CE2647E95625599FFB7BBC38DEB49 +:10BF4000E82B433A28CADABE45063AE8471B05EC17 +:10BF5000D93C80312ED86B873668EFE7D8C9AF8AD5 +:10BF60005E9768CC6349AE2E6656C7C09363F8B936 +:10BF700047E0FDCDD3EC9E203C9A2DF63434235D72 +:10BF80002D70919E87E70D7D11F89A61D0D38C4C6E +:10BF9000AE9737FF4969C07C6C349E2F96DEB23372 +:10BFA000C7D05B76666C7ACBC9CC88416FC971E922 +:10BFB000AD283336BD15C7C243340C3D0731DE24EE +:10BFC000197166F9DC15C11F03AC08ACC5E146B8B0 +:10BFD00026F826E6AB8B6482F55DDEE07E8C43FBC3 +:10BFE0005D2D685F3C26F82B711CBBDA42F943C912 +:10BFF000A5D3FEEEC9F8C2FDEBCDD6FE67C7EADFDA +:10C0000095C9D7317B81CB8FFB36DBB0BF4D7C9E92 +:10C01000CA9469FC1F1BF41E8F1FD2B2C6E7873F6C +:10C02000678EF2C3A2CC8BE087A9597C9F615F6EBB +:10C03000CE1C971F5EA532B19CF34322F28307C743 +:10C0400063C17A37CE97D3FF9ACCEE2D180730F91B +:10C05000A326EB190B7F54008CF5F1D6979EC5FDF6 +:10C06000DA09B83E186761858DCED39F65D306D0B7 +:10C070005E9D50A3CAB8DE6F649AF3D6EFC8A47D64 +:10C080001B6648A7FD6C648F03F9AE969F5BBA21CF +:10C0900038A473B3A8872D86FA6F1AEFF59AF9B30F +:10C0A000CBF8F96826F730C44734DF3A4B06CBFCAF +:10C0B00011F8550CBE9D9BE57B00F1D5CF8627A3DB +:10C0C0007D63EE47F47A5A8DF1B47CBD35167D5F01 +:10C0D000485F3C67E88BE78C7D4DFD8BD2128BAFC0 +:10C0E00067DFFD53E2E778FDF419EF3F69CCC794B1 +:10C0F000EB8928D7113DEE6008F11C21D79FC4F9C8 +:10C100002A77765BF814F87D474C7E4F037E2F8CA0 +:10C11000C9EF7D71F8BD3F163EBE02FE7E2916FFB7 +:10C120006D1AE5BFF1F1FD0703DF7FF892F83E627B +:10C13000E0F90DA39F8BC0F71B84A7B1F83E9019BF +:10C140004B9FC7C7F791CC18FA18F0FD6666460CEE +:10C150007DEE1EA3CF8FC7DA7705C717A8FE5FB0A5 +:10C160001F96170C221EF5D51CEF66BBD64CD5B01A +:10C17000ABB57BD18EDE097618FA8BA0E7DEFF2FF8 +:10C18000DAEF8F63EDF76C91DB65F39E58BE25E81F +:10C19000FA4AC6F913AE3B7A9CBFCBE4EBB890BE2B +:10C1A00077197216F0C0B2AAC7CACB7EE35ECA92F4 +:10C1B0005CBF238BCBB3EB503EF53E902A609C3E98 +:10C1C0004F0F0968778BC678814C8D4AF3BD5E3975 +:10C1D00024C8D8BE4515F01C50447F295919F1FBDD +:10C1E0008B9E07CC2F3D8BE49B9E81EFB56646D995 +:10C1F0006D86FDD09FDAB316E5779121AF8B8CF574 +:10C2000099F0E989FAC42CAE57342CC10EBF0F8FB8 +:10C2100078A3FCE6F62197D7E67A44DF201B46BDDB +:10C2200002EE5C9F45EEAF7CC194FB788F51CC94BD +:10C230004DB93F19E7599865D21BEF2FDE3C6B0CC7 +:10C24000BD5963C86F1386795666717BB01ACB7877 +:10C25000F38CC6D3C5CED76FE87598EF9CAC8CF83D +:10C26000FD99E70DCC7DB3A390007FE37007E757FE +:10C27000DFA162B2D3AE1FD5D7BE05D89F9EA8CA94 +:10C28000E9E48FAA09D8EF4E237EBCF3CE47291FDD +:10C29000D6BF5EAD407B2E672DD777DA9DF9FD784E +:10C2A0007EE066A39F683A1D7DDF3E38794639E11E +:10C2B0006505E2654E2DB70F930FD1697BA617A8D0 +:10C2C000323253AA23E846BFB64B08BA9B91FEAF61 +:10C2D00073F17C967B69CCB887599A710D73BDCC8C +:10C2E0005D7581F66D3CEF98186CF15D4A7B479067 +:10C2F000EC8C301ED32A48EE29CC968E72CF914218 +:10C3000071B1FB0D7A807DBA8FF6090F53CC0AE329 +:10C31000756CFF7CBFBCBE1601F1EC2C83A1E0A9BB +:10C32000D31724FB49D47A883E124A387D30F7313E +:10C33000EA2F3C8F1933ACF3A89881F308F7DF6933 +:10C34000D27927C9838B9C8FD92E3E5E78BB605DE6 +:10C350000BC50B821B6486E7369E4C7C88E2098104 +:10C36000A0437540F947677E1F1A61AFE6FB7770FF +:10C37000BA6D9949E71559CBE558BA98AA233DCD2E +:10C38000F1300FDEB798A3B882E847B3F3F2C79154 +:10C39000798888FC94F079E2171A7F57ACF12F3630 +:10C3A0006EF14AD698B8C52B5931E8DE8C5B4C60EB +:10C3B000C341BCBF02BE1E8FA7A2D38776B347A3DB +:10C3C000759AEDFFC9A097E43876DF3F19E39AF438 +:10C3D000BD7C631D2B227902FA03F9B281A998FF73 +:10C3E00046BD8FFBBBB0E25BF4FC6C80A9783F4F8D +:10C3F000BF3E45C678ACB93E73BD66FF47A3F8B7EC +:10C40000D138777FD2C61A7EE2E2EBAD8C98D75F47 +:10C41000F2BD4723D76DAE377ADE075B03A17936CD +:10C42000CC6FF9A94C0BCC651F60FE50E1FB6D6F22 +:10C4300000CECAC634F3D06DEB600A5B25FF7BD813 +:10C44000EF5D977DF4305E4C195266B4A13D71CF1B +:10C450004278A790CEA74BB85F5F357DB4277D9B10 +:10C46000E2617B6C8A2AA963E9A37D7E45433A4950 +:10C47000AAC285876A003EEC39E102F85C56E142C7 +:10C4800037F047FB5B9E860C786FCA8EFFBB652B2F +:10C49000C28B05E3DC67AFCB0B786BBF8EC3E28E3C +:10C4A0009A8518D7695F21903DE1701772788FD512 +:10C4B000DE0BF3D7469AFFD5D95CAFB57B8538ED57 +:10C4C000B8FC73B98D768BC66FF75DB3DD4A7EFF1E +:10C4D0003F5EBBDB8C7103E8BAA07D7A4E2479DC29 +:10C4E000AEA7066F457C9D17E9FEBA10F8D75F62CC +:10C4F0009EF8486D96D6CDE383596EB23BD44397F0 +:10C50000C3F347EB4411E5D1BEABB3B6CE00B8A739 +:10C510004E14F03E9943F6511E13CFF8B6A13CD20B +:10C52000EE25BAE85C01F45C41F45CE0467ED5F9A6 +:10C5300073FD41FE1C2FCEF9A6C5A733A0A349F871 +:10C54000DECF4BDFF91ADA51BF175C2DA86986944C +:10C55000E2AD1EE8E79EDD12DD678B472FB1D6BB4B +:10C560001CE0376BA47EBC57F0664D1AADBFE77C6C +:10C57000EA0006B35FCF1BA1751EF18AE2068DD6D5 +:10C580005FED8E886FEC9BE5983C4CFACF3713E754 +:10C59000A5FF8AEBBB71E63FE7CBCDDF73C28FF31C +:10C5A0003F6FA7F90BBB3368FE476A8A29DF2B254B +:10C5B0007DEAC2F9C07A9CA85F60BED7E37CA589FA +:10C5C000C379281FCCF95EAC5C5CE6E6F223422E10 +:10C5D0002E8B5C7FB49C403BC0CDEDA34FEFD1E8E8 +:10C5E0007E1ED947F1E4D3D7DC972C9FBEE6FE022E +:10C5F000F209F07E37CEEB8BE29DE94C53C1069DEC +:10C600008D8FA89D4EF21E640C9D8F11CEB5101D0E +:10C61000839E56AF477A5FEFE37025D89820BFDB43 +:10C62000FD7E779A14BFFF57F37DADB82E5BFAB04D +:10C630007429F1F66EF718BDD51D899F683CCD971A +:10C640003E6EC7FB5A676A055AAF7E8ED17D477032 +:10C65000569271BEB3751BDD0391D5E176CCA72D43 +:10C66000D2E416949B7837598EC833A4E80A9323F2 +:10C67000F24869F5AA05CEF0B92DEDB31A344B7D19 +:10C68000B6BFCC529FBBD6638127B6D458DA170405 +:10C69000740B5C18ACB7B42FEEF259E0D29E064B87 +:10C6A000FB493BFC96FAC97D6B2DF55377B558E0F5 +:10C6B0006983014BFBCB77072DF515A12E4BFD8C24 +:10C6C000833D16B87A6887A5FDCC137D96FA59C3C9 +:10C6D000BB2CF557FD6ED0025F3DB2DBD27E361B20 +:10C6E0003D6F25F0F397A2269BF4285AEA79DE29BC +:10C6F000C88E9640FD4DCCFCF3D830DF3ADB2DD10F +:10C700003922B6D046E73782F01FEA575FD4B92600 +:10C71000BDCA7ADE03E861DFB3F0BEB7C6417A7402 +:10C7200076D479292F2B4AC67BA7B30F4A0CF3ADD9 +:10C730008B90AEC4B174C580FE90AE3E33E86AEC17 +:10C74000BA840BAC4B3F8AE7D0CC75DD88EB8271A5 +:10C750006F80758522D6A51BE7B9A19F8EB4C2B1A3 +:10C76000EB9B6D9C6B8E5EE76CCC674E18BBBEE896 +:10C770007CE6676E239F09766DE4FDA833C7F8FD5C +:10C78000A82036447CE802C987330CF809605FA111 +:10C79000DC1254C7AEC3CC6F7A838A07F1E3857E7F +:10C7A000FAB002630E11769053B3F25D629995EF81 +:10C7B000923CEEF1E90636645CFCC6A1130DFE8BDB +:10C7C00045273732A00B58D78D401788FF1BE52F20 +:10C7D00086CF826C2B3E3F63B5C9881BFDC61439DA +:10C7E000D6BD4E135FE0F7946667C4D72F95D997EF +:10C7F000AC5F2AB3BF987EB932FB4BE81790FF734A +:10C80000705C26FBB54BF15B16648FD1CF0BB2C7C2 +:10C81000D1CFA37E0BC6BD713E258BB95D06B61781 +:10C82000B7BF8629BEBD2C7B7CBF655976B4DF724D +:10C830004646BF658FED3BE49FE8B772FF04EC818D +:10C84000C66CEE97717F26C0EDBCB39E8CFD78441C +:10C85000789B11E70BE3415F85F3BFD8F5DF913D8E +:10C8600046FFDD913D8EFE7BBD8DC7275E3FCCEF41 +:10C87000FBBF912E8532001F8FB26974CEC5CCB735 +:10C88000D4FB19C541BCF2F65D8CC733EFC37EEB18 +:10C8900035AFF075173EBF97CA7874D766CCEB12E8 +:10C8A000E8AE2D72DF2E81EE36677F097BF252FDF6 +:10C8B000A84DE84741FFED1B397E82EF25F1BC888A +:10C8C000E14F6DDA6CDCBB6DE37ECF8F0CFADC6977 +:10C8D00094DFC8E1713FEF841AB263370A49242F0D +:10C8E000379E72507F9D36A18FF1F8F400E2637F8E +:10C8F000F615C968AF9E3DB42FDD1F81AF93061EAC +:10C900008E87F1F0436CFFDEB7DEF95A56241E1A0B +:10C9100056D33D8F301EACDFC530D76F5707E95C6B +:10C92000C735928B9FE72E6174CF1F28F986F95780 +:10C93000185770E0FD8EBC2043F998982D3192E392 +:10C940001A3F87D405FF919F2A3D134279F899A198 +:10C95000276D6EEBBD19A7715E2631EA7E8CD3B8C8 +:10C960007FEDBCC07DDDFDA69CB4B32C9C7F47EB66 +:10C970006EF641C4391FD9C887C59397470DBAFCD5 +:10C980004CD00F21DD9C36CE0B46B737DB45E36B31 +:10C99000FFF007DD53D3F11EB648FBC698DF1DE953 +:10C9A000AF996572CDC894C8737729FAB92991DF18 +:10C9B0003148AB675323E10C9F3235B27D56836A11 +:10C9C00081B3FD6E4BFBDCB59AA57E624B99A5BE8B +:10C9D00020E0B1C085C11A4BFBE22EDD0297F6D4F0 +:10C9E0005BDA4FDAE1B3C093FB1A2CEDA7EEF25BF2 +:10C9F000EAA70DAEB5D4BFC486176048283F277597 +:10CA0000D13C50B69DA796BBF11CD5C68C658A3F1C +:10CA100006BECD727F06A7F778F526FFBFDEEA0BCC +:10CA2000CD2BC5FBCF0D1679506FC8C5FDAD6BA9D9 +:10CA3000FE406B0B3D4FC9E1FBA93FEFD5F1FE0175 +:10CA40004C7D04F5BBA8E841DC4F87AE8C483C7FA9 +:10CA500091929381F69E9FF1B8B64E71E839E760E6 +:10CA6000BC88F57AD98AD0BC88F5CE559A2CF5F3D6 +:10CA7000D5AF5BEAEB8130AF045FE85AF7BD96E7CC +:10CA8000D769F75BDE6BCB6BDE81FCB7C96D67C81E +:10CA90007F742E8DEEEDA62EC27B1A9BF03C650EA8 +:10CAA000637FCA4E5E84F1F04DBB9BDD68C798F88A +:10CAB0006ECEA932F07DAD1BFDDFFD2980CF18FAC7 +:10CAC000E362F1198DC78346FEAEDE6ECDCB2FCB70 +:10CAD000E1FAD22C417E5D89785C7858FAD4AFE1D6 +:10CAE000FCC78F6B448F1F3D2EC8B7F9D8DFEF41CD +:10CAF000CE3FCAC6CAF725393CBF512F82E305F69F +:10CB000052BDADA7DE47F2A085F5413BF918BF67DE +:10CB1000B831E31A0FDE93F4E558F59359CA20585B +:10CB20004211724928BCB901E5727D869DE274F517 +:10CB300071BE9B76ADB1EE2F4B275F9C3EAA16E9E6 +:10CB4000AE307D4CCAA95884E76BE2C97BF8DB9F05 +:10CB50008378D1C07FE7723EE4477F1EF37E9C0F4F +:10CB6000D6C5E28368BD1960FCBC3E73D90D3DC8D3 +:10CB7000BF1778E6601ADDD38E47779B5A555586E6 +:10CB80007D3DA36AC9782ED3FC5E0518C0EEC8733C +:10CB9000CDFF55ED4CD83C4F18DD3E80FFC4F885E5 +:10CBA000DB45EBA2AF97D165237F199E8FE833F762 +:10CBB0003B4F7F1CF13427CFF724964CF19791BC63 +:10CBC000C8F33D9583FA431D857752BD1B608CBF2A +:10CBD000E277672E22FF00EF0DE470BBD8ECE77917 +:10CBE000825DBC1F805FA471D247E15D549FC7DBAB +:10CBF0005FEC3811FBC9D73DC4BF47FAA9AC27E3A6 +:10CC00007755970556933DB622F0752ABB5AD51431 +:10CC10003C5FFB7EAB5E8EDFB558B662868AE75E10 +:10CC200056DCBE9A4AB37FBFC12FF64299BE73222B +:10CC3000158ABEE7899E78DE49027387E3B5C3D0C3 +:10CC4000B723F3917E14BCF70A76B27FBDB7BCC39D +:10CC500072CFAA87E13A9D9AFCE7483FABCDA61F69 +:10CC6000203CB82E2EAF33769DC01030EEA7AE928A +:10CC7000BE20D1719D1A2B7F64AE375EFFFE38F265 +:10CC8000C15CAF89B7E873AC9B4BEA7C98179504FD +:10CC900085BE3B859F6B20BE4A520CBEE2ED5741DC +:10CCA000FF2F239DCA1E0DE97495319E64E4415700 +:10CCB00001EAD6A786C76BB3F9FE1DE9610C1E2FEA +:10CCC000124F27500EDBD0CF1974D2BD39A60A916E +:10CCD00072BCC13837050A94F0B9F9A1CB07107FAF +:10CCE0009B9BFF4E11617EB65C6EF76E293F531D14 +:10CCF00004780B1BF9D600DACDEB9318FA5F0D4DD3 +:10CD00009F55477ED777D5BEA7543C1FDC50DA919C +:10CD100081E7115631F9D3483B317A9E0D81BB89A9 +:10CD20001E836D3C2FC08C7D5D15E4F77F4C7875BC +:10CD300017C085E86F71BE5D65D899E6BD1F2929CA +:10CD4000DD8E764953D07AEE7E7597156691F6A9F9 +:10CD500014F6DF8278B901D7B551247ADA895FF009 +:10CD60002DC6F3D0212AB7E139EE8CF07C26AE1720 +:10CD7000683E7EA61ED00BC7CE67CC3C9866C77EA9 +:10CD80002E763EDBF254FE1D1585051361E874C056 +:10CD9000FD10E247E6E7D61E739970902E95FA4A89 +:10CDA000781ED6A9F17A33AF9EE5EF6398B74DAC04 +:10CDB00062743F44C476E8F7250EE9785F7CD1CEF3 +:10CDC0001717B927437D89DF8DF70E003E2C67E0EA +:10CDD000F9028029CEF3E2E1FD79F4DDA929783E5C +:10CDE00058E918387C7022E39F5AA23CD2C061D423 +:10CDF0005BFD268C172F613DFD09A3B0AEB8012E57 +:10CE00001A858308F71AE75616ED1C38DCC1F30FB4 +:10CE1000F5B9D598371649FF7859521FDD27FD8A95 +:10CE2000F3C1FDEE353DF87DCAA0C6BF47BA9931C2 +:10CE30004B7EFDBE5C3BE1FD9D3CFF2DB9D03E69C4 +:10CE4000FD0885A7ECD97212D257781F8608EFE14A +:10CE50007D18E4FB503544FB90543E44FB50A09DAC +:10CE60006145B09E825A1E76D7601DF4DD880E5152 +:10CE70000DE18392549AB758C5F3EB4935828AF68F +:10CE800050B7713EE1862AFEDD05D5C1FDF4BB72C7 +:10CE900039FDAFCFE5E7B7D6E7723B2859DB40E76E +:10CEA00016957A91F2F0C958BA22D7DF61BC271BD8 +:10CEB000729AE36365813F901B110781D52CC4EF03 +:10CEC0008A2985E9A99817F36AF27DE8577EDF3849 +:10CED0008F05FBB41CF172B82A2DC1CFF7AD95E0D8 +:10CEE000E87D33D675A17D8BB75FA65F1CAF7ED979 +:10CEF0000A89EE338B8AFFF19B61BE77ED4EA3EF7B +:10CF0000D11D6F90AA8600BEFB6759741EE44903C9 +:10CF10005FF788239928FFBA9E69F361E978B529FC +:10CF200098AB85BFD760F67BCF6B5E3AEFB42171CB +:10CF3000422DDA4DD1F3387EFE9F5DB80F87F07B2E +:10CF400043E5B4A1148F5C45CCC546BF63769B21F5 +:10CF5000BBFED1909FC70CBBF8B83C4CF1DEE36E32 +:10CF6000F0BF296F6BFDDE6AB34FB0E3A77756853C +:10CF70009FF3B866C0F661E4772D9AE4C5761C0F7E +:10CF8000E48C255E79F3D2C5F47D94D586FF0EF24C +:10CF9000C6527F7B54FC737943D89E3D4BFFDF47DD +:10CFA000F85AAA71BB70A9C7D187E7AC6EF659EDE4 +:10CFB000E077FE2AD177F28EE3BB80EFE38D930614 +:10CFC000B05D343EEC799C3E8F19FEC1287E18B5C9 +:10CFD000654B7DA7081FF83D10C97A4F9AF0712163 +:10CFE0003CF859CA35F85A341E562F05FC148D5D8D +:10CFF000FF71D947F8390EF8C1F847343EAE9116A3 +:10D00000DA30AFBF7AB1C022E327E67CA3F1158DF9 +:10D0100017B03F8F27023E3ED8CAF305478D754BA8 +:10D02000A1FFA075FA302EADD23A4EF3EF43A8C659 +:10D03000F9008DCEC7DC0E48C47BB037A1FEB0F43A +:10D04000EBB3635CBDD938A737468F488D0722E321 +:10D0500036D1DF35899E67F43A1619FA62CCF7D5D6 +:10D06000E4501EDA0B7FC935EE7D4DB7C6B7595572 +:10D07000464CB96BC66BC2FCCEE96A5560B1C51FA0 +:10D0800012987F1456413FAE734B1ADEE37EAB21FC +:10D09000E37114534B149EDF63D242B2A73E5B2F61 +:10D0A000D077619630457329481F22E95BDF3C2722 +:10D0B000C166BF677A3EA1EFFA07FDAC05EFE3ADAD +:10D0C00083EE0395E175AE73DB699C68FB247AFD02 +:10D0D000397946BC6A3A9B7E29EBDE81DF70A1B8C4 +:10D0E0003E3F5733F275C6062AC2715696A773FBA8 +:10D0F0003593E75FA7E7A518F6450BF96917116F98 +:10D100009D9E1723DEEA62C3367CFF36C515A273E7 +:10D110002801DBC7A374603987E2671847EDCCB9F3 +:10D12000C38372AE3361C2740C9677619359E487FE +:10D13000CCC2FE3B13F8F924A6F17B6C09F8BD00C4 +:10D1400009CF8181FD1E81A731FA78FF9A5DFDE943 +:10D15000F8FD3899BE032F3285F483FF7EC1F05766 +:10D16000B5CE3D5564EFD239D55501DB99C8FEFCEB +:10D170004925F4FD1C7F2120A402E7398560C9CB35 +:10D1800046F0103A2BE3FED2E8B841783F22CFE4D4 +:10D19000C76DC6FBBD8A92497E545744FF45B1C650 +:10D1A00003A9354EDC2ABAFFE8FE3A8D73989D76C6 +:10D1B000CF900EF3ECFC8554D1C6F83CD1DF5C99DE +:10D1C000275AF44CB392A6CA11F7EC4F67BB2CF761 +:10D1D0005CCCD27CCFC4EBA85DC6EA8EECAF0DDB95 +:10D1E000652E7BED118B5DC66A8F7C19BBAC23AFBE +:10D1F000F608DEDBFBE37BD7527EE54C0B08AA8A00 +:10D20000F0392919CFC5C13AF38D73524CD6262374 +:10D210009E9540AE655DDBF234E2FB344DA7FBAC7E +:10D220005035882E6D9AECA1DFE978D4FC0E809100 +:10D230005F7934474DE9A6EF1BF1735872832AA03A +:10D240001F69DAFDE6F866FF69651E01BF1F162F2C +:10D250008FF154DE25E7319E8AC557878496F7BF44 +:10D260008BF9859F4BE4F7AC74DF4FCFA3FDEAE762 +:10D270008CF1B64AFEE7B09FA1865FADFC0EC6B941 +:10D280005E7550BCF9AE6F7FF470B5867882FD9FF5 +:10D2900041FEF6E318DF974A45B2CFBB26F2F89C71 +:10D2A000D426905FB859B3D7BF0AE54B39DE21ECDD +:10D2B0004FAB0FBC8FDF3B3E53E6B3215FBD9433D2 +:10D2C0008F9E9F29E3E752CFB8133CA8A7CCF73B2A +:10D2D00013F8F76C3BEDBCDC9BC7CF15EF35E8EAE4 +:10D2E000A746D965F397B594E3797A8136C95CBFCF +:10D2F0002207E9BB10CA39999E4B8240FE626782C1 +:10D30000BFEC5B117833FB55CE81709811EB7D3B00 +:10D310003DC7F5D0FBA9D6EFECFED278FF97C67CCF +:10D32000947389345E672ACCCB15D9CF04FE5C8C0C +:10D330007D8FB82A6FEE9B888F9772F4A13CE21B19 +:10D34000431EBA0F9E10265C8C5CE4F9A521379829 +:10D35000FDB8DFA06F4A413E77979DD9C8E591425D +:10D36000799908BBC4C8FBF3EFD9ACC27F517F23C6 +:10D37000B6AA2ACC4632ED69CF583BE67DFD2CA6F5 +:10D38000ED46BF4B63DA8BC0E607F0DCC36F0CB031 +:10D39000C955720DDAB137D6723B6935DA495C5E30 +:10D3A0005AEC9A68FBC7C5FC2A7E3FE876B7ACA268 +:10D3B0003D116D0775EB3791BDD00DF602DE5F8A2A +:10D3C000B6834C79B33520329467DBAA6C64D76F8F +:10D3D0002B1BFEF91CC44B95AC515CA36C68E95C3B +:10D3E000AAAFA671DEC45767517BD27B414F02E1E1 +:10D3F0006F51F5DBF4BB08A372A1EAF464D43BBD22 +:10D40000C63EE27768E76746E081713BF97677B11F +:10D4100048F692110FD9FF40027D1FFD7D8FAB0FA3 +:10D42000E3B9F38D7CD7EA6D12E5BB56579CF4E265 +:10D43000BDA8D51B05B2AEFD2DBE64F4B356ADBF7D +:10D44000C98EE717D466570B9E055A15B0DA4FD12F +:10D45000FE3A5814849F66C04F2C7B2BDABE8AB6E6 +:10D460001B0A271A764325AB44BBE12D23CF65DA8F +:10D470000F8B8D3C1790877D71841E1BBD2F2FD481 +:10D48000954D04FC37CB3C7FCD6A6F22BCCE973ED6 +:10D49000FEF91CE4FFAAA2225C6F86E1FF6D0BFC83 +:10D4A0005A41FF73DB7989F8ABD7CE487EF6565EDA +:10D4B000F95C1BCC6FCF0353B23E80FAAB26DA8DFA +:10D4C0007B61DA93B5681FFDC246F22C9EDE5302E3 +:10D4D000122B017E7306042ACD7D480A38991CC19F +:10D4E000E749C67A32AA4684A208BEBE6E229F5F72 +:10D4F000CA7AEEC702D1EBD9E89F694503E427CA8F +:10D500001AD905CA448DBE0B6FB67F4CE0F900FBFB +:10D510006EAF8EB1DB0298078EA7C13C50BF1406D8 +:10D5200012092E0AA451591C48A1B224904BF5A50A +:10D5300081622A2F0B14D2F34981A9049705665002 +:10D5400039395041E594C055544E05BD82EDCA03AA +:10D550005E2AA705AEA7E7D30337517979603195E5 +:10D560009EC0AD545F11584D6565A0899ECF087C63 +:10D5700083E0AAC03709AE0EDC4BE5158107A99CF4 +:10D580001968A7B226D046ED6605B6107C65E07B2B +:10D59000545E15D84E656D6027D59BFC7704FF0956 +:10D5A000FAF586949755FEFDE910D93DBD71E45F0B +:10D5B000D7442E3FCFE5E92D13ABC3EDB646B537C3 +:10D5C000DB7518A579AF4F54424A31F9D3C595E8B8 +:10D5D0004FF702FF67C3FEDC5D5834807677ABB14E +:10D5E0003F8A8D7FCFD0F49F53E6F17B4277EF6E79 +:10D5F000E2F9869AB48B8AC7DC3391BFDF2B07C967 +:10D600003EE86D61F4FD6567C99080FDF4BB65FA85 +:10D610005D157BF6A77B308FBFA85AAF4279A8056E +:10D62000FD14C7B9519F4BF0EE8936236EA33F829C +:10D630007C535095B100CF49147488E84E63DCC523 +:10D640008BB0368FA921168E77F42758F5D0E04499 +:10D65000D1888F0C3F86ED7BA79754F2EF12F17BB8 +:10D66000455B1F2822BFAED71E12F07B6F41702C86 +:10D670005E888853F67636BF88F67C519767AF820E +:10D68000E3073D33707E8306DF15F668754EE8AF1D +:10D690007887BED709CF4BFBFC7509004FDA15DC44 +:10D6A0008BE5E4C1BEBA4428A7EE0EED45776B5A70 +:10D6B00068B8CE05F0E507D93E446BC5903637090A +:10D6C000E01927F47D68D6560FFBE74EC07DB2F710 +:10D6D000B54F80F9F4FE8679DA00AEF9B8470273E7 +:10D6E0003EBCFF6067FD24625F14AD47477CE7DD09 +:10D6F000A752DCA4571E76A6948FDD9F7E5C37AEC2 +:10D7000033C0BF1391A78FD03EE455B1CA20ED03BB +:10D71000FF0EFD8D3ABF4F7DD2A00FD88710D25F8C +:10D720007F82EAC5FA91F94CC5EF5DDE90CD7F5757 +:10D7300021716311FD3E90497780DFC98B9322F7F9 +:10D740004130EF9B19F6E1F8F83DF93F04BFDF40A7 +:10D750007AAE8E8FDF1B0CFFF3427CFCFB301F7F09 +:10D7600014C9C7D1ED52F3797C291ACFBDB23A85DD +:10D77000F0E56262B082DF8343FB29295FBC24BCF1 +:10D780003AF2FF67E0F543434EC4C32BABE1FEB86A +:10D79000794F399EBCD96AAC3B969C6314372C24D4 +:10D7A000399797CFE9AFAB8BC70B4D39E778D51BCE +:10D7B000C2B8A129E77E7721F965C8992D38855926 +:10D7C0009171D269A4FFCA8CFDEBC8D52FCB47B9A4 +:10D7D000539E6AD0078F9B6E11552FC9993A7ECF01 +:10D7E0001BECC08E34DA1FAD927F269091FDD35B87 +:10D7F0003985E20885602FC895F41B53212C93AA24 +:10D800005411EF919BE7E098DAE48EE433539F875D +:10D81000F9D0A48754CA6F209D62FBAF19F30CF7AF +:10D82000C3F3259DF7E758F234FD9E1C7ACF6C1F99 +:10D830008F6E3B4CBAED384A7A23A996DB07C91D97 +:10D84000A944C7C9F3FC78A338E2BEA7DF8EF1452F +:10D850007FBE7449F4BB2A9FC7F3FFBBE9B71A3FE9 +:10D86000A4538D717F957E27A800F48E06F5FDE008 +:10D87000B3A754A15EB3933DAD31BE7F5A2DEBC328 +:10D88000DFB7017CD1EFE305C524CA4301BDCEA7B4 +:10D89000FDB7A7A8B8FF1DB9FEBBF3C7E10335511B +:10D8A000ABC0CD6CED9D73A32B1BEF5FAA0908AF36 +:10D8B00007782BFAFBA9C3CC801FC1FA2F1A1F6867 +:10D8C000CD9FFD26C6074E4FD4BF9B9FC1F3005886 +:10D8D000EA93543AEF6AD2F185F4BFC98F61FE51E1 +:10D8E0002B4CFEC1EFBF81FCDB1CC917F1EC997911 +:10D8F000F95C5E3E9D7F217B26D52B733EE7FC6362 +:10D90000E6757BC6E77373BE5DF9E3F3FBE6EB7E7A +:10D910001DC4D6661C53898A5738DD9D43E87F3A7B +:10D9200017B2538EE96837F338A6DF88632A254A91 +:10D93000541C53207BDE8C5F46E79DCD38A6F91D35 +:10D9400089683CBF926F3D078BF288F2CFC67A7A26 +:10D950003630FEFBA54724CA539FD5C58F50BF9FC5 +:10D96000AD024420031AF74616E22B44AC2A43F9D1 +:10D97000833F3D8A7E2D7BC8A3E0774117FE596027 +:10D980003ACCE3D09F252A65E6A338E622CF9E3C19 +:10D99000067A6E4FC53FE7615EECD02980611EFBC1 +:10D9A0002B66D2B9A68587F7E5A15D1B3DEFE5FEA5 +:10D9B000A698E747A3D7BF7CE5DB2E941F3BD53A5B +:10D9C00005CF85C5CBEBFD4BFE685EEF6DA4A7A42C +:10D9D00035231DF8432D1DAA48793D335F95ADBD14 +:10D9E000ECC4FC5CF69DDC6ECC617DF47B22D174D2 +:10D9F000BBB2C0FF3ED2FBCE70DEECD065E9117940 +:10DA0000B37B726AEBA083A746F366FEA338AE9E93 +:10DA100036588174B6B3EA15FA9EC1423BF8A7881E +:10DA2000E719EFA663DEBCB1FA8D0C9C8F19A78EA7 +:10DA30005EBF198F8AF637FF237F343E4F71EAB3FA +:10DA40009E9B9343245B62C7A9CD3899E96F621C02 +:10DA50004C8D21A7A3F16D8EDF2870FF92D9F87746 +:10DA6000F90F1BF80639201420BF76F07344BA432F +:10DA7000A07344673D6F94505CA42AB65F301A17B8 +:10DA800067A1D258F9C2C638E732B20AB89E6EB45E +:10DA9000F1F89F70EF1B6B705E8D154E01FD639961 +:10DAA0008DD8F03CB8A380EB9B559ECD747E353A63 +:10DAB000EEEF28E0FEE6427BA84435E2829E18FCA9 +:10DAC000140F1F276C3D8B70DC13B74B0CFDED85DD +:10DAD0004D33B3C68B27FF1AE90208F5DF0B188D0B +:10DAE0003BBA5F78B92F067ECC731CD17995D1FAF9 +:10DAF0002627C58FCDF31CE6F3B9C6BA6F37F0C43D +:10DB00001C3D65B83E3CDF817C79B1E73AA2CB553C +:10DB1000B0FDBB2B2F7CBEE3F6028DE77DA2CE8548 +:10DB20001CC1784869D82EBA61D4FEB0C6433E13F2 +:10DB3000EAAE2B888C83942FE179E57D4E3108F392 +:10DB400075BE553A80BF5F36629C076C2895E91E0A +:10DB50004BC3DB9207E5BB330E1F99E74E4C38F100 +:10DB60009CC0FA22E474A23C48F1C6C473323D8FD3 +:10DB7000E6B7D2026B5EC8DC9F78F832F727FAB9B5 +:10DB8000B93FE1764F95611E7F7302D78BD1ED9F30 +:10DB90002AB0C6B3A3F3D3665E36FABDFB8D71CE51 +:10DBA000FA6765A1FC6DB0074B2F86DF4D3C1D3F2A +:10DBB000FFA48AFD3AFFC4BF3B69E6DD6FA84AA512 +:10DBC0003CFBF10689F20149D3D47E3CCBB4AE8054 +:10DBD000EB1D530F46E7EF56B1E01ED283C6FEDCC5 +:10DBE000807AB02C9CCF4BACE2703C3D68CEEF62AB +:10DBF000F378DF2BB0CAC7D13C5E1C7E33F96C25AD +:10DC0000F267F585CF232CB7F373CBD1CFBF318A21 +:10DC1000F7A76EC66F0C7FB35AA4DFB5DD06FF43CE +:10DC2000FA0D56F1EF51BF7BDE41BF9793542D3E65 +:10DC300087BF6774A2E9DDA573519E54DB282F309E +:10DC40001A4FDD2AF5E1EFE02EAAB691DDBBEDB16A +:10DC50000AC2E710C8933B6DD86E037D0F34A198BC +:10DC6000B5486004BD5BC6EF7539811F705CE75F26 +:10DC700097531ED9D9E46AC1DF4F3C62C8A150D383 +:10DC80000FE87BDCAB27BB5230AEBA58172C79DAE1 +:10DC90001B6B9C96FCB1491776E6C9C4EF6D39B78A +:10DCA000D9286F3D776AEDB23A8CCF6EB531BAAFF5 +:10DCB0002084F3BB1A7D3FDC88F31AF6C4309E0F34 +:10DCC0002EC5F8EC07746FCBFC9DDBAF3A3E6BD2F0 +:10DCD00059345D1C8FE263532E99F4114F2E45C4C5 +:10DCE00069DF437D372A9F4A96D23873A7BEC64E56 +:10DCF000BBC272C9940FBF36D6FB6ED9D667F7C2C6 +:10DD00007ADFF5F35B08EF9EFFC11BB8FFCEAF0BC8 +:10DD10006C03ED93C3178BFF279A721CF3E66561C2 +:10DD2000BCAEF087CF21231BDFBAD67A0E395A8FCB +:10DD3000C49753E3CB9FFE026E47C53F376823B9B4 +:10DD4000BC65A874007FD7EAFF01E04B890500801D +:10DD5000000000001F8B080000000000000BE57DA4 +:10DD600009785445B670DDBEB797EC372B0924E12E +:10DD700076201020090D040810B54320C691A59106 +:10DD8000DD44E8B00B0182328A234A871040C48FF9 +:10DD900008A88C32FE0D233E9E0E4E44461905EC1B +:10DDA00088F260C625282EA30C46164541892CDA38 +:10DDB0006EC33BE754DDE4DE4E223833EFFBDEFF7B +:10DDC000BDF87D16756B3DA7CE56A74E55CFEB2CF3 +:10DDD0003196C8D8FDD9E7FBFBA220654DBFDE9A7E +:10DDE000C0986F6914DBA63136A9FC52FFAA1CC685 +:10DDF0002EE3DF758C4DDDFF5B5583FCA4CC1589CC +:10DE0000BE482C7FC885ED20DDEE83EF61DDC32B9E +:10DE1000FDD9508F29171B1D8CFE2E3B5BDACF13CB +:10DE2000E3450465E6EF67FCAEF1EF4A1D5323B10D +:10DE3000DC46E5BEA1D0411EA4C7257F3534FD6B6D +:10DE4000477707AD3F631F77742763BAB8A33B05D5 +:10DE500053BD9F6A2B9B5407E3CB16E67D361B47C9 +:10DE6000F724DF14D552EED6F8F83585BC5E7DE296 +:10DE700080E45390567FD227D90AE30ED614C6A069 +:10DE8000BF57A306C43466B7B40B4DD72DAB0C0CEB +:10DE9000CB047C2DF3521A035DD741FB0796CD09C5 +:10DEA0000CB332A642FE59C8D7583DC9B1867E3A56 +:10DEB0006BB1D47FF4A09D0D1980E76AD5A24A1AF0 +:10DEC000A64A09E26D45A452F204B5E370D744B9FD +:10DED000B7F99C08879B8D8FC2F60ACD5F8954BE27 +:10DEE0006FC62F96421FD8AF0E57E87CDD9A85DAB1 +:10DEF0009DECE8BE4E83745D47B71BD3258ACF8E59 +:10DF0000F85EE280F9B7D1AE58E02B49F4CF58A4BF +:10DF1000FA692F31AE8CEB53F9FF1A717D962BAC59 +:10DF20001AD24722EEFD8F46806B09746B875451DD +:10DF3000A11C5287E250651763BBD2BD6370BDEE72 +:10DF4000945DA7BD0457656F0FD04DD992BB03C335 +:10DF500060BDD57836D513D97A1E65B09E88DF327C +:10DF60009C0FB43F6A0DA4215E4FA60F2D43385A73 +:10DF7000D55F722FF5B7A293F78154282FD4D845D7 +:10DF80003F0EA778351C6F35FE7B10967BA663FB92 +:10DF90008935161F837916B228BF84F3D2E2184B55 +:10DFA000616C0BD37AB02EADFB0788092F6FE23F6F +:10DFB000A1DEF134F75C840BFAABC0FEDCDDD515D5 +:10DFC00032F6931F4FE3445FA11FA0F3ACCAC82BE6 +:10DFD000E39345727CDA6C0E758D4AF8BC1BC7035F +:10DFE0003C0E44B87E293E578AF535E073A5919FD3 +:10DFF00042F1F9EDDF3BB8114FE75DCCC5FAB4CF84 +:10E000001F8E25F1AA62E0EFD5B1E679ACECCBF337 +:10E01000EBC5F85A2AA7CF27C5FA3A9614B1138050 +:10E020003ABB83F9C2FA427E0473237FACB7B1399D +:10E03000463A7D528BA2FA8FA70F7D12E7BDD229F7 +:10E040004D22B86279DA2CB7B4422AF78BFE9F448E +:10E050007A86F1B664C03CA0BF58C1BF7AFD39587A +:10E060003F11D3A14F72FC6A3D10AF36596E139F1A +:10E070004F0BFE7A2095F75B2C4712FF4E7F40F640 +:10E08000DB25E2DF51C307303685BA82EF7B1BAD5B +:10E09000E9589E22331FF0055B623D8EFCACC27FC7 +:10E0A0009733189B092058807ECAB33D3101282E32 +:10E0B000F7F1729DDF41AED902B00ED3BC91954805 +:10E0C00007D3579BCB671EBDCB87E3BF3988A952C7 +:10E0D0000AF6A71C6FCC6A91C74B8E1ECE7D35AB5E +:10E0E000A5FE7E2D2AE1D308F8472E73215F1F5E1F +:10E0F000B69B9D0019748915C48C85CF6318970F42 +:10E100003079DB18833EF8765943EEAB584F1AFA54 +:10E1100017C4EF3485E391316F9651EE76EFC4D793 +:10E12000B9319CE33B147F9F887559CB5809B6479A +:10E13000798AF23B4E669524C7A15FA4BBF51D3BCF +:10E140006E592319E870922AE1E27D82F887F6F190 +:10E15000826E141093317148479D5405F3C0529854 +:10E160008FD7DCCC02EDE0539D0A788B575C920B85 +:10E17000FA6FB435D674007C35F560AEAD305C878F +:10E1800032B5BE03D40B1FA6315943BA62D1F95838 +:10E19000DEC7E2DA0AF9D871EA4A2BE4633516875A +:10E1A000CBDBE81BEB467CAF9DC45419F822CCC9ED +:10E1B000E5FCD4A55F330B7C4F2C00503494276AC8 +:10E1C0007132F2F724E6DA06EDDE58B19C6518F0FC +:10E1D000F1BDC0438C06F40E7870688CD6B190A562 +:10E1E0006D9125633D0EEF8A4EEEEF3492CB6AB807 +:10E1F000278AE898215E5876B87F1BD41FCD1A1560 +:10E20000943B8C35302CD7D28B2E233DEB7CB4D273 +:10E21000C2E6703D59E9E3F85563D750272AE15724 +:10E2200001FCAE2178387DEBF8D5E7119FE59254DB +:10E23000681F5EC6F933745D339C7CDD7B74724766 +:10E240003B918F7EBC7C59063E70083E082F73CDF3 +:10E2500009007C612CDA25C178619ACADC90670ECE +:10E26000C99F2921FC95C44761F9AE7819E735C3E8 +:10E27000C29424C68A447BF724267D0A742C231D6D +:10E28000933C55D8A73A5DE347B7EB553FF43BFCC9 +:10E29000F668D71AE0338BC3EB45B88625833E0278 +:10E2A0003E08EB5A5988F4F0DA54DEC77AC0475D6D +:10E2B0001BFCFD402AC7779CEC4DB6A8D8BBBFE13C +:10E2C000D5025ACF9E12F41B697BB4E1601ACA7959 +:10E2D000F8EB88FF7BB4C11D89E57A9E0518CC6BED +:10E2E0004B7873DEED4826F9A3E77D987F1C8661A5 +:10E2F00083A1D0F968C38A48A4F3EB399D578260A3 +:10E30000E863A06F5C1FC04BFA24C6AA52106C9041 +:10E310004F512DF4DE326F8DF3453B74AFCB2B9014 +:10E3200027560DFAFB40664DB8DEE3D98A7B705C58 +:10E33000D5C1D4FBA17FDFF78067470B9ECFED9D52 +:10E34000F8DA63507FE5A26817EA75EB504E77D68E +:10E35000DFC4F8AB49AFFB695C8965115D8D9B2417 +:10E36000B9D6D0F2342DC0FCE43D11EA1A27F6F3F9 +:10E370007E1ADA8D7FBFE7421483F97FAC3445E122 +:10E38000BC4E2F7D270AF1F7F7A532D9455324AEAD +:10E39000AFA72EFB69C034C84F73723ED9E7744FE4 +:10E3A000761AF43F5B9248FAF8563FCCD420DFE669 +:10E3B0006D8F1044C7F3F3EBE24D795D0FCFB7B328 +:10E3C0004A5CFF797FA8B7758279DEBA3DB60FC285 +:10E3D0007C1A0408E2FBF4AEB42D688FFD56F0C33E +:10E3E0003EA767AEB33F9F9717DA7DBCC7CE022426 +:10E3F000AF1AAC2C92CB7D09E8DDCB876A35AF0331 +:10E40000FB3AD9503ECC9458939DF88E1D40BC9E4B +:10E410004A9619D26BE8BC67FE5DB5E13ACE2C6432 +:10E420004DBE3E384F69E59D795C0FE03A84C215D8 +:10E43000AA37A6D72DB231A43139BB18E5DBA5D553 +:10E4400012C9B750FD01F2E0C04BD0EF0CA15F66DE +:10E45000D69ACBCF1FBCFDC06368BFEEB6915D37C7 +:10E460001BF58BC1DE0FD52FEB9C42BF0C60032F39 +:10E47000833CAA8ECC88F1FE8C7D7D7A19D4B5338D +:10E48000F6C53207A56797A9944E766A84F779BBDB +:10E49000EB0F74227A6A18807A79E4A122C7CD90B2 +:10E4A000BD2D59D64E227F6C191B784C437A05FD41 +:10E4B000E9447E0958913FAC205122615E358004C9 +:10E4C0009CA7AC42DE08576DFD6B2FE1FE07E0DE36 +:10E4D00006708DEC9F69477AAD66EC22CA1F7D7E7F +:10E4E000B725DB689CB2907D4E28DCCFE8700F0426 +:10E4F000B865D4A7D96F69AC7DB8757DDA1EFCED1F +:10E50000B59B0F7AB22DFB5DE793C9825E673C3104 +:10E510006665479840F5DECFD21B2389EA89AEE5D0 +:10E52000CD921FF9514E4E22FA72203DA620FE14C4 +:10E530009F804FBA2C119BBCC70CF43C7B4F04D17D +:10E5400041722799D9F3F10BA74FD90D7204E9391C +:10E5500092B777304715DA35DE3DF7F0FA2FD95408 +:10E560007B32F15DB285D240B2259FE8F5A4895E89 +:10E57000579BF34087A6FC57D6C6749417407F2755 +:10E580008DEBF095D4F63E28E0CC207CCCD0DCC5D9 +:10E59000A8B76632CF4A95F8B496BE9F566A0FDC8C +:10E5A0008D7CFE84C47C80A7F92FEC781EE5D3DC3B +:10E5B0003F3E148DF2E973A53609C7ABD85613ED6B +:10E5C0004639A5F8A2B1FDE77E2EA742C74BCF90F2 +:10E5D000847C75474BA0B716E03F91006634ADFCD4 +:10E5E0000D8CF30DE019F97CC1AEEF287FC0ED680A +:10E5F00062C9D86F6331CEE3D6F2C8CA2A285FB8A1 +:10E60000DBCC7F73FFE3A124347D017F9D04FE3AC0 +:10E6100061BB054F585D68172E3822BB709885ACDA +:10E6200089E00B6DBFB0EE848DE4BB8535A50E6926 +:10E630005D0E968E0DF96A215BFBB59C0BE9AECFA2 +:10E640003F649886D89173845C0EA5FBA80C33DDDB +:10E65000037E5CA8E77D30AF4CACE4E772BAFA3FCA +:10E66000ED6E1B7CFFFCC30E5BECD0DFD927FE1ADE +:10E670002D65B7F00163CB695DCED675F95979F197 +:10E6800095E097663D20F48FB61B26D801B27B78C3 +:10E690005A610D440F01B82BB6585D48FB153B6419 +:10E6A0007724DA4B7FB393BD51B1E302D16F85E498 +:10E6B0006E92FA1038D128BFF5759BB7E35431CA72 +:10E6C000E77960B78F00969CFBDC255E1FE83D0C68 +:10E6D000E5F1B39F14DF8D79901F8E36D6ADA8AECD +:10E6E000DED618D9C6BAD57D52CCD00FF19FDFD275 +:10E6F000BA7CBE4F621D9CADDBCFD976C686FC7A54 +:10E700001616488DC57594CB6D316DAD5F60D48B99 +:10E710007954AEAED1AEBC8E5FA2CEEE4FF4FECC3D +:10E720008B30FE9C0FEDAE1138DE33B74733A0833C +:10E73000CF944A4EF7BFAB4942BD3CC7EA4B522982 +:10E74000E5DFE73CFE6BA2C7D9877F9DC4C89E74F6 +:10E75000A758481EF85210BE999BC7137CB39897D0 +:10E76000E871CEEF640FDAB7971456F26C1BEBBA70 +:10E7700041F08D9D2DCAFD0DEA29E8690DC0F39980 +:10E780008D919DE17B5B26FBD6CEB61E93E0FBA56B +:10E79000864489E4D761AB03F1B3786F2CD1D3EC15 +:10E7A0000C6EB7151DBE548CFCB5D8A954DA558231 +:10E7B000DF2CD760759501F81DFE32B0DFF3B65B34 +:10E7C000A0FE45F8FEA8CB549FF0F5D9567BB8D4EF +:10E7D0001BD2246E47C3DFDB281717F0BE5AF89907 +:10E7E00069E711FE5732B81C5EB8FDB3E24791EFFE +:10E7F000A64556C6007E2E1E3961EB887C9160616D +:10E800009938AF86539467AE442D26B9051F0B7710 +:10E81000835D61E4DF274E85F0AFB91CF437E16D0D +:10E8200021EC24D62420DE9A8A519FFB60DC6D30D7 +:10E83000CEAC8D50DFC0AF2D74616BF9EE6CE13F53 +:10E840002697C5A07D335BF07BE87A85F2FF03C88D +:10E85000FFBD5AF85F6FCF3673BE6F4FEFE9765842 +:10E8600085D5FF24E2A9E26F7617CAE18A1D9CCF05 +:10E87000C0A06CCA04BA3FF387FDEFDD0CF09CA981 +:10E88000B3268CA051CDF275CE4EE053B447C18E65 +:10E890000A23F9FA2DD959C945A0D760FE67123C61 +:10E8A0000CE9BA157FC2F736F9338191FCFAB7C982 +:10E8B000D55DF77F2D47B7CF8FB3DB91ABBB43F06F +:10E8C0000AF6440C0CC3BE786A5E67948FA1F8D533 +:10E8D000F11A2A1FC765686DCA47F87B8F19F0388F +:10E8E000F7E92F49DE7D03F24E5651BF005DA3FECE +:10E8F000867D02EAFB05FEAF295F837A8BF2F5E3A2 +:10E90000A4DCB6E036E333B4FC6EDC07F56F597F68 +:10E91000EB72E68B827E9BF6CAFEAD30B5735A531E +:10E92000741CC05713C6FD07E754918FD5F36C6A6A +:10E9300039CCF39C2F57F561BB3046FE9F739EA6E2 +:10E94000E858F46F0AFF4EB5E342AF93FD801CC355 +:10E950007EE875D2B04FAA8E12F59379FD66BFC4DA +:10E960001E395A43FF809FFB2542E9962C43F46BE6 +:10E9700008BFC570F9C767D07F77DED7D582FEBAEA +:10E98000F32B2EF1BC9215C7D0CFC3AA08CE93BEED +:10E99000EB93604EEC14F3BC3784EC2AB72D05F0F2 +:10E9A0003E9DA384CD39541D8D76BA1C957700ED1C +:10E9B000D1598070B4B367AC0DB103847D3B6BA3B8 +:10E9C000B5857EE8FF7EF20FCD16F6FB9CCDE6F214 +:10E9D000B97BCE10DDCD0DA13B2FCE25A535DDD9E0 +:10E9E000BB08BAEBC3FA20DD0D97232D48E7E70EED +:10E9F00072FFD6F91556B612E1FD83E467D0CFF960 +:10EA00003D32C9E9F3BB799EF912899E75FAD7F1B7 +:10EA10007716E9B27BFB7AFDEC9FFE3EE06EA852D2 +:10EA2000F1FC47B98F417AF6F9BF757B09F32FBC2A +:10EA30009FFE116B5DBF68DF7753685EFBEC0CE7F0 +:10EA4000756EDF7FA5A33E3EF7A2DD85F47C6EB92F +:10EA50009DF6CDBE7D51A4EFCFA5713BB17AEFB746 +:10EA6000B98D24C757D0FAF4ED62A3F4FC9E1F8E33 +:10EA7000A15FE2FC1EBB86702CDC1741F6F2C217C8 +:10EA8000C3FC0CDBEFFD96F67DFF2E7816D8B85F41 +:10EA9000F61CD0E34EA4EB58EEF75AF8D2A0DF579D +:10EAA000C1F8F377D5DBA64379D1CB3FE5A29C3AF9 +:10EAB000B7B3DE86720CECE0C791BEAEE9B2F641A8 +:10EAC0002BE0F92BB40D3B023377797D0C9ED3B448 +:10EAD000C60BC7C339C003C205789983F66B7BF8B0 +:10EAE00018F7BF161F5F4FC1F12BF60C64E8CF6912 +:10EAF000C18BE4E6DFA3FCB09741F8F9F77DDFE6D0 +:10EB0000E2BEFC4AF0DE86F026FEDF81B7F67F2DFE +:10EB1000BC9CDE93BB707D154AF7ADE9FA853B28B6 +:10EB2000FF4C948BE67B95FC5EF77F8CBEDFFC5F31 +:10EB30000BEF95D6FB9058EF28D54EFEC39FD2D948 +:10EB40002F80FBCBFF4FE9BCD92EB2B81C7930BF68 +:10EB50000F997F7CA144D607D91DD5A08EB1BF8661 +:10EB600071CEAD32DF83D07E6414FE1BBAECD89533 +:10EB7000EF3FAAD9F161E5B87F027B621BF9B18F43 +:10EB80002B4700EE066F01D90976C6E9EA5282E307 +:10EB900049DC4F8D768FB53E8C76B797EF5730BFF7 +:10EBA0000BEDDBC17615F36F56C17CA0FE9B5116B1 +:10EBB000B55A6B1F3FA3120E4E92C0DE1D9D6FDE35 +:10EBC000A7DC1CB2DF9838C95C3E816D4D54A0FFB4 +:10EBD0000973ACCC2FA15FDA5C3FD84525BC4C64EF +:10EBE0009535DC8F73453CD1FEB02155DB2AF3F31C +:10EBF000677607C0335EEB7A1BFA618A9BF1741B60 +:10EC0000D312C85F41FB4CC62CB45E0D09F94FAE60 +:10EC100031E2974F05E0FB46C94BC0FD1E23FFCDF7 +:10EC200028F74F944F2E72909D6C67B07FE4F336B7 +:10EC3000ED37EDD435A4063C0F25BC7AACBB10AF44 +:10EC400083EC6AB5CBD49EE0AE76F7736891FFF3A0 +:10EC5000F84DEBDA367EF5349B354D413B339A4522 +:10EC6000BB707F1EED48654A023527FF219E6892E2 +:10EC70003F7028AB237F60BE72B6198E0C2A0FA09E +:10EC80009FAB7A11B4477A4C651A3FC72EA338035D +:10EC90008979D9E588167BF3AD7CB0379D9412BF96 +:10ECA000BEF504B72F2F153CB7B20FD01FFABE7DAB +:10ECB00003D0AE157FBEC6326C27338B0BF7C1CCA9 +:10ECC000EDD6D401D82FE78B987C8B691F1CEB0EF7 +:10ECD00037E127BE24CE944FF47434D5EF3029C3E6 +:10ECE000549EE2ED692AEF34A7AF299F5639D854D4 +:10ECF000BFF392A1A6BCD3F72B53FD2EAB6F32E529 +:10ED0000336B6F36D5EFBE699AA9BC877FAEA9BCBD +:10ED1000D7F6DB4CF99CBADF98EAF7DEBDDC54DEAF +:10ED200027B0C654DEEFE07A53BE7FC3A3A6FA0332 +:10ED30003FD86A2A1FD4F894A97CC8E99DA6FC355F +:10ED40004D2F9AEA5F177CC5942F647F35D52F72BB +:10ED5000BC63CA0F573F32D5BF3EF94488DF43F545 +:10ED6000DD0E74A154F2F3BE1BB433A6FAB0532BDC +:10ED700043BAB10A7AB831EB82A97CA4EB07537F7E +:10ED800036900F787EEA40FF30A4E1AC8ED248D6B0 +:10ED900040E9E0BEDEA7BBE2BEF571DF4A24AA3738 +:10EDA000077D9B8E7AE3AD82DBE9DCEB52323F0FCD +:10EDB00056589382743DDA11E9C37DBFCEB7D14175 +:10EDC0009905603F1A1394285583112C00FBD2D863 +:10EDD0006018A571C178FA1E1F8CA53421D889BE90 +:10EDE000270653284D0A76A1B443D0496972B0175B +:10EDF000A529C11E94760CF6A3769D827D284D0D23 +:10EE00000EA1EF69C14194A6078BE87BE76021A5BD +:10EE10005AF0464A9DC11B28CD088EA57A5D8263B3 +:10EE200028ED1A2CA5EF99C1C994760B4EA7B47B97 +:10EE3000B09CD2ACE03C4A7B046FA5B467F0766A24 +:10EE4000D72BB888D2ECE0DDF43D277817A5B9C1FF +:10EE50006A4A7B07AB287505EFA77A7D82F751DAFE +:10EE600037B881BEF70B3E48695EF031FADE3FF8F5 +:10EE70005B4A07047F4FE9C0E0164AF3834F533AD9 +:10EE800028F89F940E0E3E47ED86049FA5B420F807 +:10EE9000127DBF26F8674AAF0DEEA7EFD705EB2925 +:10EEA0007507FF4ADF0B8387281D1A7C87BE17056D +:10EEB0000F533A2CF8117D1F1EFC1BA5C5C11394DE +:10EEC0005E1FFC84D292E0194A6F087E4EE9AF8241 +:10EED00017A8DD8DC1AF291D11FC81BE8F0C7E47A7 +:10EEE00069B31FA1C01A22179BE59FE532EEBB2331 +:10EEF000E3DAF4BB35B717F2F8C188C719FA3F4611 +:10EF0000554AB42F7F24E2AB57494E0EB26B98AFEF +:10EF1000C1AA297C1C3589B15BF01F1A63F583EC0B +:10EF2000643FBC790F6FB7B2F0C4D1DB51FF2DB293 +:10EF3000338C530895BFFAB86FE5EF4F44BB6B6550 +:10EF4000DFC60AF4C33CE06C2CC3B44326D7A3D17C +:10EF500099DC8F9B98C9CF9F46F7E5FAA46C5126A0 +:10EF6000F9F359C2D5C1355EE821BDFE073D54EE27 +:10EF70002F8A6C4A277D7195FD5C6DBD2BC5617D27 +:10EF80001B96EEC7C3FEEFBB7A7B65B6117FF54FCC +:10EF9000F49397D9FFDFD2CF353FD70F53DCB6912B +:10EFA000A0FF4AC5BA1FB57A26A1DFAC31CDE25A1F +:10EFB0000E9F6A129FB72E81BC3D85FB9B60DDC909 +:10EFC000EFD9784476A1AD322DC4FF6BAF30FB95FD +:10EFD0004A415E16027D942E963FB1E7B62E6F74BD +:10EFE00033A2B35515929FC735D6BDE684FEBD6EDC +:10EFF0004713EAFFD29073E4AA452FA419E330BD6A +:10F00000159F1D4538BDE23CC37B85B8A62999668E +:10F010007F29804CF07C04F0E0B9C8FEC43B0E0EA2 +:10F0200040F8DE9019EC048029EAD2085FABB91FE2 +:10F0300055F79F96837C7603FF7E94F87C1AFA033B +:10F04000F7CFBF3319EDF35535CF5AF15CB0316DC1 +:10F05000116351463AF2137D36A6311BC6CB96FAA0 +:10F06000162948EF560BDB4C7EEC74E6DF06F3B551 +:10F07000442CD5505FC8221E4F6FDF28F8454F3F04 +:10F08000B670BCF91648648FAEB25566C5F1FEA8DD +:10F09000DD413C1701384E3CE8DCBA1CCA4B14E693 +:10F0A00050FA9AECC670F2E72B30A6D1EE6466BB3C +:10F0B000F27E74AE737AA678A11312F78BE21FFA70 +:10F0C000D7A91DC6132995EE2A186F0653B54755C3 +:10F0D000033DD48E9987EBF3B188A3C13F8CF72908 +:10F0E00045BA01FC972E8D70F780F25A211F803EA1 +:10F0F0007C467FA655E270B0F912E10720AEC0BC95 +:10F100007DAD3D638DD3300FAC0772F26B215F4E46 +:10F1100048023F55A21DCCAF10E90AE787F12969E3 +:10F12000BCFCE403927F2B2F67C9909F7EA423C56C +:10F13000594CEDB07218233A64E8E364DE158B0293 +:10F1400058EE85C5D1705FA430C506F82C17F15B69 +:10F150006CAD44F15B26F8603E276B9E7D0DCB1BAA +:10F16000252D43857E9F17F36B4CE37035E2F858ED +:10F1700057F17CF03EE4A7FB6219C6C5E8F82B5DA9 +:10F180005BB588115DD759EF423A391BA5E13EAD19 +:10F19000548C3F55E6F129A17843BE43FC1E1778F5 +:10F1A0003D794F54F378681FC3F853306E91292E80 +:10F1B0008ADFD3E7ADD3418D5419C0F9F824A6FDF9 +:10F1C00009F71B621E358977309CC7892FA334F459 +:10F1D000FF9FCD8CE3745D7527ED874E966B92DCB7 +:10F1E000C7240F4CF342866306BA09A537AB45AC7A +:10F1F000B7E0079D0F74FAF928939FDFE9E9F7025A +:10F200003EC60CE771327E17FA40D0EDF5C672E8C3 +:10F21000F7FAD4450CF9EF63115FF57EE64F37A19D +:10F220005FF4D79942AF689559C8F7FAF8F0E72626 +:10F230003E11746B8F74B87B003E3E13E3D74820B9 +:10F240003791DE1EB0131D84EA91BF34CF93796DE0 +:10F25000BABCB5E0778DBE97AEB5BBC3A0BFD2DA5E +:10F2600017EEC4F392E3225E01864DA7F55105DE49 +:10F27000045D3D29FA7B52B4AF812C9E7BFA1EB40B +:10F28000F37350411FA1F8D5E5FE31DCFF42FF0FBB +:10F29000E32783FC0EEBC6FBDD2FB3256DC54B7456 +:10F2A000EEC6E54F3D96B771FED1B91BA76FB71EED +:10F2B0001FFA237C1F40FB6D668C77EE28FAD1F392 +:10F2C000C551160FFA696E7CA4EDB89549DDF9BCFD +:10F2D0006E5C5777F16DA48F893617DE4778A88A60 +:10F2E00099E27A3B8AF16788FA6C525C9BE78BA1C2 +:10F2F000FAFDD812390CE56E6DF08BA7FF08FD877B +:10F30000796C743A13C61A9FFE23F2DD3846E3ED9A +:10F310008F3947F9E811197D314EAAD69D2161FC3C +:10F32000D9658137BDDF0DF996123CCFDE1F333A28 +:10F330006506946F1C33419A619867A21243F1915C +:10F34000F5F6D1297344F91C28DF77D3A7BD489F70 +:10F350004C5497623CA963045371C9E35AE23FC31A +:10F36000B03E8E3BC780A7B811BCBC7E6C71CA4C46 +:10F3700068573B62F9206CB7718C2DAC2BCC77436E +:10F38000892F5F36D02594FB709FBF6A185016C036 +:10F390001196DA772986B48529CB0EA2FE6505CCB5 +:10F3A00085A4556FEF2C19FD5EBD055EDD5DF97816 +:10F3B000AB34F339D8BDDDF9BAEEEACEFD89AFC87A +:10F3C000EA8F38BE6FB44545BEB84FD252907FAE7B +:10F3D000955D79984A5971FC5CDFD1B900F961A358 +:10F3E00004FA308F8E8784BCF7F8503FDB34A512C7 +:10F3F000E5B2B5858F1DE43711FA8B8E8A334CE563 +:10F4000044EFB3BAE9FA8BEB0DEB305B86F0D790A3 +:10F41000DEA076308F07258FDB6A9077F02F92FF82 +:10F420008940C818FF08F2591A63D0E7D6719E794F +:10F43000280F37083E8279A618E3A0EF16F4B02112 +:10F44000D53319ED5FA6A81296AF9754290EF0B5E3 +:10F450004894EB71E6C0E012D919A29EAEBF575F87 +:10F46000C3FCA8BF5737CB033E6F9B809729DE4074 +:10F47000D73C8C8FE67A4D1FDF56E021BD6B1BE633 +:10F480005B84E97D1287C757C8D8B63E780EAE9820 +:10F49000E4F243E36DA40F1F4C51FDE82F5CD72D20 +:10F4A00056C82B4F8AC09B05F5AD1DB72088AF34D9 +:10F4B0007532D71F950CF1B25EB70B14467822B4A3 +:10F4C0001AD6C5EEF6B8A7915F8869F120CBACF9E2 +:10F4D0003ED227D671CFDF897EAAF52D7685DB86D1 +:10F4E000F0495C3EDA4A6C24671F12F8B20D7B9E2D +:10F4F000E463E8FC75BDA2AF67281DB492FF21F953 +:10F5000075636C2938DE43B03E64CFAC483ED0759D +:10F51000009970C22EAEDD3403F0B0D169C1080885 +:10F52000B67AC4DB0CF9ECBE6499CB66B0009AFDE8 +:10F53000772897A400BFA724E8B86AD16723F17E93 +:10F54000CFAA311695EAB006773C94DFBFD9C6D072 +:10F55000CE5562C705D0EE0ECFB7ABA8578BBA67B2 +:10F5600010DDAE1BB9BE04DB45F6B110556EF41CC0 +:10F570008F427E7C59E8C3C1A71B8A62A03C7E846F +:10F58000DA17F95BFF3EE86440C6EF7125FCFB909B +:10F5900091B5E89C83BC8FF4DEBAC2F7460E44FFF7 +:10F5A0005CB6E212F35D2DE37CAF61B4BF8B19163C +:10F5B000508BA07D6C2A1FD73D2C503210F38B65E9 +:10F5C0002641FDC82F130A517E0C9162F9BCF07FD1 +:10F5D000226E197D6ED55691F7CD1A3BA740C4A176 +:10F5E000839E7DB7DB820DA86763D15F9247F55597 +:10F5F000A247766438E5BD8013D04787AC0D644FD1 +:10F600001C025EA882C647BB713BC31251968CF0A8 +:10F610008F8CF72958DF56C4D856EC5C3E4AF5ADBE +:10F62000FDB40CA3FD7154E883667B84BDADA5A237 +:10F630003FDB6DD3500ED4169AF5879E46E6D94C23 +:10F640007E9FF06C73DED1D59CB7A69AF3FDBBF319 +:10F6500071753DFA5048FCE137DDB8FDA2A72FDBFC +:10F66000B4C538FF97C3A35006419EF3BFEF2B45A7 +:10F67000C84157C158837C99D2DD66EAFFD89213FE +:10F680000FA0DEAAF56816A39CD7F55242C87D16D6 +:10F690003DD5841E1E19EFAD6CEB1E4BA290F7D525 +:10F6A000CB96B013992DDF65D15FFF23DE6A8CCB3B +:10F6B000B0A66AA40FF5F208D16E794F7744F744EB +:10F6C000839CDBDF4372E618FB1771F4915E37C64B +:10F6D00091B149375D613FCEE38F74FB25B47CB4B3 +:10F6E000E8CF7D05FBA3A7A877B5F6C75CB19E5709 +:10F6F000B23F7A0AB8178AFA576B7F14C98D179CE4 +:10F70000686774B610FFAD4A5DCFCA0DF3F8B598BF +:10F71000EFF06ECC147FD55EBFA1FBDE6BBA47B6AF +:10F72000197FD55E7B7D9FFB8518CFE97ACC81F66A +:10F73000E57A978521DF1CBDE11515F3175C0A39C1 +:10F74000CF8F3177585BF7D91C4199B9E3814F715D +:10F75000BF0CE9DE6E1ABFCFA5D5321CDF96CCE513 +:10F76000517BF6A6BE4EEDD99B29A2BC67774678A1 +:10F770002CB17B27915E9AD4D7444709DDCCEBAD01 +:10F78000E35D97972F9D3D7E7F6FC07FE2382E2FE0 +:10F79000BF11F36CA6D371AE029CEF753FF60EC39A +:10F7A000FD44F10D9C5E42E7A3DB9F1D05DEF4F9ED +:10F7B00084D6EB2AEC247DDED7FD78CE81FABF78A3 +:10F7C0009085E2205BE34132C1792C38F822D24B9C +:10F7D0007402D737D1E32A0F52BE2B23796ECDE7BF +:10F7E000F65951E7DB1CE1D99C9EE64622FDD8A9DB +:10F7F000BD4E47D7B613271E97C5E787F69B4CF635 +:10F800001BC8698DECB41FD14EF4F5F090DE8FCAA1 +:10F81000E278DD28713BCDE754289ED0A07F6D466D +:10F820003F437B76DA63DD43EC34CD26F6F7DC6EBE +:10F83000890186C6F3A2503B48D7F7609FB9AD094E +:10F84000ADED20ABB083747B6AD520B0A784DFC058 +:10F850003AA0C58E5A2579C91E6EB6FF1416867653 +:10F8600055F48838F20B6D1CC3FD01EBC07E922964 +:10F870000ED8EB437D79DFBBE1A4BFFFDDF6C816F0 +:10F88000A4BFC4167B04ECA3144C8DFB06E3BE425C +:10F89000BF47152FC6AE9F58C9F03CD03EA2966117 +:10F8A0005C7A5C577E1FABF6C70D81EB703F30E290 +:10F8B000A6AE88877D161EAF1A36C222617DD5ADF1 +:10F8C0001678397E5390CEF77D1F9E32CB401FFBBA +:10F8D000867EDA6F06B45F9D69A37BCAAB857FC65F +:10F8E000F71DBF5F56D4A55B8A66A81F14FCB961DB +:10F8F0009CD78D7EE1D5CE24BE5FD2D7278BF3CBAC +:10F90000BA3113C8FE7A256219C903B29150CEAE3E +:10F91000E0FEAD50FAFC54F0835DE063E3484B98A1 +:10F9200083F64543695FF469F730EAB75689917009 +:10F930005CBB9BC35F3F569B8CEB5C9ECFAF61C2B1 +:10F94000FEC6361BCA4F750FA7FAD1AA6E8F335267 +:10F950009AEB0A93B6AC31F8B79B845CAF959A9258 +:10F96000713D1EB2EA76ABEB10EE731E4AECDA176D +:10F97000E965DD350F4F427BD77A6F0EE945BDDD76 +:10F98000824CEF39D4871F0F9DB069067C9733BA3C +:10F99000A523DC5B043FFE5D650ACAD5BF8350AD7D +:10F9A00092B07F4F031E415BAFFDE6D7D3346AFFB1 +:10F9B0006D48FB2948BF7AFB6B333DDF778774FDC9 +:10F9C0000D13C84EDA304E4BC179D8341B91249EAA +:10F9D000F4637EFD70D6D7E8677A4BC8236B16EFC9 +:10F9E00067DD9895C938AFC3DD3501AF87F66DFA8D +:10F9F0003E65BD7365F234DC1F0DE3F22651E85B12 +:10FA0000D86F52BCC0BAF1DD28EE00D7731A9E7FC2 +:10FA100009F80F77E7FD6F709F4F9EC9907E34A263 +:10FA20006B7D9CFB709C2E642F501A83EB6BA0EFB8 +:10FA30000D4CFFD3F634211DA6A97D10DFCBC5FCEC +:10FA400063C7897DB03D86D66FE3708F1FCFF59178 +:10FA50004F66D2FCBE21BCD44FF410BD270AFE086D +:10FA60002BE1EBCDC6D9FC994E239F0CCD243E0152 +:10FA70003EF0129F644848DFFA7CE34A1A9F437FB6 +:10FA8000407D779B8AE8B956E6F05CADDE77BF1221 +:10FA9000C6EFC9B96C4490C909AAE549CC1F91FDCC +:10FAA00019306EE12B616E51BED578CEB256EC970F +:10FAB000AA973116E8CE9AED1C8AF5E8C2C897A934 +:10FAC000F78BFD0C0DE967E532070BD85BFAD1DB4C +:10FAD0002BC2BF15DABE08DBE7B5B45FBD4CA5711C +:10FAE00043DBDBDA197F58C8F86B96258BF61C5E72 +:10FAF000DFBB32B773453FF676E6313C641E4AA45D +:10FB0000F9BC3E743E8E76FA290EE9C79E6C3EE73C +:10FB10000FED27AC1DB8AE0F812B4C8BFBD97EC2ED +:10FB2000DBE9872981E49B725AAFAFDE2E42C0A188 +:10FB30009F23E8F522B2CCF1071F93E4067C667997 +:10FB4000EECEE2E73BB9E45758CADF1D28B3D467CD +:10FB5000E2BB0265CB039486D26309ECD91AB85F85 +:10FB60003809E5A6B372700CEA810B6BFBC7E0FEA7 +:10FB7000D11BCDCB25C53B10F325FF983ED086B0D9 +:10FB80007C18C570FD6EE9C2A6DE04DFA74A7C1EA4 +:10FB9000B754DF5082FBF5F5595C5EBFB50CDF4210 +:10FBA000C0FBE40EE606FA7B07E808F3EF023D60CF +:10FBB000FEFD651AA57F5B9645E9491BB7CF6E111F +:10FBC000EF16E07D329CCF2661776CCAD2FDAA8BFE +:10FBD0009331CEA6E41FEFF4C7FBB8096CE4B8E19B +:10FBE000698C358AF73F46BBCDF72C278D33DFA3D1 +:10FBF0002CF70C3195B3AC7E2D79F2B330D247D3CC +:10FC000056C76E45FB77F2887853FD09AB3B99F2F6 +:10FC10007FCCE2F2614C4917D3F79BCB7A99F2E59E +:10FC200041B040F07C5D4BB6F8A0FF8BAF5BE9DEE6 +:10FC3000DDC5CA811DEEE479D2E7A1783FA9DF7B5B +:10FC4000794FF00D7CC775B8F4411AD9E725FF80CC +:10FC50007D3AAECB53DC1F3C7D93C47C681C34F9E9 +:10FC6000285E6EF116BB0BEBCDD824336F3F9C8D15 +:10FC700044F07D713873EB1A5A47DFE358AF09EA55 +:10FC8000E1F98425622DB5FB3C8C6978EF717AA38C +:10FC9000E84FEA4BF1FB4717AD4AC7F1E627413978 +:10FCA000D8475F8EAC9D65413928BF9E88E75B5F72 +:10FCB000EE94295EF1D645EF0E50019F730FD4BD2F +:10FCC000970FFD9EAC95990AE39ED96EDFC2E3D4EF +:10FCD000DC1DD0FFD502AF9FE2F8866678DE457A5C +:10FCE000FE62963F97E28E9626123DB7819759EFB6 +:10FCF000235E2CD1DA3648EF98EE9A8070DDB1CED3 +:10FD00001AEB938CF42EEEB1887E7C2C2F05EF2B12 +:10FD10009C5C6BA57B7BC037A3E83CA336DEC2FDB1 +:10FD2000853B89BEA6299A0DC79FB656267B427F82 +:10FD3000FF40E74BF6A0EC853D16F3AD96BC787F0F +:10FD4000C2894406E3DF9E164EEB7AFBA2811D10AA +:10FD50001EFDFE72A85EF80A78C66BB89731772F41 +:10FD6000BF17C5F2540BC6D38F6A18BE0DE773FEDA +:10FD70006097188CABFAFCC8582BC71B8F67BCB5B3 +:10FD8000BA3E5703BC9F19E9FB5481F43776EF4F15 +:10FD900088B7D329750FE3BD82737B7E9F8EEFF307 +:10FDA00034E27B0E86FDBCB7D90F697ECFE1923479 +:10FDB00054EED1DFF08E83B84FCD14FF938FA23D68 +:10FDC000FD6107B2775AEBB72A8E0FBD3E883C7EA5 +:10FDD000FF2B9024011EBD1AA3FB96A5AC4EC49127 +:10FDE00071FC69B848803FB542A2FB27D32DAE29EC +:10FDF000EFA01DB83C4AC5F5D4FB3F21F83AA50752 +:10FE0000B72B74B937BE079707D3F573A47DDC7E93 +:10FE1000C47BAAE8CF9B4320D2FD371BF2977E4FCD +:10FE200035AB479CD87F34D9EE4CC0FBC4367A4FF3 +:10FE300065167ADF215FB1DDEEF7C3FA4DEFA15110 +:10FE4000FF736D3B1EEE8BD59D9574FFEED65D1254 +:10FE50007B54C2FA5B8A290E97B14A7F1FBC87EA9E +:10FE60002F6E80FC7C4DA90CE0BEC2CFEFAB3A40B8 +:10FE7000A0A05CF131FFCA38E87FA638EF66DBA1AD +:10FE8000DC2077E6D799EFB72EC47BADA6F31CCF65 +:10FE90004ADC77CD40FFB84AEF7A98EFB1D55AE9FE +:10FEA000FC47BF6FEB8988A278C7B91B795C47CB49 +:10FEB0007C6476197036CBEB3F308AE0955C7ED659 +:10FEC0007A3EB371BC841678AE34BFD0F9CC72716F +:10FED0003953512BF9FD6DCC4FC76F4C01D3506E88 +:10FEE000CC7B42227FF4F0844584E7B980E778E850 +:10FEF0007796CF133D310FEF0FB200BEE700E8A6B3 +:10FF0000F2859BF93A0062DFEE9AD4B2DEA7129A2C +:10FF10006C88A753DEC84A1FDE7FA9FC96D6FF0077 +:10FF2000AC33F2FDADCFFA6DA85FCFB0DAE848E0B0 +:10FF30009B8A4D870F20D99EDAF85C12DA8B6571A7 +:10FF4000814C0BC8BD78DFCE8D25D7B4D0E1AD7E16 +:10FF500033FCF3B69BF3A1F8F1310FE9AF56787299 +:10FF6000AC6DC038B056EB27E242D156463B7FE637 +:10FF700013329D131AEA99CEF5E6F89AE89ECF1C43 +:10FF800080B35AC5AF3EA2C79960A5E3FEF997CEEC +:10FF9000B715BDC965446F9760FDE5B6E8ED2AE782 +:10FFA0001BEA9F7AB08788CB70F1F766F01EDB44BE +:10FFB0002C14764BA87C09BD1F78D4AA5A96C3BCD2 +:10FFC0009A0EF3FB61171555E8D34C3F8A94F6E47B +:10FFD000EE2CA11767A21E84F4D34DCF45E37AEB34 +:10FFE000EB3E1BF54B768B7EB9637A200DE9E68EEE +:10FFF00017C25C3E1C7E44E0DDBB20FFE5B3326BE4 +:020000022000DC +:100000004B0E9E747A77A0FCD4F5E47C794BBA8AC7 +:100010007A51C8C52BED0FFE59B8A6215CFD50EFF3 +:1000200073B88EAFE6F09C58CBE19BD10A2E1FDD52 +:100030002BB8E3F77617F67B3A2C407AFB34C055A1 +:100040004DEBCAED864B0EA0A33E640F90BEFF3C65 +:1000500091EBFB66F86E7BFF9802EB7E6BB7865CDC +:10006000BC8756F6A09DF4FBAD7FE2F78ABE900AEE +:100070003B901DFB6A201AF1367727C75BCB7C9A31 +:10008000F5FD3B88B7667D7F95F8C2C318D48B0B0E +:10009000187F6F60C19E0EF4DECEDA425627D37D04 +:1000A000B346925F403A749EC8769BE3ECECCCE595 +:1000B00070E0FAB413778C8601BE7B320BEB031C25 +:1000C000DF647E3DE536C24F5337E2EBF08015DF4B +:1000D000D1687A56A27783E62F2E8C2E64381E8F35 +:1000E0001B3D2FF4D52521E7247725C585FA34A6B5 +:1000F000AEC3F96DE6F1D1EC155647E78E9B393C5E +:10010000B0172778244D65657D799CB903F55BA40C +:10011000A54DFF48979E7C9CF9B285ECE60A1BB77B +:100120009FCF897D8545945B7AF27DB3A3278F7B32 +:100130003807DB51BA0736DCEE47FF03A8A9F938C8 +:10014000BFC39285E2B9FD3DBDF69E506FC5DFECA1 +:10015000990100A1C1AAD534C2BAAE889D45F74D18 +:10016000A7C0175CDF51F98BB663BB631D992AF3F7 +:10017000774C3CCC1067F6A6F5E8F0C5E83782BAB4 +:1001800032EC394AF33F4BC3FA9B310F783816569D +:10019000377C31B6772A0CE3DD7D7BED640F588721 +:1001A00036A6D1BE2D1CF6BE7D302E717F0DD2D568 +:1001B00081E4F82C15EA4F55C25DE2BEC3B0AFA191 +:1001C0009E3287BF63C15634F6C7F5E9CD56A8B84D +:1001D0007E00F5AECBF13F474FE677832AF03D9B9B +:1001E000C18C135A3EE1D594AFB0F1F2414F258C4A +:1001F000DF980A79DC33201DDC20537CD1F8FC2603 +:1002000005DFD34142190D743C31705E71E3BABA17 +:10021000B5BA18C8070E99DF2D1AAD68568433D5C4 +:10022000CD2A65B29FB4E1D8DF07BDF879B4C4B276 +:10023000283FAA84C5113F3A342BC2EF2991FAA274 +:100240009D5DB1FCEAE67BD3539DF97C2DFCBE4855 +:10025000D35D3C1E698A5267C5B8A518A636F960F9 +:100260003D16C6D5D17C9A808FF0BCAD5469A4F1FF +:1002700053E7B0385CAF0A508E084FD3AD3C9ECAEE +:10028000E2E0E5651A94C3FC36792D49E807F2F4FB +:10029000E4F6D97C7D3FA734D6509CDA24FECE54B8 +:1002A0001F989E717D16DA9AF77D1AF6370FCC02E9 +:1002B000AC376FCF0B99F4BE96A45970FC32D1EFD6 +:1002C0003C476400E300D91FCC7C7D6F4FF6B3FC44 +:1002D00070B7687F774FBEAF9C2DF883B13AD2D705 +:1002E000F3F6FCD707B88F6DAFFFF9761620FCED5B +:1002F000B513FC92A5A92BF99318BD7880FD646213 +:100300007E16C8279CFF5D3DF979A64ED7B344DC25 +:10031000A205842FEAD1D9CC671BE46CE39E2EABF7 +:10032000253B65EE13A1F77B0D718FB2496E51BC71 +:10033000B0646B9A81E34BD786B9509E97DAEA682E +:10034000FF2FA13CCB6A9167A1EDACB5DC5EB3AEEB +:1003500095C8FED5FDB276B0DF50BE97A736E5F062 +:10036000F711B4627A2751D8D9B3F854E07B85C924 +:10037000CEB6577EF6213D8AB589DB958AB083A734 +:1003800087BCE352BEDA607752B74D2487AC4B236B +:10039000687F6B0F79DFE563CB181FCA755F46ABCB +:1003A000F307619778188F0BE6DF15616F3ED0D3A6 +:1003B0006ABABFA2F3FF68BC476D90AB9E618C5DCB +:1003C000DB17FD08921FE960B4BBF0204FAB02744D +:1003D000CF4661AC531CB663AC80EADD47F1A8C0E0 +:1003E0008FBE082C775BBF30C2F316FEA38DFBFCDB +:1003F0003B7B9ADF49697E27A120FEAADE49D0DF38 +:100400008D2C4339DCA5254EBBEC10BF97FD6DD874 +:100410003FD28F405E930021E98CDD197EEC352FB1 +:10042000E41B7F8A6152477C57ECB5DF611C715930 +:100430009542EB5C167D07C51907EC0EB2937D4320 +:1004400003BFA3B8639B83EE213D82C0E5211C510D +:10045000BC7F4B238D3B95359EC178DEEB131AA2F2 +:10046000902CF4F8EE9585FD36E1BDE4A33D178CA4 +:1004700077A4D139AD881BB8FD5DF4C38E437F17D7 +:10048000E5178F77F706FE7CAD690A8CCC2E3CB55C +:1004900078BC02F09F7BA8E971CC473C7D2FCF3F11 +:1004A000D0941E46F99AF10AE0F35C95E8CF5733F1 +:1004B0001EFB3BF75B9EFFE4A99AF118775026DEFE +:1004C000252B1B2CD1BB6427851ED6FD6165965755 +:1004D000783A9405D06EB852BDC45E9E9368A7C8A2 +:1004E0005127292E2321C74DF92FB23C67514FB216 +:1004F00023FEA444186FAE8535A0FE1C25F6D9ABAB +:100500002CE6772B4FF6E072474FBFC37E135BF0AC +:1005100006FD7DD3B3FF3FDFDFEA90FE743B66A6A6 +:10052000E07BE8DFD2EB5FE85F97237A7F3765B740 +:100530009A7FF4BFD2FFC190FE747B57872307795F +:1005400015E8EE00CA66C37CF4EF3552207122CA6A +:100550008743329DDBD7242659FE84E3BF1E4FF725 +:10056000FE2E540E8CB140BFBD7B713D50730FF712 +:100570002FD454F178F8333B060E40D25A20CEB334 +:10058000CFD4FFCD86EFDB2C14E7DA0B76D5DB8AF0 +:10059000B3F1FD8E7A5B91C15EAD68F6AB342AF89B +:1005A000FE654DE2A74A398D63117ECBAA9F8D6708 +:1005B000B8A697EEDFE470E60A7886E5BA07F44A53 +:1005C0006C8153FFAEBF771CDA4F552FAECF927AB6 +:1005D0003121EF787FBD25BE5E65E15C1FF63FE20D +:1005E0009AF50EEDAB732D78BE39E0834A1BEAED28 +:1005F000B81E438719C7D3DBB5F88B9BCCFEE23D11 +:10060000DC5FAC8FE312F32B8B6B588CF1D455BDB0 +:100610009E7AC8710DC55B34BF7F88AEB212BBCE67 +:10062000BF81F1C352B91F13F3337ABDF8900FFAAB +:100630003B18DEF0EB7750CFDE17C5B602DFDF32B6 +:10064000302A7D671EC64DC748AC80B1427B54B787 +:100650007298C792ACC22AA237C6C82E5F92E5B97B +:1006600005E7DFE88CB08011C8BC364E0FDEBFC88E +:10067000F49E8C3737C28BFEBC8316368CC5B5E032 +:10068000AD54AC53552F4E5707C57BA5F097BE13FD +:10069000FD83CB3B4B48C7FAB8BEAC429F715C5F51 +:1006A0009667BEC88BFA31F46E517BE387AEDBDC14 +:1006B0005EDC3EF78975F31400FD19F4E44DC322A6 +:1006C0004CF97123E299DBE8971ED7C9949F54D661 +:1006D000C554FFE619BD4CE523ED0D7946BB405FDF +:1006E000B7ABDD7F35D47B1312F3E81CBD09F90BE2 +:1006F000D66BD7184C1FEEA4A23F62DEEA1BC8DF00 +:100700001D132CA5B4A2F6063AB49E1F1C4BF90586 +:10071000C108CABF253714D3BEE80589CE15A09FEE +:100720008BF8AECCC1B8BE0CFB59B0EBD9BC23DC06 +:10073000BEF26442FF23E5B7F3500F8DECAC5AAA2A +:10074000F11DAC6018F5D330F4A33CECA704F71509 +:10075000F0BD62E7A049483F85D5512AD2777BFC9E +:10076000B25DF09DB591CF7778700CF5A7973FD328 +:100770002BC3642F58139F50904F7438AC8D12A523 +:10078000BF0AF6A274E1AE310A9E1BFE25EBF70903 +:10079000A827A07E24A64ECF10CE2F207F5864FB22 +:1007A000F8B50BB9532AEE9D3C97E3DE8F74356A9A +:1007B00069A3E2403C44DA54DC078ECAEF933CCB99 +:1007C000D04F75FD648672CA9EC06C185F550A6969 +:1007D00091A1DCDB4E5CD8214177BA7CD2E534AB09 +:1007E000FD0F8A6B98C2631E9BE9E2F95EE6F89AF8 +:1007F0000689EB59DF9FF8F9C3EB39DEA3C87F0DFB +:10080000856CD24E92170DE9183FF2EF9A3FF44CE7 +:10081000EB3C4AE5FB8368A591E17D984F9AE1E0C6 +:10082000F4792538DE1470BC25E291DEBAEEBA0602 +:10083000DCD7D4DFDDAF1F9EE3C376E847F233EEAB +:100840001BD205EDD0AF7BD944FC1C233B48B7FF3E +:10085000F1FD00F48F2CDC67DF2A41BD85D14DDD31 +:1008600050BE2ECFF57E8D7878EBE5EF8EE13D67BB +:10087000776414C54F2EDC17F62AE6AF9529BC160F +:10088000EC0AF779ACD7DE3CAFC4874ECFBC04D4BA +:10089000B317604AF86ED685CAF7778DC1746304C2 +:1008A0003E29CDBCAB39DF7905FF950BBA9D26F803 +:1008B000AF5CA923FE9A8A01D830AF694BA51CBC56 +:1008C0007F0E8B4171E156A4C77E48979C1E2B82F8 +:1008D000B1828F9DA21F4EF7A17CB920184FF574ED +:1008E000FEB4E77AB5EC44BE7E4B60BC5FA916BA95 +:1008F0007FE35D9E9287FC7165FAF84EC1FB54D68A +:1009000002C98AF46187B4C8C0CF9E96F8EAE2248F +:10091000D4F72B9C1663DC4366F62FA3F3B86C4E1A +:100920001FD322414F921F299AA17FAE2C51233F02 +:10093000EB6DF74978E8C36EB30632D18F73DBA253 +:1009400030F2A7CD3A52B9324A6BBD5E9383B94CAF +:10095000033C8D0D76A534AE87B75F767F5C8F093B +:10096000028FB957753ED8DFCDFD7756BFDDB5C5CF +:1009700089FE3BAF8CFC703A8DA91BC88FC3CB7529 +:10098000FF1DFA05D13FD872FEE76BF6E721FFD8CD +:10099000132CA673CA567EBD42AEBFCE3E61E5EFB4 +:1009A000B1D5BF3DC002E55F38DDE4DF1B9AE11D34 +:1009B0008170CCBDC9FF8C15F2F31E782E7A90D6CB +:1009C00082C73A2590897EADBA4A8E9FBAB532DD8C +:1009D0009780BF8831C6FB89C27E38C4B8BD114A32 +:1009E000D773835D083FBA5ED1E5F50BCB9269B34F +:1009F000AACBED2BE99BF94AC3AEC3809FF91B63D9 +:100A0000541FBD0F77F822BED7870FB7E19520E0BE +:100A10001F922F1752998519F4CB487967DE11D2AE +:100A20003FAAA71AF54CD19002DA0F87C8EB2FB670 +:100A3000BF43EDF10C0EF5D0D0A77F78EE43E8DE92 +:100A40006A0D74C377E97EA544B97CAC357DE87A3C +:100A500058875FC7C75F44FEB61CF78AECABD2036A +:100A60006164AFDA7D6318C951488D72D41A62A7E8 +:100A7000EADFEFFB85FC7167B6793FA0CFB3C1A673 +:100A8000DB4D7CFE7F65DCAED0C7793DE7263FC2FB +:100A9000817A01C7DF96CDF5EFBF0FAEB6F5C3B6CD +:100AA0006CDD0EBF3AFDB05EE043874F874387EBB6 +:100AB0007501EFD5EA8F17B3F93D9950FD01F53E69 +:100AC000C577DECEEDEDA1A2BC92A5A64FC99FB41D +:100AD000374C433CBCF57218D5773B62C8AF5EF427 +:100AE000F26717F07DE361B9635F443CBAF7D8154C +:100AF00066B0E3F479E9F37C43CC1BF4CCCBD98624 +:100B0000F5D2BFFFB37AA778CCB3C40FF0E7197D55 +:100B10002DD8F7F73790DE618F44A8E89709E5D71D +:100B2000503E0DE54BB0FB48AE1E7C3E96CE217488 +:100B3000FE0DE54FA7E723D233C89F28DF2E54DAF6 +:100B400073F05D9A0B1AD7AF23D1FF897CDA2B960D +:100B50007E3766BF5CB761B084EF2472FB70A8B0CB +:100B60000F43F5DAC41CCFD7A89FAE7B3A2D0FF107 +:100B70007B657AFCB395F4518544F68A1D52A33EF9 +:100B8000F2B6C367DF649BF78357A2C393D9CD76D0 +:100B90000AB7B3626C64675D89DE1C396DDB2BFFBD +:100BA00002BD3972125BE8AD3D7B3A2A87F333D040 +:100BB0005B54CEBF64D7BC44F405F2DF83FBA81BB3 +:100BC000FFEA8A413D8888C0B879A0973C7CA7E7B6 +:100BD000E0803417FA6D6EBCCCF723A093683F1207 +:100BE000BA1F281572DA2BF6F1AE5C8F2B87CB83F8 +:100BF0003F20BC855D22FAA0BEBD5A3BB534A19210 +:100C0000E209BD901AE590BDF9F732CCEBDE3FE783 +:100C100097C9D72E39BFCC3E1DDECE7AFF8C7D3AE8 +:100C20003AE72AEC53A7DB3196F46140616B9C579D +:100C3000DEBFC89B387E9BF11550747D1F8FFA1E56 +:100C4000E8C24378FF27E9626451DD4507DA973B44 +:100C50009E9B807EC009186B427E845D0FBBBBA249 +:100C60001C62FAF907F919886F30EFFBD37BC300D8 +:100C70008F376E602DE723503EBC20A6D92F21B1BF +:100C800096FAF377EC7C6F2DCD9BBF0FCEBC8D0A0F +:100C90003F2714F93CC84719F2F921F9CDBC3EEAC7 +:100CA0001FE33BE32DFA89C7B9B7D83F4DC5B168FB +:100CB000B7EE92E8DDE69B0BCED9D0AF32B2A8F109 +:100CC0004027A8E7DBB16742640FF8BE4BA2F9D614 +:100CD000E6BCFAB0AF2B85B6B9316EBF225FF29396 +:100CE000BFBCAEBED8DD065FD6E698F747A421921A +:100CF000C86F457FF63A89E17BDCD80FC6295E4D87 +:100D00007B3CE7A3F619D43E604FB8FAF6130B7894 +:100D1000FC6E68BDC705DDEBF190D43FACC9D83A95 +:100D2000A9CDDF197952F4DB60B1CC477BED999CFA +:100D30000F1E467FF370C6E9A22EE7FD093E4E7FE7 +:100D4000CC1D02EFCFCD77638ED95EC03FCDDC3EA8 +:100D5000F073F87AB415BEC4FACF31D3498CE27976 +:100D6000F502CC23264152D1BE5EE0095B8B3F8267 +:100D700033B248D0353B3EC19D0AF0853193FFAC7C +:100D800099AED9890948D70B985E7EEA61D4471E8F +:100D90000B33DDD31BBE476A6E9FA5D0EFEC50FB33 +:100DA000BFE49C7C18FD6DB01E544E79E567E8BC2D +:100DB0002E245F10C2178CE7892F511EE7F3DF73D3 +:100DC00009C5CF2981DF2FC53D8F86A1DC6E6C1050 +:100DD000BFCBA4E4723D7256D4BB28D206C3EFA8A1 +:100DE000B0D4967566E277560C70139E2627E8708D +:100DF0005B268E00B81AE2588E0474F28F9C7F3CFA +:100E0000BC82E8C4A3E03905143DF23AC893C90294 +:100E10002F30FEFB88170CAD41FE9A9FCFCF97ED88 +:100E2000BB0EB7C95F875BF3870FE5DB7C221C6CC9 +:100E300027D1BD63EC27A30D7CBCDFBABD3BA43D2D +:100E4000B326FC92F6623D4684AC5749C87A0D0B36 +:100E5000C99799F3D10A9757D18808B0B7A6ED7E04 +:100E6000B0262901E389247A4B0DE4B10DDFCB4F85 +:100E700079266262E420A44BCDDA09EAA63D13F597 +:100E8000BE03E4D5189457247FA31F41F93C16F9FB +:100E90009AF23113F1DC67427E654D32D4EFF28C69 +:100EA000FA08C670DFBCE2412B22BDFB33718F28EC +:100EB000D0EFE4BC3F1EC0FE94AA84F747387F867B +:100EC0002E6B43E0D81C92F785D4DF7805F9BD225C +:100ED000A4FDD290F2B521F94D21F9D5E6F6E5331E +:100EE000F8F96A39AC1F22EE4AFC312897AFE75B6C +:100EF000725D1E9E83B9739D8FD4409B1BAB397D61 +:100F00000F7DC639D1489F5621FF4B133CEEB6E802 +:100F1000B37F6E3BF49115AAA778F9751139313872 +:100F2000BF93FD9986FC72324C8BA17BC387C0FEB8 +:100F3000C2857734AC2CC0F2C27CFA1D0B7C877D55 +:100F4000A421EEF2D507ED04DFCC5DFC3C7258C461 +:100F5000EF8A5312E8BCB8C94E71798F14A7E4B573 +:100F6000FCEEC5ACA31C1FB3F648F4536DB7FA43AF +:100F7000DE1197D7CAE4D7D8CCE302676F6AFDBE0B +:100F80003A9E0BE3EF2FACE1F18AADCA31DEB3FA42 +:100F9000CF3615CB43DF5DFF18FFD1C6FBD7B37348 +:100FA000C539AD8857D3E369F5F35A6F3BF1B48681 +:100FB000DF475B90DBDF10572BE2DC981248C4B8A8 +:100FC000C6EA43F1743FE7650B73E41BCE23743B21 +:100FD000F1EC322FBD3FFAD5B23994EAEDCF49F5A5 +:100FE000B64E68E79DE2BF5B3678D7B3F70FD1B056 +:100FF0007E2519A15F9DCD2B403FF457CB9688C32A +:101000007C11072DE26FAFD9552FE3EFE87CB5FBDC +:101010004404F9A7F1B000EDBCB30AD1D185CA6F81 +:10102000F75FA6BC85F6014E16DC7F19C6BB3D2ACC +:1010300086CA6F5FC4DF0DBBFDA7702AD7F1F7C565 +:101040005D8CE2F9F579D63F1DBF6730EE5B226219 +:101050005444DB6CE187FA62BB4CED4F3B629E442B +:10106000BE3EBD796C125EC29F696DB2B9603EAE84 +:10107000BD63E877564E41BD00F991FD32DA4383F6 +:101080004B18D9A383C11ED59CB845F48C42BA181D +:10109000B41BEA41FE4C80FF9E2613F6E6CC3FCB04 +:1010A000747FF3B3CDCF51BDCF9F488CC5F1BE7ACD +:1010B000E2DD24F46BCD656A3D9EFFBE26F8E33485 +:1010C000C835EC7F2ED06D18D4FB7C3BE7DBB940F4 +:1010D0009774C72484CE8BB657115DCD4D9619D227 +:1010E000F55C377F676A2EFE5E8086E8E674E880EE +:1010F000FF300E2156D0E93CA0538CAB9DB7BD6D9F +:101100003AADD8CDE934948E43E936945EF7E68A59 +:10111000F8CABEACEF2F89AF0C7DE736AEAE4F21DB +:10112000FDCE52B3BCF024A39C3886FF24BBA3FBA6 +:1011300024B433F637DB215CDFD6CB5C3EBD91DBDC +:10114000FD8315063FD07A718EA8DF43C473D06744 +:10115000DBB0FF725DFCFC72FF0FFC7D165F671B4E +:10116000F9A1F7C7F07B5EABEE9B48F7BCF4FAF54C +:101170009D6D4BF83DB065C9330D726F7FE7A41FBD +:10118000F13C777F07FEAECAFEBBFBFD88F7C87C4B +:101190000BF9EFD01C5B72E20CBEE3F35170B06A46 +:1011A000BC476FADE0F1FED684BAA89986F9ED5F31 +:1011B000D88FF84987E792382FFB28F50E15E9B24A +:1011C000BEF3E2067C77CAD741A1F9DABF2B53F10F +:1011D000F76C8AC4BDDB6F047D59A3BEA4FBFBD5AD +:1011E00009F80325F89DC35B933AC141BF0393C03F +:1011F000DF93B146DDA2DA0CF0B813143E2F27F3CB +:1012000018F7DDB7F6E67651496F5BF33DDE723EC7 +:101210000FBAC73BF587B20F1A601C6BFA000D833B +:10122000AD76F4EE22DE15530B307E437F9F45876B +:101230006BB285C315FA5E19FE4E20D26DB593BF11 +:10124000CF62786FC8F43E4B7BEF8B75E8EDE4EF2F +:10125000BFE02F4D76E1DF9BDFF392E9DE2ED97DF3 +:1012600076BC079CC0DF63C1782A7B82C31D164D04 +:10127000EF1C0DB3C6D13B611E94A3D634B6E02655 +:1012800092BB75F4FB5E5D7BEBE7E7BC5FFDDDA524 +:10129000C6E52F0D2FC4794B4C8B7719DED3EA604E +:1012A0001B85FB583DAF8F5F2AC6992AF3FBC8F810 +:1012B0008383F86E45ABF7AD98EB03BC7F62F745CF +:1012C0005870BF96D75B6ADE2718DFD76A4CAF0C21 +:1012D00060BD460BD3761ADE13AB11F168F648FEFB +:1012E0002E4AE3F2BBE97E597539A377B56AF473E8 +:1012F000B5F9E25E83782F457F6FAC34C146EFA924 +:1013000095427B67AEC1FFF00BDFE1BAD2FD64DD31 +:101310005FA8D3C501B0D9E85DA8CE494B899F3AF3 +:101320003888DE57A57D4AEF2559EF1DE242FF447C +:10133000337F76482EC0FB97F50BE3973619F8E319 +:10134000A38AB1EAF46CBC6F1949EF765FFB43EAFC +:10135000525CA78F6DD799F871DFBD672EBC908066 +:101360006914DD43DEF7FD600DE342644B23C907DA +:10137000F67D38D17951CCA464E37D64AFA0876B4E +:1013800033DD537AC37CE524A0FFC81639664DCA05 +:10139000F3229FAC8AA49BE16C9588CBA896CCEFF6 +:1013A0003CECE8CDF9768758DF1DBDC5BB618A46A8 +:1013B000EF4FEAF7EAEB3B2B4B8CFBD37BC4F8F700 +:1013C00008FEACEF7CC707E5067CD5DB5F7E6300DB +:1013D000E22B699C8BEE93A2BC4BC0DF138C702177 +:1013E0009CF51DB83EAEEF60A3DF25AE5F28F3FB92 +:1013F000D7310EB217F57BAFD6EFCA481EEEE8AD77 +:1014000099CEA9EB3B2410DE5F912B3FE0F2C04167 +:10141000EF957D5411FF23CA29AB3546C575FAD81F +:10142000D2D41FF96F476F1EA75823B93466F073E3 +:10143000DFDC220F36A19ED4E5811DEF31E49AE86E +:10144000C97635EF0C6E4239407CCADF6BFB67E52D +:1014500000FE590DEFAB1DB4D50D47B89A80CF777C +:10146000229F87B4D7F9FA7F9A4F6E0EE193577097 +:101470007111FFABF8FB84D6C4DD5146FFD93E4164 +:1014800027F511315C8F2D8CFF11E9C2BEA23C897A +:1014900069C67AB2783F4B7F17E03AA2DFF2C809FB +:1014A00056F207023D8E077ADCDB9BFF8E79752CA6 +:1014B000DF575B2D4D3908CF824CEF2BBDE1FB711F +:1014C000718FBDE5FE79AC84F1DFFAFC75BDA6AF86 +:1014D000FF37225FB5E8BF783C6805BF4F745CAA50 +:1014E0007B8DDEA11B64277FBFFE8E921E0F6ABD1F +:1014F000673EC583AEC27793603D5625CC2A8E47A2 +:10150000FDBDD9C6F8EFE1F07794A68BFAA740BCF1 +:10151000E1FBA1AA8BC75B784FABC5D11AE2EBF414 +:101520001BF8DE85FD2E99DE2F7BF91FFC7798AF27 +:10153000B9C8DF3DF2AE709ADEA3F19E55E8F7C65A +:10154000CA994ABFD3F471F492922A94AB42361FDF +:10155000973C012FCE3B91BF7F34242D6F12BE7F6D +:1015600038A42A95F8E9186B1889EF1FF9365A89BB +:101570005FAAAD955CAF3F104F797742C31BF86E01 +:101580009A1BDF47827CA9A382CE2D58B62AE1EFB1 +:101590004B35097E2F55BCF47B508042B53A85DE31 +:1015A00039A238E943E580CB3E2DEFD61CB400C705 +:1015B000F425BF2DD1FD37A23D9379BFA5F8CE917B +:1015C000E1F727ED9BCCF1B3D5BF9592F1F7C86653 +:1015D0006C0CF92EFCF3A1BFAB58BA96E7FF1BB910 +:1015E0007D016C00800000001F8B080000000000DF +:1015F000000BD57D7B7C54D5B5F03EE7CC2BC924C0 +:101600004C1EE000014F420801031E9210020970B7 +:1016100012120C10EC101003061810155BAC53C41A +:1016200092B6B4993C09946AA480D4A21DF071A921 +:10163000173020B6B47ABD03418A8A187C552BDA5C +:1016400001BDD87A691BA194DCEF7A2FDF5A6BEFCA +:101650009399334C02B6FDFEF8E20F77F6D9EFB559 +:10166000D77BAFBDC3186357E0DF604D666C02FCEB +:10167000A2D40EF03AE11BFE4CBB3AAD3B7D6ADCD6 +:10168000D11C463FD82E5E73A69D4B805F26B28943 +:1016900057946BB7BF5CDF35EEA815C783BA031943 +:1016A000CBD0BEE792D218BB986E611B25487D6BEC +:1016B0001D5201E6613E19384A28D133F6EA7E42CE +:1016C000F58CE976C63EBA99F723318B7E0EE6F5A6 +:1016D00037E8E3CA08C63A1556D791CBD85989D509 +:1016E000EC87F9FCBB4D5DC3609C7F8F1F26F925FD +:1016F000ECB723756E226339B8EE8158CE56627D01 +:10170000C6B4927930DEBFCB907762B9427079F17E +:101710007C5E09AEEBE59EBC92E5B9E179742AA145 +:101720007F9D08F3F50F90D9D3D0BA89B1CAE7638A +:10173000ACFF9D71BC1F639E9B719E082FCC3B1814 +:10174000FBB198F79C54B6D4937B75FB0A4DA2F677 +:10175000A1FA3AF6C9C8F0772F8001E739E11D6F89 +:101760005322ACCF9AAEE6296AB8BC714CD9140D9D +:10177000DAE9580FD7D7B99065C0FAD8BA7CD8043F +:10178000EC97EFBB378DCDD0A11FE6F6B8AB13C3F6 +:10179000ED07DF249BE66DCC93318F1BF7E563FCEF +:1017A0007532FE6F540DB6EF548C3C0C09EB3A8C3D +:1017B000F921D8CFA8F79B73C3EB7D44AC5F67DDFD +:1017C0009D57007ECC29079E866FB5322B6779E145 +:1017D000F1978BF9CD48943D01685F1B1F1CB91A26 +:1017E000D2D98F321FAEA7D2CE96CE85716B53F869 +:1017F000F7703B0EAFD90FF37AB39B788AFDEC7488 +:1018000086CB6BCB783B236FACD398DFE09B5C9CA3 +:101810002ED6A53236E9EAF9FBCB588E0FFA6BB219 +:10182000F97E16423C68B4B0A7D3F0BBEF5F429894 +:1018300036DA5D4D903E9AF0032AAFB3385C76C03D +:10184000FDB58AEB15188CBDA76510FE5D9655ABEE +:1018500004BFCE4B0B95237A2AD3655D4E4384B2E9 +:10186000079ECEB81A1FBE27F036793CC7FFED1A87 +:101870009FA795F9181B114E19730DF3C07ECE4D1D +:1018800048B9A44295B68EB21A0BECFBDCE2940781 +:1018900047C03C1ED166D658605D73F3535EC88462 +:1018A000FC8F3B6EE1E537A74CB042BE419A5553E1 +:1018B0000EF9FD9ADE8A78648C63F40BDF37E0F76B +:1018C000D20CEF8F34FADE7D7710E6FD172949DB65 +:1018D00088F3CFEA1E877862B43B25B18F5F94C24C +:1018E000F990950DD772316FAC2376FAB1A66FD30C +:1018F000627CC70DB908705D5E240536029C648762 +:101900006AAB83BC47B3698A46E51EC720C6BE865C +:10191000BF015D2C777C598E7C00C0A3D9DD90B6C9 +:1019200059CF870C7E96C9D868D6ECC2FD05E8EE83 +:10193000B892DA371F8361D939A31DE2B8BF7B099A +:10194000AEBB89C1BA119F77B89805C79159F7C640 +:1019500064C02B007E2DE0B5F4D26FFE4B1A87AD2C +:101960006A5DE76E427CF3CA5730F5BEFF0BC48F49 +:10197000350DC007A15D86F77794BF04F8B211D684 +:10198000B1FA858F925498D4BD881CB01FE76F0DB3 +:10199000660761BDC7337E331CF9D267F54CCB02B5 +:1019A000BEF081CDFB32C2C998E7673B9A922643CD +:1019B0007F7FDAA76855D0749502748074FEA512F3 +:1019C0009C9686ED47EF42B89DDFBF3E7D19ECC384 +:1019D000318157E733580DF18B2F3B877F0FEA5545 +:1019E00066CE9CB011B227EB0F99F8CFAD82FF0005 +:1019F000706D7323F8F425A9EC04CE63B945943FC8 +:101A0000751BCD7BA6D3A733844F8D9AB21EF0AE43 +:101A1000324BA2F1EC160F7D7723CE119DB5733CAE +:101A2000531FA0EFADF732D7C6F17C3F5961783F25 +:101A300075ED4A3996DF0AFB8970921DDD16CC7B65 +:101A40002A818692713F77B8503E19FB59A1AC7B31 +:101A500008E1BA1AE06C8775AD967C3C6F75B8FCEE +:101A60002EECB4ABB516BEDFAF3BBA37525E4F9A21 +:101A700003E3AD14E3C1461F9B04F5FFE45618953C +:101A800007AC67430E2C52097F98F2A50DF1E09246 +:101A9000D7E953A0FC569785CA0D7909F4716C12E9 +:101AA00094AF3A64A37DBDAFC36A2ABF9F417D0353 +:101AB000AF32AE96B73D5A2297B7E3D978C43B63AD +:101AC0003F0CB9DBD77E187217F6E54AE4BE5428FE +:101AD0004E19E961F5E32376D933309DA75A101EDC +:101AE0000373F250FE1AFBC36A8E3084FB3D62AE74 +:101AF0006C472AEDE79C4343990ABFDE7B48622A84 +:101B00008894AA43A9944FEA194C790010EDE39CFC +:101B10007FB9C79D574022DD87EDFEF8CC876BBEAD +:101B20000BE356FD10A6EEA27938701E17742980BB +:101B3000F30050B7201C5767587C08E74713C63D91 +:101B40005A02ED9B5EB5323B2181C52FE0265D2117 +:101B500079AE0EA07D3F0EFB827A836EF5F37D7128 +:101B600034E0BED8DD325323E06CF12F6CC1FEAC03 +:101B7000B0CF01D88738359EA911707E9779ADC452 +:101B80003FFDFA5B59B0EE1AB1FF093929A67A4C2C +:101B9000D9F48A17E914F001F94DA236C4340E7451 +:101BA000F3A9093F58C882EBF49448EC3198F76DDB +:101BB00035501ED1DFFAB8246B10FA0B2D73FA24BE +:101BC00090A3D6922F481E584B783F463D4FFAB906 +:101BD000D32C89E0F0697FF832753CE00BF01720D8 +:101BE00084D1882F00670DFBBFF08EA2D969499E72 +:101BF000ED063D20DFB13095E0BCE0B8950560BD55 +:101C00001718DB8BE517FC7697BF208C472C0BDA77 +:101C1000E13AEC9C3F0D2832C3375937C333B5D274 +:101C20000CB7811E339C6EA8C934950FF68E319582 +:101C30000F5D9967CA0FF34D36D5BFB1AECC94CFC7 +:101C4000F0CF32D51FD1566DCA8F6C5F64AA3F6A40 +:101C5000FB7253F9E8C0D74DE537ED5E6DCA8FEDE5 +:101C6000F8AEA9FECD871A4DE5E3831B4DE5F9C714 +:101C7000379BF213BA1E33D59FF8FE2E53F9A4D02A +:101C8000B3A6F2E23F1C30E5A774FFDA547F5ACFC7 +:101C90001153BE94BD6EAA3FDDF1B6295FE1FAD0C3 +:101CA00054FF16F727A6F299EA7F9ACA67E75C34D1 +:101CB000E5E768FF6DAADFC59A47A23C1A9AE57D61 +:101CC000683CF00B39E13CE1F9FB8B25960A087C76 +:101CD000E1F83C9717E5C957B42FB68D17FC4EE0D5 +:101CE000EF25E65C22675EDBBEF88ED00F2A942AD1 +:101CF00086F6C4850E89F0FD2FD6755C4F6BB23029 +:101D0000652A4CC7C9E5F43781312B205FAC692EB9 +:101D1000867AD77D41D681F2634011D044C47C924B +:101D20007507B344C021B5D265CA0FF4B84DF56F3D +:101D3000A8514DE583BD39A6F2A12B35537E98AF4E +:101D4000C854FFC63ADD94CFF0579AEA8F68F398EB +:101D5000F223DB6B4CF5476DF79ACA4707569ACAD0 +:101D60006FDAED33E5C776D499EADF7CC86F2A1FB6 +:101D70001F6C3395E71F6F37E527746D37D59FF8D4 +:101D80007EC0543E29B4DB545EFC870E537E4AF776 +:101D90002153FD693D4153BE94BD6AAA3FDD71CA1E +:101DA00094AF707D60AA7F8BFB8CA97CA6FA475309 +:101DB000F9AAFF043D1DF59126BBEBE902C4F32F00 +:101DC0004CE597E38607BF07DFA5D5499A54847889 +:101DD000FF5FA6FE1E4D48CA41FCA9034BD82EA1A9 +:101DE0005ECFF5EEFF1D9F4972EFB2CC4271906F4E +:101DF000F27B00D9B055377343FD14F805F5198906 +:101E0000FD95219D24E9AC03F544D05F48DF718145 +:101E10003E83F2C4C0EB14392303ED8C84B07E9A68 +:101E20007E25FFFAF55327E89E480F93F3BC521E18 +:101E3000A45FEFD83F63287CBA97F95B51285728F5 +:101E4000B90342409F27E362DB9F331D00B788F14F +:101E50005E8D6B4FCFEB878E673ACE53FDDE7EAD46 +:101E6000BC5F09161B69A73D0476BC05E8B5BD1E1D +:101E7000E80AF498CDF52ECA6FA977537E5BBD4A68 +:101E8000E9F6FA1C4A1FABD7A87C477D11E59FA84D +:101E9000D7291FA8AFA47457BD87BE3F555F43F92C +:101EA00067EABD94EEAE5F49E9B3F53E2ADF0376FB +:101EB00034E6F7D5FB29EDA86FA3EF07EADB297F0E +:101EC000B07E3BE57F511FA0F450FD6E4A7F5DDF81 +:101ED00041E52F81DE85F997EB83940FD61FA7FC90 +:101EE00091FA2ECA1FAD7F9FF2C7EA43941EAFFF3F +:101EF00003A5AFD57753F989FA1ECA9F177E86A22C +:101F00003CA167294EDA7F4FD9A85D8A14FE1E18BE +:101F1000E329C27D6B4C48BA0FCBAB99AC29685F03 +:101F200044D911D1FBF0B9E8DF5AC65801EA3B4366 +:101F3000B27735C17E37C812E15D438ABAAB097EFC +:101F40009D2EC6591FCFFC71798436A467DF83BFED +:101F5000A9A04EA5D51F433BE06E1FD83764BA0138 +:101F60001EE6101E9EF84A7612F3D3389FE778AA31 +:101F7000713DCC19782F03E6F5759975A1DD943282 +:101F8000DA7B5B1ED0CDDD4E9F8DD43AA665A39D36 +:101F900039C71E1C783B9477BFAA68BBD4BEC7BBA9 +:101FA000BF7D2630E57ECA5FFE633ACA9FCAFF55F1 +:101FB000BC089793D6C41AF42BDC23D67F4F9E6CB3 +:101FC0004A1F1DEDB91BE7F9D948DFB99F02DC6A4A +:101FD000BF357200CAB1AFA1890D743D97A956A44F +:101FE000EB794C7F2503F539D41B217F3BF3535A02 +:101FF00097E3BD1FDB2F044301F3DEC9F6E108B40C +:1020000039764E0FD1F3589BC7FD106BF364537AAA +:1020100060B4672DC2E5D391FA330F40953F8C56DB +:10202000E9FBADACFB099CC7DFFEED8B73D28830BA +:102030007C0DBF04C32D02B8D51E57C83E06FD8FC8 +:1020400051FE41D0B3A19FD6D207B83C6CE07E8B45 +:10205000B5F11F576079E85EC0296010177CAF3C6E +:102060008E7A5E2D9453BB6FF1FC05B04B913F5DB2 +:102070008E83FA909796C3BFC1B1F861C83990FCBE +:102080007841EAF7F218C690EFBD3F9AFB3D6AD15E +:102090004984FDAE930288872C2D68C5FEFE32C1AF +:1020A00045F53ECFF16E273C61816DF9F0FD24E2EC +:1020B00009E2BD2B908D7E85F532C70BFF6B8AF64A +:1020C0003480C4E2F2E8E84FBC7B47F278F4832125 +:1020D000FEA01D1412FB69E0C737DB208DE067808E +:1020E000774FE1387FFED5C41CC48FFB5F9EA4E20E +:1020F0003E3761FF69E1FE19BAAC603C6540EE4EC7 +:10210000F457CE41A502F1725262605706F9BBEA5C +:10211000F6C7E09FAF8A7D3DE9B65606A85F4E97A9 +:1021200046F91131BF23020FE71C7975D85AE8F739 +:102130009BC7AD9A1DC72D08E57A1263E073DD9346 +:10214000855911EBB8FFD019EEC7438F1FB43F3943 +:1021500048A5795A1DCE60EAB8F0382CCD72BED7AA +:102160009EC844F8309A9F818F8A2DD1BBD31939EC +:102170007F8E87400FC7110F911EFCB0DE5BEDEA2A +:1021800080DBA1FF10802E08A9F7672E1BE2E37207 +:10219000A651BA827928BD87F96D88FF1EFF2336C4 +:1021A00006E37D9D75D0F76F16DD391CF3F7B3EEAE +:1021B0007237F4775B5BC32BE89699D7FE48C5600E +:1021C00058777560D92B98CE7D4A3AE757899E3E5D +:1021D000C0F14392AF65088CB7684F69CB50F87E69 +:1021E000ABC2F18B4D64EC69F4136469213FECDB05 +:1021F000A78F8CCE43BF85B18E9080EF81D17A08B6 +:10220000FBA96D64842FDDFF66A7FDEBA5ABA26F74 +:10221000FC7EA88CECAB7B09E2E3FD2FDB53C8AE60 +:10222000645C5FFCBA90DF98477DD18AF29BF2BE76 +:102230009F217D7CC3CFEDA9B5F1FF4BED4392AC5F +:1022400049C3019FADDC4FF8B9D5E16AD2904E0386 +:10225000C371DE001DD6944CF443FB56773A91E8E7 +:10226000F3B22CFC78C3BDEEBC116179FDB91C281A +:102270004C1A41F2FC4B5CC73137D8ED386E9A43AB +:1022800053B03C39309CD37FAF7C605712C27EC1C3 +:1022900087500F4E0BEBC16BE38733B4FB4312EB5C +:1022A000968A49EFA1754965AC03E95A2AFAB6172F +:1022B000E7B52381B99449B1E8DCEB2E5470BE9A9E +:1022C00083E69BEE213F021BE4D0364A57CF03F052 +:1022D000B306ED7BBBF0971DFF9F5482AB1FC67FFB +:1022E0003A393CBE5ACA3A18F021C9F56DD2D376B4 +:1022F000809EA6A443BB78DF6E9C8FEC662EF417FD +:10230000F9CB84FFD5C6E17A351CB9FE95939F4180 +:10231000FBDB844BE5FED11C17DABD96789AE761AA +:10232000BB7754FE04F4BF0D793CD22E3E9E710360 +:10233000E56FB571BEC7BE6C4A47FEE364AA1FF7DE +:10234000F7565DD236127F0835A37D3D171081FC0C +:10235000434556139DB128FF15A011F923ABD17F3A +:1023600045FE267614FD99F3D09F29A1D973DA8012 +:102370001BF9AFF68C065B0BF7D5028608F0912CA3 +:1023800056E4C079343BAB0760BE31E156E68DC1FF +:102390007F5A41BF0ADA23F216AFC3D58FFE66F823 +:1023A0006D6CDB935810F88BA5279B05FF81F15BC3 +:1023B000A2C68F4EAD568FEB7AE6630D19F3C9A214 +:1023C000F461C147611FC9DFB56C7EF0FD64F2AFF7 +:1023D0003652FD650EA75F015460CD663FAF2127E1 +:1023E0008D340B7B00B8EF7ECA16E0F80A183A0865 +:1023F000EC2FB14F373E35E38FCA38CC5BD8D908C4 +:102400007F0BEA37678DFD55788AFB1B87A98269A8 +:102410006FB98E7EAABED677BDE906D097CF5AC3D4 +:10242000F9DD81CD8B107F2E3D05EC15FAFF796922 +:10243000C32C2BD2C14E993D1D633C540782A6F993 +:10244000C6B3A0493F4B89CA0F89AA9F19553E269A +:10245000AA3C2F2A3F39AA7E59547E5654FDEAA839 +:10246000FCA2A8FACBA3CABF1E55BE3A2AFFDDA81C +:10247000FA8D51E51BA3CA379BF277E6678AF38E84 +:10248000C7A2DAED8A6AE7273C0AD307986A4E4C5E +:102490001CA47F3D775E26BCEA78E9C8987F85FC5E +:1024A000BE75928678B5EFFCD98D37A1FFB0C342D7 +:1024B000A7155ECFA72D21DE2D0B0D427D9291D366 +:1024C000F4B60EC719C4BFE760FF918E9E17F4F4EF +:1024D0004BB09782A318FB15D84B98BE04F6127E1A +:1024E000DF0BF612E673FF0474D90F5D692FC9E1A3 +:1024F00075C1BF8213F1E175C1BFA2D329A6F2C98C +:102500009F0E31954FE9CE34E5C71D1C63CAEF49D4 +:1025100034C363A93FDF549EADFF4F3CEA35ACAEF8 +:1025200038FC3D13E19447FC241A5F6E8BC49788F6 +:1025300073B1F7012EFAA870FE83EF2835C8178E05 +:102540007CB496FD02E863DFC1949D28079E5B91F1 +:10255000D09C3200E47C3ED783F6BD742001C7F9DD +:1025600020A96336EEC3CD609035C2BE94BEC4824E +:10257000B86FDA2146F2E342BE4A78A01DEA9255CE +:1025800098EFD8835D43504FFC20C9C7507EBC787C +:10259000480E3442BD2377FDF287D8CF5EE8075559 +:1025A000C30F52A05F286FFA938C1C89D10C813F16 +:1025B0008C452507D6033A6F0D3F8FE91A82E7D184 +:1025C000617885E2115ED9CCA197437F1D2BF9F983 +:1025D000D6BEE0AE57C6417F17754737D3107E8908 +:1025E00024E73A567179B12F58C6E1E6D77F8B7E42 +:1025F000EB3B052E9D11F069D87F8CF8C5BEC33624 +:1026000015FDEC0837FF28B4471DCC6F47B8E5DB54 +:1026100056A11C1EACB0A735B4575DF41D1DD8B62D +:10262000423A5F4016801334FCEFF2959BF1BB45B4 +:10263000F8DBD961DC97A57EAB3F14B1CFAC0EF2CD +:1026400026FE6B0997D3BE46E4715E16C6D7B54524 +:10265000DAC5CFEBFDCC5118410F0717D8720BA884 +:10266000FA17788EB7225866CB45BB40775F1800C3 +:10267000F9CB67E652F9BB65EE2F1AB470B94B7609 +:1026800051794BF3BCFB0A71DF8061D851EE6EE2E9 +:102690007E7847AF9F3EC2AF0EF37BD1D2D1F20D11 +:1026A000A8DF516477617F7334B33FBEC3FB76BC50 +:1026B0000E70BF03DB45AC636F50AE0CC03EDEB6A0 +:1026C000D2ECE75FB1C5DC7E4201B70F2A0B389E22 +:1026D00055F983E52EE86F0EEB6A46B938DB125CDC +:1026E00084F018771E2001FD8ECB39D39880EBCF74 +:1026F00095B491D04482EFB8AF5AAEB4F316E82A3D +:102700003EC741E73A7B5F92096FA2E9FEF5836716 +:10271000E3114F3A0206BE7511BEED3B7880E8F436 +:1027200045A4BF7EF8C609814FEF5BFC89FDC9ED6A +:10273000855E85F923F1C0380FD212983F021EB38F +:1027400073524DF986FD365ACFC15F313A0FDA63C5 +:102750000DC9F7C17A0F4CB2BB1A8953F273B97C19 +:1027600081DF7636BE69953887D9E80ADBB90783F9 +:102770009C7E0F32753AC24B03FDD20FEDF30E86ED +:1027800064D4D35CCB9D3EF4F1E69DB099F8925DA4 +:1027900033E735660BF321847F54DEF06BE336625A +:1027A0009C40341CA2FDDADF2A4834C5CDEC8D3ABA +:1027B000C71B6B9CE37515507F7BBEAF2AD5CEB08F +:1027C0007F3B2CCF1B089E7BEB1D12B6CF0BFE511F +:1027D00056C7221F0EC9888FE358A83101E9E220AD +:1027E000D3303EC5E84FAAB11F213E703C93CE7F47 +:1027F000214D90A1FF03C72F745E417DE25026F961 +:102800009F8CFE59571A9DF719E31A72E8C0F16AB6 +:102810009AEF738764B26B9FB374C7A7C4D0FF8C61 +:102820007DEF4BEE44F77F757B3FF1EB26FC15EA1D +:10283000CD2BF03E563001E17484A5C2FCE7147C38 +:102840008BF4CE5EB839ABA9DEEC7133653CB7DAF8 +:102850003A3C6527AE07F453F909C8A76A90877612 +:10286000697EEE074B2B1ABE93FC0F426F9C3DC650 +:10287000CC87F7A5BF156F45B8F813A9FEEC2473F4 +:10288000F9EC71BF5A81DFFF75BE43C57EA5710BA0 +:1028900007A3DF739B80D39B0757C78762C0E506FA +:1028A000AB2FB93FFAB92164213D37B5279DF4EF2D +:1028B000D979FDCB737B8F42F58DFCFAB8901BFD67 +:1028C0004C76F74F3FFC34F27B7A4A1CC22B5BFFFD +:1028D000BE03E5EFBE74AEBFF7D5AFB10E23FF6800 +:1028E000AF7CB5FB91CE36ED4E27F9BABE369EE4ED +:1028F000EBBB055CBE6E02B8E17CEDDE8420C267F6 +:10290000533A2339B5576B24FEF3685297EC81F2A2 +:1029100052C057844F08F91FB41B971E6488C74ED6 +:10292000CD33DE4BF5B89CDD942EE4ECE26F8FC620 +:10293000739DBD6E9063B86FC1E071F4230E04B94E +:102940008E7658ABC4685EFE9F3B29AEC890BB0331 +:10295000D146077ADB74908F9FCDEE93D14FB0377D +:102960009DF3C9D9BF582EB7231FD1E400C6E74451 +:10297000EFB3EAEAE2FA8A3385E86833C2655418AD +:102980007E15CA9E5D68F7EE630E1FC6F9A8CCE7F8 +:1029900088F4DB18F5B7A1FE06E98FAB0EA4D0FAD8 +:1029A000B4D5AF8E44FCAA751277AB5072FF887E07 +:1029B000894DB5F12E5CDFB69ACD2991E766578F28 +:1029C000EB946518773DE821C82F53826A29E255B8 +:1029D0002AD31A30DD2EEAFF448CFB53D41B613F0F +:1029E0001F177A23C0232E1BC7F758482F7DA24EEE +:1029F0009615E8EF9983724089614718FD05447F79 +:102A00004F88FE9E12FDAD3FB4B9D48670F4325AA1 +:102A1000CF60BFD6887E2C759D5AE6A0F555C9714A +:102A200008A76646E7724F087DD668BFEF60590376 +:102A3000C6675C02C591013F4FABF3C6C5A13F42DB +:102A400002BD07F8F5D35B78F9A0380B9DBB3FBDFD +:102A50006D16E51F75F2BCC19F9E12F34AABD335CC +:102A60003C2F7F42F49FDDB578402C7F9A91768889 +:102A7000F5ED15F37ACEEA953F42F9F15B25E0EFEB +:102A8000C78E33F8DCF8A099BF8D3B186FE677024C +:102A90007FAEC5EF5AC2FCAE6802F49B3BAB4B76EF +:102AA0008C80E6BA4F4715A997DFA5717E67C4737E +:102AB00034A9A0EF66605A46F87D292B6527E2B35A +:102AC00011CFF04366FC349AF8F27A01B726B16E62 +:102AD00087DFA7A31EA230AF1FF168402F5FD41C71 +:102AE000480F4D599C1F35264C65B1CE75DB447F90 +:102AF000367F1BF9093658DAFBF53BC46DE7FC4E0F +:102B0000E9194EFCAE6CAAC38174BCC1C9F5800D35 +:102B10006A9E1FFD461B548B0F314B61117A28AD05 +:102B20008FA99641E2A82DD3544E725A9ADA437E69 +:102B3000ACB644C13784BC4D70DE5DC5C86FA031F2 +:102B40009CA7A2F2F80ACCE3780EAF93FB73722D28 +:102B5000A6780E47967CC69E847AA359EFB3A55BF0 +:102B60004CFA9D728D388D072624C68CA36569B1F9 +:102B7000F1A4370EC3F063F4512F1A9FC6388AC8E8 +:102B8000AE59AF320DFDA24A7A1EF1E55D053C5A01 +:102B90006E571B97E79B04DE45F7D324E8C2C82B8A +:102BA00006FE6979541F20B33107FA7BE8DD54F241 +:102BB000BB1E2E50C85FBEBE289BE28BD617DC49D9 +:102BC000F278973B73178FEFE5FAC52EF772F93459 +:102BD000CE239DF3DD683FC5AEB6469DFC1C6E99C5 +:102BE000E46B6B7AA32396BC7A58CCEF7181BFCF8C +:102BF0000AFBB84DADEE37EEC05897514F0136A8DD +:102C0000C5E8DFE234D375F6F1FEF94840E0BF5184 +:102C10004FB53019FB55453CAE512FC36FEEF797BA +:102C200013B8FC5C96AFBF306160045ED6D9B6A124 +:102C30001C574ACBE527D2701F65D26FDF50573340 +:102C4000011F82DF7AB79C8C7663932A133F6FD77C +:102C5000D73822F58668F8BA86C93C6ED77F6EC829 +:102C6000E12C9C9FDF81FED75655A678AA2637A770 +:102C7000F326A0FB58F41BDD5F5BBAD1DF9945D882 +:102C8000DF91823B595BC47C2125BF88738212404F +:102C90003C5059D0938FF6CC3B0AC551F78DC7FDF8 +:102CA000FBAF3E9B60F86BFAF7635D8BFF5F6B9C3D +:102CB0005D6DB284F3BF847123C9B83D9CFE86C3A9 +:102CC000AFEB22E2975D25517AAE900FC3D798E51E +:102CD000C14DBB534CF686D1DFB5E8395A4FCD62B2 +:102CE0003987D04FBDB783913F7ADF41D96FA5793E +:102CF0003A082F9EC3A631FADD1BE59FDD07FDF5DF +:102D0000C7A7C76D77127FDE67658724D0F7980E57 +:102D1000AAD120C64917C6BD5CE44D2A84F9E5F660 +:102D20008C237E2E1D3A4671AF00774EC71A3F079F +:102D300064251EC2DBA63990473876CCA3F2D607AD +:102D4000998BF296C010C4FB3D828E8C79EEC90837 +:102D50002E42BD71DF8B1FCB91F1F83716723B7A93 +:102D6000AC23490FC4A05F5594DB2DCC1F8F675E49 +:102D70002FA510DF7233970DF1E19AFEE29A600DF4 +:102D8000C50FCB328FF38D5AF75E4C07E3FA3D63E4 +:102D90000B319E5CE3EBDEE4F1F8513FF38242C677 +:102DA0008AA1CE41BEBFB9CC43EB5DA6F1F5BFA968 +:102DB0005553DE09F0B08FC7F9D48A7859E6B20FBF +:102DC000C67E78FCACF71BA0150D8D354F8E5FBD10 +:102DD0007015707C5393D954D427DD3692A32C47B9 +:102DE000ABA17EFB58C716B18ED2499E19B88F92FF +:102DF00093AFE3614067ECD79F64A3B8F49A7C6F0C +:102E00005521D11BD3515F7C78814AF624CBF548FC +:102E1000E8CF629EEBC3E3EBAE97A3F70BFFA6A44C +:102E2000216C19943FBC3A89E26722D6B194F6C36B +:102E3000B9D14372DE63C09FFBF996396DA4FF5F81 +:102E40006BFFC3FA8F87EB3F924EF2CC9F2C133C63 +:102E50005A5CB26E217FAE83F85A63C212D28B36AF +:102E60008B795CCD5F24719FC2CC5FAC91FC8BE40D +:102E7000E4FF5B3FFCFAC20CC137A3FCF1AAC78D8B +:102E8000E72ABF069D91F451ABC78DF22BBBEB3EF9 +:102E900086FAF025676CFF9291B61A7255D809AD83 +:102EA000717A4DACF8A2B603B69591F4FABCA0D3F2 +:102EB000E70BF9B9336C2DC5AD36833C43BED6E480 +:102EC0005ACE249277404FFD8C8F71BF917C16E3D0 +:102ED0007C4D7CF62BC623EE2E34EB692D12CC0BE9 +:102EE000E9E15D85FB57F007F235DB06EEE4E7C567 +:102EF0006C5502E0E7EF057E1AFD1AFA5BAB58DF6E +:102F00009062FD00D259AB80F30F26785EC0FC9E24 +:102F1000FD85843FAC92E3EB43128FCBEF8B3E14E5 +:102F20001BF352DC7E25B707B259A5636E0C3967D7 +:102F3000E8FD617F33C7E71657354FD3B81E648C61 +:102F40007BAD7D6D1276564BDA6A162917AF775F27 +:102F50000CBE15BD3F1667945CEC633E57C14162E1 +:102F600086DDF47BA4FBDCB22E79782CBBC939DF7B +:102F700064376D2BE176D336B18F9BEB5C3BD1DFB1 +:102F8000BA19E438C92D9F8BDB51027EC358878460 +:102F90004AF010D64EA901979D424EFD50E89FCDB4 +:102FA0006877DAF1FC4EA7F467F59594FEA8DE4B3E +:102FB000E993F52B397DB8F34AD1AFF13818581899 +:102FC000DF951A9C5486F01C08FC3F0EC61DB443C6 +:102FD0003B4CE7EA75F1846F6DF53E6A37703E9FB2 +:102FE000EF13DEB82769ED136D048721C55E3691B6 +:102FF000DF930959010F971A38CA3C8350DEEDB1AF +:1030000006FC8DD87F951CC0754AA29F149D05D0E3 +:103010008FDCB0FFDBE47779F85D85F436578961A2 +:103020001771FFAB5BF4B63960E091370E99EAB6E1 +:103030002A0EAFAD958CF860E7A62374EEB0AD8A8A +:10304000DB5D036A1A0FAFC075B81586FEF801354F +:1030500099A5E8FF709539BA29EFB599F023A9C071 +:103060009C4F89F2BFBAD8A62F906FBB98CD743E03 +:10307000F455E93B6B62B41DE6243DF55209F78334 +:1030800084E945A3752EC4382FC0AB856AB3359348 +:10309000E4119FBF41DF5B4B36572CC7F6BAC3879D +:1030A0007E0C9B3E87FB232B39DF6C92B499B86E64 +:1030B000FF427E7F10EC4AD2DF7E2CECB31342EF4E +:1030C000D956B59CFD0EFB992F13FE85CF19BB89F0 +:1030D0005EF7DCB63C4E8A5827FADD23E185FE76A2 +:1030E000131D6D4A319DB73D5CD9BF5FF147F56651 +:1030F000FFDF8F2C5DFDDAF17F9E9849F897B8DDF0 +:1031000046FA9FA36710E98BDBAAF8387BAC5EB266 +:10311000F7004F028D486F55174CF6DC8D3966FE6F +:10312000F07049FFF69BE16730EA392C7E166B7E22 +:1031300071EA57B3DF8C7E8D7A46BF0E717FA6AFE2 +:103140007E1F9CC8ED37C57D71D4A731E27497E529 +:103150007B574F8CF0BB28EE273EFC14E0C3BEBC6F +:10316000427ECADEF80161EFC53B2AC96FFD63816B +:10317000377BE61C792C0BF1E81D1E741088E37177 +:103180007EF125DC3F6A9DA6492867A3FB6339B21F +:1031900069DFB79670FFE16FDCD55208FD85F3BBA0 +:1031A00089393E61E90E12FF71CA1A58E8F05D2DA7 +:1031B000C5B8B2DFD45C20FD74AB5396918E4FD46A +:1031C000A410BFDF56C2FD8EAD25D51C9F57C97414 +:1031D0002E1527F41C5A27EE734D661C9EA30D6B0B +:1031E000187037F6BF7D22BF17BB19EDEA087CDEE9 +:1031F000EC36F29CCE764E74113C1F9E9FB7612434 +:103200008CF7D335165A83CCD438B40F5A2BF939EE +:103210009BE3CB697183203D56951977CE89ED44A8 +:10322000FFF31B83766C877C09E6FD7A55751CAE2F +:10323000776BCD5BC9D8BF8D2512FFDF5AC5CFE9AB +:10324000F7DC565D89FEE4CD3EEE0FDD5CB53A88D5 +:103250007CF9D24A4679BCC6545A807A1AA37B625A +:1032600056D7B7D9F402CEBFEC45D09F7A1F6B4535 +:103270007DB892F7674D37E3C79E29B07F88FF6E10 +:103280000BE905DBAA387FBC34DFA622BFB4E18E90 +:1032900061B98BD17EFFB4E6886304CD87DBF39DF3 +:1032A000CE943207C27D05F79F26B499FBB7CDD9DE +:1032B000E51F29E430F7C0B2A43983307E9C980C16 +:1032C0008BAF39A0DF85FC7608E7BFC679DB8F07B7 +:1032D000733F5BB4FD6B67CBFC599C8FD17A2D5546 +:1032E0002007C6E1B13EE7BB061EC7E79ACFCD3245 +:1032F000569AF3B628BE6D89E2D7BD7AA5DBD2AF68 +:103300005E69F8299B85FEB1DEAA2E247C673EC249 +:10331000CF66C5359EEC4BA0D3C1D09F7D783AE9EE +:10332000637F9E68E8937A11E2E136E0CB787FC94B +:10333000B6B0DAD05B7CAE7EF41647BA6C5A8FD545 +:1033400015A54FBAFC2CAD1087E570B630CB39B45B +:1033500023DA3026D9243FD438C4731B7398F06E17 +:10336000F3FC0B84FF0F5771BA64CEB498FACEB059 +:103370003AF33C0CFD69A8CF3C9FC12B53A2FCCE75 +:10338000B1FB8BD69F1E11F795C7FA2D0CE9E6D13C +:10339000848F8F207C9E7F81C70D5CEB7EF3E117CD +:1033A000383EEDFD88C7DFED7D83E7F77C94407EF6 +:1033B00088A6C4AE45B85FCF5AB5A1E3217DFE8D86 +:1033C00067862C8375DF50C4F7E7791117113DBF6D +:1033D000A14592D097BD438BB85E735E89D06B6A6E +:1033E00064CF208A3FACD1EE88B4132F177933A86D +:1033F0007E94BD289DE076AD4D99C7D03E1F0BF65B +:10340000F9AE64C2238AEB1BBB52DC3B7578083FE4 +:10341000C656A9E4B7B00BBB7DF81AE66A00FDF109 +:10342000D97CEF58EADFB25AC773E6DCEF0EA07B17 +:103430007180A563506E38193F3F58F60E8FC3B6A2 +:10344000750D6B45BBA1C388138CB2378DF5EE1398 +:10345000FAE47E81E7FB32BAC8EF71E075B3DFA30F +:10346000ACC8ECF7805632DA6DFB7EFD5AFCB21820 +:10347000F642E5A465654511F227B7435396915F7F +:1034800032447204DF3020FF4B89E68E7C7FA1E35B +:1034900044FF7AC2CD87CC7C28EF68D4B9476F1C33 +:1034A000A847C2FB0A06BEBD9EEC33C5A15F0BBF99 +:1034B00096166518F7BF09AFD6DE19B74BD85B94DF +:1034C000BFBCCDBA0BE96948B167A9C013875C18C6 +:1034D000C693DEB81B51BF66DB48A3BD53467C9242 +:1034E000387EDCDD8B6FFADD08AFA935DE7BB1BF3E +:1034F000DC316F8CC1F385D9E35E1D1219EF68D8FA +:1035000015D170E92AE2FAC0AC3B0207AD3C7EA1BE +:10351000F604C88959B707FE6A85FD3F51545CDB44 +:103520000C7439CB2ED37B099D4577EFF03BC9DE78 +:10353000A3FC6345F36BFDA85717E86B71FCEC42E5 +:10354000BD8EAFAB9CEE6118F0EC9BAECDF730B604 +:10355000C3D8E6736EAF23D27FD8E4E2FEC35667CA +:10356000FFFBFD55E34A17147A1F298A11571A5E8B +:10357000473BC5075FEF3A9ECDD77F82FD7589F542 +:103580004C1F37530E14E0BCB99FF95AF3577A8A8F +:103590004DE7E58A45BC9351BE76EDDA42116F30B6 +:1035A000225CBE5BECA3D23395DAFDA3F0FB47E3CC +:1035B00062A7157A5F443C888E8BFD7BE169E0450C +:1035C000CF04FD68D184BF1FBF8CFD003EDDC5FB6D +:1035D00061AB9442139FDEF616D15B3ADDCF37DA4A +:1035E00085EFAF84DFD36822F9F303E207757EBB72 +:1035F0000BCF79938A79FC7A2EC663BB882E4FE372 +:10360000386B95E018DCAFCB72F0774D11FAC358E8 +:10361000A6A1A7889D2DFAEE0E7CDF42B185348CE1 +:10362000B83C7BC8B7A372084E1FF834106FD22D78 +:10363000A18E4EB4E3526D74DFA37926F7B73497A9 +:10364000727EF19F821FFC49A47F11F8F061A1FEF8 +:1036500039EEC3455C37A47717EAE723F30513F483 +:103660003F47E6012E17055F6A93CCF26B5B670656 +:10367000E1F55F79796CF8B03AE1DF35F834E37958 +:103680007BBAF0AB1BF1D2200826A750CA2AF280E1 +:10369000A5E57425A23CB23F38AF5FBCFC7DBDF907 +:1036A0009CCFE8CFBB4E31E9178E1CB3BEB17590ED +:1036B000410F7E1E1FAEDF4BE7BE6DEEFEE34B36C5 +:1036C000F4315EBC2540F6567C8FC544A7D169E92C +:1036D000B75E48C4F8910F7D13FA1DE7A37A4757E8 +:1036E000F9485A1FA5C677EF3AA9AB3C621D4BAC0F +:1036F000A181E8E73CED7F2131169C96AC89EB2A4D +:103700008F906B4DAB1E20B9F9F11AEE27F9303DC1 +:103710003407DF05FAF09442719F1F26723CFAF0DD +:103720003E3BBDBB71479DF48C92618637C65916EE +:103730004D52687FA7AFDA6F45FBE48EBA53568CC3 +:1037400083993A4925782C5E73C6EA85FD5BB2EE13 +:103750000B2BDA6377B898D15FA02103DB9DA276AB +:103760008BEBF653BB3B208FF517FB251BBF17D404 +:10377000DEBB8F91F1760ADE17A27763BC6427DA8D +:1037800011CF287E3D200ED3F97E24B0A07857A615 +:103790008BF567373F1F7C95E2641910CD2731FC0C +:1037A000E80D0BE2095FBBBECFEFA18199625D839B +:1037B000E720457657E4BB1B7709BAB02FF6DC4B00 +:1037C000E724A57615FD5477E997ADA83F1DF33A98 +:1037D0007D180FC2B658CFF2F84D078D93E137BF71 +:1037E000BBB18C45E43390DECCEF6CD884BF70C5A0 +:1037F00024E1FFC96379486F6A2DA3F7A7ECA5F30D +:10380000B83EEE8EAD3FD762DC556A184EC6F7D390 +:10381000BE3BE3D11FD1AECB14C7705165E447DA8C +:103820006AF3531C436B86C5D788EB15711946BCE8 +:103830002E635A2B9E6378453C63F11F64A69BE27E +:10384000AEE3991EB17FD37A524CF95236D4547FED +:10385000BA6384A9BCC27593A9FC1677BE293F53ED +:103860002D36D57700410B78F1380B26519C053564 +:10387000914DE5DCEF26E26975F80FF723456736D1 +:103880003C8F5E24DEDB30F6BF3583DB9BDEA8F8A1 +:103890008854E6F7E3FA17023E0461FD0BA3E267E2 +:1038A0001DC2EEBC2AEE42ECE3E393A2FC787DEC71 +:1038B0005B98DF70BCEC9B7FF178F46CF54714CF1C +:1038C00005FBF55E16D4BD45ECD62DF35756A15F2A +:1038D000D4D693CC7494BF2F4D7C2E1BCACBB11081 +:1038E000D66FB378898FD97AD2A8DCCF3CA3336165 +:1038F0004AB6130AC5ABD91C9BBA703D361615CF14 +:10390000A2F278169BD14FB89CD60B7605C505CC94 +:1039100004FCD301FF2A7B244A6DF3859F36DD88A2 +:103920006BE674512EE07C4FC50809DB576699E3BE +:10393000906D08D771348E693FE2055C8F47C335BF +:10394000E7FAE09A28EF5C8176CBA65AA532F29C82 +:10395000479B2C51F9DB932471FE14BD0FAE24BE9E +:103960000F33496E9DF1F42FB766F58C203A34F28F +:10397000AF5902CEFEF4A75942FFDC9A641E2F9B7A +:10398000552657C0D24EFA25F2C39E291A417ADD38 +:10399000C53A7E6FC388BB3F29E2EECF143D5F710D +:1039A00017E4FF0AF84AFE96A8787923FE1E171836 +:1039B0008CB8D7111D7F6FC4DB7FF01D85E2FEFD43 +:1039C000F74A74AE78AD787B16196F8F7CF62BC7EB +:1039D000DBFB891E4FCE97E81C608C32B715E331B4 +:1039E0006E53D817789F2EFA3EC18AA2E9AD781F90 +:1039F000D788B7BFAB287F460BFABF86A4D29B19E6 +:103A0000B7CDAFA2F6C054283EFFF299B91585058F +:103A1000148FBFBA81F3776A7F17532F6C8C117F95 +:103A2000DFD2FCA4750CCA07E01776B297CCF1F888 +:103A30005D96A06304949FDA216B0DEAD5F1F8A797 +:103A4000BC231263C5E39FAA54AE2B1E3F6FB22462 +:103A5000E2F0FD73709FABBC0A0B48E178FC683C58 +:103A6000FA7BE3DCCF4CE27E4D2BD81D035230CEE7 +:103A70001FE41CFA094A24BC0BC996E524CF40D6A2 +:103A8000D51BE70FDF719FE6379BE3FC4F5672BFF4 +:103A9000C2B22285CA4FE54A744E60CCEF1D984EE3 +:103AA00017CA2F0B237DE694DE3407EBBD0DF3C65A +:103AB0007A6F57E6F7AB3719F1FEFFE87A0DFA7E19 +:103AC0000F952258675BB514D82521BDCDB162FE94 +:103AD0007550C9519F2D1D3FFF8F7930BF38E08F42 +:103AE00018373AEDCBAFD1F9CA6CC6DEDAC8E52596 +:103AF000F15F8FC0C7B8DC526A3F8B39CEC8A4FFD4 +:103B0000EA2D13A0FD3C87B41FEBB789F9CFF23241 +:103B10007A67AA3A8B055480579CA3CA8A71DD8EB6 +:103B20002956867EDB3816C57F1D9CFF92FF3CD34D +:103B3000544EF8E4995F647DB020420FD1395EC9DC +:103B4000F01FA73BCDBA15FA9F2DFC8C4ED6518E97 +:103B500071B171E5127B0CD635CF63C6BB1BBFFCC0 +:103B600019F96567093D686EA5194FE3188F07714C +:103B70007F0D749249341F139F765A797CA52107D3 +:103B800037E43C5289726636583B789D79B62AC72D +:103B90008C8B699DCCFD6EAFCF65F16C00A4D676A1 +:103BA000773BD47B73E48C523CBF726E9519D26123 +:103BB000DB64F19E542ECBFD2A72D5BEB8AB01E377 +:103BC0007D77304708CFBFDE7F90EFFF22BF14A87C +:103BD00044BD75A544F96175FCFDAF1BD730DB28EA +:103BE000A12FDC02E30E5BD95581F8B96815D70324 +:103BF0006BD7D8549DF822D71397E3AF2AEA156301 +:103C000066DC03ED7E3718F006F1A48DBFAF66C801 +:103C1000BFDA35E6F7D696ACFC8CE4A4374A1F5CD5 +:103C200022F48B25517A631BFE02EBFDB901875EFE +:103C30003D31C0F5C47BE7F54B473BEAB9DFFAF706 +:103C400051EFE82D35CEA3D53CF1CE64BB15DFE1B5 +:103C5000DCBAE0B1C4E5CE487836D03EDD5EE3FDA7 +:103C6000F5E48111F4B822D946EF2BA929D7758F35 +:103C7000E27AEB85E562BB83DF475B29E3558D374D +:103C800055EEAFDE50C2E3392FE5F038BE707DB09F +:103C9000429CD4CD5B48A773C5FE58240EBFB785A0 +:103CA000BDB735B37FBBD0387FAB50CE6F427EB04F +:103CB000E11D85EED5B56D67AAFDE670BDB7B3C74A +:103CC000585567F8BCB43A387A981AC33E3991FD12 +:103CD0007F2C2A8CF7B5E0CF2D583ECB12488F8C25 +:103CE000F37C53F4FBDA94272D283F368C994BFC58 +:103CF0007856895DC5F3F71B73CE34A37D959E93EB +:103D0000FCCA03309F39A09FE3BB9A7ED6D5908A28 +:103D1000F534A06BDCA505CF36A37E7F12F47BA41F +:103D20009B592C4A7F0E005F29C4EF8CF4E7887200 +:103D300011EF13B0A0BE33ABE83371DE1EB060FCF0 +:103D4000CBAD1887AC215D87D25CE4A7E2FC2307EA +:103D5000FE8BF41B1BE9AD51FCA1AAC0CC6F6645DC +:103D6000C9C71BBF7C6E13C6D99F043AC57BEFAF92 +:103D700061BC36C2A1E84927C2C331FACE467CC72E +:103D80008F953A422361DDAFA9598B911E5F2BBA03 +:103D9000C785EF979ECC584EE51B4A1DE76498E710 +:103DA0005B23B387A911F07DED276CAA17E13BFADD +:103DB0005FD2EF86F565E75CAEF7C2FADEB272FF5E +:103DC000CADBD91B876544D4FFD1E4D281C5A817CB +:103DD000621002E0EB185B2033565CAE81AF3547D2 +:103DE0007E4EF1EE2BDE51027152DF787546E0C94E +:103DF00047C2AFBEA23979861EB35F4E6F35D93C3C +:103E0000AEE6AEAD136C91FEF4C9C5B2C9DEFB647B +:103E10001DABA47A8727D9B223FCE6F9C5DCAEBF77 +:103E2000734D32BDCF113D4E59B159FFBDAB41B3BA +:103E30006950EFCEE04C1BDAF12BEA62CF2FBA5D6E +:103E4000CD1831CFC3336D196323EBF179AE68EB35 +:103E50006B9D3C9E45CFAAB6E17E3A187FB7748B26 +:103E6000A472FECDF4E00D68776F59C6E391C47873 +:103E70000E5597B7E0F95A9A1C407F46586FE7FEF7 +:103E800050BBE6A5735476A2FFB85E433EB780FEF2 +:103E90008BA93DB881E49C0D86C77DB4A579685C8B +:103EA000478F8DEC1B6BCF204A8F2CF8BA8C71C5D5 +:103EB000AD69C2DF9BD6FFBDC56D621C8C5BC2F7CE +:103EC000A38DF136D5BB297F4F7132C16190C54BAF +:103ED000E30F72BB480FB33B387FBEC1E29392E958 +:103EE0007C85390746F8ED6EA831DBE718C7146901 +:103EF0003FDBD2524CE5438A395CF1BDC8C8EF358F +:103F0000633CEF491961F85628CE468CC36ECBE26C +:103F1000E7EB6D59CB658A03D138BF75F965929B84 +:103F200073757E3FD8E0AF733DDDF3F17CF63581EC +:103F3000E75BF3FA974B069F35F28E9C063D169E83 +:103F4000FC50E0515C2E2F9F8BCFE1A584CB371521 +:103F5000737B6EAE05FAC823FE46FEF4D951E72204 +:103F60005B453F463AA4D8BBB598FB4383AE18E700 +:103F700079A5E3FF4AF7121D1AF717415AB106F562 +:103F800028E087C867005A1588870ED4B3802FB9F8 +:103F9000B3B87F659E6AF1A95A0CFF85D0EBFAF49D +:103FA0005F08FDD278A7C3C9BACBD1BE71A03F06C6 +:103FB000ED11F11EA7A1E779CACD7C75307480F6AA +:103FC0006035FA2FA07E7595B9BC2FFFC5C162B3CD +:103FD0007D9DCDDEF0203DB6690ABD8FBE35F388EC +:103FE000339FF69FC725187C11EC87A025E5EAFDD5 +:103FF000BCF1CB9F919FEE4456D0827CA74A05FD31 +:104000002F067D9C00BDCF057ADF096B30FD11289E +:104010004FD36E9F0596303B31FE37CE6584EF015E +:10402000139F7B53EB749DC90D8FDF175E1978FCCE +:10403000CCF6667ACF056C010DAFB926083C3DBAC7 +:104040005DDD817A21F3BBA5A4A98C5D28E6FEF491 +:104050006C36C589FAD4D6A4EBC3DBAF4DD27F87CB +:1040600072A24FBD8AB533A14F39509FFA54F04D1B +:10407000A31EE8539F1647E85371592ED2A73A7FE3 +:10408000C286A33E7C24D15E130B6E9DBE7CE744AA +:10409000B4CF98EB6CD2F0887925E5A7CBE83FDE6A +:1040A0006E217F07C3CBE8B0DECE9FE7A4E37A8E14 +:1040B000243F99A9C6D0EB8E4ED62FE23CD614EB06 +:1040C0007FC5F5C41BF317ED1758D8516B4A2C3830 +:1040D000F3F66F4C12EF73E7F27D31D26BEDCF0F39 +:1040E00025AF1FE35BC0F6A7738FE87A89251C5EB6 +:1040F000EF657A577A629F9BEE1E10716E6ACC67ED +:1041000008C6BAE3BC441A1E8F115FF33FA8907F24 +:10411000C3FEA042F70D2FAD53E85E90FDFBF903FF +:10412000E418F0FE44E88D6784DC56C5BC66E728D9 +:10413000263E8A766824FFFD5A51AA297F27D3E9B3 +:10414000FDA9B0BCEA4AE47EA638E2A7BFCFE5EFFE +:10415000C07CB48EDBC509379FB6C67AD7C6483F48 +:10416000FA3ED75F123AFFCB8A721FD257DCD0CF0C +:10417000E24DCB0AE3001EF9253C0E69494F02F9D6 +:10418000FF8C76C5252AF7EBD79DA1FE97F4245125 +:10419000794253B715E5FFD2E007E4C75FD2134772 +:1041A000F26E71FB7ECD81FACD3AC985F2D6280F29 +:1041B000B77752BD159B94A87377E671469CBF19DB +:1041C000F267797382A95E4DB6E7BD2311F2C790FD +:1041D00027034AF4192518379313207FA87DB48844 +:1041E0004FE983FEAFFBFC28CB7C7E74357EF277F3 +:1041F000782AF1173EAF660FC07526EA27F40ED372 +:10420000952B78AE68F80180CE9BD14F770B63BEBB +:10421000C75CE4DF0CBFD7236AA8D05F05FE026B42 +:10422000BB459FDBAC21FD7A9DEA2D68BFA75BE90A +:10423000BD9E2B5798E50A1ACC69BDEDDF8C3CBFBB +:104240005019F7239C7470B9BB4A5749DF5F05F2D8 +:104250002600E3DEC7BA5AD10E9F2FEB5BC90FF6DB +:104260001EE83F6AD82E6F98FBDBF4C8FBE0F70628 +:10427000CCFB75CF7673BCE6BCCA5453FE1BBB8720 +:104280009AEA57B84698CA6F71DF642A9FA9E69BDD +:10429000F273F56253FD3216E5F760DCBF5F86BF4F +:1042A000669ACA494E3D5E924C7078C7DA356368AB +:1042B0001AF233290FDF4D31CE316612A0F97EF8A4 +:1042C00060FD330CB929FCCDC6B90000DE721B9429 +:1042D0009789B8B21951F2B0ACE0338A332BEF3082 +:1042E000FB41CA849FBA2CCABED95122EC72213F2D +:1042F000F795306EEF0A3BF49F35AFFB0E6694A343 +:10430000FD570EF21DCF9FAF777ED7EB2F29752D6E +:10431000233BA6335D21BDAFD3556A494638BB2543 +:10432000F2861E499F579582FE68E6E8C6B8E257B6 +:10433000B31EB070BD5C4FAA88F08B3904FD1EA976 +:10434000E77F2FA553E8BDD96CB43332AEE7C87010 +:104350003FD9C1C7878D6FC62096A389E3D363E990 +:10436000D19D71F9A45F1F3F3CC9827C67BAC56FBC +:10437000413E55993582ECE55B1CDC3F395DE57EBD +:104380009CF3625C5857F9F8B4303CA7771C9E81C7 +:10439000FDCC7067940F857574BE20B154D89755C5 +:1043A00041AD16DBAF4AB7AB01C243F6CAB7B09D09 +:1043B000F1DEBECECFF93CF01FEE93E43E65437EC6 +:1043C0007D0CDAA37D12FD9E7E999BDBCF9551FE7D +:1043D0009D88FD317DFF340A7F54E62738BDA28ACF +:1043E000F33F3536BF3B22F8DD9F855CFA8388FBBF +:1043F0003F27EE9BBF85EF3241FAB97897E968BD58 +:1044000046E9B1FA224A8F8B7B015D782F60541800 +:104410000F8CFE1F92422D37A07C7E50D222F9C80D +:104420006947FE260FE4EF99922CE46B57C50D30D7 +:10443000C5A414250FCF95FAC2B3EA12AF3C05FA12 +:104440002F7748747FB9DC9561E92FBEFAEF4D8F65 +:10445000D69BDF2BBBAADC16BA0FE3008F4AA574EC +:104460007EDEF9E0885D0D1176FB3D53B83DD179D4 +:104470009BE1BF0E92FFFAF49A4E9EFAF2FB8D0B6F +:104480007704E699E46D74DA268BBFFBE3E0F78BE3 +:104490001C6B4799E0365E8CDFDB5F7001F5B7B8C7 +:1044A0006D3EC9D93153CC7EC076BD91F4878B5E09 +:1044B000E6C3F7C4FB9C97E827127F904EFE2CE8DA +:1044C00013F107D373C22E45FCC114F10753C41F67 +:1044D0004C117F3045FC413B16F187FE2E527D0D7D +:1044E000A5177D9FE4F0F79AB81CF5B2F00FCAC18A +:1044F0005AFC05E6BD6ACDA9D61B60DD4BDBE7D1D2 +:10450000BAFA9AF7D21F7CC78D7AC67A493AB60CA6 +:10451000D6F9D1DC781FBE87E48D7C078F9F579931 +:10452000DEC5AB8D7A070FDF79EBD5C7C43B6F7A59 +:1045300044FD8F0EBFCAF59E3A65DBA711F359E221 +:10454000033DC789DF6DA6EF7F6F7A3A0A3FAF97C9 +:104550003F2F5E9361C1F88E72BCE704EB7FBEC44F +:10456000BB6A0AD05F9953217A2A733C624138F5BD +:10457000698FA07248F7E543D66AB473167C9E181B +:1045800019CF19F6F3AA5C7E89792DA9137EDEEB8B +:104590009CA7F15E4EFD14A729AEE17ADF9F68D794 +:1045A00097D33DD18BF8DE349DE799E3673B170C39 +:1045B000F1231E6CF02569E8E7945C0B88FF3B1241 +:1045C000B9DCB15978DCAC2B1D706612C6C72DE280 +:1045D000E7FE1AF3A27FC9F0A7F7C62F79981FE369 +:1045E0009736B8651DED42E3DEB22DB080F092D56E +:1045F00069A6F7546C51F17BE173F6A9517170BA59 +:10460000FC55E2E0AED73FDE2CEEE3F5BE3FA9FE5F +:104610007DEF4F12EA237C7324FE5E8D38079CE504 +:10462000CE56C9BE12FA8B21D767E5482D28FF4F19 +:104630008DB7A90A8FA768C17889D7F0DC43A3BFDB +:10464000B344FDF90733B2AF6C395C0E1AFA3C5231 +:104650002CEAABB38C772D7473BC063D8689F1A828 +:10466000BAE58C7DDCD57EE2E8788CE87801037FC2 +:104670004F4E893A2FBA4E7FC1F5D633E26A2EB932 +:1046800019F91F53742FF97D16093D3C95B5B7B83C +:1046900022E80AE36822F5608CA389D483318E2650 +:1046A000328F713491F5318E26B21CE36822CB3102 +:1046B0008EC6AC771747DD7F88AD67F715DF61AC35 +:1046C000335B7D83F6734B1ABF0FB2B5BA9AFC4BBE +:1046D0001731DE80CE43D97BA87723D9215DFA59E3 +:1046E00097DE822034F45B11477283186790881735 +:1046F0004913F12246BC8A71CE69F778B420F433AD +:1047000038BE6A30FAC7B658F5C148575B24C97439 +:10471000FF743033FBD56E889E7F01C71BE3FC2DF1 +:104720002E2AFEC45E6331E191350A8FAC53659346 +:10473000DF00E040E76C5B57733D1431850D223F8D +:10474000097FEF655980F6BF16F6DF1FF1F71316E4 +:10475000E17A811F2C14EB35BEC787E76BC1F9D70F +:10476000A60774E1DFF0DB0BF1755046FE4126052C +:1047700018EA5FCB982BE331E877FA54EEA732DAE8 +:104780005B98BBE18AE1FB30E6A398FA17FBA951DD +:10479000FCAAB799FBF35A8AB4E3A8527ABF2F69EF +:1047A0007E1AB5E65856C479A6C422FC920ABD37D3 +:1047B0004C7116F1421F5ED666A6C3A57E733E5E9F +:1047C000C40145D36BBCD07FE305BC2D3018CE6F40 +:1047D000D95426E00DF45418866B78FD4CC5F54786 +:1047E000AC7B27ADEBFFF375F7C625C47B9E18089D +:1047F000E37C22D9597341785D4B041EBC91187A31 +:1048000005FFBEDC39FC5B1378CF65EBED4F205D17 +:104810007EB2C1CEF8BD2975C97720BF748B9DE2E9 +:10482000BA16A3DF6304636BA66650FF724209D514 +:104830005FF2834486FCEA3FB67E3616E5F97B29B3 +:10484000DE2588779F247BE8BDF0A5DFBB49C6380D +:104850009CF7E2BBE85DF3733273E1BD94F76ADE67 +:10486000B6A2DFECB4C6B448FD72C9BA88781FF8A6 +:1048700077642AD75B6B647E1E54B34821FE71BAFD +:104880007D94787787E337F9EB605DFF2DEA2FF5AC +:10489000DE4BEFEFA36253D68F7E00F3FDA6278693 +:1048A000DEFD1BD1CF7BE9A1C5A90447E66AA4546C +:1048B0007B02DFB3F7039CE81D7DF1BEA76DE89096 +:1048C0009DFCBD657538DEE7B77D6F848CF9474583 +:1048D0003F1FABBC9EDF1D2FE4A2376741225FA7BD +:1048E00064DE178AF7382731F500E0C792F6DF5209 +:1048F0003CC80B0037B2935CA196C390FF0F501ECB +:10490000912F2C71FF8EE0FA401EEC30942FAD33C6 +:10491000C3EF93A9294407FFB1A53391F42D17F3F1 +:10492000DA8C7309A087A59B7EB916EF0D2D15783B +:10493000EE107158D1785B0BFB85F113AE78D63E43 +:1049400000C689F7BE5B5185F932A97BC024C4EB50 +:10495000AE0AC4EB25824FD7AE319F133439CF5600 +:10496000603CC80AF433E03BA639E677A5E06793DC +:1049700025C2AF178DEF4BD8970417E89EEE25029E +:104980009E98DACBD3B8BFF8B4B76520233CE4F0E7 +:104990003EF7031E97031AC1F0487DEB87BDFC98D4 +:1049A000A9D608F82FA9E96C9940FAA1A3BBCCCDF0 +:1049B000E1BF1CC67D01D61D0BBED1706872BE451D +:1049C0007058817F47CD75351C9C2C98B800E1E468 +:1049D000B5124FBE161C96CCFF1BCDE724BE675FF9 +:1049E000140B2E22BEE32A7830C2BBB3C3427352EB +:1049F000D3E8EFC7BA76413F1F6F993E03F3A71183 +:104A000013C8DFEFB1A11CC29FDE7B0DC8272DDDCF +:104A1000D6C16918D7E6223E69E08D01A7A55BCE15 +:104A2000B4D4E17EFC2551C578A1A5EEC9F7209F3D +:104A3000EAC5A7283821FFC17551FB11148F623ACE +:104A4000A78AC6B73D5399D02BBD44C74BCBC57D74 +:104A5000000BEC638CBFA34BFB3D04F6F5E53B97E5 +:104A6000FAD3B19D9FDBDB0BE2E3F07E6AD309FE54 +:104A700077E2B2F0240FE0D0AA331FEAEDC67B50F4 +:104A8000463F9680D99EBDFA5E0D7F4FCBB837D397 +:104A9000DB2EC8ED736BDBDC9876BA45E17FB7B5EA +:104AA000E5F042963916E735D97196F46DAE5F5A46 +:104AB000EC5A5B06EEC79BFC7C99A539D927C67ECC +:104AC000C27E58524BDC682F36C599DFCD18338D26 +:104AD0009F1BDC2C52CB003ECED57A26D7E315F4B3 +:104AE000BFE7477E0FF0EFB02ED48B14F4BBD3BBDF +:104AF0007566FDE2EA7A162A57F01CA0DF7A495C57 +:104B00002F33FCCDE57AC17E80FFC672BB0BF1FF6F +:104B1000541C7B04E3E1FCEF8A758B7BDE8B059EE6 +:104B20001879431EBB2AF483B87F67CBEDA9789E22 +:104B3000BD98713D98C6CFC07AF1A6FC629662BA64 +:104B4000B77DF7B46CA1EF0C317D6FD75386E1BC14 +:104B50002EE5D85215351CD71DFA163FA7DD680D76 +:104B6000B614E13C4B1DDDF89EF4D1D13686F796A4 +:104B70003DA5773DC9E3FEF9397B3CE2D5788C8BC6 +:104B80000F30A48FB3BDEFFCB2A4D241A477102D97 +:104B900078F581AD287F8D77236C81F9FC9D403FAE +:104BA000B3CD477C17F1E5DE66B31F703AC03748D6 +:104BB000FCC3E9C3F358A07B53796D941F303E2AA0 +:104BC0006FEC03EAE9252957EF9B9137E613B64FBF +:104BD000F2C83F65D85DD1F875DDFE29277F6726CD +:104BE000DA3FD532CD7C8E19ED9FFAC1B47F8E7F2E +:104BF0004A6933FB858CFB939D0B66C901B4E7D3EF +:104C00003277D923FC768F4DE3F2FBD722BEE22523 +:104C1000E1C77A59F8B182E8C71A857E2F4DF8B3FB +:104C20008A287F0CFD58E4CFE27E2C239E63DAFFB6 +:104C3000CC37BD2F79DF24EF63D322FC72D69E6C74 +:104C40009ADF4306BC84FD0AF621E1E3452D43BC0F +:104C500067CCFD60B37BCF291995CFCA11EF5619E8 +:104C6000EF1DE38FF16E02D797C85FE610F435BBF6 +:104C7000A48AFE1EC46CCD7CBE149F63CE3BB22CB6 +:104C800051E74FFDFBBD062873E97D2505FD5EF963 +:104C9000C8F7EE6518A7A6B8355ABFF1FE5F2F7E9C +:104CA000A0FF0A0FD4FFC976F5AA69FAD169008777 +:104CB000DD533CC730654E3FC5113427CF5848EF10 +:104CC0003D48E2EF8F45DFA7F69C2378EE18C17CC4 +:104CD000A9E8DF72BAFCA8BF28AA85F4F6BEEE17D1 +:104CE00019F78A6088804C70D169BCF07D617E8F35 +:104CF000F1BADF4D157F279D75C6911CB3811CC38A +:104D0000BD34FC61B6348F4EF7A19CE2DD4A8BA620 +:104D100055C7908F063E28D33C9F211C94E07CA26F +:104D20008B4B53F43F60BE17FF7BEF9BF61F7FD486 +:104D300022F07C9AD5CBF0DCC46ADC37052B2872D4 +:104D40007CBBCEE9A7B2D8F337C4735B4F168D0B8B +:104D5000FBC1F481E1FDE86B9CEB4DFF2FEA7D98F0 +:104D600031008000000000001F8B080000000000E0 +:104D7000000BE57D0B7C54D599F8B9F3BC994CC276 +:104D800004021D5E7A030182069C00224FB9492667 +:104D90002F42600218C112BC4988207FDD1D5DAC26 +:104DA00068ED720321265169B0C1D7B6BB93001AD2 +:104DB000B46EE38396BF75BBC3434B95D42016698D +:104DC000313622584B5D1B452B6DEDFAFFBEEF9C33 +:104DD0009BB9773201EC63F7BFBF1D7F7A3DF79C2B +:104DE0007B1EDFF9DEDF774E181BE37B2F99D1EFB7 +:104DF0000B3BFCC73B94B1D9F0FFF85B30F0C9988E +:104E0000CED87078D4FFF0873F9CC998135FC177E4 +:104E1000CEF3D732751863C573B51415EA5DE73361 +:104E2000993A1DEA023A0BA530D6313F3404DF33FC +:104E30002F2FB33F77DC4B6C573C373456BD1AE607 +:104E4000E1D79996CDD83689ADE884E7C18A85B691 +:104E5000483A630F85C6B5BB33F0B97488CDCB58DB +:104E6000B62AD177F1FD39CFCF65D1E9A6B283A9B2 +:104E7000D80F3BF4E1871F8E606C2B0E698BD567D2 +:104E8000AB36EA07E181DFBDE90ADFCA028CCD5209 +:104E9000C76BE923A19C0AED47E13433232A8CFB3D +:104EA0004D68CEE61018542603582551CF2645D616 +:104EB000C138C9FDF5391AB6DF26EA57AB399A0E63 +:104EC000654D0E1C5666309692C902CDD44DB7BAC8 +:104ED00015CA4EBF9D35FBA038C371BA5716701E58 +:104EE000C758128372962867E07F4D65DCC7E5EFEF +:104EF000BDC552715FADED022AE3705553D269DF33 +:104F0000AE61D7607BE3FDA8B95A19ED2FECD00450 +:104F100080CB8DFC53B6C2161AC1C6C7DAED80BA73 +:104F20006E2F0EAB25315A9F6A6B85F9B2A5B6C8B4 +:104F30006EB11FF87EB0FDDDBA49615177ACEC72FD +:104F400068CCE7E5F8161D16DB67A3BE5AECABF19B +:104F5000DC6663EB3A13F47F70415E35E20BE0E907 +:104F60001A7C1A785A9F56B892C1FC1E926C013B6B +:104F7000E00DCB837FE1297959A499E0E763B50877 +:104F8000EF706A80E0CD7C7A2DD4BB1407C1DF8D31 +:104F9000F86847B847E899CCA20CE1015DF74AE30D +:104FA000F9B6737A58E57BEF4AE89769EC0B84AF62 +:104FB00037FD92F0BC69D346F6EE04281E4C8AE217 +:104FC000BCE455C9912498970BF104F04DCED4550B +:104FD000C41BE69F41E5C1FBAB630CD6FDE97C75C4 +:104FE0000BAE7FB41ADA4AFB19D058680A7E7F6983 +:104FF000F3B9D4766F6C62EC5D641E071F650AAC72 +:105000003F295447F334E6CDFCCBE9F988D83796ED +:1050100099CEDE35E1F146814F8FA9DE74841B9B6A +:10502000C6A6213E6E547DB40E631E973CEFD6F0AB +:105030000ADC6766B3059A67D0B628BE11B81FF0C0 +:105040005318FB6C9642EDA4312FFF5E02FA907C60 +:105050000D21A413E3FBF87E65FC10C61D324F7DC5 +:105060001AE118CF7FDE6E1CDFEE96F0B96C880D6A +:10507000DEBF3808FFA944FE33CC5446FE83FB59FB +:10508000FFE4934F02FFEDC1298C8BD5BF28F84F69 +:1050900025F21FF82EF9AA5B6CBF80F1566FB0475E +:1050A000EC30C48EAF2D4B485F6F7F03E607FD9E4B +:1050B000827D41FA4A3EF86BE744D89723AA9DFACD +:1050C0005BDD9856A822DF4366734178723C7A43D1 +:1050D000EC4FF2966E6700BEAB8C4E76E13E57DF2A +:1050E0000FFD782FBD1F837F9E506FD5D2A1FD9BF2 +:1050F0009EF07F00C9019EFC9D560CE511D7AA3F8A +:1051000047F8FE02C783F6DF54D59388BFA7C4F8DB +:105110001B55B507EB8D32F0A953824F05BD330700 +:10512000F22947BE1426FEEE858D8529BE39CAD7E1 +:1051300086746ECCEB77B84FD07FFD2F12F3913E83 +:10514000A3FE055E8FFD48E9D88FD26EEDC746ED10 +:105150001C6E3E9E23993F8DFACF043E18CF3753E5 +:10516000B5A86447BA543FC3F57966ABE7711DC96A +:105170003732FA2EF9072CFCAC77E07CA45C3E9F1A +:10518000E4652C9C68BEC9B97C1E072AD6DB1A09C7 +:105190002FED118E97D387B004FD194FD7F9649284 +:1051A000F7FDE57E3E9C4AEF416E69385E3CBF2DBF +:1051B000CBE5EB99279E2DEAB421DA05C69123CBE6 +:1051C000488F18ACBED1D60FE74014F9DF9D93A6E7 +:1051D000352BB1FAAC5C2B5DC9D10AEAAFB271399B +:1051E000CD735C6E8A857FB4A89B19EEFB398D85E3 +:1051F000ED39179897E8E7608527095813EBE9B66A +:1052000007DCC8A6D8D914E497F1ED5FD8E463FAB7 +:1052100024A0CF4D7EA643C31F811CC367745316C1 +:10522000BD3FB02940E5439B6651F9E54D2A950FF6 +:105230006F2AA667CFC673C796C0389F28480D034C +:10524000FB2FCA55ACEB3C3F95E9B03EC5ABA4A2E1 +:105250007C7137E55F50AEBE0874CFE7258B79F9D6 +:10526000E87940CCF710CE97E6C5E7FB9FB3B4D200 +:105270005CC09B6BCF47ED12C0CBA330D59E06E33D +:105280003AF61F43B5EFD6D9EAA25CA2B35E05E1B8 +:10529000719F0D041FB4D357274776C39614D8BD0A +:1052A00007509EF66CE47CB06723E78395025F07A6 +:1052B000ECB3E04B46B969C24D361B7C7F451EEB13 +:1052C000B50344262A7DB96C2A630FCCD12A71DC40 +:1052D00089301FF7547AAF229F7EFC11477104F08A +:1052E000ECED47BABF9384FC5DF74BA9D7423D9BD9 +:1052F000925A0EF0D92AE860477362FE183F8F2554 +:10530000B3D57538CE2F37ED23F96BD4033FE1FCCD +:1053100099B5B0A5D0EF8E8AC7E46A28DF1E8787CB +:10532000D7AFD06ECF35AD3329D3E7423DF5D4A307 +:10533000EC323604E0D1E45E1149308F53E1F1A93B +:10534000D7A4939E712AF532D3BC9AC75F86F07BAF +:105350000BD789FDEC91A3089F9E91AC8D01DFE9ED +:10536000B96BE738C51B5B27F0119DF64749BF882D +:105370005EC0E59B41CFF4834F52E7645BF8D99E52 +:105380005CAB7EC57049D06EDB4FC74F6B66B1EF2B +:10539000166565B4374BB1F6A401819C2D65A6DF77 +:1053A0004CD497E097C18B0AD493E8277DA9F3D01A +:1053B00041E8C713F2849B61DF4B034E76CAD0539A +:1053C000E15F4F96B52C673A2C655034996AD277D5 +:1053D00019BB81A972AC3CC47E746C00F9D846FB41 +:1053E00043A701917BF6FFDA8972CBB5B18AEC084D +:1053F000D74617BD37E3C329D8FF4373D427713F7E +:1054000037CC559F42B87E364BFD2EC1776377254A +:10541000AE7B0B4BAC5774CDD6F6E277ACD5A7DE9E +:1054200089F5B7831E4914EE635508E7F1A04706D6 +:10543000482FFD41AE492F8DE98BAA8DF4C54BDC79 +:10544000C74B6D67E86140E73FCEA5FDEF0CD4C1C7 +:105450003B0FD6C33EECF933F52CA3DFA5C56D0C8D +:10546000F93EC84961EF400399E4607F5986FA0527 +:10547000AEEE6C1BF0E1CBF246B439E683FC186F5C +:10548000B44F69437D6441815DD853729B9AC9D8FA +:105490007197A9BF598CBDD6E710F58EAA7550EF4C +:1054A00051DF09FA009E1FEC97DA5047B3AFB48979 +:1054B000FA2F7A55683A2753ED4886A59DDFFF7B82 +:1054C000A5290DC7573B5260FCDF4CF6571D1E89BE +:1054D000E5BED1C7A0FC8D03D756C94938DFDC3003 +:1054E000F6B7F3C0A82A19D6DF358E8FFFADBCB151 +:1054F00055FA3C8453E843C283506700F70DC60B4E +:10550000217DCE01F3D842DFB97682E7F95C27C16D +:105510006981336A47BC5990C1541DE6919BC98289 +:1055200036C097D7E61D1C8678F802DA21C3A9FF9A +:105530003F50FF2BA0FF2903BFFB2C57A17EE3BFE9 +:1055400087EFA43CDCBFE5FC3B980FD999B8EE3A55 +:1055500007D53BF3B0DF30AF5FECC86999E0C379A2 +:10556000FE2EE2CD88B53F97FBB9569749ED93A93A +:10557000BF4EDEFEE270B67E6FE84B47C0C4C46724 +:105580006B9ABE2204CF5BF338BF8A7F82A6350CAC +:10559000E179DCD5E75D02EBBC92FD36129C4CF361 +:1055A0001843F3D8C7E16DE0475ADE7F683A5F974A +:1055B00042F5EBF83C07C3D73FF769E0E7A8BC0F1B +:1055C000349DC3792AC171159F8F811F97E5FD26F0 +:1055D000A28F41FCF9C8AE223FB7337D37E0D5A298 +:1055E000E97F1A6DD687B6E5717DBE6B9CBE0EE174 +:1055F0009194D947FBAB2A0A33EB274FE571B98960 +:105600003CC53653F04B85CB65947B302F8BFEF732 +:105610008480E3F744FFC75DBC7F4059D93E8DE3EA +:1056200009CAAD62516F7CD74F4F6C25D1DB829C8C +:1056300077833EC08BC579B3DBE40CF33ECF78C7EC +:10564000BCCFD7E55D5525F024947709F470731E1F +:10565000A787D5794EB1FEBE65A83F34FEA783B5B6 +:1056600013F3E4780EEB0B34C3FE33478B6A433DF0 +:10567000C491467E10A39F05599D1528FF4DF4A2A5 +:10568000E599E8E5CBF65B99A758F413A37FE8F713 +:10569000FF24A2A7D507AEC810F4F4F734EEF37CCC +:1056A000DD83E1EF6074709FD887F8A7D18F419FA9 +:1056B00037E74D6AF34A09E1BE89E6A7F1F12FC643 +:1056C000B7989FDBFDA0276CA579C7E1D55285F778 +:1056D000CFF4656DB8CF06DEE71EB8BE0DFD5230C3 +:1056E000DE03E6F56E44F89BEC1D039F0D38EE14C7 +:1056F000EB99932719FBB483BE5FC3E19900AF0513 +:105700009E0D3AFE7768BD82EE1630309C87C6E863 +:10571000EB62EBAFC77D1E6EB2076516453BCEE56B +:10572000F771FD450DED31F34763FCEF1D50AAC441 +:10573000F84F9BF9CC9C3C1FF59794C91C82FF3E07 +:1057400043DF0B3E952BE003EF9FA7F7828F7E5937 +:10575000FABA64391C2D27FBA581B184FA80CB0EDF +:105760002B23BFD134AA073B87F4B7A3FE4CF29B8F +:1057700066028747BA69561482C7D1AC3CA50ECAE7 +:105780009FACBA721A495F61BF7F1FF42315F4E51D +:105790007D6057E013ED2055D841AAB083546107CE +:1057A000A9C20E52851DA40A3B481576103E3D3312 +:1057B000249D5D85F35F4EF37745F8533E3F93ECB0 +:1057C0001DBBB30E6D412667B53085FC0C870FD924 +:1057D00047A0DEC27F5D57FA9CA837942B1116862E +:1057E000E74F73B5D366FC0E89764BB37CCEE9FCEC +:1057F0007F5FF498FC99A3E62AC2CFC5FDD086DF6F +:10580000C0285F54FF8225DA014E49AA9DFC87EE2D +:10581000DC6FE94900D74F55D6CB2DBB161DED13D4 +:10582000F91E46FEC3A44774BD99F47D164EF5A338 +:10583000BDF208D5F7CCE3F57226185626FD767F23 +:1058400005EC0BB46FCCF644709F1A973F29233CAC +:105850009A37D4D8BAD1AE556C11D4AB778CCB2350 +:10586000FBFE287E689AF7CFC57EA15E8B76DE9818 +:1058700070C499C83E6F3AF0E8ADED304E4873FB06 +:1058800050576F54B717A0FD7BF2163BB56FCA6B2C +:10589000D3D1C9D93359DB8B7A47A323C2D00FE4C4 +:1058A000B9E56001FA7F7A9CDAD543E1797C73F43B +:1058B000D6103CE7AD282BCE30D969F1E32DCDE7EA +:1058C0007CE1C4FEA40770FD8D92DC4B4F67A41DE4 +:1058D000E1D333D915A883717A728F8DC5FE1BEF82 +:1058E00058BBF76708875C7700D97AE31E7905F61D +:1058F000DB98F1B8FF2653FF1557BAC228779AAE46 +:10590000B8A900F139541C7025013F0EA9CFA4A4F9 +:10591000C3F7C76F993E0CCD84E6C9AEB135B8AEBA +:10592000AFFDA06B26CA8315F69949C887B2BA9D08 +:1059300048CF976745F45E78565FAB4DC947FFDBAC +:10594000BAB60284AF67CDF6AD684F5EFEF9F71ABE +:1059500069DF98DC8B7640F7E476B12F3B65C4476E +:105960007972F5E671A8FFE7CABDC8C79B955DF2DD +:1059700044783F31CB56B576EA4078343FCAAED54D +:1059800086E0BC603D53B0DDEF3669D0AE3BC3B5B9 +:105990002211FC8AF3B97E5091FFC4B80DB0AEE677 +:1059A0003DB20FE1D22C451EA986B2BE3225B09B76 +:1059B0000DFCAE5DC0FD86704B815BA1FD217EB309 +:1059C00034FFBE361DF5EDA17CFF2A1C4C760E8DF2 +:1059D0007DF7C09CDCB27C93DE3060DCC9375D8D26 +:1059E0007882BC03FB6B3FD84E7C7BC9ECD075F949 +:1059F00030CFC647228F205D805ECFD04E1FCCCEE9 +:105A0000EE017BD97755ECFDFDF95C8E34DFE126A4 +:105A100038F4848FA524B497BF766CACD95EEED9E8 +:105A20002393DFA7B93299EC65961DF1E37EB83A6E +:105A3000FC3EF4278D56736FC279FD0FC0BF6FFC1B +:105A400037E31FC9A7E2FC7F69437D5B6551678827 +:105A5000FC20AFA46809FC19D7AFD0BE65C693552A +:105A6000E134F283F4083F88B18FF1DFF53CD2FDD9 +:105A700040D205F6D5E02397B0AF6D38FE4DF98CD6 +:105A8000F3E7E0B04BB28FB7D9D419CFA03FEB6E9C +:105A9000B70FE9C623EC5A7725CB73E078C161EDE7 +:105AA0003A8CF7A2A01F5F81BDDC817C3ECBC68D06 +:105AB000FFCFA13F90371A76698F95CBB13C3E3628 +:105AC0009EC680BFCBA29C81F51E4B59634389FFC4 +:105AD000C7EA4759CA6F3B7BBF7327D2F75E39B01D +:105AE0005BA1E9EB281F5C7B67ED44DA33C6399D87 +:105AF000EF12F2494DCD9D294C2CF8ED70A95B7247 +:105B0000D12F2CB1BECD68F26F2CDA920BEB7B5902 +:105B100095FB18C8A3196F384EF5C717E1DF00EBE6 +:105B2000B5E17AEA2A3C5B10CE4773E53E37C8B54B +:105B30007CD969693735F82B8A3306187C6F8A332C +:105B40004E65F77F649F8A4FEBFB37F345DC51F8D6 +:105B50006907E3070AEB4E299F8278BD6C8804E54C +:105B6000B3F956FBC578FE2BFAF140BE75825E8212 +:105B7000FEBC67412FC1F2F3A09760F90F021FDE50 +:105B800016719B4377AD2D20B89531C98D7641169E +:105B90008FA71D10FD8F001E854003316EE3F87E38 +:105BA000D63308BE7F946FB21FA6EEE37E3F9C37CC +:105BB0007E87F3BE90FFF162F3665997A6FFB5A802 +:105BC0001F1FFC02F131688FD8332E345EA318AF4B +:105BD000859ECF6E7A448C17B1F863F706EDC44703 +:105BE00083C39EF26778CDE36D26B8343BADF1AF49 +:105BF000A359D376A27E02CF2176783F32E84AB805 +:105C00004F9EF3768BFFFF897CAE7F79409FC078F3 +:105C100083E7BC8BEA9F11F652AC7F1EDFC7FE6D97 +:105C2000DE983EFAE7F66FC02DD51E2D1BC6ED752A +:105C3000DFEE198248A03C25D347FA5C37E37C406D +:105C4000663E17D2C1FC60067DA7317D02E8D4CC48 +:105C50007E5BBE3707DA9F7CDE9123C1504FA76879 +:105C60007E949F07468E18DB8BFAD8FFD52EF75D02 +:105C700060FF01C3FC363F8DEAB7CDA2723A2FEB2D +:105C8000362CC7B73FFAFCF3C3510F7E7A2FE78358 +:105C9000FA485B644282FDBE27C8F583297B77C939 +:105CA000888FCDBA44ED6F084B1105FE7755FD3353 +:105CB000247756AEB05328FFE42D7B7F56817C2598 +:105CC000680F4CA0F2730F20BDBFF5BC0397C9BE8F +:105CD0007A6B4DF10C287F756435861DD9CAE008B2 +:105CE000C15F349273278B3557730ED81FDECE9F5A +:105CF0005540B901FA6D47FEC43A495EBC157C2E89 +:105D000005E7BD32C8F9E7D34E6B5CDF78FE2C980F +:105D1000385E701CF12181DCA8BE36EFC620B4FFCE +:105D2000AAD49982FAF69D8772AA1DB3113EEF6735 +:105D300061F9DAB519EDC11C1A8FD67F74AF2382D1 +:105D4000A0389AE2ABDC80EBDBEB0A0046B303B78A +:105D50003DE14779DB8CFB7581F8D5C5F6EBAB05EA +:105D600092EE063EB8AFEEE80DF7015FF963B0BE04 +:105D7000DA3119E0C3BA6FB80FF86DDEA1B9D5E812 +:105D800067DC867920A310DE8DD5E857A2E015CC1C +:105D9000FBD0F3A7C3E6F86F3C9D0F96EFE02BB85E +:105DA000B4F89B2B527EC1F85B03F69FE0FBD7C58E +:105DB000BE7D91AF3E80F0BE7A81BA2D887EA671FD +:105DC000917588EF4C5D761139CBF94679D4D7803F +:105DD0006C5F7BB17B9439CFA61FBF05DD4FD99B8C +:105DE0005E568A72F7960943ED263D5612EB6C100B +:105DF000F860D0EB8D1B32287E018C57C678433972 +:105E00002229C0315FE0D3718FF634B66BBEC2A5D4 +:105E1000B6A35CCDFA1DF17F091DF300F772F9738B +:105E200027FA85E41C16708F44B9EBD085BCB27D8F +:105E3000018D4E06D3A89F06FFA91484EF0A113FD7 +:105E40005931CA4678F5767852BB886FE8EE9942A8 +:105E50007F80AACFC4F81EED66278EC7828003B369 +:105E6000A99DE21C21F4036857EE3FB53503EB41D1 +:105E70000EE7013E95873F73A21EBFD7C35A10AEEF +:105E80009EA053EF35D98595DAA7058B605C5F9EA0 +:105E9000D43704FADBE2FDB8602BB45FE5B7338C8E +:105EA0009FADBEC779DA2C9FBDAC3705E9DBA339BE +:105EB00019EA49AB3658EBE177BFC3D057A0DEB340 +:105EC0007CC4D60CE8FFA7A02748B328EE6269EF90 +:105ED00011721DE665799F1FF459F8CE13F9EA3166 +:105EE000812F6F20BE6C0B72B97AD4CFE176348BE0 +:105EF000452409F902E7D347D7A595CD8079260136 +:105F0000FF40F6E15953A7336F22787DECAC467E13 +:105F10002DB396BC91088FE1045F5F05634330DFCA +:105F2000C40C2FC083D5FE8F0B16A5C7E0E5657D99 +:105F3000042F8FC8AB8A87D7166FBB8A7940AB66B0 +:105F4000B97D76DFC5E135103E63683FA1FB3EF7C2 +:105F5000AC8170EA16706AD0B60E47FD602FAE9F16 +:105F600094348DD6E10138213F658EE858E49F27AF +:105F7000055D10F18E24BE3A1CE39C03E98CCBC571 +:105F800011D786EC05C3C98E8B3A86C6F8CBE0F4F0 +:105F9000C9F94B9ECA685FF27CF64804F6E5902B7F +:105FA000E0C0F91C4A95588B74713E06FB9D5670F3 +:105FB000F5E07CA1358EBFF7FB512E717E1335D0F5 +:105FC00093603E4D635804F5DDA7326D44FFE7341E +:105FD00029C2280EBDAA11FD3167008C6E4E8F8D2F +:105FE000C80F2A04AB68BE5A7A7B28B457245B805A +:105FF000818EB7EABC4443374C29A77E5819C8F4B0 +:10600000D118670FA562F9EC180743BE22FBCF4DEC +:106010003A0DEDF4BC1097BB5F63BE2DC012BECA33 +:10602000224ED4EF57B2700A9A06C98E0DB7623964 +:1060300049FEC7BDD5B0A5F7D6ADDD5B054FF79ED0 +:10604000E9A4075E6FEF7B6321D0E79C9FFC6E0D98 +:106050003A5A526D7A7126C0F337454CDF20635EA1 +:1060600051DFF220D4FFB030D25E0FF58DC1532442 +:10607000C7B24A7F54EBCE89E50BAA2F55D620BC78 +:106080000DF89F08DDD981F67625C639619E86FD1B +:10609000417E3260A095593C6E50B941A27536FCE4 +:1060A0009CB57B250E138CD70EC3FF8775FE6B2125 +:1060B000E7AFC3E6D56EE9E5FA50F8723FEFCF6E71 +:1060C000D8379C1C25F4670E3B111F8FE5F15D1A34 +:1060D00017FA1BAAB7A9A457695EA508E56531B4EC +:1060E000277B8739BEC0B967F132FC5EFB2281DCB9 +:1060F000FB5B3D1F04BDFB94F302F5AEEE5BD19F4D +:10610000FD60C9C4913E98FF902B270E45C5C781FD +:10611000DC07E0D7DB319EFCA4CF0978355F67E46C +:106120004102DEC0F35E29943A0BF124C3C6D09E2F +:106130006CEC7857C5B85083C2FA18E0CD92F96775 +:10614000C8AF9756C5C29867F1596106D1852FC36C +:10615000D694A1A09CF92BE5D1C87A60A9894FD823 +:106160008B6C167FF160DF1BFEE2F8F70F0BF96B0B +:10617000E8E50D8A8DFC92F0A4F57CF2168B70395F +:10618000D84B7EF0FEFEE0CD3DD318BBE67C36D387 +:10619000A70FF4F71AEDFEDAFEE50737ADA0F753C7 +:1061A000CE57119DFFEBA67554EEDC14A6E7B39B0A +:1061B00036D2F3F94D3AB59F753723FA68BCC31D43 +:1061C000D98CFED6A4E8BB76D2B35D0AE6B920022C +:1061D00020FDF7DC3A89EC8306499B3204F566C959 +:1061E000C376039D36A4F476623E833E328BFC6F09 +:1061F000CC11F10F41FDB82E8BA19FE6B88B5D96B7 +:106200008AFE253062D0DF7AE623DD8F65CD06C4B5 +:106210000EFC68DF583EBE638EB71DC7DF921ABE04 +:106220009A01DD1F28FE749703F86873DDC3D10F50 +:10623000619C5F953C598BF1831EA9732CF287BB3F +:106240008BE7EFC2B8C7AAD3D16CCCA7CB7CF5A3A0 +:1062500035C980575D189B32F29167C5E2224CEF39 +:10626000DDB96E0CAC6F875B94DFAEC1F89FC313D2 +:10627000F693DF5AF7D71E06BAAFB85CBB03CB451F +:1062800025BF26BDBAE22BBC3FE5B5AB88DFDC9B62 +:1062900014F60327654F96FEAC16EBEFCDE1FDFF3C +:1062A000B0F867B5586FAF6221C4A389CA7C9F0B51 +:1062B000F9B61FEC04F4574F5CFA30C65FCEB5AEAA +:1062C0001D81F233B7C46EF8D37DCCF0CFC35CCF61 +:1062D0008CEDDB8AFCBE37C3116E87716E10F6DD64 +:1062E0004AC1B799D0B71A45FB1B19E86D9C9F3876 +:1062F000506FBBBE54C497259DF2F680CB2B8F0503 +:1063000068140DE5B74B7C879C6D23FABF3F48515D +:10631000303F43F63B2CFA16CE11E7E512FCD415BC +:106320001B87FC19F6DB428D98FF74547532F41309 +:10633000317DC5CB9933513EF06F2566EACF8EFA99 +:10634000C5B30598D75D80FA1AEC57F92DCED3E680 +:10635000F1BC8CC7EB0A54ABDEE012F9DC2BD75949 +:10636000DBBB843EE61279DE0E1814E7E570055EAD +:106370004A47FE3B42E2F8C80E47307E62F0F1AE7B +:106380002DCF50FCE4D3C20C03FE0AC64D5689FA49 +:106390005C87E4AA82FA5942DF9DF37E640BE2AB8C +:1063A0004BDF3EDBAC977F522873BEA2B79D403FC8 +:1063B000A70B2400E691D5BFA076625CEEF9A25F40 +:1063C000EC44FC5CE012F8A89FDBA9CE03F88445FE +:1063D0007E88FED14E8C7F75E519F8F9610DD6F7F0 +:1063E000E787E8EFEF443FECE0F920EFD5AC7360CE +:1063F0007CCDC81F39B513F1D95E09E62C8CFFDBC3 +:10640000127D57D26CB17F440FE935B8EE63C25F9D +:10641000FD4251FA4EC4D760F16DC1E1B05FCB438C +:106420005514D7CB2EF45AFC54C7F3222B50AF6926 +:10643000C43C6DCA774EA23CD88F8A389E2DCBEBD8 +:10644000AE0D650FB4D38C7AE3A9293A437BA3122E +:10645000A86D1C8C37CFC6F5987973FC6D752497A1 +:10646000355B773AE60B0DA57CD58FC57795FE7F1A +:106470003A89F94AB0BD8ACB84BF3D8E680DF2A53A +:1064800033784203E87EA81A1D2FA3BDDF27AB1186 +:10649000C247F66626EC7BB5C0C7614C2944FD7740 +:1064A00025E05F14E053EBFFE793A437C4F0DAF67E +:1064B000C535313C5719DB8FF834F77D2B5DCCEFB8 +:1064C000B396179CB7967399D56EC997ADE5029FA1 +:1064D000B55CE4B7964B146B9935727A00E9407A53 +:1064E0007DFC79077A63D0291B4827B9396B48AFFF +:1064F0004F02BD1EFD98AEB87311675ACF911F6D44 +:10650000BB9F517E75923F3419FD20B547EC0CE3DB +:106510005E3A3684F2EAFB25E2FFABE57985C119E4 +:10652000941FDEED463D49664AFFF8E378DC0DE551 +:106530000B6C8BCB8976EA3C27B73798D5BE8CE7B6 +:106540002730D071E41F8BC47EDD78FF8F83C82F86 +:10655000FCA3ED0CED0916E070B0C13F1C0E7D2FC1 +:106560003D82710455A63CBA5A2D1A427CAA02FDFE +:1065700018FD3D37DE1FCF5F22AA0BFDE68D127B93 +:106580000CFAAFAEB7D65FFEF9DFAB78EE613DC077 +:10659000A939019C9A3ACA49DEBB6082B6343C1FD5 +:1065A000F160F138D49F030EF21F31AFE637EB1DD7 +:1065B0006F1671BDE140C593AB495F67B6801BDBC9 +:1065C000B7727D1A791AE567C4E5D3491DD753FD23 +:1065D000B72F075A467FFCC6D147D1A52FA1A19757 +:1065E0004EF6BA867683DB11A2B23BC4743D87F2C5 +:1065F000F076150EC7F69751FB2D1BC3C4B7EB857C +:10660000FF1704800BFDCA55FE974FA4C1D84F1544 +:1066100072BDA84AF6EA763C0750EFFCC06C3F0E0C +:10662000C8CF13F68891DF119FEFFD9CE8EF9E2203 +:10663000C9C81F37F8966AC98BD32B6B82A42F72F7 +:1066400039FBC3972B894F36CC67824F36EFDC0F6F +:10665000FD3E7CE0F76F2C433DA1550A607CF6E1DE +:1066600087A442848B4761BE62D88FAF5CD947F55F +:106670000D058E00C2AD61E48834CC173DD72129C9 +:106680007628177594DF8CF0A9D5DD0AB78BD4D4A2 +:106690008211866A80BF881DE5DF4C610F837EFC16 +:1066A0007AD0895BA01DC4F8C05955EE433C181A36 +:1066B0000D7763FCC0A33A0211867C24DC3207F11B +:1066C00040C5846078DF9A918B764E5DC57ADA8F0B +:1066D00066B0A7BE829BF93EF7FF87E09F2F84BC80 +:1066E00025FBA1D81A6F7065817C9B8A29A3D67877 +:1066F0008149BE59DEF7168A7C6F717EA907E308CF +:106700004EF4839DE2FAA8C2C2C300AF2A193FE744 +:10671000A5C2BEF13CDE66B93A9BEB9BBAD0377599 +:10672000F75F9ED7DD21F46359E17180EB57A8E74D +:106730000AAFC6F78CF060E609E642BDDE57C8F343 +:1067400047E6BCAF51DE64853B713EFFDD051C8F23 +:106750002E59DF7758F5FDAD623E950CF07AEAC010 +:106760007C79B9C81A8769F07FB97CF97EFDFEE2B1 +:10677000F60421DB032FBD4A7E8225F36BFD6857AB +:10678000D5CEF3328C573CFCD04784BFEB838E4090 +:10679000B182F87ED733A390BEB35C0CE3A2CD9355 +:1067A0001B683FCFF9990FF972DA48CE8735B037B9 +:1067B0006CDCCE273B76A6C0E6229DF7577BC2460F +:1067C00079FC063E135B31F28F25C4674678BA5ECA +:1067D00065E4EF1806F87E7006CF478EC216AD6FDF +:1067E000AD537743FD50B05F15D41B851D5C2BC6A0 +:1067F000F130655F2FD40F7B2B351055F8BB793303 +:10680000637A626DEB47244F5AAE6409E33233DF9B +:10681000B2DACF405796329E3B339787D873B97D13 +:1068200032D916A943FB04ED4EDA778DE2BF0D593C +:10683000A048CC40FBD44E76183CA9FD1961979D29 +:1068400069FD075ADF39C51146BDB3717F12D9A959 +:106850002EA067E42B2E7F88F884A7C3AD2427E2FF +:10686000136F2DE5F9D5186BB421FDDE10CBBF6693 +:1068700048F74F6EB91BF5F59120A7A0FF2AE18FCD +:10688000F8BEB0B7ABB2F8BE55F9F9BE5561FEF52A +:10689000B0C4FC81F891903FF17C62A6BA86FC40BE +:1068A000BE6A6F78C8AC44FCC25A3ED30AF6378C35 +:1068B000DB82FC00F07A6D91F5DCE360F1C733AD6B +:1068C0001C7EE77CFE363BF5933FA40AE11CB259DF +:1068D000FC588E96E596F3337F7DBEC2F98721077B +:1068E0003CFD72C04A371E47F89951B89F8A8BD534 +:1068F000294827BA1FFDA4DA117B00F597229DFBDA +:106900007F6A4F303A1734500E00BF277E0EFCDEF0 +:10691000220780EF235E019E60DE24C8011FE2CDC6 +:106920007AE0FB5C0EE83AC64DD60BFEBFC3A5D39A +:106930003E9F01FEFF6006E145FE5DE84F137811C2 +:10694000BFDF03E440C7AFBE941C688BDBCF770684 +:10695000910355FF4572E0E3C2A1B45F280730EF11 +:10696000D6D8BFD1AAB6AFC89A87A8A29D64E421A1 +:106970001AF6D1AF8A926B44BEF98B4568BF66F3B5 +:10698000FCC1AC4226F229B528F6933A7AE314F416 +:1069900087B3EFF2BCC3C3621CA83F84DFF5D7778F +:1069A000F0EF8DFA8179A9DD9594975A2AF251E397 +:1069B0009EE30A7D963C6D98D76B4596BC466E77F4 +:1069C000BD54945623F2B28FD1BC453E64CC6EF3D5 +:1069D00091DD67D86D5D453E6ACFBC91CB503F6E6F +:1069E000A84B213F496BA142E39E75B6F85B605E00 +:1069F000AF4D28CC453CF6EEB031D4DB8D3CA35FE7 +:106A000016A5EC1479D9EFD07C8AF97886DD78B4B4 +:106A100028B546E46F9EA1F90445DEB6B0337BF09D +:106A20007B0EE75F53BDCAD763D8A5EF16796B30ED +:106A30002FAA7DB6FA01F65F25EC2F83CEDFA91FC2 +:106A40009624CEA35BFCB2B2C2E5BAE667748EB7F9 +:106A5000725572645C02FEDFB888F39166899FD735 +:106A60008CAF7F604EDE1F71DC6579D1F178D4A3E5 +:106A7000F263D927F29A6BE8DC8E9DE735CFDBCC49 +:106A8000EDC57957D8DAF0CCF941B16F83D98B4392 +:106A9000D5EE32FCFE06E06F28F72E661FE6E67C98 +:106AA00042724CEB90886FFC6FB117CFB4D690BD9B +:106AB000B81DE34009EC20ADA37C0FDA3D867D587C +:106AC000AB31E2AF550AA338BBBC068686EFAB37C5 +:106AD0004A1195F6AD97FC5935207F51AEF5DB870D +:106AE0007176E345ED431620BB13E45437F6E31506 +:106AF000F6A54BD89703EDC7FD17B41F6FBCFF6613 +:106B0000B2F77C73C02EF60FB417E3ED43AF3344F6 +:106B1000F9C2BD3000DA5BF170B9FCF3215CAF085B +:106B20007079D1EB0FB9D07F53ABD8E85C40BC7D16 +:106B3000F87E4832E2DB3CBE3247A6FB03E88778AA +:106B40003ED743F1DD1655C47B0219EDA807B60AFE +:106B5000FF3BFEFE9C73670BF1DC199DF38F903DAC +:106B6000F2D73F7FB6DD8F79B235E2FC59D3FE3DD7 +:106B7000743EBE262B407640CD20E7CF5A91CF639E +:106B80007C7024E70B67A6549DC0B895CED273ECF9 +:106B9000A6FCB8BB847FF34C06B76B1BD2347F8E48 +:106BA000898F6C15F50D4EC3EE653ADA856F8E0A46 +:106BB000EC349FF76B2EE6F93AA355B5A998E0A9F6 +:106BC0008B3C28F53E2C1BF6AD21378CEF5A8A39C9 +:106BD0009F79B05812F22DF46031F2D17471CF80E8 +:106BE000371AB18D30C78DB87F314914BAB6D43158 +:106BF000CA57CCE4F129D6DA69B15FBE5D2C0979B8 +:106C0000A77E1BFBFDA6AA7E079FF36C9B4F4AC481 +:106C1000EF5C0AEAC1CDCEE8BB284741BD09EC4E86 +:106C2000A37353E3118F16C0B7E80F037E391EFD1F +:106C30009679AD57D2F9BB7F0EF1F916B2B003F1D8 +:106C4000A198B5D0F3C47CED29ECFFC094F98E7403 +:106C5000A09B60B0BC1E9FCFCC0F3D4DEB62FCBC37 +:106C6000DE9239A1EF215CD20AEA65DCC781786B3C +:106C70008D7F7C5FE88B6DAABA17FBE99AAD7E1F0A +:106C8000BFEF981FDA47FD0E760E50EC03C8A77FC2 +:106C9000C3F66FDA3A3B53ED74EE7D3FDF27D63211 +:106CA00036C1B977E3BB23C22EEC4A01F96EC28B21 +:106CB0000717F17DFB9A9897BDAAA518F3A0CEE21D +:106CC0008517B08E0FF3B42EECFF6C6635C5A31B91 +:106CD00096C39C72B0FFCE073200745AB6B44FBA56 +:106CE0000AEF2B6142AEDFB20BE93BDECF51FF0B67 +:106CF000A37CA4765DB6D9EFD1558BFBEE70F3F291 +:106D00003F951ED94DF79F28E23E96B75465A9E9F5 +:106D10003CD76F041E1CCC557B705E80076FE3F37D +:106D2000781E8FD325909BA710AEB04FA7A99D7F4B +:106D3000733186D801FE6704FCDF13F07FFF52E059 +:106D40003F989FA74FE0FF73A5FDF8FFB119FF61C2 +:106D50009EE72E32CFCFB01EE6F9FBB879FE01CB0D +:106D600030CF3F8A79FE89F6FB22F35C3F633BF923 +:106D7000DF999EA448D762BA09E037F1A5880BE3F2 +:106D800013851D12C5B39B84FEC4F46B3A70DFD625 +:106D90007B679C41F976CD4FEEDD25A31F9F05282B +:106DA000AE7445E1ABB58DB3503FE9BE05E34AFF94 +:106DB000181A5EE3180B649AC1F775436838E94FF7 +:106DC000CBC60526484067DF7C75DB2E79ACD9CF72 +:106DD000CEF1E058FF783FD9BD0EC65B66C401D83E +:106DE000B776A13EB8CC13F1635C745AC943BB308B +:106DF0008ED465E88B7A6FAD3A26365E67E9A3BB21 +:106E0000F09CDD7A9FB215E31AEB7D52400778695A +:106E1000EF6B7A3ACC6FFC4FB667E27D29CB86F2F6 +:106E2000FE6FEF6E5E43E79FB2B8DE077C644209F7 +:106E3000ECCFF012CE5FD7FB54E770ECC70FFDC06C +:106E4000ABE53EEBBC972BBC3CE1E87D6B1A114EE9 +:106E5000BE5001B51FC3C7BD8E45285E36ADA475B3 +:106E60001DC6E7BA5CEA48F48776BEDA5B1B04F815 +:106E7000DB5376911EE8E990ACE743C5F30A437E05 +:106E8000CDE27A27CC6F76C9707CCFE77730373484 +:106E9000AF84E85ED5BC9CEED512E243ACF32B097F +:106EA000EEE531EC0CA0DFC212A26BBD78D80CCAA3 +:106EB00097F2D5215E443519FDD92BFECEEE43B9AC +:106EC0006C13E3385C4C4339033295E275FBEA8E70 +:106ED000923D306A09C7EFD0623ECFEAC592914C2D +:106EE000BC1AF9C532E817F3E5ED754FA42AD99815 +:106EF0002FC1F31F1BEAD63E82E79D4F4EF6903F0F +:106F0000F2649A92827990677D20BDE85CCCA7EF0D +:106F10001DC678A9C08B1B4A7EF438D2FFEB0ADF6E +:106F2000E7EF76C9BFA2BC3805B0CEA4B7DA6FD3FD +:106F3000F4E80CCC677784759F452FA2781FFE9CE0 +:106F4000A6F6AE8EE94ECC4734F2AA989FB7F7B3B7 +:106F5000DE3ACA3FF031CD65E805367C72BD4B168E +:106F6000FAAB11C75BCA58C2389EA7633CE511F95A +:106F700046D9D910E8DF531C9F4794773FFA4793CF +:106F80007C761F9261D222AB1E05FAADA57D5EC74D +:106F9000419E7FE3E7FA633E484E5C6FBEE60DA379 +:106FA0001E7E8869A4A7E9A08FEE2638F23C2459FA +:106FB000CC2F98B655C7F10E315F1FE9AB8A352F3C +:106FC000893942C134E82F3559CAC13CB0423FF734 +:106FD00007E4FB86937FA3B9C41AEF32CE5B19FA9C +:106FE00071D7E8888AF8A4C192518F30E26076A701 +:106FF000E4C2F27AA4860C36E0FC95719F512DDE36 +:107000006704431E09EC6CC0F6BD998CE0522BF668 +:107010001D2CEEC7314FE252CF91AFEDBAE971CBE3 +:1070200039727DCDE328577A3F77083ABEF1718CEB +:107030002B0E1A37645FBD09CF91BBC4F9E6BD259D +:107040006A87F57CF36F4F9BCF919F28793BD37C68 +:107050008E7CF38FD73D6E3E477E43D9D33799CF91 +:1070600091D794DD72933C321677BFBEEBEF6F423F +:10707000FE05F2FC0744C7173937FBCB127E6EF6CC +:1070800044C9A59D233F50E1F972F115FDCF8BAFA7 +:10709000187115D07B7437EA3DA936BA0784B13030 +:1070A000BF672BEEDEAE47859DFBD422435F1F54A6 +:1070B000CFF905F2BBC1CEBF474B94C1CEBFBF4392 +:1070C000F08C3BAF8BFBC5CFEB6AEF9598FD258726 +:1070D000ADFE1090DBBFE67C568B9AF52778FF81DA +:1070E00078CF6CF6D8FB8E029F584727DD87B29C7D +:1070F00085DEA6383BC85DF4172FF78556A3BF8BF6 +:107100008D994871F7C6B272AA8F60F23A9E2D002F +:10711000798CF97B7F28E1FC94E40CB607FB9AF4A8 +:107120004747C485FA4F53993414CFCDDC2B19F857 +:107130005DF4389D477282BCE5F4AF3AE6C5E4DF02 +:10714000C857BCBB312FE48CD34A3FEB1913F277FD +:1071500018E9614D71F5D7F5D7FB7663BD21EF1FB7 +:1071600058946E91F76316A6EF44FC35F48391AF03 +:1071700030CAFB186CBC49AFD86A1BB363F37BFA07 +:10718000D5E313B87C0EADC6BC16E72BC77763BC3E +:10719000CBDC5EF86B462F34F9BDA4857C9FD8A26A +:1071A0007E3979D94292930AED437CDC1EBE1F8F53 +:1071B000F56C066F7FB1F540FBC9D43EC0E9F12FF5 +:1071C000858F214707F87B4A39FE4F0CAA3371BCE3 +:1071D000D283C7EE082568B76021A797D20591CB67 +:1071E000B0FEECD8C4F9F2471672FC293D68A776C8 +:1071F000BD7589DBD5F6B7DBE247B9DEB89FB7C30B +:10720000FECB4DEDCBC4B8675312FBA3CE2C34ECB0 +:10721000B1D01282D7FD1CBEA0E78670BF4ECC0F46 +:107220002DC3673FDDE670FB0BECA7EB683F1D3A13 +:10723000E9C5679D228F12758EB909F8525CDC375B +:107240009E1FF5F3B5A54CC73CD98EF95A35F66F9C +:10725000C4792FA627972E0811BCCE8875C6DBB53A +:10726000410187A34B25CBFD60788EDE6C9F7E436A +:10727000B433F8FF9DAFCCAD35F3FFBB5F49B9D94F +:10728000CCFF999EBC07F5D932372F6F5E9867E027 +:10729000FB5D04CF7B383C6F437C1F3EF87975B0B3 +:1072A000D3FF11DB970D1237AC17FB0DFDD613DCA6 +:1072B00037187E586E87C4DF0BB16DA1359E01F281 +:1072C00091CEFFA07FD7BCDE6DFDFDAADB70FC0573 +:1072D00039F65022BD76C8529177957D388AF132C1 +:1072E000A26FFE53CDE7FEBB9EAA62744FA0B8D733 +:1072F0008235C27826BBEFDBB1F1BEBD90DBBB2A85 +:10730000B39CFFEEA6F3C70CF8B3F9BB25024FBB45 +:1073100046F37AD0176ACDF69751FF79B9CDB867A1 +:10732000AE63E17093DF208DFBB5E6D9A675A33E71 +:10733000326F9C14A883F92ECCDA4F7ED73CE01430 +:1073400098B7999F9DEB403768C18CAA7A7C9E982C +:10735000AF3D87FD14CD7B2780FAE7BCCDD1F1E8A6 +:10736000BF06FCDFBB50F855701F0CBA2F5DA0F9AB +:10737000CDF4F76F621F1A06A1F74C818F602FFEC4 +:10738000FBC20BFA1FB8DF3975B4ABCD7C2EF0E72A +:107390004BB93E0FF6E5CB0BB91DFC637C827DF942 +:1073A00013ECAF616403DD8B3418DD0CCC1FCBA173 +:1073B000FCB255E952C0C65F917FC7C87B33C6EDAA +:1073C0002D93FC28C78C7CB0A4D71D7B285FF116B9 +:1073D000C31FD0D981F95AB1FCAFA7D759F3BF3A2F +:1073E0003A2E9CFFB57B1DCFFF9ADEEDC4FC97A320 +:1073F0009F76F861FF9689FCE8D30BDFA27CC52756 +:10740000841C89A777E339B3FCC2F4FEC7851C7ED0 +:1074100006BD7FFACADD167A3FFF4AFB3AF3FD1339 +:107420004C8F7410BD1BEB28ADAB15F18ACFCCF49B +:10743000FE5B31AF0BD0FBE744EFE313D3BBADB43E +:107440009FDE6DA59740EFDE52EB39CAC1E8DD5BE8 +:10745000DAEF7FF362BF83D1FBD4722BBD1BF682C0 +:1074600041EFFDF43A9A911F58CBE27A6E3CBD8F02 +:10747000EA5F873AAAD444EFFDFEC24906BD3357FE +:10748000427ADF62E0D3A45AA45B239EF6C4C2FF13 +:10749000ECE0725E9B546AD603A3D6B859D5A0F12E +:1074A00012DF628A97745C5ABCE46C078F0BADFFE5 +:1074B0005F122731F252E3E300F17131D0A72B4A7A +:1074C00013E8D90C139066C6ECF0FFADF9BA863F0D +:1074D00006E0F47501272699EC8E5B676B3AD2A122 +:1074E000118F6F16F178F7641BDDBF7CA9F149E8B5 +:1074F000FF5ED1BF6A33EDC3886BD5A652AE4F1283 +:10750000DDCC79E5F2DD223EFA00D1A3B8FF273EBB +:107510001E3CD01FC7E8FB6FBDDABC46E7F715ED90 +:10752000A0EF853E6FF8DF6695083B4ABC87793D42 +:1075300046ED84FFF4E36246F5869EC38EA88A99E1 +:107540003F1DCCCDFB17E2773AD3A51131BD82DECA +:1075500098F584F1C077B24D7CE70D6B3F3D31FF6C +:10756000F21E1CBFA79819FCF4BB1C4E9DE154D31E +:107570003EC0FBEFD13C855F31817DF22CCE6B9A12 +:1075800058679971FF4EB7D5AF0DF3FF4129F7A7A3 +:10759000AD914C7C52B575BF88F9C1EB339982FB34 +:1075A0009B24FC87ECC4A0F38E9AE7FD4CA980AB2A +:1075B00088779F98AF1EC2FA3A71EF4FE34846E7CB +:1075C0003626B2750CE3EA4D9867039FEC4835CE3A +:1075D000B144F87D12994B291FE8D356B7C238DF62 +:1075E0007B1DF95E19337EDD41B47365CC1B443AD3 +:1075F0009DC1F15C157C44C63C9D19B13C1D999917 +:10760000FC511989E8222EBEBAEB598791474BE706 +:10761000E1999A5A663A77B7C3D5E24738354A7244 +:1076200018EF337057FAE8DC6433CC47C7F86A2A9E +:107630000BE0F8AE37EC813AEC5F7FA69EF279550D +:10764000B9AF18EF31686D73E139EDCB3BAAE8BEF5 +:107650008DF51B15BA67A3AE627D14FD1ABD574B9D +:107660000C8F3CB020BFEF40867F705D2EA6AB78BC +:10767000664A2E769EB2CC5FE7792BA59798B7B273 +:10768000F1ADA3530F99BEFF43A9F5FE5A232F89ED +:10769000D957D17920232F093702F1C8C85FF96C77 +:1076A00053F7D44360B33A847FE5FA159A6391495E +:1076B0009F37F2119B52FA781CBF55A2FC312D9ACC +:1076C00044F962EBFD36F2CBAD6F6D6BC4738BF298 +:1076D0001B7662C3B2836DC6B87252873D8279E968 +:1076E0007B32F5E8B21984A77D3680777E961E9DA1 +:1076F0002EF28530AFE715B14FEE3D7699F0E61EDC +:1077000089F2CE5C591F51DC7BA1E2082B3EDA3BAB +:107710004BBCDBC0CBE61D3CBF60B162BD07C9748A +:10772000AE23613CDCBD327433AEA3417129C8CFB6 +:10773000DD2C34240AED6AB36FD311BF4B01BF5562 +:107740003AD7A2BE8E7CDE84BF0EACF7F4DFAFCF9B +:10775000F1D1D8678FFF764B9E99270E3F4BB3AC84 +:10776000FCDE1D87DFF1FB3B739135DF728F384FF5 +:107770007456972238EFB3BB766D9B837AFC2E1B31 +:10778000CFA38645384C7289D9BD04A74F3BECE4A2 +:10779000AF854D227F5FA5711F29EB746E84E7EAE8 +:1077A000B071EF68A713FDF0372AFCFE7A034FAAE9 +:1077B00040BD41B958C35417CAE15AA6B9789CC80C +:1077C00047F4BA761DCF6FB7E15AE0FB55BB6C6D3D +:1077D000186F3FDB614F453C52E73AD3DE93B9A9BE +:1077E0007DA1737628D9DE33C951238FC4E3E7F92D +:1077F000671E3FCF5BD1145BC426E13D5636C29B6A +:1078000073026F00CDB6E27C2A315F02F7272E4F5C +:1078100002F6AF20988EF912AC1BEB63F9F6DD4E41 +:1078200027D2B9C887B818FE005E1C47BE66E44B75 +:10783000ACDE70E17C7B4DEB2D7818EAAB5499F00F +:10784000D9CB78BEBD2BCB46F1B5D51BAC7CAD7684 +:107850000DF7DB57231EFA12E6DB13DC93346F3887 +:1078600051BE7D7366282EDFBEBDD19C6FDF58CE22 +:107870003CBE21A8C6B5F8B7639C5EF85BE3F3A6EF +:107880001A1659F9CB8A6221C765CD8F72E2D3F9F6 +:107890006AD322AE7FDC874FE3EF057C56C4DB1D45 +:1078A000CF8B90FF68EC42F15DD088AB85B62F425C +:1078B0007993C9CB7F1272EF60AEB6639145DF5604 +:1078C000C95FDA7F2E4DAF5983F691612FDDDD5D03 +:1078D000B30BF58D16B59AF24BCEB10BE721CFEF76 +:1078E0001B15CBB760A8278FB3E4A3E6B22B2DF509 +:1078F000F9F2744BB9C037D7D2BEC89F6F29BB1AF3 +:107900002B28AFD3F0677BC5B9015BF298CB300F62 +:10791000F4B945563BAA1FEF2FF1FC00C06D1FC103 +:1079200059E4D15D3C0EC1E1F662C9076BEA12DE93 +:10793000B3CAF3F8EE28E3FB1FFF8CDD53C944BF45 +:10794000C77699F3F1BE7FE498A1AFBD4AFB29F257 +:10795000F78C78CA8F8E1C35EA5FA379C7DD83BAAE +:10796000B6EBB55D425F3C46DFAF32EEA7BCF0BD83 +:10797000A84BC5FCBAC6717B95ADEBB3E3FE278F70 +:10798000F751DCC268F7B6C06BD0AFDEC6FE8DFB28 +:10799000178D78939197ED6A15FA52D86ACFBEB7D2 +:1079A000A8DF9E7D0FE76FD8D3B84E4BBEC1A27E35 +:1079B0003BF43738CE6076F4C771FB1F8B2B7D9D6F +:1079C000E24EC67D8FBF3FD2F438BFEFB13D1FE519 +:1079D000A6AB7ED37BA10C82D3798293D8FF8F177D +:1079E0003143EFFC23BD8F8B0FC5E39954E632F092 +:1079F000482AC3FD88C53F12C69BDD650EA37F37AD +:107A0000B5EFBF37354AF0EE19C702ED39E8076B1D +:107A100051313EB7C0C9E3E26905CB6FC6B846A392 +:107A200092390D79FE65659265DD23666B43CBD097 +:107A30002F02146E9B86FA4694EE0D8C221F183E80 +:107A4000389E168A7D8F7FC6DF83FAC5917B1E37ED +:107A5000DF83EAECDA3211E33AF1FA6AFD0B9A0DB0 +:107A6000F357F427ED148F6AEE38974F7C04F7F83C +:107A7000027CE41521379AF1DCF1A4D8FB1965E307 +:107A80002CEB2C2D5823D3DFB97176FA30DFB934C3 +:107A9000CB6EE127F1FD2667792CFC64120BD1FD3A +:107AA000FDF76E8A9C3C0D8C7B8B7FB38C7A676371 +:107AB0006BCD61CC5FFAC4EF5250EE3508BFF4C114 +:107AC00091AEE802940B8AF638EAEB494AC4357164 +:107AD0000A9F2FE61D9794F173B349633A1A4691B2 +:107AE000FC619D490AE6AD49DCCFE28F107D444B35 +:107AF00038BFC6F9EAA6F9021E149799ECBA916547 +:107B00007CBF1AD2188D5BAB30D2FBF25BB733D49B +:107B100093717C65CAC0F1F2CB147ECF49B6C4ED37 +:107B20002C7FA783EE65EDBF1FD69AFF5253C6E99F +:107B3000E697FDF4185A49F310F7C3FE324607AB37 +:107B4000E87DDC3DB783C5554DF7DC56970D8FF5C5 +:107B50005325E67781FB5F6FA671FEC6F748FFE409 +:107B600048F71AE1FFBBD30CF743629E207FEFC2B8 +:107B7000F768FF53BD90BF8F0A3A8ACF57B0DFA690 +:107B8000EBEDE807F82045D1B95E6DC99770C9F3F0 +:107B900028FF41C67BDB6625CC9750244BBEC44EE4 +:107BA000CA1F182C5FE2CBE6476CF18E23BF4992C7 +:107BB000B897263E3FE2E2F910F9F7A33E9CE7B3FF +:107BC000FB14C4333C6586F910A03FA27E7F48E4D5 +:107BD00047E8A03725CA87702D6FD0F17BE31E9B45 +:107BE000609A93F48A43B3C6D0F9CEF8FC88461164 +:107BF0005F2E48AFAA4F433FBF372D07CFCFE13DA0 +:107C00004F28F7A1CF7466D23F4F8EE5F92867C49D +:107C1000F974137C5D3C4FD70A5F9056045F878DE3 +:107C2000298FF906C21736DCE736E991F8B3F8C5B3 +:107C30001C3AF9BD5CCCC7FD6271F097FD0AE5A363 +:107C4000A0DE8AF7F9C9BE59B4FFFF90C7EFF7DB92 +:107C5000E2DD4CF89204F8827E2C039FFAF7BFF520 +:107C60000982D7D7F3E53EBCCF2A915FADDF0F97EE +:107C7000C0AF36203FE67FF87E1F12F74C05D36A6F +:107C8000E9EF7EE013F5BE8F859C0A0E12E75D22B8 +:107C9000F2A4E83E669CEFF38CE4D1144F6F18E138 +:107CA0007695FCCE01047FA76F7A7E9A82F160ED13 +:107CB0000F48EFD3FCB9F765E0F88EEE71981F30EE +:107CC000E56689DFDB96C5F381188BA823609EC12A +:107CD00035127B8C61FEBF523F02F9F39ADC2378A8 +:107CE000C78D6DB1F5EF67FD57E7EF6CEC3AB20663 +:107CF000E5EF49718F4513D8F3745E218E6E900EB7 +:107D0000D0AEAE55D2C9AE4B403756BC879F64FA51 +:107D10005ED6D7723E053D2FE5F7AFA923615C071C +:107D20006C527302BA023EC9F03EEBE62349E417F7 +:107D30008AC77B396BBD8A76D2D77F9BA2E07D6EE6 +:107D40005F16EFFFF23CB1694EBC9F2B09F82EF293 +:107D5000C9FF697462DC3335E25AB57C31B45BB675 +:107D6000F8BF378FCCC0C38941B506E7D3FF776C26 +:107D70008CFE384EC27855348F24A60CA5BF1B202C +:107D8000F2718CF96AC67CB76CD7513FAB85711024 +:107D90001D7F9AABDDB678388E17F54E47F91A94E9 +:107DA000025B14D47B15BABFF7E2F7F02DB39C1732 +:107DB0008C7F0E760FDF0782AF6C8AA3F3BFDADF0A +:107DC000DD72707F69FCDFDD7A588CDBDF5FDC39C8 +:107DD000E2ED8BAD7EAD2FFB77B7FE3D2FF428C2D1 +:107DE00093C9AA42F963F3D5C770DF4E2E50FF69DD +:107DF000F1D517C807D4434FACCB8EE981EF2EBE27 +:107E00006B2DF71F4CBB24FF815DD8F7D79CB05971 +:107E1000F4F8D9BD56BD7DEEFB432DE5BFB5DFA11E +:107E20004429B5B49F727E0DCDF3AA7DEB2DED7282 +:107E3000A2B75BCAF605DA4B08AFE987EFB67C7FDD +:107E400075F7664BBB03157386A03E3F985FC3C8AA +:107E50000334E0D4BD98DB416E4798EE5135F2FF14 +:107E600006FA39AC7F07F68DFF4FF8801CFC84F2D0 +:107E700091D076C3FB01775434FB12D10BD8B1BF3C +:107E8000596CB2F70C3BB66D31A3F5039E7E487872 +:107E9000EAE8C7D3DF62F9A3387A7C0CDB5FFDB771 +:107EA000B74FE525E32C74F997DAA75BFCB7F3FB32 +:107EB000CD326DE49FEDCDAC3E8C769261971A7613 +:107EC0006BBC7D5AAB573D8EED0DBBF4A610CF5B5E +:107ED000ADD5DBE87E9CDA01F6A938F783F629C137 +:107EE0007750FB74CC121E7FEBA3FB76451C93B13D +:107EF000ACB568DFEEABE37CA0AC2487E81E68BDC0 +:107F000080CE3F001FA7FB8EBC874F23BE197E216A +:107F1000F865E27924C39FBE2AC4E1D7F0B923757E +:107F20003A94BB1EAEB2BD8EFEEE0E7B9B8DDB4740 +:107F300096FBA8763C798EFCD1787E1EF3FF588B99 +:107F4000356E7D036B7909F5B4ADB322C311FECB59 +:107F5000C47D551EE3BE2AA127AC16E3C7DF5765D3 +:107F6000D8570EE66FFB42E03D339D5B33EA093E96 +:107F700009F46D2FEB257BAB3F1EB791EB0D59D06C +:107F800023EA41F1F1367939BF6FC313A76FC818DF +:107F9000AF4A8DC5EB8CF8B491BF737DF7951D98F2 +:107FA000E7E240614879D6DF7B02F7C394CFF30460 +:107FB000E6F3509CCEC4B74DF93BAA0C7A50E87D4D +:107FC000E37BD8F64CB293B765A03E58F1EC13C5ED +:107FD00093B1ACD1DF0BBDBCDBDB81E74A0CFF5AB0 +:107FE00079F79075C20FA92D41799DCEEDE8D01299 +:107FF00066F8136AE8BDC2EDF9A54B98E14FB88960 +:10800000DE1B7E4DBF2DE1DFA7F0897351F374C6EF +:10801000AE00BDE6D625563E766FECFE27E2432E37 +:10802000C1875C63787E4A7C7F772E910CFBFE8E45 +:1080300025DCBF7EE712937F5DF1F2BF5B847E5645 +:10804000F447F8EA0E1E44BDE21CDECB1E60FDF7CD +:108050000EB9B2F9DF2976C92FAAE2DEA15EBA779E +:108060008875328C77B85FE47F5F2ED467B3D0F524 +:108070008260B2D5AF1DC33B8A87C4C75506BB8F8C +:1080800068B9C05B77766181253E12B2C64772BF80 +:10809000B321BA7906E9B3618C3BB8B31D16FC4A2B +:1080A0006A64641FAC30CEC9DE1FA5F275A0BFE2C2 +:1080B00039595D9C73B851DCFF709D169757C13ECE +:1080C000273AF48F778471FDF1F192F8780F50CA56 +:1080D00045D6C7E382C6F9D11D2EB69DE272936DD7 +:1080E0006C337DDF598FF75A241B74956D8D73D7D0 +:1080F00055BCA0633CE64C2E8F830E55F97EDD0007 +:10810000EBC1FBB792E3E282C3607D7741FD4A5841 +:108110001FDE33124F9721B58AE28EF3417F4F74F1 +:10812000EEB83CF88E9DFC7A4B84DE95CDB2112FD3 +:108130002739F5156477315B00E54CD3AED6628CF8 +:1081400077EBDF760426288C0E483A4CE7640F5410 +:10815000BCE0C078F9B9706A80EE65602D7E8CF75E +:108160004E92C64A184F6C9AD0301AFFD47453C638 +:1081700008BA0F24A4E6E6627B8FDF2E91FF80F120 +:108180007D6C5A9E46F7B11A7A43639DC6B01F5D57 +:108190004A61FC5E7595E655A9BB156CB7C41F26F0 +:1081A000FD6CFD18C6EF69C538E808815F507F5D3A +:1081B000F07907C6317DE31C2C75564CDF48B5F5C8 +:1081C00006900F96B15E3AD7B684F99CF85CCA0265 +:1081D000740F6B050BD373056BA1E70DAC939EABCE +:1081E00058AF93E71B296417DD98C5E39B0C9DF0FE +:1081F00040878B64E644BC68EA384A7FD7A2F922FC +:10820000F9C9F592A8079E84F10C29AB82E72B4FA0 +:10821000679A1DF8A2FA7B2699E3A3C6390BB91C0D +:10822000501BF48F3F09B9CD1E0A34BA8DFC1BA434 +:10823000DF7AC9F2F789BFEC7D54FF0F9B633D3FA6 +:10824000008000001F8B080000000000000BE55BB1 +:108250007D7854D5997FEF9D3B333761126E208432 +:108260000904BD8144620D3881800901B9F9C290C9 +:1082700080CCE48B58814E5430027647A92B76B5DA +:10828000B9211093686D74C16A6BEBC0C21AAC5D02 +:10829000A3A53ED2B5DDE1436C31B4C15674DBB465 +:1082A0008D886879FAB458A052B7BBECFB9E736E08 +:1082B000E6DE2101BBB5FF74D3074FCFBDE79EF3C8 +:1082C0009EF7E3F77E9C333244DB530B01543F04AB +:1082D000BA01609E0E46D40790ECC7361FE002FD3F +:1082E0002D04F8CD3217C01C6A65800900754AB0AC +:1082F00012D2F10315B4B662EC432DEBD7DD0FD0EB +:108300009E0630FFC3C24AC0797FD504E02AA0EFA1 +:1083100074F6DDE0D9FD1366E2674DEA0BAF6AF84B +:10832000A81FA0AA0FD7D99A36B032685B6F425007 +:1083300066EB4D0C4AECBBDD467062105BD8D31780 +:1083400008A600AC5DA6B1F700A7C7531FDF4F66B4 +:10835000EF5FE6EF8F7906EEB4CF67B54BC57C0BC8 +:108360000B0EF866237D90290772F58BC7558AF5A9 +:108370006BAB9A21ECA3F93437E0BE0A83592D2A5E +:10838000EE3708FA965424C1B339BDA52989AD7FCB +:108390000D5B5FC5F567E0F30F9CFCB3DA82A0C705 +:1083A000DA4F4190E8F7717AD709FECCC765F571CD +:1083B000D86E8A4DEBC9A7FDF1F7BB0D632E8D0F6B +:1083C00042D84C0DC4D70DBD8D4326D138BDD750F2 +:1083D00070FBD92444EA830945004753C47B33BB6F +:1083E000A525EBE2EF918E3246B758675E10D8BEF6 +:1083F000E70435460F287C3F9BBF072D24A70E922C +:10840000972F2EAF7AC1A7C436C7FA5EC8E727A751 +:1084100095AA91F87125C9630EA3A38ED1D1C7D7B0 +:10842000BB92E8E07C6AB4CBBD46D037D908DF4CBC +:10843000FC50CAA508D1857A6848284F8F5FDBD1E8 +:108440008D53DEB86CF8FB5534EE2DB92F204D035B +:1084500058B20CACF59AADE7A9F87C52497835933F +:108460000740FE940C80CF01FF6B928319308DB3CF +:1084700093E6EB4883D8425C27C994A26DC8EBF21F +:108480009CA06708F9B1DADCEED191BED559BD1DCB +:1084900093D00E3C79D09784229D4872C57993F38E +:1084A000DBC0F0919DF529E17CB6FE5D6C5F397C07 +:1084B0005FDEC59CAE9CC542AFF3F8F3A2C5828FC8 +:1084C0004B385F8E4C1D59AF5FABE27C3F501A7E3C +:1084D00080F6913A79E30CC047D06BE834CF6B5506 +:1084E0009C1FC3F355587A15DCC4E888F0F96F5423 +:1084F0000A7A7271C8AF7FF4F39D3EE4E3BC1CAE10 +:108500004FAF2CFEED6D6DF8FF0DE4038DDBD6D87B +:10851000AD925D24D2B1BC29FC655ADFEAABBAE664 +:10852000A1FD9ED95ABEAC1859A1D074B32EFE4EEF +:10853000E9A907637CBCFF522B72DC8BFADCAAB280 +:10854000F67BAD1A98D3918E563FEBFFA055676D21 +:10855000AC358F3DDFDF1A60FD83AD45AC7FA8D51C +:1085600060FD1FB656B1F69F6EE0FC5D7855F00ACF +:10857000E2DF7BB9D0447AAC5628E6C454B61FADCE +:108580007904BE6614373F43FC89EF27E6A6716580 +:108590001056482F6E00530184C6C51050D2511F8B +:1085A000DE5E10FE36EDBFA222B4391DF75B73ED1F +:1085B0008C2CE2D30B0B82CF733B43FE21DF97CD94 +:1085C0000BBE40FDB4CACD8C8F8F90AC50AFCC7930 +:1085D0006A7417D9300C31F958EBEEA992843DA199 +:1085E0000C503F6BC0F63717F591DA6CDED533C807 +:1085F0001CF08FE96DDFC103A88F8FD42647BA51D5 +:10860000AE678CFD0AE9453544D9FB9A801B8EE79D +:10861000F1EF2EE0BFE43C675FCD511C7D44443058 +:10862000ACBE8BFEFB5930D4787FACABCD1FC0FD08 +:10863000ACDCE87AFC04CAB373DF1DA0A3BEACF4C3 +:108640000FB8C3ECB9873DB7F6D589723E9E0BB023 +:10865000DD30DE207E1C29367E4A6DEF82E09B8C69 +:108660005F3ECE2F8015DAC96B002430E40B63E245 +:10867000F6B8E0B41C5F1FFF2D3C9F1CA70FFF95B1 +:10868000C27847BF5C9DEC185FA94D73BCD72132FF +:10869000508A72183214E60F6FF05FE318EF6D73B3 +:1086A0002501CABFB792EB53470892612CB66EB84A +:1086B00082F0BAA98ADBFB4FDA6E9036E23CBE6DDF +:1086C000327803B48FB09FECE64109927248CE47EE +:1086D0005C815DF8B8D10B0CBF2C7E9C15F8991409 +:1086E000E2B8A846EBC0987DB15E0EF34FE6B88CB9 +:1086F000020FC4C88FDF3B7D56B71E7F6FCD33ACF2 +:10870000BFB14636DFCA4E6E6F7228259DF80AB398 +:108710006016C9AFC7D8C4F4F04C1822E4B7475B61 +:10872000D79AC7EA7B62A14BD2E971E13E51FE07BD +:108730001AABE528EAE329FFD41D5E895AD9A0F5D2 +:10874000CE0EEA3B487FDF0F5A7ACEF51FBD25DCFF +:108750008F7871DDF97C30673BF1C110F860087CDF +:1087600030043E18021F0C810F86C00743E08321AE +:10877000F0C110F840AD35EFFB419DADEF89D5B3A9 +:10878000FD78A2BC459C9C1E225C0E70DC9CB81837 +:108790002CFFF29910D15BC8F1B35B1A580F6867D0 +:1087A000FB6A9EBC4D59807E926C12FD6F5FCD932B +:1087B0003BCDACB81F4D8C7BAE0FF1B82AB1D56A5A +:1087C0009C71CE42CFC06A1A0F1BFB02B533E27414 +:1087D0009784AC38C928213A7F5FCDF7B11011D703 +:1087E000C07862C9ECFF9E4CF687F41A219B3F2D9E +:1087F0000C713D0693D38FDF97D3F74BA771BAA1C6 +:10880000A66DB5994F7EE7B48BE4F4CBA9003B503D +:108810002F60735F20645BFFCFD55C6FCB42C37C5E +:1088200059CAF825FCF9C282D9036EB483D547CF63 +:10883000F5FAF1FB3A99CF7FA27AB0D7E474D5B1BB +:10884000F1C3F19B585FC431183F883866574B8B92 +:1088500072F9F986901DE4B75686EEDC25E6FF1C1A +:108860009BBF8ACF6FED2F14FAFC6AF1FE56F65EBD +:10887000F8C52365FCFDCDF4FD7CD483C2D0AFD216 +:1088800029DE359374E97A1C061186FB006170E1DC +:10889000F3457E943DCAFA3DB12EC0DE5E03F9E693 +:1088A000F115BEE7423ABF79F47BBDEA1CA28BEB1F +:1088B000C74B47EB562B53E2FAF1E2D1BA5DA41F46 +:1088C00048C717181D222E582FF8593735902B619D +:1088D000FCF9DCD1FFE85551AFEA3C621D737FAF74 +:1088E00081F4D525C315149F3E79F4D55E05E3D3F5 +:1088F00023C3FCFB798B91155F67F7D1FE5EB61F32 +:108900004DDF924EF19226054C9DA6D2DD44D7F65E +:10891000A3032CBEAD1BC7E7BFF7E8402FD1E5D1BD +:108920000CF704165FE1787C55AF59FBC49000F159 +:10893000B15EE7FD3F1E7DA5A5D347E383956C7C23 +:10894000169FBF0190BE00D1F7A3964F421FF26160 +:108950001BE383B02B9427F3D789B8B253D8892B64 +:1089600065A787F47BAD7FE4B8FB996A812B45C38B +:108970007A1E253B78A61A1CF1163EFF177A7EAFA9 +:10898000E0FB1191476CCD76E6277B04AE3E19E201 +:108990007A6FC567F8FDB742EC39FFFE623E733E61 +:1089A000F51DFDF716B2AB1D21118FE5F3EF9F0EFC +:1089B000698EF99EB5FA422F9F4EE8D743CFDB343C +:1089C0003F98C9B0AB90E412147A7AB54E7D8028F6 +:1089D000EB7B200BBAD3B9BED6E277FB055EA0DCF9 +:1089E0000CE22B28F89CF06BA9348EFCD9B01E9BAE +:1089F000BFEFA5B8B5CB8DFAA771792BF3E3FA7267 +:108A00003CF4612FE9CB29B7CD5E558EDB7CB3AE4C +:108A10003B5A709FDD09EF1B86DFC36E7A6FD9C5A5 +:108A2000FF84EE5E6DC7CD93A1BB995D8C36BFE729 +:108A30008D934CDF2C7A7E73F4ACD0DFE82A405C57 +:108A40003872F42CA3CF3EDEE4F1F73B763B7B5546 +:108A5000C8CB9203CAF104E9C129771868DE62F332 +:108A6000646F45A643CE1FD8F5E75D4B8E428F4617 +:108A7000C3F93F097D496C2D7C77AD14FB345FEC65 +:108A80002DF58D8893E7197E0B3F749FC06F7CFE98 +:108A90005F765CFF503C1FD61783D3FD7E82FEE0DD +:108AA0007772ADCD7F5D4E0E385EADB5AD7F44AC17 +:108AB00083F9580A3D1F2D1F5BB15E62F33487D6E0 +:108AC000AFC6887954FE64D7727E24B68F553BF3C7 +:108AD000499BBFCAAC257FE5E5746EAA2E63787EFC +:108AE000397FF525E1AFFCB5C3FE6A5AAD8D7F1322 +:108AF0006AF9BEEACA84BFC5F82D648BC76F1474C7 +:108B00005D1CB7E31FDA596A49F20EF2073D86CCC5 +:108B1000FA6702D93B5CC882C5B57F5D1C5F1DE466 +:108B2000713CDA35CBC33EFDF87DBB3F901F8FDF34 +:108B3000BBF73D0994D7AECCB974FC8EF94C0DC986 +:108B4000C1CA67309E5F52CBE3F9A5D4BE26EC6460 +:108B50001BE65A030C6FA22A607B153C51FD19DC01 +:108B600057D75689C5DBDD399C5FE7F2A528E78337 +:108B700091BA14F912620CC1F87B6554D5F0BB9A16 +:108B80003CF91DEF4CBE7E8C64EF5A3196D6EDCA8F +:108B900086A82BD5465F6A18683F9EAD6D2620BF1C +:108BA000CA752E1FF413518A3FAFEC0D750CE1FB13 +:108BB000B51BF54AA2A7ADF1B387BC28CFCE3912B9 +:108BC0004CC4B1DB3C61B805FBEF157BB54DC8F774 +:108BD000A5856995F7B17A990B5C24870AF7F1218D +:108BE00095E4A4C205D435B50AFB367ED78012EFD2 +:108BF00067130E3DFCA16B26B5CEE71B078FCE3C5D +:108C000068FBEE9E5A675CFEEBD697E1DDDCF83E32 +:108C10003F0702B7110E6B453E7E0BEEE3A3D681F4 +:108C20009907112B5B859E613EDE5A3B423EAEA307 +:108C3000DF20BD7DCF9434B2CFEEAD670E5C20BE99 +:108C4000EBA858D80FC792547ABF76A3144DC2FE32 +:108C50005A7D680BE517C9BA1291D18F272BB0C97D +:108C60004D75905E57B40DDF1F1672D89D13E999AC +:108C70004776FF3317C8C8BF723FB78FD538AF17D5 +:108C8000F7B93A2F7407F5ABF33CBA8EDFA9F97741 +:108C9000F5B871DD9AAD2E3098BCCD581DBEC7A970 +:108CA0004E77E33AEA7C1793F38DBA0C31BB1E9BE7 +:108CB000C61B39A8174B85E9AC02C514FC942F4894 +:108CC0004C57742543E0FE54E2DBE0E65B687F240A +:108CD000B700E3BF3964E97D36C93D99E945C7D599 +:108CE0005C2FA0D07D82E6B3E49ABC7583D98CEF6B +:108CF000B5795E6D2CC6A3C9A09CB0CBAF260FC7BB +:108D0000DBF34492732AB5CA09FB3A89727E91E477 +:108D10003C262EE7DD0ACFE34EFDCCC5E2AC533B4B +:108D2000773E42FC3477CA815CF695D944749E82C2 +:108D30007101E6CF631228C8879B857D58F247BC36 +:108D400070D37EC391D400C30BB9CFDD8CF3ACD408 +:108D50001520BEAE82D36EC29566D03D14C7DE0A22 +:108D60008687FAAB21ECE171AD0644C7ED2D529434 +:108D7000704C56B9DDACD8296F271C3BD5EB4A2582 +:108D80003D324ADC6927F11D7D3252DE67B554F968 +:108D90003969C39DBC5AE18754CC8B2F91D71CAB4A +:108DA0001DCE6B8E911EDF4579CD9C8BF31A8614F8 +:108DB0007F87759157AB059F44FDC0AA7B74EFCDAB +:108DC0005E2293FC5D709AE21A857416E39C034F51 +:108DD000B655C928375D564F933FEC4EF136513D9D +:108DE0001FB442F67ECDF5517FED0871345A005B19 +:108DF00007E3B426E6BFC5F803EEF0225AA73B5BB3 +:108E00009FB519FDE8EFA6A07E60FFC0025DDE847D +:108E1000FD35797F5CA5CF8C7F7FC0CDE3F4BAAB05 +:108E20000259215BBC3CB18EC7E90772F9FC9DFA7F +:108E30002C37CDD395AF49AE34C2AFAF69CDBEF8B4 +:108E4000B878FD2D3CB1CED64FCA89B9B9BC7B9854 +:108E5000FF4BAA4F36094F6F9F1FCEAAA3BA89CAEC +:108E6000F12229C77087F36DE3A85C984A7E8AEBEC +:108E70000F68B878268D33818D13FDD1F597F3BD3A +:108E8000D2E5030387F667713CC3F845263CEBCC7B +:108E900091A326F6BDD9721AC14DAA6C564DA5F8FC +:108EA000BB4C865D3AF98B33D349BE1F25AD627644 +:108EB000A4137095609E91BC8AE1E3D03DA04993D4 +:108EC000B98103EA69A35061B32CF2F410D9BF470A +:108ED000D5DAD16EBF3A26958DDF3898C270EA2375 +:108EE000393283F4F5AEBA6CB6AF317224A55C2288 +:108EF000FEEEF0119F0E57C823D6DDCBEA7C6CFC4A +:108F00009DC54629F1ED9E3A60FB7BC4AA27217ED0 +:108F10007AE6B27A3FB03AB2096FE5205DC7055DE7 +:108F2000F7D4F1F867A9FFEBBFA07D8D33F4455B63 +:108F3000705F9F457C8D229D4794804474BE7E9BCC +:108F4000043DD2E87CADF17F937D8F1A6CE1B17C5A +:108F5000E1BA383E1B00FB08374B3E18C677666FF8 +:108F60000B4E3BFB0BCF3BFBA5E076F4CB5567BF2D +:108F70005273F66FF03BFB8B75671F3A39BE63582F +:108F8000CBFC01D8F1DFC5DB617F837F37B5B84FFC +:108F9000D8BFF7D49F1C8454B62F87DFB0F83E9A11 +:108FA0009C76142FBDA7CEC6E747245E9F3433E5D9 +:108FB00000E9D591C2F14961DB775D753C2FB5EAD7 +:108FC0006C83BACCF47450AF1D0B23CC3F1C179CA0 +:108FD0002F81980D7F54C5CA0B67CF9E8DFBEA0485 +:108FE0008635B675B8FCD5F3D7B3EFAC386D113014 +:108FF000DDC1B829C24CAAEB4D577413AE5FB6FD64 +:10900000B60A8AA36A503FBC0869353DC0ECE086C9 +:10901000F55254C7F7376FE5FD0A558A1A84657E05 +:109020002FC46C7195E59F0F6773FF5CA1651F2CC2 +:10903000C57E92A19E267F9E94E575C4076ADEFBDD +:10904000833093EAF49EF8F36C9A8FFB65959EDB70 +:10905000FCB215578DC69F44BFBDBB4EC467D7C178 +:109060007524FF3359F56363108FD3ACEFAC388DA3 +:10907000F0BC2237EE9F5FAE4BE3FCD3F9BE937D8D +:10908000D20E5736E1E03CDF28E72A2FD7D9E2B8E5 +:10909000725F1A8BE3CECE0FBF42CF3BFC531F262D +:1090A000DC2F93E034C5A5DB1A4F31FCCB73F3F909 +:1090B000078B54864F833B0FA65C47FA1355D8B9EC +:1090C00027FE3D973C377EDE35A9247C88E6EB26DB +:1090D00045C6714D8FBBD977F8C538CA9FBA53A31F +:1090E0001F501D07CC8CB5FD7E318EE5E5A7EEA0A7 +:1090F0003A81D51FA84B3D4579587746B445C2F112 +:109100005B7F66AE4D477FD24D63D15F4D7933FAB9 +:10911000ACC9703CA090FF7F840A48B86E799E6C01 +:10912000127E97FBDA40ECEF2DC2FFAEBC178F9496 +:10913000E2E8B229272A49EF0FEF7DE1A94CF27F3F +:10914000ED2A5596E0F00C2FCFC366403417E92D79 +:10915000FDC66D1EE2874787595EF4539ECE3E736F +:109160002A8E6F42A8D53582B33EA0B8D3F30AC683 +:10917000432C9F0A9B14EF7831BEA5BE2D3EE4F12F +:10918000A4EA8C2713E3479CF018C5A3F542FFEB34 +:10919000EB37C648DF0F857D11AA5F4290E3878CCD +:1091A000FFE3F811896DA23CC250453E7790D18F04 +:1091B000F1328BB7BCF94A027ECCADA07ACE8F25B6 +:1091C0008848C877F5E130C490FE069CDF0850EB74 +:1091D0008C3FCBD7733F988837B7CF0F423DF1D93B +:1091E00057CAF463BA3BB682D915C80193DA9D3BDE +:1091F0001F9E85ADF9D4B07E30FD99FE9E16A53C2C +:10920000817640F1E675629F874311D706A4CBD8DB +:10921000704580E47AF86A2FB7D3DF68D1316CBC2F +:10922000D17637BE2FF1BB24B64F0D01742EC37516 +:10923000F63D318EF288F990C2EA53CB843D78CE68 +:1092400072FF1AF3804471A3155F5E8FEA4DFEEE44 +:1092500082D01709F24C1A3F7788DF5FE8CAB9FB62 +:1092600031AA3B94BA5D010ECB5CBF96CD0BEBF5FA +:10927000132ED62FEF4D61766FA16B055292C6F477 +:109280002D97C675AAEF323DEBCA999A4EE3CA7381 +:1092900078FCF0516DF86AC63F9DE79FE5BE47D95F +:1092A000FD80F6A822EA59BBD6D239FC2312B78337 +:1092B0007FFAE9C13B4C966F8517D13AAFEB48274F +:1092C000EAA377C60696F71C262A719FE7F2BEF33B +:1092D000E500AEB774C9F62D6422373DD7E6467275 +:1092E000A021BD744B9A4EFECBE5C0B77F78794C78 +:1092F0001CBFF0DF1DD1F18EFEED4F4C768CAFAB75 +:109300009AE678BFAEF71AC7FB4A6DB6A37F83BF54 +:10931000C4317EB15EEEE8878C1AC7F86559EF2834 +:10932000E374C6BFA5C49FA4BE772AE97CAB664F91 +:1093300076FA6CA0B8333685E2FBC194D8148A83E0 +:1093400007459C69C59383D9E1B99B6CE74D1BEB3D +:109350005DFCBE88189788876BEAB9FFA99B1A5BEA +:109360001DF4317D37A7CF64F8997ECB88E7B8B775 +:1093700084EB27D8F1739F9BC6D5156EEFC8207E6E +:10938000DF56C0E2D175F88CE2D18A70A882CA3467 +:109390008B82771D1C8FFBBAB1A84D09DBF0AA9C0C +:1093A000E2CE541677AE637A1570097DE076753893 +:1093B000AFEE92FEE48356CCAFA6039C6CF5B3F6F9 +:1093C0008D569DB5A75AF3587BB035C0DA43AD45ED +:1093D000ACFD61ABC1F2EB81D62AD6DF424033E768 +:1093E0006FBFCE1ADCCB24CCB3CA61E0D0B86C8A94 +:1093F000970315BB904FEB11C0C8CFE0FE1F62F67C +:1094000090A538F63FCCA7047B5B36CFF80A8D6F6A +:109410005420E69E7579BB417DFA2AB347C27F3D51 +:109420008EFFFD7B9B9FB0E37F7FA687E73902AF6E +:10943000C664E9ACEE58FA8D3D0CF73DA01FA7734A +:10944000D8FDF53C9F447FC070A709F15F0F100A5B +:109450004562CC5F209E527EEC51EF677DB554890A +:1094600078FD7FBD3F40C4ABDC22E21F868317F945 +:1094700083BF0CFF6B08FF0B2F85FFB72E221CD478 +:10948000A642606CE6887E601FD35B21AF1344E880 +:109490000496E5303ABC161DEA7A93F218558221FB +:1094A000E2831712EA2C820F5EF6C4F19EF301C22A +:1094B000CCCF2AAFF0BA0398C631CA238A85A81444 +:1094C0007F4F39F1C53F19E3C2229257854974D7BE +:1094D00018C8771A7F82D31DE7538CC9B71AF32FA8 +:1094E000926F4D67C4588DFD9222AF467E5DF12B81 +:1094F0000E3E543F1C617C9A27F834EFB74A429DD8 +:10950000C6599F39512FEA3122AE9BEEEE5B49EBF3 +:10951000F50BFFD8BFF3A06FF65FE01FFB4391038D +:10952000FF68F38FFD05DC3FF6C7FDA3B4E192FEB3 +:1095300091F36FD83F8A7ADA8ACBF8C744BFD8A9AB +:10954000DF3D6EA2CD2FD634887A7ABAC9EA2F6B66 +:10955000645E775D932AEE35D5AF5DC3EEF7A1214A +:109560007B33999D2735E0F8FDEAEC83947F2497BF +:10957000AA2CCE54A654BCCA8F8586FD6C4AC3C89B +:10958000719C46CFF7E7E5A4931D5BF1E9E1BD6D62 +:109590004F6416C6EDF87036DA31C38FDB3A480FE8 +:1095A000CA757D16F9CB6D8DD51AC5FB075272674A +:1095B000B9F0FBAF083BB6708EF2FF06477CCCF5E6 +:1095C000FA2B0227E9E2D159E4EB18C1D7418A1FEF +:1095D0006DEB0ECEB84EAD46FDA87EF3B16795ECAF +:1095E0008B7108FD5716F999FEB4001FD7B0ED59DD +:1095F00025E9E2719FFF22F293EA1B99384EA3F905 +:10960000BE3AE23894EB21A6C7221E406FCAEE1381 +:109610002D852176AE5C313F3C97F6B3ECEAC74826 +:10962000ED407DEEC3876FD2E37CB6F99F92861141 +:10963000F0F748497041033B67E0F7672E87B3F8BE +:109640009735C699072CA2EF9BE4E0E33BA83E9C2C +:10965000F787149AF7B2F3F8B93E415398D52941E8 +:109660009603DDC8E78F8AC221468F01BA9641FA78 +:10967000C9E520F90FFD4942BA8FC910A3737433AD +:10968000D5C3CE5112FDD891E2C58D0DEC9C4CF3A3 +:10969000D0FCCDFAA1B725DC7FB3EA637C80CDEEA8 +:1096A000DF0EE30EC309EBBE5050BA700DE703E9BD +:1096B0004BCED07F76925E3D44F565944FFBCCFD5A +:1096C000AC7F06D4D374EED59E7A0AC223C40F9E13 +:1096D000F32EE77D97E1FA3BAF3B8EA50DD1BF3F5F +:1096E0005F70D1FE92780D1ABEDEC0F3F1B185DC59 +:1096F0001EC6A2221EB7FB09E07549869F12D52B14 +:109700009DEFBD45E65DC41FC81AAE37FE84F6372F +:109710009ABFFFB4DB0EAA43BA2FF1DE136E21BB52 +:10972000E8904A591DECA1DCA93BDA6CF2B3F6FFD4 +:109730005003C614A41F4A9F4A75888772665DB29B +:109740001EE1ED0939EE035EF45E86F0487161B406 +:1097500081E3426A51D89846F5049433D507BE3365 +:109760005F677478023C6EF7F87BD83DCCDF89FBED +:10977000431427517B52DC1FB2F4E5AA810758FD40 +:10978000ED9C89FEAB90D5E39E19223DDDE4D5DA50 +:10979000D3A91EF725F67EA3A26ACC5F41E43AAABC +:1097A000373E649D4B41E45AD677879B0817BCB07F +:1097B00072ACFD1CF1A5061EC78ED1FEF517272839 +:1097C0005016F50A4ADB795D294B63FE48F4C778E9 +:1097D00034F31ECA573279BD113484F9B91CFFE93C +:1097E000AF6BC6534D94779AD91E765EE002E5249E +:1097F000F9B74EE225B246F7858100A56B89CCFC0E +:109800003BBB9049F5CB9449CC7F75E4CC62F2D157 +:10981000C150C9CEFE59AB1D0B97882FBB689F184E +:10982000276E463E523B9ECE4F6CE76FDD7915ECBE +:109830009CCF8D8648F6E2BAFA0B6CBD2D39FCFE42 +:10984000D7969C1DAA8CCFCF09B96D5EA25445470F +:1098500058CF7A8F7994CAEE59F92F4DD7A3822E1B +:10986000AB9F56153648DEE3B3A355B4FEF8ABC73D +:1098700049BCAE11F4D37D8837C4FC5B5278FD3A05 +:10988000AD426F53884FB96B66136FD50A4D3AE9F5 +:10989000A3F33D5D7A97EA39B93CDE1CEF0E329CAA +:1098A0001B3FE12AD9B4D5393FB6E6CB1E397F3903 +:1098B000DE208BFDEEACA2EFCD3C197247A8931EC3 +:1098C00013FAD1EE09FC88F16DA90CB4CE96097398 +:1098D000F328EEDF3285E3EFF163EF3CDB964FFADE +:1098E0007A27FC92F4355D61F245F7F26819ED4391 +:1098F0005334FBBD40ABB5F4F4CB427EEEDC174DE8 +:109900007EFE0A01C2A34AD7608CEA885D861AA14E +:10991000BA5DE2F7BE7CE7B9DC184D61797217F4E5 +:1099200069744E9B5A98EC786F7DB7AA213CAED1F2 +:10993000E6BFC7E487591E6DC9D79D7969F926D25C +:10994000FD90849E05F39487D2B89DE1BE3F8816B2 +:10995000923E671474DBD62D6DE47CBFDCFC89FB82 +:109960001A6D1FDF4EA8F7CD107E2171BEBE462EA8 +:10997000C78EBD8F3AE29D8E5C1EEFACB9BEC7713B +:109980002E53DCC8F5A74BDC7BEA42BD7C71043D5D +:109990006A10E3465BF79CD0B3B89E7AB8FE647356 +:1099A000BD39DDF0A1A8C3F5F1B81FC9A278A4AAFA +:1099B00038BC88E4E325BF45E798590117978FC560 +:1099C000570F8B2BFF867CE4F7A41A27AEE3F593A1 +:1099D0003EA07CAC03F59270CA9DF9228BEBCFA11F +:1099E0005E92DF567A868C8F0B995F8E7C8D07A4F2 +:1099F000F0E7B9C2AFEAF4FC7EE3E37496C744C66D +:109A0000FB2F4F971756F3F9453E38DAFE3C591EA7 +:109A1000475DE42FAD23DFDDE8AC23832B6B5339A7 +:109A2000D99F5F8EBA2E716E327CCE3BF9D2757D96 +:109A3000CB4E467B3F267540A67B838F37967D6B4A +:109A40007311F917AE17AF35AE5947F77D2EC69390 +:109A50001E669F9F0047983E9D23DD4AFBBFEB8714 +:109A6000A507E7DEBC82E901F287CB25085117C3C1 +:109A70006F839D2B4BA6CCE33C03FF65882B362CD4 +:109A8000C8C42719EC688FE94122FF27923588F373 +:109A90006EA277D27A9EF766D18D438CC7AFA4842D +:109AA0008E95E8C2F77D8CF3655C7B4CA23AF4EEB0 +:109AB0008BE47669B95BF24ADCCFB75B5589F4BEBB +:109AC000EB811E20DC4A8ADDC1EEDB78F6F400DD96 +:109AD0001F4DA21B441447EF01765FBCDDF7077EE4 +:109AE0004FC33F75875D3F66363AF3A1E7853CDAA1 +:109AF0007DB58CAEE7FDFC7CE979E574F2B8FCD16C +:109B0000F16266233F9708BC225F520E01D9F8210B +:109B1000E1834AF138BE6CCEF78C18878F490E87E7 +:109B200047FABD4AA95C36D0386724FD427991BF17 +:109B3000D9C3E5F069E9D9D6469DEDEBF276FF7D14 +:109B400060F744E81C20108FCB12E7BB5C9C66C515 +:109B50008FC3E7B79B14682F64F1228B1F379A5E7F +:109B6000CD8BADAFE00B4F537F09C68F14A7DEEB53 +:109B7000E2E7B7D6B9AEB55E8ABC4F9D8DFBBBF2AE +:109B8000EDFBD76D46BC7998B278B4D35D6FDDBF7D +:109B90008EEED3792876C479EA677BA394AF5971A6 +:109BA0005DFF8C892CAEB3E679BDE0869523E53761 +:109BB0003F58CEFD53A5CB27B3FA44BE8B9F6FE72A +:109BC000DF2A9B384F4F9E8BDDC78ADFDF42EDC116 +:109BD000F6F53C17E77F16BF37A4156CD08894E9DB +:109BE00010E4E7004BD09FA4016788ED5CFB392BA4 +:109BF0003E463A4F67C4F372E4A731D6F6FBA0EEB7 +:109C00003D07D93AED81EFF8E89ED6EB7907FA25C2 +:109C1000924FC0AB834D3FFA53789C75A0E035E579 +:109C2000A42F7E2FECE9E5BC8EBC44EF5348896B32 +:109C3000F24B75B2076594FC61C372913F88F7D609 +:109C4000B9BDF57EAF78DF39CA796D49538AF31C07 +:109C50003DE1DCFC96FA96251AF2F026C16FCFF0B2 +:109C6000F979B452C3F11D09E7E6D639BC55674C02 +:109C70005CEFFFFBF9B9C5078B8F565DA9C33FCEDB +:109C8000712EEEC9E371CCD9F9E1E6E554FFA57A6E +:109C900009CDE7D7595D5F15F52AFA1DD848389EDA +:109CA000511C6E596EC357FA1D18BB5FB1779FA345 +:109CB0008E74B8C02BE2B9BE2C7B3C67E9D5EB2291 +:109CC0009E7B7D9478EEC762DC302EFA64818B7DBA +:109CD0002BAC3A24BBF76518BA36375E4781262D80 +:109CE00076373DBF3B3540B8D521F21FBF121C6B04 +:109CF000FF1D99D576ECE77E06FCB6F3F1A9B4EE2C +:109D0000CA11C70F7F27E6ED14F8DB1EB8F513E183 +:109D1000EF4745E1C796CFA1BAB2137F93F46447EA +:109D2000FC748CEC6604FE1F295EFC38F1DF071121 +:109D3000969F34E78146712ACCD73AE81CB41DE3DC +:109D40003A565FBE4C1D68411330BBEB4F8B2A74F3 +:109D50002FB43C6F9F42BFDF5C9283F890E2C00754 +:109D6000E6EFA6BDB5771DC5C70F3FB59FE199B911 +:109D7000598A529ED6ACF6AFE0F551799637EBE2B0 +:109D8000750B9BB81C616B90F1877497E16082DC66 +:109D9000A4C07236EF531868B832699FE197689F84 +:109DA000B091E3677B00F4AF31FC8C8CF83B3879E1 +:109DB00039DFCF6878B4A378E9F789EF37D138BABB +:109DC00067E2E6F3D29E5C25C44FDE6FCEE2717F80 +:109DD000227DCDEA0AF61EB3417D62E608FCDDAACB +:109DE0009974BE6BE95DFBC68828468C4CE71A2D3A +:109DF000E0267EA8544BCCA4FB767DACEEB90406DD +:109E0000587B239CDE3A5562F5CF63447752555B0D +:109E10006C12D2B1E6C9733E7EFEC6EB996ABCFEF7 +:109E2000F90B1AA78AFAA7AAF37B5FFB1BD7CA9D77 +:109E3000642FE8B7A8CED04F7E0AFB678A7CCC4F50 +:109E40008DA6A7E497E8F7617D5417C2F6DFC4EF4B +:109E5000CA3AA92E846D81325446F417BC4C35168B +:109E60008C8BFA9CBF3F2C88397F7F985C1CFE90BE +:109E7000E8BBF6E5718EE749FA24C777474A82675F +:109E800096DBEAB57F87F63FAE69C25F65FF194D85 +:109E9000733E3DFBDF96317C0FDD47F99367B621BA +:109EA0006FC57DD45FEB62F1D3E17C11D704BC4C6C +:109EB0005FE8BA29E3BF88A7DCA81E63C7C5E3290A +:109EC000EFF9698EFB5389ADD71D61F590C4E7F2B8 +:109ED000F26CC7EF33BDE7AF62F3FC40D8EBA4925E +:109EE000705113AB7BC373D288BF4B77C69D969DD1 +:109EF000DD596CCC277E5B766FC5A367FA8ED15196 +:109F0000DAE8F9ACBA21BFC2B68F8EA408BBB74A53 +:109F1000BF37A0791F14F73B4119901B53E2F3A6FA +:109F2000128FD8A1DE00D3DF945831BBDFEACA0F0D +:109F30001894C7A41406C07E2EFFA5396541A22F30 +:109F4000451900E24B8AF53BA4A242368F35AEA6F6 +:109F50004976F0C75ACFEAFF5AE44F1E5ADF767FA0 +:109F6000F39DFBC14379473896C47E971FBE3FDB04 +:109F700043F7936EA1BC879D5314B2F15293773F80 +:109F8000C9F5B8398DFD5E03DB54AA471EEF14F7FF +:109F9000E1F1B98B19599B830EABB5F2ACE39DFC93 +:109FA0001CFE79D3E5C8B346E373627EE54D8E0CA3 +:109FB000510A7ACFDB0BD7D3EFE3BC220FFFE2DBF2 +:109FC0004DCF51BE35D908DF47FC7A07E1869D9316 +:109FD0004C02764ED2FCE003336EC175BF2BF4DA2F +:109FE0006F9D8F8C722E628D1BC617BF852FB08A16 +:109FF000F161147C91CCDB196E3F850AE82A8EC78B +:10A00000D77E91679C2B52F9F96713E8F6FA40E77F +:10A01000FEC51C67345B9DE413E0CC8356FE4A38D2 +:10A02000836D47E706FEBB90CBE3CCD3C427354B0B +:10A0300076E08AE273E24C69B11125BBBA04DEEC2A +:10A04000FC34F006FCE90E7D4E6C2D7D463BFFAEE8 +:10A05000B073539A7BB19D23BD2FD1BE208BCBC94A +:10A060003A5783328DD99B64BEC6CED1E2EB87814D +:10A07000FD4EFE13AEFF49C7FD2FDFF77653304686 +:10A0800000000000000000001F8B0800000000001E +:10A09000000B53E66760F8518FC0B57CA87C42F88E +:10A0A0003189EAD1F1432606063E66CACC00E12298 +:10A0B0005E547E283B03830D3703C3263606861C79 +:10A0C00020B606E2EB3C08F979EC103A511021B6C3 +:10A0D000979F72778CE2A18D2F8830305C1245F00B +:10A0E00053C550E52F8A20D8F15294D95500D40F8A +:10A0F00000B833811680030000000000000000005B +:10A100001F8B080000000000000BE57D0F7C54D57C +:10A1100095F07D6FDEBC793399C9BC84499884047D +:10A120005E428060A34E2060B0515E42B4B11F5BBE +:10A13000474437B6B61D902252FF444A2D5BFFE4D8 +:10A1400041FE104290604151FC332020566DA3AB7C +:10A15000AD5BB51DD08FD2FEECB7D4CF75D16237D1 +:10A16000B6AEBADD6AA32D85DDA565CF39F7BECCC5 +:10A170007B2F9310FFF4FBBEDD0F7FEDE5CEBDEF2F +:10A18000DE73CFBF7BCEB9E75E02F26C56399FB16A +:10A1900053F807CA3541C6D89C6CF9F0DF7CEBF365 +:10A1A0002BEB18B376AA893DF0D39E6D7BB75C1874 +:10A1B000636CEFADF22C1FD40FECB949D6A1BEBB36 +:10A1C000AF7257A082B11626315604FD22E64FAB7E +:10A1D000E1776B8BCCF618D03F920A256BA0DFF6A7 +:10A1E000CA280B3356C354EAD7B5B3FBB5008C3F2E +:10A1F000A59F1933E0FBAACC45B21161AC74506144 +:10A200006C4216AEBDED99E36FFA19DBD57E88CAB4 +:10A21000294A4A0EC2776C3BAB45B8A6686D7210EE +:10A22000E663F7421DE69B1236787B8FA8EB095E4A +:10A23000EFE3FD1F6E3F7CFCCD69F01766316D2E9C +:10A24000B4E35FA1DF8CED304F35A33FA7E07F3350 +:10A25000FBFBE52500F7D41E9857CBFE7EC6EEC368 +:10A26000AE7E5398F28741BB0EEB7815FF02EB9B55 +:10A27000B29DAFE38C13B0DED923D76BAFCB5EF7C3 +:10A280007FB5F51D78FD9CCF5E03F3EE66D164804B +:10A29000F860D16B0CF9E35E980D5821907A84F840 +:10A2A00065778F9CE885F94BAF593D6532D41F48DF +:10A2B000ABBA0FDA6768A9D04C5CD776E013286692 +:10A2C00084993900FC31438112E05A23F8E9EFB058 +:10A2D0009C83E8E0A5C1ACD770BE876E61466F0570 +:10A2E000E275F94F67021C552FFBD80C8437F36FCA +:10A2F00012E2D3E61FBBACDCAEB2CC187C55A5A4F1 +:10A300000E041C78AFD2DA0E041C78AF0A1BBC5DB9 +:10A31000E0BD4A4FF0BA07EFF6F8336F01FC86470D +:10A32000E2DD8B6F2F9DC68B7F8399A1E499B08E60 +:10A33000FE4551102AC0C3854D83E191EB463EC4D2 +:10A3400075EFBB75484A86B3EBB6F1F45F77FD9CB9 +:10A350000F1E443E90381FA0DE391D1F940E021FB1 +:10A36000CCFEEFC4071F4D1E50CFFE779007EC8F39 +:10A3700078F0AECF2EB7B41BC7AA008EDE7676ACCF +:10A380000AD6757BBB46654FBB4E655F7B9CCA2D6D +:10A39000A0AE517F6D39C2D2168C9B570DFD1D703A +:10A3A00045EBE13B071C414377D52389B8AB7F617F +:10A3B000B3E1AA07AC108DBFF1104B239D36B73324 +:10A3C000660618DBD4AE51B9EACC031AEE8F7D894C +:10A3D0005FB562BFB93355C387EBB3CCFF1D2F66A2 +:10A3E0006C1E1F8AE5E7F7772C85F6BE121F5B9778 +:10A3F00080F5FCD9F05D05F5DE79017D9D0EED015E +:10A40000A36329D0A1AF514B62FBACC4F2EBD85986 +:10A410008C85D77CA1E04D07BDFBFCAC15F52C531A +:10A4200060F1D0BF36A3EF44B824F6E61109C7AFF8 +:10A430002AAE40B99A2CC9A47737D5CA0B70DEDA98 +:10A440005AD560300F7B53F915D2A11AFE3B55093E +:10A45000F0325EB7E9921F187C270AE3F642FF75D7 +:10A46000308EDE00ED2E3A033A80CE0DE2EF89EA1F +:10A47000830BAAA0FFEF2496D0EB016EE6E80FE372 +:10A48000452633DF55D0BE41AC2BF1827BBC86AA7A +:10A49000CBBF2AC13AD990030E80AB0EE646F87FB7 +:10A4A0003A4F3593889717583A208D84BF4F3972A9 +:10A4B00004F9B716F08EF4F7AEC70BAF773D91C92C +:10A4C000990555809F1E890D211DBCF03754AB4B5B +:10A4D0006484CF0937CCDB6000DCF923E1B6F97A7C +:10A4E00067BBCE4C10E4FDEDD5C427035037B0FE5A +:10A4F000275F2BEE97067605B81F3862EC427A0D7F +:10A50000F38BC4E56795C4F7CD037EDECFFA094B24 +:10A51000EFC136367404F966EFDDC5B3707FAEE87F +:10A520004CFA52B83F489C2F56DD2AFF0FECBFD79C +:10A530009225DC7A137EE643FD9A66C6FB16AC6F65 +:10A54000EFF6C22BB17DEEADC0A7D0DE980FEDD8EF +:10A55000BF51FB80F86EFB9DCF5F0DF5FF057C2A98 +:10A56000013D13278A9901FCB7FFCFFA6A82F76E83 +:10A57000CE1715822F67DDA2BE21031E76FA8D0E3F +:10A58000B42BAC2BF2D89E442EFE8C1D95709E5B96 +:10A59000387F7E0DF9B3284B4F13FE43FCFDE81EB8 +:10A5A00099E6B7F9D54BCFC680FE5BE4CFBDD77037 +:10A5B000382A5F76B4E7E2CFED07697DA3F1E7FCC7 +:10A5C00029AC6339E0670FF2A79E833FB78E4DE752 +:10A5D0006CE99E9729FF93E6AD852F7B011F3FF520 +:10A5E0001FFF57D4C37B57A886938FED75EF550E89 +:10A5F000752CC7FE8D9A692546AEDBBBCE1CEB28B9 +:10A60000453B61049F5AE383BFB73DCD7E3D0DF5C9 +:10A610006E5CE83783CA8DC8BFC0B704F3BC917ABB +:10A62000BA4F662B909FFB426CC513387F595DCEA5 +:10A630007E76C9D85AE2EB2DC8D7A5048EC9802EE4 +:10A640008508DBB954CF84AA607EFF70DD64653075 +:10A65000BE345C878D06F454F5F0F7561EF4DF1215 +:10A66000E4F55FAE8D375A65D9FA89B5D146AB614D +:10A6700064FB26FFA0250371FE76EDAB664DD03559 +:10A68000BE89E33BE1D31A468EB729C8FB87E53C78 +:10A690001A6FA3D41F675341CF490371E4DB1F48EE +:10A6A000CC6CAEC771797DDEC4D7AD17E665E7F92E +:10A6B00085F4BA6581BCCE9192CF4A80FFF9CD4333 +:10A6C000715689F31E6E45A67911BF8779F25BF842 +:10A6D000BC07A4B75887032FAFACFD8365357074F2 +:10A6E000848B05A8387619305909E227DD887E6009 +:10A6F0001E636D12CC2FD7401D9AA6985A5B00EAB4 +:10A70000A5B7286FB9F57A961F728D5758CDBFD768 +:10A71000ECF18C718E27BE1F9D1F783FC0C3EB12DA +:10A72000F0C5FCBAA156C4C3B342FF375D58FFF76A +:10A730000D3044F0B03F01ECC882D5BA84FB6C21E7 +:10A74000EEFBB5F8BDBE7F3EEECF15ACADB780B128 +:10A75000272583BE634A7F3C19C1FDBC94A51D70AB +:10A76000D9E37ED27803F88F11FC828E503F4E746D +:10A770001D653D1AAE0740D5703D758EF528B01E9B +:10A78000DC2F713DB5593C79D7B12968B5A2BC37EA +:10A79000CDADBF98D178D3649251E530B757FC86E0 +:10A7A0008CDF57CB7C1FB1F1A2551FCE20BEF20D1E +:10A7B000D686F3E5D7B9C7B5C7037C338C0F04AB96 +:10A7C0000F931ECF47F80A68FC4C4E7C33C0F799B4 +:10A7D00023C7FBBD8067358061E1F70CBEAFCB7E40 +:10A7E0006F7F678F63AF77C4382F4E90EC717C0E0C +:10A7F000BA7BF124C986CBAEF4E2ED74F0D8DF7DEC +:10A8000054784EB72E2F3CE3950FE3C44C66CECE62 +:10A81000EAE175DB545AC7E64EB08BD02E3D740189 +:10A82000F9936979E810F297F5929FE23869D4CBF1 +:10A83000682F0ABDBC2732145F94C3DFB4F5F2035E +:10A8400060DF5AA0EF37A33D01FD1E857A1A046F21 +:10A85000CA0AC59A0876D0A3038521F407360B3BB4 +:10A86000B4E6F13FACBD1086DE69C6DFF7817C6CD3 +:10A870000EF2DF1F7B525E47BF339DFF1EE1E39D5B +:10A88000F994B2CED9DF9EDFB8456696637FB37F79 +:10A89000AF50D34B300EE585D792B9FDF023B15FB1 +:10A8A000ED11FB5545485F8A78293D5F3576015E9D +:10A8B0007676BD52BA14E179EAA0BC14E6BF53C85B +:10A8C000C303B8DF812E3DF0942AA3FF6DDCC26480 +:10A8D000C4DF8FFC43920EF45C2D33B34D4353EC35 +:10A8E00092CF33D88F3BE473A5007C37DD4A52FD0D +:10A8F000B1DE46E9C75467A48FB7CB9734A27E9EDA +:10A90000AF0D1D6980F5CD07F9E980A6F9CA90AFB2 +:10A910002D3C3A9D1FFB93D69A86F6F94F761FBEC3 +:10A9200014ED4CB0D49CFC629E047E71E0E547B807 +:10A93000CE19B8DE3895CBE4DCFA6CBEC6F5180C3F +:10A94000D1D601F01A16D76326E8311FD44B07DCA5 +:10A950007A0CE074C1FD49C13B0795E89CEC78A0F6 +:10A960001777C8C8CFD6900FE964825EF1158C8442 +:10A97000BF74B76AF9F2A97CC377D6487837E2BAD0 +:10A98000B9DEDD23CF1939DE5F6A3DF3C3306EECEB +:10A99000E38F6B78C61DAF1E58F0CD1532AE73D75E +:10A9A0002D32C9FDFDAAF1D31928EFAFF8281E57A3 +:10A9B000C98682A877BCDF97F7CF74C50DBC65D375 +:10A9C0004DD52194835DB7F0B8D4FDDF3CA334E5C9 +:10A9D000D013BB84BCEF12F27D54E671BED7643F46 +:10A9E000ADEB9742AEEECFE7F6E048F8D7D9FB04DF +:10A9F000953527C214CFC9D6554F9DC739B2F57CBE +:10AA000051E778B09A98A4A0BF51CA121DA0E70AD6 +:10AA10009ADB580AE00A9431CB7736F000CA1CDF83 +:10AA20001FD23515B8ADC2DE47FBEAE1C7B0EE87ED +:10AA300036DD5157E38CC563D93A8CC30C47BBBD97 +:10AA40008E0D15FDF1B0431F754DBB93FCCF90C12A +:10AA5000E3C35AE6EE56F4E3B5DD6A024D44CDB0E9 +:10AA6000580AEC9090926032C661C2AC02E914D2EE +:10AA70004C2663DC45873AC01F0A27793D26DAF564 +:10AA800014EF1FE7F580D1C61A61DE0DC27F7C7E10 +:10AA9000DA72E2830D068FE36F30664565F83DE8B4 +:10AAA000E374D928A534DF1CF4932D0DF901FA4D78 +:10AAB000C438C59B426E0023FF8EFE009E099CC2D7 +:10AAC000FF6361FDAD4F097EF465F1DC8BF1A56993 +:10AAD00018773944651FC687FC88FF7486FCD27CD2 +:10AAE0008E7F30DBB3F120FAFE5036FE43F5C3AE65 +:10AAF0007A9E6E99E80F2A3196F0C1F741336322AE +:10AB00003DD5325E473A06A2593A6E433A4A593A1F +:10AB10006E43BA48593ADA759B8E76DDA6A35DB7C7 +:10AB2000E9B6AD2259E2A2E36597BFEAA6E315575D +:10AB30007CE52F48C76D48C71CFBDAAB0AA7DFF3DB +:10AB40007B80BE18F7689629EEF170F93AAA5B97F8 +:10AB5000C9E93D15D9739CFE06AE07FA9A0FB44CAD +:10AB600083F6DF1FF253FCE07A65028DD3DF504994 +:10AB7000DF7D6D9EBC9739F8B807E35833909E3C53 +:10AB80003E61FFFE7CEDF4E8A003AE4DE8DF417DC1 +:10AB900093B0239AE69ED0B07D733DD713E582DF54 +:10ABA000FA613C8C6FF4B66B54DE0EF5148CBB1559 +:10ABB000EA58EE68D7A97C10F62D2CEF84F60C9499 +:10ABC000F7413B969B4DB9250DE3DDD10E261AF0DA +:10ABD000D973ED1A950FB5EBBFC750C2F6F638D54D +:10ABE000FBDA0DAAFFA0BD9AEADF694F50F9EDF636 +:10ABF0007A2AE7CB8BAEF6117F0F1D9A8A7EFD3540 +:10AC000055B37AA1169D2927511F337DE8F082BAEA +:10AC1000ECEFF63AE7CB4DD7E277DB4CA585FA2986 +:10AC2000C98BA6E5EE7723F62B9AA924115E164B65 +:10AC30005E72412C67BF9B50FEEE6DE6EB02860A0A +:10AC4000CEC83DDECD385ED99902BE78A6E033B9D4 +:10AC5000C7B370BCDDCD02BEB049E73039FA7561CB +:10AC6000BFAA33057C6566E145B9E7EDC57E5AE1CB +:10AC7000D0128A1BB0410B65A968B15E88FDB4098A +:10AC80004337F2DFCDFDF87B7E3DFF3D88FD715CF3 +:10AC900036D088F18C6883F81DFBD3EF897528477F +:10ACA000BA29C651F9F83FBC8CCB7141B3BE4B03F6 +:10ACB000967946D48B161B3BB1AE05F87CE79F3BDB +:10ACC000C82490B3827A5D92A0FE69A8CB502FAAC7 +:10ACD0004F4AA4DF543EFF0FCF1F6212E8B5820631 +:10ACE000E807F567A02E43BDA801FA413D18E0F042 +:10ACF0009CBF8049D82F2DECA54F2FD069DFD09B6A +:10AD00000D09D555AFB0A78A4C3E7EC1427D2DEAD4 +:10AD10009845B0FD2C04394ADFC8C8BE7BA2E37554 +:10AD2000F2FB0BFEC0C848D195C4010BEC3DAD94BD +:10AD3000917CB11033F680DDF8D07DDD71B48FB534 +:10AD400049AC0DE566C6FD3DD5580F96B214EAED47 +:10AD500087EEBF278EE777416CC7B8FA03F75663D3 +:10AD6000FDF72F2E9898CAA10F820618A20EBBA736 +:10AD7000C272DB0D45754909EDE8C9082FAEE746FB +:10AD80000EDFA18E77282E51F40EAFFFD15776C07B +:10AD900002DB489B9C664E78BFF37702DE291C9E3F +:10ADA000B37E20E09D0CF0023CDFF98180770A5FE2 +:10ADB000CF59CF08781573A23E0E78F3AADDF0FEC6 +:10ADC0007FA0D709DFAF76DEBF16E33BDB663245F7 +:10ADD000027B645B90FB3FBF57D216F98D41A3D233 +:10ADE00072F89B3F177A549BCCF944DBA75A13CED9 +:10ADF0001ADD5EB3E9A5EDD3DEC07E36BD82FB422F +:10AE0000D684FCD1BFB3E918DC177EC339FE11DC50 +:10AE1000748B4E4FBFCD6BF97A6C3FCFD0588F3EBD +:10AE20002B3BCE33F63A4A393CDB97B8E521BED40A +:10AE30002D0FDB9772FE7AC69E5FC845FC2ACE674F +:10AE40007D88BF68F6DC03F0678E0B7FCF8E137FA3 +:10AE5000CF7AF0F7EC38F1F7EC47C3DF16B19E2D4F +:10AE600091617E203BEAB4EB79541D13AEE1F53CD1 +:10AE70000AEBC977ACE7D1D09878185ECFA3E13759 +:10AE80009CE38F773DFD6BF97AFAFD7C3D86323687 +:10AE90003FECDBE9E687EA5D6E7ED8B72B373F549F +:10AEA0003FC8F9E17631DFED11C17F6198AF70F4F1 +:10AEB000F9EEFE8A7BBE92E5EEF9EE5E9E7BBE92D7 +:10AEC000ABF97C0FBF71A3FC04DA618D72DA82A149 +:10AED000FBA0CF61DCE71483ECE9FDB507E3781E46 +:10AEE000737B5988E293076AE74E44FBE876731652 +:10AEF000E5CDF489F34B1B3EB0A7FF782D9D636A27 +:10AF00002EBBCB5BF608BBAB47D85DDE76DBEEEA4B +:10AF1000AB96C91EF0B6BFA848220E9A2C41FB1F63 +:10AF2000CF456B72C4576C786C383F2E5C07141B8E +:10AF3000AE03FD4D09C06FE7C2751AE8DD4D352F30 +:10AF40001DC6FA0FAD85EB9A2BFEEFC3F5A872B9BB +:10AF50000BAE87D9E5FF4FC0F5A3CE2FBBE0DA6873 +:10AF60007D795DB3343A5CDBC4B9DF68FCF11A4B20 +:10AF7000FD44013E585F0C7C1BCEF26D39FA64F043 +:10AF80007B46D15D7C1246BB368CF3BBF9AA5BE1F4 +:10AF9000F136BB5CAF18F45DDE1C85F67176999ACC +:10AFA0009E26E05C04FBE963386E5176DC7B3CF363 +:10AFB000D8FE27BAA3A7A6623DB7FF193891C78C60 +:10AFC000D9D07A2248A5779DEB057EFB6A793CB4FF +:10AFD000A77CFA2E3C7FEFBB35417A35AFD998B5C7 +:10AFE000CEC0F1787CB3AB76AF89718E90C85752E2 +:10AFF000745D42390F69BC9E97B982FCD25033AB65 +:10B000000D1AD9790AAAF54693F0D7165FE4C8CB92 +:10B01000582FF00F766F06E75F7F815EEBB4B38346 +:10B020007E8EAFB08FEB95BE4A2B5EE8C06BCFAD86 +:10B030006986766F574537C1A5293C9FCA864BD391 +:10B04000783D8470619C1FE1728C5F60005C35A369 +:10B05000C3E5C5978D07EFF95FD9091F9DF34E3AF8 +:10B060002151592AF05E8278877AFCC4042A279EEF +:10B0700028A0DF8B4F4CA27AD18912AAC74E4CA5CB +:10B08000FA84131554E69FF8149591133305FD6661 +:10B09000539977A296CAD0894F53BBED5F6A27E6D2 +:10B0A00051FDF6799C8EFDE7011D2507DDE6CD25D6 +:10B0B0007A069A596206D025A00C1EA1BC9616B03D +:10B0C00063A52CBE02025F85025F012FBECA6C7CA5 +:10B0D0000DC51739E26476BCDBA6E366A4A383FE44 +:10B0E0004D828EF93EBE8FDC5EC94A0A9D7666A30C +:10B0F0004A7666A085DB99010F1D3F2E5CA3D171B6 +:10B10000529B8C36D8B03E28591172D527A60A5DBD +:10B11000F5A2D6526638F35FA0AD01F6CF09C94A51 +:10B12000F7EFF567B8EA76FC322F31CB359E567DC6 +:10B13000AEA71FE7A742911F10441A96805F6FE3E6 +:10B140001793451C71CE2FFA65575C7458EEF1AF1A +:10B15000686F2719C53BC00F95D601DE8A13AAD1A7 +:10B160008B792CCA05D22EF41F9F0D303C5F975867 +:10B17000B37400FA6F31B524D62D7FE5F0B97CFFAA +:10B180005C4AE964783ECB7C7DAD98EF51FCD70AF0 +:10B19000A33813665C40FDD81ACC7941F86239CFE8 +:10B1A000AF8B99CA329AD057B0A6D8625ECFAE1B89 +:10B1B000EA1C0F6FA2FE0AB02BA2C91CF95BE31EAA +:10B1C0006FA1A3EE38AFF7C23B625C50C7930A3F52 +:10B1D000FCF89BFC9118E9DF73D839A47F47C18341 +:10B1E000974EE3ED5781FA65369E6349544E11FA46 +:10B1F00065B2D0EBE542BF94A17E213D34897E2F1C +:10B2000015FAA504F5CB6CD44315544651BFCC4672 +:10B210003DC3F58B2AF82C827A6602EA9B5AAE4F20 +:10B22000847E6171CE7779A87748FFCCA312F36949 +:10B23000506EEFA8302A7B9DFAE6BCB9A407B2FA9B +:10B2400026B73C6B62BF185D9E8D12A73CDFE1D133 +:10B25000333D9EFDE225A167A262BFD87CDE1FAB15 +:10B26000D1EFBCE3A262D9E788DF755D349DEB9B2B +:10B27000E4D8FA26765A7D63B9F68D1E7B3F8BD7CC +:10B280009DE63C82E369F379DF237E54557EEEA28E +:10B290009F7FED9107512F9CDFFDCEF380B7CBFC54 +:10B2A000A957FD688FCFFF261E4EB01DD7F7C631B8 +:10B2B000CEB1F9BC3BE9DC5B53F9F969CFF97D43C9 +:10B2C000F81DF41FF473B9BD4245B899D686F2DC77 +:10B2D000F31596C67320A3D3ADEF26DF1272E99F54 +:10B2E000B2D585AE7AE9B5A5AEFE980AD3308BF11A +:10B2F0006002F06D7C995BEFE5379CE1EA1FAE736D +:10B30000EB3BFB3C2254E3D17BF1F1C94154C841F2 +:10B31000BE90838890039B7FBD76CE260FFF82C5AB +:10B3200046FCDA2BF8D517D6A5A53523E9D2557BEF +:10B3300093897EC847E7DBB46B1FEA3D0DDFCE542F +:10B34000B91E1FB6736A0F12DFF6CEF4F0EDCCBD56 +:10B35000473E997DF2E3F16DFF9CE5C655C09FFA2B +:10B36000AC6BE3C8773D73BA8DAB38FF9DAD029DE2 +:10B370007A66F5251E24EAB631D4E3367D23827F32 +:10B38000F21B640F9F8472EE83E3E58B8B5583E0A1 +:10B39000B29AB8DD6A9DC51278BE18D2FB4D099AE3 +:10B3A0008C9735B28BBA8F4A9487DA5772208EF118 +:10B3B000A76386AA635CBFAF9CF13CC12FF2FD324C +:10B3C0005E959270BF2B626D672F857A773B70CE4A +:10B3D0000C5857856A62BFBB5E8F3C8874395EC269 +:10B3E000FA51AEDECE4B5DAC3AF661A974450AFB6C +:10B3F0007DE35712E5AB05ABF8B95A1EE23886F388 +:10B40000F3B85DA89AC7EDFA4A781C0EFA51DCCE63 +:10B41000AEDBE3F59564E261871DD3557B90F84080 +:10B420002B033EC0785EE66F18E63B07CADA281E9B +:10B43000A7290319A43FABE1F1374D4B67905F5942 +:10B44000358FB705CBFA29DED627CEC37C61936151 +:10B45000FF708D5E8BFB3AC60FC98EAFD277E23A92 +:10B46000E7AB5CAF7E21645EA392FD5BA6BF952730 +:10B47000E8E5F037AC2646F92056939AEEC07341C2 +:10B4800019B00B78EC963219C4F31742A9AFE1F763 +:10B49000797ADAA4ED22DCCFD09F99CE38FE574DD1 +:10B4A00093D3289777F9CD9B908F3680BF8574DA38 +:10B4B00070C8CF307EB0C1905B28EE6BE4111E5790 +:10B4C0004D2BDCD9EBC0D3D7851C9DF09BB7E13C5D +:10B4D000F0FD5DCCF53D6BC965D7DF2AD6D72FCE01 +:10B4E00095FA1B97A7D7A23F525E3D0BF1A137AD4E +:10B4F000D8BE04EB936BE81E50BF2AE5CCBF06FE16 +:10B50000DF8C7007CA2C3A4F05BF82D6D70F7A9AC4 +:10B51000EE73083E0D8553261A17FE5882E139F165 +:10B520008669D3A3B9E2D776A9AE79B4008FA47C9B +:10B5300061CE47C837B4AE2277FC774311E71B8C46 +:10B540000FEB8EBA3DCE86A27E371F89F3D7D1F995 +:10B55000C8CD379A6672BE12715D5F59C275AEEA88 +:10B5600085FB5B02AFA3F38B90D759FC1C14F8E367 +:10B57000FB88BF61FED0FA497FFC1CF1867E6078B3 +:10B5800080D2CDFCB134C75BB9D05B06E79FF8959C +:10B590008907B91DC2F153BC98D77F8E1BEC1C3AAA +:10B5A000CF6EDA04FDD657C8E9B5C80F15AB8E20AB +:10B5B0005D8F5DA926C4574C015FFF1BE2EFEBCB0B +:10B5C0006F3ADB798E8FE77E1947BCE27805C8BFFA +:10B5D00023EEA7FDB983E49E81DCA31E912AD7CC7C +:10B5E00070DE4F793BAFE9E7B83EA01FD1319C1028 +:10B5F000742CE7E7ECA81F888EE5FCDC1CE9AC3B6B +:10B60000EAC3742CCF7D8E3E3A1D339C8E099B8EEF +:10B610006EFD102A4BBBE8989547B77CFD40C85794 +:10B620009EDFFCCD4791CF7F11DFFF52313F10DF0E +:10B63000E7944F9B7EA11A9EFF0C7F4EFAC00F59D4 +:10B640002F9ADE17E3182FB64673E56B64F70739B8 +:10B650006BA713DF85849F718AEAC6D3637F8FF15E +:10B6600029D4FB9BDA752A8D659F1FB37F9FD8274E +:10B6700002EC0BD42F5C77D844B9D600C726E03350 +:10B6800058A7A77D7C3D2638192C2CD613AE3A6CD2 +:10B69000F5D5D1AF430BE6E1EF7DEFE3BE12AEF39C +:10B6A000F81DBE2BA3A91C7266976B8EFECB841768 +:10B6B0001CFBA81170FB25C7D8519641A7861DCE4B +:10B6C000F4A1BE87F99C797BC37CDDFECE8417F0A4 +:10B6D00028FC50EB987E9806F618E69DD8EB950D61 +:10B6E0008B511CA6BE9F1617AE6299608E75AC4733 +:10B6F000182859E98105999AD3D3B157E075BDA0AF +:10B70000C768FD86C7B5EEEEC88411AE5FD079C7B5 +:10B7100031E07CF4F742A83FA0EED3459E442CC90B +:10B720009C7AD70BA7BDAED1E653C21FAEBF1A1B82 +:10B73000F673859D935B2F1A03F1233E845BE7F735 +:10B74000BC14A5ED81C1189A6D0A5B5B47F58706AD +:10B75000915FAC80BE87F65B68C752D574CC575BEF +:10B760002FF45497C80F5819984AF272575E3EC981 +:10B77000F59AA311CA8B382EF76B1BA1C9175D4828 +:10B780007E85CF57DB86F1B4F927E76B4EFBF5A634 +:10B7900000DFEFD687F979FC7AA54DC3F88DC14C4F +:10B7A0000DF96383CEF31946E59332D98527351613 +:10B7B0001A130FF7610003E0ED1476696730D1EAE0 +:10B7C000CC63EC0D04A97D6580C7E9E79F8CD23975 +:10B7D00072872E937DD713BE43AB007C592FFB1885 +:10B7E0005E0BED512CADF02F005F8C0D3D7F0AE913 +:10B7F00012E6764B20D26465902E126B9B867116F2 +:10B800005DF9ADF3DE80C1DA92C88F9D658ADCEB0D +:10B81000D4E79F30FE86EDE714ABC6F37A85851238 +:10B8200038DF235A6A37E6611AF59F353B018E0FE0 +:10B8300050FE8BD07E48D17E6A7F7751D132E213A1 +:10B840005C17A2184AD2C71F9431D25F81986C0549 +:10B85000729C8BB1329592DCEDF58E0A97D07FD435 +:10B860000472D87882C7C1430946788CB0414AAE89 +:10B870008A2226A762EAB42151B2154B48E44FB0A0 +:10B88000068A77C7829FF4B857D2B892B9859DCA05 +:10B89000FB10E32A83141FFBC4C73D0DBC41762F68 +:10B8A0008D8BD439E5C8EFDB00728F41C00ED8B75D +:10B8B000B00C404FA4E7B11A7E0F6F7D7B9C070947 +:10B8C00095A74CDCBFC3181704BD911706331DFAAA +:10B8D000FDAE511B62711C8FEB2BFB9C21AF9ABDFF +:10B8E00081F7B9F2126EBDA7958D4FAF75154DCF8B +:10B8F00099A731CC3FC0A9158EFD7AB47E7FE9B2FD +:10B9000003F46785E3DC51095766F97A8CF5F9563B +:10B91000A7284E838157E73EA0C8FC3CB523BC5402 +:10B9200023BFE0E4A95368CFF8F81060AF27EB73AA +:10B93000E1A50C0FB31C7EA55FEFBE11EF23F9E369 +:10B94000CB4C673EEF64FC7B11FE7EAD39380E3A7E +:10B95000F4F853E4CF58735802EDBF2D795F626F4E +:10B96000D4E0FEF025B2C7BB8B8A2B0264A788BC4B +:10B97000532D4CF7536D3EDD5F74791CE3235D2539 +:10B9800097C7719FEFF227E3A89F0F157DCF5C82C9 +:10B99000DF9F8CB200F05377BC92FC9AEE93532752 +:10B9A000B6E5585F1EE3FA2284F055707E638E3C44 +:10B9B000C7EEB8AC213C1FD470BDB325EF87A60FEE +:10B9C000EAAAA1B4E1F86A18E685F95BEA064C5CDC +:10B9D0008F9A0AA7F09E89771C7B1EF823613C97FB +:10B9E000EE72DA7227B9DA73C231B29E322BEB9063 +:10B9F0001E2CD19BA3BF5FCBB7F2404EFCD9DF75A5 +:10BA00009CB7EAC533A3FCFC4EA5F887041A01E5F0 +:10BA10002ACBFF69773C5F97B3E33AE2D80AB37A5F +:10BA2000D09E0F627C4F1F89D76E55C4BD14B315CD +:10BA3000F1D72915CEEAAD1BC38E89F790BD190445 +:10BA40003317EF9306E3175A183FEC64AC6D421CB2 +:10BA5000E7E93B8C7C1714766950577EE3E4B3EB3F +:10BA600034B79DD911AE1CD39FC5780A1BC38E5322 +:10BA7000D5448AE7CFB5B5CAB47F9D45F02B65079D +:10BA80008F54C0FCB7697CDF57E2AA85F078F7D9FC +:10BA90003783E66D1AB4AB213E8E77FC63C1A67581 +:10BAA0001AC6D535B343CB15CF088F337ECFCC7CA8 +:10BAB000A998F32FFF93CE20BCBE54D8447D1A4AD8 +:10BAC0002418EEB307EB812BEBA1B9DA7D6F111DC2 +:10BAD000B2DDC84778EE82F7983DF76BFD75B35835 +:10BAE00006BED79786DBA2F5C84FEE7B8D3E4FFD95 +:10BAF0007E2F1DDA9FA67B8936DCF09399CB4F7F92 +:10BB000038D8B43B371E0AC78507FB5E0D53DA04ED +:10BB10005F825DA163DE2AA7F35D623FDA22F6A3AE +:10BB20004D62FFE96C37A81DEF49627D737B82EAA5 +:10BB3000DF6AAFA7F2EE7693CAFBDA5BA8DCD69E8B +:10BB4000A47E6A49A786F6CA8E9281BB25F2DCAD37 +:10BB5000E617E1931D918157F17E09B36EE6757189 +:10BB60000FF160CFD79B2DEC5F3070850C203CF639 +:10BB7000ADE59D789F70C7B48157E99E5A70E50B7B +:10BB80009D00D28E3379FFC19E1EDE5FE469B1B2A3 +:10BB9000C5A7C103D7937F40DA41B9A348C47BC787 +:10BBA000F9DD49A1BF77547CB8F9824ABFC9D79B58 +:10BBB0006E7E19D61BD438FCC51B6E6FC6FC39527D +:10BBC00055E7323665437F27D6617DE2BC3DC92EFD +:10BBD00073EC4F85417E0F6147ED87833B26DECDB9 +:10BBE000D11A0669AE5E2DF53BE4A368CD61865798 +:10BBF000C9C20B0732A41EC7793FE30A7494E764F5 +:10BC0000FBABCB12AC12C7F1FC3E798D497EDB9FBA +:10BC1000349E27B16D7193C6ED5793F2F5FD4191B6 +:10BC20003F010630DA53CA4F7C64F7F882B9FB63F0 +:10BC30003FAB2EDB6F5438F5D3D8B7E35C27539274 +:10BC400014D71A0AB8EFF7BCEEA907C5FB30E3A575 +:10BC5000C77C418F6703BAEBFEE8E39E71273D2A5C +:10BC6000B37A10EDB26B1DFB0BC3F859C8552F6C9E +:10BC70002E74D5F11E9FD30EF2EB6EBB285C73863B +:10BC8000ABBF8EC17E473DB6F05C57FFD2654DAE6F +:10BC9000F6C9AB3FEB6A2F5EBC686CBB6B9CF87E51 +:10BCA000C9B3FE1F7BF033DE71D4353E03CFE52BE5 +:10BCB00014EEF776EB4B291FF518D208F9ABBF96B7 +:10BCC000EC27B09DE9FD286430B4AF55DD247B3E00 +:10BCD00004C28AFC16AC76FB73FEB290AB1E6F35C5 +:10BCE00033F6B89847A1AE51695EDC39705E25CC59 +:10BCF00032413C8C13F639AA5FB42302EC919E4A80 +:10BD0000FE5DC2997FE12D1571BE8DCF24E0BE711D +:10BD1000BAB885779EF8E2E49871216F7F16568C49 +:10BD2000B71C7233FA770A7BCB6147DD84FCECC821 +:10BD3000B3318D5564CF84989CE885757694DD6920 +:10BD4000A13D4A7141908F6E2C919E71BE6FB5607E +:10BD50001212DAE565F21B817C5CE7E5198A15C7EA +:10BD6000C7B7AFE5897D6D6228B92188F42F3D14EE +:10BD700077C6DF5495DBF5AC86CB675FED4D145786 +:10BD8000552BF55A64CF0A25A35D126123E4748311 +:10BD9000782F408DF37B57C12AEE7F6B463F95F697 +:10BDA000F981DD6EF31DABE17CDA9D5844F991AA6F +:10BDB00096613AC6D9FAF7339F8BEF526C31F98707 +:10BDC0009CCF36424976AFB02F03863B7E30CC5FA6 +:10BDD00035E393836F8873CAE3B70D298B00BE8B5D +:10BDE00033FFA65402FF1C0CF238D1F1DBB8FDF989 +:10BDF00062FB0997FDF19360313FAFAB7B5F59E088 +:10BE0000B00F2F663C7F0C33EA2E39D3399FC8B769 +:10BE100052869E3F857E40626CFDFC57F1ABE89CEC +:10BE2000C4AEFF2CE1A378D5CF1446E7763F4B5440 +:10BE3000D03B3723D79576D9DD7F155F4EE31CBF06 +:10BE4000754841FBF1C5764DC2FBAEB84E8CAB5F79 +:10BE50009C785FC17CB6D3C1FD7DA18F87FD2E315B +:10BE6000CEF15B41FFC377FECC1514A7F71B49D376 +:10BE7000E4716F82D37F68C22E5CE7FC935FA638C3 +:10BE80009C3D9E3DBE86EB749C73F7C4785CAE0708 +:10BE9000D719C3BA31AE756AB8CED959F886F11C34 +:10BEA000E3F1ACD1F0DCD19E2A50A68DDEEE2BE280 +:10BEB000F7717CFE849E2BEEE6854309C3784EBF66 +:10BEC000F523C2D129F0D009FAF923CD0B78A82E99 +:10BED000266F8EF4F9F14A66B6003EBB27F3F79160 +:10BEE000E08B0F06B56C3C24A07D8EDDE2C8D756F2 +:10BEF000CBA0DD351EEF6FEB331BCF1AEE0340777F +:10BF00005FAC9BFC295F2C44F7757DB1DCEF23A867 +:10BF10009325CAB7F6893C07862F95A05D539D7877 +:10BF200010F9C408F1F7055B822923C4FD120BCF79 +:10BF30002FC15426FFD0CFFA49D7ABA5D5E4978DB2 +:10BF4000E6DFF4B4EF73E1D3C6578FC84F6727AF6E +:10BF500032683F93AB6F44FF66BC7E524779ED91E8 +:10BF600014C61B8AF8BB8AA3AD635E889FD3C13A0F +:10BF7000E685486E4C8A27D8EB08EA49427E47643A +:10BF8000FA98EBE814EBF0D2BBD35EC738E11EEDB4 +:10BF9000DD969EF2B571BCA76A95AB143FF1AEA3D6 +:10BFA000A782E761769627284F60B1A08F1D178280 +:10BFB000F52D0E39CE8F159DEBFDF5E5DD6C1DF2EF +:10BFC0003DAC17EF998F669768DA775C72BB34C423 +:10BFD000ED9BE0305E79DE45A08EDF03BF30945AE2 +:10BFE0008AF80C54751FC6BABDBF78CF213795F3B8 +:10BFF000F364FB1C7253393F3FB6CF21EDBA0D07F6 +:10C00000D4DDE790735EF944CE21378973F811F9D6 +:10C010008EA1DCF98E76BDC443AF7BCA25E1EFB8B3 +:10C02000E973CF356EFAF408BE73D0A727346724BE +:10C030007DEEB946F0DDB2DC7429D11E71D1250B3D +:10C04000278FF31670D1665BC2478EA40CDC97393C +:10C05000BC552D8903F84448401E3C84E7A05BA3EF +:10C06000A9ED387FB825CD2403EFFDF1F9BBC43D20 +:10C070009E0B7C27B55F417D73436514DF65F851E6 +:10C080004872E1C52E77B603ECD3D00FD7E849A9A3 +:10C09000E3AFCF18332ED3D1AE15288EB86747271C +:10C0A000BF2FD9112E5C847AB02B5645F90F66BC90 +:10C0B000E0F32B304E5D66D0BDC801CFFC80BF01E0 +:10C0C000E46F7FAC5F9C2B70BC5699FD26DE7B9B9A +:10C0D000CAFA4D8C93005A13192E3F74EE6EE32763 +:10C0E00058A5AFC5FBA7F0E910CA01E0E307888FA8 +:10C0F000A9669A2939F0B1B9819F4FAC6AE4F9EB8E +:10C10000361C7A9EC83FA829E472A124E2B9ECD675 +:10C110006CDC1CBA92DEE0F1F509552C8DF2B245CB +:10C12000FC7E7328F9538463C2C2B48478BC5B9CE0 +:10C130004F49C0D931F41FABF979F586E921C15FC8 +:10C140003C7FE6E590EC95FF9773F197DA9CC46B22 +:10C1500086EC3BE1D49110D99F877574AC83555C14 +:10C160005E87F3E52DF612F253899DEBC0B8FC16FD +:10C170001A06D90D7F16F408C7744C7360C6CBDB62 +:10C180001BF19E4D17C6A5508F1655362E403FC148 +:10C19000D486307E102C37F737A11C4A6C680FB458 +:10C1A000C76A14B29787E5BA9D8D79EEEA57791C74 +:10C1B000B624B67C21BEBB27156F6F54011F5D5F8F +:10C1C00067F44E4F618B457ABCA43EA0233D831596 +:10C1D0007A23CA63D7452CB116D57182B707C1AD92 +:10C1E000C2763F6CB70AEEB7CAE146D427FE85890E +:10C1F00004F25901CB98987A134BF2FBEF85AD7995 +:10C200000CFBEF0CA7FE8CF8D48C24E1D11FE3F6D5 +:10C2100074BFBF9F21BF051B2C13E1DBD975395BB0 +:10C22000E2E0FF681ED727FE2A66A66BB27CB8053F +:10C23000991CE0BEBDBE30787518FB85887E556CB4 +:10C24000B1E0DF24CD1F44FE65C49FF979D03EB52F +:10C250002A6D52DC23D68F4F69A07CD27947BF9FCD +:10C2600095A09DDEDFA5D2BB1640BF57D85C901FBE +:10C270009989C7EC38FDB498B91BE9F742C8CFF7E4 +:10C280009FEBADCC7D317C8731A01B8897B6B489FC +:10C2900074CC073A9A98F373F4113619E5A8D4C709 +:10C2A000FC71D4D356E675A84F40BCE0BE6FE8FBE6 +:10C2B000C5F0B46F875BF8B912E0AB2A0FF78BFAC1 +:10C2C0007486E77B717C75286DFF742BFA55877C2B +:10C2D00009CBC8CA8D97DE4A18F4448EBC4E901B19 +:10C2E0007AB767B4EFBCF296F567791CD7B60B4006 +:10C2F000CECE41F8149DCBD978F76BFB5E2CE08253 +:10C30000CE0BD4CC4574DEAF1A2C112444A4C8BE85 +:10C310000EC499FEED0A7E2F96F26F636C571EFADB +:10C32000C14AC2A2FD48DC5355B01DF733437F50CC +:10C33000AEE07971D8BF4BE4EF61580AF7C92E918E +:10C34000AF6735B16A7CAFA6AB24E9CEB392C43EE9 +:10C3500074F2D2F8A50E3FA16B94BCA95FE671F907 +:10C36000ED12F94A1B4BF8FD392869FE6347A534E5 +:10C37000DAA71BCB93AD748EF37A1ED955FB8B785D +:10C380007EE2C6A39107038E7DBADB23BF76DEA2D1 +:10C390005DF7E62B565AD7505C6C63DC7E9F73D1F9 +:10C3A0009879271BC4F8DD22DF6078DE51EE5FF458 +:10C3B00009BD8CE7462817BE7092EC0615EC063ACC +:10C3C0005F46BA219D906E0CCF0D6F22BFC65FC62F +:10C3D00074CA7B2DE374003AEE4254F99504B723F6 +:10C3E000C47D6245B4DB74B3E9DC57E4A65B9F27E8 +:10C3F0003FAEAFC89D67D9374CB7E75D74EBABBDB7 +:10C400009CE2007D785FF95CA4D7235D182FAEB461 +:10C41000BE4A71A1AE9227343CCF5759F2EF2B2B75 +:10C42000908E295AA7170F769E06F0FB36D41F6A06 +:10C430005CEC2BC24E0D8873435BEFAF12FAEA79C6 +:10C44000C11FCF8BFAC69A55769E4B1BE6834FC40D +:10C450006C2A00ADB82AB91655CCDB79A907519ED4 +:10C460008EFFF2E6128A3378F2096232BFCF09D02A +:10C47000B4509EEC3F4C95E97D61A04F21CDEBDEA1 +:10C48000DFD51EFEDE8C4D37A083914BDEBA8A9637 +:10C49000737F16E40DEDC161792B1BA69B45F660F9 +:10C4A00019B7FFBCF266D3F92F4D372564BE80F86B +:10C4B000F1F2E37FD57531F64817CF7FFAE2878A2C +:10C4C000EB8D9EAFD14FF650C9D100E9E958564FD8 +:10C4D000FF16F156B2CCCDB72CB958F821867C089E +:10C4E000D615BBB37267AEB88D1D0F3B1EB1EF05FD +:10C4F000A74228377BB72E0DA1DED9BB7D6CBD735B +:10C50000B7909F9D42EFE03B294EFDB343E8D77BB8 +:10C510003DF7F9AE0873FD3335CCF97AAF960C21AF +:10C52000DDD9F3577C16DF05A97AD9477A67D29609 +:10C530008182B1E6C7F8B92BEFE143E6E7C5C29EB9 +:10C540007B43A7F9DECECBFBB878B917E9574A7819 +:10C55000E8A673A24C94F8B17235B70F4A7A52BD6F +:10C560008CE301334E58F4E477E9BEC9AE3EF08166 +:10C57000280E62E62F013B894C65E0DDBD3D8B64F2 +:10C580007CE7BEBCC4C764F425B7F2734C0DFEE370 +:10C59000E7249946C65D267A6F706ABFFB9CB30498 +:10C5A000CF95C1DE2CF79C67961CFD97A3684F962C +:10C5B00078DE6BFDB8785F8078CFFB3F8FF71DCAC0 +:10C5C00040D0B90F4C925812F973D2756FBAEEA1E0 +:10C5D000B40ABE646BC2ECD78EB8F9BDD24001EA92 +:10C5E000F59DD7F2FBC50C435DA887AA07BF8374EE +:10C5F000DBBEE4A6DF3D87F649D13BE7A35DB72C60 +:10C600009CC7CFF5AE5DE5CA7304FF6359D8E19FBF +:10C61000EDEC5C44E58E935FDBEF87F1A6AD660938 +:10C620007EEF97BD82EF2A1B82CECD5B19D1B93246 +:10C63000EE63946761B9E95CB98CEBB9697D2C8DC7 +:10C640007C33758525611E41D51A9630E1FBF235A4 +:10C65000EE7778ABB68E781FBB09F96462821998C1 +:10C66000975AD5DFB6FF3E87DF30D1FB3EB567FE78 +:10C67000BDDAC04594E704FC81F1BA69469B84E7C2 +:10C68000E755A9705B1A8F7C5ADDF397C032911E73 +:10C690005E7EF4CEF371F96D8B87DF8EB17B3FBF89 +:10C6A0000FF0B1A7EBD19F53AE354BCB4EBFD4E6C5 +:10C6B00037859977219D583226CED7CD8A5CFA7C72 +:10C6C000584F27C719D762978CB92F142E74E77764 +:10C6D000859BDDF95DC16A775D658E7A45769E0D35 +:10C6E0008CF17D20D56638E7EB895847D0EFCCF444 +:10C6F0007DFEC218C0DB838EFFB9585FDA8DFBB1B7 +:10C7000084273CB094DE1A85E2FDC767CA64DF4423 +:10C71000CAD5346E562ADB457E18ABE2E738E82FDF +:10C72000927F13E7FE5838C1FDC011F811FD410D8D +:10C730008D190730EB1A19C6F742A8AF28BFC0A45D +:10C74000B85CC050280E09F2F3B3B0F05F9AEA2843 +:10C750007F83F21D6C3FDE9EE77474186F3FFBFE13 +:10C760005227DE5F82F5174CD62B304F8FE1BB8509 +:10C7700086E33DBFC9FCDE5341B35E4171DAA37964 +:10C78000F4EF8E30A5ED9C4B231817F5DC5F28E005 +:10C79000F717BA83A9B7C38E789554D8E2F207E2A7 +:10C7A000AC8DDB932C49A53E91D5BE80F34FE0F1D3 +:10C7B000CF8E487705EA97CE22F73E3B25C2CF833E +:10C7C0004E867DA487F43C7E6EC434ABC4795E3261 +:10C7D0002722D9ED37225F6C2DBDF9600BE0458F24 +:10C7E000F2FBE22C01FD2339FA4FE07C53BE691BBA +:10C7F000F18D2EDE7161F151FA8B762F9E2B23DCA9 +:10C80000DFD6A78AEFCB46810FFF7109D837ABC5BA +:10C810007CE0F747224514A7CB605C8A2DE5F755ED +:10C82000B271BA9AE8AF1CF3950A7CD875CC33C4C0 +:10C83000F8DC89C1A914975374F05BA323E1F36971 +:10C840009FE37145FD506CF81D407C273932FC2E6A +:10C8500044BC3B86FA5FA338891111E7DB618BBFCB +:10C8600017A14319C9F6EF5F709B847C7A7B283946 +:10C870002D42F1AC5427BD271886F925C7B8B1441D +:10C88000BCBB2E3BEE9C88C1EF31CD69BBBB13E432 +:10C8900072C2E7D610DDFD2007989FAA2F5848796D +:10C8A000C55D227E6DB6F27B65A1329670DE77742F +:10C8B000EC43732239E2846FE7997323245FA3D892 +:10C8C000A322FEB5B49E893FC6F9B82F5D03FB12C3 +:10C8D000CAE1AAA7EE3B88FBC6AA79B04B25F01C9B +:10C8E000ED8183B82FFA449E1560E0E0EB505FD6EF +:10C8F0009AC7B87C27F3113FEF327E7FE55DF65291 +:10C90000FE6C071F2F8E88F8708F9FF6090BFE4371 +:10C91000FC7FA5DFEFDA37AEDEEEAE2F678B8A51F4 +:10C920002E976F050D0578BDC6B3AF340B3C5FCDB8 +:10C93000DABA75473CF3BAEF9FA922DEAE99AD573C +:10C94000F81CF7D4AF8C707FEF37ED78B723FBFB83 +:10C95000CA705AC5F3C35F3F39FBF24F331C27DD62 +:10C960005D5A476F34937C7AF17E558F1BCED3ADE1 +:10C97000C30BB76DB78F0687B24F3273BDABB352DF +:10C98000C851F6FE97B8B7B04E611D75987F7ADB37 +:10C990004378CF618D15D0F17D8AE3C1C969BC743C +:10C9A000BC4EF01DB0D5393C5FA7ED6C2C7B63E924 +:10C9B00024F29D7DCE1FD4DA084649E1FABF377EC6 +:10C9C0009AF63268F78DD15E35F6F798C77B6AAE76 +:10C9D000786F81FC271EFFB2EF8975F893F41E78FB +:10C9E000C73FF8E87E5347411BBD8366953383DE1E +:10C9F0003DAB4A46E99EEECBBE985C215819FDEF4F +:10CA000092168A036E127A8929FCBC3010B64C3C0F +:10CA100077EEF6A7E205185FB88DC7071AC3A91409 +:10CA20007EE78BB7FA316FF7C78F5E45FF9ECACAA4 +:10CA3000F8850AEAEFED119EDFF5EEB71F9FCB00F8 +:10CA4000BEEEC7222C43FE565A457F6BE5933E8AC5 +:10CA50007F7EF5BB119A7FE51357EF5D08E348DF52 +:10CA60003FCF788BE4B283E058F9BD4BFFDE12EB89 +:10CA7000419FB563AD1D8F4EC4717FB92EC0BE8C72 +:10CA80007156EF3D39CDE8A73C9895FB0AE8FC606C +:10CA9000981F14E85F43F798BFBC28C7B9C4B31107 +:10CAA000EEA7FD36A2B6227CD2BEFD5F22F806FEBE +:10CAB000DA8FEB92CADAD83FC37C8F0B3C413FF24E +:10CAC000CBAD87257A4FE7B70FEF54312F61E5BE25 +:10CAD0009DEA52CAC3E7E7E8369CDABE2D16CA893A +:10CAE00056A55762DC76C1771FCBC7FB4B5FFDEEC7 +:10CAF0009FBACF85DFBFEA63430B413FDCB0CFF77E +:10CB000006DE77C0F7BCDC79EE3CFFF37A5241D009 +:10CB1000FF6FDFBEF017F0DD6F400F61AAD96F0E17 +:10CB2000FFB3FA0CD6C1FE443D74C3D36EB9BA61EB +:10CB3000DFAF555C8F2EB3A1B24F633E95DB0EF590 +:10CB4000F63FC64EAA985F7EC3C006F2976E78F293 +:10CB5000DDD7503E6EF0C8E76FF02F2523EDD05F94 +:10CB6000453C7ECFBE09E3B23FBEFAD8B1FB2DC033 +:10CB7000E36F9FF8D7FB2DC0E3B57FFEFDFD376364 +:10CB8000BCED87411DF5CB0DDFFEE7FBBF09EB7C5C +:10CB9000F7E9808C7CF1DE730FEDBD07EAEFBD3A5B +:10CBA000639604F5FF10FBDE7B8FFF5BB101E3AC06 +:10CBB0007EEE8289C877AB9F5A40EF298D36FF7B86 +:10CBC000EDFCFDF42C3C697EEFEF69098D74FE0FDE +:10CBD000034C1C4907D63FA4A29CFD51E2F7DBAEF3 +:10CBE0001FF8938AFC77D064438897E79FFCF5C1D0 +:10CBF0006F42FD5DA04B20075D60DD9364BAFF903E +:10CC00009984F720AE7FF2D28BCFABC3D29FC0E125 +:10CC10006F6043A4AF47D0F365A0675D969EA3D233 +:10CC2000EFD10D74EE7FC300D0EFAC91F47B17FF12 +:10CC3000326F24FD4AF3BDF7F9AE7DE01E6C7C72C5 +:10CC400042CE78BBED475CF7D46563FA2BEF79E40D +:10CC500075343CAF10E7AB6F47CC33F2E7203F3C75 +:10CC6000B2F79E18D23990C0F73EDF7BECD864BC97 +:10CC7000E4FF8E7FE84B8887A1E702FA2EF866E58D +:10CC800073FF48FBC27B4FFD5C35487FB37C09F4E2 +:10CC9000E67B6CF8CF4B781E72BD38CFBA6EF77F4B +:10CCA0005CF81A7C7F1D0C81B9FA403FAA1F34F949 +:10CCB000BD94EBD397B41898FF962EA2755F9FE6AC +:10CCC000F2707D7AFF62CC5FF7E27D49BE7DFE9611 +:10CCD000A52BFEFB3CD73FF9C685C87FA3D1D35E09 +:10CCE000BF8EEB3F07DA77BBE57524DF0CA9A8FF01 +:10CCF0006DFABEB7F3B8FA0BE89F7946D565B05325 +:10CD0000DFF30FA9B42F3FEED3F1DFF9F1D21DFD10 +:10CD1000CA25740EB52EE779AE971FAECCF7C8B30F +:10CD2000C0C7E9E4F9F4EBF870785A986F703FC522 +:10CD300083AFB5252AF96DBE7C95DE59EEF61BFF53 +:10CD40008879B6433FF1B35DF04947FE5C96EBDF6F +:10CD500069433FC5709C5728E124E5552A319DEE73 +:10CD6000E37BF33AFCBAEC796784DF97542D85E1D5 +:10CD7000BD01EFFD48AF9DF10D9FF96AAA82FCA0AD +:10CD8000F5C8D7C7E5B6A707314E1B5D3E782B8C9B +:10CD9000B655D8655B23EEF38C3BF2B95EB3CBADF1 +:10CDA000E8C7E23C97897F6F4A494A4E3F84581052 +:10CDB000FC876DF95FFE0CFA0FD88EFCE2FDDD9E5C +:10CDC0004FD193FC1D8F6AFE2E034BB141949B4EB5 +:10CDD0002134BB055F6F8D26EFCB473FA4AC9F622C +:10CDE000B9E8770CE6D84FED12EF35A3DFD1DD9E21 +:10CDF000A2F2BB284B181710F7EEC1AF7918F1005B +:10CE0000F3A5512EF12C13F5EA871F5FA7BC033B56 +:10CE10001FE5E650EA6F71DC80C1CF9F02653C6E72 +:10CE2000EC137994B6FD6B8FF35C3EB717EDD28EA1 +:10CE30002FABA52BF6ED8CE13B0D718E1796247F61 +:10CE4000ED87A29FFD4EDE368959646F491AA78788 +:10CE5000C90CBD98C7BB713D3ECDA424793FE6897E +:10CE6000D3BB53169541E42FBA379421BB6E30BF24 +:10CE700092C6B5EFE3615E12F27534C124DC5FB691 +:10CE8000461216D17D09D3F7D466DBBBCF13EF6210 +:10CE900055F37A3CA933ECFF5A7EA1B0674DCA1F07 +:10CEA0009E98D275ECF7765EF215A4A3ED67D7B124 +:10CEB00014F147B116A63C1ED6EABEE732CC970560 +:10CEC0006EBCFD93E0C741C11F78D65E5AE8BA2F09 +:10CED000C89CF705EDF84297781FA560B2BE04EF35 +:10CEE000CF8E1A5FA86C3B3B41FCCBE30A767E40B9 +:10CEF00041333F473E5EC4E90BF2F441BE33AE50CE +:10CF0000DCEA892BD8EFAC586FA0FCE967B3F729AE +:10CF10007ECCD67DE6C538F9DB8F63BDA3B3FD3388 +:10CF2000140F98CDE5E4DFF33B3E83716BFD1CE10C +:10CF3000AFD7BBFD752DCAFD24BC38496503F78307 +:10CF40000BA3DC2F56F436F27F99A80319C83F1EB5 +:10CF5000AE370BBFD9AED7F0F68FE1E71646E7E460 +:10CF6000F4732744C7F073F5884CEF908FD4E37DBA +:10CF70003CAF4EFCFB611D61B9045392F43DC5B555 +:10CF8000FCBD92FA43460CDF2D8F09F9E0FB89C204 +:10CF9000845F2FE28DF63CA1F316BD8AF06F07ABDC +:10CFA00015E300DBA4D4DD58B7A420DD2FBF531256 +:10CFB0007AED8BD3855EB382D3D15F8B54529EF9C9 +:10CFC00076F46EB03DC9DFD7DF5CBD9AF4EF766BC7 +:10CFD0002BE105F42FE95B6B5D40EF80726B6A1506 +:10CFE000B55B8AA6E33DE991F7D2D33F990A655F25 +:10CFF0007432C1D7D970C7862698767382E72385A5 +:10D0000066366BCE3C8E5551CEEF763BD3CCE017D7 +:10D010001D7AF7E26884BFBB322F373EEDEFEDF6A5 +:10D02000CD0D0774CC8FE98ABDD080E408CD7CB3E8 +:10D0300007F3913A755EDF20C6338D9DA4D780BE7D +:10D040009F73D23780798A95A8A7CD20F24B71348F +:10D05000B508DBB7B3845601F8B9EB8B73AB299FE6 +:10D060004CAC8B61DCDBA167B749269B4EFA24AC44 +:10D07000633E0EAC87F40BD0B210F5C7303D660EA0 +:10D08000BFEF477A24BF9AB7DF2525D834E7F7A644 +:10D0900069E873B37A0F2F409A73919FC59F3352FB +:10D0A000C4D759FD3740F5303B4CE537A25CFF450E +:10D0B00059BA653A0C72CF8A03A42FF22F633B9DB5 +:10D0C000F95645B69E5AECD653A3E99DAD9AB58163 +:10D0D000E28AD1E4D7113F1DFAAC77BE02F05D2A97 +:10D0E000E4CEC68F867C0BF3152540BE0A701D5713 +:10D0F000AEC57BF6313B3EEB990FD787EB9D24966F +:10D10000679F87237EF17CA364053FE72A638749F5 +:10D11000FF4C6643541A681121BDB4A4A410DC4727 +:10D12000492E654B964E7D2A0BF7D7A2067F9FA00E +:10D13000BA3948F77D358BFEDD18D48D4E3900C0E5 +:10D14000892E5B53EB48AF5E8ADF1551BF167EDE3A +:10D150006E055BCFCC8E6BFB3186A053804932E6E7 +:10D16000F71C1371AD0B30C105FDD5D5FCDFAD9AB1 +:10D1700052A534E17D0F603A13EF076A6CA811E302 +:10D18000D1E58DDA90C55FB4A1EF4BF07BA84FB12C +:10D19000DC71FB50C25DCF9EC3B9E3F9D97338C7C8 +:10D1A000B980B057918FED7B17A7B3579F887EB496 +:10D1B000F3CEC341F369E48FF1DEDB186F5CC91B6A +:10D1C0004FEA68AC3D12033C159DFB6BDA6F7CCADD +:10D1D00000A64DB3FD9775BF8A78BF87C9097A3716 +:10D1E000D563479CB8A690E1BF3F797F5B7E82EE16 +:10D1F000160BF9B2EF4B33DD5C8B74B5E59BCD4A72 +:10D20000925CA9EC4692370DED0D87BCE583DB837C +:10D2100065F05A303040680EAC692AC0B8441EEB45 +:10D22000CB2947365F7C20F842619F8AD27B48AB8E +:10D23000158A3B96A492D10CCE6B992FC5E7526A02 +:10D240003BFD29303167314B9F092D60B739ECE840 +:10D2500022B057DC795E3A9DFFC5053F4E6C8DBB11 +:10D26000BE679DDC9F31E03F9443EF79AE9F5974D8 +:10D270009E37A93EA06774CC1BB0E87CAE0CFC7056 +:10D28000DC4727B5B9E31F71CFF75E7E3A69F31328 +:10D29000883BF213E021817AE183977DF49EB832D6 +:10D2A0001820BC94025E100FFF092B49167C0080E9 +:10D2B000000000001F8B080000000000000BE57C50 +:10D2C0007B7C54D5B5FF3AE7CC2BC92439794D2660 +:10D2D000218493844790A04302C8CB72088829A276 +:10D2E0000E0F2B5AAB038244C8CBF8A2D6CF8F13B4 +:10D2F000022902B7C496B6D4621DB880A8E0674080 +:10D30000C0D41BF80D8F22586C835A2CFE6C8DB53F +:10D310002A2A90318A60EBBDFED65AFB1CE691A406 +:10D32000D0DBDFFDEB17F473B267EFB31F6B7DD774 +:10D3300073AF4937E0CF4880FE73216814E1EF8670 +:10D34000FEBA773400FD4A3F17969ECE3A6C07C06E +:10D35000FF7CE16C80C237155F183F777A016CA5BE +:10D3600062CC37F87F92E6029B2BDA4E2955E3DA3E +:10D37000A93E6FDCF8A2CEA6034FE1BA47C63855E6 +:10D380001803903E468B1B0FCB6D7FE9C4F1A5F8C7 +:10D39000EF9B62DC1F8836F7E3E60AAA434D4EFC9A +:10D3A000BD5F037E1EF39E17D67CA65C4DCFF8F1C1 +:10D3B0004BDEF938EB70ECFA6A6AF68729F88B0ACB +:10D3C000EA370A80E20EDE0E78BE7E20FB14DC9780 +:10D3D00062F3A787353CA3DA798A3E2FA0CFB3F951 +:10D3E00075BFCB039047BF613FE8A0A9D896CCF6A4 +:10D3F000257A65B736DD8BE3FB37A4F9141F0E2BB6 +:10D40000EB6F2CC4B617DBAB541C5B1E0028413AF3 +:10D4100082818B21FD20C8CF1408F3E7A9D0C9ED84 +:10D4200074F081846D1B049BC4227EF00FA771EF02 +:10D43000A81F0E0390E17DF866187D8EF3E470BF9F +:10D44000D1994DE3A1E1495CD7EE9A1E0ED0BA0AFC +:10D450003410CFAA9202956A0EED0F0EE7E3E7496A +:10D46000A51054903E4ED50F501C3B8F784A36DCA9 +:10D470000F8E53368871B6CA86658403DC4A039FD3 +:10D480006383EDCC25FAD3FBC53AEF1FE1F2477A6F +:10D49000CF8E745BC57453C301A4ABC33CFF959E90 +:10D4A000DB091B54E2934CF36745F755B226DCD4F5 +:10D4B00089F30DC17D64F9E873FD24E176B0C98775 +:10D4C000822501B990CEDD4F0127E2AB784DA7440C +:10D4D0007881F5022F2EFC47FB2D59129268F2E25B +:10D4E00035F1382A32E2DBA0B4335ECF235E15DC9F +:10D4F0007F7F7B48223A3C1D7037183EC24D3CDE90 +:10D5000034ADE3C010ECD7745784FA8B0CF0CD8F98 +:10D51000C15FFF409A6F7E05C020E2E9D89EF87C8B +:10D5200088F0497CBD16AE257C3E306336E3F1E9D8 +:10D53000C7366504DC38867E26469FCF2FF5FAE68F +:10D540000F02786AA9CB371FF197BABD414EC1F5DA +:10D550008B43821EC5735A9F74521BDC0D922F8A17 +:10D56000D3E052E0F1BF5CAAF2D3068115848F2D7F +:10D57000DF7F79990BDFF38C0CF2332CEB2DEA284B +:10D580009C6B5D3683BF6C49816F3EF263D89242DB +:10D590007E5AFBB0F8D3FF3FDF9A71030E1DD02AED +:10D5A000FB96E1A7032E3AF55019C09320CE5B827B +:10D5B000FC9887ED5FA848009CF736D5FF135AB753 +:10D5C00078A54F0EE0E7509DC9EBF445B7C4F57E52 +:10D5D00025C19C10D2E5A9075FE77597ABD9231445 +:10D5E000E2A34D4F9E910AB05D95791DC71245FB90 +:10D5F0006BCC7E5B5A67A603BEE770E9B28ACF8127 +:10D60000AD93E4A491AC487C5B78D500CC4E25FC6E +:10D61000C910C67D7C179FC4DF296AE079DA2FA87C +:10D62000C9108EC1BF638983E7EFFFD094643AC706 +:10D630006657A74472D05F82066304E2B226FE3CBE +:10D640005A8D2A132EADFD58E72B74B9F9799B1A20 +:10D650007849CD11F422BE5BF451C2E92C9703D670 +:10D6600043701592B0DF63A89F71DF03DF54581A2F +:10D6700006B486A424E4DB54657A726719CBC7CD5F +:10D6800073479BA2899F6F0EF8583E06E72960906A +:10D690001C9BF8477528E4187499F44CC16331B8A1 +:10D6A000C6FF079AFA7530C4C807D263E03B1FBFB4 +:10D6B0000369D41F2F0789FC2BA8419CC5C855E2DC +:10D6C0007913E5E0A42507B990F70D6EFE3C4CC830 +:10D6D000BD5E8BE2A31015DD98CC28FD2C5C47F1D4 +:10D6E0001164BE5BF38F08C7AF6FCD93284F89F8E5 +:10D6F000926C86CEFACC0BAA4232EB336E9748AFCF +:10D70000C9A8DF082FBAAEA9A3A376400A1CF94A1C +:10D71000423A39AA0C4943FA7BA7070C09C779ABEF +:10D72000C0A761BF3E1F2983EDE4811DD7ADC2B6FE +:10D7300037E03B60C3F99CD91DD729D83E4F60CC58 +:10D74000217DAD9F27B9CB227DA8907CFA99890EC7 +:10D7500068E0A70B5AF9990C2130B0DF0D1DDC5E93 +:10D76000AD06FE8B709306116E978435D921517FDB +:10D7700003F37588CB6D101F13F5774AA2BE75674A +:10D78000B2BC5E8E3E4E5B203C4FEB4907DCB6E6FA +:10D790004F8D8EFF617F6893AEC1FE02A44F1AC900 +:10D7A0002B32701C0DFEB72A1D7F5D7DEB4E6F8EF8 +:10D7B000CADB09ABA8B7577F5BE2FEB1195B561A0B +:10D7C00048C7D53344FB5B4F3C2DDAB7633B1F6042 +:10D7D0001AF5BBC96FB9CA203EADD0C04774BD9021 +:10D7E000D3E8021CF7C38299E9BDE94DEBD9BC141B +:10D7F000171C121DA7D8D44AB67B0572D0907A8E1A +:10D80000B7B9853EB070B47AF8549DF43DB2204269 +:10D810001268E919DB83B6F79C78CE169C97F6E17F +:10D820007035808A4F67EBFD61C64F829E71997A91 +:10D83000E60ED23312EB993119C87F2556CF4054EA +:10D84000CF646600E3BB6CA4CA7E9CD38714473DBB +:10D85000333143137CD1C2B2E68EEAEB89E6789786 +:10D86000CD0F3EFCDC5ED500D4EF9CEED7693F4E79 +:10D87000C2270EC99AAE311DED0381F1A8CFDF0892 +:10D88000DF43DC5465B8F97DC4655506CE7F6386F9 +:10D890006AFA0B3E89F88CE618E8B95AF5DF44FDC0 +:10D8A000255EED206101DF02C2FF10B7D057386E50 +:10D8B00019E92B5B5F7E04FD8C66BF939DD1DEF082 +:10D8C0004E4F0BEF16CE7BE057CDBE22F9FE9143B3 +:10D8D000CFB81E87B6FCCEEEDB84E7352A1B9E262A +:10D8E000FFC2586683667CFE3CE57F3D437ED512D1 +:10D8F000C3A9921DBD905418247D67D94FCBEE5A11 +:10D9000076D4B2C74F641499F469B896E40EA0E3D4 +:10D91000DB649F2E7C4BCE5C05D17DAC9D0F5564A6 +:10D920001F8B20BF92F8B8AA6CDED655F8EA85A105 +:10D93000F3921DF8796B86C274DFBAFECA706C8DE3 +:10D94000536C3E507B199F885FDB83B2E1BCBA17F2 +:10D95000DC96CD631C9CDF20F830A4F5FE83BDD996 +:10D96000476B5EB9277E5B33FE819DFC40D59F20CF +:10D970007CFFA83C50EDEF659FDB3285DD7EEAC180 +:10D980007549A4477F41747247E9B43A60D2697817 +:10D9900023D3690FD109D77B66C395D1C91AF72F55 +:10D9A000D329308FF5F9F909824EE9AD9F85957F2E +:10D9B0008E4E7B880E7DD169957FD3CA62E4831138 +:10D9C000907D83109FEBFC727822B67F512D6F27DC +:10D9D000BF7C95BF326910B6B74E38D82E61FF1B99 +:10D9E00099A9022F6AE4288D3306CADA16923BB54C +:10D9F000B58AF6B9B5B41C886ED67EB696CA5541BE +:10DA0000A4DFAAD279C9F7C4D061EBFA6E6F2C1DDE +:10DA1000B7929F55D6934E8F660A3FEEC9F932FBF7 +:10DA200025490108CA74AE81C0EDBC02083AB19D17 +:10DA3000A78B36EACAA086EDC3D7B54C22BBB76A1E +:10DA40003E9978F2578E1B74CEF5A8479DC2AF67FA +:10DA5000BF25CDB427EB0361EE774E42BF1AF546E2 +:10DA60005AE78CF053D9D138D23D26D16FBF13C8B5 +:10DA70004F3F8F7E3AF9ED791BE2FB9D097E8CAA20 +:10DA8000FBC3E4E7DBC8CFA7F8E9327164C6141F13 +:10DA9000107D3ECDB8E4A70C203F65C5D236787F17 +:10DAA00010AFCFF84295A0877AC1D7257F85708EB9 +:10DAB000B87DD2BF4CD271DCDAB9AD12D98BBCAF14 +:10DAC00015F69B510378EF181E7D2F293399E9BD78 +:10DAD000D62EF8E10BAB93DD14F7B9D511A4AFAD99 +:10DAE000714E932F6B93C4B8911DFEC9A9FF685C5A +:10DAF000AAF0A3C774B64E4EEB65DC27A63CE2BA8B +:10DB0000EC0FAD1DE40836215DD64A427F1AAFD92D +:10DB10004DBC0B3E6F5DA06E247DBFEB68F1EA3219 +:10DB2000C241402BA7F9766901B9D8DDB7FE8CD088 +:10DB30007E901E83AB023A1B8F4BF385B70BFB1114 +:10DB4000F1DE89F4F87BA6F0937625A3FE603A0512 +:10DB5000F267C4D0E94193AE169DF6FE715E8A4C21 +:10DB60007161A99649FBC82C0D825C165D6F57291F +:10DB7000AE47F3D8B4D5C3E97C0BC2A9AB62CE6F74 +:10DB8000ADB737B9777DF5B0451F93DE2F9FDE1413 +:10DB9000B75E7255FC7AC9F3CDF3B95A9BAE1ED964 +:10DBA000F77A2FF7B1DE12EB7C26DFF65FFC4B8AAB +:10DBB0004C7E6619AE87D3A6D07AEE9EEBE55DFC6F +:10DBC000B1941A23C77FCB14767DBF45475B207F76 +:10DBD000668CBE9A6AE2E319FFAEA3F760F7E383AF +:10DBE0005A92280ED92A855C8389EFD7C9B005F7E8 +:10DBF000BD764325901FF18C0E2CBD196E63121952 +:10DC0000E3E73233C5FB1B2AF93DC9D6DA64A33CEE +:10DC10000B0A3AD10591C0F982422B5F90E047E6AA +:10DC20004D578D79383EAB210D15359E6F7DC3ABB9 +:10DC300043B19DB444F6B19F1996C0363A9A977194 +:10DC400081C1F99C21E67C798187396FB1418106D8 +:10DC500005F5442FFE868FFC8D7EF41BB5CB75CE6B +:10DC60003FD8516F935367E52B7AE629C293E83981 +:10DC70008054BA425DBA4CFD83CC7C4D91AE55DAEE +:10DC8000703F83D707D89FCC7C105F2B227F2EC894 +:10DC9000F348B086FDA69492A732443E07F7331EA0 +:10DCA000D725DF85E2E84CD3BF427E90FF302CA120 +:10DCB0003D36A1ADDF3909881FA81D22E45755253F +:10DCC000058C4CEC975DBA3E98E8A5BB2242AF3577 +:10DCD000805444FA4666BFF1FF377DBD31D3CCFF97 +:10DCE00099FADAD2D396DEEE4B4FB33F3A8EF4F583 +:10DCF0005755147F2465E8CF127D7F6AFAD51877CF +:10DD0000BD90398AF00ABA9DF0BD06035089F28BA6 +:10DD10009A4CF327E2DEBB1E714FF4479C422F71F1 +:10DD2000A40B10F7447F2B6F9880F3F576918F4307 +:10DD30007436281C47B54AF7E23C85D6F8CBE01C80 +:10DD400061A629145752FE4F89F5B343DC4EF4AF58 +:10DD50000B6C11899E185E31DE07829FF19EEF5297 +:10DD600065C279F114AD89F20E836DC2DFEF8FFECB +:10DD7000BEC1875181FCFDE480F0FFD7F9FFC27A74 +:10DD8000A02FDC235E193749663C85387E3B93FD26 +:10DD9000681DC8CFB1238EE97C7A6012EB9BE40248 +:10DDA0008CF720D60F92439246FE4F7065F148E102 +:10DDB00037915D5AFBB5C2E31F5F2FFFFB32DCC713 +:10DDC000E3369DC7AF9A2FFB9086E4078527D2F8EC +:10DDD0006A3938A8E88AFC218E3F1FCDFC80E3D148 +:10DDE000B519C22E1A6817B714919DD6F83C1322A4 +:10DDF0001D93D363ECE95A7BC4EBE3F19139A4D7CB +:10DE00008CA784FE7CC69FA83F43AC6FAB28D04351 +:10DE10005CAD1F38F5D850D2773683F586B5FE2D28 +:10DE200099B73E4EEB833BE2253DB076466332E93F +:10DE3000794BDF268E7B3649872C9CEF781FFE9C22 +:10DE400023ABD29685FBEECE80DEF3C153AC7CB023 +:10DE5000DA14970F9E9280370D38FF059956DCF73C +:10DE6000AFE785853EEE3D2FDCB5EFADFE069EFFAC +:10DE70004F0B3E4FC597E05D5B2495E87CFAB137C8 +:10DE800052C9AFFAD3630AFBB9779979D7BB97FE2A +:10DE9000E768CA430ECB12F6ED87597A09D1059689 +:10DEA000E4B090DD1754E812E292FE58BC2D858450 +:10DEB000E352BB369415D7B6F651EB8406B2C78B46 +:10DEC000B71F70F4C373DEB72D83F391A7512E48AB +:10DED000CE4FEFEEBF91EE5BEEC992CD75FD15B45E +:10DEE0002EED87F0F56EBB13C26C873BECC2FFD101 +:10DEF0006F96465314217E12F775647F3F07D9FD54 +:10DF00000512EAE10CFEB8652FAEFB81578155BEC4 +:10DF10009EFB5EF027D5417EC9824910A1BCE4E298 +:10DF2000ED52CB23F8FE3CD2BBBE9EE79A6BD8E302 +:10DF3000F4F03DA1FB1D4C7CA56C6A2EE9EB95121B +:10DF4000EBB37B56C68F43581CF90F9C773ECE4BE4 +:10DF5000FC5DD01ADFDF7DF48196BDD8BFABCDC1AB +:10DF600079F58509FA3D517FCFC932FDECD170AD0D +:10DF7000C80796AD2DD3FA8EF32CBD7D1AE33D0470 +:10DF80000D7CB2D4C5CF334B196C509225E473711C +:10DF9000DB8123AC136D1DA3497E761D7D3FE50E0D +:10DFA000EC6AF48A38EF5B1B3F6FDE8BDD15E04FC8 +:10DFB0000F13EE216C27F99B082ECD8DFB5B61E6DC +:10DFC000852B2E623BF67CAD077EF31F1CB7B91B79 +:10DFD000B6205D1B11F04BCAA3FB6BF48AF8EE4E22 +:10DFE000B07DF18FCEFD489669AFCCFB807FF5DC2C +:10DFF0007DBD578BFE516FFAC0928F922CE16F3628 +:10E00000EFFBF954BA3F3AF784E473E23E166D7BB6 +:10E01000EF2E92EB056D6887C5E5E149F044F18A82 +:10E02000C766BC2D24BF04F119A8FE01E3E208D2A3 +:10E0300085FC80407B7FEEF74E46FCA25C2EACFE5A +:10E04000F46DE144185ED94BCFB0571ED30B0E13BD +:10E05000F09688AF73F6CE4292FF445C9DEB43EF9F +:10E06000ADCE2AE6F3CDD7F4A994A75B00FE1655F2 +:10E07000C8DF5BFF13E739B8FB015009FF476DECC0 +:10E080006F951F13F173F96B8E20E5115EB4779CC9 +:10E09000637B724CC4EFD44F715EF96FDCEC57C0F8 +:10E0A000D706EB93117F578314CF9FCD346EA6F61E +:10E0B0002ED40F9B58DF2A9C9718F1FB52D1BFA496 +:10E0C000A2845262C645B78FECD3C4297FFDEE719E +:10E0D0009EF7C101646F277E952C517EFB7274D62A +:10E0E0008315CA389C579521928EE7290FBE3F7938 +:10E0F0003CFBEDAE466A27F2A122A8D862C793DBAB +:10E1000041ED0ABD3442FA29913F3A3C71E407746B +:10E11000CECD45A4EEE15B5FC7FB81E5C713FC46AE +:10E120004BEFBEB4632FE9FF45FFE7C76980CF8F90 +:10E130006DAD1EE2FF8ECD2BD274B20336238DF867 +:10E14000F97150D88144FE67674BA6BDD3D324E450 +:10E15000771D6F15FF5F19697914F7F325EA57DA10 +:10E160006FDDE1BF71FB08FA21E0A5793BA7FE0056 +:10E17000CF73DF5C774313F6D7B7C59F7FD1333FAB +:10E18000F5689C1F35FA99FCEF47EFD56DB6F3BDE6 +:10E190007ADD9B0AE75DEB21C2784B7CBF3EF4BE83 +:10E1A000837040F42B18DFB31F61E820BD556FDE8C +:10E1B000CFD41FFE84F1569FE00F57F771DFA8649C +:10E1C000C7DF37227DF83EC9C07D511A0382C21EC7 +:10E1D000363FEB345CB88F8FDFCEDDE8C4F9CE6C10 +:10E1E000FE6D9A5416D53700CB584F9C0995A4075D +:10E1F0007AA1AFF53C67EA25AB6DDDD3686D920877 +:10E200002CDAC57307DA4B17EEA3E69493FDC89A90 +:10E2100013DD2C5788FDC8A00C8AE70F7A8663FFB0 +:10E22000E29DF6ECE9E2386964272DBE2D7AF18390 +:10E23000A9DBE97DB48349C4B7DD17D84E5A72B95A +:10E2400078A7944279899AA0DD47F79C89749D1C30 +:10E250003AE0E874F7C2B7D07B53294FD0FCEC0505 +:10E26000E6CBC7FB25C82DEAF97EF5964F1D247F26 +:10E270006790416A06F15199EB48EF8D7FE19B5F12 +:10E280001EC9FD2AC5FF97E3E3FBE4F38C62BCBF24 +:10E29000F032AE5FFDB6D347E7AF7EE101C6FD4782 +:10E2A000B606C67DCD532B3CE4F754DB0D8FCA4F29 +:10E2B000F179F5AF1E623C2E3CF19007C4FD601E63 +:10E2C000E9233C671E9D6FC1865BF97CF74280F1B4 +:10E2D00058FD94E20FE2F3BC0DAA76F6C2D795A6DC +:10E2E000DC38E1FEAB492ECEE34C742FF691035897 +:10E2F0009F19AF2B41D25F4ED8F4678A0BCE77E4DB +:10E3000048A48F94137617D1E7C17D198CA7EF65C8 +:10E310000B7F68F289F3531FA5CF8B6C0D1829D2A0 +:10E32000F90D935ED237ACD740A338A89E7E2BA6BA +:10E3300079BB1DDFC3F15FE0E754F710339EE9F5C9 +:10E34000D1266732DD3B7DE4816A914F83D7290E68 +:10E35000AA1373212EBE6AA1F58E80D64DE77FC920 +:10E360003C4FFDB68FA63E497237CFDD908EF4F953 +:10E37000E2CDF71DF92417B8CF41B4AF8E0FB80D19 +:10E38000BE1C8DF49A458FFA3667DC7D4DFDE60F95 +:10E3900012E437BE1FFD24A65B3DA46BE4177FE4A7 +:10E3A000884C257B62E0BA5B709D7BD739E3F2D065 +:10E3B000F5BB3F7E1B081F18B185637061C99F15AF +:10E3C000CF2E34E5BD47DE2841FE9BB3E3FD0BD8DD +:10E3D000907345F72635F6E056A20FCAA7CF40DC6A +:10E3E000D6EC381F279F9F6E3F74F20E3CC7A721C3 +:10E3F0004B3EE3F56AF5AE0FA6FE92E2893EE4F3EA +:10E4000053377E38BC17B9C4CF7B954BB7B807FFDD +:10E410007FA64F77AFFE4C498BA577BC1C2EEC43F3 +:10E420009FEEC8EEE1AFA5E332F0C9738B07707DB4 +:10E4300043027D2DFD99A817A7656BBDEA4530FD08 +:10E44000AB4B7AEEF9B3537F89E7FE324F01F2A36B +:10E45000EB367FC5F609C91AA1FA97BAE067DC5E08 +:10E4600041F68ADB0766D3FD74CF73C7D333B1FFA0 +:10E470007EE2ED28A6CF5D4467454E13F7DF18DF37 +:10E48000535EA899ECE308DA930AC447A88410F90C +:10E490004752FB2B7C1F9E18B7199550DA80FC69F8 +:10E4A0007644EFDBB664F3FD1BDFB719CB9C6A73D0 +:10E4B00036DFBF71FF129B4BA53C53698E75AFE6EB +:10E4C0000B131F1F3904E5AB04BE387EBE7004DB9E +:10E4D0001AD539694AAC1DF24D961B7ACBC37F68B9 +:10E4E000EA9DB939E27CE93982EECB159117010832 +:10E4F000F1BD6633F19BF69591C6F1BDDDBC87C4D5 +:10E500009939EEF6A5C89FE3D1E1EFD9DF9F6643C5 +:10E510005CF82AE4074AB09DFCD3E5A23D5E7EB1DB +:10E5200018DBEE9FAE986643FEFBAE912BEC789E17 +:10E53000678C966953B0DF26EFAC267D6893416DFA +:10E5400046BA2D4F0B35509BEA0E96E545F705DA96 +:10E550008B01DA474B1EA8AB38DED335CA2B3567A3 +:10E56000B87C1467DBE4497362E759EDD04F737EE2 +:10E57000291BB4269C27C5190A50DB81F3521BB412 +:10E5800092C9D46EE90F7C2F546ED326F33D0E1E34 +:10E590008FE2D44BEB26ACB33C43F712FFD2896E2B +:10E5A0003957FE6C36F3F14A8AE087922E37ECC475 +:10E5B000A72747C417B95404304AE08EEC45D7BEAC +:10E5C000DC4D66DEBF90E8AC289B76101E224D36EF +:10E5D000D8944DFDCFEC20BCBCE570711EF0B6F4B4 +:10E5E00035F6AB70CBE5AEC207086C6F4BDB1FA2F4 +:10E5F000E7C59C40710EE306C234EF1D7729625EC9 +:10E6000077432AD509818E38A6F3997E3D0410C739 +:10E6100084F98388E311247A1BD44BF9AAAC9EFBBE +:10E6200050D2B7F33E6E738A7DCC09163777E23E3F +:10E63000463883FD296EC4F5CB73F05C773883834D +:10E64000085746011C25BABF75F7351BC5F90A588E +:10E650003E58DEB0FF7AE5CC0B345F3DCE4FF7CEAF +:10E66000E7927FA5D07809F5969427F4E95C0F87A7 +:10E6700000C24F05BD99E2CDF166DC0F1DC24FD639 +:10E68000F01FE76394AF3D7C4F795C06F2F3CB0F4C +:10E69000C7D7F78C870D87CA386E71B1DE189BA07B +:10E6A000EFC6B77DCA7A70FC65E2F49B724CFD97A9 +:10E6B0000FF9748E50C27D98CFBC0F4336D862EFED +:10E6C0006B2C3DF86C52E56CA2D3749B18A781AEFD +:10E6D000D3BEBB7D9A4C7CE93E3E0FCAA90D5A239E +:10E6E00060FB956C119F26CAF5EE047D6AE178F80F +:10E6F0009BEA3DE4570D7F13EEA6F35CAFB8998813 +:10E70000DDA721487EC8884E97CC79AAA3F6605031 +:10E7100022FD73F5CF2760FFF26376A078B79BB632 +:10E720004EE3DF34EB66959A66EA3F6FE6D729BE83 +:10E73000A1FEBD618027C9EFF1CAA0C5E8D1242D93 +:10E7400019B4187AA59466C6B5AD3ADC0AF111A4DD +:10E75000FAF2E3DEAF5047070917470CF48E0AA818 +:10E760007EB638FEFDE3F1F5B3A3DF8CE7B33D3BA6 +:10E77000A850DC71AD99EFF18583870CDCEF18337D +:10E780008F3EE69DF8F1E32E93575F9DC06FA4275F +:10E79000DBE16EB4C354DF3602D264D66397A3E7DD +:10E7A0006941CF683C1160BA8E32F3BD197A3C1DC5 +:10E7B000B3AAE2E998E38FA763EE9C78BAE505E295 +:10E7C000E9D4AFFAAAB8FEFE0DE571ED014BC6C55E +:10E7D0008D2F428315DB2E59392D6EFCA0D69971F1 +:10E7E000ED21EBEF881B3F34382FAE7FD8B645F1D3 +:10E7F0007C4BC04D220E86871AE3C72B1394B98435 +:10E800003B9477E2DB356D8FC6CD6FE1C0C07FBD35 +:10E81000E140497E41213E7562DC2A8D433C641B08 +:10E8200024093DF9EF3ECDF57D97C3C1F1041C5895 +:10E83000F27EB93CD5FBA46373B8AE4622FDABA112 +:10E840001F4197145DF60289F4AF3119420A3A501C +:10E850008F24171EA038BBF3FE349F941F53A78349 +:10E860007ABFD947B84A631C2D792795F3291764D5 +:10E870008DEFE1D6297E89F42D4E5924A3BD5E2E5D +:10E880008B38E047B27C77ECBDEA8739C2EFFFD026 +:10E89000B443BF748476921EB0B9849D5C2EF3D9C4 +:10E8A000E847A7FC681AC5617CEFF2E5AA29056470 +:10E8B0000F3B4BB50C4A9D621B6DE9B29417D81EF5 +:10E8C000941B36E07A1008727B04DA07C233DA83CD +:10E8D000CFC91EDD21A37D90A8DED3B85ED2709F84 +:10E8E0002E30D2CAD94EDE4DF7B119902D35965142 +:10E8F000FEFB92FDD1BEA9E849CF438BC6CBE4779E +:10E9000075CF57F8FCDDD5BF387B3E3B46BEF0AC3B +:10E910001DC4609BC675AFA71CDA2DA3897EAF2AE4 +:10E920007CFFF03B1AD78BDF7FB93C62F5C69FA412 +:10E93000521DD9A952519F637DEEF508BDECF588B3 +:10E94000BA9CFAF99F3AEE603A587EE9E71C1FAB91 +:10E95000C5D0908EFE0FA8DDEC97AFD2851F59452C +:10E960009749746F6D6F35DCA447DB6684394F6B54 +:10E97000C61FB7BD25F295B7FD1DE2FCBAA11E3B2F +:10E98000AF3BD423EAA6CA8F0646D1BCB79080B16C +:10E99000BF141845F6DFAF8246EBCC09CC7DE838D2 +:10E9A000B667AC91D87FA67E1A3F13794AFD6F8077 +:10E9B000EF0F7B70FDD11E8DE79B0D7E3BF97D2710 +:10E9C000EFAA4DA5F8F3AD0C313E2281B62966BE03 +:10E9D0005BCCF9DEBA6BF11EF24B693D5A9FF643F0 +:10E9E000EBCF50A198DA272170F60F453DD79D0552 +:10E9F000BA5DF8977E3BF93DF86B380BFB1B4F393E +:10EA0000F93EA5F1BE14A07C4CE33E27E703BB16FC +:10EA10005DD8F133DCE2DDFD3AFB3B4AA2F4B87D80 +:10EA2000BD021AE2253F4B9FE821BF6A4CD615D59F +:10EA3000754E7E6E2CE3A9718BC053E3B34EC65165 +:10EA4000E3B3C0F9C9C6D44B78CA253C356E29C991 +:10EA5000E57A4B9AA297F957208E3427D55F21216A +:10EA60008670BDF96C0FAEB3225BD4B52F5767E645 +:10EA7000139D9E955C7CFF0B0557569F4BB268A07B +:10EA80009EBC8D5528C06B268EE7B46755987E5F77 +:10EA900080D6797BFF8EFEA85AE1D5A1CF0CE23853 +:10EAA0006CE495D101F5D2F3A46734F4C3A090EDE2 +:10EAB0001BFB075D6199E9827AE97992EB4EBB4BCA +:10EAC000253D7A79BDA43333ADF841917D5E1BF9C4 +:10EAD00049ED4A0AD12F8D020D4BCFA09CA429B23B +:10EAE000A9674077615C36CCD443DFF77CFBC6E591 +:10EAF000227F93E8074EDEDE8B1FE8C77FC20FDC64 +:10EB0000A094097F254CDF6B19B23E3E9F3A9EF2DE +:10EB10004F69BDF87F948FBA02FFEFDF3CFF3D3BAA +:10EB2000B08BFC447C864A85BE0A8593D91F283762 +:10EB3000F51784DD1C7725FA8DE82F3E49FCB5FCDE +:10EB4000C5C4F983A61EDAEA1176E67E8AA1B19DD4 +:10EB5000E2D2F9BED683346E1ACB6D5E479D6DC688 +:10EB600049A887D371717BBE78CF219D2B75A1BC3D +:10EB70003EF7B35B56AF4419750D34ED8171CBEAA6 +:10EB800043F87B89F6F9A16F48DF76D838DFDE7D60 +:10EB9000F82AAEFBEDEBDC23512EC9B8878F8C63CE +:10EBA000FFA8EBA890B31D99DAEFC7535C714C0135 +:10EBB000AA474DB2753A327A39D75ED2CB28475F31 +:10EBC0007884BD72B5493AE5B55D9A8883935475EA +:10EBD00004D7AB0780F39C677796705CFCB4498FD1 +:10EBE000B7B3FC07491FD42A1B0BD59228FDADF9FA +:10EBF000CBC94F2FEB95DE473D31FE7928FC3AD744 +:10EC000063765769B232A227DDAD76FDFA0A2E3A55 +:10EC1000A85B9FC5CFA194D7C08FEAC3820EE7DA65 +:10EC20009A337BCB1BD7E7761C247AC0EF9380EE18 +:10EC3000D1EAFFF79F58FE9E9F81D0227E5C1CC6C2 +:10EC4000F3BDE7C930F3021DBC9FABFC9A44F1420F +:10EC5000BD53D8897317151E67CD3BBC6D92A22298 +:10EC6000CECBC2AD0739DE6D776A84B7A4CD20E87C +:10EC7000D79EC47AB57EFF0D220ECD001FD5CDECF8 +:10EC8000488EFC99E68FEC736A74CF92A4B6422644 +:10EC9000DD333884BD1E8A74DBE58E7E6EAD97D47D +:10ECA000FE732E8646DCE8944F4DB2B5C275317CBA +:10ECB0007DDA23EA36E55C81B71DC96199EE7B22D6 +:10ECC000183B6DE27D45F709BCAEB5CFA19C1FDFB7 +:10ECD000E1887C48F726B82F95703314C43EA17D97 +:10ECE00088C6F508AACEE74852355F6C5DBBB5AF64 +:10ECF000FAAB51AFA7A35FB40C2EE91BD23FF5C905 +:10ED0000D1B60B657347B185FB96D55326C4B4497C +:10ED1000618E89BEEFCD7D7CF5F2023A97B09B36CD +:10ED20005B88E52D6D0EA8C6583ABF2EEA4549DE30 +:10ED3000327A95C770AC3CFAD28DCC69D8EF7B455E +:10ED4000F635E394E95F8BEFC1D475D8D91ED6FCB4 +:10ED5000D7ACF432BA97900F3EBC1D9F9FCE0D0DDD +:10ED600026BFEAA3D440712ED2F3A577E6715DDF0A +:10ED7000273BECBEE9A4273B8D1FF7C3F9173D677E +:10ED8000D7287FF4C33F7687BF213EFF5AE238B0D1 +:10ED9000CB2EFAB18D8E24AED3FE9183EE916E68A8 +:10EDA0007BCF41DFABD9971B18968BE71AD3D634AC +:10EDB00099E837165A9B29DF88FA39C072E1053382 +:10EDC0004E1CBCA989E43012183013E5E8F65CE16A +:10EDD000675AF46F37E5783FF95743FAD617061CA0 +:10EDE000E4BCDC1ED32F5C0687FB11BDF71CB8BD4D +:10EDF00044C379BB82B62AC2D5B093AEBBF518DC4A +:10EE0000CDCA15FA6196B9EEBBB9814AA2C7E20331 +:10EE10007F71A4211DEAFF1A2A243BF94FC87F55B0 +:10EE20006EACFCA33F198BF31E729F2077F5B6885A +:10EE300083F3B2A781F5D5F327DB38BE7FFE5135CA +:10EE400083F4079E0FD2B1BD87EE7D8AB8CDF9A2BB +:10EE5000A63F7C7935E57DBFDCB77800D17B74AE09 +:10EE6000F0F3504E2A93491E7702EB4B4B9ECB4852 +:10EE70009E712B65AAC82395919C90FC3A3AA6B145 +:10EE8000FCEE91F99E14E584E506E544A53AA1322D +:10EE900015E586DF1FC2FA6047C7EB57D17803D963 +:10EEA000336804B565C6E98EF0B4A084EF8FB487EB +:10EEB0000FD2FB2371FD262D2ADF2325F0C7DE3379 +:10EEC0003FED49E3FD5AFA77A7698F52A8082B4610 +:10EED0007E62ECBD685FF207FEBCFA0B94A712BD20 +:10EEE0004226BFBDF13585ED4CE36FC6DDB25DB4A2 +:10EEF000D9FE8FD61B2653A9C998AAD643F41CE77E +:10EF00000F4DA6709AEC8D867C18854F1DF5ED840B +:10EF1000391D87EC42AC87517E73F7C16F0FA3F8A0 +:10EF2000ABEB94139270C9DD7F8BFCF9393CD7C3EE +:10EF3000FB918ED0AB7FC4F8EB0BAF5D52671AE547 +:10EF40003FD7E5BE7AA32D09E567AC38D713B9479B +:10EF500057634804D95E7D1DE1A83C2FB08EF0D8E0 +:10EF600075E26F1EFA9AC49E37FF9246FEC26E8704 +:10EF70003E4CE527C66BBDD8BF6526FF479AF536E0 +:10EF8000246F94873EBB3E6B23CB9BDE7133D98DC0 +:10EF90007B25F500DDABECC915795E2BAE5E205C00 +:10EFA00016A8DE3D6B2AF94B6ABE02748F73EF3AE6 +:10EFB0007B5CFC3BD830384EA943C80491FF3566D2 +:10EFC0001D4875821F3404C20ECAABD407DC0D6124 +:10EFD000B567FEBCC6BCCFABB94C1CBD27D7F49FF0 +:10EFE0004AA084FC27E43FE753227F507C9BF063D8 +:10EFF000BB0D8E3A51389F97055DD04F599E9E1993 +:10F00000F5A3EECAD3B7907DDE62E26B47A5D0438D +:10F01000911D5290F1BE0D58DEC69DD636F297BDB9 +:10F020000DFDA4D743E701C6CF389BC1F7A6E3BCCB +:10F030002540DF5F1D836A9AF07E6FBB140CD2F807 +:10F04000A038970DFF913F791EB6B75079C3588805 +:10F05000F0F917D2F9B9EE28E1FCEB4F1CA1B46529 +:10F060006D28E13EA68F7BCE5D00BDDEAF9CB2E891 +:10F07000530885B1FE251CED3D5E88E6930CA6C7BE +:10F08000A776512FFDBA393FFEA451DDEAFBE6F920 +:10F09000CF9BFA122D0DD3E134F9D174AF62D2A116 +:10F0A000669B4987350227D6F789EB21C8E7AF353C +:10F0B000CF9F784E5CFF08C5BF0BD1EF263C566F43 +:10F0C00088C7D922930E8B12E8501790C4BA4145D5 +:10F0D000AC6BFAFBF780F523F6B9C8DC67E2BE1625 +:10F0E000DBC5BDD862C40FDDD3FD4FED33914F6951 +:10F0F0005E934F57C155717CAACABA223E9580963D +:10F100004E71AFE5475B78487C6FAAE947DFB05E98 +:10F11000F893BB3B0EAE24B92FDFA7A864E7BB3A38 +:10F120002A53A84EA0EBB88DB3B35DED15AB0DD44B +:10F13000772F1E1D388BBE57547E426679A878AD56 +:10F140003C9844F1C66BE529255CAFA165D1FAF87E +:10F150001EDBD5AEE303DF28633F7DCA48522F4D47 +:10F16000C7CB53C80F781144DE437AED8BDFD1BA99 +:10F1700015C76CA329EFD982FCA0796FF8C5DCAD67 +:10F18000E44F0CF28A3CC8918EC6D9C4CFDAE3B200 +:10F190004A9F9F3B2EEAB06B9E528232B66FD829AF +:10F1A000EA42EA915F12EFD7CEEBD7EF1B94758F4F +:10F1B0003BCAFF79265ECB33B49F4C273F2F2F8568 +:10F1C000EB5C6FE86F677B77263FE5DFA7E37C8327 +:10F1D000F5A24BF8082205CEBCFC80885F7748E09A +:10F1E000C5058E781F70507C70A6D215A679CEEC1E +:10F1F0003DE1A07BD7C9BB4F88FA07B3FEC7C25316 +:10F2000022FDCF76249BF58AAD0EE253ED09ABDDEE +:10F21000E9203BED37FDA5BACDEF717B11F9FDB4C7 +:10F220009FCD12D7951FDAF712E77DEAB68B3A8A9F +:10F23000456D4F3808AF8B109F1AE9116865FDBC0A +:10F24000B8CDA1F6A65716AE8F6FDF77195CCEB595 +:10F2500070391486122EBF9C24F4F9972792394EE8 +:10F26000FAF298C8E2FF037CB2DD3B6EE6C5BAC392 +:10F27000B2EEB8263AEEDCF16E07D55D4C6DFF8C30 +:10F28000E937BDFDC014A2CB4D10A8A173DED49EFA +:10F29000A2925F3ABD53E89369ED4ECE8BDF04A195 +:10F2A000E564EFBAF6BFD242796FA3D21519A4462E +:10F2B000F5D34293DF000D4C8F33567C8F6DA69FA4 +:10F2C0000F8A28DEE9B277B27C77CD157F9F0036B2 +:10F2D000C4F3EFC6D2787A4D03A15FA66D177AED1D +:10F2E00046E8E4F96F247AE3FA5D79C36E61FF07BB +:10F2F000E351AA8BAED91EFF7E5D821D7CC06B17C9 +:10F30000FAF332717F225FD625F0657A44E8AD6961 +:10F310006F2ABE209EFB68785919E5DB2C3A25F24E +:10F32000E5A8F68FEB8E7E67FAD956FB16D3BF0D94 +:10F33000A9C19F55E0798F817AC2C8E6EDF0F7EB5D +:10F340001EDC9927EEE5F284DF707EE0A1AB35FC90 +:10F35000B5E695970B1DC51C576CF7921F2DB7FF8F +:10F360008CAEBD5F2950209BE28B67938224773F50 +:10F37000F4BEFFA38A915CA7D241F777F5B6D6E930 +:10F38000746F55BFDDEEA378A2BE4D61BD53BFDDE6 +:10F3900029E49EF082FBF1B74BD7135ED04F6FA3E9 +:10F3A000F967D0950DE50BDB24FEFB2B33A67CE63D +:10F3B00020BA1E4FF0D7A7F7EDAFEFF7C6F8EBC7AF +:10F3C0000696A4CFA3A74DCBA5AFFEF4E5AFD75DBE +:10F3D00014FEA2F5791DCA33D1BDAE5D62FF36EAD7 +:10F3E0002FE64AE42F76ED7BC441F16897A47E9620 +:10F3F000820439EB157674F7C1EF3B481F4526416F +:10F40000A498F2AFD272969F3A764AF1B94712F7B2 +:10F4100068BFB653CD0434BD9ECCFAEFDC49717F92 +:10F4200044FE09D53BDC2BA002E7E605189F54EF0C +:10F4300040F8AE859A16FE7EFD3DD0C0F59609FADD +:10F440006071D9C6964CD2D7B08CE3A765B09C9FAB +:10F45000C3F6BFC57A71D8CB0E555639FFE0E0BC74 +:10F460006030E6FDE29EFAA6F632F92FC88BC7316E +:10F470009E6735E70F8E292AE577761FFCEA5754F9 +:10F480003714413FBB98CE6DFA2DBB0F26715CD16E +:10F4900075C21D247A7E62E2F58C99776F1AA330CB +:10F4A0007DE4B1E2396CFF4BC58483AE7D170A035E +:10F4B000C8EFE7F7BF7495CEFC0F323F176F8BAFE5 +:10F4C00013AF0DC5D7815B74AE37E98CFB1AECC85E +:10F4D0008EEE6B8FAD33CDD78B9C49D241E69F2CFE +:10F4E0001D8EF3FFEB7FADF863EB2AF13C77931EA3 +:10F4F000CC34E5076C110FD9534F9EC6B8686A1714 +:10F50000FC96F78927AEFF1D9157B1F3FA3DFA2B10 +:10F510008D1AEAFFB22885EB12E0A2319DDA0F17AF +:10F520002B5CB7F0F0EB8B86C4E6DB4012F172BDCA +:10F530003DC2F56FF52764DE5FFD896ECF4037E988 +:10F54000BD8D53A8CEF746539F1C294EA9265C1BA0 +:10F55000B46E2EE5FB0EF3FB4F7AC53D42FD58F12C +:10F56000FE321347BB5F9F9642F984AE7D39FCBDE6 +:10F570008E7E26DECBF3FCC3F372A2714C5F7E69F4 +:10F580004C1C25EE47F09C244F2FFED1199C2E5188 +:10F590009C7BE1E477E9BCC76CFC3DB7A67D4E835C +:10F5A000BE4752FF7612E7272010B886E2B687F7EB +:10F5B0002F1C22BE64BF8CF9B1A66D4117D503D5AF +:10F5C0009E4AE132E1DA7D7FE03ABFDA3DA37E4236 +:10F5D0007E0FFA393792DFF362BB9DF54FF96B234B +:10F5E000196F2F1E1F9955C2DF53F7A5D0BCB5C7A1 +:10F5F0006C5CF7577B6CE46FA793BFF25A25FB3D19 +:10F60000D26B23B3484F55507C4B7ECFB181DCB6D3 +:10F61000CE33254FF8395D0792380F2141B1C00B29 +:10F620000C8CC34BCDEEDFB03F50837A301637D60B +:10F630007B73F26C3CCF9D8417A47F5348D2190F83 +:10F640003BC5B3A6ED450F9D63B13DC4FC6DDA6EBD +:10F6500017FD3BC413E8EF05E07B864F667EFE9600 +:10F660006513F9EE0816D07DE0AB661CF0EAA9C080 +:10F6700000D283AF4E0A0CA1E77B79F1FAD0804A21 +:10F68000DE37483399EF67770B7F2C918FEFE68950 +:10F69000FC4A5A16C4DD2B5EB23F79021FD31C22EE +:10F6A0003F447E5C9EC7BC7763BBDE3985F4D14C9A +:10F6B0006F964476FD97E6F837CCFB265026A47269 +:10F6C000FD067D2F2A83F2E47E3BD9C75966DDF122 +:10F6D000AC9B6EBD9EDE07B4DB6ECA178C117EBB81 +:10F6E00095F74FCCF35BFB9A5515AFDF6EBD8CFFE2 +:10F6F000F4789E592F3C18060BBFDE9D427AFFFC22 +:10F7000051BB59FF1F1CE81FDEF3FC96FE3842F781 +:10F7100040A8D78EA25EA3E73F9177FA79DEA8CB07 +:10F72000E7F99B86BEC579A2570F9C7A2183F56CB9 +:10F73000121463D7C4AFDFF5F4B6AF2698C9FC5DE9 +:10F7400006B3E3F069F1F92C88BFCF90C8E7174CF6 +:10F75000FED461DC4BFC59551AF4D3D3BAB74C72C2 +:10F760003D66F4C35FEBDB67F0F70E9B865E584E99 +:10F77000FAFDACF93D1DDC5FA133C60E9CCDFB8CC0 +:10F78000FB1FAE848881FD07868AFBB6DA2912DF6B +:10F790000BD48685BDAC9D2DECE5E0DD33ECA4BF3C +:10F7A000BF837EB2EE63357292EA5A6F36EDE4C4DF +:10F7B000AFBB184FB5A69FD8049986D0DBD9FCAC57 +:10F7C000DDFDDE72BE970C4003E5DD6E19138F83FD +:10F7D0002110589183FDB755493EB42830438FEF2F +:10F7E000BFEDCE198CB759E6F7772E87A30FF3FC40 +:10F7F0001DC4BFAE8EEEEF0C47BAD49972E01BA2C7 +:10F80000B5D1FD99EFB7EA88661CBB2DD8BD97DA54 +:10F810005D46B644F7E66F9B74BEDDE33F457A155F +:10F82000EDC85EBA5FAB73B8543AD7BB94541815A1 +:10F83000953B5F2E54DCEF8EE59778DF1A17C813DF +:10F84000F565AFDA8305FCFD8EB22BBB076C1AFAA7 +:10F85000CAD5A4E75E3D70EC6A470CDFCE3406865D +:10F86000B07DD977C8A3B96371259BB8B2F1539223 +:10F87000669A76331E67670867A49F771EBAF9BB3E +:10F88000848FDDB3B2252DC6AEEE79236D50CCBC8E +:10F8900067DBC5F71730BE1A7C6B6AEC3E57F03E4B +:10F8A000CF86C47C2865FCF73BEAF68E182DEA2348 +:10F8B000C1A07A8ABAD2795B45BD59B3F97786344B +:10F8C000EB9E5DEF27EED9E3FE1E5CC8013C8FB1D5 +:10F8D000DFC9F76F5D7695BFA7DB754ADD28BEDF10 +:10F8E000D9A014607B0CA89F51FCA1E55BF993069D +:10F8F00045C7CFC7EAA27E0EF531D7198E9F2EEEEF +:10F90000B7B19FEB0C2734804FC431A27F5C95E8E0 +:10F91000BF0E3A15D2D31329D584723509341BB5DD +:10F920002783D14C866D7C287C23A9A1B0C796F192 +:10F93000A14B946AF6C6BF287D6CF0A185471C8C4C +:10F940004E0FE7D125784C21BB3B1AB46E735F5C38 +:10F95000873346D776D1796EC8177AC59722E42FB8 +:10F960007216388F66ED6FBCAD83CF91AA6999741A +:10F97000AFB1F37023B7F763F4CAF55559E67B1FAF +:10F98000E37B48BF6B6D413EA7A7418C1F0BE15E37 +:10F99000CF392EBF48DCC39BE7EDB287D85E77DD59 +:10F9A00087828CFBD2F3C5F7BFC7B54AF047549A9C +:10F9B000BE12711E9C5FE17B1473FE711062FE41EA +:10F9C000B596F9DB3C7A4F32F93345257A48618F99 +:10F9D000FC4DCA95D3ADCB03BCDFB47B22E77E30B0 +:10F9E000327ADFE46BCFE5FCEB1A498E28745FE3D3 +:10F9F0002A1075C06108915F8EEA3CEEFBA1B3F35B +:10FA000067CECCA77D04C4DF894AACAFDC16DCC46A +:10FA1000F53273ACFA990280D39EE83DBFBD58D44D +:10FA2000D3D8E99E5DE57ACF0AC2EDC59CC0CCFC77 +:10FA3000515CF7398827B3054789BF4F24F09C02F2 +:10FA4000FA18A2F385A442DEAF556FF4487221EF95 +:10FA5000B7731284A4F13DEFF1539CA16AA623D59C +:10FA6000038DEDED5E5FD40BA354695467048F4D95 +:10FA7000D668FE16B35E36B1FEF94292A80FB2EA1E +:10FA80000A1E497E81EB49AD3A023AEF04EBBCF223 +:10FA900095D41518F6AB8AA275AF4887A5261DB870 +:10FAA000FE152DE420418730C7FB29BAF85EAE8AE7 +:10FAB0007CB289B837E2241DA9239F4AA37CA2FA0D +:10FAC0006ED21BCB275B721CDAC6F59148076A5BC6 +:10FAD000E74D3CDFFF0508619EB360540000000065 +:10FAE00000000000000000001F8B08000000000064 +:10FAF000000B0B936260F8518FC04B8450F9E8D82B +:10FB0000510495BF4D18BF7A42989D05C1FECFCFD5 +:10FB1000C0F0861D82D740711C107B42B1000704E3 +:10FB20004B7022F474F031304C00E2197CA8E6A648 +:10FB30003042E83B0C0C0C0D402C07C47390F4B918 +:10FB40003141687E7306861A6B84B88E010343398F +:10FB500010071A52E6AF513C34B0901F2ADFD91D6E +:10FB6000959FE6C9C0B001498D8B3B69E6EBF9333F +:10FB700030E8FBE3966F0A46E527C4A2F2BF06A170 +:10FB8000F2193350F95121101A00B5522727C80332 +:10FB900000000000000000001F8B080000000000B3 +:10FBA000000BCD7D0B7C54D599F8B9731F73E79981 +:10FBB0001B18601242BC8100A906BC40C0A074BDE5 +:10FBC000814069975F77AAAE1B5DABC3A3808A3083 +:10FBD00052B7E4B7D5CE843C0810702816220F1D0A +:10FBE0001ED260D546454B5B6D874259EDFADF4D1D +:10FBF000FBEF43576D035A7C5430BA55EC1697FF10 +:10FC0000F77DE7DECCBD9349C0FEDD47FAAB9773C5 +:10FC1000EF39DFF9CE77BEF3BDCE77CE783DD3583E +:10FC2000E5D58C9DC73F78FEB5CC189B9E7B326690 +:10FC300066590D63973296D81161F4F7FA0CC6AA8B +:10FC400058EE4F1AC9D867F01F1EC64669A99F60B3 +:10FC5000FD16812546198CDD8BEF4BF03F69CF42B5 +:10FC6000687FD931956DD018AB663D1E368EB1C90F +:10FC7000AC8F9E06D3447C4E65063D6B588C9EEF40 +:10FC8000D6F57E0D9F078AE251C46745307E891FF5 +:10FC9000FA393D263E310CEFFB44B384F09C358CA1 +:10FCA000B199B971E43F194B313602FE3BDBA0F14B +:10FCB000A41E664633BCBD4CCBCE161836D5E9BB68 +:10FCC0001A4C3001FE2947E22C1EA4F1B35888B12A +:10FCD0001B947815F62305959438199E5A9F82DF58 +:10FCE000CF14B386EEE0C0FE662031005E6B689EE6 +:10FCF000D95BCD58F33D068BC153CC424F004F0C1E +:10FD00001A2C3E09E04819A217EB62150F41BF9269 +:10FD1000DAFD1386747E04CA84974670AA83594F0D +:10FD20001DF4334E89CFC4B2807841FBE6D0BC6865 +:10FD30001CE02A5196122F07FC0106B66F2E669919 +:10FD4000EA0AC6BC65F0AE06CB3D8F6219EA31CD3A +:10FD500051B6F16D2E36A2C1EA5CB93534E3452FB8 +:10FD6000D49335A64F847A52F6F384B7A4992C0E17 +:10FD70004F594A3101F1D639DEB29AE0E5325E568A +:10FD8000B438ABC3717F2C16A44FA5459F4BBB382D +:10FD9000BE5290654401E9F3FD9FF8A12C4699E11C +:10FDA00023EE324CA48F1C64DAC3F83DC8EB8B1AE7 +:10FDB000DB1B10108F0CA797C6FBBDCCFAAE44B569 +:10FDC0007D9E0AC42BEB09D4D03B03E9598DDF118A +:10FDD0005E847F973437BD903E4E7AC9918BA3578E +:10FDE000738540E364E7A645AF9DE4786F8D1FFF00 +:10FDF000DEC4752310CDE82F08E5CF08FCDF6B606B +:10FE000046911E0E7EFF1A965730E077289F96E3A4 +:10FE1000DFF6737E5F83EFBDECCB45B14943F1BBA9 +:10FE2000C2B2B048FDF0AFF322F5A69DBA8CF7C57B +:10FE3000CB7C3D5C19899B8842FFBA38C9D7C54C39 +:10FE4000AD7B0E4ED14C25BE0EF9DE5E172C18236D +:10FE5000BEA38501EB5EB66580309FCF6319CB6C86 +:10FE6000008073C59B9800E56FC2048E021A8F4410 +:10FE700096A57E751FF6B3A54C621B809E4CBCC92F +:10FE8000C075E4657F5F703C5284A57C45D04F19F6 +:10FE90008C47B5F0C7FE4C9018D5C417591FACC796 +:10FEA0009D2C143915800F57B02BF8F87401E10D13 +:10FEB00093F426A906F9C963EC453631615450DE46 +:10FEC0005634760FF25B5374917A02FA7FD8E24788 +:10FED0006F68B60AC289B544AF2962D583D357FC8F +:10FEE0004864D9E100EF23819E62303E13C7B1CD53 +:10FEF0001BFFFEEF6B38FFEE057A09D1BEF3E76B0F +:10FF0000703DE87B3F27E0D360B301EE8F71BE8187 +:10FF1000AEC5C1F811C44701F98A7452824634064D +:10FF2000708EC0BAEE8567CB111FF12BC89D8C4F28 +:10FF3000188847AD96314DE42FC9885EE3E43B81D4 +:10FF4000CBA5910D065BE41887C466FF18FB05BAC4 +:10FF5000081A7C1F6632B31BBE6F91345FB1A3DEFB +:10FF60002E8B1E5B4C36BFBB001DB6E07780732026 +:10FF7000623E8FF56CBD30C3A11790BFAF609CDFB0 +:10FF8000AF627DE512CCCB4A6FB64D1688BF7F813C +:10FF9000ED3F7CA9E766E477D61B9F887216F8FBD5 +:10FFA000FFE2FB8BE56F5F3F3F976934FF79FC3DD4 +:10FFB00098BC9F14ECF5203F5F1E89473D63619D0F +:10FFC00028E649ACDF4FBF2333A328EF9A0FCE6B4F +:10FFD00040FA363F3EBFC174D0E12D6BFCEF59F3C0 +:10FFE000D85AB294E425C8319297B69C97A41E2E95 +:10FFF0009F0EB1295CBEF7F2F2615EBE3CD8E759B4 +:020000023000CC +:100000000870DBE47814E7A3CD9223930EF5AE0DD0 +:10001000403DB54C9B82C3B9FC191810F24944DB32 +:100020002302FC13D6FCCC54CC3FE1F3A588F91F86 +:1000300088C7915B63E7B0FCE8538A807A817519C1 +:100040000CF908F8B32105F46C13E2D132C738DAA1 +:100050002A804FB0DEB9C52EB9D5F631F47A252CF9 +:10006000E9A6B5A914B4FF822FE615006E5BC93668 +:10007000D28BFDF81E0425CFF519C1CF9FA7E692BC +:1000800019D160D02927EDFEF2E464686914E136E5 +:10009000E7F58B7FBD23DDF606C94D8BAFDE5D082E +:1000A000F252247E2A13A617949763844FC04FC838 +:1000B0001BE7C70D2E2F27A416BD88F3F00153E3CD +:1000C0001B607EDA3E9B5071BD36975DA3A29E5F9A +:1000D0005706659CCFA8A20AA08FDB82B07EF07B7A +:1000E00092B1EC447CBFA8BD82F4933103C1DAFD28 +:1000F000CF89C6495E2AD1F8706F85FBFD6B41D26E +:10010000A75111E8AC2466AB388E56ED1A9539E844 +:10011000AA04E35105DEAF0BF2F5DA26279EAB0009 +:100120003CDBCAD8B4B5D08F574BB069F0FE4874E9 +:1001300036E1D9AAADCEA2BE6E832588E39953C617 +:10014000E5A237B228E30522B44540FE05F17D82E1 +:10015000FA1F30AFD678ECB217F483E2A02FF687FF +:10016000F8F697A5445688E4E4224B6F3755D41F20 +:10017000963EF4E8B1147EFFC09C307503B0548302 +:10018000C0F5E180798AF079A2798175DBE6331ACE +:1001900090FE2C263075C6E0F040D2D33ABD103C1C +:1001A0007B9EFBE73BBEFAC15E8493027D05F4694A +:1001B000FA6CE2DB5896525E6D6D04E54BE2C15E6F +:1001C000942F8AAA35433FDB036192D78DAF848891 +:1001D0008E9B914E5EC63A922A3D3724357AB627D9 +:1001E000A3F4642CCE2640FDB3B33DA43741DF9188 +:1001F0003CEE7F56F2E7CF052E67DA053FE1F5B01A +:1002000055D69941FC900E0EADAF8A6A3DB971C2C8 +:10021000FF4386DFA54F0355C35C659F5EEAAA9F37 +:100220002F5FE782F8217B58329981784A8027CA6C +:1002300099A205D1A50E3C1A0591F015C52F257080 +:100240009E5A04BEFEEDEFC33D5C8E453D2AC1BB08 +:10025000FA5C9148F65804EC085807E1D035A92C0F +:10026000CA4BF027C693AD26BDD36BE309F33541E6 +:1002700088ED40B914967BB561D5FFF3F410C5291C +:100280007D59B42F872B646FB4345D43FCD9CF6F95 +:100290001EAE371AADF913BD86515583F6B6A2EFDF +:1002A000AD403FC8B4EC537D0FF24373D3D43E1C32 +:1002B0007FAA5831505FD8706435487E483E3DF281 +:1002C000E93BCD63F109D27704D2F76A15F5ECA6C4 +:1002D000A0677E86E8D5339FE85DE3F1607FFF6B22 +:1002E000E896378ED3824D379B4FFE86E864F349FC +:1002F0004710F8A486562DF189CEB2F3E9BB01E38D +:10030000AAC88D2B9F5EFF5DE3B3E95E14F2C43291 +:1003100041C4AF2F46F8CD925CF8FD77D3DDC62BF4 +:10032000D88F5796E365FCEFC06B82101FE501BEC6 +:10033000DD6CF1EB66A957C575BE03E53CCA954077 +:100340008CD617D677DABFF6FA82F69778E0792F4F +:10035000B6877AF74A7DAEF6763F211C3F5F0F31B4 +:10036000BE1EA4FFD1F560E3B5C1C25B6719CECF55 +:10037000559EFF9179E9D78B35AC0A7413F87D7ED1 +:1003800003E973AD185F80F4AD7CE1CBAC15DEBF43 +:100390006F7AFA364C77C64F78BBCF8F5862F931F7 +:1003A0001ED28BF0247FF17DF017D19EF5463C29BB +:1003B000EFE402FA19FC3EE658AF83E265F9A3F4D4 +:1003C0004967ACEE2389E0FB0DEE8F86582F433B47 +:1003D000B1083509D877C5E01F727FD41090CE8C54 +:1003E000CD227B2FE2FBB4E1DE447005730B3B1F93 +:1003F000F8047025803BEEBF00EE05F0F5B15D041A +:100400001767E7FCF01CDCF560BF80110D769F4696 +:100410004F2FE37EE907D55CFEAE037B06DF33E9B1 +:1004200029D303FD050D4547BB2B10CC32B443DF68 +:10043000AD53FB5814E1717B0BD91CEDEC40153B1F +:10044000E181790F186EFF5E2D532E8A1F5B474C9A +:1004500018151F621DA0C75BA1E6DA0D56EFBFFAA3 +:1004600089F672859C2B4BC1B139BE1E627CE25D60 +:1004700071C688EF79DCA5BFBD87C5513F36071728 +:10048000A9E4E79D3B7F5E9CC1F85432F4C762B596 +:1004900085E8720C835E0E3B58D6DAEE14C0649584 +:1004A000A34BCC5E073EC7718246E0FB1566EF4565 +:1004B000CC43BB1C6BC0F86E6A3A233B654BE066CD +:1004C00076A21AEDE19BC9FF6E1B31B202FD1AC67E +:1004D000D6F2B8B21A247BDDE6D32323AE8F925F27 +:1004E00052727D14FD8E563916453FEAB9114F9B65 +:1004F0000BB1FDB922E635D07F1A5B84E36A3B3746 +:100500006E54A2C0F8028CCB0B8A7B55707EB39DD3 +:1005100047C4B70D0D4D80F77E35973B5B023F32E8 +:1005200045F4AB752981F095608CE22FF36BBA4DE1 +:100530001C8F120FC6BDDA4038763FF0279C475D0E +:100540008275EC7527B8BE17C46360396E8EE5F10D +:1005500056634381FAB21A4E0526A3DCED7FAF61E4 +:10056000BF952F4C2AE2F13885E92A762D98B8AE4E +:1005700072FC9F71CD37D33C39B80E7F4762A976A4 +:10058000F407BD4C4DE0BACDA76B9BC29693DF2E0E +:10059000990D3CBE3F6C2AFA4383F1BB146D7F0F6B +:1005A000ED53A05D16F9CB1B9D9752B01DD867C3C4 +:1005B000495474F40893E9F99E88DF35E96D27FF03 +:1005C0008D10DDF1BCE6209FF7C1FA6B85F5C526DD +:1005D0000EFE5D568C38F9892CF122FA85129B4C5F +:1005E000F84B65C75FAC003C2688DC5E90223CBEC1 +:1005F000CF34B0131D74FAA16C4E1051AFF9399C71 +:100600007CF82FC8B32F15818ECF7BCCCBC4E905E6 +:10061000D649307251FB1320BEC3C248CEBFFC2F57 +:1006200093F5603C311E34715EFC86C15A00D4F1F2 +:100630005AA06C2D7CAE924E229E26FC8FCFA7C175 +:10064000F6231F996A0CF759C2B3E0BB83AE72CD93 +:100650005486FE84B6289828AA457EE2ED6D3E15A4 +:10066000F3CAF3F2E7217998BD363E8737BC320BE7 +:10067000C5F753F2EC0585E97071FB345EBE2903C2 +:100680006B28417C09DAA60FC7B3D39AE7ED963EF3 +:10069000DA62E9A34D96FE6949EAF47D63B28ACA3B +:1006A000F7260D2A6F4DD6D2F3FEA449CFDDC9F946 +:1006B000F4FC563246F594921615ED959D25DDF71E +:1006C0000B142FF865DD0B007267A8FB2586E5D4B7 +:1006D000BFD6BD00207662C0BB94B195CDCFD7A563 +:1006E000801F771677DFE001141EDDFA83A66325ED +:1006F000501EDFFD9200E587C51F1D69C1FA937882 +:10070000FDF6E657787D9F15FF2ABBEE0274E07276 +:100710007217D20C9E3B47F078EEC5B6DB8FED80AA +:100720008E3B2B3E597F3E296DF2F1FEB1EE9730A4 +:100730007E9FCAF1FF51F3C93A8CC791A8BA92B112 +:100740007F6A7EBD89C633C9820FFAE96F1DFAE957 +:1007500007A2CCFB9FF2C9F07EC6C25B9DD54B7D44 +:100760004D15E3DB918F8AAA7B9807A636B8A03B8C +:100770004BE2B12C42FB8A17E22341D4B9BEB1EA65 +:100780002B4B0C36165E1DF2B8DF97379A0CE5CB73 +:100790004322DF6FFBD675B3556BFF8FE2098FE203 +:1007A0007BE2E738DFE7785E24BBE73BD6FBFCFA69 +:1007B000582F5593AB37289EDA05ECDB8B1C27931B +:1007C00062B44FD9E9E1F8DBED5AF3CABE205FAF5E +:1007D000173B1F6F58FCB7240F0E31BD837EA31F3C +:1007E000F1B05A58DA652B1CFA05FE1FBDC9EF2A75 +:1007F0000FAB1FE62A876B4A5D7690ACB9EDA2601D +:10080000F5A5AEFADAACA9AE7264C195AEFAA54B05 +:1008100066BBBE97DFF505D7F791D75D33B4DD75BD +:1008200091F4FEC73C7AACCAA3C745CF1B93744B67 +:100830003EA778DCB9BF6CD905172A9F9BE82E73B9 +:10084000B85E766311F713B83F700BB3EAE4E36167 +:1008500038EC6C11EBF1B2EE1118D935CCFD3DB787 +:10086000AF62C53DD74AE02BA39DF70D8A8B36A614 +:10087000BC9A179E677DE519067AFD3D295E24D155 +:10088000381357F07591B89CF6AD85C2FBE636DF9C +:1008900035278DADAF3BEC65B16C4A96F64D66F1F0 +:1008A0007D5CD3DAC7F5468D7DB8BE8A66315A972E +:1008B000B266EC43553E465208CF32D91C83FD8FB9 +:1008C0009574827B2434E3C538FA9DB31403DD9517 +:1008D000D5A15F937DBD79E687B4FF10927A18EEBB +:1008E0006B842A055A27B86FF025471CFB32C9E3F1 +:1008F000B6A7F2E8F32CB85BD8EFBD632AEE9D856E +:10090000F6F0FF11095F505F64376D9E3992E20A7D +:10091000EB92B1FB2BC793DD9295E0B94EEEED5C07 +:100920008CF59F97C97EDE9854E9FD9199138AD082 +:100930002EAEC8EB77E3247F03C62BBCE58D718414 +:100940007B764AF76538EE7B2BB20CEDD9B3271FC7 +:10095000BFAA8961BB30B5DB5C2110BDC03ECF3C76 +:1009600044F3CAFB0BD76A5337E8886F82F6B95352 +:10097000BF12330FE1BE782DD0DFB18EEA2749D404 +:100980005EAC6519B2E3C13FC5FD1B31923219B7A8 +:10099000ABD689DC4E21FB5128AF253B630DD8191E +:1009A000683F87A2D67C4558C624016E864B1C76CC +:1009B0008EF8CA41C2FB5F4A442680DE0CFC695AAD +:1009C000F659DCB7AF53630F69D86F8CDD0FE55F65 +:1009D000CFF6F4915D50C5E9AEC1FF506E7A75B7A0 +:1009E000BF283BE785EC1A7739F0F19314E7DA5C1E +:1009F000BBDADF84F4106F2AC2F90FD47A4E601C80 +:100A000022100F67EBA7E5E81D7CC5F7D3630EF84E +:100A1000B74A85ED221BCE6076D1D9A4FAD363C044 +:100A2000D75989DB9B29D9BC13F9F36DD91DEFB4D4 +:100A30009F596BDEFF2C9A5F93A6E7F84B9E988D2B +:100A40001A00BFA398917E5E2B7DE527A88FE566EF +:100A5000238AF1F86639EFFD1CEBBDAF703F3F9381 +:100A6000789C7E93007C2AE6E4066D51207F0889FD +:100A700014FA61A93BC3C64306BE4F505EC6B0F927 +:100A8000BA902AC1CA0D8D2770BF520B1B1B58EE9E +:100A90007BC912FEBDADA2A76131B62F0E127FB782 +:100AA0009528D930D2BF42A17D781B8F2725BEEF74 +:100AB000D366D163B3EC96137BADEF0F4832D1A56B +:100AC0002D64D9175A73D4B94EFBE158F439205D1F +:100AD000BF16ED9727510EE0FA84CF6857A62A1467 +:100AE000BE1ECC54F49A90EB7BAAD8F95D6BA2FDA4 +:100AF0007590D2E7CF035D54E4E771AEFA1C8F2CFA +:100B00007C07BF56451D00746C8F74A4172278CDE6 +:100B100034B97FC5123B807E524D1BF9476572FC8C +:100B2000499C7F498B51BC4CD14D9247B6FC1E5419 +:100B30007FE4C9ED7CFE47BB223B945D61C9F1CAED +:100B4000F40D43EE8BA25FE5DCE76BAB8847D1D7B2 +:100B50005D23D5CD9666F27D60B497EF913E3BBBA9 +:100B6000FE4ADC0F3559B486E7D3AC15701C73B35D +:100B7000286F3F008CD17E675767A3316B5FB76FDB +:100B800086A58A311E68B49927A09D2A70FF50B2AD +:100B9000FC42297F5CD6FA1A0CDFC6BC75FADBBCB6 +:100BA00075CAC4059E568C5BD578C8FF1F0C8EBDD8 +:100BB0004ED9157C1F74B07AEB927C7FEFDF25F362 +:100BC0006D5C9FCD72E2455A27D3F97E0D8CD2C55C +:100BD00097CF5AEBB919D7F1F4DC3C3096B6CA4638 +:100BE00014E7C38BFE2AF0BF82BCE7B023BC326F90 +:100BF000EFF5F3EFF9F8801FFA67C4C31BB6FC5D8D +:100C00009C0CE445C9887EA9C03CDBFBA2205F3C6C +:100C100032E211E57EAA8DC760764BD4CA8B93CAA7 +:100C2000C05F0EB342FE7210E10D81A746DF3F2187 +:100C30009E82CCE59F8DE7A0EBC38E9F358AFAEBB1 +:100C4000C3510FA6289EDEACF3B8B9A8B214F9D5EB +:100C50003ACBA4503FA40593FB3106BB0EF7D9CB8A +:100C6000DCF17329E28E9F8B8D0AC18D3664781C6E +:100C700034C8E3ABD06F96C7B919433928617E52A7 +:100C800018F302A65AF170779EC160794FF653624D +:100C90007C1DE37606EAAD0BD5CF871FBD2E36B49B +:100CA0001CC9CF7B084AFAA921F6C772ED2476CA7F +:100CB000217F3E6FCF8B4577535FD480F69897792D +:100CC0000C8CB33447AF67719DF20D689EDBF189E0 +:100CD0007CA60FA37299ACF37DC028D7BF8A6A6641 +:100CE00009B8F5FD42F36CCB4F31C8FD38584F5170 +:100CF00094B722E3F608B86969E453D58A2B9C912E +:100D0000630B91FFC420DFA7B0E135DB712E9DFBA3 +:100D100047EBC7CFD31792FD95569DEBD8B653DB63 +:100D20009219AEF775CBBF8C1A04CFDEFFC8C7CBC4 +:100D3000E6C7FEFE2AB97C11D534D99DBEF4161340 +:100D4000F912DE5976A3C58FCC437CB0119EDC2E00 +:100D5000CF58F1AAC27C69E37321BAAD115902F5EB +:100D6000D6D96F64946BE0795BF6A03216F86BB756 +:100D7000CCED93B3DFE0F4389DFCC815F7C9C82368 +:100D8000A9FD6D87F728731CF4BBCDB27BA086E26A +:100D9000A6175FBF2CD877F43CDADF5D22AD97C190 +:100DA000F05B1E3D7A4C72D0E9CD2E91F6FFDE94B9 +:100DB00040F044B05C41EB76E0B8322E3B7979F4F8 +:100DC00038C1397B4F4689D13854E135998F13F3B7 +:100DD000B36E3BB447415FE242786FEECF874ED9A6 +:100DE000FB2102D203E0525EAF3F7B90F2BDFC9547 +:100DF000699E8F076A01F1F43D377C2FFA27579FD0 +:100E00007B90F627F3F350FC384E879DB9A192EF03 +:100E1000F76DC071D66059CFA40AD0297F9C7E1C83 +:100E2000E7B41C7EFD74AEF50C197FE848668F4967 +:100E3000F2E0DF8333F9BE6850CE527EC585F008FC +:100E40001900CFE95FFF85786CAAE574D824F5A86E +:100E50007F51BF4087AA91964802FA9D1DCBCCF9DD +:100E600080C7B76E64444F5839EFA3DF6CEF438DF2 +:100E700054BFC8EE9E9A8337A2817FCFC173941D61 +:100E8000F6936AE5614BB5DC9E936AFDA40FA55904 +:100E9000D229F7BE09AFDF6CC93FBB9FB631829D37 +:100EA0001F7C0CF755A532F06705B28FC99F6D19ED +:100EB000C1FDD93FCB4AC17C28B01FFF2CA31CD059 +:100EC000DCF9EA6D2513285E3E58BCB50DFC4F6970 +:100ED000FC407ADA76373B37AD0BE3E4CD9EAA3B94 +:100EE000C96EBBC8B86DDB98859DB40F344221F93B +:100EF000255AF64BFEF8228AE28AB7C33822CA087E +:100F0000CC738BF14919308EC2FABE05C7210F1C74 +:100F1000478BE537609E21EA8166A1FA4ECA03BB82 +:100F2000C838BC986777F5F737A62E4AF65D48B102 +:100F3000E4331F975CC6E310CD213E6FADC57CDE68 +:100F4000A62A83CEDB54C5B54F1EB3F3F95913EE71 +:100F50004F819F200E81AFA45E7FBFE4D89F3515DF +:100F60001E7F92FBE96D103CB192DB67E394B88978 +:100F7000FD8991B61EA4B7AD8FF2CF0DAC0FB14C69 +:100F8000B5903B37B03ED4F32896ED730376D9C6BF +:100F9000637D28EDCAEF6C1DBFAD601E6CEEBC0317 +:100FA000B78F986E9F7748F0B27D6E00F4319E73D4 +:100FB000586FE7CD476A5CF37095921F7FE1E35F5E +:100FC00069E9F57C3ABD3BC8FA7AF759AF6B7D2DDC +:100FD0001B7C9E962905D6D7BBCF4EE47C797844FE +:100FE000413E59A95EEB9A9F1CBEDCAF2EE7BCC305 +:100FF0001E88A8372C84716F621CFF8D82F6798C55 +:10100000475C373EFE355C0FB7C652F350F5943758 +:101010006A1EEC7FBDB53EE78A1DBE9350EE8C8FF5 +:101020002D5A04CF5D8A5010FFBDE09FE03ADF9556 +:1010300054E979F6D58917D8474B1D73CA85D676FA +:1010400089E4F0D8F5524B31F2F9187DAFC8E33797 +:101050000CF5D9A6BC7E815E9B106F9BAFF7AEBF2F +:101060009E9E11336362BEBE08E217F3034A3466E4 +:10107000642D1A480E7AF8AB7AEB2A61CA6FC5D490 +:101080005D83E8B01DE1894B52F3147D201D3AE3E6 +:101090003C8F64F55726EC75FA73A7158F95AF3220 +:1010A000ACDFAF286407DBF3B311E8544D8719BAFE +:1010B000E9DCC068DC1F0EF3FC4D7C7F8312FB363D +:1010C000E2317A8575EEC7CA4F13982A45681F51D9 +:1010D000A37CBD8D93FD165F6914D778C2C2A300AF +:1010E0005F3DA18C18C8576A6D228B5B164B7CF153 +:1010F000A791EF42022BC63842A03A43F5D6DB71E6 +:101100008614FB05F2D12502CBFD41BFA5953AD946 +:101110001B2F5BF3122EEBA37D93CAAE73C212C0DA +:10112000739DB58F1818D3DD837919EC5722C375D9 +:10113000576ABE5E37A786B687FB8AA21817ECAD42 +:101140009B03F0FCA64AF3109CC5D67AF59CBF0B16 +:10115000D3C30AF9215E2541FEFD25654B1760FCCE +:101160005728FFE808C683D7B5328AB7962E4F674F +:10117000517E5E52EBD5106EA0429B8D7266DD1DD6 +:10118000CC6802F87A8A7F2F35D598485B7BBD59A9 +:10119000DA0B9412CC992FEE2B8BDFC1408E5DE5DC +:1011A0008BBF8C74F45526489E79CB52F4BC5FCE2D +:1011B000D0F910FFACB489F6D9DEF55F630B1D7270 +:1011C000EA1D4B8E78AB989909E6F8F0019164130B +:1011D000DB527FD2B72C88F5FCD6FEF85D16FFF205 +:1011E0003C663FF2AF4EFCF9079CA78AC6F471013A +:1011F000CA6255AA0DE90DEB7214C7235D8276FD14 +:10120000FDEB95860C9FB75FE321093CC386FDD8B3 +:10121000F3E62B33F7E3BCED51F8BED9C63BD3D987 +:10122000DD408728D049C77D5F731BC543A373D4B6 +:1012300098540BE5DE2DD957711FB82180CE386B3D +:101240008DAC3651EE96D733361CF1A8EC6E2235B4 +:101250003AD6E28B5AEE9F02BD042FC00FC6FB5256 +:10126000381FFE7A90C750BF554AFCEE1ED45BCFA4 +:1012700089464A77AC9BBC388012490DB0B39CEBD1 +:10128000EC427A15F85C4278F56A80F4D2514BEE64 +:10129000C1FA1AEE053AD66BEFD1FA62C1E1170531 +:1012A0002FFFFD47865184F45E1C5D785F25D8C30F +:1012B0008B1AB7DC5709A096371EDC8AF6F1C98E67 +:1012C000C561A7BF77AAFD1FC2384F6F6464A2D360 +:1012D000A97681E242A7325FBD05CB277779759267 +:1012E00077567ECD526BCA8EECF692DFFFC61E811A +:1012F000F2D996770A294CFD3E5B1C2F477E7BE393 +:10130000FE35E585E2464B5F113CEC72FCBEB0BC9D +:1013100050FEDEF2CE75948FB3BC5D36CD02746E96 +:101320002E4E4C4479D09AECDAF5FAF89C9D321B9B +:1013300017E774CA1AE17E8CCACF03D5FDF6F374A1 +:101340008E28EA8DD7217D5B4E7C8EF26B8E16CF78 +:101350008BA29DB6FA552FADCB354A62A2E6C07777 +:101360004D588967C8EEBACF350FB3BC729E3EE3C5 +:1013700078A51EE2798122F31B4D40AFFAA041FE11 +:10138000CFFBBD02C16FB6FCE4FCF1CA8DDFD9EA28 +:10139000F47F64B013F4EA5CFC5CAC72C7D11BBC94 +:1013A0007E1AE7DF7B457ACEF0C6FF1EF919976DEE +:1013B000E3308C1F3CB295EBDDC2E7379A3ECBF1B0 +:1013C000DC28F80D8C4F6E9C64C953D64DF29749BA +:1013D000DD0CE3C0EB105F186A7D7537E55FD8E37D +:1013E000188C1FD727135BD10E5D2B654C3A0F92DB +:1013F0006CDC8A7A94B1F48B687F6E2CD318EEB3D0 +:1014000034079F50F13CD65A95D7DB183CA4A2FE76 +:10141000EE48A6787B4DE3F97A4196D98BF8695668 +:101420007DDDAAAF1DE265D32A1B4F50FBB5295EB7 +:10143000DE9C6C27381B0D0E772DDBC3EBD5587067 +:10144000D85EAB6CC161FBE723BF6EACB5BF77590B +:1014500065EB7B30331FCF3D6D9C3596F0DA18D4A9 +:10146000E99C66EE7D7DC1F7ADC9348D5F453B14C7 +:10147000E8B93162E169B78B48424178518FA7F0F2 +:101480007B3E1E6FE3635B9D710198FF9D5E073F8E +:101490000670FEA7619C849F83912A0DA602BCEC76 +:1014A00038FD7DF9AA5CBD835E1EDF68B4F9ACCC63 +:1014B00060689780065CBDCEC1EFA26998787E30E7 +:1014C0001ACF7BAFE5FB7785F92D757F2E5F96D61A +:1014D0004524660A910BF3D3866486E8D79A6CA0FC +:1014E000F9F40FB29FF443AFC78A4BB8FB6F04BA4D +:1014F000ABDCCEEE7B680ADAFD069D87B1C707EE4E +:10150000059DB7B3C73D607C11189F43FED8EF5BC4 +:10151000AC7561975F43B983FAB17AAA8AEB56D268 +:10152000BA49FFD6FDF6069ECF87F2A67AA0BC196F +:101530007C1D35DC5729E3FA8BD3B3B96AAA86F24E +:10154000AB3928B12CAE53298687C7C1DF4AF13C9D +:101550000C3444607C4AA549E7A7E43218B88E7E73 +:10156000656219F915AFF8D8F80AB447136C998376 +:101570007E5EC6CFD5A8E792952837BC8D4B495FD4 +:10158000A8D125A42FD68459BC10BDFFD9AB587261 +:1015900027F616F25DA071FF90F226B505E6BFC6EC +:1015A0002917B93E7EFF151FE90D3198F216DACFE3 +:1015B000901A17131FAB3807D3919E33899ECD27FE +:1015C000D62CA3FCF4577D14D7388AFBD93517A63F +:1015D000ABDCB895C625367E9D9EB97946E30EF9FB +:1015E000999F93C473D2E3917E9AC1F7D3CD449F60 +:1015F00058EC84B38DC389DF47F41A8C4E1F78B939 +:101600003F35C36B86D402FCD94F9F47D98B78DE18 +:10161000FB6C8869E8F71C7DF50AC263F509BE3EDC +:10162000EAC11F247AC13C7B8B31EF805525824E65 +:101630007E594E7C02F2939E018B6E3E2346E392CE +:10164000AB63B4EF065C41E3F2D770792E1BEC0A72 +:10165000E493FEEF35F09D21DF25EEC37DF9E664CE +:101660003B3D03D53DC437DEA0C57776FD2087A777 +:101670006A002F42E790DDF0340E2F506D52FB9040 +:1016800001F839D613E8E36948172908FD38E488DA +:1016900012E5741D8C5EC74E4C2CEA2D406FFB7911 +:1016A000AFA58736273B497E6CB0F4D0E60A93CECF +:1016B00049B4597AA6DDD2131D969CBE5DADB0E447 +:1016C000884679B91B99F5A7707EF55747F6D27908 +:1016D000089997A528E827DA8F4891F2F5B12C3DB3 +:1016E0003748FCFB861A3DD30CDFD33E93F48DC004 +:1016F0004CD7F98C7E39A7ED253D932EE6F536B013 +:101700002E7535962BACB294A1B2A69864C7FBE5B2 +:101710008C46653F2F0F06D75FBC5743B8DA30AB16 +:101720009DD0C5DB8D75C3492BBC9F8D5237EFD73C +:101730003F34BEB63E4E0FB3DAB1C3BCDD58379C62 +:10174000C1E6275005F3E1986F6F14E6C365E765BE +:10175000781E9EDEEEAA1732D2AEF2D157278EEA5D +:1017600075F473AC77DC907C710AF9C121B74FF93D +:10177000E2378367C99E6DAFAB6F990565395E2E01 +:1017800040B95C5BDC32FFB360A7362EA475B40CA5 +:10179000E506D9D1B7939C5BD6F15545877E967502 +:1017A0000AE4372D437940FC1A5750DFBC55913875 +:1017B000BB01E03CAAFA5DFA756930AED0BAC8D375 +:1017C000AF4B23F136A180FE59DA2EBBF4ABFD7E80 +:1017D00051E362EAAFBFDC318EF05964C9F345963C +:1017E0001C07C557DE00F3B75FF5111E271FDA5E31 +:1017F0008E7AE92D217DF33F627CF256BFEB3C9D52 +:10180000FDB4E3F351143EE8AF48F1E3787EFF64A2 +:1018100093D8B761CAE07096A2DE983610CE3E9596 +:10182000C35966E1077A378BF0DE5ADF7A90F2BC53 +:10183000A574F90DA087BFA5AAAEB8D62294AFC3F0 +:10184000FFF271EF56F979BFFD96FEB8D8F6F6F7BC +:10185000972CBAE5F6A5339F417BE12FE58B1D63FD +:10186000812F807EAFAADC9FFEB4F8C2968B4BCF4F +:101870002559E3D4DC3C44BD563E9E04784FCAD182 +:10188000DF7BEEF2913738E240C72C3ABD8C01D0B5 +:1018900002F4CF1FFF5BCBFD1E8C97BEF5DC5CDA3C +:1018A00047DEA1A46F4679B21CE9323C478F53A0B2 +:1018B0008F5A1CEB6D69C7578FD7625C6B7FF13015 +:1018C000C1C1CFB7EEDF32AF14C6B97457F1548C33 +:1018D000FB2CDF6FD1AFB3E9BE16975CB0E998FE81 +:1018E00013D2D1E353DDEBAB32DE56C87E5D5A1D19 +:1018F00057C402F6EB6074BCD582B7239CDE7C0033 +:10190000DABDC61EBC612DF2EB73738A7CD5397AC1 +:101910002D8A72BFFA35C6CFB79F023DE31CEFC9CF +:10192000CE71618CB7BC26713BFC64E7785E56AD26 +:10193000F22EF80ECFD7ACF3F127778DA772FE7A8F +:101940001C302F517B5E52F6FD0E6F66301EFF5B22 +:10195000AFD10C55D7A8F1721FFA79E12B97A31ECE +:101960005A7352D0D1CEDA119EF52FBA3EB85E5DD1 +:101970009FD405A77FEA1BC4DEAEF009AE7DEEE67C +:10198000E4FC83AE3C45C9A07D5C2908EF0BD8CFB1 +:1019900017DBCF953ECF27C26B521E5EA52BDC799D +:1019A000FFF9E700FC8623CF9FA19FE6F85E9183B5 +:1019B00043149B91BBE7C5D64FF8F7CE48B2BF2979 +:1019C0008E25F7162FC6785F5D659AF62DDF8F7826 +:1019D00074E73D0603E52CCB4AAEFD3435DBAFDFC3 +:1019E00030BE1119FABC4773B2619B944777C31993 +:1019F0003768BC791BCAA96311EB9C6150DBE33CDF +:101A00007F94C323E32A8B8D07B63AE3F6C5FDFB2B +:101A100029DDAEF8F1065FE645CC83FAFAFAA75A5B +:101A2000E49950B6F2CC9A7C3F6DC17CBB0DF63E7A +:101A30005AFD7DF6FE17433B77FDF4FA870AED83E6 +:101A4000D2C998E948852326F28F97F13CCEB0CED3 +:101A5000E3E47EA0750FF93F69BAF7215CCBE39D03 +:101A6000AD3EBE3E7CEA9B9477BEBED6538C72E9F7 +:101A7000EC18777DBB9E078C50CABBAB91281E68C3 +:101A8000D73FF2EADFB176C4CFE0E733999956C782 +:101A900041BD509D44710B705C79BE86941E328EA0 +:101AA0006ED6D4A51645789E1BED1B323385F724E0 +:101AB000C8BA447918529574C21BA6F8F7377D0549 +:101AC000F655EC7E06E71B8B2F2FB2DE3793FA56C6 +:101AD0008C93557605295EB7FF1581F6A1EF4B561D +:101AE000517E31F8133C2FF64646F6EAF072A3E237 +:101AF0003328477FCDE3E2E03854A0BF30EA958039 +:101B0000C6F575E28A6B434E3EE4F971C3E6F3FD18 +:101B100034F063D2A2E31CEB0D72BC1BE59110AE56 +:101B2000A53C5D5B1E0D5FC0F344868DD2A7E079B6 +:101B3000915501968DD54239A03F8EE72FFE73C394 +:101B40003D7383C037C3BC9CAF7EE07BB215F317F7 +:101B5000875DA2BF87F976376DEC9E1B81F10F1B65 +:101B6000A7DF89A9E71D4D8FCF9D3F33A70F36C152 +:101B7000FAC0F16D4CC6B7E1F88FF8789CE028F216 +:101B8000C108479E33AC93D7619D04A46E2A071AFF +:101B9000976EC3FC91EBC6C78FE3FCD8FB4FAC54E8 +:101BA000F3E0FCAC97D30D8B1CFB9F73454ED7F72E +:101BB000757DAFD7DE8BC0F9D6F83EC4FB3EC1B50C +:101BC000BEDA927C3FEA23B057E91C9F94A2787A50 +:101BD0000A08FB90C69B631CBE05FF81B16B2D9E5E +:101BE000AEABC1FB4A864DC17C2A453DDE89EBD3B5 +:101BF0006E9F3FEF6FF92ADCF149FDF0AE7EB982AE +:101C0000F78548F176A4EF49DF7BF57209DDCF4215 +:101C1000F47D7DFD1F69DDBEE5B3CF79C4285F4C3F +:101C20008E32F6E630927F59EF5402D35969CB3D9C +:101C30000FC61B3C27E4C917DE5793223D9D4EFB80 +:101C40007D5DF98D9CEF231FED7CDD815FA0C6F4E7 +:101C5000E07AAD94B8BD92D258EAAF2228BFB53D24 +:101C60004EB951EBE7F3D9929C4FFC6DBF7F538E79 +:101C70007FECA3FD379E4725C7176CC5F9DC985C40 +:101C80004EFCC0ACFD47DD92DB2ABBAE080FD4B4DE +:101C90002513C427EB93297AEA462A8BFB014CF3E0 +:101CA00018736AB16A47F618ED3F78FABC40375DA1 +:101CB000973E74EA8FFCBCCB90DF9D77D9928471FC +:101CC000527E7407FB690DDECBE2A1B88214E935C0 +:101CD000F93E34DF57A94C6B53AD33AC2E3CFBF3CC +:101CE00031C5A0C757C3F34987D33D0F3C4F341FBD +:101CF0001F9B1EF978E979788D6BDCD789FCFF0191 +:101D0000EB3081F2CCD3C1F9775C8A911C0C35EEB3 +:101D1000EC44FAF93A325995E6C18D0FC886B5629E +:101D200084AE40A27BCEC6351E2078EA2B9F7B0E68 +:101D3000CF37861A1FA0F6F9F8C1C8A96CE7DDE90C +:101D4000B3789EE060F58E2D1949F54E8F37AFF0D0 +:101D5000C3FC5E8589F323709D7776225DF725337A +:101D60009D7CBDF3791EA76BB42E2B2B5906E34E39 +:101D7000475FDD9EBD07CA7B603EF19CABB420404F +:101D8000DFF769FCFC7623D37E86F79020E3D1BE93 +:101D90007C9AE333808F2B011F871DF1D77E6EA7BE +:101DA000EC4FB653BF0B2CBCF627D39CDFC45D644D +:101DB0000F7CA0B3C470B05B1FAA499B3F057A5546 +:101DC000C0FC33475CA972BAE1413D2475F0FBDCED +:101DD000F2FBB1F9C1B637A496740AE1308033A79B +:101DE000C4912F9CD72E7FFEE338FF9731473EF0FA +:101DF00039CA4FFAA0859F07668DF03703EF27B4E5 +:101E0000DAE48DDF9E77BB0C7E7851EF10EBBE2DB0 +:101E1000D949764A4B3243CFB6E85ED5CABBC8A093 +:101E20001E54AAF83A5D57B688F9306E126526A29C +:101E3000E52D4B37915F84FBB1656042B424527845 +:101E40003E98996A1FDE6FE24D9B2AEEDF7AAB3C2B +:101E500006A6A04B5A2FAD1FBBBE54F58B2382BDE7 +:101E60009F3B0BE733361FEB4B567DEF98EB280E6D +:101E70005DC4D43EDC676D8B5E43F0559397E534CB +:101E8000C85D94E335CC409AA71897C3EADD1AE5FC +:101E9000F7875A123D58662B781C2CC5383E97D4CC +:101EA000C37728875B78992DE17130F8AE61FD31F9 +:101EB000EDBC7D510BE083F876D8DF397EA367F166 +:101EC000EFC52DB118F60FEE17C12FD6EE32EBA8E5 +:101ED0005E5AC0FCBCB12DCCC4FDA914D304CC17F0 +:101EE0001ED7C2F77153AC8F61B9D2FADE923C4C67 +:101EF000EB22C5120CDBB526BBA86CEBC936F52866 +:101F0000AD4FC5F7CFB46EEDF5B427D94DF5DAACCA +:101F1000FD7659E3F0032DBD94DF77C8E2FBFCE7C3 +:101F2000F8E969CA4F1C8B1147B409D17FC478996D +:101F3000C9287E80F610FA71A3E13B9D0318C0E723 +:101F40007CBD97C31FF2A7CD5F76BCE7D8892B5C19 +:101F5000FCC674E02F679EFFDDC067CEF3DD7775AA +:101F6000B9CB2BBADDE52587DDE5FAAC1BDEACE7A6 +:101F7000DCDFCB7A5CDF6D3C3A939D5BEBC763FCA7 +:101F800091C7EF3B476825180FDB629D5B6DC378F7 +:101F90003EE5A1A4E9FB462BCEBA29D948E51D1898 +:101FA000BF25FDC3E3AE5AE3BEADF5C3311EBB9CF6 +:101FB000CABB930D04FF658BCE603FBE8C72D09C74 +:101FC0009512F05CB937CA886FE4252611BFD3D7C4 +:101FD000DB807E79F9AC38F338E8F5B69FDB239ADD +:101FE0001D8F9198E0CCF77CDBD2AB367F98637A7B +:101FF000EA705F1DF42FD91FA90ABBAC4FC5F25B75 +:1020000016BC3765F36DFF741C772FC559310F016E +:10201000FDF1D2153AF9F5816AB0E7A1ECABD249EE +:10202000BF856AB202EE6769E06FE038472F77C775 +:1020300087FD95EDAE7267311F4F99155751305E90 +:1020400003ED66A8B3FF84745815E0764B73686996 +:1020500009CA972FF8621F233E675FDD4E76C6AA36 +:1020600000B3F2E699EBDE4EB0F3C48023CF488E86 +:10207000E4E71955179D74F89B3706DCF65CB365E9 +:10208000CF6DC0FC2299CE3FFC0EF54CEA79B160D1 +:102090007CCD7EB626C11E72D82DB2E6393102E45F +:1020A000E1062BFF7A7F244EFA8979B49F07AE822E +:1020B000F14AEC9808769892F664473AEC6B3C3D0E +:1020C000BB7C183D9F13C13E13157E2F8682F6966A +:1020D000837E17CE7BD25C7984B226A5468573F9C0 +:1020E000E0729572627818EFEB62090E1FEA3BF41A +:1020F000CA60F6680E3ED8A130DEEB029C7FFD235D +:10210000F9FEFA443C01837A383D61AF331FFABAD5 +:1021100000F7E7F7755CC80F66D67977959EED787E +:102120001EDE715EA7DDCA53DA5EF49FEC84631E87 +:10213000BF18E07C5ED42B909C0C7EB537E13CA7A9 +:10214000617FFFA235DF28192291DCFDAEFDF72467 +:10215000E4FB7769E584C8FDBB2F060AF877FB65C9 +:10216000E367E4876DF230CCC3DDBFD043F8F92FCD +:102170006D883AE33F35169D2E445725027475CC81 +:10218000B3BD0E1EFCC66DB40EEE5062B7201E4DE0 +:10219000550D75720DEDD3907ECA5F2FAF87CC457C +:1021A00058CF5E277706CD258102EB6AD85F2FC80E +:1021B000B6A03F62E5679A0D0956C81FB6F3DF80E7 +:1021C0000EAB381DF2CF27F4DF2BFD55FAFE8AD770 +:1021D0007DAFB495BF3A6C784F748A63FCDB2DBA3F +:1021E0006CB2F35B991587B1F296E80FE335581E90 +:1021F0008BF79BF03C8961A38CB5747E566489A7EC +:10220000E039AA0354223CF77C45B1CE73C6CCE535 +:1022100030AEFB7F5AC56CBF9DEE51C6F36A548E3B +:10222000994B51CEC6833A7E5751AF8DC37DE96E2F +:102230007A06590F3DC3A07FF1A9815EA6FBBB734F +:10224000F773A6919E2BD4F8257895DBE931F16FD1 +:1022500023CEDB2C7AD7FBCC6FE27747FD6DAEFA4D +:1022600032AFDF279ADBF1FD9F45B333407C59F84D +:102270005CDB60FC72A477B18AF3777F2ACC508E46 +:10228000B72DF15460F9FDBB14DA37D6CA5909E607 +:10229000C9B525142018F9879FC1FB34522BF87952 +:1022A000AEE51FF0EF509BF8E8F1642FE5ADEF2E9F +:1022B00061A609F42A315986519C891D4139A880AB +:1022C000BD8DF49A7AACD79537A52CE1F6B562E6C8 +:1022D000E97FC361FFC3FCED14BA6F4065F5CF81A0 +:1022E000DEB912DE2FE1EB7E09CB27027FE0E5E2CB +:1022F000EE1B307E7036F0E15C3C8FB74BC8527DF0 +:102300007F509887DF77F9B254BF34E8E3E5E22CD9 +:10231000D56FF716CFC378C1EE7BB87CD87DE4A526 +:1023200012B24B56C4873BEF191E9DFDFE1125824C +:10233000EF8DA77D0E79FE83804E741EBDA2BB0E6D +:10234000F5DCE84A63024EC3E8AA0C9B53FDA9C022 +:1023500025FB757419C08557A3F5D4A7061753AA92 +:1023600047BF60E1DB638A9F165CBC677CF4331671 +:10237000BEA0EE3F25B84DE8EF8EEEB4E0EE4A7811 +:102380003E25B802B54B59705BB48270CB1BDD7033 +:10239000A704759227E5D9B768DECB2B8D1978078E +:1023A0007339CCFBE2E0276A4FF35B5E06EDE15543 +:1023B00039CCEF276D8FF358FE82D53FCCE3276DE4 +:1023C0008FF355FE8CD53FCCD7276C4FF352DE6987 +:1023D000B58779B998F6D08EE85E9EB2DA01DDB1A4 +:1023E0005D54E3F6E8917FF87589D3DEB2F7117793 +:1023F0000985CF6DC7825C1FE4FA7D4B9810C27EC1 +:102400007B85A574DE681BC7376D7AE6E1F78FB967 +:10241000DED8DDD42DCCA8463E795E9800F5E606E0 +:10242000452BDE9FA1FA65891E01F3F5C7DC17F382 +:1024300098C4173C8F7EB7F0F3123AAAB9243EBC79 +:10244000C931AE92ECFDD46FC992B4B0149F4183F0 +:10245000CD0BF2F7E34239B8F87D317ED74C362701 +:1024600058006FC07329E9B5363EAE7E7C7B095FAC +:10247000A4DF8490635C80DFD2E040FCF01E65271F +:102480007E4AF65686ED14C08BC3E7F8E07BC44F56 +:10249000017C160707D71F477B45B2D35ACB785C20 +:1024A000A8B5F7AB59CCBB69ED10748C27368F5C9F +:1024B0009DC5FB5EDEA72B68414FDECDF39FBDC1FE +:1024C000BBBFC826E7FAEB9FD7327D97CBCF8A42B6 +:1024D00005C73ECB16FC4F09D9E76B82D307B7CFB0 +:1024E00059FD54AA37170D0BDAE79840FB1C886F8B +:1024F0000ACA07CBF4BD589E2BDE4DF1BCEF6863D2 +:10250000A77A1DF7216F42FB9DFC2F7E3EE0C1A400 +:102510004ECF83BD4FFAF9FD8C1205A93AAD7CD39D +:10252000E5756BB7617EFEA48C7DCF7FC7C8F15087 +:10253000EFE147385DF6268D5D3C6FAD8A9EF7264C +:10254000619C722E4EBC2FCAEBCD155798B8FE1E5B +:10255000B3E2664A995B0F7AD972DACCF1BEB28CDB +:10256000F96B281E6C0CAFC576B3BE807875005E23 +:1025700038AEA896DA361EFD840E7EAFC55CF10536 +:10258000BF330F6208B85927DC87D58486F1EFE5A1 +:102590000BF77A0AE5B50F0507E382369CC782166A +:1025A0009C5B4F7E523829BF034E87067086B27BF4 +:1025B000CBF2E306CB53484F2FC615809EC7F17E62 +:1025C000C1E90497F8A225C61E1741DF3F12610634 +:1025D000DECBE12D094E49B18B878F34C57531575C +:1025E0007C67DB4AE8E73B87F83D20501EB90AE7E5 +:1025F00035C3E7B5BF3D54FFF2D421C74BF36F8F0E +:10260000F73B514EB78B1F6F239D3FF05A71D67D1C +:1026100065BC3DB3E2848AB58E940C8F272A181FBF +:102620009C5C00CE27BC4FE0CDA03B7E087C6DE0DB +:10263000BDC3EFFF52A47C355B8EE7C3B1E386EBED +:102640002D7F799DB5DE9E047F0DD7C77793517A94 +:102650001EB0D65F265945E5B341EE7FED4F1AF423 +:10266000BE39594BEFEB7A9BBCE5308F5DCFF37EE3 +:102670004B58AAB41CD7C16185E1BE4C5771B694C2 +:1026800092A2D55429E6316D44FFD3E1DF6E9CB4AC +:10269000AD14FD9083B2F16FB8CF986A0AEB0FC109 +:1026A000F3C8E3A76EC4FB7C1E3DA8D0DD1F8F6D71 +:1026B000FA75E93770BE9FE2141D1EE27E6913961B +:1026C00071DE27F1793F72E27BA9DB705D0A8CEE47 +:1026D00051DC37E538FD2ECDB1294FEB43C54777A7 +:1026E00006E2C34330BEC023DC6F0C5433FADD82F4 +:1026F0008B877F9CF2223B42DDFA50EB05FAD10B2F +:10270000F573E4043F07D63189F373A08B9F97DB01 +:1027100037E54029F2C5B183C7297FBEA3E482F023 +:10272000AB8782FFB0358E7D074FED6846393C4957 +:10273000C1BB07D8B1470FDC88765007D01FCFC97F +:10274000747CA677C76D500E4CF6B342EB13FA9922 +:102750001972E8A75C3F6FEC68C3F6D6BCC1B22A19 +:10276000C5FB560286427131980717FD3AC677EFCE +:1027700040B915581BD6514F3CF6E8D3A585CE2B52 +:10278000407F9FC3FE2E44B77D081FF906E063FC1F +:10279000F8D853074A916E0F4FBA20DDAE2D04FFD3 +:1027A00011395B8AEBF9913DD6B919A97D6425FAF7 +:1027B000A387CDFDFC9E8538E933599B5D43FE6AB6 +:1027C000889F4B98ACC6480E5E0A0448631C3BEADF +:1027D000DE4F51A406923FFECABCF7AFFC5DCAA90A +:1027E0000FF2DB5DAA82430CFD8D8BF2FB2272FDA2 +:1027F00073FF4E2D73D71FA7C6B268E755211EC6BB +:10280000E078D4BCE09647800773EA81FC7655886F +:1028100007C0AD1E040FE31937BCA81663F83B22AE +:10282000C8104F15A047B535AEC9517E2E7A62A7A4 +:10283000BBFDE6D030A22BD227E0C40BCC822FD335 +:10284000BE2897ABF9702B526E3807425C7FAC7C88 +:10285000EB7ABEBF1663DD180F1F8C2EF9EDA17F3A +:10286000A2E76074B1E5BE6D3F8DB3C655658D4B73 +:10287000CEC45DFB99E3D36EF8838D430AFEFFE976 +:102880008BC7426E7DF1017B86F68D1FBCE7691315 +:10289000E5AC64C5910235FC5C6EE0EE0D8487AD5D +:1028A0002F02D53C4FE068EF6B7E94738FF58E2B33 +:1028B00078EFF7E260FC59A75C605AD4B5EF6DE29F +:1028C000F9964978BF954A71A6402DEF0FDA1DA5FC +:1028D000F567F56BF797B2EB2FB7EA2FEFAFFF7CF9 +:1028E000A1FAC7D03E26FB93CB03B151D985FB2972 +:1028F000A882F05CFD0C6FBCC7899F18E7E774ECF9 +:10290000BC8C0E2B2F03F32FC6E13CD9F917F5FC35 +:10291000DCF9F0B189CB0D8AD7F3FC0B3BEF62F009 +:102920007B6A32FC3E11CCBB0078674F083A9E2789 +:1029300011C28D137BAB7370079BC7FE7CEBDE6906 +:1029400059BABF202B52FEF97AFCE4C8A38371FD6B +:1029500021347DF071B5E6C6B5B0C231AEFCF1D818 +:10296000EDF37F57253F9F243F8F8449FC7C8D4D9D +:102970006FB4B3310ED5AA717D83BFDF877128D1C3 +:10298000920F73C59B54A4C73A4DA23B56577EACD9 +:10299000903D2883FD82F12C31C2EDA5FEF1686ED9 +:1029A000FE97E812388C5772BB6B9D6492DD254B05 +:1029B000093A6F2996F1B816F81B2AFDEE90966F2A +:1029C000B7D5F3FB12ECF6AAE9B2DBECFBAB57CAC6 +:1029D0006BF8B82C78A2B53EF3E1E5AFB7B2F0D012 +:1029E000F699CEE205E3B5EB2C3FA8D9DAC7B0D70C +:1029F0005F0BDA67E3697F89F6FFC428DF5794AC81 +:102A0000F27F84789C3CFFC92A2F8EBFB604C20A8D +:102A1000D2697B207C1C497BB2C94BF37A22CFDF81 +:102A20003F02E61EF26DEFFA8974AEF0E87A6F1895 +:102A3000DBB5DD3D2EECB4AF7ADBC70D795FD5EFAA +:102A4000ACFDE8FA30C7734158273CE21253901F9F +:102A5000E377DFBFCDB9AF11BF9BEF0FC0C4CF434A +:102A6000BEF95D539DECCC43B1F3D6EC727EFB5CBA +:102A7000FE6CDF187EFF231FB77D7E7951AD35E1F7 +:102A80004CFF2BB4676F8D8A147F5EFDD4EEE37824 +:102A9000FE75F54CAF86FEF4D5E71E3CFE6C04CF08 +:102AA00063F17B8D01EE713CFFBAA421C0F8EFFB0E +:102AB000C4C238AFA79987F2494FB35F84A739E8FA +:102AC000725B989F4761ED32E539A6E07F2817BF1A +:102AD00092965D7991CB3ADDE5A5EC9A91787E6787 +:102AE000E97D32CB08981FEBBE1FF9C630DF1F58B7 +:102AF000C6126DC8C7AD965F7EC7F72629B8BF7EE0 +:102B0000EB34AD429C92C363B545F7B781DF74AF38 +:102B100003BF6046C138CB6B87A65D7F15433899EC +:102B2000B652B4CB8B59C17DB4C5ED6E3C2F348EFB +:102B30007CBCED3CC8C1F090BA781E727EBFA9B0D3 +:102B40003BCFF462EF01CD209F111FB8EF01BDD83C +:102B5000F6FB2D3EFD4BDB770DD27E5D2411C37D50 +:102B60000AFBFE29458DD13E8A20F17D9A75D10B55 +:102B70007C2F83EFE210DF2B876E8FE78AF1BE4058 +:102B80001351A2FB5FB93E3B9AE4E7EC9BE5D8DF2B +:102B9000D079AF5F89B45FD65CCC8ED13D9D82A0E9 +:102BA000A39F676A5F2A423E337F29463C15D6526F +:102BB000C2FAA1F9749EFCC9B06CE5C1F78808D7C8 +:102BC000FCA3564FBF67271B51FCBD3FF11B7CBFC9 +:102BD000B4EE8F06E995CF061B64943FFFF4C8342A +:102BE000BABFEBB6E03C09CB3F0A73FBFAF4C38FE4 +:102BF000CF60784FC9A3219625B99051D01EB9ED69 +:102C0000904872E2F6EF8628DFE7B627EED8B700E5 +:102C1000FA17BE17E2BFD7F9C4B2033CFFB699DF7B +:102C20001BF5F4B5FF9AB2C68529DECD4D563C2B77 +:102C30006544511FDEE165B7E03EBA4D079BFFE6F4 +:102C400004EB24BC87E2B6AE62DA47EFE75B09EA41 +:102C500057E3E97276CB3505ECA3D7C23C4EFA4E6A +:102C600048A17B5385AE2337D3F8BAFF8EC62BC05D +:102C70008CFC1EFA7BD11A27D4A371A40E0A99F1F9 +:102C8000F0FD9D83021F57F7A43D9862785BD71E25 +:102C90006511C521791CCDC6774E575D0BAEDB396A +:102CA0005AF158BC0760CE771F25397DFB773F6E00 +:102CB000BB12DEDF2EB2BE0520AF56758994F753E6 +:102CC0001F14F37EE782DFFFBE924422D47FF28D91 +:102CD000792F43BBB7412E626AE2DB3DBF577E8846 +:102CE000E57830817271D561F73A5FD5F59A82E364 +:102CF000C2BC9F321024577FE4CEFBCEAFFF013B16 +:102D0000A7E03EE1AAEEF5943FB5EAD0E97FC3F52E +:102D1000B22A4F5EBC8DFF2819A86FFD45F9F6ED6C +:102D20000B33286FB36B7841FDD79FC767C98FDB23 +:102D30001FFDE001FCDDC0779EF8C30329A0E78AF0 +:102D4000FFFCF707BE8E76D28F7C1ACABD550FFFE7 +:102D5000FE817F84F19E3EECF5209F9C79F6DB0797 +:102D60007640F9CC4B13A70A50AE2CE2F2E8CCE344 +:102D70007F1AA9039CBB9E9D3B0AF9F1AEA7E68C86 +:102D80001A4A0F9E01BECA38F8CAB617F5C3006FBB +:102D900014149FB19E79F3F1CEE36715CC07FE5072 +:102DA000607D28D757767FACE03EC87193F5217DD2 +:102DB0008E1E7AED389E0B3A0DF3E32D303F30EE48 +:102DC000D11EFA1D94EC68BCB761E5A16BFFE6B3B8 +:102DD00035F8940D1DE787F5911E1930AFBF847942 +:102DE000ADC9CDEBA0F3F8C87AB2935675C33C4E8B +:102DF0001E388FA7F11F3307CEE39C22775EE407CE +:102E00006CC5833BF0E3A1C2F730D8F378C7537F9A +:102E10003BA43F74266FFD0E46E7E502C74B2B32FD +:102E2000AF2D9A8EFC104845699EBD9905F0ED4C7A +:102E3000EBBF976392E59B72DFCD4887BE67BD1AF3 +:102E40009E8F5FF8EC6FE8FEB6334FFD5CD149AE64 +:102E5000B3B000F2F40CEBFFFB05C6D5575AB9C965 +:102E6000ABF687B29877B7F2EE8FE6FD5B0DCE1B1F +:102E7000FF5D9A95992FCDD7F11ECBCC081AEFCADA +:102E80000C5F0F2B3347AE433B359FDE1B8AEC7341 +:102E9000D7B9F9C47B8B571E3A310FF96EB079B4AC +:102EA000C7ADE1B8AF80EFA9DFBBD6EB407EE953F9 +:102EB000506EAFB2ECDF337BCE1E5F07F5B33F54ED +:102EC00034CF959827D0A7909DF0B8A8E1BDBCF964 +:102ED000F38DFE2AE655E49F7BB09FF97CD0529497 +:102EE0009F1FC9FD5D9B2E175ACF171ECF27A3D753 +:102EF0005D453AC1CDA75B53AB97E4F16FA778C9A5 +:102F0000CF3921EBDBD740BF7DCFCB6C2F34B979E4 +:102F1000EA1BB25EC0CEFF5D9EBD734BA3D0360AE6 +:102F2000DADD922AB6F28E3379F6ACC874077D5694 +:102F30007AFB7E4B79993FF631DC6F107FE41310FA +:102F40008F550FC8E4F7AEF2F37BFFDED8EDA3F8A0 +:102F5000CCF6279337A33C7BF7012FC5E5963DF0D0 +:102F60003DA2CF523040F0DCFAD1A7D67C88F2FCEB +:102F7000CC8322FE560A5B16E8A675BE6CB196009D +:102F80005DCFDEFDFEF90358FFD64702FCBCF753C8 +:102F9000CB6E467D7F66A757C0FECEFCF83704FF98 +:102FA000CC8F436405FFE1E9EF4D76C607C00ED430 +:102FB0009DF18C5B9DF7C7933E76DF277F7BF7A65D +:102FC0001EE4FBDBF13D6FC77FDF06FF66E07B465B +:102FD00076CAED878B4CF4131DF508DE2A6FDFD718 +:102FE0000CBE8F56EA21DB3E5B8AF37D7B971B8FFD +:102FF0009F15717DBC4AE95BCAEBA74B395FF45062 +:10300000BBDF5872DDFE9EDFDEAEFFABA2B1797092 +:1030100078FB955E7EAF65FEFC9FB4E0DEDEF5F1E9 +:10302000C442E7DF06F6C3DFFF83C0E8DE2AF6B856 +:103030008FEE475FA16427E0BD84F03E86768B5D0E +:103040002EB5FAC532DA573FB4F27456F879F969F9 +:103050002B9F6C4518CA88AFDA7B06E7F78EEFF92D +:10306000E8F7B0EF78FA371FBE0CE57790E630A3AB +:10307000EF8CE8F9F0EBC00FEFEC16F12C00D8194B +:10308000D9F29D28FF1EF7B2BD50E51D395BEEBC9D +:103090001FF18E677C279CF1823BBABD79BF779088 +:1030A000B2CEAD35509EFFFF03A4CE4DAA008000E6 +:1030B000000000001F8B080000000000000BED7DE9 +:1030C00009741CD595E8ABEA5D6AA9ABA556AB5B64 +:1030D00096E4D262213B5E5AB20C7622A0248C91F7 +:1030E000C1402364221143DAB20039114CE361116B +:1030F0000344A5C59BF0D25EB4D8F2D2B631316399 +:103100003B9119F03809996981212661660421C42F +:10311000244064431826038C70C0E6FF4F867FEF7F +:103120007D5552754BB20D99F97366CED7399CC750 +:10313000EB7AF5EADEFBEEFEEE7BEE680975BF3B4F +:103140008531130BEF1EF230C65433DB0FAD99857A +:10315000BFCFFB9912F6D54A785E06ADD52EB507DE +:1031600018EB494E650CFACD6FA6446D026385924B +:103170009BB10C18CFC2B38233185BD952B5E55D51 +:103180000B74ED2A93BC381FFCC9D89ADF1B2A6642 +:10319000EC7F43F78B3CF80FFFAE64CC6A094981A2 +:1031A000E9D00A2CD8EF64CC620EADC983F92D3E6C +:1031B0004F890A6357F9AA1501E058375D2A314152 +:1031C0003F5F12199BC3980DE66705F0C3F1AD0C84 +:1031D000BF6BCF369F19B233FAFB02FE7334FC8209 +:1031E00031784F52D8F0463FFC5068789ECF9873A4 +:1031F0003AF48B47C75B3D00B7A10F23A4F7BEA6E7 +:10320000F5E1C33F1102BEB34887569BB41FDA3ABB +:1032100016B1E0FCCC54FCF146C0A367D917454376 +:1032200080479D79AB4581E7D255D33FDE3879148D +:10323000CFBA67570F0AA9D8FA97B199D03A8B7EBF +:103240008F2D63017B128C7F5E60FD9DD0CEB7FF1A +:10325000B1EFDDD9D0B7B05AA4C771ECA78FCE7348 +:103260001C7F87EFB433567504BF678F58EE85F621 +:1032700027DAF859CF066FBE1EE0BAAD714A29D2DF +:103280006B7A7FF0BA19D05FD258506A8275A892D3 +:1032900004A2DF714B7FC6345C5FF82EE2733B1BE8 +:1032A000B6203D434CB2125D5994C6D5B380D66763 +:1032B00044CFDF3659F676E68D7D7F492CBAF87A11 +:1032C0001872DBF1E8F5B01CECF613C32F00382CB4 +:1032D000D42F2D486686F98E055E4C6663E703FAA7 +:1032E000F60E8D475F4126FA06CC76938ABFDF3112 +:1032F000654FA7304A8F11FAA69CBC95217D538A51 +:103300008E639BF85C6F753812D7E3137C047C5294 +:103310002D290D12F07389A4DC21C1B826FB70AEF3 +:1033200019F8E509576839FE7E8F2934D90BF4F86E +:103330003027744906D265101667DEF9BEA76AF217 +:10334000A18A31C0E78D064B14E16F4BBEA217E591 +:10335000EC64BB4D32015E7FC42130CFADAC9FD653 +:10336000E18DD4EE1CC4BF12044B98870F23B7C560 +:1033700090CE2C35D00972781B1BB280F0B26F034F +:10338000EB62BB94C9D42E630AADD71D2CB68A0953 +:1033900004B78A78E870B3ECC15C9417F6723AE12E +:1033A0007B21B8DF6D89F4A13CEBBFBF20851EC334 +:1033B000F91A40B0AF2885EF4436F519E5461FD716 +:1033C000AEF129B32B97DE94823A605685F352C64C +:1033D0007A357D50769948F3FB62F653C2CCB1F34F +:1033E000B0D07C65443EF371D944E6047DE2D35805 +:1033F000477F2F719CFE7D5FF355EC9DD908AFB2DE +:103400000BE14D842B11DF2735BD528FEF19E4AD51 +:103410003E245B65185FFFB94BC1F7CA2EB3D0B825 +:103420009D12A39631E545D487F52116EE2CC16592 +:10343000EA51104F1DCE44BCEAB7AE16D6215F2B21 +:10344000F6C014E9ABE3F963C94CF4D3E165FD2F91 +:1034500056D82FBDF07B4CB1B08B19577619C72FBA +:10346000006441FCD8AD49D1FD79F8BD76FADE5A49 +:10347000D087C86F89743C6D95678A805F77913774 +:10348000AF0DC683F60821DD4E27C933CDC6DFD385 +:10349000B4DFDBE499A8DFD7D665D1EFFA3C6B0542 +:1034A000AECF7479ED1659E353D837077CD5C0BF3A +:1034B0000D1F4DDFD50C7029EDA932CB853E7E075F +:1034C0009F7BD4D33F80F91ABC2CBF13E8DB6C661A +:1034D000B46E30B2A81AF8F05F5A0EEC40BBD7D0E9 +:1034E000794D1183DF974BFC79F39A6B8AEA0DDFF4 +:1034F000D3E1F8C9667F25EA89669800E73F6D7FCA +:10350000BE17F573BDE317BD46BD7C3A85F3D5B94B +:10351000B7AEF14E2379968EA05CEBCF3FD7F8ABD8 +:1035200001ED1CEAEB4AF6EDEAE9088FB46DFE14F2 +:10353000C44B29EA04B84FB7CEC8473BD0D0B9BA7C +:10354000320BDAD3827CC401F25EFCF891AFE13A2F +:10355000382550E020B7A7F73FC69FCF91F3C400AE +:103560008E63B5489FE2C75F51DC338D7A2742DF17 +:103570006D1FA127FFDD0EAD88EB5ACC02FBA149E0 +:10358000BFE144EE528067A3A6075D6E2E9FE9332C +:10359000455AA72D407F6C3FD0E649769BE8B93E5F +:1035A000CEE516A8CDB6845C6E68152570AA03F02A +:1035B000B1F958A013A6B43085ECF5166BB00EF532 +:1035C000DA87476C32AEF75A61B0F261D4FBBF4A7A +:1035D00062FB010FC7E44111FB1FED34B13658BF48 +:1035E0008A5B1BFD02F49B9EB6056C7908E7C93621 +:1035F0007C5E2C32D904E367B8F308BF22355C89BE +:10360000E6FDC3239BB242005F3AC8D020AEBB792F +:103610002815D779AAFD442AEABD8FFAAF7231E79F +:10362000F9F49EC8545D0ED080B224A6DA8DFDB4A4 +:10363000847E56C2F8FCB8E787DBFA2B10FEAE3466 +:1036400016D80BFA6192735040FC33E19D56D0EBD3 +:103650003E737F05F67D8DB0466E54E631EADBEDB4 +:103660004C6A8575C861F01CD7BD99492A8CDF2743 +:10367000F657A1DC298837D059320F2F6C13509E92 +:103680008FF17900C0F61223FE831AFEEFA70681A0 +:10369000FF3F3C365BC2FEF343EF8471DE0F8ED9F1 +:1036A00064A4AB2337FCB31C0F814FFCB0C13A4874 +:1036B00074FEF0A6245A870F869EAF7C189E7FF476 +:1036C000AC0D8417FC8A5A0E17BB057801FD2B162A +:1036D0006BB3C0F303B0AE689F0EE770BDF1C121BC +:1036E000318AEBFC51FF2F45EC4F753389B971FCE2 +:1036F000A088F036D53289F4A679B00DF9B1696B9E +:103700002943B99DF1E6F20FD18E37B1987512C2F7 +:10371000253B03FB6580333F965B3A1D5785CBE322 +:1037200007471EFC36CEBBE6A8906F82EF543C7D67 +:10373000EFEF1E85FE3DFD79A500296BD2F8F29CC6 +:103740003BCC709EBB55176B83F69E6C4EE7243BBB +:103750008727E96981A11EBAE7505214ED262B4F45 +:10376000237B3CFF9810BB12F1586F8D229D3E28A1 +:1037700061B12B61DCEAB5495115FAABFF14F505CF +:10378000A78FCA5961B13526A622FEAAEB0A5CF7BB +:10379000574C81BD00F724738CE825828385EBBEEE +:1037A0006FF1F43F34C8A37C176D39B6A3630AB137 +:1037B0004D16EAB791DF2DE012003D1FDA74A2CA60 +:1037C00003748E3A60C4D761FDDC9FAC5111FF6772 +:1037D000C0459A05AD6E6F8B63A93719DE6FD3F0C4 +:1037E000D7FB1F38B4718531E20758B754FCDE3976 +:1037F0000B5FAF7B9EB6D37A551C1B48FD06F4EFDA +:103800005E670F201DCFBDF5332BCAD53DFD82C8A5 +:103810005CF0FBB13D0CE5E89C7BD01A7422FD0600 +:10382000ACC857F3FB5FC91D32C8D787EB4FE4E242 +:10383000EF47DD32D1E703A49773944E6BAD83223B +:10384000DA0BF528F01DD277CA6FEA915E51D4D316 +:1038500000D3936E37B7B3E6582EE2B5D6AAE92166 +:103860000D0F59E27CF07DB785F0DCA7E9A33D6E32 +:10387000EEE7823EDAE38656990E0AAF8CF45114D5 +:10388000FD4D4B61953AC4707E89EB497B2C17E95D +:1038900001E3BFCFC7471AF71AF597361EE845FE72 +:1038A000D3083D35FE2BF8B12013FF1DE3FC7777DD +:1038B000BF4074FBAAF44AA45361CD065B2EC0F34B +:1038C00029CCDB09F49971F4802F348E1E6BFCCC6B +:1038D000C462B30D7D8D3E9543AFE4E7A25E3D9C8F +:1038E0004572F1D1A9815C017E7F5FA3D73FBBB94F +:1038F000BD87F5A844B9506F606C3FCAA533908F5F +:10390000FE9B3EDF6B1A3FE9EB00CA207FF10CE320 +:1039100073EE1FAD4DD29E174FF07E2A3C477B546D +:1039200098F89CC373EE2D4ED7BB8B19D1B5B0E67A +:10393000A30528BF9F82FCA29DAC28E6EBD3F434FC +:10394000E7CF26A42FDA5F77CC8AF2A8D321A9FF8C +:1039500014A7F331A033FE2E0DBEBD06F556BF8D64 +:10396000A19EFBE04F2AD1B5F37052691BD0B57907 +:10397000A8A2AD1EE7652C88F645A74FE5D01E1F0F +:10398000BEDF79E4C8345CC7AD9A1DCC36C75A9106 +:103990005EA25D76A3BEAEB7B130FEBE05701A243E +:1039A0007F45217B634BE3F67F4AEF7D271A508FDB +:1039B000B21409EDFCEA63268A83CE1C12A20CF035 +:1039C000F4DC54F6860B7EFFD76C2BE1BDE5D148C5 +:1039D00008F555D2A1E400C2B7FA5146E3D53D42FD +:1039E000743F90726B0BF42F81E731875D41FD9638 +:1039F0000D2A02DEBB3B38B8C002F3786A42B3310D +:103A0000EE430771273C97434E09F56B465044DB64 +:103A1000CFED14FC97C7A2143FD41485AC6900E71E +:103A200072A6DEFE1CCCBFE5FA077C21C07B0AA88B +:103A300043A4C3AAEB6F695B88F03F63227DF8D192 +:103A400033B3DFB0215FC13AA1DE4C8ACD23F893B6 +:103A5000007E87C19FFBE858812B348EDFADB73ADB +:103A60001E841FE8B78CCDC92FA17EF3A571F94C38 +:103A70000A062B14D4FB35D0921F13F691FE328721 +:103A80007DD506FE592D70BDA094C9C786487EA578 +:103A90001294DF2DD7171D3D097D8B2495203DF213 +:103AA000D344CD5F51F211DF680B1B46FDFB871637 +:103AB0003BB5EFB748C31D96513E17EDFD0B90EE99 +:103AC000794D92600259F9AE9975D820FE294B13B1 +:103AD00034B9891F2737062DDAB81A5B1A8EE3FA34 +:103AE00049970B7DDC77C2305F098D3BCEC7713EB5 +:103AF000D1ED4F9E0A7019F21ADF3DE018EE30AC9E +:103B0000DBF2A83BAE3FE2F769EF5F302E057DC8E0 +:103B1000201E70F029300F43FE5FCD94D03548173A +:103B20005B71C48AE6BD71ABBB5204BA5D6D5AE4E9 +:103B30004239B031EE3727CEBB05D611E9B7B6C54D +:103B40004E6D578BC4908ED1161FF537B4C8D40F65 +:103B5000A5713DE015791CD0ADAD5B97D67E53A322 +:103B600083DEEAE371C5ADC05F66E0738CA3010C30 +:103B70007525E68B8021D0EF30D7AE1A3481FF6BEC +:103B8000AEB19EC216F479280DDE334B211622BE4B +:103B90005118B77BC39437AAB3861AF0B9ABD0AE2D +:103BA000E27857F930D9B9DD56AE9F3ED2F22A3AC3 +:103BB0007E4D1A1C4D1AFF30B46B44470FD1DB9673 +:103BC000AD32E473BDCFCC21B22BE7A1FF9000F45E +:103BD000778DA5FF83248791D605487F57B9242286 +:103BE0005C579B9C64A73F890A947F9B687D75FA0C +:103BF000EBEBD158C822A6545C8F10F5A32D8DB4E1 +:103C00000E1B5AC2D4D659831DF8BDC6E8C7E7C5F6 +:103C10007FADC6EF1BF4F5B8583CDDC148DA1CDEB9 +:103C2000C7711E36AC623CE0997B5641FD96279BDE +:103C3000C36C2EF68763A81F1B147B189D5957B9B8 +:103C4000D28A71D47741E19A4015FCCD94D0769C0C +:103C5000C73337B400F3369E6094E0D5E1B830BF87 +:103C60005FDCB8D32D32E53147F29F6D66D65E86B4 +:103C7000F990E22D183FF6247F8FF2A4CDAA4DB221 +:103C800079481F511EF54EB35D423EACB3847E8829 +:103C9000703EB865918AB1F6B9CD5F8F613BDD1397 +:103CA0003C82FCB667E5AA5CE4937A977C16FD3B00 +:103CB000C61E5DF8F25CB41FF251ECDFF3FB250B7E +:103CC000ABD09E64CA0F08D01F4E5BBAD00370D72A +:103CD0004FE6FAD1BC65602DEAC77BD3941F73BA57 +:103CE0005ADCEFD9319F0BB88C83D7287E66F69EBD +:103CF000215EE94CE7761F681D32EA01E0BF9F2193 +:103D00009C3AFF390A13F86F11BB00FF318DBFECED +:103D10001A7F855E4138D3353E4C5F747E397B5DBA +:103D2000E3B3931A9FBDAFD9019DCF5235BD91F832 +:103D3000DDDFE9FCA9E99144FB9C64E2F67960DAF5 +:103D4000F65BD18FB73D5E948F76ECC99C4816C662 +:103D5000FF2E91E711365AC0AEC0FBD3B3CFDE2E93 +:103D6000039F4D9FCBA25352B18DE5E7CDFCF3E904 +:103D70005D91163C9346FA2C4A7AE83F60BECF89A3 +:103D80000FCC514DBFFD79F3BD9FE0BFCCB0F278B1 +:103D900089553289FCC2008FFFF6D5C33BEED1F9BD +:103DA00036A0FDB490DE19E67640A2D697CEF7098C +:103DB00040CF1DB796E27C7CFDA0BF15FBFAFBBE91 +:103DC000746E2767248D3C37A35D1C7DCEED816723 +:103DD00051BC5D74CDB5C7D9C16C3B84E1F05E5276 +:103DE000A11437EECFA5CB83F822D2E14646FED709 +:103DF000B9FC30F9FBAB738A4A54D9908FB686660A +:103E0000A523BF675B5523BFEB7C0E74B5FAE1BDFC +:103E1000F7E03DF44FAC917B4FA21FD5394FCA4319 +:103E2000B97A58C333355647FE566AA1487E5DE7D6 +:103E30009415275DE8AF827F85FE566771FE97F285 +:103E4000AB94F43DE4575D95CEE5293518207F2AE3 +:103E5000B52640FED597F5AB1A2279717ED5F51AB5 +:103E6000DCE0575D9F9E81FEEEBB763FC28BFE2E4F +:103E7000B41B8A2BDF463CCF1482BF887987D8C217 +:103E8000B7D15F741583BF28A0BE6776E42B07E81F +:103E90009764C4F7D180F05019ED3384F74BC85FB5 +:103EA0008C9C8FF44561B2B38EB99118DA87D4F245 +:103EB0005001FA27E0BF7E3BDD10EFBAE6C6FBB942 +:103EC000EF26F0F579EC27F1ED08FE53877A314EB5 +:103ED0008D22E7E4427FDE13BEF3BDBF712A583363 +:103EE00088CB3B2FEFA6716B2D89F4934BE3E92729 +:103EF000D3FECCFDE97A1E4DB93F9DF43A1BE56B2C +:103F0000CA2FD947F999FA5242FFCFB4035FF1FDA6 +:103F10007416527DB05ECBD6950CA03CC012853194 +:103F20007EB2473629683F401E36213E49BD4730A4 +:103F3000C536461EAC93412F1BF8F8403AF7AF0E3A +:103F4000A48FF87D4CF6325644FFC3FBEBBCC4DAB9 +:103F500098B342BE15318E2B3E6EA7FCD1544CA4B3 +:103F6000035C5F633111FD8C196C88FAB31035E87E +:103F700097405889FDD96C38D76AC2FD91D82AE498 +:103F8000C7275CA127907FCE6E1B7C5B80DF1FC89C +:103F90000AFD7808ED03CACB1C0CE10356D4D712F6 +:103FA000B6C04BCBEC4EF21BD93ACB07C6FDC5FFD2 +:103FB00063520EF3F5CB96DE4B36AE8F3A820FEEA0 +:103FC000135898FE17D5E80F3C62D837B50CB9974F +:103FD000611E6C33FA23C08F8507B8FD6D7F53A037 +:103FE0003CC656F447C84F61F4BB7A2B8BB6639E30 +:103FF0003437704A463DF5BA89ED277A05F230BF6D +:1040000096F966B284EF817C5F76B341BEDB41AE48 +:104010006240CCB42A85E4EA5C0AD8E999067D6658 +:1040200009FD1CE922A4CE0DE1771E3C2DC8A8A7EE +:10403000D21705C8AF4E9B257F2C921FF3C1C297A4 +:10404000310979897C04FBED96F7175681DF92865A +:10405000FB0959207F5B3E7C4985F97F952E6B716A +:104060005D44B1207CE0EE215DF53EBA7F48DFF48F +:1040700069CAEBF8DD7735FAAFCAFA8E3F34CEFB6A +:10408000AA363EEDBA45B10E806FA5C67F4A2DFF18 +:104090003D917F2D1E1E0F407CF02EAE93590A528B +:1040A000DFE4E4F8C3EBF41EF0EDFBF87DDB9B36B8 +:1040B0005A675B763CDF26CE7B46E3DBFE74E54346 +:1040C0009CF7DF960E3D807C067CF5713AED2786E5 +:1040D000260B30E4434BE8FB66F87DD8A49CC1F97D +:1040E000815FFE989E3131BF8CC89DDD49FB37CB87 +:1040F00046F8A6D48A799D86CF5D0CFDCE65CCCAE4 +:10410000643BE547699F1DF7A77E5A46E38328175E +:10411000CBDE5CF8E25BC0176F4F323161EEE878BE +:10412000A68D5799B220199E2F5B6423396A787344 +:10413000DE2ADC7794F2CD61011DD8888DC9867D99 +:1041400022C3FBC2178206920E5FDED8F999B16FC7 +:104150001ADB3F2D687CBC5EA0FDA6C4E7CBECA9B2 +:104160006AF2CCB1F3E67BF246E44705F969D0E4A4 +:104170008769F25AE491E9F9C1341E7F3798158AAC +:10418000BF336B2511F3EAFAEFCB3CCA02CCD74B15 +:104190008A54DA0E8AEB9D4395FF384D9E580F2EB8 +:1041A0008B7C6193C78BBF15267B800E820EC78BDD +:1041B00001D56642B90ED23E8815F80B5B3BE68D01 +:1041C0000B70BDFAA975B2416A53213EC556629281 +:1041D000806D1A0B50EB61416ABD2C4CAD8F45A828 +:1041E000CD62FDD466B3416A73D930B5329344E3EE +:1041F0007E7E3EEEE841BF9005A93D9CC7E39BD380 +:10420000AD6686F934887728AE51DB6C52BB87E205 +:104210001C7ADE0C718D0DF8ABD193AFEF2B555F8F +:104220000BCF1FFCA5A9A493E8CCEB3F12E963B226 +:1042300017ECE830E423DB9FB4D74681CE875BE5FB +:10424000DB83067DDFE8E17E7BA387FB0F875B03D3 +:10425000274308D793F6C05E36BA3EA3E3F9B83BCE +:104260003DDC3E14D65CF136A3FC60AA8C7EC644CD +:10427000EB35717EB42417EDC7692D3F7AFA5445AA +:10428000AE00DF7B77FDDF4EC33C29F80D56019C65 +:10429000D17737FD3A9FF443CCCACC5EC3FADE1027 +:1042A000600AD25906FB59ACD9CF49176F3FA77B9B +:1042B00094BFF4001E277E9044FB242B80FF6DA446 +:1042C000A703ABB06EA01EF31BB85F9C6067CEA6C1 +:1042D0002B7F85EFE9F401C6ADFC3DBC7FF0F58294 +:1042E000B83A89351EAE970EE7CBF718F3A3E00D69 +:1042F000D53F06F3BFB3FE125AC70BD1E39D4D9CC9 +:104300001E67D3438F79281E9349BE4EFC605A2600 +:10431000E6B12F04C7B6FF6038501C501FEAF27E8A +:10432000F08A402EE6CD1BD6D9F8BE76E46AC548A1 +:10433000AF86480F6B4EE3F50B96B4B1CF19CB7136 +:10434000A3FED5FD1F5D9ED1D6519E8385ED88EFDE +:1043500027D97BD12CA37EF18DC7F73D9AFFD8A139 +:10436000C541AB96B2A8D19EAEACEFFC17F4831D4D +:1043700032932F413F58DBA7B6C7B65D950ABFDB26 +:104380008B5909C6E20E3BFFFDEBEF47D95203FF05 +:1043900027C95185FC756D3F7C44BEB4BCF4AA9C12 +:1043A000F83A8757353979D96325B9F1B507C24845 +:1043B00027B31460F58671665679DC83CF4D25F4FA +:1043C000DCE219F3FC047FCEE3E8CC2501B6DC691E +:1043D0007CBEF065CF57F05B573BC37609BEB35A3E +:1043E000B65511FF6497C5E5690E68F23E2A3F7C19 +:1043F0005D56B5B000FA3F262D6F06BF53FCB2C61E +:10440000AFA0D387F8D5AAD0B6E75DEA731AF068F3 +:10441000776BFB609FCFF6DD6CA4DF9F669F0CA1DE +:10442000FECBB3D27EE38B290B5CA79D7C9D311E16 +:10443000726408717074B448018C773B5BEC015C6A +:10444000E7194F4799715FA6E37B4186745C9976C3 +:10445000AD82F2613673BE9E798CAFA7D9CEFB9642 +:10446000D8FF7A0EEDAE595BF7917596CEBFCE6B45 +:10447000067E345889F950677E29CFDD28B48F999C +:104480002CC94F617C61CEE0EB6E95FA63328CB340 +:104490002AF66111F448320378F5F5213B0B7818C0 +:1044A000D6638D45F54938FF9F4CE3D6CBBCA9AD0B +:1044B00007EE8FBD6B88AFBF77492835037EB71CE9 +:1044C0005362C9C4BF212519D7C6797179378F2D99 +:1044D000BA261FF74DEF4F22BD0F3AEFDA14787569 +:1044E000A728C7546807D43355D85FBF262980F260 +:1044F000735818AE2A407F619E99F6737439DDF9BE +:1045000075800AE0FF3F5E07C1E9887C7F610A8C05 +:104510008BAAB6418A431B4FD739A1BF09088B76B6 +:1045200063937A3A7215CEA3B0C01458F7CD6C706D +:10453000DB5D06BD752693D73B6CF8CC5485747F44 +:10454000EEA1A334DFBE56DBEB08C7BE9786EA5068 +:104550006F9F7DC86AC57DE157703C7C77D71E2B65 +:10456000D93BFA83EFEC2E09EE27FF5BEB67675729 +:1045700053FF332FAFE7E96BAAFE7511CC93D2C07E +:1045800024BE6F133389738D2DB38BBED17E221D54 +:1045900065ADBE24F1F73D999C6FBDEA7D0E8C9709 +:1045A00056AB6611F7C5E4F030ED4BA69433258A7F +:1045B000F9AFA6150B110FD7927AAB0070B91A9804 +:1045C0006885DF6B32383E725329BD97B20EC68FB5 +:1045D000F39D91716A7821E2E75A22926CCA300FFA +:1045E0007DEF02EF2FCAE0FAA98731A2F36E4BAC40 +:1045F00015EB0A76DF2B09985F719587EDA88F1A66 +:1046000034BEDE04F3C7289E0743006DDF483F46F3 +:10461000FDDDF75B055C9F9D15DC3E386BC26B0BC7 +:10462000A1EFAC12A9BF53DBF7DE792FA3FD7C50BD +:104630005B7ED41FBB1EB25E47FB38E5B00E79D45B +:10464000127D763F6AAD4456F6B2ADF34CF85C1D70 +:1046500066CB412E7778ED04B7AB6C98A1DC78B5CA +:10466000F189F8A5FBF83A38E76F660F217D6A19E2 +:10467000D51B404BE3775986FC5EC37B7FE7E57C27 +:10468000A7F351E27C733278BECC1588F831AEDEE8 +:10469000CC383E6A9995FCE73176C9CBE9E62A1F0A +:1046A000B6A31FB3B25CACC2EFEEB40C525DCEBA8F +:1046B0007B158F0A43C470B4F55D278EE7FBB9EB19 +:1046C00096838B09FDE8BC213FEAE95D735EA7BCD8 +:1046D000C6FA14672DBEBFB2BC34BC0CE32E679380 +:1046E00057908DDFE3FCB0558C64611E7B6FC64B29 +:1046F0009D1DD998F463140FEEC87CA513F3519B4C +:104700008BF575EB77E0BCCF55A5CD0EC07CBB1A01 +:10471000AD549FB239A4E76D247ABE5D38F55211CD +:10472000EAE93A51423DDD5D7EA60AD7755F215F19 +:10473000D72D55A5AF14437FCB220FB968EE75A2D4 +:104740007A0918EC527FFDDE0CC0DF5D259EC2BEEB +:104750007B7E58407EC21C11FA736E4D34A3299C97 +:104760008EEE5B802F0494FB9B2B103FD05261ACEC +:10477000539294A080F56CBB409FE2BEC4368B443C +:10478000E3A3158CEA27DCC1A4D67DF0FCA757D99A +:104790001F6024B712BDBFAFC2CEFD382031D6F99D +:1047A00051AA16E04D796D90F4C19010FA650AF99E +:1047B0001992D008E377FCDE49715DCADC57793D78 +:1047C000737DA8C006CFDD431FB7A00392522EC64B +:1047D0002E9D89F9352E2FEE1A2B8B8B47CC1C8FF3 +:1047E0007D5717D17E9947B3DB40473FDA934EBDE3 +:1047F0002E4CEB8F3E1F54701F66C7BC4B280EDC3F +:1048000079BF5740BBB6EFDE27FC982F4C697CFD83 +:1048100061FAFE9BFFF227DC8749510CF118474FE4 +:10482000A03CC99BC9317126B6772FC271D2D38102 +:10483000DBA87DD3718AEA9F156B5C3CF99E4F79AA +:104840000DD7C7A3E7591FE3FBDC64812FC5788828 +:104850008DE47F70BDEAF1593E56D7F2F1295549F2 +:104860009417D9F00C1B40BBA0081008019F1D39FC +:10487000FEAA8A7EF469B990F2023051C501E86F50 +:10488000AE2CA6F5382C0CAACB909F963A43B8BE16 +:1048900089F8DCC5425457BBDBE7E779D379AFD958 +:1048A000911E9E649EB7C2BDAA18C047253C22EF48 +:1048B0008B5E62718AE3FE3E334F8B9B8624D41B52 +:1048C00093D6E5A7911D9086C9AE77326EF7544511 +:1048D00024BF23516E97798591F816E3EB4C6C81D8 +:1048E000469BC5B050E821FCE56700EECDD726F920 +:1048F0008DF9E0E5DA7BA939C18AE0F4D1F77DDAF8 +:10490000FBBBE67608B8CEB094B29BF2374CE0F928 +:104910005F2650DDAE369EE402E83CC7240D147BD2 +:10492000E85DFA9E5B51EFA575DCCAD711C45AFD4C +:1049300002F0CF6A8AE7437739B7970FB7DB06C52E +:10494000F2D1F5CBD0E8B53E3B48FB7C1B05266F8A +:1049500086793343F1F4778FC9230407509E523F81 +:104960004891499E6AE2F9A8EF8099C5C86F0A91FB +:104970001D189B77E0EB45FC0424BA73872D0EDEEF +:10498000694F9AC9EE6C800F61EA29B9381E1FE998 +:10499000B87A13E25DCF0CBF035C927AF44124E64F +:1049A0003621DEFFEEF53908D9D7BD3CFE4955FE6C +:1049B000DD66C4CF933AB882F8FD522B43BDDD6E5D +:1049C00019ACBD0BFAEDCF38592BC33AA548D60A1E +:1049D00098EF273EAEBFF5F959768D1697F07ABA63 +:1049E000696E59C4FD1858BF5BD1BFB1983C25E82A +:1049F000EFCC50D8ADA80766F87C423BD1AF8DF81C +:104A000062359316A23D53C10FC2F31ECFDDEF7581 +:104A10004C477B7B473EB3011F6EBBEFECB6645C3B +:104A200097933611FD81DBBDBC1E6B63F9E95A7C9F +:104A3000AFDF6E29A575338742F8FD7E9F9D91BE3D +:104A40007C297489348EBD42C8B8FFA29A78CB34D1 +:104A5000BF46B18DE7CF3873CE3019D66F72792C3F +:104A600086E742BCA06FAF81F590CA5905F9130AD9 +:104A70006883CB809EB5432AAEB33C97F7E500B47C +:104A80002024F27DBC65D91E8A0FA62DDC9BC6C6EC +:104A9000854B25BA6E16E5271FA73C08F7FF51D7AF +:104AA000880679D3C7FF7B86B68E5A9D6386C2A2DD +:104AB0007B0DF92F5D5E40AF0EA01D9298246F977D +:104AC000C6CAC9AEB91EB223A9A04CD03EFED97247 +:104AD000A3F1B999A931E4C7FF6E723307BFF1752D +:104AE000FC75D1A24A27F13929D180F7BB8FA9D310 +:104AF00047D711FCBDC0F9EA0D568707DF40F929F9 +:104B0000B8CF4AE6C2198E90BF95F588BC17F392CC +:104B10001BB29F1344987F58D38F599A1FEC7A8405 +:104B2000FB619BCD0111D765B312B2A2DFA9DBD126 +:104B30006D39F54FA0DE3EABF9652CDCF8C5179753 +:104B4000324E2A13FA61AC123BF75F2D56929FA9A1 +:104B5000F64F12E451F88E7953B97F1C18560A3576 +:104B6000FF125FDDA4864FA0DF9F912D12BC9BCD6D +:104B70006CA088BECFA456C3FBFDDEE478F9F70C29 +:104B8000C6C5850F6BF129F9814037B5EBBAEBD07B +:104B9000BFD2E1CCD5E074360F2B2807F75F7D46F6 +:104BA00083231ECEBFCA48E57EA21AA3E78097845E +:104BB000806D2A07383D13C3E99CBF829E3BB39F9B +:104BC0004AC6F946E791795C5105D1671ECE03EFDD +:104BD00071B991709EC4757C01F19C83EF336EBFF7 +:104BE000C6F817E7CF231F4CE3EBA55ECA34FF21BD +:104BF000E1B97950C5BCE641A04C04ED7D023FBE51 +:104C000098199F4FA65C0F02CA0679FD4AEA109DCB +:104C10004B83D50EEC07614F39F42ABBAE0C9F4B8A +:104C2000675CA0D7520F89AA0DFDA2B9F17ABED454 +:104C3000CBB478F41CCDE32CE771903300813BD2E8 +:104C4000A7E1CE274C86B8F349AF95E8F7A497EFD4 +:104C50007FE87EFEC319B2A6BF8779B28A45286E67 +:104C6000395C11AC433B1F1830ABC8BFEBC3697B49 +:104C7000307E6127F9FC672FF7EE41FECDCDE0F1E4 +:104C8000FB9E54BD4E9CEF878EF83373630E235FFB +:104C9000E5F81CC398C7DD78F91315A8F70BC05EBB +:104CA000A01F53D0C8E17730D582FADCC1146A4B1B +:104CB00033ED3AFDF4B895F47E34C0A236C3F92C36 +:104CC000A776EE2F30D0917E03C6E1F33D74CEAFD0 +:104CD000FC63B32708FD88C2FBB332456DFF3DC6B8 +:104CE0006672FF6318FD347DFF7DDF7ABEFFEE9EA6 +:104CF0001F63D3B99D203F2FA3D924E3790D4989A0 +:104D0000C5D09F76879C61F4D79D8120D58548EBDF +:104D1000602AA04741C45D49F5EC0191F84587AF91 +:104D20002B50ED423929581714F8BE5050A831D0F5 +:104D3000C50B8B1103BEF906B4C8378BB242B33230 +:104D400061BDA4F9492C6658F78C662BC161CBE490 +:104D5000EBB85E3D538BDF5B5F6EA57D92804607AF +:104D6000D0AEE937225CF3D3280F3AF714A7837447 +:104D7000B587F6D78399DCEE4C44878D97733A3824 +:104D800063E229AC3B7096AFFA18F38E3A1DDCF360 +:104D900087293F95077114FAE75DF3397E89F2A7F9 +:104DA000B752027ECEF224EA8FE065877817DE776D +:104DB000453EA67D7856C3B8DDD4E804F408661AEB +:104DC000F2653A1DD6CF3553DCB9FD355687F68DE1 +:104DD000A9534B9D5740BF7105F915DDAC90FC8A76 +:104DE000B096B7007C950203BE7910EF2F82E77D65 +:104DF000A0C2313E8A54DC22DC80EB5E01F118AEA9 +:104E00007B4D7816EE77A6945B455C5F1DFF736F54 +:104E1000FD2CB614E954E123FEE86AE2F8EB744A8B +:104E2000C45F5FDFCB75FCCB12D6D53E48F17E4A1E +:104E3000E41505E5611CFCC3991963F12F788DED2C +:104E4000B5BA404FAC9704FCBE3BFC2AF93929F7B0 +:104E500089244F81814FAA902E11F5C15F231DE651 +:104E60009E3ACEF962F18ACB501E723392343E18CC +:104E70005E83792B365BA47D5E9D0FD6CFE17C806F +:104E80007442FED9017E13DAFB11B9D3F9A30CF0F9 +:104E900046155D3348FB9E3A9D46F83F5C7DDE3A01 +:104EA000099D3F2A903EC257A2CFD6F1E8B3EB85C9 +:104EB00028F93DACD5366802A325CD2DA4BC952399 +:104EC000F2CFDBEEC238FB3E2BD5C16F684C7320AE +:104ED000FD36610008F6EE4CCF96CE56B0D5EECF3B +:104EE000F29862C0632FEA4B8AFBD338BD3F2BA4F4 +:104EF000E723F53CDF8CAFE7D1E5E8B0C0D217F18E +:104F00003C039D8BF19EBACF7123B499C2E2A9D321 +:104F1000F1B9CF47F36EBCDC4BFA2363A3F8A4517D +:104F20007F27B619352AC5D163E8BCAE9AF4D1A75C +:104F3000E8E3E54D2C4FE7D13B7F8772E65B92209B +:104F40009F1A3DAF443B8AFF010FAC023F60120E37 +:104F5000007AA656703BB9AFDC1A6DCDC37A22D168 +:104F600081F061EE18E979AEABE43AF4BB0EB772AA +:104F7000BB92E261E6EC52B09B875EB563FEFA7DC0 +:104F8000AF568F95CAEBE6520F9D8EB3833ABC1392 +:104F9000D9419070CAE73AB5BC6C7FEC558AABD763 +:104FA000475FA77CAAAA5AD914A0E7FAB2B6ACEF19 +:104FB000607C5F162C433D186D3D4B7ACC55C6FD89 +:104FC00035B03B26CDFE50FB19E6E3C84956AC3C54 +:104FD000CEE0BF27AE877F827CE9835A9CE52F898C +:104FE0009173E7CCE672D91F13292FB8BE219861BF +:104FF00032E4D71A7D66C2C7AF5A695CB4243EFE5C +:10500000FB968FCBEBE55AFEEFB54C5E7F156D7DC1 +:10501000DD8F78801C93BC33F0F3F1FC73A21C1F6E +:1050200016389FAA254CDB1767911E3D0E80E7DEE0 +:1050300079F52F15405BA2F1A3F3B25B161632038C +:10504000BFD48605AEF7430EF4132694F7DAF3CBFC +:105050007B26F21D90F68AAFAE0FD37CE3D8834B4C +:1050600034FE7CD014AA73929E8778B46C5C79E489 +:105070007458CFE515F4B71BF7057B622B36DD01BD +:10508000ED6523F2786929E15723915CFACAC528B6 +:10509000CAE5187CCBCF6FFF7C1ABE576AFAAD60A9 +:1050A0004922BE0111F12D88943C671F1FDFC07893 +:1050B000F88635BF56F92C44F1927ECE28DB12BA21 +:1050C000D467D087961A85DC3B9D3ECAE7C10A3C6F +:1050D000D761185F8EE33397F0FA958275BC7E45F1 +:1050E0009FFF41D320ED735C909E73383D9D81D02E +:1050F0004294472FEA5D18D715ABBEE92E18B70CBE +:10510000E93A6754CFA5B4703DA7F355464D48180A +:10511000979F1ED1F45A33D76BB99153ADB6F3E8CC +:10512000B5CC047A03FDEA907E29B5E3EBB5614D79 +:105130008E74BD21A11F8D76B24AA4F3341B025C8C +:105140007E5D81417FA38CFE72A48E080A7113CA12 +:1051500041629C04F4BC0BBFA77C0EEB62A033AC95 +:1051600083827AA7CEC7E92A813E307EC799BDC225 +:105170008EE7C4319F42F9B800C7AFDF2C0925067E +:10518000FEBACFC7FD3737EA8971E4EC764D3FE8C8 +:10519000FEFD4ED0737C1F88FBF760AFC81EB16F59 +:1051A000F33CE1583DA1921FADDE66A6E7DDC30DDD +:1051B000EE20B45D43D553D17DFDADB68EEBE768EF +:1051C000F6EA2F2F64AFBE9A5FA0AFA36E9FC6AC66 +:1051D000DF85F5448F510EF4F5FE7D269783D607C3 +:1051E0007E43FA72BBC062587FBF7D8E3880EBB1C0 +:1051F000AB999FE74C6D16975A53C7E60F3CA6C074 +:105200002F897EBB2D64CF3111FA9C373E6F8BF90D +:105210001B3D6FFB373E5EB7FCDE60BD17EFB71876 +:10522000898F26C8E39ED1F2427FAFC1A97C304668 +:10523000BE9F32CA6B460D97D711FB0C346BF38EB1 +:10524000DA67661F8AE077366F10A96EAFFE853386 +:10525000BD42FEC476FA605AE43778EE547DC22A25 +:10526000A39DB0D842F232822FBE1EE3173EADCED0 +:10527000263FB89CE78579FD05F211FA55A9097515 +:1052800032A95A3DC673A77EEDFB1EEA0FACC7805C +:10529000711B4F9DF3613DC6FACB8F523D4687D8B7 +:1052A000FF733CFFAE3E6526FA9EF84112C59D2B6A +:1052B000DC497B6C867DCF0E4F16C1F14B0D8E9E67 +:1052C0001695BD837B715A7E67A7E7B99320B9B065 +:1052D0007E8A1DF37E6A06E77753E6B555977079A7 +:1052E000E0F55CE6980FF3F6073DD3029827553EAC +:1052F000080F24D07B08E5D95B1B4F6F9D8FF4EF1F +:105300004DC4C789F57789EDA6F9D502F253044B50 +:10531000F9301F3E5C23A0FC31F0B7D1FF8980FC3F +:1053200007117EE863FD72E2FECCAC6309FB3598A1 +:10533000ED05782376C57313BE57C3F1BEEC64FC4C +:10534000B8AABC173C37631EE66AB1D4647CCF09A7 +:1053500028A2FCCFE7F4FFC6FBF1EF8DE2A58D9705 +:10536000F8BED1959F5D609C87515D4622FC57D960 +:105370006DE3C3EF5332167B46E1BFC6173FAE76EF +:10538000E90B19DF1C0FFE6C58AAB251F8AF2BB60F +:105390009D1F2E99C37FE3DC0B8C2B1C1FFE9BAB48 +:1053A0002680BF982DC47B89BE597B8179CDFCFBBB +:1053B000DF6A3CFFB86F37277E47D59C37DE1E6E0D +:1053C0008B35629D48896999BF7AFAD8F7BB055138 +:1053D000BBBF212418F3320BFCDC4FDDD502027A6F +:1053E000C9E8EF3DCD4315A89FBD8F0CB7623BB90F +:1053F000398D29E3C0E7FEAC8029E9C6EF45E97B9A +:1054000099576B71E96745F47C578B9DE6C7EFA30D +:105410001D1A3B7FD204F3FB2F307F363D1F53E72D +:105420006A5A44E71A26A1FE1E473EBB5BA21163DF +:105430007D7E62EB3D73F3527DBFCBEE1DBD77C623 +:10544000E47AF60FA84F7B6BBD7968F7AECEE2FA2F +:10545000DA9B0AF10DED7B068A91BEDE24B5F50ECE +:10546000E4CF4A7B602FC86D7BCA5C1FD59B25DCCF +:1054700093D221AA742E46AD666C3F25FDD50AD481 +:10548000572691E72512C75BB3B8BE6B17F9B9274A +:105490006FB36907DE2352BCA746580AFDF7FC1C10 +:1054A0001E7BD4ACE5C1813000F78C7D56ADFFC7C3 +:1054B000758DE0D8AF42BA605F7D7B11D607613849 +:1054C0008576E0916D6FAF433BD0DD1210DE31D0B9 +:1054D000C73BC179CD9FFA393CDEE6833BD0BEEABB +:1054E0007AD8ABE9FBC4F167FDDC3F39A8C1DF75B1 +:1054F000DBAD749F45D424AD00630F7FE1E5A8EFD9 +:10550000BBEB8AF2D05E1DD4CEC5F6DC7E2BE1D794 +:10551000BD9889926BECBC5D8B991D7FD7EB07F52D +:10552000F123EBBD98998DEFC1F82469D6C4EBDF68 +:10553000BD3858A78C8BAFB68F8AE522867B760E56 +:105540005EC102B83F8CF735B4313CBFB0B202D770 +:10555000FF53C51EA07D92AA20F95F89EBD995B2B1 +:105560004AC07D85EE56F3B000EB6FBA75159D8B82 +:1055700032013FB092B1E3D9E75F501E9E44BF00B5 +:105580005BE063BB061FDAC7268FB69F17E4FBB04C +:10559000F037ACEF3F611EABF68156ACCFED004269 +:1055A000A753A8B36E10EB1C339658E3E2125D9E2E +:1055B000BA2DC13742C268BD58D7E5F171E9094D2E +:1055C0007FFCAB5FDBCF6041AAC3B7D4BC7812E7E6 +:1055D000B5E8E71B3CE6B8BAD3766DBF5D5DA1C503 +:1055E000615362AD8877CCC1D22C93E83CAF42FBCB +:1055F0008A827D64FF5ED2FD1AF8EB1AE0F79E7492 +:105600003FCA84B6125C77A50DE9AD8A2C88F9BD36 +:10561000EE4D21BFC343427B9305372D1445F61849 +:10562000EA6DBB5736F9518E81CF4A300E6F6FE667 +:10563000F5D0DD7F6294CFE85E2A531D869F0D3A38 +:10564000D0DF2FACB5521DC298FA4E8DDE17B2FFD7 +:10565000DD02D0318FE8A8C9E1BB8BB00EA2FD728C +:10566000DE7F7EDBA72FA3DC95B3C04984CBE2B4F9 +:1056700092BF3611FD46E8EC043AA74E3CEE04EE2C +:105680007519E48D1817F113E415786F4A8F25BC4E +:1056900094FA8BBD79780F8C2E6FDDB7819CCD424B +:1056A000F9646946B9EABA2DF48685E89C2B401066 +:1056B0007F1EF9E17845B7BDBD08EBEE46EB7AFBFE +:1056C000A755CF18D5AB18AEE07A4CCBE27CB4D25C +:1056D000FB634DBF5A65D4AF89EFE9F3FB6AADE3D5 +:1056E000DE3B8569144B29B412DF3F497C9EA57DC2 +:1056F00027ECE7719F5E777C389FFBB75DAF9BA27D +:105700007BC9CFE4FE6CD762EECF8EB10F09FEAD40 +:1057100077C4BFFDA61FFDDB6EADDEB8FBD45D7E9A +:10572000F46FBBEAC0BFC5B8DA2FC7D9A98BFDFE9D +:1057300008BD34FE5FE9ED74A07DFBAA70E8E30FBD +:10574000A6F5FF01E374F556EEEF3389DBAD8395E3 +:10575000C581F1ECCF85E8EBD3EC535616E73BDD82 +:10576000CED6211F665CBCBCF4E0FFC23BBFB528AF +:105770003764C13C3723DD50EF2E49D3CE8B078AE7 +:1057800049BF2DB9C87B0A4C8F30F4A33F79CD4473 +:10579000799C443D8A7F463DA956865BE9DCB6C8C4 +:1057A000C25BA4B17A3683556EAC427A1507053CCC +:1057B000DFD29E67263D9FA8475759C2363C97D8EF +:1057C000D112DC8674781C6C239E036C76DAA328D5 +:1057D0006F58FB4B7A302569DC7ABBC61C4ECF274D +:1057E000DD21F22F0E0B4BEB8CE71E7E3789DBA3FE +:1057F0005F687E082B0B3AB8DEEF7815CF2777D499 +:105800008A32EA918EDA36FBB50067474894042065 +:1058100065AF54EDF80EE2572B4A53A8DF46E3D5A7 +:105820000651C67CE9F1864A8A9BB685C4D9C83F31 +:1058300016F4BB4C28976200F1553DCE00C6BCDD86 +:10584000B56DFE6500D702539303F9F8F8D2171D22 +:1058500078BFC386F06909DDBDA286EA18DE1B9217 +:105860003DD726C9129EB70BC67E8A71AF620FC69E +:1058700070DF341C8B61295FAF107A89F4CADD2296 +:10588000E3FA5EB9A1C470AFC1C09E5B6278EE68F6 +:10589000476D32B3C13C07B3781D495FF80CC3F3C1 +:1058A0004B49687FE0F7037B56F911CF9E3D66CAEE +:1058B0007B0CDCB6CA8F79DFEE3D563C53C852CB29 +:1058C000CDA78DF77C76D745FD98477096C5FF7EAE +:1058D00062F95101F14962F07B5C9D33AF5FA0F842 +:1058E0005E46BAC43F9FD4A8F27DBE90D38376E2D1 +:1058F00009D0372817074445447BA4BE2D505CF2DD +:10590000B845B519D7F15821D74B9D5A3D7A719EAC +:1059100018C43CF063DA3E7D9293CBB5BEDE896D50 +:10592000FEDAF9E73DC79B61BF799BF11C4D977685 +:10593000FE2CA9785094805ED94F4B25785E363B7B +:10594000CCCF97F65C9E5BE29447F9AF67E0A13756 +:10595000C89F3DE40C3864CC23055BE9FEB7AFF18A +:10596000FBBE5EBCED8159C8D72B165B458CD3CFEF +:10597000BD754E453EE95A9A4DFBA5FA7753B57B66 +:10598000355CCD9E4021C0932A7B0385E0BF263540 +:105990005B03E83F2EF8E1F4CCA1F3E0B1A1450AA6 +:1059A000146AF5F2855346CFE97FED878B5CF506E7 +:1059B0007F6F48D3F37ADFD29C1CE930C411C91938 +:1059C0009CBE30D267BCEFAA7B127F6F4342FD556D +:1059D000E2735616EDAD443B7537D869E8564CED89 +:1059E000203EEB0A5925E4B3BEA5B7AC5D8272F246 +:1059F0008A8972437D77AFF2DF6980AF5718FFFC69 +:105A0000DF17597C3D0FF8D5ED58CFC3D4C541BC45 +:105A1000D7E18043DDCEEF79B83988E7230F8CF8E2 +:105A200011B541F4230EA01E01A6FC7CFBBFDF884C +:105A30007EC401B77A2BD6E96F705C13390E7AF405 +:105A4000C014F53702F47B64169B8FEFE7F1F12D5C +:105A5000F2F7D6D3F819BCDF212F09621EB317F174 +:105A600041B902B9413EEFDDD39186715AE7D4C7FF +:105A7000FD98A7DC5E32E443787E33E9C37FB0E370 +:105A8000BD0842D48FFDBEBE7FBC7E7E16D2A3B0C1 +:105A90006709CADDA085EE57EA3EB19FF6633E0175 +:105AA000FAA07EEDCDE9F707C7A16FA4C517580787 +:105AB000B8ACC3D6107FB8155FE090413E5302F1F9 +:105AC000FD5EA19FBE5FD3F70FD79BC11EF459FAAD +:105AD000B7617FFEA427AE37037C7D29FD7EC4BF5E +:105AE0006CD22EDECFD0E9D77D3DFAF97D7EDECFB8 +:105AF000EEDB743DE29F0847AF45F5633C7F4138DC +:105B0000B4715F158F89E870B1DFFF1FFC7E5DC047 +:105B100079E1F7FB347D38E13C791737CF9FCB8FA4 +:105B2000FFFFFDFFDCF76B26F173A417E607C6EB5A +:105B30002CB5FB5E1E9BBED76ECC0BEC2FE47ED348 +:105B400090E6AFEAF7A96C5FFE049D6FE87B24E462 +:105B5000C07399C57B1EA77C795F71DBE67CF4433B +:105B60001A4426C8E01F7DDE4E75D7DB6A4409EF74 +:105B700057EB6EA87690FFD124E24DD9AC27BC97A5 +:105B8000D76587443A17B423BCC2B1CCA0F7601CD8 +:105B9000D5B1F42C792ACE3EF4E975F58F802784AF +:105BA000F9E1F9F974CFB5FEBCAD80F379DFD2BD70 +:105BB0006B8A285EE2E7168EDF7DE74BE8C7F5814A +:105BC000DF8767998ED73EF512D6C9750745D2C3D0 +:105BD000455A3F33680EC844A530D5FD5A9A006730 +:105BE00098FF6B36752DCE67491719EE070D1457C0 +:105BF0009EC0F97648229DA3C85C22D139AAF45AE6 +:105C0000BE1FDAC1FA07ACE8D7548DECBFC476C228 +:105C1000FC4EF0F73A793DB8ABC4B0CFBCA3B69A0E +:105C2000FCBF1EF0FFD05F5BF0C325029ECFECF3FC +:105C300099189E0F5E58904778F586AAC9DF7B0CAD +:105C4000FC3DCC8BF7343D47F78E7A6AE2FDB4B465 +:105C500045F1FD640BDFBF4B9E67A5F338CE04FF13 +:105C60002CD15F1BF1078AC19F30E41F5D73A5B87B +:105C70007EA29DEA6C39C68CF931FD3ED1C471BB60 +:105C80000AB5FBD898EA47BE6A66E1DF3D8A7989A2 +:105C90004113D1AB43BB0FD8ACDD079CD19C4C79F1 +:105CA000B4C37981E23B71DD52B4736C2D83BD18AE +:105CB0002BA40B01CA4738223696E1C1F3324E7E3F +:105CC0001FA52924631CD32146ECF87CAB280BD8F4 +:105CD0009AB2F3B538F73B910AF4CFFEC1447CB0D9 +:105CE000D5DD1DC6FDEEA9FBCFEF37FAF1FCB5C13E +:105CF0006FDA86E7AFC7C1739A86E7564BFFB55494 +:105D000077B158A43AF4AEFEA7D524DC5F7B5ACC19 +:105D1000437F6643E30ADA4FEE062FFE12F4970440 +:105D2000D54FF197561FDBB5BC88F0E911FAFFF0AB +:105D3000D7C85737D9395F99C36FDC01CF7B6FCA9A +:105D4000A67D992387AD0407D215CF191C1E39876C +:105D500012F5D71AEA7A7B9777FBD1BE1FB0048A77 +:105D600091DF6EDBF9830D0E3FDD13A739F1333779 +:105D7000A3FF744414F47CA982E76DFAF768F95222 +:105D8000B5E2D5F9E6D17D40A66EA2F1FD082F3D22 +:105D9000EFD85C81EF57EAFD7BAA95729C4F9F1F5D +:105DA000EF8E82BE557F1EAA6ECC66ACE4AA583E2A +:105DB000EE335A0B21E4027F6C6B8AFEDC5E8DF3BE +:105DC0004F13376509258C2D9BCCD44500CFC16A74 +:105DD000BB36DFAA8D8A99E0BD0EEF07FCDDE4BF7C +:105DE000DEE8F41BE1FDD33FE1F3C39A7F58B9E34A +:105DF0006F6F6CA37DCBE869F47FE64DD9BDD97E8A +:105E000039CECF9F43BFBACD89F125EFCFDC71E406 +:105E10009FD01F4CEC1F9EC05FFD8BC9FC5C42BF36 +:105E20009D3D4671EC1226E1BA8B4BD4E49918578C +:105E300040FC780D4C951D1369DFB96B2956C3439F +:105E40007BB51218C0FDD70A6B00F5CCF694471C41 +:105E50002FE0FB102C4FC175F688C9788E406DAAD3 +:105E600027BD39E3F9EA2A8C47675C236265FEC8DF +:105E7000F77F33999F0FDB142AED47790179A0F85A +:105E8000F6A03940F591079D5609CF13E8E7C7EE14 +:105E9000CC9EB1C1787EECE7F2EC0DE8EF7516B65A +:105EA00039B01E7713EA5118BF29187A690AEABD7A +:105EB000252266105889E979EA6F9A22B236C3F72B +:105EC000370902C509E9B795D279C5F4EBD3046661 +:105ED000D02B2772B5FA26ED5C6AB7762E1571C005 +:105EE000FCB14DFBFF4E29CCB0BE62E7D999B8F7A3 +:105EF000CFBA801FF0FE15DB027E7E0C82DB01D460 +:105F00009B4EED1E8E9D452FAB88EF0EBCDF3FC034 +:105F10009FA3BE4C013D8A7A774768053DEFC18B50 +:105F200050A0EF0CA5D1391DE9A895E1BEA26DE8FE +:105F30009518D2F90B131B447EB70512CE0D3C3DCC +:105F40004871FB2F1F7249F83CB1BEB9DF2C0DA080 +:105F50009EF72A76A915BF3FDF501F4DE7B0426B71 +:105F6000B2E7687C04F33C398F45DBA9DE43A27AB3 +:105F70008F91F35977B191FC2E9E4BC07432BF8F35 +:105F800007A802F36FBE42BFA791DFDFA39FDF3AEE +:105F9000721CEC2FDADDAA697B317FBBFD99613A77 +:105FA0009FA5E499C302F06D6F800968E760ED6812 +:105FB000DFD4D568A5F35ABEABEC612BE0E352E227 +:105FC000F1354F2E223E2EC05D7C806D72F1D000E7 +:105FD0008AC8885ED1F6F5699F44DBE7C73C40A6D6 +:105FE00099F79F95F93961E3792E513F0FC8EF6119 +:105FF00071609E2D23C4F7FBEFC9D1FEDD1329EAA2 +:10600000C773E123E7B79A789D60A29CDD97A3C58B +:106010009D8CC3E1D2E6DD2C0EC78ACA8CE7B77E21 +:10602000EC379E1FFFAB1C21EEDC17D10FEF05698B +:10603000B22A8E99A374D7EB05268544FA7D52E3E4 +:10604000D10731AFEC5D92C01709FB9F89749C9416 +:10605000705E445E175F777F2489AF7B77253FEFC3 +:1060600092FB48FCFBFE043EFB55B65B879FEAC6ED +:106070005D2133F1F71C13E3F7C93DCCEF934BA43B +:1060800057BDB61E89E7032FBAEEFF0A36EEFD3183 +:106090002EEDFE1857029E3FCACD1B591FD5C0A733 +:1060A000FA3DA19E545661ACF7771D3A1357E708A5 +:1060B000CF07B0EE017889F32B9EEF1AC7FF68D5A2 +:1060C000F8E0C033EB280EEFD5EE05B368E72EF508 +:1060D00071B373F839E8D939DCBFDD7C3C7FEA0B5A +:1060E000004FE5DF3ECBD07FEB7A83DFBFDBF523CC +:1060F000B91DEDF1D9AB594045685E1EA633A50721 +:106100009E995E81BF6785042618F23732FE0B1315 +:10611000BE8B6FFB5E608F23B38EF9FDEE0525C845 +:10612000A7593171C4EEA25819ECB06A2F273DF37C +:106130003533ACF7EE5D951B2D39E7B1ABECD21BD7 +:106140001BCB47EDEA37E404BBCA0A82DCAE0A8FF8 +:10615000E1BEDAD41C6E5713ED9C6E2703D1AC88D8 +:106160003D67D44E423F8876B4DFAECDA76EFD4783 +:10617000651CBB39C33438CD0EEF7747FA36CCBF38 +:106180009CC6578D97472ACFB66AF53A2AD5D15F74 +:10619000888EBD66D58179CADE117A75DD50513899 +:1061A000FAFD65933337B4D2F7E3F9406F176A7A93 +:1061B00060C63E6B18F35E95597692C3BEA5B73C98 +:1061C0008E7C007CB10DEF8FE87DA3CE8271C3354C +:1061D00039FC3E81DE1F85264B9A9F8570621C4FDD +:1061E000703CF32C9DEF4A84735294D7AF26FE7E09 +:1061F000658E43F783B7B596F1FD68DCD738DC16BA +:106200005A3E5E1EA85683B7B3054FF6E17B613A4E +:106210000F9C3E354AE78E32A7F7ABD826178B4C3A +:1062200019276EB47D3629AE6E604B76988CA7ED3B +:10623000B35CFAFD417BF0D61CC06FFBD1B937A02F +:106240005AD82E6A729FC5CFBD337388F28237FB4E +:1062500095DB71DC276BCA8A513F4EE427EBF9FDD1 +:1062600091FE04F77BDD93A5E77979FCA0EF63A0AD +:106270005AD4F6E7291FD5AEF1DDDEC23FAE27FFC7 +:1062800004EC8799C79112D94BAD0E9B548E88753B +:106290006CFD6BF3E1F71F66737F63E41CE23D5610 +:1062A0005EA726F37388BADDD0E1399A2D8EE8AD6A +:1062B000F1ECC04FB365BE6E127F5FB71FBA7D4869 +:1062C000D43B7A3BACC171A1FB7CB6E6E875649C1B +:1062D0000FBC09F7F9F42E8DDF7F1BDDDF5AEDFFD0 +:1062E0001EC615DAFED6F653DFA7FDADDEE517575D +:1062F00047A6CFF75CCE97AB5FB8BC80AFDFE87E38 +:10630000AAFA069E7BED6D9D2974923EE7F50BDBA4 +:106310009727D62F740A58EFBE7D29DF574D9CB7BB +:10632000776962FD021FAF3F87F7CCC6F7607C5CE0 +:10633000FDC2F6A577D6294EBE8EC6FA38BD4E21CF +:1063400043F3A19ED3E4EAE0151186F762F6B9F9AA +:10635000BFAFC182370DDC89F164A556AF50333F22 +:10636000EE5EA30CEDDEA30CFDDEA384E7BD29CF1A +:10637000D6ED61A8EF828D7B90EF9CFCDFDB585956 +:10638000FF80230FDA6343DCFFEF0D955E8A6677AB +:10639000A5672FE5537A4295F63C1CEFE1F991EDA4 +:1063A0008D22C5111D6150C502DE2321B5BE0B74BF +:1063B000985BC0EF9170C7D2FCC67AEB4D57F3FDE6 +:1063C0009BBEE53C1EEC093DB58DC7018B3C828C24 +:1063D000E7A0B95FD57EFFB565AD6C749E44FFDB69 +:1063E000630BD3BF5FD7FD692ADB0BF666534AD434 +:1063F0008EF6DAF64092C8F3081056148CFADDDDFA +:106400009ADFDD1D4A1BC0FBF17A70439E8423ACEA +:10641000221D53147E4F03F8DD036FC17329CBF4A3 +:10642000FFC8EF0E7E8AFA2A9549AD963CF2B3C9B1 +:106430008F66578ED4FDC7F9D1897E33FC0998FF4A +:10644000F16BE7A212FD665D4F8CFAE9D27518A7D1 +:106450006DBE53A4FB4813FD41FA10FAF11B64F220 +:10646000E37B039A9E55393C19186D911FC6FDA414 +:106470004001B78B17EB77CB050EFDFEE9387F7B2C +:10648000B4CE36DEEFD6FDED9C5C31EE3C8BAE47F4 +:106490007B152E3FBD8DDA7916ED5E0C104D7B6FAE +:1064A0001AB55533A0CDD6F480CBC9545729DE3F59 +:1064B000CBF525F8E3CC58CFE542FCCA48AF966E41 +:1064C0009E479FAB9A01E325ED7D09DF4FC33AF06C +:1064D000A489FC71AA8FC26BFF2AE7A1DEB552FF27 +:1064E000E1BF60B238EF3FDF3F4F3C7F9DE89F0741 +:1064F000732FCE3F6F7D2089EA7BB63F14F1DB4AD4 +:10650000503FBE48E704B6B3C84B58EF11CCB58F27 +:106510005B27BBFDDE36BAAFC51512975AD1EF3EE9 +:106520003E78131EA61DC367FF497EBDA7E0CBF9C9 +:10653000F5070F3DF573FC770D23E5229D3B3D7874 +:10654000E88CBD7E1C3BA2B7897EFE7036D3CEB1EF +:1065500048DF3D44F171525C9D3EDA43CC97807C2C +:10656000F0FCC81D3C5EEC5DCAEBF1FD09F5F837A7 +:106570004CB1D3FAE460FDBDC11FDA197E959FAB23 +:106580000831AA77F0455A05FC7711D87D7C3F1772 +:10659000ECAF5063C8A3CDD4EAF1278F9E17EBC8A8 +:1065A0008579FDCFC6D7E5E7609D3D7C273D270176 +:1065B0008F6F5E008FC5F17864FC05E061B0D3BFDA +:1065C00092397F8CC1A3E955E2AB2F8B47F6281E89 +:1065D0003B7361DE8C09F0D0F37ABB77ADDEA09619 +:1065E0007F157C6E29C1FC6A1EF8EF75C02FEF4C39 +:1065F0008447889F87C8B1AB02DAB389F0D0E1CF76 +:106600001A85FF99F3C2AFC74BEADAD4CAE9A3F1FE +:1066100052D3AEB537A8D9782E2F54379EFFFD9EA2 +:10662000E6177A528715CCB3E8FC2D1D120563DC02 +:10663000EAC273EAA963F9D893AA7D97356F5078B7 +:106640007C4ADF5D99D34CF93605EB8067E07D4AE3 +:10665000A197918FBC4B18CDA39F07DA5ACDF318A1 +:106660001791378BDDF93F2B6FF66FB9FF8DF2660F +:106670003BB30BC6CD9BE9708D9C4361FD342F5E0F +:10668000A982F79878D131358DC6176EB4935487A7 +:1066900035A257897F5227FB6EE0E752CE1F47E4B1 +:1066A0004CFEAF8D23AE9BFCE5E288CA2942425DD9 +:1066B000E67FAF38E2BAC9F171C4768C2368DC4D4D +:1066C000ADE47F7FC53862BBA7ED8D18ACD34AA976 +:1066D00034BC07DA8EC6EAE23BD997DFEFE87D01EA +:1066E000186E16E2F704D5636545C73F2F373B8721 +:1066F000EBE3F40CE55B932F22AFB67432CFAB9D86 +:10670000CDD6F22909F99EB47479EA0BE0DF38F6A8 +:106710007404ED0E4D5EF57D253BE6E1444D1F779B +:1067200004B10EDF7D820D38410FDCBDFBE8463B36 +:10673000ACB36B90F3FDDD93336F5001AFA43C5EBF +:10674000A7CACC2AD58F8F73DF866A26FF9EDF3BD0 +:10675000B13DD6B03B259FCE19ABE8F7F6968B7BC3 +:10676000D11FF0E3FD1BE9948F4A4765F0FEBEBFE1 +:10677000FB27AC8319CD67BDF70AEAE98D317E6E40 +:10678000E0F0EE93AFA87800D8DEEFD7EAC86DDA74 +:10679000BD91167E1F07BFAF8369F77524D2D52B35 +:1067A00044D75E8D7A6A39BF5740BF9FA3BB36FE80 +:1067B0007E8EAE1ADE8F4ED6EFE7E0E76DD9B739A1 +:1067C0003EBA9D3C972F09B89FD42BC8C3A8E77742 +:1067D0002E5941FBA89F86AC25A8D7DCDA7D04EEB4 +:1067E00050FC3D0C89E7DCDD35F1E76F73EC12D925 +:1067F0005B77C45D611EC7DE827D8D4E36F8A5BA1B +:106800005DEDB3809DC7F879A94879D3BEBB1FA0C1 +:106810007ADC9E98C8E95BF0F7375A4AC6A16F2325 +:106820005F7F9DBED0AF1AEF5EC62305BC9E7E7B08 +:10683000799B80F73AF81AF8F9714F023FF614D8AD +:10684000685CA5966F915903E5138FD4F2BA822341 +:10685000C7D3C85FD9343F8BEEFFC833471D98D7E5 +:10686000D2C73FA8CD374AE7787F6667233FDFACC2 +:10687000D315E84574F2D5F07C71A29F92A1D17B2B +:10688000BE76FED640C79F4F263FDAE0A79846E97E +:10689000F95FB57F589DCDE5D9620B0D150917F647 +:1068A0005B805E342FBB8AFB7763FD3FEE1FAA152A +:1068B000DC3FD4FD59E95BF17EF96FE578BF5C52AE +:1068C000B87DDF59FBE5FC72B7E60F5E337ADEF97F +:1068D000DCE439E7A1F304F7805EA1D121519F8167 +:1068E000FEA4FB00B75BA25437F594568FF37F01EB +:1068F000296C012C008000001F8B080000000000A4 +:10690000000BED7D7B7C54D5B5F03E67DE9349727C +:1069100012F29A90C09930091348600281461BDB3D +:106920009388345A6EEF40A3421BE9F03440302381 +:106930005A8DBD684E203C020801798488767859CA +:10694000506983ADCA45FB7582CAC5D6D6D8878F34 +:10695000D647A096AAF5D2D85AB5DFB5F65B6BED4F +:106960007D3267260952DBFBDF97DF4F37FBECF701 +:10697000DAEBBDD639F383D6BCE0161B631FE74BB9 +:106980008C4D63ACDB169D17F430F6183E2F66EC89 +:10699000C408ED2745FB93A24C6EFF3F625C6C84FC +:1069A000F1A7C4B8A747187F5A8C3B3342FB8F45E9 +:1069B000FB7323CCFF3331AE6F84F13F17E37E3995 +:1069C000C2F817C5B89787B4B3B93DD0FE6BD1FEF6 +:1069D0006AD2FCAF8BFEFDE2F9DFF3557ADE55DAC1 +:1069E000EE5D5EC9987BBF9D3178D4B5BF3D93C144 +:1069F0003CC799F61EB3403FFCFBE2D0B2C2C37461 +:106A00004F2663591616C1752B8EF45DE39BC4584F +:106A10008F93317639FCA7EFFC9906CF8F66F0FA99 +:106A2000A47DC79FD7CBE2FD93E7FB832AD37E9853 +:106A300047B1B04AEA37B0A922BE4E450F8BD926DE +:106A400061D9572B41B93395CF3B33BA79ABEEC1FE +:106A5000FE9137EECC8267BFB0040FAB34CF533416 +:106A6000CF97958C4D1943D7DBDBAAEC6D077814D3 +:106A700017FA18CB363D5F9C99B2A02C5EDFF5B4B7 +:106A80001CB3A543C9585D0F3CAF58CC62D969F11E +:106A9000F69CA759BE04ED39B10E492D87F10BFBC9 +:106AA000265861BD1BA29342CE699F0E8F8AC57D79 +:106AB0009A94F6E9FDDA6EFBDAD5A9709E6E89C567 +:106AC0001C70CEEE65F63686650B532C1523DF530E +:106AD000F7B56B5C789FE96179811DE096FE74DF04 +:106AE0006C06EBA56B76A60618FDFD9DFE0F75A73F +:106AF000A85B86AB0FB050F9D0E7E9CE343D05E78F +:106B0000353FF7F152CF614CC17FA8F1F10FC15D64 +:106B1000B27CACDFB215CF79AC8DD77F38E696ADBD +:106B20007A35E01FE279D9C8743206E782FB3A521F +:106B30000EF80EFDBA163CE05D62BAAF22D5C6DB98 +:106B40002B383DC4F1BB4436F05B86FE135489DF1D +:106B50007BBE982F233EDF22D37C69AA85D389D8B8 +:106B6000D748FCC52DF665F41B890F20D999E71B82 +:106B7000891FA525F51B892F1425AD3B127FB4274E +:106B8000F51B898FE524ADFB5DD1DE23CA4FC6CA54 +:106B9000026E17E71FC97CA8CBC6EFF9E3FCEC4EE9 +:106BA000CE0782BF9885F4BACD1A3C8CE89007BC1A +:106BB00017F02517FF5DC4EB6C3A634806C8879E43 +:106BC000573369DD689F9CF96FF80C706D4D0E3D71 +:106BD000620CB6F46001DF0F73EA1D16D8CF8E8504 +:106BE000B2B2098EE47DE6C05E09DA1D1FF998365F +:106BF0000AF8C69C93DE30ECEFA763787F8735C236 +:106C0000140FB6FBA93D2B05F8531961AF0BE7C96B +:106C10000E17656E427C56A2DE39A9B80EE75337CF +:106C200015727816D8C2AFA8506A91FE3529701E29 +:106C3000471E0B6E8226DB939A6683258ED7723AA7 +:106C4000FEF6FD1B08BFA1FF1BD4BF4092AC95A66A +:106C5000FE4C636C1CC019E1487CE06FCF6B56A002 +:106C60000F898FAFDDF7F8BFAF29A3F1BF57617D63 +:106C7000AD7184F564415F7A475A2DF43F6EE7E3C6 +:106C80009BEEEFF88A5E00E74BE7FCF7F8D3B5150B +:106C9000CFC0F85DF513A658609CCF1A71E1F9BE1C +:106CA000A8723CB85DF0E9C2168BFA26C0E5C32293 +:106CB000E0AF95481F25153AF4BFAF614E3ADE7339 +:106CC0007678FD7B16E027D9F5BA1436F1F53CB895 +:106CD0009418DCD15550223F2874EA12C239AFB360 +:106CE0004DB2C33CEC56C6EF9DF549F5B0EEACFC99 +:106CF000B0ECA3CB74B398C1972CB8BE9DD6FFACB3 +:106D0000720100E145BE936509B79555122E0D1C21 +:106D10000EE273E5CB65C83F1B33A76C52F97A8846 +:106D20006F063E65372E6C43FC546A9D032955500F +:106D3000FEB4BE97C64B6CA018C66B5A817E8EF609 +:106D400009E725FE18EA45F8ECBB394DDD044C2F68 +:106D50007BAED1CEF96B28C4EB12F61F37B43D7B66 +:106D60006EB57ECE19AFA7F7453B4A70BDBACC6071 +:106D700031EE0F7001CFBF6F9912457C1C7D2854F6 +:106D8000E3867A3FAEFD05B8979B97CE437E6AF4C3 +:106D9000CB9F9B43FD3A9F93EBA280071967A2BD4F +:106DA00076A4B7A61C95CF17F6CE4658B12C5AF745 +:106DB00057784F3057D73C310FD325E2F7565D9ABD +:106DC0000DE53319BCDFF53378BFBCFAA8578379DA +:106DD000BB572E9D17865263FA1A1DD6CD88141DF7 +:106DE00040BA33F0E095228E4F23C9A77FB4DCD59B +:106DF000CAF473C04BB661097CA5B77E95AB1FD6AC +:106E0000EFAD5E757531E2E75C993960DBBBECFA9A +:106E1000B3E3E0BCBB17CAEC009C37E06C748D4751 +:106E20007C7FCEC6F0BEBBEA6B73117FBF55C4E951 +:106E300019E4EA5C4EF7FC9C520AC73F63DD033E4F +:106E40007E8E0ACB57BD2118B74B92E60EA7C7F826 +:106E50008A387FDC96165E86FD0A3FCA6051C45FA1 +:106E6000169190BE56F9A4047DA370CC2F16481538 +:106E700008EE474367803E0BDD1C7F198214F06EDD +:106E80000713F40C3D02B0AFFBD6B9057F58B37DB4 +:106E9000861FD671F3F655BE55DB91BF98DB917F07 +:106EA00024B7E7AED6580BD04DAE95E9B3A64079DE +:106EB000EBF41BAD4037AC212B8E7F4543C7F59ECD +:106EC000FDAF583AC0AFEB0A1675C011BA5EFBAB06 +:106ED0007604E0BDEBA72EDD02F460BB268BF0D973 +:106EE00056C1F163973756978AFD6B5854F7A17EC8 +:106EF000C0E7FFD254AE1F28E1F57D48AFFF2C1E3E +:106F00008CD88EF0C7FBB42A5EC45FE3F90A71DF48 +:106F10004CCB8AD35FD1BF0E3FFFD5FB5D2AF0E992 +:106F20005E89EB33DB65D668C6BB277CBCFD03817D +:106F300057DD12A77F7DB63B7A18E09C21B3B0B92C +:106F4000FF09D1EF7F7C1C0EFEFAF9E9A1F291F75F +:106F500095F39185C5A69AEA0AD370BE53675F2A56 +:106F6000BA0BF5D1D979531C404FDD67BFE395903B +:106F70001F3C5AE793A03D13F0CB0E78F6D01C27A8 +:106F8000E191676CDE57743F81BB17F92AA8CC03E7 +:106F9000C8279DEC3DDD8F725673F6603DBDCF2A4C +:106FA0009523DFD39C03E9A003686A329F651FFF26 +:106FB0001DF8740EFE0BF868FAABD7D748C8174710 +:106FC000B1A07C19EAB505097C34C71AEA4578E412 +:106FD0000459706DC650BE9BDC5FAFB74821A0530B +:106FE000A5FDF21BAD69713CF91CDCC3FF269E18A0 +:106FF000FC6CC476C14F509E71BEAD933EF296B804 +:10700000CF6DED6EE2F3C0AF097F8CF902CE16179B +:107010009EA7B7FA11573F8CBFB77A21D903BB1B84 +:107020006A497E8FB45E36F02D7D94697D7B68DE83 +:1070300011B4A37CFF136A77C6F9434AD1FF845089 +:10704000AF6056501C00CE3B973386F61653349FE4 +:1070500059DFA7FBF720FEA9B4DFED60C7A0FDA2B2 +:10706000CF76460F4BBC3F9E2B3B6790FFE90CE66B +:10707000CD76C7F95F123FD4FCCEB85E0918DD3972 +:10708000A38CE883C67F07F6A90F534F3ED7A0FC19 +:107090002BB23094CBBBD6B9E7462F0297CF7AAF4D +:1070A0007717F17BEAAD5EB34647391491898FEECD +:1070B000827BC17BB837C2EF635B1ADFAF01D70AAF +:1070C0008B454338EDBBCA1E5D03FDF7491692534D +:1070D000BD67BF5427C1F33D35EA0107D0F99ED7FC +:1070E0005C44F7BB97A8072C503F22E46EE8D9C553 +:1070F0007BB15F41D8CE1C26BE9BCCFF0C38647F91 +:1071000041263898F67FF44D1BF22F279563ABFB91 +:10711000255431C6ACCE4AD45FEAFB48FFCBB93523 +:10712000F1F9F79F5B28A17EB0A75539FAA609BFF0 +:10713000F3CCF206FE7B24129118E26F43B806F5F9 +:10714000142FDC77AA1ADF17F51BC61FB13723727D +:1071500035F6DFDD96A61D80F3BFDF30E5FAA5EA40 +:10716000C8F7B1AF951D69E7FA437431ECA7F0D6C3 +:107170009884F6746E835A81EC655F129FDE7533D6 +:107180008B5A4C726A9F9BD3E12E5B785EC8842732 +:10719000F709B9B257F0EBE47986ECC31D5B86C6FC +:1071A000CDC2A2A9DB9D57107F1772FBB54ECD3320 +:1071B000146FF7217D0F8397865E027283E8EDD30B +:1071C000E6E9AD97099FBA6638B91CAFE7FE81F1D1 +:1071D0006C2EF109D08B2ECA17000F98EE88D7CBF2 +:1071E000E786D7B1499FBEAE718F8FA3EFC4845F8E +:1071F0007B5A190B8F477839A9DCD5AA50A986C3C9 +:10720000BD48DAEADC443C298C24E217AB1F1E8F10 +:107210000D7CE9967ABCE8847862FFD14EE765C3BD +:10722000F083CFCA6FF4D4ED97C26F46BAB7B98274 +:107230003E9F5AB25442BE9C13067DBB0CE922E429 +:1072400065A9A85F727D14E424C95B054BA83F20A3 +:10725000F0CB288D79E616290978B0A7354FD0AD47 +:107260004A656E03A7CFECFA0895DB5A03F4DCD825 +:107270004F7A7588E8D4809FED0BFC9EF26E4D84AA +:107280007F4E4322FC95FAC476D013EBD04FB50B5A +:10729000F544E037BB5E7B96F4C63DA0075A60AB71 +:1072A0007BBCAC06F5C62ED01BF5E0D0FB4A47FEF2 +:1072B00044FEA9C475FE55FCF8B3F2EF11DBD30010 +:1072C000BF32500F033A1E06BFFED9758D32598F5B +:1072D000EAD5D690BDB5AB41E670D64E111DEF6B29 +:1072E000E0760DDA1BC3E975863D62D407E5DF0C55 +:1072F0004B025D1A7649CAB86FCD46FE54E8565D1A +:107300000CEA99FAEAD975DE4BB7230CFB7BA4F3A0 +:10731000059C675CD80EF61BE9277B0CFD2402E771 +:1073200028433D43F7E2BA6F1D5833BB1DF4C12E0D +:10733000C1676CE3FE93F3156B5FAD03EDCEAFD980 +:10734000944DC14FE743F7A17C177AD21CD3BEFE00 +:10735000AFA0A7BFE29E818E1420A72E38D7C431DC +:107360002A3D87BA560E75C5C3F4F44CF45B02FF90 +:1073700047FACC62D602D4731FFE937301ACB76098 +:107380000C97034BC5B8AC34AE7F3FF4F0233F9E5F +:107390000074D0A9654E4139930ECD5D306E1CF658 +:1073A00083FEE9383FD4D3717E58E7D3FC61E37E96 +:1073B0006A7597C350F58543DE6754F28BD0390365 +:1073C000E376CD26BE3686F383417F5692BFAC501E +:1073D000EC6F247F19FE59A1FF68637DD623A13F7E +:1073E00002F6A3762BA87F8724DC4785D87F06BAD0 +:1073F00036C6613FEEE71D10FEB887AC2C05FD2CAC +:107400000FE53983E8EA3DFADFA0CFC03C47B33D42 +:10741000A4CF3C24EC19FA43B9B4ACE400FA2DF63D +:10742000D8220BB05FF7821CDF1AA83F64877E6802 +:107430005FDCA0BF6243BFC7DAD112FA3D8E17F2FC +:1074400073809E99D0AE5BF2A9BDAB92D17A7A954A +:10745000D0332D0D35B88E6D6AB8C4EC377F7E34CD +:10746000F7F366D55BCFF59BF859E6ACC4BA874114 +:10747000DDE04B3EF4DB25D65302CEA0DF6C5F543B +:107480002909F51BC6A5669D9F08FF007B04F9DD51 +:10749000CCEF95EDA883FDAD7AC112443BCADFA9BC +:1074A0007D0DF77B7BBFA45AA4A17493EDFCEADEAB +:1074B00076B0C736B5C23AC5A88770BB706B2BAC27 +:1074C00003FC7CB3F0FFDC5B95B7BF0DC66F1FC735 +:1074D000F1BAB7497E16EFAF7BAEACA07FA4FBCC70 +:1074E000A3547FBF4C0EA2DF3660EB79B604FD617A +:1074F0006139A8637BD323D4BE37C0DBF77EBC766B +:1075000023B6EF8DC8CA1AA86F5F7C8AFAEF69921A +:107510001504EBEE8603E4AFD2A356F257ED69589B +:10752000E85A04FBDAD29A17447D6B7713F743EDE0 +:107530009E7B8A5960DCBD7BC341F43BA656466402 +:107540009447867D9B7CDEE3A3F9FEBB30FE02ED13 +:1075500029E5BF94F1FEF6E42912DEDFC4A75C84BE +:10756000377965CA7E176CE4D7A339FDD95A2CC187 +:1075700037014E290DF25907C893BCAC1043BAB07D +:10758000B5D8E9F91BA3397EA630D37D51DC02E0E2 +:10759000689247C9F7698C4BBE57660D06507FBA93 +:1075A000DD32A0235C0C3F63B2DF343D9629915F4E +:1075B0005166038EAAB87F353D6C97FE1DCF61E101 +:1075C000CF7D5645FA0A8E033B18F9DA7D61590AD8 +:1075D00041FD2F5007DC19F4A71A704AF6AB660874 +:1075E000FF6B0DFAF5F082E27ED6EF8DCB46F9EA1D +:1075F000A67663FF869FD5E023DF1FEBDB8AF0BA18 +:10760000DDA2B499CF33923F18F78B747EAFE68C2E +:10761000A01D7F5F53A6B414EA7F097B22A8BC1487 +:107620003AC3D2AC4A6263033AFA470716D3F90C5D +:107630003B7FA85F3844E72DD4EAE8FC39789E0008 +:107640003AC5B83F19CE71661CF29DFAE1CFD15D03 +:10765000BD4652D1DFBC5816F2E0272FD4F8879EE2 +:10766000AFBB5F26FD2CD8DB3EEA2BE40FF7137F80 +:10767000AE7ECF9A1582FAF619BC7E742CD7B38CE5 +:10768000F3DF6E61D224933FD96765C41FF718E713 +:107690006F583559C6FB6AB2CBC019D987AFBDD474 +:1076A0004674B9406148D743CFCB7A97E279C3B3E8 +:1076B000687CB6386FB5B83F38EF793CAF3263F8C5 +:1076C000F36E6B94493F387EF0C56D6DFE91F709FE +:1076D0007F12DE67B6D8E787452109CF7D6F4D6001 +:1076E00000F531D00F298E9AD364277BC867EDA3AC +:1076F00038E3AE30F01CDA7706E129327A9CEFBE2F +:107700007AB9D77CCF79614542B815C2BD5A82712A +:10771000BC33F0D4B8C7CFC7EF51F2678F7CAE9EB1 +:10772000D81A17EAA5F1F8E8F917D0EF6C9CF7D84A +:10773000B75F7E41F78F1C57BED2FFD9E2CA19FE50 +:107740009C7F2AAE5C5D70F1B8F21E8C2B4F865286 +:10775000F0B5E4B87281882B170CC695C3CB285EB0 +:107760005ACBFD8446BFF17EEE57A82E10FE69115C +:107770004F36E2C78BC6E66E6D2B8BEB2B7B973CAF +:107780005064DE8745C4B38C76438E1AED357ECEC9 +:107790007FBF28D6F1D7CF9F87F6F65FF4347553B5 +:1077A000D6C8FAEBC87EC3EBBDE4373C963F85E410 +:1077B00090E137BCF6B10958762D61763C77D782D7 +:1077C000178BF0DE2D055C8F39F3DD09B9A81F2674 +:1077D000C7AF76CFE5F12B631DB7D8A711BF4AE637 +:1077E00053065DE488B895CF1A6E437DA1AB81C77F +:1077F000D1EE0BF3B8D6A7F1D7DCA4F89689BF7EFB +:10780000DD7F9138961B7DA0709E0F4685E6FB11AB +:107810002F996A47B961C09D295AEDEF609D875E37 +:107820001CB7DF1C475929F0F85811BF7F03BEB0C1 +:10783000EEC2CD59FC7C9BD4E1E0BDC17B57D65054 +:1078400078772D03787B701FE188791F069C3F6D48 +:107850003FADFF4BFBC947BD11E0B7D6D5F3E309F8 +:10786000B0EEDAE356D21B8D7D1D9324A2FB75FE8C +:10787000748AA7DE8E4C0AE9F3EB8CF4BBE4FB3E82 +:1078800026E94C463FE30D32D16FEEFEC5AE321510 +:10789000DB9796227E3D82C23E3B8E173EAB4EF674 +:1078A000C83F8A076386CAD97D04D7B926BE561455 +:1078B000C783BDD817CE31AE5821BFE8DA24BFBE8A +:1078C000519E17FA8C6ED30EE27CBF1F4DC281BD54 +:1078D000737403C5B1375BF539C88FF644ADAC0D91 +:1078E000F0B0B7412678ECAEE2FE9DDD67BEF96CE4 +:1078F000B149CFDBD370C0191EC62E35F4B4FE7C5F +:1079000035816F950423B508E2025BF8315C5F6B4B +:1079100089F422BD0CC69DE76A641F249FE7884D49 +:10792000CFC7FC8153FB73BC189FDBFE9FE1B1CA3C +:1079300030E733CA5B453E01C6DD65B47558CC25DA +:107940005791FEB1E261BCDFEBDD747F43EF97DB63 +:1079500017FAB532DD47D7820F4E615C3CFB1BEC5A +:1079600032E40B934E28B5089FBCB93B8EA25FD47E +:107970005A9C78DFC6FAF7CD85FBBE88BD6EC4B3CE +:10798000C75E7A3CFB55E403D90DC3CBB500FACCF6 +:10799000B3FF15E7D3A565B08F8F93F038BB3E4C8E +:1079A000FE1C9F35447EBDFBEA2FED7CF9977EBE21 +:1079B0008FF07C39239C6F300F012C60731E42AF17 +:1079C0003FEB2B220F82155F4A1EC3C8E39DC5986B +:1079D00047B17AF8F19F1DBE39842FD9CD32E18BA2 +:1079E000019FA98837D386C19BA69F935EF79730E6 +:1079F0002A4B23C3CBE83F49C0B920AEFFF8F01CA7 +:107A0000D94F9AE485198E227FE4357FE6568C079C +:107A1000DC6E0969B85F76A593F42FAB1A8A219FB3 +:107A2000843FD2A393CF871AF335D0DF827604B098 +:107A30000E5B5690A1BE06E08C5814826305AE6FB3 +:107A400055D8D30ADAC505DC4F67F1688CF42E2BC4 +:107A50005FDF559CF133D497A1FFE78A2F21DFC563 +:107A6000D8EF67CD234CD65FFE593FC1E563397F20 +:107A700019C94F00E79A33123E61EED42891EF8383 +:107A80006E615E6A69520E4A79FEE760FBD918D4CE +:107A90008BC08043385F65F1901DAEF648E49F735C +:107AA000B51FD202786F618F965E85A9529D5A1DCF +:107AB000D49B6A9C03DC0F1AA5F1CBC57857C09EF6 +:107AC000800F8D871C0974B69C6D790FE3124DCC25 +:107AD000D40FD659FEEADBAF627EDFF2A4E7CCD248 +:107AE000908EF2220DF9F46543EFA1E555D7334F9F +:107AF0009BD65B559C9A753E05FEF139F6398ABBDB +:107B00008AF123DDE387ADCE679E06F9F11D9BD692 +:107B1000827064553C88D351FC41E970F2C680A361 +:107B20007B750F73AAFCFC783F77075815EA7F77BF +:107B300057EE70727FB49E208F92CB0D405B7D8894 +:107B40001756EDA2710B87EA1A689F3AF27C651FFF +:107B5000AF393511B6ECF433CA9B7115AC8F2D805B +:107B6000FBBBE5672EDD9987CF13FDD11BEE8CBCE7 +:107B70009C0EEDCE4ABB8A7E2C67ECE819ECEF62D6 +:107B8000A98A0BE6B9FBCE908C7E1DDD27531CDE47 +:107B9000E5EF6461D02B36A94517DDE7865642A68E +:107BA000C1BAABA093F417871A464F0ECCCBFD2475 +:107BB0004ED4DB4DF850BCA5DD897CFE9F9DDFB81F +:107BC00007A33D791DC791B33114D5DB0A3B5FC7CD +:107BD000B8A2BE361D951FB64DD2097E7A31E3E7B5 +:107BE0003DE4F835B6CF915391D9B1AD859DFA41B9 +:107BF0008047F879978E7CBDECE33F6D3C88EB02C3 +:107C0000BCD08ED87A57843542B9ACCECBD6285466 +:107C1000D7B1BDF1B9521DEB8E24F82F8BCD23F8CF +:107C20002E2BC88CA2DF877D0CFB9D0E75FCF738D0 +:107C3000D80FEE1BDAFF1495F6A3FDBDF593CE9990 +:107C4000F9500725F138FAAF1A63F34E21FD35B626 +:107C500017D1F8A8806B07C2677CFCFC8D7E7D3D48 +:107C6000C2A731BA602A92C1E0F3436D33F3B390F7 +:107C70004E39DCB68A788DDB9F08AF6DEDE7DEC24A +:107C8000F8E29F0E493EDCC7B2D8DB545F16CD2820 +:107C900072F986EEBB31C6E3B88D51DF7E6C37F6E4 +:107CA000B3ECD076FB82D4F83E2F755FC9F799BC50 +:107CB000BF16115F6A773ED5857E31ABEB275D2815 +:107CC00077500620FDB68B7325E3915CC2EDAC7650 +:107CD000E17F84735862708E0E9CD8741FED5887B4 +:107CE00073D84B86CF036B7789F182AFBB1495F8BD +:107CF000BAD16E2F11F63BCCAFE5207D893F98BFFE +:107D00003587A7BB31E21F9D1335AE9712FD326B4D +:107D10000B8B217D863DE4E770E4E931B2E3153950 +:107D2000786515E2BBF5837E133ED99D2C88FDED69 +:107D3000BFB404516EC23C31571AAEC7FBD17E7C32 +:107D4000C38CCB8B302BCA538D45F40ADC0FB43B6C +:107D50004DFDF374F23FC31E23577A878E67627E10 +:107D600074B1239F4DE6C3E34A84BF38890F334F74 +:107D7000D6B07CDCE0C371391561C8171C55F259C7 +:107D80005B1AD2D1FBAD281F1CACBA6D304E43F646 +:107D9000AB9107218B7C6F3EDE89C8024B8D6EE470 +:107DA000701DBDF181B6A22CBAD7014B1ED68F48EB +:107DB00057723F5E0FC64B476F7CB006DB7D913438 +:107DC00055A6F6876B6AA1AE7C92CE6318227F0718 +:107DD000D533C4F7D1C1D3BD3E185F81C88AFD83B6 +:107DE000559477333A929897935F9698B793CCC708 +:107DF00055A6CA38DFE63259BE12D6DB0FFB41FF6B +:107E0000D3A640D1A99A2CA202DDA2C4D71F27D69F +:107E100037F0345FD453CA2B4FE17E30ACCEFB73C6 +:107E2000FA51FDA7EE40FF902AE067D04D07D20D32 +:107E3000D08B0BE906E8C721E46B874BE413E6859A +:107E400013F2B99A043EEFBE82C530EEB2EB51296F +:107E50008A7ACB6E5BDFCC2568B765C841D40776DC +:107E600097421DE547853D887ADECA82C0128CB3F1 +:107E7000AF2C1071B61F6427C4BD1B0C3A29E072E9 +:107E80007724FE6FC0ADF7AC23867EF89D8F72FD20 +:107E900064E76BCBC89EDCED0D7995328CDF6A5EB2 +:107EA000B4EB5786669EA17C1131EFCAD0E997A545 +:107EB000499FBE9F41FCBBC4FD18F5AED6CED2DFB4 +:107EC00001FE76B77651B9AF355AFABB62945B477B +:107ED000A8DED1DA43F5F87891AF09E885F14B6F68 +:107EE00038514E8C6E4CAC27E70F380B12E3D76E2F +:107EF0007F627D70FEB12C21FFA4BBF584D8578C26 +:107F0000CAAED63354EE6BED13FB7C994AA37FF2D5 +:107F10003E92D74DDE77F23E87EE2B116E2EA07388 +:107F2000C45FABC0BFAECA5314E7BBAA24FC700940 +:107F3000EA59AC87DA3B5EBD3D344E85F68FBFD43F +:107F40008771D34DA0EF23FEB12B227A11EA2FCFF8 +:107F5000B974F4B7BB0253880E7BC3079CE877D98A +:107F6000145EE342FBB168CBEA847D049C4748EF92 +:107F700050DB139F77056AC9DECC67FCB9C10F9946 +:107F8000C2F121599E0FF2A98FB2283FEBD3F4BE64 +:107F90005E3FCFA3DA52C0E3DF5BFC3BEA90EF6CBD +:107FA00009CBA44D6F11F2FF7DD0E7501E59D9C007 +:107FB000537F87FA8600F031290E2783FE5304FD94 +:107FC0006F6955980EF29655C7E85CC9EBA65ED965 +:107FD0007933E5E195C59C734CED5B0A4E39C3944A +:107FE000A711A1715B0A8A280EBFA132568774CEF1 +:107FF0006499A5809DE129DCA120FCE15EDE289941 +:10800000163F7757789582E38BB624BE97A3B627A1 +:10801000BDA723E0C7AEE8E3F292717F763EE3FDB1 +:108020000C38BBC23FA7F65B6E632AE625307F7231 +:108030005CBE93F845AA80B7244DE378CE6CECEF94 +:108040002971F8F85CDA9F107F3A8C3CB6A4FCEBFF +:108050002E511AF94E51516E16E5FDA2BDF44C7D1C +:108060003A9E738378DE2D4AE33CA89798ED9BB443 +:10807000CA447B58A9CE4C68F786F313EDE5485106 +:10808000427BE9AB7CBD91F0C7A7CB09E33D658995 +:108090007E8CB12D89EB1972C059909FF07C74636E +:1080A000E2BA23ADA7D7FFF665C403B0EB54B22FF5 +:1080B000023CCFC515007E9A36F47E6C42FF02F872 +:1080C000178D37C19F6571B96F93237545263DA9FB +:1080D000232DD2C8F3433B451E50489D7391F3F7BF +:1080E00016F0FC91CD7E4E3F9B0B569DF1C1D49B6B +:1080F000B770FAD9ECE77960EBC6746BE8BFDB00C8 +:10810000FA39CA0347EC0EA6A23F09F452CC033B4E +:1081100082F960402F8E82080BC37397B5AF17F5B5 +:108120007E762BF3A1FFC3E5ECE7F51651F7E8A740 +:10813000305F17C0C9EB4A27AF1F823AD0C5BD8256 +:10814000FE0CFC1B5DD023D5C0BA85AC5FC2B8E77E +:108150006DE39FB807F139C03A658C371975CA537A +:10816000B89CB13AA8A39FE2E0C78EBA69783EE412 +:108170006F48EF774662C81F06F95BD929CA57BD19 +:10818000A516AEEFB2A1FC08E03E7BFCB438DC0DD6 +:10819000B81DF4F33836FDC17C9E80427E71A39EEB +:1081A000E2873AC073D1781E37013A6F186FA2F395 +:1081B000835B0C3A4FE497C9FC33996FDE863CC968 +:1081C000ACCF95C99A95F4B85BE3FBF6D1BE1B71B1 +:1081D000BD47047DF588FD7F5BD41D2C467CEECE2B +:1081E000E27033E215F00FD903FB1FFB74A40FA755 +:1081F000B9AA448BE0F8A22D0D09F050DB13EBF97E +:108200008CD793F9FA985B65A69BFA9546DD09F53C +:1082100082A6CC84BAC1E737B706293FF4DBAD5557 +:108220009497D6D5AA517D2DE374704F31181072F2 +:108230003CCF249DF5D33946C9FDBD32ECFF47E361 +:1082400055EE9F0BC67A31AE305A8F4A76C6E90199 +:10825000FDF96B8AC377D3791BEC3AC67D5CFE08C7 +:10826000F9B736DCD5579B42F6120BAE6188EF6E3C +:10827000921B0ED51E1D8FFABB95EB79934E4419B8 +:10828000C6CD1C4E5E77C5FE4A7E58478055B84C19 +:1082900074EF2E886A1ACF2FCA33D3DF466147EDB9 +:1082A000B993F1F9FDEA01C44BA0A7579650BD64FC +:1082B0008A4BC573703B6914E6ED43FF7537AC27F5 +:1082C000FA735AD55EA2933A568174E2742ABC3E80 +:1082D00043D43D8CD735A843E154066254AFE6ED54 +:1082E00069059DB1C5504FD3F2C8EFB7EE86DB5E8E +:1082F00041F9EF2C60EA78294ED7061D3BAD3D31A0 +:10830000A2DB324E974E678CCF17E474EBF40CF07F +:10831000F5568B76859DA2FE3AAFD797849F403C59 +:10832000CA2BD0897E0D781BF7B1A538FCA3E1EEEE +:1083300023BF91E929E85268E1F4B4A79045CBD076 +:108340001F7D2BFA5AB0DE770CEBB04DA698EAA34E +:108350009B30C7235E8779986A6A37EE614F61C4A4 +:10836000EB31D9B3061CDC7E0E07576C2FC1C1F070 +:10837000D7B8ADFD3518C737F897DBD9C7EB82BF43 +:10838000B93D315E8FF073BB951E5E6FE2EDF9FE75 +:10839000A85403F8B2E76F9661F35B3AC673BDDD8C +:1083A0005306F86FA2FFBB4AC2BF43F8A9ABAB129A +:1083B0009E7BC3401726FA0938B97DB6B14126FB2A +:1083C0006CA35A943E9CBFCD28EF13FE847B816F33 +:1083D000A31F6867AB92E00F4A2EB3D77646E8BD7D +:1083E00014167A05FD161B8AD522E477997551B6C5 +:1083F000109E6704B81F60DDB58F69A827A6580DC9 +:10840000FAF0D658395D55205EA708BA51344E4768 +:10841000291E9ECF9A5E2DEA223E9856C5EB83F424 +:10842000E4077A22FF5E24819E36087ACACEEC0CDD +:108430009BE3E1C67ED24569E09BAB41D6310FE8B4 +:108440007049382D007075CDB29FE578D747789781 +:10845000813085E7BD25A10C6CDFD3C0FD8F85750C +:10846000FD6D788EE24E3030E11C0501CE67466B23 +:10847000317A7F33A71E0D4FB8822A4DC27D1AEB89 +:10848000B80A18CD5F3A3E5CC0D7E3F16603CF313E +:108490001D09F1BC7827C7F30DC51CCF01ED08CF2E +:1084A000371473BCCD99CBF1DCA867D7733C37EA9E +:1084B000300FE1B9511F844F7124CF63C2B7758566 +:1084C000B7BD7C713C0FD5A23F89ED1478ECD46A1E +:1084D000098F3B0D3C0F73BC9E6BE079A886FAD7E1 +:1084E000F37A965F233CDFF037FE7EC21EAB7E86BA +:1084F000E857CD9474D3BE72035C2EEED1AC75C335 +:10850000D1C3EF85DCBC50A2D520DCD67BED9C0F1F +:108510003C6B8BA6A01F29BFE515B493D717DA8350 +:10852000A8B3AFCFFF16D5ED639C54B78F5ECDDBFC +:10853000C7B8A9BE2EFB36DE3ED643755B0E1FBF05 +:10854000CEC7C7AFCBE1E36D457CFCC6F9EB079620 +:1085500060BF5C0FADBB6E3E8BA600BCDA33AE0BCA +:10856000229C401F38827977B9D608C5C772F58832 +:10857000467000B8121F0C70FEEE6E60FB651FC1E6 +:10858000FB4899895EBF2ACEBF4AD235C9679A8710 +:1085900059891E98670AF7BBB5B2A8DFA477DC102B +:1085A00028A2717605C6C17A8093848F3605F0665D +:1085B0003879EA8F5E4DFB62CE018C3718FA64DCA5 +:1085C0007E5AE524BDCE7FC0897A5EC0D9E2443AA6 +:1085D000D954C0F5BE9AE243DCEEF31F72A21D0728 +:1085E000CFC99EF1E3FB33E4474FD443BC98576CAB +:1085F000CAF718462FF98F4036F29D443B62D3E20A +:108600009E3ABBC93E02FDA4067D8FA3AB629DF8D6 +:108610006EFB61D10FF495754447E5AB3A4BE0B979 +:108620001A19E8C5B80CE82BEB03C3E82BDE4E9013 +:108630002B9386EA2D86FEECEDECD1D08F91ACC762 +:10864000783B3786D0BFE347BB88CE19257AF776CB +:10865000766AE8EFF0C2733CA727D8EFB493FDE544 +:108660001CE07EA2437508EF22F15E9B618F1BF137 +:10867000963C17CF436515224FE1B53DC45FB67AEE +:10868000F877250CB8ED0F70F97F2020FC398A9A15 +:108690008F70AE28D10E22FC008E8702C3E8A51D84 +:1086A000FEC4B87E47DA4023F2452D90417CD89134 +:1086B000A754603CCB783FD8A6703DF57B021F0BDA +:1086C0006CDAF7705EC3AEEE107675476007DD7F3B +:1086D00047C1C5DF0B7124BD57B5E12AFE1E959138 +:1086E000B7E9700F109FFE3F62BDA7C5399F16E71F +:1086F000DC58FF501DD9B350E7F611F73F24DB4596 +:1087000007059F1EC4BF00F0DB49C8B7C3CFE2FE18 +:108710001D61EB59BC774701F035941B5597E67FF7 +:1087200032E8235DD5258CABBB033DC4A75D120B9E +:10873000917FDAAA535CD73183C331BDBA5F47FF5B +:1087400099A342A13CB97E710E63DE9D81F06F0258 +:1087500026FF85A380BF1F6FE0DFA7EDC7638DD61F +:10876000E1AB1D9E62BFACC9844F1AA3EF6DF0F858 +:108770002EF3F37C96740F979BC6F8B7055CDF3138 +:10878000F0270BF0A79CF0E70F027FDE1D1E7F3263 +:108790005D89F8D347F6A4166893EC26FCD15822DD +:1087A000FE7C28D601FCF910E737F0676B257FBF08 +:1087B0006DABFF1CE1CFD6CADA8BE61F0CC19F055B +:1087C0001C7F3AFC3F7726E803A57CBDC3259AAD04 +:1087D000343B0ECF64FF51323C37D68FBE9AF06BDC +:1087E00086C0AF19C3E3D71F0CFCBAC47B725547D0 +:1087F00074E4C38AA0F394703F31815C90FBA53090 +:10880000CFDE243EBCA1E01182B34DEEAC437F1B12 +:10881000BB9CDFA3E63F1E932F42A7FED24138FB4D +:108820004B09CE3BAEC63CCE8E323988F64E470160 +:10883000CFD7EE0870FBDDE0E706DD1AF0D95AC5A8 +:10884000ED4FE31CA94970C7F4C7C64C28418F738C +:1088500040B979D2AFF370BFDD8D8F248C1BEC1F34 +:10886000DC3107F965EAAB8F5F877E8C8ECAD8D57D +:10887000667F17D8BFD5B85F4FF10E054D3483EF33 +:108880007D9A7DC934E1E7AAE6FA5B329F76554DC1 +:10889000E17EE74FF16BA557754A783F863F212F60 +:1088A000A8B4A1BE66EC3F5DD0775A15E7CFAE0203 +:1088B000653FCA1FEFE2A84EF77105A7EF06017FDB +:1088C000973F4A7C25BB347C7DE934337DC738BF74 +:1088D000512E8DDFFC6AAAF1BE3CB439882EBF51FF +:1088E0003A0C5D2697065D76F8799ED7912A75BF7A +:1088F000394FE54EB1CFDCF1DAB2522AC34D08FF51 +:10890000EEEC966B083CD67E8267B7C4F14FDFCFA2 +:10891000F1CF06F6E623282FFC17A7F76F960ECAAD +:108920008B6FE2FC1E3F23FEDB1808DF41F7BC4FD4 +:108930003E8B754F50F05F717FAE7DC3D39BC1D727 +:108940003C57FCA0CE4FF23CBC06E749B9EAD0192F +:10895000F49376BC7ABB3201FAF646658A57ECF599 +:10896000F3EF0FEC8DAE7233CF3FEEA7083837FE32 +:10897000B815E6E98ECA2AF7DB284C9F4E2610C5AB +:1089800011BFD3B88A3D00EDEF23C10025395EDD6C +:10899000C3F0BD9D153F75E918CF72545BCF62BE21 +:1089A000F0A01F5BE09975B5E03F518E9743FDDB6A +:1089B000FCDE2F153F0CBDA1B4247410E1A1A11D54 +:1089C00093CAE57FA9D91F38827CEBB08754F1BEEA +:1089D00038CFB3607D0CF5514F304AFA6A86D05BD0 +:1089E0000CB9172D0DF5E0BCEE403FE3FC89BFB795 +:1089F00034447F40C664C287C7E37CE9711AEFE75D +:108A0000F68F7B869BE430D83F4FD2F34A9DEC1F14 +:108A10007740F8012E91BF3AAAFA18CA63C6FA9EA7 +:108A200045BD771CE3794CE30A62F3101F98EC8C88 +:108A3000205F35E81BCEF12CE2E5B82DC639049F46 +:108A4000FD16CFEF42FC9F6DB223FF1CA797E77185 +:108A50005C727FCDFF8266B9C8F95F8A9FFF25925D +:108A600047ACFF59C42F47934C7E5E2835C287A17F +:108A7000FAF06BB8DE41A1DF1AFE395A80FC413CA6 +:108A8000DEEA5B1D0B21DF1CAB473AB1F4B53319AD +:108A9000CF3576B542EFCD18FEF73B8B436FE17CC7 +:108AA000BEF601CAFB03BDF86DDCCFA7D18775F513 +:108AB00008FCB569787AED6D39457E807BAB998A83 +:108AC00074B8EEE6C73AC6E37E5B64742BB0F45824 +:108AD00007C9FFF42699F22AEE6F2A22B93F12DE67 +:108AE0006F467F8403ED0127F9251CD61E8A8BC2B1 +:108AF00018F263399C31A27BA045F263393C7DBCFE +:108B00005E29DA957EDEBF8AD73B92FC19AEEA2851 +:108B10008F936899317C5FC85326A3F378F0FCEEFD +:108B20005B795CDCD0F331EE90D0EECF4CA8DB0269 +:108B3000C1333E359E1FB1BE6006AA67ACBE389CED +:108B40003F01ED55599F89FE48961FD2D03FE63B25 +:108B50002405310FBAC3C6FD155759AAD3CF515CAE +:108B600098BF5FE79638DF993081FB2B6C2AC81DD0 +:108B7000C4AF76168C1232F0799C304F0CFA750225 +:108B8000BC6614E37AA1125CCFA9EA76BC6F63FEDF +:108B900064F84E9EC0F9B5912FC0ACE1C070711160 +:108BA00083DEDA8A431513B2F93ED1FE73A07C1C32 +:108BB00066DEBB4A6AA64D203D3C78E68B95684F41 +:108BC00033E2A76B3FBED2897AFEBA1A3B05D54F76 +:108BD0004F28BCB6CD4AF11E368BFCBA50A25FD7E7 +:108BE000139D87FEFBA726307D4635C0CD1AAE43C8 +:108BF0007E7BCD84DA6BB3609FEBC5FB1E1B1E5CD6 +:108C0000B08BF2A38DF73F9015C2BFBB5DA2AE2F14 +:108C1000B8F652C63316233C9F670F7F05CFE7692E +:108C20007492DFD1131CB0231D5D10792C198DAC0B +:108C30005D498F9FF3A9099CBE33ACDC5F95E114BD +:108C4000A588FF374DE0FAF6EDA25C2BE09D17EE0C +:108C5000EFE2F6611A43FCDC2AE647BF24C50D2A81 +:108C6000B99ED1AEF0F7E15217703D6389582FDD00 +:108C70001FA5BC43D033164F30E919A9955CCF78B6 +:108C80000A85229DA38FF4CDBC701FC3BC85148DB3 +:108C9000F375B03F56E03933827A0DF24FEFE2C4FC +:108CA00071772F03284E8672705F9DF4DD054F1596 +:108CB000EC438DAF77ABD84F6FA9760BCE678C7F27 +:108CC000B034741B8763A7867E76E3F93E31EFBE2E +:108CD000C17975D2273C017E3EEFE27E86EFC9B6B0 +:108CE0000A385D5DAADD85E733C6FF2C105E83750B +:108CF0004F6394BE5997B6B893E060B41BE5F78B09 +:108D000043EBB1DF8AC6E869F3FAA67BDE7CB17B70 +:108D10004EC667E39EF3C7F23CD4FC712119F9F00B +:108D2000F69BA71CC4BCFAEE55E7EAD07F7E37BBA2 +:108D30006214E95D13ECFCBB51197D1BF13B535BE5 +:108D40009EB5B003B0FAF63B15E28F79D54A11FA19 +:108D5000F7F362E2FDC46A65BF39DF2B4FE47B198C +:108D6000F95DE931EF2BF89E7CFA8C1215FBE58555 +:108D70007509F3BDB6DF29BE03E01F207D34BD3A7F +:108D80004CF95E3F9AA026C4C7D3C3038CF04DE4D0 +:108D90007D756744DF4679B9E532BB7A00D67AEA59 +:108DA000B2D31D68BF76B5D935F403762D6B9031FB +:108DB0005F6AEB3499E2E3FB2ACFBD4C796A331842 +:108DC000E5A965C4DEA67A46582932E7D765887DCD +:108DD000839CA3FCC7BCEA1CA27BE31C79C2EF9B6B +:108DE00037433D8E7EDF6D62FF797EBD0DF79F17A5 +:108DF0000E27E4ABE5CDD0859F98EFFB293C970982 +:108E0000DF93F3D5D6D94279E82F4BE62FEB859F38 +:108E100021F95E2F94D4FC98F8D408F952C9FCEFDC +:108E200052FB2D6AB992FD762A638FD9795E81BE95 +:108E30005BA2BCC7C77756CCC4F32C798BE7AA2DAD +:108E4000BAE3CBF7607ED0656F2A74CE45FB3282E1 +:108E500078FE9BFA2233E9BD15D032F17B72B91648 +:108E6000DF897E9827F7E00BC1B500825DA7D83770 +:108E7000908FE65A6EAEB899FC829AEA01F82F609C +:108E80005C5EE45A326662FE72EE57EDC17618FF00 +:108E9000AE4D398DEF43E9AE3486F9420B7AEE5888 +:108EA00040F32BC0AA404E2D702AB49E535532DB9E +:108EB000F0FD7D3773BAA630367D8D72FA3F609E25 +:108EC0008165A9CA0105ED20E5F4BDB8FFC818C544 +:108ED000128CCB45E3FC4BB4901DE5F9C423F6841A +:108EE0007B29EF49AC4F3E9158AF8825D6A79E49C4 +:108EF000ACAF9CC8E9B785F5D8499E8759E430C81E +:108F0000EBF322BF6AA9C8AF7AE26F1686E71E3874 +:108F10009A123DE0E3DBB3C17E973F544E71D8C750 +:108F20003EB985DED71BF8A92588F4F818F0853EF0 +:108F30008AC745C7E0BEDFE93E7AFF5E687FE7C1CA +:108F4000DC4C44E5536F2D3CFF33D4EFE55486F8F9 +:108F50007EA1B5AF0BE5EB952B9E1C83F2EFC2898A +:108F6000EFDF8F70FBC3771D0CEDAC3FC83C7FBCBF +:108F7000F7D727CF77E3BADF4DA940DBE10FC71E54 +:108F80002F413FC5F2877E3806F9DB3B0F3E349D0B +:108F9000EA0F1E9D84E53B47BF53B280E450740C3A +:108FA000EA9FC63C2B1E769D1D7591EFA0FDA3F395 +:108FB000AE1071C3150F6FE81B057C6FC591541D72 +:108FC000CBE54736BFC74BE9055EB651FB72804C17 +:108FD00015A838E753395F5C71C491702FE3BB1259 +:108FE000EFA9349A585F2AECC6C085866B7C30DFC7 +:108FF00079A1872CB5B3F07198AF199E67C0F30BB8 +:109000002CD1CF6994DA442E379B4F24AE7BD23AD1 +:109010007CFF9913399F0EE01B0C267D3ADF31FC53 +:10902000FB9FB344FF071F1CEC6F11DF11632AE89D +:109030005F2B043D3D31F8FD3F76EB68A0B315880A +:109040001C45F1E72B98E9DCB0DE9F9D6907504F86 +:10905000785FC8B10F6D9C5EDF69D5EEC1B8F5F9D8 +:10906000564D9B61CAFF5ADA75F3692FE04BD3F175 +:10907000EC2966FED774F4A0FC7578FE2EC86DF45A +:10908000DC34CD7B60EBE5D8EFA8A507F7D574F409 +:10909000A91C8C2BBDDBF34C1AF65BBA2F23E17DA8 +:1090A000C71BBBAED26698F4D37F942E1FAFE2FCF1 +:1090B0006B458F2DEA94B0FCD5CCD1C837BA247A51 +:1090C0008F7FBA354CEFCDA6566A361DF8E2173FB2 +:1090D000FED169CC2F6EFEE1B4E9A8D76E92435F52 +:1090E000FD37E43BF75BC85E7AF4970B2D482F37CA +:1090F0009633D9024AD2A9C00EFB3994F7E29E37C3 +:109100005D0792DD83F3B2A765E03F6987244DD404 +:109110005F96F15B615AE7FC188C7F4B4E0B6E82B9 +:1091200075DF468714CE7FCC42FCF58BB1D65FE06D +:109130007A6F3F6CA3F7336EEC4AC49BC6276DE48D +:109140008F683EBC360DE3518F7D629190EF0E1C0F +:1091500096881F18706BC46F58C2FAEFEC4FDD8809 +:10916000B983EF6447C760DEE33BA9D131997CDC6A +:1091700037D07E6E3CF25F7FC538C1B268E23AC933 +:10918000F870489C0FFE0266BC4AEE879CC83A3DC8 +:10919000DEDED402F2C11437697AB3D38E7E8D65D8 +:1091A000B3EC175D0FF092A9041717C165C5849E33 +:1091B00012E4839255A96DF75237C909EBBC83FFBE +:1091C0001AC7EBF8D1BCE588D780B27F7EF5BFB671 +:1091D0005A00BFF32D3DAFDF84FC16E0C1DF0F8FD7 +:1091E000AEFF6E16F127867932C6BE6ECAFB45D732 +:1091F0000C939FF0DD13DF5F8F7CF35D7CEF1BE54D +:109200008F1A4BCB04F89D1472F85D85D78DFE6DD7 +:109210003D4FA561BC6945CFA85AD4C74E1E9332B5 +:109220006580FBBB6F3D90325C5C61F95B99B5F882 +:10923000BDEA647E64C8DFB3F84FC0C79F4CD44E0C +:109240004F44B8B78F227B2C7754A42232CC7CC6F3 +:10925000B84CE73DF722BC17087FC10E5BA482E043 +:1092600078832778D83774DCCF2772FAFEA03CF4D5 +:10927000AB89A8D7D7F6913F20EF1A16C4DC94DF4C +:109280005A82B72900DF252C6C4718B2F66CDAC772 +:109290008D0CEE91E01E9C89F4B37C16FF2EDEA2AD +:1092A000FA4E92C33B6F66414B15D4ADD1F5585F72 +:1092B000049AC03D207F53B7389866A2E7A53BA12A +:1092C0006E3EFF3E533BDCDFF24389ED2B588CD6DC +:1092D0006D7AF8EF0EF33C8379614CA3F77CFF22A3 +:1092E000E0F741B97601CF25E1F785609FB71CE330 +:1092F000F9C059F61EDAE700EC13F582AF097DE7F5 +:109300007796109DB7F98E05DA62A8FFB16591B620 +:109310007814E32E66E41B3D5C0F5A31A3E734F169 +:1093200011A63CF275B0759B9C21AEEFA84CF912CA +:10933000AC7BF9C3B3E9DCAC91295F1E0DF5C6D94E +:1093400004A7CB23A4B1B0AF897B62BFE4F7FA6B6B +:10935000F48DA09EB597CF7F23D309DECB581F9DF8 +:1093600037A52C93BF27DECBE3C57F3E91417E42DC +:10937000E31EFFCC82E948DFA0F73057E6D07B4EF2 +:109380008673E3BE24B89BE15C84F04DBCA79B7E52 +:1093900000F01E064F8DEF78BD8E9E54AF191FDB77 +:1093A00068BFBBDA242E77F4D9F328FF7BDE74E2A2 +:1093B000ABDBF0FD37D377C836A172CCEDDF18A652 +:1093C0007CB8A7B2F877CBAA508FE3F5D2B2ACEB5A +:1093D000BA0A309F3CEC453D79F76C3B8B71FD87B9 +:1093E000F277E74C0E4F2A43FDD5123A8D7E8A372D +:1093F0006BB412C2DB160EE73D5322A59161E4AEB9 +:10940000719E6D1911FA1EC44005530E54105E5121 +:109410003D651C5310BF53C7F07B4A9DE4A6BC3B7F +:10942000637CAE0CAAE930701F6CB7F2F700A16440 +:10943000A999F49D213DF522FD0DBD347742E466E6 +:109440005C3F5756D95AD84F6E4AA4625599A9DD48 +:10945000DA5943EFFF02DEE970BED473B7D0F77F6D +:1094600052A73005BF07BA5B027A46BCBA5322F94D +:1094700095F2E4F118E2EDCA3A95BE179F7DFD160C +:109480001A7FF7145546FF51B88CF3F974A19FEF7A +:1094900095B67BB17DAF579570BECA1F803C83E700 +:1094A0002B7F506359E9A17BE47A7C4A643FDA3F21 +:1094B000B9DF084C590BF8BB045F429F86F7D849C7 +:1094C000DF271DB8592578E6ADD17DB8FFF45302EA +:1094D000CEB3399CB3AF5F4DEF996ECE6799B88F1D +:1094E0003CD62661BFF5D91C7FD62F6073510FB3D0 +:1094F0003285E218057315A9ED32AC476A38DD29CB +:10950000193FF192F7B21DBF2FB52B8DEF2B5BB634 +:109510007C633694BBA6F07AE66A493B40C4BC9DA6 +:10952000EE3BD7C1EAA44CFE1CCF05A8A71DF798B7 +:10953000E07B258777EE385E963ACF78B6C2FAB7E9 +:109540004A2C82F2FBB92C43FF8E7910FFFE68D3C0 +:1095500072A722BF7DC1C6286F644C627B91BF8E0B +:10956000BE47FB7EF04A8A5BBDEFD1D233A03C817F +:10957000FAD5307C7D7B19F79B357F343AE1BB66A9 +:10958000CD733F203BA5F9A33109CFDF053B356AF9 +:109590007ABFABA9F1D44CECB792F5AD477A59D963 +:1095A000636151135D9F70F1753F7CCDC1F3A93BA1 +:1095B000C61D30C75B0C3A6EFEC842F9029FB7C8A1 +:1095C000D4BF79AE9DBEB3D8BCD142EF9F357F6486 +:1095D000E7ED63F97CCD1F8DE279EE56350DBF4383 +:1095E000F679CB7BEB310F70E08712F9119A3FCA05 +:1095F0001179F06A1AEAF5CD1F49543F67E5F2B5D3 +:10960000F9C4F8348C4B3433F608ADF39195B7E3D5 +:109610007B2E88CF272C9467300BE436F269639D4C +:109620000BC1DFA6215CCF097DFC82D24F723ADFED +:10963000C2BF137641E5F577455E2FB6235C2ECC8D +:1096400035F848CC8AE3BB83BD5615EA4DC1DE9997 +:10965000CC840F7138A624E479E6ACED8BC9401FA9 +:10966000CF952DD95D068671F629837FDDB85BAB7A +:1096700086768B9CC0CF522A07F91BB1D55DB245C7 +:10968000F0C3C6DD330ACC75DE3F3E7ED975E80FE8 +:10969000AC2CE3E35F2C5BFEE21AAB49FE5907C634 +:1096A00084524D756752DD03F572535D496ACF4AA6 +:1096B0006ACF4BAA17F0FEF3D3FBA7A1FD7CB6EC53 +:1096C000A6EBAC4077F347F77F5382FA96B591EB60 +:1096D00066407D5125E73B373D2905290C25E0777C +:1096E0005390913EEC09F6DBF17728522A83A7D1FB +:1096F0001FDC74425224A0174F0F8F1337E138D567 +:1097000034AE87EBD14D3D6769DC88F30764A2E393 +:109710004D8173D46F65CB7FDB511FDCF0F1CD2120 +:1097200094030536CE97AC2CAC8D063CBFE9C46CD7 +:109730001EC713FCFF82577B0AF7A3FF5052907E8F +:1097400007E90DE7F5C4E9C1E8FF9BF2277F8571C2 +:10975000C7945BDF6BB342FFD756FE7E1AAEF71B92 +:10976000EC7219F2DF6829AEDBD0B8B0149FDFB01D +:10977000B2B817E3B5AFDBFAEF43BD522D5F4FF040 +:109780007B3DB5BF50023DA4E858E7755618F77AFF +:1097900076FF7D08CF3DC7B6F37A617F21DA4FE3CC +:1097A0008FFD84F72FEEBF0FEBF38F7D8FD7CBFBB1 +:1097B0000BD12F5AA1F710FC0F2B9CDFFD26492E51 +:1097C000E79473FEBEF98B5A4639FA839AB85C9CCB +:1097D000DFDD370FE96CBE0C7204F0F8F0BBBF3D63 +:1097E0007618E070B82585E815CE1B42BD3E97A3DC +:1097F0003CF0FD4EE2D7033EE0DFF4D1BEBE7EF486 +:10980000E3A74C73525C28D9AF0272EC38C9B1F9A6 +:1098100065241F9E9EA875E1FA46E9BF1C4AE8DF51 +:1098200055AE1AF92F1598F7D7D0E009521CD3DAA4 +:109830003F0DF1709B8B9F0BE887EED923EEA5BC03 +:109840009CF3C9F272AECFBE3BF12A9A17EC081D09 +:10985000F30DF5D976D2AB76CED6BC6ED44F67E792 +:10986000C87A823FC546F6D34E94F9D8BEB298BEA8 +:10987000EB9E8FBA03D2EA3DDC0E31CEF335E43BEA +:1098800026BEBB73D9955EE4B33B7D9A17F98BC1B5 +:109890002799B5271BDF8F33F822D6393F94789D5F +:1098A00041BB295EF1751B8FD77F7DBFAC174F364B +:1098B0003D17710A63FCA53EDF99C1F763C8BFDCA1 +:1098C000B53D243F73F7F832F11E5060A2FDB87B1E +:1098D000FB78FA5D833993E7D03DEC9CFD806B61AA +:1098E000591C8F99A65D8FF0FC9AF88E818137F80C +:1098F0008779A28BEEC9A578615739F747BC2983D0 +:10990000DE057AEBA4C9FC7EBB908750C9BF77D433 +:10991000C0FABF8974F1FFEFE75F763F9BF1F9670B +:10992000BD9F952DBFBF343E29E870B714B3E572D3 +:109930003E69C49DA761FEF2BF9585EF2F37D1FD2B +:10994000FCFF58E9A578B8D84FCAED8FD75D0FD581 +:10995000F9CBDF21FE32FF5B29E42748D6C353CA87 +:10996000FA8FDD0DE7CE64A90ADAA3AFDBFBCBF1FA +:109970007B3BAFCBE1838FE3BAF91605781CD81D8A +:10998000E2FCD67E3AE71B978573D0BEF853B985C3 +:10999000E6413F0233E35747F0A53B87C5330BE170 +:1099A000D5C00F2D518C27ECAC88EEC5EF88ECBCF0 +:1099B000B68CDE9776097C027CD3F8F798ECA47F0E +:1099C000EC2C9675C2C7796E8A33ECF4F1F576CE3D +:1099D0000B107E7EDEC2F3580696C9DC9F2BF29EEA +:1099E000FEE8CFA4F8771CEF06D2107E71BC1B48AE +:1099F00033BF57FB47E12FFC6314F0CE14BFFBA32A +:109A0000F04718E32FF5B98177396B8DF5399EBD95 +:109A1000B92357BCEFA39520DEBF21F0C5E0B79373 +:109A200026877F83F832A8278BF32CDA5648F8F97B +:109A300086E0DF1B52393EEF73C5C87E909D6A06F3 +:109A4000FAE5C11EEF47FC5893926647B8FC1EF03A +:109A50007514C88F70AEF02F083B2DA52C4CF6F274 +:109A6000FC080BA29E712388B12FE07763F5443B7D +:109A700015BFF43258B70CADA3FF2CD14FF089239A +:109A8000B1BF2EE26A5C5E754937EFA5EFAF78B9DA +:109A9000FDF486D4FF0CE6952C447B1DB6F6E777E3 +:109AA000DDB204747F4EC4D9CE3C3795E2C886FD42 +:109AB000FD8980D799DEE9E9E80F329EDFC406C848 +:109AC0001F00281BD906E76B4E53D390FE06F1E327 +:109AD0003F5D023F34FADECB39BD90E24E801FBCC1 +:109AE000FD5189F012EE93E639175623F85E24E80B +:109AF000D533515F1AA8611194C3869FE37C8765B3 +:109B00003FFA3974165D46FA54A39BF202CF5963AB +:109B1000EBD1FFA8ABD608FAC39ADD6A1A7E5FE7DD +:109B200082C41EC1BC860BD903761C7F6101F4C9B7 +:109B3000403D7AC0FE32F6FF381D750A8CAF2FA368 +:109B4000FDCD9D40DF4BA41F40CB213F3B7D070156 +:109B5000FDDC66789F63FD69E4DF0405E17006F9CA +:109B6000C975CB9491EDDE9BE4B325AB4CFAFA902A +:109B70007698B37A0A954F5BD09FCAFAA70F17EF72 +:109B8000BF493E47F38CB84ED7EFFF86797D37FD4E +:109B900020C90F92843F4DF1BA84DF3F5B6E6EF7B0 +:109BA00099F85525BF273683458B25F427F37A4A44 +:109BB0005D5F14EDA966E15FCA3ED53F13E92DB59F +:109BC000B2872D443BE72D4E57973FB9FF29B4CBC1 +:109BD00033EAFA0A11ACCDC26F9AAC475DF6E4766F +:109BE0000BDA232D56467913CC994A7C0D98E89BC5 +:109BF000E8AFAC5D3B4925BF72EB917DE8A7AF4D67 +:109C0000297DF5BBF43C5DC5FD2C5304FF9ACBF9CF +:109C1000578BD345745F7BCF78DAE79CC9E1EB279C +:109C2000C17916CBC1E9488F29D69E87FA60BE2537 +:109C3000ED4C6DA33CF09E891877ADB53315FD2131 +:109C4000B5993C1E53E32E2DFB1D94A7CEF9CA6C8B +:109C5000A8A74FB2F23C2F87367FD2B491E3D2CB84 +:109C600027717DADF6755718F5B85AB78BF8F8B669 +:109C70001DE3E9771F603DDAEFE2DD3EFA9DB2E5D4 +:109C800093B89E37677268F9249E9F319DE2E193F5 +:109C9000F877E36AEDAA1FEDB327DC7B66209EFA16 +:109CA000807FD0F7D6F41A7F16E0692DFF4603FCBB +:109CB00075B647A07D362CD00D74B0B7B62F0FE91E +:109CC00064EF747B702DCA59162C44FAFCB2146DE3 +:109CD000E7EF571714E27B2A75331C41DCC7D58E9A +:109CE000CE4AF4C3B265B68CF34E722FB3E1F02CBA +:109CF0002ED7ACECBC4117D079B7BB2F8F7ECFC22B +:109D00008EDF40C063F0FA29586B13F99D787D9679 +:109D100093D74FCDFB751EC2E114D278063E7F4922 +:109D2000C5F62DD0DF02F2EF6E29B29FF2B6802287 +:109D3000318E31CBD947F78D0F1C5E6CEFDC8BED8C +:109D40007685FB8958D0F66EBFC9CF9AEBE6FD65E4 +:109D500058AF8DE6633189E8AB2003BFCF619C6FBC +:109D600091A3A782DE836BE6FEE47D355A776725F3 +:109D7000FE6E079BBD16AEC0EF2E7FF3678897FA85 +:109D8000189F0DECD82727717E38145F35F92CE227 +:109D9000D1F3C52407E3F8CABF0F530BFA1CF21323 +:109DA000C457C4AF166769E542C27B75317EC704EC +:109DB000302B88FAC32DC51C3F6F59A7A8F8DD5D6D +:109DC000C04BC2C75BA4602EFA556AC5F7C96F7154 +:109DD00041FD22FC60E1460B0B9BF4C5CF6F76443E +:109DE000F877D4D5FB5B60FEC517CAA6603CC66891 +:109DF0005F6C4FFCDD21A37C59A97912F172514AA5 +:109E00001FDD17E66A619CF76EA98FEE0BE1A8D300 +:109E10007D001D55125AF8747ADF37F1BE8DFE565B +:109E20002BEF3FCBF92AB5E39C97729F875C5F3E8F +:109E300010213829B36D80F3A9329F5F2EE0F3ED36 +:109E4000ADD54B119FF72E740751CF7CC2DE3391F5 +:109E5000F039E9BE53441CE183F2D0CB782E0C9745 +:109E6000BA88FF86BF409DAC67491E2DBD9DFB474C +:109E7000E37EEB2897E7F83137EF50397C019DB34B +:109E8000286F1E91A2B83EC69F12E5748CE4FF4A6B +:109E9000A05FCC87644792E57E1FADDB0CF214BF58 +:109EA000D7BEB227717CF389E1E3034FA09F794AC3 +:109EB0005C9F89FBFB386CBB77FB484FEE47A59452 +:109EC000F2EED7D038F423723D49F3A21F6BF7B2FC +:109ED00022C287142BD7AF97748E3FD026F426D496 +:109EE000B70CFFA3C19FE64CAEB54D06FEF4D7C933 +:109EF000B56C32F22D74665D4ABE86E887FEC78B6C +:109F0000C57D2E17F18455FF0DFA09E88727459C7A +:109F1000BAEED962FAAEE82A49CD453D2473B2A122 +:109F20009F94243C3F6F0953DC237E7F317E7FE288 +:109F30001E96E33D50FC2CBC9EEEA591DF77D30C22 +:109F4000AEA7B10853BE7C19BF67F3F71CF05E13D0 +:109F5000BEEF00F7A80E738F37E13D06F93D26FEF0 +:109F60006E6B27E963CD80E7481778AF09ED3B3981 +:109F70007C16A07C35D16F46FB7E0BE5650AF8A404 +:109F80004FD17CEBD05FF12CD89170B5BFC326B216 +:109F90008FB4E9A8677F505EEBC6FB71A35D58865E +:109FA000F6116B44BC40FFF61CF40FB6320DBF3FF8 +:109FB0000FF73F7DB8EF0E6C3AE96A447CFAC26451 +:109FC00039216F6960928DE04DF10BD4D33A1C4278 +:109FD0008F53C7E03CD38B0CFD5BA5FC86C522CE1E +:109FE0007FD3759E30CE774EC457AE99CCE5DE3523 +:109FF00093795E965137CE07F3D33CEEA9897EE480 +:10A00000D064236ECBFDDDF8BB8864BFD9A2AE253A +:10A010003ED4B343943766E0CF6EBBFA3CEA0BBB49 +:10A02000D7A4ABA80F1A7874E6CC38D273170B7E7E +:10A03000D03099FF5EE99F984AFA2DE013B51BF5E1 +:10A0400041BDF66D599C97BFD773F2B951942F3A21 +:10A05000A8D7BEED36EC22CA0B3DD953CAED228BF0 +:10A0600044EF010E3C2AE0C5F8FB0B279F2CA4EF20 +:10A070009B9CC73C161BE65184F7625C49EFB1918B +:10A080001DDABDFCC114F21BCBEC11F40F5E90077E +:10A09000C68C91E2715B668DA620DCCFC7EB13BF47 +:10A0A0006ABACF93E23B8C4DF6588939DE6BD48D7A +:10A0B0003C0CACA33C7942E8354D6E5E1F480FDF87 +:10A0C0008578F498F84E63531A3CF70C078F813467 +:10A0D000DCF749A6F4215D7D7E2CF0158E1F849F50 +:10A0E0006857E1F94F3E594EE7FDBC45127602B77D +:10A0F0000306F5FCB7E5FDF44D2636F0D81DA8DFC4 +:10A10000E559E877424E5A07026837EB6FB9559424 +:10A11000B727A33B4EDF8774AA0582299703577B95 +:10A12000E7C189785FC970D92DCEB3D3A68E99EADD +:10A13000899FA379A383DEF76D7EEB5C03BE27D8EE +:10A14000DCF8F17C2A93F25AFE28F56F2DC1FB3C16 +:10A15000E488E7AF14F112F381970A566BC0BBD9BC +:10A16000F9AE1DBFD3E1EC650328D758D640CE70B9 +:10A17000FA7CF3DB9B42968BE41125EF83ECD9E963 +:10A18000241F48983527E5D33073DD32B47E6290C2 +:10A190006E129F9F04DB8F7EFF2469BE376DA199ED +:10A1A0005E6EA7D1FD2DB547A7DE81F1C109E1DEC5 +:10A1B000C9D9E2D0D0DEF80737B7AF01EFD01FC45E +:10A1C0003A793CFD4D9B361FE9366346CCBED0A4A0 +:10A1D000A7BC24F8F52287F1BBBD31BB99FF18ED70 +:10A1E000D36B878F1FBD28F8446A1F9777DF6407FA +:10A1F0002D66BFC28B825FBD3459A579C6BEC5FD31 +:10A20000F3DF647FEEC53CCAA69E0A8AD78E5D1D29 +:10A21000233EF1A62D4C76FB9B921C7904F5D42DA0 +:10A220003CBF66E94312E1E9E3476A2CF8BB98CBEF +:10A23000F74941CC8FBC5CD83D4B41BE703F00CF4D +:10A24000CFC373103C50AE54A03FE0BB168A4BBE48 +:10A25000C5E87D88959DCF523C3DEF161674E421EC +:10A26000BCC3A79D5C9F59B5C11BE7776955513B9E +:10A27000E68919F059AE8569DCF24696C14CBF7F7C +:10A28000929C47C3CCF92E889F4712F115E5506286 +:10A290005EC6278E447CD12F49EE1A72460E668A1E +:10A2A000F7A2B9BCFD7F883924EE008000000000D1 +:10A2B0001F8B080000000000000BED7D0B7854D5CB +:10A2C000D5E83E8F792433939C0909494842CE84CE +:10A2D00004C2FB24841812C093071814EC10100158 +:10A2E000512721206F06F0817FB14C48E42568A8F2 +:10A2F00051A20519B4F8E8DF476811A9601BC243F1 +:10A30000DAAA7F54E0026A0D62A956C4142BDA5B04 +:10A31000AC77ADB5CF99CC4C40F0EFFF7FF7DEEFD7 +:10A32000DED87ADCE7ECC7DAEBB5D75A7BED3D47F0 +:10A33000F6F74DEE7032B654509395418C5D1CACDF +:10A340004B5A126385658CB144C63A770AC1A73D62 +:10A35000F0DFAC752C2B606CA19F69EB152836F5EE +:10A36000606C04BE6F5F8DF5EE62CCFFA4C6D85959 +:10A370002960651263B36D9BE899AC41E3E18CCD34 +:10A38000631D56D607EB775ABD831973B5333D0865 +:10A39000E3DDC39E912642F91BFCBB1EEB8B8CC1F7 +:10A3A000F8299A4ACFCC8FA01EC0B7E0A3D6C3B677 +:10A3B000026CAFEDBE2D05CA2B58AB6B088C23FB8E +:10A3C000AB11AE5E0A53EA52A17DB98FE0495EC679 +:10A3D00094FA3CF86E672C361FE06BB6313597D196 +:10A3E000DF37F0FFB9C1C8327B1ECA76A39C05F3E4 +:10A3F0006C89FCBE78CF37B6F0B2096FF1F2727695 +:10A400006618BE0DD23C43EF57042506F33BBC5201 +:10A410007DF4430B638132FFB60E8033B04A66F59C +:10A42000F0DCECF8C1731D00E7F2804DB1C1F3CB55 +:10A4300098D1CD6E782F88B25F28626CEC1AE81242 +:10A44000E7FBBE2BB883F0EF1F8A78AB5FC7A6B6D9 +:10A45000003EEAEBE009FDDFA20984A7127CC2F806 +:10A460008B107FF06CC37173183BB83297C61F6BAB +:10A47000CF9319CCAB42C90B60BFE3A1C31EF074EC +:10A48000435F323CA57DB6A00DBA603263CE9E8C90 +:10A49000DDC0A7CAC6A68D6A457C1E705955C9C3C2 +:10A4A000DF29F07D2CFE07D4BFC139BB01BF57891E +:10A4B000CCEF06B817D95A57E3FB8BA96FDE81F4AE +:10A4C000BF3776A28C747F36DEE7D500AE32BB96FE +:10A4D000BD8C7AD1659C4FA7A44FC4F7FF90F42A96 +:10A4E000E43BC6D295B30E03CF12FE3B40F333E7F5 +:10A4F00003F427F8CB91DF12117EB54181A7942296 +:10A500006836D61D7EC9985FFD2BB6E02A845FD6DB +:10A51000B6209E1749B27FBDD67D3E26BEA2E7B5C6 +:10A52000C0EEDBE616691E7311DE4F2DBEE7148008 +:10A530004FB4ABB2CF49F39887F0C33CE67FDB3C26 +:10A54000E0EF602FE8574E67C1F502E121D00EF031 +:10A5500058613E084FBAC5770FF62F2B5E86FDC2B5 +:10A5600077E67585B7E7CFCD8EB85C19F987C56AF0 +:10A5700048B76CE507DB909F0E0564B61EFABB2F4B +:10A5800036EE69168F7CD53BC8E218FB0A70D73EC1 +:10A5900008E70FBD225F264A24DF87DF750519E033 +:10A5A00045382011BF1D7ACF115C05FD1D2AE57CC1 +:10A5B00066F2B3F9DC60F0D9A1FD9CFF0EDB399F98 +:10A5C0001EB6A73E1DF074D57BCC90E32F52FA64E3 +:10A5D00033B17B3FE673F34AD02CFDBACA25775AD4 +:10A5E000FD28EF9B6FB7EAD86F89A3FFD35258BFFE +:10A5F0006522F3215CD993EF88AF02BC1CFE941551 +:10A600007A609E3F36E02A913C777B01AE1BBE927A +:10A61000582BA8A8DC73ED8A1BE67F83C27484B72D +:10A62000ACA33ABD37F47B2026391FF9E5C0694F4A +:10A63000BA00FDB5A5F6A367080E7BF24C01DA65FA +:10A640001F99F06E1CD4FF226053D7A31C581A0523 +:10A65000840BA8D0DEA384C8939DD893588731502B +:10A6600059AC4169F5433DB6344E437ABE6ACC4F8E +:10A6700054B93EFD6206A7FBAB022F07AA19C9B762 +:10A68000D666A7F2C1856A50C26F7B18B387F1F115 +:10A6900072E6979760BFBA5DDB817C9B6E63ADA667 +:10A6A0003ECA223E7917DBA7033B23FDDBEC079A6A +:10A6B0003F84F997C5FCA1F943D04F19309404EFBA +:10A6C000339C22D1B7CDC5E99BBD76813316E7C552 +:10A6D000949D38BF2F5D93E205C0D331438F1C6634 +:10A6E000AC12F166E2C59CCFDE32758137ECFD1FFE +:10A6F0000CFCB71BED72D3774AA4BFBC8C3952B1A6 +:10A700003FD578BF5F477ECC4D7F5347FCBEDA7B99 +:10A71000BE1C8BF21C885111BEB14E4F0303BA967A +:10A72000C96A85D7C9EBB98784F3AFEA6408B73241 +:10A73000DA89FAA3CD3993F85938302CDD1B46BF9E +:10A740000357E0DF0F0D7D79E02AFCFBA9C1BF872D +:10A750005326C5FB2ED38FF96C33F001C4CF463995 +:10A760002D71D8887FDB626CD7C4BF070CFEBD6437 +:10A77000EAF1ABF26F1EF16F5B2AE7DFB6D3D5C407 +:10A78000B7875D7745F26F0AF02FE0EDA0CBA7A267 +:10A790007E6C4BB5E94F7326DDB204DA1F145C0CF6 +:10A7A000E9CD643D3D7CFD3D18D36F868E78678A88 +:10A7B0008EFC54AEA9F9EBDDC0BF8E41240707EA39 +:10A7C000FA6549F0BE6F1E87375A3ECC7E98D37229 +:10A7D000AE238C3FCDF787105F3694076F3CD2EFE6 +:10A7E00090C0E9A0B5E5A6D7207D1B37EBC8F7637D +:10A7F0000C791A63B79DC679B044E0F7B0F539FB20 +:10A80000C8EDD4FE4A74B9F238957C9C6690AFC20C +:10A81000B07194CB8F0312E53E3B90E152C6B0DF9E +:10A820001F0FF60DC883797F69F1BFFF00CCBB73A2 +:10A83000A25D7B1ADA2754760A3EE8F77D81F35D44 +:10A840002ED357BD8BF83BDA63FB7A0FE26FBC81E6 +:10A85000BF640FE26F429E18612F5C096FC01F59E1 +:10A86000C2D06F9B4F517A8DF3327873C27CE2FE77 +:10A87000CFC19B16E7FD1EE2ED7DA6F4C69787616A +:10A880004D0D5FCFAE6427BD86EB71CEE5EC25BEE6 +:10A89000AEC1B2791DC269DA4763BF57FDB744D470 +:10A8A0008F812FA7BD0676E2D81BAAEFC6F2C96139 +:10A8B00087A739410F8D2D07BEED0576E1CE7F3E8E +:10A8C0001900BC8DBDB5FAEE24F8FE70C1E3D313B8 +:10A8D000F1FB6DFC3B0BFC65BA0EF31D7B27948BE3 +:10A8E000199BF222D487B2A3C06751E13945E6F241 +:10A8F000085DE8E17AC69F27115DFD795C7F2CC970 +:10A90000E37A8F5083FA70AAC0ED39D967A922B8CB +:10A910007D1684FBED51B04A0EC57E7D198D617A9E +:10A92000F5F804DBEDBA93D79BE8EA7ADF90C7F538 +:10A93000ADA380DBD1D174AC37C677E68A643F63C0 +:10A94000FB5B06877F97E97B83019F53E57636C2E1 +:10A950003579307F7AC3C63B3EADD402EA88DD52FA +:10A9600000FA59457AFAD6233D0FA47EEDC2F51DB3 +:10A970000C96DE388FF72D9A4CEB9A87F95F04FB23 +:10A98000BBA2C8DB0023B1F71FB8EB76B2DBE21C39 +:10A990003AEAC33D06FF6F720CA1F7D398A8215D78 +:10A9A000F16F83B9EE011FBD356EF321ECEFD51CBD +:10A9B0005BC8FE4C29ECB2D70EBC09060FA0FC46C2 +:10A9C000D62273FFC25FB114EDDBCA1805FD9409EE +:10A9D000AC83BE7F8F310B7E9FC8347A7E56DA51AE +:10A9E00088EF4DBBEED30C6ECF817DB703E755C525 +:10A9F0007CFB3A485F36CA8807270B72F8014E5C29 +:10AA00005FA3D7FD72FB16B20BE0AF3D39B5BB1C9F +:10AA100013B8503F99197F0D4AE05EAC6FD809FF1B +:10AA2000907C2FE2B829AC4520A161ED02ADE7771B +:10AA30003395ECC422CDCEF93C52AEF60A9CAF025F +:10AA4000D5C05702D985A4B77F572D3C6DE3F89246 +:10AA50001A0A0D7C42A3ECAF1E907BA2BED6ED0C71 +:10AA6000F1B3C9F1838AA550FFC683766603386EB9 +:10AA700074FA699E6F0BA2B68AE6E33F7877621795 +:10AA80003E8F84D6BB483A5442BD7BB0BE2A73FB8E +:10AA900004EC151C67C22E2B8D7333EB24FA7899C6 +:10AAA00042F83F96C7FDC29EDE89A54980BF34B5F6 +:10AAB0007A5F07B43A1664010BAC87C7D0EE007E0C +:10AAC000BCC10E760FF0F75E8B77D204E22B8BB60B +:10AAD00003F9AF55297722DC83DC791294F38F6870 +:10AAE00007B03CBE809707B5B49739A07CF3485EA9 +:10AAF0001EB2A7B30DCBDE0A5E1EBAAF55C4F24D2F +:10AB0000B99E7C2CA731EF4D8391FF5489FA07BA87 +:10AB1000BBD02E192728BFC475ED642DB797C7E5A4 +:10AB2000F421FBECE8CA4AD24BEE19934B2D38EFD7 +:10AB3000F182B6031E23BCD575581E5129E08ACE7A +:10AB4000DC1541A919CA937DC233C8BF17F27A72C6 +:10AB5000BDE7ABB04C017ABA7D02C95D71609C65FE +:10AB6000D260E2CB7B0D7FE922F243347FEE46597F +:10AB7000433CCC36F508237A4F9BDC2FB8DE908F10 +:10AB8000C93DC93F22BE3C2E289C3F8E4954FFD46C +:10AB900049AD02E91288E57A8DD9B5867BA1FDB170 +:10ABA000C7B218F7878233B0BF14E4735CBF26AF17 +:10ABB0001192E06917580BFA41CC19A5E73FB4464A +:10ABC000D9A1813A94BF647F1C8F13B0B0EF180FE6 +:10ABD000B0C7051CB05E24FBC2DED3BFFF690BAF5C +:10ABE000077E54627E124EE143867E4EAE4750D6BB +:10ABF000C37C5E52AB254674079840BF5C7F6931C9 +:10AC000095A7C19868A7DC985B5AF62728C71D95B9 +:10AC1000884E965E7B24A4E3EF6E91551BC27309A8 +:10AC2000F459A1B1F4009E77E79B76A5DF82CADCD8 +:10AC3000B4BBF60A8D33086F279D2ACA95C25A56AF +:10AC40000950FE895F217B88250A012C0F7CA9D73A +:10AC50007692CF144E9701377B880E37D62EB15897 +:10AC6000909F7C02CBF1209CF1640FDE987D1DD972 +:10AC7000FFD9937FF05E1CFA030191EC26D1379146 +:10AC8000E4AE0AF5203E2BDF24F9DF5DC78212CC4B +:10AC9000F3F793DFA27200689483E3CBC177D18E80 +:10ACA00098C432C98E3B0E7D5AC3FC0966F71D4815 +:10ACB000C479BFD893E40FEC47467CEA67A427CA5F +:10ACC0003A9664A01D796A1AD89180D753A705A631 +:10ACD00040F9F8C65EE40F1EBFFDCFF508CFF1E1E5 +:10ACE000094194EFB2AF1CAC95E21C822C87E9B10C +:10ACF00032B9A5FE1E9CE741BBBA43E9AE17D1C0ED +:10AD00006480EFD45039C0F07B1AFE278C939C9D51 +:10AD1000AC63FB0D4BE2348C7B8084DA34183773E0 +:10AD20001A233CFAF2B3885856E6D4ED89F8B407F2 +:10AD3000EBE1FD646FF57B684F2505440FFA0DA12B +:10AD4000754AF0DD0EC4620BF2B569F20828C7F847 +:10AD50006E471168C81FC9CBA9BEF7B0BCD159391D +:10AD6000AD12CA5FBE77DF9D38CFA9B502AD2FA562 +:10AD7000B59BE49E30CEAD81788674F8D2ED1F93FA +:10AD800000CFCA4A81AD02F8ABD4ED16F4372AE6FB +:10AD9000546774C0F3F97C95E03BEED2331427F688 +:10ADA000AF8BA807811EDE80F25FD8BF1BFA87F247 +:10ADB000F10CE83FF1BFA1FF24037ECF7F53FF16C4 +:10ADC00003FEFE97C74F5536F40F4C539ABDE4412E +:10ADD000E4DBA9A1FE038792E0395D85FE813B2A71 +:10ADE000E754939C564CE5FD47DB3DA1F162F878B2 +:10ADF000D95E5BAB38E45F1967138D7332A73103FB +:10AE0000E5EDE8341BDA36A17EB3A7AE691723E27D +:10AE10002B8D2EEE9FDEECC2F5FAA47726958503E6 +:10AE2000E519E1FEE9D12BF8A77BF2B95D77D4F003 +:10AE30004F8FDBB95E398EFEA9D0556F7FBE115F93 +:10AE400099DA279B655DD99E37D7EB905FD887FB52 +:10AE5000A7473CD7E69FBE65F8A7EDF9A67F2ADC99 +:10AE6000F3EDFEA987EB158FA957EAD2319E7064E6 +:10AE7000DC9A48FF54E5F1952F2DAA88FAFDC40C01 +:10AE800089E2732766D4939EFB020C05967775BF03 +:10AE90003B04B7618797B04029B65796AB0901527A +:10AEA0003A2D7502941F5E0A7E2CF4F799318FDFDC +:10AEB0000BFE3AD2A7794CD901EF9313B9BD950097 +:10AEC0006B503DC691E5C652C44F8AC214ECC765AB +:10AED000F7D789F0DDA5B2FC7A37AD6AD4DE6EE72C +:10AEE00071E70CD64865B0A3A9FE05830F5DCC4F72 +:10AEF000F0386A99D8C0E151902F52E49672ECBFB5 +:10AF0000B7CE18B66772472EBEBF9A7F163DEF3692 +:10AF1000E1F27CB46A189FA7E660F720DF85E43889 +:10AF2000DB93C5F97F3BD967B706868AC8FF71C333 +:10AF300038DFDD9ABB2413D7B5E995828AFAB9EEDA +:10AF4000BDE71E4C447BD223308C3754A85CEEDA2C +:10AF500072EECA40BD7B6CA28DA19D79F46BEF5659 +:10AF60009CE7C911B10CE34BAB86F1F967D7829C22 +:10AF7000601CAD96CB89D683DDEE0DE3AF687843D8 +:10AF8000F4FC4AA0F5A62596FD3B8335AFD7B0CD9E +:10AF9000D352405FB7F4629FA0FE9EF5AB1DA4CFD5 +:10AFA0005B602D413B461BB6FF09F4E75A4436A7C8 +:10AFB00085E67B97A53A4C3F0C37FA6FB132EEDF4E +:10AFC000B1FD4FB40E0AC78BA9174CBC84F4DB83C8 +:10AFD000A8DFA6CCE17A61FAD44D5C2FD47A323A5C +:10AFE0008C27F2D7310FE001DAD719F33EF2B5F72B +:10AFF0003DC423EA0BC487A92FE60D53E83BC28763 +:10B0000071A53299C711C02F24FB319A8EFA30EE08 +:10B01000274D91030F26197A77153C4B67545B70C7 +:10B020005CD0572AE27FBACF437055A9A51C3EEFEA +:10B030002682CF84E7A4AB712BC189FA8BEC0F4E2B +:10B04000972F2D3AF55B65F65BC9FBADACE5FD5678 +:10B050007A27923EBF05F43EE9F5ECEA887E8F5BE5 +:10B0600082E9865E5FB5344CAF47CFEB4B4BE38351 +:10B07000A85F6F09640AE857944E8671D0BE9EEAB5 +:10B08000F620DEA60DE3FA6C5CED7619E1BF71EAFD +:10B09000123E8F1975C46F27DC41D2E7E6B8A7BE10 +:10B0A000F6913ECD9E6ACEA3B101E7310DE781FD59 +:10B0B000D7723EBED1C7E77163F6129AC7ADBE3AEA +:10B0C000EABF42DD4EFDC2732BD939E3381FDF835F +:10B0D000FD03BEDFFABB9EE10D5B3FAE46A7FB0C56 +:10B0E000F8A7C87EC2E78D263E73393EA756723850 +:10B0F000A6CED84EF39A5E59C7F1A996723E524B2E +:10B100006F47788FDFC2F908D6E1B2F075B2CEE0B2 +:10B110009BE3C6BC4DBA4D37E73B87E3B30AF90161 +:10B12000DA5721DDA0DE2D6A681D4BC7717E97D3EB +:10B13000988EEBD849930F4CF934D6B1B6953A3B7B +:10B1400063A1B806C58BCB9D22D9AB65155A436B5D +:10B1500022899A1FEDABEEFE6DA45F6AC67526DBF1 +:10B16000FDFBE3C8EED357BD8F7800BBDCF053C4C2 +:10B17000B53DBBFC5256B124C2BFDE34E93F9CC38F +:10B18000903F9C16DAD7D92C341E247BBCBF4D458A +:10B19000FB76F3A478F27B8EA39F2B74AD73A29DF4 +:10B1A000FB9D65E0DF4A1AF9A50D867DCA0CBFB488 +:10B1B00001F9B402FD5963FF27DC8F65861F3B064A +:10B1C000FCD8F5D7E0C7FE6218F763C783DF9E801F +:10B1D0007EE1A4479CE86F1C96D82F11CFA175F88B +:10B1E0007FBB3FABBA30CEFF3BC67E89F87DABD28A +:10B1F000F0672778C84F8A8E8780FFF9EAB0A42EBF +:10B20000BF93FEB0FE3837F103F86747F0BB937980 +:10B2100023E8D62D0E12ED0F44F34D83A253DCC06C +:10B2200088832423574A087FAB80F88DDEB7B81295 +:10B230009F292CF02FC76764D32FA13F41C17DC147 +:10B2400074A3BDE0BB8BFCA12D254C9170DF7BB5B9 +:10B250009FE0FB87E43B376C38754BF6430AC66BBF +:10B260008025EA8BB4796EE9CAF0160FD13B117FC5 +:10B270006324A7D60AFD5E382A119F8FD79FA84066 +:10B280003D3781355624203FA882D6AA76F151BF9A +:10B29000668033CC6FEE1FB433D9DE551EF8BC1276 +:10B2A000511EDC9212517FE81E35E27B1E38DDE133 +:10B2B000DF871DD122CAC3DB8B22EA5F77428F284A +:10B2C0008FE8A88CA85FF29137A23C80F9449CFCDF +:10B2D000A8CEA911ED2E305FDB5698F780113625E8 +:10B2E00040F15AFDAD5C90C3C106F6AFFFCA17D15D +:10B2F000CFE08E6A11F174D8E7F433F0134BD9DC48 +:10B3000088FED82EF903A4A71FFE417A0E6050369E +:10B31000BFA3FE572D5D65F87FDFA8EFCBDF8D392A +:10B3200074306CBC9C025722D20D685E80F1886E2E +:10B330007462168AAB4C7F9E058302CE87EAB20107 +:10B340004FB020FA07D1F3F972A5FDD04168C2A42D +:10B3500077293EFA05F84B3DA09E2D25929E316A35 +:10B36000243D1DB991F4746991F48C2F8AA4A75BD4 +:10B370008FA4678FCA487A267923E9993C35929E33 +:10B38000A9BE487AA6CD89A467863F928E99CB2321 +:10B39000E9E409CC89F8DE67AD3F921F3BAADBB632 +:10B3A0002662FCDFA6201D731A9747B437E9188080 +:10B3B0007F2E47C7AA39D174DCF05729EEEAF4BCD6 +:10B3C00013E9E9E8A22793667CEBBE9E492FD07370 +:10B3D000B30A92304EBAE876D27F467C06FFC2E3CB +:10B3E000D4C7A76DA6F5E9D5FE3C4E5DCE7419E92C +:10B3F0007B20F5F68A1E2AAF1FB5CED03A5469AE2F +:10B4000043465C0AD36E505E6EEA16B7562D589EC0 +:10B41000C43A7BCB7D307FA17535DAE71753DFFC6B +:10B42000A34079169BCC3C8B0710DEF1AC9DCA87FC +:10B430001D3F97313EEF647E823F5C3FCA85DF410E +:10B440003F8E575ABF939E5633BAF41E29D500E952 +:10B450003DF083C5D3E437707F2F2C2F81FCE4634C +:10B46000A53ED7705C17A7490CD7AD68BA6C29E028 +:10B470007ECAB1FDDCEFB9927FBCA380DBCD57F370 +:10B480008FFFD5FC8363E81F0F05B635E0BABA7F9E +:10B490003C31A337C611C671FFF8E869F01FE0FD23 +:10B4A0005BB7F4A367088E4ABE7F9B7DC415C0B806 +:10B4B000D717736CB4EED6BD771FD9A165AF815D88 +:10B4C00044741348EF947D240629DE2FCFA17570B4 +:10B4D0008C41E703C67E5EF9F2722FE6018C797724 +:10B4E00033AD538AC8E95C9928F8EC981754AE66D6 +:10B4F000E07AE39598FF69B27B02B1982793C2EC9A +:10B50000BF447A7F6921D9619D6E9E0F567E7F2947 +:10B51000F517DA7F58C8E38E65CEED1918672C9FB2 +:10B52000631310B432E7C4F770FF19191E75DDA953 +:10B53000ED9C5EA796A841A4D7EE7FBE4DF074DEC9 +:10B54000C354DC9F3E95C7F9E8942B8BBE97A7BCEC +:10B55000DD5C3B0CFDDC0E8A03074680BFCEF0FBB2 +:10B56000AF5AD11F3FF59840D09E82B1D1CE3EB5A3 +:10B57000A91FB52B91449EBFB6D1C5F3D7640EE782 +:10B58000CB8DA984C7924CB50EFBEB7C80D1FE2DF0 +:10B590009303D93FC4EF530768EB19B6AF2B780B71 +:10B5A000BFCF8DE5DF5960D02FA1FCB23785BE47F4 +:10B5B000DB172FCB4A00E523E08FD3300EFAD6B845 +:10B5C000E71C03A0FEE302D88186BE08DFFF79D91D +:10B5D000B007991C7484FBC1577B7F0AFCA08430A0 +:10B5E0003E3935F7068ADF1FF5C87EB4772B26DB98 +:10B5F00002A80F2B944D32EE47570DF5B1E1C097DD +:10B600004D39DB97A01F0B02497478325B08DA7062 +:10B61000DFD688F787F442945EDBE4F8F916D4535A +:10B62000B7A6DB68DD1B9BF6C021C4E3816A1BF96A +:10B63000CBD17AADCCAE93BE41BB19F7B7C618FBE0 +:10B640004695AC91F4D14DAC959EDDF7E5BE5DBF5E +:10B65000815E4BC179DC1BBB9DDAAF722C1A89FA73 +:10B660001BF473EA708C4B9DD365C47F990A788074 +:10B67000F18EBA0344EF0A9740FC001636F92FE723 +:10B6800005E65F7F19FFA52DE6CBDED85F34FEBA55 +:10B69000F979837CFD8787EDDB8F4B08C628B4BF23 +:10B6A0007A793B6F93E329DA47B8F10AEBC6EF7278 +:10B6B0009EE3EBC6842BE153AB4842F9645E737F93 +:10B6C00093F6E3CC75E36AF8FC967DCE329CC738DE +:10B6D00016A476871DA32D080FE0B37CF87F855D47 +:10B6E000CFBAED7746D8F9DF759FD3C4E7584CE859 +:10B6F000837E4E2A02D7774CBF39B510F98BFF9D58 +:10B700005C1B9031FE58912AD15E0943BB0FE0D2F9 +:10B71000E01F84AB8C79E35BA1DD042DD28E287B06 +:10B72000B73FCDF70D41D48491886F6E87D077D421 +:10B730006B8CCF3F45E2F32F8BFA1E8D8F68FB0396 +:10B74000F77B916ED7BA7EDE33DCB05754D6EF9BD1 +:10B750003EE897EF616730FFD1B05BCAA2F20EA25C +:10B76000ED96B5C379BC2B60D11F403AFFC5881355 +:10B770002A4C9351AF888E91943762D68BEE279ADC +:10B780009EC017AB872775A70B8C45F1BC4349B703 +:10B79000D66E82F9F5DB36201FBF1DEA79DBDD6F3F +:10B7A00062F9A9BEE48F3E329CAF8F7DD3EEFAC919 +:10B7B00026285788C22CCAEF2A3839DD83794A31C6 +:10B7C000BC9F1436A76922E27950567E3DD6B3322B +:10B7D000AA77D3D085C36AC2E4719B01F74DA0CF8D +:10B7E000705E19AC85E2B5B1CB152140F158264BFE +:10B7F000F9F04C09CA0AF46F95991C9B00CF944646 +:10B80000A782F21DCBFB7D2DEF7FE463BF1559BCF2 +:10B810003C50739CEE83F00802C133305768ED0F43 +:10B82000E58A04FE7D7CFE0BBD106F156566FD0983 +:10B830001F63FD0AC32E88D33B0F7C03F39EE2DB1C +:10B84000F482007CF192AFD4D21FF0BD67B89DC7DF +:10B8500087BC7CBFF7E6A23AC15E80F5F48270FB3C +:10B86000E2A5E116C2D3E4225E6FB2B7DA521B360C +:10B87000EF297A27C3B8D194A9A729EF7493E30ECF +:10B88000B2EB2647E99789F81F20EFC76EB981F41C +:10B89000F59BB747EA172FFE8787F4CBC12411F732 +:10B8A0001D795E0470C8218C974C31F4CB54D64876 +:10B8B000EFA7B3167ACE60ED3C7FE27448AF642602 +:10B8C0006645E895D7914F26332FD56B77FC80F4EA +:10B8D0008A13F80EF328CAED4ED2AF97E1AFB786C0 +:10B8E0000FFF563D4AF39C7E853C9157675DD7809C +:10B8F000F398EE6C750E83EFBF775934DC8FEAAEA8 +:10B900004F43EB13D9DFDDD7A776D287D1719EAA3B +:10B91000ABE78D9C1B4E76B7993712A4F9C2BC3E9B +:10B92000C579C1FCAFAA4FC3EDF1CBD9DFDFAE3F84 +:10B93000DA05E4C72BD9DDECEA79C772E135E41DFD +:10B94000D75EC7883FCDE7B981FA4DC56179488E8A +:10B9500082CED51B0B70111A22A23DB63586AD8D55 +:10B9600001393C38B0747E09B45F6CE44DDD5AA2F5 +:10B97000527F8E76A66F87F12C7280F2F82D76C5F5 +:10B980005DE7C6F307ED64DF75263105ED2FF3BCE7 +:10B99000C056170B607FB79670F9BFB584C745A135 +:10B9A0003DEDBF5872A17D1ED0F936BE4E5C5CC71E +:10B9B000F3DA2FBA058A175E9CE6247BE0CC7ADBAB +:10B9C0001C94AF1A2B97DB44438F30B69AFAEB578F +:10B9D000C8E37A0156964A7BFBC2FA147AE22E003B +:10B9E000BCAF71B33BD1CEBFE856EFA07ED7250BDD +:10B9F000D86F6D539F29386EED86640FF374D5CFE1 +:10BA00002C54793B8FFED7E568474F746A4F135922 +:10BA10007C79987F6993B26FB64BB8BEAD68D90395 +:10BA2000DF17663815B4EF2B32DF7DBC08CA1FEF75 +:10BA3000B2D0FECBDC1D93E25BB199ACA75C6E9FEC +:10BA4000686E30725D9BFF7C6479614B647971D460 +:10BA50003A16BD6E8D2D0CAD431AAE431FE23A442B +:10BA6000710CBE0ED5324E4FE0776B787E9AB90ED0 +:10BA7000052C65130A019FF30CBADB6CFE8FB6032D +:10BA8000BE6C0FF5CFAF23F9ECDC8FF2DCF3514F36 +:10BA90003EE677D80AF93A9156E8BD05F9D19639CC +:10BAA0007208AD7799E3893F2E3E114371F48B31D3 +:10BAB000DCEFB9F88A40F196A6DE97563F01FD34D7 +:10BAC00015DB14EE11E8370F07FD30C790A744AB24 +:10BAD0003E17EB9F9D18ABF03822B38B444FDD8EA1 +:10BAE00074AD6DAC5B7D3F7CCF84051EEDC705ACAE +:10BAF0003D0E85684B21E753268DEF5F07FD2F9E96 +:10BB0000144BB2352FD03216D1287F2D7B912FF1D7 +:10BB1000B8069E8711EDBA520AF516EE716326201B +:10BB20005B52C8F705D6BCB6C48B0DD32D9C0FACA9 +:10BB3000BB2606503CAFFFBA82A19D79D7F292474F +:10BB4000D19F4AB476F62845FE582711DFDF75FFEE +:10BB5000087A2F5455B65F8FF0AF73507CFFC01337 +:10BB6000369AFF59983F96CF6EE5F8B82BDD19B499 +:10BB70000BDDE7DF20B41AE76FDAE3906FFEBCF568 +:10BB8000BE38C4EB9F8DFC6EA6F8E348DE557F5CA3 +:10BB900055185F7DB045AA4439F960EDB2374620AB +:10BBA0007EABA617E07A7EBD3B3B4E75767D37FDBA +:10BBB0002B39A1E859D42FD77F2D917CC8B02EEE18 +:10BBC00084EF07D7DF3417E5E4036FAC1BE155D7EB +:10BBD0003E3396F6C5AB2A89AE1FAC8BA179795856 +:10BBE000CB6A8C7F2E5EBB667533D47F03EC38CC7A +:10BBF0000BF9A02A96E26F1FEC7311753F5072E3A8 +:10BC0000B0FD074CAEBC9C1D94572811DE4B337918 +:10BC1000DCEE038CDBA9285F836EC67577E13A8979 +:10BC2000F6590E569D7ABC28B14BBE84AAE59DFB01 +:10BC3000B1FE46F80EF5CF04B438B4EF8F6CF87C43 +:10BC400035CAED99229B827944737F2C9D46FFE98A +:10BC50005F9537FC6B05BD5F63D0295AFE6A36F4E9 +:10BC6000B1E27ACFD6F278E44B201FDF88FF293982 +:10BC7000FC4DB81CB2F42AE257B39E297721FBCFC2 +:10BC8000D0F766FEA85D63FA0E7826DB982E80FE5C +:10BC90003D532853FD338556AA27FF7DE9F3AF03B3 +:10BCA000FC730A7DAFA3DC66323D0FF94DED54CA3B +:10BCB000E219CF93A5F52EDB4A7182C72D5E91F86C +:10BCC00051F6FDEA75D4FB6BE70E43F9EF30FA4B02 +:10BCD0002BF41D47786B57F8FEBA9F21DF15931E92 +:10BCE000A8FD6AB288F9B7CE269EAFEAD4BC65310A +:10BCF000A8F713BDC497A61ECF0178B75FC67F1300 +:10BD0000AFE3F6554EA297FAA92B52A80CE04DC30B +:10BD1000F5EAA979224338AEBF94298A00D7C32017 +:10BD20008A681FD88BAA4489DB1D9D3950F65CFABE +:10BD3000A6C772C083B34834D63D6FDB3750DF19D6 +:10BD400088FF9B00702F4D91543C7FE12C4AE0ED21 +:10BD5000743BB5CBC94D6843FB50698BFF5BFCA8B6 +:10BD600030B8985D75DA317E2D125F789A78D9E413 +:10BD7000830B8D02C9E9524C6DC8A77C62A223AE29 +:10BD8000BBB87E2E4DB1D278667F7F1F5A7A09F1FB +:10BD9000C7743D3BB190F04F7F878BB8FE017F8425 +:10BDA000515C42642D786ECF31A8C3827AC884BBBF +:10BDB000D61E2C8F51BBE3AFD6807309C2092C531A +:10BDC000AC4139F7CA70BE6FAC7B667B134E4781BE +:10BDD000AFE330D93FF12C87F2047D41D4AF5B65EE +:10BDE000979187D8BE0ECB69B912EDBB49F6477F54 +:10BDF000847A702BF3A9946791C8EDFC2F636EDEF3 +:10BE00008EF9E26A1DF0636FA82F2DA13CF1B4FA00 +:10BE10006405F3C7EB2D463E39181618970994E9C7 +:10BE2000DBF17BC06A57EA35CA9725BDB5FC5D17C3 +:10BE3000E9D12F452F194F05D76511DCA98CEFF3F8 +:10BE4000A42BDE9DB3812E5A1FBEEE47E365E0753D +:10BE50005C7E1EC4B9C0532BE7F5D6081AC10B107F +:10BE60008A752310BE2A1A2F4D522F3CEAC6710440 +:10BE7000C3BE927D21BD00E36FB5809D938072DECD +:10BE8000F823CC8BBF52FC7296314E6E9310CC8946 +:10BE9000EB7A3FD280E7ACA28FBA0EFA5F2EEB149A +:10BEA0007765AF5948FE96E56853512F2E137A6B8C +:10BEB00001C213D7DF814D31FCBBA025E3D9C07A85 +:10BEC000E39CD0B218285F66DEE6B366ADC47C6141 +:10BED000FC57F290CD1FA4B8AEFA14EACDDAF38382 +:10BEE000F2316E16E223C3EE8AEEE784523AE93A63 +:10BEF000803BC5A03760F2C4CFA1FD93817815EDDA +:10BF0000E66613CEB9B194C7689E9BAACF49085282 +:10BF10007EB8716ECAD4A73DEBD5C33E5C4F4BEDE6 +:10BF20001AC535D78ED143FA18ED6A7B079D0F7C71 +:10BF3000BC982908DFC6EBDCFCFC29D39AA53E5D42 +:10BF4000F2B3D8901F619F40E74ECB0CF8621AEF16 +:10BF5000EA40F81C751CBE3613BE7BEC067C479E7F +:10BF600040F8ACB18A22B9A90BDD1EA6EF5983BAFD +:10BF70001AF91C1D31E4FB9A41B5D41F83F9C68F11 +:10BF8000BC0CBC2C727E261C8E2780CF241CBFA527 +:10BF9000F159E4EFC1B242FBCA809F141C7F513AB1 +:10BFA000C70F6BF7E03A5F9362E7E743987AB80C04 +:10BFB000FD0011F4DC65F0F378B1FE20F24F5B1E5A +:10BFC0008F33B54D1B908EEBFE78FBAB27303E3D9B +:10BFD000DECE5AC89FD3BE3D1F6091117F4EB43252 +:10BFE0008A67774EB4525C7651288ECCF32B02AF21 +:10BFF0005B28BFA269A29E8AFBD54D137B8A3C4E6B +:10C00000DC47443A75BE2EF178AE4117130F4D79D7 +:10C010004A00E7D924A82D8D1AAEE376A2C3E2B573 +:10C020001692EBF27D13FF1848E474443F79F11E39 +:10C030004F1DF6B76805030D86F8E071E600E3F4DE +:10C040007B3CDE4E790A4DEB789CB9691C23AD74BC +:10C050005EE878EAFBC47F4EDA576FF2E8A9188FE2 +:10C060002D91C43BC9FF92D59E68CF9764B25019F9 +:10C07000EDA91249E06506DFC3D6E71A0BF3A21C4F +:10C08000D46C17033943C3DE0BF07E5057FB6B7D36 +:10C09000DFE46E64F723BCEB3CE4E72C37D6FBCF40 +:10C0A000652DFEDBE4B7F62B89E961F25B2BF3F833 +:10C0B000D223715AE1C4B0769E22BEAF32D3586704 +:10C0C000631A9F7BE7E7305E595DA6677D62177F45 +:10C0D0007F60C8CB99EBB8FDDB13F934ACFFC72DFB +:10C0E0005CAF686DCFA785E769D57C64A5F344355F +:10C0F000F61DEF7C173930FB67CD6A22DAB757EFB0 +:10C10000DFD26A8BEBDE6FE510AEBFF75A39FD6206 +:10C110001AFB7D88705C697E89063E4C3934C7699C +:10C12000B384CEB5655787E9B91A7B0CC95D8D3DDF +:10C13000E743C4DB779573737E57EFFFF2F3DB566B +:10C14000AC7F83FA15FCA1EDA897DA626254DC8714 +:10C15000DB1F73835176917F25C4C6F07DA55807F8 +:10C16000C55905C7E02D8D4867470CD9C989092AEB +:10C170009DB76C8BE99F4DF945B1E3AAB17D59ACF0 +:10C180008DECF8FD31FD3EC4F6D03FE555B5C50C4C +:10C190002EC07A5DED7879F31095F057E170911E1D +:10C1A0002F73707FBD2C4D2D403F60A64DFB23E1CA +:10C1B000A93E5EDD01CF336E3E6F73BEBD8A387F10 +:10C1C0006516F17574A603F87250F77A26DF7A8A3D +:10C1D0008CFDC321BA5A04CFBB8C38866B90D7E351 +:10C1E00004098FD91DF34E2CF22BEE1F1513DA0222 +:10C1F000B84FED405E2C36E80FFF7A4C948C73629A +:10C20000EEAD1523C3CA46FDAEF677DE5E914EF65F +:10C2100073E83BBA6760579B651DEDAC35AEAEEF7A +:10C2200032F8A3F6B5026F1FC8BD7D0C98367F1299 +:10C230008CF1037DB6E0B9B4476258C478E1F0C927 +:10C2400051FDA3CBE954CDFAF26DD8DF63F966B99D +:10C25000E6473AC0F78825B23F6219A33D16CCF1F4 +:10C260009E7FF9D2960DE95DF63DD8FB37211E4D34 +:10C270003B7FCDA9F18D43612C8732898C4ECB5702 +:10C280009319DAD996441ECFC4331119A887D3B3B2 +:10C29000685F15F4189DE7B7A5AAE4FFDF62D02711 +:10C2A000DDC2ED724B62692BFAC916A63EFBBA8756 +:10C2B000FC826945489FCCF187910FBBFC0299E253 +:10C2C0003B39E05F60DCD5DE047A1071922E067394 +:10C2D000A04BD4F1FCFB941D1807DD59E4AB290AEF +:10C2E0008B7BE734E956B47FCF1872D534374B0CCB +:10C2F000DF8FBDCFE09F9C5C6EEFAFCFAD22BF4321 +:10C3000076570C47BFC3AC97A5648B38EFAC74C3AA +:10C310002F003F03E301594D3ECC546559B26F1ACB +:10C32000CE376BEA6C2BC62DEE2BE27E6AC1DA604B +:10C330000CFAFD6C8EC872A0BF3B0D3BDDA2D4F29F +:10C34000B8D854BB13E3494F7A9F8DC1FE73729FD7 +:10C350005E9B8572A1C81AD6CF69E2FE957CFFF478 +:10C3600060783C79BD2257221C85926F09D9A13D86 +:10C370008A75B4EFD2A4373DDBD10EED912FD52BCA +:10C38000B44F19212FE6D352CCE5AA41F006BE578F +:10C3900040F9D22C3CFF3153E37ED8C345DC6F53C8 +:10C3A000034A19AEEF23FFE625BC3C5CC4FDC4DFA5 +:10C3B000C81D0EF4A37398BEA406E7E975AA3C2F26 +:10C3C000AD85D6D7C495AA86F4B727763C3414BF7A +:10C3D0006BA246D73D187185F3BF4E7E1AE30AEA79 +:10C3E00008DF8F906E8552C7A3DFC3F93C24F3FCAE +:10C3F0003699AFCBBD2739C9CEB424B6139ED7A585 +:10C4000030B2BB46AFFBD081E69C3DD1CBD07E7134 +:10C410000099D05E703A053ADF52A06915E49FFAA0 +:10C420009906BE23F8950AD3E1FB8DF637B9DD14E2 +:10C43000E547E580989CB55388BDE11B5C7734EEF9 +:10C440004F8D65DC9F3A726932C59945BB8FE21EFC +:10C4500015536319F25DC8FF5ADD7148C471DB835F +:10C46000F202E29376867E624D9340FABE26B7C60C +:10C470008A83CD6E12888F6A0DBE63B2D61BEDB76C +:10C480005F17390CBFA181C76319C713DB6023FB9A +:10C49000BDA6B194E206269DC0D3E5F59AB81C5A14 +:10C4A00057F1F5ADC688DB0222E9FBC122D31F5943 +:10C4B00065F8C58DFC698C1B1BB2CB23EDD8F51636 +:10C4C0006E77045E91C8EEFD6CCE853894FBD8F390 +:10C4D000B1A2104FEBB01AB14EE572FBB3669F7478 +:10C4E000D9758A3507C90EFE0CEDFEC4887123D6B6 +:10C4F000C5F596CE879F2DA071292FC01CE7492333 +:10C50000AE75B571CE18F36D9B76310EF3819FDC5D +:10C51000F74C0CE2EDF189602993FDA6519CE93EB0 +:10C52000BBF7A322C287F6705FF4471E96284EF031 +:10C53000B8D0AE4B5C2EC86EBD23BB6AC921803714 +:10C54000A160403EC2972233BB047EDC3F8C71E287 +:10C55000DBB8BFF684B02915E9F544AA2AE0798250 +:10C56000824A2E470995BAB410ED2E77C7982CB49D +:10C5700077C7318671E264877F3BCA49F29DB9F97A +:10C5800078FE898D50A9BFD8618DFB292F6389AAB8 +:10C590003C0DB299B22AE0593A08C7E1E71B3A27A5 +:10C5A000327A9F74EB8A3AACF7502F9680E7C952E3 +:10C5B000589D80F556270924F7ABABD9D45F62BCF0 +:10C5C0000ECFFD43BDF4A98A80FEAA6C9C5F60AAD1 +:10C5D000E2FE432A8963433CAC1D8FC5F17924896F +:10C5E000D29D681FC27A42E504D0074F03FCEE11CA +:10C5F0006EE29B641BAB1412F87BE4338C5B603CF3 +:10C6000030B9DC9F87E327F7E1CFF5867FF1240B74 +:10C6100036EF407CE65A899E7B3F3DDC80FAE2B3F0 +:10C620003CAB86F90D3DA71FA17B59CE0B7C9F3FEC +:10C63000DAEFB86F5079DA0818F7B1BA89D36661C2 +:10C640003F83B99DCE023BB549B49F11E997C88697 +:10C65000DD78E11CE7D306C36E3C72A44F3CE64B89 +:10C66000538C1EE6DD7F4402E1FB0253E3D12E39F9 +:10C67000B2BF2F7D37CB9FBFFBAA82F21ECA3B7190 +:10C68000837F2390FE0A601CC9B93395FC09F00B27 +:10C69000E83E9DCE176DF4FDFCCAF6E60A5474B26E +:10C6A0005717A85E8E917F22101D3A5F31F257987E +:10C6B0004EF695F39564CA2F5D2C76FC1C4D0EA7A3 +:10C6C00085DBFD4EF41FE2BBE4CB2970BF82C9AD10 +:10C6D0000AEEF79E37E3BCB29E3229CC6F6830F485 +:10C6E000FE026B6B5FF463CC7666B9978DDBF9580D +:10C6F00046FF61AF819F05B1BCDC19EFBB09F1BDFD +:10C70000DBCAE6503F71F0DE1986873CD9C083F65C +:10C7100030F2B35350DAD1CF043CD0BA6FE6E780A1 +:10C72000BF46EBF7D93C99F2B94BA4BCDDA84F3A10 +:10C730005325E569C550BA38FF756EC263689EA17E +:10C74000F9E75B67219FEAB97E47AF2BE3C17C3FE6 +:10C7500033BF763CDE1F3073DE8A9B595CF7752F42 +:10C76000546FADCD308658C4BD4F72943F63F20D07 +:10C77000E8CB88F8EBB211DC6E0846C571E606D846 +:10C780007EF2BF7F6CC3CB22BAF817738BB9DEA5DC +:10C790007BB2E6BE1BC3EF5788AA7731A694EED7CB +:10C7A000BAF7871329AE3F9BF9E93907DAF1383F29 +:10C7B000DFDF50D7CA8437F57921A8723EB28B7477 +:10C7C000CE5211F1FD7C583E9EC4252700DA0A6D39 +:10C7D00061015625F8AEE229FF6498E73A99FCEA30 +:10C7E000ED271C4101EAAD4954ADC8E76B1A441E60 +:10C7F000E7D820047378BF29B83E041A441DFBD93A +:10C800003C82DB35BF1861A5F9800806091EE309E3 +:10C81000F8E2FEB0315E1D135BF1290AFCB906EDAA +:10C8200096CBC487CCFE1A2C7E3BDA559D1922ED9F +:10C83000935CB4EA53691F2EA12F9DCF6B70F9D77B +:10C8400056F2EF24C317635A2BE97B9EC80D701470 +:10C850006BB4C34EC6D0F9DD8D23B81F114DEF590F +:10C860008D9165BC472CBC8CF78885976732DF2F8C +:10C870005224DC07887CBF7104DFA7AC611AD1A702 +:10C88000C1A2BEE541FE5F273384BF2E9DE34DCCA0 +:10C89000E0CF2C77C5545ACFDD569643F072F8B3EB +:10C8A000F2120484B7C1CDF9ED5F85371ACE9746F1 +:10C8B000F4E5F69E9BCB5BC33A337F8ADB97337FED +:10C8C0006A7B06E54F35F8FF13FC867CB08E9F2F00 +:10C8D0007F728E48FAED830D396437052D9DB96856 +:10C8E000D70436BAE81CF519417B16F36F04A6F697 +:10C8F000447E3966E855F1915185A84F5F8B92933C +:10C900001A4D785302FE2F9FB4A110FB2DEEC134B7 +:10C910001BC0F6B235E8C0AB3CA2E7CFF00602D3AD +:10C920002E019266AE50C7A25E5D08EF7BA01E0985 +:10C93000AF4F7EB6B54BAE806EDF0CF0FE6904C91A +:10C940005F7018C68766FFC5A9E17C1F13CFEC7C1A +:10C9500015E9B53386F20117ADE87C16F30E8E0E9D +:10C96000F09DC3FAE7EE3F355650BBF0F4D92BFDEE +:10C9700088AF0A1AC2E416FFB521528ED9DA047EB6 +:10C980008F5E53E4FB395BA2DAB17FDAC2E134EDAA +:10C99000B2C7ADBEFE68573FE92D2C44781EB734B0 +:10C9A00056A25EA81AEAFBE708C0EB8763BC87457E +:10C9B0002E9F7D519FFCE6523DD901815CA6EC7013 +:10C9C000A35DEEEB83F3FCCD89140DE9BCCDB04F34 +:10C9D0004DFC9B76BB692F46CB63ACE11FA414EBE7 +:10C9E0000FA25D7EFDA5DFEA48EFFA7DFCBCBEDD4F +:10C9F000D9D69A867A19CAB8CC2D523B0EE33E8915 +:10CA0000D2B6F8F3F80CB0A39DA29E16E6A72D6A45 +:10CA1000E2DF5900BE8FEADA2FB5597C01F47FE4DA +:10CA20007D7CDF14C6AB437B0CFD2BD4FB96399485 +:10CA3000D4C12C867F65996A253D509068DC6B6275 +:10CA4000DCCF97D3E40BF9533C1EEA15799E43E4FF +:10CA50007D6DD9C5FA18CC6BF813BE48A57B11FBC8 +:10CA600062D967D8A15FA0BD3094B10EC35F3C729C +:10CA70007412D9035F302FD903438AB93E39B27F8C +:10CA80004A3CDA95E6FBB392EF5EA50FDE97C8EF5E +:10CA9000499CCB82F4ECBA4FD147F72C2E18CFEF3C +:10CAA00033C032E6D32EF45A293E8CF2DC1A25CF5D +:10CAB000E165BCC730FC3E860572FB6AB2E7F0BE9A +:10CAC000BF227EAF6178FD45AC93F411DE6F18D1C3 +:10CAD0008FC15FC9D2D23C3FE2EF3BEE237DD7FA54 +:10CAE0001FAB8D3DD19E31E3B66DC6BEF658C9A9C8 +:10CAF0001BFBB5FC7EC26EFBFA9DABF1BEB5B2620C +:10CB00009BB28AEF1BD17EEEA7BB2C649F3369C317 +:10CB10006A8C5B2D4E93E83C58F47EED3CB6732C4A +:10CB2000AA852FD86B56949F7F355F6241B1716E95 +:10CB300044659EFF64BEC432E433739F365ADEAC54 +:10CB4000855CDE0E383FEF119E9F5A362840719665 +:10CB5000C2B2CBCB699D21A70E238FC62E07587872 +:10CB60003CF84AEDD61573FBE580B5F3440BEA3F7C +:10CB7000E806F75152307A5140F71FBAF1FCF2CE75 +:10CB800022EF43C549186731E328E07FA3DE4FE574 +:10CB9000E7ABED6A4B9E8A72B7C0A991DC3570BFD6 +:10CBA0009FFD1BCFFBB8C188FB84F8248A7F048DCE +:10CBB000DFF789710BEC370D6495CE618B2D3BB19E +:10CBC0002CE0396D909F618378FB2D31ED1C3E3C4C +:10CBD0003B3982EAE5D17A9A4E39E4D40FAE0B693B +:10CBE000F7D935F4A7ACB12D4BF0BB358129D86FFF +:10CBF000A5D98F05DA41FF623AEF27A3CCE7C372CC +:10CC0000462F680720B7147B7F524CFEB23E84F457 +:10CC10008801F722833FC3F83E407A308AEF316EB5 +:10CC200087FA9735DAC88E2256A3722AF9D17FC4C3 +:10CC3000328C3B64A8770F8D63C443663E9241F10A +:10CC400010B6BC07E9A7352EEE7F6D89694D0DA79B +:10CC50004B97FF1F20FA1796B5939DDDF900D05131 +:10CC6000088BE3187C71C8E013F37D9F624E174B6D +:10CC7000897E18F9B2A0A0F529CCEF5A044633E218 +:10CC80006F51CB7DCFBF9E48F3F5533997DBFDCC79 +:10CC9000EB247D3EA7D0D75E4CEB69C76A9C7F66CC +:10CCA000222B44FF667D6E159BE9A478DE51FC0EB5 +:10CCB000EBF4B3D80FC8871FD78F9E992387A0FFA7 +:10CCC00057F84DF9EA4A0EAF82765CA28DC7774DD0 +:10CCD000F83E37F4ACF9EC34E03F075AAED483E3C6 +:10CCE000E9D384B0B89A436D273F6BD12E6ED460E0 +:10CCF0009A08C1FBFD74C2F7A25DA579E8BFB3969F +:10CD0000983CAC5FF88E93D6F373F7F7A27392EA70 +:10CD100008DFC708AFAB80DFF7766EE7B8BCCBE9BA +:10CD2000BB6470FA711EC9126B7954E9E2839E5696 +:10CD3000589FD03E37E23FEF14AB3C7E6DAC539929 +:10CD40002BBC6C96B3ABEC4CE47481F7228E9352FF +:10CD50003CE61DE483778AF9FD5DE67EBDC70E9C47 +:10CD60007599732E1EC6F7E7171BFBF52C10965707 +:10CD700090D57DBFDE84C76C1FDAAFFF4A26BECBDD +:10CD800052787CD5B5D6E0D3158CF87664677B797C +:10CD90003CCC37BBA97524C6FD303D8B5FFAD2F180 +:10CDA000D0508CEFF59047A29C3FB53CBF0DE3837C +:10CDB000F2BAF651887AB55129C3D0B29947457F66 +:10CDC0008918F772F37B75647F2EFA6D5A09E7C3F1 +:10CDD00039857A32E611961DE3E7EF2E6EE4FB13F8 +:10CDE0004DBD1764BAA1DDCC776C944479257F2EB4 +:10CDF000C0DA288F2F0BF36A9C380F1E5F63D9C0EF +:10CE00001018DFD8F84E00D71B79DDD10C04655C13 +:10CE100089D3C8036C4B41BFC9B5411211FE596B90 +:10CE20004123A92457A9989F346B6D6219B69BD5ED +:10CE3000C8EF7D9AD55C2A627C181A521C33A74928 +:10CE400011C3CF9BE946FEE26F2F4994BF24DA79E4 +:10CE50005C7C617AC27689C70D484E176626D2FD82 +:10CE600081C5255C0F5B9A4BF554B5CB2E32FB5B2D +:10CE7000B8AB9AE76D5E41FFFC56E6FAE7B7C0D95A +:10CE8000B83F6AF25F8385E33BF0B548FC9F69AC2D +:10CE90004F671EFE472AF175280E18A4A76C51573C +:10CEA000A7207EEA3A46834661B58D6E71D120ECAB +:10CEB000475B4476E54607433F2073439F36CC5B90 +:10CEC000CC5CAB3041C5FE1666627E4DE0948DEEC3 +:10CED0004392373A088FF2261DB988C9EE9E843FE7 +:10CEE000F9312843FDB4120BE1C75DC2E16F103A7E +:10CEF0008DF3027A1EDAB19612DF8C92E1C6BE077C +:10CF0000E279792CE91B97CCED6FD7F2533FAB83D5 +:10CF1000F253465CA2EDE181553C4F5316287FD079 +:10CF2000FD26D5BB389C096827CE29112F9B070FFA +:10CF3000744F237E7945F2A23CCAC6FEBEBC2E7158 +:10CF40003BB63B38D04779ADA31A5A2514ABDF283E +:10CF50001F3E5AA97EF77520B4BFA70722F20DDA4B +:10CF60002C0AD9CF609BB7BCA87587EFFB065F681A +:10CF700046FE39D02906E5C5DCD7DA8CFE544EF7DB +:10CF80007B15AF749F624A399F5FE77B66DC29207F +:10CF9000E2BD525F8AFC1C9839EE5A431E97CBFCC7 +:10CFA000FE16F61AF7FF3E9755DA57FF7C85A20565 +:10CFB00060CA89B16FBC8B715CB52E5EC5FC1CD696 +:10CFC000A053BE0EB3DA29EFDAEC2F01F79FC3F6B8 +:10CFD0004F130CFB676F02AB50F2BBDE371B74DAEA +:10CFE0001B1A9F913E674E9E6F81F9226F40595ADE +:10CFF0003584E2C61FAF7C7E0BCE5F8A2B5451DE98 +:10D00000E71AE7F0963B0B55CCE33FABF89E2909B6 +:10D01000A3FBDEB894328CB7FC5F942FF36B84FFD4 +:10D0200035231EF0DAA7B1229E474CC07C8B1EDD53 +:10D03000F32D1230DF82EE370B3E311BE1BFC5C846 +:10D0400063E8966FB1ECFD07B0DDEB16CA5316AA84 +:10D050002A53D16EEFE5B58A944F3187CB5DAF7D12 +:10D06000DC2EEF55D94AFBD909817815E558C27CE9 +:10D070008A1E5D7CDDE4CA223E697A5DA2FBC57E24 +:10D0800028A84FD42686E751707C3655AB94CF1B29 +:10D090008A1FCE62661C95BE7FB64031CEEF31B29C +:10D0A0003F3A97447D9FA1F2EFD2693A2FD8398257 +:10D0B000DB0DE6BAF2D9D49E143FEC29FA5EA0F358 +:10D0C00051B2A1FFB245E39EF5CE383CB7B715EF9C +:10D0D0004980E793623086F2FEF17C0ED6731AF532 +:10D0E00064B05F71BC4ABE6F65D2E3B3D0F9BDCE08 +:10D0F000B8F078A3F9BEC9CDF345BAF6EF8F6463F3 +:10D100007E8299A761E62F951920833CC98FA23CA6 +:10D11000E9E09FA3DEB68FD12F77AFAEF99C102543 +:10D1200047138C7EA3F3382A471AF12E238FC3CCE2 +:10D130007730BFA78DE4EB93F99C69D85D269F9962 +:10D14000F5628D7E42F51C97AF171FAA678C6BE3C3 +:10D15000FC62EEEB8F4F88E4EFA4915CAFE546F5FF +:10D160001B5DCF9C47AEF1AC1CC9F5DE464F3BE5DD +:10D17000DD6D14B89FB051807201E713B4FF370A18 +:10D180008DD30CFF40E165FE1DCFAA635EE1136500 +:10D19000ED29B43FD3D36C0F2A389F9EADB89FB111 +:10D1A00031A63D05FDE2AE3CB0EB48CF9587F2C01D +:10D1B000349A5FA08ECF4F6BDB3370193C0F3CA8C5 +:10D1C000A8128F67D3FE9949E75CA61EF417E0FD0D +:10D1D0000F3C0F8C35AB07BD503E20187959517468 +:10D1E00037D789E8FC90F1F6748AD7C25F4B725149 +:10D1F000389F15119FE15F387F953979BE4899D3E3 +:10D20000D64AE741A3C7B94A5E57CFFACBFB8D4B4D +:10D210008C752975903E61645217BCD1EBE1DEFC40 +:10D22000645A0F41A45A12302E6DD8256F633DA069 +:10D23000C3AA91DE292387E37919F5EEC7A0499B9C +:10D2400071BF131B6FC44B64F0C7004FC77AE5E68C +:10D2500085EF0B74F93DDC7ED96BEC73B094965F6F +:10D26000A21D322081DF6B8D29A174AFE32E7E8F4A +:10D2700063ADC1770393B72750BE5BB7F1BC83C3DF +:10D28000F3AEA2C7F18FD4E7D37C8DFA57D2FFA6B5 +:10D290003F66B56AF3EEE17EB51FF7398EE227F4FB +:10D2A0004F6D9D77E079D534294EAB87E709C71DCF +:10D2B000879360FE7D15DFFDD8FFD45BC7ADC6B296 +:10D2C000D0D6435D0AF07D56DD51689EFF477CE174 +:10D2D000B9AC9EFC7C52BF782496B787618F7B07E0 +:10D2E0005FEEDC8809CF4103EF5A9C6F35F6D326F9 +:10D2F00076BA34CAD3E6F7FB3285CFEB7D83AFF63F +:10D300005BB44B9D00FFFE4D9979785EAFCCF1DEAA +:10D310006D8BD18FDB9C4CF7D298782933FC8159E7 +:10D32000A2B767AB1401EFA304AFB33A3355A4DF40 +:10D3300055E0F0DA930C7CAB83C2EF218E86177D2B +:10D3400070D2DF0F18F7A1B2D617B0FC125314BC7D +:10D35000EFCD8641255C07EAF8B9F5FF30F0BBD583 +:10D3600002F5501FD85902FAC929B1BC9F94C7458C +:10D37000BA5FD25BF66B8A073CB3C8A9A13D5ECD0C +:10D38000548AD3CD643AC5CBFE54FA8F573A607EA7 +:10D390003B47FA7E8AF0E3760AB6BFF39D58B2D7D0 +:10D3A000BDE52E3A4FCC4672BC5F8D0F7229398A8B +:10D3B000B1AA0982713E4B3DB6A800CFD131CA87D0 +:10D3C0009E15F2A7D424AC770BBE87F94D617E3A47 +:10D3D0009776A5737A7730E5153C8FF6565DF23D6A +:10D3E000F733FC3D8BCEDE56A9EB7C35E0FF00C267 +:10D3F0007F710C3F67CD5654F7233A37255D13FFF5 +:10D400004E14383E414EFF807C09725A80573B874C +:10D41000E4A62289C32D77D4C7C37C26F6F4E4A101 +:10D420005D73FD25251DE731962902EE478F31CE2C +:10D43000F5B67FA86CE7E77A4DBF438F4B0DFB1D18 +:10D4400084CD9FC731BC8FAE3D4BE2E77FF525F21F +:10D450002E28837562E48DFB7A7D06E5D7C0AEC5C4 +:10D46000F5BB9DF1FCE0F6227E4EE8C6944D151802 +:10D47000567DB58ED1B990578F491AF2EDCDCD8733 +:10D48000E50228BF516AEFE4F79076C8287F37F9A4 +:10D490009CFE70BBB732DDD215FF6378AF5864795C +:10D4A000FCA0C878E1CD5789175E18699CAF1AC0F7 +:10D4B0000660DCF94054BCB0FCEAF1C2BF23DE4395 +:10D4C000E73A70171AE07E76548FA7910FDB471E5C +:10D4D00028F90CED877D1ECCF8626F9471BB79D072 +:10D4E00028AF300A9EE72D1DB3914F3E580903F532 +:10D4F000C378A59DE9E0429F5DA950F9A39529F461 +:10D50000FCCB4A959EE756E6D2F7F32B352A7B47AC +:10D51000E931A39250A5FB9BD19F5856C77F7F64EA +:10D52000996B292F5BEC0A2AD9351987E97EAA3530 +:10D5300041EE37CFDD155C8DD39EBF4FB7626EDAFB +:10D54000B28C04BAFF6A99719FC3EC23FEC3C83E34 +:10D55000E78F7E3065020BF373BF12C86E2E2AD59B +:10D560005370DC3FAF2C22783E5EA9133C9FACACDD +:10D57000A4E7C251DE0CFCAEEF3BBD3A05FA9FF0CA +:10D58000D3D3721A3CC7E8FC1CE0689D05831ECC0F +:10D5900027E7EB47732A8F03960EAEDA7A37433DBF +:10D5A000EEEB87F8B92561E618BCC7E5E6A26A1973 +:10D5B000EBDD7A89D1BD3D265F5F4D3E54D67E1EA0 +:10D5C000D7B74F031C2F6FEF7A9BCA1764C00BCCE1 +:10D5D000F4C22E07F9A1174EC4521ED2A417F9F7B0 +:10D5E000A5753CDEB2D70AEDE96957304F2B799F1C +:10D5F000E7D6BD88C7DF5BE87CD22740374CC8DC64 +:10D60000DB7B7D82CED7D14E7114E8BF9F569FE958 +:10D6100085FAED413BB3F5827A3FBBAF03CB6B0498 +:10D6200027DD13F14982B1FFCAFC0EE4ABF3A1FD83 +:10D630006B3FDD3BB1C86AFA93BE8158FE2496D792 +:10D64000C7F1D47EFC3DB6FBE4672F0D44F8FAF633 +:10D650009455ECF7D99F6DBA80E74C9964F7DB409D +:10D660008E5EF8F9D6ACEF13B70789EF5ED8B92E06 +:10D67000F63686BF67C2F38BCF6C7C290DE7D90FD6 +:10D68000EC50D403331FFE75DAAFA1FD73A043B095 +:10D69000BFBD16EDFC1ED4EF5BEDE4273CB7716116 +:10D6A0003EEAB1DA1F4E1B9B8A7CBE9BD139BBD9A7 +:10D6B000A3F8BA3DBB79E70F713D1FA4310DFB1BE9 +:10D6C000BAE5B4D80BDAE5FD58A8C7E7B09F7A24CD +:10D6D0003A169BD2F26F88E70122D39EA4FB779E75 +:10D6E000E915BECECC1FA546C4030666541EC13C38 +:10D6F000F7414D7F2DEBC5C2ED8658D2D7A6BDF0C0 +:10D70000EFBD4F5CA8A6758FEF9FBCB86FD2DB381A +:10D71000DFBD422015FDB040B555A3752AC8732161 +:10D720003FDDD587EC8EDD6280F26F0335304F2808 +:10D730007FEA0D3C81785908F5D11F5B98D77E1A96 +:10D74000F32116BAB3E85E838F82CBC87EBD4E60EC +:10D750000ACE73D1AEC7C6227D3F1DC93401C69F14 +:10D76000F3E2E7B48F8407E1312EF2E9AEFA9ED3FB +:10D77000A1FD4383CA282FCF2BB5D0786C311F6F02 +:10D78000F1BE9D76BAFF14FE87F972EE7DA507D231 +:10D79000D42EBA891D0F7BD0AF4FF2817D0AF59B45 +:10D7A0003D8154B47FCDF574E748EF8651B40E3E09 +:10D7B0004A792A7F02B868FFEA1AD73FABE8A73C4C +:10D7C0003996C2ED71B3DF0CB195CE6D8234D0BD08 +:10D7D000AA3B14BEAF80233D42E3FAB6A09CA74902 +:10D7E000D564EFA7D9B8BDCE944994AF76ADE36FB9 +:10D7F00076FC93ECADC5621C9DA337ED95A93DEA7F +:10D800005FE9007A5529BEE7717EB38CF59FC99A0E +:10D810008AEB649EA2BF308AEC2D5857455A4F7F41 +:10D8200086E54512D85F7DC2EC2FFBB5ADA7358AE2 +:10D83000FE2B9CCFB5D65799D68CF19490DEFD2265 +:10D840003F42EFD6BBAC2C0FDED737D948BFB083F1 +:10D85000E282C360878FC22EC4AEFE96B9F29331C6 +:10D86000EFAD9EB1CBE2EB3720F73EC06D2BAC0F96 +:10D870003E92FFF67A8CF7EAF03F17F0C9E8AF4422 +:10D88000E6BB4C9E8CF9043ABD89F32A658E887AF2 +:10D890003A73D37E1173265CE37C5B9F895C67DA05 +:10D8A0009E099FEFC80B271C684A011E92F179A5BB +:10D8B000F9BC62CCE7B7381F78BE5AE63D83F08DDD +:10D8C000FA9B42F72A8C9625E60B5BA701FE8F9107 +:10D8D000AEFAA5D808F8437C768DF0DF037E24ED00 +:10D8E0007BFDD54AF1AA7D461C69DFDC41FC3E2464 +:10D8F0008CD7403950C5CF49EE73F9290EB3EFF5F7 +:10D90000242DC028FFCAF8DD281E6FDB17C3E56190 +:10D910005FAAA2606E6E2F1B3BBB0BE55E8A67E8B9 +:10D920007786FA4F52C8FE09DDD7348D8FDF3DEE82 +:10D9300023F1BCB369B1145769CA6B1DF80BFA9E89 +:10D940004BF13C33AED34BC28BDCA1AF7A9E6FDA86 +:10D95000E45AFA87C1D0AEA9CE41EB779327B81627 +:10D96000F3BD9A1EE843ED4AA4B61F61FCA8F3AFCD +:10D9700056C6EF630AB822CFC9045C91E764E03B66 +:10D98000E0F5A441BF13328F9F9C08469E93391146 +:10D99000CA6BE3EDAFF5BD19873965E67BBB1B9319 +:10D9A00068DF7EB42F6734D069DAAC1D31BEB07841 +:10D9B000EA7D766FBFD140FF33B53B5EC07D165622 +:10D9C000CBFD20684FF644E0EF3C2E34D2DA71D321 +:10D9D0001498E7C8FF290A38EF68FA87E25A0F88D7 +:10D9E000C6BD54FCDCD3B6D77AF0BCBF4C4EDF4E7C +:10D9F00097D5BCB78AF207B7B5F437E25A828EFEE4 +:10DA0000AB993F5859C5EDDB0B2BC4ED18876B352F +:10DA1000F209B719FB07817D2E1E17953B6330AEC7 +:10DA2000B540E071AD3B0DFDB68DB5A62DA67A31A2 +:10DA300094BF6AC6D1B6ED1948E3B532359EF8E514 +:10DA40008844717DF3F7453E73599FB185EDB3D49A +:10DA50001BF7CB2C30F206B719785E70ED79849302 +:10DA600011BF57CC230CE18BDFF3B56D790F339FDA +:10DA7000D288039AF77CF1F39DDB02D9F4BB082529 +:10DA80005229C59B3B413FA07F6DE6179C7D4024FA +:10DA90003FE336D6F9785F0FE2ABF3F5EB709E7B90 +:10DAA000F87DA9BE557F8F1950807A9CDFDFD5B1F4 +:10DAB000EA9DDEBEB079213E91AF7C682741F98FA7 +:10DAC0004A872B3CDEFB47EF59BACFEEDDE552AB80 +:10DAD000F55BF20B6734FFF96B36049E5EEB69CCA5 +:10DAE000739AB1E2831918879F31E7D21DF47E4102 +:10DAF000747E5364BED263A3F5FB116F213C7D2C71 +:10DB00001AF1D0C06E9CE7CB8AA2E13A0C78E2729F +:10DB1000FD716C88AFB0FECB1F0D32F86A27BF6F66 +:10DB2000E345C1B8EF8CF3E1CBCDA911F9962FCB2A +:10DB30007CFE2F0723F34DBF19E0DB8072137D7F3E +:10DB4000D9B8EB7D8DA3C97E383F16FDADC52C8EAF +:10DB50007E57E49CA5FD30C679D88A6B5BE7E6C7A3 +:10DB6000EE5B2480DCFD65DF8EDDF804BC13DD8117 +:10DB70003A2477E794D638C4BF4F6CB1925EAA615D +:10DB80007ECC6F9A87377E1790BDE65F33A27BBE4F +:10DB90001BB13CF897F3F13F286FB2C55A9288ED5C +:10DBA00098FAA482EFAD5DF5C92F0D925D05F5974A +:10DBB000225EE7BBF73C5C02EFE7399DF61509DD15 +:10DBC000E9336FD79AF63E43BABFEF0E47947ED83B +:10DBD0002919746C8D433DD8A5275B29AEDCA52798 +:10DBE000E17B987E3B67D0E75C147DCE85E8C2DBA5 +:10DBF0009BF6F783C6EF045A8CDF093CD77286F890 +:10DC0000FCBC192FD3787EC2FC5FF07C83070D7DAE +:10DC100039BF474B21E2BB9714B91F6F3EE7DB5B6F +:10DC200056A3DE527465E99AD4AEF8DB7C6F8B158F +:10DC3000D71BBBCADFEF36E204F35890F294527C54 +:10DC4000FCFD7C2FF87809FC3DF2A5D9CF3C31D8FA +:10DC50001BE964C2D16DDC28BCBE379AFB050F9A64 +:10DC6000FB352EAB11BFD752106FFD9AAD11F5CF1A +:10DC7000BBAC77E2EF6DF50F46BE37FBFF78B460C3 +:10DC8000C46BC2E8E9B9321E3E33EAFFE427A1FAC9 +:10DC900012CFDFC393A006DFA97C5DC63CAFC049AD +:10DCA000033EC6EE4E033B6D3EF24056179E76E7AE +:10DCB000F9D212E0795EE47A72B71BCA83484FF951 +:10DCC000C3CB217C47F1EFAA9385642FEEAE930579 +:10DCD000DCF7CBB89EC7CDF7895AB3792E1ECFC9D2 +:10DCE000D7B90AE97781FFB252A7DF398A9ED7D91F +:10DCF00095BA5E1BF67E76739E9DEE31D99267AF24 +:10DD0000098B07D73FFF4C9B8AF2AEDB3B45E0A572 +:10DD10007A39F8707122BE975A80E3E139CC8EF8D7 +:10DD20003EE76C7B03EBCDDEE2CE0F3F4F7557F342 +:10DD300018BD368C0E039F8FA4CBE096C8F2D03D61 +:10DD400091E57EA843867FF77679AD91E56147221C +:10DD5000CB2F15754A98A7283B45BA6F4576AEB2CA +:10DD6000F2BCC5F8CE1C186FF8B1062BAE537F6617 +:10DD7000EC22FAB11FED5E5388F6F627ACE5F80405 +:10DD8000A0C3EC7D9BACB28A74F58FC57BBA0365EA +:10DD9000F6CE1D5AF77C5DF8B27A21F43BCFF83D00 +:10DDA000A5ABE5EF9AE77CE02F379CBFA2F9E01323 +:10DDB00023EF70C1F29B1E0D3FB73AA26513E545F4 +:10DDC000CC1D1F39DFF9B2CC50BF5D496FC971ED71 +:10DDD00063516F9D7E4860FC7E7765F47228CF6C3E +:10DDE0001219FF1D28E5070F42B9D61B4BFB1BA1DB +:10DDF000DF4DDEB0E430C60FAA25BE1FAE14298564 +:10DE0000788E6B965D207B7E95E30794373407E62A +:10DE10008FFB2666BE64F1BEED12C25913955F5B9F +:10DE2000BB210ABEABE4D5CEFBF137B6C83C5B3EA6 +:10DE30009F59067C5280DF2F516CC46F3EC42A2349 +:10DE4000301FD43BEF7AC0737113B72F8A65EE7F12 +:10DE50002C643CBF73A1DD77AF115F566E80FA472B +:10DE6000C00F43FC7CDE1C4F71CBCFB11F2C6FE188 +:10DE70007149336F7F610FFE7EE1AF048A432F94B7 +:10DE8000AAF9EF6E2FE37969C81F7A18BCC80FE1B1 +:10DE900065D668C6F9F9EF75CFC3DFEB468B1CE892 +:10DEA000A647E43DB75A3F82711605849627DD3CAC +:10DEB0002F34A21FC6CFCF2D66DC8FC7FCD0C8EF92 +:10DEC00041E2B36D161E6F87658BFC8F6DF3A6C79D +:10DED000A2BE02FDC3FD98895C9F5D6D7FB9298F4D +:10DEE000CFBB696E0EF941BD504722FE1EE5FBEB2C +:10DEF000B5E29BE4E7D4F6E278B0187EC8290425A1 +:10DF000015C3D56D14CF6F12F8EFC634795820863B +:10DF1000FA1B60DE076BF835E6B91CBE7F3BFD31AE +:10DF200037EDDF86ECC84DB688FDE4E91B071BF62C +:10DF300051695F3B7D8FD1785E0487777A12DF8FDE +:10DF400036E567BA711E657AD4799CE9A17328C158 +:10DF5000A4F07DE1ABBD37FD94AAA1BE3DD787E516 +:10DF6000FB34B98D7B47E75CDB3ED395BEFFFFE713 +:10DF7000FFDBCFFF052A16D1F10080000000000072 +:10DF80001F8B080000000000000BE57D0B7C54D5C2 +:10DF9000B5F73E7366269364929C841012C03009D4 +:10DFA00049881060C24B10C4212F03040CF80245AD +:10DFB000984080000984406DB42813028888365840 +:10DFC00054EA032708A82D7203A2528BDEE12160D8 +:10DFD000458DCF6BD54B13A90A8232061FD8DAF6CE +:10DFE0005BFFB5CF49E60CC1C7F7DDDEC777E3AF0E +:10DFF000DDACB3DF6BADBDF6DA6BADBD67AB55081D +:10E00000314488E0FA48FFE63421FEAC941EB25059 +:10E010005A1E55BAF6F2444AEF4B4FAF2738DAA3EF +:10E0200008D1558861799E2C4D9677A3BCF0344F6A +:10E030001589A827B4B5B9543EDD93559383726210 +:10E0400046A9538863B9624A13C1D14384C74F6953 +:10E0500022DA198AD4624A4581AF91DB89A476E23B +:10E060008598264A8B542ABAD545ED50BD727BE976 +:10E070001F2E0B19CFC3B6C01318B710AE84BA1435 +:10E080002152F576CB2D8AC74ADFCBEF89F0A39CCE +:10E09000B07A7B039EF66EB67BADC2E3E4F1BC873B +:10E0A000AA29F8BFEA3FDD4AED5EFF5AD7416B5D12 +:10E0B00080EBB89DDF2BC2E7A07ABE4976FF566A97 +:10E0C00067C3244F4A5422D2248B8FDA79E6EFAA11 +:10E0D000C07883F36CFECD046FC8151E8C67C3D463 +:10E0E0002C3FF2E393DFDC58DE4588EEAAC4AFF89C +:10E0F000658C6CA7302F4550FF1BE8DF7F41F9424C +:10E1000097DF47FF1EA95A185FC2EAEF3A2986E057 +:10E110005EA21D9E0C5855242C28BFBF10FFC0DFE7 +:10E12000E5346E9B28C57CAE6FB4F832E342BE2B5B +:10E13000F43DA4FE8FFDBE21DE939240ED4D1EE81E +:10E140002DF20CEDC8DF10EF8FD450AF8226358250 +:10E15000EB0F2D0DA96FA48431E693AA679F7CC6AF +:10E1600047E39CFF2FF7C60A2A77D2DA90E4A67617 +:10E170002BB7AE8AF5507AC2EA8B457B27FD6A3110 +:10E18000F822BC9D553ABF1183C52A49422C6452DE +:10E190000BF1E96FFEBAFA16C2FBD78A08AA1A7DFC +:10E1A000DFFDEDEA5B088F873C8EA04846BB2D451E +:10E1B000BF20785E99B3BACE2DC4A23DB60F5B1CCA +:10E1C00082FFFE41FF9BFFD8BD49AE181E670F4B73 +:10E1D00032D2400FD45BB8C5E60E50BB0BDF52DD28 +:10E1E00060834522B81AE30BAFBFA8E9B81D74D706 +:10E1F0002C22D873E4F9F9C411F6529AF7A2DD770C +:10E200007EA1C6223DF99E1880F6AC1FB664EBE5F0 +:10E2100088DE15343DE0B1F683C8170F6677D45F0A +:10E22000EA8949FC389AFE7189B8E41F2AE3C71DC0 +:10E23000001FD2B83225F9996FEB9F786CC7733401 +:10E240008E93EF75CB8DA0CFA7B7BC1CAB101EBFB4 +:10E2500059EE78F1A00D0557301F9F6EEA1DE7EDCE +:10E2600004BF46FAF9722A1A114A3F3FD773EDA14B +:10E2700001762370AF4C2B6D81D891D45F65A3CD0F +:10E280004D1416954F3EBAED01F0F51F23DC992E83 +:10E29000C067ED16E42B9EA092CBD389558675D02E +:10E2A0006DC1931F153D48E517A4A8A284E836FF69 +:10E2B000A9AF64798F084652F9053B5B8B7E01D884 +:10E2C000EBAC767442B7FCA67DF6166727746B6AD2 +:10E2D0002DC27AAA7FE21BA6CBC91714D12DEDFC63 +:10E2E000FA155B4FD9B10E4F1381B478D0512DB3CD +:10E2F000C77546BFC0C4E78670BE0679F04374BCDC +:10E30000DA23185F55CFC68878EABFE2BD087F09D7 +:10E31000E87BF712E6FB4FACD592EF1F5E95E4A1C8 +:10E32000F157D87C491AA7F27BC5A69FE9FCE849BA +:10E33000B10CE7F9A5605EB31FBA86E73547789957 +:10E340000F2B1E564BFD947E6515C53B3BA1E7B7D1 +:10E35000BAFC8B108B07607D7C452DADA5797C6266 +:10E36000172CA77C6FA8FEAD0AF2371F53E8FB57A6 +:10E37000CD5D95B5344EF5759B037859FA7C7C6379 +:10E3800004C1AF401E138BE5BFFE5511D6D5D23464 +:10E390006B7584C6F3F6E97852FEA170EAB20EC33B +:10E3A00077FA4B47BB6DF61BA9FC97F4FD01B7A9A3 +:10E3B0003CE3E993CD1151CA404A934405E415FD6D +:10E3C000BD21C01FB22DB170D939B98E85AB0DF307 +:10E3D000CF1E23D7FFA2C73F297A00EB6DA6B33A21 +:10E3E0008EF0F3E55BC7EDDDB11E122D2213E36A5B +:10E3F000FE8861E1EEEA8A4BEEC0C7A23D11221011 +:10E40000BA6EB77C14B66ECDF9B40F30DE1689380B +:10E41000D7DA44E02D68873CF051BF5BA99F391BD8 +:10E42000A87CC83A5DB4EC84CE0FF68EEF691DEB84 +:10E430004EA8D3E2BC44AFB9FA3A0FA757F8BA3F97 +:10E440001BB6EE8DFAE221B9DEC3EB77AC731FE3A6 +:10E45000A9D2267C1AD6CF1F2378FFA95C2FD7A379 +:10E4600020399949FC7E7CDD81A41184A7534DB6E7 +:10E47000C412EED52C572B767D74E8762ADF3D59F1 +:10E4800015912C57BFB15BA87C72BE0846D0F84FDF +:10E4900055F815D1BF937549DF3B5D9715E23F569F +:10E4A0009E8A755FA80342F16E5E87732F204F53DB +:10E4B000C7105EFB75E0F52B91133712995A592F4F +:10E4C000EC5FE1F835F01A2E179FF3B818CFE17220 +:10E4D00091FEDE11217814A2E5D0ED84B7AF49CECC +:10E4E000AD75635FF996F72B426B3082F877A1FF29 +:10E4F0000B865761BF6278DFD5CA80CEE66DC667EE +:10E50000787EAB47F0784A7F6763FDA272AFE28FF7 +:10E51000E0B5E43BD46308AF4B0F8B15D170A8472F +:10E520006228EC0F839BC2CA7BC2E0D2B0F2DE301D +:10E53000B8DA54BE72CF01BB607E0898CA45D48E4B +:10E5400017C70777A62FF879BD2CDAFD85DD07FE02 +:10E55000E819B443EED956085F0CF4ABE755D6AFD3 +:10E56000CEB882B1D04B56454A7DF08CA6C3F10699 +:10E570002C6694D138CEF806683ED48B243D8FDAD1 +:10E580003B531A8C8DA7B496C601B8DE7160E39F29 +:10E59000498551235FDEF8E790F1D4C7E8E593653C +:10E5A00079E37BEB5E35D645EDB7F8457193B3B3B0 +:10E5B000F1D7331D5A84CC2F54BFDBD142E368F32B +:10E5C000655822681C6D2BBF92B0353B41B8515E37 +:10E5D000EA977FF65D914463121F89D27746826E77 +:10E5E0003E8F3D85F8689624B1A878A93E569028BC +:10E5F0005663861CFA3DB533871848A5FAE5EBC289 +:10E60000F419511A1748837CB275AC074967965FB5 +:10E6100073693F5D4BEBB9E22173FEFCBDA7781D2A +:10E62000CD0F5B475E8C25E5FC7574BBB18E7245E2 +:10E630002ED651A1EAB460DD9E39A232DFB5ADB469 +:10E6400089D598EF76C52FA89DB6BD523F6EDB23C6 +:10E6500061E1EB2AF5467D3D1BF83B8D75D6E7C29F +:10E66000FAC9E9A7FF7DD82FC057CFBC3FE0414A88 +:10E670004F3FF3C7ACDF037EF6DF52DF17E797CFDC +:10E680007FE1DBE93CAE172204C675E685C3A9D05D +:10E690002BCE3C17E1C6FA3CB32282F574DF0B3176 +:10E6A000FE4CE45F24CF03F5CF7F33A085F7A5951B +:10E6B0004C9F5D63EC9CB6EDFDEB3105F3D81BE19F +:10E6C000C23C16BD10CDEB6DD173917E81FACF7F28 +:10E6D00033CCEBFC8F9BCF42BBF0321F123FEE02DC +:10E6E0005FC7D3B902EBE8F7231EADA3FEAB76EF0D +:10E6F000B3CFA2FCFC7FFDDB00C8DD33BBF6D92124 +:10E70000973FB7B56C027F3D3FE6A8DF4678FE1C19 +:10E710008BAEBB10D7E639CBB0AECEC78BC4C31916 +:10E72000C203E64578A9801E7E217CBCF5DF161F5A +:10E730005F4C97F2EF12A1A685E245F1C8EF317E5A +:10E7400087C2F397DF5FF86600E4D30FCDB70DF310 +:10E75000EDFABF67BE5ADE7FD7F94A7EDF38C6C5FD +:10E76000E30CE7FBF3F9FAD99B18DE11E3E6F1FEBF +:10E77000C8F5EECEFBDFC5DF13FFDBCEF787E8FD84 +:10E78000924EEF180DE79533CFFF2D55FC84795746 +:10E79000FD0FE57343CFCF53DD4772A9FCCBA2E950 +:10E7A0002D771A6B1FAC77D4D3768CF60E27A76D16 +:10E7B00056F91C22CF57F9FAF9EA813C799EAA173B +:10E7C000835636613D903E81738D10830EBE8E7AE6 +:10E7D000DE51AC274408C9575F3962B6C15E56D0D6 +:10E7E00073967509CE575E79FE22F8E04EE8EB97F6 +:10E7F0004668800FD4D178083E1063D1EA3BD98FA8 +:10E80000DBF765C72B53143A471738CDE7AEF161F4 +:10E81000E7A7B12E737EB1D89508FB5D718E4DD000 +:10E82000094414A17CC8B9B2364FE3798D150D2B7C +:10E8300035E78FC2139F770F6B2E1D4F9E809FE091 +:10E840002257460DE67FA81D4F35C295C876173E64 +:10E85000370B61617A1D765CB66D6D287EF12F17DE +:10E86000E637FE20F07088141CE8EBF93D27309C59 +:10E870009CEF60BDDF2AE83C2CE7693A3F5BB96951 +:10E880004A81E74489E73CC6ABF7E04E1AD78111CD +:10E89000115ABD66AACFF3AEEF39D8E172FEF3F19B +:10E8A000FB30F03BF47CFCF6B4E65AB1AE2ED3F567 +:10E8B000FA026BBC847B36ABA5BCDEFC928FBF74C6 +:10E8C0005BA17F8C71C65BBDFC3D381DF62CD5125B +:10E8D000EB867D8238495869DEF5744E85FDF8AFC8 +:10E8E000AAF79D3C9C9F4B3491077CE48926D883F2 +:10E8F00095BD87BFC53989CE1B16E88F7D361E7A38 +:10E9000017701F873300FB8C78C87ABA5D2F4E07CB +:10E91000762F8A87BE8AA3F43F7A1095F747F2FADA +:10E9200070F4B4B3BEDADFE5C97351FF5144DF744C +:10E930009AE798FD911E3D7F33E48A81D7DB757B92 +:10E94000F19DB4FE0330B47D47DF896ED1A0A18A6A +:10E950007604CB8D286A379DBEE585B573D772875F +:10E9600008F4E968C7A8EF44FDDEE7D7CF47FD21EB +:10E970001DF5EB976BDC6F78FD980BF45F10D6FFFD +:10E98000AAE5C97AFF72BEBEB755B6431BEDC45E99 +:10E99000A09DC2B07138732C26FB47F878D40BCCFD +:10E9A000A728AC9DD82151DFDB8EF502E3B9226C9C +:10E9B0005E566782898FC3DBB15D603CC25A9D1C85 +:10E9C0006AF70EAF67D7EB19FC6B94B3277637DB8A +:10E9D0008BB4A631184F19097DF0E74467608CE1CC +:10E9E000BF58417C7C91D5CBFDDAB38506FF44D975 +:10E9F000AF9E1D03B86C2EF1722ED64FB382F23D3E +:10EA0000496747BE5DEC56B8BC26B47ACA2F8B0B5B +:10EA1000C8F2B3A8BD78D92FE44D0652E2EF8B447B +:10EA200013D78F2A608B210407F3777AA61C8F4DAA +:10EA300068A90AE1B157BE76D3BB380FAF8A746FAD +:10EA4000C6B2CA93E7E5F6F9E74BFF8B91F62C7057 +:10EA500071AA5ADCC9C0C3C49517F3795C8D2AAD7D +:10EA60007A1AEB7147B47B2B2565AB6F9C3014E3AE +:10EA7000DBD1C50D947D3A71E730949FB972EACF2E +:10EA8000DEA6EFDEC723F9BBA7C07B653EC98B4F6F +:10EA900015D7F4A7E9C3CC6B0ED893A98B894D3B4E +:10EAA0003F87FD7AE2D5D16E05B0687AF552B47F22 +:10EAB000B5EADE4A70EB8E183B2D5B31A1E90B2BDA +:10EAC000EC0B134629D896456BA496BA98C653A664 +:10EAD0008A6AD0ED867C29AFD528E1DDE5C4B82E61 +:10EAE000CA4AA7EF13F4F37EF83EB44E2FDFABDE35 +:10EAF000ED4AA476834AA4B679484779B48376EF81 +:10EB0000C99776D0393A5E0CB857BEF4CB94AF892A +:10EB100068ED1D8BD416E843A95294371FF32C4996 +:10EB200017451BD1EECDAAD8CCE3A52D01F85F9FE8 +:10EB3000E6821D83A824607F15EBD2785F691DE310 +:10EB4000B6A710DCBA3E4DABA779973B25BF969789 +:10EB50003AFC2BD290DF14801D2FF86B85E9774C9F +:10EB6000D35251FE58726FCD47A2B917161EF263E9 +:10EB70001C6C2779B5C07B5BFED00E7EEEABAFA7D9 +:10EB800012CBBE8C6ACC2F96E43BF8DDEA8E85BEB4 +:10EB9000F47347693DC62D1CEEBB2FA1761EB85BF2 +:10EBA00015B07B1FCF77C9F9AA810C8CC7AA493E43 +:10EBB000DB646B9987F6F2F2259F942468C39C92DC +:10EBC000BF04FC81AD362D0BF36B5D156921992EC9 +:10EBD0004A56487EBBC3DAC4FCECF7B82C3EE2CF01 +:10EBE000197AFD6975D6D2461A474F87B0C62408F0 +:10EBF000716991770EC63FA1A9EE18EC27B37C721C +:10EC00007EB3D6ADB7431FEB556FF8C59A0BBA501C +:10EC10007B27B6A60D5A2B3AE87B6951DE83F9A112 +:10EC200074BAFA8B5CD4179ACB129702FEF714755C +:10EC30004D44EAAAC1BE4A746B447F85EA5E5EBF5A +:10EC40006DB5A403D1F8DA44B3849385E6CBE5F53A +:10EC5000C9B0BD9C64723CC66B5EBF3DF4F567CD28 +:10EC600090F036DA2FAC36211E27F98FF43724C7FF +:10EC7000ADB436B7933C06BC63B98BD3A6E5D9FCDB +:10EC80007DD77237C3BB970F67F899E51E86F72CBF +:10EC90002FE6F4B9E5A5FC7DBA2B50877E921D4284 +:10ECA000BB7D04E44C13CB8DF3E4C0C5D21F6BD005 +:10ECB000D1B6668C057A8641BF4235270EFB759B1F +:10ECC00070C5693917D6DBFE59F3C810921F520977 +:10ECD000DF75233A60E017F8CB10729E490E293F8A +:10ECE000D385C4B7467BC7EDC0B7D56361BEF40A10 +:10ECF00017EADB4529CF3B0A4B2D05F471B17DAAFC +:10ED0000A75754D7493C49FA15C8FE0CBC08BD9D0D +:10ED10004D55C205B929AC2D17C32E5CA89EBEEB7C +:10ED200012FADE56617163DB6F132D4F3ECBB0D309 +:10ED3000EDA3AAA976F1F9E121AC0DB9D454292F9C +:10ED400023206F6F2B4E839E73438522AC21FBDC07 +:10ED50008DD591C21AB27FCCA88D37C1DFE678BFBE +:10ED600004DFDEB8ACF5E17FA3F6A7DFF6E9677351 +:10ED70005D3C8EADF7A3DF65516E3AA9D03868D8F7 +:10ED8000896C6F63BF31FE1C492457F10FCA2FBB3A +:10ED9000B5AF7D4F22ECC30EB742FCBDC9EE2A1AB7 +:10EDA0000E3DD622825B8957DF033D09FF1FE8F441 +:10EDB0008C6CF8A611F6C9569F95FD45624DA127AA +:10EDC000548F8A2D48673C1DBBE5AF8D2DD4CE23D3 +:10EDD0003687063B646B4502DB4521E21DC33AFAE8 +:10EDE0009FE98B6E855E3673A51A8818707E7BC28C +:10EDF0002DF5BD0FA1EFF1BE467A1EF68B80D4F340 +:10EE00003EBC35C9073FC4878B63DD0AF5E35DD39C +:10EE1000CD3797E075B976B70A7BF85EB11A764DB3 +:10EE2000E2653EAF089FCDACF7B5F48C871F85F542 +:10EE3000BECB1177E0677D9FD84AC3BE3B337BBF13 +:10EE400080FC140D8A06BF6539F0970039AE707CDE +:10EE500002C9C5E4AB49BFCC2A5079DE85F9564ECC +:10EE6000EF83A24F69A470B3FDB27C1D95877C69C6 +:10EE7000C8B5CF09D96766EADF67655B3835BE0F6D +:10EE8000457B2467BAAFC99D8275D81DF9394807FB +:10EE90004DC1F8BA3B8BAC4A88DE39B0C0CAE50B2D +:10EEA000D1EF50F4DF95D3B5D9F29C37D379ED1675 +:10EEB000797E71D9C1AF467F33B307AD4E1F8271E2 +:10EEC0008C019644BD8D5814FA754CF15688D211B8 +:10EED00005567D5EB2DD4A7DDF2384D8A1179DA053 +:10EEE00063A98C8B9076EAF93B7ECB7EE6F9EF47FF +:10EEF000F07E3E7FA0DC77458E7FD855D26F69F2D9 +:10EF00002315FCF633F67F7C46E74BF61BEE3E6E90 +:10EF100057F9FC28AA217F17ED565B2362CFF767CC +:10EF20001CDCF17E6CA77EA4DDD2FFFD437EA442F3 +:10EF3000D529CFEFBF937E10038F8B9473EC6F5D59 +:10EF4000F4FCAA246F27FA00FC97B509E7FB937E2F +:10EF5000ACDF29DC4E5E5960F637197EBC0BC95711 +:10EF6000C3DF64C015B5037AC32F31BF76586FF87D +:10EF70002916D68EE6D4C8FF6CF91E713CA47C1508 +:10EF8000E827CF5BF649217AADCF96B7AC00F4B352 +:10EF9000CAFC8ADA7E7ABB83B9BD7FD5F52097D5C6 +:10EFA0001507FE69F367C689EF19E7A28D34992E1C +:10EFB000F063B8E2E0B73EA39FA7CF6C57592F3F4D +:10EFC000B3BDFF66859A9CB7F757760B7D3F58A077 +:10EFD00030FF7C16E6475BB8FD38FBB5AB4433D356 +:10EFE00091E82B1CA17ED58D76EE277C5C0B7E1BD9 +:10EFF000530DFE9ED7A478B662DF7234B19DAF6D1B +:10F00000FB8D365F08BDFD3A7F878FFBDE0297E9F7 +:10F010003BC689712C8868FAFC3DAC947F8946AC6C +:10F0200011E8FE2AE21C4E3D34D80D3D685ED3CE79 +:10F0300085AC3F6C8FD6603FFCD426CF0B463BDBC4 +:10F04000F5FEB61748FDF094EE6F3FB54365F98CB9 +:10F05000F1629D7FAA48FF92516F975E6F5781A41E +:10F060004341815C8F46F9794DEB596FFC7CF7F891 +:10F070004CC885337BDE8CCDA0EF7B75B97066778D +:10F080007431F07166F78345BFC77A6B1A9388F5C0 +:10F0900069B4FF52814DE27FAF8CAF11FE2EBCAE42 +:10F0A000AB80DFC1A1E3ECD2E80B913B2407B8DED3 +:10F0B000A9DD4FC55A723AE8B7C851BD867654D11A +:10F0C000D3E692710636AF0F7633DB9E3101E8E965 +:10F0D000BCFEA9FDDBB3AB4B710E30CAD91D1E3E81 +:10F0E000AF2CDC3349601D187EA39AA76D7E9CE38C +:10F0F000A60F745D7703E4C3CB36C67FCDC522006F +:10F10000BBDCD9DA9846D0B526AD256615E52FE9E2 +:10F110001F85BD564C1FACCB9FE496A18883AA5C8B +:10F12000A308CF60F8F73C2B0EA19DA3F27CDB9ADD +:10F13000E67E0DFB48F015A98757FA55E11DCC7204 +:10F14000256B32EC69C30359582FDD893F3C849A03 +:10F15000330552CF3F661715A053657A202B3E0723 +:10F16000FAAF8CCBAA4C0864C1DF785AA763E5E4F8 +:10F170004016E2C12A77A5703CD869BB8C6BC0777A +:10F18000E8539583A87E08BD2BE7EFCF021F57CE2B +:10F1900074BB90DF9AA67DCE71774FC708E8ED96D5 +:10F1A0006763981E558F45F2F91682107A7FE2B692 +:10F1B0009446D8E1AC8592BF1EC0BAE37DCAFFD2A7 +:10F1C00061E4AF18C5FBB6D14FA245DA19E7D91BE8 +:10F1D00078BC46790336E60718F33BADF3F3BC2859 +:10F1E0001DD6E7312FB681C7DF6A131ED023F8443E +:10F1F00004C7077E9AD2FC35C6FDE913170BCCBBBA +:10F2000035CD3F670FE793FE8FF5E36CB02763BF03 +:10F21000C87704B13FCFFFCD635F633F38F930ADAE +:10F2200043DACF136FDB3E8CD7134DD9428C533C5E +:10F23000F97186DBACC202BDFBA4CD3F0CED9F8C07 +:10F24000D4F89C70B2AB2B8EE197BA707F2795866D +:10F25000548CCBABEF5B27B7FE3A15EBF8E4D6C77F +:10F260008AE0577F24CF510DFD245C7ECDDF424CD8 +:10F270001C22675AD3E4F9C0C8CF2C94EB3053C793 +:10F28000F3C585D2AE5815DD745F3ACF53AE17A2E1 +:10F29000179FB348E3CD7E3011714D990AE4442F96 +:10F2A00075B31DF14DC1318EEACD98F7F67BED9E19 +:10F2B00021DC5D3086D68572DB468E73489C29AA98 +:10F2C0002372E53AF051FED92695D7C1D9A6C1716E +:10F2D00098C77C4BEE9598EFFC5733611303FE8D76 +:10F2E000B8BF6DCF52FD939BBA705C8108F86F7AFE +:10F2F0001F78B1B85CC0734982FFA65A8CEFAE810B +:10F300006233E59F4CD0F198E0123E8EC7F2339EF7 +:10F31000ABBA49FB40D5EDBF1D8675257AA85A6664 +:10F3200027F8BA10DEA069B7C344D29B0AA51CAB6C +:10F33000A475E4A575541521F1B4609BC271280B26 +:10F34000564BBBBAF88DE2CFA4792E890CC48EC47B +:10F350007ADEAABAB19E17D89BB2BAE2DCAEB74346 +:10F36000E5BD9057467B4B229BE6A0BD254F46B29C +:10F370009C2F2B4CD4E3DA7E95043DFBFCF2EE6E21 +:10F380009A33B4DCA3B1A1F16F46B9F6F935913ED9 +:10F3900042FBFA59D17CD3FB54E5CBED913C2EA234 +:10F3A0006F2AF69FF0F99FB2D17868FCA79E8C1463 +:10F3B000909B9F907CF4F52138DEF34B8EB37A5D01 +:10F3C000155BE5BCBDD8A7E6FACDF5ABBAB8E3103E +:10F3D0005753F55ABE15F5E714DA249FDD3E92E93E +:10F3E0002E5EB3894CE57C3A8C2D94F2BC7D3D3E7B +:10F3F00019CD7C78AABB60FC9EDAD187F79BD678C2 +:10F40000BF1D7C15DC27829BE379BCA9D0B74F3D9B +:10F41000D92717FC34BF96F4F2588CB729550BF94D +:10F42000DECE670112ADC310C727D80E66F4BFC089 +:10F43000B1AE197AD002FA3C6C10A78108D29B16A3 +:10F440003C4EF30BD1C34A12E479FFF78572FF17E4 +:10F45000D0D1493F5C80F658AE35D921B78DF55BE8 +:10F46000B9DD5CDFC87F505F8FF4E74A4C92FD4204 +:10F470006F6EB535D993D96E235CBB886F17AC5CC2 +:10F480003C4FD07C1654AFBF01FAD902AB28B6D39B +:10F49000B85A1595C7D11A29664C86BC0CED275D64 +:10F4A000A65A52C73CB7EAE37DA2D065E8C5A2815F +:10F4B000DAA95CA9AC43BB86BC60837D483D4203AE +:10F4C000EB5DAD63F4FC0BCCD7C06FF87C0DFC3E5C +:10F4D0005F28F79FD634D72F47C97D8BED3D6DDF71 +:10F4E0000D8E4BF89EF339D6A3C7688FD6E31F0A5B +:10F4F00005E3ED97BAFC5A40E3C338B31EB29BFA5A +:10F50000CDDE6286FB6E37C339BBCDF080BD66D8D9 +:10F510007DD00CEFD2FB85BDC0D547DA0B90C25E23 +:10F52000E08A90F602C0B0172085BD00DF612F0091 +:10F530000C7B0160D80B001BF886DD0030EC06C8A0 +:10F54000FF878EA7E7847FB055E5FD8DE34A46AA85 +:10F550002B58DE05E3857B732ED3C9033BD473534D +:10F5600092FCF0D78CEC25F4786DA794DF56E97FF8 +:10F570007BEE445F3FF6D790F8EA68D06B8EA579B2 +:10F58000750AD57BCE2AF7CFE7FCE6F8EAE774FDEB +:10F5900097F6E168B627F7F59E2EEC2AF90DED5C9B +:10F5A000DADB3F1871F0ADAB0E67FD8AC6D1A2C49D +:10F5B000089C83DEEAEBFD02E5166EFC623AF4A2DB +:10F5C000455181E9A04F4B9DEBB5CB0D7D85FA2DC3 +:10F5D00023EC828F454502EB55435686C9E17521E0 +:10F5E00030F8798319AE78E87CB91DCA27869EF772 +:10F5F000882D98A2B15E366A13F4881A254683DDF9 +:10F60000ED78A458B10AF2EC25E9FF6A3B6293F168 +:10F610003CEB94CD22445F8C29B298F4EA59E7067A +:10F62000B3BEDD0EAF532C6220FC3516D3782EF618 +:10F630004799F8A7DFE30926B87F537753F9817B11 +:10F64000D24DF9195E4F5157EC9F74AEC47E981B92 +:10F65000E86B2A7F76D91A8EF73D8B0F2407AF5AB5 +:10F6600037D854BFBC74A4A97CAA22ED40E2151B74 +:10F67000CFB75CD70B97DCBA6635EF3F8D0AC7135F +:10F68000B86AD714013EED90F6A24D6800E765AB6D +:10F69000CFCE71B589F2FB2C7D9F39A934A7AA443E +:10F6A000DF797D1BEE1B45F5ABD4C6548DE0273CBE +:10F6B000DE21452CDF5A26A1BDA53B6D097C3FC14B +:10F6C0001AB87B1AB553B9B38BA87309793825FEDC +:10F6D0004EB549FB58E370C1FB796383D4EB1B1B28 +:10F6E000BA4465C87333D32143F8921213D94ED468 +:10F6F0000C7A16AA39AC079F3DA2428DA7F117E7F5 +:10F7000039A07FBF6E63BE37D64FE5A0C39B12887A +:10F71000447FD6F5FDD396FD5FDF8EFD25B7292BFF +:10F72000807DE381C6A4EB89EE5A9C771CC65DF30D +:10F730004A7E2CE249BFDA6EE3A8B68F363CBA099E +:10F74000F1FEB7373C6A875D71BED56FE7F8E627F3 +:10F750001AED88F7BFE2F146FE3EE7F1323EFFCDFB +:10F7600015D57CFE3B6193FAB4C1E785EABAAC4497 +:10F77000A65B4A3CF8F0374572BD574449BDF6AA2E +:10F78000923136D8BFE66F8FCF55093FAE29530A65 +:10F79000C1076D4DF1B9B003CFD2CBB71D55795F1D +:10F7A0006CBB5A95F167A2B47F68DC99915E752EA7 +:10F7B0008DF9F5EA73FDF85C744DE06279FECC09D1 +:10F7C000B2BE4678643B55DBD1B3F6ABD01EE23611 +:10F7D000114F676F2E627EB188EAADF1184733F39F +:10F7E000DB9234E247A2CF9257DE94F01811140452 +:10F7F000978E524DFCB6A820DAC48F534408FFD32D +:10F8000090AE45F056087C75496F53F9EBAEEE1794 +:10F81000B6BE0775E4F3FABED4A4A7C1916A86C741 +:10F8200099CA5789C91DF938B76E9176F7AADDF1E3 +:10F83000EC27AFB048BFC814AFFCBE704FBCEE3F62 +:10F8400027C2E8F5E254799EF79AF673E927AFC22A +:10F85000BF5CB0CB37B37D2898A2B29E5A95DDC26B +:10F86000FE8F64FA047B76958F60F4EB1141F8C14A +:10F87000AAAC12AF4EB796BE22A5830F16EE36C7BE +:10F88000332E3C22F16DC41187E7935C5FDD1DE3ED +:10F890002E5172A1AF2FD8DE6A875DE96A6FCF6AF9 +:10F8A000DC2399BBD16C4FAA6C6AE5715EB32789E2 +:10F8B000ED9D0B61F709A1C7A922E91737FC2C536D +:10F8C00090D19BF5FAFDD0EFCE1E917A7DDBD1472A +:10F8D00015838F44EEF9F8A85A76C20EFF3BC70D88 +:10F8E000D0FCBBBBDF5E8D739F3653DACBC2F9060B +:10F8F000F8B186E0A73BF828247F8E90F89A43DB86 +:10F90000AA3FF7A7E3692EFE41F973F7287EC49555 +:10F9100086E3658EB785F136C7EBACF66BE7CF674C +:10F92000E1B277398E7C07D157197E3EDEE68A66D2 +:10F930009EDF5C92DB8178E607BB83CF558A1BFB99 +:10F94000B26B788BDD362474DDBDC9EBACCD4DAB2D +:10F9500018F32915625902F7E7E832A8631D4F3EF4 +:10F9600027ED1AD79EB3727A7589797D5D732E89DA +:10F97000BFFF74BE6961FBEA42D80163CFC7C742CB +:10F98000D80563CF9FA7E17F32E42BEC80656CA79D +:10F990005B61F22B1B69B81DF1AB22FD3EC05031FB +:10F9A000D4741F409793E1F5C3EF0314AA25163BC7 +:10F9B000CDABEC259D0F9739783F6FF3D9581E7A60 +:10F9C0005715F27EE77D49C235B766770BB5FF79EB +:10F9D00075BB9901A7D67549427E59A4C6F756CA88 +:10F9E000EAD452EC3F6554CE15526EF5CADEA990AA +:10F9F000F31FDED167938FF0F6E1CD8949C3A99F4C +:10FA0000E3AB6C890E5747B90F5715A622AEE9F83C +:10FA1000FA8829B063F5BACD2154F0F533DD1A39EF +:10FA2000964075264D21F8B35D5D7231FD9E5748B5 +:10FA3000B95EB9EAE9585C9359B0EACD611AA904F4 +:10FA4000E33DDE1E57B07FB9719B86825AE300C842 +:10FA5000F97E5730EE44D9AA55A97C9EA636555E4C +:10FA60007F3E8E1F5B1A29F7E913912200BDEBC47C +:10FA7000CE483FCE41C251C7E54F7795F710BDD86C +:10FA8000F3B0CF6D89E1F3EC69CB3E7D5FF4656146 +:10FA90005F9F14E7ED87FE1758F65E8B717DAAF81D +:10FAA000B725AB1D76DC2AD87129F5D665F23DACB9 +:10FAB00016D86F3343F0DC6E7F3FCF7E3BE48A4E37 +:10FAC000ECB746FE6BF9F2BCB24DDFAFA16F2385F8 +:10FAD000BE8D3835E8DB80A16F2385BE8DEF8B3678 +:10FAE0009AF5B33EBA1FD6B0E7F652BFC885DEEA34 +:10FAF000CB13D9D54EC947BFC63EF692B4D72D51C8 +:10FB0000AA1F811F68499D55E09CE9CBAB7E0CB0D4 +:10FB10006F4584564FE9FDD1B73D027F52ADD5A167 +:10FB200045B066507D09E871599074AA10FEBEFC7C +:10FB30009C439487ACA331A4A485C2F98E1453F9D5 +:10FB4000422DCD947F45F2C5A6FCB1AE5C133C3E80 +:10FB50007B84A9FC04F718137CE5F0B1A6F2933C72 +:10FB6000934CF055C5534DE5AF292D33E55F37650F +:10FB70009E297FAA77B109BEA1E26653F91BABEBC0 +:10FB80004CF9DF58E80442FCB317E725A2CF0B3845 +:10FB90002F45000FAEA3D342CEFFA3F22DD59DC5B6 +:10FBA000312CD7D7C35BC59E9BC127A4EEA5816F1F +:10FBB000618B85FE71F7152EFDFC2CBFF7B4CAEFE3 +:10FBC00004A794F63FBFFC85CA8D8ADE7FD6452CFC +:10FBD000F5E5E1F76659498E8DBA64FFE0DE040F62 +:10FBE0002F4E2DB7921C1A3572FF53E9047B8ECC31 +:10FBF0002AE7FC81FBCF22FFC89174095F255815C5 +:10FC000019577C78968FF86AD4E5E9EBDCD2CEC13F +:10FC100071244E92AFB0C72E74380388A730E60720 +:10FC2000BC94674ABC200D105F23DD4F7C8DF4200F +:10FC3000F17539C9BB43C4D7488FD03912DFFF40B3 +:10FC4000E748A447E91C89F4553A3F226DA6F323FF +:10FC5000D237964FE1F4ADE55EAEF7CEF20A4EDF55 +:10FC60005D5ECDDFDF5B5ECBE907CB7DFCFDB12BBD +:10FC7000743BC61EDBE9F67D01E7AD6A4D60DFAE81 +:10FC8000D7F729B1578F57DB2F9A187F2DD6F88FCA +:10FC90001D1D7EC80B9FDFADE2E310BDECAFAAE7F0 +:10FCA000A92B986E3D3596FFFAF7AB4679F780CED3 +:10FCB0006FA75D953958C53E57FD221D47C5DB1618 +:10FCC00069CF0D6FF7EE2BE4B9EC8962CFF368EFE3 +:10FCD00032C731BEA7ED4A21ED7524E017D81FAE1B +:10FCE000DC42FF233A5E666DAE673FE1B7C285B87E +:10FCF000937D3187B87C7DA4D060AF54CE49FFFBA3 +:10FD000068B78C8FA8FFB699E30E4663EC947F9991 +:10FD100026CF27F5B36987CB45BE8C4B18AD517FF5 +:10FD200052EF31C52F159C6BCEE77CA7DD057FDD3B +:10FD3000E80CBD3CE218E2B97F1E5FFD62D9FF9678 +:10FD40006F9B398E8CEF0661BC0E196F35DA2BE391 +:10FD5000A39473D5DC3FC1C6F8B8FC68D489C7F852 +:10FD6000BCACB7D65F2CE3B3687C8BB97EB21C7F8A +:10FD700037AB2C6F77CBF8001A5F19D78758A5FCE3 +:10FD800018AB6C9F5854F3C978AD5CD8E1EC954E34 +:10FD900037F68DD139CD297A7B1C2F62948F73135E +:10FDA0008CF886BFC8FE8100DCCF48574A595F34C3 +:10FDB000D6E943639AD3D0DE433F73707B3DD49D35 +:10FDC000B990BF568F47405FBA6A82CAE7B523A38E +:10FDD000BC7F013DAD89161E6FBD2786ED1BAF3F71 +:10FDE000EFBAC88DFD48D7D3BF871FFEF17FC70F7D +:10FDF000CFB4D33782F12DE3CF405F133FB8DBF9A7 +:10FE000081F3EB0B891F3AE197F3F9213055C7379E +:10FE1000B7373AA3833FB0EFEE8B7987ED35F5FD29 +:10FE200065FF5BBEADE6F16203053EDBF9A15AD288 +:10FE30005739D7C11F11B9FF73F86188B589DF4100 +:10FE400088A874B831EF1FE28F194151144745D685 +:10FE50005CE6BD1B742D3BE73A0478961883134A81 +:10FE60007BFE7AE40F3D3FDFFB65D006D8F8BE4746 +:10FE70006FC7C8B726BE118D7DC068C728F78EDE54 +:10FE80005E47B9410EE8C94B0A9B1E823E500CFDED +:10FE900000F313121E47FA00C76B084F6C6E5247EF +:10FEA000DCB450471DAC817EA5DF6F134EA95FBB4C +:10FEB000E83FC8D9CBCF594DFAF638B1CE0A3CF25B +:10FEC0007DCA14C42F9BFDF1E3723E617D7C5C987A +:10FED0003E1EAE5F9715EBFA759A48837C3DA0FBFA +:10FEE000D50D3D3BFF027E7543CF26FDACA23844C5 +:10FEF0003F33E241B795691619D7E2B60C22B8D064 +:10FF0000E3AA01FC6A9EDC47B2A144D3F7821485C0 +:10FF1000D73375F3D64282A1AE023FC5A281F582E6 +:10FF200071A289D312D1CCE94411E4B454B8F7B624 +:10FF3000D07C0E7E356CC860AC1B4B6035DFDF2A91 +:10FF40006BE1F8CB6D71DE5B31AEAF635E3F86F87F +:10FF50004F11F4F601FDF617C8F1D55C23ED47FB10 +:10FF60001D9DBF0BF012EDAF1999C087E0F445DA83 +:10FF70007F3368BE8769FF053C2EBB4EA05E91CBE8 +:10FF80001CDF64D41FAFE50B6B970BEF77E307FC27 +:10FF9000AE27F0FB727C9F02D0E9E5F84B0A605F68 +:10FFA0007F39BE9B45A61176A417AA6FAC87F1399D +:10FFB000B7B33F62BC56C4FDB5E3B5AB19AF45C09E +:10FFC000AB1BF8F559B1198F157E4EC78B00E37343 +:10FFD000026DD480AF44C82CC107A2274E5B445D9C +:10FFE000E40FCECFC0F74A4730D56E61BC3E5E0C01 +:10FFF000BBADEAFD13EC779F5DE4ED037BC7DDFA53 +:020000024000BC +:100000003963BFE3CD67A0F7B6A11B4A3356363339 +:10001000BCD426F9BEEAD90979B84F50F3B6EAC77D +:10002000F9E6248648FC3BBA76248FFFF2DA119C6D +:100030007EB25CF880EF4A87C4E367BE7D0354EA72 +:10004000A729D6BB0774ADB4EC8DBD94C6F7C943E0 +:100050006FEEC0F9CAE0DB4AD5B5CE8DF5F6B28CAD +:100060009F15DF1D48855DFA427C4CFC1BC07CDA85 +:10007000F9D7E9ED0EBBB7D872158FCBE0D74A4759 +:1000800091899EC6F9B2F1320FCB094D0416633D3A +:100090002E1432DE70A1E3E83CDDBFABE1DE78B8C0 +:1000A000DE342C2AC072D68EB8BE111DF4EC1111AC +:1000B00098C7FA68B48C7F16DEC17D214F2E1DE0F3 +:1000C00079BB98E33373B61BF8855D7074A01FFB92 +:1000D000858B8FA87C6FE170D480ED90332D846F79 +:1000E00085F4CD2BFA553BD3894E37E5795B505FCC +:1000F000A8DFA9E8F768A622BAB03D7BB093CFD3BA +:100100003F109F132E374E14EBF13D03C400FD1E2C +:100110002CC727B5BDA5729CE0FDD1B11CDF50AF47 +:100120009F97468BACFB47517EFE111B22CA397E3E +:100130008FED19C9D23F6AC893CB45E94AF87D0AC9 +:100140003C8E60003A56B245B842E45EA42B4AB8F1 +:1001500042C6119D9D608263DCDD4DE5E386A79B71 +:10016000F2E33D7D4DF95D8A0799E0AEA5979ACA05 +:10017000779B92678253BCE34CE57B544C36C117A6 +:10018000555F6F2ADFAB76A6293FCD37DF94FFA2FC +:100190007E6F59F83C6F640F83DC937FBDD7D49892 +:1001A000CA5181835EC24B0F12F85847990DB79818 +:1001B000DA152E69AFF1D17FE0AFC264B3FD468D91 +:1001C0007A41017D5ACA9CD5E08B7C6DCC416C4351 +:1001D000F99AD98ED3C379E203C8A31E3F10DF95E5 +:1001E0003D56DF377E2CFDBD7D3BA77FA5607F6D33 +:1001F00087DD46D2BF88E80F79057F49E83CE12FCB +:1002000009C50BFC25A130FC25A1E5E12F09CD870F +:100210007F24347FF01133FD87369BE97FC9BB799A +:10022000617408F2FA795153C4039DD06D448B99DF +:100230003F84BA8EE966ECEB234F4CEE946E53E8A4 +:10024000BFFF0CBACD08A3DB5762DDD0DC74EC9B9A +:10025000528E5FC89EB650F3CC1E4BF2E366C8794F +:100260009253DF44FE9DE3605DA4DF8854217E1E2F +:10027000F5778E9F35E48E2FAF9AED1F3EBB43ABD3 +:1002800077333F30BD6B3F88E1B8C46F2C2D31D838 +:10029000578E591A14A4CFE57897A0FD1939D50ABD +:1002A000FCDBC9A274E71CECE717058FE11D23DF17 +:1002B000CD31529ED3111876E5969B63381EC8182F +:1002C000E7F41E321E6AD958DD5FEE967151CBC736 +:1002D0004A7D3FC6ADF17B0C6539428F6F15A9D3BE +:1002E00029FF63CDBB722CDB09476DBC0B76414205 +:1002F00062C410260CCBD55E2FD17A031EAD1E4BE7 +:100300002BBE1FB5715CD5924CB717F1B74B945407 +:1003100037EC3FAA1E4726EE8964BFD912C5DD0D12 +:10032000F1396AACB4D3231E23FE7BFCD733D798B4 +:10033000E33146DE19512DC7E9DA544BED977F9E24 +:10034000638AEF2FD7EF5186B7F3AE36E601E0713F +:10035000A46AD1FDBC168E57125679EE78C0A5B1AD +:100360005D63642F798E0D922EB399E3BD03917D69 +:1003700090BF21DD8D7E461AF729AA84AC0FD18269 +:10038000FC6549AC57F4D9284C7ACF03FAFB69BE17 +:10039000A576FD9EA03FB22FEC2842ECC23B32175F +:1003A000FB1DA638EF90F8AD48D83DFA3DAE99F266 +:1003B000FB37259BDA1FB8C765CACF0D649BF207D0 +:1003C0001F719BE0165B706716F5EB7B581588F77D +:1003D0001EDA3CDC54FF92773D2678444BB1A9FEEF +:1003E000BF8D95F1DEC215FC6207CD637A7D2F8E3D +:1003F0002F1A79A2D454AE8755DE8F484D96E799CF +:100400009F7A3F82F2F93C64C936E7C767CBF6E8CA +:100410003CE4C1FA30E2F43344CB548EB7D0E3F37A +:10042000A747886AE97F977EFC4D377737AD8B7F8A +:100430001F2BED63C7F538E7AD0E199722ACEE77A9 +:100440001137B74971A5833E46F98FF4F533EB7246 +:10045000CF71AC8BE3F9327EE2919813F3B02EA703 +:100460000F94FD4DB358664CCAE1FB8A7C8FD7A828 +:100470001F1C2BF5A557C62B7ABF72DCD3E3E4F81B +:10048000C42FE43B72C2EAE373E4A628118F73C160 +:100490008DEB9AEEEA4345A7D91B6C6C2C127E1BA0 +:1004A000F4F5923CD24B895FFB1CB8F55127E16310 +:1004B00053AD95ED68DFBCF4F7725F06F4D6A03C4F +:1004C000FF56D3DC72714EA03517E20F291B2FE3C4 +:1004D000D713C609DD1F107EBF2550C7FB109D979F +:1004E000616FB948BF7F1145F4F3F13B1D82FD03F5 +:1004F000B606C17C6FDC1BF967DD0731E864DC17E9 +:10050000722DB6956E76E2DE92285642E6B574BC40 +:10051000946B978D93E5510EF2A2503DCAF794DA91 +:1005200012358B9C9F2B0E72C8281F2E2FFE59F35D +:10053000E86195F7F6521DD22E107E0FD0C84FA954 +:10054000967C6EDCE3736A861DE1A0BC07E3253D63 +:10055000B8937B7F3DF47B30F1D99DDFFB6BBFEF20 +:1005600013B65EFC19168E17B83DC67CFFAF6A9CA9 +:10057000C44FF238DDCEE9A3F3F930794F0D7F8512 +:10058000EA7765687F768CB4D3CDBED97108FBFA63 +:10059000EC1455F8686D8FF668FCCED44C5A028D79 +:1005A000B0F344A632DC324604951EC4873EF37E87 +:1005B0003D177A9FC2FA2EFBD76721548DF877D664 +:1005C0009AB072CE8F795F9F1DFECE93E187FB813B +:1005D000F3FD8DE3743D7DA01828FD67CE15F04B2B +:1005E0007EE5A7F3575AC87AD0ED996DFEA724BCD3 +:1005F0004CB07D285C0F306017FC62217E18C26B06 +:100600005436E4FF4A2BBF8317CE67065E897E2BE4 +:1006100056F1F945DAF18CB88CD388CBA07AA77D56 +:10062000675B19DE1DC9EFD47C96DB3C00FAB11183 +:100630002F62F8E332BCC21787761E8FE476DA9613 +:1006400011A361DC8F47F3BB052DBEA73ABDE7E0E0 +:100650006D31FBF3CE3B977BBCABC6111F786D822F +:10066000FD6EF5DB55771D8DE30EE77E7EB7EE2739 +:10067000F8ADEE1C17621729B18A6235A123DFF0AD +:100680005B91DEACFB23F5F7837C6725FE970AB60A +:10069000BF5D490A22E4CDDB82A421EC9A82B48EAC +:1006A000DE3FDDDF75D5B95CE90F3E3792E7EF5DE0 +:1006B0003382E1AC5E3E0BE2B7C50D0AFB21AEDB37 +:1006C000225645B9108775DD50E0EF099D6E59FA45 +:1006D0003E138EAFEEE3E5FE72C97843BE3A799DD4 +:1006E000D7D429ACF7D74017007C97C27ABE019FB8 +:1006F0006DD0E142092F59A518F7B8F85EFC4C21DE +:10070000EFC56FD3ED2F982752CC137681EDBA7DCC +:1007100006F3448A79E23BE41360C827C0904F8017 +:10072000219F90423EE1FB47F1F976E015FEB88249 +:1007300090F5067F5C41C8FA813F2E14863F2EB4A7 +:100740003CFC71A1F9F0C785E6C31F170AC31F1748 +:100750005A1EFEB850580C1FDB01C3BFE2996482D9 +:10076000AFA2734241C87A873F2EB47DF8E34CEDC7 +:1007700079179BEADF206A4DF57B57D799CACFA836 +:10078000554CFE3A124BBC0FCFDAD885F965E7A875 +:10079000D24FB03EFE14FDF79FD9D2597EB09DA333 +:1007A000A62ACA2DE9DD502CE96F1192DE41B66709 +:1007B0009F5D669770A18C4B0EE723F8B9705503C7 +:1007C0007E2EA4F07321859F0B29FC5C0599D2CF66 +:1007D00085147E2E7C879F0B29FC5C48E1E7420A4A +:1007E0003F1752F8B990C2CF857AF07321859F0BDD +:1007F000DFE1E7420A3F17BE1FA3719487C839E8BB +:10080000B919A6F327F1A1E9FCA99960E8ADA1E522 +:10081000A1B786E6436F0DCD87DE1A0A434F0D2D33 +:100820000F3D3514EE3BCEC5EB0CFA6A683DE8A5EA +:10083000A170FF06DF8BB0AD4D78E8F38348B3E2DB +:10084000CA76E11E64F6F886D9F0576645970D8A98 +:1008500027996FABBB7776018902AF1EAF38400492 +:100860002D902F5E1C3287F07D448E13EDFF6D0AB4 +:10087000E7F7C9D7E37DF04774CFDD2D58DF34FCAF +:10088000E7467DB7D054A446F90EB8F372E1FD1BDC +:10089000E538862A641CC48FB990F3B9CB9C837069 +:1008A0002EDB6691F1AADB56C8F8E67EDB3D964862 +:1008B000CA9FB25BE3B838520C07412E4FD3F51FE5 +:1008C000A33CB59887F13F36C3A5DBA9E57C260C90 +:1008D0004FDBCCEFBD8C977A701FFDBE23C909BEDC +:1008E00057382AD89C1F47E5BCBE3143D17E895D6D +:1008F000D7A745F5A5386FF6F3299ECD21FC3D51CC +:100900006FC7EBDBB91F72F6B14726CA7A51B2DE68 +:10091000638FC472BF13572A1C47366ABBF0E01EB0 +:10092000F875BA5CEDB73DA0A2BFB295B2BF76BD77 +:10093000F6A1543BDE3D31F05426AA6F413CB81875 +:10094000A208C8F12CAB97F5D66ED3340BF4A31FD5 +:100950007B2FE9B221F185883B147B05BFB33B6156 +:10096000C8EBA6F9329A482FCAC23F5CF8BED882BB +:100970007B2E1309015D889F26108CF978BDA23A61 +:100980008DB69C6BA794319EB3A709057127174FAD +:100990006BB42452BD7EDE7D16F4DBBFA1855363AC +:1009A0001EEE51F12AE0129B5688F197142A2C373B +:1009B00068BF67BD05F77DD7A69D1FCF9921DC577E +:1009C00062BFAE59651338BFD6DC7AAE15716B3590 +:1009D0004F9BF508EF4685E558E5E2B78759D23BCE +:1009E000E2763E4DF36F8B27BC7C9ABE3376B822FD +:1009F000F580F188435F29F588B2552FF2FD89B360 +:100A00002B9FB6E31C64F86FCA753C881C0FC77B2C +:100A100095A548FB9C50F7727CD8575E27C7D57DBB +:100A20004872C5D387E525973BBBC72EE3421AA47E +:100A3000BE67D87FCA5E91F145E17AE0BC95B632D7 +:100A4000FB404AC3F4C0053FA0FF3D3C5EB7F7B88A +:100A5000851BFADF8761FE9D993FECDFD9323E446A +:100A60008F7189C0352CCFAB332DA043D92BAA8CE5 +:100A7000876E72713CB4A1D74CABCBE775289E96BC +:100A80007C34AD4E969BF63B8F1FF7235FD3F597D3 +:100A9000C9E77A303DDED4F5956B107F4AF42869BA +:100AA00089D4E3D85238BDEE9C8C479DEC94F2A0DB +:100AB000E579E15FC1FA5284B4231E147A7CAB99C4 +:100AC0003F2759FD165C08748FAA5BD195E009D0C9 +:100AD0007FA8BD29D087BA80DF17BF88B859B1A5D4 +:100AE000737E9F6C0D5C8DF627BB6DCC87DFC7EFE7 +:100AF0004A7C88DC22CC2561FEDB855BAE4771D069 +:100B000046E7B7E9D1FA79DD29ED53EDF62B1A0B5B +:100B1000CEB5C2777636F4CCE9086AE8CED3F120B8 +:100B20007E2F2647E69F7CF9ECEC9519FFF5EF0642 +:100B3000D0100249833AEC03C6B9187601C8D71B16 +:100B4000972ADCFEAC35998DF29C91D3AD95BE6FA2 +:100B5000989077B20471D3776476FBBE7BB6B38886 +:100B60004E5897D3E35A7E86FBEFB612E12920D583 +:100B700076AAD0F1841B3A3497EB7578E0D12E1F1A +:100B8000AFC961FC32AC1CFDDB6CC4D9DCEEAC2916 +:100B9000C5B83AE45DA907C7A0E81C0FFBEFC2C7C0 +:100BA0006FD8210696B8F87BB83D62568EDC078474 +:100BB0006EEFFAF08E677784DA5B3E34E2B84590E8 +:100BC000CF31F74D4ECE5DEBEAD85F1E98DF93F73D +:100BD000CBF4124B7BDCDA7FC43D91F0FB211997FB +:100BE00096F62CE17DBA81FDD1223BF8EBADD4FF26 +:100BF000F4E576D3BB268FCC8F62FFFE23B7D8F9FE +:100C0000DC649C93A7D99B5F74A475E0E1FDDA7B5B +:100C10006C52EE0532E1BFBBBE3AD28DF5BF6142E8 +:100C2000E9C5A067748E9BDF25F1E6F815BC87D077 +:100C30005D93E7A25EBD83B93FA3F4A4DE4E49BA3B +:100C4000DCF77AA9E22042BDDFCDF1B8517FC304C1 +:100C5000EF608C77E6DEDC433D5C1C576D077DA6BC +:100C600077D3EFB98A606AE87B458525725F3D33AB +:100C700041EECF67F4FB9B425F07536B350576CEA1 +:100C80001E42DAD752B235057686C212A907D8C5F8 +:100C90005B929F93A57DE122DD7EE0CC90F6847689 +:100CA000FB41F68753B11F75E0453BC4F76B62EC1F +:100CB000FC8E4D9933ABA81BC1650D4A82E2E277E9 +:100CC0006BF83C57BEA1F766C48BDCA48F93F89FEA +:100CD000E3BB6BEE5034EC572509AEEB706F20F898 +:100CE000928DEF8BCE5CBA2F93D78B90EF2285AF8E +:100CF00087F28D23783D94FB29EDE4FD6023BD61EF +:100D0000FD818B7E077E0B78385EB75CF3D843EFAE +:100D10004DCD6A504CEF3118F09C1269279B268EFE +:100D2000D8308E69192E05FEC79B74BADDB834CD54 +:100D30003E13763FD8DF07311D251ED62B1AECC394 +:100D4000E8675048BB331BE4FD6D0336E85E5D1277 +:100D5000C3ED95692E3BEE1595691A8F8FE66F638B +:100D60003B48869C7F4982DBEE44FBF3A87D42E151 +:100D7000F55AA010F9D7E7B8445D3CDED5C8657BCD +:100D8000BE779DECC7BB26DEDE1FFBB455B35F44C8 +:100D9000F0B428B9DE687CAC3796133E129CF25E44 +:100DA0001EF69070BC94E9E32D6F88B7CF367D5F57 +:100DB0006F033F4FD5CFF933574E4AC53B24E5BEAD +:100DC000FE0968BFDC2AE7ED2F91FB9E57C7E7D4E9 +:100DD0000D873311A732B53A2537F43D8BF53AFF2D +:100DE000F94BA43C32F032556BB0A19D76BCDE2BA2 +:100DF000E73D5B0B64B2DDC921E7DDCE0F1BF47765 +:100E0000373694D973403F6B69EAFD546E8EEF9587 +:100E10009E8837F103CFD4FED48DFBF47144BA31F0 +:100E20000EA179F93EE7C7F75E97CAF3DA70BF0DF6 +:100E3000788C71BB8AA03F123FF0BE69F08571CFFC +:100E4000DCE8775789BC77BF4B975FC6BE10552B40 +:100E5000D74DF9BAD7199E45EB0AFB61FB7B5EBA09 +:100E60003DFC42EB6CAA6EA7DB642F0D242B1DEB1F +:100E70009EF6C1EA5D9DEC1327753C5EAFD3659A83 +:100E800045CA1323FF8FFABA9B966EBEDF8CF6D04D +:100E9000EE61233F2F908977B48CF246BFD3126462 +:100EA0003DD007FC7258EF0FE56BB8BCC5B077F0CA +:100EB0007AAFB94BDA6F6AEE7A7415F6FD9A9D0A2D +:100EC000EB9DA76A9E7DF55A4A3FBDAF717AE83D1A +:100ED000D2D9A47F603DCFD1F7B9F240E7EBDA5326 +:100EE000E07DA724C46E5BFEAB27B320174FED78DF +:100EF00099E5C507444B95F07AC3938FDA20A78C08 +:100F0000F1CF5CD3B8263D11FB59FC20E831ED7ED2 +:100F10008A6C179F074EEAF39DB552D24B10BDF075 +:100F20003E7ED9CA3281FBDAB392DD6EECDB869D60 +:100F300035C52DEDE11DEF057979FFDB9429E364DB +:100F40000DBA4D4B6F30ADBBF0F9B4E9FD7EA5F3A2 +:100F5000FFF53A9F5D5FB15EBEE7B2A6EC51F43B90 +:100F6000D55847E5E6EFEDF6B27536692F5B97B9D0 +:100F70003A99F54F89EF056AD3809F53B953955B32 +:100F800017A6F0FD567F2AF6EDD9BAFD6B8EAEFF9F +:100F9000CD257C776607247C5B270CED80E73E221D +:100FA000F13D2DBD89DF690B2E8EE0FBA8A7B60FA2 +:100FB00066BBED0D8AA8C6B9666A53A30DEFBC4F98 +:100FC000AD884FC036DA75429AF93E6075AE063B81 +:100FD0006ED709FABCC3F8B603AF72BD6FB2493B16 +:100FE000763B9C2061A3DE54E1E986F52E7C3D052D +:100FF000F6F58E7EE213B401428C996031EDB7466E +:10100000FEF1C5657723AEE878A4E4EB4A6A0FFEEB +:101010009BE363DCA9E06B437F138901E6AFE9BD85 +:10102000E87C8C7D34DAEBC2387A44BB12B02F0CEA +:101030009FA0DB73335C7DF13DD642FA2FFC55B4A3 +:101040008D0C1F047E132272D085F7A907A39A2E58 +:10105000AEFE1EFD2FA3B2E50B8C136202ED20C580 +:10106000BB68D375FCC10F9034A8430F0D9743E1C3 +:10107000FBBB512F9C9FD766CF64FEB265C87564D9 +:10108000CC9FE6EB97713872BE345E8E137D304193 +:10109000C257EBF33F9EE6C9833F3A38C2A1E1BD98 +:1010A00083CD16570DC7E7D256073D5B647BF6DB51 +:1010B000A177FD2247E3F70A323CAC574FEFA1F18D +:1010C000BD8AE375520F3F3E55C6FBFCD8F91D4F54 +:1010D00093EB399822B4CDB93F2C67A7962BFC8EA1 +:1010E00086AD3666B3691D35E8F7621A06F37D8F63 +:1010F000369C2531AEC5911C87763CCDB06F7862A9 +:10110000B1EF1DF3F58F87BFF0A7DA9F6F9E20F731 +:101110008B69511DF7EB31BE63B5BD591F36BE1B40 +:10112000FBF331AD252621440ED3FE1083F5256A4D +:101130007BF3FB28C71A8EC758986FE5F88CF24BE3 +:101140006DB25D31C9C17EC61B974EB2E3BED18D73 +:10115000B56FDAF0BB402B2748F9D3AB7793A71BC9 +:10116000F03789E8862AB19E34F49398E0490BD58C +:101170000BA24BA7D8B14F1E4F0B64C0EE14CC95F9 +:10118000BFF775AC744A11BF3FB8319EDF835AAACE +:10119000B88FC14F2F5645F079AFB2695F069F0BEC +:1011A000938505F2E1785AD3D7EF814F5645BBA11D +:1011B000EFD1F6B106FEBC570BBCBF9AD095DF2F1E +:1011C0009478097BAF50D3F5DB5E760FDF630ABE00 +:1011D000247F07C2F0A3D434AA267BC8EC97A41FAF +:1011E000A5E6D629497847B2E65E0EAA417CBEE95B +:1011F000BE54B9EEBF990DFB47C8BEB37A437E1209 +:10120000EE2D95AF2FBC0FF75853F5DFC3FAB3B5EA +:101210006512F8E34463B7843AE85355F559B8B713 +:1012200054DE783BDF5F3AD118C9F7970AB4490515 +:10123000F8FD9F390FC97BA9EF57CA73FFFCD7335D +:1012400099EF9ED3D74DE5DF0F6C823F67769A7E8C +:10125000AFA8295AFE5ECBF23DA9085DD0E2BC4F93 +:10126000430EE33ED10897BC4F94C2E55D9DDA8FF3 +:101270008DF4E3E5F21E49D56DEF723B9F598E4E1A +:101280009C4AF52BAB9E8A453B0BEE7D73986661BD +:10129000FBCE3EB4DF7E5F6AA3BC2FF569987F6703 +:1012A000FE85FD3B872784D845C2C7F18EEEFF3E01 +:1012B0000AFA41CF4B28BD76AAA41FD3FF42E3AF61 +:1012C000D8A398FC6A37FAE3F87D266F40D8F15E20 +:1012D0008E5713ACB79E50452DFB9574FDC4F8FE98 +:1012E000271DBF27E21A52C14FF3B6DD9F0A3BE12B +:1012F000C918097BB71C9E8DDF17F26EB0E04682DD +:10130000F05A05DF4F9EE5D3DF7D7326987EA7E771 +:10131000E48468F91E53D87D29E35DD893FABB00B5 +:10132000B82F053DEA7D6B6036F8E47DD2377D4C01 +:101330006F29CFDE6F508B647C88C2EF7ABCDFF000 +:10134000544C86B473B03C14BF9771353143E43BC1 +:101350009F55BB496F11D26E007EACF99DADA88739 +:10136000D4AB387ABAD21AB077C607F3757DAA1D06 +:10137000DEBD93D76FE5F6F5F2FD95DDF2FD95CA7A +:10138000A69D87F81EEC9EB2C17C37452FBF70B773 +:10139000C443A468B15F1542EFB2EC84D53D487EEA +:1013A000474DEC39E75E9A5219E87429ED7525D658 +:1013B000B9751948357DFF0EB27EBD36FB0D3EBFB7 +:1013C00056AD94ED5565BFB13A9DE735A98B08A19F +:1013D0007FF444F9EE89519FE6CDF5DAE3A756583C +:1013E00045FD10BE4FC6F7CB6A7D11FC2EC103F33D +:1013F0006EE2FB675D23E43B841F6BDE1E13F9BCCA +:101400002FEF99513A106927714B53609734E29648 +:10141000EA6DD28EE15B1F29F3F5B825E37760FE14 +:1014200013E3967231FE40D51FFAF17854D2274863 +:1014300055F32C1CF5EE219A67A0DE892052F1505D +:10144000F5FE5388C7F1D4C5B930EF87858C1FBB33 +:101450005C8F1B7B2EC73B0AED24239E80ED36015B +:1014600005F438F3FC27838157C49381EF6D75BD74 +:10147000E6C2EF513051A75B4ECB60E0ABEBFEF61E +:10148000775579BFB725BB12B04F0774BFA5EF5B87 +:101490000BE369AF127894DBD7D49F210EACD9321D +:1014A0006010F6C55B26CAF5B771546909D3C3A5A8 +:1014B00066A2DD33B60FD2D09E0F6F32F6A07DBA92 +:1014C000FBF08DA0DF987A529446096151BAF27B05 +:1014D00090770A4B107EF88BF4FC3F137DF1FB48AC +:1014E000A3ECF27DC851FB4513C7ADE7CC74357052 +:1014F00079C1EF0B8A5A2D8038395113EB869ED172 +:1015000043FDE200FCE33D7EAEB821FBA7B77DFCC6 +:10151000F06B027157FE5C9C43BECDF196617C89F5 +:10152000B11FF7FF25F1E39D5A93C3CDFBBC7C4768 +:10153000334FFE53ECBDF9DBD8AE880F0C6659FF74 +:1015400085DA3B83F734DD7807B3DF41BC5F34CA0B +:10155000227F7F50380A3DA67B61FA7B98463B91FB +:101560000D7DDAEBB31E94E33A88F7E5F8DE98FBDD +:10157000FCFA67DC2E8E4B3F133C170BF995B7F73F +:1015800000BF739E67BC73EE087BEFB2D9FCCE79C7 +:1015900092FE3EEEE838F3F9F5CE89522FBE73A2E3 +:1015A000D403AC2E37E319F1D4A09F4B108C71EA11 +:1015B000F734DA9C76695FAE8860FB58DBDEDEFCD0 +:1015C0003ED585D6C39BD08B48DFF9FC32CF9DC07A +:1015D000EF19DB286ECF47745647735C08D359B1B7 +:1015E0005882D097896E4C57E3BEDCE5DF493ADE7E +:1015F000581DEB065E896EFD7F29985EF7A3BD63DB +:10160000DF6EBF63A0C0EF697A5ABD69FFFFD0EB00 +:101610009BC8D86DC053473C29C1893F259EB4342F +:10162000AA4F1ACBC1BD13BB42D509BE88DF6FEDEF +:1016300086D7D2D4FF5172F00D8CBF3D7E33C6A247 +:10164000BFD323E337EB11BF19DF59FCA6F0E11C30 +:10165000525FDB5FBEF3A3A6D581CF82B70AD63730 +:10166000F80FF4ABEDC1F9C7F0640BD10BE287E5DD +:10167000922F5A8FDB743BFA26F27DD85D88BFE843 +:10168000299A53B85CFB3B3F6E07ECB049EDEF4F36 +:101690008BAF610F9EFE486FF67B4536447CBD03E1 +:1016A000FDF80672BCE497BA3CBC73458C50E23A34 +:1016B000F88C5D1B34AEEE3951ADF8BD86EE4E0BA5 +:1016C000BFC7252A0A4CEFE4F6BB52F03AFDE1DF32 +:1016D000A15DC2BF5F1B7CC5C6E7F30DB9725E1B7F +:1016E0009EEFCD7AE5318BFFD77350FF5A27C71194 +:1016F000DFA7789FC0BC54FDF7691FB03438C027FE +:101700001B622C5978B77CC32407DB13F0FBB4C0F1 +:10171000FB867939DC4E3B5DEE8AD1E36A65FE9942 +:101720008A04F97E52FBEFD50663CDBF571B8C0DA3 +:10173000F5F79CD1F5A63361EF299D69C7B3ACFFDE +:1017400043DF5372BCDDAF1CDA916FFC6E6D64C376 +:10175000B3D9EFCAF5EA021DEFADCB5DC3F1B031ED +:10176000166DAB389F0EF75EB36DDF66CA8FCE770E +:10177000B0DC11BEC67DA06BB4EAE6F50E7C6D054B +:10178000FEEAE4F9269C4E2D7A3CB7E8D93234744F +:101790007CEDEFA7FB5A7FCD7674D17231F643E32F +:1017A0005EFD31DB07CCC7BEDE725FFC46978F2E35 +:1017B0004504C18417E9EF22470668DF1B01B99091 +:1017C000EAFB39C12D7817B9FB8F910B520FE8490D +:1017D00055A27BB37CF0005FC63BD5C6FDEEF3E5BA +:1017E000836B6AA87CB8E702F2E19EFF7CF9702D5A +:1017F000C6BFA5BFF7862BBB321939EEBE7BBDDC59 +:10180000BF0CF801BBDCBF8C7A7FD2DFEBCC16417A +:101810001BCE3133482E7721F9BCF44A792E17CBF1 +:10182000C2E4B3CE1FD375FE886CF8E6DFB1AE67B5 +:10183000D4C9DF059DBE2C82DFB79EBECC26D76DF6 +:101840006DD8FBD6FABE64D417A5AD2FFE1CF5C724 +:10185000C8FD64C6BCBF74C53E71C1FA61EF57BB19 +:10186000634B6FC27CFF24BAA4E2E3D1BFA9ECEFC3 +:10187000C9B0266CC27C6BEA322C18D7D1DC6E0C56 +:101880004FB76727808F6FBB52CA9FFBE33CB732CD +:10189000BEBE3BD013FAE0849C521FE03B32DAD844 +:1018A0006F752C37C8F7DE8E4DFDF4228C6B46ED3C +:1018B00061DEBF6618FBD70FE3A72BDF0F9DD7D6DE +:1018C0008E27E5BF004FE3B288A399AF3C0EE8290D +:1018D0009953463B30AE95CEC9DFABB7B42E77F304 +:1018E000EFABAC881EC0E70FF851E4EFDCF8657C85 +:1018F000C9B961224047C099E786884097FF977E23 +:1019000086F3EFB05CB89FD1DCFECC73A3B8BFFC0C +:10191000BE63F7EF4E44BB16B653FD50FBAB976763 +:1019200073FBE7FD6E49FB39DE277FD7B77DFC5E91 +:1019300007FC1F995326F2EF51AC2A17FCDE718A7F +:10194000C75B9C86F5F496CAF13417EAEF1EFD7763 +:10195000691A96BBB8DFD7F4F5946075ED011F26C0 +:101960009408B74F748C27E15C12CFABCBB9444ECF +:10197000530AA4FD6045F474DC4DE9B0635C69D1A1 +:10198000DFADB074FCDE0ACBAB90DF8D6138C104F3 +:10199000DB84FC7D166CE5F2F795D2C3CAF70D6BBC +:1019A0006F5018ECD7E3BB2E0DAB976782538AE5D7 +:1019B000B835CC93F0A41568B9BE103CB5FFFEAFA6 +:1019C000DE9E762E8BE91A7F2E8353830EF85B976B +:1019D000847BA83C547120E60A7EA7FD65455477B8 +:1019E000A1345E8F43B3BA8DDF75255C0FE357BB1F +:1019F000F89EB8D5E95F89FC9554FE1EADC3CE258F +:101A00004493B58CBE4F288E64BB6BC7BD618DD728 +:101A1000F964E1E6F46A51CAE9FF01B4422CCD0051 +:101A2000800000001F8B080000000000000BED7D0F +:101A30000B5C15D7B9EF9A99BD676F600BC3335B29 +:101A4000833A20444CB7B8356A4D9A36C34383D1A4 +:101A50009C6E11151FC806096A9AF612FB08E692D9 +:101A60003A08020A4989624A723C716B34CDEB181C +:101A70006A1F31393929A035369AD693DB26F1D43D +:101A8000EA16238D3D27B734D65B7B6BDBFB7DDF0E +:101A90009A813DC343343D3DAF4B7FE9B8E6B11E6B +:101AA000DFFAD6F7FDBFC75A7B29AB72B2498CFD6E +:101AB000BA363C9B498C3D1B1774066631F6803B59 +:101AC000B83B4164ECA3F1C16F29709F791218BB38 +:101AD0009DB13FE3DF5D83AF8CE98C250FBE2F09FD +:101AE000F0682CA33F3D85B17BF01F9378D9339BE1 +:101AF000B105FC9FD8FED7F03EB49F1C488E68DF2E +:101B000069B4CF1C6AD8CDABF9F3244B99FD99FA8F +:101B10009744FD1B747F50F9EA646B99F73BB37AE5 +:101B2000B726CE646C4BAAE8DF0677A3920AE39847 +:101B30006FF8F1D66D62AC7372C43819D33A3C5861 +:101B40005FABC6A09EBAB109E9DB60EC990B3FE739 +:101B50002E1C83F76B199B8557917546B4DFE08186 +:101B6000763CD7D18EC3CFFCD02F8707EAC932EAA3 +:101B700081FF328B56C705C65C7F3D66BF07D577B0 +:101B80006455DC22A86F41401C725EEDE3602C7A44 +:101B9000E07B2877A5168A3AD0A1DE2B865C697097 +:101BA0004D2D177598A22D1E31C4A0BCC55BE8460B +:101BB000FA6E013A074718FF36A3DF2D9BDCACD342 +:101BC000C5D8639B142A37F858C8150BFD9F9AEFA8 +:101BD0000EC3F7F51E3E5FCDBE7C37D233261EFA0C +:101BE0007D07636B4E66AFABCD1882EE6AE0F338CB +:101BF0004F0D3F95980EFD6950E0FD71C80ED9EB71 +:101C0000BA1CD8AF830C9F5F66AC4F8AE7E369824A +:101C1000FE377AF878ECFD8CC9B2D26F8C3F7AA08F +:101C20003DF82F6E4E82A5DC68F49739FCDEA1E604 +:101C30008DB1D090FC62A7B3C9BF426C1463D0BF12 +:101C4000979F04BAE09A63C1EE2F4079CA1C97B2FD +:101C50004D616CAE54C31418CFCB3F958CE75AEC52 +:101C600074588F7E63FDBD9CE1AFC0F14EF9B6ACF8 +:101C7000EAF0FCE59798F4052833AFC4E2BC8CDDAC +:101C8000C25A7E2301BDB38CF56CF673DA4BEC9C23 +:101C90002B1BAE9DB2657C731597A53C85453C4FCB +:101CA000C3FAAC6526AD1A910FAA4F47FDF0480460 +:101CB0007D9F0C8C49EAFD14FCE3D3ECD348876785 +:101CC000371D62E79D03F5DC827C8DF40DCDA4FE0B +:101CD000E67DBD532C84F2EF36B97F78C41949678D +:101CE000BE2E9FDDE416F07B5FE746519DCAD8E427 +:101CF000F62A51837A26B3AAEE28A0236B67FEFD4D +:101D0000EA407D7250EC467A7FAB237DEFB634BC5F +:101D100076478BF0FE4B1D1F1FFE33DCBFBC2B7DB7 +:101D20002FC93E73DD87922CF2F379E46B17BECF97 +:101D3000F9FFF95D624108FAF7BCA3353A6108B9C9 +:101D400063F28359BE759F68A1AFBDFEE1E4F36302 +:101D5000F84F786F6320D085729EE91D22F25F3FB5 +:101D6000BDE6145AEA391A10E8BBA2F58CAE732509 +:101D70004FAE9884EBCD58D79E91E564BD31CE0629 +:101D800063FDBEF1F9E03FA17CF72669BA03969C9A +:101D9000ECED63387EA66BEF64813E88C1FE019D49 +:101DA000F36446EBAF2E998536433B39B1AF7606E7 +:101DB000B15DE0479732C0EF759906BF4BABE8F9CC +:101DC00065E077099E3BF562D689CF839E2AE47F42 +:101DD000E673F4A0DC57E07F7F4EC77E6F574692D4 +:101DE000BB510CDE37F90DDA8F0B4694E13FA7EDBE +:101DF000B99D3F3FB2F1A7C9970CE440E4FA31AF77 +:101E0000265F460718E79761DEB3CF671E4CDC49B3 +:101E100092237D63703C99C56F7802C0BF677D8B4C +:101E200049AFDC23B021F9E2EC268DE663734CACBC +:101E30008CFD2A75F43915B88E2F0F3A1741FBA582 +:101E400057E6B1CEDB408A5CC9679D8920AFC67476 +:101E500008381FC761AC7BE3B17D28037D17800084 +:101E6000D9369DB19B994EE5588D29FAED586EA54E +:101E7000F79575BCBCC0CDBFF716415D6351EF77D8 +:101E8000E45039A850F9727930795132F2F177A8DB +:101E90009E67BECEEB5DE013A87FA88F705CC3D1B8 +:101EA000E3ACA127C2069F9D4DEB581580EFCE35C0 +:101EB000FEC0511EC19F998B383F2F70C76AB8DE94 +:101EC00058D6AC6BAC1B63FD6625D37CA43A3814A2 +:101ED0001A6E3ECCF7AE356F758CCB515887336890 +:101EE000DCECA0651DDABFFBD2FADCD9382F8FC736 +:101EF000BC9183F40902DD5D409F6FC6C41E453A64 +:101F00009EAD75A9B81ECF3EF20AD1353B0F580ED3 +:101F10009E33B7DBED984DF5D2BAEAAA754DA88687 +:101F2000EF8FFFA3EC0732B1E38F34D2FB0772616E +:101F300061C447F2138B45FEE97A6DC5E60BF0BC30 +:101F4000F81189D67BB8E6FC0B2FE23A0B4AA43A8B +:101F5000B2F5C7A93FD930CF75D0DEF1431DBC7FA4 +:101F60006B183201FB894FA2751C7ECE43EB74C700 +:101F7000A62C9A9FB45A297A0EF427D1A11E0AC31F +:101F8000FB8901E607CAB0C42BD9C4770C155F0AD8 +:101F90006A3BF883F59A74C547F7814F96231D3E37 +:101FA00075B3FFD6DB0107DED2CE883FF2626F2722 +:101FB000FD15AC115494BB3935DF7678A1DE523D66 +:101FC0008EB9F0EA9B9E21CCC4B2A03201AFE748A3 +:101FD0007E2F38042A10C695EF5B44F8246C8CD30E +:101FE000EB0F8BF8DC0BB2A30EE8129EC2CBC7C777 +:101FF000C30C229D62AD740AD7E4756F4822BC10F1 +:1020000040A56ACAC9B08FEB5B7526E7F7B305C078 +:10201000D7F0BD57EB34F81FE806E526E45BE45F34 +:10202000DF77E8FEE5755037D0B349FD380171A977 +:102030004F70F7490AAFD781FDD04D3DAE326C6786 +:102040006F951442BCD966AC03B3BEE3358B739C69 +:10205000D8AF0057F573A51686F51D2F627E974AF7 +:10206000FC28202E280932FFB6085CD361ABE73587 +:10207000C45D2E6C778786ED5D2E86FA70FE3EEC91 +:102080008C4632D8F9F535DBF71DC6F7D96A9F13B0 +:10209000BF77C0B262A9F03CAD61732C945F145855 +:1020A000078EAFB4A696CAEFCD00FE85F23F7CC482 +:1020B0009FBF308BA958CE9642CE68D4C77551EADF +:1020C0007E185193FB70FB07C017EEA8E3ED1F804D +:1020D0009CFACCFF7EEE87DF83F1DCFA98C0904358 +:1020E0009B9C1DFF7200DED79F8F26FDBDECD7277E +:1020F0002EDF049F7F2AFDD0AD7BE17A605102ADD7 +:10210000EFEA4357D3CBE1F97BA2B6F928BE0F0D16 +:10211000ED077A1EC83EFC559CF7CB55B03887C0FA +:102120007DE6B5C9D0736679458648B8684528B458 +:102130002505BE1FBF392D4D9CC3E7CF397360FE07 +:10214000A6C57678E6E078DE9518F64F65DFEDC235 +:10215000F6B2963005F9643839F79A21E79A0C3CC3 +:102160007C6E9397CA99476A7A62890F1DA4F7BE5D +:10217000F5D1FD1FA3CE7FF67F57EE7D0CEAFF4C15 +:1021800046F0A92F4139AAE9C1833F86728FD1EF6A +:10219000B36F875E443A95EF8EA6757887DA3AE397 +:1021A0007DB83EBFF96FD3DBF15ADBA879D501F9D1 +:1021B0009AE1F9D31894C76B9A240BEE2DD3632CB4 +:1021C000B8247BB27D9D70F971E9A7209DD491E57B +:1021D000B9E6C2FE2974FDCDA2740BFEE9D9FA500E +:1021E00026AEFBF0A693ED473271DEC22FBC087419 +:1021F000D5DF95FCFBB15D26C6E2FACF66DE8E3AEE +:102200005C87BA4476D98A92983D84CB1C9DB316DC +:102210004DC5EF952751EFFE0BD61F61E764E9FF2F +:10222000A4098877E1D56002CE4B7DC248F6559669 +:102230002E743AB3F1DAA5C14859290BEA73715EDD +:102240002B9CC44772A16AE079D6E0857E9CDE3C77 +:10225000217D1BCA49BD6B2AEAA7D27EFBB1631759 +:102260003D17157A9ED5B4E7871BA0FCF797B3D32B +:1022700045C0E17F32F4D77B62DF161C9FBE395622 +:10228000DD8F38DDA18B38BEF744A50BF96695AB21 +:10229000EF87374179D5976FA6F9C4FEE3785749A0 +:1022A0009D9719AD1F81ED077ECE05B52D43F954DD +:1022B000E5983D28F75845EBACC2A9D85F81FABB39 +:1022C000CAC5AA0817065B67A13D38B55C7315C27D +:1022D000FD0336F9776CC34A929FC76B385F876BF3 +:1022E000BE736206CE73854472C2F41F1CBFBA630C +:1022F0006A12F4EBE70F38B10BECD4840E07E20E50 +:1023000073BECF017FE135AC3F7301FB1F10DC557D +:10231000B8EE4DFC2BF9D21EC3F552BAD0E9BF5B23 +:1023200045B95E355E817E8C37E8DB6EE855A67276 +:10233000BBAACEE9F7A29D7B2DFC60C7A9F5517A17 +:102340007160087CD8706BD4BA50847ECE37E89424 +:102350005F28F2F99516322109ED49E697809E4EE5 +:10236000C56A17DAEB7379AD76E2F5DA41771402D4 +:10237000CE44D06CE04CA0A91F71AFFE33BE0EE07E +:10238000EF6AF46C9C26AEFF65504F64F4676C6096 +:10239000C80F26EE4C2DE4767EAA53CBC3F94D052B +:1023A0003300C7931608CCC3725EEC9384D3A1FEAE +:1023B00062E2D3E00C0BCE59608CDFB413DEF87C04 +:1023C000E05EFC8EE56B0CE7213AA0707C14E47CA7 +:1023D000605EAF03272D2BC4EFC3DF16711E87C3CA +:1023E0004945EB73571652FBC1D5788D6361EE6F8B +:1023F000D2A01F5307F4F2F62C91F8747B5661F7C4 +:1024000007A86F53B95F224F56A3869A77933F4C24 +:102410007DB6CDD0672D2877A1BC3D75643B68ABF8 +:10242000CDFF12E55004E4FB78B792E3C0F59BC101 +:10243000F87C3902FAEFA07C549BF12CEA73959D4D +:10244000EC93A0BF2D77DE7F0B967F5528119DA3BF +:10245000F3ADF65F5E6E612EE2B4C7C1BE477C335A +:10246000E62E260CC9BFB67EC80E00201EE4432B04 +:102470009F3EEEE77EA93715B067A1DE783FB7B380 +:1024800094FC2A100270EDDCD889784AC912FD60EC +:1024900089B16F68A1932856153F1334A083E25089 +:1024A00008F7B9FC62A816E8EACAAFD2D09E665710 +:1024B000A1DDD9C8878CF8F0CD82BD05288F1ECF4D +:1024C0007288287F64C3DF41FD43FBD29F303F0306 +:1024D000E5FA1CD10F629E9D28C875A74179BB57AC +:1024E00024FCB2BD60C3B156F85EAE8DAB443AED8C +:1024F00035E8D398E5609D249F3AC91FD488EB1036 +:10250000DB7784A8FC6221E7C796FCBD4D19F0DD9E +:10251000635E07AD0F9185DCC827F559DC1E8FBAC5 +:10252000BABBD305ED6DD3CA65F4131DCDEA76F7BA +:10253000FAF07BDE4E4B7E0FD5775C4B880AC3FDED +:10254000C70BCA15E483017CA846E1732773137E89 +:102550007C5C134388B3B6E7E776A663BD8CF501D0 +:10256000F286FA73B549A8B735771F223567B09858 +:10257000B5A0BF299FBF9F37A1A700E9204D1169D2 +:102580008EF2A6146948FF16E01BC4F1F29D567E38 +:102590008855A22DF3E94EB2FA9FA41C91FBB7BC5B +:1025A000CCE0FBA09E0EEDB5E6B8FB3693BC65B162 +:1025B000D323ECF168FF415611E10FB2FBA55C6C2F +:1025C0000F9B3493F77F5B847DBE3D9E119E7614F6 +:1025D000F49E46BDE830FC48D13EABBFC89D612D9E +:1025E000CBE81F8AB0AF1D367FD175CB736715C995 +:1025F000731204289F25653AEA49A8B83313F16895 +:1026000042EA1EA4F3AF0C3988343D3463A0BEEE19 +:10261000F2E0AF509ED9E5B95D7E4707B47F21B99E +:10262000374A7FF968DFD373AB7687711D6C76B05C +:10263000BA9968F77DFD5B683755EB2E05ED9BDF9A +:10264000454D08217D07F0961A8B7CD883821FDECA +:10265000BF747A4C48277BA16ADA50745B5D3D6990 +:1026600057FE6D03E5332551C5A121E487B426D774 +:10267000B518FA13CAE0EBE3E96A4701BED716E0E2 +:10268000D7C4C55C0FD8AF21B5AF0BFD62E5BA105A +:1026900072A4D1759E3684BC1CBB58307152C839A7 +:1026A0009B4404FDA53A836317CF42BD25125FB951 +:1026B000806F71BE9C4CEB4479C7DC9E2C37BC5FAD +:1026C00069BCFFCD98A7EF9D8D7627E8419413A7AD +:1026D0002AD6C868F77E7C358EEC8AC763B25793DA +:1026E000BDC8408E24F16FB414C261F45769F05F25 +:1026F000B4C16FE4BB411CF9A440FE28B3BECBD5E6 +:10270000710AAFEF4F5BC2541FABBA09D74F96C0E7 +:10271000B03F6B8DF513F4707F4918BEDD3C7DA092 +:102720007E939F75D64AFDADFCA9E4DF06EF57BA4C +:102730005F277F891B78C305FF55EA8DF4BD378F6E +:102740002932C539640E4E8DF517519FF067A0C729 +:10275000E50A0945293ABC18DAD144171C87A39524 +:10276000EA49057B5D429CA4313509FA6998928358 +:10277000FA75AA82FB632E6B863FE17545AF463939 +:10278000B021D6BFCD3F14BF46F46392A56CF8AB21 +:10279000ADE552DD65594FA7AE1EFE484239A2BBDA +:1027A000D43A687FADEE3A27648FD80ED523AA813C +:1027B00011E501DB15E18F4E1F789FB57E5373A79E +:1027C0000CCC93BD3DFB77E3CBB5B5C8FF97CB03EE +:1027D000F72F26BF4D672DF93BD07E9E8E6A3C9029 +:1027E0007B02CA65A087913FCBDC1E1DE51D08A0BA +:1027F0007FEDF717A647AC33434E9D37E4D49934A9 +:10280000B63A00EBE2831D7172A4DFEA61635D04F6 +:102810000DBFD5998763E4B288E71BD6E43C8CFDF5 +:10282000590DD531905BA5D556BBACA2C56A97B101 +:10283000706A3CE2469C92483903F888F4D4991AAD +:10284000EE07812BD7131EAE27AE258780FD776359 +:10285000D9E17053DC21CF6DEDC75CC5DA8FBBBD0C +:102860008996F27CF566CBFB0BB226599E67B47253 +:10287000BD7219E419E2A1DF891CCFCAAC8A709E2F +:102880009BB5D2B5DBC039470CBAC2E4FE4449C29D +:10289000F5ECA942BB0A7A41EF8D417C28214E8498 +:1028A000250065C9BDF84907C8C178A60A78BF0EDA +:1028B000C10DFA6DEE65A15A68EFAC9397F5452C02 +:1028C00084F653320BD27B37A1FF5342A81AA22BB6 +:1028D0008C82EA1BCFC2549E880A53C225A8D275A7 +:1028E00012D3447CFEA5F595DF41B996C942A7F104 +:1028F0007E6ECC47E38330AFB92BD5EF3AD163A3DB +:10290000FF62FD8939505EA6FED609F4DCDD787AD7 +:10291000FD1158FFB92E1EDFFAD9E27F7D5E87F7E1 +:10292000A72DD25EC37ACE2C66C427D7F20B0FB781 +:102930004ECE6DF21B7EE16C19FB51E65064C487EC +:102940006716ABC41F655766931FAEFCCA4CF20BEB +:10295000DF783B73687E866FE773547FF9953BA9F8 +:10296000BD2B01ED5DE4EF338B396E7BCB194A55FE +:10297000489FB3B09462D11367F0BD61F504EB2BAF +:10298000C1F92B03B9BF0DE55895D280F6759D5F4F +:10299000267966978765EED4CE87E8BD58BF6BCEA3 +:1029A000E075FC0729F02BA43B7B9DA9A67D81F651 +:1029B000DF59C3EF67D2C15C57E67D3B3DAEB54EF4 +:1029C000184BB0C9D17116FC752D7ADBD7C351C332 +:1029D0006F74CCB05FDEDAA45AEC021676C4F7BA94 +:1029E00007E4C3F0F8C4C17A23FA3578FCE74BC892 +:1029F000FF58ED52507E9C89E2F6E3F5F6EFD79F43 +:102A00009F975244F23655217BB79F0E5C6EF5CBF3 +:102A100005AF40F37D37D31D9C295A1D917E1B7B4A +:102A20003B1F7BF67C80FE4F2679AA5C770C3F4EDD +:102A3000532E98E5BA28CDEBC7B8B373E8F114ADBF +:102A40009FE72B22BB797EF77793461F2F6B40FFC2 +:102A500078A47D66FA851C0E1ADF51EF4D7B23FDAD +:102A6000B4F6EB5141FD0A9A5E0545EA0B0ED0EF34 +:102A7000B998607107D221F37EB4BF72F38875D81C +:102A8000BCA25B5ED03D6427E7633FE13EF7F3689D +:102A90004C437BD4A1287B51BE029E9D8B742F2C6E +:102AA000E272A5A850BB1BDF37CB630BB5F991CF02 +:102AB000DF08680B229FC35F9B68C571854523AC07 +:102AC000CF3F48DAE221E779943879FB2675C707CA +:102AD0006028663CE7E1F1C3D39C1FF45C96551572 +:102AE000314F8913FCE7D408BF6B627AD5343FC9F4 +:102AF000B1AA4F2F8EE017336F22A1406328A77E23 +:102B00003786B54A11F860B933F84011C5DFE704DC +:102B1000B1BD877A0415F93E71A19F3063421EF75B +:102B20003FD521DF0F31EF5F2EE276E4D8226D43EF +:102B3000D1AC8171242C58D8590FF56D01C9837E11 +:102B40006CADB88A0DE57F742605A91DA06B0DF646 +:102B5000C3A104A82C79787FFBED8CFE2BE8C81468 +:102B6000D4935CBEB1401AC503B61878658BB29D8C +:102B70006D04BA34A58A2101C671FA731DC5384F98 +:102B80005B04D1BF19D789A6A9492903F2719AAC70 +:102B900074961B78703FF05D6E6C935606E566CDBB +:102BA000EDC7382D53650B7EC21A10179BED377A8F +:102BB00032A8FD26681FDB6BF6383A63A0BD66E6D7 +:102BC000263F46B6A7E318DAA5D91E871F7D41A781 +:102BD00037BC38A5DC83F6AC4C38CD5EFFA1228E25 +:102BE0009332F50F0F1EC7718505CAE7294EEE21F6 +:102BF000FFF0A5D32E8A834885A0B7685D55511E86 +:102C00004AA367666CA4FCDCBE89FB239B0C7FA4F3 +:102C100074AF3F84EB22B180F7FB2177F0259CAFA6 +:102C2000C40211063420A7A3D468A645C8F1E6293A +:102C30008A8CCCDF3CE618C5C51E8D628A0076679B +:102C4000D9CCEF13AE6EB90FEA461C0E7AA87326E4 +:102C5000F9BB78BCDAA667EC78ED94B1BEEEEAFB7E +:102C6000F5C1E34903E394524C3F071F57A67EE8A2 +:102C700018FA4BB6781C0CED8A6BD1E1F486FF791B +:102C80004C83E74F3D26F1B6464F8F1F23FFFD7B58 +:102C9000D18321B81B45DC15ACA220AE4349F6AB6D +:102CA0003322E6FB43836FBE5EA49DA77538CAFA44 +:102CB000DE1ACF74F427366F8C21BBB0197D0AE879 +:102CC0007FDD3886FCFEF6EF2E15717BF817955ADE +:102CD0001FB6E358AA1A725291717D97551F7F1F34 +:102CE000E30ECDC943CB8BDF1BDF3FBD56BB82F468 +:102CF000169732EAC7A97742A9180F782620ABE8C1 +:102D0000A79AF6E8C712DADB8D0BF93A6EECD870A9 +:102D10002C0DFB95EA203FDA4B1D3D84475C517E2C +:102D2000B2EBDA6A834F2C475C3B5EA23899EBDE4C +:102D3000C27963717E54C12F42F99996EDF3C62191 +:102D40009FF98519129485A509863C3959807EAB77 +:102D5000B75333C86EED9A992E603ED6FA02467686 +:102D6000CAFA7D02C52516A6CE7816E32E6752BB99 +:102D7000A53878FFB719C1D98CEA9178FE5DF00AC1 +:102D8000E5CDEC9EC9F5C1FB35DBE7A11D78A98532 +:102D9000A414BBB325B06C1C94EF2C9015BCD1953A +:102DA000944E71CF9D463ED3CE7D8FB38DF0FCD136 +:102DB00016EEC7755C919806F851BA22D0D5E13865 +:102DC0009987ED26AACCAFABE8A6B7F269C9C28E47 +:102DD000230EEC7FC9E453D8DFE67B658AA73FBAB0 +:102DE000101404D2E1B730436903F2CBF4A73FAA31 +:102DF00076BC8F7EC7C61A99A17DB043F0BF85EB24 +:102E00004D8F1715A4E3E9CF717E7866AA4CFCC1FB +:102E10001CE105388EE6DFA72BB85EEF111F3C3AA8 +:102E200016CAF71C14FCF550DE3D755EE73A1C57D8 +:102E30008EDB4FB6BB32487E92FC36DB37E5F7EED1 +:102E40009FF2F8EFEEA2271CD81ED4D527C0BCAE47 +:102E50006F3B773F8EA7A04656912E669ECD17CC2E +:102E6000EF59C7D1B5F0FE17BD1243FCEB6879B737 +:102E7000E1D3F0BE92EBEE93BC83DBFF6C9FC8F412 +:102E800008BADD75259AE911EB3B87255ACA79EE18 +:102E90009B2DEFCF5526599EDFEDFD94E5F97CF58E +:102EA000364BB924EB3396327BC949793C0053A8A1 +:102EB0003FB5AF45939EDFF97702F1C11719CFF304 +:102EC000A1F761BCEB420FCEBB0FC65769E40555B5 +:102ED00076382D793C3BEEFD9A8C72667BD0437A36 +:102EE00076ADEDFBCA25D63C1E5732F79BEEF4CAF1 +:102EF000C467EF953C54827ED886711E86F19EA6EB +:102F0000D2E017972463BE637E16FA5F762A01C566 +:102F1000CFED146FC66C63C9908B511E908B283710 +:102F20004A5CC427BB37B21057AE3017293C251175 +:102F3000E7E962EA07B5B7423BCFE0BC2AD8EF67C2 +:102F4000BB6E453FA6C0FA7826864CFC8C2A11FB46 +:102F500039E1B917BA5E48A279AC7291BF36E04642 +:102F60005C9EB25054904FC655CB16B98C6DA811CB +:102F70007C2DA5AEA96D46BD0E748903BB6747CBFA +:102F80000C7D09D7EBE49F66C5FC7B68D28DF3E02E +:102F9000CAEC6842FF74549283D84A6A7359D69730 +:102FA000391E1A3F8D2F703407FA93A0930F9CE8B7 +:102FB000A147D063F723FFE749D14AD776A26B4BED +:102FC000EE3ACC074950759DF2270DBAA2998EF7BB +:102FD000A30C3A98F568E941CAA70011D047FE5EF4 +:102FE000E3F96C834E0D42F07DD463FA129EDF67E5 +:102FF000A78BA388E931405447B16C198FA45BDFDC +:103000003BB024DE82AFD04D40EB2DB23F12DEB795 +:10301000F64F0E3E17C0FE3D03721DE7E5C0631F6D +:103020007761BCA5B940ECE703DD5CEFC2E0FA0EC6 +:10303000FB388EAE57B99FDDFE1CE8BC15E7C5E92D +:1030400075A8289FEDCFDD8E808EFE9A54D0B3896F +:1030500030CFBEB11FACA0F8F02332CB84F69CAACF +:10306000759CBBC7F0FC9E1DF3B91FB304E443E499 +:10307000FACC5EF804D19BAD03BD0EFAF3DD253C1E +:10308000AE9E2E77DE87DFA56F8862180FDA09E320 +:10309000C5F98D7E308AC7E399FFC91828A78B63CD +:1030A00018DAE53B9CEAD85658373F99DFBB19E35D +:1030B0000ED163258688A5FA50D56EC4874C7093CF +:1030C000BD86783018A127B3E5BEB1E817D85DF208 +:1030D000C75328D7F457DDA4EF0030A463BC731A9C +:1030E000EA7F8C07A5BEE32E237C54ED46BD5B3CF6 +:1030F000FE1D37E6955C6A9188CEC3E97D3B0E7A6A +:1031000074A14AFE3FC24102E1A05F2F19052E546F +:1031100099B61CBF33FD1065EE13445758508A8B87 +:10312000FCB2569C6DC73F42E0FBE41FDEB5D6C043 +:103130004B6FF8DD2E9CEF1BC4454A50139712FFCE +:103140005A71C870FECB41F6D928DB19354EFB9277 +:10315000D388DFF178DDF238B7510E50D95C67764D +:103160003BA6DED083F549563B669ADC497E6596E0 +:1031700020AB88CB72633F24FC03F695E222BF7636 +:10318000E7D457F0F9FDD133501EB915B02F70DCDC +:10319000D7B25FB2D22DF6CB96AC1EC2E3DBC2C271 +:1031A0000C7CE5C06B0F4F8CF4E30E57AF9D0E4DBA +:1031B0004E764898C6D8E2A5691C1FDAF841508FB0 +:1031C000FE1EEBC9D49B38FFA6CD20FF8F1DCF6F0D +:1031D0004B9D31A25DB36DE1201C7FF7D251E0F829 +:1031E0007A03C7D71B387E1BE278A0635916E7CB5A +:1031F0001BC5F15F413C3BA25DA3F371A9DC8ED9F5 +:1032000086768C8A743846F3D7B42E9ADB7B7F3966 +:103210007AACFFF7A487B9AFE55AEB255DECDCEF9C +:1032200041FEFD6717E5F5389051E0BB89577FE017 +:1032300046B9F787653C7F6A9BAF302A87F4A6269C +:10324000603E5AF4D4836EF40BEDF48914BFDBE9CD +:10325000EB7E07EDED665F6EB2A00EB4D3EC3B588B +:103260008071D29D45B94E29E2FE4E072B18CAFF48 +:10327000C58AB93DD55B1A7C7C295C9B33B81D0F90 +:10328000ECCAF31C54AE47D2EFD128CF77D55BC13F +:1032900089CA08FE4BB3BFCD494C75C5617FCA933F +:1032A00051EEAF9810DCB904FBB588F96B55BC063C +:1032B000C416A0430CACFB02B40BBA6EFF08ED843D +:1032C000E4800C7346F5C4CE82F59B67ACA3B6F1DF +:1032D00085D48F4B3E46FEC9A553C384975D45B246 +:1032E0002AA21F31D59F7F1F94938CBCF3181626FA +:1032F000C3F897C8379307F067E36FB8FE4DDA75E8 +:10330000AEEED350DF5AC0492AE2240FC7ABC5F056 +:103310003F9CDF9850D761F48FAC033CAA417DEB12 +:103320007659F1E8E76CF8F34E8C9767E3D59A6F1E +:10333000FEEA5223EF67369B8DF2F757B8FF01156F +:103340005DEB37037F84F1DD872FC2FDFB0DFFA10D +:103350009D9EFAFADC4EE4EB33D5B78D986FF4D628 +:10336000A6392C1FC0CCEB305EBCBEF5773963317B +:103370008EDE56CBEDD33760DDE0FDCE4D0A5DBB72 +:103380003779E97A6493CAF233D18F9B45D7639B2F +:10339000FC74BFB27A01C338F3FAEAF92C1F40D9A2 +:1033A0007DD58BA93C79B968D8B17D12E29F369F53 +:1033B00018223B76516E5426D23749F4234B5FCB0B +:1033C0008E7DB37D4B3E2E33D7D4DC28E4EBF50164 +:1033D0005143BE5659A71487F582DD89F2E14CE0CE +:1033E0009D3C2CFF560D221484F6B91FEEAEABA502 +:1033F000CBD0CE4DF6C9649FAD2FEA781FEB4FF2CC +:10340000013F4007EE0C74BC5F0EE53BBDB25F456B +:10341000B9137C5FC2F96F03FBF029C4F142EB3CA6 +:10342000B4E7F43481219FBF1FD89B812AEF525605 +:1034300094C68537D87F50FED11591EAB7D37B9CCF +:1034400061B7A6A0DD0A7419E708509E500AE0A5EE +:1034500048795352D491EF54D15F178842FB62E709 +:10346000BE459467B2D3B7348AF64109814026D964 +:103470009B1D5EDC7F66E66D35977C3A80F46C1BA5 +:10348000431282B54DD1C6A27DD43C96E77DDEBC09 +:103490008CE3D8E6A9DFF7A21D2B278A8244EB86AE +:1034A000EB3DD31E896A9D4C7AAFCDF01BB61575E6 +:1034B000937E7D0AE8847A900516450DE5AF1CE7FA +:1034C00033F4DFBAA1ED5AB3FE9D5E1FD9F74F1951 +:1034D0007A7538FE1CAEBEBFB49DBA7617B7A31F6F +:1034E00000B980F688DD6EB5DBD5763B16EC6CB2A4 +:1034F000434D3BFBDA76ED3F37A01C69CE71F7B93F +:10350000C82E0DCAE3D206DBB76B7DBDA7D1E8B3E9 +:10351000DBB56B8D3C1BBB3DAB2DB3ED4B01E646E4 +:10352000BA27F157D8A98ABCDA3DC8AFE877A63CDC +:1035300020AD16F570F2D538EA77F2BEBCDA2EC3AC +:10354000AE44BBF054C5E2DA2EA0CBC7869F3AA9A1 +:10355000C86A2F34088CFBC38C78E9CF1FC8CBC94D +:10356000C175076A99DE7FBDF78F98B79264B38BF8 +:10357000ECF90D6C5F843D99CEF3852CF62BFE990A +:10358000B88CA7483135C5B00B91B7BC4F69686F8F +:103590002A22EBC3389EDBDD7212E5EA88F5F07D66 +:1035A000AA84BB4CFBD25DF1B71AFA6FF07EA1176B +:1035B000DFE3DF03A93A31EF8265F071C0A3A3D83E +:1035C000CF3F2D13FAED422565A05EB757D6A2B2C4 +:1035D00007BEEF1FB791AF41EF0903CF1D46FD9323 +:1035E000DBADFD9D16DBD7D38C9397CDF307631C22 +:1035F00056793F75396FFF4E43BEE29FC3CC7710BB +:10360000315FB8AA6129CA2BA00BE6D34FD965B5A3 +:10361000DBFBF1E832AECFB376C976BB9EECEF248C +:10362000833E83E791B747A454F1FFFCDDE8B7C8B8 +:10363000447B1CE31AE981CD584E36CA763F863961 +:103640008F138CA999F4D28ACD2FCC8CF46B048B78 +:10365000319F7E628011EE9BD466ED5F4AEAA55AE7 +:10366000A28FE1C76810C202C6237581557D0FDAAB +:103670009B5063A5674AB1F31CEE2B4D41FF45C437 +:10368000FD1796C50F8E9F0C618FCBC10FC97E6E43 +:10369000F3C9DC9E2F34FC45EB98C59E277E02FAC9 +:1036A0001C2E3AF83E3EDF1A90296E14EDECE3F63C +:1036B0007F9148F95A83F863907D6F2F77104E4BB6 +:1036C000417B9F0D7E3ECE11ACC5FC8D017BFFBBC7 +:1036D000DCEE047B3E138698B2CE4ABF920CD92210 +:1036E00007B3034FF0F70DFB3E6139B74FECF67DA2 +:1036F000B36FAF82F82C5BEEF02AA477FE91F4A6AC +:10370000DD1EEFCF27C620EC28F66165EAC5811CD7 +:103710008E0F68BEA7C97A328E97FD98C7F19CF1CB +:1037200061B21B9CE704D267CDBE1EDA6FE0FCC518 +:103730004D7E248FE92FB0E37EE7BD2AF71319767B +:10374000BC1DEF831D707159F260DCEF5CE48FC526 +:10375000FCF30C5655FC89ECF9541EFFF84BD9F3D9 +:10376000ED465CA1D1C0CB8DA91C2F572D53FAE398 +:1037700081A89FCD7808E004EA6FDD7C45403CCE0F +:103780001C309FE88FD930361EF57BCB521E7788D0 +:1037900015B5ADE8EF06D911DE8F7C1ED87B01FD93 +:1037A0008A4B97C863D18FD3162814316F3529758A +:1037B000FBF3A827DB97BAE9BB9D8B54C20B31A062 +:1037C000CF87C2E58371383C231C2E86380E67B440 +:1037D0008E927C1C679F7A274C71854637DF8F65F8 +:1037E000E2F1C6D4BD47F2B85D4FFBA59276EDA9D4 +:1037F000C7F7D6CE618A1A8FF85B2061B5CEC34277 +:103800001AE2CBF11F1FC3F845F33EC12F403F9A88 +:103810003B0AC506C2976208F1D3FBA985EF615E3A +:10382000EB25C08348B56F247DFC36EAE5C654BE5F +:10383000AFA179CC490D714F731AF36F467E130017 +:103840001FA23C1D2B933C1E8CE73401F9252560FB +:103850008B3F043A1C88E71A158DF05C9BEF6BE4F4 +:10386000E768130227D390691CDA58DC97C16C38DB +:103870006C6D583BF5551C1FC89B10435CF64A3BCA +:10388000D2B5CDEB6184CB5237CB38DEA760DCF10B +:1038900002C623B87DD3B84856295E35B5322B12FF +:1038A000FF8F4BBD317C06F8E7DD2CD3BFABE2BC0C +:1038B000562E64D9A3A8B788E31337FC8FE39E87FD +:1038C000BD98475D9265C533522ACF1FB6DB4B9238 +:1038D000611F4936FBA8A4F8BF08CEF1FFE7C03945 +:1038E00099CB0533DFE3DF16E72CE53827D986735C +:1038F000EE3270CE239F10E7EC2FFEB7C539495842 +:1039000056F8BC5F27CEF1226E9958C428CE3A08EB +:10391000E7D40CC23939888BAE89736CF3F26671C7 +:103920007CFF3C8E0AE71459714EE3703827B5F0DE +:10393000D450386767EA8DE29CC08FD2FE8A38E7A0 +:103940006F86C1393B8B0A03B8DEA217891417CFE3 +:10395000960362138E6B3CF75F148F2F5C8E76DFBD +:10396000A5436ED2173B4B4A14D4973A3030D9E76F +:103970008CE395EC9E789AD76932DFC7C8CEB82819 +:103980001E65E294B640F7D45710C7AC1FE7C77660 +:103990004CDC92E0089C447F65C242D2FC43E116B5 +:1039A000B67C44DCD2F1C9708BEF2F8B5B98AA51A7 +:1039B0001C689511076A33F26D776E7587EA815E30 +:1039C0003F59D29B8BFE38331E345C7D378A3BDFF8 +:1039D0005D663DEFC6ECD7A3C58AB12E386E3A536B +:1039E000A4652DBF8E3C115898F3EE9F49F288FCD8 +:1039F000BE95FBAAE56828BB73DC1DB8BE2BF73D5E +:103A00002C63FC49D9E06628B72BF7D550D9FB9039 +:103A10005BA5723F7FDFB215D787CA2A64CC37AD6A +:103A20005CE73CE784755CB9CB6AAF342D63D4EEB8 +:103A300094903CE4FDBF767FF617F37657A5ABE98B +:103A40002824ED71BBB65701EDC4E17C577929EE0E +:103A500037BEB7BB2C629E4DDCDF18E0B8DF19AF74 +:103A600037621CD02938AA70DF69F1F80D1417BC31 +:103A7000C4DC55189F8675487140586FB4FEECF34E +:103A80006FAE2B331ED8164827FCEF9CAFF078732F +:103A9000BF5D1050508E26B650F236AEA72F2C1FA9 +:103AA000457CEF3FDABAB2F381391FA3FDBE4BE785 +:103AB000FB00B53E8EBFE14AEB32E70A237CAEA0A5 +:103AC0003B11CAF3E0B99A86386E1CC53D3A93059E +:103AD000761394E74927A42A68AA6B8E4B7171BCB0 +:103AE000F537D323FCF05D270097C2F3CF092E3AB8 +:103AF0007F288FBD29E13ED6A3A0CF18E65D1B7EAF +:103B000074F3FC96B9DE6BF9CDAD78F008FE03C610 +:103B1000195A6EE0C2196CE60DFACDBF85F33FF17C +:103B2000EA0F683EBB0AF8790E694EE91E3F8CF732 +:103B3000E00951C57C29B8F27D02552EB2230E9EB4 +:103B4000E87EC707EF1F3C362385E65C4924B9733E +:103B500050559B7DF85E934CF2FEBBBB161F5F0E6B +:103B6000D7EF87BE1CB302AE87F6ED58805773FFC0 +:103B700073E5934EB2A3BED3243F83F6566FFBA4E6 +:103B800018CAF734ECB8D546DCC7CC6FFB8181CBC3 +:103B900012971AF2AB3A99EF8FCE0A9D463D74E622 +:103BA000EB828AFABB54E9730AB4DFE083074EC3A1 +:103BB000FA2F75F7CDC53C13F7E6F3BEA3F07E29C7 +:103BC00062903B187BFBD42F5FC2FD06FF50A91DFE +:103BD000433AFC6C39E7A3CFAED5DE423D63967F16 +:103BE000BC563B11597E60ADF6E3C832FCB547596F +:103BF000F3F67FB67CA4FD5D371A9736C67B2DFEA3 +:103C0000DE2B74FE1DC6CFF4532E86F1E1B306BF42 +:103C100098EFED5D9966397F00FEE2301EB5624295 +:103C20006B2CC6112E082C5C0BD735FBD62CB90398 +:103C3000E6EBC2A38BC80EAED4B9BD7BA1EBF6BF39 +:103C4000C77CBAFB00DF2326BA58BB781ED9BB2D30 +:103C5000406578BEF451BE7E2ADB8410C619EE6E34 +:103C6000E7766AF08A99D7618D5BD9E34FE77FC326 +:103C7000F7E7066DF1A7037240C67843788FC0B6A8 +:103C8000C3A779FA9B8771FFD651588791EBCA8CED +:103C90004FDD683C2A66C5278E4725AC8079B8542D +:103CA0007D9B970D110F37AF83E251E35B69BF1422 +:103CB0009EA38672FDA2F3C6E252F757E7513CCAB3 +:103CC0008C4F3DBFD2CC4B743F8D7AE53C186F28AA +:103CD000C7C382FEF61CE493B7258AEFDC73A86A9B +:103CE0001EDA7566FF82C54E7D32D0A7C2B0FB0FCB +:103CF000BCF6023F9766CA140DD76B85232823EEC6 +:103D00005A63E42596B47FBB7E2CCCE797CBCB6778 +:103D1000E1F8D7B44B16391DD4A7D33EB03AA1353C +:103D20003F01F5D81681E4C43D62AD2301EABD67C9 +:103D30009BE0AF578D4504CF7FA44B7B703DB3957F +:103D4000DC5F73A9FAF051ACDF1E9FE8E79BEF0937 +:103D5000067F9DA4BC3FE41BB4572AB36E67F911DC +:103D6000FD3820571DC5FD8EBDB7BB14DC1FFC857B +:103D7000F687E448F93C1F946E7EA43D648B670C83 +:103D8000CECB2BA3737B06C72DACEF2D5D61B5E3C6 +:103D9000A7C5AA0D98E7CAD2391DE6D7973D7D1C65 +:103DA000D753C56D9F9F0DE5D92BB99F16ECEF3802 +:103DB000C417AB5C9DB3DE433CFD0D17D98DE70501 +:103DC000EB7E8DCD2BB97C9CBFD2B01B354F10FD47 +:103DD0002BE5069D2EEE9BD48079A5E6BED172C35D +:103DE0004EF19AE3AC8A97D1FFB306DE7E6A3A5C65 +:103DF0000D3B7FCD60FB50437B97EA25BBDD6AF727 +:103E0000971B76BA59FF2A7801BF9BF68657C67969 +:103E10005ABF50EAC4F86699DD0E0F435F52A87D81 +:103E20005A5F66BB60476B917636B53B69A07EB33F +:103E30005F83ED6CAE47D63BACE72BBC6CD0E90F93 +:103E40002B3F997DFDF88A91ED6B1A47FA90F4DBD0 +:103E5000D7BF8FD5F8437BB9CC9827186803C65DC8 +:103E6000619C554F0D1147F8D473D671DE75755AA4 +:103E700003DACB6BF07C3878BFACC9DA5F3938A78E +:103E800001F30A2E18EBC1DE9F3CB715DFE27987FC +:103E900091E5BBBDD6F27CD535C8FFE236E72D6D86 +:103EA00070FD079E385F8EF37EB1C5452031E4E09A +:103EB000FBA72FB44BC63E6E6E5FD3BC0E619F9FB7 +:103EC0002FF9EC1994F326EE3DBC6FF163B743B9BB +:103ED000A7C6A9F2739F06C50DF8B961B90A8BCCC4 +:103EE00093349FFB1EF99EC57EB63F2F01FA45C64F +:103EF0003377A2BE043E39ED54C94F707AABACA003 +:103F00003D7CA14D8AB69C235273DB35F433F7FB1D +:103F10004F935B5753FBA2E847BFB31D3F9BF95C30 +:103F2000E78D7CAE5546FBEC75457B18DF37F62BED +:103F3000875B16937D1EDE27EDC58FAB0FD5EC7E1C +:103F4000111E17EF3F4CF94397D645939D3E90378E +:103F500014E0E716B5DD161BB96FCB1E3F080FCE78 +:103F60001BEA5B318ABCA15ECC1B8275D98B79437D +:103F7000D82F336F487FE593E50DD5248E2A6F68DF +:103F800020CF8E9FE3339067E78F8DCCB3AB30E8C3 +:103F90006CE6D9F51A71FFDE96C31F613CE08336EB +:103FA000972AA4A1FFF9978FA21EB97842223BCD90 +:103FB000AE77508FE03AEDFDB640FEF28AB6571A62 +:103FC000304F4F192731CA376F750D996F67B67F1C +:103FD000519F447EE70F0CBFF3B5F4D8BAD08347A6 +:103FE000711D98F9DF156D5C6F29E59E2A69CEE099 +:103FF000F64A50EF45CCD7F5EAB56BE933FF4AEB0B +:10400000793DD7D267AB56F0F3C94C7DC6F23D156A +:10401000A3D14FC832A41FDAE31BD06F380AFD9436 +:10402000CF668F5E3F551AFAE92B2B18B72BAEB728 +:104030005FADF132F6AB1CFB05F2A41CFB953D58BD +:104040003F99FD32F582BD5F6BB05F11E3A9C07E81 +:104050000903FD32F308CF9B79848F49461E612BFB +:104060005FD7FBF87964615B1EE145CC2354512E88 +:10407000DC46FB35FF02F260C3CA51F80DFEBDE518 +:10408000C175E31F3D5E768C6E1E09FF8C761E8324 +:1040900036FEAA130284C3F5DA310CE5FF05C0EC45 +:1040A00028072E3EE822BF200C3817E5FCDE9D22B3 +:1040B000437AFC6C05DF9FF493FDAEE8B067F4E350 +:1040C000DFB25C7B6625EAAD1F05272A43ECBFFA09 +:1040D000108D738B7F90DB81AF2ED75EC0EF464D86 +:1040E000E7BFB8FF8DEF0FAE6CE2FB5D2BD76536F7 +:1040F000E0FE0D947331DEC1FE38766DBC65C357AA +:1041000056FC75D7D58984B7D620DE1A229E61C7A2 +:104110005BFFD1F115CDCC0878EAF03EE91EA46F23 +:104120004F9BC486DE673172D9F417F56AFC5C5B7D +:104130003B3EB3E3A7D34E1E8F3F0D784B87F7F777 +:104140003A037F83F86D6FADE80744843890E6BB8F +:10415000F455F71EF4BFF91E71527076E7CFD7FE03 +:10416000BDEE18ECEF1BC57CFFB7C6D7FFD5E67FC9 +:10417000B47268E01C47E3FC0EF6E1E37743BD75DB +:1041800033799CF1ACA7BB90CE7F0930F253F55444 +:104190006F277C50FBDAAFB64E9E89E70E3BE87C7A +:1041A00025F3771ECC73B75CEC1CD573B99EFBEB83 +:1041B000EDEDD7C7FA05CC7348ECBCDDAD8E81EBD5 +:1041C0004C3F9D03E72A129582343C0F38B015BF4F +:1041D00077AAA25A00F51F567BDE46DC3971A6C8C5 +:1041E0004C7FD8F4887C03B3DEC66499CEADF26D03 +:1041F0009CE9C67CF33A4F420276ED801CF0A29F08 +:10420000A8CEE33FA622DD0B449E87AE0472CA927D +:10421000F03CB9DB28EE3F61A318C0EF9FEEC888E1 +:104220009522E47F4F75BE5B85FBF505FCDCABEDAD +:1042300005B9EE35509ED8C9087FBA0BB8DF3BEA06 +:10424000889A83F9222EE06B0DEA3BAC707F665BA7 +:1042500006F7E3B9524F32CC577232BE6F6F4C60E3 +:104260007BE74328E7EF702918B71D53245BCE0185 +:1042700071AAD673D1126CE7334519FEB828DBFD5D +:104280004756197E931BF7C7D5AFC27CEC09AD53D7 +:10429000D12F9A5220D3EF2448C5AC1BE721B9494E +:1042A0000ADD0D844DCEE2E37FD48877B62D9A3EA9 +:1042B00016EBDD3EFF09DA8FBBBD580CD1BEDFA681 +:1042C000C53968276C85F1E17ADC9139F2EF5E60DF +:1042D000DE0C9EFB52561EFCE6AA087DFBD43A9EDD +:1042E000C774A9E23BAC13E4D8A9EE0E1DF7F9F7A9 +:1042F000FC318EE924973AB43549B41448AF8E2B7B +:10430000FABE761FD98B3C8EDED3349970758C2D16 +:10431000FE1BC3B49FCC867E9D913B74F4EF9D1130 +:10432000D9C95AA82FC6C0333183F10CF346E4E152 +:10433000F4FCF199A880CF103CE6B97930F531331F +:10434000E573383F76BC1363E0697B3F2CDF4F4257 +:10435000FFCF21EDFB33A91D355119E847BFFF27DA +:10436000C8FB61BE6F3EB7FB7FECCFCD714CA9D0CF +:10437000BA56CDC273CF38EE547D4A03EE333DDBDF +:104380009F8FC9F506E525A4E3D52A47CFD4243667 +:10439000609E420FD017DBDAB1F592D3FCDD0C162C +:1043A000E12788CC73C0DF7D091A430DBEF4F19676 +:1043B000C8BC85A737F1F33688AC11F914136BD854 +:1043C00051DCCF3A0EDAE1FB5D01EAA7D0B94AF43D +:1043D0003C586F95FF31D533BAF13C2A587E5513BE +:1043E00061DE27D5D89F3B74D730F4779BF4123821 +:1043F000BD22F7A5BE59AEFD12F97187535B8E71D0 +:10440000E81D8B644557713F6E25EDB39C542CD24B +:10441000CFD54C5236D0B9922C5564992A7D4E7620 +:104420006CB3D1C613C5DD643737AB2969186FFC8F +:10443000C62AEEAFB59F6316A3F2BCA97EB9ED1BE9 +:104440003A2FCB3CA7B16DD12D848B9BC13EC67A50 +:10445000875B5F66BDF6FA1696071C25D08F7AE556 +:10446000209D1F324DD68EDD85FED31491F6CD757D +:1044700027F17305B6168B7B30DED098B181F655E7 +:104480008D29E17EC12DC5A2E13FE0E75E3616F041 +:10449000E7CBCAB5D8127C1E30ED283FED5300BBE8 +:1044A0002809DB33FD3078FE04D2CD3C7FA2BEFE6E +:1044B00020E9C146B4D5A7E3FE8FAFF0FD1FA0579A +:1044C00090AE8D1D49D1193E3A5F87E47226F3DE26 +:1044D0009385F2BC297E3AEAAFFEFDE1E315EAEFEF +:1044E000BD259CCE037A4FA7FE3515F450FCF17222 +:1044F0004056B9FEE7FA25C198AF84C0D774F42BB3 +:104500001CC5FDCFDE083DD6AFEF160D79FE5C7DF4 +:104510006C2BFDCE4E54138FEF4C545808F55B5E58 +:104520008D4672A914E3A17EE4EF1CFABD8A49B05E +:104530000EEE867269AB3F07E937A9AD43273F4CC2 +:104540000197EF669E5C8CAF95CE79895A68D50F3E +:104550002E663D27D37E6EA65662D50B2AB025E582 +:1045600033285C1EE3DFD508FD601F8F792EBCA9C0 +:104570004FCCFB23E8917B717E9F7076D23C02B5D5 +:1045800015E9336CF07EC6E2E1E2DD37760ED568E0 +:10459000F7CDCD951E3823230E64B2E2A22BA3796A +:1045A0003AF300233F6BE398B08EFEFD8B9F65FED0 +:1045B000BDD0CF907E90ECF2B4E98A28D1F9FC46C8 +:1045C000F91155C4DF092A0D868FCD55077EFFC22C +:1045D000C39493ADB7935F3D8BCEF915A3FDB88E11 +:1045E000E0363D4FFD0AA3F8EBB6C05E652EB2F88B +:1045F000EA34E2CFBDBAE31E5CDEE6B97203E77AC5 +:1046000072BFC545873F6E28FBD4BC96D9CEF33C1C +:1046100037FC799EB5B82E59562BD9D7A0F7148CF4 +:1046200073F50AE17118FF7DE1CCAC97DD9FC5738E +:104630003EDBCEF05F1098FEF231B8A665E646CDBF +:1046400085EBDD478E1EC84FA3F33FF939537AE956 +:10465000CB5A063E17A92C9E8DFE1F8847CF2D0FE3 +:104660007C03F900D63D9D9396560B38CBC7E3D417 +:1046700091BF77B31A03D8C9F8BED686FD1AC57B99 +:104680004F62BD5FBD6F2AC9BD0BE817443F73C5BC +:10469000DBB41FE9C23E17DF8F64C8C952633DE730 +:1046A0007C71492CE617F7229E17F0FD2FFE782922 +:1046B0007C7F1670B5A0921F93F28B2FC04C215EA9 +:1046C0009F26F3DF6B60D14CD94FFB85F9EF99A0A2 +:1046D000C144F9D2557D731F467F8CE6E6E7C8D505 +:1046E000449C6B19E1C734DBBFD0CEFD98678DFECB +:1046F000F6FA03E4DFEE65E97E3D69F0FA38BDE1E4 +:10470000660DF1D4531B62FDF43B08FF70752EFA61 +:104710003BAAA13D89F2633EA4BCB18BA75D7CFF9F +:10472000EBFE35B178DE89B99FDDDE1F3B1FD8FD7A +:1047300057BD0BD52EDBBEF6B74A46E1BF4AC5389A +:10474000FDD411E2F336BFD4B62C7E6EACBD3FC9AA +:10475000C6FC3207CFF396443E0F1B97064F215FEE +:10476000D4097E8583038DCE6B36EBB1F349CE6AD7 +:104770001E6FDAB8543B83DF8DE2BDF32511F98F4C +:10478000E67C997EEF8B86DFFBA2C2F7BB9D6DE7CF +:10479000FC05FCD24DFEBA43FC7734ECFC72D1C967 +:1047A000F945AF80B66F46FEE9DB82F3C97247C7B1 +:1047B0002F613C272B825F32419022BE097B44DA75 +:1047C000EF5E5C6B8D5FD8F9A7B4FD260DF9534100 +:1047D000FEF10E6EAFD753DF887E67930FA4E93CDE +:1047E0000F51FA85CB0F9212F34C881F245B7E94F5 +:1047F00074AF5FC1FC8788FCA8B8D5FF067C22AAED +:104800009D84972EC37A46FA9AE7B69AF429DDE793 +:10481000A2F37C1551F44BA908B5B9BE2973F3DF97 +:10482000D1B08F57549506D4B797D14E40FA07F8B8 +:1048300079BD03F5BD42FA48A934F4913D5FCB3E02 +:104840005FF6FEBFAE308C979B712756E5273E1D65 +:10485000EEDCD5034298FCD0FADBFCDCFEE1E43A66 +:10486000FEDE05E62B1C78ED0EDAB77B411742CE53 +:104870006918577B2639329F0E7FD7223F423F9BD4 +:10488000BF67F1D51295DAC3DFABD869FC5E056866 +:10489000143CF72A7775F27F7D3A272ED54A574781 +:1048A000D893200F484FFDF4175C4F69ABB435AB7C +:1048B000C9A97083F946463BD7ABAF1D367D5D3F36 +:1048C000BCBE7E08FB9779E401DAF77EB98DC7D9C3 +:1048D00074275F4FF6F7CDF30B9F5B13D423C7BD4F +:1048E000349EFF7E62D8D9298C84CB6E36CE371E9B +:1048F0006BFCAED785B644867EABA50F723DF449FE +:10490000719A53E176D881D75628C121E8F365B072 +:10491000FF5747E45D3993FC9437B2614DE0491C81 +:104920004F5D6C3495BFB6467BEA7AE6CDAC6FCB73 +:10493000A6A657F1BCC8BA4DAD74C5942104FD724A +:1049400012DC8F905F0E0F3CB7F817879EF7B2729C +:10495000ED45ECC75BE383949764EE67BFD89EB8E0 +:1049600007F1E4C57D970AEF80F296B6C478CCE3F0 +:104970002E2DE576D3858E42F2EF0DEC6BDFA0A0F5 +:104980007F4909065F891CBFEBC92F2BF43B0A9FA7 +:10499000903F418F76633F410F7A71D22401A4F595 +:1049A000A4E1F5E3DAD27EFDF826F66714EF9D5810 +:1049B0001DB15FD2AE47FBE3C7A61EDD373A3DDA35 +:1049C0003B588F12EEFAABE9D17D37E91B47D0A3F4 +:1049D00017AFA1472FEE1BB51EBDB27A14F903D74E +:1049E000AB474D3C3D1CDE029CEE2C9D85E76D32B5 +:1049F000FABDA46C8F3B84E7B00F87C3EF2FEDC7E0 +:104A0000E1D1A523E0F588F7E2F0BDFFEC783D5356 +:104A10005F178B7AF242BB24229F16EFB4F28DE926 +:104A2000CFE8EDE3ED9C8776F421DAB988E7FCC4A2 +:104A30005D1B7FDBF970887D1E9FC57913F6BDF97C +:104A40007B3C17F5FFE3AD9171406F547002FA653E +:104A50007A9D439FB3595939AF02E9F9EA6AD508FB +:104A60003258E52DE0A57506BF9373D6B473015F88 +:104A70007CA1F4BF018E32AF026BBB77367C976CA2 +:104A8000E6FB40C7705FE5C40F3C7C1FA5F7FF0A3B +:104A90006964CFBA693F62F2A1ABB4AF127411E599 +:104AA0008DF6EFAB34FCBAC935567F6C32EB13D2BE +:104AB000D2703F5B2007F759810E3D89E70CFFFC60 +:104AC00081C55DF8FBC6BFC5DFDFF00F3E4F71D07B +:104AD000BECAC8FD6F86DF14FDEC3494887D94A6B1 +:104AE0003F19FA4DFB37FBF751DAF64F261BFE7BD9 +:104AF0007B7F2DF546ECAB9C68B4935CF1074E0FC1 +:104B0000635F65B2DD9F5FD39F5F41FB2AFFC99062 +:104B10009BC4812903F5261BFB2A078DDBF0F7D305 +:104B20007BC2C0F36BEEAB7C8CEFAB9C64DB57F9C4 +:104B3000BF0C7DDE53FAC9F23ECD3CBEC1799F9CCD +:104B40008F0E959AFBD20342807E2FFDAFBB3F694B +:104B5000B87D32767ECF99F25B3AA7D699CAE379CF +:104B60004E635F7A94CAF7C144A1BC86E713022C56 +:104B7000A40AB8EFA5A513FD7E5BD7A12F0FFFF800 +:104B8000BE971483CF0EC8ADC7D055D9B8C8C17071 +:104B90003F76ED6BF777E1BEA72D63F97953ACD87B +:104BA000FABBC5E6FEB371D51179650CCFC3E6FB40 +:104BB000A3936C79F96EE31C18B72D0F4D36E2B54F +:104BC000FF0FEE1E2AAA0080000000001F8B0800C5 +:104BD00000000000000BBD7C0D7854D599F0B9772A +:104BE000EEDC99814C72F3434862C01B9260A84985 +:104BF000989004C102DE408480D80E3F6A7041263E +:104C0000937F75FD067FE37EB1B92101124C24C06C +:104C100024A2B2268071B57579B23EDAADD66D07A1 +:104C2000B054A9DAE8B2B574F92010405B759F540E +:104C3000C5C6ADADDFFBBEE7DEE4CE2401D66E1BFC +:104C40009FC7E39973CE7BCE79CFFBFFBE57D1E7E9 +:104C50004EB83099313687157C6D63EC770D3F6225 +:104C60008399D0EF78DCFBA7B98C55C27F32F8FD71 +:104C70004EC6B4BE28C6BEC6BF1B465BBD76B1CB12 +:104C80003705E6242530361FC03C91BF7B9DCA58AE +:104C9000C13FAEF9776CE7EEBB2FFE761581F4309D +:104CA00056C8D8BCDEDD6B783F94E9753376AC31FD +:104CB0002FC50B700F34B252846F1360287914FE25 +:104CC000276502ADABAAD4127D8538FF4CB2379B65 +:104CD000B1A7717EF6D8F3BC6FCC5FC9B452560051 +:104CE000B0A244A5378DB1A6548985603E93548106 +:104CF000415BA2E66D9E0CE32E16C36C09781E552F +:104D0000888376DB5AC6B643AF25E3BE5F3BA12D51 +:104D100059ABF7E741BBAF2C8DE036671E91E261DE +:104D2000DD9B6DCCC3E01E8E5B74498473A733EFAB +:104D3000EDB41F133DBDD0DEF163E7C0E419D0D55B +:104D4000343521913181B6606CA90F7E047C09C194 +:104D50000B2283FDF602EE6D70DF5CA5AF08FBB998 +:104D600025AAD0041B4EB20F1DFA1AE0747AC51E94 +:104D70003D0DDB5D45085FAE658A18CB58767286BF +:104D80009FF66B752A99307ED01EAAC4FEAE4D2EBA +:104D900086F377B9BDCB3301DEEE599267334C1BF6 +:104DA0002E8BA5F3E7AE94432C7A2CDECC36571E1F +:104DB0004A56E03EDD1BFE74A21AD6EBAF383D48E2 +:104DC0000E8C0DCC5895034D2044E7687232653B3C +:104DD00080BC0A6E28CFC16129F6829348858D0771 +:104DE000D76CE101D8852C02C890DE3EAB58F24B5F +:104DF0002033F6FE860FDC22C07D3256221AE8648C +:104E00009E64402A0B0A3E6A6183642FEC7FE4E1D2 +:104E10002FA60DC0F90EC6AAEB906E4EE70C3C51C2 +:104E20000DEBCE77B23C27BEC7B4E252C4E3E91221 +:104E3000168B70CA7C22DD3BB384693DE3D0AF1F83 +:104E4000E9650AD14532D2E31605FE1BD61FC862BA +:104E50003D8D80C703F50742D741BF5B730EC18B01 +:104E6000B32EC17B0AEFAFB7CBAC971E75C85509FF +:104E7000E372BDC8B6C3FE4FB657E99530DE7B1E60 +:104E80003603589382557A15D1170B3892E0F729DB +:104E9000BE500DF4B7A7650474183F5151AEFF0220 +:104EA000FA9F7E057408FDCEFAD52E064BB7CFBA11 +:104EB00035C50FED7981F3C5EECE2AAD16E0EE2EA5 +:104EC0007206F01C7296CC34A78147FAB7F70EA28F +:104ED0008FA01CB71DCEDDEBF685AEC173086AFF4F +:104EE000660549CF17BA0BEF55375BD90E7D995937 +:104EF000D6A7E1BF65C62CEFF2B68FF391D4BE3AC8 +:104F000006CF23D999867891DA19D163241E1F6BB5 +:104F1000008E768CF663E601FCACD1F39DB77B5333 +:104F2000F0DC7D03550109E444AFDDFB24F69F1A54 +:104F3000581D28BE9E584347F8BD6DAC07CF2F754E +:104F40009AFB6A8A32CEBB5D6E3F957916233E008E +:104F50001EFB5BC23BDF2E97229D5D0E9E895F800C +:104F60002B0ADF00AE392F126EE4BABFD5FC89EEF2 +:104F7000D967F01FFD01A34FC27606EFAA894475D9 +:104F8000F437A9A68AE85511D990631EF27D8F1EC9 +:104F9000423E4B9302BDC8474991F4CEE1D17A1B02 +:104FA000078772D6842F57FC20745D01FF7D75D270 +:104FB00028BD03A8D0D7C8B706FFC0D0D1AF61FEC7 +:104FC000DD86DEC03F2571146E70551543FE061157 +:104FD000A4C68FC737282FCCF969A3E392B1CF3588 +:104FE0007BC2F1313B7AE8ECA3280FBA044F2F10B3 +:104FF0007DA5047AD5A2C75C7E7E0ED93F8A37098B +:10500000E057E37FC04FEF8B81ADB7225E004FBD0D +:10501000C03FB3F63AC2F062C2F9B3415F597BC3F5 +:10502000F1B60DEF8EEB67B19E5EE2FB1EDD9D409B +:10503000E70FA03CC7FE64E84F656CD376D043BB56 +:105040008440E3B7500F087C3FF3DD62D8C85F525D +:1050500006BC4394F9AE2ACB1061FE8E1B72F76D2D +:1050600017F0F74839C3EF133BB25C39F4AD024295 +:10507000E3D076CFE8BBD07C8037F5B949C28C84C9 +:1050800051BA70652887BE0FFD68CD19B0E17C4923 +:10509000D0153CFF55D9B45FFA8277D862E86F0427 +:1050A00078381EBB3EFCFE4ADD9F4253613CC9C6B8 +:1050B000025389CE42FA2D888F2227DD2F460B7F9F +:1050C000AFA8087ABE16F528E98B8017F5D5B64C3F +:1050D0006E2F30EB3D6DF8BCDC3E79DAAE97A05C0C +:1050E0007B3A2D4E001C8EBCCF3D6522C1793A968D +:1050F000F335D28D6EC19339EF569F7D840E9C801F +:10510000B738136DDE3486FBB71FB7F5E0BDDB574C +:105110001EFDC486FABF465605583F5BEE600F235E +:105120009D7D47EC413D7538F656B105CF516FDB9B +:10513000EF80F1D247065FFC05CCFF6C200DB53740 +:105140003BF8EAB71AABA0FF87A22C0FEA21562240 +:10515000B390796FCEAF9A73EEE8FEBBD7CE60F80E +:10516000CEBB607FDCAFB3EE70CEBFA2BD52338941 +:10517000E045CAD7B81AF98C903B16EE3683EFDCBF +:10518000C302D3F2C1BE5AC5583F1293E48D46A262 +:105190007AC8E92B2D033C75167897CF87FDDC6D17 +:1051A0009CD9DDC312CDCFD44B5C681794AE9A1353 +:1051B000C3C6B10747F61FB6D17CB39FE45769DF7A +:1051C000386526D98371C3328D3F304522FE08AE43 +:1051D00093E95E41B7D75B04FB061FB179F613F183 +:1051E00072FEE95A3E93F03E6247F838BC27D73D3D +:1051F0009B8CF01CD36B927DD05EF0299C9F41CE9E +:10520000A310917D4E5A7F601ED77363F530D0A2F4 +:1052100029C7D0AE7B4C247BA4DB030674DA583A52 +:105220003B527F96F4F276B00A1CCAD8F1C8FED37E +:10523000F6903E00FB3F2DB040873296BE3700FF10 +:10524000E9967E8BA43B51DE039D3296025729BB23 +:1052500036D098C1D80D431BC516C443BD8DEED1C1 +:10526000BC4E34EC6B8F13DFADF491356FAA70AE8A +:10527000CFD68A042BF25DEB7E54DFFD03E89EBCA3 +:10528000F7EF96CF47BBEF311B8971930E4CBCC231 +:10529000FB3FCEDFBF9F84CC5FEBDD337D4E11DF64 +:1052A000E5748D48F7F975FD810C942B9F65B93431 +:1052B00034DEABF7EE9470FC6E942B2002EC696741 +:1052C000EE44BC97041D2A19F7BAF65E16F0C75DC6 +:1052D000785975745FF33E7152DF52E4C744103C55 +:1052E0003AC81977A91886F75335FC9D3F7B49E8E2 +:1052F00041788DAFFE662BD99D20971C1E94FF3EF2 +:1053000039258DE4CE51B4771DD73B1494970B8784 +:10531000C430F976C3F0A430B8452C3EACBFC47994 +:1053200055D8FC1B95F4B0F16549D7868D2F57F3FE +:10533000C3FA8959DF0ED7C32FD8CF0E405F837FC2 +:10534000909FFF9E49D437E9B9AA0FC62DF0134BA1 +:105350000332EAF50DBE2892DFD511F3134BFB247F +:105360001FBCF37F94815F7A2DFC781DBB0EE9761C +:1053700096C1472B3D7922F2D54F3A04E2A38A52D7 +:10538000D6031E1D6BB6FB0E25A15FD226B09D6C09 +:10539000ACBFB792A98FCD467BA0C5A6A0DEBD72DB +:1053A000FF6F6809D8084CD31BC90F5CD0F1EE1110 +:1053B000ECCF32FC387F4B51E91C80B32803E8570F +:1053C000C5F36DF2DAA19FAE0A22D2F3BE3246E7F0 +:1053D000EE1F9EB13546A56B4A12D0C922834E6E90 +:1053E000669F4B3170EFEF7CAEC9A853AB2A7D1797 +:1053F00091DECB3F578E621F884F467C58FC5EE2A1 +:10540000C3F7CFB8FB74BC9FEA7912F5F57AD1CD1A +:10541000B6A35C01758174D4D4EAEC6906BCFCD2F5 +:105420007DE1B00F7E9F946C63484797F3FB961A1B +:10543000726C22FF6F564FB8BCF8B38F717DC87C79 +:105440004BEF2C203B2580FE45D53375F224E83BFD +:105450008B9C7DE8F7543DF30FF224D4E3F73A191F +:10546000EAF1AA67EAA99FF49053A5FE889C9AD90D +:105470008A74A0B20A19F9BBAAC67EC60EFE6A15C6 +:10548000DA39E3ED1BC5E30E13FB9B3ACD7B4AD023 +:105490005DE4472A4038E87733D6F1241A2101DE4B +:1054A0006F0A707F165E8AFA53EF672ACA81ABD003 +:1054B000F281BEAB84F56F4EC67E4840BA73435F3F +:1054C000A73E0BD9E2B81F2C9172EC21FCE1EF1939 +:1054D000C6EFB9A01133D6DE1183F799E89CE52019 +:1054E0002F42F196BEC2EDC2C53F7EEB9FD13FFC7D +:1054F000C5A6ABE638D451F8BF78E5B55401C64F20 +:10550000E6FE3C075BF39E66DC608BC2E3065B94C1 +:105510001729AED05C02E6231070735F90FA7A0D03 +:105520005332E1BEEB65D58FFDF5DB9D0ACD4F1003 +:10553000C9AE98B4C9B58F62316CB3617F78F7207A +:105540009DCD30E8CC3CC716BB96D40174F3CBD8C4 +:105550000B629985CECCF31C7AF576D213ADAAD81E +:10556000837647AB7A6979ED44B9196F7D3FBE8F79 +:10557000331BE065E3B84CE3997A8B13FDF5D2B4A5 +:1055800039E4A74C0C2F5C9F8CC04BDD4CFAC469EE +:10559000E893DBA7FB3A6FC1B841AFE041163BFD92 +:1055A000C86DB9C877A77B7FBF85B947D7FFFBF721 +:1055B000764EC77599A16137EEFFDB47F2E93EE70A +:1055C0000F7F69572DF3364A43760FFC7EEB233B62 +:1055D000650DE62F7BE6F7F601E87F00FE92760D7B +:1055E0009EA383E8DB3CCFC6BD9B96229CDA9EC679 +:1055F000ADD866B2D268AF7BEC7D8ADAA744239C33 +:10560000336D99D138EF6C30FF92F83C63EC37D0B2 +:10561000D0F2CA3960E4992C29DA4A87832D1C4ECE +:1056200053CB1A827B36D5FB9D798087B3EFDAF0B6 +:10563000E547E69D75737BF66CAB2374038CFB9B8F +:1056400085676DF09E83005F07FF6FA7DF46F75801 +:10565000D29226637CC6DF1C2BABB08F5F4F5E9A65 +:10566000C4E7F7B9807E9F30F46F595BACAC01BCE6 +:10567000B2963C926F7E85997029EE723938651D1D +:10568000B184D7B29622D947F4DF41702BC03ED403 +:105690002DFA299365B9C6C5E3AAE34EBC6FBBB723 +:1056A000C085F7DF5DE21775B4870B44B2B326C23D +:1056B000E736039F138D07550EAF69E50C17C2DF60 +:1056C0009DAA2E4FC7385C043E771BF8DC7DB34C97 +:1056D000F78E2F61CF22BF217C1DE0BF62E273A550 +:1056E00047403CC497F433A4AF9F22FE80AFDC0553 +:1056F0001EC107FDF8D400433CC41BF803383D8DA0 +:1057000002AEEB67B8CE5DE211705D3CF471BE5B3A +:10571000D569BE892F67AA1866EF31E0B37989DCB5 +:10572000CC45FD2431E902EAEF16E4496194AF73F8 +:10573000E5BE24256A947E1FDDF06FBFF68F172F1C +:1057400034E6DB5980F1381E9FDF6CEFA3FE29B9E8 +:1057500023C70D783F9528327CF76DF6018A8BC2FE +:105760002AC576151B133F35E3C3D3FCDEDFF851A2 +:10577000FEBFA68450EEB07BA33D680F896AE81394 +:10578000D4E717536515ED73D6F1B8867E939D5F08 +:1057900091D953B91F32220F12C2FD1151F5929CBB +:1057A000665E81A1BF73A5EBBE69FCF34AF51720C5 +:1057B00082F0B23189EBA90CE6233D1F9DC594C64A +:1057C000F9D8EFA3B86C6205C858C0CF80A089751E +:1057D00088C78763148C9F304913F7E0FA795329FF +:1057E000FE67BE43AA7EB3F82358B7F863B72A8092 +:1057F0009ECEADCF5B8AF1E15CA0C17E6ECF937C83 +:1058000099487F9D6D48DA5B9C89F2256B6FB1DD0D +:10581000A2BF7441166643DB762807F9FB72FA6D66 +:10582000D0D06F83AF2C984E7AED31AED7CCF96FD4 +:10583000DCFBED68A4E7C1B6FC776E80F39EB8DBB5 +:10584000E6415AF0B3A1B3183CC8297F6C53339C8E +:10585000FF365120FB68E660D7263D15E325CA7464 +:10586000941BBAC8548CCB67E9FB6EAC83F69F2FB0 +:1058700046AB221A72924E763FCC3B8478CD29E714 +:105880007E790E1C105B95BDFE008E676D72537C99 +:10589000EE4C6DE3E644A4B7976455BC1EFDEC9E48 +:1058A0001B11CFEC8B6815E30783B5828CC191F592 +:1058B0003B1EFAA40EEF630F15C66663DC874DA787 +:1058C0007977B828EEB31EE644039CB2A899FB5141 +:1058D000EF2E6ECE9B7E96E45823BDCB7A9B274954 +:1058E000C6F9DB6C0CE33483ED53DFC1F527EEB171 +:1058F000F37097AFA37015F0F382721EBF5E0FE6D0 +:1059000011CDAF76F3B88E317E62BA222BD9A3EFD8 +:105910006D6BCEDB8A72A93C3B304DB1D80D3D1288 +:10592000D80DB0BE3D83DB0DED19DC6E908A80276B +:10593000002FD2BFBC44F4C596834C85FE49BB7A88 +:105940003B8E9F6C95C96E682FE076434FC0116106 +:1059500037F4EF413B7B7F63B8DDD06EEFE07643F9 +:10596000E685C57E5C171419F75FF9790E825D81B3 +:10597000E76B766B4918E7DFC238DF17957B4BCBB7 +:1059800051FE2832E531AEF773BF8025C4111F994F +:10599000EDE5F8A915E54CC1C47246C8B8F032DA95 +:1059A0003B7B6DE0A7807D2A1B722717D81EEFD3A3 +:1059B0002A38094F45E5BEBBCB61FFD60DFF588A9B +:1059C000F71823FF8CBC58AAD44776A408FC89FC9E +:1059D000CA021EA7959FCC73F9422E19E535D3DD77 +:1059E0006CD0120733C73FAB48FFEE5C381F7346DD +:1059F00065A17C8A37CE7BE2ABFC46E4A3CFBF8AAD +:105A0000614D40874E94B7361CE7F63AC613787C52 +:105A100041A5B84DFC71EEB7C7BFB695E207A7EE3A +:105A2000631EE47F733E33E6EB2CA00F24D03E814F +:105A300027C9AE0BCF139C5CE4690CA17D992605A8 +:105A4000367BC2D60BA42F8CF8289D53180B3FC76A +:105A5000B0FB61A888EB974BC72F1C6A441C388B9E +:105A6000CBE90466FE59E26836D42F9A80FAE1D475 +:105A700062A7A711CFE29D40DE1B7AC28493A044A7 +:105A8000C87B6F643C8CBF47362A08805F5ECFEDD1 +:105A900016E7BAC2A5481F175A0515E5D9E927AF79 +:105AA00093312EBAB885FBAB55BAD0E3A07801FB91 +:105AB00015C60BFEDE78BFAA0FFBB7623CCE9F6413 +:105AC00003970EE07D0CF628F4EFA9777B349872EB +:105AD0008685E8707A9B40F1BCB22D8547EF82F154 +:105AE0008DD73B14F4A39B0CFE3856CEF39403A53C +:105AF000F67B4AF137DBC9A5B8AE3C9FCDC0B8C52F +:105B0000C87D5EE27E3BE877BACF463DDC4FBFA75B +:105B100025BC5F8E7EBAE5DDDE2C0FF7CF8F973385 +:105B2000DAD7848FF78A8FFBCBF761519C9F73A4E0 +:105B30007E71BCBC8DF90E8DAF4E22FC7616328E76 +:105B40005FD6AF61DC3E7E9EC3D0775A7421E07B86 +:105B5000BAF1BE07654F23C6573A8B9C43981F9BEB +:105B6000BEF6570CE9F8A82F2AC080DF591D3F4721 +:105B700029FC83E7AED91B7ECEF888B8853BA26F9F +:105B8000CA8BFF32F13497CD257AACCB8F417D683B +:105B9000CA85C8FBBC06F61FEAD19F3438A90D356B +:105BA00028D41E6E48A2F6F50695A1BE3DDA9045B2 +:105BB000ED1B0D1EFAFD58C33C6AABEA6E62C5F9D7 +:105BC000A3785119A7CF332D02F1FBA9E6C13BB150 +:105BD000FF593D8F5B35BEFA0F479371FC09C1E356 +:105BE000A0653C8EE533F0E46F761C7D088EFA0EDE +:105BF000F875C2BCBF7DBCE9268C3759ED53A6525F +:105C0000FCA80CDE89DED5A02733FE5456673BE3A3 +:105C100000BE2D8B788F9A3DF6D13EDE2B62DCE400 +:105C20009F8C0AA31EC2A06B93FE2EA74F52A2B850 +:105C30003D1399EF79BEB7CBBF1DF077E189E43C06 +:105C40008C0F2DA830F33A0119FD92EA1EC6E31B12 +:105C5000FFCBF191917349E3D76D2CA9E0764364B2 +:105C60003C67D4DEFC667927D37E89CC3B8DC2E5C8 +:105C7000ED89E91D37CF457BF52D9B077E61B6D2B7 +:105C8000BEB7B13FA5DFE659C646DFE314E00CE935 +:105C9000558A057D0B470EB2FE246E00790FA11EBA +:105CA000DB7D8BCCC8CE673ECADF1FB9F98B645E43 +:105CB0001F3040F501DD399E131530EFC37621AC5E +:105CC0003EA01BEB03008F0F54707BAF1CEB03E077 +:105CD000FDEC53D6DE5604FB7507A7C6E27B9D7725 +:105CE000FB9257458DCE7388CCD767C4155703FEFA +:105CF0008F4D53935741FF1E63DCC4C32E17F7EF3C +:105D000030AE48FAC598DF65E6DFDA1DDC4E93D485 +:105D10004609FA83B1591E8C3B3E58A11A7852A904 +:105D2000DEA1B3FDB6644AAE19F5091FBABD4ECC6B +:105D3000179F6FB729888FC17A91E09DABE3F981F6 +:105D4000CECE0F0E611E75B088D72B48187E47A5A2 +:105D50007627CFF70DB6FF93D008E34F9F8F62A849 +:105D60003706A7F414A19C7C5A50A91EE15CE9B344 +:105D70004518A73EA74A0146F509071A512F99F57C +:105D80000960A93562FCB95C7306D0DF4AA98BA40F +:105D90001FCD85F1FC142FAF87687FF85901F336CA +:105DA000ED02EBC7F3A4BC76E14F2C174DF4703B2A +:105DB00020D2AEF8B0DD41763CD3BDF78624CA933D +:105DC000931E3BDF261879F235E4974C94CF3F0DB4 +:105DD000723464F1D37DF5E1F43A0A7FC58BA10CEE +:105DE000FE3BE693530C7AA717481CD517296B2F57 +:105DF000D03DCC3C6437E001F5850E78EA1D170FE5 +:105E00001678E0E7A6544CD65C967B9B79E8970D14 +:105E10003EFCE1C8BBF33C36ED0BF26C7ABDA8B991 +:105E2000A2B133407464E615595D78FE1AFF306FF5 +:105E30009D82F405F8FB4905CFABFDB482FB312907 +:105E4000A5B201A747403A1A837FC34EA3F30AA322 +:105E5000E3661E7B5685F7E715006FF64F9E1330FD +:105E6000DE3292477ED8CC23F33CF0D506FE8E4D31 +:105E70001B68C4BCF2A0C0029BF3F0F7F0FD065D06 +:105E8000038D6827750B6C53238C77BB389DEAAD67 +:105E9000DCBE31EF47F351AE2381A4635ED74B796B +:105EA000B45315E974BF74B80FC903496D5600DEC9 +:105EB000B656612ED25D59942063387763C2AACD5D +:105EC000B1D05F96CAF306C7A6E94ECC277737DA7A +:105ED000A82EAADB3DF0F2FB788F46B7A7978DA5D9 +:105EE000A3FF32E4F52EA30E07095CC47B0AE62368 +:105EF000339F08783B67F62A799DD5D5F59A9C8C17 +:105F0000F1C486D97978BCFF06BB1FDFA1DBC5E1F0 +:105F100044EEF3D5D87D9EC1F7384F14016083BF9E +:105F20005F5886BF570A269DE8CC920F8E2B195AD0 +:105F300088F7132A0D7F48DA9787EFDC1DCBE169DC +:105F4000E2D0C255167F43A834F49093CFEB127C75 +:105F500027FE8078E814080F652DE1FCB23128E8AF +:105F60009373D17E0BFF3D3D182EE7DD9582A1DFB7 +:105F7000C2ED76C9949B8CBFB3BF396DFF7661B417 +:105F80007F759DBA1FF93ACF587F6C1AFF7D703923 +:105F9000EBD94CF4C2E97EACDC50492EA4B40873B2 +:105FA00070FD74133FD2EFC97FF5835F8376C2D350 +:105FB00093A72F45B5EEB09C4337F905ED355F4902 +:105FC00034CAE799C6FE0777A5531CEF48C97E1768 +:105FD000EA930DF7A709BEA8B178B99CBF32BD3EC0 +:105FE0005C2EC4D584E757F3B1C0B290DF4BB7DC69 +:105FF0006B37D60DC07BEC4E13A99E6F37D609E0E8 +:10600000B98DBCFFE3C7973CB3DDC817A3DFE2300F +:1060100064D6ED1576BAFFE3055DEC61E407F0E7C1 +:10602000793D4088EA03D85C59E5F5005FD8304FE8 +:10603000B03B68DB87F6B249178E02F07B504EA466 +:1060400082BF13E67FF2FCBFC3A0C7562FCFFF6FFE +:10605000C3FC3FEAE5958B5DE3C5E12782B7A692D5 +:10606000EBCBE64E1B0BF1BC30E13BB896C3C9D479 +:106070003FA4FA840F07040FF273E9BEC1EFFF00DB +:10608000F6FBEC24CF2E8CE6937DB4EEE4BD37B561 +:1060900066168CE691CDFDED18FFB7C49D1E72FA11 +:1060A000CA2A01DFC1042FE513EC18FF47E7F40A01 +:1060B000EDBC43858F135EBB6EE1F98CAEC2DBC8CD +:1060C000AF3F304DA4BCED81F99BFAD17EF8628AD6 +:1060D000E4D1E1DCAE8E0F1EC5BC637A819DEE017A +:1060E0007FC5CCE2AFAE6C0BD962B0B3921971032D +:1060F000DD21CEA356A6F81418B8D8AEF4087A3C21 +:10610000FA2BA935147737ED23C72DEF2DA1F5CB49 +:10611000F97AF7B04EF2D7C5B424A36E92EA2A27D3 +:106120002B12E9CDCEB5FED6D930DFBE6A8E82F60F +:10613000CDDB852EAA3F01BB27D66779BFFF34F898 +:10614000282807A88EB6BB53C64C18737CEF8B1358 +:10615000A8FFD9EA49B45F6FE783493E4B9C2EBB49 +:106160004AA675BD1B38BF9E12594D5FD8B883E84B +:106170003DBB8AF3D9CDB506FFB7F13C6E7A9DAF32 +:1061800091D38144F5767A9BD883F5ADC1B56B5731 +:10619000AD8179C1821B2541A5BAC4E588E7DEB58A +:1061A00022A1B2D7FB5631D6695CF40809489FE6B4 +:1061B000B983D3974AC83FA7E4819C02B85F5E5574 +:1061C00066989F9A08F653C8C2CF090E6D133D4ECC +:1061D000035351AF15D7F37E3A1893F8DEE96B8B72 +:1061E000A99F0872CF85FE7E69878EF95E67862F2C +:1061F0001FF1792456A6B8527A29A78F2002C67BB0 +:1062000078A348AFA5079776605D6EFA711BC33C13 +:1062100046B3DD73186FD09C83B604DC23F6F87A9E +:106220005E67091E24F1F7C05DD8BFF9CB1401E504 +:10623000E5CF2B79DED9A58AA3F108940118CF8781 +:10624000F73ED43EF7373588974207F9730B342F62 +:10625000F51794CA8060A0D7F9EFDA10DE17171986 +:10626000EBB8449E63223A0C96C2402ED6E7F6AFB6 +:10627000C5F7D087458A672E18EA273A8C2F51E751 +:10628000201E824BBD2971F08EEBAB381D75269C0C +:106290006B8A413C14009DE23D3B6FA5FAE460A28D +:1062A0005488F31FB845D405D4CBEDB7F6A23CD142 +:1062B0002B259E87C63A66A4BF5B245E7F93E04988 +:1062C000B1EAB1039D4B67A1BC003A368C97C32F4E +:1062D000A2BDB8E88F93781D6F2D23F974C0E5F93E +:1062E0000DD6DDEA853CFEFA7ABBCCA200AE9C5C02 +:1062F00071C0417EF0EDA1B7709F76FE6E29F55F0B +:1063000034233DBD23B021F47B3191CBE3E15CDE4E +:1063100098F18455863C3C280F3593DF60C413BA4E +:10632000DAE27E86F9F3AE24904620B1BE5B1C1EF5 +:106330003F403B0CFDD874C38F5D382485F9A72CF2 +:10634000CAB319EF7DF3E2795417971EE1AFA64463 +:10635000F4FF5869F8AD469CE11BD4F18B5585A339 +:10636000F182EE0207D53775D57FDACAEB5E45D2EA +:1063700093BD41FF9B59C867D0B7CAD9C8F61DC3A2 +:10638000FEEE0DAEA67887AA0C34A3FCEAAD63241A +:1063900007BB829FBE8EFDEE1A5E47BFCDEE4D411C +:1063A0003B3E61CF6416CA47F8F796A268F07A457B +:1063B000DD01FAC3AB95095639F36E03AF3B3DD00F +:1063C000C6E14F740E135E773D9F17F4CE715BE10B +:1063D00098ED7103DEC83CAC87C81E2BEF22E19A12 +:1063E000FD472BD3B9BCF4FA097E57C18D2E357BFE +:1063F00054AF2C58D9DF8439B54505A0B5C4B17A5E +:106400006544EEEC30E44E1BEF5F0D7C8BF479B508 +:1064100077752CD243E65A494153D919ECD05C1612 +:10642000B9D3E5F63D8175E7DDABA2884FBAEC5AEA +:106430002DD5A9AD4A1150FE1D897D90FCDEAB53D0 +:10644000130584775315D7BF009FCBABA0D8E312B9 +:10645000D0AFE2754817415EE17BA767FB928B0CDA +:10646000FD81EF1489B789E4D002AD9FE418C91DFE +:10647000807B685D159DCF944BBDEB64CE9F857688 +:10648000DAE7C0FC3377E139BEF87212E99985ACDE +:10649000BF698278DF25E5922907FEB3F2F08B7A97 +:1064A000C628FE1F98727D8A0AF00EB887D679B387 +:1064B000C7E2FF4AF5FF4AC6E33C91DFA9DC6DE085 +:1064C000F36DBF7617F2D183558CC739DEEB70229E +:1064D0001DB566AC76225DCCCEDCE544BA68EDDB5A +:1064E000553203E561AA4474F542DFA736CCBF38C4 +:1064F00032E7F420ECAA4ADF835596788223F35ED4 +:1065000005F3B62B59878E7E1356E0F626509D92E2 +:1065100013FD445786467548DB32791DD25355A288 +:1065200061477750FEA4D5B09F337D4E0DF1DC9AC4 +:106530009AB40FED8115E2BE8C9D30DE6E9CFFD7C4 +:106540001997AECF8832EADA2619765594D4C1F07D +:106550009D9EAA5269BF4919E1756D1B32FA8A45A1 +:10656000186A75733F6485CCE5CB8AADB1FB9A2D73 +:106570007667A7B1FF73E5DE20E26F45221830731E +:10658000102E33FD9D00FA5DBCFA13CC49BBEF29F8 +:106590009CA765707A7524F17A4A3BD34268877D5F +:1065A00055AEEDADA2F7E2791E204CD69B37F63EF4 +:1065B000078C7D37966BFB11DE0BB85F21E6973AAF +:1065C000885F7299E86942BE8CC80F8DC9E7BCA686 +:1065D0006898FF36F3D04D8181971F45FDFD0DF37F +:1065E000C2DFADD05EA2F3FBBD3FC4B639F6878CE7 +:1065F000EA1CAE305F7C6C9A9684746EDA89CD8624 +:10660000DF79B0482BB5D2FF31E3FEC70C3D2D95A5 +:10661000DA898F0EBEBA42194FAEDEE7F7BD596573 +:10662000B19F24C543F51BEF1A78BBDCFABD7EDFB2 +:10663000BB56BA96148DFCAA15327F270170D594EB +:106640003CCA8F6FB240DB3AC06315D217E2E3B9A0 +:1066500077A390DE57C83D191D16F97A397CA8D961 +:10666000BCBEA7491129CE762A4A5C4B72AE99D797 +:106670005B46F2B3D962BCDB2ADF30DE6DB5173181 +:10668000DE6DED63BCDB3A1FE3DDD6718C775BC753 +:106690009F2BF75D447C60DCDBFA3BC6BDADEBCAEB +:1066A000FCDE3FE0BC65D32AA7201D9C28D786B11D +:1066B000FF0DF4FCD7B8AE6A9197E863CB144E1780 +:1066C000B7AE3B4FFED59684843CAB5ECFACE6F4D0 +:1066D00001EFE6ACB6BC9B3D81BF9B9AAD39D310B0 +:1066E000AFA5DCBF3915B5FA92F263815107B0103E +:1066F000E407B68B8627537BC3B08B5A6D389EDA7E +:10670000A2E1586A170F5F45ED92E1646A8B87D367 +:1067100049EFDE389C46EDD2E16BA95D363C8BDA61 +:1067200092E17C9AB77C388FDA15C3DFA6F6A6E132 +:10673000F9D4BEEDF7AAD540A7554F3C108578FC9B +:106740006E857706DEAB8505C85F027ECBA8A6F80E +:10675000411FC378DBCC6A4ED70F966B33711D7B1C +:10676000CDF8AE50043A2AC03A145F36CD8FCC1F14 +:106770002B47BF44BFF7A2DFE7A1754EA753B2D6A0 +:10678000932430E29B35E55A1EADFF2BD78F1C4C6E +:106790001BDA807AE0BC210F324BBFE75AED86FB53 +:1067A0005673BE3F38D3B46F87DC684F9F5ECFBF50 +:1067B000FF61C1F871E1DB22EA39DE33EABA6C929B +:1067C00087F4816D58A6F132BFCF8BF75B21078E1E +:1067D000AF42B93FC3E66956B105F91E47727A5513 +:1067E0003597FB6B084F7685F222A723F2F380E7FB +:1067F000DB693C02CF58FFF39045EE02BEEF207CF0 +:1068000022C213E93B10FADB58CFEB68BF299E1F69 +:106810002C37E26A063E26C24B24DE4DB902F7FB56 +:106820003F78FE90A450DEA6497D59C3D89D6B48A1 +:10683000D76288BF7DF7E3B91DC3DE500CED5E362D +:10684000053FA4003E7F00D77D033EAFAF263EEF5D +:1068500027FDDFEEEE4FF2606BE7FC7E6C5A7FA9FE +:10686000D7B2AEA3DA46E76DA9E676C39B519B5F2C +:10687000C790D2828C7E1BB65F95FB5A10DEA2D4E5 +:10688000A125782549014F281BF5493FE91394FBC1 +:10689000D74473B9EF1F87FFEFF3FB3BAA23F4063E +:1068A000CE03BDBBF32FA17FE0CB2768FD15F2819E +:1068B000E53DF6E3BA37541B7D9FD30C7A80BE17B3 +:1068C000F57B9FC173BEA1969B72B6B7FA9BC9D9DF +:1068D0001748CE2CF2703D9CC6ED2FBB22EA53091F +:1068E0004FB72B65E3EAC7B297AD7842395B963D67 +:1068F000AEDCF9F178FC60913B3F25BC4C2C774233 +:10690000B4FE2FE50703EFFF5339740A7F9A3F2A3D +:1069100087FE5FB511779D480ED5C58FAB9F6DA8DB +:10692000472C7ED8583924D138BCF769C487264D06 +:10693000285F2E8C27C7C7912FBFFBABCA17E39EDA +:1069400013DD37129F0EB681EA5764E5B157CEE5E5 +:106950008F378FD7AD6008F66B8A07A62A142730C9 +:10696000F635E164BE5EDF8D753E177589EAB4F4D5 +:10697000C5817FC2BEBED9A1A0FDFBF8E4EF75E3DF +:106980007743759253E111D8C075B8EF6EC36F8627 +:10699000FE6CEADB19E55DF15CAB2C75B7F135DC1B +:1069A0008E88C773C65FFE5C87FD5A420DE0235E8A +:1069B000F6B199B0FFCE59BC2E4D8D52D655A09F41 +:1069C00093E4243B2E7ED9AD4CC7F789E17142C6D2 +:1069D0007ADE4883F1ADB344FE5D9EE453F11C5B67 +:1069E000319F40F9BEDECF31DEAC321FADDB56CC7D +:1069F000BFF7694ABDB4DDD2D210FE9DAB2D93F531 +:106A00003872ADFD60097E77D801FE08A2A3A3D835 +:106A1000AF20DDBA32E1DED7E3BE07EEE779CC2165 +:106A2000AAFB9217AEBE64DD7A73C47E52022B427B +:106A30007984B15F9457B69CC4FDD6EF098B6BB9CE +:106A40001E7FD4A82B9614AF86F1B46DD3AAF2F1B1 +:106A5000999D8AC62EC07ECE042F1B84765BB2938E +:106A6000F20937DA16781703BE76AA71B1FCFB0279 +:106A70001ED7EA34E87A512DD707ED0D1DAF9CB330 +:106A8000E37BB7500B5CAA635D559491078E777AD0 +:106A90008400C66F56C2B8C58E8D2E8075163B76A3 +:106AA000AB7B84BFE93B313B6B71A21FFC5801A358 +:106AB000F7DC31EF53FA5D650354DFBF63DEA5DF1A +:106AC000C5FCFE785783330C5F23E3D30792B00EE7 +:106AD000FFB1C2813DE5808F9854A7A704F6D9BDC8 +:106AE000D0CBDAA0BF63BE687C57E7A1BC687CB19D +:106AF0007806E34D3BE6C339B2C79EC371F84BAA93 +:106B0000C38E918618C28D51DFA37AEA2EE31CCB87 +:106B10000A020CF39031C76D548714834558D04F47 +:106B20002CE0F1EDC6E45F85ECB8EF06FAC6966D91 +:106B3000B573FD1CB5E0C249CC8B4F29381A5E876E +:106B4000B496E74DCC3AA4A9A572985F80F574215C +:106B50004B1C308A59EAD4F05EB6F5978C8FD59DE0 +:106B600074FDEC75CB7B35D784C7112FB7FE0F0DA5 +:106B7000CE9FBD0EF4B0F332EFD4D6308FF0B3B366 +:106B800041A376474309C5079F45BD6AA91B9E6976 +:106B9000C457B63ED2CF5643EB0E3DCC6600BF7C09 +:106BA000BF86EB87671B9C8275BE630F1310FF20A7 +:106BB0003D05ACA3607B18C577B7677D7A04E329F0 +:106BC000178B67ECB759F8C48463F69F37DE6D7B8B +:106BD000168FFB3D5F2C96205F3C2F754C8ABBC403 +:106BE0007DBEF54C78DEC0FCDDE48F117E11988609 +:106BF00049DADDB15C2EB6875AA98E56399EBEDFC2 +:106C00006539D7CB359C7FE35120A361A885E7CBBD +:106C100076E4C115675F9EBF4C783B17B2E9588791 +:106C2000BCE3469E378C59A424AFB6BC63BE212F6B +:106C300076C67279D1368D25AFCE1E3BDE61E48FEC +:106C40003B5CACF4C571F0915FCBBF536833F2D6B7 +:106C5000E6FB8D8E3B094E7EAD21FF558DBEE78E46 +:106C6000D79C434D542FFAB17EAE80EA2AE87BECE4 +:106C7000C8FB39D88DCC45791D46F1E8C8FB46B133 +:106C8000B67ECA2FC2DF5773B10E8F91F28E622784 +:106C9000F57309A3DF79471584F3CDFF942F3E30B8 +:106CA000F9C2C55C9C2F568A5BE0DC170BC41E92B0 +:106CB000C9CC278EF79D89C91FECBA4BCBFB1D0DA4 +:106CC000E1F52A916D4CF4908FE531F6E70FEBEF8B +:106CD0006F5E4078267DE6F8EDB6FBF13BC01FDB2A +:106CE000B5FF467DE964DCBF285B20EB36FCDEBAED +:106CF000D9FEF148DE01E82866122BF38EF38E6F81 +:106D0000D9178BB5E4F7C23D72C6BEE3C8390CBAD9 +:106D100088A473A0DB109B83EFACF278F665E814CF +:106D2000F0C730FF71D1CB087FFA614118B19BA841 +:106D30001E1B8E32D708FD09282B75AAF3887C9775 +:106D400064A3FE83BECB033B621A1BA0FED598054D +:106D5000B561CA42A5361DBF9F48C7EF817CD4BF2D +:106D6000062BD9F0BB52D643EDB52C44E339182F8E +:106D7000E44146FADE777688C715F3984A89E57CC0 +:106D8000A6D918959EF8A87F1DD3A99DCF7CAF9C4E +:106D90008373EE585895877A3AA7D6A8FB1CA1971B +:106DA0002B93A38B30E981769DCAF31E5B931F9CC6 +:106DB000288E767DAD353E9CCAE33113BDDB328330 +:106DC000FF1EB57BBC683F3CEA9628CEFE68DAF829 +:106DD000F528D7D770BD2FDB7D545F6533EC986500 +:106DE000B5535F0213913545F9283EDA9424537D5B +:106DF00082695FDDF4DB98971AB3FFF7ECD23FDAD4 +:106E0000B45B6A0BC719BFC2B8DFB3F89FF3D1BE3A +:106E1000D7EE407C99DF733A35A6E8F3B1DF41DF66 +:106E20007346D5409F7FDFD948DFD5F89807C7C1A3 +:106E3000DEAF25BE603CDEDB047489FF5F0CB3EF80 +:106E4000F319FD3D715764AFB395817594E731FC3B +:106E5000B8F5B5BEFBE97E1A5325AB1FB71EFCB8CB +:106E60005CBAFF03B8BF62F2B5334AB7458FE56B32 +:106E7000A64E8B457A1BE19F2BC4CFEF509F825FBC +:106E80007BF07B2119E5C2DDA137E9FB83BB9FFBCA +:106E900017FABE6EA3E12FDF65D015AB2FA4BEECB1 +:106EA000130FE33D3EEA4BA7BA9D8FFA6C64E77C73 +:106EB000D49CB61F2FF1D10B9F71FD0BE3FC7B908F +:106EC00046F3FF63417524E6F7656CA5A6CD27BFA1 +:106ED00096FFFF3F4C7DFCD10B6BB83EEEB319FA29 +:106EE00098D7AF3CDF778D8A745BF9F512F67F7126 +:106EF000DD12A707EBEF2A1FFF24C76FA1E348FDB0 +:106F00002CAACAD67F253D22533D9089C73178519E +:106F1000C6D4BD507D8D79DEF35DD752DD4B33D8BD +:106F200077B64BE4CFA53E077D3FF0B19DFD488885 +:106F300019076EC47B47BEE7FA5AEFCBF8EE42DF83 +:106F4000CF890EC6BC6FFD942BFB6EEC0AE7B5181B +:106F50007C0207A53AC3D8D07CB2736D9A47C3EFC1 +:106F600034638B3B9835AE93E65DFC069E2F5652FC +:106F700004940FB1AA411FEA9CB0FD8ED486D7C5F8 +:106F80009AFB99FDFF0F5E7DE7E5804E0000000053 +:106F900000000000000000000000004000000000B1 +:106FA00000000000000000400000000000000000A1 +:106FB0000000002800000000000000000000001099 +:106FC0000000000000000000000000400000000081 +:106FD00000000000000000100000000000000000A1 +:106FE0000000000800000000000000000000000099 +:106FF00000000000000000000000003D0000000054 +:10700000000000000000003C000000000000000044 +:107010000000000000000000000000000000000868 +:107020000000000000000000000000000000000060 +:10703000000000000000000C000000000000000044 +:107040000000000E0000000000000000000000042E +:107050000000000000000000000000180000000018 +:10706000000000000000001C000000000000000004 +:107070000000001C000000000000000000000013E1 +:1070800000000000000000000000003E00000000C2 +:1070900000000000000000010000000000000000EF +:1070A00000000002000000000000000000000001DD +:1070B00000000000000000000000001000000000C0 +:1070C0000000000000000050000000000000000070 +:1070D00000000000000000000000000000000003AD +:1070E0000000000000000000000000AB00000000F5 +:1070F0000000000000000008000000000000000088 +:107100000000C00000100000000000080000C008DF +:1071100000100000000000020000C000001000008D +:107120000000001000009C080004000000000004A3 +:107130000000C08000100000000000040000C088B3 +:1071400000100000000000020000C08000100000DD +:10715000000000100000933800010004000000014E +:10716000000093400000000000000002000093486F +:1071700000000000000000080000934C0000000028 +:107180000000000200009350000000000000000812 +:107190000000969800400000000000400000935856 +:1071A00000800000000000480000945800400000EB +:1071B0000000000800009468004000000000001873 +:1071C0000006301000280000000000280000995040 +:1071D00000080000000000010000995100080000B4 +:1071E00000000001000099520008000000000001AA +:1071F0000000200800100000000000100000200027 +:10720000000000000000000800009BB80000000023 +:107210000000000800000001000000000000000065 +:107220000000000200000000000000000000000359 +:10723000000000000000000000000004000000004A +:107240000000000000000005000000000000000039 +:107250000000000600000000000000000000000721 +:107260000000000000000000000000080000000016 +:107270000000000000000009000000000000000005 +:107280000000000A00000000000000000000000BE9 +:1072900000000000000000000000000C00000000E2 +:1072A00000000000000000010000000000000000DD +:1072B00000000009000000000000000000000002C3 +:1072C00000000000000000000000C4C0000000003A +:1072D000000000200000C4E60000000000000001E3 +:1072E000000060000020000000000020000073008B +:1072F000000800000000000800009BF000000000F3 +:107300000000000100009B90000000000000000849 +:1073100000009B93000000000000000100009B9112 +:10732000000000000000000100009B96000000002B +:107330000000000100009B9700000000000000001A +:10734000800000000000000000000000800000003D +:10735000000000000000000000000000000000002D +:10736000000000000000000000000000000000001D +:10737000000000000000000000000000000000000D +:1073800000000000000000000000000000000000FD +:1073900000000000000600000000000000000020C7 +:1073A00000009B98000000000000000100009BD836 +:1073B0000000000000000008000000530000000072 +:1073C0000000000000009BE0000000000000000240 +:1073D00000009BE4000000000000000100009BE5AD +:1073E0000000000000000001000000090000000093 +:1073F000000000000000000100000000000000008C +:107400000000004400000000000000000000000137 +:10741000000000000000000000000050000000001C +:1074200000000000000000890000000000000000D3 +:107430000000995300080000000000010000000057 +:107440000000000000000000000016C8000000005E +:1074500000000008000020080010000000000010DC +:10746000000020000000000000000008000017D00D +:107470000008000000000001000017D10008000013 +:1074800000000001000017D2000800000000000109 +:10749000000620780038000000000038000016E0E8 +:1074A0000000000000000002000016E200000000E2 +:1074B000000000020000A0400000000000000020CA +:1074C0008000000000000000000000000000E0005C +:1074D00000200000000000200000F3000008000071 +:1074E00000000008000016F800000000000000D8AE +:1074F0000000173F00000000000000010000171707 +:1075000000000000000000018000000000000000FA +:1075100000000000800000000000000000000000EB +:10752000000000000000000000000000000000005B +:10753000000000000000000000000000000000004B +:10754000000000000000000000000000000000003B +:10755000000000000000000000000000000017789C +:107560000000000000000001000017B8000000004B +:1075700000000008000000510000000000000000B2 +:10758000000017A00000000000000004000017A485 +:107590000000000000000004000017A80000000028 +:1075A00000000004000017AC00000000000000080C +:1075B000000017980000000000000008000017C835 +:1075C0000000000000000002000600000040000073 +:1075D000000000400000C00000400000000000402B +:1075E0000000C02E00400000000000010000C000AC +:1075F00000400002000000010000C0010040000245 +:10760000000000000000E200002000000000002058 +:107610000000E204000200080020000280000000D8 +:1076200000000000000000000000E2000008002050 +:10763000000000040000F500002800000000002801 +:107640000000F64000100000000000100000F64AA4 +:1076500000100000000000010000F6C00020000043 +:10766000000000200000F6C0000200200000000220 +:107670000000F3000040000000000040000020086F +:1076800000100000000000100000200000000000BA +:1076900000000008000011A8000800000000000120 +:1076A000000011A90008000000000001000011AA5C +:1076B000000800000000000100004000002000045D +:1076C00000000010000059000030001800000010F9 +:1076D00000005908003000180000000200005700A8 +:1076E0000008000000000001000057010008000031 +:1076F000000000010000115800000000000000011F +:10770000000011600000000000000010000011AC3B +:1077100000080000000000040000400000200000FD +:1077200000000020000053000010000000000010C6 +:107730000000000000000000000000000000000049 +:107740000000000000000000000000000000000039 +:107750000000000000000000000000000000000029 +:10776000000014700000000000000001000014B0D0 +:1077700000000000000000080000005000000000B1 +:107780000000000000001478000000000000000469 +:107790000000147C000000000000000400001480C1 +:1077A000000000000000000400001484000000003D +:1077B0000000000400001488000000000000000821 +:1077C00000002AF00080000000000080000000019E +:1077D0000000000000000000000020080010000071 +:1077E0000000001000002000000000000000000861 +:1077F00000002C70000800000000000100002C7147 +:10780000000800000000000100002C7200080000C9 +:10781000000000010000415800380000000000385E +:1078200080000000000000000000000000002C4468 +:10783000000800000000000200002C4600080000C4 +:107840000000000200002C540010000000000004A2 +:1078500000002EB0000000000000002000006000CA +:10786000002000000000002000007300000800005D +:107870000000000800000000000000000000000000 +:1078800000000000000000000000000000000000F8 +:1078900000000000000000000000000000000000E8 +:1078A0000000000000002F58000000000000000150 +:1078B00000002F98000000000000000800000050A9 +:1078C000000000000000000000002F800000000009 +:1078D0000000000400002F840000000000000004ED +:1078E00000002F88000000000000000400002F8C22 +:1078F000000000000000000800002FA800000000A9 +:1079000000000002800000000000000000000000F5 +:107910008000000000000000000000008000000067 +:1079200000000000000000000000312800000000FE +:107930000000000800062A20260000400000000881 +:107940000000A0000000000000002000000040C176 +:107950000000000000000001000040F000000000F6 +:107960000000000280000000000000000000000095 +:10797000000060000020000000000008000040003F +:1079800000080000000000010000400100080000A5 +:107990000000000100004040000800040000000258 +:1079A0000000406000080004000000040000408067 +:1079B0000008000000000004000040000008000073 +:1079C0000000000400004004000800000000000463 +:1079D0000000404000000000000000080000404897 +:1079E000000000000000000800008000000000000F +:1079F00000000010000050400001000400000001E1 +:107A000000005000000000000000002000005008AE +:107A100000100000000000040000500C00100000E6 +:107A200000000001000052C700000000000000013B +:107A3000000052C6000000000000000100003000FD +:107A4000004000200000000400003004004000203E +:107A50000000000400003008004000200000000288 +:107A60000000300A00400020000000020000300C3E +:107A700000400020000000010000300D0040002008 +:107A8000000000010000300E004000200000000156 +:107A900000003010004000200000000400003014FE +:107AA00000400020000000040000301800400020CA +:107AB000000000040000301C004000200000000412 +:107AC0000000C00001000080000800040000C004A5 +:107AD00001000080000800040000000A000000000F +:107AE000000000000000C0680100008000000001EC +:107AF0000000C06901000080000000010000C06CAF +:107B000001000080000000020000C06E0100008043 +:107B1000000000020000C0700100008000000004AE +:107B20000000C07401000080000000040000C06676 +:107B300001000080000000020000C064010000801D +:107B4000000000010000C060010000800000000291 +:107B50000000C06201000080000000020000C05070 +:107B600001000080000000040000C05401000080FB +:107B7000000000040000C058010000800000000464 +:107B80000000C05C01000080000000040000C07C18 +:107B900001000080000000010000C07D01000080A5 +:107BA0000000000100001018001000000000000498 +:107BB0000000109000100000000000040000109869 +:107BC0000010000000000004000011100000000080 +:107BD000000000020000111200000000000000027E +:107BE0000000111400000000000000020000111647 +:107BF00000000000000000020000604000080000DB +:107C000000000002000060420008000000000002C6 +:107C10000000604400080000000000020000604610 +:107C20000008000000000002000060800008000062 +:107C300000000008000060000008000000000002D2 +:107C40000000600200080000000000010000600465 +:107C50000008000000000002000060C000080000F2 +:107C6000000000080000610000080000000000049F +:107C700000006104000800000000000100006140F5 +:107C8000000800000000000200006144000800003D +:107C900000000002000061800008000000000004F5 +:107CA0000000300000080000000000020000300268 +:107CB000000800000000000100003004000800007F +:107CC0000000000200003040000800000000000238 +:107CD00000003044000800000000000200003046B0 +:107CE00000080000000000020000366000080000EC +:107CF00000000008000030800008000000000002C2 +:107D0000000030840008000000000002000036A0DF +:107D1000000800000000000800008040000800008B +:107D20000000000100008041000800000000000188 +:107D300000008042000800000000000100008043B5 +:107D400000080000000000010000800000080000A2 +:107D50000000000200008002000800000000000196 +:107D6000000080040008000000000002000080C045 +:107D70000008000000000002000080C200080000AF +:107D800000000002000080C40008000000000002A3 +:107D900000008080000800000000000100008081D9 +:107DA00000080000000000010000808200080000C0 +:107DB00000000001000080830008000000000001B6 +:107DC00000008084000800000000000100008085A1 +:107DD000000800000000000100008086000800008C +:107DE0000000000100006000000800000000000228 +:107DF00000006002000800000000000100006004B4 +:107E000000080000000000020000604200C00018EE +:107E1000000000020000604000C0001800000002E6 +:107E20000000604C00C00018000000080000604422 +:107E300000C00018000000080000605700C00018D3 +:107E4000000000010000605400C0001800000002A3 +:107E50000000605600C000180000000100006640ED +:107E60000008000000000008000066800008000014 +:107E700000000008000066C00008000000000008C4 +:107E80000000DA8200180000000000020000DBA001 +:107E900000000000000000000000E0000000000002 +:107EA000000000040000D1000000000000000004F9 +:107EB0000000D10400000000000000040000D10810 +:107EC00000000000000000040000D10C00000000D1 +:107ED000000000040000D1100000000000000004B9 +:107EE0000000D11400000000000000040000D118C0 +:107EF00000000000000000040000D10000000000AD +:107F0000000000200000928000000000000000043B +:107F10000000928000000000000000280000805057 +:107F200000A80000000000010000805400A800002C +:107F30000000000100008000000000000000005070 +:107F400000008050000000000000001000009600BB +:107F50000000000000000004000094000000000089 +:107F60000000000400009404000000000000000471 +:107F70000000940800000000000000040000940CC1 +:107F80000000000000000004000094100000000049 +:107F90000000000400009414000000000000000431 +:107FA000000094180000000000000004000094008D +:107FB00000000000000000400000942000000000CD +:107FC00000000004000094240000000000000004F1 +:107FD0000000942800000000000000040000941C31 +:107FE00000000000000000040000943000000000C9 +:107FF000000000040000942C0000000000000004B9 +:10800000000094340000000000000004000092848E +:10801000000000000000000400009280000000004A +:108020000000000400009290000000000000000426 +:10803000000092A40000000000000004000094383A +:1080400000000000000000040000943C000000005C +:10805000000000040000B9880000000000000000DB +:108060000000D00000000000000000040000B1008B +:1080700000000000000000040000B1040000000047 +:10808000000000040000B10800000000000000042F +:108090000000B10000000000000000100000BCB0B3 +:1080A00000000000000000040000BCB4000000005C +:1080B000000000040000BCB0000000000000004808 +:1080C0000000D85800000000000000040000D85054 +:1080D00000000000000000040000D8540000000070 +:1080E000000000040000D85C000000000000000454 +:1080F0000000D85000000000000000100000D84030 +:1081000000000000000000040000D844000000004F +:10811000000000040000D84000000000000000083B +:108120000000D4C800000000000000080000D4D8FF +:1081300000000000000000800000001000000000AF +:10814000000000000000D4D800000000000000087B +:1081500000000000000000000702330000000000E3 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e1-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e1-7.2.51.0.fw.ihex @@ -0,0 +1,10138 @@ +:100000000000177800000068000005D8000017E81D +:10001000000031CC00001DC80000006C00004F98AB +:10002000000081D0000050080000009C0000D1E0DA +:10003000000094300000D28000000084000166B807 +:100040000000423800016740000000880001A980DC +:100050000000BD8C0001AA10000011B8000267A0CA +:100060000000000400027960020600DC00000001CC +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:1000900002060068000000B80206007800000114A3 +:1000A000010600B800000000010600C800000000C2 +:1000B0000206006C000000B80206007C000001147B +:1000C000010600BC00000000010600CC000000009A +:1000D000020D004400000032030D004C0004020336 +:1000E000040D005C00000004030D008C00110207E9 +:1000F000020D015C00000001030D01640002021802 +:10010000020D020400000001030D020C0003021A9C +:10011000030D02200002021D040D028000000012E7 +:10012000030D03000018021F040D03600000000C03 +:10013000040D400000000A00030D0004000F023708 +:10014000020D01140000000D020D01180000002D29 +:100150000310100000030246021010100000026499 +:10016000071011000010024908101140000000089B +:100170000710116000100259081011A000000018AB +:1001800007101800020002690210101000000000A1 +:1001900004104C0000000100021040280000001074 +:1001A0000210404400003FFF0210405800280000A9 +:1001B000021040840084924A02104058000000005F +:1001C000030C200800030469030C201C0004046CC9 +:1001D000030C203800110470040C207C0000004F38 +:1001E000030C21B800110481040C21FC0000000F55 +:1001F000030C223800040492010C22480000000085 +:10020000010C224C00000000010C225000000000F4 +:10021000010C225400000000010C225800000000D4 +:10022000010C225C00000000010C226000000000B4 +:10023000010C226400000000010C22680000000094 +:10024000010C226C00000000010C22700000000074 +:10025000010C227400000000010C22780000000054 +:10026000010C227C00000000020C24BC00000001F4 +:100270000A00000100000001020C2000000003E859 +:100280000A00000100000002020C20000000000A29 +:100290000A00000100000004020C20000000000120 +:1002A000052004000084000006200780001004964A +:1002B000042200000000160004228000000000401C +:1002C00004223BD000000008042248000000000681 +:1002D0000322481800040498042248280000000C57 +:1002E000032248580004049C042248680000000CC3 +:1002F00003224898000404A0042248A80000000C2F +:10030000032248D8000404A4042248E80000000C9A +:1003100003224918000404A8042249280000000C04 +:1003200003224958000404AC042249680000000C70 +:1003300003224998000404B0042249A80000000CDC +:10034000032249D8000404B4042249E80000000C48 +:1003500003224A18000404B804224A280000000CB2 +:1003600003224A58000404BC04224A680000000C1E +:1003700003224A98000404C004224AA80000000C8A +:1003800003224AD8000404C404224AE80000000CF6 +:1003900003224B18000404C804224B280000000C60 +:1003A00003224B58000404CC04224B680000000CCC +:1003B00003224B98000404D004224BA80000000C38 +:1003C00003224BD8000404D404224BE80000000CA4 +:1003D00003224C18000404D804224C280000000C0E +:1003E00003224C58000404DC04224C680000000C7A +:1003F00003224C98000404E004224CA80000000CE6 +:1004000003224CD8000404E404224CE80000000C51 +:1004100003224D18000404E804224D280000000CBB +:1004200003224D58000404EC04224D680000000C27 +:1004300003224D98000404F004224DA80000000C93 +:1004400003224DD8000404F404224DE80000000CFF +:1004500003224E18000404F804224E280000000C69 +:1004600003224E58000404FC04224E680000000CD5 +:1004700003224E980004050004224EA80000000C40 +:1004800003224ED80004050404224EE80000000CAC +:1004900003224F180004050804224F280000000C16 +:1004A00003224F580004050C04224F680000000C82 +:1004B00003224F980004051004224FA80000000CEE +:1004C00003224FD80004051404224FE80000000660 +:1004D0000322519800040518022380000000001038 +:1004E00002238040000000120223808000000030C0 +:1004F000022380C00000000E022383800007A12099 +:10050000022383C0000001F402238BC0000000011D +:100510000A00000200000001022383000007A1205E +:1005200002238340000001F40A00000200000002E0 +:10053000022383000000138802238340000000058B +:100540000A000002000000040223830000000138BA +:100550000223834000000000052400003324000033 +:10056000052480000F130CC906249C406ADE051C7C +:100570000120000000000000012000040000000035 +:1005800001200008000000000120000C0000000015 +:1005900001200010000000000120001400000000F5 +:1005A00003200020001A051E032000A400020538C5 +:1005B000022002240000000002200234000000009B +:1005C0000220024C00000000022002E40000FFFFB5 +:1005D000082020000000080004221400000000028F +:1005E00004221490000000300422390000000010A2 +:1005F0000422510800000002042251A80000000655 +:1006000004221408000000020422155000000030EB +:1006100004223940000000100422511000000002A2 +:10062000042251C00000000604102400000000E075 +:100630000310201C0002053A021020C00000000137 +:10064000031020040002053C02170008000000020D +:100650000217002C00000003031700380002053EBB +:100660000317004400060540031700600005054617 +:10067000031700780002054B021700040000000F6A +:100680000410806800000004021080000000108048 +:1006900004108040000000020410802800000002C6 +:1006A0000210803800000010031080400002054D49 +:1006B00002108050000000000210810000000000C5 +:1006C000041081200000000202108008000002B522 +:1006D0000210801000000000021081080001FFFFDE +:1006E000041082000000004A041081400000000253 +:1006F0000210800000001A80041090000000002406 +:10070000041091200000004A041093700000004A79 +:10071000041095C00000004A021080040000108000 +:100720000410804800000002041080300000000225 +:100730000210803C00000010031080480002054FAA +:10074000021080540000000002108104000000002C +:1007500004108128000000020210800C000002B585 +:1007600002108014000000000210810C0001FFFF45 +:10077000041084000000004A0410814800000002B8 +:100780000210800400001A800410909000000024E1 +:10079000041092480000004A041094980000004A97 +:1007A000041096E80000004A0200A468000AFFDC7A +:1007B0000200A280000000010300A2940004055181 +:1007C0000200A4FCFF000000030100B40002055574 +:1007D000020100DC000000010301010000020557D6 +:1007E0000201007C003000000201008400000028AB +:1007F0000201008C00000000020101300000000432 +:100800000401013800000011020102440000001F31 +:100810000201025C00000001020103280000000048 +:100820000201055400000030020100C40000000174 +:10083000020100CC00000001020100F800000001EC +:10084000020100F000000001020100800030000001 +:100850000201008800000028020100900000000052 +:1008600002010134000000040401017C00000011B9 +:10087000020102480000001F020102DC000000012A +:100880000201032C0000000002010564000000309A +:10089000020100C800000001020100D000000001B8 +:1008A000020100FC00000001020100F40000000150 +:1008B00002140000000000010214000C00000001FE +:1008C00003140040000205590214000C000000004F +:1008D00002140000000000000214006C0000000080 +:1008E00002140004000000010214003000000001A6 +:1008F00002140004000000000214005C000000006C +:10090000021400080000000102140034000000017D +:100910000214000800000000021400600000000043 +:10092000030400040012055B030400540003056D7A +:100930000204007000000004030400780004057045 +:1009400004040088000000050304009C00030574F3 +:10095000040400A800000004030400B800050577A3 +:10096000040400CC00000004030400DC0004057C47 +:10097000040400EC00000004010401240000000055 +:1009800001040128000000000104012C0000000007 +:100990000104013000000000020401340000000FD7 +:1009A00003120490002205800212052000000002BC +:1009B0000212038800000064021203900000000885 +:1009C0000312039C000305A2021203BC00000004F2 +:1009D000021203C400000004021203D00000000051 +:1009E000021203DC000000000212036C0000000190 +:1009F000021203680000003F031201BC003C05A581 +:100A0000031202B0000205E103120324000205E311 +:100A1000021201B00000000107103800000505E5D2 +:100A200007103C00000505EA07103C20000505EF13 +:100A300003168030000805F40216805400000002FE +:100A400003168060000505FC041680740000000792 +:100A500003168090000206010316809C0005060321 +:100A6000041680B000000007031680CC00080608BA +:100A7000021680F000000007041680F40000000C4D +:100A80000316812400040610041681340000000CB3 +:100A900003168164003B0614041682500000000413 +:100AA000031682600002064F0416826800000008E8 +:100AB0000316828800080651041682A80000000A66 +:100AC00002168804000000040316880C0010065962 +:100AD000021680EC000000FF0304040800140669FD +:100AE000030500440002067D030500500004067F54 +:100AF0000405006000000004030500900013068355 +:100B000002050114000000010305011C0002069605 +:100B100002050204000000010305020C0002069811 +:100B20000305021C0003069A040502400000000AA7 +:100B3000030502800020069D0405400000000D0012 +:100B400003050004001006BD020500E00000000ED1 +:100B5000020500E40000002E0416402400000002FC +:100B600003164030000306CD02164044000000206A +:100B7000021640700000001C02164208000000012E +:100B8000021642100000000102164220000000017F +:100B90000216422800000001021642300000000147 +:100BA00002164238000000010216426000000001F7 +:100BB0000A000001000000010216401C0003D09052 +:100BC0000A000001000000020216401C000009C4D7 +:100BD0000A000001000000040216401C0000009CF6 +:100BE0000216400000000001021640D8000000017B +:100BF00003164008000306D0021642400000000021 +:100C00000216424800000000081642700000000270 +:100C10000216425000000000021642580000000078 +:100C2000081642800000000203042008000406D3D6 +:100C30000304201C000406D70404203800000080B0 +:100C400003042238000406DB0104224800000000EF +:100C50000104224C000000000104225000000000AA +:100C6000010422540000000001042258000000008A +:100C70000104225C0000000001042260000000006A +:100C8000010422640000000001042268000000004A +:100C90000104226C0000000001042270000000002A +:100CA000010422740000000001042278000000000A +:100CB0000104227C00000000020424BC00000001AA +:100CC0000A0000010000000102042000000003E807 +:100CD0000A00000100000002020420000000000AD7 +:100CE0000A000001000000040204200000000001CE +:100CF00005180400006A000006180760001406DFEB +:100D0000041A000000001600041A800000000040D1 +:100D1000031A08B0000206E1031A19C8000206E32C +:100D2000031A2FC0000406E5041A2FD000000006A5 +:100D3000031A2FE8000206E9031A300003F906EB54 +:100D4000041A3FE400000007031A487000040AE494 +:100D5000021B800000000034021B804000000018CD +:100D6000021B80800000000C021B80C000000020DD +:100D7000021B83800007A120021B83C0000001F436 +:100D8000021B8BC0000000010A00000200000001ED +:100D9000021B83000007A120021B8340000001F416 +:100DA0000A00000200000002021B830000001388FA +:100DB000021B8340000000050A000002000000043E +:100DC000021B830000000138021B8340000000006A +:100DD000051C00002CC80000051C800034270B32C5 +:100DE000051D000020E0183C061D4D10565E0AE867 +:100DF00001180000000000000118000400000000BD +:100E000001180008000000000118000C000000009C +:100E1000011800100000000001180014000000007C +:100E200003180020001A0AEA031800A400020B04A9 +:100E30000218022400000000021802340000000022 +:100E40000218024C00000000021802E4000000FF3B +:100E50000818100000000400041A08000000000236 +:100E6000041A082000000012041A09C000000048FB +:100E7000041A250000000010041A2580000000124A +:100E8000041A261000000012031A2FB000020B06ED +:100E9000041A400000000006041A4030000000025E +:100EA000041A482000000002031A4C5000020B08EC +:100EB000041A081000000002041A0868000000125A +:100EC000041A0AE000000048041A2540000000103F +:100ED000041A25C800000012041A26580000001247 +:100EE000031A2FB800020B0A041A4018000000066B +:100EF000041A403800000002041A482800000002CA +:100F0000031A4C5800020B0C020E004C0000003279 +:100F1000030E005400040B0E040E006400000004D5 +:100F2000030E009400130B12020E01440000000196 +:100F3000030E014C00020B25020E0204000000010A +:100F4000030E020C00020B27030E021C00040B29E7 +:100F5000030E0280001B0B2D040E02EC0000001794 +:100F6000040E200000000800030E000400110B48CE +:100F7000020E01100000000F020E01140000002FED +:100F8000020C100000000028030C400800040B595C +:100F9000030C401C00040B5D030C403800020B6185 +:100FA000040C40400000005E020C41B8000000014B +:100FB000040C41BC0000001F030C423800040B630A +:100FC000010C424800000000010C424C00000000EF +:100FD000010C425000000000010C425400000000CF +:100FE000010C425800000000010C425C00000000AF +:100FF000010C426000000000010C4264000000008F +:10100000010C426800000000010C426C000000006E +:10101000010C427000000000010C4274000000004E +:10102000010C427800000000010C427C000000002E +:10103000010C428000000000020C44C000000001CE +:101040000A00000100000001020C4000000003E85B +:101050000A00000100000002020C40000000000A2B +:101060000A00000100000004020C40000000000122 +:1010700005300400009C00000630076800130B6771 +:10108000043200000000160004328000000000401E +:101090000332183000020B6903322E7000040B6B10 +:1010A0000432508000000008033250A000020B6F91 +:1010B000023380000000001A023380400000004E1E +:1010C0000233808000000010023380C00000002046 +:1010D000023383800007A120023383C0000001F4A3 +:1010E00002338BC0000000010A0000020000000172 +:1010F000023383000007A12002338340000001F483 +:101100000A0000020000000202338300000013887E +:1011100002338340000000050A00000200000004C2 +:1011200002338300000001380233834000000000D6 +:1011300005340000371200000534800031C80DC5A9 +:10114000053500002B541A37063561C053C80B71A2 +:101150000130000000000000013000040000000029 +:1011600001300008000000000130000C0000000009 +:1011700001300010000000000130001400000000E9 +:1011800003300020001A0B73033000A400020B8D03 +:10119000023002240000000002300234000000008F +:1011A0000230024C00000000023002E40000FFFFA9 +:1011B000083020000000080004321C10000000026B +:1011C00004322DE000000002043230000000002054 +:1011D0000432310000000020043232000000002000 +:1011E00004323300000000200432340000000020EC +:1011F00004323500000000200432360000000020D8 +:1012000004323700000000200432380000000020C3 +:10121000043239000000002004323A0000000020AF +:1012200004323B000000002004323C00000000209B +:1012300004323D000000002004323E000000002087 +:1012400004323F000000002004324000000000D8BB +:10125000043246C000000120043250C800000024BF +:1012600004321C200000000204322DE800000002BD +:101270000432308000000020043231800000002061 +:10128000043232800000002004323380000000204D +:101290000432348000000020043235800000002039 +:1012A0000432368000000020043237800000002025 +:1012B0000432388000000020043239800000002011 +:1012C00004323A800000002004323B8000000020FD +:1012D00004323C800000002004323D8000000020E9 +:1012E00004323E800000002004323F8000000020D5 +:1012F00004324360000000D804324B40000001205B +:10130000043251580000002402020058000000324C +:101310000302006000040B8F040200700000000450 +:10132000030200A0000E0B93030200DC00070BA1D8 +:10133000020200FC00000006020201200000000082 +:101340000202013400000002020201B000000001AC +:101350000202020C000000010302021400020BA8AA +:1013600002020404000000010302040C00020BAAA4 +:101370000302041C00040BAC03020480001F0BB02A +:10138000040204FC0000001304028000000020009E +:101390000302000400140BCF02020108000000C881 +:1013A0000202011800000002020201C40000000055 +:1013B000020201CC00000000020201D40000000281 +:1013C000020201DC00000002020201E4000000FF52 +:1013D000020201EC000000FF0202010C000000C844 +:1013E0000202011C00000002020201C8000000000D +:1013F000020201D000000000020201D80000000239 +:10140000020201E000000002020201E8000000FF09 +:10141000020201F0000000FF021610000000002888 +:101420000316600800030BE30316601C00040BE6C0 +:1014300003166038000D0BEA0416606C0000001300 +:10144000031660B800020BF7041660C00000003EEF +:10145000021661B800000001041661BC0000001F04 +:101460000316623800040BF9011662480000000000 +:101470000116624C000000000116625000000000DE +:1014800001166254000000000116625800000000BE +:101490000116625C0000000001166260000000009E +:1014A000011662640000000001166268000000007E +:1014B0000116626C0000000001166270000000005E +:1014C000011662740000000001166278000000003E +:1014D0000116627C00000000021664BC00000001DE +:1014E0000A0000010000000102166000000003E88D +:1014F0000A00000100000002021660000000000A5D +:101500000A00000100000004021660000000000153 +:1015100005280400008800000628076800130BFD5A +:10152000042A000000001600042A80000000004089 +:10153000032A250000020BFF032A296000040C0186 +:10154000032A2F4800020C05032A336800020C0707 +:10155000032A392000020C09032A393000020C0B3F +:10156000032A3AC800020C0D042A3AD000000006F3 +:10157000032A3B9800020C0F032A3C2000040C11A4 +:10158000022A3CD000000000022B80000000000076 +:10159000022B804000000018022B80800000000C0D +:1015A000022B80C000000066022B83800007A12070 +:1015B000022B83C0000001F4022B8BC0000000014D +:1015C0000A00000200000001022B83000007A12096 +:1015D000022B8340000001F40A0000020000000218 +:1015E000022B830000001388022B834000000005BB +:1015F0000A00000200000004022B830000000138F2 +:10160000022B8340000000000A00000100000020BF +:10161000022A3CD400000000052C000038B0000075 +:10162000052C800039E30E2C052D0000399B1CA5EC +:10163000052D8000115B2B0C062DA1604BD40C15E1 +:101640000128000000000000012800040000000044 +:1016500001280008000000000128000C0000000024 +:101660000128001000000000012800140000000004 +:1016700003280020001A0C17032800A400020C31D4 +:1016800002280224000000000228023400000000AA +:101690000228024C00000000022802E40000FFFFC4 +:1016A0000828200000000800042A39100000000269 +:1016B000042A393800000020042A3A3800000010BB +:1016C000032A3AE800020C33032A3AF800100C35DA +:1016D000042A3C3000000002042A500000000002EE +:1016E000042A501000000002042A502000000002CA +:1016F000042A503000000002022A5040000000007E +:10170000042A50480000000E042A39180000000284 +:10171000042A39B800000020042A3A78000000109A +:10172000032A3AF000020C45032A3B3800100C470C +:10173000042A3C3800000002042A5008000000027D +:10174000042A501800000002042A50280000000259 +:10175000042A503800000002022A50440000000011 +:10176000042A50800000000E0400A00000000016B3 +:101770000300A06C00060C570400A08400000005C4 +:101780000200A0980FE000000400A09C00000014DC +:101790000300A0EC00080C5D0400A22C0000000473 +:1017A0000200A060000003070300A10C00060C6506 +:1017B0000400A124000000050200A1380FE0000091 +:1017C0000400A13C000000140300A18C00080C6B75 +:1017D0000400A23C000000040200A0640000030713 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:1018000000000000000000000000000000000000D8 +:101810000000000000000005000500090009000D9F +:1018200000000000000000000000000000000000B8 +:1018300000000000000000000000000000000000A8 +:10184000000D001B001B001C001C001D0000000000 +:101850000000000000000000000000000000000088 +:10186000000000000000000000000000001D002536 +:101870000000000000000000000000000000000068 +:101880000000000000000000000000000000000058 +:1018900000000000000000000025002B00000000F8 +:1018A0000000000000000000000000000000000038 +:1018B0000000000000000000000000000000000028 +:1018C00000000000002B00470000000000000000A6 +:1018D0000000000000000000000000000000000008 +:1018E00000000000000000000000000000000000F8 +:1018F000004700AE00AE00B300B300B80000000027 +:1019000000000000000000000000000000000000D7 +:1019100000000000000000000000000000000000C7 +:1019200000000000000000000000000000000000B7 +:1019300000000000000000000000000000000000A7 +:10194000000000000000000000B800BC0000000023 +:101950000000000000000000000000000000000087 +:101960000000000000000000000000000000000077 +:101970000000000000BC00C30000000000000000E8 +:101980000000000000000000000000000000000057 +:101990000000000000000000000000000000000047 +:1019A00000C300C400C400D600D600E80000000058 +:1019B0000000000000000000000000000000000027 +:1019C0000000000000000000000000000000000017 +:1019D0000000000000000000000000000000000007 +:1019E00000000000000000000000000000000000F7 +:1019F000000000000000000000E800EC0000000013 +:101A000000000000000000000000000000000000D6 +:101A100000000000000000000000000000000000C6 +:101A20000000000000EC00EF00EF00FC00FC0109EA +:101A300000000000000000000000000000000000A6 +:101A40000000000000000000000000000000000096 +:101A50000109010F010F011301130117000000001C +:101A60000000000000000000000000000000000076 +:101A70000000000000000000000000000000000066 +:101A80000000000000000000000000000000000056 +:101A90000000000000000000000000000000000046 +:101AA00000000000000000000117012700000000F6 +:101AB0000000000000000000000000000000000026 +:101AC0000000000000000000000000000000000016 +:101AD00000000000012701360000000000000000A7 +:101AE00000000000000000000000000000000000F6 +:101AF00000000000000000000000000000000000E6 +:101B00000136013900000000000000000000000064 +:101B100000000000000000000000000000000000C5 +:101B20000000000000000000000000000139014E2C +:101B300000000000000000000000000000000000A5 +:101B40000000000000000000000000000000000095 +:101B50000000000000000000014E014F00000000E6 +:101B60000000000000000000000000000000000075 +:101B70000000000000000000000000000000000065 +:101B800000000000014F015C015C015D015D015E30 +:101B90000000000000000000000000000000000045 +:101BA0000000000000000000000000000000000035 +:101BB000015E01720172017501750178000000007B +:101BC0000000000000000000000000000000000015 +:101BD00000000000000000000000000001780191FA +:101BE00000000000000000000000000000000000F5 +:101BF00000000000000000000000000000000000E5 +:101C00000000000000000000019101BE01BE01C9FA +:101C100001C901D400000000000000000000000025 +:101C200000000000000000000000000000000000B4 +:101C30000000000001D401E101E101E201E201E361 +:101C40000000000000000000000000000000000094 +:101C50000000000000000000000000000000000084 +:101C600001E301E4000000000000000000000000AB +:101C70000000000000000000000000000000000064 +:101C800000000000000000000000000001E402016C +:101C90000000000000000000000000000000000044 +:101CA0000000000000000000000000000000000034 +:101CB00000000000000000000201022A022A023F88 +:101CC000023F02540000000000000000000000007D +:101CD0000000000000000000000000000000000004 +:101CE00000000000025402660266026E026E027676 +:101CF00000000000000000000000000000000000E4 +:101D000000000000000000000000000000000000D3 +:101D100002760277000000000000000000000000D2 +:101D200000000000000000000000000000000000B3 +:101D30000000000000000000000000000277029593 +:101D40000000000000000000000000000000000093 +:101D50000000000000000000000000000000000083 +:101D60000000000000000000029502C802C802D472 +:101D700002D402E0000000000000000000000000AB +:101D80000000000000000000000000000000000053 +:101D90000000000002E002E102E102E802E802EFD6 +:101DA0000000000000000000000000000000000033 +:101DB0000000000000000000000000000000000023 +:101DC00000000000000000000000200000004000B3 +:101DD00000006000000080000000A0000000C000C3 +:101DE0000000E000000100000001200000014000B0 +:101DF00000016000000180000001A0000001C0009F +:101E00000001E0000002000000022000000240008B +:101E100000026000000280000002A0000002C0007A +:101E20000002E00000030000000320000003400067 +:101E300000036000000380000003A0000003C00056 +:101E40000003E00000040000000420000004400043 +:101E500000046000000480000004A0000004C00032 +:101E60000004E0000005000000052000000540001F +:101E700000056000000580000005A0000005C0000E +:101E80000005E000000600000006200000064000FB +:101E900000066000000680000006A0000006C000EA +:101EA0000006E000000700000007200000074000D7 +:101EB00000076000000780000007A0000007C000C6 +:101EC0000007E000000800000008200000084000B3 +:101ED00000086000000880000008A0000008C000A2 +:101EE0000008E0000009000000092000000940008F +:101EF00000096000000980000009A0000009C0007E +:101F00000009E000000A0000000A2000000A40006A +:101F1000000A6000000A8000000AA000000AC00059 +:101F2000000AE000000B0000000B2000000B400046 +:101F3000000B6000000B8000000BA000000BC00035 +:101F4000000BE000000C0000000C2000000C400022 +:101F5000000C6000000C8000000CA000000CC00011 +:101F6000000CE000000D0000000D2000000D4000FE +:101F7000000D6000000D8000000DA000000DC000ED +:101F8000000DE000000E0000000E2000000E4000DA +:101F9000000E6000000E8000000EA000000EC000C9 +:101FA000000EE000000F0000000F2000000F4000B6 +:101FB000000F6000000F8000000FA000000FC000A5 +:101FC000000FE00000100000001020000010400092 +:101FD00000106000001080000010A0000010C00081 +:101FE0000010E0000011000000112000001140006E +:101FF00000116000001180000011A0000011C0005D +:102000000011E00000120000001220000012400049 +:1020100000126000001280000012A0000012C00038 +:102020000012E00000130000001320000013400025 +:1020300000136000001380000013A0000013C00014 +:102040000013E00000140000001420000014400001 +:1020500000146000001480000014A0000014C000F0 +:102060000014E000001500000015200000154000DD +:1020700000156000001580000015A0000015C000CC +:102080000015E000001600000016200000164000B9 +:1020900000166000001680000016A0000016C000A8 +:1020A0000016E00000170000001720000017400095 +:1020B00000176000001780000017A0000017C00084 +:1020C0000017E00000180000001820000018400071 +:1020D00000186000001880000018A0000018C00060 +:1020E0000018E0000019000000192000001940004D +:1020F00000196000001980000019A0000019C0003C +:102100000019E000001A0000001A2000001A400028 +:10211000001A6000001A8000001AA000001AC00017 +:10212000001AE000001B0000001B2000001B400004 +:10213000001B6000001B8000001BA000001BC000F3 +:10214000001BE000001C0000001C2000001C4000E0 +:10215000001C6000001C8000001CA000001CC000CF +:10216000001CE000001D0000001D2000001D4000BC +:10217000001D6000001D8000001DA000001DC000AB +:10218000001DE000001E0000001E2000001E400098 +:10219000001E6000001E8000001EA000001EC00087 +:1021A000001EE000001F0000001F2000001F400074 +:1021B000001F6000001F8000001FA000001FC00063 +:1021C000001FE00000200000002020000020400050 +:1021D00000206000002080000020A0000020C0003F +:1021E0000020E0000021000000212000002140002C +:1021F00000216000002180000021A0000021C0001B +:102200000021E00000220000002220000022400007 +:1022100000226000002280000022A0000022C000F6 +:102220000022E000002300000023200000234000E3 +:1022300000236000002380000023A0000023C000D2 +:102240000023E000002400000024200000244000BF +:1022500000246000002480000024A0000024C000AE +:102260000024E0000025000000252000002540009B +:1022700000256000002580000025A0000025C0008A +:102280000025E00000260000002620000026400077 +:1022900000266000002680000026A0000026C00066 +:1022A0000026E00000270000002720000027400053 +:1022B00000276000002780000027A0000027C00042 +:1022C0000027E0000028000000282000002840002F +:1022D00000286000002880000028A0000028C0001E +:1022E0000028E0000029000000292000002940000B +:1022F00000296000002980000029A0000029C000FA +:102300000029E000002A0000002A2000002A4000E6 +:10231000002A6000002A8000002AA000002AC000D5 +:10232000002AE000002B0000002B2000002B4000C2 +:10233000002B6000002B8000002BA000002BC000B1 +:10234000002BE000002C0000002C2000002C40009E +:10235000002C6000002C8000002CA000002CC0008D +:10236000002CE000002D0000002D2000002D40007A +:10237000002D6000002D8000002DA000002DC00069 +:10238000002DE000002E0000002E2000002E400056 +:10239000002E6000002E8000002EA000002EC00045 +:1023A000002EE000002F0000002F2000002F400032 +:1023B000002F6000002F8000002FA000002FC00021 +:1023C000002FE0000030000000302000003040000E +:1023D00000306000003080000030A0000030C000FD +:1023E0000030E000003100000031200000314000EA +:1023F00000316000003180000031A0000031C000D9 +:102400000031E000003200000032200000324000C5 +:1024100000326000003280000032A0000032C000B4 +:102420000032E000003300000033200000334000A1 +:1024300000336000003380000033A0000033C00090 +:102440000033E0000034000000342000003440007D +:1024500000346000003480000034A0000034C0006C +:102460000034E00000350000003520000035400059 +:1024700000356000003580000035A0000035C00048 +:102480000035E00000360000003620000036400035 +:1024900000366000003680000036A0000036C00024 +:1024A0000036E00000370000003720000037400011 +:1024B00000376000003780000037A0000037C00000 +:1024C0000037E000003800000038200000384000ED +:1024D00000386000003880000038A0000038C000DC +:1024E0000038E000003900000039200000394000C9 +:1024F00000396000003980000039A0000039C000B8 +:102500000039E000003A0000003A2000003A4000A4 +:10251000003A6000003A8000003AA000003AC00093 +:10252000003AE000003B0000003B2000003B400080 +:10253000003B6000003B8000003BA000003BC0006F +:10254000003BE000003C0000003C2000003C40005C +:10255000003C6000003C8000003CA000003CC0004B +:10256000003CE000003D0000003D2000003D400038 +:10257000003D6000003D8000003DA000003DC00027 +:10258000003DE000003E0000003E2000003E400014 +:10259000003E6000003E8000003EA000003EC00003 +:1025A000003EE000003F0000003F2000003F4000F0 +:1025B000003F6000003F8000003FA000003FC000DF +:1025C000003FE000003FE00100000000000001FFCC +:1025D00000000200000000010000000200000000F6 +:1025E000000000080215002002150020081000005D +:1025F00000000033000000020000000000000005A1 +:1026000000000005000000000000000000000002C3 +:1026100000000003000000020000000100000004B0 +:1026200000000002000000020000000100000002A3 +:1026300000000020000000400000004000000003F7 +:102640000000001800002000000040C00000618071 +:10265000000082400000A3000000C3C00000E4802E +:102660000001054000012600000146C0000167800E +:10267000000188400001A9000001C9C00001EA80F2 +:1026800000020B4000022C0000024CC000026D80D2 +:1026900000028E400002AF000002CFC00002F080B6 +:1026A00000001140000000010000000100000001D6 +:1026B0000000000100000001000000010000000116 +:1026C0000000000100000001000000010000000106 +:1026D00000000001000000010000000100000001F6 +:1026E0000003D0000000003D00000001000D0000CC +:1026F000000700D000028140000B81680002022028 +:1027000000010240000F025000010340000C0000D5 +:10271000000800C000028140000B81680002022016 +:102720000001024000070250000202C00010000039 +:102730000008010000028180000B81A800020260F5 +:1027400000018280000E82980008038000000000D3 +:102750000000000000028000000B8028000200E062 +:10276000000101000000811000000118FFFFFFF3CD +:1027700001AFFFFF000000000000000000000000AB +:10278000000000000000000000000000FFFFFFF15B +:1027900000EFFFFF0000000000000000000000004C +:1027A000000000000001000000000000FFFFFFF635 +:1027B000005FFFFF000000000000000000000000BC +:1027C000000000000002000000000000FFFFF4060F +:1027D0001CBFFFFF00000005000000000000001407 +:1027E000000000000004000000000000FFFFFFF2F6 +:1027F000004FFFFF0000000000000000000000008C +:10280000000000000008000000000000FFFFFFFAC9 +:10281000002FFFFF0000000000000000000000008B +:10282000000000000010000000000000FFFFFFF7A4 +:1028300001EFFFFF000000000000000000000000AA +:10284000000000000020000000000000FFFFFFF576 +:10285000002FFFFF0000000000000000000000004B +:10286000000000000040000000000000FFFFFFF338 +:10287000018FFFFF000000000000000000000000CA +:10288000000000000000000000000000FFFFFFF15A +:10289000010FFFFF0000000000000000000000002A +:1028A000000000000001000000000000FFFFFFF634 +:1028B000005FFFFF000000000000000000000000BB +:1028C000000000000002000000000000FFFFF4060E +:1028D0001CBFFFFF00000005000000000000001406 +:1028E000000000000004000000000000FFFFFFF2F5 +:1028F000004FFFFF0000000000000000000000008B +:10290000000000000008000000000000FFFFFFFAC8 +:10291000002FFFFF0000000000000000000000008A +:10292000000000000010000000000000FFFFFFF7A3 +:1029300000EFFFFF000000000000000000000000AA +:10294000000000000020000000000000FFFFFFF575 +:10295000004FFFFF0000000000000000000000002A +:10296000000000000040000000000000FFFFFFFF2B +:1029700000CFFFFF0000000000000000000000CCBE +:10298000000000000000000000000000FFFFFFFF4B +:1029900000CFFFFF0000000000000000000000CC9E +:1029A000000000000001000000000000FFFFFFFF2A +:1029B00000CFFFFF0000000000000000000000CC7E +:1029C000000000000002000000000000FFFFFFFF09 +:1029D00000CFFFFF0000000000000000000000CC5E +:1029E000000000000004000000000000FFFFFFFFE7 +:1029F00000CFFFFF0000000000000000000000CC3E +:102A0000000000000008000000000000FFFFFFFFC2 +:102A100000CFFFFF0000000000000000000000CC1D +:102A2000000000000010000000000000FFFFFFFF9A +:102A300000CFFFFF0000000000000000000000CCFD +:102A4000000000000020000000000000FFFFFFFF6A +:102A500000CFFFFF0000000000000000000000CCDD +:102A6000000000000040000000000000FFFFFFF336 +:102A7000020FFFFF00000000000000000000000047 +:102A8000000000000000000000000000FFFFFFF158 +:102A9000010FFFFF00000000000000000000000028 +:102AA000000000000001000000000000FFFFFFF632 +:102AB000005FFFFF000000000000000000000000B9 +:102AC000000000000002000000000000FFFFF4060C +:102AD0001CBFFFFF00000005000000000000001404 +:102AE000000000000004000000000000FFFFFFF2F3 +:102AF000004FFFFF00000000000000000000000089 +:102B0000000000000008000000000000FFFFFF8A36 +:102B1000042FFFFF00000000000000000000000084 +:102B2000000000000010000000000000FFFFFF9701 +:102B300005CFFFFF000000000000000000000000C3 +:102B4000000000000020000000000000FFFFFFF573 +:102B5000010FFFFF00000000000000000000000067 +:102B6000000000000040000000000000FFFFFFF335 +:102B7000000FFFFF00000000000000000000000048 +:102B8000000000000000000000000000FFFFFFF157 +:102B9000000FFFFF00000000000000000000000028 +:102BA000000000000001000000000000FFFFFFF631 +:102BB000005FFFFF000000000000000000000000B8 +:102BC000000000000002000000000000FFFFF4060B +:102BD0001CBFFFFF00000005000000000000001403 +:102BE000000000000004000000000000FFFFFFF2F2 +:102BF000004FFFFF00000000000000000000000088 +:102C0000000000000008000000000000FFFFFFFAC5 +:102C1000002FFFFF00000000000000000000000087 +:102C2000000000000010000000000000FFFFFF9700 +:102C3000040FFFFF00000000000000000000000083 +:102C4000000000000020000000000000FFFFFFF572 +:102C5000000FFFFF00000000000000000000000067 +:102C6000000000000040000000000000FFFFFFFF28 +:102C700000CFFFFF0000000000000000000000CCBB +:102C8000000000000000000000000000FFFFFFFF48 +:102C900000CFFFFF0000000000000000000000CC9B +:102CA000000000000001000000000000FFFFFFFF27 +:102CB00000CFFFFF0000000000000000000000CC7B +:102CC000000000000002000000000000FFFFFFFF06 +:102CD00000CFFFFF0000000000000000000000CC5B +:102CE000000000000004000000000000FFFFFFFFE4 +:102CF00000CFFFFF0000000000000000000000CC3B +:102D0000000000000008000000000000FFFFFFFFBF +:102D100000CFFFFF0000000000000000000000CC1A +:102D2000000000000010000000000000FFFFFFFF97 +:102D300000CFFFFF0000000000000000000000CCFA +:102D4000000000000020000000000000FFFFFFFF67 +:102D500000CFFFFF0000000000000000000000CCDA +:102D6000000000000040000000000000FFFFFFFF27 +:102D700000CFFFFF0000000000000000000000CCBA +:102D8000000000000000000000000000FFFFFFFF47 +:102D900000CFFFFF0000000000000000000000CC9A +:102DA000000000000001000000000000FFFFFFFF26 +:102DB00000CFFFFF0000000000000000000000CC7A +:102DC000000000000002000000000000FFFFFFFF05 +:102DD00000CFFFFF0000000000000000000000CC5A +:102DE000000000000004000000000000FFFFFFFFE3 +:102DF00000CFFFFF0000000000000000000000CC3A +:102E0000000000000008000000000000FFFFFFFFBE +:102E100000CFFFFF0000000000000000000000CC19 +:102E2000000000000010000000000000FFFFFFFF96 +:102E300000CFFFFF0000000000000000000000CCF9 +:102E4000000000000020000000000000FFFFFFFF66 +:102E500000CFFFFF0000000000000000000000CCD9 +:102E6000000000000040000000000000FFFFFFFF26 +:102E700000CFFFFF0000000000000000000000CCB9 +:102E8000000000000000000000000000FFFFFFFF46 +:102E900000CFFFFF0000000000000000000000CC99 +:102EA000000000000001000000000000FFFFFFFF25 +:102EB00000CFFFFF0000000000000000000000CC79 +:102EC000000000000002000000000000FFFFFFFF04 +:102ED00000CFFFFF0000000000000000000000CC59 +:102EE000000000000004000000000000FFFFFFFFE2 +:102EF00000CFFFFF0000000000000000000000CC39 +:102F0000000000000008000000000000FFFFFFFFBD +:102F100000CFFFFF0000000000000000000000CC18 +:102F2000000000000010000000000000FFFFFFFF95 +:102F300000CFFFFF0000000000000000000000CCF8 +:102F4000000000000020000000000000FFFFFFFF65 +:102F500000CFFFFF0000000000000000000000CCD8 +:102F600000000000004000000000000000000A1106 +:102F700000000A0000000A040000FFFF0000FFFF3D +:102F80000000FFFF0000FFFF000000200000002104 +:102F900000000022000000230000002400000025A3 +:102FA0000000002600000027000000280000002983 +:102FB0000000002A0000002B0000002C0000002D63 +:102FC0000000002E0000002F000000100000000193 +:102FD00000000001000000010000000100000001ED +:102FE00000000001000000010000000100000001DD +:102FF00000000001000000010000000100000001CD +:1030000000000001000000010000000100000001BC +:1030100007FFFFFF0000003F07FFFFFF0000000F5A +:1030200000007FF800007FF80000FF1C0FFFFFFF8B +:103030000000FF1C0FFFFFFF0000FF1C0FFFFFFF42 +:103040000000FF1C0FFFFFFF0000FF1C0FFFFFFF32 +:103050000000FF1C0FFFFFFF0000FF1C0FFFFFFF22 +:103060000000FF1C0FFFFFFF0000FF1C0FFFFFFF12 +:103070000000FF1C0FFFFFFF0000FF1C0FFFFFFF02 +:103080000000FF1C0FFFFFFF0000FF1C0FFFFFFFF2 +:103090000000FF1C0FFFFFFF0000FF1C0FFFFFFFE2 +:1030A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD2 +:1030B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC2 +:1030C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB2 +:1030D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA2 +:1030E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF92 +:1030F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF82 +:103100000000FF1C0FFFFFFF0000FF1C0FFFFFFF71 +:103110000000FF1C0FFFFFFF0000FF1C0FFFFFFF61 +:103120000000FF1C0FFFFFFF0000FF1C0FFFFFFF51 +:103130000000FF1C0FFFFFFF0000FF1C0FFFFFFF41 +:103140000000FF1C0FFFFFFF0000FF1C0FFFFFFF31 +:103150000000FF1C0FFFFFFF0000FF1C0FFFFFFF21 +:103160000000FF1C0FFFFFFF0000FF1C0FFFFFFF11 +:103170000000FF1C0FFFFFFF0000FF1C0FFFFFFF01 +:103180000000FF1C0FFFFFFF0000FF1C0FFFFFFFF1 +:103190000000FF1C0FFFFFFF0000FF1C0FFFFFFFE1 +:1031A0000000FF1C0FFFFFFF0000FF1C0FFFFFFFD1 +:1031B0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC1 +:1031C0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB1 +:1031D0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA1 +:1031E0000000FF1C0FFFFFFF0000FF1C0FFFFFFF91 +:1031F0000000FF1C0FFFFFFF0000FF1C0FFFFFFF81 +:103200000000FF1C0FFFFFFF0000FF1C0FFFFFFF70 +:103210000000FF1C0FFFFFFF0000FF1C0FFFFFFF60 +:103220000000FF1C0FFFFFFF0000FF000000000078 +:103230000000FF0000000000000003110000350046 +:103240000000000100000002000000030000000078 +:103250000000000400000001000000000000000168 +:103260000000000400000000000000010000000356 +:103270000000000000000001000000040000000049 +:103280000000000100000003000000000000000139 +:103290000000000400000000000000040000000323 +:1032A000000000000000000000003FFF000003FFDE +:1032B000000000000000000100000001000000010B +:1032C000007C100400000004000000000000000268 +:1032D00000000090000000900080009008100000A6 +:1032E0000000008A000000800000008100000080D3 +:1032F00000000006000007D00000076C0000FFFF80 +:103300000000FFFF0000FFFF0000FFFF071D291165 +:1033100000000000009C04240000000000000001E8 +:103320000000000100000001000000010000000199 +:1033300000007FFF000000FF000000FF000000FF12 +:10334000000000FF000000FF000000FF000000FF81 +:10335000000000FF0000003E000000000000003FF1 +:103360000000003F0000003F000000000000003FA0 +:103370000000003F0000003F0000000F000000437D +:10338000000000000000000600000000121700000E +:10339000221700003217000012150000221500004D +:1033A0003215000002100000001000001010000094 +:1033B0002010000030100000001000001214000067 +:1033C000221400003214000000E38340FFFFFFFFDF +:1033D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +:1033E000FFFFFFFFFFFFFFFFFFFFFFFFF0003000C9 +:1033F000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +:10340000FFFFFFFFFFFFFFFFFFFFFFFFFFFF33286F +:10341000FFFF3338FFFFFFFFFFFFFFFFFFFFFFFF4F +:10342000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +:10343000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +:10344000FFFFFFFFFFFFFFFFFFFFFFFF00003C103C +:103450000000000800000000000000000000004024 +:1034600000001808000008030000080300000040E6 +:103470000000000300000803000008030000080328 +:10348000000100030000080300000803000000031F +:103490000000000300000003000000030000000320 +:1034A0000000000300000003000000030000000310 +:1034B0000000000300000003000000030000000300 +:1034C0000000000300000003000024030000002FA0 +:1034D00000000009000000190000018400000183C1 +:1034E00000000306000000190000000600000306AB +:1034F000000003060000030600000C86000003061F +:1035000000000306000000060000000600000006A0 +:103510000000000600000006000000060000000693 +:103520000000000600000006000000060000000683 +:103530000000000600000006000000060000000673 +:103540000000030600000013000000060000100445 +:1035500000001004001064400010644000000000EF +:10356000000000000000000000000000000020003B +:10357000000000000000000000000000000000004B +:10358000000020000000000000000000000000001B +:1035900000000000000020000000007C0000003D52 +:1035A0000000003F0000009C000000060000000535 +:1035B0000000000A0000000500000140000001407A +:1035C0000000000000000000000000C00000013FFB +:1035D00000007FFF000000480000004800000000DD +:1035E000000000000000004800000004000000048B +:1035F00000000004000000040000000400000004BB +:1036000000000004000000040000000400000009A5 +:103610000000000B0000000A000000040000000988 +:103620000000000B0000000A000000010000000183 +:103630000000000100000001000000010000000186 +:103640000000000100000001000000010000000176 +:10365000000000010000000100000004000000095B +:103660000000000B0000000A000000010000000143 +:103670000000000100000001000000010000000146 +:103680000000000100000001000000010000000136 +:10369000000000010000000100000004000000091B +:1036A0000000000B0000000A000000000000000005 +:1036B0000000080000000200000001FF00000400FC +:1036C00000000000000000001E491E491E491E495E +:1036D0000E490E490E490E49FFFFFFFF0000000092 +:1036E000FFFFFFFF00000000000025E40000800055 +:1036F000000000130FFF0FFF00000000000000009B +:103700000FFF0FFF1000100010001000200020001D +:1037100020002000800080008000800040004000E9 +:103720004000400000000000000000010101010114 +:10373000012001012001010101011001010101012C +:1037400001200101200101010101100120010101FD +:10375000010110010101010101200101200101010C +:1037600001011001010101010120010100000123FB +:1037700000000123000001230000012300000123B9 +:1037800000000123000001230000012300000123A9 +:103790000000012300000123000001230000012399 +:1037A0000000012300000123000001230000012389 +:1037B000000001230000012300000123000000207D +:1037C00000000032000000070000000700000000B9 +:1037D0000000000802150020021500200000003043 +:1037E000081000000000003300000030000000312D +:1037F00000000002000000050000000600000002BA +:1038000000000002000000000000000500000002AF +:10381000000000020000000200000001000000069D +:103820000000000100000002000000400000004015 +:103830000000002000000013000000200001000034 +:10384000000204C00003098000040E4000051300BC +:10385000000617C000071C80000821400009260050 +:10386000000A2AC0000B2F80000C3440000D3900E4 +:10387000000E3DC0000F42800010474000114C0078 +:10388000001250C00013558000145A4000155F000C +:10389000001663C00017688000186D4000197200A0 +:1038A000001A76C0001B7B80001C8040001D850034 +:1038B000001E89C0001F8E800000934000000001A0 +:1038C00000000001000000010000000100000001F4 +:1038D00000000001000000010000000100000001E4 +:1038E00000000001000000010000000100000001D4 +:1038F00000000001000000010000000100000008BD +:103900000000000C00000010000000010000000199 +:10391000000000010000021100000200000002048B +:10392000000002190000FFFF0000FFFF0000FFFF82 +:103930000000FFFF07FFFFFF0000003F07FFFFFF42 +:103940000000000F00007FF800007FF8000000007A +:10395000140AFF0000000000000000010020100118 +:1039600000000000010086000000010000000001CE +:1039700000000000000086020000000000000000BF +:1039800000000000000086040000000000000000AD +:10399000000000000000860600000000000000009B +:1039A0000000000000008608000000000000000089 +:1039B000000000000000860A000000000000000077 +:1039C000000000000000860C000000000000000065 +:1039D000000000000000860E000000000000000053 +:1039E0000000000000008610000000000000000041 +:1039F000000000000000861200000000000000002F +:103A0000000000000000861400000000000000001C +:103A1000000000000000861600000000000000000A +:103A200000000000000086180000000000000000F8 +:103A3000000000000000861A0000000000000000E6 +:103A4000000000000000861C0000000000000000D4 +:103A5000000000000000861E0000000000000000C2 +:103A600000000000000086200000000000000000B0 +:103A7000000000000000862200000000000000009E +:103A8000000000000000862400000000000000008C +:103A9000000000000000862600000000000000007A +:103AA0000000000000008628000000000000000068 +:103AB000000000000000862A000000000000000056 +:103AC000000000000000862C000000000000000044 +:103AD000000000000000862E000000000000000032 +:103AE0000000000000008630000000000000000020 +:103AF000000000000000863200000000000000000E +:103B000000000000000086340000000000000000FB +:103B100000000000000086360000000000000000E9 +:103B200000000000000086380000000000000000D7 +:103B3000000000000000863A0000000000000000C5 +:103B4000000000000000863C0000000000000000B3 +:103B5000000000000000863E0000000000000000A1 +:103B6000000000000000864000000000000000008F +:103B7000000000000000864200000000000000007D +:103B8000000000000000864400000000000000006B +:103B90000000000000008646000000000000000059 +:103BA0000000000000008648000000000000000047 +:103BB000000000000000864A000000000000000035 +:103BC000000000000000864C000000000000000023 +:103BD000000000000000864E000000000000000011 +:103BE00000000000000086500000000000000000FF +:103BF00000000000000086520000000000000000ED +:103C000000000000000086540000000000000000DA +:103C100000000000000086560000000000000000C8 +:103C200000000000000086580000000000000000B6 +:103C3000000000000000865A0000000000000000A4 +:103C4000000000000000865C000000000000000092 +:103C5000000000000000865E000000000000000080 +:103C6000000000000000866000000000000000006E +:103C7000000000000000866200000000000000005C +:103C8000000000000000866400000000000000004A +:103C90000000000000008666000000000000000038 +:103CA0000000000000008668000000000000000026 +:103CB000000000000000866A000000000000000014 +:103CC000000000000000866C000000000000000002 +:103CD000000000000000866E0000000000000000F0 +:103CE00000000000000086700000000000000000DE +:103CF00000000000000086720000000000000000CC +:103D000000000000000086740000000000000000B9 +:103D100000000000000086760000000000000000A7 +:103D20000000000000008678000000000000000095 +:103D3000000000000000867A000000000000000083 +:103D4000000000000000867C000000000000000071 +:103D5000000000000000867E00000000000000005F +:103D6000000000000000868000000000000000004D +:103D7000000000000000868200000000000000003B +:103D80000000000000008684000000000000000029 +:103D90000000000000008686000000000000000017 +:103DA0000000000000008688000000000000000005 +:103DB000000000000000868A0000000000000000F3 +:103DC000000000000000868C0000000000000000E1 +:103DD000000000000000868E0000000000000000CF +:103DE00000000000000086900000000000000000BD +:103DF00000000000000086920000000000000000AB +:103E00000000000000008694000000000000000098 +:103E10000000000000008696000000000000000086 +:103E20000000000000008698000000000000000074 +:103E3000000000000000869A000000000000000062 +:103E4000000000000000869C000000000000000050 +:103E5000000000000000869E00000000000000003E +:103E600000000000000086A000000000000000002C +:103E700000000000000086A200000000000000001A +:103E800000000000000086A4000000000000000008 +:103E900000000000000086A60000000000000000F6 +:103EA00000000000000086A80000000000000000E4 +:103EB00000000000000086AA0000000000000000D2 +:103EC00000000000000086AC0000000000000000C0 +:103ED00000000000000086AE0000000000000000AE +:103EE00000000000000086B000000000000000009C +:103EF00000000000000086B200000000000000008A +:103F000000000000000086B4000000000000000077 +:103F100000000000000086B6000000000000000065 +:103F200000000000000086B8000000000000000053 +:103F300000000000000086BA000000000000000041 +:103F400000000000000086BC00000000000000002F +:103F500000000000000086BE00000000000000001D +:103F600000000000000086C000000000000000000B +:103F700000000000000086C20000000000000000F9 +:103F800000000000000086C40000000000000000E7 +:103F900000000000000086C60000000000000000D5 +:103FA00000000000000086C80000000000000000C3 +:103FB00000000000000086CA0000000000000000B1 +:103FC00000000000000086CC00000000000000009F +:103FD00000000000000086CE00000000000000008D +:103FE00000000000000086D000000000000000007B +:103FF00000000000000086D2000000000000000069 +:1040000000000000000086D4000000000000000056 +:1040100000000000000086D6000000000000000044 +:1040200000000000000086D8000000000000000032 +:1040300000000000000086DA000000000000000020 +:1040400000000000000086DC00000000000000000E +:1040500000000000000086DE0000000000000000FC +:1040600000000000000086E00000000000000000EA +:1040700000000000000086E20000000000000000D8 +:1040800000000000000086E40000000000000000C6 +:1040900000000000000086E60000000000000000B4 +:1040A00000000000000086E80000000000000000A2 +:1040B00000000000000086EA000000000000000090 +:1040C00000000000000086EC00000000000000007E +:1040D00000000000000086EE00000000000000006C +:1040E00000000000000086F000000000000000005A +:1040F00000000000000086F2000000000000000048 +:1041000000000000000086F4000000000000000035 +:1041100000000000000086F6000000000000000023 +:1041200000000000000086F8000000000000000011 +:1041300000000000000086FA0000000000000000FF +:1041400000000000000086FC0000000000000000ED +:1041500000000000000086FE0000000000000000DB +:1041600000000000000087000000000000000000C8 +:1041700000000000000087020000000000000000B6 +:1041800000000000000087040000000000000000A4 +:104190000000000000008706000000000000000092 +:1041A0000000000000008708000000000000000080 +:1041B000000000000000870A00000000000000006E +:1041C000000000000000870C00000000000000005C +:1041D000000000000000870E00000000000000004A +:1041E0000000000000008710000000000000000038 +:1041F0000000000000008712000000000000000026 +:104200000000000000008714000000000000000013 +:104210000000000000008716000000000000000001 +:1042200000000000000087180000000000000000EF +:10423000000000000000871A0000000000000000DD +:10424000000000000000871C0000000000000000CB +:10425000000000000000871E0000000000000000B9 +:1042600000000000000087200000000000000000A7 +:104270000000000000008722000000000000000095 +:104280000000000000008724000000000000000083 +:104290000000000000008726000000000000000071 +:1042A000000000000000872800000000000000005F +:1042B000000000000000872A00000000000000004D +:1042C000000000000000872C00000000000000003B +:1042D000000000000000872E000000000000000029 +:1042E0000000000000008730000000000000000017 +:1042F0000000000000008732000000000000000005 +:1043000000000000000087340000000000000000F2 +:1043100000000000000087360000000000000000E0 +:1043200000000000000087380000000000000000CE +:10433000000000000000873A0000000000000000BC +:10434000000000000000873C0000000000000000AA +:10435000000000000000873E000000000000000098 +:104360000000000000008740000000000000000086 +:104370000000000000008742000000000000000074 +:104380000000000000008744000000000000000062 +:104390000000000000008746000000000000000050 +:1043A000000000000000874800000000000000003E +:1043B000000000000000874A00000000000000002C +:1043C000000000000000874C00000000000000001A +:1043D000000000000000874E000000000000000008 +:1043E00000000000000087500000000000000000F6 +:1043F00000000000000087520000000000000000E4 +:1044000000000000000087540000000000000000D1 +:1044100000000000000087560000000000000000BF +:1044200000000000000087580000000000000000AD +:10443000000000000000875A00000000000000009B +:10444000000000000000875C000000000000000089 +:10445000000000000000875E000000000000000077 +:104460000000000000008760000000000000000065 +:104470000000000000008762000000000000000053 +:104480000000000000008764000000000000000041 +:10449000000000000000876600000000000000002F +:1044A000000000000000876800000000000000001D +:1044B000000000000000876A00000000000000000B +:1044C000000000000000876C0000000000000000F9 +:1044D000000000000000876E0000000000000000E7 +:1044E00000000000000087700000000000000000D5 +:1044F00000000000000087720000000000000000C3 +:1045000000000000000087740000000000000000B0 +:10451000000000000000877600000000000000009E +:10452000000000000000877800000000000000008C +:10453000000000000000877A00000000000000007A +:10454000000000000000877C000000000000000068 +:10455000000000000000877E000000000000000056 +:104560000000000000008780000000000000000044 +:104570000000000000008782000000000000000032 +:104580000000000000008784000000000000000020 +:10459000000000000000878600000000000000000E +:1045A00000000000000087880000000000000000FC +:1045B000000000000000878A0000000000000000EA +:1045C000000000000000878C0000000000000000D8 +:1045D000000000000000878E0000000000000000C6 +:1045E00000000000000087900000000000000000B4 +:1045F00000000000000087920000000000000000A2 +:10460000000000000000879400000000000000008F +:10461000000000000000879600000000000000007D +:10462000000000000000879800000000000000006B +:10463000000000000000879A000000000000000059 +:10464000000000000000879C000000000000000047 +:10465000000000000000879E000000000000000035 +:1046600000000000000087A0000000000000000023 +:1046700000000000000087A2000000000000000011 +:1046800000000000000087A40000000000000000FF +:1046900000000000000087A60000000000000000ED +:1046A00000000000000087A80000000000000000DB +:1046B00000000000000087AA0000000000000000C9 +:1046C00000000000000087AC0000000000000000B7 +:1046D00000000000000087AE0000000000000000A5 +:1046E00000000000000087B0000000000000000093 +:1046F00000000000000087B2000000000000000081 +:1047000000000000000087B400000000000000006E +:1047100000000000000087B600000000000000005C +:1047200000000000000087B800000000000000004A +:1047300000000000000087BA000000000000000038 +:1047400000000000000087BC000000000000000026 +:1047500000000000000087BE000000000000000014 +:1047600000000000000087C0000000000000000002 +:1047700000000000000087C20000000000000000F0 +:1047800000000000000087C40000000000000000DE +:1047900000000000000087C60000000000000000CC +:1047A00000000000000087C80000000000000000BA +:1047B00000000000000087CA0000000000000000A8 +:1047C00000000000000087CC000000000000000096 +:1047D00000000000000087CE000000000000000084 +:1047E00000000000000087D0000000000000000072 +:1047F00000000000000087D2000000000000000060 +:1048000000000000000087D400000000000000004D +:1048100000000000000087D600000000000000003B +:1048200000000000000087D8000000000000000029 +:1048300000000000000087DA000000000000000017 +:1048400000000000000087DC000000000000000005 +:1048500000000000000087DE0000000000000000F3 +:1048600000000000000087E00000000000000000E1 +:1048700000000000000087E20000000000000000CF +:1048800000000000000087E40000000000000000BD +:1048900000000000000087E60000000000000000AB +:1048A00000000000000087E8000000000000000099 +:1048B00000000000000087EA000000000000000087 +:1048C00000000000000087EC000000000000000075 +:1048D00000000000000087EE000000000000000063 +:1048E00000000000000087F0000000000000000051 +:1048F00000000000000087F200000000000000003F +:1049000000000000000087F400000000000000002C +:1049100000000000000087F600000000000000001A +:1049200000000000000087F8000000000000000008 +:1049300000000000000087FA0000000000000000F6 +:1049400000000000000087FC0000000000000000E4 +:1049500000000000000087FE0000FF0000000000D3 +:104960000000FF0000000000000001D20000150060 +:104970000000000100000002000000030000000031 +:104980000000000400000001000000000000000121 +:10499000000000040000000000000001000000030F +:1049A0000000000000000001000000040000000002 +:1049B00000000001000000030000000000000001F2 +:1049C00000000004000000000000000400000003DC +:1049D000000000000000000000003FFF000003FF97 +:1049E0000000000300BEBC20000000000000000525 +:1049F0000000000300BEBC20000000000000000515 +:104A00000000000D0000000C00000000000000107D +:104A100002150020021500200000003008100000E0 +:104A200000000033000000300000003100000002F0 +:104A3000000000040000000000000002000000026E +:104A4000000000000000000200000007000000025B +:104A5000000000020000000100000003000000014F +:104A600000000002000000400000004000000004C0 +:104A7000000000200000000F0000001B000080006C +:104A8000000103C00001878000020B4000028F007C +:104A9000000312C00003968000041A4000049E0028 +:104AA000000521C00005A580000629400006AD00D4 +:104AB000000730C00007B480000838400008BC0080 +:104AC00000093FC00009C380000A4740000ACB002C +:104AD000000B4EC0000BD280000C5640000CDA00D8 +:104AE000000D5DC0000061800000000100000001B9 +:104AF00000000001000000010000000100000001B2 +:104B000000000001000000010000000100000001A1 +:104B10000000000100000001000000010000000191 +:104B2000000000010000000100000001000005AAD3 +:104B3000000005990000059D000003C00000FFFF74 +:104B40000000FFFF0000FFFF0000FFFF0000004625 +:104B50000000000C07FFFFFF0000003F07FFFFFF02 +:104B60000000000F00007FF800007FF8FFFFFFFF4C +:104B7000FFFFFFFF0000FF00000000000000FF003B +:104B8000000000000000190000000000000001D338 +:104B900000003500000000010000000200000003DA +:104BA0000000000000000004000000010000000000 +:104BB00000000001000000040000000000000001EF +:104BC00000000003000000000000000100000004DD +:104BD00000000000000000010000000300000000D1 +:104BE00000000001000000040000000000000004BC +:104BF00000000003000000000000000000003FFF74 +:104C0000000003FF0000000F00000007000000008C +:104C10000000000E031500200315002001000030E5 +:104C200008100000000000330000003000000031D8 +:104C30000000000300000006000000030000000365 +:104C40000000000200000000000000020000000060 +:104C50000000000600000004000000020000000246 +:104C6000000000010000000400000001000000023C +:104C70000000004000000040000000040000002090 +:104C8000000000020000001F000010000000208053 +:104C900000003100000041800000520000006280EE +:104CA0000000730000008380000094000000A480D6 +:104CB0000000B5000000C5800000D6000000E680BE +:104CC0000000F700000107800001180000012880A3 +:104CD000000139000001498000015A0000016A808A +:104CE00000017B0000018B8000019C000001AC8072 +:104CF0000001BD000001CD800001DE000001EE805A +:104D000000000F0000000001000000010000000191 +:104D1000000000010000000100000001000000018F +:104D2000000000010000000100000001000000017F +:104D3000000000010000000100000001000000016F +:104D4000000000010000000100000001000000015F +:104D50000000000100000614000006000000060428 +:104D60000000FFFF0000FFFF0000FFFF0000FFFF4B +:104D700000000020000000200000000000000000F3 +:104D80000000002300000024000000250000002691 +:104D900000000027000000290000002A0000002B6E +:104DA0000000002C000000010000000107FFFFFFD1 +:104DB0000000003F07FFFFFF0000000F00007FF82A +:104DC00000007FF80000000000000001CCCC0201D0 +:104DD000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFFDC +:104DE000FFFFFFFF00000000000100010033020789 +:104DF000CCCCCCC1FFFFFFFFFFFFFFFF1000000086 +:104E0000000028AD7058103C000000000000FF00BA +:104E1000000000000000FF0000000000000002820F +:104E20000000150000000001000000020000000367 +:104E3000000000000000000400000001000000006D +:104E4000000000010000000400000000000000015C +:104E5000000000030000000000000001000000044A +:104E6000000000000000000100000003000000003E +:104E70000000000100000004000000000000000429 +:104E800000000003000000000000000000003FFFE1 +:104E9000000003FF000E0000011600D60000FFFF17 +:104EA000000000000000FFFF000000000000FFFF06 +:104EB000000000000000FFFF000000000000FFFFF6 +:104EC000000000000000FFFF0000000000000000E4 +:104ED000000000000000FFFF000000000072000062 +:104EE000012300F30000FFFF000000000000FFFFAF +:104EF000000000000000FFFF000000000000FFFFB6 +:104F0000000000000000FFFF000000000000FFFFA5 +:104F10000000000000000000000000000000FFFF93 +:104F200000000000BF5C0000FFF51FEF0000FFFF66 +:104F3000F00003E0000000000000A0005554000055 +:104F40005555555500005555F000000055540000CA +:104F50005555555500005555F0000000BF5C000048 +:104F6000FFF51FEF0000FFFFF00003E0000000006E +:104F70000000A000555400005555555500005555EA +:104F8000F00000005554000055555555000055558A +:104F9000F0000000000000001F8B0800000000006F +:104FA000000BFB51CFC0F00309B773A2F2A5595112 +:104FB000F90D6CA8FC81C629CC0C0CD940DC0AC4C4 +:104FC00045CCF8D58631618AB1CA22D83BA41818DD +:104FD0002424206C6F8981F7DB28A63DFEA981CAB5 +:104FE000FFA706A1CBA1E2BFD0E4FF43E5372B43E7 +:104FF000E8DF1AD8CDDD029507001BFDA1C26003D2 +:1050000000000000000000001F8B080000000000EE +:10501000000BED7D0D7854D5B5E89E33E79C393310 +:1050200099999C84106642424F4280A001078810E3 +:105030002CDA49081ADB54861F35B5A80352457E81 +:10504000A38D356DED9D03F931F2F78270297AD188 +:105050003B506AB1D7F6466EB4F47DD86F22B617CE +:105060009F6D6F0A28DAE23558F5562BDE68B5D207 +:10507000EFB3F5ADB57F32E79CCC24C1AAB7EF7B87 +:105080008D5FBBD9679FBDF7DAEB6FAFBDD6DA672F +:105090003CD22CA27E8E900FF10FCAE32E42C8D8CC +:1050A00074299E132D7A3DA922645548353643DB79 +:1050B0001A3769EAAEC4FAE43A329D1005DF0F13DD +:1050C000F86798F693F3B548AA00DA9F7557BB8D39 +:1050D000F438CE72954C883E134AB2B5CF1D843158 +:1050E00092CA40BF46E8DF876584B49C9E51FF9416 +:1050F000A8C3FF422450F0DA85F08F3964CE876E62 +:1051000042DED11B7353C38CFF46E2982E4F22E43C +:10511000FD44A4FEA94943DBC53AD610F28A271FF5 +:10512000D769AA5F9A46C86CA2D17588F5C9F99D5E +:1051300085713FBC77F0695DAE48C3430A609173E7 +:10514000E1B94C529E9943E11FC41F31E978304FB9 +:105150008ACE23FAF5037C96F539FB0F8ECBFB1331 +:1051600019FE9B4D888FBD421E74C53F8BCFBD7508 +:105170007798458087358F2C220827AE23362D0D52 +:10518000BF9857AC63707EC77AB2AD63707EDE2F76 +:105190001BBEC57BEFD4B577108990938A5112431B +:1051A0003EA99F524780BE8B914FE6A6E9B2684167 +:1051B0003B85271B5D803F0C1DF1E5F6337E7AAE03 +:1051C000B51AC84E9A8997908B33CC3F02FFC49D85 +:1051D000FC5377F527C23FDFE4FC43EAC752B9101E +:1051E000EB77E27B559D72C6337D187CF3FE827EA1 +:1051F00043F82F5BBFA17C6266E4133EBEE017312B +:10520000CF5F0BEF48FC414817A51F213137CE9BDC +:10521000AE2709AB8BF72C6521B0015F8FBBA0E3F4 +:105220006DF7742C7D26EA0D7781FC5ABF558E7878 +:105230003F452571A44F2B3E0AF3CEC0477271E45F +:105240003BA8C71E222A9D572ED0E83880A7872862 +:105250001C0D76FC79F518417E560A2B72E3301E40 +:10526000F1E7679483BB134DF5B2854FEE56486363 +:10527000B79FAD8BCE338124C720FE3E986F2C0E96 +:10528000641FC789AF5625F27C1CF4AF39568D7C5C +:1052900017D7EFCABC9ED4E07A5413F103EB490D43 +:1052A000B79ED6C064BE9ECC72DDC6D723E01F7CFD +:1052B0002ED695A59F13FE6CED6D4A34B41C863036 +:1052C0000399D7A5E0BA4A09398DEB427AFA554AD3 +:1052D00027A5A08BF22FACEF34E50FC7FA80AF28DB +:1052E0001F39D727EB1AC58B985FD6BE562FCF4AEA +:1052F000C3F93AD1E93A95413822741CB74E68BFD8 +:105300005F90F8EBD80EFCD747F9CF1F2538BE1AAF +:1053100082012EC232DA68025DDB7AE792CA6954F2 +:105320006D91B550AAFE386980F7DAFEEC6E447EC6 +:10533000240555363979058931363BDE84DE14F58E +:105340001388FFCAA1F43FF1450FADB78D8D7C07DF +:105350007129B9183F38F10378935C167ACA3AC3B9 +:10536000E7892F4E61F8CA22C78BB5AFDAF0057F07 +:105370005194CB123EAEC0DB8E5286AF078CEA272B +:10538000258390B2F24884809EB8D7D853032B254A +:10539000A73CF17C9C3FA732E9C2F94A9A092D3714 +:1053A000F3752D70CFF3BE0CE5CE86B2DC15005739 +:1053B000B5CB95918FF62600768590CE8446A89E33 +:1053C0007E91C19F8DDFB6240C9B7C6E6992EB931E +:1053D00030FE96CA27F3AE00BCB51794CFA43A2688 +:1053E000E462F8C2F500FC17F0F9F7DEF6354A6F13 +:1053F000C0DF0508BFE043C16F13A3C9A80EF53293 +:10540000923425182FB49544707FC13FD982A7925A +:105410007AC9F404291E66E138451586A4C27BE1E9 +:1054200038A9010A0EE261678344E979FBF2C9FBFE +:10543000919E02EE6697C4E8CAF76322472A62810A +:10544000ECF2771FE0A952C17AB70BE11CBF92249E +:10545000518EB6F3E7EF92D87C17BC377E6D44C10E +:10546000F580FDC7F92B84C61069E370DF77B38F31 +:10547000F15789BECF0D72799580230AF82AB4F1CD +:10548000D755AEB169BC08FE9A20C517E1735F75A8 +:10549000778D8A60CFEB4F61D92A9155549F98A49C +:1054A0000FE72B7291F41FCCA75719FB91BF5770D0 +:1054B0003A14D575DC2601FCE1906CE27E54D4BF31 +:1054C000BC01ED9CC0E92B5FC7129E9F41FC8E5F23 +:1054D000356022FF95AC4CD6A01D1A6E4E9A385FEF +:1054E00081145F817014AD248BEAE07950EF72A1D2 +:1054F00008EE519204E9E79BD7178DF991DE979357 +:10550000E516FBE4AB2E26A7B0274693FE345D1FBD +:1055100070333EB9B7FEB8F7163FBEE7A378994897 +:10552000EAA27A25F24394B8601D3ECE0F40F7DB25 +:1055300091EE7A73D2E542F9A8E8DA887002BF8F5B +:1055400043FEDAA398618463CF6D6A6392E1E52438 +:10555000E23728719C18F01FF2A7C4E6BDD4A5D08D +:10556000F9DC13A10EAA658C4E9206A04A2E073EC6 +:10557000847A68258944A129C8F116205DA932687A +:105580000F3AF056B4B27B23E249AE22141F80A733 +:10559000BB11CEDC867ED4C0245C9E24489A2D723A +:1055A000D34BDF8271B71C73474C62E143027C38F6 +:1055B0002D8D2F7F25C85B867D79B47624AA17E4CC +:1055C0006BD9CFF633B13F00BFDE8770C93AE3D75E +:1055D000D1EE435A8BDB7805F597AC4B884F015BD6 +:1055E000A7BEC9443E7B0FC702BE7677CD48211EB9 +:1055F00001B791EF32F94DB9A0AEE9D124EE47746D +:105600003F9C9DB647BC15124959D6A914FB6C7531 +:10561000D268BA70BE3BF833AD45A570C8B03F90B4 +:10562000CAF43A61A72029B0B770991F222DC19200 +:10563000C479443FD94F525EA0DFE68A99C46A37E5 +:10564000CBD80FDE41F1F8B07468BFEC7871CCB7FD +:10565000D40EE7A8FBF965E3B50CE79EA1FD64F263 +:105660009AB02701797D38C0C569FA80BD74D80524 +:10567000FB686BF16E13F9FA6E6C02BA761046771E +:105680006248363DE32E96A89C3FE83218BF8498C6 +:105690003DE521D7A4B0BFA88FC4173ECE577B49A4 +:1056A000FC55E42B4F719CE277CB58D2857A72106F +:1056B000CF684F228F542CA5EF6F9976B38972ADC6 +:1056C0004CD067505EE07CB545A3BC639967135D21 +:1056D000676722497EABE0BEC1C6D78C182B055F39 +:1056E00056303EEEAC5C9C4BF0B9D64DF5514ED7E2 +:1056F000A329DC4FD2FC6892A5D3709D12A5C316D6 +:10570000283F7471BEC47D29E4A3CF05FF097E1331 +:10571000E38F2C770514CF4584ADA304D89F507E2A +:1057200064FBFD788EFF09C5032EDCD78D985E8B58 +:10573000DB4B5963E4492CEFCFFB75783985B34EC9 +:10574000477ABBA2635C1F5E387ABE70DA3F456B56 +:10575000E597ADF6BDBE12EA96F505E7D9DB7DC447 +:10576000D25E3A74BC7C61DF199108CADD76A5BFB0 +:10577000114C3D32492AAC2980E7DBBDFDCFA3297E +:10578000D8DE19AEA9077C052700AF22DDE5010DA3 +:10579000E9F23954D6C8B78641E54CE77393FE0168 +:1057A000AD1C50AC2E90C96668EAED771315EA5D22 +:1057B0002139E929E5C804FCE572FE10E374F59F80 +:1057C000D0500F6C9B979F671B3FC4DE0F88F18DF5 +:1057D000A61B2756A5C77F1F6C993ED41F721FEDCD +:1057E000EFEB87B5417B2ECC9744FD4FFAB41AA856 +:1057F000EB7570B02FC57D2D0ACFE0AF7E74768338 +:105800005CCDEC6DB9BAB38F95323BFF550DD9EF36 +:105810001B24941BD8EF914FC47E2FE61991DF46CD +:10582000FB1E7030EC4DE44EE28BA03D70C615FFC0 +:10583000B204CF5B96B61005F0A12C6DBAB11DCAAB +:10584000B112895279B9444A7ED7C5F916FA6D8FDB +:105850008D4B623F794CF158846F7B35DB6FB3CD54 +:10586000BB25614E2AB7DA8B72B7A6537B71A69619 +:10587000A95F4EA86352F91818B7DE18A767F06B36 +:105880008C3CEE62DBB85F20F13BA5B143C7279C9F +:10589000BF25D0C0282F3E7F331A1919F8DE527762 +:1058A0000FADEF597E7308F150302E3AC305FCDE80 +:1058B00003EA24560DF59CE8A3280F0F6F5A58E30E +:1058C000077928F0441FC5F6B9F7D5D53C85F529E9 +:1058D000885B429E9196F79A006F0BE017F5E2E61F +:1058E000445FF8156A8F3F4FCB1D12B39776213F67 +:1058F000A39E95997D955301EF59E455934DFADC9C +:105900006B403FAB7F23045282FB34171DB09BEEEC +:10591000433E2B6AECEA457ACBBAFDDCE0C4F303E4 +:1059200012B3179F91745AEE99CAD67BAE7FE2B03C +:10593000E7844E58079E2B44FD190E3FC219A94417 +:1059400038A1DD02A702EC857C5FB06419A59FBC7D +:10595000949D33C932629313596F12E787434857B6 +:10596000E7F961104E251E6A82E7DBF24077C27EBE +:10597000B84D311B63F4BDFED0628B7D558806D1D6 +:10598000C5967E73617DA80F2A437E2BDE34573C7B +:1059900085F3E53476A5140A8749E110FD3A02AB98 +:1059A000295EB2AEA3D17E7EB4ACE31929C3390817 +:1059B000F981CA5F15C81FE5C33E6D9145CF6CAB39 +:1059C0003A3FB9DB2AF76B68476FF7BFDC89FACF3C +:1059D0008C48914906CAEFCC6306CC93132898698A +:1059E000F5337FDD537B5AB29C6FFD95309E85DF8A +:1059F000B69DA77C0ECE5FE09C7F717D69E6F9DFE6 +:105A000094A85D43DE443A7839DE3AC2BB295E9DF4 +:105A1000F0887E6E29FE9E156E6F39F32F0CE2B36F +:105A20005AE0B3DF86CFF3D563CED2EF223194DFD5 +:105A300056FF4C7D85052FAA9BC94F9527AABAC74B +:105A40000E85FB7CF55CB679DB0BECF34EE57C0D4B +:105A5000F38E755F8C75C2F62387FD1EE4B0B455D6 +:105A60001F6FBC09EDF7722982FCEE8B05CD9C20DF +:105A7000965BA99F30A7A22BF61583DAFB741F80D3 +:105A80007D2D69E23ED0E5A27A2B87DB5163D18E72 +:105A90002A45BC137AEEF4E9E4009E737FCCE59FBF +:105AA0005458ECAA328487D9554EBC1052ACBF96DC +:105AB00063D5BB26EBCFCFB72BAA394310E3DADF90 +:105AC000C03CB71E53C866AC7E006F5BCE152FFF7F +:105AD00016CE67B08E5BF17C06E54A120B62E35985 +:105AE00022D523DC67C9F1E02C0BDDAF70737F4F4B +:105AF000A742ED2113FE4338BFD2A5D8ECA35BF635 +:105B0000D8EB3793C585B8AFDEBC4B216837DCEAEC +:105B1000D847E6B8995FEC16D2D481F46EE7FA76EE +:105B2000850E5B2998D8EB7EF4C0ECE550BFCACD5A +:105B3000F4FD1B095899270DD76A7F528D42FB6FE0 +:105B40007B665DF35982FD931D45284779CC9E7590 +:105B5000F2C54D9D76F84682DF09AFB0B7B3C121DB +:105B60001F74D1F3BB73DE659CDF05BD5AB4E074CE +:105B7000920B76969795662DA1E76BF33FBDC956BC +:105B800098E7EB28F454CE9BE630BF75D34554FF1D +:105B90008DD0EF5B6ECE4FE7D96F63967E9B0B92F5 +:105BA00031D4DBE21CE4D59A282E5C323B5F6C0ECC +:105BB0008DD05E3E7CBB13AE4579B02F5C34143E75 +:105BC000B057B6A1BCDEE98E5ECF9898C1E7417CA4 +:105BD000BAB164763AB55BE0FD0DB2BFD305E379A7 +:105BE000FD3DD47EF11A763B7E036172482A08D5CA +:105BF0007B3915F676A73D931CA45F8ACA51908A1B +:105C000018EA097F8AEE63D5F29BFD16F91574BF79 +:105C10003D047A654C763D25C149CD0FF36A5C3F62 +:105C2000B8785DC0F14E97AB1EE5E17630B55B66A6 +:105C30005AC755E9B843F4C107D03E1BF141083BB0 +:105C400057454288A7CE040660D0DF1F5B88EB6E05 +:105C50007DD64D504FB52A4D04FD38660931D04FE1 +:105C6000EE2967ED9E93EE02A9948D8BF58E70FD63 +:105C700001F44F1C72337F10D8F7D4AFE0F19BD101 +:105C800028D0B103EC8A3CF457FF038B8BD4F8E3A4 +:105C900071ECE70E352A783EF9F7476E6AC4FAEAE6 +:105CA000D0E5B207E67D828F73F6FB8FCE26005FCC +:105CB000C70F022445CF1B4915CF1BAB7BDCD1247A +:105CC000C6BFFE3540E75F7DE896871A103F3FBAB2 +:105CD000D4788DDA03AD941EAB1F5FF21F265F8F61 +:105CE00006F468DDC8FD8B6624B404BAAEF3901BDD +:105CF000D1BE11EB17F8D38C2EBAEFAD3E9847FD0D +:105D0000B283722CC3FBD0DF03E5E20CFBDE19AEDD +:105D100087DE0CA88D089FEB60EF0D14BEEE6B15AF +:105D20005C97ABB889BC0AF33D87EB63EFD17DC1CB +:105D30007CD8959C04ED6F3EBC4F2D9B86F3EE53B3 +:105D40005750BFCC468A0701A776708789FA4B2B3C +:105D5000D7CB706B98FFAF3F08F6C3F30D07DD2973 +:105D60003C1F4149CF495E43B29DC3611BF7BB80D5 +:105D7000EEEB395FAEEF5947F5FBFAEE2D6FE3F925 +:105D80006AC361BB5E03BCD2B8E79A53EE4803D640 +:105D9000FFED7B4103E079A3EFBB41C43FCCB35C93 +:105DA00005F95174BB5CE0F8E7F2878E47C8008DB7 +:105DB000F36DE8BE87CDE7D09B6FE03FC243E3A61B +:105DC0001ED91E372507C78CEABCB6E607EF3D682B +:105DD000C27C6F1EFAFD83181759FB973F3CF84DA4 +:105DE00094E79F7875D4FB1BBEFFEA83DF003C9EDF +:105DF0003DEC91902FDE7AE27B0FDD0FF5B75E98D8 +:105E0000321355912133797EEBD13F151A304EF381 +:105E1000130BC6E1BA9B1F9B3F8E0C6377BC057CBE +:105E200094F458E14952FA198761BC71503DC24B54 +:105E3000073D8EF61C9D80F09D7DDE1341D9DC0070 +:105E4000CF509ED777AFA37E52ACDF05785DFFC8F9 +:105E5000DDD4AE188A5F73BC14A2FA673CBACED701 +:105E6000F72C59786915964AC4C0F1C800DD3F9DEA +:105E7000FD369C043A5E949D6EEF910F54D48F1BB7 +:105E80001EB987CDEBA0DB59FCC7DCA174BBCC41AC +:105E9000B7F7C8DA7FBE1F1B7BC6648CEF8838F764 +:105EA000BAC7AECECD1497B7E237350AFCAEE27171 +:105EB0002BBF1CBD4A46393BF42F0FDD5F80F4F544 +:105EC000441A90DE3F786F0201BEF89D327003CA1B +:105ED000DFC0131E7D3FF459FDC429BA4FBFF5D86A +:105EE000AF5483EE73602A82BDF71619FCEB43FBB7 +:105EF0006F3D8F136C3810487982693AAD4F2EAAE6 +:105F00003782F439F50FAE4F327E5F9FEC5DEACAFF +:105F100040B776B98CE9CB248B7BAD3BF01B95F871 +:105F2000EDF47455231DCF5C8ECFB3D151AC5FC758 +:105F3000F5CFB1D0F30093D36CF2F8D63E8F8CFB43 +:105F4000A0A0EF5B3CBEBA21E93A4532C8A9B06FC8 +:105F5000887BD9B07472F283E994E3E4E8E2F52334 +:105F6000AFE3FCF0D4241B745C27BE3686410FE3FC +:105F70007E1454A9BFAC43314E99C8174F2B643FD0 +:105F800074690DCE2646067F551BDA7953D275D932 +:105F90001FA3FE7BB940A7E73267FC5A81E3836108 +:105FA00081E7E88B53C6F5E3BE2831FF6E47EF5C0F +:105FB00082FA1FCB528C5FB5CC9A543ECB724ED333 +:105FC00023349E23EB464DA6F1E596D9F4FDA1E7D7 +:105FD000B6A6DFED83FAF6506104EDFD80FEC350F6 +:105FE0002F39FFF3DB56D9A4E7D14EFF26ADCC7293 +:105FF0001EED34B29E877F225BFC487FED396E70C8 +:10600000FE02E7FC59CFC3BF94013F77F3B8E2909B +:10601000F392EE97AD71BF7EAEF74B486A2361F6FF +:106020004D4CB3FA9D1B077AD18FF1C0A2D3FB96DA +:10603000C33CB9A48DFA9961D7AFFA70D670FC6CE5 +:10604000F7337B2466079118F777A7E38E6C3E1E23 +:10605000FF7D270DCFA32BE09F7BE7F4D3F8D86714 +:10606000604A05E02B5D6A6C4278262EEB7B78391E +:10607000E5878FE6F71EE41743F08B693BE7771A55 +:106080009FCC39DFAD0C9EF3DD4A86737EE7277423 +:10609000CECF4FCF9B9F69DE2176F328E37CDF5E76 +:1060A00012A4F668E0B48BEA11B336EA52904F2797 +:1060B0009008E6029D71C5CB703E65A979050E1B5F +:1060C000909B3E83765D00F15F6595D7FF67FDC6C7 +:1060D0009729A3F01BBB03BBE8F9CE7B9E7EE3822E +:1060E00031D119AE08A2BB7AFECF2DFEE245EDBE3E +:1060F000F9CC5F4C68F068A9F2D95613FDCBE3A345 +:106100008FE2FB2FB4CF9D8FF1958289AC3DA242E7 +:106110003BDA732ADB0F3C72D44479DFB3FC6B1596 +:10612000D48F1922FD689F093FA6A7314EFD97A77E +:106130003CF1EB707DBA9EEC451155435DD40FBC2C +:10614000C0EDA7E7D1778AC1FC7365C7E30ECC1712 +:1061500051D05F4D68DE88A78EC5F9EE4FE8B4DEFA +:106160009908D1F6AD89282DDF25B15B141A176483 +:10617000F1E63DDCFFD1AA9255581EE7FBF5B30AC4 +:10618000F35BA54B961F71F4C5EFED598170F97D56 +:10619000D4AECC065747A26212CEB73D1199847097 +:1061A000DC9BA8A6E55657CAC078D4B7DA8F6CD264 +:1061B000007F3E777708EB1D6DBD9BEAD0BEE2FB0A +:1061C00096DB983E49B69C63131C0EB582E5CBA9BD +:1061D00051D6EEC3BCC50C7CD69E7E9FE637A93A4D +:1061E0007B7F8B2BB37F7D2B7F7F73EFD3745FF629 +:1061F00057F7537E0AC2FE87FD36F7BE4ED07EBBF0 +:106200005FE94FE17ED9554222B88F7B5A2A276138 +:106210001ED1E6DE174819F4DBC5C709CC1BA0FE6A +:10622000CEDC962ADAFF7E2FF912F37B139EE7C4A9 +:10623000F240EE5708CF7332F66F82FA3EDE5F5BB4 +:1062400005AC0D76747ECB65B4BF6C987D3C0F6E4B +:106250001FF20BD9EBF4C733BF7511FABD81AF8BB9 +:106260000C7F14EDADA2F2C25A9A0F517101CD9F6D +:106270002D5AEB5F4E4BA3F0266CDFE1EAEEABC587 +:10628000BCB53C89E6AD1519155F61ED97DC82ED73 +:1062900047953C0A8FEF827ACAC7BE09224ED74F74 +:1062A000E374C430246B5C6F7B55592E19469FD024 +:1062B0009D4DE8452A8F3EF48958EAF98E7A91E39C +:1062C000FD3247FB058EF699B67A0BC737A95659AA +:1062D000FCAC5FA6F06EE3714BD2048C0D7219F02A +:1062E000B27A6F70B376C6CFCA972D7CD539C2BA51 +:1062F0009EC3200EC67374CBFAF0FF345FBA5E46BD +:10630000F146FD23693D516762F2C1F6B9837A22F5 +:106310004E32EB8997506E87EA89CADCFE61E0DA7B +:10632000C1F54207D713B060EA477997C45FA77AEF +:1063300080EB8BB43E88AC42FD97D7A1CD97E75256 +:106340007D40E363B07DB7A2DF45951849FEBBFDF4 +:10635000835AD477C2DEEC7031BDB183CB0196A5F0 +:1063600081A1F66640EFB3D99BE2B9C5CE3C3F7A36 +:106370002DE860F48212E995C7F5C148F4BA07F038 +:1063800042A630BCA0F3CA57E78B1AC0F7F95CFFEE +:10639000F8EA0B6B0D4B7E653EA797AFDC4E5F4F67 +:1063A000C867A7B793BEA48EEE0382BE802F4AAF04 +:1063B000C2D40B19ED7FB5652A9377C01B96811067 +:1063C000A9895AF486A2EBFBD02FB66BC9FA8D0AC5 +:1063D000E6F98DC99F81789CA2323F11E9B2EB05A5 +:1063E000312EE88D292AD0DB5BD0449869C8E25B66 +:1063F00085292F89C23841D867BC306EB03A45E252 +:10640000F0DCAFA74CCC13924360C1198C3E088FCF +:1064100058978A7A0FEA92C6E23AC3F0ED6C35C318 +:10642000FEE6DC77049CEB54A6FF4439127F8B7D9B +:106430004FE0D557117165B24B3A701F028076F26A +:10644000FDED1EBE1FED7CF21E7A2E6A50D9FEA60F +:10645000159B04F1ADC99152940353AE9C8FFBD2AE +:106460004E2FEB27DE17E32E1DEC0774CA306F2387 +:106470005FC7186E9F3BDB97F376B981E72734F04F +:10648000FC8462F50CEA7BB9DC7C9BDD2721CE3CE9 +:1064900085E588578534A50E94A6F5BF58DFCE272D +:1064A0005FA770068B9B68DEDFAD2AB34FD3EBE0AE +:1064B000EDB0CF2DE7EFD5201D09F02FF0E57A954F +:1064C000E9330FEE5F20975EBE0F8DC4DFCDAA6E5D +:1064D000D36BA2FD11397A876A894774C4D6F23822 +:1064E000168B6BC91A8B7391B621EBFC07E45B85A5 +:1064F0007499AED274BC76685EFD907C8A76ECD7D7 +:10650000B2B4318AAAD91373E45394D9F3293A1D4A +:1065100076F1F99E4F466B179FEFF96318BB789F92 +:106520003A0ABBD8EBAF0BDD4C3E825D7C51F46D7B +:1065300009ED6272CBFC9F87304F22FA28D6FD0509 +:10654000D7CDAF47BB7716DF17C8BAF9C8F70573C1 +:10655000D8BE70485D4FEDE05A2DFA6F08DFAB985A +:106560006C897C1A8B46E9F6D396593F895219C734 +:10657000E2F56D79D7E8346EEFE08F67385F0A3E59 +:1065800010F1FA8F6B7CE7B80FBA62BF607CCBF476 +:10659000E5A7B59EFFA3457F83FC3B38DFF9E733D2 +:1065A000BCAA66C8CB183C975708FE4F6A8B2CFADA +:1065B0006C73C527EEBFF9A33A4C3EC366948F8F28 +:1065C00032FFE8FD37AA87E90BBA5FA91C6F6D7926 +:1065D000378F94CF90EBB1C0AD861CF90C9FB29F62 +:1065E000C3F00CFA1B0CCFA7E8E7B8283DEF45999C +:1065F000E6CD962FE02F8DC4A85D179608E2A9631B +:106600005EA40BF56E4789A46E2A4DDFB710F3AC7C +:10661000F24CA4FDDA42AA84FEE4B6630B689CA4A3 +:106620004369AAA7F1C43C49DF5F3A14EE6B3C6CA6 +:106630003F76B76C99746018FF999BDFA76AD39F68 +:10664000A470E5CC28C8C3FC88D6DEAF1F73A37D39 +:106650001A2A2C457BA8998F87495DBFB5C45BC1B9 +:1066600010AD47F8DDC512C17DC3DDB29DCE371236 +:106670007CB51E1787EF9E49078689D37EDCF0091B +:106680003C2EF21814AFEE96AD747E8157058D1D29 +:10669000A0575BA54CE30F4ABF87DD478BB0FB1DBE +:1066A000428FC895128D07827EB99DCAD12EBBFE3E +:1066B00051FCCCBEBCD4C3EC00B7B789CAA7C89301 +:1066C000F7C7DBE83E951367FB9558AFE0931CC511 +:1066D00024F8BEE697693C56E57CE1BE3415C3F567 +:1066E00074CD2897905FFE37E7C3CE28AC0BCEC998 +:1066F0009D7C1D5D3CBF4CCC4348F9B797617C3312 +:106700005A3613FDD4DFE5F8D7889FEA4F0DF180A4 +:10671000F6CDE98D6402A0668B275040F9B78C94C2 +:1067200021FFDE5E73FB1568FF6A86E9C9149F18B6 +:10673000AA8F8817E177D748DE72F4BFCD60FA8858 +:1067400084AA46884FB0B8ACA083C0BF5C2933FC94 +:10675000E3BD62BC371095E83D114187417B7EABBC +:10676000F35E94C1F3C819DEDD7E9E9F4DE47B96F7 +:10677000B9ACEBDF4EF940ACFF5F3C3CAEF23FB44E +:10678000FEFB3C6CBF2347A77E7B1980EE8D4A1130 +:106790009A73560EFC6D3947E7F8D9BD18C1475AB0 +:1067A000FF8E5409CC73F47F987E83F087467D2F4B +:1067B00084C66D45EA0321B7D9EE3B94F6B3BC29F4 +:1067C000E10FCC6D61FE4023CAF8A234BAE9366904 +:1067D0003AC60D083D1F4E58479266296DA7FC2109 +:1067E000FA1B6DAAED1E4778956A8BE78F27CC2E92 +:1067F00099402CCF619CF13C5F6BBCE3B988D7A971 +:106800000EBD2D4A67BCEE8F822E225E3742BC4FF2 +:10681000C46F7790E8071E8B9D2BF0BA79EAEC8A5B +:106820004CFD055E0B0D93DE571A0775DC9FD5797D +:10683000249222E85D8AD37B0EA49AE56BC93CAE14 +:106840002BFAFB35A11FDEA5F7DF54D26F52FDE511 +:10685000A08BA0476739A307D2310CED799C8A9DA4 +:106860009C1EDE30A3471EA703A9E378741117F21C +:1068700071709E9D2E2AA7433ECF43F63AF0AE722A +:106880007AA88EE717694C1F9E6F1C75AAC6E53D56 +:10689000400256BA10BD60D8B8FA20FF9EE77C735C +:1068A000C47C7E986FE247982FCB7B4EFA5FCEE98F +:1068B000D36130FA7454317A6857129A2FE9A427B9 +:1068C000FC3520FD42BC1212F4023391E6A7C51933 +:1068D000BE35F80FE936AED14E378D58EAC3D049F0 +:1068E000DCFB92B4E8B51AAEE7152FF56F69837C2F +:1068F00075A4570558B71413EA5F7F0A9349E0BDA2 +:10690000A2BFE452F8B7569124EE7F4565FB99FF8C +:10691000158F7A96FE5B0C76DF261B7EBA122CDF73 +:10692000617B4223A929D9DF0BAAF138E625E95179 +:10693000BD468679430D06B5A383D50C8FF9216337 +:106940003FDA23FFC8E58572B4E5BE95DAC0F629C3 +:106950002DCE4AB55E5D8EF8D0E24C6FAB91DAD7A2 +:10696000657C6ED8F1E81C273B9D2D7875677F6F9D +:10697000B425E66BBD3CC93A7EB21EED2CEDA49B5E +:10698000E6B36AD570BA45F8ABF542F48F6BD51112 +:106990003F2DFB6BEA593DB619DB7B905EA83FEAC1 +:1069A000D83A7387E44DD9D747FFC439A42C8D1743 +:1069B0000187937FFE56F0B399CBD37B0D845EA401 +:1069C000CCD66FCC3999A4D08F39AFBB93CA5FA511 +:1069D0004430CEA1CD03FD06FC75FFADCFD13C09FF +:1069E000D5D05DD67BC1BD1AF367C2F198DD4F9556 +:1069F0000DD79280B59DE507831CA534EA273CA2FC +:106A000061DEDA56B92FCAE584E61B6EFDE03F343D +:106A10001A0F5DA5527B92F877D9F4C78D9A92F13F +:106A2000BE3AC6EB24CBF950EC13A73CF13E945B85 +:106A3000716F430D119B1F5EF8C39D78E849101ECE +:106A40008723D4DEF821F7C7FBFB888EFCE3EFD366 +:106A500075E41F7F9F91CFEA917CACEFC7389E828F +:106A6000F1B310F573FE2861D0B22B5141787C8DC3 +:106A7000C7FFAAF9FDF128F7F7D7D3329988D1E7F4 +:106A80000F261A69B93711A7E5FD8955B47D4FA2C4 +:106A900089D61F49B4D0F2FB09933E3F98E8A4E59C +:106AA00043892EFAFC40620F2D0F250ED2E7DD89B7 +:106AB0006E5A7F2C91A4757F5F43BD8BC2EF3B83E1 +:106AC000766B2002EBB4F2FD4A2FF5DBFBB91FFF1A +:106AD000A9174F6988A76D91C5C3FAE92F3A6C973A +:106AE0009F899DF6FBA863EAF36DF5EAD345B67A74 +:106AF0005EB4CC56CFADBEC0365E4EC54C5BDD6BD2 +:106B00005C627BDF13AAB5D54BCDCFDBDEFF4CCB70 +:106B1000625BBDA4E93ADBFBE357ADB0B587E3ABFD +:106B20006DED55F782698EFC3F81C513A775DF6E49 +:106B30006BBFF0E0376CFDA77BD93E0F7C938FF1E4 +:106B4000412542E83921D0075C8FF9935526F51F7E +:106B5000437B08DBE179117F8FFA93C5FD5C788F69 +:106B6000FA95E53EEE773E7D37ED27CE1370BE9B5E +:106B7000EE45BDFE88DDBF25FC4855D272BA3FE028 +:106B8000FE48BFFFA1C9F4BD00CF3BA9E3708AFB5B +:106B9000542422D3F389681FD46F55EC1EB04AE405 +:106BA0003FA2FF11AF9BE3FDCFA949A85BF0306581 +:106BB0008FBD3EA9CB5E9F7D92F517F559C7ECEDD1 +:106BC00055FCFB364496691EAA7672223D0F127E52 +:106BD0000F54E5F9312BBD3C0E9CE89EFECAA4344F +:106BE000FC3EC0B76EB92F2842323E905B8C13F941 +:106BF000405EB15423B01E5A370A74DC2F4E5F71C9 +:106C00000CF3F4845D975301E35AE0540D3B9C3937 +:106C100015F6BAD37EBAD1EBC87B1BA51D3D5ABB76 +:106C200069B7F81E0ABFBF91C3E70E3777F5A27F99 +:106C30003DBC52A7F9CBCA342986FAB4A352AADFC5 +:106C4000877632D4B10CAF4D6E44FB257CB8F4107E +:106C5000DA0B979D4BD5A03E0E37E933D05E78D145 +:106C60006BF0EFFAC4C3E8270B1FDEE1AA85717E43 +:106C7000ED65F732C20D2C3ED4FA188BE73CF5E2F5 +:106C8000B53AEAF5770ACAA99E38FBB8278A7E8CFE +:106C9000B3F9EC3B0B671F9FF333E4FBDF278EE573 +:106CA0005BBF8771F687BF9AADC0F8670FFD6AB604 +:106CB0004CF39E93B6BCB6751F9E988DFB82594BC4 +:106CC0002AF07EDA065D25346F11D78B7BDB4A42D2 +:106CD000FDA3BB0BD50E1CBF709CB41D4B5F4EA912 +:106CE000ED3E05F07F29F5ABCABCDF3185F66B7D43 +:106CF000DA47C7BB7D127B7E7B5E213D07B4E61978 +:106D0000AD7EDC9B4AD9F9E3F62B4DCF046C7F7145 +:106D10005CC4847A9B0BF401B687098DC7BF5F4AB8 +:106D20002A4A417EE5F9FA7CD413033CEF409C5B90 +:106D3000BD3F4F9200D6651063E8D70AE71A93D695 +:106D4000BBE6637DCB3C56D77FA7F7A2397BA7D4A0 +:106D5000B4631995C178570D8CF7FE6C6906CA416A +:106D6000710ECB1B157184A32F7A18DC2F9650FB64 +:106D700039D0EF62F7653F00EC215F10262F0199B3 +:106D800098B93309D995A8A0F0C0F368011C5EC674 +:106D900016B0EF598C0DB17BED81A5603F58F52EF3 +:106DA000FCEF658DD383DA35915C7ABFA25432153E +:106DB00058EF61DC27617F4925343AEEFD099D9645 +:106DC0003F4984E8F37B13062D8F2422C3FA319DBB +:106DD000E516871DB37B1AAC02E6DBCDF342FE500D +:106DE0002999E51765EFBF37716C4CDD242EFC80C7 +:106DF000BFE266168FCDFAFE46D78D8B81BF3CB7BA +:106E0000C9B1FD4C5F86ADF71EDB9578180F8D0379 +:106E100077F7D4619C11E4CC85F21C965DB28E723A +:106E20001422DD286FE150970BE32CE2BE05B54B31 +:106E3000A0E1C7C5EF1ECD457EA924DD08965A19ED +:106E400027284F734BCA37A2BC9269F6E7875D12B9 +:106E5000CDFBC7F16AA1FC8637F606EA7939BFDABD +:106E6000FD4378FFDD1E8F8172BBEBC93FA9189FE0 +:106E70006E7F59D5D0BF163E7286E631B74BFD2ADC +:106E8000E6EBF87DEA02CC0F6857E353D165E5F7EE +:106E900075B5637D7730FE30B6E3CDEEA7E03055B3 +:106EA000E831FF09DB551F31EB8B617EC5FC32AE4B +:106EB000B78E48EDDA65B47D3CE653FDD9AB2EE8DC +:106EC0009C07EDC80B34DFE0C3B628D6F358DDBF0E +:106ED000F92F6D26F4F7F8989E207E267783751D8E +:106EE000EA19E2E9A21C7C4F66EFC1418496629DDB +:106EF000EB8EFEE967E331BFFD88AB1BFD4DE1235F +:106F00003B28BE513FA13E3A9C38A6B709BA5BEC7C +:106F1000F5B9F8BD24E8A7265D49FC0EC95CC2BEE0 +:106F20003B171E881A1B917E49258229134D396C07 +:106F30003F9CDB0FE358F4F95C997F47CFF11D329A +:106F4000FAC926A4DF56165708AFEC57D10F7FB801 +:106F5000DACC990ECFD72C2F9FB911E8F4928FED90 +:106F6000572DC4CCA943BF46818FDE471079136FDC +:106F70008A7306CF9B58CB2F702A9BD8FD8F35A5DF +:106F8000DD8533D1CFEF65F750D6E4F17A9EBD2E83 +:106F9000BE93755837F3F2A15C7F78C704BC07B184 +:106FA0009E74DD80F71EC8CFDD04F5D5EBBD73738D +:106FB0003F0BF575504755BFAE67C6E7711DEBB681 +:106FC0004A12A2A0D6C7F0B0BE07F8C98F720C0A49 +:106FD0000354CDE168D78532C6DBB71C59E0BD1438 +:106FE000F8BA2CAA4B40FBBD39FFDEAE95405DD50B +:106FF000A7921958FF25E5B335574AFCA30EBFFCED +:1070000069B49CDF7B28C2F1C7B5639E5E55A34679 +:10701000EDD0422946E340E4B844F52DB2C03CC06F +:10702000B73BAF8DC68BFEBB5DA2E76C0C5FE27D0C +:10703000882A991C93A1DCAD02FD302FAA43A6FD3E +:10704000E079A7928F74E96279959D4C3F5F7CC48B +:1070500043CFB5554DD15BA9BF409F47ED9C096417 +:10706000F08FE6DF7E86EBCB393AA991E1BD015F77 +:1070700029BB17DA78CD1AEC3771F9D267A2067EF0 +:107080001F8A7D6F89BCC0F607DF96D82ACCB376FD +:10709000FFCA1FD948F05E7BED85B7015D7ABC8CD5 +:1070A0007EEEBCF8965FA09F3FAF9CD0F6BCF8EF99 +:1070B000F19EC6C058CDC0F8435B3F9CBF73B13D45 +:1070C000A2231D2F45FD817833172E88A2FE53E39E +:1070D000B7A17CFEF3E685EDDA5C8AF7891AE0FD5C +:1070E00041DF428AF79E8DD1F1BAA53EE7CF601706 +:1070F000D0B8EFC2F628C8A39C77EF1A947768FF40 +:10710000299E8B7E9C4F385D587B5599A8839D5551 +:107110000D706CE4F28D8132D80FAA2CEFD781BCB0 +:107120002BB5ACFD9B301FC691D1EE6CC9C77581E4 +:107130009D8BEB9A2A27F7BBD87D33BCCF72B97BE6 +:10714000D917A6C173CF2412C1D0862F8FE9655FEE +:107150009E41F75BC0138DEF0F3CEB4F223E7C79D5 +:107160004D5D1E6C2F29A7E7C39C241B074BA47FF2 +:107170000EBFD7E7D217513BD45B61FF3E87B8F70C +:1071800047EB988F80761DDACF8EE70F96467B4BC4 +:10719000A07F4BFF22AA3F76FBB8DD56C2FCD27718 +:1071A000C6CC2BF0FC78C140772D9A1195E7FA9E5A +:1071B000C4723A79BB16D56744CB3B8AE53E1F6360 +:1071C000DA99FA8CF9541556771FA56135A33F8CCF +:1071D000FAEB6277B215CFCDB9F3BADD38CFB8EBA1 +:1071E000CBCF337E9BA2F9055BFD12FD7E58ABFF32 +:1071F00090BEDCD2FF8E1C9E57C4F589A2333E6E32 +:10720000215D35F83D10A03DFB8E0BD72F0A77800E +:10721000CA849DEF653DA2E3BDA99A4015B5E79EDE +:10722000E7F2EFEE9DBB10ED0F15F504BCBFD7CB19 +:10723000FCB20361D28DF68D1C8A12BADFF1FCC25A +:10724000663EAFD01798B7159D02E7CFAB26D3FCAB +:10725000C6C7AE2AAC457BFBDEF4F74D54F13D22A8 +:107260009ABF9E3AE1FA108C8E1FD54BE87E20DF44 +:1072700091A3A7C6A37CF729546FEDCC63F224D663 +:10728000BD92AFFB1087B75D61FAF0EE04BB8FA52E +:107290009ECB21C959C07F5CAF7BE22B299F7960CF +:1072A000CF334AD11F689A88578107AD582249AB1E +:1072B0009FF75C90F63FE463F388786BB6F8F39D34 +:1072C000393CCE3724BE6A50BC370FD2859D579AC1 +:1072D00003D171A8A77F5CCBE076F2C19B3E369EBE +:1072E0007ACE45E110CF0790DFD0EF22C7E9772CA7 +:1072F000D473326D17EB1D3CB70DB6B375BCA5B397 +:107300007BB46A88C9AB7AD84DED3E129207ACF7D0 +:107310005473D00E9F989633717F76E83A227D9809 +:107320009746CA999E1D2A8726B57FC43A3D86BDD9 +:10733000DD99CF3208F7B931B67508F94AAFA79091 +:10734000B6E37E42EFC7C9E43EF46BACE3F91AEB57 +:10735000DCC05700FFE603C918CEFF9638371C6122 +:10736000DF215DD7B383E78D1836BFD2FAC3B7D11B +:107370007C810DAFF84D09DE5F8F7A19F0B5790F7A +:107380001B277D5F39961A6FA4DF7F1E1520C0F77B +:10739000AEBE2A8CF6869FD3A7504AB9D9BDE43E2B +:1073A00037EA81765FEC77CCEE22511968D03EA89F +:1073B00057D576DC6777AB69BD8BF98ABB7DAC1E90 +:1073C000CD51DBDB2AE97E4FDFF7FBFEA91DEDACDB +:1073D00076AFA8EF6E37E761FFC851F4879A8F7BCD +:1073E0000CB447A07F14E5D5BCAE829E77DACB48BB +:1073F00011DA894F15B2EFEAB53FEED98FE7866F04 +:1074000078E31E9FE5DC7576ECAF27107FC6F14C64 +:10741000DB7813CE6F3C98BF07F12ADA9F2ABC8431 +:107420008E0FFD68AA0429EEBB01F7D1C2C73DD477 +:107430009FBB57B1CBBB28AFE5F2DC91D06DF72EE7 +:1074400055946FE433D244E5DA13CAB7C9B39073E5 +:10745000F5DC7892B4C4B59FE7FB7C9ABF26D0F6E2 +:10746000439CAE1D09638479CAB2CC73E108F34C26 +:10747000B7CD839A78F0BB66C3F8839DF7789C7A82 +:107480005194422FFE9C8F2F93F85773A0BEBABF22 +:10749000FB7214FB4579F52598EA5DC4EDEEEA83AD +:1074A0003B8E223B7EDD137B04E983F92CC8DF553C +:1074B0009ED88BD6FAF9CAC75ED4856333EA419663 +:1074C00047CCCFF1CD81C8E7B1DEBCAD4C378739B1 +:1074D000AF39F55CED107DC8F4DDC7379FDB46C7DB +:1074E000A1F3A9B43DBDAFC58935EF5ECCDF1C8EDD +:1074F0008E2376398FA29CCBA5420F1013F5C24E76 +:10750000D16EBED45E578C7675BA1DEDB3424FBABC +:107510003F7E1768A74FBCFF46E6F7731CEF9789BD +:10752000F7DFA3F69C131EA177B08EF69FFC67CF02 +:10753000A07D88F0ED901CE3E58BF148078E27ECE9 +:10754000FEE99B737E66CAC89F5D35B88F0F7C8548 +:1075500018FB09EEEB115FC4B2DF4DE77CAA9EF386 +:10756000DAF09CC6AF9F3E27213B3D9B5FBC62D8B3 +:107570007BD9FF95B0DFCBBE25DE4CEF894EE7F41B +:107580005B0527071C7FD55EB74D7EFF0EEFDF0A38 +:10759000BC53B3D833954CBEFFE6E00D6781B7F816 +:1075A0005385B7D3CBF47D172F17E84DBD780F6106 +:1075B00081E1A2F71117C0BB5E90D92BA0D4A05CCB +:1075C0002013D34FBFFB9F64EF431DFD1D0BFFFC3A +:1075D000D5573E47BF171292ACF14CB79FE5AF3A73 +:1075E000E16D0578315E7D0FC6AD3D43DB65EEDFB5 +:1075F000FFF698EDC47A6FA7DECFF0A715131AFF38 +:1076000073F6FB20C0E3D75A48B2E503F0BA88AB63 +:107610007F7478D693972DF35EC7E1518B49C6EFFF +:10762000F64C0EF2BC362D4EF3E63A428B87F5EF60 +:107630008F1E8E1B6C70ACF1B3752B59E038CEF1F8 +:10764000D2A99BF47CD8697C5C70D8F17117872330 +:107650001B3E5EE0EDE4DC67D8F993C70F3B0BE01F +:10766000BC9A819E220FAB53FB64E1DE39021DE51B +:10767000C0A743C70323D0D11470E89F2C1C8F8D63 +:1076800000C7C3829F42714A974F0A8E9F71BA64A6 +:1076900083639A80C3F864F1716A0438AEE170AC18 +:1076A000F5B33CD9CE0A9EC7CEF915C34997E56715 +:1076B000E77BD96F8F8BFBCAEDDFC925AF8C934673 +:1076C000932782FB00AE6B2439F93D7FEF758E87DF +:1076D000357BDD34FFF01683E5078F34DF2D4A5309 +:1076E000E170F9E8B8CF58E3DE23C1B3C9CFE25562 +:1076F0006B1F71DBD6BDFA408E23DFC664F875E0E0 +:1077000075081DFF3FC7E74E3FDBF747C2A79097BD +:107710004F0B8F23C967563C8658DED9C78DC7915A +:10772000E0F9D9A8F1B8A913FDFCEF81D9E62EFD47 +:107730003B3EB3BDBFF6EF7CF9B1E0F100E271145E +:10774000FAF2EF781C1E9EC7468DC74D1ADE9FFECB +:10775000BB7C7F3CF2ED3C277E5AF874CE9B0D1F1C +:10776000D9F0EA9C4F8C77CB08F33BF138121CA27E +:10777000AC1F2D3E1DE7DD4F0D9F8E79FF6A7CF219 +:10778000F1CE1B9F23C021CAEB46CD9F267DEF2063 +:10779000FF9EC194079A8F5F09FBFB89FA59B3E8F2 +:1077A00077D5E4E8B425D308D91664BFFF3585C77B +:1077B000FB9CF36D0BB273C1F1FAF9EB687E752C8B +:1077C00087DE193829457E5185793E8BDD341EE6EA +:1077D000EC779CE36B4D308FFBFBA3818BA1FFE229 +:1077E00067DD34CF31DBFA48BD655DF4DEA085BED0 +:1077F000EEA1F83E4E8C6D5518A769C80C87A0F312 +:10780000C9D8928FA6876299E99C8D4F464BEF911C +:10781000E0B92E58364A3A27297E0BC8E0EF595E68 +:10782000C0BE5F6C2818875B7CDA43EFD59DC247EA +:1078300073E9F796FE3108EF2FAE9FC17E8F4AE4C1 +:1078400057CA84E6A9AFD83E857E07882C5B42DF05 +:107850007F80FB7F86D049F017FF7DA971CB4CC597 +:10786000FA7B4EAF04457C385E82F0F4A8D10B7FE2 +:1078700000E31FBFCA1341BFA26749C39600F0CF00 +:10788000C9ABF35CD6EF361DE6FC367B19F38FF5FA +:107890003C1F5324CB39F6590E0FF4BFBE3F03FEF5 +:1078A0007A78FFABE32E9EA71F2D596CC9C3FA4F00 +:1078B00047BBB3FF4F8341DA7E32CB779952BC7F0F +:1078C000E3D2E1FB936563C4EFDC4DB0FE6E93132E +:1078D0007F8B82F1A783503EE78A3F7007F2718D5C +:1078E00046F998C89130C22DF0B040239DF8938698 +:1078F000824E0BC757EEC73C3F018F980F53813024 +:107900007FA42ACAF28AF2791EE89C4E6F7223CDB8 +:10791000B3EC12DF2F9E80FC01F3BF80FC906D7EE4 +:10792000316E814C522A8CEBF3442660BCD9B90EDF +:10793000F1DE893FCDFF02C2D7735CD237950E5D71 +:10794000BF532F4DDE63E79B3F71BE29E0DFCD21A2 +:1079500072BCA4D1D2FF0F412FED7FBEFC74106525 +:1079600018CAC9BBE28A01F35E23B3B8258E6FCD76 +:107970007FDCC7F9EB4DFE7E81DBF45D8071B45393 +:107980004CBF1CDCBFBA2493DC1EE7F797F6072B2D +:107990006C79BD4B1A66B4E34F1202BF84517DF57A +:1079A0001CBF84F6BF9ACF7F508D97CCF0E37A8CC2 +:1079B0007518D71CED3A04BEB3EA518E67941FF4D4 +:1079C000A357727EBD7A69AFB40ECA7D5C6ECF706C +:1079D000BD20FA2DCCE5F3A8F1566F8490F2DCEDD2 +:1079E0007777565039A771AFBADC7BEFC67C36D2B9 +:1079F000C6E69FBCF4ED668CABF6A82CEFF0D92F51 +:107A0000FA9298D002FC6AF3B3172C7D3F81796516 +:107A100063546332FB2E37D34FEF927845EED8B4E0 +:107A20009E1AA297DA96F0DFD331262FCE28479BF5 +:107A300038BC8C9F0E2617E7DE64A14F3C57B5D1AA +:107A4000E3B904F39F9D70F8CF963ECFFC62B00E71 +:107A50009A37F3EB4B4BF6E13A0A56BD9FC03CFB1D +:107A6000782ECB8B792F39F3615CAF58BF58E798EC +:107A7000FD174CC67C886B1BDD0EFDCCE4EDEA06E1 +:107A800087DEE6FD2BDCD135344EFB05967720C62C +:107A90002BA8077C4DC775C536054AD37816F8DC88 +:107AA000A946960FFE6E14C0BB62BF9FE6FD8E6DA9 +:107AB000EDBF03F9E85D7F2C37DFA2BFBECCE99AAA +:107AC000E657B6DFE17BB86F2D960D25D3FEB5A442 +:107AD000DE9D116ED563BC66D50343F48163BFD4CC +:107AE000A52E05E3E68DA4899627DD03B43CCDE9F8 +:107AF00021FA9F26A9C01CB42BEADD348FEB74D386 +:107B000092DC1596757CC3B18E5FF3FECEF996AD0F +:107B100062FB7636F958A6740722B0DEDF34BB6903 +:107B20009ED9F56BDDE6B5F0FEB2B52C4FE8FA262E +:107B3000FBBA0FAA4DC7AF44B8FE81C17502D8AADF +:107B40003A9FF231B53F5E4AE6CFC0DF8D3A8134CD +:107B5000423DBA38477CCF87FE8E619CFD93BC5076 +:107B60007FD34F31CFEE7FE5B2BCFD13F54B2EC76F +:107B7000D0D5CD7BC84FFA09DA59C3DB05F1BBEC90 +:107B800076C4E45D76FB7776A38BDD2B93532537A4 +:107B900058E4E5EDBC1C8AB76B96BA32C69D06F276 +:107BA000FCB4FDC45FDCAB32D9816A3ED38B57EFA6 +:107BB000CADC5FCD0FB0F63D99DB17F2F989DC4DD9 +:107BC000ED81AB1B33BFB75667FBE7E975FF753D2A +:107BD000E6099D94ECDFE3BA5167F4AFD1D93E7169 +:107BE00062FFEACBC388EFF52E1DEFC5EFCC8F9473 +:107BF000225F7D79ED191AB7BB84BF7F913FF6589C +:107C00002E945F797E454718E8D8B38C445C465A79 +:107C10006F38E17882CBBBD88760FF7B05F7BF0266 +:107C2000FC3D6AD46B7232F225B66433371FE96EBD +:107C3000AEA6DFB9DFEFD319DDC13E8697E3A7EC2F +:107C4000F6EED3B9767BCA49CF9B77E50C7B9E795C +:107C50008944A81D6E36E4E8A82F5EBACB9DFA1CB5 +:107C6000D45F68C8A1BF1B2AC61576EF898659EB79 +:107C700010AEF71A7224EB7D466799D5FE6D707FC2 +:107C800022E7F0130D8CCF5FBA6B566045867E7F7E +:107C9000C82D1D955FE3A5BB86979797B87E78950D +:107CA000AF4BF013DADF56BDF281832E8D2BEDF34F +:107CB0005EB32CC70E3F979393B1561FDA2FA007E0 +:107CC00026235F0B7BF8FF021C53D2540080000078 +:107CD0001F8B080000000000000BDD7D0B7854D5E1 +:107CE000B9E8DAB3F7BC924932339999BCC30C01B5 +:107CF0000C10601220848A30214442419CF00C2FE9 +:107D00001D10629010A2C59EF45C4E3310C0106D21 +:107D10008D9683D4A20E1195565B03CDE989CAC511 +:107D20000141E969FD1A5E9656D4A14511444D5BA7 +:107D300039E5F472F5ACFF5F6B65F6DE4908F4D8FF +:107D4000EF7EDFC5CF6F65EDBDF65AFFFADFFFBFEF +:107D50001E43368F256422215FC1BF29BD4B4236A9 +:107D600012329E90530652D35E40C8898AB9292B9D +:107D70000AE03951888790B912FDCB4B48929DFE9D +:107D8000E186F7639342F4FD078D84446F21E4C3D9 +:107D9000460B899A093969E87E7B828B90F0D38AF9 +:107DA000FF39DA7EE8F6E59B32B01BFFDBE3E8F350 +:107DB000D06FE5A2165ACBE0FDE8E1086D9049D4FA +:107DC000821F90AFE8FFD5DB1349343F5E27E7D32E +:107DD0000C00CF83BC0DD99C4A3BEBDDCF05800B5B +:107DE000E09935372564EB7FDE9FF0761739FC6B21 +:107DF00076C961733221F7CEA2E5E8DEE3E9BFBFC1 +:107E0000D758EFB15FA7FF9A5DDAF90C040F211183 +:107E1000A443ED4BB266DEF7EDD1E2C12593FA76CD +:107E2000DACF12A5DD3891D26149ED39B29A96FBCD +:107E3000532C88D7FD295E2C97101268473AFA8791 +:107E4000578EA2E3B72510691CA5CFEC84C8501F3C +:107E5000A5F79C5B7D6A781672BACCDFB9AF3CC3DC +:107E60000BFCE0DDE186F6DF96C973B497F7CEEC44 +:107E7000DFE2A6745C71DC002DC982AAD2A4F1B441 +:107E80005E7C4A2E9269FB797607C23F7FDE72A341 +:107E9000BADFAA95DAF9CC5F9AA8C1CB410E6FB9C7 +:107EA00085846D45C075DDE382A3E2F3ACDE5979CC +:107EB0007B061D677EED6313619CEAED878CC3E949 +:107EC000BC6EB7B3F94EB77B71DCA50A9FAF85CE08 +:107ED00037899077014880FF3B52E439F85B891974 +:107EE000E1B980EBAEFA0BE5015B9CEFC5F32D1C0D +:107EF0000FF5760396636CA1357637FE194E711235 +:107F0000F203437DA99B36F9328568E0FE8ACFC330 +:107F100064F63E4FE4F83C7AF058C7F0F8EE993931 +:107F20005BA0DE1F1EFF059E8EEFCD1F03E1F15407 +:107F30005B428080FC4D4E42FA76984818E67FFA04 +:107F40008ECCC8265F1CCE2F5318BE5CF3FEDA68B9 +:107F50001F1DE78377EFBFB00CE49AB6DB6C73327A +:107F6000F8015F4F390CD89EC4A83C14C7E52135F1 +:107F700085D2A7A0379CBFE77A412F3F67574BAD0B +:107F8000F2682C23A9C9BDDBF727178B2512043E05 +:107F9000D8FB80B9A6AD0FF9798FE3AB977E802926 +:107FA000D07A88FF5D3DAF722B9D0ED994983C1915 +:107FB000E6795637EE59124D9A00749A27FB814E96 +:107FC00067EB991E14EF3B7574E96F9E4B6B981E1F +:107FD000E96F3E4B8D91243FEDF7F7EBE58A082DD5 +:107FE00097D1F60B47E377E740EF2CABD7D2F934C4 +:107FF00009DE311EE09AC5E03A656ABDA398D2F960 +:10800000E477F38AC2F07EDE0F925650BC7471BEE4 +:108010003D09FC6C83E75AF8DFD2E9DD5EFAF64CE5 +:1080200082665C2117A782DA7EBA74FDE8F9728154 +:108030008E2FF79A8239A0274FEF5EBAEC41E0CF3E +:10804000DD09FEA1DEDE7879D921237E4F021FAB48 +:10805000F45487C9FF69870BF838DDBFC9DB9B7F04 +:108060004FCE6A4A580EFC3127B1260225FFFE0783 +:10807000A5F96D3205756F640EC2FFA683C12DF49C +:108080000AE1F64DF0C7BBDC1E087B7699EB97EA58 +:10809000EDE78C5EDAFE2ED02F36DED805FDA7EF99 +:1080A0006EA1F0C50CAC1E7E2029F29C2F3E9E983E +:1080B000D77FEAF86669AD165F03D9B9DF450C15BD +:1080C00011D5B8AB76FADA5AA4787DE97A5AF7C5B1 +:1080D000EDDEDE88019F5F6948C1F99F9AF323E4D2 +:1080E00097F777E415815ABA613B1831FC43EC20CD +:1080F000E0E77A7670ACC3774376F043422A901E6D +:10810000D7E6CE9E08F3FBE754F42F3EDCCEF8759D +:1081100008A7F7FBA6D828357C1F72B93DCBE7FB33 +:10812000610F7E83C9602745BB2C07D3FFEF7339EE +:1081300078BF412B07850E2D5DABB76BE7B9AC5E01 +:108140002B07931D766CFF7E435302E89F53C03785 +:10815000C0E7D532DAA753C132B4037BC10EA8F011 +:108160003C5937CE40F2B6580ADF07F427BB13EC70 +:10817000C08F2E202FD8D58F191DAF405B2A4216F5 +:10818000A7A14F3BD3A3D73ED6D21DFC0D351E9FD2 +:1081900002BBABD2034B6AB470916EEDF7270D4C66 +:1081A0008EC3B34DE81FDA4D0C4E7B5B823DECC3B2 +:1081B00026C5602F7BC6D77DBF588968C6BF17F814 +:1081C000E43AE30FE46FDDACBFF901F1AF45399F4D +:1081D000958878FD60831C9D42EBBF9B95B85BF64C +:1081E000F5E57F8E5D0BF4BD322BD10072D81F1CDC +:1081F000FFAFFCD00F368C45BBA16FFF18C7EB401B +:10820000F2F7C186EBE3571F1FF4674F9E74DC9CA7 +:108210003D7982EBFF935FCA68E74E0599FEEFB1A7 +:108220001BDCFF11FE4EEAEC5B2F12CAEA07F9389D +:10823000ABB657A27F7AD210DC9204F43C61B00353 +:108240003F169F6171CA2AEE870978BE4CD1CA9F3A +:10825000B03F03D94FBDFC9C9EFF50118C7B7AFE32 +:10826000428D7FBCE06A1689A6C6EBF3ABA400F88A +:10827000053DF26AD5D2FD1DBB09C77F47277FF3B5 +:10828000AFE6623FC2BEADDABE9CF9CDF58F65A800 +:10829000E7D3E6B0E0F7CF3AD8F73D7EB3C2FC664D +:1082A0007753ECC120FDFE0B5B30C5A9A2D3091D9D +:1082B0009D4E73FA423BE0BFF94AD0D8171F2E9863 +:1082C00027EBF413F3E7F4FA48B4FF03D7BBFA71D2 +:1082D000F4F8BCD1F1BE4AB10BBFFC2392471F5C3E +:1082E000D6FAB1FDF16FCFB8BAF6FA71630EAF8668 +:1082F0003FF4E33F0B71828A5FF5E3A43B195E8B89 +:10830000B733BA9F9C7D2BF2E1A9396F4C02BA7D3D +:10831000B0E12FA717829E59797412D8857467121D +:10832000B6FF804E291DF83D24A15FB870FBF22DE9 +:1083300019AC3DC6E1274FE5211F7B9C8C7F4F9AEE +:10834000FC1A3BA897CF47793CB32785D92942DA55 +:10835000738249378EAFDFF783AF9BB51B8F8AF1EE +:10836000AF8D1D05F6E0079C7EB4F71CA8F717F744 +:108370008B926284C5B165B6662905FCC7E083A00F +:1083800017BAE727D9DB282AE69B0333418F9F3EA4 +:1083900061306C647E14CB733010886FB6EFE111DE +:1083A000B4FDDCA01CB052502BA1CD444AD7A9B6D5 +:1083B00030F437EEE4AC1793207E5B64F6825E9F68 +:1083C0003F25F8A90C72B630D1BB89D68BBB061FEE +:1083D00072D1FA9C59921DFA3B42ED7A8CCEFF275E +:1083E00050F906610052DC9C12F570E5B66994EE16 +:1083F00023DC1D061BFDE2D9C72BB759A8FEDAB254 +:1084000031980E21F5DD8F8FDE66B98DD2D113E85C +:108410009AE2A7F879DC3FC39243E7F5A4F8BE706F +:108420005B601221AF19423E89BEEF7CBC6286427E +:10843000F1A348D30A0DF4FB579D4F6C83F60B163E +:10844000AC5DF56FF4FDBB8FAF9DA1D0FE8B978A1D +:10845000EF1F9851A65078691F2413EADFB642DD5A +:108460009518F41A0AE9FC1FCF9FA1C078CEC0FD71 +:1084700084D6AF3C9E8FF09484787BF22F33CA86EB +:10848000C4FBBB93BE0FD37A464319F92325554944 +:108490002C2C81BE7BA7B4BE4CA1E30F4F6DDC56E4 +:1084A000309C9009B34A13099DAF3F75C70C7321E7 +:1084B000D02950E8A56551EA0F11DEE2A5E111844B +:1084C000B63785776DABA0F36839B33B0871F5D348 +:1084D00012E31FABA53E6AA07FE636044908FDB74C +:1084E00056C637D9DE61C8B7A29E4FEBA354F574C8 +:1084F00056EFD844EE0EF6218FE753995FD491D012 +:10850000F7FB6D5C9EE87C515E53CE90C04BB43C53 +:108510009A403A2CD4DEDC6926E34A68FCFC80D31E +:10852000C6E5888F6B617089EF48F84E27C8C92C63 +:10853000E1CBD3F773285C0F717D90E7E776804439 +:1085400095B920F2B201E171CBD2DD95F4B9278162 +:1085500084F6D1D29D4AB03E8B90C03E5BBCDF5FBB +:10856000F36ECBF3827B80FFCBD3320A9B7CF17E10 +:1085700028BC9B015E9177A2702B00B75B9E53785D +:108580007F810AEE0206778793E1830EF322F83D9E +:108590001D5D2306431C729B53ABFF28FF1B09E4A0 +:1085A0001153B91C7BD9F7EE3282F6B97B9B35D2D9 +:1085B00006FE9E25E40FAAF2314FF279D75E1D4EDA +:1085C0002263E3CF6B95A809F447EDD5027CEE6EEC +:1085D000EA9B2E228F597BD541C263D5CFD9FCE2CD +:1085E000FDB8F07D7FF05080517FAD777004F27E52 +:1085F0001B088BFFD62705D29CD7F17B6AAF4AFDBB +:10860000C0AFE073DF201A43031EE9735210878F57 +:10861000E209EDDB7AD01A14A5EBF795A611355FC8 +:108620002B9C0E26367FC0B34105C72F39FEE600CE +:108630007F61FF04F3412B320B305EECF85BD9C84D +:108640004AEC6F13E36F85C54FC50AD387C55D4EEE +:108650007B588AF385E00741CF0E677D29E2AB5254 +:10866000B2B7F97ACFBB4BC84550C2F1D39686E476 +:10867000E52AFF41F0BD5E4EA84560FA9DF2FF324B +:10868000904B88EB002F7E2A0F496A3A32B84BE1B3 +:108690009BF1C8078C7E1936463F8E9FDEFC9035D5 +:1086A000003FE4E2FBE2AEC326C0772D8733ED4CFA +:1086B000347964019BC71A5A1E83A415E4FB9C8C71 +:1086C000AF3BDACBC6DE4AC7EF6836125049C593D6 +:1086D000847E3FFFCBA954FFA5F5D4A9BEF722BEE7 +:1086E000B9BEA4EE8125DEFEB5D4F333360F89E39F +:1086F000C70546DE1987F74E8ED74A98B71BF11784 +:10870000B63835724B4A8AE2FA45C8A9E84FF49365 +:1087100091CAF8C3C3CB1EFD4318BF517D83F942F4 +:10872000D26C8D0C95FE117A471A40EF5472BDC37E +:108730009E1FA56E2EB4F378BCC324EAB79D3856AD +:108740003614FCF807D265EF796A57E649A12D8403 +:10875000C239F78CB71A9EF7F85F141136EA4FCC7E +:10876000A70FBFA2EFE7752584E564B0E756AF4DCC +:10877000E597FDB955423E7B8086A00D45BDF9E3E6 +:108780008174138E73A2222F25A4868BE3FF4EC81B +:10879000F3E6F5964F51A770571B64D57B1BB33B8F +:1087A000ADC981B1A914FF7F944815FAC1D3DC1A71 +:1087B0007F66A1531B6F087FC69112F846EAF8DE68 +:1087C000EDFBF37FDC1056A2FCB27C50DAAC8408DF +:1087D000E02BAD9D70F98C1A6A818E32094B74FEC4 +:1087E0006FA7E6E0B827E6D397292ABF5F0A66E3BA +:1087F000BA81DBEC873C05A50BCEBF5CBEFF90D1F8 +:10880000057496FC4D74D4C5A90EEEA7758F437DF3 +:108810009FC8F8F0A89558ACB4FFB7688974E77A98 +:10882000E937B9C3995E3209BBC2F5E03516578BFB +:10883000F747A5CA6C3BAD1F75DF52D824617FC4D2 +:10884000AAE27FDA2F01787EF3E5B7CE4FA1F836A2 +:108850000E66FDB9E8F873547230A182CDBB86F381 +:108860007F4D6A2293E744D6DF511F6513186728AE +:108870009D0F958737134205F508D7F7183D29DF77 +:1088800003BD3C065A821C9858FD888BD1EB4A2ABE +:108890002BFF99D73DC9AC9D9E3EA75C7C1D4D62C8 +:1088A000F2DC7296FA35791ABF8690C1306E90006C +:1088B000BFB494D2F9F4D1CF7AEEA7503B86F3ED52 +:1088C0006D5798FEDB2C45BAC6D0B1361B19BFBD1B +:1088D0006E8FD821AED3B73725B27CBEB043C27FEE +:1088E000BFD25E99027AF1471C6F261E5F0A3836A6 +:1088F000F3FC45F2D5448C3F7770B894FCF348679D +:10890000A58476493F359260D8AEA2B3D16ED0F837 +:10891000FDC95793F1FBDAAB634924F57AFABA182B +:10892000DF533F4E13675C39BB10E1D4CF4B8FB799 +:10893000EF7378453D19E054C19542BA11CE9412B7 +:108940002D7CFDF91D9D9CEEB557658D9D89C36BF2 +:10895000D23CFF3E8DB7C2EAF13F66E3C7C7A50A26 +:108960004635EE86D4C02BA9285793EC1F8DA4055D +:10897000E5F7AF64B41FCC4ED172B78DD973D0CBAD +:10898000225E0139B68F21647A6AE921F8BEC7BE3A +:10899000F1EF841E493913F7E724FAED74EE474CE2 +:1089A000E776B6C7EF53987F2AE0FE1B6F27F44D9A +:1089B00085E58D31E755F39C9EEAC5EF8F093D476C +:1089C000BC39F03DE5D7B0DA6EEBF1F96E0F3EAD94 +:1089D0001A3E88E3D386CFBF2E3FB07852481E059B +:1089E000F9D20A890CA5C584694C4F88EF3E4F65C2 +:1089F0007EFCE75C5F087D22FC2CD1EE2FD0CE0DF3 +:108A000065A2C64EF467A7D5764292E3FAA98ED343 +:108A1000CF77E984C94BF135CAC5FC8E4477E06F46 +:108A2000A0FF9584E4D1A09F77FFDF32EF460A775D +:108A3000F7DB467F1B74D7C9E859BA687D93429F1C +:108A40001BDB25BB99C4E1B335EC1BB392CED7C871 +:108A5000F54FAD8BCDA3D615350DA1E366D6B2F19A +:108A6000B3DB0F498A4A6EB26B58BB649791D33B14 +:108A7000B2B17C1C3C0F282D94C44E784EE1021DEF +:108A80000DEF33DB25CC6B67D6D38953FA66FA59E1 +:108A9000BF367F44BAA7203EBF664365017CD3EC56 +:108AA00049F4835E0FBA43E92E80EB6C340AE899EF +:108AB00070B64B81B8AEDE1DC8708D8FCFCF2BDB6B +:108AC00033415F269E6570B53AB57C40C8C33CEE25 +:108AD0006A63765026C7C09F4219A7E37936E5A39B +:108AE0005D11ED3D4EAED73D24B41FFD1CD24C9020 +:108AF0004E04E7E1D9340CD757041DE37ECDF022B4 +:108B0000F06BF21E892A90477D75175B47D0F3E31F +:108B1000046E0FE83C8AD4F318C87E8B76C67EE2DA +:108B200050C1E7899C6F4A17B916C3FC6A37FF2208 +:108B3000D12C011D764B896807BE8FED04DE291C00 +:108B4000652E151F29CEBD52169DCFB75613BB4CAF +:108B5000FA87AFB6E1E76356AAE571B309F1BFDB67 +:108B6000A45D3F177EFA1217B303CFBA837360BCBC +:108B7000BACEC74C40CFD57BCE99427DE8E59EEF7B +:108B80006F103F520DF3FF6BAB2C11986FE922056C +:108B9000E9B566B32962F641FE7A5FD400FEEC06C1 +:108BA000E207B9AE6DDFF76626C54F566D603CE64D +:108BB000C528937515C4ED44666D5402BB9BD9BEA0 +:108BC000BC16F9373DD10FFC0B7E28F807974B6D8B +:108BD0006189EAD3CBC670BE97BEBFEC4BF0C3BA77 +:108BE000C59B5626E702BF6FED9B7E4CA2229BB42D +:108BF000DF1C85B2DE1D7A10F8BA65A3B714E8D37E +:108C0000524EECC037D4EF7800EAE54D3602FC7FD7 +:108C1000A3F3167AA287BF3630397801F404F23D07 +:108C20002902FDF2A82B89E91703D33B6F1A199C7F +:108C30000A87F34A6A6033F2230861467CFEFA71C0 +:108C4000557CD37233FC3BA1A2DDE4A570ADE1FA03 +:108C5000A374D11EE98F2ABAFFD0C5D67B335FDA61 +:108C60002D79917FF76C2C77617B62F6C27396FF4A +:108C70005843DFAF52E90D318F3EF44704F06C3BAF +:108C8000DB7584E98F28F29B8057D051D0EB259774 +:108C900017E1BC9D9A677C6EA274A5FDBD393801B1 +:108CA000FB13F2AC97BF975C2C3F9D59B54732142C +:108CB000303F33A8824FB44B744F6D77211EBA10EA +:108CC0000F6BAB14169773780E2FBC6B25D07FAD4E +:108CD0002BA310F8F520EF77FBBF1F477E5CDB2A44 +:108CE000B1F5E6D6E3A6F990BF0AFF5806BF6C2699 +:108CF000730DC88E7F3B8EF66166078BB7D776EC17 +:108D000053EEB1C5F9D477E9F05DC0C76BDBCDC4D4 +:108D10002A01FDD87CF5FC49F507CA0D099B70DDD9 +:108D200004E201D49724E483F85BE8D72BDCAF237B +:108D3000B6E03803E851CFA842D08BC739DCA2FF98 +:108D4000F204FF610BE8C7221617083B768AE39B03 +:108D5000F61F45FD4ABD5C8C8778FFBDEDC2C82279 +:108D6000A0C3356EAF287DCF02FFE9ED83E8DFF7C2 +:108D7000F41CE24D52D10DF0ADE2B74F5C6CDDE476 +:108D8000139782FD2953199E14139BBFB2C91281F8 +:108D9000FCC75B8E0A861FA705F173D4B0A216E844 +:108DA000743493F159B361537E3DB34B97019EC325 +:108DB0000B9309D3434CEF6CFF39B37FB5611BC6EE +:108DC0005BB5A1794867E2B2FA61DD90848E98E6DE +:108DD00027C5F9404F57EFFE432698C7CC76C6FF0C +:108DE000717C31FB23F895EA33A4F7159167A3F45E +:108DF000027C8AF838D5128B1ABDBDE53315E263C3 +:108E00006ADBE6417C0C79E012CB75E36231AEF8A7 +:108E10005EC4C56B1A7E9501E57DE9BFC452C88169 +:108E200088BF447BB79BD1EF4B6E07B3399FAC191A +:108E3000D78E7CBEE67C3DCA87AD82E909DB59ADA1 +:108E40007E13F117218FF078ADFD76C8B7973F23D9 +:108E5000D99B48FF7AE85E586702FD7E8D7ACB3455 +:108E60004EA8D5ADA315B819DF5ED84B118C76A0EE +:108E70001EFDE3CBBB245C77BDD1FE48F49404F423 +:108E80005BC37178F9A5B2891F42BCBC3705F7B93D +:108E90007CF2D2DCEF7C48E1BDBC678A1FECABAB57 +:108EA0002988FCD0EDB6FAC1FFA56AB002E2EF8DC9 +:108EB000ED6F24433EE9E28B638A40FF9571F82E03 +:108EC000FD5C6E007C6C7AE1E5C9F07E4D444A059C +:108ED000BFEEF2DE67BE047B56B3671DEE236B7AEE +:108EE000F17513AC331822BBD9F3BD29E8FF5D7CC3 +:108EF000F6B1C980E7A6F6267C7FE9D9DD583FFCAC +:108F0000C2CB07FF06FE4230D90FED2EFDFCB1EFBC +:108F1000FE0DF8765EB21FE6511B52D8BAA0E0579C +:108F2000BDFED97708E54EF0C74CF0FB80CFAB987B +:108F30001E11FC79A294AD9BCC99CAD6634ECCB0DD +:108F400056A19FCBE5AE6EB16337C89D81E22F9DE0 +:108F50007E3F6F966337ACABACE5F3AF2D60FCD0D2 +:108F60004CB905F20889055153166DB770E9BEC9B1 +:108F700080CFE6045262453E8524261D07858890F1 +:108F8000B9AD6FFD9744E9388AAAB38F683C457B39 +:108F9000DBF315F57FDF31B27C4133F7CF172E3D80 +:108FA00027B1F503C5FE919003F97AF64DC1FE4451 +:108FB000BB1E7F8DE3A199E74768FF686F8AD7F3EF +:108FC000BCA7B4A209D69B8F3E189D047CFBEAC7C0 +:108FD0000F24D416A8F99B7D9FD9C1E43EB3A6EB1C +:108FE0007698E737F3978F8561D6F2F51417E4D1B9 +:108FF000C0DE846D1AFDB685CB99C74E5CDF80FC60 +:109000008C425CB08FAF9CAA5E23E2E739ECDF6B49 +:10901000667E93F7F585CFC1FAD70E6328633CD8F7 +:109020009B666EA7F63078E9F776583FA7FDD9BF63 +:109030005184FD74199DF87D987D3F7D0F5B3F8BBA +:1090400070F8BB73C14E417FE36C6057C2556857DF +:10905000BC263FF0C32568821B82C3A3978D8ACFAD +:109060005B9F4F013D06EBD0CFBA4B9F76BBE3A58C +:10907000C8BFE8E9718EBFCFF5049E76031C7B5311 +:1090800007D8EFCCE87578E167A6181D77FB6BE78A +:10909000500FD501BFC3F8A1F31A7B2BF869C72B7A +:1090A000E790DFE77432FAD475FA8C10CF7CD218CF +:1090B000207FA40E661DE7EF1D52AC1AF789BC6233 +:1090C000B543BEEC33CEFF6B2ACE7D047A6B70675E +:1090D0008617E2ECCF5E617270D460407C1E6D1B1F +:1090E000B91BEC0BF56B9195EBEABD6D66C42FF3E4 +:1090F000F34B17AD7C0CE2AEB535C40FFAA1AEA3AD +:1091000032DB8B76C58CF8ADEB3C8EFC22FC5B6AC7 +:109110000F5742BF0E6A77AC10874D0B76203D5C2F +:1091200049D8DE312DF45839F2576131F0D7E18555 +:1091300007B75A60DC69C40EFDEFC809BC9285F31D +:109140009008EC8FD8616C9DAAD0EF77947BED14DA +:1091500083145F7BD2C1CE937C13B76B2BD16FAEE0 +:109160004B5FE2C7FD697A7DF1CA46F4AFEABC09FC +:1091700008CFCC4EE901E677D808835F42BE9C1940 +:10918000B93502F2FF29C79BC0DF67C6AEBB002F0F +:109190009FFD1B6540FA7EE634C6A78E69EDA86781 +:1091A000DE7A85FA35A3E3FC98F40BEADFD0BA53F4 +:1091B000B14B7E94B3B966353D5B8DCC4E39B8DD8D +:1091C000C9AB6074FDC4CDECD4276E032F4D5CBEDB +:1091D000791ED71E1E0D76F6534E77EC0EF43FEF38 +:1091E00077EDCA28CA51ED4BCC2F73990385DF5216 +:1091F000F1ADAB8CD949914F87FC3AE6D5217E7110 +:1092000041DCEC6D83FD44947E48DF6FBA6E290229 +:109210007C257B987C67E64B18E7517F0DF1E6597A +:10922000B447A92E60F9F8BEE244A787E709538343 +:10923000E324FA9D3B2D09FD18B75C6AB0821D2A14 +:1092400094FC6D5E5CF7C3B8B6DB9DE16FD3C835A7 +:10925000F3F73EF62431BA467EA3401E27D7E365D6 +:10926000FDEAFCB9DE71B2D50FF1CEACD6F068885C +:109270002FC43A809877646342955A8FA57B18FE75 +:1092800023C34915E805EAB7DB306F6CA7E3403C20 +:10929000DE76EBB32C1E6F6271A087ED0F28A7F36B +:1092A00003BFCC9D175CCFEC6B12CEC39D4756C05D +:1092B00077EEA674A9C9A7C6B31DF76D3DCBE92CFF +:1092C000FCF13A2A2FE8C7BDC6F8B10EFC385FFFA3 +:1092D000FA21CEDF4C3FCCEC6474AFEB64F64FC4A4 +:1092E000E7A0F7607F21E809DF98B85CD79962C3EF +:1092F000803F059FD74D8E0D03FCF4A71FCA132393 +:109300002877E5238761FE41F4F399D18BEB739FB6 +:10931000D1F812FD582E0F49AF32391074D1C73928 +:109320000017C48B423F07DDC10A0FC065886E85F8 +:109330007D02429FD6BDBA6D585FFBBD843EB52805 +:109340004C6F592289912615FFC05A57521196B871 +:109350001F2BB181E3E38C84F9E196FC533F6D410F +:10936000FBDF1E053EB36677DD06FA6BB187E5D3FA +:109370009E96187DC53ABF076213D01B6D89B8DF72 +:1093800056E46DF470DDC1F948E05FC41990978729 +:10939000F6DFF630FF62356FD7E89134765CF0B5D2 +:1093A000D7103A07FB0EFAB33FE2BBAF2B8F24C6B0 +:1093B0001176308EE78D9A7505984F6541FFED5A0D +:1093C0000F313D23F84EBC7F94FB55E59477A1DD2A +:1093D000CF447EB64A61797F2BD1ECC712FD89BAA2 +:1093E0003E7FAE2F53BE9439FC0102FD61BE81FE6B +:1093F0004B995CE187F93DC1F1A5FF4E21CA1731B8 +:10940000E157F954F0709F8C465964B2530D57449C +:1094100003973E5FDFE397E9FAE90FEE66DDBC9A5A +:10942000F30E12C853255A92B9FC5E43BF7F5BCF3F +:10943000F982B0BF12F51DCB770D348E1E5EABB72F +:109440006F786F941ECD867D35C0CF3F6BE4FBAE49 +:10945000B6DFD83C0FF279C23A047EB754D1ACA340 +:10946000D8FCDE8D903F9E72CD5B88FE35DFB799CC +:109470003499FC49A6FC9A5CD29A0FE749DC412D4D +:10948000FC6955099A7D6F1921A7A69E5593A96974 +:109490009F533F58F37E50C308CD7B5FB84853CFEE +:1094A0006BFE86A6FDD0D6A99AFA2D3BBFA9693FCF +:1094B0003C3247536FD9D85E05F23072EF62CD77F8 +:1094C0005394985C489F8F6A5FA1A5870E9F638025 +:1094D000AF419E2CB122B53CFD976730D26DCA5585 +:1094E0002D3E601D473DCECDF2C7984E1D7FE8BE94 +:1094F00017F29548187F241E68FE13AC7327EAE51F +:1095000088F73BDAC2E4A757BFFDC8C9A6C4BB149D +:10951000E0FF835051F9D3EF346ACFCD9457A5B013 +:10952000F5A4AB7306F0BB999C2C30B375C60589C6 +:10953000DAF34313D3985E284CE379A61BE4E733B0 +:109540009C9F4FF4C7CFD4CDF580BDA820188FDBEA +:109550002B36FE09F23A8B942829A4F2B39DCF67EB +:1095600007FF7E67A31DFB7BB2311DCB5D8D5E7C4B +:10957000FE74633E9691463F3E6F6B2CC1720FF5B1 +:1095800003A17CBEB1829DBF680C62BB9F34566153 +:10959000F95263089FF7A2DF5527DADB05F4CFC93C +:1095A000AAFD070BABE41BA2CF42F24897DCC739F8 +:1095B000A35EDFCB4BAFBB4FBBE16C61C511159F09 +:1095C00056A425B9709D71029980F1ED00DFFFB5B9 +:1095D000D15F7164E8C0FCADE71F72ED5B4383A30C +:1095E0007ABF5F000C9D49F5C9133B1F0E17C4F1EC +:1095F000D43F5FF58D9F80E5B34C08FA4783FD515A +:109600007D7F48C7BF01254513478BF2CD346627C0 +:109610004B39BF96EAF8F58534E6373CC4DBFDFFED +:10962000C6AF87AD49E8971F367AB3DD2AFA1FB671 +:1096300026E273924FBCF328FDA81767F751FE3D51 +:109640009DC6D60725884C307F3CC48E7912EB4DE1 +:10965000E653747894A85FE9A3FD952A4C7F49B03E +:109660003109FAF71BE2FA15F74BA8F6DFCBBDF983 +:1096700081F61336813FB622B618FCB9CB695E8DF0 +:10968000BE9DAAC8D7D5D75341DEFAC80BF6FAEE6D +:1096900026E5ED17206F89FF387913FC4EAEE50DF6 +:1096A00051EF8F13652997B7B54FBC81F226F87D2E +:1096B0002AF7E344BB0F39BF7FC8F5F361EEA7007B +:1096C0007F14F5E1AFBC97A6F5F36E16DFA584E92C +:1096D00045426299A0276EF67B2A390A7C576A496F +:1096E0000E278EBEF9EFFBC367AFEF3A5D37946F7D +:1096F000A29A460239AFE6D0555B6C61E027B2D33F +:109700007839A6E2E3CAE4E0D534DABED3483A6158 +:109710007D829A79AFDD837C8F78A5FF82165A2FE0 +:10972000E4F50961C96BA27C63A69506908FD89B6E +:10973000FF05FAA29097137809E9D674909B8224CA +:10974000DCEFEE1768E279D362519D465D1C8FD83D +:10975000BA08FD1269BD13C2985602EBEE2D92BFF6 +:1097600059A6E3C969BE26006A6C45A94C7029AFA9 +:1097700015CB49A4AB0996F626936E19DADF5A1178 +:109780006E023807916B76E4F3B4E7D77E05FB777A +:1097900020397903786BB0B075EABF5A59199E4ADF +:1097A000D8B9B9F7AD11889B6692D0A074DAEE9F54 +:1097B000E4C03218FFAF06BBFB10224BF9430CF399 +:1097C000BE12EA83A9B67155AB508ED973C4B72FB8 +:1097D000DE0EEB72EFFABF6E617988A66D8CDF9BAF +:1097E00036B2FAC474C6DFA3795996CEE4C24AC22F +:1097F0006182FD52CA79107F8C6EF914EFC58C0E10 +:109800008857DB31A44B026947BC6E9BBF23B4056C +:10981000DF2CC57D3E523448BE4A54F3CF8DF567E8 +:10982000B1B4062C948F12AADAA3C6EBF4A7707A0F +:109830002AF34CB83FF269293403F0485E92B0DF56 +:1098400004DEAF91D413C9A786E386E932E746E880 +:10985000629CEAEF0A50169C9F20E13E969BA5CFA2 +:109860001A606A779C950F6690DD904FA87191748D +:1098700042E5C764B3A09C6DCEF186E1BD6918C115 +:1098800073C42426A11C88798AFD7682FF283EEEC7 +:109890004BA7F43445A473801F537A3DC683448993 +:1098A0006541BB8312E3033DDFAE4F1779846CC67D +:1098B000EFE4FAF66FDF1D8E775D208CE17DB37EDD +:1098C0009D4EEBA58E252E3B21B7654C99A550F9F1 +:1098D000D8779CA030A6652CFC1EE8E77DF31D3FE1 +:1098E00072D3F6DFCBEC7EC408EF9749F83E39938C +:1098F000BEA7FCF96E2969873C52C413DA04F85FED +:10990000FC6BEF51386ABAEFCDFB72C1AEB8CAFC3E +:10991000313CAFB2C4EC85F5A776C86302A35CA363 +:10992000F050BA3F0B00CBAC3E85D61709F4F0F7E8 +:109930007BE06FCA37792B7D1BE19C0BD925D9C100 +:109940004F19B48BFA2DB47EE17B642CE48FFBD3EA +:109950005B13443D2CE1F9FCDB74EF855E1BB2F236 +:10996000FE0FFE05FAEF9271FF8654C5D67326F0FE +:10997000F2365E16F272D14AB6FE34A46A4204F29E +:109980007A1F19BD4D36E0C75104CF9B1285F1E710 +:109990003B398E089E97964813E4D1C2DB089EFFA0 +:1099A00003B982F54EFF4A4AEB71E0325A2290A782 +:1099B0003FD9D83E66B351A53F296D02C52CADC332 +:1099C000E02EC0386C1289FF837994C7E7857C76D6 +:1099D0003BAF4FAF6579397380EA55B06F3A7D6C14 +:1099E0002591740BEE2BF6E17E11793AB103BCB9E7 +:1099F00015D1C3B09E3B36508A7A753C09BDD1451E +:109A0000CB89817D582FB1449A608A5360BC3CB0A9 +:109A10009F5E05E858463D5CA85790562CBF49DA32 +:109A2000B19C45BAB09C4DBAB10C12BB11CAAE7410 +:109A30001FF2EF640BD5F383715D0EF3A0453BCDB0 +:109A4000982F9D53113279FBF04FAAC5394212CAA3 +:109A5000C53CB012CA5DA0F2373E5AB47019DCB7EB +:109A6000E13568F7C5BEC3F5662C9DF9173B24AEFA +:109A700047D68A7B3B423F5C45EB4B2A6EF1C3F9EC +:109A80006EFA1EF3C0E14516CCFFED307A73C0FFCD +:109A90004881C36F90B7ABDDF74F902C3A31E3DECE +:109AA0000C90D7EACD5B73200EA89EC5CFD328E1DA +:109AB0009CF92A39BFB09CC125F63B88E717393C91 +:109AC00029B06605EBC4147E5C2714F9BCC50ED41E +:109AD00033E5D471807DEB57F93C225C2F08F9A95E +:109AE000117CA0844D99F4BB057E9F1FF6CD2D8E71 +:109AF000B03C71B942A2E02FF7C05FB5FB4142F91B +:109B00006371CD21CCEBC7F729B1F5E9D2451DCB67 +:109B100060FCEA956662C6F5A2D6F7409E17D69815 +:109B2000BD50AF5ECAF2AAA4CA82FBF8AB77FAB600 +:109B3000809C2EDC10F0435E958E87F9D8DB2D6C6F +:109B40009DD242C78775BDE9357C5F48CD435DC076 +:109B50009FB45D00FCE5DB697B8596D984EDBB4B4A +:109B600008B37D4C09D3D83E26AFB9FE28DC0BE301 +:109B70005D47FC613AECC25DBB25B6FF98A03F355E +:109B800090BFF3D443D71C186F825F30089E86596C +:109B90003EB941F6C27E52A2D8B19FC5FC9C687303 +:109BA0004D13E6C3AF54D1C9D1F117B4FAD8B98572 +:109BB000234CCE175415C6204F65A960E7F3A04388 +:109BC000C82B5B4805CA7D2161F98F05FC7C803E6E +:109BD0006EB03498D8B824AA811FF419D8C5FEFCF9 +:109BE000B0FEE627F406E897EE3EE45DAA788BF92E +:109BF0006BBC04F907B92DB2F8E52403B05A5066DE +:109C0000E70CC284ED1BDDC0EC8AF579496DCF2DE0 +:109C1000AEF05DB015E7C291215B6C88B656A28E9E +:109C2000232C5383ABD4FBC8B7950697A9D78BA633 +:109C300067307EAFE025F9753817C69327337EFF6E +:109C4000DDDB04EF91F9F86D8A4F903FC9C2E473F0 +:109C500000BC0C38FF955C8FF332EE677A9B80BEB8 +:109C60004B3206233CE32A2A65583F1AFBD4D8AC72 +:109C70007F26BDE9D31FFEFBC397312DB03283F998 +:109C8000E5861BF1CBCBE5EC25B574DE7F5E6AC6BD +:109C9000F55761378B805820D75D2442651FEC074C +:109CA000DA958C666297BC902785BDF0BC1F60F387 +:109CB0002A0B51347952BBA69E5593AE699F53EF40 +:109CC000D5BC1FD490AF79EF0BFB35F5BCE6124D38 +:109CD000FBA1AD014DFD969D159AF6C323414D7D27 +:109CE000E4DE2A4DFB3FD32945E97CC69D96FD6104 +:109CF000A06F38D055501CB7E3A3DA439AEF27C4BE +:109D000096CF02FD35A6B346D30F394BFD365AAF79 +:109D1000A7FF31BAF865D023FE1A893CE90314B2D3 +:109D2000F7D89ED6FD67675C043DBEB8CA18F7F742 +:109D3000E02BF2C89F803E7E9D9FA88FABEF3D1623 +:109D40003E6AA3F0D51C6B3D0AF2F06C8636CE2E2F +:109D5000976D38AF3F9F9271FF4B0D70A82B4EC788 +:109D60003F434730EF4304F785E9E7DD1387CBBB7B +:109D70008C78DF0A9D076C5D37A76BE96DF56AE9A2 +:109D80009D98AFA577925F4BEF94122DBD1D81FC7E +:109D90003EF19B5AA1A5BBC06F09FD0FF0FB75E317 +:109DA000F35719FABCE024D4B35776723DDB5B0F4E +:109DB000CCB314C7F50055A911435E1C6FBDF482E6 +:109DC0008DC5333D7A6127D70B3BF57A21F04606E6 +:109DD000856F7CC88771E56F974DC8023D97490E26 +:109DE00088F311A1AF507F87859C9FCB8075C006FB +:109DF0007F2C0C76629719FDC97D4787613C7062A4 +:109E000028B90DC38A332CEE693131782F65D850CB +:109E1000EF3C2D052FC1F7E682201CDB20176E6377 +:109E20007CF15BD08774B2BF83381DCECEEBF408D3 +:109E3000D1E941BD3F2CF4CC84F0718C9B6FD66E80 +:109E40000C14B7172E65F644E8D709BC4E5684D1DA +:109E5000BF1776A6A924E483F3754596804C0CEAD7 +:109E6000383E8676670A09A31EBEB5C2FFA3F50475 +:109E7000FCAADF66815FD52B9E8FE33B2573BC6612 +:109E80009D578357FD3A6F5AA658E70DA665AAD687 +:109E900079F75BFDC85FA717B13865DCF1214D3656 +:109EA000FA9D67B50FFD98FD0EFF1B503FBD96C58F +:109EB0008DE34F0564D85F9557EFC37D76FB7DC179 +:109EC00032A89F7E90BD2F3E13C2FD57431AD8FB88 +:109ED000A24DF56FC039FEF9DF65EF5FFB742B9E75 +:109EE000FFA2468E7D5FDA5A06F5D35BD8FB096781 +:109EF000234D501FDECCC797DADF48063BF83D768E +:109F0000FF42AF7887C73753383D7AD193C70D9357 +:109F1000797B11DF4CA962745AD91DBC1DD94A47FF +:109F20002FBD5F5F4E42589F4EC258CE20112C6706 +:109F30009228BEBF83C4B07E2784F2B45E49BC467B +:109F4000A8DF93998F789F4B4363CC5794F82D7873 +:109F5000EFDEF9FFF80E498EAF9B0BFFA0D5195C21 +:109F60000BFE83AB2C88F783DC93C9FCDD78C9FC3E +:109F7000068F339CEBA7EF3FE6E7CDE2EBDFC5B8FA +:109F80006F830EF908F8BB0B33D97EDCE9A404F724 +:109F90000B4F2F61E7EEA6833F4CF1137D4271C05A +:109FA0007E3CBC0BA98FB8399E27D2E58F9530C671 +:109FB0001F45B2772408CB86CC71DF83387A3F08FF +:109FC000622621EB3227DF11CE467E45FF66A07662 +:109FD000A7F83E9FFD7C1D745ED06740FE2CD4FA2E +:109FE0004F1B3259DC2FCAE9A4AA2CE96B9C57D12C +:109FF000A630EEE79EDF66266C7F0EC9847D38D5DD +:10A00000A41EE9FAD1A830D255E89DF99CEFE67379 +:10A010007EFA68B719E970619514817C4EF5AEB788 +:10A02000CE00BFF5EB37150C457D338FF3E76F8F0F +:10A03000566F617A9DFB534F8C90BF1A19977BEA3C +:10A040002786E15EC3779731BD086EB7461FF6E3FA +:10A0500027BA795DC0911596D04EDCA83E7489FE72 +:10A06000B93ECC14FD0728EBD17A2E7F2BD5323C9C +:10A07000B8799955ABB72BA18D2007E9A455827A01 +:10A080000EE9C6D24BEC9BDC797024D36F807AB694 +:10A09000A5BE7216EDDF01FA0FE6BFEDF0388DFEBA +:10A0A000E3F966A3E5115C8F55486B00F208CA918D +:10A0B0009E3CDB2F403F7E5D79B6D733BDBC7DFD36 +:10A0C00004B6FFAA7E0C94E78DB666CC1FEBF32C8A +:10A0D000BDF232DAFCC56DADDC6EB40A7B114A8785 +:10A0E00079C3B64F8DDD98E8F74239450AA27E590B +:10A0F0009616EA02FD7D3BA9CF86F6064B4C063B41 +:10A10000D1C2CF19B50C13716CB713E3433BCBB776 +:10A110008FE1347EF900DB97F572BE05F7CD6FF560 +:10A1200098B642FE2E7E9E937FC7CFA78EE6F72479 +:10A130006C4DE0F8989D80F1486A221D8F7E972033 +:10A14000FB7D00D70F244AD53CD83FE21D06A54928 +:10A15000B6BB37B2FCE4854CC45BECC44CFAFDA939 +:10A1600057140271F9CBF6EE044701C0D3B6B78D90 +:10A17000C2F3C531669E5FDF2B87CD709F4CD7E55C +:10A18000C7A1FD982E239AE231D70C6CDFA0893C41 +:10A1900002FB7DE658648B42FD8F4FBECDF7DF2872 +:10A1A000FE42F5FE9CD5D94C5F9EE8277F38C85902 +:10A1B0009A9D05EF33FA3EF76BCA3268CE218A7B4F +:10A1C00091FEE2269A7D22839CB3B11F51375E75C2 +:10A1D0009050AABA1FC637462548E03CA4F1AA0B06 +:10A1E000DFA750FF15D611521C250AC45B5389FD09 +:10A1F0004880E2158E4A00227ADDBB3049E9EEF153 +:10A200001B07835D627E27E6777DB0FEA2F537C728 +:10A21000106D5D9FCF0D65333B62D4DDDB10CAF658 +:10A22000B2E73DF0B27B1BC4F9F10E25900879A08E +:10A23000153CBF44D203783EF2D149AEC216155E3A +:10A240001673FC75F07B26ECB43DDE5FA09BC76601 +:10A250002A3F3E4AEFD95992A6BDD05BCB84FC84FD +:10A260001D28C74BB9FCECCF66E7E097D9D9BA4BAC +:10A2700068DB87A837971F4F300112EF5E4A92477D +:10A28000D1FA39DB90F7F7D072C5EC92ADE04F50C0 +:10A290007EFDDD4A50660F27B2FBF1A6E617B37BC1 +:10A2A00007A6E13AAA14CE427D7BA3F6E2AED4E53E +:10A2B000966C0A474272C46BA7FD248CF818F7EF1E +:10A2C0004DCF2288C7849E7B3063C334F7E2A696C5 +:10A2D0005AB2C7E3FED8A813F651FE6F33A3F33189 +:10A2E00012007F6BDDC1E198F73A981D32413B7156 +:10A2F0005E961CE9C6FB3ACAC03FC9EB830F6C5F90 +:10A3000018809FF4FC0080831D1E882FCA006E3ABF +:10A310009F15C97DD317FFD17A99C581F772367021 +:10A320003A8B716F964F5D794CAF744B52A44D1AB6 +:10A33000183EB19FB847BE381F8B52E0497F7ECF91 +:10A34000C4F581299B9DDF3B981D44BC7E9EF3A7ED +:10A3500061460AC30AB12F7E80F93EFC3F9CEF8D17 +:10A36000D22194CDE9907063703D9DC5E6F78F864C +:10A37000CB2AE01A7D6370EDFF1FE22B40BADF7736 +:10A38000E40D0C17A5A715E849A675E3B9EF15CE9E +:10A390001B83EFB75F037CCE1B83EFCD2CB01D5129 +:10A3A00006DF02E237A6CB1C18D5791AFD391A71DF +:10A3B000BE660135DBE0D72698D8FA5AC21C89E57B +:10A3C00089FECEF3343D74F490A803F4E14133CB1D +:10A3D00033FABB87A9F7DDBDC7F173303BF007B097 +:10A3E000732B8671BD50A16DF7075D3B719F0639D8 +:10A3F000CBF677B7E40F6963FB8FD994ADD95EBC18 +:10A4000037F75296C4E37F71FF1C5B1FDC5AEC4D9B +:10A4100003FF2160B145656A1FB68EA8C987F59014 +:10A4200040FA7F9C61FBACA9DFAAA29380E352E3D0 +:10A4300031FB1063FF785823EF2FAEEF635DE51714 +:10A440009ED035B51D5FB3F797F621AABCCC28B8CE +:10A450008118E9D56D60F961BEEF26EDE6F0DE0CFE +:10A46000FB36C683FE0FA2FE17F6A2EED51F7BC1F8 +:10A470000E51BB4F609DA13B2901ED41D388927CD9 +:10A48000F53A506E8FDDD6DE8311B7D7FFB37B3040 +:10A49000E27E8C44C2A97DF5AFE073419780AD6F39 +:10A4A0007A88FDB5DF6F6CB79C1F0AF797E45BA154 +:10A4B0008C36FAB16C482D5D9A8DFB6BF93985604D +:10A4C000A7E5BC267F1BD5D43342C72CE735F9DB83 +:10A4D0002E4D5DECA735BAD87EDAC0380B9E3BCD49 +:10A4E000A93FA3E9A7D9C0EE591AD410D37C1F08FD +:10A4F000D8C20EF083C31F6BDAB76C647C9CD7DCC8 +:10A50000AD796E540204F6B30E6DBDAAE9E7969DCF +:10A51000C4AAAE0F8F58ACEAEF46EEB56BEAA3DAE9 +:10A52000D335ED8DF67C4D5DECF34EB6B07D3AA59E +:10A53000A450F3BE21B57229F81F2925ED1A387AE7 +:10A54000F6850FB0CF4699D48C794958D39C54D412 +:10A550007B7F78436A00FBD7F37FF8A1497C3D8974 +:10A56000C5D7821FC8387F3EBCEF8F2F367B02D500 +:10A57000D0DF8FF9BD259238079D4FBCFCFEBA3E57 +:10A58000CFD73C96CDFCC34F4C7DBF7F90BF37EA01 +:10A59000EE3389F32DBBCFE493A9E21E24EDFD73C6 +:10A5A000A27D13EF275566FBB306BA87CE783551E7 +:10A5B000730F5D7CBC647CFEC9E0EB8FF7D84D8FD8 +:10A5C00027F7333FD375EF6B6913F873F6FDFEE998 +:10A5D0001EFC6568E4BE0DE2014DFC928DEF8DBA64 +:10A5E0007B5FD4F10D3C1F28BEE9B907F06B8F6B80 +:10A5F00008DB277493FE7180F857C3FD3003F5FF25 +:10A600006E76C00F76E2EFB5BB09606333B09FB7DB +:10A6100040FF6D35B1F38C5483619E45C437441FB0 +:10A62000FFE4B3FD6FCBD2FF03FD8104C81950BB1B +:10A630009AF05D2BAE9BDC2DD94D80D7BB2CDDEF86 +:10A64000FDC80BF7ED47DFFB5F98E710714DA20CDB +:10A65000EB72370A674F9E85DFCB00796FB0DB6303 +:10A66000A68CC0F3358F42DC0630F073128F52187F +:10A6700032A8FE4831D8F01C548A89D5C7409E863E +:10A68000B6BB422E3B97A9F83E85AF87A41C502E3F +:10A69000A9F1FD2861F8D1AF8B7CD1F59704B09377 +:10A6A0009F676BD747AE9059BF1909F899C4F6B99F +:10A6B0008D7E655A9AFADE939EF52391EFE9277F06 +:10A6C0001CDF1FA3CDD388FCCC6D3799A7E9B94710 +:10A6D0004097A71928CF644C0BD97290BFB4792644 +:10A6E000D361D6AE7B37BB4753E49DC43C9D394C08 +:10A6F0007EFF941670C2F757B203A939B47EC2CA5E +:10A70000F23427664C4F81A97D41022910A7C27EF1 +:10A71000DF2C676F3E80BCCA6695FC9F70F4AD2F3E +:10A72000BC39CC0FB93B876039C713F0C1781F9B88 +:10A73000D8EF627C9CC0CB6496CF2DE869CFE02C2B +:10A74000E5E5C73CDFFBB19368EE6D16EDCAF8771F +:10A75000E71B2D96CD4355E33F61AE87F8CE9DC7ED +:10A76000CF6705187E3E7F85F9F52B5BCF99E01CFE +:10A77000D4EC9CD2BB011FD00EE6B1528999E05EA9 +:10A78000B6EFB84313E1799D9704F663BE2B669A42 +:10A790004BF1FC39F75B3E37B2BCD1E756560A782D +:10A7A00066E754DE0DF3FCFCB69809F7F588FAF875 +:10A7B00018CADFEC9C208EF7F9445DFD0E56277C0D +:10A7C000BF4680F31BDACD3EECA4DE2EEAEF255B1C +:10A7D00067E27947BD9EC84ED2E89165077E897CC5 +:10A7E0007B97856C8554D4DD07D24C105CD42487CC +:10A7F00087D935798FBF4F3F7C9ED385F36A29ED8A +:10A80000CE7D721CE631EC6D749CB50758DE7BADD5 +:10A81000985F87767E6B385D07BA974FEF670C2499 +:10A82000BFD201BE6F8D97E4E02FB3A0BF4907DF11 +:10A830004E8572AB548F7968D53EDB33AF517E9134 +:10A840000DDDA96AB915EB3D6F49315C97AB23ADBE +:10A8500048EFBA0E3AAF6428AD51C833934EEDBC01 +:10A8600056ABF75DD2EFEE23ED269F04F18431BEA7 +:10A870004E4CFFAF255DD8DFDA76ED73BDBD19888C +:10A880000FDEE7F227F8AA86E3A146E03DA2854F56 +:10A89000DC4B24EEFD9C49424F027F563A2C6179F5 +:10A8A0000CAC2B0596015CCB8917E9BA5C673FC5F8 +:10A8B0003D46F7D8E6211FDDD3AC873F600238570D +:10A8C000B55E7F5E827F0E72F837E478B15C9B30B4 +:10A8D000EB18CAC6B82E5C5FA2F0FD0CE44BC04773 +:10A8E0009400DE4F2EDA7F3ABEEBF9289D939C341C +:10A8F000CD02F6E1AED45007CC27E74CEC23093665 +:10A9000064DA02B8FEF459E7C577609F1D5E7E31B8 +:10A91000110688EDB895FE59D329DB212F50D3F9C4 +:10A9200006F26B7F78EB39974EBA055C87FA824B5B +:10A93000E4A3F5F2B33787E5672ABD8137E13BE34E +:10A94000E076BC27ABFB41762EDC25530BEB844530 +:10A95000C2B0942CC5EF7921FE8005F27D53CCEC7A +:10A960003E9AF7EC532D70EEDDE3300441FF6DB6F7 +:10A97000AF70C0F967710FB84732B07BFFC90A07E3 +:10A98000DC27B2CCCCEFADFC7662348FF2EBEB2659 +:10A99000763FA82B3184F71C743B641CBF74D1171D +:10A9A00063E15E82CC6BB622D8DFB62FC7AB3957D6 +:10A9B00030A5AC7B2CBBA793D1CD95C7EF63729B21 +:10A9C000B6DAA91DDB4CED0C942FF27982AE66EB62 +:10A9D00009113BDE09C7D721D65B187FD659038FF3 +:10A9E0004E857D02C7D9EF757D610FA4C07A80FEC8 +:10A9F0005E49E1CFF6776FF3FFE17AE41F752FA48C +:10AA0000C847D73914E252DDD72AE659C7EFABD190 +:10AA1000D35BBC7FED4BB94F7E48CF65F992FEE228 +:10AA20009D945C666FEAE09E6E953DAEA3F60BE0EA +:10AA3000AC837BBAAFE3EFBFC8F152077E7AAAFAC4 +:10AA400039939B783F2E7CFF133ECF9F1C3354B429 +:10AA5000F5016F492E9BCF08B71284F5909151767E +:10AA60001F667FEDC439EDFEE0EA981ABB0BE08665 +:10AA70007C6D5FE315E4B2762F827E80750167AC52 +:10AA80001AE5C11E7811E2FCCF5FB9C5A7BE5FB061 +:10AA90003587E1F3B319CC5E8B7B398B957A09F856 +:10AAA0004AD0637A6AF005D00F702F2FCBFB873521 +:10AAB00074003EF6A23FAE8DD704DC9BF97A9288F3 +:10AAC000D306BA07B50EEE29BF2EFE1576CF2A871C +:10AAD000A35CDE80FB252EB64AB8FFED2209356166 +:10AAE000FD1109F77D5E3CC1FC4688B0A562D0CF60 +:10AAF0004C1EAA9F9B9B1205A90FB1FDD5CBF7ACAD +:10AB0000C1FD4B50DF40F5C6F27476AE6BC5666D85 +:10AB10007CB3F211AD9E86756488DB6A4810ED53F4 +:10AB2000F5766DFB1AC2D65B6B74FB9E3CDCAEE81F +:10AB3000FDF655B9DC5F2F26C53773EEEA5112A832 +:10AB4000CD457D1B9441AF8EE7FB9E2FEEC94B5345 +:10AB5000FF9ECE619FA4396F7489CAF710FAFDE594 +:10AB6000463B968DB981F5D0CFA3B9A17FCA057FA9 +:10AB7000E538C79FD2CD7EAFA08AD933332423E9ED +:10AB80009FE62516F4C31F82FBBF281ECD666627ED +:10AB9000855F20CBDF9293E9FB891FAE74E03EFF17 +:10ABA00017A757C03E0EF78B8901C0774B69A010DD +:10ABB000F4684BA50DEF7DD86D60F7025ACCEC9E82 +:10ABC000A2C84F261E86B5F321ED8F4D85A5167BB5 +:10ABD0002C4A92BD9097DA88FB629A2713BCCF4D1E +:10ABE0008C57120BEE03B872E7D9FC00628B2F5022 +:10ABF0006857F54FB8DDAFE338FF51671EDECFFB76 +:10AC0000E703B7603982307E10E70A604CF06704D2 +:10AC1000BE2E37D2BAEA9CE68876296A4CC67BEE0D +:10AC200070FF45EDA6A86709D8A91F2BB83FC7F547 +:10AC30007AC6546F721C3EF19DB05F4B200E853575 +:10AC40001DEE9789730D4BAC249CA8DA8F53C5F980 +:10AC500076D1011657AD20FE5CF86EB185241B2815 +:10AC6000CE9694B58F477BB3C6E800BFF3A6F7A78F +:10AC70007079D2B7BB046730C0EEBD62C6F5A6BA24 +:10AC8000E793F03E9075866E1CFFA8D0BB22CF3DA7 +:10AC90008404603F53DDC15B703DCE0CF74D15A1C0 +:10ACA0007EB3005D8F823DA5F35EFD9A15EFB1EB9B +:10ACB000B9CFC54EC220B7EB0EA661BCECCA0B14CF +:10ACC0003E5000F787C47251EEA93E8394F7FBB95A +:10ACD000ABEF84FD307599D45FA175EB33DFBE1304 +:10ACE0007E57A46E70ACDA40EB85CF7C9FD547C40D +:10ACF0003E82FAADCFFC90D58B62D532AD2F78E68F +:10AD00000556870D6994B1EE79E66777C2F9954BE0 +:10AD10000EE13FC4F03E9FBA576F31B4A8E87EE71A +:10AD200020A62F2F5959BB4B3E768F37C98F697E8E +:10AD30000F60EC2003F77B98FF23E629BE23E97D13 +:10AD4000F7FF29B76FABF93D3C531249B395DD4B83 +:10AD50001E86FD5C470EDC82783991EBE4F88AE1CF +:10AD6000BE1BD18F9EBFC4B8F7F1DF35FA8CEF7BE5 +:10AD700012EFFFC6E946C7D98CE314040A61FF5BF2 +:10AD8000DD9CEC42A01BA597C2E9A5B0FB827733FE +:10AD9000F868BF0EF0F7ECDD63C1AE1CB9968DF715 +:10ADA0002D0AB8A95F6743FF8BC3AF0C62E3AC6E9B +:10ADB000E2F8A230CB08375BAF05FA82BD59C0F18B +:10ADC00076A7AA3DF6971DC3FB9D6F767E9E41FF39 +:10ADD00098F9A9E812807587239DC3912E0B7AE814 +:10ADE000FE98A69F4B1B75DF95105C8FAA73E6E15A +:10ADF000770FF17BE8C5BDC0F09D6F34F31F81FF75 +:10AE0000C5FD6A243008D7BD6AB97EE8B917AD9D83 +:10AE10009DD72043E8FC00AF73668DE3F3B3F3F9ED +:10AE2000D9D5F73DF7C8DDA9EEDC79AAFB9EC5F3BD +:10AE30001EBCF7F45750C4FBD3C86F5FFD01DDFBA8 +:10AE4000A347C5206677BE367A083875F8ECC1B3DB +:10AE50000E3E814F905BFCAE402B3F02CE5BB99C17 +:10AE6000F7925FDFDF391E5FD75BFB1D4A47D8FFD4 +:10AE7000EBD5F2F3DA0E9F017E774E7CD792DFA6F8 +:10AE8000FD3DA18EFBC390875877A012F79FAEFDC2 +:10AE9000F79FFE224CBFBFEFE57F4D2614DF1795CD +:10AEA000560FDCD354FBDC96E400E485947032E862 +:10AEB000CB8B11F63BAE7A7DFE14970BE10FD5716B +:10AEC000BB72E9270FCF067CFCE773463BD8CD75F4 +:10AED0007BCD5133C6EDABD12FA2F573ACFE10E69E +:10AEE00021D7756AFDA0FB5EF8578F17F9299C657D +:10AEF0004887329A456859B7C7E88F02BE4EC97E67 +:10AF00003A0C5947BAB7027CFAEF010EB852615DAC +:10AF1000BBBCDC94D2FB3DB54026F03FD6753C8CE3 +:10AF2000FED43ADDBEF09A7EFCA9470769F39F0282 +:10AF30002F24E2463FA6E9C72FFCEC550ADFC5DF08 +:10AF4000A715E2FD957B7E952CD1F797DBF3529602 +:10AF500063FCB649A37744F919F80166B53D65F479 +:10AF6000F4764A987B210758596B8C2643DC5CBBEE +:10AF7000DB88FE68ED4F9F7D1EF23EE47766BC479E +:10AF800061CD4F8FBEF30D5A5FB3CFE89AC5C0B6FF +:10AF9000499E385DD679993F22E870DFCF8FE27DF8 +:10AFA0005EF01CFC54418F35FB0E99C8A8DE782B4F +:10AFB0006B3F84F76BF6A24BFBB9DBF1FECD1FFFB5 +:10AFC000D504FC7CF1A044D27CBDBFAF79EE57C95B +:10AFD000D04ED0A5874EBDE8139DFDEA386C87F9A9 +:10AFE00081FEE8544FD518F2FDBFFF14F15EF37BEC +:10AFF000B31FE65DF3B36F2503FC17947AC6CF4FFA +:10B000006DF1C0F9B71A63187F47B2C6C89ED73C26 +:10B01000FD20F2D9BDC71FF4B0F35C810C4309CE0B +:10B020002F03E6B56AD77C9C573509219FD53C256F +:10B0300063DC7F85FF0E819E8E4E2FD34B17DACCBB +:10B04000F8FB2217604327852B7C82FDFE2921F720 +:10B0500013F53D1878036D71FCF7012FF6E80B62CC +:10B06000013F6D1D6FB56ECF43782FC3A59C401A6D +:10B07000E40D291EC21C5F129CEF928F97A731BA74 +:10B0800010AF52CCBF83F51C780EEDBB8C01EB6882 +:10B09000CD77FCDC311B5FE40528DC0990D7BCE0F0 +:10B0A000617961FAAF0BFD5BE6EB22DF80FF19F0FF +:10B0B00032B9EF91EB3DDB981C73B9FEE214938B30 +:10B0C000BA486505CA7B97319A06ED2287E649287A +:10B0D000EF66CDFD023D7CB0C7C8E555FB9EC2A51D +:10B0E000486A7C1E94F05C64F576339E6BFB6F7D42 +:10B0F000CC9D0F00800000001F8B080000000000A6 +:10B10000000BDD7C0D7854D5B5E83A73E62F6192DB +:10B110004CFE2008C433F98F8664F20701820C09C3 +:10B12000D1501398FC4083A20E8882909008B6A656 +:10B13000D57B331040E4D167DAD83E6CD16F40A59F +:10B14000F65EFB9A6AB47936D041B936DE224D01FB +:10B150001534F246F4A2D64002788B7EF55EEE5AA4 +:10B160006B9F9399332104BDDFFBBEBE862FAEECEF +:10B17000B3CFDE7BEDB5D65E7F7B1D01002EE36F86 +:10B1800073F7FF382F47230433F8B3807F2E3BE853 +:10B19000BF9B018A11C8CB633C3680D512FE3D0BA4 +:10B1A000FBE8675E10B60EE4571EB2AAE3F0374A1A +:10B1B000894A387323FE3113665E9611EE4E049869 +:10B1C0003C7A9C0601BC00F84AA3C9B7EFA709085E +:10B1D0004F5A9C5E05E12F4D6E5F0EC067CFBFF6E4 +:10B1E000F66D4508BB4C0955BC8ACB26CD00584F9F +:10B1F0007FE27BCDF8DB5A80EDEEFBAA201760CD15 +:10B200000BC5A04C17CF1F8EA3E78F9C97F1F96752 +:10B210003627003DEF319D0E84E05B8ECF0336C6AE +:10B22000638A2189A07F0A205C6F03A71FD75D7FF7 +:10B230005C762A442718DE66B78D1E4F787C81EB3A +:10B240003477C92BCC31A3FB0186CDEEE9A174364E +:10B250009E0E84D059A36B381D67101D2704E9F892 +:10B26000EF901333079B7FFEA775D77B7246D3F50C +:10B27000529BB3F2503AC0B936ECB3049F1FBD5E87 +:10B28000613E2A3DB8D024ECEB5521C07108A1A342 +:10B2900046BFF5CF3CCAF45AFBCF4DBC4EF37316F4 +:10B2A000BF05F15EEFABA9A47E6C7F20DA07EBA5AA +:10B2B000DC2BED574FC7F0FEAFAE07E6B7C677D32E +:10B2C00066F04621DF87F7CBBEBD88DA10E2B20D0B +:10B2D000E93EF4BCC3E745FA6C8D80BBDC88C790BF +:10B2E0007D383A0EE1D658D11E4E346F8398E0F384 +:10B2F000E10868E842FE0CB987A3636DC1FD17FD44 +:10B300004E8E56B01DF0416597ED4AF2D7CE7804C7 +:10B3100040F457C8B6E4565CFF42476A0192112ECA +:10B320005821B93581DAE9055EDEC526A6E7BF8179 +:10B33000FBED39846F64742EE1015E977132D2F3B4 +:10B340006EB15558F3467B3418B0DDBBAE0A905E43 +:10B35000AB76EAE970AFAD3EC68F7BBDF771535057 +:10B360001EF07735F8CC908AE377EB9FAF859D820E +:10B370002F61F2E321F9993C5A7EFE51939F7CC8DC +:10B38000E7730888CD44800D56C1EF0A39E73120B4 +:10B390003AF7C960A139E49C3FCEC17DFE3BB6655A +:10B3A00012786F22CBE53ACF278C8F26C79A9C0D57 +:10B3B000929C658E7DAE075F7A7FC643F84AE3CBE9 +:10B3C000EFE5FE0CE1E0CB27337E4BEDDFBC93FCD9 +:10B3D0001E8C7EBFFCC0977702AE3F74C0C2F80CD3 +:10B3E0001DF87DF243D47EC5E2247C87365B5C8405 +:10B3F000AFF740942F9DFAA721BF91EFEDFB2FE50A +:10B4000006E83CC016E6CB3F2966E6E785DEBF9E30 +:10B4100092886FBD1605904ECD07901838BEF995ED +:10B42000081FD0F8FD97667842E4E1BFBB9FF56640 +:10B43000F0B0FC4541C30B24AFB1E0A2FD34FF7670 +:10B44000D6D39B70FDA6EE83E6BBB1BFFC77FF9120 +:10B450004BFA66E8858366D247E74C81A70055D34F +:10B460004B4A658709E97D2E0A27BB0EA0C6F1A8C5 +:10B47000DB9B7325BA083A0C211D685F489735A4F9 +:10B4800027C7A2C7E1BF597A9CBF93D66FEC9D092D +:10B49000B223942E924B3C8FF25925DEBF787EE08A +:10B4A000522ED8C80E6CEAA77330DEBE3FFBBBDB62 +:10B4B000B7E4BF967D473ACC0CFFF6F62DE4BF43C8 +:10B4C00011F628FC1C8C96F3DF7C97DBFF3BCAC986 +:10B4D000F85EE3F9BFC1F177C6F71790EFD1E3F358 +:10B4E0007DE1DFECBEC7E3FB1B2ADFA3EC16D267CE +:10B4F000FBFF231942F63FDEBED7FC7FBAEF11FFF8 +:10B5000047765B5310BF9DE0EF57106E55FD90AD31 +:10B5100009E83CE07CDBA72A7B6589ED773FD96FA2 +:10B52000FE1BA7EC74483C7E2B182A892E72C25A47 +:10B53000F633E4841DEC27A0B9677CB62794EEDBD4 +:10B54000C1E3EF07F2F7BEA3FA0846C5E0B7E07B18 +:10B55000ED9B707D7CAF3DD1606F57F8F907F4DC4F +:10B5600042F34413FCD6A762DEC30DE4EF196D1855 +:10B570002784F819B6B0B821322DA48DBF11F0AAD6 +:10B58000DD887C88701AC127916B1A321EDFDFE8D4 +:10B59000B00BBD053EAFDDF68DE86225BA18C5DFFC +:10B5A000E00FA3CB08DD44F7B8743226ECE8A77DA2 +:10B5B0001BC1E855FD2CE9B2985B31CEA0E734649D +:10B5C00034DDD0B30AA7AF2B2257370FEF57A3FBB9 +:10B5D000083D557A7F5DBA86F3673C3AFF84E89C64 +:10B5E000389ACE41586AE7B82D02DF476275EE8778 +:10B5F0009F925F6BAA369B12709F4BDD9293C8B0EF +:10B6000014FACB26601B964BCE6779DFEEFE55D839 +:10B610007EBBA1336907B697608006050CFD0A4121 +:10B620007B5219E167923C3F2846FC6089C9F92C9E +:10B6300082F85EF8A99247E39D078D387EC9D2C98A +:10B640000534FE083D223DEF917CCF521C9A946553 +:10B6500024FED582907BFCA9EF433AD7A9FC0C3895 +:10B66000E218FFA551ABDEACC3FE45EDEE1637EE9A +:10B670006F8971F823D2074B4A274BED12E3B305CC +:10B68000F0D5D3AA7C2CA1C171849FDBD4C2F4581D +:10B69000603F83F4955C37C897275C2D5E35C219EF +:10B6A0008D0F72907E79E6E1818D88B7FD88ECDCA4 +:10B6B000ABD07E81FD72F80AC721BEB5EC6307E707 +:10B6C000A96E2DAC5A108FF1320939C5D9ABF66C81 +:10B6D0004D28E27D7AA3689F8D07B712DD47DA0F08 +:10B6E0007CA0EF7F58DAA66B6F71E8DB3BE76F0B4E +:10B6F0001D3FD67E6A2BF3250FFA9CF18F4B2EDF70 +:10B7000015E2230DBF3737C1328ABB20C1A5D490C3 +:10B710008F4A8B4DA67E03F78FA693A0CB32195A82 +:10B72000E8DC5697C10A1AAFF54F4A117C9844E3FA +:10B7300049FE08D959240E2E85E28CB1E63B2943F7 +:10B74000EB95E2B80C15CF93314A05E3691772F413 +:10B75000F6C2CC3D3B1C63EFFFED858E692938DFD7 +:10B76000D25E940694C7B2861526B22F4B57CD935E +:10B77000C8FE1CAD0E1808E6A520FE086FBBEC9CA9 +:10B780005C13B27EA98A7FE70F44FC193E7FB1DAD1 +:10B79000FFAE01D650FFBBD1CAB46539A1E3ADDC21 +:10B7A0005F9AA2303C1A25EC5C1E2A0E19CF4F7509 +:10B7B0008AA01BE420DDA707E9AEAD3B169D34B996 +:10B7C0005B0A42EEEE6C10FC25FC6B43F0FC964AE3 +:10B7D000B7CEAD62DDF0F91E50D7198BEE0FA87C05 +:10B7E000C4B899E9DD5925F9389E04978DE2E1D571 +:10B7F000EAB9ED44CEFA91C5756FC94EC41056979B +:10B80000AE663D0CBB455C6CC57F9753305CF51B49 +:10B81000C3F209FD469287BAB0B8B75A8D87ABC359 +:10B820009E87C7C177A5D88279944CC693F33A17FF +:10B830008ECB4E8AEFC7920B7B920CC6C260BC9B2C +:10B8400037DFE026FAFD71EEA55ADAE786EA14033F +:10B85000D99FCEAA0B712B7382740C9EEFD4AAB41D +:10B86000C260FBCD6A73838FF58C88C38FAA717811 +:10B87000676561C47C5B90CE9D9517E348DE46CE3C +:10B88000035CFD3C68EF8DADAF34FD84BA8DE85F9D +:10B8900069F16D4654EB9CCAFBEB44DB4EF9B6B242 +:10B8A000AA3DC924F71572CE93DFC7E76F56592812 +:10B8B0008D34A2C78E3DF17432E5519CCFADAE8080 +:10B8C0001C4A2B78B62692BEA9929C9CC790C04D6C +:10B8D000F271662AB07D8EF7C5EEF1E258B94A9C46 +:10B8E000C3F8DDB17B6E41FE3CA1EEB3BC4ABCD7D0 +:10B8F000D9A09797FB54BDBEBAF8E9236908D7567B +:10B90000AF2CA6F9F7D0F940FADE4772437CAFCAF4 +:10B91000DF4466684D43BE0429B44D577F4EC8F8D6 +:10B92000A5E0AC299482EFFF79D7D33F2172AEAE68 +:10B930005C51EC0F912B2DBFB9F6197DBE25BE4889 +:10B940009FAF59EDD3F72FC531B6385AE7EAF2F772 +:10B95000AB30F9D3D61B8B6F9ABC8DF8412AFD7B97 +:10B960004AE44AF283F3E25C1E77C8393CA5D2531D +:10B97000833DBD7F79771DD9CFDD1667BA42C638C2 +:10B9800076811D975AB6667E1199AB326BFE216A9D +:10B99000DFDE826DECEF4B31F1B83BEC1F54C4623B +:10B9A000FBAE24E975822B14C7CD7108DF53F5D2A5 +:10B9B000DD59F35FC7ED4295B3C6ECE13CD9CE0942 +:10B9C000B9748E701DF4B8495F790D71A3F7331FF8 +:10B9D0009D6F6308DDCAAD11600CA14F853D56D740 +:10B9E000BE2569B2EEFD858A43D77F6B56B6AEBFE2 +:10B9F000CA99AFEB9F982AFC9C23BB2FBDFB3DDC73 +:10BA0000E7915EB39D487884E89210A40BE2FB387E +:10BA1000E17B64D683C9F7205D3F4A31F2B88F4895 +:10BA2000968A83FAECED2A60F97C1B5A4E7D8FE4EE +:10BA3000B85AE8AFBA27334DE4078251E4FDEA4132 +:10BA40009CE77A55AFD5969AD8AFAB73EBE5A85A79 +:10BA5000CDFB555786E74D038709DFA525B29DFC31 +:10BA6000A07808D1830E9233A1EFC695B7272F5D3A +:10BA700047E7F43F53F4F9E35F49229FED45FD4B5F +:10BA8000FED758FA6244DF85C9D9C454215F1A44ED +:10BA90003D1143FA22CFAC7F4F832731BE32E23CC7 +:10BAA000EFB55919BEDF6667F87FDB92187ED0A626 +:10BAB00030FCB02D8BE1C4546147E25B919FF1C132 +:10BAC00079E2ABDCE6AB9D97703D772460E0737262 +:10BAD000E4A6EF443B6C6A5C80E3525263B9FFE337 +:10BAE000920F6D524E505E7B02A76D94E75E063E4C +:10BAF00013D9C9DBC16FA27CE71D10E0F65D808E13 +:10BB000034C215A030BC1B5C9C0FBD070220C9AA23 +:10BB1000BF7A1DC02F9EFEF10FBDB81EB2C8457A78 +:10BB2000105D89EDA1E761A54AB797525CCE54D26A +:10BB3000C7712DA7EA484FDE6402F2174992C82E5A +:10BB4000C4AB71CCC74FCE8C5879057BFC8F292BA9 +:10BB500067A71687D2C763A6F790BF0D6ABCC3F963 +:10BB600004536CD6DE50BF677EAAB04F871C2E17D9 +:10BB70008DFF05E574190F27FB351ABEA8E1A55AFC +:10BB8000D48BB7A5EAED599E19F525CE5FEDF49853 +:10BB9000ED08CB76E54704AE889F67516AA21E3F49 +:10BBA000A12F84BC8CC53F8DEF5F576E34F9F8B37D +:10BBB000C3753BEDCB68C0B81CD731C63524AD6426 +:10BBC0003FB09EF9BF5295AFB1E426B7E4C39D855F +:10BBD000149F14C94E52BFB93DFD36D20BC7280E73 +:10BBE000CA237BF8715921F2EB680F7A96C8AFA38C +:10BBF000B64015B53F9E25DB3763FB63497993CE8D +:10BC0000AF778F6C177191B3DF85ED7B2B630B766C +:10BC1000606BF15C13DBBB331EC75ECAFFEC56E9F9 +:10BC2000FB89EA1779D11FA1711F575F3AFE00F90E +:10BC3000514FC4C7492C07ABA367733BD52062584B +:10BC4000A789FDA15D32EB97E35537BFB50A82FAAC +:10BC5000EA8CAAAF34BDB45488139C016F22C57D11 +:10BC60004B557B58DFA0D73FB555FA764398FE89F0 +:10BC700027FD133D5A2F85EB9F1FA4EAF54EB8BF51 +:10BC8000F5892DE0673A554A4CA73A8C033D79E493 +:10BC90000FE49BCED8480E2496034D0FD555617CFA +:10BCA00058447045A115DF2FC77885F22875DD4E01 +:10BCB000D3BDB650395B61068A6376AD30D3FDDF04 +:10BCC0002187FB299243D39E7285F47467AFE063AA +:10BCD000DEEE77DEA5FD2FAE5EB96D32F1B31B054A +:10BCE0009EF8B97B6614F95DC77C1713202754DED4 +:10BCF0005BCC44B7B2DDE7AF23F90D3FEF40C6940C +:10BD0000E23C70275DD54F53DF1B4F7F79CB208BF3 +:10BD1000E2D14109FC12FAFF83F3279611BE83D3C7 +:10BD2000CC460133B85D2197BE6623BA9600DBDFAF +:10BD3000C1C92556D17F33DFD3FD31223A97F63B77 +:10BD4000771874F672DE17569DBD6C0C18F83E6FAE +:10BD50003EE8ED70B9556F872BEC8E303BADB7C325 +:10BD60008B02B60F483E06DF58CEF1FE42253FACAF +:10BD7000DFE02579BD356B966E9E1A10F7B78B11F3 +:10BD8000CE46B808E14D14F738E78F7A8FEE731777 +:10BD9000972CD4CDDB63862C928F6129D2B917E51D +:10BDA000B1C6EAD6EF0F037BA2E39658AB578EE1FC +:10BDB00036CCC6791A5BFFC27236A7F52BF6F3F3C1 +:10BDC000FD5DBA71857D3DBA759CFDF6720A7B0BEF +:10BDD0004E385F235814709753F832E39396D70880 +:10BDE000B65AC53DE0A508011F34C056CA433E28D7 +:10BDF0007BD690BDB864F06591FD889C72F3349257 +:10BE0000C79AD86D840EDC0A9ECF496FCDFADCD775 +:10BE10004EED795F75C9648FDA9F93BD9618E27312 +:10BE2000D5843729AFD925B13FDE6833701CF75967 +:10BE30005C57EEC610F9FFECBBE25E14925C492B36 +:10BE400012284F96C6F9147779944B46FA34BD9C64 +:10BE5000C9F9B23733E61BD350CEE4A80556615773 +:10BE60008DC323FE440AF5BB1E9E46F9B87299F5B0 +:10BE700009DC62E23C4CA4419928EE01857D31DF6A +:10BE800062E2B87A739AD0AB917F004542798B8C8D +:10BE9000F7C8D3691C3294CEF7C8F92C0117D9E53D +:10BEA000A969225FC089347CAF26F1F8F39477DB6F +:10BEB0009C16C5F3CC28711E3491636F37DA490F95 +:10BEC000479F70DBA7239EDD091F79691FDD27FAD5 +:10BED000E7D279DD9CA688FC41956BE37C5A6FBB69 +:10BEE00009C8AFEBB62F9840EF43568681F2711B1D +:10BEF000280F80CFA3972BEF507E06FAF03DDA850E +:10BF0000D1B58ED6DF71C38042EB479F009788CFB3 +:10BF10000249EE28B22F388C086E0C24DD1135FA58 +:10BF2000BC7EB8B33842C1FD74BA9C114E821D4824 +:10BF3000AFD94C1F0A7BE07F4A424F00241F5D802F +:10BF4000F33E47BEA2E8F703D27B8759EB0788C8C8 +:10BF5000E2F858ED4FAE5D90C3F906ADDF0B254812 +:10BF60005759EBBFBE96E60BCE2FE6D3E6BF292D81 +:10BF7000F9E8F61CA28FF083C1684FA4FDC0579763 +:10BF800025F22F1E50E3CE48D9994DFC8C37382727 +:10BF900013BC3ECE5391867CB11B940C92D3F818FF +:10BFA000D7A4B912DBED7DBB48CF2C30B1FE6ECEED +:10BFB000DAC9F76FDD66E7A7CF24D03D3C9E3B7C16 +:10BFC000DE6D744D2840BC9AED7FE1F3A4D9FB4EA1 +:10BFD000C3089E2E0CF1A13388B78BCE577C902ED0 +:10BFE000AE34ECDF1142272BB657AAEDD6676EAC04 +:10BFF000DD42FC5965E5F879A37A5677C441878C10 +:10C000007277316BF652B2AF1777A29DC535BAA9D8 +:10C0100093EC4C52A4EF595A33C19D4579AB23FDA3 +:10C02000C23FEC42FEBA68434A866EBE8BA51FDB58 +:10C03000A6D33C25C21BBA3B600685F48311FC16CF +:10C04000D423DD252BDB5313480E9538A2E3099A40 +:10C0500007E3BAF7335CEBD2388FAAE511BFFFB51F +:10C06000F288CDAA5E6A2ED994C375160B24B6EF5A +:10C0700003E942CE9B5B3F67BA82D1E3247E36B6AA +:10C080005E64FDA5B5073789F3DF6182BB6A1036B0 +:10C09000FEA77C17E5A950DF6D27FDD708AF9A37BB +:10C0A00084F85FD0757E44DFE519C6F7CF567AAACB +:10C0B00078BD1AC9BE84726BFF92BEA9D688F6AC51 +:10C0C00026C2BE44C2F68F9E6D14ED69F625066C3D +:10C0D000FF32ED5F457BB2FDC70627EA95674F8BC0 +:10C0E000B6C3FE16B55F7F466D4709FE763E3350F8 +:10C0F000EB653FD1C6F9F80B95113ECB55F276753D +:10C10000ADBFD5C509A3FA6549E8C306A167CE2E20 +:10C110009CCCFA0AD25CF906D287B5530BE8DC3F17 +:10C12000ABEAAF8948FB12FCFD173C9756A4575366 +:10C1300046FF9DD1A9E4673C7A5E8AA6F50EF07AA7 +:10C140008D545D84CFDFCFF2FC33F1FBA81438456A +:10C15000E7A5A9FA5806E9F5FA0CF5DCD987D388E2 +:10C160002FCBC0C371C432356E33A07092DF546FD1 +:10C170004BE3F831DC0FAB033FC719E1FE1884C66F +:10C180007D32D509F4DF69463C4C2A1D9AE21CE950 +:10C19000340EF13A40E7F8A8847862DB94D03F513E +:10C1A000F8DFCF2B129DE32C2BDFAF46DE7022D7BA +:10C1B00073057E77B5A11DC423F4425B0FC3FC0C4D +:10C1C000607D3DC918303B719EF5AA9EAC901B590D +:10C1D000CF5FE87140681EED844ACF981E916F448E +:10C1E000BA3A89AE09A9E037205F137EF3C6F3940B +:10C1F0008F3FA1EA7B8D8FF3264057445C90DEC8C9 +:10C200000727F141A33BD2B390EE090E7D75B89498 +:10C21000F858AFE2D51D29CEF9F04B113EB2FFE13F +:10C22000789E4BD3F2937A7CA5F46BC3534ABF3606 +:10C230003C25F59C8E85AF765E353A69E715543D11 +:10C24000B5ACC1B17787146CD75639387ED3F01CA2 +:10C250002D3FCF2857929FF1E466205DB30B426FCC +:10C260006874D4F0D3F44037DDB7E9F08BDDA3C7B1 +:10C270002F96CF5374EBFFE1717294919FD767258E +:10C28000EDA1F826BAFF345D62C1B4F4145E2FBA92 +:10C29000EB5320BF3ABAB597DF1FB59FB07D68FA60 +:10C2A000307C3F9A7E1CBD2F554FAA7A53D397738B +:10C2B0002992A1F1A48B25F27F3D3ABF6E3EDC1797 +:10C2C000E6F7DE1F969FFA9EEEFD5B9236E9FA17BF +:10C2D0002A8FEAFA6FCDFAA1AE5DED7C42F7FEE25D +:10C2E000923DBAFE1AEB73BA7669A09FFDCA236D20 +:10C2F000951CDFDEF4C930FB977E350E7E558D83AD +:10C300000F511C8CE7F3758A8311F6B539F9F9BF23 +:10C31000B695303CDCE662D8DFE666187EAE17BD27 +:10C32000F86D23F9E925FD1DECD74E49F5AC4D47D5 +:10C3300039586CF0B547213F660E083F1492841FB0 +:10C34000A5D9C7AD0767FD91FCA8F8C3324428639F +:10C35000EBDFE82F647085C87B7455005C280FD133 +:10C36000941FC1791719618B05F95B6333FA2711A3 +:10C37000BFD2855F48EA9AEE0F1BACC0F78E0D0D59 +:10C3800092B31DF8B997EEEB10FA3D058C8ADB3AB3 +:10C3900051BDC7C31F8B11BC349FEC92E126B2DCA8 +:10C3A00009F14608C9CB2DC1B5AFC771B7D9BA38A5 +:10C3B000BFB3AC6F73D30A7C0E5BBCC5EC1F697650 +:10C3C000DBFBAEE1F28D5FC36E933349F7CD92880C +:10C3D000F7BDB146CEAF85DBD38A7491FF59D4EE59 +:10C3E00095A3295EF913F03DE162D5AE223DB65B1F +:10C3F000E282E75093FF1ABBD19F194D76E787E59C +:10C4000034AEF1B8C2F408F713B47846937BD4F78E +:10C41000EDF4FE8513C07EDBCC415FA013D72B1952 +:10C42000EE28A73863F6175DAF111C2FEED1F0EFA1 +:10C430006D6B60B939D0E661E86F5BA3CA630BB777 +:10C440000FB5B572FBF5362FC3BEB6EDAA3C7670BC +:10C45000FFE1B65DDC3ED2E653E5F2397E3E40F4C4 +:10C4600043BEFF385DD40180753EDF778051C0A0A8 +:10C470003C285EB88A3C342609FD1C2E1763C9018E +:10C48000804FA1FB90DBD01E921EBB1DBCD3A96EBA +:10C49000A3617587698EF4CDE5A1DEF6B889EE2338 +:10C4A000C2F5DB525058EE46DB7B8FF35AECBDA64B +:10C4B000DF648CCBC84E59E4FB9D9427F8FAFE85C7 +:10C4C000A785F0187F3DC1175312FADE71944F7C97 +:10C4D0007B1FE5ADCF16BBFA5CD215E81016473EC0 +:10C4E0003C0D54BBF5F5F0D3F25BE3E1F79B0CD7C1 +:10C4F00049D2579A3D8BE4338FF03A1BD70D9B2DD1 +:10C500003EDF668AF77E1BC1E7116CAEE49A90FCB1 +:10C51000CC6955DFDC19EF3A9DCEF9FEC17D3FA312 +:10C52000F3D23D81F329E1F1D2E7FDE59342FDA588 +:10C53000707DDA6CBFC8E76E949D970C6CE79B0D1D +:10C54000E0A13AA1020B5825C4B535A3EC7C3AFB17 +:10C5500025A5FD2E5AD76EBCEA7D6473EB799E7FCC +:10C56000CC7E83A8476ADE5F6C5F199217C8CF90B4 +:10C57000D4FA0EA3FD8C3548BF6B95E7B9C30D3ACD +:10C58000FDF037673F5DBFD0F52F42B343F45DEC5C +:10C5900059C87CB88D22A2AF95D77779081E7278DA +:10C5A000323348FE29DB88FD675FFE6B1AF9D167DD +:10C5B0006F9A659F0FA3F5E1B5EA3F4DEF697A7079 +:10C5C0009B19D674E9F23609F994B7D1F8312B43A7 +:10C5D0005F5F117ECE86F2916188EFD04BA2DE6D57 +:10C5E000282AD22721CB5DBDBF3F41F545E0D4DBF2 +:10C5F0006F97D5C675A485CB9D6CC701ED38A9167C +:10C60000DCE960E8BC1546110781D1997547C8B9C6 +:10C610006957EB189E43F86BC43B6679C0A8849CAD +:10C620008B9A0C61E7E62F5B0064FF16D9D578C1C1 +:10C630000A09E437C357177396A0BD5D44FE01CACB +:10C64000736BBCAB96E8EC7DA43496EB8F28477AED +:10C650007D50EF54C855492BE87C2418F95C6AFAE0 +:10C66000A4DEF6915936507D8B93F91A4E1780C08F +:10C67000EB9D38CED523D929FF1E7E5E5D3D074F49 +:10C6800090FF3E9E1F3A9E1E0AD7131A7DC3E9D91A +:10C690001AEF6EC9480CEA91F0FD6AF9DF2608B07E +:10C6A0003CEE98BAD74DFB7A4A52C43D3074B8A6D6 +:10C6B000205FD7F7DC0F34BE401675A3C30B45DCF3 +:10C6C000137E8EB7A872D3A8EA858278B026113F70 +:10C6D0003DC07A72686136C71B3FCB8813761786D8 +:10C6E000336A43EA1235FF6550FDFEA2AE27C24B06 +:10C6F000F95D6DFEC73262795C9DF5739DBE5BDFAF +:10C70000FAA54E4FADCF1179BF8276A5F07E841B7E +:10C71000D5FBB81793DD3F227AACEDFAE1CB871554 +:10C720005A6FF777DF253EF7D984FE3D9CC8B419D0 +:10C7300092F4753575D6F3AA9DDFA3BBCF3956FDAC +:10C740000EC7B375DD13BC447F0D2F2D0ED6F472CA +:10C75000D3814F4F917D1E94CE9F7A88E8F79285C2 +:10C76000FDB046C23B9EE3E79F933CBED06760FAB4 +:10C77000362DB4F07D0D1895E9B55141BA0C7D7A8E +:10C78000E57A1F0D3F6D3D0DAF4149E423B4F7BA83 +:10C7900055FE9C57EDD73153FF39E2CBD9976F94B3 +:10C7A000288138F23CB63F37D616E4CBFF2B7FE822 +:10C7B00036107EF109C3A6EF98915E835D9D26CE6B +:10C7C0000F7F433F48C3B73D0A7C341FB840B14F89 +:10C7D000E4D49CA8E3C34D1A27527C26DA92EDF5E7 +:10C7E0002F495FCD5521078BD85FAAA2BD4D6A01A5 +:10C7F000C2CF0A1D0C77484E85E03CC96D14C59D1B +:10C800003EA6E7CDD032959EDF647526190D740FD4 +:10C8100028F2834B62B72F62364E846D742F6234D8 +:10C820007B4D1349FFD5C6A8758C824E5A5DE11A1F +:10C83000FC2D45BA18634131E2FB6BD03F37217DB7 +:10C84000EB572FFB410EBD6F2F653A6A7589348E09 +:10C85000E8B8F4704B35F935DF3EF8A3232E7CFEA3 +:10C86000695CC70CC2E7CFFD7B737F89EFAC3DD617 +:10C87000CBDF0535FAFB6F26F2AE8761B63B1AFDBA +:10C8800097433FC33B6198A107ECDCBF129C0C5758 +:10C89000819BE1BDD0C2F064F54F9AF6905E5CBC1E +:10C8A000DDF43904E9B02E76CB0C5AC75EB62B9D69 +:10C8B000F58D7AAF147E4F51136BE37B11EC177536 +:10C8C00097A7227CED0EBE97B06426D2FD85EB0EB5 +:10C8D00041DF963CF2CB8662CD20D1775789428FDB +:10C8E00078CF02E757874CEAF8F30AB78BCA0BD820 +:10C8F000AF814B0AFB5F73D47B434DCF16DD28EA33 +:10C9000078E1B2787FEEB0BEEEAB88929234FEAFA3 +:10C910000ADF3FCCFB22BC2E4CAF877F9C29EC4E1C +:10C9200051BCA125346FD19E3451E4FDD4B645B13C +:10C93000731EE3A64C71FE86A20D2C1FF8536F9D4B +:10C9400041780A7ECEE9FD832A8718504E0C7E2757 +:10C9500037C7E83F48CFD7AB7A1EB530DBA9529234 +:10C960004BA2538F5EEF43D28D7CAF3F5B45418B33 +:10C9700053259C6B791CC971BFCCF20AC30C5D6056 +:10C98000677B5E064E860BC0CD10E59A612574303C +:10C99000FC167431AC827E867083D35980EB1BAC5D +:10C9A0007E599CDB87ED7C0FBB70B581F2D045DFF3 +:10C9B000167598E3D1C5A3D2717CBAE0019E712DA2 +:10C9C00074F108FCC2E932358BCF8F46178D1E11EA +:10C9D000E04B223ACE85804C701E08FF663E1E4317 +:10C9E0006A97838BDB15E3D2C3DF4EF76F25018F88 +:10C9F00091F318E1F428177212AEC7EE53F76F20C7 +:10CA00005C13837A6767A6C2F2A2E91F3C677CDFEA +:10CA10001BAE97B4E74513CA2E2AA8C2FF21F3958F +:10CA20003A23DABBA2C2B28D549AB4F5E707457B2C +:10CA30004ED98B29D87E24F3B53ACA8317E59515CC +:10CA40009A9C009BA443750BB0FF1133D282E33C48 +:10CA5000C726CA235A1E02D6F3568B782EA78A38C9 +:10CA600010DFF3461404F1B35884DF96B35CD92881 +:10CA7000219D17267B36D139D6E6036B06D7A94F01 +:10CA800051FD959D996ADC9DE02824BCF724BB7775 +:10CA900066D2B98812F7A53B33051DC682DD99AE73 +:10CAA0001DF47EF8F3A17FC30571FC93999E0E5A85 +:10CAB000BF79C257196477CFE51FDB167004E543D1 +:10CAC00042222D477CDB5DAA9DD0EAD0C92F22BF30 +:10CAD000F61E3317A714B93DEDA462662E1F66BD7E +:10CAE00086F3FE8CD66D360792F371DCE375A7CC26 +:10CAF00082CF53059F55BDB0FFC01B0F4D114D3761 +:10CB000084C871F3812FFFF21ED2B5F982CD49AFEF +:10CB10000F458BFDCEE97D6223D7A5824D776E351B +:10CB2000B99FDD63E1EF71E6F466DF43EFCD3D369B +:10CB3000904AFB9A371068A734D2D0FE77A6083CFB +:10CB4000B47BA04BD237B19B5ADDC486B744DDC459 +:10CB500006329CD4FEB5C4F16D539F89EFED3F566C +:10CB6000F5B9563FB946DDDF59B22B327D477A37EA +:10CB7000D77B804FF8B10AFEA3F337F3845E9F366C +:10CB80007585E75F45BD59F8F7CAE1F51E7FC854C2 +:10CB9000EB3DA6C134C65FAD6F1C6BBF5A5DC7636A +:10CBA000E03A9AC97EA75B26B92B368ABC6085FC21 +:10CBB000B0D34EFB9C965320EA4245BDECEA08B147 +:10CBC000AF571DA26E66C3933250FDC386FD66FE4D +:10CBD0000E720FCA4409F9B7594FB1DFB05AC551A7 +:10CBE0003B27F76D97F81E0F76C7B36CE5EDB3B82A +:10CBF000887F79FB26B9883E7966E1E7EED967D967 +:10CC00004EEDF6AD915ED27FBF8A1DBE8EBE2F6EF9 +:10CC10008F50EBB2711DBA4FCB4B194E217B2A6559 +:10CC2000093BD2AEDA53ED3E51BB77DE1095318928 +:10CC3000F2E023FD01A3EE3BDC76D5BF2D22FCC83C +:10CC40005F6B31897BEB0881FFC13F2D9D40FEE684 +:10CC50004B46F704AA43B9703C2506AE724F57EC19 +:10CC600047265C254F50747C277FDF52B4CB28E8E1 +:10CC7000A1CADB2B6D2EF8D014A4B7867F85FC7C6F +:10CC8000B999EEE356819DE5F08DA7DBADD8DEF0D6 +:10CC90002857D823AA5931643F8AFB64FEEE647694 +:10CCA0009FA84B7A05DC317E6C5B920CA084C84B4C +:10CCB0008412094A48FC3E212B4ED78E725EA77B18 +:10CCC0003FA62445D7DFADD6B568F5BE9AFF18EB71 +:10CCD000BA41376E6EFFBD5C87195F59A07B0E9F0E +:10CCE0000BB92FC17F224E6C91E95CCD0900FCD4B9 +:10CCF00041DFCD3893488FCF1ED49F0F8B5AFF54FE +:10CD000012E80092EF88E3465D3DB0C576337F8739 +:10CD10006319A73E2A3F4B3D2F5361AAEEBBEC118E +:10CD20007AEBEBA56640DAFF2A2D22FA9AC087FD3E +:10CD3000176804F54F059F3784DEDAB97A05BAD84B +:10CD40006E26BAF5749FD4A0A7FB648F9EEE53D6CF +:10CD5000E8E93EAD454FF7EB5BF5F47578F5744DBA +:10CD6000DD3E5BF77E7A4799AE9DB9EB5BBAF7B3D0 +:10CD70007DB5BAF68DCFDDA67B7F7AD74A5D7F5E23 +:10CD8000CFDA6B92837CFF06DD7B9A1C14F67DFF65 +:10CD90008A72E0C57FAC0F41D4C79620DD29CF3918 +:10CDA00016FFDBA50E8896BE39FFEFCF52FFFF18A6 +:10CDB0001AFFAF515FDE437615F5CCA23E5147B561 +:10CDC000C866E57A2B94972CF20F2E40A493EECBF5 +:10CDD00035FBEE56F5CB629B91EDC4A20942FF688C +:10CDE0007556E1F19864EBFB92F2218B4BA4B0FCF9 +:10CDF0009ABE5E7BBCFB82E27EBFAE9D7F1C64B2AE +:10CE00008BC51F29ED51B84EE180B87F088FFF8A8E +:10CE1000029E7632BB3307D10C2B14070A7CB47BFD +:10CE20008AF0B8051EDFCBFB34ABE7263C5E7CD036 +:10CE300080FE442AD75FB13F79C9302A7E4C32B296 +:10CE40001FE961BFF2B1699E67B3500FFE7E24AE49 +:10CE50000CB40BE27401DD0F0DD1DFEC0C34D4BB4C +:10CE600072F87B4FAE63392A2DA9A7EFF45107DA88 +:10CE70000333447A857E7AB33CBFA2F94E4B228EAF +:10CE80005B51F2E1532F229EBFCE127C9CB4BC8B2F +:10CE9000F338ADF1AE17B28AC7AFBFD0F2565A1E03 +:10CEA000ABBBCDCF70428E93FDFDF07C52C020F223 +:10CEB00003DEEF8BEFF43E23A46605EB442F6C37C3 +:10CEC000717D05A871EF1D2A1FB4FCC072751FA7E4 +:10CED000718A35683FEFE8F93DF3635DD2A09A5758 +:10CEE00068715249E3DD536D5C4701AE42A7C81F2C +:10CEF00069F98229F2D7F17BC6DBFFBAA44F7579B5 +:10CF000026783EFE9AEA2983FB16F39F5E28ECFE04 +:10CF1000E98553B84E3138FF39CE5BDDD1F2279D1C +:10CF20007CDFD57A5227CF2BBC1FE8FA0309C32632 +:10CF3000CACB052AB31790DF807C3F477C0FBC3CEF +:10CF4000F9E6DB919E675FB2CCB896FAE775499F28 +:10CF5000F1FA036DFDCC576D7FA7DA4E703BD0160A +:10CF60006018BE3F2DAED7A0F955607DA0D5438E89 +:10CF7000AE4B7471BDCAF6EC14F55E8065171EDC0D +:10CF80006852EFF73DBB280F7D69E9847CCA9B0E90 +:10CF9000A8F5A7036AFDE9805A7F3AA0D69B0EA8A0 +:10CFA000F5A64326DB76CA0B0C4822FFDE34CD13F0 +:10CFB000934DFEF9DAE15C3A67CD79813BA95EBE1B +:10CFC00076A2272E1BD795D0AD9FCC1556DE0CF23E +:10CFD000FF3E317873A98EA8FA17FBEA293EFA249E +:10CFE000D27B8E3C8C8AECBDF5141F7D6216E76FF8 +:10CFF00049F6CE7AAA137ACB2003D57D7A5F914485 +:10D000007D972D60A6FB9DEF257A92697EAA83A26B +:10D01000BA767A4E72A9E511874CC28F1B52FDB9C0 +:10D02000F46C713F921106E76583F84E548515F252 +:10D03000CE0CFEBE9CBE8B72F0FA2EAA13F11EB06F +:10D04000707E22BC7EA8E07716BF1492872CC9762A +:10D05000F0B94F4815DF8927DC1AE1A3FA1208F46A +:10D0600027530DD408BEC7457DE559CACFD2F9A4D0 +:10D07000E2EE90FAA5926C119F36BD71FA14C5418B +:10D08000EF67794AB3138379CEA6E8839C175A9445 +:10D09000ADF07A8827E7EB2D326C61BE5803661A33 +:10D0A000375E7E79AC7D9FBDA7FF27390EAA3F5220 +:10D0B000D269BCB62EE2B188F0D0F6ABE1119CE7A4 +:10D0C000EAF2AFE54DB5F6B1EA4732E8DC14501D9F +:10D0D000D715ECE32A950E032608ABF352E9065A5E +:10D0E0009D570EEBA7B6EC2BD779DDAFD2A900ED9B +:10D0F0002BE5C72D9168DB0B82F3E2FB1EBAE758E4 +:10D10000DEE278F170027D27369DD22C237868F319 +:10D11000BE98EC5A971D724F83F226FE7F150B23A3 +:10D12000583E9A0E9C3C45FF3F81FB7E3EBD90E8F9 +:10D13000AB8D0BA72FD2751AD1F3A8C16F56EBCCCC +:10D140005A89AE2FF41DE53A2E8DBEDF949E43D34F +:10D15000FA392E1CDAF36532DDDB34A9F7444DDAF7 +:10D16000BD45B73E4F83F4F052DE60F47D05F0BD5F +:10D170008745B51B166DFC54A36E7C4DB4FB31A2E4 +:10D18000CBCBAA7EC0F77D06351F4C7666241FAC3C +:10D19000DAA16255254927441EB89820390639314D +:10D1A0006C978AB4F5102FE2DF36C9CBF65CCB1B47 +:10D1B000B5ABF65BBE7B23E7D34AA083A14576B02F +:10D1C0003DB4BC27F22823F9A0475FE7F8FCBF0075 +:10D1D00074C42079104D0000000000000000000021 +:10D1E0001F8B080000000000000BFB51CFC0F003B4 +:10D1F000096771A2F2CFA3F179D0F81B3850F9FF7B +:10D20000D950F993D0E4D1F11A26FCF284B0253339 +:10D2100003830310BB03B11F337EB56544D8F540CB +:10D220001242B702E99D40FC10889B0519189A84A8 +:10D230001918AE02E9C98294B9171D57F353D7BC28 +:10D24000514C1A6E9243E5D76832302CD762607821 +:10D25000A70DE15721C933EB3030D46A42D8BB95D2 +:10D260001918DA806A8AE4B09BBB0728DF0E94178E +:10D27000D681F00161AA21036803000000000000CC +:10D280001F8B080000000000000BCD7D0D7C14D525 +:10D29000B5F89DD999DDD9CD663349366103214C66 +:10D2A0004280800136218180513721D0A051C3872F +:10D2B0008A08BA41ACA8A011A9C696360B492044E9 +:10D2C000D040FD00AAB87C88D4A76DB4A8BCB6EA4B +:10D2D000225883A51A1595BE6A1BA81FAD4F7DD194 +:10D2E000D68FFFAB7DFCCF39F74E7666F385AFAFB7 +:10D2F000FFFF8BBFF672E7CEBDF7DC73CFF73D774C +:10D30000D6254F61EC3CC64EE31F94AF4B8CB1D297 +:10D3100078C9B4E042E6676CB9EE34DA7219BBC181 +:10D3200011EC344AE0F93039F89081CFC756311FFB +:10D33000630E7C3F8BB142FC3FE8D7E4958331EC30 +:10D34000F786A3CC61C4C74F2C972B8CE9C550B28C +:10D350004D5D0E188745D59E6E8DD1DFE93CC61A0E +:10D36000DEFE74E211B30EFF0BB064FFFB67C13F3A +:10D37000A6B169A71D8C7DE69D971263038FFF619F +:10D3800023CB51C630F66563CFC42363FAB6DFE022 +:10D3900060F51D855032F6AE2B0DD71B715E3E91A8 +:10D3A000B1290C26CD80BA1716313DBECE1BF64BE7 +:10D3B000394A411C9EE55EF9A4AB1FB8198BD8FA17 +:10D3C000C3F8311C3FB1FF80FD14F86F2A63D40409 +:10D3D000F8DB2985CBF0B9CBBF34321C1EDDF068F9 +:10D3E000050B17C6C747B86B27C6E719105EFF992C +:10D3F000C13B103ECDF73EF3AE5BCFA05F93CAE9D1 +:10D40000A139430EAE637DE9C1C47F93775D66D8D1 +:10D410003B30FE810E0C1DF1EFF072BA79B3A90C0E +:10D42000B697DDCCDC444F7DE018824E96209D24DB +:10D43000FDF3E9A4E17F1F9D7C1FF1F5BF854E1828 +:10D440006BE7728419CEDA646BBD9EF1BAF99EA5C2 +:10D45000CC0432E05332877FFDA78E49587A2228C8 +:10D460001F1C7EE5FD6ECB3E9BFD54270BE3FE3477 +:10D47000314E77F407202A81E01E945B7B9993DE7E +:10D4800053FC1A8DA3E8F58417C0D75E9AB7C68EF1 +:10D4900047C642049F9A5990C2F197D6EF7A7736E1 +:10D4A000D64F52544B5D650B110E401CAD53FD2EF3 +:10D4B0008BA603FCECEBF9C6BC89038F938837E09D +:10D4C000AB1361E0AB488633F8108BF353E2BA9E9E +:10D4D000EB5D97338278B2ACEBB9C1D6D5943C36CC +:10D4E000C54A17897034E3BAC6C4D7D1FB1CD7E745 +:10D4F0003DF3FD1FA8BD590D05EA60884872FFEB9A +:10D5000053717DF0ECDFC4FA54AF93F60DD6F56F8E +:10D51000FDAD4B61F52129B7EFBA145D23BC98F33B +:10D520002ADAAD93942971F83E603A1FBF77FE2046 +:10D5300043FE70E88CFA1D63E10F70FD40875D4487 +:10D5400087DE10E1D71980012663195A18017C364D +:10D550001F9ACE0A2792F8622BA0747AC3AC06DE1B +:10D560006BFEBB83D383BF84C637E138C5641B7EA3 +:10D570004C785C08473F78DD67E23D61FFF76D9FBF +:10D580001DB81AC797389E12F1D24B975298491975 +:10D5900071FA30E960DF7681AF6CBF0D3EB374691C +:10D5A000B7087CD9E960C3C8A9061F0706CA44BDED +:10D5B000CCFF2618EDEB24983749AC639BBFFAF2F9 +:10D5C0003AF8E73DFE003DD764639D07DA4E6AE115 +:10D5D00034C9325E20CC641C6F8358E72CC70AF72D +:10D5E00029A8DFBB302F6529D4A74952BFF4B4A3C3 +:10D5F00011D604FCD7D2A851F9E53BE3683D03D12D +:10D60000DDC6C6EE89567EDDB85CA98EC2FB1BF373 +:10D61000776F990D2868F1E71793EC09481C8F1272 +:10D620005FD778313FE0713CC2ED5C3E9BA1FE5379 +:10D63000FD1C9F1342F5211DCAF1AC3E26C1560FB9 +:10D64000DBCF823183F7552CF8092C9023AE49B4F7 +:10D65000FE62DC8FBCECF6E7011C96BB98C94E233A +:10D66000BEFE7B17CAB4CFAB968CDD8DBC61C2FB0E +:10D670001D89D30D2BE4FBC5946000F77120FEDB00 +:10D6800006F829243EEE9090AE47845914E978AB11 +:10D6900078FE19ABADC4F58C5811E6F8974CF90536 +:10D6A00010C3FA9B05DCDB967A089EE62C7D17C238 +:10D6B0007311C281723C0478CAEC97DE2EEA8FDEC9 +:10D6C0004684EB230ABC77911C9E87ED8E9A502AE4 +:10D6D000E231438AC59C40CFADE6FC11D685F367A5 +:10D6E00009FC9B749F1E347623DD5F8DFB01F3677D +:10D6F000D5AEBF5906B9E07D7BCE9F518F056A95A7 +:10D7000008EAADACEEBA1A06EBCC0E765438193DE9 +:10D710003F89784FF6B623A7B0F405BC7EAE1CBE99 +:10D720001AE148CB8EB159B4EA20F1E07D6A3DC3DD +:10D73000FD7495C742B5B01F3BAE9BCAEA2C74B5C9 +:10D740005AACDF91CD42516F7C9FB739381EEE59EC +:10D75000B0CE7DAD17DFF3D03E4C602521DD8BF4DC +:10D76000118C31A00F17D207233AB805E737C2C68C +:10D77000F3D86F7CB6FE3CF209D0FD30C41BC091DB +:10D7800085FDEEBBCEB990E689B0E388EF7459E031 +:10D79000C480FF004F2E512F97549A4FCBE4F8CA04 +:10D7A000F4B2A801F87204787D58904543B0BEF4F5 +:10D7B00004BCA50B7C39821D87707FB2B22315791A +:10D7C00006E16703E16761570CE9349DC5980C6B6E +:10D7D000DCA8D4FFE1FB30DEC64E47306258E8914A +:10D7E000013D4E8CE3C9930FFC66B5634C3D5FD899 +:10D7F000BFBCE96B3F70BA51BC5CBF997A02E87656 +:10D800003BD2ADA273BA3D537DA436388C77D37129 +:10D81000B37419F1E8D6F87EB5E4CF8BE0BE7C8E08 +:10D8200038467CB517D13E01CE483FE19F0C753597 +:10D830003F1445FA237938356EA7B80C99C52C7674 +:10D840008912F0D8EA6C6144C2F9BE239EA90D4E3C +:10D8500082C3EDE5FB02FA26CA245C278BB9D1EE20 +:10D8600002BD1703BCE1724F8FC6FAF7683EB37F63 +:10D87000AB51CCFAB3A715EC07EF207B9CCEEDDBC8 +:10D880006F60FC24CCB7C00EEF19F7F32AC6FB1665 +:10D890007B71E07E0A7BDFA40B40E2AB3880C50ED3 +:10D8A0005CAFB283520AE8F3C0AD11DC9FF58CEF98 +:10D8B000FB46513243B6C91D4740267EDE89CC83E4 +:10D8C000E3E4733BCBC966C7C8EEC93F33BB2B57F4 +:10D8D000D0D77656FB1ED2D7EE0CD66EB51F4C3B7A +:10D8E00093352FA0F7766FBC3526A1BDF25DBD083C +:10D8F000FD5C93AE7627E08DB175242F1E6C8CB243 +:10D900003FAA71BD316A4D2DED634E438F8475572B +:10D9100076B78475B3BD975E9B397DB7B4CE4B6146 +:10D92000D8AE1932CA85BCF6DC759A8D4E6BD90219 +:10D93000E09751605FE0BEDC01E56949D02BFA0554 +:10D940000D76BA34E9D01C7F487E8C840EE5C3FA8C +:10D950002E14747F21CA0DA4D712F5DD6E733FC952 +:10D960004F50E275D8DF8F6F87FF437BB6488A3E02 +:10D9700024F56DAF41393489CC97777BED7BA0DFFF +:10D9800071B224FC05AE8F6A44DBE127DF1A3B0548 +:10D99000407E39E8602EC4EE932F6E9A02E3BF32C8 +:10D9A0001DEA86803713C7E3F4F14A2E0B55617BDD +:10D9B000A9148DC0B835E51BC8AFB8B0CC417453BD +:10D9C00083F05BF0F2C9C1BF2888FF9BCAEDCFA7E7 +:10D9D000C8269D66F3F145DBCA62078DFF72894454 +:10D9E0007C7CE49D0FEE3C1BE03B562E0511BE9760 +:10D9F000837FF4E2BE99F3F5E2CB603AE22B719EAD +:10DA0000B8FCF3139DA7097C6780C265240FB8DDBD +:10DA1000952ED697A9D74BA8470365ED87B84CE25A +:10DA2000FB3D3CD451A1406D6BF2A2DF86092FCCA7 +:10DA300050A612F48C91CE5022625EE9B40BF5250B +:10DA40000BB9516FE273737F005F592B141B7CE994 +:10DA5000617B3DB9DA5E7758F73737BE1E939E92E9 +:10DA6000857DC8421103E5FB26297602542FDBD4BD +:10DA70003ABEA206F8CAD5CD980FF09956AB44A38A +:10DA8000F86E09D7170E5C373C4F379CD1188CEBDA +:10DA9000CD61AC0BF951E9D25821DA13605F58D649 +:10DAA000CF56A711DDA40BD836D7CC4BC57D30C7D8 +:10DAB00003B806B59F94A0F0AB82AD5DBC54C82FEF +:10DAC00076E961B2FFC0CE5921E33E95D8ED2053EF +:10DAD0006F99F30CC95767FA1E63050AACFF36E667 +:10DAE00009A27FD4507EF00440C24E49E135088738 +:10DAF0005A5E1FC1FD4F39B76114CA11DF381EB716 +:10DB0000587876397B1FCA803718791F9E6F472552 +:10DB10008EF6576C3A33004E47CF9564E738D85CA1 +:10DB20005E6AB554EE92B9BDB95594DB4D7E0C7169 +:10DB3000BBC3D47F60C76CC2F9F3427A25DA0F0EFB +:10DB4000AFDD9E4F5C4FBB186797CCFDAF3B463EA9 +:10DB500015203D9E1FB2F9FF9A14BE4F86F7B450B0 +:10DB60003884FBEAF07279D9DB2F19FAA13C0480E2 +:10DB7000902F7C672FD6701CA5DCF4F3C3F43EEC29 +:10DB8000D32E1C872DB4FB472E7F88F611FE3EC294 +:10DB9000799D62DE3B267E5BEBCF8F2891C33F965B +:10DBA0002D74EC0C0469FC6476BF8EF126C052FE25 +:10DBB000E9F4F87E8588D6C05E29D1A22EA0D7646C +:10DBC00037485F589C577A97E045FB0DEDC614EC3B +:10DBD0000270B43576917F82A45306A49B1CB4F0E6 +:10DBE00021EE6B9C5F055FB1E3F9B01ED335F47A8B +:10DBF000C35C1E0739FF69F01FCA9714A61F429421 +:10DC0000A794D9F9542F0892DC480D25F037F27407 +:10DC10001A9676797C1B9433E0F96CD8605C57EAED +:10DC20002C394A3E2B0BD58CC98CC3919A01F62D09 +:10DC3000B6BF01F621D4BF74FB26E1222DF09D4230 +:10DC4000F8D07C25F80ABB23329F5742FC009CA7E2 +:10DC5000ECF06CFA14F713E0B43D4778CE2DB6C162 +:10DC60007BCA0A6F83C6E7C5F7CAD3FAC6092395EC +:10DC7000ACA01E80FEA32CE2CA0A53501F7DCE3EEC +:10DC80000A55235D6CCB26F9E1D3057EB52E224ED5 +:10DC90009DE9248713E385B05F9F59F78B9589BA77 +:10DCA00001F295E3D9DECEB2896EA8EE60BD7ECFDB +:10DCB000D2328148665CF63B100DD775AAAC0DAB2D +:10DCC0005FC35B5391DEF9DFA93F72FD7B9DB0E33B +:10DCD00097B15A1FC2F73193AB91EF3E468A847DCC +:10DCE000F8D83B75CF5A4E2F1AD279B3C4E93FDD2D +:10DCF00021E247DEF5147F57582FBD49DC6EE0F175 +:10DD000010B0EB88EE224C5B4BFABD95EBAB08FCF8 +:10DD100087F56BDAEDFAEBDA6DF6FAB7D9BC4C940D +:10DD20005BDFBE5B6528CFAF4BD00F7F13FC7C2D34 +:10DD3000AB5F8F768D293796EA4C49877D5BF9F486 +:10DD40000353D1FF1AEEE07ED787E0BF1AAE38DE6C +:10DD5000AFF7479DA1C2F8FA4807C0FA9AA4E04578 +:10DD6000674B03AF6F83DA7511EAE9C86695CE3366 +:10DD700098D08FD41FA6520E38481F5AFA11BC579C +:10DD8000B7DAD737D4FA13D70B1295D67BFDFE3A04 +:10DD9000921F03ADC7B95F0A45FB9143450ED32ED1 +:10DDA0008AD038269D9B7C0674CDEDADDFBBA34D9C +:10DDB00030DF25689C92FEA89F46FBC9EA2763399D +:10DDC00054BFCBFF9BFD9660BFD26FDEAF6E807EEF +:10DDD000ADFE482DF29B69DFBBB430DF4485C7E35D +:10DDE0005A0343B46743BB6390F6FCC1FB03DF9D5A +:10DDF0003E0D7481B12C6E7F45B211AE538D184823 +:10DE000067AC53ADBD18FDB8CE371C0C3C27A8EB52 +:10DE1000EB03B8AE16C940BBBC6ED35C6AAF3BEE39 +:10DE2000F0CB9C0FC9EFEBCC9DB317FDC9E50E55A8 +:10DE3000C4F3BB15B41BEACA7267A3EEE85423D936 +:10DE4000A9307FF50FB8DF5151B67619F6BBC8B8C7 +:10DE50005C457DF2E2A34D8BB17EBDF12D05E5F071 +:10DE60002D629C8F1F797C2A03F83A1F4B6631B2D2 +:10DE70008FA24EB48FAE077A467ABAE1A7C964473B +:10DE80005DFFC4CA3D35308EF47432C153FDC4B554 +:10DE9000FB5C045F13A7CFA7E6A76C15EBD2003598 +:10DEA0009D6BCDF84C247B3E7459E96257A19D606F +:10DEB000E2C1A4CFA5AD45BF0A205CFB53299ED685 +:10DEC0004BD70ABC0FFDEBA09CD70F5D6F13FCFD79 +:10DED00051AE6B21C229ED3F7425ADAFE33215D7AA +:10DEE0002735A73ADF83F936E33AF97BB48EC88F3A +:10DEF000A5E81868FFE8C7125F57C7C45DEE5C9CD1 +:10DF00007F9773299D33ACA5F74D7897EE2F5A3F35 +:10DF10001CDE5BBA29354F8675CDFCE963BE6E7891 +:10DF20007ED37E470CED7328C94EBFBAD5417E948F +:10DF3000C9C7A8D125A0831B857CB9F1C04A92BF6F +:10DF40003776DC41FAE9A683AA4D3F019EE93CEB16 +:10DF500086B71C41F4456EF8D9C33EB4B73E0C3CBD +:10DF6000E2C3F812CC53E7043E283966D76B38FE7B +:10DF700057697DC763AC87CE6F6EEAD8C8E7635C2C +:10DF80008F9A72E543FC47565F3DF79CC37E1EF6B1 +:10DF9000393B3695EC9EFDE9FDFA7DA65E33E50B37 +:10DFA000F8433B2330EF474FFCFB4E8C7777FEFD69 +:10DFB0002F3BBF87787FC6AD237DDFF4C87B3BBF97 +:10DFC0008B7AE6A04B463AF9E49987F7ED80FA2779 +:10DFD000BF1D578C2CF55B21AF3EC9FD3213D7BF57 +:10DFE000FA9959C3901E573F397318EBC73E34CB8B +:10DFF0004F80AEA216BA32ED7AE3208C370CAABF5E +:10E000001465C2BE1C3EE0886148E8E3132EB2BB33 +:10E010006E82670D6027DC587F2DC5B9B0BE06F053 +:10E020007BE3A3DC0FEC8BE7C8089982B6B111E85B +:10E030007ADE7860FEC5E79460A9060D5C2FEB21BF +:10E040003D95D8EFA6E3B09F9307DEBFCFD9D74E5B +:10E05000C4FB4D68CF4CEABB7F1FE33FA6F7DDBF93 +:10E060002FFBECDF8A077760E381F47EFD0673FF08 +:10E07000563E79494A7F71222B7E636780DFE5C275 +:10E080005F7BC1117229194807FFB26F871FF7D74D +:10E0900015ACC1FD7EECF31C345AFFA4F65C89FC80 +:10E0A000D7F38C4BDF0D7DAE7FE62DD2639F3CF91D +:10E0B000AAD320790EA62FE8E74F58EF5F17EAEBB7 +:10E0C0001B459CF7A6BDC931F4AFCC7DBA313AB738 +:10E0D000DAF0D173F2BB6E8C72BABF317A6881D438 +:10E0E000CFBE9DA7E471391ACD20BCAC34BA9CBA1E +:10E0F000D7BE9F5219EEE3C9D9487703EDA3B97E85 +:10E100001DD73FCDB29F7B39BF0EC4979FEC7229BC +:10E1100018B732F7F71361C7DC1495DE62FDF0AB78 +:10E120001917628EC583EE53223D4C57ECF460F60E +:10E1300037D73D143F0FBD9E6F86AFF1E8F465F40D +:10E14000C5DBDA595C3EBF9CEB223FE155D5B8EF09 +:10E1500016A48FA32ADB0D5D2ECAFB403126F6855F +:10E16000F715B487C6C5EB1797492DE9D0EFE21034 +:10E17000E813234EA7667B6DB9831916783EAB5E14 +:10E180009D8D7C7638C0E8BCE548163FF778216B5A +:10E19000C5117CBE09C66730FEFA46B03B81FE5B06 +:10E1A0001B0354F69E03860A64B4B357A1DD8FF3B4 +:10E1B000ED7FE49147804ECFC70940451D0655D9F4 +:10E1C00061D15F2704BCAF356A64C75D5EF0B88279 +:10E1D000FA5B2A7C5C41BD7241F87105CFB18E4873 +:10E1E000E6399ED1E207FE39BF20B5B80DC67F41A2 +:10E1F0009C7B9C5FB34B596A19F70231CE0585BBF6 +:10E20000B251FEBE24CE1313F1F533859F4FAD1DE1 +:10E21000FF7036CEF7D2C8FBB2B93316A078648E41 +:10E2200088731F19F3F0FDAB008F9D055210E36456 +:10E230009D0DEBBC28873B8DF936FA3B34FE030974 +:10E24000C7C909EC52505EEF463901EBDB0BEB43DB +:10E2500079B10FF086F5FD80372C1F6934A87CB4A6 +:10E26000B180DA7FD218A47A476319D59F680C5120 +:10E27000FD406335D59F6AACA5FAC1C68554FEB290 +:10E2800071393DF7B5ED6F4EC378E604A903C9F5C2 +:10E29000D9C67A6A8F353650FB2D0A8F43E4B4B263 +:10E2A0005609E46C4303237B66B75ABBB0D602BF62 +:10E2B000F9DEC3022F1F2785A34A29D2C58252DC6B +:10E2C000FF9631974DC47DEC347E1846FBE2F37C1B +:10E2D0008DCE162814007C7174CC343ADFBC2E2508 +:10E2E000FCB062A1B3BC56278B4DC17D8C5665A294 +:10E2F000FEBB06EC3BC0E3F9D5BB944C18675E3817 +:10E30000D790693F3B9AD3D0AF9828DA6B8AD4CAAA +:10E31000C2A1F7F1BB02EE172BEAB391CF5E14F660 +:10E32000D6E561072BB0D821F3ABEDF56B146E3752 +:10E33000A5CDC9E7E7B9FEFEE3B9C94178CF66CFFD +:10E34000703E7205D24450843F771BC36DEF39F4A1 +:10E350003DB518271E483E397CD5DC4ED695F75181 +:10E36000BEC9E8EFCA717963C64B1731F32F44F584 +:10E37000AB7AEBE06199F635E0EB8AD07115EDF5FB +:10E380002BC10552A05CCA824EB4BBC1BFA5F2DB53 +:10E39000AC9E4A57764C25B9C7AA743C4F90426749 +:10E3A0003B4E270D1647B39F3BF49E0B09BE1F053E +:10E3B0008021BE0333B4B0D5EFFA40E0F7735102C9 +:10E3C0001DAD44FA19681E53BE9872E50B6FED7FC0 +:10E3D0002896FD31CB81FA27EE93098F9947903625 +:10E3E00067F58B23618B77B71B240F1BBA25B2DF30 +:10E3F00047BF9D4BE7C5784042E7826E21BF84FD51 +:10E40000DB80FF84F7D882A4E843A87F3A726DEFDF +:10E410000560DBBB109F4AB71BE5C7868653547E59 +:10E42000D690B7651C1B7ABD89F2F40B6F38558501 +:10E4300079EF1B35690BC6C7771E75503C7CA7DA90 +:10E440007D39C2D1F0B6CB5807F0FE4609A5A9190F +:10E4500024B70914937E1B36195B0A8C81F1B2BB79 +:10E46000356F503C26C2D54B8F03F0479C4EF87B4E +:10E47000E0A730AD98E83266008B7427A53CD5053F +:10E48000AD4B1A622AEEFF49257C16C27D058BAA88 +:10E49000488FA3B2F54C1422E7FA0C9E2F90F97E18 +:10E4A000160915A53BB7F69BE4FF30D6AF1EDF205B +:10E4B000F40E804371A01C11C791933ECA42BD71F6 +:10E4C0009E2AF59B27C11A948FAC795CA08B492FAB +:10E4D000C3BB741E5387130368757237C5DFAAF474 +:10E4E000B955A980A22BD7E40A7DCBE9E6CA35A9A4 +:10E4F000BBD05FCD57C3E7AB3C2E4071EE3AEF8403 +:10E500002AB4D7CE747D307B37DA812EC1EFE67A1C +:10E510004F6AE14B70DC3C3DB532D540FEE671E41C +:10E520005922DEF8999F913D3FD0F851CC0301C5A7 +:10E5300071B891E785A811D68EF6E2A3B0FFF8FC7A +:10E54000174097F87C27E82B2C9F067D85E57ED029 +:10E5500057D8BE1BF415D65F007D85F5E7404F29DF +:10E560003C4FE25AA463D5CFCF9B9B9C6C39E59B73 +:10E57000897C2F73FE7A95FB396679B3CAE960838B +:10E58000CAF11779C3C9F94EA91D41F9605022FE9D +:10E590008A7A8C9968CEF98EB0A804F09EEFDDA23D +:10E5A000607D52837E04F5F49DBFD21C880FDF048A +:10E5B00089CE23B61D6DC0CC25364966329DFF3D00 +:10E5C000CBCFFF7E36465230AEE2EB5C7F33DA9B38 +:10E5D000C52C742899E68B38F03CA578811EC43888 +:10E5E000E28E979D21DCAF1DCE88EC01B81E5FC482 +:10E5F00082688FED43271AFA3F3C4692699C6D6F03 +:10E600007E0FC7F1DDFFFEF7F17D5FC18F6EA17A4E +:10E61000FE8FBF43F5FC5FDC46F5CED8ED580EDB30 +:10E62000DBB3F035183F65C27517A0A394F2AFCAEB +:10E630001C2C03BF989D847E42E0F96D6E2CB3467E +:10E64000EE3E5A01EFBDA0E6129E7EFA4C664D10DA +:10E65000F36F6E96E91CF590924EF51FD5FBA91E3F +:10E66000541DB598FF70A09CE7EB98F8DEA13AA87E +:10E67000FF5E55C4311507D97B780E8AFCA61CE4D1 +:10E68000E735EA319E3FA6C678DE8753AFC7340828 +:10E69000CAFF233AAE96FACD93DBAFEA347E701709 +:10E6A00023FA7BE2841C5D0B1D9FEA5C9A8472F165 +:10E6B000A94ED981F6535071501EC85327B6BA934C +:10E6C000E1BDFB3B570DE372389C0496067B58E591 +:10E6D00079201D2AF19CA5FF67329693151E97C1DC +:10E6E000FE29B86EEC9F1BEFFF53EC0F701CC4FEAD +:10E6F000A5D6FEA7649C7F92657EB43BB28FDAE715 +:10E700007F5AF48FF5E9BF8AFA8F13FD13F9E939BF +:10E7100001778B14BE6322D2EF4A85C74957A79170 +:10E720005D39C52D648A78FF0F82EECFCF31F54871 +:10E730002809C73F702C2F65303F9F8C6A533E914C +:10E740005EF6C4E53CD5D312EAC313DECF4B689F17 +:10E7500090D05E6CAF2FE3F6FD24611737B0E8FD73 +:10E76000AB502F66CBFC1CFDD1025ADF24B13E53C7 +:10E770009F4E166334B0EE367ABF4661F4BED0A326 +:10E7800093851E7D29CB5C3F233C37B01E4F21F281 +:10E79000E91199BF1F1E4DEF8F15E3B1E8185E1701 +:10E7A000FD0F67A75D8029324F74727D19C767AD71 +:10E7B00086E33D29E9D41E9963DF8FA9623D897AFA +:10E7C0006F9D338DF6655FE7BC56DCC71F5629F495 +:10E7D000DE587FAA2305CA391DCC91CAF839C9CFA2 +:10E7E0000155935BB93CDAF7C25819517B3499A5AE +:10E7F000D700FC8F8F9483BB71E88FBAD7A15CAA36 +:10E80000581379F1FB50663B53894E766F530E6B6C +:10E81000167A38ACCC67E847A8DB1684304F821DE7 +:10E820006141B4EBC76EF73BAEB5D04351B64CF483 +:10E8300007CFB91CF0EF9DC1CF00436C51328EEF72 +:10E8400022F8956C99F2BB2CFC9BED44FE0DF6CFA3 +:10E85000BFE31C2CE240BCFF4EE67907D5E1A4B92A +:10E86000167FF3A983204F60DE49FFBAFAB3A3985D +:10E87000DFA6CF9882F266DF7627CFB31C11DC8348 +:10E880007C54E814F995313650BE5BA1B39F7CB738 +:10E8900051CCB8AB0AFA8FEAE4F9CBA30EF2738835 +:10E8A000A7BEEE96791CD94EF7C15F7A6C76B8DCBC +:10E8B0006AB7CB47318B5D9EDB0FDDBF7D56FCFD1C +:10E8C0003CB25329EF9D7D7D9ACEB18A455BDAD16A +:10E8D000A59E9005FF0F22BD008A7781FEC4F2A994 +:10E8E000C83CCD8075FCCA3F8FF68F4542DE8AA9B1 +:10E8F0003404FD4D15791F6A339B49F2A7953930D1 +:10E90000DEE63AC682217AA35B46F9BB4FEF4EC3DF +:10E9100038273BC1E31EE6792430808CF87125C48A +:10E920003DC78A3C9049097192B1E2FC6F6CE2F9F3 +:10E930005E425C64B1D37E3FE4CEEF3AE81C32F233 +:10E94000A683F8FAE1E92C827E23FEE179D4B6D9D8 +:10E95000DAAE369293DC3FF99918CB8C975CE7E4FA +:10E96000FED89177AEF574C33AEA314913F9E8FE5F +:10E970005B3DB8EE878FE5B9B13C3CC393D4CDFD88 +:10E980006D42924B8CB36E86E7D7D7C13C078ECAD7 +:10E9900064EB3C915D3942063C6DADD228CFCCB7DB +:10E9A000A76738FAAD3FDD25E2EA07387DB50A3CB6 +:10E9B000930F8F780DE86477DDEEE4FEC74EA9F67D +:10E9C00076A43759E3E713BED12787635CFD27B9E7 +:10E9D000128F2F0C31CE3AB12E18679DB3343E8E74 +:10E9E000C50E54397DC678FC400C93A379C9FE4806 +:10E9F000B427EB8E8F25FB0FECC2CD38DE55AC363D +:10EA000044FE19987934CE99DB856166B10B73FCAD +:10EA1000B932DA3D71FBB0761B8E6F64EBEBF09D83 +:10EA200033B50B77A23D08FBF96BB403D12E6CE034 +:10EA3000795D0F0A7B11ECBB3D88CFB87D175C88F0 +:10EA4000F928CF3AAF9AA94C47FBADA304EBFFE2FC +:10EA5000BCAA49433F51EEC942032CE60CCFD4A0D7 +:10EA6000DDD724914AFA57A84780947E2D737C47BE +:10EA7000F671FB1A7623AD1AE01CBFCC1FC478CF09 +:10EA800028B9E35831CAC3EBF93D2ADF5E6E3F2552 +:10EA9000C2FDA0880BF99A5257219DC49CDCBE8F01 +:10EAA00089FD33EB5728E167102FE846633E8179F3 +:10EAB0003E0CEBA1F3C518263640FB2127B767981B +:10EAC000D23E9C9FAF4199DCEFBE73FF62A87DDF11 +:10EAD000CBEF8FC0BE1F4BDCF7F4DC33DF779053F6 +:10EAE00024CA06F27B5C5F9D8597B27AEB9FB1F0FA +:10EAF000BFE17C6A36CFCFE9DD3719EC7258AF43FE +:10EB0000E4E9F91C73EB912F3E11F832CBF79CE24C +:10EB1000FCF4977DEECFBC8774E052C2220985CB0E +:10EB2000715F138CE3B5E057F85D263C57284B3FE7 +:10EB3000725AE2448877F4C7FEC3C437ABA73C23BC +:10EB4000A6D4537EEC7F1BDFD9BDF8FE4F816F82C8 +:10EB50003307FCB06FC267F1F357A35947F998C365 +:10EB60008288FB99DEB9B6BCD25352D8E5CA88DB9D +:10EB7000050D6F83FF3119E1EF56397E7A545C4FF2 +:10EB800065BA51220571F8B699C7CAA08ECC89170B +:10EB900090221B67A29EA94CE2F539AED9CD11ACEB +:10EBA000E3D9C20C6C7F68269E0F548EE6ED176287 +:10EBB0003BD42F56437E57864D2E44AD7241D54FE0 +:10EBC00056A05C007F71848BE48151895B92D3A055 +:10EBD000CB08FF37F517F70AF900743506E735FD5E +:10EBE000C6A1FCBD492E4E476639198D22ABBFF731 +:10EBF00063A7E0FFE8F079C9BCB4EEFFDE2C337FF9 +:10EC0000CDF0703B91F763CD6EEE270ABB3357D83A +:10EC10007589F2D8B43B73DD76BA49E9CD8B0BD157 +:10EC2000B8897464DA8BA3C5B3BAFD9CAE7CFFD5FA +:10EC300054B751C2B85B0FD1A52AE8AA4DE3EBDA6D +:10EC4000D5CAEF25A4DDCEF395F76E4AA37CBA575B +:10EC50009DA1F3ADFBB5D519AA7159F21312E5BA0E +:10EC600065FFE69FC9FEA95E77C4BA1F26FE8F091D +:10EC70003FFF6571FFA34BC8F7CF586831C2D3E49B +:10EC80003428EE1479C9417276203A18287E65EE50 +:10EC9000B7294FD6685CDEC64B2E4F8E89739EDC3B +:10ECA0003236434F898F7B9BA08B63EEFEF3E06E81 +:10ECB00075F1FEBEA65A92534CE437E6EEE57ADAD9 +:10ECC0007CAF418CC3982E0BB94DF6530DC205E3B2 +:10ECD000E695B172EBBCEB5D1CBE1A0F6F4F9CB793 +:10ECE000C59C57C84773DEBC4DF67937F4CE6B88A8 +:10ECF000798334EFF8E61ECA53CE5BC368BF8C4DF0 +:10ED0000B521DC9763452FE6FF10EDF78C02113734 +:10ED10000A318C736C13F0EC708602389F03F08418 +:10ED2000F7A772006E2C552F3B4972BC2142E76653 +:10ED300016FB7E1BD1D131D66F7EA589779FC2AAE3 +:10ED40005CC571B8FF26D667D6CD75D6045FAD4ACF +:10ED500007F8C6DEAD17A1F8BAA88CC74DF342D9A3 +:10ED600074AFC5A371FBEA91567E6E34C6157E0260 +:10ED7000FD82071F72D2FDD61D3F7086904F7638F8 +:10ED80008DB6025C67A54C7193CCF29BC9BDD97658 +:10ED9000CFFAC78F427912893683E293F4DEFD2BD6 +:10EDA000D2288E61D6B357F2B8C6F6FD5BE78C4524 +:10EDB00039D12A07C7607B39F7477AFD13178F6F60 +:10EDC000C45C22BEB19FFB3FBDF18D7211DF5823A1 +:10EDD000F4E0327E6FD382BF986B90F8C61117CFE4 +:10EDE000BBDA1EE572A7A9558E629ED86E6F1ED93A +:10EDF000B7BBBDF3C8765443323F676915F10DAF19 +:10EE0000199F303C185F38ECE2718263C8E01983C7 +:10EE1000F7A7F886D78C4FF0FEBF76F1F8C4F13330 +:10EE2000E84FF18D64FBFCAF8BFE6F63FFD2C1FA3C +:10EE30003F916AF53B7F27E07632A36D02C0B3674E +:10EE4000FB89209D0FB2F6F0F550DF27195BD16EDC +:10EE50008B64713B6D8F6497FF1F0A3AF3689C4F78 +:10EE60000EB76E95D14F18DF7A7725C6D56020F2A0 +:10EE700077F33696C8D679472FE3FE6EDEC67C4E12 +:10EE80004709FEAE4713FEEEB23EFEEE7FBA06F134 +:10EE9000773D1AC79F296FA06B15DEF335E735E97B +:10EEA0003B912FCC7BC4A6DDC8841E6A5FC8E501F8 +:10EEB000D8971E2D23FE7C583853F84DB5E4D7075C +:10EEC00046F0B8A2298F801F9BADFCB8524BE0479B +:10EED00021EF86E24753BEFEA3FC385FFB9FE1C7EC +:10EEE000028DE74D176B4EBE3FDF9C1F8BB5D28165 +:10EEF000F971AAC6EDC57F941F4B354ED7E76A431B +:10EF0000F143FFFC788EC6F969F619F4EF8F1F679D +:10EF100089FE176943F1B39D1F2FD4FE317E5C2C0F +:10EF2000E8DBD4CF875B4FF173ECD677D7BA300EDE +:10EF30001431F951B1F1A331043FAE417ECCE897D1 +:10EF40001F576883F0E31A813F530F43D7662B3F67 +:10EF5000AE19802F300155199C1FD7101D0DC18F80 +:10EF6000897E05F859210C390DE45F30F0DB908E75 +:10EF700013CFD9863A1FBE70EAED143FC8574377C6 +:10EF80006816BB6F8A1A6E27FC24C817F37E53DFFE +:10EF9000FBFF89F71B969F081BE4876CC3715C65B8 +:10EFA000B531FBFD866020887679AA796F95E343B9 +:10EFB000D5F9FD68DFD95F7737E17EEA53A760BFF7 +:10EFC000873411C74BB80760E21FF6F3219CC7DCFA +:10EFD000DFDE7B1C98086D817F7DD6A503DD0F7871 +:10EFE0004CB3F98183DF0F489BA3D07A57499E2009 +:10EFF000F25F53163B807E599364B71755F07F0D2F +:10F00000F07F7FA3E5D9E4F76DFEC8B7C09720FF76 +:10F010005FC86745B1E199FBFF4E397C08DBEF9C87 +:10F02000F1E1098C877EFCA4DB407EFDA4E433275C +:10F03000E62B60F882FC95DB3DE4773449DD75DC36 +:10F04000BF8BF1789649D74A3080F15317D20FCA57 +:10F05000BD6CA01F930EE8DC93DB134DC9EF67E195 +:10F06000BCDD82FEF12F1BECB7B080AB4EE17EEF32 +:10F0700055AC8BCAC57832329ACE53DF403817B1BF +:10F080001E8A1BAD4BF29D4BFED73F093ECB3D5335 +:10F09000CA1F14AF32FCF288F5DE648188779A7E4D +:10F0A000C9A8BB19E5338D8B28A4970A22EB6E966D +:10F0B0002751FE00B58FD9CCE89E19B493FC37FBDD +:10F0C0008F8B3A6DF9A4B9ADF6FA6811E71C23EEFF +:10F0D00071D2F35C3CD7E771D1D109CFCDBCAF9DE4 +:10F0E000F8A09FB849627C94B9EDF1D1A1F2CECCE1 +:10F0F00038E89D2CE4745BE4146BE071860D23A763 +:10F1000006FAEB6FE2D5A1F1BC11F39E85E94FB190 +:10F11000E3C29E9758FC8FE293FC7E77A65B32E3B6 +:10F120009C99EE0C0B1F26E465DD218545DC23CA86 +:10F13000EF29883C2D625919FD389E97D58479595D +:10F14000506AF9F5A47F5C25F5746FD39B0F0E0D03 +:10F150008C23056314E7F606BB02989FB37980FC05 +:10F160009C4BDD5CAFAC2DE5E7039BDF91C83FDD39 +:10F170003CF1D60023F9C3F3AD5433DF6AE4AD5A52 +:10F18000B7053F1BFCABE89EDA86EC7983E25D6D48 +:10F1900077509ED190EFB5F2F7066A77F9592BE6D2 +:10F1A000237E3932F222A2DA25F25B7AF343046D30 +:10F1B000A8C3EDE74B8979212D5AAD86F9482D007A +:10F1C0000FEB072FBDF37D25B1583AE573D4B83165 +:10F1D000DE587A293FFF29E86298E7975C02721FA0 +:10F1E00036C79B5D4FF7A9BD06A37CA9A1F03ECE13 +:10F1F000CDF5A41BC0B6E63DDD5111A671EEC86287 +:10F20000C10882EF4D685FCBE5A813D76DC1E370ED +:10F2100037B713BE2DC64556282B467ADD47F40A6C +:10F2200010E9C4278C9FAB5C877880F75F5042D78A +:10F23000727AB4B79BF41EA98CC71B309EB6FAC273 +:10F2400065A548876F0A3BD297CEF3CF4D385E77DE +:10F25000737BF275014F1BD06B745C3C1EE16B92AB +:10F2600062785ED033528EEECE457E2CA0E71BC274 +:10F270008F568F8679362C18A3E3FE7CA9465C68EE +:10F28000375C3252AE45BB6A73A567B9F59CBCC604 +:10F29000C7F3E53FF4551C42F883DE6E8AB7B090A1 +:10F2A0006220BD72D38FB1C93A1800981F82714590 +:10F2B0008A4B0635AEFF447E1548F06F925FF5131A +:10F2C000859F0B45BC8CECB5E46D125DD632E32B0B +:10F2D000F7FAE66D4578D48361CAA73A34D543F28C +:10F2E000F38B169E2F7A72C9D964DFBF262F7D104B +:10F2F000EDB79EDFBA18E6159FBCF0826A948727A7 +:10F30000975C713EB69F94C0A2E697647D98B7EA79 +:10F310001B6D3C7600F1D6E2A6F34A35F08BDA7726 +:10F32000E93B26219F5C06EFFF97E3574980CFDF3B +:10F330007B3FBB07CDC22578323E3A9EC7F3EDE452 +:10F34000F0C348BFCA151714A0FDB9D9A9E7A0BCDE +:10F35000D8BCDE558C723DF5531048E8605C92C411 +:10F36000E37B3D6093607ECCF7E73F648D9F5C99C3 +:10F37000C1F7436B6809E5C2449A11A42B86BED13C +:10F380009C0EBEF0869FC4F5576A454774E8BFA43B +:10F390009EE7DB98F937572CE7F53745FC31D12E3E +:10F3A0004BB4C39E1374A40478BEBBE2E5FA87E9AC +:10F3B0004AC2779CECF7CEACF4A04FB5D3832A5B5E +:10F3C000E82104F430D1460FD2E9B3CE9C1E362199 +:10F3D0001FC17A2F3D9BC77F2295E00022BFBCA6AC +:10F3E00012BF9879718974BF01CC5DB9B02F7F9835 +:10F3F000FCD056322FC320FA5F7515EDCB49C9C03A +:10F4000054167DDA1A1D9FBBEA9C943F62F285C9AF +:10F410000FE778F97D19E08B362F94616FF72CC9CF +:10F42000E8CB17A87FACF47F15F289DC974F16B1B3 +:10F43000E06578DEBB48619194B438BD2F2AE3F7CC +:10F44000511775AFA57BC48BD648EC9465DF4E9FF2 +:10F4500086BA66C39BDEFB1D05C799E3B76D8EB404 +:10F460001EEDC736B5E7856188D754CE774D6E69F6 +:10F470003FC6EDD727BFDF320CF0D39669505E410F +:10F4800062BC73FDD824A2EBB64B47905EBBA7D1FC +:10F490006061C0EFEFF1421C8EB72099E8FD8780D4 +:10F4A000F730BC7F5F6390DA818F933C1948A741A6 +:10F4B0001680F64B1D5DF587711F7E97C470FE2F79 +:10F4C0007E1E9E8CE7C09BA75E3F0AF5C717B787D5 +:10F4D00047E985D6754487F37CF3EEE132DD7D3470 +:10F4E00044FE3913CFC323F8F328950FC0FE9F8243 +:10F4F000ADFBF7A45CD37E13FDBAA95F9BAFCB4DE8 +:10F50000F0663A75FEBD81506929D4E79FE56778BA +:10F51000FEF68093DF434AC467B987EB83F98E76A2 +:10F5200003CFF7C6B5A5CFC2F33F4FEEAEF652A854 +:10F53000CB91F45973C6E37BDC8E6CF9FB94525487 +:10F540001E0F36EEAF7DD7F25DA1516B3A48CF2545 +:10F5500015D606F0BE4C8BC8E36D39E426BB21A955 +:10F5600066C95EBC9F34AAB047BAA610C75378FEDE +:10F57000FC1A18C762AF2D8225A41463FE4D3BE52B +:10F58000297BC6683ACA9F4505557F56FAA123FCD8 +:10F590003B65A18716D4A764E772BB64B56997641D +:10F5A000ACAF40FC78EA988472F6320FC7631E1243 +:10F5B00014CCF7D782AA41F53CE683475C3C1F3C5C +:10F5C000328EE783631DF3C1B1C47C702C311F1CE4 +:10F5D000DB311F1CEB980F8E75CC07C73AE68363AF +:10F5E0001DF3C1B18EF9E058FEBC314C25E68563B0 +:10F5F0003BE681631DF3C0B13EDFC5EFB5B382B01A +:10F60000A714F132215FC27DF5B43943785FE4710C +:10F61000B18F33372ED87C1CD6991452C84748BABC +:10F620005F497D83D7E9466F5280C721D6079E6028 +:10F63000F81D2D757632E595DFF98E97CAA4053F42 +:10F64000638617F3CB0D477A11D08D67CE2CCD8D05 +:10F65000FCC59AD28258BF64BD06F430A5E4D3EB52 +:10F660009F80FAB6B68B5A30D4746746F56B06D4D1 +:10F67000F7B4CDA5FAE8F28A6446E763735B8E407F +:10F68000791126910EA76DA2EF9B84C2123F0F83C2 +:10F69000BA960FE671E8008846C067DBA52D773380 +:10F6A0008C6F75442A53D1AF5BD0B2603CF55732B2 +:10F6B000751A7FD64429DE9EA1D598EDE2FC6D6EC9 +:10F6C0004B08C67BF56D99C66F84F7F10309C7F344 +:10F6D000F40BF193033DEFF07C9E379DC63AF2AFF9 +:10F6E000DA405E00BC17D7F2EF758CAE62BB58AE45 +:10F6F000202C3FDE17E7F187E2248EDF5471AF55EF +:10F7000006C988FE484ACDCF88885212EE937B0AFC +:10F710009584EF5BD8BFFF518CBA08E3BF798CBEEC +:10F72000C3D3335E8BA29E5F86F43C06F793F3DB74 +:10F73000C5B57B0CB4F7461768C5289C1FF718F4AD +:10F740001CFAC5103EB35FE27B38AE6C6937FBB183 +:10F75000AFFFA2A05C68D9CCE87EB5272F6AAC2A9F +:10F76000B48F2B970C3CAEE53DE6187C7E260D321F +:10F770008EC9571E672819E9B96722DF9705F33745 +:10F780009B7C2AA3BFEEF1D8EDC78F932A9B92D022 +:10F790009F15FBE1F17474E661FF73148A83B2FD77 +:10F7A000752F61FDD61D32C9BD4C05F619C6CB6C4F +:10F7B000D58B508EBC2AF824DDBF6C1E7D57639B11 +:10F7C000C2F07B517E1651F13E831F3D2303E9BDFC +:10F7D0007D16DD775025CAA32929BBF98212783E10 +:10F7E0006DD6E7C47FD39E9125B4533ABDDCFE2885 +:10F7F0009A9C5C8FFAF682C923A7205FDD91705F27 +:10F80000C62C2726713F6F2FB6C3FBD2CE13F564EB +:10F81000FF957A25D43F5F7CCAF544B7878F3BCEEE +:10F82000C9D7CF583BD9796B030ADD3392B378E956 +:10F8300054EB97221D381FD0E81EAEF3EFD334945B +:10F84000F34D5FB9AAB91CEC22FBCFE90EEB78AF00 +:10F85000366F8B4CE75E4DBA278ADF4C4A492EEE55 +:10F8600034506FCD5228FE9B728E42749F9A7C69F1 +:10F8700014E333771D72D3FB6AB21645F9BDB7EABC +:10F88000AFB555D0BEB75C213B7C6FEB825AE2230B +:10F890005DD6C790DE09FE06F96CEF1A1E8F4B91FC +:10F8A000582DC2F1E6A2B303753C5E45F7CDE9538E +:10F8B00024B2C53F064717E31833F4CA6A3C3F57E2 +:10F8C000532B359443A9B3AA34DECFFEDD96E62A46 +:10F8D0009E178BED57E33A9BD911FC4E8FC9BAA9FD +:10F8E000A95BA55C8C8B5DC39F35A7CD30EABC3886 +:10F8F000AFFD5E7BAE578BA13D9DA5F338A751C0F0 +:10F90000EDC75C11BF80E7943F9BD56CE76724355A +:10F91000B43747452C7CCD0B2FFA9123041CAA58F1 +:10F92000FFD97FB2F71F21BE5F3022E19EFC842405 +:10F93000C98C0BDAF094B8FE2CFF5E1DEDEBAC0821 +:10F94000CF6B4C5C57969FC76972750F5F9F9FAFD7 +:10F950002B711D33F45315A8F712D77136EB5A8B60 +:10F960007438B2C1FE3C11DE19557B6BD19E9D519E +:10F97000A0104ECE661D4DE8379BFBEEC9B3F3EFEA +:10F98000AB1E7EBE077C7C7D1294A35B655000F1AC +:10F99000F1C7B47B58C432DFB86D69B6FAF8E870C5 +:10F9A000DBFB67EDCFB3B54FEC98606B9F7CB0D8B5 +:10F9B000562F8ACDB0BD3FA5B3D2562FED3ADFF614 +:10F9C000FEB413F36CF5E9DD8B6CEF9FFDA7A5B6D4 +:10F9D000F6737AAEB7B59FF7D52A5BBD827DCFF6B9 +:10F9E000BEE9E7B040B02BE4C77C4C7F11CA2D13B1 +:10F9F0005F8B92ECE757897E4D629CDA97C4F13DAC +:10FA000094DFB45CD059E6823C16B63CF7D74CB0D4 +:10FA1000D5038B8B59D8A6C7EC7E54CBDFE72FE4F8 +:10FA2000DF35D5C8EE6ECEB894E2ADABC63B0DB4B3 +:10FA3000B3C8F50210E725A5D23A561D1D43F7A01D +:10FA4000AF4B09ADC2FDC7FB659174BC7FE7247D58 +:10FA5000E6F13AC90FF678EFE5F65FBEC63004E589 +:10FA60002988B2F044FC4E6B6B6D3EE8C7BB1A238D +:10FA7000542A05B511D42B8A9FC755F4821EAAEBD0 +:10FA8000E5BC3E2FC9A075EAE5F0BE655DAA0EE3B0 +:10FA900058D6F59ACCF33C7AC00FDF6DF1C313FD55 +:10FAA000EEB0AEEF3BC0E2FE37F8B5B1F3A85F129F +:10FAB000F5CB43C7A978603FBB9C7539B03C97F53F +:10FAC00050B997D5E7A13DFD8633E2180EFDAFDBB7 +:10FAD000FBEA7284637A8987EEE7815FBE3DC9E203 +:10FAE000979F4CD573505FEF70D66E3E8EF3DEAEAF +:10FAF00032D49B57CEBD50437970E57825C8438CEE +:10FB0000E050A37FBE3D2DC8F5BCD0230A73E7C3E8 +:10FB10007B97DC915F8CCF33957AD2B7998B75093F +:10FB2000F5E329416FE9FE12D20BE9ED4AD030101E +:10FB3000354625BEE76F6541FC0ED5BC3CD097A885 +:10FB4000DFEFE1F728F20AC61E413C8D5811935CA5 +:10FB50006837850C3ADFCC7BFB5B9D78BFA34D05F6 +:10FB600078509F3EA0083A7192DFB56ABB427ED7BB +:10FB7000AAA3AA3B1FEB1B952214243E8CA34E8103 +:10FB8000712AB83ECA7B606C14ED813B257D27F954 +:10FB9000392DAE20FA393F1274F000D205F8232730 +:10FBA00033D7AFD3A1FF78EF2ECAA33CCB7F681D1C +:10FBB0009613B34FCA182E999C2F35A541BDA83076 +:10FBC000D7916EA01D5BD1846569799DC30FE5B4A3 +:10FBD0002A09D3DD5857123F77B87CD9DC1368E780 +:10FBE0005478353A3FC89BF1A785288FD521EE0779 +:10FBF000AA99DBE8FB766C99FD7E60854F233AD7A6 +:10FC000091CE73A924BB535F9014453A073B5BC266 +:10FC1000F3914805EB40BB233B1493501F423F3AFE +:10FC2000D7D3636E09EFA78E08754940F36CC46A99 +:10FC300046E7B839A16E09EFDB66AFB0D3F917DE3E +:10FC4000F029B4977256B7DA9EFB30EE07F86D963E +:10FC5000B9FCF1A48593917E3C93F2D29A0C1EB725 +:10FC60009B5B18A79B9F0B7B64875716F74BB9FCD0 +:10FC700036EDD8C77BFDC33D5119E87A5F4FB86DAB +:10FC80003CCA8506F19D999E9883E245DF994BF425 +:10FC90009823E2538BFFDAD182F9F897B87A0EA74E +:10FCA00020C3DCC0EDADDD6EBBBF3ADDCBE55589D1 +:10FCB00097DB4F6A1B68FCC996EF13E21F8CFFF8B5 +:10FCC0001A6EAFABBFF7B6A6A630764CC03BE9972D +:10FCD0007A25C6797363FAF3541E13E51128457F1C +:10FCE000DC780415F932713F7735FB5FC2F7763166 +:10FCF000FD25DD52AA79FAF9787ECA7E25D37EB138 +:10FD00006C1642BB775773DA6E3A9F04BFC403F593 +:10FD10009CDBFD5487F7DB285EF3030F43BFC3680A +:10FD20005042EE7EF26047B15E7D2ED3778922BCD1 +:10FD3000AEB1D6B54847930FDABF935514B3D7A7E2 +:10FD400074DAEBA55DF6FAB413F6FA4302BFF8BD18 +:10FD5000D57C130FF07FA30C7EF46188EFA58E6A2B +:10FD6000E076445FBBC7EEDF3061075D25B6667A9B +:10FD7000B7DDEEB84AD83F5725D81327BDFAA57589 +:10FD80005086EE0E6F9D03780A37388212C0F087D6 +:10FD900007BE18C3EDA09E0C8C3B7DE13508DE2B21 +:10FDA0006FEF8D3746C659E28D77045FAB3F8C729B +:10FDB000EEB72E86FD67398E7536A25E1AA9905E63 +:10FDC000D2A7AD783009E3C9D80EF54B728D6174B6 +:10FDD0003FF0A84AFB627E17D8FC2E93193F9B2761 +:10FDE000E8EF22135F2C92C4E330B124B4CF271F75 +:10FDF00064AC30C11EE4ED212FB617C512DB43DE23 +:10FE00008ACCDE23430041227C970AFB13EB6B4034 +:10FE10009F941CB7DF1B18B6D05E0F76AA64A74E5E +:10FE200062B529289FD1F5C67126093C0713EE1744 +:10FE30004C12DF6B48BC779089CE19E03DB3C41BF0 +:10FE40008DE6F63D4FDB64D44BD8BE69317824F0A3 +:10FE5000EA0AAF385F2B6485B8EFB3F0F70C10CF28 +:10FE60006FF07B3CAE93E3DE42FB80BDEAA07B40BB +:10FE70001B728D2DA897F45FF3EFE8EA49ACA8C890 +:10FE80001B3F77BBF77410BFB9DE1BB7FC49239E3D +:10FE9000B1631C456328E79F68D4A97EA03140F573 +:10FEA000A71A0D2A0F361650F9F3C620B5FFB2B1C6 +:10FEB0008CEACF3686A81E6BACA6FA87BE8AB5DE62 +:10FEC000527BDCD31AFF8DC73D81EFCEA2B86718F5 +:10FED0008FA03F741BFCDEB819FF5CCEE3C2438FDA +:10FEE000C3E3C5183F55FB1B47C49757B6F278E9E3 +:10FEF000CAB256BA2FB3B284FB1DAD27ECDF6972CC +:10FF0000C2B8585F79E066FE5D76B5AB9EFCBF5225 +:10FF1000AFF0FF6E237FB0E97E8DADCB8DFB81A668 +:10FF2000FF97688F5BFC6A9B3CC78C60A40B8F2695 +:10FF300071BDC5ECDFE1CBF7F2F726E8AF3E9F0AD3 +:10FF4000A2FF0111072A0C7C5A497122519F64A417 +:10FF50001E4EB3B4070B8A66A65BEA05DAC9856B49 +:10FF6000316EE4A969C1B3D1FCE4E2E7D32D71A4F9 +:10FF7000E338218F138550FEFEFF8E23FDC6C3F7A5 +:10FF8000EF5F329E4EC33840E43185617ECD0B1960 +:10FF90004F0F473F14F50EC6D170AFB99C673CAF09 +:10FFA000B9807F4FB9572F18129D9F58F4C24B2428 +:10FFB0007F845EC849E5F754A37B5970AD31A87EB4 +:10FFC00070D0B9B8C10CE754711E2FC7DB01E4181B +:10FFD000FFAE1DD76FD48EF7B623327DE7CD320E3C +:10FFE000ED6B41D4B2CF0CFD2BBB9E98D861AFFF17 +:10FFF000B3F490495F9B952E3A87DDFC75FF743B07 +:020000021000EC +:10000000235912F4DA0BB77C7A5A1C1F9407948791 +:10001000256F07EE3984EB0C37ABB679AF6AB0D7F2 +:1000200017AFB6D717ADB0D72DF3097DF70DEB910C +:10003000D01B563DFB2EDE431B17D7B3CB58EE6CBF +:10004000B42FAE6141FAFECCD5AD49363FEF0DF38A +:10005000BE4D1BFFBEF052912FC1AA8ED33969EE5F +:100060001A83ECFBA0899F08D7BF1A60A0F7774DD1 +:100070002CF3E7CE9157F16FDFDBF578E277FE9650 +:10008000267C1FD34888276806FF9E73CE9AC4F843 +:100090006784C7FBE15FF87DC3BEF07CB379CDF127 +:1000A0004E81FC47BC99DFABEBA56FA55B0A021C38 +:1000B0004B1BF8F7EAAF5EC342BBC8CE3B8FF25C86 +:1000C0002E33BF131161A47F0DC12357097C25E294 +:1000D0007BE9E2D7AB11DF4B4B648A17B2863CE277 +:1000E00069A2C33CFAFE9B13DB7336492C5D62BDEB +:1000F000F70F2F1363A4A506E9FB70A79A19E9BDB2 +:10010000538BE767A25D6FEE37E0E314C707BF2F9D +:1001100098DB60D1CB0CE980EB73267E57E69A041E +:10012000BD6DEEFFD284FB827F433ECA40BDC27FDD +:100130001764259EC7A17E61FC7B60ADEF0EAE5FAC +:100140007C3383AD63D1CF4B950DF4F39A9729D5CA +:10015000BBECF138E7690C76E1BF33E3FCF60799B5 +:1001600055A1DFFFBA87917FF3FA77D377614ED33A +:100170009B0B676A481FAFA50627CA459C30B4721F +:10018000A8BB838F31A8BB363C3BBB7A64BCEE690D +:100190007B6F76F539D03FCD7800EBF724B3485527 +:1001A000398ECBEB1BB497671F1929E601B9FDF413 +:1001B000E6EEF5781FCDE477586A84D38B9DFF3E39 +:1001C0004CE6EB4DAA605B1C0EF22BB7944AF17E15 +:1001D00069D84F1AA4DF5CB645E9A79FD7EC073A68 +:1001E00066BD257E67C6E764018F757E05ED003D1F +:1001F0009C8C7EC39DB3141DFD977F148ECCA1D61D +:100200005DC7B6A8A3FBF603B0D79AF0CBFDC31F1A +:10021000C576EBFCEA20F0FF4FE363A8F19CA2FD5A +:100220001BC307AFAFCB3C83F5027CF8090666849D +:1002300093E5C1C6035B7F5DFFEB6D4F182F95E023 +:100240000B84370F0ADF00E3C17AB724AC37D5E956 +:10025000E83B1EF2670CD63752F067CA747E1F98CF +:100260004D54487F8C5498D759DCCFBCAB79DDC353 +:100270002251B403F5BAEE6DE8DFBF59A0A7A27C06 +:10028000BDEBD0748AF77B364A4114A91EB55DC216 +:10029000FCD4B265ED154E78BE6335EB40DCEE580C +:1002A0001D75E3BDB71DDD5137C6F5CB96EFDE8872 +:1002B000F2B2AC399964EF74D64E71E3D47314CAB8 +:1002C0005B483947A17387D4D4197B30EE92329DB5 +:1002D000E79F35EBE57BD0C86E76EA7349FFDDCA50 +:1002E000C85E1AB98CC7974636A894DF365211F506 +:1002F00035FC7BCC9EEFF44806C9AD1E09CF193CF6 +:1003000092548BFE5D7388C7973CDF67BB25E2176D +:100310007BDCDD23B5AFAD443C810046FF252B746B +:10032000E036C9C7F909E53BE113F1AD707B63BB6A +:10033000C0EF28D67508E3606C35EFC758973417BF +:10034000F38AC43985999F9CB5DA6EFF8CD4F9EF96 +:10035000E5282E7D0BD98FB729ECA17EF83FB13E61 +:10036000F2FB5DA9AC70E8F786AAE7E04F46A59DD1 +:10037000C17BC23F4D3C1F48D4D3897E3F137101DE +:10038000D2D3B04FA384DE2A2B6CA67BF5A3FAE868 +:1003900079FEFB69267DF4F1B3D6733FCAC582AD01 +:1003A0004ECA4B594C796AA6FFB6135F443A1929D5 +:1003B000EE2527F4971ADA6A49FF9E2BC6F1300D15 +:1003C000BF7FE4724199463F33A565215F002DE070 +:1003D000792AF3C964CFAF959882CFE3F375B3D38D +:1003E000941F077206DEDB902C33B4EBCDF841FC92 +:1003F0007E62AD8ECCD5A40735F47BCD7B89B788E2 +:10040000EF6D6F480E5E5681F0FE4625BA690AC050 +:100410007BA887938C250CFC942B7CE77D4B037D7C +:10042000F85A2523BFE4DA3BA76F8894631EE208DD +:1004300016B6E445BA947A86F8727D95637BFE3CE5 +:10044000F8D361CB77062BBD795508CF0FF0FB4D64 +:1004500080E7992CD88CFD666A0EDB3980EBAB2CDB +:10046000164EEF6FFC6CDBF3E7C18E0DBBCE64FC68 +:1004700024DBB982EBABD1038C3F36617CBDDFF16D +:10048000E3E3A6DBC66D5118FF5EEE429EB796E829 +:100490003FDCEBAB6CF265F43D87D990CDCF61E8E2 +:1004A0000FEAB3FDA974DFE01E1F8F8356D58C566B +:1004B000281E956D3F8F992DE8D7CC0FA8F227FE07 +:1004C000CE4590BE775CE94D7C6EB77FCB50C6942D +:1004D000F685574E2EE9E2BF93E53206BBE7FB7681 +:1004E00023A378F85BEEFA25180C3AE09BEB6A013F +:1004F0001DF216CA20B0937EE55BF12DBC97FCB6C9 +:10050000C8BB6FF13F3FA6AE1FFFCA2C172B4C296B +:100510002B1EA4DD191B83727FB1CCEF7D00954D9E +:100520009C67F99D89C5B0C032922B51DBBA96D435 +:100530004BB67398B7C57D7680A7B4AE9FF3732B87 +:100540003CE56983B4BB62A5040FFE8EE500F09420 +:10055000170F0DCF3B220ED8E27F6DCC60F02C51EF +:10056000F8FA066C7776117E96C866BCDA0ECF1262 +:10057000C6F13B243C225E0FF0940EB65F084FF9A3 +:1005800020FBB5C4D545F859227EE7B33F78CACFE2 +:1005900060BF36A8F561949B5B242E8FDC77DDBAB3 +:1005A00001EFB3FFA5665580F843F8655760073C37 +:1005B0000753383F2DCAD6E89E97392E7EAF22E4E6 +:1005C000E2F7D3B1DC0D7C1EA2EF6F06A8BE0FFCD4 +:1005D000BC10E55B1550F9486390DA1F6D2CA3BA87 +:1005E000394EE17289FCBD892B24F2F712D77D6E5A +:1005F0000AF7EFB664E9972F43395BE1E1E713CBE4 +:10060000CF66212DEECF31D6F13CC65F365FCA8A68 +:10061000D08F9EB09FC3EDAFCAA4BC084FD191AE9E +:1006200046A8BB2E510D8C1F032FD68ADF2BA4EFBB +:10063000C6D4C94276801CC03CD7EEC8ACBD283FAA +:10064000A6A7F038725D76E742B423EA84FF87D725 +:100650005D29FE733DF7E7C3CDF6EFCD2E1271DCB9 +:100660008C5A7BDC7711DBF469BA8FF5F137FDAC7E +:10067000E828E6F9F8EB5503769042D5A8BF32AAF0 +:100680009CD118C6BB4FBEA8A3FDCA8A14B29FB6A0 +:10069000B8F52CD447C017E467BAC4BDC6C5097EF7 +:1006A000E6A221BEE73BD0EF3926C691A7A4D8E346 +:1006B000C69FB3C2BBAAB07180DF6534E3C31FFB22 +:1006C00098F9BD817EEF979BF0D408F9B9B3314614 +:1006D000798A267C394AB7847A625443CC9677C8A3 +:1006E000F077512C76D940EBD8297D9435D877BD59 +:1006F00072445C1DEC68FADD561C06EDE8C4F5CFCB +:10070000EFB3FEF257F2597FFCC2E3E58B3A1D14BA +:100710000734F163E2E3FF35DFE0DD0A919FC29821 +:1007200025BEE6906B358C57E5F82B294F139F9F1C +:10073000B2D1893D4FD3F1FC9F25BC1FD1278FB487 +:10074000A14742F99198179A088F9927D77BEFC64E +:10075000CBEFD105982788FE42E2EF2EDC268749B1 +:100760004EDDE6E8D072317E1D0837A7C07ABE9410 +:100770003BF40AA87B338A97EF82D116377C2F5837 +:1007800085E7CEE9FDC71B4DFD7697C0C7DB6A6CD8 +:1007900024C6D517062AEF4AE9475F2F6EF8018D68 +:1007A00077AE90B389EDFB5278BCF34742EF5DB66C +:1007B000F2893FEFC37358A3B01869C753D055836C +:1007C000BFFBD5FACA68FA5D819D625E586809DA96 +:1007D00011EFFBC30F58E7D50C5DE1F7BC3AA663F8 +:1007E000FBB97F2B7CFC1518AFF502AF8EE7C47FF9 +:1007F00029719460AA43221C30CEBE148043FBAA08 +:100800008DE8D71CE75977F78F781EE78CEA1365D8 +:10081000504FED1E81DF3DF9C95D59D57EA0C367FC +:1008200033BA47607BF5DA0F361CC13AF21AE88119 +:100830002FEEFA6003DA17E79EFFD19EBBD06E1E43 +:10084000EBA47BA81B13EEF965E93C1F284BB7E32B +:10085000E1D88AC1F1F0ACC09B050FCF22FC8978AA +:100860003816083D87F801202F9E22D1FDA8E032DE +:10087000803134ACC33D05F63DCBE8F8F15D0CDDCD +:10088000E36805FE4E058CF322BEAF7DD54AF7D254 +:10089000CC712A02A14E7C7E6CC56B35F8BB6BEE29 +:1008A00063FC5C52CB6791241FF57BD9DA2F344C63 +:1008B00057F8EF5EF07D782983F34D692A974B69ED +:1008C000C22E6972B607E642A9E7DF7B8B0EFDD622 +:1008D000E7B62FEC8FEE5ED1B9DD992AEEF534EB59 +:1008E000BBB5A596F73E11F83891197A07E1708AE1 +:1008F000FCABB6328E37DFB1F462F297F259097E63 +:100900009FC29DCADF07B8DFA3F7A7B793D3EFCE87 +:10091000E7EB6D2BDC4A79C0EEC0DDBCCCEFA678EE +:10092000A09B7568B8DF7F4DF972437300D7112C17 +:10093000C07AC696B656CC1BDF853603D8972950A9 +:10094000C738DC4ED06BF87DEBC870FE1DD0C47587 +:100950007DAE737A3EE00FFD15E1E8832757F79EE1 +:10096000BBA0FFC6F14E8A9B9E2BB72F5C8AF47406 +:10097000BE97F4363C5F68BDF73356D0D1589DEB37 +:10098000D98DFF47A37613CFFF17E886A0E100803B +:10099000000000001F8B080000000000000BE57D38 +:1009A0000B7C54C5B9F89C3DFB4AB29B9C6CB2C908 +:1009B000E67DF2D22001372F0C9AE2092F03065868 +:1009C0000A482C281B1E129547F0D1AE8A65210FCC +:1009D00002861A115AAB2DFF0D3E2E7D07CBADB40A +:1009E00017B909A017356A542EA2560DEAB55A69EF +:1009F00049C196D5EAE5CEF7CD9CEC3927D910B49C +:100A0000F777FBFBFDE3AF1DE6CC9C99F9DEDF7CBD +:100A1000F3CD59A9E0FBB74BF1843C62220D5D0E8A +:100A2000427A573DF9F113E584C4CAC5A502A16510 +:100A3000515F6D5932216D2FE7978AB41E27D1A7D8 +:100A40006EFA0F0F29F73909F930D91F27D1FA7932 +:100A5000F8BB9A10BB2C99FD308E47714815846401 +:100A600010EF9C32FA4ADB06E25D6E214449E88AC7 +:100A700029CB25244DEEFAC9FD74183B09559B720C +:100A8000719C64E86F0FB7FD458C8F8C53ED51DC82 +:100A900030FEF33027FD5F45222D2B86D6CD1E126A +:100AA00014C7D332DCDAC74AFB491847248D4142C8 +:100AB000C737D7B4E3B8623816FB89E1F63EA89B86 +:100AC000253F81797609FE42989FEC11CC2405D60A +:100AD00045FF64DACFA1107F3121FB1246394F4127 +:100AE000EB85E6291D699EFF4E60704D9AE9F087FF +:100AF00068FF4926E2EF2A8EE0F755C98CEB78545F +:100B00003261D99ADB51E77344DAD5D29A68C2715F +:100B1000287A14A06BB3B4DBBE54D3EF4F4047FA2E +:100B2000FE8914A51AF06B15880FFA6DAD64F48E6A +:100B3000EF4D2A8575910252FECD7184642732BA39 +:100B4000533ACDC0FE133B08A1FD630A189DB616AB +:100B50006F2732D43D8F61195BD48FF0C4922E3B46 +:100B6000F1C27C2458E381F5D231D309A9EB686A3C +:100B70000B6612E212BD45D03EF6819D6DE689847A +:100B800074BA587B01AD07ABA2C3674B64F0C703CF +:100B90007C749E17CBC5A089AEFB2C19B75BA44B08 +:100BA0008DAF94CC4BE9F3251CCE0F93951B11EF21 +:100BB000A49F00DF7692811E1BE5F360A5E07D9C7B +:100BC000C2E90C76297680977490B9B47D25E7F355 +:100BD0005D741A42C70D5E42428FC3DACD1D04F028 +:100BE000B1CB4AD70EEFA75BF1794C4177915FB358 +:100BF000CEBFF3F72724FAD6C0BC9DA47F0CC98FC3 +:100C0000D0C308CFEDBC7F47AA72FB70FC3E69E6FB +:100C1000A947EFA7EB209758BD85B4D822903AEDAD +:100C200038DF9744ECFF7D0EAFEBEFF6C61085BFC3 +:100C3000C9DAE1994BFB495CCE27ADF9DDC74F8C92 +:100C400030CE83FCFDAD7C3DBDAB5EAD2D037DD0D4 +:100C50002B7A058A1F7B1109C6C5231F6C8575DA9F +:100C6000576D457E57322433C83195FBFB8695FB83 +:100C7000242AF7C2B072FF6014B9DF311C1EFE01D6 +:100C800072BE7B24F9BB4752E56F647CF703BE2B31 +:100C9000A06478FAAAF8EEE1EFEFE7781F01DFFB36 +:100CA000114F43F1FD5BC0D345E0BB07E93614DFCC +:100CB00087240DBD63D4F90B06E73F3A1CBDED3028 +:100CC0002F1BB7574B472587B60BC0D712B3174416 +:100CD0005E47E8B88F5CEB90B6D2E7FB9295BEFF1B +:100CE00025FABE03E346A3EF2490E72B09A9EC986D +:100CF000DB162CFE87CC776A247EFA09E727A3BE91 +:100D000030CAFF794E7F8A97B352C5503DD94948C2 +:100D10000DF0CDBE64FFE7081FE99F017A69D7DDBA +:100D20002E612BED9BA9740B8974BE4FB9FD58251C +:100D3000C9389EFADE2E73B76086FE8D9210147449 +:100D4000E399134718CFB80EBA3E5B6205E835C584 +:100D50000EE5ED12A39B8B220CC66BE27E44A7AB83 +:100D6000A301F4B69BEB6977A2C04B56FF66AA229B +:100D700025327B9204E39C2D17EF30E531BD0D78D1 +:100D800055F5B40A8FC91722FD60572A89027631BA +:100D9000A2EF6F785CD5F72B1CD0DFACEAFB4C18C8 +:100DA0003F3951E53F365EB4758EE5F6722CB77368 +:100DB0006A9DAEB390AFB308CA68EB34E269B4EB96 +:100DC0009D0FF61CC7574A13DDD1C7A39C83FD5462 +:100DD000BAC118248DCA6B3393D739BDF9E8AF4D2A +:100DE0004A54ED9DEF1B8057254E3A92040D448ADC +:100DF00085711FB152B8295D1F59B5BDDA4AD7D3E5 +:100E0000B95E2A01BF2EBD81D939795576A748E749 +:100E1000AEE17830F2E9E0FBD6AE3165C588975A8D +:100E200098E7EA2AE6372450BD01B381FC5321221A +:100E30002E5BD0E3A5EB6D13829EA5C0FF331CDEB5 +:100E4000C7A183633EAE7F881CF092904D3AFE2589 +:100E50008EF20BF4DF88FDA5B860A3EF62FADB82A7 +:100E6000E85F44F0985482E8B20F1C49A275CAEDBD +:100E7000255B697515E7074AA79548270705766238 +:100E800004AF43C767F4AAF6350A80E798223A15FB +:100E90007D1AE3A3CF29DE4C7207E907FFA880F291 +:100EA00047318C770CC78BACA3AC4CBF8E923258B9 +:100EB0004764FC56753D775DCC7AD47ED1F1C2FA99 +:100EC00005ECF1E30995BD7331AC0C4EA64D40BF66 +:100ED0007762424D943F0A3CFEAD8C5F1BAFF08DB4 +:100EE000C3F272567653E540F981B0BFABED0ED434 +:100EF0009BE40BF3A97E3B7B769ECA0FD596240319 +:100F00007C3DB258FA702CAD937EE17CDC45CDFF80 +:100F10007062C5D0F91707EEF14E2DA35848224B49 +:100F200086F31B17833F4D9F3FCEF9FBF796EE2CC0 +:100F3000D073759EC98F270EC3EF8B03DFC5F1E217 +:100F4000497F502C07F412F417813619A54C5EC165 +:100F50001FECE27A2D218A7FD7C5E552E5E7852D82 +:100F600093491E2D6D761274BA5899508AF2F4AFD7 +:100F700089D88FD955E5DA44B32044E051E153C70D +:100F80003DC4C71D5CAF95ED177E6F21757B1D0CB1 +:100F9000BE52CD7AD67AAA0F69E154E133AEF7E8B2 +:100FA0008680772AF5230E6DF06399149842DE4F00 +:100FB00062EB8C2945FA052DB43493BE1B6FA34B0D +:100FC000B09AFC2FC2BA575FF2F1F7BC143F7DF61E +:100FD000B28D268AAFB5B5F49DDCD1F3C557E58750 +:100FE000EF88D2EFFDB9113E689A5652970C9A28B5 +:100FF0009836A3B792D65FF49E70D0FA1F1E489B16 +:10100000E1A17AA1E9156F9D9B9A8674D7DFDADAA0 +:10101000A93C34CD1550DF92E00F63AAC18F9BC16C +:10102000EA7F492C9D11047B71BD807EC3DFE8FB04 +:1010300058EFD1FB7111F969C1F5962531BBD55433 +:101040002D44E9C7F4DBDF1379BF5923F76B74F143 +:101050007E37D07EC5D1FBCDE3F306604B027E67C1 +:10106000D884FAB64979EF0581D67BAA6C32D2A32F +:101070009C0E48FD95AB6338413E4DC4FA4B9C161F +:1010800054BEEC2E3ACEE16FD8D02E74CC8C0DC16C +:101090007B3D5FB8DA41CF772879A89E6C940F1C0E +:1010A000A5AC043EB650B916799DF373028CD39A61 +:1010B0002B9427E7A37E32037DA2F1D97385AF6716 +:1010C00083DF44F92915DE5B7D89D001FE569F3D03 +:1010D000BFDD4BE75DBB5FF4DAE411F86408DC6761 +:1010E0001C60878DF0BD5C29C6088EA178A0705F5A +:1010F00002F31ECC1CE8BD9C8EF352B5C9B489CE58 +:101100007778A26D4C3FDA3B5F11B42BAF31FB36E1 +:101110000A38BC5F0D0EEF093FC0F18595D94BBE73 +:10112000CED951E8253A3F75C0FA002EB02F148E63 +:101130004930AF98D59F097A435DFF68F5E30C17F6 +:10114000D32B1AFD38C355115D3F821FE0627EDC50 +:10115000A76B09F8C7CC3F8AA6B7AE77E9FD8B51DC +:10116000E8ADEBB5F38F566F69E850EFAAB8783A5F +:10117000504A239E2D1CEDB42A4BB43E09FE4DDF90 +:10118000A3D2D16FCB8FF0BD1026DDCE78C6FF760F +:101190004AB226BFDF9324461FBFC0E3BB0DD6650E +:1011A00049EE17FD17419F7B5D43ECD7BDAE11ECB7 +:1011B000D734F1545302D59767AA04845709539042 +:1011C00050DFD22D8B069E49F676DC0725509D69AF +:1011D0002EE27A99FE8FBAFBC46C8FD4936A245D99 +:1011E000DDEDF3E8FAA7D6C9BAF6347F91AE3DA398 +:1011F000C1ABAB673556EAFAE704145D3D3758A337 +:10120000EB9FDFE6D3D50B3BEA74FD2F7DC8AF6BB8 +:101210001F136AD0B58FDDD3A8AB8FEB0AE8FA5F56 +:10122000BE3FA86B2FE96ED3B5971DEDD0D52BFA35 +:101230001ED2F5BFE24448D73EB17F8FAEFDAA8FE4 +:10124000BA74F56F0CECD7F59F44CCC17E5617CE1F +:10125000A3A635C966954E265D3B394FF5F219CAEE +:101260009802A5AFAF44F0066502ECD55740EDED0E +:101270003CD685CCEBAFAF856019A9B57C00EF05F6 +:10128000E97F606F29163FD08E3389EA6701FC0E33 +:10129000AF25F21CD6F3FB191F93F138EF0783F645 +:1012A0009AF6AB267909329D77D251918468BDF6C2 +:1012B000027C35142EE10270116F37C0F59FA23702 +:1012C000080F834A5F414A74B814FA1FC035071AE1 +:1012D000E97BB3C324D42D0C0327876776A560066A +:1012E000B91B022F61FB7E23BC81DFFF65DC110D82 +:1012F000DDFEE872267F08F2EC25DEF322C89903B2 +:10130000D77BE618D52B243A1EAA8376B4ABD58AB0 +:101310001002BC9DDB3030EE48E130F07A48844F5B +:10132000285C31B25E0EE38AF472E8F47A46E6A3F2 +:10133000201911DF17C2AF4CFF637EDA8019F03B32 +:10134000A94A200FE746C7EF1CB32582BF8BC0AB6D +:101350003B89E2756C04AF7F255573CA28FE94392A +:10136000896688A31AF59C8A3FBA1FCA487247B794 +:101370003B454917ED2F17257D057F596BFF93BE20 +:1013800082DDA176A102E62566BF7C31FB1A2569C4 +:10139000885D509246B00B83FB9A2A160757ED18CA +:1013A0002910507E5A2792DD10AFAB4D62FBDF68EB +:1013B000FB9B5A3E6F647F73C6ACDDDF28B6D45802 +:1013C000D00BD44F980BEB51F73B67CB938E80CB70 +:1013D000FA098F0346E057E643BFD1C2BD246988AE +:1013E000BFB22469047FE5E04616AF38F8A2E8DD15 +:1013F0004D677D2659EC765378B793712188ADA857 +:10140000E72E357EC2E4D4FCC01ED8F4D1F5DF0C43 +:10141000E3D6C8D5C2CD103735AFC3321ABF7D3B36 +:10142000E9A2FD9C6F277D3D3FE7BB5F85DF46BF9F +:10143000CF6A3CE1A72035B530BC04DF8EC378E627 +:10144000E62D04F7259B37B27D5188D3E37BBC5C46 +:101450009CCCF8A73ABE12FDDA16C189FAB1E52490 +:10146000DB5FB45A84106171E49DB0FE23691312EE +:10147000C05F3DDBFB9AC3AFD9EFFC9EC37D9CC32D +:10148000FDF69D8370FF18F865F5B739DC75CBB6AE +:1014900055E8E0CE94504F837E1123F05AA52E02DA +:1014A0007C395D74209CCD05246443BBA4D44ED309 +:1014B000C4739B33995E8E03BD4CEB76D08BB07FAB +:1014C00095CDEF811E6BA3FFA17E06BD47E7B778E0 +:1014D000E8738D1E8E01BD47FBC711D65FD57B6AB1 +:1014E000FF18A2E93F8C3E7C2A89DB192B4965FA5B +:1014F000707DDB5884CBEFD1EEA78CFA50AD1FE99D +:10150000CF4FED1F467ED432A1F2A3FC029DBF3720 +:10151000A0AB27D584F30B74FE1E29D0D653EBEC79 +:1015200005DAFE697E4957CF68F0E8FA6735CABA2E +:10153000F69C4091AE3D37E8D5D5F3DB2A75FD0B1F +:101540003B145DFDD2876A74FDC7847CBAFAD83D2E +:1015500075BAFEE3BAFCBAF65FC23F60FF4FEC33E8 +:1015600015CA4FBFA47A10F6FBFF95649989E790DE +:1015700027177AE0BCB3C57D9D5DCB8FC6F2889BF3 +:10158000F16DB476556E0F6EF079A752FA746FA8AC +:10159000D3C9710DD76747363460FBB31B1AF1F915 +:1015A000975C8F98934D411B9C53EC379DB4C503BA +:1015B000FF3606813F7709FE2F416EC863FA730834 +:1015C000F088201E787598CEA781B79A5CEF9DAA07 +:1015D000C1C7147BBDAE7D9A74B3AEBD86E2E34A4B +:1015E000AAAFAFF1ACD33D9F21DFA57B6F63E6D2FD +:1015F00087408E367BAC04E46833617854F1BAD905 +:10160000CCF0ACE275F3FEA51EF04306F11F2C9E54 +:10161000A93822F877EF183313E2DFAD27AFF1C016 +:10162000BEF64822C5EF087C7C21FC1AF17A949F13 +:10163000C7D558F5E7ECD7707DA59610FF4FA6E506 +:101640008BBDE2A77E8476E43886717EE3BC545F6E +:1016500095C1787F2A7CFDA6ED64A89E9E922CA160 +:10166000DEAC31D18D15F5776A2C1D3518D7E6FB28 +:1016700051B3C070DEE29EEE8573FDEA6481EBF14A +:10168000BBB1FD4E952651F064A68AA45BA3878466 +:10169000DC0575A0876BDC568CD7D5F07C00E37B2E +:1016A000151C1F5F979FBE321F71FE50F948E58FD2 +:1016B00068FADD4C1AE1308F981D5676CE1739B78F +:1016C0005B960CF2F2732A2F1386CA8BD12E1AC79F +:1016D0000F4047F09B1CEC3C0F3B82DF7F3409FD41 +:1016E000A56878DFBC41CA345B22756A2991CE9B1C +:1016F00005663FA9C3EBF9A613C747BB483C0E1CC0 +:101700001FC085F30CAAEF8B203FE1BB9C0E8FBA64 +:1017100095BB808F089CB38E22AEFFA8DB1744B820 +:10172000CDFE22847394EF452F3B70FD74DDB2161D +:101730006FC9F4DF7DC0AFE60E3CEFD8E150EB415E +:10174000CC1BF115B0F38F1899B5ABE759A9FE1072 +:1017500081F392B8720227A2C404FDC0BF8AEB5382 +:101760004C2584FC6AC7C2999E31B4BDC0EF317963 +:10177000B1FEBCD90DE77AB40E6791C185CF1FC108 +:10178000F352E93281B6DB9BE73D7F340BF344B87B +:101790007E99F73CF04FA75A87C034E5C3CED8C135 +:1017A000BA62A77BAECEBCC17A10EABBF8B9F1AF82 +:1017B00076CC7BBE99C5017F0A78EF6D3605D13FA7 +:1017C00024CE10EC9BFFD1E7309DC54F1ECD03FF0B +:1017D000CB63F616CAE06710DD7BC793AD2CCF2430 +:1017E000C57F00E8EA5C3F80DBC1FB8A5D4EE0F329 +:1017F000081D42063A30BCFB8A42FC1C2A8474C98C +:10180000F17C1AACA6F3E55431719089B415EA72F3 +:10181000B349EAC6072EA493A9A851B0429E42310B +:1018200091405F35F173C1B82276DE29D9983FFC2B +:1018300032E7D3779259BEC43B5C4F257876B07CB3 +:10184000A11A13F64FE06504FE66DEDFACE3B75E77 +:101850008FFFCD64CD3E8392AFB688AEA3B3D9E5FA +:1018600082F3B1EA66D31D604FFE1FCF83A074FAE6 +:101870002DE0A5D79B14EB67743B392CDD385C1742 +:10188000A25B347AA9FE68B4F6EBAE177D009FC95F +:10189000EEDFB980CEBB7A7F528948F176BC4E2C00 +:1018A000EFA3F5354FA7E239EC671C5F6B4D0329B9 +:1018B000A0B7DA7EB4D107A56D5F7D304306BD25A4 +:1018C000EBD6B1F64035E6196C8A8BAF027A1BD79E +:1018D00071FC8BFF48063AD47E66F3A17E91D9FE57 +:1018E0007F090A1782750CF6FB37727B92E566FE5C +:1018F000FA316EB76E54FD5C2AB8DC6F15CE539783 +:101900007DBEAF7E16E06F699D48E0BC7849A49D1E +:10191000C511026CDF6FA7FF815FEC2789D3413CC3 +:10192000EB83FA78C00AE29DEEA6FD97B5199E7387 +:10193000BF788521AEB0B02E6257CEE2FF8770BD72 +:10194000F365A68FE77BE34290DFB0C0A7B747AF50 +:101950007F292EF151F88FC3BB74DDC7175FBA1B07 +:10196000FA19F1D1E066FC798CDBEF41FC10EC4B0D +:1019700096FA042BA45618F161847F106F063CD4AC +:101980009B4BA6BBE5A17830C24F3186F85D41F193 +:101990000BF918D1F0315DACB5C039DBB2B902DA60 +:1019A00049237E8C7850F7352A3CAFAA7012EFF1AC +:1019B000383ADFFBED1602F68B745F8DE7757378AE +:1019C0003F0D3CB87F91E87F2C0E243F9304EBA49D +:1019D000C8DC4AFBCD0B5A74FB9E157CDFB394F830 +:1019E00012200E47E17C2F0A9D75FB1FE3BA8D7014 +:1019F000CDE2F6C2B84F22E6EE62F0CB6E70F3F89D +:101A0000D1787DFC8894BB87D5BBC6FD92CA574B65 +:101A10000273757E8940FC837589FA65B77944F94C +:101A20008324D86F5A7682199C6B1F30A35C898BF4 +:101A300013401EE712BBECB0037F9808C4DFE62812 +:101A4000315857C73BD321D4805CDE46870BE07901 +:101A5000B282FEDB12D68596C11EC0DF6D1E2BCE74 +:101A600043F9EC532D9F45C3C3BD6EBE5F1C4FC6EB +:101A70005F0CFC9F83CF5181F18C6E88270F08F695 +:101A8000D06E2112D7A0FF0C5AA9AADC0E425B111E +:101A900059EFE0F908F5B7407F8E22CEB1DD3D4C1D +:101AA0009C433D2756F9F346BBA35B647C776A9061 +:101AB0003F74E7C47E02718CD6F45BBC806FD53E68 +:101AC000523FE7C76E38778C65710C55BFC782BF30 +:101AD00022423E86F9732D9F0EB1CF4796EFE9A4BF +:101AE000B8F03BCC04EC8A5FF8A085A05F396001B8 +:101AF000FE5A12B09CD1BEEF77522D520CEBB85269 +:101B00008272A9879D6F2F256CDF4482B4BF268E19 +:101B1000EB07B2D1E7FE98357B4CF9ACDF7A38E3BE +:101B20006DD38C9B1719D738DF10FB6418DF384E44 +:101B30002BCF776AB57AFB1488EB3D2F966C84C661 +:101B400022E64F3EED36E9E2A24BED4999E6A44884 +:101B5000FDBD34479DD63EABA5FA9E8AB7881FF6D9 +:101B6000179D1F769FE594DE0F23A7BE961FF6BE36 +:101B7000FB14FA61E7DEB6A1DE3F53131B02E65405 +:101B8000F314CCD46D4870A1DF1C84D21EC84078F9 +:101B9000D4BC8524D92B005E3F01654CD76F96D904 +:101BA000B95D92D92B78E9F3EDDC9FC13FCA07DB21 +:101BB0005D5227E8619B9D34C7B8E03D06B73ADF28 +:101BC000E0B8455E412A8E1E0F3CE7BEE878E0B9DA +:101BD000E1E4A4D7D4F8EEBDE0173E2F1288DBDE97 +:101BE000E0B90B9F5F175886E5F5819B99BCA6B0BD +:101BF000F9E87E534871839E7AED86EFC03E739F6D +:101C00000DE36FABBFFDF1F72A64C00FA537BCB77A +:101C100062D94E889B898526F4BFDBB2D8FE58DC9A +:101C200028E07E708B6CADD9077C945C7D398C4745 +:101C30003CF12690D733B14C5E5B93A7E2F3736F10 +:101C40006FF62CA5E3C47A62311F4CDC987B3FE42D +:101C5000BF91E7E87A09C825417BDC6A65656E0AB1 +:101C6000CBDBCB4D61784D4B617E509BC55FD4582B +:101C70000C79A540DC081EECE620911CF0DC8CCF32 +:101C8000454140FFA635D65F74A7067FEAB8F63017 +:101C900015DEB2E1DEB7E273800BDF77B1F5A8FDA8 +:101CA0002E4B61FEE7657C3DF6701CCED7EAA2EBB9 +:101CB0007268C78967CFB99C19E5E487EE29E3010B +:101CC0002FADC9CAE529282FFD16D093377A8E9EED +:101CD00010E247A3E758BCD6F985D09D037E77B5BF +:101CE00018DA44F93156906695C33EB4DA82790227 +:101CF0007D45C94E88BBBF62969C2E38D7E2F4F76B +:101D00004DA3FE27E367F77CA0CBB46513B6B26999 +:101D1000EC5A7BF34AF1937D9321AE1BB4E07E63D2 +:101D2000893D18827569FC1B7E6E47FDA609FC3D46 +:101D3000BACE25534525267E183FB0991CD1FA9777 +:101D4000544D1C8173C97778F5DDA96717C0F2FB84 +:101D500089649D2268FD4DBA1B99007E01FB5B12D0 +:101D6000D0FB4746FF6969B9F7D92419F0D1E5439B +:101D70007C8C33A35C8CD6AF24E401C4D37D537F29 +:101D80006D978B613FC5F48273EA6B0AE809EA0735 +:101D90002D28A77899335594BA69EFF68089801E6B +:101DA000DD566EC1FDC3B6A2FEE7AE06792C37CB79 +:101DB000180F28EA9B3F05DB2B24F08BFA608A344E +:101DC000ECCFE2E90E47A810EC77C57FDA9769F807 +:101DD000655BF97B63303EC1F98852D0316D4204B6 +:101DE0007F801F1995E8465CDF91BB63513FBDDBE7 +:101DF0002EF2B835753428BE9D1E268FD3785C7BB5 +:101E0000D94E01F37796551CAFB6D1FECB5A049448 +:101E1000CB25EBC593104F5C12D0FB65FE46EAAFB5 +:101E2000C98867BDBFC6FD393AB815F877B4FE9CBE +:101E3000D13F792085FB67A5A454EB9F44DB3FA9E4 +:101E4000FE493B511E62F2C3E65F6A66E751449960 +:101E500087F89D269E7AEE6A0ADF99F2BC3CC0C7DD +:101E60000ABEDFDC1678D30EFBDB6D5F8828E7BB8C +:101E7000ACD471817CE7F8AA4737D2F5F5DC7D59FF +:101E8000EAFBB4FD672956C4EB2E93FC832A9083AA +:101E9000E72DC847D1D6650F88A480CA7D4C40C0C5 +:101EA00052A58B331043CC1A7DE3E4F754DCE503F1 +:101EB000429E46BFFC96CB67E27AB66F76971325B3 +:101EC0000DF68372DE6EDC979A658C2BD9B3E452E3 +:101ED0009057B5FF2E81E5355BF7572B101BCAA134 +:101EE000EB80F964BA0EB073B98138ACE70592B0F3 +:101EF000CC0F24625910C8C0F6C2403E96970472B7 +:101F0000F1F9A581B1582F0A946139265082E5650F +:101F100081ABB01C4BED1CF42B0E5463392E702D8D +:101F20003E1F1F9887E5E581B9587A038BB0BD2421 +:101F3000B00CCBD2403D3E2F0BDC8AF5F2C0ED5801 +:101F4000AF08ACC37242E01E2CAF0834615919D8F7 +:101F500088FD2606EEC3FA958107B1BC2AF00096EB +:101F6000558147B05DF5375EE272353B71A9C4F229 +:101F70000EBC5EF0CF7645D1C361AEC757A628FD33 +:101F8000A08FD57E22CF0B37F6FB34457F8FCA64F6 +:101F9000EFB6E7E3FE3DBF14F6EFBBA81E48A3F47F +:101FA00059939BB71BF6C1A7397DEC96462543880C +:101FB000ECD713A7B2FB006BF6D763FC9154268DC8 +:101FC0002AFEF36E0A7B7F9739484C98BF4FF0FC8E +:101FD00029A6A04F80713A8B4D35A0D7EF2B3ED369 +:101FE00003723DAB42290737550E761DCD437D3533 +:101FF000A51CD659946A41BE9C90A29C07B873CA8E +:10200000DD33E7D1F69C66136E67652255435D9E0E +:102010004A50BFA9F195CE58BD3D9453557FAF7F2F +:1020200007F4DF955E50CAEC08BB3F20DE9387FBC8 +:10203000C75DD66EC10C7A8E6E6C1E57753FF46FFD +:102040005DFA04F851796DDE4376983FE82DC3F5CB +:10205000A6B238566E873C39862E28FF21E510A49B +:10206000BA1586FC936369FDD23DC143508EE90ADF +:102070004D8EA3E5D8FDDD87607B33AEBB7FB28399 +:10208000D62F3F4A0E035A4BFAE4294E5A2F3BA152 +:102090001C86706445BF7F4A3CD0C91A6A8AA7EB88 +:1020A000D9F50EF16EA4F5CA531D226C0B06E96F2B +:1020B000238D7B3574B1CB1D0AE03BF30E09E3346D +:1020C000BBCCFD3189C543E9D30970039C940F4013 +:1020D000EF672A034887CC72521A443A48338B90F0 +:1020E0000E8C5F6A5305950EDED40AC0AF540DED19 +:1020F00003D388B49BB6CF1E67427D6D6DC943BBC9 +:10210000A2F21DC5EF98B94E2D1DD838BB0C7E6AC2 +:1021100034FCD6FE93E0F72D6E57A3E117788FC5F8 +:102120004F4796E31B381F5239BE3ED51DBDDFA673 +:10213000549E9760C073A7891CA5B647732F86D29B +:102140009076BD37D5A4DED719155EBF93CAECC50E +:10215000FF355EE7A78E8C57744ED322F710A3E9A4 +:102160001B180FE01E4ECF118C53E6A29E6BE7FCAE +:10217000D7D6C6E293AA9EB3EDABEE8638A5AAE702 +:10218000EAF8BAA2EA2FAE67AC3C8E1189CB8E4337 +:10219000FBF7109FE7C364E5FB202FC4A38FAFB705 +:1021A0009BA46AA05F7012CB5F995DF98A22227DA1 +:1021B00064BCAF8C072780BFF8E210D02F97FA0BD2 +:1021C000664A77FACF6E28E38A2513DC1355F35A53 +:1021D0008854EFD1CA996ACF2372A8F2830BF78390 +:1021E000C0A7D0FF385F67641C81E535DC95DEB998 +:1021F00055A3FF3A1D99F89EDA3F1ADF7ECADB3BF2 +:102200009B9F44BB1157C5FC83846617F271C2546F +:102210003F581A0DFFFAADC0BF7DA9E245F1EFCBE3 +:10222000FF47FCFB782AC17973AAA41EC83FCAA144 +:10223000764706B9ACA2B88678BEC78AFA4F268C14 +:102240007E7215CBE3A3F8EA867867D0E40C815D53 +:10225000116D0353017E624B9460FFF361B2FF1D69 +:10226000D007D1E4408A934B8098A77F70EE5A47FD +:102270001AE4A54BB1503F45EBED106F70F5135EBE +:10228000BFCF91F6D5E313A753FFF642B303EF8F09 +:10229000FD2915F9D7771A4AE55209F3D7543EBEFE +:1022A00090FD57E531223F52892A3FF5C5A8FF3EF0 +:1022B0004B7547C68BE6CFECE37A2DD673217FC6EC +:1022C00085F244E59CC90FE7FFB68E91E55C5D6F32 +:1022D000F802F2BE65C69B41E8ADC64DED3C7EA25C +:1022E000AE33C6C3EE61C6D412DC973879FCD4CFC6 +:1022F000E3A7F602FB05E2A7215D1C4B8D9BAAF725 +:10230000C48D78CEF7E8EFED803E7AB238020FE167 +:10231000FBA9DBF99C1D9BBC0970BF20F8128B63E5 +:10232000A8F9E0B5F06F0AA7E015308ED4F15D266C +:1023300077B3324968135D77EDE70251E83A7A3FA7 +:1023400017B134C64D67D1F7C06FE815EC213BEDEE +:10235000DF53622370BED6EB34E1BEAEF7A48072C9 +:10236000D05B12877952474AAEC03C08637E945ACC +:102370002EF4D70F9B3766C4CFC21B9E71005D1E23 +:102380009126DB73715FCACE19557DACF69BE319BC +:102390003C679CE181FDCDF28166FA84344BEC9C74 +:1023A00051E5BF34C7BEE714FACFB455CCAF4C27C4 +:1023B000A18D9263285FF77AFCF3609C4722E7784F +:1023C000BD97D0F9DB647E8EB736BD2A8F0EF0C381 +:1023D000C1733CFF74E8AF247595001F3EE2FDF524 +:1023E0004FEEA7EDB536BA4F053D5CF676B20C71EF +:1023F000E78A67DC808F5986F5ABA51A3F33EE4735 +:10240000977906CF0B305E7EB67C1EEE7FA3C5CBE0 +:10241000D5B89EBA2F85B89D348C1E37E25B9D7F60 +:10242000B1C0F69FC422A01EEB85AE13514FDC094C +:10243000709266964FA0D804CC2778B1BC0CCF130D +:102440008837899F5376676ACF29D5F5D0E785C34A +:102450009D5F2E8E92CFD1EE617666B185C52B85BC +:1024600075CF2C86791797D804766F8BF1E91276A1 +:102470005646EEF1307F6A897733E6F11ACF23EEC4 +:10248000F1B07D69AFA53B53E2F14CEF30FC190D83 +:102490002F272C1D78EE75628548605FFEA2FF8AAB +:1024A0005432CCBAD5F24DE00F8AFF6F014EDC1AE0 +:1024B000BAC9C9C3D2FF04E4E158869EF70CB6D767 +:1024C000C7609CBB0EF0A559F7BF723C1DE3F0132B +:1024D0005BB008E2BC6D4B77DA09F553B7149CA9E1 +:1024E0000852BC6F210315BB413FAC7762DCA0AE44 +:1024F000FEAF151BC769F058C9F0B8E4F01609F82B +:10250000B52EB7D91DD4CC63C4E73188E3D0796345 +:10251000383FB71365BF67B8F847C17CC6178763F4 +:10252000BCDD747EFB7FE697821D57E31F300FD31F +:10253000D32C5E7B87C4D601BA46CBDF7581353A92 +:10254000BD11131648485B377760BC33266CC6E76D +:1025500046397AD820472ABEA3D14FC5B7F1B98AE8 +:10256000EF13F55B8A201ED7163BBC9F644BD3C785 +:10257000D38DE7DFEAB9AFF1BD3F703A9EF54F4426 +:10258000FEAAB3060B4723BF2A7E8E7FB15902797C +:10259000B1F37375F55CDF59E4C273FCE375229EF9 +:1025A0004BC4164A9D90DBD2CFED8C6AF7D4F3C1B1 +:1025B00068E77D4EC3B9614C11AD6BCE7F8C764F11 +:1025C000A563B47342239D84343D9D06CF07A3C801 +:1025D0008D2A2FBD9C1F2F94EFB0D0CAF2188DCF3B +:1025E000DFE0743DEBFFE1820974AADB2B4C12F0B3 +:1025F000E136FABF20C84DB905F39DDEF8C246C0EA +:10260000CF7356981E8538F789FA37E64F01BD50CB +:1026100061C173896E2AF7ABE87AB670F91F8CAB8B +:10262000B68BA14201F60F82EEDC36B6C0AEABCF60 +:10263000AAB0A07DDEB6A32404FB993AC2CEE9B6C7 +:10264000547C33A19BFEFB8D022B8E67DF22E0B909 +:1026500092FDCBCD3EA07777FD0FEA309E5A684DB4 +:1026600004FDA8F2035ED4803C3289CD71B870C2FB +:1026700075708FFBDD760BC1FC6321726E2C53FFEE +:102680006F596E790AF05D3FE403E2F93B8FF31274 +:10269000AE1F785C568D871BE3B3D1E2B2A38DC722 +:1026A000AAFC62E48BA969C39F1B47A3B3262E7BB8 +:1026B0006D9A7B18BD24CFD7E917551FA97AE14D34 +:1026C0000EFF1B05AD37C079D11B7E1BC7DFF75F3F +:1026D000DC500EF96166BCAF6AFFF25FA6013F9065 +:1026E0009B8561E3B1DB395F11389F2F8AE0F97A6E +:1026F0007F24EF10C47951833EEFD06817A2EBA975 +:1027000091F550421AF38F54BB01F6C1E560F6C152 +:10271000E48CF0FDD7B51375F52DDEE0382CF7C04D +:1027200038F6FC58FCEE8C51DE8D7A5E9DDFB8EEFB +:1027300098B04842495AF99499BD19D4F3566C1F80 +:10274000BC07F09E106AA2436D4E56DAD2605F90CD +:10275000AC6C01BAAF4C56B6A669C66FB2B07C4637 +:10276000D144FC7BD19FF6615EA3DABE378DADA765 +:10277000A59AF5EB714FF0FC172D9B4E96782C1017 +:10278000874F63E76E479C23E753DFCFF9E73ED0DF +:102790004785113F7E1BA727055F81F8488BC5E75A +:1027A000D1C6EF3AD21271FCF8894FF6419CB44978 +:1027B00032490205BD899850AF362B8E9A7DC5F0FF +:1027C0001E83BBC5A93C1EE4FED00227BCCFCE159C +:1027D000CD0EF3E75A79DBCBFD10152EE37AF7A681 +:1027E000313BB03559E9027CDD9EACEC05FC05CCF3 +:1027F000411BE03B601F7E9FF214C7D7663E3E211F +:102800000E3C17C479C5517D2FA11BE6F98E182403 +:10281000B0AF3E67F27E04F7E5477BBFE6056E6723 +:1028200035F76B5E48730FD33F721FF81338B7AE9E +:1028300096C9A7215824BFC7A4E679523FF755800F +:102840007F61CBF0F9939D441E314EE5E0E3D0FD6E +:10285000F51B696C7FFD561ADB5F37833E275E36BA +:102860004EFC05C6A178C273DC51E0EF23863F7FA2 +:102870003FEEDF2FF27B136739FD34F83B9B368C3C +:102880003CAAF83BF7F6A50970EEA87E27C3D84FFF +:102890003DAF57EB6D89FAF95B4B59FDBF39DD9AB6 +:1028A000DC6CDFEF4A67EBB01BBEE760AF65DF2192 +:1028B00051F31ED4715CE94EF69D35CF64577A050D +:1028C000DEE3C77C80D644FDF70A5E4AAB76A503FB +:1028D0005DF8F8AE74C6A79D79ECFCC0F8DDB3D7FF +:1028E000A17F05946C5CAAA4C6003EADA2382C1E44 +:1028F00053D399DCA8F7C4D4FB3ACBB689BAFB3AD8 +:10290000AAFD5CF63441FB0EE79E20B7D1F2D7FC5E +:1029100045D2B310B2F92B29B642DED6D7B5AB807B +:10292000CF38D750BB7A79FAF0F968D1F49AC6AEAD +:102930004E481FCEAE126F91569FAA76B5DF705EDD +:10294000A396B3385DDAF97E1BF424E865F81E120D +:10295000EA6733DB8F6E8F67F14AE03FF83EC2AC27 +:10296000747D9E8B9A57A3E6D3A8F9356A3ECDE0D5 +:1029700077410CF934FDD6FE96544AAF813104EF0D +:10298000DBA52E967A52210F61AA4C20EED49A4BE9 +:10299000E22BA1BDC4E485F87CE27CA9D542EB8999 +:1029A00032819BEE702F31E8A4E3DE9E9ECBE008DF +:1029B000CEEB815053822C4DF7D07E0975327EFFCD +:1029C000488D27F7366FC2EFAB0CE287C39F20B369 +:1029D00038AA5D66FBEB6A9285FE79A49F498D3724 +:1029E0002F677CC9E2CCF0990EDCAF7B63D13F9DB1 +:1029F0000D27FAA807BA30DFAD2375CA2DD05F9531 +:102A00001FF8BED45E4DFCD5983F747B3A93C768DF +:102A1000F943B18B993C1AE9B88DC3715FB212C00A +:102A2000F57D71FEBCA8B9BF40DF2370EE1693CCD4 +:102A3000F4698CCCCE8F8924605CC72EFBFDB09EE0 +:102A4000184FA5047AB2C9EA68132020BBDC4420E1 +:102A50000F760A1F47A923C28745982A4798BE3494 +:102A6000930F553E17395074DEC91C44EAB5B5C7FB +:102A7000D1F54F713CFF9900F1BB82C66A88FF3DDA +:102A8000B3848DB13D4A9C5BCDA31ACC1B230B5E56 +:102A90003C52A5C91B6B99F3A23E7F7FCE8B5F276B +:102AA0006FECA70FCF7911E2B2FF5B7963AA7E3A90 +:102AB00021FA4FDC43F1BB802A15D89F2DA0232E8D +:102AC000C6F824DB27CCE7780E7E4EF16C8FE0F958 +:102AD00084857D3762C181E7108F96C90CD596BB7E +:102AE00013D00EA9FBD1EBEC1DD3E0BCFBB4756099 +:102AF0003CCC7BFAE9D7B3C02F7CFBDEB34E483623 +:102B000078D73CE084E71FAD7FCD09F87A7BBD889C +:102B1000E7C43772BF7FC9862F27C0B9C70BE94CFE +:102B20006F14662887D235F68804DC685F6F0ED193 +:102B30009569FCE55BF7C4716663F5D55D49BABA82 +:102B40006A5757DB58FCF9D69FF75833E8FA6FDE1F +:102B50009388FBE28FF879CC47FBB23AD19FCA3019 +:102B6000F1F97DAF819E8375C1BEF8DD0336D28D4C +:102B70007AA9CF42D83EB95648617993F0675CD7BD +:102B8000B307E370DC153B993DA8A7B80D503CFA9C +:102B90000FDC8C7ADFB8EE156F773D9B4ED7B562B0 +:102BA0000BFB5E02F45F0FF9980116D732C265B4D1 +:102BB0000BCBBAE6E23E71E91DEC9C67E98FD8FDCC +:102BC00055A39D584EBC6D55B4CB8A0EFDF39507A9 +:102BD000EEC379561AEE831AEDC6DFD2F97E6C0287 +:102BE000B9E23CD5374D8EBC8491EE1F7EB481098D +:102BF000E31F37D8B13CB541C2F250BA8C78BE75EC +:102C00007FCFB31928CE7D13C0DECE7A6E8AFD5BEE +:102C10002412973077CEEB7E44067EE47155BE1FBA +:102C200059CCF16E212C0ED1027109DA2E4AC678E8 +:102C3000FC2BF3212F20E860DFDF51E3138B015ED3 +:102C40004D1EF3E20BC427DC191CEE2B28DC682F89 +:102C50008B5F96C985ED6534F8A3BDB75A64E72B41 +:102C6000C6E7AA5C1CE27A7AF963735B01854D4F73 +:102C7000FF211BBF27C4F3E6448E17919F5B88C4D6 +:102C800090271724C788866F8D7CB9123E7E0B76FD +:102C9000C4C1DEB313FB46BC27A0F2E3816D8837C5 +:102CA000955FE02690096230A4DB63AABCF03D0288 +:102CB000CA77BAFA9F2DFDD9A017561ABEBFF06782 +:102CC00061F8FDCAA51979A86F96CBCA74B04B2BD1 +:102CD00088AF5542F8D9BDAF8FCC1DCFDE03F2FCD3 +:102CE0009840408E563FF58BDF801EBAE5573BE398 +:102CF000410F7D6CEE4881F9563DDE120FF73F3FE4 +:102D00003207E3E1FD8F434C1F19E76BCA50F7F11F +:102D10008A43A07A720DFC1308BF3C381BE4EC6FA9 +:102D20008F5B24B0A36BF7D8BAE1FEEB9A7D0C8FD2 +:102D3000B47E92D53723BED6EED7CBDB2DFFB23390 +:102D40004566F7D33238FE324015AF79CC82F1D2E6 +:102D500035C744F86C19594B06103EE3FBB08E3072 +:102D6000A5DBDA2EB1DE9A30B49D7A2E5690A7B547 +:102D7000DC5F5C6BF00B1BA2C45B6ECBE07E21E7DB +:102D8000738A17BC671EA4EBC1B05088E9E1A69F07 +:102D9000D814380FFAF8CDD44E88879C7AEC857811 +:102DA000A138C2F7EAF7BF4E75E58FA81FFECCE544 +:102DB0006350CF737B22EFA70B8433D903AC5C65E0 +:102DC000E98EBF8AE26555A7C51BA48F57FD425403 +:102DD000606B46DEB0617CEDD65F3C73FC4ABA9E08 +:102DE0005BF75A926B19380ED0CF2ABDD6029F9747 +:102DF00046E873CBAF9FB1CAE3D873C87357E97481 +:102E0000EBDE1E2BC4CF8DF89CD2D563657266A015 +:102E100057D7C9E9607F9B7E72CE0AFCF0F14181F1 +:102E2000A4E60E7DBFE1F117E2A19F4AAF41FA0D82 +:102E3000A15BF7ECDF95633FCCD38C46BF79A03420 +:102E40002B90BF7FF93B3A6FC39B362FC0DDF0CB91 +:102E5000DBE361FD7F3037323EFF714B0AD8DB0682 +:102E60004B3045C2923D6FD87527F2DFCA57EEC48A +:102E70007C7ECADF6920BFF0813A806BC58F162047 +:102E80005C37113FF25FC38FD97DB1BF9A49CDDE68 +:102E900061E8F95906D34F7FD86D4367FE0F70186C +:102EA000077AF75531C4F2ADD6A19FA1DE03464D96 +:102EB0004CEB7FB533FABCCCED2EE17A6C2DEFB53F +:102EC000F6B1CDA8C7FE98A5A482BC533CE8F499FE +:102ED000F8CAB454AEFF30FF17DFA32A620A3C875A +:102EE000FE7D162566BCEE3D1E8F62F3DFC1E7A7AF +:102EF000EB8E152EA765CA609E421FAC638DC0DEA7 +:102F000001BE813CD74B33993E1894F7C7B630FACF +:102F10007079FFF418D3236B42736B500FF459BAD6 +:102F200053A15FA867BE807AC016B9E7AC95E3C726 +:102F30002C5C8EF5ED745D66418BCF8302FAFB3716 +:102F4000EDA0FD34FEC6DA7D4C1FAF857BD4BA3CC4 +:102F50006226876A7C7FA5E17C452D8D7AE0AC41B5 +:102F60000F0C9E0FFCC83D623C5EF5B75659424FB0 +:102F70003C0CF2FA860DFD9955BFB060BEF7273FB5 +:102F80003F7CFC5B94BF3FE952E554AF578D72DA4A +:102F9000F0E402329C9C7E92EC23C3CA297D3EACB5 +:102FA0009C26B3EF65FCC3F4EA20BEF572B9328A01 +:102FB0005ECDCA1CE23F245C45AB7FFCE9AD39A085 +:102FC0001F8D7855F169D48FFB21C9C13D543FD283 +:102FD000BF63448347157F2A7FDEF2B3D538CF2005 +:102FE000DFAAFCA9DAA941FE34C2ABC7A3B1FD3DFB +:102FF000AE8754BA5B36D17D31E4B53D2DE23DADAF +:10300000D3F2403CE4FDB7C4B038C06989D7135946 +:103010007DC06D6D057DA13E1F8861F73B4EFB06AF +:10302000E21335FBB39307C4788877F787D87EDA45 +:10303000C87F1029C57803DF6F4F131DD901D84F02 +:1030400075E4974204FF4CB385D70BD9EF08F03CE9 +:1030500092FF22BEE357C13AD57B5941C59C46F148 +:10306000B88C81481A9E6B8A8738CCB203B7E27756 +:10307000A796B7EBE1BFC9311FCF776FDAA1BF6762 +:10308000B89284ACE04735FC48FFFC16AECF6F31F8 +:10309000F08D9FC70F8D7CB33C93CB61092961FBF9 +:1030A0005C96FF711BD75BD3C4E2397514DFA78F21 +:1030B0008A78AE73E680485A01CE9F33FF9F045949 +:1030C000BEC01ACAB7DAB8E329E0AB4BA3DBE553BD +:1030D000FFFAF6847B689755BF796BFC23B43CF507 +:1030E0009B372EF937A83FF57AF65B6468FF29070E +:1030F0003FBB11F4D3E98336BCF779FAE07F64DF94 +:1031000003F5DFD9BCB0CED39BD8FE3678D089F694 +:10311000FA7416F3EF9A9E3E37BE1FF52DBB5F7D06 +:103120007F26CBFF3A73E0EFEFC0F741CF1CA050F2 +:10313000813DE5FBA9B5BF8BC1FDF1E9A7CF4DD01E +:10314000FEBEC1D785670D3F1F3CED2475906F73A0 +:103150003A91C59FD6FEDB44CCC75FBDAFC70AF727 +:1031600022A6FCFB97E341BF9C7E92F909D47FDD48 +:10317000052EF3C33FBAF27B168AE73F834F47F72A +:10318000F9653FBE7B369C8F0CC50BC3C3698A07AC +:10319000808BE2A501F462347CECCD64E738FF7CDF +:1031A000F8F8CB8D30FFAA0357E07DEB085E04856D +:1031B0003D7762DE10859F3D3F786E3CEC9B2F048F +:1031C000EFCBFF9FC1FBA77F5A7819BFDF99C9ECEE +:1031D0008D91EF87F2F553DFC6FA2F9D5E5CEF28E5 +:1031E000E5DD99F5CF0AFFFF0EBDC766FD73EBB7AE +:1031F000E8F47E8ED3DB29C17EEFF4D35F66938B38 +:10320000807BE63F2D9D47867BD0AF3179EDE5741D +:103210007D6F92D0826A01BD0DF4339A1C2C0FBDD4 +:103220006F7E2EFECE0FE1FB86D902B3CF7766B15B +:10323000FD827A8E3B3BF926F423662BDBF8BD3505 +:1032400013AEA72FB9F289ADC3EC93E62822FA6B2F +:103250002F6DA4F3533CBDE434494D323E47BF6D5E +:10326000819FF9770B946BD9F743938FD6C1FDCD2E +:103270003995FA7DC4B70CFB828575FAF6EBC86EFA +:1032800037C4E9AF6BB0909000F1617DFF05592C18 +:103290008F6E21696C61F1968BC60BEEEBF89D4049 +:1032A000B2DB8097A178E07864DD87E0CDE667FB4C +:1032B000421B317EBFF5361DFE8C78237C9F8859DA +:1032C0001DA6087E6D0ABB2FAA190FE11EC427C7D1 +:1032D000F7C5E2D5489F0BE1391005CF9152FF9D0C +:1032E00001C2FDC1D983FEA003E5E9E5C7048C3B1B +:1032F000BF5CB9ACBD04EA3F17D00FFB6B5519B1E9 +:1033000053B85FB290FD78CEA228B23481FD7E0022 +:10331000B40B95FF8171FE844A936E7F99A8C4EA2D +:10332000E04AAA71E9EA6E5FBAAE7F6A5D9EAE3D81 +:10333000CD7F99AE3DA3A15457CF6ABC52D73F274A +:10334000305957CF0DCED4F5CF6FFBA6AE5ED8F176 +:103350002D5DFF4B1F5AAA6B1F13BA45D73E76CF80 +:103360006DBAFAB8AEBB75FD2FDFBF49D75ED2BDCF +:1033700055D75E7674BBAE5ED1F7B0AEFF1527763B +:10338000EBDA27F6FF54D77ED5474FEAEADF18F885 +:103390009DAEFFD5E143BA7A357941D77F8AFD35B5 +:1033A0005D7D9AF496AEFF359EF775ED33E44F746C +:1033B000ED2AFDAF2D3AAB7B0E670CC109B03F6122 +:1033C0007FB3BC7FD78D63263E8C0F5BE13B66F9F4 +:1033D000D0BD03CB58D285A5839F434E1DEBFF2262 +:1033E0000BF685BB82ADC05C2F4D3C970D7AFDE599 +:1033F000AA79BA3C43F57B2E73E0F717E223E7FF87 +:10340000F161917497513E0C0B584AE138D29D44BA +:10341000F9301C83A52B9C84CF93C289582687330F +:10342000F0B93B9C86654A381FCBD4702E969EF02F +:10343000582CD3C263B04C0F97E17B19E1122C33A7 +:10344000C357E1F3ACF0442CB3C353F0794EB81A30 +:103450004B397C2D96B9E11958E685E761BFFCF040 +:103460005C2C0BC28BF07961F87A2C2F092FC3F2F8 +:10347000D2703D9645E15BB11C13BE19CBCBC2B7F0 +:10348000E37B63C3EBB02C0EDF83CFC785EFC27243 +:103490007CB809CBCBC31BB1F486EFC37E25E12DED +:1034A0005896861FC4E765E107B02C0F3F82CF2BEB +:1034B000C23FC47242F8512CAF0877625919FE1905 +:1034C0009613C33FC1F2CAF0AFF1BDABC27BB1AC42 +:1034D0000AFF1B3EFF46F8B7584E0A1FC6E757873C +:1034E0007BB054C22FE0F3EAF073584E0EBF86CF84 +:1034F000A7845FC1726AF82D7C3E2DFC0696D3C36B +:10350000EF63794DF8249635E14FB09C11FE18CB4E +:1035100099E1B3F8DEB5E1BF60591BFE3B3E9F1554 +:10352000FE0CCBC17D7D55D4EFAC98CEC3BED8E1A7 +:103530001AE5F7E21ED29D1BFD007E448CEAC539D8 +:10354000EBD93DF4D6EAB353D15F5D6793F9FD50F3 +:10355000835EFD027FB7013E33CBF2DD294FD2F609 +:103560001B38FFBE5C79D80D7E506B69FF2A886BD3 +:103570006CCBED5F0CE54DD92C2E7A4336B377CB6F +:10358000B3D9F9F2B7C6323DBF785D21C6C749F25B +:10359000E8E07882DB07B5FF9B79ECBB8CC4319007 +:1035A0008DBF3B33CA7146DBEF427948D766FBEFEC +:1035B000CA46FC1A7F7767D4EF6FCCAEF85AEF6F2C +:1035C0001969FECDC9DFF6D543D5AC9867517A2D80 +:1035D000E2F45AD4B812E363EAF7D1FBF9F7D16DFC +:1035E000ABF4F19A4554CF55D37916DDC1F25F8D16 +:1035F000EDFD0A413F67F32A96D7B328D384FD1621 +:1036000019CE5109E9C2EF6B2CE2DF1B37B62F8DC3 +:1036100012377C2C5B1F3754F97211EFB379958800 +:10362000E745678FB1DFB93AECB612F0AFFB57DB75 +:1036300090AF491B8B2BBEE5FE4D96AC399FA9A7D9 +:103640007A55A1727778F5773CC0D79B5BF65AE044 +:103650007CAC3F6B1D7E1C20C20721E4AFFE2C8298 +:10366000E7258B82EBF0FBF4A48864A23FC7F169E5 +:1036700031C95D8047926DC77B8FA2499F6F7D499D +:103680000E8BEFABE5BB2686B7E02616CFDE6C6D62 +:103690002C82F81F243A9826703A99605C36CE51F5 +:1036A0002BA3FBFB0FE4EE86FB4B1A3F2D16F0B766 +:1036B00088E8FDB657B313795C92E1FD7DFE5D5558 +:1036C000F813543EC847BEB0C27DC945C976F4FF61 +:1036D000E0BBB2662A1A8B3AE6DE0AFEE6BB83DF5F +:1036E000BDA0304DE0713AFA9E7F7D9C3286D2F9C2 +:1036F000752EDF8B8296A0962F2C025B2FD928F097 +:10370000F38FE02AA82F6AB7E5B17B9A7C1DD046DB +:10371000F5DA15396C9CF7058E972CC2DEE3F909B2 +:10372000B6F6C410F8C58B92CDB84E4B967223E412 +:10373000A52DCAF4E13A8979E0CE7AC83FCB94F05E +:10374000BB67B6E6750AE8A345ED1BD7019F0FC21C +:103750006526662BB5AFF584E529917681FD9E8BB4 +:10376000163E8A777FBB80F07DC9F5D6072D02E330 +:10377000F36D2CFF7C735623FE4E1931FB4EBCAE0D +:103780009957A5B71FE6A5EBF2773CF51D01FD6A39 +:103790009647EA87F9E93A96F0FB8046BCF929BDDD +:1037A00000BF45397CDE7B9D08FFD079BDD6B9E3EB +:1037B00022EB56F965D17A279EF7A870B708BEBAF2 +:1037C0007AC0E7361BC2B908D6333E8287D21C17AF +:1037D000CB63CD9A9EBD7498F560AC58C32F463E1E +:1037E000B398389DB3D9EFB1AA7CAFF24D6E0ED32A +:1037F000F76AA9703A6BBED787F94B4A8EFABB803D +:10380000EC7B65D710FD79D53599EBF0DEEDBB3C4F +:103810006F282B273407E28B4F67F3F7E4C622CCDF +:1038200067E5F3D33F05E508E849C75FE4B0233D0A +:10383000C771BC1AF162D4FFD2E03A89DF3A81E75E +:103840000BE4C173199FFBDB6DC8872A7DDF1BFC6E +:103850005EAC928D749138DE387FFF89CBC99FB200 +:10386000D9FBC04EF03DB7E00336E473951EC6FDAC +:1038700097AAC7DF817D251DFFFBF04863B7E6F0FF +:10388000751E164960B87C81151CEF3DD03ECCB941 +:10389000C10A8E0F85F327E4AF9D9F80FB58A28D50 +:1038A00097FB73F4DF239BEE34E179D6B53F183EE6 +:1038B0005FE361998D7BEDFD5D9FBE0AFCB1D08A0F +:1038C0007A71E746FDEF74F9F9FC4FF0FEA4CE756E +:1038D00081DF09E4F8088831E0477784FFF8B35FB7 +:1038E000417E9DCF8AFA3F86F4FFEC57702E3E9FB3 +:1038F000FD2EDCE184D3588FAFCDC3FBB4F03B5930 +:103900009067A5C882EE9ED28395A61A38DF3D9CAB +:1039100030276D396DDF31F73A61B9669D6E7302FC +:10392000E6FFF5D8E6A435F0F606DA7EF09B1F8EAA +:1039300005BB7278A1B41EF223EDB5EC3BB9AE48DD +:103940005E630CF487791B347872D5B2F69E79D316 +:10395000D356D0F73A6A374D84F776CCB5E2EF65A7 +:103960003D5813AC14357C49DB83B06FDE3C95E0E9 +:10397000FD9C98CCD2F5A01A63CC1B8EC23D51524F +:1039800045309FB0C7962368E3478D1C4EA580CD78 +:10399000B759D69F1F1D92993D0ACB2C2E7748947C +:1039A000BEC0FBB4734C787F7B8B20A781FC4C128C +:1039B000BDE5504ECB75B1FBC6F69C2AFCAE22B7D6 +:1039C00083EABD598B9DFD1EAB2522BFF6F35C8FAC +:1039D000833C5AB81CED50F57C1AD31B9AFE2ADFA3 +:1039E000A3BDB04CB5E681DEFF39E713F813D4F977 +:1039F000E87A2CF309EABB07D4F116A876C327802E +:103A00005D53F5BE653EB513B4DF835C8E08F1A54A +:103A1000CDD57C2FBC9B8FFF60A6EF7A1FDA614962 +:103A200080F6ED8224C0BD91A7787BE4BB03928031 +:103A30007E16EFA7DAE7B66FB0FBC56D83FA80ADEF +:103A4000D7CAE1A6768A407F6BAD09F587B58AD9DA +:103A50002FEBD420DA0BF5F7882D1E0D3E48048E8F +:103A60006339B988FF9D0BAC08EF03695288C5978D +:103A70007C691C5F26CC6B852D02C5CF0359D2F51E +:103A8000CC5E34E2EF686F57FD003341FC201A35FD +:103A900074B11458591C4861BF176EA90CA21DB10E +:103AA000CCFF0DEAB9ED113F42B1A6F07BC9940FEE +:103AB000AC3556D4AF6F727D649DFA1BB433463873 +:103AC000547B32483F03DD87E87D43FDFEB9D634A1 +:103AD000986F27A50BE8A79D42C743CB418FE69A75 +:103AE000F0FE775B2D8BBB6D2936A1BD24CD1EFC6E +:103AF000DE9993CFEDE47EEF3B059325F88EF28EB1 +:103B000022E2E52139FCBE59E4BB99A47D304E0682 +:103B1000EF95AFBB04E8D32CE7217CF7CFDA5E0347 +:103B2000F7541C2526D43B3B7CEFE1BDEB7FE776C9 +:103B3000EFCA8FFAA624D0F6A45A09EFEDABCF272F +:103B40007ED02DC273570D7B7ED52CF6DD67574D89 +:103B500010F1FD3F4EBD3028008000001F8B080093 +:103B600000000000000BB53C0B7854C5D573F7EE90 +:103B7000DDDD249B64F3244802BB796EE4E1120886 +:103B80000488BA84474321B881C82B4136200142BA +:103B90002031BE68B5662120D4628D105BDAF2DB7D +:103BA00015A9A56A6D50ACD8226EC4DAF8A846C52E +:103BB000D6B68A51011151A2A062A5F29F73662662 +:103BC0007BEF26BC6ABB7E32993B7367CE9CF79C29 +:103BD0009973EF1AFFD7B2D123198B1B62F63027E6 +:103BE00063F728A10D2AD4039733F62BC658FCC4DB +:103BF000906342326309E9260F54997762A87434BE +:103C0000D66F509902FDED1F278F3743FF714A028F +:103C1000B5B7E23F97E03F2CC06C8C356BB26EF3CA +:103C20002D2D86F7F0CFB18CA505E35A0276ACB7FF +:103C30005431188F655B1DBF7231168B3D1319D33C +:103C40009899CD8172BE99310B9419CE4CC652A071 +:103C5000DDCC42A602C64C3155697E78BF2CC9DF47 +:103C6000E083B214DE331750BB2D89FA2B8C15C2BA +:103C700043B5CA83FD186B646C146337DA08367673 +:103C8000067F5742FF67C6F7F70D01B8C7B3396D16 +:103C900050DA475A5848F681FFA38718EBB66C6391 +:103CA0005D4B37D66FC27901CE7D2A5B85E3DDA3FC +:103CB000F071E57CA39D266A97E5D316E70DB8FE63 +:103CC000A7A3635940C13A0C82F8FFC41C447C305E +:103CD000E6299E3934FC7ED069318C7F60D5FB7734 +:103CE000FE0EFAB7A43B4DAA33DCCF2BE0B0C29F47 +:103CF000FAF9655933C844F891F88B6C9F25F0D7D1 +:103D0000DCB48ABD9F137EAEE278D0BF70BFBF39EE +:103D10003619D7EF2CD0CF3B4DCCBB2ECB3BCD991A +:103D200042F4A6FE6C5FBEE21AAA1F9FCF9F68F7FF +:103D30007BBDD83E670663637AC3214BC6D650FF6E +:103D40000340EABED673B7C0A757AC979D86E7403D +:103D5000EF667C352BDC6FB9E827EB93634DBE2013 +:103D6000F49FFA53D6D0D7B8BF15EB997A57DBC971 +:103D7000D700CF6CB6C5F32B9493D54057BB7E5C70 +:103D8000DEEF51C977C8BCFDCFB59E00F59FA07688 +:103D90009D7021FF033D50DED6A76F62D53A389E55 +:103DA00014F0FE6810A312F839DEDF07BD64B9EA2B +:103DB000AD4F873EABE3C7DB9CF6E4C383E18FD115 +:103DC0006CF419F5FCEF7FD9D43DF459A0F760A746 +:103DD00098EF2DBB09E52611C784676F4DD9645351 +:103DE000000F273C00172CD58E020DF0DBBFA70675 +:103DF00003C4AFDE285F6C783CDB2995799340865D +:103E00004F295432A793F06373B63084C39216607F +:103E1000FE21617E8E8447D2AB1DDBFB807B9EE062 +:103E2000A3E5082F94A556FF1C1FF15381819FE63F +:103E3000097E8FC4FFD326B614C7FDE3B1F77E74A5 +:103E400019AC23A5C25180681A8D70EAF824A5C266 +:103E5000534C7AE4346051878FC95338FF44C2E52C +:103E60001FC4F9C02FE826E18AECB738027E397EFC +:103E70009CA0E1E431307E1FEF497E93EF1D383581 +:103E8000F624F2515C32872BAEA2A183EAD98CF4DE +:103E9000BA56C4BC38CE84418DB6E8219CCF6AEDB9 +:103EA000C857567A5FF2D7156ADF7230CBC5E9F092 +:103EB0008CEA38ADC2B881AB9803E5C06A1B74DAEE +:103EC0008C80BA591AC2BD8EF1F9CB5D7C5D9A6DBA +:103ED00063A71A47FA3CD0C5D76439837C022F996F +:103EE00046E173F8816A6F55B83CE9FA31EAC702D6 +:103EF00075A80F35A725F30EA8BF23D6BD41117AAB +:103F0000F27226F424B063AA180F0968EE66E5A0E1 +:103F10006FB40A60C861807F98CF8C76A5D8B79CB3 +:103F2000C5F1FE1ACC6F11F35B4AA11F3CEF10FAEA +:103F300077FD18165C03E3AE57585436CE5366F23D +:103F4000A07C32B3B7FF62B497C5A99E3B9CE171D8 +:103F50002D45302ECCA3A5E9E017B8603AB822D79A +:103F6000F79DF3D47FA8F8FAA3FE3A3C88F36302E6 +:103F700073F6A7F5817641394B31C77B91FFDAADF6 +:103F800057F5BF16ED58F92CE55ACEA76754585F80 +:103F90009280A17D760373C273EBB416E6857E89A9 +:103FA000D98CDE6B39BD397425D073F3B419D9B807 +:103FB000DEBD280FF03C6A9A49C1FE0EAFA318E59A +:103FC00053CEB7F75FD1FD6B74FCB1B7E4F0886BEB +:103FD000E1FD0D391687E2D4D1E5ABE8E0AFE0EFC3 +:103FE0000959B9FD9DBAFEC5828F3657F8BD0CC67A +:103FF000DFE04A5516EADAA7B8B8DCDC553EAB3F3D +:1040000083AECFC434917EB0323E2E5BABD0B8913C +:10401000FC79A978CF2AF0D15A668AB2E1FABC2598 +:10402000CAD221D81E45F3B698E3159CD7EAE5EB32 +:104030006F9FE99C8BFE4B7551D08AA0B75B0759E7 +:1040400096407BBE2B9AFAC73984FD625CCFDD3582 +:104050003EF53EE44339EF48316F8BD29D8674BA0A +:1040600047E37C0C76FBF96CE87F4F4A7601F2C996 +:104070005D97FF64CE42B497B70D257B29DF7B7C2B +:10408000A07F840BE679A764D6966BE1B99A993B39 +:1040900010D77D781097EBB71DCC8CFAF66D50B623 +:1040A000AB151CDFD7990DA576C517372E74D2FB3B +:1040B000E35C8586F7AF417E96EFDF31D07705B6BA +:1040C0006F9A328BFCA5CD15CEFE088705FC08271C +:1040D0002D2A9086F54D9358C11D2CBCAE2421BFCE +:1040E000535C5C2FDC557E7B1AC295E2728AF5FA2E +:1040F000041F3A141FC8D926D7ED690B01CE948945 +:104100005CDFA4083BDC5A6EF122DDEEBA3A779B05 +:10411000AA707A2EB4E3F87CFD2962FCCDDECFD202 +:104120001633E41F27F1BB9C47F27F025A5328E362 +:1041300091BE3AFEDECCE4CFB9A71BF930C3311CE7 +:10414000F1FD9CD0AB09155CEFB55BE3897EAD93C7 +:104150007C41D5C5E56431C1F705E1A57DB68FF891 +:104160003D45C8475429A737ABB004735C7A392959 +:10417000C921390139F0939C642AC8DF12DEC4D208 +:10418000AEC77E07FDDAF32C0E44CF152A5FCF852C +:10419000FA03EF90A431F67D97EF46A41BE89B61EC +:1041A000885F766B12D9B32A537B4E03C059B5266C +:1041B0004465E4FBA5E06B77227ECC9E54E47396C5 +:1041C000CEEDF7F542A79CD85818CF005E7F1CEFC4 +:1041D000A798FDA3B15EFACDA2D1165CEF3F62199C +:1041E000EAD3F9596CC10C78BE40E1F0CC6F9E5215 +:1041F000AA807EBBD3C5F5EF2B4D40E03CC65E6D7B +:10420000B2312F08E7EB4D0EAABFD19446F5BF356A +:1042100039A9FC7B939BCA83166E67E727B10564B7 +:104220009F99C382FA64B3D407625CC66E48034B9D +:1042300002F0BC5E68720009022FF8266530D6A530 +:10424000713FFA2AAF8AB6A647BFCEA988614CA7AC +:104250006FAB7DE30CEDCC3D225CCF646477901FA7 +:10426000176E48D876074C39775A92A1FFAC0D03E8 +:104270000CF5075D9C99CB4BB30CCFE7550D36D4AD +:10428000AB4F81E180A9982D9AF07D83F00F6007F4 +:104290006142FD7FBD83F73DD930BADFCD30FFC924 +:1042A00097346A8FA4C3410BE7BBC05F556ED7E05C +:1042B00039D2E5F3373318C25BFA0DECBB904E0FE1 +:1042C0005A490F2EDAA2B0002AF9EEC035F8DE0DF9 +:1042D000F7593DD8EFDA2D2AF3233CE8A4C17C47F7 +:1042E0005FCDD97607D135702FF6EB867EDBA0E95E +:1042F00088C6020E60CD455D621CA56000E2FF48E5 +:1043000002F326800BF561D45BB937039C1F97B588 +:10431000D498908FD597524CF0FEC78FAA0CE568C1 +:10432000D9756F8C72005E6B9F6BFB6B118C77B0D5 +:1043300045650E98EFA31DD6FB50DE814BFAA11DFB +:104340000EAF33380CF9F28101BE5791BF8FD604FE +:104350008739901F6E4D21FEEE8D0F583FDA13E422 +:104360004B18CF7F53AC4D01515EA4795287131F78 +:10437000F17D41808DECCF8AA0FF46AD14F53AC89F +:10438000CD745CE7C19624D31D04C7A3C4570BCDDD +:104390004E8B7EBE851B55B203400C0BC2C9EE5638 +:1043A000FDE02BC3AF858FBB41F1B37EBDE978FD46 +:1043B0007556A2D3F519D14144F13538471FFB9703 +:1043C0004F4076FCD670BDF62995FC3936D2795728 +:1043D00031AC6BFAF60985A8AF581A1FFF64A2E446 +:1043E0009BB534FF675E6842FA6F8F0DE2FEF0986E +:1043F000E9D10366A08366F67F8DF85B3A3D70AF26 +:104400000222717CCFFB3F1E07FD8EFE56F3E0F0CB +:104410001B99F7DFAE14BE2E94B3856661C756A50F +:10442000903C3373F0819FA39FF38F7E649F7AEB60 +:10443000A3D5DC1F95FD010C531116A15405F0E81E +:1044400077B2C90EC05B256B5B47F86441EAEF4465 +:1044500020017F8E3A28016FEF17C6DEC12E037A46 +:1044600099985FEFBFBF2FE4392993DB01A9F76665 +:1044700066723D00FDB9BDDFCBED3D10787F36E0C3 +:104480006729E3F8A9671B3F55411F6565F2B8C06E +:10449000D28625D3D0FFA21FE06139F01FD2BDC65E +:1044A00091704327D4EB76447982286F995C9E61A2 +:1044B0000C07CAE932F1CA0BEEEB2D385FEDE30AC7 +:1044C0004BC2F982DA41F4C36CA030506F1C057105 +:1044D0002D4AC4F1141ABFAE450906E1CF25AC3B05 +:1044E00084F192150F2B9E101FCA86745C2CC6ADEA +:1044F00035DFD98970D6BA9577AD08DF0E1857A782 +:104500008F56B4F179A41EA967E6703BC8D762E163 +:104510003F2F663D7EA17206E16BD102D8CFC66CFB +:10452000AB711C5F4C2CC1550B70595D7AF85576F8 +:10453000067059E30F3E379DF0A07882AC371C4BD4 +:10454000986F6202AE03DA43CEDE7045AEEB42E115 +:10455000ACF1B4139F44C2ABA383534F8725ACF394 +:1045600076E4A79A00A77FCD1EC0338C7FA8416355 +:104570009678E283CEEC51613E00B8A7A33E5CD2B0 +:10458000AAB2902BCC17921F96ED0C5AD04FF988F7 +:10459000B5C4D9416EEAB6EC9C3506DFDBFAAA0554 +:1045A000ED77556228C79480A81B7E776946983FAF +:1045B00097058DEB5FBEC358FF6FE10757611E255E +:1045C000DE03BC2CDEAED27E45D74FEE83389F078C +:1045D000982704EB5DBA5FF5606C6329D8B3A482B9 +:1045E0008B8757E2E97F0D77643CA2253396C7237A +:1045F0003CCC83F188CFD990F8D9D828FC9BB3C59F +:1046000023E4FA23EDEB5B1AF81340C793666F7C43 +:1046100022E9F1483D3DBA1FDA1BA99F6B84BDEC2E +:10462000D97FA39D84FAE12D8FC5A11F78A8F5B18C +:10463000542C97A01D1A12B643372D0A65A0DDBE73 +:10464000E989280FB2269B167AE37B50FF78A7CA28 +:10465000FAD29FDF1DE07F2413F5A7B0A72BD4FB70 +:10466000063AD07E0A7D7A3E3FF0DBAE7321AE7310 +:104670004478DC45629DEF6DE0EB7B7F235FEFB517 +:10468000BDD6097E04AEF37EAB0755F991A810D9CB +:10469000FB23B0CE669DBF20FD03B9BECF59CBBD75 +:1046A00021685FD1F8B70366E08765B99DC3501EE6 +:1046B000ABEEB6923FB0ECF1D82083FA51657C3F67 +:1046C000DA373C1B8A43FCD53ECAF11786A3C73FA5 +:1046D00078233345E71F5C20DE56321FC5FB56EEBC +:1046E000F9F39BE8AF2A5E7815E05D69B38788DF50 +:1046F000776BC7F47A4F71A20EC0FDA5C76643FA67 +:10470000A43327F9DBACCA817CAA303F3B13837505 +:10471000B3F730D0A206DF03F8BFC8F9F49A469287 +:1047200083EE5CB4AFF5D121AD1FFA553B15CF3602 +:1047300094B71BC6C78D67B8DF6F20784E08BBA63D +:1047400078BD6C5501C64D808230EF17420F2A4E5E +:1047500007AB427C6E85F963C370473E9F8EAC8188 +:1047600076D16EEA731F9C93C5E759A19AC8CFAE64 +:10477000B3707FFBB888AFA859DCDEAA597C7F14E0 +:1047800095E5A0F2386C8F91EEC7275983B8CFEC2E +:10479000B4B0DDE867BDAA79B7FC00E8B63DCB6FE1 +:1047A000CB827E3E937D3ECAFB9A98611AEACFB5D2 +:1047B000093583B0BC86756A48D7E945E54E33E0D4 +:1047C000E140AACDA3F2B88C0FF9B892713E7E59A0 +:1047D000B36FC0710F20EE605D95457FFE0AE974EE +:1047E00000E61F09F31FE86F0936C37B81A7ACE41D +:1047F0003FAC8F6681285C7F72BC19F97D9ED053D7 +:10480000F327C20E1E78A672E27A1F96305E8001F0 +:10481000BEAA6CDDEB86C33CAB4DDC4EAF4E6441B3 +:10482000E45BB6B6AB10F177195BEB403AC2EA77BE +:104830009D493A173F99D961C927B0AEBA1246E7E8 +:1048400016C46845845F43BDCEC2DBC7DD7F4F79A8 +:104850006B3AD471AF81FC30450D6E83F55C053346 +:10486000223DAF827191DF180ACD284E4FFCCD80DA +:10487000FF8B619D33CC2C604AA472831DCAAB8B25 +:1048800058281ED6177A9E29080F8A0EC2373B6415 +:104890000AE501DEAE3287DA117F6FAA6C1DFAA13C +:1048A00033984B6B047AD4ADB93078AFBE3F58DE45 +:1048B0005A0C759389C3FB3D2588FB826BCCEC5960 +:1048C00015E0A94F7406E8F9759CAFE1F986B802C6 +:1048D000ECAF105F558292407E46FA129F62E7511C +:1048E000613A417F5B343C9F99E522BEAC14F06E87 +:1048F000F19B52310EB042EC07AFB1B1B5B1F8BE89 +:10490000D913570E741A0E60EAE9546F91FBC6363C +:10491000CB0C90CFE520DF2EC0CB02C1CFCBA57C46 +:104920003F6C94EFD5594E6A57D09F047C568AF25B +:104930006CF2719B18EF36211FB5A28EF322FF2C6B +:10494000177AE56CF3ADB0B210E1EB292BD15DCE57 +:104950007B95286FCDCAA4F1241C92CF6B58830598 +:10496000F5440D33BF87E3998098683F97B6DC6FB5 +:1049700041242CDDAABDD7330FFDDB62413D55BB81 +:104980003DF2B9395C570D7ACC74064B4BF7B5083C +:104990009F72459407E5A2D2D246710405F59B3B70 +:1049A000ACDF22DFD35AF83E52DBC8FD31198FB39A +:1049B00082BF897ABE3ABD7B28EA05E9A7D708FA03 +:1049C0005B9973B202ED35E88FC5611DFC0E8CBF9B +:1049D0006EE1FEA759F8D78B5A8CFE49F5069D7FEC +:1049E000CA0B5B4F1C95C6351FD4FB1932CEFC8E0B +:1049F000A57BA8C31847267FE51D13873F902AE2B1 +:104A0000C5C9BCDD2CFC5129F777656982DE01E25E +:104A1000D7AB982F3EA4D3B3BE898C5D518071086B +:104A200025887C7095777C072F578794389447C6E4 +:104A300006909C7379BECAFB43F2B37CA54A20065C +:104A4000DBBDDA51FDBA5EC13FC6F4F6931ECF8AD4 +:104A5000EDF3DC861527F5690723FDA440097353A0 +:104A60009C08F572160D4BFE42A3F02726A9763757 +:104A7000EAE92A25DA83FB8555B6B8610CF4F267BA +:104A8000E067237F54BD1D45F6FACB28FEFCF8F8FD +:104A9000D88009CAB7447D7EFC4DD3D1BFAE8AB35E +:104AA00098B1BC59EDA279BE3475931DD81BB76A75 +:104AB00022AADDB71D99E4DFDD3E7EC416F0F9D8E9 +:104AC000DBF77F526ECBA0733A7E2E1C38F12A9E04 +:104AD000FF55E0791DD54F967B71BE3F755F63032F +:104AE000D37432EBF37233E0E7F83DDDF762DD9E1D +:104AF0007D86D7EFEC1E184575CB0CAAAF16E331B7 +:104B0000CB0C1CEFF8CF78FDBD2CCB8C00FAF9252F +:104B10005C35558D55C8BE1CCAE47A41C6D1AA4C35 +:104B2000CFF0B284854C23CFDF2F35DB7708FD3BF8 +:104B300035F6602CD26560AEF710FA2B875CFE8FDD +:104B4000D14ED6962B010BEC7BD9FE60AEB0DBB418 +:104B5000FF5E2FE2EB926E8732B99E91E53762DC01 +:104B6000AAEB72E2D1AEC2785F66A5FCE7E36D8C7A +:104B7000184FFA318B859CC3F86AF6B7185FEA0DB7 +:104B800039DEDC9C5EF0C77F9BF15F8D184FFAB772 +:104B9000721D43513681EF16E532EE470978E4F392 +:104BA000754A286536C6D39E57E9DC765DCA6133FF +:104BB0009EAFB28376EE3F47717928C8E67A7EDDF4 +:104BC0000F3CF1E8E707FEA2D279ECBAD5BE39D5A1 +:104BD00018CFFAEDE851C862D20FFDA8FDEF1627F5 +:104BE000AC63A538DFAC17E79B2B77B55B26C3F822 +:104BF000F5504ED0C53BEAE43938EB32CF880DC3CF +:104C000051906D12FA66F539CFB7BDD9D20EF17554 +:104C10000F13EB3BE5F68EC9D6D1413E6FD68CF72C +:104C20000E64B94E8CD32F9B19C6BB4CE1F4AB8AF2 +:104C3000E6F670D1A8589BF3B2F0397FCD56179D98 +:104C40005BD8334BBEA39F4FBE178E3B77F71D77C4 +:104C5000DEC3E3CE723E8F80B32AB1F30630F60096 +:104C6000D7904DA817A6FE54CA31A8081B9E9B4A90 +:104C70003D51326362318F7F627D6976F12694EB1C +:104C80008E68BE2F9A3F7A6834EAA12E578CC901EC +:104C9000FAA3D155BD0EE19C3FFAF2C9F87CBC35B0 +:104CA00036B79A9FE310FF35BA7CD5C897D81FE373 +:104CB000537E0BE713FF0BAA2700EBF40F8BF16376 +:104CC0005CB0C3C426A29D96F85B90CDE3D5EBB251 +:104CD00039BFC9F9E5BC8C3928DE74704D7F3A873D +:104CE000F8BE6BFCDAEC94F0BCDF77F9AFD3CF0BF6 +:104CF000CB1C86CFCF367F24FD560A7E592BE8E7A2 +:104D00002B06FED3D98D1913630CF58A6949CCABF8 +:104D10008F6F570C30D4E7546519FACFBB76B0A12A +:104D2000BDCCDA3952EF1F48BA5DE87E6C32C87DDF +:104D30003CE0A5B39D0DDD8572E88AA573D4E51B23 +:104D4000A650BC3CFE542595752D53E8B072C5A9FC +:104D500099545F792A86EA1DD19D93D16E77FC3EE6 +:104D600081F69FAFA8A1DC5FE038D65892E7B20188 +:104D7000F3D7A05FD1111D18723DC059F6BBEF9457 +:104D800022BD57EE5228AE5BA6B20E2511E5338A3E +:104D9000C62B535F1B791D3C9F3A81DBB332B4AD08 +:104DA000D0DE2CE29467939B87B3F9BE4AEBE270A6 +:104DB0004F3A554EE3C9F647B3330DF70BB494EDB4 +:104DC00066F26FC57AB42E85CAEF9E1A4C65FDAEA9 +:104DD00072339E1BBDE0BE3F19ED07F4B7937D977C +:104DE0007A49CA4DC3E878663F3B9EAD42FF54A264 +:104DF000FE817117BBBD1DC8F7D36FED32DBF09C90 +:104E0000C06E71E03E717AD1F0B41ADD38CDED7329 +:104E100019EA2F6B32B3A0BDAC8452AFAFFC425F36 +:104E200045CEF77284BE927A9CB5FE88CEB9AF119A +:104E3000F108C91F7FCC36DEB7E954B81D0E3CCE51 +:104E4000CF2F6E73FBDF45783BC7B3398F92FEE8F7 +:104E50001C88FEFF7F0B7EA0AF4DA1FD569717E784 +:104E60009D5EE434E139C8E19E75703E3DDF3A5EF7 +:104E700017FD5F11F7545EB9F2CA4E2F9EF3DD3273 +:104E80006204EA45E6E83E8D7C5ABF775C16C69D13 +:104E9000BFC8B688FB558CFC4EB91FA8DF1B43E783 +:104EA00037F57BADDB14E8571FD79D8BFAB630DFA3 +:104EB000FF05EA85579EFEEAC02DD0DF6B8FA5FB6C +:104EC00074F57BA39EC5FA15AA427BBFD46CEF97FD +:104ED000A44FCE02E785CA63249FF93770F9F30B1C +:104EE00039AC167CBB50C861B519EC22C0BDE025B9 +:104EF00095A17E5A78AB327417C6219CB19E1C9D39 +:104F00001C4A79D3902F47207F72BEAC3B9520E49A +:104F1000DB25C6E5725086FB5218A76C7002EDD3F4 +:104F2000579E4AA27E525EA59CFEC1EDCFCD01F8F0 +:104F3000CB9A41BE611EFF9AFE23515ECECF275F02 +:104F4000999D780FA458D1904FAC504ED0C9B7AFAF +:104F5000C72E3B26A7E279CC5A97497F0E3E38E709 +:104F6000E2F83D4DF45F680FE5A01FA9354479D6FE +:104F7000005C55294ED2638D3F840AA0A051F34DA9 +:104F800040BBDAF83385E289686FD1AF1EF566035E +:104F9000C5A5E5FC734F0D634EC0D3CC53D954DA8D +:104FA00033FD63100FD5A766093C0EEBF3DCF1640B +:104FB000C37A8AE39D0C5A3D8CE230C67861A1D752 +:104FC00043E790DA4B1ABBCF89713EBF8AF2712456 +:104FD0008339362B3C5E88F14319EF93E78932EE33 +:104FE000674D3619CE3F3F37B70C44FFBF57FC6FB4 +:104FF0003CB76BC7B66B64D7EADA5F1B65C2F314C4 +:105000009797E2800F0CF0CFC4F5D4CE083EA241B2 +:105010007DF99D8FC5617C5EE2B3CD1CCAC17D4A1E +:105020001BE011E3916D1BD5D220B7E331745E27ED +:10503000E3A5C2AF789E717F44F279EDA92CC28FAF +:10504000B437527F3FD194469B58A9C7CF67872476 +:105050007FAF30733BB602F81EE916294761FB3378 +:105060009CE48581BCA07C84ED0F978FB0FD11FC82 +:105070001F3F88F61B91FA5CDAA771BFC9DAF50702 +:1050800018A7F6A1F93EA4D39583411F003EEA1E5E +:10509000E5721029EFD25E4B7C48FCBC20EA596EC9 +:1050A000EF9D88F7F3CB4F14F9B9D64039233D0B68 +:1050B000A55ECF6A117EAD7CBE29C724E8726172FD +:1050C0001310FD25DC12CE4E0BF7AF24FC2F32EE71 +:1050D0007FC8796E73CFF84D4E21B71B38FF233947 +:1050E000DC4EFFB7D67536FBF148CFFA2ECC7EFCEE +:1050F00022627D721D725D2F89F55EA87DD997C3EE +:10510000EF0147DA17E877F88FF0DEF1A7F21DA874 +:10511000C754A5FB30DD63792ACA897878E5E92888 +:10512000EAEFB5C5D3FE7EC2D31F9CF88513F711F5 +:1051300033F7211EBD7BAC66A6F3F7245C12CEBF0D +:1051400008B8C10E75E4E8F601F2F9B7B54B522E76 +:1051500022E536525E23E573EA8FC04FC4753EA147 +:10516000D03D81B05FC8C84E756466D07999946FA0 +:105170009D9FC8EFF9B815BAE7D3DBFFFADB4827E4 +:10518000BC7F6264EC708CAFEE53DB368F55C2721D +:105190005CF2D0D78FFD83F5B67736B7FF6BB25789 +:1051A000427EA59C9E9F2F9FD4C85ED529E4D758E8 +:1051B000A1D4DB2BFF59E48DE55E9C9DFA24A7C7A3 +:1051C0009FE1FE58BC85FCB1F3F15D62EE7F9DEF7F +:1051D0001273757C7736FFBB5F2EDFB702DFF5CB2E +:1051E000FD16FECF39E84B7652F2DFD41739DFB027 +:1051F0002CBE5F013E22F83B2C19A4A72B859E9E56 +:105200007A8635209EFD62FF2FF9F87DB77F5CAE70 +:105210008EFEB83FC17DC785FAB595C90D740FCD17 +:105220000FA55E2FC9FBFC91F4F7E65E9CBE1D96B0 +:105230007B71FEACEF2C743F873F5B997B01FE2CAA +:1052400073441BE3040DD699C837274266BABA7473 +:10525000367AAA5B38BE7BF016324BBF2009FD02BE +:10526000E093AA6FC527CC9786F1F503F8279D9B9D +:105270007C3913E5719F2AEB3C3ED18EF54B405FA4 +:10528000E57EF9FA5A9D9DDA24E222F23E2DC6759A +:1052900076F6B59FCAE37CBDEFEBA30F611E4760B6 +:1052A0009085FCE97DF1FCBEE2FA1FCEA6FB8AB236 +:1052B0007FFB20CB2A7E9FB1296DB14E4EF60D4A61 +:1052C0003D8D71AA7DFD18DE5061FB6E19711AEFDC +:1052D0004306EA550F86850FAC7AFFA36AA8FFF351 +:1052E000D458BA97D863E7EAF8FD272DB92D76B1DF +:1052F0000EBE7DF5238A9DBAF57C2EF6FDFF4CBFD0 +:10530000C981719CF64137748E4778FB99095EEB31 +:1053100057550E6508E633F0FBE39B057F69B11F27 +:10532000537E4A733206F4F0B988B3A5CFB2E138A0 +:10533000CDC926A29B163BDF61D1ADC79B6CE67041 +:10534000B9984FAF0FAC797CDCC3B97C7F85F7D1BE +:10535000AB391C741F7DC1D7556F76A23E1E38CA6B +:1053600089E72653F3B2F8BD4A93A318FDD32B5413 +:10537000CF48A6B367734DC26EB9593AF2099D6B17 +:10538000E07AF03C61189D330444BCDE86E7089A5D +:10539000BC9714C7F5A5BCC74EEF990CFDE95CE2BC +:1053A000F15C17BF970C2227E2F0744F9D2E1BABC8 +:1053B00074DF9CFC1B946B0DCFA1936D740F5DDEAD +:1053C0002B07AD38119F6B0AE001F194C156CE2036 +:1053D0003E6FD3306EF44CAE22F8958F5B29E0A877 +:1053E00004FCE138956666B680BFBEA09F65D86EA6 +:1053F000A07F97DDE241F196CFE5FC95629E052AFC +:10540000D767D63ACD708F5DC2F35A6E8298CFF3CC +:10541000E6DF92D17F8A31D1FD355C8E1E0FB7C693 +:10542000D27D90AE816C25EA03AB986F9D3867B34F +:10543000DA7F7F339E97C8E75D6BC6D13DDC75325E +:105440003EB042DCFB02BC58705DF87726AECBE282 +:10545000CDC775C1FBAE613ABE88801769D843CF0E +:10546000ACDE7439DFBD7BE9D748FEB8368FF13C3E +:105470009441A9B7925CF5B311DFAFCF38FC10DED1 +:10548000F7D56E1BE7D1E741B5F74B2BC6FBC4ED53 +:10549000F549B776EBE4E49F75331D8B86E0FD613B +:1054A000FB52E4EF2BBE4EBF757C329E5B5D699074 +:1054B000CBBDB77D74E289642C63E95EFDDE7F8D30 +:1054C00075E2BE503575919E60FF8A267E9F103F23 +:1054D000274D7FBFFE1BC10F770CF49E46FDA7A68C +:1054E000821CD8C3FA4C4B1DE94779596FA7CC07EA +:1054F000B65EC49B9B15633ED3D43C6E4FA6E62993 +:10550000A27470BA9B9D03711C9927D23EC8BC4AF5 +:105510001FA71C20FA0F10EFB70FBAE9CD6A1DBE06 +:10552000DAAD4FFF6514E22BB5C243F7A351EF612B +:105530005CA129C683EB6CEF6723FAB7F7B304F1DC +:10554000DCB0BD5EE5E776F1B620BAF6F21EB7F63E +:105550005515E9C5A9794E437CA9BD5F32E1FD1916 +:10556000B5E14DAE176C64BFFF5997741AF595A657 +:10557000C53B904EEF98BA0B51FEA6E625727DA46E +:105580008058E8FCF17961BD40792DE7D00B94CFCC +:10559000A289FB8DE7D307A3F35C427E1A18CAEFFA +:1055A0007FAA0FF0A78DEA2DEF3DF22CDE9772DD7A +:1055B000F3FEFF484EE645C8C933485CC4FF7A8510 +:1055C000CE5BB594DDB1FA386695E093F698786EC7 +:1055D000CFEA934E235F58D756A732A7BE9FCAF58E +:1055E000A74DE6B95C49FC5B6D9FA5919F02FC78D5 +:1055F00035F063659E99E72B2670FF5133750FC513 +:10560000F53C3ED0EFCF8379DE137919E17C8A0433 +:1056100005EFB948F8A57D93F4FFA2A70E50EBEE75 +:10562000AFBCA788756530D24F95E9DE0FE9DEE99A +:10563000DAB467F5E7DEDA0F62791E51AB4AF78319 +:10564000E5F9F7FAE4C90E94F7F52D0AE549C06FBC +:1056500023DEA35B24DEAB19795D2E8EF7BB3C1EE7 +:105660004FF61F714C8E7322FE8EFC05F3B9ACDF32 +:10567000531DF8DED3DFA8744E73F9C9901A8FE773 +:10568000066B5D863C4CFF31F364B4AFD5CC41F77B +:1056900029DF895B55BA1AFA350B5BF19EE20BF9EB +:1056A000711D293CCF775CC6FE32CCEB1D774F0ACB +:1056B000F969CD37C6C6613CEA006BE84478031B44 +:1056C000559223F0CF27A2BF17501248FFBC9DBEB2 +:1056D00089F277DFCEB626D03ACDEC59CCCF6D111A +:1056E000F25F29EE49205E6C05E17C5EE04B764975 +:1056F00041385FB3C304925340FE25F1EF4FC4FB22 +:105700003598CF8BF742D43D85184FB76E31DE13F5 +:1057100068FE9992A65C067CD71AF15CEC23AA037A +:10572000C6E7951B8DF527853F71B17995BFC9B344 +:10573000271FC67B61179957F9A4900F995719F63F +:105740007B6F76505E65BA99E283EB1D9CCFD6AF36 +:1057500052E9DE77E4785D4D8CF22A7E80E3E9F64B +:10576000E1926F653E25F0EB1CF43BC379C6194A04 +:1057700080EC6A5B12C6D93BC4FA9FB6703F55E60F +:105780001BCBBCC80E94BF14CC8F2CA0FCC7BDA7EC +:105790000A8AF5F95AFBD4AE8746937EE6F9ABB098 +:1057A000C72E7DAC0F3C5C97AB1AE21FD23F96F23E +:1057B000B659C02DE91FF9FE21E1277745E423FB07 +:1057C000CF938FBC2EABE4EDBC425D5EF0BEB9CC96 +:1057D00045F93423681F7048ACDF9FCC26531E72F6 +:1057E0009A2F4DBFAFBA24DB78CEBDB9472F5CDC12 +:1057F000FEE0926CE3FEE06EB1FE1EB844DEA72A26 +:10580000E2B75578EE8879EE6E3EBFCC53AE8A0E85 +:10581000E5E0FD2E99AF5C6A650BCAEDFC1E73A333 +:105820000E6F2637C7D7D4BB78BFA9CDBCC471EEE5 +:10583000B387DBAB4AF87BB22ED729E1BB249BDFD1 +:105840000F94F77323E12F9BD076D2062EE120B779 +:10585000BDC20CF89C55C4C4F96D6CABD78C7119E2 +:10586000233E5EE9C14FDCFE8908D76616BE970667 +:10587000ED938AE37BCE7F914D65FF81EE98FD1B12 +:10588000C98FE17919CCDF65E6F734457D24D4630F +:1058900075F5A288FA56DE3FCEDCC5F4F90AB83FAA +:1058A00057E8DE9A1C2F20EC73F764BC0F3F7D97FE +:1058B000E240FF765EF1710BEAD3B2095DCF0D8055 +:1058C000F516B8532AECF9F01CE347006F893BA3A7 +:1058D00035902DDE4FA5F37EFA59DB142FE6CBD69B +:1058E0001529C14C576FBE2E711BE3888461E3FB01 +:1058F0000CF35F2EE67DE4237A3F93DE0F592F628F +:10590000FED9C53C5F2EB29F4FF61379F5343EE0C9 +:105910006E661B3F678DEC3F47F06DA7C9B40293DD +:10592000F7FCEEE1ADB6CB81BE8CF3C742B7A72240 +:10593000308483EB8D58EFB9E09DEC369EDBE1CFF0 +:10594000697C3F742E7C4DEBF5BEE08FA5467E89C9 +:1059500037FB9E3D0170C4272B0E3CB758E98BDA0C +:1059600088F6B06C82E4EF7115DE74585F1433DC96 +:105970005708F3777105F2F74A26DBAF68C5788ED2 +:10598000CFC40CDFC798B447E979DF0DF24257085E +:10599000E0FD5BDD97B7E2F731801ED44EF5EC7386 +:1059A000F07B5B44BD38423E047F937CE2FE01F015 +:1059B00093D3875DF9A9C0CFC7E2BB159D255C1FB6 +:1059C0007766F2F20937F7DB7E29F8E1D792CED17C +:1059D0003A3CA487E90CBF109E13E9D64D789A9BF8 +:1059E0002CD61DA8AC9806EBEA4C644315E0939DB9 +:1059F0003B66B7AE253EF199F1BE983930B7F52533 +:105A0000D02B73055E9ED8316F7F80C7791494B315 +:105A100015C40040F75D4A80F27090EE7DACABB9E2 +:105A200037DF0422DEF76AE778FF87BDDFF746BC81 +:105A3000CFB4E48B795FD0655A04DD4A23E8363170 +:105A4000A25E25EB4183FE927A6DE1EEBBD7A526DF +:105A500063FE8782EE18EA678B329CB197DC8B2B52 +:105A6000ECFD913F9DDA0050E99DEE25FB6DA0BF56 +:105A7000CA517F11BF2E257D3D13E59BEACB2AF04D +:105A80001EDEACA2867569D0FFAFEEDA561B749DA0 +:105A9000B7F66E8D41FD1FEEBA56338C3B77E4EFBF +:105AA0009EC3F1CCCACAFDD35CE7E0CF9688756C83 +:105AB0008DA80722FAB79E479FAF8D78FFD688F64C +:105AC0008D11F52D11F50DC6F7ABAF55482EAA81F6 +:105AD0007E88B8F3C9C931B78C9FB68DA47B8AEE96 +:105AE0005B5AD715919D25BEFE62C72D52BF29FA7C +:105AF0007BAB95C92C80F6403B8B7E3AD24B9F0BFB +:105B000078DD91F68BB74F8CF9F76378DFA8A6C5DF +:105B1000EAB0021F1E8CE2F9418137B8BF4EB9B11D +:105B2000B08E833B8707F1DCEA33E05BF4A79FBDCF +:105B30003B2F1EE158DCA132BCFFB9A2437DD74AFE +:105B4000DF45F0DACB747976CB5A9500E6ADD5BC5B +:105B5000C5C7A9D9A506F1130C3DF955AD0ABDB7C6 +:105B60002CA8BDA7F7AB295510FA2FD9A304F1FE35 +:105B7000EC922DC6F6156DC6BACC47AAD7DF5F7674 +:105B800085F30223FD6FF053C9FFBA24DF984F74E9 +:105B9000A17EF846E675E5137E23F223A59F630EEA +:105BA000A5CCC6B8E5F34994170FFEB0AD48770F02 +:105BB0004CC6D98F35F919031FFC93A6A554CAF713 +:105BC0008F2BED960118273FC4E8DEFCD85D3B7FA4 +:105BD00034CE89FD1B68B3FDC9B191145FFD04FC8F +:105BE00059BEF95E23F40397EBCB77B5AB03A0F670 +:105BF000C9EEF763E85E50EF3839C5414E1C3307F4 +:105C0000FB3ADFEFC94FFD7734B54B3C1EFD1EDF7D +:105C100037487F739C18AFFDA1A43D63916F62E28A +:105C20001D182F5E22CEFB8FEE50699C23B6F8071D +:105C300050BE8F6C9D998A1F695AAC755B30D1D468 +:105C4000F354791CDAB543D02F44F18FA08A7ED269 +:105C5000D8524671FCB1213373BAF0C8CD371DF963 +:105C600061CC6E9EA7F711C6EBB97C50BC7EF19358 +:105C70002AF9B712AE09454260043E6FC9E7F2F651 +:105C8000C1D6C7689C0FB76B0E84E793ED1AF15924 +:105C90002DF0255EF13E82F98B306FED7ED583A627 +:105CA000F9C31D5CAE6BDB9420EAAF15D7695ECA01 +:105CB000238CE0F309B21FF0AB55C7DFB5DEE0641B +:105CC0008A9F09FEB6C17F785F3C81B5DD8E798DF4 +:105CD000CB77FC677C1DC9CFD74B3E2E6005179351 +:105CE00017770CF681C877F27962DBF0F103585828 +:105CF0003FC87BE0CD1646F7BD03A6680FC663E438 +:105D00007D6F79BFFB6693E34FC82737837DC0B8AB +:105D1000DBBBF93C4EF5A5C93309EB60DBBC98074A +:105D2000363D60A5EF38A8134C0D7DDD0FFBB1A00B +:105D3000D3804B19BDFF603EDF3FC83C285902436A +:105D400067A0DC95C7247EEE842EBFC87FA902EF32 +:105D500071978F4BBC310BECFEFDF9AFD17EA27C6D +:105D600044E2E39950FFD56F3A79FDB2C4420DEA9F +:105D7000AB95D72B2642FD997CEFCFF20BC3F3C82E +:105D800071E1F9567CFED025FE5FA29CD75BEC1B2F +:105D9000304E705CE95E6952C3FD5F55D8813F2A81 +:105DA000E17A97C6067A86605DC2DF777934DFBB19 +:105DB00023BF8FE70BF1133880AF85019E27023F89 +:105DC0009F2D95E703209F2D9479231B8C7923CC5D +:105DD000C3F39B643E90CCEBC90FE72B6DBD987C61 +:105DE000A5E322CF2A328F4CD9C3F3AD9A03AC2B53 +:105DF0008AE860CCF3581103FC00786A7CFCED382B +:105E0000FC84C63285EB0D96C6CF4DE5F7D38E4D9B +:105E10000FE5A21C7FD0C492B3810F17ABFEBF2049 +:105E2000BE3B5C7F1E88FAEA83ADCD71A84F3E7EF3 +:105E300044F54C83FE75E25C819D56E93B1A1DAE2C +:105E40007CFA1EC1B19DEBD3F11EF41BF9DCEE1DF3 +:105E50007371BF939DDE37F016E8579A39A510F598 +:105E60002FE8EBBFF5A9AFB75F4DF04DB1837E864C +:105E7000F56DCFE0FB58AB99056279BC9461BE9299 +:105E800006A55A10D6AFD81E47B9F68BD2441C9639 +:105E9000F2D4249D24FE7BD1054408BF3367B23180 +:105EA0000DD799CFB63A300E24E93349B57B42A0DD +:105EB000471AC1FEA29A6D14F1C2C69D0A7D1F6BDE +:105EC000458746F6F203217F917AE863D64DF9CAF9 +:105ED0004BB72EE2F9EC42EF609A34F2C97487F9BD +:105EE000BFA26F944B85BE19CE865FA4DDB45D5A08 +:105EF000D89B0E93D42A277E47A731C55D60E5E77E +:105F000036C42F4BC4FD7A4997C6FFCBEAC7F5E9E3 +:105F100003B44F5D2260625B795ECBED2E95F2ECAF +:105F2000CB760F604E78B46CB742F7DEA6ED4EA28A +:105F30007ADCA9FE542FFB75BF12FE1D274ECFB28F +:105F40005FE751FDC3075E1C29BE57C4F35D1C4CBF +:105F5000E6BB101D3E9BC3F3E3CD81FC9F16A31F40 +:105F6000D6A1B1A093FA537E914F80E313F9443E3A +:105F70001699F7EC8CC7717CE03721FF322F8FA781 +:105F80003B451E9135CDC49C3A3C5F8D7E15D02398 +:105F9000CA19CD9CBAFB726F88BCA266A17F59C09A +:105FA000DB89F1E339820F62DC8986FE73EC35C44C +:105FB0000FB19E4B0CE3333F8F67F6F0073E4BE685 +:105FC000F94938FED5738C79545AF1A79497E3EBCD +:105FD000C9FF6E20FED78A8D71515FFAE40F195FF9 +:105FE000FFC173F1D177251FE5B37C1ECFEB857719 +:105FF0009287CFF67379006FE0A7F8DD8B5902EF37 +:106000009F312E1F9F7963483ED6097C487EF3E579 +:10601000B158FCE44B7C9111AF095E233E934A8D4D +:10602000F84AF119F1D46F4EA6A1BDBFFF5243FB50 +:1060300080A505867A46C35843FF41AB4A0C755785 +:10604000E0BB86FE591B6618EA392DF30CFDF3B64A +:106050002C34B4E7076B0DED8377341AEA43DBBECB +:106060006FE87FD9EE3586F6E1A13B0CED233A3699 +:1060700019EA859D3F37F41FFDE63643FB98AE07CE +:106080000DEDE38E3C6AA85FDEFD0743FF2B4F3D1D +:1060900063A88F672F1AFA4FB0BD6EA84F72FCD35A +:1060A000D0FF3B69EF1BDAA7383F32B44F759F3002 +:1060B000D4CB3C5F1BFADF94E1FF19EA9D39A68D32 +:1060C000FF1762C8E7CEBB507E67279BF977372E54 +:1060D000327E7F5F04DF7ECEECD79832CFFE7E8F9C +:1060E000FE433B5F887C3D8D61BCFEB33685F8FA8C +:1060F0006CF6361EFC58B36E1D095E1B33EBE04890 +:106100002A7518EA29BE3443FF7E739C86F6FE7E0C +:10611000B7A17DC0528FA19ED15064E83F6895D74A +:106120005077054A0DFDB336F80CF59C963986FE7E +:10613000795BFC86F6FCE05243FBE01D0D86FAD04D +:10614000B65586FE97ED0E18DA87873618DA47744B +:10615000B418EA859D5B0CFD47BF1934B48FE9DAAA +:1061600061681F77A4CD50BFBC7BB7A1FF95A74244 +:1061700086FA78F6BCA1FF04DBAB86FA24C7DF0DF4 +:10618000FDBF93F6AEA17D8AF343437BDD471ECA74 +:10619000F7657F54281F65AAFB53433BF8CD6EB4C7 +:1061A0008B2B58B407FDE648BF5BFA63659EAF0CC6 +:1061B000F3DC6C6AA0F8EACD2AF7D36C8333A53FF1 +:1061C0006EB3713DCBCFC14B197D8F2E1EF3B01333 +:1061D00079FC90E79727937D2513E9C47826F83357 +:1061E00071E8B7385D0E687294F2FCFC98B07F9944 +:1061F0007E46F7BD88F3F997A9283B187F18EC8FE6 +:10620000199C82FBAB9D9371DFB18C056E47FF77C4 +:10621000923A24BE0BECF0CB517D9FE74CB1011EAE +:1062200075F33D1FD5925E700EF99D623B46FD7B76 +:10623000C615DFC350609DFA738F1FC37EC80C5B09 +:10624000C29626903390D74D4D0EAAB736A551FD74 +:10625000274D4E2AB734B9A9FC799387DAB736159A +:1062600051FDDE262FD5834DA5546E6BF2D1F3ED93 +:106270004D73A8FE00ECF7B1DC01FB7D2C1F84FD03 +:106280003CB63F0CFB78AC3FD214A0B2AD69033DE5 +:106290007FB4A985EABB9AB650FDF74D412A7737FE +:1062A000EDA0F20F4D6DD4BEA76937D5F73685A89E +:1062B0001E6AEAA0FA334D9D547FB6E94DAA3FD736 +:1062C000D4456547D3112A5F68EAA6F6979A4E51DE +:1062D000FD9838B72B19AC88EFC5DAE9FB7BBE9285 +:1062E0003CDAB7C9E7DBB3FC25830BC3DF7990DF6A +:1062F0007388DC0F44D2E1A8185F2BE1DF6BD02E4E +:10630000C9DD86F721C3DF5B706EC33C8E32314F2F +:10631000CFF71B847FBD44F0A3FC9E833C2F5F22FC +:10632000E4A010F9D14DFCF8D2C5EC77E47EF790EB +:10633000CB3F1FD7559B610AD03EDFCEF34DED9981 +:106340007E3F3EAFB13758B87BEAA1E765561EE7FE +:10635000E97E5EF56C739E7DBE7A716FF8ACED7B65 +:106360003F4C47FB53FA8D4AF7405ED662E7603CEC +:10637000A351E0A171B0C950FE24D3771DC2F341EF +:106380004EC3E15FB8C2F9AD57E11619E4BD9C39BF +:10639000298F7A26F3FE093F8D7735387A589FCDBD +:1063A000025436BAFCDF47B99B0B1B04ACFBC75A3F +:1063B000E9BB9165562E179170AC1170AC11F3CBFF +:1063C000F2B14CDF1A1CE7608EF781EBA1CB87227C +:1063D000DF793AEBBE17E1F8E2A94F0F2B5961FCC8 +:1063E000CA78C2EDE3C5BD9CEB14F9FDD5C8FC72BB +:1063F0006AAFBA91C753E6C37E0BEF79C9FCF1CF00 +:106400001A34D28B987F8EF1D6CF1A6ECC43F823F4 +:10641000F563157E0FA300F3D86D7CBCB762294FDE +:1064200048DE23A8020F1CF775FFC894F18A2E7B63 +:106430000A87C78BF71416ECB1927E04BE08929EB1 +:106440001AA3521EF2CBA6602E7E376DBD89D33FB4 +:10645000F002CF0F363B7CF45ECDD684E174BF04EE +:10646000F804E3534704BE241FAC14F7D225FD8182 +:10647000BF1E467A7EF2E46837F241FDDE31745F7A +:10648000ABD924F28FC5F80817AE438D1F42DF2722 +:106490002B43E701F96F4C2CDDA7C5EF1CEFEC4354 +:1064A0005FBE26E8F7721AFFBE5DB39043D9FEE2E5 +:1064B000601E77797130DF67953DF33C7DAF68658D +:1064C00087E6C1B8301BD93544FF5DE61EBE5DF5D9 +:1064D00062FF6CDD3AEA77BFCBCFC159D79019B1D3 +:1064E0001C5CA4ABFCAEAF9C47C338061A9764F3A0 +:1064F000B19E7D4326E28951BBE43FD512EBBFCF6D +:10650000AE5F470FFFBF2AF91FFDFEE95667FC6C1F +:1065100000BD0B5088FB16FF2F1DF43D8C85CC432E +:10652000E5B5CC47E5126023E4775FE06E0B9E6F24 +:10653000D6B2367ABEB268D140ACD7B3EE896930F4 +:10654000DED51B56FF290D4099D972F7A4FE00F73E +:106550008C60F59FB02CDFAE1CC6F33C909FF770AB +:10656000FE2EA561DD2578AEF1F0F87503E0F97433 +:1065700011A700BEF3AA6847B33D5D01A0DFC1BB10 +:10658000F3290E7C44D0E1B14CEF117CBF6A0DE7DA +:1065900033791FBA477E8A96BF3300CFBCCCDDF477 +:1065A0005DC6FABDD644E4C35ADC61AA7A3F51DA2B +:1065B0006BEE272C073F01FBE1F7E6E8BB8D6F4749 +:1065C000D17DF3A30A10A2A0B77C48BFF36695C79C +:1065D000D5BE34C19254DC476F26BC2CB50587214B +:1065E0005EC04E2B43502FBEDF76FB708CE79504C8 +:1065F00007A2FFAA3D68F534BB0C7A9FBE7724E35F +:10660000743FD678DC2C12DE4838AC1616C0FB3D41 +:106610004AD1735FA19F017A82EB87031CFE9B55D1 +:106620007FDA2895FB2F14FF4BF751BC80A5DA3C8D +:10663000FCFB8CC6F9D78A793BFECDE3CFF2BE5581 +:10664000241C8A83CFD70B9E680E8FB43FBDE1E137 +:106650007490F05C3AC4C5E38703BDB4EED5A6D50B +:10666000E98D68CFC64615E091CE34B33F1FF1F7F0 +:106670006A148F8FC97898DCE7B2D3CDE9FC3C2946 +:1066800064F8AE0F8B882BF96C0E0DE9315DCA4FA3 +:106690009166909F9EB853B131EE348379C82EE451 +:1066A000B3B7249E28DEF4FFA3834318C061000023 +:1066B00000000000000000001F8B08000000000028 +:1066C000000BF3E66060F8518FC0AD687C74FC0A83 +:1066D0004D3E9B05BF7A42380DA83F118863803834 +:1066E0001C888380D817883D80D819880BD880767D +:1066F00000711A102702710C108703711010FBB281 +:1067000021CCD16367603065C76FD74A364CB1A7DB +:106710005C08B60D27657E19C5431FFFE16560F86B +:10672000CE87E037F2A3CAFFE545B0E38529B32B56 +:106730000FA81F00BDA23B7C8003000000000000EA +:106740001F8B080000000000000BDD7D0B7C54C592 +:10675000B9F89CC73EB39B9C249BB081044E4280F9 +:1067600050032E216050AA070898B6DCBA501F4883 +:10677000B976C1A080201151B9B7DEE6401E0449A8 +:106780006D446C23A25D282F5B6D03454B2B7A175C +:106790007C14ABADB14545AB2DB6BD95FA40AE8F7F +:1067A000CAEDB57FFFDFF7CD4CB2E764F3A8EDFD8E +:1067B000FD7FFF0BB5C39C336766BEC77CAFF96630 +:1067C000D6A74E66EA28C63EC13F173196AB31C602 +:1067D000A6F4963BFE455BD015827FB32863531920 +:1067E0001B15807F9A8C3DDE52F8BB7111C6BED35B +:1067F00056A6FAE0D108A63056C0D8CEF6BCF97538 +:10680000D5F0DC66316CB7A165ECF093F0FDCE52AB +:106810006BB841FD3095153256E6E7FD306633AC76 +:106820008F62BCFE9DB6F939AC12EA1DADFFA965B9 +:10683000F7CE4B96636C95A5FCD40FFB84E177FAF9 +:1068400007272B44BD94E1A7340FC68A79BFA2ED78 +:1068500013AF0DFBDD3898D7AE7695F958DF797C0C +:10686000A7C3396F390F9C9F35B5777E7FEB7C08C6 +:106870003E984F8C75AB0C716A5BCF47A1BFC94C7A +:10688000FCD16F52E361C6DA1A9317947B186B6FD1 +:10689000B4A96C696CBBA07C0C63B7357650D9D4B5 +:1068A000D849CFDB74DB8F780CC7A05DDAB8DE483F +:1068B0009BA39E5501DF55F4D6F550A7E33D4B95BC +:1068C000103D35017FC04C3ADAAF09CFF433186779 +:1068D000532363960FE7E367D63880C3505FF70111 +:1068E0005D5A3DB1681CF0333974CD5C06756F7626 +:1068F000FC840FF8A139EC353700DC138C397FC2EA +:10690000E73F2B9AE347FAB367F5DF215E2AE0EF12 +:106910002765D04E5F978770C4187FDE8B2FC62205 +:1069200030AF0B04BE83E569EFE1BF0B4CD5C6F178 +:1069300027B8BEBB20E45DACC273CF488BE6C5B6BA +:10694000A7BD87F12E302EBF4E990895B7E1B9BF8C +:10695000F7B9A4CF638D06C179A4B182CA3D50377F +:10696000B1FE57C9FF9C5FC282FFD74C5119037E0D +:10697000F966CADCC960FC2DC8FFB05E8E028DF0DE +:10698000B9FD104BEEE6F014D5035EBEF5CF85558C +:10699000B7C177B1051C7FDF528C3F50BB2BBD26A2 +:1069A000B6DBA327E6336CB7284FB5A1AB090B388C +:1069B000FEC62E52ED61D97DF9069EBF3E0EE0392E +:1069C000E261561CBEFBFABD2CB901BE9B5C0DF406 +:1069D00080E763CF1632131AFFCC73F15B3E9C67DE +:1069E000DC6BFA4A7BE960C15F84FF9B7ADDFB0ABE +:1069F0007C3FEE32AF69970E4E8F8BCEA6E10FE94A +:106A000001F3F34DCC408F38A7471F3A5C3A301D55 +:106A1000DC657B6392FD1EF8FFF6C628F15F4BA391 +:106A200049E546A4139406C0CCA6F55D976D2A5B94 +:106A3000D6057CD01664CB0E203F58D519DBC99201 +:106A4000B1F544BFDB917EE7D3B42C56C3584EACAE +:106A5000A79E0A96C3F8F87EB8780F22A64DE9A93A +:106A6000DB0CE0F1F6B6B7B3A0FDED015EFF0DDB88 +:106A70006ED9D37BEBA7EDAD8EBA7CDFE249306DEA +:106A8000126387D9555665C0D1BF85FDA7CFCF9F6B +:106A9000A1BF96006FAFACEFB06C98DFD79586289A +:106AA000CA9D8D4A771488CB1E87EF6A6BB05F5EF4 +:106AB000DFB365B1FDC4B4DE717E6D2FB66DE0F756 +:106AC000C52CFE24E2BFBA861501E7C3B8F1050C58 +:106AD000E6F50C7E0FE378A7F3719F619BAD26BDB1 +:106AE000172F2FDA2D368E2BE5BA26F8556BF6DAEE +:106AF00028CF37B4FC9969400A2D9F193E13A10095 +:106B0000E62B82C565580CE584A48766E87F4C5F58 +:106B1000F73D7C21DAF74F47DE0EE6FF1ACD3FC284 +:106B2000AEC4F93F89AF80BE33CFAF796E3A8CEFF8 +:106B3000EBF6C4707C5F8CAFD79C6A6F129770368F +:106B4000E2390FCA8F35767E15638F22D3433F39E2 +:106B500035C359327D3E7A43343EA1B75F18EFAD5D +:106B6000747C41FD9D81C6D7C5F8EEF1F418D401BF +:106B7000C49C623E1FF7B82D81D88238E0696661F7 +:106B8000CD258CFA19A3FA94DEEFBCD56377E277B2 +:106B90003185CB230FF69F068707C7C9437D01FDCB +:106BA000A6AD63D91FE085617FBE9EFEF83C643FC1 +:106BB000F27BD99FBB1FC6002FE181E87F0DA7FFA5 +:106BC000792EFA570F91FEFF43FDBEAF733E583B3F +:106BD000C59BB439BC0CE9E28657C2E7867BEDCF92 +:106BE0006F8CB232A227433C497AFE597C27C77783 +:106BF000D373A8E3CAEFFB8EFBAB8CE3BAE7DB876A +:106C00007F87B88E2267C7332B1F96B690B36AABC7 +:106C10009FE6FBF5052C89FAE4EBC766E7A09DB07B +:106C200055ED3E361DBAB47FE961BB61E8AD28770A +:106C3000516F2EE372B734BB3B3ABFB27FB9BB157D +:106C4000EC0CDB87F28A2D40B9BD07EA49A8479AC8 +:106C5000757B18E88B3D9D4B028BE1F9D73D8CF499 +:106C6000313C7F1DF5E2D8BBEBF9F3007F5E80ED90 +:106C7000E1F9DEEDA27D98F75780EDA19F71F7F263 +:106C8000F6057195D9697874CFABD0DB9D8887FA0A +:106C90003E6F5154C2CB41A18F1E14FAA8309858B0 +:106CA0008CEB253CD36BEE045C7DF3CA3D454BE099 +:106CB000FBA3CBE728BF83F1EE53B87DBC07F59962 +:106CC000A7B7BF48A7A5A09D79D093981906F9FA50 +:106CD0002F0AB31A804E91E3DD0B99017279FD61A1 +:106CE000E603FC4C8CF37A4DF613ECA75467247F33 +:106CF00077292F93FCADF6B39751AE54C3FA6D02CA +:106D0000FC57EB96D640F8CF4CE76DCFFB1724E14C +:106D10007DF5B2D6EE2FA13E6649A2837C3FA5DB6E +:106D2000C92F07114E1FC21BA57239F243DA7AA48C +:106D3000250FE386713D4EC4F53847F1C07CC22F64 +:106D4000B118DADBDB96CF6942FC44BA594C53FAEE +:106D5000CE271C77AECB6ADD09CF3F0A8EC5CCFAB1 +:106D6000B652D07F7F7DF548622FB6AF16723A12C9 +:106D70008F6B89D04070EFB9FB1A84FB4B1CEEFE81 +:106D8000FA77C37BA7C0278CF750A6F1FEA7F05176 +:106D90001D827E237F7FBF1157BF43C52F631DD444 +:106DA0000F98573AD71BB21E67A85F33DA85E9F20E +:106DB0003F027EE2442C83A407B408E0D5A18FF8FB +:106DC000775E2F4BA01C40DEC379D11F98A25E1CBA +:106DD000FBCE6DF0EC0DC54BEDF4A89FFA794D4D4F +:106DE000BCA1E03CE6321DFDA480F8C403FD2920CF +:106DF000F7BCC32B72126857862299EDCFC6CE79A5 +:106E00007ADA3A6F13724BE2CD5BC692F928B43F3F +:106E1000BEDA9C3FA1FF7EDCF86AF2C44E24D06F3C +:106E200028F0C676B3FEE151542F8DA347385F0298 +:106E30003C8A5AD0171EBF018204F4475378EC8075 +:106E4000F0340B78DC746F96700D71FEFDBD6FF63B +:106E500058D1C5A83FC299E1F2205C80F71295D3C2 +:106E6000C913E27ADF13B119CE1BE02B5133D04B9B +:106E7000F2911B3EDDF0135EE4F8BAFFBE797A7E34 +:106E8000EF3C3FA31A7C9C9E79C4A81FCD60F45DA3 +:106E9000B69AF80C8E07FCD74DFC17B2681EDE2898 +:106EA00074702E96D6021BF8B9F9C8345689DF855E +:106EB000626C2594DE5082CD8576CDE857E27C2247 +:106EC000D58E753246551D7872E3ADC8E5EF6CEB93 +:106ED000E12B27FDB72DF752BDB920F61DC4E52CD7 +:106EE000C10F6EFC00DE66A969FDEB06C7E7B6E5DB +:106EF000025FF599D77191FF1E07BE4AE79A1B748E +:106F000093BAB4707DD22BA8DF193A752201FFDC49 +:106F1000CCF8BC7DEA9963E867E60512F3117F615E +:106F2000A363BD1FDAE5CF4D3194732D1EAEAF675D +:106F30006BA100EACD0EAB2C07F5E83A5571F09D38 +:106F40002CEF013B41A7F8889F217F7EF4DA389A25 +:106F5000777F7CD6D6E877AECB957A5D12FD44F389 +:106F6000C0F37300D496487915C996A8C2F1A470ED +:106F7000385688F1EF5975B3E4B715387FC97F9259 +:106F8000CFCAAC846540BD94256CF4AB73DB582C40 +:106F90002570ADA7E1257F3AF79B010F37623F458A +:106FA000516326E22F5C9B4AA14928F1D061A94494 +:106FB000C735B3C7EE4CD79B07914F909E95799CF0 +:106FC0003FF518D979FDADBB2D80A7CA3158EF50D8 +:106FD000B05D511D4BE2FA6917CFA7A8F126E483F3 +:106FE000A2FAA482F0DC2DEC3019F76B16306CF9A4 +:106FF0007C90F35589B143033ADE2EE76101BE0A66 +:107000001D7C75BB9A26C7255F15D5817F0B703611 +:1070100079135B703C4F759781FE51B692B4BC0AF0 +:10702000FAA9625C9B75E3B811817FC9DF7915E627 +:107030004EE4EF9D2AB7A72235AD37609C21BF52A1 +:10704000A7B850E4E4628A47055FFD1CC54FE0F92C +:10705000EB88E7A278B74D2E6E857504F17B9337E8 +:10706000B113C7CF9BF684A5203D805E5E80E70EFE +:10707000F0BF312EE59D9EB4308E74CFAACBD9E2FD +:10708000347EFAA1589F1E30839295BD74BD53285B +:10709000A46F4CAF0A5C5B89ED8284973276A9E0DD +:1070A00087B885FCE015FC00743F80E387E676CC6A +:1070B000C0799546617E26F1FB30C4D31D1EA3081E +:1070C000E771C72AEF8224C7C771C46F8E2AF061A7 +:1070D000C25FC08F57D4FF4DF5D0BC10078827A3DF +:1070E0008225CD52B4FB397E243E3CCC5A8FFA2BFC +:1070F00047E2A922CE14F49B6A01078807B34C41EA +:107100007A007E9EA2F569751C417A856A13C4C611 +:107110006D7AC36FFF0DDAB71DD362364BE33F16AE +:10712000237F58E22960C23ACBE4BF89F683DB05AE +:1071300016433ED5435C7F497D007C7A02E7A51B60 +:107140009C4F87AA77BCEB34F30FB8F87483E278CE +:10715000BAB0115A8D2536E2EB4394A18017AD6386 +:10716000520A8D2F607BD243381115E9665849E4E5 +:107170003BD27F537BED0F7FB9CA5269707A8A8305 +:107180008E78305B006C07E3DD249E79D779691E29 +:107190003AE8031E5FE670C21BEA0787F86434D63C +:1071A000BF4AE3C8EFF4104B05805E9BCAAB484E64 +:1071B000F6C86BFC0EDAA07BC1E375CEEFFAC78B85 +:1071C0006BBC4B9DF31CF27721DDFC635A1CAFFFB7 +:1071D000EF74F6478927405E8ED85F90F4D9E86156 +:1071E0008714D09B4DC5ADC4561BF1FF80AEAD8C4E +:1071F000D39D99AA43BE68C53C8EFA9A6AF27EA2D4 +:10720000795CBFB0CB53B43E447D30BEC812FAF4B3 +:10721000352551AEA5E9C1F622D6916E1F48FB91E6 +:10722000555E4AEDDB27DD9CA2F55C664C225E10C4 +:107230007CD5EEC21F780434BF4D228EE98D369086 +:107240001C0C9427888E7EB3834A5FB12DEC07FE19 +:10725000BE875F2BB9FE6D8DCD273FDBEB4F917C59 +:107260000A751CA178472F9F26D8A561C40FDF8F10 +:10727000D80CE527925F617C9F1974F0A9E443D98B +:10728000FFE0EB51E88D577DB41E23BDEBF1F3DA3F +:107290009434BD21ED91F8A59C6EC72B082FBBC57A +:1072A0003E43DFFE397E3E82BEBB11BF7A2288EBB1 +:1072B00062CFD6254184774FE7FC9C747E77977721 +:1072C00083FE4A81A3B503F43F96F7341A54F6D8E7 +:1072D00007227EBF5DE815F9FCC71AD75BEB35E1E5 +:1072E00097FBE341DA9F7AFCCACF8F0794941FD7AC +:1072F00062C86B23EEE8CA1D68FCE295CEF5CFB4F8 +:107300004503CE77DDAB45F39E48DF67D1C2913FA1 +:107310009E03FF388F9D87EB62B0EF3F6A8CCE7B78 +:10732000C2F3F7E365BB88F7FE58DBBF1EE3BD2C55 +:107330007511C98D32B1BE8ADA1839A1E56B418F5A +:1073400060DB8F3FE1EF7BF6EDACD062A8934901A3 +:10735000F53D6D4B6E43395AF282C65490436350EB +:10736000BFA09FB895C7F9FDF017E50385B2A1DF6F +:10737000D1F52C998276A33B9CFB0945AC9DF6FD8B +:107380004A5CFB0945A8BF508FB3B4F6F0BC189413 +:10739000794DD5DF4F87EFFC3FA2C33D7A57C048F8 +:1073A000FB7E84C2E2C8AF2356FD415992C6AF8727 +:1073B000049FB27521F6FB3479BB5DE9CA4565B41B +:1073C00063A55A97243FA0EBE9B1E42F9DBCF036AA +:1073D000A8752EBEF9DD47D1AE2D387521EAF1270B +:1073E000B52CDE4F1D73C853390ED86D4FA21C94B7 +:1073F00076ED8EE6F9249FEEF9F8C62318CF19B37F +:1074000096C53610FDD971DC8F3205FD4D41EFDA9E +:10741000AD9CBE65ED3C3EC86C27FDCBEA6DC58BCF +:10742000FDAC6331FC76F43246F64AF92296B4009C +:10743000C49275CEFDBEF2AD4EFE1826EC98612EBC +:10744000FE30810FF2810FCA3B12B7E1F845C73514 +:107450006E33B8C61F63767D8EC6037E49927C4C20 +:10746000EB4743FE8A6D407AB8F97218F2E5C4BE64 +:10747000E3FEBD7CF71EF25D562FDF7DC88A17EE56 +:10748000836A69EB221517E33D2BF3F2D2FD19C98C +:10749000773AB3CE229D587C68F6CF90DBA58A550B +:1074A000DAE717B0CF58E30F62FC7CBB97FD0CF70F +:1074B000FBED173586FA66FB9AE0F0F4792585DC5A +:1074C0004F8A386CA12EEC739DDBA5519DFB4FDBE1 +:1074D000B3F9BE5CDFF137087B80C77FC69D0583AB +:1074E000273FBDEE75D575969A9C5ECF16750E47F3 +:1074F0007301F7D37760999647D012EE6006D95D95 +:10750000E5A497E4FEF7E3B973FC27D12F0F558963 +:107510007D7F534DDF1F6F0E950D6369746D16FBF4 +:107520008FFDE1B305F71FD19F1571F01D1E2B9A3A +:107530000B6573EE1C8A73EC0873BB61B2CEF590D9 +:1075400056CE289E7B7E73CE860DF0EFADCCAAD6AC +:10755000A7F0EF70BE9A51387C31A376E477B8C7B4 +:107560001BA507853FA8FFC5B9AF1A3248AE09FE73 +:1075700066A1A1D94523F4C4C538BE3D93919D634E +:107580004F64C9265CCF0D71D6B3BFC3DBCDD50B1D +:10759000A89D8D7E444FBB84337E07EDE6897696A9 +:1075A000A35DBC4FBBCBC5B8CC31AED567DC2F8B50 +:1075B000FEC85EEF6917EBD35F42F447767E4F3B20 +:1075C000B34F7F4B453BCBD1CEE8D36E859C9F63B9 +:1075D0005C57BCB2E7FD48AF7C4FFE514BC1E57E26 +:1075E000F25B4E9538F8CF4D87A3059C1F9F2898D6 +:1075F0005387FC72E3D31ECA5B3952E0E453D9BE11 +:10760000A991D5AC1C93560FEDA471323C37323F93 +:107610005FD24FFB25A23DCF4B69C33C105FFFFCFF +:10762000E3DE7777BFFF40C885A60AAEAFFAF42342 +:10763000E404D3E37C9FADC2BEA032C33ECDFF2F96 +:10764000F09E11F034555475CC04976F7FF3820D82 +:107650007EE087E6E8CC8E19507FC95EB0A1B6F413 +:107660007F2FBCCF355FEB80F711FBDAFFD5F0BE83 +:10767000D37CB303DE6FDB370F086F8BC2F5A5BB7E +:10768000DFB3BA2AFCE238C9FF96829BA3386F9910 +:107690006791ED396FC3FA10E6DD24FE1BE5D14694 +:1076A00068DB8DF69F6E929E1AEC3B6DBC1EC7F593 +:1076B000D71C55EBD2F5C99D421FC9722B06257107 +:1076C0005FA4482779C60ABCC931021EDCB738A0BE +:1076D0001B8EF5DAADF3B8B9AC9F76BD877FFC059C +:1076E000ED2703E11F9D413F09F97947AED0DFA2A5 +:1076F00094F36B0EDB2ADA678FB75C4E7250EA7137 +:1077000043E0F4F1D985017C7E8795598F8325422A +:10771000EDBDA2DE129ADF568AF1D59F7BA8BE1D71 +:10772000EC759E67C4F3C0A43D24FB3FD202FDE389 +:10773000F805858172F8EE3DB033B159ABD0F7ADA5 +:1077400042DFBBE9F98887CBBD0EE8DF1C87F94C27 +:107750007ECA2FDB06F504943BA18EE5FDE01F24D5 +:10776000E0FDE1C6289598EF84CF53301F2CEF6BD6 +:107770008CD1F3F6C61AAA77A27F01F56FA37F0119 +:10778000E5704BB590AE871AD93434BD7635FAA979 +:10779000DCD26850D9DA189D86F1F2EF359A546F31 +:1077A0006BACA0B2A93146CF1F6EACA17AAD327FCF +:1077B0008E87FCFEE47A6F04EDD172CA5F2BB3743E +:1077C0001EF7D4CD0DFEEADEE712CE5A65E617F0BD +:1077D000BBF1B52A6FE7EF9819CCDC2E8EEDA6D75A +:1077E000EA345F164A6939918CED2EC3769E1AD120 +:1077F0009F1127FB2143BB85D8CEAA11FD45986E6A +:1078000064EEEF2BD86EE4748E27163DB9DE97B97F +:107810005DBD07F836345DF4579CA2784B8676CB75 +:10782000B1BFE2BCC4E238F7BF14C4576EAD918754 +:10783000FE57717EE206FE3C36139F7B22FC7909DF +:10784000B627FE4C1EC5F1B36BC4736C4FCFBB356E +:107850003FE6014D17FD7879FFBB6773BBC2B08C63 +:107860009D7E60A94DB3095618CFDC81F5621F1FBC +:107870006F4C619C29B0DE00078A82F126A8ABB06C +:107880005E732386A242BDC4CBC7DF7DFE49A6C07E +:1078900073A306DAC1779BA0AEC277B935D00EEAE2 +:1078A000253E3E9F31179DA1765BC5FE7FE0227687 +:1078B00004F19163990A2E8D769107913B9DF73FD4 +:1078C000CDB2355CFA155E665D06F8DA7A03973F4D +:1078D00077787E3113F3C3CA2D5EFF77CF8859EBDB +:1078E000C1DE2D1ECEE36B5B3EF754D16218B77834 +:1078F000046BC07ADEE78F8DC77A09BE0FE1FEC345 +:107900002B45188F2FC1F72102DD36C0A4CDFBC255 +:10791000ABE3D3E3F4FD95EF3F3B8BE2EB250D2A80 +:10792000B306C8FF28883BF7B32B6BBB66223C7FAE +:10793000F67078DA053CDFF3BC42F0F86B79FDB500 +:1079400016DFACF5202A8B47F2F93685053CA3F803 +:107950007CB56C01CF480E6F53B68067148737240F +:10796000E0D172383CEFEBD63023035CEEF987634D +:10797000CEF9EE10FB073B665F63D543DD9B64E405 +:107980005FD4B66EDEB001F3F5E6315DC9A17C418E +:107990008A8B45FCAC0DC745FCE07EDB7621AF242D +:1079A0005D8AA35E3B3F433EB62C25BD8AA3FED72E +:1079B000B19DA457493468E74FECFF3B49C7926833 +:1079C000E8F5F4FEDDF0F5A5876DE9A05F735A4F89 +:1079D000AB7741FD9C5A26F222FF7BE60CBD2F7D42 +:1079E000EE98C4E1BD43C01B92F0027EF342987F43 +:1079F00023E015742B3E3108BC829EC52704BC824F +:107A00009E2527068157D0B9E48413DE473C5CCF1E +:107A10000E46D726014793D81F0CE983C06178072B +:107A20009C4F0F1C06C031310D0E233820FC3D70D9 +:107A300018A1D7D3FB1F2A1C1D08C7B9508AFCAC5C +:107A40005008E0A81A008E578708C7AB2E385E1D75 +:107A5000221CAF7E3A385AC53A6A15F488087AC8AB +:107A60007EDCEBE8CE7F72CAB7FC2F3AE5DB9D5F88 +:107A7000E4F260BB1C5FAC8FFC4BB83CE859B761CB +:107A8000910727F0D6DF781B4B9CE3F9463AC7DB1A +:107A90003832F378BE517CBC7F543C21DF9398E7A9 +:107AA00015F1042DDD6F6EB01C7E33B4BBDC2BE210 +:107AB000095ABA1F9EB01C7E38B4FBB2E8CF72B42C +:107AC0008BF7699710FD31C7B8569F71978A762951 +:107AD00035BDBF589FFE56C8F9A9E9FD997DFA5BEF +:107AE0002DDA598E76469F766BE5FC1CE332E7B8BB +:107AF0008CDD30A47DBD48BDD7B1FF9837D7590F75 +:107B0000553BEB5EB19F47F5D2DEF1647F3932FF22 +:107B100025D160E2BC6F0B274F60DEF816EFEC5901 +:107B200011787E5B2E97B35B5ABFD084FB085EB69C +:107B3000665412E00DD5E82C89FD4DE77147743F7E +:107B4000100FE14A3D99C27D7ECC7387F7E1EA3898 +:107B5000EBC9A72BE86D2FF356FBE327BD82EF0B94 +:107B6000EB156DDDBCD4693F9055F7C943F836E29B +:107B7000D7C7E28C8DEECD4390E30CC6B7436E07BA +:107B8000A68E0EF0DDC28231DC2736B5C4F7913FF8 +:107B9000D7D5AE63E842796B1BBED26CE2765D83CB +:107BA00082F17A6318CFE36257FB63982F6BCC9A0C +:107BB0001E453C341538FDC1DF78F97A3EEAD5A878 +:107BC00034B2F8FA647EBB685EDA7EFB075EEE874D +:107BD000C2FB1B903E5B875DF5781DCCDBC8E1EBFB +:107BE0009EC5A07D38437B8CA982DE7CB5F5A62698 +:107BF0001BDA19428EB2683FEDC57B371E5EF77AFD +:107C0000F8FBD1E2FBE27EE6378EF3CB291C0FDBDB +:107C100025C0EB4ACBE7CB0B245E407A15D575A780 +:107C2000106F5AC89917E41EF765D1EF075EE96730 +:107C300026A2AD11DCF7F0C7D06EFEAD7C1EB28B74 +:107C400068DD1950867BDB77CCFA9A82FD7F4E4D3A +:107C5000FC078ECBA2093D7D3EF973795E574FFF3D +:107C60009158B4B5BAB7FF0FBC263DEF9CD27077E0 +:107C70007329CAF375A5D81ECC44E23763D6228A8D +:107C800043E8B53CAF902D70E65FE94683CC27FA18 +:107C900000F9C59D4F345BB33EF4525CBCD8A07D67 +:107CA00002E6F493659ECC921AD12133AFF835C029 +:107CB000BFFC9887E1FCD8C7D03A2D5FE177BFE7DA +:107CC000791FCBC53E4A3D8B67E3CB77985A8774C3 +:107CD0007B87FD327B721A9E737D3CDF8EB579689F +:107CE0003FC486BFA8079676781CFB23D7763AEB6D +:107CF000D7B0F985B81EAED9EAA17D96E5AE7D1361 +:107D0000C5C7E304D7B28656238DBE4B0CA6E783C6 +:107D10004A59F5A37BA7A2FE89FA781CE24DF49B91 +:107D2000D3E2342B4249AF05EF7F7F70F2E578361E +:107D3000A9C5936C1D8E723697D17A72F3C9D56D31 +:107D4000CEF90D367FF77CE5FE447FF3D0F7295658 +:107D5000A678E6589FE2C85F5DE7CF9EC8407F7F68 +:107D600014E0654F9CF8370192FBB53E53EC833429 +:107D70009CC7F544C3B9580EF65D5D3FDF6D8A744C +:107D8000C4910F659E84DFDF40710E45E772775323 +:107D90007490F7C5F05E1BE07DF9C0DF03FF7DF254 +:107DA000C954C6CF5C52BC87E709B535F27DD126F0 +:107DB0004FFC1274E29A5ED018266835791A484F43 +:107DC000D825CCC47D265F397FEF3BAE45D452C168 +:107DD000C4506F2DAADB85F9A097F83C62DDC74837 +:107DE0005FFA42B665611CC69388E6025DBC5FE33C +:107DF00076D08C502281DF69D1051EDC97FCE90327 +:107E0000572FC0FA8AE81C1D49B4D0C7F7A9DEF97C +:107E1000EEFEA90CE6D7FA6098A528CE91F4621C74 +:107E200069C5418DE20FD7FD204CE3AF3870ED9E60 +:107E3000B9C8C73FFAACF947D25F4DF4FD8A87BF96 +:107E4000F49C2DE0C1BCC6A6F5329F2D16FD127C18 +:107E5000BACAC7BE82FEB9845FF289DFECA03CA338 +:107E600015FB7229FFB087BF74688F761B9499CE7B +:107E70004F7C4DAC8FB7C33C4F4CD977E42A9A5F07 +:107E8000D7151E844B296E60FF01E3DD28F004ED59 +:107E90002CE29BFB95E41878FFF6FD3BBC65137064 +:107EA000DC1DDE25646FACA776729EFE7D77D8B8A8 +:107EB000AEFCE546199278D60F1ECCC6F8D7EA7DFF +:107EC0005A0AF3EAA0A4FCBA80E9DA076556480129 +:107ED000BA5F4F2209CA83AB48EE5CDFB599F6F76B +:107EE000571F72AE37C06B2C05F3BEEE252D36172B +:107EF000EB3FDC9B6DC27CDEECDE9D8DF88771165E +:107F00007B81EF3D86735F16FB3F9BD7B73FC6CEA5 +:107F10007891CF56776DE2E3B9D6F39BF88FA2BE86 +:107F2000FBB1BB7CAE3C807DF943D2FFD73DF8E18D +:107F30007D368CF7F681B7EEC3BCDF95FFE7FDFB1E +:107F4000BE0AF0B0C70206CAA3D5DFFD8FFBFE153F +:107F5000F0F8CE219F8A7C71FAD1BD7BB641FDF449 +:107F6000CBE3AA14A83FEAE37AECF4FEFF2A34A19B +:107F70009FB58FCE1E8670AF7D689663DFD15D9E04 +:107F80006EE4E7647AE793A47ECC430A6E563376B8 +:107F900058942E7A3C7E50630198DF3B277CB44F87 +:107FA000BF1A9EADAB42FAACA27D7CACDF0A78BDB5 +:107FB000FE818DB4EFDD17BFF608358A656A04A629 +:107FC000885E7FF04B977CB61A4B0FEDEBAF666780 +:107FD00048AEBBBF5B7D1CE8786EFF74FB907DEC08 +:107FE000C57DEFD50F6CE2E3BAE8F60EFE635A5F8B +:107FF000BAFDDAE7DE475FF9ED6DF8F2607EC6FCA8 +:1080000026B98FBEEAA1CB06DCAF3FED5AA7FDE152 +:108010007799C823BBDF67BDE52B403EF8DE9E6D38 +:1080200011A4AF2F3617E9FDE08723F1B0C829CF9F +:1080300099AB70FD9D79D467E039A1158FBE44FAE4 +:10804000E3F443CF7B4D92DB2CA480FD719AF5FCC9 +:10805000E9467BE47A855756EF0AA77CD9BD74BA06 +:108060003E39AFCECCA6E764FF5E9FE4FC7E7DF296 +:10807000C8A54A06BA95F9CBB83E4A16105E56ED29 +:10808000FAB597859CF4546A908EAFCFC1E7FDD1C5 +:1080900051C26F20FCE7A5D173175FA7FDADC7D311 +:1080A0003B7CE4BF4AFA9E167903AB93CA4B2CC3C0 +:1080B0003AEDC90BF81BF32A4AFC4E7E90F00EB63F +:1080C0008E0787E36FC35318177B415F7CAD2FF298 +:1080D000D23EB396EDA5F5D7EA315FB2912F9EF669 +:1080E000B09D26C605A7323383FFD3DCC8F70F64E3 +:1080F0005D0FC569FF5B8F185598DFE33E9FE13147 +:108100005466A6CDC7F8AC1ACF943FC0583BCDF308 +:108110009B224FEE1BD3553AB76EB414529E823158 +:10812000F3ECB1D114278FF07C4741179D19F2BCB5 +:108130008E9AEEAFBAED956F96B0ED58DE5504E528 +:10814000B97DED970BFD894BFD19EC976F2AA25D68 +:108150002E4BEE56286FD71F0439759772E6D868F4 +:108160007C3E4F257B0F9EB705F3D2DA4FE3EDC17E +:10817000CF378DA93C5F95EFFFC0A34271CE12FFB0 +:108180007C2666A37DE3650D649FF8319F04CA20B9 +:10819000EBA272B5582F21588658CF61278D31D464 +:1081A000598AFCF102D16F813FC4EDFB4BF5B7D387 +:1081B000CFBB07D8768A97609AF62769E725E43916 +:1081C000A6C1BEC7A14654618DDF671191F346FF7A +:1081D000A250A45E135C0643384788B7C3D09AD236 +:1081E000703F08BCEDD1984F7792EAA3702A1A9D90 +:1081F0004F58CF785E8582780EB057C9BF506D5505 +:10820000F9E41CD73C0B7AE9E8F367DB5974D8949E +:10821000FBBB5EE1EF4A7AFB42FCDE8E5B54EBE592 +:1082200004F783BFE187EF6FD11227FF4DE9A5EB7C +:108230005661EF6F0D3BFDDD6D7EAE0765B93557BD +:10824000D0F332414F3DAEA4FBA53445F027EFF506 +:108250005F5D6B57F2F7D8BFFBB91C4F37781EBE76 +:10826000BF5AE4ED26003169E71B1EF0737B2A2F0D +:1082700010DF8DF32E32534C31D10FABCC3939C0D6 +:10828000FEC22671FE64636382CA1FE19A2BC0F3AB +:1082900055DD167E0F7EED7EEC0FC64B22DFE882A9 +:1082A0006E7F7BFF069D7741BAE07A9BA2261EC1B6 +:1082B00075E32F671D8877BFC9F3703591AFDCEA8E +:1082C000F29B9F147895A5CCD7F58D5C776A07E073 +:1082D000A563467412972371F2DF9FF2F7E463906F +:1082E000FF7C9722E25E8A5FAC2F661A85BDEB4B5E +:1082F000F35BE46C7A00502C7DC83F1AF25792CAA7 +:108300002C5C37C08F6F88751566277B9D53DCEF1B +:108310008A7A77A05DAF0382B43C2A53584A3EC1A3 +:10832000E79E3CBE9F9B0DE5EBFE3C1E0FC27A15FF +:10833000E231FE2AE2395AC1E32C30410DD749A17E +:10834000985FA15C670B9CEBAC871F739DF8FAA349 +:108350009FFB6F6F08BEC0F151CEF4BFAEFBC4816E +:10836000DEC5F9B8E34088417E2EAD95E205C6B979 +:10837000EC3F55BC8BC0B66B9F8D529C643FD69B27 +:10838000F4AFD5521C6732E7E78FDAD6D762DCC488 +:10839000384FC4596A9C71164F80E70DFC15F90FD0 +:1083A000E9369DC73DB2035C4EEB4603C53BFEEA92 +:1083B00017FBF4168F87F4D46B79FB9E7A257FFF29 +:1083C00029E219D981CCF18C9CC040F10C61A79AAB +:1083D0003D72CD19F79479A6B3B510C985E05A302E +:1083E0007F01CFA3623A9DA732631B6E5027A2FC88 +:1083F000E6FC54B29CD1B97A784FF691FC7E94EDAC +:1084000075F82BE17A677D784F1EB2333E3A5CE413 +:10841000210F6769715494A3C23EF18A78E960F62E +:10842000C9A480CB3E1962BEF12F15EBBC00C5A9D3 +:10843000785CB2D595DFE8B667068B1BB8F56DD3CF +:108440008C492722C07785E7EF24BED3F42E3C5A0F +:10845000C23AC3FC7CC691CBBC1447DFC6FC3CBF10 +:10846000D7B5FECF2EE7E7D5EE8BB0247F68D0FDE1 +:108470004959929E86B51EED5B29FF94C453FF8532 +:1084800076AA17E9ACA1FE4D129F497D9BCDCE5037 +:108490001958196378F4FEE8BA99B9E87F66B1F61D +:1084A0008CEB4FF2C57B6B79FEB1CECEC9C17A742D +:1084B000AD4E71A8A2443C2785F3B0ADEE68211DF6 +:1084C000F9A13FB916C6907BE9935FE7EF392384A2 +:1084D000F582B8E1A8978AF353C316441DDFB1664D +:1084E0006EBFE2F12CBE5F12277C445702CE4AFBDE +:1084F000E6B547451CAEA83E45727B4483D3BF8D8D +:108500008ABCE3A8EB3B373F7D3520FC5630039017 +:108510009F000FB15435E5A7D03974FDA48FF03218 +:108520001CF08278788F713E28590CEBA3B42F3E53 +:1085300024BFC1FFC82F1F09FDA4E0B92FEAC4530F +:10854000C074E229ABC289A770CC891F89B79C1A75 +:10855000D3D14EE24DDE0FD51F9E8A9775ADA7FB96 +:10856000C63E259E922E3C8D08013F30E4F394A236 +:1085700098749E96F8FC3EC1EF48407F9A9D25F185 +:10858000E2E6FBA265C0C7282F2220F291292BC367 +:1085900014478E0A7C2AEB249F67B633DDFCAE338A +:1085A000E077B4DFFCFC7C7616DA67C4EFBF67E9DE +:1085B000F69907EDB189587279A50321F17C9F3CAA +:1085C0003707723845F2E201C5758EBD81CEB1BB69 +:1085D000ED3C4D67261E7194F6ED38D11EED689680 +:1085E00006EF38D4A313517F713C29210E1FDB0EF7 +:1085F0007A356DBF5017FB2E43859B19228E87FA63 +:1086000035ABEFFA1E25ECCF516DDCCE346F3567FC +:10861000F2E1ACE3C8BFF23C4A7FE74F46DB293AC0 +:10862000DF58D6EEE49F916B9DE70E8A859C2F164E +:108630007A806987E7D139C15B55DAB72A769D43DD +:1086400029318D99980F55B28F8143017C752B3F4D +:108650009F36722D33EAD3FA1D91C836EAD3EE5312 +:1086600071F3E7072EBD70E3BC4B495E7DFB56E717 +:10867000390059EE698C1AF563F05C899FCA7067FE +:10868000F26800E6616EE778301730D50CF5F2ED50 +:10869000BD8D301F28F7351AD47EC70DD1B2BD0C61 +:1086A000E994D083A097C7DA8919A88E4C3BAEE233 +:1086B00078AA6E7982C81FE23E8771EB8A69FE63F1 +:1086C000D78DA4D2AD6F46FCF547748E7A549B1AB1 +:1086D000030F918D3AEBB3D09EA2580CDE03D36CFE +:1086E000AA78AE251AE476D58B81781EF66FDA86E5 +:1086F0004AF1E265FC7C687F78738F27CF75DDB324 +:10870000929FDF6E36228EF3783B058D2A83DC7EC6 +:1087100093E7EA643FAD6DF25C9D497985651DA5DF +:1087200094D7E63E57A7321EDFFC329EAB037A1F7A +:108730000D24CE21BC1869E73DCB7ACFD58D585595 +:108740001E44FCEDF4DB6A10E635E226CE17E39317 +:1087500000571ADFE1555935007259F3C91941B371 +:1087600017CE170389A9D87FB13F64D44F4EC38F6A +:1087700038A7354AF079C5AD8C9FB7E900C5598A4D +:1087800078B73760C8618E90FF3B85FC87F53177FD +:10879000719A7CDF99B0F2E85CB290C752FE8258C1 +:1087A000147ACB54D11E187FAB735D9409395BEEFC +:1087B00092B365423E97B99EBBE9383E6964A4AB6B +:1087C00084D3BD1E2E0F0A793D8C1561BEE8876CDF +:1087D000FAB0D9662F9FC8F35F6E3BC91DAF93FDFA +:1087E0004F4A39C797FD0C161752749BE2359E28E5 +:1087F00033F05C516781D00FAEF8428F3D538777DD +:1088000043201BF9932867A37313743E225AC7624F +:1088100026CEBF9EEF536FF2F2EF54BF4D7983FE29 +:10882000E2EECF22FFDE1C0CD1B8AFA9F19B715D47 +:10883000E6CFE5FB29F9422F0C24576DAD57AE0664 +:10884000838946E423295F4B534CF5A6C52FA47CAE +:1088500097F2DC2DBFB3DC727888F91E3E3D915A49 +:1088600062F6C50FDEAE99BEAFBFB144E88F62AE0F +:108870003FEF59A98B3CAE2FCEB6CA19DB7CD9FE8F +:10888000688141D349193550FF9C42EF0F07AF6D06 +:10889000413F68F33C5E3F125CCCEB572AE427FD76 +:1088A00042BC070C901CF0887CDF8F0ACA6C5C2FDE +:1088B0001B4D7ECFE7C6E281CFEF3535F2FC5AD9AA +:1088C0004ED36374FE56CA179F2B1F430F39F741CF +:1088D000F495FC9E072977F495DC0F692D3E7062B4 +:1088E00049359D3B47AF0FE44F039D4BF275DC408C +:1088F000E76DDCF2C72FE4CF4271AE17E4CF234817 +:1089000057CD709E3797F2672B3A40F07E5C750327 +:108910002515FACC06D584FE8FA29099D21B5792CA +:10892000F2FCA868EFD7E32C06ED3D750D0CF5863B +:108930006F2E8F97F8EAF879BDFCB9269DA3F198C0 +:108940008CF8D4CDC7CF22DF4E41BEB59E45BE7D4B +:108950002E28FC481653787CB081F47B30187F1E9B +:10896000DF9746D9511EDA1E1A3FD29FA9227E57A1 +:108970008AF05B6CA0F89DDBBEE8C3CF466448EB91 +:10898000FF76AF953B1BF7F57EE189617C7630BFC2 +:108990004AEA59A997A5BE95FABA20ABD4B55FDBD0 +:1089A000F534EAAF8FAA54CAF795E3B7D7B33A7E46 +:1089B0000F07E7639FF0993F2A5912F402AA23593F +:1089C0003C2F449E43957C19ECE75C91E467D95EAB +:1089D000F2B3BBDD90F9B86209ADA70FB7737A8C1B +:1089E000EBB881EC0F37FFCA7ED5BE7C1CC9423C78 +:1089F000F4A3479706AD822CC47F556C59A6FBD8CB +:108A00003C211EEFB867E5D600F2F7DD88AFB475FC +:108A10001FCC12EB7EFC1AC2D7F9025F7BB73BF189 +:108A2000151D045FB2FDDF8DAF84C0578CE3ABBF73 +:108A300073FC03E0EBFC81F0755B7C675B19E691EE +:108A400025D4D81880676B5C4D5D04F5BB97A90FE2 +:108A5000A0DD7A5B7C66600CD4F7C48E1E56E0FD08 +:108A6000A45098F8708F913A86EDEC72D5A4B89E18 +:108A7000D15187F3DC535CC5308ED5636F16F37329 +:108A80005B1B8B9704AF4EC3C39ECEA3D17439BA80 +:108A900047C99CAFF37196E2D89FD856CFE30545FE +:108AA0000996C4FDFDDA7ABE8E02111ED70958BCA4 +:108AB0003E2EC4CFA13F31A975861EC1BC04BEFDA8 +:108AC00026ED9C4E979D23E30DC1727E5F70670279 +:108AD0005438B4F37C96DB6159C23F80F7B47F1DF4 +:108AE000AC74FA039AB0677CDB5DCF85FDE371D986 +:108AF00039B2BD3688FF995B7B92E2613764093BEE +:108B00007F181B8576CDB6B84A7014011C289BDAF5 +:108B100097762828B78B3ED62CBEFE3BA20B27F4B7 +:108B2000DA379BB2F879CF7611B78CA58C597815C6 +:108B30004A4E8D41F1DB1EFD2AF0DD2EF29EABBBCD +:108B4000E3B3C203B51371D69A931DB3B233B4BB6A +:108B500058ACB7760F3F27D93EC69B5C0F70B62B3B +:108B60005C3EDA3FF7C87B5388AE7B961A3B907F1A +:108B70000E1C2BDB4C574D244CDAA73A6026D4B29E +:108B800050FF72F29F42DC3F185B17B3F8FEA4EC73 +:108B90002FF500BF8725155D04F85810E276D281C5 +:108BA00020C807C25362787A3CF4CF59AA034F0F0A +:108BB0009F5892857916D162330FF5575E7103C3C2 +:108BC000F30A72BC03C5623CDDDC3C01E15B9A0A3E +:108BD000A79FF790E33D1CCC2C8FCE6609FC087C48 +:108BE000FFE4D44EC778BE3AE778BE7A180FE7EDB7 +:108BF000EF583FB1BAFFF17ED2CF787F91F009BA3A +:108C00003D76F67759189F8F56C078C8FF385EA812 +:108C1000EF784567B728E1B4F5798518E7318947DA +:108C20003D317C7E9A1C7A4AF0C7DEF84EFFD5D0E3 +:108C3000EFA631AD01E4E33D4AD23F16F5DE2495BF +:108C4000EEFD6CDFFE5E0AEDDEBD16B76B726BECFF +:108C50001918BFF085F284DC9D49DF297AC77A5C58 +:108C60008F5A27A3FBA036621C2187F5B5A7855D27 +:108C700008FC7F04D7FDC8B98CF2DAA29D0D3F1B1A +:108C80008F72629D4A761C03B75E9FDA1BA7E9F4D8 +:108C900088FEC43E9BB42B8A847D3E807D11637226 +:108CA0001F8DEA7CDF4DC6715895C594D1BDFB1B65 +:108CB000325E29F735E47E460E4BCD48DF6F1BCD83 +:108CC0002C15DF8F61C9F5085CA965D27D5F633B18 +:108CD0001333E95EABB58CE20A9AD1C0F74946DF9F +:108CE0009BDB13DFBC80B145C89380FF7BB3E4F905 +:108CF000BAC470B41BBEE7AAFFD855D7135C0FE9FE +:108D0000F55CCEB1458AFBFE372D84769F8833C94A +:108D1000F8FD25A29FADF12D0194EB9B839617DB07 +:108D20001565F179805F9145F5B9CCC27B21B466B8 +:108D3000EE7F6A21A67E1AFA46A11DC9FD75BC1FE9 +:108D400037DDFAA3AFA4A3A4EBDF4ACF7CDCA2D12A +:108D5000685F50D891F680F663B17E86F653C17D88 +:108D600020BA96B338D175B8DF50919E65B5E6FA52 +:108D700000D215DC18F4F74A427CFFC1C74E0670DA +:108D8000DFB83FBAEA15824E711E3762893E74AA77 +:108D9000094DE94BA75E7DAE7629E6E07ABCB36269 +:108DA0004B00ED02D0E36417D8CB543ACF39047DA1 +:108DB0004E7ED5C79BF7B6E07E6A7BAE38270FF2B2 +:108DC0001FEFAFDF946512BF4C3FD33D2B274D6F94 +:108DD000B47B52D118B54F2D407FC7BE97CB89BD0C +:108DE00071B79C48FAAF86F258562ECFA72D9FF345 +:108DF000F4785CD7BA4D7E831CFFB9CD5A2BF97538 +:108E0000A114E511B6CF5B43F70449B9D2A75D9F22 +:108E1000FB439DFB4EEF3EFA5209E66DBDB6F4FDF5 +:108E200030E6E7FC563F13C6F99EBAF55761CC23EE +:108E30007CED568DCEC75E25E2755F69FCEB548CE8 +:108E40005FDD20E4E933216B39D285ADE3F925CB31 +:108E5000931A06B179FFF0DF75FBB25048F4D4578E +:108E600075E53BEA725EAB7C7C3FEFBA078E7847D4 +:108E7000005E96EFCBA538D6299DAF8B53074B7676 +:108E8000609C7E6F88CBFB6742F17FC171713E4869 +:108E9000A7DF1EF6897CC56E0FD797D65CDC6749C5 +:108EA00008FE71CFEBA9C7B2A8DFA5776964672D6B +:108EB000065CAF03119D58761DC583DCF35EFA5A3C +:108EC000D753C3615E4B372931DBE4ED6F05FF31CA +:108ED000B16E23C547DD702DB69D79305777CDA390 +:108EE00038FB92B50AE9F125DB155AE7EEBCDC7ACE +:108EF000666E9E5E9A213FF730CF1BBCD615777504 +:108F0000DB57DB43225E34959DC7E34595DFA834EC +:108F100007DF573B05763E26A9BED9E8A7F2ED4606 +:108F200083CAE521CED7D71D3AF214C910BD7B2ADA +:108F3000F2DD8163BFCF5A08AFD644B97D7FE18EA1 +:108F4000F79B1E66F8FB0CF19C14C92F8BE4CC2216 +:108F500081FF8B98DF0CC13C5B44FC70F259A8A7E1 +:108F6000C1F75E87427EDE1A58B19887B708E19D47 +:108F700088FD73BB7E11FEAEC800703F1272E62DF5 +:108F8000FEBD70F7F7DD2A8D9F27703F97EB61B923 +:108F9000B00F9B1EFDD61CE497D3772874CFFD8AB3 +:108FA0007DAF535EEAD2433E43E341C8E328DF246A +:108FB0007FBAF90FFC622FAEFB1E3E3BFC75C287E9 +:108FC000E403583751918715556B32F0DB20F9DEF9 +:108FD000A73D2747E23A77F3D3E97EFC96E742655F +:108FE000B4EEEA4D6B0EC66996B2782BFF3D1BEBD3 +:108FF000857F241CF2BECD2A1EF3C23C4DAB16D693 +:10900000E9818FB93FB4E1E0E83BD18E9EF48C4E0C +:1090100039D5550F8D988CF65ED5932152AA554FB0 +:10902000377F11D7F5453BC4FD47428F5E88FF343B +:10903000FBE2E9C29F4ED7CE1F02BEDC78BAF063D6 +:10904000DD9517D7F114E6BB56ED52C83EAB7AD684 +:10905000FDDEE672EE470F3E8CF276C5AFB7646375 +:109060009EF59FF48E42A4C383BB5AB2310FF29493 +:109070006E67235EFF94D4EA32E5A95D1C5644DC9A +:10908000C499CFCADA6C82FBCFBB3D06E68FACDE5B +:10909000E7E379924FAC203A409DE7471ECC9CCF46 +:1090A000BA62EF5D8526CF5F73E6B5EEF2D0FEE7DC +:1090B000F5E097E130FDE5F9F5E40D760D9CFFB89C +:1090C0005AF88FEE3C47993FEA5ED753C3CEFD2056 +:1090D000C00BF98936CC87F6BA445E63D3FD3E1BDC +:1090E000CF8BFFE995613B70DFFBED5DCF64E3B9AA +:1090F000EF9EFD4A91AFF776D7E801EFC73D2DE42B +:1091000081ACF797EFFAA08E39548CAD7CD947F635 +:10911000CDCAE7D5AC4A8C63ECF0D0BC1E3E71B42E +:109120007002D4AFDBEF89CCE5E0505EABA4574FC3 +:10913000BEB1A0CF8A1F3E49F9AF3D79C7824ED755 +:10914000ED3FE2453E71E37356D711EFC950067A01 +:1091500075BD3E07FD9BA6FB3FF2A2BCF9D3630A97 +:109160001B56DAF7FB65BB9FE179E5825EFDE7916F +:10917000A7BEF8936A6A67A05FD61FFD8621EF70CD +:10918000FEFEFE4F60DC65AFF8288F7DD9F76F24B7 +:109190003E7F436F203E5F796F4B21DA15CB3C76E3 +:1091A000A141257FBEECBE9B88FFAE7DFEA642712D +:1091B0002F681197077611C2B574FB6504D7352C5B +:1091C00041FCB7EC5E8DEEEFF8506775FB33D0F3E2 +:1091D0007098CBE33776FAD019616F607C16EDB5E5 +:1091E0005F6A3C6FCB9557439A07EA1F8A38D89D30 +:1091F0006171AF2F6AF5428497FF59BD6B239DB70C +:109200007BB3849F4B073CD8025F0AC6A7B4E767CD +:109210000FE3746126DAEBF41D88CE59F81CDB7776 +:109220007BACC044C77722CF978FBF568C0FF30E0D +:10923000E2BEC01B85FCFE15E6CA83BEFEE0F2B9A5 +:1092400098F7FCA680B367BDEF1279E362BD7F702B +:109250009CCB11CC93A6BCF66E4F6A98233FDAE7FD +:10926000889FF7E6FF7AC43A76BE877951FE720F7F +:109270003E1F53C8FEBD66ABCF11FF5B7D509C7394 +:10928000E873BED299CF7CAD58F76EFAB9E5C08FBE +:109290005C72806D2F1852DC7AA5274979E8B04EB0 +:1092A000C96E5BF9A087F27FDF7AE0F11717025FE2 +:1092B000BFD525D7A7539EF6AC4FC033E26DD981F9 +:1092C000292CD3FA7C0BEFB1CDB43EE179C6F51968 +:1092D0006224BFFE61F2B407CFCEF5786D3FF2F4A1 +:1092E00064B88F9D9483E7C7DEFCEE75A3284FCD4D +:1092F0008557293FDD72F1D6B0E9C8EBEE3D67C175 +:10930000ED1A8947893FC9972BBEB78AC6E9E1574D +:10931000C997523FF593B7EFC6A3FBFD1E217FDC33 +:109320007913F64C5681BF03D2E46515183FB1D5C9 +:10933000600CF9D5BD7F811144E4E75B8E32BADF62 +:10934000249E5D2AF3F1E81EB65B7ECA9F33718FBF +:10935000F5473FE3F5D82C35E37950235BDC5F9488 +:10936000CDE7352DDB24BE6FD6E222DFB38BF6814D +:109370009A14B18E72B3691D7984DF2DCF89C5B27D +:10938000D4F74DB085C664675FAC033D6393D51BCE +:109390004743BDFAF6A28B75A053EC02F5876550E2 +:1093A0009F7AFB70FEFE5C75B2077FD7CA1E717193 +:1093B0002DBCD755855541FFFA706F12C7DA0CEBFB +:1093C000D60F7CDD9CCDAC5CE0AF2C1FB30355BD4C +:1093D000F3CBF2423D8FE036317ED194EBA73CCE09 +:1093E000660FFF6EA8FDC97EAA7473169D5F2B07DA +:1093F000184B7BC7A9D239DC95212FE55F35E7F201 +:10940000F19A61BC266A27F136B452DE07A1657174 +:109410007A68396AC37E282D418719D9324F9FC790 +:1094200025DE7D74D84E1E473D33927ED7407BEFBC +:10943000375F85E767FE398BF6B75E0972BEB822E3 +:10944000A7DDF319A857F947DE884CF58AF2C04D1D +:10945000580ECF497C219BF797C2FE165EA5F1FE00 +:10946000420D61CCCF562C6E072B40BC45808F2619 +:109470008B99DED1B8449C79B39A56752645E3861C +:109480001DE3B262D03BB08EAE98C6D711F8B4A43B +:10949000875EAAE1F505C9B2A69326CDE3CBD90034 +:1094A000DF245FB204FDAE85BEE418CE5F4E3FFF01 +:1094B00034F67B2E9773786F6DB5589FD587B89D1E +:1094C0002EF3E556BF20F611BAB9FD2AF3F8701A4B +:1094D00008CF6A8411DAFDF06D1ED7A97AC2991FF0 +:1094E00031ED591E679BE6FE3D3C914774C120FE5D +:1094F000EBDA6C21E787B3E17F4B5E68B7627D955D +:10950000D383FF8ECA5C9D59E9BF5BB8460492DEE7 +:109510007BB62C07E3C17F1176B4CCB3F69A1AE57B +:10952000A11C74C939C9AF138E1B57239E261C6713 +:109530005FA1BC2AD9AFC1F1D89377798AE75D4E94 +:109540003A59F12DFCBD1ACF310F4B9ABDF986EF78 +:109550001DE7F986538FF173830FA3BF8CF1B1A878 +:10956000F39C4AC00C32330D2F5915798E7A734013 +:10957000D053E42DCADF45C4FB39D2FB996CF0DF30 +:1095800043CCA929737CEFFE3DCA2A31BF58C84F8E +:10959000F7134C3DEEA4EBF9C2EE3B2F6223A4ACD3 +:1095A000E655D7FB501DEDFF9C3FC8FE4F57B6D088 +:1095B0003F92BE7DF1E8C8DB9CC4267E0BAF20E85D +:1095C00083C7534E3C4A3E007C6A283F732D273E9A +:1095D000F3EB9CF82C883BF1396C81136F4509271C +:1095E000BE462CFB8CE37D494395A33E6ADDF98E94 +:1095F000F6A5A078D2EBA3DB3EEF683FA663BEA33F +:109600003EAE73A1A3FDF8E412C7FB73F6AD1812CA +:10961000FD2774AD71B493F43FF7D0BF3AFA93F4D9 +:1096200097E7D9AB18B74B6222CFB53FFA6B6AC345 +:109630002CCCE789A56C0DF5F8A7E583FF74F3C181 +:1096400010D77918E5FD149EAF8CF6D9BB9E501B40 +:10965000DAA3B9C01B2867DD7A3DF7F04F29BEEECB +:10966000CE4FB84533691FE223D59A86FC52C0BA63 +:1096700028AEDDAC8A7B4866FA491FDFAEAA5F4997 +:10968000DF770AE6707B3B9823F6DD41FFA1BE1B26 +:1096900091C56CD2832A73FC5E65B6B85F021CF478 +:1096A0008DF8BB91CDB9272BCC5C8CB343BDA457AF +:1096B000DE837E998C7E02C8F3821C806FA10AF241 +:1096C0001C86BAC2B0672B00DB083FB3F17C07E809 +:1096D000393A0F9DCB22CA9A4A746D7AF489F909F6 +:1096E00030C1E32BCEA17334EF2D1B4FF7FFBD1715 +:1096F000EAB91791F2FC581DCF0BB852F819EFD503 +:109700008FA6762F5F05AB0DF8E91738D522BC5729 +:1097100082FB1D83C5C796EDB8338C79322F57F085 +:10972000BC03F9FCBC1C2E5FCFCBE1F906ABEBB35D +:109730006C7E2ED343FBD1E817E1EFFB5D9FE4EB9A +:1097400017EB181FDA646C719EA73FD66063DC715B +:10975000F5E1798E7B52AE7889C7E1AEF86FE77D8F +:109760001C7372F839F63962DCCBA1C0FB812E077D +:109770003AE462F9D3E973703DC0F39402F54B8E7D +:1097800081C905789F9728F520127FC5622F3C0478 +:10979000539F97C3C7BF94C53D389F17AF5A15C68F +:1097A000763DFDC97E607268F7BC946B7B0A816F61 +:1097B000CE7C56213D0EE3F9F1797CD188160CA1BF +:1097C000CAF15E6489775E00BE9ACF62D4AFEC9F27 +:1097D0005941BA6751CAC135CBB352F9D0DF9A9714 +:1097E0007D14277E77FD99EFDF0CF3FAED8AFF7A7F +:1097F00008CF01B0C4C912D47357766AF43BB78955 +:1098000090B53007EDD59AA19DD79EF5DD00AD87C7 +:109810003577F1B8DA9AFBC7D139EB3561E73D9A74 +:10982000925F960B7E59B37B349DCB96BF4FE1EE92 +:10983000BFA591DF0FD184BF1F8CF7374678DEAE0E +:10984000CE120DC8D7CD46DE70A463691E4BD2FE82 +:1098500063F1107F0F05C6B7D11E627C1E3F177CD7 +:10986000BAE070FE64618FDD8AFDBFF2D8832528DF +:10987000BF7E367EEF18F267AA87860F26F4504C1B +:10988000C0097A88FC85775930E6CBE02FEC17F6D3 +:10989000D42DAA45F6FC2DC2AEFF48E5F6BBA6C600 +:1098A000A23AD4BB0E6B5988AF6C3496A55C001BF2 +:1098B0002E1B93E4E5EFD8823F738E901B77E6BCB6 +:1098C0007071338F7F38ED3411279276591CFEA2C8 +:1098D000DCFE901DD610FE719DCE78E3B4944A7ED6 +:1098E000E3A7B5C376E77C3AF9DCAD247E8074E863 +:1098F000AAE0F2B62B15E4E72B4015F13C2FA77D2B +:10990000E6EEE72121371EC9E172DE36789905F2CD +:109910002FCCCFC3D95A15D5291513CC37AB80D747 +:10992000ED1CFC7D5694B705780EE974851FE4ECB8 +:10993000BFE7BCB2B16D3A9D0FE4F72D421D7F2FFA +:1099400092F9B3B8DD21E5E0139FE1F7A58AFB6248 +:10995000AA45FCD93DBF6A586FA46CE57A15DFA70C +:109960009EFA0BDD0BF1609EF9DC0568CF3FADD1AF +:1099700039E6807ED29B9B01CE8751AE8EC3DFD568 +:10998000E17126FF2185EED7F09BDCDF0C18C624A1 +:109990008A5F275816C6BBDFD93F9AFCCD8342FFAA +:1099A0006487E32FE37A5FA5ED18698C26FBF7D770 +:1099B000B4FE5DF8ED4AF1DF0F9BA0B3363DAF1763 +:1099C000BF721EAB3B27D326F0F59DF9548E477F1F +:1099D0001E1EAD4E71384F1F6ACA9877BF7AD8994C +:1099E0003FE33D3BEC07FCF7EA261C9E7C2DCA4377 +:1099F00024319E4FFCEED973A8BFF7734AB9FDAC72 +:109A000033DD437E6552C57B7357FBB8FC3E7D5604 +:109A1000A376B2DF0987666806F06765AAE328FACD +:109A20008781C33EFA5DEEC02E7E1F7AE07080CE45 +:109A300055AD7EEC62EEC7E5B218DA230F06CFFC17 +:109A400046DC2B40BF3F1A303A581EC6D5BD5C5F7E +:109A50008E078AE1BDB4F2B91CEFFF0241CBEC6D79 +:109A6000008000001F8B080000000000000BB559AB +:109A70007B7054D519FFEE631FC92ED99B5D08E199 +:109A800061D83C480884B82C0984A075790818224C +:109A90002C449456A72C5001C96329B694A9CE78BA +:109AA00093A05271DA4C755A6CB173A1E26025CE65 +:109AB000521209CE86594284048149101118AB8193 +:109AC00076A845C2AEB482759CD2EF3BE75EF71133 +:109AD000A8FED364926FCF3DE77CE77BFCBEC7B99D +:109AE0009B16FE2D801DC05A003E0D699ADC02F7C0 +:109AF00022BD453FF701B43986018C0018AE00A3A2 +:109B0000ADE911D13E1C20361E60572EAE7FADA5AB +:109B10000B709C16B6B841408AEB04362ED6541C06 +:109B2000B79A63979FA2F59D1665971BA018621FB1 +:109B30004319F20A17B977D37EC507421951B7877F +:109B4000D61BE7A6E972054B410307C02F9B704F58 +:109B500025D08F0F2AF0797A7C6C9D80E7E4E1A70D +:109B6000D1F8A73AB6CE1D9B30C627B4DED83F51F8 +:109B7000716EDD720F802C832A79016C4887394918 +:109B80004F37D34F467E23BCDC0E9E129CB7F2F9B2 +:109B90006FD65B512C1ADBF93A8F437556A17E9E26 +:109BA00063A2A71959C0D7B700A60134D0C938FE9F +:109BB0008910B97C9F04F045A4ABD48D32D51D7BB0 +:109BC00027C78CB4560CFF6632CEBF610994297842 +:109BD000EE818F44C8403B5C79234DAB46BB4C388B +:109BE000B833CB671FCAEFF9734DBF1E83EBA207D3 +:109BF00005375A1CA2A6580EC9D910FEBBD98774C6 +:109C00007EC745F300D2534AE07B4A39404547E3DB +:109C10001CB2E30C686956904E122110421ACA46D3 +:109C20007EC8E7FA99C25D8D68778805C62D9D0CC0 +:109C3000B04E11981D0C3F849FC1B9228043CF586C +:109C400019359EA75215BAC600F26C37C10A3F9E5D +:109C5000DF04DD63C8EEED87BF9FEF46BE514D5E6A +:109C600040F89A74D6BA82E434F6AD524476DE2ACD +:109C7000FDDC9812584672D71EBE64CE40FD827F2E +:109C80000BE5002EE9137C8F909D0022B21F215915 +:109C90002D838FE921BB1DCE047EED0EE4531E1FE4 +:109CA00007BF44E3BB12C672CC4C76087E8A782F7D +:109CB00061FEDFE2407FBE79B663E24A3B931F1C40 +:109CC0006897F6F3164DCD65E3E5215CD7F8C18DB5 +:109CD000D2019CBFD1593B8EECF9806262E7603CB7 +:109CE000CC4EC7F5B17D180F286F4984C74309C60C +:109CF00003E1B984E2A18CC6C58C5FABB9AF8AEC35 +:109D00001E6B176197C0E281C507C683B21B683D11 +:109D1000C607DB5FE466EBFB441F8DD548BA369E71 +:109D20008D67D7D0B8B56FAE22D05844D37B297E8B +:109D3000235D8C4F08603CB956007FA824318E33D8 +:109D4000987DDB1CDCCEC71C3C9E6D9294142719B9 +:109D50009268C4151F370B6CFEA43267EBCB183723 +:109D6000A0D844C802D8A8703C42368E119F4F5AE2 +:109D7000D91ED8F86EE5E2BDA8DFC693129B9FE618 +:109D8000DB3007630A2A16B41C215AE90FCD319142 +:109D90007CDB2570A35FCA91FAA602DCB3BCEF8816 +:109DA0008987F324F26F5BD7039364C2F9790BA41C +:109DB000A1086D5FC53EFE13EAB7E910DA1586E229 +:109DC0000FC56578BB133EA3C240463ECABCBB6507 +:109DD000E902390DE36506D773578B7FAB5A0090C4 +:109DE0009FE9DB4DF8AA7406188DF67F9585B0853E +:109DF000F633973202E8EF36B36F92C228AC0BD934 +:109E000087F27F89F080FBCA2CB0C1882F19E51D2D +:109E1000DCEEDA49F135D826F9B2D0E64709EFE5AC +:109E200024AEAF2F1BEDF838371BAC6B932E5A4A7C +:109E300001D6F8009E463C3EDEBDBE1A68FCB2E983 +:109E4000D2C004BEE616ADC3BFCDE8EF42153C114B +:109E5000E4DF7046F2686E7A2E5F1AD07D702B9721 +:109E6000FE6F1009277561017E87E36087293E8FA9 +:109E70007F75F0E2E752295139CE1FD76DFE68D4C5 +:109E800092EE84F38E2AC3865FB6E1877CC8BF2535 +:109E9000313C782284DF0F24CF2E7C6C92A1C782C4 +:109EA000F2BC2972BB607E64F174F399EC25DD6825 +:109EB00092354EDF3B0ED4F71D1D6FADB379DE89B1 +:109EC000B50A1AC3FF1ECCE738AEFCD4BD13729995 +:109ED0005DCE644FE37A127E2A6560E7559EC9F72E +:109EE00090DF2BD03EA4D79AB0A069B87E1DD909C7 +:109EF000A10D1AD74FC6DF5B79C4AF45A275EB77CA +:109F000008E0C275B57B52F4DFDE7F7414D2FA50DC +:109F1000F2F3A06E97608A5DFE4C1F660CB5CF15FC +:109F2000B2CF24FC900339641F901E73105EA0070B +:109F30008D306A284E0CBB5078913D3EA3FC82EBDD +:109F40004FEBFCF1C7BE1271F1575D7F5326CF8FE7 +:109F50000DBADE759AC4F45EADE3035EE4F8B0E2D8 +:109F60002FE91D04BEAE7E87A0457287EAB76EAFAB +:109F700069A5997C019AD94FF97E4732BED6EBFA92 +:109F8000AF4FD1BF2120249D8F716A5F897E5AAD6A +:109F9000E3F74EF2D49AB8FF6A112FAAFBFF275FAE +:109FA000AA5FEECAD4FD32112626F96581EB3BF992 +:109FB000057CE92CAF6DB4723F5CEF9EE88092386F +:109FC0000E52F7CFC33C0698C7E66F17186DEBEB40 +:109FD000DA3A13F5F6764A4A35EE8FF6CDB64DA647 +:109FE0007C7642F6108B6878EA3615F3DCFE9E82AA +:109FF0001A37F2F5F68B2C0EA69EF46A69A88FF735 +:10A00000A4D7963F8C81C04576C07DAC7E464F1468 +:10A01000BC5F427C7AE69651D96E3CE1B551BDDF1A +:10A020008F9A118E8493FF3A45E74EED95A75970AC +:10A03000FEB96C89C5DBFC5756BE6E41BEE5991270 +:10A04000CB3F47FB363EC4FC704254E8F9B51322BF +:10A050005B57F7AAA489389EBFCFC4F24B10FD26E8 +:10A0600030794DECFC60E778D76A7BDCFFAB749C01 +:10A070007A33DD2F55535F37CAE6A13A36FF2E13E8 +:10A08000AB7B5747DBFE48FD4CA16FE73C05E5BCC9 +:10A09000FACE932C2F455B05C846C647B38FBCA5A7 +:10A0A000A27E57DFEE3703D2396DFD66AAB3AB8CC3 +:10A0B000B8DECAF161E0696D445C69BE1BF3695F9B +:10A0C0003A44901FC82D66F24B7DBF311E30537D40 +:10A0D000F6EB7D50C36B17D9787D87C0F45BFF9A90 +:10A0E000A0B9F1E391CE036692A361AF0023736937 +:10A0F0007EE73C5A570BA1E728CFA7E68BB5DB9349 +:10A10000C74FE8387CE25B70D890A9E7CF62282679 +:10A110001CDE98E57710EE6FF4A7DB4AF0FC1BBD60 +:10A1200012C3C3FFC023AB6B27A80F43875E8F8882 +:10A130003ED2DF5877EDC47533F589F3C29F33BB48 +:10A1400055870FCF257B3C08813AD2EFC1B04D89AE +:10A15000A0BED5033CEEAAC2164D13683EB485F4EA +:10A160008C1EB2B0E7EA5B02EB2F8CFCB356F7EB28 +:10A170005ADD0F6B31B1BA30A5D5F5F03A053B92F7 +:10A18000FDB27042B27DAA80E78BAA10CF1751535F +:10A190004826FB47270BD042E35136E60FF5203F18 +:10A1A000B781EC89E7D4ED4DE6D39052D7D4CC11EA +:10A1B0000CBFD7655EFFAE9F91CA28AFDCA9EEA7A2 +:10A1C000FA4333F282EE8FEA18CF4F557A1DED89AC +:10A1D0003495405EDC3EA9FEE871E73B0225773E00 +:10A1E000EF94DE2F1BE3C51828D48785146EFFDE9D +:10A1F000BE113BA9AF5B3F4352A91FB03A793F5014 +:10A20000F79F9AC55E34D955B16BD35E9CFF6C65E0 +:10A21000A890FC86F7830E52F9D8D8D52F4EC1FDF1 +:10A22000575A4D1ECA27E0DB59487DD2F3D92F5526 +:10A230007B294EF79A3C741FB85621A9943F83D8C6 +:10A240001F037B6ED1A8FF0876FC93DF0F08274819 +:10A25000FD61E17EC209F6DBDD9978FE122C35C383 +:10A26000D10E4B3AB0BE23FB25733F3753BEC4BE5D +:10A27000FB68E66DFAEEDE827CC72AA2B27BA4D32D +:10A280007EE7BEBBE14BDEE719CF1B303EC9AE0D0A +:10A290006181DD37E37DDE4881FABC68E7816E27A6 +:10A2A000CB0F9953286CBED0EB5F5B57DA377D47F5 +:10A2B0001EE92F6C6171D160D2B638F179C31B02EF +:10A2C000AB2F70109D341DF3E2E97466EF6B6F0BDA +:10A2D0009A851218F61594CFD77028C0B555A14BA2 +:10A2E000D42FDF68B5B27E722DFA6733E27B8D5EC4 +:10A2F000C768FC34F6358DD0C4EE354DB085D13508 +:10A30000F8F73DEFD07C70ADA3D94CB830FA10F619 +:10A310003C6F681EA9D7715E9F82EB549C5A9DC901 +:10A320007903F5D946F934DA2B29A44F5BD7BFFF5F +:10A33000309AEC81FD711EC5ADDE6FA09D98DFA344 +:10A34000FD768DEC7945C7E355BABF61A83756480D +:10A35000CC3EE20C4E271D3A90477E8E76DECC092D +:10A3600060FE7DF3D0818984135484F9B3760FAEF7 +:10A370004B90AB3E64A3A0FF668C72F13A7156F22B +:10A3800050BD41B90ACDC3E372B5CB03199EDBC4FE +:10A3900091207431FF89427752DF1E3C28F9B5C401 +:10A3A0007B4B57DA0ACA6FA3F53801399645F53069 +:10A3B000C7E966B8680C737F8B9D9CE2F90FB3FE0A +:10A3C00012C774FE90F9D96A1DCDDFC8B501C52149 +:10A3D0007CA956D378539E042FE078D3E9F54590B5 +:10A3E000703E08FC5E1B34C5B2D8BDB15F64F20597 +:10A3F000FBAF6715D829CFED9C4B756DA19E2F8EB5 +:10A40000E6D9D611AE553A77248099F4C3FDAFEB67 +:10A4100075373883EF6FD271D576BACA3699FCD5C5 +:10A4200039628A842A4DD2F15EE9F4973BCBE3F797 +:10A430008F3BF59309F71FB62F887A523CED3F67A3 +:10A44000D1AA05BAAFDE3CFB28E9DB8B7D07F26FB2 +:10A45000ECB4A80EF2D785348DEA3E040277535C43 +:10A460006F3AB4B688EA1F084DCC1F2F763C1EFD0C +:10A470003DEEAB3F6FA34C0EF59D1F64B13ADB5E22 +:10A48000FE12F52DD8A72CA4BE657FD8C4FA16EF0E +:10A49000C93286B7FD27CA5CF97471028F8DF8D670 +:10A4A000F7CA7EB2477D6FD97BD5D46F9C9CCDFA1D +:10A4B00016E164998BF2D054BAA752DFD25BC0C6C2 +:10A4C000863ED54E89E9133D9CC6DE170890C7F13C +:10A4D00002054978A96B7B97D5F7BA0EC997881BF7 +:10A4E000635FC029333E3F22BCA03D1B43828FE106 +:10A4F000611FA7751DFBB3488F5A5388F9B771AF19 +:10A5000089CFB7720AD0C2F6A91E91F9F33D7A84B9 +:10A510007EA8326B6301453CAEF7EFC7CF07C6514B +:10A520001E3C3E2B5044F4A233F93D8A0AB399DC19 +:10A53000202C657E1F6CE3FD54AA1F3F71F23C9AEC +:10A54000E18215FEDBCCF7E9715065E6EF71A80FEB +:10A550001B8579ED945EAF1761FE5230BFBCAAAF88 +:10A560007B1FB0DF1088F27B63886219FD55F38092 +:10A57000A035A2FF6B1E34B17E022A789FEDC75F23 +:10A58000CA5B45DBE5A4BC8533268ABB9A05C9F9BD +:10A590006C99DE072DFB963EE857463E2B8442DE43 +:10A5A0008FDB6DF49EF08B1E9322B1BE432B20FEF9 +:10A5B00077EA838E621E73631EEBC13C4614EBD2B6 +:10A5C0002BCEDBD4A5D4FD465D6A2CFE90BDBF39F1 +:10A5D0007EF8FC5B992C6FA6411E01F16B9406ED91 +:10A5E00057AFE8B2A6EC6F84A5CC6F4DF05012EED9 +:10A5F0000CFF0D52DF5D32D47FFB9CFABD0D62660D +:10A60000BC3BC32F26B4F889FE45E438B45A9FC634 +:10A61000C60EE330BC0428BE1B8B791F36783FAFD3 +:10A620005728678E2521BF0F8EE2FDD4A68705F639 +:10A630005EF570F187AC8ED747FACC947F0ADB5673 +:10A640003E4BF189403B43EF6716E9756EB195D7F4 +:10A65000B545C6FDCCD057C74B2338559E878733A9 +:10A660004AEBA9EE2DD2EBDCE28A647F1741DFBC16 +:10A670003128C7233E81F54B4B7CC9F34B974F796B +:10A6800097DCF25D7172D9E93F4D7E8CF65D7F9863 +:10A69000DE8736E8B8F614B93B06E8BDEA7BCA9413 +:10A6A00066B2932DA354419C5ED071FD5387FF3C4D +:10A6B000E5C7A876690DBD1FFC0475247B1B71E3FB +:10A6C0001909537F6C4FF40BDF67AC5BE754D8F884 +:10A6D000B8491B4B710F25AEDBDEEB52F36B63F118 +:10A6E000B152B2FBF1C3BDA5E604FF5CDD182862E0 +:10A6F000F5A1F34896DB9E881F51C78FCCA8202C6C +:10A70000D5EB5E329EAE129EC89FFB8E2C7A947063 +:10A71000D056335C7027D4C5F6F733C627F01D0C2E +:10A720004B6C3DDE770A970D4B94F35926E7608812 +:10A73000F34327ABEC9EF3F694692F70B3AB228DF5 +:10A740000B56BDFE02E11F9AD97A03976926D537C9 +:10A7500006F5B17460479817D73B6406C6473D6459 +:10A76000D176B37E9EE791E84585F5B300638170AD +:10A77000F7B68EAB712E8EFFE9987C087F332024CC +:10A7800011FEA7830C8FD158C6C0457A0F6812E519 +:10A79000D1E972E4B050CA9EAB32E2EE5E1860CFEF +:10A7A000EFA3573AB86F16B8651ACF01B5990AD218 +:10A7B000CC506421B5F1912C39F332E28C52CAEDC0 +:10A7C000FC16B78B0C970DDCE1626C56D87B6A43A4 +:10A7D000EE6902977BBA0FAC942717B8781C7B6C94 +:10A7E0005CCFD820B0F755865C33655820A1FCF7C4 +:10A7F000CA604DC7F5FBBA45169F8706DC1AE533DC +:10A800008F4BDFF70FDC97CB5A0F78CC1BD7B312E7 +:10A81000F7D17BB2E932DE70997D22B7D57726BDBC +:10A82000BCA2BE07623F247E73C216D6A7885655C7 +:10A83000A27E73968BFB8DBEC7C8403E952D029CB1 +:10A84000A3EF25F2B97E06FF4A4C390E2FADE77A09 +:10A85000D12BDE734EFEFD06ED0398AB907D844850 +:10A860009678CBF6DDED18CD022677C6EAD8B5A7E7 +:10A87000CAE2DFF378C2C7CE095887049F8FD51D7F +:10A880008FD51EA1BE17BD7E35B13F5EE65A55E39A +:10A89000429C086E85D90702E0A67C3E1276287499 +:10A8A0004F13699D8BBBE953F4D3233ABE2EA467A3 +:10A8B00094D2F7427BB4A56EC2F3F2E1560FD9DD14 +:10A8C0006BCD994AB81DED08D4B850CF0BC2DEF15C +:10A8D0008C89AC95FB87C5F16C035F05D919BB006A +:10A8E00086CFCD56CEEF661AA7364CC75694671B57 +:10A8F000E2DEEA24F980E156D5DF5FAA1FA769CD21 +:10A9000078DECF243F03DF4DD163257E90173837A3 +:10A910001DA93CDBE7DE60A7961BF5B0C5F5483DF9 +:10A9200087F4BAC7D04B8CEB35F41CD5343197CEB5 +:10A9300071370F084CBF9F93DDA658B4BBE87DC2AA +:10A940000F2CDA7892C3D00B0DCDBE3752747B1921 +:10A950007A2AE407AA033EF483E147B4D7B6F46445 +:10A960003D4DA0EBE3467F4C1EAA878187FF024343 +:10A97000C67A90401C0000000000000000000000AB +:10A980001F8B080000000000000BCBE46760F8514B +:10A990008FC0B3B850F9E8D88B1395EFC88D5F3DE1 +:10A9A000212CC3806037703030B43343B02B147F18 +:10A9B000616260B80FC52B982178170B420F3B3BA3 +:10A9C00003031F108B02B10C3B7EBBE45831C584DE +:10A9D000E51818362B22F8DE9240FB81F8812465B9 +:10A9E000FE1AC54303DF3542E53BE9A0F29DF518A9 +:10A9F00018D28C91F83AA4997F19A8F70A1003008D +:10AA0000102DC013680300000000000000000000CB +:10AA10001F8B080000000000000BC57D0B7854D58B +:10AA2000B5F03E67CE393399574EC2048618E024FC +:10AA300024126DC021040C0FDBE121A272BD235A48 +:10AA4000C547E91010A202064B256D6973482621FF +:10AA500021090E35DE52A53001D26295365A1FDC2F +:10AA60005B7B3B28B6D86BFBA7BDDE5BDA1FDBF058 +:10AA70002882AFC6D6AAFDEBE35F6BED7D32E74CD3 +:10AA800012C0F6FEDF1FBF76B3CF7EADBDD6DA6B48 +:10AA9000ADBDF6DA7BDCF234A64C60EC63FCFB0C5B +:10AAA000638D3263AC209332A618FD1E4C99F9F1E8 +:10AAB00044479E7DECBA90FC07939C7953F4FB6568 +:10AAC000C64633F64551067F51CC2F10190B1E2B6D +:10AAD00065118DA5CB33FD2C603C6FC812FB58C2AD +:10AAE000AFCE726B9C7A4F700ACB65ECBD1C9E9A00 +:10AAF000F3A0A80AD2DFE5A49A8A013A169FC8E11A +:10AB0000A9BB3C3699D2CB306D92D8D25EFF307063 +:10AB1000B046C6A64379436CDA2935F3DDA544D2A5 +:10AB2000D82F8BB0480F56F33305E7D32659D34BB4 +:10AB3000335708A00C45A66D3518AB047871DCEBD3 +:10AB4000E45825F687D38F0518BB9C19D4FFA1C004 +:10AB50008CA371A8FFA72A2DE2864FF706EE63ACFF +:10AB600084B18EA9FF1D8E5730E656EA980EF0B9D3 +:10AB7000FD2CDA5B81EDBFCAD80CC6FE82F83432F8 +:10AB800070CD65328D9381DF89A73EC6E9DCDE504A +:10AB90003E4D81F974AAC6FD73605CF3E72E3E0F4B +:10ABA000D6B7948570DCD1F256984B738331A7B435 +:10ABB0008CB16D0DC63405D266351D5E81F87C51B1 +:10ABC0008DF4C0B887A65E9CDB6FC3DB0C317EFBC7 +:10ABD00064EFD214C1198B6F86FE36F63F3E1BF12F +:10ABE000B060F28DF1CDD0DE75EC99D938CF192C4B +:10ABF00048F53B72049D0A58AAA798F0175E01ED2C +:10AC0000FC11BD12DBB9AACD2883FE9408D0C1E2A5 +:10AC10002F427B040A219D53674206FED6135E3203 +:10AC20007C16F58F85BCD7CAA6C6121FAA3AC79B49 +:10AC3000F7D8EAC508022BE778D2E1BF8F01EFBE53 +:10AC4000BFBA62C80F6EC3863FF89F6AC767310EEE +:10AC5000DDF1B66B0AA6CEEFBE0F7F10C3F97444C8 +:10AC6000EEF56E469E70DD9E1B87FE7C11F9B81BCB +:10AC7000C6F3C5A74C5B302A83B7FA63DDB30FDB9D +:10AC8000C6D9C802A1D39F62C82097137F8BF6D97B +:10AC9000FC69A5EF35A4661F56697EB27DFE23D5FB +:10ACA0006F6E000C4FCAE45B8AE361983ADBC2AE78 +:10ACB0008E2A80A216351E9600B54DA5574617411F +:10ACC0005E9D14094760FCA63CE8B490B1AF9B7749 +:10ACD000A64DA087DA5447DFB7E0D8B36CDFE7436F +:10ACE0007D489B72605D550C1DFF3F916840F72DBC +:10ACF000527A297365E401810D74F1847FF257095A +:10AD0000F0DA21C5EA8F237FE605893FA1BC55C94A +:10AD1000A774915689953D0ACE374790177209A5B9 +:10AD200092D2055A3ECEABEEE872E4AB3C3FF16BFB +:10AD3000CB582D1D847C6799D6ED2ACEC0F30293A3 +:10AD4000089E1695C3DBA93AE5C10FB01CD6E9F7FA +:10AD50008103306D09F072A63F10BE7EF230FD080F +:10AD60003C3D632E334D3F7E37389F43B184F09492 +:10AD7000699CCFA3C9F092C98E7233CF5EAE6F0FBC +:10AD80002F09A07883FE013F396146FC6EABCFE10D +:10AD9000484339E20168C5406EB7863A92CBE19FDD +:10ADA0004A88993EE037A5A885F854D1630CF9E8A4 +:10ADB0003A39FE02C9419D39F0A71951923BD9F2A7 +:10ADC0007A243ECA96D39E52C8DBD627D36D79EA41 +:10ADD000B7483FEDCBD41FD40FE65C1A4F11F48770 +:10ADE000911DE3B75CC106509E364DD58C46C0A17F +:10ADF000E2D7D2C81FF8373043F00D7E8FB4F4E1AC +:10AE0000774F2868FA70BEB83E71FE59EBF87CEBBC +:10AE1000297B3D9EC5F5E8CBACC7BFB0C50C451D31 +:10AE20008B856584D32FE4B052A599341EEBE8C31B +:10AE300074705D4E5B924BF22BAC1DA7723DC9EC5A +:10AE4000E36FC1F5E8862EA4D8BBC85FCD63B631E9 +:10AE500094FB4D821F511E5E1FC8D4EFC3C1A1DEFB +:10AE6000035834DD86C71D45F285D0AD296BFDC37F +:10AE700094A2C4476688F84119D4637C5DAA129FE6 +:10AE8000DF7889AF0396E4722628C6D170FC89C8A2 +:10AE90004729EACC07FA0FF3015647F9BF5457A6E2 +:10AEA0002503F5587F2BCA4577B5CCCCE2A170DDE0 +:10AEB000DFE0213C8C04F7FD5770BDE2F2D7B1BB57 +:10AEC0006DF8CB9582020FB7EB28372533CE3E467F +:10AED000F9C992E27B244C7ABEA19E9D043D96F373 +:10AEE000DCD5CC08201F45A251E84FC3F9E1DA09AF +:10AEF00057F1141911FED954A0EF413DA8167996C7 +:10AF00001B5330D5AF3788EF3653BF6AE9A5774872 +:10AF1000F4BD85F3198B4711458AC138FF65D6DB2F +:10AF20003409E1F038D79B6507B03030F7CC0C9C82 +:10AF300043ED10415F516FC4F538686F59F34E69A6 +:10AF4000DCCEB1F249C6F3563D5B0A74768BF5E769 +:10AF5000AEE0F2C25DE1257E764794D3FDF6F5239F +:10AF6000DA35318EB7413D32C8AFF01742F913D907 +:10AF7000BBB518E5EEC2F00AF87EB3A47138163BF3 +:10AF8000F160B5073CDD2C1520DEE284370B3F2D48 +:10AF9000632FCEC5F5C0FCF9C3CEBF05EC14451D2B +:10AFA0000E8E14B7DF0A596A14EAF90FA695933C7E +:10AFB0001DA19F6C3C36A991A371B24B34D23F2E98 +:10AFC0008B4F00AE1BA09FF512B7EB9410AC7BC06B +:10AFD0009706F4C6A509F3582F0D334F6B3E4D016C +:10AFE0006B3EC3D33381F329CBC03FF85DE8A59115 +:10AFF000DA65C33F5279428D8697A35E0D64CF8B8D +:10B00000D34DD539DD3AC5FC543F976B6A286EF1B4 +:10B0100073E7F0F38B117F65CF4FD13D841F6B7CBD +:10B02000C573F11C655A06CE87249DAFA74138220F +:10B03000D48F4B67D4EE6B52FC211CCF156AE923E9 +:10B040007BCB1F25F9A885A183CB308D2E3501AF91 +:10B050008943335905B6F347D81A48357F9C2D8666 +:10B060007A890F5D9C1F42550E7E7D50921DF8B56A +:10B07000E05987700C83DF3F8EC0DF7FFCD155C461 +:10B08000DF3F383F7FFF6038FEFEE38F26717C1D77 +:10B090002C70C067A5EB3C131DF862422EE78AFEB8 +:10B0A000C7C7FAE6AAB06EEFF77B7E1387B4937139 +:10B0B000F8DDB2FE22CA597F28FE1CE2AFF846B383 +:10B0C00005D778EE1C26E3786D623E57BA3A724E89 +:10B0D000003C3BE225B935909E11723E1B8E8741A4 +:10B0E0006F205F36819CC6F5F6DE2B1CEE91F8AC26 +:10B0F000BD419F89F507F36B944528BFDB2B9EF874 +:10B10000E542C05F73A8B492CC80B0C4F125F4CC02 +:10B110006F2549CC93E307F0F65BC49BC57F0FAF67 +:10B12000BD89D2F1D1785487FEC6B1B829417F6379 +:10B13000EB59246D709C2836FCE42E904DB4BB0175 +:10B140000F27110FB5E1BEB9402956BC923D87E3E8 +:10B150005B78D8119789AEF7DE71F11EBB7D58265A +:10B16000F37D0DABCA17FA01E47460E475B70DF016 +:10B1700054817A9FA525AC5754CD52C8B76DF81DA0 +:10B18000F0D123C5FE8C7014D50D68388FB7248B91 +:10B19000AFC2B47F4908B8B7CDF2123C8902BD1BDB +:10B1A000D7E8C7825F5954A2FDE630FCF531F69B23 +:10B1B000CD5F45D5F1289A2BAF2B71978CEBACBCAA +:10B1C0004F473B4F974CE62E463B5C8C6F826901A4 +:10B1D000E31766F43F8D1F340CD283A3644E97C2ED +:10B1E00068CB7A19E6935BA5986E480BFB972F66A0 +:10B1F00068771DBBFA2CE3DF699F53549B32B1ABD8 +:10B200000946EA900BE8F29C121F85E307E77645B2 +:10B21000F17B2E8BA7DDF08F6FAA718674D4E69830 +:10B22000D198A0EF721B5F95CA7CDE6A98455315D2 +:10B2300019FADEEFE2FCB27DC19F3CABFD58CF4B6B +:10B24000F08D67370ABE8845912F34E40B1247F121 +:10B250008938BE31C75C88E38F0BEB684E22DF8FE5 +:10B26000413EFEA69A1C8BFBEC6FAED596A6C81E7F +:10B27000622F239E83B2C08501FF017E34998FFB2C +:10B28000A6A4D2783857C453D8602903F01914F80B +:10B29000B1F01114F851596A33B2B6CB486F467CFD +:10B2A000A87AEF91121449735824CA083F97237C57 +:10B2B000DE783FE911CD9F8C6A50AF5DA9FBFD5749 +:10B2C000A15EFB1157C464363ECCB217FC15B0DE4C +:10B2D000ECF6B7252F44FDF3DB0D5105FB5BE0F1E8 +:10B2E00091BC7F5EC811E0D7AB65285FA0BF4DFC65 +:10B2F000CAFCA32EA83F57BDCB38350A89A5935D5C +:10B30000EA16B03515717BD8E561A68CFE802296D1 +:10B310004239E54A4AC2BF11613702DF6AA5B2630A +:10B320003FA184BC8EBCAB5EE3FD2F053673F8975E +:10B3300052B48E5C834C5C47FE1A0560DFCA284D10 +:10B34000E720CDC4BE1D7980FBBBBEE2F01FB495E3 +:10B3500056B2E1F6090AE3FB1AA4E5C7C543DB8D43 +:10B360008C97ACF16E74C27DC1EDFC8A71DAB6AF18 +:10B370001AB99DC24EDBF66726F2AD6DBF0076D2DC +:10B38000410984645318E429F0590B168D453F0098 +:10B39000A73B3364879C7185E5E3B8DEAF930DDE90 +:10B3A0004F11E72BCD134D5385A20BE333CB2EB6B4 +:10B3B000F4B84DDF2791EF3C42FF5E23C576E07A7B +:10B3C00068CBAB4DDBF1D3A4B15AE213E346AAD765 +:10B3D00056B6D0407961F1595B163E2D3F5E4B4326 +:10B3E0008AEC7F668438DCE108C161E9956CB82C91 +:10B3F000FE1D1CB714F816CB3D49F2C7E524B7472C +:10B40000917FD111C5FD67826F19E7DB7648B9BF1F +:10B410003245E38FC8BF029EF3E12DFBFBFB914851 +:10B420002EC2B1223C775629D807ABEAD7535A53DC +:10B43000DF3653817E4F777C2168E7DF57777C3199 +:10B4400088F37AB5552579F5EA0E29857AEED5D6B1 +:10B4500015F49D7DF0F1C72EE0E3D538A441FFA798 +:10B46000A1FEA8D929D17EE6D02B1BC7A3BFAF660A +:10B47000E796F5B8EFA9D9A146A3C3EC0B1252DDAC +:10B48000245C7CCD0D7D734E9565ECCBA3826F342F +:10B490006BBFA944695F7B508EFF1AE95CFF419343 +:10B4A0007B3CEEF38FB9238D50F5797FC9987E8070 +:10B4B0006BA3563749B7CD6363BE1627F9ECEF721D +:10B4C000E0ED3F6575587BCEEC61E54A08E58137D4 +:10B4D000B219E6BBC00FEA00FDADFD5204EDA12696 +:10B4E000C117D9F855EBDB098F8379B02B8D8ACC46 +:10B4F0007ED955CE53ABFC2DA17FDE965D04C7CF20 +:10B50000E5F8DB382F9443F5F9B87E3A66723BCE06 +:10B510004FFB546B5D5A706EBE82C3D92679238D62 +:10B520000067DB64CB2E10FB3625C9D05FD4A8F4AE +:10B530004663F07D4169322ADBE6B105E7A10E9D45 +:10B54000475BC3D29968AF7534C466F27D45D28338 +:10B550007EAB464FFA28EA475F11637B00DF9D0D03 +:10B5600071AAD756DAE5413BB051E7E3B4957F9D28 +:10B57000E70D2B2FCAA3225F05E590369A3CDFD456 +:10B5800050CBFBA9EAE2DFD9E3BC5EB5A8C79E10A9 +:10B5900079ABFCC945A8F7DBFC621C7650E4F938AE +:10B5A000E8A8C2756DC9F3467FEFA2A85F30A9ED88 +:10B5B0007B9B2EFA1F2C8F66957739CA9B1BEA0856 +:10B5C0004E6BFF3B582F24E018EC8749CEF2AEECCF +:10B5D00072D9511E76B66F0BF3FAEEFA6D447F8B7B +:10B5E0002EC01FD35D367ECD11FCD1C6D822E22FEE +:10B5F0009379BE5C89E6264B94C03E679E8BDB5FE9 +:10B60000F516FF1531A51ACA5DA54CF974BECD9F7C +:10B6100063300F7D2F671EC7773D7B1F3F3C1F9A0E +:10B62000DFE47CE8C1F502432E304C8672CEE2B3F3 +:10B6300091E4545B8349F86C6FA8263ECB61CEF54C +:10B6400061A537BA841D9B353ECC977D395FF8F3F1 +:10B6500050AE1ECB49F5A0BD148279E6F3F97EBA4F +:10B66000D2369F30CC339FCFD7F1BDC2394FEB7B61 +:10B67000226B7D28E5951E83E47E8AE4FE46D48F06 +:10B68000854037D70FE6A2DFD692475B501E41D1E7 +:10B69000F345208FCEE1374C34446795AAA867AABA +:10B6A00067E1B9892AD67D5351A58E72ACC9AFB076 +:10B6B00034C93D137506F3E875AB510EB98F01A679 +:10B6C000709F16AE4BE37AF4E878B081E70FDCDECA +:10B6D000F51851B6DA36AEC2C439D0070DC4B7CDAD +:10B6E0007EBE1494FA8524FF87C8B1F002FA9E3D0D +:10B6F000BF9FCBB104F29FB73E41726E447ED80E1D +:10B70000FC5065979F8CF4C79F803E68BFBBFCA62A +:10B710007B583BA97E3EF56B8DBBAFE98803AF1923 +:10B72000397FEF6AA4F7BDAFE430EC6F24FCAAF5D3 +:10B730005F98553A0AF5E66D940ED23B14217CBA17 +:10B7400074712E1762913283EBF3D55C5EB34D9525 +:10B75000D8FE3EDE3EBEC1810F0BAE9FCBD11E5741 +:10B76000C139F070801DF5A21E39E6D6715D3CFF2F +:10B77000CAE534DEBDC7F9BA00BC109EFE0478C22B +:10B780007D15BA11EB6D7CB9A56111F1455B439C48 +:10B79000F8C427F0E32E05F811CE0A017F2987DFD0 +:10B7A00053DE9B26FBB8941F150E9697F3F2E686A0 +:10B7B00018F5D3D1504BFDFA2A52345F3522F0618F +:10B7C000D58FF0FA5A95E82F92D55F1594336CDF38 +:10B7D000477CE62D05F86CEB07F4F37F209F0422ED +:10B7E000B58EEF4A7803E173247C1D3E3E29F75C59 +:10B7F000EB2589FA4845BF6F3DC98B76D45390DE5F +:10B800005F1C5F8AF23F21F4D116D42784372EAF14 +:10B8100065A598CB0F85EFC7DA99F5A7330FE43B01 +:10B82000185F0FDB552E47B48892DA538CEBB18E3C +:10B83000FCD2EDC2BFDB6E18A926A0E37671FEA88C +:10B8400095B2D41E89F743E71139BC9F769DFB055D +:10B85000DACB8D148AE0ED7971DAA7B6B3839E7BDB +:10B8600001DFDB8B455EE9A57C9E1627FDE6537B59 +:10B8700075CA7B793EBB5F5FDE133AEAA3BC7C519D +:10B880005F3AC8EB9738DB6FD778FF1D4A9A8FE78E +:10B89000E5F9ECFE3AF4E748BF6DCF17F3D119CDC7 +:10B8A000BB831DE1ED4A9CFD8C44177FC552C73E0A +:10B8B00052D5810E0EBD9122FC7B8A6A1DDFBDA58B +:10B8C000758EFCF3AF4C22FBCDEAF770FFC473F228 +:10B8D000C369C10783F99CF83296C7D8AD4A605E48 +:10B8E000620EE4D5F87809F27BBF3EB571D138B469 +:10B8F00077E7D2FA598D7281ECDE6B497FAEEEF8B4 +:10B900008286727DF50E298A76E26A5CF7681F9B53 +:10B91000AC08F5E9D58A97E0AF675C8EB17D6E3AE9 +:10B920006F5BE5E77A6655C8A94F57E95C9FAE0A99 +:10B930003BF5E9AA5675583DB3AA7EBE433EADEA33 +:10B940005841F0AC12FA7015CA695A37C6F8A560AA +:10B9500087CD4602023C277ABE311EEDF0B352720B +:10B96000D997D13F7BA797CE2DB3F1649D3F1CB4EF +:10B97000E236841EA839CF3EB206F500EDC78DF140 +:10B98000684F7ED2F166297CBCD596FE61C9F14B29 +:10B990000399F14F84F8F815C83C0897921C6FF78B +:10B9A00093D5C43738F1F209F15425FA9D8D704CC6 +:10B9B000BFF0F656F97D02CFB6F3914B10BEBF979C +:10B9C0008FBEA6782D7B8CF351AD97EC957F948F2D +:10B9D00006FD319F90AE07655DC84598D7641B9DF5 +:10B9E000B2E863B55B2EF0B949311CFB4B8B4ED9E5 +:10B9F000783A5BEB955D60879E3D7225F96F1ED2AC +:10BA000092CB504ED522FE6C783B0DFA2DA1DAE98F +:10BA1000F2859F54833CBA735F5EBE641BFFCE7D8C +:10BA2000DB1716024CAB76E655A23FAC769FC0F30F +:10BA30008EE5B31236F903F82E45BB709F80770868 +:10BA4000BE4B05BE2B9CF6E1AA726E1FAE8A5C1837 +:10BA5000BEEF147C03F34C7C9DE6B9F72CCAD1777A +:10BA60005A1FB804ED330B5F2BC27C9F7D02EDF4AF +:10BA70000A9CEFD299099BDC3AB9635A7039F47386 +:10BA800042E176FCC91DD379DE23F23BA11CDA9D8D +:10BA9000F0F3F627774E0F2E1F461E67D3654598A5 +:10BAA000DB2DB67300B237DE037B03CF21824AFC65 +:10BAB000C70ACA35FF77CFA21FFCA4FFDEDFA7A805 +:10BAC000DAF0FAD9EAB7B04E3961C747700EE46DC3 +:10BAD000F8CF2977966BCC962F76C0C3FC33B8DDB0 +:10BAE000CBFF52827F187BC376BEAFF6E7ADC0B8FE +:10BAF0009BB98699FE0CDA917ED9700F731E9C91CA +:10BB00003FC634C5E6C782694F1BD44F2EB4AB4B3A +:10BB1000CE790E91683838CB7E3EA8285186F1291F +:10BB2000961DADD4FFFB2CE4DBC3D0CF71926B8D9F +:10BB3000D6B9B1382F4D39FC0AAEFA9699F6F3987A +:10BB40009CC173AB3AC3EE8F6DCD318FA28ACE0B01 +:10BB5000D6375E3D13F2D6F95D69D7E0791BDA93EB +:10BB60005BA62FE8D93A8CDD4B2701E82F49779364 +:10BB70003F5B652913F7FBC1303FE7F0004EFB1038 +:10BB80005E25E9417B2F58CDFD576E3C0C42F80FE6 +:10BB9000F27827EB9CBEAD5ACEC375FB1EE8CE3EB5 +:10BBA0007FA61D43A3CE769ECFFA93AD13619CC0B2 +:10BBB0005C8561FC152B15E7D34ADD39CFA715430A +:10BBC000C43F18AD7D3C55C85F683B170DA9E48F95 +:10BBD000769E5F0C9E83975EE0F9F605D6FB7A436E +:10BBE00074DAA9B2CC3AD988EB04F0DCD5B088E29B +:10BBF000F946B33A09EDC1ED72FC6284AB7EF122E5 +:10BC000013979C6B71DDEF1390E68F31A6E2D1E4C0 +:10BC10009734968E5543DE673C8E3BB3DB5B2AE65A +:10BC2000FB01B5F968F4C3FE21A2563761DC53FE6F +:10BC300004E36D8C9B5AD5327D7E08E0CB9F68ACC7 +:10BC40004791DCB179C6FC4533F1FC84C591DF5ADC +:10BC5000811F11AE8E86F42C84E37295EF876722E4 +:10BC6000DD0A307EC924FFA207F812FD837E254D30 +:10BC7000797FFD4F669D42BE0BC32AB2F91BFCA122 +:10BC8000F8A711FEDA983E0FD79ECB6F9DEF259750 +:10BC9000D65465CE79AF840294677FAA30F6D8F780 +:10BCA0005977ABFCBC2FD17094FC752D0DFC9CCF4B +:10BCB0002A6F1FC77A919E56DEED6675C4C71111B3 +:10BCC000F728D63513E7145A489F8A7C1353651119 +:10BCD000F7188DA9E87F55CCDC4FA39D7184C71B55 +:10BCE0002A2C46F638FEE1790E9D7B953076872A20 +:10BCF000EC7B3D9E9C0BFD35EBF953D16FCF2AFABF +:10BD0000E70CAEFB12EC2FDE8AF458A67E7F9E8AEB +:10BD1000716B7E4E8F78F3138DB89FBB0303FD4884 +:10BD20002EC53CC85F6A98B133F9249FD26E8A1F32 +:10BD3000633B4A2DB924631C877C5C9D72FE734D66 +:10BD400025149963B773FD8621E3BA2A5184BE0591 +:10BD50003DEFD8979C799EA19FB353E023D150EB40 +:10BD600088279D2FC5EF53E97C93FBD7D5F89A69B7 +:10BD700048671FBB31378DF184C7AE3A82FED69635 +:10BD80008623C437ECD971B4AE7DBA6D018DCEC4B3 +:10BD9000397A8BF8F98657C4277A2B9477EDF23CE1 +:10BDA0003BBEA95975C63759F15113EABF32FB940E +:10BDB000CD9F206F1A90D07EB7E29AEE1772C62AF6 +:10BDC0009F50FF35AABFBBA17EF629D506AFD8A7E5 +:10BDD000F82C3ED9C4E12F167153D6FC9E7FE5BDE9 +:10BDE000436B316E32CEE85CB223C1F75DBE4B408F +:10BDF000001767FC5EDE38CCCF164F903DBF94C075 +:10BE0000F3BE8633B4BEBA7151507E80F23E20F844 +:10BE1000BF21FD0F3BF1D8B309E42A8CEF791976E5 +:10BE2000C80057E9572344576F87C067D638ECC816 +:10BE300079E8607C323A3C3D021D583DFCCD40B76C +:10BE400080A89BC58F163DAC3CECBB72FBCFA90F05 +:10BE5000DF9F85EB7B770398D29026F4460F3FFF58 +:10BE6000602937C96DCE87CDA1792C07F0D1AAB34F +:10BE70002882A38678B96AF038D6DD9B96B09C10EC +:10BE8000C61B4239E06BC2265E3E41B46F351B25AE +:10BE9000340F0C937F37C477F601CC6E4626DE3321 +:10BEA0006C443DC5E887A8E77E0A864580C75DA249 +:10BEB0005CC97B4742380A37F1710A8DA83E17EDFD +:10BEC000BF3AEEB7680EC93296179B1CCEC2D0732C +:10BED000D1B9B67E760ABC151BB118CA1316778E77 +:10BEE000F39028F71B032F4EAA222A46B8DAE0E582 +:10BEF0003B041CBA31F0CBAB70DC56DE5EDF742243 +:10BF00007D95AD5E52F45362306F39F6D3E1EC6744 +:10BF10009B289F88E5D84FC40987E5B730362F9016 +:10BF2000911EA5E8FF83B4BB6107AD27637382CE82 +:10BF3000A5120DAD94B7DAB58A7EF73424679F2A2F +:10BF4000CBAC3F25C1DB6BAD6C5ED4C60F018DEB76 +:10BF50001B2BC5F51006B958F65546FAA1A49CAF9F +:10BF60003764C54DF0DDDBCAD7DB10FE679007FEF6 +:10BF70001D0F7FC2AE94D03EB0F8CFDAFF1F3E7ED9 +:10BF8000B9831F593DF09FC5F72544C7D976B9CE6F +:10BF90006A3DB31DE571DD591E0D3BF3D586B37EB9 +:10BFA000A4DC9937228EFA161C9DC25FBBADA17E20 +:10BFB000E6025C070D4B79BE808D453F49B2809FFC +:10BFC000BFB4A23F57A5F302F2B3ED403F1EE477A2 +:10BFD000A2FF0DF20FA13FAF8CFBBD17E0B987F0B8 +:10BFE000C769F54D3331CE7BBA26E247E63087DDAF +:10BFF00003F6D0740DBE6BD5B1B48BF880DB41DB9A +:10C0000072D8AD38BEDFE863B20D6F8B34EEFFCF70 +:10C010009C9F717F9E96E4FA36534F769C13F82AC4 +:10C02000EA18EE3F581148D3D119BD74959647F4DC +:10C030007717A529DE02782F6C97D3A5C934D99339 +:10C04000F3A5E8228413F0722BEEF7C2A09635E038 +:10C05000DFC23506EDDB8AEAFAE6BA43B84F30288C +:10C060009E07FDAEE887D2C04EC6F95F540BF8B10B +:10C07000F18DB7B4D691DF96C7E76BF96703C28F2E +:10C08000FD0BD7BC9BB5E9687FF17D6D5360D5583A +:10C09000E4FF5F29B1DBF0FBA8EB5A693D7C098323 +:10C0A0007928EEA34F42A368D7A2C564478C5BEC06 +:10C0B000217B94DD3E04EF2BB1FDB80DDC5E1E5FED +:10C0C000CFCF7FAD7198121F8B7CFCAF52EC4EAC82 +:10C0D000C7CAC31EBBBD950DCFE35A740DE2C7821C +:10C0E000639F165DC7F3A23F06FD015DF3AFBDDDA3 +:10C0F00083F595C53C1E8E2D1D3E4ECC1667F7254B +:10C100006DFA70E7E575C4273D52FCAB388EFB989D +:10C110009BFA7317897822B1CFC81F950E4FB5F9D6 +:10C12000DB52822F3A6C716CB42F137134F487FB9D +:10C1300037CC97E0FE9E9F63C2EC4DDF65680F83AE +:10C14000618D726D0B8F4F1F13078685FC43CD1ACF +:10C15000D9936AEDE81518E7026B2D8D71E76AA295 +:10C1600085CE8935E177F5A0849C88FAB097523F57 +:10C17000DE488134C80628D5994EF6F81F97F7DFB8 +:10C1800087C82EF7C4BF89F35BE3894FC0D0A737B8 +:10C19000C7C5BF83B0EE463C035C2F29D187B1DC15 +:10C1A000567FB7A3BECAEB835996423CE6B26837C6 +:10C1B000D1738438745B1CE41B7E1BBD59A9ECA0B1 +:10C1C00013D0E5315AB768BFBA6C74B9C0B84CAC7B +:10C1D000E99F71AEFE0D714E9ED5BF68FF0DDF94D5 +:10C1E00020DA61CFB7BA286DA99F48E9EF64B6ADF0 +:10C1F0001AEDEB9FB9D8707E3C2BED47FD0F72EA2C +:10C20000A742FEFF42E3E32D57740DF7C5CBCDBF28 +:10C21000CEB2FB7F979BDC2F038CB810E9FDBBE609 +:10C22000B9EAD662FBBCF83E35BB5DC67FD43F8E13 +:10C23000F67783F1FE3CCEACA6DA428071F3FF06BE +:10C24000B8EF3CA2527C8E651F58F839717239DD07 +:10C25000D3B913E3A9205DC962412C7C93C9E44F93 +:10C260007993FD2A38CD26275FD378DC2A6CB8C9AC +:10C270008F61C27F28F7EF48AA0EBFC6EA1DCEFC29 +:10C280002AB66434EE135775C14E5B427F90D3CF0C +:10C29000F15BB19E57B3BA16DC8F358B7554A3335F +:10C2A0006514E8C9B5CF7C6B06CAD1B7055E5F835C +:10C2B0007D94618B67BFCB9FD2500F9F7C72DA4D0C +:10C2C000B319B64FB514D2FD1436ACDF7545AB13B8 +:10C2D000BEF3C19F0DAFE5C718090E653FA7EB1070 +:10C2E0003ED1ACF84BF382EED54DC4CB5C54DF7934 +:10C2F000AFEE7CED26B90DC11F9FACDDA7FECE765B +:10C30000978D00675B281943B933B8EE3C319287AB +:10C3100092C2D75D5BF83CE54550EE3A4779E9B902 +:10C32000DB63DC0DDEDF892248B41F4E5F447654A8 +:10C3300003BF17F2AC1AFB67DC073DFB5F2E8601DB +:10C3400095CFAAECB08EF3922403F7D151FD7A2A4F +:10C350008FBEEC0AC9C562D160FDB717EDC3753A4F +:10C36000C3AD0A7F7C9F0BFB8DBEA32FC0B8846733 +:10C37000D5F4457930FE9CAF71BFC4DC77D22B1069 +:10C380005F570C2C55519EFFF4B1E76FC37EEE1A38 +:10C3900058A8607EAEE8E7CDEF3E3E83413FCF1E1A +:10C3A00008B034F99F521AEE93EE7AD245E7D5776A +:10C3B0007F3F407AE1AE27D6EE5D0CE34BCF040819 +:10C3C0009E394FACFEB69BE06BA27EEE7AFA86DC1D +:10C3D000FBC5BC3C808F67375B71A8E98B30BE7EA4 +:10C3E000AD9B7D1EED020B0F83FB65FF5C250FE10E +:10C3F000DA9F47F6C6205F2B50BF02A318D9E797F4 +:10C400000CB3FF59E5E6EBF28DB735BA4722ED3FA5 +:10C41000B48CE6D77B33CD57028AFC01C6BBCDADC9 +:10C420005AF5681EE62352AA0CCADF7844E2F3EA02 +:10C430009DDC9D538CE3776B3524D7F8F98805EFA5 +:10C44000FCFD7313B8AEE7EB792548F2F9DF3F4006 +:10C45000F2F99EFDAE34EE7F20A57DD002BFCB79F0 +:10C460002F8945FD12F0C13A1289903EB996E4DE5B +:10C47000BADE76BA5F72CF41E77A073C47D200FF57 +:10C48000DDBF76451663FE07DF09E2BD96D7FA7A6F +:10C4900082480F1867B906EBE033EF3BFDB9D8FFD0 +:10C4A000FBF943FB636C80EE8BDCD3DBC6C7CB921E +:10C4B00027AFE13FC60EDDB776BAB3EF47BD348391 +:10C4C000EE91ED1F35AC3E1CBC1725E4CBDD07FE1D +:10C4D000B2CB8471DF78E2F55D18C7BFE6A33FEF0A +:10C4E000FA0AEE8FFE3D4747B978CF77FFB0EBCB26 +:10C4F00080CF370FBA65E493B77EF49D6F3F04F9A0 +:10C50000B77E33A95282FC77DC5C5EBDF5F85F47ED +:10C510001BD0CF861F5D3906E7BFE1A9F963D8704C +:10C52000F24DA46F015FA56C7C65F9798D83D0DF36 +:10C5300018C83E2BD22CBA3CFFE4F3E311BE378F70 +:10C54000BAE9DCFF1E839FF3AFEB5D4B71BE98C76A +:10C550007DD3BAC7B6D0BE7F289ECD8BE4305FE7CF +:10C5600018F2BDEEC91BFEF98A2A4CD58881FDB1AF +:10C5700001D22FD9EDEE7919E879D9C8F4FB0BFB7C +:10C580004043BCDFF3581B1F378B7E6FE23F660EC4 +:10C59000A5DF0B43E8B76637ED899F1C3ECED7A2D7 +:10C5A000DFDAA73E7BCE7B746F65ADDB91F05B2B52 +:10C5B000E23D1F7047FFCB8DEBEE099F1926FABABB +:10C5C000538BA1ECADE63F8F67C01767D48165B888 +:10C5D000FE067EE4D6F19C7EF98F7EADA11C7BEB3E +:10C5E000A95F6A06C973E697C06E7B8B0DFEF5A145 +:10C5F000DD4EF739107FFB0269F443ACDB544B741A +:10C600005A97BA7E9111A4EFE4CF5897E27CBF2EDF +:10C6100075E8466918BAF93DF95C8EA60A849D98BA +:10C62000A1A3548DF43BBE10F96D24FA59F3D671D1 +:10C63000DE97DBE868AAB44E475A8F6F75BB158C3E +:10C64000D3BD47F8912CFBFE9E94F46B36CC3A1D7B +:10C650003CBFF884F71C35CF08FE2731DFF3ADE38C +:10C66000F3CFE793E1EB5DA1E7B3F1B6B9D94D7232 +:10C67000F87753DD147F745C35BEB111D6E3C08BFF +:10C680002AC5312EAB7C553586B99FF1FB2C3BE892 +:10C69000F3F552CB1868F77993EB91EC739EF8267B +:10C6A00017336CF859E71EF81DDEDF653FCE6114C5 +:10C6B00097F6EF39B41FBA67574E0AF5DAF34FBD54 +:10C6C000F76DD4276FED7633AEE778DCE06AE11FD3 +:10C6D0007CF5A9F776FD0DE36EB1B181F5379EFECD +:10C6E00012F2F9C312C67AB13F3E913B05EF33DD3A +:10C6F0000D75F1DC72F58FBF721DF229E6F1FC7247 +:10C70000B52FBE0CE3C3563F3C46427BE61E6FFF8F +:10C710004728875EFFB75CA4007BF3A9F76620BDBE +:10C720005E7FFA992928FFC03E34ECE77677DADF9E +:10C730006BB0D9EF77F776D279CDDD58CEEB4B1FC2 +:10C740008B358376388E8F76C9DD0773A339531CFA +:10C75000F5A89F7BDC03F7E13D70A06FA14C367D0F +:10C76000BA10E97CF77EE7F8D77AB8FEBD471B58C8 +:10C77000C5EB270B393FF451BBA51E2EC7ADF2EC1C +:10C78000F656FD9B3C258E7A56FB75E25C62881D51 +:10C79000EDE1E71B77EFFF70D270E7BE43C7E1DF43 +:10C7A000BF28313A6F638FE7D07E778D96BE38BF52 +:10C7B00082BEC7D04EB1F285625CCCA33DF543B1D9 +:10C7C0003ED77879FE6911AFBE26087984D7D3FFAA +:10C7D0003DE49BB5CFE430B4CFD6FE18EC25C0EBDA +:10C7E000DAA77F3A1EE9B6F6C71B89EE6BDD69A2B0 +:10C7F000F7C0E36E86713C6F3CFE2295BFA1A6C7D1 +:10C80000E3B86B9FCD396EBF5767A56B7BDDC2B9AF +:10C81000EA9C4F139E3BA9E8E74A935FDE25CEC50D +:10C8200060471EE911F16A3CEE722CCD37DB9EDECB +:10C83000E7291ED6EE6EC6F30C74747A4CA6DBCED6 +:10C840007915C6E330FF4F16BF696A5CC77DA686BF +:10C850007844BF8F126F45FFAF1A0E4D453E6E09EB +:10C860002FA17B3B1D15FA545C977B3CDC6FE18666 +:10C87000FEC93E3EDC45E7B29E22E54F8E73EA5389 +:10C880007E8AF363A5B6EF25140A47DFFD15F0DDB8 +:10C890002EEF42B58EF724B2CFC97F28717C980164 +:10C8A00037C519C0BF5CB89E6FC91C5CD23EF53756 +:10C8B000D6B9A992E0E579567182978BF57F4F0D35 +:10C8C0005FDFD9F4BAE5D92D7D7885F99667C792EF +:10C8D000FFE416FFA43FA05CFF21CA56DCCFE7F1BE +:10C8E000F8A4CB9E8DDDF04F90FF5C6D19C9AB8A2B +:10C8F000DED8B593217F7BED44F2C3BD20F8FCB6B2 +:10C900006ED954815E8745FC9BF92589E0FF3CBACE +:10C9100014A0E17266687C739DA2FA2B586F80E7C1 +:10C920007B0BF07EACADBDCB8FEDD74B745E77EB60 +:10C930007FBD7C25E2F2B72F9FA090D3CFBFC43438 +:10C940001F8CBBFC49A385BB53447FCF427F72A69B +:10C95000BF0C1EC5BB068A87F092C19387F0F69B79 +:10C96000C1731493EE97DBF04CF1D5169E6F091C42 +:10C97000BD15F1734BE0E2C32C38149FD9F646364F +:10C980007EDFC122D067FFCB133DE981F2A73DD105 +:10C990005398AEF10C8C574AC88F7406F3EB5CF1D8 +:10C9A00009A32792DF695201F25DDFF0F66C663C65 +:10C9B000BECE7EC32261BE8FEBE0F310EF8DFC860E +:10C9C00071B9FE672C9A9981FF378ABF15E13BEA5E +:10C9D000FB9E8AF6DB6D2CAD62FBCFB17E15E99232 +:10C9E0004DB7152CAA61F91D2CDD82978200DE8FD0 +:10C9F0003C05197859511FC577B1972EEC9ED690FA +:10CA0000D4E3A1D8821AC6E1AEE97FBB01F1560397 +:10CA100060A03E44B2E07A3E65D1B58DF357CDB10A +:10CA2000B31FDAEB3166D923FC9C62B03F4F07DDC0 +:10CA3000E3B5D573E81BAA270DD70FE46D711F432B +:10CA4000F3FCBE4AF6F71A4F90DEC1C8EEEF533939 +:10CA5000963C83398C46BC5A7FBC9F47F3B9DC5E59 +:10CA6000A1C05200BA5D966338EC03F8DEAA5666A0 +:10CA7000EAD584985204F91521104D50FFC46395EE +:10CA8000BFB8D41819FF351D1FBB8D61F40E8B3252 +:10CA9000233483DFF722BFEC4F22A6DB95392FFF2B +:10CAA000A4FED47C16A134C462945A710F6196A47A +:10CAB000B490F5525A84FEF389E8471FA0D460BAB7 +:10CAC000CCF998AFA31216A17C298B517AA098DFDC +:10CAD00013382179237B86D117A0AF975C03E51B20 +:10CAE0007FE5A2F3FBE53925C3FA5F5C9E6BE72483 +:10CAF000ECF7AC1EF1D0FEFCC06683E2CBACEFCB12 +:10CB000073B87C5B9EC3ED88039BF9FDFC138F78A3 +:10CB1000227BA0B79301A6E5C1B8273B7F5D82E7E2 +:10CB20001D563D8B3EEF1F7FE6523C97989E13ADFE +:10CB3000C921BAA789DF2CBAAFF0F8B95FBE437D2F +:10CB4000C3AE3FD49CD85D58FFC8F7BC6477DEBB4A +:10CB50005D22BB931912AD9395824E8FE6F7BEE628 +:10CB6000C2F5B0CD6DE07A58D9E13E4EEF9424AFD6 +:10CB70008CDAFBFBB298074B7E83CE8F579E27BE85 +:10CB80006F252854E4BFEC7E181B9787F63AF940CE +:10CB90001CEB99FB5DAD77ADACEF1EC6EF71001BD2 +:10CBA000913CFF975B6E5ADE8CF1473D6ED2B36EBF +:10CBB000B10FDB2EF056B08DC5B1FD8332C7DF5902 +:10CBC000D15F478E8BFAB3EA6DB7E61365D97EF273 +:10CBD000ED88376DDFCDE25D197EBEF5A0965C8AEB +:10CBE000783CDBCCDF7399BCEFE6BB510E4E4EDCDC +:10CBF000771DA60F48A930EA7FB3DB1D413CCEBDAF +:10CC0000B4FA6DCCDF99D0284E6C72428B225E7BD9 +:10CC100071FD021CE537D536A2FECB9D632E43BFC6 +:10CC2000CBA47D5A04F30583F151BA978C8083FC21 +:10CC3000DD925A81C3EED4FCDC73F90750ED988E77 +:10CC4000B8332F331DF2263F2B5F9855BFC4517E5A +:10CC500011CC612CC8878BFC2C1D80F440A33917A4 +:10CC6000F5FBB61A46EB671C2A3EA0F3450A33F1E2 +:10CC7000FD223CE6F0425A0479DC7A42397389F2AB +:10CC80005C48F7CABD8B90F887051E7465E0C54403 +:10CC900031AEEB56A9CE6F9F7F32689FBF157701EB +:10CCA000FD30ECF76CA25247BB32A5B17B119EEE72 +:10CCB0001E37D1A522F1EE3294E793F75D7527D2A6 +:10CCC000657EFFFA9F8E03FC9E3118F93D42CC0C25 +:10CCD000E23D0E9690E9BCA1A29CA554A877000164 +:10CCE000C57A292D85F7D870A9E7E4536A06308DF7 +:10CCF000C5AEC1FE60FC28F2754579BA04E939F980 +:10CD0000D89D6FE2F77E319F4799A9A39CE94EB960 +:10CD100018D2FF9203DE3D28145F78C59DFE0CF407 +:10CD2000DFDDA9D1BEAB7B2AA338C22D6D5EBA4729 +:10CD30007CB9D7207EDCF261742CCA8FD29896968B +:10CD4000A1DF77FA8BEFBA83217CC9BAE7A0FDB6E1 +:10CD50004E2DB287E3C1F454129E59B012E3C3FAC8 +:10CD6000E724E8E03E3A76896D1FD9A5466FC17881 +:10CD7000A337723E5A80F15D5D39447276D1D67028 +:10CD800033C67F9D7D0A6436C68D5AE76BE5C9A020 +:10CD9000FD7DA8BFE4488EB8CBB3E27D2C569A0C3B +:10CDA00072BD950CD27B50AFB8097FDD4F79687E9C +:10CDB00067F74D2BC17D5D77E78EF148C708CE0F31 +:10CDC000FA39FBA1399EE69772A7F1BEF9035A9F83 +:10CDD0008CEBDB7C9A913D7F06EF5F820D78F69FAE +:10CDE0007E7B621F36F1E60DC665235C0FE0BEC494 +:10CDF0009F81A356E7E7C5212FF77FE67AB9DD1DAE +:10CE0000F08AF55D31647D07BCDC9F9D4E40954600 +:10CE1000DF75E4CF2EF08A734F0F8FFF1EA65DC81B +:10CE20008BE7678B6F4D639C9DD50EE3C96334FF21 +:10CE30006F2C437FDF994E0FF1D9999E3185C89FA2 +:10CE4000D6BCBB91AEFE0C5DAD794C56581ADF07CF +:10CE500063FE4809C65B7DCACBF16D95430F259FE4 +:10CE6000B5D1E353629E0F784579396F972917ED55 +:10CE700083E2BE71697639C7CF0BAF5C7E761FA7A0 +:10CE800017C1DBDDB9682CD2A9EB43BD90E04C7033 +:10CE90003851FF201D07DF5B28AA22795BE4610976 +:10CEA0004FE570F267B3B8671D223BCE920323DAD9 +:10CEB00071A2DE79EDBD3028741B3DDC09531B6B7C +:10CEC00064DE41F2876257215D8D527D1E7EBFD2A6 +:10CED000B598E237DC225E36BBDF071B4004C07A20 +:10CEE00079A0C1836FD4B0B6069DF2DB1AC294A6B6 +:10CEF0001A0CFA1E17F8F4CA5CAF6C15FAA44DA40C +:10CF0000377BB93EB152ABBE65F728E5FC3C5F29E3 +:10CF10006FE1F1A5A5D67B5A83E7E571E42B16678F +:10CF2000C3C797823D83FCD523C557E2FC8A457C65 +:10CF30004071829F9BEF167CF256D6FB6F6B041CF0 +:10CF40006B04BD4D61075AEF31B98B4CCEBFD63B58 +:10CF50004E4A7CFCB9DE0701FCF74B36FC67F01E3D +:10CF6000DF8870D526F3E6A17B31A794C7715AF804 +:10CF70001F89AE16DEF161109C5F6831BF476FD12B +:10CF8000A5AD214EE5DB1A6A294D35D451DA23C50A +:10CF90001288AF50ECDCF36F13EB7F9BC0C385CEE0 +:10CFA000D3CC8925BD625F617FE7EAFCFC7961F53E +:10CFB0004E607C2FCCE314C6F3969DFFFC6FE30319 +:10CFC0006BC83FBE5D8EEF43B8DEFBFA3526BA9FD5 +:10CFD00056744C25FE01BBB007BFD7E41AEFD20D43 +:10CFE0004C73E3952F41851AB7F134E697F6DE745A +:10CFF00025BE875833C6B80FE37CFFE0BDEDCA10ED +:10D00000E627307AFFF0AF5B5B9A31EE74BD37FAFA +:10D010003D2FD9976A1EBED360D96723CFC7F94E7B +:10D02000430837D39C4FE2F6750AFCF1C3E1F9C31C +:10D030004FF37C67314B9DEBFE24BE3FC3F9C02309 +:10D04000E81F7F01E73BAA94F3CBA8C5E7E6839FDF +:10D0500009FABF24D257BC22BE56F04150C43767EC +:10D060008FFBB2A8BF4DC83D9063AD767967C93FCD +:10D07000AF8BFBD10E5DFAD0ADA8CFDDFB2E2E41DC +:10D08000FDF7C8B86421DE9FCE1572E37EB52E8C05 +:10D09000E77B1545EF2EC3F7D82AAA59AA2C886931 +:10D0A000BAA478CA3F8EF7B9DED8AB9C7E5C5EFC32 +:10D0B0000FF4F736AD0305FA0BFCE3FD01BE480F94 +:10D0C000A0FDA609BB059F346391C8A5FF13FDFF12 +:10D0D000FF6A3F8AC5CD30D07B9415CFD4B199A1DA +:10D0E000FE013E2DF441BF395DDD26F2BD8F0DFC02 +:10D0F00004AF805AFCA94D00BEB1F15DA58FCBE90C +:10D100004A9F15C700BA0CF4C1C5F40F9EEF80FC0E +:10D1100024FC07C88349E23E4A394BD2BEF652D6B8 +:10D120004B6905EBA3740A1BA034C27417A6952C97 +:10D13000E212714A33305DE389EFC6AD50B9277E04 +:10D1400019C289714A920BED9A75B3703D55F9ACCD +:10D1500038F4B463BFC9C4F9C0F9F69FB92C5AEDCD +:10D16000A3F623BC9FC946BE77139931F4DECD27C1 +:10D17000B81771B56FFA30F7222E33DE96E986FACA +:10D18000D3241FF327198F633EF0C077483EE65F34 +:10D19000CEC82EFE5AFBBFBD80F2505D144D130C5D +:10D1A0000936ECBB5556AA8EE1F17189BC9B748A95 +:10D1B00093F3F0F32E45F86FAC7AB5E8742C18FAB7 +:10D1C0006ECBFFF438D9FD5F27C7EEF2115EB93D93 +:10D1D000F1359F33BECF1ABF29C47A5DA07F5C7939 +:10D1E000CCC4FB72D9F034FB96F502270CCEC31ADF +:10D1F000CFE5E7E3FD1D71825F43B886C60946AD02 +:10D2000038C1462A17FD29BA334E301B3F1D62FD37 +:10D21000CCF645B7603B5B7C5DBB6FFAB0F1751D2A +:10D22000F81DF8B493E367783E3DF4D213BF980538 +:10D2300072DD9BC7EDE4046E70F13CACDB45F79406 +:10D240005FD7A3BEC9C08FCA7D251113D7A9F08FA0 +:10D2500058F71F954BF725E741F996087F1F614B5B +:10D260005F8917F7057B5A5DFC5DB917582F9E93B0 +:10D270005A7E8C09C151346EFBE4D363C9EE7EDF64 +:10D2800045F162CF4D7E772CDA53BB5FECA5F7AE4C +:10D29000DF9DAC6918577338C0E31DDBBBC5FB5F6E +:10D2A0008CC3B7F5C158CF565B5CCDEAD012BAAF8C +:10D2B000F5C38042F5BFB561C9CD18375E1346018D +:10D2C000417877F1732D2B351DF96C7C07C57952A8 +:10D2D000F6F76D416E7735572BA4DF5756C929DC19 +:10D2E000FFAEDC29D1BD0463834CF136C6865F2DC9 +:10D2F000C272A36A9E8201F746784052E0FB4B3E21 +:10D300001EAF3361C33C8ACFA9494A543F7B9C97E7 +:10D310007CDC9F3361539FE847A658C809D00FEEC5 +:10D3200063CED7FEB08FBF7BD829EE436E55EB5A44 +:10D33000E623DEBE952799367E3D26E4F11EE89F62 +:10D34000C70DC5E8DD836F0DE6EB341C6FD72537BD +:10D35000CDC373D65D0F72B9E5DFF94BCF2CC8FB97 +:10D36000531CBB86D97F0BC2D95CAF119C5BA53A1D +:10D37000F287B74FD6AE45FA181D4007895282771B +:10D38000EB25EF4A77423AF130EBDD0EFCF1D98024 +:10D3900087E09DD801F65300E71B91F1FC7982A844 +:10D3A0009F3DBF2B82428F087E9C20E46959ABCC05 +:10D3B000E9B089B76B577BC3A36DEBA9218B9FB2F3 +:10D3C000FB3DE0E3FBCF5D2ACC07E0D62A3486EFB5 +:10D3D0004AC8E1D83CBCCF50D32547AE8271DADBD6 +:10D3E0000ED17BF2ED53B9D4DDFAA55561D45BEDD6 +:10D3F000D35921C27D46F0A5D9CACF89B2C78905C4 +:10D40000381FBDD625D33A39B1F9F458E48F5D0100 +:10D41000637CA802CB399F9C08F809CED7BA2A7B37 +:10D42000EBA1BFD7FC6B464B86BD1FCE27A572B2C2 +:10D4300010EFC51575682D8922C8E33A06FBF79AE7 +:10D4400060B005FD20671E7389774EFA72909ECFFB +:10D45000A5464D8BE03ADFA419B836774BEBAFC346 +:10D46000F5626E9629BEE74CDCF25345C84F95EA4B +:10D470006A0CA29CD85BA554229EDF0DD614F961DC +:10D48000DC9E8E515EFCDE969025FC5EDA59F93307 +:10D49000BC67513A3D9FEAD11B6F33F0DD614E9F6F +:10D4A0002DEFFF6007D9FF551ED623CE17504F5AD8 +:10D4B000F1ED41363016E55AB0D54DFBC040F2E8EB +:10D4C00057503F065ADD74AE0AF5FCB5F93C1D8D88 +:10D4D00069979C9E81E5E17FF902FAC57C7D727AAD +:10D4E0005510DF4F928FAF803428DE770F88F3928C +:10D4F00040B5ED1C82FE9FBFEF68C11728F752BBF5 +:10D50000D72DFA7558E7637C2EBBDB26A550EE2499 +:10D51000E4D40EBAC7378BC789029E0AD12FF5BA59 +:10D52000E54710F984F0D3E2FD7ECCFB8E0C2CC1D4 +:10D53000F9F83A4EDF8E29F45788719FBED6FFFE68 +:10D540000AC12FCE6B7C554E381F0B4617FA855DEE +:10D5500011C5FBA316BEBAF83B9A073673F85E5D99 +:10D56000CBDF9708E255C57CDB3CEAAC77FCF9BD24 +:10D57000BE8B10F7FC0DC52A5C3FD6FCDFE8755169 +:10D58000FD8757F27735DA9F628FE1F968409C0F8B +:10D590000DEA87CFF2773902152DEB894E59785D68 +:10D5A000E9E77EADD71F9B48EF9D59F7B2ADF18BF0 +:10D5B00070FC924CFE61C6E179FC70FEB515D0FF9F +:10D5C000CE352553D15FAC88FD0BFD019D42D80EB1 +:10D5D000CF4D744FF41280A75CACA3C7059E534790 +:10D5E000F4E750DF1CFAD9AD5E8CEFBB2C10A6F22D +:10D5F0001EB384FB5B193F57D2C578270C2348F133 +:10D600001B1B18AD737DA714C5FB61E3C242AF7449 +:10D6100048844F8BFE2B16E8447F3CCB9767A0B71E +:10D62000999151AD776C5E4FEF6C8289590DFD9CDD +:10D63000081B41F4FBBD5A2F539CC00A66C8647C8A +:10D640002B4C46FB6EC5261D7D2D6C57786033AE86 +:10D65000BB574DA6A3DF1301C37E8302BEA0E8170C +:10D66000F82788E73A251DA3A89D850FF49DD2FDD4 +:10D670004C93511CC8093DB20DE13CB553A2F7BC17 +:10D680004F1571B87BBEC852E83FBEA3D55C8F9DD5 +:10D69000AF0EF7BF88F27C758566F0F919DB10AE26 +:10D6A00071ADF9D47FB0EBE98DE8FFBDA302D26084 +:10D6B00066BE2B055C2B379804D7C9228EA79ECD5A +:10D6C0008CFCCADE71A924DEA35ABD09E643C43529 +:10D6D0007E86E318F5A30DC25B8CF30990C2FC189B +:10D6E000FAC95BE4E49BDCA8E688EF61D53CAFE0D7 +:10D6F0008BFA38AE80CB9A7F9980A70CE43DD2ADEF +:10D70000CCE4F3BB439C37CAD80EE65356CFE7B1FF +:10D71000B2CB395E47F9BE3E7A6F6D8366481CAF67 +:10D7200006CA2BBFC0ABBF82E3D5BF418C1BB1B5CE +:10D7300087F2932F3213FDCB52BE87E3612AF77F26 +:10D7400083F1BDEC4E5C775F77931FFED4873C4E30 +:10D7500075F7546D7FE330E7A6BE23DC0EBCA82E20 +:10D760006BFE0A5817367E00B917F5D03D59E3F520 +:10D77000D5D07FC094293E7F6CD6392AD6CB03E61C +:10D780000C6C1A3D0FD767D0CC9FA74DC9D85BD37F +:10D79000EDE3A36BFF25FE3EACEF482C9FE4E49144 +:10D7A0008796A0FF3A78387903E60BB2FB3F5247E1 +:10D7B000F131938313F9BDB5C390C3FA91D35FC51B +:10D7C000B445F80F7D38032EAF0F631AF033D357EB +:10D7D000497953AAC479296C017C3F30B78ECE15A4 +:10D7E00003973192FBA40F78BD34A6DBA688EF47E0 +:10D7F000E2F93AA586CE539DD296ACDF8BE914F5BB +:10D80000BF1190877DA73150FD91DBCE0789401F66 +:10D810009DB3986D6ED24B4DAAB1AB06F24D4FF948 +:10D82000D1E3CB1EC94B16E2FB3C3384FD678DC7A9 +:10D830008A6E24BB16435F241206FCFECDA581F23E +:10D840006EE4F7C9D13E793DC92F1EFFF7ADC3DCA9 +:10D850001E6E667D3915A83FC232C373BF57859DC2 +:10D86000DC527E1FC553A64AFDF496695180DF073E +:10D870007BEE128DEE27EE3D5442767A4A49D62150 +:10D88000BCBD500FD7F9DE7F8D4FC0F708F6BC60E6 +:10D890003C86FCB8E7C5B8E37DC66C7B17D02A0B85 +:10D8A0003B58C238AD6CFCF80A4E48F8CECA84FA30 +:10D8B00094897679B0BE9F7EEFC5A8062D7139EAAE +:10D8C000C93E13F3BE10D7AF4615FF6E548814EF50 +:10D8D000C38FC138A438ED5F2D3F7873684F3EDAAF +:10D8E0000B1DFB15A27155F70D9E7F4279D525E3DF +:10D8F0004BBEECC99465A700B7D3224CD1FC4F4571 +:10D90000E4790168B7FB655806506F77D7BC51A81A +:10D91000574692FBEBFC97F07DA0C1E55648C869DD +:10D920004B0FA474E6C538325F3DD3719FE113728B +:10D93000AC6CA724DE9BE27A224FC881BC7A2E5FB2 +:10D94000C03E6E44FAACDEA00B390CFA83E439A376 +:10D95000B8B1BC9D5C5E83FED84A7A05E5BFC4328F +:10D96000FAA395EB8F0942EEAFEE107252C8334B1B +:10D970002F3185CBE7920A213785FCCD15F0E81DC4 +:10D980001C9E5CD40F90EAAD5C1E538CD9E88C5E73 +:10D99000CAEDEA25B9F715BFC1CF232BB81C1BFB75 +:10D9A0004BA5B1DAC8D005EC15E35CEF4834EFECD9 +:10D9B000DE81F26665B946665DD9CEF58B303E6C88 +:10D9C00045BD4156C48AFA014906BC3E11709EA36A +:10D9D0005B76DD840A6E8F9F51A21ADACD672271C1 +:10D9E0008DF693022F2D0535DFC679FEABB0CF59EA +:10D9F0005D2DDDBF20F90E226642179B8774FB6206 +:10DA00009BDC88F66599D94B268C05E7BD81208F74 +:10DA10004BED1AD88CEB04EC7F1DC7355A972C9A26 +:10DA200044FB439919068E9F8E4EA2F199BED9C828 +:10DA3000B4BF2BE0A3F61336A5E81CBCA715F6313E +:10DA4000C5B86F4A338C1F981091232807E44D46C0 +:10DA50000BAE8716C97808E3A1CDC91AC977B0FB08 +:10DA600069DDA7C66A7B909F5808EC3DC0E7DFC41C +:10DA7000FE8AF603608F33FFFE85688F5BF3D30465 +:10DA80009DCAC230BF8ACCFC2664CDEFCF3E31BFE9 +:10DA90004DB1469A5FD785CDAF4C9497859EF0499E +:10DAA00086BD1FF33ADA57A65C3ADE2B365A9F8BB7 +:10DAB000123F423BC318CA072D889F026CCFF8F96A +:10DAC000E3103BFADC71408F8AF7CFCC294CC4EDD0 +:10DAD00065E93FE1E7F165E9998783C58E7820CB59 +:10DAE00005F0A8C2D7EBA3158C1E344F04B8DD8D0A +:10DAF000D7FD30DEC7F7986C8E81FEFC8F71FBD8A6 +:10DB0000D7AB98936C7199BEC8478E389FB7FD6CA0 +:10DB1000F8FDA4D847967571FA4E08AFFAB6CBE671 +:10DB2000CF5F11E0F7DA5604B8DF6942579CF681FF +:10DB3000BBAC77EE42728AEF1F791EF68FA9ABD08D +:10DB4000AE6EEB4ECEB3ED1FFF26FC4ED9FBC832B6 +:10DB5000BCE20D2848A54ED3FEDA84FD28DE7B49C1 +:10DB6000998D8577211F98B12AB4936B2ABE7DB415 +:10DB7000065393C39BC3A224D7ADF487627F6DC9BC +:10DB80007B26BE67D3D98AFF8C1C4A8CBA2E84F2BE +:10DB90003A44712873DE5642B110BE4BC0F3C7033E +:10DBA000FC3CD0D52FD37BF3AEB446FB33CBFFE5A3 +:10DBB0003AB625FBF78D8E0770FC379C7EB3C1DF2C +:10DBC0008D783046FBF632E13FE94DCBE4374885AE +:10DBD0006205767CE704B97F47ADD0E89E5CFB54D4 +:10DBE000E7EF59FD2DC0DF91FBAB804F4973F8B6CD +:10DBF000A27E05BDA85C3283E4A7DAC7BFAB5D8C0B +:10DC0000BFEF3132DCEF07902F3E70FA0B2DB801D9 +:10DC10004E2FD67B41D0DFF26B791FE4FCE24FB987 +:10DC2000E8DEFE96AE18E9B37695FBB75687845FBB +:10DC300061E7F5F3F0BD8671E857807E9BBF98766B +:10DC4000F8155A546319FAADDBA7737E4F15C8C493 +:10DC5000EFD9F204F146FE17180FFD4DCD2C15A398 +:10DC6000FD3CF482F2694F2BC767D9069667C767F8 +:10DC70004190DB47E3043EB3F9E1A300975FBB2685 +:10DC8000DFB41597CB2E84BFCAEE17E1F2B126C2DE +:10DC9000E1B7F8B8BDEDF837515FB45FA245B87F82 +:10DCA000BF7729CEAB65B3467AD2C23FAD38FB3BD6 +:10DCB0005445DC9E505A055FE1EFF7140F4B974F28 +:10DCC000051127EF0FCF4F29E1077EB2EF5739F14A +:10DCD0008A91ED51CBEECCB62BCFA2BE44BB560100 +:10DCE000C3A93263675AFAB2454AFE96DECDE9D13E +:10DCF0000CEE1F48115D5D17FB697E8F2ABDDE4A61 +:10DD00001256263F2F177C784AD879CAF6CBF9FBF2 +:10DD1000361BB87C52774AE7E3C3AB83E7E0C333F3 +:10DD2000965C7EBF984547919DCFE56D35DFF7073F +:10DD3000523C1FD8A4113F06DE2FA57AD9FE99F6D2 +:10DD40001CCE67816D1AC5EDE09FC33F23FC329660 +:10DD50001F66887F26CBFF32E897C9F2D7FCC37EC7 +:10DD600019E15703BC931F66F74C2382FBA08CBFBD +:10DD7000E5FFB93FA63EF877F8635896BF25DBBFAD +:10DD800092EDAFB1FC2BF867F7DB64E36B2CC69127 +:10DD9000BAD0DFF27C7036B43FB146A678F484F096 +:10DDA000037ECE5FB9D09C03FC9556083E6580FF8C +:10DDB0004E88DACFF77DD63A53987ADC2ECF87E1BA +:10DDC000C38782E790E3CF083E3CB059AC2B117F6C +:10DDD000FBE8634F78F01EF623422E0FEA6BD4D394 +:10DDE00036BDEC473D1DBC003D7D8171359DD58C18 +:10DDF000E69B2BE61D14F3CE15F30E8AF9768A778F +:10DE00000183739CFBEFCB0E66EDC745FC4FA72744 +:10DE10001ABA1ED7D71C99E2362F3FEAACB7A8F83A +:10DE200085D00D0062EE4C59DC6312EDFCACE0468F +:10DE3000A46FB5427EC3D9679CED32F08BFA3A8766 +:10DE4000EB33EF9FA75E88FBD7B2E19FEF710F0F17 +:10DE50007F385AF0D95006FEABC2CE7A4B97BF50EE +:10DE600070F370F017B1D14BAB32F05F5BEE3E3721 +:10DE70005C0687FF9FABCF53AF7478F86F583402BE +:10DE8000FCE57D8BF0BECACD4BCFD3AFA0EB6DB51B +:10DE9000E7AEF7F9FAEC71CC61E3F00F34C66A3102 +:10DEA0007E6CAAEBCFE125FEA1FDDC2FC9E21D8F20 +:10DEB00001668F53F4E6723D7AB2416751DBEFFCA5 +:10DEC00075764C5D88764F6E726E0BA62B3B46B115 +:10DED000E8307006DF9FC8A2D3ECE3A5B87E9AD9DC +:10DEE0004F4671F0FD8BA9FC648387FAC7F1713F3F +:10DEF00037B47FDF08FD8F3D4FFF45546E3FDFC6CF +:10DF0000386BEB7CDB95FBEC6BA8DF9B8B3403ED74 +:10DF10000B2BBE3B7B5DAA451A8FBF0E2D880EDEF4 +:10DF2000FB017BECE25CBE6F5431AE1ADF05DFEF24 +:10DF300032F96FF838EB35C956DC603C6CC7EF94AA +:10DF40005C6EC778520AFF3D22254EBFE369952FCC +:10DF500014FD374911FA5D5F739C46FCBBE50AA7C7 +:10DF6000FD788DA8372B57EC43C5EFA7A9FE9F1C62 +:10DF7000C57DB46AC5038414473CC035B831E7F1A8 +:10DF800004748FC6C2CB48F59BAE6024E79B0A5849 +:10DF90006A73F185F73F25D7A074F25E8D3B352E6D +:10DFA000D2E81EBC35DF2699F76BDECBF759451E4C +:10DFB0001ED703F64F94EE0D499E9475EE82F7C27C +:10DFC0002E12706E2963FBE4CB287EE5B09BEE4FEA +:10DFD000D485712F65166A14375F1AE6F1922DDB2E +:10DFE0009989BF7BD0D2EC37F17DA1964009FD5EC7 +:10DFF00049CB877CDC96CF19E46766D1A8111A9DBE +:10E00000B92F81EDF2B1DD54516FB94EF15F635913 +:10E010005F0EEA2DABFF21F1F3FA85FD7E4D499BA2 +:10E02000427113EF306F04F9AF29AFCE8DA1BDF56A +:10E03000C919E5CCF6BE14FE8E9FFD1DDCC408E7B1 +:10E04000EDD7E6737E7A24AF8EDE3D3F20AD5F6A6A +:10E05000BFF7F07B9DAFE7FFC8E5FA8C55C53C3CA8 +:10E060002E29F12B8C936AD16503FD432D7AA307EA +:10E07000EF5BB474C8BA0478D81B5EE2C17D9BD94B +:10E0800025EB65946FA4FA26D4473A1ED66BE8DEDA +:10E090005DA2439E86F74F01918BA75A7E28F8DB3D +:10E0A000DB2573FA96B35419E0AFA7ABB2107FE744 +:10E0B000EE627D09F90F0E77DE27A3DD017A8F8DE1 +:10E0C00091509FA74DA48FE2FA208ABA3A59255F52 +:10E0D0008FD747F60ABB68A16B4EE135507F5B4A8C +:10E0E0009171BC43DDA78FA8E8C7AE92E9CC3EAFE3 +:10E0F0009FBFF3F2FD5CBE0F57C4EF677576F1FD6D +:10E10000A777A646E77CFA02E77B06FE39CEF769D9 +:10E110000FCD9C41F57BBA35FA4D4B6FD6FDE89E8D +:10E120005B8CF1BAD8DCA76764DEEB3BD2F66B867A +:10E13000FE1685D9FA47BBA83C42EFB1B10E3FFDB0 +:10E140002EF37761DDE2F9C07E392AE37ECAFC1D39 +:10E15000BF1FB76F7B8BE377105E1AC5D7F7D60664 +:10E160005686F136E5C5728CCE89053EBC7E1E6FA3 +:10E170006DD1373B2D695B70EE77283D131DF76637 +:10E180002CFEF296F7C9F83E48CD93FA541FC00F03 +:10E19000543ED80F706E9B3B7E2A6E352C7EFBC999 +:10E1A000CCD33BF077B6EF3DE0273F6FEE316E57B3 +:10E1B000EB221E66DBA15B18DEABD7EB4365F81ED6 +:10E1C00057AE31BA0CDFE752CBF9EF6578EBB532D9 +:10E1D0007C9F74E1F72B1CEFBC67A7F737E865F865 +:10E1E0005E5A7B83A70CDF45BB5FEC8F3EF5FDC518 +:10E1F000F47B8356BD7E210F07E757EF8B246C7AA3 +:10E20000C29FC7F107FAC6F17BB83B04BEEE1FE11F +:10E2100077DCAD7256D57B14FD207B1FD474B4DF40 +:10E22000E74EAE223EE9ECD074E4C79ECEFF6EBD51 +:10E230001DE5D62F5DE40BEC797046E12ADBBC2CA2 +:10E240003E1E324FA16FF78F351F92286E74EFD5A7 +:10E250001817B53FC77C8847AA74F33C0A28DC47E7 +:10E26000B36F5F8DEF16EC47C15D08DBACDCB557D3 +:10E27000E3BE7A7F9E792BBE173BCAFD60DBE19936 +:10E28000902F337F8BE7ECD346B1F4025863FB8BBE +:10E2900079FD8B467DB485EA4FE67963D477AFC6C6 +:10E2A00038ABBD623EBE6E8DAFDFEE443EAED3F600 +:10E2B000C9A5E3F1778BFE2FB8D79FB5008000008A +:10E2C0001F8B080000000000000BED7D0B7854D57B +:10E2D000B9E8DA7BF6BC924998994C92C97B26241E +:10E2E0001030C1490869403C4E1E60784807440D13 +:10E2F0001675781A2090407D40C53240848001A375 +:10E300008D881CB413625AEAABA1B58A88ED086AFD +:10E31000638F9E13A945AD940E9143232A466B95B6 +:10E320009E63F5FEFFBFD6CEEC992480B7F77EDF63 +:10E33000FDEE77D2CF6ED67BAD7FFDEFF5AF35BD6D +:10E34000C5FD4E6665ECBDD695DDA634C6E225C694 +:10E35000D824F82FF0DD1A6F2163BD984E67CCD01A +:10E360003AAB2600E98AA2BC87E69732B6A347EF0C +:10E370003142D18EEEFC9B19A43F6F315819D4ED78 +:10E38000C80A3B7D50EF1BFCBB2AF2DDBEC199DF02 +:10E39000A267AC09BFF991FCF80267FE93058CFEF9 +:10E3A000BE81FFF4D6E874871476320F63D7C3F8C2 +:10E3B0000ACC6FA73EBC1BD353ADA3793A21EC9492 +:10E3C00060FE65D61C9E4EE6F3652C95E6BF338D48 +:10E3D000A7B35BED34FFD87974E83DE99EC24B9852 +:10E3E00087A8F7BFBB8EE1E070A9E3FF7FDCFE46A4 +:10E3F0008FE5E2ED1FB10272255FA01FF7A5F5F3CF +:10E40000CFE2E3FFB4FFBFDBFE7A6B2EEDF3C5F185 +:10E4100001FE6F02632364E6EF827D6FF1FCC2B4FC +:10E4200040C3777E9324533FE1118CBE8C75315FDE +:10E4300002F0B36DCF99FC50BF737D8FC9AB63AC55 +:10E4400039D8649F0EFC6B67B3CE23B9182B289A7A +:10E45000F3BB5C4837B5C95606E9A6AFDEEFCE750B +:10E46000C0B75CB66E82F40EEB2F287D4F8BEC416B +:10E47000D6D8E9906B8230EE3D8E39718B2C91F1BC +:10E480003BCB211FC769EB752ED5CC6BA7C46ABBEC +:10E4900020CDD633E6857EB667E6EEDBEE8E943F82 +:10E4A0009E24D1BA76EEF8457339CCA3C32AD39A09 +:10E4B0005F9E38B5FB2A9CA7557619A1FECBD6DE08 +:10E4C000E69138CF99B2C708F31A25D2F933150F60 +:10E4D00024D9686C04FD275A593004F53B9AAFAD36 +:10E4E00034437A4B0D704FA89058DEB506F9B6CD7F +:10E4F0006A613A5C488B9DB114C8377118BF54B833 +:10E50000B0FB2AA8DFE984F1A07C0BF36DC7FE0302 +:10E510006D32EB74519584E2321A82FEA6FE1C160F +:10E520008B72A19C05717ECA89691FB0718CAD493F +:10E530007213FC1DE105335922CCA365CEF491D0B2 +:10E54000A8A55C613AE827C9A7F4864D917DB5D5A9 +:10E55000405AB3CF163DF362BF962B0DC1007495A0 +:10E56000C834F5719C98B40A474BA1293F4FD3AFEB +:10E5700075B2352AAD30EF7FDCED26BC988E8B6806 +:10E580007A5066B80F1DAFB0C7D8E5B0EE2E85162D +:10E59000B7C361084AB0FE263D8767E07E25D809EB +:10E5A000E90F3778263701DEB2D687086ECBB16F18 +:10E5B000584FFDFE9EE93658E7CE5299EA6F6D92AC +:10E5C00083A3512EC27F76845F8225D8E9A60910E5 +:10E5D000BCEE497006B743D981A70C940EE45B8268 +:10E5E000F990DEC6BCB90CF0B3FBE9E5AD15D0CFB0 +:10E5F0009A3774246F9B764E7DE77182BFCF391BAB +:10E60000F079BFDE5380F2DB6B776D3383AC3B2058 +:10E610004B5C7E43162B87D5B51B843C3FFB5A755C +:10E620001E8CA7CA77F6D936948FB84C5ECEB657F3 +:10E63000C0161EA854D3E7A77927637F4CC853C6DA +:10E640006458E30183DAFE97D3EA3269BC193A1BB6 +:10E65000E0C703FA6D96B4C87816DBB4D702305E13 +:10E660009789DD4B706B6356849BDC16881F0769A6 +:10E67000638B3CFE6A5887312427CD443CDB2197CD +:10E6800021FCEEB18EAD26F84FEC29290478F4FE7A +:10E69000CA0253836F82A516E9A963BFAEE627308D +:10E6A000EFB32D255D6BA1DD594B7D0AD2ED138AA9 +:10E6B000A716E1F78465694A00C6B9294947740479 +:10E6C0001CC089749F27B7A6A39E50747F6B7313D9 +:10E6D000CC3B4FACA3F647BB9A03D8AFB56B16D271 +:10E6E000F58E4C990590CE1D6B4C7ADC9F02000094 +:10E6F000EC57B1AEA3C68DF89D2FB34D1A3EB6436D +:10E70000926A91FFE425DB098FF2EEB14B4C8387CF +:10E710006D7699E6D1E111F8E360843F4C81F940D0 +:10E720007FFAC7CA3C8877462B2BC175EB331BBDDC +:10E730005E0D1F51BF1D76CECF9813605B26581A11 +:10E74000CC33B9FCF85D48574D06DF1EC2B7EB4C21 +:10E750006C1FD2C5D38B24064D3EB4723C536E76EB +:10E7600011FDA4341B033AA8AFC86C06D6BF27938B +:10E770005937A2686D369ED28D23BE46F53BFD2CDF +:10E7800088EB4869914F19213F39FCE906A4E7D489 +:10E79000363964C074AD81B934F4947AE2837FE091 +:10E7A0003C5299261FDA3F99E89B6583C91A33C307 +:10E7B000CC5FC8F39D30FF7831FFF816396084765E +:10E7C0004F6DE4F3DCBA8E0571FE506E5A6BE7D5DF +:10E7D00019D437083ED3FB2BF624C2C9606AE9C1BD +:10E7E000750CC0F5360E5743F3D6D5B80E4321CC81 +:10E7F00043C3476E494AA17DC8645D121B0970611D +:10E80000ACA64BCC4781A22CDC1358FA475DBF372E +:10E810002FB4203C1B6B7DF0455D13C74F62BC5C81 +:10E82000DD8F061BD74762FBC916FDA8E94744BB2D +:10E83000032FDB6714C23C1FBD2DB758C708FE7EEF +:10E84000B51DF6EFC076302F87D5E41D03F34F4892 +:10E85000E2FD1F886BACF30D810F762127EE798DD9 +:10E86000052480C7814DAE150B107EBB64B60FBA70 +:10E870007AA98DEF636F29E7C7BD5E0EDF4EE0CF4B +:10E8800088079D059EDF13DDD5E779368A69046028 +:10E89000BE36FC0788E04E8F8FA13E657330AF19FE +:10E8A000E0DC99E9E3F0507A18F21D067B0C14CBFA +:10E8B0002CA2BEAD34B01AF1A3D3D463029102747A +:10E8C000E4998EF2A2739B64DD47C008F376022EB2 +:10E8D0005601174B396F676D96681CEC17F9296D57 +:10E8E0003D00CAE278F64E09CBDBF837C917BDAF59 +:10E8F000C48F10EF9703DE48283FA2F17207C207CA +:10E9000074807485D518A053C96EA2FA9D4B002E51 +:10E9100050DFE28DE92FAEA77619F6B7DDC8F60114 +:10E920007E66AD8DEE2FAD39B512F12E2306CF7F69 +:10E9300065B3D17EA575EF9923C33C772E66B20EE1 +:10E94000C765016F9D9DF6E70984C7D61499FA4DF6 +:10E9500077D82B0D89A837C824DFF48B0BF7A11CBF +:10E9600056F757EFF0B19242AC67AD1C05F59EB07B +:10E97000F3FD833D22F991DEDD7F3BD25B5A5DF4EE +:10E98000FC98765EBA8BA7F5A64460C8F08D59CF87 +:10E990005ABB5BF04F8E17287B905E41EE305F11C3 +:10E9A000D04782E77705389F318A07F50123C02CCD +:10E9B00013E6A87F520EA4427F46F822DFD07729C3 +:10E9C00081D18924EEBC087F7DE6D7462DBCF7FFB8 +:10E9D0006A72BA0BF9AF9E111FD5097D4E85C335FA +:10E9E0007603CDE31AC1FF2A9FCBACB2C0583BB32C +:10E9F00018E93D8C1D24FAB943CCBD490EEF8E4772 +:10EA00007EF04723437E50D21DB8F1DF209DE060A9 +:10EA1000565CFE56A5D164D3E863D04550765EFCC3 +:10EA2000ABEA0583F2774C2D40BEA6A6BB4225710A +:10EA3000A85FEA43B22A37BDC80E347239609A8C97 +:10EA400072D77A9902BC65E10365DBF4575E40CE6C +:10EA5000062E23395B9CA9A6474FF302303B4CD6C8 +:10EA6000CBAC4044F10F7CD36DCA82FE4A4539AB32 +:10EA70007A0DE547AC1C2ED2F58C3541FD5DD6C430 +:10EA80006DD557229D79E2502E5E74DD8A270EE9FE +:10EA9000B92364E7E3D9D934F3848B8F07F0EA42D2 +:10EAA000BAEBD8719CF87E42D0E00D0EC1C79C48ED +:10EAB0008FB0AFADF15EBB7DC2C5F1C129F0E1B849 +:10EAC0008DF3BF221D6BEC1AA2DF7176CE3F8B3A1D +:10EAD0000C8DA89F573E6721BAEFDD71FD63C80F0B +:10EAE0002B47173E1A8FFAF5BB37E8910F14DA154A +:10EAF0002EA79FF78FB61253F3A4237CD0BEA5F5A3 +:10EB0000FF6A3E541A0C1F3DAE6B88FC3CBB59D0CB +:10EB10008FE7C623A5340FB61D0A9FDA04FC7C08D4 +:10EB2000FFC89576C1CF3700C210B185C95EC94B09 +:10EB3000F67991C9263AFD01FC1A1C32F30E614F99 +:10EB400029E733983729926EB77A69BECAF96CCA39 +:10EB50004F547C57217CF73C5B3E0BD835DB23B30D +:10EB60003A943FA923BC157680D3E7CDA505C8C745 +:10EB700063E7A57E9B36B826A30E3C9016FB135B7D +:10EB8000EFB6111CEE7F4664412545F114E03A6270 +:10EB9000F1AFA49411DC148555235FF8B6F8AC7B73 +:10EBA00039EE14F2615D0BE733BA135B3F45B90FE1 +:10EBB000769582FCC0CC41C466C9FE5B707D8683BD +:10EBC000BE503CC05F67F1123EAA74AAD2D5771F2F +:10EBD000F8EFE60BF65B37A8DFE517EAF7806C5D28 +:10EBE00081426E61E0BF4C53B334FD86B8BE33D072 +:10EBF0006FE3A07E6FC77D1AB65FA19F2F7CE07C7C +:10EC0000736032EA4DA0A70C814FBFB571BD33963A +:10EC10004FEB914F9770FE9C9AC8F935CEC7887C10 +:10EC20007ADCF07CBA07150358AF12E27051703DE0 +:10EC3000F8C575407B83D547F21CE6BF13E1C232AD +:10EC40002505E5B8BA2E3447100F601F6B8343CCFF +:10EC5000D76233087A8EE15338258DFCF922D1FF33 +:10EC600030F66F74F07918337B845EC9F5FC7F56FB +:10EC7000CF2E137A5DA7D9B3BD12DA2597C9D60076 +:10EC80008BE8CD4F6DECA92139FEA0EC41BD66406B +:10EC90003F16FAB3AA8F2B329FC7CE36791FEAD719 +:10ECA0003B5BE4017D1BFDA4BD409E6698C78EE6DC +:10ECB000F1A487EDAC57C82E1FA4573B40DF86FE5A +:10ECC000ACE5B2D78CFAB73FBA1CF4EB17101E9D17 +:10ECD000856B4212F4736F39B7EF63F5DF58BD29C6 +:10ECE000564F8AD58362F59E8CC6E8F26FAF777077 +:10ECF000BDE152F50FFC1B4AEF203D08E564E0FD45 +:10ED000066B45FC96E80F4FA07DE277AE8D8312A44 +:10ED10001BF1A157EFBA19F5D75F08FFD233E2FB19 +:10ED200095E04F6AF9B3C20F757098F243A2FCB038 +:10ED3000F8C696FF5AB40B0DD3FE8868F7F230ED93 +:10ED40005F15EDBA8729FF9D287F7D98FEFF5DB492 +:10ED5000EB19A6FD31D1EEAD61DA1F17EDDE1954C6 +:10ED6000CEF9FB1F45F98998FE4F8AFA6191FFCDD4 +:10ED70000817E5771495A62F073C8C6FE7165B47BD +:10ED80007B931DE5906AC7E05ECAAADF4817A1BB66 +:10ED9000B53661DFC25F5359C43E50E939B19A05B7 +:10EDA000918E54BB43B50F76D9F8B8D6726EA7C012 +:10EDB0004E109E745C043EFF8D1DC0777F11F7C717 +:10EDC00021DE2CD1F225BB9EF8D1FE620E87C8BA97 +:10EDD00046C9EABA64C8370A3BED1BF433627D5B6F +:10EDE000A4BF459AFE3EB4737F44C745F0EA2F7630 +:10EDF00016556FB8FDFF52CCBFE322FBFC4D4C7F94 +:10EE0000C3E1EB8731F586A38BF763C61D0E7FFF49 +:10EE10001AD3DFD3A2BC4B7CDF13FAFCC5F0261655 +:10EE2000FF3AD00F07F2EFABFB366F43BF8DFEBC4E +:10EE30009B79C7630BCEFFF7D8797F7AC5C7AC54EF +:10EE40009E47E53D362BCD476768F5144A1CCFB485 +:10EE500076A8B585F35707F3907F40C52B3BB34A9F +:10EE60004C17C1AB61E5F860BD6355D210FAC1C55E +:10EE7000FC651DA01791FC9A6C223BCFA130671254 +:10EE8000C25237D3837EE41E2BC7A38BF94D2FE6E6 +:10EE900027BD987FF49EA404C799CB18FA3F3CC8BD +:10EEA000A7A7FEBCF0811A907B6BDED491DD75675D +:10EEB0006BC0B88C0D969F8A69E4E426D037EFDDED +:10EEC00000FDE747F4C4FB3640FFB0772D0AA7E703 +:10EED0008EC9CE76A4E7E7859FFEA59612D2537A17 +:10EEE0003D32F9397BBB3B4D28673F2F95698B0A33 +:10EEF000F42113FA8D7B0B650FFAE79A9B47EE2CF2 +:10EF0000473B3EA8901F3EA2A73AF3B57AEA286B8A +:10EF1000632596F77A2A4D884F4D5F5599900F6D6E +:10EF2000B5F69A5C85E8AFE67EFA9DE5C74CE8BF8A +:10EF3000EFF440BE2592BFA37468FF7DECBA7F69F1 +:10EF4000E5EBE810FEA0CB8EBE66AD82F92D6CB16C +:10EF5000179B5D1C7FD0FFF19E95EB65CA5A5DFE45 +:10EF600069C04B0BEA0F80470B415F477C56D61AAE +:10EF7000783E03F81544F6EBCF568E8F80820189D8 +:10EF8000989F3552AE1BBC9F6AFDD87D55F5F11692 +:10EF9000253087F491A0C23642FF2F39E6D4B8510C +:10EFA0000F11F0DFD9AD277FC3E78087E807C4F3EF +:10EFB00015FF10FA920AEF30D2F184C170DFAF0F63 +:10EFC000D0F9E091F63B9C6184FBF3FE1CEB10F062 +:10EFD00053BF3F10FDC032CD684701DCCC7239C849 +:10EFE0007974C2839C7F3B694373007476BD8BEB5D +:10EFF0007FAA5EA90F2AA4870DE8A7278C44A77AC9 +:10F00000879FE1BC15D04FF10B74D99B84FDAF6590 +:10F0100043EAA7AA7FFC745280CE8BF52FF3FD51F3 +:10F020005C9CDE557D59C1F190FE99DF2BB9910FA3 +:10F0300008BF6A649C4F90FE99458AE20B03FABCB4 +:10F04000F0BB4B8E8DDD38CEB07C65B0DDF1F7A422 +:10F0500021EC837FD64FFF2DEC13B36328BE26EC43 +:10F06000924F9336D1FEE0810297E75E8B04EDE389 +:10F0700006E0BC9AFC35B70B9C8C13E7425374FC3A +:10F08000FC68C49312F92BCD0185F6312EB0693599 +:10F09000FAD350BC22BEAEE89482E8DF877282BF0A +:10F0A000DADE5C6060210DFF73078D2CA4C1FB6567 +:10F0B000AC85D6B302F4CC90860F2EC373AA442C31 +:10F0C000D7B447FD53377F04EE6322E2C3C4C1784F +:10F0D000BAF644FB152F6BC6BBCC21F8E577D87781 +:10F0E00048DF15ED87C3F32F3704AF7819E8E62A18 +:10F0F000C95BECD09C6B33646AB03FDBF2BF18E3B2 +:10F100001F824E54B82E5A5BC5DE073EF1ACC15A81 +:10F11000A1A07DF7A844F6DDA26AD7C130743129D9 +:10F1200028911DB068DD8AF1C84F269EF618F07C44 +:10F1300074550FB7BB5375AB8BEF86EF8347D82D54 +:10F140003E915E8D7694C5EBC2F385053814B4FF0D +:10F1500048DF586C45797493C58BF6D482B9DE7755 +:10F160002580D782F9852684DB822EB397BE26A61A +:10F17000C4815DC9BE82D543FB2562B71728CC8404 +:10F18000F9A906A698E1FB5CDB6C830BE82C358EB5 +:10F1900099305DB609C6473897FB687E0B0EFFF4C1 +:10F1A0006FD8DFAD4AE82589E83B48FC60C1E1D76C +:10F1B000FE8E7EE2255E306490BFEE37705FB180D8 +:10F1C0007F515774FAF283D1E9E250747A7C7774F4 +:10F1D000FA0D544801AE2FFC43C7F0DCA7FF67F1DE +:10F1E000740EB102F4CF7FB1F369A0EDBCFC89A22B +:10F1F000763CAF7BF6EBEFFFF96E48F7BFA1233B00 +:10F20000F0D9B1209B117E4A301BE77776CFCF1E15 +:10F210007D18CFA71E4F45CF0E3BD2C7CF0357EC6B +:10F220003192DFF9DC06CFE46A908F552B0E67230D +:10F230005F3C77F0978F62F9874F1B990EC6FD50A0 +:10F24000F8675EFAE3A1337B70DCA7E38B912F7F35 +:10F25000F8D473A3104ECB9F78317B8105FB7FA23E +:10F260008CD28FFF6C1C7ECFFEECA7A31690FF2ADA +:10F27000988DF246ED67C593E6534900BFA5E72C8C +:10F280001624A658BCFAB6FDAE10E7172B9EDCDAA2 +:10F290009304FBB5627F4200BFCBF7DFFB29FF4A37 +:10F2A0006FF2EF462A5F0E902907389E49E0FAC0B8 +:10F2B0008AFDC628F88FDE1DBD1F6382D1E9A53007 +:10F2C000DE2F60BC8273F3A7BBA1BF337A2E879772 +:10F2D0001A98FF00F4D700F978EE7A4EC8DFD8F517 +:10F2E000051D5C2F6D38183DEE2165E8FA3F717001 +:10F2F000795E80274F1ABE906E1CDADFF8A4A8FF53 +:10F30000F8E303F575DCEE05324A41BEC3E9E905D1 +:10F31000F5FC9FB1DB32804E562072E446F2913FFD +:10F32000B1283BD83302E17D8383EB0D5FEA39BD21 +:10F330009EDDE01F7F1AF8C7990D8D63AA35FACEBE +:10F34000D2DDAB5F4D037CA93F905C82C3ABF9F586 +:10F350003F3B9A88FE8EB15D7AE29B67F71FDDB571 +:10F3600004F1B34BCF908F43790A967FD4F54AE2EC +:10F37000F7207FE95E5B099ECFABED6FDD7DFB98EB +:10F380006A2DBFFB96F4A7F2857A2B87C373E53D00 +:10F39000533380CE56EC963C586D45D775D75E8377 +:10F3A00034B857E7C987F23285F97425B88E5FBD46 +:10F3B0009A0EF90D2F4E28C3F5401773317FBBEC21 +:10F3C0009B51847CE951BDA793E777CB805F470AC7 +:10F3D0001E30F4C23AC20EEE4FDD7EBDA50EF538EA +:10F3E000E8EF6519DA253E267945FA1DACDF57D9D5 +:10F3F0009588FAFD077A4B33FAAB3F4868FC3DCE5F +:10F4000023F014EF9785F8BC9789F3FDBAC37A927D +:10F410004B0D9D9B13F1BCFCD9AF7592827CA05320 +:10F42000223E70EBEE68FCAA83BE9D30EED9F60456 +:10F43000EAFF6C72301BF59FB309C16C3B6F4FFC48 +:10F44000AF6EFF6FFF8EFC6E5930BA7D2C3E28C91F +:10F45000926A271768F16A30DE3045298B94D7AF5E +:10F460000539A0F10FD79F6E35A03F79D94CC30560 +:10F47000C703BC642E828799EC91156359B5AB84A0 +:10F480008A2513F47F16FF05F6D28A39AC46CDA73C +:10F490007808710EFAD713BFDDA903FC4EC7CD4320 +:10F4A0009FEECFE379FCC4C706921B67FB408180C7 +:10F4B00075AF728E9F5CAD99DF47078F26E2FC3EE9 +:10F4C000728512ED00AF4348D798B6F2F48ABEEDCC +:10F4D000E477DCD87534318CE9AE243A973BF49468 +:10F4E000649701CE1FF5FD249E0D41A7CBFBEC9543 +:10F4F000787E1DCB7F54B97A0AFF09F27E4CB23771 +:10F500002F19F5443466401EA7263516370ED19FB5 +:10F51000DAAE30D945DF05425F48D5ADA1FA3352A6 +:10F520007D97633FCECA1EAF0EE0E89CCE3C9BA108 +:10F53000CAFB3ACF1DD6912827FD06B22F9B9269B0 +:10F540009C5B19EC0BE42F52584801FC5C84F2766A +:10F550001CA5097E8BF64BC1CD3046428B31EA1C8F +:10F5600060691BA4B5EBD9AB2907F82F43799A48FA +:10F57000712A21F4B72D7F2CBAFE0A16A271EB9FD7 +:10F58000FCC6A8ED97B156A18F7B0DA81FFF4DC0FB +:10F590006746AAB706D7E510E7AFFD6FE8B9BC64C8 +:10F5A000BE7FC1F5AC10F27B89F1255A5FC3BA75F5 +:10F5B0006316831EF2C9DABBC62C4E12E7C648EFAB +:10F5C000BB258E57D52C9405F3BB51E8352B0E4B3C +:10F5D000A122482F8175A3FE30E94929907039A4F2 +:10F5E0004D2C908878F616DF977AB11EAC37A204BE +:10F5F000E117A0F11688FD58C67A685D200136A78C +:10F60000C078ABFA802740AAFBA5B21188377F05E6 +:10F61000FE8AF408FA0833DB07EF6F2C5CEBF6C6C2 +:10F62000C0590BC75C845FF4BEAC7A06E039049E17 +:10F630003D28F8FD49B03B701D117CDA48F07E7022 +:10F64000A3C4E54460F63CE4D3BBE69595E1F9D16B +:10F650007DE8874F171D95231F64EAB962C804E34C +:10F66000C48D1F485379D9269EDE90FC9BE9BB418F +:10F670002FDFA5F7A7A15F64D76CD077B9BE62462C +:10F680007D659DD3DF84FBB948E77B158F2A4F57F3 +:10F690007847115EAEE5707EA8A4714CE305F4D105 +:10F6A00054139D0DF2F9A1FE5464A1F3F8349C1398 +:10F6B000E42764F3FC847171C14D909F2A838137E4 +:10F6C00004BCD56FAA02E6B09DBE2C01BF183A75E6 +:10F6D00081FAAA9E988A4A12EA9B631B0F207EA594 +:10F6E000DE5C58B2D91D99E72E09E810F5E5BB2577 +:10F6F000E2EFF1870F8432A0DECA1A974CFEF71BA7 +:10F700004E1460FCC781642E3F4608FDF8618935C0 +:10F71000A1DDED047C974A307D7FDA1AC82F7D4643 +:10F72000227D7AE53315BA95165A3FD7A7E31BDB3E +:10F73000651CFF96021A1FF6E5963990FFACC0CB08 +:10F74000340BC757E7A6801BFB1971C4B7FA1582A3 +:10F750005B9C07E303109EB46E136B463DD9C9361C +:10F760004A586F4B32C78B2D0B582DEA43001E654C +:10F77000849D7FDFC1F8068535E939DC94389EDF4A +:10F7800084E33C98C8E7952CEB6E998D7A7F094FFE +:10F79000DBD74BDE7D448CF7F37D34B21A5C27E671 +:10F7A000E3BA601ADE03160D7CAB1A8B711EA92317 +:10F7B000F9F7F5B029A003BA7CDDA1EABF210BE27D +:10F7C000133B9826A3DCBC4DC8FB4FF4DED4F128D4 +:10F7D00047DED453FCA0233BA67E5E818C72E336C9 +:10F7E00021673FF7548D4026F1B9C53BC206DF8340 +:10F7F0007A6E27C4EEFB69B14F0DE7335850233FB3 +:10F800001A6ABF203BA1E17C7654FE471B6025A30A +:10F810003572B0EEC854ACB792F56C41BA58D9A560 +:10F8200063410DFD1E34F371BFFC9391F8D5F7B71A +:10F830008DDC87FA792CBD369CD7B100D0DE153A25 +:10F8400099EA37D41AC88FD7D0AC6BC7F39E86F32A +:10F85000065E9EC3FB6B389FC4021854A4B812E71F +:10F860001461BB4FB72CC1FD7F51A2F89D86F329CF +:10F87000BC9CB91251FF6B382F51BA57E172B0E1FD +:10F88000E097627D0ACF0FCA817CD8879920479183 +:10F89000CFF602A809CF0FEAC4395838713CFAD71D +:10F8A0000E8E24FEF7D10660A4A3A91EE9BFE7AC23 +:10F8B0006192ABE9789E8E69174FABEBC47284CF2F +:10F8C000B95A956F8414DC9F3D9E9714F4A3D57BA1 +:10F8D0005E9ACA34781281673C0B68E099B2B92706 +:10F8E00024DB50271E716FE11840B9232ABFB2DD17 +:10F8F000EB05FE94A293A3F857FCC0393067B30F11 +:10F90000CA3AC1FFECF7564FD6A679FD48FBA419B9 +:10F91000D5D05F69216F3F36C5F16F9B5086AAF243 +:10F920004CE9CFF62568D2A698B405D2459AB435ED +:10F93000A6DC1153EE8C4967F2FA378F084FD0815D +:10F940000D3921C5394301B9797346F876B0CC59E0 +:10F95000CBE6F419D5C0571795727EB4EAB0E4E14E +:10F960006E690EBF551E467AAAC51336E039427C31 +:10F97000A9E75519EAD51F94AC12D087A5EB40082A +:10F98000F94B3DB67369DA7571FDB6BEEB14B51B64 +:10F99000B6FF0299E87B7B412FD55BB9F66303EA9A +:10F9A0006BDBBEBADF877C7F96ECE27E4AE6F766C9 +:10F9B00000BEAF3A389BFC5A2A1F3D97E63D8AF3BA +:10F9C00009BC2859919E07E80EFBB544E842ADFFFB +:10F9D0005ED1E13F60DC41FC6D9F6E54A0FE9F56FE +:10F9E000FE65028EF71E5699887C393806C79D5FE2 +:10F9F000B7700CE6DFB432FF259CC2497DF8118C4C +:10FA0000C1FB7E8A6706DEEF389910CEC238CEDBA6 +:10FA10005326F17472F81184E7D9942B08BE27B3EA +:10FA2000C25932A47F90723B4FE7871FC1F4819483 +:10FA3000793C5D14CED241FB627623C1BFD3CAF9B3 +:10FA4000E07B317278790AE72B25F9DE2529B88E1B +:10FA50007A2E071F015BCB04FCF1E63DE1A73A617A +:10FA6000FD37FF209EE2533B3FBA76BA8FC3C7876C +:10FA70007A772A47798D3C54483F52E5A1BA0F095D +:10FA8000D93D2E921731F22A37D9FB614A72E45BD5 +:10FA9000EFE2DF0F535C02AE8DC52EE877FE7C8B64 +:10FAA000673BA7EF09887FF799F97AE2457C85459E +:10FAB000EC472085DB0D81146EA74E4D9EF221AEE2 +:10FAC0000BF4FB8009F771B681F4B0B6D9DEB43817 +:10FAD000077E53E440949F434FF64D5B31233ED85D +:10FAE000B6329FE20807F4FA1F71FB4085DF8DC82C +:10FAF00087347CB76D59551AF2AB36B7370DF98A92 +:10FB0000CA2799D2953CBB28C21731CDF9A1C4D3DD +:10FB10000CCA1322FD7C4FCF7CC8FFBED7CEF9DDC7 +:10FB200040BE04F98591F6979ADF66E3F351E561EB +:10FB3000EAE62E8AC74B7DC86D27BD01052BEA5F1B +:10FB4000F78FDE87705EE79C43FBD036FB27E685A8 +:10FB50008511FC5D98EF7D1CE179A3884752F10582 +:10FB6000FFD03FB7E847A9ED187FF0610AB7E34F30 +:10FB7000CBA05F815E7A9DD34BFBF021C83E3A87D4 +:10FB80004BE1E754F359F876A487FFD99FFF63FB55 +:10FB900073F29FD99F956BFF7269FC51D0E12E29BA +:10FBA000A44FE5FC91FB11207F0EC0E9D164FFA7B3 +:10FBB000299A73929BEF5A9946F12B623EF1773E58 +:10FBC000577303246F5E7E7680BF30D7607DFBE481 +:10FBD0001F4D2D18C772D2D04572E024D8951B91C5 +:10FBE0005F0A7FDF49B1EEB21FAC781DEDEBA9A92A +:10FBF0003AEEDF94383E0CE0D336CFDB770F8957EF +:10FC00003A6ED7BDA8233DBEAD38F8F0522CBFAE3A +:10FC100090CEDFCC027F00BF48CF617771BBBE2D95 +:10FC2000BF97E0D936911FADB6B97979DBBC51E405 +:10FC3000B707BC0A103F9C1747FDAAF7203EA9E56D +:10FC4000F72000CFF8B8CB64E29703E579B941DC3F +:10FC50009F08DEF527CED6E0CB27C28FF709EA4111 +:10FC60001AFFE627C26F00F23E714EC2A5E7AB78DD +:10FC700097B259C57B8E67A71F4825FF2FA823A3DE +:10FC800010EFC7A7727EAAF2DBEB9CFE71A91334BA +:10FC90007AB36AB7DF9745F8B93581E3F15E336B24 +:10FCA0003695607B57D4BDB6BD6067A07C01FBBABA +:10FCB00014FBB9059A1F84F42DA9FE5F8771DCB58A +:10FCC0002ADEFA0C88674B845DCFD647DBA1186724 +:10FCD0003390D60D4E2FF572BFF620BF01FBDA1818 +:10FCE000DD8EEB33F185FD7AC4EF87CCDC6E53E516 +:10FCF000D76E3C9783F5ED5E171F447A54EBFDF504 +:10FD0000A33819E3D267A7723AE97E7DFC08F47341 +:10FD1000ABF676ACFDBD0A9700FD36C0D8E8276E7D +:10FD20008873915FEE0A1DF79BF73F6F16F8E05D51 +:10FD30004071ED812C5714BE3C6CA4726C8FEB6A41 +:10FD4000C8636CB23D02FFDE67DC1CBF74EDCB50B4 +:10FD50006FE95F16C708FF987F19C585D6A6332CB3 +:10FD60006F880B67A3DEDAAB846FC678AAC0412325 +:10FD7000433A69400862BF817F6C40BF95AA6FA378 +:10FD80003F596BEF9F83FFEA4A227AB5AADF9F4370 +:10FD90007D5C9B8F28023CBF9E3765F5E23EC32AFF +:10FDA000F9D4A8351A3D9CA82885FCE74C7BAF0404 +:10FDB000E135B984BE2FEB683FC2653E0D1E0FD4FE +:10FDC000937BA9BFE1ECE655BBFF42F736563D13E6 +:10FDD0008D07F5117C91BE91707C0DFE68EC69D2A7 +:10FDE000CF91FEAB19DD5B4A10E9F89A9E20DA4903 +:10FDF0000DC29F937C243C15E928A1B48BA17DDD25 +:10FE0000D0C7E965D2E1F6A3687FDB6A7AE80A46E3 +:10FE100083F053AAF8A5CE73E2E1FB75685F1CF985 +:10FE200098E35565EF8279C88F5F884BAB443FD329 +:10FE30003AA7FF11A49701BF05EB22BEB3E821C981 +:10FE40008A7CE3053BF35A094EAE3C8453A5819F5F +:10FE50005FAC0DBB0B9768ECCA5FA0C301D6552DF4 +:10FE60007B1F4B453D779838D7AE542E272A4F9AA3 +:10FE7000FDA85F55C69989EFDDF7C0E87D46776438 +:10FE8000FCC5BBDC761CBF2B95EB93EB9CBEAE5444 +:10FE9000D2DF3C6548BF3F4EE571B29506571EE282 +:10FEA000DD0B71A99548CFD3D4F3AF40459E03F63F +:10FEB000BFD2C9613FCD640C25D0B958EB18E447D7 +:10FEC000B317C771FD8FCD243CA911F8B4C3CDF78A +:10FED00061C734EE2FFCBDD4E54079269B5A6FC331 +:10FEE000FCE979091EDC9F37255B16FA29D932BD5A +:10FEF000ED8C8942AAD8507812913F0A3BA3893BE6 +:10FF0000D821017FB7D397FC2EF00D607A571C0BD8 +:10FF100020FDEC8A33921E82E53C6EC1B517E5DA0E +:10FF20004C93D18AFEAC04F45FF1F65EF4ABCC34B2 +:10FF3000FDF61D5C37FAE3903F42B957ED9797B352 +:10FF40002EA413E6D17F3410EF02FCEE6133F7DF0D +:10FF500041BB00F24F681710ED427CDC4C1B9ECF7A +:10FF6000AAEBDBACEF2A26FA5E69F1207DEFAD0843 +:10FF700018B31DC897CDC5E89F7D2CC110B2C33CF6 +:10FF8000CE8A7D8679933DA7C6C5E5251A42782E8F +:10FF9000ADE29F62AE388BFBAAC263B319F607E5E8 +:10FFA000EC92380FCA459C87984F149C2270E17ED2 +:10FFB000F3993454042E80B7D5D6122D7C2C213CD5 +:10FFC000C78E85CB70F050D781F3B5270E86CB6EE8 +:10FFD000F9C00AE2DFE7E23CDC4F160327CC4A23F4 +:10FFE0007964702623BFF1937F77958979D1AFB477 +:10FFF000D4B89AFCAB75C26FCDD069077AC7397493 +:020000022000DC +:1000000022023CCF3D2E915CC073112D9FC4730E14 +:100010006DBA5EF5D3EE8FF1A70AF9B612FDBCF802 +:10002000ED8A6E079C9CE460C3C158BF75204A2EC0 +:1000300047FC589C2EF6EC7293BE1746604FC4CC1A +:100040004DB4CFE81FE3F2DE9B86FE985DCB724B8A +:10005000D05F12AF703D7149EB688AE745F98F7A3E +:1000600083EA5753E9799DB3B2D809FD64A45516C4 +:10007000E2979C3343C40FC4EA736A3DF4AB5DE876 +:100080009C610DF23FD06F263B5D94AE792D3F15FC +:10009000E5EA1AC995CAE5EAA8A8F4199D9FCE1900 +:1000A00054BFF832F4F3EB22705D2AFCE94B55FFA4 +:1000B00039EC932B669FB4E9E59A7D7269F7A99AAA +:1000C000851262F649DB6E15EC13B6C37DD2E6B33A +:1000D00036BEEE5B849C50F1D6B6BE5DC734FE865C +:1000E00011255EF73D28B75FD3937FF43F055EC2CD +:1000F0003E94A11E3823B5B20CE11D87764B21EA50 +:10010000EFAC0EF71BFDB173D06FB5C13F06E3CF67 +:10011000605FCBE60C2127B71F32D7219E2C71CA16 +:1001200051FA58A6534F69F2A3A39EB1CD28F456B5 +:100130005736F65396ABEA872E3A175F2CCE875781 +:100140005D6FF1637FBDC2CFBFDAC9EDEFD54E1E43 +:10015000E7AEA6D5F5A97110E827D6FA39EF1CA8A5 +:1001600077BFB84FE14F23FB421F342F217DCB6770 +:10017000407DEBB38F385E74772F227DE6B3DA389B +:100180008671061B059E2C16E7529F3197D0BF46FD +:10019000913EA6A607F4AC769DD0B31AFF7C37C07B +:1001A000BBEFF5240FE2FF809EF58141D5CB03A87C +:1001B00047F5758D117A95E4457EDAFF2B011FC650 +:1001C000EF6DF71DCE22BDFD0CC63B0028FB14FFD2 +:1001D000C34857812E7EBEDAA7EA51CBCF8E437932 +:1001E000DEC7381F0E1C36523C0B5302A43F9D192C +:1001F000D0D78319D76AF6EF90C4F971BD21340ABC +:10020000F5F53EA15FA969F5BC1ED378EFEB05C1FA +:10021000BFEBE3787AB5C9DF817CED5903B79BEA80 +:100220001321DF32143C383FE86B4EF5A0DC4278F6 +:1002300048E4AF4D88B253FA768F56ED14A1B74A11 +:10024000021EFD0578FED7D797427AEB273E03C5FD +:10025000F5F7097FAE0A874D1FFC2403F7A56F4011 +:100260007FE4EBDF25E6DDA677658F47FD09F536F0 +:100270003C876EE6716E0DC1F7E7A31ED750F7D528 +:10028000CD941F13E7F08914DE398AF8BB930ECBA7 +:1002900057597999BA6E159E0D420F658EFE94A13D +:1002A000F4C9860FB6F8282E8CF1F8D94982A50E2C +:1002B000AA17333ED94F655C8FA6F3C098B80AA63B +:1002C0004DEB06A7DF754A420E47E7BF877AD10498 +:1002D0009C47747FA7F581C44984AF32F18B956D3B +:1002E0000B96227E2D74F87B71BF0F3DB0B58CE567 +:1002F00046F074D28799649FB1567E0E7B5AEFBD4B +:1003000019E9D0561D322CD4C0E7EF823F2C320AB7 +:10031000FD1CF8A9969FA8E56595439F579C17EB90 +:10032000481071588C5D6B44B97F08FFE9D2D6E361 +:100330007AC7DF05FDE6F4717FF0A4BEFE97F0AE4C +:10034000657D5731C543E4AC0F11FD9FD6B310FA5C +:10035000894E3F2CF011FD99D0EFD272DEEF521D85 +:10036000D8959AF8ACE562DF961AC10E057EFBDCE3 +:10037000FE0A5D02C619ED953C18AF3A49F063B428 +:100380004F72503E88F89D3AD6B3250CFD2F6D6113 +:10039000A6728ADF0AEA3208CE8CCE2D12CB8314E5 +:1003A000C7A5C207E44A5322B45BEE0DD279456C6F +:1003B0007C04D3C63BE07EE0B9BC468F59D9BA8DE8 +:1003C000CEF907F480AED873FBAF8DD17813889245 +:1003D00093AA7CCC4D73113C55B9319CBC043D674C +:1003E000641ADF3F4EBF072482E74AD6C8CFE985AB +:1003F000BC8AD54BCEE8B87C5D6ABC9FBEE5696E11 +:100400001A6F390B8BF367AEA75C6CDFCBD3E4A814 +:10041000FDAEEF63A12BA1FF8962FE6ABDFAF52C48 +:10042000B4721CFFA23D0070E672DCC4E5387EE3C6 +:100430002E419EC7CAF158B91D2BAF530D5C3EAB80 +:10044000F8A13D1744BD65D2FAA00EF7F9D50D5EAF +:100450008A4F5A6B4A1C87F1665F9AF9378070455C +:10046000FE7FD24C7AE19D3ACFEE378124A66EE52D +:10047000F9ECCFF1E497DABC8DF3BBCD1BB9FCAC42 +:100480004FE374539BC6E5E10FD3387D1CC171F275 +:10049000F17E4D0D8D37D554AC205D4FB37E9AADB6 +:1004A000203E01DFB1009CAF16F8BECA18DA82E721 +:1004B0007147D356FED8C6E99F59A17C2AFE03F2A4 +:1004C0003FD6FB7F8A21F65398AB09EDED0293FFEF +:1004D00056C487AA51572BC83F36C5AF9A4CF1C4B2 +:1004E000CC5B9786E7C3CCBB2C8DF852A6F54CFCB1 +:1004F000603C54E757C5FAB3158CA3379DBA03FB8C +:1005000051E71B3BBFA36912B76F62E6556FF2FF5D +:1005100018AFC8C07CD6E17CD479569AFC87C32E2C +:100520009ACF0FC47CEEBAD07C14E6A7781DC59490 +:1005300010A0FB7B9178E57BB05FF66474BCB21AC7 +:10054000171D89E7E5DFA31FB35CB4C3593390637C +:100550000AC28BE3F1148BF114D2C5E6045680FA7B +:10056000F25116E7D904703CA26707911EA13BB275 +:10057000672551FF28E3741638C1FDD39289C7411E +:1005800031E67761DCE951B3D14B7CD9E58A8A1B2E +:1005900056E5EDD13F6591FE71C46CA4B846A84FF5 +:1005A000F947FE141FCC251B5813079C3B181F51FD +:1005B00085EC43BEB8A591EE7D38F17D0880D76FFC +:1005C00004FD32D623E1FC326F6324B759B9C7C4A6 +:1005D000CFF9B8BD5625D6113BBF2A9385E2C19904 +:1005E00025DA2E63AD0F79B5F03A82701C1181A720 +:1005F0000ABFD8790F5AFF6E807B9906EE266837BE +:100600008ECEFF59867D88F63176DD9729FEA3B818 +:10061000DF5FEAB99ED73FDB4472D25ED32FA13FA2 +:100620005AF523ABEB3C2A8695E32767621CE80961 +:10063000C1A762E7A5AE27769DB17050E77BB17583 +:10064000BEACF617BB5EEB30ED63D6F9BCC17712DA +:10065000E9E1240B17E1FE16A21EAB399754F9D439 +:100660006B488FF917E7578C357E87EF7FE3E5F806 +:100670009DFADD059F3BF08E5AA0E39AD741D64EF6 +:10068000BD7AC16D98F664DC758D05E4C4D42A8901 +:10069000CEA73F4FDBB413E3FCA7DEB0E0B664287F +:1006A0007F3F63D42C07967F4F12F7191B6661FCBE +:1006B000E5D45B2452AAD664427D0BDAAF7E3D9E20 +:1006C000AF5F0F048EFB01595EAD3FEAEB347E1F36 +:1006D000E86BB11FDF08394120417E5A2B89F7862C +:1006E000FCFA39346FBF1EE77DEC4AE04223B05F6D +:1006F0007F56AB46BF393ECD7893B790D7D39EEBAC +:10070000D8D339FF55EDE958BDC696CEF9B17ADE9A +:1007100088EDAF2BD296F3FBF5F6743E3F8B8BCB77 +:10072000379CD7DC22FED5EA9BC7E7554C4134BE47 +:10073000AEC0DD84BD3D6FF03BD327207FFC388108 +:10074000F436255C84EB40FA3B64A773E200EAD7F9 +:10075000011B3F6F9952E379EC4EF81ED7D3DB0FA4 +:10076000EC68A2B1BD09965029E6D9ADF223F86B29 +:1007700051F9AF9007F83E8DCA777FEB7E88F8FE7F +:1007800074BCB13112FD333DF49DC5FAE9EB6356FB +:100790003D7EE7300F7D3FA90897917D1DE1D797FA +:1007A000A723BFCEE2FCFAD5F89D249FDEC1F191CC +:1007B0007FB210E1FB001F89E18FC3F2119C5E4AFA +:1007C000E49C59E563921FF827D6DF12207E36821B +:1007D000F9AFC2F1335888D259C0CFC85E1DE0636B +:1007E000D1F432703E3446A2F39C87E213C98F796C +:1007F0006C8C447ECD17D477B08A7939FCE9F0BE91 +:1008000026C10F3AB9BA405A80F6C7D535A98BF040 +:10081000FB9080F3D5F3B7F4E0BCAE2E78F346CC72 +:10082000BF868515ACFF5DBCFA4BFA9195DEF59855 +:100830005D2815A37D55D2DD7F04DFF19859C8E30B +:10084000903DA1908CE9E905368A6B1EFF3A4F5F17 +:10085000536EA3F7748A9E096FC2F477BD9086FA2F +:10086000971FF64D49C6FE66DA3C586E9BEFA07B9B +:10087000126C2EC78F7737D411BDC7EEF734169898 +:100880007B0D7CBBDFCAD5237BAB4F1FC5F9853FF2 +:10089000EF60B814CF771AC8FE9BB8F87E1DD2253A +:1008A0000BFC4C87FCB156EC97CDCFE32F6AFDB320 +:1008B000F5789F0CF0E10E5C1FE04123EE838A1770 +:1008C0002A3E3C2BEE8907E608782AFCBC6CAE9FDA +:1008D000DB91F8373705DDEBEA9F95F47A953F1EFB +:1008E0009744FB05FC5D98B7DF0511067855ED735D +:1008F00057239C8911C0BCDFB9C94572B27AFE0D7D +:10090000D331BFDABFB507ED45663546EEBD205E93 +:100910009D3644A58F0A3C75CE95C8BFC3B4F76415 +:1009200074189FC6EF6F3B2D5C6EE3FD74ED3D1CAC +:10093000D4CFB5F5413FB92F9DF40885E2C30A44F1 +:100940007C186019ADA3D22205F13ED57326891912 +:10095000080E2C6872138984307EFB8AA06F36E201 +:1009600011A4BD3A8D3D738380BF3EBD468FFBFE13 +:10097000EE4446F7D85E905A6F22F8BC6B71097C42 +:100980002579F6B88833BBCCC94C39242FA500DAB9 +:10099000F3973D97CECFF79CFCBEC7D8351C6E733E +:1009A000E74BCC8AF8D31217CC77D3B8DF7CA3BE41 +:1009B000C305FB7BC37C6EEFCF5D5F1A44D3FFD9C9 +:1009C0001235BECDA547A63DC7E767213CB77632B5 +:1009D0000F9E83B2BA6C592BE7DE9A2B7B4D384FB2 +:1009E00066A27314793EC783E916A91DE9EEB8140F +:1009F0006CB2D33A0C84BFC7F5BE8A649C87C99F8A +:100A000085FEAFCAF3F12C343EC2D72A85BCC8029A +:100A10007CF1515CB6A4281A7E11CB67D0C181F35A +:100A2000491B4807189667E03F699C30C13941D59A +:100A30003F84FD9222EA5F11B62DA27DB170FACEFD +:100A4000826C3C977A2B3D97C715D6FEF61DCC9746 +:100A50005C1C4F8E7FCCCA709EC7A5A1CF57DE4DC0 +:100A6000E7F2EC953FDD9A85F6D9F1045F16F9338C +:100A7000517E407EDE5C634886F18EA7F929FFB87F +:100A8000B80F82F54F61DAE6CBB2517DAEC7617D1A +:100A9000F4831FCFF26769DFFF396E56DB8DCEC45A +:100AA0007647925D99E8D7FADDBC5409CF2DFA84D8 +:100AB000BCC82B3092BF5F6D9757BBB507C707FD0A +:100AC0009EBD8F3C31868FA35B22A16478FE7D059D +:100AD000FA4330AE13EC368CDFDC69F034EB509F18 +:100AE000AF0E0ABF67345F1E88B3FD28A047F931F7 +:100AF000CFE4A976D04D742637A744F8EFDB825EA9 +:100B00001F52F982E0D30FDD3A82FC1C6F2D88E181 +:100B1000E313B87E70B55FF06D1FE7DBF8A7E58BD8 +:100B200057CFDFDA83FB162BF7AAF24736E17AAF0D +:100B3000F6F37DAF663E2AAFF943D34C142FD7327C +:100B4000D7907251E57F9E10E7FBD30B39DF2EE97A +:100B5000F61CC5F4CC52958F733E3FA3C04D72E096 +:100B6000DD5BFF83D2AF5E215139F0D5AC8CE4A1BF +:100B7000F83F5FDFEC3C1BD123F09D6CACF7D080DD +:100B8000DC0F5D92DC95E6BFCAED9198FD8BD80D28 +:100B90005CCE46E42B8FBBCCB2C814E70C7AA234EF +:100BA000949C55F7F30F113D24DA9EB8443D6060E4 +:100BB0001E8CFBE33254F2649215EDC74CD1BECCCF +:100BC000C402F1A81FCC15F695B077403FA8CED04F +:100BD000D8394EB473D0FE2EF72CB7E9869F7773C1 +:100BE000AAB706E1394567F1205FFBEC2DFE3EE533 +:100BF00034EFBC29788E399DF9EFD1DEF31D0DFA63 +:100C0000BBA2910B638226B04123E9CBF65BA3D252 +:100C1000455DCEA8FA971F744595178350D1968FDE +:100C2000EFF644A527F49447D5FFCE3BDEA8F4C4E5 +:100C3000704D54FD2BFA7C51E9B1CC2FE3A2AFECFF +:100C4000AF8D6AF7190BDAE97DA880B7A72085EE8A +:100C500063D3DF55E7FD51ED8BC4BDD40AB62CAA92 +:100C60003D7B86DFD36F84FFE1FE8D8DB9973F4AD0 +:100C7000BC9B7AFD5C7DD47DFE51787F3511BFD160 +:100C8000F563EFA1AECF487090DD5FCA4A51DE0E2A +:100C9000DA1FC6EF7557ED67C1A01BD74375D9D8CA +:100CA00087F9BB80B1EB52EFA932DD930AD6FB9BEB +:100CB0004B62F8E485D119BD9F6657F47EC6174490 +:100CC000EF6782277A3F479447EFA7CD1BBD9F4927 +:100CD00035D1FB99EC8BDECFD4DAE8FD4CF347EF4E +:100CE00067465DF47E663546EF63CEDAE8FD72074F +:100CF000EAA2CA47363746E3A3D8CFFCD6B551EDB2 +:100D0000D4FD0CC0FF2EB49F5596FB65B4AB6B1E93 +:100D10008B7EB7E152F7F5B90C71BF58ECEBA5DE4D +:100D20002F06BEF722D26915F335D9B9FE1365EF48 +:100D3000FC4EC88BA369D754E3D319F81765FF8C11 +:100D4000D94AF68FAAEFA0398C7431838588CFC732 +:100D5000EAF1B391DFEB90EFF7672B905EA50B6D97 +:100D600041FDE18BB4374F4A3AE2D76FE27CEE881F +:100D7000BB9FDABF1AFF34F57FE4027C19CF0D2E3A +:100D8000950F0EF88F6635921F47F5E70CEBC7718C +:100D90006545F81B31CF00F1B7AAB5553EBC37FD0C +:100DA000A59EC75FF64FE3E75A55EB2A287FC04E52 +:100DB0003273F959657267A1BE58596394F0DCAD7E +:100DC000D2B29AFC2A55AFEBE97EE3B1765EFFD84A +:100DD00007B94467A0E792FFEDD9AF75DE00FA9935 +:100DE00093F939D1B162CF8946AC77DD688AB3AB6C +:100DF00012F1FC4754796EE3E31D4BD079715EC765 +:100E000024FE3EC331372F3FB6C0A5C6D971FFF5CA +:100E10004A16753E75A8D1CACFA772383CFA6F67DB +:100E20002E118747F6F3218B1A67778AE2DDFA27BE +:100E300032FE7E27E3718687DA6C64FF4C11EF2B5C +:100E40001C527CD5369C5721BF7F7E48C4DF1D17BE +:100E5000FB89FE6D8AB3683546BD7B7CA8A588F406 +:100E6000EA583947FE70846BAB59D843AE8D68B7EA +:100E70001D5AEFA27348424B8D1E7B88759D588387 +:100E8000F56BB95E7CCCD675FA0184C3BCB11ED8B3 +:100E9000C901BC786BDA4F3F38E642BB682B9D6FC7 +:100EA00055CFE5EF35D4582B4EFD02F2A55A8E37BB +:100EB0006D6EA955C7E3894665021EA48FE4FB54F5 +:100EC000E3EE3423BD5509BFF0EF06ECF7687A3A3C +:100ED0009A76F7DE3543D0D1805EC45AE9FB4FD015 +:100EE000CFC4CC09483FEDD45EF547039D4FC27C8B +:100EF000757D6FD9383E543F6F247C20BCD6E817EF +:100F0000C3D1910A97AA8F020A76F149025FBFCA3C +:100F100057BA93FDD33235E71035F6A0D94AFEA271 +:100F2000A1F58463C3C069109F99369AFC3C557340 +:100F30002B685D535880BED35850B930BF19D6EFD7 +:100F400072736694DF659C1EF90CC0E996CC098328 +:100F5000F98CAA870DC025D63EBA54FFCB807E758A +:100F600031BD7068784D15EF60BC6BE5EF60C04433 +:100F700066A6A5E0FAF9DFBBCD9C3EAA81EF201F53 +:100F80009921E4122BE4FA8207FE87F3FB1BB3F8E6 +:100F90004DE8B7CA8BD6232AC57B17D54CF35E9094 +:100FA0005B63378A77322A63CA63E1A1AE37564E54 +:100FB000A9F65D2A0B10DF1D6EFDF7670A79E66260 +:100FC000A3BF81729055A4A7F4FC41477EE85792D5 +:100FD0006F587C3FE0EFE81F8F257FCF2B29DFBBC9 +:100FE000ED4D4C3F3A8AEC8057D36E7D0CCB47FDDC +:100FF0002B2F57E5DDBF664A227E4F5A827EAE8296 +:10100000D2776F74C37C5E36B39B30ED64756DB37D +:10101000611C67616EC966E4070646F5665CBE72D0 +:10102000BCF69CF709D1CF0C112F9E854FCB96D0E3 +:101030005741BF439633A858A15F83B86797A1B0C3 +:1010400026237C0DCE568B15E11BC7FB7DBDF8ED2D +:1010500012ECB73A97A72FF3C49F1A89F391249AF9 +:10106000CF65055208DF7BAEB6F3F299253F4BC73B +:10107000F8C8EA4AB5FE351F60FD6AF10E6AA2D7CC +:10108000AF1F83F426FC1E4715BE1FAF649AC84EDF +:101090007DCE52A1C7F735AEF7713FD4ACF28D12B9 +:1010A000CA89EBFDDE52EDBDB59733F9FB6673CB14 +:1010B00079BDB9BE05FAC59AF55FEFEDA7F743AF65 +:1010C000AF3DA5207F793B868E67E33FE4081DFB9B +:1010D000F01FD0FF9B378D267BB06ABE9BE8F25A8B +:1010E000E6A5EF75CC4F7CAD96B552FA46D645DFF6 +:1010F000F9AC87D3EFA901FACD71E412FD1ED7D266 +:101100006F4FFC0FF59C6F44D3ED707C0CE8FC44F2 +:1011100066F2F074361CFFAEAA5DBD778D7B307F22 +:1011200052EDDC081FEF223EF46DFDC1EA7A607DCE +:101130009FE1FCC04E3A4C71DD2017D0FF0DF3FE4D +:10114000EB50FCE9C810FC49AB17FDD3FAD0307A5C +:10115000D005CE0BE3B3709E97785E187B1E3935B1 +:10116000D97B9F4B139FD7F08EC9E4BA1CD33E9610 +:101170008BE7F5C9153F7543FF0DC28F15DFC3BC63 +:10118000ED90FF88883FFF91DB45FD3A0D3CAE01B5 +:10119000DF7B2BB6E0B97D0FE929FDC9A0B7B822E6 +:1011A000E7ED8F2440BB126CC7E97AA0BD8935C535 +:1011B00069DA577E8FF3DF2F7618E89D962F6C1231 +:1011C000F9E1BE98672139DABBD3407162230D9CE7 +:1011D0001E1DEA7D12B685FA1B97C5FD4D4C3AE2FD +:1011E000442750806DA7AF1A5FD82BEE9B7D61F32B +:1011F000DC48FDEE4891B0DFC52DF9B370DCC52D9C +:10120000996EBEA9BCFEA82C176FE7F27EDA8DEBB3 +:101210009A6DF1707DCC5F8C7E3FA3AE74BA09E10C +:10122000A95BDFDF0DED576659ACF83E5B75CE89E3 +:10123000E3F89EDA07CFE8E90DCD659DD78E08610A +:1012400033C5EBF4150DB6179605F55176C98AFD31 +:10125000D1E9955DD1E98618F9102B07AEC91AE0DE +:10126000EF1EE4EF976AAF5C2979E7125EB120C503 +:101270004B2C17FB6F3436F6B5C3FA8DF715946C0B +:10128000447C673C0E26E547EE128A23C6E8716867 +:10129000979BE59B8FED8D3985E3D0DEAACC9949EC +:1012A000F705BE78D84CBF9BF28559E2FBFB22972D +:1012B0009F6DD9BCBC6D8FD12509793BA10CE35C36 +:1012C000385D35ECE6F212FE4CFC3D32AF09F7B367 +:1012D000CDE035A461BB1FF27B3775BB6F9D89766E +:1012E0005E3DEBA17B0BED62DF1A744F1A4CF04FA1 +:1012F000779377CC4698EF0A5F1CFDEE89F20FC515 +:10130000877884610F184F229BBC56FC9D8F9507F0 +:10131000F979C6DA2CEEFFDCF67AF47D23C333B319 +:1013200003489E57FDA39ADEDDBA75EDF7E87DA769 +:10133000817718C43D885BD7CDA3FCA30F7F998428 +:10134000FD9ED9215B110FCE3C52D183BF23736B1D +:101350008BC5857EF506D6E8E1E72FD1EB6E92F8D6 +:101360007B107FD9FB7622F2F9BFA8F168D6C6447C +:10137000A26F5763A2F6BE56C75E1DBD97D7D1B206 +:10138000E6DF27C2786D736E2CC5755E652B8DA365 +:10139000F7BC45B9AAFF2BF6F29F20DFB9EA1F3A46 +:1013A000A207FC3D048CD7ACBE6F26C52F76F8E2B1 +:1013B0006C487FAE967DE25EB17701E5EF3011BFFC +:1013C00072B3AE2DA87736B44CA5FDA96BA923F84E +:1013D0008FBC368EF4888EC309782ACB3AACE5717F +:1013E000D8BE83293543F999CBB37404E78A1CEE40 +:1013F00027E9788BBF6F385537793ACACD953B646A +:101400008AA37C79CE1F8F173822F4A4BE0F8E7F5B +:101410002180DB42155FC47C963DA6A3F7E82E46EB +:1014200057C69CC934BF58FAEA08F077D763E9ACCD +:10143000BBA5240EFDE1B1F4B6B02597DE7361CDF6 +:101440009CEE0E033D909E7AE97477342B7930DD63 +:10145000B1CC3951F1CB2A9DA96995BFABE7BE2626 +:101460000FF3765AE81D018A57EFCBE2F729FAB25B +:1014700078DCABF2F735FBDF403865F98F219DE66C +:10148000306F31E299ABDF5A89E6BF45C4E3B13C26 +:101490007E3F6D97DE27137E2AFE5FBE01F9FA9626 +:1014A000BAF148EFFF89FD2523BDFBDFC37E16AFF0 +:1014B000F77FFA1243BC1B4B74BFF8FC5C19CFE7F3 +:1014C0002C6DEA3D6A1FFDFE91DEE123BC54F976E6 +:1014D0003ECCB77D88F36C4336D78FF21D3EEAE7EA +:1014E0003FB3ADEA3B28F3D09E7D74B94CEFB9AB66 +:1014F0007A98FABB496E17A3F7F34CE51C1EEE72FF +:10150000397075228D43F996727EEF3ABE34C4B0BD +:10151000DF7C2C073C59E3D4B9F0DE8BDBC34E698A +:10152000EB41FB53589E5FC0DF219499C96531A1FF +:10153000FF50267C70B7F1B48A079FB54A44A76B69 +:101540008052D796F0B877929FA55C7EAE711A5CF8 +:10155000DA778032D22AA46C5C97D79BE72813EF06 +:10156000B2308C9370117C250F8F2F635BFA5F91E3 +:10157000DD91792E3605AB304E30166E8BC5FC569C +:10158000E3FC00552679205D30FCFC4E67B9A2E2F1 +:10159000ADD5F919565914A4E781FB45B7C974EEC6 +:1015A0006648775A043FA6F8A20CC6EFBF3CE2DCBF +:1015B0004F76506CFC86230EBEA057003B55101F83 +:1015C0000D32ABC67B0F77CA3ED26BEED4B5927D9F +:1015D000F2A5CCF5A3FC6CCE6733ADBE034B61BC6A +:1015E0000CDD017A174F317B4765137D44DF03899A +:1015F0005DBF62AEB88CEA89B828952FA46C66519D +:10160000F71A1786251EBFD23CC53B40F7B9F82E06 +:101610007FAB09E7717DB6D0234C61BA77B06B120E +:10162000B3A2FFC3C93CBB752323FBD520F64B3ABD +:101630002C897B4120A034FC48FD7DAA7811EFABBA +:101640008EBBB050091987181FFFB4F356EBC73F84 +:10165000DCE3C6790DD76EAF99DFBB615B3C2EAC86 +:10166000F7AECB3F0BF12A63F30217972F3D6E8441 +:10167000DB91346EC71F31BB32F15D50F5BECF70C8 +:10168000F77A62F5F755C22F07F22E60227D88C7E0 +:10169000A3AF8AF5CBBD285DD27DE9AAC3156968E1 +:1016A0009736F80C32EA070D07B97EB0AA490E9AB0 +:1016B000A4089C73043C5CC21F27ADE7F71DCE490C +:1016C000DE347A5F7FB681A1FFA9CDCDFD556D7760 +:1016D000BBC87F7785AEF7D1BB68DF2D64D732A555 +:1016E0002B84E78BED3556358E5CDC1FB0C6611C54 +:1016F00071E47EAB350EF5BB201EB8021EB78B77AA +:10170000730316FE2E70BBF0B331718F30A59CC3EE +:10171000AC7D204E9EF7A7E2E545F3059E08D36712 +:10172000E0FE6B42A1CF6D01496ACDDAF1EF711392 +:10173000BEC5FB1C8109ADF8FEC6F0EF73ACF761C6 +:10174000B909A5B42847705BF0F7B6C4EFA6207FAF +:10175000D99A10295740EF3235A9E9E9BE29790015 +:101760001F494D5F771FC64FDD676651E369E7A7E5 +:10177000C4F4AF77511C9298EFD659D8DF83256A0D +:10178000FAF44EFCFDB3FBF4D1FD11CA8BF6985070 +:10179000C77B3F98D3DA9219916720DF9E463EA01F +:1017A000CAB5AD7F9CD97AB90BE9F05A62B2FAF3A7 +:1017B0007389FFEB1DDCFE46DF719603EFADE6D2C9 +:1017C000EF0031C545F7A4CD692EBA7F74309BDB9D +:1017D0002DB3642E87F48E8A10EA817AE6D9F786D3 +:1017E0009BE4E0611C2F2567E6ABA89F44E4A04280 +:1017F000F64B3EC853D46F4D6D22FE58ECB751D016 +:1018000030EAA8BCDEF59D387E6A8EFFD56C0D5F90 +:10181000CE6F7319B03FF57759DA96E5CA92466EE6 +:10182000BE97CDF5D5FC02F55D9139246F155BF5BA +:101830000494B76ABD5C6B9E8CEBCFCD147210E440 +:101840002BEAA7B96D7E0A25C855FCF370DDB9B542 +:101850004B0DA89FBF97ADA3F5963607CD15B8974A +:101860007532C3F7018F229F4EC6DF855C4CFABBF1 +:10187000BED66441E4DDE3FB8919FBCF2FD8D78CBA +:10188000BFE7C6AC0ABD2798DFC6F50A65DD8D4106 +:10189000AD1F64BB55A1DF6F2CD3F957939C499AB8 +:1018A000E445FACAB24FAFF12472FEFF7D0BDEE7CA +:1018B0001FFADDE7E92EBE2F4D922FF05DE403C540 +:1018C0008CF8805A9E23DE71F92C9BEB2BAE80B5F1 +:1018D00012F9D6E4CF7D0497CFB2795CDCAF957076 +:1018E0003CEA7BF9CCBB7A21AED36771D1FD17E11D +:1018F00077776C7011BF3039C2F75E8EE51ED94321 +:10190000E14B429F3EF77C2ADD5FF8618EFF1BDCD6 +:10191000B7325DF847DFC5F5DCAB887B34E147EFD4 +:10192000827AD9D75A089FB639C23FAA61F49E0974 +:10193000D9D32D9E4D5E8C7FF935FE4E12E2296C77 +:101940009313DA5B2C5210EDD152A053E493CC29BF +:10195000911CB678FA7F8FFD4F77FDDE83F5ABD40F +:10196000FBAA317A0421957A6EC4707D0186F74C0A +:10197000015B9ABE498AE817539897FCEAAADEB140 +:101980000BAF1B43D35DB289ECEEF8422FDD4FB8AD +:10199000A5409A4CF373F4303CAFC86D95882FE79F +:1019A00016CCA1FB054B5A393D2D1478C814D0D361 +:1019B000818FE6E4C40B3F4413C19BE41BAEA7C573 +:1019C00040E70CB9CD6E83F6BD40F5FD9A85ADFCC0 +:1019D0001D2C83B89F955B2AE216D9BD543E36472D +:1019E00012FD6E12FAA1FABE101F57A5B306116FB1 +:1019F000C462E4B32A5F3FA9FB2C11F9C1C2C3BA88 +:101A000010EA791793CB7BF0E809F1EDB08EE44151 +:101A1000A49FFF4A447B6BB87E2A72B8FE7E64DEC8 +:101A200017F46EE29EC31DF4FEDBAED920A1493E41 +:101A300078E8DDC544C5373587D6E3D9390AC6D934 +:101A4000B35347FAEEC0FB69C58CCE5B6EC99B43AE +:101A5000EF96D94BC796E0BC9C0A3361DCCF8D6210 +:101A60009CD8F7D354F80EBC9F56C3E169AFF18AF6 +:101A7000F7D3FAA720DDF64FE3F749867B47ED164B +:101A8000C49309FF0FBDA306748EEFA835E6D8D422 +:101A900077E8F83B6A9EE8FBA7B1EFA76D17FAD08D +:101AA0001E16DC8DF7A20305062BC27566C1AB17A7 +:101AB000D48BBA93AF5D87FBF3C9C7671EBD87E1BF +:101AC0007B81B3E7D1BDBA220BA7F7C001CFB564C4 +:101AD0009F46EB4F917B8223E9FEDF3D82DEC8A764 +:101AE0009436FCFDC0BF9EF8AD158976E05CD166EA +:101AF00050DFEFA07B80960369E25C9185A85CDCF7 +:101B00000354DF39668A8FF88BE5403EBF4FA893B8 +:101B1000881F0FDC9F13F6BDE5C5548A3F6990C34B +:101B20004FA3EA60D1F377602CEDD1EF7A5824FE11 +:101B3000CE0C534256D467CE0DDC97F33AAFD5F8AE +:101B4000259A04DFAE17F701D576F5977E3FF0A70B +:101B500039C917B81F58AC0CC081E6BF232B38D445 +:101B6000BB142A9FB66C73139CDE2FE0BFA319D160 +:101B7000F74256ED7B26EABA17897B7EEAFA17F917 +:101B80000CF43B43B1EB57DB2D2A594C76D0A2E540 +:101B9000EB67E17738BB7F5173F43DAA23222EFE19 +:101BA0000B7305DD5FBAE381D9E4FF598AF79E46DE +:101BB0006AEE770B3F98AB59A1F5B9F64B4117DFA9 +:101BC0003F934C3AA855A677AE81CDEE41D61C0086 +:101BD000AEF01DC8966409F527177AD15361DADB98 +:101BE0009400CA97F677E2E9F775B73A5CF4BECE8F +:101BF000D62699EBEF2D5CCE40BFF4BB1E8126D9D3 +:101C00008BFDF4E6707FCD7FE508791AF3BB6B4D51 +:101C1000E29D4075BC8D4C0EE15796F8772BCAFBC0 +:101C200021EC36B5BF267DA309F591FE2C99FCC7A2 +:101C30005F18BCB5E4A7B58F62A88F34253436D7BA +:101C4000F072A2992FCCA11A2A2F96B9028B648424 +:101C5000FACBBB668A237D2787C70FC6C27B496B39 +:101C6000743AF65E5CEC3BC08B98FFE74EDDE077A4 +:101C70006BDFC9B10A79E6A1FD69D2BB8EE1EFD471 +:101C8000F66F53E87726376672B8C959FC9B6BAB81 +:101C9000A6DFC9653603C338D3FF055B0519F50018 +:101CA000800000001F8B080000000000000BE57D95 +:101CB0000B7C54D5B5F73EF3CA2499492621848478 +:101CC000403249480810C224C843411C12A0519117 +:101CD0000E0F051FD50920843C00A1B6B1C5669042 +:101CE000B7628D152B5AD40101B1050C169142B47F +:101CF00003F8A0556BBC6A2FDA969B8855810001CA +:101D0000B562AFBDDEF55F7B9FE49C0929F4DEEF91 +:101D10007E5FEFEF8BB5DBFD38FBB1D6DA6BAFD76B +:101D2000DE2344A45CA40891539CACDDAB09B13C18 +:101D300049CC687409316B758C104EC17FDFD0BF00 +:101D4000B73798F373D79BF3F3C2E67CF53673DEAF +:101D5000E2CD17A227F72F30DEF2355A38A471B53D +:101D60005F5C46E36D8F79EADE6C4ADDDE04912B21 +:101D7000C449ADBDC04AE5A1FBDDDE2DDCCE234468 +:101D8000AA10333DB2CF0CAF578861421CD37C5BA5 +:101D900023F49DE5811D6BF2D1CF7DD6121A5994A3 +:101DA0004D75F931CEBE13AE700C7D5F6915223DC5 +:101DB00099F2BE775F457DF4FAE8CF6B1B4EFDE3E9 +:101DC000BF2C94A6087F6C11FDB7B15D0EFEDF211C +:101DD0004481CA5BD12E30C83B0CB9F0201B8D3F2B +:101DE000E7449C0FEB78D8726CD76B946FDF15EBE0 +:101DF000DB44539DBFA47DABA0EF47A4044BBC04C0 +:101E000087B6BB3E98A0793BD77FE6C5FE1B01FF96 +:101E1000CB96C774F68FFF5B6BC863FCD5B488CBD9 +:101E2000295D672EAFDC10F59DF88F18E33C8568BF +:101E30006078FDD4111CE021FC3E16183E1CF3F91D +:101E4000A9BDA15C50FD5D69C17158C747E303AFEF +:101E50005AB2795AF981C142BCF4F5AC5C1BC1316C +:101E600074C4E9DB42E52FD95AE2930A85B066498A +:101E7000F8A73945282E5996A35FC73DE2B600A5BD +:101E8000DFE0EFAACEF4DB5E8DF11FF4FA8F67522C +:101E90002ABEA65911BCAD802D75E5743DE7B7D2B9 +:101EA00038A249F3E45132DF2B5AE72608E16AD21F +:101EB000FC19049F05FD2C618DC69FEFB2B48EA066 +:101EC000F23C9785E126FAD9C279285F2742730947 +:101ED0005F0EA73F9221B85D6804E52759E43CF501 +:101EE00079CCDF3B59045D3C8F3F631EF12901CB68 +:101EF000ED34AEBDD2C2B0B2DB8237A25FFB0C873D +:101F00000851BF97111D845D8C5FEE276F5DB04255 +:101F1000D63B5D568653C0127023EDE3F938BE13ED +:101F2000DE355EFFBD80E79F51902EC4B5BDFCF34A +:101F300081F72FDAE22CDA1021BEABE8F7F0BB53C1 +:101F4000135BA8FF2F4420D143703D7CE086C496EC +:101F5000C2CEFCC7D6E0F73CB41FE68A9003789A5D +:101F600027C29C8A753D980EE6D844C446F09F333C +:101F7000CDFFBE5624F765246A5F1AF335A2D981D6 +:101F8000FD25687F460CF453638B1CD008AEB54E1C +:101F9000118947DA68FE6EBE68E7EF16ECFD26266B +:101FA00062DA3792AE7A5917152F049CFCFE7E290F +:101FB0008457976C220A4127B46ECD27226EECA776 +:101FC00095EDAF307D5D62BBE3DE86540BAD77B53A +:101FD00026C79F6075F99D04FFDAFB2DBCAFA9A34E +:101FE00089C3A89F4A21E9688177C27141F34FA153 +:101FF0006D8AFDEFDC630DDF93CDED7D11CAD7BE99 +:10200000E8F6A169A5B772A228027CEC1FB618D623 +:102010005325764D008BF942BCE1C0FEA8DE66AECA +:10202000AF6D34E71708DB872D3A1C699CBA3F6E09 +:102030001CF5B2611FEEF4BA533E1EC473CBFE060C +:1020400070B7DE9218BCC0FED0D32FEBC3A35EB630 +:102050000B71A5E67F1EF44274E7C03EACB2097F67 +:102060006361D7F6EEBE1AC3FF90EBB31E41437D0A +:1020700069614878293FBCF4C2FBF190577E17DFB5 +:102080004CF44DED9CB69048327CDFDD776F782DB7 +:10209000723C87AC7FC01DEF071CD31C62B5B3A494 +:1020A000B35D9A452C77125DF6CA0AFC0EEB707A86 +:1020B000BD0ECCEF297B4858C04F7A0ADF165ADD97 +:1020C000E376118AA57619560BE335C3EADCB48CA6 +:1020D000A6F6F34CC92F2E4627F185ED76C033C303 +:1020E000BA8BE9AFAF458404F5E7B0105F45BFB4E4 +:1020F0002763695E1B624508F3A17AA151BAA6A7BE +:10210000ECC7816D5F82EF4544A3F4718C49EB3BD2 +:10211000E10DFC59F2757F11EF6F358FF98ACE3AD8 +:10212000E6B1578BB8133AE9359ED680734034C474 +:10213000305F6252E17C7A18E7D851E469DF5E9F34 +:102140001638C7FDDB64FDAC07FA6E02FF17753D5C +:10215000985FAC72137C0B79DE26B8EAFB6D8326A0 +:10216000E13BBCB499CFB9F6BB85D8A475B6CB52C8 +:1021700078FD46E1592FAF567C786CB65F64E31C5E +:102180007ADFE914893485CBE47E991F70493E4B90 +:10219000FB1FF39ABF448435FA647E8185FB5BD0D4 +:1021A0003718974DFDADFAC015B226829F6E5C9D23 +:1021B00003FE99121C0AB6948B72E26F397D830973 +:1021C000E87FF692E0D903605753061601FFC3BFBC +:1021D000295B592EE7EBD9842163C442235D0FC9E3 +:1021E00096F4A5A785D9E6F967A52878365A19BEC9 +:1021F000F1DE66BF8679EE96C2C470ABFF460D6D08 +:10220000AA93C5162FCAC716BF827C636C711EE5E0 +:1022100087FF61A2672CE5DB8A937D98EF8FB282FE +:10222000FD30CF4C6BCB3CF017F76591CC9F517FC5 +:10223000590197CFEAED4A7F3ADDF5227A05BC7A5B +:10224000DDEC0C835E757AF8A95D049DB99D74D9A7 +:1022500033DBCBF3CF52E748D69280B8DDD5997700 +:10226000A5483C51B905F0097AC7F7C47C7A66DB0A +:10227000F8BB456956EF474412D94E924A72BAEEFE +:10228000C76CDA59AE02F0218BF806200851DE2027 +:10229000AF9C6BD0CA01DF452440D59574CE47FF73 +:1022A0007E519A83FB8F3F6F63B8E6781C8C7FF773 +:1022B0006A0567C23FE03CBABDB92C91D6DB6F5DC1 +:1022C0006434E0128BB1D2314ACB7D43A83CA58760 +:1022D0006DF4BD54FE445DC94127E56D6B9AAF04B2 +:1022E0007CBD0D9ED25890F9DF6C01AC93FFA87EA7 +:1022F000F63A0FCB3BC2B6B0600AEDAF6A85E70590 +:102300007DFD53B1FED2F7EC3CFE5FEE97F2DBBAF7 +:10231000CC9AAC24FAEED8FB44975AF7FC33240E3F +:102320003AC5485AC7DA1C8728C43A3486AFE8470A +:102330000442F3B5DDFFC7909CDFBB7D319515D915 +:102340002EC61BBEB3A4D13E5CEE75007CD9EB84D7 +:1023500005F376AF9D6251C84FD7A83E6FF5348B19 +:1023600097F2790DB2DFE8F197A875FCFA6B6B393B +:10237000E4680B75D617E74EBFE48D2C2F101FC7EE +:10238000FA6BFBA7F0FAEF54746E6F18EB8FF576CB +:1023900095576A7757B0BC12CD7F74BEA3D3DDAF1B +:1023A000A95FACEBD7C2C972B54E7FCBED12DEA1EF +:1023B000BF5998FF6409798EE43EF0757A90F17107 +:1023C0000F8FA7CB3736BB77651A78D8D2963121D5 +:1023D0002A9DB536C932BF10FDF816713FF7BB0410 +:1023E000F7B336E76001F6C96A8FD0BCE86F6E16A6 +:1023F000F6A1F8438C00BDD8EE7759C0CF6D0FFA27 +:10240000512A6C49A9A59C7F98F2D47E7AB69DE7A3 +:102410007D5DB69CFF72AD5D63B946F88B71DE8D54 +:10242000CD0EAE071DC42BBE24EAE2C27934AEDB6A +:1024300026E56577DD073B9652FE0987A8C47A4AF0 +:102440001F289CC2F4B2C6A6C5D0F87F497A9BDB90 +:10245000FD6598D020C76D5670BE00BD6408C26B84 +:10246000CE8BD600F6A3CD2EE9DEB6266523BECBF5 +:10247000E9197C1AFCEECAE51116555FF27CF4509E +:10248000B9B72B3EBA3B0F9E53EB13FE10B75FA0BC +:10249000F391268DF988CF22828D52BE8CC53EB82D +:1024A00022539E3F75CE8422F0E52F63651A2A954C +:1024B000F30A1D8D0D2F63B973E108C089D221483D +:1024C00053E2A81DF1DD374E917C49ED236ADCAC67 +:1024D00072E247C40716621C82D36FB393B8FFFD44 +:1024E000C9C2EFA1F3C3161B3C0438D7B514A781AA +:1024F0005EF627A496420EA44565E2DCFBD02EF5DD +:10250000C168B8D962C71E065CDE50FA22C6CDA6E5 +:10251000F193EBCA02E027247FF13E6B9FEC086F3A +:10252000A2F926DF3596CBF76BE147E7601DD7BBF5 +:102530007CE0CFEB26FBD3E35290A65A40B77BFE5C +:10254000C3CAF86E274117E75959A53F1D7A41EFD5 +:1025500080C3023ED0BB7CE1BFDD4DDF27BF61F70A +:1025600039E9FB3382BE825C45FCCA49FA61A98223 +:102570006F698BD68A7558D3868E9E4DE3FE44F3E1 +:102580003E3A1BF43B4F8DEBB6303CD7DD4E840F0B +:10259000FE922DE1BBAED61B06DE47592D02F4DCC0 +:1025A0007E879C877E4E9FB9C513C6BE1D95D522DA +:1025B000A017B55F2ECFB18EFA19F9E17BF97B4DEB +:1025C000AEE34627AF1F9C59D6F7E67AE11CEF6FC2 +:1025D00031C8DF676C6A9F929E033DEB4CD812CAEC +:1025E000233C3E2EC203B02FCE0885FF4AB98F850B +:1025F000AD3162417FE55E1FF8AE18E973820EA827 +:102600001DF31D616B4F003DE9F8D2CBD725F9D3FF +:1026100093890E52975D58BEDB8E7D42F4B0A0A721 +:10262000DF9663A05B9DCEF797F42A859ED11DBDF2 +:10263000BF23E4B970454EC08DEFC7397DB31FA6E7 +:10264000A2431AD109F8CD44A9B7085B3088F5BC7C +:10265000D7BBA018F0889E87CE97F6ABEF0665082B +:1026600027F477DAAB219CEF03F70C64FED927C778 +:10267000A2F8176191F03F509D7D837A6D4C065D05 +:10268000741D373078CAE0EEC72BC8F1E7E60CEBD3 +:102690006CDFDD390374B2FCE868BC03EB68AF752E +:1026A000F980E7775145DF3D75434CC44A70396383 +:1026B00077ADC67E3C127FEBAB1039B73A83C5E8E5 +:1026C0007FC6F4AB5722AF1DECE15D44783853D19F +:1026D000321CF32D700687016E35CE60562A2DED23 +:1026E00054DF60FF44F0C5400F75DE0606072E3844 +:1026F0007F399F324D8EFF2B47700CC639A4B5B879 +:102700007DD81FB616FE4EB87A723F47D5BE3E60E2 +:10271000F78F3E4BF33FF06056F1329A4F59C2FBB0 +:10272000372FC0F9FC48AF62967F145C0EA975DDA7 +:102730006E09A446ACA6F95ECBF3F55464A5131D4F +:102740009FB2ABF9BAD47C6DBE3E7F6FBE909D98B0 +:10275000EEEFD698EEF98FF22F8492789FC45896B8 +:102760006DE47D54E1F4611F6E88A3AD4372CC5BD0 +:102770006A3EA43F08C8C154CE72F216E11B88BD60 +:102780009C1123F74BC62A8DF9E54CE163FD71B628 +:1027900008644254ACCC09CEC2BCFF2DFE3F8681FA +:1027A000E403656E1EB7E5FDB88DD8BA62B49CFF30 +:1027B000C5F02FC45A0BEC1853945D6ACA2907EB75 +:1027C00043B72BF9680A529ADF54E1B763FCEB4533 +:1027D000D08EFD3C5D8438BD518439BD5944B8FE6E +:1027E0003BA285F36FC717F5AD23F84F7EA47F1E7C +:1027F000EC510678DF05BC127DDC9622E9E3935E9E +:102800006C0FE87949F43A59D107EDCFA5E887F67E +:1028100067BFE21CC33E19D753E1AD655922C16FB2 +:10282000726A76F1BD94BDEA6B8997091F79183EEB +:102830000734E278259DF4418CC2954E70F896429B +:1028400061F339791E7DCB5F3D11FAF861FFD294B7 +:10285000149AE778AB8BF1D2ECB386714E6FD55AF0 +:102860006C58D76B4B83CB93A8FCB5019A6F197D3D +:102870007F75CAE4C408FA810645E336176ACC9727 +:1028800027AD97FA7D791F7BA7DE4DFF5ED3CF9CE6 +:102890009FE8B7B6C650BB8985667D7D92587BD6CA +:1028A0000ABBD045F4F62D394A6F1F2806B2FDEC5D +:1028B000D2F5F6ED3917D0DB05AC8AC49FBE1D2BCF +:1028C000F968F3E843A3CED07A3F6BCA6628E617CF +:1028D00048B9F1684E6037F072DADE320770F9B04D +:1028E0009E20DB5F888FEA9DC24F34FD71BD87F368 +:1028F0009FD6A7717AA2DECB695B7D01D79FAEF729 +:1029000071FE9B1C7F13FA59152BF1A08FBF58D174 +:10291000E9AABEC31F09D0F8ABDEB073BEB2B16185 +:1029200002CC578BFB7E784F3CC17BF1331ADB49DD +:10293000AA9BFC0E17CDF7F697832B71ACCC7DA329 +:102940006512D848ED794D04698B3C9A1FF82DD655 +:102950003BECBD8F52019F4FEA47F23C8ED7FB798B +:102960001E27EBCB39ED9D1B780BF3F137B5AE4C41 +:10297000A3FEAEDBDE6ACBA074BC5F6379788C5FAC +:1029800084C38487F576792EAC4F77FAB06FC70E83 +:102990009EF2F87705F872F07D8C737DF2ACF13D14 +:1029A0004007232B6C68379DE812799D6E2FBE5F20 +:1029B000251C6A154D9C7A4963F8BCB3DBCAF33811 +:1029C00077248EE58173BBF75773BE2DCE474A56E9 +:1029D00047BBA9CFE7F6823EB0E8F941BDA05F9CB6 +:1029E00024FC085AEF2A55FFC276AD117AF1F09D0A +:1029F0004999A0D393C98D477F00FED5D7C1766092 +:102A000052443F7E0CFCAD4F9A0FFBEAB4E2C32464 +:102A1000A1C5E3BC9EEFD0E5C1E020E44FC6C97379 +:102A20001AE378098EFB337BF3F95BA0D92CD0E74E +:102A3000F63F37D9873CF5CBE3EC794CF6BB75C74D +:102A4000A3E7F6F17861A6AB67763E9EF343CA3DF5 +:102A5000B36B4DDCCD82CF553192F8D2FE07E3FD4A +:102A600098E77EBBEF681DF8F0E32EB6CB3CFDE3A4 +:102A7000BB3EDC8BF4FEDA92BBC0C27293197EB30C +:102A80007F72E384746AB7758F28C6B6184430CF56 +:102A9000A07914AE3F7B309DC62B0A2795F5A67210 +:102AA000DFB6E243BD29FF8B17B408ECE8258D1B88 +:102AB0003769B0B57CFD546FC89569B95E933C3EEB +:102AC000A86FF9612BCB9DE673BC70DDD952F4B7CA +:102AD000A377E3A224DA0F03B5C6134BB341BFBFFC +:102AE0002F61BD48D9439E6F9AFA8E5C57281D729C +:102AF00067A8C2C1F66A2CDF4EF953BB73595ED882 +:102B00006309F179129AE9F4418E3A15083D0A3ABF +:102B1000AAA5F6903F6B8B430957403FFB533F1FDD +:102B2000518CE8FBC4B7CA019FF9BB1F9ED09BDA4A +:102B30009D1A2D7C1A4DBDF2F9CF26B07E4C5A2439 +:102B4000F49253BB97A5DE44DFDD57583A0CE76695 +:102B5000C0DAC8E38805729C47D439255A8AD88FD1 +:102B6000C1A448EDEEA362942737251DC8109DF837 +:102B70005AD0B4341BF2E56541A70F7AE3FAEC5062 +:102B80003AEC5BFAB947E7D715B9D42EDDA1FAF5CF +:102B90004C6579FD52CF2DDDEEA5F7F78843DAE1DC +:102BA00074FBD806873C67B710BF009DE9E72C8D02 +:102BB0007B4D6E4F837D8D0E83629A67C623316C89 +:102BC00007B9D4F175B96881D25B4AD57939A3C701 +:102BD000B2175B68BD6F398337607DB70BBFB457E1 +:102BE000DB7C5EF0D33D4EFFF45C968FDA33B106AA +:102BF0003A0F6F467EBE95E4A55C83BCE4BCB4F39B +:102C0000B0D5E9AFC03897DA3E9A8F2EFEC2228A3D +:102C1000890E163F1C13069F58A6F4B565EEE14ECB +:102C2000F007F1B2A5E6553A17AF945F76F4B7D83E +:102C30005DC2FC0367DD85E0F512EDF720F1950834 +:102C4000F1FD607F346A5E06FB8B9FFEE726BA19B2 +:102C5000739E143AC3B916FD3DE1A91E70192BE20B +:102C60004DEDFC2289EDB0C295FC5F5BAF9AF76831 +:102C700085B7D1E78EC4831F2EFEA284F96277EB5D +:102C80007951ADE7D7580FA55905810731BF2B3FC3 +:102C9000F7D8B08FC7D8AC2268387F69FE8FA0DE26 +:102CA000FF759C69FE1D747E89F3BF531321D89B69 +:102CB000C55907EB4D4D4ABF6F9A57C876923DD024 +:102CC00053A1574D71B0FCD9E426FD92DA37BDD936 +:102CD00093F7FF7EDD7E526195F5B1EAFB9E1E966D +:102CE000477AC7C87A717347FF7C8E34DDD89BFB67 +:102CF000DFAF45063D8BFE273BBBD377592F6C5F7B +:102D00001AC37AE2BAE285AF0F46FDD2413CBEAEAD +:102D1000BFF6B68657E780DFD45B95FE7AF066E8AB +:102D2000C5EBCE3A600424FD55EA75A4B7F27921CB +:102D30006C21F7E4C1D05345471E7A0FE9A5322F25 +:102D4000A89EE0F8BEC2D7119BD40F8F40EF1CD2D3 +:102D500069973F02BDB1B0F3FBE0A4781BE83BBA32 +:102D60005C87BB5EAEEB991FD8A55CB92EA9A127E5 +:102D7000FC591FE406DF065E6FBC7D4B6CD060F72C +:102D800048B005DEC13E3C367BCB33B0738AD952A6 +:102D9000FFFA40C133F495D48B473B5AAEBD81E076 +:102DA00030FAAF162DE4ED8A6FE8EDD21E6E917AFF +:102DB000B74DDA0B9E7CA3079F8B040F59EF76A8C3 +:102DC0007AA20FD4370E907ABD55F343BF6C7F3E85 +:102DD00086F5FEF22952FE3CB7C4B211F68748BD13 +:102DE0006FF4B83C6AAFEC78A12637E3FD4905B72C +:102DF000DB141F7B52F975438D76A9D7D822190BA6 +:102E0000304ED300D6D72342D1D5DE7855EF4D448E +:102E10007ED96F860AE83D67743EA249F9A0C611C3 +:102E2000C9073C9F54F0D5F3BD613F57F5F0DFEC87 +:102E300057F2444D9CCCDFE10C7E03B8EE5176B2E4 +:102E40009A042A775D084EC4F729FF645D0F69BFB5 +:102E5000203849FB87BBA31EEB79727D7FB37DA32E +:102E60005693F611115E938FEF9B7AF2FA4E2F393B +:102E7000367CBD97E154B41770D81DC372850E27F8 +:102E80001D6F4F76D0517B2CD39743DAA98E7A5A97 +:102E9000DC467FD4D1C0C76EF0973FD659238E84CD +:102EA000EEF7FD2DEB3FF91BF4AF5B028E56C8F930 +:102EB000B72CF9F0169CDFB7547E7D2B97D798FD81 +:102EC000FE57F6F367F71B6680C7718B6EEF91F1C3 +:102ED000039FF651F61E69BF693F1EA7E021ED2F43 +:102EE000FB76674BBAD2E1F168AC0E8F78ECBF4A43 +:102EF00012AAD3E9FCDC6793EBDCA7EC3AFA7C6717 +:102F0000A60487F623BADDD761B7094B39D046E767 +:102F100023C1A9BD5F7024EA75B941B71FB6D99B1B +:102F20005FB5609C2597766E55C735CDD7685F9D98 +:102F300068DAB20729C199F12B9E937CADCD134974 +:102F400000BCABA9684C32FCA0B4C792651E72628B +:102F5000743C07FE6CA9B21EE77375A3D51F9B8056 +:102F6000BCA3B31DF51BB448BA113BA57E5F251A5F +:102F700053975A592F728E24B89CDEFBCB04F081F4 +:102F80002A97CBB904724C547C45D5EE55CDB94542 +:102F90005DCBBBCE276AFFEFB29AEC766D29A93ADA +:102FA0001E153F8CB07DAC931F4612261BF8589B14 +:102FB000C2575B14BEDA3AF01431D9D7DA1A8F65EA +:102FC000E25C3DADEBD13EE907AC7E56FAF5562802 +:102FD0003E58DDA37138E0DCDB6AF67BE969B55366 +:102FE000D8461BFC7DD505C2093CE876B0EA80B026 +:102FF0005D916CA80F0B27F27B2CB4BF5D8C379BC7 +:10300000C21FF743ED197F554EE11C43F92AF4879F +:10301000D412CE04DEF479759947147C57F6937672 +:10302000B615EAFC0CB91D8A6FF9D200B7FEEB1D8C +:10303000A6F6A7DD8EDBFC349F016173B9DEFF4F7E +:10304000FA497DB7C088D7ECEEE1B25EB5FFF9CFA3 +:103050003BDA5B655C0B89D13A1D7AA55E63C7FCE0 +:10306000DE77E8F6A4EF6690FC550D5AC8E984D3E4 +:103070009EE2604632A5A72D922FEE49A27C21E464 +:103080004839BE9EEF807B145DDFF3BE83E1B0E77D +:103090004DFB46D8310E2AF834A9FE4FD407877E5F +:1030A0006487BEBE70C0ECBCCE75CC595FEC049D8D +:1030B000CCDD50EC9C69B0272CDB762801F01AE8B7 +:1030C000B2B0DDE2C4B6A11C9775C26511F11AEA6F +:1030D000873A51DFE63AF83B2F95CFD99054023D1D +:1030E00043FF7EEEFA3B07CC36C079D03633DC079F +:1030F000379AF343F69AF36FF4133CFF7FF4BBE285 +:1031000088393FF4B0392FDACD713E2F8C0C4CBD8D +:103110000EFE950D561F8A2A5D96500CED6F9B4B47 +:10312000EE5BB1DDCA7E9E4A8F8CE7F974CFAAE1CF +:10313000909BABFF34FB55E84773DF95F0898E3FDA +:10314000AB3CF2EA57D08309BF1AC72B6DD5F8BC48 +:10315000898E4BD3ED325DF9C752DD8E5C60A4A73A +:1031600068BC9F54F1373575D543E1CFD0E17F7905 +:10317000E3830E9C4FF3269AD75F6DB3892517E43E +:103180009F21295FBBFC5EC0A762A4AC6B5D36FDCE +:103190001A9C57ADD3CB8FC37F71455D9938369458 +:1031A0002AD6BE3D01F0A9B84F13E02715BFECFFAA +:1031B00032DACD52FAD15CE54FF28CF4EE6DA176A5 +:1031C000B787351FE63F332A9E6CF6DAA87944C5E7 +:1031D00091CDDD7BE02B8C1B1D4FA6C71D556DFED1 +:1031E00026C61C6726F5EF2B9A365AB1FEDBF5F999 +:1031F00086C608ACEB0AD9B4C33FF5113297231E3B +:103200002A909447EBBF629DFCAE56C838273DFE1E +:10321000684E0CC9E5C4A70EBB1D4C179FAD4F648B +:103220007BE167DC19A51BA43DB0B687CCD73EA5D2 +:10323000B1FE59ABCEE1DAA7A5DD770EF1FFC412DE +:10324000492F7EC3BC6BD47A401FC672D120F5577C +:103250003D1E0A71527E833FBD86D6752459C647EE +:1032600019BF33C64719CB0DF669D6A775FDFE49C0 +:103270007BF899AD344FEB8FE27C90638508C48175 +:103280002E89DF487D64B2E45F5DF585C5AC9FB4EF +:10329000BF69F7C1EFB4AE58AE7FDDBC3CD6377A1C +:1032A0008327E2BC7D2896BF9F4D62722CECF955B6 +:1032B000710C0FBBD2273EC090E9301B5B58CE5932 +:1032C00077A343F9C1A45CB3EEE16CD63F3AFC604E +:1032D0000FC698CED39BEEEFABCE537FBE93EB637E +:1032E0007D4639F1A69E5E5D9E56E76BB827CE09F6 +:1032F0005DAFB8C92E02E0AB376D94E7AB0E9F9B74 +:10330000342A9772504FE3F97AB1725DDFB82B2DF2 +:10331000F81DD0955EBF2E291C8BB844517969FEEB +:103320009C2D6AFEB41E96F33ED2643CE4ECB8C019 +:10333000BD57018E3FCDC9011C6BC1A47A22FEC6C8 +:103340009FEF31AC5FC7B7F0FBF3A1777EF4606C01 +:1033500009E0A0C7531D2D96E749FC6532EEE37BDB +:10336000AA9FEFE5594C695A9C8C57FA68BCF40B3C +:10337000B82F0B38202791EEC77141B31D81DF5E56 +:1033800069980F8DEB04FC42AA3F1D9E847F3FE4A9 +:1033900090D93F89917E635B3017F95B8E14F830CA +:1033A000AF8FD4F9A6D3831052FFBDE9AD9E25ECB3 +:1033B00057547CF1E274A9FB6DED4C274497ACFFA8 +:1033C000ACBB319FE932A9438F55F4F9805BF633EA +:1033D000BE341DF604F86CFE8AF6E33BFCAF4A4EA1 +:1033E00023BA711BE53689FF68BAEAA08728BABA02 +:1033F00054FAB904BADAF6F7E88ABE1F1670774FA6 +:1034000057B52FECD813823FE0D9871304B53B6E34 +:103410006B48F5411FDBB222C14FE9A7B65002FA53 +:103420003B1EB6965F28AEE4638557F85934833F58 +:10343000F6C4CFEF9BC4710E5BEC1EB0BE05DB6221 +:1034400022316CAF9CC7F18D946F95F955ECF7580C +:10345000B0372ADEF1E98753BD1CBF1ACA40FC0B06 +:10346000C9C11C0F317FB39DE325E7BF6BF5810C0C +:103470001688F695985FF4F798C779A2D3058DD68C +:103480000A4762D77AA2083E6F17ECBEEF2CECBB5E +:10349000D1F19295CA1F15ED7F792F4FF95F4688BC +:1034A0001190F3082EBE08E88FE69327D1CEF4BA28 +:1034B000EC99A777EEA3791EFFA057314C316D9B95 +:1034C0005F4FD00A3BFD31BA7FAAAD313731780169 +:1034D000B8EAE96965C7EFC49BE4D3DEBD34C15ED9 +:1034E0000271C99CD6D82309A368BC9A8D76E68F51 +:1034F000353B9EDAFA18E8F9FD181FE2CBAA77BC33 +:10350000F2FB2B20F7EFB2A74C94CB7169A99DF881 +:103510005AE095F6541D3F55BF7CC5E11D2CCB21CB +:1035200027E878AADE75C0210677856759E3014749 +:103530008BEB02F86A6C9DC0F6C467BE74601F1EF8 +:103540007F4913BDB2BB7E5FB9E5F504B4D3F1D5B5 +:1035500081BF2E788B4CDA7719B7F3800F7487BF51 +:103560003D40C630D0B75B203EABF28398F044E0DC +:10357000F5C78B99CE3FB12D9474FEF88A54C8AF2D +:1035800095F650AA8753595EF9C49D8AFEFCE91648 +:10359000968142E958CFED1BAEE7F5CC1141A6BBB1 +:1035A000CAC7657CCE17A497EDBA001E6FCE97FBF5 +:1035B000E3934D84445AD7272AFE37F42F56192F08 +:1035C00021EE6079E44EB5468E88A3FC174A2E2D75 +:1035D000CEB7E8F64EA751CF5EB0795533F071A261 +:1035E000AFBF17EC57B4FE90829386783BEBDBE3DA +:1035F0007B497CC8FB03FC1DC909652847FB663B6A +:10360000DF23307CC770D3C7FFAE1A9FE61D077D4E +:10361000FF9354A98F08B83E41379AFC66FE92CAC0 +:10362000895E82FF1AB5CE8E7DBE798DDCD76A9F0A +:103630007FFEAEE41FF3C393CB79FF37DB23BDD00E +:103640002E7C609AC6FB3F3AAE5BE17FB35DED5FD7 +:10365000733DCDCBA619E1F992D4E3E7AC33C48F27 +:10366000034ECAAFBA80E4E54881719DCA3FACFC05 +:10367000A773D57E8FC65FF4FEBF3E9FF63F1C92B8 +:103680006AFFEBDF8B0D17F6F375EEF710C3A78615 +:10369000E40C0FF6E9FB317CFED43C68E5F8C3632B +:1036A0006B0FA55E4E747DB251DF9F667EDAB13F2F +:1036B00097C8F8F0CAE7B668A0CFE8FD79B232AC97 +:1036C0005D707F52F905F767A5F83FCB4F3BE06D82 +:1036D000DE8F73BBE1A7F5F9667EFA85284C1C8561 +:1036E0004A4F4516DBD3A3E0AAC3339A2FF6CEF791 +:1036F000327CA3F9A240E88B018E3AFC74FA1422C2 +:10370000C8E374D0AD4E9FFAF9D4419FD1EB35C3D5 +:1037100031BA7E5CBEE0F9047E25E3456B9A3475D0 +:103720002F20F42ADF1B81BF845B37BC9A9162CCC7 +:1037300087A3F28D51EDFD51F94054FB60547EA1F9 +:10374000A97DCDDE430E19371A31B58BA9BB96F58D +:10375000A3AE724258FAFD769F758440177DDA3920 +:103760007ED57E8F08B92157BD28ED5967BCED097C +:10377000904756C44A39F08C47E59364BEBDA763B1 +:1037800025F89F5EDE1E2BEDC16702ED0949067B21 +:10379000436B933501F7035AC2D29ED5753ECB18C1 +:1037A000AE2DCADE35DEEACAACBB0CF1C4B97CBFB3 +:1037B000EADC72BBCAE79500DFBA9CF86711F8FD36 +:1037C00028CC334EDAAF45C86F435CC82C893251E0 +:1037D000F99B6509D0E76735C9B890D96BCDF89CDE +:1037E000E39A9618F182BF98E339E6425FCB855E93 +:1037F0006A2EAF52FBA02A6A1F04951D3E7A1FB4A1 +:10380000E8FBA058142BFB11FBB716293E3CDE5AEF +:10381000F8ED1904EF3387AD2286F2E79AAC622502 +:10382000D6B95D63FF1E2E2E607FE9FA9E0EAF367D +:10383000EC93FEDDCB176DCFFF6938FCEF357BFED7 +:1038400050F4334ADBF6BC9FBF1FF917FE35F30F68 +:10385000A26BFBB297BEBA15FCF6CC4B3102F47CDE +:10386000E6A5D7327F88FCBE18D6EBCFDC1323FD4C +:103870000B2FB9D95E72A6AF94E397BDF865510BD3 +:103880009F1FCBE5FD8EFE0EC6E3B9A67F3F0AFB68 +:10389000FEB9265A15E48297E279BF2CD817CB7A65 +:1038A000DF9917BF1C6E8C6FF9EFAE478F6338E35B +:1038B00016339E039D26497BFA82FD973F05FF7DC7 +:1038C000EDEE038E59545FF6EBBF15815F9E794E86 +:1038D000CA3BA7ED2D4FC0769AFA74DD43F6CB6153 +:1038E00047A4CE7A0BF1ECD37BA7625F74858B84FF +:1038F000C3198203D64570A9049FEF0E1E83018F62 +:1039000061FF8CF0387BABE45F2304FCFD9D70D13C +:10391000FCB2DC1D766ABC7E59FED29745E02F17BB +:103920005BEFB5FF9FAD77DE3FED7A25BD9F55E795 +:103930006734DD77A5EB17BEC7F99D6E1FCFF71271 +:10394000F7FB9A7FDAFDFE3F83EFA7FF69D77B3154 +:103950007CFF46E1DBED815DF3CC8B7FCB14FFC0B8 +:10396000BA5FFD5F4AE7BA7C5E6AF51D2EA6F6AF28 +:103970008BC6777DD92C6DB09CB14CF9015E4BCBD9 +:10398000DE24EFD74A3DA84CE94167FB6BBCEE65EE +:10399000C2C2FEB9326735CB99657DEE3F2BE3C7D6 +:1039A0002C3C9FD79C576EE538FB28BD6F5C1F6B86 +:1039B00004FE86434B697C6A77C86DF12C93E5ADB4 +:1039C000289FE093F2FD843ED7729C6999F3CD194C +:1039D000B0038F7399F5A26BA3F49CABBDE6FA72AA +:1039E000F15C0AEC6CE58576419A829880F606FDDA +:1039F000EFEDFE1E86C3D5A261B9C7F55F820BEB62 +:103A0000A9360597CC02A917EA70E90A07054721EC +:103A1000E59C68B8D95CF736732A484F95EB62FD90 +:103A200056D75375F845C34D28BDD7C64376C2D780 +:103A3000D647FA830DFDF1BA3BE0A9E0FD8FC23510 +:103A40001A3F1783F3E780F3B0AE70EE632BB661D5 +:103A50003F5DA9E4F171B62499EFD36C0D30FCC23F +:103A6000FC5DD9E73E1BE48EB1AE241BC74D79FB4C +:103A700026417E84E8F84D86101936118A815DDF73 +:103A8000D3F232F65DC543315EC0BB8F4DDD37B535 +:103A9000497B37EDD6505C09B7F73B92D16EAEC08B +:103AA000CDA88A0CE1D3647B9198CCE184C28AB81A +:103AB0003A4AF15D056468B4BBCFC6F798F98FE068 +:103AC0000D771DEC0CD4AFDF922CBF4F28E1EF43F4 +:103AD00016F9BD1FF7C2EDC293A9D164B3CA3CDF8A +:103AE0003B023D62452CFB0D26964A7D41DFF7AB3C +:103AF0000BA4FD434F33067879FD568B2F0D72EEE4 +:103B0000A4E503581FB1C6056A9F879F6E673CFBFB +:103B1000D72A567EE7BA6198DFCE1E3E90CB894900 +:103B2000BB384E7DE6F21BEF7C8FCA83DB62B9DCCB +:103B30003F201828A0FE4E68DE5B9FA78299D71F02 +:103B400072200E7852E3AED3B0DF4D9A16CF719546 +:103B50009344E3EF107F29A6C938A7D69D6E07606E +:103B6000715DE3591BF4ABEB466B606BA235D693EA +:103B70007907CDA742F96B6F51F46F8D13C1E75CE4 +:103B80009857DFFC1C2ABF0EF7DD2EA0DFDCAFB795 +:103B90002FD536C02F95A5EEC3E8EDD10FFA7D489D +:103BA000C1636E81F4EFEAF9AC32D97EF6EA98D6B9 +:103BB0005CE831ABED91FE947E35B0B41AEB9C9885 +:103BC0002326AC875FE02EABD8C4F315AFB27DFCE3 +:103BD000C16C2FF4B8A050F1176BB3D93ED53AD6CB +:103BE000E748A77CEB83D91EDCC398ED92789F1D34 +:103BF0007032DE5BC73646E04F687F5463FC1DF5CC +:103C0000C8FAA3AE02B66F64590FF4633F44B1F42F +:103C100043FC7640B01EF3A868A87803FB5C7C4D9B +:103C2000EB1E8EF859C1C46B4DA07D027AB6F91215 +:103C300070DE24D802CB0B380ED2F7E31134CE63FA +:103C40003FB60AD8FDB2AC321EF45881A4878988E9 +:103C50000F253A7BC2DE320FFD94E9E5C99EE12EC5 +:103C6000495F02E3B7DA3DF9585FEB8A580BFC7203 +:103C700013EF91F446F4EFB4D1F76B6C220EFEF71C +:103C800020BE2778DEB2D416D848F93E4E6173279D +:103C900003DFC5AC3F8F18149C8B797D7AB7B802CF +:103CA000FAE4ACB50FB21F44C797B0358FEB41E3D0 +:103CB0007CBA25BB0471383A7E470C2ADD5060C4BB +:103CC000D3348DF143EB7162FE5F0D9CB909F5545D +:103CD0007E00F89B581AE9B7A810FA5F8DF0E33C14 +:103CE0004D133E9CCBE78484F3B9D53686B3BEDF53 +:103CF000F57DADEF679A37EF5F7D3F46EFE3ADF5BA +:103D0000F26EE1B67A27A73FAFF7085B9E10DBEBB8 +:103D1000D338BFB3DECB69637D01973F57EFE3FC38 +:103D2000EEFA919CDF53EFE7FCDEFA724EF7D5070F +:103D3000B8FC56021FE23A687CE6373A9FC1FC2C79 +:103D4000259D7C40C79F7DF5580BF8B48E3FD277F8 +:103D5000F9BD8973C2CBEF4D742717FC4FCD9FF887 +:103D60005828B1A413AEC8C71AF824F2EEE4CEF571 +:103D700021347074B281CFD9E4FD7EF0C3D492CEE9 +:103D8000F5C31478BEA4132FF86E4C14DE40873AA6 +:103D90005CE8FB486A89112E6DF78F00DE2B2D3E03 +:103DA000B67788961D2F70DEC5FEDA4C87D80B7B60 +:103DB0006DCB8F5C02F651F0C918DCE3A9D484CD39 +:103DC000606FF8CEC25861339C5FB7D52599F22950 +:103DD0003F3AF20ACC67D7A5063F079D1FBDEBD43B +:103DE0009F9FA6FE9FBCFBE3C141A6C7B62D8F6077 +:103DF000DC25713EB64750DBE4CBD8FEC27E32FCF8 +:103E0000E1DEE34C75AECF0CC5B7C28EF684C3F3CA +:103E1000FBA761AF5D69F5808FCE5C2ECFE50F808B +:103E20004782FB1F151E45C3231C5756A1DBC557F0 +:103E30008FF777D8630868090372E4FD7565CF3999 +:103E4000FA838C1F739CDF0AAB4785DFF89DC3BBE9 +:103E50008EAF8F17DDDF87E982ED2624F58B3AC21E +:103E6000C387773B22B8E3FBA1E6E47706346F8A89 +:103E7000B885CA83AB5F3B827EB4BAC31C8F107413 +:103E8000BAF83E9D08D9DB8CFD6975AF723BD1D283 +:103E90002709F6623E97AF827FD5EFC03D6DF004F3 +:103EA000D0CDCC828302FC5534681EF86966ABF233 +:103EB000D9FAFD709B2F6D1AC9A77903ACBCDE0936 +:103EC00005F2FEFD23C025FB051AF8DCD5ED58B33D +:103ED000D76A7C7F7F7643B1638EE17C99A9CA67FC +:103EE000E1BD0443F930F44BFDF45E5D3C03FBAFF0 +:103EF000B77A4FA17741C90CF097DEAE0936C801F9 +:103F00007AFB21036CDC7E821AFF11302B9ACFBD25 +:103F100005520E9CE9BA61B39403BD0ED855F5F174 +:103F2000661694AC449CF0CCB578E580E4413B093E +:103F30003C2988472FDF02FE75F9009B5A9FECB79A +:103F4000469D77B43E07FC9F9F22C29CFDC0D29E37 +:103F500057B5F317EC5FABFA430C9FE35543E47995 +:103F60002B0AC3C3A74ABF8DC97E3EEE177F4A60A6 +:103F7000BFC76E2BDB792995F65DDD1EEC93F185CD +:103F8000D176DC9777FE21E18276F3DDD2EF7731CF +:103F9000BBB97EAF6CC1AFA4FD5787E302ED3CFB1C +:103FA0009B16BCB822F542F7B7E0AF011D46DBD146 +:103FB0002F66678FB62B560F30DBD72FF5BE989E36 +:103FC000AFAC2BCAFD6828EE8F05BF370070AF1B62 +:103FD0009E8BF8A2F97563388DBE4F56593788DB32 +:103FE00057D50DE5FA88926748E0E6FB88BA3DF3BD +:103FF0005C382F51FC9D792C584F93A5EFCFD9BC3D +:1040000089F0C7E9F784CF6CB7B2FE7066FBE04D6C +:10401000D897F39A1E7258A83C3240EA5FA7A2FCD8 +:1040200002F3B71F637F5DAD6866FC10DE84D3E8E2 +:104030001F427C608FEEE757FD0BF742D0EFBC4686 +:10404000CDBF05E791B391ED1FE7B67FC71E32E004 +:104050007383A2DFE8F93F0879D5E09FC77C319FE1 +:10406000EA98C6D31F60273C1BCFEF81105E7F0705 +:10407000FFEDC90D43394E795EE3AEF932EE2CDE29 +:1040800003BBCA89A878C86D6A1F6E1B20E5BE9362 +:10409000CA0F7672A795F92FE68B7D7C4233DF93AA +:1040A000DFA9BEDB3940E265DC00B9DFF4F6F31AC4 +:1040B0001F6479F0F4EE6BF3B0EFCFEC7D27A11F16 +:1040C00095EF55EB3BB33BBE1CF038B3FB6713F6E3 +:1040D000135D9F6A1C9B82FDA7F7FFCA00F97EC291 +:1040E000A926E9EF136119B7540B380F35CEB30782 +:1040F000BF63A07FA7C76B9DDCFDCB044B61271E70 +:1041000017381B567B733ADF9F88B5074310B4ED11 +:104110007BC7CAF7B4F029F5BFA6A021C0FA806A10 +:10412000E770FAF970D5DFD512FAFD3A755F84CEE3 +:104130002FF70A9AC7A2C1716C4FBF758877FACD65 +:10414000E0C3AFDB191F8B068808EC179FD5B93782 +:1041500002CF8BB27DEC67BD75A8E233692DC31029 +:10416000DF51B35A137EC495A565CAFB286AEFB721 +:1041700066FBDE5A05B9F34D2967D784AD22389422 +:10418000F9473EE2C9C5C8483EE2477A139DF8099F +:10419000446D0A8F471D324EB32647C6C967A978BA +:1041A000939A641957DFA6C7DD4F89E423CEA5E6AD +:1041B000B9748E7369D3E3E8A91CF3AC2991F1F4C7 +:1041C0003A7C6BAA0EE6839E6B66FABCA86FCDF6AE +:1041D0009CE678A2E7DDFC3E8FE505B78A4F8BDDD4 +:1041E0001423CF6FBE9F92B2355DBE873250EA195D +:1041F0008F75C4C5FBB3A7D23A1E5BE24AC0F99BD8 +:10420000A2DE8B98E768E079EAEDF4BCBE2EE4B15B +:10421000AE3645CFF3E2545ECD7F5E4203CFBBD5D1 +:104220002EE47D8767E4FD9313E9CD7B38EEF499A6 +:1042300001785981E61F9EB397EB49AEC77E0969A5 +:10424000CCCFAB7E1E13C1BA8E3F23EDEE55F57574 +:1042500093A08F57D1B6C7BD324ACB713FECB8BDE2 +:104260002113E31EEF49A90BF20EC94B4370AF6255 +:104270007D26EFEFCD311AF87515490A90F7CE89F2 +:10428000865B1F93E5D0D445D5E6188EE30F5239EF +:10429000EE370A928340373ABCA9DE14A7D89A6D4C +:1042A0007ED7C03B50EE3FEF4089F77E03A53DA08F +:1042B00036BEF1A739BC3EB94F083F2A6EBFB1E008 +:1042C000672988E3C8D3C01FAA1A635B2177546D9E +:1042D000B7471C454C27B2FD6427B79F470C0DFE1E +:1042E000E27942CA97E3ADDB391EECB36DB12558D4 +:1042F00017C197E753F5831F4AF8BCE0F6CBF735B3 +:10430000F8ED1F717C6B06C7874F44CC18D3C9608A +:10431000C6C3F1E48622E0B36AD5080BC78958A565 +:10432000DE45A95FE3387927F3D11AC5476B578D6E +:104330004A1C857DF5965540BEA99A5AF906C6FBDA +:10434000CC46FBE902FC3F1A6E0B064ABE5343FB08 +:1043500004F77A6BD5BDA6EAADF29DC6EA95D2AE5A +:10436000287EAEF17B408B632309186FF116AB0FEB +:1043700078AA7634E6F7A4716E52FD50FB20F892CD +:10438000DEDFE2D8C639E86FF18E58E6E7370D4C2C +:10439000617CB4353E940A39B76B7B39EFCE764FEA +:1043A0002518E377F4761DEB6994F6A4CF44F3F770 +:1043B000FE409F7CBE3D96E745F8E4FB62D1EB3DB5 +:1043C00069A7F9D0FC4FEE88E577FE3E213E18C282 +:1043D0007DE524FF031CE7F0B695DFB9C1BC701E74 +:1043E000CD0D9BBFAFEDE14B449C64ED5B65367C2E +:1043F0007FDB40C98F090FDF6638BD65E77BA1D140 +:10440000702F55ED3AF6DD8E78A6A393BD25FE4FAD +:10441000EEECCFE74A6B92BAF76B6FCC443CF3C932 +:104420001DFD8BF97E258422C27B9547E2FD6452F7 +:1044300063A6C750AFD31B2E18A5813EF04D2EE4C6 +:1044400004298F553BD7723C0BE29B8797701A89E2 +:10445000B9407C32D123EBEBBB07CAF31ECF6F828E +:10446000EF721C3DF3AD4607F87250C98F35DBA3E0 +:10447000E39B65FD3AB5FF30DB143DAE1AF1DC215C +:104480008DE362AA97DF310F745ABDF0C19B41E7FB +:10449000FAFCAB6DA21CFCA055B3F23C5A63C56D8F +:1044A00053C00F8DE3E4C8D493DAB9CE27D4789BF8 +:1044B000067A75F95634503F35CBB5B5DC7FB66E0C +:1044C0003790EBD1BF233038704EB48E55F5DDAC4C +:1044D000579F5FF47A75FCEE517CA635DBFBC06814 +:1044E000792EB1BDE6DCD7431393FF8E7E0DCDB59B +:1044F00023CE98F6FAA18142DAE314BFAAA6F961A5 +:104500009EF91BCCF1E5059BCDF981DBCDF9C2DD30 +:10451000E67C519339EF7BD99CFF05C61D26F57DBE +:10452000DC3787BE8F14FABE3746EAFBC843DF4745 +:104530000A7D1FE5D0F79187BE8F3CF47DE4757846 +:1045400043EF471E7A3FEABF5470DA877753AD7C5A +:104550008EB15F7D94D522F7C58D0E53BCF1BECAD6 +:104560003EFABD34BFBC87E552F7B0E47D29433C39 +:10457000A8BC776555EFBD46DDBB9A63695E999E21 +:10458000DDF5BED5CC94E0470387493A433FFB7243 +:10459000C28316F1F91EEB827DB065C5272BA116EB +:1045A0008D48091E1FD813F797DBB7CA7BC911E6E0 +:1045B0002F2D4BBD6F5DA5CB21D47F054115F42B6D +:1045C0002A93596EBAE8BBAE177DCFD54C1FBA1CE3 +:1045D000F7A4BD3D1D7CF2D833CEB598E7B1587530 +:1045E000FF6886332AAE41EA478BEED736E15C8A14 +:1045F0001924EFF39F3B4C50F93B7439EBFC509678 +:10460000AF3BF26B350BBF279196CAE78F2E8765BC +:104610006A248781EFD1FA713EF75F6F31CD7F4019 +:1046200038CE446783B62547DD33E96D6A3F646F52 +:104630004ED43D9381E67B0CD3961EC0B93C75EDFC +:104640005053BBD98151517053F354F2E86C250794 +:104650002EBEDBC974B4F83D2BCB2F95A8247E5811 +:1046600089BE088F959B55BC749DF99CADB489108B +:10467000DECD9AA5CE9F27F05D3ADF57F127D1F71F +:10468000A78A1BB6E2BDD279BF7967B807F7EDB448 +:10469000B1BD609488CD0F160F227C65DAFD1CAF8A +:1046A0005BB32B2F09EF97B51D7E85E3315909BD0B +:1046B0001CF59E38E073638394EB6117B32677E2B1 +:1046C0007B63438FB87EAECE7519E256580EFE0C52 +:1046D000712B20BBB15AC831A473FE8BD479A1EFE2 +:1046E000B38F94DC2FFAC97EBEABEA6B4A5E7B22A5 +:1046F0009950D76639F8975538978A1BF32390CF8E +:104700001EDB987A13C1E3A198E03558C7A237CBD6 +:10471000121047F7C5763BBF13F2E7754F3D81F89E +:10472000E6550D4F39A0FF57D9C20E8EEF7C66A318 +:1047300003F1CDDFDAB691CBE76CAB603D71AE58DB +:10474000C87AE2A7FAFB176A9F54966A1B3C34EFBB +:104750009D83A41C5C1927E5DDF1D6D1AFA4B05C24 +:10476000A5719CEFB4C0E4F13D219F3426F13B4597 +:10477000B355FB68BA3FF78655DA6FA7493C77F720 +:104780007ED2D4F3D94CE7D3CE0F62FDE9FAC8004C +:10479000A9AF169AF5D54A87F72DF075F15BA2738C +:1047A00061B01FF8EC2C17D712BFC2BDC6C068ABF2 +:1047B00059BE1A176FA2D319C240FF34F40D087204 +:1047C00031E4A74DCC35B59F3E6D50145D9774D63E +:1047D000333FB8C2743FB216257CDFA4B44BB9BCDA +:1047E00067798DE9FB5A31C5740F6FDE664DEA2992 +:1047F000BB93D8DF58A9DE8F9B1194E5F3F7CA72FB +:10480000314398F6575699EF5FE5B967677D4CF7E6 +:104810003BCCC07FE77685BB10711DF7FEF16E03C0 +:10482000EC06A6FBFECA6F8979B39CABEC48B505D4 +:10483000D28E541B6A76E05D0C82BBAD07E2331B5F +:1048400034C607B577F62891F9251C6F6D8E1B438A +:104850007F88B39C7FD85A817D125D4F7427E5DD38 +:104860007D32DE75EEFAE838CDB5EC379D0FBB90A2 +:10487000016FA7077999AF566DDBF56A6F82C3D4D4 +:1048800080A4CF9AC6C9F68AC2AEF44474CDEF3F75 +:10489000CF11445734DE1CDABF616FF7EB869808FE +:1048A0007D435FFF7CBFA4BFDEA0BFA2AE74571BD9 +:1048B0005AE8E0F74D3668E2A16CD91EF0E80D7AAF +:1048C0008C8207C32F0A0E3A7C3AE015551F0D97CC +:1048D0003941C1F43167AF160E6B5DD7D11DDCA233 +:1048E000F13A57343B70DF64EE6ECD87F7DD753FEC +:1048F0008E1819653F7A2397ED47F3030A2E3A1D68 +:1049000004249D4F392FED2137E07DD3A19D7431D3 +:104910006DA2793F5E7F3E95EBFF513AA1939FEDEB +:10492000AF974A1FFA3A743E0C3B21D3858A938E87 +:10493000DE1FD176C6F383545CF43031CC1417AD4E +:10494000F8677776C68EFB8669173E372A7E23CFB7 +:104950000D9D7F06D579105C614F15C6F3462F5724 +:1049600076B7457717F0BB1F994B7B70BB8A580F02 +:10497000C7F5572C95F1D615D4CE6B901F562ECF78 +:10498000CDC439F0E19AFE4F84F0BEE45D29A9233D +:1049900009CFC756D853F09EA3DEEEC315E33311FB +:1049A0002F72ECC19819FC6EEE8F9C02EF5DD4EE75 +:1049B000E925DF67B3BA5211A779EAB91EFC0E9157 +:1049C000B750CA93352B9E4FC03582EA15F2FCDDF5 +:1049D0009117CC2A64BFF3C6ADECB0F06C2C02FF8B +:1049E0002F02CCA9FDA7E8AB84CF213ED73F8DF5A0 +:1049F000DC807E3F7DC6EE831F96EAFDF0177D5773 +:104A00008B7C7C15BF2BA3A5C25ED3F69E95EF6170 +:104A1000CEB31E2842BF35F57B33611AA82CA1F313 +:104A200092F0FC4E4CB0A8B027E6F154263B9F56BE +:104A30006FE4F7F40D76DEA1A8AF859D97F2C1A5CE +:104A40007989F23DD60BDB7975B834AB77C2B6AA5B +:104A5000F31BF23952C8E788EB817C8E3CE473A4E7 +:104A600090CF51BE60BD598E2B507E57DDDE9B65C9 +:104A70003D5B0C7937542A0A16F279EB2A80DEB9AD +:104A8000588BF3415E5CACC97DBDF84FB1D2EF14D9 +:104A90004E37D143F47BA557B6D3996CA0DBABCE90 +:104AA0003B85F17EF2589164CA9739D34DEDC77BAF +:104AB000B24DF5DF4A1B60AABFDA5B6CCA5F5B7060 +:104AC000B9A9FD75BEB1A6FCB7475E6D6A3FD93F77 +:104AD000D9949F5A7EA3A9FDF5810A53FDF419F3D9 +:104AE0004CF53706EF30E56FAEBCCBD4FE3B0B97F1 +:104AF0009AEABF6F15FCCE5D13F4AA18BCEFE394DD +:104B00007A90C563837CB8F8CD3C17F03FBACCB23D +:104B1000F042F10A4B147DEF1AECFF3EE8B9AF7A90 +:104B2000BFA9AF7A87E9DE4289CF0C1191EFA18A44 +:104B3000E674D05174BBE8FAD1F1073FF3120E3F8F +:104B4000DC3EE3061BF1A3D1230E0ECDA57CC68E61 +:104B5000076EB0113F193DEAE02F73289FBBE36D4C +:104B6000991F72F033D46FDEB14EB69F2A58F418F5 +:104B70003278FC0D21CCFFAA9CB53E69FFE0F8100D +:104B800036440C37DC6371BA22B986F73B000FDC80 +:104B90008F073C9046888E911E243A46FA32D1F116 +:104BA0006CE25FAF121D233D4C7A26CA7F4B7A26FA +:104BB000D23748CF44FA3BD22F9136937E89F45FA7 +:104BC000EA6770FA6E7D90BFFB7D7D25A747EA17E7 +:104BD00072F907F5759CFEB13EC4E59B0B959D628D +:104BE000AFBDCDF82EABEEA7D4FD92CB168A96784A +:104BF000F081165BD2C7CE4E7F63F77ABD4D7C6CD9 +:104C000090BF1285FF59E02FFAF722E27282BBC1F2 +:104C10000FDECB9E9A8787D46F38BFF01584FEBC19 +:104C2000A7DE1388EEF75E450F6B06FB7F85FE3A25 +:104C3000DED1577EF40D76E92FD7FDE87A3C82EE7F +:104C400037E73F431C911EA770A553DED3D6E3067A +:104C5000F4B8A4F19F0BDEFF6356DBD8BFE6B6893C +:104C600008E20BF4B8A331E888F03E2645307FE82F +:104C700045E58E12F95EB395D2CD5F51FB22431C00 +:104C8000548C08C19ED94BF9E3A91DCF6FFCE741B5 +:104C90008E8B1AA3E22FFA3AE8E092EDD85FEB860A +:104CA0003E84EF7BB41C82FD2DE3DF0927D4EE7137 +:104CB0004DC60DE8F117681F2FDB47D06FBFBFD27D +:104CC000F8099DFB64C3D8E66CD81936DCE9F4C159 +:104CD0006EA6FF7E001B93082E53155F63E73AF222 +:104CE000EABC14DB7AB15DA854D5FF282778127886 +:104CF0000BC478FE14CFFB2AB72FE481C94A5EFEAD +:104D00003B786BC777D178D3F1A5E3C31047C2F8DE +:104D1000D0F1A7E3371A8F3AFEA2F1A5E3F17F2B7A +:104D2000DE2EB3C9F7F4626A9CFC4EDFC5F0785BF7 +:104D3000BB9890484D86E706EF059C2BCE7B5F45E0 +:104D40007E9618CBBFEFA1D75FD54D7DF0F3767B74 +:104D5000A201DF572A5E3EA79BF67A3BFD9D0BBD65 +:104D6000FFE5DDB45F3C5EDE072B7F4FDACF5F5798 +:104D7000E726FCE9C5C30D719A8573592E162E29B5 +:104D80005F7AE91FF0A5ABCEDB4CF266B9907C8A66 +:104D90000E661BE8AF3CCA5F7D8D9247AF89924794 +:104DA000A3E5CB7183951F3B5B64FF83EF9E5E3B66 +:104DB00098EDBC66F905F15EA0E75CAF95DF9DD18B +:104DC000DF39D5DFCD1DA7F6D138BC9B4BF31B2FA8 +:104DD000827C1E7E4B8438BD9AD683F45A11E1F34F +:104DE000F33A62BCC87F1B213E943F143FE916DCB6 +:104DF000CD2B1B5AD68FDFE5E87C17F0D6C1C3F860 +:104E00005DC07FF318DE053C38CECBFEC5834E79FE +:104E10001F18FBCD9EDCB99EDFD0B9D38FCE854362 +:104E2000742E217D85CEA57EB4BED7E85C42FE9A65 +:104E300082A502DF4DF09AE37CF4EFAFF594910286 +:104E4000D23DBCAE2DFA551FC0F3F5A4FEE3B0DE93 +:104E5000D793468C037E5F4FEA6591698C0369772F +:104E6000DFEB747F6DA1BC977AAD67028FF77F018E +:104E70009EAB81DF6878DE0B991571E8CE7712D290 +:104E800072E05793FC67D1F36F1659297F1C5323A7 +:104E9000B9614CDD289EE755759773FA49BD280422 +:104EA0005C6B9C125ED17628B1B997C518773C34FB +:104EB00026B81EF8ACB134255C41F59F6C786727A5 +:104EC000F40792A31FC7BC6AACDEB53ED8655E97F7 +:104ED00071A3E2EB439953DC5DE9516C9E6AD29376 +:104EE000747AAC71EA700C317CBF9DEBE77D2BD4FA +:104EF0007BA47A7C4B9F18F9AE82FE3E26E419BE55 +:104F0000DF1825370C8F937CAD4F8CE4D31DFCCA82 +:104F1000A1CE65EA6738F8E003F25D8ED5BDFCCF1F +:104F2000611DBA9DF65C9F787EEF644C645022F25E +:104F3000E5B00BD0540FAA38AC6F0D5AE8CA213C2B +:104F4000BCD53FD8C4FBCEFAB515FCF18D3C4DF471 +:104F5000D060D71DEA62BDF022FB377AFFBF3C5814 +:104F6000E99745A2C8743F4EE185E6C7F138E7DE10 +:104F7000B5725CDC1891FF08EC166587ED8898EE39 +:104F80008C974C937EC3F18765FC4FA71EDACEF356 +:104F90007CC5A389C7687D316916E135F0B1586FCA +:104FA0009CF01AE6135F906CCABB7DBD4DED1347B4 +:104FB000E698EA93FC034DF53DCA4B4CF99E812BD4 +:104FC0004CED7BCD2835E5D383D798DA67544E3145 +:104FD000E5FB2EBCC9D43EAB6EA6A93E3B5465AAE8 +:104FE000D7DF0315217F7341AAE4D3F8CB5DBDC899 +:104FF000D4AEDC3587EF43E635FCC0D49FF04A7B66 +:105000004388FE015D7D810BB7948E4F33DB21CA4F +:105010003C635F068A3254BC92103E2FCE81328FA1 +:10502000D92E91E12AE7B8F98C8BC433D98BD439C6 +:1050300070A974101C78613AA8917245341DBC02A5 +:10504000BE942BFD04C6F5C24F60840BFC04C63C25 +:10505000FC04C6F6F01318EBE12730D60F3D6CC602 +:10506000FFB06633FE471C29BD247C5DDE62A60BC3 +:105070001D5FA33E9D72417CCDA07FF89C16F29CE3 +:105080001F47708A88AE78D3F1A5E3EFBF8BB7D105 +:105090005178FB42AC1D86F7DDCF54487EDDDDF94B +:1050A0007DCAE92F2D223EF87D651789D6E7F5F8F0 +:1050B000CFE8DF21F9BEB5C58D73E24B4BCB60E085 +:1050C000335DC8DF8148480D4E427FBD104502FF69 +:1050D000DEBC1B8A716E9EE9DB7EF487F8FE2EB77C +:1050E000E4D3A4F2411E6CB9CBCDF12FFABC6ECD46 +:1050F00090F13FD38B94BCE0937140371549F9D9B7 +:10510000EDF3707C7845A150F19B22F3D6C106FEE9 +:10511000B9C4C6FCD3161BBCAD08F762D4EF5CE97A +:1051200071CEE2E2BF6F321BF3EF784F709EFE4EFE +:105130006624B63FF5FFD8BA64F37BA2B5A2E33D7F +:1051400051E41F5B92AFBF7F24EBF5DF1111E158F3 +:10515000F899FBAF1726F9E131F5FEEA63EA7DCC59 +:105160000161A7294EB8331E28CCEF640EDAE63170 +:10517000D50F6E4C33F53764AFD7545F1C2930D54B +:105180000F3DEC33E55B549CD0B0E691A6EFA07FD9 +:10519000405F1871C46F2ACFAA5E3409724A5F2536 +:1051A000B75FDE526EEA2FEB4C9C0571B91B8B7218 +:1051B000E4BB8C9F064CF57CC6131C6FFDBE7C9730 +:1051C00051D77F0CFA10EB410E217F97CA417A0C20 +:1051D000E84D8FE78E8EAFEFB807E3ECBC77638CBA +:1051E0007FD7F5978E38789BDFC2F1022ADEBB832A +:1051F000EED47BAAFAFB9F4FDCD5DB4497DB8AA475 +:105200009FE95881DC275B9C324E62D9DD2E81DF1D +:10521000BF11B69674E0E7D922694F88CBF3EF004F +:10522000FD1D2B907EFC27DD9FCE43FCC3AD43E4E8 +:1052300038B7582CB74D2E94EFBC3E67D017F729DE +:10524000BA7FD427FBB93551CE47FC50BEBFA4AFBF +:1052500023CD2196F3BB62B69601A0E7EFAC6DBCFF +:10526000BF3F55DDE268B0CBDF530ADB21FF4C2C9A +:105270002539AF1876BF6F1E765D8EDFE9B2B1DDDE +:10528000E640D1ACE9241976DC7BC9A2FF061E26D4 +:1052900002BE940EF2C978E83FE14C1966D85FA4CB +:1052A0002FAAFB11F2DDFC3A07F3791D8F063CB102 +:1052B000BEFA3F757F40A873A99F24AD0EB8E8F4ED +:1052C000A3C345BF7FE2BDC31ED8E4E27B2CE5D07B +:1052D0006375788FF149BCC60E9178453BF015BDDA +:1052E0001DEE49B4BA3ADBFDBFBA2FD101DF8BDC2A +:1052F0002FEBEE3E59F47EE23F83FDA0BB7B64FAC8 +:10530000FEEAD83FA2E54619FF20E11BEE67617F68 +:10531000B5FEBB853A1C460E91FCFA98CEC743A455 +:10532000DFA6CAFB4FF81B6FFDBA02F473BBDBE1CB +:10533000859D22A8CED531FEC04FE19798B9CE2EDB +:105340003652798557EAB748E1BFAA0899CFC7B95D +:1053500022901861FE2AE5CB65F76B9EC734FCCE20 +:10536000AFB9DDED42F633D7257F47E4F6E8F753D2 +:10537000949E3CF7227AF28021EA9C1D2286B07C22 +:10538000A4FCEC954E7D5D66F9E85C58FAA9705F67 +:10539000C52AF1C47157FAF9EB853FC560E7277854 +:1053A000C6E1F7D542CB6DFCAE54347D75C0B39BDE +:1053B000388036F57E45873F47D5B7853E6BE5FAA1 +:1053C000DDB1FC8EC4A9E2E622F82B747F4EB47FD7 +:1053D000E8DC12A7407CD9B9DD6EF69FC38F9248F6 +:1053E000783F61D9953A32BB733EC116ABC9BF1045 +:1053F0009DEEC80B4E1E42F30DDA05FB6D966DB7A0 +:10540000FA9652FF6B5C07F95DA82B35FFD421BCDF +:105410001EB3BE3691CE45AB413FD7FD1FD1EBEA5F +:10542000E04BA365FCFFB9907C8FEE5CB97CB78341 +:10543000F89A1FF07E4F04584E992C482ACBFDC78E +:10544000FD2853CF17339EA69D1FC5EB0DAEBE9C06 +:10545000F3F959210BE284C5CDF2DDD1E99BC58A70 +:10546000382FE282A60F83FEB57888E4E3F9EA7C60 +:10547000E9824FB54FF0F68591CF2E5AAA319F5D44 +:10548000A4093D7E87F9AC9EFFAC41E5C7CBFCE2A9 +:105490001532DFA27E5F61ABB263607D48B13EE84A +:1054A000DDDB959D03EB438AF5A11C7C0879F02197 +:1054B000E4C18790071F420A3E84F299229009C7EF +:1054C0001BFC3CE30CFB0B7E9E71867D023F8F3103 +:1054D0000F3F8FB13DFC3CC67AF8798CF5F0F3189C +:1054E000F3F0F318DBC3CF63CC8B915777E6E1770A +:1054F000F34F36E5A7925C3ECEB0AFE1E731F60F51 +:105500003F8FA9BFE01DA6EF6F1675A6EF73172E8C +:1055100035B5BFAD4E33F9816E53EFB3CE5ADF834D +:10552000E9A43227D038A427FFEED49D76E871D6BF +:10553000A679A0D345B5713E89E7867289778B90AD +:10554000786EE7DFA3FE6C89FC3DEA45E32F1CCFB4 +:105550000B3FCA38BBF4A320851F0529FC2848E16E +:1055600047C1BBF5F0A320851F05E5F0A320851FEB +:105570000529FC2848E147410A3F0A52F851F01D2D +:10558000FC2848E1474139FC2848E14741F951F8F6 +:10559000730CF75A20E7F633E977448726FDCE638C +:1055A000CA438E35B6871C6BAC871C6BAC871C6BF3 +:1055B000CC437E35B687DC6ACCFFA5C8CBFB0CF2AA +:1055C000AAF13BC8A7C6FCE086D02BB05D5DB7E171 +:1055D000F4CB48F3132B9ED388359C7DF6F3E9F08A +:1055E0007BE5C7579424D15EB56B7F9D3E8EF2411B +:1055F00015275724DA59AE0CAAFBB9C18894FB07CA +:105600007F95CEF505051E3D1E96F953F16EC1F24C +:10561000A5EE8FD5BFF7098F957FEF4BB5EFCC5F28 +:10562000B85DF4F87A3BE68F8679E08630F879F158 +:10563000125709E229FF13DF5AA5AF0080000000CE +:105640001F8B080000000000000BDD597F5454D769 +:105650009DFFBE37338F199881C7C80F01C119103C +:105660008371D4370366D368DA27118F7F10CFE0B8 +:105670006E142CC28C0C160D28527342D3641985FB +:105680002468B48B0D1A934D7560A34DF760CE60FE +:105690004C635ABA3B099AA43D49639393DD9C3508 +:1056A000870C92B5A66ECA48CE56B39BD6FD7EEF48 +:1056B0007D8F194649FB57FF583D9EEBBDEFDEEF4E +:1056C000CFCFF7C7BD7352141ABD5680937BA1711B +:1056D000BD0B60F1902A5AB2006ACFC86E8303F006 +:1056E0004FBBA7C606B050110196E33E6DFF4223A3 +:1056F000BC6DF200FF83FB7FFC37CEC1FD4E009BEB +:1057000022B07D65653240367D8C1ABD4B00EE8D32 +:10571000811AC2732B6317EECBC0FDBEE0AAE5442D +:10572000BF5A8246AF8BF1B9A706F72D0E0AEA20C1 +:10573000EEBB497FBE05904BF4B269FFF01BA9C4D4 +:10574000E7F83A7E2E959FFBF1F174C67F5D8F30AE +:105750006840FE2B87401DC0F30E4DDEC54311038C +:10576000F1F3F7707E3A5DFFF3459203F7F9A1FD7F +:1057700091B915C8BE428013C0F43A477A9595395D +:10578000185F7DFF42407DED003B48D43C807D6545 +:105790007D5E2841BEA283F191CC2A40317E3F5BE1 +:1057A000033EA47B6F45665516D11D01A51487FBEA +:1057B0002B7E33436F66B6BB185D1416E08EA010C7 +:1057C000494355D605F7EC25B3DD1FDC753E9BF646 +:1057D000BF008A93BEE3DA373D71F9EE5487C51CEA +:1057E0005C73C105D182265A0A303A4788CB0D1026 +:1057F000F93B40FE6EC504E4971AA36C92512E98B3 +:105800009B2302F2ED3073BE5506D77B4F229F2FAC +:10581000DE36400A934AFB2EF3EF1D8FDD187F1210 +:10582000E974BC6251680E9D66F6DD2F731D7C47DE +:105830009169399EEF318181ECFC4A4A0870C97F39 +:10584000D4008E39009F8BEFE46CC4736D25A122C8 +:1058500011EDB53D7F60A9DD0070AAD4B75E413976 +:10586000AF0647D7D5229DF19E9773C86E5FF43C73 +:105870009011619455AB1BF90434FB041E6DA926ED +:1058800025FD4BC212E0F94B5DB8E30E927F6546F1 +:1058900094F4EA335D8AA24EB5F8F726FAC1FFEE1A +:1058A0009C1CC0F5A65EBE4E7F6EE2BF6D3D26BF5E +:1058B000B40C47305E8A9669EB689F07E1C03543B8 +:1058C0003A8DC6F87E5CEFFC7860C5B9B2F8F9167F +:1058D000C59675390DFFA3807213E500437D862FB1 +:1058E00001AFC9E3F5AED08A7326C483A0EE549805 +:1058F0005F4212C5C37623A861867B10011DF95D46 +:105900000BD7D3FFEEE80384E7A9F6521190FF8589 +:10591000321E4FF57B0C0CE7300CA15281E6F7B13B +:1059200038AD7F4555043CF71EDA831CB8FE4601AE +:10593000F3C7075D0E367FE0C66200F44375D4C23C +:10594000D637DCC863E3C61B8BD8FA7AB21DFA37A8 +:10595000FA1A84F622BFA9600A9B4F8D4088F82767 +:10596000E3D40D7215E1FE4E55189D4338BDB1824A +:10597000D1ABBDE166F4EEADF03F9E4DB80F21EE28 +:105980001DB7E27E63BDB38AF458B456008A571D32 +:10599000F7BEE0EB0CAFEB10AFB47E7F708F2987C2 +:1059A000CE0D01D3CF87EE0E5BE3F84E8E878634A3 +:1059B00068A7EF608D2EA73CA2DBBF8184BC07FFE8 +:1059C00005EB6A55B4774306FE3F9F030CD0CF36F4 +:1059D00017FFFE4AB8AEB6C708B000776620BD0212 +:1059E0002304533C7C6EE17355B2F3B90DC779665D +:1059F000089AED2CE461258E85B82EDAD93EB0F0F8 +:105A0000739083A384EBA9382204E086879D830CDE +:105A1000ED1CC95F887C2CFC9C6AE4E722746E82D2 +:105A2000F227FAFD9829BA8DF05E2F8A2CEF5619CD +:105A30003EAECAA5783C98E9E1F1CAF173498B57AB +:105A40009FA7F2AC1BCF75EC2BCD85AFC16513FAC8 +:105A50008DE2B32123FA90A000BCAF80BAFA6E8029 +:105A60003AD0EC857200E27E9336FF4A79E4A35E79 +:105A700017B3339BFF5A09D40691FE3EEB0FBD24AA +:105A80005F3C0F7A550A8B34970A3ED7AD7A6C3E4D +:105A9000103E788783E8713FD64B7D265A47C098E1 +:105AA000282E9A5CBC4E8091E3F2D2BE575FDA2F6B +:105AB000C4E5BE64825AE667888D53DE3AB27EAE94 +:105AC0007BBF964F0957CF6D9F3740FB27F57A85EF +:105AD00071E140B0BCD86566E33F77C9E040C30DD3 +:105AE00075CD65F397304E680C7795B1F5D35D0AA7 +:105AF0009B9FE9BA9BCD7FDAA5B2F9D9AEB56CFC14 +:105B0000599797ADB73ABC9F29CB89699FD98BF537 +:105B100011CA62CF9E40FE0D5D12903C1365DC1EE3 +:105B2000C7B7A7AAA4C7F147249617C1185D44FBBD +:105B3000EBA50BE7CDCEB81D2E76FED0849E24B308 +:105B4000973A90CEA6768B4279DBE7F1FE81F2465A +:105B50009A4B9128CFF85C21C18176CD97793CCCC6 +:105B60002F89B91FC2F1AC9BF3AB2EE67571BE0154 +:105B7000CE01E2CA95A3FE91E4F4797C40B8D83214 +:105B8000E27EB3C041752A5322FF34E462DCB03CAC +:105B9000142B5A6F8BDB798E9BD7DDB354E3719C4A +:105BA00024BBB37DA1DE6294AF2E4B667647DCF654 +:105BB000A4D869BFC8F6119EC5045C4B6054C92FB8 +:105BC00052A714EA4692989D54C9C3E2050CF6B850 +:105BD0009D304E548A9FB87DE437C96E319BE418DE +:105BE000A47A625DB88670EFEF13EC940FAA0CD51F +:105BF0006F12DD8E43CEE214B45395262FD49A59FA +:105C00003C346BF5ADE370899447FBF60932CDABBC +:105C1000ED0E4627765090071D1457B8CF13D73B8B +:105C200070F41B2C2E02211CCB678F9F6F1F1A2D27 +:105C30007C8D70175125923720637A7025C4579F49 +:105C4000C0709C3C5FEE3670DC03AC263B6DDEED35 +:105C500094B65869FEB6A9C3457A3866F41DB82FC4 +:105C600042FBD0AFDC1E87506E27E7E749A0BF8517 +:105C7000E827F0D771F02DB78DD9D72F3BA43C275B +:105C80008D3293F3163B68F66F8A844C0AC96344DD +:105C9000BE38DF24874CC4674B8F5BA27CE23BC0DD +:105CA000F9F87A33A525D43F1965A910E7F5A93C81 +:105CB000FE50BE10F92B8076B15B890FF695D65B4E +:105CC000EDE3D7E40DF4654ACD33D60F9908DF75BF +:105CD0005ABEDFD2B34A12E9BC91EBDBA6F9D9A7D1 +:105CE000D9F33F7759F603E6F4BAFEB74A05C26521 +:105CF0007B9E5B403D1BDD3CFEDB347BEAF6A893DC +:105D0000FB983ED3F63C8CFA23C966D9CBE8231E18 +:105D1000821437817E4E3FD0EF975C386E35FAA4FF +:105D2000798CBF8DD19BE67BF4758DAF4521BE206C +:105D3000FB8A080F970F6F2C627AF43F6322BBD95E +:105D400014C71AEA3311070C973A1E1ACA79FCE9EC +:105D5000FA77B98D8C7E57523CE9F5488FABC0017C +:105D60003FA8C8B7692ED6C7DBC4951E4F7A7CD52D +:105D700041B48EEAF631C91B992BC4E31EEB61FBDB +:105D8000E9DBD489B39AFD36697E40BBB07CA27F43 +:105D90007F51F3433DD935E13CD123BAFDFAF7CA2F +:105DA00048E92E577CBFCEB7DECECF915F081FFDEE +:105DB0009ABEB4BF83ED1767C473D374BF3AF47847 +:105DC0000ED5BF6141A1FAD77170B4F0618AEF536B +:105DD000690A65A7ABAD2776E451713586981F74C3 +:105DE000B99AB13FA1B8DEAAD5BD40E4F6F1AD2E17 +:105DF000F29D7027C45FE0E9530B294FA2FE11CA40 +:105E0000131F9FFAF987F738E2F54AD7674BEF007F +:105E1000CB8B9B0F647A0C3C2FF6525E3CEBE6FD7D +:105E20005B530FF717A0BFA87FD3FDEAEF11587D92 +:105E300068EABC2B447DCF743FA0F933D98FBA7F79 +:105E4000753FEAF6C73A0490D02FEBF2BFAED9FD0A +:105E50009C16079B34DC6D6A59C5F2E2965E7F3969 +:105E600095DF3A6DBD2E30737DDAFEB26E7FD713AB +:105E700084E3A930B7FFD401138BFBA9211BEB17D7 +:105E8000AF76BCFAEB0DB8EF7747068AA8AE27DAF3 +:105E90009FFAC4AD5ABFF81DB43FF58BB7B1FF8769 +:105EA00054A7F4F9778E6BF62F0EFFFE67945F769A +:105EB000A52883C8B709FFDD8DF6B93AF4B4A90067 +:105EC000D7BFDD2C6492BC9FBA9D5CCFF080A998AF +:105ED000FAFF76B70CE9B4EEB82D9E715421C1BE1D +:105EE000540F047BBC5FD1F7533E1A463976EFB2AC +:105EF000A4C332A29B6997F13E62F58833EAAE2EC5 +:105F0000F7C42EFF0FE8BE3261E1F86EC5F3A7A912 +:105F10001F5AA51475B8E2FD1C648587C9FF0D3BA7 +:105F20005D1EAAF7C8FF6D01F53278386E162C8811 +:105F300086487EBDAF94303F99711C14B9FEC506EA +:105F40003EFE636A7851FBD7F47B0B5AA3D7481EF9 +:105F5000BD9FD5FBD8451E8E0BBD5FD5FBCFD9F2BB +:105F60008E042FF416A3BC521628DD8E384E753AD7 +:105F7000C9F947D7B3202DFC13C249C1CE3B3DD44C +:105F80000748A9D04B7ACCF7707C26EB39E1E4F6D0 +:105F90009C4D6E5DDE693B2018EFB6C7E5D7E5C1C5 +:105FA0001E5615A92FFBFE12D6174EEC518AC84E6D +:105FB000B3E937E1F4B1388DE581427576B6BC5A64 +:105FC00017108244D7D46963EF0E7A9C04B4BB23C4 +:105FD000C6494614E59FEA2BC9A0FC3F21605D211C +:105FE000BD765944860B4DBF93DABD8DFA531AA97D +:105FF0003FA5CB0DF5A7347F49BBC7517F4AEB5571 +:106000001E3BC305DED86CD4AFD5A76AF11FE1F5FE +:1060100077ACB384E9A9AFEBF5774C8EDAEC09796C +:10602000F7D376AD7E211D8A1FE82C8113C86AAC98 +:106030006FC226329C72F9F473BB4D9C3ED49843D8 +:10604000279CD4B7D4487E5CDFDCF98149C0D1AB52 +:10605000E1757E4958CD25FBD598658AD3AC74D5BA +:1060600049FCB2ECAA33B1FEA7796B25AA8F13CEF7 +:10607000C80299F6BB2DCCDE63DEDA357988AFB184 +:10608000A399F4F203BB0565AC93EE938FA728F4B4 +:106090003E532D42AFC0F011910AA87EEF11583E39 +:1060A000D0D77FB5C8D7E821390CC37FF80FA2FB42 +:1060B000789A42FD0D7C857C313FDE49443166A2F1 +:1060C000988E981D93DE4392DF3FE64B0EF63E120C +:1060D000FBA5010679FEFB779A37FFD204298EB81B +:1060E000DF5B34BF370FFC2D7B77081C35B03CD706 +:1060F0004CEF20383E471F31E53DD17F5F0EE12256 +:1061000070A8EA4810EB4791005ECA2F9F1AA3358A +:106110009407AE0CE4DAF750FFD4D6BD10F07B60E4 +:10612000E0C9221AAF0C586A293FAF966B56672216 +:10613000FFADCF67B2F7B98BADFC5D60FB6F4A195D +:106140000E9FD4FCD0FAA7D16332D6FB665C939144 +:10615000EE7F87D34241FCD4DA75B6C88031F37440 +:106160008A6F2FD9E9417164C337285F0BA19379F6 +:106170006CBF2357FE9A3C7299EE5388C7B6BFFF97 +:1061800088D1F95C7C675D1D9E6F6D7B399DE83C15 +:1061900078F883BB6491BDEFFCC0934D74074ECA81 +:1061A00094988F0E2C65EF8082DAE761F89DF90EE6 +:1061B00092CC67507B473CACDD3FAAEDDE0D7515F8 +:1061C000CC0FCC9FB3C9D77296BF47E9F3CDA10CD2 +:1061D00009A85F8D8024D32803EB43AF18A093F860 +:1061E000EAFD87BEFEA2968FAE64F415116EB79DD0 +:1061F0007CA688DE093FB3F179FDC98DBFA23CE5DD +:106200007B2185F7C34690143CD714E4FD2CB4D809 +:10621000D9FBA0CEFFB4278DE9B1ED68F98C7A47A0 +:106220000F24B4FE9911D686D97DED9A9BFAA48BE2 +:10623000C64833E1E022F69341E64F5E972EF61909 +:10624000D6D07A70B700D43F5CEC7BD9B6C01AEFD9 +:10625000B76C15E108E5A3B633D87F7028325CEE41 +:1062600090F57C645D43718E7D934CB8ED78EDFCC8 +:106270001AE0730061767B6ED7FAA5E9F999611689 +:10628000B7AD43BC5F680D0FBF999F45F749AD5F40 +:10629000D0FA9036AD0FD97186DBA5EDCCB8D49489 +:1062A000D8E797D99F28C08EEDC3D37B6B0FE356F9 +:1062B0003FF9ED1ECCA7C3DBEAF6601237B9F9BB94 +:1062C000011863AC8FDB5FF63EBBAFB6F568F4CA6E +:1062D000DE7FA298E95B3327B1DFF9378F899DD341 +:1062E000CFA33DD8B94E73FA52CA77D72D7C0C563E +:1062F000027B5F088E5942DD6867A3C5F729E1F28A +:10630000618377782B7BF76A5F46F84425187FFD19 +:10631000DD21D93E46CBAACF08E7235A1D8AB4A572 +:10632000F6527FA0EEB01A69EC6EB3B27E41DDF595 +:10633000BE85EEF723BF4F15857482486C54443EEA +:10634000E939BE2FE87C2E60741AA8DE4404EAD333 +:10635000277FF1DB72927BB2303606A88A49F87E3D +:10636000DD6AC4D5FF7AB4777557B49CE4CB7E83DD +:10637000E7F31F99A097EA2318BDB01ED72382A682 +:10638000DF9722CBD72342E49F88BE37C5DAEB44A0 +:106390007994728E736FB1572CC7F182DD50EA2168 +:1063A000BE266BAF80F629D4EE4152FE5C2BE15D38 +:1063B0005055E844FAA270BE8970F354CC0C74EFC7 +:1063C000EED6EC5998BF96D535C191453506DE70AD +:1063D00089C114E4FF149843B44F122D2AFB3EF2F6 +:1063E000D697028E05866BA319F8BDE06141E94698 +:1063F000511BA62EFFE83DA03C197293FEF7E7F86B +:1064000072CAD11F63536BC77DE8DFA7E4B059712F +:10641000712C9B11D795FCBF30F2BD2FD3ED68D7FF +:10642000CA58EA38D9753276F9D4AB15349AD9BB43 +:1064300061E5882192B2940E55A9D3EFBDC56C5089 +:10644000CD77C5E940DF3340F1B253AB033ABDD954 +:10645000CE4FCE7518999F62E68848FCAC6288EEF4 +:10646000619523A31F917E95666B84DE93C16CFAC0 +:10647000AFE9F764E27BA130F3F2625682E02636A0 +:106480001739DDDC7FDFCC98790FAC2CE7F79F4A1A +:10649000CD4FBA9D99F233EA158F735DEE29ABC4E7 +:1064A000DF6F5BF83BFCD408F61FB7C9AFFAF80101 +:1064B000F51FD8573C5FA25692BD75FFEBFED6F98B +:1064C000EA7ED5FD078F5C389FE1647E5BF20FC0EA +:1064D000FC55CDFCF5E5D03E8417E41BD4719FF349 +:1064E000FF9FBF92F3882F15C765B7E613CC23A98A +:1064F00077E0785DEC63F18CF9A59DECD3E86A1741 +:10650000F83B5F50F80BF3CB43746E05155BEA4321 +:106510006C227B5F01EA5F915F77676188EE0D2BEC +:10652000E63BF618E9FB63C0FB1DEDFDB4BB733120 +:10653000FF6E10F8F9EF194283DC2F41F63D981BEE +:10654000A27E91FA5BEA87BBE91CEE0B06D34227D9 +:1065500070BD3B24064B33D877D6F752AC323D5B47 +:10656000817D9FE6D3EE607C72BAF9F9D84312E3DD +:10657000E3CBE8584771EF9BE479EFB9F24C2DAFCC +:10658000479753FFFAD45E1B10DE74FFB2A779471A +:10659000DCBF06CDBFF92EEEDF7CAB1849213FB53D +:1065A000AC5613FD7401CB2BC5C9CFB1CF36937C4C +:1065B0003512CB7BFD356A1EFD6ED85F932352FFEB +:1065C000F3D33F7DF793C748BE774DAC6FEC77733D +:1065D00079FB7F51C2FAA33131F4EC563ABFC1AA1C +:1065E000503F7C44F0FD84FC67985BBE328075F0C0 +:1065F00039B1CF4C60E8B7894CEFFE6D561667FD98 +:106600004E6E87FE834B42416782BFB689DCDEC691 +:10661000583AFD8EBA62BED6AFE39CF447BF68F726 +:1066200077FC9EF0BBC5A4D6174C6AF69F5E075C4C +:106630004F38FFE7D67766FBFE95C5B5F6BD3F53ED +:10664000CDA33E27D9BE87F7B87B1792DF6DA24C4A +:106650007DF66C7E49DB281D3B91E00F2A5BA46729 +:106660005AF70AE67FDD3F47F4FA8378233F24FB9D +:106670000BE671FFEBF7EEF9C1F167D98F22105DE0 +:10668000447181F15446F7B431CA47CBE2F814544F +:106690008C417B1C8F7A5E4A8E4BA113F354FAED2A +:1066A000E232CCEAEC7531A2C7E504D907FE4571A8 +:1066B000D0BC7BD7853C1AFF82B8BC4275F37A8E7A +:1066C000EF2A9DCFD2F240BE21B488E88F89D0A2B4 +:1066D000FDBE27909D3FD1ECD78879660EC683A971 +:1066E00082BF1BC0A349F946B37783B6FF93CF316E +:1066F0006E96C5FDD5A8DD4B1A1E4D19A7BCD5F069 +:10670000A889C74367959A4487E55D9D0E38AE65B5 +:10671000933EFAB9C66DFF934D7DEDACE7A3F3321E +:10672000E9774E96F750DFD7246F4A05EA3B061308 +:106730004BC83EEFFCD1C07E0F18477B3B08272F8C +:10674000E4F27B5326A79151C1FBF73CB337BD025E +:10675000C777DCBF2DA5DF2FE0ABD17924C7B16CA3 +:106760006F26D1DBB7608AFDAE3196173311DDB1EC +:10677000BADF15925C8D9D6FB1BCDCA8E7E53F6385 +:10678000A764FBE8768BEB3B954D7DEB5FCB5E3AE8 +:106790004EFE0F3CE3FEEA60210000000000000016 +:1067A0000000004000000000000000000000004069 +:1067B00000000000000000000000002800000000B1 +:1067C00000000000000000100000000000000000B9 +:1067D0000000004000000000000000000000001069 +:1067E00000000000000000000000000800000000A1 +:1067F0000000000000000000000000000000000099 +:106800000000000000000000000000000000000088 +:106810000000000000000000000000000000000078 +:106820000000000000000000000000000000000068 +:106830000000000000000000000000000000000058 +:106840000000000000000000000000000000000048 +:106850000000000000000000000000000000000038 +:106860000000000000000000000000000000000028 +:106870000000000000000000000000000000000018 +:106880000000000000000000000000000000000008 +:1068900000000000000000000000000000000000F8 +:1068A00000000000000000000000000000000000E8 +:1068B00000000000000000000000000000000000D8 +:1068C00000000000000000000000000000000000C8 +:1068D00000000000000000000000000000000000B8 +:1068E00000000000000000000000000000000000A8 +:1068F0000000000000000000000000000000000098 +:106900000000000000000000000033200010000024 +:106910000000000800003328001000000000000202 +:106920000000332000100000000000108000000074 +:1069300000000000000000008000000000000000D7 +:1069400000000000800000000000000000000000C7 +:10695000800000000000000000000000000033582C +:10696000000100040000000100003360000000008E +:106970000000000200003368000000000000000872 +:106980000000336C0000000000000002000039200D +:10699000000000000000000800003AF8004000007D +:1069A000000000400000393800800000000000486E +:1069B00000003A38004000000000000800003A489B +:1069C00000400000000000180000337000280000A4 +:1069D0000000002800003C2000080000000000012A +:1069E00000003C21000800000000000100003C22E3 +:1069F0000008000000000001000020080010000056 +:106A0000000000100000200000000000000000084E +:106A100080000000000000000000000000000000F6 +:106A20000000000000000000000000000000000066 +:106A30000000000000000000000000000000000056 +:106A40000000000000000000000000000000000046 +:106A50000000000000000000000000000000000036 +:106A60000000000000000000000000000000000026 +:106A70000000000000000000000000000000000016 +:106A80000000000000000000000000000000000006 +:106A900000000000000000000000000000000000F6 +:106AA00000000000000000000000000000000000E6 +:106AB00000000000000000000000000000000000D6 +:106AC00000000000000000000000000000000000C6 +:106AD00080000000000000000000000080000000B6 +:106AE0000000000000000000800000000000000026 +:106AF0000000000080000000000000000000000016 +:106B00008000000000000000000000008000000085 +:106B100000000000000000008000000000000000F5 +:106B200000000000800000000000000000000000E5 +:106B30008000000000000000000000008000000055 +:106B400000000000000000008000000000000000C5 +:106B500000000000800000000000000000000000B5 +:106B60000000000000000000000000000000000025 +:106B70000000000000000000000000000000000015 +:106B80000000000000000000000000000000000005 +:106B90000000000000000000000000008000000075 +:106BA0000000000000000000800000000000000065 +:106BB0000000000080000000000000000000000055 +:106BC0000000000000000000000000008000000045 +:106BD0000000000000000000800000000000000035 +:106BE0000000000080000000000000000000000025 +:106BF0000000000000000000000000000000000095 +:106C00000000000000000000000000000000000084 +:106C10000000000000000000000000000000000074 +:106C20000000000000000000000000000000000064 +:106C300000000000000000008000000000000000D4 +:106C40000000000000000000000000000000000044 +:106C5000000019C800000000000000080000200823 +:106C600000100000000000100000200000000000E4 +:106C7000000000080000487000080000000000014B +:106C80000000487100080000000000010000487288 +:106C90000008000000000001000040400038000033 +:106CA000000000388000000000000000000000002C +:106CB00080000000000000000000000080000000D4 +:106CC0000000000000000000800000000000000044 +:106CD0000000000080000000000000000000000034 +:106CE00080000000000000000000000080000000A4 +:106CF0000000000000000000800000000000000014 +:106D00000000000080000000000000000000000003 +:106D10008000000000000000000000008000000073 +:106D20000000000000000000000000000000000063 +:106D30000000000000000000000000000000000053 +:106D40000000000000000000000000000000000043 +:106D50000000000000000000000000000000000033 +:106D600000000000800000000000000000000000A3 +:106D70008000000000000000000000000000000093 +:106D80000000000000000000800000000000000083 +:106D90000000000080000000000000000000000073 +:106DA00080000000000000000000000080000000E3 +:106DB0000000000000000000800000000000000053 +:106DC0000000000080000000000000000000000043 +:106DD00000004000004000000000004000004800AB +:106DE00000400000000000400000482E004000006D +:106DF0000000000100004800004000020000000107 +:106E000000004801004000020000000000003000C7 +:106E10000040000000000040800000000000000072 +:106E200000000000000030000008004000000004E6 +:106E300000003004000800400000000400003B8017 +:106E4000002800000000002800003BD000100000D7 +:106E50000000001000003BDA0010000000000001FC +:106E600000003800008000000000008000003800B2 +:106E7000000800800000000200003900004000000F +:106E8000000000400000200800100000000000107A +:106E900000002000000000000000000800005198E1 +:106EA00000080000000000010000519900080000E7 +:106EB000000000010000519A0008000000000001DD +:106EC000000039800010000400000004000051A8F8 +:106ED0000030001800000010000051B00030001811 +:106EE0000000000280000000000000000000000020 +:106EF0008000000000000000000000008000000092 +:106F00000000000000000000800000000000000001 +:106F100000000000800000000000000000000000F1 +:106F20008000000000000000000000008000000061 +:106F30000000000000000000000000000000000051 +:106F40000000000000000000000000000000000041 +:106F50000000000000000000000000000000000031 +:106F600000000000000000008000000000000000A1 +:106F70000000000080000000000000000000000091 +:106F80000000000000000000000000008000000081 +:106F90000000000000000000800000000000000071 +:106FA0000000000080000000000000000000000061 +:106FB00080000000000000000000000080000000D1 +:106FC0000000000000000000000023E80080000036 +:106FD0000000008000000001000000000000000030 +:106FE0000000200800100000000000100000200039 +:106FF000000000000000000800002E7000080000E3 +:107000000000000100002E710008000000000001D7 +:1070100000002E720008000000000001000024E8BB +:10702000003800000000003800002DD000080000EB +:1070300000000008800000000000000000000000C8 +:107040008000000000000000000000008000000040 +:1070500000000000000000008000000000000000B0 +:1070600000000000800000000000000000000000A0 +:107070008000000000000000000000000000000090 +:107080000000000000000000000000000000000000 +:1070900000000000000000000000000000000000F0 +:1070A0000000000000000000000000008000000060 +:1070B0000000000000000000800000000000000050 +:1070C00000000000000000000000000000000000C0 +:1070D00080000000000000000000000080000000B0 +:1070E0000000000000000000800000000000000020 +:1070F0000000000080000000000000000000000010 +:1071000080000000000000000000000000002500DA +:1071100000400000000000080000250800400000BA +:1071200000000020800000000000000000000000BF +:10713000800000000000000000000000800000004F +:10714000000000000000000000003000000000000F +:1071500000001000000050A100000000000000012D +:10716000000050B80000000000000002000050C8FD +:1071700000900008000000088000000000000000EF +:10718000000000000000296000080000000000016D +:1071900000002961000800000000000100002970C3 +:1071A0000008000400000002000029780008000424 +:1071B000000000048000000000000000000000004B +:1071C00000002FB0000800000000000400002FB4F1 +:1071D000000800000000000400002FC000000000B4 +:1071E0000000000800002FC8000000000000000898 +:1071F00000003000000000000000001000005040BF +:10720000000100010000000100005000000000002B +:10721000000000200000080800100000000000042A +:107220000000080C0010000000000001000008B77A +:107230000000000000000001000008B6000000008F +:1072400000000001000010000040002000000004C9 +:10725000000010040040002000000004000010089E +:1072600000400020000000020000100A0040002042 +:10727000000000020000100C00400020000000018F +:107280000000100D00400020000000010000100E62 +:10729000004000200000000100001010004000200D +:1072A0000000000400001014004000200000000452 +:1072B0000000101800400020000000040000101C16 +:1072C00000400020000000040000300001000080A9 +:1072D00000080004000030040100008000080004E1 +:1072E0000000000A000000000000000000003068FC +:1072F00001000080000000010000306901000080F2 +:10730000000000010000306C01000080000000025D +:107310000000306E010000800000000200003070AC +:1073200001000080000000040000307401000080B3 +:107330000000000400003066010000800000000230 +:107340000000306401000080000000010000306097 +:107350000100008000000002000030620100008097 +:107360000000000200003050010000800000000416 +:10737000000030540100008000000004000030587C +:1073800001000080000000040000305C010000806B +:10739000000000040000307C0100008000000001BB +:1073A0000000307D010000800000000100001C187A +:1073B000001000000000000400001C30001000005D +:1073C0000000000400001C38001000000000000451 +:1073D00080000000000000000000000080000000AD +:1073E000000000000000000080000000000000001D +:1073F000000000008000000000000000000000000D +:1074000000004C10000800000000000200004C12B8 +:10741000000800000000000200004C1400080000FA +:107420000000000200004C160008000000000002EE +:1074300000004C20000800000000000800004C0084 +:10744000000800000000000200004C0200080000DC +:107450000000000100004C040008000000000002D1 +:1074600000004C30000800000000000800004C4004 +:10747000000800000000000400004C440008000068 +:107480000000000100004C50000800000000000255 +:1074900000004C54000800000000000200004C6096 +:1074A00000080000000000040000140000080000B4 +:1074B00000000002000014020008000000000001AB +:1074C0000000140400080000000000020000141076 +:1074D0000008000000000002000014140008000072 +:1074E0000000000200001416000800000000000266 +:1074F000000019B800080000000000080000142077 +:107500000008000000000002000014240008000031 +:1075100000000002000019C8000800000000000878 +:1075200000002C10000800000000000100002C11D9 +:10753000000800000000000100002C1200080000FC +:107540000000000100002C130008000000000001F2 +:1075500000002C00000800000000000200002C02C7 +:10756000000800000000000100002C0400080000DA +:107570000000000200002C300008000000000002A3 +:1075800000002C32000800000000000200002C3433 +:10759000000800000000000200002C20000800008D +:1075A0000000000100002C21000800000000000184 +:1075B00000002C22000800000000000100002C2325 +:1075C000000800000000000100002C24000800005A +:1075D0000000000100002C25000800000000000150 +:1075E00000002C26000800000000000100001480AC +:1075F00000080000000000020000148200080000E3 +:1076000000000001000014840008000000000002D7 +:107610000000149200C00018000000020000149046 +:1076200000C00018000000020000149C00C00018F8 +:10763000000000080000149400C0001800000008BA +:10764000000014A700C0001800000001000014A4EE +:1076500000C0001800000002000014A600C00018BE +:1076600000000001000016100008000000000008E3 +:10767000000016200008000000000008000016307E +:10768000000800000000000880000000000000006A +:10769000000000008000000000000000000000006A +:1076A00080000000000000000000000080000000DA +:1076B000000000000000000080000000000000004A +:1076C000000000008000000000000000000000003A +:1076D00080000000000000000000000080000000AA +:1076E000000000000000000080000000000000001A +:1076F000000000008000000000000000000000000A +:107700008000000000000000000000008000000079 +:1077100000000000000000008000000000000000E9 +:1077200000000000800000000000000000000000D9 +:107730008000000000000000000000008000000049 +:1077400000000000000000008000000000000000B9 +:1077500000000000800000000000000000000000A9 +:107760008000000000000000000000008000000019 +:107770000000000000000000800000000000000089 +:107780000000000080000000000000000000000079 +:1077900080000000000000000000000080000000E9 +:1077A0000000000000000000800000000000000059 +:1077B0000000000080000000000000000000000049 +:1077C00080000000000000000000000080000000B9 +:1077D0000000000000000000800000000000000029 +:1077E0000000000080000000000000000000000019 +:1077F0008000000000000000000000008000000089 +:1078000000000000000000008000000000000000F8 +:1078100000000000800000000000000000000000E8 +:107820008000000000000000000000008000000058 +:1078300000000000000000008000000000000000C8 +:1078400000000000800000000000000000000000B8 +:107850008000000000000000000000008000000028 +:107860000000000000000000800000000000000098 +:107870000000000080000000000000000000000088 +:1078800080000000000000000000000080000000F8 +:107890000000000000000000800000000000000068 +:1078A0000000000080000000000000000000000058 +:1078B00080000000000000000000000080000000C8 +:1078C0000000000000000000800000000000000038 +:1078D0000000000080000000000000000000000028 +:1078E0008000000000000000000000008000000098 +:1078F0000000000000000000800000000000000008 +:1079000000000000800000000000000000000000F7 +:107910008000000000000000000000008000000067 +:1079200000000000000000008000000000000000D7 +:1079300000000000800000000000000000000000C7 +:1079400000000000000000000000000080000000B7 +:107950000000000000000000000000000000000027 +:087960000702330000000000E3 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw.ihex +++ linux-3.5.0/firmware/bnx2x/bnx2x-e1h-7.2.51.0.fw.ihex @@ -0,0 +1,10626 @@ +:100000000000224800000068000005D8000022B867 +:10001000000036E4000028980000007000005F80B7 +:100020000000857C00005FF80000009C0000E5787F +:1000300000009B900000E61800000084000181B0E1 +:10004000000042E0000182380000008C0001C52061 +:100050000000C06C0001C5B0000011B8000286208D +:1000600000000004000297E0020600DC000000012E +:100070000306100002000000010600D80000000086 +:100080000306020000030200020600DC000000007C +:10009000010600B800000000010600C800000000D2 +:1000A0000206016C00000000010600BC0000000018 +:1000B000010600CC000000000206017000000000F4 +:1000C000020D004400000032030D004C0004020346 +:1000D000040D005C00000004030D008C00110207F9 +:1000E000020D015C00000001030D01640002021812 +:1000F000020D020400000001030D020C0003021AAD +:10010000030D02200002021D040D028000000012F7 +:10011000030D03000018021F040D03600000000C13 +:10012000040D400000000A00030D0004000F023718 +:10013000020D01140000000D020D01180000002D39 +:10014000020D01140000001D020D01180000003D09 +:10015000020D01140000004D020D01180000006D99 +:10016000020D01140000005D020D01180000007D69 +:10017000031010000003024602101050000000019E +:10018000071011000010024908101140000000087B +:100190000710116000100259081011A0000000188B +:1001A000071018000200026904104C000000010052 +:1001B00002104028000000100210404400003FFFE1 +:1001C0000210405800280000021040840084924A27 +:1001D0000210405800000000030C200800030469CE +:1001E000030C201C0004046C030C20380011047064 +:1001F000040C207C0000004F030C21B80011048186 +:10020000040C21FC0000000F030C223800040492AF +:10021000010C224800000000010C224C00000000EC +:10022000010C225000000000010C225400000000CC +:10023000010C225800000000010C225C00000000AC +:10024000010C226000000000010C2264000000008C +:10025000010C226800000000010C226C000000006C +:10026000010C227000000000010C2274000000004C +:10027000010C227800000000010C227C000000002C +:100280000A00000100000001020C2000000003E849 +:100290000A00000100000002020C20000000000A19 +:1002A0000A00000100000004020C20000000000110 +:1002B000052004000084000006200780001004963A +:1002C000042200000000400004232400000000403D +:1002D00003221250001004980422B14000000020B4 +:1002E0000422C800000000060322C818000404A865 +:1002F0000422C8280000000C0322C858000404ACE3 +:100300000422C8680000000C0322C898000404B04E +:100310000422C8A80000000C0322C8D8000404B4BA +:100320000422C8E80000000C0322C918000404B825 +:100330000422C9280000000C0322C958000404BC90 +:100340000422C9680000000C0322C998000404C0FC +:100350000422C9A80000000C0322C9D8000404C468 +:100360000422C9E80000000C0322CA18000404C8D3 +:100370000422CA280000000C0322CA58000404CC3E +:100380000422CA680000000C0322CA98000404D0AA +:100390000422CAA80000000C0322CAD8000404D416 +:1003A0000422CAE80000000C0322CB18000404D881 +:1003B0000422CB280000000C0322CB58000404DCEC +:1003C0000422CB680000000C0322CB98000404E058 +:1003D0000422CBA80000000C0322CBD8000404E4C4 +:1003E0000422CBE80000000C0322CC18000404E82F +:1003F0000422CC280000000C0322CC58000404EC9A +:100400000422CC680000000C0322CC98000404F005 +:100410000422CCA80000000C0322CCD8000404F471 +:100420000422CCE80000000C0322CD18000404F8DC +:100430000422CD280000000C0322CD58000404FC47 +:100440000422CD680000000C0322CD9800040500B2 +:100450000422CDA80000000C0322CDD8000405041E +:100460000422CDE80000000C0322CE180004050889 +:100470000422CE280000000C0322CE580004050CF4 +:100480000422CE680000000C0322CE980004051060 +:100490000422CEA80000000C0322CED800040514CC +:1004A0000422CEE80000000C0322CF180004051837 +:1004B0000422CF280000000C0322CF580004051CA2 +:1004C0000422CF680000000C0322CF98000405200E +:1004D0000422CFA80000000C0322CFD8000405247A +:1004E0000422CFE800000006022380000000001074 +:1004F00002238040000000120223808000000030B0 +:10050000022380C00000000E022383800007A12088 +:10051000022383C0000001F402238BC0000000010D +:100520000A00000200000001022383000007A1204E +:1005300002238340000001F40A00000200000002D0 +:10054000022383000000138802238340000000057B +:100550000A000002000000040223830000000138AA +:1005600002238340000000000524000032E7000061 +:10057000052480000FF80CBA06249E006AA6052800 +:100580000A000001000000010223148000000001A5 +:100590000A00000100000002022314800000000194 +:1005A0000A00000100000004022314800000000083 +:1005B00001200000000000000120000400000000F5 +:1005C00001200008000000000120000C00000000D5 +:1005D00001200010000000000120001400000000B5 +:1005E00003200020001A052A032000A4000205446D +:1005F000022002240000000002200234000000005B +:100600000220024C00000000022002E40000FFFF74 +:100610000820200000000800042211080000000249 +:1006200004221290000000060422340000000002A0 +:10063000042260400000003004228C000000001002 +:100640000422111000000002042212A8000000067B +:10065000042234080000000204226100000000307F +:1006600004228C4000000010042211180000000237 +:10067000042212C000000006042234100000000210 +:10068000042261C00000003004228C8000000010B1 +:100690000422112000000002042212D800000006EB +:1006A000042234180000000204226280000000309E +:1006B00004228CC000000010042211280000000257 +:1006C000042212F000000006042234200000000280 +:1006D000042263400000003004228D00000000105E +:1006E000042211300000000204221308000000065A +:1006F00004223428000000020422640000000030BC +:1007000004228D4000000010042211380000000275 +:1007100004221320000000060422343000000002EE +:10072000042264C00000003004228D80000000100C +:1007300004221140000000020422133800000006C9 +:1007400004223438000000020422658000000030DA +:1007500004228DC00000001004102400000000E0FE +:100760000310201C00020546021020C000000002F9 +:1007700003102004000205480217000800000002D0 +:100780000217002C00000003031700380002054A7E +:10079000031700480005054C0317006000050551CC +:1007A0000317007800020556021700040000000F2E +:1007B0000210800000001080041080400000000241 +:1007C000021080AC00000000021080380000001011 +:1007D00002108100000000000410812000000002CF +:1007E00002108008000002B5021080100000000016 +:1007F000021081080001FFFF041082000000004A7F +:1008000004108140000000020210800000001A80E5 +:100810000410900000000024041091200000004A01 +:10082000041093700000004A041095C00000004AB4 +:1008300002108004000010800410804800000002B4 +:10084000021080B0000000010210803C0000001087 +:100850000210810400000000041081280000000242 +:100860000210800C000002B502108014000000008D +:100870000210810C0001FFFF041084000000004AF8 +:1008800004108148000000020210800400001A8059 +:100890000410909000000024041092480000004AC8 +:1008A000041094980000004A041096E80000004AE2 +:1008B0000210800000001080041080400000000240 +:1008C000021080AC0000000202108038000000100E +:1008D00002108100000000000410812000000002CE +:1008E00002108008000002B5021080100000000015 +:1008F000021081080001FFFF041082000000004A7E +:1009000004108140000000020210800000001A80E4 +:100910000410900000000024041091200000004A00 +:10092000041093700000004A041095C00000004AB3 +:1009300002108004000010800410804800000002B3 +:10094000021080B0000000030210803C0000001084 +:100950000210810400000000041081280000000241 +:100960000210800C000002B502108014000000008C +:100970000210810C0001FFFF041084000000004AF7 +:1009800004108148000000020210800400001A8058 +:100990000410909000000024041092480000004AC7 +:1009A000041094980000004A041096E80000004AE1 +:1009B000021080000000108004108040000000023F +:1009C000021080AC0000000402108038000000100B +:1009D00002108100000000000410812000000002CD +:1009E00002108008000002B5021080100000000014 +:1009F000021081080001FFFF041082000000004A7D +:100A000004108140000000020210800000001A80E3 +:100A10000410900000000024041091200000004AFF +:100A2000041093700000004A041095C00000004AB2 +:100A300002108004000010800410804800000002B2 +:100A4000021080B0000000050210803C0000001081 +:100A50000210810400000000041081280000000240 +:100A60000210800C000002B502108014000000008B +:100A70000210810C0001FFFF041084000000004AF6 +:100A800004108148000000020210800400001A8057 +:100A90000410909000000024041092480000004AC6 +:100AA000041094980000004A041096E80000004AE0 +:100AB000021080000000108004108040000000023E +:100AC000021080AC00000006021080380000001008 +:100AD00002108100000000000410812000000002CC +:100AE00002108008000002B5021080100000000013 +:100AF000021081080001FFFF041082000000004A7C +:100B000004108140000000020210800000001A80E2 +:100B10000410900000000024041091200000004AFE +:100B2000041093700000004A041095C00000004AB1 +:100B300002108004000010800410804800000002B1 +:100B4000021080B0000000070210803C000000107E +:100B5000021081040000000004108128000000023F +:100B60000210800C000002B502108014000000008A +:100B70000210810C0001FFFF041084000000004AF5 +:100B800004108148000000020210800400001A8056 +:100B90000410909000000024041092480000004AC5 +:100BA000041094980000004A041096E80000004ADF +:100BB0000200A468000B01C80300A29400040558B9 +:100BC0000A000001000000800200A5F800000000FB +:100BD0000A000001000001000200A5F80000000169 +:100BE0000200A270000000000200A27400000000D9 +:100BF0000200A270000000000200A27400000000C9 +:100C00000200A270000000000200A27400000000B8 +:100C10000200A270000000000200A27400000000A8 +:100C2000030100B40002055C020100DC00000001C9 +:100C3000030101000002055E0201007C003000009B +:100C400002010084000000280201008C0000000066 +:100C50000201013000000004020102440000001FF4 +:100C60000201025C000000010201032800000000F4 +:100C70000201055400000030020160580000FFFF2F +:100C800002016070000000070201608000000001A6 +:100C9000020100C400000001020100CC00000001BC +:100CA000020100F800000001020100F00000000154 +:100CB00002010080003000000201008800000028CE +:100CC0000201009000000000020101340000000455 +:100CD000020102480000001F020102DC00000001C6 +:100CE0000201032C00000000020105640000003036 +:100CF0000201605C0000FFFF020160740000000759 +:100D00000201608400000001020100C8000000012F +:100D1000020100D000000001020100FC00000001FF +:100D2000020100F40000000104010138000000117C +:100D30000401017C000000110401013800000011D1 +:100D40000401017C000000110401013800000011C1 +:100D50000401017C000000110401013800000011B1 +:100D60000401017C000000110214000000000001D9 +:100D70000214000C00000001031400400002056092 +:100D80000214000C0000000002140000000000002B +:100D90000214006C000000000214000400000001B6 +:100DA00002140030000000010214000400000000E2 +:100DB0000214005C000000000214000800000001A2 +:100DC00002140034000000010214000800000000BA +:100DD0000214006000000000030400040012056219 +:100DE00002040054000000430204005C00000006FE +:100DF000020400700000000403040078000405747D +:100E000004040088000000050304009C000305782A +:100E1000040400A800000004030400B80005057BDA +:100E2000040400CC00000004030400DC000405807E +:100E3000040400EC00000004010401240000000090 +:100E400001040128000000000104012C0000000042 +:100E50000104013000000000020401340000000F12 +:100E6000020401D000008906021205B00000000152 +:100E700003120490002205840312066C000205A6EA +:100E800002120388000000640212039000000008B0 +:100E90000312039C000305A8031203BC000305AB67 +:100EA000021203D0000000000212036C00000001D7 +:100EB000021203680000003F031201BC003C05AEB3 +:100EC000031202B0000205EA03120324000205EC3B +:100ED000021205B400000001021201B0000000017E +:100EE00007103800000505EE07103820000505F34F +:100EF00007103C00000505F803168030000805FDCA +:100F000002168054000000020316806000050605EA +:100F10000416807400000007031680900002060A81 +:100F20000316809C0005060C041680B00000000724 +:100F3000031680CC00080611021680F0000000079E +:100F4000041680F40000000C031681240004061926 +:100F5000041681340000000C031681640032061D63 +:100F6000031682340007064F041682500000000466 +:100F7000031682600002065604168268000000080C +:100F80000316828800080658041682A80000000A8A +:100F900002168804000000040316880C0010066086 +:100FA0000316E000001006700416E40C0000000CAC +:100FB0000316E43C000406800416E44C0000000C18 +:100FC0000316E47C002E06840416E53400000004B9 +:100FD0000316E544000206B20416E54C00000008C2 +:100FE0000316E56C000606B40316E6BC000806BA54 +:100FF000021680EC000000FF03040408001406C27F +:10100000020404CC0000000103050044000206D6DF +:1010100003050050000406D8040500600000000429 +:1010200003050090001306DC020501140000000116 +:101030000305011C000206EF020502040000000186 +:101040000305020C000206F10305021C000306F36F +:10105000040502400000000A03050280002006F695 +:101060000405400000000D000305000400100716F1 +:10107000020500E00000000E020500E40000002E62 +:10108000020500E00000001E020500E40000003E32 +:10109000020500E00000004E020500E40000006EC2 +:1010A000020500E00000005E020500E40000007E92 +:1010B00004164024000000020316403000030726F7 +:1010C0000216404400000020021640700000001C80 +:1010D0000216420800000001021642100000000142 +:1010E0000216422000000001021642280000000102 +:1010F00002164230000000010216423800000001D2 +:1011000002164260000000020A0000010000000117 +:101110000216401C0003D0900A00000100000002EB +:101120000216401C000009C40A000001000000046F +:101130000216401C0000009C021640000000000146 +:10114000021640D8000000010316400800030729DA +:101150000216424000000000021642480000000053 +:101160000816427000000002021642500000000003 +:1011700002164258000000000816428000000002DB +:10118000030420080004072C0304201C000407307B +:1011900002042038000000200404203C0000001F4E +:1011A000020420B800000001040420BC0000005F1D +:1011B0000304223800040734010422480000000020 +:1011C0000104224C00000000010422500000000035 +:1011D0000104225400000000010422580000000015 +:1011E0000104225C000000000104226000000000F5 +:1011F00001042264000000000104226800000000D5 +:101200000104226C000000000104227000000000B4 +:101210000104227400000000010422780000000094 +:101220000104227C000000000A000001000000010F +:1012300002042000000003E80A0000010000000290 +:10124000020420000000000A0A000001000000045F +:10125000020420000000000105180400006F0000D7 +:101260000618076000140738041A00000000400048 +:10127000041B240000000040031A1EC80002073AA5 +:10128000031A40400004073C041A405000000006C6 +:10129000031A406800020740031A52C000020742C6 +:1012A000031A800003F90744041A8FE400000007C2 +:1012B000031AA08000100B3D021B800000000034C8 +:1012C000021B804000000018021B80800000000C00 +:1012D000021B80C000000020021B83800007A120A9 +:1012E000021B83C0000001F4021B8BC00000000140 +:1012F0000A00000200000001021B83000007A12079 +:10130000021B8340000001F40A00000200000002FA +:10131000021B830000001388021B834000000005AD +:101320000A00000200000004021B830000000138D4 +:10133000021B834000000000051C00002F830000FA +:10134000051C800033740BE1051D0000228118BECE +:10135000061D505055F60B4D0A000001000000011B +:10136000021B1480000000010A00000100000002BE +:10137000021B1480000000010A00000100000004AC +:10138000021B148000000000011800000000000093 +:10139000011800040000000001180008000000000F +:1013A0000118000C000000000118001000000000EF +:1013B000011800140000000003180020001A0B4F51 +:1013C000031800A400020B690218022400000000A8 +:1013D00002180234000000000218024C0000000055 +:1013E000021802E4000000FF0818100000000400CA +:1013F000041A300000000010041A308000000010B1 +:10140000041A310000000010041A3180000000109E +:10141000041A330000000012041A33900000001276 +:10142000041A342000000070041A90000000000626 +:10143000041A304000000010041A30C000000010F0 +:10144000041A314000000010041A31C000000010DE +:10145000041A334800000012041A33D800000012A6 +:10146000041A35E000000070041A9018000000060D +:10147000031A400000020B6B041A50000000000227 +:10148000041A508000000012031A614000020B6D24 +:10149000041A903000000002041AA00000000002AC +:1014A000031A400800020B6F041A501000000002DB +:1014B000041A50C800000012031A614800020B71A0 +:1014C000041A903800000002041AA008000000026C +:1014D000031A401000020B73041A5020000000028F +:1014E000041A511000000012031A615000020B751B +:1014F000041A904000000002041AA010000000022C +:10150000031A401800020B77041A50300000000242 +:10151000041A515800000012031A615800020B7996 +:10152000041A904800000002041AA01800000002EB +:10153000031A402000020B7B041A504000000002F6 +:10154000041A51A000000012031A616000020B7D12 +:10155000041A905000000002041AA02000000002AB +:10156000031A402800020B7F041A505000000002AA +:10157000041A51E800000012031A616800020B818E +:10158000041A905800000002041AA028000000026B +:10159000031A403000020B83041A5060000000025E +:1015A000041A523000000012031A617000020B8509 +:1015B000041A906000000002041AA030000000022B +:1015C000031A403800020B87041A50700000000212 +:1015D000041A527800000012031A617800020B8985 +:1015E000041A906800000002041AA03800000002EB +:1015F000020E004C00000032030E005400040B8B5E +:10160000040E006400000004030E009400130B8F0E +:10161000020E014400000001030E014C00020BA267 +:10162000020E020400000001030E020C00020BA4D3 +:10163000030E021C00040BA6030E0280001B0BAA63 +:10164000040E02EC00000017040E20000000080049 +:10165000030E000400110BC5020E01100000000F64 +:10166000020E01140000002F020E01100000001FE6 +:10167000020E01140000003F020E01100000004F96 +:10168000020E01140000006F020E01100000005F46 +:10169000020E01140000007F020C10000000002860 +:1016A000030C400800040BD6030C401C00040BDAAA +:1016B000030C403800050BDE040C404C0000005BBE +:1016C000030C41B800050BE3040C41CC0000001BE7 +:1016D000030C423800040BE8010C424800000000F3 +:1016E000010C424C00000000010C425000000000C0 +:1016F000010C425400000000010C425800000000A0 +:10170000010C425C00000000010C4260000000007F +:10171000010C426400000000010C4268000000005F +:10172000010C426C00000000010C4270000000003F +:10173000010C427400000000010C4278000000001F +:10174000010C427C00000000010C428000000000FF +:101750000A00000100000001020C4000000003E844 +:101760000A00000100000002020C40000000000A14 +:101770000A00000100000004020C4000000000010B +:1017800005300400009C00000630076800130BECD5 +:101790000432000000004000043324000000004038 +:1017A00004323E800000001003323EC000020BEE07 +:1017B000033274C000080BF00332850000100BF8F0 +:1017C000023380000000001A023380400000004E07 +:1017D0000233808000000010023380C0000000202F +:1017E000023383800007A120023383C0000001F48C +:1017F00002338BC0000000010A000002000000015B +:10180000023383000007A12002338340000001F46B +:101810000A00000200000002023383000000138867 +:1018200002338340000000050A00000200000004AB +:1018300002338300000001380233834000000000BF +:1018400005340000366900000534800030BC0D9B73 +:1018500005350000346819CA063577D051060C08E2 +:101860000A000001000000010233148000000001A2 +:101870000A00000100000002023314800000000191 +:101880000A00000100000004023314800000000080 +:1018900001300000000000000130000400000000E2 +:1018A00001300008000000000130000C00000000C2 +:1018B00001300010000000000130001400000000A2 +:1018C00003300020001A0C0A033000A400020C248C +:1018D0000230022400000000023002340000000048 +:1018E0000230024C00000000023002E40000FFFF62 +:1018F000083020000000080004321000000001C081 +:1019000004321E000000003804323000000001C024 +:10191000043250000000002004325100000000207A +:101920000432520000000020043253000000002066 +:101930000432540000000020043255000000002052 +:10194000043256000000002004325700000000203E +:10195000043258000000002004325900000000202A +:1019600004325A000000002004325B000000002016 +:1019700004325C000000002004325D000000002002 +:1019800004325E000000002004325F0000000020EE +:1019900004328450000000020332846000040C26EC +:1019A00004321700000001C004321EE000000038BD +:1019B00004323700000001C00432508000000020D3 +:1019C00004325180000000200432528000000020C8 +:1019D00004325380000000200432548000000020B4 +:1019E00004325580000000200432568000000020A0 +:1019F000043257800000002004325880000000208C +:101A0000043259800000002004325A800000002077 +:101A100004325B800000002004325C800000002063 +:101A200004325D800000002004325E80000000204F +:101A300004325F800000002004328458000000025D +:101A40000332847000040C2A0432401000000002AB +:101A50000432841000000002043240200000000222 +:101A600004328418000000020432403000000002FA +:101A700004328420000000020432404000000002D2 +:101A800004328428000000020432405000000002AA +:101A90000432843000000002043240600000000282 +:101AA000043284380000000204324070000000025A +:101AB0000432844000000002043240800000000232 +:101AC0000432844800000002020200580000003284 +:101AD0000302006000040C2E0402007000000004E9 +:101AE000030200A0000E0C32030200DC00070C40D1 +:101AF000020200FC000000060202012000000000BB +:101B00000202013400000002020201B000000001E4 +:101B10000202020C000000010302021400020C4742 +:101B200002020404000000010302040C00020C493C +:101B30000302041C00040C4B0302048000200C4F21 +:101B400004020500000000120402800000002000D2 +:101B50000302000400140C6F02020108000000C818 +:101B60000202011800000002020201C4000000008D +:101B7000020201CC00000000020201D400000002B9 +:101B8000020201DC00000002020201E4000000FF8A +:101B9000020201EC000000FF0202010C000000C87C +:101BA0000202011C00000002020201C80000000045 +:101BB000020201D000000000020201D80000000271 +:101BC000020201E000000002020201E8000000FF42 +:101BD000020201F0000000FF02020108000000C83C +:101BE0000202011800000002020201C4000000000D +:101BF000020201CC00000000020201D40000000239 +:101C0000020201DC00000002020201E4000000FF09 +:101C1000020201EC000000FF0202010C000000C8FB +:101C20000202011C00000002020201C800000000C4 +:101C3000020201D000000000020201D800000002F0 +:101C4000020201E000000002020201E8000000FFC1 +:101C5000020201F0000000FF02020108000000C8BB +:101C60000202011800000002020201C4000000008C +:101C7000020201CC00000000020201D400000002B8 +:101C8000020201DC00000002020201E4000000FF89 +:101C9000020201EC000000FF0202010C000000C87B +:101CA0000202011C00000002020201C80000000044 +:101CB000020201D000000000020201D80000000270 +:101CC000020201E000000002020201E8000000FF41 +:101CD000020201F0000000FF02020108000000C83B +:101CE0000202011800000002020201C4000000000C +:101CF000020201CC00000000020201D40000000238 +:101D0000020201DC00000002020201E4000000FF08 +:101D1000020201EC000000FF0202010C000000C8FA +:101D20000202011C00000002020201C800000000C3 +:101D3000020201D000000000020201D800000002EF +:101D4000020201E000000002020201E8000000FFC0 +:101D5000020201F0000000FF02161000000000283F +:101D60000316600800030C830316601C00040C8635 +:101D700003166038000D0C8A0416606C0000001316 +:101D8000031660B800020C97041660C00000003E05 +:101D9000021661B800000001041661BC0000001FBB +:101DA0000316623800040C99011662480000000016 +:101DB0000116624C00000000011662500000000095 +:101DC0000116625400000000011662580000000075 +:101DD0000116625C00000000011662600000000055 +:101DE0000116626400000000011662680000000035 +:101DF0000116626C00000000011662700000000015 +:101E000001166274000000000116627800000000F4 +:101E10000116627C000000000A00000100000001C1 +:101E200002166000000003E80A0000010000000242 +:101E3000021660000000000A0A0000010000000411 +:101E4000021660000000000105280400008900005F +:101E50000628076800130C9D042A000000004000BB +:101E6000042B240000000040032A300000020C9FD5 +:101E7000032A400000100CA1032A840800080CB1BA +:101E8000032A93C800040CB9032A96F000020CBD83 +:101E9000042A96F800000006032A994000020CBFAD +:101EA000022A9A2800000001032AC0C000100CC1B9 +:101EB000022B800000000000022B80400000001870 +:101EC000022B80800000000C022B80C00000006606 +:101ED000022B83800007A120022B83C0000001F4A5 +:101EE000022B8BC0000000010A000002000000016C +:101EF000022B83000007A120022B8340000001F485 +:101F00000A00000200000002022B83000000138878 +:101F1000022B8340000000050A00000200000004BC +:101F2000022B830000000138022B834000000000D8 +:101F30000A00000100000020022A9A2C0000000084 +:101F4000052C0000388F0000052C80003A660E2416 +:101F5000052D000039AC1CBE052D800013C62B29B1 +:101F6000062DA7104B1E0CD10A0000010000000135 +:101F7000022B1480000000010A0000010000000292 +:101F8000022B1480000000010A0000010000000480 +:101F9000022B148000000000012800000000000057 +:101FA00001280004000000000128000800000000D3 +:101FB0000128000C000000000128001000000000B3 +:101FC000012800140000000003280020001A0CD390 +:101FD000032800A400020CED0228022400000000E7 +:101FE00002280234000000000228024C0000000019 +:101FF000022802E40000FFFF08282000000008007B +:10200000042A500000000002042A501000000002C0 +:10201000042A502000000002042A50300000000270 +:10202000042A93E000000020042A94E00000000E3F +:10203000032A951800020CEF042A95600000000E98 +:10204000032A959800020CF1042A95E00000000E86 +:10205000032A961800020CF3042A96600000000E72 +:10206000032A969800020CF5032A971000020CF739 +:10207000042A500800000002042A50180000000240 +:10208000042A502800000002042A503800000002F0 +:10209000042A946000000020042A95200000000E0D +:1020A000032A955800020CF9042A95A00000000E9E +:1020B000032A95D800020CFB042A96200000000E8B +:1020C000032A965800020CFD042A96A00000000E78 +:1020D000032A96D800020CFF032A971800020D016C +:1020E000042A50480000000E032A972000100D0318 +:1020F000042A995000000002042AC00000000002D7 +:10210000042A50800000000E032A976000100D136F +:10211000042A995800000002042AC00800000002A6 +:10212000042A50B80000000E032A97A000100D23C7 +:10213000042A996000000002042AC0100000000276 +:10214000042A50F00000000E032A97E000100D331F +:10215000042A996800000002042AC0180000000246 +:10216000042A51280000000E032A982000100D4375 +:10217000042A997000000002042AC0200000000216 +:10218000042A51600000000E032A986000100D53CD +:10219000042A997800000002042AC02800000002E6 +:1021A000042A51980000000E032A98A000100D6325 +:1021B000042A998000000002042AC03000000002B6 +:1021C000042A51D00000000E032A98E000100D737D +:1021D000042A998800000002042AC0380000000286 +:1021E0000400A0000000000C0400A0500000000249 +:1021F0000300A0EC00080D830300A18C00080D8BE8 +:102200000200A45C00000C000200A61C00000003F9 +:102210000300A06C00060D930400A08400000005DC +:102220000200A0980FE000000400A09C000000073E +:102230000300A0B8000D0D990400A22C00000004BA +:102240000300A10C00060DA60400A1240000000557 +:102250000200A1380FE000000400A13C00000007CC +:102260000300A158000D0DAC0400A23C00000004C6 +:102270000200A030000000000200A03400000000B6 +:102280000200A038000000000200A03C0000000096 +:102290000200A040000000000200A0440000000076 +:1022A0000200A048000000000200A04C0000000056 +:1022B000000000000000000000000000000000001E +:1022C000000000000000000000000000000000000E +:1022D00000000000000000000000000000000000FE +:1022E0000000000000000005000500080008000BC9 +:1022F00000000000000000000000000000000000DE +:1023000000000000000000000000000000000000CD +:10231000000B001900000000000000000019001A66 +:10232000001A001B001B001C001C001D001D001ECD +:10233000001E001F001F0020002000210021002897 +:10234000000000000000000000000000000000008D +:10235000000000000000000000000000000000007D +:1023600000000000000000000028002E0000000017 +:10237000000000000000000000000000000000005D +:10238000000000000000000000000000000000004D +:1023900000000000002E00490000000000000000C6 +:1023A000000000000000000000000000000000002D +:1023B000000000000000000000000000000000001D +:1023C000004900B6000000000000000000B600BB9D +:1023D00000BB00C000C000C500C500CA00CA00CFD5 +:1023E00000CF00D400D400D900D900DE00000000E6 +:1023F00000000000000000000000000000000000DD +:1024000000000000000000000000000000000000CC +:10241000000000000000000000DE00E200000000FC +:1024200000000000000000000000000000000000AC +:10243000000000000000000000000000000000009C +:102440000000000000E200E90000000000000000C1 +:10245000000000000000000000000000000000007C +:10246000000000000000000000000000000000006C +:1024700000000000000000000000000000E900F97A +:1024800000F901090109011901190129012901397D +:102490000139014901490159015901690000000050 +:1024A000000000000000000000000000000000002C +:1024B000000000000000000000000000000000001C +:1024C00000000000000000000169016F0000000032 +:1024D00000000000016F0170017001710171017253 +:1024E0000172017301730174017401750175017644 +:1024F000017601770177017A017A018901890198D2 +:10250000019801990199019A019A019B019B019CF3 +:10251000019C019D019D019E019E019F019F01A0C3 +:1025200001A001A601A601AA01AA01AE00000000B7 +:10253000000000000000000000000000000000009B +:10254000000000000000000000000000000000008B +:10255000000000000000000000000000000000007B +:10256000000000000000000000000000000000006B +:10257000000000000000000001AE01C000000000EB +:10258000000000000000000000000000000000004B +:10259000000000000000000000000000000000003B +:1025A0000000000001C001CF00000000000000009A +:1025B000000000000000000000000000000000001B +:1025C000000000000000000000000000000000000B +:1025D00001CF01D200000000000000000000000058 +:1025E00000000000000000000000000000000000EB +:1025F00000000000000000000000000001D201F215 +:1026000000000000000000000000000000000000CA +:1026100000000000000000000000000000000000BA +:10262000000000000000000001F201F400000000C2 +:10263000000000000000000000000000000000009A +:10264000000000000000000000000000000000008A +:102650000000000001F40201000000000000000082 +:102660000201020202020203020302040204020542 +:102670000205020602060207020702080208020912 +:102680000209021D021D0220022002230000000098 +:10269000000000000000000000000000000000003A +:1026A0000000000000000000000000000223023EC5 +:1026B000000000000000000000000000000000001A +:1026C000000000000000000000000000000000000A +:1026D0000000000000000000023E02710271027959 +:1026E00002790281028102870287028D028D0293A4 +:1026F000029302990299029F029F02A502A502ABD2 +:1027000002AB02B102B102BE0000000000000000F6 +:1027100002BE02BF02BF02C002C002C102C102C2A9 +:1027200002C202C302C302C402C402C502C502C679 +:1027300002C602C700000000000000000000000008 +:102740000000000000000000000000000000000089 +:1027500000000000000000000000000002C702E3CB +:102760000000000000000000000000000000000069 +:102770000000000000000000000000000000000059 +:10278000000000000000000002E303120312032710 +:102790000327033C033C033E033E03400340034244 +:1027A0000342034403440346034603480348034AE1 +:1027B000034A034C034C035E0000000000000000CD +:1027C000035E03660366036E036E03760376037E81 +:1027D000037E03860386038E038E03960396039E71 +:1027E000039E039F000000000000000000000000A6 +:1027F00000000000000000000000000000000000D9 +:10280000000000000000000000000000039F03BC67 +:1028100000000000000000000000000000000000B8 +:1028200000000000000000000000000000000000A8 +:10283000000000000000000003BC03F303F30401E8 +:102840000401040F040F0413041304170417041BDA +:10285000041B041F041F0423042304270427042B40 +:10286000042B042F042F04350435043B043B04419E +:102870000441044204420443044304440444044520 +:1028800004450446044604470447044804480449F0 +:1028900000000000000000000000200000004000D8 +:1028A00000006000000080000000A0000000C000E8 +:1028B0000000E000000100000001200000014000D5 +:1028C00000016000000180000001A0000001C000C4 +:1028D0000001E000000200000002200000024000B1 +:1028E00000026000000280000002A0000002C000A0 +:1028F0000002E0000003000000032000000340008D +:1029000000036000000380000003A0000003C0007B +:102910000003E00000040000000420000004400068 +:1029200000046000000480000004A0000004C00057 +:102930000004E00000050000000520000005400044 +:1029400000056000000580000005A0000005C00033 +:102950000005E00000060000000620000006400020 +:1029600000066000000680000006A0000006C0000F +:102970000006E000000700000007200000074000FC +:1029800000076000000780000007A0000007C000EB +:102990000007E000000800000008200000084000D8 +:1029A00000086000000880000008A0000008C000C7 +:1029B0000008E000000900000009200000094000B4 +:1029C00000096000000980000009A0000009C000A3 +:1029D0000009E000000A0000000A2000000A400090 +:1029E000000A6000000A8000000AA000000AC0007F +:1029F000000AE000000B0000000B2000000B40006C +:102A0000000B6000000B8000000BA000000BC0005A +:102A1000000BE000000C0000000C2000000C400047 +:102A2000000C6000000C8000000CA000000CC00036 +:102A3000000CE000000D0000000D2000000D400023 +:102A4000000D6000000D8000000DA000000DC00012 +:102A5000000DE000000E0000000E2000000E4000FF +:102A6000000E6000000E8000000EA000000EC000EE +:102A7000000EE000000F0000000F2000000F4000DB +:102A8000000F6000000F8000000FA000000FC000CA +:102A9000000FE000001000000010200000104000B7 +:102AA00000106000001080000010A0000010C000A6 +:102AB0000010E00000110000001120000011400093 +:102AC00000116000001180000011A0000011C00082 +:102AD0000011E0000012000000122000001240006F +:102AE00000126000001280000012A0000012C0005E +:102AF0000012E0000013000000132000001340004B +:102B000000136000001380000013A0000013C00039 +:102B10000013E00000140000001420000014400026 +:102B200000146000001480000014A0000014C00015 +:102B30000014E00000150000001520000015400002 +:102B400000156000001580000015A0000015C000F1 +:102B50000015E000001600000016200000164000DE +:102B600000166000001680000016A0000016C000CD +:102B70000016E000001700000017200000174000BA +:102B800000176000001780000017A0000017C000A9 +:102B90000017E00000180000001820000018400096 +:102BA00000186000001880000018A0000018C00085 +:102BB0000018E00000190000001920000019400072 +:102BC00000196000001980000019A0000019C00061 +:102BD0000019E000001A0000001A2000001A40004E +:102BE000001A6000001A8000001AA000001AC0003D +:102BF000001AE000001B0000001B2000001B40002A +:102C0000001B6000001B8000001BA000001BC00018 +:102C1000001BE000001C0000001C2000001C400005 +:102C2000001C6000001C8000001CA000001CC000F4 +:102C3000001CE000001D0000001D2000001D4000E1 +:102C4000001D6000001D8000001DA000001DC000D0 +:102C5000001DE000001E0000001E2000001E4000BD +:102C6000001E6000001E8000001EA000001EC000AC +:102C7000001EE000001F0000001F2000001F400099 +:102C8000001F6000001F8000001FA000001FC00088 +:102C9000001FE00000200000002020000020400075 +:102CA00000206000002080000020A0000020C00064 +:102CB0000020E00000210000002120000021400051 +:102CC00000216000002180000021A0000021C00040 +:102CD0000021E0000022000000222000002240002D +:102CE00000226000002280000022A0000022C0001C +:102CF0000022E00000230000002320000023400009 +:102D000000236000002380000023A0000023C000F7 +:102D10000023E000002400000024200000244000E4 +:102D200000246000002480000024A0000024C000D3 +:102D30000024E000002500000025200000254000C0 +:102D400000256000002580000025A0000025C000AF +:102D50000025E0000026000000262000002640009C +:102D600000266000002680000026A0000026C0008B +:102D70000026E00000270000002720000027400078 +:102D800000276000002780000027A0000027C00067 +:102D90000027E00000280000002820000028400054 +:102DA00000286000002880000028A0000028C00043 +:102DB0000028E00000290000002920000029400030 +:102DC00000296000002980000029A0000029C0001F +:102DD0000029E000002A0000002A2000002A40000C +:102DE000002A6000002A8000002AA000002AC000FB +:102DF000002AE000002B0000002B2000002B4000E8 +:102E0000002B6000002B8000002BA000002BC000D6 +:102E1000002BE000002C0000002C2000002C4000C3 +:102E2000002C6000002C8000002CA000002CC000B2 +:102E3000002CE000002D0000002D2000002D40009F +:102E4000002D6000002D8000002DA000002DC0008E +:102E5000002DE000002E0000002E2000002E40007B +:102E6000002E6000002E8000002EA000002EC0006A +:102E7000002EE000002F0000002F2000002F400057 +:102E8000002F6000002F8000002FA000002FC00046 +:102E9000002FE00000300000003020000030400033 +:102EA00000306000003080000030A0000030C00022 +:102EB0000030E0000031000000312000003140000F +:102EC00000316000003180000031A0000031C000FE +:102ED0000031E000003200000032200000324000EB +:102EE00000326000003280000032A0000032C000DA +:102EF0000032E000003300000033200000334000C7 +:102F000000336000003380000033A0000033C000B5 +:102F10000033E000003400000034200000344000A2 +:102F200000346000003480000034A0000034C00091 +:102F30000034E0000035000000352000003540007E +:102F400000356000003580000035A0000035C0006D +:102F50000035E0000036000000362000003640005A +:102F600000366000003680000036A0000036C00049 +:102F70000036E00000370000003720000037400036 +:102F800000376000003780000037A0000037C00025 +:102F90000037E00000380000003820000038400012 +:102FA00000386000003880000038A0000038C00001 +:102FB0000038E000003900000039200000394000EE +:102FC00000396000003980000039A0000039C000DD +:102FD0000039E000003A0000003A2000003A4000CA +:102FE000003A6000003A8000003AA000003AC000B9 +:102FF000003AE000003B0000003B2000003B4000A6 +:10300000003B6000003B8000003BA000003BC00094 +:10301000003BE000003C0000003C2000003C400081 +:10302000003C6000003C8000003CA000003CC00070 +:10303000003CE000003D0000003D2000003D40005D +:10304000003D6000003D8000003DA000003DC0004C +:10305000003DE000003E0000003E2000003E400039 +:10306000003E6000003E8000003EA000003EC00028 +:10307000003EE000003F0000003F2000003F400015 +:10308000003F6000003F8000003FA000003FC00004 +:10309000003FE000003FE00100000000000001FFF1 +:1030A000000002000000000100000002000000001B +:1030B0000000000802150020021500200810000082 +:1030C00000000033000000020000000000000005C6 +:1030D00000000005000000000000000000000002E9 +:1030E00000000003000000020000000100000004D6 +:1030F00000000002000000020000000100000002C9 +:10310000000000200000004000000040000000031C +:103110000000001800002000000040C00000618096 +:10312000000082400000A3000000C3C00000E48053 +:103130000001054000012600000146C00001678033 +:10314000000188400001A9000001C9C00001EA8017 +:1031500000020B4000022C0000024CC000026D80F7 +:1031600000028E400002AF000002CFC00002F080DB +:1031700000001140000000010000000100000001FB +:10318000000000010000000100000001000000013B +:10319000000000010000000100000001000000012B +:1031A000000000010000000100000001000000011B +:1031B0000003D0000000003D00000001000D0000F1 +:1031C000000700D000028140000B8168000202204D +:1031D00000010240000F025000010340000C0000FB +:1031E000000800C000028140000B8168000202203C +:1031F0000001024000070250000202C0001000005F +:103200000008010000028180000B81A8000202601A +:1032100000018280000E82980008038000000000F8 +:10322000000000000002800000090028000200B831 +:10323000000100D8000000E8000000E8FFFFFFF3F5 +:1032400001AFFFFF000000000000000000000000D0 +:10325000000000000000000000000000FFFFFFF180 +:1032600000EFFFFF00000000000000000000000071 +:10327000000000000001000000000000FFFFFFF65A +:10328000005FFFFF000000000000000000000000E1 +:10329000000000000002000000000000FFFFF40634 +:1032A0001CBFFFFF0000000500000000000000142C +:1032B000000000000004000000000000FFFFFFF21B +:1032C000004FFFFF000000000000000000000000B1 +:1032D000000000000008000000000000FFFFFFFAEF +:1032E000002FFFFF000000000000000000000000B1 +:1032F000000000000010000000000000FFFFFFF7CA +:1033000001EFFFFF000000000000000000000000CF +:10331000000000000020000000000000FFFFFFF59B +:10332000002FFFFF00000000000000000000000070 +:10333000000000000040000000000000FFFFFFF35D +:10334000018FFFFF000000000000000000000000EF +:10335000000000000000000000000000FFFFFFF17F +:10336000010FFFFF0000000000000000000000004F +:10337000000000000001000000000000FFFFFFF659 +:10338000005FFFFF000000000000000000000000E0 +:10339000000000000002000000000000FFFFF40633 +:1033A0001CBFFFFF0000000500000000000000142B +:1033B000000000000004000000000000FFFFFFF21A +:1033C000004FFFFF000000000000000000000000B0 +:1033D000000000000008000000000000FFFFFFFAEE +:1033E000002FFFFF000000000000000000000000B0 +:1033F000000000000010000000000000FFFFFFF7C9 +:1034000000EFFFFF000000000000000000000000CF +:10341000000000000020000000000000FFFFFFF59A +:10342000004FFFFF0000000000000000000000004F +:10343000000000000040000000000000FFFFFFFF50 +:1034400000CFFFFF0000000000000000000000CCE3 +:10345000000000000000000000000000FFFFFFFF70 +:1034600000CFFFFF0000000000000000000000CCC3 +:10347000000000000001000000000000FFFFFFFF4F +:1034800000CFFFFF0000000000000000000000CCA3 +:10349000000000000002000000000000FFFFFFFF2E +:1034A00000CFFFFF0000000000000000000000CC83 +:1034B000000000000004000000000000FFFFFFFF0C +:1034C00000CFFFFF0000000000000000000000CC63 +:1034D000000000000008000000000000FFFFFFFFE8 +:1034E00000CFFFFF0000000000000000000000CC43 +:1034F000000000000010000000000000FFFFFFFFC0 +:1035000000CFFFFF0000000000000000000000CC22 +:10351000000000000020000000000000FFFFFFFF8F +:1035200000CFFFFF0000000000000000000000CC02 +:10353000000000000040000000000000FFFFFFF35B +:10354000020FFFFF0000000000000000000000006C +:10355000000000000000000000000000FFFFFFF17D +:10356000010FFFFF0000000000000000000000004D +:10357000000000000001000000000000FFFFFFF657 +:10358000005FFFFF000000000000000000000000DE +:10359000000000000002000000000000FFFFF40631 +:1035A0001CBFFFFF00000005000000000000001429 +:1035B000000000000004000000000000FFFFFFF218 +:1035C000004FFFFF000000000000000000000000AE +:1035D000000000000008000000000000FFFFFF8A5C +:1035E000042FFFFF000000000000000000000000AA +:1035F000000000000010000000000000FFFFFF9727 +:1036000005CFFFFF000000000000000000000000E8 +:10361000000000000020000000000000FFFFFFF598 +:10362000010FFFFF0000000000000000000000008C +:10363000000000000040000000000000FFFFFFF35A +:10364000000FFFFF0000000000000000000000006D +:10365000000000000000000000000000FFFFFFF17C +:10366000000FFFFF0000000000000000000000004D +:10367000000000000001000000000000FFFFFFF656 +:10368000005FFFFF000000000000000000000000DD +:10369000000000000002000000000000FFFFFF0625 +:1036A0001CBFFFFF0000000000000000000000142D +:1036B000000000000004000000000000FFFFFFF217 +:1036C000004FFFFF000000000000000000000000AD +:1036D000000000000008000000000000FFFFFFFAEB +:1036E000002FFFFF000000000000000000000000AD +:1036F000000000000010000000000000FFFFFFF7C6 +:10370000000FFFFF000000000000000000000000AC +:10371000000000000020000000000000FFFFFFFF8D +:1037200000CFFFFF0000000000000000000000CC00 +:10373000000000000040000000000000FFFFFFFF4D +:1037400000CFFFFF0000000000000000000000CCE0 +:10375000000000000000000000000000FFFFFFFF6D +:1037600000CFFFFF0000000000000000000000CCC0 +:10377000000000000001000000000000FFFFFFFF4C +:1037800000CFFFFF0000000000000000000000CCA0 +:10379000000000000002000000000000FFFFFFFF2B +:1037A00000CFFFFF0000000000000000000000CC80 +:1037B000000000000004000000000000FFFFFFFF09 +:1037C00000CFFFFF0000000000000000000000CC60 +:1037D000000000000008000000000000FFFFFFFFE5 +:1037E00000CFFFFF0000000000000000000000CC40 +:1037F000000000000010000000000000FFFFFFFFBD +:1038000000CFFFFF0000000000000000000000CC1F +:10381000000000000020000000000000FFFFFFFF8C +:1038200000CFFFFF0000000000000000000000CCFF +:10383000000000000040000000000000FFFFFFFF4C +:1038400000CFFFFF0000000000000000000000CCDF +:10385000000000000000000000000000FFFFFFFF6C +:1038600000CFFFFF0000000000000000000000CCBF +:10387000000000000001000000000000FFFFFFFF4B +:1038800000CFFFFF0000000000000000000000CC9F +:10389000000000000002000000000000FFFFFFFF2A +:1038A00000CFFFFF0000000000000000000000CC7F +:1038B000000000000004000000000000FFFFFFFF08 +:1038C00000CFFFFF0000000000000000000000CC5F +:1038D000000000000008000000000000FFFFFFFFE4 +:1038E00000CFFFFF0000000000000000000000CC3F +:1038F000000000000010000000000000FFFFFFFFBC +:1039000000CFFFFF0000000000000000000000CC1E +:10391000000000000020000000000000FFFFFFFF8B +:1039200000CFFFFF0000000000000000000000CCFE +:10393000000000000040000000000000FFFFFFFF4B +:1039400000CFFFFF0000000000000000000000CCDE +:10395000000000000000000000000000FFFFFFFF6B +:1039600000CFFFFF0000000000000000000000CCBE +:10397000000000000001000000000000FFFFFFFF4A +:1039800000CFFFFF0000000000000000000000CC9E +:10399000000000000002000000000000FFFFFFFF29 +:1039A00000CFFFFF0000000000000000000000CC7E +:1039B000000000000004000000000000FFFFFFFF07 +:1039C00000CFFFFF0000000000000000000000CC5E +:1039D000000000000008000000000000FFFFFFFFE3 +:1039E00000CFFFFF0000000000000000000000CC3E +:1039F000000000000010000000000000FFFFFFFFBB +:103A000000CFFFFF0000000000000000000000CC1D +:103A1000000000000020000000000000FFFFFFFF8A +:103A200000CFFFFF0000000000000000000000CCFD +:103A30000000000000400000000000000000021133 +:103A400000000200000002040000FFFF0000FFFF72 +:103A50000000FFFF0000FFFF000000200000002129 +:103A600000000022000000230000002400000025C8 +:103A700000000026000000270000002800000029A8 +:103A80000000002A0000002B0000002C0000002D88 +:103A90000000002E0000002F0000001000000001B8 +:103AA0000000000100000001000000010000000112 +:103AB0000000000100000001000000010000000102 +:103AC00000000001000000010000000100000001F2 +:103AD00000000001000000010000000100000001E2 +:103AE00007FFFFFF0000003F07FFFFFF0000000F80 +:103AF00000007FF800007FF80000FF0000000000D9 +:103B00000000FF00000000000000FF0000000000B7 +:103B10000000FF00000000000000FF0000000000A7 +:103B20000000FF00000000000000FF000000000097 +:103B30000000FF00000000000000FF1C0FFFFFFF5F +:103B40000000FF1C0FFFFFFF0000FF1C0FFFFFFF27 +:103B50000000FF1C0FFFFFFF0000FF1C0FFFFFFF17 +:103B60000000FF1C0FFFFFFF0000FF1C0FFFFFFF07 +:103B70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF7 +:103B80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE7 +:103B90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD7 +:103BA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC7 +:103BB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB7 +:103BC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA7 +:103BD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF97 +:103BE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF87 +:103BF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF77 +:103C00000000FF1C0FFFFFFF0000FF1C0FFFFFFF66 +:103C10000000FF1C0FFFFFFF0000FF1C0FFFFFFF56 +:103C20000000FF1C0FFFFFFF0000FF1C0FFFFFFF46 +:103C30000000FF1C0FFFFFFF0000FF1C0FFFFFFF36 +:103C40000000FF1C0FFFFFFF0000FF1C0FFFFFFF26 +:103C50000000FF1C0FFFFFFF0000FF1C0FFFFFFF16 +:103C60000000FF1C0FFFFFFF0000FF1C0FFFFFFF06 +:103C70000000FF1C0FFFFFFF0000FF1C0FFFFFFFF6 +:103C80000000FF1C0FFFFFFF0000FF1C0FFFFFFFE6 +:103C90000000FF1C0FFFFFFF0000FF1C0FFFFFFFD6 +:103CA0000000FF1C0FFFFFFF0000FF1C0FFFFFFFC6 +:103CB0000000FF1C0FFFFFFF0000FF1C0FFFFFFFB6 +:103CC0000000FF1C0FFFFFFF0000FF1C0FFFFFFFA6 +:103CD0000000FF1C0FFFFFFF0000FF1C0FFFFFFF96 +:103CE0000000FF1C0FFFFFFF0000FF1C0FFFFFFF86 +:103CF0000000FF1C0FFFFFFF0000FF1C0FFFFFFF76 +:103D00000000FF1C0FFFFFFF0000FF1C0FFFFFFF65 +:103D10000000FF1C0FFFFFFF0000FF1C0FFFFFFF55 +:103D20000000FF1C0FFFFFFF0000FF1C0FFFFFFF45 +:103D30000000FF1C0FFFFFFF00000316000015002E +:103D4000000000010000000200000003000000006D +:103D5000000000040000000100000000000000015D +:103D6000000000040000000000000001000000034B +:103D7000000000000000000100000004000000003E +:103D8000000000010000000300000000000000012E +:103D90000000000400000000000000040000000318 +:103DA000000000000000000000003FFF000003FFD3 +:103DB0000000000000000001000000010000000100 +:103DC000007C1004000000040000000200000090CD +:103DD0000000009000800090081000000000008AA1 +:103DE000000000800000008100000080000000064C +:103DF000000007D00000076C071D2911000000001B +:103E0000009C0424000000000000000100000001EC +:103E100000000001000000010000000100007FFF21 +:103E2000000000FF000000FF000000FF000000FF96 +:103E30000000007F000000FF000000FF000000FF06 +:103E40000000003E000000000000003F0000003FB6 +:103E50000000003F0000003F0000003F0000003F66 +:103E60000000003F0000000F0000000012170000DB +:103E70002217000032170000121500002215000062 +:103E800032150000021000000010000010100000A9 +:103E9000201000003010000000100000121400007C +:103EA000221400003214000000E38340FFFFFFFFF4 +:103EB000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +:103EC000FFFFFFFFFFFFFFFFFFFFFFFFF0005000BE +:103ED000F0001000FFFFFFFFFFFFFFFFFFFFFFFFEE +:103EE000FFFFFFFFFFFFFFFFFFFFFFFFFF809000CF +:103EF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +:103F0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +:103F1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +:103F2000FFFFFFFFFFFFFFFFFFFFFFFF00003C1051 +:103F30000000000100000000000000080000000870 +:103F40000000000200000004000000050000000462 +:103F500000000040000018080000080300000803EB +:103F600000000040000000030000080300000803F8 +:103F7000000008030001000300000803000008031C +:103F80000000000300000003000000030000000325 +:103F90000000000300000003000000030000000315 +:103FA0000000000300000003000000030000000305 +:103FB00000000003000000030000000300002403D1 +:103FC0000000002F0000000900000019000001841B +:103FD0000000018300000306000000190000000635 +:103FE00000000306000003060000030600000C8624 +:103FF00000000306000003060000000600000006A3 +:104000000000000600000006000000060000000698 +:104010000000000600000006000000060000000688 +:104020000000000600000006000000060000000678 +:104030000000000600000306000000130000000658 +:1040400000001004000010040010644000106440E0 +:104050000000000000000000000000000000000060 +:104060000000200000000000000000000000000030 +:10407000000000000400200000000000000000001C +:104080000000000000000000000020000000007C94 +:104090000000003D0000003F0000009C0000000602 +:1040A000000000050000000A0000000500000140BB +:1040B000000001400000000000000000000000C0FF +:1040C0000000013F00007FFF0000004800000048A2 +:1040D0000000000000000000000000480000000494 +:1040E00000000004000000040000000400000004C0 +:1040F00000000004000000040000000400000004B0 +:10410000000000090000000B0000000A000000048D +:10411000000000090000000B0000000A0000000180 +:10412000000000010000000100000001000000018B +:10413000000000010000000100000001000000017B +:104140000000000100000001000000010000000468 +:10415000000000090000000B0000000A0000000140 +:10416000000000010000000100000001000000014B +:10417000000000010000000100000001000000013B +:104180000000000100000001000000010000000428 +:10419000000000090000000B0000000A0000000001 +:1041A000000000000000080000000200000001FF05 +:1041B0000000040000000000000000001E491E492D +:1041C0001E491E490E490E490E490E49FFFFFFFFC9 +:1041D00000000000000025E4000080000000001343 +:1041E0000FFF0FFF00000000000000000FFF0FFF97 +:1041F00010001000100010002000200020002000FF +:1042000080008000800080004000400040004000AE +:104210000000000000000001010101010120010176 +:104220002001010101011001010101010120010131 +:104230002001010101011001200101010101100112 +:104240000101010101200101200101010101100111 +:104250000101010101200101010101010120010110 +:1042600020010101010110010101010101200101F1 +:1042700020010101010110010101010101200101E1 +:1042800020010101010110010101010101200101D1 +:1042900020010101010110010000000400000009DB +:1042A0000000000B0000000A0000000400000009EC +:1042B0000000000B0000000A0000000100000001E7 +:1042C00000000001000000010000000100000001EA +:1042D00000000001000000010000000100000001DA +:1042E00000000001000000010000000400000009BF +:1042F0000000000B0000000A0000000100000001A7 +:1043000000000001000000010000000100000001A9 +:104310000000000100000001000000010000000199 +:10432000000000010000000100000004000000097E +:104330000000000B0000000A1E491E491E491E49CC +:104340000E490E490E490E49FFFFFFFF0000000015 +:104350000FFF0FFF00000000000000000FFF0FFF25 +:10436000100010001000100020002000200020008D +:10437000800080008000800040004000400040003D +:104380000000000000000002000000010000000327 +:104390000000000400000006000000050000000707 +:1043A000000001230000012300000123000001237D +:1043B000000001230000012300000123000001236D +:1043C000000001230000012300000123000001235D +:1043D000000001230000012300000123000001234D +:1043E000000001230000012300000123000001233D +:1043F000000000200000003200000007000000075D +:104400000000000000000008021500200215002036 +:1044100000000030081000000000003300000030F1 +:10442000000000310000000200000005000000064E +:104430000000000200000002000000000000000573 +:104440000000000200000002000000020000000165 +:104450000000000600000001000000020000004013 +:1044600000000040000000200000001300000020B9 +:1044700000010000000204C00003098000040E4097 +:1044800000051300000617C000071C80000821402B +:1044900000092600000A2AC0000B2F80000C3440BF +:1044A000000D3900000E3DC0000F42800010474053 +:1044B00000114C00001250C00013558000145A40E7 +:1044C00000155F00001663C00017688000186D407B +:1044D00000197200001A76C0001B7B80001C80400F +:1044E000001D8500001E89C0001F8E8000009340C3 +:1044F00000000001000000010000000100000001B8 +:1045000000000001000000010000000100000001A7 +:104510000000000100000001000000010000000197 +:104520000000000100000001000000010000000187 +:10453000000000080000000C000000100000000156 +:104540000000000100000001000002110000020054 +:1045500000000204000002190000FFFF0000FFFF3E +:104560000000FFFF0000FFFF07FFFFFF0000003F0C +:1045700007FFFFFF0000000F00007FF800007FF83A +:1045800000000000000000010020100100000000F9 +:104590000100900000000100000000010000000088 +:1045A00000000000140AFF0000009002000000005C +:1045B0000000000000000000000090040000000067 +:1045C0000000000000000000000090060000000055 +:1045D0000000000000000000000090080000000043 +:1045E00000000000000000000000900A0000000031 +:1045F00000000000000000000000900C000000001F +:1046000000000000000000000000900E000000000C +:1046100000000000000000000000901000000000FA +:1046200000000000000000000000901200000000E8 +:1046300000000000000000000000901400000000D6 +:1046400000000000000000000000901600000000C4 +:1046500000000000000000000000901800000000B2 +:1046600000000000000000000000901A00000000A0 +:1046700000000000000000000000901C000000008E +:1046800000000000000000000000901E000000007C +:10469000000000000000000000009020000000006A +:1046A0000000000000000000000090220000000058 +:1046B0000000000000000000000090240000000046 +:1046C0000000000000000000000090260000000034 +:1046D0000000000000000000000090280000000022 +:1046E00000000000000000000000902A0000000010 +:1046F00000000000000000000000902C00000000FE +:1047000000000000000000000000902E00000000EB +:1047100000000000000000000000903000000000D9 +:1047200000000000000000000000903200000000C7 +:1047300000000000000000000000903400000000B5 +:1047400000000000000000000000903600000000A3 +:104750000000000000000000000090380000000091 +:1047600000000000000000000000903A000000007F +:1047700000000000000000000000903C000000006D +:1047800000000000000000000000903E000000005B +:104790000000000000000000000090400000000049 +:1047A0000000000000000000000090420000000037 +:1047B0000000000000000000000090440000000025 +:1047C0000000000000000000000090460000000013 +:1047D0000000000000000000000090480000000001 +:1047E00000000000000000000000904A00000000EF +:1047F00000000000000000000000904C00000000DD +:1048000000000000000000000000904E00000000CA +:1048100000000000000000000000905000000000B8 +:1048200000000000000000000000905200000000A6 +:104830000000000000000000000090540000000094 +:104840000000000000000000000090560000000082 +:104850000000000000000000000090580000000070 +:1048600000000000000000000000905A000000005E +:1048700000000000000000000000905C000000004C +:1048800000000000000000000000905E000000003A +:104890000000000000000000000090600000000028 +:1048A0000000000000000000000090620000000016 +:1048B0000000000000000000000090640000000004 +:1048C00000000000000000000000906600000000F2 +:1048D00000000000000000000000906800000000E0 +:1048E00000000000000000000000906A00000000CE +:1048F00000000000000000000000906C00000000BC +:1049000000000000000000000000906E00000000A9 +:104910000000000000000000000090700000000097 +:104920000000000000000000000090720000000085 +:104930000000000000000000000090740000000073 +:104940000000000000000000000090760000000061 +:10495000000000000000000000009078000000004F +:1049600000000000000000000000907A000000003D +:1049700000000000000000000000907C000000002B +:1049800000000000000000000000907E0000000019 +:104990000000000000000000000090800000000007 +:1049A00000000000000000000000908200000000F5 +:1049B00000000000000000000000908400000000E3 +:1049C00000000000000000000000908600000000D1 +:1049D00000000000000000000000908800000000BF +:1049E00000000000000000000000908A00000000AD +:1049F00000000000000000000000908C000000009B +:104A000000000000000000000000908E0000000088 +:104A10000000000000000000000090900000000076 +:104A20000000000000000000000090920000000064 +:104A30000000000000000000000090940000000052 +:104A40000000000000000000000090960000000040 +:104A5000000000000000000000009098000000002E +:104A600000000000000000000000909A000000001C +:104A700000000000000000000000909C000000000A +:104A800000000000000000000000909E00000000F8 +:104A90000000000000000000000090A000000000E6 +:104AA0000000000000000000000090A200000000D4 +:104AB0000000000000000000000090A400000000C2 +:104AC0000000000000000000000090A600000000B0 +:104AD0000000000000000000000090A8000000009E +:104AE0000000000000000000000090AA000000008C +:104AF0000000000000000000000090AC000000007A +:104B00000000000000000000000090AE0000000067 +:104B10000000000000000000000090B00000000055 +:104B20000000000000000000000090B20000000043 +:104B30000000000000000000000090B40000000031 +:104B40000000000000000000000090B6000000001F +:104B50000000000000000000000090B8000000000D +:104B60000000000000000000000090BA00000000FB +:104B70000000000000000000000090BC00000000E9 +:104B80000000000000000000000090BE00000000D7 +:104B90000000000000000000000090C000000000C5 +:104BA0000000000000000000000090C200000000B3 +:104BB0000000000000000000000090C400000000A1 +:104BC0000000000000000000000090C6000000008F +:104BD0000000000000000000000090C8000000007D +:104BE0000000000000000000000090CA000000006B +:104BF0000000000000000000000090CC0000000059 +:104C00000000000000000000000090CE0000000046 +:104C10000000000000000000000090D00000000034 +:104C20000000000000000000000090D20000000022 +:104C30000000000000000000000090D40000000010 +:104C40000000000000000000000090D600000000FE +:104C50000000000000000000000090D800000000EC +:104C60000000000000000000000090DA00000000DA +:104C70000000000000000000000090DC00000000C8 +:104C80000000000000000000000090DE00000000B6 +:104C90000000000000000000000090E000000000A4 +:104CA0000000000000000000000090E20000000092 +:104CB0000000000000000000000090E40000000080 +:104CC0000000000000000000000090E6000000006E +:104CD0000000000000000000000090E8000000005C +:104CE0000000000000000000000090EA000000004A +:104CF0000000000000000000000090EC0000000038 +:104D00000000000000000000000090EE0000000025 +:104D10000000000000000000000090F00000000013 +:104D20000000000000000000000090F20000000001 +:104D30000000000000000000000090F400000000EF +:104D40000000000000000000000090F600000000DD +:104D50000000000000000000000090F800000000CB +:104D60000000000000000000000090FA00000000B9 +:104D70000000000000000000000090FC00000000A7 +:104D80000000000000000000000090FE0000000095 +:104D90000000000000000000000091000000000082 +:104DA0000000000000000000000091020000000070 +:104DB000000000000000000000009104000000005E +:104DC000000000000000000000009106000000004C +:104DD000000000000000000000009108000000003A +:104DE00000000000000000000000910A0000000028 +:104DF00000000000000000000000910C0000000016 +:104E000000000000000000000000910E0000000003 +:104E100000000000000000000000911000000000F1 +:104E200000000000000000000000911200000000DF +:104E300000000000000000000000911400000000CD +:104E400000000000000000000000911600000000BB +:104E500000000000000000000000911800000000A9 +:104E600000000000000000000000911A0000000097 +:104E700000000000000000000000911C0000000085 +:104E800000000000000000000000911E0000000073 +:104E90000000000000000000000091200000000061 +:104EA000000000000000000000009122000000004F +:104EB000000000000000000000009124000000003D +:104EC000000000000000000000009126000000002B +:104ED0000000000000000000000091280000000019 +:104EE00000000000000000000000912A0000000007 +:104EF00000000000000000000000912C00000000F5 +:104F000000000000000000000000912E00000000E2 +:104F100000000000000000000000913000000000D0 +:104F200000000000000000000000913200000000BE +:104F300000000000000000000000913400000000AC +:104F4000000000000000000000009136000000009A +:104F50000000000000000000000091380000000088 +:104F600000000000000000000000913A0000000076 +:104F700000000000000000000000913C0000000064 +:104F800000000000000000000000913E0000000052 +:104F90000000000000000000000091400000000040 +:104FA000000000000000000000009142000000002E +:104FB000000000000000000000009144000000001C +:104FC000000000000000000000009146000000000A +:104FD00000000000000000000000914800000000F8 +:104FE00000000000000000000000914A00000000E6 +:104FF00000000000000000000000914C00000000D4 +:1050000000000000000000000000914E00000000C1 +:1050100000000000000000000000915000000000AF +:10502000000000000000000000009152000000009D +:10503000000000000000000000009154000000008B +:105040000000000000000000000091560000000079 +:105050000000000000000000000091580000000067 +:1050600000000000000000000000915A0000000055 +:1050700000000000000000000000915C0000000043 +:1050800000000000000000000000915E0000000031 +:10509000000000000000000000009160000000001F +:1050A000000000000000000000009162000000000D +:1050B00000000000000000000000916400000000FB +:1050C00000000000000000000000916600000000E9 +:1050D00000000000000000000000916800000000D7 +:1050E00000000000000000000000916A00000000C5 +:1050F00000000000000000000000916C00000000B3 +:1051000000000000000000000000916E00000000A0 +:10511000000000000000000000009170000000008E +:10512000000000000000000000009172000000007C +:10513000000000000000000000009174000000006A +:105140000000000000000000000091760000000058 +:105150000000000000000000000091780000000046 +:1051600000000000000000000000917A0000000034 +:1051700000000000000000000000917C0000000022 +:1051800000000000000000000000917E0000000010 +:1051900000000000000000000000918000000000FE +:1051A00000000000000000000000918200000000EC +:1051B00000000000000000000000918400000000DA +:1051C00000000000000000000000918600000000C8 +:1051D00000000000000000000000918800000000B6 +:1051E00000000000000000000000918A00000000A4 +:1051F00000000000000000000000918C0000000092 +:1052000000000000000000000000918E000000007F +:10521000000000000000000000009190000000006D +:10522000000000000000000000009192000000005B +:105230000000000000000000000091940000000049 +:105240000000000000000000000091960000000037 +:105250000000000000000000000091980000000025 +:1052600000000000000000000000919A0000000013 +:1052700000000000000000000000919C0000000001 +:1052800000000000000000000000919E00000000EF +:105290000000000000000000000091A000000000DD +:1052A0000000000000000000000091A200000000CB +:1052B0000000000000000000000091A400000000B9 +:1052C0000000000000000000000091A600000000A7 +:1052D0000000000000000000000091A80000000095 +:1052E0000000000000000000000091AA0000000083 +:1052F0000000000000000000000091AC0000000071 +:105300000000000000000000000091AE000000005E +:105310000000000000000000000091B0000000004C +:105320000000000000000000000091B2000000003A +:105330000000000000000000000091B40000000028 +:105340000000000000000000000091B60000000016 +:105350000000000000000000000091B80000000004 +:105360000000000000000000000091BA00000000F2 +:105370000000000000000000000091BC00000000E0 +:105380000000000000000000000091BE00000000CE +:105390000000000000000000000091C000000000BC +:1053A0000000000000000000000091C200000000AA +:1053B0000000000000000000000091C40000000098 +:1053C0000000000000000000000091C60000000086 +:1053D0000000000000000000000091C80000000074 +:1053E0000000000000000000000091CA0000000062 +:1053F0000000000000000000000091CC0000000050 +:105400000000000000000000000091CE000000003D +:105410000000000000000000000091D0000000002B +:105420000000000000000000000091D20000000019 +:105430000000000000000000000091D40000000007 +:105440000000000000000000000091D600000000F5 +:105450000000000000000000000091D800000000E3 +:105460000000000000000000000091DA00000000D1 +:105470000000000000000000000091DC00000000BF +:105480000000000000000000000091DE00000000AD +:105490000000000000000000000091E0000000009B +:1054A0000000000000000000000091E20000000089 +:1054B0000000000000000000000091E40000000077 +:1054C0000000000000000000000091E60000000065 +:1054D0000000000000000000000091E80000000053 +:1054E0000000000000000000000091EA0000000041 +:1054F0000000000000000000000091EC000000002F +:105500000000000000000000000091EE000000001C +:105510000000000000000000000091F0000000000A +:105520000000000000000000000091F200000000F8 +:105530000000000000000000000091F400000000E6 +:105540000000000000000000000091F600000000D4 +:105550000000000000000000000091F800000000C2 +:105560000000000000000000000091FA00000000B0 +:105570000000000000000000000091FC000000009E +:105580000000000000000000000091FE0000FF008D +:10559000000000000000FF00000000000000FF000D +:1055A000000000000000FF00000000000000FF00FD +:1055B000000000000000FF00000000000000FF00ED +:1055C000000000000000FF0000000000000001A932 +:1055D00000001500000000010000000200000003B0 +:1055E00000000000000000040000000100000000B6 +:1055F00000000001000000040000000000000001A5 +:105600000000000300000000000000010000000492 +:105610000000000000000001000000030000000086 +:105620000000000100000004000000000000000471 +:1056300000000003000000000000000000003FFF29 +:10564000000003FF0000000300BEBC2000000000BB +:10565000000000050000000300BEBC2000000000A8 +:10566000000000050000000300BEBC200000000098 +:10567000000000050000000300BEBC200000000088 +:10568000000000050000000300BEBC200000000078 +:10569000000000050000000300BEBC200000000068 +:1056A000000000050000000300BEBC200000000058 +:1056B000000000050000000300BEBC200000000048 +:1056C000000000050000000D0000000C00000000BC +:1056D000000000100215002002150020000000301C +:1056E000081000000000003300000030000000310E +:1056F00000000002000000040000000000000002A2 +:10570000000000020000000000000002000000078E +:105710000000000200000002000000010000000381 +:1057200000000001000000020000004000000040F6 +:1057300000000004000000200000000F0000001B1B +:1057400000008000000103C00001878000020B40C0 +:1057500000028F00000312C00003968000041A406C +:1057600000049E00000521C00005A5800006294018 +:105770000006AD00000730C00007B48000083840C4 +:105780000008BC0000093FC00009C380000A474070 +:10579000000ACB00000B4EC0000BD280000C56401C +:1057A000000CDA00000D5DC0000061800000000107 +:1057B00000000001000000010000000100000001E5 +:1057C00000000001000000010000000100000001D5 +:1057D00000000001000000010000000100000001C5 +:1057E00000000001000000010000000100000001B5 +:1057F0000000101100001000000010040000102133 +:105800000000FFFF0000FFFF0000FFFF0000FFFFA0 +:105810000000004600000010000000000000000032 +:10582000000000180000000100000000000000005F +:10583000000000000000000107FFFFFF0000003F24 +:1058400007FFFFFF0000000F00007FF800007FF857 +:105850000000190000000000FFFFFFFFFFFFFFFF37 +:10586000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +:10587000FFFFFFFFFFFFFFFF0000FF000000000031 +:105880000000FF00000000000000FF00000000001A +:105890000000FF00000000000000FF00000000000A +:1058A0000000FF00000000000000FF0000000000FA +:1058B0000000FF00000000000000014A0000350069 +:1058C00000000001000000020000000300000000D2 +:1058D00000000004000000010000000000000001C2 +:1058E00000000004000000000000000100000003B0 +:1058F00000000000000000010000000400000000A3 +:105900000000000100000003000000000000000192 +:10591000000000040000000000000004000000037C +:10592000000000000000000000003FFF000003FF37 +:10593000000000000393870000000000000000004A +:10594000000000000393870000000000000000003A +:105950000000000F00000007000000000000000E23 +:10596000031500200315002001000030081000007E +:105970000000003300000030000000310000000390 +:105980000000000600000003000000030000000209 +:1059900000000000000000020000000000000006FF +:1059A00000000004000000020000000200000001EE +:1059B00000000004000000010000000200000040A0 +:1059C0000000004000000004000000200000000271 +:1059D00000000020000010000000208000003100C6 +:1059E000000041800000520000006280000073004F +:1059F00000008380000094000000A4800000B50037 +:105A00000000C5800000D6000000E6800000F7001E +:105A10000001078000011800000128800001390002 +:105A20000001498000015A0000016A8000017B00EA +:105A300000018B8000019C000001AC800001BD00D2 +:105A40000001CD800001DE000001EE800001FF00BA +:105A500000000F80000000010000000100000001B4 +:105A60000000000100000001000000010000000132 +:105A70000000000100000001000000010000000122 +:105A80000000000100000001000000010000000112 +:105A90000000000100000001000000010000000102 +:105AA0000000000100001224000012100000121477 +:105AB0000000FFFF0000FFFF0000FFFF0000FFFFEE +:105AC0000000002000000020000000000000000096 +:105AD0000000002300000024000000250000002634 +:105AE00000000027000000290000002A0000002B11 +:105AF0000000002C000000010000000107FFFFFF74 +:105B00000000003F07FFFFFF0000000F00007FF8CC +:105B100000007FF80000000000000001CCCC020172 +:105B2000CCCCCCCCCCCC0201CCCCCCCCCCCC0201DF +:105B3000CCCCCCCCCCCC0201CCCCCCCCCCCC0201CF +:105B4000CCCCCCCCCCCC0201CCCCCCCCCCCC0201BF +:105B5000CCCCCCCCCCCC0201CCCCCCCCFFFFFFFF4E +:105B6000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +:105B7000FFFFFFFFFFFFFFFFFFFFFFFF0000000031 +:105B80000001000100330207CCCCCCC5100000009E +:105B9000000028AD7058103C000000000000FF001D +:105BA000000000000000FF00000000000000FF00F7 +:105BB000000000000000FF00000000000000FF00E7 +:105BC000000000000000FF00000000000000FF00D7 +:105BD000000000000000FF0000000000000002665E +:105BE000000015000000000100000002000000039A +:105BF00000000000000000040000000100000000A0 +:105C0000000000010000000400000000000000018E +:105C1000000000030000000000000001000000047C +:105C20000000000000000001000000030000000070 +:105C3000000000010000000400000000000000045B +:105C400000000003000000000000000000003FFF13 +:105C5000000003FF002625A000000000002625A06C +:105C600000000000002625A000000000002625A05E +:105C700000000000000E0000011600D6002625A03E +:105C800000000000002625A000000000002625A03E +:105C900000000000002625A00000000000720000A7 +:105CA000012300F30000FFFF000000000000FFFFE1 +:105CB000000000000000FFFF000000000000FFFFE8 +:105CC000000000000000FFFF000000000000FFFFD8 +:105CD0000000000000000000000000000000FFFFC6 +:105CE000000000000000FFFF000000000000FFFFB8 +:105CF000000000000000FFFF000000000000FFFFA8 +:105D0000000000000000FFFF000000000000FFFF97 +:105D10000000000000000000000000000000FFFF85 +:105D2000000000000000FFFF000000000000FFFF77 +:105D3000000000000000FFFF000000000000FFFF67 +:105D4000000000000000FFFF000000000000FFFF57 +:105D50000000000000000000000000000000FFFF45 +:105D6000000000000000FFFF000000000000FFFF37 +:105D7000000000000000FFFF000000000000FFFF27 +:105D8000000000000000FFFF000000000000FFFF17 +:105D90000000000000000000000000000000FFFF05 +:105DA000000000000000FFFF000000000000FFFFF7 +:105DB000000000000000FFFF000000000000FFFFE7 +:105DC000000000000000FFFF000000000000FFFFD7 +:105DD0000000000000000000000000000000FFFFC5 +:105DE000000000000000FFFF000000000000FFFFB7 +:105DF000000000000000FFFF000000000000FFFFA7 +:105E0000000000000000FFFF000000000000FFFF96 +:105E10000000000000000000000000000000FFFF84 +:105E2000000000000000FFFF000000000000FFFF76 +:105E3000000000000000FFFF000000000000FFFF66 +:105E4000000000000000FFFF000000000000FFFF56 +:105E50000000000000000000000000000000FFFF44 +:105E6000000000000000FFFF000000000000FFFF36 +:105E7000000000000000FFFF000000000000FFFF26 +:105E8000000000000000FFFF000000000000FFFF16 +:105E90000000000000000000000000000000FFFF04 +:105EA000000000005554000055555555000055554B +:105EB000F00000005554000055555555000055554B +:105EC000F00000005554000055555555000055553B +:105ED000F00000000000000000010000000050146D +:105EE00000000000FF5C0000FFF55FFF0000FFFF07 +:105EF000F00003E0000000000000A000000004002B +:105F00000000000000000000000000000000100081 +:105F10000000000000000000000000000000400041 +:105F20000000000000000000000000000001000070 +:105F3000FF5C0000FFF55FFF0000FFFFF00003E0E3 +:105F4000000000000000A0000000080000000000A9 +:105F50000000000000000000000020000000000021 +:105F600000000000000000000000800000000000B1 +:105F7000000000000000000000020000000000001F +:105F80001F8B080000000000000BFB51CFC0F00386 +:105F9000096770A1F24FB3A2F2D1B1093B7E7942F9 +:105FA00098858132FDBC40034481D810886559F042 +:105FB000ABDDC18429E6248B607F966260F0978018 +:105FC000B05B242873D7281E1A385E13951FAB0EBA +:105FD000A16F6B40E80434F938A8BC800A844ED421 +:105FE000C46EAE20541E00937717096003000000B2 +:105FF00000000000000000001F8B080000000000EF +:10600000000BED7D0D7854D5B5E83E73CE9C393349 +:10601000999F9330840949F02404090A7208018287 +:106020008DB713FE8C2DB6C38F9ADEA20E146D04AD +:106030008168A1F27ADBCE81FC107EC4003E454A25 +:10604000DB31C5166FB58D365AFA9EED9D08EDA56C +:10605000AFBDEF45F0076FF136B6D6D6567C696F07 +:10606000ADF87DF5FAF65A7BEF99734E6612B0DA09 +:10607000DBF77D17FDD8EC73F6CFDA6BADBDD6DA62 +:106080006BAD7DC6E7994D4A2F21E45DF8F361427F +:106090001E960821E37325B93DE221A5846CD10841 +:1060A000FE79CB1FBE824408D9AAB1F2AE40B81720 +:1060B000CA5D29423253E1FDA4340913524448AD6C +:1060C00012851E01F3A12A28DBE62566603913CA72 +:1060D00012E261E3930AFDD52236F6BB32FCFD0FD6 +:1060E00084CCCDCD47CE269B607E99883FCD04FAE7 +:1060F000CB64CFEFE52B0851DA22E4F375B4AEABF5 +:1061000024C3FBBC0B7FC9AB22C9606E5DEE72EB92 +:10611000D9A6F489DA5CFBC92414453814A2201CE2 +:10612000BC3F211681F97DF04F63E4386FA5E2E9A9 +:1061300013DE91782A34AFC0537B4A23193A68673B +:106140004AC752AE20F17410D7197F7C3A2D616E88 +:106150008ABFEE1AA3B748B2C1E16770C4097D389F +:10616000079E271DF8EAAED8AFC5475937A9A178D1 +:1061700012EBAE1EB93E850EDD47E757283CBD74D5 +:106180001C451F1D8E6559385A897DFD170FC7673D +:106190001CFD03D30819041C28743E5A7A0CCB1A30 +:1061A0009A0E73323A2B06EF7781782FAAF5E4E640 +:1061B0008361830107BFA8D112C7FB917C69717EFF +:1061C000EDE1EB4DC88C9F453D43585DB4B395362A +:1061D000FE95A35DC8B7723460C96128955787ECF6 +:1061E0007CCBFBF92691641F5D773B3C2AE39D291C +:1061F0001D94A8F9B55D743F7D81A838AF52A159AF +:1062000030DE1629F9058463292521E58700EFE2B0 +:10621000D7DB08A986F16A2349C05FB08490F923CF +:10622000F1D399B2D28AD756F79216E00342D26CD4 +:106230009E52921E47E1257F5E682C0F151E274B4C +:106240005FBE8EF64AF34CB29ED6CA54F321FAB41E +:10625000D3BD9E0ABA1ECA42F7C37A687B25A68AB6 +:10626000F5DC8FF873ADC74BF12DD1F6EDA14BD90D +:106270007AA2F9E168E7EB11F0679F8B7515E8E703 +:1062800086BFD0FB8ECA786C3585DF0AB175C9929E +:10629000735DDE0A46A7EFF07579832AD2DB1BED2A +:1062A000212057E8FABE936F7D94AF908FB2EB0B2D +:1062B00046114E45677416F32B5A575A999D8333EE +:1062C0004374364F160E93C9499D60BF23249981AC +:1062D000F794FF0691FF827102E3AB31FA7E2694B8 +:1062E000F1168BD2B563603E990EFD8226B99D965C +:1062F0006A304996D2761DEFC81C6FF538BE80E330 +:106300007F72395E086FCB011E1B9E4F570ABE720B +:10631000D2FFF4B53EAC778C37BF06B87C91E3CDA5 +:106320008D1F8AB717EDE32B3AC3E7E96BA7327CE1 +:10633000358F77C09785436B77E08B8008A5FBB2DC +:1063400052F015C7DBBE4A86AF2F57D42EF0188403 +:106350005419A6094BDC5F71B4891664AF967C0DA5 +:10636000F849338804F3556E1E423CEEE17CB55883 +:106370006EF4FF829607965647D650B82292E4E014 +:106380003F513E40F500F0E74EAA07A07CEB250602 +:106390007F217EDB91228EFDB963ADD20CFA62477C +:1063A000C5FE654B28DE3AA3357528636212C31714 +:1063B000AC87C22FC1FC74BD0FDCF2598493E24F4D +:1063C00092E6E4F850F05B753C13D7E9FB2ACA4922 +:1063D000321D2FD64DCC0CC78D62C35365B3C7F2A7 +:1063E00085110F011867A2A97B543A8F9E1C8A83DE +:1063F0000E117838B0D483F4BC73F5A5BD404F01BD +:10640000F747250F939751C6D744316B13A1C2FBB1 +:10641000EF10C5D374DCC71909DA55B49234D067CC +:106420002F7FFE13929828D176156DA617D6734A42 +:1064300012FC1543BDD8C1E13EB42EC0F8AB527F6B +:1064400050A6FB728AC4ED8F38C557A983BFA648F2 +:1064500073727811FCF5454FB2169E071B32DB6054 +:10646000BD4AE310F1D1B2DD435A414E537007618A +:10647000BE728E77C1DF7ABDD10BFC3D9FF341F92F +:10648000A2AE3B3C14FE8931C5F2D1B27C68F55214 +:10649000B09768FD65C06BC5EDC344A6FD4367AF0B +:1064A000798DC0FB56B26C111D6A62FD10685AB23C +:1064B000C5939C0FEB9DD89AE1F44B235E0E7AA90D +:1064C00004A0F560E3603C11047A2F21AB6DFAF76C +:1064D000237CBD8AC9EC0C41D72FCB0CDEFDCDA7A8 +:1064E000FC9F0E42BB00C2594D16C561BC2AB03498 +:1064F000E83A829C1F28DDAF81F9C39BD39204FB4D +:10650000C32412C04BF97D02F0D741AF5506FD0EF2 +:10651000DEA2B6A4195E9E05FC863D1C2706FD8FF3 +:10652000E229E861F346252FC2254F65F81AA793A3 +:10653000B44117AA802EA6A226564FD2714AAF3078 +:10654000E02D9CC34B18F006F831D319302F95FA83 +:10655000CC36588A4E86334A15E2E926E4CFDA2152 +:106560009024948E0C5F3B94B69F7F818EBBE3A4F6 +:106570006C5AC4C68784F2E18C1CBEB40ABADFF23E +:10658000E865D17E2CBD01E205E8A204993E13FA2C +:1065900081F26B1BE04FD119BF0AF93ED678DA566B +:1065A000D97865362E04ED1D015BB7BEDD02BCBD9A +:1065B0000963D175CB3DB33280378A5BF321C6873F +:1065C0001989D6353D9EDE8576781AF785B047FC69 +:1065D0006017D9D6E9AD70DA45A4C592ECF695B648 +:1065E00055453814AA1FC8F4DC3AA9A640FB099601 +:1065F000F9EE64A83BED782548327E4ABF5DB5755B +:10660000C46E972B84D973B03DDEAD1AD9AF305E1E +:106610005CF3AD74C279C1FD828AF1AAE8533D5A98 +:106620003F85BC2AEC438ABC6FC0007372F4D9E189 +:1066300025C724AA47DB2BEEB380AF77C02B4AD700 +:106640002EC2E84E0C8F43CEC8151EDCEF5B6013E4 +:1066500001BFC4983DE223D767507EC42ECC3EF1E3 +:1066600046DB50AE07387F7D86249E02FEDA5D4908 +:106670007A1CF682CAEC4952BB12DBED9EF15963DB +:10668000F5F41C3FEDD688E37C43C8765C5F672A4F +:106690004D7E3985C2559144BA69069B2FCB8FB583 +:1066A0008C7FBBA72F8F809DAE697D28878A7A1E3D +:1066B000CB78A2763EB4C8CA19B03E6687EFA6E58D +:1066C000BB12E747D047B180C3FE167C26C61F0B1E +:1066D0000FD9BA16BF11F8BF35A61A2077D7CBA4A9 +:1066E0000DF4416BECD245202F849E973D65CCAED6 +:1066F0002DD1CC0C9DA2F539B941360ACFD34A0F22 +:10670000467A1D9C72F60C821D47D2DEE1211BDF0A +:10671000B8CF93E7247E9E9C47E601BFFC416F897A +:10672000644619FFB7A993BA3225779E74BF17EB59 +:10673000584FC82BBE1258A7A57E82E2B3C8A3E16A +:10674000FAC5FA9492EE52A0D3FAA33FD615FB797C +:1067500086CBADF50A3D6ED68D84DF8D4F3A4F0660 +:10676000E711FD86287C76B9E0EA9F1D57C83F6592 +:1067700084DDA67B28BEFD8BB65813291ED63FB2FA +:106780008CE92FBA0E90BB027E31AF5847767ED788 +:106790007A0AADE362E5F41F167576817DF7ACD712 +:1067A000A84C009F344F5D04FA58D8AD822ECB160A +:1067B0007796E6F32764F94B21860EF8A28633F22A +:1067C000D3F3ED0D2063AFF1F8F3DA7F63F1CF1C63 +:1067D0008F8B7F165DF781F04F02F807E418B79BA7 +:1067E000C5FADDF86E5DE47D19EC9582F8E6FD05ED +:1067F000FD46F05FA17E23F9E43ACFF83C7CC2C7A6 +:1068000017FC22E6F94BE11D8B3F2823A1DC9E08F3 +:10681000FF34C00ECE4804F51B3B3F9473B8274DA0 +:106820001F96E09C6D24F40560AE56B7984F4379EF +:10683000A8F85FCB561BD062910EFA438A8F93DE85 +:10684000BDFCC2F58C80A3BC4DF985DD4FA0B7D24D +:10685000BA6DBDE146E7FB20B1BDAFCA8D5322CE74 +:1068600087F45C63B7BBF77A875AE89191747A969C +:106870003445E9FBBDFEA13370A4ECDC794D533304 +:10688000AD8727097FCCB00672FE41381C017E1A05 +:106890009AD1BFA10B7FDDD0B05643F95F5DAC90BC +:1068A0005DB4C9C0904C545AEF8929691FC2D18C7C +:1068B000FA3DC2F58D18A767E8B406F6C4DD8D254C +:1068C000C58EF163AC7D488C6FB4DD3CB93E37FEBC +:1068D0005B94E707518F0D627F12AF4578C4F8775C +:1068E000377A48096D5F5CA6A4C13E0A0E0DE339F4 +:1068F000878AF36DCC5E8EC3BF295817761E511A56 +:10690000D8395E69E81E64A5C2F8AC7EC439E25B82 +:1069100020EF7CF41C01FC22CE11629E31F9EE4284 +:10692000DB819F95AEEF2E123041DF8D57E39297BA +:10693000D6B752BDBB9DAEFF9894FC27D84FDE95CD +:106940006D3777D2BA74FDD6A943148EAD1453A80F +:106950009F1B3DE98724CECFB4DF3D890968272AF4 +:10696000E32AC603BCF73432BBBE101C7B526476EC +:106970008D4DDEEC51321AE0758F59A7E5EB178C7F +:10698000A9B36BA85EBFA7D998A0BFA771973BC654 +:10699000353CC99F79C68F1C9F70FEF7504B0FF690 +:1069A0005120D88F7EB0C0887D61ABCB23EB0757D9 +:1069B000DF1A033C4427C46749743FDC24934CA28C +:1069C00081D68BE28FC17E59D9FED5A620A553D49E +:1069D000177F0CDEA79EFA6CD309A8C379E64ACAD2 +:1069E00007F2930316C737D85F3B5299F42B53E055 +:1069F000DC7F12CB373DEC3C7C9EF3BB4F6943FB05 +:106A000049ABA0ED6CFBDBAFF4E0F3400DED67D7D5 +:106A1000C331CAE5A584F1B081E7B377001F135BEA +:106A2000C880D700BE73FB27A6477E61D3635E593B +:106A300072D84F3BB85F42D47DDAF3935E1967A7F3 +:106A4000CB9949AF78A1DD10967B94C1389C3FACBF +:106A50004642808F76A67E83CF238D83386F446134 +:106A6000FE64D17F9ECCD62BCA3749508A835CD630 +:106A70008FA03C8DF0FDA36F8E90CF97409DF9F9CC +:106A80002371E54F76F9E6D697E532D59754AE0AED +:106A90007DE9DFFABB49683F723FBE9FE39F9CEDF3 +:106AA00065F38873BAFC6773CDF49CDE9CCDF1214D +:106AB000FA45089DB7D67E3E617599F38758971BB6 +:106AC0009E192E78C68A4788F9E7415B3A7F30EBFA +:106AD000FF1E42FF3769505E857985DF3B64523A7D +:106AE000D8F0A1550C39EA5BC0989D03FC42E961DE +:106AF00083EB60681DF2F3F9A1C963F89B320E7F46 +:106B000013F0A5399DF1A5DD0E14EF7772BED80301 +:106B10007C3105FAFF06CB0015BBD02F5073C601A0 +:106B200087802F640E399E6B154E78C3542C01B2AA +:106B3000F72656E1FE5556323F285945DCF2769548 +:106B40000CF6BCCECE27E106EE6795759CE7A03724 +:106B5000196BA3F59DC5949694C9767AAD96049E5B +:106B60005F8763CB6DF23EC3E99FED7715DBFF6472 +:106B70007A2C68DF673F27C97532D8292D5606F46D +:106B8000BC9857F4EBE278F602FC54FE4757AC424F +:106B9000B99585BFC569F764FB4BC92DF2F891FE25 +:106BA000B9ACBCAE11F2BA475B66F357ECACB9387E +:106BB000397D37D5E3207FEF09FEE1E464D8BFF5E6 +:106BC0001E93928BCAFBBA9306F87B4251F4278A34 +:106BD000F633B5055DB24D4E844C3A9E8D0F765E10 +:106BE000A43CCFCE1F75CFBFBCB92AFFFCF7C97834 +:106BF000DE26AF031D344E87AEB22E0DF0E486477D +:106C0000F45BEB497E55B6D9DF9AC1FCDE23F5DF94 +:106C1000B0039F17ABF7DC65482209907BEDC13AC2 +:106C20007D8D6DDFF7C9CC0FF85B5FBC4F9E3312D3 +:106C3000EE8BD58B85E6ED8C3AE73DC5F99ACEFB18 +:106C40004F30EF29402E2DEFA9F953E2168A4785E0 +:106C50009FE7F544D82ABA024A2A77C320C72DC431 +:106C600097F01308BBAAA3919EF7A7A31F0AED06EE +:106C7000A5514D5B6037F4484CCED2C770DED7F9D2 +:106C8000797F3C9CF7E9FB4FC1BE07F96AD8FC4C01 +:106C9000B0AFF979DF8D8F827138EE6F5DD3C03779 +:106CA00010316EF819A5E76D27BD641754FF4C5BD2 +:106CB000DBFC5CBFF825F3B3DE06FE435AAE258944 +:106CC00030BC3C473CCD00EF39722A3CDB86F76193 +:106CD00099C5D748B717ED6A8BFE0770DED2E3750A +:106CE000D8D99F3EE8ACDF4A9697823D76EBBD5EF1 +:106CF00092A628BFCD656F0C71F9F069D2D605FA5E +:106D00005CC4D9D6E8D4E4A2FA6EC377BF3C17FCC2 +:106D1000326F71FDF85BAA8F0D5F0EAE75C1B41AAC +:106D2000A7EF7FD93FFBFA0F11E89FEE9A08F1B564 +:106D300062E66771F3C3A7BA9DF08D05BF1B5EE1E4 +:106D4000072A04877254427FB27B5EAF2239FC630C +:106D500085F20644BEC01485F185B580A0DFD7FA60 +:106D6000B750BA1DF725CB1718ABFFB4BFB0FF0C57 +:106D7000E83FA770FF5DD17402E4B8F0D7F9B544DD +:106D80009C6189C9ED5DB131DED78CFEBE107CCB34 +:106D90008A358CCF0938A9BD7BA592679D6F79E2B2 +:106DA00037023FFB00DF58B2F320DABF948E9B948A +:106DB0006037E83D3FB783FD86F3BCB809FE01F2BA +:106DC000B096A4215FA3A8D6F9DE6D175F9BA56FCF +:106DD00006F75918B7202DB56006F55B83F27AB631 +:106DE000BDCDBF74678CCA997185E597874AE8A0C5 +:106DF00006F29DC90B89D7051C7FE8919A61BFDC1B +:106E00004945CBD63AFBB82A8E3B425EFC99BE9FE1 +:106E1000CBF31BF0DC6EC6809EDD29827917EDDE98 +:106E2000C4C761DDEDCFC9C482B872711BF1005EC9 +:106E30002B8901715D5F4D2202F10FDFB372D453D4 +:106E4000C5854914F44EF3113827DDAC78B91FC35A +:106E5000443FB82F68C521EFA18BDA1BC5144EF54E +:106E60008B2409F036059349E827C75ABC700EFEFB +:106E7000E7473ED502F575B1258A8FCEBB8E8F735D +:106E8000EE1F1F9B4B287C5D8F864806E56E5A05DA +:106E900039BBAE5F8EA7C17FF3ED10CEBFEEF14FD1 +:106EA0007F7D29E0E7BB5719AFA2BC6DC7FEEB9E03 +:106EB0005CF17F2CBE1E8DD2A37D1B8F8759666C23 +:106EC00005EDBAC1476E86F890587F4E2FF6A03E6A +:106ED0005C77B4D8A177D729B4FD74B0FFC8CDCB07 +:106EE000F3E8A5BD0A9353AF87D416804F3A3A70A2 +:106EF00013C2D7778317D62555B4915FD1F9DA61DC +:106F00007DAC1DEA0BEB61293D85BE7FFDE107D518 +:106F1000EA1930EF83EA1A8C236CC376024EEDE84F +:106F20003E0BE49B56A357C31169E1B71F0DC3F98C +:106F300075D3513903E76E5AE2F9DB6F785CF91BC0 +:106F4000F1A044E9BE91F3E5C6FE0D28FF37F6ED4A +:106F500046BDB6E99853EE51BCA2DF6EFD0BB2B947 +:106F600014EADFF946D8A0F0FC76F0A130E09FCE1D +:106F7000B35AA5FBC7AB3BF7058C7FBE64E47854DE +:106F800083A09F6A53DF4E365FFFB5BF06FFE6263C +:106F9000977CFD2DFCA36CE4F9E109C5757E383AB8 +:106FA000EE82FC01EB1F7DF32B169DF7F5C77FF7F3 +:106FB0001588E7DFFE1FFFFE957F807DFD03BF0E76 +:106FC000FA61D33FFEEA2B9FA3F83C77CCE701FEA2 +:106FD00078E3FBDFF8FA215A7FE3C5A975209AFE12 +:106FE000B7C2EC84371E7BBBD4A0E36CFEFEE20983 +:106FF000B0FECD4F2C9C404639BFBC41F929EDB3C2 +:10700000C393463A1AC7E8781368F5295EBAE8725E +:10701000BCFFF82480EFDC199F097B74137D06FB0D +:107020007A63DF068CEF411DCE811B1FD981E7C03B +:107030009178B6CA3D319443E510F2DDD8BFE2E362 +:1070400057D543E9350D188F0CA39E75F7DBF42C4B +:10705000A5E7CCC2F47B93FC590539B9E9919D6C45 +:10706000DE3E4ABFF048FA9D837FCCCFE3FF579CBA +:10707000FEDB37C9ED5F3D042FFBC7E5F53B8AF327 +:10708000DF8627AE1BF59CF8866BDF16C2732BF7E5 +:107090005FFF0F25FE0EE88BD71FFFE6D70F458158 +:1070A000CE3E7329D0FDD1372711CA1FBFF10EDFA5 +:1070B00004FB71F8FB3EBD17E4D0F75F40BDFEC690 +:1070C00013CFA806E633D1033AB5FBDE20D93F83C0 +:1070D00060076E643E23B2E94828E30BE7E8B53168 +:1070E000BDACD908E3738C6F6D4C33FEDF981E582E +:1070F00029E5A1DF1C6F35D32369E68FDD70E467D6 +:107100002A9E776D74951A809E2F2F81E785E82936 +:10711000D6AFC3FAE7D9E87A84EDDB42FBF38D07FB +:107120007D0AE845379DDF00BB0CE6494B2FE4A301 +:10713000BBB08B2E36CFD0F4BAF675FAC2FCD06352 +:10714000AFE7E2F075093887E68CC4DBB63215FD8F +:10715000397258457F6D97D778C102FEF8B197F420 +:10716000D22EEDE1B9C4C8E31FED00FB706AAEAEEC +:107170000413188756A27A1D98FCEE3C2C2F3D4E26 +:107180001836788EBF347502E4F7793D2C4ED93924 +:10719000309F805E80B20AF290B6CE36C1AF27FA39 +:1071A000CB31D302BDACC68CA67CE3AB5BE762FB04 +:1071B000EC39AFC1936679A83DADBDB4BE37566A10 +:1071C000C239A148FF566C80967B1B2EF6FC6CA141 +:1071D0003FB23BB85DABAECF9D5FBB8D82E7E78D25 +:1071E000DE51CECF7BE1DC370A1F159C3FEA9EBF04 +:1071F000E0F9F98B5E8A9F9D12E3EB11E72C3D8845 +:10720000FE88897C5FF778991EA824996D84D93D02 +:1072100009CD1EEF68191E00BFC797979D7D70B5F9 +:10722000017EB20E8C6F506BA0FEDDD9A3F1B3339B +:10723000BEE1E7F426268FB3485939C3E6E37EBAA8 +:107240005E2FB337293C8FADA1FF3C3C734882C908 +:107250002EA1537A297C552B8DED00CFE455830F59 +:10726000AF467E786FF1962CBF18825F2C6D998D9A +:10727000DFBB8D0FC62FF01D6FD62FF01D6F1EBF09 +:1072800040F745F247A179DD7E81A773F33E9D6FFC +:10729000DE11F6F405E6ABDCBF228C766AE4AC9432 +:1072A000063B70DF8A30C629422460825C0905599A +:1072B0009CE2AE6A6252494ABC2BAD7F867D7C4C13 +:1072C0004A3E077034FDDB8B31B0F3EEBEAAED12FF +:1072D000B03F22822EB5CE78C52E57BC6257ED073F +:1072E00013AFD8F5FEC52B7E6F970385E21572E8C4 +:1072F0005EC2FCD61717AF888E8BCF924C20C3FE90 +:10730000853FB5C52994AEB50B599C826030535367 +:10731000FF7BBB45E18A96C71F83F677771D581818 +:1073200085F793D9FB57E07D10ECFEB805FBBFD67F +:10733000C7F4852FA9BE0CFADC57C1FD9331320486 +:10734000F69C2DFE1052693B75557A1BECC7B04E6A +:10735000B64906C41D82785EFD4305417E2884C778 +:10736000FD3C1F12F2E4219EED6B263D30DF032928 +:107370001DEBDDA918BEDF938A6309F97F309FAF4B +:1073800082E5531DE4FE947695B442798AEBF16E62 +:1073900095C9B35CC9F2E18EBFF48D836B00AE601A +:1073A00000EDCF427075A56A4D98FFEE9469C2BC9E +:1073B0003DA906ACEF913206C4494DB5B45DA37A40 +:1073C0003C20F7C5A0DEA594B72F2AC33C37946FA5 +:1073D000B27185A9D8E4629DCAF69D5ACBF2C1D597 +:1073E000387B1F80387D9E7DDE906B8FF9BBAACEE7 +:1073F000DAEFE6F98EEEF61FE6EBDC35F036EAEB77 +:1074000048FD20D22B44F522F4DB35F02201FBEEBF +:1074100001EF6006F4685725317BE9FA7D5BA79B95 +:10742000CA3878FF63D4BF57F371820D43D83FBC8D +:10743000B51EDF3FE04F72FF39E179BC2CCFF1017F +:107440002FE179BC46EF765A5FC9E10EACA5AC1DC1 +:107450008143FBDF617FA5D6C2F8E91629B95285C1 +:10746000F3F361A73F5FC44BCBB9FFBCDC08C63167 +:10747000DFAFA67401D863E5B59761DCBFBC35B852 +:107480001A9F1BA59F8272BFD437B800FCC9C51EC6 +:10749000CCCB2E376A6FC176C6959F86F79F558BEA +:1074A000713D81CB9A6B316F6A92881FA735166741 +:1074B00069F6D8E3CDBBEAAB23A39D7B50E3097902 +:1074C00089FB31003E145BBDC4559FE86A5FED7ACD +:1074D0007F99EB7D9DA3BE95E39BD4AA4C3FE91316 +:1074E000D12F7B37F7CB92E1890C7E7E3F6320FC66 +:1074F000BFB497A7B3F217363ED933C6BA76AA6C93 +:10750000BF97533B8DD8EC57A20572F05423DE622F +:10751000E8F75016599054979513B523E4449238E0 +:10752000E5C4FEBF444E80FF82C9098DCB81E46172 +:10753000E0233A3DE6BDE5E481D90AF2EF84BA667C +:10754000A1321FE501C6650959D30EE79C808791DA +:10755000A457BD7E21C8436187EEE2765237DD270E +:10756000B00FA0CC67878662830E3B543CB7DB9F8D +:1075700068DF8C45A7AA3F692F075909F1598DE7A4 +:10758000EBDC33069D404E92A9209F34747215198E +:1075900081B87145CEAE2AA2FB05CE63A23DDC8345 +:1075A000B1D3F3874067C05BCC4657FC3B8D7EB2BE +:1075B0002C7DC922A71E70D197E22D02782BCDBC5D +:1075C00098F77CE0DB3A8DED7B8A3F903FA18A24DF +:1075D000FAC984FCF0EAFA83A0C7EF5DB1719B178A +:1075E000F2D9C795CC027CFE8CCB69D2E3940F62B2 +:1075F0005C2A3F7E067CE48FB6116616B078596926 +:10760000C64FE26007D790B41FF23ECC3449D2E7B0 +:10761000013D8DF24EA9A0AA1896C7E561765D5C82 +:10762000FE79341627CAC3B7AFE5E35BB7DEC9EA14 +:107630007B1F939FA284F8FBD0287684D07B029F87 +:10764000815A53CA679774811EA2ED0E08FDC6F5D4 +:10765000D181A7DF2655807F8EB748C530013C47D2 +:1076600014B30AF492D5D1B910F4D2013FEB976D5F +:107670002FE8E413FD287DF2CC5BC4D731CEC3FCE8 +:107680009AEEF7511F93F7CA529E27B394E7C95455 +:10769000507E81FC4483E93B7A5C73C76FA33E88CC +:1076A0007B92B6CC91AA9CFC17EB3BF0F4C3086725 +:1076B000A0A28D407CA482C3915B077F5F9B26AB19 +:1076C00079BBA6608E8FABB2F465FA4BE37AE842E1 +:1076D000F9BBD6C7E2367E85B5F31326EF5679E3BC +:1076E000D37C988763B13CE0C4E7593C4DE3F71382 +:1076F000B5B05504CEF18E11EBADF3C17815095438 +:107700002122FE3BF2FE983BBF27D184F93D516612 +:1077100037537BF94330BF962890DF933DC7307BCA +:10772000B91BEC6529672F5FEC79E642EDE58B3DEF +:10773000AF8C622FDFE09B33727CB7BDEC0F2E8ADB +:10774000DD4ADE83BD3C33FE7B0FD8CBE4E9853FC9 +:107750008D41DE4EFC31A807A34F2C6C067B78B61A +:10776000D0172717C27E88CE63FAA2D5F763B48FED +:10777000CF6BF1DB00BE2F81F1484B6F221EC7EBB0 +:107780002A1DF9E59528BD13583E4047F1F53AE624 +:1077900005B8F8651BE743C117221FE0FD1ADF3D5E +:1077A000EE1629D1EE9B93939F7FADF57CC11FDF31 +:1077B00007FC9B9DEFE2F325BE04707FF0F91217E2 +:1077C000EDEF79C4F7BEE64B5CB4BFE729464FAA9C +:1077D00039E712BC0383642CBE15F13A4ABEC40FCC +:1077E000ED70AB3157BEC45FD92FF2BC2F9BB7F001 +:1077F0003CC0F5D7F28BFC2A37EFAFF2CD5B282FD8 +:1078000021546526F0FE4D9987009EBA1ACD1EA818 +:1078100077557AD4ED55B9FB07629E49DA64E4FBEB +:107820008E98EA013F74C7C9C51867E9F2B6356397 +:107830005CB2D8A3F756E591B31A8BBBC95B8B66D4 +:107840001F19C5DF26AB4C4F77E8A710AEE09C6848 +:1078500031DC7F6B1FF86F27E19E9F122BAD02FB7F +:10786000E8328DDB591499BFB4C56D09A170D4E31A +:107870007D15B089E97C619C6F2CF8CE73FCC95BE7 +:10788000FDB38F8C12EF7DBFE11378F441700BE7ED +:107890000FE2FC02AF5E380C507A75980AC60FBD35 +:1078A000433E760FBBDE83F7F1841C514C713F27BA +:1078B00059ABC1BCF7BAEE210799BDF9EFDC2E90A8 +:1078C000FD6D98CF24EE1D84920AEAA96092E92BFF +:1078D000B15EC127412FCBF3F405158CEBAA9C2F89 +:1078E000E4AB061380D79E39351E383FDFA1317BCC +:1078F000AA07F2D568FB1D71BABE99B9F15769ECB8 +:107900003CBBE3E494FB57513C6C6EF2E02D0C1F42 +:10791000E9C8544A50061DF7867D800F38970CDD64 +:1079200081FB7A81C6E354D5A41AF8F8CEA63BC1F0 +:1079300002A4768FE5CB17D7182997881FD6213751 +:1079400079FC35C0F773985C828B7BA3C735B67121 +:1079500079CFE821E8A098EC5EA417EED9C0BDB9B4 +:1079600038A38BA047D6CEDFE3BE3760F07C7186AC +:107970007F3998403AFA88B273950D0F3EE05FB0B8 +:10798000FFCEDE41E8D19FACD1783CE63F69FD09EE +:10799000902900F7F169F7AF8AC2F5258FE93740E2 +:1079A000CE3AF93C186479E6829F7C43DB3270273B +:1079B000F7737F2BF0C72EF85E24C67F6189ECAF8A +:1079C0003B1CF7FD0C7EAF53F801429B09C6A12E6C +:1079D0006950F0DEB1D1B09DDD0385C6F47DE506CA +:1079E00082796797F03C7CD1FF124B75E403E8ADD8 +:1079F000CE7A39CF2BAE24B6E7749C729E1F56EE1A +:107A00007A2EE27CAA4B7E8BD21DE77B547B6FF9EA +:107A1000BFAD24FE1D6D4E0E9FED7504F745217C14 +:107A2000961A6D789F61023D37A11FA291DDD32D7B +:107A30002149F44B90069617A6F078B0E8FFB4C63B +:107A4000E4B38FFC11EFF9AA64C842F9E5A287A05C +:107A5000C38E1AE68F01FA95D1F7C57CDFE13D4769 +:107A60003A8FBF8CD1A198DF67268B38FE24220184 +:107A7000FF861B9DDF675139FE4BB87FC4EFC2B74D +:107A8000CAE9A0BA9EFF8AC37DB171D79F0B7A84E1 +:107A900048C8F17D173D3A6A3C3ECBB71739DF390C +:107AA00021578374BEC9EF61BE02ED46EE2727BDA4 +:107AB00096707A7567E9459602BD629C5EDDF56C4D +:107AC000DF087AC504BD920CCF1AFD0FE835A1C5B9 +:107AD00049AF0BA58FB8E77C4C4B84FC687F1A122A +:107AE000FA91D616A1FFCB97E5ABA706540AC7CEED +:107AF000E9C484A3C15D20F4C05F7DDB4974894E75 +:107B00009CB49DF963E18847FBA9DC6FB633B67C72 +:107B1000547FD8C114FBBECEDDF07D9DA985DB85E9 +:107B2000D46412FCD7656B07E3606754B6193C4E0A +:107B30004D1992CE378EC72197FA259EE7461CF73E +:107B40008B2BEA18DF77359134E8E9719B999EEA2F +:107B5000AA62F8B52A099E3BF4CD4AC64B9F8FAB6B +:107B60005DF21ADE1B55DA08D8CDE3924EFCEA6DC1 +:107B70003F6A81FC0862C727E553BD62F826A44F1F +:107B80005C75E4CB165AD785965D144FBFF03AF872 +:107B90004993599E1BE6CFFAEAE92917FC1FF57AAB +:107BA00029C8535FBD19C472A8A999D513BBE07D3C +:107BB0002BD00DFC256B99FC0D5738EF93BBF126AC +:107BC000F08BF73CE83A2280179B7D1271CB5D1752 +:107BD0003EDCF5F71B0FDD26A3EB9B54EF903C76C4 +:107BE000AD282BCF2B2403F65D634F37B4F7D57840 +:107BF00008D8F7BE4676DFE5D06D3F427F8B5AA1AD +:107C00004BF6EF5F6CF133BB5DE5DF7B228A21AD84 +:107C100008D9DFB3EF9E1CD3E29B61FF2C960F6B5C +:107C2000E0070C2A69CC170CD6AA98A7186C5559EE +:107C3000FFE0BD0E3911F57B1D7910593911234331 +:107C40001EDB3950E883BD5AB21DE611F785D41802 +:107C5000BB2F24FC94C21F7EE2255FD1906DDF1DF7 +:107C60004DF5A1DFFDB114F3C33F9E22660D180E42 +:107C70006BFDE8D79EC6E95D7782E8C0277527745B +:107C80001DF8A6EE8451C2EA6609D4FB8EB03CF220 +:107C90006F713FFED7799CEF108FF3ED4A1958763C +:107CA000A76AB1EC4A99F8FE58AA01CB27791CB013 +:107CB0003FD58CE5C154029FEF4FB51016A74B621C +:107CC000B937D58ACFF7A4DAB07E24B515EBBD2934 +:107CD0000BEBE95437965F49F5E0F3C3A983583EAF +:107CE000924AE3F37F4C1DC57ADD89A5CD12AE2300 +:107CF00080FECCD927E9BA6DFC3EF398330F71EAC8 +:107D000041E7F714CA5B4B1CF5A2DA898EF67EA315 +:107D1000DAF1DE17BBCCF17EFE509DA33EEFCC9591 +:107D20008EF673061738EA65C98F38DA8F6B5EEE08 +:107D3000A817C7FFDED13ED2B0C6F13E64AE73BC19 +:107D40009FB5DFF204C0CEB88298900F34A5E74EFD +:107D5000C7FBC9DD9F73F47FC9CFF4F5B41354D5C5 +:107D600043FEE411F67D1DF304E5667A8EF1662C80 +:107D7000B4F3E9FB18BCA7CF27F276E87F15DF97AD +:107D8000A0ED983FE904F72B9FDD817E65711EA071 +:107D9000E7B49750DF3CE2F453097FD02CCFEA647C +:107DA00082FB5797833ED2146C67F2FC927FE77098 +:107DB00066E335A682E70BF15EF0BD9661DFB1D0D8 +:107DC00008BB8F069F4B81EF185459CEFB69976C07 +:107DD00075D62BDB9CF5197DCEFAE5479DF5593C10 +:107DE000FE431405F352FDCF4EAE83FBAE84DF3B62 +:107DF000D6B87E8A0618DC5DA9F43CB86F25E0573A +:107E000029BE7588139F30A23AE091DF4F9D46D876 +:107E10007A54BA1F0D7C6F9640A91DA1EB82B8D190 +:107E2000D9AB4F4AB83E76FFC317A3E3DAE8A9D52A +:107E300038E154636976CEAA1DFD7E5E24F0DEEC47 +:107E4000E10BB683F87D0F388EE31F9EF78DE704B4 +:107E50006A7F792B95049CB3CD7A127F10E2074A92 +:107E600046BAC3E6AF9A126072F9F980816519D9F2 +:107E7000D784F69A922C83FB61F7F13844D966F6E1 +:107E8000FD98B28A890E7FDBB59C0E4F4F0AA0FE8B +:107E9000FFCC32667F0DC6D6F434D125849A09E62C +:107EA0001784A20A817CE6D0191FEA17526F601E60 +:107EB0000C84AC01D6DFA448DDDA2970DF42C3F2BE +:107EC000F5948EE5F1491F19F8306D746765D0801F +:107ED000F390F7126E9717AB38CF9F2A6FC53C19F6 +:107EE0005FAA2D067CFE462A86FD760C4C9320CE9A +:107EF000EF8B5F6E3AFD1071999E0D285C83188799 +:107F0000F31DF763DE5F48577BFD367DD5E14D9667 +:107F1000E177CE3EA1E239A2ACBE4782EF0AEDF393 +:107F2000B378D78E405B2DE4B9EFA826372FCBE38B +:107F3000FFBB2C20EC274D564BD1DEC73F66734F5D +:107F400053186CD1B504CF9BDE4EBAADF1FCA9F746 +:107F500041DCBE42EB69027BA462AD6EB41BD09ED5 +:107F6000A09F44D0C7EB2789C782D08ED1F17480FF +:107F7000F961CA123D12D0ADFD09163F3BF1D20D99 +:107F80003AE8AD3F446B50CF9C7BD21707FFD0B986 +:107F900012F6DDA6734FCEFB11C89BDFA54E96806F +:107FA0007C17709FFBD63373BD9420E71E7F66AEAF +:107FB000824C9476E8D50DEF9E9E0BFE186B01A9BE +:107FC000857B859B7415EF156E823DC0D685F6DFE7 +:107FD0007DA56A178C5F3AC1B3174A395885E38883 +:107FE0007B1ED4F0AE427FB5C2FB9DF462BFF61F8C +:107FF0000770BC3BA7F41D07BCDCB958372D03FC48 +:108000006D467B10ECCB2A76AEBBF31ACB3709DE7C +:10801000BF3401DF176BA7F1DEAB9A69C3F0EA3E0C +:10802000C93C0E295BD61482F910E2FCFF5615A953 +:10803000ADA2F2575998413FDE70C84320FF778FB9 +:10804000129743B4BEA79698746791F0D0701CC481 +:1080500087FE9BB69910A7BA4B6EDBB78A2E617C60 +:10806000B09AF9B1783C66DB4B774DB5DB0B85F602 +:10807000EB0FB89DF0744AC3F2584A37019E4C2A60 +:1080800086F5032903EB8752B558DF9D32995DC110 +:10809000EF998CE7FB791F8FB7961B9E38E4718FA1 +:1080A000578806F7A7CACFFE33DAD1E574C9116A3B +:1080B000A337C698DF003EF405FD1B7526FFAE8A88 +:1080C000323FD35531E65712F243C88BC63F52BBFD +:1080D000D0E11FA7F55ABE0EBAF1C7DFEE7CBFCFC5 +:1080E000DB87E719EB1A866777FF1087AF849A8DD5 +:1080F00072DDC8F1A87C70B4EF313C9677E6C5DB41 +:10810000B35F72D9B3F76DA0ABA57C741FCF13FA20 +:10811000D286B9913536FA1C86F636BE3F7CC7DC6E +:1081200008C457EFBB83187AC4360EEF7F3875B298 +:1081300074D114BE89617F6E66717BD1AEC262F765 +:108140003644BDA74D69EE45BD4BE5E80CBCEFC616 +:108150003EA6610517C72B705CAC9FDA357DB185F3 +:10816000F295EDDFB26055078AFE7AD22773B983A4 +:108170000CCDE53ADAB1146FFF142F59A4633C8497 +:10818000F401586A7D922CA0F37DB8A96E40417924 +:10819000E27CFE03C983F095C57AA405B4FC642093 +:1081A000F1CB00C4A54A1ADABF4DDBFFB1DF67C0CF +:1081B0007C879E7E1BF3DF3BDE5635D887654FBD3F +:1081C0008C79F11DD2908AF97445DB17433E0995ED +:1081D0008FD320AEAE14E95D0AD553F785930F1304 +:1081E000D441DB179FA087EE52DFD097A0FD7F041C +:1081F00088D5DC48E7F70E7D129C278BC8173BB566 +:1082000049F8BE1CF2EFFE14D8BEB89BE2E307A00B +:108210001330DEF8F94EC0CF0F8A595D29FA874E28 +:10822000B863FF6E807DE7910499DCC8D6755ACF9C +:108230009377917DAFB0F74463A558DF86E36FFF76 +:10824000A81CEE4B3C25F5412A4AD953FB2458671C +:10825000D9B17D9877702C7552EF10F41678A75B22 +:108260007F7E8C2A5E38DFA4A574B5844709FC1E86 +:108270004FD9F4B8B10DE896F69AE0876C0B32F955 +:108280003F7F888E63E3EFF90AFFBE5081EF10E174 +:10829000272C817E7B58BCE95883557405ADAF5FB0 +:1082A0005D53B78DD2E758FCDE26F8AE48C7F7AA73 +:1082B000F0DECA9922368F3BDFE67571EEE4F936BF +:1082C000B7FB59D5BB9DF1E9FAAABED23A5A76FA64 +:1082D000D93DA7F5C5BC5EECAC0B79734CB78A4BA6 +:1082E000687DE3B17D9340616F243D37C17D1AF213 +:1082F0005399C0BE7F6D607EE443B4BE81D6E16811 +:10830000BCA17FD647601D1BF6783C00E2878A98A7 +:108310009DB0B19FF25310CE2914601FACA7E77235 +:1083200085F281B5A77189FF2A42BE571DD73D94BA +:10833000F6878357776995B4AEEAD3C82CA87FAC8B +:108340000BF86EFD351EFE519A8FFD28AEF0FB3402 +:10835000B4FEA1DD073A218FA9BE4543FBB9D493F2 +:10836000C0F82039E5417D01AAB891E25D2EEEC04A +:1083700038E2FFEDF4A05D02616DB86753AF9093F2 +:108380000A2DEF53191DAD2E05FBD1E7DDDE12A03E +:108390004B4F1CEEC7916E26E7E63CE55B0DE7B957 +:1083A000FAB6F86DE8A7D01BD16E9E44B27F308F2D +:1083B000FB12C2E4EE3C9D3429B4DD6B454C0FD674 +:1083C000B75CBF1EFA4D5EBDF22771FABE414A5B33 +:1083D00018677C91E9B7C06EF69D55F999A0B98DE3 +:1083E0003EEEF72CB81CF47DBF9FD14F2E4EEEFE13 +:1083F0001788FF14D7107C5F9CFC1DDCFF191EAF93 +:10840000191097EA18F2583ED0BBC5A60E740C821C +:10841000FCC0FDF5D3C571906B6AF20ED89F078B37 +:108420007EDAA9CD47BC4F8690CAFDBB7FD20978C2 +:10843000EFDF162FD76DF579EF50690DFDAD9F7405 +:10844000C6E97E548AF7AF87FD4EDFFF10E244DFB6 +:108450002B11F28DBDAFAFE675B0DBA9BD256F1353 +:10846000FB9B581A95FFF5B6F68BE87EF72E60EF6A +:1084700037D3F9808E708ED95A02EBA2E72658D7EF +:108480003425DD2BB1FB8C704F6A89BCEAA333E83D +:1084900073DF14E6470B1433B91C2836D0BF47F1FD +:1084A000847E88E1E78269C047A0B8ADC707EF2B9B +:1084B0006BD08F509466E34009F42FE2F746257D98 +:1084C000199E6BFCB5CEEF0C897BA558873C1D7EB1 +:1084D0004E505CCFBF52151F80F8D3D6A1652847F8 +:1084E000EE29E2F67F258B53DC95B0AE067FC3659F +:1084F000C37D0BC00C9A7E7EF06928AF20BF5F0061 +:10850000E2D3D48A8F4379A888316D9D3E6B218A4E +:10851000C286BEE3E8063286CA408ECD91D3EDE036 +:108520005F8934F6C930CF841B6B2E32AE3F887121 +:10853000F5BB839EE634C69F9FD6EDDFCDDC12E40B +:10854000DF2BE5F2C4CBED87ADA407E50FA53DFB1E +:10855000BE1D972F5EEE18CF7E475B3775B88FD75D +:1085600014AA477BF4192EA7E481F91F8773810AA7 +:108570007282B63FEC67FEFAE132D207E76A25164F +:10858000272087453EEA663EAF901790EF179F4A37 +:10859000C8131FBB7401F8519EF858E90238E7ED83 +:1085A000CF7DA74915DF67C47B1099D3D2BB458423 +:1085B0007CB719C38AE46B4AFC8572D8DF835E946A +:1085C0005B078A9D7A7B2D5FF737B9BCA27A1BE5E2 +:1085D000217C1F06EEF9A9E78B489ADA7D4BB87C1F +:1085E000F725D7229FF9A8CE33AAE0FC6859805717 +:1085F0008107ADC243D2F673E3F930F6FF66118B03 +:10860000EB8A387CA1BC84BB829E02DF8B6F46BAAA +:108610006CCED285C9FFCDA1F80490D3DF5BC0E05A +:1086200076F3C1AFF8BCEA7909E110CF5F037E832E +:10863000E74A12E3B3EA7905DF8BF58A76B9F76C7E +:108640001D6FE81AFF8E32DBAFEA3199D99531659B +:10865000D87E0FBA08CE119373FB4CDCCF1EB90E37 +:1086600073308EF92B4CCE8EDC8716DA3F629D3E3E +:10867000C3F9DE9DE79485FBFC38C73AC4FECAAD5A +:10868000A714DF833EC17B970A7900FC011B781E8B +:10869000CF0699F215857FD7917402E67F439C7BC4 +:1086A0009E62DF69DBD0BF8FE713198EEF0A6D3C46 +:1086B000C6E2CD9B5E095A1EDA7E23C8658AAF5D8D +:1086C00007D938A2BD5F4B64CA8D5CFB6780D6F4C6 +:1086D00079D1D66FCE83FBDD7FD45BCBC0FE285231 +:1086E000989C232D1ADA07FBFCEC1C64BD3495C55D +:1086F000BBE8FFEC7B84AC5D9169F4829DBA8B9FF3 +:1087000047151817F22EFCF133CC5E23712506F9BC +:1087100031423E6FEF04FD7C9F4AB2F21AF263EFE2 +:108720000BB07A3CB8BDB383D90928BF95A2F22E0D +:10873000B0CF3AFDA25EDA65817DAB9AC7E11C6BD2 +:108740003DE933004EDA3F0EFBDCFAFB5A3CE7759D +:1087500054918980BF13C52ADA3B1D4FF87AE17C1A +:10876000FFC940F2DD800D7FE78A9F9F04FB39CF70 +:10877000789663BCCA8B1B8FCEDFEF99997B7FA263 +:1087800078EE7199F5433F03A9189CB49AD64B9F94 +:10879000F4615CE0B0D7292744790397035D29DDB4 +:1087A000710F5805B98071F8369407BE5889430E89 +:1087B00008F9A09E2F27695B9EC833601F38F6E139 +:1087C000247CFF4D4EB7AE9431C63CD505E6B97C4E +:1087D0008C79AE70CC03123CFB7DD851E20DEE7B60 +:1087E000646E792A4A214F7FC8F9FA4529F9992000 +:1087F0002DD70DF52D0171B1ACB8B912CED92545E3 +:10880000CC9FD17074DF71300F666A89878AC6B3D6 +:10881000FC28D817BFF5259E2F9A93AB5FECBE3A84 +:108820001C14EB1B213FD9BEE2FE8BCD21F323505C +:10883000DF7C77B56E8D120F71CBC70F8D90A34C77 +:108840004EBE7FF3C90E3A8E9C4FC5F7397D9864B2 +:10885000DF2B76E9D3CD6571CC0BB2EDF338EC7339 +:10886000F88634B7DB2C900B07C47BEBE6AE458D66 +:10887000608FE7DE835D57EACBF587EF501E0888EF +:10888000F6EBF2B72F72B5AF16EDB7742DAA180933 +:108890008F903B5007BB5179C797B52B01BE7D1E0A +:1088A000D77825623C0BC713E785A9BB77FFC85271 +:1088B000803F7B9A40FF0FDF420CB8F7F335C50CC1 +:1088C00098363D3995DB29EA79BF03CF39FC06F1AB +:1088D000398939E9B9F9A5AB47FD4EC0AF53CEEFA1 +:1088E000047C3AB919EF294FE57AA8959E3860FCC7 +:1088F000D6C3B263FFFE17BC7F2BF04E2B60074D33 +:1089000067FBFB6F0EDEB202F056FC55E1BD2DC0D9 +:10891000E4ED1DBC5CACB70DC03D97C58664C26F6D +:10892000BC2CA66DFD74CF5E4D4B8D968B156205EC +:10893000D17E49B3F6B40EFE928FBFF399573E8CA9 +:10894000DFB189A31CF3F3BC0839C8F2A177D62C98 +:108950001F35AEE2FEFD21F7FB221E77DA377323C7 +:1089600081FB626AD08A2DA7E37D3CC4F4D640D552 +:10897000AD782FF7FE997B63709EE9AABA3E067226 +:10898000B5737C17B19FBBB40AE6AF778FDF1FE2E8 +:10899000F180F357B3F392C8EB887A9AF37D474A94 +:1089A000E499EDD47AF09CF641AD6FFDFBB43E7FC7 +:1089B00058E2F05A980FDA6DBC5FF0DE84F0DE3FCB +:1089C000F326FCAE42D7F84BABC13EDBCEF129DA41 +:1089D0000F8CBF1EE1EE2CBB358679C465D73BBE3C +:1089E000B7EFE57907EE79EAC26CFD3BF5BF0EDC27 +:1089F00087C684FB56926F7EB500FC9F14F0C77843 +:108A00009EFC070CFFE3EF33FC3FE7FC776588D95A +:108A10007D3B0D27BF83B9F0772585F7CD58BF6F14 +:108A2000456A0CCF85FCAEC2EF52ECFB3263EDB36E +:108A3000D738FE7ECDF3AC6E7B44C678CAFA1A9660 +:108A40000735D67CEBBD7DA5A3E5EDDFFE88EC58B0 +:108A5000CF58F05C1762F1A8754764C7BA5B0F176F +:108A6000B9BE0B65B1FBDFC67E0DFC8C6FD67830CE +:108A7000674DE077041FBCCF781D8B2F0BE2D560CC +:108A8000BFBBF37EE3752C78AE0C31BD36165EDDD0 +:108A90007CFA41E3F1FF37FE5C0F78BC00FE14F472 +:108AA000F82F7ECCDF7EFB05F2E37FE17174780E58 +:108AB0005D201E85BC3CCAEF354FFDF2E653D75012 +:108AC000B979BA79F66CCC9755E23356CC80EF0B76 +:108AD000B0EFA54E053F6E9E7907B87E3ED5BC70BF +:108AE00003E657268A50EE3EEB31FFA51EFC76CBFF +:108AF00065F473BAFB9DE2F8FD6AB858DC1F08CD37 +:108B0000A1FD973F27D7ED1A852EA4D9860FBC2744 +:108B10001470E691BAF07D8A1877D7831F6D697E4D +:108B200038049D9F4DAC786F744EC81F089DC78256 +:108B3000676FF842F5621AE91725D9DF71B98CFD24 +:108B40009EA5E18538CBF2B33ECCDB7B0E1EB1DFB8 +:108B5000B1FA7198B65FDE3C8BFDEE1ACF8F220A18 +:108B6000C13CA2357BA7E2F740C8CA15D8FE99B030 +:108B7000D35ECAD249F017FF1DB509AB2CAF3DFE3D +:108B8000128B08BF7F5B25C0D1AFC62F7F948E7F2D +:108B9000EA633EF6BD92154B778728FF3CFB89625E +:108BA000C9FEFD96D739BFCD5DC5ECF4FE3349AFA4 +:108BB000C766AFFB23EC3DED7FE3501EFCFD86C393 +:108BC0007B7D52E279BAF14AFB77C24B787FF1DEC6 +:108BD000DDFFED7018FB3F5BE0FB2C7FE4F0B5B4EC +:108BE0008CDE9FAC1C277E9F6C92FDF7C9DCF8EBF6 +:108BF0000C27DF017ABC20B5BDB405F65393867C03 +:108C00004C1413F3D7041EE839B31B7EBA53D0E9D2 +:108C1000E3E5D3D12F2EE011F3418817E282F571FD +:108C2000162F2EE1F949F3BAFDE96D987BC87FF75D +:108C300054A1708570FE50647CE1F9C5B85185641B +:108C4000543A6EC0674E8238827B1DA2DDE9B717A9 +:108C50007E14E0EB3FE5D1B7578D5CBF5B2E5D7AAC +:108C6000D0C9373338DF44F9F77488D256D962A3B4 +:108C7000DFD408FB5D9E8BE5A7B3B08769BF4BEFE0 +:108C80006DF31A74DC1B149E6F40C7B7F3C773BC37 +:108C9000BD01414D84C30A5C067ECE17987C39DA4B +:108CA000FBB9CA7C71CA535C6E3C1FAE75EC97155C +:108CB0004B6775C24F6F527E2903F1D57FEACA4ACE +:108CC000D877D7F3DF5738AAB655CE023E578D0D69 +:108CD000E077BED075087C1794A31CCFFD67125EA9 +:108CE00038D74C5FC9F8F5BA95039E0D41F89D162B +:108CF000B66F5F86A6B671DA236CFF1C5593ED7EC6 +:108D000093C21D39BAA3BB16F739FA25B7461ED947 +:108D100001F16DD2C1BE8779E9CADF6F06BF77BFA7 +:108D2000CAF24A9EBB3680F72A28BF3AFC20D1956A +:108D30006FA5205F609C6A5CCABEE7CBE4D34F4856 +:108D40007215F09F905323E452C70AFEFB2EC6A56E +:108D5000CBF3EEA3ED1C5EC64F47D3CB239FB2F1FE +:108D6000D3BD11D511CF7A9ECBF9D3AEF3E3CA337D +:108D7000EC7C47D781F1D07FBDAAF2415847B4F5CA +:108D8000AD14E4E3DE1BE1BF7B91AE7B18D62BD69E +:108D90002FD639AEF7B24B21BE75438BEC92CF6C18 +:108DA000BF5DB7D425B779FF5A39BE1EFDE81F65F0 +:108DB0007121315EB499E2EB0A5857627BA82A8789 +:108DC0006781CF03AAB93AFB7B4614DE35BD41CC9F +:108DD000E71ADF3EB405F8E88FC144A4C4C6A7F77C +:108DE000449C725CE86768077A6BB96278F3E9AF14 +:108DF00015CD725EB8559FF1AA5D0E8C90072E7D41 +:108E0000A97B7ABC10D768216D583E2B0F637996E9 +:108E1000D343F43F4B32A17920879A658C079E6D2E +:108E20005BE1C87BFB966B1DFFCAFBBBE75BD5CA4A +:108E3000F476A1FDB1CADB1732E97A7FB659C67361 +:108E4000F88DB7CBD60DB4FDAADB59FCF7C636E7D3 +:108E5000BAE93E3D750DC0F54506D769CA560D986D +:108E600014CBEC8F9FA74B66419EF769A011D823C6 +:108E7000CB8BC4F7EEF0F73A93EC9FE4C5E64FFDD9 +:108E800010F2278E47581ECDE9E6154B20F478EBFB +:108E900041F283210276D6E87641F2F34E7BE0D2AE +:108EA0007B9DBFBF3717F412EC4F255379936DBFED +:108EB0004C2929627A71A594D7FF5503C16880E7D0 +:108EC0003FE4D67C76E095254CFE5C776FFEFE573E +:108ED0009684D8FB83F9DFB7171771BDD35709FA0A +:108EE000E0BA96FCEDD23AD39F6737FCFA4688E3A6 +:108EF0003EEB717E97E780CEE8BF45677AE274EF7C +:108F0000BA256580EF8D923EC580F88959057CF5BC +:108F1000C9DB5F46BFDF469DC13D3394780DE4CC8D +:108F20002D67D67495513AF6AF22A664E4E4861B09 +:108F30008EDFF3FD2EF410D57FAF80FE8BC2EFB035 +:108F4000815C53D2E627D892AD4809D0DD5A87F725 +:108F5000C77A033AA33BB58F69E3E40B4E7BF71D59 +:108F600017FFBAE979EBBD2E39E1E2EB9F1313ED60 +:108F7000F0FF07883E9EFC00800000001F8B080069 +:108F800000000000000BDD7D0B7854D5B5F03E33BA +:108F9000671E994C92996426EF843384478000932E +:108FA0000021548449423448C44920105E76A09878 +:108FB0000609215AB89756FF662080216A1B9152F4 +:108FC000B4548714952AADC1A62D0AC50141E93BC9 +:108FD000BC14956AB8220822A6566FB92DD5BBD706 +:108FE000DA7B67CE39494868EDF77FDFB55FBFCDE3 +:108FF0009EB31F6BAFF75AFB916059B4E3290F2161 +:10900000EFDE6F0C4F7511F26659F40E23AD7F0140 +:10901000FF4D25E4C30642C216424E948D5B41C605 +:1090200013F25959B4C12845BEEBCB8BD07E382101 +:10903000171AAC582EDB6D0C5AC610B2BC8C956456 +:10904000886220F984ACB612FC4FDF7FB9A92DD11C +:1090500061EF7BFCDADD4612CEE67D09C0352B2EB2 +:109060006007F8C7C52CE9A5DF70075D8C9B90BB36 +:1090700077D27ED648BF9AEDD19A71DEBD9F8DD34F +:10908000D7BCEFF275BD0FEBA2F8386920356D390A +:10909000B4F4CF8A5B921369E77550E44C88D4AB83 +:1090A000966AE19DB3305A03C789CF8D356D761826 +:1090B000A7D1B6D80EBF2AC3FCA309D905E3437DC7 +:1090C000FD384226F50D17216B713E01CFF1520696 +:1090D0000FFD4F268984CC926048420A395CC74B09 +:1090E000C7C504727AAEE784A1EBF71329FD834F5D +:1090F000C8DEA768FBA15B16AF4BC161BCBF1F4FA9 +:109100007F0FBC61CC6BA6B5DB75EB1365E07E2DE4 +:109110007EABB768F1ABA73B599F40484ACF71225D +:10912000FC767D7AFCFFE2B3BEE91042BCF4C7676F +:109130002E23A907BA2E90DB4C93281D16D49E250A +:10914000CB68793ECE8AFDCFC729582E20C4D7865A +:1091500074F48E28A7FC70A2D546242A7FC199B644 +:10916000D050CAD2272B6EF2A8E17990D3A572DB3A +:109170009E921405F841D9EA86F6FF61244FD15139 +:10918000FE74FA850D6E4AC725C70CD092CCA92A69 +:109190008C9940EBF9278D7946DABEC9E14439A9AB +:1091A0009CBDD8A41E57CFBF953AFEFD84C35B6219 +:1091B00025417B1E705DD778E05FB1CEEA6DE5B7E3 +:1091C000A4D0792A6B1F9904F3546F39681A41D7D8 +:1091D000F52D8715E7BBCFC1FA2F94F97AAD74BD91 +:1091E0003184BC0D4002FCDF94424FC1BFE54E13F9 +:1091F000FC2EE0BAB3FE4289CF1EE17BF1FB8BB0BF +:109200003A3AEE4E8701CBB13181271D6EFC6730B3 +:109210002E9E90470DF5856EDA24CF4134708FE392 +:1092200070982DCAD3C4185947371EEB181EDF3E5D +:109230005DB101EA7DE1714F1FF2D11F1E4FB6DA19 +:109240007C04E46F4A0CD2B7DD4C82B0FE53B7A762 +:1092500086D6792270E6019C7431AED97F6D708C10 +:1092600089F0C1DBF75C5804724DDBADB7C733F84A +:10927000015FC79C0C0F44A1F29018918784384A73 +:109280009F9C9E70BEC5E54A2F3F6796492DC6310B +:10929000588612627BB6EF4B2EE64BC40F7CB0EBC8 +:1092A0005E4B4D6B2FF2E374327AF5D00FB0040AA7 +:1092B0006F80FFBB7A76F946BA1CB22E3A760AACBA +:1092C000F38C6EDE33241C3311E834DBE8053A9D61 +:1092D000A9D7EAE5CB9C2FFA5BE7C21AAA3F62FB4B +:1092E0005ECF425328C64BC77D6B95B13444CB4506 +:1092F000B4FDDC31D8EF2CE89D45F55A3A9F22FEAB +:10930000DB27005C650CAE93E696DBF3299D4F7C72 +:109310003B2B2F08DF673F8A764B7632BE39C1F58B +:10932000FEA9D95AF8FFAE83BF87BE3D6DD3CCDB13 +:10933000977D12F30CD43EED32FB33404F9EDAB1F1 +:1093400070D16AE0CF1D36EF50A5275EDE731A118B +:10935000BE13C0C72A3DD56EF67ED4EE023E4EF651 +:10936000AE537AF2EF893266F7765544D784A0E49B +:10937000FD1F2DCC6E053F6357A802E1FF1BE713CD +:10938000A15708B76F823FDEE7F47C9BDB03C5C9BA +:10939000F4E9C2DAB32685F6BF13F48B9D3776C1A4 +:1093A000F8C93B9A297C9D06560F3E1E13023F4882 +:1093B000CC27D6355287AFEA2D5ABC2FACD5E24B1D +:1093C000CF4F6F860CA521D5BC776DF3B4364B918A +:1093D000FAC255B4EE89D8BD5D2103FEFED99A3894 +:1093E0005CFFC98A1F20BFBCB3352B0FD4D280EDE0 +:1093F00060C8F06FB183809FEBD9C1AF3B07E66FC8 +:10940000BD4F4829D2E3DAAC9993607DDF4A40FF33 +:10941000E2FD2D8C5FAB38DEDF31778E56C327E857 +:109420007C86FB2DEF77E3D71F0B7652B4BB03F49A +:109430001EF4E772F0CE1AAD1CDCE5D4CA939EAEE2 +:109440008BEAB574BDD7E9C0F6EFAC69B481FE39DB +:10945000097C037C5E6D44FB74D25F8C766017D808 +:1094600001159EEFD5CDD39FBCCD97827703FDC963 +:109470000E1BFAE52E600BB0ABD98C8E9F415B2A98 +:109480004293E30D9A717BE8B56C2DDDC1DF50E3AB +:10949000F118B777A2BEA0460B17F16AFB9F3030D8 +:1094A000390ECE34A37FE83033381DAD3647D08334 +:1094B0004DF2C15E76CFAFEB3F5F0E69E6FF01E78D +:1094C00093BEE6EFCFDFBA517FF35DE25D8172FEBE +:1094D0007F3CDE3902781D801FFA65C53B7FB841AD +:1094E0007BF25BEE2FEAE39E6EBBC1FD1FE1EF2432 +:1094F000CCBCE922A1ACFE099FE7AE2DE5E89F9E1A +:1095000030F837C4003D8F1B1CC08FF9A7599C72DF +:1095100017F7C3043C793ABB29EC4F7FF6532F3F32 +:10952000A72A1FC883794F55CED5F8C773AEA69129 +:109530007042A45E5925F9C02FE896D7282DDD6D1D +:109540004E33AEC3E6543470555ECDC471847DBBDA +:109550006BCB62E637D73F92A25ECFEBDCAEBDC1EC +:10956000FB77FBCD32F39BDD8D9DABFDB4FFA77682 +:109570007F5CBC8A4EE6782D1E4E71FA423BE0BFFE +:109580004AD96FEA8D0FE7CC36EAF413F3E7F4FA21 +:1095900048B44F8C3768F841CCA3C7E740E71BE7D6 +:1095A0007008BFFC3CC9A23FE468FDD8BEF8B77B99 +:1095B0005E5D7BFDBCAE782D1DF4F3BF114734FC1E +:1095C000AA9FA72C9EF165FE1646F713336F423E05 +:1095D0003C59F1CA64A0DBBBF7FFE5D45CD0334B48 +:1095E0008F4C06BB50161F83EDDFA54B4A067E0F3E +:1095F00048E817CEDDB278430A6B8F71F88993592A +:10960000C8C7B7F1F14F98BD1A3BA897CF57389C00 +:10961000A7E3989D22A42DC31F33707CBDD507BE40 +:109620006ED46EBC22E6BF366E34D883D7E218FD06 +:10963000E8E81950EF2BEE1725C5088B438BED4D4D +:10964000521CF88FFED5A017BA2A631CAD141595CD +:1096500016DF0CD0E3A78E1B0C6B991FC5F21C0CF8 +:1096600004E299E97970246D3FCB6FF4455150CBFA +:10967000A1CD244AD7227B10C61B7FA2ECB9188843 +:10968000DFE65914D0EB9553FD1F1941CEE6462B6A +:10969000EB683DBF63F04117AD579449102192C369 +:1096A000D4AE77D2F53F0B95AF100620C5CD49510A +:1096B0000F2EDF348DD27DA4BBDD60A73DDED8BC8C +:1096C0007C9395EAAF0D6BFDC910523FBAB9749304 +:1096D000F5662A1789BE8EA95E8A9FCDB74DB766FB +:1096E000D0753D2EFACFD8E44B27649F21E091E856 +:1096F000F7CB9B974C97297E64695AAE81F6BF12CF +:10970000BF6713B49F3367C55D3FA7DFE31E7D606E +:10971000BA4CC7CF5F28FA3F34BD7808857732FD51 +:10972000772AD45BA2A0EE8AF62B865C0AC7E6A253 +:10973000E932CC17EFBB87D0FA88478B109E8200A6 +:109740006F4FBE3FBD588E8CD7B8B9685390F64F57 +:1097500059534CDEA3A42AE80C4AA0EF5E2FAC2F8D +:1097600096E9FC8B121EDB944375DAC4B2C26842E0 +:10977000D7BB34A16DBA2517E8E4CB5568599DF0E5 +:109780003384377F617024A1EDCDC15F6C2AA5BF02 +:10979000379FDEE187B87AB5C4E42DCA5A1F36D0A8 +:1097A0007F66AEF19300FA6F2D8C4FD29561C8B7EA +:1097B000A29ECDF261DDF564566F5F47BEEAEF45CC +:1097C0001E535C4CFFB4DB7AFFFE2BAE07E97A51E7 +:1097D0005EE34E13DF6E5A1EB191762BB537775884 +:1097E000C8F8021A3F3F1D6FE77CCBE7B532B8449B +:1097F0003F12BC231EF45999F0E5E9F70A0AD73E57 +:109800003E7E9697DB01129667815E361A101EB770 +:1098100051FA6A39FD3DD146027B68E94E20582F46 +:1098200023C4B7C71E19F7777CD8922CFF4EE0FFF0 +:1098300092A494DC464F641C0AEF7A8057E49D287A +:10984000DC32C0ED3656E4DE93A3823B87C1DD1ED9 +:10985000CFF041A7790EFC9EF68E9183210EB94779 +:10986000A7FF28FF9B08ED6F7171B955587F7731BD +:1098700041FBDCB5292AD40AFE9E35E0F5ABF23176 +:109880007FE07AAAF6EA08121AA7F25FE4B019F4A8 +:1098900047EDD51CFCDDDDD83B5D441EB3F6AA9335 +:1098A00004C7A97F67EB8B8CE3C2EF7DC143C30A7A +:1098B000D45FAB9C1C817CDC3584C57FAB627C496A +:1098C000F1D7F3B7AE4A7DC02FE3EF9E4184740019 +:1098D0001EE9EF2427021F292845FBB60AB40645D6 +:1098E000E9AA3D854944CDD732A78399AD1FF06CD5 +:1098F00050C1F10F8EBF0AE02F1C9F603E68496A7D +:109900000EC68BED7F2B1E558EE3AD63FC2DB3F899 +:10991000295F66FA30BF23DE1194227C21F841D002 +:10992000B33DBEBE10F1552E395A3D3DD72D27709F +:10993000B9F04B387FD2C28071B1CA7F107CAF972B +:1099400013427EC8F43DE5FF45209710D7015EBC69 +:10995000541E62D4746470AF863E6EE40346BF1436 +:109960003BA31FC74F4F7E48EB871F32F17B7EC75B +:109970002133E0BB96C399743A1C3B2A87AD633907 +:109980002DFF01492B3AEF37E3195FB7B7158FBBAE +:1099900089CEDFDE6422A092F2270B7DFAF9AF8B2D +:1099A000A8FE4B1275D0F70AE29BEB4BEA1E582338 +:1099B000EDBB1EFD7CFAFA2111FCB8C0C8C747E018 +:1099C0006DE474DDC0D74DF117B4C66BE49614E4B2 +:1099D00045F48B9053319E18E7F60436CE6D9C4EBD +:1099E000DDFA87307EA3FA06F385A4292A3454FAD7 +:1099F00077E81DA91FBD53CEF50EFBFD087573A1B9 +:109A00005D62A2324CA27EDBF1A3C543C18FBF379A +:109A1000D9A89CA37665B614D840289CB34E2BD504 +:109A2000F07BB7FF451161A7FE4425FDF10BFA7DE0 +:109A300076872D688C057B1EA5D8D579E71609F9A0 +:109A4000EC5E1A82AEC9EBC91FF7269B719EE3A597 +:109A5000597101355C1CFF77409E37ABA77C8A3A71 +:109A600085BBDA60547DB733BB7338D6F7F5048A0B +:109A7000FFF72452857EF034B7C69F7950E7670B15 +:109A80007FA624CE579730A167FBBEFC1F3784A169 +:109A900028BF2C1F9454660B01BE92DA0897CFB0F2 +:109AA000A116E868244189AEDFE0CAC04EC72BE9A1 +:109AB000C7B8C878C7257F3AEE1BB82D5EC853508B +:109AC000BAE0FA4B8CF71C34B980CE92B791CEFA3B +:109AD0009D0427F71BBBC6A3BE8F667C78248A58DB +:109AE000A3E8F8AFD112E9CEF5D21F334730BD64F9 +:109AF000167685EBC16B2CAE16DF8F48E5E90E5A62 +:109B00003FE21E9EDB28E178244AC5FF745C02F028 +:109B1000FCF1F36F9C9B4AF16D1ACCC673D1F92B03 +:109B2000547230B194AD7B3B9783ED09D12C7F1FEC +:109B3000CDC63BE2A16C02F30CA5EBA1F2F0AA2D7D +:109B400090538F703DCCE849F91EE89568A025C870 +:109B50008199D5FFEE62E38DE4E51E17A35F622CC9 +:109B60006BA7A74FB49B7DFFB1C4E4B9F90CF56BAB +:109B7000B2347E0D2183615E3F017E692EA4EBE944 +:109B8000659C5D092C7F43ED18AEB7A75D61FA4F68 +:109B9000B69EC8043E7EF95AAB03F878BD89F1DD64 +:109BA000CB8E9003E23B7D3F7334CBEB0B7B24FCED +:109BB000F8CFDACAE3403F7670FD61E671A68067B0 +:109BC0003DCF7BC45E8DC638F4B71C3E39FB1CD23A +:109BD0005B2EA06A867635117FD0A1A2B7C961D06D +:109BE000F8FFB15763B17FEDD5712494703DBD9DF1 +:109BF0008FDF4972A926DEF8ECCC5C8453BF2E3D82 +:109C0000FEBEC3E115F558805305571CE94238E301 +:109C10000AB4F0F5E57F7C9420FC17A3C6DE44E08F +:109C2000356B7EFF0E8DBB82EAF93F60F347E6A5F8 +:109C30008A46356F5B82EF0ACA3F99EC383F8A1635 +:109C400094EFBF30A21D61F68A963BECCCAE837ECA +:109C500016710BC8B3632C21F72514FE37F4EFB649 +:109C600073BC9FD02771A7237E9D44FBDEC7F5D030 +:109C70007D206B1354FE9FCCFC5401F718BE6EA1DF +:109C8000774AADC5BE732ABADD97A0E0F7A342DFDD +:109C9000112503FA53BE0DAAEDB71E9F0E97C0679C +:109CA00094860F22F8B4E3EF5F963F983F39601C2B +:109CB0000D79D352890CA5C5C4694C5F887E435C7D +:109CC000CC9F1F42158BDAFF17FE966897CDDB6598 +:109CD000F376FDD96BB5BD908C113D55C7E9E7B959 +:109CE00074DCAC507C7DCDC5FC8F22B76FAC0BE42F +:109CF000CA163B06F4B46CCB0C11FA69C73F8A95BF +:109D0000B514FEAEDF9BBCAD30EC5E46D7C279AB7E +:109D10001A65FABBA94D725848044EFB1AC9B7948C +:109D2000E2EF268167175B4FAD2B6C1E42E74FAD0C +:109D30006570A4B71D946495FCA4D7B076D35C2657 +:109D40004EF7D0DA92F1F0BB4F6EA6A42EE5BFDF3E +:109D5000E262FA2DB54DC23C776A3D4500A573AA73 +:109D6000978D6BF786A4AFE544D6D96428CF013D23 +:109D7000DF9418ED053DFF803B3013D6597B261C40 +:109D800006344D3CD321439CF78CDB77876B4264D0 +:109D90007D8AD1910AFA33FA0C83AB255ECB0FD4BE +:109DA000A272385B99BE3492A3E05FA1ACD3F912E2 +:109DB000D765A39D11ED13E3B99E4F248117D0EF12 +:109DC000214D04E945701D89EB86E17E8BA067C4B7 +:109DD000CF1991077E4ED6436119F2AA2F6D67FB0A +:109DE0000A7ABE5CC1F14DD751A35E477FF65CB4E1 +:109DF00033F511970A7E8FE6FC5338CF351FD657BF +:109E0000BBFE17D11609E8B0438A46BBF01D6C278C +:109E1000F04EE1F826C0A1E727397E979446D7F5A2 +:109E20008D65C461247DC359BBC6E85BAAD677EBB8 +:109E3000CD48871D66EDBEBAF0DF37F3F8FA2DB7CF +:109E40007F13D0B76EEF2366A0EBB29D67CD815E26 +:109E5000F47477FF01E249AA6171416D953504EB15 +:109E60002E9C2723DD96AF37872C1EC887EF091B52 +:109E7000C0CFBD9F7841CE6BDBF6BC9A4AF19456B9 +:109E8000EB9B00F9B244CA6C1D3911BB915A1B9669 +:109E9000C01EA7B62DAE453E4E8EF6021F837F0A2A +:109EA0007EC3E5427B50A2FAF5B22998ADD0EF9778 +:109EB0003D362FEC67BC1AC5E45EE0F9B53DB71E30 +:109EC00095285E635EB084A17CC61DD80D786F5E58 +:109ED000AB14029D9A4B8803F887FA23F742BDA47E +:109EE000D14E400E06BA6EA137C4EF13EF67F2F001 +:109EF0000ED71BF4BF3CD037AFBA62987F62607A4E +:109F0000E855138353E6708E74F9F6215F8230A60C +:109F100044D6AF9F57C53F076F848F2796B6996188 +:109F20003F7539D72385F3764AEFA9E8DEE162FB76 +:109F3000C0A9BB77480AF2F1CEB5252E6C4F2C0A8A +:109F4000FCCEF222CBE9F7BB54FA43ACA3173DF2A7 +:109F500006F099FD4CC761A647C2C86F025E414733 +:109F600041AFF75CCC5EDD42CD35FE6EA674A5E355 +:109F7000BD3AD886E309B9D6CBE17B9CAF53AB762B +:109F80004A861CE67FFA55F0897645EEA20B2EC470 +:109F90004307E2614595CCE2750ECFA1B9772E0556 +:109FA000FAAF70A5E402BF7EE6627ED4965F1E43E0 +:109FB0007E5CD122B17DE89663E64AC86B057F6C72 +:109FC00004FF67067315C8D69F1F437B31A39DC549 +:109FD000E12BDAF7C85FB347F8D473E9D09DC0C767 +:109FE0002BDA2C244A02FA2938BE9E3FA91E41B919 +:109FF000214133EEA7409C807A93043C10970B3D9F +:10A000003B92AF9BD8FDE30DA04F1347E7827EB490 +:10A01000BA19DC62FC129BF79015F4641E8B17844E +:10A020005D8BE6DFE9F861D4B3D4FB05BF578CDF65 +:10A03000D33E8CCA033A8C73333D4AE99BE0EEC5AC +:10A040004E88F13D4F541025464537C0B78ADF068C +:10A05000BBCD38FF60B7CCFCE5228627D9CCD62F04 +:10A06000AFB386202FF29AB394E127DE8AF83962E3 +:10A0700058520B743A92CAF8ACC9B02EBB9ED9A7FD +:10A080002C80E7D0DC58C2F410D33B5B7EC6EC607A +:10A090006DD08E71586D6036D299B8A2BCB09F4811 +:10A0A0000287CD9531113ED0D35579E1A019D63133 +:10A0B000A38DF17F045F210DBF527D86F41E29F22E +:10A0C0006F945E804F113727583BC326A5A77C2687 +:10A0D00040DC4C6DDC6C889B213F5C60BD6EBC2C11 +:10A0E000E615FD45BCBC7CCD6F33CF517B7077F25C +:10A0F000AFB1147220E232D1BE8CC74113381D6754 +:10A10000B999DC2D1FDF867CBEFC5C3DCA87BD94FF +:10A11000E909FB19AD7E137119210F31FE8A6EBB5F +:10A1200005F2F0254F4A8E46D2B71EFA3AEC3F812F +:10A130007EBF46BD671ADFD4EAF6D7BEE666FC7C72 +:10A1400061174530DA817AF4972F6F97703F76A0C8 +:10A15000E391F04909E8B79CE3F0F2EEE249EF43FE +:10A160001CBD2B0ECFBF7CB87BD637DFA7F05EDEE1 +:10A1700039D50BF6D5D5E8477EE8724779C11FA6D9 +:10A180006AB014E2F2B56DAFC4429EE9E27363F3C4 +:10A1900040FF7D8BCBD5A59F19D7003ED63DF3FC64 +:10A1A00014F8BE3C2425807F7779D7939F833DABFD +:10A1B000D9B912CF97353EF7B219F61F0CA11DEC95 +:10A1C000F75D71E8075EFCD1235300CF8D6D8DF8EC +:10A1D000FDD28F7660FDD033CF1FF81BF80DFE58EF +:10A1E0002FB4BBF4B347BEFD37E0DBD9B15E5847AF +:10A1F0006D4066FB85825FF5FA67CF41943BC11FD6 +:10A2000033C0FF033EAF627A44F0E7F142B69F529B +:10A2100051C4F6698E4F8FAA42BF97CB5DDD7CE7B4 +:10A220000E903B03C55F32ED3FBBCCB903F65B76C6 +:10A23000F2F5D7E6307E68A2DC02F985E89CB039F9 +:10A240008DB69BBB70CF14C067938D1444219F4281 +:10A250007293CE834244F9ACE5B5FF91281D475374 +:10A2600075769EC65774B49D5F503E7DDDC4F2087E +:10A270004DDC5F9FBBF0ACC4F61564C7792107C6FF +:10A28000EBD93719C713EDBAFD368E87269E37A155 +:10A29000E3A3BDC95FC5F3A1D29246D8873EB23AC7 +:10A2A0003C19F8F6A50FEEB5D5E6A8F99BF54F6D6C +:10A2B00067729F5AD3710BACF3B6ECC5E3609A1585 +:10A2C0007C9FC505F935B03741BB46BFEDE77296B7 +:10A2D000E820AEAF40DE46262E38DF5742C849138D +:10A2E000E2E7291C5FB130BF497979EE53B02FB650 +:10A2F000D514489900F6A689DBA99D0C5EDADF012A +:10A30000FBEA743CC757F2709C0E533CF60FB2FE4A +:10A31000B7EE64FB6A210E7F5726D829186FBC1D43 +:10A32000EC4AB00AED8A62F6023F5C822678503829 +:10A330003866D1E8C8BAF57916D063B03FFD96BB50 +:10A34000F0947B42A41479193D3D9213E977BAEE5B +:10A35000CA441FB623BB12FA3907CDE87568EE155B +:10A3600073279D77CBBEB3A887EA80DF61FEC03933 +:10A370008DBD15FCB4F5C5B3C8EF157B197DEAF6A4 +:10A380007A4C10D77CD8E023EF5107B38EF3F75601 +:10A39000A9B31ACF8FBC18E5803CDA15CEFFCB4BA2 +:10A3A000CF9E07BD35786F8A0271F79517991C1CEF +:10A3B0003118109F475A47ED00FB42FD5A64E5BA39 +:10A3C0007AA5D582F865FE7EE1BCA58F40FCB5A2DA +:10A3D0008678413FD4B597A72B68572C88DFBABD44 +:10A3E000C7905F847F4BEDE15218D749ED4E14C4FE +:10A3F00063D3FCED480F570CB6774E0B3C5282FCF2 +:10A40000959B0FFC7568EE818D5698771A71C0F890 +:10A410005B337C2FA6E13A2402E726B69A5A8A6477 +:10A42000DA7F6B89E2A018A4F8DA990C769E649B17 +:10A43000B95D5B8A7E735DF2022F9E5BD3EB8B1757 +:10A44000D7A27F55A7D8109E197BA57B99DF6127DE +:10A450000C7E09F97246E8A610C8FF471C6F027F00 +:10A46000574C1D77025EAEFC9C3220FD3E631AE322 +:10A4700053E7B436D433AFBD48FD9A31117E8CF921 +:10A4800005F56F683D5E76485E94B35916353D5BC1 +:10A490004CCC4E39B9DDC92A65741D9CC8ECD4E09A +:10A4A00044032FCD5CBE797ED7111C0376F6234E74 +:10A4B000771C0EF43F1F77C5D230CA51ED6EE69778 +:10A4C000B92CBEDC6FA8F8D655CCECA4C8B343DEDB +:10A4D0001DF3ED10BFB8207E565AE19C11A51FD286 +:10A4E000F736D7F03CC057492293EFD46C09E33DCF +:10A4F000EAAF21DE12E7ED94AB73589EBEB77871D8 +:10A500007A22CF1F26F8C74BB49F3B2906FD18B708 +:10A51000B1D01005762857F2B62AB81F88F16D978A +:10A520003BC5DBAA916BE6EF7D9018C3E81AFAA34E +:10A530000C799DCA4405BFEBFDB99EF1729417E2F8 +:10A540009DB296E018882FC4FE80587768ADAD4A5A +:10A55000ADC7EEE0EB0C8D2055A017A8DF6EC77CD1 +:10A56000B283CE037179EB4D3F62717923B62B48EC +:10A5700064E7084AE8FAC02F7367F95731FB1A837A +:10A58000EB70679125D0CFDD982C357AD47876E0C2 +:10A5900079AEB7B89D11FE781D9517F4E3F6317EBC +:10A5A000AC033FCED3B77E88F037D30F33F632BA41 +:10A5B000D7ED65F64FC4E9A0F7E0DC21E809CFD874 +:10A5C000885CD7993B87017F0A3EAF9BD2390CF05C +:10A5D000D3977E28890EA1DC958C1A86790831CE16 +:10A5E000159382FB7657687C897E2C97879897987D +:10A5F0001C08BAE8E31C800BE245A19F1F70FB1BFF +:10A6000012215E378437C2F901A14FEB5EDA34AC18 +:10A61000B77360429F5A65A6B7ACA1E850A38A7F82 +:10A62000600F2C260F4B3CA715BD86E3E3B484F9DD +:10A63000E2E6EC933F6946FBDF16063E8B4AEFB835 +:10A6400019F4D723892CBFB65A62F415FBFF891081 +:10A650009B80DE688DC673B8227FA3876B3D9763AE +:10A66000817F116740BE1EDAFF84CB4588B7FB05AA +:10A67000E73B01B7E06BC510380BE711FAB23FA218 +:10A68000DF97954F12F3083B18C133A3B3D86F80FF +:10A69000F594E7F4DDAEE520D33382EFC4F757B984 +:10A6A000DF7B3FE55D287F2AF2B581116C1F208A90 +:10A6B00068CE6989F1445D9F4FD797719F1B39FC24 +:10A6C0003E02F281F906FA5FDC94522FACEF0F1CC8 +:10A6D0005FFA7E32913FED147E9547050FF7C9680A +:10A6E0009445A6C4ABE10A69E0D2E7EFBBFD32DDD9 +:10A6F000387DC1DDA45B5753D6010279AA686B2C63 +:10A7000097DF6BE8F76FEABE7710F496A3BE63F9A4 +:10A71000AEFEE6D1C31BA5F40EEF40E9D164D853D9 +:10A7200003FCFCD3067E1E6BFBC0D67980AFF33BE7 +:10A73000FC1C2A593A42B3AF62F72A6B218F3CF5D1 +:10A740009A928BFE353FCF193385FCD948F935B63F +:10A75000A0251BEE99B8FD5AF893AA6C9AF37029BC +:10A7600081784D3DAD2655D33EA37EB0E6FBA035A6 +:10A770002335DF3DC13C4D3DABE92B9AF6435B8A67 +:10A7800034F5E1DB6ED3B41F11AAD0D49BD7B655F4 +:10A79000813C8CDA355FD36FAADC69CCA5BF8F6EA4 +:10A7A0005BA2A5870E9F6381AF419EAC9D796A79BC +:10A7B000F2260D467A4CBDAAC507ECEB68CEFBDF4E +:10A7C000207F8CDDABE30F5D7F215FD184F147F407 +:10A7D000FEA63FC3FE77B45E8EF8B863AC4C7E7ABB +:10A7E0008CDB879CAC8BBE5306FE3F0015953FFD6E +:10A7F0007A83F63E4D49551CDB5FBA5AD18FDFCDC7 +:10A80000E4648E85ED3BCE89D6DE2BAA4F627AB802 +:10A810002689E79906C8CFA7393F1FEF8B9FA99BD1 +:10A820009B08F6A294603CEE285DFB67C8EBCC93D6 +:10A83000C32497CACF16BE9EADBCFFB606078EF7DF +:10A8400078433296DB1B14FCFD89866C2C430D5E2D +:10A85000FCBDB5A100CB9DD40F84F2E98652762FC2 +:10A86000A3C18FED9E6DA8C2727743007FEF41BFF9 +:10A87000ABF1686FE7D07F4E519D4B985B651C1024 +:10A880007DE692873A8CBDDC3FEAD1DFB8F0BAE7CB +:10A89000B7D79C290C1D56B56F488A719D07A69A9B +:10A8A0004826627CDB4FFFBF36F842874DFDF3B789 +:10A8B0009E7FC8B56F0CF58FEEF97D0ECC9D4AC812 +:10A8C000CCA4F6078339113CF5CD57BDE3C767BD6E +:10A8D000920A41FF18B03FAAFE0775FCEB93E334E0 +:10A8E00071B428FFC1F9B090F36BA18E5FDF4962AC +:10A8F00076EC4012BF37F77F8C5F0F45C5A05F7EB7 +:10A90000C8A4A4BB55F43F14155DC5CEAD13653680 +:10A91000A51FF5E21C1ECABFF664B61F284164825B +:10A92000F9E3210ECC9344DD603E45874789FA95D3 +:10A930001E3A5EA1CCF497040796607CAF21A25F1B +:10A94000F11C85EA5CBEB1273FD0718266F0C796E4 +:10A9500074CE077F2E2B59D1E8DB22D9785D7D5D3F +:10A9600004F2D64B5EB047BF1B94B78F40DE46FD66 +:10A97000FBE44DF03BB99635447D6E4E94855CDE2C +:10A980007626BD8BF226F8BD88FB71A25D7A32D3A4 +:10A99000CFE9C94C2E0E713F05F823AF177FC5953F +:10A9A000ACF5F36E14DF8584E945423A53414FDC40 +:10A9B000687F2A3932F42BB4C606A3C7DC78FFBE01 +:10A9C000F0D9A3DF5ED780F24D54D348307E35876F +:10A9D000AEDA6A0F023F916DA6CB9D2A3EDE10EBE8 +:10A9E0001F9B4CDBEF3591BDB03F41CDBCE24844ED +:10A9F000BE47BCD2FFFC565ACFE5F58941493153D9 +:10AA0000BEB1D0CA1A908FCE57FF07F4452E2F271C +:10AA1000F212D2ADC920373931780EDE2BD0C4F313 +:10AA2000A6F9A23A8DBA3889E248238C4BA455F195 +:10AA300010C6B410D87F6F96BC4D463A9F31C9D32B +:10AA400008408D2B2D34823C4D202D584E261D8DD7 +:10AA5000B0B537857419A1FD4DA5C146807310B9F5 +:10AA6000E640BB92F4F48A2FE03C0F24270780B71E +:10AA7000BF46B1FDEA355656FEA72DB615CABF46EC +:10AA8000B1FDEB601161F7EBDE89C1B893C66B5580 +:10AA900080BFBF1A7C8B001E3921DDCDF3BBFFD5F3 +:10AAA00089796009F543917D7CD55D28D7EC77C421 +:10AAB000BF27D20EEBC69EF5EF6D607989C64D8C2F +:10AAC000FF1BD7B2FABD9CDFBFCEE5E47E2E275137 +:10AAD000241824382EA56422E293D1319BD2219FE1 +:10AAE000D105F16C3F8A74B29136C4F3A6CAAD8128 +:10AAF0000DF865219E0392C27EF245B49A9F0636F8 +:10AB00009ED5DAE2B352BEB255B5854DD7194FE6A0 +:10AB1000F495679BF11CE56A29B02E19FCB0DD1293 +:10AB20008E6BE3E39A483D913C6A38FE693A3D0CEE +:10AB3000E3F747275391B7C34759B4D226E1799732 +:10AB40001BA5D7D3C0F41322AC7E2085EC807C43B8 +:10AB50008D8B24132A5F66BB15E5707D861284EF0A +:10AB6000E66104EF1F934E09E544AC5B9CD313FCF4 +:10AB700049F1F314C06F0E4967015FE6E47A8C1760 +:10AB800089DC9906ED0E488C2FF47CFD7CB2C8332D +:10AB9000A4337920D7B78F7B6E77BEED4261FD631A +:10ABA000D9EF0A68BDD0B900B6FCD63CB6B04CA609 +:10ABB000F2B3E7184161AD786CD5C3418ABF3D95CA +:10ABC000CE1FB869FBA38FC73C6C82EF8B24FC3E81 +:10ABD000FD71F6FDED42D20679A6371203BF0239A8 +:10ABE00099FF3BE5085C51DDF3EADD99807F57B1C1 +:10ABF000B713EFB92CB028B03FD506794E609C6BE7 +:10AC0000141ECA073F02508CAC3E95D6E709F4F0FB +:10AC1000EF3BE1DF948FB2967AD6C2FD18B25D7237 +:10AC2000801F33683BF56B68FDC2C3641CE497FB6F +:10AC3000D26B13453D28E1BDFE9B75DF85DE1BB25F +:10AC4000F49E77FF1F8CDF61C4F31D5215DBEF9973 +:10AC5000C8CB9B7999CBCB794BD9FED490AA8921CB +:10AC6000C8FB9D37298D76E0C7D104EFA91299F171 +:10AC7000E7EB19CE10E4692E48A411F26CC14D0423 +:10AC8000EF0D829CC17EA87729A5F5787029AD21AA +:10AC9000C8E39F6820BEF54355FA95D2C697CFD238 +:10ACA0003E0CEE1C8CD32693C87FB08E92C8BA900F +:10ACB000CF6EE1F55B6B59DECEE2A37A17EC9F4EC7 +:10ACC0005F479150B215CF237BF03C89F156E200EB +:10ACD00078334BC38760BF779CAF10F5EE041278D2 +:10ACE000A58396937C7BB05E600D35C212A7C27CB3 +:10ACF00059605F1519E8584C3D60A89792162C6F63 +:10AD0000236D5896910E2C67922E2CFDC461C2F3D0 +:10AD100057291E94A729566A0706E3BE1DE649F384 +:10AD2000B659309F5A511A302BBDF82FD5E2FE216B +:10AD30000964629E580E64CE51F923E7E7CD5D04A5 +:10AD4000EF742806ED795A670AD3A369294CAF6ED0 +:10AD500095B81E5921DEFB083C7617AD2F281DEE55 +:10AD6000857BE1F43BE68983F3AC981FDC6A5232C1 +:10AD7000C03FB90D2ECD411EBC76CF7F823E3A3EFC +:10AD8000FDEB2920AFD5EB3766409C505DC6EFE167 +:10AD9000C8C18C4A959C5F58CCE012E721C4EF43B0 +:10ADA000383CB7C19E16EC2353F8517F897CDF7C79 +:10ADB00027EA99125225C379F7717C1D21AE1784B9 +:10ADC000FCD4083E9083E654DA6F8ED7E385F375A2 +:10ADD000F3432C8F5C229330F8D3DDF057ED584DC0 +:10ADE000287FCCAF398879FFC83926B67F5D38AF68 +:10ADF0007D11CC5FBDD4422CB89FD4F22790E7B927 +:10AE0000351605EAD50B59DE955459F1FC7FF53618 +:10AE1000CF0690D3B9F7FBBC9077A5F361BEF616C9 +:10AE20002BDBC7B4D2F961DFEFD61A7E6EA4E681C0 +:10AE30000EE04FDACE07FEF42DB4BD4CCB74C2CE7B +:10AE4000E7D982EC9C936D1A3BE7A458EA8FC07B4C +:10AE500032CA4AE20DD269E76EDF21B173CB04E357 +:10AE60009EFEFCA11F3E70CD89FE31F80D83E0D718 +:10AE700020CB37AF312A70EE80C80E1C673EBF5F13 +:10AE8000DA54D388F9F2CFAAE8E2E8FC735A3CEC32 +:10AE9000BEC36126E773AA723B218F652D65F7FA61 +:10AEA0006040C83B5B4929CA7D2E61F99139FC5E3F +:10AEB000813EAEB0AE31B3794958033FE833B09329 +:10AEC0007DF9697DAD4FE80DD02F5DBDC8BB54FA4B +:10AED0001AF3E77809F20F729B67F51A630CC06AE0 +:10AEE0007E23BB9F1024EC9CE9FDCCAE443D2DA9F4 +:10AEF000EDBBD515BC138EF05C383C64831DD1D6F8 +:10AF000042D47186B5C87F97FAFCF9A642FF22F5B4 +:10AF10007ED23ACEEF8D29DC7EFD2E9809F319A75B +:10AF2000307E7FF3F704DF9FF9E0F7149F207F92D4 +:10AF300095C9673F78E977FD4BB91EE765C40F55A2 +:10AF40001A81BE5B5306233CE34BCB8DB0BF34EE7E +:10AF500087E3D2BE457AD2A72FFCF785AFC949BE99 +:10AF60002753D06FF01906E2B79718D317D4D275CC +:10AF70007FB2D082FBB3C26EE601B140AE3B4888DF +:10AF8000CA3ED80FB42B294DC42129904785B3F36D +:10AF90007C1C60F32A2B9135795487A69E5693AC7E +:10AFA000699F51AF68BE0F5A93ADF9EE097A35F536 +:10AFB000ACA6024DFBA12D3E4D7DF8B6524DFB11C6 +:10AFC00021BFA63E6A5795A6FD27744961BA9EF136 +:10AFD000A78CDE20D037E8EBC8C98FD8F1D16D013E +:10AFE0004DFF899D8BCB407F8DDD5BA319879CA195 +:10AFF0007E1BADD7D3FF31BA788DA047BC3512790F +:10B00000DC032864DFB13DAD7BCF4CBF087A7C7E8A +:10B010009529E2EF412FF2D09F813E5E9D9FA88F40 +:10B02000BBBF7E3478C44EE1AB39DA7204E4E19DF3 +:10B03000146DDEABC468C7757D72D288E7636A8021 +:10B04000435D113A7E0203C1BA0F123C37A65F7707 +:10B05000779C6EDC6EC2775AE83AE008BD25594B02 +:10B06000EF28454BEFE86C2DBD63BC5A7AC71568D5 +:10B07000E9EDF465F78ADF84522DDD057E0BE8FFEC +:10B0800000BF5F363ECDA9FABCE164D4B39F6DE347 +:10B090007AB6A71E986DCD8FE801AA524386AC08F8 +:10B0A000DE7AE8053B8B6FBAF5C236AE17B6E9F526 +:10B0B00082EF157451021E8C3BDF5834310DF45C65 +:10B0C0002AD92FEE5304BE40FD1D14729E9EEA86BF +:10B0D0007D496F6710ECC4760BFA937B8E0CC378B6 +:10B0E000E0F85072338615A7591CD46C66F00E4DEB +:10B0F00015FB93FEA1A9B4B4E4F8E19A07B9703343 +:10B10000E38B37401FD2C5BE09713CDCB9D7E911CA +:10B11000A2D3837A7F58E89989C1631857DFA8DDE5 +:10B12000E82FAECF5DC8EC89D0AF13799D2C09A272 +:10B130007F2FEC4C6341C003F7F2F2AC3E2331A801 +:10B14000E3FC4EB43B534910F5F04DA5DE1FAC2295 +:10B15000E057BD91067E558F783F82EFDB18BEBB6E +:10B16000F7813578D5EF035744F05C017816FBC0C2 +:10B170002F447991BF4ECD6371CAF863431AEDB481 +:10B180005FE2320FFA312F38BDAF40FDD40A1637D7 +:10B190004E38E933C2F9ABAC7A0F9EC37BC1E32FC3 +:10B1A00086FAA9D5EC7BFEE9009ECF1AB2867DCF48 +:10B1B0005B57FF0ADCFFAFFC36FBBEEFA38D786F59 +:10B1C0008C1A39D6BFB0A518EAA736B0EF13CF84D2 +:10B1D0001AA13EA289CF2FB5BD120B76F061F66E93 +:10B1E000438F7887C73753393D7AD093C70D53784B +:10B1F0007B11DF4CAD62745ADAE5BF05D94A472F9F +:10B20000BD5F5F420258BF9504B19C4E4258CE20AC +:10B2100061FC7E3BE9C4FA1D10DAD37A39514C50F7 +:10B220007F22359B9DD7A4A131E62F0ABC567CAF67 +:10B23000EFDC6FBE496223FBEAC23F6889F7AF00CB +:10B24000FFC155ECC777459E486579F14829F6C995 +:10B2500083995EFAFD037E3F2DB23F9E8FE73A68E9 +:10B260009387C0DFDD9CCADE3FB99514E079E25BCD +:10B270000BD87DBD5BC11FA6F8097F5F76C2793D03 +:10B280007C43A997B8399247D2E597E520C61F7944 +:10B2900046651408CB2F1F2F7F18E2E81740105384 +:10B2A0000979F6F105B707315863FE4D7FED4EF28F +:10B2B00073402FF07DD2D97E8F01F93357EB3FFDDC +:10B2C0003295F94FA2BC955415C77C89EBCA5B1720 +:10B2D000C4F3DE95AD16C2CEEF905438A7534DEAB5 +:10B2E00091AEE7470791AE42EF5472BEABE4FC74F7 +:10B2F0007E8705E970E12E2904F99DEAEDAF9D06F0 +:10B300007EEBD36FCA198AFA6636E7CF378E546F51 +:10B31000607A9DFB53DF1F69FC625444EEA99F18BD +:10B3200084F710DF5EC4F422B8DD1A7DD8879FE869 +:10B33000E67501475A50423B31507DE812E3737D78 +:10B34000982AC6F751D6A3F54CFE55AA657870F336 +:10B3500032AD566F57026B410E92498B04F50CD2F9 +:10B3600085A5421CEBDC597095D36B807ABAB5BECB +:10B37000BC8C8EEF04FD07EBDF7468BC5AFF997834 +:10B380003EDA647D08F76B65D2E2833C827CB83B91 +:10B39000EFF6E7D42F31EFF6F75405DBE9F36FD47E +:10B3A000D31A0B7270CE646FC23CB33EDFD2233F20 +:10B3B000A3CD63DCDCC2ED478BB01B8164583F1C1E +:10B3C0000FD5D88F495E05CAA9921FF5CC96A480E7 +:10B3D0003DCD0DF98EFA74686FB0761AC15E34F304 +:10B3E0007B49CDFC5E52F33011D776C563BCE8CB08 +:10B3F000467E19CB69FEFC7E768EEBF96C2B9EB3F4 +:10B40000DF9868DE08F9BCC87D50DE8FDF6F1DC392 +:10B41000DF5BD868E3789869C3F824219ACE4BFBA8 +:10B42000D98C5E0FC0F7A844A99C05E74D946150E4 +:10B430009A8D0EF75A0FE62B87A4613CD0797C06D3 +:10B44000ED7FF24599409CFEBCA3CBE6CC01785A37 +:10B4500077B552783E3DCACCF5CBBB8C410BBC4B8B +:10B46000D3717933B41FDB6142D33CF69A01F30CFC +:10B470001F9AC943703EA8C26AF4CB943F3EFC0FAA +:10B480007E5E47F6E6AACFF33C9DCEF206C7FBC828 +:10B4900027CE8A2F9C07701D4FE9FDFE70711AEBB5 +:10B4A000DFFD1E097F5FE92F6EA23957322B7E2602 +:10B4B0008E23EAA6AB4E1248508FA3B07BBCB29F3E +:10B4C000C07D4AD355177E8FA3FE2CEC3BC4390BAD +:10B4D0006488BF8A88E3B08FE215AE5600227ABC3A +:10B4E000DF3059EEEAF62307839D627E28E67B3D36 +:10B4F000B05FA3F53FC7126D5D9FDFFD613AB32BCF +:10B5000026DDFB0F3F4C677C1F8197BDFF20EEA11E +:10B51000B7CBBE68C80B2DE1F92692ECC37B95DF53 +:10B520009DECCA6D56E1E5FB1C7FEDFCBD0A076D85 +:10B530008FEF20E8D6B19ECA9187D2FBC134068F27 +:10B54000682FF4D82221474127CAF5422E471FA76A +:10B550003B71FC450EB64F13D8F43EEAD1C5C76C1B +:10B560006640E2571792D8D1B47ED63EE49D9DB492 +:10B570005C32B36023F817945FDF5C0ACAEDC168E0 +:10B58000F6CE5E51763E7BBF601AEEBB4AC134D424 +:10B59000BF03B51F9B131697A453B86DB121C541C6 +:10B5A000C7B18DFC00CFFBAD4F23089FADFB3DCD58 +:10B5B000CE616AFEDC9C5058923E01CFD386E3E117 +:10B5C000DCE5AF2C8CCE47890FFCAF950746601E9B +:10B5D000ECEFE981626827EEDB92C35DF8EE47315C +:10B5E000F82B59BDF081FD5303F0939E1F0070B0FE +:10B5F000CBFDF14510E0A6EB5912DB3B7DF13F5A44 +:10B600002FB63AF17DCF9F733A8B796F944F5D5986 +:10B610004CAF744952A855EA1F3E71FEB85BBE3864 +:10B620001F8B52E0497FDFAF38DDC0DBB1FB7E7F8F +:10B630004FF7235E3FCEF8F330138561893847DF3B +:10B64000CF7A8FFE8BEB1D281D7E98CEF867896D13 +:10B650006070BD9DC6D6F7EF86EB1601D79881C105 +:10B66000F5F1BF882F1FE97AC799D53F5C949EB743 +:10B67000003DC9B42EBC37BE247E60F0B9D2FF7540 +:10B68000F8E207069F11F4040933F8E610AF29D950 +:10B69000C88151DDBFD1DFBB11F771E650B30D7E1C +:10B6A000AECDCCF6DB6C1512CB1BFD93F76FBAE970 +:10B6B0009848C24ED087072C2CEFE8ED1AA63EA77B +:10B6C00097CAE5E6EFE9BE4100FF92615C2F946AFC +:10B6D000DB0DD2B513EF729033EC3C7873F69056D5 +:10B6E000765E992D392A5DC1F77787A74B9AF3CA01 +:10B6F00062BF7063BE9204FE83CF6A0F1BA97DD820 +:10B7000038B2261BF6477CC9BF39CDCE65533F56AC +:10B71000452701C7A586A38E21A6BEF1B0DCF8425D +:10B720007E7D2FFB2C1F250626A5ABECF8F25DBF16 +:10B73000760C51E58B46C34BC648AF2E03CB17F3AF +:10B74000733A493786F7653686F7CD097ED4FFC24E +:10B750005ED4BDF46305EC10B5FB04F61DBA626C53 +:10B76000680F1A471664ABF7851674DB6DED3B1A4C +:10B77000117BFDAFBDA311F16324124CE86D7C1960 +:10B780007F1774F1D97BA787388FFB9D8670C539E9 +:10B7900013BC7F52300BCA70830FCBDD09858FA598 +:10B7A000E3795C7EAFC17FB4E29C0ADF49551D9A04 +:10B7B0007A4AE074C539159C69359D9AEFE2FCAD73 +:10B7C000C9C5CEDFFAC65BF19E6A46FD079A7E4D7B +:10B7D00006F65ED3A0355D9ADF7D3E7BD0097E7094 +:10B7E000F0AA66DCE6B58C8FB39AC82CF5EF26D9A3 +:10B7F00047E0FCEBD016EB2CF538C3B73934F51124 +:10B80000A1644DBF51BB14CDF7D16DD9DA711D05BF +:10B810009AEFE25C78AC959DEB2924859AEFBB13F7 +:10B82000CA1F03798B2B086BD6D37D8EBC9F7339CF +:10B83000F2E426CC53C21EE7E4BC9EE7C97727F8A2 +:10B84000707C3DFF071F98CCF79758BC2DF8818C72 +:10B85000F766C3F7BEF8625FA2EF4730DE3BFCDD60 +:10B860001349DC9BCE260A7F07AFD7FB387FE07CED +:10B87000FFA1B9F7EF2F703D62D2BD8712E15BF6F1 +:10B880001ECA8745E23D25ED3B76A27D988F9360E9 +:10B8900064E7B9FA7BCFCE74355AF39E5D64BE5827 +:10B8A000FCFDC3C1D79F4FAC6BE0F319FB589FF968 +:10B8B000BAEFBDBC2BF017DFFBF7B7BBF197A29136 +:10B8C000FB777BC403E9F8DDA47B37461DDFC0EFBF +:10B8D000FDC537DDEF097EE9710DC175DCA87FEC90 +:10B8E00023DE65F0BE4C7FE32767F856B078F69FFD +:10B8F000B3BB36B0B129388E9C41C7D96866F71FF3 +:10B90000A906C3BC8B886F883EFEC966E7E516258D +:10B91000FF06FD011BE40EA85DB57D3B0AF751BE95 +:10B920002A39CC80D73BAD5D7FFA8102EFF687FFE5 +:10B93000741FE63D445C136D847DBA81C2D99D7746 +:10B94000E1EF38401E1CECF6D8A923F13ECE77215A +:10B950006E0318F8BD8AEF521852A8FE8833D8F14A +:10B96000DE549C99D5C742DE86B6FB8C5C8E5FA404 +:10B97000E2FB38BE3F12B75FBEA4C6F77709C38F9C +:10B980007E9FE4D38EBFD8C04EE66468F74B3E235B +:10B99000657F1C05F899CCCEC58D79715A92FA9DB8 +:10B9A00094EEFD2491FFE9239F1C392FA3CDD78866 +:10B9B0003CCDCD3798AFE97E774097AFE92FEF3494 +:10B9C0003929705BC675F24EE643ECF7AE1DEC5DAF +:10B9D0004E918712EBF5673039CF4EF6F9619CBC7A +:10B9E0000C5F3994C7A358BEE638CC3306F61B6EFD +:10B9F0008D83A57E4A7C7110B7C279E1B4F89E7C34 +:10BA0000017996F52A393FEEEC5D7F7C95CFFB44BA +:10BA100006C17253A22F00F37E60667F6FE3031BA3 +:10BA20002F6359BE777906D3374FF032C8CB0F78E2 +:10BA30003EF88378A2790F5AB45BC7E739D760F52F +:10BA4000AF57F979CAF72DF510EFB9B3F8FD2E1FEE +:10BA5000C3D3C72F323F7F69CB5933DCA37A38A3D6 +:10BA6000F009800BDAC13A96CA9D6678E7ADCD1D24 +:10BA70005803F258A710DF0BD05FE934CFA2F8FECD +:10BA800098FB311F9B581EE9E328560A781ECE28E2 +:10BA90007F02FA7D7C73A719E8DC5D9FD089F2F8FC +:10BAA00070861FE7FB7892AE7E3BAB137E9EC3C7CA +:10BAB000F90FED682F76536F27F5EF9CAD34F37CCB +:10BAC000A45E6FA4C768F4CAA2FDBF463EBED34AB7 +:10BAD00036426AEAABFB93CC106CD4C40687393487 +:10BAE00079907F4E5F7C9CD181EB6A2EECCA7C7C86 +:10BAF0003CE6351CAD749E15FB595E7C85585FBBDA +:10BB0000767DCF72BAF6F7DE9FDEEFE84F9EA5FD99 +:10BB1000FC5C1B2FC9815FA7C178930FFC3E01CA53 +:10BB20008D523DE6A955E7744FEFA3FC62347425AE +:10BB3000A8E558EC07BD2675E2BE5D1D69417AD7C0 +:10BB4000B5D375C5421915863C34D9AB5DD732F5EE +:10BB5000B94CDAEF6ED266F648105F9822FBC8F453 +:10BB6000FFB5A403C75BD1A6FD5D6F7FFAE3830C2D +:10BB700048CC4F88F0550DC7438DC07B480B9F784C +:10BB8000D748BC27AA18026F027F963BAD41E35805 +:10BB9000D877F22D02B8161305E9BA58674FC53B9E +:10BBA000485FB3CF463EFA5A931E7E9F19E0BCAB66 +:10BBB000E5FAEB12FCF30FAE3FF66530FAAFB09545 +:10BBC0001D45D918DF81FB4F14BE8F40BE047C4455 +:10BBD000F6E1BBE7A2FD47133A9E0ED3351963A6E3 +:10BBE00059C15E6C4E08FC05DA679CEE3C2FC181A2 +:10BBF0004DBB0FF7A7AEECBDF83A9CC3C3C73326C5 +:10BC0000C1049D5B6FA2FFACD96B74409EA066EF30 +:10BC10002BC8AF7DE1ADFB5E3BE9127091CC5EE0DD +:10BC200012F969BDFC5CC860F1F2638ACF04FD4C77 +:10BC300083DBF09DADAED5EC5EB9CB482D6E3C6C90 +:10BC40002206A55829F24E0CF1FAAC90FF9B6A61CE +:10BC5000EFD9FCC95164857BF3894E831FF4DF7AE9 +:10BC6000C71227DC9F16EF8B274A06F6F704C81287 +:10BC700027BC47B2C8C2DFC3FC8FE87016E5D79770 +:10BC8000CDECDD51577400DF49E8721A71FEC279BC +:10BC90009F8E83770D52AFD9F3E0FC5B17C7AF805F +:10BCA0007F6A71D738F6FE27A39B2B8BBFE7E4365C +:10BCB0006F74507BB69EDA1B282F65B0FCCA7A6E73 +:10BCC00077E0CC27DB670839F08D39BE3FB1CACAAF +:10BCD000F8B42ECAF7DD22384F708CFD3DB04F1DF1 +:10BCE000BE38D827D0BF5729FCDCBEDE85BE29531D +:10BCF000E2EF1BFE7BDE9B1479EA3AA74C5CAAF7C5 +:10BD000060C57AEBF8BB377ABA8BEFFB3E37F6CAE1 +:10BD1000175599EC7B5F71D01D7C5D75F00EB8CA2C +:10BD20004FAFA3760CE0AC8377C0AF13075CCA10AB +:10BD3000FD9D1A3FFF12D077827A1C177E7F96AF47 +:10BD4000F3D9A386D2D65EE05D93C9F878A45BF6FA +:10BD5000C33EC9A8307B67B3AF76E2BE775F70B5EC +:10BD60001775DE0970431EB7B7F96A33999DB8C4D9 +:10BD7000F5447B7C6735CA85C3F71CC4FF1FBF38F9 +:10BD8000DCA37EAFF08F5CCEAE4C67765BBCF799E0 +:10BD90002FD74BC057821EF725F8CF839E80777F21 +:10BDA000D97E00E36B4107E06705FD746D1C27E059 +:10BDB0005ECFF79944FCD6DFFBAA75F00EFA75F159 +:10BDC0002FB3F75B391C178F337F11226B291FF4B8 +:10BDD00030E3F7C53B97E3B9A512A31DFD9D8B2169 +:10BDE00009DFF5BB48D8398C8B2D2C4F58FDD43842 +:10BDF000FCFB6E4B02EC3CF6E264762F0CEAF74358 +:10BE0000B95E1BF788F93E230BCD6027973EA4D57A +:10BE1000DF3584EDC3C23E34C479178F33FFB57A62 +:10BE20008B769C9A9D332E007C35BA735389DCEE59 +:10BE3000E8FDFC5D99DCBFCF27F93772AFAB9AF80C +:10BE40009ECF64F94323E8DD09FCDCF4C59D594924 +:10BE5000EABFE3631F2C69F4D8252AF743A84EBA3A +:10BE6000DCE0C0F2954CDF2F619C8F8FB1F59FC84D +:10BE70000CEC6375B63E2277B1BF9750C5EC9E05BA +:10BE80009298F49F9605D6109CDB7D00DE19A3F8EE +:10BE9000B558983D15FE83D1F80D632CFD3EE9FDA4 +:10BEA000A54EBC2FF0DCADA5309EFBB9681FE0A706 +:10BEB000B9D0970BFAB6B9DC8EEF4BEC30B0F70780 +:10BEC000AD16F61E52E8D94987600F7E48DB234540 +:10BED000B045E3E80C935805F2596BF17C4DD3144F +:10BEE00082EFC689F90A3AFD7B00AECCD9762F8065 +:10BEF000D8ECF1E53A54E313EE1FD4719AFC606F6D +:10BF000016BE0BFCC9FEE1588E248C4FC4FD04986C +:10BF100013FC1E81B7CB0DB4AEBA0F3AB24D0A9BDB +:10BF200062F13D3D3CC751BB2E9CB800ECD98F65FA +:10BF30003CE7E37A39A548898DC027FA093BB70069 +:10BF4000E257D80BE2FE9BB81FB1208A04A355E745 +:10BF50007AAA38DFCFDBCFE2B125C49B09FDE65BCF +:10BF600049AC81E26C4171DB04B44BCB4D4EF04FD8 +:10BF70006FF89C0B97B71EFA096248B08F2F5A7062 +:10BF80009FAAEEE9187C7764A5A10BE78F1AC4F588 +:10BF9000AAC88F0F213E381755776038EEE359E075 +:10BFA0005DAB3CD47F56A0EB11B0BB74DDCBF64546 +:10BFB000E17B79DDEFC6384810E476E581248CB367 +:10BFC0005D59BEDC7B73E09D92CE4CD40B54DF41B7 +:10BFD000AA7CF0A007EF80BF6352974AFD1A5ABFB0 +:10BFE000FDC96DAC3EB8B3DA40EBAB9F6CBB03CE82 +:10BFF000DDD48DEC3C0FF58627F7B1EF799DD54662 +:10C000005A7FFCC95FB3EF70B08D32D6334F76DC08 +:10C0100001F75C2E39859FD189EF06D5BD34DCD080 +:10C02000ACA2FBA38398BEBC14C5DA5DF2B077C4A2 +:10C030004976A7E6EF11FC276F27FC24B14ED18F7C +:10C0400024F73E7EEE20A6AF97F1F77EA64693A694 +:10C0500028F62E7A10CE851DDE3F1CF1923888DF3F +:10C060004F7274E2F91D318E9EBFC4BC77F3BFAB33 +:10C0700074859F9F12DFA70C62FA80CEB31EE7C9BA +:10C08000F1E5C239BABA8AF45CA01BA597CCE925C0 +:10C09000B3778A7730F8E8B84EF00B1D5DE3C0EE59 +:10C0A0001CBE968EEF3A0AB8A9FF67473F8DC35F63 +:10C0B000CAF9635923C71785D98870B37D5EA02F4D +:10C0C000D8A3C739DE1E55B5C7F1D23BF15DE91BD8 +:10C0D0005DDF7C3ECE97BD3E155D7CB05F7178EF35 +:10C0E00008A4CBE3DD747F4433CEA5B5BA7E050446 +:10C0F000F7B1EAE2B3B0DF03FC1D7CF10E31F4F3DB +:10C100008C617E26F0BF78C78DF806E17E592DD769 +:10C110000FDDEFAFB5B17B1F64085D1FE0B5A26C0A +:10C120003C5F9F83AFCFA17E67BA5BEE4E7665CE54 +:10C1300056BD332D7EEFC67BF77839797C3C8DFC7C +:10C14000F6361ED0BD2F7A3CF465F39B805387CF23 +:10C150006E3CEBE013F804B9C57E395AF91170361C +:10C160007039EC21BF9E7F723EBE1FB8E29B948E59 +:10C17000708E58D1F2F38A768F01FEEE9DE8D79C3F +:10C18000DDAAFD7B46EDF704215FB1727F399E6326 +:10C190005DF1CB9FFC2248FBDFFDFCF76209C5F790 +:10C1A00045B92511DE83AA7D6A43AC0FF247723090 +:10C1B00016F4E5C510FB3BB27A7DFE5F5C2E843F32 +:10C1C00055C7EDCAA5671F9C09F8F8EFA74C0EB03C +:10C1D0009B2B7759C2168CEF97A19F45EB6759FDB2 +:10C1E00001CC5FAEDCABF58BEE7EE67B890AF253C9 +:10C1F00030CD900C65388DD0B26EA7C91B067C9DE2 +:10C20000347AE9346425E9DA08F0E9FB031CF074B8 +:10C21000C3CA36E362735CCFEFD40299C1FF58D929 +:10C22000FE20FA5F2BDBA75F003F62A5EE9C794DF5 +:10C230001FFED5C941DAFCA9C00F09B9D19F69FC1D +:10C24000F1333F7D89C279F1ADA45C7C2F73E76F38 +:10C250006325FAFD725B561CFBFBE9EB34FA47944D +:10C2600057C01FB0A8ED2AA3ABB257C25C0DD9CFFF +:10C27000CA5A533816E2ECDA1D26BCD754FB931F7A +:10C280003D0D7922F2A605DF6D58FE9323AF7F8521 +:10C29000D697EF31B9CA18D8762931429F950AF35B +:10C2A0004B043DEEFED9117C3F0C7E073F56D06516 +:10C2B000F99E836632BA27FE8ADB0EE27B9E3DE85A +:10C2C000D376F6167CEFF3C77F35035F5F3C209192 +:10C2D000244FCFFE354FFD3616DA09FA74D3AB077B +:10C2E0009DC2335FA2EBF85F96F4ACAD0080000016 +:10C2F0001F8B080000000000000BDD7C0B785455FC +:10C3000096EE3A75EA95A4122A0F4278249E3CC80C +:10C3100043435284048280561282A44DA0084103F4 +:10C32000A2160F21424222B46DA6F5BB290C60640F +:10C33000E89938F1F6B56DEC2E6864E87BD1CE68EB +:10C34000B0331AE8426D1AA601232020225360B7A9 +:10C35000A006131E8A8EF6E5AEB5F639A93A152069 +:10C36000E8FDE6FB9C095FBE9D7DF63E7BAFFDEFE1 +:10C37000B5D76BAF437DBB6C5FAF00D477FCFD05D9 +:10C38000398ACAB2B3402518CFF833817FAE26036D +:10C3900074DC827F0C05A8FBFD4B2FBF1E0750737A +:10C3A000C2E228C747352FAF8A823100678D0DF171 +:10C3B0008E6C80DA17D6C63B6DF8DCE489B773293A +:10C3C0009ED7FCEAD178251260E9BB8FC643368D33 +:10C3D000EA1C6E28A4D2331C12001EDA38671A3DFC +:10C3E0005F02EE75FCDE0BB2CB8BE5174698FE2F95 +:10C3F000F8FC2AFDDC1928E72A124001CEBBD9023D +:10C4000030044B330E8574790EC9DE17251AF711E7 +:10C4100080F1008F5A41FD59C9F52FA88EEBCD55FB +:10C420000CBC1EFCB1423CAD57FCD46F79AA5BCE6C +:10C4300001F834D139CC9ECD3878FC620CE92A8ED3 +:10C440002BBF5B3ACC6FE3BA621CAFBE970250427F +:10C45000CFA97FB7C91996A37B8FF1D3E6FFB13A75 +:10C460003FD21D2EE562190F35ED8C0774131D2B7D +:10C4700024F1CE8A8E87CB15DC8716759DF5DB2CD3 +:10C480003E0BD6576C79FA02D187F5D354BF7C4462 +:10C490009EEEC5F75778674D871C9EDF378CFA797B +:10C4A00077574954EFB4804FA383C6C5DFAF6268A6 +:10C4B0009DA605E62103DB912EA3148CE72EC9FB74 +:10C4C0006272803F963C8BFD3303FD03FC620E3CA1 +:10C4D000E7F53EC974833C7F881BF15A4AEB9A38D2 +:10C4E000701F1B4F1679DF0E1AAF4A898CFBF83686 +:10C4F000FC63024CB82A63B9113769F8C0F7B4126B +:10C5000029E47DAC3579B73E8FF4D6BE6F717810D3 +:10C51000DFDA974C2EC2E5B3ED6F1D9D978F65BB9B +:10C5200029AE9C6771DAA4F10207DA877AFC6DCC38 +:10C530001378137E35AF148032463C7F22869E3FAF +:10C54000C5787F667300F1797DA7E98C3F08AF124B +:10C550007C2EF8C133D29040A56F24F1F30A1B382A +:10C560007C38EF8A23B243219CA08FF93AF4FDFE78 +:10C57000FD6897D5FDD0B703F4995D63063F9F1A18 +:10C58000BEA178FE0FC2332280E717903D64125699 +:10C590003FFDDFCB6F71670FC4F74A93D3FBB6093A +:10C5A000E0F3266CB3049E27280AEFA7D289130D67 +:10C5B000C3B62EB504380241786A386A7CBAECFFFB +:10C5C000D4F13CFDFCABF1A9CABF013E0D5DB71E25 +:10C5D000CFD0F66202756860FF4D4F822712F7BF19 +:10C5E0006FA7ECDD8CA4F562FB3AC4BF777BB2D7B2 +:10C5F00083F8AC0D83075D4847AFBD2F2A06CBB546 +:10C60000D1A2DE37D4BC8EE487F6BC2F0CAADB7136 +:10C610009F7A5D7D51D1B6C0FAF3FF20472958F7C4 +:10C620007B617ABBED5A7CD8CC74F841B497CAB61A +:10C63000A4469CFF626B6A1EC20817AD90D41847CF +:10C64000F5D1791E5EC56AC6B3373C2A87E70F4F1E +:10C65000F2D2BEFE155C4727D15E7A9CC6E188EB1C +:10C6600022B164A8D9D71C0528B216752D2FA77E34 +:10C670008B37E8F15862DB62A6F62FE0092E973C73 +:10C680006B0AF007FE2E830DBC1F351B439E77DD22 +:10C69000CDFCB42C849FDC44C3F081FCB4573B9F99 +:10C6A00063612C9F4FC0D9506EAD54E55AA99CFDD3 +:10C6B0008F40B8EF95C14263C8D9EF4CC2757F81F6 +:10C6C0007599F6CC3394F974B9FB9C195203FCADFF +:10C6D000F15D0FF15DC6F5CF7BCF8E0FC73F8E5D4D +:10C6E0006A5FFB20E79758F6BCF67EFA1B54FFFD05 +:10C6F000B1A40F6060FF925D5F3F4072AC77978599 +:10C70000E9E9DDF5A7A4C7A9FEBAC541F4F63E697B +:10C710007112BD9E5D91DED1D49E88FB8F7CD0BC12 +:10C72000F34A8E9FE5F21ADEA7CB8A99CB8B5DDFA9 +:10C730009C92681FBB2C0A905CDC85870BDFAF7F67 +:10C740003DCC0BF4FECE2BE3DD41FCF1FFBB9E158F +:10C750006670333F4642F52BC4BFD1E0A4F5D4BF89 +:10C7600031F137AB71FEBA8EDDE645D85EF287BF98 +:10C77000E5901CEA7D65B799E4D4E726FFAF004554 +:10C78000D655A5AED584787F8EBA174600FC32F90F +:10C79000659727FB5AB8081C7A11075A17E25243CB +:10C7A000F2F37A78C4279B99DF7F78785C7880E60B +:10C7B000AFED9A007272302E92533C8FF45A255E80 +:10C7C000BF78BEEB4A0ED8483FAC66BD3FD8BA0B27 +:10C7D000927FA87CF07DD72DF96E66DD553FD8FDA0 +:10C7E00016FC7F82F4D3D081E760209FFFFE275C98 +:10C7F0007F39D2C1F4DEE4F9FFF17FB77D7F05F721 +:10C800003D6AF07D6FFBC1AE7BB07DDFA7EE7BA400 +:10C81000DD42F26CE7DF922068FD83ADFB95FFA25D +:10C82000EBEEB78764973505E9DB00BE6E7221D663 +:10C83000AA76C9DA3803DBF52DA394CDB2F035D84A +:10C84000EFE0BF71C80F93257E7F2D18A6132E72BF +:10C85000DC32B637E4B8F56C3FA0BA677A5AE22604 +:10C860006F5D7F0D3FCBA8187C16ECD7BC1AE7C7CD +:10C870007ECD430DF666859F9FA6E7161A278ACAC6 +:10C880001F7D22C6DD5F4DF69FD166D6F921B61019 +:10C890007F223CCDACF33BC2E04DBB11F721CC6114 +:10C8A00004AF44A66AD0FBD87F67B29DD7110E5E55 +:10C8B0008FDDF6BD7061BFD0A8FA63E1297A5CFA1A +:10C8C0007113CD83E2648C5BDF4DEB3602FA856237 +:10C8D0001DEC4F82EA471AF99581B8697E6310BE54 +:10C8E000EC5F068DC3EBD570EFC753C5FBBBE21AF7 +:10C8F000BA3F83E1EC279C0B06E21C2827DBD95EBC +:10C900000CC3FE0856DB4E789EEC5D5385D9148728 +:10C91000EBAC70490E82A102FA8ECCC63A54CB8E93 +:10C920001779DDAEEEC5583F90DF9640F18939E8C2 +:10C93000B8411E973E854A7B4231D167921CDD4E3D +:10C94000A40FE69A1C2F6211DB05CF2BB9F4BE634E +:10C95000B711DF9F73CFF03C7AFF20741747909C8C +:10C960009F2F713F48C834D2FE5582E07BFCA9DA84 +:10C970008B38CF56F7F3B694185E5735B8E68C432C +:10C98000026734BB1A5CB8BE99497D69D141F18810 +:10C99000DC94645EE71CA3CBF44836D3B70662068A +:10C9A0009EFB3934680CD1ED3235304E53ED1F23E8 +:10C9B000EE92F356F96AC48DFC5B237CACED8F1CC0 +:10C9C000C035D7DC777215AEC77E50766C56080737 +:10C9D000607B1DBEC5F7701D15544F0D8C13DBF821 +:10C9E000967B6A2CC03C958F61F1A6D258C21F0776 +:10C9F00024D3106A7797C6E607D57F7C5ADFFE847A +:10CA0000344D575F93ACAF6F289A16FCFEF5D653A2 +:10CA1000919F6C726387CA6725A7F71A7E94465F59 +:10CA2000DB6A984B78439C53994503C6E5F3FAE6D5 +:10CA3000A588B8CD409C042E736568A0F31C5B0CE0 +:10CA40000B5C41E32F4E117194C5F43EC52588F966 +:10CA500026129B3815F23FAE37DEFB3234D27855C2 +:10CA60005D10437CA5B5AF54E97C7F88BB94E9C4D5 +:10CA700063407AE1C0DC8C4D74DEAFB7FE03731700 +:10CA800024A660FF62D7BB4692DB158B679A481FCE +:10CA90001D9D75DA40F1AFDC1441F7BCAB4AE2AC46 +:10CAA00020FA5BD4751FFA99F04F43C75DADB69F6E +:10CAB00030400DB59F887227CED5BD6FE5F6961430 +:10CAC00085CBA391629C5C1424329EA758755EC8E6 +:10CAD00046BCC704F06E1904EF7E7E632108F04067 +:10CAE000BED8D779579D899541F3FF5CC5EBC85AED +:10CAF000A16F43C77B4B9D47C37B60BB787FF51419 +:10CB00000BCBE9A315E025BD1E5B7D17CB29F4B740 +:10CB100019FFA3D3252FFB9DE0B491FFBC543DDF4B +:10CB20004741C4632ADF93393EF48EC99D48EB5DCB +:10CB30005ABD94E315B051F8D356FC773505DD5B4B +:10CB40009F51E75F5742509DE6257F3A8A4AFDF3A1 +:10CB5000507FF9E5145B209E95C174321D178FC874 +:10CB60000ECB0DCE893D4106E3B8805F9C5B64E04F +:10CB700078E83B53AE54D23A5796A51A484F1D9ABF +:10CB80007E2966617600DFC0796F76A78D0BD4DBD6 +:10CB9000CA2CD55EA1B7D85F3FA2FAEB875C876D40 +:10CBA00045D901FC0FB82EC5707C563B1F70E3F3CE +:10CBB000A1F5BBBEFCD2E415CA3AECBABCDCE27DFE +:10CBC00012495DEE707CB89CE447B9C58E3DA03833 +:10CBD0007F4122D95FA5F2E4171EC5F51DDA6EA1CB +:10CBE000F0137CF68BC3A3147CEEC87F6C1A9D9364 +:10CBF000B1E0584B71D92592E38FC4A25020B1BE49 +:10CC0000D0E4DFD28D0B0ED23CB3B74B12D9C33D6B +:10CC1000EA7997B74BCC1FB1CF49DEBBA4001F7D8B +:10CC2000B649F0CB92ED828F4ACAFBE6D3F3B6ED5C +:10CC30001625988F96A97A61D976C12FCB2B5E39AC +:10CC40009846FA26FF198EB77C45E70AE7A9295BC3 +:10CC500034DE87CF6797BF6B24BB103CCEEEECA0D1 +:10CC6000F791EFFE6122CDFB92C9F1A412186FF586 +:10CC700094A5FCFCE84BC8170AC5C13DD362892EB8 +:10CC8000E2EF1CE2B3D63DC393E99CB9C7FB9269BE +:10CC9000DFC745D3F8CBB785C4CDD478EB12FCB54C +:10CCA000C5107DFAF69A2D2171A390B84F28FF9AEE +:10CCB00053F5FCAB8D7FBD7DD7F8B5DFDE52F7A510 +:10CCC000B350C4A973639CEE60B95C902AF6472BFD +:10CCD0003BBBBE3CB19CF474BEC5319AD087E8A979 +:10CCE000769C6A6E4D513EA9BF62EBD8B7A97E5FB4 +:10CCF00003D611A75B524DFCDEFDF6D3A5D1587FBC +:10CD00003041DA43E50225795A0C9679A942DE2DA5 +:10CD1000CA2CDA837040B96396D9CDF1B90D1139B7 +:10CD2000740E711EE23394831EC335F476111AF922 +:10CD3000C6203C4AAC61600CC2AFD41EADABDF95DF +:10CD4000305CD7BF4C49D6B5DF9D99A56B2F778C4A +:10CD5000D5B537A40ABBF560FE9579AB709D07BBCE +:10CD6000CC7682F020E11217C005E97D96E83D38C7 +:10CD7000F1D8A887703D93528DFCDE248AA9917E5C +:10CD8000338AF8E1C3FD7C07CCEF6DB324EF93B891 +:10CD9000CF0F972F61BE2B954FCE273BA2CD2BF8FF +:10CDA000AEA6E031E6E73640BB0AFB57FD426279AA +:10CDB000B974B289EDC94A700DF14903F968F59467 +:10CDC000B3E53CCE44D94E782ED9A86FAF2C9FC680 +:10CDD0007C5C15222F2B55391A2A5F43F9F0770511 +:10CDE0005746901CA84ED5DF0FFC4E1272DD8372A1 +:10CDF0009DECBAEBC9A17E391AC27F0DA942EE693A +:10CE000065A99C3D84E450AE59DF4F2BDF47FFCE30 +:10CE1000881BF0419395CB0F9BEC5CFE7B530297F4 +:10CE2000A79B142E3F6ACAE4B22155C8E5D846DC58 +:10CE3000E7D820F95CEE32DFE81C85CACF837E0399 +:10CE40009F9F8377AC8D4AB6A97E09BEF7446A34AA +:10CE5000EFF7B9C28F6C5276808F3BFD676C147709 +:10CE60009F0B5E13E9E5FBC067227BF07EF073FD4C +:10CE7000413CDA542E0085CB45E0E478EC43E007F2 +:10CE800049267B19385E68DEF2E6331E9C0FB7CE6A +:10CE9000C9F6029A04C1E7A44BC5CD96EA5C9F5A35 +:10CEA00040F8769F9C4D72F60E13905D4A9C48FAAE +:10CEB0002656F5A30E144C085B780DFD7F2065E126 +:10CEC000B3F47E001FB799FAE1FE56ABFE16C733E6 +:10CED0004CD1999BD72707FAFD52C5372AC5F97C53 +:10CEE0002A96E634C1FFB9310EB667347A518348C9 +:10CEF00095A8C73A52851DA8BD9F6B769BE91E6019 +:10CF000089A3C14CFE4BF1C6B161FE6BECFB8114F1 +:10CF1000F7B6D4A17AFA841C11FC72BDFDD3F6FDDC +:10CF2000BBF28DC61F13529C3B0817A301DC848300 +:10CF300031A63A8170017B15EF7F57AA7443FB2C11 +:10CF4000A7F0A30DE3484F961B1CA3713F723A1D37 +:10CF500061242F0EA97E584EF999FD69F9D44FB678 +:10CF60004BD8DE367D4218E9FF369B27897039277A +:10CF700039C27E4A72E745D9CE7E1308FDB8B43C6B +:10CF80003E85F661E69402961367CB93F3483E7FA5 +:10CF9000ADE2FB0975A573E912F787E7CA9E4AA2BD +:10CFA000710E140CCBA379669659F8DC9E3D92CA9B +:10CFB000FEDFD1FCA5735641406EDD4B7F63BFB3EE +:10CFC0005B641EE7ECF4648E4BDF4B720BE545D5DA +:10CFD0004699E59166F71D2807D6E3ABA71CB37108 +:10CFE000FF3213907D78CF7CBD1C9AEDD2D763378A +:10CFF0000AFDFA7DEDBB4F43E451A87DF7894DC48E +:10D00000172AD12F7523DE25D3934D1F937FD22866 +:10D01000315F6872A9B25CF8AB95D3178CB3E2BAF2 +:10D02000A3BC1324BA6F2A29574AC96FAD982E8D15 +:10D030000FB6172BA63FC2F19E8A8D8F98E95E3DF1 +:10D040002AC5F50DF1A7E9C51285EEA3DB703E6296 +:10D05000FE5CEFB113B4BE99152BF70C27F9DF81F5 +:10D060000781F6D99B1149FB7C68CBA538F63BFAC2 +:10D07000CF41AB99ECABE22D1746D0390895034070 +:10D08000CA97FC4C7025DCD02E54FB0D26D73CC52E +:10D090009049FE708F043E09FD909EA2F862A2B7EF +:10D0A00027D16C14657AB1D05393DFB211AE85C02D +:10D0B0007AAA6778A155B44FE3FBC4197EDB69DA1D +:10D0C000AF297DA0D3AF33FC060FF1C99D5F597521 +:10D0D0007AB6D66FE0FBC722D0EBEF77C2A2720818 +:10D0E000B712AB5E8F97DAF57A7C4644D466EA775E +:10D0F00057825E9FF7EC9BCF71893265ACEEF94C9D +:10D100006B9297E8BC3B73A26E9C5920EE9F6762BE +:10D11000793B96158EA201ED740F3DB3B04C375E8E +:10D12000A71932292ED327853B36235FCEB2BAF416 +:10D13000EB03984A785E0913F78BB5343E8E53DBC8 +:10D14000F825F3DDA4C66FD9BF18EB6BD7BD376EDA +:10D150006FA76E1E47B7BD84DCEFBCE38EB7A85C3B +:10D16000136DF5C8385EBEDF5582CB84F1E71ADE59 +:10D17000A2B2D12AE6792C1C711942F38AFBCCC7E2 +:10D1800064584B71D22B06770DE997F5066FFB02B9 +:10D19000A4F788641F4AA56270CF4E437951D8D74F +:10D1A0005A328468FCAAFD2D2A9BB7C91ECB10DA1F +:10D1B000F7F28803147F6D97D81FA8B519D8BFFC64 +:10D1C0002CA63D6755909CFEEC27E23E17129C0969 +:10D1D0000BE2289E97C6711F5749A453469CEA5EEE +:10D1E000CBE0B85E7646D1A234E43B3972AA55E86A +:10D1F0005F635FBFFD9B42EDCE3712299E5522E44F +:10D200000EDC6562F9156E50E2C57DA5D043E6BB24 +:10D210004C9B48FE9D4E13F237FCCFA0503E477802 +:10D22000AC5B1E43EFE186925FD2AF070AC149FAB9 +:10D23000FBF13435EF84027ED86FD6D023DB295E34 +:10D24000703A2D929F8F2F74EC36511CCC6EB49394 +:10D250009D1775DC651F837476C4FDC543EBE83804 +:10D26000DE3D85CEEFE93485FB0F2B77AE2AA2F9A0 +:10D270005A4C40F2BDC33E3582FA83D721EE652970 +:10D280002E41F264BE728CEC33D88BFD681546E7F4 +:10D29000729A7FFDAD27159A3FEA3830AE00FE0442 +:10D2A0005724E9217C8D0037FA13EE8F1C787E3FDE +:10D2B000DA501046F6589BD31146F93D6DAD88D72C +:10D2C000ED8C8F87E4F93F48426E80A7E2D0546C22 +:10D2D000DF6600ADDD0788F77AB3DA8E3F619964C7 +:10D2E0006FAAED9E8ACAA9368E8368ED1E28445C1B +:10D2F00065AD7D06B7F78FAF8EA78DFFC2968A43C7 +:10D300002D36C2C7AEE26C1F4AEB816FAF4A8487ED +:10D31000967F132E3BB2683F630D8EE154CE8E7123 +:10D320006F21BEB01B9474B287628738874D9158C5 +:10D33000BF6F7D8EE4CE5413CBF3FACC0D7C4FD867 +:10D3400061767CB2258EF207F0FCE1F30EA3332266 +:10D350000FE7ADB77FC9E74AB30BDA0CFD743A01AA +:10D36000E76E0BD0EDA473161BC0C59966A5F3112B +:10D37000C0C98AF5856AFD58DA7D956B687F165BB2 +:10D38000795F57A967767D0CB4CAC87797326FBFAB +:10D3900087F4F2A50DA84C708E0E6A24BD9D102E48 +:10D3A000F2A1E25C9914473BD82DECC876DC5F27EC +:10D3B0002DC8837C323E30DEA5C9676D63689C4210 +:10D3C00061352DF29B41213961049F05E54947E113 +:10D3D000C2E6D438E2432586703C4EE3A05F38397C +:10D3E000C3F96F691CEFD5E29A3FFD4E71CD7A55B6 +:10D3F0003ED517AECEE6FC90A912EBF749E982CFF5 +:10D40000EB1B2F33AE60743B683F6B1B2FB11CD3FB +:10D41000EA3DABC5F96F35C183B3B0ACFDBFF28354 +:10D42000143F43B9D74272B016DE34AF0CB2D3A06A +:10D43000FD42BFDCCB350C6EC72D7497F37CB32453 +:10D44000FB1C8AF5A56D6DAF34A27E9B15669F23EC +:10D4500061FDC2E88D9546B4C76625DAE718B06E5F +:10D460007BF16B511F6EFF9F0607CA95F498D9DCBC +:10D470003FD9FE1ED5478F56EB91627F2FA6D96606 +:10D480007BD89EB4F1BDC1C5E9611CDFBA1E3DB3B6 +:10D490001BDFD0F91303DA6549C8C36A2167CE9749 +:10D4A0000D67790569CEB106928795A3F2F85E62A1 +:10D4B000B4905FF1887D21FEFE11CFA515F1AA4B36 +:10D4C000EF7E208ACE45C7D317A4289A6F17CF576F +:10D4D0004BD951F8BC24CB1D3E9AE29192FF149D8A +:10D4E00097BA8AC3E9E437BE9AAE9E3B7B5F1AEDDA +:10D4F000CB5C70B3BF31578D33189039C98EAAB247 +:10D50000A599A87F5575887D063EF6472ACB43F33B +:10D510008182E21432E533743F60463A4C2A0E753C +:10D5200031C9A3E93DA42B51D0857462DD14D71D08 +:10D530002FECF4ED8A44E738D3CAF7C0E1B71ECF29 +:10D54000715F63BFDB9B501FE2117AA5A993CBD615 +:10D55000741072D6E8373B709C15AA9C2C956B59B9 +:10D56000CE5FEC4C8660BB6C828AE7904E1107451B +:10D570005C1D846B5C2AF80CB8AF71BFDFB7BD5976 +:10D58000A27E42DE6BFB786704B487C504F0C67DDB +:10D5900070D03E68B8239EE3C83E7CFBDBFD9369F8 +:10D5A0001F5F25BA504F75848B73DEB723CC4B7643 +:10D5B00040289D15A3853D1E4AAF5B7D3E189D6E9C +:10D5C000A2B360703ADDA47C0AAE4FAF765E359CA4 +:10D5D000B4F30AAA9C9A5B9DBC79BD14A857962700 +:10D5E000B39FA7D139907FB628D7E29FC1F8669242 +:10D5F000C69FAADCD070D4E8D3E44007DD0BEAE88C +:10D600008BDEA4A72F9ACF5354E3BFF27B72A49171 +:10D610009F5765266CA2B86354F719BA6C832746E6 +:10D62000A7F0F851EDE8116553FF2EEE3F603D2164 +:10D63000EBD0E461E87A34F938705DAA9C54E5A631 +:10D64000262FA7A000603947B258223BD8ADB3EFD0 +:10D650008AE0619DFD57627D2424BEF577BAFE778E +:10D6600025ACD6B597294FEBDAEFCE7C4657AF7095 +:10D67000FC42D77F66E1265DFB2CEB365D7DB2BFB9 +:10D680009BEDCA834DD3D90FBEE35C1FDB973ED51C +:10D690005F7E53F597DF267F19CFE71EF297B1DC47 +:10D6A000DBE4E0E7FFD654C8E5FE262797DD4D2EE4 +:10D6B0002E43CFF58C57EF35927D5AD8DDCAF6ED63 +:10D6C000A3A9EE7D2437661ABCCD91B81F134EB6C0 +:10D6D000CB9C1FE976E8F4EDDADD13DF213B2A76F7 +:10D6E000BF0C61CAF5E56FD457323883F83DAADC28 +:10D6F0000F94171D4571141C778611D658707F67DB +:10D70000D98CBE61B85F07470BBB90C435DD73563B +:10D710005B81EF47ABAB254733F0730FDD1F62E949 +:10D7200073E731292E6BBC7AAF883F162378683CAB +:10D73000D929C31DA4B9E3628DA4D7ABA811E99C74 +:10D740008373DF82EFCDB3B5731C68EEDE27EB1673 +:10D75000E07358E32960FB48D3DB9E1386ABB7DD4B +:10D76000BCDE3E385A9C9FB59288177AA28D1C87E2 +:10D770000BD5A75BD4F5CD68F6C851E4B7BC0B7CDC +:10D780006F3953D5AB88478B2526700E35FE9F65C4 +:10D7900037FA32A248EF3C5342EFD51E51188F5052 +:10D7A0003B41F36B34BE4779DF4CFD2F1E07B6DBE0 +:10D7B00026F478FD6DCA403F6330FF47A3BFABA995 +:10D7C0009AF96657939B4B5F538DCA8F0D5C7FBB55 +:10D7D000A991EB7B9A3C5CEE6D6A51F9B195DBF750 +:10D7E000373DC7F5834D5E952FB7F1F349AAFCB9D4 +:10D7F0003C5A954BD622BE6F01A32803FCA078E0CB +:10D8000006FC509B20E473285F5C8F0FD04150E8EA +:10D810009E641EEA439263F781670CE597542F6D6F +:10D820003571FEE9F7E4872ADBB3268A3F84CAB75D +:10D830007B4061BE1BA8EFDD8E9BD1F79A7C93D114 +:10D840002F233D65911F7150DCE0BBDB17EE06A274 +:10D8500063F0F9C4BE9812D0B78DA1B8E3D1AD3E44 +:10D8600024E17C8173AFF31AF7BBA17EE41B89A08E +:10D87000EAADEF461F7ADC26DAF7C1E88BCF7016E7 +:10D88000A61704F459389F792C47D838DFD96CF1A2 +:10D890007A9F247FEF8D3091EF607326CD0A8AD76F +:10D8A00014A58BFB967F8A7516A5B37DD0B3F5972B +:10D8B000745E3A2238BE12EA2F5DEE2E19166C2FD6 +:10D8C00085CAD37AFB253E7703F4BC64603D5F6F65 +:10D8D0000037E533E559C02A21ADC7D28B5D62DE42 +:10D8E000C99CBF71D16EBCE17D687DE3051EFFBAA6 +:10D8F000ED06913755BFB3C0BE30282ED09A2EEC1E +:10D900000772043FB606F0BB597E9ED257AD930F07 +:10D910003F38FDE9FCAD3E2E856A87F09DE92EE398 +:10D920007D98471ED1778AFF3BDD5446A5B8D7A521 +:10D93000F3FD9DDF46EDE75FFB268DECE8F3774CCA +:10D94000B417C1407978B3F24F937B9A1C5C675649 +:10D95000BF7FE98FDBC48DA5B88DB61FCFA5EBF3D4 +:10D960000F42CF59EF58DC30A4B77787C8CBEB8D87 +:10D970000CF74AB8E5CEAE3F1DA73C28F0E9F5B755 +:10D98000D36AE37CD771F31DACC701F53899AEB803 +:10D99000D29EE0714B8DC20F02A323F3FEA073D37E +:10D9A000ACE6576CC392BE4B1A32DF6F5482CF8500 +:10D9B0004A6FD1DCA940FA6F865DF517AC10477647 +:10D9C000337C7B297B0EEADB19641F203F6F8F7548 +:10D9D000FE0BE1EC796A7234C79129667A4B40EE0E +:10D9E00094CAE5090BE87CC419F95C6AF2A4CAF68A +:10D9F00017B36CA0B8B583F735141700FF9E367CBB +:10DA0000CFD929D9D7C3C0F3EAECDC7D9CECF7C1B0 +:10DA1000ECD0C1E450A89CD0F00DC5737BACEB1DDD +:10DA20003AEF9A1C095DAF160FAE033FF3E3FA51CC +:10DA30009B5DB4AE472545DC2343AB7324EEEB8AF4 +:10DA4000CE4780DECF93457E6B5F99F07B42CFF16E +:10DA500047EA3ED4AA72212F16AC09B49F6E6039F2 +:10DA6000D95B96C5FEC67FA4C7A8796A7DE99541B2 +:10DA7000F9939AFDD2A37E3732BB33CC43F1656D67 +:10DA8000FCCFD3A385FF66BDAC93772B1ABFD6C955 +:10DA9000A915D922EE97D7AC8CA3FCB055EABDDD11 +:10DAA0009524D705DAF765EDCFBCB65FA1F936FE50 +:10DAB000E404EDF35E9B90BFFB873236BD923EDF00 +:10DAC00067B6F582AAE737E9CEC5E18A63ECCFCE27 +:10DAD000EE88F010FE1A5D9A1FACC9E5BA5D9F9CF6 +:10DAE00022FDDC235D38F538E1B7C3C276582DD16D +:10DAF0001DCBFEB33903F7E995BD06C6B7AECCB270 +:10DB000099FC19302A632A2303B8F47E72ED3C2471 +:10DB10008D3E6D3E8DAE1E49C423B47EB11942FFC9 +:10DB2000B8D245FEE06153F7E7B42FE75FBB4DA2E3 +:10DB30000062FFF3E8EE9C685B605FFEB3ECA179E6 +:10DB400020ECE2E386D58F9A11AF9EF63613C78795 +:10DB5000BFA71DA4D1DB1C095E1A0F9CA0D8E33916 +:10DB60003427F20D7191C678F2CF445DB2EDF99A87 +:10DB7000E4D514B5646711DB27AB64AF931A389F03 +:10DB8000CF0AAD5CAE971C0A95774A2EA34842F5A2 +:10DB9000325ED3A061143DBFC3EA48301AE8BE50DC +:10DBA000C407E744B7CCE06D8C8775746F61347B34 +:10DBB0004CF124FF2A87A8F99602272DFFB1067F92 +:10DBC00027232EC668508CD8BF06ED7313E25BB5D1 +:10DBD00074EECFB2A9BF7D32E3A8E54FD27B84E3D8 +:10DBE0003DFB1B2AC8AEB977F73F1D74E2F34F62C5 +:10DBF0005AC7133D9F766FCE7909FB2C3BDCC5DFFE +:10DC000031D5FABAA711BC2BA08FF58E86FF7CE820 +:10DC1000E6F201E8E3D20D766E5F080E2E17838BD5 +:10DC2000CB25D0C0E5FB153FAFDB447271668BE9B5 +:10DC3000320470581EBD663CCD632F7E6E34CB1B04 +:10DC4000F59E49BB0F09BDAF98156DE37B0DEDDE69 +:10DC50004231B8976688FB29718F792AD2DBCCF7DD +:10DC600018CEFB09EFDE6833D07792BD43853CF1D7 +:10DC70009C078EB3F69AD4FE1714AEE797E489FC9E +:10DC8000D42B0ADB6193D4FB444DDEE6DF26F28E13 +:10DC9000E1AAE83FA54F9F77964FC1497AFF1B85C0 +:10DCA000EF21EEFCCA784379FC4586907BF9B1867A +:10DCB00086E0F8457342BC88FFA9758B62E778C699 +:10DCC000AFD473D81B65603EC19F2AEB78A253EC9A +:10DCD000EBA4AE3FABFC888E657CE03BBF4946DFE2 +:10DCE0006E7ABE4295F7288D595F4D26FE247EEC54 +:10DCF000D4CB7F48B88DF3006E5749D0FC5509C787 +:10DD00009A1F43FCDC2D33DF421F974EB0B35E2FCA +:10DD100006079753C1C525F23797D3A195CB1F416D +:10DD20003B97E5D0CD25DCEA70D045B4C1EA93C578 +:10DD3000F97DC2CEDF3F962D35503C3AFF5E911FF4 +:10DD40003A182E3E15C7C171C1833CFE6670710B37 +:10DD5000FA42711995C9E748C345C3230CBC09842D +:10DD6000E314F0CB54DE09C2CE29C2E3C8714E7071 +:10DD700072BD74503C7CCD746F5EE8771B399E1188 +:10DD80008A4789E0935079B64F5DFF43446B414029 +:10DD9000FEF464285CD7E4109E37BE070E954FDA78 +:10DDA000F3FC88E24B0A8AF20F333E9D4DF1F0FC02 +:10DDB00071C5AB28C5E9AFFF7C41D42715BF9A8256 +:10DDC000F5B31997381E9E9F5B3CCEE400582D5D3D +:10DDD0009E3D15DB9F322316ECEF25AFA678A2E51A +:10DDE0007160796FB588E772AAF007B19F272C2F71 +:10DDF000409FC522ECB7ECF9CA2A09717E3AC97D69 +:10DE00009ACEB3361E280E96AF2355BBA527C3AEB8 +:10DE1000E605278F23BAFF9AE4EA213DD81B29EEB5 +:10DE20003B7B28F76DE8F5CBB84CE7A7D43FF479F6 +:10DE3000EF5FCDFC7DFADF32DC7D347F7DC4B7E956 +:10DE4000A47F3F1F7B789D3F39C01F1282341FE99A +:10DE50006D76AAFA42CB9B27FB88ECDB87CC9CCC67 +:10DE600092EF723793889930BF8FE51B8EFB0DCDF3 +:10DE70005B6FF6278DC5F79E9D7DCA2CF67994D8E9 +:10DE800067552EECDCB5EFF191A2EA82203EAEDFC1 +:10DE9000F5F5971F20AEF5176D0EEADE1B25D63B74 +:10DEA000A9EB17AB480EA2E3A83BB71ADFDFDE6988 +:10DEB000E1EF872675653D44FDA61C3E994AEBBA05 +:10DEC000F3A4BF99C249BD3B8F8D147468F74157C5 +:10DED000A4EFA33FCFAA72FAAC55C8652DDF63E566 +:10DEE0004E89EF4756AAF95F2B29AF17DFAADB6BE4 +:10DEF000E27B7D2D6FB3465DE779F55EA166E32297 +:10DF000091EFEB1576AD82FFE81C4E386E0C89BFA1 +:10DF10008AEF65EBDA43E2AF1B4BAEF9FD75685E45 +:10DF2000C8984C352F241112793D6ADEE4F5D6AF3E +:10DF3000E5812C01677E26FBAB2E99F8B0C028E264 +:10DF400085A5F2130E3BAD33313B4FE4A58A3CDE91 +:10DF5000A561627D3635FF77E50B32D8181F33E7B0 +:10DF6000CB6C421E2924BB77DBAF99DF97AA6BD11C +:10DF7000CECDC32D12DFEFC1C658E6B5DCAD1627F6 +:10DF8000AD2F77EB3027E1946B16F6EFA6AD961622 +:10DF9000AA37AF0DF7903CFC5D74DF08FA5EBA3922 +:10DFA0004CE467919AA27BB6DC94BE14D2B38B3357 +:10DFB000855E6956F5AD76CFA8DD4737AB7A7665D5 +:10DFC00064FA308A93F7F7B38FD07D4FDCACDABFB9 +:10DFD000F94427D9737D23C43861621DBBDFBD2797 +:10DFE00082ECD11D465704E56F5D3C9232046E70A1 +:10DFF0008F57E0C3CDB8411C21FFC806FE4E27FF56 +:10E0000039A3C045E5C3D79B9CF0912980BBB68E50 +:10E0100052797B8999EEEB1603E73DAEDCF79B6600 +:10E020002BD6573ECD5F0420A9994348AF14EC95F9 +:10E03000F9FB99DBF78ABCA5D7D53C4A4B82019402 +:10E0400020FE0A53C24109E2A388CC185D3DD231BB +:10E0500042D77F48618AAEBD43CD5FD1F28E35FB9A +:10E0600032DA79ABEEBD29DD228F2A767A9EEE393F +:10E070005C16E7A010FF093FB241A6F336C90FF0C6 +:10E080007C327DFFD30A5158DEDEA33F2FB87F9C40 +:10E090000F6351F3A6C28E1875DF995B6CD338BF3E +:10E0A000DA32483ED5B399EAFF57300A46E9BE2F27 +:10E0B000EFC75B9F5F351ED2FED7E47CC2D7045EFC +:10E0C0006CBF486F50FB28F07A82F0D6CED7EBD0E9 +:10E0D000CEFA74A84B8FFBB06A3DEEC3DD7ADC4705 +:10E0E000D6E8714F6CD0E37E4BA31EDF648F1ED742 +:10E0F000D496DB75FD47B716EBEA19CFFD48D73F3D +:10E10000CB5BA9ABDFB66D9EAEFF98F685BAF6DCA9 +:10E11000CE6537C507637D2B75FD343E18B7F7A76D +:10E12000D7E4030FFE63F9A87E3F5188B8531C74EF +:10E13000B0FD2FF4B702C9BBEFCB07EF85F2C14D9D +:10E14000CACF3F92DE45B93363AFC8FB9A61B37261 +:10E150005E18F24D26D90F1721DC417A43D3FF2EEA +:10E1600055CECCB419596FCC88107248CBC70AF57C +:10E17000DB34FF6166A1141287D3E7850F76AF50B9 +:10E18000D0EDD3D5C71E0199F466C15F94E6489CD3 +:10E1900067DC49714F11EA27E6FBDDCDA4DE26F4EA +:10E1A000A09A56C86FDCFB35C571A6A8A576AF113D +:10E1B000EADF40F616FE8ED06CD7D621E46FA89F1A +:10E1C000F9982CEC8F2B0637DB9F16927F72C01EBE +:10E1D0006D2E12FEA6E6671E4C744764515CDED0BD +:10E1E000170B6C77FBC5BD19B403DD2BF512706CF2 +:10E1F0003CFC7D15DD7FF54603E7BFFC566AA9A20E +:10E20000FF870065A3DD3F5E8465E82725CB3D944D +:10E21000C63B2309FF6F41E147BF7A15E91D96050B +:10E22000E21E7E7E3BC77FB6C73A13B2860E9EB70C +:10E23000A1C5BBB4F85747938FCB886C07FB07A1E8 +:10E240007128BF41C4153C3F15DF957C46444D0CF9 +:10E25000D81D175B4C6C7780EA2FDFAFEE8B16571B +:10E2600098AFAEE30C0E5183FAF5FECE3FF1BE2C13 +:10E270004FE851E3110D0E4A8D5C34CAC6F917E020 +:10E280001CE71071272DCE3052FE2E76D260EB5F48 +:10E290009EF0892E3E85C0DD545E6660DD62FC33F3 +:10E2A00065C22E38533692F31B03E37FCEF1AEFBEB +:10E2B0001BDED5F1FB838DEFEBF87B81E7B4AEDDA0 +:10E2C0001FD767A2789E7F7AD654B22B70DFAB68D7 +:10E2D0003FFDAF0D9F761FE2797E8765FCCDE45749 +:10E2E0002F4FF88CE73FD9D4CDFBAAADEF54D371B3 +:10E2F000AEFB9BFC5C86AE4F8B0768A5F94D60F9C1 +:10E30000A0E5535E2F4EA09D9BDE2C71AFFF98ECD5 +:10E310003CA5E605B2FF7865A589FDC7936A1EEBAB +:10E3200049358FF5A49AC77A52CD5B3DA9E6ADF683 +:10E330009A6C2D1447382989B8FD7B23BEDC6AA668 +:10E340007869A2FB2759E47F14F77D6920F917E764 +:10E350004FA2F3F474BCFBEFE8B984EEC070CED0EA +:10E36000F2A4939D78CEE0C9A13CA48EAC1355E4F1 +:10E37000579D0BF77C4E16C8F6DFBE57457ED53944 +:10E38000B338875DBFFD4315E519BD878352FEA8ED +:10E39000E77549E487D9FC66BA1F6A1FEA5E4BE35A +:10E3A000531E157F0F88CF893FB53864AF49D87B9E +:10E3B000BDAADDB7214BD89D3FCB12F72C5AB955DA +:10E3C0003DAF5D54F23DCF8674FE8EBEDCC279D97E +:10E3D00038BF93F24C3CBB2C1CD708CD3FCAFB8303 +:10E3E000C52705C5317F9D952CFCAC54F13D7CDCE7 +:10E3F000DD611C8F017F7712E550F5D37B44E46724 +:10E400009EA7F82E9DD3C5A0CB7FFA7596B04BEB97 +:10E41000F69D3945FE534996FB375941F9427551EE +:10E42000BB39AEB4234BE1F9904E8EF75B64584391 +:10E43000FB5367F5F3F73183C5A7AFB7EEF30F755D +:10E44000FF3C3B99F29794D1F4BE362FD2B1837042 +:10E45000D7D6ABD11118E7C6E7408BBB6AF5C31519 +:10E460004FA5D3F9C9A33CB06BE8CD3F6709FFFEC8 +:10E47000A40942F2C454DC40CB13CB6639F571D603 +:10E48000B5F3C48E134E485F1EEA5D8AAF5BC2517E +:10E4900057E405C6C5FE6EBA2799DF90FCEA7EC434 +:10E4A00061D99631FC9D80468736EE9524E7A1AC74 +:10E4B000A07836F29BF87F39CAC2983FEA76BD7FD2 +:10E4C0008AFEDF8487FF79CC38C2577B2F145FC464 +:10E4D0003591F03C64F099D53CB57FCFE278F621D8 +:10E4E000CE03D3F0FDBE78F62676B31FD9BBE9EB99 +:10E4F00024BAF7A953EF99EAB47B8F0E7D7C07F11C +:10E50000F050BC61E07D07F0BD8945D51F16EDFDDB +:10E510005146DDFB6BA35C5F122EAFA97202FB7B41 +:10E520000D6A3C99F44D7F3C59D54705AA28928E37 +:10E530008B38720195A4E7B387B07ECAD7E643BA99 +:10E5400068FFD6491E8ED7F4EB7735AE2C2F5AC50F +:10E5500071B84268E5D22227B35EB47C20E22FFD79 +:10E5600071A4A7F7E8FCFAFF075995384950500005 +:10E5700000000000000000001F8B080000000000E9 +:10E58000000BFB51CFC0F003099773A3F2EFA0F18A +:10E5900067B2A3F265B950F97CACA8FC6C34FD8479 +:10E5A000F05F4ED2D4C7333330A403713E1097339B +:10E5B000E3577B9B89B0794532105A14487B02712E +:10E5C00031106F116660D826CAC0C021C2C0705415 +:10E5D0009834F711C2AB04A96BDE28260D2B29A2B3 +:10E5E000F2757580694A978161A51E842F89247F01 +:10E5F0000028A6A70361A7AB3130D801F9028AD859 +:10E60000CDCD00CADB03E52F42CD0100A5A0BBB0F4 +:10E6100068030000000000001F8B080000000000DD +:10E62000000BDD7D097854559AE8B9B7EEAD2D554C +:10E6300095CA4A0542B809010206A884244440BB91 +:10E64000128246C5B6585444844AA45D4123D2631D +:10E65000EC8E2F15520901C10E8C7683B21488807E +:10E660008E3A515169BFB6A7586C23D2765454B430 +:10E67000B53BA0A38EADBE48BBBD196DDEFFFFE765 +:10E68000DCAA7B8B2C38DB9BEFC5AFFB70EED9FF90 +:10E69000FDFFCF5236790AF38E62EC34FEFD88B16D +:10E6A0008B25C658792265AC53A49A35E836E67BAB +:10E6B000A5E0444CC38C6525A5D98C5918FFB364DB +:10E6C000B67F619984A9336CF160AA7CD86BE76549 +:10E6D000A759A29D9AC7425DC58CB5E2A71CD13847 +:10E6E0009331C5E77F706D3E63B9CC4AF5944C3BDE +:10E6F000F5A3781B5808EA6749A15C1A7736535886 +:10E700000563D4B586FF1760385F35BB2815EB313C +:10E71000573A63E726D6A9A7DB9A599BA21AF22A91 +:10E720005B80F3602C4AEB547FC6A219307FF6DD84 +:10E730003C6DEEC481FBD1537D3DAD23FDC74365E8 +:10E7400090CBB1FA1F82AF6DF17505D83C98570593 +:10E75000AEA71CD7670D237C6CDE106305B49E0A40 +:10E7600082EF00EB69758FE5EBC9EC7F1EAD623D72 +:10E77000FAFCE3DFF5750DD02E79FE0395474606CA +:10E780007C758097B09BAFCB2299F1A522BEE0DBD0 +:10E790001C812FD565257CC1BAE6F4872785350411 +:10E7A000A47CC3BA5C99343FC56B27B8E8E32A76EA +:10E7B0006B9B322531BFC5CCCBF1131FDFCF901E31 +:10E7C0002D5E46ED66B2D0622C07FAEB21FA730596 +:10E7D000885EAC3E289F8C69604118E01939702E24 +:10E7E0002BC6762E3F5B06A9D51562B3A15EE47BEE +:10E7F0008B805719F5AFCFE32A269BE0A3CF672C78 +:10E80000CEA31FB8EE19A9D393999EF76CBDC0771C +:10E810002D7CBF43D041325CF4F600B73B884E04F8 +:10E82000BDEB74B067AB80D7A64CD3FCF474ACDD01 +:10E8300022E065A683DD9B2B34DE0F74942D400708 +:10E84000E3A588F9DF9BC5085F9B33F71FC44F130F +:10E850007C510DE9F2BECCCA8312D4BBCB195A83CA +:10E86000EBB5FA3439E482F64BBD94EA7C33CBB293 +:10E87000CC7112D25F2E2848AD87EF8F33C934BEDA +:10E880009E6E6A86358D616C75B39DD26FDE1B47B7 +:10E89000EB1988EEDA9ABD11239FB68594DA28F435 +:10E8A000EFAB8BE45C877497A3955A904F7C1287EB +:10E8B000A3C4411EC5F1B3088E512EB7845CC8E4D1 +:10E8C000F03C27D019F0423A8175066440F5B04714 +:10E8D000993F26D0A518E093335F0EDB3CB4FE874A +:10E8E000B19FD185D183C866058BBCD5562DB1FEAD +:10E8F0005F2E9009CF2BAE19BB1379439FEFA7482A +:10E9000037387E31C71753FC3E9CC740FCB719E02F +:10E91000534C7CDC457276C4521645BC6CC4EF0087 +:10E92000AF1B59F0D7586FC4B20682FF6E49A733A8 +:10E930001F0A1716116BD87C9D93E613C9F1EEC020 +:10E94000F9BC20E89705004ED9FDD2DB0BFDD1DBE9 +:10E9500088A59D6105EA3D25875E22BE9A1D48E394 +:10E96000F22A16B3023DAFC5F15D34FD1E1C7FB81F +:10E9700080BF4EF7197E6D27D2FD3B821E8607DBD6 +:10E980006F93613DAE772FFA1706694E5009DB8011 +:10E990004F87F7D6CD6690E6FABB5AAC8CBE9F4047 +:10E9A000B8BB5DD12A8473C67CC843F98372E81D65 +:10E9B000EC27BD30C666217E80FF6DD0FFAFD44E00 +:10E9C000E685793866C4024198FFA6BA0A5667A060 +:10E9D000ABBF88F55B0A59205A9CC0F366A1B0EE24 +:10E9E0009BBFD1717D31D673D23CCF6165823E80B1 +:10E9F0002C803E1C823E800E3EC17EF297FA0F6252 +:10EA0000BB09855AB5AC11DD0F43B8FD4A6DC8C1CD +:10EA100079FCAACEBA80C609B36308EF0C59C0448A +:10EA200083FF004E0E99C3FF29A6D2BC9C791C5EC1 +:10EA3000D92E16D5603D44D348977E160D00E83296 +:10EA400092E09621E065F1771D40FC0C2FECACCAFA +:10EA5000D7083E7F23F82CE889211965B018936107 +:10EA60008D6D4AC39FEF82FEDBBA2DFEB066A047D4 +:10EA700006F4383101276B26F05B119FAA514FEB4A +:10EA8000F587D21F3ADD282EAEDF743D0174EB9579 +:10EA9000387D11DDEAF27EA8FED4468BF6410622CF +:10EAA000CB2B231C1D760EB7B6C2B96184CF57D8C5 +:10EAB00017C2ABB384F0043024FD847FC8D76A61E9 +:10EAC000208AF447F2B022619FD83499C50CF688A9 +:10EAD000E2739AF26C4158C2F17E2ABEA98D569A11 +:10EAE00087C3C5F104FA86448CE2623187076B580C +:10EAF000590CE086CB3D3D1AF33FA7F1F4F61D5AC1 +:10EB000029C37527AF53C17650474299917F66BBA1 +:10EB100081E19334DE7CF37CCFBA9D4BD13ED4DBD4 +:10EB2000140CD64E611FEA740140ACC50E0CF65FA2 +:10EB3000BBCAF64BA9A0CF7D7F1746FCB4338EF736 +:10EB40003522659A6C923B169F4CFC9C2569BC9FB4 +:10EB5000426E9F58D90531B27B0ACFCE5EC917F4F9 +:10EB600095C6828BA42CB2FB861BE1AC5AB97DC939 +:10EB700022F3A9DECE357F1793506FFCCC5B423C6D +:10EB800026E86A6712DC185B4572607B7394BDAF40 +:10EB900026F4C6A8A620E131AFB14FC2BC2DB757AD +:10EBA000C2BC5E1EA7D708A7EFB68EB9A90CCBEDE5 +:10EBB0009A8C72A1A0337F95DD44A741361FF8657A +:10EBC00014C827C4CBDD909E9604BDC2F8B6463368 +:10EBD0005DEA74A8F73F243F8603070A617D970A20 +:10EBE000BABF14E506D26B99FA41AF8ECF02C26F5D +:10EBF000220FF8FDEC4E0BC99F7089147D483AB383 +:10EC00007C36CAA14964BE7C10B7EB817EB74952FD +:10EC10005C0E205C678BB2434FBF35760A4CF9150A +:10EC2000BF85D910BA4FBFB86E0AF4FF877321AF02 +:10EC300089F9627D411F7FC867811A2C2F97A261D5 +:10EC4000E877F68CD5E44F5C5A6921BA998DF33791 +:10EC5000C0E5F3FD7F5510FEB7CE307F7F244EA771 +:10EC600035C457FA7C96975AA8FF57CA24E2E3C3E3 +:10EC7000EF7D74CF7498DFD119921FE7F78AFF7D7B +:10EC800017E24D1F2F0E2F8D79115EC9E3C4E16D80 +:10EC9000F72F40F97083D7AAA1DCB9D9E2EFD610DB +:10ECA000DFC364FF431A7E1F5B83F0D7E5E2EB52BC +:10ECB0000EF71B5CB23F86EDDEB054225D0E84D7AA +:10ECC0001B14C6BCA590B2753D6817B0A8DAD76B07 +:10ECD000E0DFC6775B22870DF2FB9F2477E687E7AC +:10ECE000C03FA6B2A988B753AEB9A9313670FF9F0D +:10ECF00034DB5BD0DEFAA6391C39AC9E597EB38575 +:10ED000035203FDDCCD807B6745C6FD87A15E88F14 +:10ED100077243B5FBF90EBFA3A6FDEEB68510C70E3 +:10ED2000BAC125935E4F9E771C7EA23DF41FC3FEA1 +:10ED300093DB0FD84E31DBD160CFFC19F58D2DB3AD +:10ED40003E3C1C3EDDFC681533FA19386FD47BFA63 +:10ED50003803CE37F3ECE63B141F9E72AD6A47BB17 +:10ED6000A955E5F410C992FDABD899F4A0C3BFD55D +:10ED7000B52ABB3F7DA1C31FE840F322FCC181211E +:10ED8000BA79B3B512759B4F76F4EBC70D45278A58 +:10ED9000FCDF4327A3E4FF7174522867FDCFA11362 +:10EDA0005B9364ED05BC3732F6BB6199F859625C40 +:10EDB0004FDCCE8CFA1DEB7B611D4B446E89C2EC9F +:10EDC000952017E4306F1F02C302F5CD92B08DF489 +:10EDD0004A1C2E629C03BD0FDE5701FDBF1BB6F817 +:10EDE00049FEFAAB490F2E11F6D5BB4D16B273DEB4 +:10EDF0006D04F90872AC97C5DC53511F1CB3901C0D +:10EE0000EB0DBFEF263B0E5421C2E77241BF279A9C +:10EE10001150200FC0BFC314A09D87F19377D4E891 +:10EE20003560AAC35F79D5317055DE01326500F0D7 +:10EE30008E55352DE1628C2A417E1A9831AB6AAA33 +:10EE4000C2D4EFBAF60B0DEBAB6F9202E8F781BAC2 +:10EE5000243BA243E2F3ACC77FC03C6DE05F230FCD +:10EE60002D96B95F9D250517CB06BF8F150220CFC4 +:10EE7000C2AEFA33CE7F5C223F450EDD80F451DF17 +:10EE80009466457D50DFF1858AEB5E237B053D4529 +:10EE90004762FFBDBA1FC4A223E718C773F079AE5B +:10EEA00091A57EF93279BCBAA62F5E1886FA6299CE +:10EEB000E41F83DDD9A323171BECF30E7402605DFE +:10EEC000E13A3E5E384722FF4F2FBF4BE67ED61A0F +:10EED00059F87BFFFE75AF46F89DB96EA6C701DDF8 +:10EEE00088F7771BE6A5723A08917ED5E9E7A51366 +:10EEF0002FAA48876C7E16D17D7DC462B263AEBEF8 +:10EF000021C5945FD4346FD038006BB425EA1BF967 +:10EF10008A65123DA40B3AC902079791FDCDE31C07 +:10EF20001982CFB3BD0D12CA5F5F65E701EE0344DE +:10EF3000B93F1AE8AA0295CA36BA17BE1DD2A84030 +:10EF4000532A30EE087FE4B32961C1CFD2691BFA9E +:10EF5000A72CE0403F15BFEB7C05FC317C9962B2E9 +:10EF60000732961AEC25F89FBBD65C6E31DA53F95E +:10EF700089F5E8EB758BB80C78AB1AC2799D143B18 +:10EF80008EFCB3CEBEA86A36F099A397310FD07D20 +:10EF90007A508946B16E19F7CF2CB86EA09F8C229B +:10EFA0006B3406DF5DE057F6A03C537AECAC18FDFD +:10EFB00077EECFEBEBC7F819E22D43CC6DFDECB942 +:10EFC00069886FBD3FA867F20F93E595E2E77E9EE3 +:10EFD000E2EFE8E129F7DB0D71CD57917F589939C0 +:10EFE000EE10E7CBB2B3F42BCFB61E63454A19C679 +:10EFF000D79C7E8C47A65AFDC743D0B4B1D8EA5FF0 +:10F0000005E3AA331AC288FFABA4D0FB38AFD4F310 +:10F010001B4721FD4AE7378EEB05F878C671BDB571 +:10F0200060FA0CF621A43E973FFC21DAEF160BC1E3 +:10F03000CB123B9769306F4BDFE240D085F09EC327 +:10F04000537B9052B785C77BFE26F84FB5087B38B7 +:10F05000C0FD7EDDFFBCCB19FA2B8E3F3AA05523B5 +:10F06000FD595C7A3CAD77F3F52867DD7692B3B352 +:10F070002CC5A9270D76C077B239AED626E2697ABB +:10F080005EB57B221F4CC179F038E9DDEEFD3ED242 +:10F09000678501537CBE99852C16D4378150808FAB +:10F0A000CFFD9A44BB677CE4D7A01D0FFCE499BE5A +:10F0B000C88EFD2833F4387C88EA037EDDD80F5BE8 +:10F0C00060D6ABB6CC00E19F61082C1BFD3AFE7701 +:10F0D000F7C4EBECFDF1F96639946531ACCBEAF39A +:10F0E000F3F9B02DDE0F5388150B4F6718F02CE2A3 +:10F0F0004DF595A263A65DF947C0F38DDD2A5B8BC4 +:10F10000D9EFC08AA9C0F9F3BF93EF73BFE74611E7 +:10F110003F59CA821E04C6674CAE4539FA198E00A3 +:10F1200070FFCC55F1600BF1232C05E61D117AE63A +:10F130005C8B88DBBBDAC9EE5612FC2F717F8DC762 +:10F14000A1C19F26791166F61692531DDC4F08C3A4 +:10F150007F98FF49A7D96FB87E93397F1D9B9B8D00 +:10F16000F47BDDBD2A43BEBE31494EE45BB8DEB957 +:10F170009E35B4A37E5FAD723D50EF654A0608C16F +:10F18000E5CF6EADC0B85740D0E127401F9A2D01A2 +:10F19000D79B32A3D64071627D8AC057ABE4FFF1A2 +:10F1A0007469E0F5AD567B7E8CFE5178BD4A74C91A +:10F1B000849CA4F63094B2CF4272D1D08EE67B6D9F +:10F1C00087797D43AD3F79BD209969BD37EDAD238A +:10F1D0007A18683DD6BD12C5F592E9EA4A8B24E457 +:10F1E0001CA79B6F1C9E492C15E4819DA777383D79 +:10F1F0003B31FDC6911745BA6846E70BF56B35E321 +:10F20000FEEF9FDCD156C26FC364C4EF50ED5BFFCD +:10F2100083ED5763FBAC7F7FFBBB8768DF91190EE3 +:10F22000223FEB71179B3D10E0D0E6FCDCE11BA216 +:10F230003C17CA2D8394170EDE1EF8F2F469A09BCA +:10F240003AFC447A3A9C8BF33A29ECC66E3578192D +:10F25000DA73DD6F58D0F465DD69DE761FAEA34D3D +:10F26000D2D00EAE5B372715E33775C72C9972BE27 +:10F27000606EAC9F7FD12EF4B7375A546197F52A50 +:10F28000A85FEA2AF32F08B8B0DF706E1AD047EDF6 +:10F29000FFE2F1A0AACA96A5D8EEC7DA552AC68F12 +:10F2A0005F7CB47511E66FD22E546C30EE56D1CF20 +:10F2B000678F3C51C1607EDD8FB9598CF468D48A68 +:10F2C0007AF426A077A4B79BFFD14DFAF6A627972C +:10F2D0003F381BFA919E75D37C6A9FBC7EB78DE642 +:10F2E000D7CAE9F79979A91BC5BAEC009AEE1611AD +:10F2F000B70F8773715F70B98D2D41FDA1C341A711 +:10F30000DFFA8E92DFF9705E7BD34A5176C7E95EF1 +:10F3100081FAD0BE0ED2B9FDD0FD41C1FF9FE6DB20 +:10F32000280E2DED3DB098D6D775A58AEB932269AE +:10F33000D67F86F19EC575F27AB48EF0C352740CF6 +:10F34000947FFAB0C4D7D5357187231FC7DF61AD6D +:10F35000A77DE016AAAFCFB77E6F49FB70A857BF55 +:10F360002EAD00E3E033FFF1310FDA7DB7EEB5C427 +:10F37000306E0229C54FAEEDB024F9210197047417 +:10F38000708B903FB7EC5B4EF2F996AEBBBF40F985 +:10F3900073EB7EF5A4512E009CC9CFBDF92D8B1FB8 +:10F3A0006344373FB5C7837AF8939E873C880F182C +:10F3B000A7CE0A7C50765431B5C3FEBF4D3FB33F54 +:10F3C000C6FAC8AFBBB56B0D1F6FDFA51F613CEB65 +:10F3D0005606ED0DF2E713FC47CE99FEF22716F024 +:10F3E00097412FE9FEF257EC6805E9BBBD19FDFA1C +:10F3F00079BA9FACCBA1CFF7FF755B18C6FFF4C9F4 +:10F40000BF6CC3FDC8EEEFFFBAEDE708FFE71D5E76 +:10F41000A4F35B1FF9E76D3F437DB4DF2623BD7C7A +:10F42000FEFC9EDDF743FEF3B7C795226B290AB7B2 +:10F430002B3ECFFF261BE1B0F2F959C3100E2B9FD4 +:10F440009E398CF51337D0D3CF81BEA206FAD2ED08 +:10F45000406D3FF4370CB2BF1169127E0EEDB3C49C +:10F46000D085FDECB82D8A747D2B7C6B047FF396E0 +:10F4700086EB691F02F34D00E75B1EE571BA33E1CD +:10F480001D1E21FB308D8DC0ADAA5BF6CDBBECBC43 +:10F49000324C55BF86EB657DA4CF92DBDD7A0CF054 +:10F4A0003A79603C7EC5BEB322DC6F65EBF8B80DDF +:10F4B000177E8474948CC7CFF01FE79E89C7D18ACA +:10F4C00039EEF1155BB6FD7E2CDC97D1AFBDA9E31B +:10F4D00071F9D397A7F6179F31C239761670BE41DE +:10F4E000D8F97D96C01405F9F0C97FD87D7F26E252 +:10F4F000D9E69F8D787FECAB3C3082D8C76ADF625B +:10F50000E4C7BEE76DDE9DD0E6A6E7DF22BDF7F9D2 +:10F51000D3AF5A353A8FC15C12E8F3CF59FCAF072D +:10F52000F5FB2D623FEED65DEE18DAE53ABE6E8948 +:10F53000CEA9D53CF49DECF55BA29C0F6E891E987C +:10F540002FF583BF654A0197ABD12C82CB72AD8773 +:10F55000E20B46BC4A9588CF131720FD0D844F7DE2 +:10F56000FD5E5CFF54035E7771FE1D884F3FDF61D7 +:10F5700053707F2119CF9F0BFBE7D6A8F4567F78F5 +:10F58000D7E3F8CCB268507C25D3C5758A99BFF50E +:10F59000F6FAFA87E2EFA1D7F5C3E076393A6DE5DE +:10F5A00067C2AF651697DBAFE4035FC2A75755ED9F +:10F5B00057B7239DBCA4B29DD0E4C7051F295A3F6D +:10F5C000FEDB1FD08E32F8FB97554A6D19D0EEB294 +:10F5D000401ADF4F4F3A3F109C61619A613EA76A23 +:10F5E00057E622DF1DF231DABF3D9CC3A288971790 +:10F5F00072961DC6EFEBA07F06FDB73783BD0A7C70 +:10F60000D0D1ECA3347E6E23308AE24D2BBC8CFB30 +:10F61000837B1F79E411C85F8C0380EA3A042AD403 +:10F6200018D7784DCCF778B39DECBF79454F28A813 +:10F63000D7A5E22714D43797D43EA1E0B983C3F10C +:10F64000384C58CD063EBAB828AD742DF4FF82D898 +:10F6500027BF78E90EA5DED0EF25A29F4B8A77E47D +:10F66000A23C3E22CE7F24C3AB57C8DB96F17B720F +:10F6700071BC23237F954B7E320BD23AF244DCE3FC +:10F68000F0983D5B56001CBB8B248AAB7537AE727D +:10F69000A15CEED6E699E8EFC0F88F24EC27CFB74F +:10F6A0004341F9BD53C45F7689B8D96E801BE6F734 +:10F6B00002DC307DA459A3F4D1E6222A7FBCD94FC5 +:10F6C000F9AEE64ACA3FD91CA0FCBEE65ACA3FD3EF +:10F6D0001CA4FCFEE60594FEA6F906FAEE59BB371B +:10F6E000928EF1A5095217C6977EDBDC40E5B1E6A4 +:10F6F000462A8F2ADC6EC8EB00FF00E46E6323DF2E +:10F700002FDFA90617040DF3D7EB1D53B87D6DF756 +:10F71000847E8FF2EB54EDFC72C47FDB982B2722A2 +:10F720001EBBB5BF0FA1DDF155A19D62DCE4120245 +:10F730005FBC34662A9D47B92F2D744C31C43D0AF5 +:10F740003AAC2C3605F1183D8C4770C29782DD0724 +:10F7500070BC38B4239209FD2CA8CDD764C267577A +:10F76000241DFD9189A27CE906B5BA78683CEE516A +:10F77000B85FFE6255432EF2D98B128F9FCDABB589 +:10F78000B02203FF5F1532E7378A76E917158A73CF +:10F7900058FDC773DD7EA867B273381FD97CE9C2F4 +:10F7A00039E6DF1DDA70533D8BF7D0F9E8B70F2447 +:10F7B0009F2C9E5A1E97F62A1FA27C031848A7E585 +:10F7C00084BCA18815D0E142A6FF0528BF249E076E +:10F7D000CF4CB7BB015E57078EA968C72F06D74924 +:10F7E000053BBC9EF9AD688F835F4CE975AC8152D7 +:10F7F0005B6E4CE5F1BD1A2FEEFF4A81E996D329E5 +:10F8000083C561CCFBC4FAFCD22F52282EB34272BE +:10F81000FA910E5A73D83EF45B5A05BFEAEDD56FE4 +:10F82000CF61DA143C0353608A87A999C10528E7A0 +:10F83000EEE895346CDFA18472D572BE30C5E0E786 +:10F84000AB99DCCFB84B0A69587ECFB44F8E5BD0F2 +:10F850008E7ADAA159401F7C5E76CA8AF4433E1143 +:10F86000D2CF9DCEE843F998EFADE3C19118C5C35F +:10F870006C024E785E67CE44F4635C14F760B9CADC +:10F88000A7C67DD37A2FF7C75BDD1FE6E0B83FC27E +:10F8900089F079B1DC6C8A8AD25F9DD2AB223C9729 +:10F8A000B01E4A17B12E4A036AA80CE7B9903590EA +:10F8B0003FB42AC5733EE2F9BF6A7EF17315420E6A +:10F8C000433F01A47FDF347BC8E83F5FA072FE9E08 +:10F8D0002F52E0EBE5C8CF03E15D97F7BA9C1F9E7E +:10F8E0001AFCB16AE0173D1DA87D32DFE8F3D1CFE5 +:10F8F000E1A55FB4F2C591008F9D9DFCBCD7CCFA09 +:10F900000E5B1E146D5FA795122C985D46B8E43906 +:10F91000747AE77E4A23E37064EF4A0447164EE1A7 +:10F92000F23A5E2F3811ED8B6D4DA71C28A74F358D +:10F9300015BC3A8E0DBDCE64BDF6AB519336E07E5C +:10F94000F2A86EBE9FB261D4DF0ED8209FD7CBF550 +:10F95000409EAB611CFA6B557FFA971C8C330E4F9F +:10F960000DDDAE1AF4EBB6BB1A46E1F8FFAA045659 +:10F97000AA04EF95369AA290338DEBB40D45DAC008 +:10F98000F0DAD95130287C93E71D971B03C8B104E6 +:10F990003FF37AE067327B29C98F9806A2AC3725FE +:10F9A000F5991E28BDA631A6225D001DAF477C5FDC +:10F9B000CDA22AF7EBBDD908D77AAF46EDB7657F60 +:10F9C0009843C25FE9CD0FFE90F3B48CF56B6FAD39 +:10F9D00016F6014C87E27C79224E27A77C9A83FA9F +:10F9E0007D876A8E93C6FB6D04FE30EC2380CD4488 +:10F9F000F6138C45E71CEA7060985A9DDC2B21BFFA +:10FA0000D578E7D4A401881637E50BBB88D3D3E2B9 +:10FA1000A6B41D186F6857438FAA247F1B289E5DCC +:10FA2000E79A5083F6F5D9AE0F46EF45BB5DE76721 +:10FA30007DBD773943CF221D8CF6E657A73194C39D +:10FA40003C3E3CCBE2A2B8CEA94C467ED840FDFF5E +:10FA5000139EAF54D16E6094AADFB14EB4CF5E0452 +:10FA6000FC631EED0A8C1B3F0F7605A63BC1AEC0A2 +:10FA7000741BD815981E02BB02D35F835D81F51FEE +:10FA800005BB02D3C7C1AE50F839C423383F359304 +:10FA90009FE76AB5B21BE81CB7380FA9CFE37581A1 +:10FAA000073D3DA6727AD8AD0AF9F69E959F2F5173 +:10FAB0001A46CC75F314E92335F7D58013B29E327C +:10FAC0001695F0DCDB970DE154685ABAD72FA543A1 +:10FAD0003AEE3BEF2127A44F9F070A07EC947B2ABD +:10FAE0004081033E5DB2F6C032C4E7341E3FDF7D85 +:10FAF0001EFC7B329E9BB5129EDB5E653B500FEC7D +:10FB0000390FA816BE7B66B7DF867EC3FD6F42390C +:10FB1000C0C7B3E9CD9F53DEDA773005E6F7D4707E +:10FB2000E6473BDAB3E5C3BBA8BCFBFEDBB1DC3385 +:10FB300063EF4F79FADC1DF8FD17E7CD6E41B2F2A5 +:10FB4000F4C4EEC4EF59EB422DC8F7C39AC22FE7B5 +:10FB500043DA99BBAAE45A287FEAA5F6B723907F37 +:10FB6000E670A46E1DE4371FBE7703965B7356766E +:10FB7000E7C378F737C8742EA9080F5702BC56E7B9 +:10FB8000AEA0EF0F3464D2F7D423DF7A67425A3243 +:10FB9000520EE27EE83333F879581DDEDFAB161ED5 +:10FBA00077B38A73F3B9FCFC2A6E9C225CF5FD19CD +:10FBB000F5183F9FAD1EE679ABB721404765A4908D +:10FBC000CD8A74592BF57B0E3DC5CAF7074A76706E +:10FBD000FCEDEB95A3182FDFDFB32A05EDE1FD3D2A +:10FBE00005169463A5B932EDD7EEEF4DCF7003DC67 +:10FBF000B7F4AC1846671C40005F09FD38ADFC9CAB +:10FC000065869578CFD03E9DDA97C4DB6F74A4E209 +:10FC1000FAB17D7EA27DBA683F02DB971BDBCB1673 +:10FC20004CFDD8BE98B7473B31F755F3F8C3B13D0B +:10FC3000EEBF9C31FE0A19D371A27D325F15887127 +:10FC4000DBA470CA24A4DFE58A8887FB49AF940B44 +:10FC5000BDA2D7AFB672BF2135BE0F17A2719E39B4 +:10FC60005690CA06DBEF44A1AACB29D2FBCE84BCB6 +:10FC7000A77C7A527E7852FD82A4F20949E5A54913 +:10FC8000F9549A7F89F8D6887601DA0B0DA9A45722 +:10FC90004B1C3A1D703D5B19AFE77D7919EAD7D946 +:10FCA0000A3FA720F46BA5A87FE8F7D739691F980A +:10FCB000F9E8BB2DDE2E7CF7786C775466043F7034 +:10FCC00087C9AE11ED9E95FC2F17A3FDFF123F6F64 +:10FCD00090805FD0CEFD2E0EEF32D1DFEA4DA52F02 +:10FCE000E311D5BFAF55FCD83E59DFE5E2E10DC4C5 +:10FCF0005BCFCE554EE8376DA25482EDC6EE6B90C9 +:10FD0000D1CDB7ED67AD1E6857B14BFB450DA4A52E +:10FD10003190AFC0D7A55B387F946C52888F4A7200 +:10FD2000F9396495055F1E0FF4586109ADA575FC9E +:10FD3000919FEF2AE92E35D9F9E336F173210F5857 +:10FD4000B93DAB223F62FB2DD34CFAFBDBDED18306 +:10FD5000EAEFDDCD41D339F83DA8FF5C09BC8D4BFE +:10FD6000A2BB07AC926EFF98F0985CEFE5AD73070D +:10FD7000A5C3DD228EF5B42031465B5B90DF248B7A +:10FD8000FC45965985A48FE9FC865EBE7A8BB9FC4A +:10FD900019BD7DF8D29918B77A669342F98DED971F +:10FDA000CE6C817F2A02BE20AF387C37E970E279C1 +:10FDB000837C7A80E4D37E66DA4F96EDFC9EC7940E +:10FDC0000F3A0FA769B8FFCBD873A588CFE04C7066 +:10FDD000335865549391A55E72771D44FC3F355EA0 +:10FDE000F2EF84EF555A552B9677BD71DDFDCB911F +:10FDF000EE84DCDD7FB4F008C6DF5ADEBB6309CADF +:10FE0000B93B4E4A1AC6570EF5CC6568BFA94715CF +:10FE1000924F6AA6DF122239556AB9DE00C729451A +:10FE2000AA903FD52913F1DC75E6AE697CEF35C0A9 +:10FE300016BA711C1B97CF456A3849FE3E6B45FFC9 +:10FE4000C1DFBFFCADB4B0B005E9ED7599DBB3B56A +:10FE500081943986FB04FB8E813E8071CBDF884C18 +:10FE60007905EA45BCD3A6A0DED8BDD9CAEFA18CDE +:10FE7000E0E7645E14FA01DC8981EE03BC88704E11 +:10FE8000BE0F308A017F40FB514A0AEDFB8F8AF199 +:10FE9000FD42F6DD6966940BC9F2ABC69562E20BD2 +:10FEA000B9C3EC0F8F62067F98E47C92FC7AF79CD2 +:10FEB00044FD02B48F6B5E4EA56082963609F05900 +:10FEC000952B6BB4EF1B0EB8AA601E978859ACC671 +:10FED000F812966F65748E7487900B51B08F30DD79 +:10FEE000D7C1F77DDB8E839D01E5BFCB94FD313C0F +:10FEF000377E8CDBF197E8E7658B558A2BDAE13F9B +:10FF00001C5F0D7B6722DF8C8B68AD288F4A0F1B2F +:10FF1000E28EF0BF0AB1CF5C95148FAC10F1CB8AA2 +:10FF2000A4EFC9F1C7AFADE6B8F43D3FB3D0BCC252 +:10FF30006F5AE8DCF033E7B2B004F6CB263974F739 +:10FF400072D26BFC7CEBD302467A3CD262E3FEDBDE +:10FF5000E1F76C0CFDEFDD3576B21B9DB838F8BECD +:10FF6000FB78BDAE8FC8FF3934CD99C2E5758019D5 +:10FF7000F5C1AA69CEBB918E57BF2493ADFAE4E1D7 +:10FF8000153E19F21B6BEC74FEDEF3607804C68735 +:10FF9000F6EF10FB5AFBC4392D9D1CB04F3AA7E574 +:10FFA00025BB39C3268BFB39C10C5B79827F3DA30E +:10FFB0006F1B8E7ED29E7C89C7F186E82737D14F92 +:10FFC000AEB11F831D2FFC9118F7FB443779E82F42 +:10FFD000A39D9EE40FD4BDCBCFF7815D3F0EFB5BAD +:10FFE000C282018A83E0092F3A2F7FD6767D881955 +:10FFF000ECFABCCC1219EDF8847D1F2CC5FEF3730E +:020000021000EC +:10000000B555888AB3B5EB917EB99DCEED7B35C2EF +:10001000EDFA97855D0F76F97936935DEE5F80474F +:100020007C16D81E9DA99C8B76775719E667D91E3A +:100030006DB5433E4FEECDC12B750B6D8FCDC4BC5E +:1000400007030FC08AF3201F9E01FDCA1CDEE14793 +:1000500098B0D3FB5EBD10E6396169A61FE3AA79AB +:1000600072D7D152B4B76FE2FACFB397DBBFC9F3FF +:10007000DE26E23CD0FF0AC4EF421BD74F0B057DC2 +:10008000EAF90E2574A58DF66F9982F77392E33A1B +:100090000B11A0E867DAE2E7EF86F3FBA890BAFB62 +:1000A000C53BF70F87C2FBDE38DEAF4BC67B46FE93 +:1000B000D9E3FD54ED7C125D03F9ADB66F81A90D56 +:1000C00071BE1B5968A58DEC027E8E2A8E3719FCF5 +:1000D00029482DE2FE82C732A701E1D621E0A5A77B +:1000E000CD3671BEE837679C6B6DC675D894903875 +:1000F000F4C3E5B7A715FA7119E02BFC667D3E1D28 +:100100004A7DBBCDE03723DCD19F5EA3C39B35D0B6 +:10011000FD35F0D3E85CD8BF1BDEB97178DF8BEB1F +:100120000778D33CF3441CEC6CE1AD9F87D0CF3F04 +:1001300084ABB58817E5641EF3230E66BAE698EE25 +:10014000DDE87641727F5749A1DDC67527EBFD3AA0 +:10015000D6AB7238F6A9B8EEEA0CAD4CA2F3ACEF10 +:10016000CC3CEA833CD225D93B6F937D539DC2F3AF +:100170001FADFEB7089E67ADC63D3FB48FC25FCED0 +:10018000C4FD86EAD1BCFC2FA2FC0935F014D17D58 +:10019000427E448DF243F59EA842BBE62E67E839C5 +:1001A0002E37FCD588BABC46ED07C50574B91115C4 +:1001B0007101A0BFC3242F1AB91C19CA9FFFBDA08B +:1001C000373D7D058597D19F6FB372BB44F10EA774 +:1001D0007BD3901AF9321E8F8B38783DE14F14880B +:1001E000FD936439ADFB13050E333D25FC818093EF +:1001F0007442127DE9FEC118F1ED508B35F62318DB +:10020000F7C14A3BED93D545C6529CC6D7FE31C5D2 +:10021000AF74FAFBCAC1D7A3CBFB5DF7161C2982CA +:10022000766917D1492776B32DF0B1AD3C81A7622D +:100230005BE09324BC8506C0DB17678337D5E5E018 +:100240007EB9C0830EF71E21F78F8A7BB3AFC4E55A +:100250007DE05FB1DF56AB46F1C7F011EE2F0D84A4 +:10026000FF81E2973A9E7579F39183E33791723D6E +:10027000DB23EA8DAE64D3BC930DF6A29DD7EB7160 +:10028000B07EF75D32ED5C5E795A8324C79838A75B +:100290003ABA83EB71BD5EB6E807F1C7DF1DD064E3 +:1002A000E4B7A0985761259BE14D4DD42FB473BDA1 +:1002B0001174F2F2E47147DBF9BC75F9A98F5B7830 +:1002C000AF79DC31F1710332D727411ABF605D1F6E +:1002D000DDEF2A6C62840FEDDE6000ED8B9E2ADB81 +:1002E000987BD1AECF2A1271C100437AAF10F3B917 +:1002F000DF1AF0E1787900278C335960DE98029F8D +:100300009D203E7385C90E34D8FD15761CFF28EB61 +:10031000F79CAC0E778FC26A6C06F9F50701573D62 +:10032000AFAF3318489B85A1DD49FBBC2528B666D5 +:10033000FB25E2BB09815C8A7FA50A7CEED8CBF75E +:100340006F27DA7A16DE0C7089AEE1E764EF5F653D +:100350000DF03858EF932FE33AEFB192BFB4EB6949 +:10036000D79A09906697DDD69201F5363DDDFEC439 +:10037000CB48FD76EE373DB277E7DA09507FCBB256 +:10038000748A57E9F9DCE53C7EB539B2F1A2B1488F +:10039000A77B653ADFFEC80CEEAFE8F3BFDCCEE327 +:1003A000574BEC227E15E17E603C7E3543C4AFC2E4 +:1003B000425F2E9593E3574BEC83C4AFAEB5F3F891 +:1003C000D5E6289743AD7BE5680B347CC4B5D3896B +:1003D000F6EF23AEB90C5335C0E33F8FECDDE8A058 +:1003E000F8954B8F3F459D183FAAB7F338D0CD38CD +:1003F00040B9B1FD4909D33C437B8A5FB9F4F81396 +:100400006F7F939DC79F6E3FA3FD99E353FCCA6D19 +:100410001E7F8568FF736C9F35D8F84FA65D6F907F +:10042000233F13F31EBF3F442EDA0401DF717B7BB1 +:10043000FC7C73366647386D7F6853E808C0AD7D35 +:100440000B8F833C2CF6CFB74B66FEBE5BD0DF0331 +:10045000827F0E6D01FF18FDE22DF30312DA854D48 +:100460008CF03C6EEB9792711EA396F2F8DEB8AD5D +:100470002B8F8CEFC73F7EC02EFCE3A572B27FFCB2 +:10048000807D10FFF854EDD283784C7862078F6F2F +:100490004EECE4EF904CDC17E6FCFBED14B2BF46EB +:1004A0007D5B429703F2BE9D4E79F5DB73293F6A6F +:1004B000131F6FAFB0BF26AD6BA77331EA267E4F17 +:1004C0007D54D81CDF497514F0F7281ACDF19C49EA +:1004D000FBC3A9E7C3BAC6775B88EE07D6C7C18856 +:1004E000F1FCF6F6F8BE068FEB8C16F130BD3C55EC +:1004F000C8E3E4B88E5E6FACC482D8FEE17B068FA1 +:10050000EB6C6BE6E70DF4FEC6DEC5E3C9F4978934 +:100510007A2B40E729B737D56FBC08F369356514E6 +:100520007F76F0F382C9F197B81E9042AF207E74B7 +:100530007CE9FE58AA83D3B9AE1F00A43518924BAC +:10054000AC4B36EDF71AE435CDA7730197D77A7E19 +:1005500058287B079EEF4F71E8FB938739DE6B5A73 +:100560004A90AE83811326FD3924DEBB38DE1F138B +:100570007857BBFAC7778A239DC7F11A7F58FC6E5C +:10058000283C6B49784E71F41FBFD3EB150B3C3FF1 +:10059000BE8ADF2F1E0ACF7A7FC503E2F960FA25F3 +:1005A000063CA738C439DA81F19CE2C83A13CFE09F +:1005B000BFA53A84FF663C7FAFFB6FBA1E073D16AE +:1005C00031EAB1BD8E243D26EC045D8F8D8FF2FBA8 +:1005D000DABA1E1B877A4C4AD8253B77F0F74B8A4C +:1005E0006C9D2B8EA01E5B6FA5FB95093D162E3DC5 +:1005F000827266A395F6733AB7D45721BD0CAB6CE3 +:10060000C9B909D2F17B9A480EF96EE7FB2F573929 +:10061000B83EDBB365057DD7F75FF66C01FD05F9E4 +:10062000110FA793DEDFBC4526FD95ACC72639F830 +:100630007D914A87D0635B7EB01EAB740CA2C76607 +:1006400038B83F36B01E137A600B97B303E9B1E9AF +:100650000EAE476A1C03E82143FBFEF4D84CD17E62 +:10066000B663003D6468DF9F1EBBC4C1F5D1FC3397 +:10067000DA278F6FD663F344BB49BBA207B1A995B4 +:1006800081FE1A9DD05F51B46B009EDB7FBD29FABD +:1006900032C0ED7129BAF162F44F72789C22598F01 +:1006A0002D15F4B752C8C3436111E7DD0B7A2C3323 +:1006B000A1C7263CDCBF1E9BF0B0E22CEA478FAD01 +:1006C000740CA8C7563A06D5635C9E15093D56249E +:1006D000F45851B4E7ECF458923C1BBF8EB71F4856 +:1006E000AE7D34801E1BBF8BEBB149A8C7D87F9E5F +:1006F0001EFB68083D16976FF79C9D7CD3FBDBDEE5 +:10070000C5F74313F22DB4DB2CDF965620DF7E2491 +:10071000F87310F9B6A73FF9F691E013DDDF00108A +:10072000478C7AECA3643D96F07706D563EFC7F566 +:1007300018B75F8AE27A6C836CD42B3FD47E19C8D9 +:100740006E79FFBF498FBD3F841E8BDB2BABCECEB6 +:100750005ED1FBDBBEC98CE749FB00CF52C25E997C +:10076000F434E099D669E9578F017EDF47FCEA78D7 +:10077000B5ED0F055234D25F1F09FDC5FA3B579600 +:100780001CDF3A553B3F80781A28CEA5BF97977C4F +:100790005E67A8F380732EB893E6D5AE06BE7618D2 +:1007A000E20DF7A9A17FEB5FBFEAFB3461E1C7EA85 +:1007B000E900F7217D5C3FDA2A8331711F527566AB +:1007C000F5771FD2EFF3631C28CDFC9E99EAE5EF85 +:1007D0009979A67FD7DB8A72CF5B3105FB49778A8F +:1007E00077CD92EE031AF82ADD69B00FE3F740F1F6 +:1007F000029D613DED39570C744F70B8D3149F1CA6 +:10080000FC9EA0C5CECF5586AB595183CBF01EDEE2 +:1008100031410F124BFCD1BE027FAF6A9C53D2F71D +:1008200015C639CB0DF34C3AB7BC460AF1F8AA2BE2 +:10083000CCCBC539668AFFC06422CDFCDCF27A716C +:100840006E5981F9D23DDC5CFEAE544A2606AAF010 +:100850001C7317F94D29C50D3E3CBFBA7A80F3AB26 +:10086000378A79B58CE4FB796BDF93289EB5764C9B +:1008700085CF781E59DF673FECAEB0F71AE4676B9F +:100880006E29ED9FB7BAE60E7A1EDED569A173B860 +:1008900043D6EBE0F5062AB7F85907EE535914BED4 +:1008A0005EDBBB368A2FD858438CFCC35E49BC83C1 +:1008B000C3E380FABC255703D19F1EFFD3CF05CCDD +:1008C0002CADB4E3F756BBDF8EE7775B7307971B5E +:1008D000B66F2516CBA073754B108F07C6EF26BDDC +:1008E000EED41AE81EAF2D17E807E09DE2F233D4EC +:1008F000F3295EA6213E86C243A593CB6BD52B9BE5 +:10090000CE09AFA90A513F6B7218BDB3E5298372B6 +:10091000039FAF11E78DAD421EEAFD9DE3E47AE34C +:100920004ED12F9214BEE760B1FF8EE81720EDA5DF +:10093000FD40EC070A9BF07014EE3728819F71FA96 +:10094000349727F89FDFE3192FF890B1DB4CEF4B7A +:100950008D17EF88E971486D13237A2A8AF0FDF824 +:10096000F19155B7C9934453281FBB8145C3BC9C23 +:10097000F6E5F5F645BBACA6FBFC05EBCCF942B1C0 +:10098000EF399619BE039F158A7DD242F12E95FE4E +:100990005DBF6FB11D3FF4B30F90BC5FBAC569DE98 +:1009A0002F1DEABE87BE3F6A65819D043FBCBC9493 +:1009B00003F47427F72392EBEBF06C4CC29B9E3E42 +:1009C000EA9492E46E72DA69D683E2FBB7272E1CB2 +:1009D00054DFBE03FA366238F7F147A16FDF99FFA3 +:1009E00090BBDE659C5F0BF5FFC7E6E3E77FA026C3 +:1009F000C6F11C7C5BCD7753FA02DE87B866593EA0 +:100A00001DE5B9A6E1806A6CBF68D9DBE77F60802D +:100A1000E742DF159108D19DF2AFB84F8DD16F7CC1 +:100A20002F2C80CC61D047FA789D30CF0FC02EB8E4 +:100A30007A19F7CFD6E558A32EC0E3BAEFF93B22D7 +:100A4000E113FCFCED3DCD0B22581F8FA720BCFF0E +:100A50008F93FB59EE659283C79F7AED3CFECAE502 +:100A60008145EC0BC4E126E48145EC071C2AB982E0 +:100A7000E44123F3D7E2393976CC42E790D61DF82A +:100A800035EBEFDECBEA667E9E2582F7274848737A +:100A9000BB45D5F71F847DA28AFED788FB158D2C18 +:100AA00068BFB62CD1FF869A53DDA3C9DE4F37DD70 +:100AB000CB6C53387E5A9BCDEF6954A7E8765057DC +:100AC0000CF7CD410677A11FE22EF6C7B2CB68FD29 +:100AD000F978C5C70278A9467D5616F3E1BDC07501 +:100AE000287FFAA1B763425E2C6AE0F734D7017C15 +:100AF00039BC0FA9F86E4CB89CF5BB0F302645A742 +:100B0000D3FFBFE03B3F45F727FE73E0CB52B81C55 +:100B10005602611BD265327F780351D5285F02727D +:100B200068624A16BDBF49F36B5743BE15902A95BC +:100B3000E10BD10EF0549AEB1BDA95A5949FD9AE38 +:100B40005DB7537CF3F9FB7601E02F63DCB112F85B +:100B5000C8309F841C58C5F9D3C7CF7527F3EF4021 +:100B600072AD559B6BD78AF15D4599EC6ACBC83263 +:100B70007BA161BE97A5F0B85F6B21B7BB23B973AA +:100B8000ED85C56796B715C9A6F3A87AFABF9D0A81 +:100B9000957F898776890F7A389ECA5800F1AD56BD +:100BA000CDED447C7756727C0F359FBA21E65337E2 +:100BB000C47C46A4F0F96868F4670D3D1F1D9E03D0 +:100BC000C9691D8E2F3983CB119FBABD39905E46FE +:100BD0001D8BFD3DE10CDE8EF5AFF9E9E559A80767 +:100BE00086A5897DF6DC4CC23B943FE4C94A9487D4 +:100BF000AB13FB7CB8BFBDF2D2A5E5485F6F8A732B +:100C0000C09E0C7E2F5B9F576F0AF7737B53B8BC57 +:100C1000580B7C131D97D807F4B44AB4EEBE9172FA +:100C200074673EEAC522FABE3AF468EDE8323C7FCA +:100C30005C88962EFB460DDBD08FB58973C7EBAB76 +:100C40009D3718E35D0D5E0E6F4F5AD52BC8077E9A +:100C5000572FED73B200705D367F6F12F97FB217B8 +:100C60002C3E3C778FFBAD14AFF1DBB9FD2FEE17B7 +:100C7000B110FB21F78B1E579805EF25875D5CDED1 +:100C8000B93749E407EBFB9ACF79E76E47F8AAFB3F +:100C900043747FE5408593EC98AFDBF87DC913D7AB +:100CA0004CA7F8E06B72FD76BCAFD1F7B68DE1FDD5 +:100CB000DA13975E528B76CD896BAEBE18CB4F4858 +:100CC000AC56E28F0C79F0DEA667B4F6D83E845BB2 +:100CD0009B83F6C554DFFBC24E0B78E44AA8FF376E +:100CE000CBEF52009E7F729DBA0FC5DA352C46E7D6 +:100CF00023F4FB116B5343FB705ECAD59714A17CA0 +:100D0000596FF5E6A1DDB8BEDD568AE7D4D2BE0044 +:100D10008703E9F1F2147EEEA60F781EF28BEF9AAC +:100D2000F79071DF727116E003F0606F6C0BE4C333 +:100D30004076CD4F4FAD7846733A189E1A3A88F8F0 +:100D4000A8B6971CF6A2FE6FE0F718F47B0D57DFEC +:100D5000C0F36F8AFDFE643F35D92F3DAACB451FF6 +:100D6000BFFFADB8781C937995A477CF72C91FD314 +:100D7000F164A4077CB7CC480F78C5284E0F01BF9B +:100D8000D0FF717A904E9F73F6F4B019C784F55E68 +:100D9000319DEFBB86ABFDAF12BFBCA612BFE8F71B +:100DA0009092E97E75A8C92E179FC91F3A3FAC2DB6 +:100DB0005BE1D55C48FF2B96D07D91139286EF24A2 +:100DC00078A72ECAC2EF97D759090F3A5FE8FCB04F +:100DD000C013E78BC7918F43AEDE599276265FA092 +:100DE0007F69A4FF25C827F2997CB290F9AFC4F3BC +:100DF000970B15164E4D4FD0FBC24AFE2ECFC2DECA +:100E0000167A87696193C44E9AF403E4ED26B879A3 +:100E1000E3EFBE5ACE1EBE6B2F92DAF1BCCD5AB5AF +:100E20008FDE290BA771BE6B75487BF17DF576F7D8 +:100E3000876D687FACCDD6E81DCDE47306ED6353B6 +:100E400088AED75E3182CE3BDCD7ACB110C0F74F55 +:100E50000AE3EF95CC7713BDFF3DC03D84F7AAC0F0 +:100E60008EC072E0639F2B0BE9D4CF7C507E85A5AA +:100E7000A7E110F2C71F53E8FCF8D7CF8526E37B24 +:100E8000CDEB2B6EA27B545FDF191AE52D36AE2316 +:100E90003A9CDFB7EE1D2ED39B419AB87FCDC4F7A5 +:100EA000D008FE3D4AE956C0FF49B4533DF9BA1F88 +:100EB00025DAF552BBB59E1E07CD37DBEAE5EFA379 +:100EC00006CACB213FEF9C4C86E7E2B65AF9FB1CE1 +:100ED000C9F0BCD2C5F9679EA553C3737765AEE16F +:100EE00017E0B93C67FE8ECE722F860C865F70913C +:100EF00003EBF17DEAB6EFA794A333B8BDB9FBFCD1 +:100F00000F0C71B7514D5D2C84F7318A8364C7B4DF +:100F10007D6F91ED28072782DDC3F8F716837D5694 +:100F2000E5E2F2BF4DD83B6D2D415FBA617E6DC2E7 +:100F30002F6D3BE0207B3D65F635BB1CF9C6797310 +:100F40007DD926DE2D1955DC27FD04EBB774016F22 +:100F500043FDD8AFC99F069D2D2F35E81FADA9DBF6 +:100F6000EC57C014534B71BC4EBA17EC1C63F7A27C +:100F7000BC5B5854F32F4A3F748B7F270DF4A7CFE7 +:100F80005F8F73ACD4EF5D67B557213E9C754C42C3 +:100F9000B9BEC2C5FD8A02246018EFCBA29A41E314 +:100FA0000478FF1A2C3DBA7F1D1EC7EF5F631EEF4A +:100FB00049618AF7AF31C5FBD7588EF7AF318FF74C +:100FC000AF318FF7AF318FF7AF318FF7AF318FF789 +:100FD000AF317DAE394429DEC3C672BC778D79BC92 +:100FE000778DF97936FEEE182B0A39CB112E130ABC +:100FF00025A423E75A6B00DF69382AF03773CDFC4C +:10100000F5C7306E145028C694B245497B83E74932 +:101010004FA7F8F8BE7FBBEF4986BF33A05EE0A6BE +:10102000F8CB3DEFB9284D99FF144379B553D52C32 +:10103000192530BF75575C601F8FFCCC5AD3FD90CB +:10104000775DBFDA0E2430A5EC8B9B9E84FC53AEFB +:1010500045ED1823BB27ABF6350DF2BF752D69C7DB +:10106000A31EA36754B9F97B8E4BDA0F43FA63BC16 +:101070000CA8DF0F8079074252FC3E80BD10CCFAED +:10108000C03E10C5E04FB896B6DFABE17E5C5718A6 +:101090002FB6A9E1BA76DCFB81F64AB697FABF60B3 +:1010A000A29428CFEAB8AA7DFE7863FF4BDA03D07A +:1010B000DFABEFCAD4FFFD503F8CFD17782FC5275B +:1010C000E2FADE93491FBF69D55691DFB916E413E2 +:1010D000CCF7B2A085E4CBE81AB68319E2EFDE22A2 +:1010E0001E8FBFD4CDF9324DBC3F258324C6384472 +:1010F000EAECA788885203E6F7FB9CC54AD2FBBFFF +:10110000E6F7912F75733D74AC80D13BE57DE3ED3F +:1011100051B42B96223DE3392E17B7F32E0B3EA880 +:10112000E13BE5A38BECA5A80C8EBA34BD5D0CE7C2 +:10113000A7B74BAE87FDCA8672BD1DFBEEAF0ACACC +:10114000A1B6F58CDE4173164435F4278CFDCA65D3 +:1011500003F76BA8C72C838FCFA441FAD1F9CA69D2 +:101160000DB8919EFB2672BCCC9FB75EE75319F772 +:10117000019D4EB3BD6AF7546F73031EB6B939BDF6 +:101180003B9D5DDD05D8FE3C85F66DD9DEBA239822 +:10119000FFBBFB6592B3D90AE019FACBEEF096A03B +:1011A0001CF954C8D78CCCA573E91DC44D0AC3F7EC +:1011B000F433C57B10994CF2C734A4F7CE59E81725 +:1011C00086551E7F2CABBCED9232F83E75D657C4C7 +:1011D0007F539F9725B48B3EF5F079944C7637A0DA +:1011E000DD7BC9E4915390AFEE4E7A9F424F6BDDA9 +:1011F000DCCFDF25EEE748DB8E3790BD59EE92500D +:10120000DF7DFD05D74BFF26E639CECAD70F9E06F8 +:10121000D9952D3E85DEF59073786A551BEA910EBF +:10122000AC5BEDF41E96F5FBA976D42BADDFDAC4EA +:10123000FD9F1EB237AD8E9017DFB72AD820533CE2 +:10124000A0D5EB8CE253DCA9EED26E0DF5E42CC5F3 +:101250003F06D6937A9E42749FE6BE228AFBB8BFB1 +:1012600038E0A0FAAADB1E4579BFABE6CB600D944F +:10127000EF9A01F204EAEFEA981F243EF2CADE3147 +:10128000A4E7FCBF473EDBD5E4F5237DA5E2FE0DD8 +:10129000CCE3CD85D37D757C7F80DE85A3A72365D8 +:1012A00043BC9D058AF09EFA346F752D9E7F55D301 +:1012B000AAED2887D266D5D8793BF33B9B911ABE1D +:1012C0009F8EE5D7E23A23EC30BE63AEB36E5ADAB6 +:1012D0004609E311EA4FF8B748FA34ADCE85E39AF0 +:1012E000DF9FCB77D963F43B135EBE2FA615717BCE +:1012F000355FDCEB80EF14C7CC8998F919490DED07 +:10130000DB5161F33B9E0C230BB0BE11621EAA5849 +:10131000FFF48FCDED4788B8E688A4F7EC66B9F501 +:10132000F88B194EC9EBCFC9DCE5457B3E27ACD025 +:101330006492D79593C9F7F5F2BD4EBEBE4CBEAED2 +:10134000E4754CF39EAC42BD97BC8EE9ACA705E9B1 +:101350007064A3F97BF27CA7D5EC0AA2FD3CAD48F2 +:1013600021984C675DAD1877D7F1EE2C30F3EFA7DD +:101370002EBEDF067CDC867C3CBA43060590E87F07 +:101380004CA793850DE38DDB946ECA8F8F0E37D5F6 +:101390003F676F81A97C62D70453F9E4FDA5A67C61 +:1013A000496C9AA9FE94EE6A53BEBCE76253FDA94C +:1013B000C7E79AF2E7F62E34D59FFE71BDA9FCBCB3 +:1013C000BE9B4CE53FFA7685295FC57E6EAAAFFBD2 +:1013D00055CCE7EF0964E27DACCC12945B3ABC7E5D +:1013E000EA36EF1727FB51C9FB849E140EEFA1FCD0 +:1013F000B4564167D9F30B58C8F03D73F60453DE79 +:10140000B7A894854C7ACCECB7B57D3F6F01FFDD72 +:10141000277E9F3A927505BDA7B162BC95CEC59354 +:10142000AB87EF4EBAD3489EAD78690CBD43765F6B +:101430005A603DE21FDF730967E0BE8B95F499D3D4 +:101440006525BFDBE9FA25B7FF0AED0CB7749D45AA +:1014500051DA878934779C5F0876F72F9AC3942AEC +:1014600045C130EA152593D1BB2FDEA23ECA7B676A +:10147000F0FC72B746EBF4CE80FA8675A85EE8C73A +:10148000B0CED7F03D56F2D76DA4AF74BF3FD9CFE1 +:101490000F79BDBBF7B184BF0F7E349D1BEF6B4B43 +:1014A000A17605E8A8950EECD7CF603D164CCF6726 +:1014B0007D94EE620D0568BFBF610D5BF0B7716E84 +:1014C000DCF5EA0D388F73CB9CF41E0EC601DC866A +:1014D00038C089346F1EEAEBFBADC1F5C770DC3B49 +:1014E00055867A73F19C4BED280F168F57FC7CCBF9 +:1014F000121C788C076C4EF7733D2FF488C21C8544 +:1015000050EFF2BB0B4BF17BB6D240FA367B9157D2 +:1015100042FDF8BDA0B78CCC32D20B199D8A5FD3A7 +:1015200010345A35D6CBEC60FE18D49B5B00FA120F +:10153000F5FB7DFCFE7B41D1D8C308A711CB62929D +:101540000DEDA68046E7410ADEBDB01BEFE7AF55C3 +:10155000613EA84FB72A824EACE4E7ADD8AC909F6D +:10156000B7E225D55188F9354A090A120FEECB02A8 +:101570005D78ABB83E2AD83A368AF6C03D92771BE2 +:10158000F9556D363FFA550F083AD88A740176D36B +:1015900089ECF655F8A4C478D70E19CFD59F937966 +:1015A0006015A613734FC8189E995C28B5E2FB001E +:1015B00025C5F9163C9F3CA5ACAA15D3F219759622 +:1015C0004C48A7D64878ED85FDC55D4070B86AE9FE +:1015D0009CE368E754795DF43E4CC1B48F17A03C9E +:1015E0001EFA3D9E4DF4FB1F6CA9F93D9EAA0C17F7 +:1015F000ED737A91CEF32925BBD33B3F258A740E38 +:1016000076B684FBF1E12AEEA7E5066212EA4368AA +:1016100027619CDD1B7348E8478D08F44840F36C54 +:10162000C44A46E7CEF202BD12EED7E42E33D3F918 +:10163000F0D4D0F76E5847DECA0ED3770FEE1B02F8 +:101640007C2332973FCEF4901BE9C739A920BD55C2 +:10165000E371C239C509BA7943D823BFF5C8E23D61 +:10166000272EBF753B56B757DBBE7F302A035DEF91 +:10167000EEE3F79EC38DE23DD8BE9885E2533F9DD1 +:1016800043F49827E2618BBEEC6AC3771B2EB7F553 +:101690001D4A4586B999DB5B3B1D66FF78BE87CB4B +:1016A000ABCB44AAAE058D3FD9F0FB2DF807FD3F2B +:1016B000D1C4ED75F54FAE8EB4541856CC77D26FB9 +:1016C000BCD5B8AF9D1FF31EA4F4A8480F432ADA77 +:1016D00023E271AAAC9F38F88E48E611ACB7837943 +:1016E0008F780DA95AE0BD18CF75B1DFC9842F9648 +:1016F000CBE85CF38E48FA4E3C4FC1C02FC1FBC40F +:10170000797766521EEAAFA5B8DDFF7232F43BB4BA +:101710004625E0E8673F71148BEB7399DE0F0EF3FB +:10172000BC9D75B4201D4DDE6FD0F70CF59A393F86 +:10173000A5DB9C2FEF31E7A71E37E75FF270BB14E4 +:10174000BC9163853A1CE0FF46C1FF1A817134B138 +:101750008F3BAA91DB1167DA3D66FF86093B6889FA +:1017600040CDB9BD66BB6389B07F9624D913275C91 +:10177000DE2BEA200DDC1BA2733AA1468B5F823977 +:10178000FC79EBD763B81DD4978571AEE14834304E +:10179000DFC577C6E39BE17186F8E6DDFED71A0E5A +:1017A00041FEADE3368AA1CDB21CED6E46BD74B9E3 +:1017B000AA11DF4D5DB63D05E3D76FDBE8B795DED7 +:1017C000D2B46164C776AB8497D5E2FC9FFE7EB24B +:1017D0001EAF5B2EE8EF461D5EB82146719F580A8A +:1017E000DAE793F733569C640FF2F2800BCB4B622F +:1017F000C9E501575576FC4928100512C1BB5CD8D4 +:101800009F986F027D5276CCFC6EE9B005E6BCBFB6 +:101810005B253B75120BA6A27C46D71BFB9924E0E7 +:10182000EC4FBA4F3C49ECB74F4AFA9ECDF8FE6CEC +:1018300076992B1ACD3F731F7D9DD620D1FEED22C8 +:10184000F048A0EA6A8F7807B1981523DE67E1EFC8 +:101850008D209CDFB0507CEFF213E3DEAA43BE7E06 +:1018600095EFDBADCED736A05EF2BECC7F67CC9BCA +:10187000C24A4A5C89FDF65F9EF633DCCFD6E3A40C +:101880008F373386F2BDABD9CE50BE3FD9ECA5FC25 +:10189000BE661FE59F69D628DDDF5C44E973CD7E17 +:1018A0002AFF4D7325E57FDB1CA07CACB996F29E28 +:1018B000B4AA873C00EC77A11EC66D9D25FBECB851 +:1018C0008F71F935162FD259321FDA6E9B97752515 +:1018D00088B69FDEFDDCAC2C80C75B2B2D145778BF +:1018E000E89EE766B5149AE3B5C6B875225E0BFCB0 +:1018F0007B0EC56B43765029DF88FDA478DCF606A5 +:101900001ECF1EBA1F1EE7C6B8AFDA5F3F222EBE3B +:10191000BC83C779975776D0BDFBE565DC7FE93896 +:101920006E7E77D90AFD627EF9BEDBF8EF5FAA3DD5 +:101930000DE44796BB841F7907F995AD5BEC6C55B8 +:101940007EC29FD4FDC864BBDEE09F9BF40246705C +:1019500090BE9C7689EB3F16F76388DE7EE4E1F566 +:1019600026785F3D885B5BFB319E04DF8B7D5F5497 +:10197000F37813CF4FD2D20EA51BCAFD45253333C2 +:101980000CF922FB89052D187F5A7715C5A30ADDAE +:10199000A507330CF1A86338208F3705508EFFBFA1 +:1019A0008E477D2CE228FF90F56C3AC613C28F2932 +:1019B0000CCF0FBF90F5EC70F467517F613C0E7156 +:1019C000CDF505E3F7218BF8EFD6C5F58B26D1BE13 +:1019D0008F41BF1CA1FD07A15FF2D2C2B213CAA3FF +:1019E000BB98BFA51FFA36E8190B9DABD19866AD21 +:1019F000C0EF8CFC4EBD1CACB0187FC79EEB492AD3 +:101A00001F8D7A40A677DD0DFD105E8BA2063C335C +:101A1000F4D3CCFA66629739FF5FA5CF74FA5AAF58 +:101A2000F4D079B0F5DFF54FB78B5375791E9FB7BA +:101A30007C7A6A021E749EB300535E0EDC7300D77C +:101A4000198AA8A67197349AF38B569AF30B979933 +:101A5000F386F184DEFC81F970E00DA3BEFE40BC8C +:101A60005BA1EBEBA52CFF02B4537EC2FCF46EEC41 +:101A7000B51DE67736DE409D4A7150FE3B6EF5E2BD +:101A800077DB58CD31DADFCD6FD2C84F98AFC3279F +:101A9000CCF5B81D2010FF9D15C3F8F917C92B22EE +:101AA0007C5D267B20F95DFFFAA4DF85D392E212EC +:101AB000768DFF6E5E5E53721C354CF8C4F1F0F704 +:101AC0000CCE9CCF0F1B57EFEF24E811849BFEFE3A +:101AD0007C9CBE955E09F72FEAF19D53845F130B42 +:101AE000EC207BF147744EEE4AFDDDA330233DAE82 +:101AF000091E6915F04A8677FDA2D76B11DEF565E0 +:101B000032C51D596301F134D16101BDE76EC5F2E3 +:101B1000BC7512CB9058FCDD942B451FE9697E7A89 +:101B2000EFFD64849F1F3CB9685E36FA073ABE0138 +:101B30001E27393CF83B24F98DE677477EC2B85D15 +:101B4000C0C4EF76FF2449FFEBF8AF6706FB02BE87 +:101B50008FC24770B250AFF0DF5F5E8EFB88A85F28 +:101B6000183F1AD7F1C1E0FAC533D3DF81F73AFB4A +:101B7000D2640DFDC5C852A5768739AE673D8D414B +:101B800033FC777682DFFE2CB31A8C1FBC8EE719EC +:101B9000A1FDEB3FCBD8814F50BCB960A61DE9E356 +:101BA000B534FF44B98413867D06E41DFEC718E4EE +:101BB0006DAB7B2EAC1D99C83BD77E43F9D7D3B50F +:101BC000AD98FF752A0BD7CCC07E797EB5BDF7C224 +:101BD000C3E78971406EFFF117A756877313FC8E18 +:101BE0004F07707A31F39F47BC5F9852C536E04F7C +:101BF000C0807FBAA15C4AB44BC776D220EDE6B074 +:101C00000D4A3FED5C7A3BD031ED8638A01EE7935C +:101C1000C57C8CE32B680778436EF43FEE99A5787A +:101C2000D10FFA8FCE237BA875D7B10DF83E6C7219 +:101C30003B98768B3E7FB9FFF947B1DC38BE3AC896 +:101C4000FCFFB3E131547F5651FE83E707D557655A +:101C50009FC57A617EF8141FD3426E79B0FEC067CB +:101C600058D5FF7A3B93FA4BA3F9F942EB079DDF76 +:101C700000FDC17A3718FBFBBFBD68D36800800048 +:101C8000000000001F8B080000000000000BE57D35 +:101C90000B7854D5B5F03E73CE3C92CC2427993CBA +:101CA000264F4E42A241034E428241239E40A05104 +:101CB000790C15246A90E1A5111122DA765AF166A1 +:101CC000300F02C23578F5D6279D2078B17FEB1F03 +:101CD0002DB7E55AA441D1A2461A5B8BE8D51AED7F +:101CE0004B7AB92545FDA1AD7EDEB5D6DE2733E7BB +:101CF000249304EDBD5FFFEF868F6F679FB3CFDE48 +:101D00006BADBDD6DA6BAFB5F64ED24296EA9019FE +:101D100063BEE076A992B17F9CADA85B0BA1EE6299 +:101D2000AC3793B17CF895153196329D3105DEB311 +:101D3000C94A648F04CF15E676543056C094F0003B +:101D4000B4753316FE1C9EB33B783D9185239FDB13 +:101D50001853970F3C689BC8D8B15235D50F8DEEFC +:101D60003D34FDB5CA7478BF45F22740F3447B97F4 +:101D7000E42F63AC7A5557AD039E3F7C07EB611AA5 +:101D80009691041D9E3F3C1049D0E0BBEAA65D5BE6 +:101D900018BCAF6EF3300DC699CEBA5A55789E7AFC +:101DA00099128840997299A233802F35F592C7E530 +:101DB0004284D7C1B07D9B5AF33883F66D0E7521EE +:101DC000D6C35F676C0FBCCF5FA52EAC83F6F9213D +:101DD000BBDFA6213EA2BE51F68711AEAF0D4A5A17 +:101DE00019223F282D9C0C75490AF440BD4D57A877 +:101DF000DFC4BBD82E09E9C498A64C632C1B7FB363 +:101E000061BBAE4D33914EAB611C28B2F57DDF90C6 +:101E10009219FF9926E889F45698E680FA4382BE23 +:101E20001358FF21673AD28F7FC758BFB4D00345FC +:101E30001B3B5C9C8974E63FD948DF52FEFBE7F010 +:101E40003F5FB5859D53A03BA7BA03E162DF501801 +:101E5000CE0F13F342EDE4E1F5FCBBFA5359D9D8A8 +:101E6000EDC6AA035C8A2B6D1CED0696CF65C948AA +:101E70006FE537B1F0AF605037DA013DA70FC4D43A +:101E800079E146BA4D204A43F9CE152718E05B5D4B +:101E9000D6360BE19F60F99EB12EC6AAA2FCC17492 +:101EA0004553E17B497CCF3A028C013F3A99BFD33D +:101EB00031111F36AABFBB90DEDB3E877227364446 +:101EC0003EC967C4E7D6EFA5D0D6008ECF66887E20 +:101ED0001299CB0572E074420974901CCC958D72F6 +:101EE00001BC60C3F948B64590DF36494CC1E7D123 +:101EF000F106188EE77425B5FDC60BF2A1FA5D0850 +:101F0000EF663B6BE8417E06C2F6E3FC28011585CF +:101F1000AB15DE97233ECC6F63C00FB7AB1CE7CD8C +:101F20001EFF925A84F7353BF14DAB0FDAC177C9EA +:101F300049DA5296CA588BBAB0DE054CF7F399F0DD +:101F4000F212C6EEE9BAAA339C07E39ECD65C1A999 +:101F50004033FCB91CEA4A33C3F19D670B4CCF9F59 +:101F60006F612C787EB43ED35D5487F0EC528118BB +:101F7000198CCD62FE36FC6E964B66C19879759EC3 +:101F8000CD6641EF48FDE7999E3FDFE26241E77889 +:101F9000FA4F6241576CFF13E3F47F9EA57F75C42F +:101FA000FEA3FD7A4DFDB62B8CF448B82189E6DFFF +:101FB000F8CE289F5567FE8B0AFC75CCC19A501F3E +:101FC000309FBF5F07FA6FCE4B2FDFAAF17E907F65 +:101FD000E6A4A7766F85EFFF4DB5111E7573272A0E +:101FE000A81F589E3238C4AF20F77304FFDA80234D +:101FF000907FEBD2ED16FEF72B010FC26D7D1E23F5 +:1020000047327215A371ACF0DA3C95FD08CF86A576 +:102010004ECD5938FCBD51BED3C266149730F6661A +:1020200042F352E667ECB8BAD2D55E0D75D44139A9 +:102030008CFD41FD87FA30E0FB8EC4F9B33DFDF91C +:1020400092E5EEF8FD352A4CA9AE18E5BDA3B7041C +:10205000F57EA38D057B88AF8393BFEA89790F084E +:1020600056935E89903C1BCF97364B338A63F8ECCE +:102070001D1BCC0387A76A79D9E8F0D4A48DF2DEC2 +:10208000D95B45F0C8AC391E3C351563C3F32ED27D +:10209000A70CE1F979C968F02C55387E71DF3BFA5D +:1020A000893E4B913E65C3E159CA387DC784C7C696 +:1020B000F914E0A91A6DBE109E9A51E66BA9B39F60 +:1020C000E8B314E913079E9AF1CC570B30D7F9A85F +:1020D000E79A83A83F13CBF7B92682BC2D5E2AABC3 +:1020E000921623CFB75D9DB10478BA3969FFEC0C25 +:1020F000E0DB37EF90497F31B67F762D2CC13B2452 +:10210000AECFAA766CEB44BEFC68EE061FC9D7A71B +:10211000F03DE8EBEBB129F47FBDC2E5F1BA3C57E5 +:1021200064530CFFEF04BDA6835E8880FEC1721766 +:10213000E8091DE0DADDE2A3FA132D1A957B5B4A6C +:10214000A9FC2EC08DEFBFD7524D75A39FB2264973 +:1021500047FB63F25A49EF1E61BED7A44A24973B5E +:10216000B2D56B57A19EAE4DF4EF413DD17429D34A +:102170005DA25D1102DBF37C22BCDF7E0D2BDF0A4A +:10218000B50BF672B8D3EB3223B284743ADCDF02BB +:1021900075E762BB26411D6439C0F994B96B01DF54 +:1021A000E536A17B408FA8D06E203C7B37EA9FD5D7 +:1021B000A9769A8FE579471AD00E598EEB30AC5F2D +:1021C0004E308F50CFB13512E9B9609BFD8358FD79 +:1021D000721DAEB3D03E23A0989FB36D7FF226133D +:1021E0009DC99E59E232545EF9CB55D05F7AB35DFA +:1021F0008B705544EB5F469D23D20BFD2F7EFFA7CE +:10220000AA0DC72B57C8FEDA91A066E37A0672C5FD +:102210004269040FE9814606E319FC5288E399EB11 +:102220008CDD4DF830B9312588FA1EF960FA70BAA4 +:1022300087DED9D4763886EF96A57AD271DD059BF4 +:10224000A10CF5E527ACECDE3A7C99974EC69BF5E0 +:10225000FB332DE1B6C340BAEC548E8CB12E5BDB60 +:1022600019F034A3FEAD42BE1A9CF19B92287C0566 +:10227000CA8084EBCC84103C8F8187A5EB8CC5D8B9 +:1022800075F1F0D8299DCC66A3C86D01CC873C853B +:10229000ECF0DFE13C613768875BF16F41FC9362F2 +:1022A000F1AFF959311B495EB41D75282F4764FF02 +:1022B000262D4A1F831EFFD372333995D3957EA6F0 +:1022C000097A81BCC877FB35E2DF4C1BF15341FA38 +:1022D000CC13CA14FEFE0313BFC4D4016FF9F91363 +:1022E0009206F6FC775A8ED03C19E3C1FC48ED65A6 +:1022F000D8EF8084FB94825E6807FA4D0B315B1B3C +:10230000D457613F38AF16FDA66D3C629AD73309AA +:10231000C953580AF4E366A5B85FF2B1443FEE47EB +:10232000422EFEFC1B89C9BBB03C93501041F9FA08 +:10233000861C0CE27EE08CADC75508EDF6E504FF87 +:102340003515FA4F4A3D1C40F0DB332F29453E6AD4 +:102350000CDD19A803BB4CF5B2658111F8C15847D3 +:102360007B05DDDEB1F7E6A7023E1FE6CCEC4D1D96 +:10237000C12E680CFD03F53743E873EBFB37453F8F +:102380008F88F575C9ADCF9C7802F049D4CA2A90E0 +:10239000C7124BFBE74E05D6E8FCD9C40A34F77FD9 +:1023A00026DA03C29568AF6CC80A1E8D1DD7A5A991 +:1023B0004A90F455CF747C3FE3AF654FFF0CFAEBC6 +:1023C000BCCAADCAC0671F55CA9536DB7038A09F1E +:1023D00037911EAEB35B89CF8D7E0E260C3C827684 +:1023E0000A63575F711CEC9483A903B912D4DF4BC5 +:1023F000ADB8221DF8F560C6402EBEAF97D896C383 +:102400005807DEC5F5E2FC34B6250CDFCFB8F2E4A0 +:10241000E3F7A27D7E9EC38FD3BA4532CBF7956991 +:1024200032E173659A44F36DD0A16FEDE87438958D +:10243000CADBC7D0E1D4487468CCD507F13900B9FC +:10244000602A7CD2D9C202AB00463DAB27612A4C40 +:102450007CB6D6F3E4BD0CB7E1915A5B21F5731657 +:10246000DBBBCE76FE494E8EF6F37A8EFE67A44F26 +:10247000DFDA9FCF9D0A7025F4C97E09E8E92A6654 +:10248000E1A464FAEE734E3FFE9D9EA52AB6C2E813 +:102490003C5CE7E3F275A397EBB93461FFB43ABA59 +:1024A0007C0BA1548BFFF97615BEEB28EC6A1889DA +:1024B000EF98D746DF8398EAF85D9BBACBB522A6A2 +:1024C000DD0441BFA66C3D390D4A87C4D7ADADD5FB +:1024D0009C6EC97DDE0ADA9715B3CAAF825C5EE2F4 +:1024E000E5ED01EECC3480C731BD8B9C0B09C51CDA +:1024F000DFAD65F731F40724F8EEE765F1000B0274 +:10250000FF26B01E17CE77C97D295BDAAA110F7F8F +:1025100029D6E7781FDFA2805EED46DB04EC581D6C +:10252000EAE11AD063B0FEA5A19D9FE3A0FD991535 +:10253000AFF3BC9C9FF52CBD04E1184627E7C0E330 +:10254000F7C2F75B2639FC61807F86ADAB6105F28F +:10255000D3956E5ADFE179432446AE96083A2C496A +:10256000B3D3F75BFEECA2F7563A8F97CF6AD286C9 +:10257000C95B4D5AD5887C76193E1FC6672971F90B +:102580006C76DAC87C3667243A58EB8A8F85514ED0 +:1025900095B31DFDBC74BD8FFD005B8519F4AFD4F0 +:1025A0006FA37EE5B389D44E3EBBAD1FEB8A1A64A0 +:1025B000384E8614BC06E1657B2505D747322F349B +:1025C000D4A73ACDF36F53C7394E71C758E3AC1C4B +:1025D0006D9C8BD2F83833AE7407719D9A21EC70E4 +:1025E00083BEB25721BCDF48E3FBBB78F271B197E1 +:1025F000BF8F271F05DE21F9D840FC3E867C2C10BA +:102600007C09F3F4ADD1E563379589A55C3E12856D +:102610007C147859B8DE87F07279D892F6E816F40F +:102620000718F2D2E87DCA242F8BA18EF2120FBFB9 +:102630006A811FAA16A4CF6B957218EDBE8FD8E4DD +:102640005D68B72657ABCA0A78DE9566C0ADDF4B2A +:102650007467030CF9B69B0D1E72A21C564B2437EF +:102660009E708FEE427C591743FFD783426E76A24D +:102670007D8BF6F3798CE495295D0CE96195E38413 +:10268000E25E5A2F87EC0C41AF9BBC81EFE0B8DDD6 +:102690006C6012DA39C67C58F1D92DC6D372F4DDDC +:1026A000D8DECADF63AD1B3F15EBC64F453F697FE0 +:1026B00075358F24E733D63D7BE28951FA392CBE3C +:1026C000FFB1A09BA1DF130DFD5E3AA4DF7F8C70EC +:1026D000BAD66EE5FA3D97EB7790FB0323CABD1798 +:1026E000E45E1A51EE0FC791FB1747A2C3DF40CE3D +:1026F0007F81E3C593BFEFA5F1F1C6A277AA97D377 +:102700003BD5FBE5E87D5AD0FB842847A1F709A219 +:10271000D3707AFFE11CE97D3A0EBD3F4A1B7D3D37 +:10272000FFF348F3EDC27179BF9FC5F6AB4F80F759 +:1027300012F2B52AEC68ED36B49B1F01BB0BF7878C +:10274000B0BE49DEFF9EF94DF18E32BF336CDC1E08 +:10275000BB396D0DD9637F83F1F2471BEF6DA1CFBC +:10276000C75AF7FD828F802EC5DE8CE17AB21B4CF2 +:102770004AE41B3D2B78A197EBB12B502FEDFC5673 +:102780009A8471933CBD5742BBBB448CF7589A4620 +:10279000FD19DFED547A2505DB37AB525832F5577A +:1027A000355A7F563800BE6A6C7F93579F8EE5EE90 +:1027B000348BFD26EC88EEB4AE26D4DB73849E9E6B +:1027C00023F4A151FF205BAFF5F2F5A40E4BB0C38B +:1027D000EFB01571BDCDED75AEA70D7C6C81081BFA +:1027E000C07505B673B82E46F5FDD23D86BE5FEDC9 +:1027F000C6F68AB0E3F47908DF6CAFCAED15D15F95 +:102800003C381B853DD928E6C1A8039CD70838AFC2 +:102810001D0D4E2B9DC60B6F7B14DE95DEAAF8FDB9 +:1028200001E7101EC6BC611FB83FEE6BE3F2BAA011 +:102830006F22D96BEB87ECD8C03AEC4F4F520F7B2D +:102840002988A02662BF8F08FFF1236BEFA3B8573A +:10285000F746B51CEDBA9C26BECE696B0BBA71DF8C +:10286000F84D315F563E1DFADED133696A19D1E564 +:102870002EA4CBE535DC6E4801BD81A3A1FCE3FEAF +:1028800032CD19F6E1BEB6530AFB5620FF5F017642 +:102890002A36702F1AD1FF3164DF0BFF86812F7328 +:1028A000578ED17E13B55793C2CD817369EF0C93C8 +:1028B0007D11A5A3B79CC8E51A3CECAD449F432A03 +:1028C000F9C51E137C0BF3F420C9BB3B9DFC260607 +:1028D0005D87F7CFE7AB36D02C219D134A6128786E +:1028E0009A1008A32F84D9B42E3680F65131F00700 +:1028F000FA35DD6F507F5138A64E35C3513E15E194 +:1029000088F6DF61C0F35DE29B71C263B48B4F1741 +:10291000DECEF027C4F31FECCB091E403A8431BE53 +:1029200083F3FA2B4FA495006EBE283019CB5EF2CC +:102930009B5097F073B9CB4DFA937DAA9C8C8D4335 +:1029400080D664B9E4BF1D8A4F499F279D131CAFF1 +:102950008D06C778FD17C785DCC4F82F8E7BAB4684 +:10296000682FFC17C96C202CA31F4865643FE290B8 +:10297000B9155C7ED13EFCB5E0979438F6DEAF85A4 +:102980007C19FCBDA47D262B42BFA28B853D69BC72 +:102990004CA920F9FAD04BEDF83AAB5F95AAA01FED +:1029A000D6C0C7C0CFE8F71381C710BC0EBE7F7872 +:1029B000C7CE1A9E7673FC2A62E1C9A9FD24164F80 +:1029C000033F2BBC475A42813A3BC6B582547A43F7 +:1029D000B300070E674205CD63D85E81E1E5FE1BBB +:1029E000360008774941960E70DF7ADE897FF4035E +:1029F0007DFA5D5337A11F76FD5CF2218F9B3FBEB0 +:102A0000285F58F9E18C4D7D2708E3B6CE2E6F483C +:102A1000470D159E7A651FD81EADAFF98FBBA19EDD +:102A20007BFFD42B7D2017ADAFFB1B3260C9989F75 +:102A3000AE6EDD06FAA375A1447A98857F90588B17 +:102A4000EBC615BC5E923EF74AB41F5AAF95C89EBE +:102A5000B800BEA7FAA178FEDA76BE1F4019047A44 +:102A6000B7D64AA3FA752F4AE7EB5EEBBCD1DBED94 +:102A700036DA2D951A46F2A719ED3667F07621DC85 +:102A8000AAE037676DA4875BF50F5E95A07EA886E8 +:102A9000C7E9D8E15AF20F5F9E2026A6AD96E6E977 +:102AA000A8981390B71A9CD7172E73D27AD1756550 +:102AB0006204BF3BF469DA36D4FF5D7A11499F1393 +:102AC000F8C15DC14BE4673BC8B92CEA82AF67A58A +:102AD000939D2355A6533C5C55505EE3F1DBCB251B +:102AE0006F16A03D057C7515E72BA90BEDB07ED7C1 +:102AF000C46D7E1877FD7ED9EFD4E2F3CB70BC4F66 +:102B0000BB717DB6E2F7B36A3941720FA703E07D6E +:102B10001D8E7B306FB00FE7E668ADCD76378CF752 +:102B2000C274E7A4015A07038DE9B8DEFE82AF7BC9 +:102B3000E3C06315B63F773CFCC78388C7A70EBECA +:102B40008E0A38E7C7992FD9F3B11BE143BC70DD7A +:102B5000013C36201E72FE401EEA0F03FEF1EAC958 +:102B6000BBD287F979EF4A1FC14E30F408CC7338D5 +:102B70009DDB4D1FAF67683773BB299EFEDA9E6EE3 +:102B8000B63BC6A1BFB6C78E3F5EFD15330F0F7CA7 +:102B9000117E829926BADB05D9A1AAA9509F81BFCF +:102BA0006B98E7C1069C13A37C2F9D65BD9E64CEE8 +:102BB000FF98AFD11A0CFABC72FCFEF7E5049E40F8 +:102BC000B8ECE90372F01CE6E7E9E1F3F3F468F32B +:102BD000335B3ED99A027AF2748D44F8EA67012594 +:102BE000D2BBB09589C167866B1BED8F52AA610E6F +:102BF00063E20EA9BA8B2931713A6FBD6AAA6704E4 +:102C00007CA6F6590D9AE97D76B0D4F43EB7C96F2B +:102C1000AAE737579BDA4F08E9A67A61B8DED47E77 +:102C20006267C0542FE96A30B53FFFC1A0E9FDA437 +:102C30004893E9FD857B9B4DF5C93D2153FB8BF600 +:102C4000874DEFCB7B3B4DEFA71EE932D5ABFA1F8B +:102C500034B5BFF878C4F47EFAC05ED3FB4B3FECCA +:102C600031D52F1BDC6F6A3F830DE5614994F70670 +:102C700096A462CC93CDF49EE250A7813131BF2E51 +:102C8000502E91BF18D8ABBF18F4C3D5BC09BB5A9E +:102C9000E447B1B976CAEB08C33F5C7703B1791E4C +:102CA00085D8AFAA60DE99EEB79BF2A86688BCA86B +:102CB00019967CA85A5694A2C1B8338EC82C02F536 +:102CC000B963F0D570BCA431F062FE5EC4EB973CF2 +:102CD0006F8E85F57ECC578B87970EFF10AF05F86A +:102CE00012BE9B7F96517C78189E029FF9D59282E6 +:102CF00072370C5FC6FD01567CAD71CF820C11F7A7 +:102D0000F4333FC6FF66CB6E82F7F41BA057587CA6 +:102D10003AD4865DB4AED6EA5204E966C43F87E190 +:102D2000EB63513E01BC1234B31C26959AE5D0E307 +:102D3000F78DCE4761362ABDC7A2AF06FFB8BD36B4 +:102D4000A8207D67D448ECE1C2F8F45DA098F38A2E +:102D5000C64BD72B32443C5DD0F51356B3602AD016 +:102D60004F5F90AAA07FD5AAE70CFAC13E69414601 +:102D700046FC75A731E39CEDE6C68C2F6037C7AEE5 +:102D8000FF195F60DD8175E1661C972941ED5CF6F6 +:102D90003777640CDBDFDC110BBF158FA1FD4D0D08 +:102DA000F78F1BEB182B96487E3AA6B35DE8C70B4E +:102DB000678CBECF096758F739A795D87D8EEECCC2 +:102DC0004A44BD0076423BC263EC7B3EAAF41E46F9 +:102DD00097E09DC23F18C55FEF44BA8D17EF7F1A89 +:102DE0008EF73F8D86F7C14DDC8F71F035D9BF0B63 +:102DF000467D315DEECD007CEF6393291FC688C709 +:102E0000D40719975365C75EDCFC01FC8F61BFF5E1 +:102E10005AAD74B31B9FDF46653C7EFBEEB9F3DB16 +:102E200077BF24BF3D93F105ECCD2FBEDF6A3E1E78 +:102E300084B2B59DEF87366FE1F9699B37F1FA2FC0 +:102E4000055FBC20E8B02393F3516D7235D9B7ED1F +:102E50009287F464FBFB7C9FD16197228CFB995F86 +:102E6000C1F93F9C3D2D05EDD68FFA7EE10EC6ECF3 +:102E70007BDE11F81F13F8BFFBB521FC7F4EF87FF6 +:102E80005DE0DFB0727B9509FF3C95F435EA1939B6 +:102E90008AB743EDA1BC8F39B29BF06B2B6611CA88 +:102EA0009961FADCD931FEDEB63CAE9F93503F43C8 +:102EB000DD25F29D40AB521E5327FC233D2DF29B96 +:102EC000ECBE98FC228671649E4F93C462F29E0A07 +:102ED000A3ED132CF94856BD78D2D08B0E96C5F5CC +:102EE000E2C6CE0B09AFA02F765F65D58B46FDF00D +:102EF000C0C4AC8111E4C82853AA5DADC531FA3A0B +:102F000055574D756FBDAF3536DF2E23A099DE675F +:102F100035949ADE6707FDA67A6E53B5A97D7EB318 +:102F20006EAA4F08D59BDA178603A6FAC4CE0653BD +:102F3000FB92AEA0E9FDF90F3699DE4F8A349BEA89 +:102F400017EE0D99DA4FEE099BDE3F85BF901FA06B +:102F5000E82A1DE8F414E6F7C1BE3FE79F275C8529 +:102F6000FED98EF797F8301EDA9E718D2B961FAD25 +:102F7000E5E10CCEB7F1DE1BF27BB02510A82B618A +:102F8000ACB7A5C124CFF542AF1D6E69A2F72FB52E +:102F900034D3F38A4C2E4F4ABAC8CBDF6F7BDF990C +:102FA0008CFCDB1C46FECC90821599A847779BE3EE +:102FB000146819A1BFF0F2B3305E0CBEB5ECDA4074 +:102FC0005D0C3D66B9969BDECF566F36BDAF077A76 +:102FD0005C027AFB2BBEDB4CCFAFD0BE69FA6E53DE +:102FE000DE8A07518E36FB1C947BB699713A1A74AF +:102FF000DDAC703A1B74DDBC7F05E5570ED19F7DBB +:10300000E52A3C9F61D0FFCACC3A41FFAFF8707F00 +:103010007B3815E83B0A1F8F455F2B5D8F88785DF5 +:10302000BDC31C87DF28F49551825E5A8AF47DADBA +:103030004FFE3848D88EEECFB08E6F1D17F4555323 +:1030400026F4FB9F256FDE781F1BAEAF43993CAE85 +:10305000566F830D16D83DF5F6AE7AF27B8B7DA9BF +:1030600022719AB767CCF163DCFFEB823F18FB1645 +:10307000BDFF9A312771E8A48022E98DD14352E146 +:10308000E206D4C3F5190EF2DFD58B7C01EB776B2A +:103090003279DCE4CBF2D317E623C11F061F19FCFB +:1030A000114FBF2BAC99CEC5286E078F0346E37A2C +:1030B0000F92BC7C0FE465DA7079B1AE8FD6FE4317 +:1030C0008CE7F333378FF75143B4FF8F78C96E8A9B +:1030D00047F7CD2DAAAEA0BDAF6A29742E43E47583 +:1030E00083C1EB8BCD7BFEEF6A67D48D7C436BFB9A +:1030F00010FE8AFE279F9BF04232F34348C152CC18 +:103100009B3822E4C1EFD39F43FAF97D819F101DC4 +:103110005DC152A41BD40F515D1DAABF807CCE7C23 +:1031200050C7B881AA8E2B3E01DFBD42DF2943FD87 +:10313000F451DDCDFB81FA511A277DA8DE4FF53C15 +:10314000DE7EBCE3C4F80F39DEFD32E52D7FACE84E +:10315000296940976B422BC90EBB367433959D2D60 +:103160006AED6F808E6FB704DADAA0BCE6DAA92ABE +:10317000E6C35CBB7A259546FFD7A3FCC0F78E4219 +:103180002580F11FB9D016D84DF2CBE35232983BCF +:103190009CAE6D54BF0E08BD11ECE5EB9B16B6B5A9 +:1031A000C5C8810BCF1D4DC4FD9FF297D8FD946E0D +:1031B000D3FF3333262E34169EC3F1039D04FCFA4D +:1031C000B1BB381226FE9DA98E145732F08CD7BFA2 +:1031D00081E7F071399E06BDAC7CB7A5B842C575D4 +:1031E0005429017B2B99FAE1F0795C429E78BBEB84 +:1031F000A0FF67903F15BF86FC799DD04B467CF4BD +:103200003A20D1C6B4E878BA2D909655359C8EE315 +:10321000A5533A8CD18FF3A474511CEF7EB7510F94 +:10322000533E54A098C7F51234FEDE80232B18615C +:1032300018074CAA642A3EB2613BDC1F24F5EBB6AA +:1032400072C62EFDF66357F926C1FBE2A0CFE6A7B2 +:10325000FAAB4A06C6ABA18E39DEE1C75E3D5C83A0 +:10326000FB28F502CC3775B53DF4EA91CB28FF4930 +:10327000D8250FBD8A7AAFDBA8638005F46777E2B3 +:10328000505D77C15EAABB68A81EC6FA4E910F7149 +:10329000E9B71F7AB58DFBB1A7217DFADA6C61DA47 +:1032A000DF304F84CE1BFE8DE38BDD65CF1C29C242 +:1032B000FD824FF19768681F33D3772BB21CD4EE91 +:1032C000255FB01EE1F16C1C2477C63D65691ED4F4 +:1032D000CFD1798858E681D33D501A11F1D508CD68 +:1032E000CB04DFC7E15A186F420D57E31A53B76298 +:1032F0005D6BB3A9BDF4208DE6C956DA2C3930FFD9 +:10330000A68CA9B8CEB68A787752298FE3AB4EBE89 +:103310009FBB3E8BAF736BB26451F2F535C5C80FDE +:10332000ADB751FB145146F16F13ED15937E69CC87 +:103330000DDE98151BEF66BD734B018EEEB6B434EF +:103340008CFBD6B6D9EE403BE83B22BF07E6697658 +:10335000167CD7E7F72606F9BCDD4A75EBBC09BC3D +:10336000C69AB778F365ECA3E2BDBFE65A99CEC121 +:10337000DA5CC10716C3B8B7EEF796635EF5B1061F +:10338000B9B21FEAEB9ECBA2FC827641AFF5B6C183 +:103390004C5C6F3B1FDD14C0D2B96F793857C3F551 +:1033A0005633C1B1FE402DE5CFDC9D945C83F36DB7 +:1033B00085E3D8A73F4DC77998FB6727E917744085 +:1033C000A1FF6A190917A1F506FAAB6E1076D09322 +:1033D000627EDE10F6D60DC6FE8C0D9D17953E87DB +:1033E000ADE6A2C0F27948BF150D32C33C8865D165 +:1033F000F7DC0F16E27E2B17FCC3FD5C90A5CE41D7 +:10340000F15C1E36FBB35633FF1C3C3FB4B2D3F223 +:103410005CECE7565BFC624B1AA2F6D0472CAADFA5 +:103420001669DC8E58E44F8A60DECEE280D98E7A4F +:10343000F333795900F03F86DF02DCC71ACFDF850E +:10344000EDACF4F8388BEFB3DF1076E7107D18B5EC +:10345000652B0292038F3E5AE961C57F886E163A4A +:103460002C57CAE76468C3E960C51F2846F45D0DA0 +:10347000F4C53CA378F49823CFB563BC78E54289C2 +:10348000EC3B2B7DAC7430F6E3063E3F37F064FE38 +:10349000634930DEAFB7D919DA5DACF7728A8F2D88 +:1034A00010ED62F0A17DB70AFFB81F537BD18B707E +:1034B0000231F17CE5D561BB69BFBE5AECD757B08C +:1034C000400AFA9101CF0FE2CCB369DF6E85DB8A47 +:1034D000D73CB15E58F7F74CE92D433BE64496F0F4 +:1034E0002B4F31FB3F5965C6887AD7BACF37F86A78 +:1034F0005968A1C99E965870A8AE823DB1C1276B8C +:10350000783EB8BFC1FE009A110B5D83FC1CA93840 +:103510005FB490B934B70BF9C346E77E16E8095497 +:1035200037FA3BDD25D5A35C6E80EE429417A1D31C +:10353000BE63196F0265F810D26F83CF41E3009F1D +:103540007D1CCB67F1E890E0137E8E296CCAB9E050 +:10355000DF91C548FE552FEBC578C8A0E48AEC92F0 +:10356000A27E3974653A405516F80A85BF5137C7AF +:10357000F7609F80FA731C7EBA02DF08F14823DFF0 +:10358000C1E0CF1B5CEE5E99F3DDC921FE30E53B67 +:103590000419FAE13A72D6F891DE1D89DCEF66ACC7 +:1035A0009360CF5E80E3742472FF9BA1E713D11E6A +:1035B0009431DF08ECC118BA0D5BA70FAFDADB0D51 +:1035C000FC1D742B6C2BB52A25F882AA01DFA01DE7 +:1035D000FB5916B29F8EED27E801AD5286705DA2B1 +:1035E00062B9C2C7F3365630BEFF6761681F1397D2 +:1035F00008E234E2734CAE8EE91FDB935DD619D33B +:103600007F11F54F7972C1ECC4084E8A75FC61EBED +:1036100097653C6B7F1D22CFAFC3E1EFD7D16FFD24 +:103620008A5CBE89D0E5FB95793E9B69DD59E1F264 +:10363000EA4ACC39EE0FB2DD0DB1EBB7511ADF1902 +:10364000F48CDA69D3FB62EDB47BEC957D47F263D1 +:10365000EC3456D9877E8E2F6AA7DDEEABECC373B0 +:103660006167DE75D2BA70BA9ED3C9C8C751C0AC03 +:103670004849A37D59184B572897F031F273BC9AEB +:103680005FC279BBD3A7F1FDAFC6E3D25EC54FF7EA +:1036900061DC679C2FC71F9887FBD2D46ED4D34EB2 +:1036A000176B4B48C3EF38DEC67843FD96FA25B555 +:1036B0002CBEBF7BB3EF9CE3FA9B4792A33E5BF328 +:1036C0007B77A1DDF88ACC302EB1D4F74D7A6EDD50 +:1036D00087EDF0F1F5EE2E29B8C357857AEC174B3C +:1036E000BF81FE937D4EF22BDFFAF513FF58A52123 +:1036F0007D60BEA7D2FEEC01F407CB2536B2CF3BEE +:10370000F3B9DF47DE24D17E628BE6A8DF877648F7 +:1037100066ED4F102E56AFD9909F4F27727E3E9682 +:103720005947CFCFBCBBD987E771127D8994072950 +:103730006F2ABC97EE637859A67B123A1219ADD75F +:103740001D0E5E3EEDE376E0D382AE4F8AB2D31E0D +:103750002C6D2EC37C6A9CDC281D5C4A98EE1B7085 +:103760009D55E8B92CEE07E9480C967E2D867E46DD +:10377000BFAEB320C45347FADE41CF112FFA3E8DBE +:10378000C363B47BD6C7F3529FF571BBCD75368941 +:10379000C6EB4803B8DCB1FD24F3E742CEAC72526D +:1037A000E29B7510E97F2C53FF898FF4EA801DF5A9 +:1037B000E80DBE23C7F15CF0D87A90C7233C9F4A3E +:1037C000BD13D02EAF95237717E27D27EABC4AF4CC +:1037D000AFD4DA290FA6BF34DD8371A5D715D58301 +:1037E000FBF27E31FF81D932EDAFE1276311CECB01 +:1037F000EC95D3B8BEE3F157633D7ABDEC99FE99E1 +:1038000078CE236CA7FDC83257388270C5D83F22C6 +:103810002ECDEF5DA1EF00CE6575B29E903C829DEE +:1038200028EE4F31EC4F50138731EEFE2B517DAF18 +:10383000EEA3C508FE00531DB3A4587B94DF3BB232 +:103840005AB45B1632DB4F56FB6A45A5FF25AF869F +:10385000F4E809103D262B2417E3B53B4152884F6D +:10386000EEA9FB810BEF9D7949E8054FDD2F74D45C +:103870001360272DC67B7316D4C96A2FB4DE16B227 +:1038800031D4A3DB2BEDB4BFD85E3AF0F2E5288F3C +:10389000958A46FBF2D2FE45B3E87D958A76533F82 +:1038A0000E914DED797CC8ED8E94E0FA5EF54BD724 +:1038B000CA187ED95EF9C1245CE7760A3E0235E873 +:1038C0009E3D2D4A3FA48F464A94EFE30F7F2B91F4 +:1038D000F4D37BDB64118F61743F89C7C7E571B690 +:1038E00088D7AC7C40A2FCB49555C76AF19E9B95E5 +:1038F000ED12C9E5B28DF2FBE8275F1632DB6DC130 +:1039000066B0E734A2B3D99E13F61E74EE40FE1DD6 +:10391000AFBD67B55F0AB385FD56C12A62ED9778E2 +:10392000FB2BC37E51985E9A9D111D7F85C2E3AD2E +:103930004CBF9AE83B5B3EF9F2E580DFE9CAA22280 +:10394000A4C7C3999CFFB787DE76E1FE77FBA73259 +:10395000C9F94E07183698E79F5CF338DE4B70E8DC +:103960005B1764FD1ADE5F9AED10E79DB46FD7A078 +:103970001CBC62273E8A07972B24B36290FB84907D +:1039800044A5312F9E50025362F48D479CCFCAA8A4 +:103990001C948A62F4CB15D97C3D48DDC8F7D51953 +:1039A000954CCFC6FDA256C4EF375234F297BAF207 +:1039B000B50A9457A37D86C4F3F91DFB6BF1462429 +:1039C0003601E0C0F1348003D7B9C25012D58B4222 +:1039D0005E2A278652A92C0EE5D2FB92D0442ACF2C +:1039E0000B15D2F3F3431752BD343495CA49A17273 +:1039F0002A2F085D4AE585B0CE61BBB2502D959364 +:103A00004357D1F329A1ABA9BC28B4904A7FE87AE7 +:103A10007A5F1E5A49654568393D9F1ABA85EA950D +:103A2000A1DBA95E15BA8DCA69A13BA9BC38D44AED +:103A300065756813B59B1EBA87EA9784FE89CA4BE1 +:103A4000433BA8AC093D42EF0D7BE3A890ABF9A93D +:103A50002B549E57E3F7E3FE60671C3DDC99CDF5E0 +:103A6000F8199FDE9C5D156D278BF310D6766DD906 +:103A7000E6F3B53657AF6B22EDEF2756E0FE7E2713 +:103A8000E8816C989F758545BB709FDC22E6C76511 +:103A90006FD673A5E87E3EB58E9F8359B77F39F9FF +:103AA000D559B5775CFEA1F5D91AE747254CF7390A +:103AB000EC6C6614574D28EE97B09FEE325B3DEAF2 +:103AC000F57BCA4ED3FD55F3AAF44AF43368E19E60 +:103AD0002345A4AF6655229CFBB3EDC28FA4DF8BB8 +:103AE000F233A132E3CAABE1FD84361B6D7735A614 +:103AF000D6625DAB63A4DF0CFF4B77A2793DECC9C6 +:103B000036ECBD81FBB1FDCE9CE20ABE8EF0733374 +:103B1000F29D45B4BFDCE9E895F0FC7D18363E7BAC +:103B20000CDD8FED3B563C81765451A7FF79178E03 +:103B30001FF64F45787B84DC157669331300A08926 +:103B40000FEACF632A674924383311EAE7EF0D3FC4 +:103B50008FE5A49EC8CC24282FDCDFFB3CAA8FC9AC +:103B6000BD0333DD50BFE8087B01C95ADEAFCDF29B +:103B7000407DEA71FD05746F570D046725E33C39FC +:103B800022ADC900CFCE5F31FF26A8579FEC9261CE +:103B90001B119D7F276B7E3A665E5C5A978EF4CE32 +:103BA000BB43253FCE4E652021B56CF8FC7423DE67 +:103BB000886788DF8390A70FD23CE455B28A30CD66 +:103BC000837A6529CD03E79777047FC03CF422FF11 +:103BD0007527AAB5F87E70365377C1FBF9936DA4AB +:103BE000AF1DED45B4AE187C07F49DB4D0133B0F68 +:103BF00092719ECA64A7C6A3EF3B7F27F4BD259BA5 +:103C0000CB433CFA22EF71FFEAE872FC9F51393E48 +:103C1000112BC7D67669395CFF5BE9DC6D634760C1 +:103C2000ED89390F0673084D3D39B673A2AB33E702 +:103C3000EF83AEBF117A221E5DC938CD8E9EBF8D37 +:103C4000A76FB03FC47B243DC7C88F59487A2E2F39 +:103C500087F35F6727F75F1A7ACEB9AFB617FD987B +:103C6000869EFB702CFD25F48C43F839A27EDBC9BF +:103C7000B4FE958AF9DB90A59F9743F131B3FF7DA0 +:103C80009B4DADC5F90BCFE0F959F3AB5FD7659A02 +:103C90001FAD825F83C7489E7626974570FE0AC196 +:103CA0005E5060DEE1D75E2C93CA541B9E8F36F2C5 +:103CB000B698BADC172B67C67A1E9543831FD26865 +:103CC0003F887C8AED6F147046FB9178BECE3773C7 +:103CD000E81E32E3BB6E771E7D67B48FC7B76D06F3 +:103CE000DFB63D43EB46520DB70F52DAD2888F5301 +:103CF000EA8268D9C4F06FD081FC1BCC91CF897F58 +:103D000097E5F0F8C2FF34FF56E19E1ED7A11AF5E1 +:103D100010E6D74D80754743B9AC015AA3BFDFE722 +:103D200020FDA7313E7F5A0DCF53057AF5A23F34CF +:103D30006CF3507C4E760ED621FECC99AAE2FE673B +:103D40004356705DCE2872A02669E5742FDFC397B5 +:103D5000CF7367E3B90B3511EB1BA1BE0DFD0D69E8 +:103D6000034CD4B7BBB3BFB87FA22567C66BE89F2F +:103D7000F8205BBF0BF9764356A005E1D2CF572957 +:103D80003FD3E0E3B1D67F431EA3F2A3961BF28399 +:103D9000F79B81FEDB82FD1AFDC5B367EA72B8BEF0 +:103DA0007C38672C7B268DE409E49CCB8F119FEC3B +:103DB0001A5DCE0D783B734697F72D57BC1DC6D6BE +:103DC000865FD525FC27069C093E7EFE38612EA322 +:103DD0007D8947F85783C2BFEA2A768DE15F8D98C7 +:103DE000F2090DBFAA713F8295CE3FC831E76DA29F +:103DF0003EA238EA50DC9BEFA76E176376DDED4FED +:103E0000C1F333E1A3DC8F619C77988BBF039E9253 +:103E10005F223F52D73F70B99B97C7227703DC736D +:103E2000FF22311DE0E8FB8B4CA5D5AF3A0FBE4316 +:103E3000BBA14F72455CD0FE50B99361FCADCF631E +:103E4000A37D5DDFFB12C9415F7912E5FF1D2EBF27 +:103E500098F27BAC797F46B924B87CC4BC482B7DF2 +:103E6000962C7DD18DF3F2883AD35548FB521E87AC +:103E700034F4B1D1EE3DB1CEBDE40BBE85FCE659C4 +:103E800035D8865798B5A93C0E69F05FB67BDFCB75 +:103E9000781F63F65A6E57E6B0C826D53D9CAF1B17 +:103EA0007383BFC67E1E89C6F9FACE83F13B3511F6 +:103EB000E75B9F5353041D3C3414E70B1E23F9F1B9 +:103EC000F694231F3EE2FFC193F7C2FBB94ED8A779 +:103ED000A21E9EFA6E3ADE17D558F56206D2639E90 +:103EE000057EA334FC67D6FDE8473943F104F2A709 +:103EF0007F547935ED7FE3F9D30DBF9EB12F45BFD8 +:103F00009D3A821EB7D2DB18BF51E2FB4F66E7F73E +:103F1000BFF561D3E9A427ECB928CF6D3C4F4677B4 +:103F20004A9427F35AE5548A3730BF57C4317BF39C +:103F300062E398063CF0BC64A4F866639C3CA5BCB4 +:103F40005CBECE34DAB9BF52BAEDC5461CB7B1DC9F +:103F500029F1F3899C4F97F1581A4B12ED97F937D5 +:103F6000539EBA355E9194CBF3B1FAECBD79AAF0C9 +:103F700067FA47E0CF7874396EEFA2B8D8F1D5323E +:103F8000C37DF96BC18BB346BB7FED6DE48F12C669 +:103F9000FE90CB88AF86E64D4B1F71FE8F637E99F6 +:103FA0007D783C68E8FDF204F2733758F235660B11 +:103FB000BC57899239C3A5E8E7ED5CF1808B4DC60B +:103FC0003C8DD35561A0FB163658B50BF5C3460F93 +:103FD000F90D1A967F52B569720C1DAB391D97BD4C +:103FE000B045457E6D286CCB08C78C63A5E72A8158 +:103FF0005782E067305FEA893FACFE8FE2459C2F35 +:104000005E48F0F7C2F8AE5F4EACC075DCF07FE002 +:10401000385C4F737FED1D22FE80BA2696BF1B428F +:10402000EB4C7A23E1ACC422B175A58BFC9D0967EA +:10403000157A6E95A30B72CD7264D03BDEFC19F439 +:10404000B63E37E87D7CF99652F4C775268E6C270C +:104050007D5BB433EAD6F8B81117B67EF78D5C6E87 +:10406000BF7E149C4EFCD5E008978C477E0DFA1C51 +:10407000FB74B38AF2E212717723EEEF294DA33875 +:10408000FFB10699E21289256A37E6BE34E7F27578 +:10409000D758F78CF861BC78A0C712574C28857A9E +:1040A0000C9DADEB9E318FF1E288D679DA6199A74C +:1040B000A1F8611CB931E4A511F9B16AEC7C88253D +:1040C000E23E49EBF39B87E8FED0E26930D4ED5540 +:1040D0003615F9703BFC0FA3DC54DA29AFE9AD4F7C +:1040E0009D0CED3C4F95ED71F4731F5FFED6A25908 +:1040F000A817AAEC1497E805B95F0B72BF45C8FF73 +:10410000905F759B1C299170FF2099E2BA89C52E9A +:10411000537D5E959DD6E7EDF79747703FD3C07806 +:10412000DC6E4BD557537AE1F7B78A1DD49F6B8B62 +:10413000447125D7679B0338DFBDCBBFDD40FED47C +:1041400012472AEA47831F8CB8A14BDC0BFD42C9FA +:10415000B46BF0FE82F7B6D919E5D54BD1B8B206EB +:10416000F6DFCAC2CA4CE4BB01CC73A5F8BCF0F3BD +:1041700032A11F845FD6F0875BFDB3F1FCB2E3F59B +:10418000C71AFC62E58B3772478E2BC79BE718BFB7 +:10419000ECBF8FA897B44526FD62E823432FBC2DC2 +:1041A000F07FABB86329C68BDE0A3A05FDFEF9B590 +:1041B000964ACAE7A3F3D8AECFFE6536DD5F7AB381 +:1041C00034A23FB648F015C3F87D6994CED706A354 +:1041D000F9B428CED73799F369ADEB427C3D35BAB7 +:1041E0001EFA4E2EB78F8C7503D78734375F1F6C3E +:1041F0009E28DF7FD975A26179BB3F3C99CABDD8A3 +:104200008F6B6222DDB7649577AB9E37C6B7C29DD0 +:10421000705666116FAC7C6A7CBD19D2F30E7A3F82 +:1042200074AEE50389CEB59CCED47D7980AF234BA7 +:10423000CFCE83F68F66EA3979317AB2D5CEF3657F +:10424000651B0B3E4DF674C094675B9BC7F9A0BD20 +:1042500096B73B9431CDF75B285BDF2FF7D9D10FB1 +:104260009FC7E376873DA39F13B857F0CF3DA88F34 +:104270004AA276FC76319F80BE8EFE91767BC01777 +:10428000EBBFD3F25269FCE4E9CFF4A39FB455B578 +:10429000D1FDC7ADAA42FED436B752BF9BBEE3786C +:1042A000B77BF43D61610F2DC67B49057C8ADB9CA1 +:1042B0006F5A8B39D61951BCACF0D6E6F17520296E +:1042C0004BD7915E3FCAD46B917E2125EC447A870F +:1042D0005C23EF53BE22E89525FA67CC4D71411A55 +:1042E000573EF77349FB72825FC571CFD8C20CF796 +:1042F000D9AD9E69E774CFE9D23CC97ABE7A69DE4E +:1043000008FC1573FEFD4E8C7BD66AECE308022D8B +:10431000CEED1979A160F7AE427A2C691F39DFB270 +:104320009B69A3FAADDCA21FD86FDF9257C5F300DB +:10433000F3F87EBB0DF53BF3F37E92C7E807E84444 +:1043400071DD71DCB77227F63FFCBC577000FB1FB4 +:104350002F1D3B86D3B163343A9E79F7FC148C470A +:104360001AF7C558DB19717CA3DE996A1EBFA382B8 +:10437000D777887153449C7D8FE02F97E53E13D704 +:104380005C7E2F8F910F61F4B327CFC3F7F93933D8 +:10439000F720BC1D85FC7E8E8E54F33D1DC1BCDA1A +:1043A0003D48A7EF88FEF708FEED2EE27105EB3DD4 +:1043B00080378BF637E7CDA412246D12F28943962D +:1043C00047A4E377853C19E7238DF3692BB7CBA688 +:1043D000F369C6BABAF23946EB3EC643519EE3E5ED +:1043E000BD054BD597D095F3092B7360BED7975D6C +:1043F0006F919E4969C3D7DBE7F386D65BFF39AE81 +:10440000B72FE7658CB0DE327F69AC9E35D6DB0115 +:104410004B1CC72807041F6C13FB70D49FA8AFF177 +:104420007E30D2DB0ADFA7DE97CCFD98C87F782FDD +:10443000C8409E39FFC5C8B731F26C8CBC1B23CF76 +:1044400066E85E1C4B9ECD8063A03D0BE66B701250 +:10445000A373A6598DEAA12CCC4FA8D318FAA33A7E +:104460000A597235BE2FB7F9D16F9FBA48EDB043E4 +:104470003D55637853209EC70D7BA05F477E21E1A9 +:10448000B92D7CF5A12C6897A2A9737CD02EA541EB +:10449000A3FBC00C3F735FDBDD74BF9081FF59430A +:1044A0000E34EE5F75697CDF5DCBF2C96E8FB61B93 +:1044B000BAF7EA0CA73BF73FE375A8B48FF727924A +:1044C000DD3A1F23FD748F4B0FE5C96939B33EC335 +:1044D000F686FCE07D6B4FC7F865AD79458EFCD163 +:1044E000F38A121BB93C5AE751CB17EB43969E94C3 +:1044F0008F72F3E9E79FCB31E775121BF9DF0F4AA3 +:1045000048E77A3541E37165A64AE4EF7169C12055 +:10451000C293E0AB56515FB63ADC9D123A6A57D966 +:1045200018E6CFCE12FDE80D4CFA5D29FF133A5C78 +:104530006F2AEC77063FCB02291877A64011ACB959 +:104540006D4900FF2CF72B7F96D0AF57DC5C8B7E3C +:10455000C11797F13EEE8BE3FF36F2ABA2F9643B55 +:104560008F9AF3C91E3A6ACE277BE8E897C927BB22 +:104570002CFFA1A3FF9DF964867E3A2E078FDF09E9 +:10458000F45D0C4A05F76D8BA1C746F25BFA886EA5 +:104590008B049DC37F013ABBA2743E6EE7F7A52C46 +:1045A0003EF032D1D13E9393DAFEAD94482BD9251B +:1045B00011EAFF1A57D76C8C839F720C4EC1714F52 +:1045C0003DF7663EDA8BEFDEF591079310DE53067A +:1045D0003DF8FCC38DBFF020BDDEDD2893BD7383A5 +:1045E000D80F2C6BF96C1AC6436E10FCF46FF9FAF5 +:1045F000E2FC18BB8E8532689DBD3922D396C7D0A8 +:1046000063B7EC4D12CCC6EBB7F6784D75637DBD44 +:10461000D5C9FDD2B77CEF902317E0BF796F2AEDA3 +:10462000973F14719A0FF7E577A35EBE3FDF26C66A +:104630000FDC989FC1E142FBE4BD034ED64B7AA943 +:10464000DFCEF8FE79AE94C9F32BF1C70AD74B073A +:1046500093A8DFD50FF0F560B9C6FFDE41F0C0CDFD +:10466000A4F7AD70AF7EB7E7A51C806BF5167E4F43 +:1046700008B6DF08F3130C717F97152FEBBAB0B2B1 +:10468000E73607CF0F2E9B837AEC934E89F498750B +:104690009DB8E9C03DD4DF2AE6EFAC01B8567759A2 +:1046A000DF5FF17B64EE9B2CE7A0ADEBC7D67CB15E +:1046B0008F9FC62EFE1CF44EABBB2865B473B71F8C +:1046C000B670A1FC438B8BCA932D2A958BF339DFEF +:1046D000DEB2FFD04BB924D6FDD370DD9DF7F22CAE +:1046E000D7752CEAB750BAAFEE7D4443BE147E575F +:1046F000B15F6914F4B733EEA76847BF05BC97559F +:10470000ABBFFEF54598371076F3FBA70CFF4523AA +:10471000D223260FBA710CFFC593F962DDBC18F0E5 +:10472000E67F4FE2671A1B7BDD8C877FBCEF6E8DC7 +:10473000733FBF211F8B85BE5EB57B6107863E5AE6 +:104740009FFB7D01DDA725F2EA64411759C435645A +:1047500066C9A30BB337580CFFDE8497404F1CCEBD +:10476000A706BF3037FFDEC55C9BE8BC81C19F0751 +:10477000B613FD0CBEC1134536D439ACD767AB1E9A +:10478000FB3C02F09FA9FE47FB4001EA899B2CF706 +:1047900090FC511A795FF3E3FC22EE1FD5F439B88F +:1047A0004EAD66810E95E8C0FF1ED8874AD74B777D +:1047B000A27CEF9618CAD5AD3FFAFE0F512FADF986 +:1047C000BF0F24A35E3AA17465E2786BF7B427E3C8 +:1047D000F9AD0F9570327E7F22C2F59375BCEC0265 +:1047E000C9C84F774BA037D7E1AFC800ABC2F35170 +:1047F0002FFEBF3D76FA3B7AEBF73A7BF1DCDCBA71 +:104800007D9C8E507F9FD73713BDD6EF37CBDD9A77 +:104810007F792053E3E75A7305FD725135AFDB6DA5 +:1048200027BFEABA3764BCC68FAD6783849FF57B28 +:1048300084E32CCCDBFA1E79B92365F87BB0641CC9 +:104840002857EB85FDB87E1F9FAFF5167BB1298EEB +:104850007FC65520E45DF03DD087EE5B08035CFC2D +:10486000CF6370FDDCFAA453C7F8D189B7B3BAD1CE +:104870007F7272F7ABC95259540E8CFBF04EF64C56 +:104880001C555FFC51C8CB90FE17EB8CB61F00C4C3 +:10489000B3040778B9D6DE9B7C29D0676DB7DD1FDE +:1048A00086C76BBF2FEBB875636F39C91F77CBF71E +:1048B0005F3C7609C073CBD3F6F4B91C1D37EA6DA3 +:1048C00063DED623BF5744E769CD0F5E74E0DF098E +:1048D000C1E7981F6FCCD72D4F1F72A0BFDD4AD7FD +:1048E000593D871C5CEE2CF3D6F3FE1C5C975B9F56 +:1048F0003CE340BE387150625985C3BF6FDAF36A3A +:1049000032B633E66D681E87CD5FEFFC672BA91DBD +:10491000E5758E358F1FE21F1CAC227E7FEA591889 +:10492000BFE96DA71FF16F7AEAF664C4E3F74A3373 +:10493000E7FBC7DA33713D6EB28733552AF9F3A628 +:104940009D5F237EBCE9F5AF65F2BF17A867A33C66 +:10495000039ED988DFEA4717137E37B220F163D36D +:1049600063FC1CDA270AAB7F7A8479DD21E4E6F761 +:10497000BB9C64ECFF1E8378A88F7FCECFBB3276C2 +:104980001BD921C6B978D2D050FFC4C5E7E9C60209 +:1049900023FF8BEBB7F5A2D5FADD9B49BFFD215F65 +:1049A000CF42F9073A98F49CFCFAEC2CA117296F36 +:1049B00098BE0395310B9F63FB7EBB9E30C5F49D73 +:1049C000F063F1F1EF10E303DC89D24550660EE5A8 +:1049D00037F4231CEB24FE0DF20FE6C7F61670BB6E +:1049E0007E48FE776FE1F324E4FFE337B85E5917A2 +:1049F00059584F7AA1DFDE9B85ED22871649A4170F +:104A00009CD173FFB172BDDB2EE4DAFC1EE052A430 +:104A1000587A1E94683FB07E1FD7DB37DE0FED63F8 +:104A2000E438CA2F8EE8F3C2A85C1AF1819B2CF1FE +:104A300019A3B4EA857B0ACCEBE1507CE1D18C511F +:104A4000FDF9865DB6D61E79E26194DFB79C64F706 +:104A5000ACFDBE9DF2C5FFE37B2F1CBB0EF8FD3FF6 +:104A60007A0CB935EB5BABDC363DB3988D24B7FFE0 +:104A7000911E6023CA2D3C1F516ED3F93D327F3306 +:104A80007D2BE6219E9CDE1447DFFED0A26FC1CEB7 +:104A900048B914AA7FF8EE2D13506F5AE96BD0D5A0 +:104AA000AA3717146823EA4DF87983C5D0D3A0A399 +:104AB000C1AF6BFECFAD34CE101F1BFC6AAC63439D +:104AC000FC6AC5DB4C4FEBFB6FE21F6ACA88CEBFA6 +:104AD000FD6ED847637EDC73329D073BA50D26E350 +:104AE000F981F604EE3738A58A7A2AAF0F66383A8C +:104AF000507F18CF0713F839915381C1E4D498FD42 +:104B0000DCFB07E464F49B0F44F8FEDBCA87A09942 +:104B100069FC01B13F9F2DBB0B42B8FFEA9A588157 +:104B20009180D36D76512FE17F8743E4A39C12E7F8 +:104B3000C04E89735FBF65816397923DA52BD940B5 +:104B4000CF951C55D6F4726B32DAE32B0FDC42F7AB +:104B5000B4ADDA66A6C38DEEDD64AF7FC23652799E +:104B6000E3FDE6F38D6B847E6F7AD4F2FCC055C40E +:104B7000476B2C7C14147E482B1F7D6EC867392B25 +:104B8000E7FB649E57B241E8B5D972D98206A0FF0F +:104B9000A92332C58B4E1F905907E2FD3D7EDF13DE +:104BA0000BF33C8475C0CFB1FECB93C867E70FA76A +:104BB000EBD0FB7F7D77DA9DD064ED0FFF7DCA23BC +:104BC000509EFCE15BE7FD18EB3F7AB3E0DFD9F0E4 +:104BD000F6B30EFEF906D45FA70E3AE9BCE9A98345 +:104BE0003F2DB813EBCF3AFD08E7A9BBF9FE387C9F +:104BF000D043EBFAA97C6E0FB63E7766CA00E96334 +:104C00007EAEFB82093C1E72FAC05F7F85F7EA9E8A +:104C10003E0058A13E14FBB1F5CF26D0FEFAD47366 +:104C200067A6C5FEBD902F8BCF3A11773CE5610D8D +:104C300098C7732A95FBAFD6FF783AE5F9DFBAEF4C +:104C40009003CF5BCCFAC9675350EF9C7A86DB1395 +:104C500060EFEE44D3BB6A42E7BD76A0F31FC5DF29 +:104C6000DD3C3AE1C8028CBB0CA70BA7C329A0030B +:104C7000E2057469427D198F1E73FF6EE9F1A71B6F +:104C800070FCB5072EA673DE51BA483A7FEEA17CC0 +:104C900024C09F3F3F78660AEEBBC7C277CD049E13 +:104CA00057F8BF05DFCEBF5B7C39BFAB133482CF73 +:104CB000CAF7C3F9FA475FA7FA531E3FC13B4E79C3 +:104CC000DFFBBF8CBF5FFAFF76BE5F16F3ED51715D +:104CD0005F78EAB9CF0AD839E0FDDBBFDB791E1D6A +:104CE000EF213BC7E67755027C6FB3C8E25A89AC27 +:104CF0000FB23B5ADD3CBFBD7F5121FDDD2C26F6B6 +:104D000015F325BE3EAB1ADF4FB4321BE5DDCC4FA9 +:104D1000BF91EC89F9FA76711ECE46F0F4A7573FA1 +:104D2000B175847DD4025D26FBEDE826181FE8747A +:104D3000D463535BA1DFFF02FAF6AB5000800000A2 +:104D40001F8B080000000000000BB57D097C54D5C6 +:104D5000D5F87DF3E6CD4CF6C906892430938D0451 +:104D6000020C214080A813364321306187049CB097 +:104D700004C440026EF89536036189166B80D0D268 +:104D800096FA1F90525ABB04C54A2BE244A80DD68E +:104D900025566C6D554C9522224A14975169F9CECF +:104DA00039F7DECC7B9320F0B7DFF083CBDDCF3D4E +:104DB000F76CF7DCE54D73ABFFB4C63236CB7BDF67 +:104DC00047EA6008DD93DF63104E4D6A9BAB40FA03 +:104DD000B4222B0BD818FD2EC3DFF9CCC202B922A6 +:104DE000EE646CCE5C63FE6CB637D95C08E1728D04 +:104DF000F915682FAC7C673F3B63C3A11EABDB6436 +:104E00008FC6541F63C98C692697AD10CAFF83F9FA +:104E1000679540D8C058690BE437449B184B62AC87 +:104E20007DA673AFAA503336D68B312BFF3FBBD153 +:104E3000A150FD06662A6DC9C714939BCA2715EDBC +:104E4000BF9F9769C7F25379711857F51406E39A13 +:104E5000EA7E80C66BF56E69A790997D1D1C4EE5B4 +:104E600032D55BC3D808C6EE12637B713DC007E341 +:104E70007A31C6646F705092C33C02EB6197802711 +:104E8000B71A403C5ADDAA3B22D6D01E8DBB0B9FE1 +:104E900002DFD78BD7F0F9B91A9E131D76C24B38B3 +:104EA0009E4361A5FDCC40182CF3B2CB518C8F02F0 +:104EB000F1847DC2F826A85009DA7F699FE2475C39 +:104EC000BF54B478EB508CFF4A7161FEA7C5C398FC +:104ED0000DC6FDA2C60E2B7150C7ED76D847607B7C +:104EE000BCBE52F4A72F148033AEC814820BFEC68A +:104EF000BB230DE34A2C4D30C4933D3718CAF79EAF +:104F00009B61C84FF50E30E4F7595E6088A7D78DD6 +:104F10003694EFB776AC21EEF47DCB503EB371BA48 +:104F2000219EDD34DF50BEFFAE4586FC3CFF0A43C8 +:104F3000FEC0036B0CF1412DFF63283FE4F00643F4 +:104F4000FED0C0FD86FC616DDB0DF1E1ED3F3694D6 +:104F50001FF9DA5E43FEA88E5F1AF2C79C7DD4105B +:104F6000BFB1F30F86F237079F31C44BD89F0DE5D1 +:104F7000C7D95E31C427D85F3794BF25E51D43FEEE +:104F800024C7FB867C39FF93732F1AD2814B990F6C +:104F9000E861054F6265AEAF0CED98990790CF8040 +:104FA0006AEB28B4B1260A23590B85D1C0B6185E26 +:104FB0001AE4FDA103E4057BC8B71989EBC5519F2D +:104FC000F7F50269BE543C23CE4B74ED6648B7D367 +:104FD000F0BF0E086DD13E15F9CFC67C11058CC50A +:104FE000065516180674185428B407A3582011E85B +:104FF00030184161423091D21383F1142605FB50E1 +:105000007A723095C25EC14C0A7B079D14A60407D4 +:1050100052981ACCA3F086E030AAD7273894C2B4AD +:10502000E0184A4F0F8EA2B06F701CA5F70B965078 +:10503000E8084EA6D0199C446146700695CB0C96A4 +:10504000539815ACA0F4ECE03C0A73828B29EC1F5A +:10505000ACA23037783B8579C1DB281C10BC83EAD1 +:105060000D0CAEA6303FF86D4A1F14BC97C2C1C1EB +:10507000060A8704D753E80A7E8FCA0D0DDE476102 +:10508000417007A50F0B6EA3B030F8134A1F1EFC2A +:10509000118523820F533832B887C2A2E023148EC1 +:1050A0000AFE82C2D1C1C7A8DE98E0410A8B834FB5 +:1050B00052FA8DC1DF537853F018A5DF1C6CA5D0D0 +:1050C0001DFC33A597044F503836F80AA58F0BBE48 +:1050D0004CE1F8E0EB943E21F8770A2706DFA1F0D7 +:1050E00096E03F292C0DBE4FE1A4E07B147E2B7887 +:1050F00091EA4D0E7E44E194E057945E16FC82C224 +:10510000CBF8BB1968A3583BDF258F33F0DF2EF9AE +:1051100067BA0C218B4E804185CA8787526E6E8B91 +:105120008A25B938751D978B3F8CFAF038C9C9515B +:105130005607D749BB881E2B05DD6FC27F52196BFE +:105140001DF56E5A07E8A7CD25EFBC7107E827DFEC +:105150006A2BFB192F1226772F457744F30C3BA4BB +:105160002F1074FD52D1B164600AB6B9A0A3C60372 +:10517000ED3CE0ECA8C4D0EC54489F7E25F4A0C9D7 +:1051800069A278C2602EFF2B5767C779512F265D21 +:10519000DBF84A1C5C3FCBF29BB2793B2CBAB3AF35 +:1051A00067D0B5B773ADE53E8F881DCC407EACB5FA +:1051B000F1F09EC8D8BD187E1ED1D78F7AFA8CC365 +:1051C0009BE204787C6319E1DD772AC6DF4078AE84 +:1051D0001B42F05C7B3BCEFF523B039CC9576F8761 +:1051E00099DDE63298BF0A317F6F689EB95550BE8F +:1051F00023DDE4DA004915BE6553508F4F502B79FB +:105200007A9AD945B6845A49726D11B6A9C39FB529 +:10521000467BBB43275F2B406E96809EAFB813EC56 +:1052200089C1DDF33BDC8CECA62D358ADF87E5D226 +:105230004C54AE8299DFEE907218D2D7031DE2383B +:105240005E5F0FF4EC0CF5E7ADB9E53D1CAF976D73 +:1052500025BBC38BF574F6C5DA37D66F3CAEEB6F62 +:10526000B2332609F9898D64232FAB21BAAE107DA4 +:105270006DA9515D0180E7E249D585F163C916A6A4 +:1052800040BC63A595FA658DC9C427AF27FF2EDD05 +:1052900001F4FA79BD6FE3718DB12A90DB6EE0EB1A +:1052A000632BEF4941BED8B2E9A0C662108FAB199B +:1052B00086217AF213DD76A4338B6310E277B599F9 +:1052C000E83E97A591BD28E64133395A02305ED6B3 +:1052D000D7E6FA19C45513F3A29D29DB7941F08F63 +:1052E0000CDF32713CFA3628FE9F019C5B2C75B9AD +:1052F00009F9A4C0986984985F13B6CBDB69B370D1 +:10530000BA78679B73EF06C560074622DE2A98D1FC +:105310002EBCD7192FECB116CD03E3794761735B2F +:1053200004FF2B927E32899E2CE5905F916423FBD3 +:10533000B214FA37038B553495DF8EF304702E9731 +:10534000F55480CBABF07ADE7551EE3C98BFEF3A66 +:10535000B97CA8F0693E3D9D680A8797C1FCFF8C27 +:10536000E8D85783F18AADD68CFB9D3A38300FE4EC +:10537000E629D1CE3B8AC04B3AE3F5CCBC1DEBD637 +:10538000783FDADD15496682534B772FF44423FDCD +:1053900079084E66EEBC0BE97D719A9DDD0FF8B77A +:1053A0006E5CED46B956B175FD6AE487AE719999A8 +:1053B000D902FABB8AD927A6207C5B15979097A1C2 +:1053C000F101DEBD5B151ADF3E21074F6F5238DD5C +:1053D0003FA0F8D15ED8925E3717FB6766CF6B7F30 +:1053E000D3F5DB45E7D82FD279D313F72864B73349 +:1053F00037AE23BCD83FC071ABCAEA10AFE178F337 +:10540000C27C217E5F12F838FD9D181A7FF77E5D01 +:1054100096F24121B825BD54AC8B71470C0E8D7BA3 +:105420009302F201F1F98095C65981F00C0EE1E189 +:10543000EFCE04EA674BFAC4BE8B7A8007699BE91A +:10544000E8259CCE349398E7BE8CE858D2BDA49B47 +:105450003641EF327C578C8B613B525EA8982EF41C +:1054600001C81FA4D75BF4F9D0EE2D69AB19F21D6A +:10547000F1CD68C68EEFB9E8F1417C8953E8154754 +:105480005D2ECA49D93FFCDCC447389FD07E45B465 +:105490008DE6F3A4E83F1C2FE17AE4892E3899D7F2 +:1054A0008274C1389D3EE17450BA77AB95E850CE16 +:1054B000EFDBC85FB44E74F7A579B10BBC09FA6E87 +:1054C0001674D48CF58763FF40FF28E7B75989CE5F +:1054D000E57C84AFEFA4DC3F85EB56687F2326E9AB +:1054E000E4F76702CE632A5B8BF9E1E388CE3051A3 +:1054F0007E2BE647F794CFEBBB057DB24B903E8207 +:10550000D6C934DF5D7A2283CF9F8C4F8C3179FCF2 +:10551000507EF20F818E7BE8775C266F77F2832DC9 +:105520009FFC05E9638E85E4E2CEF55C0E85DAE545 +:10553000789926CA337B02C9EBABE9F7536BD508E0 +:10554000D4674DC1738FFC16DA8FF05848FE47B010 +:105550008E477E0BF3CA6632EAEF58DC058AC74EE7 +:10556000C9285021DEE4CE501601BCEF897E65BB10 +:105570003B8A4CA5FE682C3F2D7509E43797CF5622 +:1055800096E8E04C36C7B971BCADD669A9CB45FEEB +:1055900072C83F3AFDCC40D42BC7E6D8D769008704 +:1055A0006D0AB3E3942738981BDBB339580496C7C8 +:1055B0007E97EBF0943085E7B7CE9898BA14EA3529 +:1055C0004DD9300AEB35975B22B200DE1DA5BE2215 +:1055D00055479790EFC375F996F14059308E88B4CE +:1055E0008275281A23CCF56D4EC46F3173653B105C +:1055F000BE7E8A570777AAC0AB3B8BF7B7C5C1FD04 +:105600001F32FFF64C4E1F7B322D848F6754FB25D3 +:10561000ECDF37CD6447BEB84F71A422FFDCA4BADB +:105620000A31FC3093CB0BABAD5F31CA1BA90735F8 +:10563000214335DBD6765C276921FEB55D16721CE9 +:10564000F951137CD42CE57C2A971BBAF292EE49CF +:105650005F68E32D1928F7676474F123E90D6A0781 +:10566000E0D166329277DB647BB3A4DEF028A8D762 +:10567000A4DCD766829E80723B041F31E649453E1A +:1056800095785826E861479A679E87F4B05DC1FC1B +:10569000ED8A5D49007C2D14F9F1C827245FEC0ADE +:1056A000D965A29CD4CF8D37323FEAE7C62E79C0A8 +:1056B000E1B58871839E6258DE32C544F2C352CC94 +:1056C000F59765BC8FF4C57D424F6B293A7CB0D00D +:1056D00038BE9DE1243876CEB2D078B7A5DAFDDCAD +:1056E0007FE54915F832A17EB5E21204F0B32DDD55 +:1056F0003E8FEB8B3A86F8D82EED003323FC101A40 +:1057000075F3A26559B89FC9DD41F2562BF2911E7F +:10571000D166FE8EE4DCF6901DE1B6E0B884BEB43E +:10572000945A48BEAE17F36419FF3BD233E1E390BD +:10573000FAA46BFEC2E6BD9BDC0F8B3F586E49C5D9 +:10574000FE76C2BC90FDB231E578562F32D9843D49 +:10575000DCB46B4921CA5913437B38C6534DF6F06C +:105760004EC5D79685F236DBC4502EC06F6B979F1F +:105770008DC7A3D988101DAF5FFD6E5906EAFB7275 +:10578000931DCBC414AECEC1F9D1D22692FDFA3D01 +:10579000B00BD14E1E949941E37DB06C7B29968F5E +:1057A0001E6A2239D4EC793B06F9F069A107479FBC +:1057B0006D1F1707F98953EC05C8D7327DD4E980EE +:1057C0008AE909A53C7D4C59132CB631EE23FC3FE8 +:1057D00058F2D7B29100776CBE99FC633B9540A319 +:1057E0008AE3B891D13A2F6E7CC03E0EEAC7A7F18A +:1057F0007EDDE303A523317EA7CA14281FFD415295 +:1058000009CA8D314A3C870BFFB98186E8435F4A5C +:105810008326E2BECAF2E56944DFA45F5B33166FFC +:1058200043FD1ACF9A2A91CE5896D58E7C8A78B6A7 +:1058300025D0BCB1B9102E00BA447BE6D98C0CA29D +:10584000CB18330B98408F99A22A5370FC6589DEE0 +:105850003AA4BF5224B902CAB7255279C1CF6AA56A +:105860008BFB5B8C7E51C99731CF28A958BFA98487 +:10587000D35D74A1C5E0EF89CC37C66D59C6B89623 +:10588000668CF7CB34EACB9D824F657F1D42CFC932 +:10589000F0698BE34E1CFFD39131CCA7609CF3B928 +:1058A000EF4333C92DC65CC5337472649290A3B2C2 +:1058B000FD536BDF7900F55393C761D2CB73A97F9A +:1058C00092843C09D77331A27F89BF6EFA50E06F92 +:1058D00073FD5AF64E7628DD22DA1B7ED2DB10935A +:1058E00084E37790DE93F99F8A7AAE1CF7A7197A42 +:1058F00079762C4F710ED2B7CFF542428AD7EDC6DA +:105900007CFBF4ABACBB3710BCD24E09CF1F9DC99A +:10591000C7E3BE8A9D9194797D76C6EC4C8EC7AB69 +:10592000D91949A25CC575DA19E3D48E8B4EA4FF50 +:105930007E26E2B72D69DB59950E8E45427F16A073 +:105940006CE7F41CE7ED69BE4418BEBEED9F196D0F +:105950005CDF5EA5BE5CBF9EC4FED0EE758D3121BE +:10596000DF24083FCF1B93B6DBD0AEBCE83291D327 +:105970003C1A191AE5D2BD2AADD701FD111EDDFA78 +:10598000D61654993B11E806D7C310FE22C341E353 +:10599000B0399A18C26149E172E84AF6A59CAF2B6A +:1059A000D997AAC84FCAE4F829B57AF9FAC55E6052 +:1059B000A02725CCBE94F89772F2C9F36F7F6F08C9 +:1059C0008C23792697931D08A7AE7CF24C5731C9DA +:1059D000914B80451D3E264EE2F4130E97B43BAD2D +:1059E0001946B8C2CBC58AF995F0CBF663854C99B8 +:1059F000380ADAEFA19EA43759EF5470F4274847CC +:105A0000B1491CAED899756D14CF6224D7B5226EFA +:105A10009F8DEBB7C61699CFE96C4534D29595DAD0 +:105A200091F47593DA331F5C167846FB4D25FB8D98 +:105A3000D9910FC04EBB847622D8692908F726A1D8 +:105A4000EFBE14E57BB0D72C647F75B7D7B85DC2C5 +:105A5000AE60A7392CB4AE6F14E36E14EB7FD05355 +:105A6000424E1AED36690749FBADCB4E13F610FED8 +:105A7000B41121BBC952CAC82E9176D6965160671F +:105A8000A1DF446111A4D7CB4C7C1D6F76933D1DE3 +:105A90005BDCCB85EB71D9AEA588DB7FFF6D7BE44A +:105AA0003E05EC2E98E30704DFC4336E2FC32F1599 +:105AB000F94CBF6ED0AF2B50FEA1DD952860689DDC +:105AC00053C71C906E9DD2C4DCA8FFD15EC775C3BE +:105AD000A51D819B713D30657A168EF728F203A4CF +:105AE000474C312958DEEEB6177BF343FD1DFD32DE +:105AF00032B55A471F47C79E19B604EA37665BECB2 +:105B00008A43372F5F44929D3C2E3327D5A12BFF2C +:105B10002F41EF3B667AC97FD2E8EC45EB2599FF30 +:105B2000B1909F0F96CF263BEC99A87A920F6447CD +:105B3000A1FCDDC8FD3DE1F4F98AA86715F8682EDF +:105B40003345D8685D3496D645AF644610DD349948 +:105B5000E314ECD7EAE6E36F9DE19887F64B551125 +:105B6000B9C5717D635906F97FC98CA4F662EDD27F +:105B70001EE772EEC1925E7BEED7F91BDF14F4D8FC +:105B8000A474A6E03CEDD4A4FDEA3A81EB9C9DC947 +:105B9000590548270FDEF883B98B505F7E7710E9EF +:105BA0004B59AFD2E97D2313FD756367EF5A02E9C4 +:105BB0006A464E5F1CF70342FEBE69676694B76F84 +:105BC00082B05DAF60FB9EF62C08B59B3EBB6B912F +:105BD00083EA9FCE4C36D45F88F42CEB0F747ADEC8 +:105BE000C5FCED936693BDB463A62315E1B0382CD4 +:105BF000C22CF5A5607CFB0456703F0B8DEB88989A +:105C0000A78F33793B0F966F4E41B88E663AC478B2 +:105C10003D820EF93A65BB7373CA228033793C9793 +:105C200037C9420FC37AD38DF3F6E0AC1CDA07C74D +:105C3000F9443FD011315F4785FCDAE1FE38652930 +:105C400043FA7110BDCB7E24FDC7A33685300EE725 +:105C50005747DF3B98FC398E74221DA6DB8722BE96 +:105C60006B85FC899F29D6C1D6389ABFE6091EBF2D +:105C7000EAE47CB294E0FB8CF0D23AC743F49E2C69 +:105C8000F823A294CF379B69F1673BF57C32369BB2 +:105C9000F804F8C04B7C92A1207D4B78134A3B1E40 +:105CA000437F406B7F8B1DD17393CAC773ADF6C022 +:105CB0005BC46960B26479FA66717FFC605A07AEB2 +:105CC0004B247D56696ACDAE03382B3704280CAFC0 +:105CD0005F0AB6763BF7DFF5423A6775A3497FDF87 +:105CE0002164CAC5ADC3E3D0FEF7C6F2728AD93BC0 +:105CF00012E3A5FF593CD282E3FD470C4379BA2059 +:105D000093DD3A1DD26F55383C0B1A2695E27A6B1B +:105D100044169FB797EA6182FB33F672BD8DB98155 +:105D2000395FA9B753FCD5FA148AFFADDE41E1DF34 +:105D3000EB73293C6DE17A764122BBD5C3D7B71608 +:105D40009427C5599CCE8AB3E4FAFBCE14D0240024 +:105D5000CF2BC34D769C827ED327C05AA443E376D3 +:105D6000F434B78ABAA64BBECE9D19457BB6325ED7 +:105D7000E51963C867B9C342715A1F7339B2A831B4 +:105D80007E2FAEFBE74D4934949FDDD8C7109F911D +:105D9000C589B9BC34D3903EBF72A0215E1504C53D +:105DA000310CC9B088F60FEE14F60163451CFF767E +:105DB0005EF693BA91BDEF81FE3F795EA3FCF07968 +:105DC000386DE174E7FBABCAF51AA4E3BC7CFA5A60 +:105DD0003A43784BFFA3D2FE03FB25F7EB2DDEA55C +:105DE000301F0AF94EDF42AC77E71EAB0BCB2DD943 +:105DF000A5322FC283461AF477EEE5ECBDF7D3BC8B +:105E0000FA1EC2729D506E2F649DD5980F49737112 +:105E100087684729E883F83F1BCFDCF16042BD1754 +:105E2000F146CE3D00E707654DD526A463F5F9643C +:105E300013D4FFE05195211FDDB6FAD51176C0EBE2 +:105E40008A675BFE5A04ED9D6E52991DFA7BFF80B6 +:105E5000750FF71BB87BA31E0E8DD33F18E9F2C652 +:105E6000BE9EFFC9027E3957ED1F4CE73CD6251375 +:105E70007D77C7078C1FF509D225B4E7BD3BC686E1 +:105E8000FBF68B3557AFA144477C5DE06385A9AC39 +:105E900008CA6FD54AFDE45F714FC5719E6E4A34E2 +:105EA000F1F3348F125D2D323B2CFAFE166D5549FD +:105EB0000FC064707FF736D50BB632FC9A78BB8D75 +:105EC0008A97F5EE3E8F77E0FE13B47F477A24F988 +:105ED000CD17621F3DAC5F3E04DEF15A43F1154F12 +:105EE000A964CFB142C783C5B81FBB6FDC7094579C +:105EF000CCCBDBFF2441D2CD46EAFF6337632938A0 +:105F0000FFFB62FCB83E3C6F7AF49419E661A8D9B5 +:105F1000BB0FE5C3F2A9BE871460890B47DEF9FE0B +:105F2000182877EED79A8BBB5FDCFB11BF382EE4C5 +:105F3000B34566A1C7D6F2FD2A66F6EFFF31DA391E +:105F4000FFE85DA0DF5708C993F5DCFE97E5010C7B +:105F5000531106815E0AE0D1EB6013EDF9E8AF6FF3 +:105F600011E774FC54DE814002FEEC351002DEDEE7 +:105F7000191E733F1B02F315B65FF58EE0E7235938 +:105F80005C0F4AB9F76F115F2CFDFE47C5FE8E8F7F +:105F90009D443FCC72C6F1532BF6F796D7F1FDC85E +:105FA00017B2B89FA4B6EE9677A57D87F3733BD062 +:105FB00021CE7FB53DFECE7688D71C8870F9A17EB4 +:105FC0005436E76B68CB8E78BF4D54792EF70E0BA5 +:105FD000F6BBE271852562BF7EED34DA6336C028F8 +:105FE000CA8F73C0B64509D89E42EDD734297E3C8E +:105FF000C7B48C7506D06FB2F2578A2BC09BA2F340 +:106000005E4B45BB2BCC0FD079AD15B90AED67B20D +:1060100003D0AE4E2EAD6CE1FD487952CBCCA7F546 +:106020007EFAA5C28E5ECABAEC437EDEAB89EFA7CC +:10603000D8986D3DB6E3898A21B85634F17DD110E8 +:10604000FC2ABB0C38ADF6FA9F9D4A78505C7ED690 +:106050001D8E65CC333E1EC701F9014777B8C2C714 +:1060600075AD7056BB5A895EC2E1D5CD83433F0FF3 +:10607000CB58FB66A4AB6A1FA783EA23806768FF3F +:106080005F751AB3C4113DB4678DE84E0F00FF541D +:10609000948FCB9A55167086E843D2C56D07FD16CE +:1060A000B45BDE674DB1D1C04735BB0ECE1E05F5E2 +:1060B00097ED7ED982FABC3221906D026323C9B775 +:1060C000797BE98D217ABDCD6FC4C3ED078CF1FFDB +:1060D000169E98389F47F5003F4BF7A9B47ED1959F +:1060E00033ECDB2CF731DA9F5E7E5275A1AF63395A +:1060F000E8B7C482EB8757E2EFFF1AEE70FFC4984F +:106100006CB1FFEE622EF44F7CCAF2E3E660A6B0FB +:1061100077AEE49FE83AAF10A66FDFD0C0BE8079BB +:10612000FCC4EC8EA3FDEE6E727B646FD43F525EB6 +:10613000570BFD29DB5F8A7A13E267763D168B7673 +:10614000E1BF9A1FEB85E132D44BF921BD74F7E230 +:10615000403AEAF1BB9F88702189B2298157EF85C7 +:10616000F8070755D6933C7D2BDD3B2F1BE5A9D0C7 +:10617000AF2BD53D7DEDA84F857CBD9A5DF84DC711 +:10618000B908C7392CD4EE6231CEB71BF9F8DED985 +:10619000CAC7BBA4DB38C1AEC0713E6C75A1683FF5 +:1061A0001B1120FD7F16C6D9A0B31FA4BD20C7F7C1 +:1061B000296B7A2800F92BD7FCED9419E8E1B69CFD +:1061C000F6C1C88F95DBAC641FDCF6788C9F41FC70 +:1061D0009C52D29BD611C703B188BF158F72FC8524 +:1061E000E0E8B2177CD9C93A7BE11AF1B64A9CD7EC +:1061F0005B75E44FAFA1FDAAB8A12AC0BBCA161DAA +:10620000207A3F6C3C5FA5385006E07AD365B3E155 +:10621000FCA431073F1F137EEED4EC3E0373518D77 +:10622000F500FECFB23F5AB886F8A03307F56D6D82 +:106230006440EB8D76D641C5B517F9EDCE92D812F4 +:1062400086EB7F7E6EF0A16C6EEF2A6E375B5B4053 +:10625000E7FE5824F4BB47C843C561679588CFDD86 +:10626000D07F4C08EEF0743C1F6C433D196DEA7111 +:106270005DDC2EFA59A99AC8EEAEB170FBFB82F034 +:10628000B7FC46E4FF269BDBE187B2F97EF70558B1 +:106290002EE3BC5F9860F5E3BAB3DDC2CF4BBEAC72 +:1062A000B9777D07E6CD93E37D0CE7C3638A5E8013 +:1062B000FCBE216AB086F273637C753F0C17B27620 +:1062C0000DE7756A51B9C30C7838D5CBE652B99F42 +:1062D000C6C3E47902079EC38C6EC4764F21EE607C +:1062E0005C15E2FCED29E81FCF2D9F4AB5F81BA0F5 +:1062F0009EEF292BD9135B22F9F948961467467E45 +:10630000982FE4D482F1B0A2079AA918BFC58321BF +:10631000B4E76380AF4A5BE7A6A1D0CF7A13D7D7A3 +:10632000EB13183FF7B4B16338E26F08DB68C77945 +:1063300084D11FBA9CF875F4646667249DC0B86A5E +:10634000F01CD568C609AD88F06B88D75878FE99DF +:10635000ECF7A73717431CD71E480F9354FF5E274F +:106360009EFB34D17C4E837691DE1832CD88D07975 +:10637000EFE9F0B718C639DDCC7CA6040A1BF1A8FA +:10638000DFAC22168883F1054E3005E1219F3FC026 +:106390003727600AF407BC4D33075A117FAFA96C49 +:1063A00013DAA5D399535B03F351B3E1DAE065390E +:1063B0009F4D6F4E83B8899F5FEFBC57F1E33A6101 +:1063C000A1991D57019EDA04878FD25773BA86F4BC +:1063D000C6D8022CAF105D558090407AC6F9253A98 +:1063E000C5C22342F304E56D9190FE1F5C54A3BF28 +:1063F0005CC0BBCB6BEA857E8195627DB8D0C6362A +:10640000C6607DB32B16F711870298FA79AAB5C832 +:1064100075648B653AF0E7EDC0DF4EC04B640EB794 +:106420001F6F97FCFD2B237FE7E708FE42FB12CF8F +:10643000EB88F04AFC9197C3F9232F87F347728EBC +:106440005CA7B6905D7DBB902B57EA6FA5950508BC +:106450005F4F5969DE65BFD344D83F87DBAD120E6D +:1064600049E7D5ACCE8272A25A9C5F33C164A2FECA +:106470005CDEF4B00591B07CB7F1DC1C18561694C4 +:10648000532BF685A7EBCEBFA9063946E747154B38 +:10649000E712844FB929C2857C51616921BF82828C +:1064A000F22D3724DFC2EB694D7C5DA96DE576994D +:1064B000F4CF59C1EE44395F95E64A41B960658E23 +:1064C000898A9375D9EFD5820EAC686FC07C55A3CD +:1064D0007D86FBC1689F21FE76717BD42CECEDC5D7 +:1064E0004D463BA5AA5167AFF2C0A63F1F60457B52 +:1064F00045676F48FF7383E64AB11BFDCB64B73431 +:10650000287C1CBE64E1474EE2F966619F4AFE1F8B +:1065100093A3F1F590D02BD398272EA093B79EF19B +:106520008CDD5480FE09C58FF430CD5DD2C6C3F535 +:1065300001BA3F0176599F047EDEBB98CAF17B11F8 +:106540009E52C51745F72BB473FA71BD84FF19D558 +:10655000DD5EAACA89E9713F871527F6A80FC3ED4A +:1065600025DF58964BFE2394CF99D42CD9156BBABE +:10657000CEF146E7A2BCAE54225DB87E90E74ADF7A +:1065800010E1C7607F23BD54BE1943EBDEF0F3A6D4 +:10659000174A627C260817C4DD3D15E7B332D66280 +:1065A000C6509E437D43849F9B3AA8FF5B59C7FB1F +:1065B000B86F744B527B0CA25F9EFBDD5C326C1794 +:1065C000D8846C6BCEC419B674DAD713FBCA935F48 +:1065D000C1FDC299B8BF47F12933DCD8EF1F3B1783 +:1065E000DA40753DBC7FCA0C33E0EDC2CECE8730B9 +:1065F000FEE4FED933CC80970B0F74F68DA0F80221 +:106600009EBF5EB4E75B3003FD7D177EC4E3DB20F5 +:106610001FF7A52BC772D155395A21FDD3847A793A +:1066200078C8EF56697A86876359C05478F5727FC7 +:10663000CCF134A1FDA7C69CA67DFB1772DD4DA849 +:106640003FBF9FE5DD9D03E18A72C5678175323BDF +:10665000E9CF117A9DD6EB5B843F5ECE675336F768 +:106660006BCAF0D7FD79BB126FD0DEFE6FD2DE9819 +:10667000B0F6A49DB354C80168FFD16FD2BE942B6D +:10668000B23D5B6E37F88F7E93F67D61ED49FB5727 +:106690008E6310F22CD09D690033C023D33729813B +:1066A000E439E87F3BA1D23EEFA6E43366DC8F6598 +:1066B0001EBE0F7A4704E7937F0A3DB3E93BAE382D +:1066C0005C07F85E5069FF76D37A7E5EFAFD5F8FD5 +:1066D0001C812426EDD4F75BFF6E71C0385689FD0E +:1066E000D05AB11FBAEA50AB6522B45F0BE1389DB6 +:1066F0007FA4A6EB1C5087797A4C088E7FE698849D +:106700001C5AFFB5FBE117BAF4141FF76031BE9FA6 +:106710000F749F45FCCA71CBF406CD784E41868537 +:10672000FDF9389FCD6186F686287CFE2A23B9BE06 +:106730005C3C22C6E618123A1750BDDB49FB1C8FA1 +:10674000678DFD2C478767592FE4A7EEECD94F7D65 +:1067500084FBA9657F2E01676542FB9D600CB0C27A +:106760009F37EC40B930F987522E8088B0E13EABBC +:106770008CFF78C6F862EE2FC578EF9FEFD8E183E3 +:106780007EDA22F9BA69C1C8419128973A9C51260C +:106790003BC88F3E595585FD8763FA8D1331BDC4C3 +:1067A0001A9353C5F77D88FEFA6479ECFD937979E5 +:1067B000F467792D9C4EBCCFA92E1F8CD33B38CAD1 +:1067C0008B7EC436131B8F7A5CE22FB63F9FAFC21D +:1067D000FE1C7FB27FD92F6376F24B9DDE904AFB81 +:1067E00016995925C3FA2787FACDCCF23A102ED93B +:1067F0002F0C7330A65FA9FFF0F94BEFCFED966138 +:10680000FD39BD7B8A81FE74FA74FAF828437CE670 +:106810009444E6D6FBC367F631C4E756661ACACF7E +:106820005F32D0905F666D2FD4DB0F72DEAE75BD28 +:106830003611F83E0EF0D2DECA061D423E74C6D0B6 +:10684000BEEBED8D93C8BF1E17ACA0B0A669126D4C +:106850006EAE0CCEA0F8AA6014C5DB22DB27A23EE8 +:106860006FFB5D3CAD4F5F5203393FC176AC31C425 +:10687000CF657D166C40FDD316E9CBBF03E02CFB42 +:10688000ED2DA538DFAB0E29E4072E53599B9280DE +:10689000FC1941ED95A97F295C0DE993C771BD569F +:1068A000863A17F21B845FF34A7C5321F846EBE0EB +:1068B000704F0896537B32BFAA3FB7FB645C4BDE38 +:1068C0006726FB578C47EB5028FC56702085B58710 +:1068D000CACDB8CFF45CEEC349A83FA07C34E97DB3 +:1068E000299724DFD48D8C63D157C6B355C89F0A2E +:1068F000713FA136CF7D0FD2D7D4751D661BEE2B0D +:10690000445BECB88E9C5A3434A55AD74E43EB3CCA +:1069100086F2CB9AC42CA87F2B20D4CB2BEF15CE9C +:10692000197D47D09F9457528E33F70F685F7CA133 +:10693000F05748FA5821CA77AD5F15AE877D8FF3BF +:10694000FD8EC63C6F13F2477B099BFB28C98FF66F +:10695000BEB83EF86FC10FF36B53683DD641F77177 +:10696000A71639E8BCE3CEAE71703ABDDA38368886 +:10697000F22F89732D2FDD7C73BB1BF705BF3D6C98 +:1069800018CA4566EFBC84745A7B744C26FAA77FFC +:10699000D6DF22CE6331B247E57AA1F66814EDF76F +:1069A000D41EB5EE4553B536B63307E5EDBF067ACE +:1069B0007F867878E9E92F4E7D1BCABBA363E8FC8C +:1069C0005DEDD188E318BF49A5E3996077B8F7E397 +:1069D000FC5E09CE6BE5C7703AF33672FEF30A3EF1 +:1069E000AC1274BB48F0619519F422C07DEBF32A18 +:1069F00043F9B4689D32E810FA291C31748E58F2BC +:106A0000A1E4370DE97218D227A7CB9A60BCE06FDA +:106A1000A76897F34119AE5BA19DB281F1B48E5F77 +:106A2000154CA472925F259F1ECFF3BE8AF8296B86 +:106A300000FEC673F41B520B915FAE4E275F98F1B8 +:106A40001E8E56AC6848275608C7E9F8DB133A9FF4 +:106A50003BB117EEDF6C749AF4FBE6FFE86FD4CF1E +:106A600057A3933F89F28BA203D968476A75112E09 +:106A70003CDF5B99EC2039B6E63E88000AD6689E7A +:106A800071A857D7FC48217F23EA5BB4B747BC56AF +:106A9000477E6BD9FFBCE060E6003CCD086651F84C +:106AA0007896F72CE2A12A385BE071708FFB949FF7 +:106AB000D46D213FDF277EAB8B919FC6E84F1CEE44 +:106AC00076D1BEA5F6BCC6F638D00FE855913FCEBC +:106AD000A633FB0E85FB13D1BF28FD8172FF51FA4F +:106AE00005AD4926C37EE9A7E6A6BE68FF77F30F8A +:106AF0009670BD767E9F467AADA6F52F234CB8EFF3 +:106B0000E274939FF0C6BE5E532EE06BC574FF6FB8 +:106B10003488DFFEC063B1E8BF97F86C3107B2710B +:106B2000FDD20278447F65CB5695CEDDC32FAA5C9B +:106B30007FCF4DD8152718B747249DAF0866127E22 +:106B4000A4BE91F2FB89FA145AE44A397E353D24F9 +:106B5000E97BA599EBB19540F7386FE17C14D23F02 +:106B600043895F18F00BF24748FF70FE08E91F41A8 +:106B7000FF71FD68BD112ECFA57E1AF38BCC437F2C +:106B80008076563CB2C083F374F3409007808F9AAE +:106B900047391F84F3BBD4D7121F123FCF89F8A007 +:106BA0003C7771EE35E98908B273ADBE7246721654 +:106BB00042BD9CD5C2EC5A995E927B7D7A6248AE0A +:106BC000713D21E16CB770FB4AC2FF67C6ED0FD97A +:106BD0004F63DEF4B9B9C95C6F60FF0B72B99EFEFA +:106BE0006F8DEB4AFA6341AEC9E03FB8DAF8BE15E3 +:106BF000363E390E39AEE7C578AF55BFACC9ED5951 +:106C0000BF40B9334F42BD0B4FE5D9518EA94AE77A +:106C1000193AF7F2548403F1F0D2D31154DE6D8B9C +:106C2000237FFDB8A7DFBDF81307AE2366AC413C58 +:106C3000BA8F58CD4C67EF49B8249C2F08B8410F44 +:106C4000DD93AB1B8F4CFFA67A49F24538DF86F304 +:106C50006B387F4EFE1ED88938CE27143A5710B2B3 +:106C60000B19E9A9B68C74DA4F93FCADB313F9B9DB +:106C7000A05C85CE0575B7BFFE56E880FA170B639A +:106C800086A27FE498DAB263B412E2E3B18F7CF5B6 +:106C9000D83F58777D9790E7FD25E253F2AFE4D3D4 +:106CA000ABD3E5EF35D257350AD9355608F5FACAD0 +:106CB0007B057EFBED75F2DB4F053DBE84F0A13D0B +:106CC0001667217BEC6A74D78A7497FC5FA5BB5664 +:106CD000A423497757B2BF9FCDE5EB5FA0BB677395 +:106CE000BF81FDF335F34B7A52D2DFE43F73BA61D3 +:106CF000997CBD027444F0B759D2494E5708393DCA +:106D0000F932BF97E915EB7F49C71FE479CF219C82 +:106D100072FE717D82EB8E6BB56B2B92EAE8DC9A8A +:106D20001742BD5C92F742C3E7FF42EEF5D9296FE7 +:106D3000E65E9F3D7BF90AF2E66BECD9C8BCE157F1 +:106D4000B767999BDB2DA1F9B0CE40BAB91830D303 +:106D500051A72BCDA7BA8BE3BB0B6F01B3B40B12BA +:106D6000D12E003A89CAFB06745236AEE5131B9841 +:106D7000AC7979DB66A2BF71369E95213FC4F66679 +:106D8000B719E50D93FB2DE4A7203EA2F88E93E3FF +:106D9000018EC93B58683F06F22714C775F9357054 +:106DA0000924CBE7E6359DDC4A70F3F349CCDB617F +:106DB000E6FB93225E08F1185DBC282CBE9B978FE2 +:106DC000357730FDB91DA43BA580D389E13D00D6C0 +:106DD0003911CF834C3DA4D8D13F31BFF88205FD96 +:106DE0003265E33A9EED03E32DCEFBF1CC6860D52E +:106DF000F9281701DE29797B9B7D6651BF17F9B110 +:106E0000E8676D51DC786EBCA648F1E315B3703CC1 +:106E10004EC933AEAFF06736D667780EEC7AEA2308 +:106E2000DF52FD0CAA1FB05E47FF738AF9B9D1F09B +:106E300072F3F304DF88FB25D43EE06E460BF71FA8 +:106E400084975F24DA6D379956E221D61579BF6BA6 +:106E500046BFD504C6E9A326EFF1993E4E87CC1D67 +:106E600036DEAF83D79367B427F0E730D60F7C1DAB +:106E7000BE6677AB2FE863B9915EE2CC9EE3170163 +:106E80008EB824C58EF6F82A4FC4565C77948D933D +:106E9000F41D98E92E86F14530831F2E44DFAD3373 +:106EA00091BE5731997FAC19F594C7C40CF7C4262D +:106EB0001C51BAEAE702FD906B0CEA6FCE7BA61973 +:106EC000FDF1301F944F71F3D7D07B4B58BC388CF9 +:106ED0003F047D137FA2BC06FC64F72037F6887957 +:106EE000FB40DCDF6A1FCBEDCAF60C1EB6E671FD77 +:106EF000F20B81C783226C8FD4E1212D34CF8828F7 +:106F00005CFFE8C64D789A9724C6EDEB9839250BBF +:106F1000EA27B0410AD0C993BF78A37923D189C7A2 +:106F20008CFB2066DFA9E6E741AECC137869FDC58E +:106F30005B277D24D741EAC1BCAF240280793FA4FE +:106F4000F8E81C1ACE7B0FE37AA03BDDF8C2EABB5F +:106F5000B5AFA9BFA37B7D77587DA6255D4F7D3159 +:106F60002F53C2E6AD346CDEC687C52B65DC6F904F +:106F70005F52AE2D3ABC6D532F3AFFA7D0DB5E2097 +:106F80009F2DCA50C6FE9A776E66F428A44F87D606 +:106F90000764FC3FF2CE9FB401ED96A3FC227AFD7C +:106FA000A0D90DF33003F99BE21FCEC4FDA5D9454E +:106FB000759B52A07C47DE85661B149DBF719B8626 +:106FC00077F04FE77DD46C86F99A57F8DB67B13DCF +:106FD000B372F1E414E56BE8B3296C1CBBC3E2BEE9 +:106FE000B0F2CD5791E71BC3EAAF0BCBDF1A16DF28 +:106FF00015166F34D6AF5AC2F743AB8AF87B1057D9 +:10700000E393CFF2A45DD85288FB6DFFC9633B3791 +:10701000419DC90D82CE7FC966E9E954EED356245D +:10702000311FEA03ED0AF2E9E36EF25CC09B1BAE8E +:10703000BF64BE2705D34F09FE60BE6767A19C39B8 +:10704000D6258738BFB5AA1CAE885F3EFBEA46DD71 +:107050003A71BBD89790F75F705FE5600FF27FE5FC +:1070600040BE5E3CF6157F17C0D7CF42FEAC6371C1 +:10707000FC7EC196FBE6D0FD0259BEB59F652DBFD3 +:107080007F509FB254A71F8EF5EB7509F7898EF5D7 +:10709000E6F7F98F7D7BD825BCBFE0AB555DD98C79 +:1070A000EE75BE8FEF47BC1E1C6DD7DFEBD46AF8C0 +:1070B00079652DA92566A90EBE63B5C38A1DBAF1EF +:1070C0007C2AFCEEAFA7DD6D477DDDDAEFCEF61250 +:1070D00084B7B799E0B57E516957F2F1FE21BFEF51 +:1070E000553080E35B8BF980EE933624E185394C93 +:1070F000E7726E53DA6C1BB6D390C4DF31D06216E0 +:10710000D82DBAF1B893CC1C2E27F3E8EDF1FD038E +:10711000387D6C1A10BAFF5FC5E1A0FB63B77E55DE +:10712000F95A3BF4A3F51DE1C0730DE70664F27B49 +:1071300010267B31FA87E4BB00725CF34C62DD18E9 +:10714000F63E8E15F7F98DEF21D2BB005DEF87C4B7 +:107150005ABADE7B31E9DE3F0C7F0F63E60027BFC2 +:10716000B7C760B5C7F7C7E95E195D0E52E97E186B +:10717000C97FB4AB353C2716F6AE0DAC4AC663BA30 +:10718000A6001E104FE96CD574A253FE4E4ED500DA +:10719000A54B5F77BD93630ABD3B23DFE9B8B5B765 +:1071A00065F06198FF8E688BCBC142E9B2FF0AD1CE +:1071B0008F7CE7C55AA3F5789F7FF500F94E8FEBDA +:1071C000B5BF25A1FF22CA44E7CD19BF97DF8507C8 +:1071D000F1AE4B475F50F1D1340EEA6F933807633D +:1071E0008DE6F7F3657AC78631746F6693F4CFAF97 +:1071F00094EFF0F07BFBF25D928A248B3B0FC70586 +:10720000F59D8375EB923078710EBBE633B3FBBC12 +:107210005CED9E9CF42B48FA50F18CC470A4FB5E8C +:10722000EB88AF7ADB88EEB7A49FA1F73AB4EF8E74 +:1072300071E1BAA58B4F7BA714E3FD9FD6DAC47525 +:107240009D3A3E79BD66867D713EDEF7895E8EF49D +:107250007DD35769EB4AA0FE5B969B0D7C79F4BB0E +:10726000EF5F7C2209C318BA0777F4CBD10EF4CBB9 +:10727000AAA60E9213ECCB48A2F771717353F4F7E0 +:10728000E17E2AE861A0D3FD930110AABD800FA280 +:1072900043F24CEB55E8457ED9124D3715D916B15E +:1072A000DFDBA018EF1F9F13FC7B4EB4776E807856 +:1072B000EFC6ECA0F7CFE4BDCED67EE6B57A3BF5BF +:1072C0000FA2FC1F44FDD67E77BF56A5C357ABF572 +:1072D000E9174620BE7ACD74D17D26947BE8D7AFDE +:1072E0008F72E1385B7BDB68FE5B7B5BFC78CEA753 +:1072F000B556E5E769E26CA42FE4BD2BED8B4A920D +:107300008BE706380CFB3BADBD9308EFCFA875AFFC +:1073100071B960A3F5F3EB358997505E695A9C1DEE +:10732000E7E92D53E770E4BF730312B83C51802D99 +:1073300074FEB0F921B940F750BF462E58C4BB4285 +:107340005EF14EC5D7CA83BF0A7920DF0DFAFF95DB +:1073500007F8D34674E7F72E7E16F5255F77D5FF3D +:107360003FE293F9617CF20C4E2EE27F0B7F2F4CB3 +:107370004B3E1CA3DF47FC4AD0496B541CD767B572 +:107380008997902EAC1BAB7A3187BE9CCAE5A74D7E +:10739000DE4BBD99E8B72A7AB6467E02A0C75940AF +:1073A0008F5F0E3053B986786E5F6BA6CE41389EE4 +:1073B0004AA7F732F2C1DBE21E65E8FE63BC82E752 +:1073C0005025FC52BFC9F9FFAC2BCEDFD990E74B5B +:1073D000E53B71D666952E7856A4B9E91D5AF9AEEB +:1073E000873C8FF6B6E26947F9E84BE7F7F0E5B975 +:1073F000B42D4913EDC8EF5B9AF8FBB14CBCEBB16F +:1074000058D4ABC6773BA0BDA90333683CDEB3F6C6 +:1074100089B10EC4DFD917F0FEB5F55E95DED379DC +:10742000FA3F2A9D93B8F113FE1E8777A3D3F06E1F +:1074300082F7BC7922EAD72A66A77B0F6FC5AE2DEB +:107440005D0FE51A92BBE00B780BE99C1AC1372659 +:10745000FD6419BEC331666732F9491AEE8A89C5DF +:1074600045D32956D78EF0FAB6AAC4470D1A1B8FFA +:10747000FE169F124FF2E7CDB4EDF4DEC69B59D64F +:1074800078B4EFAACDEC38BEA7316420D7D315E28B +:107490001C23E2C556107A7F03E892DD50107A5F14 +:1074A000A1CD049C5340FE1DA2DFE103B9FCA8C698 +:1074B000F737D08FA01E198EFBD9D65DC6F37B0D92 +:1074C0003F525294218C2D690E4B177EBC2A9F315E +:1074D000BD62AB313E57C079BDEF20940E8C4E3A61 +:1074E00083E7B6AFF31D84B9C81F3807AE703FE01D +:1074F0003D767A0721CD4CFB735BEC9C7FB6AC5597 +:10750000E99E56787B1DF58CEE41A689F6241D4B2D +:10751000BA95EF1FE03B5F687786DE0549577CA48C +:10752000575B12719F7B9918FFD3166EA7CAF7415C +:10753000E43B06CB06AAD4FE93E70BE8BD82A3C1C9 +:107540008262FDFDEA636AC72323493E733A07332B +:10755000BDF4B11EF060177C2CE194F6B1E4B71DC8 +:10756000026E39FFE1F5370EE4F2A223ECFD10EFD5 +:1075700055DE0F71E58C5D3770B8EE1D8F63F398A3 +:1075800093EEBF0E233FDC464167DE243691DE0DCD +:1075900049F1A4E8FD9A27728CFB263BBAE4C2F5B8 +:1075A000AD0F4EEC37AE0FB689F177C125DE6950CD +:1075B000C5FE69259EFB01BADF23E647BE2B5219A3 +:1075C00019C8C6F3D7F27D91522BBBB53C9ADF3375 +:1075D0005AA3C3DB1EB1AE98FC202F07EB270AB1DC +:1075E0009D3DD1A1FCCAB1BC9E8CCB714AF84EE442 +:1075F00088F7EAC4FD9970F8C747FDFB313C6F542A +:10760000DD64B55B01EED3E8B741F9F01497FB8078 +:107610000317BE3379FAD5612EF4CB7F0CE3457E98 +:107620003EBEAD7F1CAED796B6A90CCF85AE6CE33F +:10763000EF81A3A7B64C772FEFB666C587F7DBAA15 +:10764000DFE0FC507D48F5E313AFF21E16E453BDB6 +:10765000DBFCDADB7ABEA6AB85507E598BE2C773C2 +:10766000B5CB7619F3E5FDA4952D61E9E25E576D82 +:10767000D83B9F6FE17F52BBCB01A030A283E706CE +:107680001AEF1D5DAB3C3033F7CB03C91E08BB5767 +:1076900029F16D0E24CFC1F5D38944BA4F0F7C690F +:1076A0002BD29D0793FEF6F3F5C009FD19FBB07EC2 +:1076B0003985B2FE05A5D5D207FDE5FF6274BE7E11 +:1076C000F4A183DF1BE3C0F275A4F43F3C5F48EBF9 +:1076D000BC0F81AFB811B041D8277E0A6F3CD4AA45 +:1076E000F681D88787DF89A2F341DDFDE534DF1716 +:1076F000CF9BFD3DEDF377DD6BFD7724E54B3C9EA5 +:10770000BB97CB2F49F763447BAD8F241E198DF4B3 +:10771000131567C775EB32B1EF7FEE804AED9CB56C +:10772000C5ED9F02ED9CDD3DA3173EEEB454EBB4D6 +:10773000E00555D753E5B1B85FF12F2817203BCCB2 +:10774000AFA2FE1B5DCAC89F3F3A60660E276EBDA2 +:1077500079A6225D8C3ACCEFF3BD8F7E7BEE4F2075 +:10776000BFFDD2DFABC46712AE71451C2E89CFFCC2 +:107770007C2E2FDEDDFD18B5F3DE3ECD8EF07CB81D +:107780004F237A5B01F4895743CE1EE0FB7A2B8EA0 +:1077900028FE08C87F0FEF3F62FE49D56503FCAFA6 +:1077A0005CADB9E9DE6118BD8F3BC0FD252B5AF8F1 +:1077B000BBCA92CE57B8FD13C98E17746E833F783B +:1077C0009E3C9EB56CC67B90B71FF866F41D4ED7E5 +:1077D00059F9315CBF15B082EBB947771EF412D26C +:1077E0009F4C4F68195AD2875AF519CE8B375818C3 +:1077F0009D0BF799225D2827AEF6DEF03DAAFD8F9E +:10780000685FECCC77523B9F9B1C1AAE0F662475C9 +:107810008C27D3799CC98DF7C8588395E44E387C62 +:107820006E316F2FE3DC425899CFE59ABC3F254378 +:10783000D054E9C887E551099FE213D065F9D9B35F +:1078400071FFA57C4CC25D996019CDCA1F381BCF52 +:107850007B970F4B783C03E2737E95C7F387240C2C +:10786000D75CF87C6CFEECF1907F67BE7B72BEAE9D +:107870001FD92EA44FC5F49BD2BDE518D65AA21B22 +:10788000D17EB9A074AEC207B764F9971576EA49FC +:107890002514EFD0585F17CAFF2EF87B0E1FCA774A +:1078A000CFCF1FDE3D7D113EA5037859E4E3F74BB2 +:1078B000E0E7B1F50ABD17BF48DE37690C7B1FDC76 +:1078C000C5EF45C97B44F23E505EE89ED3EEEBB96E +:1078D000E77441DCCF0ABF7FA61CE1F7B41A7CAC89 +:1078E0002382E6C1783F646514D0C5100C811EA0C8 +:1078F000DC9AC7DF8C7540E7B7295C9E306F11AD0D +:1079000063EEB4F3F130EF689253F27DB677EB5942 +:107910005D16D2E7D4400EF2FD83AA773DE2E9BCC2 +:10792000F3895854D7EFEE7EE5373E989F1AE1FF72 +:107930006097547A9FA3CD9947EF1C9C3FB8250DC3 +:10794000CF4BDF27E8E8BC53BC9778E958DF6F439B +:10795000B9D28C49C3EFA7D1BABF974F3676983CBE +:10796000DF378BE09C140DF21BC67BB383EB5B58B7 +:10797000CFF962F8BA8EE1BD270D42B520247F31E0 +:107980003F96EEF02F4E11EB45BAEFD6F5CEBF98ED +:107990008F6EF304AC85EFD7996C4C43B99DC776D5 +:1079A000DB919FE57CBD2BF8EC5D1BE72FF99D8BF0 +:1079B000354FF17BDE6B14AEB7D7BCAAD239A39595 +:1079C0006D5A8FFAF90316A0FBCFCB772F263925F6 +:1079D000E5135EBF46FA996A375F9B5CDA3DEE9A23 +:1079E000E4D213522E0D6543AF53CF1EED695E26D0 +:1079F000A8950E7CAF674D726E81F8960AD1CD3294 +:107A0000712E5FCED39A9F66D2FD57B6FC20D1D996 +:107A100032013BDBCDEFC96C76AA748FBFEC701FCF +:107A2000E680A4DB0E2B745E6ECAE1448AC706535F +:107A3000295EF6F3DE63F97B027C7ECB7EDE9FE27D +:107A4000EFEDFF73A1781789DF9F11742CE7E5E351 +:107A5000B97C5ECCBEBC1F16A39DDBA631BF83CA1A +:107A6000D37D258F00C723EE277958F87D6A471C00 +:107A7000B6E3017B8BDEB376733F8043DC4BB2A66B +:107A8000989843371FB3DAF87BEA118E48E6D0E1C5 +:107A9000FF55714FA941C86BE673B7E3BA77AEA043 +:107AA00087A8DC0443F9B9D1FC3DCB18D70D86F685 +:107AB0009997AFC3BAE804D392F87D276C7FD65C60 +:107AC000E3BDAC2D115C1F68C51F91BCF7083AD20D +:107AD0008A8DEB398F78EFD21376CFBC9BDD364899 +:107AE000D86B792C4FFF4EBB0EEF44FF1F83BE4671 +:107AF0003305AC871FE2FB1AB305DE37C9FB4BF831 +:107B00006E339673C7D07B7592DEDA517F0DE1DF5D +:107B10007DD18F1BBFFBA2C70F7EF7451FC7EFBEEE +:107B2000E8CBE3775FF4F9F8DD177D3E7EF7451F7C +:107B3000C7EFBEE8CBE3775FF471FCEE8BBE3C7E13 +:107B4000F7451FC7EFBEE8CBE3775FF4F9F8DD1721 +:107B50007D3E7EF7451FC7EFBEE8CBE3775FF4F9C4 +:107B6000F8DD177D3E7EF7451FC7EFBEE8CBE37714 +:107B70005FF4F9F8DD177D3E7EF7451FC7EFBEE8DD +:107B8000CBE3775FF471FCEE8BBE3C7EF7451FC7FD +:107B9000EFBEE8CBE3775FF4F9F8DD177D3E7EEFCB +:107BA000451FDF24EC15FCCE8BBE5E3BDB988D7A47 +:107BB00027DEE12D1F341CDF1B3D6F467A7F6D01F0 +:107BC0007F17E4E3B61976E2FFEBF443CC0BA3E3B3 +:107BD0004F59F44253C695EB4BFABC09FB1A8E740D +:107BE0003E85DEF5FEB845213A0FD7CFD22E8B0366 +:107BF000F56AD6F51BEFB631B36EDC89A576433C4A +:107C0000D9936228DF7BAEC3909FEACD35E4F75964 +:107C1000EE32C4D3EB8A0CE5FBAD751BE24E5FA9D7 +:107C2000A17C66A3C710CF6E9A6B28DF7F97D79091 +:107C30009FE75F6EC81F78A0CE101FD4B2D6507ECB +:107C4000C8619F217F68A0D1903FACADC9101FDEF5 +:107C5000BECB507EE46B7E43FEA88E0386FC31676C +:107C60005B0CF11B3B0F1BCADF1C0C18E225EC84DC +:107C7000A1FC38DBCB86F804FBDF0DE56F49F9A7E3 +:107C8000217F92E33D437ECDFB2EBA57CC9E54E834 +:107C90005E8BB4CB26E77E6428A72581DD8EFBF9B9 +:107CA0002CD285E77FAF64AF4B7BAECCF585A1DFEF +:107CB0007B546E67070671FFE6E7266EEF35F83CEA +:107CC000E4FF4EC0052DF0491CDEFB4EE0E736F820 +:107CD0007DF6243A7F43AAD381E748C0EE814882EB +:107CE000C9E9C4F54454C81E4DBBAC7B97E26AF6A3 +:107CF000E88BE80B4AA6EF2B1D43BE5CD1727022C5 +:107D0000AE576E63BECD08C704353F0EBF57F36252 +:107D100044CF7EA94936C0A3AEBF13114D69055F9C +:107D2000C3BF936CE7A97C57BBE2DD0D05C6A7F77F +:107D3000DF7C1FD65166E0D3A67AE03358086FAFD8 +:107D4000B753BCB93E85E23FA87750B8AB3E97C267 +:107D50001FD7BB287F777D11C51FAA7753DC5F5FD4 +:107D60004AE1DE7A0FA5EFAB9F4BF1FDF55E0A0FFE +:107D7000D42FA7F097F57594FFABFAB514FF4DBD5E +:107D80008FC296FA464A7FB4BE89E287EA7751FCF1 +:107D900077F57E0A0FD71FA0F00FF52D947FA4FE74 +:107DA00030C58FD607281EA86FA3F833F5ED143F12 +:107DB0005EFF1AC59FADEFA0B0ADFE2C85CFD57785 +:107DC00052FEF3F5418A9F17FEC72F0789FD4D35F7 +:107DD0009ADEFDF38CED4FEFFEC9744F8EF7CB4169 +:107DE000C9A1F724E4BB11E1EB87F0793827DAD792 +:107DF000C6F27721B41B72F6E2B9CAD0BB0E8EBDB3 +:107E0000781F441BCCFBE97A2742D8DFCB041DCA7C +:107E10007723A4DF7F99A0FBE1488FB9448FCF5F20 +:107E2000CFFA48AE93BF9FE54D1E0CE18A74938F45 +:107E3000FC04D1FCDEEAE359DE144CAF8EAEB37025 +:107E400073D545E96556EE27EA3CA1BAF63AAEDCB1 +:107E50005FAD387F7CC5FCA3EFA5A1FE29FD8F4A4D +:107E6000FB592F6A3173D11F326030B783070C364C +:107E700019C2926C4FDE6008DFCDAE3BF31367E8AA +:107E80009EEC345C52035F973307BDDB3183B9FF4F +:107E9000889F7E9805861FC6E7301F857DB2BC058A +:107EA000389E79B070C0B877B495DEAB2CB372BE93 +:107EB000088763B4988FD1834D867061B66734C2EA +:107EC000713ADBBDFF0E28D22CDE3D99CA3A1F4223 +:107ED000383E7BEAA3334A6608BFD20FB1B944ECFF +:107EE0002FAE56E4BBAFE1F7D729BFF22EEE8F09D4 +:107EF000BFBF2EEF9F7F5CA7915CC47BEEE8A7F825 +:107F0000B8EEAE91B85FBD00D66FB8BF2DE5642561 +:107F1000BEBF5180F7E56DBCDD37A2E8DE51B8FC8D +:107F200094FB2495605FE27A709378DFE245CF4757 +:107F30001ABDCB9FC4FF5E18D587DE1D047AA92029 +:107F40007A19A5F27BCE76A0974178BF99D385EFB9 +:107F5000397EFFD86CF7B871FFA67A77FC50DA3F0C +:107F600003FA41BFD7C3028F923E568973EF922E18 +:107F700080EE96217E3FFCFDC85CA48FDAA3A36847 +:107F80003FBAC124EE378BF619BAB4A13F352E9F04 +:107F9000DE492B43A302E972540C9DD7C577970F96 +:107FA000F620471F10F3FA620A7F6FAF41F0A7CCAB +:107FB000DF2CE86DB3A0C3B2674ED07B49ABDA3497 +:107FC00017FA9D596147BEFE9DE82E7A5EFBF0DDF3 +:107FD000593A7AAF3DFC4FEEE7671DF9D36338B8E5 +:107FE00038DFF29D61D98F86FE10543649E6F35D85 +:107FF000EB8B0CC413A37C4997AA25C6BB275A3F19 +:108000000E8E47E08BAD922F705D30D5EA889B03D2 +:10801000A077000A717DE3FD7F767A8F631173513B +:10802000B88479285C06E4827CE0F16DB3E03CAF73 +:10803000602D94BEAA68715F8CD7B2CEF129D0DED4 +:10804000ACC6F57F4C015066346D9B900A704FF7BB +:1080500057FD11C3F27DCA199F83F8EAA7480F1D87 +:108060004ADDA61BA0BFF9BF2AD9D407D2A70AFFB1 +:1080700006D0A15B45BD9AE5EAF0C1FC9DDE9647BE +:10808000FEE587C53C2CCC763F8CF52B3730A2170C +:1080900079DEBA8BAF8A6E7FAB0F9E853177D23B8C +:1080A00091B547AD09B8AE5CC1B81E0FF977B8FEFF +:1080B000967C83EFDDD1FB91BFE6EF1B9C53600202 +:1080C0000A7A78F741D8A1921FC2BF33F6B949F8AE +:1080D000EBFA7A530A3243FAFA9CC93F223693F4F8 +:1080E000F951C4BF36D6BB7528AE977FA3B81A0026 +:1080F0009673F1FEBE75D106FD40EF2F49FFDFF705 +:1081000035EE8F0BB77FE538C2E1B45A980FF735DB +:10811000BBEC9EA267BF507A84D79B3242A5FDB1CB +:108120000E9443DA588FA32738368AFEDBFEAD1A49 +:10813000BE2B158E4FC5CEFBB992DFD41AC9E19282 +:108140007AEBCA78E4F3F5FE602E5F247C2040725F +:10815000EDD0BFD91C49EF7FBE1CC1FD6FD2AF2649 +:10816000D7C9F79ABDE7904E5E8EE07EB936E7BB81 +:1081700059A47F2F35A4F1738001C33B4453255F7D +:10818000156906BE62617E2D56DCB3DFD163B39301 +:10819000FC9BCE5CA45FF2D81B127F063FE4FF027B +:1081A0009D1539C8D07700000000000000000000D5 +:1081B0001F8B080000000000000B8BE16060F8518D +:1081C0008FC0D3D1F8E8F82F9A7C1E0B7EF584700F +:1081D00026507F0A10C70371141087027100107BAC +:1081E00003B11B1017B301ED00E24C204E01E27801 +:1081F000208E02E250200E60439863C5CEC0E0C4DA +:108200008EDFAE0D6C9862BFB910EC404ECAFC32E6 +:108210008A873E96E0636090E247F097F1A3CA4BED +:10822000F221D8938529B36B09503F0062526D0E3D +:1082300080030000000000001F8B08000000000009 +:10824000000BDD7D0B7854D5B5F03E8F79666672F4 +:10825000924CC2E47DF240428D38848751633D40A8 +:10826000A0B1E5D60151D19FDA0151038244C496F1 +:10827000FFD6DB1CC88380D1060B1611ED8088D891 +:108280004A6FA4F8F85BF50E8F5AB4B68D162B5AC8 +:108290006DA36D2DBE906AB9D8D65EFFB5D6DE2728 +:1082A00099736686A4B6F7FFBEFF42ED669FB3CF13 +:1082B000DE7BBDD75E7BED3D1E7912CBBF90B14F0B +:1082C000F00F94450A63AC70B8BCEF7F2BF3FBEB67 +:1082D000E1DFCC80878C55FAE09F3A63076F7BFA29 +:1082E0008FE32633B6A3B35AF640BD9449D47E7BC0 +:1082F0004FC30B2D61786EB2287EB5F6B6A29241BF +:10830000F87E7B9551A205F00993B19F2A2FEF8744 +:108310003193F7CB787D47E7DC5C06ED2AFBBAFFAB +:10832000A88486E76595634D9925BDD40FFB84E14C +:1083300077EA9F06EB44BD8A319A6A21FE5F336378 +:1083400053E1BD687BE8B51FD37C77F6C8CCA3A703 +:10835000CF63479F7DDED63C707EC6D4E1F9FDBD7C +:10836000F321F8603E13599FCC10A7A6F17C04FAC4 +:108370009B2CFA63EA8B522CC8D88676BDBFD6C533 +:1083800058473BEBAF1DCBD8BA762F95BDED1A3DC4 +:10839000EF6A8F507D839AF0221ED500B4AB1B1E6E +:1083A000D75BE6B5D58351F82E655E8CCD273C2B87 +:1083B000025E7738627B9F53A7DBEA2B83D3BD082D +:1083C000FFBA76A0FC381CDF4BE5444D7EDD3381DF +:1083D000B16E57341203644F0E5C3B9B41DD1D8A26 +:1083E0001DF500FE3A836E7D2DC03D5E9BF5163E69 +:1083F0007FB678967710F138A0BE3108FDD7C1DF7F +:108400004FAAA19D7A340FE198C8F8F3617C311628 +:1084100006FC34F17F025CF03E05AEA63AD9F400CA +:108420005F8C777CD714702F94613C578541F36241 +:10843000AB52BE83F19AB4CBAE97E03B76C2FEDC82 +:10844000A24FB25D638687B1DDED75546E82BA0EC0 +:10845000F0EEFE1BF07F0ADF0605FF0FD151E27D33 +:108460006D44FE9FC2D8832E04005EFF8825EEE790 +:10847000EF8A17437DF3A5450D1B749CF7C0B41814 +:10848000F0C16629F60EE2CBBCC2ADDF0FF3DFA46C +:108490001A73F0BBCDF3F265534AC743789E6C8ED6 +:1084A00081F9374189F887FAEBE3A06C9A0F70C322 +:1084B000F3F047454C2F00BA4D99FBA104FD6C5ACF +:1084C000E0D619F43B3106F482F77521F34AEC7FCC +:1084D000D3144E9FC993816E88C718D009CA67B755 +:1084E000CFF2A19C5A7432E02FE26713D2A93E9DCD +:1084F0004ED3986BB8CED2E99186FF0580FF09D99B +:10850000F1EF2C37B627D86F81DF6F6F8F10DF75D3 +:10851000B4EB54F6207DA0EC25CCA6CBE37A99B53C +:1085200022BDD6FB59EB5EA45BB421633BAB646C0C +:108530000DD1ED76A4DB79342D83353296DB3C54B6 +:108540004FFA6B617C7C5F22DE9741FFD2D07B9338 +:1085500001DC6AF3D07B3307DADFEEE3EF5F33EF62 +:1085600036CCA6E1FA7B6C936196A5BFEF701986B5 +:108570009AC7D80FCD2F19F53E5BFF06F69F3A3FFD +:108580006F86FE3A7C627CA98FEA3D523CC26A400B +:108590004E2533C234C60EC077CD11EC97D777E5A0 +:1085A0002F340F150F8FF30A5B689A80AF852C76F6 +:1085B00008F131A511B0568DE346E703F1D9B3F8C0 +:1085C0003DF4AB36F1719E3537181D2978799175D8 +:1085D000996693A01FEA19C1B74AAFDB5426A01DC4 +:1085E000F84F4305FE53C630CD832FA2F98C9D0B67 +:1085F00042153618F29D450F4553DF4C95F721BEC5 +:1086000010EDB3D391B783F9BF4AF30FB02B70FECF +:1086100087F0153C9F7E5EE3CF9B40E9BA075C5133 +:108620001CDFDDCCE5345777275074438867182268 +:10863000F4B1C2CE03967902851CFAC96D2C61890A +:10864000D4F9A8F108EA6BAB5F18EFED547C41FD5B +:10865000DDD38DEF12E33BC77335431DDEE7466084 +:108660003E55E9E376F862F363409FE9A1C68B19B2 +:10867000F53356F654119E5BB09FB3256E7F15EC13 +:108680002F7F78FE56BFAACEFB5503F67EADFE00C7 +:108690002F0CFB733BDA2B38CF86F47E9DFD300622 +:1086A0007839EB74F49F65A8D0AF5203F4D753E840 +:1086B000AF03FD03A3A0FF7F53BF1FAA8C8CF1AAB9 +:1086C0002A7702F52EF59F9F0EAF059F13EE553FBB +:1086D000BD3A029601E9C9104F163D4FE27785C3B6 +:1086E000E33BE939DA71ADEFD3C7ED88207F39C7B5 +:1086F00075CE378D7F472947851F8D67C624106D3E +:10870000D40F88CF9B02242FB7C558C203CF6E3B2E +:108710003C93FCA3CDF2C061E46BF30517BB1F864D +:10872000DE8C7A17ED48EB64FAAE2C772032B73E38 +:10873000BBDEDD0CFE8509FAFC3689919FB91BEA88 +:1087400009A817F6AAE618A0EFEEC474DF4218E7EE +:108750003617233B0CCF5F473B58B7BD993FF7F126 +:10876000E745A2FD833B45FB20EFAF48B41F7F3FA9 +:108770006F5F344F66660A3E9CF30ABB07E2B10C9A +:10878000F3ED94649AEF23688F4080B7A13D823265 +:10879000EC3716225E82D3DDFA0EC0CBA639BB8A37 +:1087A00017C13807E6CC92DE80F21E2197BB853DCB +:1087B0001B1A27614888BF475CE6DA20E8D7D51244 +:1087C00033DA40CF878F26AF400F749DF404F3C097 +:1087D00077E5315E6FBCFD20FBF114AC33D2D7F7E7 +:1087E000AD394AFA778A97BDDC04E34F01F9ED8091 +:1087F0005753D498D28676AF359CD1EE6D7DD13B60 +:108800003F01F04D69ED1EB884982761E3B3A94795 +:10881000805F52ECFA23C2EE6E1376B815F961CA86 +:10882000B03C06F19F40F720CA6388E45172213EB4 +:108830007EC548CF6D5D725907F279F8088B2A55CD +:10884000E9F309C6EC723945B5C3F3CF826321332E +:10885000EE95A664EF2FDD8EC47761FB2942FF857C +:108860006371251E381DDCBBEEBA16E1BE84C39DC4 +:10887000AD7F27BC77087CC278FB328DF7DF850F90 +:10888000B04F2FA3DCFEA3FD861DFD8E16BF8CF519 +:10889000093E4AAAB1606ABD8DF1BA99EE17A6EAFF +:1088A000FF30AC0F2760E927FC2B61C0AB6DBDC367 +:1088B000BF5310BF29F3F156B0B8F0E7499FA9653F +:1088C000D1FB36401B6FB597EA9D85D1FBF09BB776 +:1088D00024379FCF6CA6E23AD2273E79438EBF253C +:1088E000A5E875553359BC1EBFAFCBC59205C2195B +:1088F000F56B777B2C5F4D91FF6E1713EB6A8ECF74 +:10890000EE62962840FC7E7C75646E307B3F4E3C68 +:108910007694478FC651FF16BBA3F7C3D32EC6E18B +:1089200075C2A7C86E6AAF46B8DD04381439037C37 +:108930002EE8570239ED089EC1E10967B6171D02FE +:108940001E273F74587065F9CE39FF6CEF3BCB8D15 +:10895000C8425C1F05395C161D2DB85C0817CCB3E6 +:1089600052E6747205B81CBAC29C1E005FA55C98E2 +:108970000E1F6331867671083E816755F3125E865D +:10898000E8EABD2C5F2D189E67BDAC51E91A9A47E5 +:1089900094FA513446DF6972BC1EF1097C39407C7F +:1089A0001930681EEE08BC3F1B4B63BE0974EDDC3A +:1089B0007F2EABC7EF0251B60C4A7720CE6643BB81 +:1089C000CEBF89384B78B28D5FC7C9B20DBF4EBCE0 +:1089D000150BFB3C24AFE56C7E26FEDEBAC46DE3CE +:1089E000EF997256FE9E2967E0EFAD4B04BE166705 +:1089F00096EF62EF25367C31D463453424FDB9957A +:108A0000F1796E0A1C3B1AD719AB6A6107D005F2DF +:108A1000C9270EA3FF33CE179F87F82B6E1948AADC +:108A20003AEABF2443FDB74ED8FD994AC0F7068CF9 +:108A3000DF6754E7A27DFD5759CAC83F7780FF80A2 +:108A40007C89F10A15D626A75E1B47F3CEC6671DA3 +:108A5000EDDE3C6C37546F515B12D07F47A07A63D8 +:108A6000334CBE2B5CDB403A2722713C21BE617E39 +:108A7000CB64BEDEBFE3A2AF58FCB60CE76FF19F3C +:108A8000C567558669609C4307BCC840DABC4E1672 +:108A90004D0A9CA829F80937F1B806E0E166C283BF +:108AA000CEA6231E82CD49E6D287F1D067C8F4D185 +:108AB000CA9967EC403A5AF37E4CF009ABCFE7FC19 +:108AC000A946699D924DEEBE0978AAC7B51BEBA3D6 +:108AD000F853F16C9640BEEDC5E780BF73E45817BC +:108AE000CD6371424278EE922C7D15A1B85AA798B9 +:108AF000F737BFE8E77C55AE6D47FBDE67CDC300B7 +:108B00007C15D9F8AA8FF48DC08BC557C5B34DA677 +:108B1000007CDDEEF826E43BCFE47E8DFC5A296133 +:108B2000B8255A9F727E36D9008E5B2CB1E13F305A +:108B30006E419DBE03F5C0FD821EE17A95E223FEE3 +:108B4000572FA2B806D429FE51DCD87D23C68782D0 +:108B50007A628D0CE395C64CD38DA23CB890E25757 +:108B6000258BA31B67407DB53B7E3FCE235006FE81 +:108B7000198052BAAC8FE0DFE83219C641BC4D090A +:108B800003D76148F78529EB8B47116E9C3FB84BA3 +:108B900089FA61FA6E5238BF7CA369BAEFBA00B69F +:108BA000F3D33CABD82AC1176D4909F8C28B7CA11D +:108BB00013FD1F413C05627DFB89D5F4019C06F243 +:108BC000FD183E0FAD18BFDB78919BEC32E0E50855 +:108BD000E23957E6E3C07F3AE2C92BF339B4CB2E32 +:108BE0001ACF076DD00FD3EA5842077C95EA6D0C77 +:108BF000F19C8B78090DE32B17F101A527923089A1 +:108C00005FC32C6AA03C061A246C1F34FAF6BB75AD +:108C1000C2D3B388A792A6A4817C6AF17D87DAF6D5 +:108C20009B7F03BA741C56A2A63ECC8F4E3E5403C3 +:108C30002077367B6DD9FF285F4766F92EDD8F30B0 +:108C4000C85F5003DCAE597602F8F7359C9FAA71D5 +:108C5000FE1DAD3D75AF56F4DFA11E53358AF759A1 +:108C600073ECD61699C86F279117715DDC373149BF +:108C700041DC0823FB841391E1BD5B33121B884761 +:108C800013242796BFE2AD955932C5EF7395F96D60 +:108C90007163361FB4208C77B378E65EEDA679A8B1 +:108CA000602758FD309CF086FAC1213EA9C1FAD751 +:108CB000681CEB3B35C0923EA0DFFADA06D29F4338 +:108CC000F8C6EFA00D2E47789CD5FE5D76BC38C661 +:108CD0009B679FE7A8BF0BA8FA9BD637D5A7FB4E8B +:108CE000656F5A7802E4851181D67AA390F4E0E3A7 +:108CF00012D8D38EB26E139FAEC3FF03BA76334E33 +:108D000077A6CB36BDA394F1F8E71B28F4D84F849F +:108D1000FB251E765992E425323A3F2547D8594F14 +:108D2000599F0DAFAF4AF133952968DF39FFF756E8 +:108D3000B1BED47D8B213FAF7E1E7DDF3BB15B5F3B +:108D4000583FCC5FBD0E3CC24A82FB8362BDC8EA7D +:108D5000B9BD7547DAB83F21F873A8FF28DFA770BF +:108D60007B930CF542A06F3F536C7C1967F38288AC +:108D70000FBE4F712B949F58FC3905F595DFC697B0 +:108D800016DF59E38E2C7FC27EBCEA21F90B0FCB94 +:108D9000DFBF28A9F643D82F169BC7E9D4E223F8F2 +:108DA000EF17FB11E9FD733C9C82BE07085F713F22 +:108DB000CAC1AE4D8BFC08EFAE2D737353E9E02CA6 +:108DC000EF023B968485D876F003B0BCBB5DA3D29E +:108DD0007A7FB788EB6F1376CD7AFE84C2ED57A702 +:108DE000C2FD8B5DDE989FF6AD0E5EF1F9F18092CB +:108DF000DA234A1479AB74637FDEE9C62F5B66978A +:108E000077A62C38ED7C57BFFA7CDEA194F6372B81 +:108E1000C1F09B39F08F73D8392807237D7FAA7D55 +:108E200020EF90EB1FC7CB36A45F09E0A163EF1AD8 +:108E300013F19EBC90F444B590A7E21E4676A4764A +:108E400015D8116CFBF127FCFDD07E9E11580875DA +:108E50005A1A407D57CFA20DA837CB5F54980C7A91 +:108E600067ACB0B76C13DF2FF0C25FD407143A873A +:108E70007E6B16B34412DAD5F4A9B6FD8562D64BE3 +:108E8000FB81E52C65FFA00AF9EE22DA672A76EC71 +:108E90003F948173D9D8F08FD36117D2E1CCFFF71B +:108EA00074B85BEDF76929DF974A2C86FC5ABAFC47 +:108EB00077D2A2147EFDA1E053B63AC07E9BA25F9A +:108EC000B749FD79687CB62F93C99F65ACFF99338C +:108ED00068DD34F8D90D50DBB2F02BEF3F89FE6D21 +:108EE000E1B1CFA2FF7558C9E1FAB185D9F4A73530 +:108EF0000EF86F879514FF767BE75CD283777F7CD3 +:108F0000D37E17D06DEC2A165D4BF46747705F4C2B +:108F100017F4D705BD9B3771FA56F7B204C6999975 +:108F200069A77FF5625372633FAB5914BFAD6965A2 +:108F3000E4DFD52E60182963E5ABEDFB80B59BEC33 +:108F4000FC3146F82F631CFCA1031F14001FD4F64C +:108F5000C537E0F8C54714EE2338C61FABF75F44AA +:108F6000E301BF24483FA6F4A3207F45D7223D9CC0 +:108F70007C3906F97242FAB8FF28DF9D74F0DD49AA +:108F8000D674E56E404CD9BAA617CEA0563139D565 +:108F9000BFB7F84E65C65F15E487D8E8FC9D51B7AA +:108FA000639F237D6DEDA74F5BE9F5637C7D9B9B04 +:108FB0003D3B0ED7E9BF5418DA9B6D2BFD25A9EB7D +:108FC000AD84D0FB0911A72D5639BF8EC14517942A +:108FD000A52AF7DBB785586BAA1E1E1E7FADB0FF12 +:108FE000DC3F1CF711383805A975B7A3AEB2E4A46D +:108FF000D47A48D4391C9D857CBD7E9F28AD71BA3A +:10900000826D8CE7272C96C96F13FAEC60DE2C2F4B +:10901000EE4F75061A72B91F169753F7D13B03D559 +:1090200063580A5D3BC5FE64367C7689FDC92EB166 +:109030003F799FCB88E461FF79B328DE715F509B55 +:1090400088F23855E576482963A41C2F50F3D6AE34 +:10905000AD85F51633CE510BF977385F459B5AB283 +:1090600050A7764622037F55AB7E4EBF7AF52F83FD +:1090700029FA013C058DF84BF0370B8CCE0FAA5026 +:10908000E39FC7F1CDE92C89FBCCE60496E8407953 +:109090006E8BD9E276D0EE62D1CEC4F5CD50BB381E +:1090A0005FFFA5B49B27DA19B676B1B47657A853FB +:1090B000A81DB38D6BA48D7B95353F96DA5F34ADDB +:1090C000BFAB457FE4D70FB5D3D3FA6BB5E6676B7B +:1090D000A7A5B55B2EDA31DBB8CC3EEED0FB33DC96 +:1090E000890ED233315AEF74155EE6A5754A62BE19 +:1090F0008DFF9C743850C8F9F150E1AC16E4979B91 +:109100009E71318C37EF2FB4F3A9D5BEA39DF52CFA +:109110004B8D6F0476D038199E6B999FAFF5A2DE08 +:10912000CAF05C13CF292FA55BE48764E39F6EC16F +:10913000F7DD82EFD3ECA6D00B1D75DC5E39DFCBFB +:109140002EAE27981AA3B886B78EF5D7A7E8E1FF09 +:10915000DFE0FD50E8BD8EBA86BEE9B0C4DBA75E95 +:10916000B9D60BFCD2A94FD7B0FE12BB726D73D526 +:10917000FF5C785F5097D8E0FD215BF23F1ADE1369 +:10918000EA6A1BBCDF66AB4F0B6F97887B39FBFD30 +:10919000ABCAE34CEB5D31D2FF5D85774670DE5D97 +:1091A000E5DC4EE47535AE5D03F5B358FCBF50BF4A +:1091B000AD2FB4D64F3AD9A991BE53C6AB3194BFA7 +:1091C0004EDD2E87770A7B6495DFC2A00FC657AAB3 +:1091D000541EC42C7427C60A78E6823E7B44E5F10F +:1091E000720BBE5F38EA7F74D4E11F7F41FF4943B1 +:1091F000F86B32D8272B2F284FD86F2C53D6D99DF8 +:10920000C1848CF1B983B75DC6F3CD841DD7044EFC +:109210000FCE2CA2FCA68D46663B8EE11B6CEF1692 +:10922000F5AEC0DC9E2A8CB3FED445F57BC15FC78A +:10923000FDDE2E911F66F94356FFFB6FE3FD1F2CE9 +:109240002CF2D5C2771F809F89CD46E293A75C5C44 +:10925000EFF541FF986F763BF09D0E1F6E857A1CEF +:10926000CA9D50C7F2BBB03EC0F2C9F608955DED8D +:109270003A95FF01F389C37789F628D57BDB1BA9D3 +:10928000DC82EB8B71C3EB8B124326FFE0FFB4B3A0 +:109290005E74BD76B57BA9BCA35DEB5589DF235415 +:1092A000DFD3AE53BDA7BD8ECA8EF6283D7FACBDC1 +:1092B00091CA19D2DC8B5CE48F25D6B801CEB26F8F +:1092C000D436E07AA2D65079DC533564DFE4E1E7A6 +:1092D000169C33A4E95FC4EFCE6CE6F360DEFE03B8 +:1092E000FECCED2EC17617348BFE02033372C31908 +:1092F000DBCD77E17E4CA3CCDB6931F21F32B4FBCE +:1093000012B6BBB051F4173E71304B7F8BB09DDE6F +:1093100024FA8B30D99BB9DD75D82ED0A47238CA07 +:1093200092146FC9D06E19C251911F5F48F988AC71 +:109330005F427CE5356BF9D8AEA2207E237F1E9B71 +:109340008ECF5D61FEBC12DB13FF26A77BA1DF5031 +:10935000A3788EEDE9F960073ECF6D12FDB879FF75 +:109360000FCC6424879AA1EDF062DC5CD4F39AF50B +:10937000ED58AFF0F0F1C615C59804F2A98599240F +:10938000D5635C38C6E4B330CEAB4932D42BDD7C38 +:10939000FC07CE1B6412C8A5D608ED506F405D8651 +:1093A0007A5E23B4837AA587CF67DC8527A8DD267C +:1093B0009117E1BB90ED477CE41ABA84A2D12BF25D +:1093C00007F29A78FFE7197D8A0AFAEF4C37332EB5 +:1093D00005B9DA7423D73F9BBA7E3E1DF3D6CE3053 +:1093E00018E5371CE82A9BB106FCDD8A12BE5F7BBC +:1093F000C7456F1663DCACA294B5613DFFF3C7C6E9 +:1094000063BD12DF4379C7E7FF528CF1F84A7C5FF6 +:10941000CF5330357069F3BFF0F1F88519E42E4D64 +:109420005F3F3783E2EB95AB656664B03B565918F6 +:10943000B3E7D34C681E988EF0FCD9C5E1E915F06E +:109440007CAFEB57048F57E4050EBA7C1C9E0A3E96 +:10945000DF8EA080A792CF57090978C4FE744748D1 +:10946000C053C9E10D0878945C0ECF87AA3146CB72 +:10947000B05E72CE3F18B5CFF73EDC3F80EFEE9B7B +:1094800079ADB118E6EBDECDE7F739F76DB4BEE89C +:109490009AC35429174A1F8F8B85BDAC07C745FC5B +:1094A000E0BEDBB785BEB2E85211719B0513B2E393 +:1094B000D5A25745C4FB3AB6B3E85519F19B051937 +:1094C000F2BB87E01074AC8C045E4FEDDF095F3AAD +:1094D0003D4C034D4BBEFB84BC19E03BCBCAE3348F +:1094E0003F9E3E4D4DA7CFC6891CDE8D02DE800516 +:1094F0002FE0371FE6FD9805AFA05BC5ABEED3CEDE +:10950000DBA267C5AB006F68989E95AFFA4F8B27BB +:109510008BCE95AF065E4FEDFF2917B7B323D1B5BC +:1095200043C061EDBF07D411E0D0460987E6804310 +:109530001B251CDAA783A30FE1381B4A91BF15082E +:10954000001C0DA781637094700C3AE0181C251C58 +:10955000839F0E8E6E214756FC3F2CE861F5E39405 +:10956000A36FFE8B5DBF157CD1AEDFBEF945AE0F9C +:10957000BE6D8D2FE4A3E062AE0F86E436C8FDC653 +:10958000B0C05BB6F1D695DBC7F354D8C75B579133 +:10959000793C4F251FEF9F154F2872C5E7B9F93A5F +:1095A0003CA9A4AE9BDB0CDBBA19DA5DE116F10431 +:1095B00025751D1E376CEB70687795E8CFB0B58BBD +:1095C000A5B5BB5AF4C76CE31A69E3B65AF39353D3 +:1095D000FB8BA6F5B75CB4A37DD3E178425A7F2B11 +:1095E000C5B886AD9D96D6EEABD6FC6CE332C39182 +:1095F0001F75E3A8F6F18A5BDDB6786441CC6DDBBC +:109600007F0C4CB6D7BD2CA55E353C9ED55FAE9584 +:109610000713EFD3E9FC4A307114F314EFEA9E35D7 +:10962000230CCF37E4713D7B97FBE20EDA47C04A4B +:1096300011E957F2A74F4D9409AED0592AE5197B8D +:10964000994C79C7815A772281E33585C53E1DF74C +:10965000AF823ACF9B084EE6FB604E3EB2DA83E61D +:10966000A0784A367E53EBF83EB15AD733C04B9EB2 +:109670001FC026A7E52BEC42FC7B588C611EBD95D4 +:10968000AF608D33125F8FBA1D637598BFFC55E6CE +:109690008FE2BE719E9B499827BFBA8CC7D3C72A59 +:1096A000F1C7701EEEE6B62F77425D9AB57A1CAE12 +:1096B0003322AC4DC2F8BE3686E77FB1ABBD51CC8C +:1096C000BFD56634D1BAAEA3D0BE7E7CC7CDE5FF90 +:1096D000276E854A2D87CB3DF39AC57352F0C53C62 +:1096E0007CDD0AEF6F447A86EF5A74B005E8A9E58D +:1096F00072F96751681FCCD01E63B06067DFEAFE65 +:109700005A079E23D084FE64912CEDC57B275E8E84 +:10971000BB79BE825623BE2FCB32BF719CA5FE24DF +:10972000C66371E0AA94FCC071BEF8AF511EAD7C57 +:109730002225E0CC27AACF7D2365FC37DD922DCFF3 +:10974000AA13D64FA97941AAF76779B42FEAD14471 +:109750001CAA2DD23D19F751BC51F4C3DF758BE71C +:1097600001B398E458833238DCBE6FC6D7251CFF9E +:109770000B72EC8F6EDA878EABA9F31DEA371CB53E +:10978000F54B87D5E0F996296D777556A15D585D43 +:10979000857CE8C2F3783548EF0514FF509BBDB4D3 +:1097A0001E66F3EDF95CAAD666E52731CF94F4FC8A +:1097B000A416C5903CC487651AED3732FB7ADBCA24 +:1097C000BB59D4684D54BFFC57C09F4B0EBB18CD3E +:1097D000EF63689D92E7F0C66F79FEC812B11FB3C0 +:1097E00098C542F8F23D26B720DEDF632F8426A518 +:1097F000C86FB987E725B21E7E9EC884BF684FAE8A +:10980000E9B39F2FBA6E8BBD7E2D9B5B847273ED87 +:109810002617EDD72C71ECBF043D3CBE701D6BEBE1 +:10982000A67887B0C38B34A61680695AFED83D53FC +:10983000D1DED57A783CE36D5C7FA7ECBF2D0D249B +:10984000DC06BCFFEDBE49979DCFF0FB447709EAEB +:10985000EB3C4672E6E4DBAB7BECF31B69FECEF936 +:109860005AFB1CD9E6A1EE9632C6F71B3C922D4F4F +:10987000F6942F3481811FB0DACBCBAFFA433BB0E3 +:109880003CE5AB48203DE6223FA5C6A17F1D1471F3 +:10989000E8B6B3911F46FAFE32C18FD9BE5F1FEE04 +:1098A0008B215F5AF9165E6F1BE97B498D91FCADE8 +:1098B0008F8CF0BE0CDE2BA9EFC170EBD43FF1ED25 +:1098C000FA5AE7F7F6F7C08F9F7C329551EC855135 +:1098D0001C89E713F5B4F3FDD60E57EC625C1C76D9 +:1098E000BCA830CC3BECC86BA3BC3CB39CE9B87FB4 +:1098F000E5A98DE5E2FE82E7881296AB0453873135 +:109900003FB76527E6997DC9E312F21F253BEC09B5 +:10991000988681F11D579CF671DC5FE7FED3B44059 +:109920003C8EDF2991F92EDCEFFCF14357CFC7FACB +:10993000D2C82C1549D62AFA79EF3B0F4F6530BFB4 +:10994000EE3D4196A4F849C28DF1A9A5FB148A43C6 +:109950005CFFEF411A7FE9DEEB76CD867EA4C72E51 +:10996000D0DFA4384007D171E9A397FCDC14F0786C +:10997000010F1D6B44BE89198D5C029F2EF7B02F1D +:10998000E33ADD82DFE21BAFDE47F94A4B77E7516E +:109990007EE310BFA9D01EFD3C28339DDBE8F5F027 +:1099A000F8E3BB419E7F26EDDE7F15CDAFFF72173A +:1099B000C22595B5B1DFC3786B3C2EAB1DD975F3CD +:1099C00041293116DEBFFBE07677F55938EE76F7A0 +:1099D00022F263D6101EAC797A776F3451CEBCB5C3 +:1099E0005A359278C6BFEF09613C6FC56E258979FB +:1099F0007D50D2F9539FEED85F65464002BADF40F2 +:109A00002A0ACA7DCB490FDDD07F2BE50DAC78DC6F +:109A10002E7F80D76812E67DFD4B4A7436D6BFFF95 +:109A2000404887F9BC3D707F08F10FE32C7403DFD9 +:109A3000BB34FB7E2FF6FF517E7A7F8C9D70239F77 +:109A4000ADE85FCFC7DBF72F7FC07DEF150E397F05 +:109A50001BFF519CBEDFFB7D8F23CF6077C1A8FC2D +:109A600087EBF79CBCD78471DFDDFBCEBD985FBC74 +:109A7000ECBF3EBCF76B188F7DCAA7A19E5AF19D23 +:109A8000DFDFFBAF80CFF71EF7C8C81FC79F7C6022 +:109A9000D756A81F7F795C8304F5E7843D3DFEF02F +:109AA0009F8B74E867D59333C720FCAB1E9961DBAD +:109AB000D74CB3D3C04F094FEA7C12D48FFEB88481 +:109AC0009BE18C3D214A075D0EEE53980FE6F7DED1 +:109AD000510FE501AC8067AB1B904ECB294F00EBDB +:109AE000B7007E6F78681DEDABA7E3D92C9523589E +:109AF000264B3115F5867D975C7CC1642C5D9437CF +:109B0000B0829D207DEFFC6EC511A0E7D9D9E97721 +:109B1000927DECC62497150FADE7E3F603FD42E90D +:109B2000F47B0FFF716E3AFDDEF1D8F3754EB2652E +:109B3000DFDE8A2FF71564CCA3B2F6EB973F72E90C +:109B400069F3028E3BE4361B9E5B457EDAE31EE33F +:109B5000AF68E7DFDDFBDD5D5BC348674F7436D27E +:109B60007DCFC90A3CB472CC75E22A94C7134F7AF0 +:109B7000343CAFB4F4C997C8BE1C7FE479B74EEB50 +:109B80000F1690C02F39CE86FE0CA09F7283C42B77 +:109B90002B7606939ED030BD6E48CC69D143F49CA1 +:109BA000FCE81B129CFF6F48EC9F2765A0DF246F29 +:109BB00035B7578942C2CBF29DBF728B73F643749F +:109BC000951A919EAFCFC2E7D9E869C1AF21FCE7F2 +:109BD000A4D0752797DB6CF2797CBB87D6C94E3A47 +:109BE0001F177EE18A84F45226BA0FE521FC9D7985 +:109BF0001C13BC8E3C2E01F748723D323C7F1FBEC9 +:109C0000CA51F8A7A4E36D4DB19BF6B595909BE4BE +:109C1000B1DBA5BF64227F3CE3623B748C434E659D +:109C20007A863C72F48FF594FD313510A3FD7635BC +:109C3000AC3560FE82F35C884B93999E321FED0237 +:109C40003996C8605FE86437C07FA7C8CBFB4693EE +:109C50004CE7E7B5DB8A282F429BFED1E11A8ACB7D +:109C60008727F271385D5426FC67911733923F7451 +:109C70006739DB86E5E66228CF1EF66F2EF6C6AFA3 +:109C8000F59EC63FBA5312CFF3F8F97ED5CBBCFE92 +:109C9000063CCF7FE2700D3E9F23937F08CF7BFC75 +:109CA000F929EDCF15F7011886AE4DE579B1DC6FD6 +:109CB000814745E8CF8B3F9F899AE8FFB8C19F4114 +:109CC000FFC58B792C50FA593F956B84FC04402CCE +:109CD000B19ECB06B5B1D45992E20085A2DF426FA6 +:109CE00080AF07E6A9EFA69EB7F7B16D14A7C1F440 +:109CF000F04F6CE7354C5A9F8FF43D0E55DA80B526 +:109D000032967ABEC3BA1FA478082E8D219CA5E294 +:109D1000ED18F4B600AE925892CA72364865254ED8 +:109D200045C194EAF81AC6F33924C4B38FBD4AEB8F +:109D300011D994A54FCE74CC3385AE1E6FC8CC0913 +:109D40000DD38F89F5B45BACA79D74F704F8BD22E1 +:109D5000B0AEDE8174FEAA62BC1C87714FC9F1C12E +:109D60007F83F69BC43A6153D0BE7EDEE3E57EB6C8 +:109D7000556ECA1374BD54D0558D49A9EB5C9A2A0F +:109D8000AC4FFB7B9635D3FA54E570399F5BE3A962 +:109D9000B87F05C8F44DE6F93FB09E1D9452CE59E8 +:109DA000FC8797FB5DE37CB1C771DEC5B549A205B1 +:109DB000AE630733C891556E10E7607ADAE3543E1C +:109DC0008B3208DFFBB4014CABC375F221EF141AE0 +:109DD0002F81FCA30AFAFDFDFD6B8C9F07EBA37599 +:109DE000E53972FC67D8AFAF8EF5A19EF5D5F23C90 +:109DF00060C52DE28B2E3B7E8F7AB91F629556BED1 +:109E0000B0B7BAA76E07E0A56F5A44C87B8CE201D1 +:109E10002F0B3A005E69BDBD59127137C92BE48C16 +:109E2000E95AD1B09C295E8316A92E00144B0FF27B +:109E300091827C96A03207E507E4E92F42BE826C4E +:109E40007078511BA673F9DBD1FF5701414A3E954B +:109E5000492C2D3EC1E7AE7CBE9F1C82F24FDE7CBA +:109E6000AE97B0DE80EBECD8FB888F481D8FDBC04F +:109E7000041594972231BF224BDEE6DBE56D881F87 +:109E8000F3EC79CA7F1678FA8B97AF5F717CD43781 +:109E9000D9E57BC43893EA9B921E67428CF2F37239 +:109EA000DD1477D0CE667F94E9869C5B9B9F8B50B8 +:109EB0001CE661AC7774F634539C6812E7EF80AF10 +:109EC00097F85B3B47C4711AED719C121F9F773E58 +:109ED000062A90FF9A78DCA4C6C7F5B8AAB551BC8B +:109EE00024DF27F2040C1E4F19AA37F3F643F57A44 +:109EF000FEFE53C4456A7C99E322B5BED3C54584B2 +:109F00005F5B39A4EFEC71D84A91F73A5309909E00 +:109F1000F0B7F1BCD78AA84AE7BC2AA36BE93C9208 +:109F20005FF057D9129630F97B5ADF58DF57DC6261 +:109F30008FCB0617DBE3B825222FBACC11AF2D113A +:109F400079D125CE38AEF05F308D3BD3FAC2E9BF70 +:109F5000CCF27DBA3CF4E7256336E14F1FDD399E34 +:109F600091E20ED9EC71C7B48947C3C07F45E7EDD4 +:109F7000696E017814B51F8FB8B02D417E4E64FF15 +:109F8000A56E8A1F6F655E9E77ECD00B1F2DE1E7F3 +:109F9000E9EE0DB3047FA8D17D4F39165D35630D11 +:109FA000FAC3965E94E24FFF19FD5A37D25B41FB2C +:109FB0009C207EB3EC71889DA0D2B72CCAF0CA80D9 +:109FC00003ABA7E7E1FA3587F566944B8B3F3E5824 +:109FD000C5F9436567E6623DB24AA5B856713C963D +:109FE0009BC47998C640A4888E1ED19F3C0363D73A +:109FF000C3742A68F1B2D4F3548531CD56AF12E759 +:10A00000BAC6CC8FD8BE639DDCCFC563637C1F27E7 +:10A0100046F8882C039C55A5E7DB47445CAF787174 +:10A0200092F479699B7D7D1C11F9D011C7774EBEE2 +:10A03000DA68F115B809C8578087687232E5CDD063 +:10A04000F97975D043782901BC201E3E609CFEE55D +:10A050000BB99C38F161F11DFC8FD6F515D04F92EC +:10A06000E139363B9E7CBA1D4F3975763C05A376A7 +:10A07000FC5878CB6DD46DED2CBC59F75965C353A2 +:10A08000596BFF1A84E7D3E2E951079E4A03C00FD8 +:10A090000CF93C2949C0175BC579A87B05BF230192 +:10A0A000BD297E98851727DF17B7021FE3798A300D +:10A0B000D3F1C80BAB0F523C3A22F029ADB6F83CB5 +:10A0C000B31FEAE4779501BFA37FE78DD161911CAF +:10A0D000F4DF88DF7FCB52FD3717FA6B13B0E47AD9 +:10A0E0004B0542E27973EBFC1EE8E35FA23E660F8C +:10A0F000498E73E96D742EDDE9072A2AD3653AEBA0 +:10A100009824FD3B4EB4473F9BA5C03B0EEDEB04AE +:10A11000B4631C4F5280C3C7B681BD4DD9C754C567 +:10A120007ECF68E1669A8803A2DDCD4997EF4AE1C8 +:10A130009F56F670BF53BF459FCE87338E20FF5A80 +:10A14000E764B29D8BA93193740EB5BAD7CE3F1593 +:10A15000ABECE721CA84BE2F13F680294FD07D6275 +:10A16000276F01F7BA0A9FDBCFC794EB1AE5179563 +:10A17000EF66B0E000BEBA859F93AB58C5A28B5383 +:10A18000C6298D87A28B53EE8171F2A7DF6F8F5B9B +:10A19000DD34671EE9AB6FDFD2909FC94EEC6A8F4A +:10A1A0004417BBF0BC8B97CAE096C401CC17D3B759 +:10A1B000713CE8F399AC0786F9F69E7698CF58BCC7 +:10A1C0003F45A3F6F7DD7878E2033AD2295EE2074D +:10A1D0003E39C38C4FA323B6664CA67D11D528C546 +:10A1E000E7D63D14E35697D1FCCF585D41A5D3EE99 +:10A1F00094FEEDB1E76785913E72145692ACF2235E +:10A200008F817E16C56E00DEAA4E5DC6F33613FC46 +:10A21000DCDF7CD717ABF317E2789A4CF781B47286 +:10A22000FB960D6FCEF1ACF366772FDB4BE3766ACE +:10A23000B08EC5D7E23CE00ED1C774BF6C3B8F6ACD +:10A24000F5D3DD639DF7D3655CE757F755AD453A28 +:10A250003ACFFBC98CC747FF179EF7037A1FF5C596 +:10A26000A7115EB49473A7D5C3E7FD4A97D7FA1137 +:10A270007F3BBCA6EC877995DECCF9627C02E04A94 +:10A28000E533F8AF1140AEEE1C9CE6D787E17CD7F2 +:10A29000179F8DFD977903D1C50529F811E7C72CC4 +:10A2A0003FA9EE16C6CF01F531DAF7ADEC31D76232 +:10A2B000686296D0FF3B84FE07F998BD3045BFEF3A +:10A2C000881BF998B764E9634BFF825A14764B9761 +:10A2D000D11F187F8B5D2EAA859EAD75E8D96AA126 +:10A2E0009FAB1DCF9D741C9FD032D2D582D3290F36 +:10A2F000CB2C7918C38A318FF5246B1A33531FE6A0 +:10A3000013EB5C9AD35F72C6F7ACFE2726EDE35BD6 +:10A31000FD8CE44F49AA49711D57846978DE694B69 +:10A32000A1B00F8EF8C3903FD3827757201B7913CB +:10A33000A86723B3E3746E23D2C2A23ACE7F31DF83 +:10A340001F5FEFE6DFC95E93F219BD65031720FFBB +:10A35000F6FA0334EE1B72AC17F9A06036DFCF2992 +:10A360001076E1747AD55486F5AAEE8F6F46F9B26D +:10A37000F46B5592C9EE94F886A5DF2D7DEED4DFFF +:10A38000394E3D3CCA3C148F1A4F2ED2D3F103D321 +:10A39000D753CF59AD2B17F6A38CDBCFBB97A9E2D0 +:10A3A0005EBE2B661AB5B02ABAF4E148A146D3497D +:10A3B0006A8D50BF48A2F72FF85776E17AE8D63970 +:10A3C000BCFE927F19AF5F21D17AE977E23D542834 +:10A3D0000FD965E54914569B282FEB749C099465A9 +:10A3E000A73F57D8D1CEF37EAD76986C49E79A84D3 +:10A3F0007EF138F244D4807D1F455DC6EF97B4F4FA +:10A400008EBA8CE7477497ED3DBA68329D7FA7D529 +:10A410009FDBDB46F72178FA6EA473404EFDE3150F +:10A42000FAE74A71DE18F4CFF3C8178A663FF76E71 +:10A43000E99FEFE04208DE8F9BDC46C98E1EBD4DD2 +:10A44000D6A1FFA3A8640A87E34E963E3F2ADA7B93 +:10A45000D5188B427B574B1B43BBE199CDE3289E1C +:10A46000167E8EB060B64EE77B5C3A233E75F2F105 +:10A470001BC8B753906F8D37707EBFF75B71C4A850 +:10A48000C4E388FC3E22DD1FFB03F26555841DE01A +:10A49000A1F0D1F123FD992AE27B5508BFC14E17E7 +:10A4A000DF73FA1769FCAC854725FFB7BB8DBC99F4 +:10A4B000B82FF8335714E3B8D9D657967DB5ECB119 +:10A4C00065672D3B6DADBFEA73AAB2ECFBF63F8327 +:10A4D00076EC54839C9F9AFFDCBB98B5F0FB423826 +:10A4E0003F7BC41AFA54F922BF1B507E660ECF433D +:10A4F000B1CEC95AFCE9CF72EEC9E26BABBDC5D78C +:10A50000CE76A3E6E7BA45245727B771BA8CEBBBE2 +:10A5100091FC10271F5BFDCAE9FC7C660EFAA1596D +:10A52000ECE9D7FC463DBEBFBD21DA1ACB30CFB235 +:10A53000008F7FDCBD6C930FF9FC2EC4578AFCFBA7 +:10A540007384FC8F5F49F89A83F882F60F6CB3E34B +:10A550002B3202BEACF6FF30BEE2025F518EAF6C12 +:10A56000F70C9C065F73724EE37F6C88EDE8A9C61A +:10A570003CB7B81C1D0BF06C8AC9C90BA17E57AB48 +:10A58000FC10FAAF1B62D37D63A1BE2B7AE00909F0 +:10A59000DEB704829C7FB4E4616C67D6CA3AC5FD1D +:10A5A000B4BE169CE7AEB2068671AE21BFB38C9FD7 +:10A5B000675957B6C87F750A1E766D391049D5A7F9 +:10A5C000BB1CF70158654140B2ED676C5DCCE306FA +:10A5D000C57196C03C81E6C55C2E7C617E3FA2CFF2 +:10A5E000E0F571017E4EFED0C4EE69186F5B5FC668 +:10A5F000B7ED2C7F678BC3DFB1E20EFE5A7E1FD012 +:10A600009638987268E7BA80FB6339629D00EF293B +:10A610004EE4AFB7AF0B14E1D778B6399E0B3FC805 +:10A62000E5F077ACF6CA08EBD0BCE6418A8FF5E4DA +:10A6300088F5E8185689FECDD6984C7014031CA8EE +:10A64000A37AAFE9A37B0D8B3F560C2EFF7D912B98 +:10A65000CF1AF6731239FC3C6AAF886B4693DA0C5A +:10A66000BC9A25B791C7BD2DFCDE9BC3FDED5E9165 +:10A67000973D7920362378BA76220EDB38D83723F7 +:10A6800094A1DD5542DE7A5DFC1C67EF5877620DC0 +:10A69000C0D92B713D69FED465DDE34274DD758D53 +:10A6A000B61DF967EFE1EA5BE92A8CB84EFB5A7BED +:10A6B000F5B85C1DC8AE37170B3E39A3256AF07D8F +:10A6C0004DABBFE443FC5E98646401E60904B8DD69 +:10A6D000D9EB07FD40788A97A4C64783C3F325F8D2 +:10A6E0001F3DBA2807F33522657A3EDAB1FCB2364F +:10A6F00086E729ACF1F69689F154FDD6B310BE6B0E +:10A7000092C10D29F05BE33DEACFAC8F7203B20D2D +:10A71000DF3F38B6C3369EA7C53E9E67318C87F3B0 +:10A72000F6F6AD993039FB783FC8325E9E359EA073 +:10A73000DB531FBD9183F1FB481D8C87FC8FE30524 +:10A74000D2C72BFEE80E2998229F3704B8DFF99470 +:10A750008547355E3237450FBD96C3BF7F20B6C3F0 +:10A760007B35F4BB7E6CB70FF9789794F09E8176B9 +:10A770006CA24CF796F66EFB2089FEEF0306F76F8E +:10A78000F21ACD6918C7A808E40BBD3B9DBE93D44F +:10A79000BE3574DFEC1646F756ADC378422E4BF744 +:10A7A000AB857F08FCBF1FE5BE6236A37CB9C896A7 +:10A7B000B667C7A39E582D933FC76079AF4E1D8ED5 +:10A7C000D76C7189FEC47E9CE55F140B3FFD347E1F +:10A7D000469459FB6D54E7FB73563C8735184CAAD9 +:10A7E00019DEFFB0E296D6BE87B5DF91CB92D35289 +:10A7F000F7E56AF05C5C0DC629126B10B82A43A716 +:10A800007BC9CED8129F8E7C9DBF8A517C41D1DA04 +:10A81000F83E4ACD3D794371CEF319C36B63913E47 +:10A82000FB72ACBCC97809AED30EE458E7FF787D63 +:10A83000C05157E3DC0EA98BB99E630B24E73D752D +:10A8400025019EFF45F05AF1FC6BC5389B6277F8F5 +:10A8500050AF6FF71BE5D82E9AC3E701EB8BEA40A8 +:10A8600021DD7766E0BD154A275F872A01267F1A1A +:10A87000FA46A01DE9FDD5BC1F27DDB2D1D7A2A3A2 +:10A8800045D7BF979EB8C45614DA3714FEA4795A38 +:10A890003FB24C3D21D1FA8A4589AEB52C46742D84 +:10A8A000F16A32D2B3BA595FE343BAC27206D77DB6 +:10A8B000E560B7303FCEC3067DB8BF9C8DAE6A9DC4 +:10A8C000A093B8679EC5D3E87471263A0DDB73B9BF +:10A8D0005FD247B6E35BEAEEF0A15F00769CFC0234 +:10A8E000B355A6F3A6A3B0E7B4BE2A087C9FD657FB +:10A8F000BD79E21C3FE87FBC773F91A313BF349D35 +:10A90000E0E70C2DBBD1EB4A46A2F5D83E391FD764 +:10A910003DE63D5C4F3C1073EA8984F76A287F93DB +:10A9200093C7F3746B673D331EE55A3569FD608D3F +:10A93000FF664E6E37ADEF0249CA47EC9DB392EE0B +:10A9400031B2F44A5A3B479CF3FD275F2AC73CAF1C +:10A95000D7AEF93088793CBF514F04717EC76EF98C +:10A960004510F30F5FBB4569C17C8AAB449CEECBBD +:10A97000ED7F9B8A71AB6EA13F5F0F185F47BE678B +:10A98000AB79FEC9928482C16BCE6FF0DFF5BB73E9 +:10A9900050290CD597F717D8EAD63C967BF87EDE7F +:10A9A000F50FED7797021E96ECCEA3F8D53195CB37 +:10A9B000C1B17DE5DB313EFFA4D0EFAF0762B72325 +:10A9C000FD713E4897DF3CE111798E032E6E1F8D9D +:10A9D000D9B8BF1217FCE29CD7D34FE550BFD76C54 +:10A9E00056C8AF5A08B85D0D2A39DE7A3DC5819C3C +:10A9F000F3BEE6B5FEA74B605ED7AC97E8FE396CB8 +:10AA00007F0BAC1BE3ABD7515CD409D742D39E2755 +:10AA10007375FF8D6E6272A57ED6188C9FF648A462 +:10AA2000079CF9BDD73DC1F30A1733FDD6A6AA0C82 +:10AA3000F9BEAD5FA0FCBFEB1C7157A75FB5372017 +:10AA4000E24553D9393C5E54FF8D7A7DE4FDB56310 +:10AA5000E0DF6392EBDBED5E2ADF6DD7A8FC7A4086 +:10AA6000E779818FEF7F9A74873A3015F96DEFE1BE +:10AA7000DFE65C09AF5646B85FFFD9ED1F763C0AAA +:10AA8000AF27B1586E92F49641FA6581A0C385CC88 +:10AA9000AB07EAF03E591E3F9CF411D453E0FBA0F3 +:10AAA0004FA2F5DD4A9054CCDF5B80F89880FD73AF +:10AAB0007F7E01FE0ECA69E07E3EE0BCDFE61F83BA +:10AAC0003BDB77CB157E6EC1F9DC928BAF0B3EED95 +:10AAD00078F25BB3906F8E6F94A298E2BC74F7EB40 +:10AAE00094D77ACDE31E4DE141C823A8D72C3E650B +:10AAF000ACCD8DF2EDE4478B2F86F8EE89DB082F85 +:10AB0000163F801C4544DE56446ECCC07F23E49142 +:10AB10001F770D56A0DC3BF9EA789675CBEF033C26 +:10AB20009F61B16ECCC278CD352CD6CDEFB9315EF8 +:10AB3000FCEF80C7E2A3061E03C37C4FA319E47792 +:10AB4000EFC77C5DB4765FCD37D19F9EF8139572C9 +:10AB5000B41B1E299D847E5FC38F02645C1B9EE92B +:10AB6000FC22CAFB85DBC53D4DC29E7E16FFA9A710 +:10AB7000E3EBB33F6E52CE1B05DE9CF8FAECC7AA9E +:10AB8000239FAEEF69CC9B6DD829919FD6F09CF3A3 +:10AB9000BDC9F5DF637B1E453DBCF4577784306F3C +:10ABA000FB2DB5AF08E9B167675708F3288FA96691 +:10ABB00008F1FB5682EB63273DE24149C497EC79EB +:10ABC000B1ACC724B8FFF37E978679262B767B78C5 +:10ABD0009EE5A1A54407A8F3FCCA7D99F362973EC0 +:10ABE000B0B948E7796FF6FCD89D2EDA0FBD01D6D3 +:10ABF00067384CB6FCC0A17CC3FED3E74FAE10EB68 +:10AC0000C815873E9F31BFD9CA4375CAFBC541BB32 +:10AC1000BC037E68DD68C2BCF835D2DC2E753CE82A +:10AC200031F1DCFD5BAF8CD98EFBE1EFEEFC490826 +:10AC3000CFA90FED638A7CBF77FB6B4E7BAFEF71C3 +:10AC4000A127AC7AB6BCD93D60B770FF64D9CB1EE2 +:10AC5000F277963D2FE7D4635C63BB8BE6F5E8D1D2 +:10AC600003456741FDFA875DE1D91C1CCA8FB5E831 +:10AC70003694BF2CE8B4F4FB3FA23CDAA13C664119 +:10AC8000AFEB1FDEEF467E71E27546FF7E37BFAF4A +:10AC9000C241B7FED767E17AA7E3C1536ED4436FD1 +:10ACA0003D25B13155E9DFB7DEFF139EAF2EE896A3 +:10ACB0003D3F3DF9C51F4CA6761AAED346A2E3D957 +:10ACC000C84B5388DFBFF70318BFF5150FE5C9B7A9 +:10ACD0007EEF26E2FB3FA86DC4F7CBEEE92A42FFE8 +:10ACE000A3D565166954F2E7ADF7DE4CFC78DDF3C9 +:10ACF000371789FB4B8BB97E308B11BE6BB65D4A23 +:10AD0000F05DCBE2C48FADF72874EFC84995B53C30 +:10AD10009C81AE2F09B9F9C30E0F2E52D81F307E79 +:10AD20008B7EDC0B8AF89D257BFE0D5926A89F148F +:10AD3000F1B13D41D9CA83F2A23E59215AADD8B9E9 +:10AD40008ECE01BE5DCECFD3031E4C813709E356B4 +:10AD5000CAF333C770FA301DFD78FA0E54EA0C7C42 +:10AD60008EED075C866F82ED3B912FCCC75F25C6C9 +:10AD70008779FB71DFE00F45FC9E33E6C8ABBE610F +:10AD8000DF92D99847ED0E713887E47FA7C8531634 +:10AD9000F2FFA7235CAF60DE35D16DC0951C63CB9D +:10ADA000B7F6D8E2EBC379C42E21D7F6F7302FCA15 +:10ADB000871EC2E75312F9C52BF671BD7FED268FB2 +:10ADC0002D3EB862DF45222F3E250FA96A582EADD1 +:10ADD000FCA0EB841E70D2D1A9175E083AF28BB6A4 +:10ADE000158E2ABEBDCC95A0FC76905BF2F396ED55 +:10ADF00071513EF13B0F1DFCE595C0E7EFF45BF2AE +:10AE00006AD7B343F20AF846FCB5EE9DC232C9EBED +:10AE10003B78EF6E267985E719E535C0489FFDD36D +:10AE2000F4ACC0FF30BEEDF2795D163DFB71D07918 +:10AE30000EA13E17CFAFBDFD9DEB2B29BFCD815F8E +:10AE40004BAF3AF5E59D413DCB790EEE0759F8B48D +:10AE5000F068F1E9D2EF2EA77186F8D7E253CB7EE6 +:10AE6000653917E0C4A7F37D12F551617A9E8539E3 +:10AE70009DD5E1EF9D74B8591DC6594CD91F45FEAB +:10AE80001D299F6C45A84AE8836812F9FEAB071993 +:10AE9000DDDF82FE0BEE1F9D7A9AD1EFB5B9C2BA03 +:10AEA000926A67A233E48CE756278478BCEEC1101F +:10AEB0009FE7E5219DDF37A8C4441E693FED23D1FC +:10AEC0009E09CE332F4472E612EB75EB9C5A344741 +:10AED000FE5007DF6946A8FC732AD0293A49BEA96B +:10AEE00006EA736FAFFB9C0AF48E9E2F7FBF1AEAAF +:10AEF000F36E1FCFDF9F2D4F7201ABEE363FF3B9DC +:10AF000066A8ABB2C41AA07FB584DF2F772BC8B573 +:10AF100017F8BD33C48C3CE0BB1C0F337D0DC3F36D +:10AF2000CB71433D9FE0D631EED191E7A5FCD04EE9 +:10AF300017FF6EB4FD59FD34A8FA0C84CF530B30C3 +:10AF4000560D8FD3A072B8EB036ECADFEACCE3E3F1 +:10AF500075C2781DD48E11FE465B5AF75C28399C69 +:10AF60001E4AAEDCF630945785B89EFF72C8DAC729 +:10AF7000E3F18CF79F1CB383C75F4F54D0EF3628A3 +:10AF80001FFCFA6BF0FCC49772687FEC153FE793E7 +:10AF900057FC9C3F2ECFED757D069E37782B6E4279 +:10AFA000667B457AE8662C2FCC8D2F0D713B42F7DE +:10AFB000B65F7995C2FB0DB40531FF5B32B8FF2C4B +:10AFC000011117005E3A0CA6BB6B5074EC79B98A7C +:10AFD000D2702249E3076DE3B332B04F205F979FF1 +:10AFE000CBE50BD6C864AF5E6AE4756B7EF313D510 +:10AFF0001D833ACDE76B389F899E4439AEE3AEF4AA +:10B0000024C6727EB3E7AD1EC7FECFC612BE9FC078 +:10B01000F522DED33B59C8F1E4C7B9BF6FE523AED3 +:10B02000788FFBEBD6EF015AF981382D848F291FD9 +:10B0300017D17ED07332F9E90D87EC7917E78B3C95 +:10B04000A4739FE3F1BB731DFAEBFCC7BF407AED1D +:10B05000FC11D6C77786843E2B61257F4FFEE9CF52 +:10B0600025E39E10D19FFFBECC6C9519A9BFE3B814 +:10B070005204A83E78AE3A17E3CC4521BE8F60E576 +:10B0800077BB7585F25CF639F4A2C5CF671DD1AEEA +:10B09000C6F99F75847D99E353F4AB717C0EE57519 +:10B0A0001EE3799D1307EBBE45BFFF76D8C512FAA4 +:10B0B000703EE30747783EE3D4C3FC5CE3A3B81ECD +:10B0C000C7B85BC47E5EC6A7FB999E82979CBA7C7C +:10B0D0005BBDD3C7E96BE5454EE2AFE85E92D47E37 +:10B0E0002669FCF73A731BAB6DDFB3E7ECF98C0D07 +:10B0F0008CDFA7157D95FF2EC1D42376FA2A429FB7 +:10B100009E27FCC868D2243DD9F8AABDDD798116F6 +:10B11000DA5F3A6F84FDA55F84C4FAC0A2733A3E39 +:10B120006DF9A113D9846FE1150B69F83C66C7A7C7 +:10B13000C50F805705F56C9E61C76B418B1DAF85B0 +:10B14000313B5EC7CCB7E3AF386EC75B69EB676C6A +:10B15000EFCBDB1A6CF5CAD5E7D9DA5781C14AAD16 +:10B16000D7F47CDED67E6CDF5C5B7DDC962B6DEDF0 +:10B17000C72716D9DE9FB97BE9A8F8E0ACFE95B6E3 +:10B1800076161F9CFDF8BFDAFAB3F8C03A87DFC025 +:10B19000B85F1315F9B423F1C139611339FF53F3C3 +:10B1A0004138D7C107A394F73385DDC5BC68F4EFF8 +:10B1B0002CFBFFBE2BD083FE6D1EF008EAE36CFE75 +:10B1C00040DE133FA678BE33BFE194ACD3BEC726A2 +:10B1D0002546E7364A818432F051A7CCFDF8DB657D +:10B1E000F9CBA9FB5B1372B91E9990CBEDD0DD6052 +:10B1F0002FD13E96E63093ECA6CC867F4714F01E06 +:10B2000012F76630B6755D7313DAC3C13A3D0F5558 +:10B210000ED42F48B74B608F26E1FA03F4FE79B9BC +:10B22000A0DFAE9441EFC390976BE64C09602CF51C +:10B230003213CF9B807DA473DC792C2CADACC72559 +:10B24000D390FDD13F01A638B8F44C3AD7F341EB87 +:10B2500078BA0FF103806180EF1FF2DF3DD6A3942F +:10B2600087708558BF7CB0B886DABD7C15481FF062 +:10B27000D7CF70CAE06FBCECE67818292ED7BAFD9C +:10B280009B41CCCF79B98EE73958CF17087C2DC8B0 +:10B29000E5F90D2B16E798FCFCA88BF6BF71BD8570 +:10B2A000BF87784382CB33D6310EB55EBBC37E0FEA +:10B2B000C0E13613E39D2B9E98437967D63AE1F2BD +:10B2C0009778FCEFF2BFDAEF1BB93E979F4FBF3E76 +:10B2D00097E7A15C0605DE977419D0230FCB1F37C3 +:10B2E000CD42F980E74909EA171F06570DF03E27BE +:10B2F0005EE54224FE82455F7C04A6FE955C3EFE30 +:10B300003C1673E17C7E79D5F220B61BEACFEA07C2 +:10B310002687FED24B79A6AB08F4D6890B24B2FB64 +:10B32000309E179FC716947661E8D61AEF972CFEC9 +:10B33000DE8B201F735994FAB5FA67B87F93A21772 +:10B34000572EC94916407F2B5FF6D0FED3FB6B4EBC +:10B350007CEF2B30AFDF2CFDF32378FE80C507CBCD +:10B36000D1FE5DB145613AD0FDE680D19E8BFE4BAA +:10B37000E3E8CE97CFF88E8FE461E566EE0FAC7C04 +:10B38000701C9D0B5F191CE29731A9FCB244F0CBF5 +:10B39000CAFB6BE81CB9F5FB1CCEFEBBDAF93D1706 +:10B3A0001DE27796BBC23C5F5865F1CD38BF4EAD0C +:10B3B00081EE112F2BE0BF4BC4CA46F97B3030BE63 +:10B3C00089FE13E3F3F8A9E0D3F94F144C12FEDB26 +:10B3D00076ECFF95A7F694A33E7B76FC0363695D4C +:10B3E000347974F8B0F4CAC3C29F62C24E4505DC1A +:10B3F00060A7681DF23EF347D1EE67D3370F0B3FCE +:10B40000ECAB8A41FEFF293926CEA1C1F25121EDD4 +:10B41000F093F3D11FDF2F533C3284CAC8D21BE014 +:10B420000B863069DFFA3D60582F9D29F4CA0FBFA3 +:10B43000F1D6E73A797CD7EEDF89F894E5CFC5E01D +:10B440002FEAF7F385BF316E8B3DDE796E52A6F59C +:10B45000E9901FE7F4DF306E340AFFED67B99FD63D +:10B460007F8B1F453AF5D7717DDC9FF4F3731F6026 +:10B47000BAF83D5976BFCED9CFAF855EF91DFAD463 +:10B48000B82ED3B87DC801FD18E4E7F74CA581EAD2 +:10B4900094220A6E9F51C8EB666E03170FFCCE2DE7 +:10B4A0001DAFF3823E3EF68DE3EB7AF03EC75A8E37 +:10B4B00067ACE3EF6F825011DFAFB4F4E4A1CFF0DB +:10B4C000FB65C5BD3893451CDC39BFC9208FDC380E +:10B4D0000B7916DF279FFE0BDD77B1275FFF39D28F +:10B4E000FFC4330A9DC3F6A983EEBC0C703E8A7A72 +:10B4F00017E4E76C8DDB1BEFE312DD1BE2D5F93AB5 +:10B50000D6A76913298E1E673918777FEFE11A5A7B +:10B51000D7BE26F0F37F01A7F53147008000000079 +:10B520001F8B080000000000000B95590D50545768 +:10B53000963EEFA77FA0A17974236A74490B08A2F5 +:10B54000C0B4808A24D974D45187106D759238356F +:10B55000994DABA5380874C6CCBAA98A3569D0C94B +:10B56000B831B5C56E52B3ECACB3F57093A94C02CB +:10B5700099768448520DD5225130EA803119CDCECA +:10B58000A488D932D98CD01D67FCD9A9D43AE79CBC +:10B59000FB5EBA6970924DCABADCF7EE3DF79CEFDC +:10B5A0007CE7E7BE2ECAF4CBDA128026A5234F2B08 +:10B5B00000F88DE453690E1055FD9900752AF8C204 +:10B5C0001900E1687ED6561CCB5438A0BA003ECC98 +:10B5D00092006600DCA6FFEE0708B65702B8019A93 +:10B5E000DBDD3C96F4E27B7C148C2A3C4EF4EE735B +:10B5F000054A13EBBFDC37337EE3BF72F0B85F5907 +:10B60000BD2FE35016A9AC87721CF16F0B9EF3EAB5 +:10B61000AD452C6FAE360F60099FAFD273005DDE73 +:10B62000888B823678228C72276E29BCCE945BD6AA +:10B63000FB80A239014AA36D0380F2D322364F0862 +:10B6400045A4BD0420F13C4D075431D8BF06A42ABF +:10B6500080583678257CDF951EFF10701EEFB37979 +:10B660000EE3FB34AD0D5C28BFCB0A8FFB712C01C0 +:10B67000F0FD3A23F1DC3C2F2DF2AF00F8DC5E0840 +:10B680003E9DDEAB6D705F46E2FDEFB33219AFFB5E +:10B6900034603BBAD2A37206EA119F0F7098F54A44 +:10B6A000E8097CAEA967891E92E8FCF895A7735853 +:10B6B0002FEDB087F4107A42A4D8F332EDD77C6C2A +:10B6C000479AE6F1D2FA54BD82E5A04316C03FB5D1 +:10B6D000E29E1AC20F7C508DCFD31373FB023C271E +:10B6E0001FFFBA8BA6850756DD9B3C8710AD37F749 +:10B6F0006F6A2B3AB07F2E80AA4248A90070E0986A +:10B70000E9223B3D6CA78AF26654081CBC8893C3AF +:10B710002EDE7FB9DE8E6AD13C43ACF366855CB524 +:10B72000689FF794ECDD8722E08BDB004B914F7430 +:10B7300032CE7F2845AFDC8F2EBE1E1D28F7A04ECF +:10B740008DA7DECAB3E2B84B8EFCB40CDFF7DA0289 +:10B75000DFD3F0DC63BF93C189387CF6CB34BD0EF8 +:10B760007159F06647AE2F63AABC9F5C6CFD973998 +:10B77000E4F737250F220E314B3C8FF46C8E7C6240 +:10B78000F5E1B8A6F723EB188EB7B4403DC5437575 +:10B790006FCB4AC27139B4EDD3705C244380E3624D +:10B7A00016CA4339D72E141D6E41DC211EB89B7872 +:10B7B000F9CFDAE4F8883C83EF8A01FA9FB1F39875 +:10B7C0001A07E61882813980327B2C826FAD3038BF +:10B7D0008770EF39FE9D020FCA8DE9EA5AE2D7A2BF +:10B7E000F7ED8FFB92F8775093995707E95C1CE7C8 +:10B7F00064077E4478EC3A7ED9EA44FB82FF1DCE92 +:10B800000399E33B346D7CAB9EAC643E4F89EF946F +:10B81000F80AAA712BE110FC14F95ECAFEDF9F85BD +:10B82000FE7CEDFDDE855B32587FC8425C7A2ED906 +:10B83000748A3B9C6FA6386D79EF46F918BEBFD16C +:10B84000B7EB6EC273B766E173301E56A453DC1DAE +:10B85000C178F024E2B694E2165529A578A8A27919 +:10B8600009CBEBB28ED4729CF6C840718AF1C0F15C +:10B8700081F1A0511E29D5303E787F31C77DD78810 +:10B88000ECA379289AAECFE7F98A4D34EF1A59A57F +:10B8900071DCCB087D05C56F7480E58401E6936B90 +:10B8A00025F0874B93E3D8C9FAFEDEC0279E25E238 +:10B8B000D9A12893E2C4A9C8665C89F93E89DFDF73 +:10B8C0006C7BF4C08B7329DA2A65E2E36E4DF011CC +:10B8D0000238CF0578D2CE7B60F7DB35EB3BD1BEAB +:10B8E000DD67157EBFD4F7C44A8C29A85EDB76825B +:10B8F000C61A7F78A585F46B57C0837E5982A30F43 +:10B90000F3ECBD9B474E5844382F22FF760F7C6BDB +:10B91000914A3CBF64833454A1FBCFF10F5F45FBD8 +:10B92000F6F423AE30957FA82EF3ED4EFC8C4963E0 +:10B93000CE02D4F99C56BF564DC378592EEC7C47A5 +:10B94000DB7E20848AF9B37DE788770DAEC039E2CB +:10B95000596CF4CFB994CB7B2E5C7606D0DFDD56E4 +:10B96000DF228D47D819CE982A3F427CC07D55945E +:10B97000D78DF85251DFF1767707C5D778B7E2CB8C +:10B9800045CCE306DF21E41B9985B86D17B0C1CE25 +:10B990006EE5231BD68F1D3E80BDC8C7ED830D7598 +:10B9A000544F76BC68B93CB640ACB94DEBF0DF53B0 +:10B9B000E8EF220201E53787255DA7F855F6CA347E +:10B9C000BF1E91C02DD13AF5F298E193DBC89346A2 +:10B9D00078FE7305E5057B2D89E7F8AF71B0F613A6 +:10B9E0003AA791D62F48AC7FEA77A3D98349E7C617 +:10B9F000B5CC9C2B0EFCA3000A6E2BCC0B6F94785D +:10BA0000FC9EE23D4C354F85211BEAF59A2CF0C196 +:10BA10003CC97175F39991EC4184E6A72EDFC759B3 +:10BA200068F7C7C43B8A9B1522FFC4BB249DE3E093 +:10BA300015CCEB38AFF9D4D301F3189F0BB3960AAA +:10BA40007B894735AA585F1399C77154ED036F146A +:10BA5000EDDD7141F1EA840BE1E5A4F22AECC37259 +:10BA60000BB7F3495E9B42B8341C425C70DFAE57A3 +:10BA700026DB1F3470696C1F3D391BE74DE194F7DD +:10BA8000063EC1147C7E4D7F2C9F8AD38C6C03A70D +:10BA90003CC8239C40792C8BF8034308C6ECA9BC16 +:10BAA00031F1A170235CFE40F906D79F37E4E37FB4 +:10BAB000195B90271F1B382CCE16FC69F609FF373F +:10BAC000EA8AAEA33EDB0CBEC0F3822F76FC9FEC6D +:10BAD0004784AD6C7FB7043F93A6DAB7B3D3B2C542 +:10BAE0008A3E6930700078C24AF1B7F3D064DE351F +:10BAF000183834A4E0D01C9026E981F19BB105FDF3 +:10BB0000B6CDE0F59DF50A3F42FE6CE8B4C073CCBB +:10BB1000DF2F58CFEBDDC24FA97A9AFA99FAFE7F50 +:10BB2000F54CF553ADE9A785B070929FD6BABF9694 +:10BB30009FB0E273DEDB6D177EB936B8300B4A1367 +:10BB4000BC48DDBFBA5DF4936BDA457FD93D3270F6 +:10BB5000E01EB4BFA24FD1EA707F6C6485A38CF263 +:10BB6000DD19D54B226291CA8321B4EFE850E1265A +:10BB70000FCAAD1895393E2ACF56E869684FC5D926 +:10BB80000A47412693C2ED2FE37D5C5F63670ADFBE +:10BB90002D253943ABAA08D69633150EEA078EA297 +:10BBA00065C42BE9EC9FCED1B995C3EA521BBE7F89 +:10BBB0007696C271B5E6DFB6FCC28672B7662B6CAC +:10BBC000DFC991DDDF267F349D91357A3E7146E6EF +:10BBD000758D3F577419E76B8E5838FE8218FF1227 +:10BBE000EB6BE1F3837DF3DDDB32123CD86AF0B618 +:10BBF00022DBF3421DF57DB31DDC2FAFF91B0BD704 +:10BC0000C5AB7739FE93FA9D225FC76A0DF5BCFA82 +:10BC1000D6939CC7625D12CC42C127679D783D8454 +:10BC2000F65D7D63D44ACDF5CAEE512BD5E1AD6604 +:10BC3000BC1F103C3179551F95B758BF81F9762448 +:10BC40001DA2280FD4362BF9A569D49C8F59A97E43 +:10BC5000FB8D3EA9F9A58F78DE407D3FF1F12549A6 +:10BC6000F7E09F27FA8E311F9B3B2598398FDE77AF +:10BC7000ACA675BB20FC2CD581D43CF27D839FF50E +:10BC8000ED29CF0D3E7EFF2BF87888F88857066C9B +:10BC9000084A888F371EF0674571DD8DD1744729BA +:10BCA000EA716358615EFC155E72FD3B43FD1A3A12 +:10BCB000F65A54F6110EE6BA8933D7ACD44FAE8E8D +:10BCC0007CCEF8D5458EAF225C1E824023D9F95038 +:10BCD000C4A145D1EEBA3191576A2336AE2B0F413C +:10BCE000783FD91BEBB7F1F3D05B12F721665EAA60 +:10BCF00037FC5B6FF8A31E13AF1B535DE390A8677F +:10BD00007068B27F1E5C30199F5A10F9A3362CF26E +:10BD100047CC1256C90FB13209DA28BF10AE283706 +:10BD200036DBC1FE097589F31B3B27CB69269C9D39 +:10BD3000B47E72DD7B3D7B06E7CB6BAAA817D72EBE +:10BD4000285521CF9DFB8454BFFC26C52F7571E07B +:10BD5000BA574B7507E50C455B4B213F8153AA5FF2 +:10BD6000863C0559D3DD1FCDF19CD15F9BF3F518BF +:10BD700038D4B78535E187E191191D54EF1A962B18 +:10BD800021EA1FAA5D22FF37FEDFA6F51508DD5563 +:10BD900079604F27BEFFC3967011F90FEF139F9084 +:10BDA000C9A7E66E7B7E31EEFFACCBE2A5FC02BEFE +:10BDB0008E22CA973F99F5425D05C56DA7C54BF721 +:10BDC00087896A2544F93488FD34F0739B4EFD4A17 +:10BDD000B0F78FE23E417CC1D11F91BE497CC1FECC +:10BDE000FC8FD978FE062CF93988C3865EEC0350A7 +:10BDF000FC86559F5B297F629F7E3D7B9A3E7DB886 +:10BE0000B080EFE1C3AA67A62BE3CE7D7AF32DD1F4 +:10BE1000179ACF9B315E09D7E688C4F7D3445F38C1 +:10BE200053A2BE30D6776CD0C5F9227B31A5F3F989 +:10BE3000063EDD0369A2BFE891F47CE2ABB49FE368 +:10BE4000A3D922FCD78C798B78006FA29396619E40 +:10BE50003CFFEA7E9233F1AAE4B57138F92E509F87 +:10BE6000BB43500126B6862F537F7DA3CBCEFD6703 +:10BE70003DFAE729E4F90EA3BED17C2FF63F2DD081 +:10BE8000CAF7A056D8CFE30EFCF7B71553F3C24458 +:10BE9000EF3E2BF1C2EC57F839F2A8C9E07B6A7E7D +:10BEA0006932F8DD94C2EF54BE56BB8CBA66F0B569 +:10BEB000E57CFA41FE4E30AC6836EAA307FEF73F58 +:10BEC000EE225CB0AF665C8CBE04F162FFC7463305 +:10BED00074C2F533839757E9DE8780B4542B8C9373 +:10BEE000BC5C8C8BFA8FE593BF637D37F302989728 +:10BEF0005FEB3FB690F8820631FEBB5EC175497AB2 +:10BF000035851D9404BE9CA35EA27EBCAF30DEA826 +:10BF100057913527A1578F3AE6F44E134F9234C00C +:10BF20007E94A5C149FD7EF04DC5AF27C519DAF352 +:10BF300038E5BB5A830FA0C673A94EAE73799877C4 +:10BF40002D11E177B94F8C78FE23E2FB8985CF9FD5 +:10BF5000F27E45A891DEDF98E7008A47B815AAA3CC +:10BF6000F99E7C059EC3F99EF30DC590743E48E290 +:10BF70003E1CB4C473F9BE392AB37EC1D16BB985F6 +:10BF8000A41774ACA27AF7A091374EE63B7612BFA5 +:10BF90004374EE4C002BD987FBDF33EA7170B9D8BC +:10BFA000DF6AF0ABFB7CADA38CFCD53763B1822696 +:10BFB0006D36FAC206977FBB6B49E2DE72A7BE33CD +:10BFC000E9DE24E4A39D1457472FDAF43A89EEB949 +:10BFD00037DFFF2ED93B8CFD08CA6FE9B385B2C8A5 +:10BFE0005F1FA4E9D40F4020F00D8AEF3DFDF5C599 +:10BFF0005417416A657F3CDFBB3DF6EFB8AFE9926D +:10C0000083323B34F5BD97CBF5B767C90BD4CF600E +:10C01000FFF220F533472316EE672ACE5631DF8E26 +:10C020009EA97217D0850BBC0E92DB34ACFA098F37 +:10C03000A6E1AA77EAA80F39BB82FB19E96C959BA8 +:10C04000F25125DD6FA99F192EE4B969CF5E97C023 +:10C050002B763C8DBF3348902FF8028593F8D2D8C9 +:10C06000FD36D7FDC65EC597CC1B735F9B4B65390C +:10C070002F125F10CF96B0E4633E1C116363EFD1C3 +:10C080005CB2639725CCFE6DE9B488F75D62440924 +:10C09000BC2F846D22F9F31D7A847EA8B5EA730162 +:10C0A000553C6DF4F9A72F05EEA67C78FA81403156 +:10C0B0008D396EF11D24F15D6505EB0DD246F6FB61 +:10C0C00078B7E8B352FDE832F639DDF0B87F9AF779 +:10C0D000B25B667B6AADE2FB0FF567B331BF9D33A0 +:10C0E000EAF73ACC63F4DDF19C112FEF82DF82771F +:10C0F0003D1CC57D33BC40E4CD4D98375B70FDA63B +:10C10000872CDC5F40B5E8BFFDF83FE5AFE2767510 +:10C1100052DE7AF8CB7B85C7427EDDB476725E7BD9 +:10C12000D8E88F1EFE8AFE28EA32EA701114897E52 +:10C130003DC341DF19AF0F593485FB11BD90E2FBC0 +:10C140004EFDD149CC671ECC674398CF68C43A7581 +:10C15000DA354D9D4ADD6FD6A99692DFF2F79FD36F +:10C16000C72FBD9ECDF9330DF289905FA03688634D +:10C170009366E89AB2BF0536B2FF5AE1DB93F867DF +:10C18000FA719CFAF2D2A97EBCEC12FE6AA6FB1BE5 +:10C19000FAE11F17B4F969BC2C0B3EDAED7BB1E173 +:10C1A000C3788C6C008AF39612D19F8D7F53D2296D +:10C1B000CFA39E79B6A43C3F3E5BF4597B1E91F819 +:10C1C000BBECF192DF725D6F8A8E58290F15756F87 +:10C1D000F931C52912EE02DD6BD619756FBD5DD43C +:10C1E000B975E63DCEB4D7E04D0BB842221FE7F05B +:10C1F00048EBA90EAE33EADEFAEAC9FE2E8691D5E7 +:10C2000073508F477D12F74F1B7C9669F9B271F31B +:10C21000E2B7E99AF575F932DBED57DDF4DD66E456 +:10C22000DA23F45DB5D9E0B9B7D8D33B46DF67DF91 +:10C23000D116EF23BC1CCE720D799B69C4C3CFF01D +:10C24000D6E7A6FCE7C8D3A9BEC6F4CB3BE87BA3E0 +:10C250000B7B107A6FC693772654FE2023D94F228A +:10C260004ECC75ED2E8DE7A72DFA5CCA0750EA9EDD +:10C27000F61E989A775B4A4E95931F4E1F1F2EB756 +:10C2800026F9EBEAEE4031D78DBE13B99E8C643EA1 +:10C29000C9069F541E2569A3510F27F3EB2AF18B82 +:10C2A000FC7BE4C4BAEF122FBA37E5489EA47AD9D2 +:10C2B000F3AE737E92DCF188C2EBF17E54F47066CB +:10C2C000B29E3F663DC7C3421E3A3DC4F7A2371631 +:10C2D0002F7D4EC01F92695EB8F5177C8F877DBC9D +:10C2E000DEE4699A25E49B83F6D87AB163CC4FD813 +:10C2F0001DB602CB09F5DBF497B9EF07EED7621F45 +:10C3000069DCEF02CC05E2E11B06CF361AFE5A8645 +:10C310004D2EF1713984158A8765A0C26334573177 +:10C320009071BC177485F2EB32357A5C2AE7E7210D +:10C330001579781F8CF1F3FBE9D310EE7B003C2AD2 +:10C34000CD5742681F15AA7BC2D10729BD4473D5BA +:10C35000EC2BC8374A31D3F92D818B0A574CFEE1BB +:10C36000626C62F8BBB7A9F75249E8BDCC0776CA40 +:10C370009F4F1B71ED75083BE3E3C0DFBD4CBDEE85 +:10C380005161AD82FADFA7823D1DD71F1994395E36 +:10C39000FBC73C3AE537AFDBD8F73FB86F1EB72491 +:10C3A000F05845C2CE1ADC47DFDB96A97823667CBD +:10C3B000A2D3DADBEC16BF47A1A4BF23792B233627 +:10C3C000EE5F647B48A17EF4876EE137FA5DC48935 +:10C3D000726ADA24B848BF731408FB4CF9359882A6 +:10C3E000B22A68BDB08B3E195F7489DF4B9CFC3B61 +:10C3F000D72A8DF091A2B9F26DC7D7C731960BAC91 +:10C40000B7735B7CE2E9AAC4EF46DEC8A98B12C60B +:10C41000A7E4F3713DF2DA33A2D427A3D7AF26F70E +:10C42000CF07DC5B9FA53C207934C60702E0A1FC66 +:10C430003E130E69543F645A87587E90EE2CA7DF56 +:10C4400095C85D9FA2BF1E3578F641BAC803AFE814 +:10C450001B3DC4EBCD39762FE15F61CFAB24FEDE0F +:10C460009F1560F91F489DF35998AA2FF167267808 +:10C47000ED005F35E17D334DC8C76E81F9FA945DFB +:10C48000CCFF21DD79984607A66B3BEA7710E3C025 +:10C490004EDF49D3C4B914A3C4E790F17D34F461ED +:10C4A000A64E9FE06FCA7E262546974746F9B0778D +:10C4B000A587BE2F3F9B6DF752DCD9C83E47C23ED1 +:10C4C000F37CD3CED4F3C9EE7B4DBBE5C4F9A6FD16 +:10C4D00053CF0F59160A1C9EA4F588C3510387BF7A +:10C4E000E743419F4F3898F6A363F8772BCDC0D52B +:10C4F000C44123BF511DF1A1DF4CBF23AE07D305BB +:10C500000EA6FD784DB3B31C0FFAAF6CAA7D7F0168 +:10C510003164B4F9001E00000000000000000000BB +:10C520001F8B080000000000000BEBE66760F8516D +:10C530008FC03BB950F9E8D88713959FC88D5F3DF0 +:10C54000212CC3806037713030943243B021143FC6 +:10C550006462603803C533982178150B420F133B92 +:10C56000030317100B01B1143B7EBBF85831C56AA9 +:10C57000E51818149410FC7C4906866D402C204563 +:10C5800099BF46F1D0C09DC6A8FC133AA8FC377AE3 +:10C590000C0C622608FE491DD2CC6F03EA6D0762BF +:10C5A00000454552DC680300000000000000000068 +:10C5B0001F8B080000000000000BC57D0B7854D5D0 +:10C5C000B5F03E67CE9C39F3CC4998C024847012F4 +:10C5D00012081A74080183453B3C545AA91DD1DA4C +:10C5E00068BD380424411182454D5B7AE7901713EA +:10C5F0001230D6A0881407048B55DAE8456B6FF12A +:10C600007610B4D8EBED4D7B6DABB7EA0D681151E8 +:10C6100069EC43ECFDB5FE6BADBDCFCC992101FAC1 +:10C62000F8BF3F7E9F9B7DF66BEDB5D75EAFBDF645 +:10C630001E973C8D053FCBD8A7F807E932993156B4 +:10C64000984919538C410D53667E3A212BCF3E7584 +:10C650009C4BFEE349D97953F4FB75C64633768784 +:10C660002883BF08E6E7898C058F95B2B0CA52557A +:10C67000997EE6319E3764897D2AE1D7EC726B9C06 +:10C6800053EEC0052C8FB1168DA77779023B313D53 +:10C69000E52E4DB2005493621558CF9C03FFAE8532 +:10C6A000F40D7FB28DFA6BBE303A8531F8777DBFDD +:10C6B0006F1878582B63D3194BC4FBEF7DCB99F9D6 +:10C6C000AE95984C0E42711D0BEF3620F53105E703 +:10C6D00095C03E31CF064D0794ABC1F0B40D909F8D +:10C6E0000670633F3572741AA68886A81F9B1BF4D8 +:10C6F000FD405967A801E0FA7DAD1A76C1A7DBCBF2 +:10C700001E61AC9CB14D337F158A5533E651924C76 +:10C7100007F83C152C827032F64DC66630F6278D30 +:10C720008F67C13587C9848F0CFCD9F8FA2FC6D71B +:10C730007BE338E3EE59009FF91F8EF06E2A1DA8A7 +:10C7400067411C6FB4BC01E6B03E9E4A555432D6D8 +:10C750001167BD0AA4EB9D835B9660FD179D34DFD6 +:10C76000B6B8D6AB003E0ECC9C983708F05D84E39B +:10C770004ECF8CDBE6F7D427AB09BF31C4F75DE1C0 +:10C78000FEF3379431E62A3DCC102FA78E3CF119E9 +:10C790005CBE8B7071A0DD2628C3F1CD7C96DC4D8C +:10C7A000EBC2C70BD4E9351B089FAB69BE161DB998 +:10C7B000EB603DAC79613E38C8108479FE6B19C2DC +:10C7C000E3ACE88D3048A5D2E3A684E3032EC7404E +:10C7D0003DC79F1D340E2BB2C689F88AA05F2F1368 +:10C7E000EB36F0391A47D579DE1B8E2D6017C0BFA6 +:10C7F000AB018F30B60EFF7D0A7D69153C6F8DAFA2 +:10C80000B09E0F1C01C4B60DDF3027E5B5CFBD8348 +:10C81000ED1566AB0FDF1D9F4C8B225E36D5DDEE2E +:10C82000598770386ECC8BC1BA3AEAE4232EE8C738 +:10C83000110BF4CE1B95C1A7EFB5D9A943B6F9AE3C +:10C8400065FEE0312F21F022DA07A27D2EFD5AE9A4 +:10C85000A9782475C849F393EDFB71A4FA6D71C6EC +:10C86000529332F9F6B24808A6CE7ACC2B23CA4CA2 +:10C87000C83B2321290CF51EBE22321FF28E49A986 +:10C880005018C6EFC9874E8B19BB9FDD9A3201FF46 +:10C890008EB664280CE90667CEF7B951FADEE18658 +:10C8A0007D577DFAF8BF620EA2D30DD2603D73644E +:10C8B000F8864BAC934B7FE1CF12E0699314FE688E +:10C8C00010F7735180E812CA134A01A5F3D51AACC8 +:10C8D000AC29B89E9AD54E61ED4A0DA5F3D4029CC1 +:10C8E00057724B03D25D918FF6417BBE9A0A407F0F +:10C8F0001BCBD41D0E2903CF6126119DB63B399F5A +:10C90000D8E8CCE617CF6039C0BB8F39793D3F9F5F +:10C9100017D3DB4257FB87E907F1743163FBD96218 +:10C92000D3F4E177CE073641B184F094A99C3E233D +:10C930006668A13FABDCCCB797EBEB420BA7201BA3 +:10C9400084FE013F5A08FE3D21AB3E872305E58862 +:10C950008722A415A0D3FC65875348EF3ACBC24F7A +:10C960008D1C3B8CF3E8C85BD4DFC0327C2A978FE8 +:10C970008F4437B9FCDB65D8F2F8BF902D5F8EFF8E +:10C980002FD1898E598EDC3067D3784E66FDDD91CC +:10C99000357EFB256CC801EBD43353355A613F39E2 +:10C9A000C36A0AE901FF8670FFE23FF07B5DE78022 +:10C9B00004FB4FF5054C6F00FB837D0A7967280760 +:10C9C000AEB3EC9F969CFDF75ECEFEFB135B41FC85 +:10C9D0009AF5CEA7FD151070AAB5AA89E3A9AC6790 +:10C9E00000D3F43EFCCCC23C9019C067D423C437BA +:10C9F0004249661F3F81FB0F885896A27FC6756C1F +:10CA0000CBDB4EE58A6A929C60E7A95CEEB0C1D0B0 +:10CA1000D55332EDFE4BF0E12D585468C327EB653A +:10CA20005CEE844328EF3AE22DEC4DE0EB9EE79676 +:10CA300033630ACAA9E64804E844419A9A897451C2 +:10CA4000CB538591BC5446EB3B512E380D6DB181D3 +:10CA5000F833F4AB31656C1DF5EBAC3AEF6689BE8B +:10CA600077121F54582C22417DA58211DE153D4AB4 +:10CA7000F0037D154A0887964D77693AD383C89BA2 +:10CA8000316F44A70C435FD67C44BD11E9F0B47903 +:10CA90002755EC2F93EF653C6FE6E0C9243AB3E0ED +:10CAA000D2229D442F5AC463E2BCB479CAB1413B3F +:10CAB000DD88766DF84F80A7239FD17AB78FE3FC8E +:10CAC00001E7750DCCABA3F0F2D012C06F9DC4F599 +:10CAD00000B62077FE518207F05387F851F418E131 +:10CAE000CBC24B7BFEC43CD40398AF80D62577BE27 +:10CAF000ED20AF159B7E62F12998378DD756C092F5 +:10CB0000A370BD3E9E5685FC64A47E72F1D7362E7E +:10CB1000FC4A8CF8AB4AFCB143CC93FE60099460AC +:10CB2000F86194EBD7E0BCA0BE12E2F3B7E087F95E +:10CB30005C23150E375F3EAF36BF9857707878DAB2 +:10CB4000705E959979A4BF3B055F1BA15DEE3C46E5 +:10CB50002A6F1F17092D467EEAE7F3439E6F9F9FBA +:10CB600053E7F35B25E6E7F4A94407CE607A7EAB92 +:10CB7000869F1F5FCFF4FC7C418253D135C28F3535 +:10CB8000BEA2BD90524665E05C2BE97C9C341C61E2 +:10CB9000EAC7A173BCC6A4D85A1CCF11EC247EE20C +:10CBA000F04518F6AF22DE2FC434526F22BD1C9818 +:10CBB000C9AAB19D2FCC56E0FEF6C5D802A8D7FE73 +:10CBC0008943E0AD366BFFDC2565EB6F163C2B052A +:10CBD0003FC8C5DBEFC609FCE7D0C1EF9EBD82E8C8 +:10CBE0007CB3C0572E5EACF680B7CD388F5C3AFF71 +:10CBF000DDB39338BE9E291C767FAFD40E66E18BE1 +:10CC000009BD2020FAF70A7837F9B45763F0CF71DD +:10CC1000C1D46C64B7DD92FEA20965170663BB70D0 +:10CC2000DCA6A03E07BF07EA988CE375097ABACC68 +:10CC3000D1E33E0AF06C8995E73540FA5349CAC200 +:10CC40008B956E05FE8CFBAD23AE517AEA750EF71F +:10CC5000487406FA14D1713ADFA4CC47FDB8CDB7B9 +:10CC6000F39ECB017F1DC18A1A127F2189E34BE21B +:10CC7000A8DD2F49629E1C3F80B7FDC81F2CFADB40 +:10CC8000BAFC3A4AC745CC08DA07258017199776C7 +:10CC90000D0B937C67C8BB33F809CC934DD7058443 +:10CCA00087E7B19F2623351B6565D952D6EA303216 +:10CCB00078D81293695D6FBF79E24E4799CDEE91B6 +:10CCC000B97DC1AA059F56409EF847DE779B004F6D +:10CCD000D524C4FB25A4E3B1752C89FBA707BFA30A +:10CCE0005D21457F89EB3176C5908AF33869E92B60 +:10CCF0002C447A78BB20B14D177B089EF6429DF4F8 +:10CD0000B223825E594452ECFCDA465F4786A3AFF9 +:10CD1000B17526A993BF5162BFC572572DCB47B9D4 +:10CD20009D2F25532AF4DB25EC40007F00C7CF4B15 +:10CD3000DB739CCEFD15C64EA4F30F055DE4453AAA +:10CD400057CB309F404431516FCF1B5CBC0091EDFD +:10CD500046BD9F7F3F82F81E3B2BC564E8A7B462A7 +:10CD6000C8443CFBE729A4E7FF8B12FB10E1F094D9 +:10CD70000C92FE50DA62D27E7EC06992BDA7CDEAE7 +:10CD80008D44699DEF648B6DFA814BAC03D88A9119 +:10CD90006475669D37715D99DD33EFA8D6588DF5C2 +:10CDA0003C04E738B646D047730AED214DD007D092 +:10CDB000812A43B95167BE80532D317419E104FAB9 +:10CDC0001FC3E1E82DC2760F2C57B93D67B297110A +:10CDD000DF1E59E0C580FF905E653EEE7F4A4E82C1 +:10CDE000AB1B6904C60955B0A4011D7B049E2CBC75 +:10CDF00078049E5C6C88C9A8A755F4AFC32E5CA1CB +:10CE0000F06103E917ECEA8841F82946F8FC2CC5E3 +:10CE1000707DB4603282F4DAA634FFCF37613DDA38 +:10CE20000E3BC2A691A1C75C3A547CB0EFB2E47548 +:10CE3000B61E3452BBD3F5888882F5E7695EE2FFFF +:10CE40000719E73340BF5310BE79FA0744BFCC3708 +:10CE5000EA9CFA73B4388CB7908F293AE98B2EA1EB +:10CE60002FB695805E88F691C64CDCC78E1296343C +:10CE7000D15EEC95227C5F84D9B540C7AA2167E9D1 +:10CE8000AF4AD093658F3A5A54DE7F3D70BD2CFF78 +:10CE90004B92F695C3CA023D907E07B06F601C5F4F +:10CEA0006E62165C3F469AE0FEA06F64D9DF09A36C +:10CEB000860DA72F5B762E6E0FB47373DB8D8C9768 +:10CEC0009CF1AECD86FB9CDBF914E398D5A6FC4C17 +:10CED000ED1476CC66A72C45E29B9E599F4E277B8E +:10CEE00046CA83F508017F05FAEAC42258D7F562DD +:10CEF000DD992167F11D4748A67D5E839B07E9A563 +:10CF0000A480EAAB5A24458388FCD9E842F535333E +:10CF1000CEFA85DC0FB15ED23F855CAB96A2DF9086 +:10CF2000A15E57D1FC941D2F6D2A6B22FA30AEA55D +:10CF30007A5D9577A6D08E5447EB5391DF5874D61F +:10CF400095834FCBBFD5164F923D00FA03F11F4B8F +:10CF5000BE587ABBA567A4E9D6E0FBA6AD82DB315B +:10CF60000EAD97F895BBF79E08D22D7C137E254118 +:10CF7000AF6097205D7443CAFD78491A7744BA358B +:10CF8000CE6D5F0EF33D0FEDC2A6971C0CF9F49227 +:10CF9000D03B7D15D3186B6829DA8C6963CBD43EFE +:10CFA00005D2A33D130276797D347133E58F6DABE5 +:10CFB000A4F4E8B6AFDE84FBE2F81697413AE1C785 +:10CFC0009F7EEA003A6E10EB7DE00117C98363DFB4 +:10CFD00096922E18A73121995EB4EFF28D52E4D7C4 +:10CFE000C7BA1A4BD930FA40C36B20B8F2B0BCAC08 +:10CFF000940DB37F1A13EB57A31DD59874462236B0 +:10D00000BCA4F5F1FCE649B8793BE2555BD11F6958 +:10D01000E9ABCF23DD4D27BB97FB07B530F905669C +:10D02000BFF1B9D020E41F946387904FB51FB92298 +:10D0300084E31ECCBF9CF4DEDB5F7785D1A77297BB +:10D04000DA3C49B7C17357408D11BFF7F565ADC3E1 +:10D050008F65E7B07AA2B99B552941E42B9EF03A3F +:10D06000C0C73C5F3885F8F9FDA044FD5BF4953BF3 +:10D070005F67CB345A8F741EF455A39AF813CDC34F +:10D0800051C553ABFC3728CF60BC3764EE1FFAA103 +:10D090001C7B03F703F2B39602DC2FB57D5C3FF4F3 +:10D0A000E9C7CECFEC6F0BCE75977038BB254FB864 +:10D0B0001570D73DC5B293FAB9FDA9F433B48F5AB0 +:10D0C00095814814E09857DD9F427AB6E6D135C283 +:10D0D0003CBAE3AC8FDB29FD1AFA7B5A35DEBE2D54 +:10D0E000AED1F7EEEA7D5A03E45B75FEBD3BFCA4CE +:10D0F00086FA65AB61E5F7F17C44E47DA2DCB4F22D +:10D10000BCBC23AE537FADECE7FCBBFE24EF97FD28 +:10D1100042E4C538ECE5F94887DD41D10F7B85F263 +:10D12000E8F0413E60F1FFEEA018D737303FE21340 +:10D13000C46D2F0F3D99531EC929CF6EBF3E1E12DD +:10D140007830B3EB950838D3FD3029BB7C5F6EB9DE +:10D150009C556E64B7DF14FFE85EC2ABC1DB6DAAFD +:10D1600004B90EA9BB6506D113D04599C346A75E85 +:10D17000A48B69C87FD87CE4930E93695FAF81E587 +:10D18000AE63EDE5B01F2F70703DBBC5A2BB12288A +:10D1900082724705532E2DC8F403BC54A3EF554C9F +:10D1A000CBFAAEE7FA0586A73FF3014E7F0AEE13EE +:10D1B00009F58608936CF43512BF83FDDE8776C6C9 +:10D1C000FAF820CDDBC9B2F78595461C422FCE195F +:10D1D0001FE6CBBE5E40F3E3FEEFD7DCE43F740412 +:10D1E000619E057CBE97D6D8E613827916F0F96663 +:10D1F0007D2FC99E675AFEE4EC8B152874705F86FC +:10D20000166AB49F7D5C9E58FCA8FDC845215CAFA2 +:10D2100083FE19E45FB0F8D048F3EF8A1FEFC3F341 +:10D2200088EEF820A51EB1DFDBC2351AF6D7E10380 +:10D23000F98274A34450F630A5A2B911F9B7E335C9 +:10D240003729075A35E7474A05082483ECE948920D +:10D25000E45B2F6BB4F169B7C53F3F8E13FD6EF0F1 +:10D26000F12DE16E39D95731EA74B83CA1F748BEC7 +:10D27000DC1560B1E1D6E36A872AF854F476A44756 +:10D28000B5A5FA8CFCC9BC07E8A3D6CE47F97AFD50 +:10D290001ED6CB85EBE5335DC3EA5D2DEFDE8BF467 +:10D2A000DD8B7D4D473CCF0CE13948DB91BB1AB19A +:10D2B0007DDBEB1C0FE78A6F67CB58929720EF2935 +:10D2C0004DAF7F304CF875E861D21BA1EF70A5C15E +:10D2D000F58446CEB7D9DA1A6C5FCADBC74A362363 +:10D2E000DE46C2CF3F3BB83FEC877264B3A3F00C7D +:10D2F00078D9CB5EF1A07C79CDA5E3BE39F8FA45AB +:10D3000034FEED47F8BE013C11DE7E0F7843796CA8 +:10D31000D14766FF689B916EDAE243443F5E81AF7E +:10D32000F47CAA73E613E27C1FF6C745442F5679B6 +:10D330008897F7C43FEAABA0FDA86FC6D45B1DA3D6 +:10D34000F9FB4AC2C487D2F54BA03E247E03FA0BF8 +:10D35000D23EBB0867952E3778B9B7DA648D3EF4B4 +:10D36000C3029C36B90F72FB4748375A899EF5DDD8 +:10D3700013E2781D095F878E4CCA1B1C06DF1979E2 +:10D38000C5F9E786B841FC3A21E4D786B2583DCAD0 +:10D39000898D28B7605E770B79D32EF8FAEFD11913 +:10D3A00080EBA470BB2FC1AC3F9D6990EF627CBF46 +:10D3B000F4A0CD0FF3532B94E4CE32B4DF068938BA +:10D3C00012C29F9C986524DBE07B8F5BD48B30AAD4 +:10D3D00067C927C5CDFB49E8DC0F91081A4964D11C +:10D3E0003DF931B287132CA1DD0E78EE291379C5F2 +:10D3F000A4BC4F8D911CD49CA64E790FCFE7F6AB01 +:10D40000E5B7EA28377C05A2BE94E0F5CBB3DBF79D +:10D41000A8BCFF2EA5978FE7E1F9DCFEBAF46F9167 +:10D420001CEA2910F3D1F97CBAD816DEAE3CBB9FBA +:10D4300091D6C56DC03AD8D63950AB65E52DBD59EA +:10D440009F05EB62E3C34E3D9455EFE0EB93C60CB2 +:10D45000DAC6393438E18CF4704CD0413AEF8E2D75 +:10D4600062F98C7D5E71CE699F057967AC5482FC50 +:10D47000C3DF9ADC3A7F1C63CB5ADEA1FDD3887CE4 +:10D480006214EAD77FE0F99EAFAA068CD3B8452292 +:10D49000FEDA887C00CA9799AC04E5ED4CC563C9F7 +:10D4A000592E8776B992BB014FCB7C5C0E2D0B6653 +:10D4B000CBDB653A97B7CB42D9F27659C239AC1C6F +:10D4C0005AD6F26E169F5ED6B384E05926F8FA3229 +:10D4D000C1C761D14AEB413F3E1F1710E039BAFB8B +:10D4E000FE52D4FBDF917A177D1DFDC1CB3D74BE8A +:10D4F000928B27EBBCE341CB5E1472A2E12C766ADF +:10D5000003CA09B2F7C13E98F2D78F779EC2C76BA4 +:10D51000C479103DF796D6FB33E31F0DF2F14B9023 +:10D5200008687FF696DAFD720DC887A7FDED78AA28 +:10D53000C07EA723BE188F1B39C7F6E9728167DB4F +:10D5400079CC6484EF6FA5A3950AF76BA5E9A8C908 +:10D5500043FACCDF4B47697FCF5FB9AE0FCABAC081 +:10D560003BCC6B8A6D9D72D627AD1788755AA11872 +:10D5700059F694B54EB9787AA7C923A37FFF9DC306 +:10D5800097917F68ABDABB08F95413E2CF86B76393 +:10D5900020E7DA2BEDEBF2D517EA801F2DDF955F40 +:10D5A00020D9C65FBEEB9ECB8B01A665DBF26B502C +:10D5B000556BDA25F0BCC5BDB9DD860FC07705EA2D +:10D5C0008D7D02DED3F05D21F05D9DAD3F2EABE29F +:10D5D000FAE3B2F0B9E17BB9A01B9867FBB7689E8C +:10D5E0000FBF837CF48F897B27E339AE85AF25A1FC +:10D5F00022A283A3428F3F0672CB3EDF37B74C0B8C +:10D60000A09FF4A802E53ECC4FE7794DE4B741393D +:10D61000DAF73EDEFECD6DD3299FBBAEB9EBB22467 +:10D620002D6F39BCE69CF0F124C511B9C26D50F5DF +:10D630002F8E58BF82F665E0E226C4CF5D472503F2 +:10D64000F5B5AD81593F330C6C37BC9CCE5BA11C4A +:10D65000B5E3C35F979DF784B3F31A83BC2D8EC4E3 +:10D66000760EC27C33ECE7E549413F8CBD379A1F0B +:10D67000E3A29C720EE62F41BFEBECABEA16935E81 +:10D68000E9930D57D9C8F48D8498962B04B7D69B8F +:10D69000963B0E3CBF283FE3B9477B7CF03EBB5C2A +:10D6A00051403FC7B80F45EC0FA5E5D87D48BF876F +:10D6B000A09F23C4D75A2DFFAC389F4D66AD83A3DE +:10D6C000E502B2E3AC7987D2E764FD59E7101BDCD1 +:10D6D000C9575044E7079A5B3F5744F127FC5C2148 +:10D6E000D6973EDF437DB26BF6BCDD1B86993F9D2E +:10D6F0003CA0DE953A407E73174B31F42BF9415F25 +:10D700004B615BC0E900D91BBD1AEA8FFEDA66F2F5 +:10D710008F9D42BAA1F58892DFD32F70D7555B90C9 +:10D720008FF54E8DCB6EC72AAAB2EAB1C1DEF913CE +:10D73000002EFD3285FCB12C1614E7F0BD673C6766 +:10D7400051AA789C81529518E0293F5F50412FC71C +:10D7500090801A39A638C9279F7D5E923E7717E3DD +:10D760008C4C0782CECEB1DEB7E2498A97833FD296 +:10D77000CBEF024AC6F881BEF89E7BDFAA4496D85A +:10D780002C619C8A323F9C42DABC438E859C80EFA0 +:10D79000514897B5181F2691DF4DBAAA6512EA2D98 +:10D7A00005638CA97834BA5265A9681DE4BDC61317 +:10D7B00040222CAA4E9AEB83F52C4023A098B1F27C +:10D7C0008E9A368CA729186F7C80F14937A8E1B969 +:10D7D000412C9F60AC4616DD234D9D8BF14A969DF2 +:10D7E0009F00FA443837C68FDF87704D7672FBF999 +:10D7F0007C275F474D11E73040A76F01DDF99501A8 +:10D80000CAFB5B4EDE477ECA1060D1E6A7B830186F +:10D810000B239E9BA2FC7CD1E1B3CE177BEB316E38 +:10D82000C33A67BE0C0A709EBFAF3276DAF7DF22CA +:10D8300067F679637B9C9F33A6F78F76D50308C77D +:10D840008642D64FE7D02ED68C74DD1D0F6F45F87B +:10D8500001273C0E51C03357CC07D67F2EC2A52AD4 +:10D86000D1D43725B437B83FB75D31F32E45B80E64 +:10D87000F33840953553FC10FEE17912F9BDA18BC8 +:10D880007AA7D0FBF5883E1BEAAF0F154C25FAAC02 +:10D89000AADB9AE607E5D85F2481EB7275C79E394B +:10D8A0004EC07B3BD2F8C58C5DE37CBC15E3BEEA81 +:10D8B0009DBAD8DFCD1AEE6F5788B1E33514AF9516 +:10D8C000721550375B2A468BF81DE8CF15948F38B8 +:10D8D0002F38FBF9AA5A127DC0AE0FFB0D93EC3026 +:10D8E0004D11F63CC87FDC673D16DD1F3F4871884F +:10D8F000F9119DE6B1CEC9CFD3DAE387B3E23C2B71 +:10D90000A5D82D4E3A6FE5FE7D67ECA57B11FF1E75 +:10D91000766D5E0ACFB55EBBE230C61DED880F1195 +:10D920001DB1DE0524EF3DBAB5BF72E2D612FC7C14 +:10D93000C525E2055D55CA878336BD3D37CEE86B08 +:10D94000CEE1E3FCD496090FBC65D3AFE4508CE183 +:10D950003EB1E28BDA907E6D74A4B64CA4FA9D7150 +:10D96000E301A49334BCC28EF1087A61BD57123F23 +:10D970002A163059F33BF87AA3D903EBBE0DAA233C +:10D98000BD6E6BE27699671C30E8B2CC7E72E930EE +:10D990003F5B7C43EEFCFA043D3E1CD7EF47383634 +:10D9A000230C940FDD8FF0788019FC2BD2C19605E3 +:10D9B000048785C75D6077A7F09CEA6507F96F2645 +:10D9C00014A5C86E7785053E73C661DBCEB20E0224 +:10D9D000CE735D87EFE23A9C7FFA3AB016F89BC1AE +:10D9E00043BFE8EF63289D9191B7161EAC75B1F265 +:10D9F000609FE50D9E819E77C78DFB71DF77C6AB7B +:10DA000028DDDDB75043FAAFEC6349E4EB95411EE6 +:10DA100027FAC89685AD1AE0A5A38F45508F9BB80D +:10DA200085974F14E59DA1065EBE8597AB215EAE3E +:10DA30000A7A5613CD87CB284E590E23CCAE125EF0 +:10DA4000EE12ED437DF29CC9D02EA447177E0EFD49 +:10DA5000154DDC5FC150848C26E94C7FC57AB3A993 +:10DA6000717F4704FD23A57D87D64D3632F5B60B71 +:10DA70007C94E8B16F7D0EF547E16729D9B273DD7B +:10DA8000E76CFD6D13FD39F558A2CCE61FB1CAB79E +:10DA90008A720DCBB19F18EFC72ADF22C671879417 +:10DAA00075B331D5617ED84F38BB5EAFE8C7679597 +:10DAB000D7F171CA4B0EA566DBC6DB24EA950B7F56 +:10DAC000617B3C4CFBC7A95D49FBC9AA67F1954442 +:10DAD0003CF2C05BCECC3EDB19AFA3B443C41528E7 +:10DAE000E2BCBE2CA1CF213FB72AE2297252DC074B +:10DAF00021E08B15A8AB007C6E5817F4DFE13E45A2 +:10DB0000FF9AAB6204BA679007BA2D853FAEAF2586 +:10DB10002594EF963FC0A2BB43472E1A96FE980964 +:10DB200074678FCF6CA9CACE3787EF4FEB83986F9E +:10DB3000AACB2E8F45B2CB23F3B3F375D1EC7CB8CF +:10DB40003E2B6FC1B155F8791F8C1B7DF3089FDC0C +:10DB5000FFFB60A11942BB2751C8F5B9BBE38CFCA0 +:10DB60006F5DC2AFB711FD72E4AFD2E8FB16F4CF20 +:10DB700091DF3844A9ABE5FCBE79E8278D0FDE8B39 +:10DB8000FD4E5685BF7C16CBD28B405E4E56515E05 +:10DB9000AE88628C05B3F4A407DDFA0DE8C7C96F3F +:10DBA0008A31D9E64FB944E572DB65D97D0A9350D5 +:10DBB000EF7125B87CC9D4932DBB95CBA512D8099C +:10DBC00036FA01F12AA13D324BCDA77ABEB0D1AAD7 +:10DBD000A13E384F273B0DEA84B0BECFA2DF309381 +:10DBE000882F48914B54F44B14027C907757244D66 +:10DBF00099E2B20C6AE7AFE5F711424B793E6F56F6 +:10DC00003FC3731B17E8D3880FA70EF8B2F1BBA26E +:10DC1000989E957F309FCFDB2BEC7055D8F7FFE6B1 +:10DC200098B300F1B452E572BDCDBFAC08E1794EB6 +:10DC3000897C11E15989821CE959E8151BE62FE01E +:10DC4000727D018F8363379E86F77AECCF55C2CF02 +:10DC50009D3D55FCDCC0EA9F29B122D41B1E946275 +:10DC60008BB01EAB0A6976FD2B188D66D5B7E079AF +:10DC7000448D2CB6C3F3801A5962871B08B708D7A6 +:10DC8000B7E0CA1B89CF2A167CF5C3C7AFD9E2FF1C +:10DC900056AA85A79F93C31FEDBBF552EC762CD7F0 +:10DCA0005F73517F7A44C43989F8CC8251D1D05402 +:10DCB0001B1D6D16FBBFC39989AF23FBCDC132710C +:10DCC0004868E7611EF078B7CACF41010BA6F7425A +:10DCD000D4934101477EF6551E1F3E2606840BF95C +:10DCE000ADAB55D2339D4DA397D07D048DA5281E95 +:10DCF000BAB973B514C8E87D1A72C609B85EFD9446 +:10DD0000FAD800A5013644A9CE74D2DB7FB778F0EB +:10DD10004E44FA795A6C13E27585161B8F2159EF20 +:10DD20008F8B7D0761ED1378DEAF447A71FEB6FA12 +:10DD30007D984FD777F2FAA0A66DC67EF258E43EE2 +:10DD40005AD711E2C26DF199EFF96CEBCE2AE4DCFF +:10DD500038F61DB47FD10E73D8D6C5778E760ED423 +:10DD6000F4CD3853FF068FD7C8ED5FB4BFC71B5043 +:10DD7000511FBBDF1B7801F17F749D8BFC016FC8C5 +:10DD80003C4EC31AEFC03A5729F2E1C1AE49140F15 +:10DD900070B0CB15C0769D2D1302767FED60624288 +:10DDA000DE70F102E972D41780BF3D27F8CB8B2AD1 +:10DDB000876FB1A2AB686F2F36CBEEB7EBC78B4D39 +:10DDC000EEEF01C2BD1CE17BA363B6D36E075BF629 +:10DDD0006F6EBB8C5F6A701CBF1720F025E2E51ADE +:10DDE000EA2C84195FFE0DA07AF96127B763855E7E +:10DDF00064E1F3E89B3CFE6BB988075BCAA2012C87 +:10DE00007C9FC9E4A7799FFD2230CD86A7DFAA2297 +:10DE10009E34E124FF8709FFA1BCB8B9D779D42E7D +:10DE2000FF1AB764E797B185A3910F2FEB73822494 +:10DE3000443F93CD9F02F3FDA5D8FF8DACB913ED00 +:10DE40003A6BDF35E84C19057AE86D3FF8F60CE4DB +:10DE5000C7EF09BC9E007BCC7065E0BAC597543112 +:10DE60006EFECD7DD3AEFB0CC3F6C9CEE25ABAC767 +:10DE700034AC3F7749221BBEB3C19F0BAFE51F19DE +:10DE8000090E650F5FD7DC71FF57B5E248CD73BA55 +:10DE90002F578E426FFAC8F7E5CED67EA2CB6067C9 +:10DEA000BA6F77B6F6E7FD9DED2F380BFC89A01908 +:10DEB000453E96DEC75A24C2F92BE7E389D059CAFA +:10DEC0004BA0DC7186F28A33B7C77822BC8F13C1AE +:10DED0004F646FA7C6225C07E3FCDEC77E67F48B46 +:10DEE000685FEDFFA58361DCF2FE7C7608AF649885 +:10DEF0009264A09D1ED1AFCEC3F8AEC8CB8EA05CFD +:10DF0000263615D6FF60FE2EDCC7D35D4EE18F1E90 +:10DF10007060BF913FEAF350DFDCEF4C8DCD47FDE1 +:10DF2000E29F590CE97CF61F534B103F970CD53BF1 +:10DF3000913FFDE4F1835FC17E6E19BA5CC17CC480 +:10DF4000C5E37DDEFFEE133318F4B37FAF9FA54822 +:10DF5000BF49AA685FDFB2CF41FAECADDFF7939C0F +:10DF6000B9E5C9DB1E5E00E34B3FF0133CB39E6C8A +:10DF70007CC445F0B5113CB73C7D4DDEDD625E1AD8 +:10DF8000E063FF3A21E7CCD458BC27719B8BDD843A +:10DF90007A8685078B7EE7FA662B78EFE9963DF95E +:10DFA00014279DA67B05EA57637426BB69E130FA06 +:10DFB000ECCD2EBE6FDFFB80C7AF4A7B0E2CA2F9E3 +:10DFC000F57F99E62B819AF65B18EF06812FA8471B +:10DFD000F3301F95929550FEDEA3129F57FF941DBC +:10DFE000EE321C7F87DA407C8F9FCB58F0CEDD333A +:10DFF000BB1DF7FD5C3DBF1C977CEEF7F712FF5E83 +:10E00000B5C791423B0B52B2B7E6F91CD9F78E580F +:10E01000C427011DAC249609E9BEDB882FAEECEFC6 +:10E0200026BB74D533D9FC00F01C4E01FCB7FEDAD8 +:10E03000115E80F97FF94EC000784E0CEC0EE07A4C +:10E04000C0388B55D8079FFD48C96A87FD7F54703B +:10E050007A7F8C0DD1BD9855FD5D7CBC7D5F781BB2 +:10E06000F58355397CE704FEA3E874BB78A32BF74E +:10E070001ED44B33C818DE336A58399BBEFF24F8D0 +:10E08000D0AD7BFFB4DD84F1DF7BF2DDED786F6135 +:10E09000C55FFEB0FD1B68D7FD9B5B47FEB9EABBC1 +:10E0A000BFDDFE75C0EBFBCFB864A49793CF7EE7CE +:10E0B00091AD903FF9EAA41A09F2DF7171BE76F2D0 +:10E0C000893F8FC67B4C6B9EBD6C0CE261CD537358 +:10E0D000C79C495E9E04FA4ABAECF22E49EB693CB1 +:10E0E00023F18BA2FB459AB33E07F71D2C45F8DEC2 +:10E0F0007F85C74FAC826F2D781ED57F1BDD13C582 +:10E10000FC5AC0F3CAC7D7D3BDA1D3F16D8E9543D6 +:10E110007CBF6388FBCA7DD77CF1925A4C9D6164B9 +:10E120000FABD810C9A1DC76AB5E8675BD70E47507 +:10E13000FC13FB5845BCAF7ABC8B8FDB0FEB183858 +:10E140007D1DDFC77FCC3C7D1D5F386D1D573C4476 +:10E15000B6F6BEE1E399AD75BCEDA92F9DF1DEDC0D +:10E16000C99C7D3C129E9B447CEBBDAEC8AF5CB8A5 +:10E170005F9FF49A215A67577201949DECF84329E6 +:10E1800003FA38EE1C5A84FB71E85997BE13BE2F70 +:10E190007EF6D72AF2B5934FFD5C35E8BC80F924B2 +:10E1A000D00B4FB2F4DF00DA072B79502D5BB5CBE3 +:10E1B0009F42BFC6CAB54DB45E2B9357CF3702F40A +:10E1C0009DFC1D2B937C1FAC4C1EB8561A66FD029D +:10E1D0005A01D77F9285420FCDACA75487EB78E4E4 +:10E1E00072A4BB91D6D19AB78EF3BEC8B69EA69341 +:10E1F000F6ED48FBF3E40E9782F1C8ABC4FDC555BC +:10E200006BE7D3FA5A76C4AAA4F4EBE1D63B7D9E21 +:10E21000F257DE6FD4B411FC5D62DE67DBD7679F17 +:10E22000D75F87B753421FC8C5DFBA0E17F1E7376C +:10E23000A6BA283EEA88D3B8FF2ED89F432F3AD9F2 +:10E240004E68B2A8E66DA731CCB9C9FFE4E84F37F4 +:10E25000B5489D63A0DD4D26972FB9E74EB1B50EA9 +:10E2600066D8F0B3D235F406C6EDB11FBB19C5D1DF +:10E27000FD9B9BECAE55DBDD140F7CF0A9538FA00A +:10E280009C39F9908B71F9C7E31D1B75DEC7DB4F15 +:10E290009DDAFE7FA0FC6D6C6C60FDBB8E7D0DE990 +:10E2A000FD4189FC0DBF7B32EF0206FBFD56A88BBA +:10E2B000E7A88D3FFEC65548AF98C7F3D4466F6CAC +:10E2C00011CAFFC607C7481847B3CA33F817E44B4B +:10E2D000EFFE6B1EAE007BFFA9533370BDDE7DFAEF +:10E2E0000717203F04BDD2B09F232EB7BFDF60D3F6 +:10E2F000FB6FEDDF3880F47F2B96F3FAD2A762EF45 +:10E30000A0FE8EE3A3BE72EB337911F70559F5A891 +:10E310009F55AEA13BC3E49C308B65B20552C5B896 +:10E32000CEB7EEC91EFF0B1A97CBABD4A165BC7E4E +:10E330006F31A787016A7783266595E7B6B7EAD775 +:10E340006BE539FDF0F62BF15C64187ABF59F47B6C +:10E35000EB9E4F260D770E7DFA38FCFB1D12237FB6 +:10E360000A7BC24DF12A2BD4D4C4826AFA1E45FD21 +:10E37000C5CA178B71318F7AD68FC4FE5CE1E1F983 +:10E38000A7459CFE8A00E4115E6DF07B4837B7FD1F +:10E39000C04DF1EAB7FD18F428C0EB6D4FFF84E2E1 +:10E3A000C76FFBF15DB4EEB7B952B4DE434FB81896 +:10E3B000C615BDF7C48B54FE9E33558AE3DEB6DF27 +:10E3C0007DC47EAFD04A6FEB7709A3357B3E6D7875 +:10E3D000EE457E327EEEE510E77478E28CF323FFA3 +:10E3E00035E65F1B477E8491F4EDEF686584CFF4DA +:10E3F0003B1B42BFEEC0731474A86A26D36DE7CFEF +:10E400000AE3F1A3FF9B4377AA33A6A39DAA223E6A +:10E41000012F4E85FB7F9DA1E054A4E7CED0C2081A +:10E42000CEBFA75A9F8AFB73B7A01F17F44FFAF30A +:10E43000A13E3A2FD64A94DFDBF9867B691EC96379 +:10E440005661FB5ECEFD67E847F555C377DB7AABD7 +:10E4500041803B0B5FD9E7F63F4ADF4F331DB89F42 +:10E46000AF7733EB8FECDB57AD735CA59D97E75B24 +:10E47000C5EDBC5CECFF550D7C7F1F5C9C4778B400 +:10E48000F070FDFEF503E88FB97E7F11F969AEF7F4 +:10E490004DFA2DE2F547C85B314E289FC74B5DB85A +:10E4A0003F7ACD1720FF4F4D95C4AFAAFBA3574E1F +:10E4B00081FC8D4D13C8BFF7138DEB455FD9219BB0 +:10E4C0004EE8FF9088C733BF26D17ADE84AE0B6852 +:10E4D000B898192A37CA9384CF25ACDFCFF3FD85CE +:10E4E00018076F6BEFF061FBD5129D13DEF0CB9731 +:10E4F0002F431CFEF7CB473B30BDE925A67A61DCF4 +:10E50000C5FB8C4EEEB611FDED87FEE44C7F69FC39 +:10E51000291AE123831F8DF065E1074692A93C8308 +:10E520005F8A07B7F07BBDFF951B102F6D6EA0C3F0 +:10E530000B313FF110E647926F163CB9F8FD2316F8 +:10E54000813CFBB916F9AD06E5CF6891631AF9B3C2 +:10E55000864A9572F2579DC0FC4A476CFCE809E474 +:10E56000DF9A5488F43630BC7E9B198FEFB35799ED +:10E57000F9EC20F1CF1E3E1F711E65C1FD2AE3FCA0 +:10E58000FD0F5805FA7B3500F300B85E557C098411 +:10E59000F306D6EF44FABE910D50BA880D511A63B6 +:10E5A000BA8A69033EB83081FC279402BCCC4DF096 +:10E5B0000F921EFEE1E29FBF21E17ABE746EF7D298 +:10E5C0004E4B358D69A333F75E1A063F88237C0DC9 +:10E5D000403E280F7179701FBF2509FAEAE2F4D591 +:10E5E000F0DA3B9FD8EB3166E923FCBC24DD9FC603 +:10E5F000DF45B0D5CB9237544F1AAE1FC867C5A5BB +:10E60000E4E60D95FBA7B2BF3768FC1D88DCFEA6CB +:10E61000B8CBD2F132E668DC07D61FEFE7B102CE05 +:10E62000B79728B01560BDA6BA8DECF82085259C5B +:10E6300035997A0D41A694407E49105812D43FFA7C +:10E6400078CDCFCE3346C67F43CFA72E6318B9C34C +:10E6500022CC08CEE0F7DBC87FF042D87491BF34FB +:10E660004A7CEFAFF5DB16B030A54116A5D48AC3BE +:10E6700008B15E4A8B593FA5256C80D2523644A919 +:10E68000C17499FB29F83E2A6761CA57B028A57B57 +:10E69000CBF8BD86A392278CF2E96CFE9965EE72E9 +:10E6A000EB1D86859FC778A9FF724CE5EFFC70F9DA +:10E6B000918B1F87F6F003EDB6F3EEB64735B2E760 +:10E6C000F7AE33280ECEFABECCCDF9DE3237F7A343 +:10E6D000EF5DC7DF2F38FAA816DE09BDBFE9676A0C +:10E6E0003EC0F1E6C65F97635C9855CF5AB78F8EF0 +:10E6F000FCE03C8CE3BDC81D6974D33E48111D5A33 +:10E70000F4B044F3F173811EE77B7679E2724757E8 +:10E7100061FDC3DFF3903E7AFB3D12E9A3CC906824 +:10E72000FF2C15EBF75841FF098C233237B90CDC6D +:10E73000274B7B5C47D0CE60BD9745ECFDC5DD5CCB +:10E740004F61BDF7D339F6D2B3C4212E05018B74C6 +:10E7500099DB0F63E3F2D1AE239F49D63EE77E5C9F +:10E76000EBDD2BEBBB26EE8F0379119F2FBC6E4F99 +:10E7700029FA3F470BFB6CB3C057E11B3C9E7FB3AC +:10E78000F0679F10FDF4BA1DD4AF556FB3580FA0BA +:10E79000E35CFFFC66E453EAB5F5E2F09C9FAF6DE5 +:10E7A000567BEB117F273A5403EF674DD9F3E55BB6 +:10E7B000915EEE95C21FA0BE6DEE00BCE17E6DBF06 +:10E7C000F32A8A633B6F4F08BFDFB20BEC71AC9F3B +:10E7D0007445906FEE13FBB9EABAA6567EDED5BB40 +:10E7E0001DE31D27ED52C3743505E3B7480E99E4C8 +:10E7F000376148C7F06DB9C6E13BBE6BEE19FDED60 +:10E80000288E4C5B1C1CEE3C338BFF14E4E48B73B2 +:10E81000EA9767958F05D88A805F8CF5B1941FD2EF +:10E82000BDADE66C94F75DC0E0D1CE1D870211D678 +:10E8300077ACC24C7CB7088F573C0518EF0BDD1442 +:10E8400050397388F23C481F96FBE7E3A21F76F32A +:10E85000B81D5D197AB1BD0CF779426AF6D9E79F08 +:10E860000CF0C3443EFF32317FE88761BF27DA6B8B +:10E8700074C44F5265B7233CC71F75D17B3BD5C9C4 +:10E88000538B10FF53F65CB11CD3B983AB7F320EB0 +:10E89000D6E11D83D1FB6541D61B28453A4A3A187B +:10E8A000D25175154B3AA1DE5E0414EB25D524AD8B +:10E8B0002F64DD05949A7E4CA3D1CF637F307E0414 +:10E8C000E9B9BA2A558EFB63CA6BCBDFC7EFEF8A73 +:10E8D000757D8C993AF29DE3BBBEFA3FDF84FE263C +:10E8E00077B01A84FB94B3793CEA89CBF748443F6C +:10E8F000AE7646F72D67EF92E89E55F0710FEDCB9F +:10E9000060094B7D16F24D3D2AC5AF34ED9128BF0D +:10E910003CE1A1FCBC5DF9C5782EB3636A7308EDD8 +:10E92000D1EB3C06E171FD279122E43715513525E5 +:10E93000D37C4C17CEB3EBE70EE22F887FAD86D6A3 +:10E940008505207DB8B2FA969B19DE57ABDBDA4E0F +:10E95000F6F120DDCBB4E8689373B01EE3A54E75E5 +:10E96000A997619CDA2614A8173336CD53D5817147 +:10E970006C279E02DE0F7AC209EB3CB02A19B0BFA9 +:10E98000F7C33C52D63DD813E23D2D56910C70F999 +:10E99000970CE0784DAFFDBA1CF7D9893DD3CAD1A9 +:10E9A0002E3CE54CAA388FD97BF2659CE7F224BF58 +:10E9B000977A2A5F9F837ECC5BA2E43960C13DF7E2 +:10E9C000A8481F697C6C4C90DDF145C407ACC3F1CD +:10E9D0004F92A5848F3D2EC2C7BDEA808CFCC37CBC +:10E9E0009A911D71E20BFF7D7417EE27BCAF0AF6FA +:10E9F000C0244FBE38C74D96E23CEE457BC8978198 +:10EA0000BB49E7E7E2951EEE8F353C5CCF2F15F34F +:10EA100084B173F948A907F988164DB5439556EFA7 +:10EA200055740E37C923E2B1B524C5C10FD3AED298 +:10EA3000837EF90537A4DA8D4C3BC057A95DFE4CA7 +:10EA4000F8EEFA17BE69FC23F1954D3FD6FCA728D6 +:10EA50002C85EF96315FB81CEF8FCEF570FE6F9569 +:10EA600033162EFF920DAEB9023FF77A4479156F37 +:10EA7000972917ED03E25E78456E39C7EBA9D7EF0A +:10EA8000A27BCE65BB78BC65537ABF4C7D6717EC23 +:10EA9000A3E03E8DFC9CC1E43DE4EF3F956FAAE806 +:10EAA000EF5E9E9C2D617E5E54CF9A67EEFC509E79 +:10EAB00022BDDD67E9FDF5B524474A34D6AED50C55 +:10EAC000C757B95F9DD507495FB5F8DB88FAAAA893 +:10EAD0007756BD36048ACB0CAEAFE29FABDD548BCC +:10EAE0000CB237A9FD85C1E832A407A3429F83DF9A +:10EAF0002F732CA0F8182B9E23B7DFCD71B0E880C0 +:10EB00009EEF8D6BF8D612EB8AEB94DF140F519ABF +:10EB10008C1BF43D2ED601D04DF272839093D63BE0 +:10EB200023778A75B052ABBEA5DF29551ABD37A130 +:10EB30005475925F46A9E0EF85D9DE578A23DC60E1 +:10EB4000100C1FD70B7A1BD2F37A29D686FBA46C44 +:10EB500001EFAFAC9DC7213C24E8EB64CE7B76DDB2 +:10EB600062BF757B443C82D07759889F9FBB4AF82F +:10EB70003B25569E29B1D233C52703FE07251BFE30 +:10EB800033788FDD87F037F5E6CF4177AABB82C7B0 +:10EB9000CB5AF81F695D2DBCE3033038BFE002D6C5 +:10EBA0008BF3B2D6A52B1EA3F24DF1264A93F16644 +:10EBB0004AD74BD18771BC60F4CCF3DF23D661AF69 +:10EBC00048CF759E1DEEE8F73DC27E22FC87CE3110 +:10EBD000DEE01CEB1DC5B8EACA8C7EFD16C6533BB1 +:10EBE00047D6B3CD39919A17F9F927DD53B8438E3B +:10EBF0001D42F84E7DEB163A2F50125353E8760320 +:10EC00007DF779A48F863CE3439447CC5C7FD94B56 +:10EC100050D0E0329EC67C7DFFB2CBE6C302358C7D +:10EC200031EEC4B86AA7F75692570DE3B9BC2AEA89 +:10EC3000BEAF03E37B7B3D919F7948AF77E6E33B33 +:10EC40001C96DE39F2BCB2DFE1A845E701E11B28E2 +:10EC5000DA462F4027BF199E4E7CA44FFC7101233A +:10EC6000B93ED2389BD274A1510AFBE1B708E7A89C +:10EC70003AFEBEC6A80567A68713820EDE13E927F3 +:10EC80009E743C12D1835B1EFE7EEB1F457D6BBFE5 +:10EC9000033F4BD8F99EC507F31CDC6F78E0D2AD7B +:10ECA000377C1648C1B56B6239FA8D1F1DD75B8C56 +:10ECB000715A69FEE16C0EE1396775C9878BF0FD09 +:10ECC000BDEA0A96ACA434555E16F8FBF11EF34477 +:10ECD0005DDEE919BEF10FE82FDF4BE7D0D09FFFD3 +:10ECE000EFEF0FF045F200F55355E859F8941D0B7E +:10ECF00087CFFB47F4FFFFABFD28163343B0DEA3FD +:10ED0000449C98AB671D433904747A31AE87BB6F5E +:10ED1000878974EF65432F286519FA54C7F3F87F84 +:10ED2000ABDF855ECEAF177AA5F4BD2003E4C24405 +:10ED3000FA07CFF7407E12FE03F6FF24711FA88A60 +:10ED4000F5921D7F1EEBA7B49A0D507A011BA234D9 +:10ED5000CC7407C533B0B043C47FCDC07485167B77 +:10ED6000084DBDF3B4D817114E8CFF427F53AB77DB +:10ED7000E5C5B89FAEF50A3D2CC78E66E23CE46C53 +:10ED800076751E8BD413FD8CF44E281BF9DE53646C +:10ED9000987B4F7FC3BD945B715E23DE4BB9D0F887 +:10EDA00040467EC97E42FCB26092F104E6FDF73E29 +:10EDB0007319DE3329C0DBDEC50055F7BF3F8FFA7C +:10EDC000BC737E84FA65ED6CD877CBACD43986C73A +:10EDD00021B6E75FA7533CA2C6CFFD14E1BFB2EA5C +:10EDE0006D40A76BE1E9EFF5FCA3C7C9EDBF468E07 +:10EDF000F6703EC1F58CA4373B8ED21ABF2DC8FAEF +:10EE00001D208F1CF9FC7DC25C783ABC8BFA8132E4 +:10EE1000D2F3B0C6B3DE8BF81BE23193482FA7C7FD +:10EE2000637238613FEDA272D19FA267C763E6E2C9 +:10EE3000E77B623F7DC51B7914E76B8B63DCEB9D41 +:10EE40003E6C1CE3F7F03BD0EDF7397E86A7DB0381 +:10EE50002F3DF9B38BF1FE443ED7AFDBD1A0C7F312 +:10EE6000C01D0EBA37FEAE1EF14EC1FB0E7796F3F3 +:10EE7000F7CD841FC8BA8FAA9CB7AB770EDEC30943 +:10EE800093B466EB07CA3DA87FEF4C38E85DC1EE4E +:10EE9000E7593F9E17BB84DF66766014AD4FF79449 +:10EEA000634538DFF51F3928CEEEB9291F16A19E1C +:10EEB000F5D08BFDF4FEF787535415E38D8EF9B929 +:10EEC0001FA77B875A4F71828CC3B7617394EECBB7 +:10EED00059F9C6E0C2DDB87F5EF72B54FFDB6B1635 +:10EEE0007E79522DDE8B4586417877F0733D2B3548 +:10EEF000B3F2B9F80E88F3B4DCEFFD01CECF3AEAF5 +:10EF00001492F74B6B658A875FBA0DB00FF58D359C +:10EF100032C521196B7E311FCB8DDA398A04701A04 +:10EF2000A1214981EF27BDDC5E1ABF660ED9310DE4 +:10EF3000BD12D5CF1DE7A497C7D38E5F3B20FA91B2 +:10EF400029E6743CF48376DDD9DA1FF3F2F72C3628 +:10EF50008AFBA920AF3BE722DEBE9D2F992C53EF01 +:10EF60002F823FEF84FE793C5594EE2B7D3B9D6FC5 +:10EF7000263B72FBE4EBE6A0DF62FB664EEFBE6D64 +:10EF80003FD72E86BC2FC9B16B9883D7239C1D2DEC +:10EF90002AC1B9416AA67380EE29EA95B83E460FA8 +:10EFA000AC834429C1BB61F287D27248271C62FD41 +:10EFB000F7A0BE88170F01DE093DA04FF971BE61B1 +:10EFC00019FD1DE345FDDCF9DD14C8F64B8E17FB7A +:10EFD000B03221F37558CBDB753BFB43A36DFB6966 +:10EFE000470E3DE5F6FB9F627DB63B613E00B75A9A +:10EFF000AD327CE7430E45E7B8919EFAE4F0153058 +:10F000004E77D701BAB7D53D9573DD0D5F5B1642DC +:10F0100039D63D9D1523DCC7055D9A097E4E963B8A +:10F02000CEED7E0EFF893E99F6C9D175C78A903E16 +:10F03000B6FB8DD260359673388EFA7D04E789BEB3 +:10F040009AFE16E8EF846FC568C9B0F7C3E9A44219 +:10F05000EE2DC67B8997F68CE96C2F813CEEE38B15 +:10F06000F17C777C27F2FBE38F3BC4BB34036E5CFF +:10F07000CFE792A3A685719FAF55291EF82169F5A8 +:10F0800055B85FCC7532C53B1D8F597EB930F9E557 +:10F09000927DAD01E4130FD72AE4DF0AE5355CEA7F +:10F0A00003F877F78CF2E0F7AE7659C2EF151B6BD9 +:10F0B0007E5A05FD544C2FA07AF4A61FDE2B15EBCB +:10F0C000B3FEA37FD942E733B51ADB2D65E4A6F57D +:10F0D000EE7D800D15215F0B245C641FFA7B5FF9C8 +:10F0E00006CA4B7FC245E7CA50CFD754C0D3D19888 +:10F0F000F6C9A919581EBAEFAB78CEE31D9053CBD1 +:10F1000020EF2D918F2C813410E6F787FCE2BCC8EC +:10F110005F673B87A1FFF3F73D2DF8FC551E6AF7AB +:10F12000AEB57E3D2AAD1F13EF853CD43529897CD1 +:10F13000A75D4E6EA17B94178BDF5D50C2C578AE84 +:10F14000F86EFA5C91E7DB855F1ADF5BC0BCF7F015 +:10F15000D0429C8FB7E7D88D98427FC5182FEB4DD2 +:10F16000FCEA1B04BF38AFF2D666C3F9B340A4C9AA +:10F1700067D3270216BEFA647AEF73EF3A0EDFDB2D +:10F18000B7F1F73E027855B4C0368F66C6E7C1F8CE +:10F190007DCAB1887BFE56662DEE1F6BFEEFF53BF8 +:10F1A000A8FE834BF93B27DD4FB1C7F17CD02FCEB2 +:10F1B000C7D2F2E14B300E94FBAB3B57D33AE5E0BC +:10F1C000B5D3974F74F9EEE31302C8E7AD7BF2D6DF +:10F1D000F825387E7926FF20E3F03C71A8E04A7CD0 +:10F1E0000A73DB8A727A2F5091797C28FDC13A0527 +:10F1F000B11D9E1BE95A6432C0F3793FE75F4F08A7 +:10F200003C270FEBCFA1BC39F0D31B3CA8175DED19 +:10F210000FD13EDB6D9607ACCB2A78AEA68BF18E74 +:10F220001A4680E257D630DAE7FA362982F799C6CD +:10F2300085845CE991F87B3062FD97CCD369FD5100 +:10F24000F0CB33D0BBCE48C9D67BD6ADC67583A133 +:10F250005BEBA09FA3212380FEC7B75B648A935812 +:10F26000C20C99947185C9A8EF2D59ABA30F866D77 +:10F270000F0DADC37DF7B6C9748C1342C0B0DF80EB +:10F28000802F20FA05FA09E0B95679CF286A67E19C +:10F29000037DBA88C79B4D46713047F5F02684F34D +:10F2A000AD6D12C3F73ADF2AE170EFBE83919FFB89 +:10F2B000E684B91A3B6F0C0DBE88FCBCB15A35F818 +:10F2C000FC8C4D08D7B84401F51FE87BFA2EF47783 +:10F2D000DF5C0D692033DFA502AEA56B4C82EBCD60 +:10F2E000128EA7DDEBA0FF32BC8799ECAD42BCAD1E +:10F2F00085F9D0E21A3FC5718C96D106E12DCAE995 +:10F300000496C2FC14FAC99F9F4D377911352BBE64 +:10F3100089D5F1BC82BF1C80E30AB8ACF9570A78E2 +:10F320002A81DFE3BA559A7C7E378BF35619DBC10D +:10F330007C2A5BF83C96F6658FD753B56B00D7DF18 +:10F34000BB4635248E5703F9954FE0D557CDF1EAEA +:10F350005B23C60DDBDA43F99B2F3213FDE25281AA +:10F36000C6F13055A5B82B50BE172DC77DF72D1708 +:10F3700043FEF0D6273C7EF7A1A9EA9ED661CE8D4A +:10F38000BD87B91E38B63967FE0A6817367A00BEDF +:10F3900017D1E8F7248C771BA17FBF29D3BD86A2A4 +:10F3A0009C7364AC970FC4E95F3B7A0EEECF805933 +:10F3B0003047BD20A36F4DB78F8F47332FF17BFAB6 +:10F3C000DEC3D102E29387B72E94210D1CEABD065D +:10F3D000F385B9FD1F6EA6F8A02F0626D0FEF363B5 +:10F3E000B400D60F1FFB26A69DC2CFE0C519707EC4 +:10F3F0007D0853BF8F99DE1ACA9B520DCE4B61F325 +:10F40000E0FBDED9CD747EEABF9011DF2779C0EB37 +:10F41000A530DD7481F87E3856A0536AE83CD529C2 +:10F42000EDCCF9DD9C8DA2FE0FFDF2B0EF73FAEB8F +:10F43000FEE2B2D341BB7F80CE95CC2E17C9A53654 +:10F44000A7B11D7F8FA3ED291F7A82D9A3F9BDC56E +:10F45000F85E52BDD0FFACF158C9B5A4D762C88FD1 +:10F46000C4EF8DD33A9FE7AFDA81F43E253220AF67 +:10F4700026FEC5E31FBF7D88EBC31D6CC05D8DF20A +:10F480002324D3B9D4DB424FEEACBA93E24A9315AE +:10F490003E7ABBF6523F3FA7786EB2EAC17DF5F0E7 +:10F4A0008172D2D3934A6F33C2DB0FF5709F3FFC5A +:10F4B000C3D8781DF5EEE78DC7911E77BE18CB7ABD +:10F4C000473357DF05B4CA420F96304E2D173FDE43 +:10F4D000C2A312BE7B33BE2569A25E1E6819A4DFDB +:10F4E000B131F087822E4239396062DE2BEEE71AA5 +:10F4F000B5FCBB512D527C8F600CC65FA5B89D5BDF +:10F50000C2FDE31DC19D05A82FF4EC51688D6B77FA +:10F510005CA37D01F9559F6CA0FCD997B4F414A0AD +:10F5200076DA84499AFF5B61798E1FDA3DF432A363 +:10F53000F7AB1FEA9B330AE5CA487CBFD73799DB94 +:10F54000E506E75B41C1A72D3990D49907E3E8BCF4 +:10F550002D4C473BC32BF858E53689E41A6106E485 +:10F5600044BEE003F92D9CBF807EDC8AEBD3B84615 +:10F57000177C18E407F173467173F9DB38BF06F99D +:10F58000B181E40AF27F8965E44782CB8FF182EF93 +:10F5900037F6083E29F899259798C2F97379B5E0AE +:10F5A0009B82FFE60978F41E0E4F1ECA0748F50439 +:10F5B000E7C764908ECEC8A5BCBE7EE27BDFF6199D +:10F5C000FCBDAE6ACEC78A7EAEB4D6199975017DF0 +:10F5D000E58CBF73D1B16DC716E4374BAB5452EB1A +:10F5E0002AB7AD9E8F71714B5A0CD22296B40C493A +:10F5F000780FF5657FB65E6EE975E3ABB93E7E5C6C +:10F6000089A8A8371F0FC754B227055E3A0B1B1EE7 +:10F61000C179FE46E8B3ACB989EEA5107F07163371 +:10F62000BE8FCDC175BBA34B6E45FDB2D2EC271585 +:10F63000C682B3CF1FE0E7747D43EB709F80FEAFBF +:10F64000E3B84662E1FC49641FCACC3070FC5464E4 +:10F65000128DCFF47546A67D8FDF2BECAD249DFB7C +:10F66000EF4E801D538676137F6F657C580E231FE7 +:10F6700090D71A9DB81F3A25632BC6859B5354E239 +:10F68000EFA0F7D3BE4F16A93B919E5810F43DC092 +:10F69000E7381FE717640F803E5EEEFBE1E5E89F69 +:10F6A000B6E6A78A75AA0CC1FCAA33F31B9F33BF29 +:10F6B000425F80C7ABAF8DB6D2FCFACE6D7E95A20D +:10F6C000BC32F8A45732ECFD9857915D9974E878F4 +:10F6D000CE6C249E8B103D423BC3389D0EF608FC39 +:10F6E00014E29E2C1C4E8F3E731CD463E23D3AF311 +:10F6F00002EBF7AE72E49FF0F37873E4CCB381B21F +:10F70000B47FCDB4DD377E4CE1FBF5B16A96447C25 +:10F710005BBF7384D72A31DEC9FBB86C8E81FE7C57 +:10F720008F73FDD8DBAF98936C71A9DEF05FB2E206 +:10F730009C46A1023C9C3D29ECC8CA3EBEBEE343A8 +:10F74000CB1EB1FF1E53879FDBD91D7EEE5F1CDFF2 +:10F7500017233B70BBF5EE60504E72FB91E7C17E04 +:10F760004C5E817A75D78EDE3936FB711CEECFC2C6 +:10F77000D3ED487C62B41A50904C1E23FBDA047B14 +:10F7800014EF0325CDD6E25B900ECC682DEAC90DAF +:10F79000D58FBCD280A9C9E175B308F1752B7D5D09 +:10F7A000D8D716BF67E27BEE3A5B71AFE103EDA3FA +:10F7B000AE0A22BF0E529CEBAC0F946014F2ED3AED +:10F7C000CF3B02FC9CD031C87FC7C19152C93EB328 +:10F7D000FC5F8ED7F8BD13DBEFED3802B88EEF6516 +:10F7E000FBCDD2BF1BB2394A767BA5F09FF4A7644C +:10F7F000F21B2483D1423BBECF0F70FF8EB35AA5BC +:10F80000FB85DD53B37FB76B5C80BFEB3756C0A77A +:10F81000A4387C1B50BE825C5426F347329C03FC08 +:10F82000BBB38FF1F7544686BB388078FB38DB5F7B +:10F8300068C10D707AB0DEDB7E3DCBAFE5D9CCE997 +:10F84000C59774501CC7FABE28C9B36E27F76F3529 +:10F8500006855F61DBD573DC901F877E05E8BAE320 +:10F860008E54965FA1D3692C423F76F7744EEFC950 +:10F870004299E83D979F20DEC8FF02E3A1BFA9831C +:10F8800025A364CF432FC89F7626383E2BD7B07C64 +:10F890003B3E2F0A70FD689CC0672E3D1842DFD9A1 +:10F8A0003EE5BA0DB85DB623FCB576BF08E78F0D0F +:10F8B000610EBF45C7DD5D471E4079D13D590D73CF +:10F8C0007F7F7F3DCEAB739D4A72D2C23FED38BB86 +:10F8D0007FBC84EB134A42D015FE7E53D9B0EBF2C5 +:10F8E00005A2A78F86A7A7E784BF7FDFC02FDCB163 +:10F8F000EA91F5514BEF3C4DAFF4F379F815509C7C +:10F900006A327AA6252F3BA5DEFFBE14F5C5DDAA17 +:10F91000C1FD03495A57C7441FCDEF31A5DF5343FB +:10F92000CCCAE4EF62093A7C4BE879CA3D17919C56 +:10F9300077AEE1FCC9B94D3A1B1DDE7A263AF4F8E0 +:10F9400038FFF27F54C622A348CFE7FCB68EDBFD1A +:10F95000FE24CFFBD7F23823FF4715542FD73FD3D0 +:10F96000EDE674E6DFA4D2EF3DE05F967F46F865F2 +:10F970002C3FCC69FE991CFF4BDA2F93E3AFF9BB08 +:10F98000FD32C2AF0678273FCC43338D30DA4119C0 +:10F990007FCBFF737FCCD6C0DFE08F6139FE965CF2 +:10F9A000FF4AAEBFC6F2AFE09FDD6F938BAF228CF4 +:10F9B000A375A0BFE560E033D0FEE80A99E2F1DB71 +:10F9C000851F30EE9B7BB9390BE82BC57F1F46198D +:10F9D0005238FF1BE4769FB5CF14E63C62E7E7C3DD +:10F9E000D0E17E9AF7087CFC5571FEB8779DD85718 +:10F9F00022FEF8B1C79FD4307EF3DF853D9696D7BF +:10FA000028A76D72D987723A700E725AECC35C7E69 +:10FA100095ABB76EAC63FCF770C4BC0362DE796271 +:10FA2000DE0131DF8DE29DC6C0AC6CFBFBC26772AC +:10FA3000EC711117B4518B04AFC6FD354BA6F8D449 +:10FA40008B5EC9AE37BFECF9E0350062DE4C59DCA5 +:10FA5000E312ED7CACF05A5CDF3A85FC869F399E60 +:10FA6000DD2E03BFA8AF73B83EFBD159EA05B97FBD +:10FA70002D17FEB99A6B78F84391C22F0533F05FCA +:10FA800011CAAE57BFF8F9C22F0F077F091B5D5F80 +:10FA90009B81FFCA2AD799E13238FC5FAC3B4BBD52 +:10FAA0008AE1E1BF66FE08F0570DCCC77B3A5FAE36 +:10FAB0003F4BBF625DBFD274E67A37B5E48E630E0A +:10FAC0007B0F616F6BB409E3CEA63AFE105AE83B98 +:10FAD000BD9FBB2559DCCB19A2DF6FB0CAABF3B811 +:10FAE0005DF4665C6711DBEF996EEC997A39EA3D5B +:10FAF00079BDB33B315DDA338A45868133F0D10479 +:10FB00001699661F2FC9F9FDCC41528A031F4DA4D7 +:10FB1000F237E31AF58FE3A33D777AFFDE11FA2F70 +:10FB20003A4BFF25546E3FEFC67872EBBCDB91B7C2 +:10FB3000FF04CAF78E1295CEA5AD38F6DC7DE92C10 +:10FB400051799C79705E247DDF09F4B1F9795CCF3D +:10FB50007062FC38BEDBBEC741FB35B75E9B6CC52F +:10FB600021C64276FC46F3385FD1920AFF1D2A2552 +:10FB70009615DFDA24F0DF26855FC1A723CD71FC5F +:10FB8000772BD75F92AD3FAE1070DC98E710FA325A +:10FB9000FFFD3CA7EF8557D08E765AF10141252B0A +:10FBA0003E60051AE6543F45F7892CBC8C54BFEDE6 +:10FBB00012467CBEAD9025D7959D7BFFD13C83E05E +:10FBC0009BF2B0CA9D1A63557A1FC09A6F9BCCFBFB +:10FBD000356FE7765689C6E37C40FF89D0BD294959 +:10FBE0004B5AE72E781F6EAC80737D25DB255F486E +:10FBF000F12C875C747FA43984B69459ACD2FD8013 +:10FC00008A108FA3ECBC8799E550AFB3C367BA5095 +:10FC10009FF39727D14EEEFC848FDBF94F06F999BD +:10FC2000592462044767EE8B60BB026C3755D45B86 +:10FC3000ACD3BBEB456CC08D72CBEAFFB47B02FA50 +:10FC4000B9FD5E5179974271147F649E30D25F5B3B +:10FC50007EB30B43FE77093BACC5E721FFB4D50E5D +:10FC60007FA7D2FE5E6FFB08E7EE2B0BB81DF16895 +:10FC70007E33BD47BF575A5D6FBFE721E773BA3A7E +:10FC800029E88FD546351EAFD4FE0B8C9FEAD4658C +:10FC900003FD449D7AAB86F74B3A13B28E38D919DF +:10FCA0005AA8DD82EBD123EBF81EDCCE50EB2F30CF +:10FCB000EEDB84FAB89E87F406BA77D89E90A7D177 +:10FCC0005B812CB260AAE58FC2F63D32D7EFAA580D +:10FCD000B212FD7F3DE5C54B00BE897A0DF9110ECC +:10FCE00075DD29239E41FEB13112CAF59489EBA43A +:10FCF000383EA69F39EAAD95AFC66B343B855E7C36 +:10FD0000B9A3BA18E1DB9454648C9B3FB0E3D8618B +:10FD100027FA1B6B653ABBCF17BF93F68BBC326ECD +:10FD20005789DF93DED8C3ED50CF4C95CEFBF479E5 +:10FD3000D9EF3DF86665BF1BBC73476731F2134FBF +:10FD4000CEFDF003332716A3DF6EE7F5E1625D9C7D +:10FD5000F7A46664DE833CBCF13A8A775672DE1DF6 +:10FD6000AEAC1AE0EF98D4FAE89EF87FC0FEC5FD6D +:10FD7000B2478EC86857996FF07B82BB9CA6CBBEFA +:10FD80006EBF1BC5F7F986380BA37FB2AA4C8ED283 +:10FD900079B1D017419FA6F86F6B7D73D3F2AE791E +:10FDA000677C0754D10EA6DAA79D4E5F9EAA011963 +:10FDB000DF4F99B04F9FEA2DC3F36EE39941C4FB27 +:10FDC000ECD2A9683A59F4F6C2CC63F4BBE3B7EFBE +:10FDD000F591BF37EF35AE5FEB222E66D381EBE9AD +:10FDE000F772F5966018DF3FCB334687F1BD6E673B +:10FDF00015FFFD5E4F8B1AC6F7412FFF7E75D6FBB0 +:10FE0000FBB9E9DD713DCCDFA5D3C2F84EDDDD8263 +:10FE10001ECEFFFE02FADD49AB9E4397B2EE992952 +:10FE20002DDDBDF67B50BE7C8E3F903B59BF33FD30 +:10FE300023D1CEEAF7FF027BB2FE4700800000002C +:10FE40001F8B080000000000000BED7D0B7894D59F +:10FE500099F0F966BEB9662699994C92C97D12123D +:10FE60000898C024863420AD93102040D421200669 +:10FE7000A43811C4408004AA15B776192040C08068 +:10FE8000412302157792888BF5B2C1F58280FD4738 +:10FE9000401B2FED46516A5DEA0ED45244C478A946 +:10FEA000DADD56FFF77DCFF932DF4C12A0DBFF7FA2 +:10FEB0009EFFF99F8D4FFB71EEE7BCE7BD9FF79C5E +:10FEC000F9EE3BF8BB96B1EFC4F7B04D626C3C6302 +:10FED000ACB4E7BD4A27635DDBF4B6AD6EC62A8AD3 +:10FEE000F2D2969532B6AD556F334071F79693AD19 +:10FEF0000BA03CF09696E5637ADBC8B42596483FA4 +:10FF00005D12ABEB51A5956FAEE87F7F6A608FE421 +:10FF10008186ECB9E96FBA206D0AEC61980E3CC39A +:10FF2000D3508D4DC4F40BD3BD8590D6C1BFD3182B +:10FF3000CB6EFFC7E9014CDB03F33536C612373F02 +:10FF4000B6E5782AA4F303EF4B909E9BC84255E593 +:10FF500090CEE1F57FF040426B00E6B1BF88A72765 +:10FF60003F7098DA77E17A60FE719D7A9C04EBEA43 +:10FF70006C7130A8776FD19C343794EF2BEE7731CA +:10FF8000E8EF5BDBDA5E23F41FA7CC87D5577BA1B4 +:10FF9000DE3E89F737DAE6AFC6FE003E0F2D40F8A9 +:10FFA000F4E93C089F6DBD37CE6790FE12E0C56056 +:10FFB0002E5D9961976F08786C5DEBF2B401005B80 +:10FFC000F0AB8BE4C715B83C4F1A696AEC3BF89F5D +:10FFD000CE169DEE92C234BFBB617C19E6B75D17A9 +:10FFE000DE85F05BDA5E5E2D4F80B435EC4278CC76 +:10FFF0006BF7F0F2243E5F1628A0F96F4FE5E90A8F +:020000022000DC +:100000005B5E35C227761E5D3A779AA7F00AE62135 +:10001000EAFD77D7311C1CAE74FCFF8FDBCFF7589D +:100020002EDF3E24E869D87E72AEAC9FBF171FFF5B +:10003000A7FDFFDDF677DB72699F2F8F0FF07F4002 +:10004000EB091AE647FEDBE679C6585F18E9E74C8C +:10005000A286FAD18A7A8CF5309F15F8D983CF1B06 +:10006000FD50BFFB9E3EA357CB586BB0C53103F884 +:10007000D7F60E8D477233565054F27A2EA45BDABF +:1000800080EB42BAE52FBFEFCD05FED952AEB1AD40 +:1000900087F436DB3394DED8CAEB773B35D541188D +:1000A00077A3B3C4BC48C5F7BACB211FC7693BE3EC +:1000B0005AA29AD77694179066F730E6857EB66690 +:1000C000E4766DCD8994FF2A51A2F96EDFF24CF5EA +:1000D00068944B3658078C737CC2D4DE6B719E36A5 +:1000E0008DDB00F58FDBCEB48EC079D6683C062858 +:1000F0001F29D2236A640F24D9285C32B48FB7B188 +:100100006008F97247C95123946FAA06EE0915E2F7 +:10011000CB7B5623DFB6DB2C4C8B3CDE02C2A80C1B +:10012000F2058C5F2EBCB5F75A68DFED82F1A07C3A +:1001300013F36CC5FE036D1AB6CF4D55ACC56534CF +:1001400004FD4DFD17582CCA857216C4F9C9A7A61F +:100150007FC4C632F660620EADC719AEAF61F13032 +:100160008FD6921923A0515BB9CCB4D04FA24F3E89 +:100170001356EDABBD1AD20591B445C7BCD8AFE557 +:10018000FBFA6000BA8A67AAFA384E4C5A81A3A5D6 +:10019000D0E8C953F5639B648B4ACBCCFB6F3FC55A +:1001A000F6C699BB3FBC1AE6F50A7B942530F68467 +:1001B000CCE1D6ED84F160DD2D3A8F7926CAFFF1CE +:1001C0001A1BAEFBE3B5BEDD2DA808B43FC4583200 +:1001D00063CB706CC85FBEBF6F861DD6B7BD54437E +:1001E000ED37B7CBC15112E907940E6CD404499690 +:1001F00042FF0E58CF466B4610F7FDC0537A825B24 +:10020000C06A0CE643DAA46D37B2118CE5693CF79D +:100210005540BAF7E9317B1AA0FD6ABB99F6F98916 +:10022000A7CDD45F4B92BE539B83FA82A700E5E330 +:10023000A2FB8BB79840D61DD048427E03DC403FDE +:10024000E841B94FE9BFBC569507E30EE81BDAADAC +:10025000A86FF4C822CD1C5B2B207DA052499B6760 +:100260007827617F8CCB53F8D3C05A0FE895F6C737 +:10027000A73750B934536B67EC7147CA164B6A64A1 +:10028000BC713BE6BF1680BE7B8CEC5E5A7F1BB315 +:10029000E1FA356D81B8B19036B46AAE9E06DD18CC +:1002A000429AC41A84F7164D198EB1D136A68A8D9A +:1002B00083F484BE924280CBBEE72C2C00F9FBACC9 +:1002C000963AA4A7AEFDDAEAC7E07BBEB5A47929C9 +:1002D000949FB72C4F463A7C42F6D4211C9FB02CF9 +:1002E00049C67D0B246AB97EC7401FB1223CDBD3CF +:1002F000504FF0D9BB5A5B32202DD6F193C4FDADDF +:10030000A427D97AAE47BADF96A16101A473E76A40 +:10031000A30EF7A9000000702ED67657E76079BECD +:1003200086AD57F1B16D9244FA5F5E926306AE33CB +:100330006FA343622A3C7CC1A121FCEF429D0FF7D1 +:10034000D9C9041EC07C20AD7BB4CC837860B0B129 +:10035000125CB72EA3D9EB1D427F7A55F4C3804CB3 +:100360002D6582A5C13C93CA4FFE04E9AA45EFD989 +:10037000437877A311642174FFF4228941938F6D30 +:100380007C5C79A19BE827B9431FD0427D59C366A5 +:1003900062FD8D19CCB60E594E87FEB4762CF13520 +:1003A0008EFF7E16C47524B76A4E1BA07E52F8B32A +:1003B000B548CF296D9A901EBE49757AE656D16D23 +:1003C000CAA98FFE8AF34861AA7C68FFEB78DF2A0E +:1003D0003BEC832123CCFC853CDF05F38F13F38FAB +:1003E0006BD5040CD0DF53EBF83C37DFCD82387F80 +:1003F0002837AE71F0EAC897F482CFEC7B8E3D8946 +:1004000070D21BDBFA701D0370BD83C355DFB16969 +:1004100015AE435F08F350D1FBFAC464C2870CD613 +:1004200023217D7DCC58758F988F0C4599B827B0C6 +:10043000F40B3D274CB75A109ECD75A8C792AE0E4F +:10044000E327325EAEECC7FD76AE8FC4F69325FA95 +:1004500051D27B45BB03C71D330B01AE8FDC915BD3 +:10046000AC65047FBFD20EFB77623B9897D366F4EE +:100470008E86F97B1279FF07CCCD0D43E9D3E34596 +:10048000F9C6D7584002781C58EF6EAC47F86DD7C4 +:10049000B02EE8EA65E0D308977DA59C1FEFF372C4 +:1004A0003875037F463CE82EF09C20BA5B9EE759E6 +:1004B00027A61180F9DAF11F2082BB3D3E86FA940F +:1004C000DDC9BC26807377868FC343EE63B3809EFD +:1004D00018EC3152AC45D4B7970656217E741BFBFD +:1004E0008C2052808EDCC4E7BB1F64B62E02469877 +:1004F000B71370B109B858CA793B5B071F07FB45B2 +:10050000BE4A5B0F80B2389FBF4BC2F236FE4DF43D +:1005100045EF2BF123C4FB65803712CA8F68BCDC22 +:1005200086F001BE9E26B36A3D742A398C1CBF6FCB +:1005300003B8407D8B37A63F73DF7BC86F37EFD49E +:10054000B32EC0CFCC35D1FDA576245722DEA5C76A +:10055000E0F97B763BED476AEF9E5A0DCC73FB6268 +:10056000A6D1E2B82CE06D70D0FE3C81F27373B27C +:1005700086FA4D733A2AF5F1A8376848BEE916178E +:1005800076A11C56F657E7F4B19242AC67AB1C0952 +:10059000F59E70083C4F063C87F1D27AFBEF447A17 +:1005A0004B6D889E1F53CF4B7BF9B4CE180F0C199F +:1005B000BE31EBF999234730198E1768EB21BD0244 +:1005C00007653EB0315BACEEAD05389FD1B207E5B3 +:1005D000A20160960173D43DA909A4407F86273902 +:1005E0005DEB7AE4C0A878127B5E84BF2EE35B8368 +:1005F0001ADEFB9F2B243BB44BC7F522ADD0E7148A +:1006000038343BF4348F6607D7E72A5FC8986C818B +:10061000B1B6673292878C1D24FAF9B1987B8B268C +:10062000BC2B0EE5CDFB06B25D4B7A03F3DF80B445 +:10063000D5C96CB8FCCD72B3D1AED2C7A08BA0C661 +:1006400075F9AFA21F0CCADF32B500F99A92EE0914 +:10065000E59A31AD0B6914B9E94576A092CB01E377 +:100660002494BBB6AB64E02D1B1DD55B74999790A9 +:10067000B3ECFBD31B405E156728E909D3BD20C747 +:10068000BB8CB6AB6CD07EACC3FE9AF1FBD05FA93D +:10069000280FCC798DE47A8C1C2ED2F68D3102D1C4 +:1006A000ED6CCFDE52958974E636E33E5E76DDB2C0 +:1006B000DB8CF4DC1572F0F1EEB74F378DBFFC78B0 +:1006C00000AF1EE44B5D5B4E12DFB706F5DEE010B7 +:1006D0007CEC1AA447E8EF9938EF78C7F8CBE3C36E +:1006E00035021FFE6CE77A729196350FE57F99E52A +:1006F000E0FCB1A85BDF8CFA79E50B16A2FB7D5B11 +:10070000E63E8A745F396AC19E385843D76F6FD20C +:10071000217FBCC12153FDAE17FDA36CC497DD69D9 +:10072000081FB46F69FDCF2D2066170B1F1DAEABE0 +:100730007070FE348749E81FEEF9479D340F86FE3E +:10074000A5A7D6033F2F1C3C5FBF83AFA7652D2015 +:100750000C29EF61B257F2EC5E2F8E1BEFF405F01F +:10076000AB037BC03B843D257F93CEBC899174A7AE +:10077000CDCB5821E66751FEB75ADFAD08DF3DCF3C +:10078000975F0FEC9AEDD1B00684EF8404EF62CC52 +:10079000FFB2B5B400F978ECBC946FCBDA5008F531 +:1007A000DE81B46E68BFD743091CEE1ABB8DAF5F04 +:1007B000F614E03A62F1AFA49411DC649955215F1C +:1007C000F85BF1597BDC7C1AF9B016F507FC9EDA70 +:1007D000FC19CA7DB0AB64E40746C1AF4A34FEF5EC +:1007E000B83EFD415F280ED25A8B97F051A1538538 +:1007F000AE563BAC5B2ED96FC3A07EB75DAADF03BC +:100800001A5B230AB95B99C5343553D56F28A6DF27 +:10081000E641FDEE72245DA25FA19F6F7498B7045C +:1008200032506F023D65087C3A6FE7FC32964FEB21 +:10083000904F9770FE9C12CFF935CEC7807C7AEC32 +:10084000F07CFA0B540CA03F39C4F9BA8CEBC12FE1 +:10085000AE03DAEB6D3E92E730FF0308179621C92D +:1008600028C79575A139827800FB58171C62BEE332 +:10087000EC7A41CF317C0AA7A4923FAE04FF1184E9 +:100880008FC1C9E761C8E8137A25D7F3FF5E3D7BC6 +:100890009EE02BDD26F756F40B2795696C0116D1E7 +:1008A0009B9F5AD7574D727C9BC6837ACD807E2CF6 +:1008B000F467451F97919FA39C6AD374A17EBDBD29 +:1008C000553313E785FA3693B83E6682796CEB2888 +:1008D000213D6CFB7299ECF2417AB513F46DE8CFCF +:1008E00056AEF19A50FFF64797837EFD01C2BBBB1F +:1008F000707548827EEE2DE7F67DACFE1BAB37C5EA +:10090000EA49B17A50ACDE93DE1C5DFEB7EB1D5CAC +:100910006FB852FD03FF86D23B480F2239F9A75624 +:10092000E40B643740FA9F1C7F6A457AE8DA323775 +:100930000DF1619FCE47FEC067847FE959F1CDB6C6 +:10094000F1FD55CA9F177EA883C3941F12E547C4C3 +:1009500037B6FC17A25D6898F64745BBE3C3B47F82 +:1009600055B4EB1DA6FC7551FEE630FDFF5AB4EB05 +:100970001BA6FDDBA2DD3BC3B43F29DABD37A89C33 +:10098000F3F7F745F9A998FE3F10F5C3223FD7E6E4 +:10099000E6F27398F306C58EC1BDD4287E236D841C +:1009A000EE7E26F815FEB59445EC03859EE3AB5824 +:1009B00010E948B13B14FBE0453B1FD7562EEC072E +:1009C00016625C6EC3FA0A87874F161A7449745E02 +:1009D000427A06E2CD6D2ABE949BA8E3E5C51C0EC3 +:1009E00091758DD428EBD240FD31C25F972BFC8CE2 +:1009F000FBED91FE16A9FA8B17FE08655EC3E19523 +:100A000059CC4BA937DCFEA7613D557FC3ED736E12 +:100A10004C7FC3E16B7C4C7FC3D1853EA6BFE1F028 +:100A20003739A6BFA745798FF87E2BF4F9CBE14D76 +:100A30002CFE7529E763B607B7E0798EEE9B1CE6BE +:100A4000BD1A5B70FEFF92C34DE3EB641FB3517997 +:100A50001E957F81FA08E46BF5ED9E4289E399DAF1 +:100A60000EB5B56A087F9CCC43FE0105AF1C0C1681 +:100A7000A48DE0D5B0727CB0DEB1237108FDE072C8 +:100A8000FEB2AE52EEEF0C4C32929DE794992B11D0 +:100A9000915D5BE3413FF21768C5245DDE6F7A39F3 +:100AA0003FE9E5FCA3FB13ADCEB35731F47F78905B +:100AB0004F4FFD97C2FBAB615EABDFD292DD95D7A6 +:100AC000EEA573BFBBC2925B6DB70EE8A3C663A170 +:100AD0001680FBBD6B611C5D445FBC6F2D8C03FBFE +:100AE000D826076AC9FFD4E19090AE4F2572FFD691 +:100AF000CBCEDAEA1CF47B7BB85FBBAB779F11FDF2 +:100B0000085F966A68AB5A3B6A67A05FBC3B287B6C +:100B1000701B13343DC61139E8FFE7FA119E27A870 +:100B2000F5D491B6E64AACB7CF5369447DB8E52F0A +:100B3000938DC88736DBCE18D1CED826FCF4DBCB1C +:100B4000DF36A2FFBEDB03F99648FEB6D2A1FDF761 +:100B5000B1EB3D69137E3EF40741BBAB8EBD669B96 +:100B60000CF3CC6F75149B18C71FF47F7C2BEAC95C +:100B70006BB49E0F81462CA83F00FEE483BE8EF826 +:100B80002CAFD1F37C067053ED9746E023A0604074 +:100B900022E6678B946B07EFA7523F765F157D7C4B +:100BA00000FE4199ADCB89C07D3BC21DAA6DEFD53A +:100BB00011DFFD12F090E5F0F315FF10FA92026FCD +:100BC000ADA0E358B8EFD705E87CF068E78F5D612A +:100BD00084FB8BFE6CDB10F053BE7B13DC420E04F7 +:100BE0004C684701DC4C9A7290F3924474FF9F0F5B +:100BF000B4939CD7B9B9FEA7E895BAA04C701CD0A5 +:100C00004F4F19884E754E3FC379CBA09FE217E82E +:100C100052E7C4FED7B021F553C53F6EE8D841E78F +:100C2000C5B29BD3B9EE38D7F3147D59C6F190FE07 +:100C300099DF2BE5201F3070BF6A641C078D63911C +:100C4000A2F8C2803E2FFCEE791DF7F7E238C3F21E +:100C500095C17647867308FBE0EFF5D3FF0DF649A3 +:100C6000E190E30BBBC4D9F1406B6012ED9FF01F24 +:100C7000792D12B43733E56F15F96BEE14B86B1696 +:100C8000E74253B4FCFC28E14989FC95A6804CFB63 +:100C9000680EAC5F85FEB404AC0CF8D9B84FA273F3 +:100CA000192827F82BED4D057A1652E1794ED0C060 +:100CB000422AFEB894B5D17A1A41CF0CA9E86A2924 +:100CC0009E53C563B9AA3DEA9FDA0509B88FF1883A +:100CD0000F1306E3E99A5315A1E3AAF1AE770A7E52 +:100CE000F93DF63DD27745FBE1F0FCEBB5DED07186 +:100CF00020B11CC93B07E1A9E4B3725824ECCF969C +:100D0000FCAF46FB87A01305AE8BD64C66BF07FE33 +:100D1000FABCDE5621A3BC784422FB6E5195FB60E1 +:100D200018BA981894C80E5874F71B0FE0F9D684B7 +:100D30000F3D7A3C1F5DD9C7EDEE14EDAAE29FC2CC +:100D4000F7C1A3EC169F48AF423BCAE275E3F942F4 +:100D5000BDD8EF0BBAE6621BFAD37E68F1A23D550F +:100D60003FC7FB5B09E055BFA0D08870ABEF31797E +:100D7000E96B64B219EC4AF617583DB4BF4DEC76F6 +:100D8000BDCC8C989FA267B209BE2F74CCD2BB8118 +:100D9000CE52CCCC88E9B2F5303EC2B9DC47F3ABD9 +:100DA0003FF2CF7FC2FE6E97432F4B44DF41E207F5 +:100DB000F5475EFB33FA896FF3822103F5AEDAAFB4 +:100DC0001748C9E15FD4139D1E77303A5D1C8A4EE7 +:100DD0005FDD1B9DEE478514C639FC572DC3739FFD +:100DE000FEC7E3E81CA211F4CF1F38F834D0765EBA +:100DF000F64451E75680C3F3DFFEE83F7E0AE9FE82 +:100E00005F69C90E7C7E0CE898083F399885F33BF2 +:100E1000BFE7F1477643F9F99FA7A067871D3DF724 +:100E2000CCC830E45F5CEBDB5D05FC7272E3912CB7 +:100E3000E487170FFEEB2388D71F3F6D60789EF77E +:100E4000B1F0CBBCFCFEA1B37B70BCA7E38A911FC1 +:100E50007FFCD40B23113ECB9E7829ABDE82FD3E76 +:100E60005146E99F3F3E16BFE71FFFE791F5E48C2F +:100E70000F66A19C51FA697CD2743A11E0B604CF96 +:100E8000391307E3D3DFDA6FA338B7687C72735F77 +:100E900022EC53E37E6B00BFCBF6DFFB19FF4A6FFA +:100EA000F1EF3A2A5F06102907F82DB968B1201131 +:100EB00037EE3744C17DD4AEE87D386BE57AC2E8C1 +:100EC0006074FE1218F71918B7E0E2821939D0EFF2 +:100ED00059E11F5CA267FE0350BF09F2F1FCF5A2C5 +:100EE000388F895DE73127D74B9B0E468F7F481E91 +:100EF000BAFE6B4E2EA70BF0E449C517D20C43FB8C +:100F00001BFF4DD4FFF9CF07EA6BB9DD0B64948C5E +:100F10007C87D3D361E5FC9FB13BD2814E1A113956 +:100F20007223F9C89F988A3F7D618CEFB201DCFE85 +:100F3000C1C9F5E5AF759C5ECFAF0D3DF021F08FD7 +:100F4000B36BBDDE2A55FCC4925DAB5E4D05BC594A +:100F50007E20A9048757F2973F7E2C1EFD1D637AE1 +:100F600074C437CFEF3FB6F336C4CF1E1D433E0ED9 +:100F7000E5C9587EA1E795F89B217FC9C3F6123CCD +:100F80009F57DADFBE6B8AB74AC5EFFE56FA53F8B1 +:100F9000C2721B87C30BE57D53D381CE1A77491EDE +:100FA000ACD6D873E3ECEB90061FD67AF2A1BC4C1A +:100FB000663E6D09AEE3B957D320BFE9A5F165B828 +:100FC0001EE8620EE66FD5F86616215F7A44E7D90F +:100FD000C7F37B358067470BEED79F41799AC4FDF5 +:100FE000905BE75A1A508F83FE8E6BA05DFCA39234 +:100FF00057A4DFC3FAE72A7BE251BFFF486769C500 +:1010000073A28FACCD27701E81A778BF2CC4E7BD1B +:10101000549CF3371CD1915C6ADAB721BE02FD07FC +:10102000DF6A2519F9C03E89F8C0EDBBA2F1AB011A +:10103000FA76C1B8E73BADD4FFF9A46016EA3FE702 +:10104000ADC12C076F4FFCAF61FF2FFF8CFC6E69A9 +:1010500030BA7D2C3E8C12EB82BF02355EC5D64382 +:101060004E249745CA97AF0139A0A2FFE51FB6EB02 +:10107000D1BE5A5AA3BFE4788097CC4DF030913D51 +:10108000D2388655B94BA8583242FFE7F15F602F3E +:1010900035D6B26A259FE222C439E817A77EB95D2A +:1010A0000BF89D869B873EDD7F8923BFDCC79FE8C9 +:1010B000496E9C3F070A04AC7BA56BF6EE2AD5FC73 +:1010C0002E1C3C168FF3BBE00EC53BD05E167AF5A6 +:1010D000051B4F379EDB4A7EC7753DC7E291AF3691 +:1010E000F624D2B9DCA1A7248706E07CE1DC637199 +:1010F0006C083A5D76CE5189E7D7B17C4891ABA7B1 +:10110000F19F20EF6B92BCD39210CE2D89248F5388 +:10111000129B8B9B87E84F697743929BBEF5425F9A +:1011200048D1AEA6FA4D29BE5AECC755D9E7D5022B +:101130001C5D3398670354F9BDD6F363DB089493C1 +:101140007E3DD9972D4934CEED0CF605F217C92C0A +:1011500024037E2E42793B96D204BF45FBA5E006D0 +:1011600018C3DA66605E153D2EE930449D0BB087EA +:1011700055E500FFA5284FE3295E2584FEB6658F5F +:1011800046D76F64211A77F993DF19D4FD32D62E32 +:10119000F0CDAB47FDF84F023E4D29DEC62498B294 +:1011A000546BA479FDE829AEB739C5796CFF830982 +:1011B000741EDB28E4F86D8697699D4D77D77B1701 +:1011C000833EF2E99A45DEC589E2FC18E97E97C4C0 +:1011D000F1AB8A8532619EF3857ED378440A15414E +:1011E000FA36583FEA11139F9402D6719036B240F6 +:1011F0003CE2DB3B7C7F968B7561BD84128463800F +:10120000C6DB28F66529EBA3F5811CDB900CE3AD6A +:101210003C07BC0152BD2F972520FE7CC13C0948EC +:1012200097A097309363F03EC7C2B7E1E11878AB5F +:10123000E1998B708CDE9F95CF025C87C0B7070564 +:10124000DFFF00EC0F5C4704AFD611DC1F5C277199 +:10125000791198350FF9F5CE796565788E741FFA96 +:10126000E3D34447E5C80F9972BE1832C238E6ABE3 +:1012700007D2545EB69EA7BB93DE9AB10BECA79D36 +:101280003A7F2AFA4776CE02BD97EB2D26D45BF63D +:10129000BAFCFB715F17697DAFE291E58715DE91BE +:1012A000849F6B389C1F2A691EDD7C09BD3405C6EE +:1012B0008E7388F9A11E5564213C48C53941BE355D +:1012C0008BE75BC79A83EB213F450386DE10F05620 +:1012D000BE293298C50EFA322B7E3154EA12F5152A +:1012E0007D31059526D43BC7341F40FC4A595858D8 +:1012F000B2212732CF9D12D023EACD3F9588CFC7A8 +:101300001D39104A877A2BAADD1AF2C3DF74AA00AE +:10131000E340DE4DE27A4382D093774BAC05ED6F2C +:1013200017E0B95482E91DA9AB21BFF45989F4EA49 +:1013300015CF5668575868FD5CAF8E6BEED4E0F859 +:10134000B714D0F8B02FB7D442FEFB022F532D1C98 +:101350005F5DEB0339D84FC251DFAA57086E660FA5 +:10136000C609203C69DD46D68AFAB28BAD93B0DE61 +:10137000A6248E179BEA591DEA45001E39C1C1BF3C +:10138000EF619C83CC5A741C6EB299E7B7E0380FBA +:10139000C6F3792569B4B7CC42FDBF84A71DF748D1 +:1013A000DE2E22C61D7C1F0DAC1AD789F9B82E98E7 +:1013B00086F7804505DFC9CDC5388F9411FCFB66E3 +:1013C000D818D0025DBEE954F4E09085919EE3D335 +:1013D000A03CB843C8FD4F75DE94AB519EBCA5A39D +:1013E000384267564CFDBC025E5FC8DB2F3D93134D +:1013F00090497C69F126D8E17B50C7ED85D87D37CF +:10140000260BFDEE9B741654C991A6BAAFC85E6850 +:10141000FA262B2AFFC25A58C928953C6C383A152F +:10142000EBAD607D9B902E56F468595045BF074D3B +:101430007CDCAF7F67207EF5A32D23BA505F8FA59C +:10144000D7A66FB42C00B4778D5643F59BEA40CEF7 +:10145000A1FED2AAEDC4739FA66FF4BC3C9BF7D744 +:10146000F44D220BA0AF5476C7D71661BBCF36DD43 +:1014700086FBFF9244713C4DDF24F372E68E47FDFC +:10148000BBE91B89D267642E0F9B0E7E2DD627F3F6 +:10149000FCA026900FFB5003F214F9EC198CF443D6 +:1014A0003C3FA815E761E1F8AB217DE6E008E27F6B +:1014B00017D602231D45F5480FBE680B937C4DC31C +:1014C00073754CBB795A592796237C2ED6297C23D9 +:1014D00024E3FEECF1BC2CA33F6DB9E7E5A94C85F4 +:1014E000271178C6B1800A9EC91BFA421AE011552D +:1014F000C939F7169A60EB8E2AFC6AC4BD18779832 +:10150000ACD544F1AF38E53C987136FBA0462BF8DA +:101510005FDEBD5593D4695E3FD23E7F6615F0BB5A +:10152000D242DEFEFAE4916FAC4759AAC835B93F02 +:10153000CB6755A58D31690BA48B54695B4CB933CE +:10154000A6DC1593CEE0F5172684C76BC1969C9751 +:101550003C6626DE5358981EBE13EF85B46D289C5A +:101560005905E945A59C1FAD3C2279B87B9AC36F0C +:10157000A58791BE6AF184F5789E1057EA795503E4 +:10158000F5961F946C12D087A5E74008F9CB726CD2 +:10159000E756B5EBE17AEEF29ED3D46ED8FE0B346B +:1015A00044DF5B0BCE50BD156B3ED1A3DED6FA9760 +:1015B000753EE4FB251ACEA764E6F7A603BEAF3C52 +:1015C000388BFC5B0A1FBD98EA3D86F309BC2451A9 +:1015D0007CEC00DD61BF96085D28F5FFBDE8C8BB67 +:1015E000187F1077C767EB64A8FFBB157F1C8FE3DC +:1015F000FD3B5699807C39381AC75DD070EB68CCBA +:10160000FFE18AFC97710A1FE8C27B3116EFA1E463 +:101610004A82DF07D67026C673EE4EAEE1E9A4F02B +:101620005E84677CCA7533F15EC80799E14C0DA4EE +:101630001F49DECCCBF3C37B31FD6E72232F2F0A03 +:1016400067626C78315B4EF0DF67E37CF0DF63E468 +:10165000F0F664AE6F3F95EFDD928CFEACE55C0E6C +:10166000EE059BCB08FC71E19EF053FB60FD0BFF88 +:10167000218EC7A95E983DC3C7E1E343FD3B85A327 +:10168000BC4A1ECAE45750E4A1B20FD6AC3E37C9DB +:101690008B18793525C99B909214F9BEE7862FD413 +:1016A0004F48710BFF5A73B11BFA5DB0C0E2D9CA43 +:1016B000E97B3CE2DF7D26BE9E3811676111FBF1BC +:1016C000A8E0938F26737B7569D214EA0FF4FC00AF +:1016D000C6870766E9490FEB98E54D353BF19BACB2 +:1016E0000944F93B7464E7741433E2831D2BF22937 +:1016F0009E7040BF7F80DB090AFCE6231F52F1DDAC +:101700008EA59353915F75E4785391AF287C92C96D +:101710003D49B38A227C11D39C1F4A3CCDA0DC1AE0 +:10172000E9E7661DF321FFBBB993F3BB817C09F2A6 +:101730000B23EDAF34BFC3CEE7A3C8C3940D3D74F4 +:101740000E93F2508E83F40614ACA87FED18D58565 +:1017500070DEEBAA25B875CC7ACC746B61047F7F00 +:1017600097EFFD7532E4CF1771490ABEE01FFAE921 +:10177000163D90D289710809291CFE1F6A40BF02DC +:10178000BDF46E97B2AF8CF02121859F572D60E19B +:101790003B911EFE677FFE8FED8F06E9E8BFBB3FE2 +:1017A0002BD6FCF1CAF8A3A0C39D524897C2F923D7 +:1017B000F727407E2DC0E968923F2945E5F75DF89F +:1017C0009315A914C722E61377D70BD5374172E1D9 +:1017D000B2F303FC85B907EBDB1FBC6F6CC37896D3 +:1017E0000FF43D24073E00FB721DF24BE1FFFB406E +:1017F000ACBBEC1F1ADF443B7B590A3F8746BB9EBC +:10180000A9F1698BE7373F1D12AFB4DC9E7B494BD2 +:101810007A7C477170F7122CBFB1D01380714C02E3 +:101820007F00BF48CF613FE1F67D47FE198267C761 +:10183000047EC4DA91C3CB3BE68D24FF3DE05580A6 +:10184000F8E13C33F5CB847DFB699D2B88FB077861 +:10185000C6C75DAA217E39509E974BF7262278D7BE +:101860001F3F4B852F9F0A7FDEA7A80725A8F2857B +:10187000FF00E47D7CADF5CAF315BC4BDEA0E03D76 +:10188000C7B30FEF4F213F30A8232311EF6F4AE179 +:10189000FE3985DFDEEDF2D722BE0CE8CD8AFD7E73 +:1018A0005F26E1E7662BC7E3874DACD55882EDDDB7 +:1018B00051E7670F839D81F205ECEC3AECE716687F +:1018C0007E10D2B7A4F87F11C671D72878EBD32346 +:1018D0009EDD26EC7B764FB41D8AF1360369EDE080 +:1018E000F4122FF76F0FF21FB06F0DD1EDB83E134A +:1018F00057D8AF43FC7EC8C4ED36457EEDC2F33900 +:1019000058DFAEBBE382488F4ABD2F2E98351807AB +:101910007AA7585FEF9B5727A0DF5BB1B763EDEF66 +:1019200095B8045C378C8D7EE326B39BFC73D76837 +:10193000F9BD84FE174D021FBCF538DE9940A63B69 +:101940000A5F9E93089FB03DAEAB298FB1490EF25E +:101950005310FE9DDDA2ED3210FE742E45BDA57F15 +:10196000A999DFD161FEA5587EA62E8D617F4DE637 +:101970007016EAAD67E4F0428CAB0A1C3430A493D5 +:10198000268420F61BF8EB5AF45F29FA36FA95D52F +:10199000F6FE45F85F434944AF56F4FB8BA88FAB86 +:1019A000F31145C0DE59CE9BB2E5E25EC34ACDE9F4 +:1019B00091AB557A38515132F9D399FA7E09C26BFD +:1019C00052097D8F6B693FC2653E151E0FD4D39CB3 +:1019D000A1FE86B39B57EEFA23DDDF58F96C341E67 +:1019E0002C8FE08BF49D84E3ABF047654F937E8EA4 +:1019F000F45FC582F9E89F12E9B8EABE20DA494DE2 +:101A0000C29F9374343C15E9C85ADAC3D0BE6E3A0B +:101A1000C7E965E291CE63687FDBABFBE82A4693BA +:101A2000F0572AF8A5CC73C2911D5AB42F8E7EC2EE +:101A3000F1AAF24CFD3CE4C787CDA995E867DAEB43 +:101A4000F2BF8CF432E0B7603DB4EF8B1E926CC8ED +:101A5000370E3B98D7467072E7219C2A1DFC3CA3A9 +:101A6000C23CBAF00FF03D7A26A75007FD9F4CE12B +:101A7000F1C0A036F5229FBE384CBCEB3B424E5421 +:101A80007E60F2A37E55693611DFBBEFFE5184679D +:101A9000CAF88B77E63870FC7752B8FEB5D7E57B8D +:101AA0002785F4374F19D2EF3121EF2BF5EE3CC4E7 +:101AB000BBC3E6944AA4E7E9CA3958A022CF09FB80 +:101AC0005FE9E2B09F6E3484AC743ED63E1AF9D121 +:101AD000ACC566AEFFB11AC2936A814FDB72F83EA5 +:101AE0006C9BCEFD8627A41E27CA338DB1FD0ECC7C +:101AF0009F9167F5E0FEBC25D933D15FC996EAEC2A +:101B0000678D145AC586C29388FC91D95905DFB5F3 +:101B1000780F0AF8BB83BEE477816F00D33BCD2CEE +:101B200080F4B3D36C203D04CB79FC82FB61946BD1 +:101B3000354603DDBBB7A2FF8AB7F7A25FA5C6F89B +:101B4000CBF770DDE88F43FE08E55EA55F5ECE7AD9 +:101B5000904E9847776120EE05F8DD6E13F7DF4170 +:101B6000BB00F24F681710ED427CDC0C3B9ED32A81 +:101B7000EBDBA0EB2926FA5E61F1207D3F5C1130A2 +:101B80006439912F9B8AD14FFBA8551F72C03CE24C +:101B90005D4A7C9A9BECB933021FF2E2F5213C9F2F +:101BA00056F04F6FAA88772545E0B1C104FB8372D8 +:101BB000F636B307E522CE43CC270A4E11B870FFA4 +:101BC000790D0D15810BE06D95AD440D1F4B08CFC0 +:101BD000B363E1321C3C9475E07C1DF183E1B24BB0 +:101BE00073A091F8F745B387FBC962E08459A92433 +:101BF0008FC6B8D06E64FE1F60E14A23F3A25F690E +:101C0000896115F9571B84FF9AA1D30EF48E8BE8D6 +:101C10004404785EFCB9447201CF47D47C12CF3BB8 +:101C2000D4E9E58A9F767F8C3F55C8B715E8E7C5AC +:101C30006F4F743BE0E424079B0EC6FAAF07F853DE +:101C40008C1F8BD3C59E9D39A4EF8511D81330739B +:101C50003DED33FAC7B8BCF7A6A23F66E7D2DC1267 +:101C6000F497C4C95C4FBCAD7D14C5F5A2FC47BD5B +:101C700041F1AB29F4BCD7557923E2C1B5A9953E12 +:101C8000FC927366883882587D4EA9877EB54B9D3D +:101C900037AC46FE07FA8DDFE5A674F56BF9292807 +:101CA00057574BEE142E574746A5CF6AFD74DEA05A +:101CB000F8C597A2BF5F1B81EB12E14F5FA2F8CF7F +:101CC000619FDC31FBA44E2F53ED935BBD4F552C30 +:101CD000648DD92775BB95B04FD80EF7499DCF3A83 +:101CE000F8BA6F117242C15BFB3D9D5AA6F23724D0 +:101CF00094787336A2DC7E4D47FED13F08BC847DCC +:101D000028433DB029A5723EE2A719ED9642D4DFE3 +:101D10005903EE37FA636BD16FB59679311E0DF624 +:101D2000B5AC760839B9F590A901F1648BA0772597 +:101D3000DFEBE2F1A0E447473D638B41E8ADEE2CD9 +:101D4000ECA72C57D10FDD744EBE589C13AF9C6B83 +:101D5000F1637F67849FFF4117E7FF0FA203797C40 +:101D600024ADAC4F8987403FB1DACFF9339772EE9B +:101D7000C7FDB34CF6A7927DA10B9A6E237DCBA72E +:101D8000477DEBF30B1C2F7A7B17913EF3799D99DE +:101D9000E17D977D024F168BF3A9CF995BE85F2316 +:101DA000491F53D2037A56A756E859CDFFF1538005 +:101DB000F7B937133D88FF037AD6477A452F0FA02E +:101DC0001E75AE6734D7DBB59257223D4CC087F104 +:101DD00078C6734732496F3F8BF10F00CA73B27FE9 +:101DE00037D255A0879FB39E53F4A865E7C7A23C9E +:101DF0003FC7381F0E1C31505C0B9303A43F9D1D41 +:101E0000D0D783E9B355FB7748BCC3B25C1F1A89AE +:101E1000FAFA39A15F2969E5DC1ED378FFEBB0E05F +:101E2000DFCBCD3CFD23A3FF9748A7CFEBB9DDB4B3 +:101E30003C1EF22D43C183F38373AD291E945B08CE +:101E40000F89FCB5562A1FD0333B153D53127AAB90 +:101E500024E0D15F80E780E7CE2593DEFAA94F4FDB +:101E6000F1FDE7843F5781C3FA8F1E4BC77D393799 +:101E7000A03FF2F5EF14F3EED0B9B3AE46FD09F58D +:101E8000363C8F6EE5F16E4DC1DF2F403DAEA9E1CE +:101E90002F0B293F26DEE15329BC7D24F1777EDF1D +:101EA0007FA58D9729EB56E0D924F450E6EC4F1E20 +:101EB0004A9F6CFA68938FE2C3188FA39D2858EA53 +:101EC000A07A31E393FD54C6F5683A0F8C89AF6070 +:101ED000EAB47670FAAF0374109DFF1DEA45E37112 +:101EE0001ED1FD7DA80BC44F247CD510BF58D15105 +:101EF000BF04F16BA3D3AF4F85FA87EEDF5CC672E8 +:101F000023783AF1E30CB2CF583B3F8FFD50E75DA9 +:101F1000887468AF0AE96F55C1273395F387450682 +:101F2000A19F033F55F313A5BCAC72E8F38A8C5410 +:101F30004EF756118FC5D86C03CAFD43F84FB7BA98 +:101F40001ED72F3353DDD45FF639EE0F9E78AEFFE8 +:101F500065BC73B9BCA798E222B2EF0911FD7FA856 +:101F60006321F4137DB89BE3232E0BFB5D52CEFB64 +:101F70005DA205BB5215A7B54CECDB1203D8A1C07E +:101F80006F5FD85FA1B542BFCB1E963C26A83F51DC +:101F9000F063B44FB2513E88789E06D6B7290CFD47 +:101FA0002F6963C6728AE30A6AD309CE1403CBE2AF +:101FB000CB8314CFA5C007E44A4B3CB45BE60DD2FB +:101FC00079456C9C0453C73DE07EE0F9BC4A8F59CB +:101FD000D1BE85CEFB07F4809ED8F3FB6F0DD17880 +:101FE000138892938A7C9C8A704C8AC88DE1E42580 +:101FF000E839D352F9FE71FA3D20113C57B0667EA4 +:102000005E2FE455AC5E7256CBE5EB12C30EFA2E92 +:1020100048CDA1F196B1B0387FE67ACAE5F67D8168 +:10202000C01F65BF979F63A1EF43FF3F14F357EABB +:102030002DBF8785568CE55FB40700CE5C8E1BB93B +:102040001CC7AFF90AE479AC1C8F95DBB1F23A45B5 +:10205000CFE5B3821FEA7341D45B26DE13D4E23EA0 +:10206000BFBA36F8C087F98C7D6D8A1F8BF15F6B24 +:102070008CFC7B9739BE0BBF5F9BB282C8AF020856 +:102080006794071F58C94EF95AE3D9F5167CA76E15 +:10209000E6F8B3610BE77B1BD67139BA3395F38150 +:1020A0009F8AEF53824E8EE2783ABC6FB39FC69DF3 +:1020B0006A2C9691BE67DA3ECBC23B595AD073E286 +:1020C00080BF026F277AD71EB452DCC2D4F4EF87E8 +:1020D000709F8F59F56EADF03759605FA6B1C89FFC +:1020E0000DD253F11F30E434CBC83F207F9D2AF638 +:1020F0007DB9D1FF4F7885E5139DFF9F31447F8CDB +:10210000D1BF03F1670A73B7A0BD3E79EC349A875B +:10211000CCBCF7637E02F33E904A7C2CC376366ECD +:1021200030DE2AEB50E6ABAC036512EA9FDA2306F9 +:10213000BABF1E3B4FAD58D78617AD74BE7E2CF587 +:10214000579B10AF62E7AFC027761D30EFFD38AF69 +:10215000AF52DF5A88F8FB63734E0BD687793F9EE8 +:102160009A44F3FEF9A5E62D333FC503C9466B80BB +:10217000EE0746E2A19FC5F6ECC9E8786825EE3A7D +:10218000122FCCBFC73E61B968DFB3563CDB453880 +:10219000F2FA532C86D3486F1BACAC00E1708C99DB +:1021A0003DEB01BE4775EC20D239744776B224EA84 +:1021B0001F639C7E03A7ACE497948C3CCE0A3467E3 +:1021C00037C6B51E3319BCC4EFDDEEA8B864C55FD1 +:1021D00077EC77E9A4D71C3519287E11EB237F3DD6 +:1021E0002A1983B95204AF9953156F9C3B18CF51EC +:1021F000453D5712C1F71430D710BE9F227F188F6C +:10220000EF0984E8DE49A638AFCDB46868FF98B01E +:1022100007272BF08A99E764A385E2CE9925DAEEA9 +:1022200063ED0F79D5703B8AF04C88C0558163EC23 +:10223000BC07C16117C0BF4C057F23B41B4BF10520 +:102240002CDD3144FB18BB313DC5FF05EEFBD73A11 +:10225000AE47F6CF32921C7654F74BE8EF56FCD4DB +:10226000CA3A8F89613571933230EED49226ECEE02 +:10227000987929EB895D672C1C94F95E6E9DC79552 +:10228000FE62D76B1BA67DCC3A9FD6FBE2D3D01F54 +:10229000CFC245B88FBB504F569D7BC6F2C13704A5 +:1022A000FD5D293F64AC791CCA8DA937D47FE9A4B0 +:1022B000F703DFBCEE4D90E953A7D5DF81E9F53F89 +:1022C000EBBCCE02F268EA6489CEC1F3D39EDF8E06 +:1022D000F70AA6DE547F4712944FCC9873BD13CBF8 +:1022E0006F96C4FB789DD7E3FDC9A9B748A4BCBDD0 +:1022F0009D01F50BD14EF6EBF01C7F2E103CEE0B42 +:1023000074E155FBBDC6A5F1F38371699CDF7AD2F8 +:10231000DC9426D0A0CFAF8EC771817DA2ABA57310 +:1023200070BF0EE77DE2FBA0758DC37EFD99ED2A9F +:102330003DEAE475861F7A2DBC9EFAFC68729A14F9 +:1023400065B7C7EA4F95022F94734D6C7F6391BABE +:102350009CFBEF26E3FCA01F8B9BCB519CD79C22C0 +:10236000FE55EBB527E755BC8257C76EF400BF6337 +:10237000B89FFEE9B89FC7523FB1927E28878B7005 +:102380001D4887871C741E1D403D3E60E7E73A5399 +:10239000AA3D8FDE05DF933A7A6B821D8B3774B6C8 +:1023A000C012EE12F3EC55F813FCB529FC1AFADD55 +:1023B00011B73D6335C06D468681EEDDCCB0703817 +:1023C000BE912F29F44FEFE5287CBB86F5C9885FC5 +:1023D000D30A4711DFBE9EF553DAC76C3AFCD632FA +:1023E0000F7D3FAD0897917DAFC8A5CC01B9B4383A +:1023F0006D3CFA0783D4EED5B85F905CF9EDC0FC74 +:1024000042441703FC26869F0ECB6F707AC991F366 +:102410006E85DF498B05BFDD1420FE96C0FC77205A +:102420005C23FCAE4F22BBB9DC63E47113D174357D +:10243000704E355A22FEBD232E9EECAB99055217E5 +:10244000CABFC3BA9EE3C4DFA71BDC8477D014EFF6 +:102450008F127CA1936905523DC2E921146ED04FC1 +:102460006F318F539CE64E59847436AD1AE0181FB5 +:1024700059FFB4C59BFB902F4E2B786B3EB6BB8E9D +:102480008565ECE706BCA20CF39DC53C5330246C7B +:102490008ECF4EEF90D4164AF49ECF3B6B7B495EB5 +:1024A0008F3BE2DE80F9333D39C5183FED098534B5 +:1024B000F81EC98C023BC5635FFD264F5F576EA7B0 +:1024C0007645CF86D763FA06AF9DEA8F3B62AB2095 +:1024D0007FEE1CBB07CBED0B644E57797CFDB1F84A +:1024E00050FD6E4B0D82EDD1B49184E7137C129BAD +:1024F0000AED27CC911EC32399F5712B27D179645E +:10250000E0712DF2D79BC43EDA17F0F8909B16CC01 +:10251000D2E1BD37C0971FE3FA50FE237EC4E2CD5F +:10252000F3E23E7BE07A85BEF979DE6CDFA8E05607 +:1025300031AF396A39850716C911FE7A5212EDEBAF +:10254000F9FB35AFFF160C50E007936B72AA10CE63 +:10255000C440609DEFFCD04DFD4D2EB86906EECB1A +:1025600064DFE63E2AB7C4F0DF0F55F77520FD366D +:10257000EE1FF4E79A2391FF89A9EFF368317E8E6D +:10258000DF337755737CC47BF4EAFB42683FA8EBEA +:10259000839EF3CB34D247406B04781788F835C05C +:1025A0003E5AC73C9F14C47B5F2F2C96981EF7D7CA +:1025B000CF82C61C229D10C6995F13F4CD423C8287 +:1025C000B457ABB2B7660BFAD0A5ED6F7140BBDE66 +:1025D000098CE8FEB0145840F0F9ADC5BD4F25F7A1 +:1025E0007F2EE2E0AE72316336C95B2980FE86AB96 +:1025F0005E48E3E78F2E7E2F65CC6A0EB719351241 +:1026000043BD86B599E93D3918F7BBEF94F7C26031 +:102610007F67D7707FC48C7B4A83E89A78BE4489F1 +:10262000BF0BE890D9D7F9FC2C04FDCF74310F9E75 +:10263000D36A0A25D2776A9991F4CDD7E7E46E740C +:10264000E23CDFD37BF2093CBE2949503E678E8DC8 +:10265000FC43CC799D2666DFEBB8BFC69F497A9EC6 +:10266000D19F897EBACA6FE258E8EAC8BE550A7996 +:10267000839A85ACE2239980473E845F0C1F4247D2 +:102680000CC23375201D60589E8EFFC4751BC30499 +:102690006FABA2C7083B2B59D4BF266C5F44FBE34A +:1026A000E3749E52F7CBF7F06B4DCFE5F63654C38B +:1026B000F33409F105EA9DFC8495217F3839CC7B00 +:1026C000BFA9E9CAFD0CAEE7D4FA250FBA0A2BAAB6 +:1026D000D7C96857DEE49748FE7D6D0F1C4FE27C3A +:1026E00083AD8779CCACDEA1433BA96A717D269E80 +:1026F000839EB4FA32D1FE2C4D77537F79730C212F +:102700000D8E9FEAA7FC93E2DECBD7BFBBEB16A4EE +:10271000975AB73D07ED950AF7AA6CC48B998BEDD4 +:1027200039C8DF46A573F95C57CDC79DE99F45E3DE +:10273000DCB8B89EF6B9AAAE3303E7A58CF3BA3D70 +:10274000780AFD7627E6195033657935625C53F4D3 +:1027500078730B613C28AF28E4E3DD58C3C71B2F17 +:10276000C6ABAD83F1004E378A75CDABE994697D78 +:1027700005AB687DBF496ACE447FE1DB380EB4CB40 +:10278000AB36D0F9495EDDE63E1CEFE85A2FFB3D43 +:10279000FA6763E410BA77AC25C3CB9F6BD0AF84E4 +:1027A000F1B160FF621CEC76BDA7550B745C591546 +:1027B00014FEE368B93210AF7C2148F26F8ED1531A +:1027C000E5E4724CD39A1C911F8A5C7848EA79B38D +:1027D00004F1DECAFD950FCD4E20FEF7F66889FCA8 +:1027E0007C877582BF15733EADC89D69D52067E0B3 +:1027F000BB637602F1B7B9A512D1D15C0BAF7F6292 +:1028000002C8799447355C9EC7CA1FFC53F3FB8806 +:102810001CE2766515F3911C9FCE0273AE83F2DE47 +:10282000773E273B77A536B409CBC18EFB40C24526 +:102830001BB9BCFAF158A918E9B4A4B7FF28CA9D7E +:102840009A427ECF0724D5319267A5500EE9C21E69 +:102850003EBFEB6BECC42762E518C889A674C09B29 +:102860007766FF4725E6BF7A2D9783630FF27E7D5B +:10287000555C9E011F6D4E1F3F783FDF11743FB0C6 +:102880009FB1F41DB3BF03FA848FD323DBD44CFA7A +:10289000830BDFF323FBB34FC2F966DCC1C8AF3A49 +:1028A0009C3EA1ECFB1B117D2CDABEBA427D479900 +:1028B0000F712285EFF0EE6C68676788F66568BF78 +:1028C000E3BC0B153DA859D1837672B8F079BB7083 +:1028D000DEB05F1BCA3DCBECDAE1E7FD648A774FDF +:1028E0007A12DD97F5209FFEFC1D2DC98F99DE2DF4 +:1028F00055C81F6A5860A34DC59F46813D23ABE470 +:10290000DCE8A0116CF348FAAAFDB6A874518F2B2D +:10291000AAFEB883EEA8F2621092EAF2AB7B3D51B8 +:10292000E9F17DE551F5BFF79E372A3D215C1D5544 +:10293000FF9A73BEA8F418E6D7E0A2BFDF5F17D5F1 +:10294000EE731690F1DDD431FB402E1138BC7D05BD +:10295000C9741F9EFEAEFDC61FD54F91B8175CC14E +:102960009646F5C39EE5EF2434C37FB88F6362DEDD +:10297000451829DEADAD7B34FA3D8591787F381E50 +:10298000BFD1F563EF01FF5BBAB8075CCA4A518F4C +:1029900018B44F40BEB8DF37EE67C1A084EBA2BACF +:1029A0006CCC6EFE2E63ECBA947BC24CFBA68CF50D +:1029B000FE04F21B9F1C31B8A2F7D5E48EDED7B817 +:1029C00082E87DB57AA2F735A13C7A5FEDDEE87D3D +:1029D0004DAC8EDED7245FF4BEA6D445EF6BAA3F84 +:1029E0007A5FD31BA2F735B3397A3FB3D744EF5799 +:1029F0004EA021AA7C446B73345E8AFDCC6F5F13BA +:102A0000D54ED9CF00FC77A9FDBC714E850EFD0DCA +:102A1000B37DBAA87733AE745FCD19B0AF71917D35 +:102A2000BDD2FBDDC0FF6C1949113D07FFA2EDBF10 +:102A3000B17BEF807DAD46FBCF8D9901B26726FB60 +:102A40000DC40F8EA55E77DC2170412D07A6787628 +:102A5000C8F4CEA8D0EFD05D40F68E9FDB33338430 +:102A60009D186B1FCE66FD59F288C1F2E1C7E61CC6 +:102A70009DD0FF0B70BED5F8428116EDC35FD338F1 +:102A8000EF0CCC3F34C83EC4F39C2BE59703FCFB12 +:102A9000FA66E2DB97E5DFEECC081F24261B203E1A +:102AA0003879CD641FDE6BFF5AC7E362FBAF33900A +:102AB0007F7EF2DD15947F58E27A58E0575C5EAF76 +:102AC000FBDDF732F15E77658D4142793DD9281102 +:102AD000DD559ED3903D586929CE3497A23D62D0F2 +:102AE0006051A54522FFE5F3DF6ABD01F4FF27F140 +:102AF000F3BB1322AEF6843D87E8F55DABC16F846E +:102B0000F54D16F72D8EC6D83927AC3C7EF2C40A97 +:102B1000FE9EEE891CC2217662955BC441BE4DEBE0 +:102B2000EEBF93B9451C24F9150E591C3CCE313B20 +:102B30004CF186FD139477547B42A83F1DEAC8E10F +:102B4000E78F209CE9FC71C7C0792B8D77A82D9366 +:102B5000EC8129E21D8C433248649C979BBF137023 +:102B600048C4479E147290CE1F105EED26714FC46C +:102B7000BD0EFDAB87EE7173BD3E462E1E6201F2A7 +:102B80005B04EAF422AE3590773FD6AF1BC3EBB3BC +:102B9000687F00D42F7D1BEB3798A9FE097BA0F03E +:102BA0001984C3AC028A2355F0E3C475D332914E25 +:102BB000ABC0EEC37957CDE1EF6A54D976C8982FF0 +:102BC000D57139DA912FB563FE5E97FF1F33408EC2 +:102BD000A68D92A8DEF4FC7D26A4CB13C3FA5B7EFF +:102BE000F0BB3B86F0B7BC6DE57AD8B1D4A2166EC7 +:102BF0004F44D39BE22750F4AD6AD64EDF992C4464 +:102C0000DFC17E02A033ED507456AC63DC0FF320BD +:102C1000D2D90CE63F12E640257F14F08B9DB81EFA +:102C200065FDEFD87B8EC5C3BE5599242EF710FFE6 +:102C300055FACA70F4A6C06DBAED7416AEFBA8E9D9 +:102C4000EB2C35BFBA90E4DF97A13A479AEE089A89 +:102C50006C97D093DF18169EBF388578502BE059BB +:102C60006B71535CEF0913B77F62E138794E05F75A +:102C70005F097D770AC875AEBF06097E35C3F0AD22 +:102C80004BF8B37E81EB9809F0E3FEAC1FE8705E71 +:102C900000C7FF959134985FBD2BD671A57A672C3C +:102CA0001E0FF0B139D17EADE1FDF743C3B3779884 +:102CB000F30AC9CDFB9D2ADE4379DDC6ED05A85890 +:102CC00093AA8AEB7BBD95D339E005F1A16A211F58 +:102CD000010C240F3DF01FCEFF4FCCE2376A50CFDE +:102CE0008F967B95E2DD932AA6D273900F8A775256 +:102CF0002A63F29575C7CA45E51C63B8F57F96212E +:102D0000F421371BF51D94834C247DA8EF5D2D9D88 +:102D100003BC9274D3E21DB08E51FF3486EC8A5707 +:102D2000926FBEE32D4C3F3292EC9257536F7F145B +:102D3000CB47FE8C972B72F5BF32B87FB84A23DDA4 +:102D400086FEC382D2DFCECF81791F37B11F62DA10 +:102D5000C51A3A66C138AEC2DC920DD04F959E516D +:102D6000BD99E3565CAD3EC78FC36853A0B799E2E7 +:102D70003E40263E215C425F19FD3699AEA06CC3F1 +:102D8000B83E718F325D662D06F8EA5DED161BC206 +:102D9000CFCCFB7DB3F83725D86F552E4F5FE58933 +:102DA0003B3D02E72349349FAB0AA410BEEB5DE52F +:102DB000E0E535258FA761FC6B55A552FFBA8FB0B2 +:102DC0007E9578EF36DEEBD78D467F88F01BFD468B +:102DD000E6F8919F69A4F9BEB0A04287EFA8CCF5B0 +:102DE000713FDEF5E5EB24948373FDDE52F5BDC43F +:102DF000BC4C1DD59F53CEEBCDF1D5EB16ABD63FDA +:102E0000D7DB4FEFC4CEAD3B2D237F783786CE671F +:102E1000E13F3448E70B7F7827FA79AAB89E32471A +:102E2000D0F9DB48E72A7EE9C37FA07C5DC0F9DCEE +:102E3000AC6A4EE7735933D1671D6BA7EF7CD6435D +:102E4000DF05AC8FD3F7E901FACE463B5C45DF13D3 +:102E50003361FE37322FD5EB8B1BABE3F11AD17404 +:102E60003D1C1F043EE0CD1C3F3C1DBE3EAC5EF64B +:102E7000F4C3C8D7E6297A59DD8E57482FABE67AD6 +:102E8000D920BE563482CE0D869313C3F1B5E1F539 +:102E9000B14E59E863F371FE8A9F5E25276ECE1C02 +:102EA000C2AE3E31047F53EB67C3EA6535829F5D56 +:102EB0004E2F1B461FBBC4B9EF8F32FF8673DFD87E +:102EC00073E5A549DEFF72ABEE5534BD6734BAC772 +:102ED00061DAC7722D782FAEC2990BE54DC27F180B +:102EE000D7C7BC9D90BF57B99F90EBA67E5D7A1E59 +:102EF000F782EF02165B30AEA38FEECBF427815E34 +:102F0000E58EC463ECB5423BB4EB73397F19686F4F +:102F1000642D6655FBCA9B397FFE6A9B9EF8F3576A +:102F20007689FC415FCDB3905E7766BB9EE2084731 +:102F3000E8393D3B95FB466C13BF7F9E99C3CF0795 +:102F4000A5A32E746E05D856FA2AF1A767C47DC4CE +:102F5000AFEC9EF9D4EFB66409FB5DDC967F3D8E45 +:102F6000BBB82D23876F2AAFBF3D93CFF38CDBFB1C +:102F7000592FAE6B9685EE8131E62F467FAB415BD4 +:102F80003AC3A845B9724F7F2FB45F9169B1215EF2 +:102F900057659F3A89EF037FF4AC8EDE5A5DBA6FB6 +:102FA0007642089BC95E97AF68B05DB334182D4771 +:102FB0001AF747A757F444A79B62E448ACFC782E65 +:102FC00053D8556EE641F970A57655B6E43DC2F189 +:102FD0003F48F134CBC4FE1B0CCDE73A61FD86FBC4 +:102FE0000A4AD6119EF138A9E407724A505FBE53CF +:102FF000F0FBAD99BEE3D8DE905D3816F5CACAEC99 +:103000001ABA4FF2D56E13FDBECE57266E1F7CF551 +:103010001297AF1D59BCBC638FC12D11FD7B6BC6D0 +:1030200097611C14C7E7A65D5C9EC29F91BF5BE7DA +:1030300035E27E76E8BDFA546CF78FFC5E56C3AE7F +:10304000DB6B901F2E677D74AF252ECBCDEF8D6B84 +:103050009FD41BE19F392DDED1EB60BE8D3E33FD49 +:103060003E8EFC57D98778B419BB9C8071FB5E5BA0 +:103070000594AF38C8CF8FC299DCEFDCFA66F47DD7 +:1030800034FDB3B302489ED7FEB58ADE67BB7DCD63 +:1030900061BA4FE1D4F72756A0BDB04D43787FFB0E +:1030A000DD2F52BE545BDD87BF2F74769B857EEF8C +:1030B000E7D86E03ADFFEC4B5CFF38BB97C3E3F67C +:1030C0000C4BD0280D5E7F8B1412F14D7DF1B81F93 +:1030D0007FDC7B573CEEE31F95F8455B733CD1BB2F +:1030E000BB395E7DBFAFFB61ADF89DA4D5BF9E002F +:1030F000EBEAA89D5F8AEBBED65E6AC6771895722A +:10310000251E4376943F867CE8DABF6A893EF077D5 +:103110003430BEB7EABE1A8A77EDF699ED385F779C +:103120005B17DD438775D1BE756F33D2BA7258CF46 +:10313000268AEF6A9B4AFBD5D0D640FB3162B6990E +:10314000F492EE2356FAB5BE6E5BB919DB7733B94C +:103150007A287F7F30939F83576473FF4EF73BFC41 +:103160005DCCA9DA4933500EAFD8A6A1B8DBE3B5E0 +:10317000EF9F2C7046E84BAA2D4F0BF37807162AC9 +:10318000C3F7C105FE88F92C7D544BEF185E8ECE37 +:103190000CD993687EB1F4D61DF0D07BFDB174D705 +:1031A000DB5662467F7F2CFDDDDA964BEF00B15691 +:1031B000AEA78DCC92B8DE7BE57458949534980E0A +:1031C00059466D54BCBB42774A5AE1F7CAF9BDD1A2 +:1031D000C3BCFB2CF4EE04DD6FA8CDE2E7F7B559D4 +:1031E000FC5D70F9CFABF7FF0AE0F49B4CFFA42C19 +:1031F0008C8B63DE62C43777BFAD12D5158B88DF49 +:103200006479FC3EE34E9D4F43F828FBFFF5579051 +:10321000AF6B6BB81AE9FF06D1DFD64CFF14EC6731 +:10322000F13DFECF5E66887763880F2CFE668E06C2 +:10323000E31F2C1DCABD7B5FA5C949BFC74178A943 +:10324000F0F17C986FE7107109CD593C4E3CDFE9F5 +:10325000A37E6665DB947710E7E1F9CA23CB34F4EB +:103260003B008A5EA7FCDE568E9BD1BB8BC6720EDE +:103270008F9C724D605A3C8D43F996727E4F3FAEE3 +:1032800034C4B0DF7C2C073C59EDD2BA917E733C3C +:10329000ECB4BA1EB43F8DE5F905FCDD4A0D33BA36 +:1032A0002D46F47B6A081F723A785AC183CFDB251A +:1032B000A2D3D540A96B4AF83D0992A7A55C9EAE62 +:1032C00076E9DDEAF7A3AE4DAD6844F8817A95E77B +:1032D0002C13EFF8308C7BE1FC47F2F07844B6A970 +:1032E000FF154D4E649E8B8DC1C918571A0BB7C57B +:1032F000627EAB707E802A133D902E187E7ED7674B +:10330000B9A3E22095F9E9575A64A4E781FB6877ED +:1033100068E81C549FE6B208FE4C7163E98CDF97A5 +:10332000DAEBDA4F76931297E334C377DCE0B81C1C +:1033300060B332E2A55EC3AAF0BE8C12A7E334C329 +:1033400017C6BB4BEB23A5E86B4D3BD941F70BBE32 +:103350009E027611EA737B963E5F6C8371939A2C82 +:10336000C5A89FEB4DDE0738DD44DF278A858BDE5D +:1033700054B18BEA893838855F246F6051F7636FE9 +:103380000D4B3C4EA9758A77801FE4E2EF3CB41BDD +:10339000715EC7B284BE610C53FCE0CE89CC867EE0 +:1033A0001A17F3ECD28E88EC6393D847E98824EEA1 +:1033B00097812053F129E577CFE244DCB832EEADB6 +:1033C0008572C830C4F8F8A79EB7523F6E775F0E7B +:1033D000CE6BB8760F9BF8FD2DB6C9E3C67A537352 +:1033E000FC87110EE91BEADD42CEE420DC8EA672DA +:1033F000FFCB51933B03DF9955EE8D0D773F2CD6D4 +:103400000E5829FC884E3D8C477A13BFD7B07218EE +:103410003FE2B0F7A3376AC8FF06F22615EDDF26B4 +:103420009F5E437EC6239FE991EF361D3CAD47A7C3 +:10343000BE5BF8091578670BB874ACAB4C4522BA83 +:1034400028851FF9098EB7D4427EBAC1F7F06D66A0 +:103450008C938ADCC3B79931EE3C721F1ACA611C87 +:10346000E91E7E0FA713FD78E8F7BB87D1FC3B85EB +:10347000DF2F8807E3F0ED64DC9F18A866E29E0565 +:103480002339DB6929080A3B87EEA726977318764C +:103490000EDCBFE0E32A783A902FF043984803F718 +:1034A000A7AD85BE1C0B48D635992FFFDA3CFE6FC1 +:1034B00078DF25D0D87EC9F75D02CFF8F07D1723DD +:1034C0004A6D518EEA89057FB74DFCFE0EF29BCD09 +:1034D000D648B90C7A99B14549077C53F2001E923F +:1034E00092BEF73E8C47BBCFC4A2C653CF4F8EE9E6 +:1034F0005FE7A6F83231DFC3D7637F0F9628E9D4A0 +:10350000FBF03D9BFB74D1FD11AA8BF69850C6F3DE +:1035100075DED8DE362922DF40DEA5658F8FC8B97B +:10352000CDEFD7B48F7323FDCD26A6ABFB660EC9B6 +:10353000039D93DBF7180B9209FF6B72E776F13866 +:10354000666EA71B53DDA4FFE66573395CA2E172CA +:1035500049E7AC08A19EA8639EAE5FE5905C2CC0D5 +:10356000F192B36B5E457D25221765B26FF241BEC5 +:10357000A2FE6BEC10F1EB62BF0D82765187E5F590 +:10358000E6EEC373E30DD9FE926C95DCCFEF70EBE2 +:10359000B1BF6EE51ECBD25C8DA492A3D3B2B93E6F +:1035A0009B5FA0BC4B534BF257B6578D47F9ABD43A +:1035B000CBB5E56970FDB919422E82BC45BD38B75F +:1035C000C34F211EB9B27F1EAE3BB76E891EF5F701 +:1035D00069D95A5A6F696BD084FA2F6BD0307C67E7 +:1035E000729C90573ADB62D2137575460B22EF1E20 +:1035F000DF6326EC3FBFA0AB157FEF93D9647A97CA +:1036000032BF83EB19F2DDF3836A3FCB569B4CBF8D +:10361000035AA6F5AF22B99338D18B7A48A66346F0 +:10362000B507E8305D7BA0F847167C0F62E8F7C36A +:103630009F77737BB345F2056E407A2C660CE95593 +:1036400029CF16EF002DCCE6F7C6DC015B25F2ABE7 +:10365000495FFA082E0BB3656AFF0B391C87FA5FC6 +:103660003EF3AEBA15D7E9B3B889AE197F1FC2B918 +:10367000D64DE7064667F8DE7158EED188381E4E03 +:10368000F7175F4CA1FB2FE7B3FD8DB86F65DAF03C +:103690000337E07AEE95057FE0FC296BB685EE43B3 +:1036A0006E71861F409FE45E1DB7B7DB3CEBBD78B3 +:1036B0001EF10BFCBD2DC453D82617B4B758A42057 +:1036C000DAABA540A7C81F994B22B96CF1F49FC093 +:1036D000FE67B84F78B0FE64E5BE738C5E4148A5C6 +:1036E0009C73315C5F80E13D65C09696EF1223FAD2 +:1036F000C614E6A5B808450FD989D7D5A1E94E8DDE +:1037000091ECF2B8422FDD6FB9A5409A44F373F6FD +:10371000313C6FC96D97880FE716D4D2FD94DBDA80 +:10372000393DDD2AF090C91EFA3DA87BB3E3445C25 +:103730006F0B7D49AEE17ADAF4746E92DB9AA3578F +:10374000BF3BA9BC7F746B3B7F474D2FEEF7E596DF +:103750008A7854762F95EF1474A9D8F391F7A9F8C5 +:10376000B80A9D3589783016239715B9FA69C3E7E9 +:10377000F1C80F6E3DA20DA1DE773979BC0750CD9F +:1037800084F876444B7A73A49FFF8C47FB6BB87E1A +:103790009ECAE6F87A74DE57F4FEE69E23DDF47ED8 +:1037A000E0CE592099493E78E8FDCE6FB5BE67B2AC +:1037B000693D9EED23619C3DDBB5A4FF0EBCBF5768 +:1037C000CCE5D22D79B5F4EE9DA3744C09CECB2572 +:1037D0003323C65FBD2AE012FBFE9E02DF81F7F7AE +:1037E000AA393C1DD55EF1FE5EFF14A4DBFEE9FCA8 +:1037F0003ED270EFF0BD21F0E4FF9977F880CEF172 +:103800001DBE53D976E51D43FE0E9F27FAFE72ECCE +:10381000FB7B5B851EB4870577E1BDFA4081DE86C0 +:1038200070AD2978F592FAD085A4D97FC0FDF9F45E +:1038300093B38F6C64F8DEE4AC79742FB388EB1F1C +:103840002C70C0339BFC74D17A53E49EE908BA3FD4 +:10385000FA998023F99C5287BF5FFAC5A95FDA9075 +:103860006807EE55DAF5CAFB2F748FD47220559C89 +:103870007BB2107FCF839F6B2AEF6633D947FCC59D +:1038800072209FDF47D54AC48F95FB97009E7A6CC4 +:1038900067792985FCB44D9AF0D3A83AFC6F0D8D59 +:1038A0002E5B0080000000001F8B0800000000005D +:1038B000000BE57D0B7C94C5B5F87CFB7DFB4A765F +:1038C000934D08210F487613120209611324803C9E +:1038D000FC4800A3225DC007F8DC4080900741D07F +:1038E000DED862B3185E2AD65063458ABA28205AB9 +:1038F000A08B8D4821D2051469D51AAFDAA2ADDCB0 +:1039000044ACF20824C4AA78AFD5FF3967E6CBEE01 +:10391000B721057BEFFDFFEFFF77E32D73E7F1CDD7 +:103920009C39E7CC9973CE9C99B519992790C79883 +:103930006DB3C19715CBD877F87715E42528B73143 +:10394000C694A063A69DB1738C95623BA6A849B3AB +:103950008687DAAD94D86C2CAF3605B3E3F342DF3B +:1039600069F914335BA2E5E320BFDF08ED311FC521 +:10397000F3CB2CDE7ECE518CED31B10AEA2706CA9C +:10398000A17E9C6C602C81B1AE02C5FF8C84E332B9 +:103990001FE66D0F0FF23F08F971E98CD73F2051F8 +:1039A000BD34D3A262FED302E51933E44FE418829A +:1039B000A67CEC47BAD383F36041C78C30B86D6204 +:1039C000DEF3367CF677961F9AFF3C8FA95DCEEF2B +:1039D0003D7FEDBB7985E5D3580CA495CBA763AAB1 +:1039E0009547A6F3D69A19B330FAFB0EFE97EF84EB +:1039F0007FFA33F6A5759289C98CFDF067334C2C9C +:103A000093B1056C09A515AC9152F8B318921873CF +:103A1000AE55687ECEED92DFE9C262D5621883A909 +:103A2000C380E5552B19DB08F374FA98938D8662F1 +:103A3000C92031A877AE84FC0000FB01C59704EDD6 +:103A4000361F8BF64BD06E4D82D3C400A56B56C289 +:103A50003F5730E65B27F9B378BF491E989F6FA5A3 +:103A600041C57EA63B6582730134C714C0F6133C82 +:103A7000225D69641C9F62BC15CC10C4D420F17413 +:103A80008D4329F5DB7AE343EB6FA571896512D28B +:103A90006D90C1F10C74FAA5499D8DF3F9323E9BEE +:103AA000F9009E95F6256B4B793D7B8621BE82A55C +:103AB000545F60603E89E33319E0CFF8C0BA19F96A +:103AC00060B213E633AA37BEE737EAF30B37E8F301 +:103AD0008BFCFAFC3CE6FD55124CBD6ABBBE7CB2C9 +:103AE000D341FDCF656EA2CF4AA3F35F5D5720DFC0 +:103AF000290CE15F3190E3CD3088A71971936723DA +:103B00007E599C896511BC1CFE8C827809E15D1987 +:103B1000C7F9FF3F0B6F249C8B9DD91CBF717C5D47 +:103B2000AC847521F0A5223CF376989F7D10F03B84 +:103B3000CFEE8CC1799C91BA7264E48387EDCEADEF +:103B4000D40EE69908F374F03ED7389D34EF139203 +:103B50007B5B10BE333CB2F3816CECE721B91046BD +:103B60006625B36CB4DEF69DB6F971BD5500EE92D4 +:103B7000E321EF7EEF08D647CE0FFE9C4A11E211FB +:103B8000FE80647313986A8575C6C2DB65E0BFC0AA +:103B90002739220F7DAE4AF03CEEEC8F397FAE0222 +:103BA000E32F381DE5C6793C6638B1FB75A4C36EBA +:103BB000AB1BE9B07879D73606DFDF92E07D0AE506 +:103BC00049C7BD1F4E959CA1F977BE3284F8E58A9E +:103BD00095E650FFF8CFBAB03C8EBF16263116D20C +:103BE000267D79C5A688EFD8B7E67038196B247C96 +:103BF000FDDCE41DEA00FA6EF41415213C3F373673 +:103C000096E27A7F32C91BC0797C32C573C4C0D7B3 +:103C10005DB607E4D1816FE6652A8047DF318B7B93 +:103C20002B941F50DAA2512ED6A673FC2759982F39 +:103C30002A9E9763BFA6FBF9FA8B5C5FFB9D12B5CA +:103C40007FD3A9DE988EF8FA06A0027CCB885BE8C9 +:103C5000CA627B5195611CD62239B2885F58FB42FB +:103C6000905FB61617C9D5DA24E6467C2DB619DA68 +:103C700047437996CDA0A6221F3B0D7EE4E3C54DB8 +:103C8000CCB710E86531AAC15417B5F38D867CA175 +:103C9000C1497CA7C1B178EF0CE6B5111C33D20144 +:103CA0009EE8048F613EF46FAC3010AE8C8A770EC4 +:103CB000D2C338DB44EBFD0AE0033FC9673FC19F35 +:103CC000D5E42DE3F5169B4C78F218503E3136D0F2 +:103CD000F1697408DFC79CEA9788CFBF624132C0A0 +:103CE0003F40FD10F35F744419A4118CB539395C61 +:103CF00047DF9B15DB06FD7FC13CB10EC0EBD183D6 +:103D000037C5B6E585F29FCADE1F3A603D2C643E9A +:103D100092CB8B989F52D6D48FF86081C2820AE0F2 +:103D20007FC10DEA07523E5F97C18875199EAF6645 +:103D3000AD5C8EC3FA0C86F14FB5123C28015E6B68 +:103D40002C2C188D6940FFDD62D645DFD5EEFDCE07 +:103D50001CD4AD1BCE5703E4A5054B104FAA3A382F +:103D600001E86AE34DD886743E4FC9CD82765C4F38 +:103D7000ABBB5E23FEBACC76A79C8D890699F64F25 +:103D8000DA17D6BE22F9CD503E55B6A916C8D73C93 +:103D90006CA0F50D1D4E1B5584FB14E7A75AE7D404 +:103DA00053B8FF25C07245FEB1EC91FDF7BBA8BD2D +:103DB0003B08F99A57EC6E6C5AE1AC9886FBEB2203 +:103DC000BFF1E3B6B07955B2DD5351D47CC1DE34D6 +:103DD000E13AA9DAAEAFAF09E8F3B54CF9B84DC393 +:103DE000278C53F79749C157C3D663AACB9EF06976 +:103DF0002EC1E6FA0EF12FDF16EBBDC83AD1D2AFD5 +:103E0000EAD5E0AB46C6D22535C3C5E58B09D763F5 +:103E1000A5C254D40B22DBDF3388AFAFC3B6CFFBD0 +:103E200079C3EA8BF36003867C51F1C5D7A5DB2506 +:103E300011DEA35B81CFA19D45F1B1B8B0EFFBFAD4 +:103E40006EACCB40DF1D36F1FA47ECD12AE231C926 +:103E5000C4D65A0A43ED920C6CA505F8B321DD33A4 +:103E60000EE761713A4D08DFB3461F33A05CE9CF1E +:103E7000DC5B61764F1A99CF0AED526503D1355557 +:103E8000B63CD300A025A673F82EC52FD1795D4688 +:103E9000C467AABC9BF810B6671F83FE4C0690AFA0 +:103EA000D82FAC4D2BC0B5C9CA7C080FD43309D26A +:103EB0009DFD793F265CFE85F83D0B4A901EC4317E +:103EC000019F37BB3C335DA388BFF2699D0B381659 +:103ED0000B3EEB8163AF14B4C784F8361AE680FB5F +:103EE000016B34931E43AC42F9643FEE67C7310F58 +:103EF000EBF7DE24CF9D445F85D7CF7B64D033B80A +:103F00000FB0BA7E2437D6D801BF7904B70EAFDA26 +:103F1000BADB2471FC1615B7D27ED7751F63A86F64 +:103F20006AEDD2055DAB059DB5F23F0979BCCBA525 +:103F3000D6E0F81D1F582C0CF4CB2BAEE0EB65B18E +:103F4000C7E697508E821C40B8162F67A4A72DCEC7 +:103F500031507F7F1AE4FD17C4CB9A0F6D3E39169E +:103F6000E5EAE6B519284713BC23513C656239C818 +:103F7000B90707797F8CFD972FF79E3F88626BE624 +:103F8000B07CA47FD17725AB4B39BC0ED4A31250A3 +:103F90000F0FE3BB4D82BFB4F48908F8D313043E7E +:103FA0000332E137DAD9AA4A086733572A8A647597 +:103FB0008E846DAAE2D95627964F2A780DF3016BAD +:103FC0004116E48BFE3CCD817A5E4741BC1BE13D4E +:103FD0009DEE5D8F70A6C96D8B50CED9AF08A6FD42 +:103FE00002FA4BF7D8DCB2B337FF697C3700F8151B +:103FF000F135E0568B1FF955E3879F1B99D792192E +:10400000E2CBFB5DBC3C5DEC27E9CB3D6CBE2D9467 +:10401000B725703A41B901F1F3A673CAFD88DFFBF9 +:104020005D0A7DB73449767E022CE1B2807692D16A +:104030007B3DBA6065D972500E19D87788021FE4AB +:10404000C3F496EE4689ECA3A5A048D51586E0D129 +:10405000BE5F9A64A2FEA32F2884D70C8789E86FDD +:104060005F2BF00CF4473C8FEF6A2D8985F90E6EBB +:104070000A8E47BC5871AC641CA5EDA111509ED0AE +:104080004F19FF20943F555778C892807A7EEB04F1 +:10409000C4AFB3D1516C4536FFBBE2C179D21FD456 +:1040A00097373948EF61CA921CB4638E093AFF69A9 +:1040B000901A447A14BF6FA4F1BF7C98EB714D69DC +:1040C000D5E971F0DD890F802FA5BEE5A78F1DB260 +:1040D000A0BE9FB12EC3C4F2701E12E1970D06065A +:1040E00001789587FFE2E3F0BD370841E976D968AA +:1040F0005CFC0EED88792B9D26449FAB8919106ED0 +:10410000FBBA990641FC6409EAB3D6DE6070423E10 +:10411000AB91F71B39FE29175F5FBFFD462E457D2A +:10412000DA009D0DC27DC719BF59E6F622F14D4D4B +:1041300066C266D4173F167C6E6C9CA45A9DBDF572 +:10414000969AE632D25B22E58F267734BEFB2DF4B9 +:104150008BF3FA2DB3907EADF11FD845846FDFDF6E +:104160000D247FC03CA57D24F3916F92BD448FFB4D +:10417000095E4DCF518CCED54928C356B44DF4417C +:10418000E9BC757186C579D88F7B29F5F3B08D515F +:104190003FEB320EE5E03A59EB609213FB5B988EF1 +:1041A000EB90FDD9CC905F94876D0694E7CA7A15A1 +:1041B0004B991297584CF9C7200FED5F751909EE0E +:1041C0007DC88FA3D05EEF9248BF616A01EE77BBD6 +:1041D0005C5E63467F2E4F715C561745FA9E5DE12B +:1041E0007AB3BDEEC39D2B20FF94B0CF8B1FC99B2C +:1041F00049FCF28022A19EF065DC3BD4EECB514C11 +:10420000427D2E2EC3A0C36B18BFA432A06BC62B59 +:10421000B207D7A362E47CAF3C90B019BF9BD2DF5A +:104220009B9001F04D58192495F580E393474B9DE1 +:10423000BDE9D1D77E909EC1E7C7541FB5AFD5E485 +:10424000488B4472C46D60DE00D733ADB80E9E4B10 +:1042500063D4CF57D6987C94CB75169EFE4B54CC26 +:1042600033987E654DF3A37EE32BE670FA8EDB492F +:10427000FE30B66404E22D210ADA83FC7DF32CE8DB +:104280009BB19887F630CE0801477A29C827900B52 +:104290004B705CC0DBD88C382ADF1FCF5407EE9BF5 +:1042A000566F21E2BDAEAD2009F9677F4C6231EA5D +:1042B0008730C934DC073F167E92483C9AAC93465F +:1042C000E3776F0A3B12C777011CF175251E942F07 +:1042D000A08FD1BAEB9A61F23F037889BF7712952C +:1042E000EF97FC4F2CC079DC6873A3BC6E9AA126B3 +:1042F0004725609A68403EDEF3EDB27FBB0FBF7B7F +:10430000CBE8C6FD429A599A8CF6618AC76440B9D7 +:104310005052C1F923A54526399152CAF112EF65D1 +:104320007E0BE4E5A4594F94C3380CE49905ECC81E +:104330006281FF263BF73734CD07C687763F939CD3 +:104340004F94237F2F1270B8783F4D354E3FF201C6 +:10435000FA7D90BFBBEE629ADF87EA3B6F7308BFBE +:104360004F1B437BA96B2CDFD77AEA6767FB1FA43F +:10437000EF25EE179A63A1F9A3A4E6F529545FDCB3 +:1043800026B5239E3B15B15E07C37A85F24E3FF7F3 +:10439000FF30CB14B52D4C6FEF6482FE77F3763D82 +:1043A000E3550CA3FE3632F75A59C67681A001DBDD +:1043B00095329A1753BA62C2FD469DE83F037A359B +:1043C000C5A9C9E8174B6CB8B8DE979CC1FD198F19 +:1043D000F657EFCE08E3678DFFF7170E28463BA48C +:1043E000AF75F02EE3FBC50B199EFBF0FBC91677EA +:1043F000F963507458F8E9D8346ED730C5EBC579F5 +:10440000BC9F925380F38884439357FBC577B9A927 +:10441000CC82F63DAC611FEEFBC3F60CA37D659D1F +:1044200080175906FD07C3C49E983B60733CEEF3AA +:10443000BDC7F50C9F39BCEFF13664A88FD2BC45DF +:10444000FBBEF61F242BE995A6C05D388FAE1A9BE4 +:104450001BE9FD1E56C177CFDE640ECA4867A36D07 +:104460002DAECF63D1771C4155F4798B7733F63F6E +:10447000FBE66B56635E3AD4CFB914E8D059D656F2 +:1044800084F00EB378B7627DB5C59B9E08533B3B65 +:10449000C83B2416E5A5A79FD8873DC33D17859F38 +:1044A000C35322F1F17799BCBBB09FC3529BDD8D02 +:1044B000F688D246DF315B7FEAE7B858DF078DEA3E +:1044C000F8F300FFC1F5E9050D004F49CC07B7D659 +:1044D000E2BEFDF88002D28B045E0E8B79CD377878 +:1044E0001283B20EDEFD04AFA32C3D19F8F5AC51DA +:1044F000C06B13F02AEE81FF085E9269B80EEE934E +:10450000387F339E7FD91747FC6D36346CA6F5543F +:104510006671E37ADC14054B04F49BB7053C6057E5 +:1045200030D48FA19CF4E7ADCC3D0CD774AA99AFE1 +:1045300093D43592BFC115F29F95334F1AAA90C7F5 +:1045400032BCEFA21CFBB7E86F47E1D6EC29B1D330 +:10455000B86D1F44F1FD7B3C87FF52F4070E34A079 +:104560009F63A6F05BCD3C6B223B69BED09B66622D +:104570000AF0CD62AA11C7BF91798DB8FFDDCC7C5E +:1045800094CE617E4A6F6541AABF9DB551FE9DE8FC +:10459000FC417580FF198F0FC9427F5518BE4F210E +:1045A000DCC01F772670FEF86C00F90BFA5F16BFAF +:1045B000CE10FC01EBF33CF603EB73704146D83AA6 +:1045C00099DC5FD0ADAD2116F03723D155F02064D2 +:1045D000AFFA86D365EA270EC2CF4109245161881C +:1045E0003F4050D892010F570B12B676F3FDE96A9F +:1045F000B58AFCD547D515090900E714D946746971 +:1046000075CB64E76F3B0FFB1DB47B7D05A7D7EB34 +:104610006325DAE7AE4D5A3F195D894CB6D97D3036 +:10462000EE17AACC70DCE91BB8DD5F3AD018B2C730 +:10463000E17FD70ED6E7A7A972BB99F6B38082FCBB +:10464000372D4F6FCF4F67EBCEA39F7DFA25ECFA46 +:10465000C44C61D70F63C3C8CF76F976FDA04CAECA +:104660006FE9EC7A86DE4790533FB07279DA3AFE12 +:10467000F0B84E98F7E72D2EC2E673395CAFF464BC +:104680007AB2328114E78C6D0B90EE1FD7038687C8 +:1046900030F649BD85A9C0DB9FD63B287FB23E8955 +:1046A000D2D3F54E4A3BEA73A8FE5CBD9BF2CB32F7 +:1046B000D5E108C71A2BA78736FE32CDCF6AE57A37 +:1046C000C332EB3DC7CA008E6583B89FAC22D03899 +:1046D00015DD5D957B0347308572196C18B66C3D0E +:1046E000584600F7FC57BDAB519D59F866DB741472 +:1046F0002BA3DEFF2411F1527341625E583A494305 +:10470000D4F138EE67F563089E53F52AC173A6BE4F +:1047100094D29F667A2661BDDAD2BE3A09FABB7E90 +:1047200047BB920AE9145522BD79A2CAFC7EA0C7F4 +:104730000623DF2736245BDCB88E270D9FF9E4DDE6 +:104740000CE5B4F73AFCFEC6F87953FA41F9F431B6 +:10475000650AB6BB19F814F31A1F5F7AFD727CD490 +:1047600008DE387B40223C9D3D10477879B75926BA +:1047700078BA8F4591FED0DDBCBF8AF21D516E30F4 +:10478000CA7AB59FF552E600B423CE00BD18CC7BA3 +:10479000E94BB903D03E79798714403BBA68575C3E +:1047A0001AF2EF99F8C0F11FD1398389FCC7C0A76D +:1047B0009F6E44B93730C98DEBED9C90CFA0C145B9 +:1047C000E33EBED8A4E98FDE5CCC9F89E2FB378E46 +:1047D000E3047CAE1170EC4F4BA1FD3947520C68DD +:1047E00007EE7FF17695EB757CBC3D1B79FFDB76A0 +:1047F0003ED1BD8FC6F513BF3DBFEBC98C1F43EE45 +:10480000F9DD0F44DDCA68DF6563406EED5F1FAD03 +:1048100022BCFB8DEEE37528A79FB4913FE7B99FBB +:10482000DEFBF15E4C1FAE29BC17D2D599F1D44FF7 +:10483000F9CFE64C4D8676DBF6B0025C2EB94083AC +:104840005480236FC3F943C9305EBE3FAE2405CA0E +:10485000DDDB0B0EA740FE972F4B41F4C317063646 +:104860003F2321EB7DF36C0AEA9FEB329D3A3D3EFC +:104870007750E95199E6A1DFE7F39ACE17637F3BC2 +:1048800053024BE3503E4A81D32B802E6B06FDB181 +:1048900090EC29E14779A965D6BB7C5EBE64D44F14 +:1048A0007D6526F277E3F48D903FDB9C49FAC41EC8 +:1048B000838FF61BDF5C8B1BED9FB31EDF13C85786 +:1048C00035D01EF5D49A025FCC9568D77D34D80DCB +:1048D0001CC4063D757529E26771F3635353A0DD6F +:1048E000D9F1DC8F5DF1D2E753C9AE06EB13ED9938 +:1048F000B3CD0D89B7C0770FE5158FC27DD52307DE +:10490000681C56CBC7795CEC63AC2D9FCE418835D3 +:10491000A1DD43508CE5F12D71075359885EB52D0B +:104920002B5CA8875EE1B5B8D14FBDC1E54B46BF52 +:1049300098B62FC2FEB60BD747B249F4EB98457A2A +:10494000FDE5EE6B9ABF4CEBEF7113F7DF697EB5B7 +:104950004D26BE0F6F0539827CA6EDC330EE81CCAB +:10496000FE617E3910DA050067EAE3666EBF5CE639 +:10497000F89ADE542BEC9C62B19FCEEED7F04A1B26 +:10498000CCF71D8BF7F738BFF94CE5FE6EC5ED444B +:1049900039BBD7A2BE9149FA53571ACE01F6CBB70D +:1049A000119EC532E8539961FA94E5F2F6CB1316DD +:1049B000F57DFCFE72DB47CAD7655F185801CAD582 +:1049C000C7CC7E94170DC2DE6B10F65D83BDC88226 +:1049D000F281BD6AA83E02FBE704DE434FBFCBEC89 +:1049E00085243F1A18BB28DE0EC0FAF7829C09C244 +:1049F000BEE01D828D5A1BD07FA3C2FFD9817F26C6 +:104A00005E0003306CDF8BFC1EE8F537C4D724163C +:104A1000AD6BA7B238F2E3325BFC3F35EFF1826E4B +:104A20001AFCE3857D3ABEFB5834CAC7655F149211 +:104A30009CEC6B5EAF8879FD16E705A93FC7631E46 +:104A40000CE34CF89B43C1753D519199376C9F869F +:104A500079D8B15EFD264A378F1EBEBFCC79DC23E4 +:104A6000311FFAADD97913F9515A849FA065511EAF +:104A7000F95BF6A07D8B76D64C13E9AB2DF6256459 +:104A8000B7B6BCD59FE4C17ECD0F5326F37AABF801 +:104A9000BEBF83ECCB1433AF67B7F6F44FFB4BCB01 +:104AA0009C14EA7FBF14CCFD15F63FC3D2879D2C22 +:104AB000933DD9B5C24CF66553C192378663FD8AE2 +:104AC0005C1A5FB3835364FFDA0C943FF532EFC78F +:104AD0007EE8563C7F6B3A6F426722D8BDDC0E04FD +:104AE0007B979FA72B3E3BC6278C4B673D79B493A2 +:104AF00042F10B500F78FC40D0EB98C2EDC96368CF +:104B0000B78E08F9F78FF5C469F0EFBDD3A315E4AC +:104B1000F7C8F21EFE13E59A5DFAA191EBA14D7163 +:104B20008DFDF17CCC33D87BF560E0CF39F3B75AFB +:104B3000BD61FE936F65CF35587EA27CEBF3E82F05 +:104B400065E5DC5EFB50E0D3F735B797C79BDAAE7F +:104B5000BB09F030FEDF0D92CFD99BDE3D711EF711 +:104B600019B8BDAE003DA1FDD36FF6A37DB227CE2F +:104B7000C36E12F5C01F581F18CAFD01B2A4A23D92 +:104B8000DAF59299FC05A5788E85FAC172C366F4B0 +:104B90005304EB3D4F4CCE82F6C21FE86BB113DDE0 +:104BA0009F1678BB53C8B5A7C539B12F6014767E60 +:104BB00030B516C76919EA467F6B9009BEDA1B2D1E +:104BC000EA9DB1986FF8DD48867652A726572411E2 +:104BD000DF22E25F9E16F8FD1EF130F7E03AEA337D +:104BE0001EA6074FB00F40FEE9BA7EDCEF0178E267 +:104BF0007E137B4F3DCEE7E96A97C0D3E607B2F15B +:104C0000FB578C42DFE97A6B347EBF97E359F36739 +:104C1000019EB237201EF6DA49CFD0F0A4F9B76072 +:104C20003EF97B110FCD66AAEF89BBB9CFF00CDA44 +:104C3000135E13F7771D77B4D9C3CFB98E7B3EB51A +:104C4000A3BCF94B9D1C34FD83B899DB443CCE6D6D +:104C5000220EE7B6E51FDF8672FAB68A6FEEA0F283 +:104C60006A7D5CC14B83D527900F7BF073CAA0F996 +:104C70008D787CC2C9815ABC105FB7A7A2047EB8E8 +:104C8000BF665FB38BF399E6377AC2CABF67FE6827 +:104C90005C8F15A07C27C3FEBA4FE174DCE7D7C751 +:104CA00049AD4AF0FE12C7DF27FC3B4CF1737D5142 +:104CB00081FD13F05699E50D60BDA657687EC90EBB +:104CC00063EB11038EB3FCF2F6B5AAA896C512AC3D +:104CD000B3D32D5BF7600A78267AB317B99CEB70D3 +:104CE000046310DF555034311ECF5761CDC5F33CFE +:104CF000EA9191F122F8A724F27ADCBFAB02B26A02 +:104D00008DC1BC29D40EE969E07CC47671FF4025D1 +:104D10000B24AE90C99EB28C01BC9CDBFBEB1894BB +:104D20000B95369B6539EA3911F11B95CD6B5A33DA +:104D3000F37B97F78627421EEC96051D833128F7F3 +:104D4000427231487EB5B0B8AE18A493D172DD136B +:104D5000E8E7EC1074EA88A053470F7D823ABF5C05 +:104D600047E0441AEEB3E734FBDBCDCF15AB7EC58D +:104D7000CF0957097958D52F5084F84D91F5E76838 +:104D80005A5A6561CAF8B0F3C3AA1C6641FC6BFEAF +:104D9000B32A0F53AE8C0FABF7330BE6F718609DB9 +:104DA000DB885E8AA01BF503ED896E95166699086F +:104DB000F94AEC0F53833F0DE9A5C1D50B8E08BC12 +:104DC000FE7D30F7CFAD12FBA8CF6E12F2CB9D84E3 +:104DD000781BB2C1A46B7FCE6EBA53057886FAF504 +:104DE000E55AFFD62C6E1FE784D3D3D5375E6245D4 +:104DF000FB175EE8692FF3781950AF35FE73727BAD +:104E0000C788F07D60D2FC5077A7823E56853C90E3 +:104E100011C2D39E026F6A3CA4E70C5C3EEE89830C +:104E20007C1EEA977C7C2DDF83F7087EBEFF83051E +:104E3000A9180F323E8BE325521F5C612F1A80F5B3 +:104E40002D62BCD3F5C1473F3186E6F369BDAA9612 +:104E50006785F20B361458907F166E2AB0CC0DF38E +:104E60004B346C3F1C83781C6633901FE4F4F6913E +:104E7000140776DA6660D112D68FB4607D87EDD0E4 +:104E80001F9C50BE60535C21DA25DAF70B374C517A +:104E9000CBC3F09FBB5D4F8FE1017D7EC45E7D7E05 +:104EA0002A06F98CFAFEDF1504F5F99147F579D653 +:104EB000A58F2B7A798C67D6F5788EB349766351B6 +:104EC00085CDE033C37A576C7C1DB31D329D2755C9 +:104ED0003878FCD0C93D6B8A50BFAEFAA8FC08DA1E +:104EE000530BDFE3F8898C77AB3876E46BB4A3819E +:104EF000EE12C5476D9368BF898C83D3FC3BBDE53B +:104F0000C90ACD2F9D13CE6791FC7046C4FB54D7C0 +:104F1000BDF128CA0F0DFF6303EB4DB85F2D9AA6B4 +:104F20009F7F95A2B0E51795A73EAE87DB5427E299 +:104F3000A76C0CAF6B6FB8F95AE4ABF69B4B4FA163 +:104F40001FE0CABA1276622454AC7B672AE2A7EC4F +:104F50002189A19C29FBF5905729AE54D8530BC544 +:104F6000B995638C736F1BB49BEFE77E9FB911F10A +:104F70006BE5EB22E088885B5BB8F7E0D7386E64BE +:104F8000FC9A16E754B9E53BB33EAE8DDBEB57B662 +:104F90006C9671FEF305BC9A7EC07C1319CEEF4A65 +:104FA000FE09FB04FF198BF157DE7559A3427AC243 +:104FB000954DFCFB1AC6E3ABB4B8A70566D0DF413C +:104FC0008E1DB59B883F3EDF104B7EC8CFB11FCCF6 +:104FD0006F92484FAFE9C7F335CF727F648DD89F8A +:104FE0006B9EE3FEE405A0DFC41672BE51C3E0AFC2 +:104FF00016F3423E092F678DDCEED5E2B0303E4B12 +:105000000D3BBFAF86791D8BE77159E1DF85C76521 +:10501000859787F9BDC90ED7FC024F1BFDCF6F03E3 +:1050200038E59F44B951DF050D3A0AF913E411B789 +:105030005B6670F976A9F3B7A6023EFFA6455964F0 +:1050400097A4A0CCC47DF8512B7D5F0EEAB415CF98 +:10505000092AA3081F4661777C884326A33BDA40D0 +:10506000FA4FD31C13F9CD9A5C5CDF697ACC457694 +:105070004ACF39DB7AB3EE9CED969EF86A35DB4277 +:10508000F55677B83E794B7FA7A6778BFDD7DF1F04 +:10509000F711CDFEB845C455DF22E2A935FCDCD2BC +:1050A000134FEDEF1FBEFF5EAA5CB34B9E4CF21E8A +:1050B00043FED2EA9BE2FC568C87641597774EB488 +:1050C00055C00FF321FDEF1389C7619647791EBCC8 +:1050D0000AF1F8F38C0CC4E349B15F1515ABD98E16 +:1050E000B0F96BF466AA9A8DF6E927EBAD858807CF +:1050F0002D7EEB7801DF6FA2AFE07126E7B19FFE56 +:10510000981A746952148F8FFA640A3F6FB05FE186 +:1051100031A1FE043622C521959B3CBF9F10060F8E +:105120008C6B41FCFD87E84FC327D05F453DA5FC54 +:105130006766A23F53BC9998BFED588E1BE1FA44B5 +:10514000EC7F1A3F30C6EDE45BDEEE5FF820F1E560 +:105150000AED7CEF127C29737D6C9191F804F89232 +:10516000ECA4A639D9C497713DF6AEE0CF47ECBCAC +:105170009F29C5C9E877C0B3A07FC7F6537ACE7719 +:10518000851E077CA3D3EB38FD23F9AA871F22F8DD +:10519000EA72F9E732F82A33BB7FDF7C05DF8FF252 +:1051A000D8FBE6AB9A9777EEF1E1F9C2AF1E8B61BF +:1051B000D0EE94D298E846BB6DEBAA1815D2938A2C +:1051C0002F06FB3BE5974B2F16C732375B12FE1BB2 +:1051D000D526859DF39E7EE1A1E91457B1D5E8401F +:1051E000D157BBDD1C34939F7311C55342BE9DE75D +:1051F000D7D0394AEDDE88F8CAE71E4B7452DCACD2 +:105200002F15E36D404FA6F88BC55B8C149FB9F842 +:105210003DD98D6C50CBBA56237C91DF231C17806F +:105220004F6B03729929B6773D7004EDBBB5CD0F76 +:105230009D47BF706DF3359FE1FE1519A75921CE2B +:10524000BB22CF7566648B739DD16C34EA83801F5B +:105250007710F910E0CAE2E427BE6D78FEB95DFB75 +:1052600000DE531F0E2840D74DC7963762A4BCD02E +:10527000398F76FED511C88CF55E04BF5A7A4E9CE4 +:105280000784E8C7E5B5732F003880615C34A5D585 +:10529000C660CC3818AF7AB391E464F5CE67B76DC9 +:1052A00044BEFEC0ECC6B8B6AA9DAFFDF14AB40F2D +:1052B000761B13A6F1E9D8A4C410DD6A9DDC1FABF0 +:1052C000D1A9F2D7AF999CC37939EA0D1ABDAA7654 +:1052D0001F34B1E1BDF15A1238686AB35D846E8142 +:1052E000F6A9E4877CFE2B13AEC753072436C0D53E +:1052F000FBFB8AAD6FC4603B8D6E3D74EC45BFE037 +:10530000F47D57503B07CA834BD1B1209B11BE6A35 +:105310005EB6338C0FABF8D0EC9F86F4FDE932E239 +:10532000FBCF94259CEF9F5C95887A6D85D197E89B +:10533000A09497573C758FE0473599DF63F125E3DB +:10534000BCE66FBA91E6B58079890F2B9EE4F141F6 +:105350005F801DB7FB22F4FC40AC97CF9E0162C278 +:10536000FC3E13F1C7BE7F95FDFC1EC35DA49FDC10 +:1053700023E64A117990FF42E8ABBBB20D9ABFD445 +:10538000126E8FD76E59D38A74393D481D807E2F97 +:1053900098BF4FE04BC2783FF99D2903385DF83D37 +:1053A00006FA0EF486122CC7F6AD46BACF10F61DDB +:1053B000E14D1BFF6E313EC01D857E81CF12B9FDD0 +:1053C000027FAD08C762897FB37879C53427E0DFF3 +:1053D0003284EF433DEB7ECB037C9D8B75FFB7F7AB +:1053E000B83C59EC9F514AF2A0D5181C80EDFC073F +:1053F0006F90481E44C6970B3ED86214EB595F0F5E +:10540000702952383E0F707BBF569CD32E680A8B92 +:1054100067477C2D2F157C620A95BB42EB513BA759 +:105420005D28D67F241D23E5C1BB11F240FB9E6D94 +:10543000BAF8396268FDFB889ED5A07F3870DD7EA2 +:1054400060A67DA97ABD4C719027D61D4E1C0B7CA1 +:105450007E26A0AD57BD9CED59AFCB799C7AC58B0C +:105460005B25E4D3C8F57AA6C22F5D74BD42F94529 +:10547000D76B05FBAF95B3820E21BCEBD7E7C23EDD +:10548000E4ECB71178FD82E5C58EC34A47593AF975 +:10549000E523F0ABE135525E3E9EEDE4F7C122E438 +:1054A00025C3909B307C6A78D4F895312F8DD3C377 +:1054B000C71ABF6AFB570FBF46CE5B8FCFC8FA83B0 +:1054C000421E797EC3E357AB5B24714FC17704EF73 +:1054D000ADD4E2F90BB56E3C929A109EF747E40307 +:1054E00011EDD588BC27A2BD3722BF44D7BE7AEFC5 +:1054F00061138F630DEADA99EBAE233BAAB71EE185 +:10550000E7EBBCF9BCC987FC31B08BE2698DF7339E +:105510009F9DFCB5DC0FD6E9EC8A417D659595EB46 +:10552000899D0E918FE3F9AEFEA6D5280FB5F22E18 +:105530002BF72B777ABA62E2C2FC12ED2D720CDEE9 +:105540005768F3737F586F781A88CE6DC25F3645FF +:10555000B6A5D55D81F1CD9974EFAB7BA551E4B3D0 +:105560000A91DE9A1ED919C5FD289D51DC8FF2578C +:10557000E6F9E338A4874F55302E651E271DABF89A +:105580005D430CDAFFF35A785C4AF93A3D5D17D86F +:10559000B6D03DC52FD8724A1734E9E34A2AC53A36 +:1055A000A8D81451DE721DAD8BCA8875E115FEFDB9 +:1055B000C875513604D605065614B002E18FA2F321 +:1055C000B3A5424E4F91F37E301BF0DF79546666EF +:1055D000C877B7C86C35CE7B8744E78878B102D7E7 +:1055E0009B661F6AF8EBC07533A46F3DA4E3A58FDB +:1055F0008AF09CBF7ACF9FF37F0169C79E0FB2F7F5 +:1056000063FEE53FA5FD99F56E5F72E0EB3B501E32 +:10561000771E3033E4EFCE03AFA7FD18F3FBCCE4E5 +:105620000FE8BCDFCCCF2D0ED8C9CFD23988EBFD27 +:105630000DAF7C95DF46FBCB4AA2CFBA21FCFE65BD +:1056400077CB7F1CC77383EE169815CAF703D1B4C6 +:105650007E6AF759C94EEC7CE5ABA2F0F89AFFECF4 +:105660007CB4B8894E3B9BFD22F26D1CF7CBD7EE84 +:105670001FFB2CC609D4341F34CD83FA92DFFE3DC4 +:105680001FE568E78B5C2F3A676C7B0A7DB18F0F53 +:10569000F9CDA3C6B1E89784CE521873E77C3DCB11 +:1056A000977731BC703C74021E705E80970A94FF3D +:1056B0007DE163D7FF587C9CBF83CBB3D10CE30A59 +:1056C000427891545E6EA7785B983F2F3FF0553E2D +:1056D000CA9B4BCDF74D9CEFA8FF3DF33DFD3F9698 +:1056E000BE9CDF970E71F278D108BEEFCDD72FFFA9 +:1056F00090F2BBEC6E82F732D77B54CEFF2E7AE766 +:10570000FC8F9DEFA5E8FD3B416FBB03FDA09DAF66 +:10571000FC3D8D7D8F795FFDFFE9BC35BDBD5876C1 +:105720001F2D80F66FB0C07B6E17691FA477348879 +:10573000F383D7935CCFF07BC0DC4E2A1176D2D2B4 +:105740001C6E073630039DF79558AA48EF2C19F8C0 +:10575000F0791EA76620785EB74CD8F6207DAFB7EB +:105760000B270F9483784E7178058C0FED0EDB0DAF +:105770008E065EDE8EE553DD5CEF9F3AF03A8A7767 +:105780002DB1BC351BFDC6936D7ABBE9BA08FBE7AA +:105790001AA7BEBE94BD98807EB9D23C23030B826B +:1057A0004DC5F661F6E1CC1CFEBEC035AC71A5C39B +:1057B000F64FE185EC5845E0E5E908BCF4C683C046 +:1057C00023E37A4E24DE14DB83AD9432B063F9BC5C +:1057D000C8FED5EC580D7F917863C22E5668C8106C +:1057E0007E9581FC5C39AC3F9A770F3E05BEBF2F9A +:1057F0005E23E973293CDFD3079E072A050AAEA77B +:1058000009423F9FACC4F1FCC056D943F8F3D377AB +:10581000257F732BA89F4FB2C5291497E51C1487C9 +:105820007615AA8EDFA53296AA309F19CF011C6D7E +:10583000AFE2BA2B7BD4EC447C0F54C47D5885FB7B +:10584000C761B5FAA20AA9BD6A8AC7760B19DEDC60 +:105850002A4B656E89B767B1F114B6C8648CDF83D3 +:1058600014BF2BC3BB29D8EE2185EE59D31FE07B93 +:1058700030A619D4AF6A88E7DFC714D2F73E03FF1A +:105880005EC5FBEB46E6489300D8F412C70F8FA124 +:105890005DB1CA4AE70CD38AB9FDA0AD7BEB507E5F +:1058A0002EAAA54F0EE5EB5736B89350CF9DBE728A +:1058B00028D9277294A7E6253CDFDB154DE77265F2 +:1058C000AB6FBF7E14C2B7AB9F1BD9E5F4F4DD14F8 +:1058D0002F3F77E59C7BDE8772EF762B951F1AEAC8 +:1058E0007D2707F767C979C74B5030F7C6C3268CA9 +:1058F0003F9E1ED87D0EFD7CD36F88A6F8CDE92C87 +:10590000F0078CF36437F0F8A9F65D7613E2E2FA5B +:10591000C07905EDADEBC74B28D658BBD5917617AE +:10592000C05326CE7F3F12FC2F4731EF8B36846B5E +:10593000507606945F8FF7F12E62EFC40C15ED8B55 +:10594000A54D78BE952EEEE568EDB11FEC3741E030 +:10595000E3640EF71F69F9F412DEBE7CADB93D13A6 +:10596000ED99B5C6E0104897E71677E03CA765B01B +:10597000A9184FD375AF4CEF99B45BD911F2A7AF0B +:105980007739D1AEF33211C7B1CE45FEABF6496ED1 +:1059900013BE6FD2BEDEE5C0FB20E5364EF7728F38 +:1059A00085E8DE3E2910C4F387AE2724A2DF710705 +:1059B000AF3F6ECB21BF47BA7C70309D5B14F07354 +:1059C0008BEB8779D95080A3ACB1EC4D5CE7EC1B35 +:1059D000987711C6E932625E3906D609F2B3E28ED3 +:1059E000C1FDE65BD963C4F6CCE2FE29C6076DFCB7 +:1059F000A9CCD03F982EF3B8D372C10FD3300E1577 +:105A0000F8EC2963DB22ECE7D51C27E1635ABCA341 +:105A1000C8C6F98BE1F8ED464736CEAF7D95D58007 +:105A2000E778D3EEE7FC06FC6F51E0FB0714168520 +:105A3000E7F9ED39BCDFDB56289ECD901F68618AFF +:105A40003D1EE95D40F6F4BE5CEFC91CA83F791F1E +:105A5000BB12EDCC79EBD6D3B989462FA6B44EEE66 +:105A600007E39CDCEA2AC4781E8DBEFB728B070D0F +:105A70000DA7D30D12D107E66341F897E7CECDC449 +:105A80007A283F88F49B561C1CBC340FEDBF6AA6D5 +:105A9000E27E9AC4DCB82F77338EE7EEB50AE1597F +:105AA0005BEFDABAD6D633C04DEB575B8F91EB780C +:105AB0005B3DBFFBB8BDDE42E90BF50EA66431B617 +:105AC000A33E89F2BBEA9D9406EA73A8FCC57A3727 +:105AD000E59BEBC7507E4FBD4AF9BDF5A594EEABF3 +:105AE000F750F91D803E8C1381F149DE687206E1A2 +:105AF000331486E480463FE3DA490694D31AFDC0A6 +:105B0000DEA57731BA9993DEC5E84B2FF8EF821FF7 +:105B1000E4982FB6308457CC5BC3E424E6EDF1A1C2 +:105B2000F961C8E1F8F83039A7F0F707501E2616DA +:105B300086E68F2EC20B8521BAE0771323E8867C98 +:105B4000A8E105BE0F261686E3A5E3E1D148F70AD2 +:105B5000839BFC1FAC6DE7CB94B7D1F96E9A89EDAE +:105B6000A5F7467E6263E83F453969C6FB441512D6 +:105B700053C2FC0DB72FB132256CFFBAB32E4E972E +:105B80004FF8C9B1D7D09D7657A2F79EA100C7F1B3 +:105B90007BCFFEF539E8FFE9FB3E1DEE257EECD814 +:105BA000FA388EBB3CCA4DFE08681B7F05F963E8D6 +:105BB0005C0DFFF0DEE55CB1AFCFF545B7A35FED5F +:105BC0002993E38FCFA13F77B5EC40393A7725DFB2 +:105BD000973F443A02DEFF22E8982EFC37ACF17181 +:105BE0008A532BD3FCE76BA7A83DFE19405EE3D098 +:105BF0000C7ECF5EF8798EFF28F5A71857F8F42AA7 +:105C0000D921C27A544B516F38B47123FBFB3899B8 +:105C100091FF04B47F5607F4F8F83E5310EF227F4B +:105C20002C59E83D04C999C06E8372EFDAD78F61B1 +:105C30003F52DD518A67F05A6C74BF8FF98C1DE1B9 +:105C4000FD497547A81D6B1B1887FE1DDA9FAFC263 +:105C50007359D584F7C9513620FFCCCD3944EF486C +:105C6000B146C981E73AE5A2BC5CBBC7AEB8936E4A +:105C7000003DF5B9A132C9B5D77314FE1ECF502629 +:105C8000CE0F1A69FFD5FC5AE5EB247A67A0BCB1A8 +:105C9000C0B4206C9F992BCAE7E1BB0E61E52F0FC2 +:105CA000E5EF6CA5AC2D988DEB3045BCFB90925385 +:105CB00048EF47A5D8A62AA80F68ED770F55041C12 +:105CC0007CFC246412C83F98C3F5C1B9B69BB6707A +:105CD0007DD069427FAB36DEDC9CC2D518873C772D +:105CE0001DBEC6007AA191BFA3D6602FDD4AF1CEBA +:105CF00011FD568B7D0FE667C273D39318C94EE72B +:105D0000C7DCCF57B9EB97741E57F96733EDE795AA +:105D100023F8BECBF2FC45B3F8F98ECEBF3EF9971F +:105D20001FC5D0F948B34CFE5F48B9DF57F313BB2A +:105D300079BC62A47FF7D55D7F8EB9A85FBD999FBE +:105D4000135ECAAFAEDD73ABFD0DF70B6B78AC9590 +:105D50002ED0B954ED2BAB122F768F0CCF75900F40 +:105D600023FDEB97EB878FF4339E1B2AFC8C11E706 +:105D70001A7DC957CDFFAEE52BEAF2333F1989F7FB +:105D8000D9BC5F23C92BEB8A32314E6971DD444A9D +:105D900023EFB755D4E552FBCABA91543F69283F67 +:105DA0004702059CEE496AFECD6E7F562CFB0770BC +:105DB000D46E0060E1FB6EC5198BE777DAFDE5CEA6 +:105DC0001D32D9139D3B863F83EB7351CBA3260332 +:105DD000FAEF86713DEA6CC4B9C1E21D27E87CAFD9 +:105DE00086B5129D807ECC127E8E84F187FDFA8668 +:105DF000AFEA97F625C8C78B0292BA15F7274B80F2 +:105E0000FC21DD3B6E37FAC2E89A3E4CD1DD57D219 +:105E1000E04F18E6A4F96BE5082FC253650E9CFB12 +:105E20001057C4AFA2E9FD12A0EF1FF0DCF7CCA61B +:105E30009114EFBD28B07B318F5F8B76A09FE57406 +:105E400044BC65EE30BE6E7287713DF08C38373BD6 +:105E5000B34B26798CF0E27A3E2DE9EFF117083842 +:105E60000B04BE8E0879A2B55F14584FFAE1B9E66B +:105E7000EBB270FD77EE7D376630948F13DF7536A9 +:105E800047D3FB7A9DCDBF98BA1FF8FB6C605202D6 +:105E9000AE43ADFFD261FCBD87B32DFC7C90F97998 +:105EA000DC530DE27964389CFDE8DD05ED3B2DEE19 +:105EB000EB4CF3AF630C79213AD65A7C6BF1893DF8 +:105EC000EDBD0C8BD1EB43FF8271EFA420EA34B41B +:105ED000CEA1FFB5393E0FCA71AD9DC9A2D266AB46 +:105EE000BD07C6B47B7EE27E0AEC67F65500C7D2DA +:105EF000E151E45FBF6384F3E65B511EBF61247A26 +:105F00002C1DCA82E8CFF8BCCEBE19E9BCD4E5A6E8 +:105F100073D93B460A7993D4360AE343AAD74A4C4D +:105F2000C578BAEDD3F8FD172103DA5DEEB7D7A037 +:105F30001EFA16D7BBABFD32F38E2439928DF71FB4 +:105F4000D8986036C69FA4009FA880A25A41C7E394 +:105F5000261EF7599DC1E3F1D345BC4A753C8FDF3E +:105F6000EFD0E2FB6706B3314EA6FAC5648A93E927 +:105F7000D0E2F5A11CE1AC2EE471FB1A7EAB2B0F35 +:105F800065233F57CF753BB1BEDDE53847F1482F5C +:105F9000D9E93D21C3CB7611DF66A5387A147CA8F8 +:105FA000E7276C4BA67B710DC3B8DDB131F40EA7AA +:105FB0000BDFE1DCB8DC1683FB768278DF6291A927 +:105FC00091E0D4DA69796D5E98C77975087E5E14C0 +:105FD00025F202FE45318D0477BB91F17B15CFF39D +:105FE0007B2EA7935BF750FCEAF343E91DC6769737 +:105FF0007FC15EAAB7D23B888B7C12C9F5CA17CC89 +:10600000419CD7A9E7B91FBEB2BE8EDEC9AC84657C +:106010008FF7D9202DC57B69A78C8D6938EEA9FE35 +:1060200090DA50FF01FD6904DEDFD89046EB7B8BF0 +:106030005942B95D09AC85FA5F376BBC63232F47C2 +:10604000CB9D556E31D3FD002F94E3BD4A067A11E6 +:10605000F28D866FA8D7C53BB6BBF4EF2D3C3B8CC9 +:10606000CBC56705DD9F1BE6E0F13CD1819F67D082 +:10607000FCF83A01FA88FB00819C5F2460FC47969B +:1060800084F2A132606D47FDA3728791DE19D5F8C5 +:10609000641108323C4F5EC4B89E29FD647B369E75 +:1060A0004B27BC602D34933DC4E1A8FCD18F395EF1 +:1060B0005EB68BFBA1F446113BB52D95E2CEA761F0 +:1060C000AC19F1C770C2FF1479533EAD872DD106CC +:1060D000ECA772CD6803C597C8DC0E83549528FEE3 +:1060E000DE4272B45AC8D19A35E362C7E1BA7A5B2C +:1060F00066A8E754CEAA7813C7FD5C81F57411F940 +:106100001F89B76E2177AA619DE0BDE21A717FAA4F +:106110006A1B7F5FB26A35F733B217F87BA2CBAC4C +:10612000C1181C6FD956D98D74AA3205B2FBC33879 +:106130001F097909EDBDF45E96E86F9935B000FB53 +:106140005BB6D34AF2FCA36109345E47E0D144D484 +:106150007B7BB7E77087DA3D1B131EF7A3B5EB997E +:106160004F80FB973E67AD3FFC337CF2B71D5682F4 +:106170000BE849F7D222E77BC608F000FC67765AA5 +:10618000E97DC2CF400EFAF0DE749CFA08C545BC2A +:1061900023D3BB3C0817EE470BFDFAEF6BFAB9634C +:1061A00031CEB2E6ED1205BFFF58C863A0C30F0899 +:1061B0004F6F1BE93E6A24DE5F13ED7AD6DDCE68B1 +:1061C000E2BB33299C0FCEEC1A42FB4A7B9CB8778A +:1061D0006C0CA4615CF4999D430AF8BB3449A48F0C +:1061E000563A38DDCFC405D21C61F51ADFE145A669 +:1061F00024E40FFC2613F504AE975559D651FC0B39 +:10620000C6491715521A345F24CE19F892ECF7D10B +:10621000B942AFC0F112459C3EC9AD8009E5B25705 +:10622000E891D53B22E3A479FD805C498BC37126BC +:1062300068F1D91817EE93288EA66AE55D8B904F0A +:10624000AB96ACBF15F95C83BF4A61A5280FDA2570 +:1062500099E068B7B23B67A23C0C1F2783A78EC4A6 +:10626000D03C5D62BCAC5C27C15D8D3B1EF453BD70 +:10627000525A47FDBB343F029F8FF61DA0C184FBDD +:1062800044FB2451DFC77C35F822E7ABD1776C2E75 +:1062900097DFED2EE723E3F9BE44FE9BEE6F46C683 +:1062A000C6FF037B1B2DD99E386558EB53319603EF +:1062B000FA89CEE5FECC2A800FE1CCDEA48F53CF45 +:1062C000D9A2CF0FDBA1CFE735EBF3F92DFABCFB59 +:1062D000D5887A1C7714B7FFF1BE3BDAFF98A2FD90 +:1062E000EF3473FB1FF368FF638AF63F96A3FD8FBD +:1062F00079B4FF318FF63FE6357CA31F00F3E80742 +:10630000C0FA1FE57279BC0FDF7B95691FA373F696 +:1063100071B281AF8B39265DBCF2BE8A81DAFD375E +:1063200095DFEFB289FB5DFC1E56583C29BFCF2597 +:106330008B776A23EE732D30B4AE4E76F5BEC7B5BB +:106340002AC1BB307714E733EC675F863F7729EDCE +:10635000EF561BFA0BDB567DB61ACDA35B12BCD5EC +:10636000D8AED3D8B58DDF870E927C695BE17CFB1C +:106370002A4D0F81FECB00ABC8BFAC229EF4A64BCA +:10638000BE477BC97768F5FCA1E9714F1BBB9251F1 +:106390004E9E78DEB20EE13C6115F79B665B22E211 +:1063A0001CB89DB4F46189DECD7E30379E9F9B1E64 +:1063B00005ACFC03BE9C776124E9D73DF975928159 +:1063C000EE077855DA7F343D2C4D023D0CE51ECCAE +:1063D0001FF7E7211B0C3AF887FAA3747C96BB3DA4 +:1063E0003EE2BE4A8AAEFD88BD1911F75586E9EF37 +:1063F00043DCB0E220EECBB3D68DD4B52BF78C8B3B +:10640000C09B8053E8A3E5420F5C769F85F868D96E +:10641000FB32E92F155809F2B002FB023A566C1113 +:10642000F1D675FA7DB642613E7CD76B9ED87F9ED1 +:10643000C2EF92E9DE8B1A07DF9F2D68DC86EFAC96 +:106440002EFADDBB450EBCC7274D1A80CE89D5D9A3 +:10645000DE66E49B34A34AF1BED5BBB3E2F0BDB522 +:106460008EA3AF511C2719A363B1DE1185F4DCDCC8 +:10647000C8F57AF493C9F1217A6F6EEC1735D81606 +:106480009A57581C0BE9C19F631C0BB2DD24C967E6 +:106490001A11827FA9D82FB475F689D0FBD94ADEAC +:1064A000CFDDA2BEBAF0F5A7E281741D86435FAED0 +:1064B000C17DA920901D44FD6CE3E6C45B001F8FE5 +:1064C0009ABD6FE13C96BE551283F1765FEC30D2F7 +:1064D000FBAF7F6D7AF6298C8F5ED3F8AC09FD0097 +:1064E000958ADF44F1A0CF6F36617CF4D5DB37535A +:1064F000F982ED6564272E644BC84E3CA9BDBF21CF +:10650000D64945B1B4C9017017E671395A11C5F5BC +:10651000DD29F2F8D71260BCCFB74B141F7C83671C +:10652000C694FEA89F04E2E8FDA4CF84DC8DE4FBC2 +:10653000EE3765EECFBD81D3B9AF779D665D701143 +:106540009FDF702197ECA71B8343B9BD9AA7B7576C +:106550002B4CCEB751AEB3DF039FB3303F82DB4845 +:106560007A710DC82BBC2FE9192FEBF8B07672B4F5 +:106570008E4F67B330FE87A16FC2A097B0FC0DD3DA +:106580003275ED6FBE213782AF0B43F5240FAED4C9 +:10659000DDBBACC112BAAF52DCAB9CDFDFBC56F73F +:1065A0007D0D9BA9BBE7B7688BC4ED94E6383A7FB5 +:1065B000AC10EFDBCDF6F2F2C57B79399BCD74EBF5 +:1065C0002BBDC4FD27BEEF19C91ED3CE2166E3FF44 +:1065D0009FD91BEF8C45F5BC2F80EF45A0DF40F71E +:1065E000AE8038C744B849CF15FEA49A1CEE4FAA16 +:1065F000F1B59AF03D0EC0BBD20FE3381B25A207C0 +:10660000B4B7F42BE4F9E514A7AD8F23C3FE301E15 +:1066100073F151B90CD749643DF01DD777F7F1F804 +:10662000D8C5E80FA2FB6B11719DE81F42FF16FA57 +:1066300087C2E877779E93FBD1B6EF3E9202F89837 +:10664000E5E17C5A1D98612CCBEBCD57C0DFF47E81 +:10665000F50206FC05E32E8075EC77F63D7F5417B6 +:10666000D1FED0F0B058E57C98827C98DF9BFF6A21 +:106670007C4B4CF4BECA26893DEAE2ED112F29C8B5 +:10668000971178213C46E043C3530FDE22EA23F101 +:10669000B2C0CB884F16EC95FC784EABE12F723E22 +:1066A0007DE12F92CE0B59AB09EFAF2C6C96DCF845 +:1066B0004EBD76CEC3C644F893DECC247FD2628F23 +:1066C000C08FC6171ECEF7332F70FFC84DF83EEBB4 +:1066D000C8109FDC304DBF3E6FBC9048F5DF976F10 +:1066E000401320BFECF7E5176D3E9A7C46FF21F181 +:1066F0008988B38E5C3791FEC79FE409FFE3283693 +:106700004A17572DE46A5FFEC79EFB8CDE8BEF278E +:1067100065BFE3FB892657BD629FF0AE3226B2F01B +:106720007D482B17FEB8A5F7E5D0BB23692BFA519E +:10673000BB32AB83EE0794ADE0F1DA65D0CE19A69B +:1067400057AC5E999986FBC3C70F0C79CA87EF6275 +:10675000DE9B903806E87D629531C1E20CB5FB788E +:10676000D594348C2B39B1DE3C9BDEFFFD8985E16D +:106770007B1B357B06F0F7E4645B22C6739E7DB11C +:106780001FBD8BB42D8FEB99D5AB5E8AC1EB08553D +:10679000ABF8BE9C930D661D9D4F6FDE46071A8EAB +:1067A000CDF9B82F3423CEF1FC11FB2AA4FD89F6D4 +:1067B000FB9356C74DD8EFC9E78D6E3CAF857A1570 +:1067C000CF95EE96829F5E45EFDC4889E8C7E97871 +:1067D0005FA67B9E8BE483F9D86F75FDDE34BCEA3F +:1067E0005E5108FB28D0F93DB3B719C7AD5AF56C17 +:1067F0001A1D52ADDD4CBF0F10E6FFFD0DD6D7A020 +:10680000FF17F2DE1559B1FC5DD98BFB7F35BCCC8F +:1068100010E7DBDBC4BE8E7A3BA6A8B763FC0FEAA9 +:10682000ED9847BD1D53D4DBB1BC76835EBF7B5E64 +:106830009CCF6A7EE074F97C01EAC1BE6296B384A3 +:10684000F6615B0EDAA3CBA42837EA91CB24BECE47 +:10685000977D64E7BF43D17A0DDF7F053F44BEBB20 +:106860003AA10B74B030BEBDEA828585DF7F9EC43D +:10687000E274F9124BB2AEFD14874B577F75D250BC +:106880005DFD35CE025DFEBA9CB1BAF6D7BB27E9F5 +:10689000F23F18738DAEFD0C75862E3FAB748EAE35 +:1068A000FD8D9E325DFDCDB317E9EAE778EFD2E5C5 +:1068B0006FADB857D7FEF6252B74F5DA3BB42D68CB +:1068C0006F99F19D210BA5DABBB45F19C002827DDF +:1068D000737C89B8676DE6FBD1B2B7B26CE1FE108C +:1068E0007938D77FE6E4ABDFE6F5E7EF4721FF0E27 +:1068F00012EF43C50DE7744D65A0CD91BDDB9A8CB9 +:10690000FC14D92EB27E7CF4A1CFF1A751EA866F98 +:10691000BA490139327EF4A19199900F0EFF98E7A0 +:10692000C71DFA7506E48FEECCBA99F2230E7D8E60 +:10693000F5D3F23FBB490139367E1623D5E4BD9D20 +:106940006B6FC2B89AF15765AC7373FF08C593902B +:10695000A3A228EC5E8CC516C4F3796D5E8817BCC3 +:10696000878F78C13408FC8CE921E0674C5F057E95 +:106970002E07397604F819D3A3608762F9EFC10EA8 +:10698000C5F44DB04331FD03D89F98B682FD89E927 +:10699000BFD6CFA6F4BD7A2F7DF7C7FA0A4A8FD5A6 +:1069A0002FA1F20FEBEB28FD4BBD8FCA73870B3F76 +:1069B000C65E6347F8BBB1DA79A6767ED9B084B5F6 +:1069C00045A33C6853E23EB584CE25FBB6FB15F6E5 +:1069D00069987E16CBD4A2E1E42FD1FF0EC68F3288 +:1069E000BCE386835C78DF352B0B1F86BFE9C29240 +:1069F000D7F018F77DF17E4164BF71821FDCF9AAE0 +:106A00008ADF4DB0F07BDD132CFCDEF604A5B581EA +:106A1000CE07BF664E8C373928EE69373CA0D03D93 +:106A20006DE902A3FCC40446F986AFDBE89EF704D7 +:106A3000873B09F7292DAFDD07A6BFB038A5C917D9 +:106A40005A4B50DF98683339514EF4C451301E27E9 +:106A5000A19DE76F32F273FE83F64F4BD09F06F095 +:106A6000301C4F8B07D8F2350B1AF2437115132CDB +:106A70006D14AFA5C5394817DA64D49BB4782A0DD4 +:106A80002EBB02DF1586E2A434B80740DE54C8DF0F +:106A9000BD960BB17D3019E3C9262E31D13B833D24 +:106AA000715B66E6437FEB00113F00ED09EEC9170D +:106AB000BC142F3251C48B0C32C106CADBD1B9B21F +:106AC0001DED35FCBE5FDB619C4FEA7FC018D0EE48 +:106AD0004989C73968F122D83E9AB70FCA61EB736A +:106AE000F0BF03DCC0FF83E2030518DF3368B18D1C +:106AF000DE6364AA4AF89D25E42A738ABCD8AF599C +:106B00004231E58B45FDB90CEF0AA4BBC7ECF82870 +:106B10009AD673E620D44B66083DFE1FF0CBEAFF01 +:106B20001A7E5139FD0732F29FF5C5371A5F68F4B6 +:106B30008EE4238DEE61F13544778D7F22F9AC2F01 +:106B40007ED2F8688285BF0738B1DAE2BEDFF5BFD2 +:106B5000877FEEEC625363A1C90B99DE38942F65F1 +:106B6000179C47303F8F4DA2DF67D1EA7F8DF5A399 +:106B70007AD77BFFD6658C0DE3B309620FFBB08F2C +:106B8000F65A3BEDFD10ADFFAFFB18FF0DA127BC82 +:106B900021F6BD6553383F950ED57EDF4AB51514F5 +:106BA00085C5B3E62D24FB80D9B87EED84FFC88F60 +:106BB00026F4DEAB2E283ABDFB5AA18F97322EAFBA +:106BC0004B23CEF3AFCDBB9AF4F26B23F4F2483DE6 +:106BD000FBCC7071CFCEC55CDFF39DDA6EC453A4DD +:106BE0001E87F171C8F7994E99DEFDD1DEA5D5DE7D +:106BF0003B9E2CD6F3647CEF18E09FC2BC0A6E2A41 +:106C000057331FA5D7303FA5D7B120E909D7C3C651 +:106C100083F91F604814E40F474FBF0DEF38968C7F +:106C20002C194CEF9F84DE6B34E68FA2F71AFFCD50 +:106C300011F65EE3A1C94E3A7F3D64E1F7AC715DA8 +:106C40001AE343F3F91DECBB83615F3C0CFB32A6F6 +:106C5000AFC1BE3C18E6F73AECCB98BF366705C328 +:106C6000EFA63AF57151DAF7D7394AC020EB1B5F2E +:106C7000D7E5FF6620E2F38DB8219371BE6FC48D16 +:106C80009E8C7479236E8081A76613A67D7DAFAD3F +:106C900083EBF2F83DDFEB1C5369BCFF0BF81C9152 +:106CA000DFBF373EE3E8D15E8C677837262903CF14 +:106CB0001DB95CAD89E67275E94B6FE5CB503EB10D +:106CC0006E1CC17955DD584AAB2D1C4F9FD5331F23 +:106CD000E2F7144E011DD011FE3AA6141BC2E3B513 +:106CE0000BCD5E15E1A836B4C45C09F59F6D7A77CB +:106CF00017DA5360574CA172D9B9CE8D7AE41B3C98 +:106D0000DE967D73386DA6BD375FB22DB37476A362 +:106D1000C697D5160D9F3EFEBB45996A1CE76BFED4 +:106D20005EAC160F34D0CCDFAFD0DE2F45BD8EEE7B +:106D30008946E84F45515CAE0D3473B9ADD16F93C0 +:106D400089E7F17DF12294838FF0F74F760C506F35 +:106D5000C179801D42EF03760FB4D37E7348C4B56A +:106D60004D0CE6C6E27E508AFE1300F9F528FEEED1 +:106D7000F52111C7E6C9F1CE47BE7FDD796820DA7B +:106D80006357317E4E738D4D76079D975ECF91F29E +:106D9000A0265FD8DDF92C5F77BF50D007E0A4387C +:106DA000A6EEF7648A2B9CC8B21F47FF4EC9512339 +:106DB000469C87E24D93B89C9B7294C74D85ECF33B +:106DC0002E19E5E06B0E896D0478CD4906E60C932B +:106DD0006B5667147386C1139D13AFCBDBDD29BAE5 +:106DE000F6B1633274F571EA305D7DBFD2425DBEAB +:106DF000BFE74A5DFB01B38B75F964EFB5BAF6A93D +:106E0000153375F9414B6ED1B54FAF9BABAB77F9ED +:106E10002A75F5DA3B5DCCA7B6E62472798D7F99A9 +:106E20006B97EADA95DA16D0BDD2ACC61FE9FA63E1 +:106E30004EEE8FF1C17FC85F5FE0056648A724E989 +:106E4000FD34B2B0BB4A1C935E4552A58A78AF129E +:106E500087DE5F936A2BA57B07A99788FFDAF57D0C +:106E6000F9C03BECE27C50CDE8FC37920F5E433931 +:106E700095C9CF55C2E78BE72AE178C17395F03CFD +:106E80009EAB84B7C77395F07A3C5709AF1F79540E +:106E90004FFF51AD7AFA8F3E567C59F41ADBA6E7C4 +:106EA0000B8D5EE34ECEBC28BD66C37F482F586273 +:106EB000749F7E32E029C8FAA65B885E9C7EFF2C18 +:106EC000DDFE1A41B72FD8BA51F84E7F671997DF08 +:106ED0007DEDE79D16F50CCAA16F51568E0AF93962 +:106EE000B4F8DABE7E67468BA78DFCBD99AF0C6DFA +:106EF00076DC4F8E1B1AE9777B0A13BD5FA39CBA21 +:106F0000336F8984E7E549CCB37B810BEF87751D2F +:106F1000FF317E77AF9DCB6F3089510EB6DD6BA709 +:106F2000F8210DCE3B5279FC946184B05BDD3C8E40 +:106F3000CA3882FBC3EC6E07C5DB97E5311107CB7E +:106F4000D2EE181E3A27EC5ECEF57A93D51B3502A9 +:106F5000EF1989DF35D3E2C6D9A57FBF2616BFEB6F +:106F600079E77191F69E69D03A04FADFD814AF7FC1 +:106F7000F7B586F5BCFB8AF98DCBB3B5F7A778BD1D +:106F8000F63B31CC6FC573FA211B984EBFD828DE73 +:106F9000C9DD28DE311DEAB7E8E2AE43F1547E2BAD +:106FA000C685E56E77E8EA87079274FD8DD8EBD445 +:106FB000D517047374F5238FBA75F936116735AA9E +:106FC000758CEE3BB45BD08E187D4CD595A7572DB4 +:106FD0009D8EFBFF20A1CF8F6D2BD5F597DE196518 +:106FE000C0F8E6692332885EE34E7A74F5B4F7039D +:106FF0001EEFF89744C293664785D955644F991898 +:10700000FF1D32D35A85F64F2D3E3EF2BE42CFBD14 +:10701000224BE81E53F87D02CDAEE9B957A0801E81 +:1070200092198A9FEFE13BF1EEADF62EEB53F7A6F6 +:10703000E8F87296E0BFF2A17CDD6CB5F03893867B +:10704000FB6C0C7FDF88296DC9489F5B46707D63B0 +:1070500065963A7B04B5E7715B4FDB4F2EC2F57046 +:10706000C7083ECE6D06C39D33F2F87BBC2F86D990 +:10707000B5F3C5F7530A38FFDF11CBE1613FE6EF07 +:107080005F69F34832B195F4AE9BD23614F9F9F644 +:10709000758187F12AE36DA64623FFFD2CBF917E03 +:1070A000D7A218F4C002F48F16FFDC36167F974D76 +:1070B00021BF56F5AFF6DEEC1B1CBA47940EC5484F +:1070C0008769885F48FFE8E6F1DF6B716EFDC3D624 +:1070D00097B093BB1987ABBBCE44725FA363189D77 +:1070E000C8CEFDEFBA8FC1C43E3598B3560F5E7A55 +:1070F000EC718117ED3E8FF32EA3E7191BDD0B2AF0 +:1071000045FB56C3F72937A76BB39827B643B9A2F7 +:10711000B5C37B27EDB650BBFF57F74F7AF07B899D +:10712000FB7A7DDDCF8B5C4FF417E6AFE8EB5E9E1C +:10713000B6BE7AD60F6B9BC3E347387EFD830D74D2 +:10714000DEAFFD4EA586871323B85FE6A7829F6159 +:107150009FB51524F2FB64F83745FEA60CF967BE0F +:107160009DFB3FBC629F9DA87A7E8EE737739B8C08 +:107170006C33949739B9DD8B299EFB95F9F4FB2587 +:10718000ECE3A4272F649E583CEFBF8AB957E379FC +:10719000CDBCB5FA76F319EF67A18DFF3ECCFCC8E4 +:1071A000F769B473AF4BD8D1EF8D10FBEE08368280 +:1071B000F42511A75061D1E6A5D797BAFDFC5C0F65 +:1071C000EFFFC89C4E14B7A6EDC74E3C770A3B0FA5 +:1071D000017C46E1EFE9F9562AF49E57247FF5E059 +:1071E000B38F388A0EF11E48CFB997A8EFF07DDE35 +:1071F0004EF5CD567A97E36C416B3EDA11DAB9570A +:10720000E4395AF7720BC3F8BCEE663BC51FE07950 +:10721000532CD0FDB46177E21857081E6F9BAC3B2E +:1072200087894C73B2BDDFA01CF41A199D6F35EC31 +:1072300090DD2BA0FF076C87E81DAE7449FD760436 +:10724000F98DF576DC34D817917FFF0F308202A5D7 +:10725000008000001F8B080000000000000BDD5ABA +:107260007D7853559A7FEF4D729BB4499B86B6B497 +:1072700094B6494B4B0B01F2511CBE66E6829465F5 +:1072800076914D51A18552121A18BE8AA5E263C6A5 +:10729000C5694A8B1684D9B216AC8E4ADA15D45D0C +:1072A000D4567144AD6B8602323338A2AEBB3C83F8 +:1072B0004F4D6116515609F5D915F67164DFF79CEB +:1072C0007B9BA4B6F3F1CFFEB1E5292FE7DC73DE9B +:1072D000F37EBFBF7B2EB76EE1CF0F012ACB0480B8 +:1072E0004C00A8D28B9005E0D5E3BFAD00151A2362 +:1072F0004039C0D03C2194844B86821A800CA48BE8 +:107300008510D8000AB4202759003E02CF34284205 +:107310003E10CE207AA409F727013CD7A467F49F3A +:107320009ACC0093018E3665B3F18B4D56467B9A0D +:107330004AD9FC9D379C006E80BB6ECC051887E750 +:10734000B7CD66E39282A0988CE7C12AC17118C9B3 +:107350008A676057326E8D34AF98E945D1F21D5C73 +:10736000EE922468E8C1F12D451F95FECC21B2E7CD +:10737000FFEC0046557D1A9B511F94BF11B7B3F126 +:107380003E21148C1B7FD5AE8C2BF8F8DE5D7C1C67 +:10739000D119DB8434AEDFA462AE1F51D26F928E5E +:1073A000EB4763D28F28E947F32F3739D8F858D302 +:1073B0002C36FE4593CCC6C79B1633FA469387CD31 +:1073C000AF054FBE134DFCFD28C042F201FEDCC2EA +:1073D000DF1FDED0C3C2D2D8783EA4278C6FD7E798 +:1073E00024ACAF30DB129EFF557659C2F31F599D76 +:1073F00009E3BF299D9DB0FE0EC7FC8431CCFA5134 +:107400006C5C887FC99509E33BA12AC60FED74B770 +:10741000C797C07F45D5C6447EDE6D09FB57412026 +:10742000617F514373C2FA350101FCF16390258AF3 +:10743000B3BACE712C4ECE177A5639D0BF9FA47CEA +:107440007B9FAE90FCDCB791E2B4B13ED9C1FDDCCC +:10745000BE98FB5D04EEE76835F3F30E898F2B1CB5 +:10746000E3CDA3C44F1FFA7921FAE55FD0CF44C31F +:10747000E867A227D0CF444FA29F17A2FF4EA39F39 +:10748000899E413FD3FCAFD1CF44CFA29F89FE1646 +:10749000FD4CF41CFA99E8074D558CFE6B9397ED63 +:1074A000FBB7A60D8C9E6F6A60F3BF6B0A30FA7152 +:1074B0005390CD0FA01C7E5D4CAEC99D187F71F618 +:1074C0002D0B611CC6D967EA73E684F1B49EEC8487 +:1074D000F5338E5B139E3BC3A509CFDD671C09E323 +:1074E00099E76625ACFFDE793961DC35C3CAF26BFA +:1074F000766471C2BEB9573C09E369EDC1539F512F +:107500007C3DF9E549A22569BE97052C0D4F3AFE51 +:10751000BA4A9B83E3149F2B1D7355D7FCB7550BB9 +:10752000B104786FB8593D980E5191FCEDC5B5E4A2 +:10753000376F1842DD98ABD36EE6B0E7CF979A79F4 +:10754000FDA21FF4BBF31874ED11689ECBA5EE7776 +:10755000805943545D1F1B8FBE6EE4F9EA3A561FF3 +:10756000E3E400883ACD74EE0EA36B0FC6D311513D +:1075700058E3C1783AB213D62CB3A33F8ECAA20106 +:107580009F571D333B35565ADFE0AA3401BCAFD4B8 +:1075900027757D8916CEE85C313D9EFD9EAD9BF83A +:1075A0001D57EA5C4CCF88162B2ED5093984FBE693 +:1075B00045CFDD9E86EBBDC1F93389FF1209D67830 +:1075C000ECEC9C3995B86E6A5090BBE3E2FB04F199 +:1075D0009B49EB7B4F507D7DF6D052BE2F99EF7BC0 +:1075E000F6502A3B7F69ABD0ADC1F3E71D05B90B5F +:1075F000F7FF86E49D49FA8435749EAF959FA7F204 +:10760000F53D992F59719D0F1A1EC82E271B094051 +:10761000751BF53A497AA9F653D79760CAE8B07F47 +:107620006C2551D1956DA5410FD9D925F275925E82 +:1076300006C07CDE7ABC12A8DE7FBF3CBD2283F888 +:10764000F681A398E2A8FCFD04BD99D96E637C592C +:10765000FF9A1C14C229A8CAD260F34E32DB1DC1A6 +:107660006DA73269FD33E0B05959EB811FB862F262 +:107670004D917B456C7F608773A24120BF43FFB86B +:10768000B838C20A7017F9DDE9D001F9A5526BD6F6 +:1076900051DD00AF2C029EDB38DC37EDEF3D8CE78F +:1076A0007C7546436D0E7F94E766FEBCF1C11B837B +:1076B0000F533D7AD5E0A03104F4ECB9CFCC75F08E +:1076C000760AACAE7DD5AA030DD9F9D5A410E09405 +:1076D000AF5303568CC72FC4B3592B705F7D51280D +:1076E0005F447B6D9AD035DD827DA3B4C4FB070770 +:1076F000FAE76AB07F6915F2196C7D258BECF655B7 +:10770000EBAB12884C0EA313CFF12BF6F1EFD8B0F0 +:107710008494F44DF3A48591FF45AC33F264927FD9 +:107720005E5A84F46AD75D8CA04E55F887EAB4EFB0 +:10773000DD715980F3756D7C5ECDEBCDB0F7BA0687 +:10774000EDBCB155E793662005EDC5885A1FD04EB4 +:107750009B772CFE94CED94CF371753EF0F1FCF082 +:10776000C9B83A92E134655C4E014A40C72DD4074E +:10777000343569DE51EAB24ABF6E92C327B12E1684 +:107780000872AE732671094994179B1097F4B0F8EC +:10779000078667EE35707D7DEFF6DFCDF04B43B1A8 +:1077A00048F845C53D35CD1CD7402F848A051ADFE2 +:1077B000CEF2B5E655D921E0BEF7143CB3EC462E27 +:1077C000F3CB870A7EB9FBC654561F96440C6C7ED9 +:1077D000F98D1C4657DC2863F3CB8CBC4E445E8786 +:1077E000D04E1BE1A7248EA7FA80E1A791F1EA040D +:1077F0007305C5FF1459E81F47F14A7808F9551178 +:107800003E1A47F1EFDB9549F11FC2F8B77E37FE0C +:1078100057D4D82A488FB2C50250DEAAF1EF0DFE28 +:1078200092C5ED528C5B9ABF23D8ACCBA27D478129 +:10783000E9E745B7137E52E37C645ED4A6707C050D +:10784000C6C84CAA27AAFD6B49C839F81B7CA94AAF +:10785000467BD7223682093CE001FD6CB2F3E7BEDD +:10786000DE97AA5A2761CFC29569C82F570BC1244A +:10787000171F1BF858962C7C6C423A510F41BD855E +:10788000A53ECC439A87F3A285AD0303DF07594891 +:10789000259C4F468A2100375C6C1FA429FB48FEBB +:1078A0003C3CC7C0F7C95ABE2F4CFBFC65BC8E3EA2 +:1078B000AD8B6C04747D8D28B2FA5BA1F9B8623C83 +:1078C000C383E92E9EB73C7E2E2A796B742FF0BBC2 +:1078D00030CE1A77178F873F129775E837CAD3DAF9 +:1078E000B4C87D02F6B39F3A415E88D0B71A147BC4 +:1078F000A11C8071BF52193FE73C77BECDCEECCCC6 +:10790000C60F38DFA80AE2B8CDB8D343F2C5EAA162 +:1079100047A6B448B1CBE0B57F578FD57B7BF64DFA +:10792000B6123FBEBE466AD7D13C068C8EF2A2CEBE +:10793000CEFB0568795C5EDCFDDA8BD42755B92F68 +:10794000EAA08AF919A28354BF0E2ECB76EE51EA33 +:107950002AC5D5139B26B2BEFA73A7D2B7302FAC77 +:1079600093390E264A38D89AC471308D09071325E9 +:107970001C4CF38483694C3898C68483694C3898CE +:1079800028E1609A3F6FF51CE0F9DCAEF7609F8458 +:10799000D2E8E387F1FCDA2609481E7F19D7EFD039 +:1079A000A66499F438F480C4EA23682365B4BE461B +:1079B0003A774A6F8BD9E142E01F74BCFE858BADEC +:1079C000C8676583C141F5DBE8F674D3392976874A +:1079D0004475C66B0F0956B4EB0433CF8782A2A857 +:1079E000F33EA47E17E7B3A490F7C7020D9C048C66 +:1079F0002B4F96FCBC3393F8788F125DDBE73C9DF0 +:107A00006BA57E952E917F6AC763DEB03A14CD5F79 +:107A1000668AD9F96D27AF3B7ECC6DA2D7C8EE6CD4 +:107A20005DA8AD10E5ABCE3033BB63DCB6D2FBD581 +:107A3000DB8ABD299EC5B8B896402B935FA48014FD +:107A40006A4196589D64C9C5F2053496989D246A8A +:107A5000409678FB984F93DDA226C94AF8C5672C5B +:107A6000594471EF6B172C540F2A344B4E33FCBC26 +:107A7000DF5648F8F9BA33F1FD709DD2E71A0F14BA +:107A80004939B46E37A2381C2FB158199FE83EC14E +:107A9000DC6DA5BCC275AE98DEFECED92C2FFC21C4 +:107AA000A4EEB1F367D5FEFEBCD729EEC2B244F214 +:107AB000FACD581EEC71F9D52EB0381E391EA49798 +:107AC000278A7B84ED64A7D5DB6DD25A238DCFE85E +:107AD0001AEDA48735017FE0BA30AD43BF727BEC6D +:107AE00047B96DFC3C571CFFB5C43FEE7C350EAE6C +:107AF0003A4D0C0FF9CC5629C746D4CCE4FC8E1D68 +:107B000014FBD785433A07C9A3C57371BCD21CD2F5 +:107B1000D1396B5B9D12D513EF5E7E8EB72D5D9ACA +:107B200046384A6B96F2705C93CCF30FE56378D3DA +:107B30008F76B118E91CC497C6EFDAC7A7C8EB6FF8 +:107B40004F97D625CCEFD7517C572BF57E6DEB7C2C +:107B500049A4FD5AAE6F8E8BFBD9ABD8F33FB61953 +:107B6000F600D6F4EA8E778A058ACB861CA7807A3F +:107B7000A6B8783CE68CC88B6A733BD367D89E075F +:107B8000507F64B9CEEC61FC311E829437FE0ECE7C +:107B9000DFDFE193EC48D76BBDD24476BE89F11BA1 +:107BA0003EB7F397CAB906079D0B666F3EC5C3E59E +:107BB000032BF2991E1D8FE9C86E26877511E14DC2 +:107BC0008C0316976A3CD4BA79FEA9FA4F756939C5 +:107BD0007E75711CABE693DA8FD4BCF2EFF5818C25 +:107BE000E7D665637F1C25AFD47C52F3AB1A22D550 +:107BF000D4B79F963CE16C2196F7D80F1B5E1EA56B +:107C00004FF815FBAD54FC807661F5447D7E97E21C +:107C1000871AB26BDC7EE2477C65F5F98270F1363B +:107C20007B6CBD7A6E8D85EF23BF507CC8CA79B45A +:107C3000BE91AD1713F2B96E18B71EDD9545FDAFB5 +:107C4000577050FF6BDCD79F773FE5F70B297483A4 +:107C50000257B71CDE9A43CD551B627E50E55A870A +:107C6000F884F27ABDD2F7FCE1D1F3FB4499B792E4 +:107C7000FAE7B01D1E7DA184EA24EA1FA63AF1F1BD +:107C80000B6F7E34C71AEB57AA3E6BDBBA585D5CAC +:107C9000BD37DDA5E175B18DEAA25FD1BBAE95FB25 +:107CA0000BD05F84DF54BFFA5A05D61FEA02B785AE +:107CB00008F70CE301C59F23FDA8FA57F5A36A7FD7 +:107CC000EC430071B85995BF5E39BF41C983954AED +:107CD000DCADDC309FD5C5B56D3E37B5DF6A65BE1E +:107CE000DA9F383F6C7FB36A7FFB4314C7433DDCA8 +:107CF000FE437B75FCBEEDA889E1C5AB8DAFFD767B +:107D000039AEFBFC60573EF5F578FB134E5CAFE0F7 +:107D1000C51FA3FD092F8E62FF66575CFDFBF12195 +:107D2000C5FE853D5FBE41F5655B92A31BCFADC32C +:107D3000DF59689FAB471FD5E5E2FCAA75423AC9F7 +:107D4000DBEEB2713D7BBA7485F41ED0E034432A79 +:107D5000CD5B593E8D8C67A432C4D997FA81608976 +:107D6000E115753DD5A35E9463FB36432ACC20BE56 +:107D7000E91633BE2F1C57F254AD2FAADC97B6F983 +:107D80007E46EF13970C3CBEB7E0FE97F1F9A5F9DC +:107D90008EFC467B0CCF41464F2FF9BFF61E3B7B36 +:107DA0002FC7F3CF08A8D74B2EFEFE3B69522444C1 +:107DB000F2ABB852C2FAA447DA2D72FD0B359CFE25 +:107DC0003CB9A7ACE18FE0BD495B22D7491E15CF76 +:107DD000AA38F623252E54BCAAE2CFB1EA8E04CFEE +:107DE000B415A2BC5206385AACB13855F98CAC3F28 +:107DF000AA9EB9293DCF539CE4DE33C54538404A9D +:107E00008636D2E3374A7C8ED4F3928DDB732CB95D +:107E1000557987ED80C138CB12935F950731AC2C33 +:107E2000122EFBBB690C175E6A76E4939DC6D2EFF7 +:107E300092CDCBF2349A030EEAB363D5D56ABF1064 +:107E400024BEBA8089DD3FA879E257DE1D314FD2CA +:107E50002228FF507B511AD5FF4B02F615D26B9B9F +:107E6000416471A1E8F797DE435F7759585CE01BE6 +:107E70009B89F05A4DB292FF61DE7F0702454C4F5D +:107E8000755EEDBF03E688C91257777FDFA0F42F38 +:107E9000E443F9038122388C470DB45F32892C4EBC +:107EA000B97CEABEED3ACE1F2AF5A1C336C22D95A4 +:107EB000920FE757073ED40948BF51E2B5A0A84743 +:107EC0001E4FF6ABD49B294F3352651B9D97619192 +:107ED0006DF1FD3FC55325517FBC640B4FA27BA9BB +:107EE000A8D3C0EC3DE0A95A9483F135D0994E3720 +:107EF00040B05D700C04E87D725712BB5F5F224298 +:107F00009BC0E2232CE552FF6E16583D50E7EF98D8 +:107F1000E24D71931C9ADEFFFE1DF1DD95E2207C9F +:107F200003DFE0B9581FA71053CC99BD748745767D +:107F30001C712F32F21EA440B2B27B92E8AF34D053 +:107F4000CDEBDFBFD378DDAF7490648DF97D83E234 +:107F5000F7755D77B2FB077FA786D5B975741F8269 +:107F6000F4097A8825EFA18EDBB3282EFCFB2B0EBB +:107F700006B17FE40BE0A1FAF27B6DA492EAC09512 +:107F8000AEF19666C24FF52D2580CFFD5D0FE7134C +:107F9000BDD265A8A2FABCD05CB9301DCF5FFF642A +:107FA0003ABBA7BBB085DF0B6C7ABF98C5A1DBCD10 +:107FB000F369CBB7FD4F9BB1DFAFC33933F2FDAFF0 +:107FC0009E9450101F6D693A9EAFC19C7934C93B95 +:107FD000DD8DEB368B7DCB6753BD16424772D87A69 +:107FE000EBA8F7CC2ABD4CEF53188FF53F3DCFF8E7 +:107FF0007C219E5D5A8DFBB7D4BF924A7C361FF818 +:10800000F036B3C8EE79E610FFCF85AE23662ACCF2 +:108010009D5DD3A95F1608F23C37BBA74ABC071980 +:1080200079CE52278FA7F96EEEA72516CFF2EA7206 +:10803000E607E6CFB1E4DB709CDF4BA9E3D5A134C2 +:1080400009ECEC1E5432DBD9FD2CC3A1573410A02F +:108050007355FCA1CEDFE5E6E75E496BCFA7B8DD3F +:1080600078E4B17CBA2FFCCCC4C7354756FC9AEAF9 +:1080700094F799248E87B52039705F5D90E359D8C5 +:108080006061F784C378C89DC2F86DEC7427F43B37 +:10809000BA20A1F9CFB4B0B887BDAF5D77124EBAA0 +:1080A000A00DAFA338B8807832C8FCC9EBD885766C +:1080B000CD229A0F6E1780F0C385F6574C938C3102 +:1080C000BC652AEF09533DAA3F86F88387228BCBF4 +:1080D000AD66B51E1917519E236E3253DC36BE7E37 +:1080E0006A11F0318030B63D37297869787CAC97D9 +:1080F000E5ED96A31C2F6CE9E93D3D2183DE2715B4 +:10810000BCA0E0907A05876C3DC6ED527F6C50AA0A +:108110008BC7F9A596877211B135BF72BEEA002EE2 +:10812000F591DFE600F4F6BE5DDD8C3DA017DB3691 +:10813000CB4F6D94E1B83DA51FB0F7D5FA56855FDA +:10814000E9070F15327D2BC7C5E39D9D6E1DDBA78B +:10815000EE477BB07D5F1B52A753BD0BE839BD3F97 +:1081600039B59BE8D7867CD6772483773FC5657081 +:1081700001B07B87E08089BDAF7E2D7A7AD7B37B53 +:10818000302B9343BD7F186927C930FF20D59D3E12 +:10819000A51F85EB93DB0827C85B8D5AA22DF546FA +:1081A000861BE46D1F18E83DBFEFCB645148A55016 +:1081B00089F68BC8DF95E50DD1FEF18059AAA1BEE5 +:1081C000131608AF5F7BEB5337C97F2D2F3A00663C +:1081D000FAEEF07E357D7778CEADD8C71E71531E8E +:1081E000659EE075FD291DB4519F04AD0796E17CA5 +:1081F00058F95E18BC29B2BADD2784FF91F87B924A +:108200008C6D36946740A917E142CF4B74FE398BD1 +:10821000A6D845E72ADF11F394F7216942B691EC1D +:10822000D4A2D851906508E039A270AA8EE2E891F4 +:10823000A81EE83D3C6FC262D6DF5A14BB0AD60CBA +:10824000EA3970C22E0693508E4740CFBE6B4AA2C9 +:1082500041A67542DF3B3705A4B99AEBFD69F83CAE +:10826000F77EC1D18222D70E5D7EEA3DA0BA197297 +:10827000921DB665794F927C03438B07BDE8EF47AB +:10828000CC3D7A879DC7B61EE37C01FF27F4FDE451 +:1082900066AA05EDBB209A3C48F6BD16BDFCC26B34 +:1082A000E544F5EC1E71419F269C349D3655C8C3AC +:1082B000F7BF858CC8FADB627CA0FD31A0FCB94712 +:1082C000E90B2ABFB1F65FCBB66A99BFA2FAB048F4 +:1082D000E719C510BD972DE8EB3F4FFA2DD01BC312 +:1082E00074FF0C7ADD7F0EDF2FD3B9E7F2D22F4F68 +:1082F000652D096E21D8C86AE17EFC415AE27BE116 +:108300007537C799D795FAA4FA01AC32C4F72FD5BF +:10831000EE6AFEABF20F19257EAFBB81DFD30FF5FE +:10832000212E19A5EEAAF443C22588372C93E4EB3D +:108330006477351E46FA7FA49F557FC203E74EA59A +:10834000D9981FA7FD3D30FF7D43F93570F3E86EE6 +:108350000C3B98A09107BDB6FF7FFE53EB8C3719FD +:10836000E98CB1EB8D3719E9F451EB4DF2641BAB9D +:108370004785E599AC3E9CA2FAA0D6853FA30E4D59 +:10838000A67D73A939136E3189FCFB1FE15D3CA703 +:10839000259017A2F78CB905D6662D3D7F10383E83 +:1083A00052EE5B5B0253F9738DC0F7FF4413EAE6AC +:1083B0007E0AB2E7C1F121C2978487093FB7D03E58 +:1083C0005C170CA6840EE37C4B480C16A7B1E70C97 +:1083D00027532E33FDB6007B3E7C4E83959D93D56F +:1083E000C2F747EF93D839DEB4C6A56417EF355E00 +:1083F0001F9794A72B7D203293F0EE233B4D4071C5 +:10840000A8FA9B5DE55B63FED628FE9E60E7FE9EB4 +:108410006014C349E4B70D0BE578BFB510A644BEA0 +:108420006F222ED7937C9512AB8F1D95720E7D6FA8 +:10843000ECA8CC12092FFDE2DB7B3F7990E47B575F +:10844000C770668793CBDBF15611C3530362E8F123 +:10845000F5B47FB9D141F8F9A0E07D9EE248937D63 +:10846000E7E37EEC9B4F88ED7AF25B87492CE92CA1 +:1084700027BE7AF63DADC3C6EDD0B1D1CEF80CFB28 +:108480006B9F89DB5BB1D3B50D1666EFB9050ACEDC +:10849000D74653C90EE81FE5BD3F9A1AFFBDE39AC0 +:1084A0008227AE297E189E079C8FDBFFA7E61FCD93 +:1084B000F43696CF8C3DEF489773081F8DB4F38147 +:1084C00066675B09F9DF249A099F8FE59F9415D2AF +:1084D000D387E3FC42E14CFAA6B4CC6571A0FAE97B +:1084E000A0DAAF30EEC81F23FD0613791CA8EFEB0E +:1084F00005C1C1C7D9C7148894511FC47C2AA5F7E8 +:10850000BB01AA573362712A60990C5862F9A9C657 +:10851000A75AB7C6CA532180F52C75B43CED61F952 +:1085200038110F4E2962F9DA49F6D2888EEC24967A +:10853000A7E772489E3F235F9FA27D194ABDC81DD1 +:10854000EFEDE2635E1F2668426574CE80081B94DF +:10855000EF8502D9FF13C5AE6BB02E8DC3756F9634 +:10856000F3FE003B46D427C50FB5CAFA4FBEC0BCC8 +:108570009A11F3E31AE53DA77647D220D5B9DA1D63 +:108580003A9E2F810A79041F56A7553E60BD9E4929 +:108590007AA9FBD66CFC9F4CC2C963EE8F4C4CA7EA +:1085A000EFA6AC4EA2DE2F4A9EB748CF01B8C4FE5C +:1085B0005FD6D93F68D8F78541F48F358D687EC87E +:1085C0008A7C4E97F37E97ABF79E2A67756041C20F +:1085D000FBD959E7A7C5F45D04BEE99F48F29CC8E2 +:1085E000F49CA175BB270DB1EF250339511DF11F77 +:1085F000A8FE3C8FE45B137887D5F3356A3DFF1303 +:10860000F61A6927D57E31BD8732090FFF5FD9ED94 +:108610007F018C91E6F310270000000000000000AD +:1086200000000040000000000000000000000040CA +:108630000000000000000000000000280000000012 +:10864000000000000000001000000000000000001A +:1086500000000040000000000000000000000010CA +:108660000000000000000000000000080000000002 +:1086700000000000000000000000000000000000FA +:1086800000000000000000000000000000000000EA +:1086900000000000000000000000000000000000DA +:1086A00000000000000000000000000000000000CA +:1086B00000000000000000000000000000000000BA +:1086C00000000000000000000000000000000000AA +:1086D000000000000000000000000000000000009A +:1086E000000000000000000000000000000000008A +:1086F000000000000000000000000000000000007A +:108700000000000000000000000000000000000069 +:108710000000000000000000000000000000000059 +:108720000000000000000000000000000000000049 +:108730000000000000000000000000000000000039 +:108740000000000000000000000000000000000029 +:108750000000000000000000000000000000000019 +:108760000000000000000000000000000000000009 +:1087700000000000000000000000000000000000F9 +:108780000000000000000000000090000010000049 +:108790000000000800009008001000000000000227 +:1087A0000000900000100000000000108000000099 +:1087B0000000000000000000800000000000000039 +:1087C0000000000080000000000000000000000029 +:1087D000800000000000000000000000000093B8CE +:1087E0000001000400000001000093C00000000030 +:1087F00000000002000093C8000000000000000814 +:10880000000093CC0000000000000002000093D0A4 +:108810000000000000000008000097200040000059 +:1088200000000040000093E00080000000000048CD +:10883000000094E00040000000000008000094F0F8 +:1088400000400000000000180000A0000028000008 +:10885000000000280000C0C0000800000000000167 +:108860000000C0C100080000000000010000C0C2FC +:1088700000080000000000010000200800100000B7 +:1088800000000010000020000000000000000008B0 +:108890008000000000000000000000000000000058 +:1088A00000000000000000000000000000000000C8 +:1088B00000000000000000000000000000000000B8 +:1088C00000000000000000000000000000000000A8 +:1088D0000000000000000000000000000000000098 +:1088E0000000000000000000000000000000000088 +:1088F0000000000000000000000000000000000078 +:108900000000000000000000000000000000000067 +:108910000000000000000000000000000000000057 +:108920000000000000000000000000000000000047 +:108930000000000000000000000000000000000037 +:108940000000000000000000000000000000000027 +:108950008000000000000000000000008000000017 +:108960000000000000000000800000000000000087 +:108970000000000080000000000000000000000077 +:1089800080000000000000000000000080000000E7 +:108990000000000000000000800000000000000057 +:1089A0000000000080000000000000000000000047 +:1089B00080000000000000000000000080000000B7 +:1089C0000000000000000000800000000000000027 +:1089D0000000000080000000000000000000000017 +:1089E0000000000000000000000000000000000087 +:1089F0000000000000000000000000000000000077 +:108A00000000000000000000000000000000000066 +:108A100000000000000000000000000080000000D6 +:108A200000000000000000008000000000000000C6 +:108A300000000000800000000000000000000000B6 +:108A400000000000000000000000000080000000A6 +:108A50000000000000000000800000000000000096 +:108A60000000000080000000000000000000000086 +:108A700000000000000000000000000000000000F6 +:108A800000000000000000000000000000000000E6 +:108A900000000000000000000000000000000000D6 +:108AA00000000000000000000000000000000000C6 +:108AB0000000000000000000800000000000000036 +:108AC00000000000000000000000000000000000A6 +:108AD00000001EC800000000000000080000200880 +:108AE0000010000000000010000020000000000046 +:108AF000000000080000A080000800000000000145 +:108B00000000A08100080000000000010000A08219 +:108B10000008000000000001000090700038000014 +:108B20000000003800001ED8000000000000000215 +:108B300000001EDA000000000000000280000000BB +:108B400000000000000000008000000000000000A5 +:108B50000000000080000000000000000000000095 +:108B60008000000000000000000000008000000005 +:108B70000000000000000000800000000000000075 +:108B80000000000080000000000000000000000065 +:108B900080000000000000000000000080000000D5 +:108BA00000000000000000000000000000000000C5 +:108BB00000000000000000000000000000000000B5 +:108BC00000000000000000000000000000000000A5 +:108BD0000000000000000000000000000000000095 +:108BE0000000000080000000000000000000000005 +:108BF00080000000000000000000000000000000F5 +:108C000000000000000000008000000000000000E4 +:108C100000000000800000000000000000000000D4 +:108C20008000000000000000000000008000000044 +:108C300000000000000000008000000000000000B4 +:108C400000000000800000000000000000000000A4 +:108C50000000C00000400000000000400000C8000C +:108C600000400000000000400000C82E004000004E +:108C7000000000010000C8000040000200000001E8 +:108C80000000C80100400002000000000000800059 +:108C900000400000000000408000000000000000D4 +:108CA00000000000000080000008004000000004F8 +:108CB0000000800400080040000000040000B00034 +:108CC00000280000000000280000B1400010000053 +:108CD000000000100000B14A001000000000000178 +:108CE0000000880000800000000000800000880074 +:108CF000000800800000000200008C00004000001E +:108D000000000040000020080010000000000010DB +:108D100000002000000000000000000800001250C9 +:108D200000080000000000010000125100080000CF +:108D300000000001000012520008000000000001C5 +:108D400000008E00001000040000000400001290DB +:108D500000300018000000100000129800300018C9 +:108D60000000000280000000000000000000000081 +:108D700080000000000000000000000080000000F3 +:108D80000000000000000000800000000000000063 +:108D90000000000080000000000000000000000053 +:108DA00080000000000000000000000080000000C3 +:108DB00000000000000000000000000000000000B3 +:108DC00000000000000000000000000000000000A3 +:108DD0000000000000000000000000000000000093 +:108DE0000000000000000000800000000000000003 +:108DF00000000000800000000000000000000000F3 +:108E000000000000000000000000000080000000E2 +:108E100000000000000000008000000000000000D2 +:108E200000000000800000000000000000000000C2 +:108E30008000000000000000000000008000000032 +:108E40000000000000000000000083080080000017 +:108E50000000008000000001000000000000000091 +:108E6000000020080010000000000010000020009A +:108E7000000000000000000800008500000800005D +:108E80000000000100008501000800000000000152 +:108E900000008502000800000000000100006000E2 +:108EA00000380000000000388000000000000000D2 +:108EB00000000000000084540008000000000002D0 +:108EC00000008456000800000000000200008464D6 +:108ED00000100000000000048000000000000000FE +:108EE0000000000080000000000000000000000002 +:108EF00080000000000000000000000000000000F2 +:108F00000000000000000000000000000000000061 +:108F10000000000000000000000000000000000051 +:108F200000000000000000000000000080000000C1 +:108F300000000000000000008000000000000000B1 +:108F40000000000000000000000000000000000021 +:108F50008000000000000000000000008000000011 +:108F60000000000000000000800000000000000081 +:108F70000000000080000000000000000000000071 +:108F80008000000000000000000000000000300031 +:108F90000040000000000008000030080040000011 +:108FA000000000200000320000200000000000202F +:108FB000000037A80000000000000008800000004A +:108FC00000000000000000000000A0000000000001 +:108FD0000000200000003EC1000000000000000171 +:108FE00000003EE0000000000000000200001E0043 +:108FF00000E0000800000008800000000000000001 +:109000000000000000004000000800000000000117 +:109010000000400100080000000000010000404086 +:109020000008000400000002000040600008000486 +:1090300000000004800000000000000000000000AC +:109040000000400000080000000000040000400490 +:109050000008000000000004000040400000000084 +:109060000000000800004048000000000000000868 +:1090700000008000000000000000001000005040D0 +:10908000000100040000000100005000000000008A +:109090000000002000005008001000000000000444 +:1090A0000000500C0010000000000001000052C73A +:1090B0000000000000000001000052C60000000097 +:1090C000000000010000300000400020000000040B +:1090D00000003004004000200000000400003008C0 +:1090E00000400020000000020000300A0040002084 +:1090F000000000020000300C0040002000000001D1 +:109100000000300D00400020000000010000300E83 +:10911000004000200000000100003010004000204E +:109120000000000400003014004000200000000493 +:109130000000301800400020000000040000301C37 +:1091400000400020000000040000500001000080EA +:109150000008000400005004010000800008000422 +:109160000000000A0000000000000000000050683D +:109170000100008000000001000050690100008033 +:10918000000000010000506C01000080000000029F +:109190000000506E010000800000000200005070CE +:1091A00001000080000000040000507401000080F5 +:1091B0000000000400005066010000800000000272 +:1091C00000005064010000800000000100005060B9 +:1091D00001000080000000020000506201000080D9 +:1091E0000000000200005050010000800000000458 +:1091F000000050540100008000000004000050589E +:1092000001000080000000040000505C01000080AC +:10921000000000040000507C0100008000000001FC +:109220000000507D01000080000000010000401897 +:10923000001000000000000400004090001000003A +:10924000000000040000409800100000000000042E +:109250000000411000000000000000020000411268 +:1092600000000000000000020000411400000000A7 +:109270000000000200004116000000000000000293 +:109280000000604000080000000000020000604292 +:109290000008000000000002000060440008000018 +:1092A000000000020000604600080000000000020C +:1092B000000060800008000000000008000060005E +:1092C000000800000000000200006002000800002A +:1092D000000000010000600400080000000000021F +:1092E000000060C0000800000000000800006100ED +:1092F00000080000000000040000610400080000F5 +:1093000000000001000061400008000000000002B1 +:1093100000006144000800000000000200006180BD +:1093200000080000000000040000700000080000B9 +:1093300000000002000070020008000000000001B0 +:1093400000007004000800000000000200007040EF +:109350000008000000000002000070440008000047 +:10936000000000020000704600080000000000023B +:109370000000766000080000000000080000708017 +:1093800000080000000000020000708400080000D7 +:1093900000000002000076A00008000000000008A5 +:1093A0000000804000080000000000010000804133 +:1093B00000080000000000010000804200080000DA +:1093C00000000001000080430008000000000001D0 +:1093D0000000800000080000000000020000800281 +:1093E00000080000000000010000800400080000E8 +:1093F00000000002000080C0000800000000000221 +:10940000000080C20008000000000002000080C4CC +:10941000000800000000000200008080000800003A +:109420000000000100008081000800000000000131 +:10943000000080820008000000000001000080831E +:109440000008000000000001000080840008000007 +:1094500000000001000080850008000000000001FD +:10946000000080860008000000000001000060008D +:109470000008000000000002000060020008000078 +:10948000000000010000600400080000000000026D +:109490000000604200C000180000000200006040B0 +:1094A00000C00018000000020000604C00C000185E +:1094B000000000080000604400C000180000000820 +:1094C0000000605700C00018000000010000605458 +:1094D00000C00018000000020000605600C0001824 +:1094E00000000001000066400008000000000008C5 +:1094F000000066800008000000000008000066C050 +:1095000000080000000000088000000000000000CB +:1095100000000000800000000000000000000000CB +:10952000800000000000000000000000800000003B +:1095300000000000000000008000000000000000AB +:10954000000000008000000000000000000000009B +:10955000800000000000000000000000800000000B +:10956000000000000000000080000000000000007B +:10957000000000008000000000000000000000006B +:1095800080000000000000000000000080000000DB +:10959000000000000000000080000000000000004B +:1095A000000000008000000000000000000000003B +:1095B00080000000000000000000000080000000AB +:1095C000000000000000000080000000000000001B +:1095D000000000008000000000000000000000000B +:1095E000800000000000000000000000800000007B +:1095F00000000000000000008000000000000000EB +:1096000000000000800000000000000000000000DA +:10961000800000000000000000000000800000004A +:1096200000000000000000008000000000000000BA +:1096300000000000800000000000000000000000AA +:10964000800000000000000000000000800000001A +:10965000000000000000000080000000000000008A +:10966000000000008000000000000000000000007A +:1096700080000000000000000000000080000000EA +:10968000000000000000000080000000000000005A +:10969000000000008000000000000000000000004A +:1096A00080000000000000000000000080000000BA +:1096B000000000000000000080000000000000002A +:1096C000000000008000000000000000000000001A +:1096D000800000000000000000000000800000008A +:1096E00000000000000000008000000000000000FA +:1096F00000000000800000000000000000000000EA +:109700008000000000000000000000008000000059 +:1097100000000000000000008000000000000000C9 +:1097200000000000800000000000000000000000B9 +:109730008000000000000000000000008000000029 +:109740000000000000000000800000000000000099 +:109750000000000080000000000000000000000089 +:1097600080000000000000000000000080000000F9 +:109770000000000000000000800000000000000069 +:109780000000000080000000000000000000000059 +:1097900080000000000000000000000080000000C9 +:1097A0000000000000000000800000000000000039 +:1097B0000000000080000000000000000000000029 +:1097C0000000000000000000000000008000000019 +:1097D0000000000000000000000000000000000089 +:0897E000070233000000000045 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000000E88000009500000000500000000CC :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F05060011000000080500FFFF4A :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -382,11 +381,3 @@ :1017C0000000000C2980000000000010001F000035 :0817D000000000188000FE3546 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-3.5.0.orig/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex @@ -3,8 +3,7 @@ :1000200000000000000000000000000000000000D0 :1000300000001010000009C80000000500000000CA :1000400000000000000000000000000000000000B0 -:080050000000000000000000A8 -:0800580000000010B180000659 +:10005000000000000000000000000010B180000659 :100060000000001F03060011000000080500FFFF4C :10007000000000180002000000000008050000FF5A :10008000000000180002000000000008AC000001A1 @@ -155,8 +154,7 @@ :100990000000001091D40000000000080500005580 :1009A000000000188000FF360000000C29800001C4 :1009B0000000000C1F800001000000082A00000752 -:0809C000000000188000FEDEBB -:0809C80000000010B1800004E2 +:1009C000000000188000FEDE00000010B18000046E :1009D0000000001F0306001100000008050000FFD2 :1009E0000000001800020000000000002A000000C3 :1009F00000000010B1D400000000001091DE0000E3 @@ -415,11 +413,3 @@ :1019C00000000010001F00000000000C6BD7000199 :0819D000000000188000FE0475 :00000001FF -/* - * This file contains firmware data derived from proprietary unpublished - * source code, Copyright (c) 2004 - 2009 Broadcom Corporation. - * - * Permission is hereby granted for the distribution of this firmware data - * in hexadecimal or equivalent format, provided this copyright notice is - * accompanying it. - */ --- linux-3.5.0.orig/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-mips-09-6.2.1b.fw.ihex @@ -0,0 +1,6496 @@ +:10000000080001180800000000005594000000C816 +:1000100000000000000000000000000008005594EF +:10002000000000380000565C080000A00800000036 +:100030000000574400005694080059200000008436 +:100040000000ADD808005744000001C00000AE5CBD +:100050000800321008000000000092580000B01C98 +:10006000000000000000000000000000080092589E +:100070000000033C000142740800049008000400E2 +:10008000000012FC000145B000000000000000006C +:1000900000000000080016FC00000004000158AC3D +:1000A000080000A80800000000003D00000158B052 +:1000B00000000000000000000000000008003D00FB +:1000C00000000030000195B00A000046000000006A +:1000D000000000000000000D636F6D362E322E31DF +:1000E00062000000060201020000000000000003A0 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C020800244256083C030800A1 +:1002000024635754AC4000000043202B1480FFFDB2 +:10021000244200043C1D080037BD9FFC03A0F021D0 +:100220003C100800261001183C1C0800279C5608AA +:100230000E000256000000000000000D27BDFFB4B4 +:10024000AFA10000AFA20004AFA30008AFA4000C50 +:10025000AFA50010AFA60014AFA70018AFA8001CF0 +:10026000AFA90020AFAA0024AFAB0028AFAC002C90 +:10027000AFAD0030AFAE0034AFAF0038AFB8003C28 +:10028000AFB90040AFBC0044AFBF00480E001544FA +:10029000000000008FBF00488FBC00448FB90040B1 +:1002A0008FB8003C8FAF00388FAE00348FAD003078 +:1002B0008FAC002C8FAB00288FAA00248FA90020C0 +:1002C0008FA8001C8FA700188FA600148FA5001000 +:1002D0008FA4000C8FA300088FA200048FA1000040 +:1002E00027BD004C3C1B60108F7A5030377B502864 +:1002F00003400008AF7A00008F82002427BDFFE092 +:10030000AFB00010AFBF0018AFB100148C42000CAA +:100310003C1080008E110100104000348FBF001887 +:100320000E000D84000000008F85002024047FFF54 +:100330000091202BACB100008E030104960201084D +:1003400000031C003042FFFF00621825ACA300042C +:100350009202010A96030114304200FF3063FFFF4E +:100360000002140000431025ACA200089603010C03 +:100370009602010E00031C003042FFFF00621825A8 +:10038000ACA3000C960301109602011200031C009E +:100390003042FFFF00621825ACA300108E02011846 +:1003A000ACA200148E02011CACA20018148000083C +:1003B0008F820024978200003C0420050044182509 +:1003C00024420001ACA3001C0A0000C6A782000062 +:1003D0003C0340189442001E00431025ACA2001CB0 +:1003E0000E000DB8240400018FBF00188FB1001457 +:1003F0008FB000100000102103E0000827BD00208E +:100400003C0780008CE202B834E50100044100089A +:10041000240300013C0208008C42006024420001D9 +:100420003C010800AC22006003E0000800601021DD +:100430003C0208008C42005C8CA4002094A30016AF +:100440008CA6000494A5000E24420001ACE40280B6 +:100450002463FFFC3C010800AC22005C3C0210005D +:10046000A4E30284A4E5028600001821ACE6028819 +:10047000ACE202B803E000080060102127BDFFE0F5 +:100480003C028000AFB0001034420100AFBF001C3E +:10049000AFB20018AFB100148C43000094450008BF +:1004A0002462FE002C42038110400003000381C23D +:1004B0000A00010226100004240201001462000553 +:1004C0003C1180003C02800890420004305000FF44 +:1004D0003C11800036320100964300143202000FB6 +:1004E00000021500004310253C0308008C63004403 +:1004F00030A40004AE220080246300013C01080007 +:10050000AC2300441080000730A200028FBF001C03 +:100510008FB200188FB100148FB000100A0000CE07 +:1005200027BD00201040002D0000182130A20080BF +:1005300010400005362200708E44001C0E000C672F +:10054000240500A0362200708C4400008F82000C2D +:10055000008210232C43012C10600004AF82001095 +:10056000240300010A000145AF84000C8E42000400 +:100570003C036020AF84000CAC6200143C02080015 +:100580008C42005850400015000018218C62000475 +:10059000240301FE304203FF144300100000182121 +:1005A0002E020004104000032E0200080A00014041 +:1005B0000000802114400003000000000A000140F8 +:1005C0002610FFF90000000D2402000202021004B0 +:1005D0003C036000AC626914000018218FBF001C4E +:1005E0008FB200188FB100148FB00010006010217E +:1005F00003E0000827BD00203C0480008C8301003C +:1006000024020100506200033C0280080000000D3B +:100610003C02800890430004000010213063000F6A +:1006200000031D0003E00008AC8300800004188074 +:100630002782FF9C00621821000410C00044102390 +:100640008C640000000210C03C030800246356E4E0 +:10065000004310213C038000AC64009003E00008DC +:10066000AF8200243C0208008C42011410400019A3 +:100670003084400030A2007F000231C03C02020002 +:100680001080001400A218253C026020AC43001426 +:100690003C0408008C8456B83C0308008C630110AD +:1006A0003C02800024050900AC4500200086202182 +:1006B000246300013C028008AC4400643C01080053 +:1006C000AC2301103C010800AC2456B803E000083C +:1006D000000000003C02602003E00008AC4500146C +:1006E00003E000080000102103E0000800001021D2 +:1006F00030A2000810400008240201003C0208005B +:100700008C42010C244200013C010800AC22010C87 +:1007100003E0000800000000148200080000000050 +:100720003C0208008C4200FC244200013C0108000D +:10073000AC2200FC0A0001A330A200203C02080009 +:100740008C420084244200013C010800AC22008459 +:1007500030A200201040000830A200103C02080027 +:100760008C420108244200013C010800AC2201082F +:1007700003E0000800000000104000080000000036 +:100780003C0208008C420104244200013C010800A4 +:10079000AC22010403E00008000000003C02080055 +:1007A0008C420100244200013C010800AC220100FF +:1007B00003E000080000000027BDFFE0AFB1001417 +:1007C0003C118000AFB20018AFBF001CAFB00010EA +:1007D0003632010096500008320200041040000733 +:1007E000320300028FBF001C8FB200188FB10014BB +:1007F0008FB000100A0000CE27BD00201060000B53 +:10080000020028218E2401000E00018A0000000051 +:100810003202008010400003240500A10E000C6786 +:100820008E44001C0A0001E3240200018E2301040F +:100830008F82000810430006020028218E24010048 +:100840000E00018A000000008E220104AF82000821 +:10085000000010218FBF001C8FB200188FB1001450 +:100860008FB0001003E0000827BD00202C82000498 +:1008700014400002000018212483FFFD240200021E +:10088000006210043C03600003E00008AC626914DD +:1008900027BDFFE0AFBF001CAFB20018AFB100141E +:1008A000AFB000103C048000948201083043700017 +:1008B000240220001062000A2862200154400052E5 +:1008C0008FBF001C24024000106200482402600018 +:1008D0001062004A8FBF001C0A0002518FB200183C +:1008E00034820100904300098C5000189451000C90 +:1008F000240200091062001C0000902128620009F7 +:10090000144000218F8200242402000A5062001249 +:10091000323100FF2402000B1062000F00000000C3 +:100920002402000C146200188F8200243C0208008C +:100930008C4256B824030900AC83002000501021DB +:100940003C038008AC6200643C010800AC2256B84D +:100950000A0002508FBF001C0E0001E900102602A1 +:100960000A0002308F8200240E0001E900102602E6 +:100970003C0380089462001A8C72000C3042FFFF26 +:10098000020280258F8200248C42000C5040001E01 +:100990008FBF001C0E000D84000000003C02800090 +:1009A00034420100944300088F82002400031C009D +:1009B0009444001E8F82002000641825AC50000073 +:1009C00024040001AC510004AC520008AC40000CFF +:1009D000AC400010AC400014AC4000180E000DB844 +:1009E000AC43001C0A0002508FBF001C0E000440E4 +:1009F000000000000A0002508FBF001C0E000C9F78 +:100A0000000000008FBF001C8FB200188FB10014CF +:100A10008FB000100000102103E0000827BD002067 +:100A200027BDFFD8AFB400203C036010AFBF002447 +:100A3000AFB3001CAFB20018AFB10014AFB00010DC +:100A40008C6450002402FF7F3C1408002694563822 +:100A5000008220243484380CAC6450003C028000B6 +:100A6000240300370E0014B0AC4300083C07080014 +:100A700024E70618028010212404001D2484FFFFAF +:100A8000AC4700000481FFFD244200043C02080042 +:100A9000244207C83C010800AC2256403C02080032 +:100AA000244202303C030800246306203C04080072 +:100AB000248403B43C05080024A506F03C06080085 +:100AC00024C62C9C3C010800AC2256803C02080045 +:100AD000244205303C010800AC2756843C01080044 +:100AE000AC2656943C010800AC23569C3C010800FF +:100AF000AC2456A03C010800AC2556A43C010800DB +:100B0000AC2256A83C010800AC23563C3C0108002E +:100B1000AC2456443C010800AC2056603C0108005F +:100B2000AC2556643C010800AC2056703C0108001E +:100B3000AC27567C3C010800AC2656903C010800CE +:100B4000AC2356980E00056E00000000AF80000C2C +:100B50003C0280008C5300008F8300043C0208009C +:100B60008C420020106200213262000700008821C0 +:100B70002792FF9C3C100800261056E43C02080017 +:100B80008C42002024050001022518040043202483 +:100B90008F820004004310245044000C26310001D1 +:100BA00010800008AF9000248E4300003C028000BB +:100BB000AC4300900E000D4BAE05000C0A0002C1C4 +:100BC00026310001AE00000C263100012E22000269 +:100BD000261000381440FFE9265200043C020800A9 +:100BE0008C420020AF820004326200071040FFD91F +:100BF0003C028000326200011040002D326200028F +:100C00003C0580008CA2010000002021ACA2002045 +:100C10008CA301042C42078110400008ACA300A85B +:100C200094A2010824032000304270001443000302 +:100C30003C02800890420005304400FF0E0001593C +:100C4000000000003C0280009042010B304300FF96 +:100C50002C62001E54400004000310800E00018628 +:100C60000A0002EC00000000005410218C42000039 +:100C70000040F80900000000104000043C02800021 +:100C80008C4301043C026020AC4300143C02080089 +:100C90008C4200343C0440003C03800024420001AC +:100CA000AC6401383C010800AC220034326200021E +:100CB00010400010326200043C1080008E0201409F +:100CC000000020210E000159AE0200200E00038317 +:100CD000000000003C024000AE0201783C02080027 +:100CE0008C420038244200013C010800AC2200384C +:100CF000326200041040FF973C0280003C108000EC +:100D00008E020180000020210E000159AE02002059 +:100D10008E03018024020F00546200073C02800809 +:100D20008E0201883C0300E03042FFFF00431025A3 +:100D30000A000328AE020080344200809042000086 +:100D400024030050304200FF14430007000000005D +:100D50000E000362000000001440000300000000C9 +:100D60000E000971000000003C0208008C42003CAB +:100D70003C0440003C03800024420001AC6401B804 +:100D80003C010800AC22003C0A0002A33C028000A7 +:100D90003C02900034420001008220253C02800089 +:100DA000AC4400203C0380008C6200200440FFFE25 +:100DB0000000000003E00008000000003C0280008A +:100DC000344300010083202503E00008AC440020E8 +:100DD00027BDFFE0AFB10014AFB000100080882144 +:100DE000AFBF00180E00033230B000FF8F83FF94B6 +:100DF000022020219062002502028025A07000259B +:100E00008C7000183C0280000E00033D020280241A +:100E10001600000B8FBF00183C0480008C8201F884 +:100E20000440FFFE348201C024030002AC510000E4 +:100E3000A04300043C021000AC8201F88FBF0018F0 +:100E40008FB100148FB0001003E0000827BD002010 +:100E500027BDFFE83C028000AFBF00103442018094 +:100E6000944300048C4400083063020010600005C5 +:100E7000000028210E00100C000000000A0003787A +:100E8000240500013C02FF000480000700821824B2 +:100E90003C02040014620004240500018F82FF94C8 +:100EA00090420008240500018FBF001000A010210F +:100EB00003E0000827BD00188F82FF982405000179 +:100EC000A040001A3C028000344201400A00034264 +:100ED0008C4400008F85FF9427BDFFE0AFBF001C4E +:100EE000AFB20018AFB10014AFB0001090A2000074 +:100EF000304400FF38830020388200300003182B74 +:100F00000002102B0062182410600003240200501D +:100F1000148200A88FBF001C90A20005304200017F +:100F2000104000A48FBF001C3C02800034420140EE +:100F3000904200082443FFFF2C6200051040009EF1 +:100F40008FB20018000310803C030800246355ACE6 +:100F5000004310218C420000004000080000000007 +:100F60003C028000345101400E0003328E24000008 +:100F70008F92FF948E2200048E50000C1602000205 +:100F800024020001AE42000C0E00033D8E2400003E +:100F90008E220004145000068FBF001C8FB2001870 +:100FA0008FB100148FB000100A000F7827BD002009 +:100FB0008E42000C0A000419000000003C0480006E +:100FC0003482014094A300108C4200043063FFFF80 +:100FD0001443001C0000000024020001A4A2001021 +:100FE0008C8202380441000F3C0380003C02003F29 +:100FF0003448F0003C0760003C06FFC08CE22BBC8C +:1010000000461824004810240002130200031D8229 +:10101000106200583C0280008C8202380440FFF7C6 +:101020003C038000346201408C44000034620200C2 +:10103000AC4400003C021000AC6202380A00043BE1 +:101040008FBF001C94A200100A00041900000000C9 +:10105000240200201482000F3C0280003C03800028 +:1010600094A20012346301408C6300043042FFFFFD +:10107000146200050000000024020001A4A2001276 +:101080000A0004028FBF001C94A200120A00041977 +:1010900000000000345101400E0003328E24000095 +:1010A0008F92FF948E230004964200123050FFFF6F +:1010B0001603000224020001A64200120E00033DA6 +:1010C0008E2400008E220004160200068FBF001C32 +:1010D0008FB200188FB100148FB000100A00037C8B +:1010E00027BD0020964200120A00041900000000EB +:1010F0003C03800094A20014346301408C6300041C +:101100003042FFFF14620008240200018FBF001C60 +:101110008FB200188FB100148FB00010A4A2001479 +:101120000A00146327BD002094A20014144000217B +:101130008FBF001C0A000435000000003C03800043 +:1011400094A20016346301408C6300043042FFFF18 +:101150001462000D240200018FBF001C8FB2001822 +:101160008FB100148FB00010A4A200160A000B1457 +:1011700027BD00209442007824420004A4A200105D +:101180000A00043B8FBF001C94A200162403000138 +:101190003042FFFF144300078FBF001C3C020800D1 +:1011A0008C420070244200013C010800AC22007017 +:1011B0008FBF001C8FB200188FB100148FB00010C9 +:1011C00003E0000827BD002027BDFFD8AFB20018FC +:1011D0008F92FF94AFB10014AFBF0020AFB3001CDB +:1011E000AFB000103C028000345101008C5001006F +:1011F0009242000092230009304400FF2402001FA5 +:10120000106200AB28620020104000192402003850 +:101210002862000A1040000D2402000B286200081A +:101220001040002E8F820024046001042862000216 +:101230001440002A8F820024240200061062002637 +:101240008FBF00200A00055F8FB3001C1062006092 +:101250002862000B144000FA8FBF00202402000E09 +:10126000106200788F8200240A00055F8FB3001C93 +:10127000106200D2286200391040000A2402008067 +:1012800024020036106200E528620037104000C3D7 +:1012900024020035106200D98FBF00200A00055FCC +:1012A0008FB3001C1062002D2862008110400006E0 +:1012B000240200C824020039106200C98FBF002038 +:1012C0000A00055F8FB3001C106200A28FBF0020D0 +:1012D0000A00055F8FB3001C8F8200248C42000C33 +:1012E000104000D78FBF00200E000D8400000000CA +:1012F0003C038000346301008C6200008F85002075 +:10130000946700089466000CACA200008C64000492 +:101310008F82002400063400ACA400049448001E10 +:101320008C62001800073C0000E83825ACA20008D9 +:101330008C62001C24040001ACA2000C9062000A24 +:1013400000C23025ACA60010ACA00014ACA0001860 +:10135000ACA7001C0A00051D8FBF00208F8200244F +:101360008C42000C104000B68FBF00200E000D8490 +:10137000000000008F820024962400089625000CAF +:101380009443001E000422029626000E8F82002045 +:10139000000426000083202500052C003C0300806B +:1013A00000A6282500832025AC400000AC400004A6 +:1013B000AC400008AC40000CAC450010AC40001440 +:1013C000AC400018AC44001C0A00051C24040001B9 +:1013D0009622000C14400018000000009242000504 +:1013E0003042001014400014000000000E000332D0 +:1013F0000200202192420005020020213442001008 +:101400000E00033DA242000592420000240300208A +:10141000304200FF10430089020020218FBF0020CE +:101420008FB3001C8FB200188FB100148FB0001062 +:101430000A00107527BD00280000000D0A00055E97 +:101440008FBF00208C42000C1040007D8FBF002019 +:101450000E000D84000000008E2200048F84002006 +:101460009623000CAC8200003C0280089445002CBE +:101470008F82002400031C0030A5FFFF9446001E4D +:101480003C02400E0065182500C23025AC830004E4 +:10149000AC800008AC80000CAC800010AC80001464 +:1014A000AC800018AC86001C0A00051C2404000156 +:1014B0000E000332020020218F93FF9802002021AA +:1014C0000E00033DA660000C020020210E00034226 +:1014D000240500018F8200248C42000C104000582B +:1014E0008FBF00200E000D84000000009622000C2B +:1014F0008F83002000021400AC700000AC62000476 +:10150000AC6000088E4400388F820024AC64000C6C +:101510008E46003C9445001E3C02401FAC66001005 +:1015200000A228258E62000424040001AC6200148D +:10153000AC600018AC65001C8FBF00208FB3001C8E +:101540008FB200188FB100148FB000100A000DB8D0 +:1015500027BD0028240200201082003A8FB3001C0F +:101560000E000F5E00000000104000358FBF00200D +:101570003C0480008C8201F80440FFFE348201C0EC +:1015800024030002AC500000A04300043C02100001 +:10159000AC8201F80A00055E8FBF00200200202106 +:1015A0008FBF00208FB3001C8FB200188FB10014C2 +:1015B0008FB000100A000EA727BD00289625000C4A +:1015C000020020218FBF00208FB3001C8FB20018B3 +:1015D0008FB100148FB000100A000ECC27BD002878 +:1015E000020020218FB3001C8FB200188FB10014AD +:1015F0008FB000100A000EF727BD00289225000DBD +:10160000020020218FB3001C8FB200188FB100148C +:101610008FB000100A000F4827BD002802002021CB +:101620008FBF00208FB3001C8FB200188FB1001441 +:101630008FB000100A000F1F27BD00288FBF0020A9 +:101640008FB3001C8FB200188FB100148FB0001040 +:1016500003E0000827BD00283C0580008CA202782A +:101660000440FFFE34A2024024030002AC44000008 +:10167000A04300043C02100003E00008ACA2027882 +:10168000A380001803E00008A38000193C03800039 +:101690008C6202780440FFFE8F82001CAC62024024 +:1016A00024020002A06202443C02100003E0000891 +:1016B000AC6202783C02600003E000088C425404F3 +:1016C0009083003024020005008040213063003FF9 +:1016D0000000482114620005000050219082004C57 +:1016E0009483004E304900FF306AFFFFAD00000CCC +:1016F000AD000010AD000024950200148D05001C03 +:101700008D0400183042FFFF004910230002110031 +:10171000000237C3004038210086202300A2102B8E +:101720000082202300A72823AD05001CAD0400186B +:10173000A5090014A5090020A50A001603E0000869 +:10174000A50A002203E000080000000027BDFFD822 +:10175000AFB200183C128008AFB40020AFB3001C39 +:10176000AFB10014AFBF0024AFB00010365101007C +:101770003C0260008C4254049222000C3C1408008D +:10178000929400F7304300FF2402000110620032FF +:101790000080982124020002146200353650008037 +:1017A0000E00143D000000009202004C2403FF8054 +:1017B0003C0480003042007F000211C024420240FD +:1017C0000262102100431824AC8300949245000863 +:1017D0009204004C3042007F3C03800614850007D1 +:1017E000004380212402FFFFA22200112402FFFFF8 +:1017F000A62200120A0005D22402FFFF9602002052 +:10180000A222001196020022A62200128E020024BB +:101810003C048008AE2200143485008090A2004C65 +:1018200034830100A06200108CA2003CAC6200185E +:101830008C820068AC6200F48C820064AC6200F0C0 +:101840008C82006CAC6200F824020001A0A2006847 +:101850000A0005EE3C0480080E001456000000004B +:1018600036420080A04000680A0005EE3C04800873 +:10187000A2000068A20000690A0006293C02800854 +:10188000348300808C62003834850100AC62006CC7 +:1018900024020001A062006990A200D59083000894 +:1018A000305100FF3072007F12320019001111C058 +:1018B00024420240026210212403FF8000431824C6 +:1018C0003C048000AC8300943042007F3C038006DF +:1018D000004380218E02000C1040000D02002021E8 +:1018E0000E00057E0000000026220001305100FF9E +:1018F0009203003C023410260002102B0002102339 +:101900003063007F022288240A0005F8A203003C0D +:101910003C088008350401008C8200E03507008017 +:10192000ACE2003C8C8200E0AD02000090E5004C8F +:10193000908600D590E3004C908400D52402FF806F +:1019400000A228243063007F308400FF00A62825F1 +:101950000064182A1060000230A500FF38A500803E +:10196000A0E5004CA10500093C0280089043000E50 +:10197000344400803C058000A043000A8C8300189A +:101980003C027FFF3442FFFF00621824AC83001842 +:101990008CA201F80440FFFE00000000ACB301C0BF +:1019A0008FBF00248FB400208FB3001C8FB20018AB +:1019B0008FB100148FB0001024020002A0A201C455 +:1019C00027BD00283C02100003E00008ACA201F88B +:1019D00090A2000024420001A0A200003C030800E5 +:1019E0008C6300F4304200FF144300020080302179 +:1019F000A0A0000090A200008F84001C000211C073 +:101A00002442024024830040008220212402FF80DF +:101A1000008220243063007F3C02800A006218218B +:101A20003C028000AC44002403E00008ACC300008A +:101A300094820006908300058C85000C8C86001033 +:101A40008C8700188C88001C8C8400203C010800C6 +:101A5000A42256C63C010800A02356C53C0108003C +:101A6000AC2556CC3C010800AC2656D03C01080001 +:101A7000AC2756D83C010800AC2856DC3C010800D5 +:101A8000AC2456E003E00008000000003C0280089F +:101A9000344201008C4400343C038000346504006F +:101AA000AC6400388C420038AF850028AC62003C42 +:101AB0003C020005AC6200300000000000000000A5 +:101AC00003E00008000000003C020006308400FF34 +:101AD000008220253C028000AC4400300000000061 +:101AE00000000000000000003C0380008C62000049 +:101AF000304200101040FFFD3462040003E0000893 +:101B0000AF82002894C200003C080800950800CA73 +:101B100030E7FFFF0080482101021021A4C200002D +:101B200094C200003042FFFF00E2102B544000013D +:101B3000A4C7000094A200003C0308008C6300CC02 +:101B400024420001A4A2000094A200003042FFFF42 +:101B5000144300073C0280080107102BA4A00000DA +:101B60005440000101003821A4C700003C02800855 +:101B7000344601008CC3002894A200003C0480007D +:101B80003042FFFE000210C000621021AC82003C17 +:101B90008C82003C006218231860000400000000E2 +:101BA0008CC200240A0006BA244200018CC2002420 +:101BB000AC8200383C020050344200103C038000EC +:101BC000AC620030000000000000000000000000D7 +:101BD0008C620000304200201040FFFD0000000039 +:101BE00094A200003C04800030420001000210C0BA +:101BF000004410218C430400AD2300008C420404F7 +:101C0000AD2200043C02002003E00008AC8200305A +:101C100027BDFFE0AFB20018AFB10014AFB00010A5 +:101C2000AFBF001C94C2000000C080213C1208001D +:101C3000965200C624420001A6020000960300004E +:101C400094E2000000E03021144300058FB1003021 +:101C50000E00068F024038210A0006F10000000045 +:101C60008C8300048C82000424420040046100073D +:101C7000AC8200048C8200040440000400000000D8 +:101C80008C82000024420001AC8200009602000019 +:101C90003042FFFF50520001A600000096220000D3 +:101CA00024420001A62200003C02800834420100C8 +:101CB000962300009442003C144300048FBF001C94 +:101CC00024020001A62200008FBF001C8FB2001862 +:101CD0008FB100148FB0001003E0000827BD002072 +:101CE00027BDFFE03C028008AFBF0018344201006E +:101CF0008C4800343C03800034690400AC68003830 +:101D00008C42003830E700FFAF890028AC62003C0D +:101D10003C020005AC620030000000000000000042 +:101D200000000000000000000000000000000000B3 +:101D30008C82000C8C82000C97830016AD22000070 +:101D40008C82001000604021AD2200048C820018BB +:101D5000AD2200088C82001CAD22000C8CA2001465 +:101D6000AD2200108C820020AD220014908200056C +:101D7000304200FF00021200AD2200188CA20018B1 +:101D8000AD22001C8CA2000CAD2200208CA2001001 +:101D9000AD2200248CA2001CAD2200288CA20020C1 +:101DA000AD22002C3402FFFFAD260030AD20003400 +:101DB000506200013408FFFFAD28003850E00011E8 +:101DC0003C0280083C048008348401009482005066 +:101DD0003042FFFFAD22003C9483004494850044D0 +:101DE000240200013063FFFF000318C200641821C1 +:101DF0009064006430A5000700A210040A00075C8C +:101E00000044102534420100AD20003C94430044BE +:101E1000944400443063FFFF000318C2006218219D +:101E200030840007906500642402000100821004E1 +:101E30000002102700451024A0620064000000008A +:101E400000000000000000003C0200063442004098 +:101E50003C038000AC620030000000000000000085 +:101E6000000000008C620000304200101040FFFDB6 +:101E70003C06800834C201503463040034C7014A70 +:101E800034C4013434C5014034C60144AFA200104B +:101E90000E0006D2AF8300288FBF001803E00008B1 +:101EA00027BD00208F8300143C0608008CC600E884 +:101EB0008F82001C30633FFF000319800046102111 +:101EC000004310212403FF80004318243C068000B7 +:101ED000ACC300283042007F3C03800C004330211B +:101EE00090C2000D30A500FF0000382134420010E0 +:101EF000A0C2000D8F8900143C028008344201000A +:101F00009443004400091382304800032402000176 +:101F1000A4C3000E1102000B2902000210400005AC +:101F2000240200021100000C240300010A0007A48F +:101F30000000182111020006000000000A0007A49A +:101F4000000018218CC2002C0A0007A424430001C1 +:101F50008CC20014244300018CC200180043102BD3 +:101F60005040000A240700012402002714A20003A5 +:101F70003C0380080A0007B1240700013463010014 +:101F80009462004C24420001A462004C00091382B8 +:101F9000304300032C620002104000090080282119 +:101FA000146000040000000094C200340A0007C15D +:101FB0003046FFFF8CC600380A0007C10080282188 +:101FC000000030213C040800248456C00A000706A3 +:101FD0000000000027BDFF90AFB60068AFB50064F9 +:101FE000AFB40060AFB3005CAFB20058AFB1005403 +:101FF000AFBF006CAFB000508C9000000080B021EB +:102000003C0208008C4200E8960400328F83001CDA +:102010002414FF8030843FFF0062182100042180D7 +:1020200000641821007410243C13800000A090214B +:1020300090A50000AE620028920400323C02800CA1 +:102040003063007F00628821308400C02402004099 +:10205000148200320000A8218E3500388E2200182C +:102060001440000224020001AE2200189202003C3B +:10207000304200201440000E8F83001C000511C068 +:102080002442024000621821306400783C02008043 +:102090000082202500741824AE630800AE64081086 +:1020A0008E2200188E03000800431021AE22001873 +:1020B0008E22002C8E230018244200010062182B6F +:1020C0001060004300000000924200002442000122 +:1020D000A24200003C0308008C6300F4304200FF81 +:1020E00050430001A2400000924200008F84001C77 +:1020F000000211C024420240248300403063007F6C +:10210000008220213C02800A0094202400621821D1 +:10211000AE6400240A0008D2AEC30000920300326D +:102120002402FFC000431024304200FF1440000589 +:1021300024020001AE220018962200340A00084250 +:102140003055FFFF8E22001424420001AE220018F9 +:102150009202003000021600000216030441001C27 +:10216000000000009602003227A400100080282101 +:10217000A7A20016960200320000302124070001B9 +:102180003042FFFFAF8200140E000706AFA0001C14 +:10219000960200328F83001C3C0408008C8400E807 +:1021A00030423FFF000211800064182100621821B4 +:1021B00000741024AE62002C3063007F3C02800E5D +:1021C000006218219062000D3042007FA062000D75 +:1021D0009222000D304200105040007892420000E0 +:1021E0003C028008344401009482004C8EC30000FD +:1021F0003C130800967300C62442FFFFA482004CE3 +:10220000946200329623000E3054FFFF3070FFFFBF +:102210003C0308008C6300D000701807A7A30038A7 +:102220009482003E3063FFFF3042FFFF14620007DC +:10223000000000008C8200303C038000244200300B +:10224000AC62003C0A00086A8C82002C9482004038 +:102250003042FFFF5462000927A400408C820038FE +:102260003C03800024420030AC62003C8C8200348D +:10227000AC6200380A0008793C03800027A50038CA +:1022800027A60048026038210E00068FA7A000484C +:102290008FA300403C02800024630030AC43003830 +:1022A0008FA30044AC43003C3C0380003C0200058B +:1022B000AC6200303C028008344401009482004249 +:1022C000346304003042FFFF0202102B1440000769 +:1022D000AF8300289482004E9483004202021021B2 +:1022E000004310230A00088F3043FFFF9483004E01 +:1022F00094820042026318210050102300621823C8 +:102300003063FFFF3C028008344401009482003CAB +:102310003042FFFF14430003000000000A00089F42 +:10232000240300019482003C3042FFFF0062102B26 +:10233000144000058F8200289482003C0062102324 +:102340003043FFFF8F820028AC550000AC400004F2 +:10235000AC540008AC43000C3C02000634420010B0 +:102360003C038000AC620030000000000000000070 +:10237000000000008C620000304200101040FFFDA1 +:102380003C04800834840100001018C20064182145 +:102390009065006432020007240600010046100424 +:1023A00000451025A0620064948300429622000E2E +:1023B00050430001A386001892420000244200010D +:1023C000A24200003C0308008C6300F4304200FF8E +:1023D00050430001A2400000924200008F84001C84 +:1023E000000211C0244202402483004000822021C8 +:1023F0002402FF80008220243063007F3C02800A98 +:10240000006218213C028000AC440024AEC30000EE +:102410008FBF006C8FB600688FB500648FB400600A +:102420008FB3005C8FB200588FB100548FB0005052 +:1024300003E0000827BD007027BDFFD8AFB3001C24 +:10244000AFB20018AFB10014AFB00010AFBF0020A2 +:102450000080982100E0802130B1FFFF0E000D8444 +:1024600030D200FF0000000000000000000000006B +:102470008F8200208F830024AC510000AC520004F6 +:10248000AC530008AC40000CAC400010AC40001451 +:10249000AC4000189463001E02038025AC50001C61 +:1024A0000000000000000000000000002404000103 +:1024B0008FBF00208FB3001C8FB200188FB10014A3 +:1024C0008FB000100A000DB827BD002830A5FFFF0F +:1024D0000A0008DC30C600FF3C02800834430100DB +:1024E0009462000E3C080800950800C63046FFFFC5 +:1024F00014C000043402FFFF946500EA0A000929B1 +:102500008F84001C10C20027000000009462004E5F +:102510009464003C3045FFFF00A6102300A6182B52 +:102520003087FFFF106000043044FFFF00C5102318 +:1025300000E210233044FFFF0088102B1040000EF3 +:1025400000E810233C028008344401002403000109 +:1025500034420080A44300162402FFFFA482000E30 +:10256000948500EA8F84001C0000302130A5FFFF15 +:102570000A0009013C0760200044102A10400009AD +:102580003C0280083443008094620016304200010F +:10259000104000043C0280009442007E244200145B +:1025A000A462001603E000080000000027BDFFE061 +:1025B0003C028008AFBF001CAFB0001834420100DD +:1025C000944300429442004C104000193068FFFFD1 +:1025D0009383001824020001146200298FBF001C9D +:1025E0003C06800834D00100000810C200501021C1 +:1025F000904200643103000734C70148304200FFB5 +:10260000006210073042000134C9014E34C4012C6D +:1026100034C5013E1040001634C601420E0006D2F9 +:10262000AFA90010960200420A0009463048FFFF99 +:102630003C028008344401009483004494820042A8 +:102640001043000F8FBF001C94820044A4820042FC +:1026500094820050A482004E8C820038AC820030FC +:1026600094820040A482003E9482004AA4820048E2 +:102670008FBF001C8FB000180A00090427BD00207E +:102680008FB0001803E0000827BD002027BDFFA081 +:10269000AFB1004C3C118000AFBF0058AFB3005445 +:1026A000AFB20050AFB000483626018890C2000398 +:1026B0003044007FA3A400108E32018090C200003D +:1026C0003043007F240200031062003BAF92001CE5 +:1026D00028620004104000062402000424020002C4 +:1026E000106200098FBF00580A000B0F8FB300540F +:1026F0001062004D240200051062014E8FBF005889 +:102700000A000B0F8FB30054000411C002421021C5 +:102710002404FF8024420240004410242643004049 +:10272000AE2200243063007F3C02800A0062182140 +:102730009062003CAFA3003C00441025A062003C26 +:102740008FA3003C9062003C304200401040016C7E +:102750008FBF00583C108008A3800018361001007D +:102760008E0200E08C63003427A4003C27A50010F3 +:10277000004310210E0007C3AE0200E093A2001038 +:102780003C038000A20200D58C6202780440FFFE68 +:102790008F82001CAC62024024020002A06202444C +:1027A0003C021000AC6202780E0009390000000003 +:1027B0000A000B0E8FBF00583C05800890C3000133 +:1027C00090A2000B1443014E8FBF005834A4008028 +:1027D0008C8200189082004C90A200083C0260009D +:1027E0008C4254048C8300183C027FFF3442FFFF6C +:1027F000006218243C0208008C4200B4AC8300182C +:102800003C038000244200013C010800AC2200B4DB +:102810008C6201F80440FFFE8F82001CAC6201C094 +:102820000A000AD6240200023C10800890C300016E +:102830009202000B144301328FBF005827A40018E6 +:1028400036050110240600033C0260008C4254044B +:102850000E000E470000000027A40028360501F0F6 +:102860000E000E47240600038FA200283603010045 +:10287000AE0200648FA2002CAE0200688FA200306E +:10288000AE02006C93A40018906300D52402FF8070 +:102890000082102400431025304900FF3084007F5F +:1028A0003122007F0082102A544000013929008023 +:1028B000000411C0244202402403FF800242102180 +:1028C00000431024AE220094264200403042007F94 +:1028D0003C038006004340218FA3001C2402FFFF1D +:1028E000AFA800403C130800927300F71062003359 +:1028F00093A2001995030014304400FF3063FFFFDA +:102900000064182B106000100000000095040014F3 +:102910008D07001C8D0600183084FFFF0044202323 +:102920000004210000E438210000102100E4202BE5 +:1029300000C2302100C43021AD07001CAD060018D4 +:102940000A000A2F93A20019950400148D07001C99 +:102950008D0600183084FFFF008220230004210030 +:10296000000010210080182100C2302300E4202B39 +:1029700000C4302300E33823AD07001CAD06001867 +:1029800093A200198FA30040A462001497A2001A1A +:10299000A46200168FA2001CAC6200108FA2001C63 +:1029A000AC62000C93A20019A462002097A2001A46 +:1029B000A46200228FA2001CAC6200243C048008A8 +:1029C000348300808C6200388FA20020012088218F +:1029D000AC62003C8FA20020AC82000093A20018E1 +:1029E000A062004C93A20018A0820009A0600068B9 +:1029F00093A20018105100512407FF803229007F54 +:102A0000000911C024420240024210213046007FDA +:102A10003C03800000471024AC6200943C02800616 +:102A200000C2302190C2003CAFA60040000020212F +:102A300000471025A0C2003C8FA80040950200026C +:102A4000950300148D07001C3042FFFF3063FFFF29 +:102A50008D060018004310230002110000E2382107 +:102A600000E2102B00C4302100C23021AD07001C51 +:102A7000AD06001895020002A5020014A50000167C +:102A80008D020008AD0200108D020008AD02000C9E +:102A900095020002A5020020A50000228D02000878 +:102AA000AD0200249102003C304200401040001A68 +:102AB000262200013C108008A3A90038A38000183A +:102AC000361001008E0200E08D03003427A4004080 +:102AD00027A50038004310210E0007C3AE0200E016 +:102AE00093A200383C038000A20200D58C620278D9 +:102AF0000440FFFE8F82001CAC62024024020002F0 +:102B0000A06202443C021000AC6202780E00093957 +:102B100000000000262200013043007F14730004EF +:102B2000004020212403FF8002231024004320269C +:102B300093A200180A000A4B309100FF93A40018DA +:102B40008FA3001C2402FFFF1062000A308900FFDF +:102B500024820001248300013042007F14530005C9 +:102B6000306900FF2403FF800083102400431026F7 +:102B7000304900FF3C028008904200080120882173 +:102B8000305000FF123000193222007F000211C0C5 +:102B900002421021244202402403FF8000431824F3 +:102BA0003C048000AC8300943042007F3C038006EC +:102BB000004310218C43000C004020211060000BCA +:102BC000AFA200400E00057E000000002623000199 +:102BD0002405FF803062007F145300020225202468 +:102BE000008518260A000AAF307100FF3C048008F7 +:102BF000348400808C8300183C027FFF3442FFFF46 +:102C000000621824AC8300183C0380008C6201F839 +:102C10000440FFFE00000000AC7201C0240200026C +:102C2000A06201C43C021000AC6201F80A000B0E65 +:102C30008FBF00583C04800890C300019082000BB5 +:102C40001443002F8FBF0058349000809202000878 +:102C500030420040104000200000000092020008B6 +:102C60000002160000021603044100050240202164 +:102C70000E000ECC240500930A000B0E8FBF0058E7 +:102C80009202000924030018304200FF1443000D93 +:102C900002402021240500390E000E64000030217E +:102CA0000E0003328F84001C8F82FF9424030012D5 +:102CB000A04300090E00033D8F84001C0A000B0E88 +:102CC0008FBF0058240500360E000E64000030212E +:102CD0000A000B0E8FBF00580E0003320240202165 +:102CE000920200058F84001C344200200E00033D38 +:102CF000A20200050E0010758F84001C8FBF0058C3 +:102D00008FB300548FB200508FB1004C8FB0004889 +:102D100003E0000827BD00603C0280083445010044 +:102D20003C0280008C42014094A3000E0000302140 +:102D300000402021AF82001C3063FFFF3402FFFF00 +:102D4000106200063C0760202402FFFFA4A2000ED0 +:102D500094A500EA0A00090130A5FFFF03E000087E +:102D60000000000027BDFFC83C0280003C06800830 +:102D7000AFB5002CAFB1001CAFBF0030AFB400281E +:102D8000AFB30024AFB20020AFB00018345101003F +:102D900034C501008C4301008E2200148CA400E491 +:102DA0000000A821AF83001C0044102318400052EB +:102DB000A38000188E22001400005021ACA200E471 +:102DC00090C3000890A200D53073007FA3A200102A +:102DD0008CB200E08CB400E4304200FF1053003BA2 +:102DE00093A200108F83001C2407FF80000211C0F3 +:102DF0000062102124420240246300400047102456 +:102E00003063007F3C0980003C08800A006818217C +:102E1000AD2200248C62003427A4001427A50010E2 +:102E2000024280210290102304400028AFA3001426 +:102E30009062003C00E21024304200FF1440001970 +:102E4000020090219062003C34420040A062003CAD +:102E50008F86001C93A3001024C200403042007FE4 +:102E6000004828213C0208008C4200F42463000141 +:102E7000306400FF14820002A3A30010A3A000107E +:102E800093A20010AFA50014000211C0244202401A +:102E900000C2102100471024AD2200240A000B4577 +:102EA00093A200100E0007C3000000003C0280083F +:102EB00034420100AC5000E093A30010240A00014A +:102EC000A04300D50A000B4593A200102402000184 +:102ED000154200093C0380008C6202780440FFFE2A +:102EE0008F82001CAC62024024020002A0620244F5 +:102EF0003C021000AC6202789222000B2403000214 +:102F0000304200FF144300720000000096220008C7 +:102F1000304300FF24020082146200402402008437 +:102F20003C028000344901008D22000C95230006EC +:102F3000000216023063FFFF3045003F24020027E5 +:102F400010A2000FAF83001428A200281040000830 +:102F5000240200312402002110A2000924020025CD +:102F600010A20007938200190A000BBD00000000A8 +:102F700010A20007938200190A000BBD0000000098 +:102F80000E000777012020210A000C3D0000000000 +:102F90003C0380008C6202780440FFFE8F82001C9C +:102FA000AC62024024020002A06202443C02100013 +:102FB000AC6202780A000C3D000000009523000678 +:102FC000912400058D25000C8D2600108D270018FA +:102FD0008D28001C8D290020244200013C0108009E +:102FE000A42356C63C010800A02456C53C01080095 +:102FF000AC2556CC3C010800AC2656D03C0108005C +:10300000AC2756D83C010800AC2856DC3C0108002F +:10301000AC2956E00A000C3DA38200191462000A94 +:10302000240200813C02800834420100944500EAF9 +:10303000922600058F84001C30A5FFFF30C600FFDC +:103040000A000BFE3C0760211462005C00000000D7 +:103050009222000A304300FF306200201040000737 +:10306000306200403C02800834420100944500EA8E +:103070008F84001C0A000BFC24060040104000074F +:10308000000316003C02800834420100944500EA27 +:103090008F84001C0A000BFC24060041000216036A +:1030A000044100463C02800834420100944500EA95 +:1030B0008F84001C2406004230A5FFFF3C076019E6 +:1030C0000E000901000000000A000C3D0000000095 +:1030D0009222000B24040016304200FF1044000628 +:1030E0003C0680009222000B24030017304200FFB0 +:1030F000144300320000000034C5010090A2000B10 +:10310000304200FF1444000B000080218CA20020FC +:103110008CA400202403FF800043102400021140EF +:103120003084007F004410253C032000004310251C +:10313000ACC2083094A2000800021400000214037C +:10314000044200012410000194A2000830420080D3 +:103150005040001A0200A82194A20008304220002A +:10316000504000160200A8218CA300183C021C2D20 +:10317000344219ED106200110200A8213C0208003F +:103180008C4200D4104000053C0280082403000457 +:1031900034420100A04300FC3C028008344201009C +:1031A000944500EA8F84001C2406000630A5FFFF2A +:1031B0000E0009013C0760210200A8210E00093918 +:1031C000000000009222000A304200081040000473 +:1031D00002A010210E0013790000000002A01021AF +:1031E0008FBF00308FB5002C8FB400288FB3002420 +:1031F0008FB200208FB1001C8FB0001803E00008D0 +:1032000027BD00382402FF80008220243C02900069 +:1032100034420007008220253C028000AC4400209C +:103220003C0380008C6200200440FFFE0000000090 +:1032300003E00008000000003C0380002402FF803F +:10324000008220243462000700822025AC64002024 +:103250008C6200200440FFFE0000000003E0000834 +:103260000000000027BDFFD8AFB3001CAFB10014B1 +:10327000AFB00010AFBF0020AFB200183C1180000B +:103280003C0280088E32002034530100AE2400201E +:10329000966300EA000514003C074000004738250B +:1032A00000A08021000030210E0009013065FFFFE1 +:1032B000240200A1160200022402FFFFA2620009FC +:1032C000AE3200208FBF00208FB3001C8FB20018D9 +:1032D0008FB100148FB0001003E0000827BD002854 +:1032E0003C0280082403000527BDFFE834420100AA +:1032F000A04300FCAFBF00103C0280008C420100E4 +:10330000240500A1004020210E000C67AF82001CA4 +:103310003C0380008C6202780440FFFE8F82001C18 +:103320008FBF001027BD0018AC62024024020002CB +:10333000A06202443C021000AC62027803E0000884 +:103340000000000027BDFFE83C068000AFBF001072 +:1033500034C7010094E20008304400FF3883008243 +:10336000388200842C6300012C4200010062182581 +:103370001060002D24020083938200195040003B0E +:103380008FBF00103C020800904256CC8CC4010054 +:103390003C06080094C656C63045003F38A30032AC +:1033A00038A2003F2C6300012C4200010062182566 +:1033B000AF84001CAF860014A380001914600007BE +:1033C00000E020212402002014A2001200000000CE +:1033D0003402FFFF14C2000F00000000240200208E +:1033E00014A2000500E028218CE300142402FFFF52 +:1033F0005062000B8FBF00103C040800248456C0AC +:10340000000030210E000706240700010A000CD638 +:103410008FBF00100E000777000000008FBF001064 +:103420000A00093927BD001814820004240200850F +:103430008CC501040A000CE1000020211482000662 +:103440002482FF808CC50104240440008FBF00103B +:103450000A00016727BD0018304200FF2C4200021D +:1034600010400004240200228FBF00100A000B2726 +:1034700027BD0018148200048F8200248FBF001023 +:103480000A000C8627BD00188C42000C1040001E5C +:1034900000E0282190E300092402001814620003D0 +:1034A000240200160A000CFC240300081462000722 +:1034B00024020017240300123C02800834420080DA +:1034C000A04300090A000D0994A7000854620007F0 +:1034D00094A700088F82FF942404FFFE9043000508 +:1034E00000641824A043000594A7000890A6001BC0 +:1034F0008CA4000094A500068FBF001000073C00BC +:103500000A0008DC27BD00188FBF001003E0000888 +:1035100027BD00188F8500243C04800094A2002A57 +:103520008CA30034000230C02402FFF000C210243B +:1035300000621821AC83003C8CA200303C03800068 +:10354000AC8200383C02005034420010AC620030C3 +:103550000000000000000000000000008C6200007D +:10356000304200201040FFFD30C20008104000062D +:103570003C0280008C620408ACA200208C62040C27 +:103580000A000D34ACA200248C430400ACA300203C +:103590008C420404ACA200243C0300203C028000C6 +:1035A000AC4300303C0480008C8200300043102487 +:1035B0001440FFFD8F8600243C020040AC820030A6 +:1035C00094C3002A94C2002894C4002C94C5002EF1 +:1035D00024630001004410213064FFFFA4C20028CE +:1035E00014850002A4C3002AA4C0002A03E0000836 +:1035F000000000008F84002427BDFFE83C05800404 +:1036000024840010AFBF00100E000E472406000AED +:103610008F840024948200129483002E3042000F85 +:10362000244200030043180424027FFF0043102BB0 +:1036300010400002AC8300000000000D0E000D13CE +:10364000000000008F8300248FBF001027BD0018EA +:10365000946200149463001A3042000F00021500B7 +:10366000006218253C02800003E00008AC4300A083 +:103670008F8300243C028004944400069462001A64 +:103680008C650000A4640016004410233042FFFF44 +:103690000045102B03E00008384200018F8400240D +:1036A0003C0780049486001A8C85000094E2000692 +:1036B000A482001694E3000600C310233042FFFFEB +:1036C0000045102B384200011440FFF8A483001677 +:1036D00003E00008000000008F8400243C02800406 +:1036E000944200069483001A8C850000A482001680 +:1036F000006210233042FFFF0045102B38420001CA +:103700005040000D8F850024006030213C0780046C +:1037100094E20006A482001694E3000600C310237E +:103720003042FFFF0045102B384200011440FFF8E3 +:10373000A48300168F8500243C03800034620400BB +:103740008CA40020AF820020AC6400388CA200243E +:10375000AC62003C3C020005AC62003003E00008B3 +:10376000ACA000048F8400243C0300068C8200047B +:1037700000021140004310253C038000AC62003081 +:103780000000000000000000000000008C6200004B +:10379000304200101040FFFD34620400AC80000491 +:1037A00003E00008AF8200208F86002427BDFFE0E1 +:1037B000AFB10014AFB00010AFBF00188CC300044D +:1037C0008CC500248F820020309000FF94C4001A22 +:1037D00024630001244200202484000124A7002047 +:1037E000ACC30004AF820020A4C4001AACC70024FC +:1037F00004A100060000882104E2000594C2001A1A +:103800008CC2002024420001ACC2002094C2001AE5 +:1038100094C300282E040001004310262C4200010E +:10382000004410245040000594C2001A24020001F4 +:10383000ACC2000894C2001A94C300280010202BC8 +:10384000004310262C4200010044102514400007BC +:10385000000000008CC20008144000042402001084 +:103860008CC300041462000F8F8500240E000DA786 +:10387000241100018F820024944300289442001AEE +:1038800014430003000000000E000D1300000000B0 +:10389000160000048F8500240E000D840000000037 +:1038A0008F85002494A2001E94A4001C24420001D1 +:1038B0003043FFFF14640002A4A2001EA4A0001E57 +:1038C0001200000A3C02800494A2001494A3001A7F +:1038D0003042000F00021500006218253C028000F3 +:1038E000AC4300A00A000E1EACA0000894420006E3 +:1038F00094A3001A8CA40000A4A200160062102356 +:103900003042FFFF0044102B384200011040000DF0 +:1039100002201021006030213C07800494E2000660 +:10392000A4A2001694E3000600C310233042FFFF58 +:103930000044102B384200011440FFF8A4A30016E5 +:10394000022010218FBF00188FB100148FB000101B +:1039500003E0000827BD002003E00008000000008D +:103960008F82002C3C03000600021140004310250A +:103970003C038000AC62003000000000000000004A +:10398000000000008C620000304200101040FFFD7B +:1039900034620400AF82002803E00008AF80002CEE +:1039A00003E000080000102103E000080000000010 +:1039B0003084FFFF30A5FFFF0000182110800007B2 +:1039C000000000003082000110400002000420428C +:1039D000006518210A000E3D0005284003E000089C +:1039E0000060102110C0000624C6FFFF8CA200005A +:1039F00024A50004AC8200000A000E4724840004C1 +:103A000003E000080000000010A0000824A3FFFF4E +:103A1000AC86000000000000000000002402FFFF50 +:103A20002463FFFF1462FFFA2484000403E000080B +:103A3000000000003C0280083442008024030001A2 +:103A4000AC43000CA4430010A4430012A443001490 +:103A500003E00008A44300168F82002427BDFFD88E +:103A6000AFB3001CAFB20018AFB10014AFB000107C +:103A7000AFBF00208C47000C248200802409FF8007 +:103A80003C08800E3043007F008080213C0A80008B +:103A9000004920240068182130B100FF30D200FF17 +:103AA00010E000290000982126020100AD44002CFE +:103AB000004928243042007F004820219062000005 +:103AC00024030050304200FF1443000400000000B3 +:103AD000AD45002C948200EA3053FFFF0E000D84A8 +:103AE000000000008F8200248F83002000112C0032 +:103AF0009442001E001224003484000100A22825F4 +:103B00003C02400000A22825AC7000008FBF0020BE +:103B1000AC6000048FB20018AC7300088FB10014C1 +:103B2000AC60000C8FB3001CAC6400108FB00010B0 +:103B3000AC60001424040001AC60001827BD00280C +:103B40000A000DB8AC65001C8FBF00208FB3001CAD +:103B50008FB200188FB100148FB0001003E000087E +:103B600027BD00283C06800034C201009043000FAE +:103B7000240200101062000E2865001110A000073A +:103B800024020012240200082405003A10620006F4 +:103B90000000302103E0000800000000240500358B +:103BA0001462FFFC000030210A000E6400000000D7 +:103BB0008CC200748F83FF9424420FA003E000089E +:103BC000AC62000C27BDFFE8AFBF00100E0003423F +:103BD000240500013C0480088FBF0010240200016E +:103BE00034830080A462001227BD00182402000163 +:103BF00003E00008A080001A27BDFFE0AFB2001864 +:103C0000AFB10014AFB00010AFBF001C30B2FFFF67 +:103C10000E000332008088213C028008345000806E +:103C20009202000924030004304200FF1443000CF8 +:103C30003C028008124000082402000A0E000E5BBD +:103C400000000000920200052403FFFE0043102440 +:103C5000A202000524020012A20200093C02800810 +:103C600034420080022020210E00033DA0400027A6 +:103C700016400003022020210E000EBF00000000AD +:103C800002202021324600FF8FBF001C8FB2001897 +:103C90008FB100148FB00010240500380A000E64A4 +:103CA00027BD002027BDFFE0AFBF001CAFB200184A +:103CB000AFB10014AFB000100E00033200808021BD +:103CC0000E000E5B000000003C02800834450080BE +:103CD00090A2000924120018305100FF1232000394 +:103CE0000200202124020012A0A2000990A20005D7 +:103CF0002403FFFE004310240E00033DA0A2000594 +:103D00000200202124050020163200070000302187 +:103D10008FBF001C8FB200188FB100148FB000103D +:103D20000A00034227BD00208FBF001C8FB200187D +:103D30008FB100148FB00010240500390A000E6402 +:103D400027BD002027BDFFE83C028000AFB0001077 +:103D5000AFBF0014344201009442000C2405003629 +:103D60000080802114400012304600FF0E00033214 +:103D7000000000003C02800834420080240300124E +:103D8000A043000990430005346300100E000E5B51 +:103D9000A04300050E00033D020020210200202167 +:103DA0000E000342240500200A000F3C0000000022 +:103DB0000E000E64000000000E00033202002021FD +:103DC0003C0280089043001B2405FF9F0200202135 +:103DD000006518248FBF00148FB00010A043001B93 +:103DE0000A00033D27BD001827BDFFE0AFBF001844 +:103DF000AFB10014AFB0001030B100FF0E000332BD +:103E0000008080213C02800824030012344200809C +:103E10000E000E5BA04300090E00033D02002021AE +:103E200002002021022030218FBF00188FB1001422 +:103E30008FB00010240500350A000E6427BD002055 +:103E40003C0480089083000E9082000A1443000B0B +:103E5000000028218F82FF942403005024050001D4 +:103E600090420000304200FF1443000400000000B4 +:103E70009082000E24420001A082000E03E00008A0 +:103E800000A010213C0380008C6201F80440FFFE7A +:103E900024020002AC6401C0A06201C43C02100014 +:103EA00003E00008AC6201F827BDFFE0AFB20018E4 +:103EB0003C128008AFB10014AFBF001CAFB00010BF +:103EC00036510080922200092403000A304200FF8C +:103ED0001443003E000000008E4300048E22003890 +:103EE000506200808FBF001C92220000240300500B +:103EF000304200FF144300253C0280008C42014008 +:103F00008E4300043642010002202821AC43001CED +:103F10009622005C8E2300383042FFFF00021040E2 +:103F200000621821AE23001C8E4300048E2400384A +:103F30009622005C006418233042FFFF0003184300 +:103F4000000210400043102A10400006000000004C +:103F50008E4200048E230038004310230A000FAA6B +:103F6000000220439622005C3042FFFF0002204006 +:103F70003C0280083443010034420080ACA4002C91 +:103F8000A040002424020001A062000C0E000F5E7D +:103F900000000000104000538FBF001C3C02800056 +:103FA0008C4401403C0380008C6201F80440FFFE19 +:103FB00024020002AC6401C0A06201C43C021000F3 +:103FC000AC6201F80A0010078FBF001C92220009A2 +:103FD00024030010304200FF144300043C02800020 +:103FE0008C4401400A000FEE0000282192220009B3 +:103FF00024030016304200FF14430006240200147C +:10400000A22200093C0280008C4401400A001001F9 +:104010008FBF001C8E2200388E23003C00431023EB +:10402000044100308FBF001C92220027244200016F +:10403000A2220027922200272C42000414400016DE +:104040003C1080009222000924030004304200FF4B +:10405000144300093C0280008C4401408FBF001CC7 +:104060008FB200188FB100148FB000102405009398 +:104070000A000ECC27BD00208C440140240500938B +:104080008FBF001C8FB200188FB100148FB00010CA +:104090000A000F4827BD00208E0401400E000332A5 +:1040A000000000008E4200042442FFFFAE420004E4 +:1040B0008E22003C2442FFFFAE22003C0E00033D56 +:1040C0008E0401408E0401408FBF001C8FB2001887 +:1040D0008FB100148FB00010240500040A000342C1 +:1040E00027BD00208FB200188FB100148FB00010D0 +:1040F00003E0000827BD00203C0680008CC2018838 +:104100003C038008346500809063000E00021402B6 +:10411000304400FF306300FF1464000E3C0280084E +:1041200090A20026304200FF104400098F82FF94C5 +:10413000A0A400262403005090420000304200FF5B +:1041400014430006000000000A0005A18CC4018091 +:104150003C02800834420080A044002603E00008AE +:104160000000000027BDFFE030E700FFAFB20018FD +:10417000AFBF001CAFB10014AFB0001000809021A1 +:1041800014E0000630C600FF000000000000000D33 +:10419000000000000A001060240001163C038008A3 +:1041A0009062000E304200FF14460023346200800B +:1041B00090420026304200FF1446001F000000001D +:1041C0009062000F304200FF1446001B0000000008 +:1041D0009062000A304200FF144600038F90FF9463 +:1041E0000000000D8F90FF948F82FF983C1180009B +:1041F000AE05003CAC450000A066000A0E0003328C +:104200008E240100A20000240E00033D8E24010034 +:104210003C0380008C6201F80440FFFE240200028F +:10422000AC7201C0A06201C43C021000AC6201F893 +:104230000A0010618FBF001C000000000000000D8C +:10424000000000002400013F8FBF001C8FB2001847 +:104250008FB100148FB0001003E0000827BD0020CC +:104260008F83FF943C0280008C44010034420100A3 +:104270008C65003C9046001B0A00102724070001B3 +:104280003C0280089043000E9042000A0043102632 +:10429000304200FF03E000080002102B27BDFFE0C2 +:1042A0003C028008AFB10014AFB00010AFBF0018DF +:1042B0003450008092020005240300303042003068 +:1042C00014430085008088218F8200248C42000CDA +:1042D000104000828FBF00180E000D840000000007 +:1042E0008F860020ACD100009202000892030009E2 +:1042F000304200FF00021200306300FF004310252F +:10430000ACC200049202004D000216000002160327 +:1043100004410005000000003C0308008C630048D5 +:104320000A00109F3C1080089202000830420040B2 +:10433000144000030000182192020027304300FFC0 +:104340003C108008361100809222004D00031E00B0 +:10435000304200FF0002140000621825ACC30008C0 +:104360008E2400308F820024ACC4000C8E250034D3 +:104370009443001E3C02C00BACC50010006218251F +:104380008E22003800002021ACC200148E22003C96 +:10439000ACC200180E000DB8ACC3001C8E020004A5 +:1043A0008F8400203C058000AC8200008E2200201B +:1043B000AC8200048E22001CAC8200088E220058C1 +:1043C0008CA3007400431021AC82000C8E22002CC0 +:1043D000AC8200108E2200408E23004400021400A4 +:1043E00000431025AC8200149222004D240300806B +:1043F000304200FF1443000400000000AC800018AD +:104400000A0010E38F8200248E23000C2402000196 +:104410001062000E2402FFFF92220008304200408A +:104420001440000A2402FFFF8E23000C8CA20074AB +:10443000006218233C0208000062102414400002AD +:10444000000028210060282100051043AC820018DC +:104450008F820024000020219443001E3C02C00CE7 +:10446000006218258F8200200E000DB8AC43001C9E +:104470003C038008346201008C4200008F850020DC +:10448000346300808FBF0018ACA20000ACA0000411 +:104490008C6400488F8200248FB10014ACA4000803 +:1044A000ACA0000CACA00010906300059446001E68 +:1044B0003C02400D00031E0000C23025ACA30014D6 +:1044C0008FB00010ACA0001824040001ACA6001CA2 +:1044D0000A000DB827BD00208FBF00188FB100144F +:1044E0008FB0001003E0000827BD00203C028000D0 +:1044F0009443007C3C02800834460100308400FF75 +:104500003065FFFF2402000524A34650A0C4000C20 +:104510005482000C3065FFFF90C2000D2C42000752 +:104520001040000724A30A0090C3000D24020014C9 +:104530000062100400A210210A00111F3045FFFF85 +:104540003065FFFF3C0280083442008003E0000831 +:10455000A44500143C03800834680080AD05003891 +:10456000346701008CE2001C308400FF00A210239D +:104570001840000330C600FF24A2FFFCACE2001C80 +:1045800030820001504000083C0380088D02003C4E +:1045900000A2102304410012240400058C620004D0 +:1045A00010A2000F3C0380088C62000414A2001EBD +:1045B000000000003C0208008C4200D8304200207D +:1045C000104000093C0280083462008090630008BB +:1045D0009042004C144300043C0280082404000470 +:1045E0000A00110900000000344300803442010039 +:1045F000A040000C24020001A462001410C0000AB4 +:104600003C0280008C4401003C0380008C6201F875 +:104610000440FFFE24020002AC6401C0A06201C499 +:104620003C021000AC6201F803E00008000000004A +:1046300027BDFFE800A61823AFBF00101860008058 +:10464000308800FF3C02800834470080A0E000244E +:1046500034440100A0E000278C82001C00A210233B +:1046600004400056000000008CE2003C94E3005C33 +:104670008CE4002C004530233063FFFF00C3182179 +:104680000083202B1080000400E018218CE2002C15 +:104690000A00117800A2102194E2005C3042FFFF72 +:1046A00000C2102100A21021AC62001C3C02800854 +:1046B000344400809482005C8C83001C3042FFFFF5 +:1046C0000002104000A210210043102B10400004F3 +:1046D000000000008C82001C0A00118B3C06800840 +:1046E0009482005C3042FFFF0002104000A21021C3 +:1046F0003C06800834C3010034C70080AC82001C33 +:10470000A060000CACE500388C62001C00A21023F5 +:104710001840000224A2FFFCAC62001C3102000120 +:10472000104000083C0380088CE2003C00A21023EB +:1047300004410012240400058CC2000410A20010E1 +:104740008FBF00108C62000414A2004F8FBF0010B6 +:104750003C0208008C4200D8304200201040000A81 +:104760003C02800834620080906300089042004C54 +:10477000144300053C028008240400048FBF00108D +:104780000A00110927BD001834430080344201009B +:10479000A040000C24020001A46200143C0280002E +:1047A0008C4401003C0380008C6201F80440FFFE51 +:1047B000240200020A0011D8000000008CE2001C54 +:1047C000004610230043102B54400001ACE5001CB0 +:1047D00094E2005C3042FFFF0062102B144000079F +:1047E0002402000294E2005C8CE3001C3042FFFFD4 +:1047F00000621821ACE3001C24020002ACE5003882 +:104800000E000F5EA082000C1040001F8FBF001032 +:104810003C0280008C4401003C0380008C6201F863 +:104820000440FFFE24020002AC6401C0A06201C487 +:104830003C021000AC6201F80A0011F08FBF0010BA +:1048400031020010104000108FBF00103C028008A1 +:10485000344500808CA3001C94A2005C00661823E1 +:104860003042FFFF006218213C023FFF3444FFFF4B +:104870000083102B544000010080182100C3102138 +:10488000ACA2001C8FBF001003E0000827BD001879 +:1048900027BDFFE800C0402100A63023AFBF0010B5 +:1048A00018C00026308A00FF3C028008344900808E +:1048B0008D24001C8D23002C008820230064182BDD +:1048C0001060000F344701008CE2002000461021E8 +:1048D000ACE200208CE200200044102B1440000BBE +:1048E0003C023FFF8CE2002000441023ACE2002099 +:1048F0009522005C3042FFFF0A0012100082202146 +:10490000ACE00020008620213C023FFF3443FFFF43 +:104910000064102B54400001006020213C028008FC +:104920003442008000851821AC43001CA0400024C4 +:10493000A04000270A0012623C03800831420010A8 +:10494000104000433C0380083C06800834C40080CB +:104950008C82003C004810235840003E34660080A2 +:104960009082002424420001A0820024908200242E +:104970003C0308008C630024304200FF0043102BEE +:10498000144000688FBF001034C201008C42001C2C +:1049900000A2102318400063000000008CC3000434 +:1049A0009482005C006818233042FFFF0003184324 +:1049B000000210400043102A1040000500000000D3 +:1049C0008CC20004004810230A0012450002104364 +:1049D0009482005C3042FFFF000210403C068008D9 +:1049E000AC82002C34C5008094A2005C8CA4002C06 +:1049F00094A3005C3042FFFF00021040008220219F +:104A00003063FFFF0083202101041021ACA2001CB1 +:104A10008CC2000434C60100ACC2001C2402000297 +:104A20000E000F5EA0C2000C1040003E8FBF0010B1 +:104A30003C0280008C4401003C0380008C6201F841 +:104A40000440FFFE240200020A001292000000004F +:104A500034660080ACC50038346401008C82001CD0 +:104A600000A210231840000224A2FFFCAC82001C0C +:104A7000314200015040000A3C0380088CC2003CD7 +:104A800000A2102304430014240400058C620004D7 +:104A900014A200033C0380080A00128424040005C9 +:104AA0008C62000414A2001F8FBF00103C0208009B +:104AB0008C4200D8304200201040000A3C0280089E +:104AC00034620080906300089042004C144300055B +:104AD0003C028008240400048FBF00100A00110962 +:104AE00027BD00183443008034420100A040000C70 +:104AF00024020001A46200143C0280008C440100E6 +:104B00003C0380008C6201F80440FFFE2402000296 +:104B1000AC6401C0A06201C43C021000AC6201F8A8 +:104B20008FBF001003E0000827BD001827BDFFE875 +:104B30003C0A8008AFBF0010354900808D22003C40 +:104B400000C04021308400FF004610231840009D23 +:104B500030E700FF354701002402000100A63023A2 +:104B6000A0E0000CA0E0000DA522001418C0002455 +:104B7000308200108D23001C8D22002C0068182329 +:104B80000043102B1040000F000000008CE20020BA +:104B900000461021ACE200208CE200200043102BE4 +:104BA0001440000B3C023FFF8CE200200043102326 +:104BB000ACE200209522005C3042FFFF0A0012C1E7 +:104BC00000621821ACE00020006618213C023FFF83 +:104BD0003446FFFF00C3102B5440000100C01821D1 +:104BE0003C0280083442008000651821AC43001C60 +:104BF000A0400024A04000270A00130F3C038008B7 +:104C0000104000403C0380088D22003C00481023E7 +:104C10005840003D34670080912200242442000166 +:104C2000A1220024912200243C0308008C6300246C +:104C3000304200FF0043102B1440009A8FBF001039 +:104C40008CE2001C00A21023184000960000000017 +:104C50008D4300049522005C006818233042FFFF5A +:104C600000031843000210400043102A10400005C2 +:104C7000012020218D420004004810230A0012F276 +:104C8000000210439522005C3042FFFF00021040FA +:104C90003C068008AC82002C34C5008094A2005CE5 +:104CA0008CA4002C94A3005C3042FFFF0002104053 +:104CB000008220213063FFFF0083182101031021AF +:104CC000ACA2001C8CC2000434C60100ACC2001CA3 +:104CD000240200020E000F5EA0C2000C1040007102 +:104CE0008FBF00103C0280008C4401003C03800018 +:104CF0008C6201F80440FFFE240200020A0013390E +:104D00000000000034670080ACE500383466010024 +:104D10008CC2001C00A210231840000224A2FFFC39 +:104D2000ACC2001C30820001504000083C038008E7 +:104D30008CE2003C00A2102304430051240400052F +:104D40008C62000410A2003E3C0380088C620004C8 +:104D500054A200548FBF00103C0208008C4200D8BF +:104D600030420020104000063C028008346200807F +:104D7000906300089042004C104300403C028008C1 +:104D80003443008034420100A040000C24020001A2 +:104D9000A46200143C0280008C4401003C038000AB +:104DA0008C6201F80440FFFE24020002AC6401C0E2 +:104DB000A06201C43C021000AC6201F80A00137743 +:104DC0008FBF001024020005A120002714E2000A72 +:104DD0003C038008354301009062000D2C42000620 +:104DE000504000053C0380089062000D2442000101 +:104DF000A062000D3C03800834670080ACE50038F9 +:104E0000346601008CC2001C00A21023184000026E +:104E100024A2FFFCACC2001C308200015040000AFA +:104E20003C0380088CE2003C00A2102304410014E3 +:104E3000240400058C62000414A200033C038008D3 +:104E40000A00136E240400058C62000414A20015ED +:104E50008FBF00103C0208008C4200D83042002076 +:104E60001040000A3C028008346200809063000811 +:104E70009042004C144300053C02800824040004C6 +:104E80008FBF00100A00110927BD001834430080AD +:104E900034420100A040000C24020001A46200146E +:104EA0008FBF001003E0000827BD00183C0B8008EE +:104EB00027BDFFE83C028000AFBF00103442010074 +:104EC000356A00809044000A356901008C45001461 +:104ED0008D4800389123000C308400FF0105102319 +:104EE0001C4000B3306700FF2CE20006504000B1C8 +:104EF0008FBF00102402000100E2300430C2000322 +:104F00005440000800A8302330C2000C144000A117 +:104F100030C20030144000A38FBF00100A00143BC1 +:104F20000000000018C00024308200108D43001CD7 +:104F30008D42002C006818230043102B1040000FF6 +:104F4000000000008D22002000461021AD2200202C +:104F50008D2200200043102B1440000B3C023FFF29 +:104F60008D22002000431023AD2200209542005CDA +:104F70003042FFFF0A0013AF00621821AD2000206D +:104F8000006618213C023FFF3446FFFF00C3102B90 +:104F90005440000100C018213C02800834420080C7 +:104FA00000651821AC43001CA0400024A04000274D +:104FB0000A0013FD3C038008104000403C038008B9 +:104FC0008D42003C004810231840003D34670080AB +:104FD0009142002424420001A14200249142002475 +:104FE0003C0308008C630024304200FF0043102B78 +:104FF000144000708FBF00108D22001C00A21023EF +:105000001840006C000000008D6300049542005CB5 +:10501000006818233042FFFF0003184300021040CD +:105020000043102A10400005014020218D62000439 +:10503000004810230A0013E0000210439542005C70 +:105040003042FFFF000210403C068008AC82002C7A +:1050500034C5008094A2005C8CA4002C94A3005C56 +:105060003042FFFF00021040008220213063FFFF2A +:105070000083182101031021ACA2001C8CC2000483 +:1050800034C60100ACC2001C240200020E000F5EF8 +:10509000A0C2000C104000478FBF00103C028000EF +:1050A0008C4401003C0380008C6201F80440FFFE48 +:1050B000240200020A00142D000000003467008062 +:1050C000ACE50038346601008CC2001C00A210233D +:1050D0001840000224A2FFFCACC2001C3082000178 +:1050E0005040000A3C0380088CE2003C00A21023E0 +:1050F00004430014240400058C62000414A200037D +:105100003C0380080A00141F240400058C6200047C +:1051100014A200288FBF00103C0208008C4200D867 +:10512000304200201040000A3C02800834620080B7 +:10513000906300089042004C144300053C02800834 +:10514000240400048FBF00100A00110927BD0018B5 +:105150003443008034420100A040000C24020001CE +:10516000A46200143C0280008C4401003C038000D7 +:105170008C6201F80440FFFE24020002AC6401C00E +:10518000A06201C43C021000AC6201F80A00143BAA +:105190008FBF00108FBF0010010030210A00115A8C +:1051A00027BD0018010030210A00129927BD001800 +:1051B0008FBF001003E0000827BD00183C038008E3 +:1051C0003464010024020003A082000C8C620004FD +:1051D00003E00008AC82001C3C05800834A300807A +:1051E0009062002734A501002406004324420001F8 +:1051F000A0620027906300273C0208008C42004810 +:10520000306300FF146200043C07602194A500EAAB +:105210000A00090130A5FFFF03E0000800000000BC +:1052200027BDFFE8AFBF00103C0280000E00144411 +:105230008C4401803C02800834430100A060000CD3 +:105240008C4200048FBF001027BD001803E0000847 +:10525000AC62001C27BDFFE03C028008AFBF001815 +:10526000AFB10014AFB000103445008034460100E7 +:105270003C0880008D09014090C3000C8CA4003CC8 +:105280008CA200381482003B306700FF9502007C3E +:1052900090A30027146000093045FFFF2402000599 +:1052A00054E200083C04800890C2000D2442000132 +:1052B000A0C2000D0A00147F3C048008A0C0000DAD +:1052C0003C048008348201009042000C2403000555 +:1052D000304200FF1443000A24A205DC348300801E +:1052E000906200272C4200075040000524A20A00CB +:1052F00090630027240200140062100400A2102111 +:105300003C108008361000803045FFFF012020212E +:105310000E001444A60500149602005C8E030038AB +:105320003C1180003042FFFF000210400062182153 +:10533000AE03001C0E0003328E24014092020025B1 +:1053400034420040A20200250E00033D8E2401409D +:105350008E2401403C0380008C6201F80440FFFE73 +:1053600024020002AC6401C0A06201C43C0210002F +:10537000AC6201F88FBF00188FB100148FB000101D +:1053800003E0000827BD00203C0360103C02080039 +:1053900024420174AC62502C8C6250003C048000AA +:1053A00034420080AC6250003C0208002442547C2D +:1053B0003C010800AC2256003C020800244254384C +:1053C0003C010800AC2256043C020002AC840008F8 +:1053D000AC82000C03E000082402000100A0302190 +:1053E0003C1C0800279C56083C0200023C050400B7 +:1053F00000852826008220260004102B2CA5000101 +:105400002C840001000210803C0308002463560035 +:105410000085202500431821108000030000102182 +:10542000AC6600002402000103E000080000000058 +:105430003C1C0800279C56083C0200023C05040066 +:1054400000852826008220260004102B2CA50001B0 +:105450002C840001000210803C03080024635600E5 +:105460000085202500431821108000050000102130 +:105470003C02080024425438AC62000024020001BF +:1054800003E00008000000003C0200023C030400AE +:1054900000821026008318262C4200012C63000194 +:1054A000004310251040000B000028213C1C080080 +:1054B000279C56083C0380008C62000824050001EC +:1054C00000431025AC6200088C62000C00441025DB +:1054D000AC62000C03E0000800A010213C1C080096 +:1054E000279C56083C0580008CA3000C0004202754 +:1054F000240200010064182403E00008ACA3000C9F +:105500003C020002148200063C0560008CA208D018 +:105510002403FFFE0043102403E00008ACA208D0DF +:105520003C02040014820005000000008CA208D098 +:105530002403FFFD00431024ACA208D003E00008C0 +:10554000000000003C02601A344200108C430080CE +:1055500027BDFFF88C440084AFA3000093A3000094 +:10556000240200041462001AAFA4000493A20001F4 +:105570001040000797A300023062FFFC3C0380004C +:10558000004310218C4200000A001536AFA200042F +:105590003062FFFC3C03800000431021AC4400005B +:1055A000A3A000003C0560008CA208D02403FFFEED +:1055B0003C04601A00431024ACA208D08FA300045E +:1055C0008FA2000034840010AC830084AC82008081 +:1055D00003E0000827BD000827BDFFE8AFBF0010AB +:1055E0003C1C0800279C56083C0280008C43000CA1 +:1055F0008C420004004318243C0200021060001496 +:10560000006228243C0204003C04000210A00005B3 +:10561000006210243C0208008C4256000A00155B10 +:1056200000000000104000073C0404003C02080099 +:105630008C4256040040F809000000000A00156082 +:10564000000000000000000D3C1C0800279C5608CC +:105650008FBF001003E0000827BD0018800802403B +:1056600080080100800800808008000000000C8095 +:105670000000320008000E9808000EF408000F88A1 +:1056800008001028080010748008010080080080BD +:10569000800800000A000028000000000000000050 +:1056A0000000000D6370362E322E316200000000C3 +:1056B00006020104000000000000000000000000DD +:1056C000000000000000000038003C000000000066 +:1056D00000000000000000000000000000000020AA +:1056E00000000000000000000000000000000000BA +:1056F00000000000000000000000000000000000AA +:10570000000000000000000021003800000000013F +:105710000000002B000000000000000400030D400A +:105720000000000000000000000000000000000079 +:105730000000000000000000100000030000000056 +:105740000000000D0000000D3C020800244259AC8E +:105750003C03080024635BF4AC4000000043202BB2 +:105760001480FFFD244200043C1D080037BD9FFC4F +:1057700003A0F0213C100800261000A03C1C0800EB +:10578000279C59AC0E0002F6000000000000000D3E +:1057900027BDFFB4AFA10000AFA20004AFA3000873 +:1057A000AFA4000CAFA50010AFA60014AFA700185F +:1057B000AFA8001CAFA90020AFAA0024AFAB0028FF +:1057C000AFAC002CAFAD0030AFAE0034AFAF00389F +:1057D000AFB8003CAFB90040AFBC0044AFBF004819 +:1057E0000E000820000000008FBF00488FBC00445E +:1057F0008FB900408FB8003C8FAF00388FAE0034B7 +:105800008FAD00308FAC002C8FAB00288FAA002406 +:105810008FA900208FA8001C8FA700188FA6001446 +:105820008FA500108FA4000C8FA300088FA2000486 +:105830008FA1000027BD004C3C1B60188F7A5030B0 +:10584000377B502803400008AF7A000000A01821E1 +:1058500000801021008028213C0460003C0760008B +:105860002406000810600006348420788C42000072 +:10587000ACE220088C63000003E00008ACE3200CDD +:105880000A000F8100000000240300403C02600079 +:1058900003E00008AC4320003C0760008F86000452 +:1058A0008CE520740086102100A2182B14600007DC +:1058B000000028218F8AFDA024050001A1440013C7 +:1058C0008F89000401244021AF88000403E0000810 +:1058D00000A010218F84FDA08F8500049086001306 +:1058E00030C300FF00A31023AF82000403E00008D0 +:1058F000A08000138F84FDA027BDFFE8AFB000108B +:10590000AFBF001490890011908700112402002875 +:10591000312800FF3906002830E300FF2485002CE1 +:105920002CD00001106200162484001C0E00006EB2 +:10593000000000008F8FFDA03C05600024020204DF +:1059400095EE003E95ED003C000E5C0031ACFFFF93 +:10595000016C5025ACAA2010520000012402000462 +:10596000ACA22000000000000000000000000000C9 +:105970008FBF00148FB0001003E0000827BD00188F +:105980000A0000A6000028218F85FDA027BDFFD8B2 +:10599000AFBF0020AFB3001CAFB20018AFB100140E +:1059A000AFB000100080982190A4001124B0001C1A +:1059B00024B1002C308300FF386200280E000090D4 +:1059C0002C5200010E00009800000000020020216F +:1059D0001240000202202821000028210E00006E43 +:1059E000000000008F8DFDA03C0880003C05600099 +:1059F00095AC003E95AB003C02683025000C4C0095 +:105A0000316AFFFF012A3825ACA7201024020202C8 +:105A1000ACA6201452400001240200028FBF0020D7 +:105A20008FB3001C8FB200188FB100148FB000101C +:105A300027BD002803E00008ACA2200027BDFFE03E +:105A4000AFB20018AFB10014AFB00010AFBF001C70 +:105A50003C1160008E2320748F82000430D0FFFF41 +:105A600030F2FFFF1062000C2406008F0E00006E63 +:105A7000000000003C06801F0010440034C5FF00F9 +:105A80000112382524040002AE2720100000302126 +:105A9000AE252014AE2420008FBF001C8FB200184A +:105AA0008FB100148FB0001000C0102103E0000877 +:105AB00027BD002027BDFFE0AFB0001030D0FFFFB2 +:105AC000AFBF0018AFB100140E00006E30F1FFFF41 +:105AD00000102400009180253C036000AC70201071 +:105AE0008FBF00188FB100148FB000102402000483 +:105AF000AC62200027BD002003E000080000102158 +:105B000027BDFFE03C046018AFBF0018AFB1001420 +:105B1000AFB000108C8850002403FF7F34028071E6 +:105B20000103382434E5380C241F00313C1980006F +:105B3000AC8550003C11800AAC8253BCAF3F0008DA +:105B40000E00054CAF9100400E00050A3C116000AC +:105B50000E00007D000000008E3008083C0F570941 +:105B60002418FFF00218602435EEE00035EDF00057 +:105B7000018E5026018D58262D4600012D69000109 +:105B8000AF86004C0E000D09AF8900503C06601630 +:105B90008CC700003C0860148D0500A03C03FFFF8B +:105BA00000E320243C02535300052FC2108200550D +:105BB00034D07C00960201F2A780006C10400003F4 +:105BC000A780007C384B1E1EA78B006C960201F844 +:105BD000104000048F8D0050384C1E1EA78C007C96 +:105BE0008F8D005011A000058F83004C240E0020E3 +:105BF000A78E007CA78E006C8F83004C1060000580 +:105C00009785007C240F0020A78F007CA78F006C55 +:105C10009785007C2CB8008153000001240500808A +:105C20009784006C2C91040152200001240404008C +:105C30001060000B3C0260008FBF00188FB1001491 +:105C40008FB0001027BD0020A784006CA785007CC2 +:105C5000A380007EA780007403E00008A780009264 +:105C60008C4704382419103C30FFFFFF13F9000360 +:105C700030A8FFFF1100004624030050A380007EDF +:105C80009386007E50C00024A785007CA780007CFE +:105C90009798007CA780006CA7800074A780009272 +:105CA0003C010800AC3800800E00078700000000AF +:105CB0003C0F60008DED0808240EFFF03C0B600ED9 +:105CC000260C0388356A00100000482100002821B6 +:105CD00001AE20243C105709AF8C0010AF8A004859 +:105CE000AF89001810900023AF8500148FBF0018F3 +:105CF0008FB100148FB0001027BD002003E0000812 +:105D0000AF80005400055080014648218D260004D4 +:105D10000A00014800D180219798007CA784006C7C +:105D2000A7800074A78000923C010800AC38008076 +:105D30000E000787000000003C0F60008DED080892 +:105D4000240EFFF03C0B600E260C0388356A001011 +:105D5000000048210000282101AE20243C105709F2 +:105D6000AF8C0010AF8A0048AF8900181490FFDF95 +:105D7000AF85001424110001AF9100548FBF0018AB +:105D80008FB100148FB0001003E0000827BD002081 +:105D90000A00017BA383007E3083FFFF8F880040D1 +:105DA0008F87003C000321403C0580003C020050EE +:105DB000008248253C0660003C0A010034AC040027 +:105DC0008CCD08E001AA58241160000500000000F5 +:105DD0008CCF08E024E7000101EA7025ACCE08E092 +:105DE0008D19001001805821ACB900388D180014AD +:105DF000ACB8003CACA9003000000000000000007E +:105E00000000000000000000000000000000000092 +:105E100000000000000000003C0380008C640000D3 +:105E2000308200201040FFFD3C0F60008DED08E047 +:105E30003C0E010001AE18241460FFE100000000D8 +:105E4000AF87003C03E00008AF8B00588F8500400F +:105E5000240BFFF03C06800094A7001A8CA90024B4 +:105E600030ECFFFF000C38C000EB5024012A402129 +:105E7000ACC8003C8CA400248CC3003C00831023DD +:105E800018400033000000008CAD002025A2000166 +:105E90003C0F0050ACC2003835EE00103C068000CC +:105EA000ACCE003000000000000000000000000048 +:105EB00000000000000000000000000000000000E2 +:105EC000000000003C0480008C9900003338002062 +:105ED0001300FFFD30E20008104000173C0980006D +:105EE0008C880408ACA800108C83040CACA30014AC +:105EF0003C1900203C188000AF19003094AE001807 +:105F000094AF001C01CF3021A4A6001894AD001A54 +:105F100025A70001A4A7001A94AB001A94AC001E98 +:105F2000118B00030000000003E0000800000000E7 +:105F300003E00008A4A0001A8D2A0400ACAA0010F7 +:105F40008D240404ACA400140A0002183C1900209B +:105F50008CA200200A0002003C0F00500A0001EE53 +:105F60000000000027BDFFE8AFBF00100E000232A6 +:105F7000000000008F8900408FBF00103C038000AC +:105F8000A520000A9528000A9527000427BD0018BF +:105F90003105FFFF30E6000F0006150000A22025A6 +:105FA00003E00008AC6400803C0508008CA50020DC +:105FB0008F83000C27BDFFE8AFB00010AFBF001407 +:105FC00010A300100000802124040001020430040A +:105FD00000A6202400C3102450440006261000010F +:105FE000001018802787FDA41480000A006718217C +:105FF000261000012E0900025520FFF38F83000CAC +:10600000AF85000C8FBF00148FB0001003E00008B4 +:1060100027BD00188C6800003C058000ACA8002457 +:106020000E000234261000013C0508008CA500205B +:106030000A0002592E0900022405000100851804F7 +:106040003C0408008C84002027BDFFC8AFBF00348B +:1060500000831024AFBE0030AFB7002CAFB60028CD +:10606000AFB50024AFB40020AFB3001CAFB200182E +:10607000AFB1001410400051AFB000108F84004049 +:10608000948700069488000A00E8302330D5FFFF8B +:1060900012A0004B8FBF0034948B0018948C000A20 +:1060A000016C50233142FFFF02A2482B1520000251 +:1060B00002A02021004020212C8F000515E00002C5 +:1060C00000809821241300040E0001C102602021E9 +:1060D0008F87004002609021AF80004494F4000A52 +:1060E000026080211260004E3291FFFF3C1670006A +:1060F0003C1440003C1E20003C1760008F99005863 +:106100008F380000031618241074004F0283F82BF8 +:1061100017E0003600000000107E00478F86004424 +:1061200014C0003A2403000102031023022320219B +:106130003050FFFF1600FFF13091FFFF8F870040C6 +:106140003C1100203C108000AE11003094EB000A9E +:106150003C178000024B5021A4EA000A94E9000A8F +:1061600094E800043123FFFF3106000F00062D00E4 +:106170000065F025AEFE008094F3000A94F6001846 +:1061800012D30036001221408CFF00148CF4001052 +:1061900003E468210000C02101A4782B029870213B +:1061A00001CF6021ACED0014ACEC001002B238233A +:1061B00030F5FFFF16A0FFB88F8400408FBF00347A +:1061C0008FBE00308FB7002C8FB600288FB500240B +:1061D0008FB400208FB3001C8FB200188FB1001451 +:1061E0008FB0001003E0000827BD00381477FFCC03 +:1061F0008F8600440E000EE202002021004018218C +:106200008F86004410C0FFC9020310230270702360 +:106210008F87004001C368210A0002E431B2FFFF0A +:106220008F86004414C0FFC93C1100203C10800040 +:106230000A0002AEAE1100300E00046602002021FA +:106240000A0002DB00401821020020210E0009395B +:10625000022028210A0002DB004018210E0001EE76 +:10626000000000000A0002C702B2382327BDFFC8A1 +:10627000AFB7002CAFB60028AFB50024AFB40020F4 +:10628000AFB3001CAFB20018AFB10014AFB0001034 +:10629000AFBF00300E00011B241300013C047FFF40 +:1062A0003C0380083C0220003C010800AC20007048 +:1062B0003496FFFF34770080345200033C1512C03F +:1062C000241400013C1080002411FF800E000245C0 +:1062D000000000008F8700488F8B00188F89001402 +:1062E0008CEA00EC8CE800E8014B302B01092823F4 +:1062F00000A6102314400006014B18231440000E82 +:106300003C05800002A3602B1180000B0000000000 +:106310003C0560008CEE00EC8CED00E88CA4180CC1 +:10632000AF8E001804800053AF8D00148F8F0010C3 +:10633000ADF400003C0580008CBF00003BF900017B +:10634000333800011700FFE13C0380008C6201003C +:1063500024060C0010460009000000008C680100B3 +:106360002D043080548000103C0480008C690100B2 +:106370002D2331811060000C3C0480008CAA0100A8 +:1063800011460004000020218CA6010024C5FF81D5 +:1063900030A400FF8E0B01000E000269AE0B00243A +:1063A0000A00034F3C0480008C8D01002DAC3300AB +:1063B00011800022000000003C0708008CE70098D4 +:1063C00024EE00013C010800AC2E00983C04800043 +:1063D0008C8201001440000300000000566000148D +:1063E0003C0440008C9F01008C9801000000982123 +:1063F00003F1C82400193940330F007F00EF7025E6 +:1064000001D26825AC8D08308C8C01008C85010090 +:10641000258B0100017130240006514030A3007F1C +:106420000143482501324025AC8808303C04400037 +:10643000AE0401380A00030E000000008C99010030 +:10644000240F0020AC99002092F80000330300FFD5 +:10645000106F000C241F0050547FFFDD3C048000AF +:106460008C8401000E00154E000000000A00034F4E +:106470003C04800000963824ACA7180C0A000327BF +:106480008F8F00108C8501000E0008F72404008017 +:106490000A00034F3C04800000A4102B24030001D9 +:1064A00010400009000030210005284000A4102BF6 +:1064B00004A00003000318405440FFFC00052840DE +:1064C0005060000A0004182B0085382B54E00004AB +:1064D0000003184200C33025008520230003184222 +:1064E0001460FFF9000528420004182B03E000089F +:1064F00000C310213084FFFF30C600FF3C0780003E +:106500008CE201B80440FFFE00064C000124302557 +:106510003C08200000C820253C031000ACE00180AE +:10652000ACE50184ACE4018803E00008ACE301B809 +:106530003C0660008CC5201C2402FFF03083020062 +:10654000308601001060000E00A2282434A500014E +:106550003087300010E0000530830C0034A50004C3 +:106560003C04600003E00008AC85201C1060FFFDC7 +:106570003C04600034A5000803E00008AC85201C42 +:1065800054C0FFF334A500020A0003B03087300086 +:1065900027BDFFE8AFB00010AFBF00143C0760009C +:1065A000240600021080001100A080218F83005873 +:1065B0000E0003A78C6400188F8200580000202171 +:1065C000240600018C45000C0E000398000000001A +:1065D0001600000224020003000010218FBF0014E7 +:1065E0008FB0001003E0000827BD00188CE8201CC5 +:1065F0002409FFF001092824ACE5201C8F870058EE +:106600000A0003CD8CE5000C3C02600E00804021A6 +:1066100034460100240900180000000000000000BA +:10662000000000003C0A00503C0380003547020097 +:10663000AC68003834640400AC65003CAC670030E2 +:106640008C6C0000318B00201160FFFD2407FFFFE0 +:106650002403007F8C8D00002463FFFF248400044A +:10666000ACCD00001467FFFB24C60004000000004E +:10667000000000000000000024A402000085282B78 +:106680003C0300203C0E80002529FFFF010540212E +:10669000ADC300301520FFE00080282103E0000892 +:1066A000000000008F82005827BDFFD8AFB3001C48 +:1066B000AFBF0020AFB20018AFB10014AFB00010F0 +:1066C00094460002008098218C5200182CC300814F +:1066D0008C4800048C4700088C51000C8C49001039 +:1066E000106000078C4A00142CC4000414800013AE +:1066F00030EB000730C5000310A0001000000000C0 +:106700002410008B02002021022028210E00039873 +:10671000240600031660000224020003000010217A +:106720008FBF00208FB3001C8FB200188FB10014F0 +:106730008FB0001003E0000827BD00281560FFF1AE +:106740002410008B3C0C80003C030020241F00011F +:10675000AD830030AF9F0044000000000000000047 +:10676000000000002419FFF024D8000F031978243A +:106770003C1000D0AD88003801F0702524CD000316 +:106780003C08600EAD87003C35850400AD8E0030BE +:10679000000D38823504003C3C0380008C6B000007 +:1067A000316200201040FFFD0000000010E00008F2 +:1067B00024E3FFFF2407FFFF8CA800002463FFFFF2 +:1067C00024A50004AC8800001467FFFB24840004A7 +:1067D0003C05600EACA60038000000000000000080 +:1067E000000000008F8600543C0400203C0780001D +:1067F000ACE4003054C000060120202102402021DA +:106800000E0003A7000080210A00041D02002021C1 +:106810000E0003DD01402821024020210E0003A7C5 +:10682000000080210A00041D0200202127BDFFE096 +:10683000AFB200183092FFFFAFB10014AFBF001C21 +:10684000AFB000101640000D000088210A0004932C +:106850000220102124050003508500278CE5000C40 +:106860000000000D262800013111FFFF24E2002066 +:106870000232802B12000019AF8200588F82004430 +:10688000144000168F8700583C0670003C0320001F +:106890008CE5000000A62024148300108F84006083 +:1068A000000544023C09800000A980241480FFE90F +:1068B000310600FF2CCA000B5140FFEB26280001D7 +:1068C000000668803C0E080025CE575801AE6021B6 +:1068D0008D8B0000016000080000000002201021E4 +:1068E0008FBF001C8FB200188FB100148FB0001042 +:1068F00003E0000827BD00200E0003982404008454 +:106900001600FFD88F8700580A000474AF8000601B +:10691000020028210E0003BF240400018F870058C5 +:106920000A000474AF820060020028210E0003BF39 +:10693000000020210A0004A38F8700580E000404E1 +:10694000020020218F8700580A000474AF82006083 +:1069500030AFFFFF000F19C03C0480008C9001B8DD +:106960000600FFFE3C1920043C181000AC83018097 +:10697000AC800184AC990188AC9801B80A00047518 +:106980002628000190E2000390E30002000020218D +:106990000002FE0000033A0000FF2825240600083C +:1069A0000E000398000000001600FFDC2402000324 +:1069B0008F870058000010210A000474AF82006025 +:1069C00090E8000200002021240600090A0004C308 +:1069D00000082E0090E4000C240900FF308500FF21 +:1069E00010A900150000302190F9000290F8000372 +:1069F000308F00FF94EB000400196E000018740043 +:106A0000000F62000186202501AE5025014B28258C +:106A10003084FF8B0A0004C32406000A90E30002BE +:106A200090FF0004000020210003360000DF28252D +:106A30000A0004C32406000B0A0004D52406008BB8 +:106A4000000449C23127003F000443423C02800059 +:106A500000082040240316802CE60020AC43002CC4 +:106A600024EAFFE02482000114C0000330A900FFE3 +:106A700000801021314700FF000260803C0D800043 +:106A8000240A0001018D20213C0B000E00EA28049D +:106A9000008B302111200005000538278CCE000026 +:106AA00001C5382503E00008ACC700008CD8000001 +:106AB0000307782403E00008ACCF000027BDFFE007 +:106AC000AFB10014AFB00010AFBF00183C076000BA +:106AD0008CE408083402F0003C1160003083F000C0 +:106AE000240501C03C04800E000030211062000625 +:106AF000241000018CEA08083149F0003928E00030 +:106B00000008382B000780403C0D0200AE2D081411 +:106B1000240C16803C0B80008E2744000E000F8B47 +:106B2000AD6C002C120000043C02169124050001FB +:106B3000120500103C023D2C345800E0AE384408E9 +:106B40003C1108008E31007C8FBF00183C066000AD +:106B500000118540360F16808FB100148FB00010E1 +:106B60003C0E020027BD0020ACCF442003E000080B +:106B7000ACCE08103C0218DA345800E0AE384408B5 +:106B80003C1108008E31007C8FBF00183C0660006D +:106B900000118540360F16808FB100148FB00010A1 +:106BA0003C0E020027BD0020ACCF442003E00008CB +:106BB000ACCE08100A0004EB240500010A0004EB27 +:106BC0000000282124020400A7820024A780001CC2 +:106BD000000020213C06080024C65A582405FFFF67 +:106BE00024890001000440803124FFFF01061821A0 +:106BF0002C87002014E0FFFAAC6500002404040098 +:106C0000A7840026A780001E000020213C06080063 +:106C100024C65AD82405FFFF248D0001000460809B +:106C200031A4FFFF018658212C8A00201540FFFA6D +:106C3000AD650000A7800028A7800020A780002263 +:106C4000000020213C06080024C65B582405FFFFF5 +:106C5000249900010004C0803324FFFF030678213B +:106C60002C8E000415C0FFFAADE500003C05600065 +:106C70008CA73D002403E08F00E31024344601403C +:106C800003E00008ACA63D002487007F000731C266 +:106C900024C5FFFF000518C2246400013082FFFFF5 +:106CA000000238C0A78400303C010800AC27003047 +:106CB000AF80002C0000282100002021000030219E +:106CC0002489000100A728213124FFFF2CA81701E7 +:106CD000110000032C8300801460FFF924C600011A +:106CE00000C02821AF86002C10C0001DA786002AF6 +:106CF00024CAFFFF000A11423C08080025085B581F +:106D00001040000A00002021004030212407FFFF2E +:106D1000248E00010004688031C4FFFF01A86021B7 +:106D20000086582B1560FFFAAD87000030A2001FC7 +:106D30005040000800043080240300010043C804D0 +:106D400000041080004878212738FFFF03E0000886 +:106D5000ADF8000000C820212405FFFFAC8500002D +:106D600003E000080000000030A5FFFF30C6FFFF71 +:106D700030A8001F0080602130E700FF0005294295 +:106D80000000502110C0001D24090001240B000147 +:106D900025180001010B2004330800FF0126782686 +:106DA000390E00202DED00012DC2000101A2182591 +:106DB0001060000D014450250005C880032C4021BF +:106DC0000100182110E0000F000A20278D040000A8 +:106DD000008A1825AD03000024AD00010000402109 +:106DE0000000502131A5FFFF252E000131C9FFFF12 +:106DF00000C9102B1040FFE72518000103E0000830 +:106E0000000000008D0A0000014440240A0005D162 +:106E1000AC68000027BDFFE830A5FFFF30C6FFFFCC +:106E2000AFB00010AFBF001430E7FFFF00005021EB +:106E30003410FFFF0000602124AF001F00C0482174 +:106E4000241800012419002005E0001601E010219B +:106E50000002F943019F682A0009702B01AE40240B +:106E600011000017000C18800064102110E00005CC +:106E70008C4B000000F840040008382301675824B8 +:106E800000003821154000410000402155600016E7 +:106E90003169FFFF258B0001316CFFFF05E1FFEC3D +:106EA00001E0102124A2003E0002F943019F682A5C +:106EB0000009702B01AE40241500FFEB000C188078 +:106EC000154600053402FFFF020028210E0005B51B +:106ED00000003821020010218FBF00148FB0001075 +:106EE00003E0000827BD00181520000301601821E9 +:106EF000000B1C0224080010306A00FF154000053A +:106F0000306E000F250D000800031A0231A800FFA3 +:106F1000306E000F15C00005307F000325100004FF +:106F200000031902320800FF307F000317E000055C +:106F3000386900012502000200031882304800FF72 +:106F4000386900013123000110600004310300FFA3 +:106F5000250A0001314800FF310300FF000C6940A1 +:106F600001A34021240A000110CAFFD53110FFFF00 +:106F7000246E000131C800FF1119FFC638C9000195 +:106F80002D1F002053E0001C258B0001240D000163 +:106F90000A000648240E002051460017258B0001E8 +:106FA00025090001312800FF2D0900205120001281 +:106FB000258B000125430001010D5004014B1024D5 +:106FC000250900011440FFF4306AFFFF3127FFFF5D +:106FD00010EE000C2582FFFF304CFFFF0000502117 +:106FE0003410FFFF312800FF2D0900205520FFF24B +:106FF00025430001258B0001014648260A000602B0 +:10700000316CFFFF00003821000050210A000654B7 +:107010003410FFFF27BDFFD8AFB0001030F0FFFFE6 +:10702000AFB10014001039423211FFE000071080A8 +:10703000AFB3001C00B1282330D3FFFFAFB200185C +:1070400030A5FFFF00809021026030210044202104 +:10705000AFBF00200E0005E03207001F022288218A +:107060003403FFFF0240202102002821026030216A +:1070700000003821104300093231FFFF02201021A7 +:107080008FBF00208FB3001C8FB200188FB1001487 +:107090008FB0001003E0000827BD00280E0005E0B7 +:1070A0000000000000408821022010218FBF002036 +:1070B0008FB3001C8FB200188FB100148FB0001076 +:1070C00003E0000827BD0028000424003C03600002 +:1070D000AC603D0810A00002348210063482101605 +:1070E00003E00008AC623D0427BDFFE0AFB0001034 +:1070F000309000FF2E020006AFBF001810400008BD +:10710000AFB10014001030803C03080024635784A2 +:1071100000C328218CA400000080000800000000AB +:10712000000020218FBF00188FB100148FB0001015 +:107130000080102103E0000827BD00209791002A5D +:1071400016200051000020213C020800904200332C +:107150000A0006BB00000000978D002615A0003134 +:10716000000020210A0006BB2402000897870024A3 +:1071700014E0001A00001821006020212402000100 +:107180001080FFE98FBF0018000429C2004530219C +:1071900000A6582B1160FFE43C0880003C0720004B +:1071A000000569C001A76025AD0C00203C038008E4 +:1071B0002402001F2442FFFFAC6000000441FFFDD9 +:1071C0002463000424A5000100A6702B15C0FFF560 +:1071D000000569C00A0006A58FBF00189787001C2C +:1071E0003C04080024845A58240504000E0006605C +:1071F00024060001978B002424440001308AFFFFFD +:107200002569FFFF2D48040000402821150000409B +:10721000A789002424AC3800000C19C00A0006B964 +:10722000A780001C9787001E3C04080024845AD8BD +:10723000240504000E00066024060001979900262C +:10724000244400013098FFFF272FFFFF2F0E04007A +:107250000040882115C0002CA78F0026A780001EA3 +:107260003A020003262401003084FFFF0E00068D41 +:107270002C4500010011F8C027F00100001021C0CA +:107280000A0006BB240200089785002E978700227B +:107290003C04080024845B580E00066024060001AC +:1072A0009787002A8F89002C2445000130A8FFFF12 +:1072B00024E3FFFF0109302B0040802114C0001897 +:1072C000A783002AA7800022978500300E000F7543 +:1072D00002002021244A05003144FFFF0E00068DE4 +:1072E000240500013C05080094A500320E000F752E +:1072F00002002021244521003C0208009042003376 +:107300000A0006BB000521C00A0006F3A784001E80 +:1073100024AC3800000C19C00A0006B9A784001C70 +:107320000A00070DA7850022308400FF27BDFFE873 +:107330002C820006AFBF0014AFB000101040001543 +:1073400000A03821000440803C0308002463579CBF +:10735000010328218CA40000008000080000000028 +:1073600024CC007F000751C2000C59C23170FFFFCE +:107370002547C40030E5FFFF2784001C02003021B0 +:107380000E0005B52407000197860028020620217B +:10739000A78400288FBF00148FB0001003E00008FE +:1073A00027BD00183C0508008CA50030000779C2F5 +:1073B0000E00038125E4DF003045FFFF3C04080098 +:1073C00024845B58240600010E0005B52407000143 +:1073D000978E002A8FBF00148FB0001025CD0001BA +:1073E00027BD001803E00008A78D002A0007C9C2C6 +:1073F0002738FF00001878C231F0FFFF3C04080076 +:1074000024845AD802002821240600010E0005B564 +:1074100024070001978D0026260E0100000E84002F +:1074200025AC00013C0B6000A78C0026AD603D0838 +:1074300036040006000030213C0760008CE23D0469 +:10744000305F000617E0FFFD24C9000100061B00A5 +:10745000312600FF006440252CC50004ACE83D0443 +:1074600014A0FFF68FBF00148FB0001003E00008D7 +:1074700027BD0018000751C22549C8002406000195 +:10748000240700013C04080024845A580E0005B566 +:107490003125FFFF978700248FBF00148FB00010A5 +:1074A00024E6000127BD001803E00008A786002499 +:1074B0003C0660183C090800252900FCACC9502C8A +:1074C0008CC850003C0580003C020002350700805B +:1074D000ACC750003C04080024841FE03C030800B3 +:1074E00024631F98ACA50008ACA2000C3C01080066 +:1074F000AC2459A43C010800AC2359A803E00008BF +:107500002402000100A030213C1C0800279C59AC3B +:107510003C0C04003C0B0002008B3826008C4026FB +:107520002CE200010007502B2D050001000A4880C5 +:107530003C030800246359A4004520250123182199 +:107540001080000300001021AC660000240200013E +:1075500003E00008000000003C1C0800279C59AC18 +:107560003C0B04003C0A0002008A3026008B3826BF +:107570002CC200010006482B2CE5000100094080C8 +:107580003C030800246359A4004520250103182169 +:1075900010800005000010213C0C0800258C1F986D +:1075A000AC6C00002402000103E0000800000000B1 +:1075B0003C0900023C080400008830260089382677 +:1075C0002CC30001008028212CE400010083102539 +:1075D0001040000B000030213C1C0800279C59ACD7 +:1075E0003C0A80008D4E00082406000101CA68256F +:1075F000AD4D00088D4C000C01855825AD4B000C9D +:1076000003E0000800C010213C1C0800279C59AC76 +:107610003C0580008CA6000C0004202724020001F9 +:1076200000C4182403E00008ACA3000C3C020002D4 +:107630001082000B3C0560003C070400108700032B +:107640000000000003E00008000000008CA908D042 +:10765000240AFFFD012A402403E00008ACA808D05A +:107660008CA408D02406FFFE0086182403E000083E +:10767000ACA308D03C05601A34A600108CC300806F +:1076800027BDFFF88CC50084AFA3000093A40000C1 +:107690002402001010820003AFA5000403E00008DC +:1076A00027BD000893A7000114E0001497AC000266 +:1076B00097B800023C0F8000330EFFFC01CF682119 +:1076C000ADA50000A3A000003C0660008CC708D058 +:1076D0002408FFFE3C04601A00E82824ACC508D04A +:1076E0008FA300048FA200003499001027BD00086A +:1076F000AF22008003E00008AF2300843C0B800031 +:10770000318AFFFC014B48218D2800000A00080C3B +:10771000AFA8000427BDFFE8AFBF00103C1C080065 +:10772000279C59AC3C0580008CA4000C8CA2000462 +:107730003C0300020044282410A0000A00A31824DF +:107740003C0604003C0400021460000900A610245A +:107750001440000F3C0404000000000D3C1C080015 +:10776000279C59AC8FBF001003E0000827BD00180C +:107770003C0208008C4259A40040F80900000000B7 +:107780003C1C0800279C59AC0A0008358FBF00102C +:107790003C0208008C4259A80040F8090000000093 +:1077A0000A00083B000000003C0880008D0201B880 +:1077B0000440FFFE35090180AD2400003C031000A9 +:1077C00024040040AD250004A1240008A1260009DE +:1077D000A527000A03E00008AD0301B83084FFFFCD +:1077E0000080382130A5FFFF000020210A00084555 +:1077F000240600803087FFFF8CA400002406003898 +:107800000A000845000028218F8300788F860070C9 +:107810001066000B008040213C07080024E75B68ED +:10782000000328C000A710218C440000246300013D +:10783000108800053063000F5466FFFA000328C06B +:1078400003E00008000010213C07080024E75B6CFF +:1078500000A7302103E000088CC200003C03900028 +:1078600034620001008220253C038000AC640020CB +:107870008C65002004A0FFFE0000000003E000086B +:10788000000000003C0280003443000100832025FA +:1078900003E00008AC44002027BDFFE0AFB10014B6 +:1078A0003091FFFFAFB00010AFBF001812200013DF +:1078B00000A080218CA20000240400022406020003 +:1078C0001040000F004028210E0007250000000096 +:1078D00000001021AE000000022038218FBF0018E8 +:1078E0008FB100148FB0001000402021000028212B +:1078F000000030210A00084527BD00208CA20000AE +:10790000022038218FBF00188FB100148FB00010F3 +:107910000040202100002821000030210A000845F5 +:1079200027BD002000A010213087FFFF8CA5000498 +:107930008C4400000A000845240600068F83FD9C45 +:1079400027BDFFE8AFBF0014AFB00010906700087C +:10795000008010210080282130E600400000202116 +:1079600010C000088C5000000E0000BD0200202155 +:10797000020020218FBF00148FB000100A000548BC +:1079800027BD00180E0008A4000000000E0000BD76 +:1079900002002021020020218FBF00148FB00010B0 +:1079A0000A00054827BD001827BDFFE0AFB0001052 +:1079B0008F90FD9CAFBF001CAFB20018AFB1001498 +:1079C00092060001008088210E00087230D2000467 +:1079D00092040005001129C2A6050000348300406E +:1079E000A20300050E00087C022020210E00054A9B +:1079F0000220202124020001AE02000C02202821D6 +:107A0000A602001024040002A602001224060200AE +:107A1000A60200140E000725A60200161640000F4D +:107A20008FBF001C978C00743C0B08008D6B007896 +:107A30002588FFFF3109FFFF256A0001012A382B45 +:107A400010E00006A78800743C0F6006240E0016A4 +:107A500035ED0010ADAE00508FBF001C8FB2001886 +:107A60008FB100148FB0001003E0000827BD002084 +:107A700027BDFFE0AFB10014AFBF0018AFB00010DA +:107A80001080000400A088212402008010820007DA +:107A9000000000000000000D8FBF00188FB100141F +:107AA0008FB0001003E0000827BD00200E00087210 +:107AB00000A020218F86FD9C0220202190C500057A +:107AC0000E00087C30B000FF2403003E1603FFF1D7 +:107AD0003C0680008CC401780480FFFE34C801405D +:107AE000240900073C071000AD11000002202021EE +:107AF000A10900048FBF00188FB100148FB00010CF +:107B0000ACC701780A0008C527BD002027BDFFE0EB +:107B1000AFB00010AFBF0018AFB100143C10800030 +:107B20008E110020000000000E00054AAE04002067 +:107B3000AE1100208FBF00188FB100148FB000105D +:107B400003E0000827BD00203084FFFF00803821BB +:107B50002406003500A020210A0008450000282145 +:107B60003084FFFF008038212406003600A0202149 +:107B70000A0008450000282127BDFFD0AFB500242A +:107B80003095FFFFAFB60028AFB40020AFBF002C88 +:107B9000AFB3001CAFB20018AFB10014AFB000100B +:107BA00030B6FFFF12A000270000A0218F920058DE +:107BB0008E4300003C0680002402004000033E0289 +:107BC00000032C0230E4007F006698241482001D1C +:107BD00030A500FF8F8300682C68000A1100001098 +:107BE0008F8D0044000358803C0C0800258C57B84A +:107BF000016C50218D4900000120000800000000A8 +:107C000002D4302130C5FFFF0E0008522404008446 +:107C1000166000028F920058AF8000688F8D00447C +:107C20002659002026980001032090213314FFFFDD +:107C300015A00004AF9900580295202B1480FFDC9A +:107C400000000000028010218FBF002C8FB600289A +:107C50008FB500248FB400208FB3001C8FB20018A2 +:107C60008FB100148FB0001003E0000827BD003072 +:107C70002407003414A70149000000009247000EB9 +:107C80008F9FFDA08F90FD9C24181600A3E700197C +:107C90009242000D3C0880003C07800CA3E20018D3 +:107CA000964A00123C0D60003C117FFFA60A005C62 +:107CB000964400103623FFFF240200053099FFFF91 +:107CC000AE1900548E46001CAD1800288CEF000041 +:107CD0008DAE444801E6482601C93021AE06003881 +:107CE0008E05003824CB00013C0E7F00AE05003C21 +:107CF0008E0C003CAFEC0004AE0B00208E13002075 +:107D0000AE13001CA3E0001BAE03002CA3E2001284 +:107D10008E4A001424130050AE0A00348E0400343E +:107D2000AFE400148E590018AE1900489258000CA8 +:107D3000A218004E920D000835AF0020A20F0008D7 +:107D40008E090018012E282434AC4000AE0C001817 +:107D5000920B0000317200FF1253027F2403FF8058 +:107D60003C04080024845BE80E0008AA0000000020 +:107D70003C1108008E315BE80E00087202202021C1 +:107D80002405000424080001A2050025022020216A +:107D90000E00087CA20800053C0580008CB001782C +:107DA0000600FFFE8F92005834AE0140240F0002FF +:107DB0003C091000ADD10000A1CF0004ACA90178AE +:107DC0000A000962AF8000682CAD003751A0FF9413 +:107DD0008F8D0044000580803C110800263157E05B +:107DE000021178218DEE000001C0000800000000A3 +:107DF0002411000414B1008C3C0780003C080800EA +:107E00008D085BE88F86FD9CACE800208E4500085D +:107E10008F99FDA0240D0050ACC500308E4C000899 +:107E2000ACCC00508E4B000CACCB00348E43001019 +:107E3000ACC300388E4A0010ACCA00548E42001405 +:107E4000ACC2003C8E5F0018AF3F00048E50001C97 +:107E5000ACD0002090C40000309800FF130D024AFF +:107E6000000000008CC400348CD00030009030231F +:107E700004C000F12404008C126000EE2402000310 +:107E80000A000962AF8200682419000514B900666F +:107E90003C0580003C0808008D085BE88F86FD9C4F +:107EA000ACA800208E4C00048F8AFDA0240720007F +:107EB000ACCC001C924B000824120008A14B001906 +:107EC0008F82005890430009A14300188F85005805 +:107ED00090BF000A33E400FF1092001028890009C7 +:107EE000152000BA240E0002240D0020108D000B76 +:107EF000340780002898002117000008240740005C +:107F000024100040109000053C0700012419008057 +:107F1000109900023C070002240740008CC20018A0 +:107F20003C03FF00004350240147F825ACDF001854 +:107F300090B2000BA0D200278F8300589464000CED +:107F4000108001FE000000009467000C3C1F8000C0 +:107F50002405FFBFA4C7005C9063000E2407000443 +:107F6000A0C300088F820058904A000FA0CA0009E1 +:107F70008F8900588D3200108FE400740244C823AA +:107F8000ACD900588D300014ACD0002C95380018B6 +:107F9000330DFFFFACCD00409531001A322FFFFFAB +:107FA000ACCF00448D2E001CACCE00489128000EB2 +:107FB000A0C8000890CC000801855824126001B6C2 +:107FC000A0CB00088F9200580A000962AF870068B2 +:107FD0002406000614A600143C0E80003C0F080086 +:107FE0008DEF5BE88F85FD98ADCF00208E4900189E +:107FF0008F86FD9C8F8BFDA0ACA900008CC800383B +:1080000024040005ACA800048CCC003C1260008164 +:10801000AD6C00000A000962AF84006824110007FB +:1080200010B1004B240400063C05080024A55BE8C1 +:108030000E000881240400818F9200580013102B39 +:108040000A000962AF820068241F002314BFFFF6F4 +:108050003C0C80003C0508008CA55BE88F8BFDA0E4 +:10806000AD8500208F91FD9C8E4600042564002084 +:1080700026450014AE260028240600030E000F81BA +:10808000257000308F87005802002021240600034D +:108090000E000F8124E500083C04080024845BE8FE +:1080A0000E0008AA0000000092230000240A0050DD +:1080B000306200FF544AFFE18F9200580E000F6CAF +:1080C000000000000A000A6A8F920058240800335A +:1080D00014A800323C0380003C1108008E315BE89C +:1080E0008F8FFDA0AC7100208E420008240D002867 +:1080F0008F89FD9CADE200308E4A000C24060009F9 +:10810000ADEA00348E5F0010ADFF00388E440014DD +:10811000ADE400208E590018ADF900248E58001CE3 +:10812000ADF80028A1ED00118E4E00041260003160 +:10813000AD2E00288F9200580A000962AF860068B1 +:10814000240D002214ADFFB8000000002404000735 +:108150003C1008008E105BE83C188000AF10002037 +:108160005660FEAEAF8400683C04080024845BE8DF +:108170000E0008AA241300508F84FD9C90920000EA +:10818000325900FF1333014B000000008F9200585A +:10819000000020210A000962AF8400683C05080045 +:1081A00024A55BE80E000858240400810A000A6A2E +:1081B0008F92005802D498213265FFFF0E000852BA +:1081C000240400840A0009628F920058108EFF5325 +:1081D000240704002887000310E00179241100041B +:1081E000240F0001548FFF4D240740000A000A228B +:1081F000240701003C05080024A55BE80E0008A444 +:10820000240400828F920058000030210A00096285 +:10821000AF8600683C04080024845BE88CC2003808 +:108220000E0008AA8CC3003C8F9200580A000AC0B6 +:1082300000002021240400823C05080024A55BE8FE +:108240000E0008A4000000008F92005800001021CA +:108250000A000962AF8200688E5000048F91FD9C75 +:108260003C078000ACF00020922C00050200282181 +:10827000318B0002156001562404008A8F92FDA004 +:108280002404008D9245001B30A6002014C001502C +:1082900002002821922E00092408001231C900FF93 +:1082A0001128014B240400810E00087202002021D5 +:1082B0009258001B240F000402002021370D0042B9 +:1082C000A24D001B0E00087CA22F00253C0580005B +:1082D0008CA401780480FFFE34B90140241F000201 +:1082E000AF300000A33F00048F9200583C101000F4 +:1082F000ACB001780A000A6B0013102B8E500004FA +:108300008F91FD9C3C038000AC700020922A0005F8 +:108310000200282131420002144000172404008A80 +:10832000922C00092412000402002821318B00FF46 +:1083300011720011240400810E0008720200202135 +:108340008F89FDA0240800122405FFFE912F001B39 +:108350000200202135EE0020A12E001BA2280009DA +:108360009226000500C538240E00087CA2270005CF +:1083700002002821000020210E0009330000000027 +:108380000A000A6A8F9200588E4C00043C07800055 +:108390003C10080026105BE8ACEC00203C01080013 +:1083A000AC2C5BE8924B0003317100041220013BBE +:1083B0008F84FD9C24020006A0820009924F001BBE +:1083C000240EFFC031E9003F012E4025A08800089F +:1083D0009245000330A6000114C0013200000000E5 +:1083E0008E420008AE0200083C0208008C425BF09E +:1083F000104001318F90FDA0000219C28F8DFD9CAD +:10840000A603000C8E4A000C24180001240400145A +:10841000AE0A002C8E420010AE02001C965F0016C1 +:10842000A61F003C96590014A619003EADB8000CDA +:10843000A5B80010A5B80012A5B80014A5B800167C +:1084400012600144A2040011925100033232000272 +:108450002E5300018F920058266200080A0009621C +:10846000AF8200688E4400043C1980003C068008FE +:10847000AF2400208E45000890D80000240D005045 +:10848000331100FF122D009C2407008824060009E8 +:108490000E000845000000000A000A6A8F9200588A +:1084A0008E5000043C0980003C118008AD30002053 +:1084B0009228000024050050310400FF10850110AF +:1084C0002407008802002021000028210E00084512 +:1084D0002406000E922D00002418FF80020028219F +:1084E00001B8802524040004240600300E0007256E +:1084F000A23000000A000A6A8F9200588E500004D1 +:108500008F91FDA03C028000AC500020923F001BE8 +:1085100033F900101320006C240700810200202191 +:10852000000028212406001F0E000845000000005E +:108530000A000A6A8F9200588E44001C0E00085DE3 +:1085400000000000104000E3004048218F880058E0 +:1085500024070089012020218D05001C240600012C +:108560000E000845000000000A000A6A8F920058B9 +:10857000964900023C10080026105BE831280004F0 +:10858000110000973C0460008E4E001C3C0F8000E0 +:10859000ADEE00203C010800AC2E5BE896470002DF +:1085A00030E40001148000E6000000008E42000468 +:1085B000AE0200083C1008008E105BF0120000ECC8 +:1085C0003C0F80008F92FD9C241000018E4E0018FD +:1085D0008F8DFDA08F9FFD9801CF4825AE490018D3 +:1085E000A2400005AE50000C3C0808008D085BF06E +:1085F0008F840058A6500010000839C2A6500012FF +:10860000A6500014A6500016A5A7000C8C8C0008DC +:108610008F8B00588F8A0058ADAC002C8D63000CF6 +:1086200024070002ADA3001C91460010A1A6001172 +:108630008F82005890450011A3E500088F990058DB +:1086400093380012A258004E8F910058922F0013B9 +:10865000A1AF00128F920058964E0014A5AE003CB8 +:1086600096490016A5A9003E8E480018ADA8001432 +:108670005660FD6AAF8700683C05080024A55BE8EA +:108680000E000881000020218F9200580000382140 +:108690000A000962AF8700683C05080024A55BE872 +:1086A0000E0008A4240400828F9200580A000A4D8C +:1086B000000038210E000F6C000000008F9200585F +:1086C0000A000AC0000020210E00087202002021CA +:1086D0009223001B02002021346A00100E00087C47 +:1086E000A22A001B000038210200202100002821BE +:1086F0000A000BA52406001F9242000C305F000107 +:1087000013E0000300000000964A000EA4CA002CEB +:10871000924B000C316300025060000600003821CB +:108720008E470014964C0012ACC7001CA4CC001A53 +:10873000000038210A000B7F240600093C050800D0 +:1087400024A55BE80E0008A42404008B8F92005837 +:108750000A000A4D0013382B3C0C08008D8C5BE896 +:1087600024DFFFFE25930100326B007F016790211B +:1087700002638824AD110028AE4600E0AE4000E45C +:108780000A0009B3AE5F001CACC000543C0D0800E9 +:108790008DAD5BE83C18800C37090100ACED00287A +:1087A0008E510014AD3100E08E4F0014AD2F00E467 +:1087B0008E4E001025C7FFFE0A0009F4AD27001CED +:1087C0005491FDD6240740000A000A222407100015 +:1087D0000E00092D000000000A000A6A8F9200585E +:1087E0008C83442C3C12DEAD3651BEEF3C010800B8 +:1087F000AC205BE810710062000000003C196C6264 +:1088000037387970147800082404000297850074C2 +:108810009782006C2404009200A2F82B13E0001948 +:1088200002002821240400020E00069524050200FF +:108830003C068000ACC200203C010800AC225BE892 +:108840001040000D8F8C0058240A002824040003D7 +:10885000918B0010316300FF546A00012404000171 +:108860000E0000810000000010400004240400837A +:108870000A000BC28F920058240400833C050800B4 +:1088800024A55BE80E000881000000008F920058CC +:108890000013382B0A000962AF8700680A000B49F1 +:1088A000240200128E4400080E00085D0000000043 +:1088B0000A000B55AE0200083C05080024A55BE841 +:1088C0000E000858240400878F9200580A000B728B +:1088D0000013102B240400040E000695240500301C +:1088E0001440002A004048218F8800582407008344 +:1088F000012020218D05001C0A000BB32406000175 +:108900008F8300788F8600701066FEEE000038219D +:108910003C07080024E75B6C000320C00087282187 +:108920008CAE000011D0005D246F000131E3000F18 +:108930005466FFFA000320C00A000B8C00003821A7 +:108940008E4400040E00085D000000000A000BC801 +:10895000AE0200083C05080024A55BE80E0008A450 +:10896000240400828F9200580A000B72000010212C +:108970003C05080024A55BE80A000C7C2404008761 +:108980008C83442C0A000C5B3C196C628F88005865 +:108990003C0780083C0C8000240B0050240A000196 +:1089A000AD820020A0EB0000A0EA000191030004CA +:1089B000A0E3001891040005A0E400199106000648 +:1089C0003C04080024845B6CA0E6001A91020007B6 +:1089D0003C06080024C65B68A0E2001B9105000865 +:1089E000A0E5001C911F0009A0FF001D9119000ABD +:1089F000A0F9001E9118000BA0F8001F9112000CA6 +:108A0000A0F200209111000DA0F100219110000EA4 +:108A1000A0F00022910F000FA0EF0023910E001094 +:108A2000A0EE0024910D0011A0ED0025950C00147E +:108A3000A4EC0028950B00168F8A00708F920078A6 +:108A4000A4EB002A95030018000A10C02545000178 +:108A5000A4E3002C8D1F001C0044C0210046C82147 +:108A600030A5000FAF3F0000AF09000010B20006B4 +:108A7000AF850070000038218D05001C01202021E9 +:108A80000A000BB32406000124AD000131A7000F3A +:108A9000AF8700780A000CF9000038213C06080076 +:108AA00024C65B680086902100003821ACA000003D +:108AB0000A000B8CAE4000003C0482013C036000C5 +:108AC00034820E02AC603D68AF80009803E000087D +:108AD000AC623D6C27BDFFE8AFB000103090FFFFE7 +:108AE000001018422C620041AFBF00141440000275 +:108AF00024040080240300403C010800AC300060E6 +:108B00003C010800AC2300640E000F7500602821B2 +:108B1000244802BF2409FF8001092824001039805D +:108B2000001030408FBF00148FB0001000A720212C +:108B300000861821AF8300803C010800AC25005856 +:108B40003C010800AC24005C03E0000827BD0018CD +:108B5000308300FF30C6FFFF30E400FF3C08800098 +:108B60008D0201B80440FFFE000354000144382583 +:108B70003C09600000E920253C031000AD050180A0 +:108B8000AD060184AD04018803E00008AD0301B81F +:108B90008F8500583C0A6012354800108CAC0004E8 +:108BA0003C0D600E35A60010318B00062D690001CA +:108BB000AD0900C48CA70004ACC731808CA20008AA +:108BC00094A40002ACC231848CA3001C0460000396 +:108BD000A784009003E00008000000008CAF00189C +:108BE000ACCF31D08CAE001C03E00008ACCE31D449 +:108BF0008F8500588F87FF288F86FF308CAE00044A +:108C00003C0F601235E80010ACEE00788CAD000827 +:108C1000ACED007C8CAC0010ACCC004C8CAB000CF0 +:108C2000ACCB004894CA00543C0208008C4200447B +:108C300025490001A4C9005494C400543083FFFFA7 +:108C400010620017000000003C0208008C42004047 +:108C5000A4C200528CA30018ACE300308CA2001414 +:108C6000ACE2002C8CB90018ACF900388CB80014B8 +:108C700024050001ACF800348D0600BC50C5001975 +:108C80008D0200B48D0200B8A4E2004894E40048CC +:108C9000A4E4004A94E800EA03E000083102FFFF80 +:108CA0003C0208008C420024A4C00054A4C200521C +:108CB0008CA30018ACE300308CA20014ACE2002CB2 +:108CC0008CB90018ACF900388CB8001424050001E8 +:108CD000ACF800348D0600BC54C5FFEB8D0200B823 +:108CE0008D0200B4A4E2004894E40048A4E4004AE1 +:108CF00094E800EA03E000083102FFFF8F86005885 +:108D00003C0480008CC900088CC80008000929C0F8 +:108D1000000839C0AC87002090C30007306200040F +:108D20001040003EAF85009490CB0007316A0008E8 +:108D30001140003D8F87FF2C8CCD000C8CCE001491 +:108D400001AE602B11800036000000008CC2000CC8 +:108D5000ACE200708CCB00188F85FF288F88FF3025 +:108D6000ACEB00748CCA00102402FFF8ACAA00D847 +:108D70008CC9000CAD0900608CC4001CACA400D0F0 +:108D800090E3007C0062C824A0F9007C90D8000722 +:108D9000330F000811E000040000000090ED007C9B +:108DA00035AC0001A0EC007C90CF000731EE000153 +:108DB00011C000060000000090E3007C241800347D +:108DC00034790002A0F9007CACB800DC90C2000746 +:108DD0003046000210C000040000000090E8007C53 +:108DE00035040004A0E4007C90ED007D3C0B600E97 +:108DF000356A001031AC003FA0EC007D8D4931D4C4 +:108E00003127000110E00002240E0001A0AE00098D +:108E100094AF00EA03E0000831E2FFFF8F87FF2CE8 +:108E20000A000DAF8CC200140A000DB0ACE0007057 +:108E30008F8C005827BDFFD8AFB3001CAFB200180D +:108E4000AFB00010AFBF0020AFB10014918F00157C +:108E50003C13600E3673001031EB000FA38B009CA7 +:108E60008D8F00048D8B0008959F0012959900103E +:108E70009584001A9598001E958E001C33EDFFFF17 +:108E8000332AFFFF3089FFFF3308FFFF31C7FFFFA1 +:108E90003C010800AC2D00243C010800AC29004432 +:108EA0003C010800AC2A0040AE683178AE67317CE6 +:108EB00091850015959100163C12601236520010F3 +:108EC00030A200FF3230FFFFAE623188AE5000B4F6 +:108ED00091830014959F0018240600010066C804C1 +:108EE00033F8FFFFAE5900B8AE5800BC918E0014A5 +:108EF000AF8F00843C08600631CD00FFAE4D00C04E +:108F0000918A00159584000E3C07600A314900FFE4 +:108F1000AF8B00883084FFFFAE4900C835110010C8 +:108F20000E000D1034F004103C0208008C4200606A +:108F30003C0308008C6300643C0608008CC60058A3 +:108F40003C0508008CA5005C8F8400808FBF00204A +:108F5000AE23004CAE65319CAE030054AE4500DC40 +:108F6000AE6231A0AE6331A4AE663198AE22004845 +:108F70008FB3001CAE0200508FB10014AE4200E06F +:108F8000AE4300E4AE4600D88FB000108FB2001898 +:108F90000A00057D27BD0028978500929783007CF5 +:108FA00027BDFFE8AFB0001000A3102BAFBF001427 +:108FB000240400058F900058104000552409000239 +:108FC0000E0006958F850080AF8200942404000374 +:108FD0001040004F240900023C0680000E00008172 +:108FE000ACC2002024070001240820001040004DDE +:108FF00024040005978E00928F8AFF2C24090050CC +:1090000025C50001A7850092A14900003C0D08007C +:109010008DAD0064240380008F84FF28000D66005E +:10902000AD4C0018A5400006954B000A8F85FF3017 +:109030002402FF8001633024A546000A915F000AE4 +:109040000000482103E2C825A159000AA0A0000899 +:10905000A140004CA08000D5961800029783009094 +:109060003C020004A49800EA960F00022418FFBFF7 +:1090700025EE2401A48E00BE8E0D0004ACAD00448C +:109080008E0C0008ACAC0040A4A00050A4A000547A +:109090008E0B000C240C0030AC8B00288E060010C8 +:1090A000AC860024A480003EA487004EA487005014 +:1090B000A483003CAD420074AC8800D8ACA800602A +:1090C000A08700FC909F00D433F9007FA09900D4C2 +:1090D000909000D402187824A08F00D4914E007C88 +:1090E00035CD0001A14D007C938B009CAD480070F4 +:1090F000AC8C00DCA08B00D68F8800888F87008422 +:10910000AC8800C4AC8700C8A5400078A540007AB0 +:109110008FBF00148FB000100120102103E0000861 +:1091200027BD00188F8500940E0007258F860080CC +:109130000A000E9F2409000227BDFFE0AFB0001017 +:109140008F900058AFB10014AFBF00188E09000413 +:109150000E00054A000921C08E0800048F84FF28F4 +:109160008F82FF30000839C03C068000ACC7002069 +:10917000948500EA904300131460001C30B1FFFF97 +:109180008F8CFF2C918B0008316A00401540000B3A +:10919000000000008E0D0004022030218FBF001857 +:1091A0008FB100148FB00010240400220000382179 +:1091B000000D29C00A000D2F27BD00200E000098C9 +:1091C000000000008E0D0004022030218FBF001827 +:1091D0008FB100148FB00010240400220000382149 +:1091E000000D29C00A000D2F27BD00200E000090A1 +:1091F000000000008E0D0004022030218FBF0018F7 +:109200008FB100148FB00010240400220000382118 +:10921000000D29C00A000D2F27BD002027BDFFE04B +:10922000AFB200183092FFFFAFB00010AFBF001C0C +:10923000AFB100141240001E000080218F8600583C +:109240008CC500002403000600053F02000514023F +:1092500030E4000714830016304500FF2CA80006F8 +:1092600011000040000558803C0C0800258C58BCBB +:10927000016C50218D490000012000080000000011 +:109280008F8E0098240D000111CD005024020002A1 +:10929000AF820098260900013130FFFF24C800206A +:1092A0000212202B010030211480FFE5AF88005806 +:1092B000020010218FBF001C8FB200188FB1001464 +:1092C0008FB0001003E0000827BD00209387007EC8 +:1092D00054E00034000030210E000DE700000000D3 +:1092E0008F8600580A000EFF240200018F87009825 +:1092F0002405000210E50031240400130000282199 +:1093000000003021240700010E000D2F0000000096 +:109310000A000F008F8600588F83009824020002F5 +:109320001462FFF6240400120E000D9A00000000E3 +:109330008F85009400403021240400120E000D2F70 +:10934000000038210A000F008F8600588F83009894 +:109350002411000310710029241F0002107FFFCE8A +:1093600026090001240400100000282100003021FB +:109370000A000F1D240700018F91009824060002A7 +:109380001626FFF9240400100E000E410000000014 +:10939000144000238F9800588F8600580A000EFF53 +:1093A00024020003240400140E000D2F00002821C5 +:1093B0008F8600580A000EFF240200020E000EA93C +:1093C000000000000A000F008F8600580E000D3FBD +:1093D00000000000241900022404001400002821C9 +:1093E0000000302100003821AF9900980E000D2FA9 +:1093F000000000000A000F008F8600580E000D5775 +:10940000000000008F8500942419000200403021E4 +:1094100024040010000038210A000F56AF9900986C +:109420000040382124040010970F0002000028217A +:109430000E000D2F31E6FFFF8F8600580A000F0047 +:10944000AF9100988F84FF2C3C077FFF34E6FFFF2D +:109450008C8500182402000100A61824AC83001893 +:1094600003E00008A08200053084FFFF30A5FFFF65 +:109470001080000700001821308200011040000217 +:1094800000042042006518211480FFFB00052840DD +:1094900003E000080060102110C000070000000079 +:1094A0008CA2000024C6FFFF24A50004AC820000AB +:1094B00014C0FFFB2484000403E000080000000047 +:1094C00010A0000824A3FFFFAC86000000000000ED +:1094D000000000002402FFFF2463FFFF1462FFFA74 +:1094E0002484000403E0000800000000000411C010 +:1094F00003E000082442024027BDFFE8AFB000109F +:1095000000808021AFBF00140E000F9600A0202124 +:1095100000504821240AFF808FBF00148FB0001034 +:10952000012A30243127007F3C08800A3C042100B6 +:1095300000E8102100C428253C03800027BD001846 +:10954000AC650024AF820038AC400000AC6500245C +:1095500003E00008AC4000403C0D08008DAD005811 +:1095600000056180240AFF8001A45821016C482174 +:10957000012A30243127007F3C08800C3C04210064 +:1095800000E8102100C428253C038000AC650028B9 +:10959000AF82003403E00008AC40002430A5FFFF98 +:1095A0003C0680008CC201B80440FFFE3C086015F8 +:1095B00000A838253C031000ACC40180ACC0018475 +:1095C000ACC7018803E00008ACC301B83C0D08003B +:1095D0008DAD005800056180240AFF8001A4582148 +:1095E000016C4021010A4824000931403107007F05 +:1095F00000C728253C04200000A418253C02800058 +:10960000AC43083003E00008AF80003427BDFFE81A +:10961000AFB0001000808021AFBF00140E000F9685 +:1096200000A0202100504821240BFF80012B502452 +:10963000000A39403128007F3C0620008FBF00140B +:109640008FB0001000E8282534C2000100A21825C0 +:109650003C04800027BD0018AC83083003E00008FC +:10966000AF8000383C0580088CA700603C0680086D +:109670000087102B144000112C8340008CA8006040 +:109680002D0340001060000F240340008CC90060CF +:109690000089282B14A00002008018218CC30060D0 +:1096A00000035A42000B30803C0A0800254A59202A +:1096B00000CA202103E000088C8200001460FFF340 +:1096C0002403400000035A42000B30803C0A08008B +:1096D000254A592000CA202103E000088C8200009E +:1096E0003C05800890A60008938400AB24C20001CA +:1096F000304200FF3043007F1064000C0002382726 +:10970000A0A200083C0480008C85017804A0FFFE24 +:109710008F8A00A0240900023C081000AC8A014096 +:10972000A089014403E00008AC8801780A00101BFE +:1097300030E2008027BDFFD8AFB200188F9200A49E +:10974000AFBF0020AFB3001CAFB00010AFB100142A +:109750008F9300348E5900283C1000803C0EFFEFA0 +:10976000AE7900008E580024A260000A35CDFFFFBC +:10977000AE7800049251002C3C0BFF9F356AFFFF2E +:10978000A271000C8E6F000C3C080040A271000B0F +:1097900001F06025018D4824012A382400E8302595 +:1097A000AE66000C8E450004AE6000183C0400FF5D +:1097B000AE6500148E43002C3482FFFFA6600008C3 +:1097C0000062F824AE7F00108E5900088F9000A030 +:1097D000964E0012AE7900208E51000C31D83FFF1A +:1097E00000187980AE7100248E4D001401F06021C4 +:1097F00031CB0001AE6D00288E4A0018000C41C22A +:10980000000B4B80AE6A002C8E46001C01093821EB +:10981000A667001CAE660030964500028E4400200C +:10982000A665001EAE64003492430033306200042B +:1098300054400006924700003C0280083443010077 +:109840008C7F00D0AE7F0030924700008F860038BA +:10985000A0C700309245003330A4000250800007BA +:10986000925100018F880038240BFF80910A00304C +:10987000014B4825A1090030925100018F9000381A +:10988000240CFFBF2404FFDFA21100318F8D0038AC +:109890003C1880083711008091AF003C31EE007F0A +:1098A000A1AE003C8F890038912B003C016C502404 +:1098B000A12A003C8F9F00388E68001493E6003C7C +:1098C0002D0700010007114000C4282400A218251C +:1098D000A3E3003C8F87003896590012A4F90032A8 +:1098E0008E450004922E007C30B0000300107823D7 +:1098F00031ED000300AD102131CC000215800002D3 +:1099000024460034244600303C0280083443008062 +:10991000907F007C00BFC824333800041700000289 +:1099200024C2000400C010218F98003824190002BE +:10993000ACE20034A3190000924F003F8F8E003834 +:109940003C0C8008358B0080A1CF00018F9100383E +:10995000924D003F8E440004A62D0002956A005CE3 +:109960000E000FF43150FFFF00024B800209382532 +:109970003C08420000E82825AE2500048E4400384B +:109980008F850038ACA400188E460034ACA6001CAD +:10999000ACA0000CACA00010A4A00014A4A0001661 +:1099A000A4A00020A4A00022ACA000248E62001479 +:1099B00050400001240200018FBF00208FB3001C23 +:1099C0008FB200188FB100148FB00010ACA2000845 +:1099D0000A00101327BD002827BDFFC83C058008DA +:1099E00034A40080AFBF0034AFBE0030AFB7002C4E +:1099F000AFB60028AFB50024AFB40020AFB3001C51 +:109A0000AFB20018AFB10014AFB00010948300786B +:109A10009482007A104300512405FFFF0080F0215A +:109A20000A0011230080B821108B004D8FBF003435 +:109A30008F8600A03C1808008F18005C2411FF805E +:109A40003C1680000306782101F18024AED0002C62 +:109A500096EE007A31EC007F3C0D800E31CB7FFF1B +:109A6000018D5021000B4840012AA82196A4000036 +:109A70003C0808008D0800582405FF8030953FFF02 +:109A800001061821001539800067C8210325F82434 +:109A90003C02010003E290253338007F3C11800C2A +:109AA000AED20028031190219250000D320F000415 +:109AB00011E0003702E0982196E3007A96E8007AF8 +:109AC00096E5007A2404800031077FFF24E300013B +:109AD00030627FFF00A4F82403E2C825A6F9007ACB +:109AE00096E6007A3C1408008E94006030D67FFF22 +:109AF00012D400C1000000008E5800188F8400A00E +:109B000002A028212713FFFF0E000FCEAE53002C1A +:109B100097D5007897D4007A12950010000028217C +:109B20003C098008352401003C0A8008914800085F +:109B3000908700D53114007F30E400FF0284302B81 +:109B400014C0FFB9268B0001938E00AB268C000158 +:109B5000008E682115ACFFB78F8600A08FBF003440 +:109B60008FBE00308FB7002C8FB600288FB5002431 +:109B70008FB400208FB3001C8FB200188FB1001477 +:109B80008FB0001000A0102103E0000827BD0038AE +:109B900000C020210E000F99028028218E4B00105A +:109BA0008E4C00308F84003824090002016C502351 +:109BB000AE4A0010A089000096E3005C8E4400309D +:109BC0008F9100380E000FF43070FFFF00024380C9 +:109BD000020838253C02420000E22825AE25000498 +:109BE0008E5F00048F8A00388E590000240B000815 +:109BF000AD5F001CAD590018AD40000CAD40001029 +:109C00009246000A240400052408C00030D000FF5A +:109C1000A550001496580008A55800169251000A45 +:109C20003C188008322F00FFA54F0020964E0008F8 +:109C300037110100A54E0022AD400024924D000BCB +:109C400031AC00FFA54C0002A14B00018E49003051 +:109C50008F830038240BFFBFAC690008A06400307C +:109C60008F9000382403FFDF9607003200E8282495 +:109C700000B51025A6020032921F003233F9003FD2 +:109C800037260040A20600328F8C0038AD800034A9 +:109C90008E2F00D0AD8F0038918E003C3C0F7FFF9F +:109CA00031CD007FA18D003C8F84003835EEFFFF61 +:109CB000908A003C014B4824A089003C8F850038E5 +:109CC00090A8003C01033824A0A7003C8E42003439 +:109CD0008F9100383C038008AE2200408E59002C42 +:109CE0008E5F0030033F3023AE26004492300048A0 +:109CF0003218007FA23800488F8800388E4D00301F +:109D00008D0C004801AE582401965024014B482583 +:109D1000AD0900489244000AA104004C964700088F +:109D20008F850038A4A7004E8E5000308E4400303E +:109D30000E0003818C65006092F9007C0002F940FE +:109D4000004028210002110003E2302133360002D6 +:109D500012C00003020680210005B0800216802197 +:109D6000926D007C31B30004126000020005708027 +:109D7000020E80218E4B00308F8800382405800031 +:109D8000316A0003000A4823312400030204182129 +:109D9000AD03003496E4007A96F0007A96F1007AEA +:109DA00032027FFF2447000130FF7FFF0225C824D5 +:109DB000033F3025A6E6007A96F8007A3C120800A8 +:109DC0008E520060330F7FFF11F200180000000078 +:109DD0008F8400A00E000FCE02A028218F8400A047 +:109DE0000E000FDE028028210E001013000000007C +:109DF0000A00111F0000000096F1007A022480245E +:109E0000A6F0007A92EF007A92EB007A31EE00FF32 +:109E1000000E69C2000D6027000C51C03169007F3F +:109E2000012A20250A001119A2E4007A96E6007A98 +:109E300000C5C024A6F8007A92EF007A92F3007A67 +:109E400031F200FF001271C2000E6827000DB1C090 +:109E5000326C007F01962825A2E5007A0A0011D015 +:109E60008F8400A03C0380003084FFFF30A5FFFFFB +:109E7000AC640018AC65001C03E000088C620014A0 +:109E800027BDFFA03C068008AFBF005CAFBE0058F6 +:109E9000AFB70054AFB60050AFB5004CAFB40048F8 +:109EA000AFB30044AFB20040AFB1003CAFB0003838 +:109EB00034C80100910500D590C700083084FFFF29 +:109EC00030A500FF30E2007F0045182AAFA4001043 +:109ED000A7A00018A7A0002610600055AFA000148E +:109EE00090CA00083149007F00A9302324D3FFFF26 +:109EF0000013802B8FB400100014902B02128824C2 +:109F0000522000888FB300143C03800894790052DB +:109F1000947E00508FB60010033EC0230018BC0092 +:109F2000001714030016FC0002C2A82A16A00002A3 +:109F3000001F2C030040282100133C0000072403CD +:109F400000A4102A5440000100A020212885000907 +:109F500014A000020080A021241400083C0C8008FA +:109F60008D860048001459808D88004C3C03800089 +:109F70003169FFFF3C0A0010012A202534710400DA +:109F8000AC660038AF9100A4AC68003CAC64003013 +:109F900000000000000000000000000000000000C1 +:109FA00000000000000000000000000000000000B1 +:109FB0008C6E000031CD002011A0FFFD0014782A26 +:109FC00001F01024104000390000A8213C16800840 +:109FD00092D700083C1280008E44010032F6007FC8 +:109FE0000E000F9902C028218E3900108E44010006 +:109FF0000000902133373FFF0E000FB102E028210F +:10A00000923800003302003F2C500008520000102C +:10A0100000008821000210803C030800246358E4FB +:10A020000043F8218FFE000003C00008000000007C +:10A0300090CF0008938C00AB31EE007F00AE682318 +:10A04000018D58210A0012172573FFFF0000882197 +:10A050003C1E80008FC401000E000FCE02E02821BC +:10A060008FC401000E000FDE02C028211220000F55 +:10A070000013802B8F8B00A426A400010004AC00E9 +:10A08000027298230015AC032578004002B4B02A70 +:10A090000013802B241700010300882102D0102414 +:10A0A000AF9800A41440FFC9AFB700143C07800864 +:10A0B00094E200508FAE00103C05800002A288217F +:10A0C0003C060020A4F10050ACA6003094F40050EF +:10A0D00094EF005201D51823306CFFFF11F4001EDD +:10A0E000AFAC00108CEF004C001561808CF500487F +:10A0F00001EC28210000202100AC582B02A4C02133 +:10A10000030BB021ACE5004CACF600488FB4001056 +:10A110000014902B021288241620FF7C3C03800838 +:10A120008FB300148FBF005C8FBE00583A620001ED +:10A130008FB700548FB600508FB5004C8FB40048D5 +:10A140008FB300448FB200408FB1003C8FB0003815 +:10A1500003E0000827BD006094FE00548CF2004428 +:10A1600033C9FFFE0009C8C00259F821ACBF003C4A +:10A170008CE800448CAD003C010D50231940003B9D +:10A18000000000008CF7004026E20001ACA200387D +:10A190003C05005034A700103C038000AC67003041 +:10A1A00000000000000000000000000000000000AF +:10A1B000000000000000000000000000000000009F +:10A1C0008C7800003316002012C0FFFD3C1180087F +:10A1D000962200543C1580003C068008304E000159 +:10A1E000000E18C0007578218DEC04003C070800B3 +:10A1F0008CE700443C040020ACCC00488DF40404FF +:10A20000240B0001ACD4004C10EB0260AEA4003073 +:10A21000963900523C0508008CA5004000B99021F9 +:10A22000A6320052963F005427ED0001A62D00549F +:10A230009626005430C4FFFF5487FF2F8FB40010C0 +:10A2400030A5FFFF0E0011F4A62000543C070800C3 +:10A250008CE70024963E00520047B82303D74823DA +:10A26000A62900520A0012198FB400108CE2004097 +:10A270000A0012BE00000000922400012407000121 +:10A280003085007F14A7001C97AD00268E2B00148C +:10A29000240CC000316A3FFF01AC48243C06080092 +:10A2A0008CC60060012A402531043FFF0086882BC0 +:10A2B00012200011A7A800263C0508008CA5005814 +:10A2C0008F9100A0000439802402FF8000B1182182 +:10A2D0000067F82103E2F02433F8007F3C1280008D +:10A2E0003C19800EAE5E002C0319702191D0000D38 +:10A2F000360F0004A1CF000D0E001028241200011B +:10A30000241100013C1E80008FC401000E000FCEFE +:10A3100002E028218FC401000E000FDE02C02821B8 +:10A320001620FF558F8B00A40A0012860013802B85 +:10A330008F8600A490C80001310400201080019194 +:10A34000241000013C048008348B0080916A007C5A +:10A350008F9E0034AFA0002C314900011120000F66 +:10A36000AFB000288CCD00148C8E006001AE602B45 +:10A370001580000201A038218C8700603C188008FD +:10A38000370300808C70007000F0782B15E000021D +:10A3900000E020218C640070AFA4002C3C028008F7 +:10A3A000344500808CD200148CBF0070025FC82B33 +:10A3B00017200002024020218CA400708FA7002CDF +:10A3C0000087182310600003AFA3003024050002AB +:10A3D000AFA500288FA400280264882B162000BA9D +:10A3E000000018218CD000388FCE000C3C0F00806C +:10A3F000AFD000008CCD00343C0CFF9F01CF58251E +:10A40000AFCD000490CA003F3586FFFF01662024CF +:10A410003C0900203C08FFEFA3CA000B0089382547 +:10A420003511FFFF00F118243C0500088F8700A4B8 +:10A430000065C825AFD9000C8CE20014AFC000182D +:10A440008FA60030AFC200148CF800188FB0002C1B +:10A450003C1FFFFBAFD8001C8CEF000837F2FFFF5A +:10A4600003326824AFCF00248CEC000C020670216C +:10A47000AFCD000CA7C00038A7C0003AAFCE002C6B +:10A48000AFCC0020AFC000288CEA00148FAB002CAA +:10A49000014B48230126402311000011AFC80010D2 +:10A4A00090EB003D8FC900048FC80000000B5100E5 +:10A4B000012A28210000102100AA882B010218215E +:10A4C0000071F821AFC50004AFDF000090F2003D3D +:10A4D000A3D2000A8F9900A497380006A7D80008D5 +:10A4E0008F910038240800023C038008A228000055 +:10A4F0003465008094BF005C8FA4002C33F0FFFF14 +:10A500000E000FF48F9200380002CB808F8500A4DC +:10A51000021978253C18420001F87025AE4E00045F +:10A520008F8400388CAD0038AC8D00188CAC0034B2 +:10A53000AC8C001CAC80000CAC800010A48000141B +:10A54000A4800016A4800020A4800022AC800024F7 +:10A5500090A6003F8FA7002CA486000250E0019235 +:10A56000240700018FA200305040000290A2003D5D +:10A5700090A2003E244A0001A08A00018F84003886 +:10A580008FA9002CAC8900083C128008364D008051 +:10A5900091AC007C3186000214C000022407003414 +:10A5A000240700308F8500A43C198008373F0080C5 +:10A5B00090B0000093F9007C240E0004A0900030BD +:10A5C0008F8F00A48FB8002C8F8D003891F200017E +:10A5D0003304000301C46023A1B200318F8E003820 +:10A5E0008F8600A42402C00095CA003294C90012CC +:10A5F0008FAB002C0142402431233FFF010388250B +:10A60000A5D1003291D000323185000300EBF82152 +:10A610003218003F370F0040A1CF00328FA4002C2A +:10A6200003E5382133280004108000028F850038AC +:10A6300000E838213C0A8008ACA700343549010005 +:10A640008D2800D08FA3002C2419FFBFACA80038A0 +:10A6500090B1003C2C640001240FFFDF3227007F03 +:10A66000A0A7003C8F98003800049140931F003C45 +:10A6700003F98024A310003C8F8C0038918E003C9D +:10A6800001CF682401B23025A186003C8F8900A447 +:10A690008F8800388D2B0020AD0B00408D220024C8 +:10A6A000AD0200448D2A0028AD0A00488D23002CFD +:10A6B0000E001013AD03004C8FB1002824070002D8 +:10A6C000122700118FA300280003282B00058023E8 +:10A6D0000270982400608021006090210A00126FAF +:10A6E0000010882B962900128F8400A00000902172 +:10A6F0003125FFFFA7A900180E000FC22411000189 +:10A700000A00131D3C1E80003C0B80003C12800898 +:10A710008D640100924900088F92FF340E000F995A +:10A720003125007F8F9900388FA700288FA4003033 +:10A73000A3270000965F005C33F0FFFF0E000FF4CC +:10A740008F91003800026B80020D80253C0842008A +:10A750008F8D00A402085025AE2A00048DA5003874 +:10A760008F8A003800007821000F1100AD450018D5 +:10A770008DB800343C047FFF3488FFFFAD58001CC7 +:10A7800091A6003E8D4C001C8D4900180006190052 +:10A79000000677020183C821004E58250323882B29 +:10A7A000012B382100F1F821AD59001CAD5F0018D4 +:10A7B000AD40000CAD40001091B0003E8FA40030C1 +:10A7C00024090005A550001495A500042419C00013 +:10A7D00000884024A545001691B8003EA5580020E9 +:10A7E00095AF0004A54F0022AD40002491AE003F7C +:10A7F000A54E000291A6003E91AC003D01861023BB +:10A80000244B0001A14B00018F9100388FA3003031 +:10A810003C028008344B0100AE230008A22900301E +:10A820008F8C00388F8700A4959F003294F000121F +:10A830002407FFBF033FC02432053FFF03057825EF +:10A84000A58F0032918E00322418FFDF31CD003FFA +:10A8500035A60040A18600328F910038240DFFFFFD +:10A86000240CFF80AE2000348D6A00D0AE2A003860 +:10A870009223003C3069007FA229003C8F90003871 +:10A880003C0380009219003C0327F824A21F003CDF +:10A890008F8E003891C5003C00B87824A1CF003CD1 +:10A8A0008F8A00383C0E8008AD4D00408FA6002CEA +:10A8B000AD46004491420048004C5825A14B004849 +:10A8C0008F9000388F9900A48E09004801238824B6 +:10A8D00002283825AE070048933F003EA21F004CD7 +:10A8E0008F9800A48F8F003897050004A5E5004ECF +:10A8F0000E0003818DC500609246007C8FAC003055 +:10A9000000026940000291000040282130CB000283 +:10A9100001B21021156000AA018230213C0E80088E +:10A9200035C20080904C007C31830004106000032D +:10A930008FB900300005788000CF3021241F00043B +:10A940008F910038332D000303ED8023320800037C +:10A9500000C85021AE2A00343C188000A7C500383A +:10A960003C0680088F04010090DE00080E000FDE18 +:10A9700033C5007F0E001013000000000A00140D04 +:10A980008FA300288F9800348CC90038241F00033F +:10A99000A7000008AF0900008CC50034A300000A1E +:10A9A0008F9900A4AF0500043C080080932D003F60 +:10A9B000A31F000C8F0A000C3C02FF9FA30D000B8D +:10A9C0000148F0253451FFFF3C12FFEF8F9900A49E +:10A9D00003D170243646FFFF01C61824AF03000CD4 +:10A9E0008F2C0014972900128F8400A0AF0C001048 +:10A9F0008F2F0014AF000018AF000020AF0F00141D +:10AA0000AF0000248F270018312F3FFF000F59801F +:10AA1000AF0700288F2500080164F821312D0001BF +:10AA2000AF0500308F31000C8F920038001F51C2EB +:10AA3000000D438001481021241E00023C068008BE +:10AA4000A702001CA7000034AF11002CA25E00007A +:10AA500034D20080964E005C8F9900383C0342004F +:10AA600031CCFFFF01833825AF2700048F8B00A472 +:10AA7000240500012402C0008D640038240700343E +:10AA8000AF2400188D690034AF29001CAF20000CE2 +:10AA9000AF200010A7200014A7200016A720002038 +:10AAA000A7200022AF200024A7300002A325000128 +:10AAB0008F8800388F9F00A4AD10000893ED000030 +:10AAC000A10D00308F8A00A48F98003891510001A9 +:10AAD000A31100318F8B0038957E003203C27024A1 +:10AAE00001CF6025A56C0032916300323064003FD5 +:10AAF000A16400329249007C3125000214A00002BA +:10AB00008F840038240700303C198008AC8700345B +:10AB1000373201008E5F00D0240AFFBF020090216F +:10AB2000AC9F0038908D003C31A8007FA088003C8D +:10AB30008F9E003893C2003C004A8824A3D1003C79 +:10AB40008F8300380010882B9066003C34CE0020A4 +:10AB5000A06E003C8F8400A48F9800388C8C00205D +:10AB6000AF0C00408C8F0024AF0F00448C8700286E +:10AB7000AF0700488C8B002CAF0B004C0E0010135D +:10AB80003C1E80000A0012700000000094C80052B1 +:10AB90003C0A08008D4A002401488821A4D10052B3 +:10ABA0000A0012198FB40010A08700018F840038AA +:10ABB000240B0001AC8B00080A0013BE3C12800875 +:10ABC000000520800A0014A200C4302127BDFFE048 +:10ABD0003C0D8008AFB20018AFB00010AFBF001C32 +:10ABE000AFB1001435B200808E4C001835A80100BA +:10ABF000964B000695A70050910900FC000C5602E8 +:10AC0000016728233143007F312600FF240200031F +:10AC1000AF8300A8AF8400A010C2001B30B0FFFFBC +:10AC2000910600FC2412000530C200FF10520033D0 +:10AC300000000000160000098FBF001C8FB2001832 +:10AC40008FB100148FB00010240D0C003C0C80005C +:10AC500027BD002003E00008AD8D00240E0011FB8D +:10AC6000020020218FBF001C8FB200188FB100148A +:10AC70008FB00010240D0C003C0C800027BD00207C +:10AC800003E00008AD8D0024965800789651007AB4 +:10AC9000924E007D0238782631E8FFFF31C400C0B3 +:10ACA000148000092D11000116000037000000007B +:10ACB0005620FFE28FBF001C0E0010D100000000E4 +:10ACC0000A00156A8FBF001C1620FFDA0000000082 +:10ACD0000E0010D1000000001440FFD88FBF001CF0 +:10ACE0001600002200000000925F007D33E2003F6A +:10ACF000A242007D0A00156A8FBF001C950900EA78 +:10AD00008F86008000802821240400050E0007257E +:10AD10003130FFFF978300923C0480002465FFFFE1 +:10AD2000A78500928C8A01B80540FFFE0000000054 +:10AD3000AC8001808FBF001CAC9001848FB20018E2 +:10AD40008FB100148FB000103C0760133C0B100053 +:10AD5000240D0C003C0C800027BD0020AC8701882E +:10AD6000AC8B01B803E00008AD8D00240E0011FB90 +:10AD7000020020215040FFB18FBF001C925F007D78 +:10AD80000A00159733E2003F0E0011FB020020215C +:10AD90001440FFAA8FBF001C122000070000000013 +:10ADA0009259007D3330003F36020040A242007DC0 +:10ADB0000A00156A8FBF001C0E0010D100000000B1 +:10ADC0005040FF9E8FBF001C9259007D3330003FE2 +:10ADD0000A0015C636020040000000000000001BFB +:10ADE0000000000F0000000A00000008000000063C +:10ADF0000000000500000005000000040000000441 +:10AE00000000000300000003000000030000000336 +:10AE10000000000300000002000000020000000229 +:10AE2000000000020000000200000002000000021A +:10AE3000000000020000000200000002000000020A +:10AE400000000002000000020000000200000002FA +:10AE50000000000100000001000000018008010066 +:10AE6000800800808008000000000C000000308096 +:10AE7000080011D00800127C08001294080012A8E3 +:10AE8000080012BC080011D0080011D0080012F010 +:10AE90000800132C080013400800138808001A8CBF +:10AEA00008001A8C08001AC408001AC408001AD82E +:10AEB00008001AA808001D0008001CCC08001D5836 +:10AEC00008001D5808001DE008001D108008024001 +:10AED000080027340800256C0800275C080027F4C8 +:10AEE0000800293C0800298808002AAC080029B479 +:10AEF00008002A38080025DC08002EDC08002EA4F3 +:10AF000008002588080025880800258808002B20CF +:10AF100008002B20080025880800258808002DD06F +:10AF2000080025880800258808002588080025884D +:10AF300008002E0C080025880800258808002588B0 +:10AF4000080025880800258808002588080025882D +:10AF5000080025880800258808002588080025881D +:10AF6000080025880800258808002588080029A8E9 +:10AF7000080025880800258808002E680800258814 +:10AF800008002588080025880800258808002588ED +:10AF900008002588080025880800258808002588DD +:10AFA00008002588080025880800258808002588CD +:10AFB00008002588080025880800258808002588BD +:10AFC00008002CF4080025880800258808002C6853 +:10AFD00008002BC408003CE408003CB808003C848E +:10AFE00008003C5808003C3808003BEC8008010091 +:10AFF00080080080800800008008008008004C6401 +:10B0000008004C9C08004BE408004C6408004C64A9 +:10B01000080049B808004C64080050500A000C842D +:10B0200000000000000000000000000D7278703683 +:10B030002E322E31620000000602010300000000E3 +:10B0400000000001000000000000000000000000FF +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000000000000000000000008B +:10D5A000000000000000000000000000000000007B +:10D5B000000000000000000000000000000000006B +:10D5C000000000000000000000000000000000005B +:10D5D000000000000000000000000000000000004B +:10D5E000000000000000000000000000000000003B +:10D5F000000000000000000000000000000000002B +:10D60000000000000000000000000000000000001A +:10D61000000000000000000000000000000000000A +:10D6200000000000000000000000000000000000FA +:10D6300000000000000000000000000000000000EA +:10D6400000000000000000000000000000000000DA +:10D6500000000000000000000000000000000000CA +:10D6600000000000000000000000000000000000BA +:10D6700000000000000000000000000000000000AA +:10D68000000000000000000000000000000000009A +:10D69000000000000000000000000000000000008A +:10D6A000000000000000000000000000000000007A +:10D6B000000000000000000000000000000000006A +:10D6C000000000000000000000000000000000005A +:10D6D000000000000000000000000000000000004A +:10D6E000000000000000000000000000000000003A +:10D6F000000000000000000000000000000000002A +:10D700000000000000000000000000000000000019 +:10D710000000000000000000000000000000000009 +:10D7200000000000000000000000000000000000F9 +:10D7300000000000000000000000000000000000E9 +:10D7400000000000000000000000000000000000D9 +:10D7500000000000000000000000000000000000C9 +:10D7600000000000000000000000000000000000B9 +:10D7700000000000000000000000000000000000A9 +:10D780000000000000000000000000000000000099 +:10D790000000000000000000000000000000000089 +:10D7A0000000000000000000000000000000000079 +:10D7B0000000000000000000000000000000000069 +:10D7C0000000000000000000000000000000000059 +:10D7D0000000000000000000000000000000000049 +:10D7E0000000000000000000000000000000000039 +:10D7F0000000000000000000000000000000000029 +:10D800000000000000000000000000000000000018 +:10D810000000000000000000000000000000000008 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000000000000E8 +:10D8400000000000000000000000000000000000D8 +:10D8500000000000000000000000000000000000C8 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D880000000000000000000000000000000000098 +:10D890000000000000000000000000000000000088 +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0000000000000000000000000000000000058 +:10D8D0000000000000000000000000000000000048 +:10D8E0000000000000000000000000000000000038 +:10D8F0000000000000000000000000000000000028 +:10D900000000000000000000000000000000000017 +:10D910000000000000000000000000000000000007 +:10D9200000000000000000000000000000000000F7 +:10D9300000000000000000000000000000000000E7 +:10D9400000000000000000000000000000000000D7 +:10D9500000000000000000000000000000000000C7 +:10D9600000000000000000000000000000000000B7 +:10D9700000000000000000000000000000000000A7 +:10D980000000000000000000000000000000000097 +:10D990000000000000000000000000000000000087 +:10D9A0000000000000000000000000000000000077 +:10D9B0000000000000000000000000000000000067 +:10D9C0000000000000000000000000000000000057 +:10D9D0000000000000000000000000000000000047 +:10D9E0000000000000000000000000000000000037 +:10D9F0000000000000000000000000000000000027 +:10DA00000000000000000000000000000000000016 +:10DA10000000000000000000000000000000000006 +:10DA200000000000000000000000000000000000F6 +:10DA300000000000000000000000000000000000E6 +:10DA400000000000000000000000000000000000D6 +:10DA500000000000000000000000000000000000C6 +:10DA600000000000000000000000000000000000B6 +:10DA700000000000000000000000000000000000A6 +:10DA80000000000000000000000000000000000096 +:10DA90000000000000000000000000000000000086 +:10DAA0000000000000000000000000000000000076 +:10DAB0000000000000000000000000000000000066 +:10DAC0000000000000000000000000000000000056 +:10DAD0000000000000000000000000000000000046 +:10DAE0000000000000000000000000000000000036 +:10DAF0000000000000000000000000000000000026 +:10DB00000000000000000000000000000000000015 +:10DB10000000000000000000000000000000000005 +:10DB200000000000000000000000000000000000F5 +:10DB300000000000000000000000000000000000E5 +:10DB400000000000000000000000000000000000D5 +:10DB500000000000000000000000000000000000C5 +:10DB600000000000000000000000000000000000B5 +:10DB700000000000000000000000000000000000A5 +:10DB80000000000000000000000000000000000095 +:10DB90000000000000000000000000000000000085 +:10DBA0000000000000000000000000000000000075 +:10DBB0000000000000000000000000000000000065 +:10DBC0000000000000000000000000000000000055 +:10DBD0000000000000000000000000000000000045 +:10DBE0000000000000000000000000000000000035 +:10DBF0000000000000000000000000000000000025 +:10DC00000000000000000000000000000000000014 +:10DC10000000000000000000000000000000000004 +:10DC200000000000000000000000000000000000F4 +:10DC300000000000000000000000000000000000E4 +:10DC400000000000000000000000000000000000D4 +:10DC500000000000000000000000000000000000C4 +:10DC600000000000000000000000000000000000B4 +:10DC700000000000000000000000000000000000A4 +:10DC80000000000000000000000000000000000094 +:10DC90000000000000000000000000000000000084 +:10DCA0000000000000000000000000000000000074 +:10DCB0000000000000000000000000000000000064 +:10DCC0000000000000000000000000000000000054 +:10DCD0000000000000000000000000000000000044 +:10DCE0000000000000000000000000000000000034 +:10DCF0000000000000000000000000000000000024 +:10DD00000000000000000000000000000000000013 +:10DD10000000000000000000000000000000000003 +:10DD200000000000000000000000000000000000F3 +:10DD300000000000000000000000000000000000E3 +:10DD400000000000000000000000000000000000D3 +:10DD500000000000000000000000000000000000C3 +:10DD600000000000000000000000000000000000B3 +:10DD700000000000000000000000000000000000A3 +:10DD80000000000000000000000000000000000093 +:10DD90000000000000000000000000000000000083 +:10DDA0000000000000000000000000000000000073 +:10DDB0000000000000000000000000000000000063 +:10DDC0000000000000000000000000000000000053 +:10DDD0000000000000000000000000000000000043 +:10DDE0000000000000000000000000000000000033 +:10DDF0000000000000000000000000000000000023 +:10DE00000000000000000000000000000000000012 +:10DE10000000000000000000000000000000000002 +:10DE200000000000000000000000000000000000F2 +:10DE300000000000000000000000000000000000E2 +:10DE400000000000000000000000000000000000D2 +:10DE500000000000000000000000000000000000C2 +:10DE600000000000000000000000000000000000B2 +:10DE700000000000000000000000000000000000A2 +:10DE80000000000000000000000000000000000092 +:10DE90000000000000000000000000000000000082 +:10DEA0000000000000000000000000000000000072 +:10DEB0000000000000000000000000000000000062 +:10DEC0000000000000000000000000000000000052 +:10DED0000000000000000000000000000000000042 +:10DEE0000000000000000000000000000000000032 +:10DEF0000000000000000000000000000000000022 +:10DF00000000000000000000000000000000000011 +:10DF10000000000000000000000000000000000001 +:10DF200000000000000000000000000000000000F1 +:10DF300000000000000000000000000000000000E1 +:10DF400000000000000000000000000000000000D1 +:10DF500000000000000000000000000000000000C1 +:10DF600000000000000000000000000000000000B1 +:10DF700000000000000000000000000000000000A1 +:10DF80000000000000000000000000000000000091 +:10DF90000000000000000000000000000000000081 +:10DFA0000000000000000000000000000000000071 +:10DFB0000000000000000000000000000000000061 +:10DFC0000000000000000000000000000000000051 +:10DFD0000000000000000000000000000000000041 +:10DFE0000000000000000000000000000000000031 +:10DFF0000000000000000000000000000000000021 +:10E000000000000000000000000000000000000010 +:10E010000000000000000000000000000000000000 +:10E0200000000000000000000000000000000000F0 +:10E0300000000000000000000000000000000000E0 +:10E0400000000000000000000000000000000000D0 +:10E0500000000000000000000000000000000000C0 +:10E0600000000000000000000000000000000000B0 +:10E0700000000000000000000000000000000000A0 +:10E080000000000000000000000000000000000090 +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000000000000000000000000000060 +:10E0C0000000000000000000000000000000000050 +:10E0D0000000000000000000000000000000000040 +:10E0E0000000000000000000000000000000000030 +:10E0F0000000000000000000000000000000000020 +:10E10000000000000000000000000000000000000F +:10E1100000000000000000000000000000000000FF +:10E1200000000000000000000000000000000000EF +:10E1300000000000000000000000000000000000DF +:10E1400000000000000000000000000000000000CF +:10E1500000000000000000000000000000000000BF +:10E1600000000000000000000000000000000000AF +:10E17000000000000000000000000000000000009F +:10E18000000000000000000000000000000000008F +:10E19000000000000000000000000000000000007F +:10E1A000000000000000000000000000000000006F +:10E1B000000000000000000000000000000000005F +:10E1C000000000000000000000000000000000004F +:10E1D000000000000000000000000000000000003F +:10E1E000000000000000000000000000000000002F +:10E1F000000000000000000000000000000000809F +:10E20000000000000000000000000000000000000E +:10E2100000000000000000000000000000000000FE +:10E220000000000A000000000000000000000000E4 +:10E2300010000003000000000000000D0000000DB1 +:10E240003C020801244295C03C030801246397FC6A +:10E25000AC4000000043202B1480FFFD244200044A +:10E260003C1D080037BD9FFC03A0F0213C100800B6 +:10E27000261032103C1C0801279C95C00E0012BECF +:10E28000000000000000000D3C02800030A5FFFFF0 +:10E2900030C600FF344301803C0880008D0901B87E +:10E2A0000520FFFE00000000AC6400002404000212 +:10E2B000A4650008A066000AA064000BAC67001803 +:10E2C0003C03100003E00008AD0301B83C0560000A +:10E2D0008CA24FF80440FFFE00000000ACA44FC029 +:10E2E0003C0310003C040200ACA44FC403E000084F +:10E2F000ACA34FF89486000C00A050212488001491 +:10E3000000062B0200051080004448210109182B4B +:10E310001060001100000000910300002C6400094F +:10E320005080000991190001000360803C0D080134 +:10E3300025AD9258018D58218D67000000E000083E +:10E340000000000091190001011940210109302B42 +:10E3500054C0FFF29103000003E000080000102108 +:10E360000A000CCC25080001910F0001240E000AC0 +:10E3700015EE00400128C8232F38000A1700003D81 +:10E38000250D00028D580000250F0006370E0100F4 +:10E39000AD4E0000910C000291AB000191A400026F +:10E3A00091A60003000C2E00000B3C0000A71025D6 +:10E3B00000041A000043C8250326C025AD580004F8 +:10E3C000910E000691ED000191E7000291E5000336 +:10E3D000000E5E00000D6400016C30250007220075 +:10E3E00000C41025004518252508000A0A000CCC99 +:10E3F000AD430008910F000125040002240800022B +:10E4000055E80001012020210A000CCC00804021A9 +:10E41000910C0001240B0003158B00160000000076 +:10E420008D580000910E000225080003370D0008EA +:10E43000A14E00100A000CCCAD4D00009119000156 +:10E44000240F0004172F000B0000000091070002AA +:10E45000910400038D43000000072A0000A410254A +:10E460003466000425080004AD42000C0A000CCC00 +:10E47000AD46000003E000082402000127BDFFE8CC +:10E48000AFBF0014AFB000100E00164E0080802108 +:10E490003C0480083485008090A600052403FFFE1C +:10E4A0000200202100C310248FBF00148FB0001081 +:10E4B000A0A200050A00165827BD001827BDFFE8D6 +:10E4C000AFB00010AFBF00140E000FD40080802149 +:10E4D0003C06800834C5008090A40000240200504F +:10E4E000308300FF106200073C09800002002021F9 +:10E4F0008FBF00148FB00010AD2001800A00108F74 +:10E5000027BD0018240801003C07800002002021DC +:10E510008FBF00148FB00010ACE801800A00108F8C +:10E5200027BD001827BDFF783C058008AFBE0080DE +:10E53000AFB7007CAFB3006CAFB10064AFBF008475 +:10E54000AFB60078AFB50074AFB40070AFB200687A +:10E55000AFB0006034A600803C0580008CB201287A +:10E5600090C400098CA701043C020001309100FF17 +:10E5700000E218240000B8210000F021106000071C +:10E58000000098213C0908008D2931F02413000176 +:10E59000252800013C010800AC2831F0ACA0008423 +:10E5A00090CC0005000C5827316A0001154000721C +:10E5B000AFA0005090CD00002406002031A400FF41 +:10E5C00010860018240E0050108E009300000000EA +:10E5D0003C1008008E1000DC260F00013C010800F2 +:10E5E000AC2F00DC0E0016C7000000000040182110 +:10E5F0008FBF00848FBE00808FB7007C8FB60078FD +:10E600008FB500748FB400708FB3006C8FB2006848 +:10E610008FB100648FB000600060102103E000083B +:10E6200027BD00880000000D3C1F8000AFA0003017 +:10E6300097E501168FE201043C04002030B9FFFF8A +:10E64000004438240007182B00033140AFA60030E7 +:10E650008FF5010437F80C003C1600400338802188 +:10E6600002B6A02434C40040128000479215000D69 +:10E6700032A800201500000234860080008030217E +:10E6800014C0009FAFA600303C0D800835A6008066 +:10E6900090CC0008318B0040516000063C06800899 +:10E6A000240E0004122E00A8240F0012122F003294 +:10E6B0003C06800834C401003C0280009447011AE3 +:10E6C0009619000E909F00088E18000830E3FFFF97 +:10E6D00003F9B00432B40004AFB6005CAFA3005835 +:10E6E0008E1600041280002EAFB8005434C3008090 +:10E6F000906800083105004014A0002500000000CB +:10E700008C70005002D090230640000500000000ED +:10E710008C71003402D1A82306A201678EE20008A2 +:10E72000126000063C1280003C1508008EB531F4E2 +:10E7300026B600013C010800AC3631F4AE4000447E +:10E74000240300018FBF00848FBE00808FB7007C40 +:10E750008FB600788FB500748FB400708FB3006CE3 +:10E760008FB200688FB100648FB00060006010212C +:10E7700003E0000827BD00880E000D2800002021BE +:10E780000A000D75004018210A000D9500C02021D7 +:10E790000E00171702C020211440FFE10000000006 +:10E7A0003C0B8008356400808C8A003402CA482300 +:10E7B0000520001D000000003C1E08008FDE310017 +:10E7C00027D700013C010800AC3731001260000679 +:10E7D000024020213C1408008E9431F42690000160 +:10E7E0003C010800AC3031F40E00164E3C1E80088F +:10E7F00037CD008091B700250240202136EE00047D +:10E800000E001658A1AE00250E000CAC02402021CF +:10E810000A000DCA240300013C17080126F796C020 +:10E820000A000D843C1F80008C86003002C66023E5 +:10E830001980000C2419000C908F004F3C14080024 +:10E840008E94310032B500FC35ED0001268E0001BA +:10E850003C010800AC2E3100A08D004FAFA0005845 +:10E860002419000CAFB900308C9800300316A02397 +:10E870001A80010B8FA300580074F82A17E0FFD309 +:10E88000000000001074002A8FA5005802D4B021A7 +:10E8900000B410233044FFFFAFA4005832A8000298 +:10E8A0001100002E32AB00103C15800836B00080FD +:10E8B0009216000832D30040526000FB8EE200083E +:10E8C0000E00164E02402021240A0018A20A000958 +:10E8D000921100052409FFFE024020210229902404 +:10E8E0000E001658A2120005240400390000282149 +:10E8F0000E0016F2240600180A000DCA24030001B7 +:10E9000092FE000C3C0A800835490080001EBB00C6 +:10E910008D27003836F10081024020213225F08118 +:10E920000E000C9B30C600FF0A000DC10000000065 +:10E930003AA7000130E300011460FFA402D4B02123 +:10E940000A000E1D00000000024020210E001734B6 +:10E95000020028210A000D75004018211160FF7087 +:10E960003C0F80083C0D800835EE00808DC40038D7 +:10E970008FA300548DA60004006660231D80FF68ED +:10E98000000000000064C02307020001AFA400548F +:10E990003C1F08008FFF31E433F9000113200015FC +:10E9A0008FAC00583C07800094E3011A10600012FD +:10E9B0003C0680080E00216A024020213C03080129 +:10E9C000906396F13064000214800145000000005D +:10E9D000306C0004118000078FAC0058306600FBDB +:10E9E0003C010801A02696F132B500FCAFA000580A +:10E9F0008FAC00583C06800834D30080AFB40018B8 +:10EA0000AFB60010AFAC00143C088000950B01209D +:10EA10008E6F0030966A005C8FA3005C8FBF003061 +:10EA20003169FFFF3144FFFF8FAE005401341021E4 +:10EA3000350540000064382B0045C82103E7C02598 +:10EA4000AFB90020AFAF0028AFB80030AFAF00249F +:10EA5000AFA0002CAFAE0034926D000831B40008B6 +:10EA6000168000BB020020218EE200040040F8095D +:10EA700027A400108FAF003031F300025660000170 +:10EA800032B500FE3C048008349F008093F90008F2 +:10EA900033380040530000138FA400248C850004F9 +:10EAA0008FA7005410A700D52404001432B0000131 +:10EAB0001200000C8FA400242414000C1234011A3C +:10EAC0002A2D000D11A001022413000E240E000AAD +:10EAD000522E0001241E00088FAF002425E40001FF +:10EAE000AFA400248FAA00143C0B80083565008079 +:10EAF000008A48218CB10030ACA9003090A4004EAF +:10EB00008CA700303408FFFF0088180400E3F821C8 +:10EB1000ACBF00348FA600308FB900548FB8005CB2 +:10EB200030C200081040000B033898218CAC002044 +:10EB3000119300D330C600FF92EE000C8FA7003473 +:10EB400002402021000E6B0035B400800E000C9BAB +:10EB50003285F0803C028008345000808E0F0030F7 +:10EB600001F1302318C00097264800803C070800B8 +:10EB70008CE731E42404FF80010418243118007F5D +:10EB80003C1F80003C19800430F10001AFE300908D +:10EB900012200006031928213C030801906396F116 +:10EBA00030690008152000C6306A00F73C10800864 +:10EBB00036040080908C004F318B000115600042BC +:10EBC000000000003C0608008CC6319830CE0010D2 +:10EBD00051C0004230F9000190AF006B55E0003F9A +:10EBE00030F9000124180001A0B8006B3C1180002E +:10EBF0009622007A24470064A48700123C0D800806 +:10EC000035A5008090B40008329000401600000442 +:10EC10003C03800832AE000115C0008B00000000EC +:10EC2000346400808C86002010D3000A3463010015 +:10EC30008C67000002C7782319E000978FBF00544B +:10EC4000AC93002024130001AC760000AFB3005059 +:10EC5000AC7F000417C0004E000000008FA90050D8 +:10EC60001520000B000000003C030801906396F1A2 +:10EC7000306A00011140002E8FAB0058306400FE56 +:10EC80003C010801A02496F10A000D75000018212E +:10EC90000E000CAC024020210A000F1300000000FF +:10ECA0000A000E200000A0210040F80924040017EB +:10ECB0000A000DCA240300010040F80924040016CC +:10ECC0000A000DCA240300019094004F240DFFFE9A +:10ECD000028D2824A085004F30F900011320000682 +:10ECE0003C0480083C030801906396F1307F0010DB +:10ECF00017E00051306800EF34900080240A0001D2 +:10ED0000024020210E00164EA60A00129203002592 +:10ED100024090001AFA90050346200010240202103 +:10ED20000E001658A20200250A000EF93C0D8008BC +:10ED30001160FE83000018218FA5003030AC000464 +:10ED40001180FE2C8FBF00840A000DCB240300012C +:10ED500027A500380E000CB6AFA000385440FF4382 +:10ED60008EE200048FB40038329001005200FF3F61 +:10ED70008EE200048FA3003C8E6E0058006E682364 +:10ED800005A3FF39AE6300580A000E948EE200041A +:10ED90000E00164E024020213C038008346800809B +:10EDA000024020210E001658A11E000903C0302188 +:10EDB000240400370E0016F2000028210A000F116B +:10EDC0008FA900508FAB00185960FF8D3C0D800853 +:10EDD0000E00164E02402021920C00252405000151 +:10EDE000AFA5005035820004024020210E001658C5 +:10EDF000A20200250A000EF93C0D800812240059D9 +:10EE00002A2300151060004D240900162408000C68 +:10EE10005628FF2732B000013C0A8008914C001BA5 +:10EE20002406FFBD241E000E01865824A14B001BA2 +:10EE30000A000EA532B000013C010801A02896F19D +:10EE40000A000EF93C0D80088CB500308EFE0008DB +:10EE50002404001826B6000103C0F809ACB600303F +:10EE60003C030801906396F13077000116E0FF81C2 +:10EE7000306A00018FB200300A000D753243000481 +:10EE80003C1080009605011A50A0FF2B34C60010DC +:10EE90000A000EC892EE000C8C6200001456FF6D42 +:10EEA000000000008C7800048FB9005403388823D8 +:10EEB0000621FF638FBF00540A000F0E0000000000 +:10EEC0003C010801A02A96F10A000F3030F9000138 +:10EED0001633FF028FAF00240A000EB0241E00106C +:10EEE0000E00164E024020213C0B80083568008041 +:10EEF00091090025240A0001AFAA0050353300040F +:10EF0000024020210E001658A11300253C050801DF +:10EF100090A596F130A200FD3C010801A02296F1D7 +:10EF20000A000E6D004018212411000E53D1FEEA94 +:10EF3000241E00100A000EAF241E00165629FEDC07 +:10EF400032B000013C0A8008914C001B2406FFBD32 +:10EF5000241E001001865824A14B001B0A000EA598 +:10EF600032B000010A000EA4241E00123C038000EF +:10EF70008C6201B80440FFFE24040800AC6401B8B0 +:10EF800003E000080000000030A5FFFF30C6FFFFCF +:10EF90003C0780008CE201B80440FFFE34EA0180A7 +:10EFA000AD440000ACE400203C0480089483004899 +:10EFB0003068FFFF11000016AF88000824AB001274 +:10EFC000010B482B512000133C04800034EF01005A +:10EFD00095EE00208F890000240D001A31CCFFFF30 +:10EFE00031274000A14D000B10E000362583FFFEC5 +:10EFF0000103C02B170000348F9900048F88000490 +:10F00000A5430014350700010A001003AF87000470 +:10F010003C04800024030003348201808F890000B7 +:10F020008F870004A043000B3C088000350C018052 +:10F03000A585000EA585001A8F85000C30EB800099 +:10F04000A5890010AD850028A58600081160000F75 +:10F050008F85001435190100972A00163158FFFCDE +:10F06000270F000401E870218DCD400031A6FFFF7D +:10F0700014C000072403BFFF3C02FFFF34487FFF9A +:10F0800000E83824AF8700048F8500142403BFFFF5 +:10F090003C04800000E3582434830180A46B0026E4 +:10F0A000AC69002C10A0000300054C02A465001000 +:10F0B000A46900263C071000AC8701B803E00008F3 +:10F0C000000000008F990004240AFFFE032A382460 +:10F0D0000A001003AF87000427BDFFE88FA20028B5 +:10F0E00030A5FFFF30C6FFFFAFBF0010AF87000C99 +:10F0F000AF820014AF8000040E000FDBAF80000071 +:10F100008FBF001027BD001803E00008AF80001477 +:10F110003C06800034C4007034C701008C8A0000B3 +:10F1200090E500128F84000027BDFFF030A300FFA0 +:10F13000000318823082400010400037246500032D +:10F140000005C8800326C0218F0E4000246F0004F4 +:10F15000000F6880AFAE000001A660218D8B4000DB +:10F16000AFAB000494E900163128FFFC01063821FA +:10F170008CE64000AFA600088FA9000800003021EF +:10F18000000028213C07080024E701000A0010675E +:10F19000240800089059000024A500012CAC000CA4 +:10F1A0000079C0210018788001E770218DCD000022 +:10F1B0001180000600CD302603A5102114A8FFF50C +:10F1C00000051A005520FFF4905900003C0480000F +:10F1D000348700703C0508008CA531048CE30000E6 +:10F1E0002CA2002010400009006A38230005488046 +:10F1F0003C0B0800256B3108012B402124AA00019B +:10F20000AD0700003C010800AC2A310400C0102109 +:10F2100003E0000827BD0010308220001040000BE2 +:10F2200000055880016648218D24400024680004B0 +:10F2300000083880AFA4000000E618218C6540006B +:10F24000AFA000080A001057AFA500040000000D91 +:10F250000A0010588FA9000827BDFFE03C07800076 +:10F2600034E60100AFBF001CAFB20018AFB100140C +:10F27000AFB0001094C5000E8F87000030A4FFFFD0 +:10F280002483000430E2400010400010AF830028C7 +:10F290003C09002000E940241100000D30EC800002 +:10F2A0008F8A0004240BBFFF00EB38243543100085 +:10F2B000AF87000030F220001640000B3C1900041C +:10F2C000241FFFBF0A0010B7007F102430EC80001D +:10F2D000158000423C0E002030F220001240FFF862 +:10F2E0008F8300043C19000400F9C0241300FFF5CB +:10F2F000241FFFBF34620040AF82000430E20100EF +:10F300001040001130F010008F83002C10600006B8 +:10F310003C0F80003C05002000E52024148000C044 +:10F320003C0800043C0F800035EE010095CD001E26 +:10F3300095CC001C31AAFFFF000C5C00014B482556 +:10F34000AF89000C30F010001200000824110001F9 +:10F3500030F100201620008B3C18100000F890249B +:10F36000164000823C040C002411000130E801002A +:10F370001500000B3C0900018F85000430A94000F6 +:10F38000152000073C0900013C0C1F0100EC58242B +:10F390003C0A1000116A01183C1080003C09000171 +:10F3A00000E9302410C000173C0B10003C18080086 +:10F3B0008F1800243307000214E0014024030001E9 +:10F3C0008FBF001C8FB200188FB100148FB00010D7 +:10F3D0000060102103E0000827BD002000EE682433 +:10F3E00011A0FFBE30F220008F8F00043C11FFFF00 +:10F3F00036307FFF00F0382435E380000A0010A685 +:10F40000AF87000000EB102450400065AF8000245F +:10F410008F8C002C3C0D0F0000ED18241580008807 +:10F42000AF83001030E8010011000086938F0010B8 +:10F430003C0A0200106A00833C1280003650010032 +:10F44000920500139789002A3626000230AF00FF8C +:10F4500025EE0004000E19C03C0480008C9801B811 +:10F460000700FFFE34880180AD0300003C198008CE +:10F47000AC830020973100483225FFFF10A0015CCB +:10F48000AF8500082523001200A3F82B53E0015993 +:10F490008F850004348D010095AC00202402001AF1 +:10F4A00030E44000318BFFFFA102000B108001927D +:10F4B0002563FFFE00A3502B154001908F8F0004A1 +:10F4C000A50300148F88000435050001AF850004F2 +:10F4D0003C08800035190180A729000EA729001AD1 +:10F4E0008F89000C30B18000A7270010AF290028B9 +:10F4F000A72600081220000E3C04800035020100FF +:10F50000944C0016318BFFFC256400040088182100 +:10F510008C7F400033E6FFFF14C000053C048000F0 +:10F520003C0AFFFF354D7FFF00AD2824AF85000466 +:10F53000240EBFFF00AE402434850180A4A800261D +:10F54000ACA7002C3C071000AC8701B800001821C4 +:10F550008FBF001C8FB200188FB100148FB0001045 +:10F560000060102103E0000827BD00203C020BFFD3 +:10F5700000E41824345FFFFF03E3C82B5320FF7B14 +:10F58000241100013C0608008CC6002C24C5000193 +:10F590003C010800AC25002C0A0010D42411000501 +:10F5A0008F85002410A0002FAF80001090A30000D2 +:10F5B000146000792419000310A0002A30E601002D +:10F5C00010C000CC8F860010241F000210DF00C97D +:10F5D0008F8B000C3C0708008CE7003824E4FFFF09 +:10F5E00014E0000201641824000018213C0D0800FA +:10F5F00025AD0038006D1021904C00048F85002847 +:10F6000025830004000321C030A5FFFF3626000239 +:10F610000E000FDB000000000A00114D0000182151 +:10F6200000E8302414C0FF403C0F80000E00103D65 +:10F63000000000008F8700000A0010CAAF82000C93 +:10F64000938F00103C18080127189640000F90C0B7 +:10F6500002588021AF9000248F85002414A0FFD38E +:10F66000AF8F00103C0480008C86400030C5010044 +:10F6700010A000BC322300043C0C08008D8C002438 +:10F6800024120004106000C23190000D3C04800080 +:10F690008C8D40003402FFFF11A201003231FFFBCC +:10F6A0008C884000310A01005540000124110010EF +:10F6B00030EE080011C000BE2419FFFB8F9800280F +:10F6C0002F0F03EF51E000010219802430E90100FF +:10F6D00011200014320800018F87002C14E000FB79 +:10F6E0008F8C000C3C05800034AB0100917F00132F +:10F6F00033E300FF246A00042403FFFE0203802496 +:10F70000000A21C012000002023230253226FFFF1B +:10F710000E000FDB9785002A1200FF290000182138 +:10F72000320800011100000D32180004240E0001FF +:10F73000120E0002023230253226FFFF9785002A82 +:10F740000E000FDB00002021240FFFFE020F80249B +:10F750001200FF1B00001821321800045300FF188C +:10F760002403000102323025241200045612000145 +:10F770003226FFFF9785002A0E000FDB24040100CC +:10F780002419FFFB021988241220FF0D0000182104 +:10F790000A0010E9240300011079009C00003021C8 +:10F7A00090AD00012402000211A200BE30EA004028 +:10F7B00090B90001241800011338007F30E900409F +:10F7C0008CA600049785002A00C020210E000FDBC4 +:10F7D0003626000200004021010018218FBF001CC6 +:10F7E0008FB200188FB100148FB00010006010218C +:10F7F00003E0000827BD0020360F010095EE000C45 +:10F8000031CD020015A0FEE63C0900013C1880083D +:10F81000971200489789002A362600023248FFFFD7 +:10F82000AF8800083C0380008C7101B80620FFFE01 +:10F83000346A0180AD4000001100008E3C0F800052 +:10F84000253F0012011FC82B1320008B240E00033C +:10F85000346C0100958B00202402001A30E4400033 +:10F860003163FFFFA142000B108000A72463FFFE5D +:10F870000103682B15A000A52408FFFE34A5000194 +:10F88000A5430014AF8500043C0480002412BFFF90 +:10F8900000B2802434850180A4A9000EA4A9001A16 +:10F8A000A4A60008A4B00026A4A700103C071000DE +:10F8B000AC8701B80A00114D000018213C038000FC +:10F8C00034640100949F000E3C1908008F3900D861 +:10F8D0002404008033E5FFFF273100013C010800CC +:10F8E000AC3100D80E000FDB240600030A00114DD6 +:10F8F00000001821240A000210CA00598F85002830 +:10F900003C0308008C6300D0240E0001106E005EE2 +:10F910002CCF000C24D2FFFC2E5000041600002136 +:10F9200000002021241800021078001B2CD9000CA4 +:10F9300024DFFFF82FE900041520FF330000202109 +:10F9400030EB020051600004000621C054C00022C8 +:10F9500030A5FFFF000621C030A5FFFF0A00117D82 +:10F96000362600023C0908008D29002431300001B0 +:10F970005200FEF7000018219785002A3626000263 +:10F980000E000FDB000020210A00114D000018219D +:10F990000A00119C241200021320FFE624DFFFF866 +:10F9A0000000202130A5FFFF0A00117D362600024D +:10F9B0000A0011AC021980245120FF828CA6000499 +:10F9C0003C05080190A5964110A0FF7E2408000187 +:10F9D0000A0011F0010018210E000FDB3226000191 +:10F9E0008F8600108F8500280A00124F000621C064 +:10F9F0008F8500043C18800024120003371001801A +:10FA0000A212000B0A00112E3C08800090A30001F6 +:10FA1000241100011071FF70240800012409000264 +:10FA20005069000430E60040240800010A0011F08B +:10FA30000100182150C0FFFD240800013C0C80008B +:10FA4000358B01009563001094A40002307FFFFF06 +:10FA5000509FFF62010018210A001284240800014F +:10FA60002CA803EF1100FE56240300010A001239EE +:10FA700000000000240E000335EA0180A14E000BB7 +:10FA80000A00121C3C04800011E0FFA2000621C005 +:10FA900030A5FFFF0A00117D362600020A0011A5DD +:10FAA000241100201140FFC63C1280003650010096 +:10FAB000960F001094AE000231E80FFF15C8FFC08A +:10FAC000000000000A0011E690B900013C060800A1 +:10FAD0008CC6003824C4FFFF14C00002018418241F +:10FAE000000018213C0D080025AD0038006D1021E4 +:10FAF0000A0011B6904300048F8F0004240EFFFE0D +:10FB00000A00112C01EE28242408FFFE0A00121A14 +:10FB100000A8282427BDFFC8AFB00010AFBF003435 +:10FB20003C10600CAFBE0030AFB7002CAFB6002861 +:10FB3000AFB50024AFB40020AFB3001CAFB20018C3 +:10FB4000AFB100148E0E5000240FFF7F3C068000E2 +:10FB500001CF682435AC380C240B0003AE0C5000E8 +:10FB6000ACCB00083C010800AC2000200E001819A6 +:10FB7000000000003C0A0010354980513C06601628 +:10FB8000AE09537C8CC700003C0860148D0500A0B2 +:10FB90003C03FFFF00E320243C02535300051FC237 +:10FBA0001482000634C57C000003A08002869821E0 +:10FBB0008E7200043C116000025128218CBF007C31 +:10FBC0008CA200783C1E600037C420203C05080150 +:10FBD00024A59288AF820018AF9F001C0E0016DD8E +:10FBE0002406000A3C190001273996403C01080010 +:10FBF000AC3931DC0E0020DDAF8000148FD708084F +:10FC00002418FFF03C15570902F8B02412D502F56C +:10FC100024040001AF80002C3C1480003697018042 +:10FC20003C1E080127DE9644369301008E900000AA +:10FC30003205000310A0FFFD3207000110E000882C +:10FC4000320600028E7100283C048000AE91002034 +:10FC50008E6500048E66000000A0382100C040219F +:10FC60008C8301B80460FFFE3C0B0010240A0800DE +:10FC700000AB4824AC8A01B8552000E0240BBFFF3C +:10FC80009675000E3C1208008E52002030AC4000E9 +:10FC900032AFFFFF264E000125ED00043C010800B5 +:10FCA000AC2E0020118000E8AF8D00283C18002009 +:10FCB00000B8B02412C000E530B980002408BFFFAE +:10FCC00000A8382434C81000AF87000030E62000B8 +:10FCD00010C000E92409FFBF3C03000400E328240E +:10FCE00010A00002010910243502004030EA010092 +:10FCF00011400010AF8200048F8B002C11600007B0 +:10FD00003C0D002000ED6024118000043C0F000435 +:10FD100000EF702411C00239000000009668001E38 +:10FD20009678001C3115FFFF0018B40002B690252C +:10FD3000AF92000C30F910001320001324150001BD +:10FD400030FF002017E0000A3C04100000E41024FB +:10FD50001040000D3C0A0C003C090BFF00EA18247F +:10FD60003525FFFF00A3302B10C0000830ED010047 +:10FD70003C0C08008D8C002C24150005258B0001FF +:10FD80003C010800AC2B002C30ED010015A0000B4D +:10FD90003C0500018F85000430AE400055C00007CF +:10FDA0003C0500013C161F0100F690243C0F10009A +:10FDB000124F01CE000000003C05000100E5302498 +:10FDC00010C000AF3C0C10003C1F08008FFF002447 +:10FDD00033E90002152000712403000100601021A6 +:10FDE000104000083C0680003C08800035180100E7 +:10FDF0008F0F00243C056020ACAF00140000000011 +:10FE00003C0680003C194000ACD9013800000000DD +:10FE10005220001332060002262B0140262C0080BF +:10FE2000240EFF80016E2024018E6824000D1940ED +:10FE3000318A007F0004A9403172007F3C16200007 +:10FE400036C20002006A482502B2382500E2882541 +:10FE50000122F825ACDF0830ACD1083032060002B0 +:10FE600010C0FF723C188000370501408CA80000CC +:10FE700024100040AF08002090AF000831E300706C +:10FE8000107000D428790041532000082405006038 +:10FE9000241100201071000E3C0A40003C09800033 +:10FEA000AD2A01780A001304000000001465FFFB6E +:10FEB0003C0A40000E001FFA000000003C0A40000F +:10FEC0003C098000AD2A01780A00130400000000FC +:10FED00090A90009241F00048CA70000312800FF0E +:10FEE000111F01B22503FFFA2C7200061240001404 +:10FEF0003C0680008CA9000494A4000A310500FF90 +:10FF000000095E022D6A00083086FFFF15400002DE +:10FF10002567000424070003240C000910AC01FA33 +:10FF200028AD000A11A001DE2410000A240E0008EA +:10FF300010AE0028000731C000C038213C06800008 +:10FF40008CD501B806A0FFFE34D20180AE47000078 +:10FF500034CB0140916E0008240300023C0A4000AB +:10FF600031C400FF00046A0001A86025A64C000807 +:10FF7000A243000B9562000A3C0810003C09800077 +:10FF8000A64200108D670004AE470024ACC801B83B +:10FF9000AD2A01780A001304000000003C0A80002A +:10FFA000354401009483000E3C0208008C4200D8C6 +:10FFB000240400803065FFFF245500013C01080047 +:10FFC000AC3500D80E000FDB240600030A001370C6 +:10FFD000000018210009320230D900FF2418000166 +:10FFE0001738FFD5000731C08F910020262200016D +:10FFF000AF8200200A0013C800C0382100CB2024A3 +:020000021000EC +:10000000AF85000010800008AF860004240D87FF34 +:1000100000CD6024158000083C0E006000AE302446 +:1000200010C00005000000000E000D42000000009E +:100030000A001371000000000E0016050000000009 +:100040000A0013710000000030B980005320FF1F28 +:10005000AF8500003C02002000A2F82453E0FF1B03 +:10006000AF8500003C07FFFF34E47FFF00A4382485 +:100070000A00132B34C880000A001334010910242D +:1000800000EC58245160005AAF8000248F8D002C62 +:100090003C0E0F0000EE182415A00075AF83001071 +:1000A00030EF010011E00073939800103C12020041 +:1000B000107200703C06800034D9010093280013B0 +:1000C0009789002A36A60002311800FF271600047F +:1000D000001619C03C0480008C8501B804A0FFFE06 +:1000E00034880180AD0300003C158008AC830020FB +:1000F00096BF004833E5FFFF10A001BCAF850008A4 +:100100002523001200A3102B504001B98F85000455 +:10011000348D010095AC0020240B001A30E440001F +:10012000318AFFFFA10B000B108001BA2543FFFEAF +:1001300000A3702B15C001B88F9600048F8F0004A8 +:10014000A503001435E50001AF8500043C088000DC +:1001500035150180A6A9000EA6A9001A8F89000CEA +:1001600030BF8000A6A70010AEA90028A6A60008F0 +:1001700013E0000F3C0F8000350C0100958B00163A +:10018000316AFFFC25440004008818218C6240007D +:100190003046FFFF14C000072416BFFF3C0EFFFFD0 +:1001A00035CD7FFF00AD2824AF8500043C0F8000D3 +:1001B0002416BFFF00B6902435E50180A4B20026C6 +:1001C000ACA7002C3C071000ADE701B80A00137083 +:1001D000000018210E00165D000000003C0A4000DF +:1001E0003C098000AD2A01780A00130400000000D9 +:1001F0008F85002410A00027AF80001090A300007E +:10020000106000742409000310690101000030210E +:1002100090AE0001240D000211CD014230EF0040EC +:1002200090A90001241F0001113F000930E20040A5 +:100230008CA600049785002A00C020210E000FDB49 +:1002400036A60002000040210A00137001001821A8 +:100250005040FFF88CA600043C07080190E7964147 +:1002600010E0FFF4240800010A00137001001821B7 +:10027000939800103C1F080127FF96400018C8C043 +:10028000033F4021AF8800248F85002414A0FFDBAA +:10029000AF9800103C0480008C86400030C50100FF +:1002A00010A0008732AB00043C0C08008D8C0024A9 +:1002B00024160004156000033192000D241600027C +:1002C0003C0480008C8E4000340DFFFF11CD0113E3 +:1002D00032B5FFFB8C984000330F010055E0000160 +:1002E0002415001030E80800110000382409FFFB35 +:1002F0008F9F00282FF903EF53200001024990241B +:1003000030E2010010400014325F00018F87002CA2 +:1003100014E0010E8F8C000C3C0480003486010038 +:1003200090C5001330AA00FF25430004000321C03C +:100330002419FFFE025990241240000202B6302513 +:1003400032A6FFFF0E000FDB9785002A1240FEA3A6 +:1003500000001821325F000113E0000D3247000455 +:10036000240900011249000202B6302532A6FFFF1F +:100370009785002A0E000FDB000020212402FFFEDB +:10038000024290241240FE950000182132470004DA +:1003900050E0FE922403000102B63025241600042A +:1003A0005656000132A6FFFF9785002A0E000FDB8C +:1003B000240401002403FFFB0243A82412A0FE87AB +:1003C000000018210A001370240300010A0014B968 +:1003D0000249902410A0FFAF30E5010010A00017E3 +:1003E0008F8600102403000210C300148F84000CB9 +:1003F0003C0608008CC6003824CAFFFF14C0000267 +:10040000008A1024000010213C0E080025CE003880 +:10041000004E682191AC00048F850028258B0004D4 +:10042000000B21C030A5FFFF36A600020E000FDB37 +:10043000000000000A00137000001821240F0002C1 +:1004400010CF0088241600013C0308008C6300D004 +:100450001076008D8F85002824D9FFFC2F280004FA +:100460001500006300002021241F0002107F005DA2 +:100470002CC9000C24C3FFF82C6200041440FFE9CF +:100480000000202130EA020051400004000621C093 +:1004900054C0000530A5FFFF000621C030A5FFFFB6 +:1004A0000A00150436A600020E000FDB32A600017A +:1004B0008F8600108F8500280A001520000621C0B5 +:1004C0003C0A08008D4A0024315200015240FE438C +:1004D000000018219785002A36A600020E000FDBC7 +:1004E000000020210A001370000018219668000CFB +:1004F000311802005700FE313C0500013C1F800806 +:1005000097F900489789002A36A600023328FFFF92 +:10051000AF8800083C0380008C7501B806A0FFFE80 +:100520003C04800034820180AC400000110000B621 +:1005300024180003252A0012010A182B106000B2AB +:1005400000000000966F00203C0E8000240D001A71 +:1005500031ECFFFF35CA018030EB4000A14D000BAC +:10056000116000B02583FFFE0103902B164000AE02 +:100570002416FFFE34A50001A5430014AF85000436 +:100580002419BFFF00B94024A6E9000EA6E9001A0D +:10059000A6E60008A6E80026A6E700103C07100023 +:1005A000AE8701B80A001370000018213C048000D7 +:1005B0008C8201B80440FFFE349601802415001C93 +:1005C000AEC70000A2D5000B3C071000AC8701B8F5 +:1005D0003C0A40003C098000AD2A01780A0013045F +:1005E000000000005120FFA424C3FFF800002021D8 +:1005F00030A5FFFF0A00150436A600020E00103DCC +:10060000000000008F8700000A001346AF82000C34 +:1006100090A30001241500011075FF0B24080001B0 +:10062000240600021066000430E2004024080001A5 +:100630000A001370010018215040FFFD240800013A +:100640003C0C8000358B0100956A001094A40002D8 +:100650003143FFFF5083FDE1010018210A00158599 +:10066000240800018F8500282CB203EF1240FDDB27 +:10067000240300013C0308008C6300D02416000111 +:100680001476FF7624D9FFFC2CD8000C1300FF72DF +:10069000000621C030A5FFFF0A00150436A600029F +:1006A00010B00037240F000B14AFFE23000731C039 +:1006B000312600FF00065600000A4E0305220047BF +:1006C00030C6007F0006F8C03C16080126D69640CA +:1006D00003F68021A2000001A20000003C0F600090 +:1006E0008DF918202405000100C588040011302769 +:1006F0000326C024000731C000C03821ADF81820FF +:100700000A0013C8A60000028F850020000731C030 +:1007100024A2FFFF0A0013F6AF8200200A0014B2E1 +:100720002415002011E0FECC3C1980003728010080 +:100730009518001094B6000233120FFF16D2FEC6B1 +:10074000000000000A00148290A900013C0B080080 +:100750008D6B0038256DFFFF15600002018D1024A0 +:10076000000010213C080800250800380048C0217E +:10077000930F000425EE00040A0014C5000E21C0EA +:1007800000065202241F00FF115FFDEB000731C07D +:10079000000A20C03C0E080125CE9640008EA821FC +:1007A000009E602100095C02240D00013C076000EE +:1007B000A2AD0000AD860000A2AB00018CF21820B3 +:1007C00024030001014310040242B025ACF61820B6 +:1007D00000C038210A0013C8A6A900020A0015AA01 +:1007E000AF8000200A0012FFAF84002C8F85000428 +:1007F0003C1980002408000337380180A308000B4F +:100800000A00144D3C088000A2F8000B0A00155A9B +:100810002419BFFF8F9600042412FFFE0A00144B18 +:1008200002D228242416FFFE0A00155800B62824F8 +:100830003C038000346401008C85000030A2003E3F +:100840001440000800000000AC6000488C870000E5 +:1008500030E607C010C0000500000000AC60004C8E +:10086000AC60005003E0000824020001AC600054BA +:10087000AC6000408C880000310438001080FFF923 +:10088000000000002402000103E00008AC60004406 +:100890003C0380008C6201B80440FFFE3467018095 +:1008A000ACE4000024080001ACE00004A4E500086A +:1008B00024050002A0E8000A34640140A0E5000B12 +:1008C0009483000A14C00008A4E30010ACE00024E4 +:1008D0003C07800034E901803C041000AD20002872 +:1008E00003E00008ACE401B88C8600043C0410006E +:1008F000ACE600243C07800034E90180AD200028EC +:1009000003E00008ACE401B83C0680008CC201B8EA +:100910000440FFFE34C7018024090002ACE400005B +:10092000ACE40004A4E50008A0E9000A34C50140D5 +:10093000A0E9000B94A8000A3C041000A4E80010F1 +:10094000ACE000248CA30004ACE3002803E0000822 +:10095000ACC401B83C039000346200010082202541 +:100960003C038000AC6400208C65002004A0FFFEE6 +:100970000000000003E00008000000003C028000CE +:10098000344300010083202503E00008AC4400202C +:1009900027BDFFE03C098000AFBF0018AFB10014D5 +:1009A000AFB00010352801408D10000091040009FF +:1009B0009107000891050008308400FF30E600FF31 +:1009C00000061A002C820081008330251040002A86 +:1009D00030A50080000460803C0D080125AD92B078 +:1009E000018D58218D6A00000140000800000000C0 +:1009F0003C038000346201409445000A14A0001EAC +:100A00008F91FCC09227000530E6000414C0001A44 +:100A1000000000000E00164E02002021922A000560 +:100A200002002021354900040E001658A2290005B5 +:100A30009228000531040004148000020000000028 +:100A40000000000D922D0000240B002031AC00FFAF +:100A5000158B00093C0580008CAE01B805C0FFFE77 +:100A600034B10180AE3000003C0F100024100005AE +:100A7000A230000BACAF01B80000000D8FBF001812 +:100A80008FB100148FB0001003E0000827BD0020D4 +:100A90000200202100C028218FBF00188FB1001450 +:100AA0008FB00010240600010A00161D27BD00208B +:100AB0000000000D0200202100C028218FBF001877 +:100AC0008FB100148FB00010000030210A00161DF5 +:100AD00027BD002014A0FFE8000000000200202134 +:100AE0008FBF00188FB100148FB0001000C02821F4 +:100AF0000A00163B27BD00203C0780008CEE01B8A1 +:100B000005C0FFFE34F00180241F0002A21F000B6D +:100B100034F80140A60600089719000A3C0F10009F +:100B2000A61900108F110004A6110012ACEF01B835 +:100B30000A0016998FBF001827BDFFE8AFBF00104D +:100B40000E000FD4000000003C0280008FBF001098 +:100B500000002021AC4001800A00108F27BD001842 +:100B60003084FFFF30A5FFFF108000070000182130 +:100B7000308200011040000200042042006518216C +:100B80001480FFFB0005284003E0000800601021EE +:100B900010C00007000000008CA2000024C6FFFF68 +:100BA00024A50004AC82000014C0FFFB24840004D0 +:100BB00003E000080000000010A0000824A3FFFFCD +:100BC000AC86000000000000000000002402FFFFCF +:100BD0002463FFFF1462FFFA2484000403E000088A +:100BE000000000003C03800027BDFFF83462018054 +:100BF000AFA20000308C00FF30AD00FF30CE00FF10 +:100C00003C0B80008D6401B80480FFFE00000000F2 +:100C10008FA900008D6801288FAA00008FA700000F +:100C20008FA400002405000124020002A085000A10 +:100C30008FA30000359940003C051000A062000B16 +:100C40008FB800008FAC00008FA600008FAF0000AF +:100C500027BD0008AD280000AD400004AD80002491 +:100C6000ACC00028A4F90008A70D0010A5EE0012E2 +:100C700003E00008AD6501B83C06800827BDFFE829 +:100C800034C50080AFBF001090A7000924020012F5 +:100C900030E300FF1062000B008030218CA8005070 +:100CA00000882023048000088FBF00108CAA003425 +:100CB000240400390000282100CA4823052000052B +:100CC000240600128FBF00102402000103E0000878 +:100CD00027BD00180E0016F2000000008FBF0010A4 +:100CE0002402000103E0000827BD001827BDFFC84B +:100CF000AFB20030AFB00028AFBF0034AFB1002CAE +:100D000000A0802190A5000D30A6001010C000109A +:100D1000008090213C0280088C4400048E0300086F +:100D20001064000C30A7000530A6000510C0009329 +:100D3000240400018FBF00348FB200308FB1002C2B +:100D40008FB000280080102103E0000827BD003884 +:100D500030A7000510E0000F30AB001210C00006F5 +:100D6000240400013C0980088E0800088D25000439 +:100D70005105009C240400388FBF00348FB200302E +:100D80008FB1002C8FB000280080102103E00008F4 +:100D900027BD0038240A0012156AFFE6240400016A +:100DA0000200202127A500100E000CB6AFA00010F5 +:100DB0001440007C3C19800837240080909800087B +:100DC000331100081220000A8FA7001030FF010025 +:100DD00013E000A48FA300148C8600580066102333 +:100DE000044000043C0A8008AC8300588FA7001020 +:100DF0003C0A800835480080910900083124000829 +:100E00001480000224080003000040213C1F8008D9 +:100E100093F1001193F9001237E600808CCC005456 +:100E2000333800FF03087821322D00FF000F708057 +:100E300001AE282100AC582B1160006F00000000AB +:100E400094CA005C8CC900543144FFFF0125102373 +:100E50000082182B14600068000000008CCB005446 +:100E60000165182330EC00041180006C000830800C +:100E70008FA8001C0068102B1040006230ED0004A9 +:100E8000006610232C46008010C00002004088211C +:100E9000241100800E00164E024020213C0D8008D7 +:100EA00035A6008024070001ACC7000C90C80008DC +:100EB0000011484035A70100310C007FA0CC00088C +:100EC0008E05000424AB0001ACCB0030A4D1005C43 +:100ED0008CCA003C9602000E01422021ACC40020C6 +:100EE0008CC3003C0069F821ACDF001C8E190004A3 +:100EF000ACF900008E180008ACF800048FB10010A7 +:100F0000322F000855E0004793A60020A0C0004EF5 +:100F100090D8004E2411FFDFA0F8000890CF000801 +:100F200001F17024A0CE00088E0500083C0B80085B +:100F300035690080AD2500388D6A00148D2200309F +:100F40002419005001422021AD24003491230000D7 +:100F5000307F00FF13F90036264F01000E001658AF +:100F60000240202124040038000028210E0016F23F +:100F70002406000A0A001757240400010E000D2859 +:100F8000000020218FBF00348FB200308FB1002CC1 +:100F90008FB00028004020210080102103E00008CD +:100FA00027BD00388E0E00083C0F800835F0008009 +:100FB000AE0E005402402021AE0000300E00164E4E +:100FC00000000000920D00250240202135AC0020D9 +:100FD0000E001658A20C00250E000CAC0240202179 +:100FE000240400382405008D0E0016F22406001299 +:100FF0000A0017572404000194C5005C0A001792E8 +:1010000030A3FFFF2407021811A0FF9E00E6102363 +:101010008FAE001C0A00179A01C610230A0017970A +:101020002C620218A0E600080A0017C48E0500080A +:101030002406FF8001E6C0243C118000AE38002861 +:101040008E0D000831E7007F3C0E800C00EE602121 +:10105000AD8D00E08E080008AF8C00380A0017D074 +:10106000AD8800E4AC800058908500082403FFF7A9 +:1010700000A33824A08700080A0017758FA7001066 +:101080003C05080024A560A83C04080024846FF4F3 +:101090003C020800244260B0240300063C01080121 +:1010A000AC2596C03C010801AC2496C43C01080163 +:1010B000AC2296C83C010801A02396CC03E00008AE +:1010C0000000000003E00008240200013C02800050 +:1010D000308800FF344701803C0680008CC301B893 +:1010E0000460FFFE000000008CC501282418FF806A +:1010F0003C0D800A24AF010001F8702431EC007F20 +:10110000ACCE0024018D2021ACE50000948B00EAD8 +:101110003509600024080002316AFFFFACEA0004D0 +:1011200024020001A4E90008A0E8000BACE00024C0 +:101130003C071000ACC701B8AF84003803E00008DA +:10114000AF85006C938800488F8900608F820038DB +:1011500030C600FF0109382330E900FF01221821C1 +:1011600030A500FF2468008810C000020124382147 +:101170000080382130E400031480000330AA00030B +:101180001140000D312B000310A0000900001021B8 +:1011900090ED0000244E000131C200FF0045602B9D +:1011A000A10D000024E700011580FFF925080001CA +:1011B00003E00008000000001560FFF300000000DD +:1011C00010A0FFFB000010218CF80000245900043F +:1011D000332200FF0045782BAD18000024E70004FF +:1011E00015E0FFF92508000403E0000800000000F6 +:1011F00093850048938800588F8700600004320070 +:101200003103007F00E5102B30C47F001040000F39 +:10121000006428258F8400383C0980008C8A00EC0B +:10122000AD2A00A43C03800000A35825AC6B00A0AD +:101230008C6C00A00580FFFE000000008C6D00ACEF +:10124000AC8D00EC03E000088C6200A80A00188254 +:101250008F840038938800593C0280000080502120 +:10126000310300FEA383005930ABFFFF30CC00FFF9 +:1012700030E7FFFF344801803C0980008D2401B82D +:101280000480FFFE8F8D006C24180016AD0D000049 +:101290008D2201248F8D0038AD0200048D5900206D +:1012A000A5070008240201C4A119000AA118000B17 +:1012B000952F01208D4E00088D4700049783005C18 +:1012C0008D59002401CF302100C7282100A32023FD +:1012D0002418FFFFA504000CA50B000EA5020010AA +:1012E000A50C0012AD190018AD18002495AF00E848 +:1012F0003C0B10002407FFF731EEFFFFAD0E002876 +:101300008DAC0084AD0C002CAD2B01B88D460020B7 +:1013100000C7282403E00008AD4500208F8800386E +:101320000080582130E7FFFF910900D63C02800081 +:1013300030A5FFFF312400FF00041A00006750258C +:1013400030C600FF344701803C0980008D2C01B875 +:101350000580FFFE8F82006C240F0017ACE20000B6 +:101360008D390124ACF900048D780020A4EA00082E +:10137000241901C4A0F8000AA0EF000B9523012056 +:101380008D6E00088D6D00049784005C01C35021B0 +:10139000014D602101841023A4E2000CA4E5000E9D +:1013A000A4F90010A4E60012ACE000148D7800242B +:1013B000240DFFFFACF800188D0F007CACEF001C73 +:1013C0008D0E00783C0F1000ACEE0020ACED002438 +:1013D000950A00BE240DFFF73146FFFFACE600285A +:1013E000950C00809504008231837FFF0003CA00C2 +:1013F0003082FFFF0322C021ACF8002CAD2F01B8D2 +:10140000950E00828D6A002000AE3021014D282407 +:10141000A506008203E00008AD6500203C028000C4 +:10142000344501803C0480008C8301B80460FFFED9 +:101430008F8A0044240600199549001C3128FFFFBB +:10144000000839C0ACA70000A0A6000B3C051000A6 +:1014500003E00008AC8501B88F87004C0080402174 +:1014600030C400FF3C0680008CC201B80440FFFE7F +:101470008F89006C9383006834996000ACA90000E8 +:10148000A0A300058CE20010240F00022403FFF744 +:10149000A4A20006A4B900088D180020A0B8000A74 +:1014A000A0AF000B8CEE0000ACAE00108CED000481 +:1014B000ACAD00148CEC001CACAC00248CEB002018 +:1014C000ACAB00288CEA002C3C071000ACAA002C26 +:1014D0008D090024ACA90018ACC701B88D05002007 +:1014E00000A3202403E00008AD0400208F8600380C +:1014F00027BDFFE0AFB10014AFBF0018AFB00010C0 +:1015000090C300D430A500FF3062002010400008D6 +:10151000008088218CCB00D02409FFDF256A0001E0 +:10152000ACCA00D090C800D401093824A0C700D4A8 +:1015300014A000403C0C80008F840038908700D4B9 +:101540002418FFBF2406FFEF30E3007FA08300D400 +:10155000979F005C8F8200608F8D003803E2C82364 +:10156000A799005CA5A000BC91AF00D401F870243D +:10157000A1AE00D48F8C0038A18000D78F8A0038AC +:10158000A5400082AD4000EC914500D400A658244F +:10159000A14B00D48F9000348F8400609786005C4C +:1015A0000204282110C0000FAF850034A38000582A +:1015B0003C0780008E2C000894ED01208E2B000447 +:1015C000018D5021014B8021020620233086FFFF30 +:1015D00030C8000F3909000131310001162000091F +:1015E000A3880058938600488FBF00188FB100145D +:1015F0008FB0001027BD0020AF85006403E0000815 +:10160000AF86006000C870238FBF00189386004823 +:101610008FB100148FB0001034EF0C00010F28219F +:1016200027BD0020ACEE0084AF85006403E0000815 +:10163000AF86006035900180020028210E00190F4E +:10164000240600828F840038908600D430C5004084 +:1016500050A0FFBAA38000688F85004C3C06800034 +:101660008CCD01B805A0FFFE8F89006C2408608234 +:1016700024070002AE090000A6080008A207000B1C +:101680008CA300083C0E1000AE0300108CA2000CCE +:10169000AE0200148CBF0014AE1F00188CB90018E5 +:1016A000AE1900248CB80024AE1800288CAF002896 +:1016B000AE0F002CACCE01B80A001948A380006818 +:1016C0008F8A003827BDFFE0AFB10014AFB0001023 +:1016D0008F880060AFBF00189389003C954200BC22 +:1016E00030D100FF0109182B0080802130AC00FFB1 +:1016F0003047FFFF0000582114600003310600FF4F +:1017000001203021010958239783005C0068202BB9 +:101710001480002700000000106800562419000102 +:101720001199006334E708803165FFFF0E0018C08F +:10173000020020218F83006C3C07800034E601808A +:101740003C0580008CAB01B80560FFFE240A001840 +:101750008F840038ACC30000A0CA000B948900BE7F +:101760003C081000A4C90010ACC00030ACA801B8FF +:101770009482008024430001A4830080949F008011 +:101780003C0608008CC6318833EC7FFF1186005E72 +:101790000000000002002021022028218FBF001835 +:1017A0008FB100148FB000100A00193427BD00203B +:1017B000914400D42403FF8000838825A15100D4E4 +:1017C0009784005C3088FFFF51000023938C003C1D +:1017D0008F8500382402EFFF008B782394AE00BC85 +:1017E0000168502B31E900FF01C26824A4AD00BCA0 +:1017F00051400039010058213C1F800037E60100AC +:101800008CD800043C190001031940245500000144 +:1018100034E740008E0A00202403FFFB241100015E +:1018200001432024AE0400201191002D34E78000F4 +:1018300002002021012030210E0018C03165FFFF79 +:101840009787005C8F890060A780005C0127802358 +:10185000AF900060938C003C8F8B00388FBF0018D6 +:101860008FB100148FB0001027BD002003E00008E6 +:10187000A16C00D73C0D800035AA01008D48000402 +:101880003C0900010109282454A0000134E740006C +:101890008E0F00202418FFFB34E7800001F870242D +:1018A00024190001AE0E00201599FF9F34E708802F +:1018B000020020210E00188E3165FFFF020020215A +:1018C000022028218FBF00188FB100148FB00010A4 +:1018D0000A00193427BD00200A0019F7000048212A +:1018E00002002021012030210E00188E3165FFFFFB +:1018F0009787005C8F890060A780005C01278023A8 +:101900000A001A0EAF900060948C0080241F8000A3 +:10191000019F3024A4860080908B0080908F0080EF +:10192000316700FF0007C9C20019C027001871C045 +:1019300031ED007F01AE2825A08500800A0019DF67 +:1019400002002021938500682403000127BDFFE8E1 +:1019500000A330042CA20020AFB00010AFBF0014D1 +:1019600000C01821104000132410FFFE3C0708009F +:101970008CE7319000E610243C088000350501809A +:1019800014400005240600848F890038240A0004CE +:101990002410FFFFA12A00FC0E00190F0000000018 +:1019A000020010218FBF00148FB0001003E0000868 +:1019B00027BD00183C0608008CC631940A001A574F +:1019C00000C310248F87004427BDFFE0AFB200188A +:1019D000AFB10014AFB00010AFBF001C30D000FF9B +:1019E00090E6000D00A088210080902130C5007F86 +:1019F000A0E5000D8F8500388E2300188CA200D042 +:101A00001062002E240A000E0E001A4AA38A0068F3 +:101A10002409FFFF104900222404FFFF5200002088 +:101A2000000020218E2600003C0C001000CC582421 +:101A3000156000393C0E000800CE682455A0003F18 +:101A4000024020213C18000200D880241200001F10 +:101A50003C0A00048F8700448CE200148CE30010E1 +:101A60008CE500140043F82303E5C82B1320000580 +:101A7000024020218E24002C8CF1001010910031A6 +:101A80000240202124020012A38200680E001A4A9C +:101A90002412FFFF105200022404FFFF0000202147 +:101AA0008FBF001C8FB200188FB100148FB00010D0 +:101AB0000080102103E0000827BD002090A800D47A +:101AC000350400200A001A80A0A400D400CA4824CB +:101AD0001520000B8F8B00448F8D00448DAC0010BF +:101AE0001580000B024020218E2E002C51C0FFECEF +:101AF00000002021024020210A001A9B2402001726 +:101B00008D66001050C0FFE6000020210240202119 +:101B10000A001A9B24020011024020212402001511 +:101B20000E001A4AA3820068240FFFFF104FFFDC4B +:101B30002404FFFF0A001A8A8E2600000A001AC138 +:101B4000240200143C08000400C8382450E0FFD4EC +:101B500000002021024020210A001A9B24020013C9 +:101B60008F85003827BDFFD8AFB3001CAFB2001877 +:101B7000AFB10014AFB00010AFBF002090A700D4E9 +:101B80008F90004C2412FFFF34E2004092060000C8 +:101B9000A0A200D48E0300100080982110720006CD +:101BA00030D1003F2408000D0E001A4AA3880068B7 +:101BB000105200252404FFFF8F8A00388E09001878 +:101BC0008D4400D01124000702602021240C000E57 +:101BD0000E001A4AA38C0068240BFFFF104B001A5A +:101BE0002404FFFF24040020122400048F8D0038F9 +:101BF00091AF00D435EE0020A1AE00D48F85005403 +:101C000010A00019000000001224004A8F9800382C +:101C10008F92FCC0971000809651000A5230004805 +:101C20008F9300403C1F08008FFF318C03E5C82BC9 +:101C30001720001E02602021000028210E0019A993 +:101C400024060001000020218FBF00208FB3001C5C +:101C50008FB200188FB100148FB0001000801021D7 +:101C600003E0000827BD00285224002A8E05001436 +:101C70008F840038948A008025490001A48900805F +:101C8000948800803C0208008C42318831077FFF35 +:101C900010E2000E00000000026020210E00193446 +:101CA000240500010A001B0B000020212402002D46 +:101CB0000E001A4AA38200682403FFFF1443FFE1C9 +:101CC0002404FFFF0A001B0C8FBF002094990080A2 +:101CD000241F800024050001033FC024A498008035 +:101CE00090920080908E0080325100FF001181C2DE +:101CF00000107827000F69C031CC007F018D582576 +:101D0000A08B00800E001934026020210A001B0BFA +:101D1000000020212406FFFF54A6FFD68F84003840 +:101D2000026020210E001934240500010A001B0B5B +:101D300000002021026020210A001B252402000A45 +:101D40002404FFFD0A001B0BAF9300608F8800384E +:101D500027BDFFE8AFB00010AFBF0014910A00D458 +:101D60008F87004C00808021354900408CE60010B0 +:101D7000A10900D43C0208008C4231B030C53FFFBD +:101D800000A2182B106000078F850050240DFF80E3 +:101D900090AE000D01AE6024318B00FF156000088D +:101DA0000006C382020020212403000D8FBF00140F +:101DB0008FB0001027BD00180A001A4AA3830068DC +:101DC00033060003240F000254CFFFF70200202146 +:101DD00094A2001C8F85003824190023A4A200E8D7 +:101DE0008CE8000000081E02307F003F13F9003528 +:101DF0003C0A00838CE800188CA600D0110600086D +:101E0000000000002405000E0E001A4AA385006899 +:101E10002407FFFF104700182404FFFF8F850038B8 +:101E200090A900D435240020A0A400D48F8C0044B5 +:101E3000918E000D31CD007FA18D000D8F83005458 +:101E40001060001C020020218F8400508C9800102C +:101E50000303782B11E0000D241900180200202143 +:101E6000A39900680E001A4A2410FFFF10500002C8 +:101E70002404FFFF000020218FBF00148FB000104A +:101E80000080102103E0000827BD00188C86001098 +:101E90008F9F00440200202100C31023AFE20010F6 +:101EA000240500010E0019A9240600010A001B9751 +:101EB000000020210E001934240500010A001B97A0 +:101EC00000002021010A5824156AFFD98F8C004494 +:101ED000A0A600FC0A001B84A386005A30A500FFC0 +:101EE0002406000124A9000100C9102B1040000C99 +:101EF00000004021240A000100A61823308B0001B5 +:101F000024C60001006A3804000420421160000267 +:101F100000C9182B010740251460FFF800A61823FC +:101F200003E000080100102127BDFFD8AFB0001862 +:101F30008F90004CAFB1001CAFBF00202403FFFF07 +:101F40002411002FAFA30010920600002405000802 +:101F500026100001006620260E001BB0308400FF12 +:101F600000021E003C021EDC34466F410A001BD8F2 +:101F70000000102110A00009008018212445000154 +:101F800030A2FFFF2C4500080461FFFA0003204047 +:101F90000086202614A0FFF9008018210E001BB037 +:101FA000240500208FA300102629FFFF313100FFF8 +:101FB00000034202240700FF1627FFE20102182651 +:101FC00000035027AFAA0014AFAA00100000302170 +:101FD00027A8001027A7001400E6782391ED00033E +:101FE00024CE000100C8602131C600FF2CCB0004C4 +:101FF0001560FFF9A18D00008FA200108FBF002097 +:102000008FB1001C8FB0001803E0000827BD002826 +:1020100027BDFFD0AFB3001CAFB00010AFBF00288A +:10202000AFB50024AFB40020AFB20018AFB10014B8 +:102030003C0C80008D880128240FFF803C06800A1C +:1020400025100100250B0080020F68243205007F57 +:10205000016F7024AD8E009000A62821AD8D002464 +:1020600090A600FC3169007F3C0A8004012A1821F7 +:10207000A386005A9067007C00809821AF830030CF +:1020800030E20002AF88006CAF85003800A0182154 +:10209000144000022404003424040030A3840048C7 +:1020A0008C7200DC30D100FF24040004AF92006089 +:1020B00012240004A38000688E7400041680001EA1 +:1020C0003C0880009386005930C7000110E0000FE3 +:1020D0008F9300608CB000848CA800842404FF805F +:1020E000020410240002F940310A007F03EA482567 +:1020F0003C0C2000012C902530CD00FE3C038000DC +:10210000AC720830A38D00598F9300608FBF0028F8 +:102110008FB50024ACB300DC8FB400208FB3001C5B +:102120008FB200188FB100148FB00010240200018C +:1021300003E0000827BD00308E7F000895020120D3 +:102140008E67001003E2C8213326FFFF30D8000F4E +:1021500033150001AF87003416A00058A39800582B +:1021600035090C000309382100D81823AD03008479 +:10217000AF8700648E6A00043148FFFF1100007EC3 +:10218000A78A005C90AC00D42407FF8000EC3024C8 +:1021900030CB00FF1560004B9786005C938E005A91 +:1021A000240D000230D5FFFF11CD02A20000A021B6 +:1021B0008F85006002A5802B160000BC9388004824 +:1021C0003C11800096240120310400FF1485008812 +:1021D0008F8400648F9800343312000356400085CA +:1021E00030A500FF8F900064310C00FF24060034FE +:1021F00011860095AF90004C9204000414800118E1 +:102200008F8E0038A380003C8E0D00048DC800D84E +:102210003C0600FF34CCFFFF01AC30240106182B34 +:1022200014600120AF8600548F8700609798005C8F +:10223000AF8700400307402310C000C7A788005C99 +:102240008F91003030C3000300035823922A007C92 +:102250003171000302261021000A20823092000111 +:102260000012488000492821311FFFFF03E5C82BD9 +:10227000132001208F8800388F8500348F880064F8 +:102280001105025A3C0E3F018E0600003C0C250051 +:1022900000CE682411AC01638F84004C30E500FF50 +:1022A0000E00184A000030218F8800388F870060A8 +:1022B0008F8500340A001DB78F8600540A001C5613 +:1022C000AF87006490A400D400E48024320200FFB1 +:1022D000104000169386005990A6008890AE00D753 +:1022E00024A8008830D4003F2686FFE02CD10020AF +:1022F000A38E003C1220000CAF88004C240B000180 +:1023000000CB20043095001916A0012B3C0680005C +:1023100034CF0002008FC0241700022E3099002015 +:1023200017200234000000009386005930CB0001D2 +:102330001160000F9788005C8CBF00848CA900841A +:10234000240AFF8003EA6024000C19403132007F28 +:10235000007238253C0D200000EDC82530D800FE65 +:102360003C0F8000ADF90830A39800599788005CB5 +:102370001500FF84000000008E630020306200041E +:102380001040FF51938600592404FFFB0064802411 +:102390003C038000AE700020346601808C7301B86D +:1023A0000660FFFE8F98006C347501003C1400013C +:1023B000ACD800008C6B012424076085ACCB0004F2 +:1023C0008EAE000401D488245220000124076083CB +:1023D00024190002A4C700083C0F1000A0D9000B6C +:1023E0003C068000ACCF01B80A001C2B9386005934 +:1023F00030A500FF0E00184A240600018F88006CEB +:102400003C05800034A90900250201889388004812 +:10241000304A0007304B00783C0340802407FF809F +:102420000163C825014980210047F824310C00FFD1 +:1024300024060034ACBF0800AF90004CACB90810C3 +:102440005586FF6E920400048F8400388E11003090 +:10245000908E00D431CD001015A000108F83006045 +:102460002C6F000515E000E400000000909800D4F7 +:102470002465FFFC331200101640000830A400FF52 +:102480008F9F00648F99003413F90004388700018E +:1024900030E20001144001C8000000000E001BC320 +:1024A000000000000A001DF8000000008F84006496 +:1024B00030C500FF0E00184A24060001939800481A +:1024C000240B0034130B00A08F8500388F8600602A +:1024D0009783005C306EFFFF00CE8823AF910060D1 +:1024E000A780005C1280FF90028018212414FFFD59 +:1024F0005474FFA28E6300208E6A00042403FFBF81 +:102500002408FFEF0155F823AE7F000490AC00D4FF +:102510003189007FA0A900D48E7200208F8F0038EF +:10252000A780005C364D0002AE6D0020A5E000BC27 +:1025300091E500D400A3C824A1F900D48F950038F8 +:10254000AEA000EC92B800D403085824A2AB00D48B +:102550000A001CD78F8500388F910034AF8000604F +:1025600002275821AF8B0034000020212403FFFFF5 +:10257000108301B48F8500388E0C00103C0D0800CC +:102580008DAD31B09208000031843FFF008D802B6B +:1025900012000023310D003F3C1908008F3931A88B +:1025A0008F9F006C000479802408FF80033F202166 +:1025B000008FC821938500590328F8243C06008029 +:1025C0003C0F800034D80001001F91403331007F60 +:1025D0008F8600380251502535EE0940332B0078A4 +:1025E000333000073C0310003C02800C017890253A +:1025F000020E48210143C0250222382134AE0001D9 +:10260000ADFF0804AF890050ADF20814AF87004455 +:10261000ADFF0028ACD90084ADF80830A38E005976 +:102620009383005A24070003106700272407000142 +:102630001467FFAC8F8500382411002311B1008589 +:1026400000000000240E000B026020210E001A4A38 +:10265000A38E00680040A0210A001D328F8500383B +:1026600002602021240B000C0E001A4AA38B006884 +:10267000240AFFFF104AFFBD2404FFFF8F8E00389D +:10268000A380003C8E0D00048DC800D83C0600FFDE +:1026900034CCFFFF01AC30240106182B1060FEE2A1 +:1026A000AF86005402602021241200190E001A4A3D +:1026B000A3920068240FFFFF104FFFAC2404FFFF1C +:1026C0000A001C838F86005425A3FFE02C74002091 +:1026D0001280FFDD240E000B000328803C1108014E +:1026E000263194B400B148218D2D000001A00008CE +:1026F000000000008F85003400A710219385003C66 +:10270000AF82003402251821A383003C951F00BC32 +:102710000226282137F91000A51900BC5240FF926B +:10272000AF850060246A0004A38A003C950900BCC0 +:1027300024A40004AF84006035322000A51200BC40 +:102740000A001D54000020218F8600602CC800055F +:102750001500FF609783005C3065FFFF00C5C8234C +:102760002F2F000511E00003306400FF24CDFFFC93 +:1027700031A400FF8F8900648F920034113200046D +:10278000389F000133EC0001158001380000000083 +:102790008F840038908700D434E60010A08600D4DF +:1027A0008F8500388F8600609783005CACA000ECBA +:1027B0000A001D2F306EFFFF8CB500848CB400849E +:1027C0003C04100002A7302400068940328E007FAE +:1027D000022E8025020410253C08800024050001FB +:1027E00002602021240600010E0019A9AD02083064 +:1027F0000A001CC38F8500388C8200EC1222FE7EFA +:102800000260202124090005A38900680E001A4AED +:102810002411FFFF1451FE782404FFFF0A001D5508 +:102820002403FFFF8F8F004C8F8800388DF8000045 +:10283000AD1800888DE70010AD0700988F87006005 +:102840000A001DB78F8600542406FFFF118600057D +:10285000000000000E001B4C026020210A001D8FAA +:102860000040A0210E001AD1026020210A001D8F15 +:102870000040A0218F90004C3C0208008C4231B0F7 +:102880008E110010322C3FFF0182282B10A0000C6B +:10289000240BFF808F85005090A3000D01637024EE +:1028A00031CA00FF1140000702602021001143825D +:1028B000310600032418000110D8010600000000B2 +:1028C000026020212403000D0E001A4AA383006831 +:1028D000004020218F8500380A001D320080A02191 +:1028E0008F90004C3C0A08008D4A31B08F85005013 +:1028F0008E0400100000A0218CB1001430823FFF34 +:10290000004A602B8CB200205180FFEE0260202133 +:1029100090B8000D240BFF800178702431C300FFB4 +:102920005060FFE80260202100044382310600036A +:1029300014C0FFE40260202194BF001C8F9900386E +:102940008E060028A73F00E88CAF0010022F20233E +:1029500014C4013A026020218F83005400C368210F +:10296000022D382B14E00136240200188F8A00440F +:102970008F820030024390218D4B00100163702341 +:10298000AD4E0010AD5200208C4C00740192282BEB +:1029900014A0015F026020218F8400508E08002463 +:1029A0008C86002411060007026020212419001CD7 +:1029B0000E001A4AA3990068240FFFFF104FFFC5AD +:1029C0002404FFFF8F8400448C87002424FF00012F +:1029D000AC9F00241251012F8F8D00308DB10074F7 +:1029E0001232012C3C0B00808E0E000001CB5024D3 +:1029F00015400075000000008E0300142411FFFF35 +:102A0000107100073C0808003C0608008CC6319095 +:102A100000C8C0241300015202602021A380006876 +:102A20008E0300003C19000100792024108000135F +:102A30003C1F0080007FA02416800009020028218E +:102A4000026020212411001A0E001A4AA391006886 +:102A50002407FFFF1047FF9F2404FFFF02002821E7 +:102A6000026020210E001A6A240600012410FFFFD4 +:102A70001050FF982404FFFF241400018F8D0044A0 +:102A8000026020210280302195A900342405000134 +:102A9000253200010E0019A9A5B200340000202142 +:102AA0008F8500380A001D320080A0218F90004CD5 +:102AB0003C1408008E9431B08E07001030E53FFFC3 +:102AC00000B4C82B132000618F8600502412FF80B1 +:102AD00090C9000D0249682431A400FF5080005CB9 +:102AE000026020218F8C00541180000700078B8228 +:102AF0008F8500388F82FCC094BF0080944A000A02 +:102B0000515F00F78F8600403227000314E0006415 +:102B100000000000920E000211C000D8000000006A +:102B20008E0B0024156000D902602021920400035E +:102B300024190002308500FF14B90005308900FF18 +:102B40008F940054128000EA240D002C308900FF7D +:102B5000392C00102D8400012D3200010244302553 +:102B6000020028210E001A6A026020212410FFFFB3 +:102B7000105000BF8F8500388F830054106000D341 +:102B8000240500013C0A08008D4A318C0143F82BD2 +:102B900017E000B22402002D02602021000028214D +:102BA0000E0019A9240600018F85003800001821A5 +:102BB0000A001D320060A0210E0018750000000000 +:102BC0000A001DF800000000AC8000200A001E78FA +:102BD0008E03001400002821026020210E0019A994 +:102BE000240600010A001CC38F8500380A001DB7A7 +:102BF0008F8800388CAA00848CAC00843C031000C1 +:102C00000147F824001F91403189007F024968255F +:102C100001A32825ACC50830910700012405000157 +:102C2000026020210E0019A930E600010A001CC331 +:102C30008F850038938F00482403FFFD0A001D3460 +:102C4000AF8F00600A001D342403FFFF02602021C3 +:102C50002410000D0E001A4AA390006800401821AD +:102C60008F8500380A001D320060A0210E00187503 +:102C7000000000009783005C8F86006000402021E8 +:102C80003070FFFF00D010232C4A00051140FE11C8 +:102C90008F850038ACA400EC0A001D2F306EFFFFBA +:102CA00090CF000D31E300085460FFA192040003AF +:102CB00002602021240200100E001A4AA38200683C +:102CC0002403FFFF5443FF9A920400030A001F12DB +:102CD0008F85003890A4000D308F000811E000951A +:102CE0008F990054572000A6026020218E1F000CEF +:102CF0008CB4002057F40005026020218E0D0008DE +:102D00008CA7002411A7003A026020212402002091 +:102D1000A38200680E001A4A2412FFFF1052FEED33 +:102D20002404FFFF8F9F00442402FFF73C14800E11 +:102D300093EA000D2419FF803C03800001423824EF +:102D4000A3E7000D8F9F00303C0908008D2931ACAE +:102D50008F8C006C97F200788F870044012C302113 +:102D6000324D7FFF000D204000C4782131E5007F07 +:102D700000B4C02101F94024AC68002CA711000068 +:102D80008CEB0028256E0001ACEE00288CEA002CAC +:102D90008E02002C01426021ACEC002C8E09002C2C +:102DA000ACE900308E120014ACF2003494ED003A1D +:102DB00025A40001A4E4003A97E600783C1108003D +:102DC0008E3131B024C3000130707FFF1211005CDE +:102DD000006030218F8F0030026020212405000127 +:102DE0000E001934A5E600780A001EA1000020217B +:102DF0008E0900142412FFFF1132006B8F8A0038F5 +:102E00008E0200188D4C00D0144C00650260202109 +:102E10008E0B00248CAE0028116E005B2402002172 +:102E20000E001A4AA38200681452FFBE2404FFFF5A +:102E30008F8500380A001D320080A0212402001F67 +:102E40000E001A4AA38200682409FFFF1049FEA160 +:102E50002404FFFF0A001E548F83005402602021C7 +:102E60000E001A4AA38200681450FF508F85003864 +:102E70002403FFFF0A001D320060A0218CD800242B +:102E80008E0800241118FF29026020210A001F2744 +:102E90002402000F8E0900003C05008001259024CB +:102EA0001640FF492402001A026020210E001A4A2F +:102EB000A3820068240CFFFF144CFECF2404FFFF04 +:102EC0008F8500380A001D320080A0210E001934C1 +:102ED000026020218F8500380A001EE500001821BD +:102EE0002403FFFD0060A0210A001D32AF860060B0 +:102EF000026020210E001A4AA38D00682403FFFF00 +:102F00001043FF588F8500380A001ECC920400033E +:102F10002418001D0E001A4AA39800682403FFFF1E +:102F20001443FE9D2404FFFF8F8500380A001D32E4 +:102F30000080A021026020210A001F3D24020024FD +:102F4000240880000068C024330BFFFF000B73C20D +:102F500031D000FF001088270A001F6E001133C017 +:102F6000240F001B0E001A4AA38F00681451FEACF8 +:102F70002404FFFF8F8500380A001D320080A02145 +:102F80000A001F3D240200278E0600288CA3002C77 +:102F900010C30008026020210A001F812402001FC4 +:102FA0000A001F812402000E026020210A001F81F6 +:102FB000240200258E04002C1080000D8F8F00301D +:102FC0008DE800740104C02B5700000C0260202122 +:102FD0008CB900140086A0210334282B10A0FF52C6 +:102FE0008F9F0044026020210A001F8124020022DA +:102FF000026020210A001F81240200230A001F8191 +:103000002402002627BDFFD8AFB3001CAFB10014C7 +:10301000AFBF0020AFB20018AFB000103C0280007C +:103020008C5201408C4B01483C048000000B8C0208 +:10303000322300FF317300FF8C8501B804A0FFFE2E +:1030400034900180AE1200008C8701442464FFF0AC +:10305000240600022C830013AE070004A61100080A +:10306000A206000BAE1300241060004F8FBF00209B +:10307000000448803C0A0801254A9534012A402171 +:103080008D04000000800008000000003C030800E0 +:103090008C6331A831693FFF00099980007280215B +:1030A000021370212405FF80264D0100264C00806C +:1030B0003C02800031B1007F3198007F31CA007F2F +:1030C0003C1F800A3C1980043C0F800C01C5202461 +:1030D00001A5302401853824014F1821AC46002475 +:1030E000023F402103194821AC470090AC4400281E +:1030F000AF830044AF880038AF8900300E0019005C +:10310000016080213C0380008C6B01B80560FFFEEC +:103110008F8700448F8600383465018090E8000D69 +:10312000ACB20000A4B0000600082600000416039C +:1031300000029027001227C21080008124C200885C +:10314000241F6082A4BF0008A0A000052402000282 +:10315000A0A2000B8F8B0030000424003C08270045 +:1031600000889025ACB20010ACA00014ACA00024E4 +:10317000ACA00028ACA0002C8D6900382413FF807F +:10318000ACA9001890E3000D02638024320500FF13 +:1031900010A000058FBF002090ED000D31AC007F26 +:1031A000A0EC000D8FBF00208FB3001C8FB2001861 +:1031B0008FB100148FB000103C0A10003C0E80004C +:1031C00027BD002803E00008ADCA01B8265F010052 +:1031D0002405FF8033F8007F3C06800003E5782457 +:1031E0003C19800A03192021ACCF0024908E00D412 +:1031F00000AE682431AC00FF11800024AF84003899 +:10320000248E008895CD00123C0C08008D8C31A8CE +:1032100031AB3FFF01924821000B5180012A402130 +:1032200001052024ACC400283107007F3C06800C37 +:1032300000E620219083000D00A31024304500FFFC +:1032400010A0FFD8AF8400449098000D330F0010F9 +:1032500015E0FFD58FBF00200E0019000000000010 +:103260003C0380008C7901B80720FFFE00000000BD +:10327000AE1200008C7F0144AE1F0004A6110008AE +:1032800024110002A211000BAE1300243C1308010C +:10329000927396F0327000015200FFC38FBF00207E +:1032A0000E002146024020210A0020638FBF00202B +:1032B0003C1260008E452C083C03F0033462FFFF93 +:1032C00000A2F824AE5F2C088E582C083C1901C0CF +:1032D00003199825AE532C080A0020638FBF0020E5 +:1032E000264D010031AF007F3C10800A240EFF8084 +:1032F00001F0282101AE60243C0B8000AD6C00245D +:103300001660FFA8AF85003824110003A0B100FCAF +:103310000A0020638FBF002026480100310A007F89 +:103320003C0B800A2409FF80014B30210109202435 +:103330003C078000ACE400240A002062AF8600381D +:10334000944E0012320C3FFF31CD3FFF15ACFF7D94 +:10335000241F608290D900D42418FF800319782498 +:1033600031EA00FF1140FF7700000000240700044D +:10337000A0C700FC8F870044241160842406000D40 +:10338000A4B10008A0A600050A00204D24020002F6 +:103390003C040001248496DC24030014240200FE73 +:1033A0003C010800AC2431EC3C010800AC2331E8BE +:1033B0003C010801A42296F83C040801248496F8F4 +:1033C0000000182100643021A0C300042463000120 +:1033D0002C6500FF54A0FFFC006430213C0708006E +:1033E00024E7010003E00008AF87007800A058211F +:1033F000008048210000102114A00012000050217C +:103400000A002142000000003C010801A42096F8B7 +:103410003C05080194A596F88F8200783C0C0801C1 +:10342000258C96F800E2182100AC2021014B302BAE +:10343000A089000400001021A460000810C0003919 +:10344000010048218F8600780009384000E94021BA +:103450000008388000E6282190A8000B90B9000AE7 +:103460000008204000881021000218800066C0215A +:10347000A319000A8F85007800E5782191EE000AF3 +:1034800091E6000B000E684001AE6021000C208028 +:1034900000851021A046000B3C030801906396F2C2 +:1034A000106000222462FFFF8F8300383C01080176 +:1034B000A02296F2906C00FF118000040000000032 +:1034C000906E00FF25CDFFFFA06D00FF3C190801A5 +:1034D000973996F8272300013078FFFF2F0F00FF60 +:1034E00011E0FFC9254A00013C010801A42396F818 +:1034F0003C05080194A596F88F8200783C0C0801E1 +:10350000258C96F800E2182100AC2021014B302BCD +:10351000A089000400001021A460000814C0FFC9A5 +:103520000100482103E000080000000003E000085B +:103530002402000227BDFFE0248501002407FF804C +:10354000AFB00010AFBF0018AFB1001400A718242F +:103550003C10800030A4007F3C06800A00862821B1 +:103560008E110024AE03002490A200FF1440000836 +:10357000AF850038A0A000098FBF0018AE1100244D +:103580008FB100148FB0001003E0000827BD0020A9 +:1035900090A900FD90A800FF312400FF0E0020F448 +:1035A000310500FF8F8500388FBF0018A0A00009EB +:1035B000AE1100248FB100148FB0001003E000089A +:1035C00027BD002027BDFFD0AFB20020AFB1001C47 +:1035D000AFB00018AFBF002CAFB40028AFB30024C9 +:1035E0003C0980009533011635320C00952F011AE5 +:1035F0003271FFFF023280218E08000431EEFFFF9E +:10360000248B0100010E6821240CFF8025A5FFFFFB +:10361000016C50243166007F3C07800AAD2A0024EB +:1036200000C73021AF850074AF8800703C010801ED +:10363000A02096F190C300090200D02100809821BB +:10364000306300FF2862000510400048AF86003854 +:10365000286400021480008E24140001240D00054B +:103660003C010801A02D96D590CC00FD3C0108013D +:10367000A02096D63C010801A02096D790CB000A46 +:10368000240AFF80318500FF014B4824312700FFC9 +:1036900010E0000C000058213C12800836510080D8 +:1036A0008E2F00308CD0005C01F0702305C0018E9D +:1036B0008F87007090D4000A3284007FA0C4000A73 +:1036C0008F8600383C118008363000808E0F003025 +:1036D0008F87007000EF702319C000EE000000001B +:1036E00090D4000924120002328400FF1092024795 +:1036F000000000008CC2005800E2F82327F9FFFF09 +:103700001B2001300000000090C5000924080004BF +:1037100030A300FF10680057240A00013C01080193 +:10372000A02A96D590C900FF252700013C01080179 +:10373000A02796D43C030801906396D52406000583 +:103740001066006A2C780005130000C40000902168 +:103750000003F8803C0408012484958003E4C82118 +:103760008F25000000A0000800000000241800FFC2 +:103770001078005C0000000090CC000A90CA00099C +:103780003C080801910896F13187008000EA48253D +:103790003C010801A02996DC90C500FD3C140801FD +:1037A000929496F2311100013C010801A02596DDAA +:1037B00090DF00FE3C010801A03F96DE90D200FFA2 +:1037C0003C010801A03296DF8CD900543C0108016D +:1037D000AC3996E08CD000583C010801AC3096E43E +:1037E0008CC3005C3C010801AC3496EC3C01080140 +:1037F000AC2396E8162000088FBF002C8FB4002859 +:103800008FB300248FB200208FB1001C8FB000183E +:1038100003E0000827BD00303C1180009624010E13 +:103820000E000FD43094FFFF3C0B08018D6B96F413 +:103830000260382102802821AE2B01803C13080150 +:103840008E7396D401602021240600830E00102F71 +:10385000AFB300108FBF002C8FB400288FB30024AB +:103860008FB200208FB1001C8FB0001803E0000859 +:1038700027BD00303C1808008F1831FC270F0001CD +:103880003C010800AC2F31FC0A0021D700000000E9 +:103890001474FFB900000000A0C000FF3C05080040 +:1038A0008CA531E43C0308008C6331E03C02080045 +:1038B0008C4232048F99003834A80001241F000282 +:1038C0003C010801AC2396F43C010801A02896F0C5 +:1038D0003C010801A02296F3A33F00090A002190B1 +:1038E0008F8600380E002146000000000A0021D714 +:1038F0008F8600383C1F080193FF96D424190001DD +:1039000013F902298F8700703C100801921096D895 +:103910003C06080190C696D610C000050200A02102 +:103920003C040801908496D9109001E48F870078B8 +:10393000001088408F9F0078023048210009C8801D +:10394000033F702195D80008270F0001A5CF00087C +:103950003C040801908496D93C05080190A596D6B0 +:103960000E0020F4000000008F8700780230202134 +:103970000004308000C720218C8500048F820074F1 +:1039800000A2402305020006AC8200048C8A0000DD +:103990008F830070014310235C400001AC83000062 +:1039A0008F86003890CB00FF2D6C00025580002DD3 +:1039B000241400010230F821001F40800107282153 +:1039C00090B9000B8CAE00040019C0400319782197 +:1039D000000F1880006710218C4D000001AE882375 +:1039E0002630FFFF5E00001F241400018C440004F9 +:1039F0008CAA0000008A482319200019240E000414 +:103A00003C010801A02E96D590AD000B8CAB0004B4 +:103A1000000D8840022D80210010108000471021E9 +:103A20008C44000401646023058202009443000872 +:103A300090DF00FE90B9000B33E500FF54B900049D +:103A40000107A021A0D400FE8F8700780107A021E4 +:103A50009284000B0E0020F4240500018F860038AC +:103A600024140001125400962E500001160000424A +:103A70003C08FFFF241900021659FF3F0000000018 +:103A8000A0C000FF8F860038A0D200090A0021D70D +:103A90008F86003890C700092404000230E300FF3D +:103AA0001064016F24090004106901528F880074AA +:103AB0008CCE0054010E682325B10001062001754B +:103AC000241800043C010801A03896D53C010801E7 +:103AD000A02096D490D400FD90D200FF2E4F00027B +:103AE00015E0FF14328400FF000438408F8900780D +:103AF00090DF00FF00E41021000220800089C8212F +:103B00002FE500029324000B14A0FF0A24070002F3 +:103B100000041840006480210010588001692821A9 +:103B20008CAC0004010C50230540FF020000000093 +:103B30003C030801906396D614600005246F0001D1 +:103B40003C010801A02496D93C010801A02796D782 +:103B50003C010801A02F96D690CE00FF24E700017B +:103B600031CD00FF01A7882B1220FFE990A4000BA4 +:103B70000A0021C6000000003C0508018CA596D46F +:103B80003C12000400A8F82413F2000624020005E9 +:103B90003C090801912996D5152000022402000352 +:103BA000240200053C010801A02296F190C700FF05 +:103BB00014E0012024020002A0C200090A0021D75B +:103BC0008F86003890CC00FF1180FEDA240A0001B5 +:103BD0008F8C00748F890078240F00030180682186 +:103BE0001160001E240E0002000540400105A021C6 +:103BF00000142080008990218E51000401918023BF +:103C00000600FECC000000003C020801904296D65F +:103C100014400005245800013C010801A02A96D751 +:103C20003C010801A02596D93C010801A03896D690 +:103C300090DF00FF010510210002C88033E500FF7E +:103C4000254A00010329202100AA402B1500FEB9B6 +:103C50009085000B1560FFE50005404000054040E1 +:103C600001051821000310803C010801A02A96D408 +:103C70003C010801A02596D8004918218C64000455 +:103C800000E4F82327F9FFFF1F20FFE900000000F0 +:103C90008C63000000E358230560013A01A38823E8 +:103CA00010E301170184C0231B00FEA200000000E6 +:103CB0003C010801A02E96D50A002305240B000123 +:103CC000240E0004A0CE00093C0D08008DAD31F893 +:103CD0008F86003825A200013C010800AC2231F893 +:103CE0000A0021D7000000008CD9005C00F9C02335 +:103CF0001F00FE7B000000008CDF005C10FFFF65F2 +:103D00008F8400748CC3005C008340232502000173 +:103D10001C40FF60000000008CC9005C248700018B +:103D200000E9282B10A0FE943C0D80008DAB01040F +:103D30003C0C0001016C50241140FE8F2402001045 +:103D40003C010801A02296F10A0021D700000000E2 +:103D50008F9100748F86003826220001ACC2005C6F +:103D60000A002292241400018F8700382404FF8067 +:103D70000000882190E9000A241400010124302564 +:103D8000A0E6000A3C05080190A596D63C0408016F +:103D9000908496D90E0020F4000000008F86003831 +:103DA0008F85007890C800FD310700FF0007404074 +:103DB0000107F821001FC0800305C8219323000BD1 +:103DC000A0C300FD8F8500788F8600380305602131 +:103DD000918F000B000F704001CF6821000D808093 +:103DE000020510218C4B0000ACCB00548D840004E4 +:103DF0008F83007400645023194000022482000164 +:103E00002462000101074821ACC2005C0009308037 +:103E100000C5402100E02021240500010E0020F40F +:103E20009110000B8F86003890C500FF10A0FF0C8A +:103E3000001070408F85007801D06821000D10803F +:103E4000004558218D6400008F8C0074018450233C +:103E50002547000104E0FF02263100013C03080170 +:103E6000906396D62E2F0002247800013C010801B1 +:103E7000A03896D63C010801A03496D711E0FEF890 +:103E8000020038210A002365000740408F84003873 +:103E90008F8300748C85005800A340230502FE9A8E +:103EA000AC8300580A00223B000000003C070801D8 +:103EB00090E796F2240200FF10E200BE8F860038E1 +:103EC0003C110801963196FA3C030801246396F8E8 +:103ED000262500013230FFFF30ABFFFF02036021D7 +:103EE0002D6A00FF1540008D918700043C010801F8 +:103EF000A42096FA8F88003800074840012728211F +:103F0000911800FF000530802405000127140001EE +:103F1000A11400FF3C120801925296F28F8800789B +:103F20008F8E0070264F000100C820213C0108013F +:103F3000A02F96F2AC8E00008F8D0074A48500082F +:103F4000AC8D00043C030801906396D414600077A4 +:103F5000000090213C010801A02596D4A087000B09 +:103F60008F8C007800CC5021A147000A8F82003846 +:103F7000A04700FD8F840038A08700FE8F860038A0 +:103F80008F9F0070ACDF00548F990074ACD900583B +:103F90008F8D00780127C02100185880016DA02165 +:103FA000928F000A000F704001CF18210003888013 +:103FB000022D8021A207000B8F8600780166602108 +:103FC000918A000B000A1040004A2021000428803A +:103FD00000A64021A107000A3C07800834E90080C0 +:103FE0008D2200308F860038ACC2005C0A0022921D +:103FF0002414000190CA00FF1540FEAD8F880074A4 +:10400000A0C400090A0021D78F860038A0C000FD97 +:104010008F98003824060001A30000FE3C0108012F +:10402000A02696D53C010801A02096D40A0021C6FE +:104030000000000090CB00FF3C040801908496F340 +:10404000316C00FF0184502B1540000F2402000347 +:1040500024020004A0C200090A0021D78F8600387C +:1040600090C3000A2410FF8002035824316C00FF23 +:104070001180FDC1000000003C010801A02096D580 +:104080000A0021C600000000A0C200090A0021D7D2 +:104090008F86003890D4000A2412FF8002544824EE +:1040A000312800FF1500FFF4240200083C0108013C +:1040B000A02296F10A0021D70000000000108840DD +:1040C0008F8B0070023018210003688001A7202127 +:1040D000AC8B00008F8A0074240C0001A48C0008B3 +:1040E000AC8A00043C05080190A596D62402000184 +:1040F00010A2FE1E24A5FFFF0A0022519084000B8F +:104100000184A0231A80FD8B000000003C010801FF +:10411000A02E96D50A002305240B00013C010801BE +:10412000A42596FA0A0023B78F880038240B0001D3 +:10413000106B00228F9800388F85003890BF00FFE9 +:1041400033F900FF1079002B000000003C1F08012C +:1041500093FF96D8001FC840033FC0210018A080DD +:104160000288782191EE000AA08E000A8F8D0078D7 +:104170003C030801906396D800CD88210A0023DD16 +:10418000A223000B263000010600003101A4902379 +:104190000640002B240200033C010801A02F96D505 +:1041A0000A002305240B00018F8900380A00223BF6 +:1041B000AD2700540A00229124120001931400FD3F +:1041C000A094000B8F8800388F8F0078910E00FE2E +:1041D00000CF6821A1AE000A8F910038A22700FD10 +:1041E0008F8300708F900038AE0300540A0023DEE6 +:1041F0008F8D007890B000FEA090000A8F8B003861 +:104200008F8C0078916A00FD00CC1021A04A000B31 +:104210008F840038A08700FE8F8600748F85003859 +:10422000ACA600580A0023DE8F8D007894B80008F1 +:10423000ACA40004030378210A002285A4AF00087F +:104240003C010801A02296D50A0021C6000000000A +:1042500090CF0009240D000431EE00FF11CDFD8543 +:10426000240200013C010801A02296D50A0021C6C3 +:1042700000000000080033440800334408003420E4 +:10428000080033F4080033D8080033280800332826 +:10429000080033280800334C8008010080080080A3 +:1042A000800800005F865437E4AC62CC50103A4579 +:1042B00036621985BF14C0E81BC27A1E84F4B55655 +:1042C000094EA6FE7DDA01E7C04D748108005A74DC +:1042D00008005AB808005A5C08005A5C08005A5C8A +:1042E00008005A5C08005A7408005A5C08005A5CBE +:1042F00008005AC008005A5C080059D408005A5CEB +:1043000008005A5C08005AC008005A5C08005A5C51 +:1043100008005A5C08005A5C08005A5C08005A5CA5 +:1043200008005A5C08005A5C08005A5C08005A5C95 +:1043300008005A9408005A5C08005A9408005A5C15 +:1043400008005A5C08005A5C08005A9808005A9401 +:1043500008005A5C08005A5C08005A5C08005A5C65 +:1043600008005A5C08005A5C08005A5C08005A5C55 +:1043700008005A5C08005A5C08005A5C08005A5C45 +:1043800008005A5C08005A5C08005A5C08005A5C35 +:1043900008005A5C08005A5C08005A5C08005A5C25 +:1043A00008005A9808005A9808005A5C08005A9861 +:1043B00008005A5C08005A5C08005A5C08005A5C05 +:1043C00008005A5C08005A5C08005A5C08005A5CF5 +:1043D00008005A5C08005A5C08005A5C08005A5CE5 +:1043E00008005A5C08005A5C08005A5C08005A5CD5 +:1043F00008005A5C08005A5C08005A5C08005A5CC5 +:1044000008005A5C08005A5C08005A5C08005A5CB4 +:1044100008005A5C08005A5C08005A5C08005A5CA4 +:1044200008005A5C08005A5C08005A5C08005A5C94 +:1044300008005A5C08005A5C08005A5C08005A5C84 +:1044400008005A5C08005A5C08005A5C08005A5C74 +:1044500008005A5C08005A5C08005A5C08005A5C64 +:1044600008005A5C08005A5C08005A5C08005A5C54 +:1044700008005A5C08005A5C08005A5C08005A5C44 +:1044800008005A5C08005A5C08005A5C08005A5C34 +:1044900008005A5C08005A5C08005A5C08005A5C24 +:1044A00008005A5C08005A5C08005A5C08005A5C14 +:1044B00008005A5C08005A5C08005A5C08005A5C04 +:1044C00008005A5C08005A5C08005A5C08005ADC74 +:1044D0000800782C08007A900800783808007628C0 +:1044E00008007838080078C4080078380800762872 +:1044F0000800762808007628080076280800762824 +:104500000800762808007628080076280800762813 +:1045100008007628080078580800784808007628AF +:1045200008007628080076280800762808007628F3 +:1045300008007628080076280800762808007628E3 +:1045400008007628080076280800762808007848B1 +:10455000080082FC08008188080082C40800818865 +:104560000800829408008070080081880800818813 +:1045700008008188080081880800818808008188F7 +:1045800008008188080081880800818808008188E7 +:104590000800818808008188080081B008008D34F7 +:1045A00008008E9008008E70080088D808008D4C96 +:1045B0000A00012400000000000000000000000DBF +:1045C000747061362E322E31620000000602010145 +:1045D00000000000000000000000000000000000DB +:1045E00000000000000000000000000000000000CB +:1045F00000000000000000000000000000000000BB +:1046000000000000000000000000000000000000AA +:10461000000000000000000000000000000000009A +:10462000000000000000000000000000000000008A +:10463000000000000000000000000000000000007A +:104640000000000010000003000000000000000D4A +:104650000000000D3C020800244217203C03080023 +:1046600024632A10AC4000000043202B1480FFFD7F +:10467000244200043C1D080037BD2FFC03A0F0219C +:104680003C100800261004903C1C0800279C1720B2 +:104690000E000262000000000000000D2402FF80F6 +:1046A00027BDFFE000821024AFB00010AF42002011 +:1046B000AFBF0018AFB10014936500043084007FD1 +:1046C000034418213C0200080062182130A5002094 +:1046D000036080213C080111277B000814A0000220 +:1046E0002466005C2466005892020004974301048B +:1046F000920400043047000F3063FFFF3084004015 +:10470000006728231080000900004821920200055C +:1047100030420004104000050000000010A000031B +:104720000000000024A5FFFC2409000492020005FB +:1047300030420004104000120000000010A00010E1 +:10474000000000009602000200A72021010440257D +:104750002442FFFEA7421016920300042402FF80A9 +:1047600000431024304200FF104000033C020400CC +:104770000A000174010240258CC20000AF421018EB +:104780008F4201780440FFFE2402000AA742014044 +:1047900096020002240400093042000700021023A0 +:1047A00030420007A7420142960200022442FFFE67 +:1047B000A7420144A740014697420104A74201488D +:1047C0008F420108304200205040000124040001C3 +:1047D00092020004304200101440000234830010A2 +:1047E00000801821A743014A0000000000000000DB +:1047F0000000000000000000AF48100000000000B2 +:104800000000000000000000000000008F421000C7 +:104810000441FFFE3102FFFF1040000700000000CE +:1048200092020004304200401440000300000000E7 +:104830008F421018ACC20000960200063042FFFF03 +:10484000244200020002104300021040036288214B +:10485000962200001120000D3044FFFF00A7102118 +:104860008F8300388F45101C0002108200021080D8 +:1048700000431021AC45000030A6FFFF0E00058D5F +:1048800000052C0200402021A62200009203000413 +:104890002402FF8000431024304200FF1040001F1C +:1048A0000000000092020005304200021040001B90 +:1048B000000000009742100C2442FFFEA742101691 +:1048C000000000003C02040034420030AF421000FF +:1048D00000000000000000000000000000000000D8 +:1048E0008F4210000441FFFE000000009742100CB0 +:1048F0008F45101C3042FFFF24420030000210821E +:1049000000021080005B1021AC45000030A6FFFFC4 +:104910000E00058D00052C02A62200009604000260 +:10492000248400080E0001E93084FFFF974401044D +:104930000E0001F73084FFFF8FBF00188FB1001405 +:104940008FB000103C02100027BD002003E00008DB +:10495000AF4201783084FFFF308200078F8500244A +:1049600010400002248300073064FFF800A41021E7 +:1049700030421FFF03421821247B4000AF850028EE +:10498000AF82002403E00008AF4200843084FFFFC0 +:104990003082000F8F85002C8F860034104000027B +:1049A0002483000F3064FFF000A410210046182B70 +:1049B000AF8500300046202314600002AF82002C37 +:1049C000AF84002C8F82002C340480000342182115 +:1049D00000641821AF83003803E00008AF42008074 +:1049E0008F820014104000088F8200048F82FFDC49 +:1049F000144000058F8200043C02FFBF3442FFFFD9 +:104A0000008220248F82000430430006240200022A +:104A10001062000F3C0201012C62000350400005AF +:104A2000240200041060000F3C0200010A00023062 +:104A30000000000010620005240200061462000C51 +:104A40003C0201110A000229008210253C020011DB +:104A500000821025AF421000240200010A0002303B +:104A6000AF82000C00821025AF421000AF80000C16 +:104A700000000000000000000000000003E000084B +:104A8000000000008F82000C1040000400000000B5 +:104A90008F4210000441FFFE0000000003E0000808 +:104AA000000000008F8200102443F800000231C291 +:104AB00024C2FFF02C6303011060000300021042C7 +:104AC0000A000257AC8200008F85001800C5102B29 +:104AD0001440000B0000182100C5102324470001DA +:104AE0008F82001C00A210212442FFFF0046102BE1 +:104AF000544000042402FFFF0A000257AC87000064 +:104B00002402FFFF0A000260AC8200008C820000D9 +:104B10000002194000621821000318800062182169 +:104B2000000318803C0208002442175C0062182130 +:104B300003E000080060102127BDFFD8AFBF0020B0 +:104B4000AFB1001CAFB000183C0460088C8250006C +:104B50002403FF7F3C066000004310243442380CDD +:104B6000AC8250008CC24C1C3C1A80000002160221 +:104B70003042000F10400007AF82001C8CC34C1C59 +:104B80003C02001F3442FC0000621824000319C2DA +:104B9000AF8300188F420008275B400034420001B9 +:104BA000AF420008AF8000243C02601CAF40008090 +:104BB000AF4000848C4500088CC308083402800094 +:104BC000034220212402FFF0006218243C020080EE +:104BD0003C010800AC2204203C025709AF84003895 +:104BE00014620004AF850034240200010A0002921E +:104BF000AF820014AF8000148F42000038420001E1 +:104C0000304200011440FFFC8F8200141040001657 +:104C10000000000097420104104000058F8300004F +:104C2000146000072462FFFF0A0002A72C62000A3A +:104C30002C620010504000048F83000024620001A9 +:104C4000AF8200008F8300002C62000A1440000332 +:104C50002C6200070A0002AEAF80FFDC10400002A9 +:104C600024020001AF82FFDC8F4301088F44010062 +:104C700030622000AF83000410400008AF840010B1 +:104C80003C0208008C42042C244200013C01080034 +:104C9000AC22042C0A00058A3C0240003065020068 +:104CA00014A0000324020F001482026024020D00ED +:104CB00097420104104002C83C02400030624000AC +:104CC000144000AD8F8200388C4400088F42017878 +:104CD0000440FFFE24020800AF42017824020008CD +:104CE000A7420140A7400142974201048F8400047B +:104CF0003051FFFF30820001104000070220802168 +:104D00002623FFFE240200023070FFFFA742014667 +:104D10000A0002DBA7430148A74001463C02080005 +:104D20008C42043C1440000D8F8300103082002020 +:104D30001440000224030009240300010060202124 +:104D40008F830010240209005062000134840004A3 +:104D5000A744014A0A0002F60000000024020F00E6 +:104D60001462000530820020144000062403000D68 +:104D70000A0002F524030005144000022403000980 +:104D800024030001A743014A3C0208008C4204208E +:104D90003C0400480E00020C004420250E000235A1 +:104DA000000000008F82000C1040003E0000000058 +:104DB0008F4210003C0300200043102410400039B3 +:104DC0008F820004304200021040003600000000D4 +:104DD000974210141440003300000000974210085E +:104DE0008F8800383042FFFF2442000600021882FC +:104DF0000003388000E83021304300018CC40000FB +:104E000010600004304200030000000D0A00033768 +:104E100000E81021544000103084FFFF3C05FFFFE4 +:104E200000852024008518260003182B0004102B71 +:104E300000431024104000050000000000000000A6 +:104E40000000000D00000000240002228CC20000BF +:104E50000A000336004520253883FFFF0003182B86 +:104E60000004102B00431024104000050000000037 +:104E7000000000000000000D000000002400022BD4 +:104E80008CC200003444FFFF00E81021AC44000055 +:104E90003C0208008C420430244200013C0108001E +:104EA000AC2204308F6200008F840038AF8200088B +:104EB0008C8300003402FFFF1462000F00001021F9 +:104EC0003C0508008CA504543C0408008C84045064 +:104ED00000B0282100B0302B008220210086202144 +:104EE0003C010800AC2504543C010800AC240450EB +:104EF0000A000580240400088C8200003042010072 +:104F00001040000F000010213C0508008CA5044C47 +:104F10003C0408008C84044800B0282100B0302BE9 +:104F200000822021008620213C010800AC25044C91 +:104F30003C010800AC2404480A0005802404000851 +:104F40003C0508008CA504443C0408008C84044003 +:104F500000B0282100B0302B0082202100862021C3 +:104F60003C010800AC2504443C010800AC2404408A +:104F70000A000580240400088F6200088F62000088 +:104F800000021602304300F02402003010620005D7 +:104F900024020040106200E08F8200200A00058891 +:104FA0002442000114A000050000000000000000E1 +:104FB0000000000D00000000240002568F4201781E +:104FC0000440FFFE000000000E00023D27A4001078 +:104FD0001440000500408021000000000000000D8A +:104FE000000000002400025D8E0200001040000559 +:104FF00000000000000000000000000D00000000A4 +:10500000240002608F62000C0443000324020001AC +:105010000A00042EAE000000AE0200008F820038AD +:105020008C480008A20000078F65000C8F64000404 +:1050300030A3FFFF0004240200852023308200FFFC +:105040000043102124420005000230832CC200815D +:10505000A605000A14400005A20400040000000098 +:105060000000000D00000000240002788F85003849 +:105070000E0005AB260400148F6200048F43010864 +:10508000A60200083C02100000621824106000080C +:105090000000000097420104920300072442FFEC45 +:1050A000346300023045FFFF0A0003C3A203000778 +:1050B000974201042442FFF03045FFFF96060008A6 +:1050C0002CC200135440000592030007920200070F +:1050D00034420001A20200079203000724020001EB +:1050E00010620005240200031062000B8F8200385A +:1050F0000A0003E030C6FFFF8F8200383C04FFFF48 +:105100008C43000C0064182400651825AC43000C87 +:105110000A0003E030C6FFFF3C04FFFF8C43001091 +:105120000064182400651825AC43001030C6FFFF4A +:1051300024C2000200021083A20200058F830038FF +:10514000304200FF00021080004328218CA800009C +:105150008CA2000024030004000217021443001272 +:1051600000000000974201043C03FFFF01031824E4 +:105170003042FFFF004610232442FFFE006240251C +:10518000ACA8000092030005306200FF000210800E +:1051900000501021904200143042000F00431021B3 +:1051A0000A000415A20200068CA400049742010420 +:1051B0009603000A3088FFFF3042FFFF00461023AD +:1051C0002442FFD60002140001024025ACA80004CE +:1051D000920200079204000524630028000318834C +:1051E0000064182134420004A2030006A202000752 +:1051F0008F8200042403FFFB34420002004310248A +:10520000AF820004920300068F87003800031880E5 +:10521000007010218C4400203C02FFF63442FFFF56 +:105220000082402400671821AE04000CAC68000C1A +:10523000920500063C03FF7F8E02000C00052880CB +:1052400000B020213463FFFF01033024948800263E +:1052500000A7282100431024AE02000CAC860020D9 +:10526000AC880024ACA8001024020010A742014022 +:1052700024020002A7400142A7400144A742014680 +:10528000974201043C0400082442FFFEA742014863 +:10529000240200010E00020CA742014A9603000AF4 +:1052A0009202000400431021244200023042000711 +:1052B00000021023304200070E000235AE0200103B +:1052C0008F6200003C0308008C6304442404001037 +:1052D000AF820008974201043042FFFF2442FFFEE4 +:1052E00000403821000237C33C0208008C420440D1 +:1052F000006718210067282B004610210045102167 +:105300003C010800AC2304443C010800AC220440EA +:105310000A0005150000000014A0000500000000B0 +:10532000000000000000000D000000002400030A3F +:105330008F4201780440FFFE000000000E00023D95 +:1053400027A4001414400005004080210000000044 +:105350000000000D00000000240003118E02000078 +:105360005440000692020007000000000000000DFB +:10537000000000002400031C9202000730420004D9 +:10538000104000058F8200042403FFFB344200021A +:1053900000431024AF8200048F620004044300081D +:1053A00092020007920200068E03000CAE0000007D +:1053B0000002108000501021AC4300209202000730 +:1053C00030420004544000099602000A920200058F +:1053D0003C03000100021080005010218C46001890 +:1053E00000C33021AC4600189602000A9206000461 +:1053F000277100080220202100C2302124C60005A8 +:10540000260500140E0005AB00063082920400064B +:105410008F6500043C027FFF000420800091202162 +:105420008C8300043442FFFF00A228240065182169 +:10543000AC8300049202000792040005920300046A +:10544000304200041040001496070008308400FF2A +:1054500000042080009120218C86000497420104E2 +:105460009605000A306300FF3042FFFF0043102121 +:105470000045102130E3FFFF004310232442FFD8F2 +:1054800030C6FFFF0002140000C23025AC860004C5 +:105490000A0004C992030007308500FF0005288038 +:1054A00000B128218CA4000097420104306300FF62 +:1054B0003042FFFF00431021004710233C03FFFF51 +:1054C000008320243042FFFF00822025ACA400008E +:1054D0009203000724020001106200060000000091 +:1054E0002402000310620011000000000A0004EC16 +:1054F0008E03001097420104920300049605000AEF +:105500008E24000C00431021004510212442FFF29C +:105510003C03FFFF008320243042FFFF0082202550 +:10552000AE24000C0A0004EC8E0300109742010424 +:10553000920300049605000A8E24001000431021F7 +:10554000004510212442FFEE3C03FFFF008320248E +:105550003042FFFF00822025AE2400108E03001091 +:105560002402000AA7420140A74301429603000A11 +:10557000920200043C04004000431021A742014471 +:10558000A740014697420104A742014824020001B6 +:105590000E00020CA742014A0E0002350000000076 +:1055A0008F6200009203000400002021AF820008F7 +:1055B000974201049606000A3042FFFF006218215C +:1055C000006028213C0308008C6304443C0208006E +:1055D0008C42044000651821004410210065382BDE +:1055E000004710213C010800AC2304443C010800A2 +:1055F000AC22044092040004008620212484000A86 +:105600003084FFFF0E0001E9000000009744010410 +:105610003084FFFF0E0001F7000000003C02100084 +:10562000AF4201780A0005878F820020148200278C +:105630003062000697420104104000673C024000BF +:105640003062400010400005000000000000000033 +:105650000000000D00000000240004208F420178AB +:105660000440FFFE24020800AF4201782402000833 +:10567000A7420140A74001428F82000497430104E2 +:1056800030420001104000073070FFFF2603FFFE8C +:1056900024020002A7420146A74301480A00053F31 +:1056A0002402000DA74001462402000DA742014A32 +:1056B0008F62000024040008AF8200080E0001E998 +:1056C000000000000A0005190200202110400042DD +:1056D0003C02400093620000304300F024020010BE +:1056E0001062000524020070106200358F820020D5 +:1056F0000A000588244200018F62000097430104DC +:105700003050FFFF3071FFFF8F4201780440FFFEF1 +:105710003202000700021023304200072403000A6F +:105720002604FFFEA7430140A7420142A7440144CB +:10573000A7400146A75101488F420108304200208E +:10574000144000022403000924030001A743014A76 +:105750000E00020C3C0400400E0002350000000068 +:105760003C0708008CE70444021110212442FFFE8C +:105770003C0608008CC604400040182100E3382194 +:10578000000010218F65000000E3402B00C2302193 +:105790002604000800C830213084FFFFAF850008D0 +:1057A0003C010800AC2704443C010800AC2604403E +:1057B0000E0001E9000000000A0005190220202166 +:1057C0000E00013B000000008F82002024420001F7 +:1057D000AF8200203C024000AF4201380A00029232 +:1057E000000000003084FFFF30C6FFFF00052C00E2 +:1057F00000A628253882FFFF004510210045282BF0 +:105800000045102100021C023042FFFF004310211E +:1058100000021C023042FFFF004310213842FFFF0C +:1058200003E000083042FFFF3084FFFF30A5FFFF98 +:1058300000001821108000070000000030820001E5 +:105840001040000200042042006518210A0005A152 +:105850000005284003E000080060102110C0000689 +:1058600024C6FFFF8CA2000024A50004AC82000027 +:105870000A0005AB2484000403E0000800000000D7 +:1058800010A0000824A3FFFFAC8600000000000069 +:10589000000000002402FFFF2463FFFF1462FFFAF0 +:1058A0002484000403E00008000000000000000160 +:1058B0000A00002A00000000000000000000000DA7 +:1058C000747870362E322E3162000000060201001C +:1058D00000000000000001360000EA600000000047 +:1058E00000000000000000000000000000000000B8 +:1058F00000000000000000000000000000000000A8 +:105900000000000000000000000000000000000097 +:105910000000001600000000000000000000000071 +:105920000000000000000000000000000000000077 +:105930000000000000000000000000000000000067 +:1059400000000000000000000000138800000000BC +:10595000000005DC00000000000000001000000353 +:10596000000000000000000D0000000D3C020800D7 +:1059700024423D683C0308002463401CAC40000006 +:105980000043202B1480FFFD244200043C1D08002E +:1059900037BD7FFC03A0F0213C100800261000A8B2 +:1059A0003C1C0800279C3D680E00044E00000000CF +:1059B0000000000D27BDFFB4AFA10000AFA200049E +:1059C000AFA30008AFA4000CAFA50010AFA6001451 +:1059D000AFA70018AFA8001CAFA90020AFAA0024F1 +:1059E000AFAB0028AFAC002CAFAD0030AFAE003491 +:1059F000AFAF0038AFB8003CAFB90040AFBC004417 +:105A0000AFBF00480E000591000000008FBF0048A6 +:105A10008FBC00448FB900408FB8003C8FAF003876 +:105A20008FAE00348FAD00308FAC002C8FAB0028D0 +:105A30008FAA00248FA900208FA8001C8FA7001810 +:105A40008FA600148FA500108FA4000C8FA3000850 +:105A50008FA200048FA1000027BD004C3C1B6004F6 +:105A60008F7A5030377B502803400008AF7A00000F +:105A70008F86003C3C0390003C0280000086282575 +:105A800000A32025AC4400203C0380008C6700204C +:105A900004E0FFFE0000000003E00008000000003A +:105AA0000A000070240400018F85003C3C04800043 +:105AB0003483000100A3102503E00008AC8200201D +:105AC00003E00008000010213084FFFF30A5FFFF35 +:105AD00010800007000018213082000110400002F1 +:105AE00000042042006518211480FFFB00052840B7 +:105AF00003E000080060102110C000070000000053 +:105B00008CA2000024C6FFFF24A50004AC82000084 +:105B100014C0FFFB2484000403E000080000000020 +:105B200010A0000824A3FFFFAC86000000000000C6 +:105B3000000000002402FFFF2463FFFF1462FFFA4D +:105B40002484000403E000080000000090AA003153 +:105B50008FAB00108CAC00403C0300FF8D6800044C +:105B6000AD6C00208CAD004400E060213462FFFF8A +:105B7000AD6D00248CA700483C09FF000109C0243A +:105B8000AD6700288CAE004C0182C824031978252B +:105B9000AD6F0004AD6E002C8CAD0038314A00FFB3 +:105BA000AD6D001C94A900323128FFFFAD680010D4 +:105BB00090A70030A5600002A1600004A16700006A +:105BC00090A30032306200FF0002198210600005CD +:105BD000240500011065000E0000000003E000082D +:105BE000A16A00018CD80028354A0080AD780018E1 +:105BF0008CCF0014AD6F00148CCE0030AD6E000859 +:105C00008CC4002CA16A000103E00008AD64000C04 +:105C10008CCD001CAD6D00188CC90014AD6900144A +:105C20008CC80024AD6800088CC70020AD67000C4C +:105C30008CC200148C8300700043C82B1320000713 +:105C4000000000008CC20014144CFFE400000000AF +:105C5000354A008003E00008A16A00018C820070D0 +:105C60000A0000E6000000009089003027BDFFF820 +:105C70008FA8001CA3A900008FA300003C0DFF808B +:105C800035A2FFFF8CAC002C00625824AFAB0000A3 +:105C9000A100000400C05821A7A000028D06000446 +:105CA00000A048210167C8218FA500000080502175 +:105CB0003C18FF7F032C20263C0E00FF2C8C00019B +:105CC000370FFFFF35CDFFFF3C02FF0000AFC824B8 +:105CD00000EDC02400C27824000C1DC003236825F9 +:105CE00001F87025AD0D0000AD0E00048D240024D8 +:105CF000AFAD0000AD0400088D2C00202404FFFF90 +:105D0000AD0C000C9547003230E6FFFFAD060010E9 +:105D10009145004830A200FF000219C25060000106 +:105D20008D240034AD0400148D4700388FAA00186C +:105D300027BD0008AD0B0028AD0A0024AD07001CEC +:105D4000AD00002CAD00001803E00008AD000020FD +:105D500027BDFFE0AFB20018AFB10014AFB0001024 +:105D6000AFBF001C9098003000C088213C0D00FFA0 +:105D7000330F007FA0CF0000908E003135ACFFFFC5 +:105D80003C0AFF00A0CE000194A6001EA220000441 +:105D90008CAB00148E29000400A08021016C282403 +:105DA000012A40240080902101052025A62600021A +:105DB000AE24000426050020262400080E000092D0 +:105DC00024060002924700302605002826240014ED +:105DD00000071E000003160324060004044000030D +:105DE0002403FFFF965900323323FFFF0E00009279 +:105DF000AE230010262400248FBF001C8FB2001891 +:105E00008FB100148FB00010240500030000302172 +:105E10000A00009C27BD002027BDFFD8AFB1001CA1 +:105E2000AFB00018AFBF002090A9003024020001DD +:105E300000E050213123003F00A040218FB00040FE +:105E40000080882100C04821106200148FA700380C +:105E5000240B000500A0202100C02821106B001396 +:105E6000020030210E000128000000009225007C75 +:105E700030A400021080000326030030AE00003082 +:105E8000260300348FBF00208FB1001C8FB0001894 +:105E90000060102103E0000827BD00280E0000A7C5 +:105EA000AFB000100A00016F000000008FA3003C9B +:105EB000010020210120282101403021AFA3001042 +:105EC0000E0000EEAFB000140A00016F00000000E9 +:105ED0003C06800034C20E008C4400108F850044C4 +:105EE000ACA400208C43001803E00008ACA30024FD +:105EF0003C06800034C20E008C4400148F850044A0 +:105F0000ACA400208C43001C03E00008ACA30024D8 +:105F10009382000C1040001B2483000F2404FFF028 +:105F20000064382410E00019978B00109784000E4D +:105F30009389000D3C0A601C0A0001AC01644023F7 +:105F400001037021006428231126000231C2FFFFE3 +:105F500030A2FFFF0047302B50C0000E00E4482164 +:105F60008D4D000C31A3FFFF00036400000C2C03D7 +:105F700004A1FFF30000302130637FFF0A0001A479 +:105F80002406000103E00008000000009784000ED2 +:105F900000E448213123FFFF3168FFFF0068382B00 +:105FA00054E0FFF8A783000E938A000D114000050E +:105FB000240F0001006BC023A380000D03E0000844 +:105FC000A798000E006BC023A38F000D03E000080C +:105FD000A798000E03E000080000000027BDFFE8BE +:105FE000AFB000103C10800036030140308BFFFF43 +:105FF00093AA002BAFBF0014A46B000436040E005C +:106000009488001630C600FF8FA90030A4680006EF +:10601000AC650008A0660012A46A001AAC670020F4 +:106020008FA5002CA4690018012020210E000198E2 +:10603000AC6500143C021000AE0201788FBF001462 +:106040008FB0001003E0000827BD00188F85000006 +:106050002484000727BDFFF83084FFF83C06800049 +:1060600094CB008A316AFFFFAFAA00008FA900001D +:10607000012540232507FFFF30E31FFF0064102B9D +:106080001440FFF700056882000D288034CC4000E2 +:1060900000AC102103E0000827BD00088F8200003B +:1060A0002486000730C5FFF800A2182130641FFFC6 +:1060B00003E00008AF8400008F87003C8F84004419 +:1060C00027BDFFB0AFB70044AFB40038AFB1002C6C +:1060D000AFBF0048AFB60040AFB5003CAFB300342F +:1060E000AFB20030AFB000283C0B80008C8600249B +:1060F000AD6700808C8A002035670E00356901008D +:10610000ACEA00108C8800248D2500040000B82122 +:10611000ACE800188CE3001000A688230000A02142 +:10612000ACE300148CE20018ACE2001C122000FE6C +:1061300000E0B021936C0008118000F40000000022 +:10614000976F001031EEFFFF022E682B15A000EFB5 +:1061500000000000977200103250FFFFAED0000028 +:106160003C0380008C740000329300081260FFFD35 +:106170000000000096D800088EC700043305FFFF1A +:1061800030B5000112A000E4000000000000000D86 +:1061900030BFA0402419004013F9011B30B4A00007 +:1061A000128000DF000000009373000812600008F6 +:1061B00000000000976D001031ACFFFF00EC202BB9 +:1061C0001080000330AE004011C000D50000000078 +:1061D000A7850040AF87003893630008022028217C +:1061E000AFB10020146000F527B40020AF60000CB0 +:1061F000978F004031F14000162000022403001662 +:106200002403000E24054007A363000AAF650014B1 +:10621000938A00428F70001431550001001512401E +:1062200002024825AF690014979F00408F78001440 +:1062300033F9001003194025AF680014979200400D +:106240003247000810E0016E000000008F67001464 +:106250003C1210003C11800000F27825AF6F001452 +:1062600036230E00946E000A3C0D81002406000EB9 +:1062700031CCFFFF018D2025AF640004A36600022E +:106280009373000A3406FFFC266B0004A36B000A1C +:1062900097980040330820001100015F00000000C3 +:1062A0003C05800034A90E00979900409538000CF9 +:1062B00097870040001940423312C00031030003A9 +:1062C00000127B0330F11000006F6825001172038B +:1062D00001AE6025000C20C0A76400129793004017 +:1062E000936A000A001359823175003C02AA1021FA +:1062F0002450003CA3700009953F000C33F93FFF88 +:10630000A779001097700012936900090130F821F5 +:1063100027E5000230B900070019C0233308000741 +:10632000A368000B9371000997720012976F001019 +:10633000322700FF8F910038978D004000F218211E +:10634000006F702101C6602131A6004010C0000519 +:106350003185FFFF00B1102B3C1280001040001768 +:10636000000098210225A82B56A0013E8FA50020F1 +:106370003C048000348A0E008D5300143C068000DB +:10638000AD5300108D4B001CAD4B0018AD45000007 +:106390008CCD000031AC00081180FFFD34CE0E0022 +:1063A00095C3000800A0882100009021A783004029 +:1063B0008DC6000424130001AF860038976F0010CB +:1063C00031F5FFFF8E9F000003F1282310A0011F6D +:1063D000AE85000093620008144000DD000000005C +:1063E0000E0001E7240400108F900048004028218F +:1063F0003C023200320600FF000654000142F8253C +:1064000026090001AF890048ACBF0000937900095C +:1064100097780012936F000A332800FF3303FFFFC1 +:106420000103382100076C0031EE00FF01AE60254A +:10643000ACAC00048F840048978B0040316A200088 +:106440001140010AACA4000897640012308BFFFFD2 +:1064500006400108ACAB000C978E004031C5000827 +:1064600014A0000226280006262800023C1F8000F7 +:1064700037E70E0094F900148CE5001C8F670004C8 +:10648000937800023324FFFF330300FFAFA3001013 +:106490008F6F0014AFA800180E0001CBAFAF00142F +:1064A000240400100E0001FB000000008E9200008A +:1064B00016400005000000008F7800142403FFBF81 +:1064C0000303A024AF7400148F67000C00F5C821EB +:1064D000AF79000C9375000816A0000800000000BA +:1064E00012600006000000008F6800143C0AEFFFF5 +:1064F0003549FFFE0109F824AF7F0014A37300089B +:106500008FA500200A00034F02202021AED10000F9 +:106510000A00022D3C03800014E0FF1E30BFA040A3 +:106520000E0001900000A0212E9100010237B0253D +:1065300012C000188FBF00488F87003C24170F003F +:1065400010F700D43C0680008CD901780720FFFEAC +:10655000241F0F0010FF00F634CA0E008D560014E1 +:1065600034C7014024080240ACF600048D49001CE9 +:106570003C141000ACE90008A0E00012A4E0001AEE +:10658000ACE00020A4E00018ACE80014ACD4017822 +:106590008FBF00488FB700448FB600408FB5003CD6 +:1065A0008FB400388FB300348FB200308FB1002C1D +:1065B0008FB0002803E0000827BD00508F910038FD +:1065C000978800403C1280000220A821310700403B +:1065D00014E0FF7C00009821977900108F9200381A +:1065E0003338FFFF131200A8000020210080A021F3 +:1065F000108000F300A088211620FECE00000000CD +:106600000A00031F2E9100013C0380008C62017878 +:106610000440FFFE240808008F860000AC68017863 +:106620003C038000946D008A31ACFFFF0186582343 +:10663000256AFFFF31441FFF2C8900081520FFF950 +:10664000000000008F8F0048347040008F83003CB2 +:1066500000E0A021240E0F0025E70001AF870048CD +:1066600000D03021023488233C08800031F500FF3F +:10667000106E0005240700019398004233130001B7 +:106680000013924036470001001524003C0A010027 +:10669000008A4825ACC900008F82004830BF003610 +:1066A00030B90008ACC200041320009900FF9825FF +:1066B00035120E009650000A8F8700003C0F8100B3 +:1066C0003203FFFF24ED000835060140006F60250E +:1066D0003C0E100031AB1FFF269200062405000E71 +:1066E000ACCC0020026E9825A4C5001AAF8B000028 +:1066F000A4D20018162000083C1080008F89003CAE +:1067000024020F00512200022417000136730040BA +:106710000E0001883C10800036060E008CCB001461 +:10672000360A014002402021AD4B00048CC5001CFC +:10673000AD450008A1550012AD5300140E0001989C +:106740003C151000AE1501780A000352000000004D +:10675000936F0009976E0012936D000B31E500FFF7 +:1067600000AE202131AC00FF008C80212602000AFF +:106770003050FFFF0E0001E7020020218F86004805 +:106780003C0341003C05800024CB0001AF8B004856 +:10679000936A00099769001230C600FF315F00FF5D +:1067A0003128FFFF03E8382124F900020006C40065 +:1067B0000319782501E37025AC4E00008F6D000CA5 +:1067C00034A40E00948B001401B26025AC4C00047C +:1067D0008C85001C8F670004936A00023164FFFF00 +:1067E000314900FFAFA900108F680014AFB1001845 +:1067F0000E0001CBAFA800140A0002FD0200202108 +:10680000AF600004A36000029798004033082000A6 +:106810001500FEA300003021A760001297840040FD +:10682000936B000A3C10800030931F0000135183CB +:10683000014BA82126A20028A362000936090E00F8 +:10684000953F000C0A000295A77F00108F7000147E +:10685000360900400E000188AF6900140A0002C921 +:10686000000000000A00034F000020210641FEFA4C +:10687000ACA0000C8CAC000C3C0D8000018D902570 +:106880000A0002EAACB2000C000090210A0002C526 +:1068900024130001128000073C028000344B0E00DC +:1068A0009566000830D300401260004900000000E7 +:1068B0003C0680008CD001780600FFFE34C50E0037 +:1068C00094B500103C03050034CC014032B8FFFF02 +:1068D00003039025AD92000C8CAF0014240D200012 +:1068E0003C041000AD8F00048CAE001CAD8E00087F +:1068F000A1800012A580001AAD800020A58000189C +:10690000AD8D0014ACC401780A0003263C0680005B +:106910008F9F0000351801402692000227F90008D9 +:1069200033281FFFA71200180A000391AF88000048 +:106930003C02800034450140ACA0000C1280001BDA +:1069400034530E0034510E008E370010ACB70004E3 +:106950008E2400183C0B8000ACA400083570014068 +:1069600024040040A20000128FBF0048A600001AB5 +:106970008FB70044AE0000208FB60040A60000187C +:106980008FB5003CAE0400148FB400388FB30034D0 +:106990008FB200308FB1002C8FB000283C02100065 +:1069A00027BD005003E00008AD6201788E66001438 +:1069B000ACA600048E64001C0A00042A3C0B800074 +:1069C0000E0001902E9100010A0003200237B0252D +:1069D000000000000000000D00000000240003691A +:1069E0000A0004013C06800027BDFFD8AFBF00208D +:1069F0003C0980003C1F20FFAFB200183C0760003C +:106A000035320E002402001037F9FFFDACE23008E9 +:106A1000AFB3001CAFB10014AFB00010AE5900000E +:106A20000000000000000000000000000000000066 +:106A3000000000003C1800FF3713FFFDAE530000BC +:106A40003C0B60048D7050002411FF7F3C0E00024F +:106A50000211782435EC380C35CD0109ACED4C1819 +:106A6000240A0009AD6C50008CE80438AD2A0008F7 +:106A7000AD2000148CE54C1C3106FFFF38C42F718B +:106A800000051E023062000F2486C0B310400007CC +:106A9000AF8200088CE54C1C3C09001F3528FC0027 +:106AA00000A81824000321C2AF8400048CF1080858 +:106AB0003C0F57092412F0000232702435F0001008 +:106AC00001D0602601CF68262DAA00012D8B000180 +:106AD000014B382550E00009A380000C3C1F601CCE +:106AE0008FF8000824190001A399000C33137C00CF +:106AF000A7930010A780000EA380000DAF80004870 +:106B000014C00003AF8000003C066000ACC0442C01 +:106B10000E0005B93C1080000E000F1A361101005E +:106B20003C12080026523DD03C13080026733E500C +:106B30008E03000038640001308200011440FFFC25 +:106B40003C0B800A8E2600002407FF8024C90240E7 +:106B5000312A007F014B402101272824AE06002066 +:106B6000AF880044AE0500243C048000AF86003CA2 +:106B70008C8C01780580FFFE24180800922F0008F5 +:106B8000AC980178A38F0042938E004231CD000172 +:106B900011A0000F24050D0024DFF8002FF90301D8 +:106BA0001320001C000629C224A4FFF00004104298 +:106BB000000231400E00020200D2D8213C02400007 +:106BC0003C068000ACC201380A0004A000000000AE +:106BD00010C50023240D0F0010CD00273C1F800896 +:106BE00037F9008093380000240E0050330F00FF67 +:106BF00015EEFFF33C0240000E000A3600000000D4 +:106C00003C0240003C068000ACC201380A0004A0EF +:106C1000000000008F83000400A3402B1500000B30 +:106C20008F8B0008006B50212547FFFF00E5482BA4 +:106C30001520000600A36023000C19400E0002027C +:106C40000073D8210A0004C43C0240000000000D7B +:106C50000E000202000000000A0004C43C024000D2 +:106C60003C1B0800277B3F500E0002020000000082 +:106C70000A0004C43C0240003C1B0800277B3F7014 +:106C80000E000202000000000A0004C43C024000A2 +:106C90003C0660043C09080025290104ACC9502CBD +:106CA0008CC850003C0580003C0200023507008083 +:106CB000ACC750003C040800248415A43C03080021 +:106CC0002463155CACA50008ACA2000C3C010800D4 +:106CD000AC243D603C010800AC233D6403E00008A7 +:106CE0002402000100A030213C1C0800279C3D68C4 +:106CF0003C0C04003C0B0002008B3826008C402624 +:106D00002CE200010007502B2D050001000A4880ED +:106D10003C03080024633D60004520250123182121 +:106D20001080000300001021AC6600002402000166 +:106D300003E00008000000003C1C0800279C3D68A0 +:106D40003C0B04003C0A0002008A3026008B3826E7 +:106D50002CC200010006482B2CE5000100094080F0 +:106D60003C03080024633D600045202501031821F1 +:106D700010800005000010213C0C0800258C155CDB +:106D8000AC6C00002402000103E0000800000000D9 +:106D90003C0900023C08040000883026008938269F +:106DA0002CC30001008028212CE400010083102561 +:106DB0001040000B000030213C1C0800279C3D685F +:106DC0003C0A80008D4E00082406000101CA682597 +:106DD000AD4D00088D4C000C01855825AD4B000CC5 +:106DE00003E0000800C010213C1C0800279C3D68FF +:106DF0003C0580008CA6000C000420272402000122 +:106E000000C4182403E00008ACA3000C3C020002FC +:106E10001082000B3C0560003C0704001087000353 +:106E20000000000003E00008000000008CA908D06A +:106E3000240AFFFD012A402403E00008ACA808D082 +:106E40008CA408D02406FFFE0086182403E0000866 +:106E5000ACA308D03C05601A34A600108CC3008097 +:106E600027BDFFF88CC50084AFA3000093A40000E9 +:106E70002402000110820003AFA5000403E0000813 +:106E800027BD000893A7000114E0001497AC00028E +:106E900097B800023C0F8000330EFFFC01CF682141 +:106EA000ADA50000A3A000003C0660008CC708D080 +:106EB0002408FFFE3C04601A00E82824ACC508D072 +:106EC0008FA300048FA200003499001027BD000892 +:106ED000AF22008003E00008AF2300843C0B800059 +:106EE000318AFFFC014B48218D2800000A00057DF6 +:106EF000AFA8000427BDFFE8AFBF00103C1C08008E +:106F0000279C3D683C0580008CA4000C8CA20004EA +:106F10003C0300020044282410A0000A00A3182407 +:106F20003C0604003C0400021460000900A6102482 +:106F30001440000F3C0404000000000D3C1C08003D +:106F4000279C3D688FBF001003E0000827BD001894 +:106F50003C0208008C423D600040F809000000003F +:106F60003C1C0800279C3D680A0005A68FBF001046 +:106F70003C0208008C423D640040F809000000001B +:106F80000A0005AC00000000000411C003E0000886 +:106F9000244202403C04080024843FB42405001A23 +:106FA0000A00009C0000302127BDFFE0AFB00010B8 +:106FB0003C108000AFBF0018AFB1001436110100C3 +:106FC000922200090E0005B63044007F8E3F00007B +:106FD0008F89003C3C0F008003E26021258800403F +:106FE0000049F821240DFF80310E00783198007897 +:106FF00035F9000135F100020319382501D1482582 +:10700000010D302403ED5824018D2824240A00406A +:1070100024040080240300C0AE0B0024AE0008103E +:10702000AE0A0814AE040818AE03081CAE05080426 +:10703000AE070820AE060808AE0908243609090084 +:107040009539000C3605098033ED007F3338FFFF9A +:10705000001889C0AE110800AE0F0828952C000C4E +:107060008FBF00188FB10014318BFFFF000B51C090 +:10707000AE0A002C8CA400508FB000108CA3003CF2 +:107080008D2700048CA8001C8CA600383C0E800ABA +:1070900001AE102127BD0020AF820044AF84005014 +:1070A000AF830054AF87004CAF88005C03E000085A +:1070B000AF8600603C09080091293FD924A800024E +:1070C0003C05110000093C0000E8302500C51825EA +:1070D00024820008AC83000003E00008AC800004B8 +:1070E0003C098000352309009128010B906A0011AA +:1070F0002402002800804821314700FF00A07021B1 +:1071000000C068213108004010E20002340C86DD26 +:10711000240C08003C0A800035420A9A944700007B +:10712000354B0A9C35460AA030F9FFFFAD39000007 +:107130008D780000354B0A8024040001AD3800042E +:107140008CCF0000AD2F00089165001930A300031B +:107150001064009028640002148000AF240500022F +:107160001065009E240F0003106F00B435450AA47B +:10717000240A0800118A0048000000005100003D68 +:107180003C0B80003C0480003483090090670012AF +:1071900030E200FF004D7821000FC8802724000155 +:1071A0003C0A8000354F090091E50019354C0980F3 +:1071B0008D87002830A300FF0003150000475825E5 +:1071C0000004C4003C19600001793025370806FF2F +:1071D000AD260000AD2800048DEA002C25280028EB +:1071E000AD2A00088DEC0030AD2C000C8DE500348C +:1071F000AD2500108DE400383C05800034AC093C1E +:10720000AD2400148DE3001CAD2300188DE7002091 +:10721000AD27001C8DE20024AD2200208DF900284E +:1072200034A20100AD3900248D830000AD0E0004AE +:1072300034B90900AD0300008C47000C250200148E +:10724000AD070008932B00123C04080090843FD83F +:10725000AD000010317800FF030D302100064F0013 +:1072600000047C00012F702535CDFFFC03E00008F1 +:10727000AD0D000C35780900930600123C0508009E +:1072800094A53FC830C800FF010D5021000A60805E +:107290000A00063C018520211500005B000000006B +:1072A0003C08080095083FCE3C06080094C63FC83D +:1072B000010610213C0B800035790900933800113C +:1072C000932A001935660A80330800FF94CF002AFC +:1072D00000086082314500FF978A0058000C1E00AC +:1072E000000524003047FFFF006410250047C0253B +:1072F00001EA30213C0B4000030B402500066400EE +:10730000AD280000AD2C0004932500183C030006B6 +:107310002528001400053E0000E31025AD220008DA +:107320008F24002C3C05800034AC093CAD24000CBB +:107330008F38001C34A20100254F0001AD38001029 +:107340008D830000AD0E000431EB7FFFAD03000024 +:107350008C47000C34B90900A78B0058AD07000812 +:10736000932B00123C04080090843FD8250200149F +:10737000317800FF030D302100064F0000047C002F +:10738000012F702535CDFFFCAD00001003E0000893 +:10739000AD0D000C3C02080094423FD23C050800B1 +:1073A00094A53FC835440AA43C07080094E73FC4AD +:1073B000948B00000045C8210327C023000B1C004C +:1073C0002706FFF200665025AD2A000CAD20001004 +:1073D000AD2C00140A00063025290018354F0AA4E8 +:1073E00095E50000956400280005140000043C00A9 +:1073F0003459810000EC5825AD39000CAD2B00103C +:107400000A000630252900143C0C0800958C3FCE5C +:107410000A000681258200015460FF56240A0800F4 +:1074200035580AA49706000000061C00006C502581 +:10743000AD2A000C0A000630252900103C03080084 +:1074400094633FD23C07080094E73FC83C0F080014 +:1074500095EF3FC494A4000095790028006710219F +:10746000004F582300041C00001934002578FFEE5B +:1074700000D87825346A8100AD2A000CAD2F0010A9 +:10748000AD200014AD2C00180A0006302529001C80 +:1074900003E00008240207D027BDFFE0AFB20018C8 +:1074A000AFB10014AFB00010AFBF001C0E00007CE5 +:1074B000008088218F8800548F87004C3C0580080D +:1074C00034B20080011128213C1080002402008089 +:1074D000240300C000A72023AE0208183C06800841 +:1074E000AE03081C18800004AF850054ACC500042E +:1074F0008CC90004AF89004C1220000936040980B1 +:107500000E0006F800000000924C00278E0B00745D +:1075100001825004014B3021AE46000C3604098034 +:107520008C8E001C8F8F005C01CF682319A0000493 +:107530008FBF001C8C90001CAF90005C8FBF001CA4 +:107540008FB200188FB100148FB000100A00007EB7 +:1075500027BD00208F8600508F8300548F82004CFF +:107560003C05800834A40080AC860050AC83003C0D +:1075700003E00008ACA200043C0308008C63005444 +:1075800027BDFFF8308400FF2462000130A500FF12 +:107590003C010800AC22005430C600FF3C078000CC +:1075A0008CE801780500FFFE3C0C7FFFA3A40003DC +:1075B0008FAA0000358BFFFF014B4824000627C02F +:1075C00001244025AFA8000034E201009043000AE6 +:1075D000A3A000023C1980FFA3A300018FAF00000D +:1075E00030AE007F3738FFFF01F86024000E6E00D8 +:1075F0003C0A002034E50140018D58253549200022 +:107600002406FF803C04100027BD0008ACAB000C32 +:10761000ACA90014A4A00018A0A6001203E0000862 +:10762000ACE40178308800FF30A700FF3C03800005 +:107630008C6201780440FFFE3C0C8000358A0A0011 +:107640008D4B00203584014035850980AC8B0004CA +:107650008D4900240007302B00061540AC89000836 +:10766000A088001090A3004CA083002D03E0000828 +:10767000A480001827BDFFE8308400FFAFBF0010D2 +:107680000E00075D30A500FF8F8300548FBF0010F0 +:107690003C06800034C50140344700402404FF907C +:1076A0003C02100027BD0018ACA3000CA0A40012DF +:1076B000ACA7001403E00008ACC2017827BDFFE0CE +:1076C0003C088008AFBF001CAFB20018AFB1001477 +:1076D000AFB00010351000808E0600183C07800007 +:1076E000309200FF00C72025AE0400180E00007C79 +:1076F00030B100FF92030005346200080E00007EE6 +:10770000A2020005024020210E000771022028215C +:10771000024020218FBF001C8FB200188FB10014CF +:107720008FB0001024050005240600010A0007326E +:1077300027BD00203C05800034A309809066000826 +:1077400030C200081040000F3C0A01013549080A08 +:10775000AC8900008CA80074AC8800043C070800C9 +:1077600090E73FD830E5001050A00008AC8000083A +:107770003C0D800835AC00808D8B0058AC8B000828 +:107780002484000C03E00008008010210A0007B5E3 +:107790002484000C27BDFFE83C098000AFB0001036 +:1077A000AFBF00143526098090C8000924020006E6 +:1077B00000A05821310300FF3527090000808021F7 +:1077C000240500041062007B2408000294CF005CB2 +:1077D0003C0E020431EDFFFF01AE6025AE0C00004F +:1077E00090CA00083144002010800008000000000A +:1077F00090C2004E3C1F010337F90300305800FFD0 +:107800000319302524050008AE06000490F9001184 +:1078100090E6001290E40011333800FF00187082E7 +:1078200030CF00FF01CF5021014B6821308900FF8C +:1078300031AAFFFF39230028000A60801460002C61 +:10784000020C482390E400123C198000372F0100FD +:10785000308C00FF018B1821000310800045F821B7 +:10786000001F8400360706FFAD270004373F0900DC +:1078700093EC001193EE0012372609800005C082B8 +:107880008DE4000C8CC5003431CD00FF01AB10211C +:107890000058182100A4F8230008840000033F00CA +:1078A00000F0302533F9FFFF318F00FC00D970253F +:1078B0000158202101E9682100045080ADAE000C80 +:1078C0000E00007C012A80213C088008240B000463 +:1078D000350500800E00007EA0AB000902001021DB +:1078E0008FBF00148FB0001003E0000827BD001800 +:1078F00090EC001190E300193C18080097183FCE57 +:10790000318200FF0002F882307000FF001FCE00BD +:1079100000103C000327302500D870253C0F4000A4 +:1079200001CF68253C198000AD2D0000373F0900CC +:1079300093EC001193EE0012372F010037260980D7 +:107940000005C0828DE4000C8CC5003431CD00FFF1 +:1079500001AB10210058182100A4F823000884006E +:1079600000033F0000F0302533F9FFFF318F00FCAA +:1079700000D970250158202101E9682100045080B8 +:10798000ADAE000C0E00007C012A80213C0880086E +:10799000240B0004350500800E00007EA0AB00091A +:1079A000020010218FBF00148FB0001003E0000808 +:1079B00027BD00180A0007C72408001227BDFFD002 +:1079C0003C038000AFB60028AFB50024AFB4002060 +:1079D000AFB10014AFBF002CAFB3001CAFB20018A2 +:1079E000AFB000103467010090E6000B309400FF48 +:1079F00030B500FF30C200300000B02110400099C7 +:107A000000008821346409809088000800082E0056 +:107A100000051E03046000C0240400048F86005487 +:107A20003C010800A0243FD83C0C8000AD800048F9 +:107A30003C048000348E010091CD000B31A5002064 +:107A400010A000073C078000349309809272000860 +:107A50000012860000107E0305E000C43C1F800871 +:107A600034EC0100918A000B34EB09809169000825 +:107A7000314400400004402B3123000800C8982303 +:107A80001460000224120003000090213C108000CA +:107A900036180A8036040900970E002C90830011D6 +:107AA0009089001293050018307F00FF312800FFF5 +:107AB000024810210002C880930D0018033F78216E +:107AC00001F1302130B100FF00D11821A78E0058FC +:107AD0003C010800A4263FCE3C010800A4233FD06F +:107AE00015A00002000000000000000D920B010B29 +:107AF0003065FFFF3C010800A4233FD2316A0040FB +:107B00003C010800A4203FC83C010800A4203FC459 +:107B10001140000224A4000A24A4000B3091FFFFAE +:107B20000E0001E7022020219206010B3C0C080008 +:107B3000958C3FD2004020210006698231A70001C8 +:107B40000E00060101872821004020210260282123 +:107B50000E00060C024030210E0007A1004020213B +:107B600016C00069004020219212010B32560040DD +:107B700012C000053C0500FF8C93000034AEFFFFEF +:107B8000026E8024AC9000000E0001FB0220202138 +:107B90003C0F080091EF3FD831F10003122000168E +:107BA0003C1380088F8200543C09800835280080EF +:107BB000245F0001AD1F003C3C0580088CB9000427 +:107BC00003E02021033FC0231B000002AF9F0054AD +:107BD0008CA400040E0006F8ACA400043C0780004E +:107BE0008CEB00743C04800834830080004B5021EF +:107BF000AC6A000C3C1380083670008002802021A3 +:107C000002A02821A200006B0E00075D3C1480003A +:107C10008F920054368C0140AD92000C8F86004844 +:107C20003C151000344D000624D60001AF960048E4 +:107C30008FBF002CA18600128FB60028AD8D0014D6 +:107C40008FB3001CAE9501788FB200188FB5002459 +:107C50008FB400208FB100148FB0001003E0000833 +:107C600027BD003034640980908F0008000F760033 +:107C7000000E6E0305A00033347F090093F8001B4B +:107C8000241900103C010800A0393FD8331300022A +:107C90001260FF678F8600548F8200601446FF6574 +:107CA0003C0480000E00007C000000003C048008C2 +:107CB0003485008090A8000924060016310300FFD7 +:107CC0001066000D0000000090AB00093C070800A2 +:107CD00090E73FD824090008316400FF34EA00012E +:107CE0003C010800A02A3FD81089002F240C000A6C +:107CF000108C00282402000C0E00007E0000000002 +:107D00000A0008608F8600540E0007B9024028213F +:107D10000A0008AE004020213C0B8008356A008034 +:107D20008D4600548CE9000C1120FF3DAF860054B5 +:107D3000240700143C010800A0273FD80A00085F70 +:107D40003C0C800090910008241200023C010800C5 +:107D5000A0323FD8323000201200000B2416000160 +:107D60008F8600540A0008602411000837F800804C +:107D70008F020038AFE200048FF90004AF19003C15 +:107D80000A00086C3C0780008F8600540A000860D7 +:107D900024110004A0A200090E00007E00000000D3 +:107DA0000A0008608F860054240200140A00093A71 +:107DB000A0A2000927BDFFE8AFB000103C10800072 +:107DC000AFBF001436020100904400090E00075DA9 +:107DD000240500013C0480089099000E3483008043 +:107DE000909F000F906F00269089000A33F800FFE3 +:107DF00000196E000018740031EC00FF01AE502530 +:107E0000000C5A00014B3825312800FF3603014091 +:107E10003445600000E830252402FF813C04100056 +:107E2000AC66000C8FBF0014AC650014A062001299 +:107E3000AE0401788FB0001003E0000827BD0018E1 +:107E400027BDFFE8308400FFAFBF00100E00075DC4 +:107E500030A500FF3C05800034A4014034470040B9 +:107E60002406FF92AC870014A08600128F83005472 +:107E70008FBF00103C02100027BD0018AC83000C1F +:107E800003E00008ACA2017827BDFFD8AFB0001016 +:107E9000308400FF30B000FF3C058000AFB100141B +:107EA000AFBF0020AFB3001CAFB20018000410C277 +:107EB00034A60100320300023051000114600007B3 +:107EC00090D200093C098008353300809268000593 +:107ED0003107000810E0000C308A00100240202119 +:107EE0000E00078302202821240200018FBF0020FA +:107EF0008FB3001C8FB200188FB100148FB0001028 +:107F000003E0000827BD00281540003434A50A000E +:107F10008CB800248CAF0008130F004B00003821F0 +:107F20003C0D800835B30080926C00682406000286 +:107F3000318B00FF116600843C06800034C20100D2 +:107F40009263004C90590009307F00FF53F9000400 +:107F50003213007C10E00069000000003213007C46 +:107F60005660005C0240202116200009320D0001FD +:107F70003C0C800035840100358B0A008D6500249F +:107F80008C86000414A6FFD900001021320D0001D8 +:107F900011A0000E024020213C1880003710010083 +:107FA0008E0F000C8F8E005011EE000800000000B4 +:107FB0000E000843022028218E19000C3C1F800867 +:107FC00037F00080AE190050024020210E000771EA +:107FD000022028210A00098F240200013C05080024 +:107FE0008CA5006424A400013C010800AC240064BA +:107FF0001600000D00000000022028210E0007716D +:1080000002402021926E0068240C000231CD00FF56 +:1080100011AC0022024020210E00094100000000A6 +:108020000A00098F240200010E00007024040001E0 +:10803000926B0025020B30250E00007EA266002503 +:108040000A0009D3022028218E6200188CDF000468 +:108050008CB9002400021E0217F9FFB13065007FC1 +:108060009268004C264400013093007F1265004066 +:10807000310300FF1464FFAB3C0D8008264700016C +:1080800030F1007F30E200FF1225000B24070001D1 +:10809000004090210A00099C2411000124050004DD +:1080A0000E000732240600010E0009410000000006 +:1080B0000A00098F240200012405FF8002452024C4 +:1080C00000859026324200FF004090210A00099C62 +:1080D000241100010E00084302202821320700303D +:1080E00010E0FFA132100082024020210E00078321 +:1080F000022028210A00098F240200018E6900183D +:108100000240202102202821012640250E0009647A +:10811000AE6800189264004C240500032406000198 +:108120000E000732308400FF0E00007024040001AE +:1081300092710025021150250E00007EA26A0025D2 +:108140000A00098F240200018E6F00183C1880007D +:108150000240202101F87025022028210E0007711D +:10816000AE6E00189264004C0A000A1B240500043D +:10817000324A0080394900801469FF6A3C0D80084A +:108180000A0009F42647000127BDFFC0AFB0001860 +:108190003C108000AFBF0038AFB70034AFB600303E +:1081A000AFB5002CAFB40028AFB30024AFB20020AD +:1081B0000E0005BEAFB1001C360201009045000B59 +:1081C0000E00097690440008144000E78FBF003885 +:1081D0003C08800835070080A0E0006B3606098067 +:1081E00090C50000240300503C17080026F73F907C +:1081F00030A400FF3C13080026733FA01083000347 +:108200003C1080000000B82100009821241F0010BD +:108210003611010036120A00361509808E580024E6 +:108220008E3400048EAF00208F8C00543C01080077 +:10823000A03F3FD836190A80972B002C8EF60000FD +:10824000932A00180298702301EC68233C0108006F +:10825000AC2E3FB43C010800AC2D3FB83C010800F7 +:10826000AC2C3FDCA78B005802C0F809315400FF4A +:1082700030490002152000E930420001504000C49E +:108280009227000992A90008312800081500000271 +:10829000241500030000A8213C0A80003543090092 +:1082A00035440A008C8D00249072001190700012E9 +:1082B000907F0011325900FF321100FF02B11021EE +:1082C0000002C08033EF00FF0319B021028F70213C +:1082D00002D4602125CB00103C010800A4363FCE1B +:1082E0003C010800AC2D3FE03C010800A42C3FD02D +:1082F0003C010800A42B3FCC3556010035540980C1 +:1083000035510E008F8700548F89005C8E850020C8 +:1083100024080006012730233C010800AC283FD484 +:1083200000A7282304C000B50000902104A000B3DA +:1083300000C5502B114000B5000000003C010800B2 +:10834000AC263FB88E6200000040F8090000000033 +:108350003046000214C0007400408021304B000100 +:10836000556000118E6200043C0D08008DAD3FBCCD +:108370003C0EC0003C04800001AE6025AE2C000025 +:108380008C980000330F000811E0FFFD0000000092 +:10839000963F000824120001A79F00408E39000478 +:1083A000AF9900388E6200040040F8090000000018 +:1083B0000202802532030002146000B300000000B6 +:1083C0003C09080095293FC43C06080094C63FD0EC +:1083D0003C0A0800954A3FC63C0708008CE73FBCB2 +:1083E000012670213C0308008C633FE03C08080034 +:1083F00095083FDA01CA20218ED9000C00E9282116 +:10840000249F000200A878210067C02133E4FFFF09 +:10841000AF9900503C010800AC383FE03C01080037 +:10842000A42F3FC83C010800A42E3FD20E0001E754 +:10843000000000008F8D0048004020213C01080012 +:10844000A02D3FD98E62000825AC0001AF8C0048FA +:108450000040F809000000008F85005402A0302180 +:108460000E00060C004020210E0007A10040202134 +:108470008E6B000C0160F809004020213C0A0800C6 +:10848000954A3FD23C06080094C63FC601464821A3 +:10849000252800020E0001FB3104FFFF3C05080007 +:1084A0008CA53FB43C0708008CE73FBC00A7202305 +:1084B0003C010800AC243FB414800006000000001A +:1084C0003C0208008C423FD4344B00403C01080081 +:1084D000AC2B3FD4124000438F8E00448E2D0010F1 +:1084E0008F920044AE4D00208E2C0018AE4C00241C +:1084F0003C04080094843FC80E0006FA0000000007 +:108500008F9F00548E6700103C010800AC3F3FDC99 +:1085100000E0F809000000003C1908008F393FB462 +:108520001720FF798F870054979300583C11800ED5 +:10853000321601000E000729A633002C16C0004594 +:10854000320300105460004C8EE5000432080040F5 +:108550005500001D8EF000088EE4000C0080F80924 +:10856000000000008FBF00388FB700348FB6003096 +:108570008FB5002C8FB400288FB300248FB2002059 +:108580008FB1001C8FB0001803E0000827BD004029 +:108590008F86003C36110E0000072E0000A6202515 +:1085A000AE0400808E4300208E500024AFA3001044 +:1085B000AE2300148FB20010AE320010AE30001C9B +:1085C0000A000A75AE3000180200F8090000000029 +:1085D0008EE4000C0080F809000000000A000B2E59 +:1085E0008FBF003824180001240F0001A5C000200F +:1085F000A5D800220A000B10ADCF00243C010800D2 +:10860000AC203FB80A000AA68E6200003C010800B8 +:10861000AC253FB80A000AA68E6200009224000929 +:108620000E000771000028218FBF00388FB700347B +:108630008FB600308FB5002C8FB400288FB3002484 +:108640008FB200208FB1001C8FB0001803E000082B +:1086500027BD00403C1480009295010900002821AC +:108660000E00084332A400FF320300105060FFB830 +:10867000320800408EE5000400A0F8090000000068 +:108680000A000B28320800405240FFA89793005878 +:108690008E3400148F930044AE7400208E35001C7D +:1086A000AE7500240A000B1F979300588F820014A8 +:1086B0000004218003E00008008210213C078008AC +:1086C00034E200809043006900804021106000097E +:1086D0003C0401003C0708008CE73FDC8F8300303E +:1086E00000E32023048000089389001C14E30003A6 +:1086F0000100202103E00008008010213C0401005B +:1087000003E00008008010211120000B00673823CF +:108710003C0D800035AC0980918B007C316A0002F1 +:10872000114000202409003400E9702B15C0FFF12E +:108730000100202100E938232403FFFC00A3C82402 +:1087400000E3C02400F9782B15E0FFEA030820219C +:1087500030C400030004102314C000143049000387 +:108760000000302100A9782101E6702100EE682B7D +:1087700011A0FFE03C0401002D3800010006C82BC9 +:10878000010548210319382414E0FFDA2524FFFCF1 +:108790002402FFFC00A218240068202103E0000846 +:1087A000008010210A000B9E240900303C0C800040 +:1087B0003586098090CB007C316A00041540FFE9C2 +:1087C000240600040A000BAD000030213C03080021 +:1087D0008C63005C8F82001827BDFFE0AFBF0018DC +:1087E000AFB1001410620005AFB00010000329C043 +:1087F00024A40280AF840014AF8300183C108000D2 +:1088000036020A0094450032361101000E000B7F3B +:1088100030A43FFF8E240000241FFF803C11008005 +:108820000082C021031F60243309007F000CC9406F +:1088300003294025330E0078362F00033C0D10002D +:10884000010D502501CF5825AE0C002836080980AF +:10885000AE0C080CAE0B082CAE0A08309103006970 +:108860003C06800C0126382110600006AF870034DA +:108870008D09003C8D03006C0123382318E0008231 +:10888000000000003C0B8008356A00803C1080002E +:10889000A1400069360609808CC200383C06800081 +:1088A00034C50A0090A8003C310C00201180001A49 +:1088B000AF820030240D00013C0E800035D10A004B +:1088C000A38D001CAF8000248E2400248F850024FB +:1088D000240D0008AF800020AF8000283C01080074 +:1088E000A42D3FC63C010800A4203FDA0E000B83F4 +:1088F000000030219228003C8FBF00188FB1001477 +:108900008FB0001000086142AF82002C27BD00200C +:1089100003E000083182000190B80032240E00010B +:10892000330F00FF000F2182108E00412419000236 +:108930001099006434C40AC03C03800034640A0007 +:108940008C8F002415E0001E34660900909F0030D3 +:108950002418000533F9003F1338004E24030001AA +:108960008F860020A383001CAF860028AF860024DA +:108970003C0E800035D10A008E2400248F8500240F +:10898000240D00083C010800A42D3FC63C0108004E +:10899000A4203FDA0E000B83000000009228003C68 +:1089A0008FBF00188FB100148FB000100008614213 +:1089B000AF82002C27BD002003E0000831820001B7 +:1089C0008C8A00088C8B00248CD000643C0E8000C4 +:1089D00035D10A00014B2823AF900024A380001C4E +:1089E000AF8500288E2400248F8600208F850024E8 +:1089F000240D00083C010800A42D3FC63C010800DE +:108A0000A4203FDA0E000B83000000009228003CF7 +:108A10008FBF00188FB100148FB0001000086142A2 +:108A2000AF82002C27BD002003E000083182000146 +:108A300090A200303051003F5224002834C50AC0B3 +:108A40008CB000241600002234CB09008CA600480C +:108A50003C0A7FFF3545FFFF00C510243C0E800017 +:108A6000AF82002035C509008F8800208CAD0060E2 +:108A7000010D602B15800002010020218CA40060F4 +:108A80000A000C22AF8400208D02006C0A000BFC4F +:108A90003C0680008C8200488F8600203C097FFFC6 +:108AA0003527FFFF004788243C0480082403000189 +:108AB000AF910028AC80006CA383001C0A000C302E +:108AC000AF8600248C9F00140A000C22AF9F002068 +:108AD0008D6200680A000C6C3C0E800034C4098072 +:108AE0008C8900708CA300140123382B10E0000443 +:108AF000000000008C8200700A000C6C3C0E8000AC +:108B00008CA200140A000C6C3C0E80008F8500249F +:108B100027BDFFE0AFBF0018AFB1001414A00008DC +:108B2000AFB000103C04800034870A0090E60030AB +:108B30002402000530C3003F106200B934840900EC +:108B40008F91002000A080213C048000348E0A0018 +:108B50008DCD00043C0608008CC63FB831A73FFF0E +:108B600000E6602B5580000100E03021938F001C4F +:108B700011E0007800D0282B349F098093F9007C05 +:108B800033380002130000792403003400C3102B93 +:108B9000144000D90000000000C3302300D0282B6F +:108BA0003C010800A4233FC414A0006E0200182159 +:108BB0003C0408008C843FB40064402B5500000145 +:108BC000006020213C05800034A90A00912A003C65 +:108BD0003C010800AC243FBC31430020146000037A +:108BE0000000482134AB0E008D6900188F88002CDE +:108BF0000128202B1080005F000000003C050800C9 +:108C00008CA53FBC00A96821010D602B1180005C80 +:108C100000B0702B0109382300E028213C01080036 +:108C2000AC273FBC12000003240AFFFC10B0008DEB +:108C30003224000300AA18243C010800A4203FDAD3 +:108C40003C010800AC233FBC006028218F84002435 +:108C5000120400063C0B80088D6C006C0200202181 +:108C6000AF91002025900001AD70006C8F8D002821 +:108C700000858823AF91002401A52023AF8400281C +:108C80001220000224070018240700103C18800856 +:108C90003706008090CF00683C010800A0273FD82D +:108CA0002407000131EE00FF11C70047000000005B +:108CB00014800018000028213C06800034D109806F +:108CC00034CD010091A600098E2C001824C40001A7 +:108CD000000C86023205007F308B007F1165007F1B +:108CE0002407FF803C19800837290080A124004C0C +:108CF0003C0808008D083FD4241800023C010800FD +:108D0000A0384019350F00083C010800AC2F3FD4B3 +:108D1000240500103C02800034440A009083003C8B +:108D2000307F002013E0000500A02021240A00016C +:108D30003C010800AC2A3FBC34A400018FBF0018DE +:108D40008FB100148FB000100080102103E00008E4 +:108D500027BD00203C010800A4203FC410A0FF94C0 +:108D6000020018210A000CC000C018210A000CB72C +:108D7000240300303C0508008CA53FBC00B0702BDC +:108D800011C0FFA8000000003C19080097393FC43B +:108D90000325C0210307782B11E000072CAA00044B +:108DA0003C0360008C625404305F003F17E0FFE337 +:108DB000240400422CAA00041140FF9A240400421B +:108DC0000A000D248FBF00181528FFB9000000000D +:108DD0008CCA00183C1F800024020002015F182585 +:108DE000ACC3001837F90A00A0C200689329003C00 +:108DF0002404000400A01021312800203C010800B8 +:108E0000A0244019110000022405001024020001D2 +:108E10003C010800AC223FB40A000D1A3C0280005D +:108E20008F8800288C8900600109282B14A000027B +:108E3000010088218C9100603C048000348B0E007E +:108E40008D640018240A000102202821022030210C +:108E5000A38A001C0E000B83022080210A000CA6AE +:108E6000AF82002C00045823122000073164000355 +:108E70003C0E800035C7098090ED007C31AC0004C9 +:108E800015800019248F00043C010800A4243FDA57 +:108E90003C1F080097FF3FDA03E5C82100D9C02B2B +:108EA0001300FF6B8F8400242CA6000514C0FFA3C1 +:108EB0002404004230A200031440000200A2182340 +:108EC00024A3FFFC3C010800AC233FBC3C0108008C +:108ED000A4203FDA0A000CE70060282100C77024B4 +:108EE0000A000D0D01C720263C010800A42F3FDA1F +:108EF0000A000D78000000003C010800AC203FBCD7 +:108F00000A000D23240400428F8300283C058000C2 +:108F100034AA0A00146000060000102191470030B6 +:108F20002406000530E400FF108600030000000066 +:108F300003E0000800000000914B0048316900FF89 +:108F4000000941C21500FFFA3C0680083C040800F5 +:108F500094843FC43C0308008C633FDC3C19080048 +:108F60008F393FBC3C0F080095EF3FDA0064C02109 +:108F70008CCD00040319702101CF602134AB0E00A9 +:108F8000018D282318A0001D00000000914F004C07 +:108F90008F8C0034956D001031EE00FF8D89000438 +:108FA00001AE30238D8A000030CEFFFF000E290075 +:108FB0000125C82100003821014720210325182B55 +:108FC0000083C021AD990004AD980000918F000A84 +:108FD00001CF6821A18D000A956500128F8A0034A7 +:108FE000A5450008954B003825690001A5490038C2 +:108FF0009148000D35070008A147000D03E0000867 +:109000000000000027BDFFD8AFB000189388001CF7 +:109010008FB000143C0A80003C197FFF8F8700242A +:109020003738FFFFAFBF0020AFB1001C355F0A002B +:109030000218182493EB003C00087FC03C02BFFFDD +:10904000006F60252CF000013449FFFF3C1F080031 +:109050008FFF3FDC8F9900303C18080097183FD2F3 +:1090600001897824001047803C07EFFF3C05F0FFA2 +:1090700001E818253C1180003169002034E2FFFF2F +:1090800034ADFFFF362E098027A50010240600020C +:1090900003F96023270B0002354A0E0000621824F2 +:1090A0000080802115200002000040218D48001C16 +:1090B000A7AB0012058000392407000030E800FF4C +:1090C00000083F00006758253C028008AFAB001441 +:1090D000344F008091EA00683C08080091083FD9AD +:1090E0003C09DFFF352CFFFF000AF82B3C0208008B +:1090F00094423FCCA3A80011016CC024001FCF40B4 +:10910000031918258FA70010AFA300143C0C08000A +:10911000918C3FDBA7A200168FAB001400ED482412 +:109120003C0F01003C0A0FFF012FC82531980003B6 +:10913000355FFFFF016D40243C027000033F38247F +:1091400000181E0000E2482501037825AFAF001487 +:10915000AFA9001091CC007C0E000092A3AC0015CA +:10916000362D0A0091A6003C30C400201080000675 +:10917000260200083C11080096313FC8262EFFFF4A +:109180003C010800A42E3FC88FBF00208FB1001CF7 +:109190008FB0001803E0000827BD00288F8B002C3B +:1091A000010B502B5540FFC5240700010A000E0497 +:1091B00030E800FF9383001C3C02800027BDFFD8ED +:1091C00034480A0000805021AFBF002034460AC056 +:1091D000010028211060000E3444098091070030FE +:1091E000240B00058F89002030EC003F118B000B11 +:1091F00000003821AFA900103C0B80088D69006C7D +:10920000AFAA00180E00015AAFA90014A380001CD9 +:109210008FBF002003E0000827BD00288D1F0048F5 +:109220003C1808008F183FBC8F9900283C027FFF34 +:109230008D0800443443FFFFAFA900103C0B8008A9 +:109240008D69006C03E370240319782101CF682332 +:1092500001A83821AFAA00180E00015AAFA90014C6 +:109260000A000E58A380001C3C05800034A60A00AA +:1092700090C7003C3C06080094C63FDA3C02080058 +:109280008C423FD430E30020000624001060001E12 +:10929000004438253C0880083505008090A300680C +:1092A00000004821240800010000282124040001B6 +:1092B0003C0680008CCD017805A0FFFE34CF014034 +:1092C000ADE800083C0208008C423FDCA5E5000444 +:1092D000A5E40006ADE2000C3C04080090843FD9F0 +:1092E0003C03800834790080A1E40012ADE700144B +:1092F000A5E900189338004C3C0E1000A1F8002D91 +:1093000003E00008ACCE017834A90E008D28001CC3 +:109310003C0C08008D8C3FBC952B0016952A001440 +:10932000018648213164FFFF0A000E803145FFFFAE +:109330003C04800034830A009065003C30A2002089 +:109340001040001934870E00000040210000382131 +:10935000000020213C0680008CC901780520FFFE1A +:1093600034CA014034CF010091EB0009AD48000838 +:109370003C0E08008DCE3FDC240DFF91240C0040F4 +:109380003C081000A5440004A5470006AD4E000CA3 +:10939000A14D0012AD4C0014A5400018A14B002DAA +:1093A00003E00008ACC801788CE8001894E60012CD +:1093B00094E4001030C7FFFF0A000EA93084FFFFBD +:1093C0003C04800034830A009065003C30A20020F9 +:1093D0001040002727BDFFF82409000100003821B4 +:1093E000240800013C0680008CCA01780540FFFE7D +:1093F0003C0280FF34C40100908D00093C0C080041 +:10940000918C4019A3AD00038FAB00003185007F24 +:109410003459FFFF01665025AFAA00009083000A6F +:10942000A3A0000200057E00A3A300018FB80000E6 +:1094300034CB0140240C30000319702401CF68257F +:10944000AD6D000C27BD0008AD6C0014A5600018C0 +:10945000AD690008A56700042409FF80A56800061F +:109460003C081000A169001203E00008ACC80178B4 +:1094700034870E008CE9001894E6001294E4001082 +:1094800030C8FFFF0A000ECD3087FFFF27BDFFE089 +:10949000AFB100143C118000AFB00010AFBF001896 +:1094A00036380A00970F0032363001000E000B7F6D +:1094B00031E43FFF8E0E0000240DFF803C042000AD +:1094C00001C25821016D6024000C4940316A007FBF +:1094D000012A4025010438253C048008AE270830C5 +:1094E0003486008090C500682403000230A200FF8B +:1094F000104300048F9F00208F990024AC9F0068C8 +:10950000AC9900648FBF00188FB100148FB00010A9 +:1095100003E0000827BD00203C0A0800254A3A80E5 +:109520003C09080025293B103C08080025082F1C91 +:109530003C07080024E73BDC3C06080024C639044D +:109540003C05080024A536583C0408002484325CFD +:109550003C030800246339B83C0208002442375415 +:109560003C010800AC2A3F983C010800AC293F941C +:109570003C010800AC283F903C010800AC273F9C10 +:109580003C010800AC263FAC3C010800AC253FA4E0 +:109590003C010800AC243FA03C010800AC233FB0D4 +:1095A0003C010800AC223FA803E0000800000000D6 +:1095B00080000940800009008008010080080080C8 +:1095C00080080000800E00008008008080080000F5 +:1095D00080000A8080000A00800009808000090065 +:00000001FF --- linux-3.5.0.orig/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex +++ linux-3.5.0/firmware/bnx2/bnx2-mips-06-6.2.3.fw.ihex @@ -0,0 +1,5804 @@ +:10000000080001180800000000004A68000000C84D +:1000100000000000000000000000000008004A6826 +:100020000000001400004B30080000A00800000091 +:100030000000569400004B44080058200000008443 +:100040000000A1D808005694000001580000A25CEE +:100050000800321008000000000072F00000A3B495 +:10006000000000000000000000000000080072F026 +:1000700000000024000116A40800049008000400F9 +:10008000000017D4000116C80000000000000000A6 +:100090000000000000000000000000000000000060 +:1000A000080000A80800000000003BFC00012E9C96 +:1000B0000000000000000000000000000000000040 +:1000C00000000000000000000A00004600000000E0 +:1000D000000000000000000D636F6D362E322E33DD +:1000E0000000000006020302000000000000000300 +:1000F000000000C800000032000000030000000003 +:1001000000000000000000000000000000000000EF +:1001100000000010000001360000EA600000000549 +:1001200000000000000000000000000000000008C7 +:1001300000000000000000000000000000000000BF +:1001400000000000000000000000000000000000AF +:10015000000000000000000000000000000000009F +:10016000000000020000000000000000000000008D +:10017000000000000000000000000000000000007F +:10018000000000000000000000000010000000005F +:10019000000000000000000000000000000000005F +:1001A000000000000000000000000000000000004F +:1001B000000000000000000000000000000000003F +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000000000001F +:1001E0000000000010000003000000000000000DEF +:1001F0000000000D3C02080024424AA03C03080015 +:1002000024634B9CAC4000000043202B1480FFFD76 +:10021000244200043C1D080037BD7FFC03A0F021F0 +:100220003C100800261001183C1C0800279C4AA01E +:100230000E000168000000000000000D27470100CB +:1002400090E3000B2402001A94E5000814620028D1 +:10025000000020218CE200003C0308008C63004475 +:1002600094E60014000211C20002104030A4000203 +:10027000005A10212463000130A50004A446008028 +:100280003C010800AC23004410A000190004202BFE +:100290008F4202B804410008240400013C02080017 +:1002A0008C420060244200013C010800AC22006046 +:1002B00003E00008008010218CE2002094E3001687 +:1002C00000002021AF4202808CE20004A743028498 +:1002D000AF4202883C021000AF4202B83C02080064 +:1002E0008C42005C244200013C010800AC22005C0E +:1002F00003E00008008010212747010090E3000B75 +:100300002402000394E50008146200280000202164 +:100310008CE200003C0308008C63004494E6001467 +:10032000000211C20002104030A40002005A102145 +:100330002463000130A50004A44600803C010800AD +:10034000AC23004410A000190004202B8F4202B8F7 +:1003500004410008240400013C0208008C420060B3 +:10036000244200013C010800AC22006003E00008C8 +:10037000008010218CE2002094E300160000202170 +:10038000AF4202808CE20004A7430284AF4202889D +:100390003C021000AF4202B83C0208008C42005CF4 +:1003A000244200013C010800AC22005C03E000088C +:1003B000008010218F4301002402010050620003DD +:1003C000000311C20000000D000311C20002104022 +:1003D000005A1021A440008003E000080000102112 +:1003E0009362000003E00008AF80000003E0000813 +:1003F0000000102103E00008000010212402010089 +:1004000014820008000000003C0208008C4200FC3E +:10041000244200013C010800AC2200FC0A0000DD7F +:1004200030A200203C0208008C42008424420001DB +:100430003C010800AC22008430A2002010400008DB +:1004400030A300103C0208008C4201082442000145 +:100450003C010800AC22010803E000080000000095 +:1004600010600008000000003C0208008C420104FB +:10047000244200013C010800AC22010403E0000812 +:10048000000000003C0208008C42010024420001F0 +:100490003C010800AC22010003E00008000000005D +:1004A00027BDFFE8AFBF0010274401009483000878 +:1004B000306200041040001B306600028F4202B818 +:1004C00004410008240500013C0208008C42006041 +:1004D000244200013C010800AC2200600A0001290E +:1004E0008FBF00108C82002094830016000028210A +:1004F000AF4202808C820004A7430284AF4202888C +:100500003C021000AF4202B83C0208008C42005C82 +:10051000244200013C010800AC22005C0A000129D1 +:100520008FBF001010C00006006028218F4401001A +:100530000E0000CD000000000A0001282405000183 +:100540008F8200088F4301045043000700002821D8 +:100550008F4401000E0000CD000000008F42010416 +:10056000AF820008000028218FBF001000A01021DA +:1005700003E0000827BD001827BDFFE8AFBF001447 +:10058000AFB00010974201083043700024022000F1 +:100590001062000B286220011440002F000010217F +:1005A00024024000106200250000000024026000C8 +:1005B00010620026000010210A0001658FBF0014A0 +:1005C00027500100920200091040001A2403000184 +:1005D0003C0208008C420020104000160000182148 +:1005E0000E00049300000000960300083C0608007B +:1005F00094C64B5E8E0400188F8200209605000C76 +:1006000000031C0000661825AC440000AC45000443 +:1006100024040001AC400008AC40000CAC400010C9 +:10062000AC400014AC4000180E0004B8AC43001CF1 +:10063000000018210A000164006010210E0003254B +:10064000000000000A000164000010210E000EE905 +:1006500000000000000010218FBF00148FB00010B8 +:1006600003E0000827BD001827BDFFE0AFB2001867 +:100670003C036010AFBF001CAFB10014AFB000105E +:100680008C6450002402FF7F3C1A800000822024EA +:100690003484380C24020037AC6450003C1208004B +:1006A00026524AD8AF42000824020C80AF420024F0 +:1006B0003C1B80083C06080024C60324024010218D +:1006C0002404001D2484FFFFAC4600000481FFFDCC +:1006D000244200043C020800244204B03C0108000B +:1006E000AC224AE03C020800244202303C010800EF +:1006F000AC224AE43C020800244201743C03080096 +:100700002463032C3C040800248403D83C0508001F +:1007100024A538F03C010800AC224B403C02080004 +:10072000244202EC3C010800AC264B243C010800AA +:10073000AC254B343C010800AC234B3C3C01080089 +:10074000AC244B443C010800AC224B483C0108005F +:10075000AC234ADC3C010800AC204AE83C0108001C +:10076000AC204AEC3C010800AC204AF03C010800F7 +:10077000AC204AF43C010800AC204AF83C010800D7 +:10078000AC204AFC3C010800AC204B003C010800B6 +:10079000AC244B043C010800AC204B083C01080091 +:1007A000AC204B0C3C010800AC204B103C01080075 +:1007B000AC204B143C010800AC204B183C01080055 +:1007C000AC264B1C3C010800AC264B203C01080029 +:1007D000AC254B303C010800AC234B380E000623FF +:1007E000000000003C028000344200708C42000097 +:1007F000AF8200143C0308008C6300208F82000449 +:10080000104300043C0280000E00045BAF83000430 +:100810003C028000344600703C0308008C6300A05A +:100820003C0208008C4200A4104300048F84001492 +:100830003C010800AC2300A4A743009E8CCA000022 +:100840003C0308008C6300BC3C0208008C4200B8EA +:100850000144202300641821000040210064202B63 +:1008600000481021004410213C010800AC2300BCCA +:100870003C010800AC2200B88F5100003222000772 +:100880001040FFDCAF8A00148CC600003C05080055 +:100890008CA500BC3C0408008C8400B800CA30233E +:1008A00000A628210000102100A6302B0082202164 +:1008B00000862021322700013C010800AC2500BC45 +:1008C0003C010800AC2400B810E0001F32220002F6 +:1008D0008F420100AF4200208F420104AF4200A8C6 +:1008E0009342010B0E0000C6305000FF2E02001E86 +:1008F00054400004001010800E0000C90A000213CA +:1009000000000000005210218C4200000040F80955 +:1009100000000000104000053C0240008F4301042D +:100920003C026020AC4300143C024000AF4201385E +:100930003C0208008C420034244200013C010800C3 +:10094000AC220034322200021040000E3222000499 +:100950008F4201400E0000C6AF4200200E000295FB +:10096000000000003C024000AF4201783C02080059 +:100970008C420038244200013C010800AC220038BF +:10098000322200041040FF983C0280008F42018018 +:100990000E0000C6AF4200208F43018024020F00EA +:1009A00014620005000000008F420188A742009CED +:1009B0000A0002483C0240009362000024030050F9 +:1009C000304200FF144300083C0240000E00027B4E +:1009D00000000000544000043C0240000E000D7571 +:1009E000000000003C024000AF4201B83C02080099 +:1009F0008C42003C244200013C010800AC22003C37 +:100A00000A0001C83C0280003C0290003442000110 +:100A100000822025AF4400208F4200200440FFFECA +:100A20000000000003E00008000000003C0280001D +:100A3000344200010082202503E00008AF4400207A +:100A400027BDFFE0AFB10014AFB0001000808821D7 +:100A5000AFBF00180E00025030B000FF9362007D5F +:100A60000220202102028025A370007D8F70007477 +:100A70003C0280000E000259020280241600000988 +:100A80008FBF00188F4201F80440FFFE24020002CD +:100A9000AF5101C0A34201C43C021000AF4201F8B3 +:100AA0008FBF00188FB100148FB0001003E0000852 +:100AB00027BD002027BDFFE8AFBF0010974201848B +:100AC0008F440188304202001040000500002821B8 +:100AD0000E000FAA000000000A00028D240500018C +:100AE0003C02FF0004800005008218243C02040040 +:100AF000506200019362003E240500018FBF001088 +:100B000000A0102103E0000827BD0018A360002208 +:100B10008F4401400A00025E2405000127BDFFE862 +:100B2000AFBF0014AFB0001093620000304400FF6C +:100B300038830020388200300003182B0002102B6D +:100B40000062182410600003240200501482008008 +:100B50008FBF001493620005304200011040007CFA +:100B60008FBF0014934201482443FFFF2C6200050D +:100B7000104000788FB00010000310803C03080084 +:100B800024634A68004310218C42000000400008A2 +:100B9000000000000E0002508F4401408F70000CD6 +:100BA0008F4201441602000224020001AF62000CD1 +:100BB0000E0002598F4401408F420144145000043A +:100BC0008FBF00148FB000100A000F2027BD00183F +:100BD0008F62000C0A0003040000000097620010FE +:100BE0008F4301443042FFFF1462001A00000000EE +:100BF00024020001A76200108F4202380443001053 +:100C00008F4201403C02003F3446F0003C0560004A +:100C10003C04FFC08CA22BBC0044182400461024C6 +:100C20000002130200031D82106200390000000060 +:100C30008F4202380440FFF7000000008F4201405D +:100C4000AF4202003C021000AF4202380A00032209 +:100C50008FBF0014976200100A0003040000000018 +:100C60000E0002508F440140976200128F430144EE +:100C70003050FFFF1603000224020001A762001299 +:100C80000E0002598F4401408F42014416020004B5 +:100C90008FBF00148FB000100A00029127BD00180A +:100CA000976200120A00030400000000976200141B +:100CB0008F4301443042FFFF14620006240200010A +:100CC0008FBF00148FB00010A76200140A00124AF0 +:100CD00027BD0018976200141440001D8FBF001438 +:100CE0000A00031C00000000976200168F430144B5 +:100CF0003042FFFF1462000B240200018FBF00147A +:100D00008FB00010A76200160A000B1227BD001852 +:100D10009742007824420004A76200100A000322D0 +:100D20008FBF001497620016240300013042FFFFBA +:100D3000144300078FBF00143C0208008C4200706F +:100D4000244200013C010800AC2200708FBF001457 +:100D50008FB0001003E0000827BD001827BDFFE892 +:100D6000AFBF0014AFB000108F50010093620000BD +:100D700093430109304400FF2402001F106200A5C4 +:100D80002862002010400018240200382862000A5F +:100D90001040000C2402000B286200081040002CB8 +:100DA00000000000046000E52862000214400028F2 +:100DB00024020006106200268FBF00140A00041FE0 +:100DC0008FB000101062005E2862000B144000DC3F +:100DD0008FBF00142402000E106200738FB0001049 +:100DE0000A00041F00000000106200C028620039E1 +:100DF0001040000A2402008024020036106200CA5B +:100E000028620037104000B424020035106200C18F +:100E10008FBF00140A00041F8FB000101062002B57 +:100E20002862008110400006240200C82402003914 +:100E3000106200B48FBF00140A00041F8FB00010AE +:100E4000106200998FBF00140A00041F8FB00010B9 +:100E50003C0208008C420020104000B98FBF0014F3 +:100E60000E000493000000008F4201008F830020D9 +:100E70009745010C97460108AC6200008F420104BF +:100E80003C04080094844B5E00052C00AC62000416 +:100E90008F4201180006340000C43025AC620008FF +:100EA0008F42011C24040001AC62000C9342010A31 +:100EB00000A22825AC650010AC600014AC600018DE +:100EC000AC66001C0A0003F58FBF00143C0208004A +:100ED0008C4200201040009A8FBF00140E00049333 +:100EE00000000000974401083C03080094634B5E37 +:100EF0009745010C000422029746010E8F820020C4 +:100F0000000426000083202500052C003C030080FF +:100F100000A6282500832025AC400000AC4000043A +:100F2000AC400008AC40000CAC450010AC400014D4 +:100F3000AC400018AC44001C0A0003F42404000177 +:100F40009742010C14400015000000009362000558 +:100F50003042001014400011000000000E0002504A +:100F6000020020219362000502002021344200107B +:100F70000E000259A36200059362000024030020C2 +:100F8000304200FF1043006D020020218FBF00148B +:100F90008FB000100A000FC027BD00180000000D20 +:100FA0000A00041E8FBF00143C0208008C4200207F +:100FB000104000638FBF00140E0004930000000077 +:100FC0008F4201048F8300209744010C3C050800E8 +:100FD00094A54B5EAC6200009762002C00042400D4 +:100FE0003042FFFF008220253C02400E00A228254F +:100FF000AC640004AC600008AC60000CAC60001095 +:10100000AC600014AC600018AC65001C0A0003F46E +:10101000240400010E00025002002021A7600008F5 +:101020000E00025902002021020020210E00025E63 +:10103000240500013C0208008C42002010400040C2 +:101040008FBF00140E000493000000009742010CB3 +:101050008F8300203C05080094A54B5E000214001D +:10106000AC700000AC620004AC6000088F64004CFF +:101070003C02401F00A22825AC64000C8F62005087 +:1010800024040001AC6200108F620054AC620014B2 +:10109000AC600018AC65001C8FBF00148FB000104E +:1010A0000A0004B827BD0018240200205082002541 +:1010B0008FB000100E000F0A020020211040002007 +:1010C0008FBF0014020020218FB0001000002821E3 +:1010D0000A00025E27BD0018020020218FBF001405 +:1010E0008FB000100A00058027BD00189745010C3D +:1010F000020020218FBF00148FB000100A0005A04D +:1011000027BD0018020020218FB000100A0005C57D +:1011100027BD00189345010D020020218FB000105B +:101120000A00060F27BD0018020020218FBF0014FF +:101130008FB000100A0005EB27BD00188FBF001408 +:101140008FB0001003E0000827BD00188F4202781E +:101150000440FFFE2402000234840080AF440240B9 +:10116000A34202443C02100003E00008AF420278B0 +:101170003C04080094844B6A3C0208008C424B7487 +:101180003083FFFF000318C000431021AF42003C32 +:101190003C0208008C424B70AF4200383C020050C9 +:1011A00034420008AF4200300000000000000000A0 +:1011B000000000008F420000304200201040FFFD80 +:1011C000000000008F4204003C010800AC224B608C +:1011D0008F4204043C010800AC224B643C02002016 +:1011E000AF420030000000003C02080094424B680F +:1011F0003C03080094634B6C3C05080094A54B6EBF +:1012000024840001004310213083FFFF3C010800CB +:10121000A4224B683C010800A4244B6A1465000317 +:10122000000000003C010800A4204B6A03E0000815 +:10123000000000003C05000A27BDFFE80345282107 +:101240003C04080024844B50AFBF00100E00051D65 +:101250002406000A3C02080094424B523C0308005A +:1012600094634B6E3042000F244200030043180485 +:1012700024027FFF0043102B10400002AF83001CAC +:101280000000000D0E00042A000000003C020800CF +:1012900094424B5A8FBF001027BD001803E000088E +:1012A000A74200A23C02000A034210219443000618 +:1012B0003C02080094424B5A3C010800A4234B56C0 +:1012C000004310238F83001C00021400000214034B +:1012D0000043102B03E000083842000127BDFFE85F +:1012E000AFBF00103C02000A0342102194420006E6 +:1012F0003C010800A4224B560E00047700000000B9 +:101300005440FFF93C02000A8FBF001003E00008C0 +:1013100027BD001827BDFFE8AFBF00100E000477FF +:101320000000000010400003000000000E000485D3 +:10133000000000003C0208008C424B608FBF001090 +:1013400027430400AF4200383C0208008C424B6443 +:1013500027BD0018AF830020AF42003C3C020005CF +:10136000AF42003003E00008AF8000188F82001801 +:101370003C0300060002114000431025AF4200303C +:101380000000000000000000000000008F4200008C +:10139000304200101040FFFD27420400AF820020C1 +:1013A00003E00008AF8000183C0608008CC64B64C0 +:1013B0008F8500188F8300203C02080094424B5A0E +:1013C00027BDFFE024A50001246300202442000182 +:1013D00024C70020AFB10014AFB00010AFBF001899 +:1013E000AF850018AF8300203C010800A4224B5AAF +:1013F000309000FF3C010800AC274B6404C100089A +:101400000000882104E00006000000003C02080003 +:101410008C424B60244200013C010800AC224B602E +:101420003C02080094424B5A3C03080094634B680A +:101430000010202B004310262C42000100441025F0 +:10144000144000048F830018240200101462000F5F +:10145000000000000E0004A9241100013C03080054 +:1014600094634B5A3C02080094424B681462000398 +:10147000000000000E00042A000000001600000317 +:10148000000000000E000493000000003C03080070 +:1014900094634B5E3C02080094424B5C2463000161 +:1014A0003064FFFF3C010800A4234B5E148200035C +:1014B000000000003C010800A4204B5E1200000662 +:1014C000000000003C02080094424B5AA74200A2D0 +:1014D0000A00050B022010210E0004770000000016 +:1014E00010400004022010210E00048500000000BE +:1014F000022010218FBF00188FB100148FB0001090 +:1015000003E0000827BD00203084FFFF30A5FFFF67 +:101510000000182110800007000000003082000148 +:101520001040000200042042006518210A00051343 +:101530000005284003E000080060102110C00006EC +:1015400024C6FFFF8CA2000024A50004AC8200008A +:101550000A00051D2484000403E0000800000000C8 +:1015600010A0000824A3FFFFAC86000000000000CC +:10157000000000002402FFFF2463FFFF1462FFFA53 +:101580002484000403E0000800000000240200019D +:10159000AF62000CA7620010A7620012A7620014DD +:1015A00003E00008A76200163082007F034210218A +:1015B0003C08000E004818213C0208008C42002024 +:1015C00027BDFFD82407FF80AFB3001CAFB20018BF +:1015D000AFB10014AFB00010AFBF00200080802179 +:1015E00030B100FF0087202430D200FF1040002FD0 +:1015F00000009821AF44002C9062000024030050AA +:10160000304200FF1443000E000000003C020800BE +:101610008C4200E00202102100471024AF42002C4F +:101620003C0208008C4200E0020210213042007FA0 +:101630000342102100481021944200D43053FFFF90 +:101640000E000493000000003C02080094424B5E30 +:101650008F8300200011340000C2302500122C00BE +:101660003C02400000C2302534A50001AC700000EF +:101670008FBF0020AC6000048FB20018AC7300086C +:101680008FB10014AC60000C8FB3001CAC6500106F +:101690008FB00010AC60001424040001AC6000188E +:1016A00027BD00280A0004B8AC66001C8FBF0020CC +:1016B0008FB3001C8FB200188FB100148FB00010D0 +:1016C00003E0000827BD00289343010F2402001007 +:1016D0001062000E2865001110A0000724020012FD +:1016E000240200082405003A1062000600003021A0 +:1016F00003E0000800000000240500351462FFFC30 +:10170000000030210A000538000000008F420074FC +:1017100024420FA003E00008AF62000C27BDFFE8E1 +:10172000AFBF00100E00025E240500018FBF001045 +:1017300024020001A762001227BD00182402000144 +:1017400003E00008A360002227BDFFE0AFB1001452 +:10175000AFB00010AFBF001830B1FFFF0E00025055 +:10176000008080219362003F24030004304200FF88 +:101770001443000C02002021122000082402000A59 +:101780000E00053100000000936200052403FFFEF7 +:1017900000431024A362000524020012A362003F4C +:1017A000020020210E000259A360008116200003D0 +:1017B000020020210E0005950000000002002021FB +:1017C000322600FF8FBF00188FB100148FB00010B9 +:1017D000240500380A00053827BD002027BDFFE09A +:1017E000AFBF001CAFB20018AFB10014AFB0001013 +:1017F0000E000250008080210E0005310000000024 +:101800009362003F24120018305100FF123200038F +:101810000200202124020012A362003F936200050F +:101820002403FFFE004310240E000259A3620005AA +:10183000020020212405002016320007000030217C +:101840008FBF001C8FB200188FB100148FB0001032 +:101850000A00025E27BD00208FBF001C8FB2001857 +:101860008FB100148FB00010240500390A0005382C +:1018700027BD002027BDFFE8AFB00010AFBF0014A8 +:101880009742010C2405003600808021144000108E +:10189000304600FF0E00025000000000240200123B +:1018A000A362003F93620005344200100E00053130 +:1018B000A36200050E00025902002021020020212F +:1018C0000E00025E240500200A000604000000004D +:1018D0000E000538000000000E000250020020211A +:1018E000936200232403FF9F020020210043102461 +:1018F0008FBF00148FB00010A36200230A000259AA +:1019000027BD001827BDFFE0AFBF0018AFB100141E +:10191000AFB0001030B100FF0E00025000808021F7 +:10192000240200120E000531A362003F0E0002598E +:101930000200202102002021022030218FBF001848 +:101940008FB100148FB00010240500350A0005384F +:1019500027BD0020A380002C03E00008A380002DF9 +:101960008F4202780440FFFE8F820034AF42024073 +:1019700024020002A34202443C02100003E00008DB +:10198000AF4202783C0360008C6254003042000891 +:101990001440FFFD000000008C625408AF82000C70 +:1019A00024020052AC605408AC645430AC6254342D +:1019B0002402000803E00008AC6254003C0260000E +:1019C0008C42540030420008104000053C03600087 +:1019D0008C625400304200081440FFFD00000000FB +:1019E0008F83000C3C02600003E00008AC43540805 +:1019F00090A3000024020005008040213063003FD6 +:101A000000004821146200050000502190A2001C33 +:101A100094A3001E304900FF306AFFFFAD00000CA8 +:101A2000AD000010AD000024950200148D05001CCF +:101A30008D0400183042FFFF0049102300021100FE +:101A4000000237C3004038210086202300A2102B5B +:101A50000082202300A72823AD05001CAD04001838 +:101A6000A5090014A5090020A50A001603E0000836 +:101A7000A50A00228F4201F80440FFFE2402000262 +:101A8000AF4401C0A34201C43C02100003E00008BF +:101A9000AF4201F83C0208008C4200B427BDFFE8C9 +:101AA000AFBF001424420001AFB000103C01080099 +:101AB000AC2200B48F4300243C02001F30AA00FF78 +:101AC0003442FF8030D800FF006280240080F8217B +:101AD00030EF00FF1158003B01405821240CFF80DB +:101AE0003C19000A3163007F000310C00003194055 +:101AF000006218213C0208008C4200DC25680001CD +:101B0000310D007F03E21021004310213043007F9C +:101B100003431821004C102400794821AF420024CF +:101B20008D220024016C1824006C7026AD22000C5C +:101B30008D220024310800FFAD22001095220014F0 +:101B4000952300208D27001C3042FFFF3063FFFFEC +:101B50008D2600180043102300021100000227C345 +:101B60000040282100C4302300E2102B00C23023A3 +:101B700000E53823AD27001CAD2600189522002073 +:101B8000A522001495220022154B000AA52200165A +:101B90008D2300248D220008254600013145008058 +:101BA0001462000430C4007F108F000238AA008045 +:101BB00000C0502151AF000131C800FF1518FFC906 +:101BC000010058218F8400343082007F03421821A5 +:101BD0003C02000A006218212402FF8000822024B7 +:101BE000AF440024A06A0079A06A00838C62005090 +:101BF0008F840034AC6200708C6500743C027FFFFF +:101C00003442FFFF00A228240E00066BAC6500746E +:101C1000AF5000248FBF00148FB0001003E0000805 +:101C200027BD001827BDFFC0AFBE0038AFB70034D6 +:101C3000AFB5002CAFB20020AFB1001CAFB00018A0 +:101C4000AFBF003CAFB60030AFB40028AFB3002444 +:101C50008F4500248F4600288F43002C3C02001F34 +:101C60003442FF800062182400C230240080A82182 +:101C7000AFA3001400A2F0240E00062FAFA60010A0 +:101C80003C0208008C4200E02410FF8003608821A1 +:101C900002A2102100501024AF4200243C02080090 +:101CA0008C4200E002A210213042007F0342182142 +:101CB0003C02000A00629021924200D293630084A9 +:101CC000305700FF306300FF24020001106200342F +:101CD000036020212402000214620036000000008C +:101CE0000E001216024028219223008392220083C4 +:101CF0003063007F3042007F000210C000031940B3 +:101D0000006218213C0208008C4200DC02A2102173 +:101D10000043382100F01024AF42002892250078BB +:101D20009224008330E2007F034218213C02000C21 +:101D300014850007006280212402FFFFA24200F107 +:101D40002402FFFFA64200F20A0007272402FFFF39 +:101D500096020020A24200F196020022A64200F262 +:101D60008E020024AE4200F492220083A24200F0D0 +:101D70008E4200C8AE4200FC8E4200C4AE4200F863 +:101D80008E220050AE4201008E4200CCAE420104D1 +:101D9000922200853042003F0A0007823442004010 +:101DA0000E00123902402821922200850A00078283 +:101DB0003042003F936200852403FFDF3042003F42 +:101DC000A36200859362008500431024A36200850E +:101DD0009363008393620078307400FF304200FF09 +:101DE00010540036240AFF803C0C000C3283007F24 +:101DF000000310C000031940006218213C020800D3 +:101E00008C4200DC268800013109007F02A21021EB +:101E10000043382130E2007F0342182100EA1024F9 +:101E2000AF420028006C80218E020024028A182410 +:101E3000006A5826AE02000C8E020024310800FF12 +:101E4000AE02001096020014960300208E07001CBC +:101E50003042FFFF3063FFFF8E060018004310235F +:101E600000021100000227C30040282100C43023D3 +:101E700000E2102B00C2302300E53823AE07001C1F +:101E8000AE06001896020020A60200149602002258 +:101E9000A602001692220079304200FF105400077B +:101EA0000000000051370001316800FF92220078E5 +:101EB000304200FF1448FFCD0100A0219222008390 +:101EC000A22200798E2200500A0007E2AE220070A2 +:101ED000A22200858E22004C2405FF80AE42010C18 +:101EE0009222008534420020A2220085924200D135 +:101EF0003C0308008C6300DC305400FF3C02080007 +:101F00008C4200E400143140001420C002A31821C8 +:101F100000C4202102A210210064382100461021B3 +:101F20000045182400E52824AF450028AF43002CC5 +:101F30003042007F924400D030E3007F03422821EA +:101F4000034318213C02000C006280213C02000E79 +:101F5000309600FF00A298211296002A000000008F +:101F60008E02000C02002021026028211040002572 +:101F7000261000280E00064A000000009262000DA4 +:101F800026830001307400FF3042007FA262000D02 +:101F90002404FF801697FFF0267300203C020800FF +:101FA0008C4200DC0000A02102A210210044102479 +:101FB000AF4200283C0208008C4200E43C030800C9 +:101FC0008C6300DC02A2102100441024AF42002CDC +:101FD0003C0208008C4200E402A318213063007F19 +:101FE00002A210213042007F034220210343182126 +:101FF0003C02000C006280213C02000E0A0007A493 +:10200000008298218E4200D8AE2200508E4200D825 +:10201000AE22007092250083924600D19223008365 +:10202000924400D12402FF8000A228243063007F64 +:10203000308400FF00A628250064182A10600002E2 +:1020400030A500FF38A50080A2250083A2250079D5 +:102050000E00063D000000009222007E02A020211A +:10206000A222007A8E2300743C027FFF3442FFFFDD +:10207000006218240E00066BAE2300748FA20010BD +:10208000AF5E00248FBF003CAF4200288FBE0038F7 +:102090008FA200148FB700348FB600308FB5002C9C +:1020A0008FB400288FB300248FB200208FB1001CA2 +:1020B0008FB0001827BD004003E00008AF42002C9D +:1020C00090A2000024420001A0A200003C030800EE +:1020D0008C6300F4304200FF1443000F0080302175 +:1020E000A0A000003C0208008C4200E48F84003471 +:1020F000008220213082007F034218213C02000C24 +:10210000006218212402FF8000822024ACC300005A +:1021100003E00008AF4400288C8200002442002025 +:1021200003E00008AC82000094C200003C080800F4 +:10213000950800CA30E7FFFF008048210102102106 +:10214000A4C2000094C200003042FFFF00E2102B46 +:1021500054400001A4C7000094A200003C03080002 +:102160008C6300CC24420001A4A2000094A20000D1 +:102170003042FFFF544300078F8600280107102BD1 +:10218000A4A000005440000101003821A4C70000B1 +:102190008F8600288CC4001CAF44003C94A2000031 +:1021A0008F43003C3042FFFF000210C00062182144 +:1021B000AF43003C8F42003C008220231880000483 +:1021C000000000008CC200180A00084324420001ED +:1021D0008CC20018AF4200383C020050344200105C +:1021E000AF420030000000000000000000000000CE +:1021F0008F420000304200201040FFFD0000000030 +:102200008F420404AD2200048F420400AD2200007E +:102210003C020020AF42003003E000080000000054 +:1022200027BDFFE0AFB20018AFB10014AFB000108F +:10223000AFBF001C94C2000000C080213C12080007 +:10224000965200C624420001A60200009603000038 +:1022500094E2000000E03021144300058FB100300B +:102260000E000818024038210A000875000000001E +:102270008C8300048C820004244200400461000727 +:10228000AC8200048C8200040440000400000000C2 +:102290008C82000024420001AC8200009602000003 +:1022A0003042FFFF50520001A600000096220000BD +:1022B00024420001A62200008F82002896230000FD +:1022C00094420016144300048FBF001C2402000136 +:1022D000A62200008FBF001C8FB200188FB100141F +:1022E0008FB0001003E0000827BD00208F89002870 +:1022F00027BDFFE0AFBF00188D220028274804004B +:1023000030E700FFAF4200388D22002CAF8800304C +:10231000AF42003C3C020005AF420030000000002C +:1023200000000000000000000000000000000000AD +:10233000000000008C82000C8C82000CAD020000BA +:102340008C820010AD0200048C820018AD020008DF +:102350008C82001CAD02000C8CA20014AD02001097 +:102360008C820020AD02001490820005304200FFF4 +:1023700000021200AD0200188CA20018AD02001C71 +:102380008CA2000CAD0200208CA20010AD02002433 +:102390008CA2001CAD0200288CA20020AD02002CF3 +:1023A000AD060030AD000034978300263402FFFFF5 +:1023B00014620002006020213404FFFF10E00011CD +:1023C000AD04003895230036952400362402000120 +:1023D0003063FFFF000318C20069182190650040B8 +:1023E000308400070082100400451025A0620040E0 +:1023F0008F820028944200563042FFFF0A0008DC1A +:10240000AD02003C952300369524003624020001DD +:102410003063FFFF000318C2006918219065004077 +:1024200030840007008210040002102700451024A9 +:10243000A0620040AD00003C000000000000000071 +:10244000000000003C02000634420040AF42003071 +:102450000000000000000000000000008F420000AB +:10246000304200101040FFFD8F860028AF880030FA +:1024700024C2005624C7003C24C4002824C50032CE +:1024800024C600360E000856AFA200108FBF0018F9 +:1024900003E0000827BD00208F8300243C060800CD +:1024A0008CC600E88F82003430633FFF0003198040 +:1024B00000461021004310212403FF803046007F96 +:1024C00000431024AF420028034618213C02000CB0 +:1024D0000062302190C2000D30A500FF00003821BD +:1024E00034420010A0C2000D8F8900288F8A00247A +:1024F00095230036000A13823048000324020001AD +:10250000A4C3000E1102000B2902000210400005B6 +:10251000240200021100000C240300010A0009201B +:102520000000182111020006000000000A00092026 +:10253000000018218CC2002C0A000920244300014D +:102540008CC20014244300018CC200180043102BDD +:1025500050400009240700012402002714A20003B0 +:10256000000000000A00092C240700019522003E0B +:1025700024420001A522003E000A138230430003DA +:102580002C62000210400009008028211460000421 +:102590000000000094C200360A00093C3046FFFFEC +:1025A0008CC600380A00093C008028210000302138 +:1025B0003C04080024844B780A00088900000000CD +:1025C000274901008D22000C9523000601202021BF +:1025D000000216023046003F3063FFFF240200274E +:1025E00000C0282128C7002810C2000EAF83002495 +:1025F00010E00008240200312402002110C200096A +:102600002402002510C200079382002D0A00095BF6 +:102610000000000010C200059382002D0A00095B33 +:10262000000000000A0008F4000000000A0006266E +:102630000000000095230006912400058D25000C64 +:102640008D2600108D2700188D28001C8D29002054 +:10265000244200013C010800A4234B7E3C010800F9 +:10266000A0244B7D3C010800AC254B843C010800B4 +:10267000AC264B883C010800AC274B903C0108007D +:10268000AC284B943C010800AC294B9803E00008AF +:10269000A382002D8F87002827BDFFC0AFB3003471 +:1026A000AFB20030AFB1002CAFB00028AFBF0038E0 +:1026B0003C0208008C4200D094E3003030B0FFFFB1 +:1026C000005010073045FFFF3063FFFF00C0982126 +:1026D000A7A200103C110800963100C614A3000602 +:1026E0003092FFFF8CE2002424420030AF42003CD5 +:1026F0000A0009948CE2002094E200323042FFFF8D +:1027000054A2000827A400188CE2002C24420030B8 +:10271000AF42003C8CE20028AF4200380A0009A218 +:102720008F84002827A5001027A60020022038212A +:102730000E000818A7A000208FA200182442003025 +:10274000AF4200388FA2001CAF42003C8F840028AB +:102750003C020005AF42003094820034274304005D +:102760003042FFFF0202102B14400007AF830030FD +:1027700094820054948300340202102100431023F9 +:102780000A0009B63043FFFF94830054948200345A +:102790000223182100501023006218233063FFFF2A +:1027A000948200163042FFFF144300030000000033 +:1027B0000A0009C424030001948200163042FFFF7E +:1027C0000043102B104000058F82003094820016C9 +:1027D000006210233043FFFF8F820030AC530000B3 +:1027E000AC400004AC520008AC43000C3C020006B4 +:1027F00034420010AF420030000000000000000032 +:10280000000000008F420000304200101040FFFD29 +:10281000001018C2006418219065004032040007BF +:10282000240200018FBF00388FB300348FB2003014 +:102830008FB1002C8FB000280082100400451025B5 +:1028400027BD004003E00008A062004027BDFFA8AC +:10285000AFB60050AFB5004CAFB40048AFB30044C2 +:10286000AFB1003CAFBF0054AFB20040AFB00038D2 +:102870008C9000003C0208008C4200E88F860034F7 +:10288000960300022413FF8000C2302130633FFF13 +:102890000003198000C3382100F3102490B2000017 +:1028A000AF42002C9203000230E2007F034230214D +:1028B0003C02000E00C28821306300C024020040A8 +:1028C0000080A82100A0B021146200260000A021F1 +:1028D0008E3400388E2200181440000224020001B9 +:1028E000AE2200189202000D304200201440001564 +:1028F0008F8200343C0308008C6300DC001238C077 +:10290000001231400043102100C730210046382119 +:1029100030E300073C02008030E6007800C230253A +:102920000343182100F31024AF4208002463090078 +:10293000AF4608108E2200188C6300080043102157 +:10294000AE2200188E22002C8E2300182442000193 +:102950000062182B1060003D000000000A000A7899 +:1029600000000000920300022402FFC00043102474 +:10297000304200FF1440000524020001AE2200187E +:10298000962200360A000A613054FFFF8E2200149E +:1029900024420001AE22001892020000000216003C +:1029A0000002160304410029000000009602000204 +:1029B00027A4001000802821A7A20016960200027A +:1029C00024070001000030213042FFFFAF820024C5 +:1029D0000E000889AFA0001C960300023C0408000A +:1029E0008C8400E88F82003430633FFF000319803D +:1029F00000441021004310213043007F3C05000CAF +:102A00000053102403431821AF4200280065182109 +:102A10009062000D001221403042007FA062000D44 +:102A20003C0308008C6300E48F82003400431021D3 +:102A30000044382130E2007F03421021004510217C +:102A400000F31824AF430028AEA200009222000D2C +:102A5000304200101040001302A020218F83002874 +:102A60008EA40000028030219462003E2442FFFFC9 +:102A7000A462003E948400029625000E3084FFFF7D +:102A80000E00097330A5FFFF8F82002894430034A5 +:102A90009622000E1443000302A02021240200010C +:102AA000A382002C02C028210E0007FE00000000B7 +:102AB0008FBF00548FB600508FB5004C8FB40048C4 +:102AC0008FB300448FB200408FB1003C8FB000380C +:102AD00003E0000827BD00588F82002827BDFFD0E3 +:102AE000AFB40028AFB20020AFBF002CAFB30024BA +:102AF000AFB1001CAFB00018904400D0904300D19B +:102B00000000A021309200FFA3A30010306300FF5B +:102B10008C5100D88C5300DC1072002B2402000171 +:102B20003C0308008C6300E493A400108F820034FF +:102B30002406FF800004214000431021004410219E +:102B40003043007F00461024AF4200280343182181 +:102B50003C02000C006218218C62000427A40014BF +:102B600027A50010022280210270102304400015C6 +:102B7000AFA300149062000D00C21024304200FF89 +:102B800014400007020088219062000D344200408A +:102B90000E0007FEA062000D0A000ABD93A20010FD +:102BA0000E0009E1241400018F830028AC7000D8C6 +:102BB00093A20010A06200D193A200101452FFD87B +:102BC0000000000024020001168200048FBF002CC8 +:102BD0000E000626000000008FBF002C8FB40028D6 +:102BE0008FB300248FB200208FB1001C8FB000186B +:102BF00003E0000827BD003027BDFFD8AFB3001C9D +:102C0000AFB20018AFB10014AFB00010AFBF0020DA +:102C10000080982100E0802130B1FFFF0E00049376 +:102C200030D200FF000000000000000000000000A3 +:102C30008F820020AC510000AC520004AC5300085D +:102C4000AC40000CAC400010AC400014AC4000188C +:102C50003C03080094634B5E02038025AC50001CCB +:102C6000000000000000000000000000240400013B +:102C70008FBF00208FB3001C8FB200188FB10014DB +:102C80008FB000100A0004B827BD002827BDFFE858 +:102C9000AFB00010AFBF001430A5FFFF30C600FF7B +:102CA0000080802124020C80AF420024000000003C +:102CB0000000000000000000000000000000000014 +:102CC0000E000ACC000000003C040800248400E050 +:102CD0008C8200002403FF808FBF001402021021A9 +:102CE00000431024AF4200248C8200003C03000A01 +:102CF000020280213210007F035010218FB000109B +:102D00000043102127BD001803E00008AF8200280F +:102D100027BDFFE8AFBF00108F4401403C0308000F +:102D20008C6300E02402FF80AF840034008318210C +:102D300000621024AF4200243C02000803424021FC +:102D4000950500023063007F3C02000A034318210E +:102D50000062182130A5FFFF3402FFFF0000302180 +:102D60003C07602010A20006AF8300282402FFFF6A +:102D7000A5020002946500D40E000AF130A5FFFF01 +:102D80008FBF001024020C8027BD001803E000084C +:102D9000AF4200243C020008034240219502000299 +:102DA0003C0A0800954A00C63046FFFF14C00007E1 +:102DB0003402FFFF8F8200288F8400343C0760209C +:102DC000944500D40A000B5A30A5FFFF10C200241E +:102DD0008F87002894E2005494E400163045FFFFEA +:102DE00000A6102300A6182B3089FFFF10600004F6 +:102DF0003044FFFF00C51023012210233044FFFFA1 +:102E0000008A102B1040000C012A1023240200011C +:102E1000A50200162402FFFFA502000294E500D4DB +:102E20008F8400340000302130A5FFFF3C07602074 +:102E30000A000AF1000000000044102A10400008B7 +:102E4000000000009502001630420001104000040E +:102E5000000000009742007E24420014A5020016E4 +:102E600003E00008000000008F84002827BDFFE079 +:102E7000AFBF0018948200349483003E1060001AA3 +:102E80003048FFFF9383002C2402000114620027C6 +:102E90008FBF00188F820028000818C23108000771 +:102EA000006218212447003A244900542444002099 +:102EB000244500302446003490620040304200FF38 +:102EC0000102100730420001104000168FBF0018A9 +:102ED0000E000856AFA900108F82002894420034DB +:102EE0000A000B733048FFFF94830036948200344D +:102EF0001043000E8FBF001894820036A482003465 +:102F000094820056A48200548C82002CAC8200244F +:102F100094820032A48200309482003CA482003A61 +:102F20008FBF00180A000B3327BD002003E0000804 +:102F300027BD002027BDFFE8AFBF00108F4A01006A +:102F40003C0508008CA500E03C02080090424B8440 +:102F50003C0C0800958C4B7E01452821304B003FEE +:102F600030A2007F03424021396900323C02000A4E +:102F70003963003F2C630001010240212D2900012B +:102F80002402FF8000A2282401234825AF8A0034B0 +:102F900000801821AF450024000030210080282146 +:102FA00024070001AF8800283C04080024844B78E3 +:102FB000AF8C002415200007A380002D24020020E0 +:102FC0005562000F006020213402FFFF5582000C83 +:102FD000006020212402002015620005000000008E +:102FE0008C6300142402FFFF106200070000000041 +:102FF0000E000889000000000A000BD0000000004D +:103000000E0008F4016028210E000B68000000008B +:103010008FBF001024020C8027BD001803E00008B9 +:10302000AF4200243C0208008C4200E027BDFFA014 +:10303000AFB1003C008210212411FF80AFBE0058C8 +:10304000AFB70054AFB20040AFB00038AFBF005CC4 +:10305000AFB60050AFB5004CAFB40048AFB30044BA +:10306000005110248F4800248F4900288F470028E2 +:10307000AF4200243C0208008C4200E00080902116 +:1030800024060006008210213042007F03421821EE +:103090003C02000A006280213C02001F3442FF8093 +:1030A00000E2382427A40010260500F00122F024B5 +:1030B0000102B8240E00051DAFA700308FA2001832 +:1030C000AE0200C48FA2001CAE0200C88FA2002472 +:1030D000AE0200CC93A40010920300D12402FF8022 +:1030E0000082102400431025304900FF3083007F08 +:1030F0003122007F0062102A10400004000310C03B +:1031000001311026304900FF000310C000031940B0 +:10311000006218213C0208008C4200DC920400D2BC +:10312000024210210043102100511024AF42002818 +:1031300093A300103063007F000310C00003194008 +:10314000006218213C0208008C4200DC024210217F +:10315000004310213042007F034218213C02000C42 +:10316000006240218FA300142402FFFF1062003090 +:10317000309500FF93A2001195030014304400FF26 +:103180003063FFFF0064182B1060000D000000008A +:10319000950400148D07001C8D0600183084FFFF75 +:1031A00000442023000421000000102100E4382105 +:1031B00000E4202B00C230210A000C4A00C4302158 +:1031C000950400148D07001C8D0600183084FFFF45 +:1031D000008220230004210000001021008018211B +:1031E00000C2302300E4202B00C4302300E3382346 +:1031F000AD07001CAD06001893A20011A502001433 +:1032000097A20012A50200168FA20014AD020010B2 +:103210008FA20014AD02000C93A20011A5020020A1 +:1032200097A20012A50200228FA20014AD02002472 +:103230002406FF80024610243256007FAF4200244D +:10324000035618213C02000A006280218E02004CC5 +:103250008FA200203124007F000428C0AE0200505D +:103260008FA200200004214000852821AE020070BA +:1032700093A2001001208821A202008393A20010D3 +:10328000A2020079920200853042003FA20200852E +:103290003C0208008C4200DC024210210045102153 +:1032A00000461024AF42002C3C0208008C4200E48F +:1032B0003C0308008C6300DC024210210044102112 +:1032C00000461024AF4200283C0208008C4200E473 +:1032D00002431821006518210242102100441021E8 +:1032E0003042007F3063007F93A50010034220210D +:1032F000034318213C02000E006240213C02000CF6 +:1033000010B1008C008248213233007F1660001912 +:103310002404FF803C0208008C4200DC02421021A1 +:1033200000441024AF42002C3C0208008C4200E410 +:103330003C0308008C6300DC02421021004410248E +:10334000AF4200283C0208008C4200E402431821EE +:103350003063007F024210213042007F034220216F +:10336000034318213C02000E006240213C02000C85 +:10337000008248219124000D2414FF8000001021B8 +:1033800000942025A124000D950400029505001449 +:103390008D07001C3084FFFF30A5FFFF8D0600184D +:1033A000008520230004210000E4382100C23021E0 +:1033B00000E4202B00C43021AD07001CAD0600182E +:1033C00095020002A5020014A50000168D02000857 +:1033D000AD0200108D020008AD02000C9502000243 +:1033E000A5020020A50000228D020008AD020024E5 +:1033F0009122000D30420040104000422622000180 +:103400003C0208008C4200E0A3B300283C10000AF4 +:103410000242102100541024AF4200243C02080054 +:103420008C4200E0A380002C27A4002C0242102133 +:103430003042007F03421821007018218C6200D8AE +:103440008D26000427A50028AFA9002C00461021D6 +:10345000AC6200D80E0009E1AF83002893A30028D6 +:103460008F8200280E000626A04300D10E000B68B4 +:103470000000000002541024AF4200243C02080067 +:103480008C4200DC00132940001320C000A420213E +:10349000024210210044102100541024AF42002C9D +:1034A0003C0208008C4200E43C0308008C6300DC12 +:1034B00003563021024210210045102100541024EF +:1034C000AF4200283C0208008C4200E4024318216D +:1034D0000064182102421021004510213042007F73 +:1034E0003063007F03422021034318213C02000E79 +:1034F000006240213C02000C00D080210082482163 +:10350000262200013043007F14750005304400FF7F +:103510002403FF800223102400431026304400FFC0 +:1035200093A2001000808821250800281444FF760B +:103530002529002093A400108FA300142402FFFF6C +:103540001062000A308900FF2482000124830001F8 +:103550003042007F14550005306900FF2403FF80CE +:103560000083102400431026304900FF92020078A7 +:10357000305300FF11330032012088213C02080043 +:103580008C4200DC3225007F000520C00005294068 +:1035900000A42021024210212406FF8000441021B3 +:1035A00000461024AF42002C3C0308008C6300DC72 +:1035B0003C0208008C4200E4024318210242102120 +:1035C0000045102100641821004610243063007F5C +:1035D000AF420028034318213C02000E0062402144 +:1035E0003C0208008C4200E48D06000C0100202102 +:1035F00002421021004510213042007F0342182171 +:103600003C02000C0062482110C0000D012028215E +:103610000E00064A000000002402FF800222182447 +:1036200026240001006228263082007F1455000203 +:10363000308300FF30A300FF1473FFD000608821A7 +:103640008E0300743C027FFF3442FFFF00621824A7 +:10365000AE0300740E00066B02402021AF57002419 +:103660008FA20030AF5E00288FBF005C8FBE005875 +:103670008FB700548FB600508FB5004C8FB4004800 +:103680008FB300448FB200408FB1003C8FB0003840 +:1036900027BD006003E00008AF42002C27BDFFD823 +:1036A000AFB1001CAFBF0020AFB000182751018898 +:1036B000922200032408FF803C03000A3047007F69 +:1036C000A3A700108F4601803C0208008C4200E056 +:1036D000AF86003400C2282100A81024AF42002485 +:1036E0009224000030A2007F0342102100431021E9 +:1036F000AF8200283084007F24020002148200255B +:10370000000719403C0208008C4200E400C210216E +:103710000043282130A2007F0342182100A8102472 +:10372000AF4200283C02000C006218219062000D9C +:10373000AFA3001400481025A062000D8FA3001451 +:103740009062000D304200405040006A8FBF002060 +:103750008F860028A380002C27A400148CC200D8D8 +:103760008C63000427A50010004310210E0009E11E +:10377000ACC200D893A300108F8200280E0006264A +:10378000A04300D10E000B68000000000A000E0BE1 +:103790008FBF00200E00062F00C020210E00063D26 +:1037A000000000003C020008034280219223000137 +:1037B0009202007B1443004F8FBF00209222000032 +:1037C0003044007F24020004108200172882000584 +:1037D00010400006240200052402000310820007A6 +:1037E0008FB1001C0A000E0C0000000010820012B5 +:1037F0008FBF00200A000E0C8FB1001C92050083C1 +:10380000920600788E0700748F84003430A500FF84 +:1038100000073E0230C600FF0E00067330E7007F4F +:103820000A000E0B8FBF00200E000BD78F840034D0 +:103830000A000E0B8FBF002024020C80AF42002430 +:103840009202003E30420040104000200000000084 +:103850009202003E00021600000216030441000618 +:10386000000000008F8400340E0005A024050093A2 +:103870000A000E0B8FBF00209202003F24030018A5 +:10388000304200FF1443000C8F84003424050039BB +:103890000E000538000030210E0002508F840034E5 +:1038A00024020012A202003F0E0002598F8400344D +:1038B0000A000E0B8FBF0020240500360E000538CD +:1038C000000030210A000E0B8FBF00200E000250B6 +:1038D0008F8400349202000534420020A2020005C9 +:1038E0000E0002598F8400340E000FC08F84003404 +:1038F0008FBF00208FB1001C8FB0001824020C80F5 +:1039000027BD002803E00008AF42002427BDFFE8E0 +:10391000AFB00010AFBF001427430100946200084D +:103920000002140000021403044100020000802180 +:103930002410000194620008304200801040001AF8 +:10394000020010219462000830422000104000164E +:10395000020010218C6300183C021C2D344219ED2A +:10396000240600061062000F3C0760213C0208009C +:103970008C4200D4104000078F8200288F830028DB +:10398000906200623042000F34420040A062006248 +:103990008F8200288F840034944500D40E000AF1F1 +:1039A00030A5FFFF020010218FBF00148FB0001060 +:1039B00003E0000827BD001827BDFFE0AFB10014E9 +:1039C000AFB00010A380002CAFBF00188F450100DE +:1039D0003C0308008C6300E02402FF80AF850034C4 +:1039E00000A318213064007F0344202100621824C2 +:1039F0003C02000A00822021AF430024275001002E +:103A00008E0200148C8300DCAF8400280043102356 +:103A100018400004000088218E0200140E000A8461 +:103A2000AC8200DC9202000B24030002304200FF53 +:103A30001443002F0000000096020008304300FFEE +:103A40002402008214620005240200840E00093E54 +:103A5000000000000A000E97000000001462000938 +:103A6000240200818F8200288F8400343C0760216B +:103A7000944500D49206000530A5FFFF0A000E868B +:103A800030C600FF14620027000000009202000A06 +:103A9000304300FF306200201040000430620040DC +:103AA0008F8400340A000E82240600401040000477 +:103AB000000316008F8400340A000E8224060041A1 +:103AC00000021603044100178F84003424060042CC +:103AD0008F8200283C076019944500D430A5FFFF71 +:103AE0000E000AF1000000000A000E97000000001E +:103AF0009202000B24030016304200FF1043000620 +:103B0000000000009202000B24030017304200FF67 +:103B100014430004000000000E000E11000000001D +:103B2000004088210E000B68000000009202000A8D +:103B3000304200081040000624020C808F850028C7 +:103B40003C0400080E0011EE0344202124020C80E6 +:103B5000AF4200248FBF0018022010218FB0001048 +:103B60008FB1001403E0000827BD002027BDFFE847 +:103B7000AFBF0014AFB000108F5000243C0308000A +:103B80008C6300E08F4501002402FF8000A3182110 +:103B90003064007F03442021006218243C02000AA4 +:103BA00000822021AF850034AF4300249082006260 +:103BB000AF8400283042000F34420050A0820062DF +:103BC0003C02001F3442FF800E00062602028024C1 +:103BD000AF5000248FBF00148FB0001003E0000826 +:103BE00027BD00183C0208008C4200201040001D38 +:103BF0002745010090A300093C0200080342202150 +:103C000024020018546200033C0200080A000ED887 +:103C10002402000803422021240200161462000539 +:103C20002402001724020012A082003F0A000EE2C4 +:103C300094A700085462000694A700089362000548 +:103C40002403FFFE00431024A362000594A700088C +:103C500090A6001B8CA4000094A500060A000ACCC4 +:103C600000073C0003E000080000000027440100BA +:103C700094820008304500FF38A3008238A20084F7 +:103C80002C6300012C420001006218251060000620 +:103C9000240200839382002D1040000D00000000DC +:103CA0000A000B9B0000000014A2000524A2FF8064 +:103CB0008F4301043C02602003E00008AC43001481 +:103CC000304200FF2C420002104000032402002278 +:103CD0000A000E3C0000000014A2000300000000D7 +:103CE0000A000EA9000000000A000EC70000000034 +:103CF0009363007E9362007A144300090000202140 +:103D00009362000024030050304200FF144300047B +:103D1000240400019362007E24420001A362007E1D +:103D200003E00008008010218F4201F80440FFFEEC +:103D300024020002AF4401C0A34201C43C021000AF +:103D400003E00008AF4201F827BDFFE8AFBF001055 +:103D50009362003F2403000A304200FF14430046F0 +:103D6000000000008F6300548F62004C1062007DE1 +:103D7000036030219362000024030050304200FFB2 +:103D80001443002F000000008F4401403C02080053 +:103D90008C4200E02403FF800082102100431024A5 +:103DA000AF4200243C0208008C4200E08F650054C2 +:103DB0003C03000A008220213084007F034410214C +:103DC00000431021AC4501089762003C8F63004C12 +:103DD0003042FFFF0002104000621821AF63005C18 +:103DE0008F6300548F64004C9762003C006418237A +:103DF0003042FFFF00031843000210400043102A26 +:103E000010400006000000008F6200548F63004CD9 +:103E1000004310230A000F58000210439762003C31 +:103E20003042FFFF00021040ACC2006424020001D7 +:103E3000A0C0007CA0C2008424020C80AF420024F9 +:103E40000E000F0A8F440140104000478FBF001042 +:103E50008F4301408F4201F80440FFFE240200021C +:103E6000AF4301C0A34201C43C021000AF4201F8BD +:103E70000A000FA88FBF00109362003F24030010B8 +:103E8000304200FF14430004000000008F44014052 +:103E90000A000F94000028219362003F24030016BB +:103EA000304200FF1443000424020014A362003FC8 +:103EB0000A000FA2000000008F62004C8F630050C8 +:103EC00000431023044100288FBF0010936200813B +:103ED00024420001A3620081936200812C4200040D +:103EE00014400010000000009362003F240300040F +:103EF000304200FF14430006000000008F440140E0 +:103F00008FBF0010240500930A0005A027BD0018EC +:103F10008F440140240500938FBF00100A00060F54 +:103F200027BD00188F4401400E0002500000000021 +:103F30008F6200542442FFFFAF6200548F62005032 +:103F40002442FFFFAF6200500E0002598F4401402F +:103F50008F4401408FBF0010240500040A00025E58 +:103F600027BD00188FBF001003E0000827BD001810 +:103F70008F4201889363007E00021402304400FFE8 +:103F8000306300FF1464000D0000000093620080A5 +:103F9000304200FF1044000900000000A3640080CC +:103FA0009362000024030050304200FF14430004D9 +:103FB000000000000A0006D78F440180A36400803F +:103FC00003E000080000000027BDFFE8AFB00010CC +:103FD000AFBF00149362000524030030304200306C +:103FE00014430089008080213C0208008C4200209C +:103FF00010400080020020210E0004930000000009 +:104000008F850020ACB000009362003E9363003FB8 +:10401000304200FF00021200306300FF0043102511 +:10402000ACA2000493620082000216000002160394 +:1040300004410005000000003C0308008C630048B8 +:104040000A000FE6000000009362003E304200408C +:10405000144000030000182193620081304300FFE8 +:104060009362008200031E00304200FF0002140031 +:1040700000621825ACA300088F620040ACA2000CBF +:104080008F620048ACA200108F62004CACA20014FA +:104090008F6200508F63004C0043102304410003E3 +:1040A000000000000A000FFA8F62004C8F6200507F +:1040B000ACA200183C02080094424B5E3C03C00BCB +:1040C00000002021004310250E0004B8ACA2001C03 +:1040D0008F6200548F840020AC8200008F620058F1 +:1040E000AC8200048F62005CAC8200088F620060CA +:1040F0008F43007400431021AC82000C8F62006477 +:10410000AC820010976300689762006A00031C008D +:104110003042FFFF00621825AC83001493620082D6 +:1041200024030080304200FF14430003000000001D +:104130000A00102EAC8000188F63000C24020001CE +:104140001062000E2402FFFF9362003E30420040E6 +:104150001440000A2402FFFF8F63000C8F4200749A +:10416000006218233C020800006210241440000280 +:10417000000028210060282100051043AC820018AF +:104180003C02080094424B5E3C03C00C000020211E +:10419000004310258F8300200E0004B8AC62001C81 +:1041A0008F6200188F8300203C05080094A54B5EA9 +:1041B00024040001AC620000AC6000048F66006C57 +:1041C0003C02400D00A22825AC6600088F6200DC8E +:1041D000AC62000CAC600010936200050002160097 +:1041E000AC620014AC6000180E0004B8AC65001C92 +:1041F000020020218FBF00148FB00010A3600005C3 +:104200000A00042127BD00188FBF00148FB00010D2 +:1042100003E0000827BD00189742007C30C600FF6D +:10422000A08600843047FFFF2402000514C2000B63 +:1042300024E3465090A201122C42000710400007D0 +:1042400024E30A0090A30112240200140062100467 +:1042500000E210210A0010663047FFFF3067FFFFC1 +:1042600003E00008A4870014AC87004C8CA201086E +:104270000080402100A0482100E2102330C600FF4A +:104280001840000393AA001324E2FFFCACA201082B +:1042900030C2000110400008000000008D020050F4 +:1042A00000E2102304410013240600058D0200548F +:1042B00010E20010000000008D02005414E2001A09 +:1042C000000000003C0208008C4200D83042002070 +:1042D0001040000A2402000191030078910200833B +:1042E000144300062402000101002021012028219E +:1042F000240600040A00105400000000A1000084FD +:1043000011400009A50200148F4301008F4201F8FB +:104310000440FFFE24020002AF4301C0A34201C4D7 +:104320003C021000AF4201F803E00008000000006A +:1043300027BDFFE88FA90028AFBF001000804021F3 +:1043400000E918231860007330C600FFA080007CCD +:10435000A08000818CA2010800E210230440004DDF +:10436000000000008C8200509483003C8C84006428 +:10437000004748233063FFFF012318210083202BCF +:1043800010800004000000008D0200640A0010B7D5 +:1043900000E210219502003C3042FFFF0122102173 +:1043A00000E21021AD02005C9502003C8D03005C30 +:1043B0003042FFFF0002104000E210210043102BAA +:1043C00010400003000000000A0010C68D02005CCF +:1043D0009502003C3042FFFF0002104000E2102135 +:1043E000AD02005CA1000084AD07004C8CA2010866 +:1043F00000E210231840000224E2FFFCACA20108F6 +:1044000030C200011040000A000000008D02005080 +:1044100000E2102304410004010020218D02005419 +:1044200014E20003000000000A0010E82406000562 +:104430008D02005414E200478FBF00103C020800B8 +:104440008C4200D8304200201040000A24020001B3 +:1044500091030078910200831443000624020001B6 +:1044600001002021240600048FBF00100A00105410 +:1044700027BD0018A1000084A50200148F4301008D +:104480008F4201F80440FFFE240200020A00110DD1 +:10449000000000008C82005C004910230043102BB8 +:1044A00054400001AC87005C9502003C3042FFFFA5 +:1044B0000062102B14400007240200029502003C09 +:1044C0008D03005C3042FFFF00621821AD03005CE9 +:1044D00024020002AD07004CA10200840E000F0A66 +:1044E0008F4401001040001B8FBF00108F4301005C +:1044F0008F4201F80440FFFE24020002AF4301C0D6 +:10450000A34201C43C021000AF4201F80A0011238B +:104510008FBF001030C200101040000E8FBF00107F +:104520008C83005C9482003C006918233042FFFFBA +:10453000006218213C023FFF3444FFFF0083102B30 +:10454000544000010080182101231021AD02005CBD +:104550008FBF001003E0000827BD001827BDFFE84B +:104560008FAA0028AFBF00100080402100EA482336 +:104570001920002130C600FF8C83005C8C8200640F +:10458000006A18230043102B5040001000691821C6 +:1045900094A2011001221021A4A2011094A20110E2 +:1045A0003042FFFF0043102B1440000A3C023FFF43 +:1045B00094A2011000431023A4A201109482003C95 +:1045C0003042FFFF0A00114200621821A4A001102E +:1045D0003C023FFF3444FFFF0083102B5440000196 +:1045E0000080182100671021AD02005CA100007C52 +:1045F0000A00118AA100008130C200101040003C66 +:10460000000000008C820050004A1023184000383F +:10461000000000009082007C24420001A082007C07 +:104620009082007C3C0308008C630024304200FF31 +:104630000043102B1440005C8FBF00108CA20108B7 +:1046400000E2102318400058000000008C83005442 +:104650009482003C006A18233042FFFF0003184395 +:10466000000210400043102A104000050000000026 +:104670008C820054004A10230A001171000210437A +:104680009482003C3042FFFF00021040AD02006403 +:104690009502003C8D0400649503003C3042FFFF0E +:1046A00000021040008220213063FFFF00831821A8 +:1046B00001431021AD02005C8D020054ACA2010840 +:1046C00024020002A10200840E000F0A8F440100A0 +:1046D000104000358FBF00108F4301008F4201F85A +:1046E0000440FFFE240200020A0011B30000000093 +:1046F000AD07004C8CA2010800E210231840000214 +:1047000024E2FFFCACA2010830C200011040000A04 +:10471000000000008D02005000E21023044100045C +:10472000010020218D02005414E20003000000006B +:104730000A0011AA240600058D02005414E2001A92 +:104740008FBF00103C0208008C4200D8304200208D +:104750001040000A240200019103007891020083B6 +:104760001443000624020001010020212406000455 +:104770008FBF00100A00105427BD0018A10000844C +:10478000A50200148F4301008F4201F80440FFFE90 +:1047900024020002AF4301C0A34201C43C02100046 +:1047A000AF4201F88FBF001003E0000827BD0018DA +:1047B0008FAA00108C8200500080402130C600FF7C +:1047C000004A102300A048211840000700E01821EB +:1047D00024020001A0800084A0A00112A482001481 +:1047E0000A001125AFAA0010A0800081AD07004C7F +:1047F0008CA2010800E210231840000224E2FFFC12 +:10480000ACA2010830C20001104000080000000006 +:104810008D0200500062102304410013240600059D +:104820008D02005410620010000000008D02005440 +:1048300014620011000000003C0208008C4200D805 +:10484000304200201040000A240200019103007849 +:10485000910200831443000624020001010020217C +:1048600001202821240600040A0010540000000042 +:10487000A1000084A502001403E00008000000006D +:1048800027BDFFE0AFBF0018274201009046000A95 +:104890008C4800148C8B004C9082008430C900FF3F +:1048A00001681823304A00FF1C60001A2D460006DC +:1048B000240200010142100410C00016304300031E +:1048C000012030210100382114600007304C000C19 +:1048D00015800009304200301440000B8FBF0018D3 +:1048E0000A001214000000000E001125AFAB0010EA +:1048F0000A0012148FBF00180E00109AAFAB001000 +:104900000A0012148FBF0018AFAB00100E0011BACE +:10491000AFAA00148FBF001803E0000827BD0020D5 +:1049200024020003A08200848C82005403E000086B +:10493000ACA201083C0200080342182190620081E9 +:10494000240600433C07601924420001A062008154 +:10495000906300813C0208008C4200C0306300FF7D +:10496000146200102403FF803C0208008C4200E027 +:104970000082102100431024AF4200243C020800B2 +:104980008C4200E03C03000A008210213042007F8C +:104990000342102100431021944500D40A000AF17B +:1049A00030A5FFFF03E000080000000027BDFFE086 +:1049B000AFBF0018AFB10014AFB000108F4201803C +:1049C0000080802100A088210E00121B00402021C1 +:1049D000A20000848E0200548FBF00188FB0001018 +:1049E000AE2201088FB1001403E0000827BD0020AB +:1049F00027BDFFE03C020008AFB00010AFBF0018B9 +:104A0000AFB10014034280218F5101409203008412 +:104A10008E0400508E02004C14820040306600FF6D +:104A20003C0208008C4200E02403FF800222102197 +:104A300000431024AF4200243C0208008C4200E0F6 +:104A40009744007C92050081022210213042007FB1 +:104A5000034218213C02000A0062182114A0000B36 +:104A60003084FFFF2402000554C20014248205DCB8 +:104A70009062011224420001A062011224020C8003 +:104A8000AF4200240A00127324020005A060011244 +:104A90002402000514C20009248205DC9202008170 +:104AA0002C4200075040000524820A009203008136 +:104AB0002402001400621004008210213044FFFF21 +:104AC000A60400140E00121B022020219602003CB6 +:104AD0008E03004C022020213042FFFF00021040D4 +:104AE000006218210E000250AE03005C9202007DAD +:104AF00002202021344200400E000259A202007D13 +:104B00008F4201F80440FFFE24020002AF5101C0B1 +:104B1000A34201C43C021000AF4201F88FBF00184D +:104B20008FB100148FB0001003E0000827BD0020F3 +:104B300008000ACC08000B1408000B9808000BE4CE +:104B400008000C200A0000280000000000000000FF +:104B50000000000D6370362E322E3300000000007E +:104B60000602030400000000000000000000000036 +:104B70000000000000000000000000000000000035 +:104B80000000000000000000000000000000002005 +:104B90000000000000000000000000000000000015 +:104BA0000000000000000000000000000000000005 +:104BB00000000000000000000000000000000001F4 +:104BC0000000002B000000000000000400030D4066 +:104BD00000000000000000000000000000000000D5 +:104BE00000000000000000001000000300000000B2 +:104BF0000000000D0000000D3C020800244258A4F3 +:104C00003C03080024635F70AC4000000043202B8D +:104C10001480FFFD244200043C1D080037BD7FFCCA +:104C200003A0F0213C100800261000A03C1C080046 +:104C3000279C58A40E0001AC000000000000000DED +:104C400027BDFFE83C096018AFBF00108D2C500055 +:104C5000240DFF7F24080031018D5824356A380C5B +:104C600024070C003C1A8000AD2A50003C04800A46 +:104C7000AF4800083C1B8008AF4700240E00091510 +:104C8000AF8400100E0008D8000000000E000825B8 +:104C9000000000000E001252000000003C046016EC +:104CA0008C8500003C06FFFF3C02535300A61824ED +:104CB0001062004734867C0094C201F2A780002C69 +:104CC00010400003A78000CC38581E1EA798002C67 +:104CD00094C201F810400004978300CC38591E1E7E +:104CE000A79900CC978300CC2C7F006753E000018C +:104CF000240300669784002C2C82040114400002D7 +:104D000000602821240404003C0760008CE904387A +:104D10002403103C3128FFFF1103001F30B9FFFFAF +:104D200057200010A38000CE24020050A38200CEA2 +:104D3000939F00CE53E0000FA78500CCA78000CC46 +:104D4000978500CC8FBF0010A780002CA78000346F +:104D5000A78000E63C010800AC25008003E00008C5 +:104D600027BD0018939F00CE57E0FFF5A78000CC29 +:104D7000A78500CC978500CC8FBF0010A784002C9E +:104D8000A7800034A78000E63C010800AC25008025 +:104D900003E0000827BD0018A38000CE8CCB003CA8 +:104DA000316A00011140000E0000000030A7FFFF33 +:104DB00010E0FFDE240200508CCC00C831860001D8 +:104DC00014C0FFDC939F00CE0A00007A2402005139 +:104DD0008C8F00043C0E60000A00005D01EE302163 +:104DE0008CEF0808240D5708000F740211CD000441 +:104DF00030B8FFFF240500660A00007B240404008D +:104E00001700FFCC939F00CE0A00007A24020050C6 +:104E10008F8600103089FFFF000939408CC30010D5 +:104E20003C08005000E82025AF4300388CC5001432 +:104E300027420400AF82001CAF45003CAF44003065 +:104E40000000000000000000000000000000000062 +:104E50000000000000000000000000000000000052 +:104E60008F4B0000316A00201140FFFD0000000060 +:104E700003E00008000000008F840010948A001AEC +:104E80008C8700243149FFFF000940C000E8302131 +:104E9000AF46003C8C8500248F43003C00A31023C8 +:104EA00018400029000000008C8B002025620001C2 +:104EB0003C0D005035AC0008AF420038AF4C00301C +:104EC00000000000000000000000000000000000E2 +:104ED00000000000000000000000000000000000D2 +:104EE0008F4F000031EE002011C0FFFD00000000D8 +:104EF0008F4A04003C080020AC8A00108F4904044B +:104F0000AC890014AF4800300000000094860018FF +:104F10009487001C00C71821A48300189485001AE8 +:104F200024A20001A482001A9498001A9499001EE9 +:104F3000133800030000000003E000080000000038 +:104F400003E00008A480001A8C8200200A0000DC24 +:104F50003C0D00500A0000CD000000003C0308009A +:104F60008C6300208F82001827BDFFE810620008C4 +:104F7000AFBF00100E000104AF8300183C0308000F +:104F80008C63002024040001106400048F89001049 +:104F90008FBF001003E0000827BD00188FBF00106E +:104FA0003C076012A520000A9528000A34E500108D +:104FB00027BD00183106FFFF03E00008ACA60090F3 +:104FC0003C0208008C42002027BDFFC8AFBF003460 +:104FD000AFBE0030AFB7002CAFB60028AFB500248D +:104FE000AFB40020AFB3001CAFB20018AFB10014D3 +:104FF00010400050AFB000108F840010948600065F +:105000009483000A00C3282330B6FFFF12C0004A71 +:105010008FBF003494890018948A000A012A402323 +:105020003102FFFF02C2382B14E0000202C020212F +:10503000004020212C8C0005158000020080A0215A +:10504000241400040E0000B3028020218F8700107A +:1050500002809821AF80001494ED000A028088211C +:105060001280004E31B2FFFF3C1770003C1540002B +:105070003C1E60008F8F001C8DEE000001D71824AD +:10508000507500500220202102A3802B160000350D +:105090003C182000507800470220202124100001F5 +:1050A0008F83001414600039029158230230F823D2 +:1050B0000250C82133F1FFFF1620FFEE3332FFFF0D +:1050C0008F8700103C110020AF510030000000001D +:1050D00094E6000A3C1E601237D5001002662821B3 +:1050E000A4E5000A94E2000A94F2000A94F400187D +:1050F0003057FFFF1292003BAEB700908CED0014CA +:105100008CE400100013714001AE4021000E5FC31B +:10511000010E502B008B4821012A1821ACE8001405 +:10512000ACE3001002D3382330F6FFFF16C0FFB9FE +:105130008F8400108FBF00348FBE00308FB7002CDB +:105140008FB600288FB500248FB400208FB3001CC9 +:105150008FB200188FB100148FB0001003E0000868 +:1051600027BD0038107E001B000000001477FFCC24 +:10517000241000010E00159B000000008F83001416 +:105180001060FFCB0230F823029158238F87001064 +:10519000017020210A0001973093FFFF8F830014D4 +:1051A0001460FFCB3C110020AF5100300A000163B6 +:1051B000000000000E00077D024028210A00015770 +:1051C000004080210E00033A024028210A000157C6 +:1051D000004080210E001463022020210A000157A4 +:1051E000004080210E0000CD000000000A0001797F +:1051F00002D3382327BDFFE8AFB00010AFBF0014C3 +:105200000E00003F000000003C028000345000709F +:105210000A0001BA8E0600008F4F000039EE00012F +:1052200031C20001104000248F8600A88E070000C4 +:105230003C0C08008D8C003C3C0908008D2900388E +:1052400000E66823018D28210000502100AD302B9D +:10525000012A4021010620213C010800AC25003C28 +:10526000AF8700A83C010800AC2400380E000106FE +:10527000000000003C0308008C6300701060FFE633 +:10528000006020213C0508008CA500683C06080051 +:105290008CC6006C0E00152A000000003C010800BE +:1052A000AC2000708F4F000039EE000131C20001C8 +:1052B0001440FFDE8F8600A88E0A00008F8B00A8A6 +:1052C0003C0508008CA5003C3C0408008C84003898 +:1052D000014B482300A938210082182100E9402B06 +:1052E000006810213C010800AC27003C3C0108008C +:1052F000AC2200388F5F01002419FF0024180C0035 +:1053000003F9202410980012AF840000AF4400205D +:10531000936D0000240C002031A600FF10CC001279 +:10532000240E005010CE00043C194000AF59013843 +:105330000A0001B3000000000E0011C800000000C8 +:105340003C194000AF5901380A0001B300000000C9 +:105350000E00011F000000003C194000AF59013849 +:105360000A0001B3000000008F58010000802821CE +:10537000330F00FF01E020210E0002F1AF8F000487 +:105380003C194000AF5901380A0001B30000000089 +:1053900000A4102B2403000110400009000030215C +:1053A0000005284000A4102B04A0000300031840AF +:1053B0005440FFFC000528405060000A0004182BF0 +:1053C0000085382B54E000040003184200C3302548 +:1053D00000852023000318421460FFF900052842CD +:1053E0000004182B03E0000800C310218F4201B80D +:1053F0000440FFFE00000000AF4401803C031000A9 +:1054000024040040AF450184A3440188A3460189D8 +:10541000A747018A03E00008AF4301B83084FFFFCB +:105420000080382130A5FFFF000020210A00022A59 +:10543000240600803087FFFF8CA40000240600387B +:105440000A00022A000028218F8300388F8600304E +:105450001066000B008040213C07080024E75A1822 +:10546000000328C000A710218C4400002463000121 +:10547000108800053063000F5466FFFA000328C04F +:1054800003E00008000010213C07080024E75A1C34 +:1054900000A7302103E000088CC200003C0390000C +:1054A0003462000100822025AF4400208F45002097 +:1054B00004A0FFFE0000000003E000080000000060 +:1054C0003C038000346200010082202503E00008D4 +:1054D000AF44002027BDFFE0AFB100143091FFFFC3 +:1054E000AFB00010AFBF00181220001300A0802141 +:1054F0008CA2000024040002240601401040000F8A +:10550000004028210E000C5C00000000000010216B +:10551000AE000000022038218FBF00188FB10014A8 +:105520008FB0001000402021000028210000302111 +:105530000A00022A27BD00208CA200000220382188 +:105540008FBF00188FB100148FB0001000402021D1 +:1055500000002821000030210A00022A27BD002077 +:1055600000A010213087FFFF8CA500048C440000B0 +:105570000A00022A2406000627BDFFE0AFB0001093 +:10558000AFBF0018AFB100149363003E00808021CC +:105590000080282130620040000020211040000FD0 +:1055A0008E1100000E000851022020219367000098 +:1055B0002404005030E500FF50A400128E0F0000BC +:1055C000022020218FBF00188FB100148FB000106F +:1055D000A762013C0A00091127BD00200E000287C6 +:1055E000000000000E0008510220202193670000F7 +:1055F0002404005030E500FF14A4FFF20220202113 +:105600008E0F00003C1008008E1000503C0D000C66 +:10561000240BFF8001F05021314E007F01DA602120 +:10562000018D4021014B4824AF4900280220202150 +:105630008FBF00188FB100148FB00010A50200D6E4 +:1056400027BD00200A000911AF8800D027BDFFE068 +:10565000AFBF0018AFB10014AFB0001093660001E7 +:10566000008080210E00025630D1000493640005B2 +:10567000001029C2A765000034830040A363000521 +:105680000E00025F020020210E00091302002021FB +:1056900024020001AF62000C02002821A762001062 +:1056A00024040002A762001224060140A76200142D +:1056B0000E000C5CA76200161620000F8FBF0018AA +:1056C000978C00343C0B08008D6B00782588FFFF19 +:1056D0003109FFFF256A0001012A382B10E000067E +:1056E000A78800343C0F6006240E001635ED00102C +:1056F000ADAE00508FBF00188FB100148FB00010F6 +:1057000003E0000827BD002027BDFFE0AFB1001473 +:10571000AFBF0018AFB0001000A088211080000AB1 +:105720003C03600024020080108200120000000090 +:105730000000000D8FBF00188FB100148FB0001053 +:1057400003E0000827BD00208C682BF80500FFFE51 +:1057500000000000AC712BC08FBF00188FB1001487 +:105760008FB000103C09100027BD002003E00008A6 +:10577000AC692BF80E00025600A0202193650005AD +:10578000022020210E00025F30B000FF2403003E03 +:105790001603FFE7000000008F4401780480FFFE3D +:1057A000240700073C061000AF51014002202021D1 +:1057B000A34701448FBF00188FB100148FB00010B1 +:1057C000AF4601780A0002C227BD002027BDFFE8CE +:1057D000AFBF0014AFB000108F50002000000000D9 +:1057E0000E000913AF440020AF5000208FBF0014FB +:1057F0008FB0001003E0000827BD00183084FFFFC1 +:10580000008038212406003500A020210A00022A49 +:10581000000028213084FFFF008038212406003654 +:1058200000A020210A00022A0000282127BDFFD065 +:10583000AFB3001C3093FFFFAFB50024AFB2001828 +:10584000AFBF0028AFB40020AFB10014AFB000105C +:1058500030B5FFFF12600027000090218F90001CE0 +:105860008E0300003C0680002402004000033E023C +:1058700000032C0230E4007F006688241482001D9F +:1058800030A500FF8F8300282C68000A510000100B +:105890008F910014000358803C0C0800258C56940E +:1058A000016C50218D49000001200008000000001B +:1058B00002B210213045FFFF0E000236240400849E +:1058C000162000028F90001CAF8000288F910014DA +:1058D000260C002026430001018080213072FFFF4A +:1058E00016200004AF8C001C0253502B1540FFDC27 +:1058F00000000000024010218FBF00288FB5002457 +:105900008FB400208FB3001C8FB200188FB1001429 +:105910008FB0001003E0000827BD0030240E0034D3 +:1059200014AE00F9000000009203000E241F168040 +:105930003C07000CA36300219202000D0347C8211D +:105940003C066000A3620020961100123C0A7FFF13 +:10595000354CFFFFA771003C960B00102403000597 +:105960003168FFFFAF6800848E05001CAF5F002820 +:105970008F3800008CC4444803057826008F3021FE +:10598000AF66004C8F69004C24CE00013C057F00BF +:10599000AF6900508F740050AF740054AF66007050 +:1059A000AF6E00588F6D005824140050AF6D005C2E +:1059B000A3600023AF6C0064A36300378E02001461 +:1059C000AF6200488F710048AF7100248E0B001841 +:1059D000AF6B006C9208000CA3680036937F003E0A +:1059E00037F90020A379003E8F78007403058024E6 +:1059F000360F4000AF6F007493640000308900FFE1 +:105A0000513402452404FF803C04080024845A9841 +:105A10000E00028D000000003C1008008E105A9805 +:105A20000E00025602002021240600042407000173 +:105A3000A366007D020020210E00025FA36700051F +:105A40008F5F017807E0FFFE240B0002AF5001409A +:105A5000A34B01448F90001C3C081000AF48017814 +:105A60000A000362AF8000282CAD003751A0FF98D8 +:105A70008F9100140005A0803C180800271856BC20 +:105A8000029878218DEE000001C00008000000009F +:105A90002418000614B80011000000003C0808009B +:105AA0008D085A9824040005AF4800208E1F001866 +:105AB000AF7F00188F79004CAF79001C8F650050C4 +:105AC000122000C0AF6500700A000362AF84002896 +:105AD0002406000710A60083240300063C050800E6 +:105AE00024A55A980E000264240400818F90001CA3 +:105AF0000011102B0A000362AF8200282407000463 +:105B000014A7FFF6240500503C1808008F185A9877 +:105B1000AF5800208E0F0008AF6F00408E090008BC +:105B2000AF6900448E14000CAF7400488E0E001054 +:105B3000AF6E004C8E0D0010AF6D00848E0A001405 +:105B4000AF6A00508E0C0018AF6C00548E04001C1D +:105B5000AF64005893630000306B00FF116501D8FB +:105B6000000000008F7400488F6900400289702394 +:105B700005C000042404008C1620FFDE240200036C +:105B8000240400823C05080024A55A980E000287D0 +:105B9000000000008F90001C000010210A0003622A +:105BA000AF820028240F000514AFFFCC240520008D +:105BB0003C0708008CE75A98AF4700208E06000487 +:105BC000AF66005C9208000824100008A36800215A +:105BD0008F9F001C93F90009A37900208F86001C79 +:105BE00090D8000A330400FF10900011000000005C +:105BF0002885000914A0006924020002240A00205C +:105C0000108A000B34058000288D002115A00008A3 +:105C100024054000240E0040108E00053C050001C4 +:105C200024140080109400023C050002240540006A +:105C30008F7800743C19FF00031980240205782531 +:105C4000AF6F007490C4000BA36400818F84001CAC +:105C50009489000C11200192000000009490000C27 +:105C60002406FFBF24050004A770003C908F000E9F +:105C7000A36F003E8F84001C9089000FA369003F32 +:105C80008F8B001C8D6E00108F54007401D468231C +:105C9000AF6D00608D6A0014AF6A0064956C0018E7 +:105CA000A76C00689563001AA763006A8D62001CE8 +:105CB000AF62006C9167000EA367003E9368003EE0 +:105CC0000106F8241220014BA37F003E8F90001C98 +:105CD0000A000362AF8500282407002214A7FF7F73 +:105CE000240300073C0B08008D6B5A981220000C0F +:105CF000AF4B00200A000362AF830028240C00335E +:105D000010AC0014240A00283C05080024A55A9869 +:105D10000E00023C240400810A0003EB8F90001C5B +:105D20003C04080024845A980E00028D00000000F4 +:105D30009363000024110050306200FF10510135C0 +:105D4000000000008F90001C000018210A00036270 +:105D5000AF8300283C0D08008DAD5A9824040081C3 +:105D6000AF4D00203C05080024A55A980E00023CC7 +:105D7000A36A00348F90001C240200090A00036209 +:105D8000AF82002802B288213225FFFF0E000236C2 +:105D9000240400840A0003628F90001C1082FFA478 +:105DA00024050400288B000311600170240C0004FA +:105DB000240300015483FF9E240540000A00043B95 +:105DC000240501003C04080024845A988F62004C8A +:105DD0000E00028D8F6300508F90001C0000202168 +:105DE0000A000362AF8400288E1000042404008A95 +:105DF000AF50002093790005333800021700015F8F +:105E0000020028219368002302002821311F00206E +:105E100017E0015A2404008D9367003F2406001206 +:105E200030E200FF10460155240400810E000256A6 +:105E30000200202193630023240500040200202196 +:105E4000346B0042A36B00230E00025FA365007D4C +:105E50008F4401780480FFFE240A0002AF50014005 +:105E6000A34A01448F90001C3C0C1000AF4C0178F9 +:105E70000A0003EC0011102B8E1000042404008A89 +:105E8000AF500020936E000531CD000215A0001622 +:105E900002002821936F003F2414000402002821EF +:105EA00031E900FF11340010240400810E00025675 +:105EB000020020219362002324080012241FFFFE09 +:105EC00034460020A3660023A368003F93790005B1 +:105ED00002002021033FC0240E00025FA3780005CA +:105EE00002002821000020210E00033400000000E1 +:105EF0000A0003EB8F90001C8E1000043C03000886 +:105F00000343A021AF500020928B000024050050D5 +:105F1000316400FF10850161240700880200202100 +:105F2000000028210E00022A2406000E928D000097 +:105F3000240EFF800200282101AE8025A2900000DF +:105F4000240400040E000C5C240600300A0003EB5D +:105F50008F90001C8E0800043C14080026945A9868 +:105F60003C010800AC285A98AF480020921F00035B +:105F700033F9000413200002240200122402000658 +:105F8000A362003F920B001B2404FFC03165003F59 +:105F900000A43825A367003E9206000330C200012A +:105FA00014400132000000008E020008AE8200089A +:105FB0003C0208008C425AA010400131000249C244 +:105FC000A76900088E14000C240C0001240300149F +:105FD000AF74002C8E0E0010AF6E0030960D0016C0 +:105FE000A76D0038960A0014A76A003AAF6C000C3F +:105FF000A76C0010A76C0012A76C0014A76C001609 +:1060000012200136A3630034920F000331F0000226 +:106010002E1100018F90001C262200080A00036246 +:10602000AF8200288E0400043C0E0008034E30218D +:10603000AF4400208E05000890CD0000240C0050D5 +:1060400031AA00FF114C00862407008824060009AD +:106050000E00022A000000000A0003EB8F90001CD3 +:106060008E04001C0E00024100000000104000F4ED +:10607000004050218F89001C240700890140202105 +:106080008D25001C240600010E00022A00000000DD +:106090000A0003EB8F90001C960D00023C140800D0 +:1060A00026945A9831AA0004514000B83C10600070 +:1060B0008E0E001C3C010800AC2E5A98AF4E0020FA +:1060C000920700102408001430E200FF144800D6A4 +:1060D00000000000960B00023163000114600165AE +:1060E000000000008E020004AE8200083C1408008C +:1060F0008E945AA01280015B000000008F7400741F +:106100003C0380002404000102835825AF6B007417 +:10611000A3600005AF64000C3C0708008CE75AA0A0 +:106120008F86001CA7640010000711C2A76400122C +:10613000A7640014A7640016A76200088CC80008B2 +:1061400024040002AF68002C8CC5000CAF65003041 +:1061500090DF0010A37F00348F99001C9330001152 +:10616000A37000358F98001C930F0012A36F0036A8 +:106170008F89001C912E0013A36E00378F90001C96 +:10618000960D0014A76D0038960A0016A76A003A0B +:106190008E0C0018AF6C00245620FDCCAF84002874 +:1061A0003C05080024A55A980E0002640000202136 +:1061B0008F90001C0A0004A7000020218E1000040C +:1061C00024070081AF500020936900233134001070 +:1061D000128000170000000002002021000028218A +:1061E0002406001F0E00022A000000000A0003EB34 +:1061F0008F90001C3C05080024A55A980E000287C9 +:10620000240400828F90001C000028210A000362F1 +:10621000AF8500283C0408008C845A980E0014E8CE +:10622000000000008F90001C0A000482000018216A +:106230000E00025602002021937800230200202144 +:10624000370F00100E00025FA36F002300003821FB +:1062500002002021000028210A0005A82406001FB2 +:10626000920F000C31E90001112000030000000032 +:106270009618000EA4D8002C921F000C33F90002CF +:1062800013200005000038218E0200149608001229 +:10629000ACC2001CA4C8001A0A0005432406000969 +:1062A0003C05080024A55A980E0002872404008BA0 +:1062B0008F90001C0011282B0A000362AF85002874 +:1062C000AF6000843C0A08008D4A5A983C0D0800D3 +:1062D0008DAD0050240CFF803C02000C014D1821B4 +:1062E000006C2024AF4400288E070014306B007F20 +:1062F000017A282100A2C821AF2700D88E060014F9 +:10630000AF9900D0AF2600DC8E080010251FFFFEDD +:106310000A000408AF3F01083C0508008CA55A9804 +:106320003C1908008F39005024CCFFFE00B9C02171 +:1063300003047824AF4F00283C1408008E945A9828 +:106340003C0908008D2900500289702131CD007F61 +:1063500001BA502101478021AE0600D8AF9000D08D +:10636000AE0000DC0A0003B1AE0C0108548CFE3014 +:10637000240540000A00043B240510000E00032EF3 +:10638000000000000A0003EB8F90001C8E0F442CCD +:106390003C186C62370979703C010800AC205A98AF +:1063A00015E9000824050140979F00349786002CCA +:1063B0000280282103E6C82B132000112404009238 +:1063C000240501400E000C7A240400023C01080060 +:1063D000AC225A98AF4200203C0508008CA55A9880 +:1063E00010A00005240400830E00084500000000F2 +:1063F00010400009240400833C05080024A55A9895 +:106400000E000264000000008F90001C0011202B81 +:106410000A000362AF8400280E0008490000000053 +:106420000A00055F8F90001C0E00084D0000000060 +:106430003C05080024A55A980A00062F2404008B66 +:10644000240400040E000C7A240500301440002AB5 +:10645000004050218F89001C240700830140202127 +:106460008D25001C0A000551240600018E04000839 +:106470000E000241000000000A00051BAE82000869 +:106480003C05080024A55A980E00023C240400870D +:106490008F90001C0A0005360011102B8F830038E6 +:1064A0008F8600301066FE9D000038213C070800F2 +:1064B00024E75A1C000320C0008728218CAC000070 +:1064C00011900061246A00013143000F5466FFFA05 +:1064D000000320C00A0004F6000038213C05080033 +:1064E00024A55A980E000287240400828F90001C75 +:1064F0000A000536000010213C0B0008034B202148 +:106500002403005024070001AF420020A0830000B4 +:10651000A08700018F82001C90480004A08800180A +:106520008F85001C90A60005A08600198F9F001C77 +:1065300093F90006A099001A8F90001C921800078A +:10654000A098001B8F94001C928F0008A08F001C45 +:106550008F89001C912E0009A08E001D8F8D001CBC +:1065600091AC000AA08C001E8F8B001C3C0C080014 +:10657000258C5A1C9163000B3C0B0800256B5A18A4 +:10658000A083001F8F87001C90E8000CA0880020CB +:106590008F82001C9045000D24024646A0850021F4 +:1065A0008F86001C90DF000EA09F00228F99001C98 +:1065B0009330000FA09000238F98001C93140010BC +:1065C000A09400248F8F001C91E90011A089002560 +:1065D0008F89001C8F8E00308F900038952D00140D +:1065E000000E18C025C80001A48D002895270016AC +:1065F000006C3021006BC821A487002A9525001863 +:106600003108000FA485002CA482002E8D3F001CB1 +:10661000ACCA0000AF88003011100006AF3F000088 +:10662000000038218D25001C014020210A00055161 +:1066300024060001250C00013184000F00003821E0 +:106640000A0006B8AF8400383C07080024E75A184F +:106650000087302100003821ACA000000A0004F6B9 +:10666000ACC000003C05080024A55A980A00062F7B +:10667000240400878E0400040E0002410000000084 +:106680000A00056AAE8200083084FFFF30C600FFB2 +:106690008F4201B80440FFFE00064400010430258B +:1066A0003C07200000C720253C031000AF400180BC +:1066B000AF450184AF44018803E00008AF4301B84F +:1066C00027BDFFE8AFB00010AFBF00143C0760006B +:1066D000240600021080000600A080210010102B6C +:1066E0008FBF00148FB0001003E0000827BD001812 +:1066F0003C09600EAD2000348CE5201C8F82001C0C +:106700002408FFFC00A81824ACE3201C0E0006D1CE +:106710008C45000C0010102B8FBF00148FB00010A0 +:1067200003E0000827BD00183C02600E344701005A +:1067300024090018274A040000000000000000009F +:10674000000000003C06005034C30200AF44003893 +:10675000AF45003CAF430030014018218F4B000093 +:10676000316800201100FFFD2406007F2408FFFF90 +:106770008C6C000024C6FFFF24630004ACEC000016 +:1067800014C8FFFB24E70004000000000000000024 +:10679000000000003C0F0020AF4F00300000000060 +:1067A00024AD020001A5702B2529FFFF008E2021BA +:1067B0001520FFE101A0282103E0000800000000EF +:1067C00027BDFFE0AFB10014AFBF0018AFB000109D +:1067D0003C05600E8CA20034008088211440000625 +:1067E0003C0460008C87201C2408FFFC00E8302457 +:1067F00034C30001AC83201C8F8B001C24090001D2 +:10680000ACA90034956900028D6500148D70000CF0 +:106810002D2400818D6700048D660008108000071C +:106820008D6A00102D2C00041580000E30CE00075C +:10683000312D000311A0000B000000002404008B88 +:10684000020028210E0006D1240600030011102B9F +:106850008FBF00188FB100148FB0001003E0000844 +:1068600027BD002015C0FFF62404008B3C03002048 +:10687000AF4300300000000024020001AF8200148A +:106880000000000000000000000000003C1F01505C +:10689000013FC825253800033C0F600EAF47003884 +:1068A00000181882AF46003C35E8003CAF59003074 +:1068B000274704008F4400003086002010C0FFFDF1 +:1068C00000000000106000082466FFFF2403FFFFA3 +:1068D0008CEB000024C6FFFF24E70004AD0B000092 +:1068E00014C3FFFB250800043C08600EAD09003806 +:1068F0000000000000000000000000003C07002035 +:10690000AF470030000000000E0006F901402021D2 +:1069100002002821000020210E0006D124060003D9 +:106920000011102B8FBF00188FB100148FB0001012 +:1069300003E0000827BD002027BDFFE0AFB200182C +:106940003092FFFFAFB10014AFBF001CAFB000101A +:106950001640000D000088210A0007AA022010211D +:1069600024050001508500278CE5000C0000000D77 +:10697000262300013071FFFF24E200200232382B71 +:1069800010E00019AF82001C8F8200141440001622 +:106990008F87001C3C0670003C0320008CE5000043 +:1069A00000A62024148300108F84003C00054402BC +:1069B0003C09800000A980241480FFE9310600FF13 +:1069C0002CCA00095140FFEB262300010006688015 +:1069D0003C0E080025CE579801AE60218D8B00003B +:1069E0000160000800000000022010218FBF001C81 +:1069F0008FB200188FB100148FB0001003E00008B0 +:106A000027BD00200E0006D1240400841600FFD804 +:106A10008F87001C0A00078BAF80003C90EF0002BC +:106A200000002021240600090E0006D1000F2E00D0 +:106A30008F87001C0010102B0A00078BAF82003CD0 +:106A4000020028210E0006DF240400018F87001CAD +:106A50000A00078BAF82003C020028210E0006DFEF +:106A6000000020210A0007C38F87001C0E00071FAB +:106A7000020020210A0007C38F87001C30B0FFFFEF +:106A8000001019C08F5801B80700FFFE3C1F2004FA +:106A90003C191000AF430180AF400184AF5F018813 +:106AA000AF5901B80A00078C262300013082FFFF8E +:106AB00014400003000018210004240224030010E5 +:106AC000308500FF14A000053087000F2466000801 +:106AD0000004220230C300FF3087000F14E00005DD +:106AE000308900032468000400042102310300FF00 +:106AF0003089000315200005388B0001246A00024C +:106B000000042082314300FF388B00013164000112 +:106B100010800002246C0001318300FF03E00008B4 +:106B200000601021308BFFFF000B394230E600FF80 +:106B30003C09080025295998000640800109602178 +:106B40008D8700003164001F240A0001008A1804A8 +:106B500030A500FF00E3202514A000020003102749 +:106B600000E22024240F000100CF700401096821F5 +:106B7000000E282714800005ADA400008F86000CAD +:106B800000A6102403E00008AF82000C8F88000CE0 +:106B900001C8102503E00008AF82000C3C06001F6E +:106BA0003C0360003084FFFF34C5FF8024020020D6 +:106BB000AC602008AC60200CAC602010AC652014E8 +:106BC000AC642018AC62200000000000000000004F +:106BD00003E000080000000027BDFFE82402FFFFDB +:106BE000AFBF0010AF82000C000020213C0608005F +:106BF00024C659982405FFFF248900010004408021 +:106C00003124FFFF010618212C87002014E0FFFA31 +:106C1000AC6500000E0008160000202124020001CF +:106C20003C04600024050020AC822018AC852000C4 +:106C3000000000000000000000000000244A0001E5 +:106C40003142FFFF2C46040014C0FFF78FBF001035 +:106C500003E0000827BD00188F8300082C620400A1 +:106C600003E00008384200018F830008246200011D +:106C700003E00008AF8200088F8300082462FFFF52 +:106C800003E00008AF82000827BDFFE0AFB10014A9 +:106C9000AFBF0018AFB000108F6B00303C06600033 +:106CA00000808821ACCB20088F6A002C3C02800039 +:106CB00024030008ACCA200C9769003A9768003892 +:106CC00000092C003107FFFF00A72025ACC42010CD +:106CD000ACC22014ACC32000000000000000000083 +:106CE000000000003C0360008C6D200031AC000807 +:106CF0001580FFF9000000008C6E201405C00020F4 +:106D0000000000000E0007DA8F84000C00024080B3 +:106D10003C09080025295998010938218CE4000014 +:106D20000E0007DA00028140020220213090FFFFAE +:106D3000020020210E0007F8000028213C0C8000F2 +:106D4000022C58253210FFFF3C116000240A00205D +:106D5000AE2B2014AE302018AE2A20000000000018 +:106D60000000000000000000020010218FBF00188A +:106D70008FB100148FB0001003E0000827BD002081 +:106D80008C6620143C02001F3443FF803C1FFFE848 +:106D900000C3C02437F9080003198021001079C20C +:106DA0003C0C8000022C582531F0FFFF3C116000A4 +:106DB000240A0020AE2B2014AE302018AE2A20006A +:106DC0000000000000000000000000000200102190 +:106DD0008FBF00188FB100148FB0001003E00008BF +:106DE00027BD002027BDFFE8AFB000103402FFFF31 +:106DF0003090FFFFAFBF00141202000602002021F6 +:106E00000E00081600000000020020210E0007F806 +:106E1000240500018F8400088FBF00148FB000107C +:106E20002483FFFF27BD001803E00008AF8300089C +:106E3000000439C230E6003F00043B42000718401E +:106E4000240210002CC4002024C8FFE0AF42002C14 +:106E5000246300011480000330A900FF00071840DC +:106E6000310600FF0003608024080001019A5821C8 +:106E70003C0A000E00C82804016A382111200005D0 +:106E8000000530278CE900000125302503E00008CB +:106E9000ACE600008CEE000001C6682403E00008A8 +:106EA000ACED000027BDFFE8AFBF0014AFB000108D +:106EB0003C0460008C8508083403F00030A2F00028 +:106EC00050430006240200018C8708083404E000C7 +:106ED00030E6F00010C4001E24020002AF82004021 +:106EE0003C1060003C0A0200AE0A0814240910009D +:106EF0003C08000E8E03440003482021AF49002CBB +:106F0000240501200E000CC0000030218F830040BA +:106F1000106000043C021691240B0001106B000E5F +:106F20003C023D2C344F0090AE0F44088FBF00143C +:106F30008FB000103C0C6000240E10003C0D0200CD +:106F400027BD0018AD8E442003E00008AD8D081069 +:106F50000A0008E7AF8000403C0218DA344F009086 +:106F6000AE0F44088FBF00148FB000103C0C6000BF +:106F7000240E10003C0D020027BD0018AD8E4420E9 +:106F800003E00008AD8D08100A0008BB24050001CD +:106F90000A0008BB000028213C08080025085DA461 +:106FA0002404FFFF010018212402001E2442FFFFD9 +:106FB000AC6400000441FFFD246300043C070800AA +:106FC00024E75E208CE5FFFC2404001C240600015D +:106FD000308A001F0146480424840001000910275C +:106FE0002C8300201460FFFA00A22824ACE5FFFCEB +:106FF0003C05666634A4616E3C06080024C65EE06B +:10700000AF840058AF88009C2404FFFF00C0182103 +:107010002402001F2442FFFFAC6400000441FFFD76 +:10702000246300043C0766663C05080024A55EA0B6 +:10703000AF86004834E6616EAF8600982404FFFFF7 +:1070400000A018212402000F2442FFFFAC640000BE +:107050000441FFFD246300043C0B66663C06080007 +:1070600024C65E203568616EAF8500A4AF880070CD +:107070002404FFFF00C018212402001F2442FFFF48 +:10708000AC6400000441FFFD246300043C0D66660F +:107090003C0A0800254A5F6035AC616EAF860090FF +:1070A000AF8C005C2404FFFF014018212402000380 +:1070B0002442FFFFAC6400000441FFFD2463000490 +:1070C0003C09080025295F708D27FFFC2404000679 +:1070D000240500013099001F0325C0042484000109 +:1070E000001878272C8E002015C0FFFA00EF3824F6 +:1070F000AD27FFFC3C09666624030400240403DC7E +:1071000024050200240600663522616E3C08080052 +:1071100025085AA4AF820074AF830044AF83006C8B +:10712000AF830050AF830084AF8A008CAF840064CB +:10713000AF85004CAF860054AF840078AF85006007 +:10714000AF86008001001821240200022442FFFFC4 +:10715000AC6000000441FFFD24630004240400032C +:107160002403000C3C0A0800254A5AB0AF8A006884 +:107170000A00098E2405FFFF000418802484000102 +:10718000006858212C8700C014E0FFFBAD650000AB +:107190003C0E666635CD616E240C17A024081800DD +:1071A000AF8D0088AF8C009403E00008AF88007CAE +:1071B0002484007F000421C200004021000030210F +:1071C00000003821000028210A0009A5AF8400A092 +:1071D0001060000624E7000100C4302124A500014E +:1071E0002CC20BF51440FFFA2CA300663C090800E2 +:1071F00025295F6001201821240200032442FFFF9B +:10720000AC6000000441FFFD2463000410E0001A9C +:1072100024E3FFFF0003294210A0000A0000202100 +:107220002406FFFF3C03080024635F602484000100 +:107230000085502BAC660000250800011540FFFBBF +:107240002463000430E2001F10400008000868803A +:10725000240C0001004C38040008588001692821E2 +:1072600024E6FFFF03E00008ACA6000001A94021CE +:107270002409FFFFAD09000003E000080000000042 +:10728000AF4400283C04000C034420210005288260 +:107290000A000CC000003021000421803C03600083 +:1072A000AC6410080000000000052980AC65100CDB +:1072B0000000000003E000088C62100C27BDFFE80E +:1072C0000080282124040038AFBF00140E0009D527 +:1072D000AFB0001024040E00AF4400283C10000C96 +:1072E00003502021240500100E000CC000003021A6 +:1072F00003501021AC400000AC40000424040038CE +:107300008FBF00148FB0001024053FFF27BD001869 +:107310000A0009D58C430000000421803C03600072 +:10732000AC641008000000008C62100C03E0000840 +:107330000002118227BDFFC8AFB400208F940068FF +:10734000AFBE0030AFB7002CAFB600280000B821A8 +:107350000080B021241E00C0AFBF0034AFB50024B0 +:10736000AFB3001CAFB20018AFB10014AFB0001043 +:107370000A000A12AFA5003C504000018F9400683B +:1073800027DEFFFF13C00028269400048E92000021 +:107390003C03080024635DA01240FFF70283102B1A +:1073A0003C04080024845AA4028410230002A8C0CC +:1073B000000098210A000A212411000100118840D0 +:1073C000122000260000000002B380210251282470 +:1073D0000200202110A0FFF9267300010E0009DE33 +:1073E000000000000016684032EC000101AC2021D2 +:1073F0000E0009D5020028218F89009426F700018C +:107400008FA6003C3AEB0001316A00012528FFFFFE +:107410000011382702CAB021AF88009416E6FFE7B2 +:1074200002479024AE92000002E010218FBF00348A +:107430008FBE00308FB7002C8FB600288FB5002488 +:107440008FB400208FB3001C8FB200188FB10014CE +:107450008FB0001003E0000827BD00383C0E080084 +:1074600025CE5DA0028E102B0A000A0DAE92000000 +:1074700027BDFFD8AFB10014AFB00010AFBF0020E0 +:10748000AFB3001CAFB2001800A0882110A0001FED +:10749000000480403C13080026735AA40A000A5ACC +:1074A0002412000112200019261000010E0009F517 +:1074B00002002021000231422444FFA0000618806F +:1074C0003045001F2C8217A1007318212631FFFFC1 +:1074D0001040FFF400B230048C690000020020214B +:1074E00024053FFF012640241500FFEE0126382524 +:1074F0000E0009D5AC6700008F8A009426100001A9 +:10750000254700011620FFE9AF8700948FBF0020B8 +:107510008FB3001C8FB200188FB100148FB0001011 +:1075200003E0000827BD00288F85009C00805821BB +:107530000000402100004821240A001F3C0C0800E4 +:10754000258C5E1C3C0D080025AD5DA48CA60000BA +:1075500050C000140000402100AD1023000238C0CC +:10756000240300010A000A930000202115000003F3 +:1075700000E410212448202400004821252900018E +:10758000512B00132506DFDC106000062484000167 +:1075900000C3702415C0FFF5000318400A000A91CB +:1075A0000000402110AC002624A300040060282124 +:1075B000254AFFFF1540FFE5AF85009C512B0004D5 +:1075C0002506DFDC0000402103E000080100102157 +:1075D0000006614230C5001F000C50803C070800C7 +:1075E00024E75DA424040001014730211120000F8D +:1075F00000A420043C05080024A55E20148000059A +:107600002529FFFF24C6000410C50011000000005A +:10761000240400018CCF00000004C0270004204097 +:1076200001F868241520FFF5ACCD00008F99007893 +:1076300001001021032B482303E00008AF890078E4 +:107640003C05080024A55DA40A000A9B0000402117 +:107650003C06080024C65DA40A000AB42404000104 +:10766000308800FF240200021102000A24030003F4 +:107670001103005C8F8900A4240400041104005F3E +:1076800024050005110500670000182103E000082B +:10769000006010218F8900483C0C0800258C5EE0BA +:1076A0003C04080024845F60240300201060000F65 +:1076B00000005821240D0002240E00033C0F080096 +:1076C00025EF5EE08D27000014E0000B30F9FFFF8E +:1076D000252900040124C02B53000001018048210A +:1076E0002463FFFF5460FFF88D270000016018211C +:1076F00003E0000800601021132000323C0500FF69 +:1077000030E200FF004030211040004200005021D4 +:1077100024050001000020210005C84000A6C02467 +:1077200017000003332500FF14A0FFFB2484000191 +:10773000012CC023001828C000AA6021008C502111 +:107740003144001F240C0001008C18040003102792 +:1077500000E23024110D0041AD260000110E004C56 +:10776000000A1840110D00368F87006C510E00562C +:107770008F8C0060240D0004110D005A8F8E008440 +:10778000240E0005150EFFDA01601821240B1430B9 +:1077900011400006000018218F8400A0246300011E +:1077A000006A402B1500FFFD016458218F8A00807C +:1077B000AF89008C016018212549FFFF0A000AEB00 +:1077C000AF89008000E52024000736021080FFD03A +:1077D000240A001800075402314600FF0A000AF389 +:1077E000240A00103C0C0800258C5EA03C04080014 +:1077F00024845EE00A000ADA240300103C0C08002E +:10780000258C5E203C04080024845EA00A000AD96E +:107810008F89009000071A02306600FF0A000AF301 +:10782000240A00088F89008C3C0C0800258C5F60BE +:107830003C04080024845F700A000ADA2403000470 +:10784000000A4080250B003024E6FFFF016018216C +:10785000AF8900480A000AEBAF86006C000AC982B3 +:10786000001978803C07080024E75EA001E720218A +:10787000000A18428C8F00003079001F032C380456 +:107880000007C02701F860240A000B08AC8C000038 +:10789000000331420006288000AF28213062001F1B +:1078A0008CB8000024630001004CC804000321428E +:1078B000001938270004108003073024004F2021CE +:1078C0000A000B4CACA60000000A68C025AB0032D1 +:1078D000258AFFFF01601821AF8900A40A000AEB86 +:1078E000AF8A0060254B1030AF89009001601821ED +:1078F00025C9FFFF0A000AEBAF8900843086000724 +:107900002CC2000610400014000000000006408059 +:107910003C030800246357BC010338218CE40000B9 +:1079200000800008000000002409000310A9000ED8 +:1079300000000000240A000510AA000B000000004F +:10794000240B000110AB0008000000008F8C00A089 +:1079500010AC00050000000003E00008000010214A +:107960000A000A7900A020210A000AC700C02021CD +:1079700027BDFFE8308400FF240300021083000BC2 +:10798000AFBF0010240600031086003A240800044C +:1079900010880068240E0005108E007F2CAF143074 +:1079A0008FBF001003E0000827BD00182CA2003094 +:1079B0001440FFFC8FBF001024A5FFD0000531C28A +:1079C000000668803C07080024E75EE001A730213C +:1079D0008CC900000005288230AC001F240B000178 +:1079E000018B50048F840048012A4025ACC8000058 +:1079F0008C83000050600001AF8600488F98006CB7 +:107A000030AE000124A6FFFF270F000115C00002C1 +:107A1000AF8F006C24A600010006414200082080C0 +:107A2000008718218C79000030C2001F2406000155 +:107A30000046F804033F382410E0FFDA8FBF00103F +:107A40000005C182001870803C0F080025EF5EA081 +:107A500001CF48218D2B00000005684231A5001F91 +:107A600000A66004016C502527BD001803E0000843 +:107A7000AD2A00002CA7003014E0FFCA8FBF001011 +:107A800030B900071723FFC724A8FFCE00086A02F9 +:107A9000000D60803C0B0800256B5EA0018B30213F +:107AA0008CC40000000828C230AA001F240800016E +:107AB000014848048F8200A400891825ACC3000047 +:107AC0008C5F000053E00001AF8600A40005704009 +:107AD000000E7942000F28803C04080024845EE0F8 +:107AE00000A418218C6B000025DF000131CD001FA0 +:107AF000001F514201A86004016C4825000A108053 +:107B0000AC690000004428218CA600008F9800601A +:107B100033F9001F8FBF00100328380400C77825F1 +:107B2000270E000127BD0018ACAF000003E00008DD +:107B3000AF8E006024A5EFD02CB804001300FF998D +:107B40008FBF001000053142000658803C0A080033 +:107B5000254A5E20016A30218CC4000030A3001F3A +:107B600024090001006910048F9900900082F82513 +:107B7000ACDF00008F27000050E00001AF860090CE +:107B80008F8D00848FBF001027BD001825AC000129 +:107B900003E00008AF8C008415E0FF828FBF001067 +:107BA0008F8600A0000610400046F821001F21002B +:107BB00003E4C8210019384024F8143000B8402BE1 +:107BC0001100FF788FBF001024A4EBD00E00021329 +:107BD00000C0282100027942000F70803C0D08008F +:107BE00025AD5F6001CD20218C8B0000304C001F43 +:107BF00024060001018618048F89008C016350253A +:107C0000AC8A00008D25000050A00001AF84008CDC +:107C10008F9800808FBF001027BD00182708000133 +:107C200003E00008AF88008030A5000724030003AC +:107C300010A3001028A2000414400008240700022A +:107C40002403000410A300152408000510A8000F49 +:107C50008F8500A003E000080000000014A7FFFDCE +:107C60000080282114C3FFFB240400020A000B8BB0 +:107C700000000000240900050080282110C9FFFB36 +:107C80002404000303E000080000000014C5FFF115 +:107C9000008028210A000B8B24040005240A00011F +:107CA0000080282110CAFFF12404000403E000082A +:107CB0000000000027BDFFE0AFB00010000581C24A +:107CC0002603FFD024C5003F2C6223D024C6007FAA +:107CD000AFB20018AFB10014AFBF001C309100FF6D +:107CE000000691C2000529820200202110400008F0 +:107CF0002403FFFF0E000A4B0000000002002021B9 +:107D0000022028210E000C390240302100001821E9 +:107D10008FBF001C8FB200188FB100148FB00010FD +:107D20000060102103E0000827BD002027BDFFD818 +:107D300024A2007FAFB3001CAFB20018000299C2AA +:107D4000309200FF24A3003F02402021026028213E +:107D5000AFB10014AFB00010AFBF00200E000B6E2B +:107D60000003898200408021004020210220282138 +:107D700014400009000018218FBF00208FB3001CA1 +:107D80008FB200188FB100148FB000100060102166 +:107D900003E0000827BD00280E0009FC00000000D9 +:107DA00000402821020020211051FFF3001019C0CB +:107DB0000E000A4B00000000020020210240282192 +:107DC0000E000C39026030218FBF00208FB3001CE1 +:107DD0008FB200188FB100148FB00010000018216E +:107DE0000060102103E0000827BD00283084FFFF59 +:107DF00030A5FFFF1080000700001821308200012D +:107E00001040000200042042006518211480FFFB8E +:107E10000005284003E000080060102110C00007A2 +:107E2000000000008CA2000024C6FFFF24A500046F +:107E3000AC82000014C0FFFB2484000403E00008AF +:107E40000000000010A0000824A3FFFFAC86000083 +:107E500000000000000000002402FFFF2463FFFF79 +:107E60001462FFFA2484000403E00008000000000C +:107E700030A5FFFF8F4201B80440FFFE3C076015AC +:107E800000A730253C031000AF440180AF400184BF +:107E9000AF46018803E00008AF4301B88F8500D0EA +:107EA0002C864000008018218CA700840087102BAE +:107EB00014400010000000008CA800842D06400033 +:107EC00050C0000F240340008CAA0084008A482B75 +:107ED000512000018CA3008400035A42000B208033 +:107EE0003C05080024A558200085182103E000085F +:107EF0008C62000014C0FFF4000000002403400066 +:107F000000035A42000B20803C05080024A558209D +:107F10000085182103E000088C6200008F8300D0E8 +:107F2000906600D024C50001A06500D08F8500D0E8 +:107F3000906400D090A200D210440017000000000E +:107F4000936C00788F8B00BC318A00FFA16A000C13 +:107F500025490001938700C4312200FF3048007F8B +:107F60001107000B00026827A36200788F4E01788A +:107F700005C0FFFE8F9900B0241800023C0F1000CE +:107F8000AF590140A358014403E00008AF4F017806 +:107F90000A000D0931A20080A0A000D00A000CFF49 +:107FA000000000008F8700D027BDFFC8AFBF0030A2 +:107FB000AFB7002CAFB60028AFB50024AFB4002097 +:107FC000AFB3001CAFB20018AFB10014AFB00010D7 +:107FD00094E300E094E200E2104300D72405FFFFA1 +:107FE0003C047FFF3497FFFF2415FF800A000DF04B +:107FF0003C16000E108A00D18FBF00308F9100B068 +:108000003C1808008F18005C001230C0001291402C +:108010000311702101D57824AF4F002C94EC00E2BD +:1080200031CD007F01BA5821318A7FFF0176482186 +:10803000000A804002091021945300003C08080007 +:108040008D0800580246C02132733FFF001319808B +:10805000010320210224282130BF007F03FAC82118 +:1080600000B5A024AF54002C0336A0218E87001049 +:108070008E8F003003785821256D008800EF702323 +:10808000240C0002AE8E0010AF8D00ACA16C0088F5 +:10809000976A003C8E8400308F9100AC0E000CD6A5 +:1080A0003150FFFF00024B80020940253C02420094 +:1080B00001022025AE2400048E8300048F8D00ACC5 +:1080C0008E860000240E0008ADA3001CADA600188B +:1080D000ADA0000CADA00010929F000A33F900FF84 +:1080E000A5B90014968500083C1F000CA5A5001634 +:1080F0009298000A331100FFA5B100209690000865 +:1081000024180005A5B00022ADA00024928F000B1A +:108110002410C00031E700FFA5A70002A1AE0001B6 +:108120008E8C00308F8B00AC8F8400B0AD6C00085B +:108130003C0A08008D4A005401444821013540247E +:10814000AF4800283C0208008C4200540044302113 +:1081500030C3007F007AC821033F282102458821CF +:10816000AF9100BCAF8500C0A23800008F8A00BC70 +:108170002403FFBF2418FFDF954F000201F03824CD +:1081800000F37025A54E0002914D000231AC003F76 +:10819000358B0040A14B00028F8600BC8F8900D038 +:1081A000ACC000048D28007C3C098000ACC80008ED +:1081B00090C4000D3082007FA0C2000D8F8500BCEE +:1081C00090BF000D03E3C824A0B9000D8F9100BC3F +:1081D0009233000D02789024A232000D8E9000346C +:1081E0008F8B00BCAD7000108E87002C8E8F0030FE +:1081F00000EF7023AD6E0014916D001831AC007F5C +:10820000A16C00188F9F00BC8E8A00308FE8001888 +:10821000015720240109302400C41025AFE20018C2 +:108220009283000AA3E3001C969900088F8500BC86 +:108230008F9800D0A4B9001E8E9000308E8400303C +:108240000E0002138F0500848F8500D0000291403C +:108250000002990090AF00BC0253882100403021F9 +:1082600031E7000210E0000302118021000290803B +:108270000212802190B900BC3327000410E00002F4 +:108280000006F880021F80218E9800308F8B00BC82 +:1082900024068000330F0003000F702331CD00034C +:1082A000020D6021AD6C000494A400E294AA00E2E7 +:1082B00094B000E231497FFF2522000130537FFF57 +:1082C0000206182400734025A4A800E294A400E24A +:1082D0003C1408008E94006030917FFF123400221D +:1082E000000000000E000CF6000000008F8700D098 +:1082F0000000282194F300E094F000E21213000F34 +:108300008FBF003090E900D090E800D1313200FFFB +:10831000310400FF0244302B14C0FF36264A00010E +:1083200090EE00D2264B000131CD00FF008D602180 +:10833000158BFF338F9100B08FBF00308FB7002CAB +:108340008FB600288FB500248FB400208FB3001C97 +:108350008FB200188FB100148FB0001000A0102150 +:1083600003E0000827BD003894A300E20066402423 +:10837000A4A800E290A400E290B900E2309100FFCE +:108380000011A1C20014F827001F39C03332007F4A +:10839000024730250A000DE8A0A600E23084FFFF66 +:1083A00030A5FFFFAF440018AF45001C03E00008F4 +:1083B0008F42001427BDFFB8AFB000208F9000D0CF +:1083C0003084FFFFAFA40010AFBF0044AFBE004039 +:1083D000AFB7003CAFB60038AFB50034AFB4003033 +:1083E000AFB3002CAFB20028AFB10024A7A0001893 +:1083F000920600D1920500D030C400FF30A300FFE8 +:108400000064102B10400122AFA00014920900D08C +:108410008FB50010312800FF0088382324F4FFFFB7 +:108420000014882B0015982B02339024524001260B +:108430008FB40014961E0012961F00108FB7001004 +:1084400003DFC823001714000019C400000224032E +:108450000018140302E2B02A52C00001004020219B +:108460000284282B10A0000200801821028018210D +:1084700000033C0000071C033064FFFF2C8600094A +:1084800014C000020060B821241700088E0A0008FA +:10849000001769808E09000C31ABFFFF3C0C001007 +:1084A000016C402527520400AF4A0038AF9200B853 +:1084B000AF49003CAF480030000000000000000061 +:1084C00000000000000000000000000000000000AC +:1084D00000000000000000008F4F000031EE00207F +:1084E00011C0FFFD0017982A027110240A000E83A4 +:1084F0000000B02155E001019258000131130080C5 +:10850000126001CF012020219655001232A5FFFFF5 +:108510000E000CCBA7B500188F9000D00291A023BD +:1085200026CD00018F9100B8000DB4000016B403F1 +:108530002638004002D7582A0014882B2405000151 +:108540000300902101711024AF9800B8AFA500146A +:10855000104001BC8F8900B03C0C08008D8C005489 +:10856000240BFF80921E00D001895021014B28244A +:10857000921900D0AF4500288E4700103C08080033 +:108580008D0800583C1808008F18005430E33FFF56 +:108590000003218001043021012658212402FF809C +:1085A0000162F824920C00D0AF5F002C92480000CA +:1085B00033D100FF333500FF0309982100117140CA +:1085C000001578C0326D007F01CF382101BA282113 +:1085D000318300FF3164007F3C0A000C00AA88212F +:1085E0000367F02100033140009A10213108003F59 +:1085F0003C1F000E00D1C021005F982127D90088C0 +:108600002D150008AF9100C0AF9900ACAF9800BC29 +:10861000AF9300B412A0018A00008821240E00014B +:10862000010E4004310D005D11A0FFB2310F0002B8 +:108630008E4A00283C0300803C04FFEFAE6A000035 +:108640008E450024A260000A3488FFFFAE65000456 +:108650009247002C3C1FFF9F37FEFFFFA267000CD4 +:108660008E62000C3C180040A267000B00433025CE +:1086700000C8C824033E88240238A825AE75000C23 +:108680008E490004AE6000183C0F00FFAE69001474 +:108690008E4D002C35EEFFFF8F8B00B001AE6024B5 +:1086A000AE6C00108E470008A660000896450012C8 +:1086B000AE6700208E42000C30B03FFF00105180AA +:1086C000AE6200248E5E0014014B182130A400011C +:1086D000AE7E00288E590018000331C2000443808A +:1086E000AE79002C8E51001C00C8F821A67F001C1A +:1086F000AE710030965800028E550020A678001EFC +:10870000AE75003492490033313000045600000544 +:10871000925000008F8C00D08D8B007CAE6B0030AF +:10872000925000008F8F00BCA1F00000924E0033E9 +:1087300031CD000251A00007925E00018F8900BC7C +:108740002418FF80913100000311A825A1350000F5 +:10875000925E00018F9900BC2409FFBF240BFFDF4C +:10876000A33E00018F9500BC92B8000D3311007F2D +:10877000A2B1000D8F8E00BC91D0000D02097824AB +:10878000A1CF000D8F8800BC8E6D0014910A000DE2 +:108790002DAC0001000C2940014B382400E51825C0 +:1087A000A103000D964200128F8800BC8F8700D075 +:1087B000A50200028E45000490FF00BC30A4000317 +:1087C0000004302330DE000300BE102133F9000224 +:1087D00017200002244400342444003090E200BCFE +:1087E00000A2302430DF000417E0000224830004DC +:1087F000008018218F8F00AC24090002AD03000413 +:10880000A1E90000924E003F8F8D00ACA1AE0001A7 +:108810008F9500AC924C003F8E440004A6AC000241 +:10882000976B003C0E000CD63170FFFF00025380A6 +:10883000020A38253C05420000E51825AEA30004D5 +:108840008F8600AC8E480038ACC800188E440034C7 +:10885000ACC4001CACC0000CACC00010A4C0001420 +:10886000A4C00016A4C00020A4C00022ACC00024F4 +:108870008E6400145080000124040001ACC4000880 +:108880000E000CF6241100010A000E768F9000D025 +:10889000920F00D2920E00D08FB5001031EB00FF86 +:1088A00031CD00FF008D6023016C50212554FFFF66 +:1088B0000014882B0015982B023390241640FEDDFF +:1088C000000000008FB400148FBF00448FBE004032 +:1088D0003A8200018FB7003C8FB600388FB5003464 +:1088E0008FB400308FB3002C8FB200288FB10024DA +:1088F0008FB0002003E0000827BD0048331100209E +:10890000122000EF24150001921E00BC241F00015C +:108910000000A82133D900011320000DAFBF001CB7 +:108920008E4400148E0800840088102B144000022E +:10893000008030218E0600848E03006400C3A82BC3 +:1089400016A0000200C020218E0400640080A8212F +:108950008E4700148E05006400E5302B14C0000221 +:1089600000E020218E0400640095F02313C0000471 +:108970008FAC001C240A0002AFAA001C8FAC001CA4 +:10898000028C582B156000A8000018218E4F00386B +:108990008E6D000C3C0E0080AE6F00008E4A0034DD +:1089A0003C10FF9F01AE5825AE6A00049246003F7E +:1089B000360CFFFF016C38243C0500203C03FFEF20 +:1089C000A266000B00E510253468FFFF8F8700B812 +:1089D0000048F8243C04000803E4C825AE79000CE4 +:1089E0008CF80014AE60001802BE7821AE78001436 +:1089F0008CF10018AE71001C8CE90008AE690024EF +:108A00008CEE000CAE6F002CAE600028AE6E002025 +:108A1000A6600038A660003A8CED001401B58023F2 +:108A2000021E902312400011AE72001090EA003D29 +:108A30008E6500048E640000000A310000A6C82183 +:108A4000000010210326402B0082F82103E8C021FA +:108A5000AE790004AE78000090F1003DA271000AEA +:108A60008F8900B895320006A67200088F9800AC76 +:108A70002419000202A02021A31900009769003CDC +:108A80008F9200AC0E000CD63131FFFF00027B80CC +:108A90008F8500B8022F68253C0E420001AE80256C +:108AA000AE5000048F8400AC8CAC0038AC8C001845 +:108AB0008CAB0034AC8B001CAC80000CAC80001084 +:108AC000A4800014A4800016A4800020A4800022AA +:108AD000AC80002490A7003FA487000212A00135BB +:108AE0002403000153C0000290A2003D90A2003E6A +:108AF00024480001A08800018F9F00ACAFF500085A +:108B00008F8300D024070034906600BC30C500027B +:108B100050A00001240700308F9200B88F8A00BC5B +:108B2000906D00BC924B00002412C00032A50003DF +:108B3000A14B00008F8600B88F8800BC240200047F +:108B400090C400010045182330790003A1040001FE +:108B50008F8A00BC8F9F00B800F53821955800021D +:108B600097E9001200F9382103128824312F3FFFC2 +:108B7000022F7025A54E00029150000231A800047A +:108B8000320C003F358B0040A14B000212A00002C6 +:108B90008F8500BC00E838218F8E00D0ACA7000480 +:108BA000240BFFBF8DCD007C2EA400012403FFDF2A +:108BB000ACAD000890B0000D00044140320C007FC5 +:108BC000A0AC000D8F8600BC90CA000D014B102494 +:108BD000A0C2000D8F8700BC90E5000D00A3F82413 +:108BE00003E8C825A0F9000D8F9100B88F8D00BC57 +:108BF0008E380020ADB800108E290024ADA90014D5 +:108C00008E2F0028ADAF00188E2E002C0E000CF613 +:108C1000ADAE001C8FB0001C240C0002120C00EE44 +:108C20008F9000D08FA3001C006088211460000288 +:108C30000060A8210000A02156A0FE390291A023C7 +:108C40000014882B8FA90010960700103C1E0020EE +:108C50000136402302C750213112FFFFA60A00103F +:108C6000AFB20010AF5E0030000000009617001099 +:108C7000961300121277008F000000008E05000C82 +:108C80008E0B00080016698000AD7021000DC7C36F +:108C900001CDA82B0178782101F56021AE0E000CE2 +:108CA000AE0C00088FB300100013B82B02378024DD +:108CB0001200FF048F9000D00A000E3C000000005C +:108CC0008E4D0038A6600008240B0003AE6D000036 +:108CD0008E500034A260000A8F9800B8AE70000475 +:108CE0003C0500809311003FA26B000C8E6F000CBE +:108CF0003C0EFF9FA271000B01E5102535CCFFFF54 +:108D00003C03FFEF8F9200B8004C30243464FFFF27 +:108D100000C4F824AE7F000C8E590014964800124F +:108D20008F8A00B0AE7900108E490014AE60001832 +:108D3000AE600020AE690014AE6000248E470018BB +:108D400031093FFF0009F180AE6700288E4D000811 +:108D500003CA802131180001AE6D00308E4F000C27 +:108D60008F8C00AC001089C200185B80022B282178 +:108D7000240E0002A665001CA6600036AE6F002C13 +:108D8000A18E00009763003C8F8A00AC3C04420037 +:108D90003062FFFF00443025AD4600048F9F00B8CD +:108DA000240700012411C0008FF30038240600348A +:108DB000AD5300188FF90034AD59001CAD40000CC4 +:108DC000AD400010A5400014A5400016A5400020AD +:108DD000A5400022AD400024A5550002A147000196 +:108DE0008F9E00AC8F8800B88F9200BCAFD5000872 +:108DF000910D0000A24D00008F9000B88F8B00BC39 +:108E000092180001A17800018F8400BC94850002B3 +:108E100000B1782401E97025A48E0002908C000234 +:108E20003183003FA08300028F8300D08F8400BC79 +:108E3000906200BC305300025260000124060030F2 +:108E4000AC8600048C6F007C2403FFBF02A0882145 +:108E5000AC8F0008908E000D31CC007FA08C000DEF +:108E60008F8600BC90C2000D00432024A0C4000DDA +:108E70008F8900BC913F000D37F90020A139000D0A +:108E80008F8800B88F9300BC8D070020AE6700105C +:108E90008D0A0024AE6A00148D1E0028AE7E0018D4 +:108EA0008D12002C0E000CF6AE72001C0A00103D54 +:108EB0008F9000D0960E00148E03000431CCFFFF7B +:108EC000000C10C000622021AF44003C8E1F000443 +:108ED0008F46003C03E6C8231B20003C0000000036 +:108EE0008E0F000025E200013C05001034B500089B +:108EF000AF420038AF550030000000000000000015 +:108F00000000000000000000000000000000000061 +:108F100000000000000000008F580000330B00200C +:108F20001160FFFD000000008F5304003C0D002085 +:108F3000AE1300088F570404AE17000CAF4D00307D +:108F4000000000003C0608008CC600442416000106 +:108F500010D600BD00000000961F00123C0508005E +:108F60008CA5004000BFC821A61900129609001464 +:108F700025270001A6070014960A00143144FFFFBC +:108F80005486FF498FB30010A60000140E000E1681 +:108F900030A5FFFF3C0408008C84002496030012D7 +:108FA0000044102300623023A60600120A00105964 +:108FB0008FB30010A08300018F8200AC2404000155 +:108FC000AC4400080A000FF08F8300D08E0200002E +:108FD0000A0010EA3C0500108F8200C08FA7001C19 +:108FE000921800D0920B00D0920E00D0331100FFE7 +:108FF000316900FF00117940000928C001E56021B6 +:1090000031C300FF036C50210003314000C2C8216E +:10901000255F0088AF9F00ACAF9900BCA1470088D6 +:109020009768003C03C020218F9100AC0E000CD645 +:109030003110FFFF00026B80020DC0253C0442008E +:109040008F8D00B803045825AE2B00048DA900387D +:109050008F8B00AC0000882100118100AD690018E1 +:109060008DAF00343C087FFF3504FFFFAD6F001C5F +:1090700091AC003E8D65001C8D660018000C190037 +:10908000000C770200A33821020E102500E3F82B14 +:1090900000C2C821033F5021AD67001CAD6A001813 +:1090A000AD60000CAD60001091B8003E24050005D5 +:1090B00003C45024A578001495A9000403C02021FE +:1090C000A569001691AF003EA56F002095B1000480 +:1090D000A5710022AD60002491AE003FA56E000294 +:1090E00091B0003E91AC003D01901023244300015B +:1090F000A16300018F8600AC8F9F00BCACDE00082E +:10910000A3E500008F9000BC8F9900B82405FFBF35 +:1091100096070002973800120247782433093FFF70 +:1091200001E98825A6110002921200022418FFDF2F +:10913000324E003F35CD0040A20D00028F8600BCAC +:109140008F8C00D02412FFFFACC000048D8B007CFC +:109150003C0C8000ACCB000890C2000D3043007F77 +:10916000A0C3000D8F8700BC90FF000D03E5C8244D +:10917000A0F9000D8F9100BC9229000D01387824D0 +:10918000A22F000D8F9000BCAE120010AE1500147F +:10919000920E00182415FF8002AE6825A20D00185B +:1091A0008F8500BC8F8300B88CAB0018016C102435 +:1091B000004A3025ACA600189068003EA0A8001C0C +:1091C0008F9F00B88F8700BC8F9800D097F900045C +:1091D000A4F9001E0E0002138F0500848F8600D0B4 +:1091E000000279400002490090D200BC01E98821C8 +:1091F000004028213255000212A0000303D1202193 +:109200000002A8800095202190CD00BC31B200045E +:109210001240000333DF0003000540800088202156 +:10922000240600048F9E00BC00DFC8233327000300 +:1092300000875021AFCA00040E000CF6A665003866 +:109240000A0010388F9000D0961E00123C080800CB +:109250008D080024011E9021A61200120A00105948 +:109260008FB3001027BDFFE03C1808008F18005096 +:10927000AFB00010AFBF0018AFB10014AF8400B0A2 +:1092800093710074030478212410FF8031EE007F75 +:109290003225007F01F0582401DA68213C0C000AD5 +:1092A000A38500C401AC2821AF4B002494A9001071 +:1092B0009768000690A600620080382124020030E2 +:1092C0000109202330C300F0AF8500D010620019DF +:1092D0003090FFFF90AE0062240DFFF0240A005092 +:1092E00001AE6024318B00FF116A002F00000000E6 +:1092F00016000007241F0C00AF5F00248FB100147C +:109300008FBF00188FB0001003E0000827BD0020B9 +:109310000E000E1C02002021241F0C00AF5F002451 +:109320008FB100148FBF00188FB0001003E0000849 +:1093300027BD002094A200E094A400E290BF011396 +:10934000008218263079FFFF33E700C014E00009DF +:109350002F31000116000038000000005620FFE603 +:10936000241F0C000E000D18000000000A0011ED73 +:10937000241F0C001620FFDE000000000E000D1858 +:10938000000000001440FFDC241F0C001600002227 +:109390008F8300D0906901133122003FA062011336 +:1093A0000A0011ED241F0C0094AF00D48F8600D466 +:1093B00000E02821240400050E000C5C31F0FFFFC2 +:1093C0001440000524030003979100E600001821D3 +:1093D0002625FFFFA78500E68F5801B80700FFFE8E +:1093E0003C196013AF400180241F0C00AF50018472 +:1093F000007938253C101000AF4701888FB1001468 +:10940000AF5001B8AF5F00248FB000108FBF0018BD +:1094100003E0000827BD00200E000E1C02002021E2 +:109420005040FFB5241F0C008F8300D090690113BA +:109430000A0012163122003F0E000E1C02002021ED +:109440001440FFAD241F0C00122000078F8300D0B2 +:10945000906801133106003F34C20040A06201133E +:109460000A0011ED241F0C000E000D180000000072 +:109470005040FFA1241F0C008F8300D0906801137F +:109480003106003F0A00124634C20040AF9B00C8BC +:1094900003E00008AF8000EC3089FFFF0009404284 +:1094A0002D020041000921801440000200095040B3 +:1094B00024080040000830C0000811400046582130 +:1094C000256701A800E2C821272F007F2418FF800C +:1094D00001F818240064302100CA702125CC00FF57 +:1094E000240DFF00018D202425650088240A0088B2 +:1094F0003C010800AC2A004C3C010800AC2500509F +:10950000AF8400D43C010800AC2900603C01080095 +:10951000AC2800643C010800AC2700543C01080062 +:10952000AC2300583C010800AC26005C03E00008B6 +:1095300000000000308300FF30C6FFFF30E400FF72 +:109540008F4201B80440FFFE00034C00012438257F +:109550003C08600000E820253C031000AF45018076 +:10956000AF460184AF44018803E00008AF4301B86F +:109570008F86001C3C096012352700108CCB00043C +:109580003C0C600E35850010316A00062D48000144 +:10959000ACE800C48CC40004ACA431808CC20008C8 +:1095A00094C30002ACA2318403E00008A78300E466 +:1095B0003C0308008C6300508F8400E88F86001CF9 +:1095C0002402FF800064C0210302C824AF59002890 +:1095D0008CCD00043305007F00BA78213C0E000CCE +:1095E00001EE2821ACAD00588CC80008AF8500D032 +:1095F0003C076012ACA8005C8CCC001034E8001072 +:10960000ACAC000C8CCB000CACAB000894AA0014E2 +:109610003C0208008C42004425490001A4A9001422 +:1096200094A400143083FFFF106200178F8400D0D1 +:109630003C0A08008D4A0040A4AA00128CCE0018F3 +:10964000AC8E00248CCD0014AC8D00208CC700188B +:10965000AC87002C8CCC001424060001AC8C0028B4 +:109660008D0B00BC5166001A8D0200B48D0200B84B +:10967000A482003A948F003AA48F003C948800D4CE +:1096800003E000083102FFFF3C0908008D29002497 +:10969000A4A000148F8400D0A4A900128CCE0018BE +:1096A000AC8E00248CCD0014AC8D00208CC700182B +:1096B000AC87002C8CCC001424060001AC8C002854 +:1096C0008D0B00BC5566FFEA8D0200B88D0200B418 +:1096D000A482003A948F003AA48F003C948800D46E +:1096E00003E000083102FFFF8F86001C3C0C0800DD +:1096F0008D8C0050240BFF808CCD00083C03000CA7 +:10970000000D51C0018A4021010B4824AF8A00E8B6 +:10971000AF49002890C700073105007F00BA10212B +:109720000043282130E4000410800039AF8500D0C8 +:1097300090CF000731EE000811C000380000000093 +:109740008CD9000C8CC400140324C02B13000030EF +:10975000000000008CC2000CACA200648CCD00188C +:109760002402FFF8ACAD00688CCC0010ACAC0080DB +:109770008CCB000CACAB00848CCA001CACAA007C67 +:1097800090A900BC01224024A0A800BC90C30007FF +:109790003067000810E000048F8500D090AF00BC57 +:1097A00035EE0001A0AE00BC90D9000733380001AF +:1097B000130000088F8300D08F8700D0240400346A +:1097C00090E800BC35030002A0E300BC8F8300D00A +:1097D000AC6400C090C900073126000210C000052B +:1097E00000000000906A00BC35420004A06200BC8A +:1097F0008F8300D09065011330AD003FA06D011341 +:109800008F8C00D0958B00D403E000083162FFFFFD +:109810008CC200140A001305000000000A001306A1 +:10982000ACA0006427BDFFD8AFB000108F90001C23 +:10983000AFBF0024AFB40020AFB20018AFB1001426 +:10984000AFB3001C9613000E3C07600A3C14600680 +:109850003264FFFF369300100E00125534F40410EA +:109860008F8400D43C11600E0E00099B363100102D +:10987000920E00153C0708008CE700603C12601255 +:1098800031CD000FA38D00F08E0E00048E0D000868 +:1098900096080012961F00109619001A9618001EBE +:1098A000960F001C310CFFFF33EBFFFF332AFFFF45 +:1098B0003309FFFF31E6FFFF3C010800AC2B0040FD +:1098C0003C010800AC2C00243C010800AC2A0044F8 +:1098D000AE293178AE26317C92020015960300162F +:1098E00036520010304400FF3065FFFF3C06080090 +:1098F0008CC60064AE243188AE4500B492080014D2 +:1099000096190018241F0001011FC004332FFFFF08 +:109910003C0508008CA50058AE5800B8AE4F00BCFE +:10992000920C0014AF8E00D8AF8D00DC318B00FF9D +:10993000AE4B00C0920A0015AE670048AE66004C00 +:10994000314900FFAE4900C8AE65007C3C03080009 +:109950008C6300503C0408008C84004C3C080800D8 +:109960008D0800543C0208008C42005C8FBF00242C +:10997000AE6300808FB00010AE8300748FB3001C04 +:10998000AE22319CAE4200DCAE2731A0AE2631A41F +:10999000AE24318CAE233190AE283194AE2531986F +:1099A000AE870050AE860054AE8500708FB10014B3 +:1099B000AE4700E0AE4600E4AE4400CCAE4300D07B +:1099C000AE4800D4AE4500D88FB400208FB2001846 +:1099D00003E0000827BD002827BDFFE0AFB1001459 +:1099E000AFBF0018241100010E000845AFB00010F1 +:1099F00010510005978400E6978300CC0083102B5C +:109A0000144000088F8500D4240700028FBF00187F +:109A10008FB100148FB0001000E0102103E00008A7 +:109A200027BD00200E000C7A24040005AF8200E858 +:109A30001040FFF6240700020E0008498F90001C1A +:109A4000979F00E68F9900E88F8D00C827EF0001EF +:109A5000240E0050AF590020A78F00E6A1AE0000F1 +:109A60003C0C08008D8C00648F8600C8240A80009E +:109A7000000C5E00ACCB0074A4C0000694C9000AC0 +:109A8000241FFF803C0D000C012AC024A4D8000A2A +:109A900090C8000A24182000011F1825A0C3000A3E +:109AA0008F8700C8A0E000788F8500C800003821AB +:109AB000A0A000833C0208008C4200508F8400E884 +:109AC0000044782101FFC824AF590028960B0002FA +:109AD00031EE007F01DA6021018D3021A4CB00D46A +:109AE000960A0002AF8600D03C0E000425492401EE +:109AF000A4C900E68E080004ACC800048E03000868 +:109B0000ACC30000A4C00010A4C00014A0C000D0CA +:109B10008F8500D02403FFBFA0A000D13C04080023 +:109B20008C8400648F8200D0A04400D28E1F000C71 +:109B30008F8A00D0978F00E4AD5F001C8E19001053 +:109B400024100030AD590018A5400030A551005434 +:109B5000A5510056A54F0016AD4E0068AD580080C7 +:109B6000AD580084914D006231AC000F358B001070 +:109B7000A14B00628F8600D090C900633128007F1E +:109B8000A0C800638F8400D02406FFFF9085006387 +:109B900000A31024A08200638F9100D000E0102168 +:109BA000923F00BC37F90001A23900BC8F8A00D077 +:109BB000938F00F0AD580064AD5000C0914E00D3BB +:109BC000000F690031CC000F018D5825A14B00D347 +:109BD0008F8500D08F8900DCACA900E88F8800D881 +:109BE0008FBF00188FB100148FB0001027BD002068 +:109BF000ACA800ECA4A600D6A4A000E0A4A000E2BB +:109C000003E000080000000027BDFFE0AFB0001037 +:109C10008F90001CAFB10014AFBF00188E19000464 +:109C20003C1808008F180050240FFF80001989C0CD +:109C30000238702131CD007F01CF602401BA50215C +:109C40003C0B000CAF4C0028014B4021950900D47F +:109C5000950400D68E0700043131FFFFAF8800D095 +:109C60000E000913000721C08E0600048F8300C870 +:109C7000000629C0AF4500209064003E30820040BD +:109C8000144000068F8400D0341FFFFF948300D659 +:109C90003062FFFF145F000400000000948400D6CF +:109CA0000E0008A83084FFFF8E050004022030213A +:109CB0008FBF00188FB100148FB000102404002251 +:109CC00000003821000529C00A00127C27BD0020B1 +:109CD00027BDFFE0AFB100143091FFFFAFB000101F +:109CE000AFBF00181220001D000080218F86001CCD +:109CF0008CC500002403000600053F020005140285 +:109D000030E4000714830015304500FF2CA800063E +:109D10001100004D000558803C0C0800258C57D4DC +:109D2000016C50218D490000012000080000000056 +:109D30008F8E00EC240D000111CD005900000000B1 +:109D4000260B00013170FFFF24CA00200211202BD6 +:109D5000014030211480FFE6AF8A001C0200102170 +:109D60008FBF00188FB100148FB0001003E00008FF +:109D700027BD0020938700CE14E00038240400148F +:109D80000E001338000000008F86001C2402000122 +:109D90000A00147FAF8200EC8F8900EC24080002D7 +:109DA0001128003B2404001300002821000030216A +:109DB000240700010E00127C000000000A00147F3E +:109DC0008F86001C8F8700EC2405000214E5FFF647 +:109DD000240400120E0012E9000000008F8500E844 +:109DE00000403021240400120E00127C00003821B3 +:109DF0000A00147F8F86001C8F8300EC241F000351 +:109E0000147FFFD0260B00010E00129B0000000003 +:109E10008F8500E800403021240200022404001055 +:109E200000003821AF8200EC0E00127C0000000020 +:109E30000A00147F8F86001C8F8F00EC240600021E +:109E400011E6000B0000000024040010000028218F +:109E5000000030210A00149C240700010000282182 +:109E60000E00127C000030210A00147F8F86001C37 +:109E70000E0013A500000000144000128F99001C72 +:109E80008F86001C240200030A00147FAF8200ECBE +:109E90000E001431000000000A00147F8F86001CA1 +:109EA0000E00128B000000002402000224040014A3 +:109EB0000000282100003021000038210A0014B9D8 +:109EC000AF8200EC004038212404001097380002D3 +:109ED000000028210E00127C3306FFFF0A00147FC9 +:109EE0008F86001C8F8400C83C077FFF34E6FFFF8D +:109EF0008C8500742402000100A61824AC83007431 +:109F000003E00008A082000510A000362CA200800B +:109F1000274A04003C0B000524090080104000077C +:109F20002408008030A6000F00C540212D030081C9 +:109F30001460000200A0482124080080AF4B0030CC +:109F400000000000000000000000000011000009F7 +:109F500000003821014030218C8D000024E70004EE +:109F600000E8602BACCD0000248400041580FFFACB +:109F700024C60004000000000000000000000000F3 +:109F80003C0E0006010E3825AF47003000000000EF +:109F900000000000000000008F4F000031E80010BA +:109FA0001100FFFD000000008F42003C8F43003C89 +:109FB0000049C8210323C02B130000040000000047 +:109FC0008F4C003825860001AF4600388F47003C93 +:109FD00000A9282300E96821AF4D003C14A0FFCE62 +:109FE0002CA2008003E000080000000027BDFFD085 +:109FF0003C020002AFB100143C11000CAF45003828 +:10A00000AFB3001CAF46003C00809821AF42003047 +:10A0100024050088AF44002803512021AFBF002849 +:10A02000AFB50024AFB40020AFB200180E0014F199 +:10A03000AFB000103C1F08008FFF004C3C18080018 +:10A040008F1800642410FF8003F3A82132B9007F29 +:10A0500002B078240018A0C0033A70210018914083 +:10A0600001D12021AF4F00280E0014F10254282105 +:10A070003C0D08008DAD00502405012001B358218E +:10A08000316C007F01705024019A48210131202158 +:10A090000E0014F1AF4A00283C0808008D08005457 +:10A0A0003C0508008CA500640113382130E6007FD0 +:10A0B00000F0182400DA202100912021AF4300286D +:10A0C0000E0014F1000529403C0208008C420058A3 +:10A0D0003C1008008E1000601200001C0053882104 +:10A0E0002415FF800A0015743C14000C3226007FF2 +:10A0F0000235182400DA202102402821AF4300282D +:10A10000009420210E0014F12610FFC01200000F51 +:10A11000023288212E05004110A0FFF42412100005 +:10A120003226007F001091800235182400DA2021A9 +:10A1300002402821AF430028009420210E0014F192 +:10A14000000080211600FFF3023288213C0B08003A +:10A150008D6B005C240AFF802405000201734021FE +:10A16000010A4824AF4900283C0408009484006296 +:10A170003110007F021A88213C07000C0E000CAA47 +:10A180000227982100402821026020218FBF00284B +:10A190008FB500248FB400208FB3001C8FB200183D +:10A1A0008FB100148FB000100A0014F127BD0030E9 +:10A1B0008F83001C8C62000410400003000000002C +:10A1C00003E00008000000008C6400108C650008AB +:10A1D0000A00152A8C66000C000000000000001B1D +:10A1E0000000000F0000000A000000080000000648 +:10A1F000000000050000000500000004000000044D +:10A200000000000300000003000000030000000342 +:10A210000000000300000002000000020000000235 +:10A220000000000200000002000000020000000226 +:10A230000000000200000002000000020000000216 +:10A240000000000200000002000000020000000206 +:10A2500000000001000000010000000108000F24C0 +:10A2600008000D6C08000FB80800106008000F4CC3 +:10A2700008000F8C0800119408000D88080011B820 +:10A2800008000DD8080015540800151C08000D889A +:10A2900008000D8808000D880800124008001240D0 +:10A2A00008000D8808000D88080014E008000D88DB +:10A2B00008000D8808000D8808000D88080013B4F8 +:10A2C00008000D8808000D8808000D8808000D881A +:10A2D00008000D8808000D8808000D8808000D880A +:10A2E00008000D8808000D8808000D8808000D88FA +:10A2F00008000D8808000D8808000FAC08000D88C4 +:10A3000008000D880800167808000D8808000D88E0 +:10A3100008000D8808000D8808000D8808000D88C9 +:10A3200008000D8808000D8808000D8808000D88B9 +:10A3300008000D8808000D8808000D8808000D88A9 +:10A3400008000D8808000D8808000D88080014100A +:10A3500008000D8808000D8808001334080012A4B6 +:10A3600008001E2C08001EFC08001F1408001F28EF +:10A3700008001F3808001E2C08001E2C08001E2C88 +:10A3800008001ED808002E1408002E1C08002DE41A +:10A3900008002DF008002DFC08002E08080052F4DB +:10A3A000080052B40800528008005254080052308D +:10A3B000080051EC0A000C840000000000000000BE +:10A3C0000000000D727870362E322E33000000002F +:10A3D000060203030000000000000001000000006E +:10A3E000000000000000000000000000000000006D +:10A3F000000000000000000000000000000000005D +:10A40000000000000000000000000000000000004C +:10A41000000000000000000000000000000000003C +:10A42000000000000000000000000000000000002C +:10A43000000000000000000000000000000000001C +:10A44000000000000000000000000000000000000C +:10A4500000000000000000000000000000000000FC +:10A4600000000000000000000000000000000000EC +:10A4700000000000000000000000000000000000DC +:10A4800000000000000000000000000000000000CC +:10A4900000000000000000000000000000000000BC +:10A4A00000000000000000000000000000000000AC +:10A4B000000000000000000000000000000000009C +:10A4C000000000000000000000000000000000008C +:10A4D000000000000000000000000000000000007C +:10A4E000000000000000000000000000000000006C +:10A4F000000000000000000000000000000000005C +:10A50000000000000000000000000000000000004B +:10A51000000000000000000000000000000000003B +:10A52000000000000000000000000000000000002B +:10A53000000000000000000000000000000000001B +:10A54000000000000000000000000000000000000B +:10A5500000000000000000000000000000000000FB +:10A5600000000000000000000000000000000000EB +:10A5700000000000000000000000000000000000DB +:10A5800000000000000000000000000000000000CB +:10A5900000000000000000000000000000000000BB +:10A5A00000000000000000000000000000000000AB +:10A5B000000000000000000000000000000000009B +:10A5C000000000000000000000000000000000008B +:10A5D000000000000000000000000000000000007B +:10A5E000000000000000000000000000000000006B +:10A5F000000000000000000000000000000000005B +:10A60000000000000000000000000000000000004A +:10A61000000000000000000000000000000000003A +:10A62000000000000000000000000000000000002A +:10A63000000000000000000000000000000000001A +:10A64000000000000000000000000000000000000A +:10A6500000000000000000000000000000000000FA +:10A6600000000000000000000000000000000000EA +:10A6700000000000000000000000000000000000DA +:10A6800000000000000000000000000000000000CA +:10A6900000000000000000000000000000000000BA +:10A6A00000000000000000000000000000000000AA +:10A6B000000000000000000000000000000000009A +:10A6C000000000000000000000000000000000008A +:10A6D000000000000000000000000000000000007A +:10A6E000000000000000000000000000000000006A +:10A6F000000000000000000000000000000000005A +:10A700000000000000000000000000000000000049 +:10A710000000000000000000000000000000000039 +:10A720000000000000000000000000000000000029 +:10A730000000000000000000000000000000000019 +:10A740000000000000000000000000000000000009 +:10A7500000000000000000000000000000000000F9 +:10A7600000000000000000000000000000000000E9 +:10A7700000000000000000000000000000000000D9 +:10A7800000000000000000000000000000000000C9 +:10A7900000000000000000000000000000000000B9 +:10A7A00000000000000000000000000000000000A9 +:10A7B0000000000000000000000000000000000099 +:10A7C0000000000000000000000000000000000089 +:10A7D0000000000000000000000000000000000079 +:10A7E0000000000000000000000000000000000069 +:10A7F0000000000000000000000000000000000059 +:10A800000000000000000000000000000000000048 +:10A810000000000000000000000000000000000038 +:10A820000000000000000000000000000000000028 +:10A830000000000000000000000000000000000018 +:10A840000000000000000000000000000000000008 +:10A8500000000000000000000000000000000000F8 +:10A8600000000000000000000000000000000000E8 +:10A8700000000000000000000000000000000000D8 +:10A8800000000000000000000000000000000000C8 +:10A8900000000000000000000000000000000000B8 +:10A8A00000000000000000000000000000000000A8 +:10A8B0000000000000000000000000000000000098 +:10A8C0000000000000000000000000000000000088 +:10A8D0000000000000000000000000000000000078 +:10A8E0000000000000000000000000000000000068 +:10A8F0000000000000000000000000000000000058 +:10A900000000000000000000000000000000000047 +:10A910000000000000000000000000000000000037 +:10A920000000000000000000000000000000000027 +:10A930000000000000000000000000000000000017 +:10A940000000000000000000000000000000000007 +:10A9500000000000000000000000000000000000F7 +:10A9600000000000000000000000000000000000E7 +:10A9700000000000000000000000000000000000D7 +:10A9800000000000000000000000000000000000C7 +:10A9900000000000000000000000000000000000B7 +:10A9A00000000000000000000000000000000000A7 +:10A9B0000000000000000000000000000000000097 +:10A9C0000000000000000000000000000000000087 +:10A9D0000000000000000000000000000000000077 +:10A9E0000000000000000000000000000000000067 +:10A9F0000000000000000000000000000000000057 +:10AA00000000000000000000000000000000000046 +:10AA10000000000000000000000000000000000036 +:10AA20000000000000000000000000000000000026 +:10AA30000000000000000000000000000000000016 +:10AA40000000000000000000000000000000000006 +:10AA500000000000000000000000000000000000F6 +:10AA600000000000000000000000000000000000E6 +:10AA700000000000000000000000000000000000D6 +:10AA800000000000000000000000000000000000C6 +:10AA900000000000000000000000000000000000B6 +:10AAA00000000000000000000000000000000000A6 +:10AAB0000000000000000000000000000000000096 +:10AAC0000000000000000000000000000000000086 +:10AAD0000000000000000000000000000000000076 +:10AAE0000000000000000000000000000000000066 +:10AAF0000000000000000000000000000000000056 +:10AB00000000000000000000000000000000000045 +:10AB10000000000000000000000000000000000035 +:10AB20000000000000000000000000000000000025 +:10AB30000000000000000000000000000000000015 +:10AB40000000000000000000000000000000000005 +:10AB500000000000000000000000000000000000F5 +:10AB600000000000000000000000000000000000E5 +:10AB700000000000000000000000000000000000D5 +:10AB800000000000000000000000000000000000C5 +:10AB900000000000000000000000000000000000B5 +:10ABA00000000000000000000000000000000000A5 +:10ABB0000000000000000000000000000000000095 +:10ABC0000000000000000000000000000000000085 +:10ABD0000000000000000000000000000000000075 +:10ABE0000000000000000000000000000000000065 +:10ABF0000000000000000000000000000000000055 +:10AC00000000000000000000000000000000000044 +:10AC10000000000000000000000000000000000034 +:10AC20000000000000000000000000000000000024 +:10AC30000000000000000000000000000000000014 +:10AC40000000000000000000000000000000000004 +:10AC500000000000000000000000000000000000F4 +:10AC600000000000000000000000000000000000E4 +:10AC700000000000000000000000000000000000D4 +:10AC800000000000000000000000000000000000C4 +:10AC900000000000000000000000000000000000B4 +:10ACA00000000000000000000000000000000000A4 +:10ACB0000000000000000000000000000000000094 +:10ACC0000000000000000000000000000000000084 +:10ACD0000000000000000000000000000000000074 +:10ACE0000000000000000000000000000000000064 +:10ACF0000000000000000000000000000000000054 +:10AD00000000000000000000000000000000000043 +:10AD10000000000000000000000000000000000033 +:10AD20000000000000000000000000000000000023 +:10AD30000000000000000000000000000000000013 +:10AD40000000000000000000000000000000000003 +:10AD500000000000000000000000000000000000F3 +:10AD600000000000000000000000000000000000E3 +:10AD700000000000000000000000000000000000D3 +:10AD800000000000000000000000000000000000C3 +:10AD900000000000000000000000000000000000B3 +:10ADA00000000000000000000000000000000000A3 +:10ADB0000000000000000000000000000000000093 +:10ADC0000000000000000000000000000000000083 +:10ADD0000000000000000000000000000000000073 +:10ADE0000000000000000000000000000000000063 +:10ADF0000000000000000000000000000000000053 +:10AE00000000000000000000000000000000000042 +:10AE10000000000000000000000000000000000032 +:10AE20000000000000000000000000000000000022 +:10AE30000000000000000000000000000000000012 +:10AE40000000000000000000000000000000000002 +:10AE500000000000000000000000000000000000F2 +:10AE600000000000000000000000000000000000E2 +:10AE700000000000000000000000000000000000D2 +:10AE800000000000000000000000000000000000C2 +:10AE900000000000000000000000000000000000B2 +:10AEA00000000000000000000000000000000000A2 +:10AEB0000000000000000000000000000000000092 +:10AEC0000000000000000000000000000000000082 +:10AED0000000000000000000000000000000000072 +:10AEE0000000000000000000000000000000000062 +:10AEF0000000000000000000000000000000000052 +:10AF00000000000000000000000000000000000041 +:10AF10000000000000000000000000000000000031 +:10AF20000000000000000000000000000000000021 +:10AF30000000000000000000000000000000000011 +:10AF40000000000000000000000000000000000001 +:10AF500000000000000000000000000000000000F1 +:10AF600000000000000000000000000000000000E1 +:10AF700000000000000000000000000000000000D1 +:10AF800000000000000000000000000000000000C1 +:10AF900000000000000000000000000000000000B1 +:10AFA00000000000000000000000000000000000A1 +:10AFB0000000000000000000000000000000000091 +:10AFC0000000000000000000000000000000000081 +:10AFD0000000000000000000000000000000000071 +:10AFE0000000000000000000000000000000000061 +:10AFF0000000000000000000000000000000000051 +:10B000000000000000000000000000000000000040 +:10B010000000000000000000000000000000000030 +:10B020000000000000000000000000000000000020 +:10B030000000000000000000000000000000000010 +:10B040000000000000000000000000000000000000 +:10B0500000000000000000000000000000000000F0 +:10B0600000000000000000000000000000000000E0 +:10B0700000000000000000000000000000000000D0 +:10B0800000000000000000000000000000000000C0 +:10B0900000000000000000000000000000000000B0 +:10B0A00000000000000000000000000000000000A0 +:10B0B0000000000000000000000000000000000090 +:10B0C0000000000000000000000000000000000080 +:10B0D0000000000000000000000000000000000070 +:10B0E0000000000000000000000000000000000060 +:10B0F0000000000000000000000000000000000050 +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000000000000000000000CF +:10B1800000000000000000000000000000000000BF +:10B1900000000000000000000000000000000000AF +:10B1A000000000000000000000000000000000009F +:10B1B000000000000000000000000000000000008F +:10B1C000000000000000000000000000000000007F +:10B1D000000000000000000000000000000000006F +:10B1E000000000000000000000000000000000005F +:10B1F000000000000000000000000000000000004F +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000000000000002E +:10B22000000000000000000000000000000000001E +:10B23000000000000000000000000000000000000E +:10B2400000000000000000000000000000000000FE +:10B2500000000000000000000000000000000000EE +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000000000000AE +:10B2A000000000000000000000000000000000009E +:10B2B000000000000000000000000000000000008E +:10B2C000000000000000000000000000000000007E +:10B2D000000000000000000000000000000000006E +:10B2E000000000000000000000000000000000005E +:10B2F000000000000000000000000000000000004E +:10B30000000000000000000000000000000000003D +:10B31000000000000000000000000000000000002D +:10B32000000000000000000000000000000000001D +:10B33000000000000000000000000000000000000D +:10B3400000000000000000000000000000000000FD +:10B3500000000000000000000000000000000000ED +:10B3600000000000000000000000000000000000DD +:10B3700000000000000000000000000000000000CD +:10B3800000000000000000000000000000000000BD +:10B3900000000000000000000000000000000000AD +:10B3A000000000000000000000000000000000009D +:10B3B000000000000000000000000000000000008D +:10B3C000000000000000000000000000000000007D +:10B3D000000000000000000000000000000000006D +:10B3E000000000000000000000000000000000005D +:10B3F000000000000000000000000000000000004D +:10B40000000000000000000000000000000000003C +:10B41000000000000000000000000000000000002C +:10B42000000000000000000000000000000000001C +:10B43000000000000000000000000000000000000C +:10B4400000000000000000000000000000000000FC +:10B4500000000000000000000000000000000000EC +:10B4600000000000000000000000000000000000DC +:10B4700000000000000000000000000000000000CC +:10B4800000000000000000000000000000000000BC +:10B4900000000000000000000000000000000000AC +:10B4A000000000000000000000000000000000009C +:10B4B000000000000000000000000000000000008C +:10B4C000000000000000000000000000000000007C +:10B4D000000000000000000000000000000000006C +:10B4E000000000000000000000000000000000005C +:10B4F000000000000000000000000000000000004C +:10B50000000000000000000000000000000000003B +:10B51000000000000000000000000000000000002B +:10B52000000000000000000000000000000000001B +:10B53000000000000000000000000000000000000B +:10B5400000000000000000000000000000000000FB +:10B5500000000000000000000000000000000000EB +:10B5600000000000000000000000000000000000DB +:10B5700000000000000000000000000000000000CB +:10B5800000000000000000000000000000000000BB +:10B5900000000000000000000000000000000000AB +:10B5A000000000000000000000000000000000009B +:10B5B000000000000000000000000000000000008B +:10B5C000000000000000000000000000000000007B +:10B5D000000000000000000000000000000000006B +:10B5E000000000000000000000000000000000005B +:10B5F000000000000000000000000000000000004B +:10B60000000000000000000000000000000000003A +:10B61000000000000000000000000000000000002A +:10B62000000000000000000000000000000000001A +:10B63000000000000000000000000000000000000A +:10B6400000000000000000000000000000000000FA +:10B6500000000000000000000000000000000000EA +:10B6600000000000000000000000000000000000DA +:10B6700000000000000000000000000000000000CA +:10B6800000000000000000000000000000000000BA +:10B6900000000000000000000000000000000000AA +:10B6A000000000000000000000000000000000009A +:10B6B000000000000000000000000000000000008A +:10B6C000000000000000000000000000000000007A +:10B6D000000000000000000000000000000000006A +:10B6E000000000000000000000000000000000005A +:10B6F000000000000000000000000000000000004A +:10B700000000000000000000000000000000000039 +:10B710000000000000000000000000000000000029 +:10B720000000000000000000000000000000000019 +:10B730000000000000000000000000000000000009 +:10B7400000000000000000000000000000000000F9 +:10B7500000000000000000000000000000000000E9 +:10B7600000000000000000000000000000000000D9 +:10B7700000000000000000000000000000000000C9 +:10B7800000000000000000000000000000000000B9 +:10B7900000000000000000000000000000000000A9 +:10B7A0000000000000000000000000000000000099 +:10B7B0000000000000000000000000000000000089 +:10B7C0000000000000000000000000000000000079 +:10B7D0000000000000000000000000000000000069 +:10B7E0000000000000000000000000000000000059 +:10B7F0000000000000000000000000000000000049 +:10B800000000000000000000000000000000000038 +:10B810000000000000000000000000000000000028 +:10B820000000000000000000000000000000000018 +:10B830000000000000000000000000000000000008 +:10B8400000000000000000000000000000000000F8 +:10B8500000000000000000000000000000000000E8 +:10B8600000000000000000000000000000000000D8 +:10B8700000000000000000000000000000000000C8 +:10B8800000000000000000000000000000000000B8 +:10B8900000000000000000000000000000000000A8 +:10B8A0000000000000000000000000000000000098 +:10B8B0000000000000000000000000000000000088 +:10B8C0000000000000000000000000000000000078 +:10B8D0000000000000000000000000000000000068 +:10B8E0000000000000000000000000000000000058 +:10B8F0000000000000000000000000000000000048 +:10B900000000000000000000000000000000000037 +:10B910000000000000000000000000000000000027 +:10B920000000000000000000000000000000000017 +:10B930000000000000000000000000000000000007 +:10B9400000000000000000000000000000000000F7 +:10B9500000000000000000000000000000000000E7 +:10B9600000000000000000000000000000000000D7 +:10B9700000000000000000000000000000000000C7 +:10B9800000000000000000000000000000000000B7 +:10B9900000000000000000000000000000000000A7 +:10B9A0000000000000000000000000000000000097 +:10B9B0000000000000000000000000000000000087 +:10B9C0000000000000000000000000000000000077 +:10B9D0000000000000000000000000000000000067 +:10B9E0000000000000000000000000000000000057 +:10B9F0000000000000000000000000000000000047 +:10BA00000000000000000000000000000000000036 +:10BA10000000000000000000000000000000000026 +:10BA20000000000000000000000000000000000016 +:10BA30000000000000000000000000000000000006 +:10BA400000000000000000000000000000000000F6 +:10BA500000000000000000000000000000000000E6 +:10BA600000000000000000000000000000000000D6 +:10BA700000000000000000000000000000000000C6 +:10BA800000000000000000000000000000000000B6 +:10BA900000000000000000000000000000000000A6 +:10BAA0000000000000000000000000000000000096 +:10BAB0000000000000000000000000000000000086 +:10BAC0000000000000000000000000000000000076 +:10BAD0000000000000000000000000000000000066 +:10BAE0000000000000000000000000000000000056 +:10BAF0000000000000000000000000000000000046 +:10BB00000000000000000000000000000000000035 +:10BB10000000000000000000000000000000000025 +:10BB20000000000000000000000000000000000015 +:10BB30000000000000000000000000000000000005 +:10BB400000000000000000000000000000000000F5 +:10BB500000000000000000000000000000000000E5 +:10BB600000000000000000000000000000000000D5 +:10BB700000000000000000000000000000000000C5 +:10BB800000000000000000000000000000000000B5 +:10BB900000000000000000000000000000000000A5 +:10BBA0000000000000000000000000000000000095 +:10BBB0000000000000000000000000000000000085 +:10BBC0000000000000000000000000000000000075 +:10BBD0000000000000000000000000000000000065 +:10BBE0000000000000000000000000000000000055 +:10BBF0000000000000000000000000000000000045 +:10BC00000000000000000000000000000000000034 +:10BC10000000000000000000000000000000000024 +:10BC20000000000000000000000000000000000014 +:10BC30000000000000000000000000000000000004 +:10BC400000000000000000000000000000000000F4 +:10BC500000000000000000000000000000000000E4 +:10BC600000000000000000000000000000000000D4 +:10BC700000000000000000000000000000000000C4 +:10BC800000000000000000000000000000000000B4 +:10BC900000000000000000000000000000000000A4 +:10BCA0000000000000000000000000000000000094 +:10BCB0000000000000000000000000000000000084 +:10BCC0000000000000000000000000000000000074 +:10BCD0000000000000000000000000000000000064 +:10BCE0000000000000000000000000000000000054 +:10BCF0000000000000000000000000000000000044 +:10BD00000000000000000000000000000000000033 +:10BD10000000000000000000000000000000000023 +:10BD20000000000000000000000000000000000013 +:10BD30000000000000000000000000000000000003 +:10BD400000000000000000000000000000000000F3 +:10BD500000000000000000000000000000000000E3 +:10BD600000000000000000000000000000000000D3 +:10BD700000000000000000000000000000000000C3 +:10BD800000000000000000000000000000000000B3 +:10BD900000000000000000000000000000000000A3 +:10BDA0000000000000000000000000000000000093 +:10BDB0000000000000000000000000000000000083 +:10BDC0000000000000000000000000000000000073 +:10BDD0000000000000000000000000000000000063 +:10BDE0000000000000000000000000000000000053 +:10BDF0000000000000000000000000000000000043 +:10BE00000000000000000000000000000000000032 +:10BE10000000000000000000000000000000000022 +:10BE20000000000000000000000000000000000012 +:10BE30000000000000000000000000000000000002 +:10BE400000000000000000000000000000000000F2 +:10BE500000000000000000000000000000000000E2 +:10BE600000000000000000000000000000000000D2 +:10BE700000000000000000000000000000000000C2 +:10BE800000000000000000000000000000000000B2 +:10BE900000000000000000000000000000000000A2 +:10BEA0000000000000000000000000000000000092 +:10BEB0000000000000000000000000000000000082 +:10BEC0000000000000000000000000000000000072 +:10BED0000000000000000000000000000000000062 +:10BEE0000000000000000000000000000000000052 +:10BEF0000000000000000000000000000000000042 +:10BF00000000000000000000000000000000000031 +:10BF10000000000000000000000000000000000021 +:10BF20000000000000000000000000000000000011 +:10BF30000000000000000000000000000000000001 +:10BF400000000000000000000000000000000000F1 +:10BF500000000000000000000000000000000000E1 +:10BF600000000000000000000000000000000000D1 +:10BF700000000000000000000000000000000000C1 +:10BF800000000000000000000000000000000000B1 +:10BF900000000000000000000000000000000000A1 +:10BFA0000000000000000000000000000000000091 +:10BFB0000000000000000000000000000000000081 +:10BFC0000000000000000000000000000000000071 +:10BFD0000000000000000000000000000000000061 +:10BFE0000000000000000000000000000000000051 +:10BFF0000000000000000000000000000000000041 +:10C000000000000000000000000000000000000030 +:10C010000000000000000000000000000000000020 +:10C020000000000000000000000000000000000010 +:10C030000000000000000000000000000000000000 +:10C0400000000000000000000000000000000000F0 +:10C0500000000000000000000000000000000000E0 +:10C0600000000000000000000000000000000000D0 +:10C0700000000000000000000000000000000000C0 +:10C0800000000000000000000000000000000000B0 +:10C0900000000000000000000000000000000000A0 +:10C0A0000000000000000000000000000000000090 +:10C0B0000000000000000000000000000000000080 +:10C0C0000000000000000000000000000000000070 +:10C0D0000000000000000000000000000000000060 +:10C0E0000000000000000000000000000000000050 +:10C0F0000000000000000000000000000000000040 +:10C10000000000000000000000000000000000002F +:10C11000000000000000000000000000000000001F +:10C12000000000000000000000000000000000000F +:10C1300000000000000000000000000000000000FF +:10C1400000000000000000000000000000000000EF +:10C1500000000000000000000000000000000000DF +:10C1600000000000000000000000000000000000CF +:10C1700000000000000000000000000000000000BF +:10C1800000000000000000000000000000000000AF +:10C19000000000000000000000000000000000009F +:10C1A000000000000000000000000000000000008F +:10C1B000000000000000000000000000000000007F +:10C1C000000000000000000000000000000000006F +:10C1D000000000000000000000000000000000005F +:10C1E000000000000000000000000000000000004F +:10C1F000000000000000000000000000000000003F +:10C20000000000000000000000000000000000002E +:10C21000000000000000000000000000000000001E +:10C22000000000000000000000000000000000000E +:10C2300000000000000000000000000000000000FE +:10C2400000000000000000000000000000000000EE +:10C2500000000000000000000000000000000000DE +:10C2600000000000000000000000000000000000CE +:10C2700000000000000000000000000000000000BE +:10C2800000000000000000000000000000000000AE +:10C29000000000000000000000000000000000009E +:10C2A000000000000000000000000000000000008E +:10C2B000000000000000000000000000000000007E +:10C2C000000000000000000000000000000000006E +:10C2D000000000000000000000000000000000005E +:10C2E000000000000000000000000000000000004E +:10C2F000000000000000000000000000000000003E +:10C30000000000000000000000000000000000002D +:10C31000000000000000000000000000000000001D +:10C32000000000000000000000000000000000000D +:10C3300000000000000000000000000000000000FD +:10C3400000000000000000000000000000000000ED +:10C3500000000000000000000000000000000000DD +:10C3600000000000000000000000000000000000CD +:10C3700000000000000000000000000000000000BD +:10C3800000000000000000000000000000000000AD +:10C39000000000000000000000000000000000009D +:10C3A000000000000000000000000000000000008D +:10C3B000000000000000000000000000000000007D +:10C3C000000000000000000000000000000000006D +:10C3D000000000000000000000000000000000005D +:10C3E000000000000000000000000000000000004D +:10C3F000000000000000000000000000000000003D +:10C40000000000000000000000000000000000002C +:10C41000000000000000000000000000000000001C +:10C42000000000000000000000000000000000000C +:10C4300000000000000000000000000000000000FC +:10C4400000000000000000000000000000000000EC +:10C4500000000000000000000000000000000000DC +:10C4600000000000000000000000000000000000CC +:10C4700000000000000000000000000000000000BC +:10C4800000000000000000000000000000000000AC +:10C49000000000000000000000000000000000009C +:10C4A000000000000000000000000000000000008C +:10C4B000000000000000000000000000000000007C +:10C4C000000000000000000000000000000000006C +:10C4D000000000000000000000000000000000005C +:10C4E000000000000000000000000000000000004C +:10C4F000000000000000000000000000000000003C +:10C50000000000000000000000000000000000002B +:10C51000000000000000000000000000000000001B +:10C52000000000000000000000000000000000000B +:10C5300000000000000000000000000000000000FB +:10C5400000000000000000000000000000000000EB +:10C5500000000000000000000000000000000000DB +:10C5600000000000000000000000000000000000CB +:10C5700000000000000000000000000000000000BB +:10C5800000000000000000000000000000000000AB +:10C59000000000000000000000000000000000009B +:10C5A000000000000000000000000000000000008B +:10C5B000000000000000000000000000000000007B +:10C5C000000000000000000000000000000000006B +:10C5D000000000000000000000000000000000005B +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000000000003B +:10C60000000000000000000000000000000000002A +:10C61000000000000000000000000000000000001A +:10C62000000000000000000000000000000000000A +:10C6300000000000000000000000000000000000FA +:10C6400000000000000000000000000000000000EA +:10C6500000000000000000000000000000000000DA +:10C6600000000000000000000000000000000000CA +:10C6700000000000000000000000000000000000BA +:10C6800000000000000000000000000000000000AA +:10C69000000000000000000000000000000000009A +:10C6A000000000000000000000000000000000008A +:10C6B000000000000000000000000000000000007A +:10C6C000000000000000000000000000000000006A +:10C6D000000000000000000000000000000000005A +:10C6E000000000000000000000000000000000004A +:10C6F000000000000000000000000000000000003A +:10C700000000000000000000000000000000000029 +:10C710000000000000000000000000000000000019 +:10C720000000000000000000000000000000000009 +:10C7300000000000000000000000000000000000F9 +:10C7400000000000000000000000000000000000E9 +:10C7500000000000000000000000000000000000D9 +:10C7600000000000000000000000000000000000C9 +:10C7700000000000000000000000000000000000B9 +:10C7800000000000000000000000000000000000A9 +:10C790000000000000000000000000000000000099 +:10C7A0000000000000000000000000000000000089 +:10C7B0000000000000000000000000000000000079 +:10C7C0000000000000000000000000000000000069 +:10C7D0000000000000000000000000000000000059 +:10C7E0000000000000000000000000000000000049 +:10C7F0000000000000000000000000000000000039 +:10C800000000000000000000000000000000000028 +:10C810000000000000000000000000000000000018 +:10C820000000000000000000000000000000000008 +:10C8300000000000000000000000000000000000F8 +:10C8400000000000000000000000000000000000E8 +:10C8500000000000000000000000000000000000D8 +:10C8600000000000000000000000000000000000C8 +:10C8700000000000000000000000000000000000B8 +:10C8800000000000000000000000000000000000A8 +:10C890000000000000000000000000000000000098 +:10C8A0000000000000000000000000000000000088 +:10C8B0000000000000000000000000000000000078 +:10C8C0000000000000000000000000000000000068 +:10C8D0000000000000000000000000000000000058 +:10C8E0000000000000000000000000000000000048 +:10C8F0000000000000000000000000000000000038 +:10C900000000000000000000000000000000000027 +:10C910000000000000000000000000000000000017 +:10C920000000000000000000000000000000000007 +:10C9300000000000000000000000000000000000F7 +:10C9400000000000000000000000000000000000E7 +:10C9500000000000000000000000000000000000D7 +:10C9600000000000000000000000000000000000C7 +:10C9700000000000000000000000000000000000B7 +:10C9800000000000000000000000000000000000A7 +:10C990000000000000000000000000000000000097 +:10C9A0000000000000000000000000000000000087 +:10C9B0000000000000000000000000000000000077 +:10C9C0000000000000000000000000000000000067 +:10C9D0000000000000000000000000000000000057 +:10C9E0000000000000000000000000000000000047 +:10C9F0000000000000000000000000000000000037 +:10CA00000000000000000000000000000000000026 +:10CA10000000000000000000000000000000000016 +:10CA20000000000000000000000000000000000006 +:10CA300000000000000000000000000000000000F6 +:10CA400000000000000000000000000000000000E6 +:10CA500000000000000000000000000000000000D6 +:10CA600000000000000000000000000000000000C6 +:10CA700000000000000000000000000000000000B6 +:10CA800000000000000000000000000000000000A6 +:10CA90000000000000000000000000000000000096 +:10CAA0000000000000000000000000000000000086 +:10CAB0000000000000000000000000000000000076 +:10CAC0000000000000000000000000000000000066 +:10CAD0000000000000000000000000000000000056 +:10CAE0000000000000000000000000000000000046 +:10CAF0000000000000000000000000000000000036 +:10CB00000000000000000000000000000000000025 +:10CB10000000000000000000000000000000000015 +:10CB20000000000000000000000000000000000005 +:10CB300000000000000000000000000000000000F5 +:10CB400000000000000000000000000000000000E5 +:10CB500000000000000000000000000000000000D5 +:10CB600000000000000000000000000000000000C5 +:10CB700000000000000000000000000000000000B5 +:10CB800000000000000000000000000000000000A5 +:10CB90000000000000000000000000000000000095 +:10CBA0000000000000000000000000000000000085 +:10CBB0000000000000000000000000000000000075 +:10CBC0000000000000000000000000000000000065 +:10CBD0000000000000000000000000000000000055 +:10CBE0000000000000000000000000000000000045 +:10CBF0000000000000000000000000000000000035 +:10CC00000000000000000000000000000000000024 +:10CC10000000000000000000000000000000000014 +:10CC20000000000000000000000000000000000004 +:10CC300000000000000000000000000000000000F4 +:10CC400000000000000000000000000000000000E4 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700000000000000000000000000000000000B4 +:10CC800000000000000000000000000000000000A4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB0000000000000000000000000000000000074 +:10CCC0000000000000000000000000000000000064 +:10CCD0000000000000000000000000000000000054 +:10CCE0000000000000000000000000000000000044 +:10CCF0000000000000000000000000000000000034 +:10CD00000000000000000000000000000000000023 +:10CD10000000000000000000000000000000000013 +:10CD20000000000000000000000000000000000003 +:10CD300000000000000000000000000000000000F3 +:10CD400000000000000000000000000000000000E3 +:10CD500000000000000000000000000000000000D3 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000000000000000000000B3 +:10CD800000000000000000000000000000000000A3 +:10CD90000000000000000000000000000000000093 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000000000000073 +:10CDC0000000000000000000000000000000000063 +:10CDD0000000000000000000000000000000000053 +:10CDE0000000000000000000000000000000000043 +:10CDF0000000000000000000000000000000000033 +:10CE00000000000000000000000000000000000022 +:10CE10000000000000000000000000000000000012 +:10CE20000000000000000000000000000000000002 +:10CE300000000000000000000000000000000000F2 +:10CE400000000000000000000000000000000000E2 +:10CE500000000000000000000000000000000000D2 +:10CE600000000000000000000000000000000000C2 +:10CE700000000000000000000000000000000000B2 +:10CE800000000000000000000000000000000000A2 +:10CE90000000000000000000000000000000000092 +:10CEA0000000000000000000000000000000000082 +:10CEB0000000000000000000000000000000000072 +:10CEC0000000000000000000000000000000000062 +:10CED0000000000000000000000000000000000052 +:10CEE0000000000000000000000000000000000042 +:10CEF0000000000000000000000000000000000032 +:10CF00000000000000000000000000000000000021 +:10CF10000000000000000000000000000000000011 +:10CF20000000000000000000000000000000000001 +:10CF300000000000000000000000000000000000F1 +:10CF400000000000000000000000000000000000E1 +:10CF500000000000000000000000000000000000D1 +:10CF600000000000000000000000000000000000C1 +:10CF700000000000000000000000000000000000B1 +:10CF800000000000000000000000000000000000A1 +:10CF90000000000000000000000000000000000091 +:10CFA0000000000000000000000000000000000081 +:10CFB0000000000000000000000000000000000071 +:10CFC0000000000000000000000000000000000061 +:10CFD0000000000000000000000000000000000051 +:10CFE0000000000000000000000000000000000041 +:10CFF0000000000000000000000000000000000031 +:10D000000000000000000000000000000000000020 +:10D010000000000000000000000000000000000010 +:10D020000000000000000000000000000000000000 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000000000000E0 +:10D0500000000000000000000000000000000000D0 +:10D0600000000000000000000000000000000000C0 +:10D0700000000000000000000000000000000000B0 +:10D0800000000000000000000000000000000000A0 +:10D090000000000000000000000000000000000090 +:10D0A0000000000000000000000000000000000080 +:10D0B0000000000000000000000000000000000070 +:10D0C0000000000000000000000000000000000060 +:10D0D0000000000000000000000000000000000050 +:10D0E0000000000000000000000000000000000040 +:10D0F0000000000000000000000000000000000030 +:10D10000000000000000000000000000000000001F +:10D11000000000000000000000000000000000000F +:10D1200000000000000000000000000000000000FF +:10D1300000000000000000000000000000000000EF +:10D1400000000000000000000000000000000000DF +:10D1500000000000000000000000000000000000CF +:10D1600000000000000000000000000000000000BF +:10D1700000000000000000000000000000000000AF +:10D18000000000000000000000000000000000009F +:10D19000000000000000000000000000000000008F +:10D1A000000000000000000000000000000000007F +:10D1B000000000000000000000000000000000006F +:10D1C000000000000000000000000000000000005F +:10D1D000000000000000000000000000000000004F +:10D1E000000000000000000000000000000000003F +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D21000000000000000000000000000000000000E +:10D2200000000000000000000000000000000000FE +:10D2300000000000000000000000000000000000EE +:10D2400000000000000000000000000000000000DE +:10D2500000000000000000000000000000000000CE +:10D2600000000000000000000000000000000000BE +:10D2700000000000000000000000000000000000AE +:10D28000000000000000000000000000000000009E +:10D29000000000000000000000000000000000008E +:10D2A000000000000000000000000000000000007E +:10D2B000000000000000000000000000000000006E +:10D2C000000000000000000000000000000000005E +:10D2D000000000000000000000000000000000004E +:10D2E000000000000000000000000000000000003E +:10D2F000000000000000000000000000000000002E +:10D30000000000000000000000000000000000001D +:10D31000000000000000000000000000000000000D +:10D3200000000000000000000000000000000000FD +:10D3300000000000000000000000000000000000ED +:10D3400000000000000000000000000000000000DD +:10D3500000000000000000000000000000000000CD +:10D3600000000000000000000000000000000000BD +:10D3700000000000000000000000000000000000AD +:10D38000000000000000000000000000000000009D +:10D39000000000000000000000000000000000008D +:10D3A000000000000000000000000000000000007D +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000000000000000000004D +:10D3E000000000000000000000000000000000003D +:10D3F000000000000000000000000000000000002D +:10D40000000000000000000000000000000000001C +:10D41000000000000000000000000000000000000C +:10D4200000000000000000000000000000000000FC +:10D4300000000000000000000000000000000000EC +:10D4400000000000000000000000000000000000DC +:10D4500000000000000000000000000000000000CC +:10D4600000000000000000000000000000000000BC +:10D4700000000000000000000000000000000000AC +:10D48000000000000000000000000000000000009C +:10D49000000000000000000000000000000000008C +:10D4A000000000000000000000000000000000007C +:10D4B000000000000000000000000000000000006C +:10D4C000000000000000000000000000000000005C +:10D4D000000000000000000000000000000000004C +:10D4E000000000000000000000000000000000003C +:10D4F000000000000000000000000000000000002C +:10D50000000000000000000000000000000000001B +:10D51000000000000000000000000000000000000B +:10D5200000000000000000000000000000000000FB +:10D5300000000000000000000000000000000000EB +:10D5400000000000000000000000000000000000DB +:10D5500000000000000000000000000000000000CB +:10D5600000000000000000000000000000000000BB +:10D5700000000000000000000000000000000000AB +:10D58000000000000000000000000000000000009B +:10D59000000000000000008000000000000000000B +:10D5A000000000000000000000000000000000007B +:10D5B00000000000000000000000000A0000000061 +:10D5C0000000000000000000100000030000000048 +:10D5D0000000000D0000000D3C02080024427340D2 +:10D5E0003C030800246377CCAC4000000043202BB0 +:10D5F0001480FFFD244200043C1D080037BD7FFC61 +:10D6000003A0F0213C100800261032103C1C08003A +:10D61000279C73400E0010FE000000000000000D6B +:10D6200030A5FFFF30C600FF274301808F4201B8BD +:10D630000440FFFE24020002AC640000A465000860 +:10D64000A066000AA062000B3C021000AC67001844 +:10D6500003E00008AF4201B83C0360008C624FF861 +:10D660000440FFFE3C020200AC644FC0AC624FC4F9 +:10D670003C02100003E00008AC624FF89482000CFA +:10D680002486001400A0382100021302000210803A +:10D690000082402100C8102B1040005700000000FD +:10D6A00090C300002C6200095040005190C200015C +:10D6B000000310803C030800246372F00043102133 +:10D6C0008C420000004000080000000090C30001F0 +:10D6D0002402000A1462003A000000000106102330 +:10D6E0002C42000A1440003624C600028CE20000DE +:10D6F00034420100ACE2000090C2000090C300017F +:10D7000090C4000290C5000300031C000002160034 +:10D710000043102500042200004410250045102578 +:10D7200024C60004ACE2000490C2000090C30001D3 +:10D7300090C4000290C500030002160000031C0004 +:10D740000043102500042200004410250045102548 +:10D7500024C600040A000CB8ACE2000890C3000123 +:10D76000240200041462001624C6000290C20000C5 +:10D7700090C400018CE30000000212000044102558 +:10D780003463000424C60002ACE2000C0A000CB8AA +:10D79000ACE3000090C300012402000314620008FF +:10D7A00024C600028CE2000090C3000024C60001E1 +:10D7B00034420008A0E300100A000CB8ACE20000FC +:10D7C00003E000082402000190C3000124020002CB +:10D7D0001062000224C40002010020210A000CB8DB +:10D7E000008030210A000CB824C6000190C200015C +:10D7F0000A000CB800C2302103E00008000010212C +:10D8000027BDFFE8AFBF0014AFB000100E00130239 +:10D8100000808021936200052403FFFE0200202186 +:10D82000004310248FBF00148FB00010A3620005C6 +:10D830000A00130B27BD001827BDFFE8AFB000108A +:10D84000AFBF00140E000F3C0080802193620000E7 +:10D8500024030050304200FF14430004240201005E +:10D86000AF4201800A000D3002002021AF4001804C +:10D87000020020218FBF00148FB000100A000FE7B4 +:10D8800027BD001827BDFF80AFBE0078AFB700747A +:10D89000AFB20060AFBF007CAFB60070AFB5006C38 +:10D8A000AFB40068AFB30064AFB1005CAFB0005874 +:10D8B0008F5001283C0208008C4231A02403FF80D5 +:10D8C0009365003F0202102100431024AF42002460 +:10D8D0003C0208008C4231A09364000530B200FF86 +:10D8E000020210213042007F034218210004202749 +:10D8F0003C02000A0062182130840001AF8300144A +:10D900000000F0210000B82114800053AFA00050A7 +:10D9100093430116934401128F450104306300FFC5 +:10D920003C020001308400FF00A2282403431021A0 +:10D9300003441821245640002467400014A001CD60 +:10D940002402000193620000304300FF2402002003 +:10D950001062000524020050106200060000000062 +:10D960000A000D74000000000000000D0A000D7D8B +:10D97000AFA000303C1E080027DE738C0A000D7D2E +:10D98000AFA000303C0208008C4200DC24420001C1 +:10D990003C010800AC2200DC0E00139F00000000D8 +:10D9A0000A000F318FBF007C8F4201043C0300202E +:10D9B00092D3000D004310240002202B00042140CC +:10D9C000AFA400308F4301043C02004000621824E1 +:10D9D000146000023485004000802821326200205B +:10D9E000AFA500301440000234A6008000A0302112 +:10D9F00010C0000BAFA6003093C500088F67004C25 +:10DA00000200202100052B0034A5008130A5F08103 +:10DA10000E000C9B30C600FF0A000F2E0000000015 +:10DA20009362003E304200401040000F2402000488 +:10DA300056420007240200120200202100E02821A3 +:10DA40000E0013F702C030210A000F318FBF007C97 +:10DA500016420005000000000E000D2100002021EC +:10DA60000A000F318FBF007C9743011A96C4000E45 +:10DA700093620035326500043075FFFF00442004D6 +:10DA8000AFA400548ED1000410A000158ED400085D +:10DA90009362003E3042004010400007000000004A +:10DAA0000E0013E0022020211040000D00000000B5 +:10DAB0000A000F2E000000008F6200440222102393 +:10DAC0000440016A000000008F6200480222102317 +:10DAD00004410166240400160A000E218FC20004CE +:10DAE0008F6200480222102304400008000000005A +:10DAF0003C0208008C423100244200013C01080035 +:10DB0000AC2231000A000F23000000008F620040A9 +:10DB100002221023184000128F8400143C020800D7 +:10DB20008C423100327300FC0000A8212442000125 +:10DB30003C010800AC2231008F6300409482011C3C +:10DB4000022318233042FFFF0043102A50400010E8 +:10DB50002402000C8F6200400A000DF20222102302 +:10DB60009483011C9762003C0043102B1040000678 +:10DB7000000000009482011C00551023A482011CA7 +:10DB80000A000DF72402000CA480011C2402000CE2 +:10DB9000AFA200308F620040005120231880000D9A +:10DBA00002A4102A1440012600000000149500066B +:10DBB00002A410233A620001304200011440012007 +:10DBC0000000000002A41023022488210A000E098C +:10DBD0003055FFFF00002021326200021040001A81 +:10DBE000326200109362003E30420040504000110B +:10DBF0008FC200040E00130202002021240200182C +:10DC0000A362003F936200052403FFFE020020216F +:10DC1000004310240E00130BA362000524040039F6 +:10DC2000000028210E0013C9240600180A000F3036 +:10DC300024020001240400170040F809000000003D +:10DC40000A000F302402000110400108000000000B +:10DC50008F63004C8F620054028210231C4001032A +:10DC600002831023044200010060A021AFA4001829 +:10DC7000AFB10010AFB50014934201208F65004092 +:10DC80009763003C304200FF034210210044102102 +:10DC90008FA400543063FFFF244240000083182B00 +:10DCA0008FA40030AFA20020AFA50028008320255C +:10DCB000AFA40030AFA50024AFA0002CAFB4003457 +:10DCC0009362003E30420008504000118FC20000B5 +:10DCD00002C0202127A500380E000CB2AFA00038EA +:10DCE0005440000B8FC200008FA200383042010068 +:10DCF000504000078FC200008FA3003C8F6200607D +:10DD00000062102304430001AF6300608FC2000073 +:10DD10000040F80927A400108FA200303042000212 +:10DD200054400001327300FE9362003E30420040D6 +:10DD3000104000378FA200248F6200541682001A10 +:10DD40003262000124020014124200102A4200151F +:10DD500010400006240200162402000C12420007A4 +:10DD6000326200010A000E7D000000001242000530 +:10DD7000326200010A000E7D000000000A000E78E9 +:10DD80002417000E0A000E78241700100A000E7CDB +:10DD900024170012936200232403FFBD00431024C4 +:10DDA000A362002332620001104000198FA20024F8 +:10DDB0002402000C1242000E2A42000D1040000600 +:10DDC0002402000E2402000A124200078FA200243F +:10DDD0000A000E9524420001124200088FA200247E +:10DDE0000A000E95244200010A000E932417000831 +:10DDF0002402000E16E20002241700162417001059 +:10DE00008FA2002424420001AFA200248FA200248C +:10DE10008FA300148F76004000431021AF620040B2 +:10DE20008F8200149442011C104000090000000081 +:10DE30008F6200488F6400409763003C00441023C9 +:10DE40003063FFFF0043102A104000088FA20054E7 +:10DE5000936400368F6300403402FFFC008210049C +:10DE600000621821AF6300488FA200548FA60030D3 +:10DE70000282902130C200081040000E0000000015 +:10DE80008F6200581642000430C600FF9742011A04 +:10DE90005040000134C6001093C500088FA700341D +:10DEA0000200202100052B0034A500800E000C9BF1 +:10DEB00030A5F0808F620040005610231840001BF0 +:10DEC0008FA200183C0208008C42319830420010AA +:10DED0001040000D24020001976200681440000AFF +:10DEE000240200018F8200149442011C1440000699 +:10DEF00024020001A76200689742007A244200646D +:10DF00000A000EE9A7620012A76200120E001302B7 +:10DF1000020020219362007D2403000102002021E1 +:10DF2000344200010A000EE7AFA300501840000A77 +:10DF3000000000000E001302020020219362007D09 +:10DF40002403000102002021AFA30050344200044A +:10DF50000E00130BA362007D9362003E304200402E +:10DF60001440000C326200011040000A0000000062 +:10DF70008F6300408FC20004240400182463000152 +:10DF80000040F809AF6300408FA200300A000F3054 +:10DF9000304200048F620058105200100000000050 +:10DFA0008F620018022210231C4000082404000184 +:10DFB0008F62001816220009000000008F62001C0A +:10DFC000028210230440000500000000AF720058D8 +:10DFD000AFA40050AF710018AF74001C12E0000B2A +:10DFE0008FA200500E00130202002021A377003FF1 +:10DFF0000E00130B0200202102E030212404003720 +:10E000000E0013C9000028218FA200501040000309 +:10E01000000000000E000CA90200202112A0000543 +:10E02000000018218FA2003030420004504000113F +:10E0300000601021240300010A000F30006010214D +:10E040000E001302020020219362007D02002021B5 +:10E05000344200040E00130BA362007D0E000CA9D5 +:10E06000020020210A000F3024020001AF400044CA +:10E07000240200018FBF007C8FBE00788FB7007430 +:10E080008FB600708FB5006C8FB400688FB30064DA +:10E090008FB200608FB1005C8FB0005803E00008C1 +:10E0A00027BD00808F4201B80440FFFE2402080013 +:10E0B000AF4201B803E00008000000003C02000885 +:10E0C00003421021944200483084FFFF2484001250 +:10E0D0003045FFFF10A0001700A4102B10400016C1 +:10E0E00024020003934201202403001AA343018B5E +:10E0F000304200FF2446FFFE8F82000000A6182B4E +:10E100003863000100021382004310241040000510 +:10E110008F84000434820001A746019403E00008C4 +:10E12000AF8200042402FFFE0082102403E00008F6 +:10E13000AF8200042402000303E00008A342018B25 +:10E1400027BDFFE0AFB10014AFB00010AFBF0018A3 +:10E1500030B0FFFF30D1FFFF8F4201B80440FFFE17 +:10E1600000000000AF440180AF4400200E000F42C9 +:10E17000020020218F8300008F840004A750019AA1 +:10E18000A750018EA74301908F8300083082800042 +:10E19000AF4301A8A75101881040000E8F820004F0 +:10E1A00093420116304200FC24420004005A102120 +:10E1B0008C4240003042FFFF144000068F82000472 +:10E1C0003C02FFFF34427FFF00821024AF82000434 +:10E1D0008F8200042403BFFF00431024A74201A63E +:10E1E0009743010C8F42010400031C003042FFFFE3 +:10E1F00000621825AF4301AC3C021000AF4201B8E9 +:10E200008FBF00188FB100148FB0001003E000081A +:10E2100027BD00208F470070934201128F830000BA +:10E2200027BDFFF0304200FF00022882306201006B +:10E23000000030211040004324A40003306240005D +:10E24000104000103062200000041080005A10219D +:10E250008C43400024A4000400041080AFA30000FD +:10E26000005A10218C424000AFA2000493420116D4 +:10E27000304200FC005A10218C4240000A000FC0BE +:10E28000AFA200081040002F0000302100041080D1 +:10E29000005A10218C43400024A400040004108084 +:10E2A000AFA30000005A10218C424000AFA000082C +:10E2B000AFA200048FA80008000030210000202138 +:10E2C000240A00083C0908002529010003A41021A4 +:10E2D000148A000300042A001100000A0000000054 +:10E2E00090420000248400012C83000C00A2102125 +:10E2F00000021080004910218C4200001460FFF3DE +:10E3000000C230263C0408008C8431048F42007027 +:10E310002C83002010600009004738233C030800CC +:10E32000246331080004108000431021248300017D +:10E33000AC4700003C010800AC233104AF86000864 +:10E340002406000100C0102103E0000827BD0010D2 +:10E350003C0208008C42003827BDFFD0AFB5002436 +:10E36000AFB40020AFB10014AFBF0028AFB3001CA2 +:10E37000AFB20018AFB00010000088213C150800B3 +:10E3800026B50038144000022454FFFF0000A021ED +:10E390009742010E8F8400003042FFFF308340001F +:10E3A0001060000A245200043C0200200082102465 +:10E3B00050400007308280008F8200042403BFFF9A +:10E3C000008318240A0010103442100030828000AC +:10E3D0001040000A3C020020008210241040000778 +:10E3E0008F8200043C03FFFF34637FFF0083182407 +:10E3F00034428000AF820004AF8300000E000F980B +:10E400000000000014400007000000009743011EB8 +:10E410009742011C3063FFFF0002140000621825C0 +:10E42000AF8300089742010C8F4340003045FFFF47 +:10E430003402FFFF14620003000000000A001028ED +:10E44000241100208F42400030420100544000015E +:10E45000241100108F8400003082100050400014FE +:10E4600036310001308200201440000B3C021000C5 +:10E47000008210245040000E363100013C030E0093 +:10E480003C020DFF008318243442FFFF0043102B91 +:10E4900050400007363100013C0208008C42002C3D +:10E4A000244200013C010800AC22002C363100055A +:10E4B0003C0608008CC6003454C000238F85000041 +:10E4C0008F820004304240005440001F8F850000BE +:10E4D0003C021F01008210243C0310005443001A28 +:10E4E0008F85000030A20200144000178F850000C5 +:10E4F0003250FFFF363100028F4201B80440FFFE68 +:10E5000000000000AF400180020020210E000F42F9 +:10E51000AF4000208F8300042402BFFFA750019A60 +:10E52000006218248F820000A750018EA751018835 +:10E53000A74301A6A74201903C021000AF4201B8D8 +:10E540000A0010F5000010213C02100000A2102467 +:10E550001040003A0000000010C0000F0000000052 +:10E5600030A201001040000C3C0302003C020F00EE +:10E5700000A2102410430008000000008F82000851 +:10E58000005410240055102190420004244200043D +:10E590000A00109F000221C00000000000051602C2 +:10E5A0003050000F3A0300022E4203EF38420001C0 +:10E5B0002C6300010062182414600073240200011F +:10E5C0003C0308008C6300D02E06000C386200016A +:10E5D0002C4200010046102414400015001021C0F8 +:10E5E0002602FFFC2C4200045440001100002021B0 +:10E5F000386200022C420001004610241040000343 +:10E60000000512420A00109F000020210010182B64 +:10E610000043102450400006001021C000002021BB +:10E620003245FFFF0E000F633226FFFB001021C0B2 +:10E630003245FFFF0A0010F2362600028F424000EA +:10E640003C0308008C630024304201001040004667 +:10E6500030620001322200043070000D14400002CC +:10E660002413000424130002000512C238420001E2 +:10E670002E4303EF304200013863000100431025B0 +:10E68000104000033231FFFB2402FFFB0202802412 +:10E6900010C000183202000130A201001040001525 +:10E6A000320200013C020F0000A210243C030200D1 +:10E6B0001043000F8F8200082403FFFE0203802412 +:10E6C00000541024005510219042000402333025DC +:10E6D0002442000412000002000221C03226FFFF83 +:10E6E0000E000F633245FFFF1200002700001021CB +:10E6F000320200011040000D320200042402000129 +:10E7000012020002023330253226FFFF00002021D2 +:10E710000E000F633245FFFF2402FFFE0202802439 +:10E7200012000019000010213202000410400016EF +:10E7300024020001240200041202000202333025E8 +:10E740003226FFFF3245FFFF0E000F632404010055 +:10E750002402FFFB020280241200000B00001021A3 +:10E760000A0010F5240200011040000700001021EB +:10E770003245FFFF36260002000020210E000F6305 +:10E7800000000000000010218FBF00288FB500247A +:10E790008FB400208FB3001C8FB200188FB100140B +:10E7A0008FB0001003E0000827BD003027BDFFD068 +:10E7B000AFB000103C04600CAFBF002CAFB6002817 +:10E7C000AFB50024AFB40020AFB3001CAFB2001847 +:10E7D000AFB100148C8250002403FF7F3C1A8000EC +:10E7E000004310243442380CAC8250002402000351 +:10E7F0003C106000AF4200088E0208083C1B8008F5 +:10E800003C010800AC2000203042FFF038420010EC +:10E810002C4200010E001B8DAF8200183C04FFFF4C +:10E820003C020400348308063442000CAE0219484E +:10E83000AE03194C3C0560168E0219808CA30000B3 +:10E840003442020000641824AE0219803C02535383 +:10E850001462000334A47C008CA200040050202128 +:10E860008C82007C8C830078AF820010AF83000C18 +:10E870008F55000032A200031040FFFD32A20001BC +:10E880001040013D32A200028F420128AF42002019 +:10E890008F4201048F430100AF8200000E000F3C45 +:10E8A000AF8300043C0208008C4200C01040000806 +:10E8B0008F8400003C0208008C4200C42442000106 +:10E8C0003C010800AC2200C40A00126900000000EC +:10E8D0003C020010008210241440010C8F830004BD +:10E8E0003C0208008C4200203C0308008C63003886 +:10E8F00000008821244200013C010800AC220020D5 +:10E900003C16080026D60038146000022474FFFF6D +:10E910000000A0219742010E308340003042FFFFEB +:10E920001060000A245200043C02002000821024DF +:10E9300050400007308280008F8200042403BFFF14 +:10E94000008318240A0011703442100030828000C5 +:10E950001040000A3C0200200082102410400007F2 +:10E960008F8200043C03FFFF34637FFF0083182481 +:10E9700034428000AF820004AF8300000E000F9885 +:10E980000000000014400007000000009743011E33 +:10E990009742011C3063FFFF00021400006218253B +:10E9A000AF8300089742010C8F4340003045FFFFC2 +:10E9B0003402FFFF14620003000000000A00118807 +:10E9C000241100208F4240003042010054400001D9 +:10E9D000241100108F840000308210005040001479 +:10E9E00036310001308200201440000B3C02100040 +:10E9F000008210245040000E363100013C030E000E +:10EA00003C020DFF008318243442FFFF0043102B0B +:10EA100050400007363100013C0208008C42002CB7 +:10EA2000244200013C010800AC22002C36310005D4 +:10EA30003C0608008CC6003454C000238F850000BB +:10EA40008F820004304240005440001F8F85000038 +:10EA50003C021F01008210243C0310005443001AA2 +:10EA60008F85000030A20200144000178F8500003F +:10EA70003250FFFF363100028F4201B80440FFFEE2 +:10EA800000000000AF400180020020210E000F4274 +:10EA9000AF4000208F8300042402BFFFA750019ADB +:10EAA000006218248F820000A750018EA7510188B0 +:10EAB000A74301A6A74201903C021000AF4201B853 +:10EAC0000A001267000010213C02100000A210246E +:10EAD0001040003A0000000010C0000F00000000CD +:10EAE00030A201001040000C3C0302003C020F0069 +:10EAF00000A2102410430008000000008F820008CC +:10EB000000541024005610219042000424420004B6 +:10EB10000A0011FF000221C00000000000051602DB +:10EB20003050000F3A0300022E4203EF384200013A +:10EB30002C63000100621824146000852402000187 +:10EB40003C0308008C6300D02E06000C38620001E4 +:10EB50002C4200010046102414400015001021C072 +:10EB60002602FFFC2C42000454400011000020212A +:10EB7000386200022C42000100461024504000037D +:10EB8000000512420A0011FF000020210010182B7E +:10EB90000043102450400006001021C00000202136 +:10EBA0003245FFFF0E000F633226FFFB001021C02D +:10EBB0003245FFFF0A001252362600028F42400003 +:10EBC0003C0308008C6300243042010010400046E2 +:10EBD00030620001322200043070000D1440000247 +:10EBE0002413000424130002000512C2384200015D +:10EBF0002E4303EF3042000138630001004310252B +:10EC0000104000033231FFFB2402FFFB020280248C +:10EC100010C000183202000130A20100104000159F +:10EC2000320200013C020F0000A210243C0302004B +:10EC30001043000F8F8200082403FFFE020380248C +:10EC40000054102400561021904200040233302555 +:10EC50002442000412000002000221C03226FFFFFD +:10EC60000E000F633245FFFF120000390000102133 +:10EC7000320200011040000D3202000424020001A3 +:10EC800012020002023330253226FFFF000020214D +:10EC90000E000F633245FFFF2402FFFE02028024B4 +:10ECA0001200002B00001021320200041040002846 +:10ECB0002402000124020004120200020233302563 +:10ECC0003226FFFF3245FFFF0E000F6324040100D0 +:10ECD0002402FFFB020280241200001D000010210C +:10ECE0000A001267240200015040001900001021A0 +:10ECF0003245FFFF36260002000020210E000F6380 +:10ED0000000000000A001267000010212402BFFF6B +:10ED1000006210241040000800000000240287FF59 +:10ED200000621024144000083C020060008210249D +:10ED300010400005000000000E000D34000000002F +:10ED40000A001267000000000E0012C70000000059 +:10ED5000104000063C0240008F4301243C0260202A +:10ED6000AC430014000000003C024000AF420138F8 +:10ED70000000000032A200021040FEBD00000000B2 +:10ED80008F4201403C044000AF4200208F430148C5 +:10ED90003C02700000621824106400420000000071 +:10EDA0000083102B144000063C0260003C0220004F +:10EDB000106200073C0240000A0012C3000000007D +:10EDC0001062003C3C0240000A0012C30000000038 +:10EDD0008F4501408F4601448F42014800021402D2 +:10EDE000304300FF240200041462000A274401801B +:10EDF0008F4201B80440FFFE2402001CAC850000D5 +:10EE0000A082000B3C021000AF4201B80A0012C3FE +:10EE10003C0240002402000914620012000616029F +:10EE2000000229C0AF4500208F4201B80440FFFE18 +:10EE30002402000124030003AF450180A343018B9A +:10EE4000A740018EA740019AA7400190AF4001A8BA +:10EE5000A7420188A74201A6AF4001AC3C021000C6 +:10EE6000AF4201B88F4201B80440FFFE000000002D +:10EE7000AC8500008F42014800021402A482000801 +:10EE800024020002A082000B8F420148A4820010DD +:10EE90003C021000AC860024AF4201B80A0012C345 +:10EEA0003C0240000E001310000000000A0012C3D4 +:10EEB0003C0240000E001BC2000000003C0240006B +:10EEC000AF420178000000000A00112F000000008E +:10EED0008F4201003042003E144000112402000124 +:10EEE000AF4000488F420100304207C0104000058B +:10EEF00000000000AF40004CAF40005003E00008AD +:10EF000024020001AF400054AF4000408F42010096 +:10EF10003042380054400001AF4000442402000158 +:10EF200003E00008000000008F4201B80440FFFE2B +:10EF300024020001AF440180AF400184A74501884D +:10EF4000A342018A24020002A342018B9742014A94 +:10EF500014C00004A7420190AF4001A40A0012EFC0 +:10EF60003C0210008F420144AF4201A43C02100059 +:10EF7000AF4001A803E00008AF4201B88F4201B8DA +:10EF80000440FFFE24020002AF440180AF4401842C +:10EF9000A7450188A342018AA342018B9742014AF7 +:10EFA000A7420190AF4001A48F420144AF4201A8A3 +:10EFB0003C02100003E00008AF4201B83C029000A0 +:10EFC0003442000100822025AF4400208F420020FF +:10EFD0000440FFFE0000000003E000080000000005 +:10EFE0003C028000344200010082202503E000083A +:10EFF000AF44002027BDFFE8AFBF0014AFB0001042 +:10F000008F50014093430149934201489344014882 +:10F01000306300FF304200FF00021200006228252A +:10F020002402001910620076308400802862001AE1 +:10F030001040001C24020020240200081062007707 +:10F04000286200091040000E2402000B2402000177 +:10F0500010620034286200025040000524020006BD +:10F0600050600034020020210A00139A00000000C2 +:10F0700010620030020020210A00139A00000000F4 +:10F080001062003B2862000C504000022402000E77 +:10F090002402000910620056020020210A00139A7F +:10F0A0000000000010620056286200211040000F8E +:10F0B000240200382402001C106200582862001D3F +:10F0C000104000062402001F2402001B1062004CA6 +:10F0D000000000000A00139A000000001062004ABD +:10F0E000020020210A00139A00000000106200456F +:10F0F0002862003910400007240200802462FFCB00 +:10F100002C42000210400045020020210A00139604 +:10F110000000302110620009000000000A00139A6C +:10F12000000000001480003D020020210A0013901E +:10F130008FBF00140A001396240600018F4201B805 +:10F140000440FFFE24020002A342018BA745018870 +:10F150009742014AA74201908F420144A74201927F +:10F160003C021000AF4201B80A00139C8FBF00148C +:10F170009742014A144000290000000093620005F4 +:10F180003042000414400025000000000E0013026D +:10F190000200202193620005020020213442000475 +:10F1A0000E00130BA36200059362000530420004B9 +:10F1B00014400002000000000000000D93620000F7 +:10F1C00024030020304200FF14430014000000001C +:10F1D0008F4201B80440FFFE24020005AF500180B9 +:10F1E000A342018B3C0210000A00139AAF4201B8FF +:10F1F0008FBF00148FB000100A0012F227BD001854 +:10F200000000000D02002021000030218FBF0014FB +:10F210008FB000100A0012DD27BD00180000000D9D +:10F220008FBF00148FB0001003E0000827BD001846 +:10F2300027BDFFE8AFBF00100E000F3C000000002C +:10F24000AF4001808FBF0010000020210A000FE7AF +:10F2500027BD00183084FFFF30A5FFFF00001821F4 +:10F260001080000700000000308200011040000202 +:10F2700000042042006518210A0013AB0005284055 +:10F2800003E000080060102110C0000624C6FFFF44 +:10F290008CA2000024A50004AC8200000A0013B573 +:10F2A0002484000403E000080000000010A000080F +:10F2B00024A3FFFFAC860000000000000000000057 +:10F2C0002402FFFF2463FFFF1462FFFA248400047A +:10F2D00003E0000800000000308300FF30A500FFBD +:10F2E00030C600FF274701808F4201B80440FFFE6F +:10F2F000000000008F42012834634000ACE20000AF +:10F3000024020001ACE00004A4E30008A0E2000A2B +:10F3100024020002A0E2000B3C021000A4E5001051 +:10F32000ACE00024ACE00028A4E6001203E00008F2 +:10F33000AF4201B827BDFFE8AFBF00109362003FA6 +:10F3400024030012304200FF1043000D00803021E2 +:10F350008F620044008210230440000A8FBF001017 +:10F360008F620048240400390000282100C21023C5 +:10F3700004410004240600120E0013C9000000001E +:10F380008FBF00102402000103E0000827BD001811 +:10F3900027BDFFC8AFB20030AFB1002CAFBF003403 +:10F3A000AFB0002890C5000D0080902130A400105F +:10F3B0001080000B00C088218CC300088F620054AD +:10F3C0001062000730A20005144000B524040001BB +:10F3D0000E000D21000020210A0014BB0040202156 +:10F3E00030A200051040000930A30012108000ACCC +:10F3F000240400018E2300088F620054146200A9C7 +:10F400008FBF00340A00142C240400382402001298 +:10F41000146200A3240400010220202127A500106B +:10F420000E000CB2AFA000101040001102402021CD +:10F430008E220008AF620084AF6000400E0013020D +:10F44000000000009362007D024020213442002031 +:10F450000E00130BA362007D0E000CA902402021B8 +:10F46000240400382405008D0A0014B82406001274 +:10F470009362003E304200081040000F8FA200103F +:10F4800030420100104000078FA300148F6200601B +:10F490000062102304430008AF6300600A001441B7 +:10F4A00000000000AF6000609362003E2403FFF79D +:10F4B00000431024A362003E9362003E30420008E5 +:10F4C000144000022406000300003021936200343F +:10F4D000936300378F640084304200FF306300FF85 +:10F4E00000661821000318800043282100A4202B67 +:10F4F0001080000B000000009763003C8F620084C6 +:10F500003063FFFF004510230062182B14600004D5 +:10F51000000000008F6200840A00145D0045802313 +:10F520009762003C3050FFFF8FA300103062000450 +:10F5300010400004000628808FA2001C0A001465F9 +:10F540000202102B2E02021850400003240202185F +:10F550000A00146E020510233063000410600003DB +:10F56000004510238FA2001C00451023004080217D +:10F570002C42008054400001241000800E00130231 +:10F580000240202124020001AF62000C9362003E81 +:10F59000001020403042007FA362003E8E22000413 +:10F5A00024420001AF620040A770003C8F6200500F +:10F5B0009623000E00431021AF6200588F62005066 +:10F5C00000441021AF62005C8E220004AF6200187C +:10F5D0008E220008AF62001C8FA20010304200088B +:10F5E0005440000A93A20020A360003693620036C4 +:10F5F0002403FFDFA36200359362003E0043102422 +:10F60000A362003E0A0014988E220008A36200350F +:10F610008E220008AF62004C8F6200248F6300408E +:10F6200000431021AF6200489362000024030050A1 +:10F63000304200FF144300122403FF803C02080004 +:10F640008C4231A00242102100431024AF42002816 +:10F650003C0208008C4231A08E2400083C03000CC0 +:10F66000024210213042007F03421021004310214A +:10F67000AC4400D88E230008AF820014AC4300DCF9 +:10F680000E00130B02402021240400380000282122 +:10F690002406000A0E0013C9000000002404000123 +:10F6A0008FBF00348FB200308FB1002C8FB0002894 +:10F6B0000080102103E0000827BD003827BDFFF8B7 +:10F6C00027420180AFA20000308A00FF8F4201B8BC +:10F6D0000440FFFE000000008F4601283C020800A5 +:10F6E0008C4231A02403FF80AF86004800C2102165 +:10F6F00000431024AF4200243C0208008C4231A099 +:10F700008FA900008FA8000000C210213042007FA6 +:10F71000034218213C02000A00621821946400D4BC +:10F720008FA700008FA5000024020002AF83001401 +:10F73000A0A2000B8FA30000354260003084FFFFC1 +:10F74000A4E200083C021000AD260000AD04000455 +:10F75000AC60002427BD0008AF4201B803E00008F8 +:10F76000240200018F88003C938200288F830014BC +:10F770003C07080024E7779800481023304200FF38 +:10F78000304900FC246500888F860040304A000321 +:10F790001120000900002021248200048CA3000015 +:10F7A000304400FF0089102AACE3000024A50004C7 +:10F7B0001440FFF924E70004114000090000202153 +:10F7C0002482000190A30000304400FF008A102B27 +:10F7D000A0E3000024A500011440FFF924E7000184 +:10F7E00030C20003144000048F85003C3102000346 +:10F7F0001040000D0000000010A0000900002021B2 +:10F800002482000190C30000304400FF0085102BCB +:10F81000A0E3000024C600011440FFF924E7000122 +:10F8200003E00008000000001100FFFD000020219F +:10F83000248200048CC30000304400FF0088102B99 +:10F84000ACE3000024C600041440FFF924E70004E0 +:10F8500003E00008000000008F83003C9382002832 +:10F8600030C600FF30A500FF00431023304300FFE7 +:10F870008F820014008038210043102114C0000240 +:10F88000244800880083382130E20003144000053A +:10F8900030A2000314400003306200031040000D4A +:10F8A0000000000010A000090000202124820001B7 +:10F8B00090E30000304400FF0085102BA1030000FE +:10F8C00024E700011440FFF92508000103E00008C7 +:10F8D0000000000010A0FFFD000020212482000491 +:10F8E0008CE30000304400FF0085102BAD030000C6 +:10F8F00024E700041440FFF92508000403E0000891 +:10F90000000000000080482130AAFFFF30C600FF41 +:10F9100030E7FFFF274801808F4201B80440FFFE17 +:10F920008F820048AD0200008F420124AD02000426 +:10F930008D220020A5070008A102000A240200165B +:10F94000A102000B934301208D2200088D240004A6 +:10F95000306300FF004310219783003A00441021D8 +:10F960008D250024004310233C0308008C6331A044 +:10F970008F840014A502000C246300E82402FFFF1A +:10F98000A50A000EA5030010A5060012AD0500187B +:10F99000AD020024948201142403FFF73042FFFFDC +:10F9A000AD0200288C820118AD02002C3C02100030 +:10F9B000AD000030AF4201B88D220020004310247A +:10F9C00003E00008AD2200208F82001430E7FFFF23 +:10F9D00000804821904200D330A5FFFF30C600FFD1 +:10F9E0000002110030420F0000E238252748018054 +:10F9F0008F4201B80440FFFE8F820048AD02000034 +:10FA00008F420124AD0200048D220020A5070008CA +:10FA1000A102000A24020017A102000B9343012057 +:10FA20008D2200088D240004306300FF0043102164 +:10FA30009783003A004410218F8400140043102360 +:10FA40003C0308008C6331A0A502000CA505000E44 +:10FA5000246300E8A5030010A5060012AD00001401 +:10FA60008D220024AD0200188C82005CAD02001CC7 +:10FA70008C820058AD0200202402FFFFAD0200245A +:10FA8000948200E63042FFFFAD02002894820060BD +:10FA9000948300BE30427FFF3063FFFF00021200FC +:10FAA00000431021AD02002C3C021000AD000030DC +:10FAB000AF4201B8948200BE2403FFF700A21021D8 +:10FAC000A48200BE8D2200200043102403E0000821 +:10FAD000AD220020274301808F4201B80440FFFE81 +:10FAE0008F8200249442001C3042FFFF000211C0AC +:10FAF000AC62000024020019A062000B3C0210005E +:10FB0000AC60003003E00008AF4201B88F87002CE2 +:10FB100030C300FF8F4201B80440FFFE8F820048CF +:10FB200034636000ACA2000093820044A0A20005F0 +:10FB30008CE20010A4A20006A4A300088C8200207E +:10FB40002403FFF7A0A2000A24020002A0A2000BD7 +:10FB50008CE20000ACA200108CE20004ACA2001405 +:10FB60008CE2001CACA200248CE20020ACA2002895 +:10FB70008CE2002CACA2002C8C820024ACA20018D9 +:10FB80003C021000AF4201B88C82002000431024D8 +:10FB900003E00008AC8200208F86001427BDFFE838 +:10FBA000AFBF0014AFB0001090C20063304200201D +:10FBB0001040000830A500FF8CC2007C2403FFDF4A +:10FBC00024420001ACC2007C90C2006300431024B8 +:10FBD000A0C2006310A000238F830014275001806F +:10FBE000020028210E0015D6240600828F82001400 +:10FBF000904200633042004050400019A38000440E +:10FC00008F83002C8F4201B80440FFFE8F82004892 +:10FC1000AE02000024026082A60200082402000254 +:10FC2000A202000B8C620008AE0200108C62000C75 +:10FC3000AE0200148C620014AE0200188C62001830 +:10FC4000AE0200248C620024AE0200288C620028E0 +:10FC5000AE02002C3C021000AF4201B8A380004469 +:10FC60008F8300148FBF00148FB000109062006368 +:10FC700027BD00183042007FA06200639782003ADF +:10FC80008F86003C8F850014938300280046102344 +:10FC9000A782003AA4A000E490A400638F820040F1 +:10FCA000AF83003C2403FFBF0046102100832024C3 +:10FCB000AF820040A0A400638F820014A04000BD6A +:10FCC0008F82001403E00008A44000BE8F8A001455 +:10FCD00027BDFFE0AFB10014AFB000108F88003C2B +:10FCE000AFBF00189389001C954200E430D100FF9B +:10FCF0000109182B0080802130AC00FF3047FFFF46 +:10FD00000000582114600003310600FF012030215B +:10FD1000010958239783003A0068102B1440003CD7 +:10FD20000000000014680007240200018E02002079 +:10FD30002403FFFB34E7800000431024AE020020C0 +:10FD40002402000134E70880158200053165FFFFB9 +:10FD50000E001554020020210A00169102002021F5 +:10FD60000E001585020020218F8400482743018062 +:10FD70008F4201B80440FFFE24020018AC6400006A +:10FD8000A062000B8F840014948200E6A46200102D +:10FD90003C021000AC600030AF4201B894820060B9 +:10FDA00024420001A4820060948200603C030800A9 +:10FDB0008C63318830427FFF5443000F02002021C2 +:10FDC000948200602403800000431024A482006019 +:10FDD0009082006090830060304200FF000211C2F8 +:10FDE00000021027000211C03063007F0062182556 +:10FDF000A083006002002021022028218FBF00186C +:10FE00008FB100148FB000100A0015F927BD002033 +:10FE1000914200632403FF8000431025A142006348 +:10FE20009782003A3048FFFF110000209383001CA6 +:10FE30008F840014004B1023304600FF948300E4AD +:10FE40002402EFFF0168282B00621824A48300E439 +:10FE500014A000038E020020010058210000302170 +:10FE60002403FFFB34E7800000431024AE0200208F +:10FE700024020001158200053165FFFF0E001554B4 +:10FE8000020020210A0016B99783003A0E0015855A +:10FE9000020020219783003A8F82003CA780003A1D +:10FEA00000431023AF82003C9383001C8F82001418 +:10FEB0008FBF00188FB100148FB0001027BD002035 +:10FEC00003E00008A04300BD938200442403000126 +:10FED00027BDFFE8004330042C420020AFB00010E3 +:10FEE000AFBF00142410FFFE10400005274501801D +:10FEF0003C0208008C4231900A0016D600461024BD +:10FF00003C0208008C423194004610241440000743 +:10FF1000240600848F8300142410FFFF9062006287 +:10FF20003042000F34420040A06200620E0015D63D +:10FF300000000000020010218FBF00148FB00010DD +:10FF400003E0000827BD00188F83002427BDFFE0D1 +:10FF5000AFB20018AFB10014AFB00010AFBF001CBB +:10FF60009062000D00A0902130D100FF3042007F50 +:10FF7000A062000D8F8500148E4300180080802140 +:10FF80008CA2007C146200052402000E90A2006383 +:10FF9000344200200A0016FFA0A200630E0016C51E +:10FFA000A38200442403FFFF104300472404FFFF03 +:10FFB00052200045000020218E4300003C0200102A +:10FFC00000621024504000043C020008020020217E +:10FFD0000A00170E24020015006210245040000988 +:10FFE0008E45000002002021240200140E0016C5D8 +:10FFF000A38200442403FFFF104300332404FFFFC7 +:020000021000EC +:100000008E4500003C02000200A2102410400016A1 +:100010003C0200048F8600248CC200148CC30010A4 +:100020008CC40014004310230044102B50400005E2 +:10003000020020218E43002C8CC2001010620003AD +:10004000020020210A00173F240200123C02000493 +:1000500000A210245040001C00002021020020219A +:100060000A00173F2402001300A2102410400006CB +:100070008F8300248C620010504000130000202168 +:100080000A001739020020218C6200105040000441 +:100090008E42002C020020210A00173F240200118A +:1000A00050400009000020210200202124020017F6 +:1000B0000E0016C5A38200442403FFFF1043000274 +:1000C0002404FFFF000020218FBF001C8FB2001806 +:1000D0008FB100148FB000100080102103E00008E1 +:1000E00027BD00208F83001427BDFFD8AFB40020A8 +:1000F000AFB3001CAFB20018AFB10014AFB0001026 +:10010000AFBF0024906200638F91002C2412FFFF88 +:100110003442004092250000A06200638E2200104D +:100120000080982130B0003F105200060360A021EB +:100130002402000D0E0016C5A38200441052005484 +:100140002404FFFF8F8300148E2200188C63007C30 +:1001500010430007026020212402000E0E0016C585 +:10016000A38200442403FFFF104300492404FFFF3F +:1001700024040020120400048F83001490620063A2 +:1001800034420020A06200638F85003410A000205C +:1001900000000000560400048F8200140260202139 +:1001A0000A0017902402000A9683000A9442006015 +:1001B0003042FFFF144300048F8200202404FFFD1F +:1001C0000A0017B7AF82003C3C0208008C42318C19 +:1001D0000045102B14400006026020210000282159 +:1001E0000E001646240600010A0017B70000202161 +:1001F0002402002D0E0016C5A38200442403FFFF35 +:10020000104300232404FFFF0A0017B70000202139 +:10021000160400058F8400148E2300142402FFFFAF +:100220005062001802602021948200602442000184 +:10023000A4820060948200603C0308008C633188D3 +:1002400030427FFF5443000F0260202194820060FF +:100250002403800000431024A48200609082006088 +:1002600090830060304200FF000211C2000210279C +:10027000000211C03063007F00621825A083006077 +:10028000026020210E0015F9240500010000202144 +:100290008FBF00248FB400208FB3001C8FB20018D2 +:1002A0008FB100148FB000100080102103E000080F +:1002B00027BD00288F83001427BDFFE8AFB00010D2 +:1002C000AFBF0014906200638F87002C00808021F4 +:1002D000344200408CE60010A06200633C0308003A +:1002E0008C6331B030C23FFF0043102B1040004EF2 +:1002F0008F8500302402FF8090A3000D004310245E +:10030000304200FF504000490200202100061382C5 +:10031000304800032402000255020044020020215C +:1003200094A2001C8F85001424030023A4A20114AE +:100330008CE60000000616023042003F1043001019 +:100340003C0300838CE300188CA2007C1062000642 +:100350002402000E0E0016C5A38200442403FFFFF2 +:10036000104300382404FFFF8F8300149062006361 +:1003700034420020A06200630A0017FC8F8300242F +:1003800000C31024144300078F83002490A200624E +:100390003042000F34420020A0A20062A38800383F +:1003A0008F8300249062000D3042007FA062000D18 +:1003B0008F83003410600018020020218F840030E9 +:1003C0008C8200100043102B1040000924020018FA +:1003D000020020210E0016C5A38200442403FFFF63 +:1003E000104300182404FFFF0A00182400002021F5 +:1003F0008C820010240500010200202100431023FC +:100400008F830024240600010E001646AC62001003 +:100410000A001824000020210E0015F9240500010F +:100420000A00182400002021020020212402000DCF +:100430008FBF00148FB0001027BD00180A0016C52A +:10044000A38200448FBF00148FB0001000801021E1 +:1004500003E0000827BD001827BDFFC8AFB2002089 +:10046000AFBF0034AFB60030AFB5002CAFB400283A +:10047000AFB30024AFB1001CAFB000188F46012805 +:100480003C0308008C6331A02402FF80AF86004843 +:1004900000C318213065007F03452821006218241D +:1004A0003C02000AAF43002400A2282190A200626F +:1004B00000809021AF850014304200FF000211023D +:1004C000A382003890A200BC304200021440000217 +:1004D00024030034240300308F820014A3830028F7 +:1004E000938300388C4200C0A3800044AF82003C5C +:1004F000240200041062031C8F84003C8E4400041C +:10050000508003198F84003C8E4200103083FFFF1F +:10051000A784003A106002FFAF8200408F8400146D +:100520002403FF809082006300621024304200FFA9 +:10053000144002CF9785003A9383003824020002CA +:1005400030B6FFFF14620005000088219382002866 +:100550002403FFFD0A001B19AF82003C8F82003C80 +:1005600002C2102B144002A18F8400400E0014EC34 +:1005700000000000938300283C040800248477983E +:10058000240200341462002EAF84002C3C0A0800C0 +:100590008D4A77C82402FFFFAFA2001000803821E7 +:1005A0002405002F3C09080025297398240800FF22 +:1005B0002406FFFF90E2000024A3FFFF00062202B2 +:1005C00000C21026304200FF0002108000491021B6 +:1005D0008C420000306500FF24E7000114A8FFF5FD +:1005E0000082302600061027AFA20014AFA2001030 +:1005F0000000282127A7001027A6001400C51023FB +:100600009044000324A2000100A71821304500FFF8 +:100610002CA200041440FFF9A06400008FA2001077 +:100620001142000724020005024020210E0016C5D9 +:10063000A38200442403FFFF104300642404FFFF4F +:100640003C0208009042779C104000098F82001401 +:10065000024020212402000C0E0016C5A382004493 +:100660002403FFFF104300592404FFFF8F8200146E +:10067000A380001C3C0308008C63779C8C440080A2 +:100680003C0200FF3442FFFF006218240083202B4D +:1006900010800008AF83003402402021240200199A +:1006A0000E0016C5A38200442403FFFF1043004739 +:1006B0002404FFFF8F87003C9782003A8F85003427 +:1006C000AF8700200047202310A0003BA784003AFA +:1006D0008F86001430A200030002102390C300BCD8 +:1006E0003050000300B0282100031882307300014D +:1006F0000013108000A228213C0308008C6331A065 +:100700008F8200483084FFFF0085202B004310219A +:1007100010800011244200888F84002C1082000E6B +:100720003C033F013C0208008C42779800431024B0 +:100730003C0325001443000630E500FF8C820000D6 +:10074000ACC200888C8200100A0018E9ACC2009884 +:100750000E001529000030219382001C8F850014A3 +:100760008F830040020238218F82003CA387001C47 +:1007700094A400E4006218218F82003434841000B5 +:10078000AF83004000503021A4A400E41260000EAA +:10079000AF86003C24E20004A382001C94A200E483 +:1007A00024C30004AF83003C34422000A4A200E430 +:1007B0000A001906000020218F820040AF80003C13 +:1007C00000471021AF820040000020212414FFFFC9 +:1007D000109402112403FFFF3C0808008D0877A83D +:1007E0003C0208008C4231B03C03080090637798CB +:1007F00031043FFF0082102B1040001B3067003F88 +:100800003C0208008C4231A88F83004800042180FC +:1008100000621821006418213062007F0342282101 +:100820003C02000C00A228213C020080344200015E +:100830003066007800C230252402FF800062102458 +:10084000AF42002830640007AF4208048F820014D2 +:100850000344202124840940AF460814AF850024B6 +:10086000AF840030AC4301189383003824020003A6 +:10087000146201CF240200012402002610E201D1FB +:1008800028E2002710400013240200322402002234 +:1008900010E201CC28E200231040000824020024CA +:1008A0002402002010E201B82402002110E20147D6 +:1008B000024020210A001AFB2402000B10E201C1B1 +:1008C0002402002510E20010024020210A001AFB39 +:1008D0002402000B10E201AE28E2003310400006B3 +:1008E0002402003F2402003110E2009A024020213D +:1008F0000A001AFB2402000B10E201A5024020218D +:100900000A001AFB2402000B8F90002C3C03080005 +:100910008C6331B08F8500308E0400100000A82158 +:100920008CB3001430823FFF0043102B8CB10020A9 +:100930005040018F0240202190A3000D2402FF802F +:1009400000431024304200FF504001890240202122 +:10095000000413823042000314400185024020212C +:1009600094A3001C8F8200148E040028A443011459 +:100970008CA20010026218231064000302402021A0 +:100980000A00197C2402001F8F82003400621021AB +:100990000262102B104000088F83002402402021A7 +:1009A000240200180E0016C5A382004410540174DE +:1009B0002404FFFF8F8300248F8400348C62001096 +:1009C0000224882100441023AC6200108F8200149E +:1009D000AC7100208C4200680051102B10400009BF +:1009E0008F830030024020212402001D0E0016C516 +:1009F000A38200442403FFFF104301612404FFFF8E +:100A00008F8300308E0200248C6300241043000783 +:100A1000024020212402001C0E0016C5A3820044BF +:100A20002403FFFF104301562404FFFF8F8400249A +:100A30008C82002424420001AC8200241233000482 +:100A40008F8200148C4200685622000E8E02000035 +:100A50008E0200003C030080004310241440000D6F +:100A60002402001A024020210E0016C5A382004471 +:100A70002403FFFF104301422404FFFF0A0019BAB8 +:100A80008E0200143C0300800043102450400003F9 +:100A90008E020014AC8000208E0200142411FFFF8F +:100AA0001051000E3C0308003C0208008C423190BB +:100AB000004310242403001B14400007A3830044B8 +:100AC0000E0016C5024020211051012D2404FFFF05 +:100AD0000A0019CB8E030000A38000448E0300009F +:100AE0003C02000100621024104000123C02008011 +:100AF0000062102414400008024020212402001A41 +:100B00000E0016C5A38200442403FFFF1043011CFE +:100B10002404FFFF02402021020028210E0016E5D8 +:100B2000240600012403FFFF104301152404FFFFE6 +:100B3000241500018F83002402A0302102402021CF +:100B40009462003624050001244200010A001ADFE5 +:100B5000A46200368F90002C3C0308008C6331B0F7 +:100B60008E13001032623FFF0043102B10400089AB +:100B70008F8400302402FF809083000D00431024F6 +:100B8000304200FF104000842402000D0013138245 +:100B900030420003240300011443007F2402000DAF +:100BA0009082000D30420008544000048F820034CF +:100BB000024020210A001A102402002450400004A0 +:100BC0008E03000C024020210A001A102402002784 +:100BD0008C82002054620006024020218E0300080F +:100BE0008C820024506200098E02001402402021F1 +:100BF000240200200E0016C5A38200441054007188 +:100C00002403FFFF0A001A458F8400242411FFFFEC +:100C1000145100048F860014024020210A001A405B +:100C2000240200258E0300188CC2007C1062000391 +:100C30002402000E0A001A40024020218E030024E4 +:100C40008C82002810620003240200210A001A404E +:100C5000024020218E0500288C82002C10A2000367 +:100C60002402001F0A001A40024020218E03002C9B +:100C700014600003240200230A001A4002402021CD +:100C80008CC200680043102B104000032402002691 +:100C90000A001A40024020218C82001400651821AD +:100CA0000043102B104000088F84002402402021B4 +:100CB000240200220E0016C5A382004410510041F8 +:100CC0002403FFFF8F8400242403FFF79082000D8C +:100CD00000431024A082000D8F8600143C030800FE +:100CE0008C6331AC8F82004894C400E08F8500246F +:100CF0000043102130847FFF000420400044102175 +:100D00003043007F034320213C03000E0083202159 +:100D10002403FF8000431024AF42002CA493000062 +:100D20008CA2002824420001ACA200288CA2002C36 +:100D30008E03002C00431021ACA2002C8E02002C4C +:100D4000ACA200308E020014ACA2003494A2003A8F +:100D500024420001A4A2003A94C600E03C0208002C +:100D60008C4231B024C4000130837FFF1462000F35 +:100D700000803021240280000082302430C2FFFF36 +:100D8000000213C2304200FF000210270A001A7E40 +:100D9000000233C02402000D024020210E0016C5BF +:100DA000A38200440A001A84004018218F82001494 +:100DB00002402021240500010E0015F9A44600E0A0 +:100DC000000018210A001B16006088218F90002C5B +:100DD0003C0308008C6331B08E05001030A23FFF49 +:100DE0000043102B104000612402FF808F840030EC +:100DF0009083000D00431024304200FF5040005CFF +:100E0000024020218F8200341040000B0005138225 +:100E10008F8200149763000A944200603042FFFF03 +:100E200014430005000513828F8200202404FFFD77 +:100E30000A001AF3AF82003C304200031440000E57 +:100E40000000000092020002104000058E03002402 +:100E500050600015920300030A001AAF02402021DF +:100E60008C82002450620010920300030240202173 +:100E70000A001AB72402000F9082000D30420008C9 +:100E80005440000992030003024020212402001074 +:100E90000E0016C5A38200442403FFFF1043003850 +:100EA0002404FFFF92030003240200025462000C9A +:100EB000920200038F820034544000099202000322 +:100EC000024020212402002C0E0016C5A3820044FB +:100ED0002403FFFF1043002A2404FFFF92020003B3 +:100EE0000200282102402021384600102CC60001B3 +:100EF0002C4200010E0016E5004630252410FFFFAD +:100F00001050001F2404FFFF8F8300341060001373 +:100F1000024020213C0208008C42318C0043102BFF +:100F200014400007000000000000282124060001F2 +:100F30000E001646000000000A001AF300002021EF +:100F40002402002D0E0016C5A38200441050000C90 +:100F50002404FFFF0A001AF3000020210E0015F9F7 +:100F6000240500010A001AF300002021024020217C +:100F70002402000D0E0016C5A3820044004020216B +:100F80000A001B16008088211514000E00000000C6 +:100F90000E00174C024020210A001B160040882139 +:100FA0000E0016C5A38200440A001B1600408821CB +:100FB00014620017022018212402002314E2000505 +:100FC0002402000B0E0017C0024020210A001B164D +:100FD0000040882102402021A38200440E0016C553 +:100FE0002411FFFF0A001B170220182130A500FF63 +:100FF0000E001529240600019783003A8F82003CD9 +:10100000A780003A00431023AF82003C0220182141 +:101010001220003E9782003A2402FFFD5462003EF7 +:101020008E4300208E4200048F830014005610234C +:10103000AE420004906200633042007FA062006311 +:101040008E4200208F840014A780003A34420002B0 +:10105000AE420020A48000E4908200632403FFBF1E +:1010600000431024A08200630A001B598E43002015 +:101070009082006300621024304200FF1040002381 +:101080009782003A90820088908300BD2485008872 +:101090003042003F2444FFE02C820020A383001C48 +:1010A00010400019AF85002C2402000100821804B2 +:1010B000306200191440000C3C02800034420002EF +:1010C000006210241440000B306200201040000F1A +:1010D0009782003A90A600010240202124050001D9 +:1010E0000A001B5330C60001024020210A001B5297 +:1010F00024050001024020210000282124060001CF +:101100000E001646000000009782003A1440FD04CD +:101110008F8400148E4300203062000410400012BF +:101120008F84003C2402FFFB00621024AE420020AA +:10113000274301808F4201B80440FFFE8F820048A0 +:10114000AC6200008F420124AC6200042402608380 +:10115000A462000824020002A062000B3C021000FE +:10116000AF4201B88F84003C8F8300148FBF0034DE +:101170008FB600308FB5002C8FB400288FB30024B9 +:101180008FB200208FB1001C8FB000182402000124 +:1011900027BD003803E00008AC6400C030A500FFA4 +:1011A0002403000124A900010069102B1040000C49 +:1011B00000004021240A000100A31023004A380443 +:1011C00024630001308200010069302B10400002CE +:1011D000000420420107402554C0FFF800A310235B +:1011E00003E00008010010213C020800244260A432 +:1011F0003C010800AC22738C3C02080024425308D6 +:101200003C010800AC2273902402000627BDFFE0D9 +:101210003C010800A02273943C021EDCAFB200180F +:10122000AFB10014AFBF001CAFB0001034526F411B +:1012300000008821240500080E001B7A02202021CE +:10124000001180803C07080024E773980002160014 +:1012500002071821AC6200000000282124A200012E +:101260003045FFFF8C6200002CA6000804410002FC +:10127000000220400092202614C0FFF8AC64000059 +:10128000020780218E0400000E001B7A2405002036 +:10129000262300013071FFFF2E2301001460FFE5BB +:1012A000AE0200008FBF001C8FB200188FB1001477 +:1012B0008FB0001003E0000827BD002027BDFFD835 +:1012C000AFB3001CAFB20018AFBF0020AFB1001425 +:1012D000AFB000108F5101408F48014800089402C0 +:1012E000324300FF311300FF8F4201B80440FFFE7C +:1012F00027500180AE1100008F420144AE0200046D +:1013000024020002A6120008A202000B240200140C +:10131000AE1300241062002528620015104000085A +:101320002402001524020010106200302402001272 +:10133000106200098FBF00200A001CB58FB3001C8B +:101340001062007024020022106200378FBF00205C +:101350000A001CB58FB3001C3C0208008C4231A06F +:101360002403FF800222102100431024AF420024F6 +:101370003C0208008C4231A0022210213042007F42 +:10138000034218213C02000A00621821166000BCCA +:10139000AF830014906200623042000F344200308C +:1013A000A06200620A001CB48FBF00203C046000F1 +:1013B0008C832C083C02F0033442FFFF00621824A7 +:1013C000AC832C083C0208008C4231A08C832C0892 +:1013D000244200740002108200021480006218256A +:1013E000AC832C080A001CB48FBF00203C0208000C +:1013F0008C4231A02403FF800222102100431024DC +:10140000AF4200243C0208008C4231A03C03000A99 +:10141000022210213042007F03421021004310219C +:101420000A001CB3AF8200143C0208008C4231A0B9 +:101430002405FF800222102100451024AF42002421 +:101440003C0208008C4231A0022210213042007F71 +:10145000034218213C02000A0062182190620063D6 +:1014600000A21024304200FF10400085AF8300141A +:1014700024620088944300123C0208008C4231A888 +:1014800030633FFF00031980022210210043102126 +:101490003043007F03432021004510243C03000C0F +:1014A00000832021AF4200289082000D00A210246A +:1014B000304200FF10400072AF8400249082000D83 +:1014C000304200101440006F8FBF00200E0015C87E +:1014D000000000008F4201B80440FFFE0000000041 +:1014E000AE1100008F420144AE020004240200024B +:1014F000A6120008A202000BAE1300240A001CB4BE +:101500008FBF00202406FF8002261024AF42002057 +:101510003C0208008C4231A031043FFF00042180CE +:101520000222102100461024AF4200243C03080090 +:101530008C6331A83C0208008C4231A03227007F26 +:101540000223182102221021006418213042007F5A +:101550003064007F034228213C02000A0066182400 +:1015600000A22821034420213C02000C00822021FB +:10157000AF4300283C020008034718210062902175 +:10158000AF850014AF8400240E0015C8010080212F +:101590008F4201B80440FFFE8F8200248F84001424 +:1015A000274501809042000DACB10000A4B00006B8 +:1015B000000216000002160300021027000237C2C4 +:1015C00014C00016248200889442001232033FFFA8 +:1015D00030423FFF14430012240260829083006374 +:1015E0002402FF8000431024304200FF5040000CD2 +:1015F00024026082908200623042000F3442004038 +:10160000A082006224026084A4A200082402000DCB +:10161000A0A200050A001C9E3C0227002402608252 +:10162000A4A20008A0A000053C02270000061C00A0 +:101630000062182524020002A0A2000BACA3001037 +:10164000ACA00014ACA00024ACA00028ACA0002CDE +:101650008E42004C8F840024ACA200189083000DB1 +:101660002402FF8000431024304200FF1040000598 +:101670008FBF00209082000D3042007FA082000DBD +:101680008FBF00208FB3001C8FB200188FB10014E1 +:101690008FB000103C02100027BD002803E00008B6 +:1016A000AF4201B80800343008003430080033A8D5 +:1016B000080033E0080034140800343808003438D7 +:1016C00008003438080033180A0001240000000024 +:1016D000000000000000000D747061362E322E33C1 +:1016E00000000000060203010000000000000000EE +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000001000000376 +:10176000000000000000000D0000000D3C02080019 +:1017700024421C003C03080024632094AC40000079 +:101780000043202B1480FFFD244200043C1D080070 +:1017900037BD2FFC03A0F0213C1008002610049058 +:1017A0003C1C0800279C1C000E00015C000000008F +:1017B0000000000D3084FFFF308200078F85001885 +:1017C00010400002248300073064FFF800853021B8 +:1017D00030C41FFF03441821247B4000AF85001C48 +:1017E000AF84001803E00008AF4400843084FFFF9A +:1017F000308200078F8500208F860028104000026D +:10180000248300073064FFF8008520210086182B10 +:1018100014600002AF8500240086202303442821A1 +:1018200034068000AF840020AF44008000A6202151 +:1018300003E00008AF84003827BDFFD8AFB3001C19 +:10184000AFB20018AFB00010AFBF0024AFB400209B +:10185000AFB100143C0860088D1450002418FF7FBD +:101860003C1A8000029898243672380CAD12500051 +:101870008F5100083C07601C3C08600036300001B6 +:10188000AF500008AF800018AF400080AF40008428 +:101890008CE600088D0F08083C0760168CEC0000F1 +:1018A00031EEFFF039CA00103C0DFFFF340B800011 +:1018B0003C030080034B48212D440001018D282466 +:1018C0003C0253533C010800AC230420AF8900388C +:1018D000AF860028AF840010275B400014A20003ED +:1018E00034E37C008CF90004032818218C7F007CF1 +:1018F0008C6500783C0280003C0B08008D6B048CEA +:101900003C0A08008D4A048834520070AF85003CC0 +:10191000AF9F00403C13080026731C440240A021E6 +:101920008E4800008F46000038C30001306400017B +:1019300010800017AF880034028048218D2F0000EE +:101940003C0508008CA5045C3C1808008F1804585E +:1019500001E8102300A280210000C8210202402BD0 +:1019600003198821022838213C010800AC30045CAE +:101970003C010800AC2704588F4E000039CD00010F +:1019800031AC00011580FFED01E04021AF8F003444 +:101990008E5100003C0708008CE7045C3C0D0800F9 +:1019A0008DAD04580228802300F0602100007021D2 +:1019B0000190302B01AE1821006620213C01080067 +:1019C000AC2C045C3C010800AC2404588F46010890 +:1019D0008F47010030C92000AF860000AF87000CA0 +:1019E0001120000A00C040213C1808008F18042C68 +:1019F000270800013C010800AC28042C3C184000DA +:101A0000AF5801380A000196000000009749010410 +:101A100000002821014550213122FFFF0162582199 +:101A20000162F82B015F502130D902003C0108000F +:101A3000AC2B048C3C010800AC2A0488172000154C +:101A400024040F0010E400130000000024080D001F +:101A500010E8023B30CD000611A0FFE93C18400021 +:101A6000936E00002409001031C400F01089027147 +:101A700024020070108202E58F880014250F0001F7 +:101A8000AF8F00143C184000AF5801380A0001968F +:101A900000000000974C01041180FFD93C18400061 +:101AA00030C34000146000A1000000008F460178A0 +:101AB00004C0FFFE8F87003824100800240F0008A0 +:101AC0008CE30008AF500178A74F0140A7400142C6 +:101AD000974E01048F86000031C9FFFF30CD000111 +:101AE00011A002E1012040212531FFFE241800024F +:101AF000A75801463228FFFFA75101483C190800AA +:101B00008F39043C172002D08F8C000C30DF00206E +:101B100017E00002240400092404000130C20C0074 +:101B2000240504005045000134840004A744014A00 +:101B30003C1108008E3104203C1800483C10000184 +:101B40000238182530CF00020070282511E000046B +:101B5000000018213C19010000B9282524030001C8 +:101B600030DF000453E00005AF8300083C0600109E +:101B700000A6282524030001AF830008AF4510000C +:101B80000000000000000000000000000000000055 +:101B90008F83000810600023000000008F451000B4 +:101BA00004A1FFFE000000001060001E0000000005 +:101BB0008F4410003C0C0020008C102410400019B1 +:101BC0008F8E000031CD000211A000160000000031 +:101BD000974F101415E000130000000097591008EB +:101BE0003338FFFF271100060011188200033080F0 +:101BF00000C7282132300001322300031200032CD9 +:101C00008CA200000000000D00C7F821AFE2000028 +:101C10003C0508008CA5043024A600013C01080006 +:101C2000AC2604308F6D00003402FFFFAF8D00043E +:101C30008CEC0000118202A6000020218CED000037 +:101C400031AC01001180028A000000003C02080053 +:101C50008C4204743C0308008C63044C3C1F080055 +:101C60008FFF04703C1808008F1804480048382182 +:101C70000068802100E8282B03E430210208402B73 +:101C80000304882100C57021022878213C01080046 +:101C9000AC30044C3C010800AC2F04483C01080067 +:101CA000AC2704743C010800AC2E04708F8400182B +:101CB0000120302131290007249F000833F91FFF3C +:101CC00003594021AF84001CAF990018251B400028 +:101CD000AF590084112000038F83002024C2000725 +:101CE0003046FFF88F84002800C3282100A4302B41 +:101CF00014C00002AF83002400A428230345602100 +:101D0000340D8000018D10213C0F1000AF850020A4 +:101D1000AF820038AF450080AF4F01788F88001444 +:101D2000250F00010A0001EFAF8F00148F62000839 +:101D30008F670000240500300007760231C300F0F1 +:101D4000106500A7240F0040546FFF4C8F880014CB +:101D50008F4B01780560FFFE0000000030CA0200D2 +:101D600015400003000612820000000D00061282DA +:101D7000304D0003000D4900012D18210003808023 +:101D8000020D402100086080019380218E1F000019 +:101D900017E00002000000000000000D8F6E00043C +:101DA00005C202BD92070006920E000592020004D1 +:101DB0003C090001000E18800070F8218FED00181A +:101DC000277100082448000501A96021000830821D +:101DD000AFEC0018022020210E00059E26050014FD +:101DE000920A00068F7900043C0B7FFF000A2080D6 +:101DF000009178218DF800043566FFFF0326282422 +:101E000003053821ADE70004920E0005920D000491 +:101E1000960C0008000E10800051C8218F2300008E +:101E2000974901043C07FFFF006758243128FFFF52 +:101E3000010DF82103EC50233144FFFF01643025EC +:101E4000AF260000920300072418000110780275E5 +:101E5000240F0003106F0285000000008E050010A3 +:101E60002419000AA7590140A7450142921800040D +:101E70008F860000240F0001A7580144A7400146A7 +:101E80009747010430D100023C050041A7470148B3 +:101E900000001821A74F014A1220000330CB000494 +:101EA0003C0501412403000151600005AF83000897 +:101EB0003C06001000A6282524030001AF8300087B +:101EC000AF4510000000000000000000000000000E +:101ED000000000008F8A000811400004000000008C +:101EE0008F4410000481FFFE000000008F6B000093 +:101EF000920800043C1108008E310444AF8B0004AA +:101F000097590104311800FF3C0E08008DCE0440A3 +:101F10003325FFFF0305382102276021000010212F +:101F2000250F000A31E8FFFF0187482B01C2682115 +:101F300001A9F821311000073C010800AC2C044431 +:101F40003C010800AC3F0440120000038F8C0018D5 +:101F50002506000730C8FFF8010C682131BF1FFFBC +:101F6000AF8C001CAF9F0018AF5F00849744010442 +:101F7000035F80213084FFFF308A00071140000397 +:101F8000261B4000248900073124FFF88F8200209F +:101F90008F850028008220210085702B15C000024B +:101FA000AF820024008520233C0B08008D6B048C3D +:101FB0003C0A08008D4A04880344882134038000C9 +:101FC000022310213C0F1000AF840020AF820038A4 +:101FD000AF440080AF4F01780A0002968F8800144A +:101FE0008F5001780600FFFE30D10200162000035A +:101FF000000612820000000D00061282305F00030E +:10200000001F1900007F302100062080009FC8219A +:1020100000194880013380218E180000130000024F +:10202000000000000000000D8F6C000C058001FB1B +:102030008F870038240E0001AE0E00008CE30008EC +:10204000A20000078F65000400055402314D00FF17 +:1020500025A80005000830822CCB00411560000245 +:10206000A20A00040000000D8F7800043C03FFFF6B +:1020700000E02821330BFFFF256C000B000C1082C1 +:1020800000022080008748218D3F000026040014B4 +:10209000A618000803E3C8240E00059EAD39000011 +:1020A0008F4F01083C11100001F1382410E001AB02 +:1020B00000000000974D01049208000725AAFFECDC +:1020C000350600023144FFFFA2060007960600080D +:1020D0002CC7001354E0000592030007921100077B +:1020E000362F0001A20F00079203000724180001F9 +:1020F000107801C224090003106901D58F880038C7 +:1021000030CBFFFF257100020011788331E400FF1E +:1021100000042880A20F000500A848218D2D000092 +:10212000974A01043C0EFFFF01AEF8243143FFFF44 +:10213000006B1023244CFFFE03ECC825AD390000D2 +:10214000920600053C03FFF63462FFFF30D800FF23 +:102150000018388000F08821922F00143C04FF7F83 +:102160003487FFFF31EE000F01C65821316500FFB3 +:1021700000055080015068218DAC00200148F821F5 +:10218000A20B00060182C824AE0C000CAFF9000CB3 +:10219000920900068E11000C032778240009C080E4 +:1021A0000310702195C60026030828210227202449 +:1021B000AE04000CADCF0020ADC60024ACA60010CC +:1021C0008F8800003C0B08008D6B048C3C0A0800D3 +:1021D0008D4A0488241F001024190002A75F0140C3 +:1021E000A7400142A7400144A7590146974901046D +:1021F00024070001310600022538FFFEA7580148D8 +:102200003C050009A747014A10C00003000018213F +:102210003C05010924030001310C00045180000534 +:10222000AF8300083C08001000A828252403000103 +:10223000AF830008AF451000000000000000000060 +:1022400000000000000000009205000424AE00021F +:1022500031CD0007000D182330620007AE020010D8 +:102260008F90000812000004000000008F4F100043 +:1022700005E1FFFE000000008F7100008F8E001846 +:102280003C0308008C630444AF91000497450104AB +:1022900025CF001031E61FFF30A2FFFFAF8E001CDC +:1022A000AF860018AF4600842449FFFE3C0C0800AE +:1022B0008D8C0440974D010401208021000947C303 +:1022C0000070C02131A9FFFF0310F82B0188C8213D +:1022D000033F202103463821313100073C0108002B +:1022E000AC3804443C010800AC2404401220000334 +:1022F00024FB40002527000730E9FFF88F860020E7 +:102300008F8400280126382100E4C02B170000022A +:10231000AF86002400E438230347202134198000CD +:10232000009910213C0F1000AF870020AF820038C9 +:10233000AF470080AF4F01780A0002968F880014E3 +:102340009747010410E0FDAE3C1840008F5801781B +:102350000700FFFE30C5400010A000033C1F00082E +:102360000000000D3C1F0008AF5F01402410080072 +:102370008F860000AF5001789744010430D90001E6 +:10238000132000ED3086FFFF24CCFFFE240D000259 +:10239000A74D0146A74C01488F9100182408000D55 +:1023A000A748014A8F630000262F000831E21FFF73 +:1023B0000342702130C90007AF830004AF91001CB5 +:1023C000AF82001800C03821AF4200841120000302 +:1023D00025DB400024D800073307FFF88F85002055 +:1023E0008F84002800E5302100C4382B14E000025F +:1023F000AF85002400C430238F8400140346F821E5 +:10240000340C8000AF86002003EC8021AF460080B2 +:10241000249900013C0610003C184000AF460178AA +:10242000AF900038AF990014AF5801380A000196F8 +:10243000000000008F630000975101043067FFFF28 +:102440003228FFFF8F4F017805E0FFFE30EC0007D8 +:10245000000CF82333F0000724F9FFFE2404000ADF +:10246000A7440140A7500142A7590144A740014693 +:10247000A74801488F45010830B800201700000226 +:10248000240300092403000130CD0002A743014AC0 +:102490003C04004111A00003000018213C0401414C +:1024A0002403000130C9000451200005AF83000857 +:1024B0003C0600100086202524030001AF8300089D +:1024C000AF44100000000000000000000000000009 +:1024D000000000008F8E000811C000040000000002 +:1024E0008F4210000441FFFE000000008F7F0000BB +:1024F000276400088F91003CAF9F0004948500087A +:102500009490000A9499000C30AFFFFF0010C400B3 +:102510003323FFFF11F100A6030320253C0E080022 +:102520008DCE04443C0C08008D8C044000E88821CA +:102530002626FFFE01C628210000682100A6F82BF0 +:10254000018D2021009F80213C010800AC2504441E +:102550003C010800AC30044024E200083042FFFF98 +:102560003047000710E000038F830018244F000756 +:1025700031E2FFF83106FFFF30C800070043802139 +:1025800032191FFF0359C021AF83001CAF990018F7 +:10259000271B4000AF590084110000038F8C0020DE +:1025A00024C5000730A6FFF88F84002800CC28211E +:1025B00000A4F82B17E00002AF8C002400A428230D +:1025C000AF850020AF4500803C0408008C840434B3 +:1025D00003454821340E8000012E6821108000053B +:1025E000AF8D0038939100172406000E12260011BB +:1025F0002407043F3C021000AF4201788F8800148A +:10260000250F00010A0001EFAF8F00140E0005C472 +:1026100000E020218F8800143C0B08008D6B048C97 +:102620003C0A08008D4A0488250F00010A0001EFCA +:10263000AF8F00143C021000A7470148AF42017859 +:102640000A0004CE8F88001424040F001184003D7A +:1026500030CE002015C0000224030009240300012D +:102660000A00021AA743014A0A00020DA7400146C8 +:1026700094EF000894F1000A94F0000C8F8C003C59 +:10268000001174003207FFFF31EDFFFF11AC00377E +:1026900001C720253C1808008F1804443C0F08008F +:1026A0008DEF0440000080210308682101A8382B29 +:1026B00001F0702101C760213C010800AC2D0444E9 +:1026C0003C010800AC2C04400A00027A8F840018F8 +:1026D0003C0208008C42047C3C0308008C630454D8 +:1026E0003C1F08008FFF04783C1808008F18045026 +:1026F000004838210068802100E8282B03E43021BD +:102700000208402B0304882100C57021022878218B +:102710003C010800AC3004543C010800AC2F0450CC +:102720003C010800AC27047C3C010800AC2E047876 +:102730000A00027A8F840018A74001460A00043577 +:102740008F91001830CD002015A0FFC52403000D87 +:10275000240300050A00021AA743014A974E010408 +:1027600025C5FFF00A00038130A4FFFF8F980040C9 +:102770001498FFC8000010213C0508008CA5046CCB +:102780003C1F08008FFF046800A8C8210328302BD5 +:1027900003E22021008640213C010800AC39046C92 +:1027A0003C010800AC2804680A00027A8F840018F3 +:1027B0008F8C0040148CFF5900E8C8213C18080099 +:1027C0008F18046C3C1108008E3104682723FFFE2B +:1027D00003034821000010210123302B0222702125 +:1027E00001C668213C010800AC29046C3C010800CA +:1027F000AC2D04680A0004A524E200088F88003884 +:102800003C03FFFF8D02000C0043F82403E4C825BD +:10281000AD19000C0A00038F30CBFFFF0A0003C381 +:10282000AE000000974A0104920400048E26000CBA +:10283000014458212579FFF200C7C0243325FFFF4A +:1028400003053825AE27000C0A0002E68E050010AD +:102850003C0DFFFF8D0A0010014D582401646025D6 +:10286000AD0C00100A00038F30CBFFFF974301042B +:10287000920E00048E290010006E1021244DFFEEF0 +:102880000127602431A8FFFF0188F825AE3F001022 +:102890000A0002E68E0500108E0F000CAE0000004C +:1028A00000078880023028210A0002B8ACAF00205F +:1028B0001460000D3058FFFF3C04FFFF0044682403 +:1028C00001A47026000E602B000D102B004CF82484 +:1028D00013E00002000000000000000D8CAF0000BB +:1028E0000A00025001E410253B03FFFF0003882B80 +:1028F0000018802B0211202410800002000000002C +:102900000000000D8CB900000A0002503722FFFFC2 +:102910003084FFFF30A5FFFF108000070000182162 +:10292000308200011040000200042042006518219E +:102930001480FFFB0005284003E000080060102120 +:1029400010C00007000000008CA2000024C6FFFF9A +:1029500024A50004AC82000014C0FFFB2484000402 +:1029600003E000080000000010A0000824A3FFFFFF +:10297000AC86000000000000000000002402FFFF01 +:102980002463FFFF1462FFFA2484000403E00008BC +:1029900000000000308EFFFF30D8FFFF00057C00F4 +:1029A00001F8602539CDFFFF01AC5021014C582BB7 +:1029B000014B4821000944023127FFFF00E8302184 +:1029C0000006240230C5FFFF00A418213862FFFF73 +:1029D00003E000083042FFFF3C0C08008D8C0484AB +:1029E000240BFF8027BDFFD001845021014B4824D8 +:1029F000AF4900203C0808008D080484AFB20020D5 +:102A0000AFB00018AFBF0028AFB30024AFB1001CB7 +:102A1000936600040104382130E4007F009A1021FD +:102A20003C0300080043902130C500200360802152 +:102A30003C080111277B000814A000022646007004 +:102A40002646006C9213000497510104920F000473 +:102A50003267000F322EFFFF31ED004001C72823FF +:102A600011A0000500004821925900BC3338000431 +:102A70001700009000000000924300BC307F00046B +:102A800013E0000F0000000010A0000D0000000087 +:102A9000960E0002240AFF8000A7602125CDFFFECC +:102AA000A74D1016920B0004014B2024308200FF2A +:102AB00010400085010C40253C0F0400010F40250B +:102AC0008F5301780660FFFE2404000AA7440140EA +:102AD000960D00022404000931AC0007000C5823B5 +:102AE000316A0007A74A0142960200022443FFFE12 +:102AF000A7430144A7400146975F0104A75F01482F +:102B00008F590108333800205300000124040001CC +:102B1000920F000431EE001015C000023483001043 +:102B200000801821A743014A0000000000000000B7 +:102B30000000000000000000AF481000000000008E +:102B40000000000000000000000000008F51100095 +:102B50000621FFFE3113FFFF12600003000000009A +:102B60008F481018ACC8000096030006307FFFFFA6 +:102B700027F900020019988200138880023B302157 +:102B80008CD800001520005700183402920300046E +:102B90002405FF8000A3F82433F100FF1220002C4D +:102BA00000000000924700BC30F2000212400028F2 +:102BB00000000000974B100C2562FFFEA742101684 +:102BC000000000003C0A040035490030AF49100005 +:102BD00000000000000000000000000000000000F5 +:102BE0008F4C10000581FFFE000000009749100C7B +:102BF0008F51101C00C020213127FFFF24F200302C +:102C0000001218820003288000BBF8213226FFFF43 +:102C1000AFF100000E0005B300112C020013C880B4 +:102C2000033B98218E78000000027400AFB80010BA +:102C30008FA80010310FFFFFAFAF00108FA400105E +:102C400001C46825AFAD00108FA60010AE6600006D +:102C500097730008976D000A9766000C8F8A003CF6 +:102C6000000D5C0030CCFFFF3262FFFF104A0036DF +:102C7000016C2025960600023C10100024D30008A9 +:102C80000E00013B3264FFFF974C01040E00014926 +:102C90003184FFFFAF5001788FBF00288FB300242D +:102CA0008FB200208FB1001C8FB0001803E0000825 +:102CB00027BD003010A0FF700000000024A5FFFC1D +:102CC0000A0005EC240900048CD10000AF51101853 +:102CD0008F5301780660FF7A2404000A0A00060177 +:102CE0000000000000A7C8218F8800388F4E101CFC +:102CF0000019C0820018788001E82021AC8E000005 +:102D0000000E2C0200C020210E0005B331C6FFFFCB +:102D1000023B28218CAD000000025400004030210D +:102D2000AFAD00108FAC0010318BFFFFAFAB0010C8 +:102D30008FA2001001424825AFA900108FA70010F4 +:102D40000A000631ACA700008F8F0040148FFFC926 +:102D50000000000097420104960B00023C050800A9 +:102D60008CA5046C3049FFFF316AFFFF3C1108005D +:102D70008E310468012A382124F2FFFE00B240217E +:102D80000012FFC30112C82B023FC02103192021EA +:102D90003C010800AC28046C3C010800AC24046829 +:102DA0000A00066B0000000000A4102B1040000970 +:102DB000240300010005284000A4102B04A00003F8 +:102DC000000318405440FFFC000528401060000735 +:102DD000000000000085302B14C0000200031842E0 +:102DE000008520231460FFFB0005284203E0000853 +:102DF000008010218F85002C27BDFFE800053027BB +:102E00002CC300012CA400020083102510400003F5 +:102E1000AFBF00102405007FAF85002C00052827D8 +:102E200030A5FFFF0E000592240426F58F830030A5 +:102E3000240402BD004030210083382B10E000093B +:102E400024050001000420400083102B04800003AF +:102E5000000528405440FFFC0004204010A000085A +:102E600000C350210064402B1500000200052842D9 +:102E70000064182314A0FFFB0004204200C350216B +:102E80008FBF0010000A4C02312200FF27BD00183E +:102E9000AF8A002C03E00008AF8900300A00002A46 +:102EA00000000000000000000000000D7478703683 +:102EB0002E322E3300000000060203000000000046 +:102EC000000001360000EA60000000000000000081 +:102ED00000000000000000000000000000000000F2 +:102EE00000000000000000000000000000000000E2 +:102EF00000000000000000000000000000000016BC +:102F000000000000000000000000000000000000C1 +:102F100000000000000000000000000000000000B1 +:102F200000000000000000000000000000000000A1 +:102F3000000000000000138800000000000005DC15 +:102F4000000000000000000010000003000000006E +:102F50000000000D0000000D3C02080024423C204F +:102F60003C03080024633DD4AC4000000043202B08 +:102F70001480FFFD244200043C1D080037BD7FFC87 +:102F800003A0F0213C100800261000A83C1C0800FB +:102F9000279C3C200E0002BA000000000000000D3B +:102FA0008F8300383C088000350700708CE50000F6 +:102FB000008330253C02900000C22025AF85003000 +:102FC000AF4400208F4900200520FFFE3C03800015 +:102FD000346200708C4500008F8600303C19080078 +:102FE0008F39007C3C0E08008DCE007800A620238F +:102FF00003245821000078210164682B01CF60214F +:10300000018D50213C010800AC2B007C3C010800E4 +:10301000AC2A007803E00008000000000A0000412C +:10302000240400018F8400383C05800034A2000194 +:103030000082182503E00008AF43002003E00008E9 +:10304000000010213084FFFF30A5FFFF1080000733 +:1030500000001821308200011040000200042042CC +:10306000006518211480FFFB0005284003E00008DC +:103070000060102110C00007000000008CA20000BA +:1030800024C6FFFF24A50004AC82000014C0FFFB8F +:103090002484000403E000080000000010A00008E1 +:1030A00024A3FFFFAC860000000000000000000029 +:1030B0002402FFFF2463FFFF1462FFFA248400044C +:1030C00003E0000800000000308AFFFF93A800130F +:1030D000A74A014497490E1630C600FF3C02100073 +:1030E000A7490146AF450148A3460152A748015AE6 +:1030F000AF4701608FA400188FA30014A7440158A4 +:10310000AF43015403E00008AF42017803E0000838 +:10311000000000003C038000346200708C49000015 +:103120008F8800002484000727BDFFF83084FFF853 +:10313000AF890030974D008A31ACFFFFAFAC000083 +:103140008FAB0000016850232547FFFF30E61FFFCB +:1031500000C4282B14A0FFF73C0C8000358B0070B6 +:103160008D6A00003C0708008CE700843C060800DC +:103170008CC6008000081082014918230002788064 +:1031800000E370210000202101C3C82B00C4C0212E +:1031900001FA4021031948212502400027BD0008FB +:1031A0003C010800AC2E00843C010800AC290080E2 +:1031B00003E00008000000008F8200002486000762 +:1031C00030C5FFF800A2182130641FFF03E000089B +:1031D000AF8400008F8700388F8A004027BDFFB87A +:1031E0008F860044AFB60040AFBF0044AFB5003C8F +:1031F000AFB40038AFB30034AFB20030AFB1002C81 +:10320000AFB000288F4501048D4900ACAF47008066 +:103210008CC8002000A938230000B021AF480E1050 +:103220008F440E1000004821AF440E148CC20024BD +:10323000AF420E188F430E18AF430E1C10E001254D +:103240002D230001936B0008116000D400000000E2 +:10325000976E001031CDFFFF00ED602B158000CF81 +:103260000000000097700010320FFFFFAF4F0E00FC +:103270008F520000325100081220FFFD00000000B4 +:1032800097540E088F460E043285FFFF30B30001BD +:1032900012600132000000000000000D30B8A040B4 +:1032A00024150040131500C030A9A0001120012DE5 +:1032B00000000000937F000813E0000800000000F9 +:1032C00097630010306BFFFF00CB402B1100000311 +:1032D00030AC00401180012300000000A785003CB5 +:1032E000AF8600349366000800E02821AFA70020D5 +:1032F00014C0012427B30020AF60000C9782003C6B +:103300003047400014E00002240300162403000E9E +:1033100024194007A363000AAF790014938A003E82 +:103320008F740014315800070018AA4002959025A8 +:10333000AF7200149784003C8F700014309100101D +:1033400002117825AF6F0014978E003C31CD000834 +:1033500011A00147000028218F6700143C021000D3 +:103360003C0C810000E22825AF65001497460E0A48 +:103370002408000E3405FFFC30C3FFFF006C582505 +:10338000AF6B0004A3680002937F000A27E90004E2 +:10339000A369000A9786003C9363000A30CC1F00A3 +:1033A000000C598301634021251F0028A37F0009D9 +:1033B00097490E0CA769001093790009272A00028B +:1033C000315800070018A82332B10007A371000B81 +:1033D00093740009976400108F910034978F003C1C +:1033E000329200FF024480210205702131ED00403D +:1033F00011A0000531C4FFFF0091282B3C12800072 +:1034000010A000140000A0210224382B14E0011B9E +:103410008FA500208F4D0E14AF4D0E108F420E1C45 +:10342000AF420E18AF440E008F4F000031EE00087F +:1034300011C0FFFD0000000097540E080080882195 +:1034400000009021A794003C8F500E04241400012A +:10345000AF900034976400103095FFFF8E68000035 +:103460000111F82317E00009AE7F00008F650014FA +:103470008F8B004434A60040AF6600148F4C0E10B2 +:10348000AD6C00208F430E18AD63002493670008D5 +:1034900014E000D2000000000E00009E2404001082 +:1034A0008F8900483C08320000402821312600FF67 +:1034B0000006FC0003E8502525390001AF990048BB +:1034C000AC4A0000937800099370000A330400FFAF +:1034D00000047400320F00FF01CF6825AC4D0004DA +:1034E0008F820048064000EAACA20008ACA0000CA5 +:1034F0009783003C306B0008156000022628000608 +:1035000026280002974E0E148F450E1C8F6700046C +:10351000936D000231C4FFFF31A200FFAFA2001083 +:103520008F6C0014AFA800180E00008BAFAC001415 +:10353000240400100E0000C7000000008E7200007E +:1035400016400005000000008F6400142405FFBF32 +:1035500000859824AF7300148F79000C033538214F +:10356000AF67000C9375000816A00008000000006B +:1035700012800006000000008F7F00143C0BEFFF5C +:103580003568FFFE03E84824AF690014A3740008FF +:103590008FA500200A00024602202021AF470E001E +:1035A0000A0000F5000000008F5901780720FFFE97 +:1035B000241F08008F840000AF5F0178974B008ABA +:1035C000316AFFFF014448232528FFFF31021FFF16 +:1035D0002C4300081460FFF9000000008F8E0048A3 +:1035E0008F8D003800C048210344202125C60001EA +:1035F000240C0F00AF86004800E9382324864000E1 +:1036000031CA00FF11AC0005240800019391003E6F +:103610003230000700107A4035E80001000AAC00A3 +:103620003C18010002B8A025AC9440008F930048DC +:1036300030B2003630A40008ACD3000410800097EC +:1036400001123025974E0E0A8F8D00003C0281003A +:1036500031CCFFFF25AB0008018240253C03100060 +:1036600031651FFF25390006241F000EAF48016099 +:1036700000C33025A75F015AAF850000A759015844 +:1036800014E0000A8F93003824120F0052720002D7 +:103690002416000134C600408F580E108F94004449 +:1036A000AE9800208F550E18AE9500248F450E144D +:1036B000AF4501448F590E1CAF590148A34A01522E +:1036C0003C0A1000AF460154AF4A017814E0FEDD19 +:1036D0002D2300010076A025128000178FBF004423 +:1036E0008F84003824160F0010960084000000001C +:1036F0008F45017804A0FFFE24150F001095006E81 +:10370000000000008F470E14240202403C1F1000EE +:10371000AF4701448F440E1CAF440148A3400152FF +:10372000A740015AAF400160A7400158AF42015481 +:10373000AF5F01788FBF00448FB600408FB5003C6B +:103740008FB400388FB300348FB200308FB1002CAB +:103750008FB0002803E0000827BD004814C0FED049 +:1037600030B8A0408F420E148F84004400004821DE +:10377000AC8200208F510E1CAC9100240A00020E76 +:103780002D2300018F910034978A003C3C12800069 +:103790000220A821315800401700FF300000A0216E +:1037A000976900108F9200343139FFFF13320035D2 +:1037B00000002021008048211480FEA000A03821B4 +:1037C0008F420E148F840044AC8200208F510E1C57 +:1037D000AC9100240A00020E2D230001936A000917 +:1037E0009378000B315000FF330F00FF020F702160 +:1037F00025C2000A3050FFFF0E00009E020020216B +:103800008F8600483C1F410024CD0001AF8D004849 +:10381000936C000930C600FF00064400318300FFAE +:10382000246B0002010B4825013FC825AC5900005C +:103830008F67000C97440E1400F22825AC45000455 +:103840008F450E1C8F670004936A00023084FFFFCF +:10385000315800FFAFB800108F6F0014AFB10018DF +:103860000E00008BAFAF00140A0001A60200202159 +:10387000AF6000040A00013EA36000020A00024695 +:1038800000002021000090210A0001702414000192 +:103890003C1280000A000195ACB2000C8F91000030 +:1038A00025240002A744015826300008320F1FFFCC +:1038B0000A0001F9AF8F0000AF40014C1120002C2D +:1038C000000000008F590E10AF5901448F430E18AD +:1038D000240200403C1F1000AF430148A3400152A6 +:1038E000A740015AAF400160A7400158AF420154C0 +:1038F000AF5F01780A0002278FBF00441120000645 +:103900000000000097460E0830CC004015800002F1 +:10391000000000000000000D8F4D017805A0FFFEA3 +:103920000000000097530E103C120500240E2000EA +:10393000326AFFFF0152C025AF58014C8F4F0E1461 +:103940003C021000AF4F01448F500E1CAF50014895 +:10395000A34001528F840038A740015AAF40016054 +:10396000A7400158AF4E01540A000215AF4201783A +:103970008F490E14AF4901448F430E1C0A00028E7A +:10398000240200403C0E20FF27BDFFE03C1A8000CF +:103990003C0F800835CDFFFDAFBF001CAFB2001853 +:1039A000AFB10014AFB00010AF8F0040AF4D0E00AC +:1039B0000000000000000000000000000000000007 +:1039C000000000003C0C00FF358BFFFDAF4B0E00EC +:1039D0003C0660048CC95000240AFF7F3C11600043 +:1039E000012A40243507380CACC750008E24043817 +:1039F00024050009AF4500083083FFFF38622F71AE +:103A00002450C0B3AF8000480E000068AF800000B3 +:103A100052000001AE20442C0E0004353C11800001 +:103A20000E000ED9363000708F8A00403C1208001C +:103A300026523C88020088218E0800008F5F00001B +:103A40003BF900013338000113000017AF88003044 +:103A5000022048218D2700003C0F08008DEF006CEC +:103A60003C0C08008D8C006800E8C02301F8282178 +:103A70000000682100B8302B018D582101664021DB +:103A80003C010800AC25006C3C010800AC28006833 +:103A90008F44000038830001306200011440FFEDC4 +:103AA00000E04021AF8700308E0C00003C0508008C +:103AB0008CA5006C3C0408008C84006801883023CD +:103AC00000A638210000102100E6402B00821821BA +:103AD0000068F8213C010800AC27006C3C0108009C +:103AE000AC3F00688F49010025590088AF99004418 +:103AF000AF890038AF4900208E070000AF87003043 +:103B00008F4D017805A0FFFE000000008E0600002A +:103B10003C0B08008D6B00743C0408008C84007022 +:103B200000C728230165F8210000102103E5402B80 +:103B30000082382100E8C821240908003C0108005F +:103B4000AC3F00743C010800AC390070AF4901780B +:103B500093580108A398003E938F003E31EE000178 +:103B600015C000158F830038240E0D00106E00194B +:103B7000240F0F00106F001D00000000915900007D +:103B800024180050332900FF113800043C1F400066 +:103B9000AF5F01380A0002E7000000000E00090EC6 +:103BA000000000008F8A00403C1F4000AF5F0138DA +:103BB0000A0002E700000000938D003E31AC0006D1 +:103BC000000C51000E0000CE0152D8210A00034320 +:103BD0008F8A00403C1B0800277B3D080E0000CE6A +:103BE000000000000A0003438F8A00403C1B0800CD +:103BF000277B3D280E0000CE000000000A00034392 +:103C00008F8A004090AA00018FAB00108CAC00108E +:103C10003C0300FF8D680004AD6C00208CAD0014E7 +:103C200000E060213462FFFFAD6D00248CA7001816 +:103C30003C09FF000109C024AD6700288CAE001CC0 +:103C40000182C82403197825AD6F0004AD6E002CE5 +:103C50008CAD0008314A00FFAD6D001C94A9000234 +:103C60003128FFFFAD68001090A70000A56000029A +:103C7000A1600004A167000090A30002306200FF71 +:103C80000002198210600005240500011065000E75 +:103C90000000000003E00008A16A00018CD80028A1 +:103CA000354A0080AD7800188CCF0014AD6F001439 +:103CB0008CCE0030AD6E00088CC4002CA16A0001CF +:103CC00003E00008AD64000C8CCD001CAD6D001845 +:103CD0008CC90014AD6900148CC80024AD680008BC +:103CE0008CC70020AD67000C8CC200148C8300646C +:103CF0000043C82B13200007000000008CC20014F2 +:103D0000144CFFE400000000354A008003E0000886 +:103D1000A16A00018C8200640A000399000000007F +:103D200090AA000027BDFFF88FA9001CA3AA0000DD +:103D30008FAE00003C0FFF808FA8001835E2FFFF18 +:103D40008CCD002C01C26024AFAC0000A120000487 +:103D500000E06021A7A000028FB800008D270004BA +:103D60000188182100A0582100C05021006D28268C +:103D70003C06FF7F3C0F00FF2CAD000135EEFFFF3E +:103D800034D9FFFF3C02FF0003193024000D1DC091 +:103D9000010EC82400E2C02400C370250319782551 +:103DA000AD2E0000AD2F00048D450024AFAE000005 +:103DB000AD2500088D4D00202405FFFFAD2D000C22 +:103DC000956800023107FFFFAD27001091660018CB +:103DD00030C200FF000219C2506000018D4500345E +:103DE000AD2500148D67000827BD0008AD27001C15 +:103DF0008C8B00CCAD2C0028AD20002CAD2B0024EA +:103E0000AD20001803E00008AD20002027BDFFE032 +:103E1000AFB20018AFB10014AFB00010AFBF001CBC +:103E20009098000000C088213C0D00FF330F007FF8 +:103E3000A0CF0000908E000135ACFFFF3C0AFF00D0 +:103E4000A0CE000194A6001EA22000048CAB00149A +:103E50008E29000400A08021016C2824012A40241E +:103E60000080902101052025A6260002AE24000432 +:103E700026050020262400080E00007624060002F5 +:103E800092470000260500282624001400071E0083 +:103E90000003160324060004044000032403FFFF6C +:103EA000965900023323FFFF0E000076AE23001068 +:103EB000262400248FBF001C8FB200188FB100147D +:103EC0008FB0001024050003000030210A0000809C +:103ED00027BD002027BDFFD8AFB1001CAFB0001830 +:103EE000AFBF002090A80000240200018FB0003C6A +:103EF0003103003F00808821106200148FAA00382F +:103F0000240B0005506B0016AFAA001000A0202162 +:103F100000C028210E0003DC02003021922400BCE6 +:103F2000308300021060000326060030ACC00000A1 +:103F300024C600048FBF00208FB1001C8FB0001872 +:103F400000C0102103E0000827BD002801403821EF +:103F50000E00035AAFB000100A0004200000000059 +:103F60000E0003A1AFB000140A00042000000000FE +:103F70003C02000A034218213C04080024843D6CE2 +:103F80002405001A000030210A000080AF8300548D +:103F90003C038000346200708C48000000A058216F +:103FA00000C04821308A00FFAF8800308F4401787C +:103FB0000480FFFE3C0C8000358600708CC500003C +:103FC0003C0308008C6300743C1808008F180070D4 +:103FD00000A82023006468210000C82101A4782BD8 +:103FE0000319702101CF60213C010800AC2D007441 +:103FF0003C010800AC2C00708F480E14AF480144FF +:10400000AF47014CA34A0152A74B01589346010800 +:1040100030C5000854A0000135291000934B090059 +:1040200024070050316A00FF11470007000000001C +:104030008F450E1CAF450148AF4901543C091000A3 +:1040400003E00008AF490178934D010831A800084A +:104050001100001000000000934F010831EE001025 +:1040600051C00001352900083C04080090843DD06F +:10407000A34401508F4309A4AF4301488F4209A0D4 +:10408000AF420144AF4901543C09100003E000086D +:10409000AF4901783C1908008F393D8C333800084E +:1040A0005700FFF1352900080A00047300000000E2 +:1040B00024070040AF470814AF4008108F4209445E +:1040C0008F4309508F4409548F45095C8F46094C32 +:1040D000AF820064AF830050AF84004CAF85005CBA +:1040E00003E00008AF8600609346010930C5007FF9 +:1040F000000518C0000521400083102103E00008DE +:10410000244200883C09080091293D9124A800021E +:104110003C05110000093C0000E8302500C51825C9 +:1041200024820008AC83000003E00008AC80000497 +:104130009347010B8F4A002C974F09083C18000E3B +:104140000358482131EEFFFF000E41C0AF48002C5C +:1041500097430908952C001A008040212403000190 +:10416000318BFFFFAC8B00008D2D001C00A058216F +:1041700000C06021AC8D00048D24002030E7004099 +:10418000AD04000891220019304400031083004858 +:104190002885000214A00062240600021086005642 +:1041A00024190003109900660000000010E0003A96 +:1041B000000000003C07080094E73D8624E200016F +:1041C000934F0934934709219525002A31EE00FFCA +:1041D000000E488230ED00FF978700580009360036 +:1041E000000D1C003044FFFF00C310250044C02513 +:1041F00000A778213C19400003197025000F4C00DE +:10420000AD090004AD0E0000934D09203C030006EB +:1042100025090014000D360000C32025AD04000858 +:104220008F59092C24E5000130A27FFFAD19000C45 +:104230008F580930A782005825020028AD180010B9 +:104240008F4F0938AD0F0014AD2B00048F4E09407D +:10425000AD2E0008934D09373C05080090A53D9010 +:104260008F4409488F46094031A700FF00EC182110 +:10427000008678230003C7000005CC0003196025E1 +:1042800031E8FFFC01885825AD2B000CAD20001053 +:1042900003E00008AF4A002C3C0D080095AD3D86B8 +:1042A0003C0E080095CE3D800A0004C901AE1021E5 +:1042B0003C05080094A53D8A3C06080094C63D8054 +:1042C0003C18080097183D7C952E002400A6782104 +:1042D00001F86823000E240025A2FFF200821825B1 +:1042E00024190800AD03000CAD190014AD00001036 +:1042F0000A0004C4250800189526002495250028E6 +:104300000006C40000057C00370E810035ED080072 +:10431000AD0E000CAD0D00100A0004C425080014F9 +:104320001480FFA200000000952400240004140063 +:1043300034430800AD03000C0A0004C42508001033 +:104340003C03080094633D8A3C05080094A53D8029 +:104350003C06080094C63D7C953900249538002819 +:10436000006520210086782300196C000018740075 +:1043700025E2FFEE01C2202535A3810024190800A3 +:10438000AD03000CAD040010AD190018AD00001411 +:104390000A0004C42508001C03E00008240201F4FC +:1043A00027BDFFE8AFB00010AFBF00140E000060E3 +:1043B0000080802124050040AF4508148F83005001 +:1043C0008F84004C8F85005C0070182100641023DE +:1043D00018400004AF830050AF6300548F66005450 +:1043E000AF86004C1200000C000000008F440074E7 +:1043F000936800813409FA002D07000710E00005DA +:1044000000891021936C0081240B01F4018B50046E +:1044100001441021AF62000C8F4E095C01C5682376 +:1044200019A000048FBF00148F4F095CAF8F005C90 +:104430008FBF00148FB000100A00006227BD001863 +:104440008F8400648F8300508F82004CAF640044DF +:10445000AF63005003E00008AF6200543C038000EB +:10446000346200708C43000027BDFFF8308700FFE6 +:1044700030A900FF30C800FFAF8300308F440178BF +:104480000480FFFE3C028000345900708F38000029 +:10449000A3A700033C0708008CE700748FAC000062 +:1044A0003C0608008CC60070030378233C0E7FFF97 +:1044B00000EFC82135CDFFFF00005021018D2824D9 +:1044C00000CA1821000847C0032F202B00A8102580 +:1044D0000064C021AFA200003C010800AC390074A8 +:1044E0003C010800AC380070934F010AA3A0000201 +:1044F0003C0E80FFA3AF00018FAC0000312B007F8A +:1045000035CDFFFF018D4824000B5600012A4025C0 +:10451000240730002406FF803C05100027BD00085A +:10452000AF48014CAF470154A7400158A346015280 +:1045300003E00008AF45017827BDFFE8AFBF0014D6 +:10454000AFB000108F6500743C068000309000FF13 +:1045500000A620250E000060AF6400749363000580 +:10456000346200080E000062A362000502002021F0 +:104570008FBF00148FB00010240500052406000131 +:104580000A00057027BD001827BDFFE03C0380002E +:10459000AFB00010AFBF0018AFB1001434620070AC +:1045A0008C470000309000FF30A800FFAF8700303C +:1045B0008F4401780480FFFE3C18800037110070A2 +:1045C0008E2F00003C0D08008DAD00743C0A0800E1 +:1045D0008D4A007001E7702301AE282100005821A8 +:1045E00000AE302B014B4821012638213C01080048 +:1045F000AC250074000088213C010800AC27007045 +:104600001100000F000000008F6200742619FFFFE8 +:104610003208007F0002FE0233E5007F150000062D +:10462000332200FF2407FF800207202624A3FFFF78 +:1046300000838025320200FF0040802124111008F1 +:104640000E000060000000008F49081831250004AA +:1046500014A0FFFD3218007F001878C000187140C8 +:1046600001CF682125AC0088AF4C0818274A098083 +:104670008D4B0020AF4B01448D460024AF460148CE +:10468000A35001500E000062A740015802201021E3 +:104690008FBF00188FB100148FB0001003E0000826 +:1046A00027BD002027BDFFE8308400FFAFBF00100A +:1046B0000E0005BB30A500FF8F8300508FBF001098 +:1046C000344500402404FF903C02100027BD001830 +:1046D000AF43014CA3440152AF45015403E000082D +:1046E000AF4201789343093E306200081040000D4C +:1046F0003C0901013528080AAC8800008F47007486 +:10470000AC8700043C06080090C63D9030C5001000 +:1047100050A00006AC8000088F6A0060AC8A0008D8 +:104720002484000C03E00008008010210A00062207 +:104730002484000C27BDFFE8AFBF0014AFB0001009 +:104740009346093F00A050210005288000853823AA +:1047500030C200FF240300063C09080095293D866D +:1047600024E8FFD824050004104300372406000283 +:104770009750093C3C0F020400063400320EFFFF44 +:1047800001CF6825AC8D0000934C093E318B002091 +:104790001160000800000000934309363C02010349 +:1047A000345F0300307900FF033FC0252405000873 +:1047B000AC98000493430934935909210005F88209 +:1047C000306200FF0002C082332F00FF00186E002D +:1047D000000F740001AE6025018920253C094000CE +:1047E00000898025ACF0FFD8934309378F4F0948E3 +:1047F0008F580940306200FF004AC821033F7021F2 +:1048000001F86023000E6F0001A650253185FFFCE2 +:10481000001F58800145482501683821AD09002056 +:104820000E00006024F00028240400040E00006242 +:10483000A364003F020010218FBF00148FB000104E +:1048400003E0000827BD00180A0006352406001200 +:1048500027BDFFD024090010AFB60028AFB5002453 +:10486000AFB40020AFB10014AFB000103C0108009D +:10487000A0293D90AFBF002CAFB3001CAFB2001811 +:1048800097480908309400FF3C02000E3107FFFFF3 +:10489000000731C0AF46002C974409089344010B30 +:1048A00030B500FF03428021308300300000B0218A +:1048B0001060012500008821240C00043C01080040 +:1048C000A02C3D90934B093E000B5600000A2E038E +:1048D00004A0016000000000AF400048934F010BAE +:1048E00031EE002011C00006000000009358093E80 +:1048F00000189E0000139603064001890000000086 +:104900009344010B30830040106000038F930050EC +:104910008F8200502453FFFF9347093E30E6000882 +:1049200014C0000224120003000090219619002CEC +:1049300093580934934F0937A7990058330C00FF57 +:1049400031EE00FF024E6821000D5880016C5021AD +:10495000015140213C010800A4283D869205001821 +:1049600030A900FF010918213C010800A4233D885B +:104970009211001816200002000000000000000D37 +:104980003C010800A4233D8A3C010800A4203D808E +:104990003C010800A4203D7C935F010B3063FFFFC6 +:1049A00033F00040120000022464000A2464000B6B +:1049B0003091FFFF0E00009E022020219358010B32 +:1049C0003C08080095083D8A0040202100185982C3 +:1049D000316700010E00049A01072821934C010B56 +:1049E0008F4B002C974E09083C0F000E034F4021BF +:1049F00031CDFFFF000D51C0AF4A002C974309088D +:104A00009505001A004038212404000130A9FFFF59 +:104A1000AC4900008D06001C00404821318A00404E +:104A2000AC4600048D020020ACE20008910300199E +:104A300030630003106400EC28790002172001188D +:104A4000241000021070010C241F0003107F011EAF +:104A500000000000114000DE000000003C090800DA +:104A600095293D8625220001935F0934934E092143 +:104A70009504002A33F900FF0019C08231CF00FFEE +:104A8000978E005800184600000F6C00010D80251D +:104A90003045FFFF02051025008E50213C034000E9 +:104AA00000433025000A6400ACEC0004ACE60000D2 +:104AB000935F09203C19000624EC0014001FC60077 +:104AC00003197825ACEF00088F48092C25CD00018B +:104AD00031A57FFFACE8000C8F500930A785005846 +:104AE00024E80028ACF000108F4409380100802130 +:104AF000ACE40014AD9300048F530940AD9300085B +:104B0000934A09373C19080093393D908F4309486F +:104B10008F460940314200FF0052F82100667023A1 +:104B2000001F7F000019C40001F8282531CDFFFCCB +:104B300000AD2025AD84000CAD800010AF4B002CE3 +:104B4000934B093E317300081260000D3C060101D1 +:104B500034CC080AACEC00288F530074AD13000469 +:104B60003C0B0800916B3D903167001050E0000352 +:104B7000AD0000088F6A0060AD0A00082510000C27 +:104B800012C0003D000000009343093F24160006B8 +:104B900024060004306200FF105600C924070002FA +:104BA0009758093C3C0F0204330DFFFF01AF40252D +:104BB000AE0800009345093E30A400201080000894 +:104BC00000000000935309363C0B0103357F0300BE +:104BD000327900FF033F7025AE0E00042406000862 +:104BE000934F093493480921312AFFFF31ED00FF2B +:104BF000000D1082310300FF0002B60000032C00FC +:104C000002C56025018A9825001220803C094000D9 +:104C10000204502302695825AD4BFFD8935F093732 +:104C20008F4F09488F58094033F900FF0332702134 +:104C30000006B08201D668210007440001F828234D +:104C4000000D1F000068302530A2FFFC2547FFD86B +:104C500000C260250016808002074821ACEC0020CD +:104C6000253000280E00006024120004A372003FCB +:104C70000E000062000000009347010B30F200407C +:104C8000124000053C1900FF8E180000372EFFFF70 +:104C9000030E3024AE0600000E0000C702202021C3 +:104CA0003C10080092103D90321100031220000FBA +:104CB00002A028218F89005025330001AF930050B6 +:104CC000AF7300508F6B00540173F8231BE0000298 +:104CD000026020218F640054AF6400548F4C007434 +:104CE000258401F4AF64000C02A028210280202159 +:104CF000A76000680E0005BB3C1410008F850050B3 +:104D000034550006AF45014C8F8A00488FBF002CF8 +:104D10008FB3001C25560001AF9600488FB20018D3 +:104D2000A34A01528FB60028AF5501548FB1001429 +:104D3000AF5401788FB500248FB400208FB00010DD +:104D400003E0000827BD00309358093E00189E007C +:104D500000139603064200362411000293440923EF +:104D6000308300021060FEDD8F8600608F8200506D +:104D700014C2FEDA000000000E0000600000000017 +:104D80009369003F24070016312800FF1107000C2B +:104D9000240500083C0C0800918C3D90358B0001E7 +:104DA0003C010800A02B3D90936A003F314300FF77 +:104DB00010650065240D000A106D005E2402000CD1 +:104DC0000E000062000000000A00069000000000D3 +:104DD0003C09080095293D863C0A0800954A3D801B +:104DE0000A0006F3012A10213C09080095293D8A92 +:104DF0003C04080094843D803C06080094C63D7C39 +:104E000095030024012410210046F8230003CC0060 +:104E100027F0FFF20330C025240F0800ACF8000C87 +:104E2000ACEF0014ACE000100A0006EE24E7001816 +:104E30003C010800A0313D90935F093E241600011B +:104E400033F900201720FEA5241100080A0006905F +:104E5000241100048F6E00848F4D094011A0FE9E26 +:104E6000AF8E0050240F00143C010800A02F3D908D +:104E70000A00068F00000000950E0024950D002802 +:104E8000000E6400000D2C003589810034A6080056 +:104E9000ACE9000CACE600100A0006EE24E70014B2 +:104EA0001460FEEC000000009502002400021C00CB +:104EB00034640800ACE4000C0A0006EE24E700109D +:104EC0000A000741240700123C02080094423D8A70 +:104ED0003C06080094C63D803C03080094633D7C7A +:104EE00095100024951900280046F82103E3C023FB +:104EF00000106C0000197400270FFFEE01CF282569 +:104F000035AC8100ACEC000CACE5001024070800C7 +:104F1000AD2700182527001C0A0006EEAD2000145E +:104F20008F7F004CAF7F00548F7900540A000699A0 +:104F3000AF790050A362003F0E0000620000000045 +:104F40000A00069000000000240200140A0008274E +:104F5000A362003F27BDFFE8308400FFAFBF001011 +:104F60000E0005BB30A500FF9378007E9379007F8B +:104F7000936E00809368007A332F00FF001866005C +:104F8000000F6C0031CB00FF018D4825000B520053 +:104F90008FBF0010012A3825310600FF344470000D +:104FA00000E628252402FF813C03100027BD0018DD +:104FB000AF45014CAF440154A342015203E0000845 +:104FC000AF43017827BDFFD8AFB20018AFB10014CE +:104FD000AFB00010AFBF0020AFB3001C9342010977 +:104FE000308600FF30B000FF000618C23204000215 +:104FF0003071000114800005305200FF93670005F6 +:1050000030E5000810A0000D30C80010024020213B +:105010000E0005A702202821240400018FBF0020D4 +:105020008FB3001C8FB200188FB100148FB0001026 +:105030000080102103E0000827BD00281500003281 +:105040000000000093430109000028213062007F26 +:10505000000220C00002F94003E49821267900886C +:10506000033B98218E7800248E6F0008130F0046B2 +:10507000000000008F640084241800020004FD82F8 +:1050800033F900031338007C0000000093660083AE +:10509000934A0109514600043205007C10A00060CB +:1050A000000000003205007C14A0005302402021C3 +:1050B00016200006320400018E7F00248F5901045F +:1050C00017F9FFD600002021320400011080000AE9 +:1050D000024020218F4209408F9300641053000644 +:1050E000000000000E00066D022028218F430940B9 +:1050F000AF630044024020210E0006020220282156 +:105100000A000860240400013C0908008D2900649D +:10511000252600013C010800AC26006416000012A0 +:10512000000000008F6D00843C0E00C001AE6024C2 +:1051300015800005024020210E00082E02202821A3 +:105140000A00086024040001240500040E00057014 +:1051500024060001024020210E00082E02202821F2 +:105160000A000860240400010E000041240400012C +:10517000936B007D020B50250E000062A36A007D38 +:105180000A0008A38F6D00848F6600748F480104A5 +:105190008E67002400064E021507FFB63126007FF9 +:1051A000936B008326440001308A007F1146004340 +:1051B000316300FF5464FFB08F6400842645000112 +:1051C00030B1007F30A200FF122600042405000148 +:1051D000004090210A00087624110001240FFF806E +:1051E000024F702401CF9026324200FF00409021F0 +:1051F0000A000876241100010E00066D0220282105 +:10520000321800301300FFAA321000820240202121 +:105210000E0005A7022028210A00086024040001CE +:105220008F6E00743C0F80002405000301CF902591 +:10523000AF72007493710083240600010E000570A4 +:10524000322400FF0E00004124040001936D007D14 +:10525000020D60250E000062A36C007D3C0B08006F +:105260008D6B0054257000013C010800AC300054E7 +:105270000A000860240400018F6800743C09800063 +:105280002405000401093825AF6700749363008387 +:10529000240600010E000570306400FF0E0000417E +:1052A000240400019362007D020298250E00006232 +:1052B000A373007D0A00086024040001324D0080C1 +:1052C00039AC0080546CFF6C8F6400840A0008C9FC +:1052D0002645000127BDFFC83C0A0008AFBF0030CB +:1052E000AFB5002CAFB40028AFB30024AFB200209C +:1052F000AFB1001CAFB00018034AD8212409004008 +:10530000AF490814AF4008108F4209448F43095039 +:105310008F4609548F47095C8F48094C9344010814 +:105320009345010BAF820064308400FF30A500FF7D +:10533000AF830050AF86004CAF87005C0E00084A78 +:10534000AF8800601440017D8FBF0030A760006807 +:10535000934D0900240B00503C15080026B53D482C +:1053600031AC00FF3C12080026523D58118B00035F +:10537000000000000000A8210000902193510109C5 +:105380008F9F005024040010322E007F000E68C052 +:10539000000E6140018D282124B40088AF54081804 +:1053A0008F4901048F4A09A43C0B000E034BC02116 +:1053B000012A10233C010800AC223D6C8F430958A0 +:1053C0003C010800A0243D9097470908007F302346 +:1053D0003C010800AC263D7030E8FFFF0008C9C062 +:1053E0003C010800AC3F3D94AF59002C974209089E +:1053F0009710002C8EB10000930F001803749821B1 +:10540000A7900058AF9300440220F80931F000FF44 +:10541000304E000215C001B2304F000111E0014FC3 +:10542000000000009343093E3066000814C00002EB +:10543000241400030000A0218F5809A424130001A4 +:105440003C010800AC383D98934F0934935109371B +:1054500031EC00FF322E00FF028E6821000D288003 +:1054600000AC5021015058213C010800A42B3D887C +:105470003C010800A42A3D8693490934312200FFEB +:1054800002022021249000103C010800A4303D8439 +:10549000240700068F9F00503C010800AC273D8C7C +:1054A0008F88005C8F59095800008021011F282334 +:1054B00004A00149033F20230480014700A4302BAE +:1054C00010C00149000000003C010800AC253D70FF +:1054D0008E4200000040F809000000003043000246 +:1054E000146000F80040882130440001548000100E +:1054F0008E4200043C0908008D293D743C0AC0001E +:10550000012A8025AF500E008F45000030AB000807 +:105510001160FFFD00000000974D0E0824100001EF +:10552000A78D003C8F4C0E04AF8C00348E420004DB +:105530000040F8090000000002228825322E0002F7 +:1055400015C00180000000003C09080095293D7C41 +:105550003C06080094C63D883C0A0800954A3D7EFA +:105560003C1908008F393D74012660213C18080061 +:105570008F183D983C03080094633D92018A2021D6 +:105580008F4E09400329F821248F000203E32821CC +:10559000031968213C010800A42C3D8AAF8E0064E9 +:1055A0003C010800AC2D3D983C010800A4253D803D +:1055B0000E00009E31E4FFFF8F870048004020214D +:1055C0003C010800A0273D918E42000824E800011C +:1055D000AF8800480040F809000000009344010B28 +:1055E0008F4C002C974A09083C0B000E034B4021BE +:1055F0003149FFFF000919C08F8B0050AF43002CC9 +:10560000974309089506001A00403821308A004067 +:1056100030DFFFFFAC5F00008D19001C0040482107 +:10562000AC5900048D180020AC580008910F0019E7 +:1056300031E30003107300F0000000002862000254 +:105640001440010924050002106500FD240D00032B +:10565000106D010D00000000114000D90000000095 +:105660003C0A0800954A3D8625420001934D0934C5 +:1056700093580921950E002A31A300FF00032082D0 +:10568000331F00FF9798005800047E00001FCC00D5 +:1056900001F940253049FFFF0109102501D83021CB +:1056A0003C0540000045502500066C00ACED0004B0 +:1056B000ACEA0000934309203C04000624ED0014EA +:1056C0000003FE0003E4C825ACF900088F49092C4B +:1056D000270F000131EE7FFFACE9000C8F48093045 +:1056E000A78E005824E90028ACE800108F4509383F +:1056F00001204021ACE50014ADAB00048F4209400D +:10570000ADA20008934B09373C1F080093FF3D9062 +:105710008F4309488F4A0940316600FF00D4202199 +:10572000006A78230004C700001FCC000319282555 +:1057300031EEFFFC00AE1025ADA2000CADA00010B4 +:10574000AF4C002C934C093E318B00085160000F88 +:105750008E58000C3C06010134CA080AACEA002845 +:105760008F4B0074AD2B00043C0C0800918C3D90D5 +:105770003187001050E00003AD2000088F62006008 +:10578000AD2200082528000C8E58000C0300F809F3 +:10579000010020213C19080097393D8A3C1F080070 +:1057A00097FF3D7E033F782125E900020E0000C7E8 +:1057B0003124FFFF3C0E08008DCE3D6C3C080800F4 +:1057C0008D083D7401C828233C010800AC253D6CC0 +:1057D00014A00006000000003C0308008C633D8C10 +:1057E000346400403C010800AC243D8C1200007081 +:1057F0008F8C00448F470E108F900044AE0700201E +:105800008F4D0E18AE0D00243C10080096103D8000 +:105810000E0000600000000024020040AF420814A7 +:105820008F8600508F8A004C00D01821006A5823C0 +:1058300019600004AF830050AF6300548F650054BB +:10584000AF85004C1200000C000000008F44007473 +:10585000936800813409FA002D0E000711C000057D +:1058600000891821937F0081241901F403F9780439 +:1058700001E41821AF63000C8F44095C8F83005C46 +:105880000083C0231B000003000000008F50095C50 +:10589000AF90005C0E000062000000008F8C005092 +:1058A0008E4700103C010800AC2C3D9400E0F80944 +:1058B000000000003C0D08008DAD3D6C55A0FEF5CC +:1058C000240700068F450024975909088F8B006430 +:1058D0008F9400503C0F001F978200588F86005411 +:1058E0008F93004C3328FFFF35E9FF8000A9502437 +:1058F000000871C032320100AF4E0024A4C2002C57 +:10590000AF4A0024AF6B0044AF740050AF73005433 +:105910001640008032380010570000868EA4000424 +:10592000322300405460001B8EB100088EB0000C82 +:105930000200F809000000008FBF00308FB5002C76 +:105940008FB400288FB300248FB200208FB1001CC9 +:105950008FB0001803E0000827BD00389347010905 +:105960008F8800380007FE0003E8C825AF59008083 +:105970008F5809A08F5309A4AFB80010AF580E1468 +:105980008FB40010AF540E10AF530E1C0A00096202 +:10599000AF530E180220F809000000008EB0000C72 +:1059A0000200F809000000000A000AA88FBF0030BA +:1059B000A5800020A59300220A000A5BAD93002475 +:1059C0003C09080095293D863C06080094C63D80A8 +:1059D0000A0009F4012610213C010800AC203D70AA +:1059E0000A00098E8E4200003C010800AC243D7084 +:1059F0000A00098E8E4200003C03080094633D8A31 +:105A00003C04080094843D803C1F080097FF3D7CC7 +:105A1000951800240064C821033F782300186C0007 +:105A200025EEFFF201AE2825AC45000C240208004B +:105A3000ACE20014ACE000100A0009EF24E7001803 +:105A400095060024950900280006240000091C0082 +:105A5000349F810034790800ACFF000CACF90010D1 +:105A60000A0009EF24E700141460FEFB00000000A8 +:105A70009518002400187C0035EE0800ACEE000CF0 +:105A80000A0009EF24E700103C07080094E73D8076 +:105A90003C04080094843D8A3C03080094633D7CE8 +:105AA00095190024951800280087F82103E378232E +:105AB0002407080000192C0000186C0025EEFFEEEA +:105AC00001AE302534A28100AD2700182527001C27 +:105AD000AD22000CAD2600100A0009EFAD20001425 +:105AE00093520109000028210E000602324400FFF3 +:105AF0008FBF00308FB5002C8FB400288FB30024E7 +:105B00008FB200208FB1001C8FB0001803E0000896 +:105B100027BD0038935F010933E400FF0E00066DD6 +:105B200000002821323800105300FF7E322300404D +:105B30008EA400040080F809000000000A000AA2F8 +:105B4000322300401200FF5F000000008F540E144B +:105B50008F920044AE5400208F530E1C0A000A8A14 +:105B6000AE5300248F82001C008040213C040100C1 +:105B70009047008530E3002010600009000000001D +:105B80003C0708008CE73D948F83001800E3202336 +:105B9000048000089389000414E30003010020211D +:105BA00003E00008008010213C04010003E000082D +:105BB000008010211120000B006738238F8C0020FB +:105BC00024090034918B00BC316A0002514000016D +:105BD0002409003000E9682B15A0FFF10100202105 +:105BE00000E938232419FFFC00B9C02400F9782407 +:105BF00000F8702B15C0FFEA01E8202130C2000335 +:105C00000002182314C00012306900030000302184 +:105C100000A9702101C6682100ED602B1180FFE012 +:105C20003C0401002D2F00010006482B01053821FE +:105C300001E9302414C0FFDA24E4FFFC2419FFFC3E +:105C400000B9C0240308202103E0000800801021CF +:105C50008F8B002024060004916A00BC31440004AC +:105C60001480FFEC00A970210A000B5E00003021B7 +:105C700027BDFFE8AFBF00108F460100934A01091E +:105C80003C1F08008FFF00902407FF80314F00FF6A +:105C900031E8007F0008614003E6C821032CC021E1 +:105CA00027090120012770243C010800A02F3DD0C6 +:105CB000AF4E080C3C0D08008DAD00903C040080F8 +:105CC0003482000301A65821016C182124650120AB +:105CD00030AA007801424025AF48081C3C1F08004C +:105CE0008FFF00908F88004003E6C0213319000722 +:105CF00003074824033A7821AF49002825E909C061 +:105D0000952E00023C0D08008DAD008C3C0A080069 +:105D10008D4A009031CC3FFF01A61821000C59801C +:105D2000006B282100A72024AF44002C95220002FC +:105D30003C1F08008FFF008C9107008530593FFF02 +:105D400003E678210019C1800146702101F868211D +:105D500031CC007F31AB007F019A2821017A50219C +:105D60003C03000C3C04000E00A328210144102138 +:105D700030E6002027470980AF82002CAF88001C46 +:105D8000AF890024AF85002010C00006AF8700282F +:105D90008D0200508CA4010C0044302318C0007701 +:105DA00000000000910C0085240DFFDF018D3824D8 +:105DB000A10700858F8B001C8F8900248F87002806 +:105DC0008D65004CAF850018912F000D31EE00203D +:105DD00011C000170000000024090001A38900047D +:105DE000AF80000C8CE400248F85000C240A00088E +:105DF000AF800008AF8000103C010800A42A3D7E5F +:105E00003C010800A4203D920E000B32000030211E +:105E10008F8500248FBF0010AF82001490A8000D62 +:105E200027BD00180008394203E0000830E20001F5 +:105E3000913F00022418000133F900FF001921826C +:105E400010980039240800021088005B8F86002C0F +:105E50008CE5002414A0001B8F9F002091220000DD +:105E6000240A00053046003F10CA00472404000100 +:105E70008F860008A3840004AF860010AF86000C54 +:105E80008CE400248F85000C240A00083C010800E3 +:105E9000A42A3D7E3C010800A4203D920E000B3256 +:105EA000000000008F8500248FBF0010AF82001417 +:105EB00090A8000D27BD00180008394203E0000833 +:105EC00030E200018CF800088CF900248FEE00C449 +:105ED000A38000048CE40024AF8E000C8F85000C9E +:105EE0008F86000803197823240A0008AF8F00105A +:105EF0003C010800A42A3D7E3C010800A4203D92FC +:105F00000E000B32000000008F8500248FBF0010B0 +:105F1000AF82001490A8000D27BD00180008394278 +:105F200003E0000830E20001912300003062003FEE +:105F3000104400278F8500208CE400241480002169 +:105F4000000000008D2E00183C187FFF8F85002078 +:105F5000370FFFFF01CF1824AF8300088F9F000881 +:105F60008CA8008403E8C82B1720000203E020213E +:105F70008CA400840A000BEDAF8400088CA3010CF4 +:105F80000A000BCBAF8300188D2C00188F860008F9 +:105F90003C0D7FFF8F89002035A3FFFF018358242C +:105FA00024040001AF8B0010AD2000CCA3840004BA +:105FB0000A000BF9AF86000C8CCA00140A000BED26 +:105FC000AF8A00088CA300C80A000C30AF83000819 +:105FD0008F84002C8CAC00648C8D0014018D582BA8 +:105FE00011600004000000008CA200640A000C3064 +:105FF000AF8200088C8200140A000C30AF820008C7 +:106000008F85000C27BDFFE0AFBF0018AFB10014B3 +:1060100014A00007AFB000108F86002424020005F2 +:1060200090C400003083003F106200B68F840020CF +:106030008F91000800A080218F8C00283C0508006B +:106040008CA53D708D8B000431663FFF00C5502B41 +:106050005540000100C02821938D000411A0007359 +:1060600000B0F82B8F98002024040034930F00BC5C +:1060700031EE000251C000012404003000A4C82BFE +:10608000172000D10000000000A4282300B0F82B46 +:106090003C010800A4243D7C17E000680200202198 +:1060A0003C0308008C633D6C0083102B54400001BE +:1060B000008018218F8800243C010800AC233D7427 +:1060C000000048219104000D308300205060000141 +:1060D0008F490E188F8300140123382B10E00059CC +:1060E000000000003C0408008C843D7400895821A5 +:1060F000006B502B114000560090602B006930233C +:1061000000C020213C010800AC263D7412000003B1 +:10611000241FFFFC1090008A32270003009FC82430 +:106120003C010800AC393D743C010800A4203D92BC +:106130008F84000C120400078F830020AF910008A9 +:10614000020020218C7100CCAF90000C26300001A1 +:10615000AC7000CC3C0208008C423D748F8A001069 +:10616000240700180082202301422823AF84000C5A +:1061700010800002AF850010240700108F86001CDD +:106180003C010800A0273D902407004090CC0085EA +:10619000318B00C0116700408F8D001414A00015D2 +:1061A00000002021934A01098F420974314500FF04 +:1061B0000002260224A300013090007F3071007F8E +:1061C0001230007A2407FF80A0C300833C09080036 +:1061D0008D293D8C8F880024240D0002352C000869 +:1061E0003C010800A02D3DD13C010800AC2C3D8CA9 +:1061F00024040010910E000D31C6002010C00005CF +:1062000000801821240800013C010800AC283D74DE +:10621000348300018FBF00188FB100148FB00010BD +:106220000060102103E0000827BD00203C010800A9 +:10623000A4203D7C13E0FF9A020020210A000C817B +:1062400000A020213C0408008C843D740090602B49 +:106250001180FFAE000000003C0F080095EF3D7C70 +:1062600001E4702101C6682B11A000072C820004F4 +:106270003C1F60008FF954043338003F1700FFE5DE +:10628000240300422C8200041040FFA0240300429B +:106290000A000CDF8FBF0018152DFFC000000000A2 +:1062A0008CDF00743C0380002405FF8003E3C825D5 +:1062B000ACD9007490D80085240E0004240400108A +:1062C000330F003F01E54025A0C800858F880024DA +:1062D0003C010800A02E3DD1240300019106000DD1 +:1062E00030C9002015200003000000003C03080016 +:1062F0008C633D743C010800AC233D6C0A000CD655 +:10630000000000008F8700108C88008400E8282B94 +:1063100014A0000200E088218C910084240900016F +:10632000A38900048F440E18022028210E000B328E +:1063300002203021022080210A000C67AF82001465 +:1063400000071823306600033C010800A4263D9294 +:10635000122000058F8C0020918B00BC316A000454 +:106360001540001524CD00043C0F080095EF3D9228 +:1063700001E4702100AE302B50C0FF6E8F84000C02 +:106380002C85000514A0FFA32403004230980003CD +:1063900017000002009818232483FFFC3C0108002A +:1063A000AC233D740A000CA30000000000A7582491 +:1063B0000A000CCB016718263C010800A42D3D9271 +:1063C0000A000D33000000003C010800AC203D74C1 +:1063D0000A000CDE240300428F83001014600007C3 +:1063E000000010218F88002424050005910600007C +:1063F00030C400FF108500030000000003E0000827 +:1064000000000000910A0018314900FF000939C25C +:1064100014E0FFFA8F85001C3C04080094843D7C46 +:106420003C0308008C633D943C1908008F393D748F +:106430003C0F080095EF3D920064C0218CAD0054E4 +:106440000319702101CF6021018D58231960001DAF +:1064500000000000910E001C8F8C002C974B0E103A +:1064600031CD00FF8D850004016D30238D88000043 +:1064700030CEFFFF000E510000AAC82100003821D5 +:1064800001072021032A182B0083C021AD990004A5 +:10649000AD980000918F000A01CF6821A18D000AFC +:1064A0008F88002C974B0E12A50B0008950A003818 +:1064B00025490001A50900389107000D34E60008C0 +:1064C000A106000D03E000080000000027BDFFE06A +:1064D000938700048F8F00248FAD00143C0E7FFF44 +:1064E0008F89000C35C8FFFFAFBF001CAFB000188C +:1064F00001A8182491EA000D000717C03C1FBFFF38 +:10650000006258252D2E00018F90001837F9FFFFEB +:106510003C1808008F183D943C0F080095EF3D8A09 +:1065200001796824000E47803C07EFFF3C05F0FF2F +:1065300001A818253149002034E2FFFF34ACFFFFE9 +:106540000310582327A500102406000225EA0002A4 +:1065500000621824008080211520000200004021E4 +:106560008F480E1CA7AA0012056000372407000000 +:1065700030FF00FF001FCF008F8B001C00793825F3 +:10658000AFA70014916F00853C08080091083D9169 +:106590003C18DFFF31EE00C0370AFFFF000E182B5A +:1065A0003C1F080097FF3D8400EA6824A3A800115F +:1065B0000003174001A248258FB90010AFA90014AD +:1065C0003C0A0800914A3D93A7BF00168FA800140B +:1065D000032CC0243C0B01003C0F0FFF030B1825BC +:1065E0003147000335EEFFFF010C68240007160059 +:1065F000006EF8243C09700001A2C82503E9582563 +:10660000AFB90014AFAB00100E000076A3A00015C8 +:106610008F8C0024260200089186000D30C40020D3 +:10662000108000068FBF001C3C05080094A53D802B +:1066300024B0FFFF3C010800A4303D808FB000185B +:1066400003E0000827BD00208F9800140118502B8C +:106650005540FFC7240700010A000DB630FF00FFB8 +:106660009382000427BDFFE0AFBF00181040000F69 +:10667000008050218F880024240B00058F8900089A +:10668000910700008F8400200100282130E3003FA3 +:106690008F86002C106B000800003821AFA9001075 +:1066A0000E00040EAFAA0014A38000048FBF0018D0 +:1066B00003E0000827BD00208D1900183C0F0800DA +:1066C0008DEF3D748F9800103C027FFF8D08001401 +:1066D000345FFFFF033F682401F8702101AE60239F +:1066E00001883821AFA900100E00040EAFAA0014D3 +:1066F0000A000E04A38000048F8700243C050800D4 +:1067000094A53D923C0208008C423D8C90E6000D21 +:106710000005240030C300201060002C00444025F8 +:106720008F85001C00006021240B000190A30085D0 +:1067300000004821240A00013C0F800035EE007063 +:106740008DC70000AF8700308F5801780700FFFE2B +:106750003C038000347900708F3800003C0508004D +:106760008CA500743C0D08008DAD007003077823E4 +:1067700000AF38210000102100EF302B01A22021B2 +:10678000008618213C010800AC2700743C01080079 +:10679000AC230070AF4B01483C1908008F393D9481 +:1067A000A7490144A74A0146AF59014C3C0B0800D8 +:1067B000916B3D91A34B0152AF4801543C0810002E +:1067C000A74C015803E00008AF4801788F4B0E1C1E +:1067D0003C0A08008D4A3D7497490E16974D0E14D9 +:1067E00001456021312AFFFF0A000E2731A9FFFF72 +:1067F0008F8300249064000D308200201040002917 +:10680000000000000000482100005021000040214D +:106810003C07800034EB00708D670000AF870030CC +:106820008F4C01780580FFFE3C0D800035AC007078 +:106830008D8B00003C0508008CA500743C0408000A +:106840008C8400700167302300A67821000010219D +:1068500001E6C82B0082C021031970213C01080009 +:10686000AC2F00743C010800AC2E0070AF49014809 +:106870003C0D08008DAD3D94A7480144240900401B +:10688000A74A01463C081000240AFF91AF4D014C75 +:10689000A34A0152AF490154A740015803E0000840 +:1068A000AF4801788F490E1897460E1297450E1083 +:1068B00030CAFFFF0A000E5D30A8FFFF8F8300245F +:1068C00027BDFFF89064000D308200201040003A90 +:1068D00000000000240B000100004821240A0001F0 +:1068E0003C088000350700708CE30000AF83003067 +:1068F0008F4C01780580FFFE3C0E80003C040800B0 +:1069000090843DD035C700708CEC00003C05080039 +:106910008CA50074A3A400033C1908008F390070F3 +:106920008FAD00000183302300A638210000102124 +:106930000322782100E6C02B01F8602101AE40253A +:10694000AFA800003C010800AC2700743C0108001F +:10695000AC2C00709346010A3C04080090843DD1A1 +:10696000A3A00002A3A600018FA300003C0580FFA6 +:106970003099007F34A2FFFF006278240019C6001E +:1069800001F87025240D3000AF4E014C27BD0008E2 +:10699000AF4D0154A7400158AF4B0148A7490144EE +:1069A000A74A01463C091000240AFF80A34A01526D +:1069B00003E00008AF4901788F4B0E1897460E127E +:1069C00097450E1030CAFFFF0A000E9130A9FFFF55 +:1069D0008F85001C2402008090A40085308300C0B5 +:1069E000106200058F8600208F8800088F87000CBA +:1069F000ACC800C8ACC700C403E000080000000039 +:106A00003C0A0800254A39543C09080025293A2047 +:106A10003C08080025082DD43C07080024E73B3437 +:106A20003C06080024C637C43C05080024A5353CB4 +:106A30003C040800248431643C0308002463385C6F +:106A40003C020800244236303C010800AC2A3D508C +:106A50003C010800AC293D4C3C010800AC283D48F5 +:106A60003C010800AC273D543C010800AC263D64C5 +:106A70003C010800AC253D5C3C010800AC243D58BD +:106A80003C010800AC233D683C010800AC223D609D +:086A900003E000080000000013 +:00000001FF